summaryrefslogtreecommitdiffstats
path: root/board
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2007-07-05 18:01:12 +0200
committerSascha Hauer <sha@octopus.labnet.pengutronix.de>2007-07-05 18:01:12 +0200
commit13a0908f07be07b58df8f312acf92a58047383a6 (patch)
tree997e533401b021a247880f35505bfc8b633acdc0 /board
parentf4eb54529bb3664c3a562e488b460fe075f79d67 (diff)
downloadbarebox-13a0908f07be07b58df8f312acf92a58047383a6.tar.gz
barebox-13a0908f07be07b58df8f312acf92a58047383a6.tar.xz
svn_rev_002
Consider all boards containing it's own flash.c as unmaintained and remove them.
Diffstat (limited to 'board')
-rw-r--r--board/AtmarkTechno/suzaku/Makefile44
-rw-r--r--board/AtmarkTechno/suzaku/config.mk29
-rw-r--r--board/AtmarkTechno/suzaku/flash.c46
-rw-r--r--board/AtmarkTechno/suzaku/suzaku.c32
-rw-r--r--board/AtmarkTechno/suzaku/u-boot.lds66
-rw-r--r--board/BuS/EB+MCF-EV123/EB+MCF-EV123.c162
-rw-r--r--board/BuS/EB+MCF-EV123/Makefile44
-rw-r--r--board/BuS/EB+MCF-EV123/VCxK.c136
-rw-r--r--board/BuS/EB+MCF-EV123/VCxK.h48
-rw-r--r--board/BuS/EB+MCF-EV123/cfm_flash.c212
-rw-r--r--board/BuS/EB+MCF-EV123/cfm_flash.h40
-rw-r--r--board/BuS/EB+MCF-EV123/config.mk28
-rw-r--r--board/BuS/EB+MCF-EV123/flash.c413
-rw-r--r--board/BuS/EB+MCF-EV123/textbase.mk1
-rw-r--r--board/BuS/EB+MCF-EV123/u-boot.lds141
-rw-r--r--board/LEOX/elpt860/Makefile55
-rw-r--r--board/LEOX/elpt860/README.LEOX424
-rw-r--r--board/LEOX/elpt860/config.mk36
-rw-r--r--board/LEOX/elpt860/elpt860.c348
-rw-r--r--board/LEOX/elpt860/flash.c615
-rw-r--r--board/LEOX/elpt860/u-boot.lds154
-rw-r--r--board/LEOX/elpt860/u-boot.lds.debug141
-rw-r--r--board/MAI/AmigaOneG3SE/AmigaOneG3SE.c113
-rw-r--r--board/MAI/AmigaOneG3SE/Makefile63
-rw-r--r--board/MAI/AmigaOneG3SE/articiaS.c704
-rw-r--r--board/MAI/AmigaOneG3SE/articiaS.h142
-rw-r--r--board/MAI/AmigaOneG3SE/articiaS_pci.c576
-rw-r--r--board/MAI/AmigaOneG3SE/board_asm_init.S156
-rw-r--r--board/MAI/AmigaOneG3SE/cmd_boota.c128
-rw-r--r--board/MAI/AmigaOneG3SE/config.mk32
-rw-r--r--board/MAI/AmigaOneG3SE/enet.c884
-rw-r--r--board/MAI/AmigaOneG3SE/flash.c35
-rw-r--r--board/MAI/AmigaOneG3SE/flash_new.c651
-rw-r--r--board/MAI/AmigaOneG3SE/i8259.c230
-rw-r--r--board/MAI/AmigaOneG3SE/i8259.h56
-rw-r--r--board/MAI/AmigaOneG3SE/interrupts.c266
-rw-r--r--board/MAI/AmigaOneG3SE/macros.h84
-rw-r--r--board/MAI/AmigaOneG3SE/memio.S67
-rw-r--r--board/MAI/AmigaOneG3SE/memio.h113
-rw-r--r--board/MAI/AmigaOneG3SE/memory_dump30
-rw-r--r--board/MAI/AmigaOneG3SE/nvram.c36
-rw-r--r--board/MAI/AmigaOneG3SE/ps2kbd.c690
-rw-r--r--board/MAI/AmigaOneG3SE/ps2kbd.h41
-rw-r--r--board/MAI/AmigaOneG3SE/serial.c245
-rw-r--r--board/MAI/AmigaOneG3SE/short_types.h36
-rw-r--r--board/MAI/AmigaOneG3SE/smbus.c206
-rw-r--r--board/MAI/AmigaOneG3SE/smbus.h22
-rw-r--r--board/MAI/AmigaOneG3SE/start.txt198
-rw-r--r--board/MAI/AmigaOneG3SE/todo.txt3
-rw-r--r--board/MAI/AmigaOneG3SE/u-boot.lds140
-rw-r--r--board/MAI/AmigaOneG3SE/usb_uhci.c1178
-rw-r--r--board/MAI/AmigaOneG3SE/usb_uhci.h192
-rw-r--r--board/MAI/AmigaOneG3SE/via686.c299
-rw-r--r--board/MAI/AmigaOneG3SE/via686.h29
-rw-r--r--board/MAI/AmigaOneG3SE/video.c540
-rw-r--r--board/Marvell/common/bootseq.txt94
-rw-r--r--board/Marvell/common/ecctest.c131
-rw-r--r--board/Marvell/common/flash.c1072
-rw-r--r--board/Marvell/common/i2c.c532
-rw-r--r--board/Marvell/common/i2c.h32
-rw-r--r--board/Marvell/common/intel_flash.c269
-rw-r--r--board/Marvell/common/intel_flash.h186
-rw-r--r--board/Marvell/common/memory.c1390
-rw-r--r--board/Marvell/common/misc.S235
-rw-r--r--board/Marvell/common/ns16550.c66
-rw-r--r--board/Marvell/common/ns16550.h102
-rw-r--r--board/Marvell/common/ppc_error_no.h164
-rw-r--r--board/Marvell/common/serial.c172
-rw-r--r--board/Marvell/common/serial.h89
-rw-r--r--board/RPXClassic/Makefile44
-rw-r--r--board/RPXClassic/RPXClassic.c265
-rw-r--r--board/RPXClassic/config.mk29
-rw-r--r--board/RPXClassic/eccx.c351
-rw-r--r--board/RPXClassic/flash.c447
-rw-r--r--board/RPXClassic/u-boot.lds142
-rw-r--r--board/RPXClassic/u-boot.lds.debug137
-rw-r--r--board/RPXlite/Makefile44
-rw-r--r--board/RPXlite/RPXlite.c165
-rw-r--r--board/RPXlite/config.mk28
-rw-r--r--board/RPXlite/flash.c524
-rw-r--r--board/RPXlite/u-boot.lds142
-rw-r--r--board/RPXlite/u-boot.lds.debug137
-rw-r--r--board/RPXlite_dw/Makefile44
-rw-r--r--board/RPXlite_dw/README161
-rw-r--r--board/RPXlite_dw/RPXlite_dw.c180
-rw-r--r--board/RPXlite_dw/config.mk29
-rw-r--r--board/RPXlite_dw/flash.c490
-rw-r--r--board/RPXlite_dw/u-boot.lds142
-rw-r--r--board/RPXlite_dw/u-boot.lds.debug137
-rw-r--r--board/RRvision/Makefile44
-rw-r--r--board/RRvision/RRvision.c236
-rw-r--r--board/RRvision/config.mk28
-rw-r--r--board/RRvision/flash.c522
-rw-r--r--board/RRvision/u-boot.lds144
-rw-r--r--board/RRvision/video_ad7179.h68
-rw-r--r--board/a3000/Makefile44
-rw-r--r--board/a3000/README17
-rw-r--r--board/a3000/a3000.c111
-rw-r--r--board/a3000/config.mk30
-rw-r--r--board/a3000/flash.c454
-rw-r--r--board/a3000/u-boot.lds135
-rw-r--r--board/alaska/Makefile50
-rw-r--r--board/alaska/alaska.c153
-rw-r--r--board/alaska/config.mk31
-rw-r--r--board/alaska/flash.c936
-rw-r--r--board/alaska/u-boot.lds125
-rw-r--r--board/altera/common/AMDLV065D.c190
-rw-r--r--board/altera/common/epled.c62
-rw-r--r--board/altera/common/flash.c196
-rw-r--r--board/altera/common/sevenseg.c220
-rw-r--r--board/altera/common/sevenseg.h142
-rw-r--r--board/altera/dk1c20/Makefile51
-rw-r--r--board/altera/dk1c20/config.mk29
-rw-r--r--board/altera/dk1c20/dk1c20.c81
-rw-r--r--board/altera/dk1c20/flash.c62
-rw-r--r--board/altera/dk1c20/misc.c33
-rw-r--r--board/altera/dk1c20/u-boot.lds70
-rw-r--r--board/altera/dk1c20/vectors.S123
-rw-r--r--board/altera/dk1s10/Makefile51
-rw-r--r--board/altera/dk1s10/config.mk29
-rw-r--r--board/altera/dk1s10/dk1s10.c60
-rw-r--r--board/altera/dk1s10/flash.c62
-rw-r--r--board/altera/dk1s10/misc.c33
-rw-r--r--board/altera/dk1s10/u-boot.lds70
-rw-r--r--board/altera/dk1s10/vectors.S139
-rw-r--r--board/amcc/bamboo/Makefile51
-rw-r--r--board/amcc/bamboo/bamboo.c2089
-rw-r--r--board/amcc/bamboo/bamboo.h388
-rw-r--r--board/amcc/bamboo/config.mk34
-rw-r--r--board/amcc/bamboo/flash.c171
-rw-r--r--board/amcc/bamboo/init.S113
-rw-r--r--board/amcc/bamboo/u-boot.lds160
-rw-r--r--board/amcc/bubinga/Makefile50
-rw-r--r--board/amcc/bubinga/bubinga.c84
-rw-r--r--board/amcc/bubinga/config.mk24
-rw-r--r--board/amcc/bubinga/flash.c204
-rw-r--r--board/amcc/bubinga/u-boot.lds150
-rw-r--r--board/amcc/common/flash.c947
-rw-r--r--board/amcc/ebony/Makefile51
-rw-r--r--board/amcc/ebony/config.mk44
-rw-r--r--board/amcc/ebony/ebony.c289
-rw-r--r--board/amcc/ebony/flash.c140
-rw-r--r--board/amcc/ebony/init.S96
-rw-r--r--board/amcc/ebony/u-boot.lds157
-rw-r--r--board/amcc/luan/Makefile51
-rw-r--r--board/amcc/luan/config.mk44
-rw-r--r--board/amcc/luan/epld.h85
-rw-r--r--board/amcc/luan/flash.c111
-rw-r--r--board/amcc/luan/init.S132
-rw-r--r--board/amcc/luan/luan.c457
-rw-r--r--board/amcc/luan/u-boot.lds157
-rw-r--r--board/amcc/ocotea/Makefile51
-rw-r--r--board/amcc/ocotea/config.mk44
-rw-r--r--board/amcc/ocotea/flash.c150
-rw-r--r--board/amcc/ocotea/init.S101
-rw-r--r--board/amcc/ocotea/ocotea.c528
-rw-r--r--board/amcc/ocotea/ocotea.h141
-rw-r--r--board/amcc/ocotea/u-boot.lds157
-rw-r--r--board/amcc/walnut/Makefile50
-rw-r--r--board/amcc/walnut/config.mk24
-rw-r--r--board/amcc/walnut/flash.c199
-rw-r--r--board/amcc/walnut/u-boot.lds151
-rw-r--r--board/amcc/walnut/walnut.c111
-rw-r--r--board/amcc/yucca/Makefile51
-rw-r--r--board/amcc/yucca/cmd_yucca.c288
-rw-r--r--board/amcc/yucca/config.mk42
-rw-r--r--board/amcc/yucca/flash.c1054
-rw-r--r--board/amcc/yucca/init.S152
-rw-r--r--board/amcc/yucca/u-boot.lds157
-rw-r--r--board/amcc/yucca/u-boot.lds.debug146
-rw-r--r--board/amcc/yucca/yucca.c1308
-rw-r--r--board/amcc/yucca/yucca.h366
-rw-r--r--board/amirix/ap1000/Makefile51
-rw-r--r--board/amirix/ap1000/ap1000.c699
-rw-r--r--board/amirix/ap1000/ap1000.h173
-rw-r--r--board/amirix/ap1000/config.mk27
-rw-r--r--board/amirix/ap1000/flash.c903
-rw-r--r--board/amirix/ap1000/init.S34
-rw-r--r--board/amirix/ap1000/pci.c318
-rw-r--r--board/amirix/ap1000/powerspan.c750
-rw-r--r--board/amirix/ap1000/powerspan.h170
-rw-r--r--board/amirix/ap1000/serial.c111
-rw-r--r--board/amirix/ap1000/u-boot.lds145
-rw-r--r--board/armadillo/Makefile55
-rw-r--r--board/armadillo/armadillo.c60
-rw-r--r--board/armadillo/config.mk29
-rw-r--r--board/armadillo/flash.c338
-rw-r--r--board/armadillo/lowlevel_init.S66
-rw-r--r--board/armadillo/u-boot.lds55
-rw-r--r--board/at91rm9200dk/Makefile50
-rw-r--r--board/at91rm9200dk/at45.c621
-rw-r--r--board/at91rm9200dk/at91rm9200dk.c142
-rw-r--r--board/at91rm9200dk/config.mk1
-rw-r--r--board/at91rm9200dk/flash.c502
-rw-r--r--board/at91rm9200dk/u-boot.lds57
-rw-r--r--board/atc/Makefile44
-rw-r--r--board/atc/atc.c399
-rw-r--r--board/atc/config.mk38
-rw-r--r--board/atc/flash.c663
-rw-r--r--board/atc/ti113x.c637
-rw-r--r--board/atc/u-boot.lds125
-rw-r--r--board/atmel/atstk1000/Makefile44
-rw-r--r--board/atmel/atstk1000/atstk1000.c52
-rw-r--r--board/atmel/atstk1000/config.mk4
-rw-r--r--board/atmel/atstk1000/flash.c223
-rw-r--r--board/atmel/atstk1000/u-boot.lds77
-rw-r--r--board/barco/Makefile44
-rw-r--r--board/barco/README11
-rw-r--r--board/barco/barco.c363
-rw-r--r--board/barco/barco_svc.h68
-rw-r--r--board/barco/config.mk30
-rw-r--r--board/barco/early_init.S152
-rw-r--r--board/barco/flash.c611
-rw-r--r--board/barco/speed.h78
-rw-r--r--board/barco/u-boot.lds131
-rw-r--r--board/bmw/Makefile50
-rw-r--r--board/bmw/README331
-rw-r--r--board/bmw/bmw.c158
-rw-r--r--board/bmw/bmw.h86
-rw-r--r--board/bmw/config.mk32
-rw-r--r--board/bmw/early_init.S1170
-rw-r--r--board/bmw/flash.c779
-rw-r--r--board/bmw/m48t59y.c322
-rw-r--r--board/bmw/m48t59y.h57
-rw-r--r--board/bmw/ns16550.c57
-rw-r--r--board/bmw/ns16550.h79
-rw-r--r--board/bmw/serial.c81
-rw-r--r--board/bmw/u-boot.lds136
-rw-r--r--board/c2mon/Makefile44
-rw-r--r--board/c2mon/c2mon.c234
-rw-r--r--board/c2mon/config.mk28
-rw-r--r--board/c2mon/flash.c570
-rw-r--r--board/c2mon/pcmcia.c284
-rw-r--r--board/c2mon/u-boot.lds141
-rw-r--r--board/c2mon/u-boot.lds.debug137
-rw-r--r--board/cerf250/Makefile51
-rw-r--r--board/cerf250/cerf250.c73
-rw-r--r--board/cerf250/config.mk5
-rw-r--r--board/cerf250/flash.c431
-rw-r--r--board/cerf250/lowlevel_init.S411
-rw-r--r--board/cerf250/u-boot.lds56
-rw-r--r--board/cm4008/Makefile50
-rw-r--r--board/cm4008/cm4008.c99
-rw-r--r--board/cm4008/config.mk1
-rw-r--r--board/cm4008/flash.c409
-rw-r--r--board/cm4008/u-boot.lds56
-rw-r--r--board/cm41xx/Makefile50
-rw-r--r--board/cm41xx/cm41xx.c99
-rw-r--r--board/cm41xx/config.mk1
-rw-r--r--board/cm41xx/flash.c409
-rw-r--r--board/cm41xx/u-boot.lds56
-rw-r--r--board/cmc_pu2/Makefile50
-rw-r--r--board/cmc_pu2/at45.c621
-rw-r--r--board/cmc_pu2/cmc_pu2.c179
-rw-r--r--board/cmc_pu2/config.mk3
-rw-r--r--board/cmc_pu2/flash.c468
-rw-r--r--board/cmc_pu2/load_sernum_ethaddr.c122
-rw-r--r--board/cmc_pu2/u-boot.lds57
-rw-r--r--board/cmi/Makefile50
-rw-r--r--board/cmi/cmi.c73
-rw-r--r--board/cmi/config.mk31
-rw-r--r--board/cmi/flash.c517
-rw-r--r--board/cmi/u-boot.lds140
-rw-r--r--board/cobra5272/Makefile44
-rw-r--r--board/cobra5272/bdm/cobra5272_uboot.gdb169
-rw-r--r--board/cobra5272/bdm/gdbinit.reset2
-rw-r--r--board/cobra5272/bdm/load-cobra_uboot2
-rw-r--r--board/cobra5272/bdm/reset2
-rw-r--r--board/cobra5272/cobra5272.c55
-rw-r--r--board/cobra5272/config.mk25
-rw-r--r--board/cobra5272/flash.c378
-rw-r--r--board/cobra5272/u-boot.lds144
-rw-r--r--board/cogent/Makefile50
-rw-r--r--board/cogent/README118
-rw-r--r--board/cogent/README.cma28669
-rw-r--r--board/cogent/config.mk31
-rw-r--r--board/cogent/dipsw.c50
-rw-r--r--board/cogent/dipsw.h3
-rw-r--r--board/cogent/flash.c648
-rw-r--r--board/cogent/flash.h305
-rw-r--r--board/cogent/kbm.c3
-rw-r--r--board/cogent/kbm.h79
-rw-r--r--board/cogent/lcd.c245
-rw-r--r--board/cogent/lcd.h84
-rw-r--r--board/cogent/mb.c296
-rw-r--r--board/cogent/mb.h529
-rw-r--r--board/cogent/par.c3
-rw-r--r--board/cogent/par.h3
-rw-r--r--board/cogent/pci.c3
-rw-r--r--board/cogent/pci.h3
-rw-r--r--board/cogent/rtc.c3
-rw-r--r--board/cogent/rtc.h3
-rw-r--r--board/cogent/serial.c173
-rw-r--r--board/cogent/serial.h15
-rw-r--r--board/cogent/u-boot.lds129
-rw-r--r--board/cogent/u-boot.lds.debug137
-rw-r--r--board/cpc45/Makefile44
-rw-r--r--board/cpc45/config.mk36
-rw-r--r--board/cpc45/cpc45.c275
-rw-r--r--board/cpc45/flash.c522
-rw-r--r--board/cpc45/pd67290.c818
-rw-r--r--board/cpc45/plx9030.c173
-rw-r--r--board/cpc45/u-boot.lds136
-rw-r--r--board/cpu86/Makefile44
-rw-r--r--board/cpu86/config.mk40
-rw-r--r--board/cpu86/cpu86.c321
-rw-r--r--board/cpu86/cpu86.h27
-rw-r--r--board/cpu86/flash.c615
-rw-r--r--board/cpu86/u-boot.lds126
-rw-r--r--board/cpu87/Makefile44
-rw-r--r--board/cpu87/config.mk40
-rw-r--r--board/cpu87/cpu87.c341
-rw-r--r--board/cpu87/cpu87.h27
-rw-r--r--board/cpu87/flash.c624
-rw-r--r--board/cpu87/u-boot.lds126
-rw-r--r--board/cradle/Makefile51
-rw-r--r--board/cradle/config.mk2
-rw-r--r--board/cradle/cradle.c225
-rw-r--r--board/cradle/flash.c359
-rw-r--r--board/cradle/lowlevel_init.S515
-rw-r--r--board/cradle/u-boot.lds56
-rw-r--r--board/cray/L1/L1.c365
-rw-r--r--board/cray/L1/L1.h44
-rw-r--r--board/cray/L1/Makefile63
-rw-r--r--board/cray/L1/bootscript.hush117
-rw-r--r--board/cray/L1/config.mk26
-rw-r--r--board/cray/L1/flash.c470
-rw-r--r--board/cray/L1/init.S147
-rw-r--r--board/cray/L1/patchme30
-rw-r--r--board/cray/L1/u-boot.lds153
-rw-r--r--board/cray/L1/u-boot.lds.debug137
-rw-r--r--board/cray/L1/x2c.awk6
-rw-r--r--board/csb226/Makefile51
-rw-r--r--board/csb226/config.mk15
-rw-r--r--board/csb226/csb226.c153
-rw-r--r--board/csb226/flash.c366
-rw-r--r--board/csb226/lowlevel_init.S437
-rw-r--r--board/csb226/u-boot.lds56
-rw-r--r--board/cu824/Makefile44
-rw-r--r--board/cu824/README453
-rw-r--r--board/cu824/config.mk30
-rw-r--r--board/cu824/cu824.c93
-rw-r--r--board/cu824/flash.c486
-rw-r--r--board/cu824/u-boot.lds136
-rw-r--r--board/dave/B2/B2.c127
-rw-r--r--board/dave/B2/Makefile55
-rw-r--r--board/dave/B2/config.mk30
-rw-r--r--board/dave/B2/flash.c76
-rw-r--r--board/dave/B2/lowlevel_init.S167
-rw-r--r--board/dave/B2/u-boot.lds58
-rw-r--r--board/dave/PPChameleonEVB/Makefile50
-rw-r--r--board/dave/PPChameleonEVB/PPChameleonEVB.c275
-rw-r--r--board/dave/PPChameleonEVB/config.mk28
-rw-r--r--board/dave/PPChameleonEVB/flash.c114
-rw-r--r--board/dave/PPChameleonEVB/fpgadata.c1139
-rw-r--r--board/dave/PPChameleonEVB/nand.c118
-rw-r--r--board/dave/PPChameleonEVB/u-boot.lds156
-rw-r--r--board/dave/common/flash.c706
-rw-r--r--board/dave/common/fpga.c256
-rw-r--r--board/dave/common/pci.c202
-rw-r--r--board/dbau1x00/Makefile45
-rw-r--r--board/dbau1x00/README63
-rw-r--r--board/dbau1x00/config.mk32
-rw-r--r--board/dbau1x00/dbau1x00.c127
-rw-r--r--board/dbau1x00/flash.c43
-rw-r--r--board/dbau1x00/lowlevel_init.S590
-rw-r--r--board/dbau1x00/u-boot.lds69
-rw-r--r--board/dnp1110/Makefile51
-rw-r--r--board/dnp1110/config.mk17
-rw-r--r--board/dnp1110/dnp1110.c55
-rw-r--r--board/dnp1110/flash.c424
-rw-r--r--board/dnp1110/lowlevel_init.S135
-rw-r--r--board/dnp1110/u-boot.lds56
-rw-r--r--board/eltec/bab7xx/Makefile52
-rw-r--r--board/eltec/bab7xx/asm_init.S1476
-rw-r--r--board/eltec/bab7xx/bab7xx.c246
-rw-r--r--board/eltec/bab7xx/config.mk26
-rw-r--r--board/eltec/bab7xx/dc_srom.c291
-rw-r--r--board/eltec/bab7xx/el_srom.c292
-rw-r--r--board/eltec/bab7xx/flash.c512
-rw-r--r--board/eltec/bab7xx/l2cache.c159
-rw-r--r--board/eltec/bab7xx/misc.c547
-rw-r--r--board/eltec/bab7xx/pci.c120
-rw-r--r--board/eltec/bab7xx/srom.h102
-rw-r--r--board/eltec/bab7xx/u-boot.lds138
-rw-r--r--board/eltec/elppc/Makefile52
-rw-r--r--board/eltec/elppc/asm_init.S878
-rw-r--r--board/eltec/elppc/config.mk26
-rw-r--r--board/eltec/elppc/eepro100_srom.c113
-rw-r--r--board/eltec/elppc/elppc.c174
-rw-r--r--board/eltec/elppc/flash.c512
-rw-r--r--board/eltec/elppc/misc.c261
-rw-r--r--board/eltec/elppc/mpc107_i2c.c320
-rw-r--r--board/eltec/elppc/pci.c97
-rw-r--r--board/eltec/elppc/srom.h102
-rw-r--r--board/eltec/elppc/u-boot.lds138
-rw-r--r--board/eltec/mhpc/Makefile44
-rw-r--r--board/eltec/mhpc/config.mk33
-rw-r--r--board/eltec/mhpc/flash.c431
-rw-r--r--board/eltec/mhpc/mhpc.c483
-rw-r--r--board/eltec/mhpc/u-boot.lds131
-rw-r--r--board/eltec/mhpc/u-boot.lds.debug137
-rw-r--r--board/emk/common/am79c874.c29
-rw-r--r--board/emk/common/flash.c591
-rw-r--r--board/emk/common/vpd.c79
-rw-r--r--board/ep7312/Makefile55
-rw-r--r--board/ep7312/config.mk28
-rw-r--r--board/ep7312/ep7312.c54
-rw-r--r--board/ep7312/flash.c341
-rw-r--r--board/ep7312/lowlevel_init.S95
-rw-r--r--board/ep7312/u-boot.lds56
-rw-r--r--board/ep8260/Makefile50
-rw-r--r--board/ep8260/config.mk36
-rw-r--r--board/ep8260/ep8260.c320
-rw-r--r--board/ep8260/ep8260.h24
-rw-r--r--board/ep8260/flash.c411
-rw-r--r--board/ep8260/mii_phy.c107
-rw-r--r--board/ep8260/u-boot.lds127
-rw-r--r--board/eric/Makefile51
-rw-r--r--board/eric/config.mk29
-rw-r--r--board/eric/eric.c195
-rw-r--r--board/eric/eric.h44
-rw-r--r--board/eric/flash.c1128
-rw-r--r--board/eric/init.S355
-rw-r--r--board/eric/u-boot.lds153
-rw-r--r--board/esd/adciop/Makefile54
-rw-r--r--board/esd/adciop/adciop.c97
-rw-r--r--board/esd/adciop/adciop.h44
-rw-r--r--board/esd/adciop/config.mk33
-rw-r--r--board/esd/adciop/flash.c113
-rw-r--r--board/esd/adciop/u-boot.lds139
-rw-r--r--board/esd/apc405/Makefile53
-rw-r--r--board/esd/apc405/apc405.c372
-rw-r--r--board/esd/apc405/config.mk28
-rw-r--r--board/esd/apc405/fpgadata.c2280
-rw-r--r--board/esd/apc405/logo_640_480_24bpp.c235
-rw-r--r--board/esd/apc405/strataflash.c789
-rw-r--r--board/esd/apc405/u-boot.lds150
-rw-r--r--board/esd/ar405/Makefile53
-rw-r--r--board/esd/ar405/ar405.c436
-rw-r--r--board/esd/ar405/ar405.h44
-rw-r--r--board/esd/ar405/config.mk30
-rw-r--r--board/esd/ar405/flash.c101
-rw-r--r--board/esd/ar405/fpgadata.c2750
-rw-r--r--board/esd/ar405/fpgadata_xl30.c2436
-rw-r--r--board/esd/ar405/u-boot.lds164
-rw-r--r--board/esd/ash405/Makefile53
-rw-r--r--board/esd/ash405/ash405.c252
-rw-r--r--board/esd/ash405/config.mk28
-rw-r--r--board/esd/ash405/flash.c101
-rw-r--r--board/esd/ash405/fpgadata.c2492
-rw-r--r--board/esd/ash405/u-boot.lds149
-rw-r--r--board/esd/canbt/Makefile53
-rw-r--r--board/esd/canbt/canbt.c202
-rw-r--r--board/esd/canbt/canbt.h44
-rw-r--r--board/esd/canbt/config.mk29
-rw-r--r--board/esd/canbt/flash.c84
-rw-r--r--board/esd/canbt/fpgadata.c404
-rw-r--r--board/esd/canbt/u-boot.lds162
-rw-r--r--board/esd/cms700/Makefile58
-rw-r--r--board/esd/cms700/cms700.c260
-rw-r--r--board/esd/cms700/config.mk28
-rw-r--r--board/esd/cms700/flash.c101
-rw-r--r--board/esd/cms700/fpgadata.c1812
-rw-r--r--board/esd/cms700/u-boot.lds150
-rw-r--r--board/esd/common/auto_update.c561
-rw-r--r--board/esd/common/auto_update.h51
-rw-r--r--board/esd/common/cmd_loadpci.c122
-rw-r--r--board/esd/common/flash.c672
-rw-r--r--board/esd/common/fpga.c282
-rw-r--r--board/esd/common/lcd.c337
-rw-r--r--board/esd/common/lcd.h70
-rw-r--r--board/esd/common/misc.c40
-rw-r--r--board/esd/common/pci.c202
-rw-r--r--board/esd/common/s1d13704_320_240_4bpp.h53
-rw-r--r--board/esd/common/s1d13705_320_240_8bpp.h53
-rw-r--r--board/esd/common/s1d13806_1024_768_8bpp.h125
-rw-r--r--board/esd/common/s1d13806_320_240_4bpp.h125
-rw-r--r--board/esd/common/s1d13806_640_480_16bpp.h125
-rw-r--r--board/esd/common/s1d13806_640_480_8bpp.h125
-rw-r--r--board/esd/common/xilinx_jtag/lenval.c217
-rw-r--r--board/esd/common/xilinx_jtag/lenval.h79
-rw-r--r--board/esd/common/xilinx_jtag/micro.c1864
-rw-r--r--board/esd/common/xilinx_jtag/micro.h64
-rw-r--r--board/esd/common/xilinx_jtag/ports.c116
-rw-r--r--board/esd/common/xilinx_jtag/ports.h62
-rw-r--r--board/esd/cpci2dp/Makefile53
-rw-r--r--board/esd/cpci2dp/config.mk28
-rw-r--r--board/esd/cpci2dp/cpci2dp.c203
-rw-r--r--board/esd/cpci2dp/flash.c84
-rw-r--r--board/esd/cpci2dp/u-boot.lds150
-rw-r--r--board/esd/cpci405/Makefile53
-rw-r--r--board/esd/cpci405/config.mk40
-rw-r--r--board/esd/cpci405/cpci405.c793
-rw-r--r--board/esd/cpci405/flash.c154
-rw-r--r--board/esd/cpci405/fpgadata_cpci405.c342
-rw-r--r--board/esd/cpci405/fpgadata_cpci4052.c765
-rw-r--r--board/esd/cpci405/fpgadata_cpci405ab.c1285
-rw-r--r--board/esd/cpci405/u-boot.lds150
-rw-r--r--board/esd/cpci440/Makefile54
-rw-r--r--board/esd/cpci440/config.mk45
-rw-r--r--board/esd/cpci440/cpci440.c152
-rw-r--r--board/esd/cpci440/init.S94
-rw-r--r--board/esd/cpci440/strataflash.c755
-rw-r--r--board/esd/cpci440/u-boot.lds159
-rw-r--r--board/esd/cpci5200/Makefile59
-rw-r--r--board/esd/cpci5200/config.mk44
-rw-r--r--board/esd/cpci5200/cpci5200.c292
-rw-r--r--board/esd/cpci5200/mt46v16m16-75.h37
-rw-r--r--board/esd/cpci5200/strataflash.c804
-rw-r--r--board/esd/cpci5200/u-boot.lds125
-rw-r--r--board/esd/cpciiser4/Makefile53
-rw-r--r--board/esd/cpciiser4/config.mk30
-rw-r--r--board/esd/cpciiser4/cpciiser4.c204
-rw-r--r--board/esd/cpciiser4/cpciiser4.h44
-rw-r--r--board/esd/cpciiser4/flash.c84
-rw-r--r--board/esd/cpciiser4/fpgadata.c2068
-rw-r--r--board/esd/cpciiser4/u-boot.lds150
-rw-r--r--board/esd/dasa_sim/Makefile54
-rw-r--r--board/esd/dasa_sim/cmd_dasa_sim.c235
-rw-r--r--board/esd/dasa_sim/config.mk33
-rw-r--r--board/esd/dasa_sim/dasa_sim.c224
-rw-r--r--board/esd/dasa_sim/dasa_sim.h44
-rw-r--r--board/esd/dasa_sim/eeprom.c181
-rw-r--r--board/esd/dasa_sim/flash.c77
-rw-r--r--board/esd/dasa_sim/fpgadata.c1952
-rw-r--r--board/esd/dasa_sim/u-boot.lds165
-rw-r--r--board/esd/dp405/Makefile58
-rw-r--r--board/esd/dp405/config.mk29
-rw-r--r--board/esd/dp405/dp405.c148
-rw-r--r--board/esd/dp405/flash.c101
-rw-r--r--board/esd/dp405/fpgadata.c1812
-rw-r--r--board/esd/dp405/u-boot.lds151
-rw-r--r--board/esd/du405/Makefile53
-rw-r--r--board/esd/du405/config.mk30
-rw-r--r--board/esd/du405/du405.c215
-rw-r--r--board/esd/du405/du405.h44
-rw-r--r--board/esd/du405/flash.c123
-rw-r--r--board/esd/du405/fpgadata.c703
-rw-r--r--board/esd/du405/u-boot.lds150
-rw-r--r--board/esd/hh405/Makefile53
-rw-r--r--board/esd/hh405/config.mk31
-rw-r--r--board/esd/hh405/flash.c101
-rw-r--r--board/esd/hh405/fpgadata.c2517
-rw-r--r--board/esd/hh405/hh405.c916
-rw-r--r--board/esd/hh405/logo_1024_768_8bpp.c2544
-rw-r--r--board/esd/hh405/logo_320_240_4bpp.c227
-rw-r--r--board/esd/hh405/logo_320_240_8bpp.c521
-rw-r--r--board/esd/hh405/logo_640_480_24bpp.c4209
-rw-r--r--board/esd/hh405/u-boot.lds150
-rw-r--r--board/esd/hub405/Makefile53
-rw-r--r--board/esd/hub405/config.mk28
-rw-r--r--board/esd/hub405/flash.c101
-rw-r--r--board/esd/hub405/hub405.c274
-rw-r--r--board/esd/hub405/u-boot.lds150
-rw-r--r--board/esd/ocrtc/Makefile53
-rw-r--r--board/esd/ocrtc/cmd_ocrtc.c84
-rw-r--r--board/esd/ocrtc/config.mk29
-rw-r--r--board/esd/ocrtc/flash.c156
-rw-r--r--board/esd/ocrtc/ocrtc.c126
-rw-r--r--board/esd/ocrtc/ocrtc.h44
-rw-r--r--board/esd/ocrtc/u-boot.lds150
-rw-r--r--board/esd/pci405/Makefile55
-rw-r--r--board/esd/pci405/cmd_pci405.c985
-rw-r--r--board/esd/pci405/config.mk29
-rw-r--r--board/esd/pci405/flash.c101
-rw-r--r--board/esd/pci405/fpgadata.c746
-rw-r--r--board/esd/pci405/pci405.c435
-rw-r--r--board/esd/pci405/pci405.h32
-rw-r--r--board/esd/pci405/u-boot.lds150
-rw-r--r--board/esd/pci405/writeibm.S223
-rw-r--r--board/esd/pf5200/Makefile60
-rw-r--r--board/esd/pf5200/config.mk44
-rw-r--r--board/esd/pf5200/flash.c461
-rw-r--r--board/esd/pf5200/mt46v16m16-75.h37
-rw-r--r--board/esd/pf5200/pf5200.c367
-rw-r--r--board/esd/pf5200/u-boot.lds125
-rw-r--r--board/esd/plu405/Makefile53
-rw-r--r--board/esd/plu405/config.mk29
-rw-r--r--board/esd/plu405/flash.c101
-rw-r--r--board/esd/plu405/fpgadata.c1160
-rw-r--r--board/esd/plu405/plu405.c294
-rw-r--r--board/esd/plu405/u-boot.lds151
-rw-r--r--board/esd/tasreg/Makefile44
-rw-r--r--board/esd/tasreg/config.mk25
-rw-r--r--board/esd/tasreg/flash.c75
-rw-r--r--board/esd/tasreg/fpgadata.c5331
-rw-r--r--board/esd/tasreg/tasreg.c449
-rw-r--r--board/esd/tasreg/u-boot.lds146
-rw-r--r--board/esd/voh405/Makefile53
-rw-r--r--board/esd/voh405/config.mk28
-rw-r--r--board/esd/voh405/flash.c101
-rw-r--r--board/esd/voh405/fpgadata.c2011
-rw-r--r--board/esd/voh405/logo_320_240_4bpp.c77
-rw-r--r--board/esd/voh405/logo_640_480_24bpp.c1722
-rw-r--r--board/esd/voh405/u-boot.lds151
-rw-r--r--board/esd/voh405/voh405.c356
-rw-r--r--board/esd/vom405/Makefile58
-rw-r--r--board/esd/vom405/config.mk29
-rw-r--r--board/esd/vom405/flash.c101
-rw-r--r--board/esd/vom405/fpgadata.c1812
-rw-r--r--board/esd/vom405/u-boot.lds150
-rw-r--r--board/esd/vom405/vom405.c158
-rw-r--r--board/esd/wuh405/Makefile53
-rw-r--r--board/esd/wuh405/config.mk28
-rw-r--r--board/esd/wuh405/flash.c101
-rw-r--r--board/esd/wuh405/fpgadata.c1818
-rw-r--r--board/esd/wuh405/u-boot.lds149
-rw-r--r--board/esd/wuh405/wuh405.c252
-rw-r--r--board/esteem192e/Makefile44
-rw-r--r--board/esteem192e/config.mk28
-rw-r--r--board/esteem192e/esteem192e.c243
-rw-r--r--board/esteem192e/flash.c1095
-rw-r--r--board/esteem192e/u-boot.lds141
-rw-r--r--board/etin/debris/Makefile44
-rw-r--r--board/etin/debris/config.mk31
-rw-r--r--board/etin/debris/debris.c179
-rw-r--r--board/etin/debris/flash.c720
-rw-r--r--board/etin/debris/phantom.c310
-rw-r--r--board/etin/debris/speed.h54
-rw-r--r--board/etin/debris/u-boot.lds132
-rw-r--r--board/etx094/Makefile44
-rw-r--r--board/etx094/config.mk28
-rw-r--r--board/etx094/etx094.c386
-rw-r--r--board/etx094/flash.c744
-rw-r--r--board/etx094/u-boot.lds143
-rw-r--r--board/etx094/u-boot.lds.debug144
-rw-r--r--board/evb4510/Makefile51
-rw-r--r--board/evb4510/config.mk27
-rw-r--r--board/evb4510/evb4510.c64
-rw-r--r--board/evb4510/flash.c539
-rw-r--r--board/evb4510/lowlevel_init.S157
-rw-r--r--board/evb4510/u-boot.lds69
-rw-r--r--board/evb64260/64260.h31
-rw-r--r--board/evb64260/Makefile50
-rw-r--r--board/evb64260/bootseq.txt94
-rw-r--r--board/evb64260/config.mk28
-rw-r--r--board/evb64260/ecctest.c111
-rw-r--r--board/evb64260/eth.c807
-rw-r--r--board/evb64260/eth.h75
-rw-r--r--board/evb64260/eth_addrtbl.c221
-rw-r--r--board/evb64260/eth_addrtbl.h83
-rw-r--r--board/evb64260/evb64260.c445
-rw-r--r--board/evb64260/flash.c854
-rw-r--r--board/evb64260/i2c.c315
-rw-r--r--board/evb64260/i2c.h7
-rw-r--r--board/evb64260/intel_flash.c277
-rw-r--r--board/evb64260/intel_flash.h160
-rw-r--r--board/evb64260/local.h62
-rw-r--r--board/evb64260/memory.c457
-rw-r--r--board/evb64260/misc.S182
-rw-r--r--board/evb64260/mpsc.c854
-rw-r--r--board/evb64260/mpsc.h142
-rw-r--r--board/evb64260/pci.c760
-rw-r--r--board/evb64260/sdram_init.c663
-rw-r--r--board/evb64260/serial.c185
-rw-r--r--board/evb64260/serial.h63
-rw-r--r--board/evb64260/u-boot.lds138
-rw-r--r--board/evb64260/zuma_pbb.c220
-rw-r--r--board/evb64260/zuma_pbb.h346
-rw-r--r--board/evb64260/zuma_pbb_mbox.c187
-rw-r--r--board/evb64260/zuma_pbb_mbox.h43
-rw-r--r--board/exbitgen/Makefile52
-rw-r--r--board/exbitgen/config.mk33
-rw-r--r--board/exbitgen/exbitgen.c117
-rw-r--r--board/exbitgen/exbitgen.h52
-rw-r--r--board/exbitgen/flash.c597
-rw-r--r--board/exbitgen/init.S1009
-rw-r--r--board/exbitgen/u-boot.lds152
-rw-r--r--board/ezkit533/Makefile48
-rw-r--r--board/ezkit533/config.mk25
-rw-r--r--board/ezkit533/ezkit533.c72
-rw-r--r--board/ezkit533/flash-defines.h130
-rw-r--r--board/ezkit533/flash.c476
-rw-r--r--board/ezkit533/psd4256.h67
-rw-r--r--board/ezkit533/u-boot.lds148
-rw-r--r--board/fads/Makefile44
-rw-r--r--board/fads/config.mk34
-rw-r--r--board/fads/fads.c949
-rw-r--r--board/fads/fads.h491
-rw-r--r--board/fads/flash.c560
-rw-r--r--board/fads/lamp.c47
-rw-r--r--board/fads/pcmcia.c84
-rw-r--r--board/fads/u-boot.lds131
-rw-r--r--board/fads/u-boot.lds.debug138
-rw-r--r--board/flagadm/Makefile44
-rw-r--r--board/flagadm/config.mk28
-rw-r--r--board/flagadm/flagadm.c150
-rw-r--r--board/flagadm/flash.c697
-rw-r--r--board/flagadm/u-boot.lds130
-rw-r--r--board/flagadm/u-boot.lds.debug137
-rw-r--r--board/funkwerk/vovpn-gw/Makefile50
-rw-r--r--board/funkwerk/vovpn-gw/config.mk21
-rw-r--r--board/funkwerk/vovpn-gw/flash.c449
-rw-r--r--board/funkwerk/vovpn-gw/m88e6060.c262
-rw-r--r--board/funkwerk/vovpn-gw/m88e6060.h88
-rw-r--r--board/funkwerk/vovpn-gw/u-boot.lds125
-rw-r--r--board/funkwerk/vovpn-gw/vovpn-gw.c375
-rw-r--r--board/g2000/Makefile50
-rw-r--r--board/g2000/config.mk29
-rw-r--r--board/g2000/g2000.c312
-rw-r--r--board/g2000/strataflash.c793
-rw-r--r--board/g2000/u-boot.lds151
-rw-r--r--board/gcplus/Makefile53
-rw-r--r--board/gcplus/config.mk13
-rw-r--r--board/gcplus/flash.c440
-rw-r--r--board/gcplus/gcplus.c70
-rw-r--r--board/gcplus/lowlevel_init.S77
-rw-r--r--board/gcplus/u-boot.lds58
-rw-r--r--board/gen860t/Makefile44
-rw-r--r--board/gen860t/README146
-rw-r--r--board/gen860t/beeper.c213
-rw-r--r--board/gen860t/beeper.h31
-rw-r--r--board/gen860t/config.mk28
-rw-r--r--board/gen860t/flash.c644
-rw-r--r--board/gen860t/fpga.c380
-rw-r--r--board/gen860t/fpga.h45
-rw-r--r--board/gen860t/gen860t.c307
-rw-r--r--board/gen860t/ioport.c347
-rw-r--r--board/gen860t/ioport.h44
-rw-r--r--board/gen860t/u-boot-flashenv.lds139
-rw-r--r--board/gen860t/u-boot.lds133
-rw-r--r--board/genietv/Makefile44
-rw-r--r--board/genietv/config.mk25
-rw-r--r--board/genietv/flash.c469
-rw-r--r--board/genietv/genietv.c360
-rw-r--r--board/genietv/genietv.h25
-rw-r--r--board/genietv/u-boot.lds145
-rw-r--r--board/genietv/u-boot.lds.debug143
-rw-r--r--board/gth/Makefile44
-rw-r--r--board/gth/README18
-rw-r--r--board/gth/config.mk40
-rw-r--r--board/gth/ee_access.c335
-rw-r--r--board/gth/ee_access.h16
-rw-r--r--board/gth/ee_dev.h85
-rw-r--r--board/gth/flash.c649
-rw-r--r--board/gth/gth.c595
-rw-r--r--board/gth/pcmcia.c93
-rw-r--r--board/gth/u-boot.lds130
-rw-r--r--board/gth2/Makefile45
-rw-r--r--board/gth2/config.mk41
-rw-r--r--board/gth2/ee_access.c347
-rw-r--r--board/gth2/ee_access.h30
-rw-r--r--board/gth2/ee_dev.h96
-rw-r--r--board/gth2/flash.c43
-rw-r--r--board/gth2/gth2.c435
-rw-r--r--board/gth2/lowlevel_init.S454
-rw-r--r--board/gth2/u-boot.lds68
-rw-r--r--board/gw8260/Makefile51
-rw-r--r--board/gw8260/config.mk34
-rw-r--r--board/gw8260/flash.c523
-rw-r--r--board/gw8260/gw8260.c659
-rw-r--r--board/gw8260/u-boot.lds125
-rw-r--r--board/hermes/Makefile44
-rw-r--r--board/hermes/config.mk28
-rw-r--r--board/hermes/flash.c460
-rw-r--r--board/hermes/hermes.c605
-rw-r--r--board/hermes/u-boot.lds141
-rw-r--r--board/hermes/u-boot.lds.debug137
-rw-r--r--board/hidden_dragon/Makefile44
-rw-r--r--board/hidden_dragon/README60
-rw-r--r--board/hidden_dragon/config.mk30
-rw-r--r--board/hidden_dragon/early_init.S152
-rw-r--r--board/hidden_dragon/flash.c575
-rw-r--r--board/hidden_dragon/hidden_dragon.c95
-rw-r--r--board/hidden_dragon/speed.h54
-rw-r--r--board/hidden_dragon/u-boot.lds133
-rw-r--r--board/hymod/Makefile44
-rw-r--r--board/hymod/bsp.c407
-rw-r--r--board/hymod/config.mk32
-rw-r--r--board/hymod/eeprom.c694
-rw-r--r--board/hymod/env.c236
-rw-r--r--board/hymod/fetch.c107
-rw-r--r--board/hymod/flash.c506
-rw-r--r--board/hymod/flash.h156
-rw-r--r--board/hymod/global_env161
-rw-r--r--board/hymod/hymod.c537
-rw-r--r--board/hymod/hymod.h322
-rw-r--r--board/hymod/input.c113
-rw-r--r--board/hymod/u-boot.lds148
-rw-r--r--board/hymod/u-boot.lds.debug137
-rw-r--r--board/icecube/Makefile51
-rw-r--r--board/icecube/config.mk44
-rw-r--r--board/icecube/flash.c493
-rw-r--r--board/icecube/icecube.c346
-rw-r--r--board/icecube/mt46v16m16-75.h37
-rw-r--r--board/icecube/mt46v32m16.h37
-rw-r--r--board/icecube/mt48lc16m16a2-75.h43
-rw-r--r--board/icecube/u-boot.lds125
-rw-r--r--board/icu862/Makefile44
-rw-r--r--board/icu862/config.mk29
-rw-r--r--board/icu862/flash.c617
-rw-r--r--board/icu862/icu862.c215
-rw-r--r--board/icu862/pcmcia.c268
-rw-r--r--board/icu862/u-boot.lds144
-rw-r--r--board/icu862/u-boot.lds.debug138
-rw-r--r--board/idmr/Makefile44
-rw-r--r--board/idmr/config.mk25
-rw-r--r--board/idmr/flash.c356
-rw-r--r--board/idmr/idmr.c169
-rw-r--r--board/idmr/u-boot.lds145
-rw-r--r--board/ids8247/Makefile47
-rw-r--r--board/ids8247/config.mk34
-rw-r--r--board/ids8247/flash.c484
-rw-r--r--board/ids8247/ids8247.c318
-rw-r--r--board/ids8247/u-boot.lds126
-rw-r--r--board/impa7/Makefile51
-rw-r--r--board/impa7/config.mk28
-rw-r--r--board/impa7/flash.c357
-rw-r--r--board/impa7/impa7.c59
-rw-r--r--board/impa7/lowlevel_init.S85
-rw-r--r--board/impa7/u-boot.lds56
-rw-r--r--board/incaip/Makefile45
-rw-r--r--board/incaip/config.mk32
-rw-r--r--board/incaip/flash.c671
-rw-r--r--board/incaip/incaip.c111
-rw-r--r--board/incaip/lowlevel_init.S298
-rw-r--r--board/incaip/u-boot.lds69
-rw-r--r--board/inka4x0/Makefile50
-rw-r--r--board/inka4x0/config.mk41
-rw-r--r--board/inka4x0/flash.c432
-rw-r--r--board/inka4x0/inka4x0.c264
-rw-r--r--board/inka4x0/mt46v16m16-75.h37
-rw-r--r--board/inka4x0/mt48lc16m16a2-75.h47
-rw-r--r--board/inka4x0/u-boot.lds136
-rw-r--r--board/innokom/Makefile51
-rw-r--r--board/innokom/config.mk15
-rw-r--r--board/innokom/flash.c419
-rw-r--r--board/innokom/innokom.c184
-rw-r--r--board/innokom/lowlevel_init.S437
-rw-r--r--board/innokom/u-boot.lds56
-rw-r--r--board/integratorap/Makefile55
-rw-r--r--board/integratorap/config.mk11
-rw-r--r--board/integratorap/flash.c473
-rw-r--r--board/integratorap/integratorap.c649
-rw-r--r--board/integratorap/lowlevel_init.S213
-rw-r--r--board/integratorap/memsetup.S29
-rwxr-xr-xboard/integratorap/split_by_variant.sh119
-rw-r--r--board/integratorap/u-boot.lds.template53
-rw-r--r--board/integratorcp/Makefile51
-rw-r--r--board/integratorcp/config.mk11
-rw-r--r--board/integratorcp/flash.c564
-rw-r--r--board/integratorcp/integratorcp.c274
-rw-r--r--board/integratorcp/lowlevel_init.S214
-rw-r--r--board/integratorcp/memsetup.S29
-rwxr-xr-xboard/integratorcp/split_by_variant.sh114
-rw-r--r--board/integratorcp/u-boot.lds.template53
-rw-r--r--board/ip860/Makefile44
-rw-r--r--board/ip860/config.mk28
-rw-r--r--board/ip860/flash.c456
-rw-r--r--board/ip860/ip860.c356
-rw-r--r--board/ip860/u-boot.lds141
-rw-r--r--board/ip860/u-boot.lds.debug138
-rw-r--r--board/iphase4539/Makefile52
-rw-r--r--board/iphase4539/config.mk29
-rw-r--r--board/iphase4539/flash.c490
-rw-r--r--board/iphase4539/iphase4539.c424
-rw-r--r--board/iphase4539/u-boot.lds125
-rw-r--r--board/ivm/Makefile44
-rw-r--r--board/ivm/config.mk29
-rw-r--r--board/ivm/flash.c598
-rw-r--r--board/ivm/ivm.c352
-rw-r--r--board/ivm/u-boot.lds130
-rw-r--r--board/ivm/u-boot.lds.debug138
-rw-r--r--board/ixdp425/Makefile50
-rw-r--r--board/ixdp425/config.mk4
-rw-r--r--board/ixdp425/flash.c427
-rw-r--r--board/ixdp425/ixdp425.c125
-rw-r--r--board/ixdp425/u-boot.lds56
-rw-r--r--board/jse/Makefile51
-rw-r--r--board/jse/README.txt48
-rw-r--r--board/jse/config.mk24
-rw-r--r--board/jse/flash.c520
-rw-r--r--board/jse/host_bridge.c90
-rw-r--r--board/jse/init.S105
-rw-r--r--board/jse/jse.c160
-rw-r--r--board/jse/jse_priv.h25
-rw-r--r--board/jse/sdram.c182
-rw-r--r--board/jse/u-boot.lds143
-rw-r--r--board/kup/common/flash.c515
-rw-r--r--board/kup/common/kup.c83
-rw-r--r--board/kup/common/kup.h44
-rw-r--r--board/kup/common/load_sernum_ethaddr.c94
-rw-r--r--board/kup/common/pcmcia.c225
-rw-r--r--board/lantec/Makefile44
-rw-r--r--board/lantec/config.mk28
-rw-r--r--board/lantec/flash.c625
-rw-r--r--board/lantec/lantec.c208
-rw-r--r--board/lantec/u-boot.lds141
-rw-r--r--board/lantec/u-boot.lds.debug137
-rw-r--r--board/lart/Makefile51
-rw-r--r--board/lart/config.mk23
-rw-r--r--board/lart/flash.c474
-rw-r--r--board/lart/flashasm.S177
-rw-r--r--board/lart/lart.c64
-rw-r--r--board/lart/lowlevel_init.S94
-rw-r--r--board/lart/u-boot.lds56
-rw-r--r--board/logodl/Makefile51
-rw-r--r--board/logodl/config.mk15
-rw-r--r--board/logodl/flash.c829
-rw-r--r--board/logodl/logodl.c121
-rw-r--r--board/logodl/lowlevel_init.S437
-rw-r--r--board/logodl/u-boot.lds56
-rw-r--r--board/lpd7a40x/Makefile51
-rw-r--r--board/lpd7a40x/config.mk38
-rw-r--r--board/lpd7a40x/flash.c488
-rw-r--r--board/lpd7a40x/lowlevel_init.S212
-rw-r--r--board/lpd7a40x/lpd7a40x.c81
-rw-r--r--board/lpd7a40x/u-boot.lds57
-rw-r--r--board/lubbock/Makefile52
-rw-r--r--board/lubbock/config.mk3
-rw-r--r--board/lubbock/flash.c431
-rw-r--r--board/lubbock/lowlevel_init.S411
-rw-r--r--board/lubbock/lubbock.c70
-rw-r--r--board/lubbock/u-boot.lds56
-rw-r--r--board/lwmon/Makefile44
-rw-r--r--board/lwmon/README.keybd126
-rw-r--r--board/lwmon/config.mk30
-rw-r--r--board/lwmon/flash.c648
-rw-r--r--board/lwmon/lwmon.c1062
-rw-r--r--board/lwmon/pcmcia.c240
-rw-r--r--board/lwmon/u-boot.lds130
-rw-r--r--board/lwmon/u-boot.lds.debug138
-rw-r--r--board/m5272c3/Makefile44
-rw-r--r--board/m5272c3/config.mk25
-rw-r--r--board/m5272c3/flash.c378
-rw-r--r--board/m5272c3/m5272c3.c52
-rw-r--r--board/m5272c3/u-boot.lds144
-rw-r--r--board/m5282evb/Makefile44
-rw-r--r--board/m5282evb/config.mk25
-rw-r--r--board/m5282evb/flash.c378
-rw-r--r--board/m5282evb/m5282evb.c35
-rw-r--r--board/m5282evb/u-boot.lds143
-rw-r--r--board/mbx8xx/Makefile44
-rw-r--r--board/mbx8xx/config.mk33
-rw-r--r--board/mbx8xx/csr.h60
-rw-r--r--board/mbx8xx/dimm.h98
-rw-r--r--board/mbx8xx/flash.c408
-rw-r--r--board/mbx8xx/mbx8xx.c379
-rw-r--r--board/mbx8xx/pcmcia.c166
-rw-r--r--board/mbx8xx/u-boot.lds130
-rw-r--r--board/mbx8xx/u-boot.lds.debug138
-rw-r--r--board/mbx8xx/vpd.c196
-rw-r--r--board/mbx8xx/vpd.h119
-rw-r--r--board/ml2/Makefile51
-rw-r--r--board/ml2/config.mk29
-rw-r--r--board/ml2/flash.c300
-rw-r--r--board/ml2/init.S34
-rw-r--r--board/ml2/ml2.c66
-rw-r--r--board/ml2/serial.c115
-rw-r--r--board/ml2/u-boot.lds148
-rw-r--r--board/ml2/u-boot.lds.debug137
-rw-r--r--board/modnet50/Makefile51
-rw-r--r--board/modnet50/config.mk29
-rw-r--r--board/modnet50/flash.c536
-rw-r--r--board/modnet50/lowlevel_init.S204
-rw-r--r--board/modnet50/modnet50.c49
-rw-r--r--board/modnet50/u-boot.lds69
-rw-r--r--board/mousse/Makefile44
-rw-r--r--board/mousse/README346
-rw-r--r--board/mousse/config.mk28
-rw-r--r--board/mousse/flash.c939
-rw-r--r--board/mousse/flash.h78
-rw-r--r--board/mousse/m48t59y.c322
-rw-r--r--board/mousse/m48t59y.h57
-rw-r--r--board/mousse/mousse.c86
-rw-r--r--board/mousse/mousse.h259
-rw-r--r--board/mousse/pci.c283
-rw-r--r--board/mousse/u-boot.lds131
-rw-r--r--board/mousse/u-boot.lds.ram105
-rw-r--r--board/mousse/u-boot.lds.rom133
-rw-r--r--board/mp2usb/Makefile50
-rw-r--r--board/mp2usb/config.mk3
-rw-r--r--board/mp2usb/flash.c552
-rw-r--r--board/mp2usb/mp2usb.c85
-rw-r--r--board/mp2usb/u-boot.lds56
-rw-r--r--board/mpc8260ads/Makefile51
-rw-r--r--board/mpc8260ads/config.mk37
-rw-r--r--board/mpc8260ads/flash.c492
-rw-r--r--board/mpc8260ads/mpc8260ads.c546
-rw-r--r--board/mpc8260ads/u-boot.lds125
-rw-r--r--board/mpc8266ads/Makefile50
-rw-r--r--board/mpc8266ads/config.mk32
-rw-r--r--board/mpc8266ads/flash.c509
-rw-r--r--board/mpc8266ads/mpc8266ads.c586
-rw-r--r--board/mpc8266ads/u-boot.lds124
-rw-r--r--board/mpc8540eval/Makefile53
-rw-r--r--board/mpc8540eval/config.mk34
-rw-r--r--board/mpc8540eval/flash.c892
-rw-r--r--board/mpc8540eval/init.S178
-rw-r--r--board/mpc8540eval/mpc8540eval.c251
-rw-r--r--board/mpc8540eval/u-boot.lds155
-rw-r--r--board/mpl/common/common_util.c676
-rw-r--r--board/mpl/common/common_util.h46
-rw-r--r--board/mpl/common/flash.c882
-rw-r--r--board/mpl/common/isa.c494
-rw-r--r--board/mpl/common/isa.h57
-rw-r--r--board/mpl/common/kbd.c647
-rw-r--r--board/mpl/common/kbd.h35
-rw-r--r--board/mpl/common/memtst.c591
-rw-r--r--board/mpl/common/pci.c125
-rw-r--r--board/mpl/common/pci_parts.h193
-rw-r--r--board/mpl/common/piix4_pci.h165
-rw-r--r--board/mpl/common/usb_uhci.c1169
-rw-r--r--board/mpl/common/usb_uhci.h188
-rw-r--r--board/mpl/vcma9/Makefile56
-rw-r--r--board/mpl/vcma9/cmd_vcma9.c180
-rw-r--r--board/mpl/vcma9/config.mk24
-rw-r--r--board/mpl/vcma9/flash.c432
-rw-r--r--board/mpl/vcma9/lowlevel_init.S212
-rw-r--r--board/mpl/vcma9/u-boot.lds57
-rw-r--r--board/mpl/vcma9/vcma9.c350
-rw-r--r--board/mpl/vcma9/vcma9.h134
-rw-r--r--board/musenki/Makefile44
-rw-r--r--board/musenki/README298
-rw-r--r--board/musenki/config.mk30
-rw-r--r--board/musenki/flash.c512
-rw-r--r--board/musenki/musenki.c104
-rw-r--r--board/musenki/u-boot.lds136
-rw-r--r--board/mvblue/Makefile44
-rw-r--r--board/mvblue/config.mk26
-rw-r--r--board/mvblue/flash.c583
-rw-r--r--board/mvblue/mvblue.c248
-rw-r--r--board/mvblue/u-boot.lds136
-rw-r--r--board/mvs1/Makefile44
-rw-r--r--board/mvs1/README14
-rw-r--r--board/mvs1/config.mk28
-rw-r--r--board/mvs1/flash.c719
-rw-r--r--board/mvs1/mvs1.c376
-rw-r--r--board/mvs1/u-boot.lds145
-rw-r--r--board/mvs1/u-boot.lds.debug137
-rw-r--r--board/mx1fs2/Makefile51
-rw-r--r--board/mx1fs2/config.mk10
-rw-r--r--board/mx1fs2/flash.c849
-rw-r--r--board/mx1fs2/intel.h99
-rw-r--r--board/mx1fs2/lowlevel_init.S188
-rw-r--r--board/mx1fs2/mx1fs2.c122
-rw-r--r--board/mx1fs2/u-boot.lds57
-rw-r--r--board/nc650/Makefile45
-rw-r--r--board/nc650/config.mk30
-rw-r--r--board/nc650/flash.c542
-rw-r--r--board/nc650/nand.c118
-rw-r--r--board/nc650/nc650.c311
-rw-r--r--board/nc650/u-boot.lds129
-rw-r--r--board/nc650/u-boot.lds.debug127
-rw-r--r--board/netphone/Makefile44
-rw-r--r--board/netphone/config.mk28
-rw-r--r--board/netphone/flash.c529
-rw-r--r--board/netphone/netphone.c722
-rw-r--r--board/netphone/phone_console.c1144
-rw-r--r--board/netphone/u-boot.lds141
-rw-r--r--board/netphone/u-boot.lds.debug137
-rw-r--r--board/netstar/Makefile96
-rw-r--r--board/netstar/config.mk11
-rw-r--r--board/netstar/crcek.S241
-rw-r--r--board/netstar/crcek.h3
-rw-r--r--board/netstar/crcit.c86
-rw-r--r--board/netstar/eeprom.c215
-rw-r--r--board/netstar/eeprom.lds51
-rw-r--r--board/netstar/eeprom_start.S177
-rw-r--r--board/netstar/flash.c343
-rw-r--r--board/netstar/nand.c67
-rw-r--r--board/netstar/netstar.c61
-rw-r--r--board/netstar/setup.S284
-rw-r--r--board/netstar/u-boot.lds55
-rw-r--r--board/netta/Makefile44
-rw-r--r--board/netta/codec.c1484
-rw-r--r--board/netta/config.mk28
-rw-r--r--board/netta/dsp.c1208
-rw-r--r--board/netta/flash.c508
-rw-r--r--board/netta/netta.c600
-rw-r--r--board/netta/pcmcia.c370
-rw-r--r--board/netta/u-boot.lds141
-rw-r--r--board/netta/u-boot.lds.debug137
-rw-r--r--board/netta2/Makefile44
-rw-r--r--board/netta2/config.mk28
-rw-r--r--board/netta2/flash.c506
-rw-r--r--board/netta2/netta2.c670
-rw-r--r--board/netta2/u-boot.lds141
-rw-r--r--board/netta2/u-boot.lds.debug137
-rw-r--r--board/netvia/Makefile44
-rw-r--r--board/netvia/config.mk28
-rw-r--r--board/netvia/flash.c511
-rw-r--r--board/netvia/netvia.c432
-rw-r--r--board/netvia/u-boot.lds141
-rw-r--r--board/netvia/u-boot.lds.debug137
-rw-r--r--board/ns9750dev/Makefile51
-rw-r--r--board/ns9750dev/config.mk16
-rw-r--r--board/ns9750dev/flash.c477
-rw-r--r--board/ns9750dev/led.c46
-rw-r--r--board/ns9750dev/lowlevel_init.S298
-rw-r--r--board/ns9750dev/ns9750dev.c125
-rw-r--r--board/ns9750dev/u-boot.lds59
-rw-r--r--board/nx823/Makefile44
-rw-r--r--board/nx823/config.mk28
-rw-r--r--board/nx823/flash.c464
-rw-r--r--board/nx823/nx823.c398
-rw-r--r--board/nx823/u-boot.lds131
-rw-r--r--board/nx823/u-boot.lds.debug137
-rw-r--r--board/o2dnt/Makefile51
-rw-r--r--board/o2dnt/config.mk27
-rw-r--r--board/o2dnt/flash.c587
-rw-r--r--board/o2dnt/o2dnt.c182
-rw-r--r--board/o2dnt/u-boot.lds125
-rw-r--r--board/omap1610inn/Makefile51
-rw-r--r--board/omap1610inn/config.mk26
-rw-r--r--board/omap1610inn/flash.c493
-rw-r--r--board/omap1610inn/lowlevel_init.S452
-rw-r--r--board/omap1610inn/omap1610innovator.c304
-rw-r--r--board/omap1610inn/u-boot.lds52
-rw-r--r--board/omap2420h4/Makefile51
-rw-r--r--board/omap2420h4/config.mk28
-rw-r--r--board/omap2420h4/flash.c537
-rw-r--r--board/omap2420h4/lowlevel_init.S185
-rw-r--r--board/omap2420h4/mem.c375
-rw-r--r--board/omap2420h4/omap2420h4.c867
-rw-r--r--board/omap2420h4/sys_info.c387
-rw-r--r--board/omap2420h4/u-boot.lds59
-rw-r--r--board/omap730p2/Makefile51
-rw-r--r--board/omap730p2/config.mk25
-rw-r--r--board/omap730p2/flash.c477
-rw-r--r--board/omap730p2/lowlevel_init.S395
-rw-r--r--board/omap730p2/omap730p2.c265
-rw-r--r--board/omap730p2/u-boot.lds52
-rw-r--r--board/oxc/Makefile44
-rw-r--r--board/oxc/config.mk31
-rw-r--r--board/oxc/flash.c372
-rw-r--r--board/oxc/oxc.c217
-rw-r--r--board/oxc/u-boot.lds133
-rw-r--r--board/pb1x00/Makefile45
-rw-r--r--board/pb1x00/README63
-rw-r--r--board/pb1x00/config.mk32
-rw-r--r--board/pb1x00/flash.c43
-rw-r--r--board/pb1x00/memsetup.S392
-rw-r--r--board/pb1x00/pb1x00.c115
-rw-r--r--board/pb1x00/u-boot.lds68
-rw-r--r--board/pcippc2/Makefile47
-rw-r--r--board/pcippc2/config.mk30
-rw-r--r--board/pcippc2/cpc710.h96
-rw-r--r--board/pcippc2/cpc710_init_ram.c254
-rw-r--r--board/pcippc2/cpc710_pci.c309
-rw-r--r--board/pcippc2/cpc710_pci.h51
-rw-r--r--board/pcippc2/flash.c573
-rw-r--r--board/pcippc2/fpga_serial.c132
-rw-r--r--board/pcippc2/fpga_serial.h34
-rw-r--r--board/pcippc2/hardware.h48
-rw-r--r--board/pcippc2/i2c.c257
-rw-r--r--board/pcippc2/i2c.h36
-rw-r--r--board/pcippc2/ns16550.h41
-rw-r--r--board/pcippc2/pcippc2.c245
-rw-r--r--board/pcippc2/pcippc2.h51
-rw-r--r--board/pcippc2/pcippc2_fpga.c87
-rw-r--r--board/pcippc2/pcippc2_fpga.h49
-rw-r--r--board/pcippc2/sconsole.c139
-rw-r--r--board/pcippc2/sconsole.h49
-rw-r--r--board/pcippc2/u-boot.lds141
-rw-r--r--board/pcs440ep/Makefile51
-rw-r--r--board/pcs440ep/config.mk44
-rw-r--r--board/pcs440ep/flash.c608
-rw-r--r--board/pcs440ep/init.S113
-rw-r--r--board/pcs440ep/pcs440ep.c379
-rw-r--r--board/pcs440ep/u-boot.lds141
-rw-r--r--board/pleb2/Makefile52
-rw-r--r--board/pleb2/config.mk3
-rw-r--r--board/pleb2/flash.c814
-rw-r--r--board/pleb2/lowlevel_init.S488
-rw-r--r--board/pleb2/pleb2.c71
-rw-r--r--board/pleb2/u-boot.lds56
-rw-r--r--board/pm520/Makefile51
-rw-r--r--board/pm520/config.mk31
-rw-r--r--board/pm520/flash.c668
-rw-r--r--board/pm520/mt46v16m16-75.h37
-rw-r--r--board/pm520/mt48lc16m16a2-75.h43
-rw-r--r--board/pm520/pm520.c323
-rw-r--r--board/pm520/u-boot.lds125
-rw-r--r--board/pm826/Makefile44
-rw-r--r--board/pm826/config.mk37
-rw-r--r--board/pm826/flash.c386
-rw-r--r--board/pm826/pm826.c330
-rw-r--r--board/pm826/u-boot.lds126
-rw-r--r--board/pm828/Makefile44
-rw-r--r--board/pm828/config.mk37
-rw-r--r--board/pm828/flash.c386
-rw-r--r--board/pm828/pm828.c363
-rw-r--r--board/pm828/u-boot.lds126
-rw-r--r--board/ppmc7xx/Makefile52
-rw-r--r--board/ppmc7xx/config.mk28
-rw-r--r--board/ppmc7xx/flash.c494
-rw-r--r--board/ppmc7xx/init.S336
-rw-r--r--board/ppmc7xx/pci.c97
-rw-r--r--board/ppmc7xx/ppmc7xx.c104
-rw-r--r--board/ppmc7xx/u-boot.lds135
-rw-r--r--board/ppmc8260/Makefile50
-rw-r--r--board/ppmc8260/config.mk34
-rw-r--r--board/ppmc8260/ppmc8260.c307
-rw-r--r--board/ppmc8260/strataflash.c752
-rw-r--r--board/ppmc8260/u-boot.lds126
-rw-r--r--board/prodrive/common/flash.c560
-rw-r--r--board/prodrive/common/fpga.c183
-rw-r--r--board/prodrive/pdnb3/Makefile50
-rw-r--r--board/prodrive/pdnb3/config.mk4
-rw-r--r--board/prodrive/pdnb3/flash.c85
-rw-r--r--board/prodrive/pdnb3/nand.c172
-rw-r--r--board/prodrive/pdnb3/pdnb3.c249
-rw-r--r--board/prodrive/pdnb3/u-boot.lds56
-rw-r--r--board/purple/Makefile46
-rw-r--r--board/purple/config.mk32
-rw-r--r--board/purple/flash.c596
-rw-r--r--board/purple/lowlevel_init.S37
-rw-r--r--board/purple/purple.c266
-rw-r--r--board/purple/sconsole.c125
-rw-r--r--board/purple/sconsole.h47
-rw-r--r--board/purple/u-boot.lds79
-rw-r--r--board/r360mpi/Makefile44
-rw-r--r--board/r360mpi/config.mk28
-rw-r--r--board/r360mpi/flash.c484
-rw-r--r--board/r360mpi/pcmcia.c236
-rw-r--r--board/r360mpi/r360mpi.c419
-rw-r--r--board/r360mpi/u-boot.lds144
-rw-r--r--board/rbc823/Makefile44
-rw-r--r--board/rbc823/config.mk28
-rw-r--r--board/rbc823/flash.c469
-rw-r--r--board/rbc823/kbd.c269
-rw-r--r--board/rbc823/rbc823.c269
-rw-r--r--board/rbc823/u-boot.lds140
-rw-r--r--board/rmu/Makefile44
-rw-r--r--board/rmu/config.mk28
-rw-r--r--board/rmu/flash.c540
-rw-r--r--board/rmu/rmu.c162
-rw-r--r--board/rmu/u-boot.lds142
-rw-r--r--board/rmu/u-boot.lds.debug132
-rw-r--r--board/rpxsuper/Makefile50
-rw-r--r--board/rpxsuper/config.mk34
-rw-r--r--board/rpxsuper/flash.c434
-rw-r--r--board/rpxsuper/mii_phy.c107
-rw-r--r--board/rpxsuper/readme30
-rw-r--r--board/rpxsuper/rpxsuper.c305
-rw-r--r--board/rpxsuper/rpxsuper.h25
-rw-r--r--board/rpxsuper/u-boot.lds125
-rw-r--r--board/rsdproto/Makefile51
-rw-r--r--board/rsdproto/config.mk33
-rw-r--r--board/rsdproto/flash.c402
-rw-r--r--board/rsdproto/flash_asm.S39
-rw-r--r--board/rsdproto/rsdproto.c378
-rw-r--r--board/rsdproto/u-boot.lds130
-rw-r--r--board/sacsng/Makefile50
-rw-r--r--board/sacsng/clkinit.c1025
-rw-r--r--board/sacsng/clkinit.h124
-rw-r--r--board/sacsng/config.mk34
-rw-r--r--board/sacsng/flash.c523
-rw-r--r--board/sacsng/ioconfig.h217
-rw-r--r--board/sacsng/sacsng.c890
-rw-r--r--board/sacsng/u-boot.lds125
-rw-r--r--board/sandburst/common/flash.c512
-rw-r--r--board/sandburst/common/ppc440gx_i2c.c512
-rw-r--r--board/sandburst/common/ppc440gx_i2c.h64
-rw-r--r--board/sandburst/common/sb_common.c451
-rw-r--r--board/sandburst/common/sb_common.h76
-rw-r--r--board/sandpoint/Makefile44
-rw-r--r--board/sandpoint/README15
-rw-r--r--board/sandpoint/config.mk31
-rw-r--r--board/sandpoint/dinkdl2
-rw-r--r--board/sandpoint/early_init.S152
-rw-r--r--board/sandpoint/flash.c764
-rw-r--r--board/sandpoint/sandpoint.c101
-rw-r--r--board/sandpoint/speed.h54
-rw-r--r--board/sandpoint/u-boot.lds133
-rw-r--r--board/sbc2410x/Makefile51
-rw-r--r--board/sbc2410x/config.mk23
-rw-r--r--board/sbc2410x/flash.c431
-rw-r--r--board/sbc2410x/lowlevel_init.S163
-rw-r--r--board/sbc2410x/sbc2410x.c183
-rw-r--r--board/sbc2410x/u-boot.lds56
-rw-r--r--board/sbc405/Makefile50
-rw-r--r--board/sbc405/config.mk28
-rw-r--r--board/sbc405/sbc405.c114
-rw-r--r--board/sbc405/strataflash.c793
-rw-r--r--board/sbc405/u-boot.lds150
-rw-r--r--board/sbc8240/Makefile44
-rw-r--r--board/sbc8240/README140
-rw-r--r--board/sbc8240/config.mk30
-rw-r--r--board/sbc8240/flash.c638
-rw-r--r--board/sbc8240/sbc8240.c105
-rw-r--r--board/sbc8240/u-boot.lds136
-rw-r--r--board/sbc8260/Makefile50
-rw-r--r--board/sbc8260/config.mk34
-rw-r--r--board/sbc8260/flash.c392
-rw-r--r--board/sbc8260/sbc8260.c289
-rw-r--r--board/sbc8260/u-boot.lds125
-rw-r--r--board/sc520_cdp/Makefile54
-rw-r--r--board/sc520_cdp/config.mk25
-rw-r--r--board/sc520_cdp/flash.c637
-rw-r--r--board/sc520_cdp/flash_old.c458
-rw-r--r--board/sc520_cdp/sc520_cdp.c630
-rw-r--r--board/sc520_cdp/sc520_cdp_asm.S85
-rw-r--r--board/sc520_cdp/sc520_cdp_asm16.S83
-rw-r--r--board/sc520_cdp/u-boot.lds91
-rw-r--r--board/sc520_spunk/Makefile54
-rw-r--r--board/sc520_spunk/config.mk25
-rw-r--r--board/sc520_spunk/flash.c809
-rw-r--r--board/sc520_spunk/sc520_spunk.c677
-rw-r--r--board/sc520_spunk/sc520_spunk_asm.S81
-rw-r--r--board/sc520_spunk/sc520_spunk_asm16.S83
-rw-r--r--board/sc520_spunk/u-boot.lds92
-rw-r--r--board/scb9328/Makefile51
-rw-r--r--board/scb9328/config.mk10
-rw-r--r--board/scb9328/flash.c321
-rw-r--r--board/scb9328/intel.h99
-rw-r--r--board/scb9328/lowlevel_init.S203
-rw-r--r--board/scb9328/scb9328.c72
-rw-r--r--board/scb9328/u-boot.lds57
-rw-r--r--board/shannon/Makefile51
-rw-r--r--board/shannon/config.mk23
-rw-r--r--board/shannon/flash.c473
-rw-r--r--board/shannon/lowlevel_init.S92
-rw-r--r--board/shannon/shannon.c99
-rw-r--r--board/shannon/u-boot.lds56
-rw-r--r--board/siemens/CCM/Makefile49
-rw-r--r--board/siemens/CCM/ccm.c408
-rw-r--r--board/siemens/CCM/config.mk28
-rw-r--r--board/siemens/CCM/flash.c553
-rw-r--r--board/siemens/CCM/fpga_ccm.c169
-rw-r--r--board/siemens/CCM/u-boot.lds141
-rw-r--r--board/siemens/CCM/u-boot.lds.debug137
-rw-r--r--board/siemens/IAD210/IAD210.c286
-rw-r--r--board/siemens/IAD210/Makefile44
-rw-r--r--board/siemens/IAD210/atm.c653
-rw-r--r--board/siemens/IAD210/atm.h287
-rw-r--r--board/siemens/IAD210/config.mk33
-rw-r--r--board/siemens/IAD210/flash.c502
-rw-r--r--board/siemens/IAD210/u-boot.lds139
-rw-r--r--board/siemens/SCM/Makefile49
-rw-r--r--board/siemens/SCM/config.mk34
-rw-r--r--board/siemens/SCM/flash.c488
-rw-r--r--board/siemens/SCM/fpga_scm.c104
-rw-r--r--board/siemens/SCM/scm.c540
-rw-r--r--board/siemens/SCM/scm.h87
-rw-r--r--board/siemens/SCM/u-boot.lds126
-rw-r--r--board/siemens/pcu_e/Makefile44
-rw-r--r--board/siemens/pcu_e/config.mk28
-rw-r--r--board/siemens/pcu_e/flash.c700
-rw-r--r--board/siemens/pcu_e/pcu_e.c563
-rw-r--r--board/siemens/pcu_e/u-boot.lds130
-rw-r--r--board/siemens/pcu_e/u-boot.lds.debug138
-rw-r--r--board/sixnet/Makefile44
-rw-r--r--board/sixnet/config.mk28
-rw-r--r--board/sixnet/flash.c790
-rw-r--r--board/sixnet/fpgadata.c1719
-rw-r--r--board/sixnet/sixnet.c603
-rw-r--r--board/sixnet/sixnet.h36
-rw-r--r--board/sixnet/u-boot.lds130
-rw-r--r--board/sl8245/Makefile44
-rw-r--r--board/sl8245/config.mk31
-rw-r--r--board/sl8245/flash.c488
-rw-r--r--board/sl8245/sl8245.c68
-rw-r--r--board/sl8245/u-boot.lds135
-rw-r--r--board/smdk2400/Makefile51
-rw-r--r--board/smdk2400/config.mk25
-rw-r--r--board/smdk2400/flash.c490
-rw-r--r--board/smdk2400/lowlevel_init.S163
-rw-r--r--board/smdk2400/smdk2400.c112
-rw-r--r--board/smdk2400/u-boot.lds57
-rw-r--r--board/smdk2410/Makefile51
-rw-r--r--board/smdk2410/config.mk25
-rw-r--r--board/smdk2410/flash.c433
-rw-r--r--board/smdk2410/lowlevel_init.S167
-rw-r--r--board/smdk2410/smdk2410.c123
-rw-r--r--board/smdk2410/u-boot.lds57
-rw-r--r--board/snmc/qs850/Makefile44
-rw-r--r--board/snmc/qs850/config.mk29
-rw-r--r--board/snmc/qs850/flash.c616
-rw-r--r--board/snmc/qs850/qs850.c229
-rw-r--r--board/snmc/qs850/u-boot.lds144
-rw-r--r--board/snmc/qs860t/Makefile44
-rw-r--r--board/snmc/qs860t/config.mk29
-rw-r--r--board/snmc/qs860t/flash.c1120
-rw-r--r--board/snmc/qs860t/qs860t.c236
-rw-r--r--board/snmc/qs860t/u-boot.lds144
-rw-r--r--board/spd8xx/Makefile44
-rw-r--r--board/spd8xx/config.mk29
-rw-r--r--board/spd8xx/flash.c57
-rw-r--r--board/spd8xx/spd8xx.c294
-rw-r--r--board/spd8xx/u-boot.lds130
-rw-r--r--board/spd8xx/u-boot.lds.debug138
-rw-r--r--board/ssv/adnpesc1/Makefile51
-rw-r--r--board/ssv/adnpesc1/adnpesc1.c103
-rw-r--r--board/ssv/adnpesc1/config.mk29
-rw-r--r--board/ssv/adnpesc1/flash.c66
-rw-r--r--board/ssv/adnpesc1/misc.c40
-rw-r--r--board/ssv/adnpesc1/u-boot.lds70
-rw-r--r--board/ssv/adnpesc1/vectors.S138
-rw-r--r--board/ssv/common/cmd_sled.c162
-rw-r--r--board/ssv/common/flash.c207
-rw-r--r--board/ssv/common/post.c44
-rw-r--r--board/ssv/common/wd_pio.c160
-rw-r--r--board/stxgp3/Makefile52
-rw-r--r--board/stxgp3/config.mk32
-rw-r--r--board/stxgp3/flash.c515
-rw-r--r--board/stxgp3/init.S286
-rw-r--r--board/stxgp3/stxgp3.c380
-rw-r--r--board/stxgp3/u-boot.lds158
-rw-r--r--board/svm_sc8xx/Makefile44
-rw-r--r--board/svm_sc8xx/config.mk24
-rw-r--r--board/svm_sc8xx/flash.c797
-rw-r--r--board/svm_sc8xx/svm_sc8xx.c162
-rw-r--r--board/svm_sc8xx/u-boot.lds145
-rw-r--r--board/svm_sc8xx/u-boot.lds.debug132
-rw-r--r--board/tb0229/Makefile47
-rw-r--r--board/tb0229/config.mk30
-rw-r--r--board/tb0229/flash.c1198
-rw-r--r--board/tb0229/lowlevel_init.S71
-rw-r--r--board/tb0229/tb0229.c42
-rw-r--r--board/tb0229/u-boot.lds69
-rw-r--r--board/tb0229/vr4131-pci.c254
-rw-r--r--board/tqm5200/Makefile53
-rw-r--r--board/tqm5200/cam5200_flash.c786
-rwxr-xr-xboard/tqm5200/cmd_stk52xx.c1244
-rw-r--r--board/tqm5200/cmd_tb5200.c104
-rw-r--r--board/tqm5200/config.mk46
-rw-r--r--board/tqm5200/mt48lc16m16a2-75.h47
-rw-r--r--board/tqm5200/tqm5200.c777
-rw-r--r--board/tqm5200/u-boot.lds125
-rw-r--r--board/tqm8260/Makefile47
-rw-r--r--board/tqm8260/config.mk34
-rw-r--r--board/tqm8260/flash.c488
-rw-r--r--board/tqm8260/tqm8260.c368
-rw-r--r--board/tqm8260/u-boot.lds126
-rw-r--r--board/tqm8xx/Makefile44
-rw-r--r--board/tqm8xx/config.mk28
-rw-r--r--board/tqm8xx/flash.c830
-rw-r--r--board/tqm8xx/load_sernum_ethaddr.c105
-rw-r--r--board/tqm8xx/tqm8xx.c504
-rw-r--r--board/tqm8xx/u-boot.lds144
-rw-r--r--board/tqm8xx/u-boot.lds.debug137
-rw-r--r--board/trab/Makefile73
-rw-r--r--board/trab/Pt1000_temp_data.h71
-rw-r--r--board/trab/README.kbd44
-rw-r--r--board/trab/auto_update.c657
-rw-r--r--board/trab/cmd_trab.c896
-rw-r--r--board/trab/config.mk26
-rw-r--r--board/trab/flash.c569
-rw-r--r--board/trab/lowlevel_init.S182
-rw-r--r--board/trab/memory.c486
-rw-r--r--board/trab/rs485.c203
-rw-r--r--board/trab/rs485.h37
-rw-r--r--board/trab/trab.c422
-rw-r--r--board/trab/trab_fkt.c1411
-rw-r--r--board/trab/tsc2000.c362
-rw-r--r--board/trab/tsc2000.h145
-rw-r--r--board/trab/u-boot.lds65
-rw-r--r--board/trab/vfd.c570
-rw-r--r--board/utx8245/Makefile49
-rw-r--r--board/utx8245/config.mk33
-rw-r--r--board/utx8245/flash.c560
-rw-r--r--board/utx8245/u-boot.lds141
-rw-r--r--board/utx8245/utx8245.c129
-rw-r--r--board/v37/Makefile44
-rw-r--r--board/v37/config.mk27
-rw-r--r--board/v37/flash.c559
-rw-r--r--board/v37/u-boot.lds146
-rw-r--r--board/v37/v37.c218
-rw-r--r--board/versatile/Makefile51
-rw-r--r--board/versatile/config.mk5
-rw-r--r--board/versatile/flash.c514
-rw-r--r--board/versatile/lowlevel_init.S34
-rwxr-xr-xboard/versatile/split_by_variant.sh42
-rw-r--r--board/versatile/u-boot.lds51
-rw-r--r--board/versatile/versatile.c120
-rw-r--r--board/w7o/Makefile55
-rw-r--r--board/w7o/cmd_vpd.c66
-rw-r--r--board/w7o/config.mk31
-rw-r--r--board/w7o/errors.h97
-rw-r--r--board/w7o/flash.c940
-rw-r--r--board/w7o/fpga.c379
-rw-r--r--board/w7o/fsboot.c90
-rw-r--r--board/w7o/init.S264
-rw-r--r--board/w7o/post1.S742
-rw-r--r--board/w7o/post2.c108
-rw-r--r--board/w7o/u-boot.lds135
-rw-r--r--board/w7o/u-boot.lds.debug137
-rw-r--r--board/w7o/vpd.c407
-rw-r--r--board/w7o/vpd.h134
-rw-r--r--board/w7o/w7o.c272
-rw-r--r--board/w7o/w7o.h92
-rw-r--r--board/w7o/watchdog.c47
-rw-r--r--board/wepep250/Makefile51
-rw-r--r--board/wepep250/config.mk11
-rw-r--r--board/wepep250/flash.c321
-rw-r--r--board/wepep250/intel.h99
-rw-r--r--board/wepep250/lowlevel_init.S145
-rw-r--r--board/wepep250/u-boot.lds56
-rw-r--r--board/wepep250/wepep250.c67
-rw-r--r--board/westel/amx860/Makefile44
-rw-r--r--board/westel/amx860/amx860.c93
-rw-r--r--board/westel/amx860/config.mk26
-rw-r--r--board/westel/amx860/flash.c637
-rw-r--r--board/westel/amx860/u-boot.lds141
-rw-r--r--board/westel/amx860/u-boot.lds.debug138
-rw-r--r--board/xaeniax/Makefile51
-rw-r--r--board/xaeniax/config.mk2
-rw-r--r--board/xaeniax/flash.c431
-rw-r--r--board/xaeniax/lowlevel_init.S424
-rw-r--r--board/xaeniax/u-boot.lds56
-rw-r--r--board/xaeniax/xaeniax.c73
-rw-r--r--board/xm250/Makefile51
-rw-r--r--board/xm250/config.mk35
-rw-r--r--board/xm250/flash.c536
-rw-r--r--board/xm250/lowlevel_init.S519
-rw-r--r--board/xm250/u-boot.lds56
-rw-r--r--board/xm250/xm250.c90
-rw-r--r--board/xpedite1k/Makefile51
-rw-r--r--board/xpedite1k/config.mk42
-rw-r--r--board/xpedite1k/flash.c607
-rw-r--r--board/xpedite1k/init.S96
-rw-r--r--board/xpedite1k/u-boot.lds157
-rw-r--r--board/xpedite1k/u-boot.lds.debug144
-rw-r--r--board/xpedite1k/xpedite1k.c351
-rw-r--r--board/xsengine/Makefile51
-rw-r--r--board/xsengine/config.mk1
-rw-r--r--board/xsengine/flash.c470
-rw-r--r--board/xsengine/lowlevel_init.S221
-rw-r--r--board/xsengine/u-boot.lds56
-rw-r--r--board/xsengine/xsengine.c63
-rw-r--r--board/zylonite/Makefile51
-rw-r--r--board/zylonite/config.mk4
-rw-r--r--board/zylonite/flash.c434
-rw-r--r--board/zylonite/lowlevel_init.S373
-rw-r--r--board/zylonite/nand.c585
-rw-r--r--board/zylonite/u-boot.lds56
-rw-r--r--board/zylonite/zylonite.c70
1530 files changed, 0 insertions, 351189 deletions
diff --git a/board/AtmarkTechno/suzaku/Makefile b/board/AtmarkTechno/suzaku/Makefile
deleted file mode 100644
index 109cec2640..0000000000
--- a/board/AtmarkTechno/suzaku/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/AtmarkTechno/suzaku/config.mk b/board/AtmarkTechno/suzaku/config.mk
deleted file mode 100644
index 7bbf2b130e..0000000000
--- a/board/AtmarkTechno/suzaku/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2004 Atmark Techno, Inc.
-#
-# Yasushi SHOJI <yashi@atmark-techno.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
-#
-
-TEXT_BASE = 0x80F00000
-
-PLATFORM_CPPFLAGS += -mno-xl-soft-mul
-PLATFORM_CPPFLAGS += -mno-xl-soft-div
-PLATFORM_CPPFLAGS += -mxl-barrel-shift
diff --git a/board/AtmarkTechno/suzaku/flash.c b/board/AtmarkTechno/suzaku/flash.c
deleted file mode 100644
index 49a06733a5..0000000000
--- a/board/AtmarkTechno/suzaku/flash.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * (C) Copyright 2004 Atmark Techno, Inc.
- *
- * Yasushi SHOJI <yashi@atmark-techno.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
- */
-
-#include <common.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-unsigned long flash_init(void)
-{
- return 0;
-}
-
-void flash_print_info(flash_info_t *info)
-{
-}
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- return 0;
-}
-
-int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- return 0;
-}
diff --git a/board/AtmarkTechno/suzaku/suzaku.c b/board/AtmarkTechno/suzaku/suzaku.c
deleted file mode 100644
index afe124a9d3..0000000000
--- a/board/AtmarkTechno/suzaku/suzaku.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * (C) Copyright 2004 Atmark Techno, Inc.
- *
- * Yasushi SHOJI <yashi@atmark-techno.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
- */
-
-/* This is a board specific file. It's OK to include board specific
- * header files */
-#include <asm/suzaku.h>
-
-void do_reset(void)
-{
- *((unsigned long *)(MICROBLAZE_SYSREG_BASE_ADDR)) = MICROBLAZE_SYSREG_RECONFIGURE;
-}
diff --git a/board/AtmarkTechno/suzaku/u-boot.lds b/board/AtmarkTechno/suzaku/u-boot.lds
deleted file mode 100644
index 00a8ef7ad9..0000000000
--- a/board/AtmarkTechno/suzaku/u-boot.lds
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * (C) Copyright 2004 Atmark Techno, Inc.
- *
- * Yasushi SHOJI <yashi@atmark-techno.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
- */
-
-OUTPUT_ARCH(microblaze)
-ENTRY(_start)
-
-SECTIONS
-{
- .text ALIGN(0x4):
- {
- __text_start = .;
- cpu/microblaze/start.o (.text)
- *(.text)
- __text_end = .;
- }
-
- .rodata ALIGN(0x4):
- {
- __rodata_start = .;
- *(.rodata)
- __rodata_end = .;
- }
-
- .data ALIGN(0x4):
- {
- __data_start = .;
- *(.data)
- __data_end = .;
- }
-
- .u_boot_cmd ALIGN(0x4):
- {
- . = .;
- __u_boot_cmd_start = .;
- *(.u_boot_cmd)
- __u_boot_cmd_end = .;
- }
-
- .bss ALIGN(0x4):
- {
- __bss_start = .;
- *(.bss)
- __bss_start = .;
- }
-}
diff --git a/board/BuS/EB+MCF-EV123/EB+MCF-EV123.c b/board/BuS/EB+MCF-EV123/EB+MCF-EV123.c
deleted file mode 100644
index dcfd83ed27..0000000000
--- a/board/BuS/EB+MCF-EV123/EB+MCF-EV123.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * (C) Copyright 2005
- * BuS Elektronik GmbH & Co.KG <esw@bus-elektonik.de>
- *
- * (C) Copyright 2000-2003
- * 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 <common.h>
-#include <command.h>
-#include "asm/m5282.h"
-#include "VCxK.h"
-
-int checkboard (void)
-{
- puts ("Board: MCF-EV1 + MCF-EV23 (BuS Elektronik GmbH & Co. KG)\n");
-#if (TEXT_BASE == CFG_INT_FLASH_BASE)
- puts (" Boot from Internal FLASH\n");
-#endif
-
- return 0;
-}
-
-long int initdram (int board_type)
-{
- int size,i;
-
- size = 0;
- MCFSDRAMC_DCR = MCFSDRAMC_DCR_RTIM_6
- | MCFSDRAMC_DCR_RC((15 * CFG_CLK)>>4);
- #ifdef CFG_SDRAM_BASE0
-
- MCFSDRAMC_DACR0 = MCFSDRAMC_DACR_BASE(CFG_SDRAM_BASE0)
- | MCFSDRAMC_DACR_CASL(1)
- | MCFSDRAMC_DACR_CBM(3)
- | MCFSDRAMC_DACR_PS_16);
-
- MCFSDRAMC_DMR0 = MCFSDRAMC_DMR_BAM_16M
- | MCFSDRAMC_DMR_V;
-
- MCFSDRAMC_DACR0 |= MCFSDRAMC_DACR_IP;
-
- *(unsigned short *)(CFG_SDRAM_BASE0) = 0xA5A5;
- MCFSDRAMC_DACR0 |= MCFSDRAMC_DACR_RE;
- for (i=0; i < 2000; i++)
- asm(" nop");
- mbar_writeLong(MCFSDRAMC_DACR0, mbar_readLong(MCFSDRAMC_DACR0)
- | MCFSDRAMC_DACR_IMRS);
- *(unsigned int *)(CFG_SDRAM_BASE0 + 0x220) = 0xA5A5;
- size += CFG_SDRAM_SIZE * 1024 * 1024;
- #endif
- #ifdef CFG_SDRAM_BASE1
- MCFSDRAMC_DACR1 = MCFSDRAMC_DACR_BASE(CFG_SDRAM_BASE1)
- | MCFSDRAMC_DACR_CASL(1)
- | MCFSDRAMC_DACR_CBM(3)
- | MCFSDRAMC_DACR_PS_16;
-
- MCFSDRAMC_DMR1 = MCFSDRAMC_DMR_BAM_16M
- | MCFSDRAMC_DMR_V;
-
- MCFSDRAMC_DACR1 |= MCFSDRAMC_DACR_IP;
-
- *(unsigned short *)(CFG_SDRAM_BASE1) = 0xA5A5;
- MCFSDRAMC_DACR1 |= MCFSDRAMC_DACR_RE;
- for (i=0; i < 2000; i++)
- asm(" nop");
- MCFSDRAMC_DACR1 |= MCFSDRAMC_DACR_IMRS;
- *(unsigned int *)(CFG_SDRAM_BASE1 + 0x220) = 0xA5A5;
- size += CFG_SDRAM_SIZE1 * 1024 * 1024;
- #endif
- return size;
-}
-
-
-#if defined(CFG_DRAM_TEST)
-int testdram (void)
-{
- uint *pstart = (uint *) CFG_MEMTEST_START;
- uint *pend = (uint *) CFG_MEMTEST_END;
- uint *p;
-
- printf("SDRAM test phase 1:\n");
- for (p = pstart; p < pend; p++)
- *p = 0xaaaaaaaa;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0xaaaaaaaa) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- printf("SDRAM test phase 2:\n");
- for (p = pstart; p < pend; p++)
- *p = 0x55555555;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0x55555555) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- printf("SDRAM test passed.\n");
- return 0;
-}
-#endif
-
-int misc_init_r(void)
-{
- init_vcxk();
- return 1;
-}
-
-/*---------------------------------------------------------------------------*/
-
-int do_vcimage (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int rcode = 0;
- ulong source;
-
- switch (argc) {
- case 2:
- source = simple_strtoul(argv[1],NULL,16);
- vcxk_loadimage(source);
- rcode = 0;
- break;
- default:
- printf ("Usage:\n%s\n", cmdtp->usage);
- rcode = 1;
- break;
- }
- return rcode;
-}
-
-/***************************************************/
-
-U_BOOT_CMD(
- vcimage, 2, 0, do_vcimage,
- "vcimage - loads an image to Display\n",
- "vcimage addr\n"
-);
-
-/* EOF EB+MCF-EV123c */
diff --git a/board/BuS/EB+MCF-EV123/Makefile b/board/BuS/EB+MCF-EV123/Makefile
deleted file mode 100644
index ed3ac07558..0000000000
--- a/board/BuS/EB+MCF-EV123/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o cfm_flash.o flash.o VCxK.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/BuS/EB+MCF-EV123/VCxK.c b/board/BuS/EB+MCF-EV123/VCxK.c
deleted file mode 100644
index 4b46b7c9a5..0000000000
--- a/board/BuS/EB+MCF-EV123/VCxK.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * (C) Copyright 2005
- * BuS Elektronik GmbH & Co.KG <esw@bus-elektonik.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 <common.h>
-#include <asm/m5282.h>
-#include "VCxK.h"
-
-vu_char *vcxk_bws = (vu_char *)(CFG_CS3_BASE);
-#define VCXK_BWS vcxk_bws
-
-static ulong vcxk_driver;
-
-
-ulong search_vcxk_driver(void);
-void vcxk_cls(void);
-void vcxk_setbrightness(short brightness);
-int vcxk_request(void);
-int vcxk_acknowledge_wait(void);
-void vcxk_clear(void);
-
-int init_vcxk(void)
-{
- VIDEO_Invert_CFG &= ~VIDEO_Invert_IO;
- VIDEO_INVERT_PORT |= VIDEO_INVERT_PIN;
- VIDEO_INVERT_DDR |= VIDEO_INVERT_PIN;
-
- VIDEO_REQUEST_PORT |= VIDEO_REQUEST_PIN;
- VIDEO_REQUEST_DDR |= VIDEO_REQUEST_PIN;
-
- VIDEO_ACKNOWLEDGE_DDR &= ~VIDEO_ACKNOWLEDGE_PIN;
-
- vcxk_driver = search_vcxk_driver();
- if (vcxk_driver)
- {
- /* use flash resist driver */
- }
- else
- {
- vcxk_cls();
- vcxk_cls();
- vcxk_setbrightness(1000);
- }
- VIDEO_ENABLE_DDR |= VIDEO_ENABLE_PIN;
- VIDEO_ENABLE_PORT |= VIDEO_ENABLE_PIN;
- VIDEO_ENABLE_PORT &= ~VIDEO_ENABLE_PIN;
- return 1;
-}
-
-void vcxk_loadimage(ulong source)
-{
- int cnt;
- vcxk_acknowledge_wait();
- for (cnt=0; cnt<16384; cnt++)
- {
- VCXK_BWS[cnt*2] = (*(vu_char*) source);
- source++;
- }
- vcxk_request();
-}
-
-void vcxk_cls(void)
-{
- vcxk_acknowledge_wait();
- vcxk_clear();
- vcxk_request();
-}
-
-void vcxk_clear(void)
-{
- int cnt;
- for (cnt=0; cnt<16384; cnt++)
- {
- VCXK_BWS[cnt*2] = 0x00;
- }
-}
-
-void vcxk_setbrightness(short brightness)
-{
- VCXK_BWS[0x8000]=(brightness >> 4) +2;
- VCXK_BWS[0xC000]= (brightness + 23) >> 8;
- VCXK_BWS[0xC001]= (brightness + 23) & 0xFF;
-}
-
-int vcxk_request(void)
-{
- if (vcxk_driver)
- {
- /* use flash resist driver */
- }
- else
- {
- VIDEO_REQUEST_PORT &= ~VIDEO_REQUEST_PIN;
- VIDEO_REQUEST_PORT |= VIDEO_REQUEST_PIN;
- }
- return 1;
-}
-
-int vcxk_acknowledge_wait(void)
-{
- if (vcxk_driver)
- {
- /* use flash resist driver */
- }
- else
- {
- while (!(VIDEO_ACKNOWLEDGE_PORT & VIDEO_ACKNOWLEDGE_PIN));
- }
- return 1;
-}
-
-ulong search_vcxk_driver(void)
-{
- return 0;
-}
-
-/* eof */
diff --git a/board/BuS/EB+MCF-EV123/VCxK.h b/board/BuS/EB+MCF-EV123/VCxK.h
deleted file mode 100644
index f591e5c52f..0000000000
--- a/board/BuS/EB+MCF-EV123/VCxK.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * (C) Copyright 2005
- * BuS Elektronik GmbH & Co.KG <esw@bus-elektonik.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 __VCXK_H_
-#define __VCXK_H_
-
-extern int init_vcxk(void);
-void vcxk_loadimage(ulong source);
-
-#define VIDEO_ACKNOWLEDGE_PORT MCFGPTB_GPTPORT
-#define VIDEO_ACKNOWLEDGE_DDR MCFGPTB_GPTDDR
-#define VIDEO_ACKNOWLEDGE_PIN 0x0001
-
-#define VIDEO_ENABLE_PORT MCFGPTB_GPTPORT
-#define VIDEO_ENABLE_DDR MCFGPTB_GPTDDR
-#define VIDEO_ENABLE_PIN 0x0002
-
-#define VIDEO_REQUEST_PORT MCFGPTB_GPTPORT
-#define VIDEO_REQUEST_DDR MCFGPTB_GPTDDR
-#define VIDEO_REQUEST_PIN 0x0004
-
-#define VIDEO_Invert_CFG MCFGPIO_PEPAR
-#define VIDEO_Invert_IO MCFGPIO_PEPAR_PEPA2
-#define VIDEO_INVERT_PORT MCFGPIO_PORTE
-#define VIDEO_INVERT_DDR MCFGPIO_DDRE
-#define VIDEO_INVERT_PIN MCFGPIO_PORT2
-
-#endif
diff --git a/board/BuS/EB+MCF-EV123/cfm_flash.c b/board/BuS/EB+MCF-EV123/cfm_flash.c
deleted file mode 100644
index b326384102..0000000000
--- a/board/BuS/EB+MCF-EV123/cfm_flash.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Basic Flash Driver for Freescale MCF 5281/5282 internal FLASH
- *
- * (C) Copyright 2005 BuS Elektronik GmbH & Co.KG <esw@bus-elektonik.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 <common.h>
-#include <asm/m5282.h>
-#include "cfm_flash.h"
-
-#if defined(CONFIG_M5281) || defined(CONFIG_M5282)
-
-#if (CFG_CLK>20000000)
- #define CFM_CLK (((long) CFG_CLK / (400000 * 8) + 1) | 0x40)
-#else
- #define CFM_CLK ((long) CFG_CLK / 400000 + 1)
-#endif
-
-#define cmf_backdoor_address(addr) (((addr) & 0x0007FFFF) | 0x04000000 | \
- (CFG_MBAR & 0xC0000000))
-
-void cfm_flash_print_info (flash_info_t * info)
-{
- printf ("Freescale: ");
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FREESCALE_ID_MCF5281 & FLASH_TYPEMASK:
- printf ("MCF5281 internal FLASH\n");
- break;
- case FREESCALE_ID_MCF5282 & FLASH_TYPEMASK:
- printf ("MCF5282 internal FLASH\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-}
-
-void cfm_flash_init (flash_info_t * info)
-{
- int sector;
- ulong protection;
- MCFCFM_MCR = 0;
- MCFCFM_CLKD = CFM_CLK;
- debug ("CFM Clock divider: %ld (%d Hz @ %ld Hz)\n",CFM_CLK,\
- CFG_CLK / (2* ((CFM_CLK & 0x3F)+1) * (1+((CFM_CLK & 0x40)>>6)*7)),\
- CFG_CLK);
- MCFCFM_SACC = 0;
- MCFCFM_DACC = 0;
-
- if (MCFCFM_SEC & MCFCFM_SEC_KEYEN)
- puts("CFM backdoor access is enabled\n");
- if (MCFCFM_SEC & MCFCFM_SEC_SECSTAT)
- puts("CFM securety is enabled\n");
-
- #ifdef CONFIG_M5281
- info->flash_id = (FREESCALE_MANUFACT & FLASH_VENDMASK) |
- (FREESCALE_ID_MCF5281 & FLASH_TYPEMASK);
- info->size = 256*1024;
- info->sector_count = 16;
- #else
- info->flash_id = (FREESCALE_MANUFACT & FLASH_VENDMASK) |
- (FREESCALE_ID_MCF5282 & FLASH_TYPEMASK);
- info->size = 512*1024;
- info->sector_count = 32;
- #endif
- protection = MCFCFM_PROT;
- for (sector = 0; sector < info->sector_count; sector++)
- {
- if (sector == 0)
- {
- info->start[sector] = CFG_INT_FLASH_BASE;
- }
- else
- {
- info->start[sector] = info->start[sector-1] + 0x04000;
- }
- info->protect[sector] = protection & 1;
- protection >>= 1;
- }
-}
-
-int cfm_flash_readycheck(int checkblank)
-{
- int rc;
- unsigned char state;
-
- rc = ERR_OK;
- while (!(MCFCFM_USTAT & MCFCFM_USTAT_CCIF));
- state = MCFCFM_USTAT;
- if (state & MCFCFM_USTAT_ACCERR)
- {
- debug ("%s(): CFM access error",__FUNCTION__);
- rc = ERR_PROG_ERROR;
- }
- if (state & MCFCFM_USTAT_PVIOL)
- {
- debug ("%s(): CFM protection violation",__FUNCTION__);
- rc = ERR_PROTECTED;
- }
- if (checkblank)
- {
- if (!(state & MCFCFM_USTAT_BLANK))
- {
- debug ("%s(): CFM erras error",__FUNCTION__);
- rc = ERR_NOT_ERASED;
- }
- }
- MCFCFM_USTAT = state & 0x34; /* reset state */
- return rc;
-}
-
-/* Erase 16KiB = 8 2KiB pages */
-
-int cfm_flash_erase_sector (flash_info_t * info, int sector)
-{
- ulong address;
- int page;
- int rc;
- rc= ERR_OK;
- address = cmf_backdoor_address(info->start[sector]);
- for (page=0; (page<8) && (rc==ERR_OK); page++)
- {
- *(volatile __u32*) address = 0;
- MCFCFM_CMD = MCFCFM_CMD_PGERS;
- MCFCFM_USTAT = MCFCFM_USTAT_CBEIF;
- rc = cfm_flash_readycheck(0);
- if (rc==ERR_OK)
- {
- *(volatile __u32*) address = 0;
- MCFCFM_CMD = MCFCFM_CMD_PGERSVER;
- MCFCFM_USTAT = MCFCFM_USTAT_CBEIF;
- rc = cfm_flash_readycheck(1);
- }
- address += 0x800;
- }
- return rc;
-}
-
-int cfm_flash_write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- int rc;
- ulong dest, data;
-
- rc = ERR_OK;
- if (addr & 3)
- {
- debug ("Byte and Word alignment not supported\n");
- rc = ERR_ALIGN;
- }
- if (cnt & 3)
- {
- debug ("Byte and Word transfer not supported\n");
- rc = ERR_ALIGN;
- }
- dest = cmf_backdoor_address(addr);
- while ((cnt>=4) && (rc == ERR_OK))
- {
- data =*((volatile u32 *) src);
- *(volatile u32*) dest = data;
- MCFCFM_CMD = MCFCFM_CMD_PGM;
- MCFCFM_USTAT = MCFCFM_USTAT_CBEIF;
- rc = cfm_flash_readycheck(0);
- if (*(volatile u32*) addr != data) rc = ERR_PROG_ERROR;
- src +=4;
- dest +=4;
- addr +=4;
- cnt -=4;
- }
- return rc;
-}
-
-#ifdef CFG_FLASH_PROTECTION
-
-int cfm_flash_protect(flash_info_t * info,long sector,int prot)
-{
- int rc;
-
- rc= ERR_OK;
- if (prot)
- {
- MCFCFM_PROT |= (1<<sector);
- info->protect[sector]=1;
- }
- else
- {
- MCFCFM_PROT &= ~(1<<sector);
- info->protect[sector]=0;
- }
- return rc;
-}
-
-#endif
-
-#endif
diff --git a/board/BuS/EB+MCF-EV123/cfm_flash.h b/board/BuS/EB+MCF-EV123/cfm_flash.h
deleted file mode 100644
index cc8cdbd1eb..0000000000
--- a/board/BuS/EB+MCF-EV123/cfm_flash.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Basic Flash Driver for Freescale MCF 5282 internal FLASH
- *
- * (C) Copyright 2005 BuS Elektronik GmbH & Co.KG <esw@bus-elektonik.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 __CFM_FLASH_H_
-#define __CFM_FLASH_H_
-
-#define FREESCALE_MANUFACT 0xFACFFACF
-#define FREESCALE_ID_MCF5281 0x5281
-#define FREESCALE_ID_MCF5282 0x5282
-
-extern void cfm_flash_print_info (flash_info_t * info);
-extern int cfm_flash_erase_sector (flash_info_t * info, int sector);
-extern void cfm_flash_init (flash_info_t * info);
-extern int cfm_flash_write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt);
-#ifdef CFG_FLASH_PROTECTION
-extern int cfm_flash_protect(flash_info_t * info,long sector,int prot);
-#endif
-
-#endif
diff --git a/board/BuS/EB+MCF-EV123/config.mk b/board/BuS/EB+MCF-EV123/config.mk
deleted file mode 100644
index 9fe2fc5dae..0000000000
--- a/board/BuS/EB+MCF-EV123/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (C) Copyright 2000-2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# Coldfire contribution by Bernhard Kuhn <bkuhn@metrowerks.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
-#
-
-sinclude $(TOPDIR)/board/$(BOARDDIR)/textbase.mk
-ifndef TEXT_BASE
-TEXT_BASE = 0xFE000000
-endif
diff --git a/board/BuS/EB+MCF-EV123/flash.c b/board/BuS/EB+MCF-EV123/flash.c
deleted file mode 100644
index 5e2647ddad..0000000000
--- a/board/BuS/EB+MCF-EV123/flash.c
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * (C) Copyright 2005
- * BuS Elektronik GmbH & Co.KG <esw@bus-elektonik.de>
- *
- * Based On
- * 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 <common.h>
-#include "cfm_flash.h"
-
-#define PHYS_FLASH_1 CFG_FLASH_BASE
-#define FLASH_BANK_SIZE 0x200000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf ("AMD: ");
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_LV160B & FLASH_TYPEMASK):
- printf ("AM29LV160B (16Bit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
- break;
- case FREESCALE_MANUFACT & FLASH_VENDMASK:
- cfm_flash_print_info (info);
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- puts (" Size: ");
- if ((info->size >> 20) > 0)
- {
- printf ("%ld MiB",info->size >> 20);
- }
- else
- {
- printf ("%ld KiB",info->size >> 10);
- }
- printf (" in %d Sectors\n", info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 4) == 0) {
- printf ("\n ");
- }
- printf ("%02d: %08lX%s ", i,info->start[i],
- info->protect[i] ? " P" : " ");
- }
- printf ("\n\n");
-}
-
-unsigned long flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- switch (i)
- {
- case 1:
- flash_info[i].flash_id =
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV160B & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- flashbase = PHYS_FLASH_1;
- for (j = 0; j < flash_info[i].sector_count; j++) {
- if (j == 0) {
- /* 1st is 16 KiB */
- flash_info[i].start[j] = flashbase;
- }
- if ((j >= 1) && (j <= 2)) {
- /* 2nd and 3rd are 8 KiB */
- flash_info[i].start[j] =
- flashbase + 0x4000 + 0x2000 * (j - 1);
- }
- if (j == 3) {
- /* 4th is 32 KiB */
- flash_info[i].start[j] = flashbase + 0x8000;
- }
- if ((j >= 4) && (j <= 34)) {
- /* rest is 256 KiB */
- flash_info[i].start[j] =
- flashbase + 0x10000 + 0x10000 * (j - 4);
- }
- }
- break;
- case 0:
- cfm_flash_init (&flash_info[i]);
- break;
- default:
- panic ("configured to many flash banks!\n");
- }
-
- size += flash_info[i].size;
- }
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + 0xffff, &flash_info[0]);
-
- return size;
-}
-
-#define CMD_READ_ARRAY 0x00F0
-#define CMD_UNLOCK1 0x00AA
-#define CMD_UNLOCK2 0x0055
-#define CMD_ERASE_SETUP 0x0080
-#define CMD_ERASE_CONFIRM 0x0030
-#define CMD_PROGRAM 0x00A0
-#define CMD_UNLOCK_BYPASS 0x0020
-
-#define MEM_FLASH_ADDR1 (*(volatile u16 *)(info->start[0] + (0x00000555<<1)))
-#define MEM_FLASH_ADDR2 (*(volatile u16 *)(info->start[0] + (0x000002AA<<1)))
-
-
-#define BIT_ERASE_DONE 0x0080
-#define BIT_RDY_MASK 0x0080
-#define BIT_PROGRAM_ERROR 0x0020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define ERR_READY -1
-
-int amd_flash_erase_sector(flash_info_t * info, int sector)
-{
- int state;
- ulong result;
-
- volatile u16 *addr =
- (volatile u16 *) (info->start[sector]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- state = 0;
- set_timer (0);
-
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer (0) > CFG_FLASH_ERASE_TOUT) {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- state = ERR_TIMOUT;
- }
-
- if (!state && (result & 0xFFFF) & BIT_ERASE_DONE)
- state = ERR_READY;
- }
- while (!state);
- if (state == ERR_READY)
- state = ERR_OK;
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- return state;
-}
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int iflag, cflag;
- int sector;
- int rc;
-
- rc = ERR_OK;
-
- if (info->flash_id == FLASH_UNKNOWN)
- {
- rc = ERR_UNKNOWN_FLASH_TYPE;
- } /* (info->flash_id == FLASH_UNKNOWN) */
-
- if ((s_first < 0) || (s_first > s_last) || s_last >= info->sector_count)
- {
- rc = ERR_INVAL;
- }
-
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- for (sector = s_first; (sector <= s_last) && (rc == ERR_OK); sector++) {
-
- if (info->protect[sector])
- {
- putc('P'); /* protected sector will not erase */
- }
- else
- {
- /* erase on unprotected sector */
- puts("E\b");
- switch (info->flash_id & FLASH_VENDMASK)
- {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- rc = amd_flash_erase_sector(info,sector);
- break;
- case (FREESCALE_MANUFACT & FLASH_VENDMASK):
- rc = cfm_flash_erase_sector(info,sector);
- break;
- default:
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
- putc('.');
- }
- }
- if (rc!=ERR_OK)
- {
- printf ("\n ");
- flash_perror (rc);
- }
- else
- {
- printf (" done\n");
- }
-
- udelay (10000); /* allow flash to settle - wait 10 ms */
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-volatile static int amd_write_word (flash_info_t * info, ulong dest, u16 data)
-{
- volatile u16 *addr;
- ulong result;
- int cflag, iflag;
- int state;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- addr = (volatile u16 *) dest;
-
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- set_timer (0);
-
- /* wait until flash is ready */
- state = 0;
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer (0) > CFG_FLASH_ERASE_TOUT) {
- state = ERR_TIMOUT;
- }
- if (!state && ((result & BIT_RDY_MASK) == (data & BIT_RDY_MASK)))
- state = ERR_READY;
-
- } while (!state);
-
- *addr = CMD_READ_ARRAY;
-
- if (state == ERR_READY)
- state = ERR_OK;
- if ((*addr != data) && (state != ERR_TIMOUT))
- state = ERR_PROG_ERROR;
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return state;
-}
-
-int amd_flash_write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- int rc;
- ulong dest;
- u16 data;
-
- rc = ERR_OK;
- if (addr & 1)
- {
- debug ("Byte alignment not supported\n");
- rc = ERR_ALIGN;
- }
- if (cnt & 1)
- {
- debug ("Byte transfer not supported\n");
- rc = ERR_ALIGN;
- }
-
- dest = addr;
- while ((cnt>=2) && (rc == ERR_OK))
- {
- data =*((volatile u16 *) src);
- rc=amd_write_word (info,dest,data);
- src +=2;
- dest +=2;
- cnt -=2;
- }
- return rc;
-}
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- int rc;
-
- switch (info->flash_id & FLASH_VENDMASK)
- {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- rc = amd_flash_write_buff(info,src,addr,cnt);
- break;
- case (FREESCALE_MANUFACT & FLASH_VENDMASK):
- rc = cfm_flash_write_buff(info,src,addr,cnt);
- break;
- default:
- rc = ERR_UNKNOWN_FLASH_VENDOR;
- }
- return rc;
-
-}
-int amd_flash_protect(flash_info_t * info,long sector,int prot)
-{
- int rc;
- rc= ERR_OK;
- if (prot)
- {
- info->protect[sector]=1;
- }
- else
- {
- info->protect[sector]=0;
- }
- return rc;
-}
-
-#ifdef CFG_FLASH_PROTECTION
-
-int flash_real_protect(flash_info_t * info,long sector,int prot)
-{
- int rc;
-
- switch (info->flash_id & FLASH_VENDMASK)
- {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- rc = amd_flash_protect(info,sector,prot);
- break;
- case (FREESCALE_MANUFACT & FLASH_VENDMASK):
- rc = cfm_flash_protect(info,sector,prot);
- break;
- default:
- rc = ERR_UNKNOWN_FLASH_VENDOR;
- }
- return rc;
-}
-
-#endif
diff --git a/board/BuS/EB+MCF-EV123/textbase.mk b/board/BuS/EB+MCF-EV123/textbase.mk
deleted file mode 100644
index ecde6ed8b4..0000000000
--- a/board/BuS/EB+MCF-EV123/textbase.mk
+++ /dev/null
@@ -1 +0,0 @@
-TEXT_BASE = 0xFFE00000
diff --git a/board/BuS/EB+MCF-EV123/u-boot.lds b/board/BuS/EB+MCF-EV123/u-boot.lds
deleted file mode 100644
index ac532451c9..0000000000
--- a/board/BuS/EB+MCF-EV123/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (C) Copyright 2000-2003
- * 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(m68k)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mcf52x2/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/string.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset; */
- 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_start = .;
- *(.got)
- __got_end = .;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- __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 = .;
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- . = ALIGN(4);
- _ebss = .;
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/LEOX/elpt860/Makefile b/board/LEOX/elpt860/Makefile
deleted file mode 100644
index 29286919c0..0000000000
--- a/board/LEOX/elpt860/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-
-#######################################################################
-#
-# Copyright (C) 2000, 2001, 2002, 2003
-# The LEOX team <team@leox.org>, http://www.leox.org
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# LEOX.org is about the development of free hardware and software resources
-# for system on chip.
-#
-# Description: U-Boot port on the LEOX's ELPT860 CPU board
-# ~~~~~~~~~~~
-#
-#######################################################################
-#
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/LEOX/elpt860/README.LEOX b/board/LEOX/elpt860/README.LEOX
deleted file mode 100644
index 9052b097b4..0000000000
--- a/board/LEOX/elpt860/README.LEOX
+++ /dev/null
@@ -1,424 +0,0 @@
-=============================================================================
-
- U-Boot port on the LEOX's ELPT860 CPU board
- -------------------------------------------
-
-LEOX.org is about the development of free hardware and software resources
- for system on chip.
-
-For more information, contact The LEOX team <team@leox.org>
-
-References:
-~~~~~~~~~~
- 1) Get the last stable release from denx.de:
- o ftp://ftp.denx.de/pub/u-boot/u-boot-0.2.0.tar.bz2
- 2) Get the current CVS snapshot:
- o cvs -d:pserver:anonymous@cvs.u-boot.sourceforge.net:/cvsroot/u-boot login
- o cvs -z6 -d:pserver:anonymous@cvs.u-boot.sourceforge.net:/cvsroot/u-boot co -P u-boot
-
-=============================================================================
-
-The ELPT860 CPU board has the following features:
-
-Processor: - MPC860T @ 50MHz
- - PowerPC Core
- - 65 MIPS
- - Caches: D->4KB, I->4KB
- - CPM: 4 SCCs, 2 SMCs
- - Ethernet 10/100
- - SPI, I2C, PCMCIA, Parallel
-
-CPU board: - DRAM: 16 MB
- - FLASH: 512 KB + (2 * 4 MB)
- - NVRAM: 128 KB
- - 1 Serial link
- - 2 Ethernet 10 BaseT Channels
-
-On power-up the processor jumps to the address of 0x02000100
-
-Thus, U-Boot is configured to reside in flash starting at the address of
-0x02001000. The environment space is located in NVRAM separately from
-U-Boot, at the address of 0x03000000.
-
-=============================================================================
-
- U-Boot test results
-
-=============================================================================
-
-
-##################################################
-# Operation on the serial console (SMC1)
-##############################
-
-U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
-
-CPU: XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
- *** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
-Board: ### No HW ID - assuming ELPT860
-DRAM: 16 MB
-FLASH: 512 kB
-In: serial
-Out: serial
-Err: serial
-Net: SCC ETHERNET
-
-Type "run nfsboot" to mount root filesystem over NFS
-
-Hit any key to stop autoboot: 0
-LEOX_elpt860: help
-askenv - get environment variables from stdin
-autoscr - run script from memory
-base - print or set address offset
-bdinfo - print Board Info structure
-bootm - boot application image from memory
-bootp - boot image via network using BootP/TFTP protocol
-bootd - boot default, i.e., run 'bootcmd'
-cmp - memory compare
-coninfo - print console devices and informations
-cp - memory copy
-crc32 - checksum calculation
-echo - echo args to console
-erase - erase FLASH memory
-flinfo - print FLASH memory information
-go - start application at address 'addr'
-help - print online help
-iminfo - print header information for application image
-loadb - load binary file over serial line (kermit mode)
-loads - load S-Record file over serial line
-loop - infinite loop on address range
-md - memory display
-mm - memory modify (auto-incrementing)
-mtest - simple RAM test
-mw - memory write (fill)
-nm - memory modify (constant address)
-printenv- print environment variables
-protect - enable or disable FLASH write protection
-rarpboot- boot image via network using RARP/TFTP protocol
-reset - Perform RESET of the CPU
-run - run commands in an environment variable
-saveenv - save environment variables to persistent storage
-setenv - set environment variables
-sleep - delay execution for some time
-tftpboot- boot image via network using TFTP protocol
- and env variables ipaddr and serverip
-version - print monitor version
-? - alias for 'help'
-
-##################################################
-# Environment Variables (CFG_ENV_IS_IN_NVRAM)
-##############################
-
-LEOX_elpt860: printenv
-bootdelay=5
-loads_echo=1
-baudrate=9600
-stdin=serial
-stdout=serial
-stderr=serial
-ethaddr=00:03:ca:00:64:df
-ipaddr=192.168.0.30
-netmask=255.255.255.0
-serverip=192.168.0.1
-nfsserverip=192.168.0.1
-preboot=echo;echo Type "run nfsboot" to mount root filesystem over NFS;echo
-gatewayip=192.168.0.1
-ramargs=setenv bootargs root=/dev/ram rw
-rootargs=setenv rootpath /tftp/${ipaddr}
-nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${nfsserverip}:${rootpath}
-addip=setenv bootargs ${bootargs} ip=${ipaddr}:${nfsserverip}:${gatewayip}:${netmask}:${hostname}:eth0:
-ramboot=tftp 400000 /home/leox/pMulti;run ramargs;bootm
-nfsboot=tftp 400000 /home/leox/uImage;run rootargs;run nfsargs;run addip;bootm
-bootcmd=run ramboot
-clocks_in_mhz=1
-
-Environment size: 730/16380 bytes
-
-##################################################
-# Flash Memory Information
-##############################
-
-LEOX_elpt860: flinfo
-
-Bank # 1: AMD AM29F040 (4 Mbits)
- Size: 512 KB in 8 Sectors
- Sector Start Addresses:
- 02000000 (RO) 02010000 (RO) 02020000 (RO) 02030000 (RO) 02040000
- 02050000 02060000 02070000
-
-##################################################
-# Board Information Structure
-##############################
-
-LEOX_elpt860: bdinfo
-memstart = 0x00000000
-memsize = 0x01000000
-flashstart = 0x02000000
-flashsize = 0x00080000
-flashoffset = 0x00030000
-sramstart = 0x00000000
-sramsize = 0x00000000
-immr_base = 0xFF000000
-bootflags = 0x00000001
-intfreq = 50 MHz
-busfreq = 50 MHz
-ethaddr = 00:03:ca:00:64:df
-IP addr = 192.168.0.30
-baudrate = 9600 bps
-
-##################################################
-# Image Download and run over serial port
-# hello_world (S-Record image)
-# ===> 1) Enter "loads" command into U-Boot monitor
-# ===> 2) From TeraTerm's bar menu, Select 'File/Send file...'
-# Then select 'hello_world.srec' with the file browser
-##############################
-
-U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
-
-CPU: XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
- *** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
-Board: ### No HW ID - assuming ELPT860
-DRAM: 16 MB
-FLASH: 512 kB
-In: serial
-Out: serial
-Err: serial
-Net: SCC ETHERNET
-
-Type "run nfsboot" to mount root filesystem over NFS
-
-Hit any key to stop autoboot: 0
-LEOX_elpt860: loads
-## Ready for S-Record download ...
-S804040004F3050154000501709905014C000501388D
-## First Load Addr = 0x00040000
-## Last Load Addr = 0x0005018B
-## Total Size = 0x0001018C = 65932 Bytes
-## Start Addr = 0x00040004
-LEOX_elpt860: go 40004 This is a test !!!
-## Starting application at 0x00040004 ...
-Hello World
-argc = 6
-argv[0] = "40004"
-argv[1] = "This"
-argv[2] = "is"
-argv[3] = "a"
-argv[4] = "test"
-argv[5] = "!!!"
-argv[6] = "<NULL>"
-Hit any key to exit ...
-
-## Application terminated, rc = 0x0
-
-##################################################
-# Image download and run over ethernet interface
-# Linux-2.4.4 (uImage) + Root filesystem mounted over NFS
-##############################
-
-U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
-
-CPU: XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
- *** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
-Board: ### No HW ID - assuming ELPT860
-DRAM: 16 MB
-FLASH: 512 kB
-In: serial
-Out: serial
-Err: serial
-Net: SCC ETHERNET
-
-Type "run nfsboot" to mount root filesystem over NFS
-
-Hit any key to stop autoboot: 0
-LEOX_elpt860: run nfsboot
-ARP broadcast 1
-TFTP from server 192.168.0.1; our IP address is 192.168.0.30
-Filename '/home/leox/uImage'.
-Load address: 0x400000
-Loading: #################################################################
- #############################
-done
-Bytes transferred = 477294 (7486e hex)
-## Booting image at 00400000 ...
- Image Name: Linux-2.4.4
- Image Type: PowerPC Linux Kernel Image (gzip compressed)
- Data Size: 477230 Bytes = 466 kB = 0 MB
- Load Address: 00000000
- Entry Point: 00000000
- Verifying Checksum ... OK
- Uncompressing Kernel Image ... OK
-Linux version 2.4.4-rthal5 (leox@p5ak6650) (gcc version 2.95.3 20010315 (release/MontaVista)) #1 Wed Jul 3 10:23:53 CEST 2002
-On node 0 totalpages: 4096
-zone(0): 4096 pages.
-zone(1): 0 pages.
-zone(2): 0 pages.
-Kernel command line: root=/dev/nfs rw nfsroot=192.168.0.1:/tftp/192.168.0.30 ip=192.168.0.30:192.168.0.1:192.168.0.1:255.255.255.0::eth0:
-rtsched version <20010618.1050.24>
-Decrementer Frequency: 3125000
-Warning: real time clock seems stuck!
-Calibrating delay loop... 49.76 BogoMIPS
-Memory: 14720k available (928k kernel code, 384k data, 44k init, 0k highmem)
-Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes)
-Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
-Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
-Inode-cache hash table entries: 1024 (order: 1, 8192 bytes)
-POSIX conformance testing by UNIFIX
-Linux NET4.0 for Linux 2.4
-Based upon Swansea University Computer Society NET3.039
-Starting kswapd v1.8
-CPM UART driver version 0.03
-ttyS0 on SMC1 at 0x0280, BRG1
-block: queued sectors max/low 9701kB/3233kB, 64 slots per queue
-RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
-eth0: CPM ENET Version 0.2 on SCC1, 00:03:ca:00:64:df
-NET4: Linux TCP/IP 1.0 for NET4.0
-IP Protocols: ICMP, UDP, TCP
-IP: routing cache hash table of 512 buckets, 4Kbytes
-TCP: Hash tables configured (established 1024 bind 1024)
-NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
-Looking up port of RPC 100003/2 on 192.168.0.1
-Looking up port of RPC 100005/2 on 192.168.0.1
-VFS: Mounted root (nfs filesystem).
-Freeing unused kernel memory: 44k init
-INIT: version 2.78 booting
- Welcome to DENX Embedded Linux Environment
- Press 'I' to enter interactive startup.
-Mounting proc filesystem: [ OK ]
-Configuring kernel parameters: [ OK ]
-Cannot access the Hardware Clock via any known method.
-Use the --debug option to see the details of our search for an access method.
-Setting clock : Wed Dec 31 19:00:11 EST 1969 [ OK ]
-Activating swap partitions: [ OK ]
-Setting hostname 192.168.0.30: [ OK ]
-Finding module dependencies:
-[ OK ]
-Checking filesystems
-Checking all file systems.
-[ OK ]
-Mounting local filesystems: [ OK ]
-Enabling swap space: [ OK ]
-INIT: Entering runlevel: 3
-Entering non-interactive startup
-Starting system logger: [ OK ]
-Starting kernel logger: [ OK ]
-Starting xinetd: [ OK ]
-
-192 login: root
-Last login: Wed Dec 31 19:00:41 on ttyS0
-bash-2.04#
-
-##################################################
-# Image download and run over ethernet interface
-# Linux-2.4.4 + Root filesystem mounted from RAM (pMulti)
-##############################
-
-U-Boot 0.2.2 (Jan 19 2003 - 11:08:39)
-
-CPU: XPC860xxZPnnB at 50 MHz: 4 kB I-Cache 4 kB D-Cache FEC present
- *** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
-Board: ### No HW ID - assuming ELPT860
-DRAM: 16 MB
-FLASH: 512 kB
-In: serial
-Out: serial
-Err: serial
-Net: SCC ETHERNET
-
-Type "run nfsboot" to mount root filesystem over NFS
-
-Hit any key to stop autoboot: 0
-LEOX_elpt860: run ramboot
-ARP broadcast 1
-TFTP from server 192.168.0.1; our IP address is 192.168.0.30
-Filename '/home/leox/pMulti'.
-Load address: 0x400000
-Loading: #################################################################
- #################################################################
- #################################################################
- #################################################################
- #################################################################
- ########################################################
-done
-Bytes transferred = 1947816 (1db8a8 hex)
-## Booting image at 00400000 ...
- Image Name: linux-2.4.4-2002-03-21 Multiboot
- Image Type: PowerPC Linux Multi-File Image (gzip compressed)
- Data Size: 1947752 Bytes = 1902 kB = 1 MB
- Load Address: 00000000
- Entry Point: 00000000
- Contents:
- Image 0: 477230 Bytes = 466 kB = 0 MB
- Image 1: 1470508 Bytes = 1436 kB = 1 MB
- Verifying Checksum ... OK
- Uncompressing Multi-File Image ... OK
- Loading Ramdisk to 00e44000, end 00fab02c ... OK
-Linux version 2.4.4-rthal5 (leox@p5ak6650) (gcc version 2.95.3 20010315 (release/MontaVista)) #1 Wed Jul 3 10:23:53 CEST 2002
-On node 0 totalpages: 4096
-zone(0): 4096 pages.
-zone(1): 0 pages.
-zone(2): 0 pages.
-Kernel command line: root=/dev/ram rw
-rtsched version <20010618.1050.24>
-Decrementer Frequency: 3125000
-Warning: real time clock seems stuck!
-Calibrating delay loop... 49.76 BogoMIPS
-Memory: 13280k available (928k kernel code, 384k data, 44k init, 0k highmem)
-Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes)
-Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
-Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
-Inode-cache hash table entries: 1024 (order: 1, 8192 bytes)
-POSIX conformance testing by UNIFIX
-Linux NET4.0 for Linux 2.4
-Based upon Swansea University Computer Society NET3.039
-Starting kswapd v1.8
-CPM UART driver version 0.03
-ttyS0 on SMC1 at 0x0280, BRG1
-block: queued sectors max/low 8741kB/2913kB, 64 slots per queue
-RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
-eth0: CPM ENET Version 0.2 on SCC1, 00:03:ca:00:64:df
-RAMDISK: Compressed image found at block 0
-Freeing initrd memory: 1436k freed
-NET4: Linux TCP/IP 1.0 for NET4.0
-IP Protocols: ICMP, UDP, TCP
-IP: routing cache hash table of 512 buckets, 4Kbytes
-TCP: Hash tables configured (established 1024 bind 1024)
-IP-Config: Incomplete network configuration information.
-NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
-VFS: Mounted root (ext2 filesystem).
-Freeing unused kernel memory: 44k iné
-init started: BusyBox v0.60.2 (2002.07.01-12:06+0000) multi-call Configuring hostname
-Configuring lo...
-Configuring eth0...
-Configuring Gateway...
-
-Please press Enter to activate this console.
-
-ELPT860 login: root
-Password:
-Welcome to Linux-2.4.4 for ELPT CPU board (MPC860T @ 50MHz)
-
- a8888b.
- d888888b.
- 8P"YP"Y88
- _ _ 8|o||o|88
- | | |_| 8' .88
- | | _ ____ _ _ _ _ 8`._.' Y8.
- | | | | _ \| | | |\ \/ / d/ `8b.
- | |___ | | | | | |_| |/ \ .dP . Y8b.
- |_____||_|_| |_|\____|\_/\_/ d8:' " `::88b.
- d8" `Y88b
- :8P ' :888
- 8a. : _a88P
- ._/"Yaa_ : .| 88P|
- \ YP" `| 8P `.
- / \._____.d| .'
- `--..__)888888P`._.'
-login[21]: root login on `ttyS0'
-
-
-
-BusyBox v0.60.3 (2002.07.20-10:39+0000) Built-in shell (ash)
-Enter 'help' for a list of built-in commands.
-
-root@ELPT860:~ #
diff --git a/board/LEOX/elpt860/config.mk b/board/LEOX/elpt860/config.mk
deleted file mode 100644
index defc360800..0000000000
--- a/board/LEOX/elpt860/config.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-#######################################################################
-#
-# Copyright (C) 2000, 2001, 2002, 2003
-# The LEOX team <team@leox.org>, http://www.leox.org
-#
-# LEOX.org is about the development of free hardware and software resources
-# for system on chip.
-#
-# Description: U-Boot port on the LEOX's ELPT860 CPU board
-# ~~~~~~~~~~~
-#
-#######################################################################
-#
-# 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
-#
-#######################################################################
-
-#
-# ELPT860 board
-#
-
-TEXT_BASE = 0x02000000
-#TEXT_BASE = 0x00FB0000
diff --git a/board/LEOX/elpt860/elpt860.c b/board/LEOX/elpt860/elpt860.c
deleted file mode 100644
index 775db738e6..0000000000
--- a/board/LEOX/elpt860/elpt860.c
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
-**=====================================================================
-**
-** Copyright (C) 2000, 2001, 2002, 2003
-** The LEOX team <team@leox.org>, http://www.leox.org
-**
-** LEOX.org is about the development of free hardware and software resources
-** for system on chip.
-**
-** Description: U-Boot port on the LEOX's ELPT860 CPU board
-** ~~~~~~~~~~~
-**
-**=====================================================================
-**
-** 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 1: In this file, you have to provide the following functions:
-** ------
-** int board_early_init_f(void)
-** int checkboard(void)
-** long int initdram(int board_type)
-** called from 'board_init_f()' into 'common/board.c'
-**
-** void reset_phy(void)
-** called from 'board_init_r()' into 'common/board.c'
-*/
-
-#include <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint init_sdram_table[] = {
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x0FFCCC04, 0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04,
- 0xFFFFFC04, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0xFFFFFC04, 0xFFFFFC04, 0x0FFC3C04, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC04, 0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04, /* last */
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04, 0x0FFC3C04,
- 0xFFFFFC04, 0xFFFFFC04, 0x0FFFFC04, 0xFFFFFC04, /* last */
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC04, 0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC34, 0x0FAC0C34,
- 0xFFFFFC05, 0xFFFFFC04, 0x0FFCFC04, 0xFFFFFC05, /* last */
-};
-
-const uint sdram_table[] = {
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC04, 0x00AF3C04,
- 0xFF0FFC00, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x0FFCCC04, 0xFFAFFC05, 0xFFAFFC05, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC04, 0x00AF3C04,
- 0xF00FFC00, 0xF00FFC00, 0xF00FFC00, 0xFF0FFC00,
- 0x0FFCCC04, 0xFFAFFC05, 0xFFAFFC04, 0xFFAFFC04,
- 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, /* last */
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC04, 0x00AF0C00,
- 0xFF0FFC04, 0x0FFCCC04, 0xFFAFFC05, /* last */
- _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x0F0FFC24, 0x0F0CFC04, 0xFF0FFC00, 0x00AF0C00,
- 0xF00FFC00, 0xF00FFC00, 0xF00FFC04, 0x0FFCCC04,
- 0xFFAFFC04, 0xFFAFFC05, 0xFFAFFC04, 0xFFAFFC04,
- 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, /* last */
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x0FFC3C04, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC05, 0xFFFFFC04, 0xFFFFFC05, _NOT_USED_,
- 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, 0xFFAFFC04, /* last */
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x0FFFFC34, 0x0FAC0C34, 0xFFFFFC05, 0xFFAFFC04, /* last */
-};
-
-/* ------------------------------------------------------------------------- */
-
-#define CFG_PC4 0x0800
-
-#define CFG_DS1 CFG_PC4
-
-/*
- * Very early board init code (fpga boot, etc.)
- */
-int board_early_init_f (void)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
-
- /*
- * Light up the red led on ELPT860 pcb (DS1) (PCDAT)
- */
- immr->im_ioport.iop_pcdat &= ~CFG_DS1; /* PCDAT (DS1 = 0) */
- immr->im_ioport.iop_pcpar &= ~CFG_DS1; /* PCPAR (0=general purpose I/O) */
- immr->im_ioport.iop_pcdir |= CFG_DS1; /* PCDIR (I/O: 0=input, 1=output) */
-
- return (0); /* success */
-}
-
-/*
- * Check Board Identity:
- *
- * Test ELPT860 ID string
- *
- * Return 1 if no second DRAM bank, otherwise returns 0
- */
-
-int checkboard (void)
-{
- char *s = getenv ("serial#");
-
- if (!s || strncmp (s, "ELPT860", 7))
- printf ("### No HW ID - assuming ELPT860\n");
-
- return (0); /* success */
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size8, size9;
- long int size_b0 = 0;
-
- /*
- * This sequence initializes SDRAM chips on ELPT860 board
- */
- upmconfig (UPMA, (uint *) init_sdram_table,
- sizeof (init_sdram_table) / sizeof (uint));
-
- memctl->memc_mptpr = 0x0200;
- memctl->memc_mamr = 0x18002111;
-
- memctl->memc_mar = 0x00000088;
- memctl->memc_mcr = 0x80002000; /* CS1: SDRAM bank 0 */
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_8K;
-
- /*
- * The following value is used as an address (i.e. opcode) for
- * the LOAD MODE REGISTER COMMAND during SDRAM initialisation. If
- * the port size is 32bit the SDRAM does NOT "see" the lower two
- * address lines, i.e. mar=0x00000088 -> opcode=0x00000022 for
- * MICRON SDRAMs:
- * -> 0 00 010 0 010
- * | | | | +- Burst Length = 4
- * | | | +----- Burst Type = Sequential
- * | | +------- CAS Latency = 2
- * | +----------- Operating Mode = Standard
- * +-------------- Write Burst Mode = Programmed Burst Length
- */
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller banks 2 and 3 to the SDRAM banks 2 and 3 at
- * preliminary addresses - these have to be modified after the
- * SDRAM size has been determined.
- */
- memctl->memc_or1 = CFG_OR1_PRELIM;
- memctl->memc_br1 = CFG_BR1_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80002105; /* CS1: SDRAM bank 0 */
- udelay (1);
- memctl->memc_mcr = 0x80002230; /* CS1: SDRAM bank 0 - execute twice */
- udelay (1);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL,
- SDRAM_BASE1_PRELIM, SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL,
- SDRAM_BASE1_PRELIM, SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size_b0 = size9;
- /* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */
- } else { /* back to 8 columns */
-
- size_b0 = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
- /* debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20); */
- }
-
- udelay (1000);
-
- /*
- * Adjust refresh rate depending on SDRAM type, both banks
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if (size_b0 < 0x02000000) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
- udelay (1000);
- }
-
- /*
- * Final mapping: map bigger bank first
- */
- memctl->memc_or1 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br1 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- {
- unsigned long reg;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
- }
-
- udelay (10000);
-
- return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int
-dram_size (long int mamr_value, long int *base, long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size (base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#define CFG_PA1 0x4000
-#define CFG_PA2 0x2000
-
-#define CFG_LBKs (CFG_PA2 | CFG_PA1)
-
-void reset_phy (void)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
-
- /*
- * Ensure LBK LXT901 ethernet 1 & 2 = 0 ... for normal loopback in effect
- * and no AUI loopback
- */
- immr->im_ioport.iop_padat &= ~CFG_LBKs; /* PADAT (LBK eth 1&2 = 0) */
- immr->im_ioport.iop_papar &= ~CFG_LBKs; /* PAPAR (0=general purpose I/O) */
- immr->im_ioport.iop_padir |= CFG_LBKs; /* PADIR (I/O: 0=input, 1=output) */
-}
diff --git a/board/LEOX/elpt860/flash.c b/board/LEOX/elpt860/flash.c
deleted file mode 100644
index c1b3b8513e..0000000000
--- a/board/LEOX/elpt860/flash.c
+++ /dev/null
@@ -1,615 +0,0 @@
-/*
-**=====================================================================
-**
-** Copyright (C) 2000, 2001, 2002, 2003
-** The LEOX team <team@leox.org>, http://www.leox.org
-**
-** LEOX.org is about the development of free hardware and software resources
-** for system on chip.
-**
-** Description: U-Boot port on the LEOX's ELPT860 CPU board
-** ~~~~~~~~~~~
-**
-**=====================================================================
-**
-** 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 1: In this file, you have to provide the following variable:
-** ------
-** flash_info_t flash_info[CFG_MAX_FLASH_BANKS]
-** 'flash_info_t' structure is defined into 'include/flash.h'
-** and defined as extern into 'common/cmd_flash.c'
-**
-** Note 2: In this file, you have to provide the following functions:
-** ------
-** unsigned long flash_init(void)
-** called from 'board_init_r()' into 'common/board.c'
-**
-** void flash_print_info(flash_info_t *info)
-** called from 'do_flinfo()' into 'common/cmd_flash.c'
-**
-** int flash_erase(flash_info_t *info,
-** int s_first,
-** int s_last)
-** called from 'do_flerase()' & 'flash_sect_erase()' into 'common/cmd_flash.c'
-**
-** int write_buff (flash_info_t *info,
-** uchar *src,
-** ulong addr,
-** ulong cnt)
-** called from 'flash_write()' into 'common/cmd_flash.c'
-*/
-
-#include <common.h>
-#include <mpc8xx.h>
-
-
-#ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Internal Functions
- */
-static void flash_get_offsets (ulong base, flash_info_t *info);
-static ulong flash_get_size (volatile unsigned char *addr, flash_info_t *info);
-
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static int write_byte (flash_info_t *info, ulong dest, uchar data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long
-flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i)
- {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size ((volatile unsigned char *)FLASH_BASE0_PRELIM,
- &flash_info[0]);
-
- if ( flash_info[0].flash_id == FLASH_UNKNOWN )
- {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_PS_8 | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size ((volatile unsigned char *)CFG_FLASH_BASE,
- &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE-1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void
-flash_get_offsets (ulong base,
- flash_info_t *info)
-{
- int i;
-
-#define SECTOR_64KB 0x00010000
-
- /* set up sector start adress table */
- for (i = 0; i < info->sector_count; i++)
- {
- info->start[i] = base + (i * SECTOR_64KB);
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void
-flash_print_info (flash_info_t *info)
-{
- int i;
-
- if ( info->flash_id == FLASH_UNKNOWN )
- {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch ( info->flash_id & FLASH_VENDMASK )
- {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_STM: printf ("STM (Thomson) "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch ( info->flash_id & FLASH_TYPEMASK )
- {
- case FLASH_AM040: printf ("AM29F040 (4 Mbits)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i)
- {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong
-flash_get_size (volatile unsigned char *addr,
- flash_info_t *info)
-{
- short i;
- uchar value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x90;
-
- value = addr[0];
-
- switch ( value )
- {
- /* case AMD_MANUFACT: */
- case 0x01:
- info->flash_id = FLASH_MAN_AMD;
- break;
- /* case FUJ_MANUFACT: */
- case 0x04:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- /* case STM_MANUFACT: */
- case 0x20:
- info->flash_id = FLASH_MAN_STM;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch ( value )
- {
- case STM_ID_F040B:
- case AMD_ID_F040B:
- info->flash_id += FLASH_AM040; /* 4 Mbits = 512k * 8 */
- info->sector_count = 8;
- info->size = 0x00080000;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start adress table */
- for (i = 0; i < info->sector_count; i++)
- {
- info->start[i] = base + (i * 0x00010000);
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++)
- {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if ( info->flash_id != FLASH_UNKNOWN )
- {
- addr = (volatile unsigned char *)info->start[0];
-
- *addr = 0xF0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int
-flash_erase (flash_info_t *info,
- int s_first,
- int s_last)
-{
- volatile unsigned char *addr = (volatile unsigned char *)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ( (s_first < 0) || (s_first > s_last) )
- {
- if ( info->flash_id == FLASH_UNKNOWN )
- {
- printf ("- missing\n");
- }
- else
- {
- printf ("- no sectors to erase\n");
- }
- return ( 1 );
- }
-
- if ( (info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP) )
- {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return ( 1 );
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect)
- {
- if ( info->protect[sect] )
- {
- prot++;
- }
- }
-
- if ( prot )
- {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- }
- else
- {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x80;
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++)
- {
- if (info->protect[sect] == 0) /* not protected */
- {
- addr = (volatile unsigned char *)(info->start[sect]);
- addr[0] = 0x30;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if ( flag )
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if ( l_sect < 0 )
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (volatile unsigned char *)(info->start[l_sect]);
- while ( (addr[0] & 0x80) != 0x80 )
- {
- if ( (now = get_timer(start)) > CFG_FLASH_ERASE_TOUT )
- {
- printf ("Timeout\n");
- return ( 1 );
- }
- /* show that we're waiting */
- if ( (now - last) > 1000 ) /* every second */
- {
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned char *)info->start[0];
- addr[0] = 0xF0; /* reset bank */
-
- printf (" done\n");
-
- return ( 0 );
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int
-write_buff (flash_info_t *info,
- uchar *src,
- ulong addr,
- ulong cnt)
-{
- ulong cp, wp, data;
- uchar bdata;
- int i, l, rc;
-
- if ( (info->flash_id & FLASH_TYPEMASK) == FLASH_AM040 )
- {
- /* Width of the data bus: 8 bits */
-
- wp = addr;
-
- while ( cnt )
- {
- bdata = *src++;
-
- if ( (rc = write_byte(info, wp, bdata)) != 0 )
- {
- return (rc);
- }
-
- ++wp;
- --cnt;
- }
-
- return ( 0 );
- }
- else
- {
- /* Width of the data bus: 32 bits */
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ( (l = addr - wp) != 0 )
- {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp)
- {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i)
- {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp)
- {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ( (rc = write_word(info, wp, data)) != 0 )
- {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while ( cnt >= 4 )
- {
- data = 0;
- for (i=0; i<4; ++i)
- {
- data = (data << 8) | *src++;
- }
- if ( (rc = write_word(info, wp, data)) != 0 )
- {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if ( cnt == 0 )
- {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp)
- {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp)
- {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
- }
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int
-write_word (flash_info_t *info,
- ulong dest,
- ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ( (*((vu_long *)dest) & data) != data )
- {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if ( flag )
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ( (*((vu_long *)dest) & 0x00800080) != (data & 0x00800080) )
- {
- if ( get_timer(start) > CFG_FLASH_WRITE_TOUT )
- {
- return (1);
- }
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a byte to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int
-write_byte (flash_info_t *info,
- ulong dest,
- uchar data)
-{
- volatile unsigned char *addr = (volatile unsigned char *)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ( (*((volatile unsigned char *)dest) & data) != data )
- {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0xA0;
-
- *((volatile unsigned char *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if ( flag )
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ( (*((volatile unsigned char *)dest) & 0x80) != (data & 0x80) )
- {
- if ( get_timer(start) > CFG_FLASH_WRITE_TOUT )
- {
- return (1);
- }
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/LEOX/elpt860/u-boot.lds b/board/LEOX/elpt860/u-boot.lds
deleted file mode 100644
index 214752d9c0..0000000000
--- a/board/LEOX/elpt860/u-boot.lds
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
-**=====================================================================
-**
-** Copyright (C) 2000, 2001, 2002, 2003
-** The LEOX team <team@leox.org>, http://www.leox.org
-**
-** LEOX.org is about the development of free hardware and software resources
-** for system on chip.
-**
-** Description: U-Boot port on the LEOX's ELPT860 CPU board
-** ~~~~~~~~~~~
-**
-**=====================================================================
-**
-** 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_generic/string.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/extable.o (.text)
- lib_ppc/time.o (.text)
- lib_ppc/ticks.o (.text)
-
- . = env_offset;
- common/environment.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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/LEOX/elpt860/u-boot.lds.debug b/board/LEOX/elpt860/u-boot.lds.debug
deleted file mode 100644
index 17f99eb840..0000000000
--- a/board/LEOX/elpt860/u-boot.lds.debug
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
-**=====================================================================
-**
-** Copyright (C) 2000, 2001, 2002, 2003
-** The LEOX team <team@leox.org>, http://www.leox.org
-**
-** LEOX.org is about the development of free hardware and software resources
-** for system on chip.
-**
-** Description: U-Boot port on the LEOX's ELPT860 CPU board
-** ~~~~~~~~~~~
-**
-**=====================================================================
-**
-** 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/MAI/AmigaOneG3SE/AmigaOneG3SE.c b/board/MAI/AmigaOneG3SE/AmigaOneG3SE.c
deleted file mode 100644
index 40f41c7818..0000000000
--- a/board/MAI/AmigaOneG3SE/AmigaOneG3SE.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * (C) Copyright 2002
- * Hyperion Entertainment, ThomasF@hyperion-entertainment.com
- * (C) Copyright 2006
- * 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 <common.h>
-#include <command.h>
-#include <pci.h>
-#include "articiaS.h"
-#include "memio.h"
-#include "via686.h"
-
-__asm(" .globl send_kb \n
- send_kb: \n
- lis r9, 0xfe00 \n
- \n
- li r4, 0x10 # retries \n
- mtctr r4 \n
- \n
- idle: \n
- lbz r4, 0x64(r9) \n
- andi. r4, r4, 0x02 \n
- bne idle \n
- \n
- ready: \n
- stb r3, 0x60(r9) \n
- \n
- check: \n
- lbz r4, 0x64(r9) \n
- andi. r4, r4, 0x01 \n
- beq check \n
- \n
- lbz r4, 0x60(r9) \n
- cmpwi r4, 0xfa \n
- beq done \n
- \n
- bdnz idle \n
- \n
- li r3, 0 \n
- blr \n
- \n
- done: \n
- li r3, 1 \n
- blr \n
- \n
- .globl test_kb \n
- test_kb: \n
- mflr r10 \n
- li r3, 0xed \n
- bl send_kb \n
- li r3, 0x01 \n
- bl send_kb \n
- mtlr r10 \n
- blr \n
-");
-
-
-int checkboard (void)
-{
- printf ("Board: AmigaOneG3SE\n");
- return 0;
-}
-
-long initdram (int board_type)
-{
- return articiaS_ram_init ();
-}
-
-
-void after_reloc (ulong dest_addr, gd_t *gd)
-{
- board_init_r (gd, dest_addr);
-}
-
-
-int misc_init_r (void)
-{
- extern pci_dev_t video_dev;
- extern void drv_video_init (void);
-
- if (video_dev != ~0)
- drv_video_init ();
-
- return (0);
-}
-
-
-void pci_init_board (void)
-{
-#ifndef CONFIG_RAMBOOT
- articiaS_pci_init ();
-#endif
-}
diff --git a/board/MAI/AmigaOneG3SE/Makefile b/board/MAI/AmigaOneG3SE/Makefile
deleted file mode 100644
index fa28d3b495..0000000000
--- a/board/MAI/AmigaOneG3SE/Makefile
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../menu)
-$(shell mkdir -p $(obj)../bios_emulator)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o articiaS.o flash.o serial.o smbus.o articiaS_pci.o \
- via686.o i8259.o ../bios_emulator/x86interface.o \
- ../bios_emulator/bios.o ../bios_emulator/glue.o \
- interrupts.o ps2kbd.o video.o usb_uhci.o enet.o \
- ../menu/cmd_menu.o cmd_boota.o nvram.o
-
-SOBJS = board_asm_init.o memio.o
-
-EMUDIR = ../bios_emulator/scitech/src/x86emu/
-EMUOBJ = $(EMUDIR)decode.o $(EMUDIR)ops2.o $(EMUDIR)fpu.o $(EMUDIR)prim_ops.o \
- $(EMUDIR)ops.o $(EMUDIR)sys.o
-EMUSRC = $(EMUOBJ:.o=.c)
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-EMUOBJ := $(addprefix $(obj),$(EMUOBJ))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS) $(EMUSRC)
- make $(obj)libx86emu.a -C ../bios_emulator/scitech/src/x86emu -f makefile.uboot CROSS_COMPILE=$(CROSS_COMPILE)
- -rm $(LIB)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) $(EMUOBJ)
-
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/MAI/AmigaOneG3SE/articiaS.c b/board/MAI/AmigaOneG3SE/articiaS.c
deleted file mode 100644
index 3901b80c11..0000000000
--- a/board/MAI/AmigaOneG3SE/articiaS.c
+++ /dev/null
@@ -1,704 +0,0 @@
-/*
- * (C) Copyright 2002
- * Hyperion Entertainment, ThomasF@hyperion-entertainment.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
- */
-
-#include <common.h>
-#include <pci.h>
-#include <asm/processor.h>
-#include "memio.h"
-#include "articiaS.h"
-#include "smbus.h"
-#include "via686.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#undef DEBUG
-
-struct dimm_bank {
- uint8 used; /* Bank is populated */
- uint32 rows; /* Number of row addresses */
- uint32 columns; /* Number of column addresses */
- uint8 registered; /* SIMM is registered */
- uint8 ecc; /* SIMM has ecc */
- uint8 burst_len; /* Supported burst lengths */
- uint32 cas_lat; /* Supported CAS latencies */
- uint32 cas_used; /* CAS to use (not set by user) */
- uint32 trcd; /* RAS to CAS latency */
- uint32 trp; /* Precharge latency */
- uint32 tclk_hi; /* SDRAM cycle time (highest CAS latency) */
- uint32 tclk_2hi; /* SDRAM second highest CAS latency */
- uint32 size; /* Size of bank in bytes */
- uint8 auto_refresh; /* Module supports auto refresh */
- uint32 refresh_time; /* Refresh time (in ns) */
-};
-
-
-/*
-** Based in part on the evb64260 code
-*/
-
-/*
- * translate ns.ns/10 coding of SPD timing values
- * into 10 ps unit values
- */
-static inline unsigned short NS10to10PS (unsigned char spd_byte)
-{
- unsigned short ns, ns10;
-
- /* isolate upper nibble */
- ns = (spd_byte >> 4) & 0x0F;
- /* isolate lower nibble */
- ns10 = (spd_byte & 0x0F);
-
- return (ns * 100 + ns10 * 10);
-}
-
-/*
- * translate ns coding of SPD timing values
- * into 10 ps unit values
- */
-static inline unsigned short NSto10PS (unsigned char spd_byte)
-{
- return (spd_byte * 100);
-}
-
-
-long detect_sdram (uint8 * rom, int dimmNum, struct dimm_bank *banks)
-{
- int dimm_address = (dimmNum == 0) ? SM_DIMM0_ADDR : SM_DIMM1_ADDR;
- uint32 busclock = gd->bus_clk;
- uint32 memclock = busclock;
- uint32 tmemclock = 1000000000 / (memclock / 100);
- uint32 datawidth;
-
- if (sm_get_data (rom, dimm_address) == 0) {
- /* Nothing in slot, make both banks empty */
- debug ("Slot %d: vacant\n", dimmNum);
- banks[0].used = 0;
- banks[1].used = 0;
- return 0;
- }
-
- if (rom[2] != 0x04) {
- debug ("Slot %d: No SDRAM\n", dimmNum);
- banks[0].used = 0;
- banks[1].used = 0;
- return 0;
- }
-
- /* Determine number of banks/rows */
- if (rom[5] == 1) {
- banks[0].used = 1;
- banks[1].used = 0;
- } else {
- banks[0].used = 1;
- banks[1].used = 1;
- }
-
- /* Determine number of row addresses */
- if (rom[3] & 0xf0) {
- /* Different banks sizes */
- banks[0].rows = rom[3] & 0x0f;
- banks[1].rows = (rom[3] & 0xf0) >> 4;
- } else {
- /* Equal sized banks */
- banks[0].rows = rom[3] & 0x0f;
- banks[1].rows = banks[0].rows;
- }
-
- /* Determine number of column addresses */
- if (rom[4] & 0xf0) {
- /* Different bank sizes */
- banks[0].columns = rom[4] & 0x0f;
- banks[1].columns = (rom[4] & 0xf0) >> 4;
- } else {
- banks[0].columns = rom[4] & 0x0f;
- banks[1].columns = banks[0].columns;
- }
-
- /* Check Jedec revision, and modify row/column accordingly */
- if (rom[62] > 0x10) {
- if (banks[0].rows <= 3)
- banks[0].rows += 15;
- if (banks[1].rows <= 3)
- banks[1].rows += 15;
- if (banks[0].columns <= 3)
- banks[0].columns += 15;
- if (banks[0].columns <= 3)
- banks[0].columns += 15;
- }
-
- /* Check registered/unregisterd */
- if (rom[21] & 0x12) {
- banks[0].registered = 1;
- banks[1].registered = 1;
- } else {
- banks[0].registered = 0;
- banks[1].registered = 0;
- }
-
-#ifdef CONFIG_ECC
- /* Check parity/ECC */
- banks[0].ecc = (rom[11] == 0x02);
- banks[1].ecc = (rom[11] == 0x02);
-#endif
-
- /* Find burst lengths supported */
- banks[0].burst_len = rom[16] & 0x8f;
- banks[1].burst_len = rom[16] & 0x8f;
-
- /* Find possible cas latencies */
- banks[0].cas_lat = rom[18] & 0x7F;
- banks[1].cas_lat = rom[18] & 0x7F;
-
- /* RAS/CAS latency */
- banks[0].trcd = (NSto10PS (rom[29]) + (tmemclock - 1)) / tmemclock;
- banks[1].trcd = (NSto10PS (rom[29]) + (tmemclock - 1)) / tmemclock;
-
- /* Precharge latency */
- banks[0].trp = (NSto10PS (rom[27]) + (tmemclock - 1)) / tmemclock;
- banks[1].trp = (NSto10PS (rom[27]) + (tmemclock - 1)) / tmemclock;
-
- /* highest CAS latency */
- banks[0].tclk_hi = NS10to10PS (rom[9]);
- banks[1].tclk_hi = NS10to10PS (rom[9]);
-
- /* second highest CAS latency */
- banks[0].tclk_2hi = NS10to10PS (rom[23]);
- banks[1].tclk_2hi = NS10to10PS (rom[23]);
-
- /* bank sizes */
- datawidth = rom[13] & 0x7f;
- banks[0].size =
- (1L << (banks[0].rows + banks[0].columns)) *
- /* FIXME datawidth */ 8 * rom[17];
- if (rom[13] & 0x80)
- banks[1].size = 2 * banks[0].size;
- else
- banks[1].size = (1L << (banks[1].rows + banks[1].columns)) *
- /* FIXME datawidth */ 8 * rom[17];
-
- /* Refresh */
- if (rom[12] & 0x80) {
- banks[0].auto_refresh = 1;
- banks[1].auto_refresh = 1;
- } else {
- banks[0].auto_refresh = 0;
- banks[1].auto_refresh = 0;
- }
-
- switch (rom[12] & 0x7f) {
- case 0:
- banks[0].refresh_time = (1562500 + (tmemclock - 1)) / tmemclock;
- banks[1].refresh_time = (1562500 + (tmemclock - 1)) / tmemclock;
- break;
- case 1:
- banks[0].refresh_time = (390600 + (tmemclock - 1)) / tmemclock;
- banks[1].refresh_time = (390600 + (tmemclock - 1)) / tmemclock;
- break;
- case 2:
- banks[0].refresh_time = (781200 + (tmemclock - 1)) / tmemclock;
- banks[1].refresh_time = (781200 + (tmemclock - 1)) / tmemclock;
- break;
- case 3:
- banks[0].refresh_time = (3125000 + (tmemclock - 1)) / tmemclock;
- banks[1].refresh_time = (3125000 + (tmemclock - 1)) / tmemclock;
- break;
- case 4:
- banks[0].refresh_time = (6250000 + (tmemclock - 1)) / tmemclock;
- banks[1].refresh_time = (6250000 + (tmemclock - 1)) / tmemclock;
- break;
- case 5:
- banks[0].refresh_time = (12500000 + (tmemclock - 1)) / tmemclock;
- banks[1].refresh_time = (12500000 + (tmemclock - 1)) / tmemclock;
- break;
- default:
- banks[0].refresh_time = 0x100; /* Default of Articia S */
- banks[1].refresh_time = 0x100;
- break;
- }
-
-#ifdef DEBUG
- printf ("\nInformation for SIMM bank %ld:\n", dimmNum);
- printf ("Number of banks: %ld\n", banks[0].used + banks[1].used);
- printf ("Number of row addresses: %ld\n", banks[0].rows);
- printf ("Number of coumns addresses: %ld\n", banks[0].columns);
- printf ("SIMM is %sregistered\n",
- banks[0].registered == 0 ? "not " : "");
-#ifdef CONFIG_ECC
- printf ("SIMM %s ECC\n",
- banks[0].ecc == 1 ? "supports" : "doesn't support");
-#endif
- printf ("Supported burst lenghts: %s %s %s %s %s\n",
- banks[0].burst_len & 0x08 ? "8" : " ",
- banks[0].burst_len & 0x04 ? "4" : " ",
- banks[0].burst_len & 0x02 ? "2" : " ",
- banks[0].burst_len & 0x01 ? "1" : " ",
- banks[0].burst_len & 0x80 ? "PAGE" : " ");
- printf ("Supported CAS latencies: %s %s %s\n",
- banks[0].cas_lat & 0x04 ? "CAS 3" : " ",
- banks[0].cas_lat & 0x02 ? "CAS 2" : " ",
- banks[0].cas_lat & 0x01 ? "CAS 1" : " ");
- printf ("RAS to CAS latency: %ld\n", banks[0].trcd);
- printf ("Precharge latency: %ld\n", banks[0].trp);
- printf ("SDRAM highest CAS latency: %ld\n", banks[0].tclk_hi);
- printf ("SDRAM 2nd highest CAS latency: %ld\n", banks[0].tclk_2hi);
- printf ("SDRAM data width: %ld\n", datawidth);
- printf ("Auto Refresh %ssupported\n",
- banks[0].auto_refresh ? "" : "not ");
- printf ("Refresh time: %ld clocks\n", banks[0].refresh_time);
- if (banks[0].used)
- printf ("Bank 0 size: %ld MB\n", banks[0].size / 1024 / 1024);
- if (banks[1].used)
- printf ("Bank 1 size: %ld MB\n", banks[1].size / 1024 / 1024);
-
- printf ("\n");
-#endif
-
- sm_term ();
- return 1;
-}
-
-void select_cas (struct dimm_bank *banks, uint8 fast)
-{
- if (!banks[0].used) {
- banks[0].cas_used = 0;
- banks[0].cas_used = 0;
- return;
- }
-
- if (fast) {
- /* Search for fast CAS */
- uint32 i;
- uint32 c = 0x01;
-
- for (i = 1; i < 5; i++) {
- if (banks[0].cas_lat & c) {
- banks[0].cas_used = i;
- banks[1].cas_used = i;
- debug ("Using CAS %d (fast)\n", i);
- return;
- }
- c <<= 1;
- }
-
- /* Default to CAS 3 */
- banks[0].cas_used = 3;
- banks[1].cas_used = 3;
- debug ("Using CAS 3 (fast)\n");
-
- return;
- } else {
- /* Search for slow cas */
- uint32 i;
- uint32 c = 0x08;
-
- for (i = 4; i > 1; i--) {
- if (banks[0].cas_lat & c) {
- banks[0].cas_used = i;
- banks[1].cas_used = i;
- debug ("Using CAS %d (slow)\n", i);
- return;
- }
- c >>= 1;
- }
-
- /* Default to CAS 3 */
- banks[0].cas_used = 3;
- banks[1].cas_used = 3;
- debug ("Using CAS 3 (slow)\n");
-
- return;
- }
-
- banks[0].cas_used = 3;
- banks[1].cas_used = 3;
- debug ("Using CAS 3\n");
-
- return;
-}
-
-uint32 get_reg_setting (uint32 banks, uint32 rows, uint32 columns, uint32 size)
-{
- uint32 i;
-
- struct RowColumnSize {
- uint32 banks;
- uint32 rows;
- uint32 columns;
- uint32 size;
- uint32 register_value;
- };
-
- struct RowColumnSize rcs_map[] = {
- /* Sbk Radr Cadr MB Value */
- {1, 11, 8, 8, 0x00840f00},
- {1, 11, 9, 16, 0x00925f00},
- {1, 11, 10, 32, 0x00a64f00},
- {2, 12, 8, 32, 0x00c55f00},
- {2, 12, 9, 64, 0x00d66f00},
- {2, 12, 10, 128, 0x00e77f00},
- {2, 12, 11, 256, 0x00ff8f00},
- {2, 13, 11, 512, 0x00ff9f00},
- {0, 0, 0, 0, 0x00000000}
- };
-
-
- i = 0;
-
- while (rcs_map[i].banks != 0) {
- if (rows == rcs_map[i].rows
- && columns == rcs_map[i].columns
- && (size / 1024 / 1024) == rcs_map[i].size)
- return rcs_map[i].register_value;
-
- i++;
- }
-
- return 0;
-}
-
-uint32 burst_to_len (uint32 support)
-{
- if (support & 0x80)
- return 0x7;
- else if (support & 0x8)
- return 0x3;
- else if (support & 0x4)
- return 0x2;
- else if (support & 0x2)
- return 0x1;
- else if (support & 0x1)
- return 0x0;
-
- return 0;
-}
-
-long articiaS_ram_init (void)
-{
- register uint32 i;
- register uint32 value1;
- register uint32 value2;
- uint8 rom[128];
- uint32 burst_len;
- uint32 burst_support;
- uint32 total_ram = 0;
-
- struct dimm_bank banks[4]; /* FIXME: Move to initram */
- uint32 busclock = gd->bus_clk;
- uint32 memclock = busclock;
- uint32 reg32;
- uint32 refresh_clocks;
- uint8 auto_refresh;
-
- memset (banks, 0, sizeof (struct dimm_bank) * 4);
-
- detect_sdram (rom, 0, &banks[0]);
- detect_sdram (rom, 1, &banks[2]);
-
- for (i = 0; i < 4; i++) {
- total_ram = total_ram + (banks[i].used * banks[i].size);
- }
-
- pci_write_cfg_long (0, 0, GLOBALINFO0, 0x117430c0);
- pci_write_cfg_long (0, 0, HBUSACR0, 0x1f0100b0);
- pci_write_cfg_long (0, 0, SRAM_CR, 0x00f12000); /* Note: Might also try 0x00f10000 (original: 0x00f12000) */
- pci_write_cfg_byte (0, 0, DRAM_RAS_CTL0, 0x3f);
- pci_write_cfg_byte (0, 0, DRAM_RAS_CTL1, 0x00); /* was: 0x04); */
- pci_write_cfg_word (0, 0, DRAM_ECC0, 0x2020); /* was: 0x2400); No ECC yet */
-
- /* FIXME: Move this stuff to seperate function, like setup_dimm_bank */
- if (banks[0].used) {
- value1 = get_reg_setting (banks[0].used + banks[1].used,
- banks[0].rows, banks[0].columns,
- banks[0].size);
- } else {
- value1 = 0;
- }
-
- if (banks[1].used) {
- value2 = get_reg_setting (banks[0].used + banks[1].used,
- banks[1].rows, banks[1].columns,
- banks[1].size);
- } else {
- value2 = 0;
- }
-
- pci_write_cfg_long (0, 0, DIMM0_B0_SCR0, value1);
- pci_write_cfg_long (0, 0, DIMM0_B1_SCR0, value2);
-
- debug ("DIMM0_B0_SCR0 = 0x%08x\n", value1);
- debug ("DIMM0_B1_SCR0 = 0x%08x\n", value2);
-
- if (banks[2].used) {
- value1 = get_reg_setting (banks[2].used + banks[3].used,
- banks[2].rows, banks[2].columns,
- banks[2].size);
- } else {
- value1 = 0;
- }
-
- if (banks[3].used) {
- value2 = get_reg_setting (banks[2].used + banks[3].used,
- banks[3].rows, banks[3].columns,
- banks[3].size);
- } else {
- value2 = 0;
- }
-
- pci_write_cfg_long (0, 0, DIMM1_B2_SCR0, value1);
- pci_write_cfg_long (0, 0, DIMM1_B3_SCR0, value2);
-
- debug ("DIMM0_B2_SCR0 = 0x%08x\n", value1);
- debug ("DIMM0_B3_SCR0 = 0x%08x\n", value2);
-
- pci_write_cfg_long (0, 0, DIMM2_B4_SCR0, 0);
- pci_write_cfg_long (0, 0, DIMM2_B5_SCR0, 0);
- pci_write_cfg_long (0, 0, DIMM3_B6_SCR0, 0);
- pci_write_cfg_long (0, 0, DIMM3_B7_SCR0, 0);
-
- /* Determine timing */
- select_cas (&banks[0], 0);
- select_cas (&banks[2], 0);
-
- /* FIXME: What about write recovery */
- /* Auto refresh Precharge */
-#if 0
- reg32 = (0x3 << 13) | (0x7 << 10) | ((banks[0].trp - 2) << 8) |
- /* Write recovery CAS Latency */
- (0x1 << 6) | (banks[0].cas_used << 4) |
- /* RAS/CAS latency */
- ((banks[0].trcd - 1) << 0);
-
- reg32 |= ((0x3 << 13) | (0x7 << 10) | ((banks[2].trp - 2) << 8) |
- (0x1 << 6) | (banks[2].cas_used << 4) |
- ((banks[2].trcd - 1) << 0)) << 16;
-#else
- if (100000000 == gd->bus_clk)
- reg32 = 0x71737173;
- else
- reg32 = 0x69736973;
-#endif
- pci_write_cfg_long (0, 0, DIMM0_TCR0, reg32);
- debug ("DIMM0_TCR0 = 0x%08x\n", reg32);
-
- /* Write default in DIMM2/3 (not used on A1) */
- pci_write_cfg_long (0, 0, DIMM2_TCR0, 0x7d737d73);
-
-
- /* Determine buffered/unbuffered mode for each SIMM. Uses first bank as reference (second, if present, uses the same) */
- reg32 = pci_read_cfg_long (0, 0, DRAM_GCR0);
- reg32 &= 0xFF00FFFF;
-
-#if 0
- if (banks[0].used && banks[0].registered)
- reg32 |= 0x1 << 16;
-
- if (banks[2].used && banks[2].registered)
- reg32 |= 0x1 << 18;
-#else
- if (banks[0].registered || banks[2].registered)
- reg32 |= 0x55 << 16;
-#endif
- pci_write_cfg_long (0, 0, DRAM_GCR0, reg32);
- debug ("DRAM_GCR0 = 0x%08x\n", reg32);
-
- /* Determine refresh */
- refresh_clocks = 0xffffffff;
- auto_refresh = 1;
-
- for (i = 0; i < 4; i++) {
- if (banks[i].used) {
- if (banks[i].auto_refresh == 0)
- auto_refresh = 0;
- if (banks[i].refresh_time < refresh_clocks)
- refresh_clocks = banks[i].refresh_time;
- }
- }
-
-
-#if 1
- /* It seems this is suggested by the ArticiaS data book */
- if (100000000 == gd->bus_clk)
- refresh_clocks = 1561;
- else
- refresh_clocks = 2083;
-#endif
-
-
- debug ("Refresh set to %ld clocks, auto refresh %s\n",
- refresh_clocks, auto_refresh ? "on" : "off");
-
- pci_write_cfg_long (0, 0, DRAM_REFRESH0,
- (1 << 16) | (1 << 15) | (auto_refresh << 12) |
- (refresh_clocks));
- debug ("DRAM_REFRESH0 = 0x%08x\n",
- (1 << 16) | (1 << 15) | (auto_refresh << 12) |
- (refresh_clocks));
-
-/* pci_write_cfg_long(0, 0, DRAM_REFRESH0, 0x00019400); */
-
- /* Set mode registers */
- /* FIXME: For now, set same burst len for all modules. Dunno if that's necessary */
- /* Find a common burst len */
- burst_support = 0xff;
-
- if (banks[0].used)
- burst_support = banks[0].burst_len;
- if (banks[1].used)
- burst_support = banks[1].burst_len;
- if (banks[2].used)
- burst_support = banks[2].burst_len;
- if (banks[3].used)
- burst_support = banks[3].burst_len;
-
- /*
- ** Mode register:
- ** Bits Use
- ** 0-2 Burst len
- ** 3 Burst type (0 = sequential, 1 = interleave)
- ** 4-6 CAS latency
- ** 7-8 Operation mode (0 = default, all others invalid)
- ** 9 Write burst
- ** 10-11 Reserved
- **
- ** Mode register burst table:
- ** A2 A1 A0 lenght
- ** 0 0 0 1
- ** 0 0 1 2
- ** 0 1 0 4
- ** 0 1 1 8
- ** 1 0 0 invalid
- ** 1 0 1 invalid
- ** 1 1 0 invalid
- ** 1 1 1 page (only valid for non-interleaved)
- */
-
- burst_len = burst_to_len (burst_support);
- burst_len = 2; /* FIXME */
-
- if (banks[0].used) {
- pci_write_cfg_word (0, 0, DRAM_PCR0,
- 0x8000 | burst_len | (banks[0].cas_used << 4));
- debug ("Mode bank 0: 0x%08x\n",
- 0x8000 | burst_len | (banks[0].cas_used << 4));
- } else {
- /* Seems to be needed to disable the bank */
- pci_write_cfg_word (0, 0, DRAM_PCR0, 0x0000 | 0x032);
- }
-
- if (banks[1].used) {
- pci_write_cfg_word (0, 0, DRAM_PCR0,
- 0x9000 | burst_len | (banks[1].cas_used << 4));
- debug ("Mode bank 1: 0x%08x\n",
- 0x8000 | burst_len | (banks[1].cas_used << 4));
- } else {
- /* Seems to be needed to disable the bank */
- pci_write_cfg_word (0, 0, DRAM_PCR0, 0x1000 | 0x032);
- }
-
-
- if (banks[2].used) {
- pci_write_cfg_word (0, 0, DRAM_PCR0,
- 0xa000 | burst_len | (banks[2].cas_used << 4));
- debug ("Mode bank 2: 0x%08x\n",
- 0x8000 | burst_len | (banks[2].cas_used << 4));
- } else {
- /* Seems to be needed to disable the bank */
- pci_write_cfg_word (0, 0, DRAM_PCR0, 0x2000 | 0x032);
- }
-
-
- if (banks[3].used) {
- pci_write_cfg_word (0, 0, DRAM_PCR0,
- 0xb000 | burst_len | (banks[3].cas_used << 4));
- debug ("Mode bank 3: 0x%08x\n",
- 0x8000 | burst_len | (banks[3].cas_used << 4));
- } else {
- /* Seems to be needed to disable the bank */
- pci_write_cfg_word (0, 0, DRAM_PCR0, 0x3000 | 0x032);
- }
-
-
- pci_write_cfg_word (0, 0, 0xba, 0x00);
-
- return total_ram;
-}
-
-extern int drv_isa_kbd_init (void);
-
-int last_stage_init (void)
-{
- drv_isa_kbd_init ();
- return 0;
-}
-
-int overwrite_console (void)
-{
- return (0);
-}
-
-#define in_8 read_byte
-#define out_8 write_byte
-
-static __inline__ unsigned long get_msr (void)
-{
- unsigned long msr;
-
- asm volatile ("mfmsr %0":"=r" (msr):);
-
- return msr;
-}
-
-static __inline__ void set_msr (unsigned long msr)
-{
- asm volatile ("mtmsr %0"::"r" (msr));
-}
-
-int board_early_init_f (void)
-{
- unsigned char c_value = 0;
- unsigned long msr;
-
- /* Basic init of PS/2 keyboard (needed for some reason)... */
- /* Ripped from John's code */
- while ((in_8 ((unsigned char *) 0xfe000064) & 0x02) != 0);
- out_8 ((unsigned char *) 0xfe000064, 0xaa);
- while ((in_8 ((unsigned char *) 0xfe000064) & 0x01) == 0);
- c_value = in_8 ((unsigned char *) 0xfe000060);
- while ((in_8 ((unsigned char *) 0xfe000064) & 0x02) != 0);
- out_8 ((unsigned char *) 0xfe000064, 0xab);
- while ((in_8 ((unsigned char *) 0xfe000064) & 0x01) == 0);
- c_value = in_8 ((unsigned char *) 0xfe000060);
- while ((in_8 ((unsigned char *) 0xfe000064) & 0x02) != 0);
- out_8 ((unsigned char *) 0xfe000064, 0xae);
-/* while ((in_8((unsigned char *)0xfe000064) & 0x01) == 0); */
-/* c_value = in_8((unsigned char *)0xfe000060); */
-
- /* Enable FPU */
- msr = get_msr ();
- set_msr (msr | MSR_FP);
-
- via_calibrate_bus_freq ();
-
- return 0;
-}
diff --git a/board/MAI/AmigaOneG3SE/articiaS.h b/board/MAI/AmigaOneG3SE/articiaS.h
deleted file mode 100644
index ce20d03065..0000000000
--- a/board/MAI/AmigaOneG3SE/articiaS.h
+++ /dev/null
@@ -1,142 +0,0 @@
-#ifndef ARTICIAS_H
-#define ARTICIAS_H
-
-#include "short_types.h"
-#include <common.h>
-
-#define REG_GROUP 0xF0
-
-/* ArticiaS registers */
-#define GLOBALINFO0 0x50
-#define GLOBALINFO1 0x51
-#define GLOBALINFO2 0x52
-#define GLOBALINFO3 0x53
-#define GLOBALCTL0 0x54
-#define GLOBALCTL1 0x55
-#define NVRAMCTL 0x56
-#define PCI1ACR0 0x58
-#define PCI1ACR1 0x59
-#define PCI1ACR2 0x5a
-#define PCI1ACR3 0x5b
-#define HBUSACR0 0x5c
-#define HBUSACR1 0x5d
-#define HBUSACR2 0x5e
-#define HBUSACR3 0x5f
-#define HOSTINT0 0x68
-#define HOSTINT1 0x69
-#define HOSTINT2 0x6a
-#define HOSTINT3 0x6b
-#define HOSTRBCR 0x70
-#define XDBCR 0x74
-
-#define LBSBCR2 0xd2
-
-
-/* Memory controller */
-
-#define DIMM0_B0_SCR0 0x90
-#define DIMM0_B1_SCR0 0x94
-#define DIMM1_B2_SCR0 0x98
-#define DIMM1_B3_SCR0 0x9c
-#define DIMM2_B4_SCR0 0xa0
-#define DIMM2_B5_SCR0 0xa4
-#define DIMM3_B6_SCR0 0xa8
-#define DIMM3_B7_SCR0 0xac
-
-#define DIMM0_TCR0 0xb0
-#define DIMM1_TCR0 0xb2
-#define DIMM2_TCR0 0xb4
-#define DIMM3_TCR0 0xb6
-
-#define DRAM_REFRESH0 0xb8
-#define DRAM_GCR0 0xc0
-#define DRAM_PCR0 0xc6
-#define DRAM_ECC0 0xc4
-#define SRAM_CR 0xc8
-#define DRAM_RAS_CTL0 0xcc
-#define DRAM_RAS_CTL1 0xcd
-
-/* Bits for REG_GROUP */
-#define REG_GROUP_MULTI (1<<1)
-#define REG_GROUP_SPECIAL (1<<3)
-#define REG_GROUP_DIAG (0x1<<4)
-#define REG_GROUP_POWER (0x2<<4)
-
-
-#define GLOBALINFO0_BO (1<<7)
-
-
-#define GLOBALINFO2_B1ARBITER (1<<6)
-
-
-#define HBUSACR0_CPUAPC (1<<0)
-#define HBUSACR0_NUMREQ_2 (0<<1)
-#define HBUSACR0_NUMREQ_3 (1<<1)
-#define HBUSACR0_NUMREQ_4 (2<<1)
-#define HBUSACR0_NUMREQ_MASK (7<<1)
-#define HBUSACR0_RAW (1<<6)
-#define HBUSACR0_WAIT (1<<7)
-#define HBUSACR0_RESERVED (0x30)
-
-
-#define HBUSACR2_BURST (1<<0)
-#define HBUSACR2_LAT (1<<1)
-
-
-#define HBUSACR3_LMWC_SM (1<<0)
-#define HBUSACR3_LMWC_PCI1 (1<<1)
-#define HBUSACR3_LMWC_PCI0 (1<<2)
-#define HBUSACR3_PMWC_PCI1 (1<<3)
-#define HBUSACR3_PMWC_PCI0 (1<<4)
-#define HBUSACR3_FKH (1<<5)
-#define HBUSACR3_92H_EN (1<<6)
-#define HBUSACR3_60H_64H_EN (1<<7)
-
-
-#define HOSTRBCR_PREFETCH (1<<4)
-
-
-#define XDBCR_HWTOXD (1<<0)
-#define XDBCR_KBTOXD (1<<1)
-#define XDBCR_RTCTOXD (1<<2)
-#define XDBCR_SCALE_1_1 (0x0<<3)
-#define XDBCR_SCALE_2_2 (0x1<<3)
-#define XDBCR_SCALE_3_2 (0x2<<3)
-#define XDBCR_SCALE_4_4 (0x3<<3)
-#define XDBCR_SCALE_5_8 (0x4<<3)
-#define XDBCR_SCALE_6_8 (0x5<<3)
-#define XDBCR_SCALE_8_8 (0x6<<3)
-#define XDBCR_SCALE_0_16 (0x7<<3)
-#define XDBCR_XDPROM (1<<7)
-
-
-#define LBSBCR2_1_RWAC (1<<2)
-
-
-/* PCI controller */
-#define ARTICIAS_PCI_CFGADDR 0xfec00cf8
-#define ARTICIAS_PCI_CFGDATA 0xfee00cfc
-
-#define ARTICIAS_PCI_BUS 0x80000000
-#define ARTICIAS_PCI_MAXSIZE 0x7cffffff
-#define ARTICIAS_PCI_PHYS 0x80000000
-
-#define ARTICIAS_SYS_BUS 0x00000000
-#define ARTICIAS_SYS_MAXSIZE 0x7fffffff
-#define ARTICIAS_SYS_PHYS 0x00000000
-
-#define ARTICIAS_PCIIO_BUS 0x00800000
-#define ARTICIAS_PCIIO_MAXSIZE 0x003fffff
-#define ARTICIAS_PCIIO_PHYS 0xfe800000
-
-#define ARTICIAS_ISAIO_BUS 0x00002000
-#define ARTICIAS_ISAIO_MAXSIZE 0x0000d000
-#define ARTICIAS_ISAIO_PHYS 0xfe002000
-
-
-/* Prototypes */
-long articiaS_ram_init(void);
-void articiaS_pci_init(void);
-
-
-#endif
diff --git a/board/MAI/AmigaOneG3SE/articiaS_pci.c b/board/MAI/AmigaOneG3SE/articiaS_pci.c
deleted file mode 100644
index 45b8195012..0000000000
--- a/board/MAI/AmigaOneG3SE/articiaS_pci.c
+++ /dev/null
@@ -1,576 +0,0 @@
-/*
- * (C) Copyright 2002
- * Hyperion Entertainment, Hans-JoergF@hyperion-entertainment.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
- */
-
-#include <common.h>
-#include <pci.h>
-#include "memio.h"
-#include "articiaS.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#undef ARTICIA_PCI_DEBUG
-
-#ifdef ARTICIA_PCI_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-struct pci_controller articiaS_hose;
-
-long irq_alloc(long wanted);
-
-static pci_dev_t pci_hose_find_class(struct pci_controller *hose, int bus, short find_class, int index);
-static int articiaS_init_vga(void);
-static void pci_cfgfunc_dummy(struct pci_controller *host, pci_dev_t dev, struct pci_config_table *table);
-unsigned char pci_irq_alloc(void);
-
-extern void via_cfgfunc_via686(struct pci_controller * host, pci_dev_t dev, struct pci_config_table *table);
-extern void via_cfgfunc_ide_init(struct pci_controller *host, pci_dev_t dev, struct pci_config_table *table);
-extern void via_init_irq_routing(uint8 []);
-extern void via_init_afterscan(void);
-
-#define cfgfunc_via686 1
-#define cfgfunc_dummy 2
-#define cfgfunc_ide_init 3
-
-static struct pci_config_table config_table[] =
-{
- {
- 0x1106, PCI_ANY_ID, PCI_CLASS_BRIDGE_ISA, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- (void *)cfgfunc_via686, {0, 0, 0}
- },
- {
- 0x1106, PCI_ANY_ID, PCI_ANY_ID, 0,7,4,
- (void *)cfgfunc_dummy, {0,0,0}
- },
- {
- 0x1106, 0x3068, PCI_ANY_ID, 0, 7, PCI_ANY_ID,
- (void *)cfgfunc_dummy, {0,0,0}
- },
- {
- 0x1106, PCI_ANY_ID, PCI_ANY_ID, 0,7,1,
- (void *)cfgfunc_ide_init, {0,0,0}
- },
- {
- 0,
- }
-};
-
-
-void pci_cfgfunc_dummy(struct pci_controller *host, pci_dev_t dev, struct pci_config_table *table)
-{
-
-
-}
-
-unsigned long irq_penalties[16] =
-{
- 1000, /* 0:timer */
- 1000, /* 1:keyboard */
- 1000, /* 2:cascade */
- 50, /* 3:serial (COM2) */
- 50, /* 4:serial (COM1) */
- 4, /* 5:USB2 */
- 100, /* 6:floppy */
- 3, /* 7:parallel */
- 50, /* 8:AC97/MC97 */
- 0, /* 9: */
- 3, /* 10:: */
- 0, /* 11: */
- 3, /* 12: USB1 */
- 0, /* 13: */
- 100, /* 14: ide0 */
- 100, /* 15: ide1 */
-};
-
-
-/*
- * The following defines a hard-coded interrupt mapping for the
- * know devices on the board.
- * If a device isn't found here, assumed to be a device that's
- * plugged into a PCI or AGP slot
- * NOTE: This table is machine dependant.
- */
-
-struct pci_irq_fixup_table
-{
- uint8 bus; /* Bus number */
- uint8 device; /* Device number */
- uint8 func; /* Function number */
- uint8 interrupt; /* Interrupt to use (0xff to disable) */
-};
-
-struct pci_irq_fixup_table fixuptab [] =
-{
- { 0, 0, 0, 0xff}, /* Articia S host bridge */
- { 0, 1, 0, 0xff}, /* Articia S AGP bridge */
-/* { 0, 6, 0, 0x05}, /###* 3COM ethernet */
- { 0, 7, 0, 0xff}, /* VIA southbridge */
- { 0, 7, 1, 0x0e}, /* IDE controller in legacy mode */
-/* { 0, 7, 2, 0x05}, /###* First USB controller */
-/* { 0, 7, 3, 0x0c}, /###* Second USB controller (shares interrupt with ethernet) */
- { 0, 7, 4, 0xff}, /* ACPI Power Management */
-/* { 0, 7, 5, 0x08}, /###* AC97 */
-/* { 0, 7, 6, 0x08}, /###* MC97 */
- { 0xff, 0xff, 0xff, 0xff}
-};
-
-
-/*
- * This table maps IRQ's to PCI interrupts
- */
-
-uint8 pci_intmap[4] = {0, 0, 0, 0};
-
-/*
- * Map PCI slots to interrupt routings
- * This table lists the device number assigned to a card inserted
- * into the slot, along with a permutation for the slot's IRQ routing.
- * NOTE: This table is machine dependant.
- */
-
-struct pci_slot_irq_routing
-{
- uint8 bus;
- uint8 device;
-
- uint8 ints[4];
-};
-
-struct pci_slot_irq_routing amigaone_pci_routing[] =
-{
- {0, 8, {0, 1, 2, 3}}, /* Slot 1 (left of riser slot) */
- {0, 9, {1, 2, 3, 0}}, /* Slot 2 (middle slot) */
- {0, 10, {2, 3, 0, 1}}, /* Slot 3 (leftmost slot) */
- {1, 0, {1, 0, 2, 3}}, /* AGP slot (only IRQA and IRQB) */
- {1, 1, {1, 2, 3, 0}}, /* PCI slot on AGP bus */
- {0, 6, {3, 3, 3, 3}}, /* On board ethernet */
- {0, 7, {0, 1, 2, 3}}, /* Southbridge */
- {0xff, 0, {0, 0, 0, 0}}
-};
-
-void articiaS_pci_irq_init(void)
-{
- char *s;
-
- s = getenv("pci_irqa");
- if (s)
- pci_intmap[0] = simple_strtoul (s, NULL, 10);
- else
- pci_intmap[0] = pci_irq_alloc();
-
- s = getenv("pci_irqb");
- if (s)
- pci_intmap[1] = simple_strtoul (s, NULL, 10);
- else
- pci_intmap[1] = pci_irq_alloc();
-
- s = getenv("pci_irqc");
- if (s)
- pci_intmap[2] = simple_strtoul (s, NULL, 10);
- else
- pci_intmap[2] = pci_irq_alloc();
-
- s = getenv("pci_irqd");
- if (s)
- pci_intmap[3] = simple_strtoul (s, NULL, 10);
- else
- pci_intmap[3] = pci_irq_alloc();
-}
-
-
-unsigned char pci_irq_alloc(void)
-{
- int i;
- int interrupt = 10;
- unsigned long min_penalty = 1000;
-
- /* Search for the minimal penalty, favoring interrupts at the end */
- for (i = 0; i < 16; i++)
- {
- if (irq_penalties[i] <= min_penalty)
- {
- interrupt = i;
- min_penalty = irq_penalties[i];
- }
- }
-
- PRINTF("pci_irq_alloc: Minimal penalty is %ld for %d\n", min_penalty, interrupt);
-
- irq_penalties[interrupt]++;
-
- return interrupt;
-}
-
-
-void articiaS_pci_fixup_irq(struct pci_controller *hose, pci_dev_t dev)
-{
- int8 bus, device, func, pin, line;
- int i;
-
- bus = PCI_BUS(dev);
- device = PCI_DEV(dev);
- func = PCI_FUNC(dev);
-
- PRINTF("Fixup irq of %d:%d.%d\n", bus, device, func);
-
- /* Search for the device in the table */
- for (i = 0; fixuptab[i].bus != 0xff; i++)
- {
- if (bus == fixuptab[i].bus && device == fixuptab[i].device && func == fixuptab[i].func)
- {
- /* If the device needs an interrupt, write it */
- if (fixuptab[i].interrupt != 0xff)
- {
- PRINTF("Assigning IRQ %d (fixed)\n", fixuptab[i].interrupt);
- pci_write_config_byte(dev, PCI_INTERRUPT_LINE, fixuptab[i].interrupt);
- }
- else
- {
- /* Otherwise, see if it wants an interrupt, and disable it if needed */
- pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
- if (pin)
- {
- PRINTF("Disabling IRQ\n");
- pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 0xff);
- }
- }
-
- return;
- }
- }
-
- /* If we get here, we have another PCI device in a slot... find the appropriate IRQ */
-
- /* Find matching pin */
- pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
- pin--;
-
- /* Search for it's map */
- for (i = 0; amigaone_pci_routing[i].bus != 0xff; i++)
- {
- if (bus == amigaone_pci_routing[i].bus && device == amigaone_pci_routing[i].device)
- {
- line = pci_intmap[amigaone_pci_routing[i].ints[pin]];
- PRINTF("Assigning IRQ %d (pin %d)\n", line, pin);
- pci_write_config_byte(dev, PCI_INTERRUPT_LINE, line);
- return;
- }
- }
-
- PRINTF("Unkonwn PCI device found\n");
-}
-
-void articiaS_pci_init (void)
-{
- int i;
- char *s;
-
- PRINTF("atriciaS_pci_init\n");
-
- /* Why aren't these relocated?? */
- for (i=0; config_table[i].config_device; i++)
- {
- switch((int)config_table[i].config_device)
- {
- case cfgfunc_via686: config_table[i].config_device = via_cfgfunc_via686; break;
- case cfgfunc_dummy: config_table[i].config_device = pci_cfgfunc_dummy; break;
- case cfgfunc_ide_init: config_table[i].config_device = via_cfgfunc_ide_init; break;
- default: PRINTF("Error: Unknown constant\n");
- }
- }
-
- articiaS_hose.first_busno = 0;
- articiaS_hose.last_busno = 0xff;
- articiaS_hose.config_table = config_table;
- articiaS_hose.fixup_irq = articiaS_pci_fixup_irq;
-
- articiaS_pci_irq_init();
-
- /* System memory */
- pci_set_region(articiaS_hose.regions + 0,
- ARTICIAS_SYS_BUS,
- ARTICIAS_SYS_PHYS,
- ARTICIAS_SYS_MAXSIZE,
- PCI_REGION_MEM | PCI_REGION_MEMORY);
-
- /* PCI memory space */
- pci_set_region(articiaS_hose.regions + 1,
- ARTICIAS_PCI_BUS,
- ARTICIAS_PCI_PHYS,
- ARTICIAS_PCI_MAXSIZE,
- PCI_REGION_MEM);
-
- /* PCI io space */
- pci_set_region(articiaS_hose.regions + 2,
- ARTICIAS_PCIIO_BUS,
- ARTICIAS_PCIIO_PHYS,
- ARTICIAS_PCIIO_MAXSIZE,
- PCI_REGION_IO);
-
- /* PCI/ISA io space */
- pci_set_region(articiaS_hose.regions + 3,
- ARTICIAS_ISAIO_BUS,
- ARTICIAS_ISAIO_PHYS,
- ARTICIAS_ISAIO_MAXSIZE,
- PCI_REGION_IO);
-
-
- articiaS_hose.region_count = 4;
-
- pci_setup_indirect(&articiaS_hose, ARTICIAS_PCI_CFGADDR, ARTICIAS_PCI_CFGDATA);
- PRINTF("Registering articia hose...\n");
- pci_register_hose(&articiaS_hose);
- PRINTF("Enabling AGP...\n");
- pci_write_config_byte(PCI_BDF(0,0,0), 0x58, 0x01);
- PRINTF("Scanning bus...\n");
- articiaS_hose.last_busno = pci_hose_scan(&articiaS_hose);
-
- via_init_irq_routing(pci_intmap);
-
- PRINTF("After-Scan results:\n");
- PRINTF("Bus range: %d - %d\n", articiaS_hose.first_busno , articiaS_hose.last_busno);
-
- via_init_afterscan();
-
- pci_write_config_byte(PCI_BDF(0,1,0), PCI_INTERRUPT_LINE, 0xFF);
-
- s = getenv("as_irq");
- if (s)
- {
- pci_write_config_byte(PCI_BDF(0,0,0), PCI_INTERRUPT_LINE, simple_strtoul (s, NULL, 10));
- }
-
- s = getenv("x86_run_bios");
- if (!s || (s && strcmp(s, "on")==0))
- {
- if (articiaS_init_vga() == -1)
- {
- /* If the VGA didn't init and we have stdout set to VGA, reset to serial */
-/* s = getenv("stdout"); */
-/* if (s && strcmp(s, "vga") == 0) */
-/* { */
-/* setenv("stdout", "serial"); */
-/* } */
- }
- }
- pci_write_config_byte(PCI_BDF(0,1,0), PCI_INTERRUPT_LINE, 0xFF);
-
-}
-
-pci_dev_t pci_hose_find_class(struct pci_controller *hose, int bus, short find_class, int index)
-{
- unsigned int sub_bus, found_multi=0;
- unsigned short vendor, class;
- unsigned char header_type;
- pci_dev_t dev;
- u8 c1, c2;
-
- sub_bus = bus;
-
- for (dev = PCI_BDF(bus,0,0);
- dev < PCI_BDF(bus,PCI_MAX_PCI_DEVICES-1,PCI_MAX_PCI_FUNCTIONS-1);
- dev += PCI_BDF(0,0,1))
- {
- if ( dev == PCI_BDF(hose->first_busno,0,0) )
- continue;
-
- if (PCI_FUNC(dev) && !found_multi)
- continue;
-
- pci_hose_read_config_byte(hose, dev, PCI_HEADER_TYPE, &header_type);
-
- pci_hose_read_config_word(hose, dev, PCI_VENDOR_ID, &vendor);
-
- if (vendor != 0xffff && vendor != 0x0000)
- {
-
- if (!PCI_FUNC(dev))
- found_multi = header_type & 0x80;
- pci_hose_read_config_byte(hose, dev, 0x0B, &c1);
- pci_hose_read_config_byte(hose, dev, 0x0A, &c2);
- class = c1<<8 | c2;
- /*printf("At %02x:%02x:%02x: class %x\n", */
- /* PCI_BUS(dev), PCI_DEV(dev), PCI_FUNC(dev), class); */
- if (class == find_class)
- {
- if (index == 0)
- return dev;
- else index--;
- }
- }
- }
-
- return ~0;
-}
-
-
-/*
- * For a given bus number, find the bridge on this hose that provides this
- * bus number. The function scans for bridges and peeks config space offset
- * 0x19 (PCI_SECONDARY_BUS).
- */
-pci_dev_t pci_find_bridge_for_bus(struct pci_controller *hose, int busnr)
-{
- pci_dev_t dev;
- int bus;
- unsigned int found_multi=0;
- unsigned char header_type;
- unsigned short vendor;
- unsigned char secondary_bus;
-
- if (hose == NULL) hose = &articiaS_hose;
-
- if (busnr < hose->first_busno || busnr > hose->last_busno) return PCI_ANY_ID; /* Not in range */
-
- /*
- * The bridge must be on a lower bus number
- */
- for (bus = hose->first_busno; bus < busnr; bus++)
- {
- for (dev = PCI_BDF(bus,0,0);
- dev < PCI_BDF(bus,PCI_MAX_PCI_DEVICES-1,PCI_MAX_PCI_FUNCTIONS-1);
- dev += PCI_BDF(0,0,1))
- {
- if ( dev == PCI_BDF(hose->first_busno,0,0) )
- continue;
-
- if (PCI_FUNC(dev) && !found_multi)
- continue;
-
- pci_hose_read_config_byte(hose, dev, PCI_HEADER_TYPE, &header_type);
-
- pci_hose_read_config_word(hose, dev, PCI_VENDOR_ID, &vendor);
-
- if (vendor != 0xffff && vendor != 0x0000)
- {
-
- if (!PCI_FUNC(dev))
- found_multi = header_type & 0x80;
- if (header_type == 1) /* Bridge device header */
- {
- pci_hose_read_config_byte(hose, dev, PCI_SECONDARY_BUS, &secondary_bus);
- if ((int)secondary_bus == busnr) return dev;
- }
-
- }
- }
- }
- return PCI_ANY_ID;
-}
-
-static short classes[] =
-{
- PCI_CLASS_DISPLAY_VGA,
- PCI_CLASS_DISPLAY_XGA,
- PCI_CLASS_DISPLAY_3D,
- PCI_CLASS_DISPLAY_OTHER,
- ~0
-};
-
-extern int execute_bios(pci_dev_t gr_dev, void *);
-
-pci_dev_t video_dev;
-
-int articiaS_init_vga (void)
-{
- extern void shutdown_bios(void);
- pci_dev_t dev = ~0;
- int busnr = 0;
- int classnr = 0;
-
- video_dev = PCI_ANY_ID;
-
- printf("VGA: ");
-
- PRINTF("Trying to initialize x86 VGA Card(s)\n");
-
- while (dev == ~0)
- {
- PRINTF("Searching for class 0x%x on bus %d\n", classes[classnr], busnr);
- /* Find the first of this class on this bus */
- dev = pci_hose_find_class(&articiaS_hose, busnr, classes[classnr], 0);
- if (dev != ~0)
- {
- PRINTF("Found VGA Card at %02x:%02x:%02x\n", PCI_BUS(dev), PCI_DEV(dev), PCI_FUNC(dev));
- break;
- }
- busnr++;
- if (busnr > articiaS_hose.last_busno)
- {
- busnr = 0;
- classnr ++;
- if (classes[classnr] == ~0)
- {
- printf("NOT PRESENT\n");
- return -1;
- }
- }
- }
-
- /*
- * If we get here we have found the first graphics card.
- * If the bus number is not 0, then it is probably behind a bridge, and the
- * bridge needs to be told to forward VGA access.
- */
-
- if (PCI_BUS(dev) != 0)
- {
- pci_dev_t bridge;
- PRINTF("Behind bridge, looking for bridge\n");
- bridge = pci_find_bridge_for_bus(&articiaS_hose, PCI_BUS(dev));
- if (dev != PCI_ANY_ID)
- {
- unsigned char agp_control_0;
- PRINTF("Got the bridge at %02x:%02x:%02x\n",
- PCI_BUS(bridge), PCI_DEV(bridge), PCI_FUNC(bridge));
- pci_hose_read_config_byte(&articiaS_hose, bridge, 0x3E, &agp_control_0);
- agp_control_0 |= 0x18;
- pci_hose_write_config_byte(&articiaS_hose, bridge, 0x3E, agp_control_0);
- PRINTF("Configured for VGA forwarding\n");
- }
- }
-
- /*
- * Now try to run the bios
- */
- PRINTF("Trying to run bios now\n");
- if (execute_bios(dev, gd->relocaddr))
- {
- printf("OK\n");
- video_dev = dev;
- }
- else
- {
- printf("ERROR\n");
- }
-
- PRINTF("Done scanning.\n");
-
- shutdown_bios();
-
- if (dev == PCI_ANY_ID) return -1;
- else return 0;
-
-}
diff --git a/board/MAI/AmigaOneG3SE/board_asm_init.S b/board/MAI/AmigaOneG3SE/board_asm_init.S
deleted file mode 100644
index 086b19c052..0000000000
--- a/board/MAI/AmigaOneG3SE/board_asm_init.S
+++ /dev/null
@@ -1,156 +0,0 @@
-#include "macros.h"
-
-
-#define GLOBALINFO0 0x50
-#define GLOBALINFO0_BO (1<<7)
-#define GLOBALINFO2_B1ARBITER (1<<6)
-#define HBUSACR0 0x5c
-#define HBUSACR2_BURST (1<<0)
-#define HBUSACR2_LAT (1<<1)
-
-#define RECEIVER_HOLDING 0
-#define TRANSMITTER_HOLDING 0
-#define INTERRUPT_ENABLE 1
-#define INTERRUPT_STATUS 2
-#define FIFO_CONTROL 2
-#define LINE_CONTROL 3
-#define MODEM_CONTROL 4
-#define LINE_STATUS 5
-#define MODEM_STATUS 6
-#define SCRATCH_PAD 7
-
-#define DIVISOR_LATCH_LSB 0
-#define DIVISOR_LATCH_MSB 1
-#define PRESCALER_DIVISION 5
-
-#define UART(x) (0x3f8+(x))
-
-#define GLOBALINFO0 0x50
-#define GLOBALINFO0_BO (1<<7)
-#define GLOBALINFO2_B1ARBITER (1<<6)
-#define HBUSACR0 0x5c
-#define HBUSACR2_BURST (1<<0)
-#define HBUSACR2_LAT (1<<1)
-
-#define SUPERIO_1 ((7 << 3) | (0))
-#define SUPERIO_2 ((7 << 3) | (1))
-
- .globl board_asm_init
-
-board_asm_init:
- mflr r29
- /* Set 'Must-set' register */
- li r3, 0
- li r4, 0
- li r5, 0x5e
- bl pci_read_cfg_byte
- ori r3, r3, (1<<1)
- xori r6, r3, (1<<1)
- li r3, 0
- bl pci_write_cfg_byte
-
- li r3, 0
- li r5, 0x52
- bl pci_read_cfg_byte
- ori r6, r3, (1<<6)
- li r3, 0
- bl pci_write_cfg_byte
-
- li r3, 0
- li r4, 0x08
- li r5, 0xd2
- bl pci_read_cfg_byte
- ori r6, r3, (1<<2)
- li r3, 0
- bl pci_write_cfg_byte
-
-
- /* Do PCI reset */
-/* li r3, 0
- li r4, 0x38
- li r5, 0x47
- bl pci_read_cfg_byte
- ori r6, r3, 0x01
- li r3, 0
- li r4, 0x38
- li r5, 0x47
- bl pci_write_cfg_byte*/
-
-
- /* Enable NVRAM for environment */
- li r3, 0
- li r4, 0
- li r5, 0x56
- li r6, 0x0B
- bl pci_write_cfg_byte
-
-
- /* Init Super-I/O chips */
-
- siowb 0x40, 0x08
- siowb 0x41, 0x01
- siowb 0x45, 0x80
- siowb 0x46, 0x60
- siowb 0x47, 0x20
- siowb 0x48, 0x01
- siowb 0x4a, 0xc4
- siowb 0x50, 0x0e
- siowb 0x51, 0x76
- siowb 0x52, 0x34
- siowb 0x54, 0x00
- siowb 0x55, 0x90
- siowb 0x56, 0x99
- siowb 0x57, 0x90
- siowb 0x85, 0x01
-
- /* Enable configuration mode for SuperIO */
- li r3, 0
- li r4, (7<<3)
- li r5, 0x85
- bl pci_read_cfg_byte
- ori r6, r3, 0x02
- mr r31, r6
- li r3,0
- bl pci_write_cfg_byte
-
- /* COM1 as 3f8 */
- outb 0x3f0, 0xe7
- outb 0x3f1, 0xfe
-
- /* COM2 as 2f8 */
- outb 0x3f0, 0xe8
- outb 0x3f1, 0xeb
-
- /* Enable */
- outb 0x3f0, 0xe2
- inb r3, 0x3f1
- ori r3, r3, 0x0c
- outb 0x3f0, 0xe2
- outbr 0x3f1, r3
-
- /* Disable configuration mode */
- li r3, 0
- li r4, (7<<3)
- li r5, 0x85
- mr r6, r31
- bl pci_write_cfg_byte
-
- /* Set line control */
- outb UART(LINE_CONTROL), 0x83
- outb UART(DIVISOR_LATCH_LSB), 0x0c
- outb UART(DIVISOR_LATCH_MSB), 0x00
- outb UART(LINE_CONTROL), 0x3
-
- mtlr r29
- blr
-
-
- .globl new_reset
- .globl new_reset_end
-new_reset:
- li r0, 0x100
- oris r0, r0, 0xFFF0
- mtlr r0
- blr
-
-new_reset_end:
diff --git a/board/MAI/AmigaOneG3SE/cmd_boota.c b/board/MAI/AmigaOneG3SE/cmd_boota.c
deleted file mode 100644
index 143bba2f15..0000000000
--- a/board/MAI/AmigaOneG3SE/cmd_boota.c
+++ /dev/null
@@ -1,128 +0,0 @@
-#include <common.h>
-#include <command.h>
-#include "../disk/part_amiga.h"
-#include <asm/cache.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#undef BOOTA_DEBUG
-
-#ifdef BOOTA_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-struct block_header {
- u32 id;
- u32 summed_longs;
- s32 chk_sum;
-};
-
-extern block_dev_desc_t *ide_get_dev (int dev);
-extern struct bootcode_block *get_bootcode (block_dev_desc_t * dev_desc);
-extern int sum_block (struct block_header *header);
-
-struct bootcode_block bblk;
-
-int do_boota (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- unsigned char *load_address = (unsigned char *) CFG_LOAD_ADDR;
- unsigned char *base_address;
- unsigned long offset;
-
- unsigned long part_number = 0;
- block_dev_desc_t *boot_disk;
- char *s;
- struct bootcode_block *boot_code;
-
- /* Get parameters */
-
- switch (argc) {
- case 2:
- load_address = (unsigned char *) simple_strtol (argv[1], NULL, 16);
- part_number = 0;
- break;
- case 3:
- load_address = (unsigned char *) simple_strtol (argv[1], NULL, 16);
- part_number = simple_strtol (argv[2], NULL, 16);
- break;
- }
-
- base_address = load_address;
-
- PRINTF ("Loading boot code from disk %d to %p\n", part_number,
- load_address);
-
- /* Find the appropriate disk device */
- boot_disk = ide_get_dev (part_number);
- if (!boot_disk) {
- PRINTF ("Unknown disk %d\n", part_number);
- return 1;
- }
-
- /* Find the bootcode block */
- boot_code = get_bootcode (boot_disk);
- if (!boot_code) {
- PRINTF ("Not a bootable disk %d\n", part_number);
- return 1;
- }
-
- /* Only use the offset from the first block */
- offset = boot_code->load_data[0];
- memcpy (load_address, &boot_code->load_data[1], 122 * 4);
- load_address += 122 * 4;
-
- /* Setup for the loop */
- bblk.next = boot_code->next;
- boot_code = &bblk;
-
- /* Scan the chain, and copy the loader succesively into the destination area */
- while (0xffffffff != boot_code->next) {
- PRINTF ("Loading block %d\n", boot_code->next);
-
- /* Load block */
- if (1 !=
- boot_disk->block_read (boot_disk->dev, boot_code->next, 1,
- (ulong *) & bblk)) {
- PRINTF ("Read error\n");
- return 1;
- }
-
- /* check sum */
- if (sum_block ((struct block_header *) (ulong *) & bblk) != 0) {
- PRINTF ("Checksum error\n");
- return 1;
- }
-
- /* Ok, concatenate it to the already loaded code */
- memcpy (load_address, boot_code->load_data, 123 * 4);
- load_address += 123 * 4;
- }
-
- printf ("Bootcode loaded to %p (size %d)\n", base_address,
- load_address - base_address);
- printf ("Entry point at %p\n", base_address + offset);
-
- flush_cache (base_address, load_address - base_address);
-
-
- s = getenv ("autostart");
- if (s && strcmp (s, "yes") == 0) {
- void (*boot) (bd_t *, char *, block_dev_desc_t *);
- char *args;
-
- boot = (void (*)(bd_t *, char *, block_dev_desc_t *)) (base_address + offset);
- boot (gd->bd, getenv ("amiga_bootargs"), boot_disk);
- }
-
-
- return 0;
-}
-#if defined(CONFIG_AMIGAONEG3SE) && (CONFIG_COMMANDS & CFG_CMD_BSP)
-U_BOOT_CMD(
- boota, 3, 1, do_boota,
- "boota - boot an Amiga kernel\n",
- "address disk"
-);
-#endif /* _CMD_BOOTA_H */
diff --git a/board/MAI/AmigaOneG3SE/config.mk b/board/MAI/AmigaOneG3SE/config.mk
deleted file mode 100644
index 930a7930e2..0000000000
--- a/board/MAI/AmigaOneG3SE/config.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# (C) Copyright 2002
-# 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
-#
-
-#
-# AmigaOneG3SE boards
-#
-
-X86EMU = -I../bios_emulator/scitech/include -I../bios_emulator/scitech/src/x86emu
-
-TEXT_BASE = 0xfff00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -Wa,-mregnames -DEASTEREGG $(X86EMU) -Dprintk=printf #-DDEBUG
diff --git a/board/MAI/AmigaOneG3SE/enet.c b/board/MAI/AmigaOneG3SE/enet.c
deleted file mode 100644
index ad2bcdeffe..0000000000
--- a/board/MAI/AmigaOneG3SE/enet.c
+++ /dev/null
@@ -1,884 +0,0 @@
-/*
- * (C) Copyright 2002
- * Adam Kowalczyk, ACK Software Controls Inc. akowalczyk@cogeco.ca
- *
- * Some portions taken from 3c59x.c Written 1996-1999 by Donald Becker.
- *
- * Outline of the program based on eepro100.c which is
- *
- * (C) Copyright 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * 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 <common.h>
-#include <malloc.h>
-#include <net.h>
-#include <asm/io.h>
-#include <pci.h>
-
-#include "articiaS.h"
-#include "memio.h"
-
-/* 3Com Ethernet PCI definitions*/
-
-/* #define PCI_VENDOR_ID_3COM 0x10B7 */
-#define PCI_DEVICE_ID_3COM_3C905C 0x9200
-
-/* 3Com Commands, top 5 bits are command and bottom 11 bits are parameters */
-
-#define TotalReset (0<<11)
-#define SelectWindow (1<<11)
-#define StartCoax (2<<11)
-#define RxDisable (3<<11)
-#define RxEnable (4<<11)
-#define RxReset (5<<11)
-#define UpStall (6<<11)
-#define UpUnstall (6<<11)+1
-#define DownStall (6<<11)+2
-#define DownUnstall (6<<11)+3
-#define RxDiscard (8<<11)
-#define TxEnable (9<<11)
-#define TxDisable (10<<11)
-#define TxReset (11<<11)
-#define FakeIntr (12<<11)
-#define AckIntr (13<<11)
-#define SetIntrEnb (14<<11)
-#define SetStatusEnb (15<<11)
-#define SetRxFilter (16<<11)
-#define SetRxThreshold (17<<11)
-#define SetTxThreshold (18<<11)
-#define SetTxStart (19<<11)
-#define StartDMAUp (20<<11)
-#define StartDMADown (20<<11)+1
-#define StatsEnable (21<<11)
-#define StatsDisable (22<<11)
-#define StopCoax (23<<11)
-#define SetFilterBit (25<<11)
-
-/* The SetRxFilter command accepts the following classes */
-
-#define RxStation 1
-#define RxMulticast 2
-#define RxBroadcast 4
-#define RxProm 8
-
-/* 3Com status word defnitions */
-
-#define IntLatch 0x0001
-#define HostError 0x0002
-#define TxComplete 0x0004
-#define TxAvailable 0x0008
-#define RxComplete 0x0010
-#define RxEarly 0x0020
-#define IntReq 0x0040
-#define StatsFull 0x0080
-#define DMADone (1<<8)
-#define DownComplete (1<<9)
-#define UpComplete (1<<10)
-#define DMAInProgress (1<<11) /* DMA controller is still busy.*/
-#define CmdInProgress (1<<12) /* EL3_CMD is still busy.*/
-
-/* Polling Registers */
-
-#define DnPoll 0x2d
-#define UpPoll 0x3d
-
-/* Register window 0 offets */
-
-#define Wn0EepromCmd 10 /* Window 0: EEPROM command register. */
-#define Wn0EepromData 12 /* Window 0: EEPROM results register. */
-#define IntrStatus 0x0E /* Valid in all windows. */
-
-/* Register window 0 EEPROM bits */
-
-#define EEPROM_Read 0x80
-#define EEPROM_WRITE 0x40
-#define EEPROM_ERASE 0xC0
-#define EEPROM_EWENB 0x30 /* Enable erasing/writing for 10 msec. */
-#define EEPROM_EWDIS 0x00 /* Disable EWENB before 10 msec timeout. */
-
-/* EEPROM locations. */
-
-#define PhysAddr01 0
-#define PhysAddr23 1
-#define PhysAddr45 2
-#define ModelID 3
-#define EtherLink3ID 7
-#define IFXcvrIO 8
-#define IRQLine 9
-#define NodeAddr01 10
-#define NodeAddr23 11
-#define NodeAddr45 12
-#define DriverTune 13
-#define Checksum 15
-
-/* Register window 1 offsets, the window used in normal operation */
-
-#define TX_FIFO 0x10
-#define RX_FIFOa 0x10
-#define RxErrors 0x14
-#define RxStatus 0x18
-#define Timer 0x1A
-#define TxStatus 0x1B
-#define TxFree 0x1C /* Remaining free bytes in Tx buffer. */
-
-/* Register Window 2 */
-
-#define Wn2_ResetOptions 12
-
-/* Register Window 3: MAC/config bits */
-
-#define Wn3_Config 0 /* Internal Configuration */
-#define Wn3_MAC_Ctrl 6
-#define Wn3_Options 8
-
-#define BFEXT(value, offset, bitcount) \
- ((((unsigned long)(value)) >> (offset)) & ((1 << (bitcount)) - 1))
-
-#define BFINS(lhs, rhs, offset, bitcount) \
- (((lhs) & ~((((1 << (bitcount)) - 1)) << (offset))) | \
- (((rhs) & ((1 << (bitcount)) - 1)) << (offset)))
-
-#define RAM_SIZE(v) BFEXT(v, 0, 3)
-#define RAM_WIDTH(v) BFEXT(v, 3, 1)
-#define RAM_SPEED(v) BFEXT(v, 4, 2)
-#define ROM_SIZE(v) BFEXT(v, 6, 2)
-#define RAM_SPLIT(v) BFEXT(v, 16, 2)
-#define XCVR(v) BFEXT(v, 20, 4)
-#define AUTOSELECT(v) BFEXT(v, 24, 1)
-
-/* Register Window 4: Xcvr/media bits */
-
-#define Wn4_FIFODiag 4
-#define Wn4_NetDiag 6
-#define Wn4_PhysicalMgmt 8
-#define Wn4_Media 10
-
-#define Media_SQE 0x0008 /* Enable SQE error counting for AUI. */
-#define Media_10TP 0x00C0 /* Enable link beat and jabber for 10baseT. */
-#define Media_Lnk 0x0080 /* Enable just link beat for 100TX/100FX. */
-#define Media_LnkBeat 0x0800
-
-/* Register Window 7: Bus Master control */
-
-#define Wn7_MasterAddr 0
-#define Wn7_MasterLen 6
-#define Wn7_MasterStatus 12
-
-/* Boomerang bus master control registers. */
-
-#define PktStatus 0x20
-#define DownListPtr 0x24
-#define FragAddr 0x28
-#define FragLen 0x2c
-#define TxFreeThreshold 0x2f
-#define UpPktStatus 0x30
-#define UpListPtr 0x38
-
-/* The Rx and Tx descriptor lists. */
-
-#define LAST_FRAG 0x80000000 /* Last Addr/Len pair in descriptor. */
-#define DN_COMPLETE 0x00010000 /* This packet has been downloaded */
-
-struct rx_desc_3com {
- u32 next; /* Last entry points to 0 */
- u32 status; /* FSH -> Frame Start Header */
- u32 addr; /* Up to 63 addr/len pairs possible */
- u32 length; /* Set LAST_FRAG to indicate last pair */
-};
-
-/* Values for the Rx status entry. */
-
-#define RxDComplete 0x00008000
-#define RxDError 0x4000
-#define IPChksumErr (1<<25)
-#define TCPChksumErr (1<<26)
-#define UDPChksumErr (1<<27)
-#define IPChksumValid (1<<29)
-#define TCPChksumValid (1<<30)
-#define UDPChksumValid (1<<31)
-
-struct tx_desc_3com {
- u32 next; /* Last entry points to 0 */
- u32 status; /* bits 0:12 length, others see below */
- u32 addr;
- u32 length;
-};
-
-/* Values for the Tx status entry. */
-
-#define CRCDisable 0x2000
-#define TxDComplete 0x8000
-#define AddIPChksum 0x02000000
-#define AddTCPChksum 0x04000000
-#define AddUDPChksum 0x08000000
-#define TxIntrUploaded 0x80000000 /* IRQ when in FIFO, but maybe not sent. */
-
-/* XCVR Types */
-
-#define XCVR_10baseT 0
-#define XCVR_AUI 1
-#define XCVR_10baseTOnly 2
-#define XCVR_10base2 3
-#define XCVR_100baseTx 4
-#define XCVR_100baseFx 5
-#define XCVR_MII 6
-#define XCVR_NWAY 8
-#define XCVR_ExtMII 9
-#define XCVR_Default 10 /* I don't think this is correct -> should have been 0x10 if Auto Negotiate */
-
-struct descriptor { /* A generic descriptor. */
- u32 next; /* Last entry points to 0 */
- u32 status; /* FSH -> Frame Start Header */
- u32 addr; /* Up to 63 addr/len pairs possible */
- u32 length; /* Set LAST_FRAG to indicate last pair */
-};
-
-/* Misc. definitions */
-
-#define NUM_RX_DESC PKTBUFSRX * 10
-#define NUM_TX_DESC 1 /* Number of TX descriptors */
-
-#define TOUT_LOOP 1000000
-
-#define ETH_ALEN 6
-
-#define EL3WINDOW(dev, win_num) ETH_OUTW(dev, SelectWindow + (win_num), EL3_CMD)
-#define EL3_CMD 0x0e
-#define EL3_STATUS 0x0e
-
-
-#undef ETH_DEBUG
-
-#ifdef ETH_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-
-static struct rx_desc_3com *rx_ring; /* RX descriptor ring */
-static struct tx_desc_3com *tx_ring; /* TX descriptor ring */
-static u8 rx_buffer[NUM_RX_DESC][PKTSIZE_ALIGN]; /* storage for the incoming messages */
-static int rx_next = 0; /* RX descriptor ring pointer */
-static int tx_next = 0; /* TX descriptor ring pointer */
-static int tx_threshold;
-
-static void init_rx_ring(struct eth_device* dev);
-static void purge_tx_ring(struct eth_device* dev);
-
-static void read_hw_addr(struct eth_device* dev, bd_t * bis);
-
-static int eth_3com_init(struct eth_device* dev, bd_t *bis);
-static int eth_3com_send(struct eth_device* dev, volatile void *packet, int length);
-static int eth_3com_recv(struct eth_device* dev);
-static void eth_3com_halt(struct eth_device* dev);
-
-#define io_to_phys(a) pci_io_to_phys((pci_dev_t)dev->priv, a)
-#define phys_to_io(a) pci_phys_to_io((pci_dev_t)dev->priv, a)
-#define mem_to_phys(a) pci_mem_to_phys((pci_dev_t)dev->priv, a)
-#define phys_to_mem(a) pci_phys_to_mem((pci_dev_t)dev->priv, a)
-
-static inline int ETH_INL(struct eth_device* dev, u_long addr)
-{
- __asm volatile ("eieio");
- return le32_to_cpu(*(volatile u32 *)io_to_phys(addr + dev->iobase));
-}
-
-static inline int ETH_INW(struct eth_device* dev, u_long addr)
-{
- __asm volatile ("eieio");
- return le16_to_cpu(*(volatile u16 *)io_to_phys(addr + dev->iobase));
-}
-
-static inline int ETH_INB(struct eth_device* dev, u_long addr)
-{
- __asm volatile ("eieio");
- return *(volatile u8 *)io_to_phys(addr + dev->iobase);
-}
-
-static inline void ETH_OUTB(struct eth_device* dev, int command, u_long addr)
-{
- *(volatile u8 *)io_to_phys(addr + dev->iobase) = command;
- __asm volatile ("eieio");
-}
-
-static inline void ETH_OUTW(struct eth_device* dev, int command, u_long addr)
-{
- *(volatile u16 *)io_to_phys(addr + dev->iobase) = cpu_to_le16(command);
- __asm volatile ("eieio");
-}
-
-static inline void ETH_OUTL(struct eth_device* dev, int command, u_long addr)
-{
- *(volatile u32 *)io_to_phys(addr + dev->iobase) = cpu_to_le32(command);
- __asm volatile ("eieio");
-}
-
-static inline int ETH_STATUS(struct eth_device* dev)
-{
- __asm volatile ("eieio");
- return le16_to_cpu(*(volatile u16 *)io_to_phys(EL3_STATUS + dev->iobase));
-}
-
-static inline void ETH_CMD(struct eth_device* dev, int command)
-{
- *(volatile u16 *)io_to_phys(EL3_CMD + dev->iobase) = cpu_to_le16(command);
- __asm volatile ("eieio");
-}
-
-/* Command register is always in the same spot in all the register windows */
-/* This function issues a command and waits for it so complete by checking the CmdInProgress bit */
-
-static int issue_and_wait(struct eth_device* dev, int command)
-{
-
- int i, status;
-
- ETH_CMD(dev, command);
- for (i = 0; i < 2000; i++) {
- status = ETH_STATUS(dev);
- /*printf ("Issue: status 0x%4x.\n", status); */
- if (!(status & CmdInProgress))
- return 1;
- }
-
- /* OK, that didn't work. Do it the slow way. One second */
- for (i = 0; i < 100000; i++) {
- status = ETH_STATUS(dev);
- /*printf ("Issue: status 0x%4x.\n", status); */
- return 1;
- udelay(10);
- }
- PRINTF("Ethernet command: 0x%4x did not complete! Status: 0x%4x\n", command, ETH_STATUS(dev) );
- return 0;
-}
-
-/* Determine network media type and set up 3com accordingly */
-/* I think I'm going to start with something known first like 10baseT */
-
-static int auto_negotiate(struct eth_device* dev)
-{
- int i;
-
- EL3WINDOW(dev, 1);
-
- /* Wait for Auto negotiation to complete */
- for (i = 0; i <= 1000; i++)
- {
- if (ETH_INW(dev, 2) & 0x04)
- break;
- udelay(100);
-
- if (i == 1000)
- {
- PRINTF("Error: Auto negotiation failed\n");
- return 0;
- }
- }
-
-
- return 1;
-}
-
-void eth_interrupt(struct eth_device *dev)
-{
- u16 status = ETH_STATUS(dev);
-
- printf("eth0: status = 0x%04x\n", status);
-
- if (!(status & IntLatch))
- return;
-
- if (status & (1<<6))
- {
- ETH_CMD(dev, AckIntr | (1<<6));
- printf("Acknowledged Interrupt command\n");
- }
-
- if (status & DownComplete)
- {
- ETH_CMD(dev, AckIntr | DownComplete);
- printf("Acknowledged DownComplete\n");
- }
-
- if (status & UpComplete)
- {
- ETH_CMD(dev, AckIntr | UpComplete);
- printf("Acknowledged UpComplete\n");
- }
-
- ETH_CMD(dev, AckIntr | IntLatch);
- printf("Acknowledged IntLatch\n");
-}
-
-int eth_3com_initialize(bd_t *bis)
-{
- u32 eth_iobase = 0, status;
- int card_number = 0, ret;
- struct eth_device* dev;
- pci_dev_t devno;
- char *s;
-
- s = getenv("3com_base");
-
- /* Find ethernet controller on the PCI bus */
-
- if ((devno = pci_find_device(PCI_VENDOR_ID_3COM, PCI_DEVICE_ID_3COM_3C905C, 0)) < 0)
- {
- PRINTF("Error: Cannot find the ethernet device on the PCI bus\n");
- goto Done;
- }
-
- if (s)
- {
- unsigned long base = atoi(s);
- pci_write_config_dword(devno, PCI_BASE_ADDRESS_0, base | 0x01);
- }
-
- ret = pci_read_config_dword(devno, PCI_BASE_ADDRESS_0, &eth_iobase);
- eth_iobase &= ~0xf;
-
- PRINTF("eth: 3Com Found at Address: 0x%x\n", eth_iobase);
-
- pci_write_config_dword(devno, PCI_COMMAND, PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
-
- /* Check if I/O accesses and Bus Mastering are enabled */
-
- ret = pci_read_config_dword(devno, PCI_COMMAND, &status);
-
- if (!(status & PCI_COMMAND_IO))
- {
- printf("Error: Cannot enable IO access.\n");
- goto Done;
- }
-
- if (!(status & PCI_COMMAND_MEMORY))
- {
- printf("Error: Cannot enable MEMORY access.\n");
- goto Done;
- }
-
- if (!(status & PCI_COMMAND_MASTER))
- {
- printf("Error: Cannot enable Bus Mastering.\n");
- goto Done;
- }
-
- dev = (struct eth_device*) malloc(sizeof(*dev)); /*struct eth_device)); */
-
- sprintf(dev->name, "3Com 3c920c#%d", card_number);
- dev->iobase = eth_iobase;
- dev->priv = (void*) devno;
- dev->init = eth_3com_init;
- dev->halt = eth_3com_halt;
- dev->send = eth_3com_send;
- dev->recv = eth_3com_recv;
-
- eth_register(dev);
-
-/* { */
-/* char interrupt; */
-/* devno = pci_find_device(PCI_VENDOR_ID_3COM, PCI_DEVICE_ID_3COM_3C905C, 0); */
-/* pci_read_config_byte(devno, PCI_INTERRUPT_LINE, &interrupt); */
-
-/* printf("Installing eth0 interrupt handler to %d\n", interrupt); */
-/* irq_install_handler(interrupt, eth_interrupt, dev); */
-/* } */
-
- card_number++;
-
- /* Set the latency timer for value */
- s = getenv("3com_latency");
- if (s)
- {
- ret = pci_write_config_byte(devno, PCI_LATENCY_TIMER, (unsigned char)atoi(s));
- }
- else ret = pci_write_config_byte(devno, PCI_LATENCY_TIMER, 0x0a);
-
- read_hw_addr(dev, bis); /* get the MAC address from Window 2*/
-
- /* Reset the ethernet controller */
-
- PRINTF ("Issuing reset command....\n");
- if (!issue_and_wait(dev, TotalReset))
- {
- printf("Error: Cannot reset ethernet controller.\n");
- goto Done;
- }
- else
- PRINTF ("Ethernet controller reset.\n");
-
- /* allocate memory for rx and tx rings */
-
- if(!(rx_ring = memalign(sizeof(struct rx_desc_3com) * NUM_RX_DESC, 16)))
- {
- PRINTF ("Cannot allocate memory for RX_RING.....\n");
- goto Done;
- }
-
- if (!(tx_ring = memalign(sizeof(struct tx_desc_3com) * NUM_TX_DESC, 16)))
- {
- PRINTF ("Cannot allocate memory for TX_RING.....\n");
- goto Done;
- }
-
-Done:
- return status;
-}
-
-
-static int eth_3com_init(struct eth_device* dev, bd_t *bis)
-{
- int i, status = 0;
- int tx_cur, loop;
- u16 status_enable, intr_enable;
- struct descriptor *ias_cmd;
-
- /* Determine what type of network the machine is connected to */
- /* presently drops the connect to 10Mbps */
-
- if (!auto_negotiate(dev))
- {
- printf("Error: Cannot determine network media.\n");
- goto Done;
- }
-
- issue_and_wait(dev, TxReset);
- issue_and_wait(dev, RxReset|0x04);
-
- /* Switch to register set 7 for normal use. */
- EL3WINDOW(dev, 7);
-
- /* Initialize Rx and Tx rings */
-
- init_rx_ring(dev);
- purge_tx_ring(dev);
-
- ETH_CMD(dev, SetRxFilter | RxStation | RxBroadcast | RxProm);
-
- issue_and_wait(dev,SetTxStart|0x07ff);
-
- /* Below sets which indication bits to be seen. */
-
- status_enable = SetStatusEnb | HostError | DownComplete | UpComplete | (1<<6);
- ETH_CMD(dev, status_enable);
-
- /* Below sets no bits are to cause an interrupt since this is just polling */
-
- intr_enable = SetIntrEnb;
-/* intr_enable = SetIntrEnb | (1<<9) | (1<<10) | (1<<6); */
- ETH_CMD(dev, intr_enable);
- ETH_OUTB(dev, 127, UpPoll);
-
- /* Ack all pending events, and set active indicator mask */
-
- ETH_CMD(dev, AckIntr | IntLatch | TxAvailable | RxEarly | IntReq);
- ETH_CMD(dev, intr_enable);
-
- /* Tell the adapter where the RX ring is located */
-
- issue_and_wait(dev,UpStall); /* Stall and set the UplistPtr */
- ETH_OUTL(dev, (u32)&rx_ring[rx_next], UpListPtr);
- ETH_CMD(dev, RxEnable); /* Enable the receiver. */
- issue_and_wait(dev,UpUnstall);
-
- /* Send the Individual Address Setup frame */
-
- tx_cur = tx_next;
- tx_next = ((tx_next+1) % NUM_TX_DESC);
-
- ias_cmd = (struct descriptor *)&tx_ring[tx_cur];
- ias_cmd->status = cpu_to_le32(1<<31); /* set DnIndicate bit. */
- ias_cmd->next = 0;
- ias_cmd->addr = cpu_to_le32((u32)&bis->bi_enetaddr[0]);
- ias_cmd->length = cpu_to_le32(6 | LAST_FRAG);
-
- /* Tell the adapter where the TX ring is located */
-
- ETH_CMD(dev, TxEnable); /* Enable transmitter. */
- issue_and_wait(dev, DownStall); /* Stall and set the DownListPtr. */
- ETH_OUTL(dev, (u32)&tx_ring[tx_cur], DownListPtr);
- issue_and_wait(dev, DownUnstall);
- for (i=0; !(ETH_STATUS(dev) & DownComplete); i++)
- {
- if (i >= TOUT_LOOP)
- {
- PRINTF("TX Ring status (Init): 0x%4x\n", le32_to_cpu(tx_ring[tx_cur].status));
- PRINTF("ETH_STATUS: 0x%x\n", ETH_STATUS(dev));
- goto Done;
- }
- }
- if (ETH_STATUS(dev) & DownComplete) /* If DownLoad Complete ACK the bit */
- {
- ETH_CMD(dev, AckIntr | DownComplete); /* acknowledge the indication bit */
- issue_and_wait(dev, DownStall); /* stall and clear DownListPtr */
- ETH_OUTL(dev, 0, DownListPtr);
- issue_and_wait(dev, DownUnstall);
- }
- status = 1;
-
-Done:
- return status;
-}
-
-int eth_3com_send(struct eth_device* dev, volatile void *packet, int length)
-{
- int i, status = 0;
- int tx_cur;
-
- if (length <= 0)
- {
- PRINTF("eth: bad packet size: %d\n", length);
- goto Done;
- }
-
- tx_cur = tx_next;
- tx_next = (tx_next+1) % NUM_TX_DESC;
-
- tx_ring[tx_cur].status = cpu_to_le32(1<<31); /* set DnIndicate bit */
- tx_ring[tx_cur].next = 0;
- tx_ring[tx_cur].addr = cpu_to_le32(((u32) packet));
- tx_ring[tx_cur].length = cpu_to_le32(length | LAST_FRAG);
-
- /* Send the packet */
-
- issue_and_wait(dev, DownStall); /* stall and set the DownListPtr */
- ETH_OUTL(dev, (u32) &tx_ring[tx_cur], DownListPtr);
- issue_and_wait(dev, DownUnstall);
-
- for (i=0; !(ETH_STATUS(dev) & DownComplete); i++)
- {
- if (i >= TOUT_LOOP)
- {
- PRINTF("TX Ring status (send): 0x%4x\n", le32_to_cpu(tx_ring[tx_cur].status));
- goto Done;
- }
- }
- if (ETH_STATUS(dev) & DownComplete) /* If DownLoad Complete ACK the bit */
- {
- ETH_CMD(dev, AckIntr | DownComplete); /* acknowledge the indication bit */
- issue_and_wait(dev, DownStall); /* stall and clear DownListPtr */
- ETH_OUTL(dev, 0, DownListPtr);
- issue_and_wait(dev, DownUnstall);
- }
- status=1;
- Done:
- return status;
-}
-
-void PrintPacket (uchar *packet, int length)
-{
-int loop;
-uchar *ptr;
-
- printf ("Printing packet of length %x.\n\n", length);
- ptr = packet;
- for (loop = 1; loop <= length; loop++)
- {
- printf ("%2x ", *ptr++);
- if ((loop % 40)== 0)
- printf ("\n");
- }
-}
-
-int eth_3com_recv(struct eth_device* dev)
-{
- u16 stat = 0;
- u32 status;
- int rx_prev, length = 0;
-
- while (!(ETH_STATUS(dev) & UpComplete)) /* wait on receipt of packet */
- ;
-
- status = le32_to_cpu(rx_ring[rx_next].status); /* packet status */
-
- while (status & (1<<15))
- {
- /* A packet has been received */
-
- if (status & (1<<15))
- {
- /* A valid frame received */
-
- length = le32_to_cpu(rx_ring[rx_next].status) & 0x1fff; /* length is in bits 0 - 12 */
-
- /* Pass the packet up to the protocol layers */
-
- NetReceive((uchar *)le32_to_cpu(rx_ring[rx_next].addr), length);
- rx_ring[rx_next].status = 0; /* clear the status word */
- ETH_CMD(dev, AckIntr | UpComplete);
- issue_and_wait(dev, UpUnstall);
- }
- else
- if (stat & HostError)
- {
- /* There was an error */
-
- printf("Rx error status: 0x%4x\n", stat);
- init_rx_ring(dev);
- goto Done;
- }
-
- rx_prev = rx_next;
- rx_next = (rx_next + 1) % NUM_RX_DESC;
- stat = ETH_STATUS(dev); /* register status */
- status = le32_to_cpu(rx_ring[rx_next].status); /* packet status */
- }
-
-Done:
- return length;
-}
-
-void eth_3com_halt(struct eth_device* dev)
-{
- if (!(dev->iobase))
- {
- goto Done;
- }
-
- issue_and_wait(dev, DownStall); /* shut down transmit and receive */
- issue_and_wait(dev, UpStall);
- issue_and_wait(dev, RxDisable);
- issue_and_wait(dev, TxDisable);
-
-/* free(tx_ring); /###* release memory allocated to the DPD and UPD rings */
-/* free(rx_ring); */
-
-Done:
- return;
-}
-
-static void init_rx_ring(struct eth_device* dev)
-{
- int i;
-
- PRINTF("Initializing rx_ring. rx_buffer = %p\n", rx_buffer);
- issue_and_wait(dev, UpStall);
-
- for (i = 0; i < NUM_RX_DESC; i++)
- {
- rx_ring[i].next = cpu_to_le32(((u32) &rx_ring[(i+1) % NUM_RX_DESC]));
- rx_ring[i].status = 0;
- rx_ring[i].addr = cpu_to_le32(((u32) &rx_buffer[i][0]));
- rx_ring[i].length = cpu_to_le32(PKTSIZE_ALIGN | LAST_FRAG);
- }
- rx_next = 0;
-}
-
-static void purge_tx_ring(struct eth_device* dev)
-{
- int i;
-
- PRINTF("Purging tx_ring.\n");
-
- tx_next = 0;
-
- for (i = 0; i < NUM_TX_DESC; i++)
- {
- tx_ring[i].next = 0;
- tx_ring[i].status = 0;
- tx_ring[i].addr = 0;
- tx_ring[i].length = 0;
- }
-}
-
-static void read_hw_addr(struct eth_device* dev, bd_t *bis)
-{
- u8 hw_addr[ETH_ALEN];
- unsigned int eeprom[0x40];
- unsigned int checksum = 0;
- int i, j, timer;
-
- /* Read the station address from the EEPROM. */
-
- EL3WINDOW(dev, 0);
- for (i = 0; i < 0x40; i++)
- {
- ETH_OUTW(dev, EEPROM_Read + i, Wn0EepromCmd);
- /* Pause for at least 162 us. for the read to take place. */
- for (timer = 10; timer >= 0; timer--)
- {
- udelay(162);
- if ((ETH_INW(dev, Wn0EepromCmd) & 0x8000) == 0)
- break;
- }
- eeprom[i] = ETH_INW(dev, Wn0EepromData);
- }
-
- /* Checksum calculation. I'm not sure about this part and there seems to be a bug on the 3com side of things */
-
- for (i = 0; i < 0x21; i++)
- checksum ^= eeprom[i];
- checksum = (checksum ^ (checksum >> 8)) & 0xff;
-
- if (checksum != 0xbb)
- printf(" *** INVALID EEPROM CHECKSUM %4.4x *** \n", checksum);
-
- for (i = 0, j = 0; i < 3; i++)
- {
- hw_addr[j++] = (u8)((eeprom[i+10] >> 8) & 0xff);
- hw_addr[j++] = (u8)(eeprom[i+10] & 0xff);
- }
-
- /* MAC Address is in window 2, write value from EEPROM to window 2 */
-
- EL3WINDOW(dev, 2);
- for (i = 0; i < 6; i++)
- ETH_OUTB(dev, hw_addr[i], i);
-
- for (j = 0; j < ETH_ALEN; j+=2)
- {
- hw_addr[j] = (u8)(ETH_INW(dev, j) & 0xff);
- hw_addr[j+1] = (u8)((ETH_INW(dev, j) >> 8) & 0xff);
- }
-
- for (i=0;i<ETH_ALEN;i++)
- {
- if (hw_addr[i] != bis->bi_enetaddr[i])
- {
-/* printf("Warning: HW address don't match:\n"); */
-/* printf("Address in 3Com Window 2 is " */
-/* "%02X:%02X:%02X:%02X:%02X:%02X\n", */
-/* hw_addr[0], hw_addr[1], hw_addr[2], */
-/* hw_addr[3], hw_addr[4], hw_addr[5]); */
-/* printf("Address used by U-Boot is " */
-/* "%02X:%02X:%02X:%02X:%02X:%02X\n", */
-/* bis->bi_enetaddr[0], bis->bi_enetaddr[1], */
-/* bis->bi_enetaddr[2], bis->bi_enetaddr[3], */
-/* bis->bi_enetaddr[4], bis->bi_enetaddr[5]); */
-/* goto Done; */
- char buffer[256];
- if (bis->bi_enetaddr[0] == 0 && bis->bi_enetaddr[1] == 0 &&
- bis->bi_enetaddr[2] == 0 && bis->bi_enetaddr[3] == 0 &&
- bis->bi_enetaddr[4] == 0 && bis->bi_enetaddr[5] == 0)
- {
-
- sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X",
- hw_addr[0], hw_addr[1], hw_addr[2],
- hw_addr[3], hw_addr[4], hw_addr[5]);
- setenv("ethaddr", buffer);
- }
- }
- }
-
- for(i=0; i<ETH_ALEN; i++) dev->enetaddr[i] = hw_addr[i];
-
-Done:
- return;
-}
diff --git a/board/MAI/AmigaOneG3SE/flash.c b/board/MAI/AmigaOneG3SE/flash.c
deleted file mode 100644
index 409b955fd5..0000000000
--- a/board/MAI/AmigaOneG3SE/flash.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <common.h>
-#include <flash.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-unsigned long flash_init(void)
-{
- int i;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++)
- {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = 0;
- flash_info[i].size = 0;
- }
-
-
- return 1;
-}
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- return 1;
-}
-
-void flash_print_info(flash_info_t *info)
-{
- printf("No flashrom installed\n");
-}
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- return 0;
-}
diff --git a/board/MAI/AmigaOneG3SE/flash_new.c b/board/MAI/AmigaOneG3SE/flash_new.c
deleted file mode 100644
index d46bf46465..0000000000
--- a/board/MAI/AmigaOneG3SE/flash_new.c
+++ /dev/null
@@ -1,651 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
- *
- * (C) Copyright 2002
- * 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 <common.h>
-#include <flash.h>
-#include <asm/io.h>
-#include "memio.h"
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-static ulong flash_get_size (ulong addr, flash_info_t *info);
-static int flash_get_offsets (ulong base, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_reset (ulong addr);
-
-int flash_xd_nest;
-
-static void flash_to_xd(void)
-{
- unsigned char x;
-
- flash_xd_nest ++;
-
- if (flash_xd_nest == 1)
- {
- DEBUGF("Flash on XD\n");
- x = pci_read_cfg_byte(0, 0, 0x74);
- pci_write_cfg_byte(0, 0, 0x74, x|1);
- }
-}
-
-static void flash_to_mem(void)
-{
- unsigned char x;
-
- flash_xd_nest --;
-
- if (flash_xd_nest == 0)
- {
- DEBUGF("Flash on memory bus\n");
- x = pci_read_cfg_byte(0, 0, 0x74);
- pci_write_cfg_byte(0, 0, 0x74, x&0xFE);
- }
-}
-
-unsigned long flash_init_old(void)
-{
- int i;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++)
- {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = 0;
- flash_info[i].size = 0;
- }
-
-
- return 1;
-}
-
-unsigned long flash_init (void)
-{
- unsigned int i;
- unsigned long flash_size = 0;
-
- flash_xd_nest = 0;
-
- flash_to_xd();
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = 0;
- flash_info[i].size = 0;
- }
-
- DEBUGF("\n## Get flash size @ 0x%08x\n", CFG_FLASH_BASE);
-
- flash_size = flash_get_size (CFG_FLASH_BASE, flash_info);
-
- DEBUGF("## Flash bank size: %08lx\n", flash_size);
-
- if (flash_size) {
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE && \
- CFG_MONITOR_BASE < CFG_FLASH_BASE + CFG_FLASH_MAX_SIZE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[0]);
-#endif
-
- } else {
- puts ("Warning: the BOOT Flash is not initialised !");
- }
-
- flash_to_mem();
-
- return flash_size;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (ulong addr, flash_info_t *info)
-{
- short i;
- uchar value;
- uchar *x = (uchar *)addr;
-
- flash_to_xd();
-
- /* Write auto select command: read Manufacturer ID */
- x[0x0555] = 0xAA;
- __asm volatile ("sync\n eieio");
- x[0x02AA] = 0x55;
- __asm volatile ("sync\n eieio");
- x[0x0555] = 0x90;
- __asm volatile ("sync\n eieio");
-
- value = x[0];
- __asm volatile ("sync\n eieio");
-
- DEBUGF("Manuf. ID @ 0x%08lx: 0x%08x\n", (ulong)addr, value);
-
- switch (value | (value << 16)) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
-
- case STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- flash_reset (addr);
- return 0;
- }
-
- value = x[1];
- __asm volatile ("sync\n eieio");
-
- DEBUGF("Device ID @ 0x%08lx: 0x%08x\n", addr+1, value);
-
- switch (value) {
- case AMD_ID_F040B:
- DEBUGF("Am29F040B\n");
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case AMD_ID_LV040B:
- DEBUGF("Am29LV040B\n");
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case AMD_ID_LV400T:
- DEBUGF("Am29LV400T\n");
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- DEBUGF("Am29LV400B\n");
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- DEBUGF("Am29LV800T\n");
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- DEBUGF("Am29LV400B\n");
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- DEBUGF("Am29LV160T\n");
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- DEBUGF("Am29LV160B\n");
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV320T:
- DEBUGF("Am29LV320T\n");
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
-#if 0
- /* Has the same ID as AMD_ID_LV320T, to be fixed */
- case AMD_ID_LV320B:
- DEBUGF("Am29LV320B\n");
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
-
- case AMD_ID_LV033C:
- DEBUGF("Am29LV033C\n");
- info->flash_id += FLASH_AM033C;
- info->sector_count = 64;
- info->size = 0x01000000;
- break; /* => 16Mb */
-
- case STM_ID_F040B:
- DEBUGF("M29F040B\n");
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- flash_reset (addr);
- flash_to_mem();
- return (0); /* => no or unknown flash */
-
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- if (! flash_get_offsets (addr, info)) {
- flash_reset (addr);
- flash_to_mem();
- return 0;
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- value = in8(info->start[i] + 2);
- iobarrier_rw();
- info->protect[i] = (value & 1) != 0;
- }
-
- /*
- * Reset bank to read mode
- */
- flash_reset (addr);
-
- flash_to_mem();
-
- return (info->size);
-}
-
-static int flash_get_offsets (ulong base, flash_info_t *info)
-{
- unsigned int i;
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- /* set sector offsets for uniform sector type */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + i * info->size /
- info->sector_count;
- }
- break;
- default:
- return 0;
- }
-
- return 1;
-}
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile ulong addr = info->start[0];
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- flash_to_xd();
-
- if (s_first < 0 || s_first > s_last) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- flash_to_mem();
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- flash_to_mem();
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- out8(addr + 0x555, 0xAA);
- iobarrier_rw();
- out8(addr + 0x2AA, 0x55);
- iobarrier_rw();
- out8(addr + 0x555, 0x80);
- iobarrier_rw();
- out8(addr + 0x555, 0xAA);
- iobarrier_rw();
- out8(addr + 0x2AA, 0x55);
- iobarrier_rw();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = info->start[sect];
- out8(addr, 0x30);
- iobarrier_rw();
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = info->start[l_sect];
-
- DEBUGF ("Start erase timeout: %d\n", CFG_FLASH_ERASE_TOUT);
-
- while ((in8(addr) & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- flash_reset (info->start[0]);
- flash_to_mem();
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- iobarrier_rw();
- }
-
-DONE:
- /* reset to read mode */
- flash_reset (info->start[0]);
- flash_to_mem();
-
- printf (" done\n");
- return 0;
-}
-
-/*
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- flash_to_xd();
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- flash_to_mem();
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- flash_to_mem();
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- flash_to_mem();
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
-
- flash_to_mem();
- return (write_word(info, wp, data));
-}
-
-/*
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile ulong addr = info->start[0];
- ulong start;
- int i;
-
- flash_to_xd();
-
- /* Check if Flash is (sufficiently) erased */
- if ((in32(dest) & data) != data) {
- flash_to_mem();
- return (2);
- }
-
- /* write each byte out */
- for (i = 0; i < 4; i++) {
- char *data_ch = (char *)&data;
- int flag = disable_interrupts();
-
- out8(addr + 0x555, 0xAA);
- iobarrier_rw();
- out8(addr + 0x2AA, 0x55);
- iobarrier_rw();
- out8(addr + 0x555, 0xA0);
- iobarrier_rw();
- out8(dest+i, data_ch[i]);
- iobarrier_rw();
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((in8(dest+i) & 0x80) != (data_ch[i] & 0x80)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- flash_reset (addr);
- flash_to_mem();
- return (1);
- }
- iobarrier_rw();
- }
- }
-
- flash_reset (addr);
- flash_to_mem();
- return (0);
-}
-
-/*
- * Reset bank to read mode
- */
-static void flash_reset (ulong addr)
-{
- flash_to_xd();
- out8(addr, 0xF0); /* reset bank */
- iobarrier_rw();
- flash_to_mem();
-}
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- case FLASH_MAN_STM: printf ("SGS THOMSON "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040: printf ("29F040 or 29LV040 (4 Mbit, uniform sectors)\n");
- break;
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size % 0x100000 == 0) {
- printf (" Size: %ld MB in %d Sectors\n",
- info->size / 0x100000, info->sector_count);
- } else if (info->size % 0x400 == 0) {
- printf (" Size: %ld KB in %d Sectors\n",
- info->size / 0x400, info->sector_count);
- } else {
- printf (" Size: %ld B in %d Sectors\n",
- info->size, info->sector_count);
- }
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
diff --git a/board/MAI/AmigaOneG3SE/i8259.c b/board/MAI/AmigaOneG3SE/i8259.c
deleted file mode 100644
index 34f489f7c5..0000000000
--- a/board/MAI/AmigaOneG3SE/i8259.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * (C) Copyright 2002
- * John W. Linville, linville@tuxdriver.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
- */
-
-#include <common.h>
-#include "i8259.h"
-
-#undef IRQ_DEBUG
-
-#ifdef IRQ_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-static inline unsigned char read_byte(volatile unsigned char* from)
-{
- int x;
- asm volatile ("lbz %0,%1\n eieio" : "=r" (x) : "m" (*from));
- return (unsigned char)x;
-}
-
-static inline void write_byte(volatile unsigned char *to, int x)
-{
- asm volatile ("stb %1,%0\n eieio" : "=m" (*to) : "r" (x));
-}
-
-static inline unsigned long read_long_little(volatile unsigned long *from)
-{
- unsigned long x;
- asm volatile ("lwbrx %0,0,%1\n eieio\n sync" : "=r" (x) : "r" (from), "m"(*from));
- return (unsigned long)x;
-}
-
-#ifdef out8
-#undef out8
-#endif
-
-#ifdef in8
-#undef in8
-#endif
-
-#define out8(addr, byte) write_byte(0xFE000000 | addr, byte)
-#define in8(addr) read_byte(0xFE000000 | addr)
-
-/*
- * This contains the irq mask for both 8259A irq controllers,
- */
-static char cached_imr[2] = {0xff, 0xff};
-
-#define cached_imr1 (cached_imr[0])
-#define cached_imr2 (cached_imr[1])
-
-void i8259_init(void)
-{
- char dummy;
- PRINTF("Initializing Interrupt controller\n");
- /* init master interrupt controller */
- out8(0x20, 0x11); /* 0x19); /###* Start init sequence */
- out8(0x21, 0x00); /* Vector base */
- out8(0x21, 0x04); /* edge tiggered, Cascade (slave) on IRQ2 */
- out8(0x21, 0x11); /* was: 0x01); /###* Select 8086 mode */
-
- /* init slave interrupt controller */
- out8(0xA0, 0x11); /* 0x19); /###* Start init sequence */
- out8(0xA1, 0x08); /* Vector base */
- out8(0xA1, 0x02); /* edge triggered, Cascade (slave) on IRQ2 */
- out8(0xA1, 0x11); /* was: 0x01); /###* Select 8086 mode */
-
- /* always read ISR */
- out8(0x20, 0x0B);
- dummy = in8(ISR_1);
- out8(0xA0, 0x0B);
- dummy = in8(ISR_2);
-
-/* out8(0x43, 0x30); */
-/* out8(0x40, 0); */
-/* out8(0x40, 0); */
-/* out8(0x43, 0x70); */
-/* out8(0x41, 0); */
-/* out8(0x41, 0); */
-/* out8(0x43, 0xb0); */
-/* out8(0x42, 0); */
-/* out8(0x42, 0); */
-
- /* Mask all interrupts */
- out8(IMR_2, cached_imr2);
- out8(IMR_1, cached_imr1);
-
- i8259_unmask_irq(2);
-#if 0
- {
- int i;
- for (i=0; i<16; i++)
- {
- i8259_unmask_irq(i);
- }
- }
-#endif
-}
-
-static volatile char *pci_intack = (void *)0xFEF00000;
-
-int i8259_irq(void)
-{
- int irq;
-
- irq = read_long_little(pci_intack) & 0xff;
- if (irq==7) {
- /*
- * This may be a spurious interrupt.
- *
- * Read the interrupt status register (ISR). If the most
- * significant bit is not set then there is no valid
- * interrupt.
- */
- if(~in8(0x20)&0x80) {
- irq = -1;
- }
- }
-
- return irq;
-}
-int i8259_get_irq(struct pt_regs *regs)
-{
- unsigned char irq;
-
- /*
- * Perform an interrupt acknowledge cycle on controller 1
- */
- out8(OCW3_1, 0x0C); /* prepare for poll */
- irq = in8(IPL_1) & 7;
- if (irq == 2) {
- /*
- * Interrupt is cascaded so perform interrupt
- * acknowledge on controller 2
- */
- out8(OCW3_2, 0x0C); /* prepare for poll */
- irq = (in8(IPL_2) & 7) + 8;
- if (irq == 15) {
- /*
- * This may be a spurious interrupt
- *
- * Read the interrupt status register. If the most
- * significant bit is not set then there is no valid
- * interrupt
- */
- out8(OCW3_2, 0x0b);
- if (~(in8(ISR_2) & 0x80)) {
- return -1;
- }
- }
- } else if (irq == 7) {
- /*
- * This may be a spurious interrupt
- *
- * Read the interrupt status register. If the most
- * significant bit is not set then there is no valid
- * interrupt
- */
- out8(OCW3_1, 0x0b);
- if (~(in8(ISR_1) & 0x80)) {
- return -1;
- }
- }
- return irq;
-}
-
-/*
- * Careful! The 8259A is a fragile beast, it pretty
- * much _has_ to be done exactly like this (mask it
- * first, _then_ send the EOI, and the order of EOI
- * to the two 8259s is important!
- */
-void i8259_mask_and_ack(int irq)
-{
- if (irq > 7) {
- cached_imr2 |= (1 << (irq - 8));
- in8(IMR_2); /* DUMMY */
- out8(IMR_2, cached_imr2);
- out8(OCW2_2, 0x20); /* Non-specific EOI */
- out8(OCW2_1, 0x20); /* Non-specific EOI to cascade */
- } else {
- cached_imr1 |= (1 << irq);
- in8(IMR_1); /* DUMMY */
- out8(IMR_1, cached_imr1);
- out8(OCW2_1, 0x20); /* Non-specific EOI */
- }
-}
-
-void i8259_mask_irq(int irq)
-{
- if (irq & 8) {
- cached_imr2 |= (1 << (irq & 7));
- out8(IMR_2, cached_imr2);
- } else {
- cached_imr1 |= (1 << irq);
- out8(IMR_1, cached_imr1);
- }
-}
-
-void i8259_unmask_irq(int irq)
-{
- if (irq & 8) {
- cached_imr2 &= ~(1 << (irq & 7));
- out8(IMR_2, cached_imr2);
- } else {
- cached_imr1 &= ~(1 << irq);
- out8(IMR_1, cached_imr1);
- }
-}
diff --git a/board/MAI/AmigaOneG3SE/i8259.h b/board/MAI/AmigaOneG3SE/i8259.h
deleted file mode 100644
index 05c40522d1..0000000000
--- a/board/MAI/AmigaOneG3SE/i8259.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (C) Copyright 2002
- * John W. Linville, linville@tuxdriver.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
- */
-
-#define ICW1_1 CFG_ISA_IO_BASE_ADDRESS + ISA_INT1_ICW1
-#define ICW1_2 CFG_ISA_IO_BASE_ADDRESS + ISA_INT2_ICW1
-#define ICW2_1 CFG_ISA_IO_BASE_ADDRESS + ISA_INT1_ICW2
-#define ICW2_2 CFG_ISA_IO_BASE_ADDRESS + ISA_INT2_ICW2
-#define ICW3_1 CFG_ISA_IO_BASE_ADDRESS + ISA_INT1_ICW3
-#define ICW3_2 CFG_ISA_IO_BASE_ADDRESS + ISA_INT2_ICW3
-#define ICW4_1 CFG_ISA_IO_BASE_ADDRESS + ISA_INT1_ICW4
-#define ICW4_2 CFG_ISA_IO_BASE_ADDRESS + ISA_INT2_ICW4
-#define OCW1_1 CFG_ISA_IO_BASE_ADDRESS + ISA_INT1_OCW1
-#define OCW1_2 CFG_ISA_IO_BASE_ADDRESS + ISA_INT2_OCW1
-#define OCW2_1 CFG_ISA_IO_BASE_ADDRESS + ISA_INT1_OCW2
-#define OCW2_2 CFG_ISA_IO_BASE_ADDRESS + ISA_INT2_OCW2
-#define OCW3_1 CFG_ISA_IO_BASE_ADDRESS + ISA_INT1_OCW3
-#define OCW3_2 CFG_ISA_IO_BASE_ADDRESS + ISA_INT2_OCW3
-
-#define IMR_1 OCW1_1
-#define IMR_2 OCW1_2
-
-#define ISR_1 ICW1_1
-#define ISR_2 ICW1_2
-
-#define IPL_1 ICW1_1
-#define IPL_2 ICW1_2
-
-extern void i8259_init(void);
-
-extern int i8259_get_irq(struct pt_regs *regs);
-
-extern void i8259_mask_and_ack(int irq);
-
-extern void i8259_mask_irq(int irq);
-
-extern void i8259_unmask_irq(int irq);
diff --git a/board/MAI/AmigaOneG3SE/interrupts.c b/board/MAI/AmigaOneG3SE/interrupts.c
deleted file mode 100644
index 5b314a8b71..0000000000
--- a/board/MAI/AmigaOneG3SE/interrupts.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * (C) Copyright 2002
- * John W. Linville <linville@tuxdriver.com>
- *
- * Copied and modified from original code by Josh Huber. Original
- * copyright notice preserved below.
- *
- * (C) Copyright 2001
- * Josh Huber <huber@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
- */
-
-/*
- * interrupts.c - just enough support for the decrementer/timer
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include "i8259.h"
-
-#undef DEBUG
-#ifdef DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-#define NR_IRQS 16
-
-void irq_alloc_init(void);
-long irq_alloc(long wanted);
-
-/****************************************************************************/
-
-unsigned decrementer_count; /* count value for 1e6/HZ microseconds */
-
-struct irq_action {
- interrupt_handler_t *handler;
- void *arg;
- ulong count;
-};
-
-static struct irq_action irq_handlers[NR_IRQS];
-
-/****************************************************************************/
-
-static __inline__ unsigned long
-get_msr(void)
-{
- unsigned long msr;
-
- asm volatile("mfmsr %0" : "=r" (msr) :);
- return msr;
-}
-
-static __inline__ void
-set_msr(unsigned long msr)
-{
- asm volatile("mtmsr %0" : : "r" (msr));
-}
-
-static __inline__ unsigned long
-get_dec(void)
-{
- unsigned long val;
-
- asm volatile("mfdec %0" : "=r" (val) :);
- return val;
-}
-
-
-static __inline__ void
-set_dec(unsigned long val)
-{
- asm volatile("mtdec %0" : : "r" (val));
-}
-
-
-void
-enable_interrupts(void)
-{
- set_msr (get_msr() | MSR_EE);
-}
-
-/* returns flag if MSR_EE was set before */
-int
-disable_interrupts(void)
-{
- ulong msr;
-
- msr = get_msr();
- set_msr (msr & ~MSR_EE);
- return ((msr & MSR_EE) != 0);
-}
-
-/****************************************************************************/
-
-int interrupt_init (void)
-{
- extern void new_reset(void);
- extern void new_reset_end(void);
-#ifdef DEBUG
- puts("interrupt_init: setting decrementer_count\n");
-#endif
- decrementer_count = get_tbclk() / CFG_HZ;
-
-#ifdef DEBUG
- puts("interrupt_init: setting actual decremter\n");
-#endif
- set_dec (get_tbclk() / CFG_HZ);
-
-#ifdef DEBUG
- puts("interrupt_init: clearing external interrupt table\n");
-#endif
- /* clear external interrupt table here */
- memset(irq_handlers, 0, sizeof(irq_handlers));
-
-#ifdef DEBUG
- puts("interrupt_init: initializing interrupt controller\n");
-#endif
- i8259_init();
-
-#ifdef DEBUG
- puts("Copying reset trampoline\n");
-#endif
- /* WARNING: Assmues that the first megabyte is CACHEINHIBIT! */
- memcpy((void *)0x100, new_reset, new_reset_end - new_reset);
-
-#ifdef DEBUG
- PRINTF("interrupt_init: enabling interrupts (msr = %08x)\n",
- get_msr());
-#endif
- set_msr (get_msr() | MSR_EE);
-
-#ifdef DEBUG
- PRINTF("interrupt_init: done. (msr = %08x)\n", get_msr());
-#endif
-
-}
-
-/****************************************************************************/
-
-/*
- * Handle external interrupts
- */
-void
-external_interrupt(struct pt_regs *regs)
-{
- extern int i8259_irq(void);
-
- int irq, unmask = 1;
-
- irq = i8259_irq(); /*i8259_get_irq(regs); */
-/* printf("irq = %d, handler at %p ack=%d\n", irq, irq_handlers[irq].handler, *(volatile unsigned char *)0xFEF00000); */
- i8259_mask_and_ack(irq);
-
- if (irq_handlers[irq].handler != NULL)
- (*irq_handlers[irq].handler)(irq_handlers[irq].arg);
- else {
- PRINTF ("\nBogus External Interrupt IRQ %d\n", irq);
- /*
- * turn off the bogus interrupt, otherwise it
- * might repeat forever
- */
- unmask = 0;
- }
-
- if (unmask) i8259_unmask_irq(irq);
-}
-
-volatile ulong timestamp = 0;
-
-/*
- * timer_interrupt - gets called when the decrementer overflows,
- * with interrupts disabled.
- * Trivial implementation - no need to be really accurate.
- */
-void
-timer_interrupt(struct pt_regs *regs)
-{
- set_dec(decrementer_count);
- timestamp++;
-}
-
-/****************************************************************************/
-
-void
-reset_timer(void)
-{
- timestamp = 0;
-}
-
-ulong
-get_timer(ulong base)
-{
- return (timestamp - base);
-}
-
-void
-set_timer(ulong t)
-{
- timestamp = t;
-}
-
-/****************************************************************************/
-
-/*
- * Install and free a interrupt handler.
- */
-
-void
-irq_install_handler(int irq, interrupt_handler_t *handler, void *arg)
-{
- if (irq < 0 || irq >= NR_IRQS) {
- PRINTF("irq_install_handler: bad irq number %d\n", irq);
- return;
- }
-
- if (irq_handlers[irq].handler != NULL)
- PRINTF("irq_install_handler: 0x%08lx replacing 0x%08lx\n",
- (ulong)handler, (ulong)irq_handlers[irq].handler);
-
- irq_handlers[irq].handler = handler;
- irq_handlers[irq].arg = arg;
-
- i8259_unmask_irq(irq);
-}
-
-void
-irq_free_handler(int irq)
-{
- if (irq < 0 || irq >= NR_IRQS) {
- PRINTF("irq_free_handler: bad irq number %d\n", irq);
- return;
- }
-
- i8259_mask_irq(irq);
-
- irq_handlers[irq].handler = NULL;
- irq_handlers[irq].arg = NULL;
-}
-
-/****************************************************************************/
-
-void
-do_irqinfo(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
-{
- puts("IRQ related functions are unimplemented currently.\n");
-}
diff --git a/board/MAI/AmigaOneG3SE/macros.h b/board/MAI/AmigaOneG3SE/macros.h
deleted file mode 100644
index 6020d7e1cb..0000000000
--- a/board/MAI/AmigaOneG3SE/macros.h
+++ /dev/null
@@ -1,84 +0,0 @@
-
-#ifndef _MACROS_H
-#define _MACROS_H
-
- /*
- ** Load a long integer into a register
- */
- .macro liw reg, value
- lis \reg, \value@h
- ori \reg, \reg, \value@l
- .endm
-
-
- /*
- ** Generate config_addr request
- ** This macro expects the values in registers:
- ** r3 - bus
- ** r4 - devfn
- ** r5 - offset
- */
- .macro config_addr
- rlwinm r9, r5, 24, 0, 6
- rlwinm r8, r4, 16, 0, 31
- rlwinm r7, r3, 8, 0, 31
- or r9, r8, r9
- or r9, r7, r9
- ori r9, r9, 0x80
- liw r10, 0xfec00cf8
- stw r9, 0(r10)
- eieio
- sync
- .endm
-
-
- /*
- ** Generate config_data address
- */
- .macro config_data mask
- andi. r9, r5, \mask
- addi r9, r9, 0xcfc
- oris r9, r9, 0xfee0
- .endm
-
-
- /*
- ** Write a byte value to an output port
- */
- .macro outb port, value
- lis r2, 0xfe00
- li r0, \value
- stb r0, \port(r2)
- .endm
-
-
- /*
- ** Write a register byte value to an output port
- */
- .macro outbr port, value
- lis r2, 0xfe00
- stb \value, \port(r2)
- .endm
-
-
- /*
- ** Read a byte value from a port into a specified register
- */
- .macro inb reg, port
- lis r2, 0xfe00
- lbz \reg, \port(r2)
- .endm
-
-
- /*
- ** Write a byte to the SuperIO config area
- */
- .macro siowb offset, value
- li r3, 0
- li r4, (7<<3)
- li r5, \offset
- li r6, \value
- bl pci_write_cfg_byte
- .endm
-
-#endif
diff --git a/board/MAI/AmigaOneG3SE/memio.S b/board/MAI/AmigaOneG3SE/memio.S
deleted file mode 100644
index 980d343556..0000000000
--- a/board/MAI/AmigaOneG3SE/memio.S
+++ /dev/null
@@ -1,67 +0,0 @@
-#include "macros.h"
-
-
- .globl pci_read_cfg_byte
-
-pci_read_cfg_byte:
- config_addr
- config_data 3
- eieio
- sync
- lbz r3, 0(r9)
- blr
-
-
- .globl pci_write_cfg_byte
-
-pci_write_cfg_byte:
- config_addr
- config_data 3
- stb r6, 0(r9)
- eieio
- sync
- blr
-
-
- .globl pci_read_cfg_word
-
-pci_read_cfg_word:
- config_addr
- config_data 2
- lhbrx r3, 0, r9
- eieio
- sync
- blr
-
-
- .globl pci_write_cfg_word
-
-pci_write_cfg_word:
- config_addr
- config_data 2
- sthbrx r6, 0, r9
- eieio
- sync
- blr
-
-
- .globl pci_read_cfg_long
-
-pci_read_cfg_long:
- config_addr
- config_data 0
- lwbrx r3, 0, r9
- eieio
- sync
- blr
-
-
- .globl pci_write_cfg_long
-
-pci_write_cfg_long:
- config_addr
- config_data 0
- stwbrx r6, 0, r9
- eieio
- sync
- blr
diff --git a/board/MAI/AmigaOneG3SE/memio.h b/board/MAI/AmigaOneG3SE/memio.h
deleted file mode 100644
index f5ce303070..0000000000
--- a/board/MAI/AmigaOneG3SE/memio.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Memory mapped IO
- *
- * (C) Copyright 2002
- * Hyperion Entertainment, ThomasF@hyperion-entertainment.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.
- * You may also use this under a BSD license.
- *
- * 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.
- *
- */
-
-#ifndef _MEMIO_H
-#define _MEMIO_H
-
-#include "short_types.h"
-
-#define IOBASE 0xFE000000
-
-#define in_byte(from) read_byte( (uint8 *)(IOBASE | (from)))
-#define in_word(from) read_word_little((uint16 *)(IOBASE | (from)))
-#define in_long(from) read_long_little((uint32 *)(IOBASE | (from)))
-#define out_byte(to, val) write_byte((uint8 *)(IOBASE | (to)), val)
-#define out_word(to, val) write_word_little((uint16 *)(IOBASE | (to)), val)
-#define out_long(to, val) write_long_little((uint32 *)(IOBASE | (to)), val)
-
-
-static inline uint8 read_byte(volatile uint8 *from)
-{
- int x;
- asm volatile ("lbz %0,%1\n eieio\n sync" : "=r" (x) : "m" (*from));
- return (uint8)x;
-}
-
-
-static inline void write_byte(volatile uint8 *to, uint8 x)
-{
- asm volatile ("stb %1,%0\n eieio\n sync" : "=m" (*to) : "r" (x));
-}
-
-static inline uint16 read_word_little(volatile uint16 *from)
-{
- int x;
- asm volatile ("lhbrx %0,0,%1\n eieio\n sync" : "=r" (x) : "r" (from), "m" (*from));
- return (uint16)x;
-}
-
-static inline uint16 read_word_big(volatile uint16 *from)
-{
- int x;
- asm volatile ("lhz %0,%1\n eieio\n sync" : "=r" (x) : "m" (*from));
- return (uint16)x;
-}
-
-static inline void write_word_little(volatile uint16 *to, int x)
-{
- asm volatile ("sthbrx %1,0,%2\n eieio\n sync" : "=m" (*to) : "r" (x), "r" (to));
-}
-
-static inline void write_word_big(volatile uint16 *to, int x)
-{
- asm volatile ("sth %1,%0\n eieio\n sync" : "=m" (*to) : "r" (x));
-}
-
-static inline uint32 read_long_little(volatile uint32 *from)
-{
- unsigned long x;
- asm volatile ("lwbrx %0,0,%1\n eieio\n sync" : "=r" (x) : "r" (from), "m"(*from));
- return (uint32)x;
-}
-
-static inline uint32 read_long_big(volatile uint32 *from)
-{
- unsigned long x;
- asm volatile ("lwz %0,%1\n eieio\n sync" : "=r" (x) : "m" (*from));
- return (uint32)x;
-}
-
-static inline void write_long_little(volatile uint32 *to, uint32 x)
-{
- asm volatile ("stwbrx %1,0,%2\n eieio\n sync" : "=m" (*to) : "r" (x), "r" (to));
-}
-
-static inline void write_long_big(volatile uint32 *to, uint32 x)
-{
- asm volatile ("stw %1,%0\n eieio\n sync" : "=m" (*to) : "r" (x));
-}
-
-#define CONFIG_ADDR(bus, devfn, offset) \
- write_long_big((uint32 *)0xFEC00CF8, \
- ((offset & 0xFC)<<24) | (devfn << 16) \
- | (bus<<8) | 0x80);
-#define CONFIG_DATA(offset,mask) ((void *)(0xFEE00CFC+(offset & mask)))
-
-
-uint8 pci_read_cfg_byte(int32 bus, int32 devfn, int32 offset);
-void pci_write_cfg_byte(int32 bus, int32 devfn, int32 offset, uint8 x);
-uint16 pci_read_cfg_word(int32 bus, int32 devfn, int32 offset);
-void pci_write_cfg_word(int32 bus, int32 devfn, int32 offset, uint16 x);
-uint32 pci_read_cfg_long(int32 bus, int32 devfn, int32 offset);
-void pci_write_cfg_long(int32 bus, int32 devfn, int32 offset, uint32 x);
-
-
-#endif
diff --git a/board/MAI/AmigaOneG3SE/memory_dump b/board/MAI/AmigaOneG3SE/memory_dump
deleted file mode 100644
index 65e79362a6..0000000000
--- a/board/MAI/AmigaOneG3SE/memory_dump
+++ /dev/null
@@ -1,30 +0,0 @@
-64 MB:
-0x00: 80 08 04 0c 09 01 40 00 01 a0 60 00 80 08 00 01
-0x10: 8f 04 04 01 01 00 06 a0 60 00 00 14 10 14 2d 10
-0x20: 20 10 20 10 00 00 00 00 00 00 00 00 00 00 00 00
-0x30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 f2
-0x40: 7f 61 00 00 00 00 00 00 46 04 00 ff ff ff ff ff
-0x50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
-0x60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
-0x70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff 64 f4
-
-512 MB:
-0x00: 80 08 04 0d 0a 02 40 00 01 75 54 00 82 08 00 01
-0x10: 8f 04 04 01 01 00 0f 00 00 00 00 14 0f 14 2d 40
-0x20: 15 08 15 08 00 00 00 00 00 00 00 00 00 00 00 00
-0x30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 d2
-0x40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0x50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0x60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0x70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 fd
-
-256 MB:
-0x00: 80 08 04 0c 0a 02 40 00 01 75 54 00 80 08 00 01
-0x10: 8f 04 06 01 01 00 0e a0 60 00 00 14 0f 14 2d 20
-0x20: 15 08 15 08 00 00 00 00 00 00 00 00 00 00 00 00
-0x30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 b0
-0x40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0x50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0x60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-0x70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 f6
-
diff --git a/board/MAI/AmigaOneG3SE/nvram.c b/board/MAI/AmigaOneG3SE/nvram.c
deleted file mode 100644
index d37eec1f9b..0000000000
--- a/board/MAI/AmigaOneG3SE/nvram.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * (C) Copyright 2002
- * Thomas Frieden, Hyperion Entertainment
- * ThomasF@hyperion-entertainment.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
- */
-
-#include <common.h>
-#include "memio.h"
-
-void enable_nvram(void)
-{
- pci_write_cfg_byte(0, 0, 0x56, 0x0b);
-}
-
-void disable_nvram(void)
-{
- pci_write_cfg_byte(0, 0, 0x56, 0x0);
-}
diff --git a/board/MAI/AmigaOneG3SE/ps2kbd.c b/board/MAI/AmigaOneG3SE/ps2kbd.c
deleted file mode 100644
index cf4f4d0e3d..0000000000
--- a/board/MAI/AmigaOneG3SE/ps2kbd.c
+++ /dev/null
@@ -1,690 +0,0 @@
-/*
- * (C) Copyright 2002
- * John W. Linville, linville@tuxdriver.com
- *
- * Modified from code for support of MIP405 and PIP405 boards. Previous
- * copyright follows.
- *
- * (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
- *
- *
- * Source partly derived from:
- * linux/drivers/char/pc_keyb.c
- *
- *
- */
-#include <common.h>
-#include <asm/processor.h>
-#include <devices.h>
-#include "ps2kbd.h"
-
-
-unsigned char kbd_read_status(void);
-unsigned char kbd_read_input(void);
-void kbd_send_data(unsigned char data);
-void i8259_mask_irq(unsigned int irq);
-void i8259_unmask_irq(unsigned int irq);
-
-/* used only by send_data - set by keyboard_interrupt */
-
-
-#undef KBG_DEBUG
-
-#ifdef KBG_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-#define KBD_STAT_KOBF 0x01
-#define KBD_STAT_IBF 0x02
-#define KBD_STAT_SYS 0x04
-#define KBD_STAT_CD 0x08
-#define KBD_STAT_LOCK 0x10
-#define KBD_STAT_MOBF 0x20
-#define KBD_STAT_TI_OUT 0x40
-#define KBD_STAT_PARERR 0x80
-
-#define KBD_INIT_TIMEOUT 2000 /* Timeout in ms for initializing the keyboard */
-#define KBC_TIMEOUT 250 /* Timeout in ms for sending to keyboard controller */
-#define KBD_TIMEOUT 2000 /* Timeout in ms for keyboard command acknowledge */
-/*
- * Keyboard Controller Commands
- */
-
-#define KBD_CCMD_READ_MODE 0x20 /* Read mode bits */
-#define KBD_CCMD_WRITE_MODE 0x60 /* Write mode bits */
-#define KBD_CCMD_GET_VERSION 0xA1 /* Get controller version */
-#define KBD_CCMD_MOUSE_DISABLE 0xA7 /* Disable mouse interface */
-#define KBD_CCMD_MOUSE_ENABLE 0xA8 /* Enable mouse interface */
-#define KBD_CCMD_TEST_MOUSE 0xA9 /* Mouse interface test */
-#define KBD_CCMD_SELF_TEST 0xAA /* Controller self test */
-#define KBD_CCMD_KBD_TEST 0xAB /* Keyboard interface test */
-#define KBD_CCMD_KBD_DISABLE 0xAD /* Keyboard interface disable */
-#define KBD_CCMD_KBD_ENABLE 0xAE /* Keyboard interface enable */
-#define KBD_CCMD_WRITE_AUX_OBUF 0xD3 /* Write to output buffer as if
- initiated by the auxiliary device */
-#define KBD_CCMD_WRITE_MOUSE 0xD4 /* Write the following byte to the mouse */
-
-/*
- * Keyboard Commands
- */
-
-#define KBD_CMD_SET_LEDS 0xED /* Set keyboard leds */
-#define KBD_CMD_SET_RATE 0xF3 /* Set typematic rate */
-#define KBD_CMD_ENABLE 0xF4 /* Enable scanning */
-#define KBD_CMD_DISABLE 0xF5 /* Disable scanning */
-#define KBD_CMD_RESET 0xFF /* Reset */
-
-/*
- * Keyboard Replies
- */
-
-#define KBD_REPLY_POR 0xAA /* Power on reset */
-#define KBD_REPLY_ACK 0xFA /* Command ACK */
-#define KBD_REPLY_RESEND 0xFE /* Command NACK, send the cmd again */
-
-/*
- * Status Register Bits
- */
-
-#define KBD_STAT_OBF 0x01 /* Keyboard output buffer full */
-#define KBD_STAT_IBF 0x02 /* Keyboard input buffer full */
-#define KBD_STAT_SELFTEST 0x04 /* Self test successful */
-#define KBD_STAT_CMD 0x08 /* Last write was a command write (0=data) */
-#define KBD_STAT_UNLOCKED 0x10 /* Zero if keyboard locked */
-#define KBD_STAT_MOUSE_OBF 0x20 /* Mouse output buffer full */
-#define KBD_STAT_GTO 0x40 /* General receive/xmit timeout */
-#define KBD_STAT_PERR 0x80 /* Parity error */
-
-#define AUX_STAT_OBF (KBD_STAT_OBF | KBD_STAT_MOUSE_OBF)
-
-/*
- * Controller Mode Register Bits
- */
-
-#define KBD_MODE_KBD_INT 0x01 /* Keyboard data generate IRQ1 */
-#define KBD_MODE_MOUSE_INT 0x02 /* Mouse data generate IRQ12 */
-#define KBD_MODE_SYS 0x04 /* The system flag (?) */
-#define KBD_MODE_NO_KEYLOCK 0x08 /* The keylock doesn't affect the keyboard if set */
-#define KBD_MODE_DISABLE_KBD 0x10 /* Disable keyboard interface */
-#define KBD_MODE_DISABLE_MOUSE 0x20 /* Disable mouse interface */
-#define KBD_MODE_KCC 0x40 /* Scan code conversion to PC format */
-#define KBD_MODE_RFU 0x80
-
-
-#define KDB_DATA_PORT 0x60
-#define KDB_COMMAND_PORT 0x64
-
-#define LED_SCR 0x01 /* scroll lock led */
-#define LED_CAP 0x04 /* caps lock led */
-#define LED_NUM 0x02 /* num lock led */
-
-#define KBD_BUFFER_LEN 0x20 /* size of the keyboardbuffer */
-
-
-static volatile char kbd_buffer[KBD_BUFFER_LEN];
-static volatile int in_pointer = 0;
-static volatile int out_pointer = 0;
-
-
-static unsigned char num_lock = 0;
-static unsigned char caps_lock = 0;
-static unsigned char scroll_lock = 0;
-static unsigned char shift = 0;
-static unsigned char ctrl = 0;
-static unsigned char alt = 0;
-static unsigned char e0 = 0;
-static unsigned char leds = 0;
-
-#define DEVNAME "ps2kbd"
-
-/* Simple translation table for the keys */
-
-static unsigned char kbd_plain_xlate[] = {
- 0xff,0x1b, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=','\b','\t', /* 0x00 - 0x0f */
- 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']','\r',0xff, 'a', 's', /* 0x10 - 0x1f */
- 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';','\'', '`',0xff,'\\', 'z', 'x', 'c', 'v', /* 0x20 - 0x2f */
- 'b', 'n', 'm', ',', '.', '/',0xff,0xff,0xff, ' ',0xff,0xff,0xff,0xff,0xff,0xff, /* 0x30 - 0x3f */
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff, '7', '8', '9', '-', '4', '5', '6', '+', '1', /* 0x40 - 0x4f */
- '2', '3', '0', '.',0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /* 0x50 - 0x5F */
- '\r',0xff,0xff
- };
-
-static unsigned char kbd_shift_xlate[] = {
- 0xff,0x1b, '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+','\b','\t', /* 0x00 - 0x0f */
- 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}','\r',0xff, 'A', 'S', /* 0x10 - 0x1f */
- 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', '~',0xff, '|', 'Z', 'X', 'C', 'V', /* 0x20 - 0x2f */
- 'B', 'N', 'M', '<', '>', '?',0xff,0xff,0xff, ' ',0xff,0xff,0xff,0xff,0xff,0xff, /* 0x30 - 0x3f */
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff, '7', '8', '9', '-', '4', '5', '6', '+', '1', /* 0x40 - 0x4f */
- '2', '3', '0', '.',0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /* 0x50 - 0x5F */
- '\r',0xff,0xff
- };
-
-static unsigned char kbd_ctrl_xlate[] = {
- 0xff,0x1b, '1',0x00, '3', '4', '5',0x1E, '7', '8', '9', '0',0x1F, '=','\b','\t', /* 0x00 - 0x0f */
- 0x11,0x17,0x05,0x12,0x14,0x18,0x15,0x09,0x0f,0x10,0x1b,0x1d,'\n',0xff,0x01,0x13, /* 0x10 - 0x1f */
- 0x04,0x06,0x08,0x09,0x0a,0x0b,0x0c, ';','\'', '~',0x00,0x1c,0x1a,0x18,0x03,0x16, /* 0x20 - 0x2f */
- 0x02,0x0e,0x0d, '<', '>', '?',0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff, /* 0x30 - 0x3f */
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff, '7', '8', '9', '-', '4', '5', '6', '+', '1', /* 0x40 - 0x4f */
- '2', '3', '0', '.',0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /* 0x50 - 0x5F */
- '\r',0xff,0xff
- };
-
-/******************************************************************
- * Init
- ******************************************************************/
-
-int isa_kbd_init(void)
-{
- char* result;
- result=kbd_initialize();
- if (result != NULL)
- {
- result = kbd_initialize();
- }
- if(result==NULL) {
- printf("AT Keyboard initialized\n");
- irq_install_handler(KBD_INTERRUPT, (interrupt_handler_t *)kbd_interrupt, NULL);
- return (1);
- }
- else {
- printf("%s\n",result);
- return (-1);
- }
-}
-
-#ifdef CFG_CONSOLE_OVERWRITE_ROUTINE
-extern int overwrite_console (void);
-#else
-int overwrite_console (void)
-{
- return (0);
-}
-#endif
-
-int drv_isa_kbd_init (void)
-{
- int error;
- device_t kbddev ;
- char *stdinname = getenv ("stdin");
-
- if(isa_kbd_init()==-1)
- return -1;
- memset (&kbddev, 0, sizeof(kbddev));
- strcpy(kbddev.name, DEVNAME);
- kbddev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;
- kbddev.putc = NULL ;
- kbddev.puts = NULL ;
- kbddev.getc = kbd_getc ;
- kbddev.tstc = kbd_testc ;
-
- error = device_register (&kbddev);
- if(error==0) {
- /* check if this is the standard input device */
- if(strcmp(stdinname,DEVNAME)==0) {
- /* reassign the console */
- if(overwrite_console()) {
- return 1;
- }
- error=console_assign(stdin,DEVNAME);
- if(error==0)
- return 1;
- else
- return error;
- }
- return 1;
- }
- return error;
-}
-
-/******************************************************************
- * Queue handling
- ******************************************************************/
-/* puts character in the queue and sets up the in and out pointer */
-void kbd_put_queue(char data)
-{
- if((in_pointer+1)==KBD_BUFFER_LEN) {
- if(out_pointer==0) {
- return; /* buffer full */
- } else{
- in_pointer=0;
- }
- } else {
- if((in_pointer+1)==out_pointer)
- return; /* buffer full */
- in_pointer++;
- }
- kbd_buffer[in_pointer]=data;
- return;
-}
-
-/* test if a character is in the queue */
-int kbd_testc(void)
-{
- if(in_pointer==out_pointer)
- return(0); /* no data */
- else
- return(1);
-}
-/* gets the character from the queue */
-int kbd_getc(void)
-{
- char c;
-
- while(in_pointer==out_pointer);
- if((out_pointer+1)==KBD_BUFFER_LEN)
- out_pointer=0;
- else
- out_pointer++;
- c=kbd_buffer[out_pointer];
- return (int)c;
-
-}
-
-
-/* set LEDs */
-
-void kbd_set_leds(void)
-{
- if(caps_lock==0)
- leds&=~LED_CAP; /* switch caps_lock off */
- else
- leds|=LED_CAP; /* switch on LED */
- if(num_lock==0)
- leds&=~LED_NUM; /* switch LED off */
- else
- leds|=LED_NUM; /* switch on LED */
- if(scroll_lock==0)
- leds&=~LED_SCR; /* switch LED off */
- else
- leds|=LED_SCR; /* switch on LED */
- kbd_send_data(KBD_CMD_SET_LEDS);
- kbd_send_data(leds);
-}
-
-
-void handle_keyboard_event(unsigned char scancode)
-{
- unsigned char keycode;
-
- /* Convert scancode to keycode */
- PRINTF("scancode %x\n",scancode);
- if(scancode==0xe0) {
- e0=1; /* special charakters */
- return;
- }
- if(e0==1) {
- e0=0; /* delete flag */
- if(!( ((scancode&0x7F)==0x38)|| /* the right ctrl key */
- ((scancode&0x7F)==0x1D)|| /* the right alt key */
- ((scancode&0x7F)==0x35)|| /* the right '/' key */
- ((scancode&0x7F)==0x1C)|| /* the right enter key */
- ((scancode)==0x48)|| /* arrow up */
- ((scancode)==0x50)|| /* arrow down */
- ((scancode)==0x4b)|| /* arrow left */
- ((scancode)==0x4d))) /* arrow right */
- /* we swallow unknown e0 codes */
- return;
- }
- /* special cntrl keys */
- switch(scancode)
- {
- case 0x48:
- kbd_put_queue(27);
- kbd_put_queue(91);
- kbd_put_queue('A');
- return;
- case 0x50:
- kbd_put_queue(27);
- kbd_put_queue(91);
- kbd_put_queue('B');
- return;
- case 0x4b:
- kbd_put_queue(27);
- kbd_put_queue(91);
- kbd_put_queue('D');
- return;
- case 0x4D:
- kbd_put_queue(27);
- kbd_put_queue(91);
- kbd_put_queue('C');
- return;
- case 0x58: /* F12 key */
- if (ctrl == 1)
- {
- extern int console_changed;
- setenv("stdin", DEVNAME);
- setenv("stdout", "vga");
- console_changed = 1;
- }
- return;
- case 0x2A:
- case 0x36: /* shift pressed */
- shift=1;
- return; /* do nothing else */
- case 0xAA:
- case 0xB6: /* shift released */
- shift=0;
- return; /* do nothing else */
- case 0x38: /* alt pressed */
- alt=1;
- return; /* do nothing else */
- case 0xB8: /* alt released */
- alt=0;
- return; /* do nothing else */
- case 0x1d: /* ctrl pressed */
- ctrl=1;
- return; /* do nothing else */
- case 0x9d: /* ctrl released */
- ctrl=0;
- return; /* do nothing else */
- case 0x46: /* scrollock pressed */
- scroll_lock=~scroll_lock;
- kbd_set_leds();
- return; /* do nothing else */
- case 0x3A: /* capslock pressed */
- caps_lock=~caps_lock;
- kbd_set_leds();
- return;
- case 0x45: /* numlock pressed */
- num_lock=~num_lock;
- kbd_set_leds();
- return;
- case 0xC6: /* scroll lock released */
- case 0xC5: /* num lock released */
- case 0xBA: /* caps lock released */
- return; /* just swallow */
- }
- if((scancode&0x80)==0x80) /* key released */
- return;
- /* now, decide which table we need */
- if(scancode > (sizeof(kbd_plain_xlate)/sizeof(kbd_plain_xlate[0]))) { /* scancode not in list */
- PRINTF("unkown scancode %X\n",scancode);
- return; /* swallow it */
- }
- /* setup plain code first */
- keycode=kbd_plain_xlate[scancode];
- if(caps_lock==1) { /* caps_lock is pressed, overwrite plain code */
- if(scancode > (sizeof(kbd_shift_xlate)/sizeof(kbd_shift_xlate[0]))) { /* scancode not in list */
- PRINTF("unkown caps-locked scancode %X\n",scancode);
- return; /* swallow it */
- }
- keycode=kbd_shift_xlate[scancode];
- if(keycode<'A') { /* we only want the alphas capital */
- keycode=kbd_plain_xlate[scancode];
- }
- }
- if(shift==1) { /* shift overwrites caps_lock */
- if(scancode > (sizeof(kbd_shift_xlate)/sizeof(kbd_shift_xlate[0]))) { /* scancode not in list */
- PRINTF("unkown shifted scancode %X\n",scancode);
- return; /* swallow it */
- }
- keycode=kbd_shift_xlate[scancode];
- }
- if(ctrl==1) { /* ctrl overwrites caps_lock and shift */
- if(scancode > (sizeof(kbd_ctrl_xlate)/sizeof(kbd_ctrl_xlate[0]))) { /* scancode not in list */
- PRINTF("unkown ctrl scancode %X\n",scancode);
- return; /* swallow it */
- }
- keycode=kbd_ctrl_xlate[scancode];
- }
- /* check if valid keycode */
- if(keycode==0xff) {
- PRINTF("unkown scancode %X\n",scancode);
- return; /* swallow unknown codes */
- }
-
- kbd_put_queue(keycode);
- PRINTF("%x\n",keycode);
-}
-
-/*
- * This reads the keyboard status port, and does the
- * appropriate action.
- *
- */
-unsigned char handle_kbd_event(void)
-{
- unsigned char status = kbd_read_status();
- unsigned int work = 10000;
-
- while ((--work > 0) && (status & KBD_STAT_OBF)) {
- unsigned char scancode;
-
- scancode = kbd_read_input();
-
- /* Error bytes must be ignored to make the
- Synaptics touchpads compaq use work */
- /* Ignore error bytes */
- if (!(status & (KBD_STAT_GTO | KBD_STAT_PERR)))
- {
- if (status & KBD_STAT_MOUSE_OBF)
- ; /* not supported: handle_mouse_event(scancode); */
- else
- handle_keyboard_event(scancode);
- }
- status = kbd_read_status();
- }
- if (!work)
- PRINTF("pc_keyb: controller jammed (0x%02X).\n", status);
- return status;
-}
-
-
-/******************************************************************************
- * Lowlevel Part of keyboard section
- */
-unsigned char kbd_read_status(void)
-{
- return(in8(CFG_ISA_IO_BASE_ADDRESS + KDB_COMMAND_PORT));
-}
-
-unsigned char kbd_read_input(void)
-{
- return(in8(CFG_ISA_IO_BASE_ADDRESS + KDB_DATA_PORT));
-}
-
-void kbd_write_command(unsigned char cmd)
-{
- out8(CFG_ISA_IO_BASE_ADDRESS + KDB_COMMAND_PORT,cmd);
-}
-
-void kbd_write_output(unsigned char data)
-{
- out8(CFG_ISA_IO_BASE_ADDRESS + KDB_DATA_PORT, data);
-}
-
-int kbd_read_data(void)
-{
- int val;
- unsigned char status;
-
- val=-1;
- status = kbd_read_status();
- if (status & KBD_STAT_OBF) {
- val = kbd_read_input();
- if (status & (KBD_STAT_GTO | KBD_STAT_PERR))
- val = -2;
- }
- return val;
-}
-
-int kbd_wait_for_input(void)
-{
- unsigned long timeout;
- int val;
-
- timeout = KBD_TIMEOUT;
- val=kbd_read_data();
- while(val < 0)
- {
- if(timeout--==0)
- return -1;
- udelay(1000);
- val=kbd_read_data();
- }
- return val;
-}
-
-
-int kb_wait(void)
-{
- unsigned long timeout = KBC_TIMEOUT * 10;
-
- do {
- unsigned char status = handle_kbd_event();
- if (!(status & KBD_STAT_IBF))
- return 0; /* ok */
- udelay(1000);
- timeout--;
- } while (timeout);
- return 1;
-}
-
-void kbd_write_command_w(int data)
-{
- if(kb_wait())
- PRINTF("timeout in kbd_write_command_w\n");
- kbd_write_command(data);
-}
-
-void kbd_write_output_w(int data)
-{
- if(kb_wait())
- PRINTF("timeout in kbd_write_output_w\n");
- kbd_write_output(data);
-}
-
-void kbd_send_data(unsigned char data)
-{
- unsigned char status;
- i8259_mask_irq(KBD_INTERRUPT); /* disable interrupt */
- kbd_write_output_w(data);
- status = kbd_wait_for_input();
- if (status == KBD_REPLY_ACK)
- i8259_unmask_irq(KBD_INTERRUPT); /* enable interrupt */
-}
-
-
-char * kbd_initialize(void)
-{
- int status;
-
- in_pointer = 0; /* delete in Buffer */
- out_pointer = 0;
- /*
- * Test the keyboard interface.
- * This seems to be the only way to get it going.
- * If the test is successful a x55 is placed in the input buffer.
- */
- kbd_write_command_w(KBD_CCMD_SELF_TEST);
- if (kbd_wait_for_input() != 0x55)
- return "Kbd: failed self test";
- /*
- * Perform a keyboard interface test. This causes the controller
- * to test the keyboard clock and data lines. The results of the
- * test are placed in the input buffer.
- */
- kbd_write_command_w(KBD_CCMD_KBD_TEST);
- if (kbd_wait_for_input() != 0x00)
- return "Kbd: interface failed self test";
- /*
- * Enable the keyboard by allowing the keyboard clock to run.
- */
- kbd_write_command_w(KBD_CCMD_KBD_ENABLE);
- status = kbd_wait_for_input();
- /*
- * Reset keyboard. If the read times out
- * then the assumption is that no keyboard is
- * plugged into the machine.
- * This defaults the keyboard to scan-code set 2.
- *
- * Set up to try again if the keyboard asks for RESEND.
- */
- do {
- kbd_write_output_w(KBD_CMD_RESET);
- status = kbd_wait_for_input();
- if (status == KBD_REPLY_ACK)
- break;
- if (status != KBD_REPLY_RESEND)
- {
- PRINTF("status: %X\n",status);
- return "Kbd: reset failed, no ACK";
- }
- } while (1);
- if (kbd_wait_for_input() != KBD_REPLY_POR)
- return "Kbd: reset failed, no POR";
-
- /*
- * Set keyboard controller mode. During this, the keyboard should be
- * in the disabled state.
- *
- * Set up to try again if the keyboard asks for RESEND.
- */
- do {
- kbd_write_output_w(KBD_CMD_DISABLE);
- status = kbd_wait_for_input();
- if (status == KBD_REPLY_ACK)
- break;
- if (status != KBD_REPLY_RESEND)
- return "Kbd: disable keyboard: no ACK";
- } while (1);
-
- kbd_write_command_w(KBD_CCMD_WRITE_MODE);
- kbd_write_output_w(KBD_MODE_KBD_INT
- | KBD_MODE_SYS
- | KBD_MODE_DISABLE_MOUSE
- | KBD_MODE_KCC);
-
- /* AMCC powerpc portables need this to use scan-code set 1 -- Cort */
- kbd_write_command_w(KBD_CCMD_READ_MODE);
- if (!(kbd_wait_for_input() & KBD_MODE_KCC)) {
- /*
- * If the controller does not support conversion,
- * Set the keyboard to scan-code set 1.
- */
- kbd_write_output_w(0xF0);
- kbd_wait_for_input();
- kbd_write_output_w(0x01);
- kbd_wait_for_input();
- }
- kbd_write_output_w(KBD_CMD_ENABLE);
- if (kbd_wait_for_input() != KBD_REPLY_ACK)
- return "Kbd: enable keyboard: no ACK";
-
- /*
- * Finally, set the typematic rate to maximum.
- */
- kbd_write_output_w(KBD_CMD_SET_RATE);
- if (kbd_wait_for_input() != KBD_REPLY_ACK)
- return "Kbd: Set rate: no ACK";
- kbd_write_output_w(0x00);
- if (kbd_wait_for_input() != KBD_REPLY_ACK)
- return "Kbd: Set rate: no ACK";
- return NULL;
-}
-
-void kbd_interrupt(void)
-{
- handle_kbd_event();
-}
diff --git a/board/MAI/AmigaOneG3SE/ps2kbd.h b/board/MAI/AmigaOneG3SE/ps2kbd.h
deleted file mode 100644
index fc5c4229dd..0000000000
--- a/board/MAI/AmigaOneG3SE/ps2kbd.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * (C) Copyright 2002
- * John W. Linville, linville@tuxdriver.com
- *
- * Modified from code for support of MIP405 and PIP405 boards. Previous
- * copyright follows.
- *
- * (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/MAI/AmigaOneG3SE/serial.c b/board/MAI/AmigaOneG3SE/serial.c
deleted file mode 100644
index b6f57c7246..0000000000
--- a/board/MAI/AmigaOneG3SE/serial.c
+++ /dev/null
@@ -1,245 +0,0 @@
-#include <common.h>
-#include <ns16550.h>
-#include "short_types.h"
-#include "memio.h"
-#include "articiaS.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifndef CFG_NS16550
-static uint32 ComPort1;
-
-uint16 SerialEcho = 1;
-
-
-#define RECEIVER_HOLDING 0
-#define TRANSMITTER_HOLDING 0
-#define INTERRUPT_ENABLE 1
-#define INTERRUPT_STATUS 2
-#define FIFO_CONTROL 2
-#define LINE_CONTROL 3
-#define MODEM_CONTROL 4
-#define LINE_STATUS 5
-#define MODEM_STATUS 6
-#define SCRATCH_PAD 7
-
-#define DIVISOR_LATCH_LSB 0
-#define DIVISOR_LATCH_MSB 1
-#define PRESCALER_DIVISION 5
-
-#define COM_WRITE_BYTE(reg, byte) out_byte((ComPort1+reg), byte)
-#define COM_READ_BYTE(reg) in_byte((ComPort1+reg))
-
-static int serial_init_done = 0;
-
-void serial_init (void)
-{
-#if 0
- uint32 clock_divisor = 115200 / baudrate;
- uint8 cfg;
- uint8 a;
- uint16 devfn = 7 << 3;
-
- if (serial_init_done)
- return;
-
- /* Enter configuration mode */
- cfg = pci_read_cfg_byte (0, devfn, 0x85);
- pci_write_cfg_byte (0, devfn, 0x85, cfg | 0x02);
-
- /* Set serial port COM1 as 3F8 */
- out_byte (0x3F0, 0xE7);
- out_byte (0x3f1, 0xfe);
-
- /* Set serial port COM2 as 2F8 */
- out_byte (0x3f0, 0xe8);
- out_byte (0x3f1, 0xeb);
-
- /* Enable */
- out_byte (0x3f0, 0xe2);
- a = in_byte (0x3f1);
- a |= 0xc;
- out_byte (0x3f0, 0xe2);
- out_byte (0x3f1, a);
-
- /* Reset the configuration mode */
- pci_write_cfg_byte (0, devfn, 0x85, cfg);
-#endif
-
- ComPort1 = 0x3F8;
-
- /* Disable interrupts */
- COM_WRITE_BYTE (INTERRUPT_ENABLE, 0x00);
-
- /* Set baud rate */
- /* COM_WRITE_BYTE(LINE_CONTROL, 0x83); */
- /* COM_WRITE_BYTE(DIVISOR_LATCH_LSB, (uint8)(clock_divisor & 0xFF)); */
- /* COM_WRITE_BYTE(DIVISOR_LATCH_MSB, (uint8)(clock_divisor >> 8)); */
- /* __asm("eieio"); */
-
- /* Set 8-N-1 */
- COM_WRITE_BYTE (LINE_CONTROL, 0x03);
- __asm ("eieio");
-
- /* Disable FIFO */
- COM_WRITE_BYTE (MODEM_CONTROL, 0x03);
- COM_WRITE_BYTE (FIFO_CONTROL, 0x07);
-
- __asm ("eieio");
- serial_init_done = 1;
-}
-
-extern int console_changed;
-
-void serial_putc (const char sendme)
-{
- if (sendme == '\n') {
- while ((in_byte (0x3FD) & 0x40) == 0);
- out_byte (0x3f8, 0x0D);
- }
-
- while ((in_byte (0x3FD) & 0x40) == 0);
- out_byte (0x3f8, sendme);
-}
-
-int serial_getc (void)
-{
-#if 0
- uint8 c;
-
- for (;;) {
- uint8 x = in_byte (0x3FD);
-
- if (x & 0x01)
- break;
-
- if (x & 0x0C)
- out_byte (0x3fd, 0x0c);
- }
-
- c = in_byte (0x3F8);
-
- return c;
-#else
- while ((in_byte (0x3FD) & 0x01) == 0) {
- if (console_changed != 0) {
- printf ("Console changed\n");
- console_changed = 0;
- return 0;
- }
- }
- return in_byte (0x3F8);
-#endif
-}
-
-int serial_tstc (void)
-{
- return (in_byte (0x03FD) & 0x01) != 0;
-}
-
-void serial_debug_putc (int c)
-{
- serial_puts ("DBG");
- serial_putc (c);
- serial_putc (0x0d);
- serial_putc (0x0A);
-}
-
-#else
-
-const NS16550_t Com0 = (NS16550_t) CFG_NS16550_COM1;
-const NS16550_t Com1 = (NS16550_t) CFG_NS16550_COM2;
-
-int serial_init (void)
-{
- uint32 clock_divisor = 115200 / gd->baudrate;
-
- NS16550_init (Com0, clock_divisor);
- /* NS16550_reinit(Com1, clock_divisor); */
- /* serial_puts("COM1: 3F8h initalized"); */
-
- return (0);
-}
-
-#if 0
-void serial_putc (const char c)
-{
- NS16550_putc (Com0, c);
- if (c == '\n')
- NS16550_putc (Com0, 0x0D);
-}
-
-int serial_getc (void)
-{
- return (int) NS16550_getc (Com0);
-}
-
-int serial_tstc (void)
-{
- return NS16550_tstc (Com0);
-}
-#else
-void serial_putc (const char sendme)
-{
- if (sendme == '\n') {
- while ((in_byte (0x3FD) & 0x40) == 0);
- out_byte (0x3f8, 0x0D);
- }
-
- while ((in_byte (0x3FD) & 0x40) == 0);
- out_byte (0x3f8, sendme);
-}
-
-
-extern int console_changed;
-
-int serial_getc (void)
-{
-#if 0
- uint8 c;
-
- for (;;) {
- uint8 x = in_byte (0x3FD);
-
- if (x & 0x01)
- break;
-
- if (x & 0x0C)
- out_byte (0x3fd, 0x0c);
- }
-
- c = in_byte (0x3F8);
-
- return c;
-#else
- while ((in_byte (0x3FD) & 0x01) == 0) {
- if (console_changed != 0) {
- console_changed = 0;
- return 0;
- }
- }
-
- return in_byte (0x3F8);
-#endif
-}
-
-int serial_tstc (void)
-{
- return (in_byte (0x03FD) & 0x01) != 0;
-}
-#endif
-
-#endif
-
-void serial_puts (const char *string)
-{
- while (*string)
- serial_putc (*string++);
-}
-
-void serial_setbrg (void)
-{
- uint32 clock_divisor = 115200 / gd->baudrate;
-
- NS16550_init (Com0, clock_divisor);
-}
diff --git a/board/MAI/AmigaOneG3SE/short_types.h b/board/MAI/AmigaOneG3SE/short_types.h
deleted file mode 100644
index 1840d28b45..0000000000
--- a/board/MAI/AmigaOneG3SE/short_types.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * short type names
- *
- * (C) Copyright 2002
- * Hyperion Entertainment, ThomasF@hyperion-entertainment.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
- */
-
-#ifndef _SHORT_TYPES_H
-#define _SHORT_TYPES_H
-
-typedef unsigned long uint32;
-typedef long int32;
-typedef unsigned short uint16;
-typedef short int16;
-typedef unsigned char uint8;
-typedef signed char int8;
-
-#endif
diff --git a/board/MAI/AmigaOneG3SE/smbus.c b/board/MAI/AmigaOneG3SE/smbus.c
deleted file mode 100644
index de139773ea..0000000000
--- a/board/MAI/AmigaOneG3SE/smbus.c
+++ /dev/null
@@ -1,206 +0,0 @@
-#include "memio.h"
-#include "articiaS.h"
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-
-void sm_write_mode(void)
-{
- out_byte(0xA539, 0x00);
- out_byte(0xA53A, 0x03);
-}
-
-void sm_read_mode(void)
-{
- out_byte(0xA53A, 0x02);
- out_byte(0xA539, 0x02);
-}
-
-void sm_write_byte(uint8 writeme)
-{
- int i;
- int level;
-
- out_byte(0xA539, 0x00);
-
- level = 0;
-
- for (i=0; i<8; i++)
- {
- if ((writeme & 0x80) == (level<<7))
- {
- /* Bit did not change, rewrite strobe */
- out_byte(0xA539, level | 0x02);
- out_byte(0xA539, level);
- }
- else
- {
- /* Bit changed, set bit, then strobe */
- level = (writeme & 0x80) >> 7;
- out_byte(0xA539, level);
- out_byte(0xA539, level | 0x02);
- out_byte(0xA539, level);
- }
- writeme <<= 1;
- }
- out_byte(0xA539, 0x00);
-}
-
-uint8 sm_read_byte(void)
-{
- uint8 retme, r;
- int i;
-
- retme = 0;
- for (i=0; i<8; i++)
- {
- retme <<= 1;
- out_byte(0xA539, 0x00);
- out_byte(0xA539, 0x02);
- r = in_byte(0xA538) & 0x01;
- retme |= r;
- }
-
- return retme;
-}
-
-int sm_get_ack(void)
-{
- uint8 r;
- r = in_byte(0xA538);
- if ((r&0x01) == 0) return TRUE;
- else return FALSE;
-}
-
-void sm_write_ack(void)
-{
- out_byte(0xA539, 0x00);
- out_byte(0xA539, 0x02);
- out_byte(0xA539, 0x00);
-}
-
-void sm_write_nack(void)
-{
- out_byte(0xA539, 0x01);
- out_byte(0xA539, 0x03);
- out_byte(0xA539, 0x01);
-}
-
-void sm_send_start(void)
-{
- out_byte(0xA539, 0x03);
- out_byte(0xA539, 0x02);
-}
-
-void sm_send_stop(void)
-{
- out_byte(0xA539, 0x02);
- out_byte(0xA539, 0x03);
-}
-
-int sm_read_byte_from_device(uint8 addr, uint8 reg, uint8 *storage)
-{
- /* S Addr Wr */
- sm_write_mode();
- sm_send_start();
- sm_write_byte((addr<<1));
-
- /* [A] */
- sm_read_mode();
- if (sm_get_ack() == FALSE) return FALSE;
-
- /* Comm */
- sm_write_mode();
- sm_write_byte(reg);
-
- /* [A] */
- sm_read_mode();
- if (sm_get_ack() == FALSE) return FALSE;
-
- /* S Addr Rd */
- sm_write_mode();
- sm_send_start();
- sm_write_byte((addr<<1)|1);
-
- /* [A] */
- sm_read_mode();
- if (sm_get_ack() == FALSE) return FALSE;
-
- /* [Data] */
- *storage = sm_read_byte();
-
- /* NA */
- sm_write_mode();
- sm_write_nack();
- sm_send_stop();
-
- return TRUE;
-}
-
-void sm_init(void)
-{
- /* Switch to PMC mode */
- pci_write_cfg_byte(0, 0, REG_GROUP, (uint8)(REG_GROUP_SPECIAL|REG_GROUP_POWER));
-
- /* Set GPIO Base */
- pci_write_cfg_long(0, 0, 0x40, 0xa500);
-
- /* Enable GPIO */
- pci_write_cfg_byte(0, 0, 0x44, 0x11);
-
- /* Set both GPIO 0 and 1 as output */
- out_byte(0xA53A, 0x03);
-}
-
-
-void sm_term(void)
-{
- /* Switch to normal mode */
- pci_write_cfg_byte(0, 0, REG_GROUP, 0);
-}
-
-
-int sm_get_data(uint8 *DataArray, int dimm_socket)
-{
- int j;
-
-#if 0
- /* Switch to PMC mode */
- pci_write_cfg_byte(0, 0, REG_GROUP, (uint8)(REG_GROUP_SPECIAL|REG_GROUP_POWER));
-
- /* Set GPIO Base */
- pci_write_cfg_long(0, 0, 0x40, 0xa500);
-
- /* Enable GPIO */
- pci_write_cfg_byte(0, 0, 0x44, 0x11);
-
- /* Set both GPIO 0 and 1 as output */
- out_byte(0xA53A, 0x03);
-#endif
-
- sm_init();
- /* Start reading the rom */
-
- j = 0;
-
- do
- {
- if (sm_read_byte_from_device(dimm_socket, (uint8)j, DataArray) == FALSE)
- {
- sm_term();
- return FALSE;
- }
-
- DataArray++;
- j++;
- } while (j < 128);
-
- sm_term();
- return TRUE;
-}
diff --git a/board/MAI/AmigaOneG3SE/smbus.h b/board/MAI/AmigaOneG3SE/smbus.h
deleted file mode 100644
index beeb6a06aa..0000000000
--- a/board/MAI/AmigaOneG3SE/smbus.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _SMBUS_H_
-#define _SMBUS_H_
-
-#include "short_types.h"
-
-#define SM_DIMM0_ADDR 0x51
-#define SM_DIMM1_ADDR 0x52
-
-void sm_write_mode(void);
-void sm_read_mode(void);
-void sm_write_byte(uint8 writeme);
-uint8 sm_read_byte(void);
-int sm_get_ack(void);
-void sm_write_ack(void);
-void sm_write_nack(void);
-void sm_send_start(void);
-void sm_send_stop(void);
-int sm_read_byte_from_device(uint8 addr, uint8 reg, uint8 *storage);
-int sm_get_data(uint8 *DataArray, int dimm_socket);
-void sm_init(void);
-void sm_term(void);
-#endif
diff --git a/board/MAI/AmigaOneG3SE/start.txt b/board/MAI/AmigaOneG3SE/start.txt
deleted file mode 100644
index e4214622ce..0000000000
--- a/board/MAI/AmigaOneG3SE/start.txt
+++ /dev/null
@@ -1,198 +0,0 @@
-
- /*------------------------------------------------------*/
- /* TERON Articia / SDRAM Init */
- /*------------------------------------------------------*/
-
-* XD_CTL = 0x81000000 (0x74)
-
-* HBUS_ACC_CTL_0 &= 0xFFFFFDFF (0x5c)
- /* host bus access ctl reg 2(5e) */
- /* set - CPU read from memory data one clock after data is latched */
-
-* GLOBL_INFO_0 |= 0x00004000 (0x50)
- /* global info register 2 (52), AGP/PCI bus 1 arbiter is addressed in Articia S */
-
- PCI_1_SB_CONFIG_0 |= 0x00000400 (0x80d0)
- /* PCI1 side band config reg 2 (d2), enable read acces while write buffer not empty */
-
- MEM_RAS_CTL_0 |= 0x3f000000 (0xcc)
- &= 0x3fffffff
- /* RAS park control reg 0(cc), park access enable is set */
-
- HOST_RDBUF_CTL |= 0x10000000 (0x70)
- &= 0x10ffffff
- /* host read buffer control reg, enable prefetch for CPU read from DRAM control */
-
- HBUS_ACC_CTL_0 |= 0x0100001f (0x5c)
- &= 0xf1ffffff
- /* host bus access control register, enable CPU address bus pipe control */
- /* two outstanding requests, *** changed to 2 from 3 */
- /* enable line merge write control for CPU write to system memory, PCI 1 */
- /* and PCI 0 bus memory; enable page merge write control for write to */
- /* PCI bus 0 & bus 1 memory */
-
- SRAM_CTL |= 0x00004000 (0xc8)
- &= 0xffbff7ff
- /* DRAM detail timing control register 1 (ca), bit 3 set to 0 */
- /* DRAM start access latency control - wait for one clock */
- /* ff9f changed to ffbf */
-
- DIM0_TIM_CTL_0 = 0x737d737d (0xc9)
- /* DRAM timing control for dimm0 & dimm1; set wait one clock */
- /* cycle for next data access */
-
- DIM2_TIM_CTL_0 = 0x737d737d (0xca)
- /* DRAM timing control for dimm2 & dimm3; set wait one clock */
- /* cycle for next data access */
-
- DIM0_BNK0_CTL_0 = BNK0_RAM_SIZ_128MB (0x90)
- /* set dimm0 bank0 for 128 MB */
-
- DIM0_BNK1_CTL_0 = BNK1_RAM_SIZ_128MB (0x94)
- /* set dimm0 for bank1 */
-
- DIM0_TIM_CTL_0 = 0xf3bf0000 (0xc9)
- /* dimm0 timing control register; RAS - CAS latency - 4 clock */
- /* CAS access latency - 3 wait; pre-charge latency - 3 wait */
- /* pre-charge command period control - 5 clock; wait one clock */
- /* cycle for next data access; read to write access latency control */
- /* - 2 clock cycles */
-
- DRAM_GBL_CTL_0 |= 0x00000100 (0xc0)
- &= 0xffff01ff
- /* memory global control register - support buffer sdram on bank 0 */
-
- DRAM_ECC_CTL_0 |= 0x00260000 (0xc4)
- &= 0xff26ffff
- /* enable ECC; enable read, modify, write control */
-
- DRAM_REF_CTL_0 = DRAM_REF_DATA (0xb8)
- /* set DRAM refresh parameters *** changed to 00940100 */
-
- nop
- nop
- nop
- nop
- nop
-
- DRAM_ECC_CTL_0 |= 0x20243280 (0xc4)
- /* turn off ecc */
- /* for SDRAM bank 0 */
-
- DRAM_ECC_CTL_0 |= 0x20243290 (0xc4) ?
- /* for SDRAM bank 1 */
-
-
-/* Additional Stuff...*/
-
- GLOBL_CTRL |= 0x20000b00 (0x54)
-
- PCI_0_SB_CONFIG |= 0x04100007 (0xd0)
- /* PCI 0 Side band config reg*/
-
- 0x8000083c |= 0x00080000
- /* Disable VGA decode on PCI Bus 1 */
-
-
-/*End Additional Stuff..*/
-
- /*--------------------------------------------------------------*/
- /* TERON serial port initialization code */
- /*--------------------------------------------------------------*/
-
- 0x84380080 |= 0x00030000
- /* enable super IO configuration VIA chip Register 85 */
- /* Enable super I/O config mode */
-
- 0xfe0003f0 = 0xe2
- bl delay1
-
- 0xfe0003f1 = 0x0f
- bl delay1
- /* enable com1 & com2, parallel port disabled */
-
- 0xfe0003f0 = 0xe7
- bl delay1
- /* let's make com1 base as 0x3f8 */
-
- 0xfe0003f1 = 0xfe
- bl delay1
-
- 0xfe0003f0 = 0xe8
- bl delay1
- /* let's make com2 base as 0x2f8 */
-
- 0xfe0003f1 = 0xbe
-
- 0x84380080 &= 0xfffdffff
- /* closing super IO configuration VIA chip Register 85 */
-
-
-/* -------------------------------*/
-
- 0xfe0003fb = 0x83
- bl delay1
- /*latch enable word length -8 bit */ /* set mslab bit */
- 0xfe0003f8 = 0x0c
- bl delay1
- /* set baud rate lsb for 9600 baud */
- 0xfe0003f9 = 0x0
- bl delay1
- /* set baud rate msb for 9600 baud */
- 0xfe0003fb = 0x03
- bl delay1
- /* reset mslab */
-
- /*--------------------------------------------------------------*/
- /* END TERON Serial Port Initialization Code */
- /*--------------------------------------------------------------*/
-
-
- /*--------------------------------------------------------------*/
- /* END TERON Articia / SDRAM Initialization code */
- /*--------------------------------------------------------------*/
-
-Proposed from Documentation:
-
-write dmem 0xfec00cf8 0x50000080
-write dmem 0xfee00cfc 0xc0305411
-
- Writes to index 0x50-0x53.
- 0x50: Global Information Register 0
- 0xC0 = Little Endian CPU, Sequential order Burst
- 0x51: Global Information Register 1
- Read only, 0x30 = Provides PowerPC and X86 support
- 0x52: Global Information Register 2
- 0x05 = 64/128 bit CPU bus support
- 0x53: Global Information Register 3
- 0x80 = PCI Bus 0 grant active time is 1 clock after REQ# deasserted
-
-write dmem 0xfec00cf8 0x5c000080
-write dmem 0xfee00cfc 0xb300011F
-
-write dmem 0xfec00cf8 0xc8000080
-write dmem 0xfee00cfc 0x0020f100
-
-write dmem 0xfec00cf8 0x90000080
-write dmem 0xfee00cfc 0x007fe700
-
-write dmem 0xfec00cf8 0x9400080
-write dmem 0xfee00cfc 0x007fe700
-
-write dmem 0xfec00cf8 0xb0000080
-write dmem 0xfee00cfc 0x737d737d
-
-write dmem 0xfec00cf8 0xb4000080
-write dmem 0xfee00cfc 0x737d737d
-
-write dmem 0xfec00cf8 0xc0000080
-write dmem 0xfee00cfc 0x40005500
-
-write dmem 0xfec00cf8 0xb8000080
-write dmem 0xfee00cfc 0x00940100
-
-write dmem 0xfec00cf8 0xc4000080
-write dmem 0xfee00cfc 0x00003280
-
-write dmem 0xfec00cf8 0xc4000080
-write dmem 0xfee00cfc 0x00003290
diff --git a/board/MAI/AmigaOneG3SE/todo.txt b/board/MAI/AmigaOneG3SE/todo.txt
deleted file mode 100644
index df25e3dee0..0000000000
--- a/board/MAI/AmigaOneG3SE/todo.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-- Init interrupt controller
-- init sdram
-- init ide controller \ No newline at end of file
diff --git a/board/MAI/AmigaOneG3SE/u-boot.lds b/board/MAI/AmigaOneG3SE/u-boot.lds
deleted file mode 100644
index b36b3cb450..0000000000
--- a/board/MAI/AmigaOneG3SE/u-boot.lds
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
- *
- * (C) Copyright 2002
- * 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
- */
-
-/*
- * u-boot.lds - linker script for U-Boot on the AmigaOneG3SE Board.
- */
-
-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/74xx_7xx/start.o (.text)
-/* store the environment in a seperate sector in the boot flash */
-/* . = env_offset; */
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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 = ALIGN(4) /*.*/ ;
- PROVIDE (end = ALIGN(4) /*.*/);
-}
diff --git a/board/MAI/AmigaOneG3SE/usb_uhci.c b/board/MAI/AmigaOneG3SE/usb_uhci.c
deleted file mode 100644
index 14e804308a..0000000000
--- a/board/MAI/AmigaOneG3SE/usb_uhci.c
+++ /dev/null
@@ -1,1178 +0,0 @@
-/*
- * (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
- *
- */
-
-/**********************************************************************
- * How it works:
- * -------------
- * The framelist / Transfer descriptor / Queue Heads are similar like
- * in the linux usb_uhci.c.
- *
- * During initialization, the following skeleton is allocated in init_skel:
- *
- * framespecific | common chain
- *
- * framelist[]
- * [ 0 ]-----> TD ---------\
- * [ 1 ]-----> TD ----------> TD ------> QH -------> QH -------> QH ---> NULL
- * ... TD ---------/
- * [1023]-----> TD --------/
- *
- * ^^ ^^ ^^ ^^ ^^
- * 7 TDs for 1 TD for Start of Start of End Chain
- * INT (2-128ms) 1ms-INT CTRL Chain BULK Chain
- *
- *
- * Since this is a bootloader, the isochronous transfer descriptor have been removed.
- *
- * Interrupt Transfers.
- * --------------------
- * For Interupt transfers USB_MAX_TEMP_INT_TD Transfer descriptor are available. They
- * will be inserted after the appropriate (depending the interval setting) skeleton TD.
- * If an interrupt has been detected the dev->irqhandler is called. The status and number
- * of transfered bytes is stored in dev->irq_status resp. dev->irq_act_len. If the
- * dev->irqhandler returns 0, the interrupt TD is removed and disabled. If an 1 is returned,
- * the interrupt TD will be reactivated.
- *
- * Control Transfers
- * -----------------
- * Control Transfers are issued by filling the tmp_td with the appropriate data and connect
- * them to the qh_cntrl queue header. Before other control/bulk transfers can be issued,
- * the programm has to wait for completion. This does not allows asynchronous data transfer.
- *
- * Bulk Transfers
- * --------------
- * Bulk Transfers are issued by filling the tmp_td with the appropriate data and connect
- * them to the qh_bulk queue header. Before other control/bulk transfers can be issued,
- * the programm has to wait for completion. This does not allows asynchronous data transfer.
- *
- *
- */
-
-#include <common.h>
-#include <pci.h>
-
-#ifdef CONFIG_USB_UHCI
-
-#include <usb.h>
-#include "usb_uhci.h"
-
-#define USB_MAX_TEMP_TD 128 /* number of temporary TDs for bulk and control transfers */
-#define USB_MAX_TEMP_INT_TD 32 /* number of temporary TDs for Interrupt transfers */
-
-
-/*#define USB_UHCI_DEBUG */
-
-#ifdef USB_UHCI_DEBUG
-#define USB_UHCI_PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define USB_UHCI_PRINTF(fmt,args...)
-#endif
-
-
-static int irqvec = -1; /* irq vector, if -1 uhci is stopped / reseted */
-unsigned int usb_base_addr; /* base address */
-
-static uhci_td_t td_int[8]; /* Interrupt Transfer descriptors */
-static uhci_qh_t qh_cntrl; /* control Queue Head */
-static uhci_qh_t qh_bulk; /* bulk Queue Head */
-static uhci_qh_t qh_end; /* end Queue Head */
-static uhci_td_t td_last; /* last TD (linked with end chain) */
-
-/* temporary tds */
-static uhci_td_t tmp_td[USB_MAX_TEMP_TD]; /* temporary bulk/control td's */
-static uhci_td_t tmp_int_td[USB_MAX_TEMP_INT_TD]; /* temporary interrupt td's */
-
-static unsigned long framelist[1024] __attribute__ ((aligned (0x1000))); /* frame list */
-
-static struct virt_root_hub rh; /* struct for root hub */
-
-/**********************************************************************
- * some forward decleration
- */
-int uhci_submit_rh_msg(struct usb_device *dev, unsigned long pipe,
- void *buffer, int transfer_len,struct devrequest *setup);
-
-/* fill a td with the approproiate data. Link, status, info and buffer
- * are used by the USB controller itselfes, dev is used to identify the
- * "connected" device
- */
-void usb_fill_td(uhci_td_t* td,unsigned long link,unsigned long status,
- unsigned long info, unsigned long buffer, unsigned long dev)
-{
- td->link=swap_32(link);
- td->status=swap_32(status);
- td->info=swap_32(info);
- td->buffer=swap_32(buffer);
- td->dev_ptr=dev;
-}
-
-/* fill a qh with the approproiate data. Head and element are used by the USB controller
- * itselfes. As soon as a valid dev_ptr is filled, a td chain is connected to the qh.
- * Please note, that after completion of the td chain, the entry element is removed /
- * marked invalid by the USB controller.
- */
-void usb_fill_qh(uhci_qh_t* qh,unsigned long head,unsigned long element)
-{
- qh->head=swap_32(head);
- qh->element=swap_32(element);
- qh->dev_ptr=0L;
-}
-
-/* get the status of a td->status
- */
-unsigned long usb_uhci_td_stat(unsigned long status)
-{
- unsigned long result=0;
- result |= (status & TD_CTRL_NAK) ? USB_ST_NAK_REC : 0;
- result |= (status & TD_CTRL_STALLED) ? USB_ST_STALLED : 0;
- result |= (status & TD_CTRL_DBUFERR) ? USB_ST_BUF_ERR : 0;
- result |= (status & TD_CTRL_BABBLE) ? USB_ST_BABBLE_DET : 0;
- result |= (status & TD_CTRL_CRCTIMEO) ? USB_ST_CRC_ERR : 0;
- result |= (status & TD_CTRL_BITSTUFF) ? USB_ST_BIT_ERR : 0;
- result |= (status & TD_CTRL_ACTIVE) ? USB_ST_NOT_PROC : 0;
- return result;
-}
-
-/* get the status and the transfered len of a td chain.
- * called from the completion handler
- */
-int usb_get_td_status(uhci_td_t *td,struct usb_device *dev)
-{
- unsigned long temp,info;
- unsigned long stat;
- uhci_td_t *mytd=td;
-
- if(dev->devnum==rh.devnum)
- return 0;
- dev->act_len=0;
- stat=0;
- do {
- temp=swap_32((unsigned long)mytd->status);
- stat=usb_uhci_td_stat(temp);
- info=swap_32((unsigned long)mytd->info);
- if(((info & 0xff)!= USB_PID_SETUP) &&
- (((info >> 21) & 0x7ff)!= 0x7ff) &&
- (temp & 0x7FF)!=0x7ff)
- { /* if not setup and not null data pack */
- dev->act_len+=(temp & 0x7FF) + 1; /* the transfered len is act_len + 1 */
- }
- if(stat) { /* status no ok */
- dev->status=stat;
- return -1;
- }
- temp=swap_32((unsigned long)mytd->link);
- mytd=(uhci_td_t *)(temp & 0xfffffff0);
- }while((temp & 0x1)==0); /* process all TDs */
- dev->status=stat;
- return 0; /* Ok */
-}
-
-
-/*-------------------------------------------------------------------
- * LOW LEVEL STUFF
- * assembles QHs und TDs for control, bulk and iso
- *-------------------------------------------------------------------*/
-
-/* Submits a control message. That is a Setup, Data and Status transfer.
- * Routine does not wait for completion.
- */
-int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
- int transfer_len,struct devrequest *setup)
-{
- unsigned long destination, status;
- int maxsze = usb_maxpacket(dev, pipe);
- unsigned long dataptr;
- int len;
- int pktsze;
- int i=0;
-
- if (!maxsze) {
- USB_UHCI_PRINTF("uhci_submit_control_urb: pipesize for pipe %lx is zero\n", pipe);
- return -1;
- }
- if(((pipe>>8)&0x7f)==rh.devnum) {
- /* this is the root hub -> redirect it */
- return uhci_submit_rh_msg(dev,pipe,buffer,transfer_len,setup);
- }
- USB_UHCI_PRINTF("uhci_submit_control start len %x, maxsize %x\n",transfer_len,maxsze);
- /* The "pipe" thing contains the destination in bits 8--18 */
- destination = (pipe & PIPE_DEVEP_MASK) | USB_PID_SETUP; /* Setup stage */
- /* 3 errors */
- status = (pipe & TD_CTRL_LS) | TD_CTRL_ACTIVE | (3 << 27);
- /* (urb->transfer_flags & USB_DISABLE_SPD ? 0 : TD_CTRL_SPD); */
- /* Build the TD for the control request, try forever, 8 bytes of data */
- usb_fill_td(&tmp_td[i],UHCI_PTR_TERM ,status, destination | (7 << 21),(unsigned long)setup,(unsigned long)dev);
-#if 0
- {
- char *sp=(char *)setup;
- printf("SETUP to pipe %lx: %x %x %x %x %x %x %x %x\n", pipe,
- sp[0],sp[1],sp[2],sp[3],sp[4],sp[5],sp[6],sp[7]);
- }
-#endif
- dataptr = (unsigned long)buffer;
- len=transfer_len;
-
- /* If direction is "send", change the frame from SETUP (0x2D)
- to OUT (0xE1). Else change it from SETUP to IN (0x69). */
- destination = (pipe & PIPE_DEVEP_MASK) | ((pipe & USB_DIR_IN)==0 ? USB_PID_OUT : USB_PID_IN);
- while (len > 0) {
- /* data stage */
- pktsze = len;
- i++;
- if (pktsze > maxsze)
- pktsze = maxsze;
- destination ^= 1 << TD_TOKEN_TOGGLE; /* toggle DATA0/1 */
- usb_fill_td(&tmp_td[i],UHCI_PTR_TERM, status, destination | ((pktsze - 1) << 21),dataptr,(unsigned long)dev); /* Status, pktsze bytes of data */
- tmp_td[i-1].link=swap_32((unsigned long)&tmp_td[i]);
-
- dataptr += pktsze;
- len -= pktsze;
- }
-
- /* Build the final TD for control status */
- /* It's only IN if the pipe is out AND we aren't expecting data */
-
- destination &= ~UHCI_PID;
- if (((pipe & USB_DIR_IN)==0) || (transfer_len == 0))
- destination |= USB_PID_IN;
- else
- destination |= USB_PID_OUT;
- destination |= 1 << TD_TOKEN_TOGGLE; /* End in Data1 */
- i++;
- status &=~TD_CTRL_SPD;
- /* no limit on errors on final packet , 0 bytes of data */
- usb_fill_td(&tmp_td[i],UHCI_PTR_TERM, status | TD_CTRL_IOC, destination | (UHCI_NULL_DATA_SIZE << 21),0,(unsigned long)dev);
- tmp_td[i-1].link=swap_32((unsigned long)&tmp_td[i]); /* queue status td */
- /* usb_show_td(i+1);*/
- USB_UHCI_PRINTF("uhci_submit_control end (%d tmp_tds used)\n",i);
- /* first mark the control QH element terminated */
- qh_cntrl.element=0xffffffffL;
- /* set qh active */
- qh_cntrl.dev_ptr=(unsigned long)dev;
- /* fill in tmp_td_chain */
- qh_cntrl.element=swap_32((unsigned long)&tmp_td[0]);
- return 0;
-}
-
-/*-------------------------------------------------------------------
- * Prepare TDs for bulk transfers.
- */
-int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer,int transfer_len)
-{
- unsigned long destination, status,info;
- unsigned long dataptr;
- int maxsze = usb_maxpacket(dev, pipe);
- int len;
- int i=0;
-
- if(transfer_len < 0) {
- printf("Negative transfer length in submit_bulk\n");
- return -1;
- }
- if (!maxsze)
- return -1;
- /* The "pipe" thing contains the destination in bits 8--18. */
- destination = (pipe & PIPE_DEVEP_MASK) | usb_packetid (pipe);
- /* 3 errors */
- status = (pipe & TD_CTRL_LS) | TD_CTRL_ACTIVE | (3 << 27);
- /* ((urb->transfer_flags & USB_DISABLE_SPD) ? 0 : TD_CTRL_SPD) | (3 << 27); */
- /* Build the TDs for the bulk request */
- len = transfer_len;
- dataptr = (unsigned long)buffer;
- do {
- int pktsze = len;
- if (pktsze > maxsze)
- pktsze = maxsze;
- /* pktsze bytes of data */
- info = destination | (((pktsze - 1)&UHCI_NULL_DATA_SIZE) << 21) |
- (usb_gettoggle (dev, usb_pipeendpoint (pipe), usb_pipeout (pipe)) << TD_TOKEN_TOGGLE);
-
- if((len-pktsze)==0)
- status |= TD_CTRL_IOC; /* last one generates INT */
-
- usb_fill_td(&tmp_td[i],UHCI_PTR_TERM, status, info,dataptr,(unsigned long)dev); /* Status, pktsze bytes of data */
- if(i>0)
- tmp_td[i-1].link=swap_32((unsigned long)&tmp_td[i]);
- i++;
- dataptr += pktsze;
- len -= pktsze;
- usb_dotoggle (dev, usb_pipeendpoint (pipe), usb_pipeout (pipe));
- } while (len > 0);
- /* first mark the bulk QH element terminated */
- qh_bulk.element=0xffffffffL;
- /* set qh active */
- qh_bulk.dev_ptr=(unsigned long)dev;
- /* fill in tmp_td_chain */
- qh_bulk.element=swap_32((unsigned long)&tmp_td[0]);
- return 0;
-}
-
-
-/* search a free interrupt td
- */
-uhci_td_t *uhci_alloc_int_td(void)
-{
- int i;
- for(i=0;i<USB_MAX_TEMP_INT_TD;i++) {
- if(tmp_int_td[i].dev_ptr==0) /* no device assigned -> free TD */
- return &tmp_int_td[i];
- }
- return NULL;
-}
-
-#if 0
-void uhci_show_temp_int_td(void)
-{
- int i;
- for(i=0;i<USB_MAX_TEMP_INT_TD;i++) {
- if((tmp_int_td[i].dev_ptr&0x01)!=0x1L) /* no device assigned -> free TD */
- printf("temp_td %d is assigned to dev %lx\n",i,tmp_int_td[i].dev_ptr);
- }
- printf("all others temp_tds are free\n");
-}
-#endif
-/*-------------------------------------------------------------------
- * submits USB interrupt (ie. polling ;-)
- */
-int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,int transfer_len, int interval)
-{
- int nint, n;
- unsigned long status, destination;
- unsigned long info,tmp;
- uhci_td_t *mytd;
- if (interval < 0 || interval >= 256)
- return -1;
-
- if (interval == 0)
- nint = 0;
- else {
- for (nint = 0, n = 1; nint <= 8; nint++, n += n) /* round interval down to 2^n */
- {
- if(interval < n) {
- interval = n / 2;
- break;
- }
- }
- nint--;
- }
-
- USB_UHCI_PRINTF("Rounded interval to %i, chain %i\n", interval, nint);
- mytd=uhci_alloc_int_td();
- if(mytd==NULL) {
- printf("No free INT TDs found\n");
- return -1;
- }
- status = (pipe & TD_CTRL_LS) | TD_CTRL_ACTIVE | TD_CTRL_IOC | (3 << 27);
-/* (urb->transfer_flags & USB_DISABLE_SPD ? 0 : TD_CTRL_SPD) | (3 << 27);
-*/
-
- destination =(pipe & PIPE_DEVEP_MASK) | usb_packetid (pipe) | (((transfer_len - 1) & 0x7ff) << 21);
-
- info = destination | (usb_gettoggle(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe)) << TD_TOKEN_TOGGLE);
- tmp = swap_32(td_int[nint].link);
- usb_fill_td(mytd,tmp,status, info,(unsigned long)buffer,(unsigned long)dev);
- /* Link it */
- tmp = swap_32((unsigned long)mytd);
- td_int[nint].link=tmp;
-
- usb_dotoggle (dev, usb_pipeendpoint (pipe), usb_pipeout (pipe));
-
- return 0;
-}
-
-/**********************************************************************
- * Low Level functions
- */
-
-
-void reset_hc(void)
-{
-
- /* Global reset for 100ms */
- out16r( usb_base_addr + USBPORTSC1,0x0204);
- out16r( usb_base_addr + USBPORTSC2,0x0204);
- out16r( usb_base_addr + USBCMD,USBCMD_GRESET | USBCMD_RS);
- /* Turn off all interrupts */
- out16r(usb_base_addr + USBINTR,0);
- wait_ms(50);
- out16r( usb_base_addr + USBCMD,0);
- wait_ms(10);
-}
-
-void start_hc(void)
-{
- int timeout = 1000;
-
- while(in16r(usb_base_addr + USBCMD) & USBCMD_HCRESET) {
- if (!--timeout) {
- printf("USBCMD_HCRESET timed out!\n");
- break;
- }
- }
- /* Turn on all interrupts */
- out16r(usb_base_addr + USBINTR,USBINTR_TIMEOUT | USBINTR_RESUME | USBINTR_IOC | USBINTR_SP);
- /* Start at frame 0 */
- out16r(usb_base_addr + USBFRNUM,0);
- /* set Framebuffer base address */
- out32r(usb_base_addr+USBFLBASEADD,(unsigned long)&framelist);
- /* Run and mark it configured with a 64-byte max packet */
- out16r(usb_base_addr + USBCMD,USBCMD_RS | USBCMD_CF | USBCMD_MAXP);
-}
-
-/* Initialize the skeleton
- */
-void usb_init_skel(void)
-{
- unsigned long temp;
- int n;
-
- for(n=0;n<USB_MAX_TEMP_INT_TD;n++)
- tmp_int_td[n].dev_ptr=0L; /* no devices connected */
- /* last td */
- usb_fill_td(&td_last,UHCI_PTR_TERM,TD_CTRL_IOC ,0,0,0L);
- /* usb_fill_td(&td_last,UHCI_PTR_TERM,0,0,0); */
- /* End Queue Header */
- usb_fill_qh(&qh_end,UHCI_PTR_TERM,(unsigned long)&td_last);
- /* Bulk Queue Header */
- temp=(unsigned long)&qh_end;
- usb_fill_qh(&qh_bulk,temp | UHCI_PTR_QH,UHCI_PTR_TERM);
- /* Control Queue Header */
- temp=(unsigned long)&qh_bulk;
- usb_fill_qh(&qh_cntrl, temp | UHCI_PTR_QH,UHCI_PTR_TERM);
- /* 1ms Interrupt td */
- temp=(unsigned long)&qh_cntrl;
- usb_fill_td(&td_int[0],temp | UHCI_PTR_QH,0,0,0,0L);
- temp=(unsigned long)&td_int[0];
- for(n=1; n<8; n++)
- usb_fill_td(&td_int[n],temp,0,0,0,0L);
- for (n = 0; n < 1024; n++) {
- /* link all framelist pointers to one of the interrupts */
- int m, o;
- if ((n&127)==127)
- framelist[n]= swap_32((unsigned long)&td_int[0]);
- else
- for (o = 1, m = 2; m <= 128; o++, m += m)
- if ((n & (m - 1)) == ((m - 1) / 2))
- framelist[n]= swap_32((unsigned long)&td_int[o]);
- }
-}
-
-/* check the common skeleton for completed transfers, and update the status
- * of the "connected" device. Called from the IRQ routine.
- */
-void usb_check_skel(void)
-{
- struct usb_device *dev;
- /* start with the control qh */
- if(qh_cntrl.dev_ptr!=0) /* it's a device assigned check if this caused IRQ */
- {
- dev=(struct usb_device *)qh_cntrl.dev_ptr;
- usb_get_td_status(&tmp_td[0],dev); /* update status */
- if(!(dev->status & USB_ST_NOT_PROC)) { /* is not active anymore, disconnect devices */
- qh_cntrl.dev_ptr=0;
- }
- }
- /* now process the bulk */
- if(qh_bulk.dev_ptr!=0) /* it's a device assigned check if this caused IRQ */
- {
- dev=(struct usb_device *)qh_bulk.dev_ptr;
- usb_get_td_status(&tmp_td[0],dev); /* update status */
- if(!(dev->status & USB_ST_NOT_PROC)) { /* is not active anymore, disconnect devices */
- qh_bulk.dev_ptr=0;
- }
- }
-}
-
-/* check the interrupt chain, ubdate the status of the appropriate device,
- * call the appropriate irqhandler and reactivate the TD if the irqhandler
- * returns with 1
- */
-void usb_check_int_chain(void)
-{
- int i,res;
- unsigned long link,status;
- struct usb_device *dev;
- uhci_td_t *td,*prevtd;
-
- for(i=0;i<8;i++) {
- prevtd=&td_int[i]; /* the first previous td is the skeleton td */
- link=swap_32(td_int[i].link) & 0xfffffff0; /* next in chain */
- td=(uhci_td_t *)link; /* assign it */
- /* all interrupt TDs are finally linked to the td_int[0].
- * so we process all until we find the td_int[0].
- * if int0 chain points to a QH, we're also done
- */
- while(((i>0) && (link != (unsigned long)&td_int[0])) ||
- ((i==0) && !(swap_32(td->link) & UHCI_PTR_QH)))
- {
- /* check if a device is assigned with this td */
- status=swap_32(td->status);
- if((td->dev_ptr!=0L) && !(status & TD_CTRL_ACTIVE)) {
- /* td is not active and a device is assigned -> call irqhandler */
- dev=(struct usb_device *)td->dev_ptr;
- dev->irq_act_len=((status & 0x7FF)==0x7FF) ? 0 : (status & 0x7FF) + 1; /* transfered length */
- dev->irq_status=usb_uhci_td_stat(status); /* get status */
- res=dev->irq_handle(dev); /* call irqhandler */
- if(res==1) {
- /* reactivate */
- status|=TD_CTRL_ACTIVE;
- td->status=swap_32(status);
- prevtd=td; /* previous td = this td */
- }
- else {
- prevtd->link=td->link; /* link previous td directly to the nex td -> unlinked */
- /* remove device pointer */
- td->dev_ptr=0L;
- }
- } /* if we call the irq handler */
- link=swap_32(td->link) & 0xfffffff0; /* next in chain */
- td=(uhci_td_t *)link; /* assign it */
- } /* process all td in this int chain */
- } /* next interrupt chain */
-}
-
-
-/* usb interrupt service routine.
- */
-void handle_usb_interrupt(void)
-{
- unsigned short status;
-
- /*
- * Read the interrupt status, and write it back to clear the
- * interrupt cause
- */
-
- status = in16r(usb_base_addr + USBSTS);
-
- if (!status) /* shared interrupt, not mine */
- return;
- if (status != 1) {
- /* remove host controller halted state */
- if ((status&0x20) && ((in16r(usb_base_addr+USBCMD) && USBCMD_RS)==0)) {
- out16r(usb_base_addr + USBCMD, USBCMD_RS | in16r(usb_base_addr + USBCMD));
- }
- }
- usb_check_int_chain(); /* call interrupt handlers for int tds */
- usb_check_skel(); /* call completion handler for common transfer routines */
- out16r(usb_base_addr+USBSTS,status);
-}
-
-
-/* init uhci
- */
-int usb_lowlevel_init(void)
-{
- unsigned char temp;
- int busdevfunc;
-/*
- * HJF - configure IRQ and base from variables optionally.
- */
- char *s;
-
-
- busdevfunc=pci_find_device(USB_UHCI_VEND_ID,USB_UHCI_DEV_ID,0); /* get PCI Device ID */
- if(busdevfunc==-1) {
- printf("Error USB UHCI (%04X,%04X) not found\n",USB_UHCI_VEND_ID,USB_UHCI_DEV_ID);
- return -1;
- }
-
-#if 1
- s = getenv("usb_irq");
- if (s)
- {
- temp = atoi(s);
- pci_write_config_byte(busdevfunc, PCI_INTERRUPT_LINE, temp);
- }
- else
-#endif
- pci_read_config_byte(busdevfunc,PCI_INTERRUPT_LINE,&temp);
-
- s = getenv("usb_base");
- if (s)
- {
- unsigned long temp2;
- temp2 = atoi(s);
- pci_write_config_dword(busdevfunc, PCI_BASE_ADDRESS_4, temp2|0x01);
- }
-
- irqvec = temp;
- irq_free_handler(irqvec);
- USB_UHCI_PRINTF("Interrupt Line = %d\n",irqvec);
- pci_read_config_byte(busdevfunc,PCI_INTERRUPT_PIN,&temp);
- USB_UHCI_PRINTF("Interrupt Pin = %ld\n",temp);
- pci_read_config_dword(busdevfunc,PCI_BASE_ADDRESS_4,&usb_base_addr);
- USB_UHCI_PRINTF("IO Base Address = 0x%lx\n",usb_base_addr);
- usb_base_addr&=0xFFFFFFF0;
- usb_base_addr+=CFG_ISA_IO_BASE_ADDRESS;
- rh.devnum = 0;
- usb_init_skel();
- reset_hc();
- start_hc();
- irq_install_handler(irqvec, (interrupt_handler_t *)handle_usb_interrupt, NULL);
- irq_install_handler(0, (interrupt_handler_t *)handle_usb_interrupt, NULL);
-
- return 0;
-}
-
-/* stop uhci
- */
-int usb_lowlevel_stop(void)
-{
- if(irqvec==-1)
- return 1;
- irq_free_handler(irqvec);
- irq_free_handler(0);
- reset_hc();
- irqvec=-1;
- return 0;
-}
-
-/*******************************************************************************************
- * Virtual Root Hub
- * Since the uhci does not have a real HUB, we simulate one ;-)
- */
-#undef USB_RH_DEBUG
-
-#ifdef USB_RH_DEBUG
-#define USB_RH_PRINTF(fmt,args...) printf (fmt ,##args)
-static void usb_display_wValue(unsigned short wValue,unsigned short wIndex);
-static void usb_display_Req(unsigned short req);
-#else
-#define USB_RH_PRINTF(fmt,args...)
-static void usb_display_wValue(unsigned short wValue,unsigned short wIndex) {}
-static void usb_display_Req(unsigned short req) {}
-#endif
-
-static unsigned char root_hub_dev_des[] =
-{
- 0x12, /* __u8 bLength; */
- 0x01, /* __u8 bDescriptorType; Device */
- 0x00, /* __u16 bcdUSB; v1.0 */
- 0x01,
- 0x09, /* __u8 bDeviceClass; HUB_CLASSCODE */
- 0x00, /* __u8 bDeviceSubClass; */
- 0x00, /* __u8 bDeviceProtocol; */
- 0x08, /* __u8 bMaxPacketSize0; 8 Bytes */
- 0x00, /* __u16 idVendor; */
- 0x00,
- 0x00, /* __u16 idProduct; */
- 0x00,
- 0x00, /* __u16 bcdDevice; */
- 0x00,
- 0x01, /* __u8 iManufacturer; */
- 0x00, /* __u8 iProduct; */
- 0x00, /* __u8 iSerialNumber; */
- 0x01 /* __u8 bNumConfigurations; */
-};
-
-
-/* Configuration descriptor */
-static unsigned char root_hub_config_des[] =
-{
- 0x09, /* __u8 bLength; */
- 0x02, /* __u8 bDescriptorType; Configuration */
- 0x19, /* __u16 wTotalLength; */
- 0x00,
- 0x01, /* __u8 bNumInterfaces; */
- 0x01, /* __u8 bConfigurationValue; */
- 0x00, /* __u8 iConfiguration; */
- 0x40, /* __u8 bmAttributes;
- Bit 7: Bus-powered, 6: Self-powered, 5 Remote-wakwup, 4..0: resvd */
- 0x00, /* __u8 MaxPower; */
-
- /* interface */
- 0x09, /* __u8 if_bLength; */
- 0x04, /* __u8 if_bDescriptorType; Interface */
- 0x00, /* __u8 if_bInterfaceNumber; */
- 0x00, /* __u8 if_bAlternateSetting; */
- 0x01, /* __u8 if_bNumEndpoints; */
- 0x09, /* __u8 if_bInterfaceClass; HUB_CLASSCODE */
- 0x00, /* __u8 if_bInterfaceSubClass; */
- 0x00, /* __u8 if_bInterfaceProtocol; */
- 0x00, /* __u8 if_iInterface; */
-
- /* endpoint */
- 0x07, /* __u8 ep_bLength; */
- 0x05, /* __u8 ep_bDescriptorType; Endpoint */
- 0x81, /* __u8 ep_bEndpointAddress; IN Endpoint 1 */
- 0x03, /* __u8 ep_bmAttributes; Interrupt */
- 0x08, /* __u16 ep_wMaxPacketSize; 8 Bytes */
- 0x00,
- 0xff /* __u8 ep_bInterval; 255 ms */
-};
-
-
-static unsigned char root_hub_hub_des[] =
-{
- 0x09, /* __u8 bLength; */
- 0x29, /* __u8 bDescriptorType; Hub-descriptor */
- 0x02, /* __u8 bNbrPorts; */
- 0x00, /* __u16 wHubCharacteristics; */
- 0x00,
- 0x01, /* __u8 bPwrOn2pwrGood; 2ms */
- 0x00, /* __u8 bHubContrCurrent; 0 mA */
- 0x00, /* __u8 DeviceRemovable; *** 7 Ports max *** */
- 0xff /* __u8 PortPwrCtrlMask; *** 7 ports max *** */
-};
-
-static unsigned char root_hub_str_index0[] =
-{
- 0x04, /* __u8 bLength; */
- 0x03, /* __u8 bDescriptorType; String-descriptor */
- 0x09, /* __u8 lang ID */
- 0x04, /* __u8 lang ID */
-};
-
-static unsigned char root_hub_str_index1[] =
-{
- 28, /* __u8 bLength; */
- 0x03, /* __u8 bDescriptorType; String-descriptor */
- 'U', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'H', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'C', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'I', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- ' ', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'R', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'o', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'o', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 't', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- ' ', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'H', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'u', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'b', /* __u8 Unicode */
- 0, /* __u8 Unicode */
-};
-
-
-/*
- * Root Hub Control Pipe (interrupt Pipes are not supported)
- */
-
-
-int uhci_submit_rh_msg(struct usb_device *dev, unsigned long pipe, void *buffer,int transfer_len,struct devrequest *cmd)
-{
- void *data = buffer;
- int leni = transfer_len;
- int len = 0;
- int status = 0;
- int stat = 0;
- int i;
-
- unsigned short cstatus;
-
- unsigned short bmRType_bReq;
- unsigned short wValue;
- unsigned short wIndex;
- unsigned short wLength;
-
- if ((pipe & PIPE_INTERRUPT) == PIPE_INTERRUPT) {
- printf("Root-Hub submit IRQ: NOT implemented\n");
-#if 0
- uhci->rh.urb = urb;
- uhci->rh.send = 1;
- uhci->rh.interval = urb->interval;
- rh_init_int_timer (urb);
-#endif
- return 0;
- }
- bmRType_bReq = cmd->requesttype | cmd->request << 8;
- wValue = swap_16(cmd->value);
- wIndex = swap_16(cmd->index);
- wLength = swap_16(cmd->length);
- usb_display_Req(bmRType_bReq);
- for (i = 0; i < 8; i++)
- rh.c_p_r[i] = 0;
- USB_RH_PRINTF("Root-Hub: adr: %2x cmd(%1x): %02x%02x %04x %04x %04x\n",
- dev->devnum, 8, cmd->requesttype,cmd->request, wValue, wIndex, wLength);
-
- switch (bmRType_bReq) {
- /* Request Destination:
- without flags: Device,
- RH_INTERFACE: interface,
- RH_ENDPOINT: endpoint,
- RH_CLASS means HUB here,
- RH_OTHER | RH_CLASS almost ever means HUB_PORT here
- */
-
- case RH_GET_STATUS:
- *(unsigned short *) data = swap_16(1);
- len=2;
- break;
- case RH_GET_STATUS | RH_INTERFACE:
- *(unsigned short *) data = swap_16(0);
- len=2;
- break;
- case RH_GET_STATUS | RH_ENDPOINT:
- *(unsigned short *) data = swap_16(0);
- len=2;
- break;
- case RH_GET_STATUS | RH_CLASS:
- *(unsigned long *) data = swap_32(0);
- len=4;
- break; /* hub power ** */
- case RH_GET_STATUS | RH_OTHER | RH_CLASS:
-
- status = in16r(usb_base_addr + USBPORTSC1 + 2 * (wIndex - 1));
- cstatus = ((status & USBPORTSC_CSC) >> (1 - 0)) |
- ((status & USBPORTSC_PEC) >> (3 - 1)) |
- (rh.c_p_r[wIndex - 1] << (0 + 4));
- status = (status & USBPORTSC_CCS) |
- ((status & USBPORTSC_PE) >> (2 - 1)) |
- ((status & USBPORTSC_SUSP) >> (12 - 2)) |
- ((status & USBPORTSC_PR) >> (9 - 4)) |
- (1 << 8) | /* power on ** */
- ((status & USBPORTSC_LSDA) << (-8 + 9));
-
- *(unsigned short *) data = swap_16(status);
- *(unsigned short *) (data + 2) = swap_16(cstatus);
- len=4;
- break;
- case RH_CLEAR_FEATURE | RH_ENDPOINT:
- switch (wValue) {
- case (RH_ENDPOINT_STALL):
- len=0;
- break;
- }
- break;
-
- case RH_CLEAR_FEATURE | RH_CLASS:
- switch (wValue) {
- case (RH_C_HUB_OVER_CURRENT):
- len=0; /* hub power over current ** */
- break;
- }
- break;
-
- case RH_CLEAR_FEATURE | RH_OTHER | RH_CLASS:
- usb_display_wValue(wValue,wIndex);
- switch (wValue) {
- case (RH_PORT_ENABLE):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) & ~USBPORTSC_PE;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_PORT_SUSPEND):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) & ~USBPORTSC_SUSP;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_PORT_POWER):
- len=0; /* port power ** */
- break;
- case (RH_C_PORT_CONNECTION):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) | USBPORTSC_CSC;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_C_PORT_ENABLE):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) | USBPORTSC_PEC;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_C_PORT_SUSPEND):
-/*** WR_RH_PORTSTAT(RH_PS_PSSC); */
- len=0;
- break;
- case (RH_C_PORT_OVER_CURRENT):
- len=0;
- break;
- case (RH_C_PORT_RESET):
- rh.c_p_r[wIndex - 1] = 0;
- len=0;
- break;
- }
- break;
- case RH_SET_FEATURE | RH_OTHER | RH_CLASS:
- usb_display_wValue(wValue,wIndex);
- switch (wValue) {
- case (RH_PORT_SUSPEND):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) | USBPORTSC_SUSP;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_PORT_RESET):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) | USBPORTSC_PR;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- wait_ms(10);
- status = (status & 0xfff5) & ~USBPORTSC_PR;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- udelay(10);
- status = (status & 0xfff5) | USBPORTSC_PE;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- wait_ms(10);
- status = (status & 0xfff5) | 0xa;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_PORT_POWER):
- len=0; /* port power ** */
- break;
- case (RH_PORT_ENABLE):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) | USBPORTSC_PE;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- }
- break;
-
- case RH_SET_ADDRESS:
- rh.devnum = wValue;
- len=0;
- break;
- case RH_GET_DESCRIPTOR:
- switch ((wValue & 0xff00) >> 8) {
- case (0x01): /* device descriptor */
- i=sizeof(root_hub_config_des);
- status=i > wLength ? wLength : i;
- len = leni > status ? status : leni;
- memcpy (data, root_hub_dev_des, len);
- break;
- case (0x02): /* configuration descriptor */
- i=sizeof(root_hub_config_des);
- status=i > wLength ? wLength : i;
- len = leni > status ? status : leni;
- memcpy (data, root_hub_config_des, len);
- break;
- case (0x03): /*string descriptors */
- if(wValue==0x0300) {
- i=sizeof(root_hub_str_index0);
- status = i > wLength ? wLength : i;
- len = leni > status ? status : leni;
- memcpy (data, root_hub_str_index0, len);
- break;
- }
- if(wValue==0x0301) {
- i=sizeof(root_hub_str_index1);
- status = i > wLength ? wLength : i;
- len = leni > status ? status : leni;
- memcpy (data, root_hub_str_index1, len);
- break;
- }
- stat = USB_ST_STALLED;
- }
- break;
-
- case RH_GET_DESCRIPTOR | RH_CLASS:
- root_hub_hub_des[2] = 2;
- i=sizeof(root_hub_hub_des);
- status= i > wLength ? wLength : i;
- len = leni > status ? status : leni;
- memcpy (data, root_hub_hub_des, len);
- break;
- case RH_GET_CONFIGURATION:
- *(unsigned char *) data = 0x01;
- len = 1;
- break;
- case RH_SET_CONFIGURATION:
- len=0;
- break;
- default:
- stat = USB_ST_STALLED;
- }
- USB_RH_PRINTF("Root-Hub stat %lx port1: %x port2: %x\n\n",stat,
- in16r(usb_base_addr + USBPORTSC1), in16r(usb_base_addr + USBPORTSC2));
- dev->act_len=len;
- dev->status=stat;
- return stat;
-
-}
-
-/********************************************************************************
- * Some Debug Routines
- */
-
-#ifdef USB_RH_DEBUG
-
-static void usb_display_Req(unsigned short req)
-{
- USB_RH_PRINTF("- Root-Hub Request: ");
- switch (req) {
- case RH_GET_STATUS:
- USB_RH_PRINTF("Get Status ");
- break;
- case RH_GET_STATUS | RH_INTERFACE:
- USB_RH_PRINTF("Get Status Interface ");
- break;
- case RH_GET_STATUS | RH_ENDPOINT:
- USB_RH_PRINTF("Get Status Endpoint ");
- break;
- case RH_GET_STATUS | RH_CLASS:
- USB_RH_PRINTF("Get Status Class");
- break; /* hub power ** */
- case RH_GET_STATUS | RH_OTHER | RH_CLASS:
- USB_RH_PRINTF("Get Status Class Others");
- break;
- case RH_CLEAR_FEATURE | RH_ENDPOINT:
- USB_RH_PRINTF("Clear Feature Endpoint ");
- break;
- case RH_CLEAR_FEATURE | RH_CLASS:
- USB_RH_PRINTF("Clear Feature Class ");
- break;
- case RH_CLEAR_FEATURE | RH_OTHER | RH_CLASS:
- USB_RH_PRINTF("Clear Feature Other Class ");
- break;
- case RH_SET_FEATURE | RH_OTHER | RH_CLASS:
- USB_RH_PRINTF("Set Feature Other Class ");
- break;
- case RH_SET_ADDRESS:
- USB_RH_PRINTF("Set Address ");
- break;
- case RH_GET_DESCRIPTOR:
- USB_RH_PRINTF("Get Descriptor ");
- break;
- case RH_GET_DESCRIPTOR | RH_CLASS:
- USB_RH_PRINTF("Get Descriptor Class ");
- break;
- case RH_GET_CONFIGURATION:
- USB_RH_PRINTF("Get Configuration ");
- break;
- case RH_SET_CONFIGURATION:
- USB_RH_PRINTF("Get Configuration ");
- break;
- default:
- USB_RH_PRINTF("****UNKNOWN**** 0x%04X ",req);
- }
- USB_RH_PRINTF("\n");
-
-}
-
-static void usb_display_wValue(unsigned short wValue,unsigned short wIndex)
-{
- switch (wValue) {
- case (RH_PORT_ENABLE):
- USB_RH_PRINTF("Root-Hub: Enable Port %d\n",wIndex);
- break;
- case (RH_PORT_SUSPEND):
- USB_RH_PRINTF("Root-Hub: Suspend Port %d\n",wIndex);
- break;
- case (RH_PORT_POWER):
- USB_RH_PRINTF("Root-Hub: Port Power %d\n",wIndex);
- break;
- case (RH_C_PORT_CONNECTION):
- USB_RH_PRINTF("Root-Hub: C Port Connection Port %d\n",wIndex);
- break;
- case (RH_C_PORT_ENABLE):
- USB_RH_PRINTF("Root-Hub: C Port Enable Port %d\n",wIndex);
- break;
- case (RH_C_PORT_SUSPEND):
- USB_RH_PRINTF("Root-Hub: C Port Suspend Port %d\n",wIndex);
- break;
- case (RH_C_PORT_OVER_CURRENT):
- USB_RH_PRINTF("Root-Hub: C Port Over Current Port %d\n",wIndex);
- break;
- case (RH_C_PORT_RESET):
- USB_RH_PRINTF("Root-Hub: C Port reset Port %d\n",wIndex);
- break;
- default:
- USB_RH_PRINTF("Root-Hub: unknown %x %x\n",wValue,wIndex);
- break;
- }
-}
-
-#endif
-
-
-#ifdef USB_UHCI_DEBUG
-
-static int usb_display_td(uhci_td_t *td)
-{
- unsigned long tmp;
- int valid;
-
- printf("TD at %p:\n",td);
-
- tmp=swap_32(td->link);
- printf("Link points to 0x%08lX, %s first, %s, %s\n",tmp&0xfffffff0,
- ((tmp & 0x4)==0x4) ? "Depth" : "Breath",
- ((tmp & 0x2)==0x2) ? "QH" : "TD",
- ((tmp & 0x1)==0x1) ? "invalid" : "valid");
- valid=((tmp & 0x1)==0x0);
- tmp=swap_32(td->status);
- printf(" %s %ld Errors %s %s %s \n %s %s %s %s %s %s\n Len 0x%lX\n",
- (((tmp>>29)&0x1)==0x1) ? "SPD Enable" : "SPD Disable",
- ((tmp>>28)&0x3),
- (((tmp>>26)&0x1)==0x1) ? "Low Speed" : "Full Speed",
- (((tmp>>25)&0x1)==0x1) ? "ISO " : "",
- (((tmp>>24)&0x1)==0x1) ? "IOC " : "",
- (((tmp>>23)&0x1)==0x1) ? "Active " : "Inactive ",
- (((tmp>>22)&0x1)==0x1) ? "Stalled" : "",
- (((tmp>>21)&0x1)==0x1) ? "Data Buffer Error" : "",
- (((tmp>>20)&0x1)==0x1) ? "Babble" : "",
- (((tmp>>19)&0x1)==0x1) ? "NAK" : "",
- (((tmp>>18)&0x1)==0x1) ? "Bitstuff Error" : "",
- (tmp&0x7ff));
- tmp=swap_32(td->info);
- printf(" MaxLen 0x%lX\n",((tmp>>21)&0x7FF));
- printf(" %s Endpoint 0x%lX Dev Addr 0x%lX PID 0x%lX\n",((tmp>>19)&0x1)==0x1 ? "TOGGLE" : "",
- ((tmp>>15)&0xF),((tmp>>8)&0x7F),tmp&0xFF);
- tmp=swap_32(td->buffer);
- printf(" Buffer 0x%08lX\n",tmp);
- printf(" DEV %08lX\n",td->dev_ptr);
- return valid;
-}
-
-
-void usb_show_td(int max)
-{
- int i;
- if(max>0) {
- for(i=0;i<max;i++) {
- usb_display_td(&tmp_td[i]);
- }
- }
- else {
- i=0;
- do {
- printf("tmp_td[%d]\n",i);
- }while(usb_display_td(&tmp_td[i++]));
- }
-}
-
-
-#endif
-#endif /* CONFIG_USB_UHCI */
-
-/* EOF */
diff --git a/board/MAI/AmigaOneG3SE/usb_uhci.h b/board/MAI/AmigaOneG3SE/usb_uhci.h
deleted file mode 100644
index 3387157320..0000000000
--- a/board/MAI/AmigaOneG3SE/usb_uhci.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * (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_
-
-#undef USB_UHCI_VEND_ID
-#define USB_UHCI_VEND_ID PCI_VENDOR_ID_VIA
-#undef USB_UHCI_DEV_ID
-#define USB_UHCI_DEV_ID 0x3038
-
-/* 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/MAI/AmigaOneG3SE/via686.c b/board/MAI/AmigaOneG3SE/via686.c
deleted file mode 100644
index 3606db82e0..0000000000
--- a/board/MAI/AmigaOneG3SE/via686.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * (C) Copyright 2002
- * Hyperion Entertainment, Hans-JoergF@hyperion-entertainment.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
- */
-#include <common.h>
-#include <pci.h>
-#include <ata.h>
-#include "memio.h"
-#include "articiaS.h"
-#include "via686.h"
-#include "i8259.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#undef VIA_DEBUG
-
-#ifdef VIA_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-
-/* Setup the ISA-to-PCI host bridge */
-void via_isa_init(pci_dev_t dev, struct pci_config_table *table)
-{
- char regval;
- if (PCI_FUNC(dev) == 0)
- {
- PRINTF("... PCI-to-ISA bridge, dev=0x%X\n", dev);
-
- /* Enable I/O Recovery time */
- pci_write_config_byte(dev, 0x40, 0x08);
-
- /* Enable ISA refresh */
- pci_write_config_byte(dev, 0x41, 0x41); /* was 01 */
-
- /* Enable ISA line buffer */
- pci_write_config_byte(dev, 0x45, 0x80);
-
- /* Gate INTR, and flush line buffer */
- pci_write_config_byte(dev, 0x46, 0x60);
-
- /* Enable EISA ports 4D0/4D1. Do we need this ? */
- pci_write_config_byte(dev, 0x47, 0xe6); /* was 20 */
-
- /* 512 K PCI Decode */
- pci_write_config_byte(dev, 0x48, 0x01);
-
- /* Wait for PGNT before grant to ISA Master/DMA */
- /* ports 0-FF to SDBus */
- /* IRQ 14 and 15 for ide 0/1 */
- pci_write_config_byte(dev, 0x4a, 0x04); /* Was c4 */
-
- /* Plug'n'Play */
- /* Parallel DRQ 3, Floppy DRQ 2 (default) */
- pci_write_config_byte(dev, 0x50, 0x0e);
-
- /* IRQ Routing for Floppy and Parallel port */
- /* IRQ 6 for floppy, IRQ 7 for parallel port */
- pci_write_config_byte(dev, 0x51, 0x76);
-
- /* IRQ Routing for serial ports (take IRQ 3 and 4) */
- pci_write_config_byte(dev, 0x52, 0x34);
-
- /* All IRQ's level triggered. */
- pci_write_config_byte(dev, 0x54, 0x00);
-
- /* PCI IRQ's all at IRQ 9 */
- pci_write_config_byte(dev, 0x55, 0x90);
- pci_write_config_byte(dev, 0x56, 0x99);
- pci_write_config_byte(dev, 0x57, 0x90);
-
- /* Enable Keyboard */
- pci_read_config_byte(dev, 0x5A, &regval);
- regval |= 0x01;
- pci_write_config_byte(dev, 0x5A, regval);
-
- pci_write_config_byte(dev, 0x80, 0);
- pci_write_config_byte(dev, 0x85, 0x01);
-
-/* pci_write_config_byte(dev, 0x77, 0x00); */
- }
-}
-
-/*
- * Initialize PNP irq routing
- */
-
-void via_init_irq_routing(uint8 irq_map[])
-{
- char *s;
- uint8 level_edge_bits = 0xf;
-
- /* Set irq routings */
- pci_write_cfg_byte(0, 7<<3, 0x55, irq_map[0]<<4);
- pci_write_cfg_byte(0, 7<<3, 0x56, irq_map[1] | irq_map[2]<<4);
- pci_write_cfg_byte(0, 7<<3, 0x57, irq_map[3]<<4);
-
- /*
- * Gather level/edge bits
- * Default is to assume level triggered
- */
-
- s = getenv("pci_irqa_select");
- if (s && strcmp(s, "level") == 0)
- level_edge_bits &= ~0x01;
-
- s = getenv("pci_irqb_select");
- if (s && strcmp(s, "level") == 0)
- level_edge_bits &= ~0x02;
-
- s = getenv("pci_irqc_select");
- if (s && strcmp(s, "level") == 0)
- level_edge_bits &= ~0x04;
-
- s = getenv("pci_irqd_select");
- if (s && strcmp(s, "level") == 0)
- level_edge_bits &= ~0x08;
-
- PRINTF("IRQ map\n");
- PRINTF("%d: %s\n", irq_map[0], level_edge_bits&0x1 ? "edge" : "level");
- PRINTF("%d: %s\n", irq_map[1], level_edge_bits&0x2 ? "edge" : "level");
- PRINTF("%d: %s\n", irq_map[2], level_edge_bits&0x4 ? "edge" : "level");
- PRINTF("%d: %s\n", irq_map[3], level_edge_bits&0x8 ? "edge" : "level");
- pci_write_cfg_byte(0, 7<<3, 0x54, level_edge_bits);
-
- PRINTF("%02x %02x %02x %02x\n", pci_read_cfg_byte(0, 7<<3, 0x54),
- pci_read_cfg_byte(0, 7<<3, 0x55), pci_read_cfg_byte(0, 7<<3, 0x56),
- pci_read_cfg_byte(0, 7<<3, 0x57));
-}
-
-
-/* Setup the IDE controller. This doesn't seem to work yet. I/O to an IDE controller port */
-/* always return the last character output on the serial port (!) */
-/* This function is called by the pnp-library when it encounters 0:7:1 */
-void via_cfgfunc_ide_init(struct pci_controller *host, pci_dev_t dev, struct pci_config_table *table)
-{
- PRINTF("... IDE controller, dev=0x%X\n", dev);
-
- /* Enable both IDE channels. */
- pci_write_config_byte(dev, 0x40, 0x03);
- /* udelay(10000); */
- /* udelay(10000); */
-
- /* Enable IO Space */
- pci_write_config_word(dev, 0x04, 0x03);
-
- /* Set to compatibility mode */
- pci_write_config_byte(dev, 0x09, 0x8A); /* WAS: 0x8f); */
-
- /* Set to legacy interrupt mode */
- pci_write_config_byte(dev, 0x3d, 0x00); /* WAS: 0x01); */
-
-}
-
-
-/* Set the base address of the floppy controller to 0x3F0 */
-void via_fdc_init(pci_dev_t dev)
-{
- unsigned char c;
- /* Enable Configuration mode */
- pci_read_config_byte(dev, 0x85, &c);
- c |= 0x02;
- pci_write_config_byte(dev, 0x85, c);
-
- /* Set floppy controller port to 0x3F0. */
- SIO_WRITE_CONFIG(0xE3, (0x3F<<2));
-
- /* Enable floppy controller */
- SIO_READ_CONFIG(0xE2, c);
- c |= 0x10;
- SIO_WRITE_CONFIG(0xE2, c);
-
- /* Switch of configuration mode */
- pci_read_config_byte(dev, 0x85, &c);
- c &= ~0x02;
- pci_write_config_byte(dev, 0x85, c);
-}
-
-/* Init function 0 of the via southbridge. Called by the pnp-library */
-void via_cfgfunc_via686(struct pci_controller *host, pci_dev_t dev, struct pci_config_table *table)
-{
- if (PCI_FUNC(dev) == 0)
- {
- /* FIXME: Try to generate a PCI reset */
- /* unsigned char c; */
- /* pci_read_config_byte(dev, 0x47, &c); */
- /* pci_write_config_byte(dev, 0x47, c | 0x01); */
-
- via_isa_init(dev, table);
- via_fdc_init(dev);
- }
-}
-
-__asm (" .globl via_calibrate_time_base \n"
- "via_calibrate_time_base: \n"
- " lis 9, 0xfe00 \n"
- " li 0, 0x00 \n"
- " mttbu 0 \n"
- " mttbl 0 \n"
- "ctb_loop: \n"
- " lbz 0, 0x61(9) \n"
- " eieio \n"
- " andi. 0, 0, 0x20 \n"
- " beq ctb_loop \n"
- "ctb_done: \n"
- " mftb 3 \n"
- " blr");
-
-extern unsigned long via_calibrate_time_base(void);
-
-void via_calibrate_bus_freq (void)
-{
- unsigned long tb;
-
- /* This is 20 microseconds */
-#define CALIBRATE_TIME 28636
-
- /* Enable the timer (and disable speaker) */
- unsigned char c;
-
- c = in_byte (0x61);
- out_byte (0x61, ((c & ~0x02) | 0x01));
-
- /* Set timer 2 to low/high writing */
- out_byte (0x43, 0xb0);
- out_byte (0x42, CALIBRATE_TIME & 0xff);
- out_byte (0x42, CALIBRATE_TIME >> 8);
-
- /* Read the time base */
- tb = via_calibrate_time_base ();
-
- if (tb >= 700000)
- gd->bus_clk = 133333333;
- else
- gd->bus_clk = 100000000;
-
-}
-
-
-void ide_led(uchar led, uchar status)
-{
-/* unsigned char c = in_byte(0x92); */
-
-/* if (!status) */
-/* out_byte(0x92, c | 0xC0); */
-/* else */
-/* out_byte(0x92, c & ~0xC0); */
-}
-
-
-void via_init_afterscan(void)
-{
- /* Modify IDE controller setup */
- pci_write_cfg_byte(0, 7<<3|1, PCI_LATENCY_TIMER, 0x20);
- pci_write_cfg_byte(0, 7<<3|1, PCI_COMMAND, PCI_COMMAND_IO|PCI_COMMAND_MEMORY|PCI_COMMAND_MASTER);
- pci_write_cfg_byte(0, 7<<3|1, PCI_INTERRUPT_LINE, 0xff);
- pci_write_cfg_byte(0, 7<<3|1, 0x40, 0x0b); /* FIXME: Might depend on drives connected */
- pci_write_cfg_byte(0, 7<<3|1, 0x41, 0x42); /* FIXME: Might depend on drives connected */
- pci_write_cfg_byte(0, 7<<3|1, 0x43, 0x05);
- pci_write_cfg_byte(0, 7<<3|1, 0x44, 0x18);
- pci_write_cfg_byte(0, 7<<3|1, 0x45, 0x10);
- pci_write_cfg_byte(0, 7<<3|1, 0x4e, 0x22); /* FIXME: Not documented, but set in PC bios */
- pci_write_cfg_byte(0, 7<<3|1, 0x4f, 0x20); /* FIXME: Not documented */
-
- /* Modify some values in the USB controller */
- pci_write_cfg_byte(0, 7<<3|2, 0x05, 0x17);
- pci_write_cfg_byte(0, 7<<3|2, 0x06, 0x01);
- pci_write_cfg_byte(0, 7<<3|2, 0x41, 0x12);
- pci_write_cfg_byte(0, 7<<3|2, 0x42, 0x03);
- pci_write_cfg_byte(0, 7<<3|2, PCI_LATENCY_TIMER, 0x40);
-
- pci_write_cfg_byte(0, 7<<3|3, 0x05, 0x17);
- pci_write_cfg_byte(0, 7<<3|3, 0x06, 0x01);
- pci_write_cfg_byte(0, 7<<3|3, 0x41, 0x12);
- pci_write_cfg_byte(0, 7<<3|3, 0x42, 0x03);
- pci_write_cfg_byte(0, 7<<3|3, PCI_LATENCY_TIMER, 0x40);
-
-
-}
diff --git a/board/MAI/AmigaOneG3SE/via686.h b/board/MAI/AmigaOneG3SE/via686.h
deleted file mode 100644
index 2a06a05e16..0000000000
--- a/board/MAI/AmigaOneG3SE/via686.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef VIA686_H_
-#define VIA686_H_
-
-
-#define CMOS_ADDR 0x70
-#define CMOS_DATA 0x71
-
-#define I8259_MASTER_CONTROL 0x20
-#define I8259_MASTER_MASK 0x21
-
-#define I8259_SLAVE_CONTROL 0xA0
-#define I8259_SLAVE_MASK 0xA1
-
-#define SIO_CONFIG_ADDR 0x3F0
-#define SIO_CONFIG_DATA 0x3F1
-
-#define SIO_WRITE_CONFIG(addr, byte) \
- out_byte(SIO_CONFIG_ADDR, addr); \
- out_byte(SIO_CONFIG_DATA, byte);
-
-#define SIO_READ_CONFIG(addr, byte) \
- out_byte(SIO_CONFIG_ADDR, addr); \
- byte = in_byte(SIO_CONFIG_DATA);
-
-void via_init(void);
-
-void via_calibrate_bus_freq(void);
-
-#endif
diff --git a/board/MAI/AmigaOneG3SE/video.c b/board/MAI/AmigaOneG3SE/video.c
deleted file mode 100644
index f6327f7203..0000000000
--- a/board/MAI/AmigaOneG3SE/video.c
+++ /dev/null
@@ -1,540 +0,0 @@
-/*
- * (C) Copyright 2002
- * Hyperion Entertainment, Hans-JoergF@hyperion-entertainment.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
- */
-
-#include <common.h>
-#include <devices.h>
-#include "memio.h"
-#include <part.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-unsigned char *cursor_position;
-unsigned int cursor_row;
-unsigned int cursor_col;
-
-unsigned char current_attr;
-
-unsigned int video_numrows = 25;
-unsigned int video_numcols = 80;
-unsigned int video_scrolls = 0;
-
-#define VIDEO_BASE (unsigned char *)0xFD0B8000
-#define VIDEO_ROWS video_numrows
-#define VIDEO_COLS video_numcols
-#define VIDEO_PITCH (2 * video_numcols)
-#define VIDEO_SIZE (video_numrows * video_numcols * 2)
-#define VIDEO_NAME "vga"
-
-void video_test(void);
-void video_putc(char ch);
-void video_puts(char *string);
-void video_scroll(int rows);
-void video_banner(void);
-int video_init(void);
-int video_start(void);
-int video_rows(void);
-int video_cols(void);
-
-char *prompt_string = "=>";
-
-void video_set_color(unsigned char attr)
-{
- unsigned char *fb = (unsigned char *)VIDEO_BASE;
- int i;
-
- current_attr = video_get_attr();
-
- for (i=0; i<VIDEO_SIZE; i+=2)
- {
- *(fb+i+1) = current_attr;
- }
-}
-
-unsigned char video_get_attr(void)
-{
- char *s;
- unsigned char attr;
-
- attr = 0x0f;
-
- s = getenv("vga_fg_color");
- if (s)
- {
- attr = atoi(s);
- }
-
- s = getenv("vga_bg_color");
- if (s)
- {
- attr |= atoi(s)<<4;
- }
-
- return attr;
-}
-
-int video_inited = 0;
-
-int drv_video_init(void)
-{
- int error, devices = 1 ;
- device_t vgadev ;
- if (video_inited) return 1;
- video_inited = 1;
- video_init();
- memset (&vgadev, 0, sizeof(vgadev));
-
- strcpy(vgadev.name, VIDEO_NAME);
- vgadev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_SYSTEM;
- vgadev.putc = video_putc;
- vgadev.puts = video_puts;
- vgadev.getc = NULL;
- vgadev.tstc = NULL;
- vgadev.start = video_start;
-
- error = device_register (&vgadev);
-
- if (error == 0)
- {
- char *s = getenv("stdout");
- if (s && strcmp(s, VIDEO_NAME)==0)
- {
- if (overwrite_console()) return 1;
- error = console_assign(stdout, VIDEO_NAME);
- if (error == 0) return 1;
- else return error;
- }
- return 1;
- }
-
- return error;
-}
-
-int video_init(void)
-{
- cursor_position = VIDEO_BASE; /* Color text display base */
- cursor_row = 0;
- cursor_col = 0;
- current_attr = video_get_attr(); /* Currently selected value for attribute. */
-/* video_test(); */
- video_set_color(current_attr);
-
- return 0;
-}
-
-void video_set_cursor(int line, int column)
-{
- unsigned short offset = line*video_numcols + column;
- cursor_position = VIDEO_BASE + line*VIDEO_PITCH + column*2;
- out_byte(0x3D4, 0x0E);
- out_byte(0x3D5, offset/256);
- out_byte(0x3D4, 0x0F);
- out_byte(0x3D5, offset%256);
-}
-
-void video_write_char(int character)
-{
- *cursor_position = character;
- *(cursor_position+1) = current_attr;
-}
-
-void video_test(void)
-{
-
-}
-
-void video_putc(char ch)
-{
- switch(ch)
- {
- case '\n':
- cursor_col = 0;
- cursor_row += 1;
- break;
- case '\r':
- cursor_col = 0;
- break;
- case '\b':
- if (cursor_col) cursor_col--;
- else return;
- break;
- case '\t':
- cursor_col = (cursor_col/8+1)*8;
- break;
- default:
- video_write_char(ch);
- cursor_col++;
- if (cursor_col > VIDEO_COLS-1)
- {
- cursor_row++;
- cursor_col=0;
- }
- }
-
- if (cursor_row > VIDEO_ROWS-1)
- video_scroll(1);
- video_set_cursor(cursor_row, cursor_col);
-}
-
-void video_scroll(int rows)
-{
- unsigned short clear = ((unsigned short)current_attr) | (' '<<8);
- unsigned short* addr16 = &((unsigned short *)VIDEO_BASE)[(VIDEO_ROWS-rows)*VIDEO_COLS];
- int i;
- char *s;
-
- s = getenv("vga_askscroll");
- video_scrolls += rows;
-
- if (video_scrolls >= video_numrows)
- {
- if (s && strcmp(s, "yes"))
- {
- while (-1 == tstc());
- }
-
- video_scrolls = 0;
- }
-
-
- memcpy(VIDEO_BASE, VIDEO_BASE+rows*(VIDEO_COLS*2), (VIDEO_ROWS-rows)*(VIDEO_COLS*2));
- for (i = 0 ; i < rows * VIDEO_COLS ; i++)
- addr16[i] = clear;
- cursor_row-=rows;
- cursor_col=0;
-}
-
-void video_puts(char *string)
-{
- while (*string)
- {
- video_putc(*string);
- string++;
- }
-}
-
-int video_start(void)
-{
- return 0;
-}
-
-unsigned char video_single_box[] =
-{
- 218, 196, 191,
- 179, 179,
- 192, 196, 217
-};
-
-unsigned char video_double_box[] =
-{
- 201, 205, 187,
- 186, 186,
- 200, 205, 188
-};
-
-unsigned char video_single_title[] =
-{
- 195, 196, 180, 180, 195
-};
-
-unsigned char video_double_title[] =
-{
- 204, 205, 185, 181, 198
-};
-
-#define SINGLE_BOX 0
-#define DOUBLE_BOX 1
-
-unsigned char *video_addr(int x, int y)
-{
- return VIDEO_BASE + 2*(VIDEO_COLS*y) + 2*x;
-}
-
-void video_bios_print_string(char *s, int x, int y, int attr, int count)
-{
- int cattr = current_attr;
- if (attr != -1) current_attr = attr;
- video_set_cursor(x,y);
- while (count)
- {
- char c = *s++;
- if (attr == -1) current_attr = *s++;
- video_putc(c);
- count--;
- }
-}
-
-void video_draw_box(int style, int attr, char *title, int separate, int x, int y, int w, int h)
-{
- unsigned char *fb, *fb2;
- unsigned char *st = (style == SINGLE_BOX)?video_single_box : video_double_box;
- unsigned char *ti = (style == SINGLE_BOX)?video_single_title : video_double_title;
- int i;
-
- fb = video_addr(x,y);
- *(fb) = st[0];
- *(fb+1) = attr;
- fb += 2;
-
- fb2 = video_addr(x,y+h-1);
- *(fb2) = st[5];
- *(fb2+1) = attr;
- fb2 += 2;
-
- for (i=0; i<w-2;i++)
- {
- *fb = st[1];
- fb++;
- *fb = attr;
- fb++;
-
- *fb2 = st[6];
- fb2++;
- *fb2 = attr;
- fb2++;
-
- }
- *fb = st[2];
- *(fb+1) = attr;
-
- *fb2 = st[7];
- *(fb2+1) = attr;
-
- fb = video_addr(x, y+1);
- fb2 = video_addr(x+w-1, y+1);
- for (i=0; i<h-2; i++)
- {
- *fb = st[3];
- *(fb+1) = attr; fb += 2*VIDEO_COLS;
-
- *fb2 = st[4];
- *(fb2+1) = attr; fb2 += 2*VIDEO_COLS;
- }
-
- /* Draw title */
- if (title)
- {
- if (separate == 0)
- {
- fb = video_addr(x+1, y);
- *fb = ti[3];
- fb += 2;
- *fb = ' ';
- fb += 2;
- while (*title)
- {
- *fb = *title;
- fb ++;
- *fb = attr;
- fb++; title++;
- }
- *fb = ' ';
- fb += 2;
- *fb = ti[4];
- }
- else
- {
- fb = video_addr(x, y+2);
- *fb = ti[0];
- fb += 2;
- for (i=0; i<w-2; i++)
- {
- *fb = ti[1];
- *(fb+1) = attr;
- fb += 2;
- }
- *fb = ti[2];
- *(fb+1) = attr;
- fb = video_addr(x+1, y+1);
- for (i=0; i<w-2; i++)
- {
- *fb = ' ';
- *(fb+1) = attr;
- fb += 2;
- }
- fb = video_addr(x+2, y+1);
-
- while (*title)
- {
- *fb = *title;
- *(fb+1) = attr;
- fb += 2;
- title++;
- }
- }
- }
-
-}
-
-void video_draw_text(int x, int y, int attr, char *text)
-{
- unsigned char *fb = video_addr(x,y);
- while (*text)
- {
- *fb++ = *text++;
- *fb++ = attr;
- }
-}
-
-void video_save_rect(int x, int y, int w, int h, void *save_area, int clearchar, int clearattr)
-{
- unsigned char *save = (unsigned char *)save_area;
- unsigned char *fb = video_addr(x,y);
- int i,j;
- for (i=0; i<h; i++)
- {
- unsigned char *fbb = fb;
- for (j=0; j<w; j++)
- {
- *save ++ = *fb;
- if (clearchar > 0) *fb = clearchar;
- fb ++;
- *save ++ = *fb;
- if (clearattr > 0) *fb = clearattr;
- }
- fb = fbb + 2*VIDEO_COLS;
- }
-}
-
-void video_restore_rect(int x, int y, int w, int h, void *save_area)
-{
- unsigned char *save = (unsigned char *)save_area;
- unsigned char *fb = video_addr(x,y);
- int i,j;
- for (i=0; i<h; i++)
- {
- unsigned char *fbb = fb;
- for (j=0; j<w; j++)
- {
- *fb ++ = *save ++;
- *fb ++ = *save ++;
- }
- fb = fbb + 2*VIDEO_COLS;
- }
-
-}
-
-int video_rows(void)
-{
- return VIDEO_ROWS;
-}
-
-int video_cols(void)
-{
- return VIDEO_COLS;
-}
-
-void video_size(int cols, int rows)
-{
- video_numrows = rows;
- video_numcols = cols;
-}
-
-void video_clear(void)
-{
- unsigned short *fbb = (unsigned short *)0xFD0B8000;
- int i,j;
- unsigned short val = 0x2000 | current_attr;
-
- for (i=0; i<video_rows(); i++)
- {
- for (j=0; j<video_cols(); j++)
- {
- *fbb++ = val;
- }
- }
- video_set_cursor(0,0);
- cursor_row = 0;
- cursor_col = 0;
-}
-
-#ifdef EASTEREGG
-int video_easteregg_active = 0;
-
-void video_easteregg(void)
-{
- video_easteregg_active = 1;
-}
-#endif
-
-extern block_dev_desc_t * ide_get_dev(int dev);
-extern char version_string[];
-
-void video_banner(void)
-{
- block_dev_desc_t *ide;
- int i;
- char *s;
- int maxdev;
-
-
- if (video_inited == 0) return;
-#ifdef EASTEREGG
- if (video_easteregg_active)
- {
- prompt_string="";
- video_clear();
- printf("\n");
- printf(" **** COMMODORE 64 BASIC X2 ****\n\n");
- printf(" 64K RAM SYSTEM 38911 BASIC BYTES FREE\n\n");
- printf("READY\n");
- }
- else
- {
-#endif
- s = getenv("ide_maxbus");
- if (s)
- maxdev = atoi(s) * 2;
- else
- maxdev = 4;
-
- s = getenv("stdout");
- if (s && strcmp(s, "serial") == 0)
- return;
-
- video_clear();
- printf("%s\n\nCPU: ", version_string);
- checkcpu();
- printf("DRAM: %ld MB\n", gd->bd->bi_memsize/(1024*1024));
- printf("FSB: %ld MHz\n", gd->bd->bi_busfreq/1000000);
-
- printf("\n---- Disk summary ----\n");
- for (i = 0; i < maxdev; i++)
- {
- ide = ide_get_dev(i);
- printf("Device %d: ", i);
- dev_print(ide);
- }
-
-/*
- video_draw_box(SINGLE_BOX, 0x0F, "Test 1", 0, 0,18, 72, 4);
- video_draw_box(DOUBLE_BOX, 0x0F, "Test 2", 1, 4,10, 50, 6);
- video_draw_box(DOUBLE_BOX, 0x0F, "Test 3", 0, 40, 3, 20, 5);
-
- video_draw_text(1, 4, 0x2F, "Highlighted options");
- video_draw_text(1, 5, 0x0F, "Non-selected option");
- video_draw_text(1, 6, 0x07, "disabled option");
-*/
-#ifdef EASTEREGG
- }
-#endif
-}
diff --git a/board/Marvell/common/bootseq.txt b/board/Marvell/common/bootseq.txt
deleted file mode 100644
index 391d49a119..0000000000
--- a/board/Marvell/common/bootseq.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-(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_early_init_f:
- 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/Marvell/common/ecctest.c b/board/Marvell/common/ecctest.c
deleted file mode 100644
index e22b1136a2..0000000000
--- a/board/Marvell/common/ecctest.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * (C) Copyright 2001
- *
- * 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
- */
-
-#ifdef ECC_TEST
-static inline void ecc_off (void)
-{
- *(volatile int *) (INTERNAL_REG_BASE_ADDR + 0x4b4) &= ~0x00200000;
-}
-
-static inline void ecc_on (void)
-{
- *(volatile int *) (INTERNAL_REG_BASE_ADDR + 0x4b4) |= 0x00200000;
-}
-
-static int putshex (const char *buf, int len)
-{
- int i;
-
- for (i = 0; i < len; i++) {
- printf ("%02x", buf[i]);
- }
- return 0;
-}
-
-static int char_memcpy (void *d, const void *s, int len)
-{
- int i;
- char *cd = d;
- const char *cs = s;
-
- for (i = 0; i < len; i++) {
- *(cd++) = *(cs++);
- }
- return 0;
-}
-
-static int memory_test (char *buf)
-{
- const char src[][16] = {
- {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01},
- {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02},
- {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04},
- {0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08},
- {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
- {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20},
- {0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x40},
- {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80},
- {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- 0x55, 0x55, 0x55, 0x55, 0x55, 0x55},
- {0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa},
- {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
- };
- const int foo[] = { 0 };
- int i, j, a;
-
- printf ("\ntest @ %d %p\n", foo[0], buf);
- for (i = 0; i < 12; i++) {
- for (a = 0; a < 8; a++) {
- const char *s = src[i] + a;
- int align = (unsigned) (s) & 0x7;
-
- /* ecc_off(); */
- memcpy (buf, s, 8);
- /* ecc_on(); */
- putshex (s, 8);
- if (memcmp (buf, s, 8)) {
- putc ('\n');
- putshex (buf, 8);
- printf (" [FAIL] (%p) align=%d\n", s, align);
- for (j = 0; j < 8; j++) {
- s[j] == buf[j] ? puts (" ") :
- printf ("%02x",
- (s[j]) ^ (buf[j]));
- }
- putc ('\n');
- } else {
- printf (" [PASS] (%p) align=%d\n", s, align);
- }
- /* ecc_off(); */
- char_memcpy (buf, s, 8);
- /* ecc_on(); */
- putshex (s, 8);
- if (memcmp (buf, s, 8)) {
- putc ('\n');
- putshex (buf, 8);
- printf (" [FAIL] (%p) align=%d\n", s, align);
- for (j = 0; j < 8; j++) {
- s[j] == buf[j] ? puts (" ") :
- printf ("%02x",
- (s[j]) ^ (buf[j]));
- }
- putc ('\n');
- } else {
- printf (" [PASS] (%p) align=%d\n", s, align);
- }
- }
- }
-
- return 0;
-}
-#endif
diff --git a/board/Marvell/common/flash.c b/board/Marvell/common/flash.c
deleted file mode 100644
index a8add85672..0000000000
--- a/board/Marvell/common/flash.c
+++ /dev/null
@@ -1,1072 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@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
- */
-
-/*
- * flash.c - flash support for the 512k, 8bit boot flash
- and the 8MB 32bit extra flash on the DB64360
- * most of this file was based on the existing U-Boot
- * flash drivers.
- *
- * written or collected and sometimes rewritten by
- * Ingo Assmus <ingo.assmus@keymile.com>
- *
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include "../include/mv_gen_reg.h"
-#include "../include/memory.h"
-#include "intel_flash.h"
-
-#define FLASH_ROM 0xFFFD /* unknown flash type */
-#define FLASH_RAM 0xFFFE /* unknown flash type */
-#define FLASH_MAN_UNKNOWN 0xFFFF0000
-
-/* #define DEBUG */
-
-/* Intel flash commands */
-int flash_erase_intel (flash_info_t * info, int s_first, int s_last);
-int write_word_intel (bank_addr_t addr, bank_word_t value);
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (int portwidth, vu_long * addr,
- flash_info_t * info);
-static int write_word (flash_info_t * info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned int i;
- unsigned long size_b0 = 0, size_b1 = 0;
- unsigned long base, flash_size;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* the boot flash */
- base = CFG_FLASH_BASE;
- size_b0 =
- flash_get_size (CFG_BOOT_FLASH_WIDTH, (vu_long *) base,
- &flash_info[0]);
-
- printf ("[%ldkB@%lx] ", size_b0 / 1024, base);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH at %08lx: Size = 0x%08lx = %ld MB\n", base, size_b0, size_b0 << 20);
- }
-
- base = memoryGetDeviceBaseAddress (CFG_EXTRA_FLASH_DEVICE);
-/* base = memoryGetDeviceBaseAddress(DEV_CS3_BASE_ADDR);*/
- for (i = 1; i < CFG_MAX_FLASH_BANKS; i++) {
- unsigned long size =
- flash_get_size (CFG_EXTRA_FLASH_WIDTH,
- (vu_long *) base, &flash_info[i]);
-
- printf ("[%ldMB@%lx] ", size >> 20, base);
-
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- if (i == 1) {
- printf ("## Unknown FLASH at %08lx: Size = 0x%08lx = %ld MB\n", base, size_b1, size_b1 << 20);
- }
- break;
- }
- size_b1 += size;
- base += size;
- }
-
- flash_size = size_b0 + size_b1;
- return flash_size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
- int sector_size;
-
- if (!info->sector_count)
- return;
-
- /* set up sector start address table */
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- case FLASH_28F128J3A:
- case FLASH_28F640J3A:
- case FLASH_RAM:
- /* this chip has uniformly spaced sectors */
- sector_size = info->size / info->sector_count;
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * sector_size);
- break;
- default:
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_STM:
- printf ("STM ");
- break;
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf ("FUJITSU ");
- break;
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- printf ("AM29LV040B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400B:
- printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T:
- printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B:
- printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T:
- printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B:
- printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T:
- printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B:
- printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_28F640J3A:
- printf ("28F640J3A (64 Mbit)\n");
- break;
- case FLASH_28F128J3A:
- printf ("28F128J3A (128 Mbit)\n");
- break;
- case FLASH_ROM:
- printf ("ROM\n");
- break;
- case FLASH_RAM:
- printf ("RAM\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- if ((info->size >> 20) > 0) {
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
- } else {
- printf (" Size: %ld kB in %d Sectors\n",
- info->size >> 10, info->sector_count);
- }
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static inline void flash_cmd (int width, volatile unsigned char *addr,
- int offset, unsigned char cmd)
-{
- /* supports 1x8, 1x16, and 2x16 */
- /* 2x8 and 4x8 are not supported */
- if (width == 4) {
- /* assuming chips are in 16 bit mode */
- /* 2x16 */
- unsigned long cmd32 = (cmd << 16) | cmd;
-
- *(volatile unsigned long *) (addr + offset * 2) = cmd32;
- } else {
- /* 1x16 or 1x8 */
- *(volatile unsigned char *) (addr + offset) = cmd;
- }
-}
-
-static ulong
-flash_get_size (int portwidth, vu_long * addr, flash_info_t * info)
-{
- short i;
- volatile unsigned char *caddr = (unsigned char *) addr;
- volatile unsigned short *saddr = (unsigned short *) addr;
- volatile unsigned long *laddr = (unsigned long *) addr;
- char old[2], save;
- ulong id = 0, manu = 0, base = (ulong) addr;
-
-#ifdef DEBUG
- printf ("%s: enter\n", __FUNCTION__);
-#endif
- info->portwidth = portwidth;
-
- save = *caddr;
-
- flash_cmd (portwidth, caddr, 0, 0xf0);
- flash_cmd (portwidth, caddr, 0, 0xf0);
-
- udelay (10);
-
- old[0] = caddr[0];
- old[1] = caddr[1];
-
-
- if (old[0] != 0xf0) {
- flash_cmd (portwidth, caddr, 0, 0xf0);
- flash_cmd (portwidth, caddr, 0, 0xf0);
-
- udelay (10);
-
- if (*caddr == 0xf0) {
- /* this area is ROM */
- *caddr = save;
- info->flash_id = FLASH_ROM + FLASH_MAN_UNKNOWN;
- info->sector_count = 8;
- info->size = 0x80000;
- flash_get_offsets (base, info);
- return info->size;
- }
- } else {
- *caddr = 0;
-
- udelay (10);
-
- if (*caddr == 0) {
- /* this area is RAM */
- *caddr = save;
- info->flash_id = FLASH_RAM + FLASH_MAN_UNKNOWN;
- info->sector_count = 8;
- info->size = 0x80000;
- flash_get_offsets (base, info);
- return info->size;
- }
- flash_cmd (portwidth, caddr, 0, 0xf0);
-
- udelay (10);
- }
-
- /* Write auto select command: read Manufacturer ID */
- flash_cmd (portwidth, caddr, 0x555, 0xAA);
- flash_cmd (portwidth, caddr, 0x2AA, 0x55);
- flash_cmd (portwidth, caddr, 0x555, 0x90);
-
- udelay (10);
-
- if ((caddr[0] == old[0]) && (caddr[1] == old[1])) {
-
- /* this area is ROM */
- info->flash_id = FLASH_ROM + FLASH_MAN_UNKNOWN;
- info->sector_count = 8;
- info->size = 0x80000;
- flash_get_offsets (base, info);
- return info->size;
-#ifdef DEBUG
- } else {
- printf ("%px%d: %02x:%02x -> %02x:%02x\n",
- caddr, portwidth, old[0], old[1], caddr[0], caddr[1]);
-#endif
- }
-
- switch (portwidth) {
- case 1:
- manu = caddr[0];
- manu |= manu << 16;
- id = caddr[1];
- break;
- case 2:
- manu = saddr[0];
- manu |= manu << 16;
- id = saddr[1];
- id |= id << 16;
- break;
- case 4:
- manu = laddr[0];
- id = laddr[1];
- break;
- }
-
-#ifdef DEBUG
- flash_cmd (portwidth, caddr, 0, 0xf0);
-
- printf ("\n%08lx:%08lx:%08lx\n", base, manu, id);
- printf ("%08lx %08lx %08lx %08lx\n",
- laddr[0], laddr[1], laddr[2], laddr[3]);
-#endif
-
- switch (manu) {
- case STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- flash_cmd (portwidth, caddr, 0, 0xf0);
-
- printf ("Unknown Mfr [%08lx]:%08lx\n", manu, id);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- switch (id) {
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- info->chipwidth = 1;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- info->chipwidth = 1;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- info->chipwidth = 1;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- info->chipwidth = 1;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- info->chipwidth = 1;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- info->chipwidth = 1;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- case AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x80000;
- info->chipwidth = 1;
- break; /* => 512 kB */
-
- case INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 128 * 1024 * 64; /* 128kbytes x 64 blocks */
- info->chipwidth = 2;
- if (portwidth == 4)
- info->size *= 2; /* 2x16 */
- break;
-
- case INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 128 * 1024 * 128; /* 128kbytes x 128 blocks */
- info->chipwidth = 2;
- if (portwidth == 4)
- info->size *= 2; /* 2x16 */
- break;
-
- default:
- flash_cmd (portwidth, caddr, 0, 0xf0);
-
- printf ("Unknown id %lx:[%lx]\n", manu, id);
- info->flash_id = FLASH_UNKNOWN;
- info->chipwidth = 1;
- return (0); /* => no or unknown flash */
-
- }
-
- flash_get_offsets (base, info);
-
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0)=0x02 */
- /* D0 = 1 if protected */
- caddr = (volatile unsigned char *) (info->start[i]);
- saddr = (volatile unsigned short *) (info->start[i]);
- laddr = (volatile unsigned long *) (info->start[i]);
- if (portwidth == 1)
- info->protect[i] = caddr[2] & 1;
- else if (portwidth == 2)
- info->protect[i] = saddr[2] & 1;
- else
- info->protect[i] = laddr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- caddr = (volatile unsigned char *) info->start[0];
-
- flash_cmd (portwidth, caddr, 0, 0xF0); /* reset bank */
- }
-
- return (info->size);
-}
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- volatile unsigned char *addr = (uchar *) (info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
-/* modified to support 2x16 Intel flash */
-/* Note that the code will not exit on a flash erasure error or timeout */
-/* but will print and error message and continue processing sectors */
-/* until they are all erased. */
-/* 10-16-2002 P. Marchese */
- ulong mask;
- int timeout;
-
- if (info->portwidth == 4)
-/* {
- printf ("- Warning: erasing of 32Bit (2*16Bit i.e. 2*28F640J3A) not supported yet !!!! \n");
- return 1;
- }*/
- {
- /* make sure it's Intel flash */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- /* yup! it's an Intel flash */
- /* is it 16-bits wide? */
- if (info->chipwidth == 2) {
- /* yup! it's 16-bits wide */
- /* are there any sectors to process? */
- if ((s_first < 0) || (s_first > s_last)) {
- printf ("Error: There are no sectors to erase\n");
- printf ("Either sector %d is less than zero\n", s_first);
- printf ("or sector %d is greater than sector %d\n", s_first, s_last);
- return 1;
- }
- /* check for protected sectors */
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect)
- if (info->protect[sect])
- prot++;
- /* if variable "prot" is nonzero, there are protected sectors */
- if (prot)
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- /* reset the flash */
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_RST);
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
- /* Clear the status register */
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_CLR_STAT);
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_RST);
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- /* is the sector unprotected? */
- if (info->protect[sect] == 0) { /* not protected */
- /* issue the single block erase command, 0x20 */
- flash_cmd (info->portwidth,
- (volatile unsigned
- char *) info->
- start[sect], 0,
- CHIP_CMD_ERASE1);
- /* issue the erase confirm command, 0xD0 */
- flash_cmd (info->portwidth,
- (volatile unsigned
- char *) info->
- start[sect], 0,
- CHIP_CMD_ERASE2);
- l_sect = sect;
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
- /* poll for erasure completion */
- /* put flash into read status mode by writing 0x70 to it */
- flash_cmd (info->portwidth,
- addr, 0,
- CHIP_CMD_RD_STAT);
- /* setup the status register mask */
- mask = CHIP_STAT_RDY |
- (CHIP_STAT_RDY << 16);
- /* init. the timeout counter */
- start = get_timer (0);
- /* keep looping while the flash is not ready */
- /* exit the loop by timing out or the flash */
- /* becomes ready again */
- timeout = 0;
- while ((*
- (volatile unsigned
- long *) info->
- start[sect] & mask) !=
- mask) {
- /* has the timeout limit been reached? */
- if (get_timer (start)
- >
- CFG_FLASH_ERASE_TOUT)
- {
- /* timeout limit reached */
- printf ("Time out limit reached erasing sector at address %08lx\n", info->start[sect]);
- printf ("Continuing with next sector\n");
- timeout = 1;
- goto timed_out_error;
- }
- /* put flash into read status mode by writing 0x70 to it */
- flash_cmd (info->
- portwidth,
- addr, 0,
- CHIP_CMD_RD_STAT);
- }
- /* did we timeout? */
- timed_out_error:if (timeout == 0)
- {
- /* didn't timeout, so check the status register */
- /* create the status mask to check for errors */
- mask = CHIP_STAT_ECLBS;
- mask = mask | (mask <<
- 16);
- /* put flash into read status mode by writing 0x70 to it */
- flash_cmd (info->
- portwidth,
- addr, 0,
- CHIP_CMD_RD_STAT);
- /* are there any errors? */
- if ((*
- (volatile
- unsigned long *)
- info->
- start[sect] &
- mask) != 0) {
- /* We got an erasure error */
- printf ("Flash erasure error at address 0x%08lx\n", info->start[sect]);
- printf ("Continuing with next sector\n");
- /* reset the flash */
- flash_cmd
- (info->
- portwidth,
- addr,
- 0,
- CHIP_CMD_RST);
- }
- }
- /* erasure completed without errors */
- /* reset the flash */
- flash_cmd (info->portwidth,
- addr, 0,
- CHIP_CMD_RST);
- } /* end if not protected */
- } /* end for loop */
- printf ("Flash erasure done\n");
- return 0;
- } else {
- /* The Intel flash is not 16-bit wide */
- /* print and error message and return */
- /* NOTE: you can add routines here to handle other size flash */
- printf ("Error: Intel flash device is only %d-bits wide\n", info->chipwidth * 8);
- printf ("The erasure code only handles Intel 16-bit wide flash memory\n");
- return 1;
- }
- } else {
- /* Not Intel flash so return an error as a write timeout */
- /* NOTE: if it's another type flash, stick its routine here */
- printf ("Error: The flash device is not Intel type\n");
- printf ("The erasure code only supports Intel flash in a 32-bit port width\n");
- return 1;
- }
- }
-
- /* end 32-bit wide flash code */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_ROM)
- return 1; /* Rom can not be erased */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_RAM) { /* RAM just copy 0s to RAM */
- for (sect = s_first; sect <= s_last; sect++) {
- int sector_size = info->size / info->sector_count;
-
- addr = (uchar *) (info->start[sect]);
- memset ((void *) addr, 0, sector_size);
- }
- return 0;
- }
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) { /* Intel works spezial */
- return flash_erase_intel (info,
- (unsigned short) s_first,
- (unsigned short) s_last);
- }
-#if 0
- if ((info->flash_id == FLASH_UNKNOWN) || /* Flash is unknown to PPCBoot */
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-#endif
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- flash_cmd (info->portwidth, addr, 0x555, 0xAA); /* start erase routine */
- flash_cmd (info->portwidth, addr, 0x2AA, 0x55);
- flash_cmd (info->portwidth, addr, 0x555, 0x80);
- flash_cmd (info->portwidth, addr, 0x555, 0xAA);
- flash_cmd (info->portwidth, addr, 0x2AA, 0x55);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (uchar *) (info->start[sect]);
- flash_cmd (info->portwidth, addr, 0, 0x30);
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (volatile unsigned char *) (info->start[l_sect]);
- /* broken for 2x16: TODO */
- while ((addr[0] & 0x80) != 0x80) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (volatile unsigned char *) info->start[0];
- flash_cmd (info->portwidth, addr, 0, 0xf0);
- flash_cmd (info->portwidth, addr, 0, 0xf0);
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-/* broken for 2x16: TODO */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
-/* Commented out since the below code should work for 32-bit(2x 16 flash) */
-/* 10-16-2002 P. Marchese */
-/* if(info->portwidth==4) return 1; */
-/* if(info->portwidth==4) {
- printf ("- Warning: writting of 32Bit (2*16Bit i.e. 2*28F640J3A) not supported yet !!!! \n");
- return 1;
- }*/
-
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_ROM)
- return 0;
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_RAM) {
- memcpy ((void *) addr, src, cnt);
- return 0;
- }
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_word (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-/* broken for 2x16: TODO */
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile unsigned char *addr = (uchar *) (info->start[0]);
- ulong start;
- int flag, i;
- ulong mask;
-
-/* modified so that it handles 32-bit(2x16 Intel flash programming */
-/* 10-16-2002 P. Marchese */
-
- if (info->portwidth == 4)
-/* {
- printf ("- Warning: writting of 32Bit (2*16Bit i.e. 2*28F640J3A) not supported yet !!!! \n");
- return 1;
- }*/
- {
- /* make sure it's Intel flash */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- /* yup! it's an Intel flash */
- /* is it 16-bits wide? */
- if (info->chipwidth == 2) {
- /* yup! it's 16-bits wide */
- /* so we know how to program it */
- /* reset the flash */
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_RST);
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
- /* Clear the status register */
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_CLR_STAT);
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_RST);
- /* 1st cycle of word/byte program */
- /* write 0x40 to the location to program */
- flash_cmd (info->portwidth, (uchar *) dest, 0,
- CHIP_CMD_PROG);
- /* 2nd cycle of word/byte program */
- /* write the data to the destination address */
- *(ulong *) dest = data;
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
- /* setup the status register mask */
- mask = CHIP_STAT_RDY | (CHIP_STAT_RDY << 16);
- /* put flash into read status mode by writing 0x70 to it */
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_RD_STAT);
- /* init. the timeout counter */
- start = get_timer (0);
- /* keep looping while the flash is not ready */
- /* exit the loop by timing out or the flash */
- /* becomes ready again */
-/* 11-13-2002 Paul Marchese */
-/* modified while loop conditional statement */
-/* because we were always timing out. */
-/* there is a type mismatch, "addr[0]" */
-/* returns a byte but "mask" is a 32-bit value */
- while ((*(volatile unsigned long *) info->
- start[0] & mask) != mask)
-/* original code */
-/* while (addr[0] & mask) != mask) */
- {
- /* has the timeout limit been reached? */
- if (get_timer (start) >
- CFG_FLASH_WRITE_TOUT) {
- /* timeout limit reached */
- printf ("Time out limit reached programming address %08lx with data %08lx\n", dest, data);
- /* reset the flash */
- flash_cmd (info->portwidth,
- addr, 0,
- CHIP_CMD_RST);
- return (1);
- }
- /* put flash into read status mode by writing 0x70 to it */
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_RD_STAT);
- }
- /* flash is ready, so check the status */
- /* create the status mask to check for errors */
- mask = CHIP_STAT_DPS | CHIP_STAT_VPPS |
- CHIP_STAT_PSLBS;
- mask = mask | (mask << 16);
- /* put flash into read status mode by writing 0x70 to it */
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_RD_STAT);
- /* are there any errors? */
- if ((addr[0] & mask) != 0) {
- /* We got a one of the following errors: */
- /* Voltage range, Device protect, or programming */
- /* return the error as a device timeout */
- /* put flash into read status mode by writing 0x70 to it */
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_RD_STAT);
- printf ("Flash programming error at address 0x%08lx\n", dest);
- printf ("Flash status register contains 0x%08lx\n", (unsigned long) addr[0]);
- /* reset the flash */
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_RST);
- return 1;
- }
- /* write completed without errors */
- /* reset the flash */
- flash_cmd (info->portwidth, addr, 0,
- CHIP_CMD_RST);
- return 0;
- } else {
- /* it's not 16-bits wide, so return an error as a write timeout */
- /* NOTE: you can add routines here to handle other size flash */
- printf ("Error: Intel flash device is only %d-bits wide\n", info->chipwidth * 8);
- printf ("The write code only handles Intel 16-bit wide flash memory\n");
- return 1;
- }
- } else {
- /* not Intel flash so return an error as a write timeout */
- /* NOTE: if it's another type flash, stick its routine here */
- printf ("Error: The flash device is not Intel type\n");
- printf ("The code only supports Intel flash in a 32-bit port width\n");
- return 1;
- }
- }
-
- /* end of 32-bit flash code */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_ROM)
- return 1;
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_RAM) {
- *(unsigned long *) dest = data;
- return 0;
- }
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- unsigned short low = data & 0xffff;
- unsigned short hi = (data >> 16) & 0xffff;
- int ret = write_word_intel ((bank_addr_t) dest, hi);
-
- if (!ret)
- ret = write_word_intel ((bank_addr_t) (dest + 2),
- low);
-
- return ret;
- }
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *) dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* first, perform an unlock bypass command to speed up flash writes */
- addr[0x555] = 0xAA;
- addr[0x2AA] = 0x55;
- addr[0x555] = 0x20;
-
- /* write each byte out */
- for (i = 0; i < 4; i++) {
- char *data_ch = (char *) &data;
-
- addr[0] = 0xA0;
- *(((char *) dest) + i) = data_ch[i];
- udelay (10); /* XXX */
- }
-
- /* we're done, now do an unlock bypass reset */
- addr[0] = 0x90;
- addr[0] = 0x00;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *) dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/Marvell/common/i2c.c b/board/Marvell/common/i2c.c
deleted file mode 100644
index 32b2b30a4a..0000000000
--- a/board/Marvell/common/i2c.c
+++ /dev/null
@@ -1,532 +0,0 @@
-/*
- * (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
- *
- * Hacked for the DB64360 board by Ingo.Assmus@keymile.com
- * extra improvments by Brain Waite
- */
-#include <common.h>
-#include <mpc8xx.h>
-#include <malloc.h>
-#include "../include/mv_gen_reg.h"
-#include "../include/core.h"
-
-#define MAX_I2C_RETRYS 10
-#define I2C_DELAY 1000 /* Should be at least the # of MHz of Tclk */
-#undef DEBUG_I2C
-/*#define DEBUG_I2C*/
-
-#ifdef DEBUG_I2C
-#define DP(x) x
-#else
-#define DP(x)
-#endif
-
-/* Assuming that there is only one master on the bus (us) */
-
-static void i2c_init (int speed, int slaveaddr)
-{
- unsigned int n, m, freq, margin, power;
- unsigned int actualN = 0, actualM = 0;
- unsigned int control, status;
- unsigned int minMargin = 0xffffffff;
- unsigned int tclk = CFG_TCLK;
- unsigned int i2cFreq = speed; /* 100000 max. Fast mode not supported */
-
- DP (puts ("i2c_init\n"));
-/* gtI2cMasterInit */
- for (n = 0; n < 8; n++) {
- for (m = 0; m < 16; m++) {
- power = 2 << n; /* power = 2^(n+1) */
- freq = tclk / (10 * (m + 1) * power);
- if (i2cFreq > freq)
- margin = i2cFreq - freq;
- else
- margin = freq - i2cFreq;
- if (margin < minMargin) {
- minMargin = margin;
- actualN = n;
- actualM = m;
- }
- }
- }
-
- DP (puts ("setup i2c bus\n"));
-
- /* Setup bus */
-/* gtI2cReset */
- GT_REG_WRITE (I2C_SOFT_RESET, 0);
-
- DP (puts ("udelay...\n"));
-
- udelay (I2C_DELAY);
-
- DP (puts ("set baudrate\n"));
-
- GT_REG_WRITE (I2C_STATUS_BAUDE_RATE, (actualM << 3) | actualN);
- GT_REG_WRITE (I2C_CONTROL, (0x1 << 2) | (0x1 << 6));
-
- udelay (I2C_DELAY * 10);
-
- DP (puts ("read control, baudrate\n"));
-
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
- GT_REG_READ (I2C_CONTROL, &control);
-}
-
-static uchar i2c_start (void)
-{ /* DB64360 checked -> ok */
- unsigned int control, status;
- int count = 0;
-
- DP (puts ("i2c_start\n"));
-
- /* Set the start bit */
-
-/* gtI2cGenerateStartBit() */
-
- GT_REG_READ (I2C_CONTROL, &control);
- control |= (0x1 << 5); /* generate the I2C_START_BIT */
- GT_REG_WRITE (I2C_CONTROL, control);
-
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
-
- count = 0;
- while ((status & 0xff) != 0x08) {
- udelay (I2C_DELAY);
- if (count > 20) {
- GT_REG_WRITE (I2C_CONTROL, (0x1 << 4)); /*stop */
- return (status);
- }
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
- count++;
- }
-
- return (0);
-}
-
-static uchar i2c_select_device (uchar dev_addr, uchar read, int ten_bit)
-{
- unsigned int status, data, bits = 7;
- int count = 0;
-
- DP (puts ("i2c_select_device\n"));
-
- /* Output slave address */
-
- if (ten_bit) {
- bits = 10;
- }
-
- data = (dev_addr << 1);
- /* set the read bit */
- data |= read;
- GT_REG_WRITE (I2C_DATA, data);
- /* assert the address */
- RESET_REG_BITS (I2C_CONTROL, BIT3);
-
- udelay (I2C_DELAY);
-
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
- count = 0;
- while (((status & 0xff) != 0x40) && ((status & 0xff) != 0x18)) {
- udelay (I2C_DELAY);
- if (count > 20) {
- GT_REG_WRITE (I2C_CONTROL, (0x1 << 4)); /*stop */
- return (status);
- }
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
- count++;
- }
-
- if (bits == 10) {
- printf ("10 bit I2C addressing not yet implemented\n");
- return (0xff);
- }
-
- return (0);
-}
-
-static uchar i2c_get_data (uchar * return_data, int len)
-{
-
- unsigned int data, status = 0;
- int count = 0;
-
- DP (puts ("i2c_get_data\n"));
-
- while (len) {
-
- /* Get and return the data */
-
- RESET_REG_BITS (I2C_CONTROL, (0x1 << 3));
-
- udelay (I2C_DELAY * 5);
-
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
- count++;
- while ((status & 0xff) != 0x50) {
- udelay (I2C_DELAY);
- if (count > 2) {
- GT_REG_WRITE (I2C_CONTROL, (0x1 << 4)); /*stop */
- return 0;
- }
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
- count++;
- }
- GT_REG_READ (I2C_DATA, &data);
- len--;
- *return_data = (uchar) data;
- return_data++;
- }
- RESET_REG_BITS (I2C_CONTROL, BIT2 | BIT3);
- while ((status & 0xff) != 0x58) {
- udelay (I2C_DELAY);
- if (count > 200) {
- GT_REG_WRITE (I2C_CONTROL, (0x1 << 4)); /*stop */
- return (status);
- }
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
- count++;
- }
- GT_REG_WRITE (I2C_CONTROL, (0x1 << 4)); /* stop */
-
- return (0);
-}
-
-static uchar i2c_write_data (unsigned int *data, int len)
-{
- unsigned int status;
- int count = 0;
- unsigned int temp;
- unsigned int *temp_ptr = data;
-
- DP (puts ("i2c_write_data\n"));
-
- while (len) {
- temp = (unsigned int) (*temp_ptr);
- GT_REG_WRITE (I2C_DATA, temp);
- RESET_REG_BITS (I2C_CONTROL, (0x1 << 3));
-
- udelay (I2C_DELAY);
-
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
- count++;
- while ((status & 0xff) != 0x28) {
- udelay (I2C_DELAY);
- if (count > 20) {
- GT_REG_WRITE (I2C_CONTROL, (0x1 << 4)); /*stop */
- return (status);
- }
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
- count++;
- }
- len--;
- temp_ptr++;
- }
-/* 11-14-2002 Paul Marchese */
-/* Can't have the write issuing a stop command */
-/* it's wrong to have a stop bit in read stream or write stream */
-/* since we don't know if it's really the end of the command */
-/* or whether we have just send the device address + offset */
-/* we will push issuing the stop command off to the original */
-/* calling function */
- /* set the interrupt bit in the control register */
- GT_REG_WRITE (I2C_CONTROL, (0x1 << 3));
- udelay (I2C_DELAY * 10);
- return (0);
-}
-
-/* 11-14-2002 Paul Marchese */
-/* created this function to get the i2c_write() */
-/* function working properly. */
-/* function to write bytes out on the i2c bus */
-/* this is identical to the function i2c_write_data() */
-/* except that it requires a buffer that is an */
-/* unsigned character array. You can't use */
-/* i2c_write_data() to send an array of unsigned characters */
-/* since the byte of interest ends up on the wrong end of the bus */
-/* aah, the joys of big endian versus little endian! */
-/* */
-/* returns 0 = success */
-/* anything other than zero is failure */
-static uchar i2c_write_byte (unsigned char *data, int len)
-{
- unsigned int status;
- int count = 0;
- unsigned int temp;
- unsigned char *temp_ptr = data;
-
- DP (puts ("i2c_write_byte\n"));
-
- while (len) {
- /* Set and assert the data */
- temp = *temp_ptr;
- GT_REG_WRITE (I2C_DATA, temp);
- RESET_REG_BITS (I2C_CONTROL, (0x1 << 3));
-
- udelay (I2C_DELAY);
-
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
- count++;
- while ((status & 0xff) != 0x28) {
- udelay (I2C_DELAY);
- if (count > 20) {
- GT_REG_WRITE (I2C_CONTROL, (0x1 << 4)); /*stop */
- return (status);
- }
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &status);
- count++;
- }
- len--;
- temp_ptr++;
- }
-/* Can't have the write issuing a stop command */
-/* it's wrong to have a stop bit in read stream or write stream */
-/* since we don't know if it's really the end of the command */
-/* or whether we have just send the device address + offset */
-/* we will push issuing the stop command off to the original */
-/* calling function */
-/* GT_REG_WRITE(I2C_CONTROL, (0x1 << 3) | (0x1 << 4));
- GT_REG_WRITE(I2C_CONTROL, (0x1 << 4)); */
- /* set the interrupt bit in the control register */
- GT_REG_WRITE (I2C_CONTROL, (0x1 << 3));
- udelay (I2C_DELAY * 10);
-
- return (0);
-}
-
-static uchar
-i2c_set_dev_offset (uchar dev_addr, unsigned int offset, int ten_bit,
- int alen)
-{
- uchar status;
- unsigned int table[2];
-
-/* initialize the table of address offset bytes */
-/* utilized for 2 byte address offsets */
-/* NOTE: the order is high byte first! */
- table[1] = offset & 0xff; /* low byte */
- table[0] = offset / 0x100; /* high byte */
-
- DP (puts ("i2c_set_dev_offset\n"));
-
- status = i2c_select_device (dev_addr, 0, ten_bit);
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Failed to select device setting offset: 0x%02x\n",
- status);
-#endif
- return status;
- }
-/* check the address offset length */
- if (alen == 0)
- /* no address offset */
- return (0);
- else if (alen == 1) {
- /* 1 byte address offset */
- status = i2c_write_data (&offset, 1);
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Failed to write data: 0x%02x\n", status);
-#endif
- return status;
- }
- } else if (alen == 2) {
- /* 2 bytes address offset */
- status = i2c_write_data (table, 2);
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Failed to write data: 0x%02x\n", status);
-#endif
- return status;
- }
- } else {
- /* address offset unknown or not supported */
- printf ("Address length offset %d is not supported\n", alen);
- return 1;
- }
- return 0; /* sucessful completion */
-}
-
-uchar
-i2c_read (uchar dev_addr, unsigned int offset, int alen, uchar * data,
- int len)
-{
- uchar status = 0;
- unsigned int i2cFreq = CFG_I2C_SPEED;
-
- DP (puts ("i2c_read\n"));
-
- i2c_init (i2cFreq, 0); /* set the i2c frequency */
-
- status = i2c_start ();
-
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Transaction start failed: 0x%02x\n", status);
-#endif
- return status;
- }
-
- status = i2c_set_dev_offset (dev_addr, offset, 0, alen); /* send the slave address + offset */
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Failed to set slave address & offset: 0x%02x\n",
- status);
-#endif
- return status;
- }
-
- i2c_init (i2cFreq, 0); /* set the i2c frequency again */
-
- status = i2c_start ();
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Transaction restart failed: 0x%02x\n", status);
-#endif
- return status;
- }
-
- status = i2c_select_device (dev_addr, 1, 0); /* send the slave address */
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Address not acknowledged: 0x%02x\n", status);
-#endif
- return status;
- }
-
- status = i2c_get_data (data, len);
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Data not recieved: 0x%02x\n", status);
-#endif
- return status;
- }
-
- return 0;
-}
-
-/* 11-14-2002 Paul Marchese */
-/* Function to set the I2C stop bit */
-void i2c_stop (void)
-{
- GT_REG_WRITE (I2C_CONTROL, (0x1 << 4));
-}
-
-/* 11-14-2002 Paul Marchese */
-/* I2C write function */
-/* dev_addr = device address */
-/* offset = address offset */
-/* alen = length in bytes of the address offset */
-/* data = pointer to buffer to read data into */
-/* len = # of bytes to read */
-/* */
-/* returns 0 = succesful */
-/* anything but zero is failure */
-uchar
-i2c_write (uchar dev_addr, unsigned int offset, int alen, uchar * data,
- int len)
-{
- uchar status = 0;
- unsigned int i2cFreq = CFG_I2C_SPEED;
-
- DP (puts ("i2c_write\n"));
-
- i2c_init (i2cFreq, 0); /* set the i2c frequency */
-
- status = i2c_start (); /* send a start bit */
-
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Transaction start failed: 0x%02x\n", status);
-#endif
- return status;
- }
-
- status = i2c_set_dev_offset (dev_addr, offset, 0, alen); /* send the slave address + offset */
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Failed to set slave address & offset: 0x%02x\n",
- status);
-#endif
- return status;
- }
-
-
- status = i2c_write_byte (data, len); /* write the data */
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Data not written: 0x%02x\n", status);
-#endif
- return status;
- }
- /* issue a stop bit */
- i2c_stop ();
- return 0;
-}
-
-/* 11-14-2002 Paul Marchese */
-/* function to determine if an I2C device is present */
-/* chip = device address of chip to check for */
-/* */
-/* returns 0 = sucessful, the device exists */
-/* anything other than zero is failure, no device */
-int i2c_probe (uchar chip)
-{
-
- /* We are just looking for an <ACK> back. */
- /* To see if the device/chip is there */
-
-#ifdef DEBUG_I2C
- unsigned int i2c_status;
-#endif
- uchar status = 0;
- unsigned int i2cFreq = CFG_I2C_SPEED;
-
- DP (puts ("i2c_probe\n"));
-
- i2c_init (i2cFreq, 0); /* set the i2c frequency */
-
- status = i2c_start (); /* send a start bit */
-
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Transaction start failed: 0x%02x\n", status);
-#endif
- return (int) status;
- }
-
- status = i2c_set_dev_offset (chip, 0, 0, 0); /* send the slave address + no offset */
- if (status) {
-#ifdef DEBUG_I2C
- printf ("Failed to set slave address: 0x%02x\n", status);
-#endif
- return (int) status;
- }
-#ifdef DEBUG_I2C
- GT_REG_READ (I2C_STATUS_BAUDE_RATE, &i2c_status);
- printf ("address %#x returned %#x\n", chip, i2c_status);
-#endif
- /* issue a stop bit */
- i2c_stop ();
- return 0; /* successful completion */
-}
diff --git a/board/Marvell/common/i2c.h b/board/Marvell/common/i2c.h
deleted file mode 100644
index b669ff0031..0000000000
--- a/board/Marvell/common/i2c.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * (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
- *
- * Hacked for the DB64360 board by Ingo.Assmus@keymile.com
- */
-
-#ifndef __I2C_H__
-#define __I2C_H__
-
-/* function declarations */
-uchar i2c_read(uchar, unsigned int, int, uchar*, int);
-
-#endif
diff --git a/board/Marvell/common/intel_flash.c b/board/Marvell/common/intel_flash.c
deleted file mode 100644
index d26f883ad3..0000000000
--- a/board/Marvell/common/intel_flash.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * (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
- *
- * Hacked for the marvell db64360 eval board by
- * Ingo Assmus <ingo.assmus@keymile.com>
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include "../include/mv_gen_reg.h"
-#include "../include/memory.h"
-#include "intel_flash.h"
-
-
-/*-----------------------------------------------------------------------
- * Protection Flags:
- */
-#define FLAG_PROTECT_SET 0x01
-#define FLAG_PROTECT_CLEAR 0x02
-
-static void bank_reset (flash_info_t * info, int sect)
-{
- bank_addr_t addrw, eaddrw;
-
- addrw = (bank_addr_t) info->start[sect];
- eaddrw = BANK_ADDR_NEXT_WORD (addrw);
-
- while (addrw < eaddrw) {
-#ifdef FLASH_DEBUG
- printf (" writing reset cmd to addr 0x%08lx\n",
- (unsigned long) addrw);
-#endif
- *addrw = BANK_CMD_RST;
- addrw++;
- }
-}
-
-static void bank_erase_init (flash_info_t * info, int sect)
-{
- bank_addr_t addrw, saddrw, eaddrw;
- int flag;
-
-#ifdef FLASH_DEBUG
- printf ("0x%08x BANK_CMD_PROG\n", BANK_CMD_PROG);
- printf ("0x%08x BANK_CMD_ERASE1\n", BANK_CMD_ERASE1);
- printf ("0x%08x BANK_CMD_ERASE2\n", BANK_CMD_ERASE2);
- printf ("0x%08x BANK_CMD_CLR_STAT\n", BANK_CMD_CLR_STAT);
- printf ("0x%08x BANK_CMD_RST\n", BANK_CMD_RST);
- printf ("0x%08x BANK_STAT_RDY\n", BANK_STAT_RDY);
- printf ("0x%08x BANK_STAT_ERR\n", BANK_STAT_ERR);
-#endif
-
- saddrw = (bank_addr_t) info->start[sect];
- eaddrw = BANK_ADDR_NEXT_WORD (saddrw);
-
-#ifdef FLASH_DEBUG
- printf ("erasing sector %d, start addr = 0x%08lx "
- "(bank next word addr = 0x%08lx)\n", sect,
- (unsigned long) saddrw, (unsigned long) eaddrw);
-#endif
-
- /* Disable intrs which might cause a timeout here */
- flag = disable_interrupts ();
-
- for (addrw = saddrw; addrw < eaddrw; addrw++) {
-#ifdef FLASH_DEBUG
- printf (" writing erase cmd to addr 0x%08lx\n",
- (unsigned long) addrw);
-#endif
- *addrw = BANK_CMD_ERASE1;
- *addrw = BANK_CMD_ERASE2;
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-}
-
-static int bank_erase_poll (flash_info_t * info, int sect)
-{
- bank_addr_t addrw, saddrw, eaddrw;
- int sectdone, haderr;
-
- saddrw = (bank_addr_t) info->start[sect];
- eaddrw = BANK_ADDR_NEXT_WORD (saddrw);
-
- sectdone = 1;
- haderr = 0;
-
- for (addrw = saddrw; addrw < eaddrw; addrw++) {
- bank_word_t stat = *addrw;
-
-#ifdef FLASH_DEBUG
- printf (" checking status at addr "
- "0x%08x [0x%08x]\n", (unsigned long) addrw, stat);
-#endif
- if ((stat & BANK_STAT_RDY) != BANK_STAT_RDY)
- sectdone = 0;
- else if ((stat & BANK_STAT_ERR) != 0) {
- printf (" failed on sector %d "
- "(stat = 0x%08x) at "
- "address 0x%p\n", sect, stat, addrw);
- *addrw = BANK_CMD_CLR_STAT;
- haderr = 1;
- }
- }
-
- if (haderr)
- return (-1);
- else
- return (sectdone);
-}
-
-int write_word_intel (bank_addr_t addr, bank_word_t value)
-{
- bank_word_t stat;
- ulong start;
- int flag, retval;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = BANK_CMD_PROG;
-
- *addr = value;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- retval = 0;
-
- /* data polling for D7 */
- start = get_timer (0);
- do {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- retval = 1;
- goto done;
- }
- stat = *addr;
- } while ((stat & BANK_STAT_RDY) != BANK_STAT_RDY);
-
- if ((stat & BANK_STAT_ERR) != 0) {
- printf ("flash program failed (stat = 0x%08lx) "
- "at address 0x%08lx\n", (ulong) stat, (ulong) addr);
- *addr = BANK_CMD_CLR_STAT;
- retval = 3;
- }
-
- done:
- /* reset to read mode */
- *addr = BANK_CMD_RST;
-
- return (retval);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase_intel (flash_info_t * info, int s_first, int s_last)
-{
- int prot, sect, haderr;
- ulong start, now, last;
-
-#ifdef FLASH_DEBUG
- printf ("\nflash_erase: erase %d sectors (%d to %d incl.) from\n"
- " Bank # %d: ", s_last - s_first + 1, s_first, s_last,
- (info - flash_info) + 1);
- flash_print_info (info);
-#endif
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sector%s will not be erased!\n", prot, (prot > 1 ? "s" : ""));
- }
-
- start = get_timer (0);
- last = 0;
- haderr = 0;
-
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- ulong estart;
- int sectdone;
-
- bank_erase_init (info, sect);
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- estart = get_timer (start);
-
- do {
- now = get_timer (start);
-
- if (now - estart > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout (sect %d)\n", sect);
- haderr = 1;
- break;
- }
-#ifndef FLASH_DEBUG
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
-#endif
-
- sectdone = bank_erase_poll (info, sect);
-
- if (sectdone < 0) {
- haderr = 1;
- break;
- }
-
- } while (!sectdone);
-
- if (haderr)
- break;
- }
- }
-
- if (haderr > 0)
- printf (" failed\n");
- else
- printf (" done\n");
-
- /* reset to read mode */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- bank_reset (info, sect);
- }
- }
- return haderr;
-}
diff --git a/board/Marvell/common/intel_flash.h b/board/Marvell/common/intel_flash.h
deleted file mode 100644
index 666a4cdcad..0000000000
--- a/board/Marvell/common/intel_flash.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * (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
- *
- * Hacked for the marvell db64360 eval board by
- * Ingo Assmus <ingo.assmus@keymile.com>
- */
-
-/*************** DEFINES for Intel StrataFlash FLASH chip ********************/
-
-/*
- * acceptable chips types are:
- *
- * 28F320J5, 28F640J5, 28F320J3A, 28F640J3A and 28F128J3A
- */
-
-/* register addresses, valid only following an CHIP_CMD_RD_ID command */
-#define CHIP_ADDR_REG_MAN 0x000000 /* manufacturer's id */
-#define CHIP_ADDR_REG_DEV 0x000001 /* device id */
-#define CHIP_ADDR_REG_CFGM 0x000003 /* master lock config */
-#define CHIP_ADDR_REG_CFG(b) (((b)<<16)|2) /* lock config for block b */
-
-/* Commands */
-#define CHIP_CMD_RST 0xFF /* reset flash */
-#define CHIP_CMD_RD_ID 0x90 /* read the id and lock bits */
-#define CHIP_CMD_RD_QUERY 0x98 /* read device capabilities */
-#define CHIP_CMD_RD_STAT 0x70 /* read the status register */
-#define CHIP_CMD_CLR_STAT 0x50 /* clear the staus register */
-#define CHIP_CMD_WR_BUF 0xE8 /* clear the staus register */
-#define CHIP_CMD_PROG 0x40 /* program word command */
-#define CHIP_CMD_ERASE1 0x20 /* 1st word for block erase */
-#define CHIP_CMD_ERASE2 0xD0 /* 2nd word for block erase */
-#define CHIP_CMD_ERASE_SUSP 0xB0 /* suspend block erase */
-#define CHIP_CMD_LOCK 0x60 /* 1st word for all lock cmds */
-#define CHIP_CMD_SET_LOCK_BLK 0x01 /* 2nd wrd set block lock bit */
-#define CHIP_CMD_SET_LOCK_MSTR 0xF1 /* 2nd wrd set master lck bit */
-#define CHIP_CMD_CLR_LOCK_BLK 0xD0 /* 2nd wrd clear blk lck bit */
-
-/* status register bits */
-#define CHIP_STAT_DPS 0x02 /* Device Protect Status */
-#define CHIP_STAT_VPPS 0x08 /* VPP Status */
-#define CHIP_STAT_PSLBS 0x10 /* Program+Set Lock Bit Stat */
-#define CHIP_STAT_ECLBS 0x20 /* Erase+Clr Lock Bit Stat */
-#define CHIP_STAT_ESS 0x40 /* Erase Suspend Status */
-#define CHIP_STAT_RDY 0x80 /* WSM Mach Status, 1=rdy */
-
-#define CHIP_STAT_ERR (CHIP_STAT_VPPS | CHIP_STAT_DPS | \
- CHIP_STAT_ECLBS | CHIP_STAT_PSLBS)
-
-/* ID and Lock Configuration */
-#define CHIP_RD_ID_LOCK 0x01 /* Bit 0 of each byte */
-#define CHIP_RD_ID_MAN 0x89 /* Manufacturer code = 0x89 */
-#define CHIP_RD_ID_DEV CFG_FLASH_ID
-
-/* dimensions */
-#define CHIP_WIDTH 2 /* chips are in 16 bit mode */
-#define CHIP_WSHIFT 1 /* (log2 of CHIP_WIDTH) */
-#define CHIP_NBLOCKS 128
-#define CHIP_BLKSZ (128 * 1024) /* of 128Kbytes each */
-#define CHIP_SIZE (CHIP_BLKSZ * CHIP_NBLOCKS)
-
-/********************** DEFINES for Hymod Flash ******************************/
-
-/*
- * The hymod board has 2 x 28F320J5 chips running in
- * 16 bit mode, for a 32 bit wide bank.
- */
-
-typedef unsigned short bank_word_t; /* 8/16/32/64bit unsigned int */
-typedef volatile bank_word_t *bank_addr_t;
-typedef unsigned long bank_size_t; /* want this big - >= 32 bit */
-
-#define BANK_CHIP_WIDTH 1 /* each bank is 1 chip wide */
-#define BANK_CHIP_WSHIFT 0 /* (log2 of BANK_CHIP_WIDTH) */
-
-#define BANK_WIDTH (CHIP_WIDTH * BANK_CHIP_WIDTH)
-#define BANK_WSHIFT (CHIP_WSHIFT + BANK_CHIP_WSHIFT)
-#define BANK_NBLOCKS CHIP_NBLOCKS
-#define BANK_BLKSZ (CHIP_BLKSZ * BANK_CHIP_WIDTH)
-#define BANK_SIZE (CHIP_SIZE * BANK_CHIP_WIDTH)
-
-#define MAX_BANKS 1 /* only one bank possible */
-
-/* align bank addresses and sizes to bank word boundaries */
-#define BANK_ADDR_WORD_ALIGN(a) ((bank_addr_t)((bank_size_t)(a) \
- & ~(BANK_WIDTH - 1)))
-#define BANK_SIZE_WORD_ALIGN(s) ((bank_size_t)BANK_ADDR_WORD_ALIGN( \
- (bank_size_t)(s) + (BANK_WIDTH - 1)))
-
-/* align bank addresses and sizes to bank block boundaries */
-#define BANK_ADDR_BLK_ALIGN(a) ((bank_addr_t)((bank_size_t)(a) \
- & ~(BANK_BLKSZ - 1)))
-#define BANK_SIZE_BLK_ALIGN(s) ((bank_size_t)BANK_ADDR_BLK_ALIGN( \
- (bank_size_t)(s) + (BANK_BLKSZ - 1)))
-
-/* align bank addresses and sizes to bank boundaries */
-#define BANK_ADDR_BANK_ALIGN(a) ((bank_addr_t)((bank_size_t)(a) \
- & ~(BANK_SIZE - 1)))
-#define BANK_SIZE_BANK_ALIGN(s) ((bank_size_t)BANK_ADDR_BANK_ALIGN( \
- (bank_size_t)(s) + (BANK_SIZE - 1)))
-
-/* add an offset to a bank address */
-#define BANK_ADDR_OFFSET(a, o) (bank_addr_t)((bank_size_t)(a) + \
- (bank_size_t)(o))
-
-/* get base address of bank b, given flash base address a */
-#define BANK_ADDR_BASE(a, b) BANK_ADDR_OFFSET(BANK_ADDR_BANK_ALIGN(a), \
- (bank_size_t)(b) * BANK_SIZE)
-
-/* adjust a bank address to start of next word, block or bank */
-#define BANK_ADDR_NEXT_WORD(a) BANK_ADDR_OFFSET(BANK_ADDR_WORD_ALIGN(a), \
- BANK_WIDTH)
-#define BANK_ADDR_NEXT_BLK(a) BANK_ADDR_OFFSET(BANK_ADDR_BLK_ALIGN(a), \
- BANK_BLKSZ)
-#define BANK_ADDR_NEXT_BANK(a) BANK_ADDR_OFFSET(BANK_ADDR_BANK_ALIGN(a), \
- BANK_SIZE)
-
-/* get bank address of chip register r given a bank base address a */
-#define BANK_ADDR_REG(a, r) BANK_ADDR_OFFSET(BANK_ADDR_BANK_ALIGN(a), \
- ((bank_size_t)(r) << BANK_WSHIFT))
-
-/* make a bank address for each chip register address */
-
-#define BANK_ADDR_REG_MAN(a) BANK_ADDR_REG((a), CHIP_ADDR_REG_MAN)
-#define BANK_ADDR_REG_DEV(a) BANK_ADDR_REG((a), CHIP_ADDR_REG_DEV)
-#define BANK_ADDR_REG_CFGM(a) BANK_ADDR_REG((a), CHIP_ADDR_REG_CFGM)
-#define BANK_ADDR_REG_CFG(b,a) BANK_ADDR_REG((a), CHIP_ADDR_REG_CFG(b))
-
-/*
- * replicate a chip cmd/stat/rd value into each byte position within a word
- * so that multiple chips are accessed in a single word i/o operation
- *
- * this must be as wide as the bank_word_t type, and take into account the
- * chip width and bank layout
- */
-
-#define BANK_FILL_WORD(o) ((bank_word_t)(o))
-
-/* make a bank word value for each chip cmd/stat/rd value */
-
-/* Commands */
-#define BANK_CMD_RST BANK_FILL_WORD(CHIP_CMD_RST)
-#define BANK_CMD_RD_ID BANK_FILL_WORD(CHIP_CMD_RD_ID)
-#define BANK_CMD_RD_STAT BANK_FILL_WORD(CHIP_CMD_RD_STAT)
-#define BANK_CMD_CLR_STAT BANK_FILL_WORD(CHIP_CMD_CLR_STAT)
-#define BANK_CMD_ERASE1 BANK_FILL_WORD(CHIP_CMD_ERASE1)
-#define BANK_CMD_ERASE2 BANK_FILL_WORD(CHIP_CMD_ERASE2)
-#define BANK_CMD_PROG BANK_FILL_WORD(CHIP_CMD_PROG)
-#define BANK_CMD_LOCK BANK_FILL_WORD(CHIP_CMD_LOCK)
-#define BANK_CMD_SET_LOCK_BLK BANK_FILL_WORD(CHIP_CMD_SET_LOCK_BLK)
-#define BANK_CMD_SET_LOCK_MSTR BANK_FILL_WORD(CHIP_CMD_SET_LOCK_MSTR)
-#define BANK_CMD_CLR_LOCK_BLK BANK_FILL_WORD(CHIP_CMD_CLR_LOCK_BLK)
-
-/* status register bits */
-#define BANK_STAT_DPS BANK_FILL_WORD(CHIP_STAT_DPS)
-#define BANK_STAT_PSS BANK_FILL_WORD(CHIP_STAT_PSS)
-#define BANK_STAT_VPPS BANK_FILL_WORD(CHIP_STAT_VPPS)
-#define BANK_STAT_PSLBS BANK_FILL_WORD(CHIP_STAT_PSLBS)
-#define BANK_STAT_ECLBS BANK_FILL_WORD(CHIP_STAT_ECLBS)
-#define BANK_STAT_ESS BANK_FILL_WORD(CHIP_STAT_ESS)
-#define BANK_STAT_RDY BANK_FILL_WORD(CHIP_STAT_RDY)
-
-#define BANK_STAT_ERR BANK_FILL_WORD(CHIP_STAT_ERR)
-
-/* ID and Lock Configuration */
-#define BANK_RD_ID_LOCK BANK_FILL_WORD(CHIP_RD_ID_LOCK)
-#define BANK_RD_ID_MAN BANK_FILL_WORD(CHIP_RD_ID_MAN)
-#define BANK_RD_ID_DEV BANK_FILL_WORD(CHIP_RD_ID_DEV)
diff --git a/board/Marvell/common/memory.c b/board/Marvell/common/memory.c
deleted file mode 100644
index 45353af41e..0000000000
--- a/board/Marvell/common/memory.c
+++ /dev/null
@@ -1,1390 +0,0 @@
-/*
- * Copyright - Galileo technology.
- *
- * 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
- */
-
-/*
- *
- * written or collected and sometimes rewritten by
- * Ingo Assmus <ingo.assmus@keymile.com>
- *
- */
-
-
-#include <common.h>
-#include "../include/core.h"
-#include "../include/memory.h"
-
-/*******************************************************************************
-* memoryGetBankBaseAddress - Returns the base address of a memory bank.
-* DESCRIPTION:
-* This function returns the base address of one of the SDRAM’s memory
-* banks. There are 4 memory banks and each one represents one DIMM side.
-* INPUT:
-* MEMORY_BANK bank - Selects one of the four banks as defined in Memory.h.
-* OUTPUT:
-* None.
-* RETURN:
-* 32 bit Memory bank base address.
-*******************************************************************************/
-static unsigned long memoryGetBankRegOffset (MEMORY_BANK bank)
-{
- switch (bank) {
- case BANK0:
- return SCS_0_LOW_DECODE_ADDRESS;
- case BANK1:
- return SCS_1_LOW_DECODE_ADDRESS;
- case BANK2:
- return SCS_2_LOW_DECODE_ADDRESS;
- case BANK3:
- return SCS_3_LOW_DECODE_ADDRESS;
-
- }
- return SCS_0_LOW_DECODE_ADDRESS; /* default value */
-}
-
-unsigned int memoryGetBankBaseAddress (MEMORY_BANK bank)
-{
- unsigned int base;
- unsigned int regOffset = memoryGetBankRegOffset (bank);
-
- GT_REG_READ (regOffset, &base);
- base = base << 16; /* MV6436x */
- return base;
-}
-
-/*******************************************************************************
-* memoryGetDeviceBaseAddress - Returns the base address of a device.
-* DESCRIPTION:
-* This function returns the base address of a device on the system. There
-* are 5 possible devices (0 - 4 and one boot device) as defined in
-* gtMemory.h. Each of the device parameters is maped to one of the CS
-* (Devices chip selects) base address register.
-* INPUT:
-* device - Selects one of the five devices as defined in Memory.h.
-* OUTPUT:
-* None.
-* RETURN:
-* 32 bit Device base address.
-*
-*******************************************************************************/
-static unsigned int memoryGetDeviceRegOffset (DEVICE device)
-{
- switch (device) {
- case DEVICE0:
- return CS_0_LOW_DECODE_ADDRESS;
- case DEVICE1:
- return CS_1_LOW_DECODE_ADDRESS;
- case DEVICE2:
- return CS_2_LOW_DECODE_ADDRESS;
- case DEVICE3:
- return CS_3_LOW_DECODE_ADDRESS;
- case BOOT_DEVICE:
- return BOOTCS_LOW_DECODE_ADDRESS;
- }
- return CS_0_LOW_DECODE_ADDRESS; /* default value */
-}
-
-unsigned int memoryGetDeviceBaseAddress (DEVICE device)
-{
- unsigned int regBase;
- unsigned int regOffset = memoryGetDeviceRegOffset (device);
-
- GT_REG_READ (regOffset, &regBase);
-
- regBase = regBase << 16; /* MV6436x */
- return regBase;
-}
-
-/*******************************************************************************
-* MemoryGetPciBaseAddr - Returns the base address of a PCI window.
-* DESCRIPTION:
-* This function returns the base address of a PCI window. There are 5
-* possible PCI windows (memory 0 - 3 and one for I/O) for each PCI
-* interface as defined in gtMemory.h, used by the CPU's address decoding
-* mechanism.
-* New in MV6436x
-* INPUT:
-* pciWindow - Selects one of the PCI windows as defined in Memory.h.
-* OUTPUT:
-* None.
-* RETURN:
-* 32 bit PCI window base address.
-*******************************************************************************/
-unsigned int MemoryGetPciBaseAddr (PCI_MEM_WINDOW pciWindow)
-{
- unsigned int baseAddrReg, base;
-
- switch (pciWindow) {
- case PCI_0_IO:
- baseAddrReg = PCI_0I_O_LOW_DECODE_ADDRESS; /*PCI_0_IO_BASE_ADDR; */
- break;
- case PCI_0_MEM0:
- baseAddrReg = PCI_0MEMORY0_LOW_DECODE_ADDRESS; /*PCI_0_MEMORY0_BASE_ADDR; */
- break;
- case PCI_0_MEM1:
- baseAddrReg = PCI_0MEMORY1_LOW_DECODE_ADDRESS; /*PCI_0_MEMORY1_BASE_ADDR; */
- break;
- case PCI_0_MEM2:
- baseAddrReg = PCI_0MEMORY2_LOW_DECODE_ADDRESS; /*PCI_0_MEMORY2_BASE_ADDR; */
- break;
- case PCI_0_MEM3:
- baseAddrReg = PCI_0MEMORY3_LOW_DECODE_ADDRESS; /*PCI_0_MEMORY3_BASE_ADDR; */
- break;
-#ifdef INCLUDE_PCI_1
- case PCI_1_IO:
- baseAddrReg = PCI_1I_O_LOW_DECODE_ADDRESS; /*PCI_1_IO_BASE_ADDR; */
- break;
- case PCI_1_MEM0:
- baseAddrReg = PCI_1MEMORY0_LOW_DECODE_ADDRESS; /*PCI_1_MEMORY0_BASE_ADDR; */
- break;
- case PCI_1_MEM1:
- baseAddrReg = PCI_1MEMORY1_LOW_DECODE_ADDRESS; /*PCI_1_MEMORY1_BASE_ADDR; */
- break;
- case PCI_1_MEM2:
- baseAddrReg = PCI_1MEMORY2_LOW_DECODE_ADDRESS; /*PCI_1_MEMORY2_BASE_ADDR; */
- break;
- case PCI_1_MEM3:
- baseAddrReg = PCI_1MEMORY3_LOW_DECODE_ADDRESS; /*PCI_1_MEMORY3_BASE_ADDR; */
- break;
-#endif /* INCLUDE_PCI_1 */
- default:
- return 0xffffffff;
- }
- GT_REG_READ (baseAddrReg, &base);
- return (base << 16);
-}
-
-/*******************************************************************************
-* memoryGetBankSize - Returns the size of a memory bank.
-* DESCRIPTION:
-* This function returns the size of memory bank as described in
-* 'gtMemoryGetBankBaseAddress' function.
-* INPUT:
-* bank - Selects one of the four banks as defined in Memory.h.
-* OUTPUT:
-* None.
-* RETURN:
-* 32 bit size memory bank size or 0 for a closed or non populated bank.
-*
-*******************************************************************************/
-unsigned int memoryGetBankSize (MEMORY_BANK bank)
-{
- unsigned int sizeReg, size;
- MEMORY_WINDOW window;
-
- switch (bank) {
- case BANK0:
- sizeReg = SCS_0_HIGH_DECODE_ADDRESS; /* CS_0_SIZE; */
- window = CS_0_WINDOW;
- break;
- case BANK1:
- sizeReg = SCS_1_HIGH_DECODE_ADDRESS; /* CS_1_SIZE; */
- window = CS_1_WINDOW;
- break;
- case BANK2:
- sizeReg = SCS_2_HIGH_DECODE_ADDRESS; /* CS_2_SIZE; */
- window = CS_2_WINDOW;
- break;
- case BANK3:
- sizeReg = SCS_3_HIGH_DECODE_ADDRESS; /* CS_3_SIZE; */
- window = CS_3_WINDOW;
- break;
- default:
- return 0;
- break;
- }
- /* If the window is closed, a size of 0 is returned */
- if (MemoryGetMemWindowStatus (window) != MEM_WINDOW_ENABLED)
- return 0;
- GT_REG_READ (sizeReg, &size);
- size = ((size << 16) | 0xffff) + 1;
- return size;
-}
-
-/*******************************************************************************
-* memoryGetDeviceSize - Returns the size of a device memory space.
-* DESCRIPTION:
-* This function returns the memory space size of a given device.
-* INPUT:
-* device - Selects one of the five devices as defined in Memory.h.
-* OUTPUT:
-* None.
-* RETURN:
-* 32 bit size of a device memory space.
-*******************************************************************************/
-unsigned int memoryGetDeviceSize (DEVICE device)
-{
- unsigned int sizeReg, size;
- MEMORY_WINDOW window;
-
- switch (device) {
- case DEVICE0:
- sizeReg = CS_0_HIGH_DECODE_ADDRESS; /*DEV_CS0_SIZE; */
- window = DEVCS_0_WINDOW;
- break;
- case DEVICE1:
- sizeReg = CS_1_HIGH_DECODE_ADDRESS; /*DEV_CS1_SIZE; */
- window = DEVCS_1_WINDOW;
- break;
- case DEVICE2:
- sizeReg = CS_2_HIGH_DECODE_ADDRESS; /*DEV_CS2_SIZE; */
- window = DEVCS_2_WINDOW;
- break;
- case DEVICE3:
- sizeReg = CS_3_HIGH_DECODE_ADDRESS; /*DEV_CS3_SIZE; */
- window = DEVCS_3_WINDOW;
- break;
- case BOOT_DEVICE:
- sizeReg = BOOTCS_HIGH_DECODE_ADDRESS; /*BOOTCS_SIZE; */
- window = BOOT_CS_WINDOW;
- break;
- default:
- return 0;
- break;
- }
- /* If the window is closed, a size of 0 is returned */
- if (MemoryGetMemWindowStatus (window) != MEM_WINDOW_ENABLED)
- return 0;
- GT_REG_READ (sizeReg, &size);
- size = ((size << 16) | 0xffff) + 1;
- return size;
-}
-
-/*******************************************************************************
-* MemoryGetPciWindowSize - Returns the size of a PCI memory window.
-* DESCRIPTION:
-* This function returns the size of a PCI window.
-* INPUT:
-* pciWindow - Selects one of the PCI memory windows as defined in
-* Memory.h.
-* OUTPUT:
-* None.
-* RETURN:
-* 32 bit size of a PCI memory window.
-*******************************************************************************/
-unsigned int MemoryGetPciWindowSize (PCI_MEM_WINDOW pciWindow)
-{
- unsigned int sizeReg, size;
-
- switch (pciWindow) {
- case PCI_0_IO:
- sizeReg = PCI_0I_O_HIGH_DECODE_ADDRESS; /*PCI_0_IO_SIZE; */
- break;
- case PCI_0_MEM0:
- sizeReg = PCI_0MEMORY0_HIGH_DECODE_ADDRESS; /*PCI_0_MEMORY0_SIZE; */
- break;
- case PCI_0_MEM1:
- sizeReg = PCI_0MEMORY1_HIGH_DECODE_ADDRESS; /*PCI_0_MEMORY1_SIZE; */
- break;
- case PCI_0_MEM2:
- sizeReg = PCI_0MEMORY2_HIGH_DECODE_ADDRESS; /*PCI_0_MEMORY2_SIZE; */
- break;
- case PCI_0_MEM3:
- sizeReg = PCI_0MEMORY3_HIGH_DECODE_ADDRESS; /*PCI_0_MEMORY3_SIZE; */
- break;
-#ifdef INCLUDE_PCI_1
- case PCI_1_IO:
- sizeReg = PCI_1I_O_HIGH_DECODE_ADDRESS; /*PCI_1_IO_SIZE; */
- break;
- case PCI_1_MEM0:
- sizeReg = PCI_1MEMORY0_HIGH_DECODE_ADDRESS; /*PCI_1_MEMORY0_SIZE; */
- break;
- case PCI_1_MEM1:
- sizeReg = PCI_1MEMORY1_HIGH_DECODE_ADDRESS; /*PCI_1_MEMORY1_SIZE; */
- break;
- case PCI_1_MEM2:
- sizeReg = PCI_1MEMORY2_HIGH_DECODE_ADDRESS; /*PCI_1_MEMORY2_SIZE; */
- break;
- case PCI_1_MEM3:
- sizeReg = PCI_1MEMORY3_HIGH_DECODE_ADDRESS; /*PCI_1_MEMORY3_SIZE; */
- break;
-#endif /* INCLUDE_PCI_1 */
- default:
- return 0x0;
- }
- /* If the memory window is disabled, retrun size = 0 */
- if (MemoryGetMemWindowStatus (PCI_0_IO_WINDOW << pciWindow)
- == MEM_WINDOW_DISABLED)
- return 0;
- GT_REG_READ (sizeReg, &size);
- size = ((size << 16) | 0xffff) + 1;
- return size;
-}
-
-/*******************************************************************************
-* memoryGetDeviceWidth - Returns the width of a given device.
-* DESCRIPTION:
-* The MV's device interface supports up to 32 Bit wide devices. A device
-* can have a 1, 2, 4 or 8 Bytes data width. This function returns the
-* width of a device as defined by the user or the operating system.
-* INPUT:
-* device - Selects one of the five devices as defined in Memory.h.
-* OUTPUT:
-* None.
-* RETURN:
-* Device width in Bytes (1,2,4 or 8), 0 if error had occurred.
-*******************************************************************************/
-unsigned int memoryGetDeviceWidth (DEVICE device)
-{
- unsigned int width;
- unsigned int regValue;
-
- GT_REG_READ (DEVICE_BANK0PARAMETERS + device * 4, &regValue);
- width = (regValue & (BIT20 | BIT21)) >> 20;
- return (BIT0 << width);
-}
-
-/*******************************************************************************
-* memoryMapBank - Set new base address and size for one of the memory
-* banks.
-*
-* DESCRIPTION:
-* The CPU interface address decoding map consists of 21 address windows
-* for the different devices (e.g. CS[3:0] ,PCI0 Mem 0/1/2/3...). Each
-* window can have a minimum of 1Mbytes of address space, and up to 4Gbyte
-* space. Each address window is defined by two registers - base and size.
-* The CPU address is compared with the values in the various CPU windows
-* until a match is found and the address is than targeted to that window.
-* This function sets new base and size for one the memory banks
-* (CS0 - CS3). It is the programmer`s responsibility to make sure that
-* there are no conflicts with other memory spaces. When two memory spaces
-* overlap, the MV’s behavior is not defined .If a bank needs to be closed,
-* set the ’bankLength’ parameter size to 0x0.
-*
-* INPUT:
-* bank - One of the memory banks (CS0-CS3) as defined in gtMemory.h.
-* bankBase - The memory bank base address.
-* bankLength - The memory bank size. This function will decrement the
-* 'bankLength' parameter by one and then check if the size is
-* valid. A valid size must be programed from LSB to MSB as
-* sequence of ‘1’s followed by sequence of ‘0’s.
-* To close a memory window simply set the size to 0.
-* NOTE!!!
-* The size must be in 64Kbyte granularity.
-* The base address must be aligned to the size.
-* OUTPUT:
-* None.
-* RETURN:
-* False for invalid size, true otherwise.
-*
-* CAUTION: PCI_functions must be implemented later To_do !!!!!!!!!!!!!!!!!
-*
-*******************************************************************************/
-
-bool memoryMapBank (MEMORY_BANK bank, unsigned int bankBase,
- unsigned int bankLength)
-{
- unsigned int newBase, newSize, baseReg, sizeReg, temp, rShift;
-
-/* PCI_INTERNAL_BAR pciBAR; */
-
- switch (bank) {
- case BANK0:
- baseReg = SCS_0_LOW_DECODE_ADDRESS; /*CS_0_BASE_ADDR; */
- sizeReg = SCS_0_HIGH_DECODE_ADDRESS; /*CS_0_SIZE; */
-/* pciBAR = PCI_CS0_BAR; */
- break;
- case BANK1:
- baseReg = SCS_1_LOW_DECODE_ADDRESS; /*CS_1_BASE_ADDR; */
- sizeReg = SCS_1_HIGH_DECODE_ADDRESS; /*CS_1_SIZE; */
- /* pciBAR = SCS_0_HIGH_DECODE_ADDRESS; */ /*PCI_CS1_BAR; */
- break;
- case BANK2:
- baseReg = SCS_2_LOW_DECODE_ADDRESS; /*CS_2_BASE_ADDR; */
- sizeReg = SCS_2_HIGH_DECODE_ADDRESS; /*CS_2_SIZE; */
-/* pciBAR = PCI_CS2_BAR;*/
- break;
- case BANK3:
- baseReg = SCS_3_LOW_DECODE_ADDRESS; /*CS_3_BASE_ADDR; */
- sizeReg = SCS_3_HIGH_DECODE_ADDRESS; /*CS_3_SIZE; */
-/* pciBAR = PCI_CS3_BAR; */
- break;
- default:
- return false;
- }
- /* If the size is 0, the window will be disabled */
- if (bankLength == 0) {
- MemoryDisableWindow (CS_0_WINDOW << bank);
- /* Disable the BAR from the PCI slave side */
-/* gtPci0DisableInternalBAR(pciBAR); */
-/* gtPci1DisableInternalBAR(pciBAR); */
- return true;
- }
- /* The base address must be aligned to the size */
- if ((bankBase % bankLength) != 0) {
- return false;
- }
- if (bankLength >= MINIMUM_MEM_BANK_SIZE) {
- newBase = bankBase >> 16;
- newSize = bankLength >> 16;
- /* Checking that the size is a sequence of '1' followed by a
- sequence of '0' starting from LSB to MSB. */
- temp = newSize - 1;
- for (rShift = 0; rShift < 16; rShift++) {
- temp = temp >> rShift;
- if ((temp & 0x1) == 0) { /* Either we got to the last '1' */
- /* or the size is not valid */
- if (temp > 0x0)
- return false;
- else
- break;
- }
- }
-#ifdef DEBUG
- {
- unsigned int oldBase, oldSize;
-
- GT_REG_READ (baseReg, &oldBase);
- GT_REG_READ (sizeReg + 8, &oldSize);
-
- printf ("b%d Base:%x Size:%x -> Base:%x Size:%x\n",
- bank, oldBase, oldSize, newBase, newSize);
- }
-#endif
- /* writing the new values */
- GT_REG_WRITE (baseReg, newBase);
- GT_REG_WRITE (sizeReg, newSize - 1);
- /* Enable back the window */
- MemoryEnableWindow (CS_0_WINDOW << bank);
- /* Enable the BAR from the PCI slave side */
-/* gtPci0EnableInternalBAR(pciBAR); */
-/* gtPci1EnableInternalBAR(pciBAR); */
- return true;
- }
- return false;
-}
-
-
-/*******************************************************************************
-* memoryMapDeviceSpace - Set new base address and size for one of the device
-* windows.
-*
-* DESCRIPTION:
-* The CPU interface address decoding map consists of 21 address windows
-* for the different devices (e.g. CS[3:0] ,PCI0 Mem 0/1/2/3...). Each
-* window can have a minimum of 1Mbytes of address space, and up to 4Gbyte
-* space. Each address window is defined by two registers - base and size.
-* The CPU address is compared with the values in the various CPU windows
-* until a match is found and the address is than targeted to that window.
-* This function sets new base and size for one the device windows
-* (DEV_CS0 - DEV_CS3). It is the programmer`s responsibility to make sure
-* that there are no conflicts with other memory spaces. When two memory
-* spaces overlap, the MV’s behavior is not defined .If a device window
-* needs to be closed, set the 'deviceLength' parameter size to 0x0.
-*
-* INPUT:
-* device - One of the device windows (DEV_CS0-DEV_CS3) as
-* defined in gtMemory.h.
-* deviceBase - The device window base address.
-* deviceLength - The device window size. This function will decrement
-* the 'deviceLength' parameter by one and then
-* check if the size is valid. A valid size must be
-* programed from LSB to MSB as sequence of ‘1’s
-* followed by sequence of ‘0’s.
-* To close a memory window simply set the size to 0.
-*
-* NOTE!!!
-* The size must be in 64Kbyte granularity.
-* The base address must be aligned to the size.
-*
-* OUTPUT:
-* None.
-*
-* RETURN:
-* False for invalid size, true otherwise.
-*
-* CAUTION: PCI_functions must be implemented later To_do !!!!!!!!!!!!!!!!!
-*
-*******************************************************************************/
-
-bool memoryMapDeviceSpace (DEVICE device, unsigned int deviceBase,
- unsigned int deviceLength)
-{
- unsigned int newBase, newSize, baseReg, sizeReg, temp, rShift;
-
-/* PCI_INTERNAL_BAR pciBAR;*/
-
- switch (device) {
- case DEVICE0:
- baseReg = CS_0_LOW_DECODE_ADDRESS; /*DEV_CS0_BASE_ADDR; */
- sizeReg = CS_0_HIGH_DECODE_ADDRESS; /*DEV_CS0_SIZE; */
-/* pciBAR = PCI_DEV_CS0_BAR; */
- break;
- case DEVICE1:
- baseReg = CS_1_LOW_DECODE_ADDRESS; /*DEV_CS1_BASE_ADDR; */
- sizeReg = CS_1_HIGH_DECODE_ADDRESS; /*DEV_CS1_SIZE; */
-/* pciBAR = PCI_DEV_CS1_BAR; */
- break;
- case DEVICE2:
- baseReg = CS_2_LOW_DECODE_ADDRESS; /*DEV_CS2_BASE_ADDR; */
- sizeReg = CS_2_HIGH_DECODE_ADDRESS; /*DEV_CS2_SIZE; */
-/* pciBAR = PCI_DEV_CS2_BAR; */
- break;
- case DEVICE3:
- baseReg = CS_3_LOW_DECODE_ADDRESS; /*DEV_CS3_BASE_ADDR; */
- sizeReg = CS_3_HIGH_DECODE_ADDRESS; /*DEV_CS3_SIZE; */
-/* pciBAR = PCI_DEV_CS3_BAR; */
- break;
- case BOOT_DEVICE:
- baseReg = BOOTCS_LOW_DECODE_ADDRESS; /*BOOTCS_BASE_ADDR; */
- sizeReg = BOOTCS_HIGH_DECODE_ADDRESS; /*BOOTCS_SIZE; */
-/* pciBAR = PCI_BOOT_CS_BAR; */
- break;
- default:
- return false;
- }
- if (deviceLength == 0) {
- MemoryDisableWindow (DEVCS_0_WINDOW << device);
- /* Disable the BAR from the PCI slave side */
-/* gtPci0DisableInternalBAR(pciBAR); */
-/* gtPci1DisableInternalBAR(pciBAR); */
- return true;
- }
- /* The base address must be aligned to the size */
- if ((deviceBase % deviceLength) != 0) {
- return false;
- }
- if (deviceLength >= MINIMUM_DEVICE_WINDOW_SIZE) {
- newBase = deviceBase >> 16;
- newSize = deviceLength >> 16;
- /* Checking that the size is a sequence of '1' followed by a
- sequence of '0' starting from LSB to MSB. */
- temp = newSize - 1;
- for (rShift = 0; rShift < 16; rShift++) {
- temp = temp >> rShift;
- if ((temp & 0x1) == 0) { /* Either we got to the last '1' */
- /* or the size is not valid */
- if (temp > 0x0)
- return false;
- else
- break;
- }
- }
- /* writing the new values */
- GT_REG_WRITE (baseReg, newBase);
- GT_REG_WRITE (sizeReg, newSize - 1);
- MemoryEnableWindow (DEVCS_0_WINDOW << device);
- /* Enable the BAR from the PCI slave side */
-/* gtPci0EnableInternalBAR(pciBAR); */
-/* gtPci1EnableInternalBAR(pciBAR); */
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-* MemorySetPciWindow - Set new base address and size for one of the PCI
-* windows.
-*
-* DESCRIPTION:
-* The CPU interface address decoding map consists of 21 address windows
-* for the different devices (e.g. CS[3:0] ,PCI0 Mem 0/1/2/3...). Each
-* window can have a minimum of 1Mbytes of address space, and up to 4Gbyte
-* space. Each address window is defined by two registers - base and size.
-* The CPU address is compared with the values in the various CPU windows
-* until a match is found and the address is than targeted to that window.
-* This function sets new base and size for one the PCI windows
-* (PCI memory0/1/2..). It is the programmer`s responsibility to make sure
-* that there are no conflicts with other memory spaces. When two memory
-* spaces overlap, the MV’s behavior is not defined .If a PCI window
-* needs to be closed, set the 'pciWindowSize' parameter size to 0x0.
-*
-* INPUT:
-* pciWindow - One of the PCI windows as defined in gtMemory.h.
-* pciWindowBase - The PCI window base address.
-* pciWindowSize - The PCI window size. This function will decrement the
-* 'pciWindowSize' parameter by one and then check if the
-* size is valid. A valid size must be programed from LSB
-* to MSB as sequence of ‘1’s followed by sequence of ‘0’s.
-* To close a memory window simply set the size to 0.
-*
-* NOTE!!!
-* The size must be in 64Kbyte granularity.
-* The base address must be aligned to the size.
-*
-* OUTPUT:
-* None.
-*
-* RETURN:
-* False for invalid size, true otherwise.
-*
-*******************************************************************************/
-bool memorySetPciWindow (PCI_MEM_WINDOW pciWindow, unsigned int pciWindowBase,
- unsigned int pciWindowSize)
-{
- unsigned int currentLow, baseAddrReg, sizeReg, temp, rShift;
-
- switch (pciWindow) {
- case PCI_0_IO:
- baseAddrReg = PCI_1I_O_LOW_DECODE_ADDRESS; /*PCI_0_IO_BASE_ADDR; */
- sizeReg = PCI_0I_O_HIGH_DECODE_ADDRESS; /*PCI_0_IO_SIZE; */
- break;
- case PCI_0_MEM0:
- baseAddrReg = PCI_0MEMORY0_LOW_DECODE_ADDRESS; /*PCI_0_MEMORY0_BASE_ADDR; */
- sizeReg = PCI_0MEMORY0_HIGH_DECODE_ADDRESS; /*PCI_0_MEMORY0_SIZE; */
- break;
- case PCI_0_MEM1:
- baseAddrReg = PCI_0MEMORY1_LOW_DECODE_ADDRESS; /*PCI_0_MEMORY1_BASE_ADDR; */
- sizeReg = PCI_0MEMORY1_HIGH_DECODE_ADDRESS; /*PCI_0_MEMORY1_SIZE; */
- break;
- case PCI_0_MEM2:
- baseAddrReg = PCI_0MEMORY2_LOW_DECODE_ADDRESS; /*PCI_0_MEMORY2_BASE_ADDR; */
- sizeReg = PCI_0MEMORY2_HIGH_DECODE_ADDRESS; /*PCI_0_MEMORY2_SIZE; */
- break;
- case PCI_0_MEM3:
- baseAddrReg = PCI_0MEMORY3_LOW_DECODE_ADDRESS; /*PCI_0_MEMORY3_BASE_ADDR; */
- sizeReg = PCI_0MEMORY3_HIGH_DECODE_ADDRESS; /*PCI_0_MEMORY3_SIZE; */
- break;
-#ifdef INCLUDE_PCI_1
- case PCI_1_IO:
- baseAddrReg = PCI_1I_O_LOW_DECODE_ADDRESS; /*PCI_1_IO_BASE_ADDR; */
- sizeReg = PCI_1I_O_HIGH_DECODE_ADDRESS; /*PCI_1_IO_SIZE; */
- break;
- case PCI_1_MEM0:
- baseAddrReg = PCI_1MEMORY0_LOW_DECODE_ADDRESS; /*PCI_1_MEMORY0_BASE_ADDR; */
- sizeReg = PCI_1MEMORY0_HIGH_DECODE_ADDRESS; /*PCI_1_MEMORY0_SIZE; */
- break;
- case PCI_1_MEM1:
- baseAddrReg = PCI_1MEMORY1_LOW_DECODE_ADDRESS; /*PCI_1_MEMORY1_BASE_ADDR; */
- sizeReg = PCI_1MEMORY1_HIGH_DECODE_ADDRESS; /*PCI_1_MEMORY1_SIZE; */
- break;
- case PCI_1_MEM2:
- baseAddrReg = PCI_1MEMORY2_LOW_DECODE_ADDRESS; /*PCI_1_MEMORY2_BASE_ADDR; */
- sizeReg = PCI_1MEMORY2_HIGH_DECODE_ADDRESS; /*PCI_1_MEMORY2_SIZE; */
- break;
- case PCI_1_MEM3:
- baseAddrReg = PCI_1MEMORY3_LOW_DECODE_ADDRESS; /*PCI_1_MEMORY3_BASE_ADDR; */
- sizeReg = PCI_1MEMORY3_HIGH_DECODE_ADDRESS; /*PCI_1_MEMORY3_SIZE; */
- break;
-#endif /* INCLUDE_PCI_1 */
- default:
- return false;
- }
- if (pciWindowSize == 0) {
- MemoryDisableWindow (PCI_0_IO_WINDOW << pciWindow);
- return true;
- }
- /* The base address must be aligned to the size */
- if ((pciWindowBase % pciWindowSize) != 0) {
- return false;
- }
- if (pciWindowSize >= MINIMUM_PCI_WINDOW_SIZE) {
- pciWindowBase >>= 16;
- pciWindowSize >>= 16;
- /* Checking that the size is a sequence of '1' followed by a
- sequence of '0' starting from LSB to MSB. */
- temp = pciWindowSize - 1;
- for (rShift = 0; rShift < 16; rShift++) {
- temp = temp >> rShift;
- if ((temp & 0x1) == 0) { /* Either we got to the last '1' */
- /* or the size is not valid */
- if (temp > 0x0)
- return false;
- else
- break;
- }
- }
- GT_REG_WRITE (sizeReg, pciWindowSize - 1);
- GT_REG_READ (baseAddrReg, &currentLow);
- pciWindowBase =
- (pciWindowBase & 0xfffff) | (currentLow & 0xfff00000);
- GT_REG_WRITE (baseAddrReg, pciWindowBase);
- MemoryEnableWindow (PCI_0_IO_WINDOW << pciWindow);
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-* memoryMapInternalRegistersSpace - Sets new base address for the internal
-* registers memory space.
-*
-* DESCRIPTION:
-* This function set new base address for the internal register’s memory
-* space (the size is fixed and cannot be modified). The function does not
-* handle overlapping with other memory spaces, it is the programer's
-* responsibility to ensure that overlapping does not occur.
-* When two memory spaces overlap, the MV’s behavior is not defined.
-*
-* INPUT:
-* internalRegBase - new base address for the internal register’s memory
-* space.
-*
-* OUTPUT:
-* None.
-*
-* RETURN:
-* true on success, false on failure
-*
-*******************************************************************************/
-/********************************************************************
-* memoryMapInternalRegistersSpace - Sets new base address for the internals
-* registers.
-*
-* INPUTS: unsigned int internalRegBase - The new base address.
-* RETURNS: true on success, false on failure
-*********************************************************************/
-bool memoryMapInternalRegistersSpace (unsigned int internalRegBase)
-{
- unsigned int currentValue;
- unsigned int internalValue = internalRegBase;
-
- internalRegBase = (internalRegBase >> 16);
- GT_REG_READ (INTERNAL_SPACE_DECODE, &currentValue);
- internalRegBase = (currentValue & 0xff000000) | internalRegBase;
- GT_REG_WRITE (INTERNAL_SPACE_DECODE, internalRegBase);
- /* initializing also the global variable 'internalRegBaseAddr' */
-/* gtInternalRegBaseAddr = internalValue; */
- INTERNAL_REG_BASE_ADDR = internalValue;
- return true;
-}
-
-/*******************************************************************************
-* memoryGetInternalRegistersSpace - Returns the internal registers Base
-* address.
-*
-* DESCRIPTION:
-* This function returns the base address of the internal register’s
-* memory space .
-*
-* INPUT:
-* None.
-*
-* OUTPUT:
-* None.
-*
-* RETURN:
-* 32 bit base address of the internal register’s memory space.
-*
-*******************************************************************************/
-unsigned int memoryGetInternalRegistersSpace (void)
-{
- unsigned int currentValue = 0;
-
- GT_REG_READ (INTERNAL_SPACE_DECODE, &currentValue);
- return ((currentValue & 0x000fffff) << 16);
-}
-
-/*******************************************************************************
-* gtMemoryGetInternalSramBaseAddr - Returns the integrated SRAM base address.
-*
-* DESCRIPTION:
-* The Atlantis incorporate integrated 2Mbit SRAM for general use. This
-* funcnion return the SRAM's base address.
-* INPUT:
-* None.
-* OUTPUT:
-* None.
-* RETURN:
-* 32 bit SRAM's base address.
-*
-*******************************************************************************/
-unsigned int memoryGetInternalSramBaseAddr (void)
-{
- return ((GTREGREAD (INTEGRATED_SRAM_BASE_ADDR) & 0xfffff) << 16);
-}
-
-/*******************************************************************************
-* gtMemorySetInternalSramBaseAddr - Set the integrated SRAM base address.
-*
-* DESCRIPTION:
-* The Atlantis incorporate integrated 2Mbit SRAM for general use. This
-* function sets a new base address to the SRAM .
-* INPUT:
-* sramBaseAddress - The SRAM's base address.
-* OUTPUT:
-* None.
-* RETURN:
-* None.
-*
-*******************************************************************************/
-void gtMemorySetInternalSramBaseAddr (unsigned int sramBaseAddress)
-{
- GT_REG_WRITE (INTEGRATED_SRAM_BASE_ADDR, sramBaseAddress >> 16);
-}
-
-/*******************************************************************************
-* memorySetProtectRegion - Set protection mode for one of the 8 regions.
-*
-* DESCRIPTION:
-* The CPU interface supports configurable access protection. This includes
-* up to eight address ranges defined to a different protection type :
-* whether the address range is cacheable or not, whether it is writable or
-* not , and whether it is accessible or not. A Low and High registers
-* define each window while the minimum address range of each window is
-* 1Mbyte. An address driven by the CPU, in addition to the address
-* decoding and remapping process, is compared against the eight Access
-* Protection Low/High registers , if an address matches one of the windows
-* , the MV device checks the transaction type against the protection bits
-* defined in CPU Access Protection register, to determine if the access is
-* allowed. This function set a protection mode to one of the 8 possible
-* regions.
-* NOTE:
-* The CPU address windows are restricted to a size of 2 power n and the
-* start address must be aligned to the window size. For example, if using
-* a 16 MB window, the start address bits [23:0] must be 0.The MV's
-* internal registers space is not protected, even if the access protection
-* windows contain this space.
-*
-* INPUT:
-* region - selects which region to be configured. The values defined in
-* gtMemory.h:
-*
-* - MEM_REGION0
-* - MEM_REGION1
-* - etc.
-*
-* memAccess - Allows or forbids access (read or write ) to the region. The
-* values defined in gtMemory.h:
-*
-* - MEM_ACCESS_ALLOWED
-* - MEM_ACCESS_FORBIDEN
-*
-* memWrite - CPU write protection to the region. The values defined in
-* gtMemory.h:
-*
-* - MEM_WRITE_ALLOWED
-* - MEM_WRITE_FORBIDEN
-*
-* cacheProtection - Defines whether caching the region is allowed or not.
-* The values defined in gtMemory.h:
-*
-* - MEM_CACHE_ALLOWED
-* - MEM_CACHE_FORBIDEN
-*
-* baseAddress - the region's base Address.
-* regionSize - The region's size. This function will decrement the
-* 'regionSize' parameter by one and then check if the size
-* is valid. A valid size must be programed from LSB to MSB
-* as sequence of ‘1’s followed by sequence of ‘0’s.
-* To close a memory window simply set the size to 0.
-*
-* NOTE!!!
-* The size must be in 64Kbyte granularity.
-* The base address must be aligned to the size.
-*
-* OUTPUT:
-* None.
-*
-* RETURN:
-* False for invalid size, true otherwise.
-*
-*******************************************************************************/
-bool memorySetProtectRegion (MEMORY_PROTECT_WINDOW window,
- MEMORY_ACCESS memAccess,
- MEMORY_ACCESS_WRITE memWrite,
- MEMORY_CACHE_PROTECT cacheProtection,
- unsigned int baseAddress, unsigned int size)
-{
- unsigned int dataForReg, temp, rShift;
-
- if (size == 0) {
- GT_REG_WRITE ((CPU_PROTECT_WINDOW_0_SIZE + 0x10 * window),
- 0x0);
- return true;
- }
- /* The base address must be aligned to the size. */
- if (baseAddress % size != 0) {
- return false;
- }
- if (size >= MINIMUM_ACCESS_WIN_SIZE) {
- baseAddress = ((baseAddress >> 16) & 0xfffff);
- dataForReg = baseAddress | ((memAccess << 20) & BIT20) |
- ((memWrite << 21) & BIT21) | ((cacheProtection << 22)
- & BIT22) | BIT31;
- GT_REG_WRITE (CPU_PROTECT_WINDOW_0_BASE_ADDR + 0x10 * window,
- dataForReg);
- size >>= 16;
- /* Checking that the size is a sequence of '1' followed by a
- sequence of '0' starting from LSB to MSB. */
- temp = size - 1;
- for (rShift = 0; rShift < 16; rShift++) {
- temp = temp >> rShift;
- if ((temp & 0x1) == 0) { /* Either we got to the last '1' */
- /* or the size is not valid */
- if (temp > 0x0)
- return false;
- else
- break;
- }
- }
- GT_REG_WRITE ((CPU_PROTECT_WINDOW_0_SIZE + 0x10 * window),
- size - 1);
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-* gtMemoryDisableProtectRegion - Disable a protected window.
-*
-* DESCRIPTION:
-* This function disable a protected window set by
-* 'gtMemorySetProtectRegion' function.
-*
-* INPUT:
-* window - one of the 4 windows ( defined in gtMemory.h ).
-*
-* OUTPUT:
-* None.
-*
-* RETURN:
-* None.
-*
-*******************************************************************************/
-void memoryDisableProtectRegion (MEMORY_PROTECT_WINDOW window)
-{
- RESET_REG_BITS (((CPU_PROTECT_WINDOW_0_BASE_ADDR) + (0x10 * window)),
- BIT31);
-}
-
-/*******************************************************************************
-* memorySetPciRemapValue - Set a remap value to a PCI memory space target.
-*
-* DESCRIPTION:
-* In addition to the address decoding mechanism, the CPU has an address
-* remapping mechanism to be used by every PCI decoding window. Each PCI
-* window can be remaped to a desired address target according to the remap
-* value within the remap register. The address remapping is useful when a
-* CPU address range must be reallocated to a different location on the
-* PCI bus. Also, it enables CPU access to a PCI agent located above the
-* 4Gbyte space. On system boot, each of the PCI memory spaces is maped to
-* a defualt value (see CPU interface section in the MV spec for the
-* default values). The remap mechanism does not always produce the desired
-* address on the PCI bus because of the remap mechanism way of working
-* (to fully understand why, please see the 'Address Remapping' section in
-* the MV's spec). Therefor, this function sets a desired remap value to
-* one of the PCI memory windows and return the effective address that
-* should be used when exiting the PCI memory window. You should ALWAYS use
-* the returned value by this function when remapping a PCI window and
-* exiting it. If for example the base address of PCI0 memory 0 is
-* 0x90000000, the size is 0x03ffffff and the remap value is 0x11000000,
-* the function will return the value of 0x91000000 that MUST
-* be used to exit this memory window in order to achive the deisred
-* remapping.
-*
-* INPUT:
-* memoryWindow - One of the PCI memory windows as defined in Memory.h
-* remapValueLow - The low remap value.
-* remapValueHigh - The high remap value.
-* OUTPUT:
-* None.
-*
-* RETURN:
-* The effective base address to exit the PCI, or 0xffffffff if one of the
-* parameters is erroneous or the effective base address is higher the top
-* decode value.
-*
-*******************************************************************************/
-unsigned int memorySetPciRemapValue (PCI_MEM_WINDOW memoryWindow,
- unsigned int remapValueHigh,
- unsigned int remapValueLow)
-{
- unsigned int pciMemWindowBaseAddrReg = 0, baseAddrValue = 0;
- unsigned int pciMemWindowSizeReg = 0, windowSizeValue = 0;
- unsigned int effectiveBaseAddress, remapRegLow, remapRegHigh;
-
- /* Initializing the base and size variables of the PCI
- memory windows */
- switch (memoryWindow) {
- case PCI_0_IO:
- pciMemWindowBaseAddrReg = PCI_0_IO_BASE_ADDR;
- pciMemWindowSizeReg = PCI_0_IO_SIZE;
- remapRegLow = PCI_0_IO_ADDR_REMAP;
- remapRegHigh = PCI_0_IO_ADDR_REMAP;
- break;
- case PCI_0_MEM0:
- pciMemWindowBaseAddrReg = PCI_0_MEMORY0_BASE_ADDR;
- pciMemWindowSizeReg = PCI_0_MEMORY0_SIZE;
- remapRegLow = PCI_0_MEMORY0_LOW_ADDR_REMAP;
- remapRegHigh = PCI_0_MEMORY0_HIGH_ADDR_REMAP;
- break;
- case PCI_0_MEM1:
- pciMemWindowBaseAddrReg = PCI_0_MEMORY1_BASE_ADDR;
- pciMemWindowSizeReg = PCI_0_MEMORY1_SIZE;
- remapRegLow = PCI_0_MEMORY1_LOW_ADDR_REMAP;
- remapRegHigh = PCI_0_MEMORY1_HIGH_ADDR_REMAP;
- break;
- case PCI_0_MEM2:
- pciMemWindowBaseAddrReg = PCI_0_MEMORY2_BASE_ADDR;
- pciMemWindowSizeReg = PCI_0_MEMORY2_SIZE;
- remapRegLow = PCI_0_MEMORY2_LOW_ADDR_REMAP;
- remapRegHigh = PCI_0_MEMORY2_HIGH_ADDR_REMAP;
- break;
- case PCI_0_MEM3:
- pciMemWindowBaseAddrReg = PCI_0_MEMORY3_BASE_ADDR;
- pciMemWindowSizeReg = PCI_0_MEMORY3_SIZE;
- remapRegLow = PCI_0_MEMORY3_LOW_ADDR_REMAP;
- remapRegHigh = PCI_0_MEMORY3_HIGH_ADDR_REMAP;
- break;
-#ifdef INCLUDE_PCI_1
- case PCI_1_IO:
- pciMemWindowBaseAddrReg = PCI_1_IO_BASE_ADDR;
- pciMemWindowSizeReg = PCI_1_IO_SIZE;
- remapRegLow = PCI_1_IO_ADDR_REMAP;
- remapRegHigh = PCI_1_IO_ADDR_REMAP;
- break;
- case PCI_1_MEM0:
- pciMemWindowBaseAddrReg = PCI_1_MEMORY0_BASE_ADDR;
- pciMemWindowSizeReg = PCI_1_MEMORY0_SIZE;
- remapRegLow = PCI_1_MEMORY0_LOW_ADDR_REMAP;
- remapRegHigh = PCI_1_MEMORY0_HIGH_ADDR_REMAP;
- break;
- case PCI_1_MEM1:
- pciMemWindowBaseAddrReg = PCI_1_MEMORY1_BASE_ADDR;
- pciMemWindowSizeReg = PCI_1_MEMORY1_SIZE;
- remapRegLow = PCI_1_MEMORY1_LOW_ADDR_REMAP;
- remapRegHigh = PCI_1_MEMORY1_HIGH_ADDR_REMAP;
- break;
- case PCI_1_MEM2:
- pciMemWindowBaseAddrReg = PCI_1_MEMORY1_BASE_ADDR;
- pciMemWindowSizeReg = PCI_1_MEMORY1_SIZE;
- remapRegLow = PCI_1_MEMORY1_LOW_ADDR_REMAP;
- remapRegHigh = PCI_1_MEMORY1_HIGH_ADDR_REMAP;
- break;
- case PCI_1_MEM3:
- pciMemWindowBaseAddrReg = PCI_1_MEMORY3_BASE_ADDR;
- pciMemWindowSizeReg = PCI_1_MEMORY3_SIZE;
- remapRegLow = PCI_1_MEMORY3_LOW_ADDR_REMAP;
- remapRegHigh = PCI_1_MEMORY3_HIGH_ADDR_REMAP;
- break;
-#endif /* INCLUDE_PCI_1 */
- default:
- /* Retrun an invalid effective base address */
- return 0xffffffff;
- }
- /* Writing the remap value to the remap regisers */
- GT_REG_WRITE (remapRegHigh, remapValueHigh);
- GT_REG_WRITE (remapRegLow, remapValueLow >> 16);
- /* Reading the values from the base address and size registers */
- baseAddrValue = GTREGREAD (pciMemWindowBaseAddrReg) & 0xfffff;
- windowSizeValue = GTREGREAD (pciMemWindowSizeReg) & 0xffff;
- /* Start calculating the effective Base Address */
- effectiveBaseAddress = baseAddrValue << 16;
- /* The effective base address will be combined from the chopped (if any)
- remap value (according to the size value and remap mechanism) and the
- window's base address */
- effectiveBaseAddress |=
- (((windowSizeValue << 16) | 0xffff) & remapValueLow);
- /* If the effectiveBaseAddress exceed the window boundaries return an
- invalid value. */
- if (effectiveBaseAddress >
- ((baseAddrValue << 16) + ((windowSizeValue << 16) | 0xffff)))
- return 0xffffffff;
- return effectiveBaseAddress;
-}
-
-/********************************************************************
-* memorySetRegionSnoopMode - This function modifys one of the 4 regions which
-* supports Cache Coherency.
-*
-*
-* Inputs: SNOOP_REGION region - One of the four regions.
-* SNOOP_TYPE snoopType - There is four optional Types:
-* 1. No Snoop.
-* 2. Snoop to WT region.
-* 3. Snoop to WB region.
-* 4. Snoop & Invalidate to WB region.
-* unsigned int baseAddress - Base Address of this region.
-* unsigned int topAddress - Top Address of this region.
-* Returns: false if one of the parameters is wrong and true else
-*********************************************************************/
-/* evb6260 code */
-#if 0
-bool memorySetRegionSnoopMode(MEMORY_SNOOP_REGION region,
- MEMORY_SNOOP_TYPE snoopType,
- unsigned int baseAddress,
- unsigned int regionLength)
-{
- unsigned int snoopXbaseAddress;
- unsigned int snoopXtopAddress;
- unsigned int data;
- unsigned int snoopHigh = baseAddress + regionLength;
-
- if( (region > MEM_SNOOP_REGION3) || (snoopType > MEM_SNOOP_WB) )
- return false;
- snoopXbaseAddress = SNOOP_BASE_ADDRESS_0 + 0x10 * region;
- snoopXtopAddress = SNOOP_TOP_ADDRESS_0 + 0x10 * region;
- if(regionLength == 0) /* closing the region */
- {
- GT_REG_WRITE(snoopXbaseAddress,0x0000ffff);
- GT_REG_WRITE(snoopXtopAddress,0);
- return true;
- }
- baseAddress = baseAddress & 0xffff0000;
- data = (baseAddress >> 16) | snoopType << 16;
- GT_REG_WRITE(snoopXbaseAddress,data);
- snoopHigh = (snoopHigh & 0xfff00000) >> 20;
- GT_REG_WRITE(snoopXtopAddress,snoopHigh - 1);
- return true;
-}
-#endif
-
-/********************************************************************
-* memoryRemapAddress - This fubction used for address remapping.
-*
-*
-* Inputs: regOffset: remap register
-* remapValue :
-* Returns: false if one of the parameters is erroneous,true otherwise.
-*
-* Not needed function To_do !!!!
-*********************************************************************/
-bool memoryRemapAddress (unsigned int remapReg, unsigned int remapValue)
-{
- unsigned int valueForReg;
-
- valueForReg = (remapValue & 0xfff00000) >> 20;
- GT_REG_WRITE (remapReg, valueForReg);
- return true;
-}
-
-/*******************************************************************************
-* memoryGetDeviceParam - Extract the device parameters from the device bank
-* parameters register.
-*
-* DESCRIPTION:
-* To allow interfacing with very slow devices and fast synchronous SRAMs,
-* each device can be programed to different timing parameters. Each bank
-* has its own parameters register. Bank width can be programmed to 8, 16,
-* or 32-bits. Bank timing parameters can be programmed to support
-* different device types (e.g. Sync Burst SRAM, Flash , ROM, I/O
-* Controllers). The MV allows you to set timing parameters and width for
-* each device through parameters register .
-* This function extracts the parameters described from the Device Bank
-* parameters register and fills the given 'deviceParam' (defined in
-* gtMemory.h) structure with the read data.
-*
-* INPUT:
-* deviceParam - pointer to a structure DEVICE_PARAM (defined in
-* Memory.h).For details about each structure field please
-* see the device timing parameter section in the MV
-* datasheet.
-* deviceNum - Select on of the five device banks (defined in
-* Memory.h) :
-*
-* - DEVICE0
-* - DEVICE1
-* - DEVICE2
-* - etc.
-*
-* OUTPUT:
-* None.
-*
-* RETURN:
-* false if one of the parameters is erroneous,true otherwise.
-*
-*******************************************************************************/
-/********************************************************************
-* memoryGetDeviceParam - This function used for getting device parameters from
-* DEVICE BANK PARAMETERS REGISTER
-*
-*
-* Inputs: - deviceParam: STRUCT with paramiters for DEVICE BANK
-* PARAMETERS REGISTER
-* - deviceNum : number of device
-* Returns: false if one of the parameters is erroneous,true otherwise.
-*********************************************************************/
-
-bool memoryGetDeviceParam (DEVICE_PARAM * deviceParam, DEVICE deviceNum)
-{
- unsigned int valueOfReg;
- unsigned int calcData;
-
- if (deviceNum > 4)
- return false;
- GT_REG_READ (DEVICE_BANK0PARAMETERS + 4 * deviceNum, &valueOfReg);
- calcData = (0x7 & valueOfReg) + ((BIT22 & valueOfReg) >> 19);
- deviceParam->turnOff = calcData; /* Turn Off */
-
- calcData = ((0x78 & valueOfReg) >> 3) + ((BIT23 & valueOfReg) >> 19);
- deviceParam->acc2First = calcData; /* Access To First */
-
- calcData = ((0x780 & valueOfReg) >> 7) + ((BIT24 & valueOfReg) >> 20);
- deviceParam->acc2Next = calcData; /* Access To Next */
-
- calcData =
- ((0x3800 & valueOfReg) >> 11) + ((BIT25 & valueOfReg) >> 22);
- deviceParam->ale2Wr = calcData; /* Ale To Write */
-
- calcData = ((0x1c000 & valueOfReg) >> 14) +
- ((BIT26 & valueOfReg) >> 23);
- deviceParam->wrLow = calcData; /* Write Active */
-
- calcData = ((0xe0000 & valueOfReg) >> 17) +
- ((BIT27 & valueOfReg) >> 24);
- deviceParam->wrHigh = calcData; /* Write High */
-
- calcData = ((0x300000 & valueOfReg) >> 20);
- deviceParam->deviceWidth = (BIT0 << calcData); /* In bytes */
- calcData = ((0x30000000 & valueOfReg) >> 28);
- deviceParam->badrSkew = calcData; /* Cycles gap between BAdr
- toggle to read data sample. */
- calcData = ((0x40000000 & valueOfReg) >> 30);
- deviceParam->DPEn = calcData; /* Data Parity enable */
- return true;
-}
-
-/*******************************************************************************
-* memorySetDeviceParam - Set new parameters for a device.
-*
-*
-* DESCRIPTION:
-* To allow interfacing with very slow devices and fast synchronous SRAMs,
-* each device can be programed to different timing parameters. Each bank
-* has its own parameters register. Bank width can be programmed to 8, 16,
-* or 32-bits. Bank timing parameters can be programmed to support
-* different device types (e.g. Sync Burst SRAM, Flash , ROM, I/O
-* Controllers). The MV allows you to set timing parameters and width for
-* each device through parameters register. This function set new
-* parameters to a device Bank from the delivered structure 'deviceParam'
-* (defined in gtMemory.h). The structure must be initialized with data
-* prior to the use of these function.
-*
-* INPUT:
-* deviceParam - pointer to a structure DEVICE_PARAM (defined in
-* Memory.h).For details about each structure field please
-* see the device timing parameter section in the MV
-* datasheet.
-* deviceNum - Select on of the five device banks (defined in
-* Memory.h) :
-*
-* - DEVICE0
-* - DEVICE1
-* - DEVICE2
-* - etc.
-*
-* OUTPUT:
-* None.
-*
-* RETURN:
-* false if one of the parameters is erroneous,true otherwise.
-*
-*******************************************************************************/
-/********************************************************************
-* memorySetDeviceParam - This function used for setting device parameters to
-* DEVICE BANK PARAMETERS REGISTER
-*
-*
-* Inputs: - deviceParam: STRUCT for store paramiters from DEVICE BANK
-* PARAMETERS REGISTER
-* - deviceNum : number of device
-* Returns: false if one of the parameters is erroneous,true otherwise.
-*********************************************************************/
-bool memorySetDeviceParam (DEVICE_PARAM * deviceParam, DEVICE deviceNum)
-{
- unsigned int valueForReg;
-
- if ((deviceParam->turnOff > 0x7) || (deviceParam->acc2First > 0xf) ||
- (deviceParam->acc2Next > 0xf) || (deviceParam->ale2Wr > 0x7) ||
- (deviceParam->wrLow > 0x7) || (deviceParam->wrHigh > 0x7) ||
- (deviceParam->badrSkew > 0x2) || (deviceParam->DPEn > 0x1)) {
- return false;
- }
- valueForReg = (((deviceParam->turnOff) & 0x7) |
- (((deviceParam->turnOff) & 0x8) << 19) |
- (((deviceParam->acc2First) & 0xf) << 3) |
- (((deviceParam->acc2First) & 0x10) << 19) |
- (((deviceParam->acc2Next) & 0xf) << 7) |
- (((deviceParam->acc2Next) & 0x10) << 20) |
- (((deviceParam->ale2Wr) & 0x7) << 11) |
- (((deviceParam->ale2Wr) & 0xf) << 22) |
- (((deviceParam->wrLow) & 0x7) << 14) |
- (((deviceParam->wrLow) & 0xf) << 23) |
- (((deviceParam->wrHigh) & 0x7) << 17) |
- (((deviceParam->wrHigh) & 0xf) << 24) |
- (((deviceParam->badrSkew) & 0x3) << 28) |
- (((deviceParam->DPEn) & 0x1) << 30));
-
- /* insert the device width: */
- switch (deviceParam->deviceWidth) {
- case 1:
- valueForReg = valueForReg | _8BIT;
- break;
- case 2:
- valueForReg = valueForReg | _16BIT;
- break;
- case 4:
- valueForReg = valueForReg | _32BIT;
- break;
- default:
- valueForReg = valueForReg | _8BIT;
- break;
- }
- GT_REG_WRITE (DEVICE_BANK0PARAMETERS + 4 * deviceNum, valueForReg);
- return true;
-}
-
-/*******************************************************************************
-* MemoryDisableWindow - Disable a memory space by the disable bit.
-* DESCRIPTION:
-* This function disables one of the 21 availiable windows dedicated for
-* the CPU decoding mechanism. Its possible to combine several windows with
-* the OR command.
-* INPUT:
-* window - One or more of the memory windows (defined in gtMemory.h).
-* OUTPUT:
-* None.
-* RETURN:
-* None.
-*******************************************************************************/
-void MemoryDisableWindow (MEMORY_WINDOW window)
-{
- SET_REG_BITS (BASE_ADDR_ENABLE, window);
-}
-
-/*******************************************************************************
-* MemoryEnableWindow - Enable a memory space that was disabled by
-* 'MemoryDisableWindow'.
-* DESCRIPTION:
-* This function enables one of the 21 availiable windows dedicated for the
-* CPU decoding mechanism. Its possible to combine several windows with the
-* OR command.
-* INPUT:
-* window - One or more of the memory windows (defined in gtMemory.h).
-* OUTPUT:
-* None.
-* RETURN:
-* None.
-*******************************************************************************/
-void MemoryEnableWindow (MEMORY_WINDOW window)
-{
- RESET_REG_BITS (BASE_ADDR_ENABLE, window);
-}
-
-/*******************************************************************************
-* MemoryGetMemWindowStatus - This function check whether the memory window is
-* disabled or not.
-* DESCRIPTION:
-* This function checks if the given memory window is closed .
-* INPUT:
-* window - One or more of the memory windows (defined in gtMemory.h).
-* OUTPUT:
-* None.
-* RETURN:
-* True for a closed window, false otherwise .
-*******************************************************************************/
-MEMORY_WINDOW_STATUS MemoryGetMemWindowStatus (MEMORY_WINDOW window)
-{
- if (GTREGREAD (BASE_ADDR_ENABLE) & window)
- return MEM_WINDOW_DISABLED;
- return MEM_WINDOW_ENABLED;
-}
diff --git a/board/Marvell/common/misc.S b/board/Marvell/common/misc.S
deleted file mode 100644
index 41c3a9508e..0000000000
--- a/board/Marvell/common/misc.S
+++ /dev/null
@@ -1,235 +0,0 @@
-#include <config.h>
-#include <74xx_7xx.h>
-#include "version.h"
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-#include "../include/mv_gen_reg.h"
-
-#ifdef CONFIG_ECC
- /* Galileo specific asm code for initializing ECC */
- .globl board_relocate_rom
-board_relocate_rom:
- mflr r7
- /* update the location of the GT registers */
- lis r11, CFG_GT_REGS@h
- /* if we're using ECC, we must use the DMA engine to copy ourselves */
- bl start_idma_transfer_0
- bl wait_for_idma_0
- bl stop_idma_engine_0
-
- mtlr r7
- blr
-
- .globl board_init_ecc
-board_init_ecc:
- mflr r7
- /* NOTE: r10 still contains the location we've been relocated to
- * which happens to be TOP_OF_RAM - CFG_MONITOR_LEN */
-
- /* now that we're running from ram, init the rest of main memory
- * for ECC use */
- lis r8, CFG_MONITOR_LEN@h
- ori r8, r8, CFG_MONITOR_LEN@l
-
- divw r3, r10, r8
-
- /* set up the counter, and init the starting address */
- mtctr r3
- li r12, 0
-
- /* bytes per transfer */
- mr r5, r8
-about_to_init_ecc:
-1: mr r3, r12
- mr r4, r12
- bl start_idma_transfer_0
- bl wait_for_idma_0
- bl stop_idma_engine_0
- add r12, r12, r8
- bdnz 1b
-
- mtlr r7
- blr
-
- /* r3: dest addr
- * r4: source addr
- * r5: byte count
- * r11: gt regbase
- * trashes: r6, r5
- */
-start_idma_transfer_0:
- /* set the byte count, including the OWN bit */
- mr r6, r11
- ori r6, r6, CHANNEL0_DMA_BYTE_COUNT
- stwbrx r5, 0, (r6)
-
- /* set the source address */
- mr r6, r11
- ori r6, r6, CHANNEL0_DMA_SOURCE_ADDRESS
- stwbrx r4, 0, (r6)
-
- /* set the dest address */
- mr r6, r11
- ori r6, r6, CHANNEL0_DMA_DESTINATION_ADDRESS
- stwbrx r3, 0, (r6)
-
- /* set the next record pointer */
- li r5, 0
- mr r6, r11
- ori r6, r6, CHANNEL0NEXT_RECORD_POINTER
- stwbrx r5, 0, (r6)
-
- /* set the low control register */
- /* bit 9 is NON chained mode, bit 31 is new style descriptors.
- bit 12 is channel enable */
- ori r5, r5, (1 << 12) | (1 << 12) | (1 << 11)
- /* 15 shifted by 16 (oris) == bit 31 */
- oris r5, r5, (1 << 15)
- mr r6, r11
- ori r6, r6, CHANNEL0CONTROL
- stwbrx r5, 0, (r6)
-
- blr
-
- /* this waits for the bytecount to return to zero, indicating
- * that the trasfer is complete */
-wait_for_idma_0:
- mr r5, r11
- lis r6, 0xff
- ori r6, r6, 0xffff
- ori r5, r5, CHANNEL0_DMA_BYTE_COUNT
-1: lwbrx r4, 0, (r5)
- and. r4, r4, r6
- bne 1b
-
- blr
-
- /* this turns off channel 0 of the idma engine */
-stop_idma_engine_0:
- /* shut off the DMA engine */
- li r5, 0
- mr r6, r11
- ori r6, r6, CHANNEL0CONTROL
- stwbrx r5, 0, (r6)
-
- blr
-#endif
-
-#ifdef CFG_BOARD_ASM_INIT
- /* NOTE: trashes r3-r7 */
- .globl board_asm_init
-board_asm_init:
- /* just move the GT registers to where they belong */
- lis r3, CFG_DFL_GT_REGS@h
- ori r3, r3, CFG_DFL_GT_REGS@l
- lis r4, CFG_GT_REGS@h
- ori r4, r4, CFG_GT_REGS@l
- li r5, INTERNAL_SPACE_DECODE
-
- /* test to see if we've already moved */
- lwbrx r6, r5, r4
- andi. r6, r6, 0xffff
- /* check loading of R7 is: 0x0F80 should: 0xf800: DONE */
-/* rlwinm r7, r4, 8, 16, 31
- rlwinm r7, r4, 12, 16, 31 */ /* original */
- rlwinm r7, r4, 16, 16, 31
- /* -----------------------------------------------------*/
- cmp cr0, r7, r6
- beqlr
-
- /* nope, have to move the registers */
- lwbrx r6, r5, r3
- andis. r6, r6, 0xffff
- or r6, r6, r7
- stwbrx r6, r5, r3
-
- /* now, poll for the change */
-1: lwbrx r7, r5, r4
- cmp cr0, r7, r6
- bne 1b
-
- /* done! */
- blr
-#endif
-
-/* For use of the debug LEDs */
- .global led_on0_relocated
-led_on0_relocated:
- xor r21, r21, r21
- xor r18, r18, r18
- lis r18, 0xFC80
- ori r18, r18, 0x8000
- stw r21, 0x0(r18)
-/* stw r18, 0x0(r18) */
- sync
- blr
-
- .global led_off0_relocated
-led_off0_relocated:
- xor r21, r21, r21
- xor r18, r18, r18
- lis r18, 0xFC81
- ori r18, r18, 0x4000
- stw r21, 0x0(r18)
-/* stw r18, 0x0(r18) */
- sync
- blr
-
- .global led_on0
-led_on0:
- xor r18, r18, r18
- lis r18, 0x1c80
- ori r18, r18, 0x8000
- stw r18, 0x0(r18)
- sync
- blr
-
- .global led_off0
-led_off0:
- xor r18, r18, r18
- lis r18, 0x1c81
- ori r18, r18, 0x4000
- stw r18, 0x0(r18)
- sync
- blr
-
- .global led_on1
-led_on1:
- xor r18, r18, r18
- lis r18, 0x1c80
- ori r18, r18, 0xc000
- stw r18, 0x0(r18)
- sync
- blr
-
- .global led_off1
-led_off1:
- xor r18, r18, r18
- lis r18, 0x1c81
- ori r18, r18, 0x8000
- stw r18, 0x0(r18)
- sync
- blr
-
- .global led_on2
-led_on2:
- xor r18, r18, r18
- lis r18, 0x1c81
- ori r18, r18, 0x0000
- stw r18, 0x0(r18)
- sync
- blr
-
- .global led_off2
-led_off2:
- xor r18, r18, r18
- lis r18, 0x1c81
- ori r18, r18, 0xc000
- stw r18, 0x0(r18)
- sync
- blr
diff --git a/board/Marvell/common/ns16550.c b/board/Marvell/common/ns16550.c
deleted file mode 100644
index 475445b788..0000000000
--- a/board/Marvell/common/ns16550.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * COM1 NS16550 support
- * originally from linux source (arch/ppc/boot/ns16550.c)
- * modified to use CFG_ISA_MEM and new defines
- *
- * further modified by Josh Huber <huber@mclx.com> to support
- * the DUART on the Galileo Eval board. (db64360)
- */
-
-#include <config.h>
-#include "ns16550.h"
-
-#ifdef ZUMA_NTL
-/* no 16550 device */
-#else
-const NS16550_t COM_PORTS[] = { (NS16550_t) (CFG_DUART_IO + 0),
- (NS16550_t) (CFG_DUART_IO + 0x20)
-};
-
-volatile struct NS16550 *NS16550_init (int chan, int baud_divisor)
-{
- volatile struct NS16550 *com_port;
-
- com_port = (struct NS16550 *) COM_PORTS[chan];
- com_port->ier = 0x00;
- com_port->lcr = LCR_BKSE; /* Access baud rate */
- com_port->dll = baud_divisor & 0xff; /* 9600 baud */
- com_port->dlm = (baud_divisor >> 8) & 0xff;
- com_port->lcr = LCR_8N1; /* 8 data, 1 stop, no parity */
- com_port->mcr = MCR_DTR | MCR_RTS; /* RTS/DTR */
-
- /* Clear & enable FIFOs */
- com_port->fcr = FCR_FIFO_EN | FCR_RXSR | FCR_TXSR;
- return (com_port);
-}
-
-void NS16550_reinit (volatile struct NS16550 *com_port, int baud_divisor)
-{
- com_port->ier = 0x00;
- com_port->lcr = LCR_BKSE; /* Access baud rate */
- com_port->dll = baud_divisor & 0xff; /* 9600 baud */
- com_port->dlm = (baud_divisor >> 8) & 0xff;
- com_port->lcr = LCR_8N1; /* 8 data, 1 stop, no parity */
- com_port->mcr = MCR_DTR | MCR_RTS; /* RTS/DTR */
-
- /* Clear & enable FIFOs */
- com_port->fcr = FCR_FIFO_EN | FCR_RXSR | FCR_TXSR;
-}
-
-void NS16550_putc (volatile struct NS16550 *com_port, unsigned char c)
-{
- while ((com_port->lsr & LSR_THRE) == 0);
- com_port->thr = c;
-}
-
-unsigned char NS16550_getc (volatile struct NS16550 *com_port)
-{
- while ((com_port->lsr & LSR_DR) == 0);
- return (com_port->rbr);
-}
-
-int NS16550_tstc (volatile struct NS16550 *com_port)
-{
- return ((com_port->lsr & LSR_DR) != 0);
-}
-#endif
diff --git a/board/Marvell/common/ns16550.h b/board/Marvell/common/ns16550.h
deleted file mode 100644
index f2ed2abc9e..0000000000
--- a/board/Marvell/common/ns16550.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * NS16550 Serial Port
- * originally from linux source (arch/ppc/boot/ns16550.h)
- * modified slightly to
- * have addresses as offsets from CFG_ISA_BASE
- * added a few more definitions
- * added prototypes for ns16550.c
- * reduced no of com ports to 2
- * modifications (c) Rob Taylor, Flying Pig Systems. 2000.
- *
- * further modified to support the DUART in the Galileo eval board
- * modifications (c) Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
- */
-
-#ifndef __NS16550_H__
-#define __NS16550_H__
-
-/* the padding is necessary because on the galileo board the UART is
- wired in with the 3 address lines shifted over by 2 bits */
-struct NS16550
-{
- unsigned char rbr; /* 0 = 0-3*/
- int pad1:24;
-
- unsigned char ier; /* 1 = 4-7*/
- int pad2:24;
-
- unsigned char fcr; /* 2 = 8-b*/
- int pad3:24;
-
- unsigned char lcr; /* 3 = c-f*/
- int pad4:24;
-
- unsigned char mcr; /* 4 = 10-13*/
- int pad5:24;
-
- unsigned char lsr; /* 5 = 14-17*/
- int pad6:24;
-
- unsigned char msr; /* 6 =18-1b*/
- int pad7:24;
-
- unsigned char scr; /* 7 =1c-1f*/
- int pad8:24;
-} __attribute__ ((packed));
-
-/* aliases */
-#define thr rbr
-#define iir fcr
-#define dll rbr
-#define dlm ier
-
-#define FCR_FIFO_EN 0x01 /*fifo enable*/
-#define FCR_RXSR 0x02 /*reciever soft reset*/
-#define FCR_TXSR 0x04 /*transmitter soft reset*/
-
-
-#define MCR_DTR 0x01
-#define MCR_RTS 0x02
-#define MCR_DMA_EN 0x04
-#define MCR_TX_DFR 0x08
-
-
-#define LCR_WLS_MSK 0x03 /* character length slect mask*/
-#define LCR_WLS_5 0x00 /* 5 bit character length */
-#define LCR_WLS_6 0x01 /* 6 bit character length */
-#define LCR_WLS_7 0x02 /* 7 bit character length */
-#define LCR_WLS_8 0x03 /* 8 bit character length */
-#define LCR_STB 0x04 /* Number of stop Bits, off = 1, on = 1.5 or 2) */
-#define LCR_PEN 0x08 /* Parity eneble*/
-#define LCR_EPS 0x10 /* Even Parity Select*/
-#define LCR_STKP 0x20 /* Stick Parity*/
-#define LCR_SBRK 0x40 /* Set Break*/
-#define LCR_BKSE 0x80 /* Bank select enable*/
-
-#define LSR_DR 0x01 /* Data ready */
-#define LSR_OE 0x02 /* Overrun */
-#define LSR_PE 0x04 /* Parity error */
-#define LSR_FE 0x08 /* Framing error */
-#define LSR_BI 0x10 /* Break */
-#define LSR_THRE 0x20 /* Xmit holding register empty */
-#define LSR_TEMT 0x40 /* Xmitter empty */
-#define LSR_ERR 0x80 /* Error */
-
-/* useful defaults for LCR*/
-#define LCR_8N1 0x03
-
-
-#define COM1 0x03F8
-#define COM2 0x02F8
-
-volatile struct NS16550 * NS16550_init(int chan, int baud_divisor);
-void NS16550_putc(volatile struct NS16550 *com_port, unsigned char c);
-unsigned char NS16550_getc(volatile struct NS16550 *com_port);
-int NS16550_tstc(volatile struct NS16550 *com_port);
-void NS16550_reinit(volatile struct NS16550 *com_port, int baud_divisor);
-
-typedef struct NS16550 *NS16550_t;
-
-extern const NS16550_t COM_PORTS[];
-
-#endif
diff --git a/board/Marvell/common/ppc_error_no.h b/board/Marvell/common/ppc_error_no.h
deleted file mode 100644
index 53687c86bb..0000000000
--- a/board/Marvell/common/ppc_error_no.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * (C) Copyright 2003
- * Ingo Assmus <ingo.assmus@keymile.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
- */
-
-/*
- * BK Id: SCCS/s.errno.h 1.9 06/05/01 21:45:21 paulus
- */
-#ifndef _MV_PPC_ERRNO_H
-#define _MV_PPC_ERRNO_H
-
-#define EPERM 1 /* Operation not permitted */
-#define ENOENT 2 /* No such file or directory */
-#define ESRCH 3 /* No such process */
-#define EINTR 4 /* Interrupted system call */
-#define EIO 5 /* I/O error */
-#define ENXIO 6 /* No such device or address */
-#define E2BIG 7 /* Arg list too long */
-#define ENOEXEC 8 /* Exec format error */
-#define EBADF 9 /* Bad file number */
-#define ECHILD 10 /* No child processes */
-#define EAGAIN 11 /* Try again */
-#define ENOMEM 12 /* Out of memory */
-#define EACCES 13 /* Permission denied */
-#define EFAULT 14 /* Bad address */
-#define ENOTBLK 15 /* Block device required */
-#define EBUSY 16 /* Device or resource busy */
-#define EEXIST 17 /* File exists */
-#define EXDEV 18 /* Cross-device link */
-#define ENODEV 19 /* No such device */
-#define ENOTDIR 20 /* Not a directory */
-#define EISDIR 21 /* Is a directory */
-#define EINVAL 22 /* Invalid argument */
-#define ENFILE 23 /* File table overflow */
-#define EMFILE 24 /* Too many open files */
-#define ENOTTY 25 /* Not a typewriter */
-#define ETXTBSY 26 /* Text file busy */
-#define EFBIG 27 /* File too large */
-#define ENOSPC 28 /* No space left on device */
-#define ESPIPE 29 /* Illegal seek */
-#define EROFS 30 /* Read-only file system */
-#define EMLINK 31 /* Too many links */
-#define EPIPE 32 /* Broken pipe */
-#define EDOM 33 /* Math argument out of domain of func */
-#define ERANGE 34 /* Math result not representable */
-#define EDEADLK 35 /* Resource deadlock would occur */
-#define ENAMETOOLONG 36 /* File name too long */
-#define ENOLCK 37 /* No record locks available */
-#define ENOSYS 38 /* Function not implemented */
-#define ENOTEMPTY 39 /* Directory not empty */
-#define ELOOP 40 /* Too many symbolic links encountered */
-#define EWOULDBLOCK EAGAIN /* Operation would block */
-#define ENOMSG 42 /* No message of desired type */
-#define EIDRM 43 /* Identifier removed */
-#define ECHRNG 44 /* Channel number out of range */
-#define EL2NSYNC 45 /* Level 2 not synchronized */
-#define EL3HLT 46 /* Level 3 halted */
-#define EL3RST 47 /* Level 3 reset */
-#define ELNRNG 48 /* Link number out of range */
-#define EUNATCH 49 /* Protocol driver not attached */
-#define ENOCSI 50 /* No CSI structure available */
-#define EL2HLT 51 /* Level 2 halted */
-#define EBADE 52 /* Invalid exchange */
-#define EBADR 53 /* Invalid request descriptor */
-#define EXFULL 54 /* Exchange full */
-#define ENOANO 55 /* No anode */
-#define EBADRQC 56 /* Invalid request code */
-#define EBADSLT 57 /* Invalid slot */
-#define EDEADLOCK 58 /* File locking deadlock error */
-#define EBFONT 59 /* Bad font file format */
-#define ENOSTR 60 /* Device not a stream */
-#define ENODATA 61 /* No data available */
-#define ETIME 62 /* Timer expired */
-#define ENOSR 63 /* Out of streams resources */
-#define ENONET 64 /* Machine is not on the network */
-#define ENOPKG 65 /* Package not installed */
-#define EREMOTE 66 /* Object is remote */
-#define ENOLINK 67 /* Link has been severed */
-#define EADV 68 /* Advertise error */
-#define ESRMNT 69 /* Srmount error */
-#define ECOMM 70 /* Communication error on send */
-#define EPROTO 71 /* Protocol error */
-#define EMULTIHOP 72 /* Multihop attempted */
-#define EDOTDOT 73 /* RFS specific error */
-#define EBADMSG 74 /* Not a data message */
-#define EOVERFLOW 75 /* Value too large for defined data type */
-#define ENOTUNIQ 76 /* Name not unique on network */
-#define EBADFD 77 /* File descriptor in bad state */
-#define EREMCHG 78 /* Remote address changed */
-#define ELIBACC 79 /* Can not access a needed shared library */
-#define ELIBBAD 80 /* Accessing a corrupted shared library */
-#define ELIBSCN 81 /* .lib section in a.out corrupted */
-#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
-#define ELIBEXEC 83 /* Cannot exec a shared library directly */
-#define EILSEQ 84 /* Illegal byte sequence */
-#define ERESTART 85 /* Interrupted system call should be restarted */
-#define ESTRPIPE 86 /* Streams pipe error */
-#define EUSERS 87 /* Too many users */
-#define ENOTSOCK 88 /* Socket operation on non-socket */
-#define EDESTADDRREQ 89 /* Destination address required */
-#define EMSGSIZE 90 /* Message too long */
-#define EPROTOTYPE 91 /* Protocol wrong type for socket */
-#define ENOPROTOOPT 92 /* Protocol not available */
-#define EPROTONOSUPPORT 93 /* Protocol not supported */
-#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
-#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
-#define EPFNOSUPPORT 96 /* Protocol family not supported */
-#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
-#define EADDRINUSE 98 /* Address already in use */
-#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
-#define ENETDOWN 100 /* Network is down */
-#define ENETUNREACH 101 /* Network is unreachable */
-#define ENETRESET 102 /* Network dropped connection because of reset */
-#define ECONNABORTED 103 /* Software caused connection abort */
-#define ECONNRESET 104 /* Connection reset by peer */
-#define ENOBUFS 105 /* No buffer space available */
-#define EISCONN 106 /* Transport endpoint is already connected */
-#define ENOTCONN 107 /* Transport endpoint is not connected */
-#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
-#define ETOOMANYREFS 109 /* Too many references: cannot splice */
-#define ETIMEDOUT 110 /* Connection timed out */
-#define ECONNREFUSED 111 /* Connection refused */
-#define EHOSTDOWN 112 /* Host is down */
-#define EHOSTUNREACH 113 /* No route to host */
-#define EALREADY 114 /* Operation already in progress */
-#define EINPROGRESS 115 /* Operation now in progress */
-#define ESTALE 116 /* Stale NFS file handle */
-#define EUCLEAN 117 /* Structure needs cleaning */
-#define ENOTNAM 118 /* Not a XENIX named type file */
-#define ENAVAIL 119 /* No XENIX semaphores available */
-#define EISNAM 120 /* Is a named type file */
-#define EREMOTEIO 121 /* Remote I/O error */
-#define EDQUOT 122 /* Quota exceeded */
-
-#define ENOMEDIUM 123 /* No medium found */
-#define EMEDIUMTYPE 124 /* Wrong medium type */
-
-/* Should never be seen by user programs */
-#define ERESTARTSYS 512
-#define ERESTARTNOINTR 513
-#define ERESTARTNOHAND 514 /* restart if no handler.. */
-#define ENOIOCTLCMD 515 /* No ioctl command */
-
-#define _LAST_ERRNO 515
-
-#endif
diff --git a/board/Marvell/common/serial.c b/board/Marvell/common/serial.c
deleted file mode 100644
index 6a1d4d7f5c..0000000000
--- a/board/Marvell/common/serial.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
- *
- * modified for marvell db64360 eval board by
- * Ingo Assmus <ingo.assmus@keymile.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
- */
-
-/*
- * serial.c - serial support for the gal ev board
- */
-
-/* supports both the 16650 duart and the MPSC */
-
-#include <common.h>
-#include <command.h>
-#include "../include/memory.h"
-#include "serial.h"
-
-#ifdef CONFIG_DB64360
-#include "../db64360/mpsc.h"
-#endif
-
-#ifdef CONFIG_DB64460
-#include "../db64460/mpsc.h"
-#endif
-
-#include "ns16550.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_MPSC
-
-
-int serial_init (void)
-{
-#if (defined CFG_INIT_CHAN1) || (defined CFG_INIT_CHAN2)
- int clock_divisor = 230400 / gd->baudrate;
-#endif
-
- mpsc_init (gd->baudrate);
-
- /* init the DUART chans so that KGDB in the kernel can use them */
-#ifdef CFG_INIT_CHAN1
- NS16550_reinit (COM_PORTS[0], clock_divisor);
-#endif
-#ifdef CFG_INIT_CHAN2
- NS16550_reinit (COM_PORTS[1], clock_divisor);
-#endif
- return (0);
-}
-
-void serial_putc (const char c)
-{
- if (c == '\n')
- mpsc_putchar ('\r');
-
- mpsc_putchar (c);
-}
-
-int serial_getc (void)
-{
- return mpsc_getchar ();
-}
-
-int serial_tstc (void)
-{
- return mpsc_test_char ();
-}
-
-void serial_setbrg (void)
-{
- galbrg_set_baudrate (CONFIG_MPSC_PORT, gd->baudrate);
-}
-
-#else /* ! CONFIG_MPSC */
-
-int serial_init (void)
-{
- int clock_divisor = 230400 / gd->baudrate;
-
-#ifdef CFG_INIT_CHAN1
- (void) NS16550_init (0, clock_divisor);
-#endif
-#ifdef CFG_INIT_CHAN2
- (void) NS16550_init (1, clock_divisor);
-#endif
- return (0);
-}
-
-void serial_putc (const char c)
-{
- if (c == '\n')
- NS16550_putc (COM_PORTS[CFG_DUART_CHAN], '\r');
-
- NS16550_putc (COM_PORTS[CFG_DUART_CHAN], c);
-}
-
-int serial_getc (void)
-{
- return NS16550_getc (COM_PORTS[CFG_DUART_CHAN]);
-}
-
-int serial_tstc (void)
-{
- return NS16550_tstc (COM_PORTS[CFG_DUART_CHAN]);
-}
-
-void serial_setbrg (void)
-{
- int clock_divisor = 230400 / gd->baudrate;
-
-#ifdef CFG_INIT_CHAN1
- NS16550_reinit (COM_PORTS[0], clock_divisor);
-#endif
-#ifdef CFG_INIT_CHAN2
- NS16550_reinit (COM_PORTS[1], clock_divisor);
-#endif
-}
-
-#endif /* CONFIG_MPSC */
-
-void serial_puts (const char *s)
-{
- while (*s) {
- serial_putc (*s++);
- }
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-void kgdb_serial_init (void)
-{
-}
-
-void putDebugChar (int c)
-{
- serial_putc (c);
-}
-
-void putDebugStr (const char *str)
-{
- serial_puts (str);
-}
-
-int getDebugChar (void)
-{
- return serial_getc ();
-}
-
-void kgdb_interruptible (int yes)
-{
- return;
-}
-#endif /* CFG_CMD_KGDB */
diff --git a/board/Marvell/common/serial.h b/board/Marvell/common/serial.h
deleted file mode 100644
index c7fc8c162d..0000000000
--- a/board/Marvell/common/serial.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
- *
- * modified for marvell db64360 eval board by
- * Ingo Assmus <ingo.assmus@keymile.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
- */
-
-/* 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/RPXClassic/Makefile b/board/RPXClassic/Makefile
deleted file mode 100644
index 19ea3ed3e3..0000000000
--- a/board/RPXClassic/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o eccx.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/RPXClassic/RPXClassic.c b/board/RPXClassic/RPXClassic.c
deleted file mode 100644
index 49cb8ad24f..0000000000
--- a/board/RPXClassic/RPXClassic.c
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stäubli Faverges - <www.staubli.com>
- * Pierre AUBERT p.aubert@staubli.com
- * U-Boot port on RPXClassic LF (CLLF_BW31) board
- *
- * (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 <common.h>
-#include <i2c.h>
-#include <config.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-static unsigned char aschex_to_byte (unsigned char *cp);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFCC25
-
-const uint sdram_table[] =
-{
- /*
- * Single Read. (Offset 00h in UPMA RAM)
- */
- 0xCFFFCC24, 0x0FFFCC04, 0X0CAFCC04, 0X03AFCC08,
- 0x3FBFCC27, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Burst Read. (Offset 08h in UPMA RAM)
- */
- 0xCFFFCC24, 0x0FFFCC04, 0x0CAFCC84, 0x03AFCC88,
- 0x3FBFCC27, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Single Write. (Offset 18h in UPMA RAM)
- */
- 0xCFFFCC24, 0x0FFFCC04, 0x0CFFCC04, 0x03FFCC00,
- 0x3FFFCC27, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Burst Write. (Offset 20h in UPMA RAM)
- */
- 0xCFFFCC24, 0x0FFFCC04, 0x0CFFCC80, 0x03FFCC8C,
- 0x0CFFCC00, 0x33FFCC27, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
- /*
- * Refresh. (Offset 30h in UPMA RAM)
- */
- 0xC0FFCC24, 0x03FFCC24, 0x0FFFCC24, 0x0FFFCC24,
- 0x3FFFCC27, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Exception. (Offset 3Ch in UPMA RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: RPXClassic\n");
- return (0);
-}
-
-/*-----------------------------------------------------------------------------
- * board_get_enetaddr -- Read the MAC Address in the I2C EEPROM
- *-----------------------------------------------------------------------------
- */
-void board_get_enetaddr (uchar * enet)
-{
- int i;
- char buff[256], *cp;
-
- /* Initialize I2C */
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- /* Read 256 bytes in EEPROM */
- i2c_read (0x54, 0, 1, (uchar *)buff, 128);
- i2c_read (0x54, 128, 1, (uchar *)buff + 128, 128);
-
- /* Retrieve MAC address in buffer (key EA) */
- for (cp = buff;;) {
- if (cp[0] == 'E' && cp[1] == 'A') {
- cp += 3;
- /* Read MAC address */
- for (i = 0; i < 6; i++, cp += 2) {
- enet[i] = aschex_to_byte ((unsigned char *)cp);
- }
- }
- /* Scan to the end of the record */
- while ((*cp != '\n') && (*cp != (char)0xff)) {
- cp++;
- }
- /* If the next character is a \n, 0 or ff, we are done. */
- cp++;
- if ((*cp == '\n') || (*cp == 0) || (*cp == (char)0xff))
- break;
- }
-
-#ifdef CONFIG_FEC_ENET
- /* The MAC address is the same as normal ethernet except the 3rd byte */
- /* (See the E.P. Planet Core Overview manual */
- enet[3] |= 0x80;
-#endif
-
- printf ("MAC address = %02x:%02x:%02x:%02x:%02x:%02x\n",
- enet[0], enet[1], enet[2], enet[3], enet[4], enet[5]);
-
-}
-
-void rpxclassic_init (void)
-{
- /* Enable NVRAM */
- *((uchar *) BCSR0) |= BCSR0_ENNVRAM;
-
-#ifdef CONFIG_FEC_ENET
-
- /* Validate the fast ethernet tranceiver */
- *((volatile uchar *) BCSR2) &= ~BCSR2_MIICTL;
- *((volatile uchar *) BCSR2) &= ~BCSR2_MIIPWRDWN;
- *((volatile uchar *) BCSR2) |= BCSR2_MIIRST;
- *((volatile uchar *) BCSR2) |= BCSR2_MIIPWRDWN;
-#endif
-
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size10;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /* Refresh clock prescalar */
- memctl->memc_mptpr = CFG_MPTPR;
-
- memctl->memc_mar = 0x00000000;
-
- /* Map controller banks 1 to the SDRAM bank */
- memctl->memc_or1 = CFG_OR1_PRELIM;
- memctl->memc_br1 = CFG_BR1_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_10COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80002230; /* SDRAM bank 0 - refresh twice */
- udelay (1);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /* Check Bank 0 Memory Size
- * try 10 column mode
- */
-
- size10 = dram_size (CFG_MAMR_10COL, SDRAM_BASE_PRELIM,
- SDRAM_MAX_SIZE);
-
- return (size10);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base, long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
-/*-----------------------------------------------------------------------------
- * aschex_to_byte --
- *-----------------------------------------------------------------------------
- */
-static unsigned char aschex_to_byte (unsigned char *cp)
-{
- u_char byte, c;
-
- c = *cp++;
-
- if ((c >= 'A') && (c <= 'F')) {
- c -= 'A';
- c += 10;
- } else if ((c >= 'a') && (c <= 'f')) {
- c -= 'a';
- c += 10;
- } else {
- c -= '0';
- }
-
- byte = c * 16;
-
- c = *cp;
-
- if ((c >= 'A') && (c <= 'F')) {
- c -= 'A';
- c += 10;
- } else if ((c >= 'a') && (c <= 'f')) {
- c -= 'a';
- c += 10;
- } else {
- c -= '0';
- }
-
- byte += c;
-
- return (byte);
-}
diff --git a/board/RPXClassic/config.mk b/board/RPXClassic/config.mk
deleted file mode 100644
index ae455e1202..0000000000
--- a/board/RPXClassic/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2001
-# Stäubli Faverges - <www.staubli.com>
-# Pierre AUBERT p.aubert@staubli.com
-# U-Boot port on RPXClassic LF (CLLF_BW31) board
-#
-# (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
-#
-
-TEXT_BASE = 0xff000000
diff --git a/board/RPXClassic/eccx.c b/board/RPXClassic/eccx.c
deleted file mode 100644
index cc76bbdfae..0000000000
--- a/board/RPXClassic/eccx.c
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * (C) Copyright 2002
- * Stäubli Faverges - <www.staubli.com>
- * Pierre AUBERT p.aubert@staubli.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
- */
-/* Video support for the ECCX daughter board */
-
-
-#include <common.h>
-#include <config.h>
-
-#ifdef CONFIG_VIDEO_SED13806
-#include <sed13806.h>
-
-
-/* Screen configurations: the initialization of the SD13806 depends on
- screen and on display mode. We handle only 8bpp and 16 bpp modes */
-
-/* ECCX board is supplied with a NEC NL6448BC20 screen */
-#ifdef CONFIG_NEC_NL6448BC20
-#define DISPLAY_WIDTH 640
-#define DISPLAY_HEIGHT 480
-
-#ifdef CONFIG_VIDEO_SED13806_8BPP
-static const S1D_REGS init_regs [] =
-{
- {0x0001,0x00}, /* Miscellaneous Register */
- {0x01FC,0x00}, /* Display Mode Register */
- {0x0004,0x1b}, /* General IO Pins Configuration Register 0 */
- {0x0005,0x00}, /* General IO Pins Configuration Register 1 */
- {0x0008,0xe5}, /* General IO Pins Control Register 0 */
- {0x0009,0x1f}, /* General IO Pins Control Register 1 */
- {0x0010,0x02}, /* Memory Clock Configuration Register */
- {0x0014,0x10}, /* LCD Pixel Clock Configuration Register */
- {0x0018,0x02}, /* CRT/TV Pixel Clock Configuration Register */
- {0x001C,0x02}, /* MediaPlug Clock Configuration Register */
- {0x001E,0x01}, /* CPU To Memory Wait State Select Register */
- {0x0021,0x04}, /* DRAM Refresh Rate Register */
- {0x002A,0x00}, /* DRAM Timings Control Register 0 */
- {0x002B,0x01}, /* DRAM Timings Control Register 1 */
- {0x0020,0x80}, /* Memory Configuration Register */
- {0x0030,0x25}, /* Panel Type Register */
- {0x0031,0x00}, /* MOD Rate Register */
- {0x0032,0x4F}, /* LCD Horizontal Display Width Register */
- {0x0034,0x13}, /* LCD Horizontal Non-Display Period Register */
- {0x0035,0x01}, /* TFT FPLINE Start Position Register */
- {0x0036,0x0B}, /* TFT FPLINE Pulse Width Register */
- {0x0038,0xDF}, /* LCD Vertical Display Height Register 0 */
- {0x0039,0x01}, /* LCD Vertical Display Height Register 1 */
- {0x003A,0x2C}, /* LCD Vertical Non-Display Period Register */
- {0x003B,0x00}, /* TFT FPFRAME Start Position Register */
- {0x003C,0x01}, /* TFT FPFRAME Pulse Width Register */
- {0x0040,0x03}, /* LCD Display Mode Register */
- {0x0041,0x02}, /* LCD Miscellaneous Register */
- {0x0042,0x00}, /* LCD Display Start Address Register 0 */
- {0x0043,0x00}, /* LCD Display Start Address Register 1 */
- {0x0044,0x00}, /* LCD Display Start Address Register 2 */
- {0x0046,0x40}, /* LCD Memory Address Offset Register 0 */
- {0x0047,0x01}, /* LCD Memory Address Offset Register 1 */
- {0x0048,0x00}, /* LCD Pixel Panning Register */
- {0x004A,0x00}, /* LCD Display FIFO High Threshold Control Register */
- {0x004B,0x00}, /* LCD Display FIFO Low Threshold Control Register */
- {0x0050,0x4F}, /* CRT/TV Horizontal Display Width Register */
- {0x0052,0x13}, /* CRT/TV Horizontal Non-Display Period Register */
- {0x0053,0x01}, /* CRT/TV HRTC Start Position Register */
- {0x0054,0x0B}, /* CRT/TV HRTC Pulse Width Register */
- {0x0056,0xDF}, /* CRT/TV Vertical Display Height Register 0 */
- {0x0057,0x01}, /* CRT/TV Vertical Display Height Register 1 */
- {0x0058,0x2B}, /* CRT/TV Vertical Non-Display Period Register */
- {0x0059,0x09}, /* CRT/TV VRTC Start Position Register */
- {0x005A,0x01}, /* CRT/TV VRTC Pulse Width Register */
- {0x005B,0x00}, /* TV Output Control Register */
- {0x0060,0x03}, /* CRT/TV Display Mode Register */
- {0x0062,0x00}, /* CRT/TV Display Start Address Register 0 */
- {0x0063,0x00}, /* CRT/TV Display Start Address Register 1 */
- {0x0064,0x00}, /* CRT/TV Display Start Address Register 2 */
- {0x0066,0x40}, /* CRT/TV Memory Address Offset Register 0 */
- {0x0067,0x01}, /* CRT/TV Memory Address Offset Register 1 */
- {0x0068,0x00}, /* CRT/TV Pixel Panning Register */
- {0x006A,0x00}, /* CRT/TV Display FIFO High Threshold Control Register */
- {0x006B,0x00}, /* CRT/TV Display FIFO Low Threshold Control Register */
- {0x0070,0x00}, /* LCD Ink/Cursor Control Register */
- {0x0071,0x00}, /* LCD Ink/Cursor Start Address Register */
- {0x0072,0x00}, /* LCD Cursor X Position Register 0 */
- {0x0073,0x00}, /* LCD Cursor X Position Register 1 */
- {0x0074,0x00}, /* LCD Cursor Y Position Register 0 */
- {0x0075,0x00}, /* LCD Cursor Y Position Register 1 */
- {0x0076,0x00}, /* LCD Ink/Cursor Blue Color 0 Register */
- {0x0077,0x00}, /* LCD Ink/Cursor Green Color 0 Register */
- {0x0078,0x00}, /* LCD Ink/Cursor Red Color 0 Register */
- {0x007A,0x1F}, /* LCD Ink/Cursor Blue Color 1 Register */
- {0x007B,0x3F}, /* LCD Ink/Cursor Green Color 1 Register */
- {0x007C,0x1F}, /* LCD Ink/Cursor Red Color 1 Register */
- {0x007E,0x00}, /* LCD Ink/Cursor FIFO Threshold Register */
- {0x0080,0x00}, /* CRT/TV Ink/Cursor Control Register */
- {0x0081,0x00}, /* CRT/TV Ink/Cursor Start Address Register */
- {0x0082,0x00}, /* CRT/TV Cursor X Position Register 0 */
- {0x0083,0x00}, /* CRT/TV Cursor X Position Register 1 */
- {0x0084,0x00}, /* CRT/TV Cursor Y Position Register 0 */
- {0x0085,0x00}, /* CRT/TV Cursor Y Position Register 1 */
- {0x0086,0x00}, /* CRT/TV Ink/Cursor Blue Color 0 Register */
- {0x0087,0x00}, /* CRT/TV Ink/Cursor Green Color 0 Register */
- {0x0088,0x00}, /* CRT/TV Ink/Cursor Red Color 0 Register */
- {0x008A,0x1F}, /* CRT/TV Ink/Cursor Blue Color 1 Register */
- {0x008B,0x3F}, /* CRT/TV Ink/Cursor Green Color 1 Register */
- {0x008C,0x1F}, /* CRT/TV Ink/Cursor Red Color 1 Register */
- {0x008E,0x00}, /* CRT/TV Ink/Cursor FIFO Threshold Register */
- {0x0100,0x00}, /* BitBlt Control Register 0 */
- {0x0101,0x00}, /* BitBlt Control Register 1 */
- {0x0102,0x00}, /* BitBlt ROP Code/Color Expansion Register */
- {0x0103,0x00}, /* BitBlt Operation Register */
- {0x0104,0x00}, /* BitBlt Source Start Address Register 0 */
- {0x0105,0x00}, /* BitBlt Source Start Address Register 1 */
- {0x0106,0x00}, /* BitBlt Source Start Address Register 2 */
- {0x0108,0x00}, /* BitBlt Destination Start Address Register 0 */
- {0x0109,0x00}, /* BitBlt Destination Start Address Register 1 */
- {0x010A,0x00}, /* BitBlt Destination Start Address Register 2 */
- {0x010C,0x00}, /* BitBlt Memory Address Offset Register 0 */
- {0x010D,0x00}, /* BitBlt Memory Address Offset Register 1 */
- {0x0110,0x00}, /* BitBlt Width Register 0 */
- {0x0111,0x00}, /* BitBlt Width Register 1 */
- {0x0112,0x00}, /* BitBlt Height Register 0 */
- {0x0113,0x00}, /* BitBlt Height Register 1 */
- {0x0114,0x00}, /* BitBlt Background Color Register 0 */
- {0x0115,0x00}, /* BitBlt Background Color Register 1 */
- {0x0118,0x00}, /* BitBlt Foreground Color Register 0 */
- {0x0119,0x00}, /* BitBlt Foreground Color Register 1 */
- {0x01E0,0x00}, /* Look-Up Table Mode Register */
- {0x01E2,0x00}, /* Look-Up Table Address Register */
- {0x01E4,0x00}, /* Look-Up Table Data Register */
- {0x01F0,0x10}, /* Power Save Configuration Register */
- {0x01F1,0x00}, /* Power Save Status Register */
- {0x01F4,0x00}, /* CPU-to-Memory Access Watchdog Timer Register */
- {0x01FC,0x01}, /* Display Mode Register */
- {0, 0}
-};
-#endif /* CONFIG_VIDEO_SED13806_8BPP */
-
-#ifdef CONFIG_VIDEO_SED13806_16BPP
-
-static const S1D_REGS init_regs [] =
-{
- {0x0001,0x00}, /* Miscellaneous Register */
- {0x01FC,0x00}, /* Display Mode Register */
- {0x0004,0x1b}, /* General IO Pins Configuration Register 0 */
- {0x0005,0x00}, /* General IO Pins Configuration Register 1 */
- {0x0008,0xe5}, /* General IO Pins Control Register 0 */
- {0x0009,0x1f}, /* General IO Pins Control Register 1 */
- {0x0010,0x02}, /* Memory Clock Configuration Register */
- {0x0014,0x10}, /* LCD Pixel Clock Configuration Register */
- {0x0018,0x02}, /* CRT/TV Pixel Clock Configuration Register */
- {0x001C,0x02}, /* MediaPlug Clock Configuration Register */
- {0x001E,0x01}, /* CPU To Memory Wait State Select Register */
- {0x0021,0x04}, /* DRAM Refresh Rate Register */
- {0x002A,0x00}, /* DRAM Timings Control Register 0 */
- {0x002B,0x01}, /* DRAM Timings Control Register 1 */
- {0x0020,0x80}, /* Memory Configuration Register */
- {0x0030,0x25}, /* Panel Type Register */
- {0x0031,0x00}, /* MOD Rate Register */
- {0x0032,0x4F}, /* LCD Horizontal Display Width Register */
- {0x0034,0x13}, /* LCD Horizontal Non-Display Period Register */
- {0x0035,0x01}, /* TFT FPLINE Start Position Register */
- {0x0036,0x0B}, /* TFT FPLINE Pulse Width Register */
- {0x0038,0xDF}, /* LCD Vertical Display Height Register 0 */
- {0x0039,0x01}, /* LCD Vertical Display Height Register 1 */
- {0x003A,0x2C}, /* LCD Vertical Non-Display Period Register */
- {0x003B,0x00}, /* TFT FPFRAME Start Position Register */
- {0x003C,0x01}, /* TFT FPFRAME Pulse Width Register */
- {0x0040,0x05}, /* LCD Display Mode Register */
- {0x0041,0x02}, /* LCD Miscellaneous Register */
- {0x0042,0x00}, /* LCD Display Start Address Register 0 */
- {0x0043,0x00}, /* LCD Display Start Address Register 1 */
- {0x0044,0x00}, /* LCD Display Start Address Register 2 */
- {0x0046,0x80}, /* LCD Memory Address Offset Register 0 */
- {0x0047,0x02}, /* LCD Memory Address Offset Register 1 */
- {0x0048,0x00}, /* LCD Pixel Panning Register */
- {0x004A,0x00}, /* LCD Display FIFO High Threshold Control Register */
- {0x004B,0x00}, /* LCD Display FIFO Low Threshold Control Register */
- {0x0050,0x4F}, /* CRT/TV Horizontal Display Width Register */
- {0x0052,0x13}, /* CRT/TV Horizontal Non-Display Period Register */
- {0x0053,0x01}, /* CRT/TV HRTC Start Position Register */
- {0x0054,0x0B}, /* CRT/TV HRTC Pulse Width Register */
- {0x0056,0xDF}, /* CRT/TV Vertical Display Height Register 0 */
- {0x0057,0x01}, /* CRT/TV Vertical Display Height Register 1 */
- {0x0058,0x2B}, /* CRT/TV Vertical Non-Display Period Register */
- {0x0059,0x09}, /* CRT/TV VRTC Start Position Register */
- {0x005A,0x01}, /* CRT/TV VRTC Pulse Width Register */
- {0x005B,0x00}, /* TV Output Control Register */
- {0x0060,0x05}, /* CRT/TV Display Mode Register */
- {0x0062,0x00}, /* CRT/TV Display Start Address Register 0 */
- {0x0063,0x00}, /* CRT/TV Display Start Address Register 1 */
- {0x0064,0x00}, /* CRT/TV Display Start Address Register 2 */
- {0x0066,0x80}, /* CRT/TV Memory Address Offset Register 0 */
- {0x0067,0x02}, /* CRT/TV Memory Address Offset Register 1 */
- {0x0068,0x00}, /* CRT/TV Pixel Panning Register */
- {0x006A,0x00}, /* CRT/TV Display FIFO High Threshold Control Register */
- {0x006B,0x00}, /* CRT/TV Display FIFO Low Threshold Control Register */
- {0x0070,0x00}, /* LCD Ink/Cursor Control Register */
- {0x0071,0x00}, /* LCD Ink/Cursor Start Address Register */
- {0x0072,0x00}, /* LCD Cursor X Position Register 0 */
- {0x0073,0x00}, /* LCD Cursor X Position Register 1 */
- {0x0074,0x00}, /* LCD Cursor Y Position Register 0 */
- {0x0075,0x00}, /* LCD Cursor Y Position Register 1 */
- {0x0076,0x00}, /* LCD Ink/Cursor Blue Color 0 Register */
- {0x0077,0x00}, /* LCD Ink/Cursor Green Color 0 Register */
- {0x0078,0x00}, /* LCD Ink/Cursor Red Color 0 Register */
- {0x007A,0x1F}, /* LCD Ink/Cursor Blue Color 1 Register */
- {0x007B,0x3F}, /* LCD Ink/Cursor Green Color 1 Register */
- {0x007C,0x1F}, /* LCD Ink/Cursor Red Color 1 Register */
- {0x007E,0x00}, /* LCD Ink/Cursor FIFO Threshold Register */
- {0x0080,0x00}, /* CRT/TV Ink/Cursor Control Register */
- {0x0081,0x00}, /* CRT/TV Ink/Cursor Start Address Register */
- {0x0082,0x00}, /* CRT/TV Cursor X Position Register 0 */
- {0x0083,0x00}, /* CRT/TV Cursor X Position Register 1 */
- {0x0084,0x00}, /* CRT/TV Cursor Y Position Register 0 */
- {0x0085,0x00}, /* CRT/TV Cursor Y Position Register 1 */
- {0x0086,0x00}, /* CRT/TV Ink/Cursor Blue Color 0 Register */
- {0x0087,0x00}, /* CRT/TV Ink/Cursor Green Color 0 Register */
- {0x0088,0x00}, /* CRT/TV Ink/Cursor Red Color 0 Register */
- {0x008A,0x1F}, /* CRT/TV Ink/Cursor Blue Color 1 Register */
- {0x008B,0x3F}, /* CRT/TV Ink/Cursor Green Color 1 Register */
- {0x008C,0x1F}, /* CRT/TV Ink/Cursor Red Color 1 Register */
- {0x008E,0x00}, /* CRT/TV Ink/Cursor FIFO Threshold Register */
- {0x0100,0x00}, /* BitBlt Control Register 0 */
- {0x0101,0x00}, /* BitBlt Control Register 1 */
- {0x0102,0x00}, /* BitBlt ROP Code/Color Expansion Register */
- {0x0103,0x00}, /* BitBlt Operation Register */
- {0x0104,0x00}, /* BitBlt Source Start Address Register 0 */
- {0x0105,0x00}, /* BitBlt Source Start Address Register 1 */
- {0x0106,0x00}, /* BitBlt Source Start Address Register 2 */
- {0x0108,0x00}, /* BitBlt Destination Start Address Register 0 */
- {0x0109,0x00}, /* BitBlt Destination Start Address Register 1 */
- {0x010A,0x00}, /* BitBlt Destination Start Address Register 2 */
- {0x010C,0x00}, /* BitBlt Memory Address Offset Register 0 */
- {0x010D,0x00}, /* BitBlt Memory Address Offset Register 1 */
- {0x0110,0x00}, /* BitBlt Width Register 0 */
- {0x0111,0x00}, /* BitBlt Width Register 1 */
- {0x0112,0x00}, /* BitBlt Height Register 0 */
- {0x0113,0x00}, /* BitBlt Height Register 1 */
- {0x0114,0x00}, /* BitBlt Background Color Register 0 */
- {0x0115,0x00}, /* BitBlt Background Color Register 1 */
- {0x0118,0x00}, /* BitBlt Foreground Color Register 0 */
- {0x0119,0x00}, /* BitBlt Foreground Color Register 1 */
- {0x01E0,0x01}, /* Look-Up Table Mode Register */
- {0x01E2,0x00}, /* Look-Up Table Address Register */
- {0x01E4,0x00}, /* Look-Up Table Data Register */
- {0x01F0,0x10}, /* Power Save Configuration Register */
- {0x01F1,0x00}, /* Power Save Status Register */
- {0x01F4,0x00}, /* CPU-to-Memory Access Watchdog Timer Register */
- {0x01FC,0x01}, /* Display Mode Register */
- {0, 0}
-};
-
-#endif /* CONFIG_VIDEO_SED13806_16BPP */
-#endif /* CONFIG_NEC_NL6448BC20 */
-
-
-#ifdef CONFIG_CONSOLE_EXTRA_INFO
-
-/*-----------------------------------------------------------------------------
- * video_get_info_str -- setup a board string: type, speed, etc.
- * line_number= location to place info string beside logo
- * info= buffer for info string
- *-----------------------------------------------------------------------------
- */
-void video_get_info_str (int line_number, char *info)
-{
- if (line_number == 1) {
- strcpy (info, " RPXClassic board");
- }
- else {
- info [0] = '\0';
- }
-
-}
-#endif
-
-/*-----------------------------------------------------------------------------
- * board_video_init -- init de l'EPSON, config du CS
- *-----------------------------------------------------------------------------
- */
-unsigned int board_video_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- /* Program ECCX registers */
- *(ECCX_CSR12) |= ECCX_860;
- *(ECCX_CSR8) |= ECCX_BE | ECCX_CS2;
- *(ECCX_CSR8) |= ECCX_ENEPSON;
-
- memctl->memc_or2 = SED13806_OR;
- memctl->memc_br2 = SED13806_REG_ADDR | SED13806_ACCES;
-
- return (SED13806_REG_ADDR);
-}
-
-/*-----------------------------------------------------------------------------
- * board_validate_screen --
- *-----------------------------------------------------------------------------
- */
-void board_validate_screen (unsigned int base)
-{
- /* Activate the panel bias power */
- *(volatile unsigned char *)(base + REG_GPIO_CTRL) = 0x80;
-}
-/*-----------------------------------------------------------------------------
- * board_get_regs --
- *-----------------------------------------------------------------------------
- */
-const S1D_REGS *board_get_regs (void)
-{
- return (init_regs);
-}
-/*-----------------------------------------------------------------------------
- * board_get_width --
- *-----------------------------------------------------------------------------
- */
-int board_get_width (void)
-{
- return (DISPLAY_WIDTH);
-}
-
-/*-----------------------------------------------------------------------------
- * board_get_height --
- *-----------------------------------------------------------------------------
- */
-int board_get_height (void)
-{
- return (DISPLAY_HEIGHT);
-}
-
-#endif /* CONFIG_VIDEO_SED13806 */
diff --git a/board/RPXClassic/flash.c b/board/RPXClassic/flash.c
deleted file mode 100644
index 2e0b8f9588..0000000000
--- a/board/RPXClassic/flash.c
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stäubli Faverges - <www.staubli.com>
- * Pierre AUBERT p.aubert@staubli.com
- * U-Boot port on RPXClassic LF (CLLF_BW31) board
- *
- * RPXClassic uses Am29DL323B flash memory with 2 banks
- *
- *
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0 ;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x00010000;
- info->start[3] = base + 0x00018000;
- info->start[4] = base + 0x00020000;
- info->start[5] = base + 0x00028000;
- info->start[6] = base + 0x00030000;
- info->start[7] = base + 0x00038000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + ((i-7) * 0x00040000) ;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMDL323B:
- printf ("AMDL323DB (16 Mbytes, bottom boot sect)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Reset flash componeny */
- addr [0] = 0xf0f0f0f0;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0xAAA] = 0xAAAAAAAA ;
- addr[0x555] = 0x55555555 ;
- addr[0xAAA] = 0x90909090 ;
-
- value = addr[0] ;
-
- switch (value & 0x00FF00FF) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[2] ; /* device ID */
-
- switch (value & 0x00FF00FF) {
- case (AMD_ID_DL323B & 0x00FF00FF):
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x01000000; /* 16 Mb */
-
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
- /* set up sector start address table */
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x00010000;
- info->start[3] = base + 0x00018000;
- info->start[4] = base + 0x00020000;
- info->start[5] = base + 0x00028000;
- info->start[6] = base + 0x00030000;
- info->start[7] = base + 0x00038000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + ((i-7) * 0x00040000) ;
- }
-
- /* check for protected sectors */
- for (i = 0; i < 23; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[4] & 1 ;
- }
- /* Check for protected sectors in the 2nd bank */
- addr[0x100AAA] = 0xAAAAAAAA ;
- addr[0x100555] = 0x55555555 ;
- addr[0x100AAA] = 0x90909090 ;
-
- for (i = 23; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[4] & 1 ;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0xF0F0F0F0; /* reset bank 1 */
- addr = (volatile unsigned long *)info->start[23];
-
- *addr = 0xF0F0F0F0; /* reset bank 2 */
-
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
- addr[0xAAA] = 0x80808080;
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long *)(info->start[sect]) ;
- addr[0] = 0x30303030 ;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long *)(info->start[l_sect]);
- while ((addr[0] & 0x80808080) != 0x80808080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (vu_long *)info->start[0];
- addr[0] = 0xF0F0F0F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
- addr[0xAAA] = 0xA0A0A0A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x80808080) != (data & 0x80808080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/RPXClassic/u-boot.lds b/board/RPXClassic/u-boot.lds
deleted file mode 100644
index 049f9901f7..0000000000
--- a/board/RPXClassic/u-boot.lds
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-/* XXX ?
- . = env_offset;
-*/
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/RPXClassic/u-boot.lds.debug b/board/RPXClassic/u-boot.lds.debug
deleted file mode 100644
index ddd4678ee8..0000000000
--- a/board/RPXClassic/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/RPXlite/Makefile b/board/RPXlite/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/RPXlite/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/RPXlite/RPXlite.c b/board/RPXlite/RPXlite.c
deleted file mode 100644
index f37e07b923..0000000000
--- a/board/RPXlite/RPXlite.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * (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
- */
-
-/*
- * Yoo. Jonghoon, IPone, yooth@ipone.co.kr
- * U-Boot port on RPXlite board
- *
- * DRAM related UPMA register values are modified.
- * See RPXLite engineering note : 50MHz/60ns - UPM RAM WORDS
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFCC25
-
-const uint sdram_table[] = {
- /*
- * Single Read. (Offset 00h in UPMA RAM)
- */
- 0xCFFFCC24, 0x0FFFCC04, 0X0CAFCC04, 0X03AFCC08,
- 0x3FBFCC27, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Burst Read. (Offset 08h in UPMA RAM)
- */
- 0xCFFFCC24, 0x0FFFCC04, 0x0CAFCC84, 0x03AFCC88,
- 0x3FBFCC27, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Single Write. (Offset 18h in UPMA RAM)
- */
- 0xCFFFCC24, 0x0FFFCC04, 0x0CFFCC04, 0x03FFCC00,
- 0x3FFFCC27, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Burst Write. (Offset 20h in UPMA RAM)
- */
- 0xCFFFCC24, 0x0FFFCC04, 0x0CFFCC80, 0x03FFCC8C,
- 0x0CFFCC00, 0x33FFCC27, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
- /*
- * Refresh. (Offset 30h in UPMA RAM)
- */
- 0xC0FFCC24, 0x03FFCC24, 0x0FFFCC24, 0x0FFFCC24,
- 0x3FFFCC27, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Exception. (Offset 3Ch in UPMA RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: RPXlite\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size10;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /* Refresh clock prescalar */
- memctl->memc_mptpr = CFG_MPTPR;
-
- memctl->memc_mar = 0x00000000;
-
- /* Map controller banks 1 to the SDRAM bank */
- memctl->memc_or1 = CFG_OR1_PRELIM;
- memctl->memc_br1 = CFG_BR1_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_10COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80002230; /* SDRAM bank 0 - refresh twice */
- udelay (1);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /* Check Bank 0 Memory Size
- * try 10 column mode
- */
-
- size10 = dram_size (CFG_MAMR_10COL, SDRAM_BASE_PRELIM,
- SDRAM_MAX_SIZE);
-
- return (size10);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size (base, maxsize));
-}
diff --git a/board/RPXlite/config.mk b/board/RPXlite/config.mk
deleted file mode 100644
index 6536b77616..0000000000
--- a/board/RPXlite/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# RPXlite boards
-#
-
-TEXT_BASE = 0xfff00000
diff --git a/board/RPXlite/flash.c b/board/RPXlite/flash.c
deleted file mode 100644
index 846794df3f..0000000000
--- a/board/RPXlite/flash.c
+++ /dev/null
@@ -1,524 +0,0 @@
-/*
- * (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
- */
-
-/*
- * Yoo. Jonghoon, IPone, yooth@ipone.co.kr
- * U-Boot port on RPXlite board
- *
- * Some of flash control words are modified. (from 2x16bit device
- * to 4x8bit device)
- * RPXLite board I tested has only 4 AM29LV800BB devices. Other devices
- * are not tested.
- *
- * (?) Does an RPXLite board which
- * does not use AM29LV800 flash memory exist ?
- * I don't know...
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-/* volatile immap_t *immap = (immap_t *)CFG_IMMR; */
-/* volatile memctl8xx_t *memctl = &immap->im_memctl; */
- unsigned long size_b0 ;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-/*
- size_b0 = flash_get_size((vu_long *)FLASH_BASE_DEBUG, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-*/
- /* Remap FLASH according to real size */
-/*%%%
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-%%%*/
- /* Re-do sizing to get full correct info */
-
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00010000;
- info->start[2] = base + 0x00018000;
- info->start[3] = base + 0x00020000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + ((i-3) * 0x00040000) ;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00010000;
- info->start[i--] = base + info->size - 0x00018000;
- info->start[i--] = base + info->size - 0x00020000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00040000;
- }
- }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0xAAA] = 0x00AA00AA ;
- addr[0x555] = 0x00550055 ;
- addr[0xAAA] = 0x00900090 ;
-
- value = addr[0] ;
-
- switch (value & 0x00FF00FF) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[2] ; /* device ID */
-
- switch (value & 0x00FF00FF) {
- case (AMD_ID_LV400T & 0x00FF00FF):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV400B & 0x00FF00FF):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800T & 0x00FF00FF):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV800B & 0x00FF00FF):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00400000; /*%%% Size doubled by yooth */
- break; /* => 4 MB */
-
- case (AMD_ID_LV160T & 0x00FF00FF):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV160B & 0x00FF00FF):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
- /*%%% sector start address modified */
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00010000;
- info->start[2] = base + 0x00018000;
- info->start[3] = base + 0x00020000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + ((i-3) * 0x00040000) ;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00010000;
- info->start[i--] = base + info->size - 0x00018000;
- info->start[i--] = base + info->size - 0x00020000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00040000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[4] & 1 ;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0xF0F0F0F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
- addr[0xAAA] = 0x80808080;
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long *)(info->start[sect]) ;
- addr[0] = 0x30303030 ;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long *)(info->start[l_sect]);
- while ((addr[0] & 0x80808080) != 0x80808080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (vu_long *)info->start[0];
- addr[0] = 0xF0F0F0F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
- addr[0xAAA] = 0xA0A0A0A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x80808080) != (data & 0x80808080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/RPXlite/u-boot.lds b/board/RPXlite/u-boot.lds
deleted file mode 100644
index 049f9901f7..0000000000
--- a/board/RPXlite/u-boot.lds
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-/* XXX ?
- . = env_offset;
-*/
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/RPXlite/u-boot.lds.debug b/board/RPXlite/u-boot.lds.debug
deleted file mode 100644
index ddd4678ee8..0000000000
--- a/board/RPXlite/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/RPXlite_dw/Makefile b/board/RPXlite_dw/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/RPXlite_dw/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/RPXlite_dw/README b/board/RPXlite_dw/README
deleted file mode 100644
index 28bcb318e8..0000000000
--- a/board/RPXlite_dw/README
+++ /dev/null
@@ -1,161 +0,0 @@
-
-After following the step of Yoo. Jonghoon and Wolfgang Denk,
-I ported u-boot on RPXlite DW version board: RPXlite_DW or LITE_DW.
-
-There are at least three differences between the Yoo-ported RPXlite and the RPXlite_DW.
-
-Board(in U-Boot) version(in EmbeddedPlanet) CPU SDRAM FLASH
-RPXlite RPXlite CW 850 16MB 4MB
-RPXlite_DW RPXlite DW(EP 823 H1 DW) 823e 64MB 16MB
-
-This fireware is specially coded for EmbeddedPlanet Co. Software Development
-Platform(RPXlite DW),which has a NEC NL6448BC20-08 LCD panel.
-
-It has the following three features:
-
-1. 64MHz/48MHz system frequence setting options.
-The default setting is 48MHz.To get a 64MHz u-boot,just add
-'64' in make command,like
-
-make distclean
-make RPXlite_DW_64_config
-make all
-
-2. CFG_ENV_IS_IN_FLASH/CFG_ENV_IS_IN_NVRAM
-
-The default environment parameter is stored in FLASH because it is a common choice for
-environment parameter.So I make NVRAM as backup parameter storeage.The reason why I
-didn't use EEPROM for ENV is that PlanetCore V2.0 use EEPROM as environment parameter
-home.Because of the possibility of using two firewares on this board,I didn't
-'disturb' EEPROM.To get NVRAM support,you may use the following build command:
-
-make distclean
-make RPXlite_DW_NVRAM_config
-make all
-
-3. LCD panel support
-
-To support the Platform better,I added LCD panel(NL6448BC20-08) function.
-For the convenience of debug, CONFIG_PERBOOT was supported. So you just
-perss ENTER if you want to get a serial console in boot downcounting.
-Then you can switch to LCD and serial console freely just typing
-'run lcd' or 'run ser'. They are only vaild when CONFIG_LCD was enabled.
-
-To get a LCD support u-boot,you can do the following:
-
-make distclean
-make RPXlite_DW_LCD_config
-make all
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The basic make commands could be:
-
-make RPXlite_DW_config
-make RPXlite_DW_64_config
-make RPXlite_DW_LCD_config
-make RPXlite_DW_NVRAM_config
-
-BTW,you can combine the above features together and get a workable u-boot to meet your need.
-For example,to get a 64MHZ && ENV_IS_IN_FLASH && LCD panel support u-boot,you can type:
-
-make RPXlite_DW_NVRAM_64_LCD_config
-make all
-
-So other combining make commands could be:
-
-make RPXlite_DW_NVRAM_64_config
-make RPXlite_DW_NVRAM_LCD_config
-make RPXlite_DW_64_LCD_config
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The boot process by "make RPXlite_DW_config" could be:
-
-U-Boot 1.1.2 (Aug 29 2004 - 15:11:27)
-
-CPU: PPC823EZTnnB2 at 48 MHz: 16 kB I-Cache 8 kB D-Cache
-Board: RPXlite_DW
-DRAM: 64 MB
-FLASH: 16 MB
-*** Warning - bad CRC, using default environment
-
-In: serial
-Out: serial
-Err: serial
-Net: SCC ETHERNET
-u-boot>
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A word on the U-Boot enviroment variable setting and usage :
-
-In the beginning, you could just need very simple defult environment variable setting,
-like[include/configs/RPXlite.h] :
-
-#define CONFIG_BOOTCOMMAND \
- "bootp; " \
- "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} " \
- "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; " \
- "bootm"
-
-This is enough for kernel NFS test. But as debug process goes on, you would expect
-to save some time on environment variable setting and u-boot/kernel updating.
-So the default environment variable setting would become more complicated. Just like
-the one I did in include/configs/RPXlite_DW.h.
-
-Two u-boot commands, ku and uu, should be careful to use. They were designed to update
-kernel and u-boot image file respectively. You must tftp your image to default address
-'100000' and then use them correctly. Yeah, you can create your own command to do this
-job. :-) The example u-boot image updating process could be :
-
-u-boot>t 100000 RPXlite_DW_LCD.bin
-Using SCC ETHERNET device
-TFTP from server 172.16.115.6; our IP address is 172.16.115.7
-Filename 'RPXlite_DW_LCD.bin'.
-Load address: 0x100000
-Loading: #############################
-done
-Bytes transferred = 144700 (2353c hex)
-u-boot>run uu
-Un-Protect Flash Sectors 0-4 in Bank # 1
-Erase Flash Sectors 0-4 in Bank # 1
-.... done
-Copy to Flash... done
-ff000000: 27051956 552d426f 6f742031 2e312e32 '..VU-Boot 1.1.2
-ff000010: 20284175 67203239 20323030 34202d20 (Aug 29 2004 -
-ff000020: 31353a32 303a3238 29000000 00000000 15:20:28).......
-ff000030: 00000000 00000000 00000000 00000000 ................
-ff000040: 00000000 00000000 00000000 00000000 ................
-ff000050: 00000000 00000000 00000000 00000000 ................
-ff000060: 00000000 00000000 00000000 00000000 ................
-ff000070: 00000000 00000000 00000000 00000000 ................
-ff000080: 00000000 00000000 00000000 00000000 ................
-ff000090: 00000000 00000000 00000000 00000000 ................
-ff0000a0: 00000000 00000000 00000000 00000000 ................
-ff0000b0: 00000000 00000000 00000000 00000000 ................
-ff0000c0: 00000000 00000000 00000000 00000000 ................
-ff0000d0: 00000000 00000000 00000000 00000000 ................
-ff0000e0: 00000000 00000000 00000000 00000000 ................
-ff0000f0: 00000000 00000000 00000000 00000000 ................
-u-boot updating finished
-u-boot>
-
-Also for environment updating, 'run eu' could let you erase OLD default environment variable
-and then use the working u-boot environment setting.
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Finally, if you want to keep the serial port to possible debug on spot for deployment, you
-just need to enable 'DEPLOYMENT' in RPXlite_DW.h as 'DEBUG' does. Only the special string
-defined by CONFIG_AUTOBOOT_STOP_STR like 'st' can stop the autoboot.
-
-I'd like to extend my heartfelt gratitute to kind people for helping me work it out.
-I would particually thank Wolfgang Denk for his nice help.
-
-Enjoy,
-
-Sam Song, samsongshu@yahoo.com.cn
-Institute of Electrical Machinery and Controls
-Shanghai University
-
-Oct. 11, 2004
diff --git a/board/RPXlite_dw/RPXlite_dw.c b/board/RPXlite_dw/RPXlite_dw.c
deleted file mode 100644
index 237c58af36..0000000000
--- a/board/RPXlite_dw/RPXlite_dw.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * (C) Copyright 2004
- * Sam Song, IEMC. SHU, samsongshu@yahoo.com.cn
- *
- * 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
- */
-
-/*
- * Sam Song
- * U-Boot port on RPXlite DW board : RPXlite_DW or LITE_DW
- * Tested on working at 64MHz(CPU)/32MHz(BUS),48MHz/24MHz
- * with 64MB, 2 SDRAM Micron chips,MT48LC16M16A2-75.
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-static long int dram_size (long int, long int *, long int);
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFCC25
-
-const uint sdram_table[] =
-{
- /*
- * Single Read. (Offset 00h in UPMA RAM)
- */
- 0x0F03CC04, 0x00ACCC24, 0x1FF74C20, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_,
-
- /*
- * Burst Read. (Offset 08h in UPMA RAM)
- */
- 0x0F03CC04, 0x00ACCC24, 0x00FFCC20, 0x00FFCC20,
- 0x01FFCC20, 0x1FF74C20, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
- /*
- * Single Write. (Offset 18h in UPMA RAM)
- */
- 0x0F03CC02, 0x00AC0C24, 0x1FF74C25, /* last */
- _NOT_USED_, _NOT_USED_, 0x0FA00C34,0x0FFFCC35,
- _NOT_USED_,
-
- /*
- * Burst Write. (Offset 20h in UPMA RAM)
- */
- 0x0F03CC00, 0x00AC0C20, 0x00FFFC20, 0x00FFFC22,
- 0x01FFFC24, 0x1FF74C25, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
- /*
- * Refresh. (Offset 30h in UPMA RAM)
- */
- 0x0FF0CC24, 0xFFFFCC24, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, 0xEFFB8C34, 0x0FF74C34,
- 0x0FFACCB4, 0x0FF5CC34, 0x0FFFCC34, 0x0FFFCCB4,
- /* INIT sequence RAM WORDS
- * SDRAM Initialization (offset 0x36 in UPMA RAM)
- * The above definition uses the remaining space
- * to establish an initialization sequence,
- * which is executed by a RUN command.
- * The sequence is COMMAND INHIBIT(NOP),Precharge,
- * Load Mode Register,NOP,Auto Refresh.
- */
-
- /*
- * Exception. (Offset 3Ch in UPMA RAM)
- */
- 0x0FEA8C34, 0x1FB54C34, 0xFFFFCC34, _NOT_USED_
-};
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: RPXlite_DW\n") ;
- return (0) ;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size9;
-
- upmconfig(UPMA, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
-
- /* Refresh clock prescalar */
- memctl->memc_mptpr = CFG_MPTPR ;
-
- memctl->memc_mar = 0x00000088;
-
- /* Map controller banks 1 to the SDRAM bank */
- memctl->memc_or1 = CFG_OR1_PRELIM;
- memctl->memc_br1 = CFG_BR1_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_9COL & (~(MAMR_PTAE)); /* no refresh yet */
- /*Disable Periodic timer A. */
-
- udelay(200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80002236; /* SDRAM bank 0 - refresh twice */
-
- udelay(1);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- /*Enable Periodic timer A */
-
- udelay (1000);
-
- /* Check Bank 0 Memory Size
- * try 9 column mode
- */
-
- size9 = dram_size (CFG_MAMR_9COL, SDRAM_BASE_PRELIM, SDRAM_MAX_SIZE);
-
- /*
- * Final mapping:
- */
-
- memctl->memc_or1 = ((-size9) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
-
- udelay (1000);
-
- return (size9);
-}
-
-void rpxlite_init (void)
-{
- /* Enable NVRAM */
- *((uchar *) BCSR0) |= BCSR0_ENNVRAM;
-}
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size (base, maxsize));
-}
diff --git a/board/RPXlite_dw/config.mk b/board/RPXlite_dw/config.mk
deleted file mode 100644
index 7970910959..0000000000
--- a/board/RPXlite_dw/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2004
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# Sam Song, IEMC. SHU, samsongshu@yahoo.com.cn
-#
-# 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
-#
-
-#
-# RPXlite dw boards : lite_dw
-#
-
-TEXT_BASE = 0xff000000
diff --git a/board/RPXlite_dw/flash.c b/board/RPXlite_dw/flash.c
deleted file mode 100644
index 1cbd53719f..0000000000
--- a/board/RPXlite_dw/flash.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * (C) Copyright 2004
- * 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
- */
-
-/*
- * Yoo. Jonghoon, IPone, yooth@ipone.co.kr
- * U-Boot port on RPXlite board
- *
- * Some of flash control words are modified. (from 2x16bit device
- * to 4x8bit device)
- * RPXLite board I tested has only 4 AM29LV800BB devices. Other devices
- * are not tested.
- *
- * (?) Does an RPXLite board which
- * does not use AM29LV800 flash memory exist ?
- * I don't know...
- */
-
-/* Yes,Yoo.They do use other FLASH for the board.
- *
- * Sam Song, IEMC. SHU, samsongshu@yahoo.com.cn
- * U-Boot port on RPXlite DW version board
- *
- * By now,it uses 4 AM29DL323DB90VI devices(4x8bit).
- * The total FLASH has 16MB(4x4MB).
- * I just made some necessary changes on the basis of Wolfgang and Yoo's job.
- *
- * June 8, 2004 */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions vu_long : volatile unsigned long IN include/common.h
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0 ;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* If Monitor is in the cope of FLASH,then
- * protect this area by default in case for
- * other occupation. [SAM] */
-
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+CFG_MONITOR_LEN-1,
- &flash_info[0]);
-#endif
- flash_info[0].size = size_b0;
- return (size_b0);
-}
-
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x00010000;
- info->start[3] = base + 0x00018000;
- info->start[4] = base + 0x00020000;
- info->start[5] = base + 0x00028000;
- info->start[6] = base + 0x00030000;
- info->start[7] = base + 0x00038000;
-
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + ((i-7) * 0x00040000);
- }
- } else {
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00010000;
- info->start[i--] = base + info->size - 0x00018000;
- info->start[i--] = base + info->size - 0x00020000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00040000;
- }
- }
-
-}
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_AMDL323B: printf ("AM29DL323B (32 Mbit, bottom boot sector)\n");
- break;
- /* I just add the FLASH_AMDL323B for RPXlite_DW BOARD. [SAM] */
- default: printf ("Unknown Chip Type\n");
- break;
- }
- printf (" Size: %ld MB in %d Sectors\n",info->size >> 20, info->sector_count);
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",info->start[i],info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0xAAA] = 0x00AA00AA ;
- addr[0x555] = 0x00550055 ;
- addr[0xAAA] = 0x00900090 ;
-
- value = addr[0] ;
- switch (value & 0x00FF00FF) {
- case AMD_MANUFACT: /* AMD_MANUFACT=0x00010001 in flash.h. */
- info->flash_id = FLASH_MAN_AMD; /* FLASH_MAN_AMD=0x00000000 in flash.h.*/
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[2] ; /* device ID */
- switch (value & 0x00FF00FF) {
- case (AMD_ID_LV400T & 0x00FF00FF):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
- case (AMD_ID_LV400B & 0x00FF00FF):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
- case (AMD_ID_LV800T & 0x00FF00FF):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
- case (AMD_ID_LV800B & 0x00FF00FF):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00400000; /* Size doubled by yooth */
- break; /* => 4 MB */
- case (AMD_ID_LV160T & 0x00FF00FF):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
- case (AMD_ID_LV160B & 0x00FF00FF):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
- case (AMD_ID_DL323B & 0x00FF00FF):
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x01000000;
- break; /* => 16 MB(4x4MB) */
- /* AMD_ID_DL323B= 0x22532253 FLASH_AMDL323B= 0x0013
- * AMD_ID_DL323B could be found in <flash.h>.[SAM]
- * So we could get : flash_id = 0x00000013.
- * The first four-bit represents VEDOR ID,leaving others for FLASH ID. */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* FLASH_BTYPE=0x0001 mask for bottom boot sector type.If the last bit equals 1,
- * it means bottom boot flash. GOOD IDEA! [SAM]
- */
-
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x00010000;
- info->start[3] = base + 0x00018000;
- info->start[4] = base + 0x00020000;
- info->start[5] = base + 0x00028000;
- info->start[6] = base + 0x00030000;
- info->start[7] = base + 0x00038000;
-
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + ((i-7) * 0x00040000) ;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00010000;
- info->start[i--] = base + info->size - 0x00018000;
- info->start[i--] = base + info->size - 0x00020000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00040000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- /* info->protect[i] = addr[4] & 1 ; */
- /* Mask it for disorder FLASH protection **[Sam]** */
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0xF0F0F0F0; /* reset bank */
- }
- return (info->size);
-}
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
- addr[0xAAA] = 0x80808080;
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long *)(info->start[sect]) ;
- addr[0] = 0x30303030 ;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long *)(info->start[l_sect]);
- while ((addr[0] & 0x80808080) != 0x80808080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (vu_long *)info->start[0];
- addr[0] = 0xF0F0F0F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
- addr[0xAAA] = 0xA0A0A0A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x80808080) != (data & 0x80808080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/RPXlite_dw/u-boot.lds b/board/RPXlite_dw/u-boot.lds
deleted file mode 100644
index a9c88f6487..0000000000
--- a/board/RPXlite_dw/u-boot.lds
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-/* XXX ?
- . = env_offset;
-*/
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/RPXlite_dw/u-boot.lds.debug b/board/RPXlite_dw/u-boot.lds.debug
deleted file mode 100644
index c0cf1cb747..0000000000
--- a/board/RPXlite_dw/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/RRvision/Makefile b/board/RRvision/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/RRvision/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/RRvision/RRvision.c b/board/RRvision/RRvision.c
deleted file mode 100644
index f46bb9e8e4..0000000000
--- a/board/RRvision/RRvision.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * (C) Copyright 2001-2002
- * 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 <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] =
-{
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEFC04, 0x11ADFC04, 0xEFBBBC00,
- 0x1FF77C47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FF77C34, 0xEFEABC34, 0x1FB57C35, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEFC04, 0x10ADFC04, 0xF0AFFC00,
- 0xF0AFFC00, 0xF1AFFC00, 0xEFBBBC00, 0x1FF77C47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEBC00, 0x01B93C04, 0x1FF77C47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEBC00, 0x10AD7C00, 0xF0AFFC00,
- 0xF0AFFC00, 0xE1BBBC04, 0x1FF77C47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1FF5FC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Always return 1 (no second DRAM bank).
- */
-
-int checkboard (void)
-{
- char *s = getenv ("serial#");
-
- puts ("Board: RRvision ");
-
- for (; s && *s; ++s) {
- if (*s == ' ')
- break;
- putc (*s);
- }
-
- putc ('\n');
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long reg;
- long int size8, size9;
- long int size = 0;
-
- upmconfig (UPMA, (uint *)sdram_table, sizeof(sdram_table) / sizeof(uint));
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_8K;
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller bank 1 the SDRAM bank 2 at physical address 0.
- */
- memctl->memc_or1 = CFG_OR2_PRELIM;
- memctl->memc_br1 = CFG_BR2_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80002105; /* SDRAM bank 0 */
- udelay (1);
- memctl->memc_mcr = 0x80002230; /* SDRAM bank 0 - execute twice */
- udelay (1);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /*
- * Check Bank 0 Memory Size
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL,
- SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL,
- SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size = size9;
-/* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */
- } else { /* back to 8 columns */
- size = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
-/* debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20); */
- }
-
- udelay (1000);
-
- /*
- * Adjust refresh rate depending on SDRAM type
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if (size < 0x02000000) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
- udelay (1000);
- }
-
- /*
- * Final mapping
- */
- memctl->memc_or1 = ((-size) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br1 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- /*
- * No bank 1
- *
- * invalidate bank
- */
- memctl->memc_br3 = 0;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
-
- udelay (10000);
-
- return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
diff --git a/board/RRvision/config.mk b/board/RRvision/config.mk
deleted file mode 100644
index ab1c8d6ccb..0000000000
--- a/board/RRvision/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# RedRock vision boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/RRvision/flash.c b/board/RRvision/flash.c
deleted file mode 100644
index d8e07e6450..0000000000
--- a/board/RRvision/flash.c
+++ /dev/null
@@ -1,522 +0,0 @@
-/*
- * (C) Copyright 2000-2002
- * 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
- */
-
-#define DEBUG
-
-#include <common.h>
-#include <mpc8xx.h>
-
-#ifndef CFG_ENV_ADDR
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size<<20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size & OR_AM_MSK);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size;
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- puts ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: puts ("AMD "); break;
- case FLASH_MAN_FUJ: puts ("FUJITSU "); break;
- default: puts ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: puts ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: puts ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: puts ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: puts ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: puts ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: puts ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: puts ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: puts ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: puts ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- puts (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- puts ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- puts ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-
- value = addr[0];
-
- switch (value) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- switch (value) {
- case AMD_ID_LV400B:
- case AMD_ID_LV800B:
- case AMD_ID_LV160B:
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- break;
- case AMD_ID_LV400T:
- case AMD_ID_LV800T:
- case AMD_ID_LV160T:
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- break;
- case AMD_ID_LV320B:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- /*
- * The first 8 sectors are 8 kB,
- * all the other ones are 64 kB
- */
- base += (i < 8)
- ? 2 * ( 8 << 10)
- : 2 * (64 << 10);
- }
- break;
- case AMD_ID_LV320T:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- /*
- * The last 8 sectors are 8 kB,
- * all the other ones are 64 kB
- */
- base += (i < (info->sector_count - 8))
- ? 2 * (64 << 10)
- : 2 * ( 8 << 10);
- }
- break;
- default:
- return (0);
- break;
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- puts ("- missing\n");
- } else {
- puts ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- puts ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ((addr[0] & 0x00800080) != 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- puts ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0x00F000F0; /* reset bank */
-
- puts (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/RRvision/u-boot.lds b/board/RRvision/u-boot.lds
deleted file mode 100644
index 1d6288fea6..0000000000
--- a/board/RRvision/u-boot.lds
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * (C) Copyright 2000-2002
- * 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- cpu/mpc8xx/traps.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/time.o (.text)
-
- . = env_offset;
- common/environment.o (.ppcenv)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/RRvision/video_ad7179.h b/board/RRvision/video_ad7179.h
deleted file mode 100644
index f14673827d..0000000000
--- a/board/RRvision/video_ad7179.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * (C) Copyright 2003 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
- */
-
-#define VIDEO_ENCODER_NAME "Analog Devices AD7179"
-
-#define VIDEO_ENCODER_I2C_RATE 100000 /* Max rate is 100Khz */
-#define VIDEO_ENCODER_CB_Y_CR_Y /* Use CB Y CR Y format... */
-
-#define VIDEO_MODE_YUYV /* The only mode supported by this encoder */
-#undef VIDEO_MODE_RGB
-#define VIDEO_MODE_BPP 16
-
-#ifdef VIDEO_MODE_PAL
-#define VIDEO_ACTIVE_COLS 720
-#define VIDEO_ACTIVE_ROWS 576
-#define VIDEO_VISIBLE_COLS 640
-#define VIDEO_VISIBLE_ROWS 480
-#else
-#error "NTSC mode is not supported"
-#endif
-
-static unsigned char video_encoder_data[] = {
- 0x05, /* Mode Register 0 */
- 0x11, /* Mode Register 1 */
- 0x20, /* Mode Register 2 */
- 0x0C, /* Mode Register 3 */
- 0x01, /* Mode Register 4 */
- 0x00, /* Reserved */
- 0x00, /* Reserved */
- 0x04, /* Timing Register 0 */
- 0x00, /* Timing Register 1 */
- 0xCB, /* Subcarrier Frequency Register 0 */
- 0x0A, /* Subcarrier Frequency Register 1 */
- 0x09, /* Subcarrier Frequency Register 2 */
- 0x2A, /* Subcarrier Frequency Register 3 */
- 0x00, /* Subcarrier Phase */
- 0x00, /* Closed Captioning Ext Reg 0 */
- 0x00, /* Closed Captioning Ext Reg 1 */
- 0x00, /* Closed Captioning Reg 0 */
- 0x00, /* Closed Captioning Reg 1 */
- 0x00, /* Pedestal Control Reg 0 */
- 0x00, /* Pedestal Control Reg 1 */
- 0x00, /* Pedestal Control Reg 2 */
- 0x00, /* Pedestal Control Reg 3 */
- 0x00, /* CGMS_WSS Reg 0 */
- 0x00, /* CGMS_WSS Reg 0 */
- 0x00, /* CGMS_WSS Reg 0 */
- 0x00 /* Teletext Req. Control Reg */
-} ;
diff --git a/board/a3000/Makefile b/board/a3000/Makefile
deleted file mode 100644
index d3db1a90e2..0000000000
--- a/board/a3000/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/a3000/README b/board/a3000/README
deleted file mode 100644
index f0e92c543d..0000000000
--- a/board/a3000/README
+++ /dev/null
@@ -1,17 +0,0 @@
-U-Boot for Artis SBC-A3000
----------------------------
-
-Artis SBC-A3000 has one flash socket that the user uses Intel 28F128J3A (16MB)
-or 28F064J3A (8MB) chips.
-
-In board's notation, bank 0 is the one at the address of 0xFF000000.
-bank 1 is the one at the address of 0xFF800000
-
-On power-up the processor jumps to the address of 0xFFF00100, the last
-megabyte of the bank 0 of flash.
-
-Thus, U-Boot is configured to reside in flash starting at the address of
-0xFFF00000. The environment space is located in flash separately from
-U-Boot, at the address of 0xFFFE0000.
-
-There is a National ns83815 10/100M ethernet controller on-board.
diff --git a/board/a3000/a3000.c b/board/a3000/a3000.c
deleted file mode 100644
index ab707ae970..0000000000
--- a/board/a3000/a3000.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * (C) Copyright 2001
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
- *
- * Modified during 2003 by
- * Ken Chou, kchou@ieee.org
- *
- * 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 <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-
-int checkboard (void)
-{
- ulong busfreq = get_bus_freq(0);
- char buf[32];
-
- printf("Board: A3000 Local Bus at %s MHz\n", strmhz(buf, busfreq));
- return 0;
-
-}
-
-long int initdram (int board_type)
-{
- long size;
- long new_bank0_end;
- long mear1;
- long emear1;
-
- size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
-
- new_bank0_end = size - 1;
- mear1 = mpc824x_mpc107_getreg(MEAR1);
- emear1 = mpc824x_mpc107_getreg(EMEAR1);
- mear1 = (mear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
- emear1 = (emear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
- mpc824x_mpc107_setreg(MEAR1, mear1);
- mpc824x_mpc107_setreg(EMEAR1, emear1);
-
- return (size);
-}
-
-/*
- * Initialize PCI Devices
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_a3000_config_table[] = {
- /* vendor, device, class */
- /* bus, dev, func */
- { PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_83815, PCI_ANY_ID,
- PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, /* dp83815 eth0 divice */
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_IO |
- PCI_COMMAND_MEMORY |
- PCI_COMMAND_MASTER }},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- PCI_ANY_ID, 0x14, PCI_ANY_ID, /* PCI slot1 */
- pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
- PCI_ENET1_MEMADDR,
- PCI_COMMAND_IO |
- PCI_COMMAND_MEMORY |
- PCI_COMMAND_MASTER }},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- PCI_ANY_ID, 0x15, PCI_ANY_ID, /* PCI slot2 */
- pci_cfgfunc_config_device, { PCI_ENET2_IOADDR,
- PCI_ENET2_MEMADDR,
- PCI_COMMAND_IO |
- PCI_COMMAND_MEMORY |
- PCI_COMMAND_MASTER }},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- PCI_ANY_ID, 0x16, PCI_ANY_ID, /* PCI slot3 */
- pci_cfgfunc_config_device, { PCI_ENET3_IOADDR,
- PCI_ENET3_MEMADDR,
- PCI_COMMAND_IO |
- PCI_COMMAND_MEMORY |
- PCI_COMMAND_MASTER }},
- { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_a3000_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
- pci_mpc824x_init(&hose);
-}
diff --git a/board/a3000/config.mk b/board/a3000/config.mk
deleted file mode 100644
index 798e0321df..0000000000
--- a/board/a3000/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (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
-#
-
-#
-# Artis A-3000 boards
-#
-
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/a3000/flash.c b/board/a3000/flash.c
deleted file mode 100644
index 13a5ca5b06..0000000000
--- a/board/a3000/flash.c
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc824x.h>
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-
-/*---------------------------------------------------------------------*/
-#define DEBUG_FLASH
-
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_char *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, uchar *dest, uchar data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-#define BS(b) (b)
-#define BYTEME(x) ((x) & 0xFF)
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long flash_banks[CFG_MAX_FLASH_BANKS] = CFG_FLASH_BANKS;
- unsigned long size, size_b[CFG_MAX_FLASH_BANKS];
-
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i)
- {
- flash_info[i].flash_id = FLASH_UNKNOWN;
-
- DEBUGF("Get flash bank %d @ 0x%08lx\n", i, flash_banks[i]);
-/*
- size_b[i] = flash_get_size((vu_char *)flash_banks[i], &flash_info[i]);
-*/
- size_b[i] = flash_get_size((vu_char *) 0xff800000 , &flash_info[i]);
-
- if (flash_info[i].flash_id == FLASH_UNKNOWN)
- {
- printf ("## Unknown FLASH on Bank %d: "
- "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
- i, flash_info[i].flash_id,
- size_b[i], size_b[i]<<20);
- }
- else
- {
- DEBUGF("## Flash bank %d at 0x%08lx sizes: 0x%08lx \n",
- i, flash_banks[i], size_b[i]);
-
- flash_get_offsets (flash_banks[i], &flash_info[i]);
- flash_info[i].size = size_b[i];
- }
- }
-
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- DEBUGF("protect monitor %x @ %x\n", CFG_MONITOR_BASE, CFG_MONITOR_LEN);
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+CFG_MONITOR_LEN-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- DEBUGF("protect environtment %x @ %x\n", CFG_ENV_ADDR, CFG_ENV_SECT_SIZE);
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
-
- size = 0;
- DEBUGF("## Final Flash bank sizes: ");
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i)
- {
- DEBUGF("%08lx ", size_b[i]);
- size += size_b[i];
- }
- DEBUGF("\n");
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- base += 0x00020000; /* 128k per bank */
- }
- return;
-
- default:
- printf ("Don't know sector ofsets for flash type 0x%lx\n", info->flash_id);
- return;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("Fujitsu "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("Intel "); break;
- case FLASH_MAN_MT: printf ("MT "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J3A:
- printf ("28F320J3A (32Mbit = 128K x 32)\n");
- break;
- case FLASH_28F640J3A:
- printf ("28F640J3A (64Mbit = 128K x 64)\n");
- break;
- case FLASH_28F128J3A:
- printf ("28F128J3A (128Mbit = 128K x 128)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
-#if 1
- if (info->size >= (1 << 20)) {
- i = 20;
- } else {
- i = 10;
- }
- printf (" Size: %ld %cB in %d Sectors\n",
- info->size >> i,
- (i == 20) ? 'M' : 'k',
- info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-#endif
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_char *addr, flash_info_t *info)
-{
- vu_char manuf, device;
-
- addr[0] = BS(0x90);
- manuf = BS(addr[0]);
- DEBUGF("Manuf. ID @ 0x%08lx: 0x%08x\n", (ulong)addr, manuf);
-
- switch (manuf) {
- case BYTEME(AMD_MANUFACT):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case BYTEME(FUJ_MANUFACT):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case BYTEME(SST_MANUFACT):
- info->flash_id = FLASH_MAN_SST;
- break;
- case BYTEME(STM_MANUFACT):
- info->flash_id = FLASH_MAN_STM;
- break;
- case BYTEME(INTEL_MANUFACT):
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = BS(0xFF); /* restore read mode, (yes, BS is a NOP) */
- return 0; /* no or unknown flash */
- }
-
- device = BS(addr[2]); /* device ID */
-
- DEBUGF("Device ID @ 0x%08lx: 0x%08x\n", (ulong)(&addr[1]), device);
-
- switch (device) {
- case BYTEME(INTEL_ID_28F320J3A):
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case BYTEME(INTEL_ID_28F640J3A):
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case BYTEME(INTEL_ID_28F128J3A):
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- addr[0] = BS(0xFF); /* restore read mode (yes, a NOP) */
- return 0; /* => no or unknown flash */
-
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = BS(0xFF); /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
- printf ("Can erase only Intel flash types - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_char *addr = (vu_char *)(info->start[sect]);
- unsigned long status;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = BS(0x50); /* clear status register */
- *addr = BS(0x20); /* erase setup */
- *addr = BS(0xD0); /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = BS(*addr)) & BYTEME(0x00800080)) != BYTEME(0x00800080)) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = BS(0xB0); /* suspend erase */
- *addr = BS(0xFF); /* reset to read mode */
- return 1;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- *addr = BS(0xFF); /* reset to read mode */
- }
- }
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define FLASH_WIDTH 1 /* flash bus width in bytes */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- uchar *wp = (uchar *)addr;
- int rc;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- while (cnt > 0) {
- if ((rc = write_data(info, wp, *src)) != 0) {
- return rc;
- }
- wp++;
- src++;
- cnt--;
- }
-
- return cnt;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, uchar *dest, uchar data)
-{
- vu_char *addr = (vu_char *)dest;
- ulong status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((BS(*addr) & data) != data) {
- return 2;
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = BS(0x40); /* write setup */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
- start = get_timer (0);
-
- while (((status = BS(*addr)) & BYTEME(0x00800080)) != BYTEME(0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *addr = BS(0xFF); /* restore read mode */
- return 1;
- }
- }
-
- *addr = BS(0xFF); /* restore read mode */
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/a3000/u-boot.lds b/board/a3000/u-boot.lds
deleted file mode 100644
index acb9ffda3b..0000000000
--- a/board/a3000/u-boot.lds
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/alaska/Makefile b/board/alaska/Makefile
deleted file mode 100644
index 27475ea4d7..0000000000
--- a/board/alaska/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/alaska/alaska.c b/board/alaska/alaska.c
deleted file mode 100644
index 93874b24f5..0000000000
--- a/board/alaska/alaska.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * (C) Copyright 2004, Freescale Inc.
- * TsiChung Liew, Tsi-Chung.Liew@freescale.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
- */
-
-#include <common.h>
-#include <mpc8220.h>
-#include <asm/processor.h>
-#include <asm/mmu.h>
-
-void setupBat (ulong size)
-{
- ulong batu, batl;
- int blocksize = 0;
-
- /* Flash 0 */
-#if defined (CFG_AMD_BOOT)
- batu = CFG_FLASH0_BASE | (BL_512K << 2) | BPP_RW | BPP_RX;
-#else
- batu = CFG_FLASH0_BASE | (BL_16M << 2) | BPP_RW | BPP_RX;
-#endif
- batl = CFG_FLASH0_BASE | 0x22;
- write_bat (IBAT0, batu, batl);
- write_bat (DBAT0, batu, batl);
-
- /* Flash 1 */
-#if defined (CFG_AMD_BOOT)
- batu = CFG_FLASH1_BASE | (BL_16M << 2) | BPP_RW | BPP_RX;
-#else
- batu = CFG_FLASH1_BASE | (BL_512K << 2) | BPP_RW | BPP_RX;
-#endif
- batl = CFG_FLASH1_BASE | 0x22;
- write_bat (IBAT1, batu, batl);
- write_bat (DBAT1, batu, batl);
-
- /* CPLD */
- batu = CFG_CPLD_BASE | (BL_512K << 2) | BPP_RW | BPP_RX;
- batl = CFG_CPLD_BASE | 0x22;
- write_bat (IBAT2, 0, 0);
- write_bat (DBAT2, batu, batl);
-
- /* FPGA */
- batu = CFG_FPGA_BASE | (BL_512K << 2) | BPP_RW | BPP_RX;
- batl = CFG_FPGA_BASE | 0x22;
- write_bat (IBAT3, 0, 0);
- write_bat (DBAT3, batu, batl);
-
- /* MBAR - Data only */
- batu = CFG_MBAR | BPP_RW | BPP_RX;
- batl = CFG_MBAR | 0x22;
- mtspr (IBAT4L, 0);
- mtspr (IBAT4U, 0);
- mtspr (DBAT4L, batl);
- mtspr (DBAT4U, batu);
-
- /* MBAR - SRAM */
- batu = CFG_SRAM_BASE | BPP_RW | BPP_RX;
- batl = CFG_SRAM_BASE | 0x42;
- mtspr (IBAT5L, batl);
- mtspr (IBAT5U, batu);
- mtspr (DBAT5L, batl);
- mtspr (DBAT5U, batu);
-
- if (size <= 0x800000) /* 8MB */
- blocksize = BL_8M << 2;
- else if (size <= 0x1000000) /* 16MB */
- blocksize = BL_16M << 2;
- else if (size <= 0x2000000) /* 32MB */
- blocksize = BL_32M << 2;
- else if (size <= 0x4000000) /* 64MB */
- blocksize = BL_64M << 2;
- else if (size <= 0x8000000) /* 128MB */
- blocksize = BL_128M << 2;
- else if (size <= 0x10000000) /* 256MB */
- blocksize = BL_256M << 2;
-
- /* Memory */
- batu = CFG_SDRAM_BASE | blocksize | BPP_RW | BPP_RX;
- batl = CFG_SDRAM_BASE | 0x42;
- mtspr (IBAT6L, batl);
- mtspr (IBAT6U, batu);
- mtspr (DBAT6L, batl);
- mtspr (DBAT6U, batu);
-
- /* memory size is less than 256MB */
- if (size <= 0x10000000) {
- /* Nothing */
- batu = 0;
- batl = 0;
- } else {
- size -= 0x10000000;
- if (size <= 0x800000) /* 8MB */
- blocksize = BL_8M << 2;
- else if (size <= 0x1000000) /* 16MB */
- blocksize = BL_16M << 2;
- else if (size <= 0x2000000) /* 32MB */
- blocksize = BL_32M << 2;
- else if (size <= 0x4000000) /* 64MB */
- blocksize = BL_64M << 2;
- else if (size <= 0x8000000) /* 128MB */
- blocksize = BL_128M << 2;
- else if (size <= 0x10000000) /* 256MB */
- blocksize = BL_256M << 2;
-
- batu = (CFG_SDRAM_BASE +
- 0x10000000) | blocksize | BPP_RW | BPP_RX;
- batl = (CFG_SDRAM_BASE + 0x10000000) | 0x42;
- }
-
- mtspr (IBAT7L, batl);
- mtspr (IBAT7U, batu);
- mtspr (DBAT7L, batl);
- mtspr (DBAT7U, batu);
-}
-
-long int initdram (int board_type)
-{
- ulong size;
-
- size = dramSetup ();
-
-/* if iCache ad dCache is defined */
-#if (CONFIG_COMMANDS & CFG_CMD_CACHE)
-/* setupBat(size);*/
-#endif
-
- return size;
-}
-
-int checkboard (void)
-{
- puts ("Board: Alaska MPC8220 Evaluation Board\n");
-
- return 0;
-}
diff --git a/board/alaska/config.mk b/board/alaska/config.mk
deleted file mode 100644
index 99d28a54fc..0000000000
--- a/board/alaska/config.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# (C) Copyright 2003-2004
-# 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
-#
-
-#
-# alaska board
-#
-
-TEXT_BASE = 0xfff00000
-# TEXT_BASE = 0x00100000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/alaska/flash.c b/board/alaska/flash.c
deleted file mode 100644
index 383491f566..0000000000
--- a/board/alaska/flash.c
+++ /dev/null
@@ -1,936 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001-2004
- * 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 <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH8
-
-typedef unsigned char FLASH_PORT_WIDTH;
-typedef volatile unsigned char FLASH_PORT_WIDTHV;
-
-#define SWAP(x) (x)
-
-/* Intel-compatible flash ID */
-#define INTEL_COMPAT 0x89
-#define INTEL_ALT 0xB0
-
-/* Intel-compatible flash commands */
-#define INTEL_PROGRAM 0x10
-#define INTEL_ERASE 0x20
-#define INTEL_CLEAR 0x50
-#define INTEL_LOCKBIT 0x60
-#define INTEL_PROTECT 0x01
-#define INTEL_STATUS 0x70
-#define INTEL_READID 0x90
-#define INTEL_CONFIRM 0xD0
-#define INTEL_RESET 0xFF
-
-/* Intel-compatible flash status bits */
-#define INTEL_FINISHED 0x80
-#define INTEL_OK 0x80
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define FLASH_CYCLE1 0x0555
-#define FLASH_CYCLE2 0x02aa
-
-#define WR_BLOCK 0x20
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static int write_data_block (flash_info_t * info, ulong src, ulong dest);
-static int write_word_amd (flash_info_t * info, FPWV * dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-void inline spin_wheel (void);
-static void flash_sync_real_protect (flash_info_t * info);
-static unsigned char intel_sector_protected (flash_info_t *info, ushort sector);
-static unsigned char same_chip_banks (int bank1, int bank2);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
- ulong fsize = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- memset (&flash_info[i], 0, sizeof (flash_info_t));
-
- switch (i) {
- case 0:
- flash_get_size ((FPW *) CFG_FLASH1_BASE,
- &flash_info[i]);
- flash_get_offsets (CFG_FLASH1_BASE, &flash_info[i]);
- break;
- case 1:
- flash_get_size ((FPW *) CFG_FLASH1_BASE,
- &flash_info[i]);
- fsize = CFG_FLASH1_BASE + flash_info[i - 1].size;
- flash_get_offsets (fsize, &flash_info[i]);
- break;
- case 2:
- flash_get_size ((FPW *) CFG_FLASH0_BASE,
- &flash_info[i]);
- flash_get_offsets (CFG_FLASH0_BASE, &flash_info[i]);
- break;
- case 3:
- flash_get_size ((FPW *) CFG_FLASH0_BASE,
- &flash_info[i]);
- fsize = CFG_FLASH0_BASE + flash_info[i - 1].size;
- flash_get_offsets (fsize, &flash_info[i]);
- break;
- default:
- panic ("configured to many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
-
- /* get the h/w and s/w protection status in sync */
- flash_sync_real_protect(&flash_info[i]);
- }
-
- /* Protect monitor and environment sectors
- */
-#if defined (CFG_AMD_BOOT)
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[2]);
- flash_protect (FLAG_PROTECT_SET,
- CFG_INTEL_BASE,
- CFG_INTEL_BASE + monitor_flash_len - 1,
- &flash_info[1]);
-#else
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[3]);
- flash_protect (FLAG_PROTECT_SET,
- CFG_AMD_BASE,
- CFG_AMD_BASE + monitor_flash_len - 1, &flash_info[0]);
-#endif
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV1_ADDR,
- CFG_ENV1_ADDR + CFG_ENV1_SIZE - 1, &flash_info[1]);
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[3]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN)
- return;
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_AMD_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_INTEL_SECT_SIZE);
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
-
- case FLASH_AM040:
- printf ("AMD29F040B\n");
- break;
-
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
-{
- FPWV value;
- static int amd = 0;
-
- /* Write auto select command: read Manufacturer ID */
- /* Write auto select command sequence and test FLASH answer */
- addr[FLASH_CYCLE1] = (FPW) 0x00AA00AA; /* for AMD, Intel ignores this */
- __asm__ ("sync");
- addr[FLASH_CYCLE2] = (FPW) 0x00550055; /* for AMD, Intel ignores this */
- __asm__ ("sync");
- addr[FLASH_CYCLE1] = (FPW) 0x00900090; /* selects Intel or AMD */
- __asm__ ("sync");
-
- udelay (100);
-
- switch (addr[0] & 0xff) {
-
- case (uchar) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- value = addr[1];
- break;
-
- case (uchar) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- value = addr[2];
- break;
-
- default:
- printf ("unknown\n");
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- switch (value) {
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 64;
- info->size = 0x00800000; /* => 16 MB */
- break;
-
- case (FPW) AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- if (amd == 0) {
- info->sector_count = 7;
- info->size = 0x00070000; /* => 448 KB */
- amd = 1;
- } else {
- /* for Environment settings */
- info->sector_count = 1;
- info->size = PHYS_AMD_SECT_SIZE; /* => 64 KB */
- amd = 0;
- }
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- if (value == (FPW) INTEL_ID_28F128J3A)
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- else
- addr[0] = (FPW) 0x00F000F0; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*
- * This function gets the u-boot flash sector protection status
- * (flash_info_t.protect[]) in sync with the sector protection
- * status stored in hardware.
- */
-static void flash_sync_real_protect (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- for (i = 0; i < info->sector_count; ++i) {
- info->protect[i] = intel_sector_protected(info, i);
- }
- break;
- case FLASH_AM040:
- default:
- /* no h/w protect support */
- break;
- }
-}
-
-
-/*
- * checks if "sector" in bank "info" is protected. Should work on intel
- * strata flash chips 28FxxxJ3x in 8-bit mode.
- * Returns 1 if sector is protected (or timed-out while trying to read
- * protection status), 0 if it is not.
- */
-static unsigned char intel_sector_protected (flash_info_t *info, ushort sector)
-{
- FPWV *addr;
- FPWV *lock_conf_addr;
- ulong start;
- unsigned char ret;
-
- /*
- * first, wait for the WSM to be finished. The rationale for
- * waiting for the WSM to become idle for at most
- * CFG_FLASH_ERASE_TOUT is as follows. The WSM can be busy
- * because of: (1) erase, (2) program or (3) lock bit
- * configuration. So we just wait for the longest timeout of
- * the (1)-(3), i.e. the erase timeout.
- */
-
- /* wait at least 35ns (W12) before issuing Read Status Register */
- udelay(1);
- addr = (FPWV *) info->start[sector];
- *addr = (FPW) INTEL_STATUS;
-
- start = get_timer (0);
- while ((*addr & (FPW) INTEL_FINISHED) != (FPW) INTEL_FINISHED) {
- if (get_timer (start) > CFG_FLASH_ERASE_TOUT) {
- *addr = (FPW) INTEL_RESET; /* restore read mode */
- printf("WSM busy too long, can't get prot status\n");
- return 1;
- }
- }
-
- /* issue the Read Identifier Codes command */
- *addr = (FPW) INTEL_READID;
-
- /* wait at least 35ns (W12) before reading */
- udelay(1);
-
- /* Intel example code uses offset of 4 for 8-bit flash */
- lock_conf_addr = (FPWV *) info->start[sector] + 4;
- ret = (*lock_conf_addr & (FPW) INTEL_PROTECT) ? 1 : 0;
-
- /* put flash back in read mode */
- *addr = (FPW) INTEL_RESET;
-
- return ret;
-}
-
-
-/*
- * Checks if "bank1" and "bank2" are on the same chip. Returns 1 if they
- * are and 0 otherwise.
- */
-static unsigned char same_chip_banks (int bank1, int bank2)
-{
- unsigned char same_chip[CFG_MAX_FLASH_BANKS][CFG_MAX_FLASH_BANKS] = {
- {1, 1, 0, 0},
- {1, 1, 0, 0},
- {0, 0, 1, 1},
- {0, 0, 1, 1}
- };
- return same_chip[bank1][bank2];
-}
-
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0, intel = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN)
- printf ("- missing\n");
- else
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_AMD)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
- }
-
- if (type == FLASH_MAN_INTEL)
- intel = 1;
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- start = get_timer (0);
-
- if (intel) {
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
- } else {
- FPWV *base; /* first address in bank */
-
- base = (FPWV *) (CFG_AMD_BASE);
- base[FLASH_CYCLE1] = (FPW) 0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW) 0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW) 0x00800080; /* erase mode */
- base[FLASH_CYCLE1] = (FPW) 0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW) 0x00550055; /* unlock */
- *addr = (FPW) 0x00300030; /* erase sector */
- }
-
- while (((status =
- *addr) & (FPW) 0x00800080) !=
- (FPW) 0x00800080) {
- if (get_timer (start) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- if (intel) {
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- } else
- *addr = (FPW) 0x00F000F0; /* reset to read mode */
-
- rcode = 1;
- break;
- }
- }
-
- if (intel) {
- *addr = (FPW) 0x00500050; /* clear status register cmd. */
- *addr = (FPW) 0x00FF00FF; /* resest to read mode */
- } else
- *addr = (FPW) 0x00F000F0; /* reset to read mode */
-
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- {
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof (data), left -=
- sizeof (data) - bytes) {
-
- bytes = addr & (sizeof (data) - 1);
- addr &= ~(sizeof (data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits
- */
- for (i = 0; i < sizeof (data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left)
- data += *((uchar *) addr + i);
- else
- data += *src++;
- }
-
- res = write_word_amd (info, (FPWV *) addr,
- data);
- }
- return res;
- } /* case FLASH_MAN_AMD */
-
- case FLASH_MAN_INTEL:
- {
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- /* get lower word aligned address */
- wp = addr;
- port_width = 1;
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
-
- for (; cnt == 0 && i < port_width; ++i, ++cp)
- data = (data << 8) | (*(uchar *) cp);
-
- if ((rc =
- write_data (info, wp, SWAP (data))) != 0)
- return (rc);
- wp += port_width;
- }
-
- if (cnt > WR_BLOCK) {
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= WR_BLOCK) {
-
- if ((rc =
- write_data_block (info,
- (ulong) src,
- wp)) != 0)
- return (rc);
-
- wp += WR_BLOCK;
- src += WR_BLOCK;
- cnt -= WR_BLOCK;
-
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
- }
-
- if (cnt < WR_BLOCK) {
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i)
- data = (data << 8) | *src++;
-
- if ((rc =
- write_data (info, wp,
- SWAP (data))) != 0)
- return (rc);
-
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
- }
-
- if (cnt == 0)
- return (0);
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0;
- ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
-
- for (; i < port_width; ++i, ++cp)
- data = (data << 8) | (*(uchar *) cp);
-
- return (write_data (info, wp, SWAP (data)));
- } /* case FLASH_MAN_INTEL */
-
- } /* switch */
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- start = get_timer (0);
-
- /* wait while polling the status register */
- while ((*addr & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data_block (flash_info_t * info, ulong src, ulong dest)
-{
- FPWV *srcaddr = (FPWV *) src;
- FPWV *dstaddr = (FPWV *) dest;
- ulong start;
- int flag, i;
-
- /* Check if Flash is (sufficiently) erased */
- for (i = 0; i < WR_BLOCK; i++)
- if ((*dstaddr++ & 0xff) != 0xff) {
- printf ("not erased at %08lx (%lx)\n",
- (ulong) dstaddr, *dstaddr);
- return (2);
- }
-
- dstaddr = (FPWV *) dest;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *dstaddr = (FPW) 0x00e800e8; /* write block setup */
-
- /* arm simple, non interrupt dependent timer */
- start = get_timer (0);
-
- /* wait while polling the status register */
- while ((*dstaddr & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- *dstaddr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *dstaddr = (FPW) 0x001f001f; /* write 32 to buffer */
- for (i = 0; i < WR_BLOCK; i++)
- *dstaddr++ = *srcaddr++;
-
- dstaddr -= 1;
- *dstaddr = (FPW) 0x00d000d0; /* write 32 to buffer */
-
- /* arm simple, non interrupt dependent timer */
- start = get_timer (0);
-
- /* wait while polling the status register */
- while ((*dstaddr & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- *dstaddr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *dstaddr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd (flash_info_t * info, FPWV * dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
- FPWV *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- base = (FPWV *) (CFG_AMD_BASE);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- base[FLASH_CYCLE1] = (FPW) 0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW) 0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW) 0x00A000A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- start = get_timer (0);
-
- /* data polling for D7 */
- while (res == 0
- && (*dest & (FPW) 0x00800080) != (data & (FPW) 0x00800080)) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW) 0x00F000F0; /* reset bank */
- res = 1;
- }
- }
-
- return (res);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
-
-/*-----------------------------------------------------------------------
- * Set/Clear sector's lock bit, returns:
- * 0 - OK
- * 1 - Error (timeout, voltage problems, etc.)
- */
-int flash_real_protect (flash_info_t * info, long sector, int prot)
-{
- ulong start;
- int i, j;
- int curr_bank;
- int bank;
- int rc = 0;
- FPWV *addr = (FPWV *) (info->start[sector]);
- int flag = disable_interrupts ();
-
- /*
- * 29F040B AMD flash does not support software protection/unprotection,
- * the only way to protect the AMD flash is marked it as prot bit.
- * This flash only support hardware protection, by supply or not supply
- * 12vpp to the flash
- */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD) {
- info->protect[sector] = prot;
-
- return 0;
- }
-
- *addr = INTEL_CLEAR; /* Clear status register */
- if (prot) { /* Set sector lock bit */
- *addr = INTEL_LOCKBIT; /* Sector lock bit */
- *addr = INTEL_PROTECT; /* set */
- } else { /* Clear sector lock bit */
- *addr = INTEL_LOCKBIT; /* All sectors lock bits */
- *addr = INTEL_CONFIRM; /* clear */
- }
-
- start = get_timer (0);
-
- while ((*addr & INTEL_FINISHED) != INTEL_FINISHED) {
- if (get_timer (start) > CFG_FLASH_UNLOCK_TOUT) {
- printf ("Flash lock bit operation timed out\n");
- rc = 1;
- break;
- }
- }
-
- if (*addr != INTEL_OK) {
- printf ("Flash lock bit operation failed at %08X, CSR=%08X\n",
- (uint) addr, (uint) * addr);
- rc = 1;
- }
-
- if (!rc)
- info->protect[sector] = prot;
-
- /*
- * Clear lock bit command clears all sectors lock bits, so
- * we have to restore lock bits of protected sectors.
- */
- if (!prot) {
- /*
- * re-locking must be done for all banks that belong on one
- * FLASH chip, as all the sectors on the chip were unlocked
- * by INTEL_LOCKBIT/INTEL_CONFIRM commands. (let's hope
- * that banks never span chips, in particular chips which
- * support h/w protection differently).
- */
-
- /* find the current bank number */
- curr_bank = CFG_MAX_FLASH_BANKS + 1;
- for (j = 0; j < CFG_MAX_FLASH_BANKS; ++j) {
- if (&flash_info[j] == info) {
- curr_bank = j;
- }
- }
- if (curr_bank == CFG_MAX_FLASH_BANKS + 1) {
- printf("Error: can't determine bank number!\n");
- }
-
- for (bank = 0; bank < CFG_MAX_FLASH_BANKS; ++bank) {
- if (!same_chip_banks(curr_bank, bank)) {
- continue;
- }
- info = &flash_info[bank];
- for (i = 0; i < info->sector_count; i++) {
- if (info->protect[i]) {
- start = get_timer (0);
- addr = (FPWV *) (info->start[i]);
- *addr = INTEL_LOCKBIT; /* Sector lock bit */
- *addr = INTEL_PROTECT; /* set */
- while ((*addr & INTEL_FINISHED) !=
- INTEL_FINISHED) {
- if (get_timer (start) >
- CFG_FLASH_UNLOCK_TOUT) {
- printf ("Flash lock bit operation timed out\n");
- rc = 1;
- break;
- }
- }
- }
- }
- }
-
- /*
- * get the s/w sector protection status in sync with the h/w,
- * in case something went wrong during the re-locking.
- */
- flash_sync_real_protect(info); /* resets flash to read mode */
- }
-
- if (flag)
- enable_interrupts ();
-
- *addr = INTEL_RESET; /* Reset to read array mode */
-
- return rc;
-}
diff --git a/board/alaska/u-boot.lds b/board/alaska/u-boot.lds
deleted file mode 100644
index 889bc77d2f..0000000000
--- a/board/alaska/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * 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/mpc8220/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/altera/common/AMDLV065D.c b/board/altera/common/AMDLV065D.c
deleted file mode 100644
index 8a7b14ee2f..0000000000
--- a/board/altera/common/AMDLV065D.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 <common.h>
-#if defined(CONFIG_NIOS)
-#include <nios.h>
-#else
-#include <asm/io.h>
-#endif
-
-#define SECTSZ (64 * 1024)
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*----------------------------------------------------------------------*/
-unsigned long flash_init (void)
-{
- int i;
- unsigned long addr;
- flash_info_t *fli = &flash_info[0];
-
- fli->size = CFG_FLASH_SIZE;
- fli->sector_count = CFG_MAX_FLASH_SECT;
- fli->flash_id = FLASH_MAN_AMD + FLASH_AMDLV065D;
-
- addr = CFG_FLASH_BASE;
- for (i = 0; i < fli->sector_count; ++i) {
- fli->start[i] = addr;
- addr += SECTSZ;
- fli->protect[i] = 1;
- }
-
- return (CFG_FLASH_SIZE);
-}
-/*--------------------------------------------------------------------*/
-void flash_print_info (flash_info_t * info)
-{
- int i, k;
- int erased;
- unsigned long *addr;
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
-
- /* Check if whole sector is erased */
- erased = 1;
- addr = (unsigned long *) info->start[i];
- for (k = 0; k < SECTSZ/sizeof(unsigned long); k++) {
- if ( readl(addr++) != (unsigned long)-1) {
- erased = 0;
- break;
- }
- }
-
- /* Print the info */
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
- }
- printf ("\n");
-}
-
-/*-------------------------------------------------------------------*/
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- unsigned char *addr = (unsigned char *) info->start[0];
- unsigned char *addr2;
- int prot, sect;
- ulong start;
-
- /* Some sanity checking */
- if ((s_first < 0) || (s_first > s_last)) {
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /* It's ok to erase multiple sectors provided we don't delay more
- * than 50 usec between cmds ... at which point the erase time-out
- * occurs. So don't go and put printf() calls in the loop ... it
- * won't be very helpful ;-)
- */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (unsigned char *) info->start[sect];
- writeb (addr, 0xaa);
- writeb (addr, 0x55);
- writeb (addr, 0x80);
- writeb (addr, 0xaa);
- writeb (addr, 0x55);
- writeb (addr2, 0x30);
- /* Now just wait for 0xff & provide some user
- * feedback while we wait.
- */
- start = get_timer (0);
- while ( readb (addr2) != 0xff) {
- udelay (1000 * 1000);
- putc ('.');
- if (get_timer (start) > CFG_FLASH_ERASE_TOUT) {
- printf ("timeout\n");
- return 1;
- }
- }
- }
- }
- printf ("\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-
- vu_char *cmd = (vu_char *) info->start[0];
- vu_char *dst = (vu_char *) addr;
- unsigned char b;
- ulong start;
-
- while (cnt) {
- /* Check for sufficient erase */
- b = *src;
- if ((readb (dst) & b) != b) {
- printf ("%02x : %02x\n", readb (dst), b);
- return (2);
- }
-
- writeb (cmd, 0xaa);
- writeb (cmd, 0x55);
- writeb (cmd, 0xa0);
- writeb (dst, b);
-
- /* Verify write */
- start = get_timer (0);
- while (readb (dst) != b) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return 1;
- }
- }
- dst++;
- src++;
- cnt--;
- }
-
- return (0);
-}
diff --git a/board/altera/common/epled.c b/board/altera/common/epled.c
deleted file mode 100644
index c75fe8c573..0000000000
--- a/board/altera/common/epled.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * (C) Copyright 2004, Psyent Corporation <www.psyent.com>
- * Scott McNutt <smcnutt@psyent.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
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <nios2-io.h>
-#include <status_led.h>
-
-/* The LED port is configured as output only, so we
- * must track the state manually.
- */
-static led_id_t val = 0;
-
-void __led_init (led_id_t mask, int state)
-{
- nios_pio_t *pio = (nios_pio_t *)CFG_LEDPIO_ADDR;
-
- if (state == STATUS_LED_ON)
- val &= ~mask;
- else
- val |= mask;
- writel (&pio->data, val);
-}
-
-void __led_set (led_id_t mask, int state)
-{
- nios_pio_t *pio = (nios_pio_t *)CFG_LEDPIO_ADDR;
-
- if (state == STATUS_LED_ON)
- val &= ~mask;
- else
- val |= mask;
- writel (&pio->data, val);
-}
-
-void __led_toggle (led_id_t mask)
-{
- nios_pio_t *pio = (nios_pio_t *)CFG_LEDPIO_ADDR;
-
- val ^= mask;
- writel (&pio->data, val);
-}
diff --git a/board/altera/common/flash.c b/board/altera/common/flash.c
deleted file mode 100644
index 2638ea899a..0000000000
--- a/board/altera/common/flash.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 <common.h>
-#include <nios.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*--------------------------------------------------------------------*/
-void flash_print_info (flash_info_t * info)
-{
- int i, k;
- unsigned long size;
- int erased;
- volatile unsigned char *flash;
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
-
- /* Check if whole sector is erased */
- if (i != (info->sector_count - 1))
- size = info->start[i + 1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned char *) info->start[i];
- for (k = 0; k < size; k++) {
- if (*flash++ != 0xff) {
- erased = 0;
- break;
- }
- }
-
- /* Print the info */
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s%s", info->start[i], erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
- }
- printf ("\n");
-}
-
-/*-------------------------------------------------------------------*/
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int prot, sect;
- unsigned oldpri;
- ulong start;
-
- /* Some sanity checking */
- if ((s_first < 0) || (s_first > s_last)) {
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-#ifdef DEBUG
- for (sect = s_first; sect <= s_last; sect++) {
- printf("- Erase: Sect: %i @ 0x%08x\n", sect, info->start[sect]);
- }
-#endif
-
- /* NOTE: disabling interrupts on Nios can be very bad since it
- * also disables the LO_LIMIT exception. It's better here to
- * set the interrupt priority to 3 & restore it when we're done.
- */
- oldpri = ipri (3);
-
- /* It's ok to erase multiple sectors provided we don't delay more
- * than 50 usec between cmds ... at which point the erase time-out
- * occurs. So don't go and put printf() calls in the loop ... it
- * won't be very helpful ;-)
- */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
- *addr = 0xaa;
- *addr = 0x55;
- *addr = 0x80;
- *addr = 0xaa;
- *addr = 0x55;
- *addr2 = 0x30;
- /* Now just wait for 0xff & provide some user
- * feedback while we wait. Here we have to grant
- * timer interrupts. Otherwise get_timer() can't
- * work right. */
- ipri(oldpri);
- start = get_timer (0);
- while (*addr2 != 0xff) {
- udelay (1000 * 1000);
- putc ('.');
- if (get_timer (start) > CFG_FLASH_ERASE_TOUT) {
- printf ("timeout\n");
- return 1;
- }
- }
- oldpri = ipri (3); /* disallow non important irqs again */
- }
- }
-
- printf ("\n");
-
- /* Restore interrupt priority */
- ipri (oldpri);
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-
- vu_char *cmd = (vu_char *) info->start[0];
- vu_char *dst = (vu_char *) addr;
- unsigned char b;
- unsigned oldpri;
- ulong start;
-
- while (cnt) {
- /* Check for sufficient erase */
- b = *src;
- if ((*dst & b) != b) {
- printf ("%02x : %02x\n", *dst, b);
- return (2);
- }
-
- /* Disable interrupts other than window underflow
- * (interrupt priority 2)
- */
- oldpri = ipri (3);
- *cmd = 0xaa;
- *cmd = 0x55;
- *cmd = 0xa0;
- *dst = b;
-
- /* Verify write */
- start = get_timer (0);
- while (*dst != b) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- ipri (oldpri);
- return 1;
- }
- }
- dst++;
- src++;
- cnt--;
- ipri (oldpri);
- }
-
- return (0);
-}
diff --git a/board/altera/common/sevenseg.c b/board/altera/common/sevenseg.c
deleted file mode 100644
index c53cec16e6..0000000000
--- a/board/altera/common/sevenseg.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * (C) Copyright 2003, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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
- *
- * common/sevenseg.c
- *
- * NIOS PIO based seven segment led support functions
- */
-
-#include <common.h>
-#include <nios-io.h>
-
-#ifdef CONFIG_SEVENSEG
-
-#define SEVENDEG_MASK_DP ((SEVENSEG_DIGIT_DP << 8) | SEVENSEG_DIGIT_DP)
-
-#ifdef SEVENSEG_WRONLY /* emulate read access */
-#if (SEVENSEG_ACTIVE == 0)
-static unsigned int sevenseg_portval = ~0;
-#else
-static unsigned int sevenseg_portval = 0;
-#endif
-#endif
-
-static int sevenseg_init_done = 0;
-
-static inline void __sevenseg_set_masked (unsigned int mask, int value)
-{
- nios_pio_t *piop __attribute__((unused)) = (nios_pio_t*)SEVENSEG_BASE;
-
-#ifdef SEVENSEG_WRONLY /* emulate read access */
-
-#if (SEVENSEG_ACTIVE == 0)
- if (value)
- sevenseg_portval &= ~mask;
- else
- sevenseg_portval |= mask;
-#else
- if (value)
- sevenseg_portval |= mask;
- else
- sevenseg_portval &= ~mask;
-#endif
-
- piop->data = sevenseg_portval;
-
-#else /* !SEVENSEG_WRONLY */
-
-#if (SEVENSEG_ACTIVE == 0)
- if (value)
- piop->data &= ~mask;
- else
- piop->data |= mask;
-#else
- if (value)
- piop->data |= mask;
- else
- piop->data &= ~mask;
-#endif
-
-#endif /* SEVENSEG_WRONLY */
-}
-
-static inline void __sevenseg_toggle_masked (unsigned int mask)
-{
- nios_pio_t *piop = (nios_pio_t*)SEVENSEG_BASE;
-
-#ifdef SEVENSEG_WRONLY /* emulate read access */
-
- sevenseg_portval ^= mask;
- piop->data = sevenseg_portval;
-
-#else /* !SEVENSEG_WRONLY */
-
- piop->data ^= mask;
-
-#endif /* SEVENSEG_WRONLY */
-}
-
-static inline void __sevenseg_set (unsigned int value)
-{
- nios_pio_t *piop __attribute__((unused)) = (nios_pio_t*)SEVENSEG_BASE;
-
-#ifdef SEVENSEG_WRONLY /* emulate read access */
-
-#if (SEVENSEG_ACTIVE == 0)
- sevenseg_portval = (sevenseg_portval & SEVENDEG_MASK_DP)
- | ((~value) & (~SEVENDEG_MASK_DP));
-#else
- sevenseg_portval = (sevenseg_portval & SEVENDEG_MASK_DP)
- | (value);
-#endif
-
- piop->data = sevenseg_portval;
-
-#else /* !SEVENSEG_WRONLY */
-
-#if (SEVENSEG_ACTIVE == 0)
- piop->data = (piop->data & SEVENDEG_MASK_DP)
- | ((~value) & (~SEVENDEG_MASK_DP));
-#else
- piop->data = (piop->data & SEVENDEG_MASK_DP)
- | (value);
-#endif
-
-#endif /* SEVENSEG_WRONLY */
-}
-
-static inline void __sevenseg_init (void)
-{
- nios_pio_t *piop __attribute__((unused)) = (nios_pio_t*)SEVENSEG_BASE;
-
- __sevenseg_set(0);
-
-#ifndef SEVENSEG_WRONLY /* setup direction */
-
- piop->direction |= mask;
-
-#endif /* SEVENSEG_WRONLY */
-}
-
-
-void sevenseg_set(int value)
-{
- unsigned char digits[] = {
- SEVENSEG_DIGITS_0,
- SEVENSEG_DIGITS_1,
- SEVENSEG_DIGITS_2,
- SEVENSEG_DIGITS_3,
- SEVENSEG_DIGITS_4,
- SEVENSEG_DIGITS_5,
- SEVENSEG_DIGITS_6,
- SEVENSEG_DIGITS_7,
- SEVENSEG_DIGITS_8,
- SEVENSEG_DIGITS_9,
- SEVENSEG_DIGITS_A,
- SEVENSEG_DIGITS_B,
- SEVENSEG_DIGITS_C,
- SEVENSEG_DIGITS_D,
- SEVENSEG_DIGITS_E,
- SEVENSEG_DIGITS_F
- };
-
- if (!sevenseg_init_done) {
- __sevenseg_init();
- sevenseg_init_done++;
- }
-
- switch (value & SEVENSEG_MASK_CTRL) {
-
- case SEVENSEG_RAW:
- __sevenseg_set( (
- (digits[((value & SEVENSEG_MASK_VAL) >> 4)] << 8) |
- digits[((value & SEVENSEG_MASK_VAL) & 0xf)] ) );
- return;
- break; /* paranoia */
-
- case SEVENSEG_OFF:
- __sevenseg_set(0);
- __sevenseg_set_masked(SEVENDEG_MASK_DP, 0);
- return;
- break; /* paranoia */
-
- case SEVENSEG_SET_DPL:
- __sevenseg_set_masked(SEVENSEG_DIGIT_DP, 1);
- return;
- break; /* paranoia */
-
- case SEVENSEG_SET_DPH:
- __sevenseg_set_masked((SEVENSEG_DIGIT_DP << 8), 1);
- return;
- break; /* paranoia */
-
- case SEVENSEG_RES_DPL:
- __sevenseg_set_masked(SEVENSEG_DIGIT_DP, 0);
- return;
- break; /* paranoia */
-
- case SEVENSEG_RES_DPH:
- __sevenseg_set_masked((SEVENSEG_DIGIT_DP << 8), 0);
- return;
- break; /* paranoia */
-
- case SEVENSEG_TOG_DPL:
- __sevenseg_toggle_masked(SEVENSEG_DIGIT_DP);
- return;
- break; /* paranoia */
-
- case SEVENSEG_TOG_DPH:
- __sevenseg_toggle_masked((SEVENSEG_DIGIT_DP << 8));
- return;
- break; /* paranoia */
-
- case SEVENSEG_LO:
- case SEVENSEG_HI:
- case SEVENSEG_STR:
- default:
- break;
- }
-}
-
-#endif /* CONFIG_SEVENSEG */
diff --git a/board/altera/common/sevenseg.h b/board/altera/common/sevenseg.h
deleted file mode 100644
index cbfd2e74a2..0000000000
--- a/board/altera/common/sevenseg.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * (C) Copyright 2003, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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
- *
- * common/sevenseg.h
- *
- * NIOS PIO based seven segment led support functions
- */
-
-#ifndef __DK1S10_SEVENSEG_H__
-#define __DK1S10_SEVENSEG_H__
-
-#ifdef CONFIG_SEVENSEG
-
-/*
- * 15 8 7 0
- * |-----------------------|--------|
- * | controll value | value |
- * ----------------------------------
- */
-#define SEVENSEG_RAW (int)(0) /* write out byte value (hex) */
-#define SEVENSEG_OFF (int)( 1 << 8) /* display switch off */
-#define SEVENSEG_SET_DPL (int)( 2 << 8) /* set dp low nibble */
-#define SEVENSEG_SET_DPH (int)( 3 << 8) /* set dp high nibble */
-#define SEVENSEG_RES_DPL (int)( 4 << 8) /* reset dp low nibble */
-#define SEVENSEG_RES_DPH (int)( 5 << 8) /* reset dp high nibble */
-#define SEVENSEG_TOG_DPL (int)( 6 << 8) /* toggle dp low nibble */
-#define SEVENSEG_TOG_DPH (int)( 7 << 8) /* toggle dp high nibble */
-#define SEVENSEG_LO (int)( 8 << 8) /* write out low nibble only */
-#define SEVENSEG_HI (int)( 9 << 8) /* write out high nibble only */
-#define SEVENSEG_STR (int)(10 << 8) /* write out a string */
-
-#define SEVENSEG_MASK_VAL (0xff) /* only used by SEVENSEG_RAW */
-#define SEVENSEG_MASK_CTRL (~SEVENSEG_MASK_VAL)
-
-#ifdef SEVENSEG_DIGIT_HI_LO_EQUAL
-
-#define SEVENSEG_DIGITS_0 ( SEVENSEG_DIGIT_A \
- | SEVENSEG_DIGIT_B \
- | SEVENSEG_DIGIT_C \
- | SEVENSEG_DIGIT_D \
- | SEVENSEG_DIGIT_E \
- | SEVENSEG_DIGIT_F )
-#define SEVENSEG_DIGITS_1 ( SEVENSEG_DIGIT_B \
- | SEVENSEG_DIGIT_C )
-#define SEVENSEG_DIGITS_2 ( SEVENSEG_DIGIT_A \
- | SEVENSEG_DIGIT_B \
- | SEVENSEG_DIGIT_D \
- | SEVENSEG_DIGIT_E \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_3 ( SEVENSEG_DIGIT_A \
- | SEVENSEG_DIGIT_B \
- | SEVENSEG_DIGIT_C \
- | SEVENSEG_DIGIT_D \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_4 ( SEVENSEG_DIGIT_B \
- | SEVENSEG_DIGIT_C \
- | SEVENSEG_DIGIT_F \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_5 ( SEVENSEG_DIGIT_A \
- | SEVENSEG_DIGIT_C \
- | SEVENSEG_DIGIT_D \
- | SEVENSEG_DIGIT_F \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_6 ( SEVENSEG_DIGIT_A \
- | SEVENSEG_DIGIT_C \
- | SEVENSEG_DIGIT_D \
- | SEVENSEG_DIGIT_E \
- | SEVENSEG_DIGIT_F \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_7 ( SEVENSEG_DIGIT_A \
- | SEVENSEG_DIGIT_B \
- | SEVENSEG_DIGIT_C )
-#define SEVENSEG_DIGITS_8 ( SEVENSEG_DIGIT_A \
- | SEVENSEG_DIGIT_B \
- | SEVENSEG_DIGIT_C \
- | SEVENSEG_DIGIT_D \
- | SEVENSEG_DIGIT_E \
- | SEVENSEG_DIGIT_F \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_9 ( SEVENSEG_DIGIT_A \
- | SEVENSEG_DIGIT_B \
- | SEVENSEG_DIGIT_C \
- | SEVENSEG_DIGIT_D \
- | SEVENSEG_DIGIT_F \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_A ( SEVENSEG_DIGIT_A \
- | SEVENSEG_DIGIT_B \
- | SEVENSEG_DIGIT_C \
- | SEVENSEG_DIGIT_E \
- | SEVENSEG_DIGIT_F \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_B ( SEVENSEG_DIGIT_C \
- | SEVENSEG_DIGIT_D \
- | SEVENSEG_DIGIT_E \
- | SEVENSEG_DIGIT_F \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_C ( SEVENSEG_DIGIT_D \
- | SEVENSEG_DIGIT_E \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_D ( SEVENSEG_DIGIT_B \
- | SEVENSEG_DIGIT_C \
- | SEVENSEG_DIGIT_D \
- | SEVENSEG_DIGIT_E \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_E ( SEVENSEG_DIGIT_A \
- | SEVENSEG_DIGIT_D \
- | SEVENSEG_DIGIT_E \
- | SEVENSEG_DIGIT_F \
- | SEVENSEG_DIGIT_G )
-#define SEVENSEG_DIGITS_F ( SEVENSEG_DIGIT_A \
- | SEVENSEG_DIGIT_E \
- | SEVENSEG_DIGIT_F \
- | SEVENSEG_DIGIT_G )
-
-#else /* !SEVENSEG_DIGIT_HI_LO_EQUAL */
-#error SEVENSEG: different pin asssignments not supported
-#endif
-
-void sevenseg_set(int value);
-
-#endif /* CONFIG_SEVENSEG */
-
-#endif /* __DK1S10_SEVENSEG_H__ */
diff --git a/board/altera/dk1c20/Makefile b/board/altera/dk1c20/Makefile
deleted file mode 100644
index 6af83890a8..0000000000
--- a/board/altera/dk1c20/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o misc.o
-SOBJS = vectors.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/altera/dk1c20/config.mk b/board/altera/dk1c20/config.mk
deleted file mode 100644
index d200715f5f..0000000000
--- a/board/altera/dk1c20/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2003
-# Psyent Corporation
-# Scott McNutt <smcnutt@psyent.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
-#
-
-TEXT_BASE = 0x018c0000
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
diff --git a/board/altera/dk1c20/dk1c20.c b/board/altera/dk1c20/dk1c20.c
deleted file mode 100644
index 98ee7a71c9..0000000000
--- a/board/altera/dk1c20/dk1c20.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * (C) Copyright 2003, Psyent Corporation <www.psyent.com>
- * Scott McNutt <smcnutt@psyent.com>
- *
- * CompactFlash/IDE:
- * (C) Copyright 2004, Shlomo Kut <skut@vyyo.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
- */
-
-#include <common.h>
-#include <nios-io.h>
-#if defined(CONFIG_SEVENSEG)
-#include "../common/sevenseg.h"
-#endif
-
-void _default_hdlr (void)
-{
- printf ("default_hdlr\n");
-}
-
-int board_early_init_f (void)
-{
-#if defined(CONFIG_SEVENSEG)
- /* init seven segment led display and switch off */
- sevenseg_set(SEVENSEG_OFF);
-#endif
- return 0;
-}
-
-int checkboard (void)
-{
- puts ("Board: Altera Nios 1C20 Development Kit\n");
- return 0;
-}
-
-long int initdram (int board_type)
-{
- return (0);
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_IDE)
-int ide_preinit (void)
-{
- nios_pio_t *present = (nios_pio_t *) CFG_CF_PRESENT;
- nios_pio_t *power = (nios_pio_t *) CFG_CF_POWER;
- nios_pio_t *atasel = (nios_pio_t *) CFG_CF_ATASEL;
-
- /* setup data direction registers */
- present->direction = NIOS_PIO_IN;
- power->direction = NIOS_PIO_OUT;
- atasel->direction = NIOS_PIO_OUT;
-
- /* Check for presence of card */
- if (present->data)
- return 1;
- printf ("Ok\n");
-
- /* Finish setup */
- power->data = 1; /* Turn on power FET */
- atasel->data = 0; /* Put in ATA mode */
-
- return 0;
-}
-#endif /* CONFIG_COMMANDS & CFG_CMD_IDE */
diff --git a/board/altera/dk1c20/flash.c b/board/altera/dk1c20/flash.c
deleted file mode 100644
index 1f344dd337..0000000000
--- a/board/altera/dk1c20/flash.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * (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 <common.h>
-#include <nios.h>
-
-/*
- * include common flash code (for altera boards)
- */
-#include "../common/flash.c"
-
-/*----------------------------------------------------------------------*/
-#define BANKSZ CFG_FLASH_SIZE
-#define SECTSZ (64 * 1024)
-#define USERFLASH (2 * 1024 * 1024) /* bottom 2 MB for user */
-
-/*----------------------------------------------------------------------*/
-unsigned long flash_init (void)
-{
- int i;
- unsigned long addr;
- flash_info_t *fli = &flash_info[0];
-
- fli->size = BANKSZ;
- fli->sector_count = CFG_MAX_FLASH_SECT;
- fli->flash_id = FLASH_MAN_AMD + FLASH_AMDLV065D;
-
- addr = CFG_FLASH_BASE;
- for (i = 0; i < fli->sector_count; ++i) {
- fli->start[i] = addr;
- addr += SECTSZ;
-
- /* Protect all but 2 MByte user area */
- if (addr < (CFG_FLASH_BASE + USERFLASH))
- fli->protect[i] = 0;
- else
- fli->protect[i] = 1;
- }
-
- return (BANKSZ);
-}
diff --git a/board/altera/dk1c20/misc.c b/board/altera/dk1c20/misc.c
deleted file mode 100644
index f25cdebd74..0000000000
--- a/board/altera/dk1c20/misc.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * (C) Copyright 2003, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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
- *
- * board/altera/dk1s10/misc.c
- *
- * miscellaneous board interfaces / drivers
- */
-
-#include <common.h>
-
-#if defined(CONFIG_SEVENSEG)
-#include "../common/sevenseg.h"
-#include "../common/sevenseg.c"
-#endif
diff --git a/board/altera/dk1c20/u-boot.lds b/board/altera/dk1c20/u-boot.lds
deleted file mode 100644
index 8b01f45e55..0000000000
--- a/board/altera/dk1c20/u-boot.lds
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * (C) Copyright 2003, Psyent Corporation <www.psyent.com>
- * Scott McNutt <smcnutt@psyent.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
- */
-
-
-OUTPUT_FORMAT("elf32-nios")
-OUTPUT_ARCH(nios)
-ENTRY(_start)
-
-SECTIONS
-{
- .text :
- {
- cpu/nios/start.o (.text)
- *(.text)
- }
- __text_end = .;
-
- . = ALIGN(4);
- .rodata :
- {
- *(.rodata)
- }
- __rodata_end = .;
-
- . = ALIGN(4);
- .data :
- {
- *(.data)
- }
- . = ALIGN(4);
- __data_end = .;
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd :
- {
- *(.u_boot_cmd)
- }
- . = ALIGN(4);
- __u_boot_cmd_end = .;
-
- __bss_start = .;
- . = ALIGN(4);
- .bss :
- {
- *(.bss)
- }
- . = ALIGN(4);
- __bss_end = .;
-}
diff --git a/board/altera/dk1c20/vectors.S b/board/altera/dk1c20/vectors.S
deleted file mode 100644
index c83c0e70e1..0000000000
--- a/board/altera/dk1c20/vectors.S
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * (C) Copyright 2003, Psyent Corporation <www.psyent.com>
- * Scott McNutt <smcnutt@psyent.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
- */
-
-
-/*************************************************************************
- * Exception Vector Table
- *
- * This could have gone in the cpu soure tree, but the whole point of
- * Nios is customization -- and polluting the cpu source tree with
- * board-specific ifdef's really defeats the purpose, no? With this in
- * the board-specific tree, each board has the freedom to organize
- * vectors/traps, etc anyway it wants. The init code copies this table
- * to the proper location.
- *
- * Each board can do what it likes here. But there are four "standard"
- * handlers availble:
- *
- * _cwp_lolimit -Handles register window underflows.
- * _cwp_hilimit -Handles register window overflows.
- * _timebase_int -Increments the timebase.
- * _brkpt_hw_int -Hardware breakpoint handler.
- * _brkpt_sw_int -Software breakpoint handler.
- * _def_xhandler -Default exception handler.
- *
- * _timebase_int handles a Nios Timer interrupt and increments the
- * timestamp used for the get_timer(), reset_timer(), etc. routines. It
- * expects the timer to be configured like the standard-32 low priority
- * timer.
- *
- * _def_xhandler dispatches exceptions/traps via the external_interrupt()
- * routine. This lets you use the irq_install_handler() and handle your
- * interrupts/traps with code written in C.
- ************************************************************************/
-
- .data
- .global _vectors
- .align 4
-_vectors:
-
- .long _def_xhandler@h /* Vector 0 - NMI */
- .long _cwp_lolimit@h /* Vector 1 - underflow */
- .long _cwp_hilimit@h /* Vector 2 - overflow */
- .long _brkpt_hw_int@h /* Vector 3 - Breakpoint */
- .long _brkpt_sw_int@h /* Vector 4 - Single step*/
- .long _def_xhandler@h /* Vector 5 - GNUPro debug */
- .long _def_xhandler@h /* Vector 6 - future reserved */
- .long _def_xhandler@h /* Vector 7 - future reserved */
- .long _def_xhandler@h /* Vector 8 - future reserved */
- .long _def_xhandler@h /* Vector 9 - future reserved */
- .long _def_xhandler@h /* Vector 10 - future reserved */
- .long _def_xhandler@h /* Vector 11 - future reserved */
- .long _def_xhandler@h /* Vector 12 - future reserved */
- .long _def_xhandler@h /* Vector 13 - future reserved */
- .long _def_xhandler@h /* Vector 14 - future reserved */
- .long _def_xhandler@h /* Vector 15 - future reserved */
- .long _def_xhandler@h /* Vector 16 */
- .long _def_xhandler@h /* Vector 17 */
- .long _def_xhandler@h /* Vector 18 */
- .long _def_xhandler@h /* Vector 19 */
- .long _def_xhandler@h /* Vector 20 */
- .long _def_xhandler@h /* Vector 21 */
- .long _def_xhandler@h /* Vector 22 */
- .long _def_xhandler@h /* Vector 23 */
- .long _def_xhandler@h /* Vector 24 */
- .long _def_xhandler@h /* Vector 25 */
- .long _def_xhandler@h /* Vector 26 */
- .long _def_xhandler@h /* Vector 27 */
- .long _def_xhandler@h /* Vector 28 */
- .long _def_xhandler@h /* Vector 29 */
- .long _def_xhandler@h /* Vector 30 */
- .long _def_xhandler@h /* Vector 31 */
- .long _def_xhandler@h /* Vector 32 */
- .long _def_xhandler@h /* Vector 33 */
- .long _def_xhandler@h /* Vector 34 */
- .long _def_xhandler@h /* Vector 35 */
- .long _def_xhandler@h /* Vector 36 */
- .long _def_xhandler@h /* Vector 37 */
- .long _def_xhandler@h /* Vector 38 */
- .long _def_xhandler@h /* Vector 39 */
- .long _def_xhandler@h /* Vector 40 */
- .long _def_xhandler@h /* Vector 41 */
- .long _def_xhandler@h /* Vector 42 */
- .long _def_xhandler@h /* Vector 43 */
- .long _def_xhandler@h /* Vector 44 */
- .long _def_xhandler@h /* Vector 45 */
- .long _def_xhandler@h /* Vector 46 */
- .long _def_xhandler@h /* Vector 47 */
- .long _def_xhandler@h /* Vector 48 */
- .long _def_xhandler@h /* Vector 49 */
- .long _timebase_int@h /* Vector 50 - lopri timer*/
- .long _def_xhandler@h /* Vector 51 */
- .long _def_xhandler@h /* Vector 52 */
- .long _def_xhandler@h /* Vector 53 */
- .long _def_xhandler@h /* Vector 54 */
- .long _def_xhandler@h /* Vector 55 */
- .long _def_xhandler@h /* Vector 56 */
- .long _def_xhandler@h /* Vector 57 */
- .long _def_xhandler@h /* Vector 58 */
- .long _def_xhandler@h /* Vector 59 */
- .long _def_xhandler@h /* Vector 60 */
- .long _def_xhandler@h /* Vector 61 */
- .long _def_xhandler@h /* Vector 62 */
- .long _def_xhandler@h /* Vector 63 */
diff --git a/board/altera/dk1s10/Makefile b/board/altera/dk1s10/Makefile
deleted file mode 100644
index 6af83890a8..0000000000
--- a/board/altera/dk1s10/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o misc.o
-SOBJS = vectors.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/altera/dk1s10/config.mk b/board/altera/dk1s10/config.mk
deleted file mode 100644
index d200715f5f..0000000000
--- a/board/altera/dk1s10/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2003
-# Psyent Corporation
-# Scott McNutt <smcnutt@psyent.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
-#
-
-TEXT_BASE = 0x018c0000
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
diff --git a/board/altera/dk1s10/dk1s10.c b/board/altera/dk1s10/dk1s10.c
deleted file mode 100644
index c45e7f15d7..0000000000
--- a/board/altera/dk1s10/dk1s10.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * (C) Copyright 2003, Psyent Corporation <www.psyent.com>
- * Scott McNutt <smcnutt@psyent.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
- */
-
-#include <common.h>
-#if defined(CONFIG_SEVENSEG)
-#include "../common/sevenseg.h"
-#endif
-
-void _default_hdlr (void)
-{
- printf ("default_hdlr\n");
-}
-
-int board_early_init_f (void)
-{
-#if defined(CONFIG_SEVENSEG)
- /* init seven segment led display and switch off */
- sevenseg_set(SEVENSEG_OFF);
-#endif
- return 0;
-}
-
-int checkboard (void)
-{
- puts ("Board: Altera Nios 1S10 Development Kit\n");
-#if defined(CONFIG_NIOS_SAFE_32)
- puts ("Conf.: Altera Safe 32 (safe_32)\n");
-#elif defined(CONFIG_NIOS_STANDARD_32)
- puts ("Conf.: Altera Standard 32 (standard_32)\n");
-#elif defined(CONFIG_NIOS_MTX_LDK_20)
- puts ("Conf.: Microtronix LDK 2.0 (LDK2)\n");
-#endif
-
- return 0;
-}
-
-long int initdram (int board_type)
-{
- return (0);
-}
diff --git a/board/altera/dk1s10/flash.c b/board/altera/dk1s10/flash.c
deleted file mode 100644
index 5c7093352e..0000000000
--- a/board/altera/dk1s10/flash.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 <common.h>
-#include <nios.h>
-
-/*
- * include common flash code (for altera boards)
- */
-#include "../common/flash.c"
-
-/*---------------------------------------------------------------------*/
-#define BANKSZ (8 * 1024 * 1024)
-#define SECTSZ (64 * 1024)
-#define USERFLASH (2 * 1024 * 1024) /* bottom 2 MB for user */
-
-/*---------------------------------------------------------------------*/
-unsigned long flash_init (void)
-{
- int i;
- unsigned long addr;
- flash_info_t *fli = &flash_info[0];
-
- fli->size = BANKSZ;
- fli->sector_count = CFG_MAX_FLASH_SECT;
- fli->flash_id = FLASH_MAN_AMD + FLASH_AMDLV065D;
-
- addr = CFG_FLASH_BASE;
- for (i = 0; i < fli->sector_count; ++i) {
- fli->start[i] = addr;
- addr += SECTSZ;
-
- /* Protect all but 2 MByte user area */
- if (addr < (CFG_FLASH_BASE + USERFLASH))
- fli->protect[i] = 0;
- else
- fli->protect[i] = 1;
- }
-
- return (BANKSZ);
-}
diff --git a/board/altera/dk1s10/misc.c b/board/altera/dk1s10/misc.c
deleted file mode 100644
index f25cdebd74..0000000000
--- a/board/altera/dk1s10/misc.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * (C) Copyright 2003, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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
- *
- * board/altera/dk1s10/misc.c
- *
- * miscellaneous board interfaces / drivers
- */
-
-#include <common.h>
-
-#if defined(CONFIG_SEVENSEG)
-#include "../common/sevenseg.h"
-#include "../common/sevenseg.c"
-#endif
diff --git a/board/altera/dk1s10/u-boot.lds b/board/altera/dk1s10/u-boot.lds
deleted file mode 100644
index 8b01f45e55..0000000000
--- a/board/altera/dk1s10/u-boot.lds
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * (C) Copyright 2003, Psyent Corporation <www.psyent.com>
- * Scott McNutt <smcnutt@psyent.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
- */
-
-
-OUTPUT_FORMAT("elf32-nios")
-OUTPUT_ARCH(nios)
-ENTRY(_start)
-
-SECTIONS
-{
- .text :
- {
- cpu/nios/start.o (.text)
- *(.text)
- }
- __text_end = .;
-
- . = ALIGN(4);
- .rodata :
- {
- *(.rodata)
- }
- __rodata_end = .;
-
- . = ALIGN(4);
- .data :
- {
- *(.data)
- }
- . = ALIGN(4);
- __data_end = .;
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd :
- {
- *(.u_boot_cmd)
- }
- . = ALIGN(4);
- __u_boot_cmd_end = .;
-
- __bss_start = .;
- . = ALIGN(4);
- .bss :
- {
- *(.bss)
- }
- . = ALIGN(4);
- __bss_end = .;
-}
diff --git a/board/altera/dk1s10/vectors.S b/board/altera/dk1s10/vectors.S
deleted file mode 100644
index 2f44875dcc..0000000000
--- a/board/altera/dk1s10/vectors.S
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * (C) Copyright 2003, Psyent Corporation <www.psyent.com>
- * Scott McNutt <smcnutt@psyent.com>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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 <config.h>
-
-
-/*************************************************************************
- * Exception Vector Table
- *
- * This could have gone in the cpu soure tree, but the whole point of
- * Nios is customization -- and polluting the cpu source tree with
- * board-specific ifdef's really defeats the purpose, no? With this in
- * the board-specific tree, each board has the freedom to organize
- * vectors/traps, etc anyway it wants. The init code copies this table
- * to the proper location.
- *
- * Each board can do what it likes here. But there are four "standard"
- * handlers availble:
- *
- * _cwp_lolimit -Handles register window underflows.
- * _cwp_hilimit -Handles register window overflows.
- * _timebase_int -Increments the timebase.
- * _def_xhandler -Default exception handler.
- *
- * _timebase_int handles a Nios Timer interrupt and increments the
- * timestamp used for the get_timer(), reset_timer(), etc. routines. It
- * expects the timer to be configured like the standard-32 low priority
- * timer.
- *
- * _def_xhandler dispatches exceptions/traps via the external_interrupt()
- * routine. This lets you use the irq_install_handler() and handle your
- * interrupts/traps with code written in C.
- ************************************************************************/
-
- .data
- .global _vectors
- .align 4
-_vectors:
-
-#if defined(CFG_NIOS_CPU_OCI_BASE)
- /* OCI does the reset job */
- .long _def_xhandler@h /* Vector 0 - NMI / Reset */
-#else
- /* there is no OCI, so we have to do a direct reset jump here */
- .long CFG_NIOS_CPU_RST_VECT /* Vector 0 - Reset to GERMS */
-#endif
- .long _cwp_lolimit@h /* Vector 1 - underflow */
- .long _cwp_hilimit@h /* Vector 2 - overflow */
-
- .long _def_xhandler@h /* Vector 3 - GNUPro debug */
- .long _def_xhandler@h /* Vector 4 - GNUPro debug */
- .long _def_xhandler@h /* Vector 5 - GNUPro debug */
- .long _def_xhandler@h /* Vector 6 - future reserved */
- .long _def_xhandler@h /* Vector 7 - future reserved */
- .long _def_xhandler@h /* Vector 8 - future reserved */
- .long _def_xhandler@h /* Vector 9 - future reserved */
- .long _def_xhandler@h /* Vector 10 - future reserved */
- .long _def_xhandler@h /* Vector 11 - future reserved */
- .long _def_xhandler@h /* Vector 12 - future reserved */
- .long _def_xhandler@h /* Vector 13 - future reserved */
- .long _def_xhandler@h /* Vector 14 - future reserved */
- .long _def_xhandler@h /* Vector 15 - future reserved */
-#if (CFG_NIOS_TMRIRQ == 16)
- .long _timebase_int@h /* Vector 16 - lopri timer*/
-#else
- .long _def_xhandler@h /* Vector 16 */
-#endif
- .long _def_xhandler@h /* Vector 17 */
- .long _def_xhandler@h /* Vector 18 */
- .long _def_xhandler@h /* Vector 19 */
- .long _def_xhandler@h /* Vector 20 */
- .long _def_xhandler@h /* Vector 21 */
- .long _def_xhandler@h /* Vector 22 */
- .long _def_xhandler@h /* Vector 23 */
- .long _def_xhandler@h /* Vector 24 */
- .long _def_xhandler@h /* Vector 25 */
- .long _def_xhandler@h /* Vector 26 */
- .long _def_xhandler@h /* Vector 27 */
- .long _def_xhandler@h /* Vector 28 */
- .long _def_xhandler@h /* Vector 29 */
- .long _def_xhandler@h /* Vector 30 */
- .long _def_xhandler@h /* Vector 31 */
- .long _def_xhandler@h /* Vector 32 */
- .long _def_xhandler@h /* Vector 33 */
- .long _def_xhandler@h /* Vector 34 */
- .long _def_xhandler@h /* Vector 35 */
- .long _def_xhandler@h /* Vector 36 */
- .long _def_xhandler@h /* Vector 37 */
- .long _def_xhandler@h /* Vector 38 */
- .long _def_xhandler@h /* Vector 39 */
- .long _def_xhandler@h /* Vector 40 */
- .long _def_xhandler@h /* Vector 41 */
- .long _def_xhandler@h /* Vector 42 */
- .long _def_xhandler@h /* Vector 43 */
- .long _def_xhandler@h /* Vector 44 */
- .long _def_xhandler@h /* Vector 45 */
- .long _def_xhandler@h /* Vector 46 */
- .long _def_xhandler@h /* Vector 47 */
- .long _def_xhandler@h /* Vector 48 */
- .long _def_xhandler@h /* Vector 49 */
-#if (CFG_NIOS_TMRIRQ == 50)
- .long _timebase_int@h /* Vector 50 - lopri timer*/
-#else
- .long _def_xhandler@h /* Vector 50 */
-#endif
- .long _def_xhandler@h /* Vector 51 */
- .long _def_xhandler@h /* Vector 52 */
- .long _def_xhandler@h /* Vector 53 */
- .long _def_xhandler@h /* Vector 54 */
- .long _def_xhandler@h /* Vector 55 */
- .long _def_xhandler@h /* Vector 56 */
- .long _def_xhandler@h /* Vector 57 */
- .long _def_xhandler@h /* Vector 58 */
- .long _def_xhandler@h /* Vector 59 */
- .long _def_xhandler@h /* Vector 60 */
- .long _def_xhandler@h /* Vector 61 */
- .long _def_xhandler@h /* Vector 62 */
- .long _def_xhandler@h /* Vector 63 */
diff --git a/board/amcc/bamboo/Makefile b/board/amcc/bamboo/Makefile
deleted file mode 100644
index 5da96e9e1c..0000000000
--- a/board/amcc/bamboo/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/amcc/bamboo/bamboo.c b/board/amcc/bamboo/bamboo.c
deleted file mode 100644
index c93ba6e3ca..0000000000
--- a/board/amcc/bamboo/bamboo.c
+++ /dev/null
@@ -1,2089 +0,0 @@
-/*
- * (C) Copyright 2005
- * Stefan Roese, DENX Software Engineering, sr@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 <common.h>
-#include <asm/processor.h>
-#include <spd_sdram.h>
-#include <ppc440.h>
-#include "bamboo.h"
-
-void ext_bus_cntlr_init(void);
-void configure_ppc440ep_pins(void);
-int is_nand_selected(void);
-
-unsigned char cfg_simulate_spd_eeprom[128];
-
-gpio_param_s gpio_tab[GPIO_GROUP_MAX][GPIO_MAX];
-#if 0
-{ /* GPIO Alternate1 Alternate2 Alternate3 */
- {
- /* GPIO Core 0 */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_0 -> EBC_ADDR(7) DMA_REQ(2) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_1 -> EBC_ADDR(6) DMA_ACK(2) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_2 -> EBC_ADDR(5) DMA_EOT/TC(2) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_3 -> EBC_ADDR(4) DMA_REQ(3) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_4 -> EBC_ADDR(3) DMA_ACK(3) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_5 ................. */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_6 -> EBC_CS_N(1) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_7 -> EBC_CS_N(2) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_8 -> EBC_CS_N(3) */
- { GPIO0_BASE, GPIO_DIS, GPIO_ALT1 }, /* GPIO0_9 -> EBC_CS_N(4) */
- { GPIO0_BASE, GPIO_OUT, GPIO_ALT1 }, /* GPIO0_10 -> EBC_CS_N(5) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_11 -> EBC_BUS_ERR */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_12 -> ZII_p0Rxd(0) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_13 -> ZII_p0Rxd(1) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_14 -> ZII_p0Rxd(2) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_15 -> ZII_p0Rxd(3) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_16 -> ZII_p0Txd(0) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_17 -> ZII_p0Txd(1) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_18 -> ZII_p0Txd(2) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_19 -> ZII_p0Txd(3) */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_20 -> ZII_p0Rx_er */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_21 -> ZII_p0Rx_dv */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_22 -> ZII_p0RxCrs */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_23 -> ZII_p0Tx_er */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_24 -> ZII_p0Tx_en */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_25 -> ZII_p0Col */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_26 -> USB2D_RXVALID */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_27 -> EXT_EBC_REQ USB2D_RXERROR */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_28 -> USB2D_TXVALID */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_29 -> EBC_EXT_HDLA USB2D_PAD_SUSPNDM */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_30 -> EBC_EXT_ACK USB2D_XCVRSELECT */
- { GPIO0_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO0_31 -> EBC_EXR_BUSREQ USB2D_TERMSELECT */
- },
- {
- /* GPIO Core 1 */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_0 -> USB2D_OPMODE0 */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_1 -> USB2D_OPMODE1 */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_2 -> UART0_DCD_N UART1_DSR_CTS_N UART2_SOUT */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_3 -> UART0_8PIN_DSR_N UART1_RTS_DTR_N UART2_SIN */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_4 -> UART0_8PIN_CTS_N UART3_SIN */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_5 -> UART0_RTS_N */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_6 -> UART0_DTR_N UART1_SOUT */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_7 -> UART0_RI_N UART1_SIN */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_8 -> UIC_IRQ(0) */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_9 -> UIC_IRQ(1) */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_10 -> UIC_IRQ(2) */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_11 -> UIC_IRQ(3) */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_12 -> UIC_IRQ(4) DMA_ACK(1) */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_13 -> UIC_IRQ(6) DMA_EOT/TC(1) */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_14 -> UIC_IRQ(7) DMA_REQ(0) */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_15 -> UIC_IRQ(8) DMA_ACK(0) */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_16 -> UIC_IRQ(9) DMA_EOT/TC(0) */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_17 -> - */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_18 -> | */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_19 -> | */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_20 -> | */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_21 -> | */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_22 -> | */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_23 -> \ Can be unselected thru TraceSelect Bit */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_24 -> / in PowerPC440EP Chip */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_25 -> | */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_26 -> | */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_27 -> | */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_28 -> | */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_29 -> | */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_30 -> | */
- { GPIO1_BASE, GPIO_DIS, GPIO_SEL }, /* GPIO1_31 -> - */
- }
-};
-#endif
-
-/*----------------------------------------------------------------------------+
- | EBC Devices Characteristics
- | Peripheral Bank Access Parameters - EBC0_BnAP
- | Peripheral Bank Configuration Register - EBC0_BnCR
- +----------------------------------------------------------------------------*/
-/* Small Flash */
-#define EBC0_BNAP_SMALL_FLASH \
- EBC0_BNAP_BME_DISABLED | \
- EBC0_BNAP_TWT_ENCODE(6) | \
- EBC0_BNAP_CSN_ENCODE(0) | \
- EBC0_BNAP_OEN_ENCODE(1) | \
- EBC0_BNAP_WBN_ENCODE(1) | \
- EBC0_BNAP_WBF_ENCODE(3) | \
- EBC0_BNAP_TH_ENCODE(1) | \
- EBC0_BNAP_RE_ENABLED | \
- EBC0_BNAP_SOR_DELAYED | \
- EBC0_BNAP_BEM_WRITEONLY | \
- EBC0_BNAP_PEN_DISABLED
-
-#define EBC0_BNCR_SMALL_FLASH_CS0 \
- EBC0_BNCR_BAS_ENCODE(0xFFF00000) | \
- EBC0_BNCR_BS_1MB | \
- EBC0_BNCR_BU_RW | \
- EBC0_BNCR_BW_8BIT
-
-#define EBC0_BNCR_SMALL_FLASH_CS4 \
- EBC0_BNCR_BAS_ENCODE(0x87F00000) | \
- EBC0_BNCR_BS_1MB | \
- EBC0_BNCR_BU_RW | \
- EBC0_BNCR_BW_8BIT
-
-/* Large Flash or SRAM */
-#define EBC0_BNAP_LARGE_FLASH_OR_SRAM \
- EBC0_BNAP_BME_DISABLED | \
- EBC0_BNAP_TWT_ENCODE(8) | \
- EBC0_BNAP_CSN_ENCODE(0) | \
- EBC0_BNAP_OEN_ENCODE(1) | \
- EBC0_BNAP_WBN_ENCODE(1) | \
- EBC0_BNAP_WBF_ENCODE(1) | \
- EBC0_BNAP_TH_ENCODE(2) | \
- EBC0_BNAP_SOR_DELAYED | \
- EBC0_BNAP_BEM_RW | \
- EBC0_BNAP_PEN_DISABLED
-
-#define EBC0_BNCR_LARGE_FLASH_OR_SRAM_CS0 \
- EBC0_BNCR_BAS_ENCODE(0xFF800000) | \
- EBC0_BNCR_BS_8MB | \
- EBC0_BNCR_BU_RW | \
- EBC0_BNCR_BW_16BIT
-
-
-#define EBC0_BNCR_LARGE_FLASH_OR_SRAM_CS4 \
- EBC0_BNCR_BAS_ENCODE(0x87800000) | \
- EBC0_BNCR_BS_8MB | \
- EBC0_BNCR_BU_RW | \
- EBC0_BNCR_BW_16BIT
-
-/* NVRAM - FPGA */
-#define EBC0_BNAP_NVRAM_FPGA \
- EBC0_BNAP_BME_DISABLED | \
- EBC0_BNAP_TWT_ENCODE(9) | \
- EBC0_BNAP_CSN_ENCODE(0) | \
- EBC0_BNAP_OEN_ENCODE(1) | \
- EBC0_BNAP_WBN_ENCODE(1) | \
- EBC0_BNAP_WBF_ENCODE(0) | \
- EBC0_BNAP_TH_ENCODE(2) | \
- EBC0_BNAP_RE_ENABLED | \
- EBC0_BNAP_SOR_DELAYED | \
- EBC0_BNAP_BEM_WRITEONLY | \
- EBC0_BNAP_PEN_DISABLED
-
-#define EBC0_BNCR_NVRAM_FPGA_CS5 \
- EBC0_BNCR_BAS_ENCODE(0x80000000) | \
- EBC0_BNCR_BS_1MB | \
- EBC0_BNCR_BU_RW | \
- EBC0_BNCR_BW_8BIT
-
-/* Nand Flash */
-#define EBC0_BNAP_NAND_FLASH \
- EBC0_BNAP_BME_DISABLED | \
- EBC0_BNAP_TWT_ENCODE(3) | \
- EBC0_BNAP_CSN_ENCODE(0) | \
- EBC0_BNAP_OEN_ENCODE(0) | \
- EBC0_BNAP_WBN_ENCODE(0) | \
- EBC0_BNAP_WBF_ENCODE(0) | \
- EBC0_BNAP_TH_ENCODE(1) | \
- EBC0_BNAP_RE_ENABLED | \
- EBC0_BNAP_SOR_NOT_DELAYED | \
- EBC0_BNAP_BEM_RW | \
- EBC0_BNAP_PEN_DISABLED
-
-
-#define EBC0_BNCR_NAND_FLASH_CS0 0xB8400000
-
-/* NAND0 */
-#define EBC0_BNCR_NAND_FLASH_CS1 \
- EBC0_BNCR_BAS_ENCODE(0x90000000) | \
- EBC0_BNCR_BS_1MB | \
- EBC0_BNCR_BU_RW | \
- EBC0_BNCR_BW_32BIT
-/* NAND1 - Bank2 */
-#define EBC0_BNCR_NAND_FLASH_CS2 \
- EBC0_BNCR_BAS_ENCODE(0x94000000) | \
- EBC0_BNCR_BS_1MB | \
- EBC0_BNCR_BU_RW | \
- EBC0_BNCR_BW_32BIT
-
-/* NAND1 - Bank3 */
-#define EBC0_BNCR_NAND_FLASH_CS3 \
- EBC0_BNCR_BAS_ENCODE(0x94000000) | \
- EBC0_BNCR_BS_1MB | \
- EBC0_BNCR_BU_RW | \
- EBC0_BNCR_BW_32BIT
-
-int board_early_init_f(void)
-{
- ext_bus_cntlr_init();
-
- /*--------------------------------------------------------------------
- * Setup the interrupt controller polarities, triggers, etc.
- *-------------------------------------------------------------------*/
- mtdcr(uic0sr, 0xffffffff); /* clear all */
- mtdcr(uic0er, 0x00000000); /* disable all */
- mtdcr(uic0cr, 0x00000009); /* ATI & UIC1 crit are critical */
- mtdcr(uic0pr, 0xfffffe13); /* per ref-board manual */
- mtdcr(uic0tr, 0x01c00008); /* per ref-board manual */
- mtdcr(uic0vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr(uic0sr, 0xffffffff); /* clear all */
-
- mtdcr(uic1sr, 0xffffffff); /* clear all */
- mtdcr(uic1er, 0x00000000); /* disable all */
- mtdcr(uic1cr, 0x00000000); /* all non-critical */
- mtdcr(uic1pr, 0xffffe0ff); /* per ref-board manual */
- mtdcr(uic1tr, 0x00ffc000); /* per ref-board manual */
- mtdcr(uic1vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr(uic1sr, 0xffffffff); /* clear all */
-
- /*--------------------------------------------------------------------
- * Setup the GPIO pins
- *-------------------------------------------------------------------*/
- out32(GPIO0_OSRL, 0x00000400);
- out32(GPIO0_OSRH, 0x00000000);
- out32(GPIO0_TSRL, 0x00000400);
- out32(GPIO0_TSRH, 0x00000000);
- out32(GPIO0_ISR1L, 0x00000000);
- out32(GPIO0_ISR1H, 0x00000000);
- out32(GPIO0_ISR2L, 0x00000000);
- out32(GPIO0_ISR2H, 0x00000000);
- out32(GPIO0_ISR3L, 0x00000000);
- out32(GPIO0_ISR3H, 0x00000000);
-
- out32(GPIO1_OSRL, 0x0C380000);
- out32(GPIO1_OSRH, 0x00000000);
- out32(GPIO1_TSRL, 0x0C380000);
- out32(GPIO1_TSRH, 0x00000000);
- out32(GPIO1_ISR1L, 0x0FC30000);
- out32(GPIO1_ISR1H, 0x00000000);
- out32(GPIO1_ISR2L, 0x0C010000);
- out32(GPIO1_ISR2H, 0x00000000);
- out32(GPIO1_ISR3L, 0x01400000);
- out32(GPIO1_ISR3H, 0x00000000);
-
- configure_ppc440ep_pins();
-
- return 0;
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand_legacy.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-/*----------------------------------------------------------------------------+
- | nand_reset.
- | Reset Nand flash
- | This routine will abort previous cmd
- +----------------------------------------------------------------------------*/
-int nand_reset(ulong addr)
-{
- int wait=0, stat=0;
-
- out8(addr + NAND_CMD_REG, NAND0_CMD_RESET);
- out8(addr + NAND_CMD_REG, NAND0_CMD_READ_STATUS);
-
- while ((stat != 0xc0) && (wait != 0xffff)) {
- stat = in8(addr + NAND_DATA_REG);
- wait++;
- }
-
- if (stat == 0xc0) {
- return 0;
- } else {
- printf("NAND Reset timeout.\n");
- return -1;
- }
-}
-
-void board_nand_set_device(int cs, ulong addr)
-{
- /* Set NandFlash Core Configuration Register */
- out32(addr + NAND_CCR_REG, 0x00001000 | (cs << 24));
-
- switch (cs) {
- case 1:
- /* -------
- * NAND0
- * -------
- * K9F1208U0A : 4 addr cyc, 1 col + 3 Row
- * Set NDF1CR - Enable External CS1 in NAND FLASH controller
- */
- out32(addr + NAND_CR1_REG, 0x80002222);
- break;
-
- case 2:
- /* -------
- * NAND1
- * -------
- * K9K2G0B : 5 addr cyc, 2 col + 3 Row
- * Set NDF2CR : Enable External CS2 in NAND FLASH controller
- */
- out32(addr + NAND_CR2_REG, 0xC0007777);
- break;
- }
-
- /* Perform Reset Command */
- if (nand_reset(addr) != 0)
- return;
-}
-
-void nand_init(void)
-{
- board_nand_set_device(1, CFG_NAND_ADDR);
-
- nand_probe(CFG_NAND_ADDR);
- if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
- print_size(nand_dev_desc[0].totlen, "\n");
- }
-
-#if 0 /* NAND1 not supported yet */
- board_nand_set_device(2, CFG_NAND2_ADDR);
-
- nand_probe(CFG_NAND2_ADDR);
- if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
- print_size(nand_dev_desc[0].totlen, "\n");
- }
-#endif
-}
-#endif /* (CONFIG_COMMANDS & CFG_CMD_NAND) */
-
-int checkboard(void)
-{
- char *s = getenv("serial#");
-
- printf("Board: Bamboo - AMCC PPC440EP Evaluation Board");
- if (s != NULL) {
- puts(", serial# ");
- puts(s);
- }
- putc('\n');
-
- return (0);
-}
-
-/*************************************************************************
- *
- * init_spd_array -- Bamboo has one bank onboard sdram (plus DIMM)
- *
- * Fixed memory is composed of :
- * MT46V16M16TG-75 from Micron (x 2), 256Mb, 16 M x16, DDR266,
- * 13 row add bits, 10 column add bits (but 12 row used only).
- * ECC device: MT46V16M8TG-75 from Micron (x 1), 128Mb, x8, DDR266,
- * 12 row add bits, 10 column add bits.
- * Prepare a subset (only the used ones) of SPD data
- *
- * Note : if the ECC is enabled (SDRAM_ECC_ENABLE) the size of
- * the corresponding bank is divided by 2 due to number of Row addresses
- * 12 in the ECC module
- *
- * Assumes: 64 MB, ECC, non-registered
- * PLB @ 133 MHz
- *
- ************************************************************************/
-static void init_spd_array(void)
-{
- cfg_simulate_spd_eeprom[8] = 0x04; /* 2.5 Volt */
- cfg_simulate_spd_eeprom[2] = 0x07; /* DDR ram */
-
-#ifdef CONFIG_DDR_ECC
- cfg_simulate_spd_eeprom[11] = 0x02; /* ECC ON : 02 OFF : 00 */
- cfg_simulate_spd_eeprom[31] = 0x08; /* bankSizeID: 32MB */
- cfg_simulate_spd_eeprom[3] = 0x0C; /* num Row Addr: 12 */
-#else
- cfg_simulate_spd_eeprom[11] = 0x00; /* ECC ON : 02 OFF : 00 */
- cfg_simulate_spd_eeprom[31] = 0x10; /* bankSizeID: 64MB */
- cfg_simulate_spd_eeprom[3] = 0x0D; /* num Row Addr: 13 */
-#endif
-
- cfg_simulate_spd_eeprom[4] = 0x09; /* numColAddr: 9 */
- cfg_simulate_spd_eeprom[5] = 0x01; /* numBanks: 1 */
- cfg_simulate_spd_eeprom[0] = 0x80; /* number of SPD bytes used: 128 */
- cfg_simulate_spd_eeprom[1] = 0x08; /* total number bytes in SPD device = 256 */
- cfg_simulate_spd_eeprom[21] = 0x00; /* not registered: 0 registered : 0x02*/
- cfg_simulate_spd_eeprom[6] = 0x20; /* Module data width: 32 bits */
- cfg_simulate_spd_eeprom[7] = 0x00; /* Module data width continued: +0 */
- cfg_simulate_spd_eeprom[15] = 0x01; /* wcsbc = 1 */
- cfg_simulate_spd_eeprom[27] = 0x50; /* tRpNs = 20 ns */
- cfg_simulate_spd_eeprom[29] = 0x50; /* tRcdNs = 20 ns */
-
- cfg_simulate_spd_eeprom[30] = 45; /* tRasNs */
-
- cfg_simulate_spd_eeprom[18] = 0x0C; /* casBit (2,2.5) */
-
- cfg_simulate_spd_eeprom[9] = 0x75; /* SDRAM Cycle Time (cas latency 2.5) = 7.5 ns */
- cfg_simulate_spd_eeprom[23] = 0xA0; /* SDRAM Cycle Time (cas latency 2) = 10 ns */
- cfg_simulate_spd_eeprom[25] = 0x00; /* SDRAM Cycle Time (cas latency 1.5) = N.A */
- cfg_simulate_spd_eeprom[12] = 0x82; /* refresh Rate Type: Normal (15.625us) + Self refresh */
-}
-
-long int initdram (int board_type)
-{
- long dram_size = 0;
-
- /*
- * First write simulated values in eeprom array for onboard bank 0
- */
- init_spd_array();
-
- dram_size = spd_sdram();
-
- return dram_size;
-}
-
-#if defined(CFG_DRAM_TEST)
-int testdram(void)
-{
- unsigned long *mem = (unsigned long *)0;
- const unsigned long kend = (1024 / sizeof(unsigned long));
- unsigned long k, n;
-
- mtmsr(0);
-
- for (k = 0; k < CFG_KBYTES_SDRAM;
- ++k, mem += (1024 / sizeof(unsigned long))) {
- if ((k & 1023) == 0) {
- printf("%3d MB\r", k / 1024);
- }
-
- memset(mem, 0xaaaaaaaa, 1024);
- for (n = 0; n < kend; ++n) {
- if (mem[n] != 0xaaaaaaaa) {
- printf("SDRAM test fails at: %08x\n",
- (uint) & mem[n]);
- return 1;
- }
- }
-
- memset(mem, 0x55555555, 1024);
- for (n = 0; n < kend; ++n) {
- if (mem[n] != 0x55555555) {
- printf("SDRAM test fails at: %08x\n",
- (uint) & mem[n]);
- return 1;
- }
- }
- }
- printf("SDRAM test passes\n");
- return 0;
-}
-#endif
-
-/*************************************************************************
- * pci_pre_init
- *
- * This routine is called just prior to registering the hose and gives
- * the board the opportunity to check things. Returning a value of zero
- * indicates that things are bad & PCI initialization should be aborted.
- *
- * Different boards may wish to customize the pci controller structure
- * (add regions, override default access routines, etc) or perform
- * certain pre-initialization actions.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
-int pci_pre_init(struct pci_controller *hose)
-{
- unsigned long addr;
-
- /*-------------------------------------------------------------------------+
- | Set priority for all PLB3 devices to 0.
- | Set PLB3 arbiter to fair mode.
- +-------------------------------------------------------------------------*/
- mfsdr(sdr_amp1, addr);
- mtsdr(sdr_amp1, (addr & 0x000000FF) | 0x0000FF00);
- addr = mfdcr(plb3_acr);
- mtdcr(plb3_acr, addr | 0x80000000);
-
- /*-------------------------------------------------------------------------+
- | Set priority for all PLB4 devices to 0.
- +-------------------------------------------------------------------------*/
- mfsdr(sdr_amp0, addr);
- mtsdr(sdr_amp0, (addr & 0x000000FF) | 0x0000FF00);
- addr = mfdcr(plb4_acr) | 0xa0000000; /* Was 0x8---- */
- mtdcr(plb4_acr, addr);
-
- /*-------------------------------------------------------------------------+
- | Set Nebula PLB4 arbiter to fair mode.
- +-------------------------------------------------------------------------*/
- /* Segment0 */
- addr = (mfdcr(plb0_acr) & ~plb0_acr_ppm_mask) | plb0_acr_ppm_fair;
- addr = (addr & ~plb0_acr_hbu_mask) | plb0_acr_hbu_enabled;
- addr = (addr & ~plb0_acr_rdp_mask) | plb0_acr_rdp_4deep;
- addr = (addr & ~plb0_acr_wrp_mask) | plb0_acr_wrp_2deep;
- mtdcr(plb0_acr, addr);
-
- /* Segment1 */
- addr = (mfdcr(plb1_acr) & ~plb1_acr_ppm_mask) | plb1_acr_ppm_fair;
- addr = (addr & ~plb1_acr_hbu_mask) | plb1_acr_hbu_enabled;
- addr = (addr & ~plb1_acr_rdp_mask) | plb1_acr_rdp_4deep;
- addr = (addr & ~plb1_acr_wrp_mask) | plb1_acr_wrp_2deep;
- mtdcr(plb1_acr, addr);
-
- return 1;
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT) */
-
-/*************************************************************************
- * pci_target_init
- *
- * The bootstrap configuration provides default settings for the pci
- * inbound map (PIM). But the bootstrap config choices are limited and
- * may not be sufficient for a given board.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT)
-void pci_target_init(struct pci_controller *hose)
-{
- /*--------------------------------------------------------------------------+
- * Set up Direct MMIO registers
- *--------------------------------------------------------------------------*/
- /*--------------------------------------------------------------------------+
- | PowerPC440 EP PCI Master configuration.
- | Map one 1Gig range of PLB/processor addresses to PCI memory space.
- | PLB address 0xA0000000-0xDFFFFFFF ==> PCI address 0xA0000000-0xDFFFFFFF
- | Use byte reversed out routines to handle endianess.
- | Make this region non-prefetchable.
- +--------------------------------------------------------------------------*/
- out32r(PCIX0_PMM0MA, 0x00000000); /* PMM0 Mask/Attribute - disabled b4 setting */
- out32r(PCIX0_PMM0LA, CFG_PCI_MEMBASE); /* PMM0 Local Address */
- out32r(PCIX0_PMM0PCILA, CFG_PCI_MEMBASE); /* PMM0 PCI Low Address */
- out32r(PCIX0_PMM0PCIHA, 0x00000000); /* PMM0 PCI High Address */
- out32r(PCIX0_PMM0MA, 0xE0000001); /* 512M + No prefetching, and enable region */
-
- out32r(PCIX0_PMM1MA, 0x00000000); /* PMM0 Mask/Attribute - disabled b4 setting */
- out32r(PCIX0_PMM1LA, CFG_PCI_MEMBASE2); /* PMM0 Local Address */
- out32r(PCIX0_PMM1PCILA, CFG_PCI_MEMBASE2); /* PMM0 PCI Low Address */
- out32r(PCIX0_PMM1PCIHA, 0x00000000); /* PMM0 PCI High Address */
- out32r(PCIX0_PMM1MA, 0xE0000001); /* 512M + No prefetching, and enable region */
-
- out32r(PCIX0_PTM1MS, 0x00000001); /* Memory Size/Attribute */
- out32r(PCIX0_PTM1LA, 0); /* Local Addr. Reg */
- out32r(PCIX0_PTM2MS, 0); /* Memory Size/Attribute */
- out32r(PCIX0_PTM2LA, 0); /* Local Addr. Reg */
-
- /*--------------------------------------------------------------------------+
- * Set up Configuration registers
- *--------------------------------------------------------------------------*/
-
- /* Program the board's subsystem id/vendor id */
- pci_write_config_word(0, PCI_SUBSYSTEM_VENDOR_ID,
- CFG_PCI_SUBSYS_VENDORID);
- pci_write_config_word(0, PCI_SUBSYSTEM_ID, CFG_PCI_SUBSYS_ID);
-
- /* Configure command register as bus master */
- pci_write_config_word(0, PCI_COMMAND, PCI_COMMAND_MASTER);
-
- /* 240nS PCI clock */
- pci_write_config_word(0, PCI_LATENCY_TIMER, 1);
-
- /* No error reporting */
- pci_write_config_word(0, PCI_ERREN, 0);
-
- pci_write_config_dword(0, PCI_BRDGOPT2, 0x00000101);
-
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT) */
-
-/*************************************************************************
- * pci_master_init
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_MASTER_INIT)
-void pci_master_init(struct pci_controller *hose)
-{
- unsigned short temp_short;
-
- /*--------------------------------------------------------------------------+
- | Write the PowerPC440 EP PCI Configuration regs.
- | Enable PowerPC440 EP to be a master on the PCI bus (PMM).
- | Enable PowerPC440 EP to act as a PCI memory target (PTM).
- +--------------------------------------------------------------------------*/
- pci_read_config_word(0, PCI_COMMAND, &temp_short);
- pci_write_config_word(0, PCI_COMMAND,
- temp_short | PCI_COMMAND_MASTER |
- PCI_COMMAND_MEMORY);
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_MASTER_INIT) */
-
-/*************************************************************************
- * is_pci_host
- *
- * This routine is called to determine if a pci scan should be
- * performed. With various hardware environments (especially cPCI and
- * PPMC) it's insufficient to depend on the state of the arbiter enable
- * bit in the strap register, or generic host/adapter assumptions.
- *
- * Rather than hard-code a bad assumption in the general 440 code, the
- * 440 pci code requires the board to decide at runtime.
- *
- * Return 0 for adapter mode, non-zero for host (monarch) mode.
- *
- *
- ************************************************************************/
-#if defined(CONFIG_PCI)
-int is_pci_host(struct pci_controller *hose)
-{
- /* Bamboo is always configured as host. */
- return (1);
-}
-#endif /* defined(CONFIG_PCI) */
-
-/*----------------------------------------------------------------------------+
- | is_powerpc440ep_pass1.
- +----------------------------------------------------------------------------*/
-int is_powerpc440ep_pass1(void)
-{
- unsigned long pvr;
-
- pvr = get_pvr();
-
- if (pvr == PVR_POWERPC_440EP_PASS1)
- return TRUE;
- else if (pvr == PVR_POWERPC_440EP_PASS2)
- return FALSE;
- else {
- printf("brdutil error 3\n");
- for (;;)
- ;
- }
-
- return(FALSE);
-}
-
-/*----------------------------------------------------------------------------+
- | is_nand_selected.
- +----------------------------------------------------------------------------*/
-int is_nand_selected(void)
-{
-#ifdef CONFIG_BAMBOO_NAND
- return TRUE;
-#else
- return FALSE;
-#endif
-}
-
-/*----------------------------------------------------------------------------+
- | config_on_ebc_cs4_is_small_flash => from EPLD
- +----------------------------------------------------------------------------*/
-unsigned char config_on_ebc_cs4_is_small_flash(void)
-{
- /* Not implemented yet => returns constant value */
- return TRUE;
-}
-
-/*----------------------------------------------------------------------------+
- | Ext_bus_cntlr_init.
- | Initialize the external bus controller
- +----------------------------------------------------------------------------*/
-void ext_bus_cntlr_init(void)
-{
- unsigned long sdr0_pstrp0, sdr0_sdstp1;
- unsigned long bootstrap_settings, boot_selection, ebc_boot_size;
- int computed_boot_device = BOOT_DEVICE_UNKNOWN;
- unsigned long ebc0_cs0_bnap_value = 0, ebc0_cs0_bncr_value = 0;
- unsigned long ebc0_cs1_bnap_value = 0, ebc0_cs1_bncr_value = 0;
- unsigned long ebc0_cs2_bnap_value = 0, ebc0_cs2_bncr_value = 0;
- unsigned long ebc0_cs3_bnap_value = 0, ebc0_cs3_bncr_value = 0;
- unsigned long ebc0_cs4_bnap_value = 0, ebc0_cs4_bncr_value = 0;
-
-
- /*-------------------------------------------------------------------------+
- |
- | PART 1 : Initialize EBC Bank 5
- | ==============================
- | Bank5 is always associated to the NVRAM/EPLD.
- | It has to be initialized prior to other banks settings computation since
- | some board registers values may be needed
- |
- +-------------------------------------------------------------------------*/
- /* NVRAM - FPGA */
- mtebc(pb5ap, EBC0_BNAP_NVRAM_FPGA);
- mtebc(pb5cr, EBC0_BNCR_NVRAM_FPGA_CS5);
-
- /*-------------------------------------------------------------------------+
- |
- | PART 2 : Determine which boot device was selected
- | =========================================
- |
- | Read Pin Strap Register in PPC440EP
- | In case of boot from IIC, read Serial Device Strap Register1
- |
- | Result can either be :
- | - Boot from EBC 8bits => SMALL FLASH
- | - Boot from EBC 16bits => Large Flash or SRAM
- | - Boot from NAND Flash
- | - Boot from PCI
- |
- +-------------------------------------------------------------------------*/
- /* Read Pin Strap Register in PPC440EP */
- mfsdr(sdr_pstrp0, sdr0_pstrp0);
- bootstrap_settings = sdr0_pstrp0 & SDR0_PSTRP0_BOOTSTRAP_MASK;
-
- /*-------------------------------------------------------------------------+
- | PPC440EP Pass1
- +-------------------------------------------------------------------------*/
- if (is_powerpc440ep_pass1() == TRUE) {
- switch(bootstrap_settings) {
- case SDR0_PSTRP0_BOOTSTRAP_SETTINGS0:
- /* Default Strap Settings 0 : CPU 400 - PLB 133 - Boot EBC 8 bit 33MHz */
- /* Boot from Small Flash */
- computed_boot_device = BOOT_FROM_SMALL_FLASH;
- break;
- case SDR0_PSTRP0_BOOTSTRAP_SETTINGS1:
- /* Default Strap Settings 1 : CPU 533 - PLB 133 - Boot PCI 66MHz */
- /* Boot from PCI */
- computed_boot_device = BOOT_FROM_PCI;
- break;
-
- case SDR0_PSTRP0_BOOTSTRAP_SETTINGS2:
- /* Default Strap Settings 2 : CPU 500 - PLB 100 - Boot NDFC16 66MHz */
- /* Boot from Nand Flash */
- computed_boot_device = BOOT_FROM_NAND_FLASH0;
- break;
-
- case SDR0_PSTRP0_BOOTSTRAP_SETTINGS3:
- /* Default Strap Settings 3 : CPU 333 - PLB 133 - Boot EBC 8 bit 66MHz */
- /* Boot from Small Flash */
- computed_boot_device = BOOT_FROM_SMALL_FLASH;
- break;
-
- case SDR0_PSTRP0_BOOTSTRAP_IIC_A8_EN:
- case SDR0_PSTRP0_BOOTSTRAP_IIC_A4_EN:
- /* Boot Settings in IIC EEprom address 0xA8 or 0xA4 */
- /* Read Serial Device Strap Register1 in PPC440EP */
- mfsdr(sdr_sdstp1, sdr0_sdstp1);
- boot_selection = sdr0_sdstp1 & SDR0_SDSTP1_BOOT_SEL_MASK;
- ebc_boot_size = sdr0_sdstp1 & SDR0_SDSTP1_EBC_ROM_BS_MASK;
-
- switch(boot_selection) {
- case SDR0_SDSTP1_BOOT_SEL_EBC:
- switch(ebc_boot_size) {
- case SDR0_SDSTP1_EBC_ROM_BS_16BIT:
- computed_boot_device = BOOT_FROM_LARGE_FLASH_OR_SRAM;
- break;
- case SDR0_SDSTP1_EBC_ROM_BS_8BIT:
- computed_boot_device = BOOT_FROM_SMALL_FLASH;
- break;
- }
- break;
-
- case SDR0_SDSTP1_BOOT_SEL_PCI:
- computed_boot_device = BOOT_FROM_PCI;
- break;
-
- case SDR0_SDSTP1_BOOT_SEL_NDFC:
- computed_boot_device = BOOT_FROM_NAND_FLASH0;
- break;
- }
- break;
- }
- }
-
- /*-------------------------------------------------------------------------+
- | PPC440EP Pass2
- +-------------------------------------------------------------------------*/
- else {
- switch(bootstrap_settings) {
- case SDR0_PSTRP0_BOOTSTRAP_SETTINGS0:
- /* Default Strap Settings 0 : CPU 400 - PLB 133 - Boot EBC 8 bit 33MHz */
- /* Boot from Small Flash */
- computed_boot_device = BOOT_FROM_SMALL_FLASH;
- break;
- case SDR0_PSTRP0_BOOTSTRAP_SETTINGS1:
- /* Default Strap Settings 1 : CPU 333 - PLB 133 - Boot PCI 66MHz */
- /* Boot from PCI */
- computed_boot_device = BOOT_FROM_PCI;
- break;
-
- case SDR0_PSTRP0_BOOTSTRAP_SETTINGS2:
- /* Default Strap Settings 2 : CPU 400 - PLB 100 - Boot NDFC16 33MHz */
- /* Boot from Nand Flash */
- computed_boot_device = BOOT_FROM_NAND_FLASH0;
- break;
-
- case SDR0_PSTRP0_BOOTSTRAP_SETTINGS3:
- /* Default Strap Settings 3 : CPU 400 - PLB 100 - Boot EBC 16 bit 33MHz */
- /* Boot from Large Flash or SRAM */
- computed_boot_device = BOOT_FROM_LARGE_FLASH_OR_SRAM;
- break;
-
- case SDR0_PSTRP0_BOOTSTRAP_SETTINGS4:
- /* Default Strap Settings 4 : CPU 333 - PLB 133 - Boot EBC 16 bit 66MHz */
- /* Boot from Large Flash or SRAM */
- computed_boot_device = BOOT_FROM_LARGE_FLASH_OR_SRAM;
- break;
-
- case SDR0_PSTRP0_BOOTSTRAP_SETTINGS6:
- /* Default Strap Settings 6 : CPU 400 - PLB 100 - Boot PCI 33MHz */
- /* Boot from PCI */
- computed_boot_device = BOOT_FROM_PCI;
- break;
-
- case SDR0_PSTRP0_BOOTSTRAP_IIC_A8_EN:
- case SDR0_PSTRP0_BOOTSTRAP_IIC_A4_EN:
- /* Default Strap Settings 5-7 */
- /* Boot Settings in IIC EEprom address 0xA8 or 0xA4 */
- /* Read Serial Device Strap Register1 in PPC440EP */
- mfsdr(sdr_sdstp1, sdr0_sdstp1);
- boot_selection = sdr0_sdstp1 & SDR0_SDSTP1_BOOT_SEL_MASK;
- ebc_boot_size = sdr0_sdstp1 & SDR0_SDSTP1_EBC_ROM_BS_MASK;
-
- switch(boot_selection) {
- case SDR0_SDSTP1_BOOT_SEL_EBC:
- switch(ebc_boot_size) {
- case SDR0_SDSTP1_EBC_ROM_BS_16BIT:
- computed_boot_device = BOOT_FROM_LARGE_FLASH_OR_SRAM;
- break;
- case SDR0_SDSTP1_EBC_ROM_BS_8BIT:
- computed_boot_device = BOOT_FROM_SMALL_FLASH;
- break;
- }
- break;
-
- case SDR0_SDSTP1_BOOT_SEL_PCI:
- computed_boot_device = BOOT_FROM_PCI;
- break;
-
- case SDR0_SDSTP1_BOOT_SEL_NDFC:
- computed_boot_device = BOOT_FROM_NAND_FLASH0;
- break;
- }
- break;
- }
- }
-
- /*-------------------------------------------------------------------------+
- |
- | PART 3 : Compute EBC settings depending on selected boot device
- | ====== ======================================================
- |
- | Resulting EBC init will be among following configurations :
- |
- | - Boot from EBC 8bits => boot from SMALL FLASH selected
- | EBC-CS0 = Small Flash
- | EBC-CS1,2,3 = NAND Flash or
- | Exp.Slot depending on Soft Config
- | EBC-CS4 = SRAM/Large Flash or
- | Large Flash/SRAM depending on jumpers
- | EBC-CS5 = NVRAM / EPLD
- |
- | - Boot from EBC 16bits => boot from Large Flash or SRAM selected
- | EBC-CS0 = SRAM/Large Flash or
- | Large Flash/SRAM depending on jumpers
- | EBC-CS1,2,3 = NAND Flash or
- | Exp.Slot depending on Software Configuration
- | EBC-CS4 = Small Flash
- | EBC-CS5 = NVRAM / EPLD
- |
- | - Boot from NAND Flash
- | EBC-CS0 = NAND Flash0
- | EBC-CS1,2,3 = NAND Flash1
- | EBC-CS4 = SRAM/Large Flash or
- | Large Flash/SRAM depending on jumpers
- | EBC-CS5 = NVRAM / EPLD
- |
- | - Boot from PCI
- | EBC-CS0 = ...
- | EBC-CS1,2,3 = NAND Flash or
- | Exp.Slot depending on Software Configuration
- | EBC-CS4 = SRAM/Large Flash or
- | Large Flash/SRAM or
- | Small Flash depending on jumpers
- | EBC-CS5 = NVRAM / EPLD
- |
- +-------------------------------------------------------------------------*/
-
- switch(computed_boot_device) {
- /*------------------------------------------------------------------------- */
- case BOOT_FROM_SMALL_FLASH:
- /*------------------------------------------------------------------------- */
- ebc0_cs0_bnap_value = EBC0_BNAP_SMALL_FLASH;
- ebc0_cs0_bncr_value = EBC0_BNCR_SMALL_FLASH_CS0;
- if ((is_nand_selected()) == TRUE) {
- /* NAND Flash */
- ebc0_cs1_bnap_value = EBC0_BNAP_NAND_FLASH;
- ebc0_cs1_bncr_value = EBC0_BNCR_NAND_FLASH_CS1;
- ebc0_cs2_bnap_value = EBC0_BNAP_NAND_FLASH;
- ebc0_cs2_bncr_value = EBC0_BNCR_NAND_FLASH_CS2;
- ebc0_cs3_bnap_value = 0;
- ebc0_cs3_bncr_value = 0;
- } else {
- /* Expansion Slot */
- ebc0_cs1_bnap_value = 0;
- ebc0_cs1_bncr_value = 0;
- ebc0_cs2_bnap_value = 0;
- ebc0_cs2_bncr_value = 0;
- ebc0_cs3_bnap_value = 0;
- ebc0_cs3_bncr_value = 0;
- }
- ebc0_cs4_bnap_value = EBC0_BNAP_LARGE_FLASH_OR_SRAM;
- ebc0_cs4_bncr_value = EBC0_BNCR_LARGE_FLASH_OR_SRAM_CS4;
-
- break;
-
- /*------------------------------------------------------------------------- */
- case BOOT_FROM_LARGE_FLASH_OR_SRAM:
- /*------------------------------------------------------------------------- */
- ebc0_cs0_bnap_value = EBC0_BNAP_LARGE_FLASH_OR_SRAM;
- ebc0_cs0_bncr_value = EBC0_BNCR_LARGE_FLASH_OR_SRAM_CS0;
- if ((is_nand_selected()) == TRUE) {
- /* NAND Flash */
- ebc0_cs1_bnap_value = EBC0_BNAP_NAND_FLASH;
- ebc0_cs1_bncr_value = EBC0_BNCR_NAND_FLASH_CS1;
- ebc0_cs2_bnap_value = 0;
- ebc0_cs2_bncr_value = 0;
- ebc0_cs3_bnap_value = 0;
- ebc0_cs3_bncr_value = 0;
- } else {
- /* Expansion Slot */
- ebc0_cs1_bnap_value = 0;
- ebc0_cs1_bncr_value = 0;
- ebc0_cs2_bnap_value = 0;
- ebc0_cs2_bncr_value = 0;
- ebc0_cs3_bnap_value = 0;
- ebc0_cs3_bncr_value = 0;
- }
- ebc0_cs4_bnap_value = EBC0_BNAP_SMALL_FLASH;
- ebc0_cs4_bncr_value = EBC0_BNCR_SMALL_FLASH_CS4;
-
- break;
-
- /*------------------------------------------------------------------------- */
- case BOOT_FROM_NAND_FLASH0:
- /*------------------------------------------------------------------------- */
- ebc0_cs0_bnap_value = 0;
- ebc0_cs0_bncr_value = 0;
-
- ebc0_cs1_bnap_value = EBC0_BNAP_NAND_FLASH;
- ebc0_cs1_bncr_value = EBC0_BNCR_NAND_FLASH_CS1;
- ebc0_cs2_bnap_value = 0;
- ebc0_cs2_bncr_value = 0;
- ebc0_cs3_bnap_value = 0;
- ebc0_cs3_bncr_value = 0;
-
- /* Large Flash or SRAM */
- ebc0_cs4_bnap_value = EBC0_BNAP_LARGE_FLASH_OR_SRAM;
- ebc0_cs4_bncr_value = EBC0_BNCR_LARGE_FLASH_OR_SRAM_CS4;
-
- break;
-
- /*------------------------------------------------------------------------- */
- case BOOT_FROM_PCI:
- /*------------------------------------------------------------------------- */
- ebc0_cs0_bnap_value = 0;
- ebc0_cs0_bncr_value = 0;
-
- if ((is_nand_selected()) == TRUE) {
- /* NAND Flash */
- ebc0_cs1_bnap_value = EBC0_BNAP_NAND_FLASH;
- ebc0_cs1_bncr_value = EBC0_BNCR_NAND_FLASH_CS1;
- ebc0_cs2_bnap_value = 0;
- ebc0_cs2_bncr_value = 0;
- ebc0_cs3_bnap_value = 0;
- ebc0_cs3_bncr_value = 0;
- } else {
- /* Expansion Slot */
- ebc0_cs1_bnap_value = 0;
- ebc0_cs1_bncr_value = 0;
- ebc0_cs2_bnap_value = 0;
- ebc0_cs2_bncr_value = 0;
- ebc0_cs3_bnap_value = 0;
- ebc0_cs3_bncr_value = 0;
- }
-
- if ((config_on_ebc_cs4_is_small_flash()) == TRUE) {
- /* Small Flash */
- ebc0_cs4_bnap_value = EBC0_BNAP_SMALL_FLASH;
- ebc0_cs4_bncr_value = EBC0_BNCR_SMALL_FLASH_CS4;
- } else {
- /* Large Flash or SRAM */
- ebc0_cs4_bnap_value = EBC0_BNAP_LARGE_FLASH_OR_SRAM;
- ebc0_cs4_bncr_value = EBC0_BNCR_LARGE_FLASH_OR_SRAM_CS4;
- }
-
- break;
-
- /*------------------------------------------------------------------------- */
- case BOOT_DEVICE_UNKNOWN:
- /*------------------------------------------------------------------------- */
- /* Error */
- break;
-
- }
-
-
- /*-------------------------------------------------------------------------+
- | Initialize EBC CONFIG
- +-------------------------------------------------------------------------*/
- mtdcr(ebccfga, xbcfg);
- mtdcr(ebccfgd, EBC0_CFG_EBTC_DRIVEN |
- EBC0_CFG_PTD_ENABLED |
- EBC0_CFG_RTC_2048PERCLK |
- EBC0_CFG_EMPL_LOW |
- EBC0_CFG_EMPH_LOW |
- EBC0_CFG_CSTC_DRIVEN |
- EBC0_CFG_BPF_ONEDW |
- EBC0_CFG_EMS_8BIT |
- EBC0_CFG_PME_DISABLED |
- EBC0_CFG_PMT_ENCODE(0) );
-
- /*-------------------------------------------------------------------------+
- | Initialize EBC Bank 0-4
- +-------------------------------------------------------------------------*/
- /* EBC Bank0 */
- mtebc(pb0ap, ebc0_cs0_bnap_value);
- mtebc(pb0cr, ebc0_cs0_bncr_value);
- /* EBC Bank1 */
- mtebc(pb1ap, ebc0_cs1_bnap_value);
- mtebc(pb1cr, ebc0_cs1_bncr_value);
- /* EBC Bank2 */
- mtebc(pb2ap, ebc0_cs2_bnap_value);
- mtebc(pb2cr, ebc0_cs2_bncr_value);
- /* EBC Bank3 */
- mtebc(pb3ap, ebc0_cs3_bnap_value);
- mtebc(pb3cr, ebc0_cs3_bncr_value);
- /* EBC Bank4 */
- mtebc(pb4ap, ebc0_cs4_bnap_value);
- mtebc(pb4cr, ebc0_cs4_bncr_value);
-
- return;
-}
-
-
-/*----------------------------------------------------------------------------+
- | get_uart_configuration.
- +----------------------------------------------------------------------------*/
-uart_config_nb_t get_uart_configuration(void)
-{
- return (L4);
-}
-
-/*----------------------------------------------------------------------------+
- | set_phy_configuration_through_fpga => to EPLD
- +----------------------------------------------------------------------------*/
-void set_phy_configuration_through_fpga(zmii_config_t config)
-{
-
- unsigned long fpga_selection_reg;
-
- fpga_selection_reg = in8(FPGA_SELECTION_1_REG) & ~FPGA_SEL_1_REG_PHY_MASK;
-
- switch(config)
- {
- case ZMII_CONFIGURATION_IS_MII:
- fpga_selection_reg = fpga_selection_reg | FPGA_SEL_1_REG_MII;
- break;
- case ZMII_CONFIGURATION_IS_RMII:
- fpga_selection_reg = fpga_selection_reg | FPGA_SEL_1_REG_RMII;
- break;
- case ZMII_CONFIGURATION_IS_SMII:
- fpga_selection_reg = fpga_selection_reg | FPGA_SEL_1_REG_SMII;
- break;
- case ZMII_CONFIGURATION_UNKNOWN:
- default:
- break;
- }
- out8(FPGA_SELECTION_1_REG,fpga_selection_reg);
-
-}
-
-/*----------------------------------------------------------------------------+
- | scp_selection_in_fpga.
- +----------------------------------------------------------------------------*/
-void scp_selection_in_fpga(void)
-{
- unsigned long fpga_selection_2_reg;
-
- fpga_selection_2_reg = in8(FPGA_SELECTION_2_REG) & ~FPGA_SEL2_REG_IIC1_SCP_SEL_MASK;
- fpga_selection_2_reg |= FPGA_SEL2_REG_SEL_SCP;
- out8(FPGA_SELECTION_2_REG,fpga_selection_2_reg);
-}
-
-/*----------------------------------------------------------------------------+
- | iic1_selection_in_fpga.
- +----------------------------------------------------------------------------*/
-void iic1_selection_in_fpga(void)
-{
- unsigned long fpga_selection_2_reg;
-
- fpga_selection_2_reg = in8(FPGA_SELECTION_2_REG) & ~FPGA_SEL2_REG_IIC1_SCP_SEL_MASK;
- fpga_selection_2_reg |= FPGA_SEL2_REG_SEL_IIC1;
- out8(FPGA_SELECTION_2_REG,fpga_selection_2_reg);
-}
-
-/*----------------------------------------------------------------------------+
- | dma_a_b_selection_in_fpga.
- +----------------------------------------------------------------------------*/
-void dma_a_b_selection_in_fpga(void)
-{
- unsigned long fpga_selection_2_reg;
-
- fpga_selection_2_reg = in8(FPGA_SELECTION_2_REG) | FPGA_SEL2_REG_SEL_DMA_A_B;
- out8(FPGA_SELECTION_2_REG,fpga_selection_2_reg);
-}
-
-/*----------------------------------------------------------------------------+
- | dma_a_b_unselect_in_fpga.
- +----------------------------------------------------------------------------*/
-void dma_a_b_unselect_in_fpga(void)
-{
- unsigned long fpga_selection_2_reg;
-
- fpga_selection_2_reg = in8(FPGA_SELECTION_2_REG) & ~FPGA_SEL2_REG_SEL_DMA_A_B;
- out8(FPGA_SELECTION_2_REG,fpga_selection_2_reg);
-}
-
-/*----------------------------------------------------------------------------+
- | dma_c_d_selection_in_fpga.
- +----------------------------------------------------------------------------*/
-void dma_c_d_selection_in_fpga(void)
-{
- unsigned long fpga_selection_2_reg;
-
- fpga_selection_2_reg = in8(FPGA_SELECTION_2_REG) | FPGA_SEL2_REG_SEL_DMA_C_D;
- out8(FPGA_SELECTION_2_REG,fpga_selection_2_reg);
-}
-
-/*----------------------------------------------------------------------------+
- | dma_c_d_unselect_in_fpga.
- +----------------------------------------------------------------------------*/
-void dma_c_d_unselect_in_fpga(void)
-{
- unsigned long fpga_selection_2_reg;
-
- fpga_selection_2_reg = in8(FPGA_SELECTION_2_REG) & ~FPGA_SEL2_REG_SEL_DMA_C_D;
- out8(FPGA_SELECTION_2_REG,fpga_selection_2_reg);
-}
-
-/*----------------------------------------------------------------------------+
- | usb2_device_selection_in_fpga.
- +----------------------------------------------------------------------------*/
-void usb2_device_selection_in_fpga(void)
-{
- unsigned long fpga_selection_1_reg;
-
- fpga_selection_1_reg = in8(FPGA_SELECTION_1_REG) | FPGA_SEL_1_REG_USB2_DEV_SEL;
- out8(FPGA_SELECTION_1_REG,fpga_selection_1_reg);
-}
-
-/*----------------------------------------------------------------------------+
- | usb2_device_reset_through_fpga.
- +----------------------------------------------------------------------------*/
-void usb2_device_reset_through_fpga(void)
-{
- /* Perform soft Reset pulse */
- unsigned long fpga_reset_reg;
- int i;
-
- fpga_reset_reg = in8(FPGA_RESET_REG);
- out8(FPGA_RESET_REG,fpga_reset_reg | FPGA_RESET_REG_RESET_USB20_DEV);
- for (i=0; i<500; i++)
- udelay(1000);
- out8(FPGA_RESET_REG,fpga_reset_reg);
-}
-
-/*----------------------------------------------------------------------------+
- | usb2_host_selection_in_fpga.
- +----------------------------------------------------------------------------*/
-void usb2_host_selection_in_fpga(void)
-{
- unsigned long fpga_selection_1_reg;
-
- fpga_selection_1_reg = in8(FPGA_SELECTION_1_REG) | FPGA_SEL_1_REG_USB2_HOST_SEL;
- out8(FPGA_SELECTION_1_REG,fpga_selection_1_reg);
-}
-
-/*----------------------------------------------------------------------------+
- | ndfc_selection_in_fpga.
- +----------------------------------------------------------------------------*/
-void ndfc_selection_in_fpga(void)
-{
- unsigned long fpga_selection_1_reg;
-
- fpga_selection_1_reg = in8(FPGA_SELECTION_1_REG) &~FPGA_SEL_1_REG_NF_SELEC_MASK;
- fpga_selection_1_reg |= FPGA_SEL_1_REG_NF0_SEL_BY_NFCS1;
- fpga_selection_1_reg |= FPGA_SEL_1_REG_NF1_SEL_BY_NFCS2;
- out8(FPGA_SELECTION_1_REG,fpga_selection_1_reg);
-}
-
-/*----------------------------------------------------------------------------+
- | uart_selection_in_fpga.
- +----------------------------------------------------------------------------*/
-void uart_selection_in_fpga(uart_config_nb_t uart_config)
-{
- /* FPGA register */
- unsigned char fpga_selection_3_reg;
-
- /* Read FPGA Reagister */
- fpga_selection_3_reg = in8(FPGA_SELECTION_3_REG);
-
- switch (uart_config)
- {
- case L1:
- /* ----------------------------------------------------------------------- */
- /* L1 configuration: UART0 = 8 pins */
- /* ----------------------------------------------------------------------- */
- /* Configure FPGA */
- fpga_selection_3_reg = fpga_selection_3_reg & ~FPGA_SEL3_REG_SEL_UART_CONFIG_MASK;
- fpga_selection_3_reg = fpga_selection_3_reg | FPGA_SEL3_REG_SEL_UART_CONFIG1;
- out8(FPGA_SELECTION_3_REG, fpga_selection_3_reg);
-
- break;
-
- case L2:
- /* ----------------------------------------------------------------------- */
- /* L2 configuration: UART0 = 4 pins */
- /* UART1 = 4 pins */
- /* ----------------------------------------------------------------------- */
- /* Configure FPGA */
- fpga_selection_3_reg = fpga_selection_3_reg & ~FPGA_SEL3_REG_SEL_UART_CONFIG_MASK;
- fpga_selection_3_reg = fpga_selection_3_reg | FPGA_SEL3_REG_SEL_UART_CONFIG2;
- out8(FPGA_SELECTION_3_REG, fpga_selection_3_reg);
-
- break;
-
- case L3:
- /* ----------------------------------------------------------------------- */
- /* L3 configuration: UART0 = 4 pins */
- /* UART1 = 2 pins */
- /* UART2 = 2 pins */
- /* ----------------------------------------------------------------------- */
- /* Configure FPGA */
- fpga_selection_3_reg = fpga_selection_3_reg & ~FPGA_SEL3_REG_SEL_UART_CONFIG_MASK;
- fpga_selection_3_reg = fpga_selection_3_reg | FPGA_SEL3_REG_SEL_UART_CONFIG3;
- out8(FPGA_SELECTION_3_REG, fpga_selection_3_reg);
- break;
-
- case L4:
- /* Configure FPGA */
- fpga_selection_3_reg = fpga_selection_3_reg & ~FPGA_SEL3_REG_SEL_UART_CONFIG_MASK;
- fpga_selection_3_reg = fpga_selection_3_reg | FPGA_SEL3_REG_SEL_UART_CONFIG4;
- out8(FPGA_SELECTION_3_REG, fpga_selection_3_reg);
-
- break;
-
- default:
- /* Unsupported UART configuration number */
- for (;;)
- ;
- break;
-
- }
-}
-
-
-/*----------------------------------------------------------------------------+
- | init_default_gpio
- +----------------------------------------------------------------------------*/
-void init_default_gpio(void)
-{
- int i;
-
- /* Init GPIO0 */
- for(i=0; i<GPIO_MAX; i++)
- {
- gpio_tab[GPIO0][i].add = GPIO0_BASE;
- gpio_tab[GPIO0][i].in_out = GPIO_DIS;
- gpio_tab[GPIO0][i].alt_nb = GPIO_SEL;
- }
-
- /* Init GPIO1 */
- for(i=0; i<GPIO_MAX; i++)
- {
- gpio_tab[GPIO1][i].add = GPIO1_BASE;
- gpio_tab[GPIO1][i].in_out = GPIO_DIS;
- gpio_tab[GPIO1][i].alt_nb = GPIO_SEL;
- }
-
- /* EBC_CS_N(5) - GPIO0_10 */
- gpio_tab[GPIO0][10].in_out = GPIO_OUT;
- gpio_tab[GPIO0][10].alt_nb = GPIO_ALT1;
-
- /* EBC_CS_N(4) - GPIO0_9 */
- gpio_tab[GPIO0][9].in_out = GPIO_OUT;
- gpio_tab[GPIO0][9].alt_nb = GPIO_ALT1;
-}
-
-/*----------------------------------------------------------------------------+
- | update_uart_ios
- +------------------------------------------------------------------------------
- |
- | Set UART Configuration in PowerPC440EP
- |
- | +---------------------------------------------------------------------+
- | | Configuartion | Connector | Nb of pins | Pins | Associated |
- | | Number | Port Name | available | naming | CORE |
- | +-----------------+---------------+------------+--------+-------------+
- | | L1 | Port_A | 8 | UART | UART core 0 |
- | +-----------------+---------------+------------+--------+-------------+
- | | L2 | Port_A | 4 | UART1 | UART core 0 |
- | | (L2D) | Port_B | 4 | UART2 | UART core 1 |
- | +-----------------+---------------+------------+--------+-------------+
- | | L3 | Port_A | 4 | UART1 | UART core 0 |
- | | (L3D) | Port_B | 2 | UART2 | UART core 1 |
- | | | Port_C | 2 | UART3 | UART core 2 |
- | +-----------------+---------------+------------+--------+-------------+
- | | | Port_A | 2 | UART1 | UART core 0 |
- | | L4 | Port_B | 2 | UART2 | UART core 1 |
- | | (L4D) | Port_C | 2 | UART3 | UART core 2 |
- | | | Port_D | 2 | UART4 | UART core 3 |
- | +-----------------+---------------+------------+--------+-------------+
- |
- | Involved GPIOs
- |
- | +------------------------------------------------------------------------------+
- | | GPIO | Aternate 1 | I/O | Alternate 2 | I/O | Alternate 3 | I/O |
- | +---------+------------------+-----+-----------------+-----+-------------+-----+
- | | GPIO1_2 | UART0_DCD_N | I | UART1_DSR_CTS_N | I | UART2_SOUT | O |
- | | GPIO1_3 | UART0_8PIN_DSR_N | I | UART1_RTS_DTR_N | O | UART2_SIN | I |
- | | GPIO1_4 | UART0_8PIN_CTS_N | I | NA | NA | UART3_SIN | I |
- | | GPIO1_5 | UART0_RTS_N | O | NA | NA | UART3_SOUT | O |
- | | GPIO1_6 | UART0_DTR_N | O | UART1_SOUT | O | NA | NA |
- | | GPIO1_7 | UART0_RI_N | I | UART1_SIN | I | NA | NA |
- | +------------------------------------------------------------------------------+
- |
- |
- +----------------------------------------------------------------------------*/
-
-void update_uart_ios(uart_config_nb_t uart_config)
-{
- switch (uart_config)
- {
- case L1:
- /* ----------------------------------------------------------------------- */
- /* L1 configuration: UART0 = 8 pins */
- /* ----------------------------------------------------------------------- */
- /* Update GPIO Configuration Table */
- gpio_tab[GPIO1][2].in_out = GPIO_IN;
- gpio_tab[GPIO1][2].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][3].in_out = GPIO_IN;
- gpio_tab[GPIO1][3].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][4].in_out = GPIO_IN;
- gpio_tab[GPIO1][4].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][5].in_out = GPIO_OUT;
- gpio_tab[GPIO1][5].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][6].in_out = GPIO_OUT;
- gpio_tab[GPIO1][6].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][7].in_out = GPIO_IN;
- gpio_tab[GPIO1][7].alt_nb = GPIO_ALT1;
-
- break;
-
- case L2:
- /* ----------------------------------------------------------------------- */
- /* L2 configuration: UART0 = 4 pins */
- /* UART1 = 4 pins */
- /* ----------------------------------------------------------------------- */
- /* Update GPIO Configuration Table */
- gpio_tab[GPIO1][2].in_out = GPIO_IN;
- gpio_tab[GPIO1][2].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO1][3].in_out = GPIO_OUT;
- gpio_tab[GPIO1][3].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO1][4].in_out = GPIO_IN;
- gpio_tab[GPIO1][4].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][5].in_out = GPIO_OUT;
- gpio_tab[GPIO1][5].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][6].in_out = GPIO_OUT;
- gpio_tab[GPIO1][6].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO1][7].in_out = GPIO_IN;
- gpio_tab[GPIO1][7].alt_nb = GPIO_ALT2;
-
- break;
-
- case L3:
- /* ----------------------------------------------------------------------- */
- /* L3 configuration: UART0 = 4 pins */
- /* UART1 = 2 pins */
- /* UART2 = 2 pins */
- /* ----------------------------------------------------------------------- */
- /* Update GPIO Configuration Table */
- gpio_tab[GPIO1][2].in_out = GPIO_OUT;
- gpio_tab[GPIO1][2].alt_nb = GPIO_ALT3;
-
- gpio_tab[GPIO1][3].in_out = GPIO_IN;
- gpio_tab[GPIO1][3].alt_nb = GPIO_ALT3;
-
- gpio_tab[GPIO1][4].in_out = GPIO_IN;
- gpio_tab[GPIO1][4].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][5].in_out = GPIO_OUT;
- gpio_tab[GPIO1][5].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][6].in_out = GPIO_OUT;
- gpio_tab[GPIO1][6].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO1][7].in_out = GPIO_IN;
- gpio_tab[GPIO1][7].alt_nb = GPIO_ALT2;
-
- break;
-
- case L4:
- /* ----------------------------------------------------------------------- */
- /* L4 configuration: UART0 = 2 pins */
- /* UART1 = 2 pins */
- /* UART2 = 2 pins */
- /* UART3 = 2 pins */
- /* ----------------------------------------------------------------------- */
- /* Update GPIO Configuration Table */
- gpio_tab[GPIO1][2].in_out = GPIO_OUT;
- gpio_tab[GPIO1][2].alt_nb = GPIO_ALT3;
-
- gpio_tab[GPIO1][3].in_out = GPIO_IN;
- gpio_tab[GPIO1][3].alt_nb = GPIO_ALT3;
-
- gpio_tab[GPIO1][4].in_out = GPIO_IN;
- gpio_tab[GPIO1][4].alt_nb = GPIO_ALT3;
-
- gpio_tab[GPIO1][5].in_out = GPIO_OUT;
- gpio_tab[GPIO1][5].alt_nb = GPIO_ALT3;
-
- gpio_tab[GPIO1][6].in_out = GPIO_OUT;
- gpio_tab[GPIO1][6].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO1][7].in_out = GPIO_IN;
- gpio_tab[GPIO1][7].alt_nb = GPIO_ALT2;
-
- break;
-
- default:
- /* Unsupported UART configuration number */
- printf("ERROR - Unsupported UART configuration number.\n\n");
- for (;;)
- ;
- break;
-
- }
-
- /* Set input Selection Register on Alt_Receive for UART Input Core */
- out32(GPIO1_IS1L, (in32(GPIO1_IS1L) | 0x0FC30000));
- out32(GPIO1_IS2L, (in32(GPIO1_IS2L) | 0x0C030000));
- out32(GPIO1_IS3L, (in32(GPIO1_IS3L) | 0x03C00000));
-}
-
-/*----------------------------------------------------------------------------+
- | update_ndfc_ios(void).
- +----------------------------------------------------------------------------*/
-void update_ndfc_ios(void)
-{
- /* Update GPIO Configuration Table */
- gpio_tab[GPIO0][6].in_out = GPIO_OUT; /* EBC_CS_N(1) */
- gpio_tab[GPIO0][6].alt_nb = GPIO_ALT1;
-
-#if 0
- gpio_tab[GPIO0][7].in_out = GPIO_OUT; /* EBC_CS_N(2) */
- gpio_tab[GPIO0][7].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][7].in_out = GPIO_OUT; /* EBC_CS_N(3) */
- gpio_tab[GPIO0][7].alt_nb = GPIO_ALT1;
-#endif
-}
-
-/*----------------------------------------------------------------------------+
- | update_zii_ios(void).
- +----------------------------------------------------------------------------*/
-void update_zii_ios(void)
-{
- /* Update GPIO Configuration Table */
- gpio_tab[GPIO0][12].in_out = GPIO_IN; /* ZII_p0Rxd(0) */
- gpio_tab[GPIO0][12].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][13].in_out = GPIO_IN; /* ZII_p0Rxd(1) */
- gpio_tab[GPIO0][13].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][14].in_out = GPIO_IN; /* ZII_p0Rxd(2) */
- gpio_tab[GPIO0][14].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][15].in_out = GPIO_IN; /* ZII_p0Rxd(3) */
- gpio_tab[GPIO0][15].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][16].in_out = GPIO_OUT; /* ZII_p0Txd(0) */
- gpio_tab[GPIO0][16].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][17].in_out = GPIO_OUT; /* ZII_p0Txd(1) */
- gpio_tab[GPIO0][17].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][18].in_out = GPIO_OUT; /* ZII_p0Txd(2) */
- gpio_tab[GPIO0][18].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][19].in_out = GPIO_OUT; /* ZII_p0Txd(3) */
- gpio_tab[GPIO0][19].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][20].in_out = GPIO_IN; /* ZII_p0Rx_er */
- gpio_tab[GPIO0][20].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][21].in_out = GPIO_IN; /* ZII_p0Rx_dv */
- gpio_tab[GPIO0][21].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][22].in_out = GPIO_IN; /* ZII_p0Crs */
- gpio_tab[GPIO0][22].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][23].in_out = GPIO_OUT; /* ZII_p0Tx_er */
- gpio_tab[GPIO0][23].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][24].in_out = GPIO_OUT; /* ZII_p0Tx_en */
- gpio_tab[GPIO0][24].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][25].in_out = GPIO_IN; /* ZII_p0Col */
- gpio_tab[GPIO0][25].alt_nb = GPIO_ALT1;
-
-}
-
-/*----------------------------------------------------------------------------+
- | update_uic_0_3_irq_ios().
- +----------------------------------------------------------------------------*/
-void update_uic_0_3_irq_ios(void)
-{
- gpio_tab[GPIO1][8].in_out = GPIO_IN; /* UIC_IRQ(0) */
- gpio_tab[GPIO1][8].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][9].in_out = GPIO_IN; /* UIC_IRQ(1) */
- gpio_tab[GPIO1][9].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][10].in_out = GPIO_IN; /* UIC_IRQ(2) */
- gpio_tab[GPIO1][10].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][11].in_out = GPIO_IN; /* UIC_IRQ(3) */
- gpio_tab[GPIO1][11].alt_nb = GPIO_ALT1;
-}
-
-/*----------------------------------------------------------------------------+
- | update_uic_4_9_irq_ios().
- +----------------------------------------------------------------------------*/
-void update_uic_4_9_irq_ios(void)
-{
- gpio_tab[GPIO1][12].in_out = GPIO_IN; /* UIC_IRQ(4) */
- gpio_tab[GPIO1][12].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][13].in_out = GPIO_IN; /* UIC_IRQ(6) */
- gpio_tab[GPIO1][13].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][14].in_out = GPIO_IN; /* UIC_IRQ(7) */
- gpio_tab[GPIO1][14].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][15].in_out = GPIO_IN; /* UIC_IRQ(8) */
- gpio_tab[GPIO1][15].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][16].in_out = GPIO_IN; /* UIC_IRQ(9) */
- gpio_tab[GPIO1][16].alt_nb = GPIO_ALT1;
-}
-
-/*----------------------------------------------------------------------------+
- | update_dma_a_b_ios().
- +----------------------------------------------------------------------------*/
-void update_dma_a_b_ios(void)
-{
- gpio_tab[GPIO1][12].in_out = GPIO_OUT; /* DMA_ACK(1) */
- gpio_tab[GPIO1][12].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO1][13].in_out = GPIO_BI; /* DMA_EOT/TC(1) */
- gpio_tab[GPIO1][13].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO1][14].in_out = GPIO_IN; /* DMA_REQ(0) */
- gpio_tab[GPIO1][14].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO1][15].in_out = GPIO_OUT; /* DMA_ACK(0) */
- gpio_tab[GPIO1][15].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO1][16].in_out = GPIO_BI; /* DMA_EOT/TC(0) */
- gpio_tab[GPIO1][16].alt_nb = GPIO_ALT2;
-}
-
-/*----------------------------------------------------------------------------+
- | update_dma_c_d_ios().
- +----------------------------------------------------------------------------*/
-void update_dma_c_d_ios(void)
-{
- gpio_tab[GPIO0][0].in_out = GPIO_IN; /* DMA_REQ(2) */
- gpio_tab[GPIO0][0].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO0][1].in_out = GPIO_OUT; /* DMA_ACK(2) */
- gpio_tab[GPIO0][1].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO0][2].in_out = GPIO_BI; /* DMA_EOT/TC(2) */
- gpio_tab[GPIO0][2].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO0][3].in_out = GPIO_IN; /* DMA_REQ(3) */
- gpio_tab[GPIO0][3].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO0][4].in_out = GPIO_OUT; /* DMA_ACK(3) */
- gpio_tab[GPIO0][4].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO0][5].in_out = GPIO_BI; /* DMA_EOT/TC(3) */
- gpio_tab[GPIO0][5].alt_nb = GPIO_ALT2;
-
-}
-
-/*----------------------------------------------------------------------------+
- | update_ebc_master_ios().
- +----------------------------------------------------------------------------*/
-void update_ebc_master_ios(void)
-{
- gpio_tab[GPIO0][27].in_out = GPIO_IN; /* EXT_EBC_REQ */
- gpio_tab[GPIO0][27].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][29].in_out = GPIO_OUT; /* EBC_EXT_HDLA */
- gpio_tab[GPIO0][29].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][30].in_out = GPIO_OUT; /* EBC_EXT_ACK */
- gpio_tab[GPIO0][30].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO0][31].in_out = GPIO_OUT; /* EBC_EXR_BUSREQ */
- gpio_tab[GPIO0][31].alt_nb = GPIO_ALT1;
-}
-
-/*----------------------------------------------------------------------------+
- | update_usb2_device_ios().
- +----------------------------------------------------------------------------*/
-void update_usb2_device_ios(void)
-{
- gpio_tab[GPIO0][26].in_out = GPIO_IN; /* USB2D_RXVALID */
- gpio_tab[GPIO0][26].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO0][27].in_out = GPIO_IN; /* USB2D_RXERROR */
- gpio_tab[GPIO0][27].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO0][28].in_out = GPIO_OUT; /* USB2D_TXVALID */
- gpio_tab[GPIO0][28].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO0][29].in_out = GPIO_OUT; /* USB2D_PAD_SUSPNDM */
- gpio_tab[GPIO0][29].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO0][30].in_out = GPIO_OUT; /* USB2D_XCVRSELECT */
- gpio_tab[GPIO0][30].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO0][31].in_out = GPIO_OUT; /* USB2D_TERMSELECT */
- gpio_tab[GPIO0][31].alt_nb = GPIO_ALT2;
-
- gpio_tab[GPIO1][0].in_out = GPIO_OUT; /* USB2D_OPMODE0 */
- gpio_tab[GPIO1][0].alt_nb = GPIO_ALT1;
-
- gpio_tab[GPIO1][1].in_out = GPIO_OUT; /* USB2D_OPMODE1 */
- gpio_tab[GPIO1][1].alt_nb = GPIO_ALT1;
-
-}
-
-/*----------------------------------------------------------------------------+
- | update_pci_patch_ios().
- +----------------------------------------------------------------------------*/
-void update_pci_patch_ios(void)
-{
- gpio_tab[GPIO0][29].in_out = GPIO_OUT; /* EBC_EXT_HDLA */
- gpio_tab[GPIO0][29].alt_nb = GPIO_ALT1;
-}
-
-/*----------------------------------------------------------------------------+
- | set_chip_gpio_configuration(unsigned char gpio_core)
- | Put the core impacted by clock modification and sharing in reset.
- | Config the select registers to resolve the sharing depending of the config.
- | Configure the GPIO registers.
- |
- +----------------------------------------------------------------------------*/
-void set_chip_gpio_configuration(unsigned char gpio_core)
-{
- unsigned char i=0, j=0, reg_offset = 0;
- unsigned long gpio_reg, gpio_core_add;
-
- /* GPIO config of the GPIOs 0 to 31 */
- for (i=0; i<GPIO_MAX; i++, j++)
- {
- if (i == GPIO_MAX/2)
- {
- reg_offset = 4;
- j = i-16;
- }
-
- gpio_core_add = gpio_tab[gpio_core][i].add;
-
- if ( (gpio_tab[gpio_core][i].in_out == GPIO_IN) ||
- (gpio_tab[gpio_core][i].in_out == GPIO_BI ))
- {
- switch (gpio_tab[gpio_core][i].alt_nb)
- {
- case GPIO_SEL:
- break;
-
- case GPIO_ALT1:
- gpio_reg = in32(GPIO_IS1(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));
- gpio_reg = gpio_reg | (GPIO_IN_SEL >> (j*2));
- out32(GPIO_IS1(gpio_core_add+reg_offset), gpio_reg);
- break;
-
- case GPIO_ALT2:
- gpio_reg = in32(GPIO_IS2(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));
- gpio_reg = gpio_reg | (GPIO_IN_SEL >> (j*2));
- out32(GPIO_IS2(gpio_core_add+reg_offset), gpio_reg);
- break;
-
- case GPIO_ALT3:
- gpio_reg = in32(GPIO_IS3(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));
- gpio_reg = gpio_reg | (GPIO_IN_SEL >> (j*2));
- out32(GPIO_IS3(gpio_core_add+reg_offset), gpio_reg);
- break;
- }
- }
- if ( (gpio_tab[gpio_core][i].in_out == GPIO_OUT) ||
- (gpio_tab[gpio_core][i].in_out == GPIO_BI ))
- {
-
- switch (gpio_tab[gpio_core][i].alt_nb)
- {
- case GPIO_SEL:
- break;
- case GPIO_ALT1:
- gpio_reg = in32(GPIO_OS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));
- gpio_reg = gpio_reg | (GPIO_ALT1_SEL >> (j*2));
- out32(GPIO_OS(gpio_core_add+reg_offset), gpio_reg);
- gpio_reg = in32(GPIO_TS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));
- gpio_reg = gpio_reg | (GPIO_ALT1_SEL >> (j*2));
- out32(GPIO_TS(gpio_core_add+reg_offset), gpio_reg);
- break;
- case GPIO_ALT2:
- gpio_reg = in32(GPIO_OS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));
- gpio_reg = gpio_reg | (GPIO_ALT2_SEL >> (j*2));
- out32(GPIO_OS(gpio_core_add+reg_offset), gpio_reg);
- gpio_reg = in32(GPIO_TS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));
- gpio_reg = gpio_reg | (GPIO_ALT2_SEL >> (j*2));
- out32(GPIO_TS(gpio_core_add+reg_offset), gpio_reg);
- break;
- case GPIO_ALT3:
- gpio_reg = in32(GPIO_OS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));
- gpio_reg = gpio_reg | (GPIO_ALT3_SEL >> (j*2));
- out32(GPIO_OS(gpio_core_add+reg_offset), gpio_reg);
- gpio_reg = in32(GPIO_TS(gpio_core_add+reg_offset)) & ~(GPIO_MASK >> (j*2));
- gpio_reg = gpio_reg | (GPIO_ALT3_SEL >> (j*2));
- out32(GPIO_TS(gpio_core_add+reg_offset), gpio_reg);
- break;
- }
- }
- }
-}
-
-/*----------------------------------------------------------------------------+
- | force_bup_core_selection.
- +----------------------------------------------------------------------------*/
-void force_bup_core_selection(core_selection_t *core_select_P, config_validity_t *config_val_P)
-{
- /* Pointer invalid */
- if (core_select_P == NULL)
- {
- printf("Configuration invalid pointer 1\n");
- for (;;)
- ;
- }
-
- /* L4 Selection */
- *(core_select_P+UART_CORE0) = CORE_SELECTED;
- *(core_select_P+UART_CORE1) = CORE_SELECTED;
- *(core_select_P+UART_CORE2) = CORE_SELECTED;
- *(core_select_P+UART_CORE3) = CORE_SELECTED;
-
- /* RMII Selection */
- *(core_select_P+RMII_SEL) = CORE_SELECTED;
-
- /* External Interrupt 0-9 selection */
- *(core_select_P+UIC_0_3) = CORE_SELECTED;
- *(core_select_P+UIC_4_9) = CORE_SELECTED;
-
- *(core_select_P+SCP_CORE) = CORE_SELECTED;
- *(core_select_P+DMA_CHANNEL_CD) = CORE_SELECTED;
- *(core_select_P+PACKET_REJ_FUNC_AVAIL) = CORE_SELECTED;
- *(core_select_P+USB1_DEVICE) = CORE_SELECTED;
-
- if (is_nand_selected()) {
- *(core_select_P+NAND_FLASH) = CORE_SELECTED;
- }
-
- *config_val_P = CONFIG_IS_VALID;
-
-}
-
-/*----------------------------------------------------------------------------+
- | configure_ppc440ep_pins.
- +----------------------------------------------------------------------------*/
-void configure_ppc440ep_pins(void)
-{
- uart_config_nb_t uart_configuration;
- config_validity_t config_val = CONFIG_IS_INVALID;
-
- /* Create Core Selection Table */
- core_selection_t ppc440ep_core_selection[MAX_CORE_SELECT_NB] =
- {
- CORE_NOT_SELECTED, /* IIC_CORE, */
- CORE_NOT_SELECTED, /* SPC_CORE, */
- CORE_NOT_SELECTED, /* DMA_CHANNEL_AB, */
- CORE_NOT_SELECTED, /* UIC_4_9, */
- CORE_NOT_SELECTED, /* USB2_HOST, */
- CORE_NOT_SELECTED, /* DMA_CHANNEL_CD, */
- CORE_NOT_SELECTED, /* USB2_DEVICE, */
- CORE_NOT_SELECTED, /* PACKET_REJ_FUNC_AVAIL, */
- CORE_NOT_SELECTED, /* USB1_DEVICE, */
- CORE_NOT_SELECTED, /* EBC_MASTER, */
- CORE_NOT_SELECTED, /* NAND_FLASH, */
- CORE_NOT_SELECTED, /* UART_CORE0, */
- CORE_NOT_SELECTED, /* UART_CORE1, */
- CORE_NOT_SELECTED, /* UART_CORE2, */
- CORE_NOT_SELECTED, /* UART_CORE3, */
- CORE_NOT_SELECTED, /* MII_SEL, */
- CORE_NOT_SELECTED, /* RMII_SEL, */
- CORE_NOT_SELECTED, /* SMII_SEL, */
- CORE_NOT_SELECTED, /* PACKET_REJ_FUNC_EN */
- CORE_NOT_SELECTED, /* UIC_0_3 */
- CORE_NOT_SELECTED, /* USB1_HOST */
- CORE_NOT_SELECTED /* PCI_PATCH */
- };
-
-
- /* Table Default Initialisation + FPGA Access */
- init_default_gpio();
- set_chip_gpio_configuration(GPIO0);
- set_chip_gpio_configuration(GPIO1);
-
- /* Update Table */
- force_bup_core_selection(ppc440ep_core_selection, &config_val);
-#if 0 /* test-only */
- /* If we are running PIBS 1, force known configuration */
- update_core_selection_table(ppc440ep_core_selection, &config_val);
-#endif
-
- /*----------------------------------------------------------------------------+
- | SDR + ios table update + fpga initialization
- +----------------------------------------------------------------------------*/
- unsigned long sdr0_pfc1 = 0;
- unsigned long sdr0_usb0 = 0;
- unsigned long sdr0_mfr = 0;
-
- /* PCI Always selected */
-
- /* I2C Selection */
- if (ppc440ep_core_selection[IIC_CORE] == CORE_SELECTED)
- {
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_SIS_MASK) | SDR0_PFC1_SIS_IIC1_SEL;
- iic1_selection_in_fpga();
- }
-
- /* SCP Selection */
- if (ppc440ep_core_selection[SCP_CORE] == CORE_SELECTED)
- {
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_SIS_MASK) | SDR0_PFC1_SIS_SCP_SEL;
- scp_selection_in_fpga();
- }
-
- /* UIC 0:3 Selection */
- if (ppc440ep_core_selection[UIC_0_3] == CORE_SELECTED)
- {
- update_uic_0_3_irq_ios();
- dma_a_b_unselect_in_fpga();
- }
-
- /* UIC 4:9 Selection */
- if (ppc440ep_core_selection[UIC_4_9] == CORE_SELECTED)
- {
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_DIS_MASK) | SDR0_PFC1_DIS_UICIRQ5_SEL;
- update_uic_4_9_irq_ios();
- }
-
- /* DMA AB Selection */
- if (ppc440ep_core_selection[DMA_CHANNEL_AB] == CORE_SELECTED)
- {
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_DIS_MASK) | SDR0_PFC1_DIS_DMAR_SEL;
- update_dma_a_b_ios();
- dma_a_b_selection_in_fpga();
- }
-
- /* DMA CD Selection */
- if (ppc440ep_core_selection[DMA_CHANNEL_CD] == CORE_SELECTED)
- {
- update_dma_c_d_ios();
- dma_c_d_selection_in_fpga();
- }
-
- /* EBC Master Selection */
- if (ppc440ep_core_selection[EBC_MASTER] == CORE_SELECTED)
- {
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_ERE_MASK) | SDR0_PFC1_ERE_EXTR_SEL;
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_UES_MASK) | SDR0_PFC1_UES_EBCHR_SEL;
- update_ebc_master_ios();
- }
-
- /* PCI Patch Enable */
- if (ppc440ep_core_selection[PCI_PATCH] == CORE_SELECTED)
- {
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_UES_MASK) | SDR0_PFC1_UES_EBCHR_SEL;
- update_pci_patch_ios();
- }
-
- /* USB2 Host Selection - Not Implemented in PowerPC 440EP Pass1 */
- if (ppc440ep_core_selection[USB2_HOST] == CORE_SELECTED)
- {
- /* Not Implemented in PowerPC 440EP Pass1-Pass2 */
- printf("Invalid configuration => USB2 Host selected\n");
- for (;;)
- ;
- /*usb2_host_selection_in_fpga(); */
- }
-
- /* USB2.0 Device Selection */
- if (ppc440ep_core_selection[USB2_DEVICE] == CORE_SELECTED)
- {
- update_usb2_device_ios();
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_UES_MASK) | SDR0_PFC1_UES_USB2D_SEL;
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_UPR_MASK) | SDR0_PFC1_UPR_DISABLE;
-
- mfsdr(sdr_usb0, sdr0_usb0);
- sdr0_usb0 = sdr0_usb0 &~SDR0_USB0_USB_DEVSEL_MASK;
- sdr0_usb0 = sdr0_usb0 | SDR0_USB0_USB20D_DEVSEL;
- mtsdr(sdr_usb0, sdr0_usb0);
-
- usb2_device_selection_in_fpga();
- }
-
- /* USB1.1 Device Selection */
- if (ppc440ep_core_selection[USB1_DEVICE] == CORE_SELECTED)
- {
- mfsdr(sdr_usb0, sdr0_usb0);
- sdr0_usb0 = sdr0_usb0 &~SDR0_USB0_USB_DEVSEL_MASK;
- sdr0_usb0 = sdr0_usb0 | SDR0_USB0_USB11D_DEVSEL;
- mtsdr(sdr_usb0, sdr0_usb0);
- }
-
- /* USB1.1 Host Selection */
- if (ppc440ep_core_selection[USB1_HOST] == CORE_SELECTED)
- {
- mfsdr(sdr_usb0, sdr0_usb0);
- sdr0_usb0 = sdr0_usb0 &~SDR0_USB0_LEEN_MASK;
- sdr0_usb0 = sdr0_usb0 | SDR0_USB0_LEEN_ENABLE;
- mtsdr(sdr_usb0, sdr0_usb0);
- }
-
- /* NAND Flash Selection */
- if (ppc440ep_core_selection[NAND_FLASH] == CORE_SELECTED)
- {
- update_ndfc_ios();
-
- mtsdr(sdr_cust0, SDR0_CUST0_MUX_NDFC_SEL |
- SDR0_CUST0_NDFC_ENABLE |
- SDR0_CUST0_NDFC_BW_8_BIT |
- SDR0_CUST0_NDFC_ARE_MASK |
- SDR0_CUST0_CHIPSELGAT_EN1 |
- SDR0_CUST0_CHIPSELGAT_EN2);
-
- ndfc_selection_in_fpga();
- }
- else
- {
- /* Set Mux on EMAC */
- mtsdr(sdr_cust0, SDR0_CUST0_MUX_EMAC_SEL);
- }
-
- /* MII Selection */
- if (ppc440ep_core_selection[MII_SEL] == CORE_SELECTED)
- {
- update_zii_ios();
- mfsdr(sdr_mfr, sdr0_mfr);
- sdr0_mfr = (sdr0_mfr & ~SDR0_MFR_ZMII_MODE_MASK) | SDR0_MFR_ZMII_MODE_MII;
- mtsdr(sdr_mfr, sdr0_mfr);
-
- set_phy_configuration_through_fpga(ZMII_CONFIGURATION_IS_MII);
- }
-
- /* RMII Selection */
- if (ppc440ep_core_selection[RMII_SEL] == CORE_SELECTED)
- {
- update_zii_ios();
- mfsdr(sdr_mfr, sdr0_mfr);
- sdr0_mfr = (sdr0_mfr & ~SDR0_MFR_ZMII_MODE_MASK) | SDR0_MFR_ZMII_MODE_RMII_10M;
- mtsdr(sdr_mfr, sdr0_mfr);
-
- set_phy_configuration_through_fpga(ZMII_CONFIGURATION_IS_RMII);
- }
-
- /* SMII Selection */
- if (ppc440ep_core_selection[SMII_SEL] == CORE_SELECTED)
- {
- update_zii_ios();
- mfsdr(sdr_mfr, sdr0_mfr);
- sdr0_mfr = (sdr0_mfr & ~SDR0_MFR_ZMII_MODE_MASK) | SDR0_MFR_ZMII_MODE_SMII;
- mtsdr(sdr_mfr, sdr0_mfr);
-
- set_phy_configuration_through_fpga(ZMII_CONFIGURATION_IS_SMII);
- }
-
- /* UART Selection */
- uart_configuration = get_uart_configuration();
- switch (uart_configuration)
- {
- case L1: /* L1 Selection */
- /* UART0 8 pins Only */
- /*sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U0ME_MASK) | SDR0_PFC1_U0ME_DSR_DTR; */
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U0ME_MASK) |SDR0_PFC1_U0ME_CTS_RTS; /* Chip Pb */
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U0IM_MASK) | SDR0_PFC1_U0IM_8PINS;
- break;
- case L2: /* L2 Selection */
- /* UART0 and UART1 4 pins */
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U0ME_MASK) | SDR0_PFC1_U1ME_DSR_DTR;
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U0IM_MASK) | SDR0_PFC1_U0IM_4PINS;
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U1ME_MASK) | SDR0_PFC1_U1ME_DSR_DTR;
- break;
- case L3: /* L3 Selection */
- /* UART0 4 pins, UART1 and UART2 2 pins */
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U0ME_MASK) | SDR0_PFC1_U1ME_DSR_DTR;
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U0IM_MASK) | SDR0_PFC1_U0IM_4PINS;
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U1ME_MASK) | SDR0_PFC1_U1ME_DSR_DTR;
- break;
- case L4: /* L4 Selection */
- /* UART0, UART1, UART2 and UART3 2 pins */
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U0ME_MASK) | SDR0_PFC1_U0ME_DSR_DTR;
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U0IM_MASK) | SDR0_PFC1_U0IM_4PINS;
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_U1ME_MASK) | SDR0_PFC1_U1ME_DSR_DTR;
- break;
- }
- update_uart_ios(uart_configuration);
-
- /* UART Selection in all cases */
- uart_selection_in_fpga(uart_configuration);
-
- /* Packet Reject Function Available */
- if (ppc440ep_core_selection[PACKET_REJ_FUNC_AVAIL] == CORE_SELECTED)
- {
- /* Set UPR Bit in SDR0_PFC1 Register */
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_UPR_MASK) | SDR0_PFC1_UPR_ENABLE;
- }
-
- /* Packet Reject Function Enable */
- if (ppc440ep_core_selection[PACKET_REJ_FUNC_EN] == CORE_SELECTED)
- {
- mfsdr(sdr_mfr, sdr0_mfr);
- sdr0_mfr = (sdr0_mfr & ~SDR0_MFR_PKT_REJ_MASK) | SDR0_MFR_PKT_REJ_EN;;
- mtsdr(sdr_mfr, sdr0_mfr);
- }
-
- /* Perform effective access to hardware */
- mtsdr(sdr_pfc1, sdr0_pfc1);
- set_chip_gpio_configuration(GPIO0);
- set_chip_gpio_configuration(GPIO1);
-
- /* USB2.0 Device Reset must be done after GPIO setting */
- if (ppc440ep_core_selection[USB2_DEVICE] == CORE_SELECTED)
- usb2_device_reset_through_fpga();
-
-}
diff --git a/board/amcc/bamboo/bamboo.h b/board/amcc/bamboo/bamboo.h
deleted file mode 100644
index 1ce6366da4..0000000000
--- a/board/amcc/bamboo/bamboo.h
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
- * (C) Copyright 2005
- * Stefan Roese, DENX Software Engineering, sr@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
- */
-
-/*----------------------------------------------------------------------------+
- | FPGA registers and bit definitions
- +----------------------------------------------------------------------------*/
-/*
- * PowerPC 440EP Board FPGA is reached with physical address 0x80001FF0.
- * TLB initialization makes it correspond to logical address 0x80001FF0.
- * => Done init_chip.s in bootlib
- */
-#define FPGA_BASE_ADDR 0x80002000
-
-/*----------------------------------------------------------------------------+
- | Board Jumpers Setting Register
- | Board Settings provided by jumpers
- +----------------------------------------------------------------------------*/
-#define FPGA_SETTING_REG (FPGA_BASE_ADDR+0x3)
-/* Boot from small flash */
-#define FPGA_SET_REG_BOOT_SMALL_FLASH 0x80
-/* Operational Flash versus SRAM position in Memory Map */
-#define FPGA_SET_REG_OP_CODE_SRAM_SEL_MASK 0x40
-#define FPGA_SET_REG_OP_CODE_FLASH_ABOVE 0x40
-#define FPGA_SET_REG_SRAM_ABOVE 0x00
-/* Boot From NAND Flash */
-#define FPGA_SET_REG_BOOT_NAND_FLASH_MASK 0x40
-#define FPGA_SET_REG_BOOT_NAND_FLASH_SELECT 0x00
-/* On Board PCI Arbiter Select */
-#define FPGA_SET_REG_PCI_EXT_ARBITER_SEL_MASK 0x10
-#define FPGA_SET_REG_PCI_EXT_ARBITER_SEL 0x00
-
-/*----------------------------------------------------------------------------+
- | Functions Selection Register 1
- +----------------------------------------------------------------------------*/
-#define FPGA_SELECTION_1_REG (FPGA_BASE_ADDR+0x4)
-#define FPGA_SEL_1_REG_PHY_MASK 0xE0
-#define FPGA_SEL_1_REG_MII 0x80
-#define FPGA_SEL_1_REG_RMII 0x40
-#define FPGA_SEL_1_REG_SMII 0x20
-#define FPGA_SEL_1_REG_USB2_DEV_SEL 0x10 /* USB2 Device Selection */
-#define FPGA_SEL_1_REG_USB2_HOST_SEL 0x08 /* USB2 Host Selection */
-#define FPGA_SEL_1_REG_NF_SELEC_MASK 0x07 /* NF Selection Mask */
-#define FPGA_SEL_1_REG_NF0_SEL_BY_NFCS1 0x04 /* NF0 Selected by NF_CS1 */
-#define FPGA_SEL_1_REG_NF1_SEL_BY_NFCS2 0x02 /* NF1 Selected by NF_CS2 */
-#define FPGA_SEL_1_REG_NF1_SEL_BY_NFCS3 0x01 /* NF1 Selected by NF_CS3 */
-
-/*----------------------------------------------------------------------------+
- | Functions Selection Register 2
- +----------------------------------------------------------------------------*/
-#define FPGA_SELECTION_2_REG (FPGA_BASE_ADDR+0x5)
-#define FPGA_SEL2_REG_IIC1_SCP_SEL_MASK 0x80 /* IIC1 / SCP Selection */
-#define FPGA_SEL2_REG_SEL_FRAM 0x80 /* FRAM on IIC1 bus selected - SCP Select */
-#define FPGA_SEL2_REG_SEL_SCP 0x80 /* Identical to SCP Selection */
-#define FPGA_SEL2_REG_SEL_IIC1 0x00 /* IIC1 Selection - Default Value */
-#define FPGA_SEL2_REG_SEL_DMA_A_B 0x40 /* DMA A & B channels selected */
-#define FPGA_SEL2_REG_SEL_DMA_C_D 0x20 /* DMA C & D channels selected */
-#define FPGA_SEL2_REG_DMA_EOT_TC_3_SEL 0x10 /* 0 = EOT - input to 440EP */
- /* 1 = TC - output from 440EP */
-#define FPGA_SEL2_REG_DMA_EOT_TC_2_SEL 0x08 /* 0 = EOT (input to 440EP) */
- /* 1 = TC (output from 440EP) */
-#define FPGA_SEL2_REG_SEL_GPIO_1 0x04 /* EBC_GPIO & USB2_GPIO selected */
-#define FPGA_SEL2_REG_SEL_GPIO_2 0x02 /* Ether._GPIO & UART_GPIO selected */
-#define FPGA_SEL2_REG_SEL_GPIO_3 0x01 /* DMA_GPIO & Trace_GPIO selected */
-
-/*----------------------------------------------------------------------------+
- | Functions Selection Register 3
- +----------------------------------------------------------------------------*/
-#define FPGA_SELECTION_3_REG (FPGA_BASE_ADDR+0x6)
-#define FPGA_SEL3_REG_EXP_SLOT_EN 0x80 /* Expansion Slot enabled */
-#define FPGA_SEL3_REG_SEL_UART_CONFIG_MASK 0x70
-#define FPGA_SEL3_REG_SEL_UART_CONFIG1 0x40 /* one 8_pin UART */
-#define FPGA_SEL3_REG_SEL_UART_CONFIG2 0x20 /* two 4_pin UARTs */
-#define FPGA_SEL3_REG_SEL_UART_CONFIG3 0x10 /* one 4_pin & two 2_pin UARTs */
-#define FPGA_SEL3_REG_SEL_UART_CONFIG4 0x08 /* four 2_pin UARTs */
-#define FPGA_SEL3_REG_DTR_DSR_MODE_4_PIN_UART 0x00 /* DTR/DSR mode for 4_pin_UART */
-#define FPGA_SEL3_REG_RTS_CTS_MODE_4_PIN_UART 0x04 /* RTS/CTS mode for 4_pin_UART */
-
-/*----------------------------------------------------------------------------+
- | Soft Reset Register
- +----------------------------------------------------------------------------*/
-#define FPGA_RESET_REG (FPGA_BASE_ADDR+0x7)
-#define FPGA_RESET_REG_RESET_USB20_DEV 0x80 /* Hard Reset of the GT3200 */
-#define FPGA_RESET_REG_RESET_DISPLAY 0x40 /* Hard Reset on Display Device */
-#define FPGA_RESET_REG_STATUS_LED_0 0x08 /* 1 = Led On */
-#define FPGA_RESET_REG_STATUS_LED_1 0x04 /* 1 = Led On */
-#define FPGA_RESET_REG_STATUS_LED_2 0x02 /* 1 = Led On */
-#define FPGA_RESET_REG_STATUS_LED_3 0x01 /* 1 = Led On */
-
-
-/*----------------------------------------------------------------------------+
-| SDR Configuration registers
-+----------------------------------------------------------------------------*/
-/* Serial Device Strap Reg 0 */
-#define SDR0_SDSTP0 0x0020
-/* Serial Device Strap Reg 1 */
-#define SDR0_SDSTP1 0x0021
-/* Serial Device Strap Reg 2 */
-#define SDR0_SDSTP2 SDR0_STRP2
-/* Serial Device Strap Reg 3 */
-#define SDR0_SDSTP3 SDR0_STRP3
-
-#define sdr_pstrp0 0x0040
-
-#define SDR0_SDSTP1_EBC_ROM_BS_MASK 0x00006000 /* EBC Boot Size Mask */
-#define SDR0_SDSTP1_EBC_ROM_BS_32BIT 0x00004000 /* EBC 32 bits */
-#define SDR0_SDSTP1_EBC_ROM_BS_16BIT 0x00002000 /* EBC 16 Bits */
-#define SDR0_SDSTP1_EBC_ROM_BS_8BIT 0x00000000 /* EBC 8 Bits */
-
-#define SDR0_SDSTP1_BOOT_SEL_MASK 0x00001800 /* Boot device Selection Mask */
-#define SDR0_SDSTP1_BOOT_SEL_EBC 0x00000000 /* EBC */
-#define SDR0_SDSTP1_BOOT_SEL_PCI 0x00000800 /* PCI */
-#define SDR0_SDSTP1_BOOT_SEL_NDFC 0x00001000 /* NDFC */
-
-/* Serial Device Enabled - Addr = 0xA8 */
-#define SDR0_PSTRP0_BOOTSTRAP_IIC_A8_EN SDR0_PSTRP0_BOOTSTRAP_SETTINGS5
-/* Serial Device Enabled - Addr = 0xA4 */
-#define SDR0_PSTRP0_BOOTSTRAP_IIC_A4_EN SDR0_PSTRP0_BOOTSTRAP_SETTINGS7
-
-/* Pin Straps Reg */
-#define SDR0_PSTRP0 0x0040
-#define SDR0_PSTRP0_BOOTSTRAP_MASK 0xE0000000 /* Strap Bits */
-
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS0 0x00000000 /* Default strap settings 0 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS1 0x20000000 /* Default strap settings 1 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS2 0x40000000 /* Default strap settings 2 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS3 0x60000000 /* Default strap settings 3 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS4 0x80000000 /* Default strap settings 4 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS5 0xA0000000 /* Default strap settings 5 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS6 0xC0000000 /* Default strap settings 6 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS7 0xE0000000 /* Default strap settings 7 */
-
-/*----------------------------------------------------------------------------+
-| EBC Configuration Register - EBC0_CFG
-+----------------------------------------------------------------------------*/
-/* External Bus Three-State Control */
-#define EBC0_CFG_EBTC_DRIVEN 0x80000000
-/* Device-Paced Time-out Disable */
-#define EBC0_CFG_PTD_ENABLED 0x00000000
-/* Ready Timeout Count */
-#define EBC0_CFG_RTC_MASK 0x38000000
-#define EBC0_CFG_RTC_16PERCLK 0x00000000
-#define EBC0_CFG_RTC_32PERCLK 0x08000000
-#define EBC0_CFG_RTC_64PERCLK 0x10000000
-#define EBC0_CFG_RTC_128PERCLK 0x18000000
-#define EBC0_CFG_RTC_256PERCLK 0x20000000
-#define EBC0_CFG_RTC_512PERCLK 0x28000000
-#define EBC0_CFG_RTC_1024PERCLK 0x30000000
-#define EBC0_CFG_RTC_2048PERCLK 0x38000000
-/* External Master Priority Low */
-#define EBC0_CFG_EMPL_LOW 0x00000000
-#define EBC0_CFG_EMPL_MEDIUM_LOW 0x02000000
-#define EBC0_CFG_EMPL_MEDIUM_HIGH 0x04000000
-#define EBC0_CFG_EMPL_HIGH 0x06000000
-/* External Master Priority High */
-#define EBC0_CFG_EMPH_LOW 0x00000000
-#define EBC0_CFG_EMPH_MEDIUM_LOW 0x00800000
-#define EBC0_CFG_EMPH_MEDIUM_HIGH 0x01000000
-#define EBC0_CFG_EMPH_HIGH 0x01800000
-/* Chip Select Three-State Control */
-#define EBC0_CFG_CSTC_DRIVEN 0x00400000
-/* Burst Prefetch */
-#define EBC0_CFG_BPF_ONEDW 0x00000000
-#define EBC0_CFG_BPF_TWODW 0x00100000
-#define EBC0_CFG_BPF_FOURDW 0x00200000
-/* External Master Size */
-#define EBC0_CFG_EMS_8BIT 0x00000000
-/* Power Management Enable */
-#define EBC0_CFG_PME_DISABLED 0x00000000
-#define EBC0_CFG_PME_ENABLED 0x00020000
-/* Power Management Timer */
-#define EBC0_CFG_PMT_ENCODE(n) ((((unsigned long)(n))&0x1F)<<12)
-
-/*----------------------------------------------------------------------------+
-| Peripheral Bank Configuration Register - EBC0_BnCR
-+----------------------------------------------------------------------------*/
-/* BAS - Base Address Select */
-#define EBC0_BNCR_BAS_ENCODE(n) ((((unsigned long)(n))&0xFFF00000)<<0)
-/* BS - Bank Size */
-#define EBC0_BNCR_BS_MASK 0x000E0000
-#define EBC0_BNCR_BS_1MB 0x00000000
-#define EBC0_BNCR_BS_2MB 0x00020000
-#define EBC0_BNCR_BS_4MB 0x00040000
-#define EBC0_BNCR_BS_8MB 0x00060000
-#define EBC0_BNCR_BS_16MB 0x00080000
-#define EBC0_BNCR_BS_32MB 0x000A0000
-#define EBC0_BNCR_BS_64MB 0x000C0000
-#define EBC0_BNCR_BS_128MB 0x000E0000
-/* BU - Bank Usage */
-#define EBC0_BNCR_BU_MASK 0x00018000
-#define EBC0_BNCR_BU_RO 0x00008000
-#define EBC0_BNCR_BU_WO 0x00010000
-#define EBC0_BNCR_BU_RW 0x00018000
-/* BW - Bus Width */
-#define EBC0_BNCR_BW_MASK 0x00006000
-#define EBC0_BNCR_BW_8BIT 0x00000000
-#define EBC0_BNCR_BW_16BIT 0x00002000
-#define EBC0_BNCR_BW_32BIT 0x00004000
-
-/*----------------------------------------------------------------------------+
-| Peripheral Bank Access Parameters - EBC0_BnAP
-+----------------------------------------------------------------------------*/
-/* Burst Mode Enable */
-#define EBC0_BNAP_BME_ENABLED 0x80000000
-#define EBC0_BNAP_BME_DISABLED 0x00000000
-/* Transfert Wait */
-#define EBC0_BNAP_TWT_ENCODE(n) ((((unsigned long)(n))&0xFF)<<23) /* Bits 1:8 */
-/* Chip Select On Timing */
-#define EBC0_BNAP_CSN_ENCODE(n) ((((unsigned long)(n))&0x3)<<18) /* Bits 12:13 */
-/* Output Enable On Timing */
-#define EBC0_BNAP_OEN_ENCODE(n) ((((unsigned long)(n))&0x3)<<16) /* Bits 14:15 */
-/* Write Back Enable On Timing */
-#define EBC0_BNAP_WBN_ENCODE(n) ((((unsigned long)(n))&0x3)<<14) /* Bits 16:17 */
-/* Write Back Enable Off Timing */
-#define EBC0_BNAP_WBF_ENCODE(n) ((((unsigned long)(n))&0x3)<<12) /* Bits 18:19 */
-/* Transfert Hold */
-#define EBC0_BNAP_TH_ENCODE(n) ((((unsigned long)(n))&0x7)<<9) /* Bits 20:22 */
-/* PerReady Enable */
-#define EBC0_BNAP_RE_ENABLED 0x00000100
-#define EBC0_BNAP_RE_DISABLED 0x00000000
-/* Sample On Ready */
-#define EBC0_BNAP_SOR_DELAYED 0x00000000
-#define EBC0_BNAP_SOR_NOT_DELAYED 0x00000080
-/* Byte Enable Mode */
-#define EBC0_BNAP_BEM_WRITEONLY 0x00000000
-#define EBC0_BNAP_BEM_RW 0x00000040
-/* Parity Enable */
-#define EBC0_BNAP_PEN_DISABLED 0x00000000
-#define EBC0_BNAP_PEN_ENABLED 0x00000020
-
-/*----------------------------------------------------------------------------+
-| Define Boot devices
-+----------------------------------------------------------------------------*/
-/* */
-#define BOOT_FROM_SMALL_FLASH 0x00
-#define BOOT_FROM_LARGE_FLASH_OR_SRAM 0x01
-#define BOOT_FROM_NAND_FLASH0 0x02
-#define BOOT_FROM_PCI 0x03
-#define BOOT_DEVICE_UNKNOWN 0x04
-
-
-#define PVR_POWERPC_440EP_PASS1 0x42221850
-#define PVR_POWERPC_440EP_PASS2 0x422218D3
-
-#define TRUE 1
-#define FALSE 0
-
-#define GPIO_GROUP_MAX 2
-#define GPIO_MAX 32
-#define GPIO_ALT1_SEL 0x40000000 /* GPIO_OUT value put in GPIO_TSx for the GPIO nb 0 */
-#define GPIO_ALT2_SEL 0x80000000 /* GPIO_OUT value put in GPIO_TSx for the GPIO nb 1 */
-#define GPIO_ALT3_SEL 0xC0000000 /* GPIO_OUT value put in GPIO_TSx for the GPIO nb 2 */
-#define GPIO_MASK 0xC0000000 /* GPIO_MASK */
-#define GPIO_IN_SEL 0x40000000 /* GPIO_IN value put in GPIO_ISx for the GPIO nb 0 */
- /* For the other GPIO number, you must shift */
-
-#define GPIO0 0
-#define GPIO1 1
-
-
-/*#define MAX_SELECTION_NB CORE_NB */
-#define MAX_CORE_SELECT_NB 22
-
-/*----------------------------------------------------------------------------+
- | PPC440EP GPIOs addresses.
- +----------------------------------------------------------------------------*/
-#define GPIO0_REAL 0xEF600B00
-
-#define GPIO1_REAL 0xEF600C00
-
-/* Offsets */
-#define GPIOx_OR 0x00 /* GPIO Output Register */
-#define GPIOx_TCR 0x04 /* GPIO Three-State Control Register */
-#define GPIOx_OSL 0x08 /* GPIO Output Select Register (Bits 0-31) */
-#define GPIOx_OSH 0x0C /* GPIO Ouput Select Register (Bits 32-63) */
-#define GPIOx_TSL 0x10 /* GPIO Three-State Select Register (Bits 0-31) */
-#define GPIOx_TSH 0x14 /* GPIO Three-State Select Register (Bits 32-63) */
-#define GPIOx_ODR 0x18 /* GPIO Open drain Register */
-#define GPIOx_IR 0x1C /* GPIO Input Register */
-#define GPIOx_RR1 0x20 /* GPIO Receive Register 1 */
-#define GPIOx_RR2 0x24 /* GPIO Receive Register 2 */
-#define GPIOx_RR3 0x28 /* GPIO Receive Register 3 */
-#define GPIOx_IS1L 0x30 /* GPIO Input Select Register 1 (Bits 0-31) */
-#define GPIOx_IS1H 0x34 /* GPIO Input Select Register 1 (Bits 32-63) */
-#define GPIOx_IS2L 0x38 /* GPIO Input Select Register 2 (Bits 0-31) */
-#define GPIOx_IS2H 0x3C /* GPIO Input Select Register 2 (Bits 32-63) */
-#define GPIOx_IS3L 0x40 /* GPIO Input Select Register 3 (Bits 0-31) */
-#define GPIOx_IS3H 0x44 /* GPIO Input Select Register 3 (Bits 32-63) */
-
-/* GPIO0 */
-#define GPIO0_IS1L (GPIO0_BASE+GPIOx_IS1L)
-#define GPIO0_IS1H (GPIO0_BASE+GPIOx_IS1H)
-#define GPIO0_IS2L (GPIO0_BASE+GPIOx_IS2L)
-#define GPIO0_IS2H (GPIO0_BASE+GPIOx_IS2H)
-#define GPIO0_IS3L (GPIO0_BASE+GPIOx_IS3L)
-#define GPIO0_IS3H (GPIO0_BASE+GPIOx_IS3L)
-
-/* GPIO1 */
-#define GPIO1_IS1L (GPIO1_BASE+GPIOx_IS1L)
-#define GPIO1_IS1H (GPIO1_BASE+GPIOx_IS1H)
-#define GPIO1_IS2L (GPIO1_BASE+GPIOx_IS2L)
-#define GPIO1_IS2H (GPIO1_BASE+GPIOx_IS2H)
-#define GPIO1_IS3L (GPIO1_BASE+GPIOx_IS3L)
-#define GPIO1_IS3H (GPIO1_BASE+GPIOx_IS3L)
-
-#define GPIO_OS(x) (x+GPIOx_OSL) /* GPIO Output Register High or Low */
-#define GPIO_TS(x) (x+GPIOx_TSL) /* GPIO Three-state Control Reg High or Low */
-#define GPIO_IS1(x) (x+GPIOx_IS1L) /* GPIO Input register1 High or Low */
-#define GPIO_IS2(x) (x+GPIOx_IS2L) /* GPIO Input register2 High or Low */
-#define GPIO_IS3(x) (x+GPIOx_IS3L) /* GPIO Input register3 High or Low */
-
-
-/*----------------------------------------------------------------------------+
- | XX XX
- |
- | XXXXXX XXX XX XXX XXX
- | XX XX X XX XX XX
- | XX XX X XX XX XX
- | XX XX XX XX XX
- | XXXXXX XXX XXX XXXX XXXX
- +----------------------------------------------------------------------------*/
-/*----------------------------------------------------------------------------+
- | Defines
- +----------------------------------------------------------------------------*/
-typedef enum zmii_config { ZMII_CONFIGURATION_UNKNOWN,
- ZMII_CONFIGURATION_IS_MII,
- ZMII_CONFIGURATION_IS_RMII,
- ZMII_CONFIGURATION_IS_SMII
-} zmii_config_t;
-
-/*----------------------------------------------------------------------------+
- | Declare Configuration values
- +----------------------------------------------------------------------------*/
-typedef enum uart_config_nb { L1, L2, L3, L4 } uart_config_nb_t;
-typedef enum core_selection { CORE_NOT_SELECTED, CORE_SELECTED} core_selection_t;
-typedef enum config_list { IIC_CORE,
- SCP_CORE,
- DMA_CHANNEL_AB,
- UIC_4_9,
- USB2_HOST,
- DMA_CHANNEL_CD,
- USB2_DEVICE,
- PACKET_REJ_FUNC_AVAIL,
- USB1_DEVICE,
- EBC_MASTER,
- NAND_FLASH,
- UART_CORE0,
- UART_CORE1,
- UART_CORE2,
- UART_CORE3,
- MII_SEL,
- RMII_SEL,
- SMII_SEL,
- PACKET_REJ_FUNC_EN,
- UIC_0_3,
- USB1_HOST,
- PCI_PATCH,
- CORE_NB
-} core_list_t;
-
-typedef enum block3_value { B3_V1, B3_V2, B3_V3, B3_V4, B3_V5,
- B3_V6, B3_V7, B3_V8, B3_V9, B3_V10,
- B3_V11, B3_V12, B3_V13, B3_V14, B3_V15,
- B3_V16, B3_VALUE_UNKNOWN
-} block3_value_t;
-
-typedef enum config_validity { CONFIG_IS_VALID,
- CONFIG_IS_INVALID
-} config_validity_t;
diff --git a/board/amcc/bamboo/config.mk b/board/amcc/bamboo/config.mk
deleted file mode 100644
index 9d7f4c3105..0000000000
--- a/board/amcc/bamboo/config.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# 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
-#
-
-TEXT_BASE = 0xFFFA0000
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/amcc/bamboo/flash.c b/board/amcc/bamboo/flash.c
deleted file mode 100644
index a30ab7ada8..0000000000
--- a/board/amcc/bamboo/flash.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * (C) Copyright 2004-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002 Jun Gu <jung@artesyncp.com>
- * Add support for Am29F016D and dynamic switch setting.
- *
- * 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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-#include <ppc440.h>
-#include "bamboo.h"
-
-#undef DEBUG
-
-#ifdef DEBUG
-#define DEBUGF(x...) printf(x)
-#else
-#define DEBUGF(x...)
-#endif /* DEBUG */
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*
- * Mark big flash bank (16 bit instead of 8 bit access) in address with bit 0
- */
-static unsigned long flash_addr_table[][CFG_MAX_FLASH_BANKS] = {
- {0x87800001, 0xFFF00000, 0xFFF80000}, /* 0:boot from small flash */
- {0x00000000, 0x00000000, 0x00000000}, /* 1:boot from pci 66 */
- {0x00000000, 0x00000000, 0x00000000}, /* 2:boot from nand flash */
- {0x87F00000, 0x87F80000, 0xFFC00001}, /* 3:boot from big flash 33*/
- {0x87F00000, 0x87F80000, 0xFFC00001}, /* 4:boot from big flash 66*/
- {0x00000000, 0x00000000, 0x00000000}, /* 5:boot from */
- {0x00000000, 0x00000000, 0x00000000}, /* 6:boot from pci 66 */
- {0x00000000, 0x00000000, 0x00000000}, /* 7:boot from */
- {0x87C00001, 0xFFF00000, 0xFFF80000}, /* 0:boot from small flash */
-};
-
-/*
- * include common flash code (for amcc boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-static int write_word(flash_info_t * info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init(void)
-{
- unsigned long total_b = 0;
- unsigned long size_b[CFG_MAX_FLASH_BANKS];
- unsigned short index = 0;
- int i;
- unsigned long val;
- unsigned long ebc_boot_size;
- unsigned long boot_selection;
-
- mfsdr(sdr_pstrp0, val);
- index = (val & SDR0_PSTRP0_BOOTSTRAP_MASK) >> 29;
-
- if ((index == 5) || (index == 7)) {
- /*
- * Boot Settings in IIC EEprom address 0xA8 or 0xA4
- * Read Serial Device Strap Register1 in PPC440EP
- */
- mfsdr(sdr_sdstp1, val);
- boot_selection = val & SDR0_SDSTP1_BOOT_SEL_MASK;
- ebc_boot_size = val & SDR0_SDSTP1_EBC_ROM_BS_MASK;
-
- switch(boot_selection) {
- case SDR0_SDSTP1_BOOT_SEL_EBC:
- switch(ebc_boot_size) {
- case SDR0_SDSTP1_EBC_ROM_BS_16BIT:
- index = 3;
- break;
- case SDR0_SDSTP1_EBC_ROM_BS_8BIT:
- index = 0;
- break;
- }
- break;
-
- case SDR0_SDSTP1_BOOT_SEL_PCI:
- index = 1;
- break;
-
- case SDR0_SDSTP1_BOOT_SEL_NDFC:
- index = 2;
- break;
- }
- } else if (index == 0) {
- if (in8(FPGA_SETTING_REG) & FPGA_SET_REG_OP_CODE_FLASH_ABOVE) {
- index = 8; /* sram below op code flash -> new index 8 */
- }
- }
-
- DEBUGF("\n");
- DEBUGF("FLASH: Index: %d\n", index);
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
-
- /* check whether the address is 0 */
- if (flash_addr_table[index][i] == 0) {
- continue;
- }
-
- /* call flash_get_size() to initialize sector address */
- size_b[i] = flash_get_size((vu_long *) flash_addr_table[index][i],
- &flash_info[i]);
- flash_info[i].size = size_b[i];
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
- i, size_b[i], size_b[i] << 20);
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
- }
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET, CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + CFG_MONITOR_LEN - 1,
- &flash_info[i]);
-#if defined(CFG_ENV_IS_IN_FLASH)
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[i]);
-#if defined(CFG_ENV_IS_IN_FLASH) && defined(CFG_ENV_ADDR_REDUND)
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1,
- &flash_info[i]);
-#endif
-#endif
-
- total_b += flash_info[i].size;
- }
-
- return total_b;
-}
diff --git a/board/amcc/bamboo/init.S b/board/amcc/bamboo/init.S
deleted file mode 100644
index 7820107aa5..0000000000
--- a/board/amcc/bamboo/init.S
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-*
-* 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 <ppc_asm.tmpl>
-#include <config.h>
-
-/* General */
-#define TLB_VALID 0x00000200
-
-/* Supported page sizes */
-
-#define SZ_1K 0x00000000
-#define SZ_4K 0x00000010
-#define SZ_16K 0x00000020
-#define SZ_64K 0x00000030
-#define SZ_256K 0x00000040
-#define SZ_1M 0x00000050
-#define SZ_8M 0x00000060
-#define SZ_16M 0x00000070
-#define SZ_256M 0x00000090
-
-/* Storage attributes */
-#define SA_W 0x00000800 /* Write-through */
-#define SA_I 0x00000400 /* Caching inhibited */
-#define SA_M 0x00000200 /* Memory coherence */
-#define SA_G 0x00000100 /* Guarded */
-#define SA_E 0x00000080 /* Endian */
-
-/* Access control */
-#define AC_X 0x00000024 /* Execute */
-#define AC_W 0x00000012 /* Write */
-#define AC_R 0x00000009 /* Read */
-
-/* Some handy macros */
-
-#define EPN(e) ((e) & 0xfffffc00)
-#define TLB0(epn,sz) ( (EPN((epn)) | (sz) | TLB_VALID ) )
-#define TLB1(rpn,erpn) ( ((rpn)&0xfffffc00) | (erpn) )
-#define TLB2(a) ( (a)&0x00000fbf )
-
-#define tlbtab_start\
- mflr r1 ;\
- bl 0f ;
-
-#define tlbtab_end\
- .long 0, 0, 0 ; \
-0: mflr r0 ; \
- mtlr r1 ; \
- blr ;
-
-#define tlbentry(epn,sz,rpn,erpn,attr)\
- .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr)
-
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- * Pointer to the table is returned in r1
- *
- *************************************************************************/
-
- .section .bootpg,"ax"
- .globl tlbtab
-
-tlbtab:
- tlbtab_start
-
- /*
- * BOOT_CS (FLASH) must be first. Before relocation SA_I can be off to use the
- * speed up boot process. It is patched after relocation to enable SA_I
- */
- tlbentry( CFG_BOOT_BASE_ADDR, SZ_256M, CFG_BOOT_BASE_ADDR, 0, AC_R|AC_W|AC_X|SA_G/*|SA_I*/)
-
- /* TLB-entry for init-ram in dcache (SA_I must be turned off!) */
- tlbentry( CFG_INIT_RAM_ADDR, SZ_64K, CFG_INIT_RAM_ADDR, 0, AC_R|AC_W|AC_X|SA_G )
-
- tlbentry( CFG_SDRAM_BASE, SZ_256M, CFG_SDRAM_BASE, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
- tlbentry( CFG_PCI_BASE, SZ_256M, CFG_PCI_BASE, 0, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_NVRAM_BASE_ADDR, SZ_256M, CFG_NVRAM_BASE_ADDR, 0, AC_R|AC_W|AC_X|SA_W|SA_I )
- tlbentry( CFG_NAND_ADDR, SZ_256M, CFG_NAND_ADDR, 0, AC_R|AC_W|AC_X|SA_W|SA_I )
-
- /* PCI */
- tlbentry( CFG_PCI_MEMBASE, SZ_256M, CFG_PCI_MEMBASE, 0, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_PCI_MEMBASE1, SZ_256M, CFG_PCI_MEMBASE1, 0, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_PCI_MEMBASE2, SZ_256M, CFG_PCI_MEMBASE2, 0, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_PCI_MEMBASE3, SZ_256M, CFG_PCI_MEMBASE3, 0, AC_R|AC_W|SA_G|SA_I )
-
- /* USB 2.0 Device */
- tlbentry( CFG_USB_DEVICE, SZ_1K, CFG_USB_DEVICE, 0, AC_R|AC_W|SA_G|SA_I )
-
- tlbtab_end
diff --git a/board/amcc/bamboo/u-boot.lds b/board/amcc/bamboo/u-boot.lds
deleted file mode 100644
index 176900ec2f..0000000000
--- a/board/amcc/bamboo/u-boot.lds
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- .bootpg 0xFFFFF000 :
- {
- cpu/ppc4xx/start.o (.bootpg)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/amcc/bamboo/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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)
- }
-
- ppcenv_assert = ASSERT(. < 0xFFFF8000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified.");
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/amcc/bubinga/Makefile b/board/amcc/bubinga/Makefile
deleted file mode 100644
index 50fecc6d48..0000000000
--- a/board/amcc/bubinga/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/amcc/bubinga/bubinga.c b/board/amcc/bubinga/bubinga.c
deleted file mode 100644
index fe6ce8a6d1..0000000000
--- a/board/amcc/bubinga/bubinga.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * (C) Copyright 2000-2005
- * 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
- */
-long int spd_sdram(void);
-
-#include <common.h>
-#include <asm/processor.h>
-
-int board_early_init_f(void)
-{
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000010);
- mtdcr(uicpr, 0xFFFF7FF0); /* set int polarities */
- mtdcr(uictr, 0x00000010); /* set int trigger levels */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- return 0;
-}
-
-/*
- * Check Board Identity:
- */
-int checkboard(void)
-{
- char *s = getenv("serial#");
-
- puts("Board: Bubinga - AMCC PPC405EP Evaluation Board");
-
- if (s != NULL) {
- puts(", serial# ");
- puts(s);
- }
- putc('\n');
-
- return (0);
-}
-
-/*
- * sdram_init - Dummy implementation for start.S, spd_sdram used on this board!
- */
-void sdram_init(void)
-{
- return;
-}
-
-/* -------------------------------------------------------------------------
- initdram(int board_type) reads EEPROM via I2c. EEPROM contains all of
- the necessary info for SDRAM controller configuration
- ------------------------------------------------------------------------- */
-long int initdram(int board_type)
-{
- long int ret;
-
- ret = spd_sdram();
- return ret;
-}
-
-int testdram(void)
-{
- /* TODO: XXX XXX XXX */
- printf("test: xxx MB - ok\n");
-
- return (0);
-}
diff --git a/board/amcc/bubinga/config.mk b/board/amcc/bubinga/config.mk
deleted file mode 100644
index 1bdf5e4fcf..0000000000
--- a/board/amcc/bubinga/config.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# (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
-#
-
-TEXT_BASE = 0xFFFC0000
diff --git a/board/amcc/bubinga/flash.c b/board/amcc/bubinga/flash.c
deleted file mode 100644
index e4832ebf36..0000000000
--- a/board/amcc/bubinga/flash.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * (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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#undef DEBUG
-#ifdef DEBUG
-#define DEBUGF(x...) printf(x)
-#else
-#define DEBUGF(x...)
-#endif /* DEBUG */
-
-/*
- * include common flash code (for amcc boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-static void flash_get_offsets(ulong base, flash_info_t * info);
-
-unsigned long flash_init(void)
-{
- unsigned long size_b0, size_b1;
- int i;
- uint pbcr;
- unsigned long base_b0, base_b1;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 =
- flash_get_size((vu_long *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 << 20);
- }
-
- /* Only one bank */
- if (CFG_MAX_FLASH_BANKS == 1) {
- /* Setup offsets */
- flash_get_offsets(FLASH_BASE0_PRELIM, &flash_info[0]);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + CFG_MONITOR_LEN - 1,
- &flash_info[0]);
-#ifdef CFG_ENV_IS_IN_FLASH
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[0]);
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1,
- &flash_info[0]);
-#endif
-
- size_b1 = 0;
- flash_info[0].size = size_b0;
- }
-
- /* 2 banks */
- else {
- size_b1 =
- flash_get_size((vu_long *) FLASH_BASE1_PRELIM,
- &flash_info[1]);
-
- /* Re-do sizing to get full correct info */
-
- if (size_b1) {
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b1 = -size_b1;
- pbcr = (pbcr & 0x0001ffff) | base_b1 |
- (((size_b1 / 1024 / 1024) - 1) << 17);
- mtdcr(ebccfgd, pbcr);
- /* printf("pb1cr = %x\n", pbcr); */
- }
-
- if (size_b0) {
- mtdcr(ebccfga, pb1cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb1cr);
- base_b0 = base_b1 - size_b0;
- pbcr = (pbcr & 0x0001ffff) | base_b0 |
- (((size_b0 / 1024 / 1024) - 1) << 17);
- mtdcr(ebccfgd, pbcr);
- /* printf("pb0cr = %x\n", pbcr); */
- }
-
- size_b0 = flash_get_size((vu_long *) base_b0, &flash_info[0]);
-
- flash_get_offsets(base_b0, &flash_info[0]);
-
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- base_b0 + size_b0 - CFG_MONITOR_LEN,
- base_b0 + size_b0 - 1, &flash_info[0]);
- /* Also protect sector containing initial power-up instruction */
- /* (flash_protect() checks address range - other call ignored) */
- (void)flash_protect(FLAG_PROTECT_SET,
- 0xFFFFFFFC, 0xFFFFFFFF, &flash_info[0]);
- (void)flash_protect(FLAG_PROTECT_SET,
- 0xFFFFFFFC, 0xFFFFFFFF, &flash_info[1]);
-
- if (size_b1) {
- /* Re-do sizing to get full correct info */
- size_b1 =
- flash_get_size((vu_long *) base_b1, &flash_info[1]);
-
- flash_get_offsets(base_b1, &flash_info[1]);
-
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- base_b1 + size_b1 - CFG_MONITOR_LEN,
- base_b1 + size_b1 - 1,
- &flash_info[1]);
- /* monitor protection OFF by default (one is enough) */
- (void)flash_protect(FLAG_PROTECT_CLEAR,
- base_b0 + size_b0 - CFG_MONITOR_LEN,
- base_b0 + size_b0 - 1,
- &flash_info[0]);
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
- } /* else 2 banks */
- return (size_b0 + size_b1);
-}
-
-static void flash_get_offsets(ulong base, flash_info_t * info)
-{
- int i;
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- (info->flash_id == FLASH_AM040)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-}
diff --git a/board/amcc/bubinga/u-boot.lds b/board/amcc/bubinga/u-boot.lds
deleted file mode 100644
index be030923b8..0000000000
--- a/board/amcc/bubinga/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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/amcc/common/flash.c b/board/amcc/common/flash.c
deleted file mode 100644
index e6429ecd13..0000000000
--- a/board/amcc/common/flash.c
+++ /dev/null
@@ -1,947 +0,0 @@
-/*
- * (C) Copyright 2004-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002 Jun Gu <jung@artesyncp.com>
- * Add support for Am29F016D and dynamic switch setting.
- *
- * 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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word(flash_info_t * info, ulong dest, ulong data);
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-static int write_word_1(flash_info_t * info, ulong dest, ulong data);
-static int write_word_2(flash_info_t * info, ulong dest, ulong data);
-static int flash_erase_1(flash_info_t * info, int s_first, int s_last);
-static int flash_erase_2(flash_info_t * info, int s_first, int s_last);
-static ulong flash_get_size_1(vu_long * addr, flash_info_t * info);
-static ulong flash_get_size_2(vu_long * addr, flash_info_t * info);
-#endif
-
-void flash_print_info(flash_info_t * info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf("AMD ");
- break;
- case FLASH_MAN_STM:
- printf("STM ");
- break;
- case FLASH_MAN_FUJ:
- printf("FUJITSU ");
- break;
- case FLASH_MAN_SST:
- printf("SST ");
- break;
- case FLASH_MAN_MX:
- printf ("MACRONIX ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- printf("AM29F040 (512 Kbit, uniform sector size)\n");
- break;
- case FLASH_AM400B:
- printf("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T:
- printf("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B:
- printf("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T:
- printf("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AMD016:
- printf("AM29F016D (16 Mbit, uniform sector size)\n");
- break;
- case FLASH_AM160B:
- printf("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T:
- printf("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B:
- printf("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_AM033C:
- printf("AM29LV033C (32 Mbit, top boot sector)\n");
- break;
- case FLASH_SST800A:
- printf("SST39LF/VF800 (8 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST160A:
- printf("SST39LF/VF160 (16 Mbit, uniform sector size)\n");
- break;
- case FLASH_STMW320DT:
- printf ("M29W320DT (32 M, top sector)\n");
- break;
- case FLASH_MXLV320T:
- printf ("MXLV320T (32 Mbit, top sector)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- break;
- }
-
- printf(" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count - 1))
- size = info->start[i + 1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k = 0; k < size; k++) {
- if (*flash++ != 0xffffffff) {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf("\n ");
- printf(" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ", info->protect[i] ? "RO " : " ");
- }
- printf("\n");
- return;
-}
-
-
-/*
- * The following code cannot be run from FLASH!
- */
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-static ulong flash_get_size(vu_long * addr, flash_info_t * info)
-{
- /* bit 0 used for big flash marking */
- if ((ulong)addr & 0x1) {
- return flash_get_size_2((vu_long *)((ulong)addr & 0xfffffffe), info);
- } else {
- return flash_get_size_1(addr, info);
- }
-}
-
-static ulong flash_get_size_1(vu_long * addr, flash_info_t * info)
-#else
-static ulong flash_get_size(vu_long * addr, flash_info_t * info)
-#endif
-{
- short i;
- CFG_FLASH_WORD_SIZE value;
- ulong base = (ulong) addr;
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) addr;
-
- DEBUGF("FLASH ADDR: %08x\n", (unsigned)addr);
-
- /* Write auto select command: read Manufacturer ID */
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00900090;
- udelay(1000);
-
- value = addr2[0];
- DEBUGF("FLASH MANUFACT: %x\n", value);
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (CFG_FLASH_WORD_SIZE) FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (CFG_FLASH_WORD_SIZE) SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case (CFG_FLASH_WORD_SIZE) STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[1]; /* device ID */
- DEBUGF("\nFLASH DEVICEID: %x\n", value);
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 KiB */
- break;
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_F040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 KiB */
- break;
-
- case (CFG_FLASH_WORD_SIZE) STM_ID_M29W040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 KiB */
- break;
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_F016D:
- info->flash_id += FLASH_AMD016;
- info->sector_count = 32;
- info->size = 0x00200000; /* => 2 MiB */
- break;
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV033C:
- info->flash_id += FLASH_AMDLV033C;
- info->sector_count = 64;
- info->size = 0x00400000; /* => 4 MiB */
- break;
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000; /* => 512 KiB */
- break;
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000; /* => 512 KiB */
- break;
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000; /* => 1 MiB */
- break;
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000; /* => 1 MiB */
- break;
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000; /* => 2 MiB */
- break;
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000; /* => 2 MiB */
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMD016)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
-
- /* For AMD29033C flash we need to resend the command of *
- * reading flash protection for upper 8 Mb of flash */
- if (i == 32) {
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAAAAAAAA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55555555;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x90909090;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
- }
-
- /* issue bank reset to return to read mode */
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0;
-
- return (info->size);
-}
-
-static int wait_for_DQ7_1(flash_info_t * info, int sect)
-{
- ulong start, now, last;
- volatile CFG_FLASH_WORD_SIZE *addr =
- (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- start = get_timer(0);
- last = start;
- while ((addr[0] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
- (CFG_FLASH_WORD_SIZE) 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- return -1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc('.');
- last = now;
- }
- }
- return 0;
-}
-
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-{
- if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_MXLV320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_STMW320DT)) {
- return flash_erase_2(info, s_first, s_last);
- } else {
- return flash_erase_1(info, s_first, s_last);
- }
-}
-
-static int flash_erase_1(flash_info_t * info, int s_first, int s_last)
-#else
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-#endif
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- int i;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("- missing\n");
- } else {
- printf("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00500050; /* block erase */
- for (i = 0; i < 50; i++)
- udelay(1000); /* wait 1 ms */
- } else {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00300030; /* sector erase */
- }
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- wait_for_DQ7_1(info, sect);
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay(1000);
-
- /* reset to read mode */
- addr = (CFG_FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
- printf(" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-static int write_word(flash_info_t * info, ulong dest, ulong data)
-{
- if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_MXLV320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_STMW320DT)) {
- return write_word_2(info, dest, data);
- } else {
- return write_word_1(info, dest, data);
- }
-}
-
-static int write_word_1(flash_info_t * info, ulong dest, ulong data)
-#else
-static int write_word(flash_info_t * info, ulong dest, ulong data)
-#endif
-{
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *) dest;
- volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *) & data;
- ulong start;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
- for (i = 0; i < 4 / sizeof(CFG_FLASH_WORD_SIZE); i++) {
- int flag;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer(0);
- while ((dest2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080)) {
-
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-
-#undef CFG_FLASH_WORD_SIZE
-#define CFG_FLASH_WORD_SIZE unsigned short
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size_2(vu_long * addr, flash_info_t * info)
-{
- short i;
- int n;
- CFG_FLASH_WORD_SIZE value;
- ulong base = (ulong) addr;
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) addr;
-
- DEBUGF("FLASH ADDR: %08x\n", (unsigned)addr);
-
- /* Write auto select command: read Manufacturer ID */
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00900090;
- udelay(1000);
-
- value = addr2[0];
- DEBUGF("FLASH MANUFACT: %x\n", value);
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (CFG_FLASH_WORD_SIZE) FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (CFG_FLASH_WORD_SIZE) SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case (CFG_FLASH_WORD_SIZE) STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- case (CFG_FLASH_WORD_SIZE) MX_MANUFACT:
- info->flash_id = FLASH_MAN_MX;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[1]; /* device ID */
-
- DEBUGF("\nFLASH DEVICEID: %x\n", value);
-
- switch (value) {
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MiB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MiB */
-
- case (CFG_FLASH_WORD_SIZE)STM_ID_29W320DT:
- info->flash_id += FLASH_STMW320DT;
- info->sector_count = 67;
- info->size = 0x00400000; break; /* => 4 MiB */
-
- case (CFG_FLASH_WORD_SIZE)MX_ID_LV320T:
- info->flash_id += FLASH_MXLV320T;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMD016)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else if ((info->flash_id & FLASH_TYPEMASK) == FLASH_STMW320DT) {
- /* set sector offsets for top boot block type */
- base += info->size;
- i = info->sector_count;
- /* 1 x 16k boot sector */
- base -= 16 << 10;
- --i;
- info->start[i] = base;
- /* 2 x 8k boot sectors */
- for (n=0; n<2; ++n) {
- base -= 8 << 10;
- --i;
- info->start[i] = base;
- }
- /* 1 x 32k boot sector */
- base -= 32 << 10;
- --i;
- info->start[i] = base;
-
- while (i > 0) { /* 64k regular sectors */
- base -= 64 << 10;
- --i;
- info->start[i] = base;
- }
- } else if ((info->flash_id & FLASH_TYPEMASK) == FLASH_MXLV320T) {
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00002000;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000a000;
- info->start[i--] = base + info->size - 0x0000c000;
- info->start[i--] = base + info->size - 0x0000e000;
- info->start[i--] = base + info->size - 0x00010000;
-
- for (; i >= 0; i--)
- info->start[i] = base + i * 0x00010000;
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
-
- /* For AMD29033C flash we need to resend the command of *
- * reading flash protection for upper 8 Mb of flash */
- if (i == 32) {
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAAAAAAAA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55555555;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x90909090;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
- }
-
- /* issue bank reset to return to read mode */
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0;
-
- return (info->size);
-}
-
-static int wait_for_DQ7_2(flash_info_t * info, int sect)
-{
- ulong start, now, last;
- volatile CFG_FLASH_WORD_SIZE *addr =
- (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- start = get_timer(0);
- last = start;
- while ((addr[0] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
- (CFG_FLASH_WORD_SIZE) 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- return -1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc('.');
- last = now;
- }
- }
- return 0;
-}
-
-static int flash_erase_2(flash_info_t * info, int s_first, int s_last)
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- int i;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("- missing\n");
- } else {
- printf("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00500050; /* block erase */
- for (i = 0; i < 50; i++)
- udelay(1000); /* wait 1 ms */
- } else {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00300030; /* sector erase */
- }
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- wait_for_DQ7_2(info, sect);
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay(1000);
-
- /* reset to read mode */
- addr = (CFG_FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
- printf(" done\n");
- return 0;
-}
-
-static int write_word_2(flash_info_t * info, ulong dest, ulong data)
-{
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *) dest;
- volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *) & data;
- ulong start;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
- for (i = 0; i < 4 / sizeof(CFG_FLASH_WORD_SIZE); i++) {
- int flag;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer(0);
- while ((dest2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080)) {
-
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-#endif /* CFG_FLASH_2ND_16BIT_DEV */
diff --git a/board/amcc/ebony/Makefile b/board/amcc/ebony/Makefile
deleted file mode 100644
index 5da96e9e1c..0000000000
--- a/board/amcc/ebony/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/amcc/ebony/config.mk b/board/amcc/ebony/config.mk
deleted file mode 100644
index e5722dd36a..0000000000
--- a/board/amcc/ebony/config.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2002
-# 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
-#
-
-#
-# esd ADCIOP boards
-#
-
-#TEXT_BASE = 0xFFFE0000
-
-ifeq ($(ramsym),1)
-TEXT_BASE = 0x07FD0000
-else
-TEXT_BASE = 0xFFFC0000
-endif
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/amcc/ebony/ebony.c b/board/amcc/ebony/ebony.c
deleted file mode 100644
index dcafac950d..0000000000
--- a/board/amcc/ebony/ebony.c
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <spd_sdram.h>
-
-#define BOOT_SMALL_FLASH 32 /* 00100000 */
-#define FLASH_ONBD_N 2 /* 00000010 */
-#define FLASH_SRAM_SEL 1 /* 00000001 */
-
-DECLARE_GLOBAL_DATA_PTR;
-
-long int fixed_sdram(void);
-
-int board_early_init_f(void)
-{
- uint reg;
- unsigned char *fpga_base = (unsigned char *)CFG_FPGA_BASE;
- unsigned char status;
-
- /*--------------------------------------------------------------------
- * Setup the external bus controller/chip selects
- *-------------------------------------------------------------------*/
- mtdcr(ebccfga, xbcfg);
- reg = mfdcr(ebccfgd);
- mtdcr(ebccfgd, reg | 0x04000000); /* Set ATC */
-
- mtebc(pb1ap, 0x02815480); /* NVRAM/RTC */
- mtebc(pb1cr, 0x48018000); /* BA=0x480 1MB R/W 8-bit */
- mtebc(pb7ap, 0x01015280); /* FPGA registers */
- mtebc(pb7cr, 0x48318000); /* BA=0x483 1MB R/W 8-bit */
-
- /* read FPGA_REG0 and set the bus controller */
- status = *fpga_base;
- if ((status & BOOT_SMALL_FLASH) && !(status & FLASH_ONBD_N)) {
- mtebc(pb0ap, 0x9b015480); /* FLASH/SRAM */
- mtebc(pb0cr, 0xfff18000); /* BAS=0xfff 1MB R/W 8-bit */
- mtebc(pb2ap, 0x9b015480); /* 4MB FLASH */
- mtebc(pb2cr, 0xff858000); /* BAS=0xff8 4MB R/W 8-bit */
- } else {
- mtebc(pb0ap, 0x9b015480); /* 4MB FLASH */
- mtebc(pb0cr, 0xffc58000); /* BAS=0xffc 4MB R/W 8-bit */
-
- /* set CS2 if FLASH_ONBD_N == 0 */
- if (!(status & FLASH_ONBD_N)) {
- mtebc(pb2ap, 0x9b015480); /* FLASH/SRAM */
- mtebc(pb2cr, 0xff818000); /* BAS=0xff8 4MB R/W 8-bit */
- }
- }
-
- /*--------------------------------------------------------------------
- * Setup the interrupt controller polarities, triggers, etc.
- *-------------------------------------------------------------------*/
- mtdcr(uic0sr, 0xffffffff); /* clear all */
- mtdcr(uic0er, 0x00000000); /* disable all */
- mtdcr(uic0cr, 0x00000009); /* SMI & UIC1 crit are critical */
- mtdcr(uic0pr, 0xfffffe13); /* per ref-board manual */
- mtdcr(uic0tr, 0x01c00008); /* per ref-board manual */
- mtdcr(uic0vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr(uic0sr, 0xffffffff); /* clear all */
-
- mtdcr(uic1sr, 0xffffffff); /* clear all */
- mtdcr(uic1er, 0x00000000); /* disable all */
- mtdcr(uic1cr, 0x00000000); /* all non-critical */
- mtdcr(uic1pr, 0xffffe0ff); /* per ref-board manual */
- mtdcr(uic1tr, 0x00ffc000); /* per ref-board manual */
- mtdcr(uic1vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr(uic1sr, 0xffffffff); /* clear all */
-
- return 0;
-}
-
-int checkboard(void)
-{
- char *s = getenv("serial#");
-
- printf("Board: Ebony - AMCC PPC440GP Evaluation Board");
- if (s != NULL) {
- puts(", serial# ");
- puts(s);
- }
- putc('\n');
-
- return (0);
-}
-
-long int initdram(int board_type)
-{
- long dram_size = 0;
-
-#if defined(CONFIG_SPD_EEPROM)
- dram_size = spd_sdram();
-#else
- dram_size = fixed_sdram();
-#endif
- return dram_size;
-}
-
-#if defined(CFG_DRAM_TEST)
-int testdram(void)
-{
- uint *pstart = (uint *) 0x00000000;
- uint *pend = (uint *) 0x08000000;
- uint *p;
-
- for (p = pstart; p < pend; p++)
- *p = 0xaaaaaaaa;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0xaaaaaaaa) {
- printf("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- for (p = pstart; p < pend; p++)
- *p = 0x55555555;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0x55555555) {
- printf("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
- return 0;
-}
-#endif
-
-#if !defined(CONFIG_SPD_EEPROM)
-/*************************************************************************
- * fixed sdram init -- doesn't use serial presence detect.
- *
- * Assumes: 128 MB, non-ECC, non-registered
- * PLB @ 133 MHz
- *
- ************************************************************************/
-long int fixed_sdram(void)
-{
- uint reg;
-
- /*--------------------------------------------------------------------
- * Setup some default
- *------------------------------------------------------------------*/
- mtsdram(mem_uabba, 0x00000000); /* ubba=0 (default) */
- mtsdram(mem_slio, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
- mtsdram(mem_devopt, 0x00000000); /* dll=0 ds=0 (normal) */
- mtsdram(mem_wddctr, 0x00000000); /* wrcp=0 dcd=0 */
- mtsdram(mem_clktr, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
-
- /*--------------------------------------------------------------------
- * Setup for board-specific specific mem
- *------------------------------------------------------------------*/
- /*
- * Following for CAS Latency = 2.5 @ 133 MHz PLB
- */
- mtsdram(mem_b0cr, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
- mtsdram(mem_tr0, 0x410a4012); /* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */
- /* RA=10 RD=3 */
- mtsdram(mem_tr1, 0x8080082f); /* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */
- mtsdram(mem_rtr, 0x08200000); /* Rate 15.625 ns @ 133 MHz PLB */
- mtsdram(mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM */
- udelay(400); /* Delay 200 usecs (min) */
-
- /*--------------------------------------------------------------------
- * Enable the controller, then wait for DCEN to complete
- *------------------------------------------------------------------*/
- mtsdram(mem_cfg0, 0x86000000); /* DCEN=1, PMUD=1, 64-bit */
- for (;;) {
- mfsdram(mem_mcsts, reg);
- if (reg & 0x80000000)
- break;
- }
-
- return (128 * 1024 * 1024); /* 128 MB */
-}
-#endif /* !defined(CONFIG_SPD_EEPROM) */
-
-/*************************************************************************
- * pci_pre_init
- *
- * This routine is called just prior to registering the hose and gives
- * the board the opportunity to check things. Returning a value of zero
- * indicates that things are bad & PCI initialization should be aborted.
- *
- * Different boards may wish to customize the pci controller structure
- * (add regions, override default access routines, etc) or perform
- * certain pre-initialization actions.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
-int pci_pre_init(struct pci_controller *hose)
-{
- unsigned long strap;
-
- /*--------------------------------------------------------------------------+
- * The ebony board is always configured as the host & requires the
- * PCI arbiter to be enabled.
- *--------------------------------------------------------------------------*/
- strap = mfdcr(cpc0_strp1);
- if ((strap & 0x00100000) == 0) {
- printf("PCI: CPC0_STRP1[PAE] not set.\n");
- return 0;
- }
-
- return 1;
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT) */
-
-/*************************************************************************
- * pci_target_init
- *
- * The bootstrap configuration provides default settings for the pci
- * inbound map (PIM). But the bootstrap config choices are limited and
- * may not be sufficient for a given board.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT)
-void pci_target_init(struct pci_controller *hose)
-{
- /*--------------------------------------------------------------------------+
- * Disable everything
- *--------------------------------------------------------------------------*/
- out32r(PCIX0_PIM0SA, 0); /* disable */
- out32r(PCIX0_PIM1SA, 0); /* disable */
- out32r(PCIX0_PIM2SA, 0); /* disable */
- out32r(PCIX0_EROMBA, 0); /* disable expansion rom */
-
- /*--------------------------------------------------------------------------+
- * Map all of SDRAM to PCI address 0x0000_0000. Note that the 440 strapping
- * options to not support sizes such as 128/256 MB.
- *--------------------------------------------------------------------------*/
- out32r(PCIX0_PIM0LAL, CFG_SDRAM_BASE);
- out32r(PCIX0_PIM0LAH, 0);
- out32r(PCIX0_PIM0SA, ~(gd->ram_size - 1) | 1);
-
- out32r(PCIX0_BAR0, 0);
-
- /*--------------------------------------------------------------------------+
- * Program the board's subsystem id/vendor id
- *--------------------------------------------------------------------------*/
- out16r(PCIX0_SBSYSVID, CFG_PCI_SUBSYS_VENDORID);
- out16r(PCIX0_SBSYSID, CFG_PCI_SUBSYS_DEVICEID);
-
- out16r(PCIX0_CMD, in16r(PCIX0_CMD) | PCI_COMMAND_MEMORY);
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT) */
-
-/*************************************************************************
- * is_pci_host
- *
- * This routine is called to determine if a pci scan should be
- * performed. With various hardware environments (especially cPCI and
- * PPMC) it's insufficient to depend on the state of the arbiter enable
- * bit in the strap register, or generic host/adapter assumptions.
- *
- * Rather than hard-code a bad assumption in the general 440 code, the
- * 440 pci code requires the board to decide at runtime.
- *
- * Return 0 for adapter mode, non-zero for host (monarch) mode.
- *
- *
- ************************************************************************/
-#if defined(CONFIG_PCI)
-int is_pci_host(struct pci_controller *hose)
-{
- /* The ebony board is always configured as host. */
- return (1);
-}
-#endif /* defined(CONFIG_PCI) */
diff --git a/board/amcc/ebony/flash.c b/board/amcc/ebony/flash.c
deleted file mode 100644
index e8fbbc493e..0000000000
--- a/board/amcc/ebony/flash.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * (C) Copyright 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002 Jun Gu <jung@artesyncp.com>
- * Add support for Am29F016D and dynamic switch setting.
- *
- * 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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-#undef DEBUG
-#ifdef DEBUG
-#define DEBUGF(x...) printf(x)
-#else
-#define DEBUGF(x...)
-#endif /* DEBUG */
-
-#define BOOT_SMALL_FLASH 32 /* 00100000 */
-#define FLASH_ONBD_N 2 /* 00000010 */
-#define FLASH_SRAM_SEL 1 /* 00000001 */
-
-#define BOOT_SMALL_FLASH_VAL 4
-#define FLASH_ONBD_N_VAL 2
-#define FLASH_SRAM_SEL_VAL 1
-
-static unsigned long flash_addr_table[8][CFG_MAX_FLASH_BANKS] = {
- {0xffc00000, 0xffe00000, 0xff880000}, /* 0:000: configuraton 3 */
- {0xffc00000, 0xffe00000, 0xff800000}, /* 1:001: configuraton 4 */
- {0xffc00000, 0xffe00000, 0x00000000}, /* 2:010: configuraton 7 */
- {0xffc00000, 0xffe00000, 0x00000000}, /* 3:011: configuraton 8 */
- {0xff800000, 0xffa00000, 0xfff80000}, /* 4:100: configuraton 1 */
- {0xff800000, 0xffa00000, 0xfff00000}, /* 5:101: configuraton 2 */
- {0xffc00000, 0xffe00000, 0x00000000}, /* 6:110: configuraton 5 */
- {0xffc00000, 0xffe00000, 0x00000000} /* 7:111: configuraton 6 */
-};
-
-/*
- * include common flash code (for amcc boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-
-unsigned long flash_init(void)
-{
- unsigned long total_b = 0;
- unsigned long size_b[CFG_MAX_FLASH_BANKS];
- unsigned char *fpga_base = (unsigned char *)CFG_FPGA_BASE;
- unsigned char switch_status;
- unsigned short index = 0;
- int i;
-
- /* read FPGA base register FPGA_REG0 */
- switch_status = *fpga_base;
-
- /* check the bitmap of switch status */
- if (switch_status & BOOT_SMALL_FLASH) {
- index += BOOT_SMALL_FLASH_VAL;
- }
- if (switch_status & FLASH_ONBD_N) {
- index += FLASH_ONBD_N_VAL;
- }
- if (switch_status & FLASH_SRAM_SEL) {
- index += FLASH_SRAM_SEL_VAL;
- }
-
- DEBUGF("\n");
- DEBUGF("FLASH: Index: %d\n", index);
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
-
- /* check whether the address is 0 */
- if (flash_addr_table[index][i] == 0) {
- continue;
- }
-
- /* call flash_get_size() to initialize sector address */
- size_b[i] = flash_get_size((vu_long *)
- flash_addr_table[index][i],
- &flash_info[i]);
- flash_info[i].size = size_b[i];
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
- i, size_b[i], size_b[i] << 20);
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
- }
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET, CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + CFG_MONITOR_LEN - 1,
- &flash_info[2]);
-#ifdef CFG_ENV_IS_IN_FLASH
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[2]);
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1,
- &flash_info[2]);
-#endif
-
- total_b += flash_info[i].size;
- }
-
- return total_b;
-}
diff --git a/board/amcc/ebony/init.S b/board/amcc/ebony/init.S
deleted file mode 100644
index cc8f8b444e..0000000000
--- a/board/amcc/ebony/init.S
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-* Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.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
-*/
-
-#include <ppc_asm.tmpl>
-#include <config.h>
-
-/* General */
-#define TLB_VALID 0x00000200
-
-/* Supported page sizes */
-
-#define SZ_1K 0x00000000
-#define SZ_4K 0x00000010
-#define SZ_16K 0x00000020
-#define SZ_64K 0x00000030
-#define SZ_256K 0x00000040
-#define SZ_1M 0x00000050
-#define SZ_16M 0x00000070
-#define SZ_256M 0x00000090
-
-/* Storage attributes */
-#define SA_W 0x00000800 /* Write-through */
-#define SA_I 0x00000400 /* Caching inhibited */
-#define SA_M 0x00000200 /* Memory coherence */
-#define SA_G 0x00000100 /* Guarded */
-#define SA_E 0x00000080 /* Endian */
-
-/* Access control */
-#define AC_X 0x00000024 /* Execute */
-#define AC_W 0x00000012 /* Write */
-#define AC_R 0x00000009 /* Read */
-
-/* Some handy macros */
-
-#define EPN(e) ((e) & 0xfffffc00)
-#define TLB0(epn,sz) ( (EPN((epn)) | (sz) | TLB_VALID ) )
-#define TLB1(rpn,erpn) ( ((rpn)&0xfffffc00) | (erpn) )
-#define TLB2(a) ( (a)&0x00000fbf )
-
-#define tlbtab_start\
- mflr r1 ;\
- bl 0f ;
-
-#define tlbtab_end\
- .long 0, 0, 0 ; \
-0: mflr r0 ; \
- mtlr r1 ; \
- blr ;
-
-#define tlbentry(epn,sz,rpn,erpn,attr)\
- .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr)
-
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- * Pointer to the table is returned in r1
- *
- *************************************************************************/
-
- .section .bootpg,"ax"
- .globl tlbtab
-
-tlbtab:
- tlbtab_start
- tlbentry( 0xf0000000, SZ_256M, 0xf0000000, 1, AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry( CFG_PERIPHERAL_BASE, SZ_256M, 0x40000000, 1, AC_R|AC_W|SA_G|SA_I)
- tlbentry( CFG_ISRAM_BASE, SZ_4K, 0x80000000, 0, AC_R|AC_W|AC_X )
- tlbentry( CFG_ISRAM_BASE + 0x1000, SZ_4K, 0x80001000, 0, AC_R|AC_W|AC_X )
- tlbentry( CFG_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
- tlbentry( CFG_PCI_BASE, SZ_256M, 0x00000000, 2, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_PCI_MEMBASE, SZ_256M, 0x00000000, 3, AC_R|AC_W|SA_G|SA_I )
- tlbtab_end
diff --git a/board/amcc/ebony/u-boot.lds b/board/amcc/ebony/u-boot.lds
deleted file mode 100644
index 5a1c5b1af4..0000000000
--- a/board/amcc/ebony/u-boot.lds
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- .bootpg 0xFFFFF000 :
- {
- cpu/ppc4xx/start.o (.bootpg)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/amcc/ebony/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/amcc/luan/Makefile b/board/amcc/luan/Makefile
deleted file mode 100644
index 5da96e9e1c..0000000000
--- a/board/amcc/luan/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/amcc/luan/config.mk b/board/amcc/luan/config.mk
deleted file mode 100644
index f52c206177..0000000000
--- a/board/amcc/luan/config.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2002
-# 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
-#
-
-#
-# esd ADCIOP boards
-#
-
-#TEXT_BASE = 0x00001000
-
-ifeq ($(ramsym),1)
-TEXT_BASE = 0xFBD00000
-else
-TEXT_BASE = 0xFFFC0000
-endif
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/amcc/luan/epld.h b/board/amcc/luan/epld.h
deleted file mode 100644
index 05362e06d7..0000000000
--- a/board/amcc/luan/epld.h
+++ /dev/null
@@ -1,85 +0,0 @@
-#define EPLD0_FSEL_FB2 0x80
-#define EPLD0_BOOT_SMALL_FLASH 0x40 /* 0 boot from large flash, 1 from small flash */
-#define EPLD0_RAW_CARD_BIT0 0x20 /* raw card EC level */
-#define EPLD0_RAW_CARD_BIT1 0x10
-#define EPLD0_RAW_CARD_BIT2 0x08
-#define EPLD0_EXT_ARB_SEL_N 0x04 /* 0 select on-board ext PCI-X, 1 internal arbiter */
-#define EPLD0_FLASH_ONBRD_N 0x02 /* 0 small flash/SRAM active, 1 block access */
-#define EPLD0_FLASH_SRAM_SEL_N 0x01 /* 0 SRAM at mem top, 1 small flash at mem top */
-
-#define EPLD1_CLK_CNTL0 0x80 /* FSEL-FB1 of MPC9772 */
-#define EPLD1_PCIX0_CNTL1 0x40 /* S*0 of 9531 */
-#define EPLD1_PCIX0_CNTL2 0x20 /* S*1 of 9531 */
-#define EPLD1_CLK_CNTL3 0x10 /* FSEL-B1 of MPC9772 */
-#define EPLD1_CLK_CNTL4 0x08 /* FSEL-B0 of MPC9772 */
-#define EPLD1_MASTER_CLOCK6 0x04 /* clock source select 6 */
-#define EPLD1_MASTER_CLOCK7 0x02 /* clock source select 7 */
-#define EPLD1_MASTER_CLOCK8 0x01 /* clock source select 8 */
-
-#define EPLD2_ETH_MODE_10 0x80 /* Ethernet mode 10 (default = 1) */
-#define EPLD2_ETH_MODE_100 0x40 /* Ethernet mode 100 (default = 1) */
-#define EPLD2_ETH_MODE_1000 0x20 /* Ethernet mode 1000 (default = 1) */
-#define EPLD2_ETH_DUPLEX_MODE 0x10 /* Ethernet force full duplex mode */
-#define EPLD2_RESET_ETH_N 0x08 /* Ethernet reset (default = 1) */
-#define EPLD2_ETH_AUTO_NEGO 0x04 /* Ethernet auto negotiation */
-#define EPLD2_DEFAULT_UART_N 0x01 /* 0 select DSR DTR for UART1 */
-
-#define EPLD3_STATUS_LED4 0x08 /* status LED 8 (1 = LED on) */
-#define EPLD3_STATUS_LED3 0x04 /* status LED 4 (1 = LED on) */
-#define EPLD3_STATUS_LED2 0x02 /* status LED 2 (1 = LED on) */
-#define EPLD3_STATUS_LED1 0x01 /* status LED 1 (1 = LED on) */
-
-#define EPLD4_PCIX0_VTH1 0x80 /* PCI-X 0 VTH1 status */
-#define EPLD4_PCIX0_VTH2 0x40 /* PCI-X 0 VTH2 status */
-#define EPLD4_PCIX0_VTH3 0x20 /* PCI-X 0 VTH3 status */
-#define EPLD4_PCIX0_VTH4 0x10 /* PCI-X 0 VTH4 status */
-#define EPLD4_PCIX1_VTH1 0x08 /* PCI-X 1 VTH1 status */
-#define EPLD4_PCIX1_VTH2 0x04 /* PCI-X 1 VTH2 status */
-#define EPLD4_PCIX1_VTH3 0x02 /* PCI-X 1 VTH3 status */
-#define EPLD4_PCIX1_VTH4 0x01 /* PCI-X 1 VTH4 status */
-
-#define EPLD5_PCIX0_INT0 0x80 /* PCIX0 INT0 status, write 0 to reset */
-#define EPLD5_PCIX0_INT1 0x40 /* PCIX0 INT1 status, write 0 to reset */
-#define EPLD5_PCIX0_INT2 0x20 /* PCIX0 INT2 status, write 0 to reset */
-#define EPLD5_PCIX0_INT3 0x10 /* PCIX0 INT3 status, write 0 to reset */
-#define EPLD5_PCIX1_INT0 0x08 /* PCIX1 INT0 status, write 0 to reset */
-#define EPLD5_PCIX1_INT1 0x04 /* PCIX1 INT1 status, write 0 to reset */
-#define EPLD5_PCIX1_INT2 0x02 /* PCIX1 INT2 status, write 0 to reset */
-#define EPLD5_PCIX1_INT3 0x01 /* PCIX1 INT3 status, write 0 to reset */
-
-#define EPLD6_PCIX0_RESET_CTL 0x80 /* 0=enable slot reset, 1=disable slot reset */
-#define EPLD6_PCIX1_RESET_CTL 0x40 /* 0=enable slot reset, 1=disable slot reset */
-#define EPLD6_ETH_INT_MODE 0x20 /* 0=IRQ5 recv's external eth int */
-#define EPLD6_PCIX2_RESET_CTL 0x10 /* 0=enable slot reset, 1=disable slot reset */
-#define EPLD6_PCI1_CLKCNTL1 0x80 /* PCI1 clock control S*0 of 9531 */
-#define EPLD6_PCI1_CLKCNTL2 0x40 /* PCI1 clock control S*1 of 9531 */
-#define EPLD6_PCI2_CLKCNTL1 0x20 /* PCI2 clock control S*0 of 9531 */
-#define EPLD6_PCI2_CLKCNTL2 0x10 /* PCI2 clock control S*1 of 9531 */
-
-#define EPLD7_VTH1 0x80 /* PCI2 VTH1 status */
-#define EPLD7_VTH2 0x40 /* PCI2 VTH2 status */
-#define EPLD7_VTH3 0x20 /* PCI2 VTH3 status */
-#define EPLD7_VTH4 0x10 /* PCI2 VTH4 status */
-#define EPLD7_INTA_MODE 0x80 /* see S5 on SW2 for details */
-#define EPLD7_PCI_INT_MODE_N 0x40 /* see S1 on SW2 for details */
-#define EPLD7_WRITE_ENABLE_GPIO 0x20 /* see S2 on SW2 for details */
-#define EPLD7_WRITE_ENABLE_INT 0x10 /* see S3 on SW2 for details */
-
-
-typedef struct {
- unsigned char status; /* misc status */
- unsigned char clock; /* clock status, PCI-X clock control */
- unsigned char ethuart; /* Ethernet, UART status */
- unsigned char leds; /* LED register */
- unsigned char vth01; /* PCI0, PCI1 VTH register */
- unsigned char pciints; /* PCI0, PCI1 interrupts */
- unsigned char pci2; /* PCI2 interrupts, clock control */
- unsigned char vth2; /* PCI2 VTH register */
- unsigned char filler1[4096-8];
- unsigned char gpio00; /* GPIO bits 0-7 */
- unsigned char gpio08; /* GPIO bits 8-15 */
- unsigned char gpio16; /* GPIO bits 16-23 */
- unsigned char gpio24; /* GPIO bits 24-31 */
- unsigned char filler2[4096-4];
- unsigned char version; /* EPLD version */
-} epld_t;
diff --git a/board/amcc/luan/flash.c b/board/amcc/luan/flash.c
deleted file mode 100644
index d3c3c0d058..0000000000
--- a/board/amcc/luan/flash.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * (C) Copyright 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002 Jun Gu <jung@artesyncp.com>
- * Add support for Am29F016D and dynamic switch setting.
- *
- * 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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-#undef DEBUG
-#ifdef DEBUG
-#define DEBUGF(x...) printf(x)
-#else
-#define DEBUGF(x...)
-#endif /* DEBUG */
-
-static unsigned long flash_addr_table[1][CFG_MAX_FLASH_BANKS] = {
- {0xff900000, 0xff980000, 0xffc00000}, /* 0:000: configuraton 3 */
-};
-
-/*
- * include common flash code (for amcc boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-
-unsigned long flash_init(void)
-{
- unsigned long total_b = 0;
- unsigned long size_b[CFG_MAX_FLASH_BANKS];
- unsigned short index = 0;
- int i;
-
- /* read FPGA base register FPGA_REG0 */
-
- DEBUGF("\n");
- DEBUGF("FLASH: Index: %d\n", index);
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
-
- /* check whether the address is 0 */
- if (flash_addr_table[index][i] == 0) {
- continue;
- }
-
- /* call flash_get_size() to initialize sector address */
- size_b[i] = flash_get_size((vu_long *)
- flash_addr_table[index][i],
- &flash_info[i]);
- flash_info[i].size = size_b[i];
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
- i, size_b[i], size_b[i] << 20);
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
- }
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET, CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + CFG_MONITOR_LEN - 1,
- &flash_info[2]);
-#ifdef CFG_ENV_IS_IN_FLASH
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[2]);
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1,
- &flash_info[2]);
-#endif
-
- total_b += flash_info[i].size;
- }
-
- return total_b;
-}
diff --git a/board/amcc/luan/init.S b/board/amcc/luan/init.S
deleted file mode 100644
index 7830ebdfa6..0000000000
--- a/board/amcc/luan/init.S
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
-*
-* 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 <ppc_asm.tmpl>
-#include <config.h>
-
-/* General */
-#define TLB_VALID 0x00000200
-
-/* Supported page sizes */
-
-#define SZ_1K 0x00000000
-#define SZ_4K 0x00000010
-#define SZ_16K 0x00000020
-#define SZ_64K 0x00000030
-#define SZ_256K 0x00000040
-#define SZ_1M 0x00000050
-#define SZ_16M 0x00000070
-#define SZ_256M 0x00000090
-
-/* Storage attributes */
-#define SA_W 0x00000800 /* Write-through */
-#define SA_I 0x00000400 /* Caching inhibited */
-#define SA_M 0x00000200 /* Memory coherence */
-#define SA_G 0x00000100 /* Guarded */
-#define SA_E 0x00000080 /* Endian */
-
-/* Access control */
-#define AC_X 0x00000024 /* Execute */
-#define AC_W 0x00000012 /* Write */
-#define AC_R 0x00000009 /* Read */
-
-/* Some handy macros */
-
-#define EPN(e) ((e) & 0xfffffc00)
-#define TLB0(epn,sz) ( (EPN((epn)) | (sz) | TLB_VALID ) )
-#define TLB1(rpn,erpn) ( ((rpn)&0xfffffc00) | (erpn) )
-#define TLB2(a) ( (a)&0x00000fbf )
-
-#define tlbtab_start\
- mflr r1 ;\
- bl 0f ;
-
-#define tlbtab_end\
- .long 0, 0, 0 ; \
-0: mflr r0 ; \
- mtlr r1 ; \
- blr ;
-
-#define tlbentry(epn,sz,rpn,erpn,attr)\
- .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr)
-
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- * Pointer to the table is returned in r1
- *
- *************************************************************************/
-
- .section .bootpg,"ax"
- .globl tlbtab
-
-tlbtab:
- tlbtab_start
-
-#if (CFG_LARGE_FLASH == 0xffc00000) /* if booting from large flash */
- /* large flash */
- tlbentry( 0xffc00000, SZ_1M, 0xffc00000, 1, AC_R|AC_W|AC_X|SA_G|SA_I|SA_W )
- tlbentry( 0xffd00000, SZ_1M, 0xffd00000, 1, AC_R|AC_W|AC_X|SA_G|SA_I|SA_W )
- tlbentry( 0xffe00000, SZ_1M, 0xffe00000, 1, AC_R|AC_W|AC_X|SA_G|SA_I|SA_W )
- tlbentry( 0xfff00000, SZ_1M, 0xfff00000, 1, AC_R|AC_W|AC_X|SA_G|SA_I|SA_W )
-
- tlbentry( 0xff800000, SZ_1M, 0xff800000, 1, AC_R|AC_W|AC_X|SA_G/*|SA_I*/ )
- tlbentry( 0xff900000, SZ_1M, 0xff900000, 1, AC_R|AC_W|AC_X|SA_G|SA_I|SA_W )
-#else /* else booting from small flash */
- tlbentry( 0xffe00000, SZ_1M, 0xffe00000, 1, AC_R|AC_W|AC_X|SA_G/*|SA_I*/ )
- tlbentry( 0xfff00000, SZ_1M, 0xfff00000, 1, AC_R|AC_W|AC_X|SA_G/*|SA_I*/ )
-
- tlbentry( 0xff800000, SZ_1M, 0xff800000, 1, AC_R|AC_W|AC_X|SA_G/*|SA_I*/ )
- tlbentry( 0xff900000, SZ_1M, 0xff900000, 1, AC_R|AC_W|AC_X|SA_G/*|SA_I*/ )
- tlbentry( 0xffa00000, SZ_1M, 0xffa00000, 1, AC_R|AC_W|AC_X|SA_G/*|SA_I*/ )
- tlbentry( 0xffb00000, SZ_1M, 0xffb00000, 1, AC_R|AC_W|AC_X|SA_G/*|SA_I*/ )
-#endif
-
- tlbentry( CFG_EPLD_BASE, SZ_256K, 0xff000000, 1, AC_R|AC_W|SA_G|SA_I )
-
-#if (CFG_SRAM_BASE != 0) /* if SRAM up high and SDRAM at zero */
- tlbentry( 0x00000000, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
- tlbentry( 0x10000000, SZ_256M, 0x10000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
-#elif (CFG_SMALL_FLASH == 0xff900000) /* else SRAM at 0 */
- tlbentry( 0x00000000, SZ_1M, 0xff800000, 1, AC_R|AC_W|AC_X|SA_G/*|SA_I*/ )
-#elif (CFG_SMALL_FLASH == 0xfff00000)
- tlbentry( 0x00000000, SZ_1M, 0xffe00000, 1, AC_R|AC_W|AC_X|SA_G/*|SA_I*/ )
-#else
- #error DONT KNOW SRAM LOCATION
-#endif
-
- /* internal ram (l2 cache) */
- tlbentry( CFG_ISRAM_BASE, SZ_256K, 0x80000000, 0, AC_R|AC_W|AC_X|SA_I )
-
- /* peripherals at f0000000 */
- tlbentry( CFG_PERIPHERAL_BASE, SZ_4K, CFG_PERIPHERAL_BASE, 1, AC_R|AC_W|SA_G|SA_I )
-
- /* PCI */
-#if (CONFIG_COMMANDS & CFG_CMD_PCI)
- tlbentry( CFG_PCI_BASE, SZ_256M, 0x00000000, 9, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_PCI_MEMBASE, SZ_256M, 0x10000000, 9, AC_R|AC_W|SA_G|SA_I )
-#endif
- tlbtab_end
diff --git a/board/amcc/luan/luan.c b/board/amcc/luan/luan.c
deleted file mode 100644
index 06a57f6c4a..0000000000
--- a/board/amcc/luan/luan.c
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * (C) Copyright 2005
- * John Otken, jotken@softadvances.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
- */
-
-#include <common.h>
-#include <command.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-#include <spd_sdram.h>
-#include "epld.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-
-/*************************************************************************
- * int board_early_init_f()
- *
- ************************************************************************/
-int board_early_init_f(void)
-{
- volatile epld_t *x = (epld_t *) CFG_EPLD_BASE;
-
- mtebc( pb0ap, 0x03800000 ); /* set chip selects */
- mtebc( pb0cr, 0xffc58000 ); /* ebc0_b0cr, 4MB at 0xffc00000 CS0 */
- mtebc( pb1ap, 0x03800000 );
- mtebc( pb1cr, 0xff018000 ); /* ebc0_b1cr, 1MB at 0xff000000 CS1 */
- mtebc( pb2ap, 0x03800000 );
- mtebc( pb2cr, 0xff838000 ); /* ebc0_b2cr, 2MB at 0xff800000 CS2 */
-
- mtdcr( uic1sr, 0xffffffff ); /* Clear all interrupts */
- mtdcr( uic1er, 0x00000000 ); /* disable all interrupts */
- mtdcr( uic1cr, 0x00000000 ); /* Set Critical / Non Critical interrupts */
- mtdcr( uic1pr, 0x7fff83ff ); /* Set Interrupt Polarities */
- mtdcr( uic1tr, 0x001f8000 ); /* Set Interrupt Trigger Levels */
- mtdcr( uic1vr, 0x00000001 ); /* Set Vect base=0,INT31 Highest priority */
- mtdcr( uic1sr, 0x00000000 ); /* clear all interrupts */
- mtdcr( uic1sr, 0xffffffff );
-
- mtdcr( uic0sr, 0xffffffff ); /* Clear all interrupts */
- mtdcr( uic0er, 0x00000000 ); /* disable all interrupts excepted cascade */
- mtdcr( uic0cr, 0x00000001 ); /* Set Critical / Non Critical interrupts */
- mtdcr( uic0pr, 0xffffffff ); /* Set Interrupt Polarities */
- mtdcr( uic0tr, 0x01000004 ); /* Set Interrupt Trigger Levels */
- mtdcr( uic0vr, 0x00000001 ); /* Set Vect base=0,INT31 Highest priority */
- mtdcr( uic0sr, 0x00000000 ); /* clear all interrupts */
- mtdcr( uic0sr, 0xffffffff );
-
- x->ethuart &= ~EPLD2_RESET_ETH_N; /* put Ethernet+PHY in reset */
-
- return 0;
-}
-
-
-/*************************************************************************
- * int misc_init_r()
- *
- ************************************************************************/
-int misc_init_r(void)
-{
- volatile epld_t *x = (epld_t *) CFG_EPLD_BASE;
- x->ethuart |= EPLD2_RESET_ETH_N; /* take Ethernet+PHY out of reset */
-
- return 0;
-}
-
-
-/*************************************************************************
- * int checkboard()
- *
- ************************************************************************/
-int checkboard(void)
-{
- char *s = getenv("serial#");
-
- printf("Board: Luan - AMCC PPC440SP Evaluation Board");
-
- if (s != NULL) {
- puts(", serial# ");
- puts(s);
- }
- putc('\n');
-
- return 0;
-}
-
-
-/*************************************************************************
- * long int fixed_sdram()
- *
- ************************************************************************/
-static long int fixed_sdram(void)
-{ /* DDR2 init from BDI2000 script */
- mtdcr( 0x10, 0x00000021 ); /* MCIF0_MCOPT2 - zero DCEN bit */
- mtdcr( 0x11, 0x84000000 );
- mtdcr( 0x10, 0x00000020 ); /* MCIF0_MCOPT1 - no ECC, 64 bits, 4 banks, DDR2 */
- mtdcr( 0x11, 0x2D122000 );
- mtdcr( 0x10, 0x00000026 ); /* MCIF0_CODT - die termination on */
- mtdcr( 0x11, 0x00800026 );
- mtdcr( 0x10, 0x00000081 ); /* MCIF0_WRDTR - Write DQS Adv 90 + Fractional DQS Delay */
- mtdcr( 0x11, 0x82000800 );
- mtdcr( 0x10, 0x00000080 ); /* MCIF0_CLKTR - advance addr clock by 180 deg */
- mtdcr( 0x11, 0x80000000 );
- mtdcr( 0x10, 0x00000040 ); /* MCIF0_MB0CF - turn on CS0, N x 10 coll */
- mtdcr( 0x11, 0x00000201 );
- mtdcr( 0x10, 0x00000044 ); /* MCIF0_MB1CF - turn on CS0, N x 10 coll */
- mtdcr( 0x11, 0x00000201 );
- mtdcr( 0x10, 0x00000030 ); /* MCIF0_RTR - refresh every 7.8125uS */
- mtdcr( 0x11, 0x08200000 );
- mtdcr( 0x10, 0x00000085 ); /* MCIF0_SDTR1 - timing register 1 */
- mtdcr( 0x11, 0x80201000 );
- mtdcr( 0x10, 0x00000086 ); /* MCIF0_SDTR2 - timing register 2 */
- mtdcr( 0x11, 0x42103242 );
- mtdcr( 0x10, 0x00000087 ); /* MCIF0_SDTR3 - timing register 3 */
- mtdcr( 0x11, 0x0C100D14 );
- mtdcr( 0x10, 0x00000088 ); /* MCIF0_MMODE - CAS is 4 cycles */
- mtdcr( 0x11, 0x00000642 );
- mtdcr( 0x10, 0x00000089 ); /* MCIF0_MEMODE - diff DQS disabled */
- mtdcr( 0x11, 0x00000400 ); /* ODT term disabled */
-
- mtdcr( 0x10, 0x00000050 ); /* MCIF0_INITPLR0 - NOP */
- mtdcr( 0x11, 0x81b80000 );
- mtdcr( 0x10, 0x00000051 ); /* MCIF0_INITPLR1 - PRE */
- mtdcr( 0x11, 0x82100400 );
- mtdcr( 0x10, 0x00000052 ); /* MCIF0_INITPLR2 - EMR2 */
- mtdcr( 0x11, 0x80820000 );
- mtdcr( 0x10, 0x00000053 ); /* MCIF0_INITPLR3 - EMR3 */
- mtdcr( 0x11, 0x80830000 );
- mtdcr( 0x10, 0x00000054 ); /* MCIF0_INITPLR4 - EMR DLL ENABLE */
- mtdcr( 0x11, 0x80810000 );
- mtdcr( 0x10, 0x00000055 ); /* MCIF0_INITPLR5 - MR DLL RESET */
- mtdcr( 0x11, 0x80800542 );
- mtdcr( 0x10, 0x00000056 ); /* MCIF0_INITPLR6 - PRE */
- mtdcr( 0x11, 0x82100400 );
- mtdcr( 0x10, 0x00000057 ); /* MCIF0_INITPLR7 - refresh */
- mtdcr( 0x11, 0x99080000 );
- mtdcr( 0x10, 0x00000058 ); /* MCIF0_INITPLR8 */
- mtdcr( 0x11, 0x99080000 );
- mtdcr( 0x10, 0x00000059 ); /* MCIF0_INITPLR9 */
- mtdcr( 0x11, 0x99080000 );
- mtdcr( 0x10, 0x0000005A ); /* MCIF0_INITPLR10 */
- mtdcr( 0x11, 0x99080000 );
- mtdcr( 0x10, 0x0000005B ); /* MCIF0_INITPLR11 - MR */
- mtdcr( 0x11, 0x80800442 );
- mtdcr( 0x10, 0x0000005C ); /* MCIF0_INITPLR12 - EMR OCD Default */
- mtdcr( 0x11, 0x80810380 );
- mtdcr( 0x10, 0x0000005D ); /* MCIF0_INITPLR13 - EMR OCD exit */
- mtdcr( 0x11, 0x80810000 );
- udelay( 10*1000 );
-
- mtdcr( 0x10, 0x00000021 ); /* MCIF0_MCOPT2 - execute preloaded init */
- mtdcr( 0x11, 0x28000000 ); /* set DC_EN */
- udelay( 100*1000 );
-
- mtdcr( 0x40, 0x0000F800 ); /* MQ0_B0BAS: base addr 00000000 / 256MB */
- mtdcr( 0x41, 0x1000F800 ); /* MQ0_B1BAS: base addr 10000000 / 256MB */
-
- mtdcr( 0x10, 0x00000078 ); /* MCIF0_RDCC - auto set read stage */
- mtdcr( 0x11, 0x00000000 );
- mtdcr( 0x10, 0x00000070 ); /* MCIF0_RQDC - read DQS delay control */
- mtdcr( 0x11, 0x8000003A ); /* enabled, frac DQS delay */
- mtdcr( 0x10, 0x00000074 ); /* MCIF0_RFDC - two clock feedback delay */
- mtdcr( 0x11, 0x00000200 );
-
- return 512 << 20;
-}
-
-
-/*************************************************************************
- * long int initdram
- *
- ************************************************************************/
-long int initdram( int board_type )
-{
- long dram_size = 0;
-
-#if defined(CONFIG_SPD_EEPROM)
- dram_size = spd_sdram (0);
-#else
- dram_size = fixed_sdram ();
-#endif
-
- return dram_size;
-}
-
-
-/*************************************************************************
- * int testdram()
- *
- ************************************************************************/
-#if defined(CFG_DRAM_TEST)
-int testdram(void)
-{
- unsigned long *mem = (unsigned long *) 0;
- const unsigned long kend = (1024 / sizeof(unsigned long));
- unsigned long k, n;
-
- mtmsr(0);
-
- for (k = 0; k < CFG_KBYTES_SDRAM;
- ++k, mem += (1024 / sizeof(unsigned long))) {
- if ((k & 1023) == 0) {
- printf("%3d MB\r", k / 1024);
- }
-
- memset(mem, 0xaaaaaaaa, 1024);
- for (n = 0; n < kend; ++n) {
- if (mem[n] != 0xaaaaaaaa) {
- printf("SDRAM test fails at: %08x\n",
- (uint) & mem[n]);
- return 1;
- }
- }
-
- memset(mem, 0x55555555, 1024);
- for (n = 0; n < kend; ++n) {
- if (mem[n] != 0x55555555) {
- printf("SDRAM test fails at: %08x\n",
- (uint) & mem[n]);
- return 1;
- }
- }
- }
- printf("SDRAM test passes\n");
-
- return 0;
-}
-#endif
-
-
-/*************************************************************************
- * pci_pre_init
- *
- * This routine is called just prior to registering the hose and gives
- * the board the opportunity to check things. Returning a value of zero
- * indicates that things are bad & PCI initialization should be aborted.
- *
- * Different boards may wish to customize the pci controller structure
- * (add regions, override default access routines, etc) or perform
- * certain pre-initialization actions.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
-int pci_pre_init( struct pci_controller *hose )
-{
- unsigned long strap;
-
- /*--------------------------------------------------------------------------+
- * The luan board is always configured as the host & requires the
- * PCI arbiter to be enabled.
- *--------------------------------------------------------------------------*/
- mfsdr(sdr_sdstp1, strap);
- if( (strap & SDR0_SDSTP1_PAE_MASK) == 0 ) {
- printf("PCI: SDR0_STRP1[%08lX] - PCI Arbiter disabled.\n",strap);
-
- return 0;
- }
-
- return 1;
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT) */
-
-
-/*************************************************************************
- * pci_target_init
- *
- * The bootstrap configuration provides default settings for the pci
- * inbound map (PIM). But the bootstrap config choices are limited and
- * may not be sufficient for a given board.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT)
-void pci_target_init(struct pci_controller *hose)
-{
- /*--------------------------------------------------------------------------+
- * Disable everything
- *--------------------------------------------------------------------------*/
- out32r( PCIX0_PIM0SA, 0 ); /* disable */
- out32r( PCIX0_PIM1SA, 0 ); /* disable */
- out32r( PCIX0_PIM2SA, 0 ); /* disable */
- out32r( PCIX0_EROMBA, 0 ); /* disable expansion rom */
-
- /*--------------------------------------------------------------------------+
- * Map all of SDRAM to PCI address 0x0000_0000. Note that the 440 strapping
- * options to not support sizes such as 128/256 MB.
- *--------------------------------------------------------------------------*/
- out32r( PCIX0_PIM0LAL, CFG_SDRAM_BASE );
- out32r( PCIX0_PIM0LAH, 0 );
- out32r( PCIX0_PIM0SA, ~(gd->ram_size - 1) | 1 );
-
- out32r( PCIX0_BAR0, 0 );
-
- /*--------------------------------------------------------------------------+
- * Program the board's subsystem id/vendor id
- *--------------------------------------------------------------------------*/
- out16r( PCIX0_SBSYSVID, CFG_PCI_SUBSYS_VENDORID );
- out16r( PCIX0_SBSYSID, CFG_PCI_SUBSYS_DEVICEID );
-
- out16r( PCIX0_CMD, in16r(PCIX0_CMD) | PCI_COMMAND_MEMORY );
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT) */
-
-
-/*************************************************************************
- * is_pci_host
- *
- * This routine is called to determine if a pci scan should be
- * performed. With various hardware environments (especially cPCI and
- * PPMC) it's insufficient to depend on the state of the arbiter enable
- * bit in the strap register, or generic host/adapter assumptions.
- *
- * Rather than hard-code a bad assumption in the general 440 code, the
- * 440 pci code requires the board to decide at runtime.
- *
- * Return 0 for adapter mode, non-zero for host (monarch) mode.
- *
- *
- ************************************************************************/
-#if defined(CONFIG_PCI)
-int is_pci_host(struct pci_controller *hose)
-{
- return 1;
-}
-#endif /* defined(CONFIG_PCI) */
-
-
-/*************************************************************************
- * hw_watchdog_reset
- *
- * This routine is called to reset (keep alive) the watchdog timer
- *
- ************************************************************************/
-#if defined(CONFIG_HW_WATCHDOG)
-void hw_watchdog_reset(void)
-{
-}
-#endif
-
-
-/*************************************************************************
- * int on_off()
- *
- ************************************************************************/
-static int on_off( const char *s )
-{
- if (strcmp(s, "on") == 0) {
- return 1;
- } else if (strcmp(s, "off") == 0) {
- return 0;
- }
- return -1;
-}
-
-
-/*************************************************************************
- * void l2cache_disable()
- *
- ************************************************************************/
-static void l2cache_disable(void)
-{
- mtdcr( l2_cache_cfg, 0 );
-}
-
-
-/*************************************************************************
- * void l2cache_enable()
- *
- ************************************************************************/
-static void l2cache_enable(void) /* see p258 7.4.1 Enabling L2 Cache */
-{
- mtdcr( l2_cache_cfg, 0x80000000 ); /* enable L2_MODE L2_CFG[L2M] */
-
- mtdcr( l2_cache_addr, 0 ); /* set L2_ADDR with all zeros */
-
- mtdcr( l2_cache_cmd, 0x80000000 ); /* issue HCLEAR command via L2_CMD */
-
- while (!(mfdcr( l2_cache_stat ) & 0x80000000 )) ;; /* poll L2_SR for completion */
-
- mtdcr( l2_cache_cmd, 0x10000000 ); /* clear cache errors L2_CMD[CCP] */
-
- mtdcr( l2_cache_cmd, 0x08000000 ); /* clear tag errors L2_CMD[CTE] */
-
- mtdcr( l2_cache_snp0, 0 ); /* snoop registers */
- mtdcr( l2_cache_snp1, 0 );
-
- __asm__ volatile ("sync"); /* msync */
-
- mtdcr( l2_cache_cfg, 0xe0000000 ); /* inst and data use L2 */
-
- __asm__ volatile ("sync");
-}
-
-
-/*************************************************************************
- * int l2cache_status()
- *
- ************************************************************************/
-static int l2cache_status(void)
-{
- return (mfdcr( l2_cache_cfg ) & 0x60000000) != 0;
-}
-
-
-/*************************************************************************
- * int do_l2cache()
- *
- ************************************************************************/
-int do_l2cache( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[] )
-{
- switch (argc) {
- case 2: /* on / off */
- switch (on_off(argv[1])) {
- case 0: l2cache_disable();
- break;
- case 1: l2cache_enable();
- break;
- }
- /* FALL TROUGH */
- case 1: /* get status */
- printf ("L2 Cache is %s\n",
- l2cache_status() ? "ON" : "OFF");
- return 0;
- default:
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- return 0;
-}
-
-
-U_BOOT_CMD(
- l2cache, 2, 1, do_l2cache,
- "l2cache - enable or disable L2 cache\n",
- "[on, off]\n"
- " - enable or disable L2 cache\n"
- );
diff --git a/board/amcc/luan/u-boot.lds b/board/amcc/luan/u-boot.lds
deleted file mode 100644
index d122f499f1..0000000000
--- a/board/amcc/luan/u-boot.lds
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- .bootpg 0xFFFFF000 :
- {
- cpu/ppc4xx/start.o (.bootpg)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/amcc/luan/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/amcc/ocotea/Makefile b/board/amcc/ocotea/Makefile
deleted file mode 100644
index a758650e59..0000000000
--- a/board/amcc/ocotea/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend *~
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/amcc/ocotea/config.mk b/board/amcc/ocotea/config.mk
deleted file mode 100644
index 9e1833591a..0000000000
--- a/board/amcc/ocotea/config.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2004
-# 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
-#
-
-#
-# AMCC 440GX Reference Platform (Ocotea) board
-#
-
-#TEXT_BASE = 0xFFFE0000
-
-ifeq ($(ramsym),1)
-TEXT_BASE = 0x07FD0000
-else
-TEXT_BASE = 0xFFFC0000
-endif
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/amcc/ocotea/flash.c b/board/amcc/ocotea/flash.c
deleted file mode 100644
index 5614e20780..0000000000
--- a/board/amcc/ocotea/flash.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (C) Copyright 2004-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002 Jun Gu <jung@artesyncp.com>
- * Add support for Am29F016D and dynamic switch setting.
- *
- * 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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-#undef DEBUG
-
-#ifdef DEBUG
-#define DEBUGF(x...) printf(x)
-#else
-#define DEBUGF(x...)
-#endif /* DEBUG */
-
-#define BOOT_SMALL_FLASH 0x40 /* 01000000 */
-#define FLASH_ONBD_N 2 /* 00000010 */
-#define FLASH_SRAM_SEL 1 /* 00000001 */
-#define FLASH_ONBD_N 2 /* 00000010 */
-#define FLASH_SRAM_SEL 1 /* 00000001 */
-
-#define BOOT_SMALL_FLASH_VAL 4
-#define FLASH_ONBD_N_VAL 2
-#define FLASH_SRAM_SEL_VAL 1
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-static unsigned long flash_addr_table[8][CFG_MAX_FLASH_BANKS] = {
- {0xFF800000, 0xFF880000, 0xFFC00000}, /* 0:000: configuraton 4 */
- {0xFF900000, 0xFF980000, 0xFFC00000}, /* 1:001: configuraton 3 */
- {0x00000000, 0x00000000, 0x00000000}, /* 2:010: configuraton 8 */
- {0x00000000, 0x00000000, 0x00000000}, /* 3:011: configuraton 7 */
- {0xFFE00000, 0xFFF00000, 0xFF800000}, /* 4:100: configuraton 2 */
- {0xFFF00000, 0xFFF80000, 0xFF800000}, /* 5:101: configuraton 1 */
- {0x00000000, 0x00000000, 0x00000000}, /* 6:110: configuraton 6 */
- {0x00000000, 0x00000000, 0x00000000} /* 7:111: configuraton 5 */
-};
-
-/*
- * include common flash code (for amcc boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-static int write_word(flash_info_t * info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init(void)
-{
- unsigned long total_b = 0;
- unsigned long size_b[CFG_MAX_FLASH_BANKS];
- unsigned char *fpga_base = (unsigned char *)CFG_FPGA_BASE;
- unsigned char switch_status;
- unsigned short index = 0;
- int i;
-
- /* read FPGA base register FPGA_REG0 */
- switch_status = *fpga_base;
-
- /* check the bitmap of switch status */
- if (switch_status & BOOT_SMALL_FLASH) {
- index += BOOT_SMALL_FLASH_VAL;
- }
- if (switch_status & FLASH_ONBD_N) {
- index += FLASH_ONBD_N_VAL;
- }
- if (switch_status & FLASH_SRAM_SEL) {
- index += FLASH_SRAM_SEL_VAL;
- }
-
- DEBUGF("\n");
- DEBUGF("FLASH: Index: %d\n", index);
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
-
- /* check whether the address is 0 */
- if (flash_addr_table[index][i] == 0) {
- continue;
- }
-
- /* call flash_get_size() to initialize sector address */
- size_b[i] =
- flash_get_size((vu_long *) flash_addr_table[index][i],
- &flash_info[i]);
- flash_info[i].size = size_b[i];
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf
- ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
- i, size_b[i], size_b[i] << 20);
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
- }
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET, CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + CFG_MONITOR_LEN - 1,
- &flash_info[i]);
-#ifdef CFG_ENV_IS_IN_FLASH
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[i]);
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1,
- &flash_info[i]);
-#endif
-
- total_b += flash_info[i].size;
- }
-
- return total_b;
-}
diff --git a/board/amcc/ocotea/init.S b/board/amcc/ocotea/init.S
deleted file mode 100644
index 7e0b132492..0000000000
--- a/board/amcc/ocotea/init.S
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.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
- */
-
-#include <ppc_asm.tmpl>
-#include <config.h>
-
-/* General */
-#define TLB_VALID 0x00000200
-#define _256M 0x10000000
-
-/* Supported page sizes */
-
-#define SZ_1K 0x00000000
-#define SZ_4K 0x00000010
-#define SZ_16K 0x00000020
-#define SZ_64K 0x00000030
-#define SZ_256K 0x00000040
-#define SZ_1M 0x00000050
-#define SZ_8M 0x00000060
-#define SZ_16M 0x00000070
-#define SZ_256M 0x00000090
-
-/* Storage attributes */
-#define SA_W 0x00000800 /* Write-through */
-#define SA_I 0x00000400 /* Caching inhibited */
-#define SA_M 0x00000200 /* Memory coherence */
-#define SA_G 0x00000100 /* Guarded */
-#define SA_E 0x00000080 /* Endian */
-
-/* Access control */
-#define AC_X 0x00000024 /* Execute */
-#define AC_W 0x00000012 /* Write */
-#define AC_R 0x00000009 /* Read */
-
-/* Some handy macros */
-
-#define EPN(e) ((e) & 0xfffffc00)
-#define TLB0(epn,sz) ( (EPN((epn)) | (sz) | TLB_VALID ) )
-#define TLB1(rpn,erpn) ( ((rpn)&0xfffffc00) | (erpn) )
-#define TLB2(a) ( (a)&0x00000fbf )
-
-#define tlbtab_start\
- mflr r1 ;\
- bl 0f ;
-
-#define tlbtab_end\
- .long 0, 0, 0 ; \
-0: mflr r0 ; \
- mtlr r1 ; \
- blr ;
-
-#define tlbentry(epn,sz,rpn,erpn,attr)\
- .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr)
-
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- * Pointer to the table is returned in r1
- *
- *************************************************************************/
-
- .section .bootpg,"ax"
- .globl tlbtab
-
-tlbtab:
- tlbtab_start
- tlbentry( 0xf0000000, SZ_256M, 0xf0000000, 1, AC_R|AC_W|AC_X|SA_G|SA_I )
- tlbentry( CFG_PERIPHERAL_BASE, SZ_256M, 0x40000000, 1, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_ISRAM_BASE, SZ_4K, 0x80000000, 0, AC_R|AC_W|AC_X )
- tlbentry( CFG_ISRAM_BASE + 0x1000, SZ_4K, 0x80001000, 0, AC_R|AC_W|AC_X )
- tlbentry( CFG_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
- tlbentry( CFG_SDRAM_BASE + 0x10000000, SZ_256M, 0x10000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
- tlbentry( CFG_SDRAM_BASE + 0x20000000, SZ_256M, 0x20000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
- tlbentry( CFG_SDRAM_BASE + 0x30000000, SZ_256M, 0x30000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
- tlbentry( CFG_PCI_BASE, SZ_256M, 0x00000000, 2, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_PCI_MEMBASE, SZ_256M, 0x00000000, 3, AC_R|AC_W|SA_G|SA_I )
- tlbtab_end
diff --git a/board/amcc/ocotea/ocotea.c b/board/amcc/ocotea/ocotea.c
deleted file mode 100644
index 3f6d2042d7..0000000000
--- a/board/amcc/ocotea/ocotea.c
+++ /dev/null
@@ -1,528 +0,0 @@
-/*
- * Copyright (C) 2004 PaulReynolds@lhsolutions.com
- *
- * (C) Copyright 2005
- * Stefan Roese, DENX Software Engineering, sr@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 <common.h>
-#include "ocotea.h"
-#include <asm/processor.h>
-#include <spd_sdram.h>
-#include <ppc4xx_enet.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define BOOT_SMALL_FLASH 32 /* 00100000 */
-#define FLASH_ONBD_N 2 /* 00000010 */
-#define FLASH_SRAM_SEL 1 /* 00000001 */
-
-long int fixed_sdram (void);
-void fpga_init (void);
-
-int board_early_init_f (void)
-{
- unsigned long mfr;
- unsigned char *fpga_base = (unsigned char *) CFG_FPGA_BASE;
- unsigned char switch_status;
- unsigned long cs0_base;
- unsigned long cs0_size;
- unsigned long cs0_twt;
- unsigned long cs2_base;
- unsigned long cs2_size;
- unsigned long cs2_twt;
-
- /*-------------------------------------------------------------------------+
- | Initialize EBC CONFIG
- +-------------------------------------------------------------------------*/
- mtebc(xbcfg, EBC_CFG_LE_UNLOCK |
- EBC_CFG_PTD_ENABLE | EBC_CFG_RTC_64PERCLK |
- EBC_CFG_ATC_PREVIOUS | EBC_CFG_DTC_PREVIOUS |
- EBC_CFG_CTC_PREVIOUS | EBC_CFG_EMC_NONDEFAULT |
- EBC_CFG_PME_DISABLE | EBC_CFG_PR_32);
-
- /*-------------------------------------------------------------------------+
- | FPGA. Initialize bank 7 with default values.
- +-------------------------------------------------------------------------*/
- mtebc(pb7ap, EBC_BXAP_BME_DISABLED|EBC_BXAP_TWT_ENCODE(7)|
- EBC_BXAP_BCE_DISABLE|
- EBC_BXAP_CSN_ENCODE(1)|EBC_BXAP_OEN_ENCODE(1)|
- EBC_BXAP_WBN_ENCODE(1)|EBC_BXAP_WBF_ENCODE(1)|
- EBC_BXAP_TH_ENCODE(1)|EBC_BXAP_RE_DISABLED|
- EBC_BXAP_BEM_WRITEONLY|
- EBC_BXAP_PEN_DISABLED);
- mtebc(pb7cr, EBC_BXCR_BAS_ENCODE(0x48300000)|
- EBC_BXCR_BS_1MB|EBC_BXCR_BU_RW|EBC_BXCR_BW_8BIT);
-
- /* read FPGA base register FPGA_REG0 */
- switch_status = *fpga_base;
-
- if (switch_status & 0x40) {
- cs0_base = 0xFFE00000;
- cs0_size = EBC_BXCR_BS_2MB;
- cs0_twt = 8;
- cs2_base = 0xFF800000;
- cs2_size = EBC_BXCR_BS_4MB;
- cs2_twt = 10;
- } else {
- cs0_base = 0xFFC00000;
- cs0_size = EBC_BXCR_BS_4MB;
- cs0_twt = 10;
- cs2_base = 0xFF800000;
- cs2_size = EBC_BXCR_BS_2MB;
- cs2_twt = 8;
- }
-
- /*-------------------------------------------------------------------------+
- | 1 MB FLASH / 1 MB SRAM. Initialize bank 0 with default values.
- +-------------------------------------------------------------------------*/
- mtebc(pb0ap, EBC_BXAP_BME_DISABLED|EBC_BXAP_TWT_ENCODE(cs0_twt)|
- EBC_BXAP_BCE_DISABLE|
- EBC_BXAP_CSN_ENCODE(1)|EBC_BXAP_OEN_ENCODE(1)|
- EBC_BXAP_WBN_ENCODE(1)|EBC_BXAP_WBF_ENCODE(1)|
- EBC_BXAP_TH_ENCODE(1)|EBC_BXAP_RE_DISABLED|
- EBC_BXAP_BEM_WRITEONLY|
- EBC_BXAP_PEN_DISABLED);
- mtebc(pb0cr, EBC_BXCR_BAS_ENCODE(cs0_base)|
- cs0_size|EBC_BXCR_BU_RW|EBC_BXCR_BW_8BIT);
-
- /*-------------------------------------------------------------------------+
- | 8KB NVRAM/RTC. Initialize bank 1 with default values.
- +-------------------------------------------------------------------------*/
- mtebc(pb1ap, EBC_BXAP_BME_DISABLED|EBC_BXAP_TWT_ENCODE(10)|
- EBC_BXAP_BCE_DISABLE|
- EBC_BXAP_CSN_ENCODE(1)|EBC_BXAP_OEN_ENCODE(1)|
- EBC_BXAP_WBN_ENCODE(1)|EBC_BXAP_WBF_ENCODE(1)|
- EBC_BXAP_TH_ENCODE(1)|EBC_BXAP_RE_DISABLED|
- EBC_BXAP_BEM_WRITEONLY|
- EBC_BXAP_PEN_DISABLED);
- mtebc(pb1cr, EBC_BXCR_BAS_ENCODE(0x48000000)|
- EBC_BXCR_BS_1MB|EBC_BXCR_BU_RW|EBC_BXCR_BW_8BIT);
-
- /*-------------------------------------------------------------------------+
- | 4 MB FLASH. Initialize bank 2 with default values.
- +-------------------------------------------------------------------------*/
- mtebc(pb2ap, EBC_BXAP_BME_DISABLED|EBC_BXAP_TWT_ENCODE(cs2_twt)|
- EBC_BXAP_BCE_DISABLE|
- EBC_BXAP_CSN_ENCODE(1)|EBC_BXAP_OEN_ENCODE(1)|
- EBC_BXAP_WBN_ENCODE(1)|EBC_BXAP_WBF_ENCODE(1)|
- EBC_BXAP_TH_ENCODE(1)|EBC_BXAP_RE_DISABLED|
- EBC_BXAP_BEM_WRITEONLY|
- EBC_BXAP_PEN_DISABLED);
- mtebc(pb2cr, EBC_BXCR_BAS_ENCODE(cs2_base)|
- cs2_size|EBC_BXCR_BU_RW|EBC_BXCR_BW_8BIT);
-
- /*-------------------------------------------------------------------------+
- | FPGA. Initialize bank 7 with default values.
- +-------------------------------------------------------------------------*/
- mtebc(pb7ap, EBC_BXAP_BME_DISABLED|EBC_BXAP_TWT_ENCODE(7)|
- EBC_BXAP_BCE_DISABLE|
- EBC_BXAP_CSN_ENCODE(1)|EBC_BXAP_OEN_ENCODE(1)|
- EBC_BXAP_WBN_ENCODE(1)|EBC_BXAP_WBF_ENCODE(1)|
- EBC_BXAP_TH_ENCODE(1)|EBC_BXAP_RE_DISABLED|
- EBC_BXAP_BEM_WRITEONLY|
- EBC_BXAP_PEN_DISABLED);
- mtebc(pb7cr, EBC_BXCR_BAS_ENCODE(0x48300000)|
- EBC_BXCR_BS_1MB|EBC_BXCR_BU_RW|EBC_BXCR_BW_8BIT);
-
- /*--------------------------------------------------------------------
- * Setup the interrupt controller polarities, triggers, etc.
- *-------------------------------------------------------------------*/
- mtdcr (uic0sr, 0xffffffff); /* clear all */
- mtdcr (uic0er, 0x00000000); /* disable all */
- mtdcr (uic0cr, 0x00000009); /* SMI & UIC1 crit are critical */
- mtdcr (uic0pr, 0xfffffe13); /* per ref-board manual */
- mtdcr (uic0tr, 0x01c00008); /* per ref-board manual */
- mtdcr (uic0vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr (uic0sr, 0xffffffff); /* clear all */
-
- mtdcr (uic1sr, 0xffffffff); /* clear all */
- mtdcr (uic1er, 0x00000000); /* disable all */
- mtdcr (uic1cr, 0x00000000); /* all non-critical */
- mtdcr (uic1pr, 0xffffe0ff); /* per ref-board manual */
- mtdcr (uic1tr, 0x00ffc000); /* per ref-board manual */
- mtdcr (uic1vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr (uic1sr, 0xffffffff); /* clear all */
-
- mtdcr (uic2sr, 0xffffffff); /* clear all */
- mtdcr (uic2er, 0x00000000); /* disable all */
- mtdcr (uic2cr, 0x00000000); /* all non-critical */
- mtdcr (uic2pr, 0xffffffff); /* per ref-board manual */
- mtdcr (uic2tr, 0x00ff8c0f); /* per ref-board manual */
- mtdcr (uic2vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr (uic2sr, 0xffffffff); /* clear all */
-
- mtdcr (uicb0sr, 0xfc000000); /* clear all */
- mtdcr (uicb0er, 0x00000000); /* disable all */
- mtdcr (uicb0cr, 0x00000000); /* all non-critical */
- mtdcr (uicb0pr, 0xfc000000); /* */
- mtdcr (uicb0tr, 0x00000000); /* */
- mtdcr (uicb0vr, 0x00000001); /* */
- mfsdr (sdr_mfr, mfr);
- mfr &= ~SDR0_MFR_ECS_MASK;
-/* mtsdr(sdr_mfr, mfr); */
- fpga_init();
-
- return 0;
-}
-
-
-int checkboard (void)
-{
- char *s = getenv ("serial#");
-
- printf ("Board: Ocotea - AMCC PPC440GX Evaluation Board");
- if (s != NULL) {
- puts (", serial# ");
- puts (s);
- }
- putc ('\n');
-
- return (0);
-}
-
-
-long int initdram (int board_type)
-{
- long dram_size = 0;
-
-#if defined(CONFIG_SPD_EEPROM)
- dram_size = spd_sdram ();
-#else
- dram_size = fixed_sdram ();
-#endif
- return dram_size;
-}
-
-
-#if defined(CFG_DRAM_TEST)
-int testdram (void)
-{
- uint *pstart = (uint *) 0x00000000;
- uint *pend = (uint *) 0x08000000;
- uint *p;
-
- for (p = pstart; p < pend; p++)
- *p = 0xaaaaaaaa;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0xaaaaaaaa) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- for (p = pstart; p < pend; p++)
- *p = 0x55555555;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0x55555555) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
- return 0;
-}
-#endif
-
-#if !defined(CONFIG_SPD_EEPROM)
-/*************************************************************************
- * fixed sdram init -- doesn't use serial presence detect.
- *
- * Assumes: 128 MB, non-ECC, non-registered
- * PLB @ 133 MHz
- *
- ************************************************************************/
-long int fixed_sdram (void)
-{
- uint reg;
-
- /*--------------------------------------------------------------------
- * Setup some default
- *------------------------------------------------------------------*/
- mtsdram (mem_uabba, 0x00000000); /* ubba=0 (default) */
- mtsdram (mem_slio, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
- mtsdram (mem_devopt, 0x00000000); /* dll=0 ds=0 (normal) */
- mtsdram (mem_wddctr, 0x00000000); /* wrcp=0 dcd=0 */
- mtsdram (mem_clktr, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
-
- /*--------------------------------------------------------------------
- * Setup for board-specific specific mem
- *------------------------------------------------------------------*/
- /*
- * Following for CAS Latency = 2.5 @ 133 MHz PLB
- */
- mtsdram (mem_b0cr, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
- mtsdram (mem_tr0, 0x410a4012); /* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */
- /* RA=10 RD=3 */
- mtsdram (mem_tr1, 0x8080082f); /* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */
- mtsdram (mem_rtr, 0x08200000); /* Rate 15.625 ns @ 133 MHz PLB */
- mtsdram (mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM */
- udelay (400); /* Delay 200 usecs (min) */
-
- /*--------------------------------------------------------------------
- * Enable the controller, then wait for DCEN to complete
- *------------------------------------------------------------------*/
- mtsdram (mem_cfg0, 0x86000000); /* DCEN=1, PMUD=1, 64-bit */
- for (;;) {
- mfsdram (mem_mcsts, reg);
- if (reg & 0x80000000)
- break;
- }
-
- return (128 * 1024 * 1024); /* 128 MB */
-}
-#endif /* !defined(CONFIG_SPD_EEPROM) */
-
-
-/*************************************************************************
- * pci_pre_init
- *
- * This routine is called just prior to registering the hose and gives
- * the board the opportunity to check things. Returning a value of zero
- * indicates that things are bad & PCI initialization should be aborted.
- *
- * Different boards may wish to customize the pci controller structure
- * (add regions, override default access routines, etc) or perform
- * certain pre-initialization actions.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
-int pci_pre_init(struct pci_controller * hose )
-{
- unsigned long strap;
-
- /*--------------------------------------------------------------------------+
- * The ocotea board is always configured as the host & requires the
- * PCI arbiter to be enabled.
- *--------------------------------------------------------------------------*/
- mfsdr(sdr_sdstp1, strap);
- if( (strap & SDR0_SDSTP1_PAE_MASK) == 0 ){
- printf("PCI: SDR0_STRP1[%08lX] - PCI Arbiter disabled.\n",strap);
- return 0;
- }
-
- return 1;
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT) */
-
-/*************************************************************************
- * pci_target_init
- *
- * The bootstrap configuration provides default settings for the pci
- * inbound map (PIM). But the bootstrap config choices are limited and
- * may not be sufficient for a given board.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT)
-void pci_target_init(struct pci_controller * hose )
-{
- /*--------------------------------------------------------------------------+
- * Disable everything
- *--------------------------------------------------------------------------*/
- out32r( PCIX0_PIM0SA, 0 ); /* disable */
- out32r( PCIX0_PIM1SA, 0 ); /* disable */
- out32r( PCIX0_PIM2SA, 0 ); /* disable */
- out32r( PCIX0_EROMBA, 0 ); /* disable expansion rom */
-
- /*--------------------------------------------------------------------------+
- * Map all of SDRAM to PCI address 0x0000_0000. Note that the 440 strapping
- * options to not support sizes such as 128/256 MB.
- *--------------------------------------------------------------------------*/
- out32r( PCIX0_PIM0LAL, CFG_SDRAM_BASE );
- out32r( PCIX0_PIM0LAH, 0 );
- out32r( PCIX0_PIM0SA, ~(gd->ram_size - 1) | 1 );
-
- out32r( PCIX0_BAR0, 0 );
-
- /*--------------------------------------------------------------------------+
- * Program the board's subsystem id/vendor id
- *--------------------------------------------------------------------------*/
- out16r( PCIX0_SBSYSVID, CFG_PCI_SUBSYS_VENDORID );
- out16r( PCIX0_SBSYSID, CFG_PCI_SUBSYS_DEVICEID );
-
- out16r( PCIX0_CMD, in16r(PCIX0_CMD) | PCI_COMMAND_MEMORY );
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT) */
-
-
-/*************************************************************************
- * is_pci_host
- *
- * This routine is called to determine if a pci scan should be
- * performed. With various hardware environments (especially cPCI and
- * PPMC) it's insufficient to depend on the state of the arbiter enable
- * bit in the strap register, or generic host/adapter assumptions.
- *
- * Rather than hard-code a bad assumption in the general 440 code, the
- * 440 pci code requires the board to decide at runtime.
- *
- * Return 0 for adapter mode, non-zero for host (monarch) mode.
- *
- *
- ************************************************************************/
-#if defined(CONFIG_PCI)
-int is_pci_host(struct pci_controller *hose)
-{
- /* The ocotea board is always configured as host. */
- return(1);
-}
-#endif /* defined(CONFIG_PCI) */
-
-
-void fpga_init(void)
-{
- unsigned long group;
- unsigned long sdr0_pfc0;
- unsigned long sdr0_pfc1;
- unsigned long sdr0_cust0;
- unsigned long pvr;
-
- mfsdr (sdr_pfc0, sdr0_pfc0);
- mfsdr (sdr_pfc1, sdr0_pfc1);
- group = SDR0_PFC1_EPS_DECODE(sdr0_pfc1);
- pvr = get_pvr ();
-
- sdr0_pfc0 = (sdr0_pfc0 & ~SDR0_PFC0_GEIE_MASK) | SDR0_PFC0_GEIE_TRE;
- if ( ((pvr == PVR_440GX_RA) || (pvr == PVR_440GX_RB)) && ((group == 4) || (group == 5))) {
- sdr0_pfc0 = (sdr0_pfc0 & ~SDR0_PFC0_TRE_MASK) | SDR0_PFC0_TRE_DISABLE;
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_CTEMS_MASK) | SDR0_PFC1_CTEMS_EMS;
- out8(FPGA_REG2, (in8(FPGA_REG2) & ~FPGA_REG2_EXT_INTFACE_MASK) |
- FPGA_REG2_EXT_INTFACE_ENABLE);
- mtsdr (sdr_pfc0, sdr0_pfc0);
- mtsdr (sdr_pfc1, sdr0_pfc1);
- } else {
- sdr0_pfc0 = (sdr0_pfc0 & ~SDR0_PFC0_TRE_MASK) | SDR0_PFC0_TRE_ENABLE;
- switch (group)
- {
- case 0:
- case 1:
- case 2:
- /* CPU trace A */
- out8(FPGA_REG2, (in8(FPGA_REG2) & ~FPGA_REG2_EXT_INTFACE_MASK) |
- FPGA_REG2_EXT_INTFACE_ENABLE);
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_CTEMS_MASK) | SDR0_PFC1_CTEMS_EMS;
- mtsdr (sdr_pfc0, sdr0_pfc0);
- mtsdr (sdr_pfc1, sdr0_pfc1);
- break;
- case 3:
- case 4:
- case 5:
- case 6:
- /* CPU trace B - Over EBMI */
- sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_CTEMS_MASK) | SDR0_PFC1_CTEMS_CPUTRACE;
- mtsdr (sdr_pfc0, sdr0_pfc0);
- mtsdr (sdr_pfc1, sdr0_pfc1);
- out8(FPGA_REG2, (in8(FPGA_REG2) & ~FPGA_REG2_EXT_INTFACE_MASK) |
- FPGA_REG2_EXT_INTFACE_DISABLE);
- break;
- }
- }
-
- /* Initialize the ethernet specific functions in the fpga */
- mfsdr(sdr_pfc1, sdr0_pfc1);
- mfsdr(sdr_cust0, sdr0_cust0);
- if ( (SDR0_PFC1_EPS_DECODE(sdr0_pfc1) == 4) &&
- ((SDR0_CUST0_RGMII2_DECODE(sdr0_cust0) == RGMII_FER_GMII) ||
- (SDR0_CUST0_RGMII2_DECODE(sdr0_cust0) == RGMII_FER_TBI)))
- {
- if ((in8(FPGA_REG0) & FPGA_REG0_ECLS_MASK) == FPGA_REG0_ECLS_VER1)
- {
- out8(FPGA_REG3, (in8(FPGA_REG3) & ~FPGA_REG3_ENET_MASK1) |
- FPGA_REG3_ENET_GROUP7);
- }
- else
- {
- if (SDR0_CUST0_RGMII2_DECODE(sdr0_cust0) == RGMII_FER_GMII)
- {
- out8(FPGA_REG3, (in8(FPGA_REG3) & ~FPGA_REG3_ENET_MASK2) |
- FPGA_REG3_ENET_GROUP7);
- }
- else
- {
- out8(FPGA_REG3, (in8(FPGA_REG3) & ~FPGA_REG3_ENET_MASK2) |
- FPGA_REG3_ENET_GROUP8);
- }
- }
- }
- else
- {
- if ((in8(FPGA_REG0) & FPGA_REG0_ECLS_MASK) == FPGA_REG0_ECLS_VER1)
- {
- out8(FPGA_REG3, (in8(FPGA_REG3) & ~FPGA_REG3_ENET_MASK1) |
- FPGA_REG3_ENET_ENCODE1(SDR0_PFC1_EPS_DECODE(sdr0_pfc1)));
- }
- else
- {
- out8(FPGA_REG3, (in8(FPGA_REG3) & ~FPGA_REG3_ENET_MASK2) |
- FPGA_REG3_ENET_ENCODE2(SDR0_PFC1_EPS_DECODE(sdr0_pfc1)));
- }
- }
- out8(FPGA_REG4, FPGA_REG4_GPHY_MODE10 |
- FPGA_REG4_GPHY_MODE100 | FPGA_REG4_GPHY_MODE1000 |
- FPGA_REG4_GPHY_FRC_DPLX | FPGA_REG4_CONNECT_PHYS);
-
- /* reset the gigabyte phy if necessary */
- if (SDR0_PFC1_EPS_DECODE(sdr0_pfc1) >= 3)
- {
- if ((in8(FPGA_REG0) & FPGA_REG0_ECLS_MASK) == FPGA_REG0_ECLS_VER1)
- {
- out8(FPGA_REG3, in8(FPGA_REG3) & ~FPGA_REG3_GIGABIT_RESET_DISABLE);
- udelay(10000);
- out8(FPGA_REG3, in8(FPGA_REG3) | FPGA_REG3_GIGABIT_RESET_DISABLE);
- }
- else
- {
- out8(FPGA_REG2, in8(FPGA_REG2) & ~FPGA_REG2_GIGABIT_RESET_DISABLE);
- udelay(10000);
- out8(FPGA_REG2, in8(FPGA_REG2) | FPGA_REG2_GIGABIT_RESET_DISABLE);
- }
- }
-
- /*
- * new Ocotea with Rev. F (pass 3) chips has SMII PHY reset
- */
- if ((in8(FPGA_REG0) & FPGA_REG0_ECLS_MASK) == FPGA_REG0_ECLS_VER2) {
- out8(FPGA_REG2, in8(FPGA_REG2) & ~FPGA_REG2_SMII_RESET_DISABLE);
- udelay(10000);
- out8(FPGA_REG2, in8(FPGA_REG2) | FPGA_REG2_SMII_RESET_DISABLE);
- }
-
- /* Turn off the LED's */
- out8(FPGA_REG3, (in8(FPGA_REG3) & ~FPGA_REG3_STAT_MASK) |
- FPGA_REG3_STAT_LED8_DISAB | FPGA_REG3_STAT_LED4_DISAB |
- FPGA_REG3_STAT_LED2_DISAB | FPGA_REG3_STAT_LED1_DISAB);
-
- return;
-}
-
-#ifdef CONFIG_POST
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed(void)
-{
-
- return (ctrlc());
-}
-#endif
diff --git a/board/amcc/ocotea/ocotea.h b/board/amcc/ocotea/ocotea.h
deleted file mode 100644
index 95ce1fd351..0000000000
--- a/board/amcc/ocotea/ocotea.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (C) Copyright 2004
- * 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
- */
-
-/* Board specific FPGA stuff ... */
-#define FPGA_REG0 (CFG_FPGA_BASE + 0x00)
-#define FPGA_REG0_SSCG_MASK 0x80
-#define FPGA_REG0_SSCG_DISABLE 0x00
-#define FPGA_REG0_SSCG_ENABLE 0x80
-#define FPGA_REG0_BOOT_MASK 0x40
-#define FPGA_REG0_BOOT_LARGE_FLASH 0x00
-#define FPGA_REG0_BOOT_SMALL_FLASH 0x40
-#define FPGA_REG0_ECLS_MASK 0x38 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ECLS_0 0x20 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ECLS_1 0x10 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ECLS_2 0x08 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ECLS_VER1 0x00 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ECLS_VER3 0x08 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ECLS_VER4 0x10 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ECLS_VER5 0x18 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ECLS_VER2 0x20 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ECLS_VER6 0x28 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ECLS_VER7 0x30 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ECLS_VER8 0x38 /* New for Ocotea Rev 2 */
-#define FPGA_REG0_ARBITER_MASK 0x04
-#define FPGA_REG0_ARBITER_EXT 0x00
-#define FPGA_REG0_ARBITER_INT 0x04
-#define FPGA_REG0_ONBOARD_FLASH_MASK 0x02
-#define FPGA_REG0_ONBOARD_FLASH_ENABLE 0x00
-#define FPGA_REG0_ONBOARD_FLASH_DISABLE 0x02
-#define FPGA_REG0_FLASH 0x01
-#define FPGA_REG1 (CFG_FPGA_BASE + 0x01)
-#define FPGA_REG1_9772_FSELFBX_MASK 0x80
-#define FPGA_REG1_9772_FSELFBX_6 0x00
-#define FPGA_REG1_9772_FSELFBX_10 0x80
-#define FPGA_REG1_9531_SX_MASK 0x60
-#define FPGA_REG1_9531_SX_33MHZ 0x00
-#define FPGA_REG1_9531_SX_100MHZ 0x20
-#define FPGA_REG1_9531_SX_66MHZ 0x40
-#define FPGA_REG1_9531_SX_133MHZ 0x60
-#define FPGA_REG1_9772_FSELBX_MASK 0x18
-#define FPGA_REG1_9772_FSELBX_4 0x00
-#define FPGA_REG1_9772_FSELBX_6 0x08
-#define FPGA_REG1_9772_FSELBX_8 0x10
-#define FPGA_REG1_9772_FSELBX_10 0x18
-#define FPGA_REG1_SOURCE_MASK 0x07
-#define FPGA_REG1_SOURCE_TC 0x00
-#define FPGA_REG1_SOURCE_66MHZ 0x01
-#define FPGA_REG1_SOURCE_50MHZ 0x02
-#define FPGA_REG1_SOURCE_33MHZ 0x03
-#define FPGA_REG1_SOURCE_25MHZ 0x04
-#define FPGA_REG1_SOURCE_SSDIV1 0x05
-#define FPGA_REG1_SOURCE_SSDIV2 0x06
-#define FPGA_REG1_SOURCE_SSDIV4 0x07
-#define FPGA_REG2 (CFG_FPGA_BASE + 0x02)
-#define FPGA_REG2_TC0 0x80
-#define FPGA_REG2_TC1 0x40
-#define FPGA_REG2_TC2 0x20
-#define FPGA_REG2_TC3 0x10
-#define FPGA_REG2_GIGABIT_RESET_DISABLE 0x08 /*Use on Ocotea pass 2 boards*/
-#define FPGA_REG2_EXT_INTFACE_MASK 0x04
-#define FPGA_REG2_EXT_INTFACE_ENABLE 0x00
-#define FPGA_REG2_EXT_INTFACE_DISABLE 0x04
-#define FPGA_REG2_SMII_RESET_DISABLE 0x02 /*Use on Ocotea pass 3 boards*/
-#define FPGA_REG2_DEFAULT_UART1_N 0x01
-#define FPGA_REG3 (CFG_FPGA_BASE + 0x03)
-#define FPGA_REG3_GIGABIT_RESET_DISABLE 0x80 /*Use on Ocotea pass 1 boards*/
-#define FPGA_REG3_ENET_MASK1 0x70 /*Use on Ocotea pass 1 boards*/
-#define FPGA_REG3_ENET_MASK2 0xF0 /*Use on Ocotea pass 2 boards*/
-#define FPGA_REG3_ENET_GROUP0 0x00
-#define FPGA_REG3_ENET_GROUP1 0x10
-#define FPGA_REG3_ENET_GROUP2 0x20
-#define FPGA_REG3_ENET_GROUP3 0x30
-#define FPGA_REG3_ENET_GROUP4 0x40
-#define FPGA_REG3_ENET_GROUP5 0x50
-#define FPGA_REG3_ENET_GROUP6 0x60
-#define FPGA_REG3_ENET_GROUP7 0x70
-#define FPGA_REG3_ENET_GROUP8 0x80 /*Use on Ocotea pass 2 boards*/
-#define FPGA_REG3_ENET_ENCODE1(n) ((((unsigned long)(n))&0x07)<<4) /*pass1*/
-#define FPGA_REG3_ENET_DECODE1(n) ((((unsigned long)(n))>>4)&0x07) /*pass1*/
-#define FPGA_REG3_ENET_ENCODE2(n) ((((unsigned long)(n))&0x0F)<<4) /*pass2*/
-#define FPGA_REG3_ENET_DECODE2(n) ((((unsigned long)(n))>>4)&0x0F) /*pass2*/
-#define FPGA_REG3_STAT_MASK 0x0F
-#define FPGA_REG3_STAT_LED8_ENAB 0x08
-#define FPGA_REG3_STAT_LED4_ENAB 0x04
-#define FPGA_REG3_STAT_LED2_ENAB 0x02
-#define FPGA_REG3_STAT_LED1_ENAB 0x01
-#define FPGA_REG3_STAT_LED8_DISAB 0x00
-#define FPGA_REG3_STAT_LED4_DISAB 0x00
-#define FPGA_REG3_STAT_LED2_DISAB 0x00
-#define FPGA_REG3_STAT_LED1_DISAB 0x00
-#define FPGA_REG4 (CFG_FPGA_BASE + 0x04)
-#define FPGA_REG4_GPHY_MODE10 0x80
-#define FPGA_REG4_GPHY_MODE100 0x40
-#define FPGA_REG4_GPHY_MODE1000 0x20
-#define FPGA_REG4_GPHY_FRC_DPLX 0x10
-#define FPGA_REG4_GPHY_ANEG_DIS 0x08
-#define FPGA_REG4_CONNECT_PHYS 0x04
-
-
-#define SDR0_CUST0_ENET3_MASK 0x00000080
-#define SDR0_CUST0_ENET3_COPPER 0x00000000
-#define SDR0_CUST0_ENET3_FIBER 0x00000080
-#define SDR0_CUST0_RGMII3_MASK 0x00000070
-#define SDR0_CUST0_RGMII3_ENCODE(n) ((((unsigned long)(n))&0x7)<<4)
-#define SDR0_CUST0_RGMII3_DECODE(n) ((((unsigned long)(n))>>4)&0x07)
-#define SDR0_CUST0_RGMII3_DISAB 0x00000000
-#define SDR0_CUST0_RGMII3_RTBI 0x00000040
-#define SDR0_CUST0_RGMII3_RGMII 0x00000050
-#define SDR0_CUST0_RGMII3_TBI 0x00000060
-#define SDR0_CUST0_RGMII3_GMII 0x00000070
-#define SDR0_CUST0_ENET2_MASK 0x00000008
-#define SDR0_CUST0_ENET2_COPPER 0x00000000
-#define SDR0_CUST0_ENET2_FIBER 0x00000008
-#define SDR0_CUST0_RGMII2_MASK 0x00000007
-#define SDR0_CUST0_RGMII2_ENCODE(n) ((((unsigned long)(n))&0x7)<<0)
-#define SDR0_CUST0_RGMII2_DECODE(n) ((((unsigned long)(n))>>0)&0x07)
-#define SDR0_CUST0_RGMII2_DISAB 0x00000000
-#define SDR0_CUST0_RGMII2_RTBI 0x00000004
-#define SDR0_CUST0_RGMII2_RGMII 0x00000005
-#define SDR0_CUST0_RGMII2_TBI 0x00000006
-#define SDR0_CUST0_RGMII2_GMII 0x00000007
diff --git a/board/amcc/ocotea/u-boot.lds b/board/amcc/ocotea/u-boot.lds
deleted file mode 100644
index 316fee88c0..0000000000
--- a/board/amcc/ocotea/u-boot.lds
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * (C) Copyright 2004
- * 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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- .bootpg 0xFFFFF000 :
- {
- cpu/ppc4xx/start.o (.bootpg)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/amcc/ocotea/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/amcc/walnut/Makefile b/board/amcc/walnut/Makefile
deleted file mode 100644
index 50fecc6d48..0000000000
--- a/board/amcc/walnut/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/amcc/walnut/config.mk b/board/amcc/walnut/config.mk
deleted file mode 100644
index 1bdf5e4fcf..0000000000
--- a/board/amcc/walnut/config.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# (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
-#
-
-TEXT_BASE = 0xFFFC0000
diff --git a/board/amcc/walnut/flash.c b/board/amcc/walnut/flash.c
deleted file mode 100644
index 056f9b9362..0000000000
--- a/board/amcc/walnut/flash.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * (C) Copyright 2000-2005
- * 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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-#undef DEBUG
-#ifdef DEBUG
-#define DEBUGF(x...) printf(x)
-#else
-#define DEBUGF(x...)
-#endif /* DEBUG */
-
-/*
- * include common flash code (for amcc boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-static void flash_get_offsets(ulong base, flash_info_t * info);
-
-unsigned long flash_init(void)
-{
- unsigned long size_b0, size_b1;
- int i;
- uint pbcr;
- unsigned long base_b0, base_b1;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 =
- flash_get_size((vu_long *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 << 20);
- }
-
- /* Only one bank */
- if (CFG_MAX_FLASH_BANKS == 1) {
- /* Setup offsets */
- flash_get_offsets(FLASH_BASE0_PRELIM, &flash_info[0]);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + CFG_MONITOR_LEN - 1,
- &flash_info[0]);
-#ifdef CFG_ENV_IS_IN_FLASH
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[0]);
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1,
- &flash_info[0]);
-#endif
-
- size_b1 = 0;
- flash_info[0].size = size_b0;
- } else {
- /* 2 banks */
- size_b1 =
- flash_get_size((vu_long *) FLASH_BASE1_PRELIM,
- &flash_info[1]);
-
- /* Re-do sizing to get full correct info */
-
- if (size_b1) {
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b1 = -size_b1;
- pbcr =
- (pbcr & 0x0001ffff) | base_b1 |
- (((size_b1 / 1024 / 1024) - 1) << 17);
- mtdcr(ebccfgd, pbcr);
- /* printf("pb1cr = %x\n", pbcr); */
- }
-
- if (size_b0) {
- mtdcr(ebccfga, pb1cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb1cr);
- base_b0 = base_b1 - size_b0;
- pbcr =
- (pbcr & 0x0001ffff) | base_b0 |
- (((size_b0 / 1024 / 1024) - 1) << 17);
- mtdcr(ebccfgd, pbcr);
- /* printf("pb0cr = %x\n", pbcr); */
- }
-
- size_b0 = flash_get_size((vu_long *) base_b0, &flash_info[0]);
-
- flash_get_offsets(base_b0, &flash_info[0]);
-
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- base_b0 + size_b0 - monitor_flash_len,
- base_b0 + size_b0 - 1, &flash_info[0]);
-
- if (size_b1) {
- /* Re-do sizing to get full correct info */
- size_b1 =
- flash_get_size((vu_long *) base_b1, &flash_info[1]);
-
- flash_get_offsets(base_b1, &flash_info[1]);
-
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- base_b1 + size_b1 -
- monitor_flash_len,
- base_b1 + size_b1 - 1,
- &flash_info[1]);
- /* monitor protection OFF by default (one is enough) */
- (void)flash_protect(FLAG_PROTECT_CLEAR,
- base_b0 + size_b0 -
- monitor_flash_len,
- base_b0 + size_b0 - 1,
- &flash_info[0]);
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
- } /* else 2 banks */
- return (size_b0 + size_b1);
-}
-
-
-static void flash_get_offsets(ulong base, flash_info_t * info)
-{
- int i;
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- (info->flash_id == FLASH_AM040)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-}
diff --git a/board/amcc/walnut/u-boot.lds b/board/amcc/walnut/u-boot.lds
deleted file mode 100644
index 1dcbab5a24..0000000000
--- a/board/amcc/walnut/u-boot.lds
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/amcc/walnut/walnut.c b/board/amcc/walnut/walnut.c
deleted file mode 100644
index 292e02609e..0000000000
--- a/board/amcc/walnut/walnut.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * (C) Copyright 2000-2005
- * 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 <common.h>
-#include <asm/processor.h>
-#include <spd_sdram.h>
-
-int board_early_init_f(void)
-{
- /*-------------------------------------------------------------------------+
- | Interrupt controller setup for the Walnut/Sycamore board.
- | Note: IRQ 0-15 405GP internally generated; active high; level sensitive
- | IRQ 16 405GP internally generated; active low; level sensitive
- | IRQ 17-24 RESERVED
- | IRQ 25 (EXT IRQ 0) FPGA; active high; level sensitive
- | IRQ 26 (EXT IRQ 1) SMI; active high; level sensitive
- | IRQ 27 (EXT IRQ 2) Not Used
- | IRQ 28 (EXT IRQ 3) PCI SLOT 3; active low; level sensitive
- | IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
- | IRQ 30 (EXT IRQ 5) PCI SLOT 1; active low; level sensitive
- | IRQ 31 (EXT IRQ 6) PCI SLOT 0; active low; level sensitive
- | Note for Walnut board:
- | An interrupt taken for the FPGA (IRQ 25) indicates that either
- | the Mouse, Keyboard, IRDA, or External Expansion caused the
- | interrupt. The FPGA must be read to determine which device
- | caused the interrupt. The default setting of the FPGA clears
- |
- +-------------------------------------------------------------------------*/
-
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000020); /* set all but FPGA SMI to be non-critical */
- mtdcr(uicpr, 0xFFFFFFE0); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /* set UART1 control to select CTS/RTS */
-#define FPGA_BRDC 0xF0300004
- *(volatile char *)(FPGA_BRDC) |= 0x1;
-
- return 0;
-}
-
-/*
- * Check Board Identity:
- */
-int checkboard(void)
-{
- char *s = getenv("serial#");
- uint pvr = get_pvr();
-
- if (pvr == PVR_405GPR_RB) {
- puts("Board: Sycamore - AMCC PPC405GPr Evaluation Board");
- } else {
- puts("Board: Walnut - AMCC PPC405GP Evaluation Board");
- }
-
- if (s != NULL) {
- puts(", serial# ");
- puts(s);
- }
- putc('\n');
-
- return (0);
-}
-
-/*
- * sdram_init - Dummy implementation for start.S, spd_sdram used on this board!
- */
-void sdram_init(void)
-{
- return;
-}
-
-/*
- * initdram(int board_type) reads EEPROM via I2c. EEPROM contains all of
- * the necessary info for SDRAM controller configuration
- */
-long int initdram(int board_type)
-{
- return spd_sdram();
-}
-
-int testdram(void)
-{
- /* TODO: XXX XXX XXX */
- printf("test: xxx MB - ok\n");
-
- return (0);
-}
diff --git a/board/amcc/yucca/Makefile b/board/amcc/yucca/Makefile
deleted file mode 100644
index 9f42279b46..0000000000
--- a/board/amcc/yucca/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o cmd_yucca.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend *~
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/amcc/yucca/cmd_yucca.c b/board/amcc/yucca/cmd_yucca.c
deleted file mode 100644
index e698b201fc..0000000000
--- a/board/amcc/yucca/cmd_yucca.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * (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
- *
- * hacked for evb440spe
- */
-
-#include <common.h>
-#include <command.h>
-#include "yucca.h"
-#include <i2c.h>
-#include <asm/byteorder.h>
-
-extern void print_evb440spe_info(void);
-static int setBootStrapClock(cmd_tbl_t *cmdtp, int incrflag,
- int flag, int argc, char *argv[]);
-
-extern int cmd_get_data_size(char* arg, int default_size);
-
-/* ------------------------------------------------------------------------- */
-int do_evb440spe(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- return setBootStrapClock (cmdtp, 1, flag, argc, argv);
-}
-
-/* ------------------------------------------------------------------------- */
-/* Modify memory.
- *
- * Syntax:
- * evb440spe wrclk prom0,prom1
- */
-static int setBootStrapClock(cmd_tbl_t *cmdtp, int incrflag, int flag,
- int argc, char *argv[])
-{
- uchar chip;
- ulong data;
- int nbytes;
- extern char console_buffer[];
-
- char sysClock[4];
- char cpuClock[4];
- char plbClock[4];
- char pcixClock[4];
-
- if (argc < 3) {
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- if (strcmp(argv[2], "prom0") == 0)
- chip = IIC0_BOOTPROM_ADDR;
- else
- chip = IIC0_ALT_BOOTPROM_ADDR;
-
- do {
- printf("enter sys clock frequency 33 or 66 Mhz or quit to abort\n");
- nbytes = readline (" ? ");
-
- if (strcmp(console_buffer, "quit") == 0)
- return 0;
-
- if ((strcmp(console_buffer, "33") != 0) &
- (strcmp(console_buffer, "66") != 0))
- nbytes=0;
-
- strcpy(sysClock, console_buffer);
-
- } while (nbytes == 0);
-
- do {
- if (strcmp(sysClock, "66") == 0) {
- printf("enter cpu clock frequency 400, 533 Mhz or quit to abort\n");
- } else {
-#ifdef CONFIG_STRESS
- printf("enter cpu clock frequency 400, 500, 533, 667 Mhz or quit to abort\n");
-#else
- printf("enter cpu clock frequency 400, 500, 533 Mhz or quit to abort\n");
-#endif
- }
- nbytes = readline (" ? ");
-
- if (strcmp(console_buffer, "quit") == 0)
- return 0;
-
- if (strcmp(sysClock, "66") == 0) {
- if ((strcmp(console_buffer, "400") != 0) &
- (strcmp(console_buffer, "533") != 0)
-#ifdef CONFIG_STRESS
- & (strcmp(console_buffer, "667") != 0)
-#endif
- ) {
- nbytes = 0;
- }
- } else {
- if ((strcmp(console_buffer, "400") != 0) &
- (strcmp(console_buffer, "500") != 0) &
- (strcmp(console_buffer, "533") != 0)
-#ifdef CONFIG_STRESS
- & (strcmp(console_buffer, "667") != 0)
-#endif
- ) {
- nbytes = 0;
- }
- }
-
- strcpy(cpuClock, console_buffer);
-
- } while (nbytes == 0);
-
- if (strcmp(cpuClock, "500") == 0){
- strcpy(plbClock, "166");
- } else if (strcmp(cpuClock, "533") == 0){
- strcpy(plbClock, "133");
- } else {
- do {
- if (strcmp(cpuClock, "400") == 0)
- printf("enter plb clock frequency 100, 133 Mhz or quit to abort\n");
-
-#ifdef CONFIG_STRESS
- if (strcmp(cpuClock, "667") == 0)
- printf("enter plb clock frequency 133, 166 Mhz or quit to abort\n");
-
-#endif
- nbytes = readline (" ? ");
-
- if (strcmp(console_buffer, "quit") == 0)
- return 0;
-
- if (strcmp(cpuClock, "400") == 0) {
- if ((strcmp(console_buffer, "100") != 0) &
- (strcmp(console_buffer, "133") != 0))
- nbytes = 0;
- }
-#ifdef CONFIG_STRESS
- if (strcmp(cpuClock, "667") == 0) {
- if ((strcmp(console_buffer, "133") != 0) &
- (strcmp(console_buffer, "166") != 0))
- nbytes = 0;
- }
-#endif
- strcpy(plbClock, console_buffer);
-
- } while (nbytes == 0);
- }
-
- do {
- printf("enter Pci-X clock frequency 33, 66, 100 or 133 Mhz or quit to abort\n");
- nbytes = readline (" ? ");
-
- if (strcmp(console_buffer, "quit") == 0)
- return 0;
-
- if ((strcmp(console_buffer, "33") != 0) &
- (strcmp(console_buffer, "66") != 0) &
- (strcmp(console_buffer, "100") != 0) &
- (strcmp(console_buffer, "133") != 0)) {
- nbytes = 0;
- }
- strcpy(pcixClock, console_buffer);
-
- } while (nbytes == 0);
-
- printf("\nsys clk = %sMhz\n", sysClock);
- printf("cpu clk = %sMhz\n", cpuClock);
- printf("plb clk = %sMhz\n", plbClock);
- printf("Pci-X clk = %sMhz\n", pcixClock);
-
- do {
- printf("\npress [y] to write I2C bootstrap \n");
- printf("or [n] to abort. \n");
- printf("Don't forget to set board switches \n");
- printf("according to your choice before re-starting \n");
- printf("(refer to 440spe_uboot_kit_um_1_01.pdf) \n");
-
- nbytes = readline (" ? ");
- if (strcmp(console_buffer, "n") == 0)
- return 0;
-
- } while (nbytes == 0);
-
- if (strcmp(sysClock, "33") == 0) {
- if ((strcmp(cpuClock, "400") == 0) &
- (strcmp(plbClock, "100") == 0))
- data = 0x8678c206;
-
- if ((strcmp(cpuClock, "400") == 0) &
- (strcmp(plbClock, "133") == 0))
- data = 0x8678c2c6;
-
- if ((strcmp(cpuClock, "500") == 0))
- data = 0x8778f2c6;
-
- if ((strcmp(cpuClock, "533") == 0))
- data = 0x87790252;
-
-#ifdef CONFIG_STRESS
- if ((strcmp(cpuClock, "667") == 0) &
- (strcmp(plbClock, "133") == 0))
- data = 0x87794256;
-
- if ((strcmp(cpuClock, "667") == 0) &
- (strcmp(plbClock, "166") == 0))
- data = 0x87794206;
-
-#endif
- }
- if (strcmp(sysClock, "66") == 0) {
- if ((strcmp(cpuClock, "400") == 0) &
- (strcmp(plbClock, "100") == 0))
- data = 0x84706206;
-
- if ((strcmp(cpuClock, "400") == 0) &
- (strcmp(plbClock, "133") == 0))
- data = 0x847062c6;
-
- if ((strcmp(cpuClock, "533") == 0))
- data = 0x85708206;
-
-#ifdef CONFIG_STRESS
- if ((strcmp(cpuClock, "667") == 0) &
- (strcmp(plbClock, "133") == 0))
- data = 0x8570a256;
-
- if ((strcmp(cpuClock, "667") == 0) &
- (strcmp(plbClock, "166") == 0))
- data = 0x8570a206;
-
-#endif
- }
-
-#ifdef DEBUG
- printf(" pin strap0 to write in i2c = %x\n", data);
-#endif /* DEBUG */
-
- if (i2c_write(chip, 0, 1, (uchar *)&data, 4) != 0)
- printf("Error writing strap0 in %s\n", argv[2]);
-
- if (strcmp(pcixClock, "33") == 0)
- data = 0x00000701;
-
- if (strcmp(pcixClock, "66") == 0)
- data = 0x00000601;
-
- if (strcmp(pcixClock, "100") == 0)
- data = 0x00000501;
-
- if (strcmp(pcixClock, "133") == 0)
- data = 0x00000401;
-
- if (strcmp(plbClock, "166") == 0)
- data = data | 0x05950000;
- else
- data = data | 0x05A50000;
-
-#ifdef DEBUG
- printf(" pin strap1 to write in i2c = %x\n", data);
-#endif /* DEBUG */
-
- udelay(1000);
- if (i2c_write(chip, 4, 1, (uchar *)&data, 4) != 0)
- printf("Error writing strap1 in %s\n", argv[2]);
-
- return 0;
-}
-
-U_BOOT_CMD(
- evb440spe, 3, 1, do_evb440spe,
- "evb440spe - program the serial device strap\n",
- "wrclk [prom0|prom1] - program the serial device strap\n"
-);
diff --git a/board/amcc/yucca/config.mk b/board/amcc/yucca/config.mk
deleted file mode 100644
index ff454ebf10..0000000000
--- a/board/amcc/yucca/config.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# (C) Copyright 2006
-# 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
-#
-
-#
-# AMCC 440SPe Reference Platform (yucca) board
-#
-
-ifeq ($(ramsym),1)
-TEXT_BASE = 0x07FD0000
-else
-TEXT_BASE = 0xfffb0000
-endif
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/amcc/yucca/flash.c b/board/amcc/yucca/flash.c
deleted file mode 100644
index 15b8a462ba..0000000000
--- a/board/amcc/yucca/flash.c
+++ /dev/null
@@ -1,1054 +0,0 @@
-/*
- * (C) Copyright 2006
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002 Jun Gu <jung@artesyncp.com>
- * Add support for Am29F016D and dynamic switch setting.
- *
- * 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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-#include <ppc440.h>
-#include "yucca.h"
-
-#ifdef DEBUG
-#define DEBUGF(x...) printf(x)
-#else
-#define DEBUGF(x...)
-#endif /* DEBUG */
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*
- * Mark big flash bank (16 bit instead of 8 bit access) in address with bit 0
- */
-static unsigned long flash_addr_table[][CFG_MAX_FLASH_BANKS] = {
- {0xfff00000, 0xfff80000, 0xe7c00001}, /* 0:boot from small flash */
- {0x00000000, 0x00000000, 0x00000000}, /* 1:boot from pci 66 */
- {0x00000000, 0x00000000, 0x00000000}, /* 2:boot from nand flash */
- {0xe7F00000, 0xe7F80000, 0xFFC00001}, /* 3:boot from big flash 33*/
- {0xe7F00000, 0xe7F80000, 0xFFC00001}, /* 4:boot from big flash 66*/
- {0x00000000, 0x00000000, 0x00000000}, /* 5:boot from */
- {0x00000000, 0x00000000, 0x00000000}, /* 6:boot from pci 66 */
- {0x00000000, 0x00000000, 0x00000000}, /* 7:boot from */
- {0xfff00000, 0xfff80000, 0xe7c00001}, /* 8:boot from small flash */
-};
-
-/*
- * include common flash code (for amcc boards)
- */
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word(flash_info_t * info, ulong dest, ulong data);
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-static int write_word_1(flash_info_t * info, ulong dest, ulong data);
-static int write_word_2(flash_info_t * info, ulong dest, ulong data);
-static int flash_erase_1(flash_info_t * info, int s_first, int s_last);
-static int flash_erase_2(flash_info_t * info, int s_first, int s_last);
-static ulong flash_get_size_1(vu_long * addr, flash_info_t * info);
-static ulong flash_get_size_2(vu_long * addr, flash_info_t * info);
-#endif
-
-void flash_print_info(flash_info_t * info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf("AMD ");
- break;
- case FLASH_MAN_STM:
- printf("STM ");
- break;
- case FLASH_MAN_FUJ:
- printf("FUJITSU ");
- break;
- case FLASH_MAN_SST:
- printf("SST ");
- break;
- case FLASH_MAN_MX:
- printf("MIXC ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- printf("AM29F040 (512 Kbit, uniform sector size)\n");
- break;
- case FLASH_AM400B:
- printf("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T:
- printf("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B:
- printf("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T:
- printf("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AMD016:
- printf("AM29F016D (16 Mbit, uniform sector size)\n");
- break;
- case FLASH_AM160B:
- printf("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T:
- printf("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B:
- printf("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_AM033C:
- printf("AM29LV033C (32 Mbit, top boot sector)\n");
- break;
- case FLASH_SST800A:
- printf("SST39LF/VF800 (8 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST160A:
- printf("SST39LF/VF160 (16 Mbit, uniform sector size)\n");
- break;
- case FLASH_STMW320DT:
- printf ("M29W320DT (32 M, top sector)\n");
- break;
- case FLASH_MXLV320T:
- printf ("MXLV320T (32 Mbit, top sector)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- break;
- }
-
- printf(" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count - 1))
- size = info->start[i + 1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k = 0; k < size; k++) {
- if (*flash++ != 0xffffffff) {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf("\n ");
- printf(" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
- }
- printf("\n");
- return;
-}
-
-
-/*
- * The following code cannot be run from FLASH!
- */
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-static ulong flash_get_size(vu_long * addr, flash_info_t * info)
-{
- /* bit 0 used for big flash marking */
- if ((ulong)addr & 0x1)
- return flash_get_size_2((vu_long *)((ulong)addr & 0xfffffffe), info);
- else
- return flash_get_size_1(addr, info);
-}
-
-static ulong flash_get_size_1(vu_long * addr, flash_info_t * info)
-#else
-static ulong flash_get_size(vu_long * addr, flash_info_t * info)
-#endif
-{
- short i;
- CFG_FLASH_WORD_SIZE value;
- ulong base = (ulong) addr;
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) addr;
-
- DEBUGF("FLASH ADDR: %08x\n", (unsigned)addr);
-
- /* Write auto select command: read Manufacturer ID */
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00900090;
- udelay(1000);
-
- value = addr2[0];
- DEBUGF("FLASH MANUFACT: %x\n", value);
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (CFG_FLASH_WORD_SIZE) FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (CFG_FLASH_WORD_SIZE) SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case (CFG_FLASH_WORD_SIZE) STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[1]; /* device ID */
- DEBUGF("\nFLASH DEVICEID: %x\n", value);
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 ko */
- break;
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_F040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 ko */
- break;
-
- case (CFG_FLASH_WORD_SIZE) STM_ID_M29W040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 ko */
- break;
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_F016D:
- info->flash_id += FLASH_AMD016;
- info->sector_count = 32;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV033C:
- info->flash_id += FLASH_AMDLV033C;
- info->sector_count = 64;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (CFG_FLASH_WORD_SIZE) AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMD016)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
-
- /* For AMD29033C flash we need to resend the command of *
- * reading flash protection for upper 8 Mb of flash */
- if (i == 32) {
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAAAAAAAA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55555555;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x90909090;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
- }
-
- /* issue bank reset to return to read mode */
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0;
-
- return (info->size);
-}
-
-static int wait_for_DQ7_1(flash_info_t * info, int sect)
-{
- ulong start, now, last;
- volatile CFG_FLASH_WORD_SIZE *addr =
- (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- start = get_timer(0);
- last = start;
- while ((addr[0] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
- (CFG_FLASH_WORD_SIZE) 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- return -1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc('.');
- last = now;
- }
- }
- return 0;
-}
-
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-{
- if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_STMW320DT) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_MXLV320T)) {
- return flash_erase_2(info, s_first, s_last);
- } else {
- return flash_erase_1(info, s_first, s_last);
- }
-}
-
-static int flash_erase_1(flash_info_t * info, int s_first, int s_last)
-#else
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-#endif
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- int i;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN)
- printf("- missing\n");
- else
- printf("- no sectors to erase\n");
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot)
- printf("- Warning: %d protected sectors will not be erased!", prot);
-
- printf("\n");
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00500050; /* block erase */
- for (i = 0; i < 50; i++)
- udelay(1000); /* wait 1 ms */
- } else {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00300030; /* sector erase */
- }
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- wait_for_DQ7_1(info, sect);
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay(1000);
-
- /* reset to read mode */
- addr = (CFG_FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
- printf(" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp)
- data = (data << 8) | (*(uchar *) cp);
-
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
-
- for (; cnt == 0 && i < 4; ++i, ++cp)
- data = (data << 8) | (*(uchar *) cp);
-
- if ((rc = write_word(info, wp, data)) != 0)
- return (rc);
-
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i)
- data = (data << 8) | *src++;
-
- if ((rc = write_word(info, wp, data)) != 0)
- return (rc);
-
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0)
- return (0);
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp)
- data = (data << 8) | (*(uchar *) cp);
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-static int write_word(flash_info_t * info, ulong dest, ulong data)
-{
- if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_STMW320DT) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_MXLV320T)) {
- return write_word_2(info, dest, data);
- } else {
- return write_word_1(info, dest, data);
- }
-}
-
-static int write_word_1(flash_info_t * info, ulong dest, ulong data)
-#else
-static int write_word(flash_info_t * info, ulong dest, ulong data)
-#endif
-{
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *) dest;
- volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *) & data;
- ulong start;
- int i, flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data)
- return (2);
-
- for (i = 0; i < 4 / sizeof(CFG_FLASH_WORD_SIZE); i++) {
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer(0);
- while ((dest2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080)) {
-
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT)
- return (1);
- }
- }
-
- return (0);
-}
-
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-
-#undef CFG_FLASH_WORD_SIZE
-#define CFG_FLASH_WORD_SIZE unsigned short
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size_2(vu_long * addr, flash_info_t * info)
-{
- short i;
- int n;
- CFG_FLASH_WORD_SIZE value;
- ulong base = (ulong) addr;
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) addr;
-
- DEBUGF("FLASH ADDR: %08x\n", (unsigned)addr);
-
- /* issue bank reset to return to read mode */
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0;
- /* Write auto select command: read Manufacturer ID */
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00900090;
- udelay(1000);
-
- value = addr2[0];
- DEBUGF("FLASH MANUFACT: %x\n", value);
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (CFG_FLASH_WORD_SIZE) FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (CFG_FLASH_WORD_SIZE) SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case (CFG_FLASH_WORD_SIZE) STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- case (CFG_FLASH_WORD_SIZE) MX_MANUFACT:
- info->flash_id = FLASH_MAN_MX;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[1]; /* device ID */
- DEBUGF("\nFLASH DEVICEID: %x\n", value);
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
- case (CFG_FLASH_WORD_SIZE)STM_ID_29W320DT:
- info->flash_id += FLASH_STMW320DT;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
- case (CFG_FLASH_WORD_SIZE)MX_ID_LV320T:
- info->flash_id += FLASH_MXLV320T;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMD016)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else if ((info->flash_id & FLASH_TYPEMASK) == FLASH_STMW320DT) {
- /* set sector offsets for top boot block type */
- base += info->size;
- i = info->sector_count;
- /* 1 x 16k boot sector */
- base -= 16 << 10;
- --i;
- info->start[i] = base;
- /* 2 x 8k boot sectors */
- for (n = 0; n < 2; ++n) {
- base -= 8 << 10;
- --i;
- info->start[i] = base;
- }
- /* 1 x 32k boot sector */
- base -= 32 << 10;
- --i;
- info->start[i] = base;
-
- while (i > 0) { /* 64k regular sectors */
- base -= 64 << 10;
- --i;
- info->start[i] = base;
- }
- } else if ((info->flash_id & FLASH_TYPEMASK) == FLASH_MXLV320T) {
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00002000;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000a000;
- info->start[i--] = base + info->size - 0x0000c000;
- info->start[i--] = base + info->size - 0x0000e000;
- info->start[i--] = base + info->size - 0x00010000;
-
- for (; i >= 0; i--)
- info->start[i] = base + i * 0x00010000;
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
-
- for (i = 4; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
-
- for (; i >= 0; i--)
- info->start[i] = base + i * 0x00010000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
-
- /* For AMD29033C flash we need to resend the command of *
- * reading flash protection for upper 8 Mb of flash */
- if (i == 32) {
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAAAAAAAA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55555555;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x90909090;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
- }
-
- /* issue bank reset to return to read mode */
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0;
-
- return (info->size);
-}
-
-static int wait_for_DQ7_2(flash_info_t * info, int sect)
-{
- ulong start, now, last;
- volatile CFG_FLASH_WORD_SIZE *addr =
- (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- start = get_timer(0);
- last = start;
- while ((addr[0] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
- (CFG_FLASH_WORD_SIZE) 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- return -1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc('.');
- last = now;
- }
- }
- return 0;
-}
-
-static int flash_erase_2(flash_info_t * info, int s_first, int s_last)
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- int i;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN)
- printf("- missing\n");
- else
- printf("- no sectors to erase\n");
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot)
- printf("- Warning: %d protected sectors will not be erased!", prot);
-
- printf("\n");
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00500050; /* block erase */
- for (i = 0; i < 50; i++)
- udelay(1000); /* wait 1 ms */
- } else {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00300030; /* sector erase */
- }
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- wait_for_DQ7_2(info, sect);
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay(1000);
-
- /* reset to read mode */
- addr = (CFG_FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
- printf(" done\n");
- return 0;
-}
-
-static int write_word_2(flash_info_t * info, ulong dest, ulong data)
-{
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *) dest;
- volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *) & data;
- ulong start;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data)
- return (2);
-
- for (i = 0; i < 4 / sizeof(CFG_FLASH_WORD_SIZE); i++) {
- int flag;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer(0);
- while ((dest2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080)) {
-
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT)
- return (1);
- }
- }
-
- return (0);
-}
-#endif /* CFG_FLASH_2ND_16BIT_DEV */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-static int write_word(flash_info_t * info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init(void)
-{
- unsigned long total_b = 0;
- unsigned long size_b[CFG_MAX_FLASH_BANKS];
- unsigned short index = 0;
- int i;
- unsigned long val;
- unsigned long ebc_boot_size;
- unsigned long boot_selection;
-
- mfsdr(sdr_pstrp0, val);
- index = (val & SDR0_PSTRP0_BOOTSTRAP_MASK) >> 28;
-
- if ((index == 0xc) || (index == 8)) {
- /*
- * Boot Settings in IIC EEprom address 0xA8 or 0xA0
- * Read Serial Device Strap Register1 in PPC440SPe
- */
- mfsdr(sdr_sdstp1, val);
- boot_selection = val & SDR0_SDSTP1_BOOT_SEL_MASK;
- ebc_boot_size = val & SDR0_SDSTP1_EBC_ROM_BS_MASK;
-
- switch(boot_selection) {
- case SDR0_SDSTP1_BOOT_SEL_EBC:
- switch(ebc_boot_size) {
- case SDR0_SDSTP1_EBC_ROM_BS_16BIT:
- index = 3;
- break;
- case SDR0_SDSTP1_EBC_ROM_BS_8BIT:
- index = 0;
- break;
- }
- break;
-
- case SDR0_SDSTP1_BOOT_SEL_PCI:
- index = 1;
- break;
-
- }
- } /*else if (index == 0) {*/
-/* if (in8(FPGA_SETTING_REG) & FPGA_SET_REG_OP_CODE_FLASH_ABOVE)*/
-/* index = 8;*/ /* sram below op code flash -> new index 8*/
-/* }*/
-
- DEBUGF("\n");
- DEBUGF("FLASH: Index: %d\n", index);
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
-
- /* check whether the address is 0 */
- if (flash_addr_table[index][i] == 0)
- continue;
-
- /* call flash_get_size() to initialize sector address */
- size_b[i] = flash_get_size((vu_long *) flash_addr_table[index][i],
- &flash_info[i]);
-
- flash_info[i].size = size_b[i];
-
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
- i, size_b[i], size_b[i] << 20);
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
- }
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET, CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + CFG_MONITOR_LEN - 1,
- &flash_info[i]);
-#if defined(CFG_ENV_IS_IN_FLASH)
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[i]);
-#if defined(CFG_ENV_ADDR_REDUND)
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1,
- &flash_info[i]);
-#endif
-#endif
- total_b += flash_info[i].size;
- }
-
- return total_b;
-}
diff --git a/board/amcc/yucca/init.S b/board/amcc/yucca/init.S
deleted file mode 100644
index c9eca686b2..0000000000
--- a/board/amcc/yucca/init.S
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.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
- */
-/* port to AMCC 440SPE evaluatioon board - SG April 12,2005 */
-
-#include <ppc_asm.tmpl>
-#include <config.h>
-
-/* General */
-#define TLB_VALID 0x00000200
-
-/* Supported page sizes */
-
-#define SZ_1K 0x00000000
-#define SZ_4K 0x00000010
-#define SZ_16K 0x00000020
-#define SZ_64K 0x00000030
-#define SZ_256K 0x00000040
-#define SZ_1M 0x00000050
-#define SZ_16M 0x00000070
-#define SZ_256M 0x00000090
-
-/* Storage attributes */
-#define SA_W 0x00000800 /* Write-through */
-#define SA_I 0x00000400 /* Caching inhibited */
-#define SA_M 0x00000200 /* Memory coherence */
-#define SA_G 0x00000100 /* Guarded */
-#define SA_E 0x00000080 /* Endian */
-
-/* Access control */
-#define AC_X 0x00000024 /* Execute */
-#define AC_W 0x00000012 /* Write */
-#define AC_R 0x00000009 /* Read */
-
-/* Some handy macros */
-
-#define EPN(e) ((e) & 0xfffffc00)
-#define TLB0(epn,sz) ((EPN((epn)) | (sz) | TLB_VALID ))
-#define TLB1(rpn,erpn) (((rpn) & 0xfffffc00) | (erpn))
-#define TLB2(a) ((a) & 0x00000fbf)
-
-#define tlbtab_start\
- mflr r1 ;\
- bl 0f ;
-
-#define tlbtab_end\
- .long 0, 0, 0 ;\
-0: mflr r0 ;\
- mtlr r1 ;\
- blr ;
-
-#define tlbentry(epn,sz,rpn,erpn,attr)\
- .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr)
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- * Pointer to the table is returned in r1
- *
- *************************************************************************/
-
- .section .bootpg,"ax"
-
-/**************************************************************************
- * TLB table for revA
- *************************************************************************/
- .globl tlbtabA
-tlbtabA:
- tlbtab_start
- tlbentry(0xfff00000, SZ_16M, 0xfff00000, 4, AC_R|AC_W|AC_X|SA_G)
-
- tlbentry(CFG_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry(CFG_SDRAM_BASE + 0x10000000, SZ_256M, 0x10000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry(CFG_SDRAM_BASE + 0x20000000, SZ_256M, 0x20000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry(CFG_SDRAM_BASE + 0x30000000, SZ_256M, 0x30000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I)
-
- tlbentry(CFG_ISRAM_BASE, SZ_256K, 0x00000000, 4, AC_R|AC_W|AC_X|SA_I)
- tlbentry(CFG_FPGA_BASE, SZ_1K, 0xE2000000, 4,AC_R|AC_W|SA_I)
-
- tlbentry(CFG_OPER_FLASH, SZ_16M, 0xE7000000, 4,AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry(CFG_PERIPHERAL_BASE, SZ_4K, 0xF0000000, 4, AC_R|AC_W|SA_G|SA_I)
-
- tlbentry(CFG_PCI_BASE, SZ_256M, 0x00000000, 0xC, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCI_MEMBASE, SZ_256M, 0x10000000, 0xC, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE_MEMBASE, SZ_256M, 0xB0000000, 0xD, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE_BASE, SZ_16K, 0x20000000, 0xC, AC_R|AC_W|SA_G|SA_I)
-
- tlbentry(CFG_PCIE0_CFGBASE, SZ_1K, 0x40000000, 0xC, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE1_CFGBASE, SZ_1K, 0x80000000, 0xC, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE2_CFGBASE, SZ_1K, 0xC0000000, 0xC, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE0_XCFGBASE, SZ_1K, 0x50000000, 0xC, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE1_XCFGBASE, SZ_1K, 0x90000000, 0xC, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE2_XCFGBASE, SZ_1K, 0xD0000000, 0xC, AC_R|AC_W|SA_G|SA_I)
- tlbtab_end
-
-/**************************************************************************
- * TLB table for revB
- *
- * Notice: revB of the 440SPe chip is very strict about PLB real addresses
- * and ranges to be mapped for config space: it seems to only work with
- * d_nnnn_nnnn range (hangs the core upon config transaction attempts when
- * set otherwise) while revA uses c_nnnn_nnnn.
- *************************************************************************/
- .globl tlbtabB
-tlbtabB:
- tlbtab_start
- tlbentry(0xfff00000, SZ_16M, 0xfff00000, 4, AC_R|AC_W|AC_X|SA_G)
-
- tlbentry(CFG_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry(CFG_SDRAM_BASE + 0x10000000, SZ_256M, 0x10000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry(CFG_SDRAM_BASE + 0x20000000, SZ_256M, 0x20000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry(CFG_SDRAM_BASE + 0x30000000, SZ_256M, 0x30000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I)
-
- tlbentry(CFG_ISRAM_BASE, SZ_256K, 0x00000000, 4, AC_R|AC_W|AC_X|SA_I)
- tlbentry(CFG_FPGA_BASE, SZ_1K, 0xE2000000, 4,AC_R|AC_W|SA_I)
-
- tlbentry(CFG_OPER_FLASH, SZ_16M, 0xE7000000, 4,AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry(CFG_PERIPHERAL_BASE, SZ_4K, 0xF0000000, 4, AC_R|AC_W|SA_G|SA_I)
-
- tlbentry(CFG_PCI_BASE, SZ_256M, 0x00000000, 0xC, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCI_MEMBASE, SZ_256M, 0x10000000, 0xC, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE_MEMBASE, SZ_256M, 0xB0000000, 0xD, AC_R|AC_W|SA_G|SA_I)
-
- tlbentry(CFG_PCIE0_CFGBASE, SZ_1K, 0x00100000, 0xD, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE1_CFGBASE, SZ_1K, 0x20100000, 0xD, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE2_CFGBASE, SZ_1K, 0x40100000, 0xD, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE0_XCFGBASE, SZ_1K, 0x10000000, 0xD, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE1_XCFGBASE, SZ_1K, 0x30000000, 0xD, AC_R|AC_W|SA_G|SA_I)
- tlbentry(CFG_PCIE2_XCFGBASE, SZ_1K, 0x50000000, 0xD, AC_R|AC_W|SA_G|SA_I)
- tlbtab_end
diff --git a/board/amcc/yucca/u-boot.lds b/board/amcc/yucca/u-boot.lds
deleted file mode 100644
index 9df4f925c2..0000000000
--- a/board/amcc/yucca/u-boot.lds
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * (C) Copyright 2004
- * 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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- .bootpg 0xFFFFF000 :
- {
- cpu/ppc4xx/start.o (.bootpg)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/amcc/yucca/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/amcc/yucca/u-boot.lds.debug b/board/amcc/yucca/u-boot.lds.debug
deleted file mode 100644
index 474f922161..0000000000
--- a/board/amcc/yucca/u-boot.lds.debug
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * (C) Copyright 2002-2004
- * 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/amcc/yucca/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* common/environment.o(.text) */
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/amcc/yucca/yucca.c b/board/amcc/yucca/yucca.c
deleted file mode 100644
index e9b34dd249..0000000000
--- a/board/amcc/yucca/yucca.c
+++ /dev/null
@@ -1,1308 +0,0 @@
-/*
- * (C) Copyright 2006
- * 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
- *
- * Port to AMCC-440SPE Evaluation Board SOP - April 2005
- *
- * PCIe supporting routines derived from Linux 440SPe PCIe driver.
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-#include <i2c.h>
-#include <asm-ppc/io.h>
-
-#include "yucca.h"
-#include "../cpu/ppc4xx/440spe_pcie.h"
-
-#undef PCIE_ENDPOINT
-/* #define PCIE_ENDPOINT 1 */
-
-void fpga_init (void);
-
-void get_sys_info(PPC440_SYS_INFO *board_cfg );
-int compare_to_true(char *str );
-char *remove_l_w_space(char *in_str );
-char *remove_t_w_space(char *in_str );
-int get_console_port(void);
-unsigned long ppcMfcpr(unsigned long cpr_reg);
-unsigned long ppcMfsdr(unsigned long sdr_reg);
-
-int ppc440spe_init_pcie_rootport(int port);
-void ppc440spe_setup_pcie(struct pci_controller *hose, int port);
-
-#define DEBUG_ENV
-#ifdef DEBUG_ENV
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-
-#define FALSE 0
-#define TRUE 1
-
-int board_early_init_f (void)
-{
-/*----------------------------------------------------------------------------+
-| Define Boot devices
-+----------------------------------------------------------------------------*/
-#define BOOT_FROM_SMALL_FLASH 0x00
-#define BOOT_FROM_LARGE_FLASH_OR_SRAM 0x01
-#define BOOT_FROM_PCI 0x02
-#define BOOT_DEVICE_UNKNOWN 0x03
-
-/*----------------------------------------------------------------------------+
-| EBC Devices Characteristics
-| Peripheral Bank Access Parameters - EBC_BxAP
-| Peripheral Bank Configuration Register - EBC_BxCR
-+----------------------------------------------------------------------------*/
-
-/*
- * Small Flash and FRAM
- * BU Value
- * BxAP : 0x03800000 - 0 00000111 0 00 00 00 00 00 000 0 0 0 0 00000
- * B0CR : 0xff098000 - BAS = ff0 - 100 11 00 0000000000000
- * B2CR : 0xe7098000 - BAS = e70 - 100 11 00 0000000000000
- */
-#define EBC_BXAP_SMALL_FLASH EBC_BXAP_BME_DISABLED | \
- EBC_BXAP_TWT_ENCODE(7) | \
- EBC_BXAP_BCE_DISABLE | \
- EBC_BXAP_BCT_2TRANS | \
- EBC_BXAP_CSN_ENCODE(0) | \
- EBC_BXAP_OEN_ENCODE(0) | \
- EBC_BXAP_WBN_ENCODE(0) | \
- EBC_BXAP_WBF_ENCODE(0) | \
- EBC_BXAP_TH_ENCODE(0) | \
- EBC_BXAP_RE_DISABLED | \
- EBC_BXAP_SOR_DELAYED | \
- EBC_BXAP_BEM_WRITEONLY | \
- EBC_BXAP_PEN_DISABLED
-
-#define EBC_BXCR_SMALL_FLASH_CS0 EBC_BXCR_BAS_ENCODE(0xFF000000) | \
- EBC_BXCR_BS_16MB | \
- EBC_BXCR_BU_RW | \
- EBC_BXCR_BW_8BIT
-
-#define EBC_BXCR_SMALL_FLASH_CS2 EBC_BXCR_BAS_ENCODE(0xe7000000) | \
- EBC_BXCR_BS_16MB | \
- EBC_BXCR_BU_RW | \
- EBC_BXCR_BW_8BIT
-
-/*
- * Large Flash and SRAM
- * BU Value
- * BxAP : 0x048ff240 - 0 00000111 0 00 00 00 00 00 000 0 0 0 0 00000
- * B0CR : 0xff09a000 - BAS = ff0 - 100 11 01 0000000000000
- * B2CR : 0xe709a000 - BAS = e70 - 100 11 01 0000000000000
-*/
-#define EBC_BXAP_LARGE_FLASH EBC_BXAP_BME_DISABLED | \
- EBC_BXAP_TWT_ENCODE(7) | \
- EBC_BXAP_BCE_DISABLE | \
- EBC_BXAP_BCT_2TRANS | \
- EBC_BXAP_CSN_ENCODE(0) | \
- EBC_BXAP_OEN_ENCODE(0) | \
- EBC_BXAP_WBN_ENCODE(0) | \
- EBC_BXAP_WBF_ENCODE(0) | \
- EBC_BXAP_TH_ENCODE(0) | \
- EBC_BXAP_RE_DISABLED | \
- EBC_BXAP_SOR_DELAYED | \
- EBC_BXAP_BEM_WRITEONLY | \
- EBC_BXAP_PEN_DISABLED
-
-#define EBC_BXCR_LARGE_FLASH_CS0 EBC_BXCR_BAS_ENCODE(0xFF000000) | \
- EBC_BXCR_BS_16MB | \
- EBC_BXCR_BU_RW | \
- EBC_BXCR_BW_16BIT
-
-#define EBC_BXCR_LARGE_FLASH_CS2 EBC_BXCR_BAS_ENCODE(0xE7000000) | \
- EBC_BXCR_BS_16MB | \
- EBC_BXCR_BU_RW | \
- EBC_BXCR_BW_16BIT
-
-/*
- * FPGA
- * BU value :
- * B1AP = 0x05895240 - 0 00001011 0 00 10 01 01 01 001 0 0 1 0 00000
- * B1CR = 0xe201a000 - BAS = e20 - 000 11 01 00000000000000
- */
-#define EBC_BXAP_FPGA EBC_BXAP_BME_DISABLED | \
- EBC_BXAP_TWT_ENCODE(11) | \
- EBC_BXAP_BCE_DISABLE | \
- EBC_BXAP_BCT_2TRANS | \
- EBC_BXAP_CSN_ENCODE(10) | \
- EBC_BXAP_OEN_ENCODE(1) | \
- EBC_BXAP_WBN_ENCODE(1) | \
- EBC_BXAP_WBF_ENCODE(1) | \
- EBC_BXAP_TH_ENCODE(1) | \
- EBC_BXAP_RE_DISABLED | \
- EBC_BXAP_SOR_DELAYED | \
- EBC_BXAP_BEM_RW | \
- EBC_BXAP_PEN_DISABLED
-
-#define EBC_BXCR_FPGA_CS1 EBC_BXCR_BAS_ENCODE(0xe2000000) | \
- EBC_BXCR_BS_1MB | \
- EBC_BXCR_BU_RW | \
- EBC_BXCR_BW_16BIT
-
- unsigned long mfr;
- /*
- * Define Variables for EBC initialization depending on BOOTSTRAP option
- */
- unsigned long sdr0_pinstp, sdr0_sdstp1 ;
- unsigned long bootstrap_settings, ebc_data_width, boot_selection;
- int computed_boot_device = BOOT_DEVICE_UNKNOWN;
-
- /*-------------------------------------------------------------------+
- | Initialize EBC CONFIG -
- | Keep the Default value, but the bit PDT which has to be set to 1 ?TBC
- | default value :
- | 0x07C00000 - 0 0 000 1 1 1 1 1 0000 0 00000 000000000000
- |
- +-------------------------------------------------------------------*/
- mtebc(xbcfg, EBC_CFG_LE_UNLOCK |
- EBC_CFG_PTD_ENABLE |
- EBC_CFG_RTC_16PERCLK |
- EBC_CFG_ATC_PREVIOUS |
- EBC_CFG_DTC_PREVIOUS |
- EBC_CFG_CTC_PREVIOUS |
- EBC_CFG_OEO_PREVIOUS |
- EBC_CFG_EMC_DEFAULT |
- EBC_CFG_PME_DISABLE |
- EBC_CFG_PR_16);
-
- /*-------------------------------------------------------------------+
- |
- | PART 1 : Initialize EBC Bank 1
- | ==============================
- | Bank1 is always associated to the EPLD.
- | It has to be initialized prior to other banks settings computation
- | since some board registers values may be needed to determine the
- | boot type
- |
- +-------------------------------------------------------------------*/
- mtebc(pb1ap, EBC_BXAP_FPGA);
- mtebc(pb1cr, EBC_BXCR_FPGA_CS1);
-
- /*-------------------------------------------------------------------+
- |
- | PART 2 : Determine which boot device was selected
- | =================================================
- |
- | Read Pin Strap Register in PPC440SPe
- | Result can either be :
- | - Boot strap = boot from EBC 8bits => Small Flash
- | - Boot strap = boot from PCI
- | - Boot strap = IIC
- | In case of boot from IIC, read Serial Device Strap Register1
- |
- | Result can either be :
- | - Boot from EBC - EBC Bus Width = 8bits => Small Flash
- | - Boot from EBC - EBC Bus Width = 16bits => Large Flash or SRAM
- | - Boot from PCI
- |
- +-------------------------------------------------------------------*/
- /* Read Pin Strap Register in PPC440SP */
- sdr0_pinstp = ppcMfsdr(SDR0_PINSTP);
- bootstrap_settings = sdr0_pinstp & SDR0_PINSTP_BOOTSTRAP_MASK;
-
- switch (bootstrap_settings) {
- case SDR0_PINSTP_BOOTSTRAP_SETTINGS0:
- /*
- * Strapping Option A
- * Boot from EBC - 8 bits , Small Flash
- */
- computed_boot_device = BOOT_FROM_SMALL_FLASH;
- break;
- case SDR0_PINSTP_BOOTSTRAP_SETTINGS1:
- /*
- * Strappping Option B
- * Boot from PCI
- */
- computed_boot_device = BOOT_FROM_PCI;
- break;
- case SDR0_PINSTP_BOOTSTRAP_IIC_50_EN:
- case SDR0_PINSTP_BOOTSTRAP_IIC_54_EN:
- /*
- * Strapping Option C or D
- * Boot Settings in IIC EEprom address 0x50 or 0x54
- * Read Serial Device Strap Register1 in PPC440SPe
- */
- sdr0_sdstp1 = ppcMfsdr(SDR0_SDSTP1);
- boot_selection = sdr0_sdstp1 & SDR0_SDSTP1_ERPN_MASK;
- ebc_data_width = sdr0_sdstp1 & SDR0_SDSTP1_EBCW_MASK;
-
- switch (boot_selection) {
- case SDR0_SDSTP1_ERPN_EBC:
- switch (ebc_data_width) {
- case SDR0_SDSTP1_EBCW_16_BITS:
- computed_boot_device =
- BOOT_FROM_LARGE_FLASH_OR_SRAM;
- break;
- case SDR0_SDSTP1_EBCW_8_BITS :
- computed_boot_device = BOOT_FROM_SMALL_FLASH;
- break;
- }
- break;
-
- case SDR0_SDSTP1_ERPN_PCI:
- computed_boot_device = BOOT_FROM_PCI;
- break;
- default:
- /* should not occure */
- computed_boot_device = BOOT_DEVICE_UNKNOWN;
- }
- break;
- default:
- /* should not be */
- computed_boot_device = BOOT_DEVICE_UNKNOWN;
- break;
- }
-
- /*-------------------------------------------------------------------+
- |
- | PART 3 : Compute EBC settings depending on selected boot device
- | ====== ======================================================
- |
- | Resulting EBC init will be among following configurations :
- |
- | - Boot from EBC 8bits => boot from Small Flash selected
- | EBC-CS0 = Small Flash
- | EBC-CS2 = Large Flash and SRAM
- |
- | - Boot from EBC 16bits => boot from Large Flash or SRAM
- | EBC-CS0 = Large Flash or SRAM
- | EBC-CS2 = Small Flash
- |
- | - Boot from PCI
- | EBC-CS0 = not initialized to avoid address contention
- | EBC-CS2 = same as boot from Small Flash selected
- |
- +-------------------------------------------------------------------*/
- unsigned long ebc0_cs0_bxap_value = 0, ebc0_cs0_bxcr_value = 0;
- unsigned long ebc0_cs2_bxap_value = 0, ebc0_cs2_bxcr_value = 0;
-
- switch (computed_boot_device) {
- /*-------------------------------------------------------------------*/
- case BOOT_FROM_PCI:
- /*-------------------------------------------------------------------*/
- /*
- * By Default CS2 is affected to LARGE Flash
- * do not initialize SMALL FLASH to avoid address contention
- * Large Flash
- */
- ebc0_cs2_bxap_value = EBC_BXAP_LARGE_FLASH;
- ebc0_cs2_bxcr_value = EBC_BXCR_LARGE_FLASH_CS2;
- break;
-
- /*-------------------------------------------------------------------*/
- case BOOT_FROM_SMALL_FLASH:
- /*-------------------------------------------------------------------*/
- ebc0_cs0_bxap_value = EBC_BXAP_SMALL_FLASH;
- ebc0_cs0_bxcr_value = EBC_BXCR_SMALL_FLASH_CS0;
-
- /*
- * Large Flash or SRAM
- */
- /* ebc0_cs2_bxap_value = EBC_BXAP_LARGE_FLASH; */
- ebc0_cs2_bxap_value = 0x048ff240;
- ebc0_cs2_bxcr_value = EBC_BXCR_LARGE_FLASH_CS2;
- break;
-
- /*-------------------------------------------------------------------*/
- case BOOT_FROM_LARGE_FLASH_OR_SRAM:
- /*-------------------------------------------------------------------*/
- ebc0_cs0_bxap_value = EBC_BXAP_LARGE_FLASH;
- ebc0_cs0_bxcr_value = EBC_BXCR_LARGE_FLASH_CS0;
-
- /* Small flash */
- ebc0_cs2_bxap_value = EBC_BXAP_SMALL_FLASH;
- ebc0_cs2_bxcr_value = EBC_BXCR_SMALL_FLASH_CS2;
- break;
-
- /*-------------------------------------------------------------------*/
- default:
- /*-------------------------------------------------------------------*/
- /* BOOT_DEVICE_UNKNOWN */
- break;
- }
-
- mtebc(pb0ap, ebc0_cs0_bxap_value);
- mtebc(pb0cr, ebc0_cs0_bxcr_value);
- mtebc(pb2ap, ebc0_cs2_bxap_value);
- mtebc(pb2cr, ebc0_cs2_bxcr_value);
-
- /*--------------------------------------------------------------------+
- | Interrupt controller setup for the AMCC 440SPe Evaluation board.
- +--------------------------------------------------------------------+
- +---------------------------------------------------------------------+
- |Interrupt| Source | Pol. | Sensi.| Crit. |
- +---------+-----------------------------------+-------+-------+-------+
- | IRQ 00 | UART0 | High | Level | Non |
- | IRQ 01 | UART1 | High | Level | Non |
- | IRQ 02 | IIC0 | High | Level | Non |
- | IRQ 03 | IIC1 | High | Level | Non |
- | IRQ 04 | PCI0X0 MSG IN | High | Level | Non |
- | IRQ 05 | PCI0X0 CMD Write | High | Level | Non |
- | IRQ 06 | PCI0X0 Power Mgt | High | Level | Non |
- | IRQ 07 | PCI0X0 VPD Access | Rising| Edge | Non |
- | IRQ 08 | PCI0X0 MSI level 0 | High | Lvl/ed| Non |
- | IRQ 09 | External IRQ 15 - (PCI-Express) | pgm H | Pgm | Non |
- | IRQ 10 | UIC2 Non-critical Int. | NA | NA | Non |
- | IRQ 11 | UIC2 Critical Interrupt | NA | NA | Crit |
- | IRQ 12 | PCI Express MSI Level 0 | Rising| Edge | Non |
- | IRQ 13 | PCI Express MSI Level 1 | Rising| Edge | Non |
- | IRQ 14 | PCI Express MSI Level 2 | Rising| Edge | Non |
- | IRQ 15 | PCI Express MSI Level 3 | Rising| Edge | Non |
- | IRQ 16 | UIC3 Non-critical Int. | NA | NA | Non |
- | IRQ 17 | UIC3 Critical Interrupt | NA | NA | Crit |
- | IRQ 18 | External IRQ 14 - (PCI-Express) | Pgm | Pgm | Non |
- | IRQ 19 | DMA Channel 0 FIFO Full | High | Level | Non |
- | IRQ 20 | DMA Channel 0 Stat FIFO | High | Level | Non |
- | IRQ 21 | DMA Channel 1 FIFO Full | High | Level | Non |
- | IRQ 22 | DMA Channel 1 Stat FIFO | High | Level | Non |
- | IRQ 23 | I2O Inbound Doorbell | High | Level | Non |
- | IRQ 24 | Inbound Post List FIFO Not Empt | High | Level | Non |
- | IRQ 25 | I2O Region 0 LL PLB Write | High | Level | Non |
- | IRQ 26 | I2O Region 1 LL PLB Write | High | Level | Non |
- | IRQ 27 | I2O Region 0 HB PLB Write | High | Level | Non |
- | IRQ 28 | I2O Region 1 HB PLB Write | High | Level | Non |
- | IRQ 29 | GPT Down Count Timer | Rising| Edge | Non |
- | IRQ 30 | UIC1 Non-critical Int. | NA | NA | Non |
- | IRQ 31 | UIC1 Critical Interrupt | NA | NA | Crit. |
- |----------------------------------------------------------------------
- | IRQ 32 | Ext. IRQ 13 - (PCI-Express) |pgm (H)|pgm/Lvl| Non |
- | IRQ 33 | MAL Serr | High | Level | Non |
- | IRQ 34 | MAL Txde | High | Level | Non |
- | IRQ 35 | MAL Rxde | High | Level | Non |
- | IRQ 36 | DMC CE or DMC UE | High | Level | Non |
- | IRQ 37 | EBC or UART2 | High |Lvl Edg| Non |
- | IRQ 38 | MAL TX EOB | High | Level | Non |
- | IRQ 39 | MAL RX EOB | High | Level | Non |
- | IRQ 40 | PCIX0 MSI Level 1 | High |Lvl Edg| Non |
- | IRQ 41 | PCIX0 MSI level 2 | High |Lvl Edg| Non |
- | IRQ 42 | PCIX0 MSI level 3 | High |Lvl Edg| Non |
- | IRQ 43 | L2 Cache | Risin | Edge | Non |
- | IRQ 44 | GPT Compare Timer 0 | Risin | Edge | Non |
- | IRQ 45 | GPT Compare Timer 1 | Risin | Edge | Non |
- | IRQ 46 | GPT Compare Timer 2 | Risin | Edge | Non |
- | IRQ 47 | GPT Compare Timer 3 | Risin | Edge | Non |
- | IRQ 48 | GPT Compare Timer 4 | Risin | Edge | Non |
- | IRQ 49 | Ext. IRQ 12 - PCI-X |pgm/Fal|pgm/Lvl| Non |
- | IRQ 50 | Ext. IRQ 11 - |pgm (H)|pgm/Lvl| Non |
- | IRQ 51 | Ext. IRQ 10 - |pgm (H)|pgm/Lvl| Non |
- | IRQ 52 | Ext. IRQ 9 |pgm (H)|pgm/Lvl| Non |
- | IRQ 53 | Ext. IRQ 8 |pgm (H)|pgm/Lvl| Non |
- | IRQ 54 | DMA Error | High | Level | Non |
- | IRQ 55 | DMA I2O Error | High | Level | Non |
- | IRQ 56 | Serial ROM | High | Level | Non |
- | IRQ 57 | PCIX0 Error | High | Edge | Non |
- | IRQ 58 | Ext. IRQ 7- |pgm (H)|pgm/Lvl| Non |
- | IRQ 59 | Ext. IRQ 6- |pgm (H)|pgm/Lvl| Non |
- | IRQ 60 | EMAC0 Interrupt | High | Level | Non |
- | IRQ 61 | EMAC0 Wake-up | High | Level | Non |
- | IRQ 62 | Reserved | High | Level | Non |
- | IRQ 63 | XOR | High | Level | Non |
- |----------------------------------------------------------------------
- | IRQ 64 | PE0 AL | High | Level | Non |
- | IRQ 65 | PE0 VPD Access | Risin | Edge | Non |
- | IRQ 66 | PE0 Hot Reset Request | Risin | Edge | Non |
- | IRQ 67 | PE0 Hot Reset Request | Falli | Edge | Non |
- | IRQ 68 | PE0 TCR | High | Level | Non |
- | IRQ 69 | PE0 BusMaster VCO | Falli | Edge | Non |
- | IRQ 70 | PE0 DCR Error | High | Level | Non |
- | IRQ 71 | Reserved | N/A | N/A | Non |
- | IRQ 72 | PE1 AL | High | Level | Non |
- | IRQ 73 | PE1 VPD Access | Risin | Edge | Non |
- | IRQ 74 | PE1 Hot Reset Request | Risin | Edge | Non |
- | IRQ 75 | PE1 Hot Reset Request | Falli | Edge | Non |
- | IRQ 76 | PE1 TCR | High | Level | Non |
- | IRQ 77 | PE1 BusMaster VCO | Falli | Edge | Non |
- | IRQ 78 | PE1 DCR Error | High | Level | Non |
- | IRQ 79 | Reserved | N/A | N/A | Non |
- | IRQ 80 | PE2 AL | High | Level | Non |
- | IRQ 81 | PE2 VPD Access | Risin | Edge | Non |
- | IRQ 82 | PE2 Hot Reset Request | Risin | Edge | Non |
- | IRQ 83 | PE2 Hot Reset Request | Falli | Edge | Non |
- | IRQ 84 | PE2 TCR | High | Level | Non |
- | IRQ 85 | PE2 BusMaster VCO | Falli | Edge | Non |
- | IRQ 86 | PE2 DCR Error | High | Level | Non |
- | IRQ 87 | Reserved | N/A | N/A | Non |
- | IRQ 88 | External IRQ(5) | Progr | Progr | Non |
- | IRQ 89 | External IRQ 4 - Ethernet | Progr | Progr | Non |
- | IRQ 90 | External IRQ 3 - PCI-X | Progr | Progr | Non |
- | IRQ 91 | External IRQ 2 - PCI-X | Progr | Progr | Non |
- | IRQ 92 | External IRQ 1 - PCI-X | Progr | Progr | Non |
- | IRQ 93 | External IRQ 0 - PCI-X | Progr | Progr | Non |
- | IRQ 94 | Reserved | N/A | N/A | Non |
- | IRQ 95 | Reserved | N/A | N/A | Non |
- |---------------------------------------------------------------------
- | IRQ 96 | PE0 INTA | High | Level | Non |
- | IRQ 97 | PE0 INTB | High | Level | Non |
- | IRQ 98 | PE0 INTC | High | Level | Non |
- | IRQ 99 | PE0 INTD | High | Level | Non |
- | IRQ 100 | PE1 INTA | High | Level | Non |
- | IRQ 101 | PE1 INTB | High | Level | Non |
- | IRQ 102 | PE1 INTC | High | Level | Non |
- | IRQ 103 | PE1 INTD | High | Level | Non |
- | IRQ 104 | PE2 INTA | High | Level | Non |
- | IRQ 105 | PE2 INTB | High | Level | Non |
- | IRQ 106 | PE2 INTC | High | Level | Non |
- | IRQ 107 | PE2 INTD | Risin | Edge | Non |
- | IRQ 108 | PCI Express MSI Level 4 | Risin | Edge | Non |
- | IRQ 109 | PCI Express MSI Level 5 | Risin | Edge | Non |
- | IRQ 110 | PCI Express MSI Level 6 | Risin | Edge | Non |
- | IRQ 111 | PCI Express MSI Level 7 | Risin | Edge | Non |
- | IRQ 116 | PCI Express MSI Level 12 | Risin | Edge | Non |
- | IRQ 112 | PCI Express MSI Level 8 | Risin | Edge | Non |
- | IRQ 113 | PCI Express MSI Level 9 | Risin | Edge | Non |
- | IRQ 114 | PCI Express MSI Level 10 | Risin | Edge | Non |
- | IRQ 115 | PCI Express MSI Level 11 | Risin | Edge | Non |
- | IRQ 117 | PCI Express MSI Level 13 | Risin | Edge | Non |
- | IRQ 118 | PCI Express MSI Level 14 | Risin | Edge | Non |
- | IRQ 119 | PCI Express MSI Level 15 | Risin | Edge | Non |
- | IRQ 120 | PCI Express MSI Level 16 | Risin | Edge | Non |
- | IRQ 121 | PCI Express MSI Level 17 | Risin | Edge | Non |
- | IRQ 122 | PCI Express MSI Level 18 | Risin | Edge | Non |
- | IRQ 123 | PCI Express MSI Level 19 | Risin | Edge | Non |
- | IRQ 124 | PCI Express MSI Level 20 | Risin | Edge | Non |
- | IRQ 125 | PCI Express MSI Level 21 | Risin | Edge | Non |
- | IRQ 126 | PCI Express MSI Level 22 | Risin | Edge | Non |
- | IRQ 127 | PCI Express MSI Level 23 | Risin | Edge | Non |
- +---------+-----------------------------------+-------+-------+------*/
- /*--------------------------------------------------------------------+
- | Put UICs in PowerPC440SPemode.
- | Initialise UIC registers. Clear all interrupts. Disable all
- | interrupts.
- | Set critical interrupt values. Set interrupt polarities. Set
- | interrupt trigger levels. Make bit 0 High priority. Clear all
- | interrupts again.
- +-------------------------------------------------------------------*/
- mtdcr (uic3sr, 0xffffffff); /* Clear all interrupts */
- mtdcr (uic3er, 0x00000000); /* disable all interrupts */
- mtdcr (uic3cr, 0x00000000); /* Set Critical / Non Critical
- * interrupts */
- mtdcr (uic3pr, 0xffffffff); /* Set Interrupt Polarities */
- mtdcr (uic3tr, 0x001fffff); /* Set Interrupt Trigger Levels */
- mtdcr (uic3vr, 0x00000001); /* Set Vect base=0,INT31 Highest
- * priority */
- mtdcr (uic3sr, 0x00000000); /* clear all interrupts */
- mtdcr (uic3sr, 0xffffffff); /* clear all interrupts */
-
- mtdcr (uic2sr, 0xffffffff); /* Clear all interrupts */
- mtdcr (uic2er, 0x00000000); /* disable all interrupts */
- mtdcr (uic2cr, 0x00000000); /* Set Critical / Non Critical
- * interrupts */
- mtdcr (uic2pr, 0xebebebff); /* Set Interrupt Polarities */
- mtdcr (uic2tr, 0x74747400); /* Set Interrupt Trigger Levels */
- mtdcr (uic2vr, 0x00000001); /* Set Vect base=0,INT31 Highest
- * priority */
- mtdcr (uic2sr, 0x00000000); /* clear all interrupts */
- mtdcr (uic2sr, 0xffffffff); /* clear all interrupts */
-
- mtdcr (uic1sr, 0xffffffff); /* Clear all interrupts */
- mtdcr (uic1er, 0x00000000); /* disable all interrupts */
- mtdcr (uic1cr, 0x00000000); /* Set Critical / Non Critical
- * interrupts */
- mtdcr (uic1pr, 0xffffffff); /* Set Interrupt Polarities */
- mtdcr (uic1tr, 0x001f8040); /* Set Interrupt Trigger Levels */
- mtdcr (uic1vr, 0x00000001); /* Set Vect base=0,INT31 Highest
- * priority */
- mtdcr (uic1sr, 0x00000000); /* clear all interrupts */
- mtdcr (uic1sr, 0xffffffff); /* clear all interrupts */
-
- mtdcr (uic0sr, 0xffffffff); /* Clear all interrupts */
- mtdcr (uic0er, 0x00000000); /* disable all interrupts excepted
- * cascade to be checked */
- mtdcr (uic0cr, 0x00104001); /* Set Critical / Non Critical
- * interrupts */
- mtdcr (uic0pr, 0xffffffff); /* Set Interrupt Polarities */
- mtdcr (uic0tr, 0x010f0004); /* Set Interrupt Trigger Levels */
- mtdcr (uic0vr, 0x00000001); /* Set Vect base=0,INT31 Highest
- * priority */
- mtdcr (uic0sr, 0x00000000); /* clear all interrupts */
- mtdcr (uic0sr, 0xffffffff); /* clear all interrupts */
-
- /* SDR0_MFR should be part of Ethernet init */
- mfsdr (sdr_mfr, mfr);
- mfr &= ~SDR0_MFR_ECS_MASK;
- /*mtsdr(sdr_mfr, mfr);*/
- fpga_init();
-
- return 0;
-}
-
-int checkboard (void)
-{
- char *s = getenv("serial#");
-
- printf("Board: Yucca - AMCC 440SPe Evaluation Board");
- if (s != NULL) {
- puts(", serial# ");
- puts(s);
- }
- putc('\n');
-
- return 0;
-}
-
-static long int yucca_probe_for_dimms(void)
-{
- int dimm_installed[MAXDIMMS];
- int dimm_num, result;
- int dimms_found = 0;
- uchar dimm_addr = IIC0_DIMM0_ADDR;
- uchar dimm_spd_data[MAX_SPD_BYTES];
-
- for (dimm_num = 0; dimm_num < MAXDIMMS; dimm_num++) {
- /* check if there is a chip at the dimm address */
- switch (dimm_num) {
- case 0:
- dimm_addr = IIC0_DIMM0_ADDR;
- break;
- case 1:
- dimm_addr = IIC0_DIMM1_ADDR;
- break;
- }
-
- result = i2c_probe(dimm_addr);
-
- memset(dimm_spd_data, 0, MAX_SPD_BYTES * sizeof(char));
- if (result == 0) {
- /* read first byte of SPD data, if there is any data */
- result = i2c_read(dimm_addr, 0, 1, dimm_spd_data, 1);
-
- if (result == 0) {
- result = dimm_spd_data[0];
- result = result > MAX_SPD_BYTES ?
- MAX_SPD_BYTES : result;
- result = i2c_read(dimm_addr, 0, 1,
- dimm_spd_data, result);
- }
- }
-
- if ((result == 0) &&
- (dimm_spd_data[64] == MICRON_SPD_JEDEC_ID)) {
- dimm_installed[dimm_num] = TRUE;
- dimms_found++;
- debug("DIMM slot %d: DDR2 SDRAM detected\n", dimm_num);
- } else {
- dimm_installed[dimm_num] = FALSE;
- debug("DIMM slot %d: Not populated or cannot sucessfully probe the DIMM\n", dimm_num);
- }
- }
-
- if (dimms_found == 0) {
- printf("ERROR - No memory installed. Install a DDR-SDRAM DIMM.\n\n");
- hang();
- }
-
- if (dimm_installed[0] != TRUE) {
- printf("\nERROR - DIMM slot 0 must be populated before DIMM slot 1.\n");
- printf(" Unsupported configuration. Move DIMM module from DIMM slot 1 to slot 0.\n\n");
- hang();
- }
-
- return dimms_found;
-}
-
-/*************************************************************************
- * init SDRAM controller with fixed value
- * the initialization values are for 2x MICRON DDR2
- * PN: MT18HTF6472DY-53EB2
- * 512MB, DDR2, 533, CL4, ECC, REG
- ************************************************************************/
-static long int fixed_sdram(void)
-{
- long int yucca_dimms = 0;
-
- yucca_dimms = yucca_probe_for_dimms();
-
- /* SDRAM0_MCOPT2 (0X21) Clear DCEN BIT */
- mtdcr( 0x10, 0x00000021 );
- mtdcr( 0x11, 0x84000000 );
-
- /* SDRAM0_MCOPT1 (0X20) ECC OFF / 64 bits / 4 banks / DDR2 */
- mtdcr( 0x10, 0x00000020 );
- mtdcr( 0x11, 0x2D122000 );
-
- /* SET MCIF0_CODT Die Termination On */
- mtdcr( 0x10, 0x00000026 );
- if (yucca_dimms == 2)
- mtdcr( 0x11, 0x2A800021 );
- else if (yucca_dimms == 1)
- mtdcr( 0x11, 0x02800021 );
-
- /* On-Die Termination for Bank 0 */
- mtdcr( 0x10, 0x00000022 );
- if (yucca_dimms == 2)
- mtdcr( 0x11, 0x18000000 );
- else if (yucca_dimms == 1)
- mtdcr( 0x11, 0x06000000 );
-
- /* On-Die Termination for Bank 1 */
- mtdcr( 0x10, 0x00000023 );
- if (yucca_dimms == 2)
- mtdcr( 0x11, 0x18000000 );
- else if (yucca_dimms == 1)
- mtdcr( 0x11, 0x01800000 );
-
- /* On-Die Termination for Bank 2 */
- mtdcr( 0x10, 0x00000024 );
- if (yucca_dimms == 2)
- mtdcr( 0x11, 0x01800000 );
- else if (yucca_dimms == 1)
- mtdcr( 0x11, 0x00000000 );
-
- /* On-Die Termination for Bank 3 */
- mtdcr( 0x10, 0x00000025 );
- if (yucca_dimms == 2)
- mtdcr( 0x11, 0x01800000 );
- else if (yucca_dimms == 1)
- mtdcr( 0x11, 0x00000000 );
-
- /* Refresh Time register (0x30) Refresh every 7.8125uS */
- mtdcr( 0x10, 0x00000030 );
- mtdcr( 0x11, 0x08200000 );
-
- /* SET MCIF0_MMODE CL 4 */
- mtdcr( 0x10, 0x00000088 );
- mtdcr( 0x11, 0x00000642 );
-
- /* MCIF0_MEMODE */
- mtdcr( 0x10, 0x00000089 );
- mtdcr( 0x11, 0x00000004 );
-
- /*SET MCIF0_MB0CF */
- mtdcr( 0x10, 0x00000040 );
- mtdcr( 0x11, 0x00000201 );
-
- /* SET MCIF0_MB1CF */
- mtdcr( 0x10, 0x00000044 );
- mtdcr( 0x11, 0x00000201 );
-
- /* SET MCIF0_MB2CF */
- mtdcr( 0x10, 0x00000048 );
- if (yucca_dimms == 2)
- mtdcr( 0x11, 0x00000201 );
- else if (yucca_dimms == 1)
- mtdcr( 0x11, 0x00000000 );
-
- /* SET MCIF0_MB3CF */
- mtdcr( 0x10, 0x0000004c );
- if (yucca_dimms == 2)
- mtdcr( 0x11, 0x00000201 );
- else if (yucca_dimms == 1)
- mtdcr( 0x11, 0x00000000 );
-
- /* SET MCIF0_INITPLR0 # NOP */
- mtdcr( 0x10, 0x00000050 );
- mtdcr( 0x11, 0xB5380000 );
-
- /* SET MCIF0_INITPLR1 # PRE */
- mtdcr( 0x10, 0x00000051 );
- mtdcr( 0x11, 0x82100400 );
-
- /* SET MCIF0_INITPLR2 # EMR2 */
- mtdcr( 0x10, 0x00000052 );
- mtdcr( 0x11, 0x80820000 );
-
- /* SET MCIF0_INITPLR3 # EMR3 */
- mtdcr( 0x10, 0x00000053 );
- mtdcr( 0x11, 0x80830000 );
-
- /* SET MCIF0_INITPLR4 # EMR DLL ENABLE */
- mtdcr( 0x10, 0x00000054 );
- mtdcr( 0x11, 0x80810000 );
-
- /* SET MCIF0_INITPLR5 # MR DLL RESET */
- mtdcr( 0x10, 0x00000055 );
- mtdcr( 0x11, 0x80800542 );
-
- /* SET MCIF0_INITPLR6 # PRE */
- mtdcr( 0x10, 0x00000056 );
- mtdcr( 0x11, 0x82100400 );
-
- /* SET MCIF0_INITPLR7 # Refresh */
- mtdcr( 0x10, 0x00000057 );
- mtdcr( 0x11, 0x8A080000 );
-
- /* SET MCIF0_INITPLR8 # Refresh */
- mtdcr( 0x10, 0x00000058 );
- mtdcr( 0x11, 0x8A080000 );
-
- /* SET MCIF0_INITPLR9 # Refresh */
- mtdcr( 0x10, 0x00000059 );
- mtdcr( 0x11, 0x8A080000 );
-
- /* SET MCIF0_INITPLR10 # Refresh */
- mtdcr( 0x10, 0x0000005A );
- mtdcr( 0x11, 0x8A080000 );
-
- /* SET MCIF0_INITPLR11 # MR */
- mtdcr( 0x10, 0x0000005B );
- mtdcr( 0x11, 0x80800442 );
-
- /* SET MCIF0_INITPLR12 # EMR OCD Default*/
- mtdcr( 0x10, 0x0000005C );
- mtdcr( 0x11, 0x80810380 );
-
- /* SET MCIF0_INITPLR13 # EMR OCD Exit */
- mtdcr( 0x10, 0x0000005D );
- mtdcr( 0x11, 0x80810000 );
-
- /* 0x80: Adv Addr clock by 180 deg */
- mtdcr( 0x10, 0x00000080 );
- mtdcr( 0x11, 0x80000000 );
-
- /* 0x21: Exit self refresh, set DC_EN */
- mtdcr( 0x10, 0x00000021 );
- mtdcr( 0x11, 0x28000000 );
-
- /* 0x81: Write DQS Adv 90 + Fractional DQS Delay */
- mtdcr( 0x10, 0x00000081 );
- mtdcr( 0x11, 0x80000800 );
-
- /* MCIF0_SDTR1 */
- mtdcr( 0x10, 0x00000085 );
- mtdcr( 0x11, 0x80201000 );
-
- /* MCIF0_SDTR2 */
- mtdcr( 0x10, 0x00000086 );
- mtdcr( 0x11, 0x42103242 );
-
- /* MCIF0_SDTR3 */
- mtdcr( 0x10, 0x00000087 );
- mtdcr( 0x11, 0x0C100D14 );
-
- /* SET MQ0_B0BAS base addr 00000000 / 256MB */
- mtdcr( 0x40, 0x0000F800 );
-
- /* SET MQ0_B1BAS base addr 10000000 / 256MB */
- mtdcr( 0x41, 0x0400F800 );
-
- /* SET MQ0_B2BAS base addr 20000000 / 256MB */
- if (yucca_dimms == 2)
- mtdcr( 0x42, 0x0800F800 );
- else if (yucca_dimms == 1)
- mtdcr( 0x42, 0x00000000 );
-
- /* SET MQ0_B3BAS base addr 30000000 / 256MB */
- if (yucca_dimms == 2)
- mtdcr( 0x43, 0x0C00F800 );
- else if (yucca_dimms == 1)
- mtdcr( 0x43, 0x00000000 );
-
- /* SDRAM_RQDC */
- mtdcr( 0x10, 0x00000070 );
- mtdcr( 0x11, 0x8000003F );
-
- /* SDRAM_RDCC */
- mtdcr( 0x10, 0x00000078 );
- mtdcr( 0x11, 0x80000000 );
-
- /* SDRAM_RFDC */
- mtdcr( 0x10, 0x00000074 );
- mtdcr( 0x11, 0x00000220 );
-
- return (yucca_dimms * 512) << 20;
-}
-
-long int initdram (int board_type)
-{
- long dram_size = 0;
-
- dram_size = fixed_sdram();
-
- return dram_size;
-}
-
-#if defined(CFG_DRAM_TEST)
-int testdram (void)
-{
- uint *pstart = (uint *) 0x00000000;
- uint *pend = (uint *) 0x08000000;
- uint *p;
-
- for (p = pstart; p < pend; p++)
- *p = 0xaaaaaaaa;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0xaaaaaaaa) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- for (p = pstart; p < pend; p++)
- *p = 0x55555555;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0x55555555) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
- return 0;
-}
-#endif
-
-/*************************************************************************
- * pci_pre_init
- *
- * This routine is called just prior to registering the hose and gives
- * the board the opportunity to check things. Returning a value of zero
- * indicates that things are bad & PCI initialization should be aborted.
- *
- * Different boards may wish to customize the pci controller structure
- * (add regions, override default access routines, etc) or perform
- * certain pre-initialization actions.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
-int pci_pre_init(struct pci_controller * hose )
-{
- unsigned long strap;
-
- /*-------------------------------------------------------------------+
- * The yucca board is always configured as the host & requires the
- * PCI arbiter to be enabled.
- *-------------------------------------------------------------------*/
- mfsdr(sdr_sdstp1, strap);
- if( (strap & SDR0_SDSTP1_PAE_MASK) == 0 ) {
- printf("PCI: SDR0_STRP1[%08lX] - PCI Arbiter disabled.\n",strap);
- return 0;
- }
-
- return 1;
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT) */
-
-/*************************************************************************
- * pci_target_init
- *
- * The bootstrap configuration provides default settings for the pci
- * inbound map (PIM). But the bootstrap config choices are limited and
- * may not be sufficient for a given board.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT)
-void pci_target_init(struct pci_controller * hose )
-{
- DECLARE_GLOBAL_DATA_PTR;
-
- /*-------------------------------------------------------------------+
- * Disable everything
- *-------------------------------------------------------------------*/
- out32r( PCIX0_PIM0SA, 0 ); /* disable */
- out32r( PCIX0_PIM1SA, 0 ); /* disable */
- out32r( PCIX0_PIM2SA, 0 ); /* disable */
- out32r( PCIX0_EROMBA, 0 ); /* disable expansion rom */
-
- /*-------------------------------------------------------------------+
- * Map all of SDRAM to PCI address 0x0000_0000. Note that the 440
- * strapping options to not support sizes such as 128/256 MB.
- *-------------------------------------------------------------------*/
- out32r( PCIX0_PIM0LAL, CFG_SDRAM_BASE );
- out32r( PCIX0_PIM0LAH, 0 );
- out32r( PCIX0_PIM0SA, ~(gd->ram_size - 1) | 1 );
- out32r( PCIX0_BAR0, 0 );
-
- /*-------------------------------------------------------------------+
- * Program the board's subsystem id/vendor id
- *-------------------------------------------------------------------*/
- out16r( PCIX0_SBSYSVID, CFG_PCI_SUBSYS_VENDORID );
- out16r( PCIX0_SBSYSID, CFG_PCI_SUBSYS_DEVICEID );
-
- out16r( PCIX0_CMD, in16r(PCIX0_CMD) | PCI_COMMAND_MEMORY );
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT) */
-
-#if defined(CONFIG_PCI)
-/*************************************************************************
- * is_pci_host
- *
- * This routine is called to determine if a pci scan should be
- * performed. With various hardware environments (especially cPCI and
- * PPMC) it's insufficient to depend on the state of the arbiter enable
- * bit in the strap register, or generic host/adapter assumptions.
- *
- * Rather than hard-code a bad assumption in the general 440 code, the
- * 440 pci code requires the board to decide at runtime.
- *
- * Return 0 for adapter mode, non-zero for host (monarch) mode.
- *
- *
- ************************************************************************/
-int is_pci_host(struct pci_controller *hose)
-{
- /* The yucca board is always configured as host. */
- return 1;
-}
-
-int yucca_pcie_card_present(int port)
-{
- u16 reg;
-
- reg = in_be16((u16 *)FPGA_REG1C);
- switch(port) {
- case 0:
- return !(reg & FPGA_REG1C_PE0_PRSNT);
- case 1:
- return !(reg & FPGA_REG1C_PE1_PRSNT);
- case 2:
- return !(reg & FPGA_REG1C_PE2_PRSNT);
- default:
- return 0;
- }
-}
-
-/*
- * For the given slot, set rootpoint mode, send power to the slot,
- * turn on the green LED and turn off the yellow LED, enable the clock
- * and turn off reset.
- */
-void yucca_setup_pcie_fpga_rootpoint(int port)
-{
- u16 power, clock, green_led, yellow_led, reset_off, rootpoint, endpoint;
-
- switch(port) {
- case 0:
- rootpoint = FPGA_REG1C_PE0_ROOTPOINT;
- endpoint = 0;
- power = FPGA_REG1A_PE0_PWRON;
- green_led = FPGA_REG1A_PE0_GLED;
- clock = FPGA_REG1A_PE0_REFCLK_ENABLE;
- yellow_led = FPGA_REG1A_PE0_YLED;
- reset_off = FPGA_REG1C_PE0_PERST;
- break;
- case 1:
- rootpoint = 0;
- endpoint = FPGA_REG1C_PE1_ENDPOINT;
- power = FPGA_REG1A_PE1_PWRON;
- green_led = FPGA_REG1A_PE1_GLED;
- clock = FPGA_REG1A_PE1_REFCLK_ENABLE;
- yellow_led = FPGA_REG1A_PE1_YLED;
- reset_off = FPGA_REG1C_PE1_PERST;
- break;
- case 2:
- rootpoint = 0;
- endpoint = FPGA_REG1C_PE2_ENDPOINT;
- power = FPGA_REG1A_PE2_PWRON;
- green_led = FPGA_REG1A_PE2_GLED;
- clock = FPGA_REG1A_PE2_REFCLK_ENABLE;
- yellow_led = FPGA_REG1A_PE2_YLED;
- reset_off = FPGA_REG1C_PE2_PERST;
- break;
-
- default:
- return;
- }
-
- out_be16((u16 *)FPGA_REG1A,
- ~(power | clock | green_led) &
- (yellow_led | in_be16((u16 *)FPGA_REG1A)));
-
- out_be16((u16 *)FPGA_REG1C,
- ~(endpoint | reset_off) &
- (rootpoint | in_be16((u16 *)FPGA_REG1C)));
- /*
- * Leave device in reset for a while after powering on the
- * slot to give it a chance to initialize.
- */
- udelay(250 * 1000);
-
- out_be16((u16 *)FPGA_REG1C, reset_off | in_be16((u16 *)FPGA_REG1C));
-}
-/*
- * For the given slot, set endpoint mode, send power to the slot,
- * turn on the green LED and turn off the yellow LED, enable the clock
- * .In end point mode reset bit is read only.
- */
-void yucca_setup_pcie_fpga_endpoint(int port)
-{
- u16 power, clock, green_led, yellow_led, reset_off, rootpoint, endpoint;
-
- switch(port) {
- case 0:
- rootpoint = FPGA_REG1C_PE0_ROOTPOINT;
- endpoint = 0;
- power = FPGA_REG1A_PE0_PWRON;
- green_led = FPGA_REG1A_PE0_GLED;
- clock = FPGA_REG1A_PE0_REFCLK_ENABLE;
- yellow_led = FPGA_REG1A_PE0_YLED;
- reset_off = FPGA_REG1C_PE0_PERST;
- break;
- case 1:
- rootpoint = 0;
- endpoint = FPGA_REG1C_PE1_ENDPOINT;
- power = FPGA_REG1A_PE1_PWRON;
- green_led = FPGA_REG1A_PE1_GLED;
- clock = FPGA_REG1A_PE1_REFCLK_ENABLE;
- yellow_led = FPGA_REG1A_PE1_YLED;
- reset_off = FPGA_REG1C_PE1_PERST;
- break;
- case 2:
- rootpoint = 0;
- endpoint = FPGA_REG1C_PE2_ENDPOINT;
- power = FPGA_REG1A_PE2_PWRON;
- green_led = FPGA_REG1A_PE2_GLED;
- clock = FPGA_REG1A_PE2_REFCLK_ENABLE;
- yellow_led = FPGA_REG1A_PE2_YLED;
- reset_off = FPGA_REG1C_PE2_PERST;
- break;
-
- default:
- return;
- }
-
- out_be16((u16 *)FPGA_REG1A,
- ~(power | clock | green_led) &
- (yellow_led | in_be16((u16 *)FPGA_REG1A)));
-
- out_be16((u16 *)FPGA_REG1C,
- ~(rootpoint | reset_off) &
- (endpoint | in_be16((u16 *)FPGA_REG1C)));
-}
-
-static struct pci_controller pcie_hose[3] = {{0},{0},{0}};
-
-void pcie_setup_hoses(void)
-{
- struct pci_controller *hose;
- int i, bus;
-
- /*
- * assume we're called after the PCIX hose is initialized, which takes
- * bus ID 0 and therefore start numbering PCIe's from 1.
- */
- bus = 1;
- for (i = 0; i <= 2; i++) {
- /* Check for yucca card presence */
- if (!yucca_pcie_card_present(i))
- continue;
-
-#ifdef PCIE_ENDPOINT
- yucca_setup_pcie_fpga_endpoint(i);
- if (ppc440spe_init_pcie_endport(i)) {
-#else
- yucca_setup_pcie_fpga_rootpoint(i);
- if (ppc440spe_init_pcie_rootport(i)) {
-#endif
- printf("PCIE%d: initialization failed\n", i);
- continue;
- }
-
- hose = &pcie_hose[i];
- hose->first_busno = bus;
- hose->last_busno = bus;
- bus++;
-
- /* setup mem resource */
- pci_set_region(hose->regions + 0,
- CFG_PCIE_MEMBASE + i * CFG_PCIE_MEMSIZE,
- CFG_PCIE_MEMBASE + i * CFG_PCIE_MEMSIZE,
- CFG_PCIE_MEMSIZE,
- PCI_REGION_MEM
- );
- hose->region_count = 1;
- pci_register_hose(hose);
-
-#ifdef PCIE_ENDPOINT
- ppc440spe_setup_pcie_endpoint(hose, i);
- /*
- * Reson for no scanning is endpoint can not generate
- * upstream configuration accesses.
- */
-#else
- ppc440spe_setup_pcie_rootpoint(hose, i);
- /*
- * Config access can only go down stream
- */
- hose->last_busno = pci_hose_scan(hose);
-#endif
- }
-}
-#endif /* defined(CONFIG_PCI) */
-
-int misc_init_f (void)
-{
- uint reg;
-#if defined(CONFIG_STRESS)
- uint i ;
- uint disp;
-#endif
-
- out16(FPGA_REG10, (in16(FPGA_REG10) &
- ~(FPGA_REG10_AUTO_NEG_DIS|FPGA_REG10_RESET_ETH)) |
- FPGA_REG10_10MHZ_ENABLE |
- FPGA_REG10_100MHZ_ENABLE |
- FPGA_REG10_GIGABIT_ENABLE |
- FPGA_REG10_FULL_DUPLEX );
-
- udelay(10000); /* wait 10ms */
-
- out16(FPGA_REG10, (in16(FPGA_REG10) | FPGA_REG10_RESET_ETH));
-
- /* minimal init for PCIe */
- /* pci express 0 Endpoint Mode */
- mfsdr(SDR0_PE0DLPSET, reg);
- reg &= (~0x00400000);
- mtsdr(SDR0_PE0DLPSET, reg);
- /* pci express 1 Rootpoint Mode */
- mfsdr(SDR0_PE1DLPSET, reg);
- reg |= 0x00400000;
- mtsdr(SDR0_PE1DLPSET, reg);
- /* pci express 2 Rootpoint Mode */
- mfsdr(SDR0_PE2DLPSET, reg);
- reg |= 0x00400000;
- mtsdr(SDR0_PE2DLPSET, reg);
-
- out16(FPGA_REG1C,(in16 (FPGA_REG1C) &
- ~FPGA_REG1C_PE0_ROOTPOINT &
- ~FPGA_REG1C_PE1_ENDPOINT &
- ~FPGA_REG1C_PE2_ENDPOINT));
-
-#if defined(CONFIG_STRESS)
- /*
- * all this setting done by linux only needed by stress an charac. test
- * procedure
- * PCIe 1 Rootpoint PCIe2 Endpoint
- * PCIe 0 FIR Pre-emphasis Filter Coefficients & Transmit Driver
- * Power Level
- */
- for (i = 0, disp = 0; i < 8; i++, disp += 3) {
- mfsdr(SDR0_PE0HSSSET1L0 + disp, reg);
- reg |= 0x33000000;
- mtsdr(SDR0_PE0HSSSET1L0 + disp, reg);
- }
-
- /*
- * PCIe 1 FIR Pre-emphasis Filter Coefficients & Transmit Driver
- * Power Level
- */
- for (i = 0, disp = 0; i < 4; i++, disp += 3) {
- mfsdr(SDR0_PE1HSSSET1L0 + disp, reg);
- reg |= 0x33000000;
- mtsdr(SDR0_PE1HSSSET1L0 + disp, reg);
- }
-
- /*
- * PCIE 2 FIR Pre-emphasis Filter Coefficients & Transmit Driver
- * Power Level
- */
- for (i = 0, disp = 0; i < 4; i++, disp += 3) {
- mfsdr(SDR0_PE2HSSSET1L0 + disp, reg);
- reg |= 0x33000000;
- mtsdr(SDR0_PE2HSSSET1L0 + disp, reg);
- }
-
- reg = 0x21242222;
- mtsdr(SDR0_PE2UTLSET1, reg);
- reg = 0x11000000;
- mtsdr(SDR0_PE2UTLSET2, reg);
- /* pci express 1 Endpoint Mode */
- reg = 0x00004000;
- mtsdr(SDR0_PE2DLPSET, reg);
-
- mtsdr(SDR0_UART1, 0x2080005a); /* patch for TG */
-#endif
- return 0;
-}
-
-void fpga_init(void)
-{
- /*
- * by default sdram access is disabled by fpga
- */
- out16(FPGA_REG10, (in16 (FPGA_REG10) |
- FPGA_REG10_SDRAM_ENABLE |
- FPGA_REG10_ENABLE_DISPLAY ));
-
- return;
-}
-
-#ifdef CONFIG_POST
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed(void)
-{
- return (ctrlc());
-}
-#endif
-
-/*---------------------------------------------------------------------------+
- | onboard_pci_arbiter_selected => from EPLD
- +---------------------------------------------------------------------------*/
-int onboard_pci_arbiter_selected(int core_pci)
-{
-#if 0
- unsigned long onboard_pci_arbiter_sel;
-
- onboard_pci_arbiter_sel = in16(FPGA_REG0) & FPGA_REG0_EXT_ARB_SEL_MASK;
-
- if (onboard_pci_arbiter_sel == FPGA_REG0_EXT_ARB_SEL_EXTERNAL)
- return (BOARD_OPTION_SELECTED);
- else
-#endif
- return (BOARD_OPTION_NOT_SELECTED);
-}
-
-/*---------------------------------------------------------------------------+
- | ppcMfcpr.
- +---------------------------------------------------------------------------*/
-unsigned long ppcMfcpr(unsigned long cpr_reg)
-{
- unsigned long msr;
- unsigned long cpr_cfgaddr_temp;
- unsigned long cpr_value;
-
- msr = (mfmsr () & ~(MSR_EE));
- cpr_cfgaddr_temp = mfdcr(CPR0_CFGADDR);
- mtdcr(CPR0_CFGADDR, cpr_reg);
- cpr_value = mfdcr(CPR0_CFGDATA);
- mtdcr(CPR0_CFGADDR, cpr_cfgaddr_temp);
- mtmsr(msr);
-
- return (cpr_value);
-}
-
-/*----------------------------------------------------------------------------+
-| Indirect Access of the System DCR's (SDR)
-| ppcMfsdr
-+----------------------------------------------------------------------------*/
-unsigned long ppcMfsdr(unsigned long sdr_reg)
-{
- unsigned long msr;
- unsigned long sdr_cfgaddr_temp;
- unsigned long sdr_value;
-
- msr = (mfmsr () & ~(MSR_EE));
- sdr_cfgaddr_temp = mfdcr(SDR0_CFGADDR);
- mtdcr(SDR0_CFGADDR, sdr_reg);
- sdr_value = mfdcr(SDR0_CFGDATA);
- mtdcr(SDR0_CFGADDR, sdr_cfgaddr_temp);
- mtmsr(msr);
-
- return (sdr_value);
-}
diff --git a/board/amcc/yucca/yucca.h b/board/amcc/yucca/yucca.h
deleted file mode 100644
index 4d13021f38..0000000000
--- a/board/amcc/yucca/yucca.h
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * (C) Copyright 2006
- * 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 __YUCCA_H_
-#define __YUCCA_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*----------------------------------------------------------------------------+
-| Defines
-+----------------------------------------------------------------------------*/
-
-#define TMR_FREQ_EXT 25000000
-#define BOARD_UART_CLOCK 11059200
-
-#define BOARD_OPTION_SELECTED 1
-#define BOARD_OPTION_NOT_SELECTED 0
-
-#define ENGINEERING_CLOCK_CHECKING "clk_chk"
-#define ENGINEERING_EXTERNAL_CLOCK "ext_clk"
-
-#define ENGINEERING_CLOCK_CHECKING_DATA 1
-#define ENGINEERING_EXTERNAL_CLOCK_DATA 2
-
-/* ethernet definition */
-#define MAX_ENETMODE_PARM 3
-#define ENETMODE_NEG 0
-#define ENETMODE_SPEED 1
-#define ENETMODE_DUPLEX 2
-
-#define ENETMODE_AUTONEG 0
-#define ENETMODE_NO_AUTONEG 1
-#define ENETMODE_10 2
-#define ENETMODE_100 3
-#define ENETMODE_1000 4
-#define ENETMODE_HALF 5
-#define ENETMODE_FULL 6
-
-#define NUM_TLB_ENTRIES 64
-
-/* MICRON SPD JEDEC ID Code (first byte) - SPD data byte [64] */
-#define MICRON_SPD_JEDEC_ID 0x2c
-
-/*----------------------------------------------------------------------------+
-| TLB specific defines.
-+----------------------------------------------------------------------------*/
-#define TLB_256MB_ALIGN_MASK 0xF0000000
-#define TLB_16MB_ALIGN_MASK 0xFF000000
-#define TLB_1MB_ALIGN_MASK 0xFFF00000
-#define TLB_256KB_ALIGN_MASK 0xFFFC0000
-#define TLB_64KB_ALIGN_MASK 0xFFFF0000
-#define TLB_16KB_ALIGN_MASK 0xFFFFC000
-#define TLB_4KB_ALIGN_MASK 0xFFFFF000
-#define TLB_1KB_ALIGN_MASK 0xFFFFFC00
-#define TLB_256MB_SIZE 0x10000000
-#define TLB_16MB_SIZE 0x01000000
-#define TLB_1MB_SIZE 0x00100000
-#define TLB_256KB_SIZE 0x00040000
-#define TLB_64KB_SIZE 0x00010000
-#define TLB_16KB_SIZE 0x00004000
-#define TLB_4KB_SIZE 0x00001000
-#define TLB_1KB_SIZE 0x00000400
-
-#define TLB_WORD0_EPN_MASK 0xFFFFFC00
-#define TLB_WORD0_EPN_ENCODE(n) (((unsigned long)(n))&0xFFFFFC00)
-#define TLB_WORD0_EPN_DECODE(n) (((unsigned long)(n))&0xFFFFFC00)
-#define TLB_WORD0_V_MASK 0x00000200
-#define TLB_WORD0_V_ENABLE 0x00000200
-#define TLB_WORD0_V_DISABLE 0x00000000
-#define TLB_WORD0_TS_MASK 0x00000100
-#define TLB_WORD0_TS_1 0x00000100
-#define TLB_WORD0_TS_0 0x00000000
-#define TLB_WORD0_SIZE_MASK 0x000000F0
-#define TLB_WORD0_SIZE_1KB 0x00000000
-#define TLB_WORD0_SIZE_4KB 0x00000010
-#define TLB_WORD0_SIZE_16KB 0x00000020
-#define TLB_WORD0_SIZE_64KB 0x00000030
-#define TLB_WORD0_SIZE_256KB 0x00000040
-#define TLB_WORD0_SIZE_1MB 0x00000050
-#define TLB_WORD0_SIZE_16MB 0x00000070
-#define TLB_WORD0_SIZE_256MB 0x00000090
-#define TLB_WORD0_TPAR_MASK 0x0000000F
-#define TLB_WORD0_TPAR_ENCODE(n) ((((unsigned long)(n))&0x0F)<<0)
-#define TLB_WORD0_TPAR_DECODE(n) ((((unsigned long)(n))>>0)&0x0F)
-
-#define TLB_WORD1_RPN_MASK 0xFFFFFC00
-#define TLB_WORD1_RPN_ENCODE(n) (((unsigned long)(n))&0xFFFFFC00)
-#define TLB_WORD1_RPN_DECODE(n) (((unsigned long)(n))&0xFFFFFC00)
-#define TLB_WORD1_PAR1_MASK 0x00000300
-#define TLB_WORD1_PAR1_ENCODE(n) ((((unsigned long)(n))&0x03)<<8)
-#define TLB_WORD1_PAR1_DECODE(n) ((((unsigned long)(n))>>8)&0x03)
-#define TLB_WORD1_PAR1_0 0x00000000
-#define TLB_WORD1_PAR1_1 0x00000100
-#define TLB_WORD1_PAR1_2 0x00000200
-#define TLB_WORD1_PAR1_3 0x00000300
-#define TLB_WORD1_ERPN_MASK 0x0000000F
-#define TLB_WORD1_ERPN_ENCODE(n) ((((unsigned long)(n))&0x0F)<<0)
-#define TLB_WORD1_ERPN_DECODE(n) ((((unsigned long)(n))>>0)&0x0F)
-
-#define TLB_WORD2_PAR2_MASK 0xC0000000
-#define TLB_WORD2_PAR2_ENCODE(n) ((((unsigned long)(n))&0x03)<<30)
-#define TLB_WORD2_PAR2_DECODE(n) ((((unsigned long)(n))>>30)&0x03)
-#define TLB_WORD2_PAR2_0 0x00000000
-#define TLB_WORD2_PAR2_1 0x40000000
-#define TLB_WORD2_PAR2_2 0x80000000
-#define TLB_WORD2_PAR2_3 0xC0000000
-#define TLB_WORD2_U0_MASK 0x00008000
-#define TLB_WORD2_U0_ENABLE 0x00008000
-#define TLB_WORD2_U0_DISABLE 0x00000000
-#define TLB_WORD2_U1_MASK 0x00004000
-#define TLB_WORD2_U1_ENABLE 0x00004000
-#define TLB_WORD2_U1_DISABLE 0x00000000
-#define TLB_WORD2_U2_MASK 0x00002000
-#define TLB_WORD2_U2_ENABLE 0x00002000
-#define TLB_WORD2_U2_DISABLE 0x00000000
-#define TLB_WORD2_U3_MASK 0x00001000
-#define TLB_WORD2_U3_ENABLE 0x00001000
-#define TLB_WORD2_U3_DISABLE 0x00000000
-#define TLB_WORD2_W_MASK 0x00000800
-#define TLB_WORD2_W_ENABLE 0x00000800
-#define TLB_WORD2_W_DISABLE 0x00000000
-#define TLB_WORD2_I_MASK 0x00000400
-#define TLB_WORD2_I_ENABLE 0x00000400
-#define TLB_WORD2_I_DISABLE 0x00000000
-#define TLB_WORD2_M_MASK 0x00000200
-#define TLB_WORD2_M_ENABLE 0x00000200
-#define TLB_WORD2_M_DISABLE 0x00000000
-#define TLB_WORD2_G_MASK 0x00000100
-#define TLB_WORD2_G_ENABLE 0x00000100
-#define TLB_WORD2_G_DISABLE 0x00000000
-#define TLB_WORD2_E_MASK 0x00000080
-#define TLB_WORD2_E_ENABLE 0x00000080
-#define TLB_WORD2_E_DISABLE 0x00000000
-#define TLB_WORD2_UX_MASK 0x00000020
-#define TLB_WORD2_UX_ENABLE 0x00000020
-#define TLB_WORD2_UX_DISABLE 0x00000000
-#define TLB_WORD2_UW_MASK 0x00000010
-#define TLB_WORD2_UW_ENABLE 0x00000010
-#define TLB_WORD2_UW_DISABLE 0x00000000
-#define TLB_WORD2_UR_MASK 0x00000008
-#define TLB_WORD2_UR_ENABLE 0x00000008
-#define TLB_WORD2_UR_DISABLE 0x00000000
-#define TLB_WORD2_SX_MASK 0x00000004
-#define TLB_WORD2_SX_ENABLE 0x00000004
-#define TLB_WORD2_SX_DISABLE 0x00000000
-#define TLB_WORD2_SW_MASK 0x00000002
-#define TLB_WORD2_SW_ENABLE 0x00000002
-#define TLB_WORD2_SW_DISABLE 0x00000000
-#define TLB_WORD2_SR_MASK 0x00000001
-#define TLB_WORD2_SR_ENABLE 0x00000001
-#define TLB_WORD2_SR_DISABLE 0x00000000
-
-/*----------------------------------------------------------------------------+
-| Board specific defines.
-+----------------------------------------------------------------------------*/
-#define NONCACHE_MEMORY_SIZE (64*1024)
-#define NONCACHE_AREA0_ENDOFFSET (64*1024)
-#define NONCACHE_AREA1_ENDOFFSET (32*1024)
-
-#define FLASH_SECTORSIZE 0x00010000
-
-/* SDRAM MICRON */
-#define SDRAM_MICRON 0x2C
-
-#define SDRAM_TRUE 1
-#define SDRAM_FALSE 0
-#define SDRAM_DDR1 1
-#define SDRAM_DDR2 2
-#define SDRAM_NONE 0
-#define MAXDIMMS 2 /* Changes le 12/01/05 pour 1.6 */
-#define MAXRANKS 4 /* Changes le 12/01/05 pour 1.6 */
-#define MAXBANKSPERDIMM 2
-#define MAXRANKSPERDIMM 2
-#define MAXBXCF 4 /* Changes le 12/01/05 pour 1.6 */
-#define MAXSDRAMMEMORY 0xFFFFFFFF /* 4GB */
-#define ERROR_STR_LENGTH 256
-#define MAX_SPD_BYTES 256 /* Max number of bytes on the DIMM's SPD EEPROM */
-
-/*----------------------------------------------------------------------------+
-| SDR Configuration registers
-+----------------------------------------------------------------------------*/
-/* Serial Device Strap Reg 0 */
-#define sdr_pstrp0 0x0040
-
-#define SDR0_SDSTP1_EBC_ROM_BS_MASK 0x00000080 /* EBC Boot bus width Mask */
-#define SDR0_SDSTP1_EBC_ROM_BS_16BIT 0x00000080 /* EBC 16 Bits */
-#define SDR0_SDSTP1_EBC_ROM_BS_8BIT 0x00000000 /* EBC 8 Bits */
-
-#define SDR0_SDSTP1_BOOT_SEL_MASK 0x00080000 /* Boot device Selection Mask */
-#define SDR0_SDSTP1_BOOT_SEL_EBC 0x00000000 /* EBC */
-#define SDR0_SDSTP1_BOOT_SEL_PCI 0x00080000 /* PCI */
-
-#define SDR0_SDSTP1_EBC_SIZE_MASK 0x00000060 /* Boot rom size Mask */
-#define SDR0_SDSTP1_BOOT_SIZE_16MB 0x00000060 /* 16 MB */
-#define SDR0_SDSTP1_BOOT_SIZE_8MB 0x00000040 /* 8 MB */
-#define SDR0_SDSTP1_BOOT_SIZE_4MB 0x00000020 /* 4 MB */
-#define SDR0_SDSTP1_BOOT_SIZE_2MB 0x00000000 /* 2 MB */
-
-/* Serial Device Enabled - Addr = 0xA8 */
-#define SDR0_PSTRP0_BOOTSTRAP_IIC_A8_EN SDR0_PSTRP0_BOOTSTRAP_SETTINGS5
-/* Serial Device Enabled - Addr = 0xA4 */
-#define SDR0_PSTRP0_BOOTSTRAP_IIC_A4_EN SDR0_PSTRP0_BOOTSTRAP_SETTINGS7
-
-/* Pin Straps Reg */
-#define SDR0_PSTRP0 0x0040
-#define SDR0_PSTRP0_BOOTSTRAP_MASK 0xE0000000 /* Strap Bits */
-
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS0 0x00000000 /* Default strap settings 0 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS1 0x20000000 /* Default strap settings 1 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS2 0x40000000 /* Default strap settings 2 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS3 0x60000000 /* Default strap settings 3 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS4 0x80000000 /* Default strap settings 4 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS5 0xA0000000 /* Default strap settings 5 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS6 0xC0000000 /* Default strap settings 6 */
-#define SDR0_PSTRP0_BOOTSTRAP_SETTINGS7 0xE0000000 /* Default strap settings 7 */
-
-/* fpgareg - defines are in include/config/YUCCA.h */
-
-#define SDR0_CUST0_ENET3_MASK 0x00000080
-#define SDR0_CUST0_ENET3_COPPER 0x00000000
-#define SDR0_CUST0_ENET3_FIBER 0x00000080
-#define SDR0_CUST0_RGMII3_MASK 0x00000070
-#define SDR0_CUST0_RGMII3_ENCODE(n) ((((unsigned long)(n))&0x7)<<4)
-#define SDR0_CUST0_RGMII3_DECODE(n) ((((unsigned long)(n))>>4)&0x07)
-#define SDR0_CUST0_RGMII3_DISAB 0x00000000
-#define SDR0_CUST0_RGMII3_RTBI 0x00000040
-#define SDR0_CUST0_RGMII3_RGMII 0x00000050
-#define SDR0_CUST0_RGMII3_TBI 0x00000060
-#define SDR0_CUST0_RGMII3_GMII 0x00000070
-#define SDR0_CUST0_ENET2_MASK 0x00000008
-#define SDR0_CUST0_ENET2_COPPER 0x00000000
-#define SDR0_CUST0_ENET2_FIBER 0x00000008
-#define SDR0_CUST0_RGMII2_MASK 0x00000007
-#define SDR0_CUST0_RGMII2_ENCODE(n) ((((unsigned long)(n))&0x7)<<0)
-#define SDR0_CUST0_RGMII2_DECODE(n) ((((unsigned long)(n))>>0)&0x07)
-#define SDR0_CUST0_RGMII2_DISAB 0x00000000
-#define SDR0_CUST0_RGMII2_RTBI 0x00000004
-#define SDR0_CUST0_RGMII2_RGMII 0x00000005
-#define SDR0_CUST0_RGMII2_TBI 0x00000006
-#define SDR0_CUST0_RGMII2_GMII 0x00000007
-
-#define ONE_MILLION 1000000
-#define ONE_BILLION 1000000000
-
-/*----------------------------------------------------------------------------+
-| X
-| XX
-| XX XXX XXXXX XX XXX XXXXX
-| XX XX X XXX XX XX
-| XX XX XXXXXX XX XX
-| XX XX X XX XX XX XX
-| XXX XX XXXXX X XXXX XXX
-+----------------------------------------------------------------------------*/
-/*----------------------------------------------------------------------------+
-| Declare Configuration values
-+----------------------------------------------------------------------------*/
-
-typedef enum config_selection {
- CONFIG_NOT_SELECTED,
- CONFIG_SELECTED
-} config_selection_t;
-
-typedef enum config_list {
- UART2_IN_SERVICE_MODE,
- CPU_TRACE_MODE,
- UART1_CTS_RTS,
- CONFIG_NB
-} config_list_t;
-
-#define MAX_CONFIG_SELECT_NB 3
-
-#define BOARD_INFO_UART2_IN_SERVICE_MODE 1
-#define BOARD_INFO_CPU_TRACE_MODE 2
-#define BOARD_INFO_UART1_CTS_RTS_MODE 4
-
-void force_bup_config_selection(config_selection_t *confgi_select_P);
-void update_config_selection_table(config_selection_t *config_select_P);
-void display_config_selection(config_selection_t *config_select_P);
-
-/*----------------------------------------------------------------------------+
-| XX
-|
-| XXXX XX XXX XXX XXXX
-| XX XX XX XX XX XX
-| XX XXX XX XX XX XX XX
-| XX XX XXXXX XX XX XX
-| XXXX XX XXXX XXXX
-| XXXX
-|
-|
-|
-| +------------------------------------------------------------------+
-| | GPIO/Secondary func | Primary Function | I/O | Alternate1 | I/O |
-| +----------------------+------------------+-----+------------+-----+
-| | | | | | |
-| | GPIO0_0 | PCIX0REQ2_N | I/O | TRCCLK | |
-| | GPIO0_1 | PCIX0REQ3_N | I/O | TRCBS0 | |
-| | GPIO0_2 | PCIX0GNT2_N | I/O | TRCBS1 | |
-| | GPIO0_3 | PCIX0GNT3_N | I/O | TRCBS2 | |
-| | GPIO0_4 | PCIX1REQ2_N | I/O | TRCES0 | |
-| | GPIO0_5 | PCIX1REQ3_N | I/O | TRCES1 | |
-| | GPIO0_6 | PCIX1GNT2_N | I/O | TRCES2 | NA |
-| | GPIO0_7 | PCIX1GNT3_N | I/O | TRCES3 | NA |
-| | GPIO0_8 | PERREADY | I | TRCES4 | NA |
-| | GPIO0_9 | PERCS1_N | O | TRCTS0 | NA |
-| | GPIO0_10 | PERCS2_N | O | TRCTS1 | NA |
-| | GPIO0_11 | IRQ0 | I | TRCTS2 | NA |
-| | GPIO0_12 | IRQ1 | I | TRCTS3 | NA |
-| | GPIO0_13 | IRQ2 | I | TRCTS4 | NA |
-| | GPIO0_14 | IRQ3 | I | TRCTS5 | NA |
-| | GPIO0_15 | IRQ4 | I | TRCTS6 | NA |
-| | GPIO0_16 | IRQ5 | I | UART2RX | I |
-| | GPIO0_17 | PERBE0_N | O | UART2TX | O |
-| | GPIO0_18 | PCI0GNT0_N | I/O | NA | NA |
-| | GPIO0_19 | PCI0GNT1_N | I/O | NA | NA |
-| | GPIO0_20 | PCI0REQ0_N | I/O | NA | NA |
-| | GPIO0_21 | PCI0REQ1_N | I/O | NA | NA |
-| | GPIO0_22 | PCI1GNT0_N | I/O | NA | NA |
-| | GPIO0_23 | PCI1GNT1_N | I/O | NA | NA |
-| | GPIO0_24 | PCI1REQ0_N | I/O | NA | NA |
-| | GPIO0_25 | PCI1REQ1_N | I/O | NA | NA |
-| | GPIO0_26 | PCI2GNT0_N | I/O | NA | NA |
-| | GPIO0_27 | PCI2GNT1_N | I/O | NA | NA |
-| | GPIO0_28 | PCI2REQ0_N | I/O | NA | NA |
-| | GPIO0_29 | PCI2REQ1_N | I/O | NA | NA |
-| | GPIO0_30 | UART1RX | I | NA | NA |
-| | GPIO0_31 | UART1TX | O | NA | NA |
-| | | | | | |
-| +----------------------+------------------+-----+------------+-----+
-|
-+----------------------------------------------------------------------------*/
-
-unsigned long auto_calc_speed(void);
-/*----------------------------------------------------------------------------+
-| Prototypes
-+----------------------------------------------------------------------------*/
-void print_evb440spe_info(void);
-
-int onboard_pci_arbiter_selected(int core_pci);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* __YUCCA_H_ */
diff --git a/board/amirix/ap1000/Makefile b/board/amirix/ap1000/Makefile
deleted file mode 100644
index 7b99d314f9..0000000000
--- a/board/amirix/ap1000/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o serial.o pci.o powerspan.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $^
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/amirix/ap1000/ap1000.c b/board/amirix/ap1000/ap1000.c
deleted file mode 100644
index 7d11b29b59..0000000000
--- a/board/amirix/ap1000/ap1000.c
+++ /dev/null
@@ -1,699 +0,0 @@
-/*
- * amirix.c: ppcboot platform support for AMIRIX board
- *
- * Copyright 2002 Mind NV
- * Copyright 2003 AMIRIX Systems Inc.
- *
- * http://www.mind.be/
- * http://www.amirix.com/
- *
- * Author : Peter De Schrijver (p2@mind.be)
- * Frank Smith (smith@amirix.com)
- *
- * Derived from : Other platform support files in this tree, ml2
- *
- * This software may be used and distributed according to the terms of
- * the GNU General Public License (GPL) version 2, incorporated herein by
- * reference. Drivers based on or derived from this code fall under the GPL
- * and must retain the authorship, copyright and this license notice. This
- * file is not a complete program and may only be used when the entire
- * program is licensed under the GPL.
- *
- */
-
-#include <common.h>
-#include <command.h>
-#include <asm/processor.h>
-
-#include "powerspan.h"
-#include "ap1000.h"
-
-int board_pre_init (void)
-{
- return 0;
-}
-
-/** serial number and platform display at startup */
-int checkboard (void)
-{
- char *s = getenv ("serial#");
- char *e;
-
- /* After a loadace command, the SystemAce control register is left in a wonky state. */
- /* this code did not work in board_pre_init */
- unsigned char *p = (unsigned char *) AP1000_SYSACE_REGBASE;
-
- p[SYSACE_CTRLREG0] = 0x0;
-
- /* add platform and device to banner */
- switch (get_device ()) {
- case AP1xx_AP107_TARGET:
- puts (AP1xx_AP107_TARGET_STR);
- break;
- case AP1xx_AP120_TARGET:
- puts (AP1xx_AP120_TARGET_STR);
- break;
- case AP1xx_AP130_TARGET:
- puts (AP1xx_AP130_TARGET_STR);
- break;
- case AP1xx_AP1070_TARGET:
- puts (AP1xx_AP1070_TARGET_STR);
- break;
- case AP1xx_AP1100_TARGET:
- puts (AP1xx_AP1100_TARGET_STR);
- break;
- default:
- puts (AP1xx_UNKNOWN_STR);
- break;
- }
- puts (AP1xx_TARGET_STR);
- puts (" with ");
-
- switch (get_platform ()) {
- case AP100_BASELINE_PLATFORM:
- case AP1000_BASELINE_PLATFORM:
- puts (AP1xx_BASELINE_PLATFORM_STR);
- break;
- case AP1xx_QUADGE_PLATFORM:
- puts (AP1xx_QUADGE_PLATFORM_STR);
- break;
- case AP1xx_MGT_REF_PLATFORM:
- puts (AP1xx_MGT_REF_PLATFORM_STR);
- break;
- case AP1xx_STANDARD_PLATFORM:
- puts (AP1xx_STANDARD_PLATFORM_STR);
- break;
- case AP1xx_DUAL_PLATFORM:
- puts (AP1xx_DUAL_PLATFORM_STR);
- break;
- case AP1xx_BASE_SRAM_PLATFORM:
- puts (AP1xx_BASE_SRAM_PLATFORM_STR);
- break;
- case AP1xx_PCI_PCB_TESTPLATFORM:
- case AP1000_PCI_PCB_TESTPLATFORM:
- puts (AP1xx_PCI_PCB_TESTPLATFORM_STR);
- break;
- case AP1xx_DUAL_GE_MEZZ_TESTPLATFORM:
- puts (AP1xx_DUAL_GE_MEZZ_TESTPLATFORM_STR);
- break;
- case AP1xx_SFP_MEZZ_TESTPLATFORM:
- puts (AP1xx_SFP_MEZZ_TESTPLATFORM_STR);
- break;
- default:
- puts (AP1xx_UNKNOWN_STR);
- break;
- }
-
- if ((get_platform () & AP1xx_TESTPLATFORM_MASK) != 0) {
- puts (AP1xx_TESTPLATFORM_STR);
- } else {
- puts (AP1xx_PLATFORM_STR);
- }
-
- putc ('\n');
-
- puts ("Serial#: ");
-
- if (!s) {
- printf ("### No HW ID - assuming AMIRIX");
- } else {
- for (e = s; *e; ++e) {
- if (*e == ' ')
- break;
- }
-
- for (; s < e; ++s) {
- putc (*s);
- }
- }
-
- putc ('\n');
-
- return (0);
-}
-
-
-long int initdram (int board_type)
-{
- char *s = getenv ("dramsize");
-
- if (s != NULL) {
- if ((s[0] == '0') && ((s[1] == 'x') || (s[1] == 'X'))) {
- s += 2;
- }
- return (long int)simple_strtoul (s, NULL, 16);
- } else {
- /* give all 64 MB */
- return 64 * 1024 * 1024;
- }
-}
-
-unsigned int get_platform (void)
-{
- unsigned int *revision_reg_ptr = (unsigned int *) AP1xx_FPGA_REV_ADDR;
-
- return (*revision_reg_ptr & AP1xx_PLATFORM_MASK);
-}
-
-unsigned int get_device (void)
-{
- unsigned int *revision_reg_ptr = (unsigned int *) AP1xx_FPGA_REV_ADDR;
-
- return (*revision_reg_ptr & AP1xx_TARGET_MASK);
-}
-
-#if 0 /* loadace is not working; it appears to be a hardware issue with the system ace. */
-/*
- This function loads FPGA configurations from the SystemACE CompactFlash
-*/
-int do_loadace (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- unsigned char *p = (unsigned char *) AP1000_SYSACE_REGBASE;
- int cfg;
-
- if ((p[SYSACE_STATREG0] & 0x10) == 0) {
- p[SYSACE_CTRLREG0] = 0x80;
- printf ("\nNo CompactFlash Detected\n\n");
- p[SYSACE_CTRLREG0] = 0x00;
- return 1;
- }
-
- /* reset configuration controller: | 0x80 */
- /* select cpflash & ~0x40 */
- /* cfg start | 0x20 */
- /* wait for cfgstart & ~0x10 */
- /* force cfgmode: | 0x08 */
- /* do no force cfgaddr: & ~0x04 */
- /* clear mpulock: & ~0x02 */
- /* do not force lock request & ~0x01 */
-
- p[SYSACE_CTRLREG0] = 0x80 | 0x20 | 0x08;
- p[SYSACE_CTRLREG1] = 0x00;
-
- /* force config address if arg2 exists */
- if (argc == 2) {
- cfg = simple_strtoul (argv[1], NULL, 10);
-
- if (cfg > 7) {
- printf ("\nInvalid Configuration\n\n");
- p[SYSACE_CTRLREG0] = 0x00;
- return 1;
- }
- /* Set config address */
- p[SYSACE_CTRLREG1] = (cfg << 5);
- /* force cfgaddr */
- p[SYSACE_CTRLREG0] |= 0x04;
-
- } else {
- cfg = (p[SYSACE_STATREG1] & 0xE0) >> 5;
- }
-
- /* release configuration controller */
- printf ("\nLoading V2PRO with config %d...\n", cfg);
- p[SYSACE_CTRLREG0] &= ~0x80;
-
-
- while ((p[SYSACE_STATREG1] & 0x01) == 0) {
-
- if (p[SYSACE_ERRREG0] & 0x80) {
- /* attempting to load an invalid configuration makes the cpflash */
- /* appear to be removed. Reset here to avoid that problem */
- p[SYSACE_CTRLREG0] = 0x80;
- printf ("\nConfiguration %d Read Error\n\n", cfg);
- p[SYSACE_CTRLREG0] = 0x00;
- return 1;
- }
- }
-
- p[SYSACE_CTRLREG0] |= 0x20;
-
- return 0;
-}
-#endif
-
-/** Console command to display and set the software reconfigure byte
- * <pre>
- * swconfig - display the current value of the software reconfigure byte
- * swconfig [#] - change the software reconfigure byte to #
- * </pre>
- * @param *cmdtp [IN] as passed by run_command (ignored)
- * @param flag [IN] as passed by run_command (ignored)
- * @param argc [IN] as passed by run_command if 1, display, if 2 change
- * @param *argv[] [IN] contains the parameters to use
- * @return
- * <pre>
- * 0 if passed
- * -1 if failed
- * </pre>
- */
-int do_swconfigbyte (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- unsigned char *sector_buffer = NULL;
- unsigned char input_char;
- int write_result;
- unsigned int input_uint;
-
- /* display value if no argument */
- if (argc < 2) {
- printf ("Software configuration byte is currently: 0x%02x\n",
- *((unsigned char *) (SW_BYTE_SECTOR_ADDR +
- SW_BYTE_SECTOR_OFFSET)));
- return 0;
- } else if (argc > 3) {
- printf ("Too many arguments\n");
- return -1;
- }
-
- /* if 3 arguments, 3rd argument is the address to use */
- if (argc == 3) {
- input_uint = simple_strtoul (argv[1], NULL, 16);
- sector_buffer = (unsigned char *) input_uint;
- } else {
- sector_buffer = (unsigned char *) DEFAULT_TEMP_ADDR;
- }
-
- input_char = simple_strtoul (argv[1], NULL, 0);
- if ((input_char & ~SW_BYTE_MASK) != 0) {
- printf ("Input of 0x%02x will be masked to 0x%02x\n",
- input_char, (input_char & SW_BYTE_MASK));
- input_char = input_char & SW_BYTE_MASK;
- }
-
- memcpy (sector_buffer, (void *) SW_BYTE_SECTOR_ADDR,
- SW_BYTE_SECTOR_SIZE);
- sector_buffer[SW_BYTE_SECTOR_OFFSET] = input_char;
-
-
- printf ("Erasing Flash...");
- if (flash_sect_erase
- (SW_BYTE_SECTOR_ADDR,
- (SW_BYTE_SECTOR_ADDR + SW_BYTE_SECTOR_OFFSET))) {
- return -1;
- }
-
- printf ("Writing to Flash... ");
- write_result =
- flash_write ((char *)sector_buffer, SW_BYTE_SECTOR_ADDR,
- SW_BYTE_SECTOR_SIZE);
- if (write_result != 0) {
- flash_perror (write_result);
- return -1;
- } else {
- printf ("done\n");
- printf ("Software configuration byte is now: 0x%02x\n",
- *((unsigned char *) (SW_BYTE_SECTOR_ADDR +
- SW_BYTE_SECTOR_OFFSET)));
- }
-
- return 0;
-}
-
-#define ONE_SECOND 1000000
-
-int do_pause (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- int pause_time;
- unsigned int delay_time;
- int break_loop = 0;
-
- /* display value if no argument */
- if (argc < 2) {
- pause_time = 1;
- }
-
- else if (argc > 2) {
- printf ("Too many arguments\n");
- return -1;
- } else {
- pause_time = simple_strtoul (argv[1], NULL, 0);
- }
-
- printf ("Pausing with a poll time of %d, press any key to reactivate\n", pause_time);
- delay_time = pause_time * ONE_SECOND;
- while (break_loop == 0) {
- udelay (delay_time);
- if (serial_tstc () != 0) {
- break_loop = 1;
- /* eat user key presses */
- while (serial_tstc () != 0) {
- serial_getc ();
- }
- }
- }
-
- return 0;
-}
-
-int do_swreconfig (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- printf ("Triggering software reconfigure (software config byte is 0x%02x)...\n",
- *((unsigned char *) (SW_BYTE_SECTOR_ADDR + SW_BYTE_SECTOR_OFFSET)));
- udelay (1000);
- *((unsigned char *) AP1000_CPLD_BASE) = 1;
-
- return 0;
-}
-
-#define GET_DECIMAL(low_byte) ((low_byte >> 5) * 125)
-#define TEMP_BUSY_BIT 0x80
-#define TEMP_LHIGH_BIT 0x40
-#define TEMP_LLOW_BIT 0x20
-#define TEMP_EHIGH_BIT 0x10
-#define TEMP_ELOW_BIT 0x08
-#define TEMP_OPEN_BIT 0x04
-#define TEMP_ETHERM_BIT 0x02
-#define TEMP_LTHERM_BIT 0x01
-
-int do_temp_sensor (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- char cmd;
- int ret_val = 0;
- unsigned char temp_byte;
- int temp;
- int temp_low;
- int low;
- int low_low;
- int high;
- int high_low;
- int therm;
- unsigned char user_data[4] = { 0 };
- int user_data_count = 0;
- int ii;
-
- if (argc > 1) {
- cmd = argv[1][0];
- } else {
- cmd = 's'; /* default to status */
- }
-
- user_data_count = argc - 2;
- for (ii = 0; ii < user_data_count; ii++) {
- user_data[ii] = simple_strtoul (argv[2 + ii], NULL, 0);
- }
- switch (cmd) {
- case 's':
- if (I2CAccess
- (0x2, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- printf ("Status : 0x%02x ", temp_byte);
- if (temp_byte & TEMP_BUSY_BIT)
- printf ("BUSY ");
-
- if (temp_byte & TEMP_LHIGH_BIT)
- printf ("LHIGH ");
-
- if (temp_byte & TEMP_LLOW_BIT)
- printf ("LLOW ");
-
- if (temp_byte & TEMP_EHIGH_BIT)
- printf ("EHIGH ");
-
- if (temp_byte & TEMP_ELOW_BIT)
- printf ("ELOW ");
-
- if (temp_byte & TEMP_OPEN_BIT)
- printf ("OPEN ");
-
- if (temp_byte & TEMP_ETHERM_BIT)
- printf ("ETHERM ");
-
- if (temp_byte & TEMP_LTHERM_BIT)
- printf ("LTHERM");
-
- printf ("\n");
-
- if (I2CAccess
- (0x3, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- printf ("Config : 0x%02x ", temp_byte);
-
- if (I2CAccess
- (0x4, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- printf ("\n");
- goto fail;
- }
- printf ("Conversion: 0x%02x\n", temp_byte);
- if (I2CAccess
- (0x22, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- printf ("Cons Alert: 0x%02x ", temp_byte);
-
- if (I2CAccess
- (0x21, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- printf ("\n");
- goto fail;
- }
- printf ("Therm Hyst: %d\n", temp_byte);
-
- if (I2CAccess
- (0x0, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- temp = temp_byte;
- if (I2CAccess
- (0x6, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- low = temp_byte;
- if (I2CAccess
- (0x5, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- high = temp_byte;
- if (I2CAccess
- (0x20, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- therm = temp_byte;
- printf ("Local Temp: %2d Low: %2d High: %2d THERM: %2d\n", temp, low, high, therm);
-
- if (I2CAccess
- (0x1, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- temp = temp_byte;
- if (I2CAccess
- (0x10, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- temp_low = temp_byte;
- if (I2CAccess
- (0x8, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- low = temp_byte;
- if (I2CAccess
- (0x14, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- low_low = temp_byte;
- if (I2CAccess
- (0x7, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- high = temp_byte;
- if (I2CAccess
- (0x13, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- high_low = temp_byte;
- if (I2CAccess
- (0x19, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- therm = temp_byte;
- if (I2CAccess
- (0x11, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &temp_byte, I2C_READ) != 0) {
- goto fail;
- }
- printf ("Ext Temp : %2d.%03d Low: %2d.%03d High: %2d.%03d THERM: %2d Offset: %2d\n", temp, GET_DECIMAL (temp_low), low, GET_DECIMAL (low_low), high, GET_DECIMAL (high_low), therm, temp_byte);
- break;
- case 'l': /* alter local limits : low, high, therm */
- if (argc < 3) {
- goto usage;
- }
-
- /* low */
- if (I2CAccess
- (0xC, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &user_data[0], I2C_WRITE) != 0) {
- goto fail;
- }
-
- if (user_data_count > 1) {
- /* high */
- if (I2CAccess
- (0xB, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &user_data[1], I2C_WRITE) != 0) {
- goto fail;
- }
- }
-
- if (user_data_count > 2) {
- /* therm */
- if (I2CAccess
- (0x20, I2C_SENSOR_DEV,
- I2C_SENSOR_CHIP_SEL, &user_data[2],
- I2C_WRITE) != 0) {
- goto fail;
- }
- }
- break;
- case 'e': /* alter external limits: low, high, therm, offset */
- if (argc < 3) {
- goto usage;
- }
-
- /* low */
- if (I2CAccess
- (0xE, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &user_data[0], I2C_WRITE) != 0) {
- goto fail;
- }
-
- if (user_data_count > 1) {
- /* high */
- if (I2CAccess
- (0xD, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &user_data[1], I2C_WRITE) != 0) {
- goto fail;
- }
- }
-
- if (user_data_count > 2) {
- /* therm */
- if (I2CAccess
- (0x19, I2C_SENSOR_DEV,
- I2C_SENSOR_CHIP_SEL, &user_data[2],
- I2C_WRITE) != 0) {
- goto fail;
- }
- }
-
- if (user_data_count > 3) {
- /* offset */
- if (I2CAccess
- (0x11, I2C_SENSOR_DEV,
- I2C_SENSOR_CHIP_SEL, &user_data[3],
- I2C_WRITE) != 0) {
- goto fail;
- }
- }
- break;
- case 'c': /* alter config settings: config, conv, cons alert, therm hyst */
- if (argc < 3) {
- goto usage;
- }
-
- /* config */
- if (I2CAccess
- (0x9, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &user_data[0], I2C_WRITE) != 0) {
- goto fail;
- }
-
- if (user_data_count > 1) {
- /* conversion */
- if (I2CAccess
- (0xA, I2C_SENSOR_DEV, I2C_SENSOR_CHIP_SEL,
- &user_data[1], I2C_WRITE) != 0) {
- goto fail;
- }
- }
-
- if (user_data_count > 2) {
- /* cons alert */
- if (I2CAccess
- (0x22, I2C_SENSOR_DEV,
- I2C_SENSOR_CHIP_SEL, &user_data[2],
- I2C_WRITE) != 0) {
- goto fail;
- }
- }
-
- if (user_data_count > 3) {
- /* therm hyst */
- if (I2CAccess
- (0x21, I2C_SENSOR_DEV,
- I2C_SENSOR_CHIP_SEL, &user_data[3],
- I2C_WRITE) != 0) {
- goto fail;
- }
- }
- break;
- default:
- goto usage;
- }
-
- goto done;
-fail:
- printf ("Access to sensor failed\n");
- ret_val = -1;
- goto done;
-usage:
- printf ("Usage:\n%s\n", cmdtp->help);
-
-done:
- return ret_val;
-}
-
-U_BOOT_CMD (temp, 6, 0, do_temp_sensor,
- "temp - interact with the temperature sensor\n",
- "temp [s]\n"
- " - Show status.\n"
- "temp l LOW [HIGH] [THERM]\n"
- " - Set local limits.\n"
- "temp e LOW [HIGH] [THERM] [OFFSET]\n"
- " - Set external limits.\n"
- "temp c CONFIG [CONVERSION] [CONS. ALERT] [THERM HYST]\n"
- " - Set config options.\n"
- "\n"
- "All values can be decimal or hex (hex preceded with 0x).\n"
- "Only whole numbers are supported for external limits.\n");
-
-#if 0
-U_BOOT_CMD (loadace, 2, 0, do_loadace,
- "loadace - load fpga configuration from System ACE compact flash\n",
- "N\n"
- " - Load configuration N (0-7) from System ACE compact flash\n"
- "loadace\n" " - loads default configuration\n");
-#endif
-
-U_BOOT_CMD (swconfig, 2, 0, do_swconfigbyte,
- "swconfig- display or modify the software configuration byte\n",
- "N [ADDRESS]\n"
- " - set software configuration byte to N, optionally use ADDRESS as\n"
- " location of buffer for flash copy\n"
- "swconfig\n" " - display software configuration byte\n");
-
-U_BOOT_CMD (pause, 2, 0, do_pause,
- "pause - sleep processor until any key is pressed with poll time of N seconds\n",
- "N\n"
- " - sleep processor until any key is pressed with poll time of N seconds\n"
- "pause\n"
- " - sleep processor until any key is pressed with poll time of 1 second\n");
-
-U_BOOT_CMD (swrecon, 1, 0, do_swreconfig,
- "swrecon - trigger a board reconfigure to the software selected configuration\n",
- "\n"
- " - trigger a board reconfigure to the software selected configuration\n");
diff --git a/board/amirix/ap1000/ap1000.h b/board/amirix/ap1000/ap1000.h
deleted file mode 100644
index 118c4d1b9a..0000000000
--- a/board/amirix/ap1000/ap1000.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * ap1000.h: AP1000 (e.g. AP1070, AP1100) board specific definitions and functions that are needed globally
- *
- * Author : James MacAulay
- *
- * This software may be used and distributed according to the terms of
- * the GNU General Public License (GPL) version 2, incorporated herein by
- * reference. Drivers based on or derived from this code fall under the GPL
- * and must retain the authorship, copyright and this license notice. This
- * file is not a complete program and may only be used when the entire
- * program is licensed under the GPL.
- *
- */
-
-#ifndef __AP1000_H
-#define __AP1000_H
-
-/*
- * Revision Register stuff
- */
-#define AP1xx_FPGA_REV_ADDR 0x29000000
-
-#define AP1xx_PLATFORM_MASK 0xFF000000
-#define AP100_BASELINE_PLATFORM 0x01000000
-#define AP1xx_QUADGE_PLATFORM 0x02000000
-#define AP1xx_MGT_REF_PLATFORM 0x03000000
-#define AP1xx_STANDARD_PLATFORM 0x04000000
-#define AP1xx_DUAL_PLATFORM 0x05000000
-#define AP1xx_BASE_SRAM_PLATFORM 0x06000000
-
-#define AP1000_BASELINE_PLATFORM 0x21000000
-
-#define AP1xx_TESTPLATFORM_MASK 0xC0000000
-#define AP1xx_PCI_PCB_TESTPLATFORM 0xC0000000
-#define AP1xx_DUAL_GE_MEZZ_TESTPLATFORM 0xC1000000
-#define AP1xx_SFP_MEZZ_TESTPLATFORM 0xC2000000
-
-#define AP1000_PCI_PCB_TESTPLATFORM 0xC3000000
-
-#define AP1xx_TARGET_MASK 0x00FF0000
-#define AP1xx_AP107_TARGET 0x00010000
-#define AP1xx_AP120_TARGET 0x00020000
-#define AP1xx_AP130_TARGET 0x00030000
-#define AP1xx_AP1070_TARGET 0x00040000
-#define AP1xx_AP1100_TARGET 0x00050000
-
-#define AP1xx_UNKNOWN_STR "Unknown"
-
-#define AP1xx_PLATFORM_STR " Platform"
-#define AP1xx_BASELINE_PLATFORM_STR "Baseline"
-#define AP1xx_QUADGE_PLATFORM_STR "Quad GE"
-#define AP1xx_MGT_REF_PLATFORM_STR "MGT Reference"
-#define AP1xx_STANDARD_PLATFORM_STR "Standard"
-#define AP1xx_DUAL_PLATFORM_STR "Dual"
-#define AP1xx_BASE_SRAM_PLATFORM_STR "Baseline with SRAM"
-
-#define AP1xx_TESTPLATFORM_STR " Test Platform"
-#define AP1xx_PCI_PCB_TESTPLATFORM_STR "Base"
-#define AP1xx_DUAL_GE_MEZZ_TESTPLATFORM_STR "Dual GE Mezzanine"
-#define AP1xx_SFP_MEZZ_TESTPLATFORM_STR "SFP Mezzanine"
-
-#define AP1xx_TARGET_STR " Board"
-#define AP1xx_AP107_TARGET_STR "AP107"
-#define AP1xx_AP120_TARGET_STR "AP120"
-#define AP1xx_AP130_TARGET_STR "AP130"
-
-#define AP1xx_AP1070_TARGET_STR "AP1070"
-#define AP1xx_AP1100_TARGET_STR "AP1100"
-
-/*
- * Flash Stuff
- */
-#define AP1xx_PROGRAM_FLASH_INDEX 0
-#define AP1xx_CONFIG_FLASH_INDEX 1
-
-/*
- * System Ace Stuff
- */
-#define AP1000_SYSACE_REGBASE 0x28000000
-
-#define SYSACE_STATREG0 0x04 /* 7:0 */
-#define SYSACE_STATREG1 0x05 /* 15:8 */
-#define SYSACE_STATREG2 0x06 /* 23:16 */
-#define SYSACE_STATREG3 0x07 /* 31:24 */
-
-#define SYSACE_ERRREG0 0x08 /* 7:0 */
-#define SYSACE_ERRREG1 0x09 /* 15:8 */
-#define SYSACE_ERRREG2 0x0a /* 23:16 */
-#define SYSACE_ERRREG3 0x0b /* 31:24 */
-
-#define SYSACE_CTRLREG0 0x18 /* 7:0 */
-#define SYSACE_CTRLREG1 0x19 /* 15:8 */
-#define SYSACE_CTRLREG2 0x1A /* 23:16 */
-#define SYSACE_CTRLREG3 0x1B /* 31:24 */
-
-/*
- * Software reconfig thing
- */
-#define SW_BYTE_SECTOR_ADDR 0x24FE0000
-#define SW_BYTE_SECTOR_OFFSET 0x0001FFFF
-#define SW_BYTE_SECTOR_SIZE 0x00020000
-#define SW_BYTE_MASK 0x00000003
-
-#define DEFAULT_TEMP_ADDR 0x00100000
-
-#define AP1000_CPLD_BASE 0x26000000
-
-/* PowerSpan II Stuff */
-#define PSII_SYNC() asm("eieio")
-#define PSPAN_BASEADDR 0x30000000
-#define EEPROM_DEFAULT { 0x01, /* Byte 0 - Long Load = 0x02, short = 01, use 0xff for try no load */ \
- 0x0,0x0,0x0, /* Bytes 1 - 3 Power span reserved */ \
- 0x0, /* Byte 4 - Powerspan reserved - start of short load */ \
- 0x0F, /* Byte 5 - Enable PCI 1 & 2 as Bus masters and Memory targets. */ \
- 0x0E, /* Byte 6 - PCI 1 Target image prefetch - on for image 0,1,2, off for i20 & 3. */ \
- 0x00, 0x00, /* Byte 7,8 - PCI-1 Subsystem ID - */ \
- 0x00, 0x00, /* Byte 9,10 - PCI-1 Subsystem Vendor Id - */ \
- 0x00, /* Byte 11 - No PCI interrupt generation on PCI-1 PCI-2 int A */ \
- 0x1F, /* Byte 12 - PCI-1 enable bridge registers, all target images */ \
- 0xBA, /* Byte 13 - Target 0 image 128 Meg(Ram), Target 1 image 64 Meg. (config Flash/CPLD )*/ \
- 0xA0, /* Byte 14 - Target 2 image 64 Meg(program Flash), target 3 64k. */ \
- 0x00, /* Byte 15 - Vital Product Data Disabled. */ \
- 0x88, /* Byte 16 - PCI arbiter config complete, all requests routed through PCI-1, Unlock PCI-1 */ \
- 0x40, /* Byte 17 - Interrupt direction control - PCI-1 Int A out, everything else in. */ \
- 0x00, /* Byte 18 - I2O disabled */ \
- 0x00, /* Byte 19 - PCI-2 Target image prefetch - off for all images. */ \
- 0x00,0x00, /* Bytes 20,21 - PCI 2 Subsystem Id */ \
- 0x00,0x00, /* Bytes 22,23 - PCI 2 Subsystem Vendor id */ \
- 0x0C, /* Byte 24 - PCI-2 BAR enables, target image 0, & 1 */ \
- 0xBB, /* Byte 25 - PCI-2 target 0 - 128 Meg(Ram), target 1 - 128 Meg (program/config flash) */ \
- 0x00, /* Byte 26 - PCI-2 target 2 & 3 unused. */ \
- 0x00,0x00,0x00,0x00,0x00, /* Bytes 27,28,29,30, 31 - Reserved */ \
- /* Long Load Information */ \
- 0x82,0x60, /* Bytes 32,33 - PCI-1 Device ID - Powerspan II */ \
- 0x10,0xE3, /* Bytes 24,35 - PCI-1 Vendor ID - Tundra */ \
- 0x06, /* Byte 36 - PCI-1 Class Base - Bridge device. */ \
- 0x80, /* Byte 37 - PCI-1 Class sub class - Other bridge. */ \
- 0x00, /* Byte 38 - PCI-1 Class programing interface - Other bridge */ \
- 0x01, /* Byte 39 - Power span revision 1. */ \
- 0x6E, /* Byte 40 - PB SI0 enabled, translation enabled, decode enabled, 64 Meg */ \
- 0x40, /* Byte 41 - PB SI0 memory command mode, PCI-1 dest */ \
- 0x22, /* Byte 42 - Prefetch discard after read, PCI-little endian conversion, 32 byte prefetch */ \
- 0x00,0x00, /* Bytes 43, 44 - Translation address for SI0, set to zero for now. */ \
- 0x0E, /* Byte 45 - Translation address (0) and PB bus master enables - all. */ \
- 0x2c,00,00, /* Bytes 46,47,48 - PB SI0 processor base address - 0x2C000000 */ \
- 0x30,00,00, /* Bytes 49,50,51 - PB Address for Powerspan registers - 0x30000000, big Endian */ \
- 0x82,0x60, /* Bytes 52, 53 - PCI-2 Device ID - Powerspan II */ \
- 0x10,0xE3, /* Bytes 54,55 - PCI 2 Vendor Id - Tundra */ \
- 0x06, /* Byte 56 - PCI-2 Class Base - Bridge device */ \
- 0x80, /* Byte 57 - PCI-2 Class sub class - Other Bridge. */ \
- 0x00, /* Byte 58 - PCI-2 class programming interface - Other bridge */ \
- 0x01, /* Byte 59 - PCI-2 class revision 1 */ \
- 0x00,0x00,0x00,0x00 }; /* Bytes 60,61, 62, 63 - Powerspan reserved */
-
-
-#define EEPROM_LENGTH 64 /* Long Load */
-
-#define I2C_SENSOR_DEV 0x9
-#define I2C_SENSOR_CHIP_SEL 0x4
-
-/*
- * Board Functions
- */
-void set_eat_machine_checks(int a_flag);
-int get_eat_machine_checks(void);
-unsigned int get_platform(void);
-unsigned int get_device(void);
-void* memcpyb(void * dest,const void *src,size_t count);
-int process_bootflag(ulong bootflag);
-void user_led_on(void);
-void user_led_off(void);
-
-#endif /* __COMMON_H_ */
diff --git a/board/amirix/ap1000/config.mk b/board/amirix/ap1000/config.mk
deleted file mode 100644
index c09783a6ae..0000000000
--- a/board/amirix/ap1000/config.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# (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
-#
-
-# Start at bottom of RAM, but at an aliased address so that it looks
-# like it's not in RAM. This is a bit of voodoo to allow it to be
-# run from RAM instead of Flash.
-TEXT_BASE = 0x08000000
diff --git a/board/amirix/ap1000/flash.c b/board/amirix/ap1000/flash.c
deleted file mode 100644
index 1a3b25218c..0000000000
--- a/board/amirix/ap1000/flash.c
+++ /dev/null
@@ -1,903 +0,0 @@
-/**
- * @file flash.c
- */
-
-/*
- * (C) Copyright 2003
- * AMIRIX Systems Inc.
- *
- * Originated from ppcboot-2.0.0/board/esd/cpci440/strataflash.c
- *
- * (C) Copyright 2002
- * Brad Kemp, Seranoa Networks, Brad.Kemp@seranoa.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-#undef DEBUG_FLASH
-/*
- * This file implements a Common Flash Interface (CFI) driver for ppcboot.
- * The width of the port and the width of the chips are determined at initialization.
- * These widths are used to calculate the address for access CFI data structures.
- * It has been tested on an Intel Strataflash implementation.
- *
- * References
- * JEDEC Standard JESD68 - Common Flash Interface (CFI)
- * JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
- * Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
- * Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
- *
- * TODO
- * Use Primary Extended Query table (PRI) and Alternate Algorithm Query Table (ALT) to determine if protection is available
- * Add support for other command sets Use the PRI and ALT to determine command set
- * Verify erase and program timeouts.
- */
-
-#define FLASH_CMD_CFI 0x98
-#define FLASH_CMD_READ_ID 0x90
-#define FLASH_CMD_RESET 0xff
-#define FLASH_CMD_BLOCK_ERASE 0x20
-#define FLASH_CMD_ERASE_CONFIRM 0xD0
-#define FLASH_CMD_WRITE 0x40
-#define FLASH_CMD_PROTECT 0x60
-#define FLASH_CMD_PROTECT_SET 0x01
-#define FLASH_CMD_PROTECT_CLEAR 0xD0
-#define FLASH_CMD_CLEAR_STATUS 0x50
-#define FLASH_CMD_WRITE_TO_BUFFER 0xE8
-#define FLASH_CMD_WRITE_BUFFER_CONFIRM 0xD0
-
-#define FLASH_STATUS_DONE 0x80
-#define FLASH_STATUS_ESS 0x40
-#define FLASH_STATUS_ECLBS 0x20
-#define FLASH_STATUS_PSLBS 0x10
-#define FLASH_STATUS_VPENS 0x08
-#define FLASH_STATUS_PSS 0x04
-#define FLASH_STATUS_DPS 0x02
-#define FLASH_STATUS_R 0x01
-#define FLASH_STATUS_PROTECT 0x01
-
-#define FLASH_OFFSET_CFI 0x55
-#define FLASH_OFFSET_CFI_RESP 0x10
-#define FLASH_OFFSET_WTOUT 0x1F
-#define FLASH_OFFSET_WBTOUT 0x20
-#define FLASH_OFFSET_ETOUT 0x21
-#define FLASH_OFFSET_CETOUT 0x22
-#define FLASH_OFFSET_WMAX_TOUT 0x23
-#define FLASH_OFFSET_WBMAX_TOUT 0x24
-#define FLASH_OFFSET_EMAX_TOUT 0x25
-#define FLASH_OFFSET_CEMAX_TOUT 0x26
-#define FLASH_OFFSET_SIZE 0x27
-#define FLASH_OFFSET_INTERFACE 0x28
-#define FLASH_OFFSET_BUFFER_SIZE 0x2A
-#define FLASH_OFFSET_NUM_ERASE_REGIONS 0x2C
-#define FLASH_OFFSET_ERASE_REGIONS 0x2D
-#define FLASH_OFFSET_PROTECT 0x02
-#define FLASH_OFFSET_USER_PROTECTION 0x85
-#define FLASH_OFFSET_INTEL_PROTECTION 0x81
-
-#define FLASH_MAN_CFI 0x01000000
-
-typedef union {
- unsigned char c;
- unsigned short w;
- unsigned long l;
-} cfiword_t;
-
-typedef union {
- unsigned char *cp;
- unsigned short *wp;
- unsigned long *lp;
-} cfiptr_t;
-
-#define NUM_ERASE_REGIONS 4
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-static void flash_add_byte (flash_info_t * info, cfiword_t * cword, uchar c);
-static void flash_make_cmd (flash_info_t * info, uchar cmd, void *cmdbuf);
-static void flash_write_cmd (flash_info_t * info, int sect, uchar offset,
- uchar cmd);
-static int flash_isequal (flash_info_t * info, int sect, uchar offset,
- uchar cmd);
-static int flash_isset (flash_info_t * info, int sect, uchar offset,
- uchar cmd);
-static int flash_detect_cfi (flash_info_t * info);
-static ulong flash_get_size (ulong base, int banknum);
-static int flash_write_cfiword (flash_info_t * info, ulong dest,
- cfiword_t cword);
-static int flash_full_status_check (flash_info_t * info, ulong sector,
- ulong tout, char *prompt);
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-static int flash_write_cfibuffer (flash_info_t * info, ulong dest, uchar * cp,
- int len);
-#endif
-/*-----------------------------------------------------------------------
- * create an address based on the offset and the port width
- */
-uchar *flash_make_addr (flash_info_t * info, int sect, int offset)
-{
- return ((uchar *) (info->start[sect] + (offset * info->chipwidth)));
-}
-
-/*-----------------------------------------------------------------------
- * read a character at a port width address
- */
-uchar flash_read_uchar (flash_info_t * info, uchar offset)
-{
- if (info->portwidth == FLASH_CFI_8BIT) {
- volatile uchar *cp;
- uchar c;
-
- cp = flash_make_addr (info, 0, offset);
- c = *cp;
-#ifdef DEBUG_FLASH
- printf ("flash_read_uchar offset=%04x ptr=%08x c=%02x\n",
- offset, (unsigned int) cp, c);
-#endif
- return (c);
-
- } else if (info->portwidth == FLASH_CFI_16BIT) {
- volatile ushort *sp;
- ushort s;
- uchar c;
-
- sp = (ushort *) flash_make_addr (info, 0, offset);
- s = *sp;
- c = (uchar) s;
-#ifdef DEBUG_FLASH
- printf ("flash_read_uchar offset=%04x ptr=%08x s=%04x c=%02x\n", offset, (unsigned int) sp, s, c);
-#endif
- return (c);
-
- }
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * read a short word by swapping for ppc format.
- */
-ushort flash_read_ushort (flash_info_t * info, int sect, uchar offset)
-{
- if (info->portwidth == FLASH_CFI_8BIT) {
- volatile uchar *cp;
- uchar c0, c1;
- ushort s;
-
- cp = flash_make_addr (info, 0, offset);
- c1 = cp[2];
- c0 = cp[0];
- s = c1 << 8 | c0;
-#ifdef DEBUG_FLASH
- printf ("flash_read_ushort offset=%04x ptr=%08x c1=%02x c0=%02x s=%04x\n", offset, (unsigned int) cp, c1, c0, s);
-#endif
- return (s);
-
- } else if (info->portwidth == FLASH_CFI_16BIT) {
- volatile ushort *sp;
- ushort s;
- uchar c0, c1;
-
- sp = (ushort *) flash_make_addr (info, 0, offset);
- s = *sp;
- c1 = (uchar) sp[1];
- c0 = (uchar) sp[0];
- s = c1 << 8 | c0;
-#ifdef DEBUG_FLASH
- printf ("flash_read_ushort offset=%04x ptr=%08x c1=%02x c0=%02x s=%04x\n", offset, (unsigned int) sp, c1, c0, s);
-#endif
- return (s);
-
- }
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * read a long word by picking the least significant byte of each maiximum
- * port size word. Swap for ppc format.
- */
-ulong flash_read_long (flash_info_t * info, int sect, uchar offset)
-{
- if (info->portwidth == FLASH_CFI_8BIT) {
- volatile uchar *cp;
- uchar c0, c1, c2, c3;
- ulong l;
-
- cp = flash_make_addr (info, 0, offset);
- c3 = cp[6];
- c2 = cp[4];
- c1 = cp[2];
- c0 = cp[0];
- l = c3 << 24 | c2 << 16 | c1 << 8 | c0;
-#ifdef DEBUG_FLASH
- printf ("flash_read_long offset=%04x ptr=%08x c3=%02x c2=%02x c1=%02x c0=%02x l=%08x\n", offset, (unsigned int) cp, c3, c2, c1, c0, l);
-#endif
- return (l);
-
- } else if (info->portwidth == FLASH_CFI_16BIT) {
- volatile ushort *sp;
- uchar c0, c1, c2, c3;
- ulong l;
-
- sp = (ushort *) flash_make_addr (info, 0, offset);
- c3 = (uchar) sp[3];
- c2 = (uchar) sp[2];
- c1 = (uchar) sp[1];
- c0 = (uchar) sp[0];
- l = c3 << 24 | c2 << 16 | c1 << 8 | c0;
-#ifdef DEBUG_FLASH
- printf ("flash_read_long offset=%04x ptr=%08x c3=%02x c2=%02x c1=%02x c0=%02x l=%08x\n", offset, (unsigned int) sp, c3, c2, c1, c0, l);
-#endif
- return (l);
-
- }
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size;
-
- size = 0;
-
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[0].portwidth = FLASH_CFI_16BIT;
- flash_info[0].chipwidth = FLASH_CFI_16BIT;
- size += flash_info[0].size = flash_get_size (CFG_PROGFLASH_BASE, 0);
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n", 1, flash_info[0].size, flash_info[0].size << 20);
- };
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].portwidth = FLASH_CFI_8BIT;
- flash_info[1].chipwidth = FLASH_CFI_16BIT;
- size += flash_info[1].size = flash_get_size (CFG_CONFFLASH_BASE, 1);
- if (flash_info[1].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n", 2, flash_info[1].size, flash_info[1].size << 20);
- };
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int rcode = 0;
- int prot;
- int sect;
-
- if (info->flash_id != FLASH_MAN_CFI) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
- if ((s_first < 0) || (s_first > s_last)) {
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- flash_write_cmd (info, sect, 0,
- FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd (info, sect, 0,
- FLASH_CMD_BLOCK_ERASE);
- flash_write_cmd (info, sect, 0,
- FLASH_CMD_ERASE_CONFIRM);
-
- if (flash_full_status_check
- (info, sect, info->erase_blk_tout, "erase")) {
- rcode = 1;
- } else
- printf (".");
- }
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id != FLASH_MAN_CFI) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- printf ("CFI conformant FLASH (x%d device in x%d mode)",
- (info->chipwidth << 3), (info->portwidth << 3));
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
- printf (" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n", info->erase_blk_tout, info->write_tout, info->buffer_write_tout, info->buffer_size);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n");
- printf (" %08lX%5s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong wp;
- ulong cp;
- int aln;
- cfiword_t cword;
- int i, rc;
-
- /* get lower aligned address */
- wp = (addr & ~(info->portwidth - 1));
-
- /* handle unaligned start */
- if ((aln = addr - wp) != 0) {
- cword.l = 0;
- cp = wp;
- for (i = 0; i < aln; ++i, ++cp)
- flash_add_byte (info, &cword, (*(uchar *) cp));
-
- for (; (i < info->portwidth) && (cnt > 0); i++) {
- flash_add_byte (info, &cword, *src++);
- cnt--;
- cp++;
- }
- for (; (cnt == 0) && (i < info->portwidth); ++i, ++cp)
- flash_add_byte (info, &cword, (*(uchar *) cp));
- if ((rc = flash_write_cfiword (info, wp, cword)) != 0)
- return rc;
- wp = cp;
- }
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
- while (cnt >= info->portwidth) {
- i = info->buffer_size > cnt ? cnt : info->buffer_size;
- if ((rc = flash_write_cfibuffer (info, wp, src, i)) != ERR_OK)
- return rc;
- wp += i;
- src += i;
- cnt -= i;
- }
-#else
- /* handle the aligned part */
- while (cnt >= info->portwidth) {
- cword.l = 0;
- for (i = 0; i < info->portwidth; i++) {
- flash_add_byte (info, &cword, *src++);
- }
- if ((rc = flash_write_cfiword (info, wp, cword)) != 0)
- return rc;
- wp += info->portwidth;
- cnt -= info->portwidth;
- }
-#endif /* CFG_FLASH_USE_BUFFER_WRITE */
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- cword.l = 0;
- for (i = 0, cp = wp; (i < info->portwidth) && (cnt > 0); ++i, ++cp) {
- flash_add_byte (info, &cword, *src++);
- --cnt;
- }
- for (; i < info->portwidth; ++i, ++cp) {
- flash_add_byte (info, &cword, (*(uchar *) cp));
- }
-
- return flash_write_cfiword (info, wp, cword);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect (flash_info_t * info, long sector, int prot)
-{
- int retcode = 0;
-
- flash_write_cmd (info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd (info, sector, 0, FLASH_CMD_PROTECT);
- if (prot)
- flash_write_cmd (info, sector, 0, FLASH_CMD_PROTECT_SET);
- else
- flash_write_cmd (info, sector, 0, FLASH_CMD_PROTECT_CLEAR);
-
- if ((retcode =
- flash_full_status_check (info, sector, info->erase_blk_tout,
- prot ? "protect" : "unprotect")) == 0) {
-
- info->protect[sector] = prot;
- /* Intel's unprotect unprotects all locking */
- if (prot == 0) {
- int i;
-
- for (i = 0; i < info->sector_count; i++) {
- if (info->protect[i])
- flash_real_protect (info, i, 1);
- }
- }
- }
-
- return retcode;
-}
-
-/*-----------------------------------------------------------------------
- * wait for XSR.7 to be set. Time out with an error if it does not.
- * This routine does not set the flash to read-array mode.
- */
-static int flash_status_check (flash_info_t * info, ulong sector, ulong tout,
- char *prompt)
-{
- ulong start;
-
- /* Wait for command completion */
- start = get_timer (0);
- while (!flash_isset (info, sector, 0, FLASH_STATUS_DONE)) {
- if (get_timer (start) > info->erase_blk_tout) {
- printf ("Flash %s timeout at address %lx\n", prompt,
- info->start[sector]);
- flash_write_cmd (info, sector, 0, FLASH_CMD_RESET);
- return ERR_TIMOUT;
- }
- }
- return ERR_OK;
-}
-
-/*-----------------------------------------------------------------------
- * Wait for XSR.7 to be set, if it times out print an error, otherwise do a full status check.
- * This routine sets the flash to read-array mode.
- */
-static int flash_full_status_check (flash_info_t * info, ulong sector,
- ulong tout, char *prompt)
-{
- int retcode;
-
- retcode = flash_status_check (info, sector, tout, prompt);
- if ((retcode == ERR_OK)
- && !flash_isequal (info, sector, 0, FLASH_STATUS_DONE)) {
- retcode = ERR_INVAL;
- printf ("Flash %s error at address %lx\n", prompt,
- info->start[sector]);
- if (flash_isset
- (info, sector, 0,
- FLASH_STATUS_ECLBS | FLASH_STATUS_PSLBS)) {
- printf ("Command Sequence Error.\n");
- } else if (flash_isset (info, sector, 0, FLASH_STATUS_ECLBS)) {
- printf ("Block Erase Error.\n");
- retcode = ERR_NOT_ERASED;
- } else if (flash_isset (info, sector, 0, FLASH_STATUS_PSLBS)) {
- printf ("Locking Error\n");
- }
- if (flash_isset (info, sector, 0, FLASH_STATUS_DPS)) {
- printf ("Block locked.\n");
- retcode = ERR_PROTECTED;
- }
- if (flash_isset (info, sector, 0, FLASH_STATUS_VPENS))
- printf ("Vpp Low Error.\n");
- }
- flash_write_cmd (info, sector, 0, FLASH_CMD_RESET);
- return retcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_add_byte (flash_info_t * info, cfiword_t * cword, uchar c)
-{
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- cword->c = c;
- break;
- case FLASH_CFI_16BIT:
- cword->w = (cword->w << 8) | c;
- break;
- case FLASH_CFI_32BIT:
- cword->l = (cword->l << 8) | c;
- }
-}
-
-/*-----------------------------------------------------------------------
- * make a proper sized command based on the port and chip widths
- */
-static void flash_make_cmd (flash_info_t * info, uchar cmd, void *cmdbuf)
-{
- /*int i; */
- uchar *cp = (uchar *) cmdbuf;
-
- /* for(i=0; i< info->portwidth; i++) */
- /* *cp++ = ((i+1) % info->chipwidth) ? '\0':cmd; */
- if (info->portwidth == FLASH_CFI_8BIT
- && info->chipwidth == FLASH_CFI_16BIT) {
- cp[0] = cmd;
- } else if (info->portwidth == FLASH_CFI_16BIT
- && info->chipwidth == FLASH_CFI_16BIT) {
- cp[0] = '\0';
- cp[1] = cmd;
- };
-}
-
-/*
- * Write a proper sized command to the correct address
- */
-static void flash_write_cmd (flash_info_t * info, int sect, uchar offset,
- uchar cmd)
-{
-
- volatile cfiptr_t addr;
- cfiword_t cword;
-
- addr.cp = flash_make_addr (info, sect, offset);
- flash_make_cmd (info, cmd, &cword);
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- *addr.cp = cword.c;
- break;
- case FLASH_CFI_16BIT:
- *addr.wp = cword.w;
- break;
- case FLASH_CFI_32BIT:
- *addr.lp = cword.l;
- break;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_isequal (flash_info_t * info, int sect, uchar offset,
- uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
-
- cptr.cp = flash_make_addr (info, sect, offset);
- flash_make_cmd (info, cmd, &cword);
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = (cptr.cp[0] == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = (cptr.wp[0] == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = (cptr.lp[0] == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_isset (flash_info_t * info, int sect, uchar offset,
- uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
-
- cptr.cp = flash_make_addr (info, sect, offset);
- flash_make_cmd (info, cmd, &cword);
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-
-/*-----------------------------------------------------------------------
- * detect if flash is compatible with the Common Flash Interface (CFI)
- * http://www.jedec.org/download/search/jesd68.pdf
- *
-*/
-static int flash_detect_cfi (flash_info_t * info)
-{
-
-#if 0
- for (info->portwidth = FLASH_CFI_8BIT;
- info->portwidth <= FLASH_CFI_32BIT; info->portwidth <<= 1) {
- for (info->chipwidth = FLASH_CFI_BY8;
- info->chipwidth <= info->portwidth;
- info->chipwidth <<= 1) {
- flash_write_cmd (info, 0, 0, FLASH_CMD_RESET);
- flash_write_cmd (info, 0, FLASH_OFFSET_CFI,
- FLASH_CMD_CFI);
- if (flash_isequal
- (info, 0, FLASH_OFFSET_CFI_RESP, 'Q')
- && flash_isequal (info, 0,
- FLASH_OFFSET_CFI_RESP + 1, 'R')
- && flash_isequal (info, 0,
- FLASH_OFFSET_CFI_RESP + 2, 'Y'))
- return 1;
- }
- }
-#endif
- flash_write_cmd (info, 0, 0, FLASH_CMD_RESET);
- flash_write_cmd (info, 0, FLASH_OFFSET_CFI, FLASH_CMD_CFI);
- if (flash_isequal (info, 0, FLASH_OFFSET_CFI_RESP, 'Q') &&
- flash_isequal (info, 0, FLASH_OFFSET_CFI_RESP + 1, 'R') &&
- flash_isequal (info, 0, FLASH_OFFSET_CFI_RESP + 2, 'Y')) {
- return 1;
- } else {
- return 0;
- };
-}
-
-/*
- * The following code cannot be run from FLASH!
- *
- */
-static ulong flash_get_size (ulong base, int banknum)
-{
- flash_info_t *info = &flash_info[banknum];
- int i, j;
- int sect_cnt;
- unsigned long sector;
- unsigned long tmp;
- int size_ratio;
- uchar num_erase_regions;
- int erase_region_size;
- int erase_region_count;
-
- info->start[0] = base;
-
- if (flash_detect_cfi (info)) {
-#ifdef DEBUG_FLASH
- printf ("portwidth=%d chipwidth=%d\n", info->portwidth, info->chipwidth); /* test-only */
-#endif
- size_ratio = 1; /* info->portwidth / info->chipwidth; */
- num_erase_regions =
- flash_read_uchar (info,
- FLASH_OFFSET_NUM_ERASE_REGIONS);
-#ifdef DEBUG_FLASH
- printf ("found %d erase regions\n", num_erase_regions);
-#endif
- sect_cnt = 0;
- sector = base;
- for (i = 0; i < num_erase_regions; i++) {
- if (i > NUM_ERASE_REGIONS) {
- printf ("%d erase regions found, only %d used\n", num_erase_regions, NUM_ERASE_REGIONS);
- break;
- }
- tmp = flash_read_long (info, 0,
- FLASH_OFFSET_ERASE_REGIONS);
- erase_region_count = (tmp & 0xffff) + 1;
- tmp >>= 16;
- erase_region_size =
- (tmp & 0xffff) ? ((tmp & 0xffff) * 256) : 128;
- for (j = 0; j < erase_region_count; j++) {
- info->start[sect_cnt] = sector;
- sector += (erase_region_size * size_ratio);
- info->protect[sect_cnt] =
- flash_isset (info, sect_cnt,
- FLASH_OFFSET_PROTECT,
- FLASH_STATUS_PROTECT);
- sect_cnt++;
- }
- }
-
- info->sector_count = sect_cnt;
- /* multiply the size by the number of chips */
- info->size =
- (1 << flash_read_uchar (info, FLASH_OFFSET_SIZE)) *
- size_ratio;
- info->buffer_size =
- (1 <<
- flash_read_ushort (info, 0,
- FLASH_OFFSET_BUFFER_SIZE));
- tmp = 1 << flash_read_uchar (info, FLASH_OFFSET_ETOUT);
- info->erase_blk_tout =
- (tmp *
- (1 <<
- flash_read_uchar (info, FLASH_OFFSET_EMAX_TOUT)));
- tmp = 1 << flash_read_uchar (info, FLASH_OFFSET_WBTOUT);
- info->buffer_write_tout =
- (tmp *
- (1 <<
- flash_read_uchar (info, FLASH_OFFSET_WBMAX_TOUT)));
- tmp = 1 << flash_read_uchar (info, FLASH_OFFSET_WTOUT);
- info->write_tout =
- (tmp *
- (1 <<
- flash_read_uchar (info,
- FLASH_OFFSET_WMAX_TOUT))) / 1000;
- info->flash_id = FLASH_MAN_CFI;
- }
-
- flash_write_cmd (info, 0, 0, FLASH_CMD_RESET);
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_write_cfiword (flash_info_t * info, ulong dest,
- cfiword_t cword)
-{
-
- cfiptr_t ctladdr;
- cfiptr_t cptr;
- int flag;
-
- ctladdr.cp = flash_make_addr (info, 0, 0);
- cptr.cp = (uchar *) dest;
-
- /* Check if Flash is (sufficiently) erased */
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- flag = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- flag = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- flag = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- return 2;
- }
- if (!flag)
- return 2;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- flash_write_cmd (info, 0, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd (info, 0, 0, FLASH_CMD_WRITE);
-
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- cptr.cp[0] = cword.c;
- break;
- case FLASH_CFI_16BIT:
- cptr.wp[0] = cword.w;
- break;
- case FLASH_CFI_32BIT:
- cptr.lp[0] = cword.l;
- break;
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- return flash_full_status_check (info, 0, info->write_tout, "write");
-}
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-
-/* loop through the sectors from the highest address
- * when the passed address is greater or equal to the sector address
- * we have a match
- */
-static int find_sector (flash_info_t * info, ulong addr)
-{
- int sector;
-
- for (sector = info->sector_count - 1; sector >= 0; sector--) {
- if (addr >= info->start[sector])
- break;
- }
- return sector;
-}
-
-static int flash_write_cfibuffer (flash_info_t * info, ulong dest, uchar * cp,
- int len)
-{
-
- int sector;
- int cnt;
- int retcode;
- volatile cfiptr_t src;
- volatile cfiptr_t dst;
-
- src.cp = cp;
- dst.cp = (uchar *) dest;
- sector = find_sector (info, dest);
- flash_write_cmd (info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd (info, sector, 0, FLASH_CMD_WRITE_TO_BUFFER);
- if ((retcode =
- flash_status_check (info, sector, info->buffer_write_tout,
- "write to buffer")) == ERR_OK) {
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- cnt = len;
- break;
- case FLASH_CFI_16BIT:
- cnt = len >> 1;
- break;
- case FLASH_CFI_32BIT:
- cnt = len >> 2;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- flash_write_cmd (info, sector, 0, (uchar) cnt - 1);
- while (cnt-- > 0) {
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- *dst.cp++ = *src.cp++;
- break;
- case FLASH_CFI_16BIT:
- *dst.wp++ = *src.wp++;
- break;
- case FLASH_CFI_32BIT:
- *dst.lp++ = *src.lp++;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- }
- flash_write_cmd (info, sector, 0,
- FLASH_CMD_WRITE_BUFFER_CONFIRM);
- retcode =
- flash_full_status_check (info, sector,
- info->buffer_write_tout,
- "buffer write");
- }
- flash_write_cmd (info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- return retcode;
-}
-#endif /* CFG_USE_FLASH_BUFFER_WRITE */
diff --git a/board/amirix/ap1000/init.S b/board/amirix/ap1000/init.S
deleted file mode 100644
index 3aaa5c2f1a..0000000000
--- a/board/amirix/ap1000/init.S
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * init.S: Stubs for ppcboot initialization
- *
- * Copyright 2002 Mind NV
- *
- * http://www.mind.be/
- *
- * Author : Peter De Schrijver (p2@mind.be)
- *
- * This software may be used and distributed according to the terms of
- * the GNU General Public License (GPL) version 2, incorporated herein by
- * reference. Drivers based on or derived from this code fall under the GPL
- * and must retain the authorship, copyright and this license notice. This
- * file is not a complete program and may only be used when the entire
- * program is licensed under the GPL.
- *
- */
-
-#include <ppc4xx.h>
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-
- .globl ext_bus_cntlr_init
-ext_bus_cntlr_init:
- blr
-
- .globl sdram_init
-sdram_init:
- blr
diff --git a/board/amirix/ap1000/pci.c b/board/amirix/ap1000/pci.c
deleted file mode 100644
index a6436ac5bb..0000000000
--- a/board/amirix/ap1000/pci.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * (C) Copyright 2003
- * AMIRIX Systems Inc.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-#include <pci.h>
-
-#define PCI_MEM_82559ER_CSR_BASE 0x30200000
-#define PCI_IO_82559ER_CSR_BASE 0x40000200
-
-/** AP1100 specific values */
-#define PSII_BASE 0x30000000 /**< PowerSpan II dual bridge local bus register address */
-#define PSII_CONFIG_ADDR 0x30000290 /**< PowerSpan II Configuration Cycle Address configuration register */
-#define PSII_CONFIG_DATA 0x30000294 /**< PowerSpan II Configuration Cycle Data register. */
-#define PSII_CONFIG_DEST_PCI2 0x01000000 /**< PowerSpan II configuration cycle destination selection, set for PCI2 bus */
-#define PSII_PCI_MEM_BASE 0x30200000 /**< Local Bus address for start of PCI memory space on PCI2 bus. */
-#define PSII_PCI_MEM_SIZE 0x1BE00000 /**< PCI Memory space about 510 Meg. */
-#define AP1000_SYS_MEM_START 0x00000000 /**< System memory starts at 0. */
-#define AP1000_SYS_MEM_SIZE 0x08000000 /**< System memory is 128 Meg. */
-
-/* static int G_verbosity_level = 1; */
-#define G_verbosity_level 1
-
-void write1 (unsigned long addr, unsigned char val)
-{
- volatile unsigned char *p = (volatile unsigned char *) addr;
-
- if (G_verbosity_level > 1)
- printf ("write1: addr=%08x val=%02x\n", (unsigned int) addr,
- val);
- *p = val;
- asm ("eieio");
-}
-
-unsigned char read1 (unsigned long addr)
-{
- unsigned char val;
- volatile unsigned char *p = (volatile unsigned char *) addr;
-
- if (G_verbosity_level > 1)
- printf ("read1: addr=%08x ", (unsigned int) addr);
- val = *p;
- asm ("eieio");
- if (G_verbosity_level > 1)
- printf ("val=%08x\n", val);
- return val;
-}
-
-void write2 (unsigned long addr, unsigned short val)
-{
- volatile unsigned short *p = (volatile unsigned short *) addr;
-
- if (G_verbosity_level > 1)
- printf ("write2: addr=%08x val=%04x -> *p=%04x\n",
- (unsigned int) addr, val,
- ((val & 0xFF00) >> 8) | ((val & 0x00FF) << 8));
-
- *p = ((val & 0xFF00) >> 8) | ((val & 0x00FF) << 8);
- asm ("eieio");
-}
-
-unsigned short read2 (unsigned long addr)
-{
- unsigned short val;
- volatile unsigned short *p = (volatile unsigned short *) addr;
-
- if (G_verbosity_level > 1)
- printf ("read2: addr=%08x ", (unsigned int) addr);
- val = *p;
- val = ((val & 0xFF00) >> 8) | ((val & 0x00FF) << 8);
- asm ("eieio");
- if (G_verbosity_level > 1)
- printf ("*p=%04x -> val=%04x\n",
- ((val & 0xFF00) >> 8) | ((val & 0x00FF) << 8), val);
- return val;
-}
-
-void write4 (unsigned long addr, unsigned long val)
-{
- volatile unsigned long *p = (volatile unsigned long *) addr;
-
- if (G_verbosity_level > 1)
- printf ("write4: addr=%08x val=%08x -> *p=%08x\n",
- (unsigned int) addr, (unsigned int) val,
- (unsigned int) (((val & 0xFF000000) >> 24) |
- ((val & 0x000000FF) << 24) |
- ((val & 0x00FF0000) >> 8) |
- ((val & 0x0000FF00) << 8)));
-
- *p = ((val & 0xFF000000) >> 24) | ((val & 0x000000FF) << 24) |
- ((val & 0x00FF0000) >> 8) | ((val & 0x0000FF00) << 8);
- asm ("eieio");
-}
-
-unsigned long read4 (unsigned long addr)
-{
- unsigned long val;
- volatile unsigned long *p = (volatile unsigned long *) addr;
-
- if (G_verbosity_level > 1)
- printf ("read4: addr=%08x", (unsigned int) addr);
-
- val = *p;
- val = ((val & 0xFF000000) >> 24) | ((val & 0x000000FF) << 24) |
- ((val & 0x00FF0000) >> 8) | ((val & 0x0000FF00) << 8);
- asm ("eieio");
-
- if (G_verbosity_level > 1)
- printf ("*p=%04x -> val=%04x\n",
- (unsigned int) (((val & 0xFF000000) >> 24) |
- ((val & 0x000000FF) << 24) |
- ((val & 0x00FF0000) >> 8) |
- ((val & 0x0000FF00) << 8)),
- (unsigned int) val);
- return val;
-}
-
-void write4be (unsigned long addr, unsigned long val)
-{
- volatile unsigned long *p = (volatile unsigned long *) addr;
-
- if (G_verbosity_level > 1)
- printf ("write4: addr=%08x val=%08x\n", (unsigned int) addr,
- (unsigned int) val);
- *p = val;
- asm ("eieio");
-}
-
-/** One byte configuration write on PSII.
- * Currently fixes destination PCI bus to PCI2, onboard
- * pci.
- * @param hose PCI Host controller information. Ignored.
- * @param dev Encoded PCI device/Bus and Function value.
- * @param reg PCI Configuration register number.
- * @param val Address of location for received byte.
- * @return Always Zero.
- */
-static int psII_read_config_byte (struct pci_controller *hose,
- pci_dev_t dev, int reg, u8 * val)
-{
- write4be (PSII_CONFIG_ADDR, PSII_CONFIG_DEST_PCI2 | /* Operate on PCI2 bus interface . */
- (PCI_BUS (dev) << 16) | (PCI_DEV (dev) << 11) | (PCI_FUNC (dev) << 8) | ((reg & 0xFF) & ~3)); /* Configuation cycle type 0 */
-
- *val = read1 (PSII_CONFIG_DATA + (reg & 0x03));
- return (0);
-}
-
-/** One byte configuration write on PSII.
- * Currently fixes destination bus to PCI2, onboard
- * pci.
- * @param hose PCI Host controller information. Ignored.
- * @param dev Encoded PCI device/Bus and Function value.
- * @param reg PCI Configuration register number.
- * @param val Output byte.
- * @return Always Zero.
- */
-static int psII_write_config_byte (struct pci_controller *hose,
- pci_dev_t dev, int reg, u8 val)
-{
- write4be (PSII_CONFIG_ADDR, PSII_CONFIG_DEST_PCI2 | /* Operate on PCI2 bus interface . */
- (PCI_BUS (dev) << 16) | (PCI_DEV (dev) << 11) | (PCI_FUNC (dev) << 8) | ((reg & 0xFF) & ~3)); /* Configuation cycle type 0 */
-
- write1 (PSII_CONFIG_DATA + (reg & 0x03), (unsigned char) val);
-
- return (0);
-}
-
-/** One word (16 bit) configuration read on PSII.
- * Currently fixes destination PCI bus to PCI2, onboard
- * pci.
- * @param hose PCI Host controller information. Ignored.
- * @param dev Encoded PCI device/Bus and Function value.
- * @param reg PCI Configuration register number.
- * @param val Address of location for received word.
- * @return Always Zero.
- */
-static int psII_read_config_word (struct pci_controller *hose,
- pci_dev_t dev, int reg, u16 * val)
-{
- write4be (PSII_CONFIG_ADDR, PSII_CONFIG_DEST_PCI2 | /* Operate on PCI2 bus interface . */
- (PCI_BUS (dev) << 16) | (PCI_DEV (dev) << 11) | (PCI_FUNC (dev) << 8) | ((reg & 0xFF) & ~3)); /* Configuation cycle type 0 */
-
- *val = read2 (PSII_CONFIG_DATA + (reg & 0x03));
- return (0);
-}
-
-/** One word (16 bit) configuration write on PSII.
- * Currently fixes destination bus to PCI2, onboard
- * pci.
- * @param hose PCI Host controller information. Ignored.
- * @param dev Encoded PCI device/Bus and Function value.
- * @param reg PCI Configuration register number.
- * @param val Output word.
- * @return Always Zero.
- */
-static int psII_write_config_word (struct pci_controller *hose,
- pci_dev_t dev, int reg, u16 val)
-{
- write4be (PSII_CONFIG_ADDR, PSII_CONFIG_DEST_PCI2 | /* Operate on PCI2 bus interface . */
- (PCI_BUS (dev) << 16) | (PCI_DEV (dev) << 11) | (PCI_FUNC (dev) << 8) | ((reg & 0xFF) & ~3)); /* Configuation cycle type 0 */
-
- write2 (PSII_CONFIG_DATA + (reg & 0x03), (unsigned short) val);
-
- return (0);
-}
-
-/** One DWord (32 bit) configuration read on PSII.
- * Currently fixes destination PCI bus to PCI2, onboard
- * pci.
- * @param hose PCI Host controller information. Ignored.
- * @param dev Encoded PCI device/Bus and Function value.
- * @param reg PCI Configuration register number.
- * @param val Address of location for received byte.
- * @return Always Zero.
- */
-static int psII_read_config_dword (struct pci_controller *hose,
- pci_dev_t dev, int reg, u32 * val)
-{
- write4be (PSII_CONFIG_ADDR, PSII_CONFIG_DEST_PCI2 | /* Operate on PCI2 bus interface . */
- (PCI_BUS (dev) << 16) | (PCI_DEV (dev) << 11) | (PCI_FUNC (dev) << 8) | ((reg & 0xFF) & ~3)); /* Configuation cycle type 0 */
-
- *val = read4 (PSII_CONFIG_DATA);
- return (0);
-}
-
-/** One DWord (32 bit) configuration write on PSII.
- * Currently fixes destination bus to PCI2, onboard
- * pci.
- * @param hose PCI Host controller information. Ignored.
- * @param dev Encoded PCI device/Bus and Function value.
- * @param reg PCI Configuration register number.
- * @param val Output Dword.
- * @return Always Zero.
- */
-static int psII_write_config_dword (struct pci_controller *hose,
- pci_dev_t dev, int reg, u32 val)
-{
- write4be (PSII_CONFIG_ADDR, PSII_CONFIG_DEST_PCI2 | /* Operate on PCI2 bus interface . */
- (PCI_BUS (dev) << 16) | (PCI_DEV (dev) << 11) | (PCI_FUNC (dev) << 8) | ((reg & 0xFF) & ~3)); /* Configuation cycle type 0 */
-
- write4 (PSII_CONFIG_DATA, (unsigned long) val);
-
- return (0);
-}
-
-static struct pci_config_table ap1000_config_table[] = {
-#ifdef CONFIG_AP1000
- {PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- PCI_BUS (CFG_ETH_DEV_FN), PCI_DEV (CFG_ETH_DEV_FN),
- PCI_FUNC (CFG_ETH_DEV_FN),
- pci_cfgfunc_config_device,
- {CFG_ETH_IOBASE, CFG_ETH_MEMBASE,
- PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER}},
-#endif
- {}
-};
-
-static struct pci_controller psII_hose = {
- config_table:ap1000_config_table,
-};
-
-void pci_init_board (void)
-{
- struct pci_controller *hose = &psII_hose;
-
- /*
- * Register the hose
- */
- hose->first_busno = 0;
- hose->last_busno = 0xff;
-
- /* System memory space */
- pci_set_region (hose->regions + 0,
- AP1000_SYS_MEM_START, AP1000_SYS_MEM_START,
- AP1000_SYS_MEM_SIZE,
- PCI_REGION_MEM | PCI_REGION_MEMORY);
-
- /* PCI Memory space */
- pci_set_region (hose->regions + 1,
- PSII_PCI_MEM_BASE, PSII_PCI_MEM_BASE,
- PSII_PCI_MEM_SIZE, PCI_REGION_MEM);
-
- /* No IO Memory space - for now */
-
- pci_set_ops (hose,
- psII_read_config_byte,
- psII_read_config_word,
- psII_read_config_dword,
- psII_write_config_byte,
- psII_write_config_word, psII_write_config_dword);
-
- hose->region_count = 2;
-
- pci_register_hose (hose);
-
- hose->last_busno = pci_hose_scan (hose);
-}
diff --git a/board/amirix/ap1000/powerspan.c b/board/amirix/ap1000/powerspan.c
deleted file mode 100644
index f0481553f0..0000000000
--- a/board/amirix/ap1000/powerspan.c
+++ /dev/null
@@ -1,750 +0,0 @@
-/**
- * @file powerspan.c Source file for PowerSpan II code.
- */
-
-/*
- * (C) Copyright 2005
- * AMIRIX Systems Inc.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <command.h>
-#include <asm/processor.h>
-#include "powerspan.h"
-#define tolower(x) x
-#include "ap1000.h"
-
-#ifdef INCLUDE_PCI
-
-/** Write one byte with byte swapping.
- * @param addr [IN] the address to write to
- * @param val [IN] the value to write
- */
-void write1 (unsigned long addr, unsigned char val)
-{
- volatile unsigned char *p = (volatile unsigned char *) addr;
-
-#ifdef VERBOSITY
- if (gVerbosityLevel > 1) {
- printf ("write1: addr=%08x val=%02x\n", addr, val);
- }
-#endif
- *p = val;
- PSII_SYNC ();
-}
-
-/** Read one byte with byte swapping.
- * @param addr [IN] the address to read from
- * @return the value at addr
- */
-unsigned char read1 (unsigned long addr)
-{
- unsigned char val;
- volatile unsigned char *p = (volatile unsigned char *) addr;
-
- val = *p;
- PSII_SYNC ();
-#ifdef VERBOSITY
- if (gVerbosityLevel > 1) {
- printf ("read1: addr=%08x val=%02x\n", addr, val);
- }
-#endif
- return val;
-}
-
-/** Write one 2-byte word with byte swapping.
- * @param addr [IN] the address to write to
- * @param val [IN] the value to write
- */
-void write2 (unsigned long addr, unsigned short val)
-{
- volatile unsigned short *p = (volatile unsigned short *) addr;
-
-#ifdef VERBOSITY
- if (gVerbosityLevel > 1) {
- printf ("write2: addr=%08x val=%04x -> *p=%04x\n", addr, val,
- ((val & 0xFF00) >> 8) | ((val & 0x00FF) << 8));
- }
-#endif
- *p = ((val & 0xFF00) >> 8) | ((val & 0x00FF) << 8);
- PSII_SYNC ();
-}
-
-/** Read one 2-byte word with byte swapping.
- * @param addr [IN] the address to read from
- * @return the value at addr
- */
-unsigned short read2 (unsigned long addr)
-{
- unsigned short val;
- volatile unsigned short *p = (volatile unsigned short *) addr;
-
- val = *p;
- val = ((val & 0xFF00) >> 8) | ((val & 0x00FF) << 8);
- PSII_SYNC ();
-#ifdef VERBOSITY
- if (gVerbosityLevel > 1) {
- printf ("read2: addr=%08x *p=%04x -> val=%04x\n", addr, *p,
- val);
- }
-#endif
- return val;
-}
-
-/** Write one 4-byte word with byte swapping.
- * @param addr [IN] the address to write to
- * @param val [IN] the value to write
- */
-void write4 (unsigned long addr, unsigned long val)
-{
- volatile unsigned long *p = (volatile unsigned long *) addr;
-
-#ifdef VERBOSITY
- if (gVerbosityLevel > 1) {
- printf ("write4: addr=%08x val=%08x -> *p=%08x\n", addr, val,
- ((val & 0xFF000000) >> 24) |
- ((val & 0x000000FF) << 24) |
- ((val & 0x00FF0000) >> 8) |
- ((val & 0x0000FF00) << 8));
- }
-#endif
- *p = ((val & 0xFF000000) >> 24) | ((val & 0x000000FF) << 24) |
- ((val & 0x00FF0000) >> 8) | ((val & 0x0000FF00) << 8);
- PSII_SYNC ();
-}
-
-/** Read one 4-byte word with byte swapping.
- * @param addr [IN] the address to read from
- * @return the value at addr
- */
-unsigned long read4 (unsigned long addr)
-{
- unsigned long val;
- volatile unsigned long *p = (volatile unsigned long *) addr;
-
- val = *p;
- val = ((val & 0xFF000000) >> 24) | ((val & 0x000000FF) << 24) |
- ((val & 0x00FF0000) >> 8) | ((val & 0x0000FF00) << 8);
- PSII_SYNC ();
-#ifdef VERBOSITY
- if (gVerbosityLevel > 1) {
- printf ("read4: addr=%08x *p=%08x -> val=%08x\n", addr, *p,
- val);
- }
-#endif
- return val;
-}
-
-int PCIReadConfig (int bus, int dev, int fn, int reg, int width,
- unsigned long *val)
-{
- unsigned int conAdrVal;
- unsigned int conDataReg = REG_CONFIG_DATA;
- unsigned int status;
- int ret_val = 0;
-
-
- /* DEST bit hardcoded to 1: local pci is PCI-2 */
- /* TYPE bit is hardcoded to 1: all config cycles are local */
- conAdrVal = (1 << 24)
- | ((bus & 0xFF) << 16)
- | ((dev & 0xFF) << 11)
- | ((fn & 0x07) << 8)
- | (reg & 0xFC);
-
- /* clear any pending master aborts */
- write4 (REG_P1_CSR, CLEAR_MASTER_ABORT);
-
- /* Load the conAdrVal value first, then read from pb_conf_data */
- write4 (REG_CONFIG_ADDRESS, conAdrVal);
- PSII_SYNC ();
-
-
- /* Note: documentation does not match the pspan library code */
- /* Note: *pData comes back as -1 if device is not present */
- switch (width) {
- case 4:
- *(unsigned int *) val = read4 (conDataReg);
- break;
- case 2:
- *(unsigned short *) val = read2 (conDataReg);
- break;
- case 1:
- *(unsigned char *) val = read1 (conDataReg);
- break;
- default:
- ret_val = ILLEGAL_REG_OFFSET;
- break;
- }
- PSII_SYNC ();
-
- /* clear any pending master aborts */
- status = read4 (REG_P1_CSR);
- if (status & CLEAR_MASTER_ABORT) {
- ret_val = NO_DEVICE_FOUND;
- write4 (REG_P1_CSR, CLEAR_MASTER_ABORT);
- }
-
- return ret_val;
-}
-
-
-int PCIWriteConfig (int bus, int dev, int fn, int reg, int width,
- unsigned long val)
-{
- unsigned int conAdrVal;
- unsigned int conDataReg = REG_CONFIG_DATA;
- unsigned int status;
- int ret_val = 0;
-
-
- /* DEST bit hardcoded to 1: local pci is PCI-2 */
- /* TYPE bit is hardcoded to 1: all config cycles are local */
- conAdrVal = (1 << 24)
- | ((bus & 0xFF) << 16)
- | ((dev & 0xFF) << 11)
- | ((fn & 0x07) << 8)
- | (reg & 0xFC);
-
- /* clear any pending master aborts */
- write4 (REG_P1_CSR, CLEAR_MASTER_ABORT);
-
- /* Load the conAdrVal value first, then read from pb_conf_data */
- write4 (REG_CONFIG_ADDRESS, conAdrVal);
- PSII_SYNC ();
-
-
- /* Note: documentation does not match the pspan library code */
- /* Note: *pData comes back as -1 if device is not present */
- switch (width) {
- case 4:
- write4 (conDataReg, val);
- break;
- case 2:
- write2 (conDataReg, val);
- break;
- case 1:
- write1 (conDataReg, val);
- break;
- default:
- ret_val = ILLEGAL_REG_OFFSET;
- break;
- }
- PSII_SYNC ();
-
- /* clear any pending master aborts */
- status = read4 (REG_P1_CSR);
- if (status & CLEAR_MASTER_ABORT) {
- ret_val = NO_DEVICE_FOUND;
- write4 (REG_P1_CSR, CLEAR_MASTER_ABORT);
- }
-
- return ret_val;
-}
-
-
-int pci_read_config_byte (int bus, int dev, int fn, int reg,
- unsigned char *val)
-{
- unsigned long read_val;
- int ret_val;
-
- ret_val = PCIReadConfig (bus, dev, fn, reg, 1, &read_val);
- *val = read_val & 0xFF;
-
- return ret_val;
-}
-
-int pci_write_config_byte (int bus, int dev, int fn, int reg,
- unsigned char val)
-{
- return PCIWriteConfig (bus, dev, fn, reg, 1, val);
-}
-
-int pci_read_config_word (int bus, int dev, int fn, int reg,
- unsigned short *val)
-{
- unsigned long read_val;
- int ret_val;
-
- ret_val = PCIReadConfig (bus, dev, fn, reg, 2, &read_val);
- *val = read_val & 0xFFFF;
-
- return ret_val;
-}
-
-int pci_write_config_word (int bus, int dev, int fn, int reg,
- unsigned short val)
-{
- return PCIWriteConfig (bus, dev, fn, reg, 2, val);
-}
-
-int pci_read_config_dword (int bus, int dev, int fn, int reg,
- unsigned long *val)
-{
- return PCIReadConfig (bus, dev, fn, reg, 4, val);
-}
-
-int pci_write_config_dword (int bus, int dev, int fn, int reg,
- unsigned long val)
-{
- return PCIWriteConfig (bus, dev, fn, reg, 4, val);
-}
-
-#endif /* INCLUDE_PCI */
-
-int I2CAccess (unsigned char theI2CAddress, unsigned char theDevCode,
- unsigned char theChipSel, unsigned char *theValue, int RWFlag)
-{
- int ret_val = 0;
- unsigned int reg_value;
-
- reg_value = PowerSpanRead (REG_I2C_CSR);
-
- if (reg_value & I2C_CSR_ACT) {
- printf ("Error: I2C busy\n");
- ret_val = I2C_BUSY;
- } else {
- reg_value = ((theI2CAddress & 0xFF) << 24)
- | ((theDevCode & 0x0F) << 12)
- | ((theChipSel & 0x07) << 9)
- | I2C_CSR_ERR;
- if (RWFlag == I2C_WRITE) {
- reg_value |= I2C_CSR_RW | ((*theValue & 0xFF) << 16);
- }
-
- PowerSpanWrite (REG_I2C_CSR, reg_value);
- udelay (1);
-
- do {
- reg_value = PowerSpanRead (REG_I2C_CSR);
-
- if ((reg_value & I2C_CSR_ACT) == 0) {
- if (reg_value & I2C_CSR_ERR) {
- ret_val = I2C_ERR;
- } else {
- *theValue =
- (reg_value & I2C_CSR_DATA) >>
- 16;
- }
- }
- } while (reg_value & I2C_CSR_ACT);
- }
-
- return ret_val;
-}
-
-int EEPROMRead (unsigned char theI2CAddress, unsigned char *theValue)
-{
- return I2CAccess (theI2CAddress, I2C_EEPROM_DEV, I2C_EEPROM_CHIP_SEL,
- theValue, I2C_READ);
-}
-
-int EEPROMWrite (unsigned char theI2CAddress, unsigned char theValue)
-{
- return I2CAccess (theI2CAddress, I2C_EEPROM_DEV, I2C_EEPROM_CHIP_SEL,
- &theValue, I2C_WRITE);
-}
-
-int do_eeprom (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- char cmd;
- int ret_val = 0;
- unsigned int address = 0;
- unsigned char value = 1;
- unsigned char read_value;
- int ii;
- int error = 0;
- unsigned char *mem_ptr;
- unsigned char default_eeprom[] = EEPROM_DEFAULT;
-
- if (argc < 2) {
- goto usage;
- }
-
- cmd = argv[1][0];
- if (argc > 2) {
- address = simple_strtoul (argv[2], NULL, 16);
- if (argc > 3) {
- value = simple_strtoul (argv[3], NULL, 16) & 0xFF;
- }
- }
-
- switch (cmd) {
- case 'r':
- if (address > 256) {
- printf ("Illegal Address\n");
- goto usage;
- }
- printf ("@0x%x: ", address);
- for (ii = 0; ii < value; ii++) {
- if (EEPROMRead (address + ii, &read_value) !=
- 0) {
- printf ("Read Error\n");
- } else {
- printf ("0x%02x ", read_value);
- }
-
- if (((ii + 1) % 16) == 0) {
- printf ("\n");
- }
- }
- printf ("\n");
- break;
- case 'w':
- if (address > 256) {
- printf ("Illegal Address\n");
- goto usage;
- }
- if (argc < 4) {
- goto usage;
- }
- if (EEPROMWrite (address, value) != 0) {
- printf ("Write Error\n");
- }
- break;
- case 'g':
- if (argc != 3) {
- goto usage;
- }
- mem_ptr = (unsigned char *) address;
- for (ii = 0; ((ii < EEPROM_LENGTH) && (error == 0));
- ii++) {
- if (EEPROMRead (ii, &read_value) != 0) {
- printf ("Read Error\n");
- error = 1;
- } else {
- *mem_ptr = read_value;
- mem_ptr++;
- }
- }
- break;
- case 'p':
- if (argc != 3) {
- goto usage;
- }
- mem_ptr = (unsigned char *) address;
- for (ii = 0; ((ii < EEPROM_LENGTH) && (error == 0));
- ii++) {
- if (EEPROMWrite (ii, *mem_ptr) != 0) {
- printf ("Write Error\n");
- error = 1;
- }
-
- mem_ptr++;
- }
- break;
- case 'd':
- if (argc != 2) {
- goto usage;
- }
- for (ii = 0; ((ii < EEPROM_LENGTH) && (error == 0));
- ii++) {
- if (EEPROMWrite (ii, default_eeprom[ii]) != 0) {
- printf ("Write Error\n");
- error = 1;
- }
- }
- break;
- default:
- goto usage;
- }
-
- goto done;
- usage:
- printf ("Usage:\n%s\n", cmdtp->help);
-
- done:
- return ret_val;
-
-}
-
-U_BOOT_CMD (eeprom, 4, 0, do_eeprom,
- "eeprom - read/write/copy to/from the PowerSpan II eeprom\n",
- "eeprom r OFF [NUM]\n"
- " - read NUM words starting at OFF\n"
- "eeprom w OFF VAL\n"
- " - write word VAL at offset OFF\n"
- "eeprom g ADD\n"
- " - store contents of eeprom at address ADD\n"
- "eeprom p ADD\n"
- " - put data stored at address ADD into the eeprom\n"
- "eeprom d\n" " - return eeprom to default contents\n");
-
-unsigned int PowerSpanRead (unsigned int theOffset)
-{
- volatile unsigned int *ptr =
- (volatile unsigned int *) (PSPAN_BASEADDR + theOffset);
- unsigned int ret_val;
-
-#ifdef VERBOSITY
- if (gVerbosityLevel > 1) {
- printf ("PowerSpanRead: offset=%08x ", theOffset);
- }
-#endif
- ret_val = *ptr;
- PSII_SYNC ();
-
-#ifdef VERBOSITY
- if (gVerbosityLevel > 1) {
- printf ("value=%08x\n", ret_val);
- }
-#endif
-
- return ret_val;
-}
-
-void PowerSpanWrite (unsigned int theOffset, unsigned int theValue)
-{
- volatile unsigned int *ptr =
- (volatile unsigned int *) (PSPAN_BASEADDR + theOffset);
-#ifdef VERBOSITY
- if (gVerbosityLevel > 1) {
- printf ("PowerSpanWrite: offset=%08x val=%02x\n", theOffset,
- theValue);
- }
-#endif
- *ptr = theValue;
- PSII_SYNC ();
-}
-
-/**
- * Sets the indicated bits in the indicated register.
- * @param theOffset [IN] the register to access.
- * @param theMask [IN] bits set in theMask will be set in the register.
- */
-void PowerSpanSetBits (unsigned int theOffset, unsigned int theMask)
-{
- volatile unsigned int *ptr =
- (volatile unsigned int *) (PSPAN_BASEADDR + theOffset);
- unsigned int register_value;
-
-#ifdef VERBOSITY
- if (gVerbosityLevel > 1) {
- printf ("PowerSpanSetBits: offset=%08x mask=%02x\n",
- theOffset, theMask);
- }
-#endif
- register_value = *ptr;
- PSII_SYNC ();
-
- register_value |= theMask;
- *ptr = register_value;
- PSII_SYNC ();
-}
-
-/**
- * Clears the indicated bits in the indicated register.
- * @param theOffset [IN] the register to access.
- * @param theMask [IN] bits set in theMask will be cleared in the register.
- */
-void PowerSpanClearBits (unsigned int theOffset, unsigned int theMask)
-{
- volatile unsigned int *ptr =
- (volatile unsigned int *) (PSPAN_BASEADDR + theOffset);
- unsigned int register_value;
-
-#ifdef VERBOSITY
- if (gVerbosityLevel > 1) {
- printf ("PowerSpanClearBits: offset=%08x mask=%02x\n",
- theOffset, theMask);
- }
-#endif
- register_value = *ptr;
- PSII_SYNC ();
-
- register_value &= ~theMask;
- *ptr = register_value;
- PSII_SYNC ();
-}
-
-/**
- * Configures a slave image on the local bus, based on the parameters and some hardcoded system values.
- * Slave Images are images that cause the PowerSpan II to be a master on the PCI bus. Thus, they
- * are outgoing from the standpoint of the local bus.
- * @param theImageIndex [IN] the PowerSpan II image to set (assumed to be 0-7).
- * @param theBlockSize [IN] the block size of the image (as used by PowerSpan II: PB_SIx_CTL[BS]).
- * @param theMemIOFlag [IN] if PX_TGT_USE_MEM_IO, this image will have the MEM_IO bit set.
- * @param theEndianness [IN] the endian bits for the image (already shifted, use defines).
- * @param theLocalBaseAddr [IN] the Local address for the image (assumed to be valid with provided block size).
- * @param thePCIBaseAddr [IN] the PCI address for the image (assumed to be valid with provided block size).
- */
-int SetSlaveImage (int theImageIndex, unsigned int theBlockSize,
- int theMemIOFlag, int theEndianness,
- unsigned int theLocalBaseAddr, unsigned int thePCIBaseAddr)
-{
- unsigned int reg_offset = theImageIndex * PB_SLAVE_IMAGE_OFF;
- unsigned int reg_value = 0;
-
- /* Make sure that the Slave Image is disabled */
- PowerSpanClearBits ((REGS_PB_SLAVE_CSR + reg_offset),
- PB_SLAVE_CSR_IMG_EN);
-
- /* Setup the mask required for requested PB Slave Image configuration */
- reg_value = PB_SLAVE_CSR_TA_EN | theEndianness | (theBlockSize << 24);
- if (theMemIOFlag == PB_SLAVE_USE_MEM_IO) {
- reg_value |= PB_SLAVE_CSR_MEM_IO;
- }
-
- /* hardcoding the following:
- TA_EN = 1
- MD_EN = 0
- MODE = 0
- PRKEEP = 0
- RD_AMT = 0
- */
- PowerSpanWrite ((REGS_PB_SLAVE_CSR + reg_offset), reg_value);
-
- /* these values are not checked by software */
- PowerSpanWrite ((REGS_PB_SLAVE_BADDR + reg_offset), theLocalBaseAddr);
- PowerSpanWrite ((REGS_PB_SLAVE_TADDR + reg_offset), thePCIBaseAddr);
-
- /* Enable the Slave Image */
- PowerSpanSetBits ((REGS_PB_SLAVE_CSR + reg_offset),
- PB_SLAVE_CSR_IMG_EN);
-
- return 0;
-}
-
-/**
- * Configures a target image on the local bus, based on the parameters and some hardcoded system values.
- * Target Images are used when the PowerSpan II is acting as a target for an access. Thus, they
- * are incoming from the standpoint of the local bus.
- * In order to behave better on the host PCI bus, if thePCIBaseAddr is NULL (0x00000000), then the PCI
- * base address will not be updated; makes sense given that the hosts own memory should be mapped to
- * PCI address 0x00000000.
- * @param theImageIndex [IN] the PowerSpan II image to set.
- * @param theBlockSize [IN] the block size of the image (as used by PowerSpan II: Px_TIx_CTL[BS]).
- * @param theMemIOFlag [IN] if PX_TGT_USE_MEM_IO, this image will have the MEM_IO bit set.
- * @param theEndianness [IN] the endian bits for the image (already shifted, use defines).
- * @param theLocalBaseAddr [IN] the Local address for the image (assumed to be valid with provided block size).
- * @param thePCIBaseAddr [IN] the PCI address for the image (assumed to be valid with provided block size).
- */
-int SetTargetImage (int theImageIndex, unsigned int theBlockSize,
- int theMemIOFlag, int theEndianness,
- unsigned int theLocalBaseAddr,
- unsigned int thePCIBaseAddr)
-{
- unsigned int csr_reg_offset = theImageIndex * P1_TGT_IMAGE_OFF;
- unsigned int pci_reg_offset = theImageIndex * P1_BST_OFF;
- unsigned int reg_value = 0;
-
- /* Make sure that the Slave Image is disabled */
- PowerSpanClearBits ((REGS_P1_TGT_CSR + csr_reg_offset),
- PB_SLAVE_CSR_IMG_EN);
-
- /* Setup the mask required for requested PB Slave Image configuration */
- reg_value =
- PX_TGT_CSR_TA_EN | PX_TGT_CSR_BAR_EN | (theBlockSize << 24) |
- PX_TGT_CSR_RTT_READ | PX_TGT_CSR_WTT_WFLUSH | theEndianness;
- if (theMemIOFlag == PX_TGT_USE_MEM_IO) {
- reg_value |= PX_TGT_MEM_IO;
- }
-
- /* hardcoding the following:
- TA_EN = 1
- BAR_EN = 1
- MD_EN = 0
- MODE = 0
- DEST = 0
- RTT = 01010
- GBL = 0
- CI = 0
- WTT = 00010
- PRKEEP = 0
- MRA = 0
- RD_AMT = 0
- */
- PowerSpanWrite ((REGS_P1_TGT_CSR + csr_reg_offset), reg_value);
-
- PowerSpanWrite ((REGS_P1_TGT_TADDR + csr_reg_offset),
- theLocalBaseAddr);
-
- if (thePCIBaseAddr != (unsigned int) NULL) {
- PowerSpanWrite ((REGS_P1_BST + pci_reg_offset),
- thePCIBaseAddr);
- }
-
- /* Enable the Slave Image */
- PowerSpanSetBits ((REGS_P1_TGT_CSR + csr_reg_offset),
- PB_SLAVE_CSR_IMG_EN);
-
- return 0;
-}
-
-int do_bridge (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- char cmd;
- int ret_val = 1;
- unsigned int image_index;
- unsigned int block_size;
- unsigned int mem_io;
- unsigned int local_addr;
- unsigned int pci_addr;
- int endianness;
-
- if (argc != 8) {
- goto usage;
- }
-
- cmd = argv[1][0];
- image_index = simple_strtoul (argv[2], NULL, 16);
- block_size = simple_strtoul (argv[3], NULL, 16);
- mem_io = simple_strtoul (argv[4], NULL, 16);
- endianness = argv[5][0];
- local_addr = simple_strtoul (argv[6], NULL, 16);
- pci_addr = simple_strtoul (argv[7], NULL, 16);
-
-
- switch (cmd) {
- case 'i':
- if (tolower (endianness) == 'b') {
- endianness = PX_TGT_CSR_BIG_END;
- } else if (tolower (endianness) == 'l') {
- endianness = PX_TGT_CSR_TRUE_LEND;
- } else {
- goto usage;
- }
- SetTargetImage (image_index, block_size, mem_io,
- endianness, local_addr, pci_addr);
- break;
- case 'o':
- if (tolower (endianness) == 'b') {
- endianness = PB_SLAVE_CSR_BIG_END;
- } else if (tolower (endianness) == 'l') {
- endianness = PB_SLAVE_CSR_TRUE_LEND;
- } else {
- goto usage;
- }
- SetSlaveImage (image_index, block_size, mem_io,
- endianness, local_addr, pci_addr);
- break;
- default:
- goto usage;
- }
-
- goto done;
-usage:
- printf ("Usage:\n%s\n", cmdtp->help);
-
-done:
- return ret_val;
-}
diff --git a/board/amirix/ap1000/powerspan.h b/board/amirix/ap1000/powerspan.h
deleted file mode 100644
index 4e9a8c1bd8..0000000000
--- a/board/amirix/ap1000/powerspan.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/**
- * @file powerspan.h Header file for PowerSpan II code.
- */
-
-/*
- * (C) Copyright 2005
- * AMIRIX Systems Inc.
- *
- * 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 POWERSPAN_H
-#define POWERSPAN_H
-
-#define CLEAR_MASTER_ABORT 0xdeadbeef
-#define NO_DEVICE_FOUND -1
-#define ILLEGAL_REG_OFFSET -2
-#define I2C_BUSY -3
-#define I2C_ERR -4
-
-#define REG_P1_CSR 0x004
-#define REGS_P1_BST 0x018
-#define REG_P1_ERR_CSR 0x150
-#define REG_P1_MISC_CSR 0x160
-#define REGS_P1_TGT_CSR 0x100
-#define REGS_P1_TGT_TADDR 0x104
-#define REGS_PB_SLAVE_CSR 0x200
-#define REGS_PB_SLAVE_TADDR 0x204
-#define REGS_PB_SLAVE_BADDR 0x208
-#define REG_CONFIG_ADDRESS 0x290
-#define REG_CONFIG_DATA 0x294
-#define REG_PB_ERR_CSR 0x2B0
-#define REG_PB_MISC_CSR 0x2C0
-#define REG_MISC_CSR 0x400
-#define REG_I2C_CSR 0x408
-#define REG_RESET_CSR 0x40C
-#define REG_ISR0 0x410
-#define REG_ISR1 0x414
-#define REG_IER0 0x418
-#define REG_MBOX_MAP 0x420
-#define REG_HW_MAP 0x42C
-#define REG_IDR 0x444
-
-#define CSR_MEMORY_SPACE_ENABLE 0x00000002
-#define CSR_PCI_MASTER_ENABLE 0x00000004
-
-#define P1_BST_OFF 0x04
-
-#define PX_ERR_ERR_STATUS 0x01000000
-
-#define PX_MISC_CSR_MAX_RETRY_MASK 0x00000F00
-#define PX_MISC_CSR_MAX_RETRY 0x00000F00
-#define PX_MISC_REG_BAR_ENABLE 0x00008000
-#define PB_MISC_TEA_ENABLE 0x00000010
-#define PB_MISC_MAC_TEA 0x00000040
-
-#define P1_TGT_IMAGE_OFF 0x010
-#define PX_TGT_CSR_IMG_EN 0x80000000
-#define PX_TGT_CSR_TA_EN 0x40000000
-#define PX_TGT_CSR_BAR_EN 0x20000000
-#define PX_TGT_CSR_MD_EN 0x10000000
-#define PX_TGT_CSR_MODE 0x00800000
-#define PX_TGT_CSR_DEST 0x00400000
-#define PX_TGT_CSR_MEM_IO 0x00200000
-#define PX_TGT_CSR_GBL 0x00080000
-#define PX_TGT_CSR_CL 0x00040000
-#define PX_TGT_CSR_PRKEEP 0x00000080
-
-#define PX_TGT_CSR_BS_MASK 0x0F000000
-#define PX_TGT_MEM_IO 0x00200000
-#define PX_TGT_CSR_RTT_MASK 0x001F0000
-#define PX_TGT_CSR_RTT_READ 0x000A0000
-#define PX_TGT_CSR_WTT_MASK 0x00001F00
-#define PX_TGT_CSR_WTT_WFLUSH 0x00000200
-#define PX_TGT_CSR_END_MASK 0x00000060
-#define PX_TGT_CSR_BIG_END 0x00000040
-#define PX_TGT_CSR_TRUE_LEND 0x00000060
-#define PX_TGT_CSR_RDAMT_MASK 0x00000007
-
-#define PX_TGT_CSR_BS_64MB 0xa
-#define PX_TGT_CSR_BS_16MB 0x8
-
-#define PX_TGT_USE_MEM_IO 1
-#define PX_TGT_NOT_MEM_IO 0
-
-#define PB_SLAVE_IMAGE_OFF 0x010
-#define PB_SLAVE_CSR_IMG_EN 0x80000000
-#define PB_SLAVE_CSR_TA_EN 0x40000000
-#define PB_SLAVE_CSR_MD_EN 0x20000000
-#define PB_SLAVE_CSR_MODE 0x00800000
-#define PB_SLAVE_CSR_DEST 0x00400000
-#define PB_SLAVE_CSR_MEM_IO 0x00200000
-#define PB_SLAVE_CSR_PRKEEP 0x00000080
-
-#define PB_SLAVE_CSR_BS_MASK 0x1F000000
-#define PB_SLAVE_CSR_END_MASK 0x00000060
-#define PB_SLAVE_CSR_BIG_END 0x00000040
-#define PB_SLAVE_CSR_TRUE_LEND 0x00000060
-#define PB_SLAVE_CSR_RDAMT_MASK 0x00000007
-
-#define PB_SLAVE_USE_MEM_IO 1
-#define PB_SLAVE_NOT_MEM_IO 0
-
-
-#define MISC_CSR_PCI1_LOCK 0x00000080
-
-#define I2C_CSR_ADDR 0xFF000000 /* Specifies I2C Device Address to be Accessed */
-#define I2C_CSR_DATA 0x00FF0000 /* Specifies the Required Data for a Write */
-#define I2C_CSR_DEV_CODE 0x0000F000 /* Device Select. I2C 4-bit Device Code */
-#define I2C_CSR_CS 0x00000E00 /* Chip Select */
-#define I2C_CSR_RW 0x00000100 /* Read/Write */
-#define I2C_CSR_ACT 0x00000080 /* I2C Interface Active */
-#define I2C_CSR_ERR 0x00000040 /* Error */
-
-#define I2C_EEPROM_DEV 0xa
-#define I2C_EEPROM_CHIP_SEL 0
-
-#define I2C_READ 0
-#define I2C_WRITE 1
-
-#define RESET_CSR_EEPROM_LOAD 0x00000010
-
-#define ISR_CLEAR_ALL 0xFFFFFFFF
-
-#define IER0_DMA_INTS_EN 0x0F000000
-#define IER0_PCI_1_EN 0x00400000
-#define IER0_HW_INTS_EN 0x003F0000
-#define IER0_MB_INTS_EN 0x000000FF
-#define IER0_DEFAULT (IER0_DMA_INTS_EN | IER0_PCI_1_EN | IER0_HW_INTS_EN | IER0_MB_INTS_EN)
-
-#define MBOX_MAP_TO_INT4 0xCCCCCCCC
-
-#define HW_MAP_HW4_TO_INT4 0x000C0000
-
-#define IDR_PCI_A_OUT 0x40000000
-#define IDR_MBOX_OUT 0x10000000
-
-
-int pci_read_config_byte(int bus, int dev, int fn, int reg, unsigned char* val);
-int pci_write_config_byte(int bus, int dev, int fn, int reg, unsigned char val);
-int pci_read_config_word(int bus, int dev, int fn, int reg, unsigned short* val);
-int pci_write_config_word(int bus, int dev, int fn, int reg, unsigned short val);
-int pci_read_config_dword(int bus, int dev, int fn, int reg, unsigned long* val);
-int pci_write_config_dword(int bus, int dev, int fn, int reg, unsigned long val);
-
-unsigned int PowerSpanRead(unsigned int theOffset);
-void PowerSpanWrite(unsigned int theOffset, unsigned int theValue);
-
-int I2CAccess(unsigned char theI2CAddress, unsigned char theDevCode, unsigned char theChipSel, unsigned char* theValue, int RWFlag);
-
-int PCIWriteConfig(int bus, int dev, int fn, int reg, int width, unsigned long val);
-int PCIReadConfig(int bus, int dev, int fn, int reg, int width, unsigned long* val);
-
-int SetSlaveImage(int theImageIndex, unsigned int theBlockSize, int theMemIOFlag, int theEndianness, unsigned int theLocalBaseAddr, unsigned int thePCIBaseAddr);
-int SetTargetImage(int theImageIndex, unsigned int theBlockSize, int theMemIOFlag, int theEndianness, unsigned int theLocalBaseAddr, unsigned int thePCIBaseAddr);
-
-#endif
diff --git a/board/amirix/ap1000/serial.c b/board/amirix/ap1000/serial.c
deleted file mode 100644
index c6ee772812..0000000000
--- a/board/amirix/ap1000/serial.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * (C) Copyright 2002
- * Peter De Schrijver (p2@mind.be), Mind Linux Solutions, NV.
- *
- * 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 <asm/u-boot.h>
-#include <asm/processor.h>
-#include <common.h>
-#include <command.h>
-#include <config.h>
-
-#include <ns16550.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-const NS16550_t COM_PORTS[] =
- { (NS16550_t) CFG_NS16550_COM1, (NS16550_t) CFG_NS16550_COM2 };
-
-#undef CFG_DUART_CHAN
-#define CFG_DUART_CHAN gComPort
-static int gComPort = 0;
-
-int serial_init (void)
-{
- int clock_divisor = CFG_NS16550_CLK / 16 / gd->baudrate;
-
- (void) NS16550_init (COM_PORTS[0], clock_divisor);
- gComPort = 0;
-
- return 0;
-}
-
-void serial_putc (const char c)
-{
- if (c == '\n') {
- NS16550_putc (COM_PORTS[CFG_DUART_CHAN], '\r');
- }
-
- NS16550_putc (COM_PORTS[CFG_DUART_CHAN], c);
-}
-
-int serial_getc (void)
-{
- return NS16550_getc (COM_PORTS[CFG_DUART_CHAN]);
-}
-
-int serial_tstc (void)
-{
- return NS16550_tstc (COM_PORTS[CFG_DUART_CHAN]);
-}
-
-void serial_setbrg (void)
-{
- int clock_divisor = CFG_NS16550_CLK / 16 / gd->baudrate;
-
-#ifdef CFG_INIT_CHAN1
- NS16550_reinit (COM_PORTS[0], clock_divisor);
-#endif
-#ifdef CFG_INIT_CHAN2
- NS16550_reinit (COM_PORTS[1], clock_divisor);
-#endif
-}
-
-void serial_puts (const char *s)
-{
- while (*s) {
- serial_putc (*s++);
- }
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-void kgdb_serial_init (void)
-{
-}
-
-void putDebugChar (int c)
-{
- serial_putc (c);
-}
-
-void putDebugStr (const char *str)
-{
- serial_puts (str);
-}
-
-int getDebugChar (void)
-{
- return serial_getc ();
-}
-
-void kgdb_interruptible (int yes)
-{
- return;
-}
-#endif /* CFG_CMD_KGDB */
diff --git a/board/amirix/ap1000/u-boot.lds b/board/amirix/ap1000/u-boot.lds
deleted file mode 100644
index 109e7fe3e1..0000000000
--- a/board/amirix/ap1000/u-boot.lds
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/amirix/ap1000/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __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/armadillo/Makefile b/board/armadillo/Makefile
deleted file mode 100644
index 1380e92cf6..0000000000
--- a/board/armadillo/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2002
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@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
-#
-
-include $(TOPDIR)/config.mk
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS := armadillo.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/armadillo/armadillo.c b/board/armadillo/armadillo.c
deleted file mode 100644
index ca5bd1d164..0000000000
--- a/board/armadillo/armadillo.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2005 Rowel Atienza <rowel@diwalabs.com>
- * Armadillo board HT1070
- *
- * 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 <common.h>
-#include <clps7111.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* Activate LED flasher */
- IO_LEDFLSH = 0x40;
-
- /* arch number MACH_TYPE_ARMADILLO - not official*/
- gd->bd->bi_arch_number = 83;
-
- /* location of boot parameters */
- gd->bd->bi_boot_params = 0xc0000100;
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return (0);
-}
diff --git a/board/armadillo/config.mk b/board/armadillo/config.mk
deleted file mode 100644
index 23c432f165..0000000000
--- a/board/armadillo/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (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
-#
-
-#address where u-boot will be relocated
-TEXT_BASE = 0xc0f80000
diff --git a/board/armadillo/flash.c b/board/armadillo/flash.c
deleted file mode 100644
index 037a6430da..0000000000
--- a/board/armadillo/flash.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2005 Rowel Atienza <rowel@diwalabs.com>
- * Flash driver for armadillo board HT1070
- *
- * 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 <common.h>
-
-#define FLASH_BANK_SIZE 0x400000
-
-/*value used by hermit is 0x200*/
-/*document says sector size is either 64k in low mem reg and 8k in high mem reg*/
-#define MAIN_SECT_SIZE 0x10000
-
-#define UNALIGNED_MASK (3)
-#define FL_WORD(addr) (*(volatile unsigned short*)(addr))
-#define FLASH_TIMEOUT 20000000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id = (FUJ_MANUFACT & FLASH_VENDMASK);
- /*(INTEL_ID_28F128J3 & FLASH_TYPEMASK); */
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic ("configured too many flash banks!\n");
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] =
- flashbase + j * MAIN_SECT_SIZE;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (FUJ_MANUFACT & FLASH_VENDMASK):
- printf ("Fujitsu: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-/*
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (INTEL_ID_28F128J3 & FLASH_TYPEMASK):
- printf ("28F128J3 (128Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-*/
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
-/*
-Done: ;
-*/
-}
-
-/*
- * * Loop until both write state machines complete.
- * */
-static unsigned short flash_status_wait (unsigned long addr,
- unsigned short value)
-{
- unsigned short status;
- long timeout = FLASH_TIMEOUT;
-
- while (((status = (FL_WORD (addr))) != value) && timeout > 0) {
- timeout--;
- }
- return status;
-}
-
-/*
- * Loop until the Write State machine is ready, then do a full error
- * check. Clear status and leave the flash in Read Array mode; return
- * 0 for no error, -1 for error.
- */
-static int flash_status_full_check (unsigned long addr, unsigned short value1,
- unsigned short value2)
-{
- unsigned short status1, status2;
-
- status1 = flash_status_wait (addr, value1);
- status2 = flash_status_wait (addr + 2, value2);
- return (status1 != value1 || status2 != value2) ? -1 : 0;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- int rc = ERR_OK;
- unsigned long base;
- unsigned long addr;
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (FUJ_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
-
- printf ("Erasing %d sectors starting at sector %2d.\n"
- "This make take some time ... ",
- s_last - s_first, sect);
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
- /* ARM simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- if (info->protect[sect] == 0) { /* not protected */
-
- addr = sect * MAIN_SECT_SIZE;
- addr &= ~(unsigned long) UNALIGNED_MASK; /* word align */
- base = addr & 0xF0000000;
-
- FL_WORD (base + (0x555 << 1)) = 0xAA;
- FL_WORD (base + (0x2AA << 1)) = 0x55;
- FL_WORD (base + (0x555 << 1)) = 0x80;
- FL_WORD (base + (0x555 << 1)) = 0xAA;
- FL_WORD (base + (0x2AA << 1)) = 0x55;
- FL_WORD (addr) = 0x30;
- if (flash_status_full_check (addr, 0xFFFF, 0xFFFF))
- return ERR_PROTECTED;
- }
- }
- printf ("\nDone.\n");
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
-
- if (flag)
- enable_interrupts ();
-
- return rc;
-}
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_word (flash_info_t * info, ulong dest, ushort data)
-{
- int flag;
- unsigned long base;
-
- /* Check if Flash is (sufficiently) erased
- */
- if ((FL_WORD (dest) & data) != data)
- return ERR_NOT_ERASED;
-
- /*if(dest & UNALIGNED_MASK) return ERR_ALIGN; */
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- base = dest & 0xF0000000;
- FL_WORD (base + (0x555 << 1)) = 0xAA;
- FL_WORD (base + (0x2AA << 1)) = 0x55;
- FL_WORD (base + (0x555 << 1)) = 0xA0;
- FL_WORD (dest) = data;
- /*printf("writing 0x%p = 0x%x\n",dest,data); */
- if (flash_status_wait (dest, data) != data)
- return ERR_PROG_ERROR;
-
- if (flag)
- enable_interrupts ();
-
- return ERR_OK;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- ushort data;
- int l;
- int i, rc;
-
- wp = (addr & ~1); /* get lower word aligned address */
- printf ("Writing %d short data to 0x%p from 0x%p.\n ", cnt, wp, src);
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
- for (; i < 2 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 2) {
- data = *((vu_short *) src);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- printf ("\nDone.\n");
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- }
- for (; i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- return write_word (info, wp, data);
-}
diff --git a/board/armadillo/lowlevel_init.S b/board/armadillo/lowlevel_init.S
deleted file mode 100644
index 6cf642611c..0000000000
--- a/board/armadillo/lowlevel_init.S
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Initialization stuff - taken from hermit
- * (C) Copyright 2005 Rowel Atienza <rowel@diwalabs.com>
- * Armadillo board HT1070
- *
- * 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 <config.h>
-#include <version.h>
-
-
-/* some parameters for the board */
-/* setting up the memory */
-#define SRAM_START 0x60000000
-#define SRAM_SIZE 0x0000c000
-
-.globl lowlevel_init
-lowlevel_init:
- mov r0, #0x70 /* 32-bit code + data, MMU mandatory */
- mcr p15, 0, r0, c1, c0, 0 /* MMU init */
-
- mov r0, #0
- mcr p15, 0, r0, c7, c7, 0 /* flush v3/v4 cache */
- mcr p15, 0, r0, c8, c7, 0 /* flush v4 TLB */
-
- mov r0, #0x80000000 /* I/O base */
-
- mov r1, #0x6 /* CLKCTL_73 in SYSCON3 */
- add r2, r0, #0x2200 /* address of SYSCON3 in r2 */
- str r1, [r2] /* set clock speed to 73.728 MHz */
-
- mov r1, #0x81 /* 64KHz DRAM refresh period */
- str r1, [r0, #0x200] /* set DRFPR */
-
- mov r1, #0x500 /* permanent enable, 16bits wide */
- add r1, r1, #0x42 /* 128Mbit, CAS lat = 2 SDRAM */
- add r2, r0, #0x2300 /* load address in r2 */
- str r1, [r2]
-
- mov r1, #0x100 /* SDRAM refresh rate */
- add r2, r0, #0x2340 /* load address in r2 */
- str r1, [r2]
-
- mov sp, #SRAM_START /* init stack pointer */
- add sp, sp, #SRAM_SIZE
-
- /* everything is fine now */
- mov pc, lr
diff --git a/board/armadillo/u-boot.lds b/board/armadillo/u-boot.lds
deleted file mode 100644
index 64d946c439..0000000000
--- a/board/armadillo/u-boot.lds
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm720t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/at91rm9200dk/Makefile b/board/at91rm9200dk/Makefile
deleted file mode 100644
index 0fcafd9b0f..0000000000
--- a/board/at91rm9200dk/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := at91rm9200dk.o at45.o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/at91rm9200dk/at45.c b/board/at91rm9200dk/at45.c
deleted file mode 100644
index f886fe4820..0000000000
--- a/board/at91rm9200dk/at45.c
+++ /dev/null
@@ -1,621 +0,0 @@
-/* Driver for ATMEL DataFlash support
- * Author : Hamid Ikdoumi (Atmel)
- *
- * 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 <config.h>
-#include <common.h>
-#include <asm/hardware.h>
-
-#ifdef CONFIG_HAS_DATAFLASH
-#include <dataflash.h>
-
-#define AT91C_SPI_CLK 10000000 /* Max Value = 10MHz to be compliant to
-the Continuous Array Read function */
-
-/* AC Characteristics */
-/* DLYBS = tCSS = 250ns min and DLYBCT = tCSH = 250ns */
-#define DATAFLASH_TCSS (0xC << 16)
-#define DATAFLASH_TCHS (0x1 << 24)
-
-#define AT91C_TIMEOUT_WRDY 200000
-#define AT91C_SPI_PCS0_SERIAL_DATAFLASH 0xE /* Chip Select 0 : NPCS0 %1110 */
-#define AT91C_SPI_PCS3_DATAFLASH_CARD 0x7 /* Chip Select 3 : NPCS3 %0111 */
-
-void AT91F_SpiInit(void) {
-
-/*-------------------------------------------------------------------*/
-/* SPI DataFlash Init */
-/*-------------------------------------------------------------------*/
- /* Configure PIOs */
- AT91C_BASE_PIOA->PIO_ASR = AT91C_PA3_NPCS0 | AT91C_PA4_NPCS1 | AT91C_PA1_MOSI | AT91C_PA5_NPCS2 |
- AT91C_PA6_NPCS3 | AT91C_PA0_MISO | AT91C_PA2_SPCK;
- AT91C_BASE_PIOA->PIO_PDR = AT91C_PA3_NPCS0 | AT91C_PA4_NPCS1 | AT91C_PA1_MOSI | AT91C_PA5_NPCS2 |
- AT91C_PA6_NPCS3 | AT91C_PA0_MISO | AT91C_PA2_SPCK;
- /* Enable CLock */
- AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_SPI;
-
- /* Reset the SPI */
- AT91C_BASE_SPI->SPI_CR = AT91C_SPI_SWRST;
-
- /* Configure SPI in Master Mode with No CS selected !!! */
- AT91C_BASE_SPI->SPI_MR = AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | AT91C_SPI_PCS;
-
- /* Configure CS0 and CS3 */
- *(AT91C_SPI_CSR + 0) = AT91C_SPI_CPOL | (AT91C_SPI_DLYBS & DATAFLASH_TCSS) | (AT91C_SPI_DLYBCT &
- DATAFLASH_TCHS) | ((AT91C_MASTER_CLOCK / (2*AT91C_SPI_CLK)) << 8);
-
- *(AT91C_SPI_CSR + 3) = AT91C_SPI_CPOL | (AT91C_SPI_DLYBS & DATAFLASH_TCSS) | (AT91C_SPI_DLYBCT &
- DATAFLASH_TCHS) | ((AT91C_MASTER_CLOCK / (2*AT91C_SPI_CLK)) << 8);
-
-}
-
-void AT91F_SpiEnable(int cs) {
- switch(cs) {
- case 0: /* Configure SPI CS0 for Serial DataFlash AT45DBxx */
- AT91C_BASE_SPI->SPI_MR &= 0xFFF0FFFF;
- AT91C_BASE_SPI->SPI_MR |= ((AT91C_SPI_PCS0_SERIAL_DATAFLASH<<16) & AT91C_SPI_PCS);
- break;
- case 3: /* Configure SPI CS3 for Serial DataFlash Card */
- /* Set up PIO SDC_TYPE to switch on DataFlash Card and not MMC/SDCard */
- AT91C_BASE_PIOB->PIO_PER = AT91C_PIO_PB7; /* Set in PIO mode */
- AT91C_BASE_PIOB->PIO_OER = AT91C_PIO_PB7; /* Configure in output */
- /* Clear Output */
- AT91C_BASE_PIOB->PIO_CODR = AT91C_PIO_PB7;
- /* Configure PCS */
- AT91C_BASE_SPI->SPI_MR &= 0xFFF0FFFF;
- AT91C_BASE_SPI->SPI_MR |= ((AT91C_SPI_PCS3_DATAFLASH_CARD<<16) & AT91C_SPI_PCS);
- break;
- }
-
- /* SPI_Enable */
- AT91C_BASE_SPI->SPI_CR = AT91C_SPI_SPIEN;
-}
-
-/*----------------------------------------------------------------------------*/
-/* \fn AT91F_SpiWrite */
-/* \brief Set the PDC registers for a transfert */
-/*----------------------------------------------------------------------------*/
-unsigned int AT91F_SpiWrite ( AT91PS_DataflashDesc pDesc )
-{
- unsigned int timeout;
-
- pDesc->state = BUSY;
-
- AT91C_BASE_SPI->SPI_PTCR = AT91C_PDC_TXTDIS + AT91C_PDC_RXTDIS;
-
- /* Initialize the Transmit and Receive Pointer */
- AT91C_BASE_SPI->SPI_RPR = (unsigned int)pDesc->rx_cmd_pt ;
- AT91C_BASE_SPI->SPI_TPR = (unsigned int)pDesc->tx_cmd_pt ;
-
- /* Intialize the Transmit and Receive Counters */
- AT91C_BASE_SPI->SPI_RCR = pDesc->rx_cmd_size;
- AT91C_BASE_SPI->SPI_TCR = pDesc->tx_cmd_size;
-
- if ( pDesc->tx_data_size != 0 ) {
- /* Initialize the Next Transmit and Next Receive Pointer */
- AT91C_BASE_SPI->SPI_RNPR = (unsigned int)pDesc->rx_data_pt ;
- AT91C_BASE_SPI->SPI_TNPR = (unsigned int)pDesc->tx_data_pt ;
-
- /* Intialize the Next Transmit and Next Receive Counters */
- AT91C_BASE_SPI->SPI_RNCR = pDesc->rx_data_size ;
- AT91C_BASE_SPI->SPI_TNCR = pDesc->tx_data_size ;
- }
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
- timeout = 0;
-
- AT91C_BASE_SPI->SPI_PTCR = AT91C_PDC_TXTEN + AT91C_PDC_RXTEN;
- while(!(AT91C_BASE_SPI->SPI_SR & AT91C_SPI_RXBUFF) && ((timeout = get_timer_masked() ) < CFG_SPI_WRITE_TOUT));
- AT91C_BASE_SPI->SPI_PTCR = AT91C_PDC_TXTDIS + AT91C_PDC_RXTDIS;
- pDesc->state = IDLE;
-
- if (timeout >= CFG_SPI_WRITE_TOUT){
- printf("Error Timeout\n\r");
- return DATAFLASH_ERROR;
- }
-
- return DATAFLASH_OK;
-}
-
-
-/*----------------------------------------------------------------------*/
-/* \fn AT91F_DataFlashSendCommand */
-/* \brief Generic function to send a command to the dataflash */
-/*----------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashSendCommand(
- AT91PS_DataFlash pDataFlash,
- unsigned char OpCode,
- unsigned int CmdSize,
- unsigned int DataflashAddress)
-{
- unsigned int adr;
-
- if ( (pDataFlash->pDataFlashDesc->state) != IDLE)
- return DATAFLASH_BUSY;
-
- /* process the address to obtain page address and byte address */
- adr = ((DataflashAddress / (pDataFlash->pDevice->pages_size)) << pDataFlash->pDevice->page_offset) + (DataflashAddress % (pDataFlash->pDevice->pages_size));
-
- /* fill the command buffer */
- pDataFlash->pDataFlashDesc->command[0] = OpCode;
- if (pDataFlash->pDevice->pages_number >= 16384) {
- pDataFlash->pDataFlashDesc->command[1] = (unsigned char)((adr & 0x0F000000) >> 24);
- pDataFlash->pDataFlashDesc->command[2] = (unsigned char)((adr & 0x00FF0000) >> 16);
- pDataFlash->pDataFlashDesc->command[3] = (unsigned char)((adr & 0x0000FF00) >> 8);
- pDataFlash->pDataFlashDesc->command[4] = (unsigned char)(adr & 0x000000FF);
- } else {
- pDataFlash->pDataFlashDesc->command[1] = (unsigned char)((adr & 0x00FF0000) >> 16);
- pDataFlash->pDataFlashDesc->command[2] = (unsigned char)((adr & 0x0000FF00) >> 8);
- pDataFlash->pDataFlashDesc->command[3] = (unsigned char)(adr & 0x000000FF) ;
- pDataFlash->pDataFlashDesc->command[4] = 0;
- }
- pDataFlash->pDataFlashDesc->command[5] = 0;
- pDataFlash->pDataFlashDesc->command[6] = 0;
- pDataFlash->pDataFlashDesc->command[7] = 0;
-
- /* Initialize the SpiData structure for the spi write fuction */
- pDataFlash->pDataFlashDesc->tx_cmd_pt = pDataFlash->pDataFlashDesc->command ;
- pDataFlash->pDataFlashDesc->tx_cmd_size = CmdSize ;
- pDataFlash->pDataFlashDesc->rx_cmd_pt = pDataFlash->pDataFlashDesc->command ;
- pDataFlash->pDataFlashDesc->rx_cmd_size = CmdSize ;
-
- /* send the command and read the data */
- return AT91F_SpiWrite (pDataFlash->pDataFlashDesc);
-}
-
-
-/*----------------------------------------------------------------------*/
-/* \fn AT91F_DataFlashGetStatus */
-/* \brief Read the status register of the dataflash */
-/*----------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashGetStatus(AT91PS_DataflashDesc pDesc)
-{
- AT91S_DataFlashStatus status;
-
- /* if a transfert is in progress ==> return 0 */
- if( (pDesc->state) != IDLE)
- return DATAFLASH_BUSY;
-
- /* first send the read status command (D7H) */
- pDesc->command[0] = DB_STATUS;
- pDesc->command[1] = 0;
-
- pDesc->DataFlash_state = GET_STATUS;
- pDesc->tx_data_size = 0 ; /* Transmit the command and receive response */
- pDesc->tx_cmd_pt = pDesc->command ;
- pDesc->rx_cmd_pt = pDesc->command ;
- pDesc->rx_cmd_size = 2 ;
- pDesc->tx_cmd_size = 2 ;
- status = AT91F_SpiWrite (pDesc);
-
- pDesc->DataFlash_state = *( (unsigned char *) (pDesc->rx_cmd_pt) +1);
-
- return status;
-}
-
-
-/*----------------------------------------------------------------------*/
-/* \fn AT91F_DataFlashWaitReady */
-/* \brief wait for dataflash ready (bit7 of the status register == 1) */
-/*----------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashWaitReady(AT91PS_DataflashDesc pDataFlashDesc, unsigned int timeout)
-{
- pDataFlashDesc->DataFlash_state = IDLE;
-
- do {
- AT91F_DataFlashGetStatus(pDataFlashDesc);
- timeout--;
- } while( ((pDataFlashDesc->DataFlash_state & 0x80) != 0x80) && (timeout > 0) );
-
- if((pDataFlashDesc->DataFlash_state & 0x80) != 0x80)
- return DATAFLASH_ERROR;
-
- return DATAFLASH_OK;
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_DataFlashContinuousRead */
-/* Object : Continuous stream Read */
-/* Input Parameters : DataFlash Service */
-/* : <src> = dataflash address */
-/* : <*dataBuffer> = data buffer pointer */
-/* : <sizeToRead> = data buffer size */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashContinuousRead (
- AT91PS_DataFlash pDataFlash,
- int src,
- unsigned char *dataBuffer,
- int sizeToRead )
-{
- AT91S_DataFlashStatus status;
- /* Test the size to read in the device */
- if ( (src + sizeToRead) > (pDataFlash->pDevice->pages_size * (pDataFlash->pDevice->pages_number)))
- return DATAFLASH_MEMORY_OVERFLOW;
-
- pDataFlash->pDataFlashDesc->rx_data_pt = dataBuffer;
- pDataFlash->pDataFlashDesc->rx_data_size = sizeToRead;
- pDataFlash->pDataFlashDesc->tx_data_pt = dataBuffer;
- pDataFlash->pDataFlashDesc->tx_data_size = sizeToRead;
-
- status = AT91F_DataFlashSendCommand (pDataFlash, DB_CONTINUOUS_ARRAY_READ, 8, src);
- /* Send the command to the dataflash */
- return(status);
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_DataFlashPagePgmBuf */
-/* Object : Main memory page program through buffer 1 or buffer 2 */
-/* Input Parameters : DataFlash Service */
-/* : <*src> = Source buffer */
-/* : <dest> = dataflash destination address */
-/* : <SizeToWrite> = data buffer size */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashPagePgmBuf(
- AT91PS_DataFlash pDataFlash,
- unsigned char *src,
- unsigned int dest,
- unsigned int SizeToWrite)
-{
- int cmdsize;
- pDataFlash->pDataFlashDesc->tx_data_pt = src ;
- pDataFlash->pDataFlashDesc->tx_data_size = SizeToWrite ;
- pDataFlash->pDataFlashDesc->rx_data_pt = src;
- pDataFlash->pDataFlashDesc->rx_data_size = SizeToWrite;
-
- cmdsize = 4;
- /* Send the command to the dataflash */
- if (pDataFlash->pDevice->pages_number >= 16384)
- cmdsize = 5;
- return(AT91F_DataFlashSendCommand (pDataFlash, DB_PAGE_PGM_BUF1, cmdsize, dest));
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_MainMemoryToBufferTransfert */
-/* Object : Read a page in the SRAM Buffer 1 or 2 */
-/* Input Parameters : DataFlash Service */
-/* : Page concerned */
-/* : */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_MainMemoryToBufferTransfert(
- AT91PS_DataFlash pDataFlash,
- unsigned char BufferCommand,
- unsigned int page)
-{
- int cmdsize;
- /* Test if the buffer command is legal */
- if ((BufferCommand != DB_PAGE_2_BUF1_TRF) && (BufferCommand != DB_PAGE_2_BUF2_TRF))
- return DATAFLASH_BAD_COMMAND;
-
- /* no data to transmit or receive */
- pDataFlash->pDataFlashDesc->tx_data_size = 0;
- cmdsize = 4;
- if (pDataFlash->pDevice->pages_number >= 16384)
- cmdsize = 5;
- return(AT91F_DataFlashSendCommand (pDataFlash, BufferCommand, cmdsize, page*pDataFlash->pDevice->pages_size));
-}
-
-
-/*----------------------------------------------------------------------------- */
-/* Function Name : AT91F_DataFlashWriteBuffer */
-/* Object : Write data to the internal sram buffer 1 or 2 */
-/* Input Parameters : DataFlash Service */
-/* : <BufferCommand> = command to write buffer1 or buffer2 */
-/* : <*dataBuffer> = data buffer to write */
-/* : <bufferAddress> = address in the internal buffer */
-/* : <SizeToWrite> = data buffer size */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashWriteBuffer (
- AT91PS_DataFlash pDataFlash,
- unsigned char BufferCommand,
- unsigned char *dataBuffer,
- unsigned int bufferAddress,
- int SizeToWrite )
-{
- int cmdsize;
- /* Test if the buffer command is legal */
- if ((BufferCommand != DB_BUF1_WRITE) && (BufferCommand != DB_BUF2_WRITE))
- return DATAFLASH_BAD_COMMAND;
-
- /* buffer address must be lower than page size */
- if (bufferAddress > pDataFlash->pDevice->pages_size)
- return DATAFLASH_BAD_ADDRESS;
-
- if ( (pDataFlash->pDataFlashDesc->state) != IDLE)
- return DATAFLASH_BUSY;
-
- /* Send first Write Command */
- pDataFlash->pDataFlashDesc->command[0] = BufferCommand;
- pDataFlash->pDataFlashDesc->command[1] = 0;
- if (pDataFlash->pDevice->pages_number >= 16384) {
- pDataFlash->pDataFlashDesc->command[2] = 0;
- pDataFlash->pDataFlashDesc->command[3] = (unsigned char)(((unsigned int)(bufferAddress & pDataFlash->pDevice->byte_mask)) >> 8) ;
- pDataFlash->pDataFlashDesc->command[4] = (unsigned char)((unsigned int)bufferAddress & 0x00FF) ;
- cmdsize = 5;
- } else {
- pDataFlash->pDataFlashDesc->command[2] = (unsigned char)(((unsigned int)(bufferAddress & pDataFlash->pDevice->byte_mask)) >> 8) ;
- pDataFlash->pDataFlashDesc->command[3] = (unsigned char)((unsigned int)bufferAddress & 0x00FF) ;
- pDataFlash->pDataFlashDesc->command[4] = 0;
- cmdsize = 4;
- }
-
- pDataFlash->pDataFlashDesc->tx_cmd_pt = pDataFlash->pDataFlashDesc->command ;
- pDataFlash->pDataFlashDesc->tx_cmd_size = cmdsize ;
- pDataFlash->pDataFlashDesc->rx_cmd_pt = pDataFlash->pDataFlashDesc->command ;
- pDataFlash->pDataFlashDesc->rx_cmd_size = cmdsize ;
-
- pDataFlash->pDataFlashDesc->rx_data_pt = dataBuffer ;
- pDataFlash->pDataFlashDesc->tx_data_pt = dataBuffer ;
- pDataFlash->pDataFlashDesc->rx_data_size = SizeToWrite ;
- pDataFlash->pDataFlashDesc->tx_data_size = SizeToWrite ;
-
- return AT91F_SpiWrite(pDataFlash->pDataFlashDesc);
-}
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_PageErase */
-/* Object : Erase a page */
-/* Input Parameters : DataFlash Service */
-/* : Page concerned */
-/* : */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_PageErase(
- AT91PS_DataFlash pDataFlash,
- unsigned int page)
-{
- int cmdsize;
- /* Test if the buffer command is legal */
- /* no data to transmit or receive */
- pDataFlash->pDataFlashDesc->tx_data_size = 0;
-
- cmdsize = 4;
- if (pDataFlash->pDevice->pages_number >= 16384)
- cmdsize = 5;
- return(AT91F_DataFlashSendCommand (pDataFlash, DB_PAGE_ERASE, cmdsize, page*pDataFlash->pDevice->pages_size));
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_BlockErase */
-/* Object : Erase a Block */
-/* Input Parameters : DataFlash Service */
-/* : Page concerned */
-/* : */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_BlockErase(
- AT91PS_DataFlash pDataFlash,
- unsigned int block)
-{
- int cmdsize;
- /* Test if the buffer command is legal */
- /* no data to transmit or receive */
- pDataFlash->pDataFlashDesc->tx_data_size = 0;
- cmdsize = 4;
- if (pDataFlash->pDevice->pages_number >= 16384)
- cmdsize = 5;
- return(AT91F_DataFlashSendCommand (pDataFlash, DB_BLOCK_ERASE,cmdsize, block*8*pDataFlash->pDevice->pages_size));
-}
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_WriteBufferToMain */
-/* Object : Write buffer to the main memory */
-/* Input Parameters : DataFlash Service */
-/* : <BufferCommand> = command to send to buffer1 or buffer2 */
-/* : <dest> = main memory address */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_WriteBufferToMain (
- AT91PS_DataFlash pDataFlash,
- unsigned char BufferCommand,
- unsigned int dest )
-{
- int cmdsize;
- /* Test if the buffer command is correct */
- if ((BufferCommand != DB_BUF1_PAGE_PGM) &&
- (BufferCommand != DB_BUF1_PAGE_ERASE_PGM) &&
- (BufferCommand != DB_BUF2_PAGE_PGM) &&
- (BufferCommand != DB_BUF2_PAGE_ERASE_PGM) )
- return DATAFLASH_BAD_COMMAND;
-
- /* no data to transmit or receive */
- pDataFlash->pDataFlashDesc->tx_data_size = 0;
-
- cmdsize = 4;
- if (pDataFlash->pDevice->pages_number >= 16384)
- cmdsize = 5;
- /* Send the command to the dataflash */
- return(AT91F_DataFlashSendCommand (pDataFlash, BufferCommand, cmdsize, dest));
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_PartialPageWrite */
-/* Object : Erase partielly a page */
-/* Input Parameters : <page> = page number */
-/* : <AdrInpage> = adr to begin the fading */
-/* : <length> = Number of bytes to erase */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_PartialPageWrite (
- AT91PS_DataFlash pDataFlash,
- unsigned char *src,
- unsigned int dest,
- unsigned int size)
-{
- unsigned int page;
- unsigned int AdrInPage;
-
- page = dest / (pDataFlash->pDevice->pages_size);
- AdrInPage = dest % (pDataFlash->pDevice->pages_size);
-
- /* Read the contents of the page in the Sram Buffer */
- AT91F_MainMemoryToBufferTransfert(pDataFlash, DB_PAGE_2_BUF1_TRF, page);
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
- /*Update the SRAM buffer */
- AT91F_DataFlashWriteBuffer(pDataFlash, DB_BUF1_WRITE, src, AdrInPage, size);
-
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
-
- /* Erase page if a 128 Mbits device */
- if (pDataFlash->pDevice->pages_number >= 16384) {
- AT91F_PageErase(pDataFlash, page);
- /* Rewrite the modified Sram Buffer in the main memory */
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
- }
-
- /* Rewrite the modified Sram Buffer in the main memory */
- return(AT91F_WriteBufferToMain(pDataFlash, DB_BUF1_PAGE_ERASE_PGM, (page*pDataFlash->pDevice->pages_size)));
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_DataFlashWrite */
-/* Object : */
-/* Input Parameters : <*src> = Source buffer */
-/* : <dest> = dataflash adress */
-/* : <size> = data buffer size */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashWrite(
- AT91PS_DataFlash pDataFlash,
- unsigned char *src,
- int dest,
- int size )
-{
- unsigned int length;
- unsigned int page;
- unsigned int status;
-
- AT91F_SpiEnable(pDataFlash->pDevice->cs);
-
- if ( (dest + size) > (pDataFlash->pDevice->pages_size * (pDataFlash->pDevice->pages_number)))
- return DATAFLASH_MEMORY_OVERFLOW;
-
- /* If destination does not fit a page start address */
- if ((dest % ((unsigned int)(pDataFlash->pDevice->pages_size))) != 0 ) {
- length = pDataFlash->pDevice->pages_size - (dest % ((unsigned int)(pDataFlash->pDevice->pages_size)));
-
- if (size < length)
- length = size;
-
- if(!AT91F_PartialPageWrite(pDataFlash,src, dest, length))
- return DATAFLASH_ERROR;
-
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
-
- /* Update size, source and destination pointers */
- size -= length;
- dest += length;
- src += length;
- }
-
- while (( size - pDataFlash->pDevice->pages_size ) >= 0 ) {
- /* program dataflash page */
- page = (unsigned int)dest / (pDataFlash->pDevice->pages_size);
-
- status = AT91F_DataFlashWriteBuffer(pDataFlash, DB_BUF1_WRITE, src, 0, pDataFlash->pDevice->pages_size);
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
-
- status = AT91F_PageErase(pDataFlash, page);
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
- if (!status)
- return DATAFLASH_ERROR;
-
- status = AT91F_WriteBufferToMain (pDataFlash, DB_BUF1_PAGE_PGM, dest);
- if(!status)
- return DATAFLASH_ERROR;
-
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
-
- /* Update size, source and destination pointers */
- size -= pDataFlash->pDevice->pages_size ;
- dest += pDataFlash->pDevice->pages_size ;
- src += pDataFlash->pDevice->pages_size ;
- }
-
- /* If still some bytes to read */
- if ( size > 0 ) {
- /* program dataflash page */
- if(!AT91F_PartialPageWrite(pDataFlash, src, dest, size) )
- return DATAFLASH_ERROR;
-
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
- }
- return DATAFLASH_OK;
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_DataFlashRead */
-/* Object : Read a block in dataflash */
-/* Input Parameters : */
-/* Return value : */
-/*------------------------------------------------------------------------------*/
-int AT91F_DataFlashRead(
- AT91PS_DataFlash pDataFlash,
- unsigned long addr,
- unsigned long size,
- char *buffer)
-{
- unsigned long SizeToRead;
-
- AT91F_SpiEnable(pDataFlash->pDevice->cs);
-
- if(AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY) != DATAFLASH_OK)
- return -1;
-
- while (size) {
- SizeToRead = (size < 0x8000)? size:0x8000;
-
- if (AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY) != DATAFLASH_OK)
- return -1;
-
- if (AT91F_DataFlashContinuousRead (pDataFlash, addr, (uchar *)buffer, SizeToRead) != DATAFLASH_OK)
- return -1;
-
- size -= SizeToRead;
- addr += SizeToRead;
- buffer += SizeToRead;
- }
-
- return DATAFLASH_OK;
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_DataflashProbe */
-/* Object : */
-/* Input Parameters : */
-/* Return value : Dataflash status register */
-/*------------------------------------------------------------------------------*/
-int AT91F_DataflashProbe(int cs, AT91PS_DataflashDesc pDesc)
-{
- AT91F_SpiEnable(cs);
- AT91F_DataFlashGetStatus(pDesc);
- return((pDesc->command[1] == 0xFF)? 0: pDesc->command[1] & 0x3C);
-}
-
-#endif
diff --git a/board/at91rm9200dk/at91rm9200dk.c b/board/at91rm9200dk/at91rm9200dk.c
deleted file mode 100644
index 002981a762..0000000000
--- a/board/at91rm9200dk/at91rm9200dk.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-#include <asm/arch/AT91RM9200.h>
-#include <at91rm9200_net.h>
-#include <dm9161.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* Enable Ctrlc */
- console_init_f ();
-
- /* Correct IRDA resistor problem */
- /* Set PA23_TXD in Output */
- ((AT91PS_PIO) AT91C_BASE_PIOA)->PIO_OER = AT91C_PA23_TXD2;
-
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* arch number of AT91RM9200DK-Board */
- gd->bd->bi_arch_number = MACH_TYPE_AT91RM9200;
- /* adress of boot parameters */
- gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE;
- return 0;
-}
-
-#ifdef CONFIG_DRIVER_ETHER
-#if (CONFIG_COMMANDS & CFG_CMD_NET)
-
-/*
- * Name:
- * at91rm9200_GetPhyInterface
- * Description:
- * Initialise the interface functions to the PHY
- * Arguments:
- * None
- * Return value:
- * None
- */
-void at91rm9200_GetPhyInterface(AT91PS_PhyOps p_phyops)
-{
- p_phyops->Init = dm9161_InitPhy;
- p_phyops->IsPhyConnected = dm9161_IsPhyConnected;
- p_phyops->GetLinkSpeed = dm9161_GetLinkSpeed;
- p_phyops->AutoNegotiate = dm9161_AutoNegotiate;
-}
-
-#endif /* CONFIG_COMMANDS & CFG_CMD_NET */
-#endif /* CONFIG_DRIVER_ETHER */
-
-/*
- * Disk On Chip (NAND) Millenium initialization.
- * The NAND lives in the CS2* space
- */
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-extern ulong nand_probe (ulong physadr);
-
-#define AT91_SMARTMEDIA_BASE 0x40000000 /* physical address to access memory on NCS3 */
-void nand_init (void)
-{
- /* Setup Smart Media, fitst enable the address range of CS3 */
- *AT91C_EBI_CSA |= AT91C_EBI_CS3A_SMC_SmartMedia;
- /* set the bus interface characteristics based on
- tDS Data Set up Time 30 - ns
- tDH Data Hold Time 20 - ns
- tALS ALE Set up Time 20 - ns
- 16ns at 60 MHz ~= 3 */
-/*memory mapping structures */
-#define SM_ID_RWH (5 << 28)
-#define SM_RWH (1 << 28)
-#define SM_RWS (0 << 24)
-#define SM_TDF (1 << 8)
-#define SM_NWS (3)
- AT91C_BASE_SMC2->SMC2_CSR[3] = (SM_RWH | SM_RWS |
- AT91C_SMC2_ACSS_STANDARD | AT91C_SMC2_DBW_8 |
- SM_TDF | AT91C_SMC2_WSEN | SM_NWS);
-
- /* enable the SMOE line PC0=SMCE, A21=CLE, A22=ALE */
- *AT91C_PIOC_ASR = AT91C_PC0_BFCK | AT91C_PC1_BFRDY_SMOE |
- AT91C_PC3_BFBAA_SMWE;
- *AT91C_PIOC_PDR = AT91C_PC0_BFCK | AT91C_PC1_BFRDY_SMOE |
- AT91C_PC3_BFBAA_SMWE;
-
- /* Configure PC2 as input (signal READY of the SmartMedia) */
- *AT91C_PIOC_PER = AT91C_PC2_BFAVD; /* enable direct output enable */
- *AT91C_PIOC_ODR = AT91C_PC2_BFAVD; /* disable output */
-
- /* Configure PB1 as input (signal Card Detect of the SmartMedia) */
- *AT91C_PIOB_PER = AT91C_PIO_PB1; /* enable direct output enable */
- *AT91C_PIOB_ODR = AT91C_PIO_PB1; /* disable output */
-
- /* PIOB and PIOC clock enabling */
- *AT91C_PMC_PCER = 1 << AT91C_ID_PIOB;
- *AT91C_PMC_PCER = 1 << AT91C_ID_PIOC;
-
- if (*AT91C_PIOB_PDSR & AT91C_PIO_PB1)
- printf (" No SmartMedia card inserted\n");
-#ifdef DEBUG
- printf (" SmartMedia card inserted\n");
-
- printf ("Probing at 0x%.8x\n", AT91_SMARTMEDIA_BASE);
-#endif
- printf ("%4lu MB\n", nand_probe(AT91_SMARTMEDIA_BASE) >> 20);
-}
-#endif
diff --git a/board/at91rm9200dk/config.mk b/board/at91rm9200dk/config.mk
deleted file mode 100644
index 9ce161e55f..0000000000
--- a/board/at91rm9200dk/config.mk
+++ /dev/null
@@ -1 +0,0 @@
-TEXT_BASE = 0x21f00000
diff --git a/board/at91rm9200dk/flash.c b/board/at91rm9200dk/flash.c
deleted file mode 100644
index 0513d61d73..0000000000
--- a/board/at91rm9200dk/flash.c
+++ /dev/null
@@ -1,502 +0,0 @@
-/*
- * (C) Copyright 2002
- * Lineo, Inc. <www.lineo.com>
- * Bernhard Kuhn <bkuhn@lineo.com>
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@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
- */
-
-#include <common.h>
-
-ulong myflush(void);
-
-
-/* Flash Organization Structure */
-typedef struct OrgDef
-{
- unsigned int sector_number;
- unsigned int sector_size;
-} OrgDef;
-
-
-/* Flash Organizations */
-OrgDef OrgAT49BV16x4[] =
-{
- { 8, 8*1024 }, /* 8 * 8 kBytes sectors */
- { 2, 32*1024 }, /* 2 * 32 kBytes sectors */
- { 30, 64*1024 }, /* 30 * 64 kBytes sectors */
-};
-
-OrgDef OrgAT49BV16x4A[] =
-{
- { 8, 8*1024 }, /* 8 * 8 kBytes sectors */
- { 31, 64*1024 }, /* 31 * 64 kBytes sectors */
-};
-
-OrgDef OrgAT49BV6416[] =
-{
- { 8, 8*1024 }, /* 8 * 8 kBytes sectors */
- { 127, 64*1024 }, /* 127 * 64 kBytes sectors */
-};
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/* AT49BV1614A Codes */
-#define FLASH_CODE1 0xAA
-#define FLASH_CODE2 0x55
-#define ID_IN_CODE 0x90
-#define ID_OUT_CODE 0xF0
-
-
-#define CMD_READ_ARRAY 0x00F0
-#define CMD_UNLOCK1 0x00AA
-#define CMD_UNLOCK2 0x0055
-#define CMD_ERASE_SETUP 0x0080
-#define CMD_ERASE_CONFIRM 0x0030
-#define CMD_PROGRAM 0x00A0
-#define CMD_UNLOCK_BYPASS 0x0020
-#define CMD_SECTOR_UNLOCK 0x0070
-
-#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00005555<<1)))
-#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00002AAA<<1)))
-
-#define BIT_ERASE_DONE 0x0080
-#define BIT_RDY_MASK 0x0080
-#define BIT_PROGRAM_ERROR 0x0020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-/*-----------------------------------------------------------------------
- */
-void flash_identification (flash_info_t * info)
-{
- volatile u16 manuf_code, device_code, add_device_code;
-
- MEM_FLASH_ADDR1 = FLASH_CODE1;
- MEM_FLASH_ADDR2 = FLASH_CODE2;
- MEM_FLASH_ADDR1 = ID_IN_CODE;
-
- manuf_code = *(volatile u16 *) CFG_FLASH_BASE;
- device_code = *(volatile u16 *) (CFG_FLASH_BASE + 2);
- add_device_code = *(volatile u16 *) (CFG_FLASH_BASE + (3 << 1));
-
- MEM_FLASH_ADDR1 = FLASH_CODE1;
- MEM_FLASH_ADDR2 = FLASH_CODE2;
- MEM_FLASH_ADDR1 = ID_OUT_CODE;
-
- /* Vendor type */
- info->flash_id = ATM_MANUFACT & FLASH_VENDMASK;
- printf ("Atmel: ");
-
- if ((device_code & FLASH_TYPEMASK) == (ATM_ID_BV1614 & FLASH_TYPEMASK)) {
-
- if ((add_device_code & FLASH_TYPEMASK) ==
- (ATM_ID_BV1614A & FLASH_TYPEMASK)) {
- info->flash_id |= ATM_ID_BV1614A & FLASH_TYPEMASK;
- printf ("AT49BV1614A (16Mbit)\n");
- } else { /* AT49BV1614 Flash */
- info->flash_id |= ATM_ID_BV1614 & FLASH_TYPEMASK;
- printf ("AT49BV1614 (16Mbit)\n");
- }
-
- } else if ((device_code & FLASH_TYPEMASK) == (ATM_ID_BV6416 & FLASH_TYPEMASK)) {
- info->flash_id |= ATM_ID_BV6416 & FLASH_TYPEMASK;
- printf ("AT49BV6416 (64Mbit)\n");
- }
-}
-
-ushort flash_number_sector(OrgDef *pOrgDef, unsigned int nb_blocks)
-{
- int i, nb_sectors = 0;
-
- for (i=0; i<nb_blocks; i++){
- nb_sectors += pOrgDef[i].sector_number;
- }
-
- return nb_sectors;
-}
-
-void flash_unlock_sector(flash_info_t * info, unsigned int sector)
-{
- volatile u16 *addr = (volatile u16 *) (info->start[sector]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- *addr = CMD_SECTOR_UNLOCK;
-}
-
-
-ulong flash_init (void)
-{
- int i, j, k;
- unsigned int flash_nb_blocks, sector;
- unsigned int start_address;
- OrgDef *pOrgDef;
-
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_identification (&flash_info[i]);
-
- if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
- (ATM_ID_BV1614 & FLASH_TYPEMASK)) {
-
- pOrgDef = OrgAT49BV16x4;
- flash_nb_blocks = sizeof (OrgAT49BV16x4) / sizeof (OrgDef);
- } else if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
- (ATM_ID_BV1614A & FLASH_TYPEMASK)){ /* AT49BV1614A Flash */
-
- pOrgDef = OrgAT49BV16x4A;
- flash_nb_blocks = sizeof (OrgAT49BV16x4A) / sizeof (OrgDef);
- } else if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
- (ATM_ID_BV6416 & FLASH_TYPEMASK)){ /* AT49BV6416 Flash */
-
- pOrgDef = OrgAT49BV6416;
- flash_nb_blocks = sizeof (OrgAT49BV6416) / sizeof (OrgDef);
- } else {
- flash_nb_blocks = 0;
- pOrgDef = OrgAT49BV16x4;
- }
-
- flash_info[i].sector_count = flash_number_sector(pOrgDef, flash_nb_blocks);
- memset (flash_info[i].protect, 0, flash_info[i].sector_count);
-
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic ("configured too many flash banks!\n");
-
- sector = 0;
- start_address = flashbase;
- flash_info[i].size = 0;
-
- for (j = 0; j < flash_nb_blocks; j++) {
- for (k = 0; k < pOrgDef[j].sector_number; k++) {
- flash_info[i].start[sector++] = start_address;
- start_address += pOrgDef[j].sector_size;
- flash_info[i].size += pOrgDef[j].sector_size;
- }
- }
-
- size += flash_info[i].size;
-
- if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
- (ATM_ID_BV6416 & FLASH_TYPEMASK)){ /* AT49BV6416 Flash */
-
- /* Unlock all sectors at reset */
- for (j=0; j<flash_info[i].sector_count; j++){
- flash_unlock_sector(&flash_info[i], j);
- }
- }
- }
-
- /* Protect binary boot image */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + CFG_BOOT_SIZE - 1, &flash_info[0]);
-
- /* Protect environment variables */
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- /* Protect U-Boot gzipped image */
- flash_protect (FLAG_PROTECT_SET,
- CFG_U_BOOT_BASE,
- CFG_U_BOOT_BASE + CFG_U_BOOT_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (ATM_MANUFACT & FLASH_VENDMASK):
- printf ("Atmel: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (ATM_ID_BV1614 & FLASH_TYPEMASK):
- printf ("AT49BV1614 (16Mbit)\n");
- break;
- case (ATM_ID_BV1614A & FLASH_TYPEMASK):
- printf ("AT49BV1614A (16Mbit)\n");
- break;
- case (ATM_ID_BV6416 & FLASH_TYPEMASK):
- printf ("AT49BV6416 (64Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- return;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- ulong result;
- int iflag, cflag, prot, sect;
- int rc = ERR_OK;
- int chip1;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (ATM_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- if (info->protect[sect] == 0) { /* not protected */
- volatile u16 *addr = (volatile u16 *) (info->start[sect]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- chip1 = 0;
-
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- chip1 = TMO;
- break;
- }
-
- if (!chip1 && (result & 0xFFFF) & BIT_ERASE_DONE)
- chip1 = READY;
-
- } while (!chip1);
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- if (chip1 == ERR) {
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (chip1 == TMO) {
- rc = ERR_TIMOUT;
- goto outahere;
- }
-
- printf ("ok.\n");
- } else { /* it was protected */
- printf ("protected!\n");
- }
- }
-
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
-outahere:
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile u16 *addr = (volatile u16 *) dest;
- ulong result;
- int rc = ERR_OK;
- int cflag, iflag;
- int chip1;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait until flash is ready */
- chip1 = 0;
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- chip1 = ERR | TMO;
- break;
- }
- if (!chip1 && ((result & 0x80) == (data & 0x80)))
- chip1 = READY;
-
- } while (!chip1);
-
- *addr = CMD_READ_ARRAY;
-
- if (chip1 == ERR || *addr != data)
- rc = ERR_PROG_ERROR;
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong wp, data;
- int rc;
-
- if (addr & 1) {
- printf ("unaligned destination not supported\n");
- return ERR_ALIGN;
- };
-
- if ((int) src & 1) {
- printf ("unaligned source not supported\n");
- return ERR_ALIGN;
- };
-
- wp = addr;
-
- while (cnt >= 2) {
- data = *((volatile u16 *) src);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 1) {
- data = (*((volatile u8 *) src)) | (*((volatile u8 *) (wp + 1)) <<
- 8);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 1;
- wp += 1;
- cnt -= 1;
- };
-
- return ERR_OK;
-}
diff --git a/board/at91rm9200dk/u-boot.lds b/board/at91rm9200dk/u-boot.lds
deleted file mode 100644
index f4fbf969c3..0000000000
--- a/board/at91rm9200dk/u-boot.lds
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/atc/Makefile b/board/atc/Makefile
deleted file mode 100644
index 4b9cd7b820..0000000000
--- a/board/atc/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ti113x.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/atc/atc.c b/board/atc/atc.c
deleted file mode 100644
index d2c6b3bfcd..0000000000
--- a/board/atc/atc.c
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * (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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <pci.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII COL */
- /* PA30 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII CRS */
- /* PA29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 MII TX_ER */
- /* PA28 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 MII TX_EN */
- /* PA27 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII RX_DV */
- /* PA26 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII RX_ER */
- /* PA25 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII MDIO */
- /* PA24 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII MDC */
- /* PA23 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII MDIO */
- /* PA22 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII MDC */
- /* PA21 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[3] */
- /* PA20 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[2] */
- /* PA19 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[1] */
- /* PA18 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[0] */
- /* PA17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[0] */
- /* PA16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[1] */
- /* PA15 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[2] */
- /* PA14 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[3] */
- /* PA13 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII TXSL1 */
- /* PA12 */ { 1, 0, 0, 1, 0, 1 }, /* FCC2 MII TXSL0 */
- /* PA11 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII TXSL1 */
- /* PA10 */ { 1, 0, 0, 1, 0, 1 }, /* FCC1 MII TXSL0 */
-#if 1
- /* PA9 */ { 0, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PA8 */ { 0, 1, 0, 0, 0, 0 }, /* SMC2 RXD */
-#else
- /* PA9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PA8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC2 RXD */
-#endif
- /* PA7 */ { 0, 0, 0, 0, 0, 0 }, /* PA7 */
- /* PA6 */ { 1, 0, 0, 1, 0, 1 }, /* FCC2 MII PAUSE */
- /* PA5 */ { 1, 0, 0, 1, 0, 1 }, /* FCC1 MII PAUSE */
- /* PA4 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII PWRDN */
- /* PA3 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII PWRDN */
- /* PA2 */ { 0, 0, 0, 0, 0, 0 }, /* PA2 */
- /* PA1 */ { 1, 0, 0, 0, 0, 0 }, /* FCC2 MII MDINT */
- /* PA0 */ { 1, 0, 0, 1, 0, 0 } /* FCC1 MII MDINT */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RX_DV */
- /* PB16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RX_ER */
- /* PB15 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TX_ER */
- /* PB14 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TX_EN */
- /* PB13 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII COL */
- /* PB12 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII CRS */
- /* PB11 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD */
- /* PB10 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD */
- /* PB9 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD */
- /* PB8 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD */
- /* PB7 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD */
- /* PB6 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD */
- /* PB5 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD */
- /* PB4 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* PB3 */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* PB2 */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* PB1 */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* PB0 */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 0, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 0, 0, 0 }, /* PC30 */
- /* PC29 */ { 1, 0, 0, 0, 0, 0 }, /* SCC1 CTS */
- /* PC28 */ { 1, 0, 0, 0, 0, 0 }, /* SCC2 CTS */
- /* PC27 */ { 0, 0, 0, 0, 0, 0 }, /* PC27 */
- /* PC26 */ { 0, 0, 0, 0, 0, 0 }, /* PC26 */
- /* PC25 */ { 0, 0, 0, 0, 0, 0 }, /* PC25 */
- /* PC24 */ { 0, 0, 0, 0, 0, 0 }, /* PC24 */
- /* PC23 */ { 0, 0, 0, 0, 0, 0 }, /* FDC37C78 DACFD */
- /* PC22 */ { 0, 0, 0, 0, 0, 0 }, /* FDC37C78 DNFD */
- /* PC21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RX_CLK */
- /* PC20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII TX_CLK */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_CLK */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII TX_CLK */
- /* PC17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RX_CLK */
- /* PC16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII TX_CLK */
-#if 0
- /* PC15 */ { 0, 0, 0, 0, 0, 0 }, /* PC15 */
-#else
- /* PC15 */ { 1, 1, 0, 1, 0, 0 }, /* PC15 */
-#endif
- /* PC14 */ { 0, 0, 0, 0, 0, 0 }, /* PC14 */
- /* PC13 */ { 0, 0, 0, 0, 0, 0 }, /* PC13 */
- /* PC12 */ { 0, 0, 0, 0, 0, 0 }, /* PC12 */
- /* PC11 */ { 0, 0, 0, 0, 0, 0 }, /* PC11 */
- /* PC10 */ { 0, 0, 0, 0, 0, 0 }, /* PC10 */
- /* PC9 */ { 0, 0, 0, 0, 0, 0 }, /* FC9 */
- /* PC8 */ { 0, 0, 0, 0, 0, 0 }, /* PC8 */
- /* PC7 */ { 0, 0, 0, 0, 0, 0 }, /* PC7 */
- /* PC6 */ { 0, 0, 0, 0, 0, 0 }, /* PC6 */
- /* PC5 */ { 0, 0, 0, 0, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 0, 0, 0 }, /* PC4 */
- /* PC3 */ { 0, 0, 0, 0, 0, 0 }, /* PC3 */
- /* PC2 */ { 0, 0, 0, 0, 0, 0 }, /* PC2 */
- /* PC1 */ { 0, 0, 0, 0, 0, 0 }, /* PC1 */
- /* PC0 */ { 0, 0, 0, 0, 0, 0 }, /* FDC37C78 DRQFD */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 RXD */
- /* PD30 */ { 1, 1, 1, 1, 0, 0 }, /* SCC1 TXD */
- /* PD29 */ { 1, 0, 0, 1, 0, 0 }, /* SCC1 RTS */
- /* PD28 */ { 1, 1, 0, 0, 0, 0 }, /* SCC2 RXD */
- /* PD27 */ { 1, 1, 0, 1, 0, 0 }, /* SCC2 TXD */
- /* PD26 */ { 1, 0, 0, 1, 0, 0 }, /* SCC2 RTS */
- /* PD25 */ { 0, 0, 0, 0, 0, 0 }, /* PD25 */
- /* PD24 */ { 0, 0, 0, 0, 0, 0 }, /* PD24 */
- /* PD23 */ { 0, 0, 0, 0, 0, 0 }, /* PD23 */
- /* PD22 */ { 0, 0, 0, 0, 0, 0 }, /* PD22 */
- /* PD21 */ { 0, 0, 0, 0, 0, 0 }, /* PD21 */
- /* PD20 */ { 0, 0, 0, 0, 0, 0 }, /* PD20 */
- /* PD19 */ { 0, 0, 0, 0, 0, 0 }, /* PD19 */
- /* PD18 */ { 0, 0, 0, 0, 0, 0 }, /* PD18 */
- /* PD17 */ { 0, 0, 0, 0, 0, 0 }, /* PD17 */
- /* PD16 */ { 0, 0, 0, 0, 0, 0 }, /* PD16 */
-#if defined(CONFIG_SOFT_I2C)
- /* PD15 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SDA */
- /* PD14 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#else /* normal I/O port pins */
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#endif
-#endif
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PD8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PD7 */ { 0, 0, 0, 0, 0, 0 }, /* PD7 */
- /* PD6 */ { 0, 0, 0, 0, 0, 0 }, /* PD6 */
- /* PD5 */ { 0, 0, 0, 0, 0, 0 }, /* PD5 */
-#if 0
- /* PD4 */ { 0, 0, 0, 0, 0, 0 }, /* PD4 */
-#else
- /* PD4 */ { 1, 1, 1, 0, 0, 0 }, /* PD4 */
-#endif
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* PD3 */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* PD2 */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* PD1 */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* PD0 */
- }
-};
-
-/*
- * UPMB initialization table
- */
-#define _NOT_USED_ 0xFFFFFFFF
-
-static const uint rtc_table[] =
-{
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0xfffec00, 0xfffac00, 0xfff2d00, 0xfef2800,
- 0xfaf2080, 0xfaf2080, 0xfff2400, 0x1fff6c05, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0xfffec00, 0xfffac00, 0xfff2d00, 0xfef2800,
- 0xfaf2080, 0xfaf2080, 0xfaf2400, 0x1fbf6c05, /* last */
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
- printf ("Board: ATC\n");
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
- ulong orx, volatile uchar * base)
-{
- volatile uchar c = 0xff;
- volatile uint *sdmr_ptr;
- volatile uint *orx_ptr;
- ulong maxsize, size;
- int i;
-
- /* We must be able to test a location outsize the maximum legal size
- * to find out THAT we are outside; but this address still has to be
- * mapped by the controller. That means, that the initial mapping has
- * to be (at least) twice as large as the maximum expected size.
- */
- maxsize = (1 + (~orx | 0x7fff)) / 2;
-
- /* Since CFG_SDRAM_BASE is always 0 (??), we assume that
- * we are configuring CS1 if base != 0
- */
- sdmr_ptr = &memctl->memc_psdmr;
- orx_ptr = &memctl->memc_or2;
-
- *orx_ptr = orx;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- *sdmr_ptr = sdmr | PSDMR_OP_PREA;
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_MRW;
- *(base + CFG_MRS_OFFS) = c; /* setting MR on address lines */
-
- *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *base = c;
-
- size = get_ram_size((long *)base, maxsize);
-
- *orx_ptr = orx | ~(size - 1);
-
- return (size);
-}
-
-int misc_init_r(void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
- upmconfig(UPMA, (uint *)rtc_table, sizeof(rtc_table) / sizeof(uint));
- memctl->memc_mamr = MxMR_RLFx_6X | MxMR_WLFx_6X | MxMR_OP_NORM;
-
- return (0);
-}
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CFG_RAMBOOT
- ulong size8, size9;
-#endif
- long psize;
-
- psize = 8 * 1024 * 1024;
-
- memctl->memc_mptpr = CFG_MPTPR;
- memctl->memc_psrt = CFG_PSRT;
-
-#ifndef CFG_RAMBOOT
- /* 60x SDRAM setup:
- */
- size8 = try_init (memctl, CFG_PSDMR_8COL, CFG_OR2_8COL,
- (uchar *) CFG_SDRAM_BASE);
- size9 = try_init (memctl, CFG_PSDMR_9COL, CFG_OR2_9COL,
- (uchar *) CFG_SDRAM_BASE);
-
- if (size8 < size9) {
- psize = size9;
- printf ("(60x:9COL) ");
- } else {
- psize = try_init (memctl, CFG_PSDMR_8COL, CFG_OR2_8COL,
- (uchar *) CFG_SDRAM_BASE);
- printf ("(60x:8COL) ");
- }
-
-#endif /* CFG_RAMBOOT */
-
- icache_enable ();
-
- return (psize);
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_DOC)
-extern void doc_probe (ulong physadr);
-void doc_init (void)
-{
- doc_probe (CFG_DOC_BASE);
-}
-#endif
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
- pci_mpc8250_init(&hose);
-}
-#endif
diff --git a/board/atc/config.mk b/board/atc/config.mk
deleted file mode 100644
index eee7a60e3f..0000000000
--- a/board/atc/config.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# (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
-#
-
-#
-# ATC boards
-#
-
-# This should be equal to the CFG_FLASH_BASE define in config_atc.h
-# for the "final" configuration, with U-Boot in flash, or the address
-# in RAM where U-Boot is loaded at for debugging.
-#
-
-TEXT_BASE := 0xFF000000
-
-# RAM version
-#TEXT_BASE := 0x100000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/atc/flash.c b/board/atc/flash.c
deleted file mode 100644
index 2ab60e866b..0000000000
--- a/board/atc/flash.c
+++ /dev/null
@@ -1,663 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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 <common.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* NOTE - CONFIG_FLASH_16BIT means the CPU interface is 16-bit, it
- * has nothing to do with the flash chip being 8-bit or 16-bit.
- */
-#ifdef CONFIG_FLASH_16BIT
-typedef unsigned short FLASH_PORT_WIDTH;
-typedef volatile unsigned short FLASH_PORT_WIDTHV;
-#define FLASH_ID_MASK 0xFFFF
-#else
-typedef unsigned long FLASH_PORT_WIDTH;
-typedef volatile unsigned long FLASH_PORT_WIDTHV;
-#define FLASH_ID_MASK 0xFFFFFFFF
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define ORMASK(size) ((-size) & OR_AM_MSK)
-
-#define FLASH_CYCLE1 0x0555
-#define FLASH_CYCLE2 0x02aa
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(FPWV *addr, flash_info_t *info);
-static void flash_reset(flash_info_t *info);
-static int write_word_intel(flash_info_t *info, FPWV *dest, FPW data);
-static int write_word_amd(flash_info_t *info, FPWV *dest, FPW data);
-static void flash_get_offsets(ulong base, flash_info_t *info);
-static flash_info_t *flash_get_info(ulong base);
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- unsigned long size = 0;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i < CFG_MAX_FLASH_BANKS; ++i) {
-#if 0
- ulong flashbase = (i == 0) ? PHYS_FLASH_1 : PHYS_FLASH_2;
-#else
- ulong flashbase = CFG_FLASH_BASE;
-#endif
-
- memset(&flash_info[i], 0, sizeof(flash_info_t));
-
- flash_info[i].size =
- flash_get_size((FPW *)flashbase, &flash_info[i]);
-
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx\n",
- i, flash_info[i].size);
- }
-
- size += flash_info[i].size;
- }
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- flash_get_info(CFG_MONITOR_BASE));
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- flash_get_info(CFG_ENV_ADDR));
-#endif
-
-
- return size ? size : 1;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset(flash_info_t *info)
-{
- FPWV *base = (FPWV *)(info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- *base = (FPW)0x00FF00FF; /* Intel Read Mode */
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
- *base = (FPW)0x00F000F0; /* AMD Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL
- && (info->flash_id & FLASH_BTYPE)) {
- int bootsect_size; /* number of bytes/boot sector */
- int sect_size; /* number of bytes/regular sector */
-
- bootsect_size = 0x00002000 * (sizeof(FPW)/2);
- sect_size = 0x00010000 * (sizeof(FPW)/2);
-
- /* set sector offsets for bottom boot block type */
- for (i = 0; i < 8; ++i) {
- info->start[i] = base + (i * bootsect_size);
- }
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + ((i - 7) * sect_size);
- }
- }
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD
- && (info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U) {
-
- int sect_size; /* number of bytes/sector */
-
- sect_size = 0x00010000 * (sizeof(FPW)/2);
-
- /* set up sector start address table (uniform sector type) */
- for( i = 0; i < info->sector_count; i++ )
- info->start[i] = base + (i * sect_size);
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static flash_info_t *flash_get_info(ulong base)
-{
- int i;
- flash_info_t * info;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i ++) {
- info = & flash_info[i];
- if (info->start[0] <= base && base < info->start[0] + info->size)
- break;
- }
-
- return i == CFG_MAX_FLASH_BANKS ? 0 : info;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar *bootletter;
- char *fmt;
- uchar botbootletter[] = "B";
- uchar topbootletter[] = "T";
- uchar botboottype[] = "bottom boot sector";
- uchar topboottype[] = "top boot sector";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- /* check for top or bottom boot, if it applies */
- if (info->flash_id & FLASH_BTYPE) {
- boottype = botboottype;
- bootletter = botbootletter;
- }
- else {
- boottype = topboottype;
- bootletter = topbootletter;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM640U:
- fmt = "29LV641D (64 Mbit, uniform sectors)\n";
- break;
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- fmt = "28F800C3%s (8 Mbit, %s)\n";
- break;
- case FLASH_INTEL800B:
- case FLASH_INTEL800T:
- fmt = "28F800B3%s (8 Mbit, %s)\n";
- break;
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- fmt = "28F160C3%s (16 Mbit, %s)\n";
- break;
- case FLASH_INTEL160B:
- case FLASH_INTEL160T:
- fmt = "28F160B3%s (16 Mbit, %s)\n";
- break;
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- fmt = "28F320C3%s (32 Mbit, %s)\n";
- break;
- case FLASH_INTEL320B:
- case FLASH_INTEL320T:
- fmt = "28F320B3%s (32 Mbit, %s)\n";
- break;
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- fmt = "28F640C3%s (64 Mbit, %s)\n";
- break;
- case FLASH_INTEL640B:
- case FLASH_INTEL640T:
- fmt = "28F640B3%s (64 Mbit, %s)\n";
- break;
- default:
- fmt = "Unknown Chip Type\n";
- break;
- }
-
- printf (fmt, bootletter, boottype);
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
-
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size (FPWV *addr, flash_info_t *info)
-{
- /* Write auto select command: read Manufacturer ID */
-
- /* Write auto select command sequence and test FLASH answer */
- addr[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE2] = (FPW)0x00550055; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE1] = (FPW)0x00900090; /* selects Intel or AMD */
-
- /* The manufacturer codes are only 1 byte, so just use 1 byte.
- * This works for any bus width and any FLASH device width.
- */
- udelay(100);
- switch (addr[0] & 0xff) {
-
- case (uchar)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case (uchar)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- /* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */
- if (info->flash_id != FLASH_UNKNOWN) switch (addr[1]) {
-
- case (FPW)AMD_ID_LV640U: /* 29LV640 and 29LV641 have same ID */
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- case (FPW)INTEL_ID_28F800C3B:
- info->flash_id += FLASH_28F800C3B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof(FPW)/2);
- break; /* => 1 or 2 MB */
-
- case (FPW)INTEL_ID_28F800B3B:
- info->flash_id += FLASH_INTEL800B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof(FPW)/2);
- break; /* => 1 or 2 MB */
-
- case (FPW)INTEL_ID_28F160C3B:
- info->flash_id += FLASH_28F160C3B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof(FPW)/2);
- break; /* => 2 or 4 MB */
-
- case (FPW)INTEL_ID_28F160B3B:
- info->flash_id += FLASH_INTEL160B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof(FPW)/2);
- break; /* => 2 or 4 MB */
-
- case (FPW)INTEL_ID_28F320C3B:
- info->flash_id += FLASH_28F320C3B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof(FPW)/2);
- break; /* => 4 or 8 MB */
-
- case (FPW)INTEL_ID_28F320B3B:
- info->flash_id += FLASH_INTEL320B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof(FPW)/2);
- break; /* => 4 or 8 MB */
-
- case (FPW)INTEL_ID_28F640C3B:
- info->flash_id += FLASH_28F640C3B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- case (FPW)INTEL_ID_28F640B3B:
- info->flash_id += FLASH_INTEL640B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* => no or unknown flash */
- }
-
- flash_get_offsets((ulong)addr, info);
-
- /* Put FLASH back in read mode */
- flash_reset(info);
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- FPWV *addr;
- int flag, prot, sect;
- int intel = (info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_INTEL800B:
- case FLASH_INTEL160B:
- case FLASH_INTEL320B:
- case FLASH_INTEL640B:
- case FLASH_28F800C3B:
- case FLASH_28F160C3B:
- case FLASH_28F320C3B:
- case FLASH_28F640C3B:
- case FLASH_AM640U:
- break;
- case FLASH_UNKNOWN:
- default:
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- last = get_timer(0);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && rcode == 0; sect++) {
-
- if (info->protect[sect] != 0) /* protected, skip it */
- continue;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr = (FPWV *)(info->start[sect]);
- if (intel) {
- *addr = (FPW)0x00500050; /* clear status register */
- *addr = (FPW)0x00200020; /* erase setup */
- *addr = (FPW)0x00D000D0; /* erase confirm */
- }
- else {
- /* must be AMD style if not Intel */
- FPWV *base; /* first address in bank */
-
- base = (FPWV *)(info->start[0]);
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW)0x00800080; /* erase mode */
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- *addr = (FPW)0x00300030; /* erase sector */
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer(0);
-
- /* wait at least 50us for AMD, 80us for Intel.
- * Let's wait 1 ms.
- */
- udelay (1000);
-
- while ((*addr & (FPW)0x00800080) != (FPW)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
-
- if (intel) {
- /* suspend erase */
- *addr = (FPW)0x00B000B0;
- }
-
- flash_reset(info); /* reset to read mode */
- rcode = 1; /* failed */
- break;
- }
-
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) {/* every second */
- putc ('.');
- last = get_timer(0);
- }
- }
-
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) { /* every second */
- putc ('.');
- last = get_timer(0);
- }
-
- flash_reset(info); /* reset to read mode */
- }
-
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof(data), left -= sizeof(data) - bytes) {
-
- bytes = addr & (sizeof(data) - 1);
- addr &= ~(sizeof(data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits
- */
- for (i = 0; i < sizeof(data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left )
- data += *((uchar *)addr + i);
- else
- data += *src++;
- }
-
- /* write one word to the flash */
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- res = write_word_amd(info, (FPWV *)addr, data);
- break;
- case FLASH_MAN_INTEL:
- res = write_word_intel(info, (FPWV *)addr, data);
- break;
- default:
- /* unknown flash type, error! */
- printf ("missing or unknown FLASH type\n");
- res = 1; /* not really a timeout, but gives error */
- break;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd (flash_info_t *info, FPWV *dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
- FPWV *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
-
- base = (FPWV *)(info->start[0]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW)0x00A000A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- /* data polling for D7 */
- while (res == 0 && (*dest & (FPW)0x00800080) != (data & (FPW)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW)0x00F000F0; /* reset bank */
- res = 1;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for Intel FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_intel (flash_info_t *info, FPWV *dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *dest = (FPW)0x00500050; /* clear status register */
- *dest = (FPW)0x00FF00FF; /* make sure in read mode */
- *dest = (FPW)0x00400040; /* program setup */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- while (res == 0 && (*dest & (FPW)0x00800080) != (FPW)0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW)0x00B000B0; /* Suspend program */
- res = 1;
- }
- }
-
- if (res == 0 && (*dest & (FPW)0x00100010))
- res = 1; /* write failed, time out error is close enough */
-
- *dest = (FPW)0x00500050; /* clear status register */
- *dest = (FPW)0x00FF00FF; /* make sure in read mode */
-
- return (res);
-}
diff --git a/board/atc/ti113x.c b/board/atc/ti113x.c
deleted file mode 100644
index d5e935c400..0000000000
--- a/board/atc/ti113x.c
+++ /dev/null
@@ -1,637 +0,0 @@
-/*
- * (C) Copyright 2003-2005
- * 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
- *
- ********************************************************************
- *
- * Lots of code copied from:
- *
- * i82365.c 1.352 - Linux driver for Intel 82365 and compatible
- * PC Card controllers, and Yenta-compatible PCI-to-CardBus controllers.
- * (C) 1999 David A. Hinds <dahinds@users.sourceforge.net>
- */
-
-#include <common.h>
-
-#ifdef CONFIG_I82365
-
-#include <command.h>
-#include <pci.h>
-#include <pcmcia.h>
-#include <asm/io.h>
-
-#include <pcmcia/ss.h>
-#include <pcmcia/i82365.h>
-#include <pcmcia/yenta.h>
-#include <pcmcia/ti113x.h>
-
-static struct pci_device_id supported[] = {
- {PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1510},
- {0, 0}
-};
-
-#define CYCLE_TIME 120
-
-#ifdef DEBUG
-static void i82365_dump_regions (pci_dev_t dev);
-#endif
-
-typedef struct socket_info_t {
- pci_dev_t dev;
- u_short bcr;
- u_char pci_lat, cb_lat, sub_bus, cache;
- u_int cb_phys;
-
- socket_cap_t cap;
- u_short type;
- u_int flags;
- ti113x_state_t state;
-} socket_info_t;
-
-static socket_info_t socket;
-static socket_state_t state;
-static struct pccard_mem_map mem;
-static struct pccard_io_map io;
-
-/*====================================================================*/
-
-/* Some PCI shortcuts */
-
-static int pci_readb (socket_info_t * s, int r, u_char * v)
-{
- return pci_read_config_byte (s->dev, r, v);
-}
-static int pci_writeb (socket_info_t * s, int r, u_char v)
-{
- return pci_write_config_byte (s->dev, r, v);
-}
-static int pci_readw (socket_info_t * s, int r, u_short * v)
-{
- return pci_read_config_word (s->dev, r, v);
-}
-static int pci_writew (socket_info_t * s, int r, u_short v)
-{
- return pci_write_config_word (s->dev, r, v);
-}
-static int pci_readl (socket_info_t * s, int r, u_int * v)
-{
- return pci_read_config_dword (s->dev, r, v);
-}
-static int pci_writel (socket_info_t * s, int r, u_int v)
-{
- return pci_write_config_dword (s->dev, r, v);
-}
-
-/*====================================================================*/
-
-#define cb_readb(s, r) readb((s)->cb_phys + (r))
-#define cb_readl(s, r) readl((s)->cb_phys + (r))
-#define cb_writeb(s, r, v) writeb(v, (s)->cb_phys + (r))
-#define cb_writel(s, r, v) writel(v, (s)->cb_phys + (r))
-
-static u_char i365_get (socket_info_t * s, u_short reg)
-{
- return cb_readb (s, 0x0800 + reg);
-}
-
-static void i365_set (socket_info_t * s, u_short reg, u_char data)
-{
- cb_writeb (s, 0x0800 + reg, data);
-}
-
-static void i365_bset (socket_info_t * s, u_short reg, u_char mask)
-{
- i365_set (s, reg, i365_get (s, reg) | mask);
-}
-
-static void i365_bclr (socket_info_t * s, u_short reg, u_char mask)
-{
- i365_set (s, reg, i365_get (s, reg) & ~mask);
-}
-
-#if 0 /* not used */
-static void i365_bflip (socket_info_t * s, u_short reg, u_char mask, int b)
-{
- u_char d = i365_get (s, reg);
-
- i365_set (s, reg, (b) ? (d | mask) : (d & ~mask));
-}
-
-static u_short i365_get_pair (socket_info_t * s, u_short reg)
-{
- return (i365_get (s, reg) + (i365_get (s, reg + 1) << 8));
-}
-#endif /* not used */
-
-static void i365_set_pair (socket_info_t * s, u_short reg, u_short data)
-{
- i365_set (s, reg, data & 0xff);
- i365_set (s, reg + 1, data >> 8);
-}
-
-/*======================================================================
-
- Code to save and restore global state information for TI 1130 and
- TI 1131 controllers, and to set and report global configuration
- options.
-
-======================================================================*/
-
-static void ti113x_get_state (socket_info_t * s)
-{
- ti113x_state_t *p = &s->state;
-
- pci_readl (s, TI113X_SYSTEM_CONTROL, &p->sysctl);
- pci_readb (s, TI113X_CARD_CONTROL, &p->cardctl);
- pci_readb (s, TI113X_DEVICE_CONTROL, &p->devctl);
- pci_readb (s, TI1250_DIAGNOSTIC, &p->diag);
- pci_readl (s, TI12XX_IRQMUX, &p->irqmux);
-}
-
-static void ti113x_set_state (socket_info_t * s)
-{
- ti113x_state_t *p = &s->state;
-
- pci_writel (s, TI113X_SYSTEM_CONTROL, p->sysctl);
- pci_writeb (s, TI113X_CARD_CONTROL, p->cardctl);
- pci_writeb (s, TI113X_DEVICE_CONTROL, p->devctl);
- pci_writeb (s, TI1250_MULTIMEDIA_CTL, 0);
- pci_writeb (s, TI1250_DIAGNOSTIC, p->diag);
- pci_writel (s, TI12XX_IRQMUX, p->irqmux);
- i365_set_pair (s, TI113X_IO_OFFSET (0), 0);
- i365_set_pair (s, TI113X_IO_OFFSET (1), 0);
-}
-
-static u_int ti113x_set_opts (socket_info_t * s)
-{
- ti113x_state_t *p = &s->state;
- u_int mask = 0xffff;
-
- p->cardctl &= ~TI113X_CCR_ZVENABLE;
- p->cardctl |= TI113X_CCR_SPKROUTEN;
-
- return mask;
-}
-
-/*======================================================================
-
- Routines to handle common CardBus options
-
-======================================================================*/
-
-/* Default settings for PCI command configuration register */
-#define CMD_DFLT (PCI_COMMAND_IO|PCI_COMMAND_MEMORY| \
- PCI_COMMAND_MASTER|PCI_COMMAND_WAIT)
-
-static void cb_get_state (socket_info_t * s)
-{
- pci_readb (s, PCI_CACHE_LINE_SIZE, &s->cache);
- pci_readb (s, PCI_LATENCY_TIMER, &s->pci_lat);
- pci_readb (s, CB_LATENCY_TIMER, &s->cb_lat);
- pci_readb (s, CB_CARDBUS_BUS, &s->cap.cardbus);
- pci_readb (s, CB_SUBORD_BUS, &s->sub_bus);
- pci_readw (s, CB_BRIDGE_CONTROL, &s->bcr);
-}
-
-static void cb_set_state (socket_info_t * s)
-{
- pci_writel (s, CB_LEGACY_MODE_BASE, 0);
- pci_writel (s, PCI_BASE_ADDRESS_0, s->cb_phys);
- pci_writew (s, PCI_COMMAND, CMD_DFLT);
- pci_writeb (s, PCI_CACHE_LINE_SIZE, s->cache);
- pci_writeb (s, PCI_LATENCY_TIMER, s->pci_lat);
- pci_writeb (s, CB_LATENCY_TIMER, s->cb_lat);
- pci_writeb (s, CB_CARDBUS_BUS, s->cap.cardbus);
- pci_writeb (s, CB_SUBORD_BUS, s->sub_bus);
- pci_writew (s, CB_BRIDGE_CONTROL, s->bcr);
-}
-
-static void cb_set_opts (socket_info_t * s)
-{
- if (s->cache == 0)
- s->cache = 8;
- if (s->pci_lat == 0)
- s->pci_lat = 0xa8;
- if (s->cb_lat == 0)
- s->cb_lat = 0xb0;
-}
-
-/*======================================================================
-
- Power control for Cardbus controllers: used both for 16-bit and
- Cardbus cards.
-
-======================================================================*/
-
-static int cb_set_power (socket_info_t * s, socket_state_t * state)
-{
- u_int reg = 0;
-
- /* restart card voltage detection if it seems appropriate */
- if ((state->Vcc == 0) && (state->Vpp == 0) &&
- !(cb_readl (s, CB_SOCKET_STATE) & CB_SS_VSENSE))
- cb_writel (s, CB_SOCKET_FORCE, CB_SF_CVSTEST);
- switch (state->Vcc) {
- case 0:
- reg = 0;
- break;
- case 33:
- reg = CB_SC_VCC_3V;
- break;
- case 50:
- reg = CB_SC_VCC_5V;
- break;
- default:
- return -1;
- }
- switch (state->Vpp) {
- case 0:
- break;
- case 33:
- reg |= CB_SC_VPP_3V;
- break;
- case 50:
- reg |= CB_SC_VPP_5V;
- break;
- case 120:
- reg |= CB_SC_VPP_12V;
- break;
- default:
- return -1;
- }
- if (reg != cb_readl (s, CB_SOCKET_CONTROL))
- cb_writel (s, CB_SOCKET_CONTROL, reg);
-
- return 0;
-}
-
-/*======================================================================
-
- Generic routines to get and set controller options
-
-======================================================================*/
-
-static void get_bridge_state (socket_info_t * s)
-{
- ti113x_get_state (s);
- cb_get_state (s);
-}
-
-static void set_bridge_state (socket_info_t * s)
-{
- cb_set_state (s);
- i365_set (s, I365_GBLCTL, 0x00);
- i365_set (s, I365_GENCTL, 0x00);
- ti113x_set_state (s);
-}
-
-static void set_bridge_opts (socket_info_t * s)
-{
- ti113x_set_opts (s);
- cb_set_opts (s);
-}
-
-/*====================================================================*/
-#define PD67_EXT_INDEX 0x2e /* Extension index */
-#define PD67_EXT_DATA 0x2f /* Extension data */
-#define PD67_EXD_VS1(s) (0x01 << ((s)<<1))
-
-#define pd67_ext_get(s, r) \
- (i365_set(s, PD67_EXT_INDEX, r), i365_get(s, PD67_EXT_DATA))
-
-static int i365_get_status (socket_info_t * s, u_int * value)
-{
- u_int status;
-
- status = i365_get (s, I365_IDENT);
- status = i365_get (s, I365_STATUS);
- *value = ((status & I365_CS_DETECT) == I365_CS_DETECT) ? SS_DETECT : 0;
- if (i365_get (s, I365_INTCTL) & I365_PC_IOCARD) {
- *value |= (status & I365_CS_STSCHG) ? 0 : SS_STSCHG;
- } else {
- *value |= (status & I365_CS_BVD1) ? 0 : SS_BATDEAD;
- *value |= (status & I365_CS_BVD2) ? 0 : SS_BATWARN;
- }
- *value |= (status & I365_CS_WRPROT) ? SS_WRPROT : 0;
- *value |= (status & I365_CS_READY) ? SS_READY : 0;
- *value |= (status & I365_CS_POWERON) ? SS_POWERON : 0;
-
- status = cb_readl (s, CB_SOCKET_STATE);
- *value |= (status & CB_SS_32BIT) ? SS_CARDBUS : 0;
- *value |= (status & CB_SS_3VCARD) ? SS_3VCARD : 0;
- *value |= (status & CB_SS_XVCARD) ? SS_XVCARD : 0;
- *value |= (status & CB_SS_VSENSE) ? 0 : SS_PENDING;
- /* For now, ignore cards with unsupported voltage keys */
- if (*value & SS_XVCARD)
- *value &= ~(SS_DETECT | SS_3VCARD | SS_XVCARD);
-
- return 0;
-} /* i365_get_status */
-
-static int i365_set_socket (socket_info_t * s, socket_state_t * state)
-{
- u_char reg;
-
- set_bridge_state (s);
-
- /* IO card, RESET flag */
- reg = 0;
- reg |= (state->flags & SS_RESET) ? 0 : I365_PC_RESET;
- reg |= (state->flags & SS_IOCARD) ? I365_PC_IOCARD : 0;
- i365_set (s, I365_INTCTL, reg);
-
- reg = I365_PWR_NORESET;
- if (state->flags & SS_PWR_AUTO)
- reg |= I365_PWR_AUTO;
- if (state->flags & SS_OUTPUT_ENA)
- reg |= I365_PWR_OUT;
-
- cb_set_power (s, state);
- reg |= i365_get (s, I365_POWER) & (I365_VCC_MASK | I365_VPP1_MASK);
-
- if (reg != i365_get (s, I365_POWER))
- i365_set (s, I365_POWER, reg);
-
- return 0;
-} /* i365_set_socket */
-
-/*====================================================================*/
-
-static int i365_set_mem_map (socket_info_t * s, struct pccard_mem_map *mem)
-{
- u_short base, i;
- u_char map;
-
- debug ("i82365: SetMemMap(%d, %#2.2x, %d ns, %#5.5lx-%#5.5lx, %#5.5x)\n",
- mem->map, mem->flags, mem->speed,
- mem->sys_start, mem->sys_stop, mem->card_start);
-
- map = mem->map;
- if ((map > 4) ||
- (mem->card_start > 0x3ffffff) ||
- (mem->sys_start > mem->sys_stop) ||
- (mem->speed > 1000)) {
- return -1;
- }
-
- /* Turn off the window before changing anything */
- if (i365_get (s, I365_ADDRWIN) & I365_ENA_MEM (map))
- i365_bclr (s, I365_ADDRWIN, I365_ENA_MEM (map));
-
- /* Take care of high byte, for PCI controllers */
- i365_set (s, CB_MEM_PAGE (map), mem->sys_start >> 24);
-
- base = I365_MEM (map);
- i = (mem->sys_start >> 12) & 0x0fff;
- if (mem->flags & MAP_16BIT)
- i |= I365_MEM_16BIT;
- if (mem->flags & MAP_0WS)
- i |= I365_MEM_0WS;
- i365_set_pair (s, base + I365_W_START, i);
-
- i = (mem->sys_stop >> 12) & 0x0fff;
- switch (mem->speed / CYCLE_TIME) {
- case 0:
- break;
- case 1:
- i |= I365_MEM_WS0;
- break;
- case 2:
- i |= I365_MEM_WS1;
- break;
- default:
- i |= I365_MEM_WS1 | I365_MEM_WS0;
- break;
- }
- i365_set_pair (s, base + I365_W_STOP, i);
-
- i = ((mem->card_start - mem->sys_start) >> 12) & 0x3fff;
- if (mem->flags & MAP_WRPROT)
- i |= I365_MEM_WRPROT;
- if (mem->flags & MAP_ATTRIB)
- i |= I365_MEM_REG;
- i365_set_pair (s, base + I365_W_OFF, i);
-
- /* Turn on the window if necessary */
- if (mem->flags & MAP_ACTIVE)
- i365_bset (s, I365_ADDRWIN, I365_ENA_MEM (map));
- return 0;
-} /* i365_set_mem_map */
-
-static int i365_set_io_map (socket_info_t * s, struct pccard_io_map *io)
-{
- u_char map, ioctl;
-
- map = io->map;
- /* comment out: comparison is always false due to limited range of data type */
- if ((map > 1) || /* (io->start > 0xffff) || (io->stop > 0xffff) || */
- (io->stop < io->start))
- return -1;
- /* Turn off the window before changing anything */
- if (i365_get (s, I365_ADDRWIN) & I365_ENA_IO (map))
- i365_bclr (s, I365_ADDRWIN, I365_ENA_IO (map));
- i365_set_pair (s, I365_IO (map) + I365_W_START, io->start);
- i365_set_pair (s, I365_IO (map) + I365_W_STOP, io->stop);
- ioctl = i365_get (s, I365_IOCTL) & ~I365_IOCTL_MASK (map);
- if (io->speed)
- ioctl |= I365_IOCTL_WAIT (map);
- if (io->flags & MAP_0WS)
- ioctl |= I365_IOCTL_0WS (map);
- if (io->flags & MAP_16BIT)
- ioctl |= I365_IOCTL_16BIT (map);
- if (io->flags & MAP_AUTOSZ)
- ioctl |= I365_IOCTL_IOCS16 (map);
- i365_set (s, I365_IOCTL, ioctl);
- /* Turn on the window if necessary */
- if (io->flags & MAP_ACTIVE)
- i365_bset (s, I365_ADDRWIN, I365_ENA_IO (map));
- return 0;
-} /* i365_set_io_map */
-
-/*====================================================================*/
-
-int i82365_init (void)
-{
- u_int val;
- int i;
-
- if ((socket.dev = pci_find_devices (supported, 0)) < 0) {
- /* Controller not found */
- return 1;
- }
- debug ("i82365 Device Found!\n");
-
- pci_read_config_dword (socket.dev, PCI_BASE_ADDRESS_0, &socket.cb_phys);
- socket.cb_phys &= ~0xf;
-
- get_bridge_state (&socket);
- set_bridge_opts (&socket);
-
- i = i365_get_status (&socket, &val);
-
- if (val & SS_DETECT) {
- if (val & SS_3VCARD) {
- state.Vcc = state.Vpp = 33;
- puts (" 3.3V card found: ");
- } else if (!(val & SS_XVCARD)) {
- state.Vcc = state.Vpp = 50;
- puts (" 5.0V card found: ");
- } else {
- puts ("i82365: unsupported voltage key\n");
- state.Vcc = state.Vpp = 0;
- }
- } else {
- /* No card inserted */
- puts ("No card\n");
- return 1;
- }
-
- state.flags = SS_IOCARD | SS_OUTPUT_ENA;
- state.csc_mask = 0;
- state.io_irq = 0;
-
- i365_set_socket (&socket, &state);
-
- for (i = 500; i; i--) {
- if ((i365_get (&socket, I365_STATUS) & I365_CS_READY))
- break;
- udelay (1000);
- }
-
- if (i == 0) {
- /* PC Card not ready for data transfer */
- puts ("i82365 PC Card not ready for data transfer\n");
- return 1;
- }
- debug (" PC Card ready for data transfer: ");
-
- mem.map = 0;
- mem.flags = MAP_ATTRIB | MAP_ACTIVE;
- mem.speed = 300;
- mem.sys_start = CFG_PCMCIA_MEM_ADDR;
- mem.sys_stop = CFG_PCMCIA_MEM_ADDR + CFG_PCMCIA_MEM_SIZE - 1;
- mem.card_start = 0;
- i365_set_mem_map (&socket, &mem);
-
- io.map = 0;
- io.flags = MAP_AUTOSZ | MAP_ACTIVE;
- io.speed = 0;
- io.start = 0x0100;
- io.stop = 0x010F;
- i365_set_io_map (&socket, &io);
-
-#ifdef DEBUG
- i82365_dump_regions (socket.dev);
-#endif
-
- return 0;
-}
-
-void i82365_exit (void)
-{
- io.map = 0;
- io.flags = 0;
- io.speed = 0;
- io.start = 0;
- io.stop = 0x1;
-
- i365_set_io_map (&socket, &io);
-
- mem.map = 0;
- mem.flags = 0;
- mem.speed = 0;
- mem.sys_start = 0;
- mem.sys_stop = 0x1000;
- mem.card_start = 0;
-
- i365_set_mem_map (&socket, &mem);
-
- socket.state.sysctl &= 0xFFFF00FF;
-
- state.Vcc = state.Vpp = 0;
-
- i365_set_socket (&socket, &state);
-}
-
-int pcmcia_on (void)
-{
- u_int rc;
-
- debug ("Enable PCMCIA " PCMCIA_SLOT_MSG "\n");
-
- rc = i82365_init();
- if (rc)
- goto exit;
-
- rc = check_ide_device(0);
- if (rc == 0)
- goto exit;
-
- i82365_exit();
-
-exit:
- return rc;
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-int pcmcia_off (void)
-{
- printf ("Disable PCMCIA " PCMCIA_SLOT_MSG "\n");
-
- i82365_exit();
-
- return 0;
-}
-#endif
-
-/*======================================================================
-
- Debug stuff
-
-======================================================================*/
-
-#ifdef DEBUG
-static void i82365_dump_regions (pci_dev_t dev)
-{
- u_int tmp[2];
- u_int *mem = (void *) socket.cb_phys;
- u_char *cis = (void *) CFG_PCMCIA_MEM_ADDR;
- u_char *ide = (void *) (CFG_ATA_BASE_ADDR + CFG_ATA_REG_OFFSET);
-
- pci_read_config_dword (dev, 0x00, tmp + 0);
- pci_read_config_dword (dev, 0x80, tmp + 1);
-
- printf ("PCI CONF: %08X ... %08X\n",
- tmp[0], tmp[1]);
- printf ("PCI MEM: ... %08X ... %08X\n",
- mem[0x8 / 4], mem[0x800 / 4]);
- printf ("CIS: ...%c%c%c%c%c%c%c%c...\n",
- cis[0x38], cis[0x3a], cis[0x3c], cis[0x3e],
- cis[0x40], cis[0x42], cis[0x44], cis[0x48]);
- printf ("CIS CONF: %02X %02X %02X ...\n",
- cis[0x200], cis[0x202], cis[0x204]);
- printf ("IDE: %02X %02X %02X %02X %02X %02X %02X %02X\n",
- ide[0], ide[1], ide[2], ide[3],
- ide[4], ide[5], ide[6], ide[7]);
-}
-#endif /* DEBUG */
-
-#endif /* CONFIG_I82365 */
diff --git a/board/atc/u-boot.lds b/board/atc/u-boot.lds
deleted file mode 100644
index eee83d0993..0000000000
--- a/board/atc/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (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/mpc8260/start.o (.text)
- *(.text)
- common/environment.o(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/atmel/atstk1000/Makefile b/board/atmel/atstk1000/Makefile
deleted file mode 100644
index 155d46ac97..0000000000
--- a/board/atmel/atstk1000/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Copyright (C) 2005-2006 Atmel Corporation
-#
-# 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 := $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/atmel/atstk1000/atstk1000.c b/board/atmel/atstk1000/atstk1000.c
deleted file mode 100644
index 4d737d293a..0000000000
--- a/board/atmel/atstk1000/atstk1000.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2005-2006 Atmel Corporation
- *
- * 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 <common.h>
-
-#include <asm/io.h>
-#include <asm/sdram.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static const struct sdram_info sdram = {
- .phys_addr = CFG_SDRAM_BASE,
- .row_bits = 11,
- .col_bits = 8,
- .bank_bits = 2,
- .cas = 3,
- .twr = 2,
- .trc = 7,
- .trp = 2,
- .trcd = 2,
- .tras = 5,
- .txsr = 5,
-};
-
-void board_init_memories(void)
-{
- gd->sdram_size = sdram_init(&sdram);
-}
-
-void board_init_info(void)
-{
- gd->bd->bi_phy_id[0] = 0x10;
- gd->bd->bi_phy_id[1] = 0x11;
-}
diff --git a/board/atmel/atstk1000/config.mk b/board/atmel/atstk1000/config.mk
deleted file mode 100644
index ec3618d56a..0000000000
--- a/board/atmel/atstk1000/config.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
-PLATFORM_LDFLAGS += --gc-sections
-TEXT_BASE = 0x00000000
-LDSCRIPT = $(obj)board/atmel/atstk1000/u-boot.lds
diff --git a/board/atmel/atstk1000/flash.c b/board/atmel/atstk1000/flash.c
deleted file mode 100644
index 3aebf66ee2..0000000000
--- a/board/atmel/atstk1000/flash.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright (C) 2005-2006 Atmel Corporation
- *
- * 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 <common.h>
-
-#ifdef CONFIG_ATSTK1000_EXT_FLASH
-#include <asm/cacheflush.h>
-#include <asm/io.h>
-#include <asm/sections.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-flash_info_t flash_info[1];
-
-static void __flashprog flash_identify(uint16_t *flash, flash_info_t *info)
-{
- unsigned long flags;
-
- flags = disable_interrupts();
-
- dcache_flush_unlocked();
-
- writew(0xaa, flash + 0x555);
- writew(0x55, flash + 0xaaa);
- writew(0x90, flash + 0x555);
- info->flash_id = readl(flash);
- writew(0xff, flash);
-
- readw(flash);
-
- if (flags)
- enable_interrupts();
-}
-
-unsigned long flash_init(void)
-{
- unsigned long addr;
- unsigned int i;
-
- gd->bd->bi_flashstart = CFG_FLASH_BASE;
- gd->bd->bi_flashsize = CFG_FLASH_SIZE;
- gd->bd->bi_flashoffset = __edata_lma - _text;
-
- flash_info[0].size = CFG_FLASH_SIZE;
- flash_info[0].sector_count = 135;
-
- flash_identify(uncached((void *)CFG_FLASH_BASE), &flash_info[0]);
-
- for (i = 0, addr = 0; i < 8; i++, addr += 0x2000)
- flash_info[0].start[i] = addr;
- for (; i < flash_info[0].sector_count; i++, addr += 0x10000)
- flash_info[0].start[i] = addr;
-
- return CFG_FLASH_SIZE;
-}
-
-void flash_print_info(flash_info_t *info)
-{
- printf("Flash: Vendor ID: 0x%02x, Product ID: 0x%02x\n",
- info->flash_id >> 16, info->flash_id & 0xffff);
- printf("Size: %ld MB in %d sectors\n",
- info->size >> 10, info->sector_count);
-}
-
-int __flashprog flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- unsigned long flags;
- unsigned long start_time;
- uint16_t *fb, *sb;
- unsigned int i;
- int ret;
- uint16_t status;
-
- if ((s_first < 0) || (s_first > s_last)
- || (s_last >= info->sector_count)) {
- puts("Error: first and/or last sector out of range\n");
- return ERR_INVAL;
- }
-
- for (i = s_first; i < s_last; i++)
- if (info->protect[i]) {
- printf("Error: sector %d is protected\n", i);
- return ERR_PROTECTED;
- }
-
- fb = (uint16_t *)uncached(info->start[0]);
-
- dcache_flush_unlocked();
-
- for (i = s_first; (i <= s_last) && !ctrlc(); i++) {
- printf("Erasing sector %3d...", i);
-
- sb = (uint16_t *)uncached(info->start[i]);
-
- flags = disable_interrupts();
-
- start_time = get_timer(0);
-
- /* Unlock sector */
- writew(0xaa, fb + 0x555);
- writew(0x70, sb);
-
- /* Erase sector */
- writew(0xaa, fb + 0x555);
- writew(0x55, fb + 0xaaa);
- writew(0x80, fb + 0x555);
- writew(0xaa, fb + 0x555);
- writew(0x55, fb + 0xaaa);
- writew(0x30, sb);
-
- /* Wait for completion */
- ret = ERR_OK;
- do {
- /* TODO: Timeout */
- status = readw(sb);
- } while ((status != 0xffff) && !(status & 0x28));
-
- writew(0xf0, fb);
-
- /*
- * Make sure the command actually makes it to the bus
- * before we re-enable interrupts.
- */
- readw(fb);
-
- if (flags)
- enable_interrupts();
-
- if (status != 0xffff) {
- printf("Flash erase error at address 0x%p: 0x%02x\n",
- sb, status);
- ret = ERR_PROG_ERROR;
- break;
- }
- }
-
- if (ctrlc())
- printf("User interrupt!\n");
-
- return ERR_OK;
-}
-
-int __flashprog write_buff(flash_info_t *info, uchar *src,
- ulong addr, ulong count)
-{
- unsigned long flags;
- uint16_t *base, *p, *s, *end;
- uint16_t word, status;
- int ret = ERR_OK;
-
- if (addr < info->start[0]
- || (addr + count) > (info->start[0] + info->size)
- || (addr + count) < addr) {
- puts("Error: invalid address range\n");
- return ERR_INVAL;
- }
-
- if (addr & 1 || count & 1 || (unsigned int)src & 1) {
- puts("Error: misaligned source, destination or count\n");
- return ERR_ALIGN;
- }
-
- base = (uint16_t *)uncached(info->start[0]);
- end = (uint16_t *)uncached(addr + count);
-
- flags = disable_interrupts();
-
- dcache_flush_unlocked();
- sync_write_buffer();
-
- for (p = (uint16_t *)uncached(addr), s = (uint16_t *)src;
- p < end && !ctrlc(); p++, s++) {
- word = *s;
-
- writew(0xaa, base + 0x555);
- writew(0x55, base + 0xaaa);
- writew(0xa0, base + 0x555);
- writew(word, p);
-
- sync_write_buffer();
-
- /* Wait for completion */
- do {
- /* TODO: Timeout */
- status = readw(p);
- } while ((status != word) && !(status & 0x28));
-
- writew(0xf0, base);
- readw(base);
-
- if (status != word) {
- printf("Flash write error at address 0x%p: 0x%02x\n",
- p, status);
- ret = ERR_PROG_ERROR;
- break;
- }
- }
-
- if (flags)
- enable_interrupts();
-
- return ret;
-}
-
-#endif /* CONFIG_ATSTK1000_EXT_FLASH */
diff --git a/board/atmel/atstk1000/u-boot.lds b/board/atmel/atstk1000/u-boot.lds
deleted file mode 100644
index ef89ea4dfa..0000000000
--- a/board/atmel/atstk1000/u-boot.lds
+++ /dev/null
@@ -1,77 +0,0 @@
-/* -*- Fundamental -*-
- *
- * Copyright (C) 2005-2006 Atmel Corporation
- *
- * 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_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")
-OUTPUT_ARCH(avr32)
-ENTRY(_start)
-
-SECTIONS
-{
- . = 0;
- _text = .;
- .text : {
- *(.text)
- *(.text.*)
- }
-
- . = ALIGN(32);
- __flashprog_start = .;
- .flashprog : {
- *(.flashprog)
- }
- . = ALIGN(32);
- __flashprog_end = .;
-
- . = ALIGN(8);
- .rodata : {
- *(.rodata)
- *(.rodata.*)
- }
- _etext = .;
-
- __data_lma = ALIGN(8);
- . = 0x24000000;
- _data = .;
- .data : AT(__data_lma) {
- *(.data)
- *(.data.*)
- }
-
- . = ALIGN(4);
- __u_boot_cmd_start = .;
- __u_boot_cmd_lma = __data_lma + (__u_boot_cmd_start - _data);
- .u_boot_cmd : AT(__u_boot_cmd_lma) {
- KEEP(*(.u_boot_cmd))
- }
- __u_boot_cmd_end = .;
-
- . = ALIGN(8);
- _edata = .;
- __edata_lma = __u_boot_cmd_lma + (_edata - __u_boot_cmd_start);
-
- .bss : AT(__edata_lma) {
- *(.bss)
- *(.bss.*)
- }
- . = ALIGN(8);
- _end = .;
-}
diff --git a/board/barco/Makefile b/board/barco/Makefile
deleted file mode 100644
index 5aa02d4a7f..0000000000
--- a/board/barco/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/barco/README b/board/barco/README
deleted file mode 100644
index d255a3d11a..0000000000
--- a/board/barco/README
+++ /dev/null
@@ -1,11 +0,0 @@
-This port of U-Boot is tuned to run on a range of Barco Control Rooms
-Streaming Video Solutions, including:
-
- - Streaming Video Card (SVC)
- - Sample Compress Network (SCN)
-
-For more information, see http://www.barcocontrolrooms.com/
-
-Code and configuration are originally based on the Sandpoint board
-
-Marc Leeman <marc.leeman@barco.com>
diff --git a/board/barco/barco.c b/board/barco/barco.c
deleted file mode 100644
index becbd0abda..0000000000
--- a/board/barco/barco.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/********************************************************************
- *
- * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
- *
- * $Source: /home/services/cvs/firmware/ppc/u-boot-1.1.2/board/barco/barco.c,v $
- * $Revision: 1.4 $
- * $Author: mleeman $
- * $Date: 2005/03/02 16:40:20 $
- *
- * Last ChangeLog Entry
- * $Log: barco.c,v $
- * Revision 1.4 2005/03/02 16:40:20 mleeman
- * remove empty labels (3.4 complains)
- *
- * Revision 1.3 2005/02/21 12:48:58 mleeman
- * update of copyright years (feedback wd)
- *
- * Revision 1.2 2005/02/21 10:10:53 mleeman
- * - split up switch statement to a function call (Linux kernel coding guidelines)
- * ( feedback wd)
- *
- * Revision 1.1 2005/02/14 09:31:07 mleeman
- * renaming of files
- *
- * Revision 1.1 2005/02/14 09:23:46 mleeman
- * - moved 'barcohydra' directory to a more generic barco; since we will be
- * supporting and adding multiple boards
- *
- * Revision 1.3 2005/02/10 13:57:32 mleeman
- * fixed flash corruption: I should exit from the moment I find the correct value
- *
- * Revision 1.2 2005/02/09 12:56:23 mleeman
- * add generic header to track changes in sources
- *
- *
- *******************************************************************/
-
-/*
- * (C) Copyright 2004
- * Marc Leeman <marc.leeman@barco.com>
- *
- * 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 <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-#include <malloc.h>
-#include <command.h>
-
-#include "config.h"
-#include "barco_svc.h"
-
-#define TRY_WORKING (3)
-#define BOOT_DEFAULT (2)
-#define BOOT_WORKING (1)
-
-int checkboard (void)
-{
- /*TODO: Check processor type */
-
- puts ( "Board: Streaming Video Card for Hydra systems "
-#ifdef CONFIG_MPC8240
- "8240"
-#endif
-#ifdef CONFIG_MPC8245
- "8245"
-#endif
- " Unity ##Test not implemented yet##\n");
- return 0;
-}
-
-long int initdram (int board_type)
-{
- long size;
- long new_bank0_end;
- long mear1;
- long emear1;
-
- size = get_ram_size (CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
-
- new_bank0_end = size - 1;
- mear1 = mpc824x_mpc107_getreg (MEAR1);
- emear1 = mpc824x_mpc107_getreg (EMEAR1);
- mear1 = (mear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
- emear1 = (emear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
- mpc824x_mpc107_setreg (MEAR1, mear1);
- mpc824x_mpc107_setreg (EMEAR1, emear1);
-
- return (size);
-}
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_barcohydra_config_table[] = {
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0f, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER } },
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x10, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
- PCI_ENET1_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER } },
- { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_barcohydra_config_table,
-#endif
-};
-
-void pci_init_board (void)
-{
- pci_mpc824x_init (&hose);
-}
-
-int write_flash (char *addr, char value)
-{
- char *adr = (char *)0xFF800000;
- int cnt = 0;
- char status,oldstatus;
-
- *(adr+0x55) = 0xAA; udelay (1);
- *(adr+0xAA) = 0x55; udelay (1);
- *(adr+0x55) = 0xA0; udelay (1);
- *addr = value;
-
- status = *addr;
- do {
- oldstatus = status;
- status = *addr;
-
- if ((oldstatus & 0x40) == (status & 0x40)) {
- return 4;
- }
- cnt++;
- if (cnt > 10000) {
- return 2;
- }
- } while ( (status & 0x20) == 0 );
-
- oldstatus = *addr;
- status = *addr;
-
- if ((oldstatus & 0x40) == (status & 0x40)) {
- return 0;
- } else {
- *(adr+0x55) = 0xF0;
- return 1;
- }
-}
-
-unsigned update_flash (unsigned char *buf)
-{
- switch ((*buf) & 0x3) {
- case TRY_WORKING:
- printf ("found 3 and converted it to 2\n");
- write_flash ((char *)buf, (*buf) & 0xFE);
- *((unsigned char *)0xFF800000) = 0xF0;
- udelay (100);
- printf ("buf [%#010x] %#010x\n", buf, (*buf));
- /* XXX - fall through??? */
- case BOOT_WORKING :
- return BOOT_WORKING;
- }
- return BOOT_DEFAULT;
-}
-
-unsigned scan_flash (void)
-{
- char section[] = "kernel";
- int cfgFileLen = (CFG_FLASH_ERASE_SECTOR_LENGTH >> 1);
- int sectionPtr = 0;
- int foundItem = 0; /* 0: None, 1: section found, 2: "=" found */
- int bufPtr;
- unsigned char *buf;
-
- buf = (unsigned char*)(CFG_FLASH_RANGE_BASE + CFG_FLASH_RANGE_SIZE \
- - CFG_FLASH_ERASE_SECTOR_LENGTH);
- for (bufPtr = 0; bufPtr < cfgFileLen; ++bufPtr) {
- if ((buf[bufPtr]==0xFF) && (*(int*)(buf+bufPtr)==0xFFFFFFFF)) {
- return BOOT_DEFAULT;
- }
- /* This is the scanning loop, we try to find a particular
- * quoted value
- */
- switch (foundItem) {
- case 0:
- if ((section[sectionPtr] == 0)) {
- ++foundItem;
- } else if (buf[bufPtr] == section[sectionPtr]) {
- ++sectionPtr;
- } else {
- sectionPtr = 0;
- }
- break;
- case 1:
- ++foundItem;
- break;
- case 2:
- ++foundItem;
- break;
- case 3:
- default:
- return update_flash (&buf[bufPtr - 1]);
- }
- }
-
- printf ("Failed to read %s\n",section);
- return BOOT_DEFAULT;
-}
-
-TSBootInfo* find_boot_info (void)
-{
- unsigned bootimage = scan_flash ();
- TSBootInfo* info = (TSBootInfo*)malloc (sizeof(TSBootInfo));
-
- switch (bootimage) {
- case TRY_WORKING:
- info->address = CFG_WORKING_KERNEL_ADDRESS;
- break;
- case BOOT_WORKING :
- info->address = CFG_WORKING_KERNEL_ADDRESS;
- break;
- case BOOT_DEFAULT:
- default:
- info->address= CFG_DEFAULT_KERNEL_ADDRESS;
-
- }
- info->size = *((unsigned int *)(info->address ));
-
- return info;
-}
-
-void barcobcd_boot (void)
-{
- TSBootInfo* start;
- char *bootm_args[2];
- char *buf;
- int cnt;
- extern int do_bootm (cmd_tbl_t *, int, int, char *[]);
-
- buf = (char *)(0x00800000);
- /* make certain there are enough chars to print the command line here!
- */
- bootm_args[0] = (char *)malloc (16*sizeof(char));
- bootm_args[1] = (char *)malloc (16*sizeof(char));
-
- start = find_boot_info ();
-
- printf ("Booting kernel at address %#10x with size %#10x\n",
- start->address, start->size);
-
- /* give length of the kernel image to bootm */
- sprintf (bootm_args[0],"%x",start->size);
- /* give address of the kernel image to bootm */
- sprintf (bootm_args[1],"%x",buf);
-
- printf ("flash address: %#10x\n",start->address+8);
- printf ("buf address: %#10x\n",buf);
-
- /* aha, we reserve 8 bytes here... */
- for (cnt = 0; cnt < start->size ; cnt++) {
- buf[cnt] = ((char *)start->address)[cnt+8];
- }
-
- /* initialise RAM memory */
- *((unsigned int *)0xFEC00000) = 0x00141A98;
- do_bootm (NULL,0,2,bootm_args);
-}
-
-int barcobcd_boot_image (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-#if 0
- if (argc > 1) {
- printf ("Usage:\n (%d) %s\n", argc, cmdtp->usage);
- return 1;
- }
-#endif
- barcobcd_boot ();
-
- return 0;
-}
-
-/* Currently, boot_working and boot_default are the same command. This is
- * left in here to see what we'll do in the future */
-
-U_BOOT_CMD (
- try_working, 1, 1, barcobcd_boot_image,
- " try_working - check flash value and boot the appropriate image\n",
- "\n"
- );
-
-U_BOOT_CMD (
- boot_working, 1, 1, barcobcd_boot_image,
- " boot_working - check flash value and boot the appropriate image\n",
- "\n"
- );
-
-U_BOOT_CMD (
- boot_default, 1, 1, barcobcd_boot_image,
- " boot_default - check flash value and boot the appropriate image\n",
- "\n"
- );
-/*
- * We are not using serial communication, so just provide empty functions
- */
-int serial_init (void)
-{
- return 0;
-}
-void serial_setbrg (void)
-{
- return;
-}
-void serial_putc (const char c)
-{
- return;
-}
-void serial_puts (const char *c)
-{
- return;
-}
-void serial_addr (unsigned int i)
-{
- return;
-}
-int serial_getc (void)
-{
- return 0;
-}
-int serial_tstc (void)
-{
- return 0;
-}
-
-unsigned long post_word_load (void)
-{
- return 0l;
-}
-void post_word_store (unsigned long val)
-{
- return;
-}
diff --git a/board/barco/barco_svc.h b/board/barco/barco_svc.h
deleted file mode 100644
index 088f61e74e..0000000000
--- a/board/barco/barco_svc.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/********************************************************************
- *
- * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
- *
- * $Source: /home/services/cvs/firmware/ppc/u-boot-1.1.2/board/barco/barco_svc.h,v $
- * $Revision: 1.2 $
- * $Author: mleeman $
- * $Date: 2005/02/21 12:48:58 $
- *
- * Last ChangeLog Entry
- * $Log: barco_svc.h,v $
- * Revision 1.2 2005/02/21 12:48:58 mleeman
- * update of copyright years (feedback wd)
- *
- * Revision 1.1 2005/02/14 09:31:07 mleeman
- * renaming of files
- *
- * Revision 1.1 2005/02/14 09:23:46 mleeman
- * - moved 'barcohydra' directory to a more generic barco; since we will be
- * supporting and adding multiple boards
- *
- * Revision 1.1 2005/02/08 15:40:19 mleeman
- * modified and added platform files
- *
- * Revision 1.2 2005/01/25 08:05:04 mleeman
- * more cleanup of the code
- *
- * Revision 1.1 2004/07/20 08:49:55 mleeman
- * Working version of the default and nfs kernel booting.
- *
- *
- *******************************************************************/
-
-#ifndef _LOCAL_BARCOHYDRA_H_
-#define _LOCAL_BARCOHYDRA_H_
-
-#include <flash.h>
-#include <asm/io.h>
-
-/* Defines for the barcohydra board */
-#ifndef CFG_FLASH_ERASE_SECTOR_LENGTH
-#define CFG_FLASH_ERASE_SECTOR_LENGTH (0x10000)
-#endif
-
-#ifndef CFG_DEFAULT_KERNEL_ADDRESS
-#define CFG_DEFAULT_KERNEL_ADDRESS (CFG_FLASH_BASE + 0x30000)
-#endif
-
-#ifndef CFG_WORKING_KERNEL_ADDRESS
-#define CFG_WORKING_KERNEL_ADDRESS (0xFFE00000)
-#endif
-
-
-typedef struct SBootInfo {
- unsigned int address;
- unsigned int size;
- unsigned char state;
-}TSBootInfo;
-
-/* barcohydra.c */
-int checkboard(void);
-long int initdram(int board_type);
-void pci_init_board(void);
-void check_flash(void);
-int write_flash(char *addr, char value);
-TSBootInfo* find_boot_info(void);
-void final_boot(void);
-#endif
diff --git a/board/barco/config.mk b/board/barco/config.mk
deleted file mode 100644
index f950c07b01..0000000000
--- a/board/barco/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (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
-#
-
-#
-# Barco Hydra/SCN boards
-#
-
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/barco/early_init.S b/board/barco/early_init.S
deleted file mode 100644
index 07dafb716f..0000000000
--- a/board/barco/early_init.S
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * (C) Copyright 2001
- * Thomas Koeller, tkoeller@gmx.net
- *
- * 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 __ASSEMBLY__
-#define __ASSEMBLY__ 1
-#endif
-
-#include <config.h>
-#include <asm/processor.h>
-#include <mpc824x.h>
-#include <ppc_asm.tmpl>
-
-#if defined(USE_DINK32)
- /* We are running from RAM, so do not clear the MCCR1_MEMGO bit! */
- #define MCCR1VAL ((CFG_ROMNAL << MCCR1_ROMNAL_SHIFT) | (CFG_ROMFAL << MCCR1_ROMFAL_SHIFT) | MCCR1_MEMGO)
-#else
- #define MCCR1VAL (CFG_ROMNAL << MCCR1_ROMNAL_SHIFT) | (CFG_ROMFAL << MCCR1_ROMFAL_SHIFT)
-#endif
-
- .text
-
- /* Values to program into memory controller registers */
-tbl: .long MCCR1, MCCR1VAL
- .long MCCR2, CFG_REFINT << MCCR2_REFINT_SHIFT
- .long MCCR3
- .long (((CFG_BSTOPRE & 0x000000f0) >> 4) << MCCR3_BSTOPRE2TO5_SHIFT) | \
- (CFG_REFREC << MCCR3_REFREC_SHIFT) | \
- (CFG_RDLAT << MCCR3_RDLAT_SHIFT)
- .long MCCR4
- .long (CFG_PRETOACT << MCCR4_PRETOACT_SHIFT) | (CFG_ACTTOPRE << MCCR4_ACTTOPRE_SHIFT) | \
- (CFG_REGISTERD_TYPE_BUFFER << 20) | \
- (((CFG_BSTOPRE & 0x00000300) >> 8) << MCCR4_BSTOPRE0TO1_SHIFT ) | \
- ((CFG_SDMODE_CAS_LAT << 4) | (CFG_SDMODE_WRAP << 3) | \
- (CFG_SDMODE_BURSTLEN) << MCCR4_SDMODE_SHIFT) | \
- (CFG_ACTTORW << MCCR4_ACTTORW_SHIFT) | \
- ((CFG_BSTOPRE & 0x0000000f) << MCCR4_BSTOPRE6TO9_SHIFT )
- .long MSAR1
- .long (((CFG_BANK0_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK1_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK2_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK3_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMSAR1
- .long (((CFG_BANK0_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK1_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK2_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK3_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long MSAR2
- .long (((CFG_BANK4_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK5_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK6_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK7_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMSAR2
- .long (((CFG_BANK4_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK5_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK6_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK7_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long MEAR1
- .long (((CFG_BANK0_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK1_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK2_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK3_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMEAR1
- .long (((CFG_BANK0_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK1_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK2_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK3_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long MEAR2
- .long (((CFG_BANK4_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK5_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK6_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK7_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMEAR2
- .long (((CFG_BANK4_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK5_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK6_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK7_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long 0
-
-
- /*
- * Early CPU initialization. Set up memory controller, so we can access any RAM at all. This
- * must be done in assembly, since we have no stack at this point.
- */
- .global early_init_f
-early_init_f:
- mflr r10
-
- /* basic memory controller configuration */
- lis r3, CONFIG_ADDR_HIGH
- lis r4, CONFIG_DATA_HIGH
- bl lab
-lab: mflr r5
- lwzu r0, tbl - lab(r5)
-loop: lwz r1, 4(r5)
- stwbrx r0, 0, r3
- eieio
- stwbrx r1, 0, r4
- eieio
- lwzu r0, 8(r5)
- cmpli cr0, 0, r0, 0
- bne cr0, loop
-
- /* set bank enable bits */
- lis r0, MBER@h
- ori r0, 0, MBER@l
- li r1, CFG_BANK_ENABLE
- stwbrx r0, 0, r3
- eieio
- stb r1, 0(r4)
- eieio
-
- /* delay loop */
- lis r0, 0x0003
- mtctr r0
-delay: bdnz delay
-
- /* enable memory controller */
- lis r0, MCCR1@h
- ori r0, 0, MCCR1@l
- stwbrx r0, 0, r3
- eieio
- lwbrx r0, 0, r4
- oris r0, 0, MCCR1_MEMGO@h
- stwbrx r0, 0, r4
- eieio
-
- /* set up stack pointer */
- lis r1, CFG_INIT_SP_OFFSET@h
- ori r1, r1, CFG_INIT_SP_OFFSET@l
-
- mtlr r10
- blr
diff --git a/board/barco/flash.c b/board/barco/flash.c
deleted file mode 100644
index 6cb19b7b07..0000000000
--- a/board/barco/flash.c
+++ /dev/null
@@ -1,611 +0,0 @@
-/********************************************************************
- *
- * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
- *
- * $Source: /home/services/cvs/firmware/ppc/u-boot-1.1.2/board/barco/flash.c,v $
- * $Revision: 1.3 $
- * $Author: mleeman $
- * $Date: 2005/02/21 12:48:58 $
- *
- * Last ChangeLog Entry
- * $Log: flash.c,v $
- * Revision 1.3 2005/02/21 12:48:58 mleeman
- * update of copyright years (feedback wd)
- *
- * Revision 1.2 2005/02/21 11:04:04 mleeman
- * remove dead code and Coding style (feedback wd)
- *
- * Revision 1.1 2005/02/14 09:23:46 mleeman
- * - moved 'barcohydra' directory to a more generic barco; since we will be
- * supporting and adding multiple boards
- *
- * Revision 1.2 2005/02/09 12:56:23 mleeman
- * add generic header to track changes in sources
- *
- *
- *******************************************************************/
-
-/*
- * (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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <flash.h>
-
-#define ROM_CS0_START 0xFF800000
-#define ROM_CS1_START 0xFF000000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*flash command address offsets*/
-
-#define ADDR0 (0xAAA)
-#define ADDR1 (0x555)
-#define ADDR3 (0x001)
-
-#define FLASH_WORD_SIZE unsigned char
-
-/*-----------------------------------------------------------------------
- */
-
-static unsigned long flash_id(unsigned char mfct, unsigned char chip) __attribute__ ((const));
-
-typedef struct{
- FLASH_WORD_SIZE extval;
- unsigned short intval;
-} map_entry;
-
-static unsigned long flash_id(unsigned char mfct, unsigned char chip)
-{
- static const map_entry mfct_map[] = {
- {(FLASH_WORD_SIZE) AMD_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_AMD >> 16)},
- {(FLASH_WORD_SIZE) FUJ_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_FUJ >> 16)},
- {(FLASH_WORD_SIZE) STM_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_STM >> 16)},
- {(FLASH_WORD_SIZE) MT_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_MT >> 16)},
- {(FLASH_WORD_SIZE) INTEL_MANUFACT,(unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)},
- {(FLASH_WORD_SIZE) INTEL_ALT_MANU,(unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)}
- };
-
- static const map_entry chip_map[] = {
- {AMD_ID_F040B, FLASH_AM040},
- {AMD_ID_F033C, FLASH_AM033},
- {AMD_ID_F065D, FLASH_AM065},
- {ATM_ID_LV040, FLASH_AT040},
- {(FLASH_WORD_SIZE) STM_ID_x800AB, FLASH_STM800AB}
- };
-
- const map_entry *p;
- unsigned long result = FLASH_UNKNOWN;
-
- /* find chip id */
- for(p = &chip_map[0]; p < &chip_map[sizeof chip_map / sizeof chip_map[0]]; p++){
- if(p->extval == chip){
- result = FLASH_VENDMASK | p->intval;
- break;
- }
- }
-
- /* find vendor id */
- for(p = &mfct_map[0]; p < &mfct_map[sizeof mfct_map / sizeof mfct_map[0]]; p++){
- if(p->extval == mfct){
- result &= ~FLASH_VENDMASK;
- result |= (unsigned long) p->intval << 16;
- break;
- }
- }
-
- return result;
-}
-
-
-unsigned long flash_init(void)
-{
- unsigned long i;
- unsigned char j;
- static const ulong flash_banks[] = CFG_FLASH_BANKS;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++){
- flash_info_t * const pflinfo = &flash_info[i];
- pflinfo->flash_id = FLASH_UNKNOWN;
- pflinfo->size = 0;
- pflinfo->sector_count = 0;
- }
-
- /* Enable writes to Hydra/Argus flash */
- {
- register unsigned int temp;
- CONFIG_READ_WORD(PICR1,temp);
- temp |= PICR1_FLASH_WR_EN;
- CONFIG_WRITE_WORD(PICR1,temp);
- }
-
- for(i = 0; i < sizeof flash_banks / sizeof flash_banks[0]; i++){
- flash_info_t * const pflinfo = &flash_info[i];
- const unsigned long base_address = flash_banks[i];
- volatile FLASH_WORD_SIZE * const flash = (FLASH_WORD_SIZE *) base_address;
-
- /* write autoselect sequence */
- flash[0x5555] = 0xaa;
- flash[0x2aaa] = 0x55;
- flash[0x5555] = 0x90;
- __asm__ __volatile__("sync");
-
- pflinfo->flash_id = flash_id(flash[0x0], flash[0x1]);
-
- switch(pflinfo->flash_id & FLASH_TYPEMASK){
- case FLASH_AM033:
- pflinfo->size = 0x00200000;
- pflinfo->sector_count = 64;
- for(j = 0; j < 64; j++){
- pflinfo->start[j] = base_address + 0x00010000 * j;
- pflinfo->protect[j] = flash[(j << 16) | 0x2];
- }
- break;
- case FLASH_AM065:
- pflinfo->size = 0x00800000;
- pflinfo->sector_count =128;
- for(j = 0; j < 128; j++){
- pflinfo->start[j] = base_address + 0x00010000 * j;
- pflinfo->protect[j] = flash[(j << 16) | 0x2];
- }
- break;
- case FLASH_AT040:
- pflinfo->size = 0x00080000;
- pflinfo->sector_count = 2;
- pflinfo->start[0] = base_address ;
- pflinfo->start[1] = base_address + 0x00004000;
- pflinfo->protect[0] = ((flash[0x02] & 0X01)==0) ? 0X02 : 0X01;
- pflinfo->protect[1] = 0X02;
- break;
- case FLASH_AM040:
- pflinfo->size = 0x00080000;
- pflinfo->sector_count = 8;
- for(j = 0; j < 8; j++){
- pflinfo->start[j] = base_address + 0x00010000 * j;
- pflinfo->protect[j] = flash[(j << 16) | 0x2];
- }
- break;
- case FLASH_STM800AB:
- pflinfo->size = 0x00100000;
- pflinfo->sector_count = 19;
- pflinfo->start[0] = base_address;
- pflinfo->start[1] = base_address + 0x4000;
- pflinfo->start[2] = base_address + 0x6000;
- pflinfo->start[3] = base_address + 0x8000;
- for(j = 1; j < 16; j++){
- pflinfo->start[j+3] = base_address + 0x00010000 * j;
- }
- break;
- }
- /* Protect monitor and environment sectors */
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- /* reset device to read mode */
- flash[0x0000] = 0xf0;
- __asm__ __volatile__("sync");
- }
-
- return flash_info[0].size + flash_info[1].size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t *info)
-{
- static const char unk[] = "Unknown";
- const char *mfct = unk, *type = unk;
- unsigned int i;
-
- if(info->flash_id != FLASH_UNKNOWN){
- switch(info->flash_id & FLASH_VENDMASK){
- case FLASH_MAN_ATM:
- mfct = "Atmel";
- break;
- case FLASH_MAN_AMD:
- mfct = "AMD";
- break;
- case FLASH_MAN_FUJ:
- mfct = "FUJITSU";
- break;
- case FLASH_MAN_STM:
- mfct = "STM";
- break;
- case FLASH_MAN_SST:
- mfct = "SST";
- break;
- case FLASH_MAN_BM:
- mfct = "Bright Microelectonics";
- break;
- case FLASH_MAN_INTEL:
- mfct = "Intel";
- break;
- }
-
- switch(info->flash_id & FLASH_TYPEMASK){
- case FLASH_AT040:
- type = "AT49LV040 (512K * 8, uniform sector size)";
- break;
- case FLASH_AM033:
- type = "AM29F033C (4 Mbit * 8, uniform sector size)";
- break;
- case FLASH_AM040:
- type = "AM29F040B (512K * 8, uniform sector size)";
- break;
- case FLASH_AM065:
- type = "AM29F0465D ( 8 MBit * 8, uniform sector size) or part of AM29F652D( 16 MB)";
- break;
- case FLASH_AM400B:
- type = "AM29LV400B (4 Mbit, bottom boot sect)";
- break;
- case FLASH_AM400T:
- type = "AM29LV400T (4 Mbit, top boot sector)";
- break;
- case FLASH_AM800B:
- type = "AM29LV800B (8 Mbit, bottom boot sect)";
- break;
- case FLASH_AM800T:
- type = "AM29LV800T (8 Mbit, top boot sector)";
- break;
- case FLASH_AM160T:
- type = "AM29LV160T (16 Mbit, top boot sector)";
- break;
- case FLASH_AM320B:
- type = "AM29LV320B (32 Mbit, bottom boot sect)";
- break;
- case FLASH_AM320T:
- type = "AM29LV320T (32 Mbit, top boot sector)";
- break;
- case FLASH_STM800AB:
- type = "M29W800AB (8 Mbit, bottom boot sect)";
- break;
- case FLASH_SST800A:
- type = "SST39LF/VF800 (8 Mbit, uniform sector size)";
- break;
- case FLASH_SST160A:
- type = "SST39LF/VF160 (16 Mbit, uniform sector size)";
- break;
- }
- }
-
- printf(
- "\n Brand: %s Type: %s\n"
- " Size: %lu KB in %d Sectors\n",
- mfct,
- type,
- info->size >> 10,
- info->sector_count
- );
-
- printf (" Sector Start Addresses:");
-
- for (i = 0; i < info->sector_count; i++){
- unsigned long size;
- unsigned int erased;
- unsigned long * flash = (unsigned long *) info->start[i];
-
- /*
- * Check if whole sector is erased
- */
- size =
- (i != (info->sector_count - 1)) ?
- (info->start[i + 1] - info->start[i]) >> 2 :
- (info->start[0] + info->size - info->start[i]) >> 2;
-
- for(
- flash = (unsigned long *) info->start[i], erased = 1;
- (flash != (unsigned long *) info->start[i] + size) && erased;
- flash++
- ){
- erased = *flash == ~0x0UL;
- }
-
- printf(
- "%s %08lX %s %s",
- (i % 5) ? "" : "\n ",
- info->start[i],
- erased ? "E" : " ",
- info->protect[i] ? "RO" : " "
- );
- }
-
- puts("\n");
- return;
-}
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
- unsigned char sh8b;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > (FLASH_MAN_STM | FLASH_AMD_COMP))) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Check the ROM CS */
- if ((info->start[0] >= ROM_CS1_START) && (info->start[0] < ROM_CS0_START)){
- sh8b = 3;
- }
- else{
- sh8b = 0;
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (FLASH_WORD_SIZE *)(info->start[0] + (
- (info->start[sect] - info->start[0]) << sh8b));
- if (info->flash_id & FLASH_MAN_SST){
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
- addr[0] = (FLASH_WORD_SIZE)0x00500050; /* block erase */
- udelay(30000); /* wait 30 ms */
- }
- else
- addr[0] = (FLASH_WORD_SIZE)0x00300030; /* sector erase */
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag){
- enable_interrupts();
- }
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0){
- goto DONE;
- }
-
- start = get_timer (0);
- last = start;
- addr = (FLASH_WORD_SIZE *)(info->start[0] + (
- (info->start[l_sect] - info->start[0]) << sh8b));
- while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)info->start[0];
- volatile FLASH_WORD_SIZE *dest2;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
- ulong start;
- int flag;
- int i;
- unsigned char sh8b;
-
- /* Check the ROM CS */
- if ((info->start[0] >= ROM_CS1_START) && (info->start[0] < ROM_CS0_START)){
- sh8b = 3;
- }
- else{
- sh8b = 0;
- }
-
- dest2 = (FLASH_WORD_SIZE *)(((dest - info->start[0]) << sh8b) +
- info->start[0]);
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest2 & (FLASH_WORD_SIZE)data) != (FLASH_WORD_SIZE)data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- for (i=0; i<4/sizeof(FLASH_WORD_SIZE); i++){
- addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr2[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
- addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00A000A0;
-
- dest2[i << sh8b] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag){
- enable_interrupts();
- }
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i << sh8b] & (FLASH_WORD_SIZE)0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-
-/*----------------------------------------------------------------------- */
diff --git a/board/barco/speed.h b/board/barco/speed.h
deleted file mode 100644
index 46860e840e..0000000000
--- a/board/barco/speed.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/********************************************************************
- *
- * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
- *
- * $Source: /home/services/cvs/firmware/ppc/u-boot-1.1.2/board/barco/speed.h,v $
- * $Revision: 1.2 $
- * $Author: mleeman $
- * $Date: 2005/02/21 12:48:58 $
- *
- * Last ChangeLog Entry
- * $Log: speed.h,v $
- * Revision 1.2 2005/02/21 12:48:58 mleeman
- * update of copyright years (feedback wd)
- *
- * Revision 1.1 2005/02/14 09:23:46 mleeman
- * - moved 'barcohydra' directory to a more generic barco; since we will be
- * supporting and adding multiple boards
- *
- * Revision 1.2 2005/02/09 12:56:23 mleeman
- * add generic header to track changes in sources
- *
- *
- *******************************************************************/
-
-/*
- * (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
- */
-
-/*-----------------------------------------------------------------------
- * Timer value for timer 2, ICLK = 10
- *
- * SPEED_FCOUNT2 = GCLK / (16 * (TIMER_TMR_PS + 1))
- * SPEED_TMR3_PS = (GCLK / (16 * SPEED_FCOUNT3)) - 1
- *
- * SPEED_FCOUNT2 timer 2 counting frequency
- * GCLK CPU clock
- * SPEED_TMR2_PS prescaler
- */
-#define SPEED_TMR2_PS (250 - 1) /* divide by 250 */
-
-/*-----------------------------------------------------------------------
- * Timer value for PIT
- *
- * PIT_TIME = SPEED_PITC / PITRTCLK
- * PITRTCLK = 8192
- */
-#define SPEED_PITC (82 << 16) /* start counting from 82 */
-
-/*
- * The new value for PTA is calculated from
- *
- * PTA = (gclk * Trefresh) / (2 ^ (2 * DFBRG) * PTP * NCS)
- *
- * gclk CPU clock (not bus clock !)
- * Trefresh Refresh cycle * 4 (four word bursts used)
- * DFBRG For normal mode (no clock reduction) always 0
- * PTP Prescaler (already adjusted for no. of banks and 4K / 8K refresh)
- * NCS Number of SDRAM banks (chip selects) on this UPM.
- */
diff --git a/board/barco/u-boot.lds b/board/barco/u-boot.lds
deleted file mode 100644
index 7bf8531ab3..0000000000
--- a/board/barco/u-boot.lds
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/bmw/Makefile b/board/bmw/Makefile
deleted file mode 100644
index ac85cc3506..0000000000
--- a/board/bmw/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2002
-# James F. Dougherty, Broadcom Corporation, jfd@broadcom.com
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ns16550.o serial.o m48t59y.o
-
-SOBJS = early_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/bmw/README b/board/bmw/README
deleted file mode 100644
index 70bc81362f..0000000000
--- a/board/bmw/README
+++ /dev/null
@@ -1,331 +0,0 @@
-Broadcom 95xx BMW CPCI Platform
-
-Overview
-=========
-BMW is an MPC8245 system controller featuring:
-* 3U CPCI Form Factor
-* BCM5703 Gigabit Ethernet
-* M48T59Y NVRAM
-* 16MB DOC
-* DIP Socket for Socketed DOC up to 1GB
-* 64MB SDRAM
-* LCD Display
-* Configurable Jumper options for 66,85, and 100Mhz memory bus
-
-
-BMW System Address Map
-======================
-BMW uses the MPC8245 CHRP Address MAP B found in the MPC8245 Users Manual
-(P.121, Section 3.1 Address Maps, Address Map B). Other I/O devices found
-onboard the processor module are listed briefly below:
-
-0x00000000 - 0x40000000 - 64MB SDRAM SIMM
- (Unregistered PC-100 SDRAM DIMM Module)
-
-0xFF000000 - 0xFF001FFF - M-Systems DiskOnChip (TM) 2000
- TSOP 16MB (MD2211-D16-V3)
-
-0x70000000 - 0x70001FFF - M-Systems DiskOnChip (TM) 2000
- DIP32 (Socketed 16MB - 1GB ) *
- NOTE: this is not populated on all systems.
-
-0x7c000000 - 0x7c000000 - Reset Register
- (Write 0 to reset)
-
-0x7c000001 - 0x7c000001 - System LED
- (Clear Bit 7 to turn on, set to shut off)
-
-0x7c000002 - 0x7c000002 - M48T59 Watchdog IRQ3
- (Clear bit 7 to reset, set to assert IRQ3)
-
-0x7c000003 - 0x7c000003 - M48T59 Write-Protect Register
- (Clear bit 7 to make R/W, set to make R/O)
-
-0x7c002000 - 0x7c002003 - Infineon OSRAM DLR2416 4 Character
- 5x7 Dot Matrix Alphanumeric Display
- (Each byte sets the appropriate character)
-
-0x7c004000 - 0x7c005FF0 - SGS-THOMSON M48T59Y 8K NVRAM/RTC
- NVRAM Memory Region
-
-0x7c005FF0 - 0x7c005FFF - SGS-THOMSON M48T59Y 8K NVRAM/RTC
- Realtime Clock Registers
-
-0xFFF00000 - 0xFFF80000 - 512K PLCC32 BootRom
- (AMD AM29F040, ST 29W040B)
-
-0xFFF00100 - System Reset Vector
-
-
-IO/MMU (BAT) Configuration
-======================
-The following Block-Address-Translation (BAT) configuration
-is recommended to access all I/O devices.
-
-#define CFG_IBAT0L (0x00000000 | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CFG_IBAT0U (0x00000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CFG_IBAT1L (0x70000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CFG_IBAT1U (0x70000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CFG_IBAT2L (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CFG_IBAT2U (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CFG_IBAT3L (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CFG_IBAT3U (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CFG_DBAT0L CFG_IBAT0L
-#define CFG_DBAT0U CFG_IBAT0U
-#define CFG_DBAT1L CFG_IBAT1L
-#define CFG_DBAT1U CFG_IBAT1U
-#define CFG_DBAT2L CFG_IBAT2L
-#define CFG_DBAT2U CFG_IBAT2U
-#define CFG_DBAT3L CFG_IBAT3L
-#define CFG_DBAT3U CFG_IBAT3U
-
-
-Interrupt Mappings
-======================
-BMW uses MPC8245 discrete mode interrupts. With the following
-hardwired mappings:
-
-BCM5701 10/100/1000 Ethernet IRQ1
-CompactPCI Interrupt A IRQ2
-RTC/Watchdog Interrupt IRQ3
-Internal NS16552 UART IRQ4
-
-
-Jumper Settings
-======================
-
-BMW has a jumper (JP600) for selecting 66, 85, or 100Mhz memory bus.
-A jumper (X) is a 0 bit.
-
-Hence 66= 10110
- 85= 11000
- 100= 10000
-
-Jumper Settings for various Speeds
-=======================
-J1 J2 J3 J4 J5
- X X 66Mhz
-=======================
-J1 J2 J3 J4 J5
- X X X 85Mhz
-=======================
-J1 J2 J3 J4 J5
- X X X X 100Mhz
-=======================
-
-Obviously, 100Mhz memory bus is recommended for optimum performance.
-
-
-U-Boot
-===============
-Broadcom BMW board is supported under config_BWM option.
-Supported features:
-
-- NVRAM setenv/getenv (used by Linux Kernel for configuration variables)
-- BCM570x TFTP file transfer support
-- LCD Display Support
-- DOC Support - (underway)
-
-
-U-Boot 1.2.0 (Aug 6 2002 - 17:44:48)
-
-CPU: MPC8245 Revision 16.20 at 264 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: BMW MPC8245/KAHLUA2 - CHRP (MAP B)
-Built: Aug 6 2002 at 17:44:37
-Local Bus at 66 MHz
-DRAM: 64 MB
-FLASH: 4095 MB
-In: serial
-Out: serial
-Err: serial
-DOC: No DiskOnChip found
-Hit any key to stop autoboot: 0
-=>printenv
-bootdelay=5
-baudrate=9600
-clocks_in_mhz=1
-hostname=switch-2
-bootcmd=tftp 100000 vmlinux.img;bootm
-gateway=10.16.64.1
-ethaddr=00:00:10:18:10:10
-nfsroot=172.16.40.111:/boot/root-fs
-filesize=5ec8c
-netmask=255.255.240.0
-ipaddr=172.16.40.114
-serverip=172.16.40.111
-root=/dev/nfs
-stdin=serial
-stdout=serial
-stderr=serial
-
-Environment size: 315/8172 bytes
-=>boot
-
-
-DevTools
-========
-ELDK
- DENX Embedded Linux Development Kit
-
-ROM Emulator
- Grammar Engine PROMICE P1160-90-AI21E (2MBx8bit, 90ns access time)
- Grammar Engine PL32E 32Pin PLCC Emulation cables
- Grammar Engine 3VA8CON (3Volt adapter with Short cables)
- Grammar Engine FPNET PromICE Ethernet Adapters
-
-ICE
- WRS/EST VisionICE-II (PPC8240)
-
-
-=>reset
-
-
-U-Boot 1.2.0 (Aug 6 2002 - 17:44:48)
-
-CPU: MPC8245 Revision 16.20 at 264 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: BMW MPC8245/KAHLUA2 - CHRP (MAP B)
-Built: Aug 6 2002 at 17:44:37
-Local Bus at 66 MHz
-DRAM: 64 MB
-FLASH: 4095 MB
-In: serial
-Out: serial
-Err: serial
-DOC: No DiskOnChip found
-Hit any key to stop autoboot: 0
-
-Broadcom BCM5701 1000Base-T: bus 0, device 13, function 0: MBAR=0x80100000
-BCM570x PCI Memory base address @0x80100000
-eth0:Broadcom BCM5701 1000Base-T: 100 Mbps half duplex link up, flow control OFF
-eth0: Broadcom BCM5701 1000Base-T @0x80100000,node addr 000010181010
-eth0: BCM5700 with Broadcom BCM5701 Integrated Copper transceiver found
-eth0: 32-bit PCI 33MHz, MTU: 1500,Rx Checksum ON
-ARP broadcast 1
-TFTP from server 172.16.40.111; our IP address is 172.16.40.114
-Filename 'vmlinux.img'.
-Load address: 0x100000
-Loading: #################################################################
- ####################################T #############################
- ######################
-done
-Bytes transferred = 777199 (bdbef hex)
-
-eth0:Broadcom BCM5701 1000Base-T,HALT,POWER DOWN,done - offline.
-## Booting image at 00100000 ...
- Image Name: vmlinux.bin.gz
- Created: 2002-08-06 6:30:13 UTC
- Image Type: PowerPC Linux Kernel Image (gzip compressed)
- Data Size: 777135 Bytes = 758 kB = 0 MB
- Load Address: 00000000
- Entry Point: 00000000
- Verifying Checksum ... OK
- Uncompressing Kernel Image ... OK
-Memory BAT mapping: BAT2=64Mb, BAT3=0Mb, residual: 0Mb
-Linux version 2.4.19-rc3 (jfd@que) (gcc version 2.95.3 20010111 (prerelease/franzo/20010111)) #168 Mon Aug 5 23:29:20 PDT 2002
-CPU:82xx: 32 I-Cache Block Size, 32 D-Cache Block Size PVR: 0x810000
-U-Boot Environment: 0xc01b08f0
-IP PNP: 802.3 Ethernet Address=<0:0:10:18:10:10>
-cpu0: MPC8245/KAHLUA-II : BMW Platform : 64MB RAM: BPLD Rev. 6e
-NOTICE: mounting root file system via NFS
-IP PNP: switch-2: eth0 IP 172.16.40.114/255.255.240.0 gateway 10.16.64.1 server 172.16.40.111
-On node 0 totalpages: 16384
-zone(0): 16384 pages.
-zone(1): 0 pages.
-zone(2): 0 pages.
-Kernel command line: console=ttyS0,9600 ip=172.16.40.114:172.16.40.111:10.16.64.1:255.255.240.0:switch-2:eth0 root=/dev/nfs rw nfsroot=172.16.40.111:/boot/root-fs,timeo=200,retrans=500 nfsaddrs=172.16.40.114:172.16.40.111
-root_dev_setup:/dev/nfs or 00:ff
-time_init: decrementer frequency = 16.501145 MHz
-Calibrating delay loop... 175.71 BogoMIPS
-Memory: 62572k available (1396k kernel code, 436k data, 100k init, 0k highmem)
-Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)
-Inode cache hash table entries: 4096 (order: 3, 32768 bytes)
-Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
-Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)
-Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
-POSIX conformance testing by UNIFIX
-PCI: Probing PCI hardware
-Linux NET4.0 for Linux 2.4
-Based upon Swansea University Computer Society NET3.039
-Initializing RT netlink socket
-Starting kswapd
-devfs: v1.12a (20020514) Richard Gooch (rgooch@atnf.csiro.au)
-devfs: devfs_debug: 0x0
-devfs: boot_options: 0x1
-Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
-pty: 256 Unix98 ptys configured
-Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled
-Testing ttyS0 (0xf7f51500, 0xf7f51500)...
-Testing ttyS1 (0xfc004600, 0xfc004600)...
-ttyS00 at 0xf7f51500 (irq = 24) is a ST16650
-ttyS01 at 0xfc004600 (irq = 25) is a 16550A
-Real Time Clock Driver v1.10e
-RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
-loop: loaded (max 8 devices)
-TFFS 5.1.1 Flash disk driver for DiskOnChip
-Copyright (C) 1998,2001 M-Systems Flash Disk Pioneers Ltd.
-DOC device(s) found: 1
-fl_init: registered device at major: 100
-fl_geninit: registered device at major: 100
-Partition check:
- fla: p1
-partition: /dev/fl/0: start_sect: 0,nr_sects: 32000 Fl_blk_size[]: 16000KB
-partition: /dev/fl/1: start_sect: 2,nr_sects: 31998 Fl_blk_size[]: 15999KB
-partition: /dev/fl/2: start_sect: 0,nr_sects: 0 Fl_blk_size[]: 0KB
-partition: /dev/fl/3: start_sect: 0,nr_sects: 0 Fl_blk_size[]: 0KB
-Broadcom Gigabit Ethernet Driver bcm5700 ver. 3.0.7 (07/17/02)
-eth0: Broadcom BCM5701 found at mem bfff0000, IRQ 1, node addr 000010181010
-eth0: Broadcom BCM5701 Integrated Copper transceiver found
-eth0: Scatter-gather ON, 64-bit DMA ON, Tx Checksum ON, Rx Checksum ON, 802.1Q VLAN ON
-bond0 registered without MII link monitoring, in bonding mode.
-rtc: unable to get misc minor
-NET4: Linux TCP/IP 1.0 for NET4.0
-IP Protocols: ICMP, UDP, TCP, IGMP
-IP: routing cache hash table of 512 buckets, 4Kbytes
-TCP: Hash tables configured (established 4096 bind 4096)
-bcm5700: eth0 NIC Link is UP, 100 Mbps half duplex
-IP-Config: Gateway not on directly connected network.
-NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
-802.1Q VLAN Support v1.7 Ben Greear <greearb@candelatech.com>
-All bugs added by David S. Miller <davem@redhat.com>
-Looking up port of RPC 100003/2 on 172.16.40.111
-Looking up port of RPC 100005/1 on 172.16.40.111
-VFS: Mounted root (nfs filesystem).
-Mounted devfs on /dev
-Freeing unused kernel memory: 100k init
-INIT: version 2.78 booting
-Mounting local filesystems...
-not mounted anything
-Setting up symlinks in /dev...done.
-Setting up extra devices in /dev...done.
-Starting devfsd...Started device management daemon for /dev
-INIT: Entering runlevel: 2
-Starting internet superserver: inetd.
-
-
-Welcome to Linux/PPC
-MPC8245/BMW
-
-
-switch-2 login: root
-Password:
-PAM_unix[49]: (login) session opened for user root by LOGIN(uid=0)
-Last login: Thu Nov 25 11:51:14 1920 on console
-
-
-Welcome to Linux/PPC
-MPC8245/BMW
-
-
-login[49]: ROOT LOGIN on `console'
-
-root@switch-2:~# cat /proc/cpuinfo
-cpu : 82xx
-revision : 16.20 (pvr 8081 1014)
-bogomips : 175.71
-vendor : Broadcom
-machine : BMW/MPC8245
-root@switch-2:~#
diff --git a/board/bmw/bmw.c b/board/bmw/bmw.c
deleted file mode 100644
index 485e050b19..0000000000
--- a/board/bmw/bmw.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * (C) Copyright 2002
- * James F. Dougherty, Broadcom Corporation, jfd@broadcom.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
- */
-
-#include <common.h>
-#include <common.h>
-#include <watchdog.h>
-#include <command.h>
-#include <malloc.h>
-#include <devices.h>
-#include <net.h>
-#include <version.h>
-#include <dtt.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <linux/mtd/doc2000.h>
-
-#include "bmw.h"
-#include "m48t59y.h"
-#include <pci.h>
-
-
-int checkboard(void)
-{
- ulong busfreq = get_bus_freq(0);
- char buf[32];
-
- puts ("Board: BMW MPC8245/KAHLUA2 - CHRP (MAP B)\n");
- printf("Built: %s at %s\n", __DATE__ , __TIME__ );
- /* printf("MPLD: Revision %d\n", SYS_REVID_GET()); */
- printf("Local Bus at %s MHz\n", strmhz(buf, busfreq));
- return 0;
-}
-
-long int initdram(int board_type)
-{
- return 64*1024*1024;
-}
-
-
-void
-get_tod(void)
-{
- int year, month, day, hour, minute, second;
-
- m48_tod_get(&year,
- &month,
- &day,
- &hour,
- &minute,
- &second);
-
- printf(" Current date/time: %d/%d/%d %d:%d:%d \n",
- month, day, year, hour, minute, second);
-
-}
-
-/*
- * EPIC, PCI, and I/O devices.
- * Initialize Mousse Platform, probe for PCI devices,
- * Query configuration parameters if not set.
- */
-int misc_init_f (void)
-{
-#if 0
- m48_tod_init(); /* Init SGS M48T59Y TOD/NVRAM */
- printf("RTC: M48T589 TOD/NVRAM (%d) bytes\n",
- TOD_NVRAM_SIZE);
- get_tod();
-#endif
-
- sys_led_msg("BOOT");
- return 0;
-}
-
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-struct pci_controller hose;
-
-void pci_init_board (void)
-{
- pci_mpc824x_init(&hose);
- /* pci_dev_init(0); */
-}
-
-/*
- * Write characters to LCD display.
- * Note that the bytes for the first character is the last address.
- */
-void
-sys_led_msg(char* msg)
-{
- LED_REG(0) = msg[3];
- LED_REG(1) = msg[2];
- LED_REG(2) = msg[1];
- LED_REG(3) = msg[0];
-}
-
-/*
- * Map onboard TSOP-16MB DOC FLASH chip.
- */
-void doc_init (void)
-{
- doc_probe(DOC_BASE_ADDR);
-}
-
-#define NV_ADDR ((volatile unsigned char *) CFG_ENV_ADDR)
-
-/* Read from NVRAM */
-void*
-nvram_read(void *dest, const long src, size_t count)
-{
- int i;
- volatile unsigned char* d = (unsigned char*)dest;
- volatile unsigned char* s = (unsigned char*)src;
-
- for( i = 0; i < count;i++)
- d[i] = s[i];
-
- return dest;
-}
-
-/* Write to NVRAM */
-void
-nvram_write(long dest, const void *src, size_t count)
-{
- int i;
- volatile unsigned char* d = (unsigned char*)dest;
- volatile unsigned char* s = (unsigned char*)src;
-
- SYS_TOD_UNPROTECT();
-
- for( i = 0; i < count;i++)
- d[i] = s[i];
-
- SYS_TOD_PROTECT();
-}
diff --git a/board/bmw/bmw.h b/board/bmw/bmw.h
deleted file mode 100644
index dd97569303..0000000000
--- a/board/bmw/bmw.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * BMW/MPC8245 Board definitions.
- * For more info, see http://www.vooha.com/
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * James Dougherty (jfd@broadcom.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
- */
-
-#ifndef __BMW_H
-#define __BMW_H
-
-/* System addresses */
-
-#define PCI_SPECIAL_BASE 0xfe000000
-#define PCI_SPECIAL_SIZE 0x01000000
-
-#define EUMBBAR_VAL 0x80500000 /* Location of EUMB region */
-#define EUMBSIZE 0x00100000 /* Size of EUMB region */
-
-/* Extended ROM space devices */
-#define DOC_BASE_ADDR 0xff000000 /* Onboard DOC TSOP 16MB */
-#define DOC2_BASE_ADDR 0x70000000 /* DIP32 socket -> 1GB */
-#define XROM_BASE_ADDR 0x7c000000 /* RCS2 (PAL / Satellite IO) */
-#define PLD_REG_BASE XROM_BASE_ADDR
-#define LED_REG_BASE (XROM_BASE_ADDR | 0x2000)
-#define TOD_BASE (XROM_BASE_ADDR | 0x4000)
-#define LED_REG(x) (*(volatile unsigned char *) \
- (LED_REG_BASE + (x)))
-#define XROM_DEV_SIZE 0x00006000
-
-#define ENET_DEV_BASE 0x80000000
-
-#define PLD_REG(off) (*(volatile unsigned char *)\
- (PLD_REG_BASE + (off)))
-
-#define PLD_REVID_B1 0x7f /* Fix me */
-#define PLD_REVID_B2 0x01 /* Fix me */
-
-#define SYS_HARD_RESET() { for (;;) PLD_REG(0) = 0; } /* clr 0x80 bit */
-#define SYS_REVID_GET() ((int) PLD_REG(0) & 0x7f)
-#define SYS_LED_OFF() (PLD_REG(1) |= 0x80)
-#define SYS_LED_ON() (PLD_REG(1) &= ~0x80)
-#define SYS_WATCHDOG_IRQ3() (PLD_REG(2) |= 0x80)
-#define SYS_WATCHDOG_RESET() (PLD_REG(2) &= ~0x80)
-#define SYS_TOD_PROTECT() (PLD_REG(3) |= 0x80)
-#define SYS_TOD_UNPROTECT() (PLD_REG(3) &= ~0x80)
-
-#define TOD_REG_BASE (TOD_BASE | 0x1ff0)
-#define TOD_NVRAM_BASE TOD_BASE
-#define TOD_NVRAM_SIZE 0x1ff0
-#define TOD_NVRAM_LIMIT (TOD_NVRAM_BASE + TOD_NVRAM_SIZE)
-#define RTC(r) (TOD_BASE + r)
-
-/* Onboard BCM570x device */
-#define PCI_ENET_IOADDR 0x80000000
-#define PCI_ENET_MEMADDR 0x80000000
-
-
-#ifndef __ASSEMBLY__
-/* C Function prototypes */
-void sys_led_msg(char* msg);
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* __BMW_H */
diff --git a/board/bmw/config.mk b/board/bmw/config.mk
deleted file mode 100644
index f9915496ad..0000000000
--- a/board/bmw/config.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# (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
-#
-
-#
-# CU824 board
-#
-
-TEXT_BASE = 0xFFF00000
-# NOTE: The flags below affect how the BCM570x driver is compiled
-PLATFORM_CPPFLAGS += -DEMBEDDED -DBIG_ENDIAN_HOST -DINCLUDE_5701_AX_FIX=1\
- -DDBG=0 -DT3_JUMBO_RCV_RCB_ENTRY_COUNT=256\
- -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/bmw/early_init.S b/board/bmw/early_init.S
deleted file mode 100644
index e6400c3088..0000000000
--- a/board/bmw/early_init.S
+++ /dev/null
@@ -1,1170 +0,0 @@
-#include <ppc_asm.tmpl>
-#include <mpc824x.h>
-#include <ppc_defs.h>
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-#define USE_V2_INIT 1 /* Jimmy Blair's initialization. */
-
-
-/*
- * Initialize the MMU using BAT entries and hardwired TLB
- * This obviates the need for any code in cpu_init_f which
- * configures the BAT registers.
-*/
-#define MEMORY_MGMT_MSR_BITS (MSR_DR | MSR_IR) /* Data and Inst Relocate */
- .global iommu_setup
- /* Initialize IO/MMU mappings via BAT method Ch. 7,
- * PPC Programming Reference
- */
-iommu_setup:
-
-/* initialize the BAT registers (SPRs 528 - 543 */
-#define mtibat0u(x) mtspr 528,(x) /* SPR 528 (IBAT0U) */
-#define mtibat0l(x) mtspr 529,(x) /* SPR 529 (IBAT0L) */
-#define mtibat1u(x) mtspr 530,(x) /* SPR 530 (IBAT1U) */
-#define mtibat1l(x) mtspr 531,(x) /* SPR 531 (IBAT1L) */
-#define mtibat2u(x) mtspr 532,(x) /* SPR 532 (IBAT2U) */
-#define mtibat2l(x) mtspr 533,(x) /* SPR 533 (IBAT2L) */
-#define mtibat3u(x) mtspr 534,(x) /* SPR 534 (IBAT3U) */
-#define mtibat3l(x) mtspr 535,(x) /* SPR 535 (IBAT3L) */
-#define mtdbat0u(x) mtspr 536,(x) /* SPR 536 (DBAT0U) */
-#define mtdbat0l(x) mtspr 537,(x) /* SPR 537 (DBAT0L) */
-#define mtdbat1u(x) mtspr 538,(x) /* SPR 538 (DBAT1U) */
-#define mtdbat1l(x) mtspr 539,(x) /* SPR 539 (DBAT1L) */
-#define mtdbat2u(x) mtspr 540,(x) /* SPR 540 (DBAT2U) */
-#define mtdbat2l(x) mtspr 541,(x) /* SPR 541 (DBAT2L) */
-#define mtdbat3u(x) mtspr 542,(x) /* SPR 542 (DBAT3U) */
-#define mtdbat3l(x) mtspr 543,(x) /* SPR 543 (DBAT3L) */
-
-
-/* PowerPC processors do not necessarily initialize the BAT
- registers on power-up or reset. So they are in an unknown
- state. Before programming the BATs for the first time, all
- BAT registers MUST have their Vs and Vp bits cleared in the
- upper BAT half in order to avoid possibly having 2 BATs
- valid and mapping the same memory region.
-
- The reason for this is that, even with address translation
- disabled, multiple BAT hits for an address are treated as
- programming errors and can cause unpredictable results.
-
- It is up to the software to make sure it never has 2 IBAT
- mappings or 2 DBAT mappings that are valid for the same
- addresses. It is not necessary to perform this code
- sequence every time the BATs are programmed, only when
- there is a possibility that there may be overlapping BAT
- entries.
-
- When programming the BATs in non-reset scenarios, even if
- you are sure that your new mapping will not temporarily
- create overlapping regions, it is still a wise idea to
- invalidate a BAT entry by setting its upper BAT register to
- all 0's before programming it. This will avoid having a
- BAT marked valid that is in an unknown or transient state
-*/
-
- addis r5,0,0x0000
- mtibat0u(r5)
- mtibat0l(r5)
- mtibat1u(r5)
- mtibat1l(r5)
- mtibat2u(r5)
- mtibat2l(r5)
- mtibat3u(r5)
- mtibat3l(r5)
- mtdbat0u(r5)
- mtdbat0l(r5)
- mtdbat1u(r5)
- mtdbat1l(r5)
- mtdbat2u(r5)
- mtdbat2l(r5)
- mtdbat3u(r5)
- mtdbat3l(r5)
- isync
-
-/*
- * Set up I/D BAT0
- */
- lis r4, CFG_DBAT0L@h
- ori r4, r4, CFG_DBAT0L@l
- lis r3, CFG_DBAT0U@h
- ori r3, r3, CFG_DBAT0U@l
-
- mtdbat0l(r4)
- isync
- mtdbat0u(r3)
- isync
- sync
-
- lis r4, CFG_IBAT0L@h
- ori r4, r4, CFG_IBAT0L@l
- lis r3, CFG_IBAT0U@h
- ori r3, r3, CFG_IBAT0U@l
-
- isync
- mtibat0l(r4)
- isync
- mtibat0u(r3)
- isync
-
-/*
- * Set up I/D BAT1
- */
- lis r4, CFG_IBAT1L@h
- ori r4, r4, CFG_IBAT1L@l
- lis r3, CFG_IBAT1U@h
- ori r3, r3, CFG_IBAT1U@l
-
- isync
- mtibat1l(r4)
- isync
- mtibat1u(r3)
- isync
- mtdbat1l(r4)
- isync
- mtdbat1u(r3)
- isync
- sync
-
-/*
- * Set up I/D BAT2
- */
- lis r4, CFG_IBAT2L@h
- ori r4, r4, CFG_IBAT2L@l
- lis r3, CFG_IBAT2U@h
- ori r3, r3, CFG_IBAT2U@l
-
- isync
- mtibat2l(r4)
- isync
- mtibat2u(r3)
- isync
- mtdbat2l(r4)
- isync
- mtdbat2u(r3)
- isync
- sync
-
-/*
- * Setup I/D BAT3
- */
- lis r4, CFG_IBAT3L@h
- ori r4, r4, CFG_IBAT3L@l
- lis r3, CFG_IBAT3U@h
- ori r3, r3, CFG_IBAT3U@l
-
- isync
- mtibat3l(r4)
- isync
- mtibat3u(r3)
- isync
- mtdbat3l(r4)
- isync
- mtdbat3u(r3)
- isync
- sync
-
-
-/*
- * Invalidate all 64 TLB's
- */
- lis r3, 0
- mtctr r3
- lis r5, 4
-
-tlblp:
- tlbie r3
- sync
- addi r3, r3, 0x1000
- cmplw r3, r5
- blt tlblp
-
- sync
-
-/*
- * Enable Data Translation
- */
- lis r4, MEMORY_MGMT_MSR_BITS@h
- ori r4, r4, MEMORY_MGMT_MSR_BITS@l
- mfmsr r3
- or r3, r4, r3
- mtmsr r3
- isync
- sync
-
- blr
-
-
-#ifdef USE_V2_INIT
-/* #define USER_I_CACHE_ENABLE 1*/ /* Fast rom boots */
-/* Macro for hiadjust and lo */
-#define HIADJ(arg) arg@ha
-#define HI(arg) arg@h
-#define LO(arg) arg@l
-
-#undef LOADPTR
-#define LOADPTR(reg,const32) \
- addis reg,r0,HIADJ(const32); addi reg,reg,LO(const32)
-
-.globl early_init_f
-
-early_init_f:
-/* MPC8245/BMW CPCI System Init
- * Jimmy Blair, Broadcom Corp, 2002.
- */
- mflr r11
- /* Zero-out registers */
-
- addis r0,r0,0
- mtspr SPRG0,r0
- mtspr SPRG1,r0
- mtspr SPRG2,r0
- mtspr SPRG3,r0
-
- /* Set MPU/MSR to a known state. Turn on FP */
-
- LOADPTR (r3, MSR_FP)
- sync
- mtmsr r3
- isync
-
- /* Init the floating point control/status register */
-
- mtfsfi 7,0x0
- mtfsfi 6,0x0
- mtfsfi 5,0x0
- mtfsfi 4,0x0
- mtfsfi 3,0x0
- mtfsfi 2,0x0
- mtfsfi 1,0x0
- mtfsfi 0,0x0
- isync
-
- /* Set MPU/MSR to a known state. Turn off FP */
-
-#if 1 /* Turn off floating point (remove to keep FP on) */
- andi. r3, r3, 0
- sync
- mtmsr r3
- isync
-#endif
-
- /* Init the Segment registers */
-
- andi. r3, r3, 0
- isync
- mtsr 0,r3
- isync
- mtsr 1,r3
- isync
- mtsr 2,r3
- isync
- mtsr 3,r3
- isync
- mtsr 4,r3
- isync
- mtsr 5,r3
- isync
- mtsr 6,r3
- isync
- mtsr 7,r3
- isync
- mtsr 8,r3
- isync
- mtsr 9,r3
- isync
- mtsr 10,r3
- isync
- mtsr 11,r3
- isync
- mtsr 12,r3
- isync
- mtsr 13,r3
- isync
- mtsr 14,r3
- isync
- mtsr 15,r3
- isync
-
- /* Turn off data and instruction cache control bits */
-
- mfspr r3, HID0
- isync
- rlwinm r4, r3, 0, 18, 15 /* r4 has ICE and DCE bits cleared */
- sync
- isync
- mtspr HID0, r4 /* HID0 = r4 */
- isync
-
- /* Get cpu type */
-
- mfspr r28, PVR
- rlwinm r28, r28, 16, 16, 31
-
- /* invalidate the MPU's data/instruction caches */
-
- lis r3, 0x0
- cmpli 0, 0, r28, CPU_TYPE_603
- beq cpuIs603
- cmpli 0, 0, r28, CPU_TYPE_603E
- beq cpuIs603
- cmpli 0, 0, r28, CPU_TYPE_603P
- beq cpuIs603
- cmpli 0, 0, r28, CPU_TYPE_604R
- bne cpuNot604R
-
-cpuIs604R:
- lis r3, 0x0
- mtspr HID0, r3 /* disable the caches */
- isync
- ori r4, r4, 0x0002 /* disable BTAC by setting bit 30 */
-
-cpuNot604R:
- ori r3, r3, (HID0_ICFI |HID0_DCI)
-
-cpuIs603:
- ori r3, r3, (HID0_ICE | HID0_DCE)
- or r4, r4, r3 /* set bits */
- sync
- isync
- mtspr HID0, r4 /* HID0 = r4 */
- andc r4, r4, r3 /* clear bits */
- isync
- cmpli 0, 0, r28, CPU_TYPE_604
- beq cpuIs604
- cmpli 0, 0, r28, CPU_TYPE_604E
- beq cpuIs604
- cmpli 0, 0, r28, CPU_TYPE_604R
- beq cpuIs604
- mtspr HID0, r4
- isync
-
-#ifdef USER_I_CACHE_ENABLE
- b instCacheOn603
-#else
- b cacheEnableDone
-#endif
-
-cpuIs604:
- LOADPTR (r5, 0x1000) /* loop count, 0x1000 */
- mtspr CTR, r5
-loopDelay:
- nop
- bdnz loopDelay
- isync
- mtspr HID0, r4
- isync
-
- /* turn the Instruction cache ON for faster FLASH ROM boots */
-
-#ifdef USER_I_CACHE_ENABLE
-
- ori r4, r4, (HID0_ICE | HID0_ICFI)
- isync /* Synchronize for ICE enable */
- b writeReg4
-instCacheOn603:
- ori r4, r4, (HID0_ICE | HID0_ICFI)
- rlwinm r3, r4, 0, 21, 19 /* clear the ICFI bit */
-
- /*
- * The setting of the instruction cache enable (ICE) bit must be
- * preceded by an isync instruction to prevent the cache from being
- * enabled or disabled while an instruction access is in progress.
- */
- isync
-writeReg4:
- mtspr HID0, r4 /* Enable Instr Cache & Inval cache */
- cmpli 0, 0, r28, CPU_TYPE_604
- beq cacheEnableDone
- cmpli 0, 0, r28, CPU_TYPE_604E
- beq cacheEnableDone
-
- mtspr HID0, r3 /* using 2 consec instructions */
- /* PPC603 recommendation */
-#endif
-cacheEnableDone:
-
- /* Detect map A or B */
-
- addis r5,r0, HI(CHRP_REG_ADDR)
- addis r6,r0, HI(CHRP_REG_DATA)
- LOADPTR (r7, KAHLUA_ID) /* Kahlua PCI controller ID */
- LOADPTR (r8, BMC_BASE)
-
- stwbrx r8,0,(r5)
- lwbrx r3,0,(r6) /* Store read value to r3 */
- cmp 0,0,r3,r7
- beq cr0, X4_KAHLUA_START
-
- /* It's not an 8240, is it an 8245? */
-
- LOADPTR (r7, KAHLUA2_ID) /* Kahlua PCI controller ID */
- cmp 0,0,r3,r7
- beq cr0, X4_KAHLUA_START
-
- /* Save the PCI controller type in r7 */
- mr r7, r3
-
- LOADPTR (r5, PREP_REG_ADDR)
- LOADPTR (r6, PREP_REG_DATA)
-
-X4_KAHLUA_START:
- /* MPC8245 changes begin here */
- LOADPTR (r3, MPC107_PCI_CMD) /* PCI command reg */
- stwbrx r3,0,r5
- li r4, 6 /* Command register value */
- sthbrx r4, 0, r6
-
- LOADPTR (r3, MPC107_PCI_STAT) /* PCI status reg */
- stwbrx r3,0,r5
- li r4, -1 /* Write-to-clear all bits */
- li r3, 2 /* PCI_STATUS is at +2 offset */
- sthbrx r4, r3, r6
-
- /*-------PROC_INT1_ADR */
-
- LOADPTR (r3, PROC_INT1_ADR) /* Processor I/F Config 1 reg. */
- stwbrx r3,0,r5
- LOADPTR (r4, 0xff141b98)
- stwbrx r4,0,r6
-
- /*-------PROC_INT2_ADR */
-
- LOADPTR (r3, PROC_INT2_ADR) /* Processor I/F Config 2 reg. */
- stwbrx r3,0,r5
- lis r4, 0x2000 /* Flush PCI config writes */
- stwbrx r4,0,r6
-
- LOADPTR (r9, KAHLUA2_ID)
- cmpl 0, 0, r7, r9
- bne L1not8245
-
- /* MIOCR1 -- turn on bit for DLL delay */
-
- LOADPTR (r3, MIOCR1_ADR_X)
- stwbrx r3,0,r5
- li r4, 0x04
- stb r4, MIOCR1_SHIFT(r6)
-
- /* For the MPC8245, set register 77 to %00100000 (see Errata #15) */
- /* SDRAM_CLK_DEL (0x77)*/
-
- LOADPTR (r3, MIOCR2_ADR_X)
- stwbrx r3,0,r5
- li r4, 0x10
- stb r4, MIOCR2_SHIFT(r6)
-
- /* PMCR2 -- set PCI hold delay to <10>b for 33 MHz */
-
- LOADPTR (r3, PMCR2_ADR_X)
- stwbrx r3,0,r5
- li r4, 0x20
- stb r4, PMCR2_SHIFT(r6)
-
- /* Initialize EUMBBAR early since 8245 has internal UART in EUMB */
-
- LOADPTR (r3, EUMBBAR)
- stwbrx r3,0,r5
- LOADPTR (r4, CFG_EUMB_ADDR)
- stwbrx r4,0,r6
-
-L1not8245:
-
- /* Toggle the DLL reset bit in AMBOR */
-
- LOADPTR (r3, AMBOR)
- stwbrx r3,0,r5
- lbz r4, 0(r6)
-
- andi. r4, r4, 0xdf
- stb r4, 0(r6) /* Clear DLL_RESET */
- sync
-
- ori r4, r4, 0x20 /* Set DLL_RESET */
- stb r4, 0(r6)
- sync
-
- andi. r4, r4, 0xdf
- stb r4, 0(r6) /* Clear DLL_RESET */
-
-
- /* Enable RCS2, use supplied timings */
- LOADPTR (r3, ERCR1)
- stwbrx r3,0,r5
- LOADPTR (r4, 0x80408000)
- stwbrx r4,0,r6
-
- /* Disable RCS3 parameters */
- LOADPTR (r3, ERCR2)
- stwbrx r3,0,r5
- LOADPTR (r4, 0x00000000)
- stwbrx r4,0,r6
-
- /* RCS3 at 0x70000000, 64KBytes */
- LOADPTR (r3, ERCR2)
- stwbrx r3,0,r5
- LOADPTR (r4, 0x00000004)
- stwbrx r4,0,r6
-
- /*-------MCCR1 */
-
-#ifdef INCLUDE_ECC
-#define MC_ECC 1
-#else /* INCLUDE_ECC */
-#define MC_ECC 0
-#endif /* INCLUDE_ECC */
-
-#define MC1_ROMNAL 8 /* 0-15 */
-#define MC1_ROMFAL 11 /* 0-31 */
-#define MC1_DBUS_SIZE 0 /* 0-3, read only */
-#define MC1_BURST 0 /* 0-1 */
-#define MC1_MEMGO 0 /* 0-1 */
-#define MC1_SREN 1 /* 0-1 */
-#define MC1_RAM_TYPE 0 /* 0-1 */
-#define MC1_PCKEN MC_ECC /* 0-1 */
-#define MC1_BANKBITS 0x5555 /* 2 bits/bank 7-0 */
-
- LOADPTR (r3, MEM_CONT1_ADR) /* Set MCCR1 (F0) */
- stwbrx r3,0,r5
- LOADPTR(r4, \
- MC1_ROMNAL << 28 | MC1_ROMFAL << 23 | \
- MC1_DBUS_SIZE << 21 | MC1_BURST << 20 | \
- MC1_MEMGO << 19 | MC1_SREN << 18 | \
- MC1_RAM_TYPE << 17 | MC1_PCKEN << 16 )
- li r3, MC1_BANKBITS
- cmpl 0, 0, r7, r9 /* Check for Kahlua2 */
- bne BankBitsAdd
- cmpli 0, 0, r3, 0x5555
- beq K2BankBitsHack /* On 8245, 5555 ==> 0 */
-BankBitsAdd:
- ori r4, r3, 0
-K2BankBitsHack:
- stwbrx r4, 0, r6
-
- /*------- MCCR2 */
-
-#define MC2_TS_WAIT_TIMER 0 /* 0-7 */
-#define MC2_ASRISE 8 /* 0-15 */
-#define MC2_ASFALL 4 /* 0-15 */
-#define MC2_INLINE_PAR_NOT_ECC 0 /* 0-1 */
-#define MC2_WRITE_PARITY_CHK_EN MC_ECC /* 0-1 */
-#define MC2_INLRD_PARECC_CHK_EN MC_ECC /* 0-1 */
-#define MC2_ECC_EN 0 /* 0-1 */
-#define MC2_EDO 0 /* 0-1 */
-/*
-* N.B. This refresh interval looks good up to 85 MHz with Hynix SDRAM.
-* May need to be decreased for 100 MHz
-*/
-#define MC2_REFINT 0x3a5 /* 0-0x3fff */
-#define MC2_RSV_PG 0 /* 0-1 */
-#define MC2_RMW_PAR MC_ECC /* 0-1 */
-
- LOADPTR (r3, MEM_CONT2_ADR) /* Set MCCR2 (F4) */
- stwbrx r3,0,r5
- LOADPTR(r4, \
- MC2_TS_WAIT_TIMER << 29 | MC2_ASRISE << 25 | \
- MC2_ASFALL << 21 | MC2_INLINE_PAR_NOT_ECC << 20 | \
- MC2_WRITE_PARITY_CHK_EN << 19 | \
- MC2_INLRD_PARECC_CHK_EN << 18 | \
- MC2_ECC_EN << 17 | MC2_EDO << 16 | \
- MC2_REFINT << 2 | MC2_RSV_PG << 1 | MC2_RMW_PAR)
- cmpl 0, 0, r7, r9 /* Check for Kahlua2 */
- bne notK2
- /* clear Kahlua2 reserved bits */
- LOADPTR (r3, 0xfffcffff)
- and r4, r4, r3
-notK2:
- stwbrx r4,0,r6
-
- /*------- MCCR3 */
-
-#define MC_BSTOPRE 0x079 /* 0-0x7ff */
-
-#define MC3_BSTOPRE_U (MC_BSTOPRE >> 4 & 0xf)
-#define MC3_REFREC 8 /* 0-15 */
-#define MC3_RDLAT (4+MC_ECC) /* 0-15 */
-#define MC3_CPX 0 /* 0-1 */
-#define MC3_RAS6P 0 /* 0-15 */
-#define MC3_CAS5 0 /* 0-7 */
-#define MC3_CP4 0 /* 0-7 */
-#define MC3_CAS3 0 /* 0-7 */
-#define MC3_RCD2 0 /* 0-7 */
-#define MC3_RP1 0 /* 0-7 */
-
- LOADPTR (r3, MEM_CONT3_ADR) /* Set MCCR3 (F8) */
- stwbrx r3,0,r5
- LOADPTR(r4, \
- MC3_BSTOPRE_U << 28 | MC3_REFREC << 24 | \
- MC3_RDLAT << 20 | MC3_CPX << 19 | \
- MC3_RAS6P << 15 | MC3_CAS5 << 12 | MC3_CP4 << 9 | \
- MC3_CAS3 << 6 | MC3_RCD2 << 3 | MC3_RP1)
- cmpl 0, 0, r7, r9 /* Check for Kahlua2 */
- bne notK2b
- /* clear Kahlua2 reserved bits */
- LOADPTR (r3, 0xff000000)
- and r4, r4, r3
-notK2b:
- stwbrx r4,0,r6
-
- /*------- MCCR4 */
-
-#define MC4_PRETOACT 3 /* 0-15 */
-#define MC4_ACTOPRE 5 /* 0-15 */
-#define MC4_WMODE 0 /* 0-1 */
-#define MC4_INLINE MC_ECC /* 0-1 */
-#define MC4_REGISTERED (1-MC_ECC) /* 0-1 */
-#define MC4_BSTOPRE_UU (MC_BSTOPRE >> 8 & 3)
-#define MC4_REGDIMM 0 /* 0-1 */
-#define MC4_SDMODE_CAS 2 /* 0-7 */
-#define MC4_DBUS_RCS1 1 /* 0-1, 8-bit */
-#define MC4_SDMODE_WRAP 0 /* 0-1 */
-#define MC4_SDMODE_BURST 2 /* 0-7 */
-#define MC4_ACTORW 3 /* 0-15 */
-#define MC4_BSTOPRE_L (MC_BSTOPRE & 0xf)
-
- LOADPTR (r3, MEM_CONT4_ADR) /* Set MCCR4 (FC) */
- stwbrx r3,0,r5
- LOADPTR(r4, \
- MC4_PRETOACT << 28 | MC4_ACTOPRE << 24 | \
- MC4_WMODE << 23 | MC4_INLINE << 22 | \
- MC4_REGISTERED << 20 | MC4_BSTOPRE_UU << 18 | \
- MC4_DBUS_RCS1 << 17 | \
- MC4_REGDIMM << 15 | MC4_SDMODE_CAS << 12 | \
- MC4_SDMODE_WRAP << 11 | MC4_SDMODE_BURST << 8 | \
- MC4_ACTORW << 4 | MC4_BSTOPRE_L)
- cmpl 0, 0, r7, r9 /* Check for Kahlua 2 */
- bne notK2c
- /* Turn on Kahlua2 extended ROM space */
- LOADPTR (r3, 0x00200000)
- or r4, r4, r3
-notK2c:
- stwbrx r4,0,r6
-
-#ifdef INCLUDE_ECC
- /*------- MEM_ERREN1 */
-
- LOADPTR (r3, MEM_ERREN1_ADR) /* Set MEM_ERREN1 (c0) */
- stwbrx r3,0,r5
- lwbrx r4,0,r6
- ori r4,r4,4 /* Set MEM_PERR_EN */
- stwbrx r4,0,r6
-#endif /* INCLUDE_ECC */
-
- /*------- MSAR/MEAR */
-
- LOADPTR (r3, MEM_START1_ADR) /* Set MSAR1 (80) */
- stwbrx r3,0,r5
- LOADPTR (r4, 0xc0804000)
- stwbrx r4,0,r6
-
- LOADPTR (r3, MEM_START2_ADR) /* Set MSAR2 (84) */
- stwbrx r3,0,r5
- LOADPTR (r4, 0xc0804000)
- stwbrx r4,0,r6
-
- LOADPTR (r3, XMEM_START1_ADR) /* Set MESAR1 (88) */
- stwbrx r3,0,r5
- LOADPTR (r4, 0x00000000)
- stwbrx r4,0,r6
-
- LOADPTR (r3, XMEM_START2_ADR) /* Set MESAR2 (8c) */
- stwbrx r3,0,r5
- LOADPTR (r4, 0x01010101)
- stwbrx r4,0,r6
-
- LOADPTR (r3, MEM_END1_ADR) /* Set MEAR1 (90) */
- stwbrx r3,0,r5
- LOADPTR (r4, 0xffbf7f3f)
- stwbrx r4,0,r6
-
- LOADPTR (r3, MEM_END2_ADR) /* Set MEAR2 (94) */
- stwbrx r3,0,r5
- LOADPTR (r4, 0xffbf7f3f)
- stwbrx r4,0,r6
-
- LOADPTR (r3, XMEM_END1_ADR) /* MEEAR1 (98) */
- stwbrx r3,0,r5
- LOADPTR (r4, 0x00000000)
- stwbrx r4,0,r6
-
- LOADPTR (r3, XMEM_END2_ADR) /* MEEAR2 (9c) */
- stwbrx r3,0,r5
- LOADPTR (r4, 0x01010101)
- stwbrx r4,0,r6
-
- /*-------ODCR */
-
- LOADPTR (r3, ODCR_ADR_X) /* Set ODCR */
- stwbrx r3,0,r5
-
- li r4, 0x7f
- stb r4, ODCR_SHIFT(r6) /* ODCR is at +3 offset */
-
- /*-------MBEN */
-
- LOADPTR (r3, MEM_EN_ADR) /* Set MBEN (a0) */
- stwbrx r3,0,r5
- li r4, 0x01 /* Enable bank 0 */
- stb r4, 0(r6) /* MBEN is at +0 offset */
-
-#if 0 /* Jimmy: I think page made is broken */
- /*-------PGMAX */
-
- LOADPTR (r3, MPM_ADR_X)
- stwbrx r3,0,r5
- li r4, 0x32
- stb r4, MPM_SHIFT(r6) /* PAGE_MODE is at +3 offset */
-#endif
-
- /* Wait before initializing other registers */
-
- lis r4,0x0001
- mtctr r4
-
-KahluaX4wait200us:
- bdnz KahluaX4wait200us
-
- /* Set MEMGO bit */
-
- LOADPTR (r3, MEM_CONT1_ADR) /* MCCR1 (F0) |= PGMAX */
- stwbrx r3,0,r5
- lwbrx r4,0,r6 /* old MCCR1 */
- oris r4,r4,0x0008 /* MEMGO=1 */
- stwbrx r4, 0, r6
-
- /* Wait again */
-
- addis r4,r0,0x0002
- ori r4,r4,0xffff
-
- mtctr r4
-
-KahluaX4wait8ref:
- bdnz KahluaX4wait8ref
-
- sync
- eieio
- mtlr r11
- blr
-
-#else /* USE_V2_INIT */
-
-
-/* U-Boot works, but memory will not run reliably for all address ranges.
- * Early U-Boot Working init, but 2.4.19 kernel will crash since memory is not
- * initialized correctly. Could work if debugged.
- */
-/* PCI Support routines */
-
- .globl __pci_config_read_32
-__pci_config_read_32:
- lis r4, 0xfec0
- stwbrx r3, r0, r4
- sync
- lis r4, 0xfee0
- lwbrx r3, 0, r4
- blr
- .globl __pci_config_read_16
-__pci_config_read_16:
- lis r4, 0xfec0
- andi. r5, r3, 2
- stwbrx r3, r0, r4
- sync
- oris r4, r5, 0xfee0
- lhbrx r3, r0, r4
- blr
- .globl __pci_config_read_8
-__pci_config_read_8:
- lis r4, 0xfec0
- andi. r5, r3, 3
- stwbrx r3, r0, r4
- sync
- oris r4, r5, 0xfee0
- lbz r3, 0(4)
- blr
- .globl __pci_config_write_32
-__pci_config_write_32:
- lis r5, 0xfec0
- stwbrx r3, r0, r5
- sync
- lis r5, 0xfee0
- stwbrx r4, r0, r5
- sync
- blr
- .globl __pci_config_write_16
-__pci_config_write_16:
- lis r5, 0xfec0
- andi. r6, r3, 2
- stwbrx r3, r0, 5
- sync
- oris r5, r6, 0xfee0
- sthbrx r4, r0, r5
- sync
- blr
- .globl __pci_config_write_8
-__pci_config_write_8:
- lis r5, 0xfec0
- andi. r6, r3, 3
- stwbrx r3, r0, r5
- sync
- oris r5, r6, 0xfee0
- stb r4, 0(r5)
- sync
- blr
- .globl in_8
-in_8:
- oris r3, r3, 0xfe00
- lbz r3,0(r3)
- blr
- .globl in_16
-in_16:
- oris r3, r3, 0xfe00
- lhbrx r3, 0, r3
- blr
- .globl in_16_ne
-in_16_ne:
- oris r3, r3, 0xfe00
- lhzx r3, 0, r3
- blr
- .globl in_32
-in_32:
- oris r3, r3, 0xfe00
- lwbrx r3, 0, r3
- blr
- .globl out_8
-out_8:
- oris r3, r3, 0xfe00
- stb r4, 0(r3)
- eieio
- blr
- .globl out_16
-out_16:
- oris r3, r3, 0xfe00
- sthbrx r4, 0, r3
- eieio
- blr
- .globl out_16_ne
-out_16_ne:
- oris r3, r3, 0xfe00
- sth r4, 0(r3)
- eieio
- blr
- .globl out_32
-out_32:
- oris r3, r3, 0xfe00
- stwbrx r4, 0, r3
- eieio
- blr
- .globl read_8
-read_8:
- lbz r3,0(r3)
- blr
- .globl read_16
-read_16:
- lhbrx r3, 0, r3
- blr
- .globl read_32
-read_32:
- lwbrx r3, 0, r3
- blr
- .globl read_32_ne
-read_32_ne:
- lwz r3, 0(r3)
- blr
- .globl write_8
-write_8:
- stb r4, 0(r3)
- eieio
- blr
- .globl write_16
-write_16:
- sthbrx r4, 0, r3
- eieio
- blr
- .globl write_32
-write_32:
- stwbrx r4, 0, r3
- eieio
- blr
- .globl write_32_ne
-write_32_ne:
- stw r4, 0(r3)
- eieio
- blr
-
-
-.globl early_init_f
-
-early_init_f:
- mflr r11
- lis r10, 0x8000
-
- /* PCI Latency Timer */
- li r4, 0x0d
- ori r3, r10, PLTR@l
- bl __pci_config_write_8
-
- /* Cache Line Size */
- li r4, 0x08
- ori r3, r10, PCLSR@l
- bl __pci_config_write_8
-
- /* PCI Cmd */
- li r4, 6
- ori r3, r10, PCICR@l
- bl __pci_config_write_16
-
-#if 1
- /* PCI Stat */
- ori r3, r10, PCISR@l
- bl __pci_config_read_16
- ori r4, r4, 0xffff
- ori r3, r10, PCISR@l
- bl __pci_config_write_16
-#endif
-
- /* PICR1 */
- lis r4, 0xff14
- ori r4, r4, 0x1b98
- ori r3, r10, PICR1@l
- bl __pci_config_write_32
-
-
- /* PICR2 */
- lis r4, 0x0404
- ori r4, r4, 0x0004
- ori r3, r10, PICR2@l
- bl __pci_config_write_32
-
- /* MIOCR1 */
- li r4, 0x04
- ori r3, r10, MIOCR1@l
- bl __pci_config_write_8
-
- /* For the MPC8245, set register 77 to %00100000 (see Errata #15) */
- /* SDRAM_CLK_DEL (0x77)*/
- li r4, 0x10
- ori r3, r10, MIOCR2@l
- bl __pci_config_write_8
-
- /* EUMBBAR */
- lis r4, 0xfc00
- ori r3, r10, EUMBBAR@l
- bl __pci_config_write_32
-
- /* AMBOR */
-
- /* Even if Address Map B is not being used (though it should),
- * the memory DLL needs to be cleared/set/cleared before using memory.
- */
-
- ori r3, r10, AMBOR@l
- bl __pci_config_read_8 /* get Current bits */
-
- andi. r4, r4, 0xffdf
- ori r3, r10, AMBOR@l
- bl __pci_config_write_16 /* Clear DLL_RESET */
-
- ori r4, r4, 0x0020
- ori r3, r10, AMBOR@l
- bl __pci_config_write_16 /* Set DLL_RESET */
-
- andi. r4, r4, 0xffdf
- ori r3, r10, AMBOR@l
- bl __pci_config_write_16 /* Clear DLL_RESET */
-
- /* ERCR1 */
- lis r4, 0x8040 /* Enable RCS2, use supplied timings */
- ori r4, r4, 0x8000
- ori r3, r10, ERCR1@l
- bl __pci_config_write_32
-
- /* ERCR2 */
- lis r4, 0x0000 /* Disable RCS3 parms */
- ori r4, r4, 0x0000
- ori r3, r10, ERCR2@l
- bl __pci_config_write_32
-
- /* ERCR3 */
- lis r4, 0x0000 /* RCS3 at 0x70000000, 64K bytes */
- ori r4, r4, 0x0004
- ori r3, r10, ERCR2@l
- bl __pci_config_write_32
-
- /* Preserve memgo bit */
- /* MCCR1 */
-
-/* lis r4, 0x75a8 / Safe Local ROM = 11+3 clocks */
- lis r4, 0x75a0 /* Safe Local ROM = 11+3 clocks */
-/* lis r4, 0x73a0 / Fast Local ROM = 7+3 clocks */
-/* oris r4, r4, 0x0010 / Burst ROM/Flash enable */
-/* oris r4, r4, 0x0004 / Self-refresh enable */
-
-/* ori r4,r4,0xFFFF / 16Mbit 2bank SDRAM */
-/* ori r4,r4,0xAAAA / 256Mbit 4bank SDRAM (8245 only) */
-/* ori r4,r4,0x5555 / 64Mbit 2bank SDRAM */
- ori r4,r4,0x0000 /* 64Mbit 4bank SDRAM */
-
- ori r3, r10, MCCR1@l
- bl __pci_config_write_32
-
- /* MCCR2 */
-
- lis r4,0x0000
-/* oris r4,r4,0x4000 / TS_WAIT_TIMER = 3 clocks */
- oris r4,r4,0x1000 /* ASRISE = 8 clocks */
- oris r4,r4,0x0080 /* ASFALL = 8 clocks */
-/* oris r4,r4,0x0010 / SDRAM Parity (else ECC) */
-/* oris r4,r4,0x0008 / Write parity check */
-/* oris r4,r4,0x0004 / SDRAM inline reads */
-
-
-/* Select a refresh rate; it needs to match the bus speed; if too */
-/* slow, data may be lost; if too fast, performance is lost. We */
-/* use the fastest value so we run at all speeds. */
-/* Refresh = (15600ns/busclk) - (213 (see UM)). */
-
-/* ori r4,r4,0x1d2c / 133 MHz mem bus = 1867 */
-/* ori r4,r4,0x150c / 100 MHz mem bus = 1347 */
-/* ori r4,r4,0x10fc / 83 MHz mem bus = 1087 */
-/* ori r4,r4,0x0cc4 / 66 MHz mem bus = 817 */
- ori r4,r4,0x04cc /* 33 MHz mem bus (SAFE) = 307 */
-/* ori r4,r4,0x0002 / Reserve a page */
-/* ori r4,r4,0x0001 / RWM parity */
-
- ori r3, r10, MCCR2@l
- bl __pci_config_write_32
-
-
- /* MCCR3 */
- lis r4,0x0000 /* BSTOPRE_M = 7 (see A/N) */
- oris r4,r4,0x0500 /* REFREC = 8 clocks */
- ori r3, r10, MCCR3@l
- bl __pci_config_write_32
-
- /* MCCR4 */ /* Turn on registered buffer mode */
- lis r4, 0x2000 /* PRETOACT = 3 clocks */
- oris r4,r4,0x0400 /* ACTOPRE = 5 clocks */
-/* oris r4,r4,0x0080 / Enable 8-beat burst (32-bit bus) */
-/* oris r4,r4,0x0040 / Enable Inline ECC/Parity */
- oris r4,r4,0x0020 /* EXTROM enabled */
- oris r4,r4,0x0010 /* Registered buffers */
-/* oris r4,r4,0x0000 / BSTOPRE_U = 0 (see A/N) */
- oris r4,r4,0x0002 /* DBUS_SIZ[2] (8 bit on RCS1) */
-
-/* ori r4,r4,0x8000 / Registered DIMMs */
- ori r4,r4,0x2000 /*CAS Latency (CL=3) (see RDLAT) */
-/* ori r4,r4,0x2000 / CAS Latency (CL=2) (see RDLAT) */
-/* ori r4,r4,0x0300 / Sequential wrap/8-beat burst */
- ori r4,r4,0x0200 /* Sequential wrap/4-beat burst */
- ori r4,r4,0x0030 /* ACTORW = 3 clocks */
- ori r4,r4,0x0009 /* BSTOPRE_L = 9 (see A/N) */
-
- ori r3, r10, MCCR4@l
- bl __pci_config_write_32
-
- /* MSAR1 */
- lis r4, 0xc0804000@h
- ori r4, r4, 0xc0804000@l
- ori r3, r10, MSAR1@l
- bl __pci_config_write_32
-
- /* MSAR2 */
- lis r4, 0xc0804000@h
- ori r4, r4, 0xc0804000@l
- ori r3, r10, MSAR2@l
- bl __pci_config_write_32
-
- /* MESAR1 */
- lis r4, 0x00000000@h
- ori r4, r4, 0x00000000@l
- ori r3, r10, EMSAR1@l
- bl __pci_config_write_32
-
- /* MESAR2 */
- lis r4, 0x01010101@h
- ori r4, r4, 0x01010101@l
- ori r3, r10, EMSAR2@l
- bl __pci_config_write_32
-
- /* MEAR1 */
- lis r4, 0xffbf7f3f@h
- ori r4, r4, 0xffbf7f3f@l
- ori r3, r10, MEAR1@l
- bl __pci_config_write_32
-
- /* MEAR2 */
- lis r4, 0xffbf7f3f@h
- ori r4, r4, 0xffbf7f3f@l
- ori r3, r10, MEAR2@l
- bl __pci_config_write_32
-
- /* MEEAR1 */
- lis r4, 0x00000000@h
- ori r4, r4, 0x00000000@l
- ori r3, r10, EMEAR1@l
- bl __pci_config_write_32
-
- /* MEEAR2 */
- lis r4, 0x01010101@h
- ori r4, r4, 0x01010101@l
- ori r3, r10, EMEAR2@l
- bl __pci_config_write_32
-
- /* ODCR */
- li r4, 0x7f
- ori r3, r10, ODCR@l
- bl __pci_config_write_8
-
- /* MBER */
- li r4, 0x01
- ori r3, r10, MBER@l
- bl __pci_config_write_8
-
- /* Page CTR aka PGMAX */
- li r4, 0x32
- ori r3, r10, 0x70
- bl __pci_config_write_8
-
-#if 0
- /* CLK Drive */
- ori r4, r10, 0xfc01 /* Top bit will be ignored */
- ori r3, r10, 0x74
- bl __pci_config_write_16
-#endif
-
- /* delay */
- lis r7, 1
- mtctr r7
-label1: bdnz label1
-
- /* Set memgo bit */
- /* MCCR1 */
- ori r3, r10, MCCR1@l
- bl __pci_config_read_32
- lis r7, 0x0008
- or r4, r3, r7
- ori r3, r10, MCCR1@l
- bl __pci_config_write_32
-
- /* delay again */
- lis r7, 1
- mtctr r7
-label2: bdnz label2
-#if 0
-/* DEBUG: Infinite loop, write then read */
-loop:
- lis r7, 0xffff
- mtctr r7
- li r3, 0x5004
- lis r4, 0xa0a0
- ori r4, r4, 0x5050
- bl write_32_ne
- li r3, 0x5004
- bl read_32_ne
- bdnz loop
-#endif
- mtlr r11
- blr
-#endif
diff --git a/board/bmw/flash.c b/board/bmw/flash.c
deleted file mode 100644
index 7fba174f46..0000000000
--- a/board/bmw/flash.c
+++ /dev/null
@@ -1,779 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <asm/pci_io.h>
-
-#define ROM_CS0_START 0xFF800000
-#define ROM_CS1_START 0xFF000000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word (flash_info_t * info, ulong dest, ulong data);
-
-#if 0
-static void flash_get_offsets (ulong base, flash_info_t * info);
-#endif /* 0 */
-
-/*flash command address offsets*/
-
-#if 0
-#define ADDR0 (0x555)
-#define ADDR1 (0x2AA)
-#define ADDR3 (0x001)
-#else
-#define ADDR0 (0xAAA)
-#define ADDR1 (0x555)
-#define ADDR3 (0x001)
-#endif
-
-#define FLASH_WORD_SIZE unsigned char
-
-/*-----------------------------------------------------------------------
- */
-
-#if 0
-static int byte_parity_odd (unsigned char x) __attribute__ ((const));
-#endif /* 0 */
-static unsigned long flash_id (unsigned char mfct, unsigned char chip)
- __attribute__ ((const));
-
-typedef struct {
- FLASH_WORD_SIZE extval;
- unsigned short intval;
-} map_entry;
-
-#if 0
-static int byte_parity_odd (unsigned char x)
-{
- x ^= x >> 4;
- x ^= x >> 2;
- x ^= x >> 1;
- return (x & 0x1) != 0;
-}
-#endif /* 0 */
-
-
-static unsigned long flash_id (unsigned char mfct, unsigned char chip)
-{
- static const map_entry mfct_map[] = {
- {(FLASH_WORD_SIZE) AMD_MANUFACT,
- (unsigned short) ((unsigned long) FLASH_MAN_AMD >> 16)},
- {(FLASH_WORD_SIZE) FUJ_MANUFACT,
- (unsigned short) ((unsigned long) FLASH_MAN_FUJ >> 16)},
- {(FLASH_WORD_SIZE) STM_MANUFACT,
- (unsigned short) ((unsigned long) FLASH_MAN_STM >> 16)},
- {(FLASH_WORD_SIZE) MT_MANUFACT,
- (unsigned short) ((unsigned long) FLASH_MAN_MT >> 16)},
- {(FLASH_WORD_SIZE) INTEL_MANUFACT,
- (unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)},
- {(FLASH_WORD_SIZE) INTEL_ALT_MANU,
- (unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)}
- };
-
- static const map_entry chip_map[] = {
- {AMD_ID_F040B, FLASH_AM040},
- {(FLASH_WORD_SIZE) STM_ID_x800AB, FLASH_STM800AB}
- };
-
- const map_entry *p;
- unsigned long result = FLASH_UNKNOWN;
-
- /* find chip id */
- for (p = &chip_map[0];
- p < &chip_map[sizeof chip_map / sizeof chip_map[0]]; p++)
- if (p->extval == chip) {
- result = FLASH_VENDMASK | p->intval;
- break;
- }
-
- /* find vendor id */
- for (p = &mfct_map[0];
- p < &mfct_map[sizeof mfct_map / sizeof mfct_map[0]]; p++)
- if (p->extval == mfct) {
- result &= ~FLASH_VENDMASK;
- result |= (unsigned long) p->intval << 16;
- break;
- }
-
- return result;
-}
-
-
-unsigned long flash_init (void)
-{
- unsigned long i;
- unsigned char j;
- static const ulong flash_banks[] = CFG_FLASH_BANKS;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- flash_info_t *const pflinfo = &flash_info[i];
-
- pflinfo->flash_id = FLASH_UNKNOWN;
- pflinfo->size = 0;
- pflinfo->sector_count = 0;
- }
-
- for (i = 0; i < sizeof flash_banks / sizeof flash_banks[0]; i++) {
- flash_info_t *const pflinfo = &flash_info[i];
- const unsigned long base_address = flash_banks[i];
- volatile FLASH_WORD_SIZE *const flash =
- (FLASH_WORD_SIZE *) base_address;
-#if 0
- volatile FLASH_WORD_SIZE *addr2;
-#endif
-#if 0
- /* write autoselect sequence */
- flash[0x5555] = 0xaa;
- flash[0x2aaa] = 0x55;
- flash[0x5555] = 0x90;
-#else
- flash[0xAAA << (3 * i)] = 0xaa;
- flash[0x555 << (3 * i)] = 0x55;
- flash[0xAAA << (3 * i)] = 0x90;
-#endif
- __asm__ __volatile__ ("sync");
-
-#if 0
- pflinfo->flash_id = flash_id (flash[0x0], flash[0x1]);
-#else
- pflinfo->flash_id =
- flash_id (flash[0x0], flash[0x2 + 14 * i]);
-#endif
-
- switch (pflinfo->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- pflinfo->size = 0x00080000;
- pflinfo->sector_count = 8;
- for (j = 0; j < 8; j++) {
- pflinfo->start[j] =
- base_address + 0x00010000 * j;
- pflinfo->protect[j] = flash[(j << 16) | 0x2];
- }
- break;
- case FLASH_STM800AB:
- pflinfo->size = 0x00100000;
- pflinfo->sector_count = 19;
- pflinfo->start[0] = base_address;
- pflinfo->start[1] = base_address + 0x4000;
- pflinfo->start[2] = base_address + 0x6000;
- pflinfo->start[3] = base_address + 0x8000;
- for (j = 1; j < 16; j++) {
- pflinfo->start[j + 3] =
- base_address + 0x00010000 * j;
- }
-#if 0
- /* check for protected sectors */
- for (j = 0; j < pflinfo->sector_count; j++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile FLASH_WORD_SIZE
- *) (pflinfo->start[j]);
- if (pflinfo->flash_id & FLASH_MAN_SST)
- pflinfo->protect[j] = 0;
- else
- pflinfo->protect[j] = addr2[2] & 1;
- }
-#endif
- break;
- }
- /* Protect monitor and environment sectors
- */
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- /* reset device to read mode */
- flash[0x0000] = 0xf0;
- __asm__ __volatile__ ("sync");
- }
-
- return flash_info[0].size + flash_info[1].size;
-}
-
-#if 0
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_MAN_SST) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
-}
-#endif /* 0 */
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- static const char unk[] = "Unknown";
- const char *mfct = unk, *type = unk;
- unsigned int i;
-
- if (info->flash_id != FLASH_UNKNOWN) {
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- mfct = "AMD";
- break;
- case FLASH_MAN_FUJ:
- mfct = "FUJITSU";
- break;
- case FLASH_MAN_STM:
- mfct = "STM";
- break;
- case FLASH_MAN_SST:
- mfct = "SST";
- break;
- case FLASH_MAN_BM:
- mfct = "Bright Microelectonics";
- break;
- case FLASH_MAN_INTEL:
- mfct = "Intel";
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- type = "AM29F040B (512K * 8, uniform sector size)";
- break;
- case FLASH_AM400B:
- type = "AM29LV400B (4 Mbit, bottom boot sect)";
- break;
- case FLASH_AM400T:
- type = "AM29LV400T (4 Mbit, top boot sector)";
- break;
- case FLASH_AM800B:
- type = "AM29LV800B (8 Mbit, bottom boot sect)";
- break;
- case FLASH_AM800T:
- type = "AM29LV800T (8 Mbit, top boot sector)";
- break;
- case FLASH_AM160T:
- type = "AM29LV160T (16 Mbit, top boot sector)";
- break;
- case FLASH_AM320B:
- type = "AM29LV320B (32 Mbit, bottom boot sect)";
- break;
- case FLASH_AM320T:
- type = "AM29LV320T (32 Mbit, top boot sector)";
- break;
- case FLASH_STM800AB:
- type = "M29W800AB (8 Mbit, bottom boot sect)";
- break;
- case FLASH_SST800A:
- type = "SST39LF/VF800 (8 Mbit, uniform sector size)";
- break;
- case FLASH_SST160A:
- type = "SST39LF/VF160 (16 Mbit, uniform sector size)";
- break;
- }
- }
-
- printf ("\n Brand: %s Type: %s\n"
- " Size: %lu KB in %d Sectors\n",
- mfct, type, info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i = 0; i < info->sector_count; i++) {
- unsigned long size;
- unsigned int erased;
- unsigned long *flash = (unsigned long *) info->start[i];
-
- /*
- * Check if whole sector is erased
- */
- size = (i != (info->sector_count - 1)) ?
- (info->start[i + 1] - info->start[i]) >> 2 :
- (info->start[0] + info->size - info->start[i]) >> 2;
-
- for (flash = (unsigned long *) info->start[i], erased = 1;
- (flash != (unsigned long *) info->start[i] + size)
- && erased; flash++)
- erased = *flash == ~0x0UL;
-
- printf ("%s %08lX %s %s",
- (i % 5) ? "" : "\n ",
- info->start[i],
- erased ? "E" : " ", info->protect[i] ? "RO" : " ");
- }
-
- puts ("\n");
- return;
-}
-
-#if 0
-
-/*
- * The following code cannot be run from FLASH!
- */
-ulong flash_get_size (vu_long * addr, flash_info_t * info)
-{
- short i;
- FLASH_WORD_SIZE value;
- ulong base = (ulong) addr;
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *) addr;
-
- printf ("flash_get_size: \n");
- /* Write auto select command: read Manufacturer ID */
- eieio ();
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0xAA;
- addr2[ADDR1] = (FLASH_WORD_SIZE) 0x55;
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x90;
- value = addr2[0];
-
- switch (value) {
- case (FLASH_WORD_SIZE) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FLASH_WORD_SIZE) FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (FLASH_WORD_SIZE) SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
- printf ("recognised manufacturer");
-
- value = addr2[ADDR3]; /* device ID */
- debug ("\ndev_code=%x\n", value);
-
- switch (value) {
- case (FLASH_WORD_SIZE) AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE) SST_ID_xF800A:
- info->flash_id += FLASH_SST800A;
- info->sector_count = 16;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE) SST_ID_xF160A:
- info->flash_id += FLASH_SST160A;
- info->sector_count = 32;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_F040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- printf ("flash id %lx; sector count %x, size %lx\n", info->flash_id,
- info->sector_count, info->size);
- /* set up sector start address table */
- if (info->flash_id & FLASH_MAN_SST) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile FLASH_WORD_SIZE *) (info->start[i]);
- if (info->flash_id & FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (FLASH_WORD_SIZE *) info->start[0];
- *addr2 = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-#endif
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *) (info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
- unsigned char sh8b;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > (FLASH_MAN_STM | FLASH_AMD_COMP))) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Check the ROM CS */
- if ((info->start[0] >= ROM_CS1_START)
- && (info->start[0] < ROM_CS0_START))
- sh8b = 3;
- else
- sh8b = 0;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00800080;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (FLASH_WORD_SIZE *) (info->start[0] + ((info->
- start
- [sect]
- -
- info->
- start
- [0]) <<
- sh8b));
- if (info->flash_id & FLASH_MAN_SST) {
- addr[ADDR0 << sh8b] =
- (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] =
- (FLASH_WORD_SIZE) 0x00550055;
- addr[ADDR0 << sh8b] =
- (FLASH_WORD_SIZE) 0x00800080;
- addr[ADDR0 << sh8b] =
- (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] =
- (FLASH_WORD_SIZE) 0x00550055;
- addr[0] = (FLASH_WORD_SIZE) 0x00500050; /* block erase */
- udelay (30000); /* wait 30 ms */
- } else
- addr[0] = (FLASH_WORD_SIZE) 0x00300030; /* sector erase */
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (FLASH_WORD_SIZE *) (info->start[0] + ((info->start[l_sect] -
- info->
- start[0]) << sh8b));
- while ((addr[0] & (FLASH_WORD_SIZE) 0x00800080) !=
- (FLASH_WORD_SIZE) 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_word (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *) info->start[0];
- volatile FLASH_WORD_SIZE *dest2;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *) & data;
- ulong start;
- int flag;
- int i;
- unsigned char sh8b;
-
- /* Check the ROM CS */
- if ((info->start[0] >= ROM_CS1_START)
- && (info->start[0] < ROM_CS0_START))
- sh8b = 3;
- else
- sh8b = 0;
-
- dest2 = (FLASH_WORD_SIZE *) (((dest - info->start[0]) << sh8b) +
- info->start[0]);
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest2 & (FLASH_WORD_SIZE) data) != (FLASH_WORD_SIZE) data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- for (i = 0; i < 4 / sizeof (FLASH_WORD_SIZE); i++) {
- addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i << sh8b] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i << sh8b] & (FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE) 0x00800080)) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/bmw/m48t59y.c b/board/bmw/m48t59y.c
deleted file mode 100644
index d72c861a13..0000000000
--- a/board/bmw/m48t59y.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * SGS M48-T59Y TOD/NVRAM Driver
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 1999, by Curt McDowell, 08-06-99, Broadcom Corp.
- *
- * (C) Copyright 2001, James Dougherty, 07/18/01, Broadcom Corp.
- *
- * 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
- */
-
-/*
- * SGS M48-T59Y TOD/NVRAM Driver
- *
- * The SGS M48 an 8K NVRAM starting at offset M48_BASE_ADDR and
- * continuing for 8176 bytes. After that starts the Time-Of-Day (TOD)
- * registers which are used to set/get the internal date/time functions.
- *
- * This module implements Y2K compliance by taking full year numbers
- * and translating back and forth from the TOD 2-digit year.
- *
- * NOTE: for proper interaction with an operating system, the TOD should
- * be used to store Universal Coordinated Time (GMT) and timezone
- * conversions should be used.
- *
- * Here is a diagram of the memory layout:
- *
- * +---------------------------------------------+ 0xffe0a000
- * | Non-volatile memory | .
- * | | .
- * | (8176 bytes of Non-volatile memory) | .
- * | | .
- * +---------------------------------------------+ 0xffe0bff0
- * | Flags |
- * +---------------------------------------------+ 0xffe0bff1
- * | Unused |
- * +---------------------------------------------+ 0xffe0bff2
- * | Alarm Seconds |
- * +---------------------------------------------+ 0xffe0bff3
- * | Alarm Minutes |
- * +---------------------------------------------+ 0xffe0bff4
- * | Alarm Date |
- * +---------------------------------------------+ 0xffe0bff5
- * | Interrupts |
- * +---------------------------------------------+ 0xffe0bff6
- * | WatchDog |
- * +---------------------------------------------+ 0xffe0bff7
- * | Calibration |
- * +---------------------------------------------+ 0xffe0bff8
- * | Seconds |
- * +---------------------------------------------+ 0xffe0bff9
- * | Minutes |
- * +---------------------------------------------+ 0xffe0bffa
- * | Hours |
- * +---------------------------------------------+ 0xffe0bffb
- * | Day |
- * +---------------------------------------------+ 0xffe0bffc
- * | Date |
- * +---------------------------------------------+ 0xffe0bffd
- * | Month |
- * +---------------------------------------------+ 0xffe0bffe
- * | Year (2 digits only) |
- * +---------------------------------------------+ 0xffe0bfff
- */
-#include <common.h>
-#include <rtc.h>
-#include "bmw.h"
-
-/*
- * Imported from mousse.h:
- *
- * TOD_REG_BASE Base of m48t59y TOD registers
- * SYS_TOD_UNPROTECT() Disable NVRAM write protect
- * SYS_TOD_PROTECT() Re-enable NVRAM write protect
- */
-
-#define YEAR 0xf
-#define MONTH 0xe
-#define DAY 0xd
-#define DAY_OF_WEEK 0xc
-#define HOUR 0xb
-#define MINUTE 0xa
-#define SECOND 0x9
-#define CONTROL 0x8
-#define WATCH 0x7
-#define INTCTL 0x6
-#define WD_DATE 0x5
-#define WD_HOUR 0x4
-#define WD_MIN 0x3
-#define WD_SEC 0x2
-#define _UNUSED 0x1
-#define FLAGS 0x0
-
-#define M48_ADDR ((volatile unsigned char *) TOD_REG_BASE)
-
-int m48_tod_init(void)
-{
- SYS_TOD_UNPROTECT();
-
- M48_ADDR[CONTROL] = 0;
- M48_ADDR[WATCH] = 0;
- M48_ADDR[INTCTL] = 0;
-
- /*
- * If the oscillator is currently stopped (as on a new part shipped
- * from the factory), start it running.
- *
- * Here is an example of the TOD bytes on a brand new M48T59Y part:
- * 00 00 00 00 00 00 00 00 00 88 8c c3 bf c8 f5 01
- */
-
- if (M48_ADDR[SECOND] & 0x80)
- M48_ADDR[SECOND] = 0;
-
- /* Is battery low */
- if ( M48_ADDR[FLAGS] & 0x10) {
- printf("NOTICE: Battery low on Real-Time Clock (replace SNAPHAT).\n");
- }
-
- SYS_TOD_PROTECT();
-
- return 0;
-}
-
-/*
- * m48_tod_set
- */
-
-static int to_bcd(int value)
-{
- return value / 10 * 16 + value % 10;
-}
-
-static int from_bcd(int value)
-{
- return value / 16 * 10 + value % 16;
-}
-
-static int day_of_week(int y, int m, int d) /* 0-6 ==> Sun-Sat */
-{
- static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
- y -= m < 3;
- return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
-}
-
-/*
- * Note: the TOD should store the current GMT
- */
-
-int m48_tod_set(int year, /* 1980-2079 */
- int month, /* 01-12 */
- int day, /* 01-31 */
- int hour, /* 00-23 */
- int minute, /* 00-59 */
- int second) /* 00-59 */
-
-{
- SYS_TOD_UNPROTECT();
-
- M48_ADDR[CONTROL] |= 0x80; /* Set WRITE bit */
-
- M48_ADDR[YEAR] = to_bcd(year % 100);
- M48_ADDR[MONTH] = to_bcd(month);
- M48_ADDR[DAY] = to_bcd(day);
- M48_ADDR[DAY_OF_WEEK] = day_of_week(year, month, day) + 1;
- M48_ADDR[HOUR] = to_bcd(hour);
- M48_ADDR[MINUTE] = to_bcd(minute);
- M48_ADDR[SECOND] = to_bcd(second);
-
- M48_ADDR[CONTROL] &= ~0x80; /* Clear WRITE bit */
-
- SYS_TOD_PROTECT();
-
- return 0;
-}
-
-/*
- * Note: the TOD should store the current GMT
- */
-
-int m48_tod_get(int *year, /* 1980-2079 */
- int *month, /* 01-12 */
- int *day, /* 01-31 */
- int *hour, /* 00-23 */
- int *minute, /* 00-59 */
- int *second) /* 00-59 */
-{
- int y;
-
- SYS_TOD_UNPROTECT();
-
- M48_ADDR[CONTROL] |= 0x40; /* Set READ bit */
-
- y = from_bcd(M48_ADDR[YEAR]);
- *year = y < 80 ? 2000 + y : 1900 + y;
- *month = from_bcd(M48_ADDR[MONTH]);
- *day = from_bcd(M48_ADDR[DAY]);
- /* day_of_week = M48_ADDR[DAY_OF_WEEK] & 0xf; */
- *hour = from_bcd(M48_ADDR[HOUR]);
- *minute = from_bcd(M48_ADDR[MINUTE]);
- *second = from_bcd(M48_ADDR[SECOND] & 0x7f);
-
- M48_ADDR[CONTROL] &= ~0x40; /* Clear READ bit */
-
- SYS_TOD_PROTECT();
-
- return 0;
-}
-
-int m48_tod_get_second(void)
-{
- return from_bcd(M48_ADDR[SECOND] & 0x7f);
-}
-
-/*
- * Watchdog function
- *
- * If usec is 0, the watchdog timer is disarmed.
- *
- * If usec is non-zero, the watchdog timer is armed (or re-armed) for
- * approximately usec microseconds (if the exact requested usec is
- * not supported by the chip, the next higher available value is used).
- *
- * Minimum watchdog timeout = 62500 usec
- * Maximum watchdog timeout = 124 sec (124000000 usec)
- */
-
-void m48_watchdog_arm(int usec)
-{
- int mpy, res;
-
- SYS_TOD_UNPROTECT();
-
- if (usec == 0) {
- res = 0;
- mpy = 0;
- } else if (usec < 2000000) { /* Resolution: 1/16s if below 2s */
- res = 0;
- mpy = (usec + 62499) / 62500;
- } else if (usec < 8000000) { /* Resolution: 1/4s if below 8s */
- res = 1;
- mpy = (usec + 249999) / 250000;
- } else if (usec < 32000000) { /* Resolution: 1s if below 32s */
- res = 2;
- mpy = (usec + 999999) / 1000000;
- } else { /* Resolution: 4s up to 124s */
- res = 3;
- mpy = (usec + 3999999) / 4000000;
- if (mpy > 31)
- mpy = 31;
- }
-
- M48_ADDR[WATCH] = (0x80 | /* Steer to RST signal (IRQ = N/C) */
- mpy << 2 |
- res);
-
- SYS_TOD_PROTECT();
-}
-
-/*
- * U-Boot RTC support.
- */
-void
-rtc_get( struct rtc_time *tmp )
-{
- m48_tod_get(&tmp->tm_year,
- &tmp->tm_mon,
- &tmp->tm_mday,
- &tmp->tm_hour,
- &tmp->tm_min,
- &tmp->tm_sec);
- tmp->tm_yday = 0;
- tmp->tm_isdst= 0;
-
-#ifdef RTC_DEBUG
- printf( "Get DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n",
- tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
- tmp->tm_hour, tmp->tm_min, tmp->tm_sec );
-#endif
-}
-
-void
-rtc_set( struct rtc_time *tmp )
-{
- m48_tod_set(tmp->tm_year, /* 1980-2079 */
- tmp->tm_mon, /* 01-12 */
- tmp->tm_mday, /* 01-31 */
- tmp->tm_hour, /* 00-23 */
- tmp->tm_min, /* 00-59 */
- tmp->tm_sec); /* 00-59 */
-
-#ifdef RTC_DEBUG
- printf( "Set DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n",
- tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
- tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
-#endif
-
-}
-
-void
-rtc_reset (void)
-{
- m48_tod_init();
-}
diff --git a/board/bmw/m48t59y.h b/board/bmw/m48t59y.h
deleted file mode 100644
index 717300d957..0000000000
--- a/board/bmw/m48t59y.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * SGS M48-T59Y TOD/NVRAM Driver
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 1999, by Curt McDowell, 08-06-99, Broadcom Corp.
- *
- * (C) Copyright 2001, James Dougherty, 07/18/01, Broadcom Corp.
- *
- * 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 __M48_T59_Y_H
-#define __M48_T59_Y_H
-
-/*
- * M48 T59Y -Timekeeping Battery backed SRAM.
- */
-
-int m48_tod_init(void);
-
-int m48_tod_set(int year,
- int month,
- int day,
- int hour,
- int minute,
- int second);
-
-int m48_tod_get(int *year,
- int *month,
- int *day,
- int *hour,
- int *minute,
- int *second);
-
-int m48_tod_get_second(void);
-
-void m48_watchdog_arm(int usec);
-
-#endif /*!__M48_T59_Y_H */
diff --git a/board/bmw/ns16550.c b/board/bmw/ns16550.c
deleted file mode 100644
index 7064567244..0000000000
--- a/board/bmw/ns16550.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * COM1 NS16550 support
- * originally from linux source (arch/ppc/boot/ns16550.c)
- * modified to use CFG_ISA_MEM and new defines
- */
-
-#include <config.h>
-#include "ns16550.h"
-
-typedef struct NS16550 *NS16550_t;
-
-const NS16550_t COM_PORTS[] =
- { (NS16550_t) ((CFG_EUMB_ADDR) + 0x4500),
-(NS16550_t) ((CFG_EUMB_ADDR) + 0x4600) };
-
-volatile struct NS16550 *NS16550_init (int chan, int baud_divisor)
-{
- volatile struct NS16550 *com_port;
-
- com_port = (struct NS16550 *) COM_PORTS[chan];
- com_port->ier = 0x00;
- com_port->lcr = LCR_BKSE; /* Access baud rate */
- com_port->dll = baud_divisor & 0xff; /* 9600 baud */
- com_port->dlm = (baud_divisor >> 8) & 0xff;
- com_port->lcr = LCR_8N1; /* 8 data, 1 stop, no parity */
- com_port->mcr = MCR_RTS; /* RTS/DTR */
- com_port->fcr = FCR_FIFO_EN | FCR_RXSR | FCR_TXSR; /* Clear & enable FIFOs */
- return (com_port);
-}
-
-void NS16550_reinit (volatile struct NS16550 *com_port, int baud_divisor)
-{
- com_port->ier = 0x00;
- com_port->lcr = LCR_BKSE; /* Access baud rate */
- com_port->dll = baud_divisor & 0xff; /* 9600 baud */
- com_port->dlm = (baud_divisor >> 8) & 0xff;
- com_port->lcr = LCR_8N1; /* 8 data, 1 stop, no parity */
- com_port->mcr = MCR_RTS; /* RTS/DTR */
- com_port->fcr = FCR_FIFO_EN | FCR_RXSR | FCR_TXSR; /* Clear & enable FIFOs */
-}
-
-void NS16550_putc (volatile struct NS16550 *com_port, unsigned char c)
-{
- while ((com_port->lsr & LSR_THRE) == 0);
- com_port->thr = c;
-}
-
-unsigned char NS16550_getc (volatile struct NS16550 *com_port)
-{
- while ((com_port->lsr & LSR_DR) == 0);
- return (com_port->rbr);
-}
-
-int NS16550_tstc (volatile struct NS16550 *com_port)
-{
- return ((com_port->lsr & LSR_DR) != 0);
-}
diff --git a/board/bmw/ns16550.h b/board/bmw/ns16550.h
deleted file mode 100644
index 104f45bfb0..0000000000
--- a/board/bmw/ns16550.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * NS16550 Serial Port
- * originally from linux source (arch/ppc/boot/ns16550.h)
- * modified slightly to
- * have addresses as offsets from CFG_ISA_BASE
- * added a few more definitions
- * added prototypes for ns16550.c
- * reduced no of com ports to 2
- * modifications (c) Rob Taylor, Flying Pig Systems. 2000.
- * further modified to support the 8245 duart
- * modifications (c) Paul Jimenez, Musenki, Inc. 2001.
- */
-
-
-struct NS16550 {
- unsigned char rbrthrdlb; /* 0 */
- unsigned char ierdmb; /* 1 */
- unsigned char iirfcrafr; /* 2 */
- unsigned char lcr; /* 3 */
- unsigned char mcr; /* 4 */
- unsigned char lsr; /* 5 */
- unsigned char msr; /* 6 */
- unsigned char scr; /* 7 */
- unsigned char reserved[2]; /* 8 & 9 */
- unsigned char dsr; /* 10 */
- unsigned char dcr; /* 11 */
-};
-
-
-#define rbr rbrthrdlb
-#define thr rbrthrdlb
-#define dll rbrthrdlb
-#define ier ierdmb
-#define dlm ierdmb
-#define iir iirfcrafr
-#define fcr iirfcrafr
-#define afr iirfcrafr
-
-#define FCR_FIFO_EN 0x01 /*fifo enable */
-#define FCR_RXSR 0x02 /*reciever soft reset */
-#define FCR_TXSR 0x04 /*transmitter soft reset */
-#define FCR_DMS 0x08 /* DMA Mode Select */
-
-#define MCR_RTS 0x02 /* Readyu to Send */
-#define MCR_LOOP 0x10 /* Local loopback mode enable */
-/* #define MCR_DTR 0x01 noton 8245 duart */
-/* #define MCR_DMA_EN 0x04 noton 8245 duart */
-/* #define MCR_TX_DFR 0x08 noton 8245 duart */
-
-#define LCR_WLS_MSK 0x03 /* character length slect mask */
-#define LCR_WLS_5 0x00 /* 5 bit character length */
-#define LCR_WLS_6 0x01 /* 6 bit character length */
-#define LCR_WLS_7 0x02 /* 7 bit character length */
-#define LCR_WLS_8 0x03 /* 8 bit character length */
-#define LCR_STB 0x04 /* Number of stop Bits, off = 1, on = 1.5 or 2) */
-#define LCR_PEN 0x08 /* Parity eneble */
-#define LCR_EPS 0x10 /* Even Parity Select */
-#define LCR_STKP 0x20 /* Stick Parity */
-#define LCR_SBRK 0x40 /* Set Break */
-#define LCR_BKSE 0x80 /* Bank select enable - aka DLAB on 8245 */
-
-#define LSR_DR 0x01 /* Data ready */
-#define LSR_OE 0x02 /* Overrun */
-#define LSR_PE 0x04 /* Parity error */
-#define LSR_FE 0x08 /* Framing error */
-#define LSR_BI 0x10 /* Break */
-#define LSR_THRE 0x20 /* Xmit holding register empty */
-#define LSR_TEMT 0x40 /* Xmitter empty */
-#define LSR_ERR 0x80 /* Error */
-
-/* useful defaults for LCR*/
-#define LCR_8N1 0x03
-
-
-volatile struct NS16550 *NS16550_init (int chan, int baud_divisor);
-void NS16550_putc (volatile struct NS16550 *com_port, unsigned char c);
-unsigned char NS16550_getc (volatile struct NS16550 *com_port);
-int NS16550_tstc (volatile struct NS16550 *com_port);
-void NS16550_reinit (volatile struct NS16550 *com_port, int baud_divisor);
diff --git a/board/bmw/serial.c b/board/bmw/serial.c
deleted file mode 100644
index 712a95b19e..0000000000
--- a/board/bmw/serial.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * (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
- */
-
-#include <common.h>
-#include "ns16550.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if CONFIG_CONS_INDEX == 1
-static struct NS16550 *console =
- (struct NS16550 *) (CFG_EUMB_ADDR + 0x4500);
-#elif CONFIG_CONS_INDEX == 2
-static struct NS16550 *console =
- (struct NS16550 *) (CFG_EUMB_ADDR + 0x4500);
-#else
-#error no valid console defined
-#endif
-
-extern ulong get_bus_freq (ulong);
-
-int serial_init (void)
-{
- int clock_divisor = gd->bus_clk / 16 / gd->baudrate;
-
- NS16550_init (CONFIG_CONS_INDEX - 1, clock_divisor);
-
- return (0);
-}
-
-void serial_putc (const char c)
-{
- if (c == '\n') {
- serial_putc ('\r');
- }
- NS16550_putc (console, c);
-}
-
-void serial_puts (const char *s)
-{
- while (*s) {
- serial_putc (*s++);
- }
-}
-
-
-int serial_getc (void)
-{
- return NS16550_getc (console);
-}
-
-int serial_tstc (void)
-{
- return NS16550_tstc (console);
-}
-
-void serial_setbrg (void)
-{
- int clock_divisor = get_bus_freq (0) / 16 / gd->baudrate;
-
- NS16550_reinit (console, clock_divisor);
-}
diff --git a/board/bmw/u-boot.lds b/board/bmw/u-boot.lds
deleted file mode 100644
index eaee3fdefc..0000000000
--- a/board/bmw/u-boot.lds
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/c2mon/Makefile b/board/c2mon/Makefile
deleted file mode 100644
index 2b10b0c518..0000000000
--- a/board/c2mon/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o pcmcia.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/c2mon/c2mon.c b/board/c2mon/c2mon.c
deleted file mode 100644
index ca8eb0cb02..0000000000
--- a/board/c2mon/c2mon.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] =
-{
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEFC04, 0x11ADFC04, 0xEFBBBC00,
- 0x1FF77C47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FF77C34, 0xEFEABC34, 0x1FB57C35, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEFC04, 0x10ADFC04, 0xF0AFFC00,
- 0xF0AFFC00, 0xF1AFFC00, 0xEFBBBC00, 0x1FF77C47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEBC00, 0x01B93C04, 0x1FF77C47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEBC00, 0x10AD7C00, 0xF0AFFC00,
- 0xF0AFFC00, 0xE1BBBC04, 0x1FF77C47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1FF5FC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- unsigned char *s = (unsigned char *)getenv ("serial#");
-
- puts ("Board: TTTech C2MON ");
-
- for (; s && *s; ++s) {
- if (*s == ' ')
- break;
- putc (*s);
- }
-
- putc ('\n');
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long reg;
- long int size8, size9;
- long int size = 0;
-
- upmconfig (UPMA, (uint *)sdram_table, sizeof(sdram_table) / sizeof(uint));
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_8K;
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller bank 2 the SDRAM bank 2 at physical address 0.
- */
- memctl->memc_or2 = CFG_OR2_PRELIM;
- memctl->memc_br2 = CFG_BR2_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80004105; /* SDRAM bank 0 */
- udelay (1);
- memctl->memc_mcr = 0x80004230; /* SDRAM bank 0 - execute twice */
- udelay (1);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /*
- * Check Bank 0 Memory Size
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL,
- SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL,
- SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size = size9;
-/* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */
- } else { /* back to 8 columns */
- size = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
-/* debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20); */
- }
-
- udelay (1000);
-
- /*
- * Adjust refresh rate depending on SDRAM type
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if (size < 0x02000000) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
- udelay (1000);
- }
-
- /*
- * Final mapping
- */
- memctl->memc_or2 = ((-size) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- /*
- * No bank 1
- *
- * invalidate bank
- */
- memctl->memc_br3 = 0;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
-
- udelay (10000);
-
- return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
diff --git a/board/c2mon/config.mk b/board/c2mon/config.mk
deleted file mode 100644
index c2d21e2e44..0000000000
--- a/board/c2mon/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# TTTech C2MON boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/c2mon/flash.c b/board/c2mon/flash.c
deleted file mode 100644
index b2be21c684..0000000000
--- a/board/c2mon/flash.c
+++ /dev/null
@@ -1,570 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-#ifndef CFG_ENV_ADDR
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
- memctl->memc_br1 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(CFG_FLASH_BASE + size_b0),
- &flash_info[1]);
-
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- &flash_info[1]);
-#endif
- } else {
- memctl->memc_br1 = 0; /* invalidate bank */
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-
- value = addr[0];
-
- switch (value) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ((addr[0] & 0x00800080) != 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/c2mon/pcmcia.c b/board/c2mon/pcmcia.c
deleted file mode 100644
index 5e50c4d9bc..0000000000
--- a/board/c2mon/pcmcia.c
+++ /dev/null
@@ -1,284 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#undef CONFIG_PCMCIA
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-#define CONFIG_PCMCIA
-#endif
-
-#if (CONFIG_COMMANDS & CFG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-#define PCMCIA_BOARD_MSG "C2MON"
-
-static void cfg_ports (void)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- ushort sreg;
-
- immap = (immap_t *)CFG_IMMR;
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
-
- /*
- * Configure Port C for TPS2211 PC-Card Power-Interface Switch
- *
- * Switch off all voltages, assert shutdown
- */
- sreg = immap->im_ioport.iop_pcdat;
- sreg |= (TPS2211_VPPD0 | TPS2211_VPPD1); /* VAVPP => Hi-Z */
- sreg &= ~(TPS2211_VCCD0 | TPS2211_VCCD1); /* 3V and 5V off */
- immap->im_ioport.iop_pcdat = sreg;
-
- immap->im_ioport.iop_pcpar &= ~(TPS2211_OUTPUTS);
- immap->im_ioport.iop_pcdir |= TPS2211_OUTPUTS;
-
- debug ("Set Port C: PAR: %04x DIR: %04x DAT: %04x\n",
- immap->im_ioport.iop_pcpar,
- immap->im_ioport.iop_pcdir,
- immap->im_ioport.iop_pcdat);
-
- /*
- * Configure Port B for TPS2211 PC-Card Power-Interface Switch
- *
- * Over-Current Input only
- */
- cp->cp_pbpar &= ~(TPS2211_INPUTS);
- cp->cp_pbdir &= ~(TPS2211_INPUTS);
-
- debug ("Set Port B: PAR: %08x DIR: %08x DAT: %08x\n",
- cp->cp_pbpar, cp->cp_pbdir, cp->cp_pbdat);
-}
-
-int pcmcia_hardware_enable(int slot)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- volatile sysconf8xx_t *sysp;
- uint reg, pipr, mask;
- ushort sreg;
- int i;
-
- debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- udelay(10000);
-
- immap = (immap_t *)CFG_IMMR;
- sysp = (sysconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_siu_conf));
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
-
- /* Configure Ports for TPS2211A PC-Card Power-Interface Switch */
- cfg_ports ();
-
- /*
- * Configure SIUMCR to enable PCMCIA port B
- * (VFLS[0:1] are not used for debugging, we connect FRZ# instead)
- */
- sysp->sc_siumcr &= ~SIUMCR_DBGC11; /* set DBGC to 00 */
-
- /* clear interrupt state, and disable interrupts */
- pcmp->pcmc_pscr = PCMCIA_MASK(_slot_);
- pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_);
-
- /*
- * Disable interrupts, DMA, and PCMCIA buffers
- * (isolate the interface) and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- /*
- * Make sure there is a card in the slot, then configure the interface.
- */
- udelay(10000);
- debug ("[%d] %s: PIPR(%p)=0x%x\n",
- __LINE__,__FUNCTION__,
- &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
- if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
- printf (" No Card found\n");
- return (1);
- }
-
- /*
- * Power On: Set VAVCC to 3.3V or 5V, set VAVPP to Hi-Z
- */
- mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot);
- pipr = pcmp->pcmc_pipr;
- debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",
- pipr,
- (reg&PCMCIA_VS1(slot))?"n":"ff",
- (reg&PCMCIA_VS2(slot))?"n":"ff");
-
- sreg = immap->im_ioport.iop_pcdat;
- if ((pipr & mask) == mask) {
- sreg |= (TPS2211_VPPD0 | TPS2211_VPPD1 | /* VAVPP => Hi-Z */
- TPS2211_VCCD1); /* 5V on */
- sreg &= ~(TPS2211_VCCD0); /* 3V off */
- puts (" 5.0V card found: ");
- } else {
- sreg |= (TPS2211_VPPD0 | TPS2211_VPPD1 | /* VAVPP => Hi-Z */
- TPS2211_VCCD0); /* 3V on */
- sreg &= ~(TPS2211_VCCD1); /* 5V off */
- puts (" 3.3V card found: ");
- }
-
- debug ("\nPC DAT: %04x -> 3.3V %s 5.0V %s\n",
- sreg,
- ( (sreg & TPS2211_VCCD0) && !(sreg & TPS2211_VCCD1)) ? "on" : "off",
- (!(sreg & TPS2211_VCCD0) && (sreg & TPS2211_VCCD1)) ? "on" : "off"
- );
-
- immap->im_ioport.iop_pcdat = sreg;
-
- /* Wait 500 ms; use this to check for over-current */
- for (i=0; i<5000; ++i) {
- if ((cp->cp_pbdat & TPS2211_OC) == 0) {
- printf (" *** Overcurrent - Safety shutdown ***\n");
- immap->im_ioport.iop_pcdat &= ~(TPS2211_VCCD0|TPS2211_VCCD1);
- return (1);
- }
- udelay (100);
- }
-
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
-
- udelay(250000); /* some cards need >150 ms to come up :-( */
-
- debug ("# hardware_enable done\n");
-
- return (0);
-}
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
-
- debug ("hardware_disable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- immap = (immap_t *)CFG_IMMR;
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
-
- /* Configure PCMCIA General Control Register */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
-
- /* ALl voltages off / Hi-Z */
- immap->im_ioport.iop_pcdat |= (TPS2211_VPPD0 | TPS2211_VPPD1 |
- TPS2211_VCCD0 | TPS2211_VCCD1 );
-
- udelay(10000);
-
- return (0);
-}
-#endif /* CFG_CMD_PCMCIA */
-
-
-int pcmcia_voltage_set(int slot, int vcc, int vpp)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
- ushort sreg;
-
- debug ("voltage_set: "
- PCMCIA_BOARD_MSG
- " Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",
- 'A'+slot, vcc/10, vcc%10, vpp/10, vcc%10);
-
- immap = (immap_t *)CFG_IMMR;
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- /*
- * Disable PCMCIA buffers (isolate the interface)
- * and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- /*
- * Configure Port C pins for
- * 5 Volts Enable and 3 Volts enable,
- * Turn all power pins to Hi-Z
- */
- debug ("PCMCIA power OFF\n");
- cfg_ports (); /* Enables switch, but all in Hi-Z */
-
- sreg = immap->im_ioport.iop_pcdat;
- sreg |= TPS2211_VPPD0 | TPS2211_VPPD1; /* VAVPP always Hi-Z */
-
- switch(vcc) {
- case 0: break; /* Switch off */
- case 33: sreg |= TPS2211_VCCD0; /* Switch on 3.3V */
- sreg &= ~TPS2211_VCCD1;
- break;
- case 50: sreg &= ~TPS2211_VCCD0; /* Switch on 5.0V */
- sreg |= TPS2211_VCCD1;
- break;
- default: goto done;
- }
-
- /* Checking supported voltages */
-
- debug ("PIPR: 0x%x --> %s\n",
- pcmp->pcmc_pipr,
- (pcmp->pcmc_pipr & 0x00008000) ? "only 5 V" : "can do 3.3V");
-
- immap->im_ioport.iop_pcdat = sreg;
-
-#ifdef DEBUG
-{
- char *s;
-
- if ((sreg & TPS2211_VCCD0) && !(sreg & TPS2211_VCCD1)) {
- s = "at 3.3V";
- } else if (!(sreg & TPS2211_VCCD0) && (sreg & TPS2211_VCCD1)) {
- s = "at 5.0V";
- } else {
- s = "down";
- }
- printf ("PCMCIA powered %s\n", s);
-}
-#endif
-
-done:
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",
- slot+'A');
- return (0);
-}
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/c2mon/u-boot.lds b/board/c2mon/u-boot.lds
deleted file mode 100644
index cdf550f67b..0000000000
--- a/board/c2mon/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/c2mon/u-boot.lds.debug b/board/c2mon/u-boot.lds.debug
deleted file mode 100644
index 3165d56345..0000000000
--- a/board/c2mon/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/cerf250/Makefile b/board/cerf250/Makefile
deleted file mode 100644
index 50d07b8022..0000000000
--- a/board/cerf250/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := cerf250.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cerf250/cerf250.c b/board/cerf250/cerf250.c
deleted file mode 100644
index 307894fd61..0000000000
--- a/board/cerf250/cerf250.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* arch number of cerf PXA Board */
- gd->bd->bi_arch_number = MACH_TYPE_PXA_CERF;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xa0000100;
-
- return 0;
-}
-
-int board_late_init(void)
-{
- setenv("stdout", "serial");
- setenv("stderr", "serial");
- return 0;
-}
-
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
- gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
- gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
- gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
- gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
-
- return 0;
-}
diff --git a/board/cerf250/config.mk b/board/cerf250/config.mk
deleted file mode 100644
index 1a86cc998e..0000000000
--- a/board/cerf250/config.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Cerf board with PXA250 cpu
-#
-#
-TEXT_BASE = 0xa3080000
diff --git a/board/cerf250/flash.c b/board/cerf250/flash.c
deleted file mode 100644
index ba82892dde..0000000000
--- a/board/cerf250/flash.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (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 <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-void inline spin_wheel (void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- case 1:
- flash_get_size ((FPW *) PHYS_FLASH_2, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_2, &flash_info[i]);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect ( FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0] );
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0] );
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x02000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = 0x00500050; /* clear status register cmd. */
- *addr = 0x00FF00FF; /* resest to read mode */
-
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/cerf250/lowlevel_init.S b/board/cerf250/lowlevel_init.S
deleted file mode 100644
index c9b68d7ff3..0000000000
--- a/board/cerf250/lowlevel_init.S
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * Most of this taken from Redboot hal_platform_setup.h with cleanup
- *
- * NOTE: I haven't clean this up considerably, just enough to get it
- * running. See hal_platform_setup.h for the source. See
- * board/cradle/lowlevel_init.S for another PXA250 setup that is
- * much cleaner.
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-DRAM_SIZE: .long CFG_DRAM_SIZE
-
-/* wait for coprocessor write complete */
- .macro CPWAIT reg
- mrc p15,0,\reg,c2,c0,0
- mov \reg,\reg
- sub pc,pc,#4
- .endm
-
-
-/*
- * Memory setup
- */
-
-.globl lowlevel_init
-lowlevel_init:
-
- /* Set up GPIO pins first ----------------------------------------- */
-
- ldr r0, =GPSR0
- ldr r1, =CFG_GPSR0_VAL
- str r1, [r0]
-
- ldr r0, =GPSR1
- ldr r1, =CFG_GPSR1_VAL
- str r1, [r0]
-
- ldr r0, =GPSR2
- ldr r1, =CFG_GPSR2_VAL
- str r1, [r0]
-
- ldr r0, =GPCR0
- ldr r1, =CFG_GPCR0_VAL
- str r1, [r0]
-
- ldr r0, =GPCR1
- ldr r1, =CFG_GPCR1_VAL
- str r1, [r0]
-
- ldr r0, =GPCR2
- ldr r1, =CFG_GPCR2_VAL
- str r1, [r0]
-
- ldr r0, =GPDR0
- ldr r1, =CFG_GPDR0_VAL
- str r1, [r0]
-
- ldr r0, =GPDR1
- ldr r1, =CFG_GPDR1_VAL
- str r1, [r0]
-
- ldr r0, =GPDR2
- ldr r1, =CFG_GPDR2_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_L
- ldr r1, =CFG_GAFR0_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_U
- ldr r1, =CFG_GAFR0_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_L
- ldr r1, =CFG_GAFR1_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_U
- ldr r1, =CFG_GAFR1_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_L
- ldr r1, =CFG_GAFR2_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_U
- ldr r1, =CFG_GAFR2_U_VAL
- str r1, [r0]
-
- ldr r0, =PSSR /* enable GPIO pins */
- ldr r1, =CFG_PSSR_VAL
- str r1, [r0]
-
- /* ---------------------------------------------------------------- */
- /* Enable memory interface */
- /* */
- /* The sequence below is based on the recommended init steps */
- /* detailed in the Intel PXA250 Operating Systems Developers Guide, */
- /* Chapter 10. */
- /* ---------------------------------------------------------------- */
-
- /* ---------------------------------------------------------------- */
- /* Step 1: Wait for at least 200 microsedonds to allow internal */
- /* clocks to settle. Only necessary after hard reset... */
- /* FIXME: can be optimized later */
- /* ---------------------------------------------------------------- */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-mem_init:
-
- ldr r1, =MEMC_BASE /* get memory controller base addr. */
-
- /* ---------------------------------------------------------------- */
- /* Step 2a: Initialize Asynchronous static memory controller */
- /* ---------------------------------------------------------------- */
-
- /* MSC registers: timing, bus width, mem type */
-
- /* MSC0: nCS(0,1) */
- ldr r2, =CFG_MSC0_VAL
- str r2, [r1, #MSC0_OFFSET]
- ldr r2, [r1, #MSC0_OFFSET] /* read back to ensure */
- /* that data latches */
- /* MSC1: nCS(2,3) */
- ldr r2, =CFG_MSC1_VAL
- str r2, [r1, #MSC1_OFFSET]
- ldr r2, [r1, #MSC1_OFFSET]
-
- /* MSC2: nCS(4,5) */
- ldr r2, =CFG_MSC2_VAL
- str r2, [r1, #MSC2_OFFSET]
- ldr r2, [r1, #MSC2_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2b: Initialize Card Interface */
- /* ---------------------------------------------------------------- */
-
- /* MECR: Memory Expansion Card Register */
- ldr r2, =CFG_MECR_VAL
- str r2, [r1, #MECR_OFFSET]
- ldr r2, [r1, #MECR_OFFSET]
-
- /* MCMEM0: Card Interface slot 0 timing */
- ldr r2, =CFG_MCMEM0_VAL
- str r2, [r1, #MCMEM0_OFFSET]
- ldr r2, [r1, #MCMEM0_OFFSET]
-
- /* MCMEM1: Card Interface slot 1 timing */
- ldr r2, =CFG_MCMEM1_VAL
- str r2, [r1, #MCMEM1_OFFSET]
- ldr r2, [r1, #MCMEM1_OFFSET]
-
- /* MCATT0: Card Interface Attribute Space Timing, slot 0 */
- ldr r2, =CFG_MCATT0_VAL
- str r2, [r1, #MCATT0_OFFSET]
- ldr r2, [r1, #MCATT0_OFFSET]
-
- /* MCATT1: Card Interface Attribute Space Timing, slot 1 */
- ldr r2, =CFG_MCATT1_VAL
- str r2, [r1, #MCATT1_OFFSET]
- ldr r2, [r1, #MCATT1_OFFSET]
-
- /* MCIO0: Card Interface I/O Space Timing, slot 0 */
- ldr r2, =CFG_MCIO0_VAL
- str r2, [r1, #MCIO0_OFFSET]
- ldr r2, [r1, #MCIO0_OFFSET]
-
- /* MCIO1: Card Interface I/O Space Timing, slot 1 */
- ldr r2, =CFG_MCIO1_VAL
- str r2, [r1, #MCIO1_OFFSET]
- ldr r2, [r1, #MCIO1_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2c: Write FLYCNFG FIXME: what's that??? */
- /* ---------------------------------------------------------------- */
-
-
- /* ---------------------------------------------------------------- */
- /* Step 2d: Initialize Timing for Sync Memory (SDCLK0) */
- /* ---------------------------------------------------------------- */
-
- /* Before accessing MDREFR we need a valid DRI field, so we set */
- /* this to power on defaults + DRI field, set SDRAM clocks free running */
-
- ldr r3, =CFG_MDREFR_VAL
- ldr r2, =0xFFF
- and r3, r3, r2
-
- ldr r0, [r1, #MDREFR_OFFSET]
- bic r0, r0, r2
- bic r0, r0, #(MDREFR_K0FREE|MDREFR_K1FREE|MDREFR_K2FREE)
- orr r0, r0, r3
-
- str r0, [r1, #MDREFR_OFFSET] /* write back MDREFR */
-
-
- /* ---------------------------------------------------------------- */
- /* Step 3: Initialize Synchronous Static Memory (Flash/Peripherals) */
- /* ---------------------------------------------------------------- */
-
- /* Initialize SXCNFG register. Assert the enable bits */
-
- /* Write SXMRS to cause an MRS command to all enabled banks of */
- /* synchronous static memory. Note that SXLCR need not be written */
- /* at this time. */
-
- /* FIXME: we use async mode for now */
-
-
- /* ---------------------------------------------------------------- */
- /* Step 4: Initialize SDRAM */
- /* ---------------------------------------------------------------- */
-
- /* set MDREFR according to user define with exception of a few bits */
-
- ldr r4, =CFG_MDREFR_VAL
- ldr r2, =(MDREFR_K0RUN|MDREFR_K0DB2|MDREFR_K1RUN|MDREFR_K1DB2|\
- MDREFR_K2RUN |MDREFR_K2DB2)
- and r4, r4, r2
- bic r0, r0, r2
- orr r0, r0, r4
-
- str r0, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r0, [r1, #MDREFR_OFFSET]
-
- /* Step 4b: de-assert MDREFR:SLFRSH. */
-
- bic r0, r0, #(MDREFR_SLFRSH)
- str r0, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r0, [r1, #MDREFR_OFFSET]
-
-
- /* Step 4c: assert MDREFR:E1PIN and E0PIO as desired, set KXFREE */
-
- ldr r4, =CFG_MDREFR_VAL
- ldr r2, =(MDREFR_E0PIN|MDREFR_E1PIN|MDREFR_K0FREE| \
- MDREFR_K1FREE | MDREFR_K2FREE)
- and r4, r4, r2
- orr r0, r0, r4
- str r0, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r0, [r1, #MDREFR_OFFSET]
-
-
- /* Step 4d: write MDCNFG with MDCNFG:DEx deasserted (set to 0), to */
- /* configure but not enable each SDRAM partition pair. */
-
- ldr r4, =CFG_MDCNFG_VAL
- bic r4, r4, #(MDCNFG_DE0|MDCNFG_DE1)
- bic r4, r4, #(MDCNFG_DE2|MDCNFG_DE3)
- str r4, [r1, #MDCNFG_OFFSET] /* write back MDCNFG */
- ldr r4, [r1, #MDCNFG_OFFSET]
-
-
- /* Step 4e: Wait for the clock to the SDRAMs to stabilize, */
- /* 100..200 µsec. */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-
- /* Step 4f: Trigger a number (usually 8) refresh cycles by */
- /* attempting non-burst read or write accesses to disabled */
- /* SDRAM, as commonly specified in the power up sequence */
- /* documented in SDRAM data sheets. The address(es) used */
- /* for this purpose must not be cacheable. */
-
- ldr r3, =CFG_DRAM_BASE
-.rept 8
- str r2, [r3]
-.endr
-
- /* Step 4g: Write MDCNFG with enable bits asserted */
- /* (MDCNFG:DEx set to 1). */
-
- ldr r3, [r1, #MDCNFG_OFFSET]
- orr r3, r3, #(MDCNFG_DE0|MDCNFG_DE1)
- str r3, [r1, #MDCNFG_OFFSET]
-
- /* Step 4h: Write MDMRS. */
-
- ldr r2, =CFG_MDMRS_VAL
- str r2, [r1, #MDMRS_OFFSET]
-
-
- /* We are finished with Intel's memory controller initialisation */
-
-
- /* ---------------------------------------------------------------- */
- /* Disable (mask) all interrupts at interrupt controller */
- /* ---------------------------------------------------------------- */
-
-initirqs:
-
- mov r1, #0 /* clear int. level register (IRQ, not FIQ) */
- ldr r2, =ICLR
- str r1, [r2]
-
- ldr r2, =ICMR /* mask all interrupts at the controller */
- str r1, [r2]
-
-
- /* ---------------------------------------------------------------- */
- /* Clock initialisation */
- /* ---------------------------------------------------------------- */
-
-initclks:
-
- /* Disable the peripheral clocks, and set the core clock frequency */
-
- /* Turn Off ALL on-chip peripheral clocks for re-configuration */
- /* Note: See label 'ENABLECLKS' for the re-enabling */
- ldr r1, =CKEN
- mov r2, #0
- str r2, [r1]
-
-
- /* default value in case no valid rotary switch setting is found */
- ldr r2, =(CCCR_L27|CCCR_M2|CCCR_N10) /* DEFAULT: {200/200/100} */
-
- /* ... and write the core clock config register */
- ldr r1, =CCCR
- str r2, [r1]
-
-#ifdef RTC
- /* enable the 32Khz oscillator for RTC and PowerManager */
-
- ldr r1, =OSCC
- mov r2, #OSCC_OON
- str r2, [r1]
-
- /* NOTE: spin here until OSCC.OOK get set, meaning the PLL */
- /* has settled. */
-60:
- ldr r2, [r1]
- ands r2, r2, #1
- beq 60b
-#endif
-
- /* ---------------------------------------------------------------- */
- /* */
- /* ---------------------------------------------------------------- */
-
- /* Save SDRAM size */
- ldr r1, =DRAM_SIZE
- str r8, [r1]
-
- /* Interrupt init: Mask all interrupts */
- ldr r0, =ICMR /* enable no sources */
- mov r1, #0
- str r1, [r0]
-
- /* FIXME */
-
-#define NODEBUG
-#ifdef NODEBUG
- /*Disable software and data breakpoints */
- mov r0,#0
- mcr p15,0,r0,c14,c8,0 /* ibcr0 */
- mcr p15,0,r0,c14,c9,0 /* ibcr1 */
- mcr p15,0,r0,c14,c4,0 /* dbcon */
-
- /*Enable all debug functionality */
- mov r0,#0x80000000
- mcr p14,0,r0,c10,c0,0 /* dcsr */
-
-#endif
-
- /* ---------------------------------------------------------------- */
- /* End lowlevel_init */
- /* ---------------------------------------------------------------- */
-
-endlowlevel_init:
-
- mov pc, lr
diff --git a/board/cerf250/u-boot.lds b/board/cerf250/u-boot.lds
deleted file mode 100644
index f0102391b3..0000000000
--- a/board/cerf250/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/cm4008/Makefile b/board/cm4008/Makefile
deleted file mode 100644
index f53404148a..0000000000
--- a/board/cm4008/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := cm4008.o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cm4008/cm4008.c b/board/cm4008/cm4008.c
deleted file mode 100644
index d34737c497..0000000000
--- a/board/cm4008/cm4008.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * (C) Copyright 2005
- * Greg Ungerer, OpenGear Inc, <greg.ungerer@opengear.com>
- *
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-#include <asm/arch/platform.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-#define ks8695_read(a) *((volatile unsigned int *) (KS8695_IO_BASE+(a)))
-#define ks8695_write(a,b) *((volatile unsigned int *) (KS8695_IO_BASE+(a))) = (b)
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-int env_flash_cmdline (void)
-{
- unsigned char *sp = (unsigned char *) 0x0201c020;
- unsigned char *ep;
- int len;
-
- /* Check if "erase" push button is depressed */
- if ((ks8695_read(KS8695_GPIO_DATA) & 0x8) == 0) {
- printf("### Entering network recovery mode...\n");
- setenv("bootargs", "console=ttyAM0,115200 mem=16M initrd=0x400000,6M root=/dev/ram0");
- setenv("bootcmd", "bootp 0x400000; gofsk 0x400000");
- setenv("bootdelay", "2");
- return 0;
- }
-
- /* Check for flash based kernel boot args to use as default */
- for (ep = sp, len = 0; ((len < 1024) && (*ep != 0)); ep++, len++)
- ;
-
- if ((len > 0) && (len <1024))
- setenv("bootargs", sp);
-
- return 0;
-}
-
-int board_late_init (void)
-{
- return 0;
-}
-
-
-int board_init (void)
-{
- /* arch number of CM4008 */
- gd->bd->bi_arch_number = 624;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x00000100;
-
- /* power down all but port 0 on the switch */
- ks8695_write(KS8695_SWITCH_LPPM12, 0x00000005);
- ks8695_write(KS8695_SWITCH_LPPM34, 0x00050005);
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return (0);
-}
diff --git a/board/cm4008/config.mk b/board/cm4008/config.mk
deleted file mode 100644
index 74eaeb0e66..0000000000
--- a/board/cm4008/config.mk
+++ /dev/null
@@ -1 +0,0 @@
-TEXT_BASE = 0x00f00000
diff --git a/board/cm4008/flash.c b/board/cm4008/flash.c
deleted file mode 100644
index 86c8e2a5f0..0000000000
--- a/board/cm4008/flash.c
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * (C) Copyright 2005
- * Greg Ungerer, OpenGear Inc, greg.ungerer@opengear.com
- *
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (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 <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (unsigned char * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, unsigned char data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-void inline spin_wheel (void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((unsigned char *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- case 1:
- /* ignore for now */
- flash_info[i].flash_id = FLASH_UNKNOWN;
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + _bss_start - _armboot_start,
- &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN)
- return;
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (unsigned char * addr, flash_info_t * info)
-{
- volatile unsigned char value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = 0xAA;
- addr[0x2AAA] = 0x55;
- addr[0x5555] = 0x90;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (unsigned char)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = 0xFF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[2]; /* device ID */
-
- switch (value) {
-
- case (unsigned char)INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (unsigned char)INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = 0xFF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot)
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- else
- printf ("\n");
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- volatile unsigned char *addr;
- unsigned char status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- addr = (volatile unsigned char *) (info->start[sect]);
- *addr = 0x50; /* clear status register */
- *addr = 0x20; /* erase setup */
- *addr = 0xD0; /* erase confirm */
-
- while (((status = *addr) & 0x80) != 0x80) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = 0xB0; /* suspend erase */
- *addr = 0xFF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = 0x50; /* clear status register cmd */
- *addr = 0xFF; /* resest to read mode */
-
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- unsigned char data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN)
- return 4;
-
- wp = addr;
- port_width = 1;
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, unsigned char data)
-{
- volatile unsigned char *addr = (volatile unsigned char *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr,
- (ulong) * addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = 0x40; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & 0x80) != 0x80) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = 0xFF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = 0xFF; /* restore read mode */
-
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/cm4008/u-boot.lds b/board/cm4008/u-boot.lds
deleted file mode 100644
index ec09fa23c3..0000000000
--- a/board/cm4008/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/cm41xx/Makefile b/board/cm41xx/Makefile
deleted file mode 100644
index 5c20477d5d..0000000000
--- a/board/cm41xx/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := cm41xx.o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cm41xx/cm41xx.c b/board/cm41xx/cm41xx.c
deleted file mode 100644
index 02d05afef6..0000000000
--- a/board/cm41xx/cm41xx.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * (C) Copyright 2005
- * Greg Ungerer, OpenGear Inc, <greg.ungerer@opengear.com>
- *
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-#include <asm/arch/platform.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-#define ks8695_read(a) *((volatile unsigned int *) (KS8695_IO_BASE+(a)))
-#define ks8695_write(a,b) *((volatile unsigned int *) (KS8695_IO_BASE+(a))) = (b)
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-int env_flash_cmdline (void)
-{
- unsigned char *sp = (unsigned char *) 0x0201c020;
- unsigned char *ep;
- int len;
-
- /* Check if "erase" push button is depressed */
- if ((ks8695_read(KS8695_GPIO_DATA) & 0x8) == 0) {
- printf("### Entering network recovery mode...\n");
- setenv("bootargs", "console=ttyAM0,115200 mem=32M initrd=0x400000,8M root=/dev/ram0");
- setenv("bootcmd", "bootp 0x400000; gofsk 0x400000");
- setenv("bootdelay", "2");
- return 0;
- }
-
- /* Check for flash based kernel boot args to use as default */
- for (ep = sp, len = 0; ((len < 1024) && (*ep != 0)); ep++, len++)
- ;
-
- if ((len > 0) && (len <1024))
- setenv("bootargs", sp);
-
- return 0;
-}
-
-int board_late_init (void)
-{
- return 0;
-}
-
-
-int board_init (void)
-{
- /* arch number of CM41xx */
- gd->bd->bi_arch_number = 672;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x00000100;
-
- /* power down all but port 0 on the switch */
- ks8695_write(KS8695_SWITCH_LPPM12, 0x00000005);
- ks8695_write(KS8695_SWITCH_LPPM34, 0x00050005);
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return (0);
-}
diff --git a/board/cm41xx/config.mk b/board/cm41xx/config.mk
deleted file mode 100644
index 74eaeb0e66..0000000000
--- a/board/cm41xx/config.mk
+++ /dev/null
@@ -1 +0,0 @@
-TEXT_BASE = 0x00f00000
diff --git a/board/cm41xx/flash.c b/board/cm41xx/flash.c
deleted file mode 100644
index 86c8e2a5f0..0000000000
--- a/board/cm41xx/flash.c
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * (C) Copyright 2005
- * Greg Ungerer, OpenGear Inc, greg.ungerer@opengear.com
- *
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (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 <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (unsigned char * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, unsigned char data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-void inline spin_wheel (void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((unsigned char *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- case 1:
- /* ignore for now */
- flash_info[i].flash_id = FLASH_UNKNOWN;
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + _bss_start - _armboot_start,
- &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN)
- return;
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (unsigned char * addr, flash_info_t * info)
-{
- volatile unsigned char value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = 0xAA;
- addr[0x2AAA] = 0x55;
- addr[0x5555] = 0x90;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (unsigned char)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = 0xFF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[2]; /* device ID */
-
- switch (value) {
-
- case (unsigned char)INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (unsigned char)INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = 0xFF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot)
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- else
- printf ("\n");
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- volatile unsigned char *addr;
- unsigned char status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- addr = (volatile unsigned char *) (info->start[sect]);
- *addr = 0x50; /* clear status register */
- *addr = 0x20; /* erase setup */
- *addr = 0xD0; /* erase confirm */
-
- while (((status = *addr) & 0x80) != 0x80) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = 0xB0; /* suspend erase */
- *addr = 0xFF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = 0x50; /* clear status register cmd */
- *addr = 0xFF; /* resest to read mode */
-
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- unsigned char data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN)
- return 4;
-
- wp = addr;
- port_width = 1;
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, unsigned char data)
-{
- volatile unsigned char *addr = (volatile unsigned char *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr,
- (ulong) * addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = 0x40; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & 0x80) != 0x80) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = 0xFF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = 0xFF; /* restore read mode */
-
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/cm41xx/u-boot.lds b/board/cm41xx/u-boot.lds
deleted file mode 100644
index ec09fa23c3..0000000000
--- a/board/cm41xx/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/cmc_pu2/Makefile b/board/cmc_pu2/Makefile
deleted file mode 100644
index d445f287cb..0000000000
--- a/board/cmc_pu2/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := cmc_pu2.o at45.o flash.o load_sernum_ethaddr.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cmc_pu2/at45.c b/board/cmc_pu2/at45.c
deleted file mode 100644
index 3c00132164..0000000000
--- a/board/cmc_pu2/at45.c
+++ /dev/null
@@ -1,621 +0,0 @@
-/* Driver for ATMEL DataFlash support
- * Author : Hamid Ikdoumi (Atmel)
- *
- * 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 <config.h>
-#include <common.h>
-#include <asm/hardware.h>
-
-#ifdef CONFIG_HAS_DATAFLASH
-#include <dataflash.h>
-
-#define AT91C_SPI_CLK 10000000 /* Max Value = 10MHz to be compliant to
-the Continuous Array Read function */
-
-/* AC Characteristics */
-/* DLYBS = tCSS = 250ns min and DLYBCT = tCSH = 250ns */
-#define DATAFLASH_TCSS (0xC << 16)
-#define DATAFLASH_TCHS (0x1 << 24)
-
-#define AT91C_TIMEOUT_WRDY 200000
-#define AT91C_SPI_PCS0_SERIAL_DATAFLASH 0xE /* Chip Select 0 : NPCS0 %1110 */
-#define AT91C_SPI_PCS3_DATAFLASH_CARD 0x7 /* Chip Select 3 : NPCS3 %0111 */
-
-void AT91F_SpiInit(void) {
-
-/*-------------------------------------------------------------------*/
-/* SPI DataFlash Init */
-/*-------------------------------------------------------------------*/
- /* Configure PIOs */
- AT91C_BASE_PIOA->PIO_ASR = AT91C_PA3_NPCS0 | AT91C_PA4_NPCS1 | AT91C_PA1_MOSI | AT91C_PA5_NPCS2 |
- AT91C_PA6_NPCS3 | AT91C_PA0_MISO | AT91C_PA2_SPCK;
- AT91C_BASE_PIOA->PIO_PDR = AT91C_PA3_NPCS0 | AT91C_PA4_NPCS1 | AT91C_PA1_MOSI | AT91C_PA5_NPCS2 |
- AT91C_PA6_NPCS3 | AT91C_PA0_MISO | AT91C_PA2_SPCK;
- /* Enable CLock */
- AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_SPI;
-
- /* Reset the SPI */
- AT91C_BASE_SPI->SPI_CR = AT91C_SPI_SWRST;
-
- /* Configure SPI in Master Mode with No CS selected !!! */
- AT91C_BASE_SPI->SPI_MR = AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | AT91C_SPI_PCS;
-
- /* Configure CS0 and CS3 */
- *(AT91C_SPI_CSR + 0) = AT91C_SPI_CPOL | (AT91C_SPI_DLYBS & DATAFLASH_TCSS) | (AT91C_SPI_DLYBCT &
- DATAFLASH_TCHS) | ((AT91C_MASTER_CLOCK / (2*AT91C_SPI_CLK)) << 8);
-
- *(AT91C_SPI_CSR + 3) = AT91C_SPI_CPOL | (AT91C_SPI_DLYBS & DATAFLASH_TCSS) | (AT91C_SPI_DLYBCT &
- DATAFLASH_TCHS) | ((AT91C_MASTER_CLOCK / (2*AT91C_SPI_CLK)) << 8);
-
-}
-
-void AT91F_SpiEnable(int cs) {
- switch(cs) {
- case 0: /* Configure SPI CS0 for Serial DataFlash AT45DBxx */
- AT91C_BASE_SPI->SPI_MR &= 0xFFF0FFFF;
- AT91C_BASE_SPI->SPI_MR |= ((AT91C_SPI_PCS0_SERIAL_DATAFLASH<<16) & AT91C_SPI_PCS);
- break;
- case 3: /* Configure SPI CS3 for Serial DataFlash Card */
- /* Set up PIO SDC_TYPE to switch on DataFlash Card and not MMC/SDCard */
- AT91C_BASE_PIOB->PIO_PER = AT91C_PIO_PB7; /* Set in PIO mode */
- AT91C_BASE_PIOB->PIO_OER = AT91C_PIO_PB7; /* Configure in output */
- /* Clear Output */
- AT91C_BASE_PIOB->PIO_CODR = AT91C_PIO_PB7;
- /* Configure PCS */
- AT91C_BASE_SPI->SPI_MR &= 0xFFF0FFFF;
- AT91C_BASE_SPI->SPI_MR |= ((AT91C_SPI_PCS3_DATAFLASH_CARD<<16) & AT91C_SPI_PCS);
- break;
- }
-
- /* SPI_Enable */
- AT91C_BASE_SPI->SPI_CR = AT91C_SPI_SPIEN;
-}
-
-/*----------------------------------------------------------------------------*/
-/* \fn AT91F_SpiWrite */
-/* \brief Set the PDC registers for a transfert */
-/*----------------------------------------------------------------------------*/
-unsigned int AT91F_SpiWrite ( AT91PS_DataflashDesc pDesc )
-{
- unsigned int timeout;
-
- pDesc->state = BUSY;
-
- AT91C_BASE_SPI->SPI_PTCR = AT91C_PDC_TXTDIS + AT91C_PDC_RXTDIS;
-
- /* Initialize the Transmit and Receive Pointer */
- AT91C_BASE_SPI->SPI_RPR = (unsigned int)pDesc->rx_cmd_pt ;
- AT91C_BASE_SPI->SPI_TPR = (unsigned int)pDesc->tx_cmd_pt ;
-
- /* Intialize the Transmit and Receive Counters */
- AT91C_BASE_SPI->SPI_RCR = pDesc->rx_cmd_size;
- AT91C_BASE_SPI->SPI_TCR = pDesc->tx_cmd_size;
-
- if ( pDesc->tx_data_size != 0 ) {
- /* Initialize the Next Transmit and Next Receive Pointer */
- AT91C_BASE_SPI->SPI_RNPR = (unsigned int)pDesc->rx_data_pt ;
- AT91C_BASE_SPI->SPI_TNPR = (unsigned int)pDesc->tx_data_pt ;
-
- /* Intialize the Next Transmit and Next Receive Counters */
- AT91C_BASE_SPI->SPI_RNCR = pDesc->rx_data_size ;
- AT91C_BASE_SPI->SPI_TNCR = pDesc->tx_data_size ;
- }
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
- timeout = 0;
-
- AT91C_BASE_SPI->SPI_PTCR = AT91C_PDC_TXTEN + AT91C_PDC_RXTEN;
- while(!(AT91C_BASE_SPI->SPI_SR & AT91C_SPI_RXBUFF) && ((timeout = get_timer_masked() ) < CFG_SPI_WRITE_TOUT));
- AT91C_BASE_SPI->SPI_PTCR = AT91C_PDC_TXTDIS + AT91C_PDC_RXTDIS;
- pDesc->state = IDLE;
-
- if (timeout >= CFG_SPI_WRITE_TOUT){
- printf("Error Timeout\n\r");
- return DATAFLASH_ERROR;
- }
-
- return DATAFLASH_OK;
-}
-
-
-/*----------------------------------------------------------------------*/
-/* \fn AT91F_DataFlashSendCommand */
-/* \brief Generic function to send a command to the dataflash */
-/*----------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashSendCommand(
- AT91PS_DataFlash pDataFlash,
- unsigned char OpCode,
- unsigned int CmdSize,
- unsigned int DataflashAddress)
-{
- unsigned int adr;
-
- if ( (pDataFlash->pDataFlashDesc->state) != IDLE)
- return DATAFLASH_BUSY;
-
- /* process the address to obtain page address and byte address */
- adr = ((DataflashAddress / (pDataFlash->pDevice->pages_size)) << pDataFlash->pDevice->page_offset) + (DataflashAddress % (pDataFlash->pDevice->pages_size));
-
- /* fill the command buffer */
- pDataFlash->pDataFlashDesc->command[0] = OpCode;
- if (pDataFlash->pDevice->pages_number >= 16384) {
- pDataFlash->pDataFlashDesc->command[1] = (unsigned char)((adr & 0x0F000000) >> 24);
- pDataFlash->pDataFlashDesc->command[2] = (unsigned char)((adr & 0x00FF0000) >> 16);
- pDataFlash->pDataFlashDesc->command[3] = (unsigned char)((adr & 0x0000FF00) >> 8);
- pDataFlash->pDataFlashDesc->command[4] = (unsigned char)(adr & 0x000000FF);
- } else {
- pDataFlash->pDataFlashDesc->command[1] = (unsigned char)((adr & 0x00FF0000) >> 16);
- pDataFlash->pDataFlashDesc->command[2] = (unsigned char)((adr & 0x0000FF00) >> 8);
- pDataFlash->pDataFlashDesc->command[3] = (unsigned char)(adr & 0x000000FF) ;
- pDataFlash->pDataFlashDesc->command[4] = 0;
- }
- pDataFlash->pDataFlashDesc->command[5] = 0;
- pDataFlash->pDataFlashDesc->command[6] = 0;
- pDataFlash->pDataFlashDesc->command[7] = 0;
-
- /* Initialize the SpiData structure for the spi write fuction */
- pDataFlash->pDataFlashDesc->tx_cmd_pt = pDataFlash->pDataFlashDesc->command ;
- pDataFlash->pDataFlashDesc->tx_cmd_size = CmdSize ;
- pDataFlash->pDataFlashDesc->rx_cmd_pt = pDataFlash->pDataFlashDesc->command ;
- pDataFlash->pDataFlashDesc->rx_cmd_size = CmdSize ;
-
- /* send the command and read the data */
- return AT91F_SpiWrite (pDataFlash->pDataFlashDesc);
-}
-
-
-/*----------------------------------------------------------------------*/
-/* \fn AT91F_DataFlashGetStatus */
-/* \brief Read the status register of the dataflash */
-/*----------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashGetStatus(AT91PS_DataflashDesc pDesc)
-{
- AT91S_DataFlashStatus status;
-
- /* if a transfert is in progress ==> return 0 */
- if( (pDesc->state) != IDLE)
- return DATAFLASH_BUSY;
-
- /* first send the read status command (D7H) */
- pDesc->command[0] = DB_STATUS;
- pDesc->command[1] = 0;
-
- pDesc->DataFlash_state = GET_STATUS;
- pDesc->tx_data_size = 0 ; /* Transmit the command and receive response */
- pDesc->tx_cmd_pt = pDesc->command ;
- pDesc->rx_cmd_pt = pDesc->command ;
- pDesc->rx_cmd_size = 2 ;
- pDesc->tx_cmd_size = 2 ;
- status = AT91F_SpiWrite (pDesc);
-
- pDesc->DataFlash_state = *( (unsigned char *) (pDesc->rx_cmd_pt) +1);
-
- return status;
-}
-
-
-/*----------------------------------------------------------------------*/
-/* \fn AT91F_DataFlashWaitReady */
-/* \brief wait for dataflash ready (bit7 of the status register == 1) */
-/*----------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashWaitReady(AT91PS_DataflashDesc pDataFlashDesc, unsigned int timeout)
-{
- pDataFlashDesc->DataFlash_state = IDLE;
-
- do {
- AT91F_DataFlashGetStatus(pDataFlashDesc);
- timeout--;
- } while( ((pDataFlashDesc->DataFlash_state & 0x80) != 0x80) && (timeout > 0) );
-
- if((pDataFlashDesc->DataFlash_state & 0x80) != 0x80)
- return DATAFLASH_ERROR;
-
- return DATAFLASH_OK;
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_DataFlashContinuousRead */
-/* Object : Continuous stream Read */
-/* Input Parameters : DataFlash Service */
-/* : <src> = dataflash address */
-/* : <*dataBuffer> = data buffer pointer */
-/* : <sizeToRead> = data buffer size */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashContinuousRead (
- AT91PS_DataFlash pDataFlash,
- int src,
- unsigned char *dataBuffer,
- int sizeToRead )
-{
- AT91S_DataFlashStatus status;
- /* Test the size to read in the device */
- if ( (src + sizeToRead) > (pDataFlash->pDevice->pages_size * (pDataFlash->pDevice->pages_number)))
- return DATAFLASH_MEMORY_OVERFLOW;
-
- pDataFlash->pDataFlashDesc->rx_data_pt = dataBuffer;
- pDataFlash->pDataFlashDesc->rx_data_size = sizeToRead;
- pDataFlash->pDataFlashDesc->tx_data_pt = dataBuffer;
- pDataFlash->pDataFlashDesc->tx_data_size = sizeToRead;
-
- status = AT91F_DataFlashSendCommand (pDataFlash, DB_CONTINUOUS_ARRAY_READ, 8, src);
- /* Send the command to the dataflash */
- return(status);
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_DataFlashPagePgmBuf */
-/* Object : Main memory page program through buffer 1 or buffer 2 */
-/* Input Parameters : DataFlash Service */
-/* : <*src> = Source buffer */
-/* : <dest> = dataflash destination address */
-/* : <SizeToWrite> = data buffer size */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashPagePgmBuf(
- AT91PS_DataFlash pDataFlash,
- unsigned char *src,
- unsigned int dest,
- unsigned int SizeToWrite)
-{
- int cmdsize;
- pDataFlash->pDataFlashDesc->tx_data_pt = src ;
- pDataFlash->pDataFlashDesc->tx_data_size = SizeToWrite ;
- pDataFlash->pDataFlashDesc->rx_data_pt = src;
- pDataFlash->pDataFlashDesc->rx_data_size = SizeToWrite;
-
- cmdsize = 4;
- /* Send the command to the dataflash */
- if (pDataFlash->pDevice->pages_number >= 16384)
- cmdsize = 5;
- return(AT91F_DataFlashSendCommand (pDataFlash, DB_PAGE_PGM_BUF1, cmdsize, dest));
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_MainMemoryToBufferTransfert */
-/* Object : Read a page in the SRAM Buffer 1 or 2 */
-/* Input Parameters : DataFlash Service */
-/* : Page concerned */
-/* : */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_MainMemoryToBufferTransfert(
- AT91PS_DataFlash pDataFlash,
- unsigned char BufferCommand,
- unsigned int page)
-{
- int cmdsize;
- /* Test if the buffer command is legal */
- if ((BufferCommand != DB_PAGE_2_BUF1_TRF) && (BufferCommand != DB_PAGE_2_BUF2_TRF))
- return DATAFLASH_BAD_COMMAND;
-
- /* no data to transmit or receive */
- pDataFlash->pDataFlashDesc->tx_data_size = 0;
- cmdsize = 4;
- if (pDataFlash->pDevice->pages_number >= 16384)
- cmdsize = 5;
- return(AT91F_DataFlashSendCommand (pDataFlash, BufferCommand, cmdsize, page*pDataFlash->pDevice->pages_size));
-}
-
-
-/*----------------------------------------------------------------------------- */
-/* Function Name : AT91F_DataFlashWriteBuffer */
-/* Object : Write data to the internal sram buffer 1 or 2 */
-/* Input Parameters : DataFlash Service */
-/* : <BufferCommand> = command to write buffer1 or buffer2 */
-/* : <*dataBuffer> = data buffer to write */
-/* : <bufferAddress> = address in the internal buffer */
-/* : <SizeToWrite> = data buffer size */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashWriteBuffer (
- AT91PS_DataFlash pDataFlash,
- unsigned char BufferCommand,
- unsigned char *dataBuffer,
- unsigned int bufferAddress,
- int SizeToWrite )
-{
- int cmdsize;
- /* Test if the buffer command is legal */
- if ((BufferCommand != DB_BUF1_WRITE) && (BufferCommand != DB_BUF2_WRITE))
- return DATAFLASH_BAD_COMMAND;
-
- /* buffer address must be lower than page size */
- if (bufferAddress > pDataFlash->pDevice->pages_size)
- return DATAFLASH_BAD_ADDRESS;
-
- if ( (pDataFlash->pDataFlashDesc->state) != IDLE)
- return DATAFLASH_BUSY;
-
- /* Send first Write Command */
- pDataFlash->pDataFlashDesc->command[0] = BufferCommand;
- pDataFlash->pDataFlashDesc->command[1] = 0;
- if (pDataFlash->pDevice->pages_number >= 16384) {
- pDataFlash->pDataFlashDesc->command[2] = 0;
- pDataFlash->pDataFlashDesc->command[3] = (unsigned char)(((unsigned int)(bufferAddress & pDataFlash->pDevice->byte_mask)) >> 8) ;
- pDataFlash->pDataFlashDesc->command[4] = (unsigned char)((unsigned int)bufferAddress & 0x00FF) ;
- cmdsize = 5;
- } else {
- pDataFlash->pDataFlashDesc->command[2] = (unsigned char)(((unsigned int)(bufferAddress & pDataFlash->pDevice->byte_mask)) >> 8) ;
- pDataFlash->pDataFlashDesc->command[3] = (unsigned char)((unsigned int)bufferAddress & 0x00FF) ;
- pDataFlash->pDataFlashDesc->command[4] = 0;
- cmdsize = 4;
- }
-
- pDataFlash->pDataFlashDesc->tx_cmd_pt = pDataFlash->pDataFlashDesc->command ;
- pDataFlash->pDataFlashDesc->tx_cmd_size = cmdsize ;
- pDataFlash->pDataFlashDesc->rx_cmd_pt = pDataFlash->pDataFlashDesc->command ;
- pDataFlash->pDataFlashDesc->rx_cmd_size = cmdsize ;
-
- pDataFlash->pDataFlashDesc->rx_data_pt = dataBuffer ;
- pDataFlash->pDataFlashDesc->tx_data_pt = dataBuffer ;
- pDataFlash->pDataFlashDesc->rx_data_size = SizeToWrite ;
- pDataFlash->pDataFlashDesc->tx_data_size = SizeToWrite ;
-
- return AT91F_SpiWrite(pDataFlash->pDataFlashDesc);
-}
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_PageErase */
-/* Object : Erase a page */
-/* Input Parameters : DataFlash Service */
-/* : Page concerned */
-/* : */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_PageErase(
- AT91PS_DataFlash pDataFlash,
- unsigned int page)
-{
- int cmdsize;
- /* Test if the buffer command is legal */
- /* no data to transmit or receive */
- pDataFlash->pDataFlashDesc->tx_data_size = 0;
-
- cmdsize = 4;
- if (pDataFlash->pDevice->pages_number >= 16384)
- cmdsize = 5;
- return(AT91F_DataFlashSendCommand (pDataFlash, DB_PAGE_ERASE, cmdsize, page*pDataFlash->pDevice->pages_size));
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_BlockErase */
-/* Object : Erase a Block */
-/* Input Parameters : DataFlash Service */
-/* : Page concerned */
-/* : */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_BlockErase(
- AT91PS_DataFlash pDataFlash,
- unsigned int block)
-{
- int cmdsize;
- /* Test if the buffer command is legal */
- /* no data to transmit or receive */
- pDataFlash->pDataFlashDesc->tx_data_size = 0;
- cmdsize = 4;
- if (pDataFlash->pDevice->pages_number >= 16384)
- cmdsize = 5;
- return(AT91F_DataFlashSendCommand (pDataFlash, DB_BLOCK_ERASE,cmdsize, block*8*pDataFlash->pDevice->pages_size));
-}
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_WriteBufferToMain */
-/* Object : Write buffer to the main memory */
-/* Input Parameters : DataFlash Service */
-/* : <BufferCommand> = command to send to buffer1 or buffer2 */
-/* : <dest> = main memory address */
-/* Return value : State of the dataflash */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_WriteBufferToMain (
- AT91PS_DataFlash pDataFlash,
- unsigned char BufferCommand,
- unsigned int dest )
-{
- int cmdsize;
- /* Test if the buffer command is correct */
- if ((BufferCommand != DB_BUF1_PAGE_PGM) &&
- (BufferCommand != DB_BUF1_PAGE_ERASE_PGM) &&
- (BufferCommand != DB_BUF2_PAGE_PGM) &&
- (BufferCommand != DB_BUF2_PAGE_ERASE_PGM) )
- return DATAFLASH_BAD_COMMAND;
-
- /* no data to transmit or receive */
- pDataFlash->pDataFlashDesc->tx_data_size = 0;
-
- cmdsize = 4;
- if (pDataFlash->pDevice->pages_number >= 16384)
- cmdsize = 5;
- /* Send the command to the dataflash */
- return(AT91F_DataFlashSendCommand (pDataFlash, BufferCommand, cmdsize, dest));
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_PartialPageWrite */
-/* Object : Erase partielly a page */
-/* Input Parameters : <page> = page number */
-/* : <AdrInpage> = adr to begin the fading */
-/* : <length> = Number of bytes to erase */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_PartialPageWrite (
- AT91PS_DataFlash pDataFlash,
- unsigned char *src,
- unsigned int dest,
- unsigned int size)
-{
- unsigned int page;
- unsigned int AdrInPage;
-
- page = dest / (pDataFlash->pDevice->pages_size);
- AdrInPage = dest % (pDataFlash->pDevice->pages_size);
-
- /* Read the contents of the page in the Sram Buffer */
- AT91F_MainMemoryToBufferTransfert(pDataFlash, DB_PAGE_2_BUF1_TRF, page);
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
- /*Update the SRAM buffer */
- AT91F_DataFlashWriteBuffer(pDataFlash, DB_BUF1_WRITE, src, AdrInPage, size);
-
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
-
- /* Erase page if a 128 Mbits device */
- if (pDataFlash->pDevice->pages_number >= 16384) {
- AT91F_PageErase(pDataFlash, page);
- /* Rewrite the modified Sram Buffer in the main memory */
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
- }
-
- /* Rewrite the modified Sram Buffer in the main memory */
- return(AT91F_WriteBufferToMain(pDataFlash, DB_BUF1_PAGE_ERASE_PGM, (page*pDataFlash->pDevice->pages_size)));
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_DataFlashWrite */
-/* Object : */
-/* Input Parameters : <*src> = Source buffer */
-/* : <dest> = dataflash adress */
-/* : <size> = data buffer size */
-/*------------------------------------------------------------------------------*/
-AT91S_DataFlashStatus AT91F_DataFlashWrite(
- AT91PS_DataFlash pDataFlash,
- unsigned char *src,
- int dest,
- int size )
-{
- unsigned int length;
- unsigned int page;
- unsigned int status;
-
- AT91F_SpiEnable(pDataFlash->pDevice->cs);
-
- if ( (dest + size) > (pDataFlash->pDevice->pages_size * (pDataFlash->pDevice->pages_number)))
- return DATAFLASH_MEMORY_OVERFLOW;
-
- /* If destination does not fit a page start address */
- if ((dest % ((unsigned int)(pDataFlash->pDevice->pages_size))) != 0 ) {
- length = pDataFlash->pDevice->pages_size - (dest % ((unsigned int)(pDataFlash->pDevice->pages_size)));
-
- if (size < length)
- length = size;
-
- if(!AT91F_PartialPageWrite(pDataFlash,src, dest, length))
- return DATAFLASH_ERROR;
-
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
-
- /* Update size, source and destination pointers */
- size -= length;
- dest += length;
- src += length;
- }
-
- while (( size - pDataFlash->pDevice->pages_size ) >= 0 ) {
- /* program dataflash page */
- page = (unsigned int)dest / (pDataFlash->pDevice->pages_size);
-
- status = AT91F_DataFlashWriteBuffer(pDataFlash, DB_BUF1_WRITE, src, 0, pDataFlash->pDevice->pages_size);
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
-
- status = AT91F_PageErase(pDataFlash, page);
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
- if (!status)
- return DATAFLASH_ERROR;
-
- status = AT91F_WriteBufferToMain (pDataFlash, DB_BUF1_PAGE_PGM, dest);
- if(!status)
- return DATAFLASH_ERROR;
-
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
-
- /* Update size, source and destination pointers */
- size -= pDataFlash->pDevice->pages_size ;
- dest += pDataFlash->pDevice->pages_size ;
- src += pDataFlash->pDevice->pages_size ;
- }
-
- /* If still some bytes to read */
- if ( size > 0 ) {
- /* program dataflash page */
- if(!AT91F_PartialPageWrite(pDataFlash, src, dest, size) )
- return DATAFLASH_ERROR;
-
- AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
- }
- return DATAFLASH_OK;
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_DataFlashRead */
-/* Object : Read a block in dataflash */
-/* Input Parameters : */
-/* Return value : */
-/*------------------------------------------------------------------------------*/
-int AT91F_DataFlashRead(
- AT91PS_DataFlash pDataFlash,
- unsigned long addr,
- unsigned long size,
- char *buffer)
-{
- unsigned long SizeToRead;
-
- AT91F_SpiEnable(pDataFlash->pDevice->cs);
-
- if(AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY) != DATAFLASH_OK)
- return -1;
-
- while (size) {
- SizeToRead = (size < 0x8000)? size:0x8000;
-
- if (AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY) != DATAFLASH_OK)
- return -1;
-
- if (AT91F_DataFlashContinuousRead (pDataFlash, addr, buffer, SizeToRead) != DATAFLASH_OK)
- return -1;
-
- size -= SizeToRead;
- addr += SizeToRead;
- buffer += SizeToRead;
- }
-
- return DATAFLASH_OK;
-}
-
-
-/*------------------------------------------------------------------------------*/
-/* Function Name : AT91F_DataflashProbe */
-/* Object : */
-/* Input Parameters : */
-/* Return value : Dataflash status register */
-/*------------------------------------------------------------------------------*/
-int AT91F_DataflashProbe(int cs, AT91PS_DataflashDesc pDesc)
-{
- AT91F_SpiEnable(cs);
- AT91F_DataFlashGetStatus(pDesc);
- return((pDesc->command[1] == 0xFF)? 0: pDesc->command[1] & 0x3C);
-}
-
-#endif
diff --git a/board/cmc_pu2/cmc_pu2.c b/board/cmc_pu2/cmc_pu2.c
deleted file mode 100644
index 9ae3c42be5..0000000000
--- a/board/cmc_pu2/cmc_pu2.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Modified for CMC_PU2 (removed Smart Media support) by Gary Jennejohn
- * (2004) garyj@denx.de
- *
- * Modified for CMC_BASIC by Martin Krause (2005), TQ-Systems GmbH
- *
- * 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 <common.h>
-#include <asm/mach-types.h>
-#include <asm/arch/AT91RM9200.h>
-#include <at91rm9200_net.h>
-#include <dm9161.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-/*
- * Miscelaneous platform dependent initialisations
- */
-#define CMC_HP_BASIC 1
-#define CMC_PU2 2
-#define CMC_BASIC 4
-
-int hw_detect (void);
-
-int board_init (void)
-{
- AT91PS_PIO piob = AT91C_BASE_PIOB;
- AT91PS_PIO pioc = AT91C_BASE_PIOC;
-
- /* Enable Ctrlc */
- console_init_f ();
-
- /* Correct IRDA resistor problem */
- /* Set PA23_TXD in Output */
- /* (AT91PS_PIO) AT91C_BASE_PIOA->PIO_OER = AT91C_PA23_TXD2; */
-
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* PIOB and PIOC clock enabling */
- *AT91C_PMC_PCER = 1 << AT91C_ID_PIOB;
- *AT91C_PMC_PCER = 1 << AT91C_ID_PIOC;
-
- /*
- * configure PC0-PC3 as input without pull ups, so RS485 driver enable
- * (CMC-PU2) and digital outputs (CMC-BASIC) are deactivated.
- */
- pioc->PIO_ODR = AT91C_PIO_PC0 | AT91C_PIO_PC1 |
- AT91C_PIO_PC2 | AT91C_PIO_PC3;
- pioc->PIO_PPUDR = AT91C_PIO_PC0 | AT91C_PIO_PC1 |
- AT91C_PIO_PC2 | AT91C_PIO_PC3;
- pioc->PIO_PER = AT91C_PIO_PC0 | AT91C_PIO_PC1 |
- AT91C_PIO_PC2 | AT91C_PIO_PC3;
-
- /*
- * On CMC-PU2 board configure PB3-PB6 to input without pull ups to
- * clear the duo LEDs (the external pull downs assure a proper
- * signal). On CMC-BASIC and CMC-HP-BASIC set PB3-PB6 to output and
- * drive it high, to configure current measurement on AINx.
- */
- if (hw_detect() & CMC_PU2) {
- piob->PIO_ODR = AT91C_PIO_PB3 | AT91C_PIO_PB4 |
- AT91C_PIO_PB5 | AT91C_PIO_PB6;
- }
- else if ((hw_detect() & CMC_BASIC) || (hw_detect() & CMC_HP_BASIC)) {
- piob->PIO_SODR = AT91C_PIO_PB3 | AT91C_PIO_PB4 |
- AT91C_PIO_PB5 | AT91C_PIO_PB6;
- piob->PIO_OER = AT91C_PIO_PB3 | AT91C_PIO_PB4 |
- AT91C_PIO_PB5 | AT91C_PIO_PB6;
- }
- piob->PIO_PPUDR = AT91C_PIO_PB3 | AT91C_PIO_PB4 |
- AT91C_PIO_PB5 | AT91C_PIO_PB6;
- piob->PIO_PER = AT91C_PIO_PB3 | AT91C_PIO_PB4 |
- AT91C_PIO_PB5 | AT91C_PIO_PB6;
-
- /*
- * arch number of CMC_PU2-Board. MACH_TYPE_CMC_PU2 is not supported in
- * the linuxarm kernel, yet.
- */
- /* gd->bd->bi_arch_number = MACH_TYPE_CMC_PU2; */
- gd->bd->bi_arch_number = 251;
- /* adress of boot parameters */
- gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE;
- return 0;
-}
-
-int checkboard (void)
-{
- if (hw_detect() & CMC_PU2)
- puts ("Board: CMC-PU2 (Rittal GmbH)\n");
- else if (hw_detect() & CMC_BASIC)
- puts ("Board: CMC-BASIC (Rittal GmbH)\n");
- else if (hw_detect() & CMC_HP_BASIC)
- puts ("Board: CMC-HP-BASIC (Rittal GmbH)\n");
- else
- puts ("Board: unknown\n");
- return 0;
-}
-
-int hw_detect (void)
-{
- AT91PS_PIO pio = AT91C_BASE_PIOB;
-
- /* PIOB clock enabling */
- *AT91C_PMC_PCER = 1 << AT91C_ID_PIOB;
-
- /* configure PB12 as input without pull up */
- pio->PIO_ODR = AT91C_PIO_PB12;
- pio->PIO_PPUDR = AT91C_PIO_PB12;
- pio->PIO_PER = AT91C_PIO_PB12;
-
- /* configure PB13 as input without pull up */
- pio->PIO_ODR = AT91C_PIO_PB13;
- pio->PIO_PPUDR = AT91C_PIO_PB13;
- pio->PIO_PER = AT91C_PIO_PB13;
-
- /* read board identification pin */
- if (pio->PIO_PDSR & AT91C_PIO_PB12)
- return ((pio->PIO_PDSR & AT91C_PIO_PB13)
- ? CMC_PU2 : 0);
- else
- return ((pio->PIO_PDSR & AT91C_PIO_PB13)
- ? CMC_HP_BASIC : CMC_BASIC);
-}
-
-#ifdef CONFIG_DRIVER_ETHER
-#if (CONFIG_COMMANDS & CFG_CMD_NET)
-
-/*
- * Name:
- * at91rm9200_GetPhyInterface
- * Description:
- * Initialise the interface functions to the PHY
- * Arguments:
- * None
- * Return value:
- * None
- */
-void at91rm9200_GetPhyInterface(AT91PS_PhyOps p_phyops)
-{
- p_phyops->Init = dm9161_InitPhy;
- p_phyops->IsPhyConnected = dm9161_IsPhyConnected;
- p_phyops->GetLinkSpeed = dm9161_GetLinkSpeed;
- p_phyops->AutoNegotiate = dm9161_AutoNegotiate;
-}
-
-#endif /* CONFIG_COMMANDS & CFG_CMD_NET */
-#endif /* CONFIG_DRIVER_ETHER */
diff --git a/board/cmc_pu2/config.mk b/board/cmc_pu2/config.mk
deleted file mode 100644
index 7116eea872..0000000000
--- a/board/cmc_pu2/config.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-TEXT_BASE = 0x20F00000
-## For testing: load at 0x20100000 and "go" at 0x201000A4
-#TEXT_BASE = 0x20100000
diff --git a/board/cmc_pu2/flash.c b/board/cmc_pu2/flash.c
deleted file mode 100644
index 9983c7b78c..0000000000
--- a/board/cmc_pu2/flash.c
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.de
- *
- * Modified for the CMC PU2 by (C) Copyright 2004 Gary Jennejohn
- * garyj@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 <common.h>
-
-#ifndef CFG_ENV_ADDR
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#define FLASH_CYCLE1 0x0555
-#define FLASH_CYCLE2 0x02AA
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_short *addr, flash_info_t *info);
-static void flash_reset(flash_info_t *info);
-static int write_word_amd(flash_info_t *info, vu_short *dest, ushort data);
-static flash_info_t *flash_get_info(ulong base);
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- unsigned long size = 0;
- ulong flashbase = CFG_FLASH_BASE;
-
- /* Init: no FLASHes known */
- memset(&flash_info[0], 0, sizeof(flash_info_t));
-
- flash_info[0].size = flash_get_size((vu_short *)flashbase, &flash_info[0]);
-
- size = flash_info[0].size;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- flash_get_info(CFG_MONITOR_BASE));
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- flash_get_info(CFG_ENV_ADDR));
-#endif
-
- return size ? size : 1;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset(flash_info_t *info)
-{
- vu_short *base = (vu_short *)(info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- *base = 0x00FF; /* Intel Read Mode */
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
- *base = 0x00F0; /* AMD Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static flash_info_t *flash_get_info(ulong base)
-{
- int i;
- flash_info_t * info;
-
- info = NULL;
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i ++) {
- info = & flash_info[i];
- if (info->size && info->start[0] <= base &&
- base <= info->start[0] + info->size - 1)
- break;
- }
-
- return i == CFG_MAX_FLASH_BANKS ? 0 : info;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_S29GL064M:
- printf ("S29GL064M-R6 (64Mbit, uniform sector size)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size (vu_short *addr, flash_info_t *info)
-{
- int i;
- ushort value;
- ulong base = (ulong)addr;
-
- /* Write auto select command sequence */
- addr[FLASH_CYCLE1] = 0x00AA; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE2] = 0x0055; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE1] = 0x0090; /* selects Intel or AMD */
-
- /* read Manufacturer ID */
- udelay(100);
- value = addr[0];
- debug ("Manufacturer ID: %04X\n", value);
-
- switch (value) {
-
- case (AMD_MANUFACT & 0xFFFF):
- debug ("Manufacturer: AMD (Spansion)\n");
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case (INTEL_MANUFACT & 0xFFFF):
- debug ("Manufacturer: Intel (not supported yet)\n");
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- printf ("Unknown Manufacturer ID: %04X\n", value);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- goto out;
- }
-
- value = addr[1];
- debug ("Device ID: %04X\n", value);
-
- switch (addr[1]) {
-
- case (AMD_ID_MIRROR & 0xFFFF):
- debug ("Mirror Bit flash: addr[14] = %08X addr[15] = %08X\n",
- addr[14], addr[15]);
-
- switch(addr[14]) {
- case (AMD_ID_GL064M_2 & 0xFFFF):
- if (addr[15] != (AMD_ID_GL064M_3 & 0xffff)) {
- printf ("Chip: S29GLxxxM -> unknown\n");
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- } else {
- debug ("Chip: S29GL064M-R6\n");
- info->flash_id += FLASH_S29GL064M;
- info->sector_count = 128;
- info->size = 0x00800000;
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- base += 0x10000;
- }
- }
- break; /* => 16 MB */
- default:
- printf ("Chip: *** unknown ***\n");
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
- break;
-
- default:
- printf ("Unknown Device ID: %04X\n", value);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
-out:
- /* Put FLASH back in read mode */
- flash_reset(info);
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_short *addr = (vu_short *)(info->start[0]);
- int flag, prot, sect, ssect, l_sect;
- ulong now, last;
-
- debug ("flash_erase: first: %d last: %d\n", s_first, s_last);
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /*
- * Start erase on unprotected sectors.
- * Since the flash can erase multiple sectors with one command
- * we take advantage of that by doing the erase in chunks of
- * 3 sectors.
- */
- for (sect = s_first; sect <= s_last; ) {
- l_sect = -1;
-
- addr[FLASH_CYCLE1] = 0x00AA;
- addr[FLASH_CYCLE2] = 0x0055;
- addr[FLASH_CYCLE1] = 0x0080;
- addr[FLASH_CYCLE1] = 0x00AA;
- addr[FLASH_CYCLE2] = 0x0055;
-
- /* do the erase in chunks of at most 3 sectors */
- for (ssect = 0; ssect < 3; ssect++) {
- if ((sect + ssect) > s_last)
- break;
- if (info->protect[sect + ssect] == 0) { /* not protected */
- addr = (vu_short *)(info->start[sect + ssect]);
- addr[0] = 0x0030;
- l_sect = sect + ssect;
- }
- }
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- reset_timer_masked ();
- last = 0;
- addr = (vu_short *)(info->start[l_sect]);
- while ((addr[0] & 0x0080) != 0x0080) {
- if ((now = get_timer_masked ()) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- addr = (vu_short *)info->start[0];
- addr[0] = 0x00F0; /* reset bank */
- sect += ssect;
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
-DONE:
- /* reset to read mode */
- addr = (vu_short *)info->start[0];
- addr[0] = 0x00F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong wp, data;
- int rc;
-
- if (addr & 1) {
- printf ("unaligned destination not supported\n");
- return ERR_ALIGN;
- };
-
- if ((int) src & 1) {
- printf ("unaligned source not supported\n");
- return ERR_ALIGN;
- };
-
- wp = addr;
-
- while (cnt >= 2) {
- data = *((vu_short *)src);
- if ((rc = write_word_amd(info, (vu_short *)wp, data)) != 0) {
-printf ("write_buff 1: write_word_amd() rc=%d\n", rc);
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- return (ERR_OK);
- }
-
- if (cnt == 1) {
- data = (*((volatile u8 *) src)) | (*((volatile u8 *) (wp + 1)) << 8);
- if ((rc = write_word_amd(info, (vu_short *)wp, data)) != 0) {
-printf ("write_buff 1: write_word_amd() rc=%d\n", rc);
- return (rc);
- }
- src += 1;
- wp += 1;
- cnt -= 1;
- }
-
- return ERR_OK;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd (flash_info_t *info, vu_short *dest, ushort data)
-{
- int flag;
- vu_short *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- base = (vu_short *)(info->start[0]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- base[FLASH_CYCLE1] = 0x00AA; /* unlock */
- base[FLASH_CYCLE2] = 0x0055; /* unlock */
- base[FLASH_CYCLE1] = 0x00A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- reset_timer_masked ();
-
- /* data polling for D7 */
- while ((*dest & 0x0080) != (data & 0x0080)) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *dest = 0x00F0; /* reset bank */
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/cmc_pu2/load_sernum_ethaddr.c b/board/cmc_pu2/load_sernum_ethaddr.c
deleted file mode 100644
index 354566c05d..0000000000
--- a/board/cmc_pu2/load_sernum_ethaddr.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * (C) Copyright 2000, 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2005
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.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
- */
-
-/* #define DEBUG */
-
-#include <common.h>
-
-#define I2C_CHIP 0x50 /* I2C bus address of onboard EEPROM */
-#define I2C_ALEN 1 /* length of EEPROM addresses in bytes */
-#define I2C_OFFSET 0x0 /* start address of manufacturere data block
- * in EEPROM */
-
-/* 64 Byte manufacturer data block in EEPROM */
-struct manufacturer_data {
- unsigned int serial_number; /* serial number (0...999999) */
- unsigned short hardware; /* hardware version (e.g. V1.02) */
- unsigned short manuf_date; /* manufacture date (e.g. 25/02) */
- unsigned char name[20]; /* device name (in CHIP.INI) */
- unsigned char macadr[6]; /* MAC address */
- signed char a_kal[4]; /* calibration value for U */
- signed char i_kal[4]; /* calibration value for I */
- unsigned char reserve[18]; /* reserved */
- unsigned short save_nr; /* save count */
- unsigned short chksum; /* checksum */
-};
-
-
-int i2c_read (unsigned char chip, unsigned int addr, int alen,
- unsigned char *buffer, int len);
-
-/*-----------------------------------------------------------------------
- * Process manufacturer data block in EEPROM:
- *
- * If we boot on a system fresh from factory, check if the manufacturer data
- * in the EEPROM is valid and save some information it contains.
- *
- * CMC manufacturer data is defined as follows:
- *
- * - located in the onboard EEPROM
- * - starts at offset 0x0
- * - size 0x00000040
- *
- * Internal structure: see struct definition
- */
-
-void load_sernum_ethaddr (void)
-{
- struct manufacturer_data data;
- char ethaddr[18];
- char serial [9];
- unsigned short chksum;
- unsigned char *p;
- unsigned short i, is, id;
-
-#if !defined(CONFIG_HARD_I2C) && !defined(CONFIG_SOFT_I2C)
-#error you must define some I2C support (CONFIG_HARD_I2C or CONFIG_SOFT_I2C)
-#endif
- if (i2c_read(I2C_CHIP, I2C_OFFSET, I2C_ALEN, (unsigned char *)&data,
- sizeof(data)) != 0) {
- puts ("Error reading manufacturer data from EEPROM\n");
- return;
- }
-
- /* check if manufacturer data block is valid */
- p = (unsigned char *)&data;
- chksum = 0;
- for (i = 0; i < (sizeof(data) - sizeof(data.chksum)); i++)
- chksum += *p++;
-
- debug ("checksum of manufacturer data block: %#.4x\n", chksum);
-
- if (chksum != data.chksum) {
- puts ("Error: manufacturer data block has invalid checksum\n");
- return;
- }
-
- /* copy MAC address */
- is = 0;
- id = 0;
- for (i = 0; i < 6; i++) {
- sprintf (&ethaddr[id], "%02x", data.macadr[is++]);
- id += 2;
- if (is < 6)
- ethaddr[id++] = ':';
- }
- ethaddr[id] = '\0'; /* just to be sure */
-
- /* copy serial number */
- sprintf (serial, "%d", data.serial_number);
-
- /* set serial# and ethaddr if not yet defined */
- if (getenv("serial#") == NULL) {
- setenv ("serial#", serial);
- }
-
- if (getenv("ethaddr") == NULL) {
- setenv ("ethaddr", ethaddr);
- }
-}
diff --git a/board/cmc_pu2/u-boot.lds b/board/cmc_pu2/u-boot.lds
deleted file mode 100644
index f4fbf969c3..0000000000
--- a/board/cmc_pu2/u-boot.lds
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/cmi/Makefile b/board/cmi/Makefile
deleted file mode 100644
index 6a4230486f..0000000000
--- a/board/cmi/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := flash.o cmi.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cmi/cmi.c b/board/cmi/cmi.c
deleted file mode 100644
index cbf34f7854..0000000000
--- a/board/cmi/cmi.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * (C) Copyright 2003
- * Martin Winistoerfer, martinwinistoerfer@gmx.ch.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/*
- * File: cmi.c
- *
- * Discription: For generic board specific functions
- *
- */
-
-
-#include <common.h>
-#include <mpc5xx.h>
-
-#define SRAM_SIZE 1024000L /* 1M RAM available*/
-
-#if defined(__APPLE__)
-/* Leading underscore on symbols */
-# define SYM_CHAR "_"
-#else /* No leading character on symbols */
-# define SYM_CHAR
-#endif
-
-/*
- * Macros to generate global absolutes.
- */
-#define GEN_SYMNAME(str) SYM_CHAR #str
-#define GEN_VALUE(str) #str
-#define GEN_ABS(name, value) \
- asm (".globl " GEN_SYMNAME(name)); \
- asm (GEN_SYMNAME(name) " = " GEN_VALUE(value))
-
-/*
- * Check the board
- */
-int checkboard(void)
-{
- puts ("Board: ### No HW ID - assuming CMI board\n");
- return (0);
-}
-
-/*
- * Get RAM size.
- */
-long int initdram(int board_type)
-{
- return (SRAM_SIZE); /* We currently have a static size adapted for cmi board. */
-}
-
-/*
- * Absolute environment address for linker file.
- */
-GEN_ABS(env_start, CFG_ENV_OFFSET + CFG_FLASH_BASE);
diff --git a/board/cmi/config.mk b/board/cmi/config.mk
deleted file mode 100644
index 564f638a39..0000000000
--- a/board/cmi/config.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# (C) Copyright 2003
-# Martin Winistoerfer, martinwinistoerfer@gmx.ch.
-#
-# See file CREDITS for list of people who contributed to this
-# project.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-# MA 02111-1307 USA
-#
-
-#
-# EPQ Board Configuration
-#
-
-# Boot from flash at location 0x00000000
-TEXT_BASE = 0x02000000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/cmi/flash.c b/board/cmi/flash.c
deleted file mode 100644
index f7c25f4284..0000000000
--- a/board/cmi/flash.c
+++ /dev/null
@@ -1,517 +0,0 @@
-/*
- * (C) Copyright 2003
- * Martin Winistoerfer, martinwinistoerfer@gmx.ch.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/*
- * File: flash.c
- *
- * Discription: This Driver is for 28F320J3A, 28F640J3A and
- * 28F128J3A Intel flashs working in 16 Bit mode.
- * They are single bank flashs.
- *
- * Most of this code is taken from existing u-boot
- * source code.
- */
-
-
-#include <common.h>
-#include <mpc5xx.h>
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-#define FLASH_ID_MASK 0xFFFF
-#define FLASH_BLOCK_SIZE 0x00010000
-#define FLASH_CMD_READ_ID 0x0090
-#define FLASH_CMD_RESET 0x00ff
-#define FLASH_CMD_BLOCK_ERASE 0x0020
-#define FLASH_CMD_ERASE_CONFIRM 0x00D0
-#define FLASH_CMD_CLEAR_STATUS 0x0050
-#define FLASH_CMD_SUSPEND_ERASE 0x00B0
-#define FLASH_CMD_WRITE 0x0040
-#define FLASH_CMD_PROTECT 0x0060
-#define FLASH_CMD_PROTECT_SET 0x0001
-#define FLASH_CMD_PROTECT_CLEAR 0x00D0
-#define FLASH_STATUS_DONE 0x0080
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*
- * Local function prototypes
- */
-static ulong flash_get_size (vu_short *addr, flash_info_t *info);
-static int write_short (flash_info_t *info, ulong dest, ushort data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*
- * Initialize flash
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-#if 1
- debug ("\n## Get flash bank 1 size @ 0x%08x\n",FLASH_BASE0_PRELIM);
-#endif
- size_b0 = flash_get_size((vu_short *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0: "
- "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
- flash_info[0].flash_id,
- size_b0, size_b0<<20);
- }
-
- flash_get_offsets (FLASH_BASE0_PRELIM, &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
-
- return size_b0;
-}
-
-/*
- * Compute start adress of each sector (block)
- */
-
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + i * FLASH_BLOCK_SIZE;
- }
- return;
-
- default:
- printf ("Don't know sector offsets for flash type 0x%lx\n",
- info->flash_id);
- return;
- }
-}
-
-/*
- * Print flash information
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("Fujitsu "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("Intel "); break;
- case FLASH_MAN_MT: printf ("MT "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J3A: printf ("28F320J3A (32Mbit) 16-Bit\n");
- break;
- case FLASH_28F640J3A: printf ("28F640J3A (64Mbit) 16-Bit\n");
- break;
- case FLASH_28F128J3A: printf ("28F128J3A (128Mbit) 16-Bit\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size >= (1 << 20)) {
- i = 20;
- } else {
- i = 10;
- }
- printf (" Size: %ld %cB in %d Sectors\n",
- info->size >> i,
- (i == 20) ? 'M' : 'k',
- info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*
- * Get size of flash in bytes.
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_short *addr, flash_info_t *info)
-{
- vu_short value;
-
- /* Read Manufacturer ID */
- addr[0] = FLASH_CMD_READ_ID;
- value = addr[0];
-
- switch (value) {
- case (AMD_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (SST_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_SST;
- break;
- case (STM_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_STM;
- break;
- case (INTEL_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = FLASH_CMD_RESET; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
- case (INTEL_ID_28F320J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 32 MBit */
-
- case (INTEL_ID_28F640J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 64 MBit */
-
- case (INTEL_ID_28F128J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 128 MBit */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- addr[0] = FLASH_CMD_RESET; /* restore read mode */
- return (0); /* => no or unknown flash */
-
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = FLASH_CMD_RESET; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*
- * Erase unprotected sectors
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
- printf ("Can erase only Intel flash types - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_short *addr = (vu_short *)(info->start[sect]);
- unsigned long status;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
-#ifdef DEBUG
- printf("Erase sector %d at start addr 0x%08X", sect, (unsigned int)info->start[sect]);
-#endif
-
- *addr = FLASH_CMD_CLEAR_STATUS;
- *addr = FLASH_CMD_BLOCK_ERASE;
- *addr = FLASH_CMD_ERASE_CONFIRM;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = *addr) & FLASH_STATUS_DONE) != FLASH_STATUS_DONE) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Flash erase timeout at address %lx\n", info->start[sect]);
- *addr = FLASH_CMD_SUSPEND_ERASE;
- *addr = FLASH_CMD_RESET;
- return 1;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- *addr = FLASH_CMD_RESET;
- }
- }
- printf (" done\n");
- return 0;
-}
-
-/*
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- ushort data;
- int i, rc;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start byte
- */
-
- if (addr - wp) {
- data = 0;
- data = (data << 8) | *src++;
- --cnt;
- if ((rc = write_short(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
-
- while (cnt >= 2) {
- data = 0;
- for (i=0; i<2; ++i) {
- data = (data << 8) | *src++;
- }
-
- if ((rc = write_short(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
-
- data = 0;
- for (i=0, cp=wp; i<2 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<2; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_short(info, wp, data));
-
-}
-
-/*
- * Write 16 bit (short) to flash
- */
-
-static int write_short (flash_info_t *info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_short *)dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- if (!(info->flash_id & FLASH_VENDMASK)) {
- return 4;
- }
- *addr = FLASH_CMD_ERASE_CONFIRM;
- *addr = FLASH_CMD_WRITE;
-
- *((vu_short *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
- /* data polling for D7 */
- start = get_timer (0);
-
- /* wait for error or finish */
- while(!(addr[0] & FLASH_STATUS_DONE)){
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- addr[0] = FLASH_CMD_RESET;
- return (1);
- }
- }
-
- *addr = FLASH_CMD_RESET;
- return (0);
-}
-
-/*
- * Protects a flash sector
- */
-
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
- vu_short *addr = (vu_short*)(info->start[sector]);
- ulong start;
-
- *addr = FLASH_CMD_CLEAR_STATUS;
- *addr = FLASH_CMD_PROTECT;
-
- if(prot) {
- *addr = FLASH_CMD_PROTECT_SET;
- } else {
- *addr = FLASH_CMD_PROTECT_CLEAR;
- }
-
- /* wait for error or finish */
- start = get_timer (0);
- while(!(addr[0] & FLASH_STATUS_DONE)){
- if (get_timer(start) > CFG_FLASH_ERASE_TOUT) {
- printf("Flash protect timeout at address %lx\n", info->start[sector]);
- addr[0] = FLASH_CMD_RESET;
- return (1);
- }
- }
- /* Set software protect flag */
- info->protect[sector] = prot;
- *addr = FLASH_CMD_RESET;
- return (0);
-}
diff --git a/board/cmi/u-boot.lds b/board/cmi/u-boot.lds
deleted file mode 100644
index 5b03fef66c..0000000000
--- a/board/cmi/u-boot.lds
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * (C) Copyright 2001 Wolfgang Denk, DENX Software Engineering, wd@denx.de
- * (C) Copyright 2003 Martin Winistoerfer, martinwinistoerfer@gmx.ch
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc5xx/start.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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 = .);
-/* . = env_start;
- .ppcenv :
- {
- common/environment.o (.ppcenv)
- }
-*/
-}
diff --git a/board/cobra5272/Makefile b/board/cobra5272/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/cobra5272/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cobra5272/bdm/cobra5272_uboot.gdb b/board/cobra5272/bdm/cobra5272_uboot.gdb
deleted file mode 100644
index 61e778ea5f..0000000000
--- a/board/cobra5272/bdm/cobra5272_uboot.gdb
+++ /dev/null
@@ -1,169 +0,0 @@
-#
-# GDB Init script for the Coldfire 5272 processor.
-#
-# The main purpose of this script is to configure the
-# DRAM controller so code can be loaded.
-#
-# This file was changed to suite the senTec COBRA5272 board.
-#
-
-define addresses
-
-set $mbar = 0x10000001
-set $scr = $mbar - 1 + 0x004
-set $spr = $mbar - 1 + 0x006
-set $pmr = $mbar - 1 + 0x008
-set $apmr = $mbar - 1 + 0x00e
-set $dir = $mbar - 1 + 0x010
-set $icr1 = $mbar - 1 + 0x020
-set $icr2 = $mbar - 1 + 0x024
-set $icr3 = $mbar - 1 + 0x028
-set $icr4 = $mbar - 1 + 0x02c
-set $isr = $mbar - 1 + 0x030
-set $pitr = $mbar - 1 + 0x034
-set $piwr = $mbar - 1 + 0x038
-set $pivr = $mbar - 1 + 0x03f
-set $csbr0 = $mbar - 1 + 0x040
-set $csor0 = $mbar - 1 + 0x044
-set $csbr1 = $mbar - 1 + 0x048
-set $csor1 = $mbar - 1 + 0x04c
-set $csbr2 = $mbar - 1 + 0x050
-set $csor2 = $mbar - 1 + 0x054
-set $csbr3 = $mbar - 1 + 0x058
-set $csor3 = $mbar - 1 + 0x05c
-set $csbr4 = $mbar - 1 + 0x060
-set $csor4 = $mbar - 1 + 0x064
-set $csbr5 = $mbar - 1 + 0x068
-set $csor5 = $mbar - 1 + 0x06c
-set $csbr6 = $mbar - 1 + 0x070
-set $csor6 = $mbar - 1 + 0x074
-set $csbr7 = $mbar - 1 + 0x078
-set $csor7 = $mbar - 1 + 0x07c
-set $pacnt = $mbar - 1 + 0x080
-set $paddr = $mbar - 1 + 0x084
-set $padat = $mbar - 1 + 0x086
-set $pbcnt = $mbar - 1 + 0x088
-set $pbddr = $mbar - 1 + 0x08c
-set $pbdat = $mbar - 1 + 0x08e
-set $pcddr = $mbar - 1 + 0x094
-set $pcdat = $mbar - 1 + 0x096
-set $pdcnt = $mbar - 1 + 0x098
-set $sdcr = $mbar - 1 + 0x180
-set $sdtr = $mbar - 1 + 0x184
-set $wrrr = $mbar - 1 + 0x280
-set $wirr = $mbar - 1 + 0x283
-set $wcr = $mbar - 1 + 0x288
-set $wer = $mbar - 1 + 0x28c
-
-end
-
-
-#
-# Setup system configuration
-#
-define setup-sys
-set *((unsigned short *) $scr) = 0x0003
-set *((unsigned short *) $spr) = 0xffff
-set *((unsigned char *) $pivr) = 0x4f
-end
-
-
-#
-# Setup Chip Selects (as per Motorola M5272C3 board)
-#
-define setup-cs
-
-# CS0 -- FLASH
-set *((unsigned long *) $csbr0) = 0xffe00201
-set *((unsigned long *) $csor0) = 0xffe00014
-
-# CS1 -- external bus test
-set *((unsigned long *) $csbr1) = 0x0
-set *((unsigned long *) $csor1) = 0x0
-
-# CS2 -- Optional FSRAM
-set *((unsigned long *) $csbr2) = 0x30000001
-set *((unsigned long *) $csor2) = 0xfff80000
-
-# CS3 -- not used
-set *((unsigned long *) $csbr3) = 0x0
-set *((unsigned long *) $csor3) = 0x0
-
-# CS4 -- not used
-set *((unsigned long *) $csbr4) = 0x0
-set *((unsigned long *) $csor4) = 0x0
-
-# CS5 -- PLI socket0
-set *((unsigned long *) $csbr5) = 0x0
-set *((unsigned long *) $csor5) = 0x0
-
-# CS6 -- PLI socket1
-set *((unsigned long *) $csbr6) = 0x0
-set *((unsigned long *) $csor6) = 0x0
-
-# CS7 -- SDRAM
-set *((unsigned long *) $csbr7) = 0x00000701
-set *((unsigned long *) $csor7) = 0xff00007c
-
-end
-
-
-#
-# Setup the DRAM controller.
-#
-
-define setup-dram
-set *((unsigned long *) $sdtr) = 0x0000f539
-set *((unsigned long *) $sdcr) = 0x00004211
-
-# Dummy write to start SDRAM
-set *((unsigned long *) 0) = 0
-end
-
-
-#
-# Setup for GPIO pins
-#
-define setup-ppio
-
-# PORT A -- the LED's
-set *((unsigned long *) $pacnt) = 0x00000000
-# lower 8 bits for output:
-set *((unsigned short *) $paddr) = 0xff
-# LED's off:
-set *((unsigned short *) $padat) = 0xff
-
-# PORT B
-set *((unsigned long *) $pbcnt) = 0x55554155
-set *((unsigned short *) $pbddr) = 0x0000
-set *((unsigned short *) $pbdat) = 0x17ea
-
-# PORT C
-#set *((unsigned short *) $pcddr) = 0x0000
-#set *((unsigned short *) $pcdat) = 0x1898
-
-# PORT D
-set *((unsigned long *) $pdcnt) = 0x00000000
-
-end
-
-
-#
-# Added for uClinux-coldfire target...
-#
-target bdm /dev/bdm
-
-addresses
-setup-sys
-setup-cs
-setup-dram
-setup-ppio
-set print pretty
-set print asm-demangle
-display/i $pc
-
-
-#
-load u-boot
-set $pc=0x20000
-c
diff --git a/board/cobra5272/bdm/gdbinit.reset b/board/cobra5272/bdm/gdbinit.reset
deleted file mode 100644
index 5f1e48217c..0000000000
--- a/board/cobra5272/bdm/gdbinit.reset
+++ /dev/null
@@ -1,2 +0,0 @@
-target bdm /dev/bdmcf0
-q
diff --git a/board/cobra5272/bdm/load-cobra_uboot b/board/cobra5272/bdm/load-cobra_uboot
deleted file mode 100644
index 933c7e7235..0000000000
--- a/board/cobra5272/bdm/load-cobra_uboot
+++ /dev/null
@@ -1,2 +0,0 @@
-m68k-bdm-elf-gdb -n -x board/cobra5272/bdm/cobra5272_uboot.gdb u-boot
-
diff --git a/board/cobra5272/bdm/reset b/board/cobra5272/bdm/reset
deleted file mode 100644
index 8bef00bf1c..0000000000
--- a/board/cobra5272/bdm/reset
+++ /dev/null
@@ -1,2 +0,0 @@
-m68k-bdm-elf-gdb -n -x bdm/gdbinit.reset
-
diff --git a/board/cobra5272/cobra5272.c b/board/cobra5272/cobra5272.c
deleted file mode 100644
index 26adb4abb1..0000000000
--- a/board/cobra5272/cobra5272.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * (C) Copyright 2000-2003
- * 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 <common.h>
-#include <asm/m5272.h>
-#include <asm/immap_5272.h>
-
-
-int checkboard (void)
-{
- puts ("Board: ");
- puts ("senTec COBRA5272 Board\n");
- return 0;
-};
-
-long int initdram (int board_type)
-{
- volatile sdramctrl_t *sdp = (sdramctrl_t *) (CFG_MBAR + MCFSIM_SDCR);
-
- sdp->sdram_sdtr = 0xf539;
- sdp->sdram_sdcr = 0x4211;
-
- /* Dummy write to start SDRAM */
- *((volatile unsigned long *) 0) = 0;
-
- return CFG_SDRAM_SIZE * 1024 * 1024;
-};
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("DRAM test not implemented!\n");
-
- return (0);
-}
diff --git a/board/cobra5272/config.mk b/board/cobra5272/config.mk
deleted file mode 100644
index ccb2cf735d..0000000000
--- a/board/cobra5272/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (C) Copyright 2000-2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# Coldfire contribution by Bernhard Kuhn <bkuhn@metrowerks.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
-#
-
-TEXT_BASE = 0xffe00000
diff --git a/board/cobra5272/flash.c b/board/cobra5272/flash.c
deleted file mode 100644
index 82452e2c48..0000000000
--- a/board/cobra5272/flash.c
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * (C) Copyright 2000-2003
- * 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 <common.h>
-
-#define PHYS_FLASH_1 CFG_FLASH_BASE
-#define FLASH_BANK_SIZE 0x200000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf ("AMD: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_PL160CB & FLASH_TYPEMASK):
- printf ("AM29PL160CB (16Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
-Done:
- return;
-}
-
-
-unsigned long flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_PL160CB & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic ("configured to many flash banks!\n");
-
- for (j = 0; j < flash_info[i].sector_count; j++) {
- if (j == 0) {
- /* 1st is 16 KiB */
- flash_info[i].start[j] = flashbase;
- }
- if ((j >= 1) && (j <= 2)) {
- /* 2nd and 3rd are 8 KiB */
- flash_info[i].start[j] =
- flashbase + 0x4000 + 0x2000 * (j - 1);
- }
- if (j == 3) {
- /* 4th is 224 KiB */
- flash_info[i].start[j] = flashbase + 0x8000;
- }
- if ((j >= 4) && (j <= 10)) {
- /* rest is 256 KiB */
- flash_info[i].start[j] =
- flashbase + 0x40000 + 0x40000 * (j -
- 4);
- }
- }
- size += flash_info[i].size;
- }
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + 0x3ffff, &flash_info[0]);
-
- return size;
-}
-
-
-#define CMD_READ_ARRAY 0x00F0
-#define CMD_UNLOCK1 0x00AA
-#define CMD_UNLOCK2 0x0055
-#define CMD_ERASE_SETUP 0x0080
-#define CMD_ERASE_CONFIRM 0x0030
-#define CMD_PROGRAM 0x00A0
-#define CMD_UNLOCK_BYPASS 0x0020
-
-#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555<<1)))
-#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA<<1)))
-
-#define BIT_ERASE_DONE 0x0080
-#define BIT_RDY_MASK 0x0080
-#define BIT_PROGRAM_ERROR 0x0020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- ulong result;
- int iflag, cflag, prot, sect;
- int rc = ERR_OK;
- int chip1;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (AMD_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- printf ("\n");
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- set_timer (0);
-
- if (info->protect[sect] == 0) { /* not protected */
- volatile u16 *addr =
- (volatile u16 *) (info->start[sect]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- chip1 = 0;
-
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer (0) > CFG_FLASH_ERASE_TOUT) {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- chip1 = TMO;
- break;
- }
-
- if (!chip1
- && (result & 0xFFFF) & BIT_ERASE_DONE)
- chip1 = READY;
-
- } while (!chip1);
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- if (chip1 == ERR) {
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (chip1 == TMO) {
- rc = ERR_TIMOUT;
- goto outahere;
- }
-
- printf ("ok.\n");
- } else { /* it was protected */
-
- printf ("protected!\n");
- }
- }
-
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
- outahere:
- /* allow flash to settle - wait 10 ms */
- udelay (10000);
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile u16 *addr = (volatile u16 *) dest;
- ulong result;
- int rc = ERR_OK;
- int cflag, iflag;
- int chip1;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- set_timer (0);
-
- /* wait until flash is ready */
- chip1 = 0;
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer (0) > CFG_FLASH_ERASE_TOUT) {
- chip1 = ERR | TMO;
- break;
- }
- if (!chip1 && ((result & 0x80) == (data & 0x80)))
- chip1 = READY;
-
- } while (!chip1);
-
- *addr = CMD_READ_ARRAY;
-
- if (chip1 == ERR || *addr != data)
- rc = ERR_PROG_ERROR;
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong wp, data;
- int rc;
-
- if (addr & 1) {
- printf ("unaligned destination not supported\n");
- return ERR_ALIGN;
- }
-
-#if 0
- if (cnt & 1) {
- printf ("odd transfer sizes not supported\n");
- return ERR_ALIGN;
- }
-#endif
-
- wp = addr;
-
- if (addr & 1) {
- data = (*((volatile u8 *) addr) << 8) | *((volatile u8 *)
- src);
- if ((rc = write_word (info, wp - 1, data)) != 0) {
- return (rc);
- }
- src += 1;
- wp += 1;
- cnt -= 1;
- }
-
- while (cnt >= 2) {
- data = *((volatile u16 *) src);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 1) {
- data = (*((volatile u8 *) src) << 8) |
- *((volatile u8 *) (wp + 1));
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 1;
- wp += 1;
- cnt -= 1;
- }
-
- return ERR_OK;
-}
diff --git a/board/cobra5272/u-boot.lds b/board/cobra5272/u-boot.lds
deleted file mode 100644
index 872f09439c..0000000000
--- a/board/cobra5272/u-boot.lds
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_ARCH(m68k)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
- cpu/mcf52x2/start.o (.text)
- cpu/mcf52x2/cpu_init.o (.text)
- lib_m68k/traps.o (.text)
- cpu/mcf52x2/interrupts.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- 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_start = .;
- *(.got)
- __got_end = .;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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 = .;
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- . = ALIGN(4);
- _ebss = .;
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/cogent/Makefile b/board/cogent/Makefile
deleted file mode 100644
index ced04dd725..0000000000
--- a/board/cogent/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := mb.o flash.o dipsw.o lcd.o serial.o # pci.o rtc.o par.o kbm.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cogent/README b/board/cogent/README
deleted file mode 100644
index e6eef662c9..0000000000
--- a/board/cogent/README
+++ /dev/null
@@ -1,118 +0,0 @@
-Cogent Modular Architecture configuration
------------------------------------------
-
-As the name suggests, the Cogent platform is a modular system where
-you have a motherboard into which plugs a cpu module and one or more
-i/o modules. This provides very nice flexibility, but makes the
-configuration task somewhat harder.
-
-The possible Cogent motherboards are:
-
-Code Config Variable Description
----- --------------- -----------
-
-CMA101 CONFIG_CMA101 32MB ram, 2 ser, 1 par, rtc, dipsw,
- 2x16 lcd, eth(?)
-CMA102 CONFIG_CMA102 32MB ram, 2 ser, 1 par, rtc, dipsw,
- 2x16 lcd
-CMA111 CONFIG_CMA111 32MB ram, 1MB flash, 4 ser, 1 par,
- rtc, ps/2 kbd/mse, 2x16 lcd, 2xPCI,
- 10/100TP eth
-CMA120 CONFIG_CMA120 32MB ram, 1MB flash, 4 ser, 1 par,
- rtc, ps/2 kbd/mse, 2x16 lcd, 2xPCI,
- 10/100TP eth, 2xPCMCIA, video/lcd-panel
-CMA150 CONFIG_CMA150 8MB ram, 1MB flash, 2 ser, 1 par, rtc,
- ps/2 kbd/mse, 2x16 lcd
-
-The possible Cogent PowerPC CPU modules are:
-
-Code Config Variable Description
----- --------------- -----------
-
-CMA278-603EV CONFIG_CMA278_603EV PPC603ev CPU, 66MHz clock, 512K EPROM,
- JTAG/COP
-CMA278-603ER CONFIG_CMA278_603ER PPC603er CPU, 66MHz clock, 512K EPROM,
- JTAG/COP
-CMA278-740 CONFIG_CMA278_740 PPC740 CPU, 66MHz clock, 512K EPROM,
- JTAG/COP
-CMA280-509 CONFIG_CMA280_509 MPC505/509 CPU, 50MHz clock,
- 512K EPROM, BDM
-CMA282 CONFIG_CMA282 MPC8260 CPU, 66MHz clock, 512K EPROM,
- JTAG, 16M RAM, 1 x ser (SMC2),
- 1 x 10baseT PHY (SCC4), 1 x 10/100 TP
- PHY (FCC1), 2 x 48pin DIN (FCC2 + TDM1)
-CMA285 CONFIG_CMA285 MPC801 CPU, 33MHz clock, 512K EPROM,
- BDM
-CMA286-21 CONFIG_CMA286_21 MPC821 CPU, 66MHz clock, 512K EPROM,
- BDM, 16M RAM, 2 x ser (SMC1 + SMC2),
- 1 x 10baseT PHY (SCC2)
-CMA286-60-OLD CONFIG_CMA286_60_OLD MPC860 CPU, 33MHz clock, 128K EPROM,
- BDM
-CMA286-60 CONFIG_CMA286_60 MPC860 CPU, 66MHz clock, 512K EPROM,
- BDM, 16M RAM, 2 x ser (SMC1 + SMC2),
- 1 x 10baseT PHY (SCC2)
-CMA286-60P CONFIG_CMA286_60P MPC860P CPU, 66MHz clock, 512K EPROM,
- BDM, 16M RAM, 2 x ser (SMC1 + SMC2),
- 1 x 10baseT PHY (SCC2)
-CMA287-23 CONFIG_CMA287_23 MPC823 CPU, 33MHz clock, 512K EPROM,
- BDM
-CMA287-50 CONFIG_CMA287_50 MPC850 CPU, 33MHz clock, 512K EPROM,
- BDM
-
-(there are a lot of other cpu modules with ARM, MIPS and M-CORE CPUs,
-but we'll worry about those later).
-
-The possible Cogent CMA I/O Modules are:
-
-Code Config Variable Description
----- --------------- -----------
-
-CMA302 CONFIG_CMA302 up to 16M flash, ps/2 keyboard/mouse
-CMA352 CONFIG_CMA352 CMAbus <=> PCI
-
-Currently supported:
-
- Motherboards: CMA102
- CPU Modules: CMA286-60-OLD
- I/O Modules: CMA302 I/O module
-
-To configure, perform the usual U-Boot configuration task of editing
-"include/config_cogent_mpc8xx.h" and reviewing all the options and
-settings in there. In particular, check the chip select values
-installed into the memory controller's various option and base
-registers - these are set by the defines CFG_CMA_CSn_{BASE,SIZE} and
-CFG_{B,O}Rn_PRELIM. Also be careful of the clock settings installed
-into the SCCR - via the define CFG_SCCR. Finally, decide whether you
-want the serial console on motherboard serial port A or on one of the
-8xx SMC ports, and set CONFIG_8xx_CONS_{SMC1,SMC2,NONE} accordingly
-(NONE means use Cogent motherboard serial port A).
-
-Then edit the file "cogent/config.mk". Firstly, set TEXT_BASE to be
-the base address of the EPROM for the CPU module. This should be the
-same as the value selected for CFG_MONITOR_BASE in
-"include/config_cogent_*.h" (in fact, I have made this automatic via
-the -DTEXT_BASE=... option in CPPFLAGS).
-
-Finally, set the values of the make variables $(CMA_MB) and $(CMA_IOMS).
-
-$(CMA_MB) is the name of the directory that contains support for your
-motherboard. At this stage, only "cma10x" exists, which supports the
-CMA101 and CMA102 motherboards - but only selected devices, namely
-serial, lcd and dipsw.
-
-$(CMA_IOMS) is a list of zero or more directories that contain
-support for the i/o modules you have installed. At this stage, only
-"cma302" exists, which supports the CMA302 flash i/o module - but
-only the flash part, not the ps/2 keyboard and mouse interfaces.
-
-There should be a make variable for each of the above directories,
-which is the directory name with "_O" appended. This make variable is
-a list of object files to compile from that directory and include in
-the library.
-
- e.g. cma10x_O = serial.o ...
-
-That's it. Good Luck.
-
-Murray.Jensen@cmst.csiro.au
-August 31, 2000.
diff --git a/board/cogent/README.cma286 b/board/cogent/README.cma286
deleted file mode 100644
index 0345feae00..0000000000
--- a/board/cogent/README.cma286
+++ /dev/null
@@ -1,69 +0,0 @@
-CPU module revisions
---------------------
-
-My cpu module has the model number "CMA286-60-990526-01". My motherboard
-has the model number "CMA102-32M-990526-01". These are both fairly old,
-and may not reflect current design. In particular, I can see from the
-Cogent web site that the CMA286 has been significantly redesigned - it
-now has on board RAM (4M), ethernet 10baseT PHY (on SCC2), 2 serial ports
-(SMC1 and SMC2), and 48pin DIN for the FEC (if present i.e. MPC860T), and
-also the EPROM is 512K.
-
-My CMA286-60 has none of this, and only 128K EPROM. In addition, the CPU
-clock is listed as 66MHz, whereas mine is 33.333MHz.
-
-Clocks
-------
-
-Quote from my "CMA286 MPC860/821 User's Manual":
-
-"When setting up the Periodic Interrupt Timer (PIT), be aware that the
-CMA286 places the MPC860/821 in PLL X1 Mode. This means that we feed
-a 25MHz clock directly into the MPC860/821. This mode sets the divisor
-for the PIT to be 512. In addition, the Time Base Register (TMB)
-divisor is set to 16."
-
-I interpreted this information to mean that EXTCLK is 25MHz and that at
-power on reset, MODCK1=1 and MODCK2=0, which selects EXTCLK as the
-source for OSCCLK and PITRTCLK, sets RTDIV to 512 and sets MF (the
-multiplication factor) to 1 (I assume this is what they mean by X1
-mode above). MF=1 means the cpus internal clock runs at the same
-rate as EXTCLK i.e. 25MHz.
-
-Furthermore, since SCCR[TBS] (the Time Base Source selector bit in the
-System Clock and Reset Control register) is set in the cpu initialisation
-code, the TMBCLK source is forced to be GCLK2 and the TMBCLK prescale is
-forced to be 16. This results in TMBCLK=1562500.
-
-One problem - since PITRTCLK source is EXTCLK (25Mhz) and RTDIV is 512,
-PITRTCLK will be 48828.125 (huh?). Another quote from the MPC860 Users
-Manual:
-
-"When used by the real-time clock (RTC), the PITRTCLK source is first
-divided as determined by RTDIV, and then divided in the RTC circuits by
-either 8192 or 9600. Therefore, in order for the RTC to count in
-seconds, the clock source must satisfy:
-
- (EXTCLK or OSCM) / [(4 or 512) x (8192 or 9600)] = 1
-
-The RTC will operate with other frequencies, but it will not count in
-units of seconds."
-
-Therefore, the internal RTC of the MPC860 is not going to count in
-seconds, so we must use the motherboard RTC (if we need a RTC).
-
-I presume this means that they do not provide a fixed oscillator for
-OSCM. The code in get_gclk_freq() assumes PITRTCLK source is OSCM,
-RTDIV is 4, and that OSCM/4 is 8192 (i.e. a ~32KHz oscillator). Since
-the CMA286-60 doesn't have this (at least mine doesn't) we can't use
-the code in get_gclk_freq().
-
-Finally, it appears that the internal clock in my CMA286-60 is actually
-33.333MHz. Which makes TMBCLK=2083312.5 (another huh?) and
-PITRTCLK=65103.515625 (bloody hell!).
-
-If anyone finds anything wrong with the stuff above, I would appreciate
-an email about it.
-
-Murray Jensen <Murray.Jensen@csiro.au>
-21-Aug-00
diff --git a/board/cogent/config.mk b/board/cogent/config.mk
deleted file mode 100644
index ee779394bb..0000000000
--- a/board/cogent/config.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# (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
-#
-
-#
-# Cogent Modular Architecture
-#
-
-# Boot EPROM location
-TEXT_BASE = 0xfff00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/cogent/dipsw.c b/board/cogent/dipsw.c
deleted file mode 100644
index d2027c9758..0000000000
--- a/board/cogent/dipsw.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <common.h>
-#include <board/cogent/dipsw.h>
-
-unsigned char
-dipsw_raw(void)
-{
- return cma_mb_reg_read(&((cma_mb_dipsw *)CMA_MB_DIPSW_BASE)->dip_val);
-}
-
-unsigned char
-dipsw_cooked(void)
-{
- unsigned char val1, val2, mask1, mask2;
-
- val1 = dipsw_raw();
-
- /*
- * we want to mirror the bits because the low bit is switch 1 and high
- * bit is switch 8 and also invert them because 1=off and 0=on, according
- * to manual.
- *
- * this makes the value more intuitive i.e.
- * - left most, or high, or top, bit is left most switch (1);
- * - right most, or low, or bottom, bit is right most switch (8)
- * - a set bit means "on" and a clear bit means "off"
- */
-
- val2 = 0;
- for (mask1 = 1 << 7, mask2 = 1; mask1 > 0; mask1 >>= 1, mask2 <<= 1)
- if ((val1 & mask1) == 0)
- val2 |= mask2;
-
- return (val2);
-}
-
-void
-dipsw_init(void)
-{
- unsigned char val, mask;
-
- val = dipsw_cooked();
-
- printf("|");
- for (mask = 1 << 7; mask > 0; mask >>= 1)
- if (val & mask)
- printf("on |");
- else
- printf("off|");
- printf("\n");
-}
diff --git a/board/cogent/dipsw.h b/board/cogent/dipsw.h
deleted file mode 100644
index 4f52fd4392..0000000000
--- a/board/cogent/dipsw.h
+++ /dev/null
@@ -1,3 +0,0 @@
-extern unsigned char dipsw_raw(void);
-extern unsigned char dipsw_cooked(void);
-extern void dipsw_init(void);
diff --git a/board/cogent/flash.c b/board/cogent/flash.c
deleted file mode 100644
index 969520d277..0000000000
--- a/board/cogent/flash.c
+++ /dev/null
@@ -1,648 +0,0 @@
-/*
- * (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 <common.h>
-#include <board/cogent/flash.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-
-#if defined(CONFIG_CMA302)
-
-/*
- * probe for the existence of flash at address "addr"
- * 0 = yes, 1 = bad Manufacturer's Id, 2 = bad Device Id
- */
-static int
-c302f_probe_word(c302f_addr_t addr)
-{
- /* reset the flash */
- *addr = C302F_BNK_CMD_RST;
-
- /* check the manufacturer id */
- *addr = C302F_BNK_CMD_RD_ID;
- if (*C302F_BNK_ADDR_MAN(addr) != C302F_BNK_RD_ID_MAN)
- return 1;
-
- /* check the device id */
- *addr = C302F_BNK_CMD_RD_ID;
- if (*C302F_BNK_ADDR_DEV(addr) != C302F_BNK_RD_ID_DEV)
- return 2;
-
-#ifdef FLASH_DEBUG
- {
- int i;
-
- printf("\nMaster Lock Config = 0x%08lx\n",
- *C302F_BNK_ADDR_CFGM(addr));
- for (i = 0; i < C302F_BNK_NBLOCKS; i++)
- printf("Block %2d Lock Config = 0x%08lx\n",
- i, *C302F_BNK_ADDR_CFG(i, addr));
- }
-#endif
-
- /* reset the flash again */
- *addr = C302F_BNK_CMD_RST;
-
- return 0;
-}
-
-/*
- * probe for Cogent CMA302 flash module at address "base" and store
- * info for any found into flash_info entry "fip". Must find at least
- * one bank.
- */
-static void
-c302f_probe(flash_info_t *fip, c302f_addr_t base)
-{
- c302f_addr_t addr, eaddr;
- int nbanks;
-
- fip->size = 0L;
- fip->sector_count = 0;
-
- addr = base;
- eaddr = C302F_BNK_ADDR_BASE(addr, C302F_MAX_BANKS);
- nbanks = 0;
-
- while (addr < eaddr) {
- c302f_addr_t addrw, eaddrw, addrb;
- int i, osc, nsc;
-
- addrw = addr;
- eaddrw = C302F_BNK_ADDR_NEXT_WORD(addrw);
-
- while (addrw < eaddrw)
- if (c302f_probe_word(addrw++) != 0)
- goto out;
-
- /* bank exists - append info for this bank to *fip */
- fip->flash_id = FLASH_MAN_INTEL|FLASH_28F008S5;
- fip->size += C302F_BNK_SIZE;
- osc = fip->sector_count;
- fip->sector_count += C302F_BNK_NBLOCKS;
- if ((nsc = fip->sector_count) >= CFG_MAX_FLASH_SECT)
- panic("Too many sectors in flash at address 0x%08lx\n",
- (unsigned long)base);
-
- addrb = addr;
- for (i = osc; i < nsc; i++) {
- fip->start[i] = (ulong)addrb;
- fip->protect[i] = 0;
- addrb = C302F_BNK_ADDR_NEXT_BLK(addrb);
- }
-
- addr = C302F_BNK_ADDR_NEXT_BNK(addr);
- nbanks++;
- }
-
-out:
- if (nbanks == 0)
- panic("ERROR: no flash found at address 0x%08lx\n",
- (unsigned long)base);
-}
-
-static void
-c302f_reset(flash_info_t *info, int sect)
-{
- c302f_addr_t addrw, eaddrw;
-
- addrw = (c302f_addr_t)info->start[sect];
- eaddrw = C302F_BNK_ADDR_NEXT_WORD(addrw);
-
- while (addrw < eaddrw) {
-#ifdef FLASH_DEBUG
- printf(" writing reset cmd to addr 0x%08lx\n",
- (unsigned long)addrw);
-#endif
- *addrw = C302F_BNK_CMD_RST;
- addrw++;
- }
-}
-
-static void
-c302f_erase_init(flash_info_t *info, int sect)
-{
- c302f_addr_t addrw, saddrw, eaddrw;
- int flag;
-
-#ifdef FLASH_DEBUG
- printf("0x%08lx C302F_BNK_CMD_PROG\n", C302F_BNK_CMD_PROG);
- printf("0x%08lx C302F_BNK_CMD_ERASE1\n", C302F_BNK_CMD_ERASE1);
- printf("0x%08lx C302F_BNK_CMD_ERASE2\n", C302F_BNK_CMD_ERASE2);
- printf("0x%08lx C302F_BNK_CMD_CLR_STAT\n", C302F_BNK_CMD_CLR_STAT);
- printf("0x%08lx C302F_BNK_CMD_RST\n", C302F_BNK_CMD_RST);
- printf("0x%08lx C302F_BNK_STAT_RDY\n", C302F_BNK_STAT_RDY);
- printf("0x%08lx C302F_BNK_STAT_ERR\n", C302F_BNK_STAT_ERR);
-#endif
-
- saddrw = (c302f_addr_t)info->start[sect];
- eaddrw = C302F_BNK_ADDR_NEXT_WORD(saddrw);
-
-#ifdef FLASH_DEBUG
- printf("erasing sector %d, start addr = 0x%08lx "
- "(bank next word addr = 0x%08lx)\n", sect,
- (unsigned long)saddrw, (unsigned long)eaddrw);
-#endif
-
- /* Disable intrs which might cause a timeout here */
- flag = disable_interrupts();
-
- for (addrw = saddrw; addrw < eaddrw; addrw++) {
-#ifdef FLASH_DEBUG
- printf(" writing erase cmd to addr 0x%08lx\n",
- (unsigned long)addrw);
-#endif
- *addrw = C302F_BNK_CMD_ERASE1;
- *addrw = C302F_BNK_CMD_ERASE2;
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-}
-
-static int
-c302f_erase_poll(flash_info_t *info, int sect)
-{
- c302f_addr_t addrw, saddrw, eaddrw;
- int sectdone, haderr;
-
- saddrw = (c302f_addr_t)info->start[sect];
- eaddrw = C302F_BNK_ADDR_NEXT_WORD(saddrw);
-
- sectdone = 1;
- haderr = 0;
-
- for (addrw = saddrw; addrw < eaddrw; addrw++) {
- c302f_word_t stat = *addrw;
-
-#ifdef FLASH_DEBUG
- printf(" checking status at addr "
- "0x%08lx [0x%08lx]\n",
- (unsigned long)addrw, stat);
-#endif
- if ((stat & C302F_BNK_STAT_RDY) != C302F_BNK_STAT_RDY)
- sectdone = 0;
- else if ((stat & C302F_BNK_STAT_ERR) != 0) {
- printf(" failed on sector %d "
- "(stat = 0x%08lx) at "
- "address 0x%08lx\n",
- sect, stat,
- (unsigned long)addrw);
- *addrw = C302F_BNK_CMD_CLR_STAT;
- haderr = 1;
- }
- }
-
- if (haderr)
- return (-1);
- else
- return (sectdone);
-}
-
-static int
-c302f_write_word(c302f_addr_t addr, c302f_word_t value)
-{
- c302f_word_t stat;
- ulong start;
- int flag, retval;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = C302F_BNK_CMD_PROG;
-
- *addr = value;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- retval = 0;
-
- /* data polling for D7 */
- start = get_timer (0);
- do {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- retval = 1;
- goto done;
- }
- stat = *addr;
- } while ((stat & C302F_BNK_STAT_RDY) != C302F_BNK_STAT_RDY);
-
- if ((stat & C302F_BNK_STAT_ERR) != 0) {
- printf("flash program failed (stat = 0x%08lx) "
- "at address 0x%08lx\n", (ulong)stat, (ulong)addr);
- *addr = C302F_BNK_CMD_CLR_STAT;
- retval = 3;
- }
-
-done:
- /* reset to read mode */
- *addr = C302F_BNK_CMD_RST;
-
- return (retval);
-}
-
-#endif /* CONFIG_CMA302 */
-
-unsigned long
-flash_init(void)
-{
- unsigned long total;
- int i;
- flash_info_t *fip;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- fip = &flash_info[0];
- total = 0L;
-
-#if defined(CONFIG_CMA302)
- c302f_probe(fip, (c302f_addr_t)CFG_FLASH_BASE);
- total += fip->size;
- fip++;
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
- /* not yet ...
- cmbf_probe(fip, (cmbf_addr_t)CMA_MB_FLASH_BASE);
- total += fip->size;
- fip++;
- */
-#endif
-
- /*
- * protect monitor and environment sectors
- */
-
-#if CFG_MONITOR_BASE == CFG_FLASH_BASE
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
- return total;
-}
-
-/*-----------------------------------------------------------------------
- */
-void
-flash_print_info(flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F008S5: printf ("28F008S5\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 4) == 0)
- printf ("\n ");
- printf (" %2d - %08lX%s", i,
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-int
-flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- int prot, sect, haderr;
- ulong start, now, last;
- void (*erase_init)(flash_info_t *, int);
- int (*erase_poll)(flash_info_t *, int);
- void (*reset)(flash_info_t *, int);
- int rcode = 0;
-
-#ifdef FLASH_DEBUG
- printf("\nflash_erase: erase %d sectors (%d to %d incl.) from\n"
- " Bank # %d: ", s_last - s_first + 1, s_first, s_last,
- (info - flash_info) + 1);
- flash_print_info(info);
-#endif
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id) {
-
-#if defined(CONFIG_CMA302)
- case FLASH_MAN_INTEL|FLASH_28F008S5:
- erase_init = c302f_erase_init;
- erase_poll = c302f_erase_poll;
- reset = c302f_reset;
- break;
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
- case FLASH_MAN_INTEL|FLASH_28F800_B:
- case FLASH_MAN_AMD|FLASH_AM29F800B:
- /* not yet ...
- erase_init = cmbf_erase_init;
- erase_poll = cmbf_erase_poll;
- reset = cmbf_reset;
- break;
- */
-#endif
-
- default:
- printf ("Flash type %08lx not supported - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf("- Warning: %d protected sector%s will not be erased!\n",
- prot, (prot > 1 ? "s" : ""));
- }
-
- start = get_timer (0);
- last = 0;
- haderr = 0;
-
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- ulong estart;
- int sectdone;
-
- (*erase_init)(info, sect);
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- estart = get_timer(start);
-
- do {
- now = get_timer(start);
-
- if (now - estart > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout (sect %d)\n", sect);
- haderr = 1;
- break;
- }
-
-#ifndef FLASH_DEBUG
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
-#endif
-
- sectdone = (*erase_poll)(info, sect);
-
- if (sectdone < 0) {
- haderr = 1;
- break;
- }
-
- } while (!sectdone);
-
- if (haderr)
- break;
- }
- }
-
- if (haderr > 0) {
- printf (" failed\n");
- rcode = 1;
- }
- else
- printf (" done\n");
-
- /* reset to read mode */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- (*reset)(info, sect);
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 3 - write error
- */
-
-int
-write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
- ulong start, now, last;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- start = get_timer (0);
- last = 0;
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
-
- /* show that we're waiting */
- now = get_timer(start);
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 3 - write error
- */
-static int
-write_word(flash_info_t *info, ulong dest, ulong data)
-{
- int retval;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*(ulong *)dest & data) != data) {
- return (2);
- }
-
- switch (info->flash_id) {
-
-#if defined(CONFIG_CMA302)
- case FLASH_MAN_INTEL|FLASH_28F008S5:
- retval = c302f_write_word((c302f_addr_t)dest, (c302f_word_t)data);
- break;
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
- case FLASH_MAN_INTEL|FLASH_28F800_B:
- case FLASH_MAN_AMD|FLASH_AM29F800B:
- /* not yet ...
- retval = cmbf_write_word((cmbf_addr_t)dest, (cmbf_word_t)data);
- */
- retval = 3;
- break;
-#endif
-
- default:
- printf ("Flash type %08lx not supported - aborted\n",
- info->flash_id);
- retval = 3;
- break;
- }
-
- return (retval);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/cogent/flash.h b/board/cogent/flash.h
deleted file mode 100644
index 0b8d6aaef6..0000000000
--- a/board/cogent/flash.h
+++ /dev/null
@@ -1,305 +0,0 @@
-/**************** DEFINES for Intel 28F008S5 FLASH chip **********************/
-
-/* register addresses, valid only following a I8S5_CMD_RD_ID command */
-#define I8S5_ADDR_MAN 0x00000 /* manufacturer's id */
-#define I8S5_ADDR_DEV 0x00001 /* device id */
-#define I8S5_ADDR_CFGM 0x00003 /* master lock configuration */
-#define I8S5_ADDR_CFG(b) (((b)<<16)|2) /* block lock configuration */
-
-/* Commands */
-#define I8S5_CMD_RST 0xFF /* reset flash */
-#define I8S5_CMD_RD_ID 0x90 /* read the id and lock bits */
-#define I8S5_CMD_RD_STAT 0x70 /* read the status register */
-#define I8S5_CMD_CLR_STAT 0x50 /* clear the staus register */
-#define I8S5_CMD_ERASE1 0x20 /* first word for block erase */
-#define I8S5_CMD_ERASE2 0xD0 /* second word for block erase */
-#define I8S5_CMD_PROG 0x40 /* program word command */
-#define I8S5_CMD_LOCK 0x60 /* first word for all lock commands */
-#define I8S5_CMD_SET_LOCK_BLK 0x01 /* 2nd word for set block lock bit */
-#define I8S5_CMD_SET_LOCK_MSTR 0xF1 /* 2nd word for set master lock bit */
-#define I8S5_CMD_CLR_LOCK_BLK 0xD0 /* 2nd word for clear block lock bit */
-
-/* status register bits */
-#define I8S5_STAT_DPS 0x02 /* Device Protect Status */
-#define I8S5_STAT_PSS 0x04 /* Program Suspend Status */
-#define I8S5_STAT_VPPS 0x08 /* VPP Status */
-#define I8S5_STAT_PSLBS 0x10 /* Program and Set Lock Bit Status */
-#define I8S5_STAT_ECLBS 0x20 /* Erase and Clear Lock Bit Status */
-#define I8S5_STAT_ESS 0x40 /* Erase Suspend Status */
-#define I8S5_STAT_RDY 0x80 /* Write State Machine Status, 1=rdy */
-
-#define I8S5_STAT_ERR (I8S5_STAT_VPPS | I8S5_STAT_DPS | \
- I8S5_STAT_ECLBS | I8S5_STAT_PSLBS)
-
-/* ID and Lock Configuration */
-#define I8S5_RD_ID_LOCK 0x01 /* Bit 0 of each byte */
-#define I8S5_RD_ID_MAN 0x89 /* Manufacturer code = 0x89 */
-#define I8S5_RD_ID_DEV 0xA6 /* Device code = 0xA6, 28F008S5 */
-
-/* dimensions */
-#define I8S5_NBLOCKS 16 /* a 28F008S5 consists of 16 blocks */
-#define I8S5_BLKSZ (64*1024) /* of 64Kbyte each */
-#define I8S5_SIZE (I8S5_BLKSZ * I8S5_NBLOCKS)
-
-/**************** DEFINES for Intel 28F800B5 FLASH chip **********************/
-
-/* register addresses, valid only following a I8S5_CMD_RD_ID command */
-#define I8B5_ADDR_MAN 0x00000 /* manufacturer's id */
-#define I8B5_ADDR_DEV 0x00001 /* device id */
-
-/* Commands */
-#define I8B5_CMD_RST 0xFF /* reset flash */
-#define I8B5_CMD_RD_ID 0x90 /* read the id and lock bits */
-#define I8B5_CMD_RD_STAT 0x70 /* read the status register */
-#define I8B5_CMD_CLR_STAT 0x50 /* clear the staus register */
-#define I8B5_CMD_ERASE1 0x20 /* first word for block erase */
-#define I8B5_CMD_ERASE2 0xD0 /* second word for block erase */
-#define I8B5_CMD_PROG 0x40 /* program word command */
-
-/* status register bits */
-#define I8B5_STAT_VPPS 0x08 /* VPP Status */
-#define I8B5_STAT_DWS 0x10 /* Program and Set Lock Bit Status */
-#define I8B5_STAT_ES 0x20 /* Erase and Clear Lock Bit Status */
-#define I8B5_STAT_ESS 0x40 /* Erase Suspend Status */
-#define I8B5_STAT_RDY 0x80 /* Write State Machine Status, 1=rdy */
-
-#define I8B5_STAT_ERR (I8B5_STAT_VPPS | I8B5_STAT_DWS | I8B5_STAT_ES)
-
-/* ID Configuration */
-#define I8B5_RD_ID_MAN 0x89 /* Manufacturer code = 0x89 */
-#define I8B5_RD_ID_DEV1 0x889D /* Device code = 0x889D, 28F800B5 */
-
-/* dimensions */
-#define I8B5_NBLOCKS 8 /* a 28F008S5 consists of 16 blocks */
-#define I8B5_BLKSZ (128*1024) /* of 64Kbyte each */
-#define I8B5_SIZE (I8B5_BLKSZ * I8B5_NBLOCKS)
-
-/****************** DEFINES for Cogent CMA302 Flash **************************/
-
-/*
- * Quoted from the CMA302 manual:
- *
- * Although the CMA302 supports 64-bit reads, all writes must be done with
- * word size only. When programming the CMA302, the FLASH devices appear as 2
- * banks of interleaved, 32-bit wide FLASH. Each 32-bit word consists of four
- * 28F008S5 devices. The first bank is accessed when the word address is even,
- * while the second bank is accessed when the word address is odd. This must
- * be taken into account when programming the desired word. Also, when locking
- * blocks, software must lock both banks. The CMA302 does not directly support
- * byte writing. Programming and/or erasing individual bytes is done with
- * selective use of the Write Command. By not placing the Write Command value
- * on a particular byte lane, that byte will not be written with the following
- * Write Data. Also, remember that within a byte lane (i.e. D0-7), there are
- * two 28F008S5 devices, one for each bank or every other word.
- *
- * End quote.
- *
- * Each 28F008S5 is 8Mbit, with 8 bit wide data. i.e. each is 1Mbyte. The
- * chips are arranged on the CMA302 in multiples of two banks, each bank having
- * 4 chips. Each bank must be accessed as a single 32 bit wide device (i.e.
- * aligned on a 32 bit boundary), with each byte lane within the 32 bits (0-3)
- * going to each of the 4 chips and the word address selecting the bank, even
- * being the low bank and odd the high bank. For 64bit reads, both banks are
- * read simultaneously with the second bank on byte lanes 4-7. Each 28F008S5
- * consists of 16 64Kbyte "block"s. Before programming a byte, the block that
- * the byte resides within must be erased. So if you want to program contiguous
- * memory locations, you must erase all 8 chips at the same time. i.e. the
- * flash on the CMA302 can be viewed as a number of 512Kbyte blocks.
- *
- * Note: I am going to treat banks as 8 Mbytes (1Meg of 64bit words), whereas
- * the example code treats them as a pair of interleaved 1 Mbyte x 32bit banks.
- */
-
-typedef unsigned long c302f_word_t; /* 32 or 64 bit unsigned integer */
-typedef volatile c302f_word_t *c302f_addr_t;
-typedef unsigned long c302f_size_t; /* want this big - at least 32 bit */
-
-/* layout of banks on cma302 board */
-#define C302F_BNK_WIDTH 8 /* each bank is 8 chips wide */
-#define C302F_BNK_WSHIFT 3 /* log base 2 of C302F_BNK_WIDTH */
-#define C302F_BNK_NBLOCKS I8S5_NBLOCKS
-#define C302F_BNK_BLKSZ (I8S5_BLKSZ * C302F_BNK_WIDTH)
-#define C302F_BNK_SIZE (I8S5_SIZE * C302F_BNK_WIDTH)
-
-#define C302F_MAX_BANKS 2 /* up to 2 banks (8M each) on CMA302 */
-
-/* align addresses and sizes to bank boundaries */
-#define C302F_BNK_ADDR_ALIGN(a) ((c302f_addr_t)((c302f_size_t)(a) \
- & ~(C302F_BNK_WIDTH - 1)))
-#define C302F_BNK_SIZE_ALIGN(s) ((c302f_size_t)C302F_BNK_ADDR_ALIGN( \
- (c302f_size_t)(s) + (C302F_BNK_WIDTH - 1)))
-
-/* align addresses and sizes to block boundaries */
-#define C302F_BLK_ADDR_ALIGN(a) ((c302f_addr_t)((c302f_size_t)(a) \
- & ~(C302F_BNK_BLKSZ - 1)))
-#define C302F_BLK_SIZE_ALIGN(s) ((c302f_size_t)C302F_BLK_ADDR_ALIGN( \
- (c302f_size_t)(s) + (C302F_BNK_BLKSZ - 1)))
-
-/* add a byte offset to a flash address */
-#define C302F_ADDR_ADD_BYTEOFF(a,o) \
- (c302f_addr_t)((c302f_size_t)(a) + (o))
-
-/* get base address of bank b, given flash base address a */
-#define C302F_BNK_ADDR_BASE(a,b) \
- C302F_ADDR_ADD_BYTEOFF((a), \
- (c302f_size_t)(b) * C302F_BNK_SIZE)
-
-/* adjust an address a (within a bank) to next word, block or bank */
-#define C302F_BNK_ADDR_NEXT_WORD(a) \
- C302F_ADDR_ADD_BYTEOFF((a), C302F_BNK_WIDTH)
-#define C302F_BNK_ADDR_NEXT_BLK(a) \
- C302F_ADDR_ADD_BYTEOFF((a), C302F_BNK_BLKSZ)
-#define C302F_BNK_ADDR_NEXT_BNK(a) \
- C302F_ADDR_ADD_BYTEOFF((a), C302F_BNK_SIZE)
-
-/* get bank address of chip register r given a bank base address a */
-#define C302F_BNK_ADDR_I8S5REG(a,r) \
- C302F_ADDR_ADD_BYTEOFF((a), \
- (r) << C302F_BNK_WSHIFT)
-
-/* make a bank representation for each chip address */
-
-#define C302F_BNK_ADDR_MAN(a) C302F_BNK_ADDR_I8S5REG((a), I8S5_ADDR_MAN)
-#define C302F_BNK_ADDR_DEV(a) C302F_BNK_ADDR_I8S5REG((a), I8S5_ADDR_DEV)
-#define C302F_BNK_ADDR_CFGM(a) C302F_BNK_ADDR_I8S5REG((a), I8S5_ADDR_CFGM)
-#define C302F_BNK_ADDR_CFG(b,a) C302F_BNK_ADDR_I8S5REG((a), I8S5_ADDR_CFG(b))
-
-/*
- * replicate a chip cmd/stat/rd value into each byte position within a word
- * so that multiple chips are accessed in a single word i/o operation
- *
- * this must be as wide as the c302f_word_t type
- */
-#define C302F_FILL_WORD(o) (((unsigned long)(o) << 24) | \
- ((unsigned long)(o) << 16) | \
- ((unsigned long)(o) << 8) | \
- (unsigned long)(o))
-
-/* make a bank representation for each chip cmd/stat/rd value */
-
-/* Commands */
-#define C302F_BNK_CMD_RST C302F_FILL_WORD(I8S5_CMD_RST)
-#define C302F_BNK_CMD_RD_ID C302F_FILL_WORD(I8S5_CMD_RD_ID)
-#define C302F_BNK_CMD_RD_STAT C302F_FILL_WORD(I8S5_CMD_RD_STAT)
-#define C302F_BNK_CMD_CLR_STAT C302F_FILL_WORD(I8S5_CMD_CLR_STAT)
-#define C302F_BNK_CMD_ERASE1 C302F_FILL_WORD(I8S5_CMD_ERASE1)
-#define C302F_BNK_CMD_ERASE2 C302F_FILL_WORD(I8S5_CMD_ERASE2)
-#define C302F_BNK_CMD_PROG C302F_FILL_WORD(I8S5_CMD_PROG)
-#define C302F_BNK_CMD_LOCK C302F_FILL_WORD(I8S5_CMD_LOCK)
-#define C302F_BNK_CMD_SET_LOCK_BLK C302F_FILL_WORD(I8S5_CMD_SET_LOCK_BLK)
-#define C302F_BNK_CMD_SET_LOCK_MSTR C302F_FILL_WORD(I8S5_CMD_SET_LOCK_MSTR)
-#define C302F_BNK_CMD_CLR_LOCK_BLK C302F_FILL_WORD(I8S5_CMD_CLR_LOCK_BLK)
-
-/* status register bits */
-#define C302F_BNK_STAT_DPS C302F_FILL_WORD(I8S5_STAT_DPS)
-#define C302F_BNK_STAT_PSS C302F_FILL_WORD(I8S5_STAT_PSS)
-#define C302F_BNK_STAT_VPPS C302F_FILL_WORD(I8S5_STAT_VPPS)
-#define C302F_BNK_STAT_PSLBS C302F_FILL_WORD(I8S5_STAT_PSLBS)
-#define C302F_BNK_STAT_ECLBS C302F_FILL_WORD(I8S5_STAT_ECLBS)
-#define C302F_BNK_STAT_ESS C302F_FILL_WORD(I8S5_STAT_ESS)
-#define C302F_BNK_STAT_RDY C302F_FILL_WORD(I8S5_STAT_RDY)
-
-#define C302F_BNK_STAT_ERR C302F_FILL_WORD(I8S5_STAT_ERR)
-
-/* ID and Lock Configuration */
-#define C302F_BNK_RD_ID_LOCK C302F_FILL_WORD(I8S5_RD_ID_LOCK)
-#define C302F_BNK_RD_ID_MAN C302F_FILL_WORD(I8S5_RD_ID_MAN)
-#define C302F_BNK_RD_ID_DEV C302F_FILL_WORD(I8S5_RD_ID_DEV)
-
-/*************** DEFINES for Cogent Motherboard Flash ************************/
-
-typedef unsigned short cmbf_word_t; /* 16 bit unsigned integer */
-typedef volatile cmbf_word_t *cmbf_addr_t;
-typedef unsigned long cmbf_size_t; /* want this big - at least 32 bit */
-
-/* layout of banks on cogent motherboard - only 1 bank, 16 bit wide */
-#define CMBF_BNK_WIDTH 1 /* each bank is one chip wide */
-#define CMBF_BNK_WSHIFT 0 /* log base 2 of CMBF_BNK_WIDTH */
-#define CMBF_BNK_NBLOCKS I8B5_NBLOCKS
-#define CMBF_BNK_BLKSZ (I8B5_BLKSZ * CMBF_BNK_WIDTH)
-#define CMBF_BNK_SIZE (I8B5_SIZE * CMBF_BNK_WIDTH)
-
-#define CMBF_MAX_BANKS 1 /* only 1 x 1Mbyte bank on cogent m/b */
-
-/* align addresses and sizes to bank boundaries */
-#define CMBF_BNK_ADDR_ALIGN(a) ((c302f_addr_t)((c302f_size_t)(a) \
- & ~(CMBF_BNK_WIDTH - 1)))
-#define CMBF_BNK_SIZE_ALIGN(s) ((c302f_size_t)CMBF_BNK_ADDR_ALIGN( \
- (c302f_size_t)(s) + (CMBF_BNK_WIDTH - 1)))
-
-/* align addresses and sizes to block boundaries */
-#define CMBF_BLK_ADDR_ALIGN(a) ((c302f_addr_t)((c302f_size_t)(a) \
- & ~(CMBF_BNK_BLKSZ - 1)))
-#define CMBF_BLK_SIZE_ALIGN(s) ((c302f_size_t)CMBF_BLK_ADDR_ALIGN( \
- (c302f_size_t)(s) + (CMBF_BNK_BLKSZ - 1)))
-
-/* add a byte offset to a flash address */
-#define CMBF_ADDR_ADD_BYTEOFF(a,o) \
- (c302f_addr_t)((c302f_size_t)(a) + (o))
-
-/* get base address of bank b, given flash base address a */
-#define CMBF_BNK_ADDR_BASE(a,b) \
- CMBF_ADDR_ADD_BYTEOFF((a), \
- (c302f_size_t)(b) * CMBF_BNK_SIZE)
-
-/* adjust an address a (within a bank) to next word, block or bank */
-#define CMBF_BNK_ADDR_NEXT_WORD(a) \
- CMBF_ADDR_ADD_BYTEOFF((a), CMBF_BNK_WIDTH)
-#define CMBF_BNK_ADDR_NEXT_BLK(a) \
- CMBF_ADDR_ADD_BYTEOFF((a), CMBF_BNK_BLKSZ)
-#define CMBF_BNK_ADDR_NEXT_BNK(a) \
- CMBF_ADDR_ADD_BYTEOFF((a), CMBF_BNK_SIZE)
-
-/* get bank address of chip register r given a bank base address a */
-#define CMBF_BNK_ADDR_I8B5REG(a,r) \
- CMBF_ADDR_ADD_BYTEOFF((a), \
- (r) << CMBF_BNK_WSHIFT)
-
-/* make a bank representation for each chip address */
-
-#define CMBF_BNK_ADDR_MAN(a) CMBF_BNK_ADDR_I8B5REG((a), I8B5_ADDR_MAN)
-#define CMBF_BNK_ADDR_DEV(a) CMBF_BNK_ADDR_I8B5REG((a), I8B5_ADDR_DEV)
-#define CMBF_BNK_ADDR_CFGM(a) CMBF_BNK_ADDR_I8B5REG((a), I8B5_ADDR_CFGM)
-#define CMBF_BNK_ADDR_CFG(b,a) CMBF_BNK_ADDR_I8B5REG((a), I8B5_ADDR_CFG(b))
-
-/*
- * replicate a chip cmd/stat/rd value into each byte position within a word
- * so that multiple chips are accessed in a single word i/o operation
- *
- * this must be as wide as the c302f_word_t type
- */
-#define CMBF_FILL_WORD(o) (((unsigned long)(o) << 24) | \
- ((unsigned long)(o) << 16) | \
- ((unsigned long)(o) << 8) | \
- (unsigned long)(o))
-
-/* make a bank representation for each chip cmd/stat/rd value */
-
-/* Commands */
-#define CMBF_BNK_CMD_RST CMBF_FILL_WORD(I8B5_CMD_RST)
-#define CMBF_BNK_CMD_RD_ID CMBF_FILL_WORD(I8B5_CMD_RD_ID)
-#define CMBF_BNK_CMD_RD_STAT CMBF_FILL_WORD(I8B5_CMD_RD_STAT)
-#define CMBF_BNK_CMD_CLR_STAT CMBF_FILL_WORD(I8B5_CMD_CLR_STAT)
-#define CMBF_BNK_CMD_ERASE1 CMBF_FILL_WORD(I8B5_CMD_ERASE1)
-#define CMBF_BNK_CMD_ERASE2 CMBF_FILL_WORD(I8B5_CMD_ERASE2)
-#define CMBF_BNK_CMD_PROG CMBF_FILL_WORD(I8B5_CMD_PROG)
-#define CMBF_BNK_CMD_LOCK CMBF_FILL_WORD(I8B5_CMD_LOCK)
-#define CMBF_BNK_CMD_SET_LOCK_BLK CMBF_FILL_WORD(I8B5_CMD_SET_LOCK_BLK)
-#define CMBF_BNK_CMD_SET_LOCK_MSTR CMBF_FILL_WORD(I8B5_CMD_SET_LOCK_MSTR)
-#define CMBF_BNK_CMD_CLR_LOCK_BLK CMBF_FILL_WORD(I8B5_CMD_CLR_LOCK_BLK)
-
-/* status register bits */
-#define CMBF_BNK_STAT_DPS CMBF_FILL_WORD(I8B5_STAT_DPS)
-#define CMBF_BNK_STAT_PSS CMBF_FILL_WORD(I8B5_STAT_PSS)
-#define CMBF_BNK_STAT_VPPS CMBF_FILL_WORD(I8B5_STAT_VPPS)
-#define CMBF_BNK_STAT_PSLBS CMBF_FILL_WORD(I8B5_STAT_PSLBS)
-#define CMBF_BNK_STAT_ECLBS CMBF_FILL_WORD(I8B5_STAT_ECLBS)
-#define CMBF_BNK_STAT_ESS CMBF_FILL_WORD(I8B5_STAT_ESS)
-#define CMBF_BNK_STAT_RDY CMBF_FILL_WORD(I8B5_STAT_RDY)
-
-#define CMBF_BNK_STAT_ERR CMBF_FILL_WORD(I8B5_STAT_ERR)
-
-/* ID and Lock Configuration */
-#define CMBF_BNK_RD_ID_LOCK CMBF_FILL_WORD(I8B5_RD_ID_LOCK)
-#define CMBF_BNK_RD_ID_MAN CMBF_FILL_WORD(I8B5_RD_ID_MAN)
-#define CMBF_BNK_RD_ID_DEV CMBF_FILL_WORD(I8B5_RD_ID_DEV)
diff --git a/board/cogent/kbm.c b/board/cogent/kbm.c
deleted file mode 100644
index 84964025ac..0000000000
--- a/board/cogent/kbm.c
+++ /dev/null
@@ -1,3 +0,0 @@
-/* keyboard/mouse not implemented yet */
-
-int cma_kbm_not_implemented = 1;
diff --git a/board/cogent/kbm.h b/board/cogent/kbm.h
deleted file mode 100644
index 7eb419c1d6..0000000000
--- a/board/cogent/kbm.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* keyboard/mouse not implemented yet */
-
-extern int cma_kbm_not_implemented;
-
-/**************** DEFINES for H8542B Keyboard/Mouse Controller ***************/
-
-/*
- * note the auxillary port is used to control the mouse
- */
-
-/* 8542B Commands (Sent to the Command Port) */
-#define HT8542_CMD_SET_BYTE 0x60 /* Set the command byte */
-#define HT8542_CMD_GET_BYTE 0x20 /* Get the command byte */
-#define HT8542_CMD_KBD_OBUFF 0xD2 /* Write to HT8542 Kbd Output Buffer */
-#define HT8542_CMD_AUX_OBUFF 0xD3 /* Write to HT8542 Mse Output Buffer */
-#define HT8542_CMD_AUX_WRITE 0xD4 /* Write to Mouse Port */
-#define HT8542_CMD_AUX_OFF 0xA7 /* Disable Mouse Port */
-#define HT8542_CMD_AUX_ON 0xA8 /* Re-Enable Mouse Port */
-#define HT8542_CMD_AUX_TEST 0xA9 /* Test for the presence of a Mouse */
-#define HT8542_CMD_DIAG 0xAA /* Start Diagnostics */
-#define HT8542_CMD_KBD_TEST 0xAB /* Test for presence of a keyboard */
-#define HT8542_CMD_KBD_OFF 0xAD /* Disable Kbd Port (use KBD_DAT_ON) */
-#define HT8542_CMD_KBD_ON 0xAE /* Enable Kbd Port (use KBD_DAT_OFF) */
-
-/* HT8542B cmd byte set by KBD_CMD_SET_BYTE and retrieved by KBD_CMD_GET_BYTE */
-#define HT8542_CMD_BYTE_TRANS 0x40
-#define HT8542_CMD_BYTE_AUX_OFF 0x20 /* 1 = mse port disabled, 0 = enabled */
-#define HT8542_CMD_BYTE_KBD_OFF 0x10 /* 1 = kbd port disabled, 0 = enabled */
-#define HT8542_CMD_BYTE_OVER 0x08 /* 1 = override keyboard lock */
-#define HT8542_CMD_BYTE_RES 0x04 /* reserved */
-#define HT8542_CMD_BYTE_AUX_INT 0x02 /* 1 = enable mouse interrupt */
-#define HT8542_CMD_BYTE_KBD_INT 0x01 /* 1 = enable keyboard interrupt */
-
-/* Keyboard Commands (Sent to the Data Port) */
-#define KBD_CMD_LED 0xED /* Set Keyboard LEDS with next byte */
-#define KBD_CMD_ECHO 0xEE /* Echo - we get 0xFA, 0xEE back */
-#define KBD_CMD_MODE 0xF0 /* set scan code mode with next byte */
-#define KBD_CMD_ID 0xF2 /* get keyboard/mouse ID */
-#define KBD_CMD_RPT 0xF3 /* Set Repeat Rate and Delay 2nd Byte */
-#define KBD_CMD_ON 0xF4 /* Enable keyboard */
-#define KBD_CMD_OFF 0xF5 /* Disables Scanning, Resets to Def */
-#define KBD_CMD_DEF 0xF6 /* Reverts kbd to default settings */
-#define KBD_CMD_RST 0xFF /* Reset - should get 0xFA, 0xAA back */
-
-/* Set LED second bit defines */
-#define KBD_CMD_LED_SCROLL 0x01 /* Set SCROLL LOCK LED on */
-#define KBD_CMD_LED_NUM 0x02 /* Set NUM LOCK LED on */
-#define KBD_CMD_LED_CAPS 0x04 /* Set CAPS LOCK LED on */
-
-/* Set Mode second byte defines */
-#define KBD_CMD_MODE_STAT 0x00 /* get current scan code mode */
-#define KBD_CMD_MODE_SCAN1 0x01 /* set mode to scan code 1 */
-#define KBD_CMD_MODE_SCAN2 0x02 /* set mode to scan code 2 */
-#define KBD_CMD_MODE_SCAN3 0x03 /* set mode to scan code 3 */
-
-/* Keyboard/Mouse ID Codes */
-#define KBD_CMD_ID_1ST 0xAB /* 1st byte is 0xAB, 2nd is actual ID */
-#define KBD_CMD_ID_KBD 0x83 /* Keyboard */
-#define KBD_CMD_ID_MOUSE 0x00 /* Mouse */
-
-/* Keyboard Data Return Defines */
-#define KBD_STAT_OVER 0x00 /* Buffer Overrun */
-#define KBD_STAT_DIAG_OK 0x55 /* Internal Self Test OK */
-#define KBD_STAT_RST_OK 0xAA /* Reset Complete */
-#define KBD_STAT_ECHO 0xEE /* Echo Command Return */
-#define KBD_STAT_BRK 0xF0 /* Prefix for Break Key Code */
-#define KBD_STAT_ACK 0xFA /* Received after all commands */
-#define KBD_STAT_DIAG_FAIL 0xFD /* Internal Self Test Failed */
-#define KBD_STAT_RESEND 0xFE /* Resend Last Command */
-
-/* HT8542B Status Register Bit Defines */
-#define HT8542_STAT_OBF 0x01 /* 1 = output buffer is full */
-#define HT8542_STAT_IBF 0x02 /* 1 = input buffer is full */
-#define HT8542_STAT_SYS 0x04 /* system flag - unused */
-#define HT8542_STAT_CMD 0x08 /* 1 = cmd in input buffer, 0 = data */
-#define HT8542_STAT_INH 0x10 /* 1 = Inhibit - unused */
-#define HT8542_STAT_TX 0x20 /* 1 = Transmit Timeout has occured */
-#define HT8542_STAT_RX 0x40 /* 1 = Receive Timeout has occured */
-#define HT8542_STAT_PERR 0x80 /* 1 = Parity Error from Keyboard */
diff --git a/board/cogent/lcd.c b/board/cogent/lcd.c
deleted file mode 100644
index 814b4c80a0..0000000000
--- a/board/cogent/lcd.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/* most of this is taken from the file */
-/* hal/powerpc/cogent/current/src/hal_diag.c in the */
-/* Cygnus eCos source. Here is the copyright notice: */
-/* */
-/*============================================================================= */
-/* */
-/* hal_diag.c */
-/* */
-/* HAL diagnostic output code */
-/* */
-/*============================================================================= */
-/*####COPYRIGHTBEGIN#### */
-/* */
-/* ------------------------------------------- */
-/* The contents of this file are subject to the Cygnus eCos Public License */
-/* Version 1.0 (the "License"); you may not use this file except in */
-/* compliance with the License. You may obtain a copy of the License at */
-/* http://sourceware.cygnus.com/ecos */
-/* */
-/* Software distributed under the License is distributed on an "AS IS" */
-/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the */
-/* License for the specific language governing rights and limitations under */
-/* the License. */
-/* */
-/* The Original Code is eCos - Embedded Cygnus Operating System, released */
-/* September 30, 1998. */
-/* */
-/* The Initial Developer of the Original Code is Cygnus. Portions created */
-/* by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. */
-/* ------------------------------------------- */
-/* */
-/*####COPYRIGHTEND#### */
-/*============================================================================= */
-/*#####DESCRIPTIONBEGIN#### */
-/* */
-/* Author(s): nickg, jskov */
-/* Contributors: nickg, jskov */
-/* Date: 1999-03-23 */
-/* Purpose: HAL diagnostic output */
-/* Description: Implementations of HAL diagnostic output support. */
-/* */
-/*####DESCRIPTIONEND#### */
-/* */
-/*============================================================================= */
-
-/*----------------------------------------------------------------------------- */
-/* Cogent board specific LCD code */
-
-#include <common.h>
-#include <stdarg.h>
-#include <board/cogent/lcd.h>
-
-static char lines[2][LCD_LINE_LENGTH+1];
-static int curline;
-static int linepos;
-static int heartbeat_active;
-/* make the next two strings exactly LCD_LINE_LENGTH (16) chars long */
-/* pad to the right with spaces if necessary */
-static char init_line0[LCD_LINE_LENGTH+1] = "U-Boot Cogent ";
-static char init_line1[LCD_LINE_LENGTH+1] = "mjj, 11 Aug 2000";
-
-static inline unsigned char
-lcd_read_status(cma_mb_lcd *clp)
-{
- /* read the Busy Status Register */
- return (cma_mb_reg_read(&clp->lcd_bsr));
-}
-
-static inline void
-lcd_wait_not_busy(cma_mb_lcd *clp)
-{
- /*
- * wait for not busy
- * Note: It seems that the LCD isn't quite ready to process commands
- * when it clears the BUSY flag. Reading the status address an extra
- * time seems to give it enough breathing room.
- */
-
- while (lcd_read_status(clp) & LCD_STAT_BUSY)
- ;
-
- (void)lcd_read_status(clp);
-}
-
-static inline void
-lcd_write_command(cma_mb_lcd *clp, unsigned char cmd)
-{
- lcd_wait_not_busy(clp);
-
- /* write the Command Register */
- cma_mb_reg_write(&clp->lcd_cmd, cmd);
-}
-
-static inline void
-lcd_write_data(cma_mb_lcd *clp, unsigned char data)
-{
- lcd_wait_not_busy(clp);
-
- /* write the Current Character Register */
- cma_mb_reg_write(&clp->lcd_ccr, data);
-}
-
-static inline void
-lcd_dis(int addr, char *string)
-{
- cma_mb_lcd *clp = (cma_mb_lcd *)CMA_MB_LCD_BASE;
- int pos, linelen;
-
- linelen = LCD_LINE_LENGTH;
- if (heartbeat_active && addr == LCD_LINE0)
- linelen--;
-
- lcd_write_command(clp, LCD_CMD_ADD + addr);
- for (pos = 0; *string != '\0' && pos < linelen; pos++)
- lcd_write_data(clp, *string++);
-}
-
-void
-lcd_init(void)
-{
- cma_mb_lcd *clp = (cma_mb_lcd *)CMA_MB_LCD_BASE;
- int i;
-
- /* configure the lcd for 8 bits/char, 2 lines and 5x7 dot matrix */
- lcd_write_command(clp, LCD_CMD_MODE);
-
- /* turn the LCD display on */
- lcd_write_command(clp, LCD_CMD_DON);
-
- curline = 0;
- linepos = 0;
-
- for (i = 0; i < LCD_LINE_LENGTH; i++) {
- lines[0][i] = init_line0[i];
- lines[1][i] = init_line1[i];
- }
-
- lines[0][LCD_LINE_LENGTH] = lines[1][LCD_LINE_LENGTH] = 0;
-
- lcd_dis(LCD_LINE0, lines[0]);
- lcd_dis(LCD_LINE1, lines[1]);
-
- printf("HD44780 2 line x %d char display\n", LCD_LINE_LENGTH);
-}
-
-void
-lcd_write_char(const char c)
-{
- int i, linelen;
-
- /* ignore CR */
- if (c == '\r')
- return;
-
- linelen = LCD_LINE_LENGTH;
- if (heartbeat_active && curline == 0)
- linelen--;
-
- if (c == '\n') {
- lcd_dis(LCD_LINE0, &lines[curline^1][0]);
- lcd_dis(LCD_LINE1, &lines[curline][0]);
-
- /* Do a line feed */
- curline ^= 1;
- linelen = LCD_LINE_LENGTH;
- if (heartbeat_active && curline == 0)
- linelen--;
- linepos = 0;
-
- for (i = 0; i < linelen; i++)
- lines[curline][i] = ' ';
-
- return;
- }
-
- /* Only allow to be output if there is room on the LCD line */
- if (linepos < linelen)
- lines[curline][linepos++] = c;
-}
-
-void
-lcd_flush(void)
-{
- lcd_dis(LCD_LINE1, &lines[curline][0]);
-}
-
-void
-lcd_write_string(const char *s)
-{
- char *p;
-
- for (p = (char *)s; *p != '\0'; p++)
- lcd_write_char(*p);
-}
-
-void
-lcd_printf(const char *fmt, ...)
-{
- va_list args;
- char buf[CFG_PBSIZE];
-
- va_start(args, fmt);
- (void)vsprintf(buf, fmt, args);
- va_end(args);
-
- lcd_write_string(buf);
-}
-
-void
-lcd_heartbeat(void)
-{
- cma_mb_lcd *clp = (cma_mb_lcd *)CMA_MB_LCD_BASE;
-#if 0
- static char rotchars[] = { '|', '/', '-', '\\' };
-#else
- /* HD44780 Rom Code A00 has no backslash */
- static char rotchars[] = { '|', '/', '-', '\315' };
-#endif
- static int rotator_index = 0;
-
- heartbeat_active = 1;
-
- /* write the address */
- lcd_write_command(clp, LCD_CMD_ADD + LCD_LINE0 + (LCD_LINE_LENGTH - 1));
-
- /* write the next char in the sequence */
- lcd_write_data(clp, rotchars[rotator_index]);
-
- if (++rotator_index >= (sizeof rotchars / sizeof rotchars[0]))
- rotator_index = 0;
-}
-
-#ifdef CONFIG_SHOW_ACTIVITY
-void board_show_activity (ulong timestamp)
-{
-#ifdef CONFIG_STATUS_LED
- if ((timestamp % (CFG_HZ / 2) == 0)
- lcd_heartbeat ();
-#endif
-}
-
-void show_activity(int arg)
-{
-}
-#endif
diff --git a/board/cogent/lcd.h b/board/cogent/lcd.h
deleted file mode 100644
index 1056eea473..0000000000
--- a/board/cogent/lcd.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* most of this is taken from the file */
-/* hal/powerpc/cogent/current/src/hal_diag.c in the */
-/* Cygnus eCos source. Here is the copyright notice: */
-/* */
-/*============================================================================= */
-/* */
-/* hal_diag.c */
-/* */
-/* HAL diagnostic output code */
-/* */
-/*============================================================================= */
-/*####COPYRIGHTBEGIN#### */
-/* */
-/* ------------------------------------------- */
-/* The contents of this file are subject to the Cygnus eCos Public License */
-/* Version 1.0 (the "License"); you may not use this file except in */
-/* compliance with the License. You may obtain a copy of the License at */
-/* http://sourceware.cygnus.com/ecos */
-/* */
-/* Software distributed under the License is distributed on an "AS IS" */
-/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the */
-/* License for the specific language governing rights and limitations under */
-/* the License. */
-/* */
-/* The Original Code is eCos - Embedded Cygnus Operating System, released */
-/* September 30, 1998. */
-/* */
-/* The Initial Developer of the Original Code is Cygnus. Portions created */
-/* by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. */
-/* ------------------------------------------- */
-/* */
-/*####COPYRIGHTEND#### */
-/*============================================================================= */
-/*#####DESCRIPTIONBEGIN#### */
-/* */
-/* Author(s): nickg, jskov */
-/* Contributors: nickg, jskov */
-/* Date: 1999-03-23 */
-/* Purpose: HAL diagnostic output */
-/* Description: Implementations of HAL diagnostic output support. */
-/* */
-/*####DESCRIPTIONEND#### */
-/* */
-/*============================================================================= */
-
-/* FEMA 162B 16 character x 2 line LCD */
-
-/* status register bit definitions */
-#define LCD_STAT_BUSY 0x80 /* 1 = display busy */
-#define LCD_STAT_ADD 0x7F /* bits 0-6 return current display address */
-
-/* command register definitions */
-#define LCD_CMD_RST 0x01 /* clear entire display and reset display addr */
-#define LCD_CMD_HOME 0x02 /* reset display address and reset any shifting */
-#define LCD_CMD_ECL 0x04 /* move cursor left one pos on next data write */
-#define LCD_CMD_ESL 0x05 /* shift display left one pos on next data write */
-#define LCD_CMD_ECR 0x06 /* move cursor right one pos on next data write */
-#define LCD_CMD_ESR 0x07 /* shift disp right one pos on next data write */
-#define LCD_CMD_DOFF 0x08 /* display off, cursor off, blinking off */
-#define LCD_CMD_BL 0x09 /* blink character at current cursor position */
-#define LCD_CMD_CUR 0x0A /* enable cursor on */
-#define LCD_CMD_DON 0x0C /* turn display on */
-#define LCD_CMD_CL 0x10 /* move cursor left one position */
-#define LCD_CMD_SL 0x14 /* shift display left one position */
-#define LCD_CMD_CR 0x18 /* move cursor right one position */
-#define LCD_CMD_SR 0x1C /* shift display right one position */
-#define LCD_CMD_MODE 0x38 /* sets 8 bits, 2 lines, 5x7 characters */
-#define LCD_CMD_ACG 0x40 /* bits 0-5 sets character generator address */
-#define LCD_CMD_ADD 0x80 /* bits 0-6 sets display data addr to line 1 + */
-
-/* LCD status values */
-#define LCD_OK 0x00
-#define LCD_ERR 0x01
-
-#define LCD_LINE0 0x00
-#define LCD_LINE1 0x40
-
-#define LCD_LINE_LENGTH 16
-
-extern void lcd_init(void);
-extern void lcd_write_char(const char);
-extern void lcd_flush(void);
-extern void lcd_write_string(const char *);
-extern void lcd_printf(const char *, ...);
diff --git a/board/cogent/mb.c b/board/cogent/mb.c
deleted file mode 100644
index 917132b3fb..0000000000
--- a/board/cogent/mb.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * (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 <common.h>
-#include <board/cogent/dipsw.h>
-#include <board/cogent/lcd.h>
-#include <board/cogent/rtc.h>
-#include <board/cogent/par.h>
-#include <board/cogent/pci.h>
-
-/* ------------------------------------------------------------------------- */
-
-#if defined(CONFIG_8260)
-
-#include <ioports.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ {0, 0, 0, 0, 0, 0},
- /* PA30 */ {0, 0, 0, 0, 0, 0},
- /* PA29 */ {0, 0, 0, 0, 0, 0},
- /* PA28 */ {0, 0, 0, 0, 0, 0},
- /* PA27 */ {0, 0, 0, 0, 0, 0},
- /* PA26 */ {0, 0, 0, 0, 0, 0},
- /* PA25 */ {0, 0, 0, 0, 0, 0},
- /* PA24 */ {0, 0, 0, 0, 0, 0},
- /* PA23 */ {0, 0, 0, 0, 0, 0},
- /* PA22 */ {0, 0, 0, 0, 0, 0},
- /* PA21 */ {0, 0, 0, 0, 0, 0},
- /* PA20 */ {0, 0, 0, 0, 0, 0},
- /* PA19 */ {0, 0, 0, 0, 0, 0},
- /* PA18 */ {0, 0, 0, 0, 0, 0},
- /* PA17 */ {0, 0, 0, 0, 0, 0},
- /* PA16 */ {0, 0, 0, 0, 0, 0},
- /* PA15 */ {0, 0, 0, 0, 0, 0},
- /* PA14 */ {0, 0, 0, 0, 0, 0},
- /* PA13 */ {0, 0, 0, 0, 0, 0},
- /* PA12 */ {0, 0, 0, 0, 0, 0},
- /* PA11 */ {0, 0, 0, 0, 0, 0},
- /* PA10 */ {0, 0, 0, 0, 0, 0},
- /* PA9 */ {1, 1, 0, 1, 0, 0},
- /* SMC2 TXD */
- /* PA8 */ {1, 1, 0, 0, 0, 0},
- /* SMC2 RXD */
- /* PA7 */ {0, 0, 0, 0, 0, 0},
- /* PA6 */ {0, 0, 0, 0, 0, 0},
- /* PA5 */ {0, 0, 0, 0, 0, 0},
- /* PA4 */ {0, 0, 0, 0, 0, 0},
- /* PA3 */ {0, 0, 0, 0, 0, 0},
- /* PA2 */ {0, 0, 0, 0, 0, 0},
- /* PA1 */ {0, 0, 0, 0, 0, 0},
- /* PA0 */ {0, 0, 0, 0, 0, 0}
- },
-
-
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ {0, 0, 0, 0, 0, 0},
- /* PB30 */ {0, 0, 0, 0, 0, 0},
- /* PB29 */ {0, 0, 0, 0, 0, 0},
- /* PB28 */ {0, 0, 0, 0, 0, 0},
- /* PB27 */ {0, 0, 0, 0, 0, 0},
- /* PB26 */ {0, 0, 0, 0, 0, 0},
- /* PB25 */ {0, 0, 0, 0, 0, 0},
- /* PB24 */ {0, 0, 0, 0, 0, 0},
- /* PB23 */ {0, 0, 0, 0, 0, 0},
- /* PB22 */ {0, 0, 0, 0, 0, 0},
- /* PB21 */ {0, 0, 0, 0, 0, 0},
- /* PB20 */ {0, 0, 0, 0, 0, 0},
- /* PB19 */ {0, 0, 0, 0, 0, 0},
- /* PB18 */ {0, 0, 0, 0, 0, 0},
- /* PB17 */ {0, 0, 0, 0, 0, 0},
- /* PB16 */ {0, 0, 0, 0, 0, 0},
- /* PB15 */ {0, 0, 0, 0, 0, 0},
- /* PB14 */ {0, 0, 0, 0, 0, 0},
- /* PB13 */ {0, 0, 0, 0, 0, 0},
- /* PB12 */ {0, 0, 0, 0, 0, 0},
- /* PB11 */ {0, 0, 0, 0, 0, 0},
- /* PB10 */ {0, 0, 0, 0, 0, 0},
- /* PB9 */ {0, 0, 0, 0, 0, 0},
- /* PB8 */ {0, 0, 0, 0, 0, 0},
- /* PB7 */ {0, 0, 0, 0, 0, 0},
- /* PB6 */ {0, 0, 0, 0, 0, 0},
- /* PB5 */ {0, 0, 0, 0, 0, 0},
- /* PB4 */ {0, 0, 0, 0, 0, 0},
- /* PB3 */ {0, 0, 0, 0, 0, 0},
- /* pin doesn't exist */
- /* PB2 */ {0, 0, 0, 0, 0, 0},
- /* pin doesn't exist */
- /* PB1 */ {0, 0, 0, 0, 0, 0},
- /* pin doesn't exist */
- /* PB0 */ {0, 0, 0, 0, 0, 0}
- /* pin doesn't exist */
- },
-
-
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ {0, 0, 0, 0, 0, 0},
- /* PC30 */ {0, 0, 0, 0, 0, 0},
- /* PC29 */ {0, 0, 0, 0, 0, 0},
- /* PC28 */ {0, 0, 0, 0, 0, 0},
- /* PC27 */ {0, 0, 0, 0, 0, 0},
- /* PC26 */ {0, 0, 0, 0, 0, 0},
- /* PC25 */ {0, 0, 0, 0, 0, 0},
- /* PC24 */ {0, 0, 0, 0, 0, 0},
- /* PC23 */ {0, 0, 0, 0, 0, 0},
- /* PC22 */ {0, 0, 0, 0, 0, 0},
- /* PC21 */ {0, 0, 0, 0, 0, 0},
- /* PC20 */ {0, 0, 0, 0, 0, 0},
- /* PC19 */ {0, 0, 0, 0, 0, 0},
- /* PC18 */ {0, 0, 0, 0, 0, 0},
- /* PC17 */ {0, 0, 0, 0, 0, 0},
- /* PC16 */ {0, 0, 0, 0, 0, 0},
- /* PC15 */ {0, 0, 0, 0, 0, 0},
- /* PC14 */ {0, 0, 0, 0, 0, 0},
- /* PC13 */ {0, 0, 0, 0, 0, 0},
- /* PC12 */ {0, 0, 0, 0, 0, 0},
- /* PC11 */ {0, 0, 0, 0, 0, 0},
- /* PC10 */ {0, 0, 0, 0, 0, 0},
- /* PC9 */ {0, 0, 0, 0, 0, 0},
- /* PC8 */ {0, 0, 0, 0, 0, 0},
- /* PC7 */ {0, 0, 0, 0, 0, 0},
- /* PC6 */ {0, 0, 0, 0, 0, 0},
- /* PC5 */ {0, 0, 0, 0, 0, 0},
- /* PC4 */ {0, 0, 0, 0, 0, 0},
- /* PC3 */ {0, 0, 0, 0, 0, 0},
- /* PC2 */ {0, 0, 0, 0, 0, 0},
- /* PC1 */ {0, 0, 0, 0, 0, 0},
- /* PC0 */ {0, 0, 0, 0, 0, 0}
- },
-
-
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ {0, 0, 0, 0, 0, 0},
- /* PD30 */ {0, 0, 0, 0, 0, 0},
- /* PD29 */ {0, 0, 0, 0, 0, 0},
- /* PD28 */ {0, 0, 0, 0, 0, 0},
- /* PD27 */ {0, 0, 0, 0, 0, 0},
- /* PD26 */ {0, 0, 0, 0, 0, 0},
- /* PD25 */ {0, 0, 0, 0, 0, 0},
- /* PD24 */ {0, 0, 0, 0, 0, 0},
- /* PD23 */ {0, 0, 0, 0, 0, 0},
- /* PD22 */ {0, 0, 0, 0, 0, 0},
- /* PD21 */ {0, 0, 0, 0, 0, 0},
- /* PD20 */ {0, 0, 0, 0, 0, 0},
- /* PD19 */ {0, 0, 0, 0, 0, 0},
- /* PD18 */ {0, 0, 0, 0, 0, 0},
- /* PD17 */ {0, 0, 0, 0, 0, 0},
- /* PD16 */ {0, 0, 0, 0, 0, 0},
- /* PD15 */ {1, 1, 1, 0, 0, 0},
- /* I2C SDA */
- /* PD14 */ {1, 1, 1, 0, 0, 0},
- /* I2C SCL */
- /* PD13 */ {0, 0, 0, 0, 0, 0},
- /* PD12 */ {0, 0, 0, 0, 0, 0},
- /* PD11 */ {0, 0, 0, 0, 0, 0},
- /* PD10 */ {0, 0, 0, 0, 0, 0},
- /* PD9 */ {1, 1, 0, 1, 0, 0},
- /* SMC1 TXD */
- /* PD8 */ {1, 1, 0, 0, 0, 0},
- /* SMC1 RXD */
- /* PD7 */ {0, 0, 0, 0, 0, 0},
- /* PD6 */ {0, 0, 0, 0, 0, 0},
- /* PD5 */ {0, 0, 0, 0, 0, 0},
- /* PD4 */ {0, 0, 0, 0, 0, 0},
- /* PD3 */ {0, 0, 0, 0, 0, 0},
- /* pin doesn't exist */
- /* PD2 */ {0, 0, 0, 0, 0, 0},
- /* pin doesn't exist */
- /* PD1 */ {0, 0, 0, 0, 0, 0},
- /* pin doesn't exist */
- /* PD0 */ {0, 0, 0, 0, 0, 0}
- /* pin doesn't exist */
- }
-};
-
-#endif /* CONFIG_8260 */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: Cogent " COGENT_MOTHERBOARD " motherboard with a "
- COGENT_CPU_MODULE " CPU Module\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Miscelaneous platform dependent initialisations while still
- * running in flash
- */
-
-int misc_init_f (void)
-{
- printf ("DIPSW: ");
- dipsw_init ();
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
-#ifdef CONFIG_CMA111
- return (32L * 1024L * 1024L);
-#else
- unsigned char dipsw_val;
- int dual, size0, size1;
- long int memsize;
-
- dipsw_val = dipsw_cooked ();
-
- dual = dipsw_val & 0x01;
- size0 = (dipsw_val & 0x08) >> 3;
- size1 = (dipsw_val & 0x04) >> 2;
-
- if (size0)
- if (size1)
- memsize = 16L * 1024L * 1024L;
- else
- memsize = 1L * 1024L * 1024L;
- else if (size1)
- memsize = 4L * 1024L * 1024L;
- else {
- printf ("[Illegal dip switch settings - assuming 16Mbyte SIMMs] ");
- memsize = 16L * 1024L * 1024L; /* shouldn't happen - guess 16M */
- }
-
- if (dual)
- memsize *= 2L;
-
- return (memsize);
-#endif
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Miscelaneous platform dependent initialisations after monitor
- * has been relocated into ram
- */
-
-int misc_init_r (void)
-{
- printf ("LCD: ");
- lcd_init ();
-
-#if 0
- printf ("RTC: ");
- rtc_init ();
-
- printf ("PAR: ");
- par_init ();
-
- printf ("KBM: ");
- kbm_init ();
-
- printf ("PCI: ");
- pci_init ();
-#endif
- return (0);
-}
diff --git a/board/cogent/mb.h b/board/cogent/mb.h
deleted file mode 100644
index f6eaf0ac5e..0000000000
--- a/board/cogent/mb.h
+++ /dev/null
@@ -1,529 +0,0 @@
-/*
- * (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
- */
-
-/*
- * defines for Cogent Motherboards
- */
-
-#ifndef _COGENT_MB_H
-#define _COGENT_MB_H
-
-/*
- * Cogent Motherboard Address Map
- *
- * The size of a Cogent motherboard address space is 256 Mbytes (i.e. 28 bits).
- *
- * The first 32 Mbyte (0x0000000-0x1FFFFFF) is usually RAM. The following
- * 3 x 32 Mbyte areas (0x2000000-0x3FFFFFF, 0x4000000-0x5FFFFFF and
- * 0x6000000-0x7FFFFFF) are general I/O "slots" (slots 1, 2 and 3).
- * Most other motherboard devices have registers mapped into the area
- * 0xE000000-0xFFFFFFF (Motherboard I/O slot?). The area 0x8000000-0xDFFFFFF
- * is free for whatever.
- *
- * The location of the motherboard address space in the physical address space
- * of the cpu is given by CMA_MB_BASE. This value is determined by the cpu
- * module plugged into the motherboard and is configured above.
- *
- * Motherboard I/O devices mapped into the area (0xE000000-0xFFFFFFF)
- * generally only use byte lane 0 (D0-7) for their transfers, i.e. only
- * 8 bit, or 1 byte, transfers can take place, so all the registers are
- * only 8 bits wide. The exceptions are the motherboard flash, which uses
- * byte lanes 0 and 1 (i.e. 16 bits), and the mapped PCI address space.
- *
- * I/O registers within the mapped motherboard devices are 64 bit aligned
- * i.e. they are 8 bytes apart. For big endian addressing, the 8 bit register
- * will be at byte 7 (the address + 7). For little endian addressing, the
- * register will be at byte 0 (the address + 0). To learn the endianess
- * we must include <endian.h>
- *
- * Take the CMA102 and CMA111 motherboards as examples...
- *
- * The CMA102 has three CMABus I/O Expansion slots and no PCI bridge. The 3
- * CMABus slots are each mapped directly onto the three general I/O slots.
- *
- * The CMA111 has only one CMABus I/O Expansion slot, but has a V360EPC PCI
- * bridge. The CMABus slot is mapped onto general I/O slot 1. The standard
- * PCI Bus space is mapped onto general I/O slot 2, with a small area at the
- * top reserved for access to the V360EPC registers (0x5FF0000-0x5FFFFFF).
- * I/O slot 3 is unused. The extended PCI Bus space is mapped onto the area
- * 0xA000000-0xDFFFFFF.
- */
-
-#define CMA_MB_RAM_BASE (CFG_CMA_MB_BASE+0x0000000)
-#define CMA_MB_RAM_SIZE 0x2000000 /* dip sws set actual size */
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT1)
-#define CMA_MB_SLOT1_BASE (CFG_CMA_MB_BASE+0x2000000)
-#define CMA_MB_SLOT1_SIZE 0x2000000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT2)
-#define CMA_MB_SLOT2_BASE (CFG_CMA_MB_BASE+0x4000000)
-#define CMA_MB_SLOT2_SIZE 0x2000000
-#endif
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
-#define CMA_MB_STDPCI_BASE (CFG_CMA_MB_BASE+0x4000000)
-#define CMA_MB_STDPCI_SIZE 0x1ff0000
-#define CMA_MB_V360EPC_BASE (CFG_CMA_MB_BASE+0x5ff0000)
-#define CMA_MB_V360EPC_SIZE 0x10000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT3)
-#define CMA_MB_SLOT3_BASE (CFG_CMA_MB_BASE+0x6000000)
-#define CMA_MB_SLOT3_SIZE 0x2000000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI_EXT)
-#define CMA_MB_EXTPCI_BASE (CFG_CMA_MB_BASE+0xa000000)
-#define CMA_MB_EXTPCI_SIZE 0x4000000
-#endif
-
-#define CMA_MB_ROMLOW_BASE (CFG_CMA_MB_BASE+0xe000000)
-#define CMA_MB_ROMLOW_SIZE 0x800000
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
-#define CMA_MB_FLLOW_EXEC_BASE (CFG_CMA_MB_BASE+0xe000000)
-#define CMA_MB_FLLOW_EXEC_SIZE 0x100000
-#define CMA_MB_FLLOW_RDWR_BASE (CFG_CMA_MB_BASE+0xe400000)
-#define CMA_MB_FLLOW_RDWR_SIZE 0x400000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_RTC)
-#define CMA_MB_RTC_BASE (CFG_CMA_MB_BASE+0xe800000)
-#define CMA_MB_RTC_SIZE 0x4000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
-#define CMA_MB_SERPAR_BASE (CFG_CMA_MB_BASE+0xe900000)
-#define CMA_MB_SERIALB_BASE (CMA_MB_SERPAR_BASE+0x00)
-#define CMA_MB_SERIALA_BASE (CMA_MB_SERPAR_BASE+0x40)
-#define CMA_MB_PARALLEL_BASE (CMA_MB_SERPAR_BASE+0x80)
-#define CMA_MB_SERPAR_SIZE 0xa0
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_KBM)
-#define CMA_MB_PKBM_BASE (CFG_CMA_MB_BASE+0xe900100)
-#define CMA_MB_PKBM_SIZE 0x10
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_LCD)
-#define CMA_MB_LCD_BASE (CFG_CMA_MB_BASE+0xeb00000)
-#define CMA_MB_LCD_SIZE 0x10
-#endif
-
-#define CMA_MB_DIPSW_BASE (CFG_CMA_MB_BASE+0xec00000)
-#define CMA_MB_DIPSW_SIZE 0x10
-
-#if (CMA_MB_CAPS & (CMA_MB_CAP_SLOT1|CMA_MB_CAP_SER2|CMA_MB_CAP_KBM))
-#define CMA_MB_SLOT1CFG_BASE (CFG_CMA_MB_BASE+0xf100000)
-#if (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define CMA_MB_SER2_BASE (CMA_MB_SLOT1CFG_BASE+0x80)
-#define CMA_MB_SER2B_BASE (CMA_MB_SER2_BASE+0x00)
-#define CMA_MB_SER2A_BASE (CMA_MB_SER2_BASE+0x40)
-#endif
-#if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT1)
-#define CMA_MB_S1KBM_BASE (CMA_MB_SLOT1CFG_BASE+0x200)
-#endif
-#if (CMA_MB_CAPS & CMA_MB_CAP_KBM) && !defined(COGENT_CMA150)
-#define CMA_MB_IREQ1STAT_BASE (CMA_MB_SLOT1CFG_BASE+0x100)
-#define CMA_MB_AKBM_BASE (CMA_MB_SLOT1CFG_BASE+0x200)
-#define CMA_MB_IREQ1MASK_BASE (CMA_MB_SLOT1CFG_BASE+0x300)
-#endif
-#define CMA_MB_SLOT1CFG_SIZE 0x400
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT2)
-#define CMA_MB_SLOT2CFG_BASE (CFG_CMA_MB_BASE+0xf200000)
-#if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT2)
-#define CMA_MB_S2KBM_BASE (CMA_MB_SLOT2CFG_BASE+0x200)
-#endif
-#define CMA_MB_SLOT2CFG_SIZE 0x400
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
-#define CMA_MB_PCICTL_BASE (CFG_CMA_MB_BASE+0xf200000)
-#define CMA_MB_PCI_V3CTL_BASE (CMA_MB_PCICTL_BASE+0x100)
-#define CMA_MB_PCI_IDSEL_BASE (CMA_MB_PCICTL_BASE+0x200)
-#define CMA_MB_PCI_IMASK_BASE (CMA_MB_PCICTL_BASE+0x300)
-#define CMA_MB_PCI_ISTAT_BASE (CMA_MB_PCICTL_BASE+0x400)
-#define CMA_MB_PCI_MBID_BASE (CMA_MB_PCICTL_BASE+0x500)
-#define CMA_MB_PCI_MBREV_BASE (CMA_MB_PCICTL_BASE+0x600)
-#define CMA_MB_PCICTL_SIZE 0x700
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT3)
-#define CMA_MB_SLOT3CFG_BASE (CFG_CMA_MB_BASE+0xf300000)
-#if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT3)
-#define CMA_MB_S3KBM_BASE (CMA_MB_SLOT3CFG_BASE+0x200)
-#endif
-#define CMA_MB_SLOT3CFG_SIZE 0x400
-#endif
-
-#define CMA_MB_ROMHIGH_BASE (CFG_CMA_MB_BASE+0xf800000)
-#define CMA_MB_ROMHIGH_SIZE 0x800000
-#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
-#define CMA_MB_FLHIGH_EXEC_BASE (CFG_CMA_MB_BASE+0xf800000)
-#define CMA_MB_FLHIGH_EXEC_SIZE 0x100000
-#define CMA_MB_FLHIGH_RDWR_BASE (CFG_CMA_MB_BASE+0xfc00000)
-#define CMA_MB_FLHIGH_RDWR_SIZE 0x400000
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
-
-/* PCI Control Register bits */
-
-/* V360EPC Control register bits */
-#define CMA_MB_PCI_V3CTL_RESET 0x01
-#define CMA_MB_PCI_V3CTL_EXTADD 0x08
-
-/* PCI ID Select register bits */
-#define CMA_MB_PCI_IDSEL_SLOTA 0x01
-#define CMA_MB_PCI_IDSEL_SLOTB 0x02
-#define CMA_MB_PCI_IDSEL_GD82559 0x04
-#define CMA_MB_PCI_IDSEL_B69000 0x08
-#define CMA_MB_PCI_IDSEL_PD6832 0x10
-
-/* PCI Interrupt Mask/Status register bits */
-#define CMA_MB_PCI_IMS_INTA 0x01
-#define CMA_MB_PCI_IMS_INTB 0x02
-#define CMA_MB_PCI_IMS_INTC 0x04
-#define CMA_MB_PCI_IMS_INTD 0x08
-#define CMA_MB_PCI_IMS_CBINT 0x10
-#define CMA_MB_PCI_IMS_V3LINT 0x80
-
-#endif
-
-#if (CMA_MB_CAPS & (CMA_MB_CAP_KBM|CMA_MB_CAP_SER2)) && !defined(COGENT_CMA150)
-
-/*
- * IREQ1 Interrupt Mask/Status register bits
- * (Note: not available on CMA150 - must poll HT6542B interrupt register)
- */
-
-#define IREQ1_MINT 0x01
-#define IREQ1_KINT 0x02
-#if (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define IREQ1_SINT2 0x04
-#define IREQ1_SINT3 0x08
-#endif
-
-#endif
-
-#ifndef __ASSEMBLY__
-
-#ifdef USE_HOSTCC
-#include <endian.h> /* avoid using private kernel header files */
-#else
-#include <asm/byteorder.h> /* use U-Boot provided headers */
-#endif
-
-/* a single CMA10x motherboard i/o register */
-typedef
- struct {
-#if __BYTE_ORDER == __LITTLE_ENDIAN
- unsigned char value;
-#endif
- unsigned char filler[7];
-#if __BYTE_ORDER == __BIG_ENDIAN
- unsigned char value;
-#endif
- }
-cma_mb_reg;
-
-extern __inline__ unsigned char
-cma_mb_reg_read(volatile cma_mb_reg *reg)
-{
- unsigned char data = reg->value;
- __asm__ __volatile__ ("eieio" : : : "memory");
- return data;
-}
-
-extern __inline__ void
-cma_mb_reg_write(volatile cma_mb_reg *reg, unsigned char data)
-{
- reg->value = data;
- __asm__ __volatile__ ("eieio" : : : "memory");
-}
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_RTC)
-
-/* MK48T02 RTC registers */
-typedef
- struct {
- cma_mb_reg sram[2040];/* Battery-Backed SRAM */
- cma_mb_reg clk_ctl; /* Clock Control Register */
- cma_mb_reg clk_sec; /* Clock Seconds Register */
- cma_mb_reg clk_min; /* Clock Minutes Register */
- cma_mb_reg clk_hour; /* Clock Hour Register */
- cma_mb_reg clk_day; /* Clock Day Register */
- cma_mb_reg clk_date; /* Clock Date Register */
- cma_mb_reg clk_month; /* Clock Month Register */
- cma_mb_reg clk_year; /* Clock Year Register */
- }
-cma_mb_rtc;
-
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
-
-/* ST16C522 Serial I/O */
-typedef
- struct {
- cma_mb_reg ser_rhr; /* Receive Holding Register (R, DLAB=0) */
- cma_mb_reg ser_ier; /* Interrupt Enable Register (R/W, DLAB=0) */
- cma_mb_reg ser_isr; /* Interrupt Status Register (R) */
- cma_mb_reg ser_lcr; /* Line Control Register (R/W) */
- cma_mb_reg ser_mcr; /* Modem Control Register (R/W) */
- cma_mb_reg ser_lsr; /* Line Status Register (R) */
- cma_mb_reg ser_msr; /* Modem Status Register (R/W) */
- cma_mb_reg ser_spr; /* Scratch Pad Register (R/W) */
- }
-cma_mb_serial;
-
-#define ser_thr ser_rhr /* Transmit Holding Register (W, DLAB=0) */
-#define ser_brl ser_rhr /* Baud Rate Divisor Low Byte (R/W, DLAB=1) */
-#define ser_brh ser_ier /* Baud Rate Divisor High Byte (R/W, DLAB=1) */
-#define ser_fcr ser_isr /* FIFO Control Register (W) */
-#define ser_nop ser_lsr /* No Operation (W) */
-
-/* ST16C522 Parallel I/O */
-typedef
- struct {
- cma_mb_reg par_rdr; /* Port Read Data Register (R) */
- cma_mb_reg par_sr; /* Status Register (R) */
- cma_mb_reg par_cmd; /* Command Register (R) */
- }
-cma_mb_parallel;
-
-#define par_wdr par_rdr /* Port Write Data Register (W) */
-#define par_ios par_sr /* I/O Select Register (W) */
-#define par_ctl par_cmd /* Control Register (W) */
-
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_KBM) || defined(CONFIG_CMA302)
-
-/* HT6542B PS/2 Keyboard/Mouse Controller */
-typedef
- struct {
- cma_mb_reg kbm_rdr; /* Read Data Register (R) */
- cma_mb_reg kbm_sr; /* Status Register (R) */
- }
-cma_mb_kbm;
-
-#define kbm_wdr kbm_rdr /* Write Data Register (W) */
-#define kbm_cmd kbm_sr /* Command Register (W) */
-
-#endif
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_LCD)
-
-/* HD44780 LCD Display */
-typedef
- struct {
- cma_mb_reg lcd_ccr; /* Current Character Register (R/W) */
- cma_mb_reg lcd_bsr; /* Busy Status Register (R) */
- }
-cma_mb_lcd;
-
-#define lcd_cmd lcd_bsr /* Command Register (W) */
-
-#endif
-
-/* 8-Position Configuration Switch */
-typedef
- struct {
- cma_mb_reg dip_val; /* Dip Switch value (R) */
- }
-cma_mb_dipsw;
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
-
-/* V360EPC PCI Bridge */
-typedef
- struct {
-#if __BYTE_ORDER == __LITTLE_ENDIAN
- unsigned short v3_pci_vendor; /* 0x00 */
- unsigned short v3_pci_device;
- unsigned short v3_pci_cmd; /* 0x04 */
- unsigned short v3_pci_stat;
- unsigned long v3_pci_cc_rev; /* 0x08 */
- unsigned long v3_pci_hdr_cfg; /* 0x0c */
- unsigned long v3_pci_io_base; /* 0x10 */
- unsigned long v3_pci_base0; /* 0x14 */
- unsigned long v3_pci_base1; /* 0x18 */
- unsigned long reserved1[4]; /* 0x1c */
- unsigned short v3_pci_sub_vendor; /* 0x2c */
- unsigned short v3_pci_sub_id;
- unsigned long v3_pci_rom; /* 0x30 */
- unsigned long reserved2[2]; /* 0x34 */
- unsigned long v3_pci_bparam; /* 0x3c */
- unsigned long v3_pci_map0; /* 0x40 */
- unsigned long v3_pci_map1; /* 0x44 */
- unsigned long v3_pci_int_stat; /* 0x48 */
- unsigned long v3_pci_int_cfg; /* 0x4c */
- unsigned long reserved3[1]; /* 0x50 */
- unsigned long v3_lb_base0; /* 0x54 */
- unsigned long v3_lb_base1; /* 0x58 */
- unsigned short reserved4; /* 0x5c */
- unsigned short v3_lb_map0;
- unsigned short reserved5; /* 0x60 */
- unsigned short v3_lb_map1;
- unsigned short v3_lb_base2; /* 0x64 */
- unsigned short v3_lb_map2;
- unsigned long v3_lb_size; /* 0x68 */
- unsigned short reserved6; /* 0x6c */
- unsigned short v3_lb_io_base;
- unsigned short v3_fifo_cfg; /* 0x70 */
- unsigned short v3_fifo_priority;
- unsigned short v3_fifo_stat; /* 0x74 */
- unsigned char v3_lb_istat;
- unsigned char v3_lb_imask;
- unsigned short v3_system; /* 0x78 */
- unsigned short v3_lb_cfg;
- unsigned short v3_pci_cfg; /* 0x7c */
- unsigned short reserved7;
- unsigned long v3_dma_pci_addr0; /* 0x80 */
- unsigned long v3_dma_local_addr0; /* 0x84 */
- unsigned long v3_dma_length0:24; /* 0x88 */
- unsigned long v3_dma_csr0:8;
- unsigned long v3_dma_ctlb_adr0; /* 0x8c */
- unsigned long v3_dma_pci_addr1; /* 0x90 */
- unsigned long v3_dma_local_addr1; /* 0x94 */
- unsigned long v3_dma_length1:24; /* 0x98 */
- unsigned long v3_dma_csr1:8;
- unsigned long v3_dma_ctlb_adr1; /* 0x9c */
- unsigned long v3_i20_mups[8]; /* 0xa0 */
- unsigned char v3_mail_data0; /* 0xc0 */
- unsigned char v3_mail_data1;
- unsigned char v3_mail_data2;
- unsigned char v3_mail_data3;
- unsigned char v3_mail_data4; /* 0xc4 */
- unsigned char v3_mail_data5;
- unsigned char v3_mail_data6;
- unsigned char v3_mail_data7;
- unsigned char v3_mail_data8; /* 0xc8 */
- unsigned char v3_mail_data9;
- unsigned char v3_mail_data10;
- unsigned char v3_mail_data11;
- unsigned char v3_mail_data12; /* 0xcc */
- unsigned char v3_mail_data13;
- unsigned char v3_mail_data14;
- unsigned char v3_mail_data15;
- unsigned short v3_pci_mail_iewr; /* 0xd0 */
- unsigned short v3_pci_mail_ierd;
- unsigned short v3_lb_mail_iewr; /* 0xd4 */
- unsigned short v3_lb_mail_ierd;
- unsigned short v3_mail_wr_stat; /* 0xd8 */
- unsigned short v3_mail_rd_stat;
- unsigned long v3_qba_map; /* 0xdc */
- unsigned long v3_dma_delay:8; /* 0xe0 */
- unsigned long reserved8:24;
- unsigned long reserved9[7]; /* 0xe4 */
-#endif
-#if __BYTE_ORDER == __BIG_ENDIAN
- unsigned short v3_pci_device; /* 0x00 */
- unsigned short v3_pci_vendor;
- unsigned short v3_pci_stat; /* 0x04 */
- unsigned short v3_pci_cmd;
- unsigned long v3_pci_cc_rev; /* 0x08 */
- unsigned long v3_pci_hdr_cfg; /* 0x0c */
- unsigned long v3_pci_io_base; /* 0x10 */
- unsigned long v3_pci_base0; /* 0x14 */
- unsigned long v3_pci_base1; /* 0x18 */
- unsigned long reserved1[4]; /* 0x1c */
- unsigned short v3_pci_sub_id; /* 0x2c */
- unsigned short v3_pci_sub_vendor;
- unsigned long v3_pci_rom; /* 0x30 */
- unsigned long reserved2[2]; /* 0x34 */
- unsigned long v3_pci_bparam; /* 0x3c */
- unsigned long v3_pci_map0; /* 0x40 */
- unsigned long v3_pci_map1; /* 0x44 */
- unsigned long v3_pci_int_stat; /* 0x48 */
- unsigned long v3_pci_int_cfg; /* 0x4c */
- unsigned long reserved3; /* 0x50 */
- unsigned long v3_lb_base0; /* 0x54 */
- unsigned long v3_lb_base1; /* 0x58 */
- unsigned short v3_lb_map0; /* 0x5c */
- unsigned short reserved4;
- unsigned short v3_lb_map1; /* 0x60 */
- unsigned short reserved5;
- unsigned short v3_lb_map2; /* 0x64 */
- unsigned short v3_lb_base2;
- unsigned long v3_lb_size; /* 0x68 */
- unsigned short v3_lb_io_base; /* 0x6c */
- unsigned short reserved6;
- unsigned short v3_fifo_priority; /* 0x70 */
- unsigned short v3_fifo_cfg;
- unsigned char v3_lb_imask; /* 0x74 */
- unsigned char v3_lb_istat;
- unsigned short v3_fifo_stat;
- unsigned short v3_lb_cfg; /* 0x78 */
- unsigned short v3_system;
- unsigned short reserved7; /* 0x7c */
- unsigned short v3_pci_cfg;
- unsigned long v3_dma_pci_addr0; /* 0x80 */
- unsigned long v3_dma_local_addr0; /* 0x84 */
- unsigned long v3_dma_csr0:8; /* 0x88 */
- unsigned long v3_dma_length0:24;
- unsigned long v3_dma_ctlb_adr0; /* 0x8c */
- unsigned long v3_dma_pci_addr1; /* 0x90 */
- unsigned long v3_dma_local_addr1; /* 0x94 */
- unsigned long v3_dma_csr1:8; /* 0x98 */
- unsigned long v3_dma_length1:24;
- unsigned long v3_dma_ctlb_adr1; /* 0x9c */
- unsigned long v3_i20_mups[8]; /* 0xa0 */
- unsigned char v3_mail_data3; /* 0xc0 */
- unsigned char v3_mail_data2;
- unsigned char v3_mail_data1;
- unsigned char v3_mail_data0;
- unsigned char v3_mail_data7; /* 0xc4 */
- unsigned char v3_mail_data6;
- unsigned char v3_mail_data5;
- unsigned char v3_mail_data4;
- unsigned char v3_mail_data11; /* 0xc8 */
- unsigned char v3_mail_data10;
- unsigned char v3_mail_data9;
- unsigned char v3_mail_data8;
- unsigned char v3_mail_data15; /* 0xcc */
- unsigned char v3_mail_data14;
- unsigned char v3_mail_data13;
- unsigned char v3_mail_data12;
- unsigned short v3_pci_mail_ierd; /* 0xd0 */
- unsigned short v3_pci_mail_iewr;
- unsigned short v3_lb_mail_ierd; /* 0xd4 */
- unsigned short v3_lb_mail_iewr;
- unsigned short v3_mail_rd_stat; /* 0xd8 */
- unsigned short v3_mail_wr_stat;
- unsigned long v3_qba_map; /* 0xdc */
- unsigned long reserved8:24; /* 0xe0 */
- unsigned long v3_dma_delay:8;
- unsigned long reserved9[7]; /* 0xe4 */
-#endif
- } /* 0x100 */
-cma_mb_v360epc;
-
-#endif
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* _COGENT_MB_H */
diff --git a/board/cogent/par.c b/board/cogent/par.c
deleted file mode 100644
index a03c0f10d2..0000000000
--- a/board/cogent/par.c
+++ /dev/null
@@ -1,3 +0,0 @@
-/* parallel not implemented yet */
-
-int cma_parallel_not_implemented = 1;
diff --git a/board/cogent/par.h b/board/cogent/par.h
deleted file mode 100644
index 664ae4a952..0000000000
--- a/board/cogent/par.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* parallel not implemented yet */
-
-extern int cma_parallel_not_implemented;
diff --git a/board/cogent/pci.c b/board/cogent/pci.c
deleted file mode 100644
index 0a57c0c558..0000000000
--- a/board/cogent/pci.c
+++ /dev/null
@@ -1,3 +0,0 @@
-/* pci not implemented yet */
-
-int cma_pci_not_implemented = 1;
diff --git a/board/cogent/pci.h b/board/cogent/pci.h
deleted file mode 100644
index 35aa354a24..0000000000
--- a/board/cogent/pci.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* pci not implemented yet */
-
-extern int cma_pci_not_implemented;
diff --git a/board/cogent/rtc.c b/board/cogent/rtc.c
deleted file mode 100644
index ace9193542..0000000000
--- a/board/cogent/rtc.c
+++ /dev/null
@@ -1,3 +0,0 @@
-/* rtc not implemented yet */
-
-int cma_rtc_not_implemented = 1;
diff --git a/board/cogent/rtc.h b/board/cogent/rtc.h
deleted file mode 100644
index 4b55bd2275..0000000000
--- a/board/cogent/rtc.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* rtc not implemented yet */
-
-extern int cma_rtc_not_implemented;
diff --git a/board/cogent/serial.c b/board/cogent/serial.c
deleted file mode 100644
index 2b595a85ae..0000000000
--- a/board/cogent/serial.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Simple serial driver for Cogent motherboard serial ports
- * for use during boot
- */
-
-#include <common.h>
-#include <board/cogent/serial.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if (CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
-
-#if (defined(CONFIG_8xx) && defined(CONFIG_8xx_CONS_NONE)) || \
- (defined(CONFIG_8260) && defined(CONFIG_CONS_NONE))
-
-#if CONFIG_CONS_INDEX == 1
-#define CMA_MB_SERIAL_BASE CMA_MB_SERIALA_BASE
-#elif CONFIG_CONS_INDEX == 2
-#define CMA_MB_SERIAL_BASE CMA_MB_SERIALB_BASE
-#elif CONFIG_CONS_INDEX == 3 && (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define CMA_MB_SERIAL_BASE CMA_MB_SER2A_BASE
-#elif CONFIG_CONS_INDEX == 4 && (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define CMA_MB_SERIAL_BASE CMA_MB_SER2B_BASE
-#else
-#error CONFIG_CONS_INDEX must be configured for Cogent motherboard serial
-#endif
-
-int serial_init (void)
-{
- cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
-
- cma_mb_reg_write (&mbsp->ser_ier, 0x00); /* turn off interrupts */
- serial_setbrg ();
- cma_mb_reg_write (&mbsp->ser_lcr, 0x03); /* 8 data, 1 stop, no parity */
- cma_mb_reg_write (&mbsp->ser_mcr, 0x03); /* RTS/DTR */
- cma_mb_reg_write (&mbsp->ser_fcr, 0x07); /* Clear & enable FIFOs */
-
- return (0);
-}
-
-void serial_setbrg (void)
-{
- cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
- unsigned int divisor;
- unsigned char lcr;
-
- if ((divisor = br_to_div (gd->baudrate)) == 0)
- divisor = DEFDIV;
-
- lcr = cma_mb_reg_read (&mbsp->ser_lcr);
- cma_mb_reg_write (&mbsp->ser_lcr, lcr | 0x80); /* Access baud rate(set DLAB) */
- cma_mb_reg_write (&mbsp->ser_brl, divisor & 0xff);
- cma_mb_reg_write (&mbsp->ser_brh, (divisor >> 8) & 0xff);
- cma_mb_reg_write (&mbsp->ser_lcr, lcr); /* unset DLAB */
-}
-
-void serial_putc (const char c)
-{
- cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
-
- if (c == '\n')
- serial_putc ('\r');
-
- while ((cma_mb_reg_read (&mbsp->ser_lsr) & LSR_THRE) == 0);
-
- cma_mb_reg_write (&mbsp->ser_thr, c);
-}
-
-void serial_puts (const char *s)
-{
- while (*s != '\0')
- serial_putc (*s++);
-}
-
-int serial_getc (void)
-{
- cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
-
- while ((cma_mb_reg_read (&mbsp->ser_lsr) & LSR_DR) == 0);
-
- return ((int) cma_mb_reg_read (&mbsp->ser_rhr) & 0x7f);
-}
-
-int serial_tstc (void)
-{
- cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
-
- return ((cma_mb_reg_read (&mbsp->ser_lsr) & LSR_DR) != 0);
-}
-
-#endif /* CONS_NONE */
-
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB) && \
- defined(CONFIG_KGDB_NONE)
-
-#if CONFIG_KGDB_INDEX == CONFIG_CONS_INDEX
-#error Console and kgdb are on the same serial port - this is not supported
-#endif
-
-#if CONFIG_KGDB_INDEX == 1
-#define CMA_MB_KGDB_SER_BASE CMA_MB_SERIALA_BASE
-#elif CONFIG_KGDB_INDEX == 2
-#define CMA_MB_KGDB_SER_BASE CMA_MB_SERIALB_BASE
-#elif CONFIG_KGDB_INDEX == 3 && (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define CMA_MB_KGDB_SER_BASE CMA_MB_SER2A_BASE
-#elif CONFIG_KGDB_INDEX == 4 && (CMA_MB_CAPS & CMA_MB_CAP_SER2)
-#define CMA_MB_KGDB_SER_BASE CMA_MB_SER2B_BASE
-#else
-#error CONFIG_KGDB_INDEX must be configured for Cogent motherboard serial
-#endif
-
-void kgdb_serial_init (void)
-{
- cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_KGDB_SER_BASE;
- unsigned int divisor;
-
- if ((divisor = br_to_div (CONFIG_KGDB_BAUDRATE)) == 0)
- divisor = DEFDIV;
-
- cma_mb_reg_write (&mbsp->ser_ier, 0x00); /* turn off interrupts */
- cma_mb_reg_write (&mbsp->ser_lcr, 0x80); /* Access baud rate(set DLAB) */
- cma_mb_reg_write (&mbsp->ser_brl, divisor & 0xff);
- cma_mb_reg_write (&mbsp->ser_brh, (divisor >> 8) & 0xff);
- cma_mb_reg_write (&mbsp->ser_lcr, 0x03); /* 8 data, 1 stop, no parity */
- cma_mb_reg_write (&mbsp->ser_mcr, 0x03); /* RTS/DTR */
- cma_mb_reg_write (&mbsp->ser_fcr, 0x07); /* Clear & enable FIFOs */
-
- printf ("[on cma10x serial port B] ");
-}
-
-void putDebugChar (int c)
-{
- cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_KGDB_SER_BASE;
-
- while ((cma_mb_reg_read (&mbsp->ser_lsr) & LSR_THRE) == 0);
-
- cma_mb_reg_write (&mbsp->ser_thr, c & 0xff);
-}
-
-void putDebugStr (const char *str)
-{
- while (*str != '\0') {
- if (*str == '\n')
- putDebugChar ('\r');
- putDebugChar (*str++);
- }
-}
-
-int getDebugChar (void)
-{
- cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_KGDB_SER_BASE;
-
- while ((cma_mb_reg_read (&mbsp->ser_lsr) & LSR_DR) == 0);
-
- return ((int) cma_mb_reg_read (&mbsp->ser_rhr) & 0x7f);
-}
-
-void kgdb_interruptible (int yes)
-{
- cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_KGDB_SER_BASE;
-
- if (yes == 1) {
- printf ("kgdb: turning serial ints on\n");
- cma_mb_reg_write (&mbsp->ser_ier, 0xf);
- } else {
- printf ("kgdb: turning serial ints off\n");
- cma_mb_reg_write (&mbsp->ser_ier, 0x0);
- }
-}
-
-#endif /* KGDB && KGDB_NONE */
-
-#endif /* CAPS & SERPAR */
diff --git a/board/cogent/serial.h b/board/cogent/serial.h
deleted file mode 100644
index 89962d887d..0000000000
--- a/board/cogent/serial.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Line Status Register bits */
-#define LSR_DR 0x01 /* Data ready */
-#define LSR_OE 0x02 /* Overrun */
-#define LSR_PE 0x04 /* Parity error */
-#define LSR_FE 0x08 /* Framing error */
-#define LSR_BI 0x10 /* Break */
-#define LSR_THRE 0x20 /* Xmit holding register empty */
-#define LSR_TEMT 0x40 /* Xmitter empty */
-#define LSR_ERR 0x80 /* Error */
-
-#define CLKRATE 3686400 /* cogent motherboard serial clk = 3.6864MHz */
-#define DEFDIV 1 /* default to 230400 bps */
-
-#define br_to_div(br) (CLKRATE / (16 * (br)))
-#define div_to_br(div) (CLKRATE / (16 * (div)))
diff --git a/board/cogent/u-boot.lds b/board/cogent/u-boot.lds
deleted file mode 100644
index 5ce2694cbf..0000000000
--- a/board/cogent/u-boot.lds
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- *(.text)
- common/environment.o(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/cogent/u-boot.lds.debug b/board/cogent/u-boot.lds.debug
deleted file mode 100644
index ddd4678ee8..0000000000
--- a/board/cogent/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/cpc45/Makefile b/board/cpc45/Makefile
deleted file mode 100644
index 374fdd7650..0000000000
--- a/board/cpc45/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o plx9030.o pd67290.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cpc45/config.mk b/board/cpc45/config.mk
deleted file mode 100644
index bf9d9debc6..0000000000
--- a/board/cpc45/config.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# (C) Copyright 2001-2003
-# 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
-#
-
-#
-# CPC45 board
-#
-
-
-ifeq ($(CONFIG_BOOT_ROM),y)
- TEXT_BASE := 0xFFF00000
- PLATFORM_CPPFLAGS += -DCONFIG_BOOT_ROM
-else
- TEXT_BASE := 0xFFF00000
-endif
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/cpc45/cpc45.c b/board/cpc45/cpc45.c
deleted file mode 100644
index 51b0085911..0000000000
--- a/board/cpc45/cpc45.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * (C) Copyright 2001
- * 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
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <pci.h>
-#include <i2c.h>
-
-int sysControlDisplay(int digit, uchar ascii_code);
-extern void Plx9030Init(void);
-extern void SPD67290Init(void);
-
- /* We have to clear the initial data area here. Couldn't have done it
- * earlier because DRAM had not been initialized.
- */
-int board_early_init_f(void)
-{
-
- /* enable DUAL UART Mode on CPC45 */
- *(uchar*)DUART_DCR |= 0x1; /* set DCM bit */
-
- return 0;
-}
-
-int checkboard(void)
-{
-/*
- char revision = BOARD_REV;
-*/
- ulong busfreq = get_bus_freq(0);
- char buf[32];
-
- puts ("CPC45 ");
-/*
- printf("Revision %d ", revision);
-*/
- printf("Local Bus at %s MHz\n", strmhz(buf, busfreq));
-
- return 0;
-}
-
-long int initdram (int board_type)
-{
- int m, row, col, bank, i, ref;
- unsigned long start, end;
- uint32_t mccr1, mccr2;
- uint32_t mear1 = 0, emear1 = 0, msar1 = 0, emsar1 = 0;
- uint32_t mear2 = 0, emear2 = 0, msar2 = 0, emsar2 = 0;
- uint8_t mber = 0;
- unsigned int tmp;
-
- i2c_init(CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- if (i2c_reg_read (0x50, 2) != 0x04)
- return 0; /* Memory type */
-
- m = i2c_reg_read (0x50, 5); /* # of physical banks */
- row = i2c_reg_read (0x50, 3); /* # of rows */
- col = i2c_reg_read (0x50, 4); /* # of columns */
- bank = i2c_reg_read (0x50, 17); /* # of logical banks */
- ref = i2c_reg_read (0x50, 12); /* refresh rate / type */
-
- CONFIG_READ_WORD(MCCR1, mccr1);
- mccr1 &= 0xffff0000;
-
- CONFIG_READ_WORD(MCCR2, mccr2);
- mccr2 &= 0xffff0000;
-
- start = CFG_SDRAM_BASE;
- end = start + (1 << (col + row + 3) ) * bank - 1;
-
- for (i = 0; i < m; i++) {
- mccr1 |= ((row == 13)? 2 : (bank == 4)? 0 : 3) << i * 2;
- if (i < 4) {
- msar1 |= ((start >> 20) & 0xff) << i * 8;
- emsar1 |= ((start >> 28) & 0xff) << i * 8;
- mear1 |= ((end >> 20) & 0xff) << i * 8;
- emear1 |= ((end >> 28) & 0xff) << i * 8;
- } else {
- msar2 |= ((start >> 20) & 0xff) << (i-4) * 8;
- emsar2 |= ((start >> 28) & 0xff) << (i-4) * 8;
- mear2 |= ((end >> 20) & 0xff) << (i-4) * 8;
- emear2 |= ((end >> 28) & 0xff) << (i-4) * 8;
- }
- mber |= 1 << i;
- start += (1 << (col + row + 3) ) * bank;
- end += (1 << (col + row + 3) ) * bank;
- }
- for (; i < 8; i++) {
- if (i < 4) {
- msar1 |= 0xff << i * 8;
- emsar1 |= 0x30 << i * 8;
- mear1 |= 0xff << i * 8;
- emear1 |= 0x30 << i * 8;
- } else {
- msar2 |= 0xff << (i-4) * 8;
- emsar2 |= 0x30 << (i-4) * 8;
- mear2 |= 0xff << (i-4) * 8;
- emear2 |= 0x30 << (i-4) * 8;
- }
- }
-
- switch(ref) {
- case 0x00:
- case 0x80:
- tmp = get_bus_freq(0) / 1000000 * 15625 / 1000 - 22;
- break;
- case 0x01:
- case 0x81:
- tmp = get_bus_freq(0) / 1000000 * 3900 / 1000 - 22;
- break;
- case 0x02:
- case 0x82:
- tmp = get_bus_freq(0) / 1000000 * 7800 / 1000 - 22;
- break;
- case 0x03:
- case 0x83:
- tmp = get_bus_freq(0) / 1000000 * 31300 / 1000 - 22;
- break;
- case 0x04:
- case 0x84:
- tmp = get_bus_freq(0) / 1000000 * 62500 / 1000 - 22;
- break;
- case 0x05:
- case 0x85:
- tmp = get_bus_freq(0) / 1000000 * 125000 / 1000 - 22;
- break;
- default:
- tmp = 0x512;
- break;
- }
-
- CONFIG_WRITE_WORD(MCCR1, mccr1);
- CONFIG_WRITE_WORD(MCCR2, tmp << MCCR2_REFINT_SHIFT);
- CONFIG_WRITE_WORD(MSAR1, msar1);
- CONFIG_WRITE_WORD(EMSAR1, emsar1);
- CONFIG_WRITE_WORD(MEAR1, mear1);
- CONFIG_WRITE_WORD(EMEAR1, emear1);
- CONFIG_WRITE_WORD(MSAR2, msar2);
- CONFIG_WRITE_WORD(EMSAR2, emsar2);
- CONFIG_WRITE_WORD(MEAR2, mear2);
- CONFIG_WRITE_WORD(EMEAR2, emear2);
- CONFIG_WRITE_BYTE(MBER, mber);
-
- return (1 << (col + row + 3) ) * bank * m;
-}
-
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-
-static struct pci_config_table pci_cpc45_config_table[] = {
-#ifndef CONFIG_PCI_PNP
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0F, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0D, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_PLX9030_IOADDR,
- PCI_PLX9030_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0E, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCMCIA_IO_BASE,
- PCMCIA_IO_BASE,
- PCI_COMMAND_MEMORY | PCI_COMMAND_IO }},
-#endif /*CONFIG_PCI_PNP*/
- { }
-};
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_cpc45_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
- pci_mpc824x_init(&hose);
-
- /* init PCI_to_LOCAL Bus BRIDGE */
- Plx9030Init();
-
- /* Clear Display */
- DISP_CWORD = 0x0;
-
- sysControlDisplay(0,' ');
- sysControlDisplay(1,'C');
- sysControlDisplay(2,'P');
- sysControlDisplay(3,'C');
- sysControlDisplay(4,' ');
- sysControlDisplay(5,'4');
- sysControlDisplay(6,'5');
- sysControlDisplay(7,' ');
-
-}
-
-/**************************************************************************
-*
-* sysControlDisplay - controls one of the Alphanum. Display digits.
-*
-* This routine will write an ASCII character to the display digit requested.
-*
-* SEE ALSO:
-*
-* RETURNS: NA
-*/
-
-int sysControlDisplay (int digit, /* number of digit 0..7 */
- uchar ascii_code /* ASCII code */
- )
-{
- if ((digit < 0) || (digit > 7))
- return (-1);
-
- *((volatile uchar *) (DISP_CHR_RAM + digit)) = ascii_code;
-
- return (0);
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-
-#ifdef CFG_PCMCIA_MEM_ADDR
-volatile unsigned char *pcmcia_mem = (unsigned char*)CFG_PCMCIA_MEM_ADDR;
-#endif
-
-int pcmcia_init(void)
-{
- u_int rc;
-
- debug ("Enable PCMCIA " PCMCIA_SLOT_MSG "\n");
-
- rc = i82365_init();
-
- return rc;
-}
-
-#endif /* CFG_CMD_PCMCIA */
-
-# ifdef CONFIG_IDE_LED
-void ide_led (uchar led, uchar status)
-{
- u_char val;
- /* We have one PCMCIA slot and use LED H4 for the IDE Interface */
- val = readb(BCSR_BASE + 0x04);
- if (status) { /* led on */
- val |= B_CTRL_LED0;
- } else {
- val &= ~B_CTRL_LED0;
- }
- writeb(val, BCSR_BASE + 0x04);
-}
-# endif
diff --git a/board/cpc45/flash.c b/board/cpc45/flash.c
deleted file mode 100644
index 37dd182ba4..0000000000
--- a/board/cpc45/flash.c
+++ /dev/null
@@ -1,522 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * 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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-#define FLASH_BANK_SIZE 0x800000
-#define MAIN_SECT_SIZE 0x40000
-#define PARAM_SECT_SIZE 0x8000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-static int write_data (flash_info_t * info, ulong dest, ulong * data);
-static void write_via_fpu (vu_long * addr, ulong * data);
-static __inline__ unsigned long get_msr (void);
-static __inline__ void set_msr (unsigned long msr);
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-/*---------------------------------------------------------------------*/
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i, j;
- ulong size = 0;
- uchar tempChar;
- vu_long *tmpaddr;
-
- /* Enable flash writes on CPC45 */
-
- tempChar = BOARD_CTRL;
-
- tempChar |= (B_CTRL_FWPT_1 | B_CTRL_FWRE_1);
-
- tempChar &= ~(B_CTRL_FWPT_0 | B_CTRL_FWRE_0);
-
- BOARD_CTRL = tempChar;
-
- __asm__ volatile ("sync\n eieio");
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- vu_long *addr = (vu_long *) (CFG_FLASH_BASE + i * FLASH_BANK_SIZE);
-
- addr[0] = 0x00900090;
-
- __asm__ volatile ("sync\n eieio");
-
- udelay (100);
-
- DEBUGF ("Flash bank # %d:\n"
- "\tManuf. ID @ 0x%08lX: 0x%08lX\n"
- "\tDevice ID @ 0x%08lX: 0x%08lX\n",
- i,
- (ulong) (&addr[0]), addr[0],
- (ulong) (&addr[2]), addr[2]);
-
-
- if ((addr[0] == addr[1]) && (addr[0] == INTEL_MANUFACT) &&
- (addr[2] == addr[3]) && (addr[2] == INTEL_ID_28F160F3T)) {
-
- flash_info[i].flash_id =
- (FLASH_MAN_INTEL & FLASH_VENDMASK) |
- (INTEL_ID_28F160F3T & FLASH_TYPEMASK);
-
- } else if ((addr[0] == addr[1]) && (addr[0] == INTEL_MANUFACT)
- && (addr[2] == addr[3])
- && (addr[2] == INTEL_ID_28F160C3T)) {
-
- flash_info[i].flash_id =
- (FLASH_MAN_INTEL & FLASH_VENDMASK) |
- (INTEL_ID_28F160C3T & FLASH_TYPEMASK);
-
- } else {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- addr[0] = 0xFFFFFFFF;
- goto Done;
- }
-
- DEBUGF ("flash_id = 0x%08lX\n", flash_info[i].flash_id);
-
- addr[0] = 0xFFFFFFFF;
-
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- for (j = 0; j < flash_info[i].sector_count; j++) {
- if (j > 30) {
- flash_info[i].start[j] = CFG_FLASH_BASE +
- i * FLASH_BANK_SIZE +
- (MAIN_SECT_SIZE * 31) + (j -
- 31) *
- PARAM_SECT_SIZE;
- } else {
- flash_info[i].start[j] = CFG_FLASH_BASE +
- i * FLASH_BANK_SIZE +
- j * MAIN_SECT_SIZE;
- }
- }
-
- /* unlock sectors, if 160C3T */
-
- for (j = 0; j < flash_info[i].sector_count; j++) {
- tmpaddr = (vu_long *) flash_info[i].start[j];
-
- if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
- (INTEL_ID_28F160C3T & FLASH_TYPEMASK)) {
- tmpaddr[0] = 0x00600060;
- tmpaddr[0] = 0x00D000D0;
- tmpaddr[1] = 0x00600060;
- tmpaddr[1] = 0x00D000D0;
- }
- }
-
- size += flash_info[i].size;
-
- addr[0] = 0x00FF00FF;
- addr[1] = 0x00FF00FF;
- }
-
- /* Protect monitor and environment sectors
- */
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE + FLASH_BANK_SIZE
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[1]);
-#else
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-#if CFG_ENV_ADDR >= CFG_FLASH_BASE + FLASH_BANK_SIZE
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[1]);
-#else
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-#endif
-
-Done:
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch ((i = info->flash_id & FLASH_VENDMASK)) {
- case (FLASH_MAN_INTEL & FLASH_VENDMASK):
- printf ("Intel: ");
- break;
- default:
- printf ("Unknown Vendor 0x%04x ", i);
- break;
- }
-
- switch ((i = info->flash_id & FLASH_TYPEMASK)) {
- case (INTEL_ID_28F160F3T & FLASH_TYPEMASK):
- printf ("28F160F3T (16Mbit)\n");
- break;
-
- case (INTEL_ID_28F160C3T & FLASH_TYPEMASK):
- printf ("28F160C3T (16Mbit)\n");
- break;
-
- default:
- printf ("Unknown Chip Type 0x%04x\n", i);
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
-Done:
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- DEBUGF ("Erase flash bank %d sect %d ... %d\n",
- info - &flash_info[0], s_first, s_last);
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (FLASH_MAN_INTEL & FLASH_VENDMASK)) {
- printf ("Can erase only Intel flash types - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *) (info->start[sect]);
-
- DEBUGF ("Erase sect %d @ 0x%08lX\n",
- sect, (ulong) addr);
-
- /* Disable interrupts which might cause a timeout
- * here.
- */
- flag = disable_interrupts ();
-
- addr[0] = 0x00500050; /* clear status register */
- addr[0] = 0x00200020; /* erase setup */
- addr[0] = 0x00D000D0; /* erase confirm */
-
- addr[1] = 0x00500050; /* clear status register */
- addr[1] = 0x00200020; /* erase setup */
- addr[1] = 0x00D000D0; /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((addr[0] & 0x00800080) != 0x00800080) ||
- ((addr[1] & 0x00800080) != 0x00800080)) {
- if ((now = get_timer (start)) >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- addr[0] = 0x00B000B0; /* suspend erase */
- addr[0] = 0x00FF00FF; /* to read mode */
- return 1;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- addr[0] = 0x00FF00FF;
- }
- }
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define FLASH_WIDTH 8 /* flash bus width in bytes */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong wp, cp, msr;
- int l, rc, i;
- ulong data[2];
- ulong *datah = &data[0];
- ulong *datal = &data[1];
-
- DEBUGF ("Flash write_buff: @ 0x%08lx, src 0x%08lx len %ld\n",
- addr, (ulong) src, cnt);
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- msr = get_msr ();
- set_msr (msr | MSR_FP);
-
- wp = (addr & ~(FLASH_WIDTH - 1)); /* get lower aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- *datah = *datal = 0;
-
- for (i = 0, cp = wp; i < l; i++, cp++) {
- if (i >= 4) {
- *datah = (*datah << 8) |
- ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datal << 8) | (*(uchar *) cp);
- }
- for (; i < FLASH_WIDTH && cnt > 0; ++i) {
- char tmp = *src++;
-
- if (i >= 4) {
- *datah = (*datah << 8) |
- ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datal << 8) | tmp;
- --cnt;
- ++cp;
- }
-
- for (; cnt == 0 && i < FLASH_WIDTH; ++i, ++cp) {
- if (i >= 4) {
- *datah = (*datah << 8) |
- ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datah << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, data)) != 0) {
- set_msr (msr);
- return (rc);
- }
-
- wp += FLASH_WIDTH;
- }
-
- /*
- * handle FLASH_WIDTH aligned part
- */
- while (cnt >= FLASH_WIDTH) {
- *datah = *(ulong *) src;
- *datal = *(ulong *) (src + 4);
- if ((rc = write_data (info, wp, data)) != 0) {
- set_msr (msr);
- return (rc);
- }
- wp += FLASH_WIDTH;
- cnt -= FLASH_WIDTH;
- src += FLASH_WIDTH;
- }
-
- if (cnt == 0) {
- set_msr (msr);
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- *datah = *datal = 0;
- for (i = 0, cp = wp; i < FLASH_WIDTH && cnt > 0; ++i, ++cp) {
- char tmp = *src++;
-
- if (i >= 4) {
- *datah = (*datah << 8) | ((*datal & 0xFF000000) >>
- 24);
- }
-
- *datal = (*datal << 8) | tmp;
- --cnt;
- }
-
- for (; i < FLASH_WIDTH; ++i, ++cp) {
- if (i >= 4) {
- *datah = (*datah << 8) | ((*datal & 0xFF000000) >>
- 24);
- }
-
- *datal = (*datal << 8) | (*(uchar *) cp);
- }
-
- rc = write_data (info, wp, data);
- set_msr (msr);
-
- return (rc);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, ulong * data)
-{
- vu_long *addr = (vu_long *) dest;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if (((addr[0] & data[0]) != data[0]) ||
- ((addr[1] & data[1]) != data[1])) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- addr[0] = 0x00400040; /* write setup */
- write_via_fpu (addr, data);
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- start = get_timer (0);
-
- while (((addr[0] & 0x00800080) != 0x00800080) ||
- ((addr[1] & 0x00800080) != 0x00800080)) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- addr[0] = 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- addr[0] = 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void write_via_fpu (vu_long * addr, ulong * data)
-{
- __asm__ __volatile__ ("lfd 1, 0(%0)"::"r" (data));
- __asm__ __volatile__ ("stfd 1, 0(%0)"::"r" (addr));
-}
-
-/*-----------------------------------------------------------------------
- */
-static __inline__ unsigned long get_msr (void)
-{
- unsigned long msr;
-
- __asm__ __volatile__ ("mfmsr %0":"=r" (msr):);
-
- return msr;
-}
-
-static __inline__ void set_msr (unsigned long msr)
-{
- __asm__ __volatile__ ("mtmsr %0"::"r" (msr));
-}
diff --git a/board/cpc45/pd67290.c b/board/cpc45/pd67290.c
deleted file mode 100644
index 6ca3e7bd7a..0000000000
--- a/board/cpc45/pd67290.c
+++ /dev/null
@@ -1,818 +0,0 @@
-/*
- * (C) Copyright 2003-2005
- * 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
- *
- ********************************************************************
- *
- * Lots of code copied from:
- *
- * i82365.c 1.352 - Linux driver for Intel 82365 and compatible
- * PC Card controllers, and Yenta-compatible PCI-to-CardBus controllers.
- * (C) 1999 David A. Hinds <dahinds@users.sourceforge.net>
- */
-
-#include <common.h>
-
-#ifdef CONFIG_I82365
-
-#include <command.h>
-#include <pci.h>
-#include <pcmcia.h>
-#include <asm/io.h>
-
-#include <pcmcia/ss.h>
-#include <pcmcia/i82365.h>
-#include <pcmcia/yenta.h>
-#include <pcmcia/cirrus.h>
-
-static struct pci_device_id supported[] = {
- {PCI_VENDOR_ID_CIRRUS, PCI_DEVICE_ID_CIRRUS_6729},
- {0, 0}
-};
-
-#define CYCLE_TIME 120
-
-#ifdef DEBUG
-static void i82365_dump_regions (pci_dev_t dev);
-#endif
-
-typedef struct socket_info_t {
- pci_dev_t dev;
- u_short bcr;
- u_char pci_lat, cb_lat, sub_bus, cache;
- u_int cb_phys;
-
- socket_cap_t cap;
- u_short type;
- u_int flags;
- cirrus_state_t c_state;
-} socket_info_t;
-
-/* These definitions must match the pcic table! */
-typedef enum pcic_id {
- IS_PD6710, IS_PD672X, IS_VT83C469
-} pcic_id;
-
-typedef struct pcic_t {
- char *name;
-} pcic_t;
-
-static pcic_t pcic[] = {
- {" Cirrus PD6710: "},
- {" Cirrus PD672x: "},
- {" VIA VT83C469: "},
-};
-
-static socket_info_t socket;
-static socket_state_t state;
-static struct pccard_mem_map mem;
-static struct pccard_io_map io;
-
-/*====================================================================*/
-
-/* Some PCI shortcuts */
-
-static int pci_readb (socket_info_t * s, int r, u_char * v)
-{
- return pci_read_config_byte (s->dev, r, v);
-}
-static int pci_writeb (socket_info_t * s, int r, u_char v)
-{
- return pci_write_config_byte (s->dev, r, v);
-}
-static int pci_readw (socket_info_t * s, int r, u_short * v)
-{
- return pci_read_config_word (s->dev, r, v);
-}
-static int pci_writew (socket_info_t * s, int r, u_short v)
-{
- return pci_write_config_word (s->dev, r, v);
-}
-
-/*====================================================================*/
-
-#define cb_readb(s) readb((s)->cb_phys + 1)
-#define cb_writeb(s, v) writeb(v, (s)->cb_phys)
-#define cb_writeb2(s, v) writeb(v, (s)->cb_phys + 1)
-#define cb_readl(s, r) readl((s)->cb_phys + (r))
-#define cb_writel(s, r, v) writel(v, (s)->cb_phys + (r))
-
-
-static u_char i365_get (socket_info_t * s, u_short reg)
-{
- u_char val;
-#ifdef CONFIG_PCMCIA_SLOT_A
- int slot = 0;
-#else
- int slot = 1;
-#endif
-
- val = I365_REG (slot, reg);
-
- cb_writeb (s, val);
- val = cb_readb (s);
-
- debug ("i365_get slot:%x reg: %x val: %x\n", slot, reg, val);
- return val;
-}
-
-static void i365_set (socket_info_t * s, u_short reg, u_char data)
-{
-#ifdef CONFIG_PCMCIA_SLOT_A
- int slot = 0;
-#else
- int slot = 1;
-#endif
- u_char val;
-
- val = I365_REG (slot, reg);
-
- cb_writeb (s, val);
- cb_writeb2 (s, data);
-
- debug ("i365_set slot:%x reg: %x data:%x\n", slot, reg, data);
-}
-
-static void i365_bset (socket_info_t * s, u_short reg, u_char mask)
-{
- i365_set (s, reg, i365_get (s, reg) | mask);
-}
-
-static void i365_bclr (socket_info_t * s, u_short reg, u_char mask)
-{
- i365_set (s, reg, i365_get (s, reg) & ~mask);
-}
-
-#if 0 /* not used */
-static void i365_bflip (socket_info_t * s, u_short reg, u_char mask, int b)
-{
- u_char d = i365_get (s, reg);
-
- i365_set (s, reg, (b) ? (d | mask) : (d & ~mask));
-}
-
-static u_short i365_get_pair (socket_info_t * s, u_short reg)
-{
- return (i365_get (s, reg) + (i365_get (s, reg + 1) << 8));
-}
-#endif /* not used */
-
-static void i365_set_pair (socket_info_t * s, u_short reg, u_short data)
-{
- i365_set (s, reg, data & 0xff);
- i365_set (s, reg + 1, data >> 8);
-}
-
-/*======================================================================
-
- Code to save and restore global state information for Cirrus
- PD67xx controllers, and to set and report global configuration
- options.
-
-======================================================================*/
-
-#define flip(v,b,f) (v = ((f)<0) ? v : ((f) ? ((v)|(b)) : ((v)&(~b))))
-
-static void cirrus_get_state (socket_info_t * s)
-{
- int i;
- cirrus_state_t *p = &s->c_state;
-
- p->misc1 = i365_get (s, PD67_MISC_CTL_1);
- p->misc1 &= (PD67_MC1_MEDIA_ENA | PD67_MC1_INPACK_ENA);
- p->misc2 = i365_get (s, PD67_MISC_CTL_2);
- for (i = 0; i < 6; i++)
- p->timer[i] = i365_get (s, PD67_TIME_SETUP (0) + i);
-
-}
-
-static void cirrus_set_state (socket_info_t * s)
-{
- int i;
- u_char misc;
- cirrus_state_t *p = &s->c_state;
-
- misc = i365_get (s, PD67_MISC_CTL_2);
- i365_set (s, PD67_MISC_CTL_2, p->misc2);
- if (misc & PD67_MC2_SUSPEND)
- udelay (50000);
- misc = i365_get (s, PD67_MISC_CTL_1);
- misc &= ~(PD67_MC1_MEDIA_ENA | PD67_MC1_INPACK_ENA);
- i365_set (s, PD67_MISC_CTL_1, misc | p->misc1);
- for (i = 0; i < 6; i++)
- i365_set (s, PD67_TIME_SETUP (0) + i, p->timer[i]);
-}
-
-static u_int cirrus_set_opts (socket_info_t * s)
-{
- cirrus_state_t *p = &s->c_state;
- u_int mask = 0xffff;
-#if DEBUG
- char buf[200];
-
- memset (buf, 0, 200);
-#endif
-
- if (has_ring == -1)
- has_ring = 1;
- flip (p->misc2, PD67_MC2_IRQ15_RI, has_ring);
- flip (p->misc2, PD67_MC2_DYNAMIC_MODE, dynamic_mode);
-#if DEBUG
- if (p->misc2 & PD67_MC2_IRQ15_RI)
- strcat (buf, " [ring]");
- if (p->misc2 & PD67_MC2_DYNAMIC_MODE)
- strcat (buf, " [dyn mode]");
- if (p->misc1 & PD67_MC1_INPACK_ENA)
- strcat (buf, " [inpack]");
-#endif
-
- if (p->misc2 & PD67_MC2_IRQ15_RI)
- mask &= ~0x8000;
- if (has_led > 0) {
-#if DEBUG
- strcat (buf, " [led]");
-#endif
- mask &= ~0x1000;
- }
- if (has_dma > 0) {
-#if DEBUG
- strcat (buf, " [dma]");
-#endif
- mask &= ~0x0600;
- flip (p->misc2, PD67_MC2_FREQ_BYPASS, freq_bypass);
-#if DEBUG
- if (p->misc2 & PD67_MC2_FREQ_BYPASS)
- strcat (buf, " [freq bypass]");
-#endif
- }
-
- if (setup_time >= 0)
- p->timer[0] = p->timer[3] = setup_time;
- if (cmd_time > 0) {
- p->timer[1] = cmd_time;
- p->timer[4] = cmd_time * 2 + 4;
- }
- if (p->timer[1] == 0) {
- p->timer[1] = 6;
- p->timer[4] = 16;
- if (p->timer[0] == 0)
- p->timer[0] = p->timer[3] = 1;
- }
- if (recov_time >= 0)
- p->timer[2] = p->timer[5] = recov_time;
-
- debug ("i82365 Opt: %s [%d/%d/%d] [%d/%d/%d]\n",
- buf,
- p->timer[0], p->timer[1], p->timer[2],
- p->timer[3], p->timer[4], p->timer[5]);
-
- return mask;
-}
-
-/*======================================================================
-
- Routines to handle common CardBus options
-
-======================================================================*/
-
-/* Default settings for PCI command configuration register */
-#define CMD_DFLT (PCI_COMMAND_IO|PCI_COMMAND_MEMORY| \
- PCI_COMMAND_MASTER|PCI_COMMAND_WAIT)
-
-static void cb_get_state (socket_info_t * s)
-{
- pci_readb (s, PCI_CACHE_LINE_SIZE, &s->cache);
- pci_readb (s, PCI_LATENCY_TIMER, &s->pci_lat);
- pci_readb (s, CB_LATENCY_TIMER, &s->cb_lat);
- pci_readb (s, CB_CARDBUS_BUS, &s->cap.cardbus);
- pci_readb (s, CB_SUBORD_BUS, &s->sub_bus);
- pci_readw (s, CB_BRIDGE_CONTROL, &s->bcr);
-}
-
-static void cb_set_state (socket_info_t * s)
-{
- pci_writew (s, PCI_COMMAND, CMD_DFLT);
- pci_writeb (s, PCI_CACHE_LINE_SIZE, s->cache);
- pci_writeb (s, PCI_LATENCY_TIMER, s->pci_lat);
- pci_writeb (s, CB_LATENCY_TIMER, s->cb_lat);
- pci_writeb (s, CB_CARDBUS_BUS, s->cap.cardbus);
- pci_writeb (s, CB_SUBORD_BUS, s->sub_bus);
- pci_writew (s, CB_BRIDGE_CONTROL, s->bcr);
-}
-
-static void cb_set_opts (socket_info_t * s)
-{
-}
-
-/*======================================================================
-
- Power control for Cardbus controllers: used both for 16-bit and
- Cardbus cards.
-
-======================================================================*/
-
-static int cb_set_power (socket_info_t * s, socket_state_t * state)
-{
- u_int reg = 0;
-
- reg = I365_PWR_NORESET;
- if (state->flags & SS_PWR_AUTO)
- reg |= I365_PWR_AUTO;
- if (state->flags & SS_OUTPUT_ENA)
- reg |= I365_PWR_OUT;
- if (state->Vpp != 0) {
- if (state->Vpp == 120) {
- reg |= I365_VPP1_12V;
- puts (" 12V card found: ");
- } else if (state->Vpp == state->Vcc) {
- reg |= I365_VPP1_5V;
- } else {
- puts (" power not found: ");
- return -1;
- }
- }
- if (state->Vcc != 0) {
- reg |= I365_VCC_5V;
- if (state->Vcc == 33) {
- puts (" 3.3V card found: ");
- i365_bset (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
- } else if (state->Vcc == 50) {
- puts (" 5V card found: ");
- i365_bclr (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
- } else {
- puts (" power not found: ");
- return -1;
- }
- }
-
- if (reg != i365_get (s, I365_POWER)) {
- reg = (I365_PWR_OUT | I365_PWR_NORESET | I365_VCC_5V | I365_VPP1_5V);
- i365_set (s, I365_POWER, reg);
- }
-
- return 0;
-}
-
-/*======================================================================
-
- Generic routines to get and set controller options
-
-======================================================================*/
-
-static void get_bridge_state (socket_info_t * s)
-{
- cirrus_get_state (s);
- cb_get_state (s);
-}
-
-static void set_bridge_state (socket_info_t * s)
-{
- cb_set_state (s);
- i365_set (s, I365_GBLCTL, 0x00);
- i365_set (s, I365_GENCTL, 0x00);
- cirrus_set_state (s);
-}
-
-static void set_bridge_opts (socket_info_t * s)
-{
- cirrus_set_opts (s);
- cb_set_opts (s);
-}
-
-/*====================================================================*/
-#define PD67_EXT_INDEX 0x2e /* Extension index */
-#define PD67_EXT_DATA 0x2f /* Extension data */
-#define PD67_EXD_VS1(s) (0x01 << ((s)<<1))
-
-#define pd67_ext_get(s, r) \
- (i365_set(s, PD67_EXT_INDEX, r), i365_get(s, PD67_EXT_DATA))
-
-static int i365_get_status (socket_info_t * s, u_int * value)
-{
- u_int status;
- u_char val;
- u_char power, vcc, vpp;
- u_int powerstate;
-
- status = i365_get (s, I365_IDENT);
- status = i365_get (s, I365_STATUS);
- *value = ((status & I365_CS_DETECT) == I365_CS_DETECT) ? SS_DETECT : 0;
- if (i365_get (s, I365_INTCTL) & I365_PC_IOCARD) {
- *value |= (status & I365_CS_STSCHG) ? 0 : SS_STSCHG;
- } else {
- *value |= (status & I365_CS_BVD1) ? 0 : SS_BATDEAD;
- *value |= (status & I365_CS_BVD2) ? 0 : SS_BATWARN;
- }
- *value |= (status & I365_CS_WRPROT) ? SS_WRPROT : 0;
- *value |= (status & I365_CS_READY) ? SS_READY : 0;
- *value |= (status & I365_CS_POWERON) ? SS_POWERON : 0;
-
- /* Check for Cirrus CL-PD67xx chips */
- i365_set (s, PD67_CHIP_INFO, 0);
- val = i365_get (s, PD67_CHIP_INFO);
- s->type = -1;
- if ((val & PD67_INFO_CHIP_ID) == PD67_INFO_CHIP_ID) {
- val = i365_get (s, PD67_CHIP_INFO);
- if ((val & PD67_INFO_CHIP_ID) == 0) {
- s->type = (val & PD67_INFO_SLOTS) ? IS_PD672X : IS_PD6710;
- i365_set (s, PD67_EXT_INDEX, 0xe5);
- if (i365_get (s, PD67_EXT_INDEX) != 0xe5)
- s->type = IS_VT83C469;
- }
- } else {
- printf ("no Cirrus Chip found\n");
- *value = 0;
- return -1;
- }
-
- power = i365_get (s, I365_POWER);
- state.flags |= (power & I365_PWR_AUTO) ? SS_PWR_AUTO : 0;
- state.flags |= (power & I365_PWR_OUT) ? SS_OUTPUT_ENA : 0;
- vcc = power & I365_VCC_MASK;
- vpp = power & I365_VPP1_MASK;
- state.Vcc = state.Vpp = 0;
- if((vcc== 0) || (vpp == 0)) {
- /*
- * On the Cirrus we get the info which card voltage
- * we have in EXTERN DATA and write it to MISC_CTL1
- */
- powerstate = pd67_ext_get(s, PD67_EXTERN_DATA);
- if (powerstate & PD67_EXD_VS1(0)) {
- /* 5V Card */
- i365_bclr (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
- } else {
- /* 3.3V Card */
- i365_bset (s, PD67_MISC_CTL_1, PD67_MC1_VCC_3V);
- }
- i365_set (s, I365_POWER, (I365_PWR_OUT | I365_PWR_NORESET | I365_VCC_5V | I365_VPP1_5V));
- power = i365_get (s, I365_POWER);
- }
- if (power & I365_VCC_5V) {
- state.Vcc = (i365_get(s, PD67_MISC_CTL_1) & PD67_MC1_VCC_3V) ? 33 : 50;
- }
-
- if (power == I365_VPP1_12V)
- state.Vpp = 120;
-
- /* IO card, RESET flags, IO interrupt */
- power = i365_get (s, I365_INTCTL);
- state.flags |= (power & I365_PC_RESET) ? 0 : SS_RESET;
- if (power & I365_PC_IOCARD)
- state.flags |= SS_IOCARD;
- state.io_irq = power & I365_IRQ_MASK;
-
- /* Card status change mask */
- power = i365_get (s, I365_CSCINT);
- state.csc_mask = (power & I365_CSC_DETECT) ? SS_DETECT : 0;
- if (state.flags & SS_IOCARD)
- state.csc_mask |= (power & I365_CSC_STSCHG) ? SS_STSCHG : 0;
- else {
- state.csc_mask |= (power & I365_CSC_BVD1) ? SS_BATDEAD : 0;
- state.csc_mask |= (power & I365_CSC_BVD2) ? SS_BATWARN : 0;
- state.csc_mask |= (power & I365_CSC_READY) ? SS_READY : 0;
- }
- debug ("i82365: GetStatus(0) = flags %#3.3x, Vcc %d, Vpp %d, "
- "io_irq %d, csc_mask %#2.2x\n", state.flags,
- state.Vcc, state.Vpp, state.io_irq, state.csc_mask);
-
- return 0;
-} /* i365_get_status */
-
-static int i365_set_socket (socket_info_t * s, socket_state_t * state)
-{
- u_char reg;
-
- set_bridge_state (s);
-
- /* IO card, RESET flag */
- reg = 0;
- reg |= (state->flags & SS_RESET) ? 0 : I365_PC_RESET;
- reg |= (state->flags & SS_IOCARD) ? I365_PC_IOCARD : 0;
- i365_set (s, I365_INTCTL, reg);
-
- cb_set_power (s, state);
-
-#if 0
- /* Card status change interrupt mask */
- reg = s->cs_irq << 4;
- if (state->csc_mask & SS_DETECT)
- reg |= I365_CSC_DETECT;
- if (state->flags & SS_IOCARD) {
- if (state->csc_mask & SS_STSCHG)
- reg |= I365_CSC_STSCHG;
- } else {
- if (state->csc_mask & SS_BATDEAD)
- reg |= I365_CSC_BVD1;
- if (state->csc_mask & SS_BATWARN)
- reg |= I365_CSC_BVD2;
- if (state->csc_mask & SS_READY)
- reg |= I365_CSC_READY;
- }
- i365_set (s, I365_CSCINT, reg);
- i365_get (s, I365_CSC);
-#endif /* 0 */
-
- return 0;
-} /* i365_set_socket */
-
-/*====================================================================*/
-
-static int i365_set_mem_map (socket_info_t * s, struct pccard_mem_map *mem)
-{
- u_short base, i;
- u_char map;
-
- debug ("i82365: SetMemMap(%d, %#2.2x, %d ns, %#5.5lx-%#5.5lx, %#5.5x)\n",
- mem->map, mem->flags, mem->speed,
- mem->sys_start, mem->sys_stop, mem->card_start);
-
- map = mem->map;
- if ((map > 4) ||
- (mem->card_start > 0x3ffffff) ||
- (mem->sys_start > mem->sys_stop) ||
- (mem->speed > 1000)) {
- return -1;
- }
-
- /* Turn off the window before changing anything */
- if (i365_get (s, I365_ADDRWIN) & I365_ENA_MEM (map))
- i365_bclr (s, I365_ADDRWIN, I365_ENA_MEM (map));
-
- /* Take care of high byte, for PCI controllers */
- i365_set (s, CB_MEM_PAGE (map), mem->sys_start >> 24);
-
- base = I365_MEM (map);
- i = (mem->sys_start >> 12) & 0x0fff;
- if (mem->flags & MAP_16BIT)
- i |= I365_MEM_16BIT;
- if (mem->flags & MAP_0WS)
- i |= I365_MEM_0WS;
- i365_set_pair (s, base + I365_W_START, i);
-
- i = (mem->sys_stop >> 12) & 0x0fff;
- switch (mem->speed / CYCLE_TIME) {
- case 0:
- break;
- case 1:
- i |= I365_MEM_WS0;
- break;
- case 2:
- i |= I365_MEM_WS1;
- break;
- default:
- i |= I365_MEM_WS1 | I365_MEM_WS0;
- break;
- }
- i365_set_pair (s, base + I365_W_STOP, i);
-
- i = 0;
- if (mem->flags & MAP_WRPROT)
- i |= I365_MEM_WRPROT;
- if (mem->flags & MAP_ATTRIB)
- i |= I365_MEM_REG;
- i365_set_pair (s, base + I365_W_OFF, i);
-
- /* set System Memory map Upper Adress */
- i365_set(s, PD67_EXT_INDEX, PD67_MEM_PAGE(map));
- i365_set(s, PD67_EXT_DATA, ((mem->sys_start >> 24) & 0xff));
-
- /* Turn on the window if necessary */
- if (mem->flags & MAP_ACTIVE)
- i365_bset (s, I365_ADDRWIN, I365_ENA_MEM (map));
- return 0;
-} /* i365_set_mem_map */
-
-static int i365_set_io_map (socket_info_t * s, struct pccard_io_map *io)
-{
- u_char map, ioctl;
-
- map = io->map;
- /* comment out: comparison is always false due to limited range of data type */
- if ((map > 1) || /* (io->start > 0xffff) || (io->stop > 0xffff) || */
- (io->stop < io->start))
- return -1;
- /* Turn off the window before changing anything */
- if (i365_get (s, I365_ADDRWIN) & I365_ENA_IO (map))
- i365_bclr (s, I365_ADDRWIN, I365_ENA_IO (map));
- i365_set_pair (s, I365_IO (map) + I365_W_START, io->start);
- i365_set_pair (s, I365_IO (map) + I365_W_STOP, io->stop);
- ioctl = i365_get (s, I365_IOCTL) & ~I365_IOCTL_MASK (map);
- if (io->speed)
- ioctl |= I365_IOCTL_WAIT (map);
- if (io->flags & MAP_0WS)
- ioctl |= I365_IOCTL_0WS (map);
- if (io->flags & MAP_16BIT)
- ioctl |= I365_IOCTL_16BIT (map);
- if (io->flags & MAP_AUTOSZ)
- ioctl |= I365_IOCTL_IOCS16 (map);
- i365_set (s, I365_IOCTL, ioctl);
- /* Turn on the window if necessary */
- if (io->flags & MAP_ACTIVE)
- i365_bset (s, I365_ADDRWIN, I365_ENA_IO (map));
- return 0;
-} /* i365_set_io_map */
-
-/*====================================================================*/
-
-/*
- * PCI_ADDR = (HOST_ADDR - 0xfe000000)
- * see MPC 8245 Users Manual Adress Map B
- */
-#define HOST_TO_PCI(addr) ((addr) - 0xfe000000)
-#define PCI_TO_HOST(addr) ((addr) + 0xfe000000)
-
-int i82365_init (void)
-{
- u_int val;
- int i;
-
- if ((socket.dev = pci_find_devices (supported, 0)) < 0) {
- /* Controller not found */
- printf ("No PD67290 device found !!\n");
- return 1;
- }
- debug ("i82365 Device Found!\n");
-
- socket.cb_phys = PCMCIA_IO_BASE;
-
- /* set base address */
- pci_write_config_dword (socket.dev, PCI_BASE_ADDRESS_0,
- HOST_TO_PCI(socket.cb_phys));
-
- /* enable mapped memory and IO addresses */
- pci_write_config_dword (socket.dev,
- PCI_COMMAND,
- PCI_COMMAND_MEMORY |
- PCI_COMMAND_IO | PCI_COMMAND_WAIT);
-
- get_bridge_state (&socket);
- set_bridge_opts (&socket);
-
- i = i365_get_status (&socket, &val);
-
- if (i > -1) {
- puts (pcic[socket.type].name);
- } else {
- printf ("i82365: Controller not found.\n");
- return 1;
- }
- if((val & SS_DETECT) != SS_DETECT){
- puts ("No card\n");
- return 1;
- }
-
- state.flags |= SS_OUTPUT_ENA;
-
- i365_set_socket (&socket, &state);
-
- for (i = 500; i; i--) {
- if ((i365_get (&socket, I365_STATUS) & I365_CS_READY))
- break;
- udelay (1000);
- }
-
- if (i == 0) {
- /* PC Card not ready for data transfer */
- puts ("i82365 PC Card not ready for data transfer\n");
- return 1;
- }
- debug (" PC Card ready for data transfer: ");
-
- mem.map = 0;
- mem.flags = MAP_ATTRIB | MAP_ACTIVE;
- mem.speed = 300;
- mem.sys_start = CFG_PCMCIA_MEM_ADDR;
- mem.sys_stop = CFG_PCMCIA_MEM_ADDR + CFG_PCMCIA_MEM_SIZE - 1;
- mem.card_start = 0;
- i365_set_mem_map (&socket, &mem);
-
- mem.map = 1;
- mem.flags = MAP_ACTIVE;
- mem.speed = 300;
- mem.sys_start = CFG_PCMCIA_MEM_ADDR + CFG_PCMCIA_MEM_SIZE;
- mem.sys_stop = CFG_PCMCIA_MEM_ADDR + (2 * CFG_PCMCIA_MEM_SIZE) - 1;
- mem.card_start = 0;
- i365_set_mem_map (&socket, &mem);
-
-#ifdef DEBUG
- i82365_dump_regions (socket.dev);
-#endif
-
- return 0;
-}
-
-void i82365_exit (void)
-{
- io.map = 0;
- io.flags = 0;
- io.speed = 0;
- io.start = 0;
- io.stop = 0x1;
-
- i365_set_io_map (&socket, &io);
-
- mem.map = 0;
- mem.flags = 0;
- mem.speed = 0;
- mem.sys_start = 0;
- mem.sys_stop = 0x1000;
- mem.card_start = 0;
-
- i365_set_mem_map (&socket, &mem);
-
- mem.map = 1;
- mem.flags = 0;
- mem.speed = 0;
- mem.sys_start = 0;
- mem.sys_stop = 0x1000;
- mem.card_start = 0;
-
- i365_set_mem_map (&socket, &mem);
-
- state.Vcc = state.Vpp = 0;
-
- i365_set_socket (&socket, &state);
-}
-
-int pcmcia_on (void)
-{
- u_int rc;
-
- debug ("Enable PCMCIA " PCMCIA_SLOT_MSG "\n");
-
- rc = i82365_init();
- if (rc)
- goto exit;
-
- rc = check_ide_device(0);
- if (rc == 0)
- goto exit;
-
- i82365_exit();
-
-exit:
- return rc;
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-int pcmcia_off (void)
-{
- printf ("Disable PCMCIA " PCMCIA_SLOT_MSG "\n");
-
- i82365_exit();
-
- return 0;
-}
-#endif
-
-/*======================================================================
-
- Debug stuff
-
-======================================================================*/
-
-#ifdef DEBUG
-static void i82365_dump_regions (pci_dev_t dev)
-{
- u_int tmp[2];
- u_int *mem = (void *) socket.cb_phys;
- u_char *cis = (void *) CFG_PCMCIA_MEM_ADDR;
- u_char *ide = (void *) (CFG_ATA_BASE_ADDR + CFG_ATA_REG_OFFSET);
-
- pci_read_config_dword (dev, 0x00, tmp + 0);
- pci_read_config_dword (dev, 0x80, tmp + 1);
-
- printf ("PCI CONF: %08X ... %08X\n",
- tmp[0], tmp[1]);
- printf ("PCI MEM: ... %08X ... %08X\n",
- mem[0x8 / 4], mem[0x800 / 4]);
- printf ("CIS: ...%c%c%c%c%c%c%c%c...\n",
- cis[0x38], cis[0x3a], cis[0x3c], cis[0x3e],
- cis[0x40], cis[0x42], cis[0x44], cis[0x48]);
- printf ("CIS CONF: %02X %02X %02X ...\n",
- cis[0x200], cis[0x202], cis[0x204]);
- printf ("IDE: %02X %02X %02X %02X %02X %02X %02X %02X\n",
- ide[0], ide[1], ide[2], ide[3],
- ide[4], ide[5], ide[6], ide[7]);
-}
-#endif /* DEBUG */
-
-#endif /* CONFIG_I82365 */
diff --git a/board/cpc45/plx9030.c b/board/cpc45/plx9030.c
deleted file mode 100644
index 99ec39af7a..0000000000
--- a/board/cpc45/plx9030.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/* Plx9030.c - system configuration module for PLX9030 PCI to Local Bus Bridge */
-/*
- * (C) Copyright 2002-2003
- * Josef Wagner, MicroSys GmbH, wagner@microsys.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 Modification by
- * ------- ---------------------------------------------- ---
- * 30sep02 converted from VxWorks to LINUX wa
-*/
-
-
-/*
-DESCRIPTION
-
-This is the configuration module for the PLX9030 PCI to Local Bus Bridge.
-It configures the Chip select lines for SRAM (CS0), ST16C552 (CS1,CS2), Display and local
-registers (CS3) on CPC45.
-*/
-
-/* includes */
-
-#include <common.h>
-#include <malloc.h>
-#include <net.h>
-#include <asm/io.h>
-#include <pci.h>
-
-/* imports */
-
-
-/* defines */
-#define PLX9030_VENDOR_ID 0x10B5
-#define PLX9030_DEVICE_ID 0x9030
-
-#undef PLX_DEBUG
-
-/* PLX9030 register offsets */
-#define P9030_LAS0RR 0x00
-#define P9030_LAS1RR 0x04
-#define P9030_LAS2RR 0x08
-#define P9030_LAS3RR 0x0c
-#define P9030_EROMRR 0x10
-#define P9030_LAS0BA 0x14
-#define P9030_LAS1BA 0x18
-#define P9030_LAS2BA 0x1c
-#define P9030_LAS3BA 0x20
-#define P9030_EROMBA 0x24
-#define P9030_LAS0BRD 0x28
-#define P9030_LAS1BRD 0x2c
-#define P9030_LAS2BRD 0x30
-#define P9030_LAS3BRD 0x34
-#define P9030_EROMBRD 0x38
-#define P9030_CS0BASE 0x3C
-#define P9030_CS1BASE 0x40
-#define P9030_CS2BASE 0x44
-#define P9030_CS3BASE 0x48
-#define P9030_INTCSR 0x4c
-#define P9030_CNTRL 0x50
-#define P9030_GPIOC 0x54
-
-/* typedefs */
-
-
-/* locals */
-
-static struct pci_device_id supported[] = {
- { PLX9030_VENDOR_ID, PLX9030_DEVICE_ID },
- { }
-};
-
-/* forward declarations */
-void sysOutLong(ulong address, ulong value);
-
-
-/***************************************************************************
-*
-* Plx9030Init - init CS0..CS3 for CPC45
-*
-*
-* RETURNS: N/A
-*/
-
-void Plx9030Init (void)
-{
- pci_dev_t devno;
- ulong membaseCsr; /* base address of device memory space */
- int idx = 0; /* general index */
-
-
- /* find plx9030 device */
-
- if ((devno = pci_find_devices(supported, idx++)) < 0)
- {
- printf("No PLX9030 device found !!\n");
- return;
- }
-
-
-#ifdef PLX_DEBUG
- printf("PLX 9030 device found ! devno = 0x%x\n",devno);
-#endif
-
- membaseCsr = PCI_PLX9030_MEMADDR;
-
- /* set base address */
- pci_write_config_dword(devno, PCI_BASE_ADDRESS_0, membaseCsr);
-
- /* enable mapped memory and IO addresses */
- pci_write_config_dword(devno,
- PCI_COMMAND,
- PCI_COMMAND_MEMORY |
- PCI_COMMAND_MASTER);
-
-
- /* configure GBIOC */
- sysOutLong((membaseCsr + P9030_GPIOC), 0x00000FC0); /* CS2/CS3 enable */
-
- /* configure CS0 (SRAM) */
- sysOutLong((membaseCsr + P9030_LAS0BA), 0x00000001); /* enable space base */
- sysOutLong((membaseCsr + P9030_LAS0RR), 0x0FE00000); /* 2 MByte */
- sysOutLong((membaseCsr + P9030_LAS0BRD), 0x51928900); /* 4 wait states */
- sysOutLong((membaseCsr + P9030_CS0BASE), 0x00100001); /* enable 2 MByte */
- /* remap CS0 (SRAM) */
- pci_write_config_dword(devno, PCI_BASE_ADDRESS_2, SRAM_BASE);
-
- /* configure CS1 (ST16552 / CHAN A) */
- sysOutLong((membaseCsr + P9030_LAS1BA), 0x00400001); /* enable space base */
- sysOutLong((membaseCsr + P9030_LAS1RR), 0x0FFFFF00); /* 256 byte */
- sysOutLong((membaseCsr + P9030_LAS1BRD), 0x55122900); /* 4 wait states */
- sysOutLong((membaseCsr + P9030_CS1BASE), 0x00400081); /* enable 256 Byte */
- /* remap CS1 (ST16552 / CHAN A) */
- /* remap CS1 (ST16552 / CHAN A) */
- pci_write_config_dword(devno, PCI_BASE_ADDRESS_3, ST16552_A_BASE);
-
- /* configure CS2 (ST16552 / CHAN B) */
- sysOutLong((membaseCsr + P9030_LAS2BA), 0x00800001); /* enable space base */
- sysOutLong((membaseCsr + P9030_LAS2RR), 0x0FFFFF00); /* 256 byte */
- sysOutLong((membaseCsr + P9030_LAS2BRD), 0x55122900); /* 4 wait states */
- sysOutLong((membaseCsr + P9030_CS2BASE), 0x00800081); /* enable 256 Byte */
- /* remap CS2 (ST16552 / CHAN B) */
- pci_write_config_dword(devno, PCI_BASE_ADDRESS_4, ST16552_B_BASE);
-
- /* configure CS3 (BCSR) */
- sysOutLong((membaseCsr + P9030_LAS3BA), 0x00C00001); /* enable space base */
- sysOutLong((membaseCsr + P9030_LAS3RR), 0x0FFFFF00); /* 256 byte */
- sysOutLong((membaseCsr + P9030_LAS3BRD), 0x55357A80); /* 9 wait states */
- sysOutLong((membaseCsr + P9030_CS3BASE), 0x00C00081); /* enable 256 Byte */
- /* remap CS3 (DISPLAY and BCSR) */
- pci_write_config_dword(devno, PCI_BASE_ADDRESS_5, BCSR_BASE);
-}
-
-void sysOutLong(ulong address, ulong value)
-{
- *(ulong*)address = cpu_to_le32(value);
-}
diff --git a/board/cpc45/u-boot.lds b/board/cpc45/u-boot.lds
deleted file mode 100644
index 9ea26aa265..0000000000
--- a/board/cpc45/u-boot.lds
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * 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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/cpu86/Makefile b/board/cpu86/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/cpu86/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cpu86/config.mk b/board/cpu86/config.mk
deleted file mode 100644
index 00354c46bd..0000000000
--- a/board/cpu86/config.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# (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
-#
-
-#
-# CPU86 boards
-#
-
-# This should be equal to the CFG_FLASH_BASE define in config_CPU86.h
-# for the "final" configuration, with U-Boot in flash, or the address
-# in RAM where U-Boot is loaded at for debugging.
-#
-
-ifeq ($(CONFIG_BOOT_ROM),y)
- TEXT_BASE := 0xFF800000
- PLATFORM_CPPFLAGS += -DCONFIG_BOOT_ROM
-else
- TEXT_BASE := 0xFF000000
-endif
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/cpu86/cpu86.c b/board/cpu86/cpu86.c
deleted file mode 100644
index 3eb5b35426..0000000000
--- a/board/cpu86/cpu86.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * (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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include "cpu86.h"
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII COL */
- /* PA30 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII CRS */
- /* PA29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 MII TX_ER */
- /* PA28 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 MII TX_EN */
- /* PA27 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII RX_DV */
- /* PA26 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII RX_ER */
- /* PA25 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII MDIO */
- /* PA24 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII MDC */
- /* PA23 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII MDIO */
- /* PA22 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII MDC */
- /* PA21 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[3] */
- /* PA20 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[2] */
- /* PA19 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[1] */
- /* PA18 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[0] */
- /* PA17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[0] */
- /* PA16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[1] */
- /* PA15 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[2] */
- /* PA14 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[3] */
- /* PA13 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII TXSL1 */
- /* PA12 */ { 1, 0, 0, 1, 0, 1 }, /* FCC2 MII TXSL0 */
- /* PA11 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII TXSL1 */
- /* PA10 */ { 1, 0, 0, 1, 0, 1 }, /* FCC1 MII TXSL0 */
- /* PA9 */ { 0, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PA8 */ { 0, 1, 0, 0, 0, 0 }, /* SMC2 RXD */
- /* PA7 */ { 0, 0, 0, 0, 0, 0 }, /* PA7 */
- /* PA6 */ { 1, 0, 0, 1, 0, 1 }, /* FCC2 MII PAUSE */
- /* PA5 */ { 1, 0, 0, 1, 0, 1 }, /* FCC1 MII PAUSE */
- /* PA4 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII PWRDN */
- /* PA3 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII PWRDN */
- /* PA2 */ { 0, 0, 0, 0, 0, 0 }, /* PA2 */
- /* PA1 */ { 1, 0, 0, 0, 0, 0 }, /* FCC2 MII MDINT */
- /* PA0 */ { 1, 0, 0, 1, 0, 0 } /* FCC1 MII MDINT */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { 0, 0, 0, 0, 0, 0 }, /* PB17 */
- /* PB16 */ { 0, 0, 0, 0, 0, 0 }, /* PB16 */
- /* PB15 */ { 0, 0, 0, 0, 0, 0 }, /* PB15 */
- /* PB14 */ { 0, 0, 0, 0, 0, 0 }, /* PB14 */
- /* PB13 */ { 0, 0, 0, 0, 0, 0 }, /* PB13 */
- /* PB12 */ { 0, 0, 0, 0, 0, 0 }, /* PB12 */
- /* PB11 */ { 0, 0, 0, 0, 0, 0 }, /* PB11 */
- /* PB10 */ { 0, 0, 0, 0, 0, 0 }, /* PB10 */
- /* PB9 */ { 0, 0, 0, 0, 0, 0 }, /* PB9 */
- /* PB8 */ { 0, 0, 0, 0, 0, 0 }, /* PB8 */
- /* PB7 */ { 0, 0, 0, 0, 0, 0 }, /* PB7 */
- /* PB6 */ { 0, 0, 0, 0, 0, 0 }, /* PB6 */
- /* PB5 */ { 0, 0, 0, 0, 0, 0 }, /* PB5 */
- /* PB4 */ { 0, 0, 0, 0, 0, 0 }, /* PB4 */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* PB3 */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* PB2 */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* PB1 */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* PB0 */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 0, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 0, 0, 0 }, /* PC30 */
- /* PC29 */ { 1, 0, 0, 0, 0, 0 }, /* SCC1 CTS */
- /* PC28 */ { 1, 0, 0, 0, 0, 0 }, /* SCC2 CTS */
- /* PC27 */ { 0, 0, 0, 0, 0, 0 }, /* PC27 */
- /* PC26 */ { 0, 0, 0, 0, 0, 0 }, /* PC26 */
- /* PC25 */ { 0, 0, 0, 0, 0, 0 }, /* PC25 */
- /* PC24 */ { 0, 0, 0, 0, 0, 0 }, /* PC24 */
- /* PC23 */ { 0, 0, 0, 0, 0, 0 }, /* FDC37C78 DACFD */
- /* PC22 */ { 0, 0, 0, 0, 0, 0 }, /* FDC37C78 DNFD */
- /* PC21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RX_CLK */
- /* PC20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII TX_CLK */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_CLK */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII TX_CLK */
- /* PC17 */ { 0, 0, 0, 0, 0, 0 }, /* PC17 */
- /* PC16 */ { 0, 0, 0, 0, 0, 0 }, /* PC16 */
- /* PC15 */ { 0, 0, 0, 0, 0, 0 }, /* PC15 */
- /* PC14 */ { 0, 0, 0, 0, 0, 0 }, /* PC14 */
- /* PC13 */ { 0, 0, 0, 0, 0, 0 }, /* PC13 */
- /* PC12 */ { 0, 0, 0, 0, 0, 0 }, /* PC12 */
- /* PC11 */ { 0, 0, 0, 0, 0, 0 }, /* PC11 */
- /* PC10 */ { 0, 0, 0, 0, 0, 0 }, /* PC10 */
- /* PC9 */ { 0, 0, 0, 0, 0, 0 }, /* FC9 */
- /* PC8 */ { 0, 0, 0, 0, 0, 0 }, /* PC8 */
- /* PC7 */ { 0, 0, 0, 0, 0, 0 }, /* PC7 */
- /* PC6 */ { 0, 0, 0, 0, 0, 0 }, /* PC6 */
- /* PC5 */ { 0, 0, 0, 0, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 0, 0, 0 }, /* PC4 */
- /* PC3 */ { 0, 0, 0, 0, 0, 0 }, /* PC3 */
- /* PC2 */ { 0, 0, 0, 0, 0, 0 }, /* PC2 */
- /* PC1 */ { 0, 0, 0, 0, 0, 0 }, /* PC1 */
- /* PC0 */ { 0, 0, 0, 0, 0, 0 }, /* FDC37C78 DRQFD */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 RXD */
- /* PD30 */ { 1, 1, 1, 1, 0, 0 }, /* SCC1 TXD */
- /* PD29 */ { 1, 0, 0, 1, 0, 0 }, /* SCC1 RTS */
- /* PD28 */ { 1, 1, 0, 0, 0, 0 }, /* SCC2 RXD */
- /* PD27 */ { 1, 1, 0, 1, 0, 0 }, /* SCC2 TXD */
- /* PD26 */ { 1, 0, 0, 1, 0, 0 }, /* SCC2 RTS */
- /* PD25 */ { 0, 0, 0, 0, 0, 0 }, /* PD25 */
- /* PD24 */ { 0, 0, 0, 0, 0, 0 }, /* PD24 */
- /* PD23 */ { 0, 0, 0, 0, 0, 0 }, /* PD23 */
- /* PD22 */ { 0, 0, 0, 0, 0, 0 }, /* PD22 */
- /* PD21 */ { 0, 0, 0, 0, 0, 0 }, /* PD21 */
- /* PD20 */ { 0, 0, 0, 0, 0, 0 }, /* PD20 */
- /* PD19 */ { 0, 0, 0, 0, 0, 0 }, /* PD19 */
- /* PD18 */ { 0, 0, 0, 0, 0, 0 }, /* PD18 */
- /* PD17 */ { 0, 0, 0, 0, 0, 0 }, /* PD17 */
- /* PD16 */ { 0, 0, 0, 0, 0, 0 }, /* PD16 */
-#if defined(CONFIG_SOFT_I2C)
- /* PD15 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SDA */
- /* PD14 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#else /* normal I/O port pins */
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#endif
-#endif
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PD8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PD7 */ { 0, 0, 0, 0, 0, 0 }, /* PD7 */
- /* PD6 */ { 0, 0, 0, 0, 0, 0 }, /* PD6 */
- /* PD5 */ { 0, 0, 0, 0, 0, 0 }, /* PD5 */
- /* PD4 */ { 0, 0, 0, 0, 0, 0 }, /* PD4 */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* PD3 */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* PD2 */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* PD1 */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* PD0 */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
- printf ("Board: CPU86 (Rev %02x)\n", CPU86_REV);
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
- ulong orx, volatile uchar * base)
-{
- volatile uchar c = 0xff;
- volatile uint *sdmr_ptr;
- volatile uint *orx_ptr;
- ulong maxsize, size;
- int i;
-
- /* We must be able to test a location outsize the maximum legal size
- * to find out THAT we are outside; but this address still has to be
- * mapped by the controller. That means, that the initial mapping has
- * to be (at least) twice as large as the maximum expected size.
- */
- maxsize = (1 + (~orx | 0x7fff)) / 2;
-
- /* Since CFG_SDRAM_BASE is always 0 (??), we assume that
- * we are configuring CS1 if base != 0
- */
- sdmr_ptr = &memctl->memc_psdmr;
- orx_ptr = &memctl->memc_or2;
-
- *orx_ptr = orx;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- *sdmr_ptr = sdmr | PSDMR_OP_PREA;
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_MRW;
- *(base + CFG_MRS_OFFS) = c; /* setting MR on address lines */
-
- *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *base = c;
-
- size = get_ram_size((long *)base, maxsize);
-
- *orx_ptr = orx | ~(size - 1);
-
- return (size);
-}
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CFG_RAMBOOT
- ulong size8, size9;
-#endif
- long psize;
-
- psize = 32 * 1024 * 1024;
-
- memctl->memc_mptpr = CFG_MPTPR;
- memctl->memc_psrt = CFG_PSRT;
-
-#ifndef CFG_RAMBOOT
- /* 60x SDRAM setup:
- */
- size8 = try_init (memctl, CFG_PSDMR_8COL, CFG_OR2_8COL,
- (uchar *) CFG_SDRAM_BASE);
- size9 = try_init (memctl, CFG_PSDMR_9COL, CFG_OR2_9COL,
- (uchar *) CFG_SDRAM_BASE);
-
- if (size8 < size9) {
- psize = size9;
- printf ("(60x:9COL) ");
- } else {
- psize = try_init (memctl, CFG_PSDMR_8COL, CFG_OR2_8COL,
- (uchar *) CFG_SDRAM_BASE);
- printf ("(60x:8COL) ");
- }
-
-#endif /* CFG_RAMBOOT */
-
- icache_enable ();
-
- return (psize);
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_DOC)
-extern void doc_probe (ulong physadr);
-void doc_init (void)
-{
- doc_probe (CFG_DOC_BASE);
-}
-#endif
diff --git a/board/cpu86/cpu86.h b/board/cpu86/cpu86.h
deleted file mode 100644
index cf7852cefd..0000000000
--- a/board/cpu86/cpu86.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef __BOARD_CPU86__
-#define __BOARD_CPU86__
-
-#include <config.h>
-
-#define REG8(x) (*(volatile unsigned char *)(x))
-
-/* CPU86 register definitions */
-#define CPU86_VME_EAC REG8(CFG_BCRS_BASE + 0x00)
-#define CPU86_VME_SAC REG8(CFG_BCRS_BASE + 0x01)
-#define CPU86_VME_MAC REG8(CFG_BCRS_BASE + 0x02)
-#define CPU86_BCR REG8(CFG_BCRS_BASE + 0x03)
-#define CPU86_BSR REG8(CFG_BCRS_BASE + 0x04)
-#define CPU86_WDOG_RPORT REG8(CFG_BCRS_BASE + 0x05)
-#define CPU86_MBOX_IRQ REG8(CFG_BCRS_BASE + 0x04)
-#define CPU86_REV REG8(CFG_BCRS_BASE + 0x07)
-#define CPU86_VME_IRQMASK REG8(CFG_BCRS_BASE + 0x80)
-#define CPU86_VME_IRQSTATUS REG8(CFG_BCRS_BASE + 0x81)
-#define CPU86_LOCAL_IRQMASK REG8(CFG_BCRS_BASE + 0x82)
-#define CPU86_LOCAL_IRQSTATUS REG8(CFG_BCRS_BASE + 0x83)
-#define CPU86_PMCL_IRQSTATUS REG8(CFG_BCRS_BASE + 0x84)
-
-/* Board Control Register bits */
-#define CPU86_BCR_FWPT 0x01
-#define CPU86_BCR_FWRE 0x02
-
-#endif /* __BOARD_CPU86__ */
diff --git a/board/cpu86/flash.c b/board/cpu86/flash.c
deleted file mode 100644
index 1535a6b48f..0000000000
--- a/board/cpu86/flash.c
+++ /dev/null
@@ -1,615 +0,0 @@
-/*
- * (C) Copyright 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for Intel devices
- *
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-#include "cpu86.h"
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_int_get_size (volatile unsigned long *baseaddr,
- flash_info_t * info)
-{
- short i;
- unsigned long flashtest_h, flashtest_l;
-
- info->sector_count = info->size = 0;
- info->flash_id = FLASH_UNKNOWN;
-
- /* Write identify command sequence and test FLASH answer
- */
- baseaddr[0] = 0x00900090;
- baseaddr[1] = 0x00900090;
-
- flashtest_h = baseaddr[0]; /* manufacturer ID */
- flashtest_l = baseaddr[1];
-
- if (flashtest_h != INTEL_MANUFACT || flashtest_l != INTEL_MANUFACT)
- return (0); /* no or unknown flash */
-
- flashtest_h = baseaddr[2]; /* device ID */
- flashtest_l = baseaddr[3];
-
- if (flashtest_h != flashtest_l)
- return (0);
-
- switch (flashtest_h) {
- case INTEL_ID_28F160C3B:
- info->flash_id = FLASH_28F160C3B;
- info->sector_count = 39;
- info->size = 0x00800000; /* 4 * 2 MB = 8 MB */
- break;
- case INTEL_ID_28F160F3B:
- info->flash_id = FLASH_28F160F3B;
- info->sector_count = 39;
- info->size = 0x00800000; /* 4 * 2 MB = 8 MB */
- break;
- default:
- return (0); /* no or unknown flash */
- }
-
- info->flash_id |= INTEL_MANUFACT << 16; /* set manufacturer offset */
-
- if (info->flash_id & FLASH_BTYPE) {
- volatile unsigned long *tmp = baseaddr;
-
- /* set up sector start adress table (bottom sector type)
- * AND unlock the sectors (if our chip is 160C3)
- */
- for (i = 0; i < info->sector_count; i++) {
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F160C3B) {
- tmp[0] = 0x00600060;
- tmp[1] = 0x00600060;
- tmp[0] = 0x00D000D0;
- tmp[1] = 0x00D000D0;
- }
- info->start[i] = (uint) tmp;
- tmp += i < 8 ? 0x2000 : 0x10000; /* pointer arith */
- }
- }
-
- memset (info->protect, 0, info->sector_count);
-
- baseaddr[0] = 0x00FF00FF;
- baseaddr[1] = 0x00FF00FF;
-
- return (info->size);
-}
-
-static ulong flash_amd_get_size (vu_char *addr, flash_info_t *info)
-{
- short i;
- uchar vendor, devid;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x90;
-
- udelay(1000);
-
- vendor = addr[0];
- devid = addr[1] & 0xff;
-
- /* only support AMD */
- if (vendor != 0x01) {
- return 0;
- }
-
- vendor &= 0xf;
- devid &= 0xff;
-
- if (devid == AMD_ID_F040B) {
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 8;
- info->size = info->sector_count * 0x10000;
- }
- else if (devid == AMD_ID_F080B) {
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 16;
- info->size = 4 * info->sector_count * 0x10000;
- }
- else if (devid == AMD_ID_F016D) {
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 32;
- info->size = 4 * info->sector_count * 0x10000;
- }
- else {
- printf ("## Unknown Flash Type: %02x\n", devid);
- return 0;
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* sector base address */
- info->start[i] = base + i * (info->size / info->sector_count);
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (vu_char *)info->start[0];
- addr[0] = 0xF0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size_b0 = 0;
- unsigned long size_b1 = 0;
- int i;
-
- /* Init: no FLASHes known
- */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Disable flash protection */
- CPU86_BCR |= (CPU86_BCR_FWPT | CPU86_BCR_FWRE);
-
- /* Static FLASH Bank configuration here (only one bank) */
-
- size_b0 = flash_int_get_size ((ulong *) CFG_FLASH_BASE, &flash_info[0]);
- size_b1 = flash_amd_get_size ((uchar *) CFG_BOOTROM_BASE, &flash_info[1]);
-
- if (size_b0 > 0 || size_b1 > 0) {
-
- printf("(");
-
- if (size_b0 > 0) {
- puts ("Bank#1 - ");
- print_size (size_b0, (size_b1 > 0) ? ", " : ") ");
- }
-
- if (size_b1 > 0) {
- puts ("Bank#2 - ");
- print_size (size_b1, ") ");
- }
- }
- else {
- printf ("## No FLASH found.\n");
- return 0;
- }
- /* protect monitor and environment sectors
- */
-
-#if CFG_MONITOR_BASE >= CFG_BOOTROM_BASE
- if (size_b1) {
- /* If U-Boot is booted from ROM the CFG_MONITOR_BASE > CFG_FLASH_BASE
- * but we shouldn't protect it.
- */
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1, &flash_info[1]
- );
- }
-#else
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]
- );
-#endif
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# if CFG_ENV_ADDR >= CFG_BOOTROM_BASE
- if (size_b1) {
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[1]);
- }
-# else
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-# endif
-#endif
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch ((info->flash_id >> 16) & 0xff) {
- case 0x89:
- printf ("INTEL ");
- break;
- case 0x1:
- printf ("AMD ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F160C3B:
- printf ("28F160C3B (16 Mbit, bottom sector)\n");
- break;
- case FLASH_28F160F3B:
- printf ("28F160F3B (16 Mbit, bottom sector)\n");
- break;
- case AMD_ID_F040B:
- printf ("AM29F040B (4 Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size < 0x100000)
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
- else
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- vu_char *addr = (vu_char *)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /* Check the type of erased flash
- */
- if (info->flash_id >> 16 == 0x1) {
- /* Erase AMD flash
- */
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x80;
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_char *)(info->start[sect]);
- addr[0] = 0x30;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto AMD_DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_char *)(info->start[l_sect]);
- while ((addr[0] & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
-AMD_DONE:
- /* reset to read mode */
- addr = (volatile unsigned char *)info->start[0];
- addr[0] = 0xF0; /* reset bank */
-
- } else {
- /* Erase Intel flash
- */
-
- /* Start erase on unprotected sectors
- */
- for (sect = s_first; sect <= s_last; sect++) {
- volatile ulong *addr =
- (volatile unsigned long *) info->start[sect];
-
- start = get_timer (0);
- last = start;
- if (info->protect[sect] == 0) {
- /* Disable interrupts which might cause a timeout here
- */
- flag = disable_interrupts ();
-
- /* Erase the block
- */
- addr[0] = 0x00200020;
- addr[1] = 0x00200020;
- addr[0] = 0x00D000D0;
- addr[1] = 0x00D000D0;
-
- /* re-enable interrupts if necessary
- */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms
- */
- udelay (1000);
-
- last = start;
- while ((addr[0] & 0x00800080) != 0x00800080 ||
- (addr[1] & 0x00800080) != 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout (erase suspended!)\n");
- /* Suspend erase
- */
- addr[0] = 0x00B000B0;
- addr[1] = 0x00B000B0;
- goto DONE;
- }
- /* show that we're waiting
- */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
- if (addr[0] & 0x00220022 || addr[1] & 0x00220022) {
- printf ("*** ERROR: erase failed!\n");
- goto DONE;
- }
- }
- /* Clear status register and reset to read mode
- */
- addr[0] = 0x00500050;
- addr[1] = 0x00500050;
- addr[0] = 0x00FF00FF;
- addr[1] = 0x00FF00FF;
- }
- }
-
- printf (" done\n");
-
-DONE:
- return 0;
-}
-
-static int write_word (flash_info_t *, volatile unsigned long *, ulong);
-static int write_byte (flash_info_t *info, ulong dest, uchar data);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong v;
- int i, l, rc, cc = cnt, res = 0;
-
- if (info->flash_id >> 16 == 0x1) {
-
- /* Write to AMD 8-bit flash
- */
- while (cnt > 0) {
- if ((rc = write_byte(info, addr, *src)) != 0) {
- return (rc);
- }
- addr++;
- src++;
- cnt--;
- }
-
- return (0);
- } else {
-
- /* Write to Intel 64-bit flash
- */
- for (v=0; cc > 0; addr += 4, cc -= 4 - l) {
- l = (addr & 3);
- addr &= ~3;
-
- for (i = 0; i < 4; i++) {
- v = (v << 8) + (i < l || i - l >= cc ?
- *((unsigned char *) addr + i) : *src++);
- }
-
- if ((res = write_word (info, (volatile unsigned long *) addr, v)) != 0)
- break;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, volatile unsigned long *addr,
- ulong data)
-{
- int flag, res = 0;
- ulong start;
-
- /* Check if Flash is (sufficiently) erased
- */
- if ((*addr & data) != data)
- return (2);
-
- /* Disable interrupts which might cause a timeout here
- */
- flag = disable_interrupts ();
-
- *addr = 0x00400040;
- *addr = data;
-
- /* re-enable interrupts if necessary
- */
- if (flag)
- enable_interrupts ();
-
- start = get_timer (0);
- while ((*addr & 0x00800080) != 0x00800080) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- /* Suspend program
- */
- *addr = 0x00B000B0;
- res = 1;
- goto OUT;
- }
- }
-
- if (*addr & 0x00220022) {
- printf ("*** ERROR: program failed!\n");
- res = 1;
- }
-
-OUT:
- /* Clear status register and reset to read mode
- */
- *addr = 0x00500050;
- *addr = 0x00FF00FF;
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a byte to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte (flash_info_t *info, ulong dest, uchar data)
-{
- vu_char *addr = (vu_char *)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_char *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0xA0;
-
- *((vu_char *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_char *)dest) & 0x80) != (data & 0x80)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/cpu86/u-boot.lds b/board/cpu86/u-boot.lds
deleted file mode 100644
index 05f29c6ed0..0000000000
--- a/board/cpu86/u-boot.lds
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * (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/mpc8260/start.o (.text)
- *(.text)
- common/environment.o(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/cpu87/Makefile b/board/cpu87/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/cpu87/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cpu87/config.mk b/board/cpu87/config.mk
deleted file mode 100644
index 6384c78397..0000000000
--- a/board/cpu87/config.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# (C) Copyright 2001-2005
-# 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
-#
-
-#
-# CPU87 board
-#
-
-# This should be equal to the CFG_FLASH_BASE define in configs/cpu87.h
-# for the "final" configuration, with U-Boot in flash, or the address
-# in RAM where U-Boot is loaded at for debugging.
-#
-
-ifeq ($(CONFIG_BOOT_ROM),y)
- TEXT_BASE := 0xFF800000
- PLATFORM_CPPFLAGS += -DCONFIG_BOOT_ROM
-else
- TEXT_BASE := 0xFF000000
-endif
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/cpu87/cpu87.c b/board/cpu87/cpu87.c
deleted file mode 100644
index 9fecdd0dfe..0000000000
--- a/board/cpu87/cpu87.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * 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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include "cpu87.h"
-#include <pci.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII COL */
- /* PA30 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII CRS */
- /* PA29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 MII TX_ER */
- /* PA28 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 MII TX_EN */
- /* PA27 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII RX_DV */
- /* PA26 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII RX_ER */
- /* PA25 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII MDIO */
- /* PA24 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII MDC */
- /* PA23 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII MDIO */
- /* PA22 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII MDC */
- /* PA21 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[3] */
- /* PA20 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[2] */
- /* PA19 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[1] */
- /* PA18 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[0] */
- /* PA17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[0] */
- /* PA16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[1] */
- /* PA15 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[2] */
- /* PA14 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[3] */
- /* PA13 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII TXSL1 */
- /* PA12 */ { 1, 0, 0, 1, 0, 1 }, /* FCC2 MII TXSL0 */
- /* PA11 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII TXSL1 */
- /* PA10 */ { 1, 0, 0, 1, 0, 1 }, /* FCC1 MII TXSL0 */
- /* PA9 */ { 0, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PA8 */ { 0, 1, 0, 0, 0, 0 }, /* SMC2 RXD */
- /* PA7 */ { 0, 0, 0, 0, 0, 0 }, /* PA7 */
- /* PA6 */ { 1, 0, 0, 1, 0, 1 }, /* FCC2 MII PAUSE */
- /* PA5 */ { 1, 0, 0, 1, 0, 1 }, /* FCC1 MII PAUSE */
- /* PA4 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MII PWRDN */
- /* PA3 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 MII PWRDN */
- /* PA2 */ { 0, 0, 0, 0, 0, 0 }, /* PA2 */
- /* PA1 */ { 1, 0, 0, 0, 0, 0 }, /* FCC2 MII MDINT */
- /* PA0 */ { 1, 0, 0, 1, 0, 0 } /* FCC1 MII MDINT */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { 0, 0, 0, 0, 0, 0 }, /* PB17 */
- /* PB16 */ { 0, 0, 0, 0, 0, 0 }, /* PB16 */
- /* PB15 */ { 0, 0, 0, 0, 0, 0 }, /* PB15 */
- /* PB14 */ { 0, 0, 0, 0, 0, 0 }, /* PB14 */
- /* PB13 */ { 0, 0, 0, 0, 0, 0 }, /* PB13 */
- /* PB12 */ { 0, 0, 0, 0, 0, 0 }, /* PB12 */
- /* PB11 */ { 0, 0, 0, 0, 0, 0 }, /* PB11 */
- /* PB10 */ { 0, 0, 0, 0, 0, 0 }, /* PB10 */
- /* PB9 */ { 0, 0, 0, 0, 0, 0 }, /* PB9 */
- /* PB8 */ { 0, 0, 0, 0, 0, 0 }, /* PB8 */
- /* PB7 */ { 0, 0, 0, 0, 0, 0 }, /* PB7 */
- /* PB6 */ { 0, 0, 0, 0, 0, 0 }, /* PB6 */
- /* PB5 */ { 0, 0, 0, 0, 0, 0 }, /* PB5 */
- /* PB4 */ { 0, 0, 0, 0, 0, 0 }, /* PB4 */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* PB3 */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* PB2 */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* PB1 */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* PB0 */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 0, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 0, 0, 0 }, /* PC30 */
- /* PC29 */ { 1, 0, 0, 0, 0, 0 }, /* SCC1 CTS */
- /* PC28 */ { 1, 0, 0, 0, 0, 0 }, /* SCC2 CTS */
- /* PC27 */ { 0, 0, 0, 0, 0, 0 }, /* PC27 */
- /* PC26 */ { 0, 0, 0, 0, 0, 0 }, /* PC26 */
- /* PC25 */ { 0, 0, 0, 0, 0, 0 }, /* PC25 */
- /* PC24 */ { 0, 0, 0, 0, 0, 0 }, /* PC24 */
- /* PC23 */ { 0, 0, 0, 0, 0, 0 }, /* FDC37C78 DACFD */
- /* PC22 */ { 0, 0, 0, 0, 0, 0 }, /* FDC37C78 DNFD */
- /* PC21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RX_CLK */
- /* PC20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII TX_CLK */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_CLK */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII TX_CLK */
- /* PC17 */ { 0, 0, 0, 0, 0, 0 }, /* PC17 */
- /* PC16 */ { 0, 0, 0, 0, 0, 0 }, /* PC16 */
- /* PC15 */ { 0, 0, 0, 0, 0, 0 }, /* PC15 */
- /* PC14 */ { 0, 0, 0, 0, 0, 0 }, /* PC14 */
- /* PC13 */ { 0, 0, 0, 0, 0, 0 }, /* PC13 */
- /* PC12 */ { 0, 0, 0, 0, 0, 0 }, /* PC12 */
- /* PC11 */ { 0, 0, 0, 0, 0, 0 }, /* PC11 */
- /* PC10 */ { 0, 0, 0, 0, 0, 0 }, /* PC10 */
- /* PC9 */ { 0, 0, 0, 0, 0, 0 }, /* FC9 */
- /* PC8 */ { 0, 0, 0, 0, 0, 0 }, /* PC8 */
- /* PC7 */ { 0, 0, 0, 0, 0, 0 }, /* PC7 */
- /* PC6 */ { 0, 0, 0, 0, 0, 0 }, /* PC6 */
- /* PC5 */ { 0, 0, 0, 0, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 0, 0, 0 }, /* PC4 */
- /* PC3 */ { 0, 0, 0, 0, 0, 0 }, /* PC3 */
- /* PC2 */ { 0, 0, 0, 0, 0, 0 }, /* PC2 */
- /* PC1 */ { 0, 0, 0, 0, 0, 0 }, /* PC1 */
- /* PC0 */ { 0, 0, 0, 0, 0, 0 }, /* FDC37C78 DRQFD */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 RXD */
- /* PD30 */ { 1, 1, 1, 1, 0, 0 }, /* SCC1 TXD */
- /* PD29 */ { 1, 0, 0, 1, 0, 0 }, /* SCC1 RTS */
- /* PD28 */ { 1, 1, 0, 0, 0, 0 }, /* SCC2 RXD */
- /* PD27 */ { 1, 1, 0, 1, 0, 0 }, /* SCC2 TXD */
- /* PD26 */ { 1, 0, 0, 1, 0, 0 }, /* SCC2 RTS */
- /* PD25 */ { 0, 0, 0, 0, 0, 0 }, /* PD25 */
- /* PD24 */ { 0, 0, 0, 0, 0, 0 }, /* PD24 */
- /* PD23 */ { 0, 0, 0, 0, 0, 0 }, /* PD23 */
- /* PD22 */ { 0, 0, 0, 0, 0, 0 }, /* PD22 */
- /* PD21 */ { 0, 0, 0, 0, 0, 0 }, /* PD21 */
- /* PD20 */ { 0, 0, 0, 0, 0, 0 }, /* PD20 */
- /* PD19 */ { 0, 0, 0, 0, 0, 0 }, /* PD19 */
- /* PD18 */ { 0, 0, 0, 0, 0, 0 }, /* PD18 */
- /* PD17 */ { 0, 0, 0, 0, 0, 0 }, /* PD17 */
- /* PD16 */ { 0, 0, 0, 0, 0, 0 }, /* PD16 */
-#if defined(CONFIG_SOFT_I2C)
- /* PD15 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SDA */
- /* PD14 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#else /* normal I/O port pins */
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#endif
-#endif
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PD8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PD7 */ { 0, 0, 0, 0, 0, 0 }, /* PD7 */
- /* PD6 */ { 0, 0, 0, 0, 0, 0 }, /* PD6 */
- /* PD5 */ { 0, 0, 0, 0, 0, 0 }, /* PD5 */
- /* PD4 */ { 0, 0, 0, 0, 0, 0 }, /* PD4 */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* PD3 */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* PD2 */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* PD1 */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* PD0 */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
- printf ("Board: CPU87 (Rev %02x)\n", CPU86_REV & 0x7f);
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
- ulong orx, volatile uchar * base)
-{
- volatile uchar c = 0xff;
- volatile uint *sdmr_ptr;
- volatile uint *orx_ptr;
- ulong maxsize, size;
- int i;
-
- /* We must be able to test a location outsize the maximum legal size
- * to find out THAT we are outside; but this address still has to be
- * mapped by the controller. That means, that the initial mapping has
- * to be (at least) twice as large as the maximum expected size.
- */
- maxsize = (1 + (~orx | 0x7fff)) / 2;
-
- /* Since CFG_SDRAM_BASE is always 0 (??), we assume that
- * we are configuring CS1 if base != 0
- */
- sdmr_ptr = &memctl->memc_psdmr;
- orx_ptr = &memctl->memc_or2;
-
- *orx_ptr = orx;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- *sdmr_ptr = sdmr | PSDMR_OP_PREA;
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_MRW;
- *(base + CFG_MRS_OFFS) = c; /* setting MR on address lines */
-
- *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *base = c;
-
- size = get_ram_size((long *)base, maxsize);
-
- *orx_ptr = orx | ~(size - 1);
-
- return (size);
-}
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CFG_RAMBOOT
- ulong size8, size9, size10;
-#endif
- long psize;
-
- psize = 32 * 1024 * 1024;
-
- memctl->memc_mptpr = CFG_MPTPR;
- memctl->memc_psrt = CFG_PSRT;
-
-#ifndef CFG_RAMBOOT
- /* 60x SDRAM setup:
- */
- size8 = try_init (memctl, CFG_PSDMR_8COL, CFG_OR2_8COL,
- (uchar *) CFG_SDRAM_BASE);
-
- size9 = try_init (memctl, CFG_PSDMR_9COL, CFG_OR2_9COL,
- (uchar *) CFG_SDRAM_BASE);
-
- size10 = try_init (memctl, CFG_PSDMR_10COL, CFG_OR2_10COL,
- (uchar *) CFG_SDRAM_BASE);
-
- psize = max(size8,max(size9,size10));
-
- if (psize == size8) {
- psize = try_init (memctl, CFG_PSDMR_8COL, CFG_OR2_8COL,
- (uchar *) CFG_SDRAM_BASE);
- printf ("(60x:8COL) ");
- } else if (psize == size9){
- psize = try_init (memctl, CFG_PSDMR_9COL, CFG_OR2_9COL,
- (uchar *) CFG_SDRAM_BASE);
- printf ("(60x:9COL) ");
- } else
- printf ("(60x:10COL) ");
-
-#endif /* CFG_RAMBOOT */
-
- icache_enable ();
-
- return (psize);
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_DOC)
-extern void doc_probe (ulong physadr);
-void doc_init (void)
-{
- doc_probe (CFG_DOC_BASE);
-}
-#endif
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
- pci_mpc8250_init(&hose);
-}
-#endif
diff --git a/board/cpu87/cpu87.h b/board/cpu87/cpu87.h
deleted file mode 100644
index 5dbd4ae07d..0000000000
--- a/board/cpu87/cpu87.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef __BOARD_CPU87__
-#define __BOARD_CPU87__
-
-#include <config.h>
-
-#define REG8(x) (*(volatile unsigned char *)(x))
-
-/* CPU86 register definitions */
-#define CPU86_VME_EAC REG8(CFG_BCRS_BASE + 0x00)
-#define CPU86_VME_SAC REG8(CFG_BCRS_BASE + 0x01)
-#define CPU86_VME_MAC REG8(CFG_BCRS_BASE + 0x02)
-#define CPU86_BCR REG8(CFG_BCRS_BASE + 0x03)
-#define CPU86_BSR REG8(CFG_BCRS_BASE + 0x04)
-#define CPU86_WDOG_RPORT REG8(CFG_BCRS_BASE + 0x05)
-#define CPU86_MBOX_IRQ REG8(CFG_BCRS_BASE + 0x04)
-#define CPU86_REV REG8(CFG_BCRS_BASE + 0x07)
-#define CPU86_VME_IRQMASK REG8(CFG_BCRS_BASE + 0x80)
-#define CPU86_VME_IRQSTATUS REG8(CFG_BCRS_BASE + 0x81)
-#define CPU86_LOCAL_IRQMASK REG8(CFG_BCRS_BASE + 0x82)
-#define CPU86_LOCAL_IRQSTATUS REG8(CFG_BCRS_BASE + 0x83)
-#define CPU86_PMCL_IRQSTATUS REG8(CFG_BCRS_BASE + 0x84)
-
-/* Board Control Register bits */
-#define CPU86_BCR_FWPT 0x01
-#define CPU86_BCR_FWRE 0x02
-
-#endif /* __BOARD_CPU87__ */
diff --git a/board/cpu87/flash.c b/board/cpu87/flash.c
deleted file mode 100644
index 076c2f9192..0000000000
--- a/board/cpu87/flash.c
+++ /dev/null
@@ -1,624 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for Intel devices
- *
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-#include "cpu87.h"
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_int_get_size (volatile unsigned long *baseaddr,
- flash_info_t * info)
-{
- short i;
- unsigned long flashtest_h, flashtest_l;
-
- info->sector_count = info->size = 0;
- info->flash_id = FLASH_UNKNOWN;
-
- /* Write identify command sequence and test FLASH answer
- */
- baseaddr[0] = 0x00900090;
- baseaddr[1] = 0x00900090;
-
- flashtest_h = baseaddr[0]; /* manufacturer ID */
- flashtest_l = baseaddr[1];
-
- if (flashtest_h != INTEL_MANUFACT || flashtest_l != INTEL_MANUFACT)
- return (0); /* no or unknown flash */
-
- flashtest_h = baseaddr[2]; /* device ID */
- flashtest_l = baseaddr[3];
-
- if (flashtest_h != flashtest_l)
- return (0);
-
- switch (flashtest_h) {
- case INTEL_ID_28F160C3B:
- info->flash_id = FLASH_28F160C3B;
- info->sector_count = 39;
- info->size = 0x00800000; /* 4 * 2 MB = 8 MB */
- break;
- case INTEL_ID_28F160F3B:
- info->flash_id = FLASH_28F160F3B;
- info->sector_count = 39;
- info->size = 0x00800000; /* 4 * 2 MB = 8 MB */
- break;
- case INTEL_ID_28F640C3B:
- info->flash_id = FLASH_28F640C3B;
- info->sector_count = 135;
- info->size = 0x02000000; /* 16 * 2 MB = 32 MB */
- break;
- default:
- return (0); /* no or unknown flash */
- }
-
- info->flash_id |= INTEL_MANUFACT << 16; /* set manufacturer offset */
-
- if (info->flash_id & FLASH_BTYPE) {
- volatile unsigned long *tmp = baseaddr;
-
- /* set up sector start adress table (bottom sector type)
- * AND unlock the sectors (if our chip is 160C3)
- */
- for (i = 0; i < info->sector_count; i++) {
- if (((info->flash_id & FLASH_TYPEMASK) == FLASH_28F160C3B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F640C3B)) {
- tmp[0] = 0x00600060;
- tmp[1] = 0x00600060;
- tmp[0] = 0x00D000D0;
- tmp[1] = 0x00D000D0;
- }
- info->start[i] = (uint) tmp;
- tmp += i < 8 ? 0x2000 : 0x10000; /* pointer arith */
- }
- }
-
- memset (info->protect, 0, info->sector_count);
-
- baseaddr[0] = 0x00FF00FF;
- baseaddr[1] = 0x00FF00FF;
-
- return (info->size);
-}
-
-static ulong flash_amd_get_size (vu_char *addr, flash_info_t *info)
-{
- short i;
- uchar vendor, devid;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x90;
-
- udelay(1000);
-
- vendor = addr[0];
- devid = addr[1] & 0xff;
-
- /* only support AMD */
- if (vendor != 0x01) {
- return 0;
- }
-
- vendor &= 0xf;
- devid &= 0xff;
-
- if (devid == AMD_ID_F040B) {
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 8;
- info->size = info->sector_count * 0x10000;
- }
- else if (devid == AMD_ID_F080B) {
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 16;
- info->size = 4 * info->sector_count * 0x10000;
- }
- else if (devid == AMD_ID_F016D) {
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 32;
- info->size = 4 * info->sector_count * 0x10000;
- }
- else {
- printf ("## Unknown Flash Type: %02x\n", devid);
- return 0;
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* sector base address */
- info->start[i] = base + i * (info->size / info->sector_count);
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (vu_char *)info->start[0];
- addr[0] = 0xF0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size_b0 = 0;
- unsigned long size_b1 = 0;
- int i;
-
- /* Init: no FLASHes known
- */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Disable flash protection */
- CPU86_BCR |= (CPU86_BCR_FWPT | CPU86_BCR_FWRE);
-
- /* Static FLASH Bank configuration here (only one bank) */
-
- size_b0 = flash_int_get_size ((ulong *) CFG_FLASH_BASE, &flash_info[0]);
- size_b1 = flash_amd_get_size ((uchar *) CFG_BOOTROM_BASE, &flash_info[1]);
-
- if (size_b0 > 0 || size_b1 > 0) {
-
- printf("(");
-
- if (size_b0 > 0) {
- puts ("Bank#1 - ");
- print_size (size_b0, (size_b1 > 0) ? ", " : ") ");
- }
-
- if (size_b1 > 0) {
- puts ("Bank#2 - ");
- print_size (size_b1, ") ");
- }
- }
- else {
- printf ("## No FLASH found.\n");
- return 0;
- }
- /* protect monitor and environment sectors
- */
-
-#if CFG_MONITOR_BASE >= CFG_BOOTROM_BASE
- if (size_b1) {
- /* If U-Boot is booted from ROM the CFG_MONITOR_BASE > CFG_FLASH_BASE
- * but we shouldn't protect it.
- */
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1, &flash_info[1]
- );
- }
-#else
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]
- );
-#endif
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# if CFG_ENV_ADDR >= CFG_BOOTROM_BASE
- if (size_b1) {
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[1]);
- }
-# else
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-# endif
-#endif
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch ((info->flash_id >> 16) & 0xff) {
- case 0x89:
- printf ("INTEL ");
- break;
- case 0x1:
- printf ("AMD ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F160C3B:
- printf ("28F160C3B (16 Mbit, bottom sector)\n");
- break;
- case FLASH_28F160F3B:
- printf ("28F160F3B (16 Mbit, bottom sector)\n");
- break;
- case FLASH_28F640C3B:
- printf ("28F640C3B (64 M, bottom sector)\n");
- break;
- case AMD_ID_F040B:
- printf ("AM29F040B (4 Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size < 0x100000)
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
- else
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- vu_char *addr = (vu_char *)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /* Check the type of erased flash
- */
- if (info->flash_id >> 16 == 0x1) {
- /* Erase AMD flash
- */
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x80;
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_char *)(info->start[sect]);
- addr[0] = 0x30;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto AMD_DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_char *)(info->start[l_sect]);
- while ((addr[0] & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
-AMD_DONE:
- /* reset to read mode */
- addr = (volatile unsigned char *)info->start[0];
- addr[0] = 0xF0; /* reset bank */
-
- } else {
- /* Erase Intel flash
- */
-
- /* Start erase on unprotected sectors
- */
- for (sect = s_first; sect <= s_last; sect++) {
- volatile ulong *addr =
- (volatile unsigned long *) info->start[sect];
-
- start = get_timer (0);
- last = start;
- if (info->protect[sect] == 0) {
- /* Disable interrupts which might cause a timeout here
- */
- flag = disable_interrupts ();
-
- /* Erase the block
- */
- addr[0] = 0x00200020;
- addr[1] = 0x00200020;
- addr[0] = 0x00D000D0;
- addr[1] = 0x00D000D0;
-
- /* re-enable interrupts if necessary
- */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms
- */
- udelay (1000);
-
- last = start;
- while ((addr[0] & 0x00800080) != 0x00800080 ||
- (addr[1] & 0x00800080) != 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout (erase suspended!)\n");
- /* Suspend erase
- */
- addr[0] = 0x00B000B0;
- addr[1] = 0x00B000B0;
- goto DONE;
- }
- /* show that we're waiting
- */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
- if (addr[0] & 0x00220022 || addr[1] & 0x00220022) {
- printf ("*** ERROR: erase failed!\n");
- goto DONE;
- }
- }
- /* Clear status register and reset to read mode
- */
- addr[0] = 0x00500050;
- addr[1] = 0x00500050;
- addr[0] = 0x00FF00FF;
- addr[1] = 0x00FF00FF;
- }
- }
-
- printf (" done\n");
-
-DONE:
- return 0;
-}
-
-static int write_word (flash_info_t *, volatile unsigned long *, ulong);
-static int write_byte (flash_info_t *info, ulong dest, uchar data);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong v;
- int i, l, rc, cc = cnt, res = 0;
-
- if (info->flash_id >> 16 == 0x1) {
-
- /* Write to AMD 8-bit flash
- */
- while (cnt > 0) {
- if ((rc = write_byte(info, addr, *src)) != 0) {
- return (rc);
- }
- addr++;
- src++;
- cnt--;
- }
-
- return (0);
- } else {
-
- /* Write to Intel 64-bit flash
- */
- for (v=0; cc > 0; addr += 4, cc -= 4 - l) {
- l = (addr & 3);
- addr &= ~3;
-
- for (i = 0; i < 4; i++) {
- v = (v << 8) + (i < l || i - l >= cc ?
- *((unsigned char *) addr + i) : *src++);
- }
-
- if ((res = write_word (info, (volatile unsigned long *) addr, v)) != 0)
- break;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, volatile unsigned long *addr,
- ulong data)
-{
- int flag, res = 0;
- ulong start;
-
- /* Check if Flash is (sufficiently) erased
- */
- if ((*addr & data) != data)
- return (2);
-
- /* Disable interrupts which might cause a timeout here
- */
- flag = disable_interrupts ();
-
- *addr = 0x00400040;
- *addr = data;
-
- /* re-enable interrupts if necessary
- */
- if (flag)
- enable_interrupts ();
-
- start = get_timer (0);
- while ((*addr & 0x00800080) != 0x00800080) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- /* Suspend program
- */
- *addr = 0x00B000B0;
- res = 1;
- goto OUT;
- }
- }
-
- if (*addr & 0x00220022) {
- printf ("*** ERROR: program failed!\n");
- res = 1;
- }
-
-OUT:
- /* Clear status register and reset to read mode
- */
- *addr = 0x00500050;
- *addr = 0x00FF00FF;
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a byte to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte (flash_info_t *info, ulong dest, uchar data)
-{
- vu_char *addr = (vu_char *)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_char *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0xA0;
-
- *((vu_char *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_char *)dest) & 0x80) != (data & 0x80)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/cpu87/u-boot.lds b/board/cpu87/u-boot.lds
deleted file mode 100644
index fb7e665b67..0000000000
--- a/board/cpu87/u-boot.lds
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * (C) Copyright 2001-2005
- * 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/mpc8260/start.o (.text)
- *(.text)
- common/environment.o(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/cradle/Makefile b/board/cradle/Makefile
deleted file mode 100644
index 90a7907936..0000000000
--- a/board/cradle/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := cradle.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cradle/config.mk b/board/cradle/config.mk
deleted file mode 100644
index aa40388811..0000000000
--- a/board/cradle/config.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-TEXT_BASE = 0xa0f80000
-#TEXT_BASE = 0
diff --git a/board/cradle/cradle.c b/board/cradle/cradle.c
deleted file mode 100644
index 6d8d55570f..0000000000
--- a/board/cradle/cradle.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <asm/arch/pxa-regs.h>
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-
-/* local prototypes */
-void set_led (int led, int color);
-void error_code_halt (int code);
-int init_sio (int led, unsigned long base);
-inline void cradle_outb (unsigned short val, unsigned long base,
- unsigned long reg);
-inline unsigned char cradle_inb (unsigned long base, unsigned long reg);
-inline void sleep (int i);
-
-inline void
-/**********************************************************/
-sleep (int i)
-/**********************************************************/
-{
- while (i--) {
- udelay (1000000);
- }
-}
-
-void
-/**********************************************************/
-error_code_halt (int code)
-/**********************************************************/
-{
- while (1) {
- led_code (code, RED);
- sleep (1);
- led_code (0, OFF);
- sleep (1);
- }
-}
-
-void
-/**********************************************************/
-led_code (int code, int color)
-/**********************************************************/
-{
- int i;
-
- code &= 0xf; /* only 4 leds */
-
- for (i = 0; i < 4; i++) {
- if (code & (1 << i)) {
- set_led (i, color);
- } else {
- set_led (i, OFF);
- }
- }
-}
-
-void
-/**********************************************************/
-set_led (int led, int color)
-/**********************************************************/
-{
- int shift = led * 2;
- unsigned long mask = 0x3 << shift;
-
- CRADLE_LED_CLR_REG = mask; /* clear bits */
- CRADLE_LED_SET_REG = (color << shift); /* set bits */
- udelay (5000);
-}
-
-inline void
-/**********************************************************/
-cradle_outb (unsigned short val, unsigned long base, unsigned long reg)
-/**********************************************************/
-{
- *(volatile unsigned short *) (base + (reg * 2)) = val;
-}
-
-inline unsigned char
-/**********************************************************/
-cradle_inb (unsigned long base, unsigned long reg)
-/**********************************************************/
-{
- unsigned short val;
-
- val = *(volatile unsigned short *) (base + (reg * 2));
- return (val & 0xff);
-}
-
-int
-/**********************************************************/
-init_sio (int led, unsigned long base)
-/**********************************************************/
-{
- unsigned char val;
-
- set_led (led, YELLOW);
- val = cradle_inb (base, CRADLE_SIO_INDEX);
- val = cradle_inb (base, CRADLE_SIO_INDEX);
- if (val != 0) {
- set_led (led, RED);
- return -1;
- }
-
- /* map SCC2 to COM1 */
- cradle_outb (0x01, base, CRADLE_SIO_INDEX);
- cradle_outb (0x00, base, CRADLE_SIO_DATA);
-
- /* enable SCC2 extended regs */
- cradle_outb (0x40, base, CRADLE_SIO_INDEX);
- cradle_outb (0xa0, base, CRADLE_SIO_DATA);
-
- /* enable SCC2 clock multiplier */
- cradle_outb (0x51, base, CRADLE_SIO_INDEX);
- cradle_outb (0x04, base, CRADLE_SIO_DATA);
-
- /* enable SCC2 */
- cradle_outb (0x00, base, CRADLE_SIO_INDEX);
- cradle_outb (0x04, base, CRADLE_SIO_DATA);
-
- /* map SCC2 DMA to channel 0 */
- cradle_outb (0x4f, base, CRADLE_SIO_INDEX);
- cradle_outb (0x09, base, CRADLE_SIO_DATA);
-
- /* read ID from SIO to check operation */
- cradle_outb (0xe4, base, 0x3f8 + 0x3);
- val = cradle_inb (base, 0x3f8 + 0x0);
- if ((val & 0xf0) != 0x20) {
- set_led (led, RED);
- /* disable SCC2 */
- cradle_outb (0, base, CRADLE_SIO_INDEX);
- cradle_outb (0, base, CRADLE_SIO_DATA);
- return -1;
- }
- /* set back to bank 0 */
- cradle_outb (0, base, 0x3f8 + 0x3);
- set_led (led, GREEN);
- return 0;
-}
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int
-/**********************************************************/
-board_late_init (void)
-/**********************************************************/
-{
- return (0);
-}
-
-int
-/**********************************************************/
-board_init (void)
-/**********************************************************/
-{
- led_code (0xf, YELLOW);
-
- /* arch number of HHP Cradle */
- gd->bd->bi_arch_number = MACH_TYPE_HHP_CRADLE;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xa0000100;
-
- /* Init SIOs to enable SCC2 */
- udelay (100000); /* delay makes it look neat */
- init_sio (0, CRADLE_SIO1_PHYS);
- udelay (100000);
- init_sio (1, CRADLE_SIO2_PHYS);
- udelay (100000);
- init_sio (2, CRADLE_SIO3_PHYS);
- udelay (100000);
- set_led (3, GREEN);
-
- return 1;
-}
-
-int
-/**********************************************************/
-dram_init (void)
-/**********************************************************/
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
- gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
- gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
- gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
- gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
-
- return (PHYS_SDRAM_1_SIZE +
- PHYS_SDRAM_2_SIZE +
- PHYS_SDRAM_3_SIZE +
- PHYS_SDRAM_4_SIZE );
-}
diff --git a/board/cradle/flash.c b/board/cradle/flash.c
deleted file mode 100644
index f3f9a8ccea..0000000000
--- a/board/cradle/flash.c
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-
-#define FLASH_BANK_SIZE 0x400000
-#define MAIN_SECT_SIZE 0x20000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
- (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F128J3 & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- switch (i) {
- case 0:
- flashbase = PHYS_FLASH_1;
- break;
- case 1:
- flashbase = PHYS_FLASH_2;
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] =
- flashbase + j * MAIN_SECT_SIZE;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i, j;
-
- for (j = 0; j < CFG_MAX_FLASH_BANKS; j++) {
- switch (info->flash_id & FLASH_VENDMASK) {
- case (INTEL_MANUFACT & FLASH_VENDMASK):
- printf ("Intel: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (INTEL_ID_28F320J3A & FLASH_TYPEMASK):
- printf ("28F320J3A (32Mbit)\n");
- break;
- case (INTEL_ID_28F128J3 & FLASH_TYPEMASK):
- printf ("28F128J3 (128Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- info++;
- }
-
-Done: ;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- int rc = ERR_OK;
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (INTEL_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- if (info->protect[sect] == 0) { /* not protected */
- vu_short *addr = (vu_short *) (info->start[sect]);
-
- *addr = 0x20; /* erase setup */
- *addr = 0xD0; /* erase confirm */
-
- while ((*addr & 0x80) != 0x80) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- *addr = 0xB0; /* suspend erase */
- *addr = 0xFF; /* reset to read mode */
- rc = ERR_TIMOUT;
- goto outahere;
- }
- }
-
- /* clear status register command */
- *addr = 0x50;
- /* reset to read mode */
- *addr = 0xFF;
- }
- printf ("ok.\n");
- }
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
-outahere:
-
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
-
- if (flag)
- enable_interrupts ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_word (flash_info_t * info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short *) dest, val;
- int rc = ERR_OK;
- int flag;
-
- /* Check if Flash is (sufficiently) erased
- */
- if ((*addr & data) != data)
- return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
-
- /* clear status register command */
- *addr = 0x50;
-
- /* program set-up command */
- *addr = 0x40;
-
- /* latch address/data */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((val = *addr) & 0x80) != 0x80) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- rc = ERR_TIMOUT;
- /* suspend program command */
- *addr = 0xB0;
- goto outahere;
- }
- }
-
- if (val & 0x1A) { /* check for error */
- printf ("\nFlash write error %02x at address %08lx\n",
- (int) val, (unsigned long) dest);
- if (val & (1 << 3)) {
- printf ("Voltage range error.\n");
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (val & (1 << 1)) {
- printf ("Device protect error.\n");
- rc = ERR_PROTECTED;
- goto outahere;
- }
- if (val & (1 << 4)) {
- printf ("Programming error.\n");
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
-
-outahere:
- /* read array command */
- *addr = 0xFF;
-
- if (flag)
- enable_interrupts ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- ushort data;
- int l;
- int i, rc;
-
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
- for (; i < 2 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 2) {
- data = *((vu_short *) src);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- }
- for (; i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- return write_word (info, wp, data);
-}
diff --git a/board/cradle/lowlevel_init.S b/board/cradle/lowlevel_init.S
deleted file mode 100644
index 2fd307f1d0..0000000000
--- a/board/cradle/lowlevel_init.S
+++ /dev/null
@@ -1,515 +0,0 @@
-/*
- * Most of this taken from Redboot hal_platform_setup.h with cleanup
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-DRAM_SIZE: .long CFG_DRAM_SIZE
-
-/* wait for coprocessor write complete */
- .macro CPWAIT reg
- mrc p15,0,\reg,c2,c0,0
- mov \reg,\reg
- sub pc,pc,#4
- .endm
-
- .macro SET_LED val
- ldr r6, =CRADLE_LED_CLR_REG
- ldr r7, =0
- str r7, [r6]
- ldr r6, =CRADLE_LED_SET_REG
- ldr r7, =\val
- str r7, [r6]
- .endm
-
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
- /* Set up GPIO pins first */
-
- ldr r0, =GPSR0
- ldr r1, =CFG_GPSR0_VAL
- str r1, [r0]
-
- ldr r0, =GPSR1
- ldr r1, =CFG_GPSR1_VAL
- str r1, [r0]
-
- ldr r0, =GPSR2
- ldr r1, =CFG_GPSR2_VAL
- str r1, [r0]
-
- ldr r0, =GPCR0
- ldr r1, =CFG_GPCR0_VAL
- str r1, [r0]
-
- ldr r0, =GPCR1
- ldr r1, =CFG_GPCR1_VAL
- str r1, [r0]
-
- ldr r0, =GPCR2
- ldr r1, =CFG_GPCR2_VAL
- str r1, [r0]
-
- ldr r0, =GRER0
- ldr r1, =CFG_GRER0_VAL
- str r1, [r0]
-
- ldr r0, =GRER1
- ldr r1, =CFG_GRER1_VAL
- str r1, [r0]
-
- ldr r0, =GRER2
- ldr r1, =CFG_GRER2_VAL
- str r1, [r0]
-
- ldr r0, =GFER0
- ldr r1, =CFG_GFER0_VAL
- str r1, [r0]
-
- ldr r0, =GFER1
- ldr r1, =CFG_GFER1_VAL
- str r1, [r0]
-
- ldr r0, =GFER2
- ldr r1, =CFG_GFER2_VAL
- str r1, [r0]
-
- ldr r0, =GPDR0
- ldr r1, =CFG_GPDR0_VAL
- str r1, [r0]
-
- ldr r0, =GPDR1
- ldr r1, =CFG_GPDR1_VAL
- str r1, [r0]
-
- ldr r0, =GPDR2
- ldr r1, =CFG_GPDR2_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_L
- ldr r1, =CFG_GAFR0_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_U
- ldr r1, =CFG_GAFR0_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_L
- ldr r1, =CFG_GAFR1_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_U
- ldr r1, =CFG_GAFR1_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_L
- ldr r1, =CFG_GAFR2_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_U
- ldr r1, =CFG_GAFR2_U_VAL
- str r1, [r0]
-
- /* enable GPIO pins */
- ldr r0, =PSSR
- ldr r1, =CFG_PSSR_VAL
- str r1, [r0]
-
- SET_LED 1
-
- ldr r3, =MSC1 /* low - bank 2 Lubbock Registers / SRAM */
- ldr r2, =CFG_MSC1_VAL /* high - bank 3 Ethernet Controller */
- str r2, [r3] /* need to set MSC1 before trying to write to the HEX LEDs */
- ldr r2, [r3] /* need to read it back to make sure the value latches (see MSC section of manual) */
-
-
-/*********************************************************************
- Initlialize Memory Controller
-
- See PXA250 Operating System Developer's Guide
-
- pause for 200 uSecs- allow internal clocks to settle
- *Note: only need this if hard reset... doing it anyway for now
-*/
-
- @ Step 1
- @ ---- Wait 200 usec
- ldr r3, =OSCR @ reset the OS Timer Count to zero
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 @ really 0x2E1 is about 200usec, so 0x300 should be plenty
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
- SET_LED 2
-
-mem_init:
- @ get memory controller base address
- ldr r1, =MEMC_BASE
-
-
-@****************************************************************************
-@ Step 2
-@
-
- @ Step 2a
- @ write msc0, read back to ensure data latches
- @
- ldr r2, =CFG_MSC0_VAL
- str r2, [r1, #MSC0_OFFSET]
- ldr r2, [r1, #MSC0_OFFSET]
-
- @ write msc1
- ldr r2, =CFG_MSC1_VAL
- str r2, [r1, #MSC1_OFFSET]
- ldr r2, [r1, #MSC1_OFFSET]
-
- @ write msc2
- ldr r2, =CFG_MSC2_VAL
- str r2, [r1, #MSC2_OFFSET]
- ldr r2, [r1, #MSC2_OFFSET]
-
- @ Step 2b
- @ write mecr
- ldr r2, =CFG_MECR_VAL
- str r2, [r1, #MECR_OFFSET]
-
- @ write mcmem0
- ldr r2, =CFG_MCMEM0_VAL
- str r2, [r1, #MCMEM0_OFFSET]
-
- @ write mcmem1
- ldr r2, =CFG_MCMEM1_VAL
- str r2, [r1, #MCMEM1_OFFSET]
-
- @ write mcatt0
- ldr r2, =CFG_MCATT0_VAL
- str r2, [r1, #MCATT0_OFFSET]
-
- @ write mcatt1
- ldr r2, =CFG_MCATT1_VAL
- str r2, [r1, #MCATT1_OFFSET]
-
- @ write mcio0
- ldr r2, =CFG_MCIO0_VAL
- str r2, [r1, #MCIO0_OFFSET]
-
- @ write mcio1
- ldr r2, =CFG_MCIO1_VAL
- str r2, [r1, #MCIO1_OFFSET]
-
- /*SET_LED 3 */
-
- @ Step 2c
- @ fly-by-dma is defeatured on this part
- @ write flycnfg
- @ldr r2, =CFG_FLYCNFG_VAL
- @str r2, [r1, #FLYCNFG_OFFSET]
-
-/* FIXME Does this sequence really make sense */
-#ifdef REDBOOT_WAY
- @ Step 2d
- @ get the mdrefr settings
- ldr r3, =CFG_MDREFR_VAL
-
- @ extract DRI field (we need a valid DRI field)
- @
- ldr r2, =0xFFF
-
- @ valid DRI field in r3
- @
- and r3, r3, r2
-
- @ get the reset state of MDREFR
- @
- ldr r4, [r1, #MDREFR_OFFSET]
-
- @ clear the DRI field
- @
- bic r4, r4, r2
-
- @ insert the valid DRI field loaded above
- @
- orr r4, r4, r3
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ *Note: preserve the mdrefr value in r4 *
-
- /*SET_LED 4 */
-
-@****************************************************************************
-@ Step 3
-@
-@ NO SRAM
-
- mov pc, r10
-
-
-@****************************************************************************
-@ Step 4
-@
-
- @ Assumes previous mdrefr value in r4, if not then read current mdrefr
-
- @ clear the free-running clock bits
- @ (clear K0Free, K1Free, K2Free
- @
- bic r4, r4, #(0x00800000 | 0x01000000 | 0x02000000)
-
- @ set K0RUN for CPLD clock
- @
- orr r4, r4, #0x00002000
-
- @ set K1RUN if bank 0 installed
- @
- orr r4, r4, #0x00010000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
-
- @ deassert SLFRSH
- @
- bic r4, r4, #0x00400000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ assert E1PIN
- @
- orr r4, r4, #0x00008000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
- nop
- nop
-#else
- @ Step 2d
- @ get the mdrefr settings
- ldr r3, =CFG_MDREFR_VAL
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ Step 4
-
- @ set K0RUN for CPLD clock
- @
- orr r4, r4, #0x00002000
-
- @ set K1RUN for bank 0
- @
- orr r4, r4, #0x00010000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
-
- @ deassert SLFRSH
- @
- bic r4, r4, #0x00400000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ assert E1PIN
- @
- orr r4, r4, #0x00008000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
- nop
- nop
-#endif
-
- @ Step 4d
- @ fetch platform value of mdcnfg
- @
- ldr r2, =CFG_MDCNFG_VAL
-
- @ disable all sdram banks
- @
- bic r2, r2, #(MDCNFG_DE0 | MDCNFG_DE1)
- bic r2, r2, #(MDCNFG_DE2 | MDCNFG_DE3)
-
- @ program banks 0/1 for bus width
- @
- bic r2, r2, #MDCNFG_DWID0 @0=32-bit
-
- @ write initial value of mdcnfg, w/o enabling sdram banks
- @
- str r2, [r1, #MDCNFG_OFFSET]
-
- @ Step 4e
- @ pause for 200 uSecs
- @
- ldr r3, =OSCR @ reset the OS Timer Count to zero
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 @ really 0x2E1 is about 200usec, so 0x300 should be plenty
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
- /*SET_LED 5 */
-
- /* Why is this here??? */
- mov r0, #0x78 @turn everything off
- mcr p15, 0, r0, c1, c0, 0 @(caches off, MMU off, etc.)
-
- @ Step 4f
- @ Access memory *not yet enabled* for CBR refresh cycles (8)
- @ - CBR is generated for all banks
-
- ldr r2, =CFG_DRAM_BASE
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
-
- @ Step 4g
- @get memory controller base address
- @
- ldr r1, =MEMC_BASE
-
- @fetch current mdcnfg value
- @
- ldr r3, [r1, #MDCNFG_OFFSET]
-
- @enable sdram bank 0 if installed (must do for any populated bank)
- @
- orr r3, r3, #MDCNFG_DE0
-
- @write back mdcnfg, enabling the sdram bank(s)
- @
- str r3, [r1, #MDCNFG_OFFSET]
-
- @ Step 4h
- @ write mdmrs
- @
- ldr r2, =CFG_MDMRS_VAL
- str r2, [r1, #MDMRS_OFFSET]
-
- @ Done Memory Init
-
- /*SET_LED 6 */
-
- @********************************************************************
- @ Disable (mask) all interrupts at the interrupt controller
- @
-
- @ clear the interrupt level register (use IRQ, not FIQ)
- @
- mov r1, #0
- ldr r2, =ICLR
- str r1, [r2]
-
- @ Set interrupt mask register
- @
- ldr r1, =CFG_ICMR_VAL
- ldr r2, =ICMR
- str r1, [r2]
-
- @ ********************************************************************
- @ Disable the peripheral clocks, and set the core clock
- @
-
- @ Turn Off ALL on-chip peripheral clocks for re-configuration
- @
- ldr r1, =CKEN
- mov r2, #0
- str r2, [r1]
-
- @ set core clocks
- @
- ldr r2, =CFG_CCCR_VAL
- ldr r1, =CCCR
- str r2, [r1]
-
-#ifdef ENABLE32KHZ
- @ enable the 32Khz oscillator for RTC and PowerManager
- @
- ldr r1, =OSCC
- mov r2, #OSCC_OON
- str r2, [r1]
-
- @ NOTE: spin here until OSCC.OOK get set,
- @ meaning the PLL has settled.
- @
-60:
- ldr r2, [r1]
- ands r2, r2, #1
- beq 60b
-#endif
-
- @ Turn on needed clocks
- @
- ldr r1, =CKEN
- ldr r2, =CFG_CKEN_VAL
- str r2, [r1]
-
- /*SET_LED 7 */
-
-/* Is this needed???? */
-#define NODEBUG
-#ifdef NODEBUG
- /*Disable software and data breakpoints */
- mov r0,#0
- mcr p15,0,r0,c14,c8,0 /* ibcr0 */
- mcr p15,0,r0,c14,c9,0 /* ibcr1 */
- mcr p15,0,r0,c14,c4,0 /* dbcon */
-
- /*Enable all debug functionality */
- mov r0,#0x80000000
- mcr p14,0,r0,c10,c0,0 /* dcsr */
-
-#endif
-
- /*SET_LED 8 */
-
- mov pc, r10
-
-@ End lowlevel_init
diff --git a/board/cradle/u-boot.lds b/board/cradle/u-boot.lds
deleted file mode 100644
index f0102391b3..0000000000
--- a/board/cradle/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/cray/L1/L1.c b/board/cray/L1/L1.c
deleted file mode 100644
index a7114eb074..0000000000
--- a/board/cray/L1/L1.c
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * (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 <common.h>
-#include <asm/processor.h>
-#include <405gp_i2c.h>
-#include <command.h>
-#include <rtc.h>
-#include <post.h>
-#include <net.h>
-#include <malloc.h>
-
-#define L1_MEMSIZE (32*1024*1024)
-
-/* the std. DHCP stufff */
-#define DHCP_ROUTER 3
-#define DHCP_NETMASK 1
-#define DHCP_BOOTFILE 67
-#define DHCP_ROOTPATH 17
-#define DHCP_HOSTNAME 12
-
-/* some extras used by CRAY
- *
- * on the server this looks like:
- *
- * option L1-initrd-image code 224 = string;
- * option L1-initrd-image "/opt/craysv2/craymcu/l1/flash/initrd.image"
- */
-#define DHCP_L1_INITRD 224
-
-/* new, [better?] way via official vendor-extensions, defining an option
- * space.
- * on the server this looks like:
- *
- * option space CRAYL1;
- * option CRAYL1.initrd code 3 = string;
- * ..etc...
- */
-#define DHCP_VENDOR_SPECX 43
-#define DHCP_VX_INITRD 3
-#define DHCP_VX_BOOTCMD 4
-#define DHCP_VX_BOOTARGS 5
-#define DHCP_VX_ROOTDEV 6
-#define DHCP_VX_FROMFLASH 7
-#define DHCP_VX_BOOTSCRIPT 8
-#define DHCP_VX_RCFILE 9
-#define DHCP_VX_MAGIC 10
-
-/* Things DHCP server can tellme about. If there's no flash address, then
- * they dont participate in 'update' to flash, and we force their values
- * back to '0' every boot to be sure to get them fresh from DHCP. Yes, I
- * know this is a pain...
- *
- * If I get no bootfile, boot from flash. If rootpath, use that. If no
- * rootpath use initrd in flash.
- */
-typedef struct dhcp_item_s {
- u8 dhcp_option;
- u8 dhcp_vendor_option;
- char *dhcpvalue;
- char *envname;
-} dhcp_item_t;
-static dhcp_item_t Things[] = {
- {DHCP_ROUTER, 0, NULL, "gateway"},
- {DHCP_NETMASK, 0, NULL, "netmask"},
- {DHCP_BOOTFILE, 0, NULL, "bootfile"},
- {DHCP_ROOTPATH, 0, NULL, "rootpath"},
- {DHCP_HOSTNAME, 0, NULL, "hostname"},
- {DHCP_L1_INITRD, 0, NULL, "initrd"},
-/* and the other way.. */
- {DHCP_VENDOR_SPECX, DHCP_VX_INITRD, NULL, "initrd"},
- {DHCP_VENDOR_SPECX, DHCP_VX_BOOTCMD, NULL, "bootcmd"},
- {DHCP_VENDOR_SPECX, DHCP_VX_FROMFLASH, NULL, "fromflash"},
- {DHCP_VENDOR_SPECX, DHCP_VX_BOOTSCRIPT, NULL, "bootscript"},
- {DHCP_VENDOR_SPECX, DHCP_VX_RCFILE, NULL, "rcfile"},
- {DHCP_VENDOR_SPECX, DHCP_VX_BOOTARGS, NULL, "xbootargs"},
- {DHCP_VENDOR_SPECX, DHCP_VX_ROOTDEV, NULL, NULL},
- {DHCP_VENDOR_SPECX, DHCP_VX_MAGIC, NULL, NULL}
-};
-
-#define N_THINGS ((sizeof(Things))/(sizeof(dhcp_item_t)))
-
-extern char bootscript[];
-
-/* Here is the boot logic as HUSH script. Overridden by any TFP provided
- * bootscript file.
- */
-
-static void init_sdram (void);
-
-/* ------------------------------------------------------------------------- */
-int board_early_init_f (void)
-{
- /* Running from ROM: global data is still READONLY */
- init_sdram ();
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
- mtdcr (uiccr, 0x00000020); /* set all but FPGA SMI to be non-critical */
- mtdcr (uicpr, 0xFFFFFFE0); /* set int polarities */
- mtdcr (uictr, 0x10000000); /* set int trigger levels */
- mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-int checkboard (void)
-{
- return (0);
-}
-/* ------------------------------------------------------------------------- */
-
-/* ------------------------------------------------------------------------- */
-int misc_init_r (void)
-{
- char *s, *e;
- image_header_t *hdr;
- time_t timestamp;
- struct rtc_time tm;
- char bootcmd[32];
-
- hdr = (image_header_t *) (CFG_MONITOR_BASE - sizeof (image_header_t));
- timestamp = (time_t) hdr->ih_time;
- to_tm (timestamp, &tm);
- printf ("Welcome to U-Boot on Cray L1. Compiled %4d-%02d-%02d %2d:%02d:%02d (UTC)\n", tm.tm_year, tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
-
-#define FACTORY_SETTINGS 0xFFFC0000
- if ((s = getenv ("ethaddr")) == NULL) {
- e = (char *) (FACTORY_SETTINGS);
- if (*(e + 0) != '0'
- || *(e + 1) != '0'
- || *(e + 2) != ':'
- || *(e + 3) != '4' || *(e + 4) != '0' || *(e + 17) != '\0') {
- printf ("No valid MAC address in flash location 0x3C0000!\n");
- } else {
- printf ("Factory MAC: %s\n", e);
- setenv ("ethaddr", e);
- }
- }
- sprintf (bootcmd,"autoscript %X",(unsigned)bootscript);
- setenv ("bootcmd", bootcmd);
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-long int initdram (int board_type)
-{
- return (L1_MEMSIZE);
-}
-
-/* ------------------------------------------------------------------------- */
-/* stubs so we can print dates w/o any nvram RTC.*/
-void rtc_get (struct rtc_time *tmp)
-{
- return;
-}
-void rtc_set (struct rtc_time *tmp)
-{
- return;
-}
-void rtc_reset (void)
-{
- return;
-}
-
-/* ------------------------------------------------------------------------- */
-/* Do sdram bank init in C so I can read it..no console to print to yet!
- */
-static void init_sdram (void)
-{
- unsigned long tmp;
-
- /* write SDRAM bank 0 register */
- mtdcr (memcfga, mem_mb0cf);
- mtdcr (memcfgd, 0x00062001);
-
-/* Set the SDRAM Timing reg, SDTR1 and the refresh timer reg, RTR. */
-/* To set the appropriate timings, we need to know the SDRAM speed. */
-/* We can use the PLB speed since the SDRAM speed is the same as */
-/* the PLB speed. The PLB speed is the FBK divider times the */
-/* 405GP reference clock, which on the L1 is 25Mhz. */
-/* Thus, if FBK div is 2, SDRAM is 50Mhz; if FBK div is 3, SDRAM is */
-/* 150Mhz; if FBK is 3, SDRAM is 150Mhz. */
-
- /* divisor = ((mfdcr(strap)>> 28) & 0x3); */
-
-/* write SDRAM timing for 100Mhz. */
- mtdcr (memcfga, mem_sdtr1);
- mtdcr (memcfgd, 0x0086400D);
-
-/* write SDRAM refresh interval register */
- mtdcr (memcfga, mem_rtr);
- mtdcr (memcfgd, 0x05F00000);
- udelay (200);
-
-/* sdram controller.*/
- mtdcr (memcfga, mem_mcopt1);
- mtdcr (memcfgd, 0x90800000);
- udelay (200);
-
-/* initially, disable ECC on all banks */
- udelay (200);
- mtdcr (memcfga, mem_ecccf);
- tmp = mfdcr (memcfgd);
- tmp &= 0xff0fffff;
- mtdcr (memcfga, mem_ecccf);
- mtdcr (memcfgd, tmp);
-
- return;
-}
-
-extern int memory_post_test (int flags);
-
-int testdram (void)
-{
- unsigned long tmp;
- uint *pstart = (uint *) 0x00000000;
- uint *pend = (uint *) L1_MEMSIZE;
- uint *p;
-
- if (getenv_r("booted",NULL,0) <= 0)
- {
- printf ("testdram..");
- /*AA*/
- for (p = pstart; p < pend; p++)
- *p = 0xaaaaaaaa;
- for (p = pstart; p < pend; p++) {
- if (*p != 0xaaaaaaaa) {
- printf ("SDRAM test fails at: %08x, was %08x expected %08x\n",
- (uint) p, *p, 0xaaaaaaaa);
- return 1;
- }
- }
- /*55*/
- for (p = pstart; p < pend; p++)
- *p = 0x55555555;
- for (p = pstart; p < pend; p++) {
- if (*p != 0x55555555) {
- printf ("SDRAM test fails at: %08x, was %08x expected %08x\n",
- (uint) p, *p, 0x55555555);
- return 1;
- }
- }
- /*addr*/
- for (p = pstart; p < pend; p++)
- *p = (unsigned)p;
- for (p = pstart; p < pend; p++) {
- if (*p != (unsigned)p) {
- printf ("SDRAM test fails at: %08x, was %08x expected %08x\n",
- (uint) p, *p, (uint)p);
- return 1;
- }
- }
- printf ("Success. ");
- }
- printf ("Enable ECC..");
-
- mtdcr (memcfga, mem_mcopt1);
- tmp = (mfdcr (memcfgd) & ~0xFFE00000) | 0x90800000;
- mtdcr (memcfga, mem_mcopt1);
- mtdcr (memcfgd, tmp);
- udelay (600);
- for (p = (unsigned long) 0; ((unsigned long) p < L1_MEMSIZE); *p++ = 0L)
- ;
- udelay (400);
- mtdcr (memcfga, mem_ecccf);
- tmp = mfdcr (memcfgd);
- tmp |= 0x00800000;
- mtdcr (memcfgd, tmp);
- udelay (400);
- printf ("enabled.\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-static u8 *dhcp_env_update (u8 thing, u8 * pop)
-{
- u8 i, oplen;
-
- oplen = *(pop + 1);
-
- if ((Things[thing].dhcpvalue = malloc (oplen)) == NULL) {
- printf ("Whoops! failed to malloc space for DHCP thing %s\n",
- Things[thing].envname);
- return NULL;
- }
- for (i = 0; (i < oplen); i++)
- if ((*(Things[thing].dhcpvalue + i) = *(pop + 2 + i)) == ' ')
- break;
- *(Things[thing].dhcpvalue + i) = '\0';
-
-/* set env. */
- if (Things[thing].envname)
- {
- setenv (Things[thing].envname, Things[thing].dhcpvalue);
- }
- return ((u8 *)(Things[thing].dhcpvalue));
-}
-
-/* ------------------------------------------------------------------------- */
-u8 *dhcp_vendorex_prep (u8 * e)
-{
- u8 thing;
-
-/* ask for the things I want. */
- *e++ = 55; /* Parameter Request List */
- *e++ = N_THINGS;
- for (thing = 0; thing < N_THINGS; thing++)
- *e++ = Things[thing].dhcp_option;
- *e++ = 255;
-
- return e;
-}
-
-/* ------------------------------------------------------------------------- */
-/* .. return NULL means it wasnt mine, non-null means I got it..*/
-u8 *dhcp_vendorex_proc (u8 * pop)
-{
- u8 oplen, *sub_op, sub_oplen, *retval;
- u8 thing = 0;
-
- retval = NULL;
- oplen = *(pop + 1);
-/* if pop is vender spec indicator, there are sub-options. */
- if (*pop == DHCP_VENDOR_SPECX) {
- for (sub_op = pop + 2;
- oplen && (sub_oplen = *(sub_op + 1));
- oplen -= sub_oplen, sub_op += (sub_oplen + 2)) {
- for (thing = 0; thing < N_THINGS; thing++) {
- if (*sub_op == Things[thing].dhcp_vendor_option) {
- if (!(retval = dhcp_env_update (thing, sub_op))) {
- return NULL;
- }
- }
- }
- }
- } else {
- for (thing = 0; thing < N_THINGS; thing++) {
- if (*pop == Things[thing].dhcp_option)
- if (!(retval = dhcp_env_update (thing, pop)))
- return NULL;
- }
- }
- return (pop);
-}
diff --git a/board/cray/L1/L1.h b/board/cray/L1/L1.h
deleted file mode 100644
index 1b41824483..0000000000
--- a/board/cray/L1/L1.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (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
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by CRAY L1, 4MB AMD29F032B flash chip
- *
- * Start Address Length
- * +++++++++++++++++++++++++ 0xFFC0_0000 Start of Flash -----------------
- * | Failsafe Linux Image | (1M)
- * +=======================+ 0xFFD0_0000
- * | (Reserved FlashFiles) | (1M)
- * +=======================+ 0xFFE0_0000
- * | Failsafe RootFS | (1M)
- * +=======================+ 0xFFF0_0000
- * | |
- * | U N U S E D |
- * | |
- * +-----------------------+ 0xFFFD_0000 U-Boot image header (64 bytes)
- * | environment settings | (64k)
- * +-----------------------+ 0xFFFE_0000 U-Boot image header (64 bytes)
- * | U-Boot | 0xFFFE_0040 _start of U-Boot
- * | | 0xFFFE_FFFC reset vector - branch to _start
- * +++++++++++++++++++++++++ 0xFFFF_FFFF End of Flash -----------------
- *****************************************************************************/
diff --git a/board/cray/L1/Makefile b/board/cray/L1/Makefile
deleted file mode 100644
index cfdd60e056..0000000000
--- a/board/cray/L1/Makefile
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-SOBJS = init.o
-
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-# HACK: depend needs bootscript.c, which needs tools/mkimage, which is not
-# built in the depend stage. So... put bootscript.o here, not in OBJS
-$(LIB): $(OBJS) $(SOBJS) $(obj)bootscript.o
- $(AR) $(ARFLAGS) $@ $^
-
-clean:
- rm -f $(SOBJS) $(OBJS) $(obj)bootscript.c \
- $(obj)bootscript.image $(obj)bootscript.o
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-$(obj)$(BOARD).o : $(src)$(BOARD).c $(obj)bootscript.o
-
-$(obj)bootscript.c: $(obj)bootscript.image
- od -t x1 -v -A x $^ | awk -f x2c.awk > $@
-
-$(obj)bootscript.image: $(src)bootscript.hush $(src)Makefile
- -$(OBJTREE)/tools/mkimage -A ppc -O linux -T script -C none -a 0 -e 0 -n bootscript -d $(src)bootscript.hush $@
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cray/L1/bootscript.hush b/board/cray/L1/bootscript.hush
deleted file mode 100644
index ec4839b5d0..0000000000
--- a/board/cray/L1/bootscript.hush
+++ /dev/null
@@ -1,117 +0,0 @@
-# $Header$
-# hush bootscript for PPCBOOT on L1
-# note: all #s are in hex, do _NOT_ prefix it with 0x
-
-flash_rfs=ffc00000
-flash_krl=fff00000
-tftp_addr=100000
-tftp2_addr=1000000
-
-if printenv booted
-then
- echo already booted before
-else
- echo first boot in environment, create and save settings
- setenv booted OK
- saveenv
-fi
-
-setenv autoload no
-# clear out stale env stuff, so we get fresh from dhcp.
-for setting in initrd fromflash kernel rootfs rootpath
-do
-setenv $setting
-done
-
-dhcp
-
-# if host provides us with a different bootscript, us it.
-if printenv bootscript
- then
- tftp $tftp_addr $bootcript
- if imi $tftp_addr
- then
- autoscript $tftp_addr
- fi
-fi
-
-# default base kernel arguments.
-setenv bootargs $xbootargs devfs=mount ip=$ipaddr:$serverip:$gatewayip:$netmask:L1:eth0:off wdt=120
-
-# Have a kernel in flash?
-if imi $flash_krl
-then
- echo ok kernel to boot from $flash_krl
- setenv kernel $flash_krl
-else
- echo no kernel to boot from $flash_krl, need tftp
-fi
-
-# Have a rootfs in flash?
-echo test for SQUASHfs at $flash_rfs
-
-if imi $flash_rfs
-then
- echo appears to be a good initrd image at base of flash OK
- setenv rootfs $flash_rfs
-else
- echo no image at base of flash, need nfsroot or initrd
-fi
-
-# I boot from flash if told to and I can.
-if printenv fromflash && printenv kernel && printenv rootfs
-then
- echo booting entirely from flash
- setenv bootargs root=/dev/ram0 rw $bootargs
- bootm $kernel $rootfs
- echo oh no failed so I try some other stuff
-fi
-
-# TFTP down a kernel
-if printenv bootfile
-then
- tftp $tftp_addr $bootfile
- setenv kernel $tftp_addr
- echo I will boot the TFTP kernel
-else
- if printenv kernel
- then
- echo no bootfile specified, will use one from flash
- else
- setenv bootfile /opt/crayx1/craymcu/l1/flash/linux.image
- echo OH NO! we have no bootfile,nor flash kernel! try default: $bootfile
- tftp $tftp_addr $bootfile
- setenv kernel $tftp_addr
- fi
-fi
-
-# the rootfs.
-if printenv rootpath
-then
- echo rootpath is $rootpath
- if printenv initrd
- then
- echo initrd is also specified, so use $initrd
- tftp $tftp2_addr $initrd
- setenv bootargs root=/dev/ram0 rw cwsroot=$serverip:$rootpath $bootargs
- bootm $kernel $tftp2_addr
- else
- echo initrd is not specified, so use NFSROOT $rootpat
- setenv bootargs root=/dev/nfs ro nfsroot=$serverip:$rootpath $bootargs
- bootm $kernel
- fi
-else
- echo we have no rootpath check for one in flash
- if printenv rootfs
- then
- echo I will use the one in flash
- setenv bootargs root=/dev/mtdblock/0 ro rootfstype=squashfs $bootargs
- bootm $kernel
- else
- setenv rootpath /export/crayl1
- echo OH NO! we have no rootpath,nor flash kernel! try default: $rootpath
- setenv bootargs root=/dev/mtdblock/0 ro rootfstype=squashfs $bootargs
- bootm $kernel
- fi
-fi
-reset
diff --git a/board/cray/L1/config.mk b/board/cray/L1/config.mk
deleted file mode 100644
index b69fe8ee01..0000000000
--- a/board/cray/L1/config.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# (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
-#
-
-# Note: I make an "image" from U-Boot itself, which prefixes 0x40 bytes of
-# header info, hence start address is thus shifted.
-TEXT_BASE = 0xFFFD0040
diff --git a/board/cray/L1/flash.c b/board/cray/L1/flash.c
deleted file mode 100644
index f3132740e3..0000000000
--- a/board/cray/L1/flash.c
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * (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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-/*
- * Modified July 20, 2001
- * Strip down to support ONLY the AMD29F032B.
- * Dave Updegraff - Cray, Inc. dave@cray.com
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/* The flash chip we use... */
-#define AMD_ID_F032B 0x41 /* 29F032B ID 32 Mbit,64 64Kx8 sectors */
-#define FLASH_AM320B 0x0009
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-#define ADDR0 0x5555
-#define ADDR1 0x2aaa
-#define FLASH_WORD_SIZE unsigned char
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Only one bank */
- if (CFG_MAX_FLASH_BANKS == 1)
- {
- /* Setup offsets */
- flash_get_offsets (FLASH_BASE0_PRELIM, &flash_info[0]);
-
-#if 0
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE0_PRELIM,
- FLASH_BASE0_PRELIM+monitor_flash_len-1,
- &flash_info[0]);
-#endif
- size_b1 = 0 ;
- flash_info[0].size = size_b0;
- }
-
- return (size_b0 + size_b1);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM320B:printf ("AM29F032B (32 Mbit 64x64KB uniform sectors)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++)
- {
- if (*flash++ != 0xffffffff)
- {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
-
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- FLASH_WORD_SIZE value;
- ulong base = (ulong)addr;
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00900090;
-
- value = addr2[0];
-
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[1]; /* device ID */
-
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_ID_F032B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 64;
- info->size = 0x0400000; /* => 4 MB */
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- info->protect[i] = addr2[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (FLASH_WORD_SIZE *)info->start[0];
- *addr2 = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-int wait_for_DQ7(flash_info_t *info, int sect)
-{
- ulong start, now, last;
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[sect]);
-
- start = get_timer (0);
- last = start;
- while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return -1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
- volatile FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (FLASH_WORD_SIZE *)(info->start[sect]);
- printf("Erasing sector %p\n", addr2);
-
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (FLASH_WORD_SIZE)0x00300030; /* sector erase */
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- wait_for_DQ7(info, sect);
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)(info->start[0]);
- volatile FLASH_WORD_SIZE *dest2 = (FLASH_WORD_SIZE *)dest;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
- ulong start;
- int flag;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile FLASH_WORD_SIZE *)dest) &
- (FLASH_WORD_SIZE)data) != (FLASH_WORD_SIZE)data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- for (i=0; i<4/sizeof(FLASH_WORD_SIZE); i++)
- {
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (FLASH_WORD_SIZE)0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/cray/L1/init.S b/board/cray/L1/init.S
deleted file mode 100644
index 72a10d3a1b..0000000000
--- a/board/cray/L1/init.S
+++ /dev/null
@@ -1,147 +0,0 @@
-/*------------------------------------------------------------------------------+ */
-/* */
-/* This source code has been made available to you by IBM on an AS-IS */
-/* basis. Anyone receiving this source is licensed under IBM */
-/* copyrights to use it in any way he or she deems fit, including */
-/* copying it, modifying it, compiling it, and redistributing it either */
-/* with or without modifications. No license under IBM patents or */
-/* patent applications is to be implied by the copyright license. */
-/* */
-/* Any user of this software should understand that IBM cannot provide */
-/* technical support for this software and will not be responsible for */
-/* any consequences resulting from the use of this software. */
-/* */
-/* Any person who transfers this source code or any derivative work */
-/* must include the IBM copyright notice, this paragraph, and the */
-/* preceding two paragraphs in the transferred software. */
-/* */
-/* COPYRIGHT I B M CORPORATION 1995 */
-/* LICENSED MATERIAL - PROGRAM PROPERTY OF I B M */
-/*------------------------------------------------------------------------------- */
-
-/*----------------------------------------------------------------------------- */
-/* Function: ext_bus_cntlr_init */
-/* Description: Initializes the External Bus Controller for the external */
-/* peripherals. IMPORTANT: For pass1 this code must run from */
-/* cache since you can not reliably change a peripheral banks */
-/* timing register (pbxap) while running code from that bank. */
-/* For ex., since we are running from ROM on bank 0, we can NOT */
-/* execute the code that modifies bank 0 timings from ROM, so */
-/* we run it from cache. */
-/* Bank 0 - Flash and SRAM */
-/* Bank 1 - NVRAM/RTC */
-/* Bank 2 - Keyboard/Mouse controller */
-/* Bank 3 - IR controller */
-/* Bank 4 - not used */
-/* Bank 5 - not used */
-/* Bank 6 - not used */
-/* Bank 7 - FPGA registers */
-/*-----------------------------------------------------------------------------#include <config.h> */
-#include <ppc4xx.h>
-
-#define _LINUX_CONFIG_H 1 /* avoid reading Linux autoconf.h file */
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-/* CRAY - L1: only nominally a 'walnut', since ext.Bus.Cntlr is all empty */
-/* except for #1 which we use for DMA'ing to IOCA-like things, so the */
-/* control registers to set that up are determined by what we've */
-/* empirically discovered work there. */
-
- .globl ext_bus_cntlr_init
-ext_bus_cntlr_init:
- mflr r4 /* save link register */
- bl ..getAddr
-..getAddr:
- mflr r3 /* get address of ..getAddr */
- mtlr r4 /* restore link register */
- addi r4,0,14 /* set ctr to 10; used to prefetch */
- mtctr r4 /* 10 cache lines to fit this function */
- /* in cache (gives us 8x10=80 instrctns) */
-..ebcloop:
- icbt r0,r3 /* prefetch cache line for addr in r3 */
- addi r3,r3,32 /* move to next cache line */
- bdnz ..ebcloop /* continue for 10 cache lines */
-
- /*------------------------------------------------------------------- */
- /* Delay to ensure all accesses to ROM are complete before changing */
- /* bank 0 timings. 200usec should be enough. */
- /* 200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles */
- /*------------------------------------------------------------------- */
- addis r3,0,0x0
- ori r3,r3,0xA000 /* ensure 200usec have passed since reset */
- mtctr r3
-..spinlp:
- bdnz ..spinlp /* spin loop */
-
-
- /*---------------------------------------------------------------------- */
- /* Peripheral Bank 0 (Flash) initialization */
- /*---------------------------------------------------------------------- */
- /* 0x7F8FFE80 slowest boot */
- addi r4,0,pb0ap
- mtdcr ebccfga,r4
- addis r4,0,0x9B01
- ori r4,r4,0x5480
- mtdcr ebccfgd,r4
-
- addi r4,0,pb0cr
- mtdcr ebccfga,r4
- addis r4,0,0xFFC5 /* BAS=0xFFC,BS=0x4(4MB),BU=0x3(R/W), */
- ori r4,r4,0x8000 /* BW=0x0( 8 bits) */
- mtdcr ebccfgd,r4
-
- blr
-
- /*---------------------------------------------------------------------- */
- /* Peripheral Bank 1 (NVRAM/RTC) initialization */
- /* CRAY:the L1 has NOT this bank, it is tied to SV2/IOCA/etc/ instead */
- /* and we do DMA on it. The ConfigurationRegister part is threfore */
- /* almost arbitrary, except that our linux driver needs to know the */
- /* address, but it can query, it.. */
- /* */
- /* The AccessParameter is CRITICAL, */
- /* thouch, since it needs to agree with the electrical timings on the */
- /* IOCA parallel interface. That value is: 0x0185,4380 */
- /* BurstModeEnable BME=0 */
- /* TransferWait TWT=3 */
- /* ChipSelectOnTiming CSN=1 */
- /* OutputEnableOnTimimg OEN=1 */
- /* WriteByteEnableOnTiming WBN=1 */
- /* WriteByteEnableOffTiming WBF=0 */
- /* TransferHold TH=1 */
- /* ReadyEnable RE=1 */
- /* SampleOnReady SOR=1 */
- /* ByteEnableMode BEM=0 */
- /* ParityEnable PEN=0 */
- /* all reserved bits=0 */
- /*---------------------------------------------------------------------- */
- /*---------------------------------------------------------------------- */
- addi r4,0,pb1ap
- mtdcr ebccfga,r4
- addis r4,0,0x0185 /* hiword */
- ori r4,r4,0x4380 /* loword */
- mtdcr ebccfgd,r4
-
- addi r4,0,pb1cr
- mtdcr ebccfga,r4
- addis r4,0,0xF001 /* BAS=0xF00,BS=0x0(1MB),BU=0x3(R/W), */
- ori r4,r4,0x8000 /* BW=0x0( 8 bits) */
- mtdcr ebccfgd,r4
-
- blr
-
-/*----------------------------------------------------------------------------- */
-/* Function: sdram_init */
-/* Description: Configures SDRAM memory banks. */
-/* NOTE: for CrayL1 we have ECC memory, so enable it. */
-/*....now done in C in L1.c:init_sdram for readability. */
-/*----------------------------------------------------------------------------- */
- .globl sdram_init
-
-sdram_init:
- blr
diff --git a/board/cray/L1/patchme b/board/cray/L1/patchme
deleted file mode 100644
index e77ee7e1f5..0000000000
--- a/board/cray/L1/patchme
+++ /dev/null
@@ -1,30 +0,0 @@
-# master confi.mk
-echo "CROSS_COMPILE = powerpc-linux-" >>include/config.mk
-
-# patch the examples/Makefile to ignore return value from OBJCOPY
-sed -e 's/$(OBJCOPY)/-&/' < examples/Makefile > examples/makefile
-
-# add a built target for mkimage on the target architecture
-sed -e 's/^all:.*$/all: .depend envcrc mkimage mkimage.ppc/' < tools/Makefile > tools/makefile
-
-cat <<EOF >>tools/makefile
-mkimage.ppc : mkimage.o.ppc crc32.o.ppc
- powerpc-linux-gcc -msoft-float -Wall -Wstrict-prototypes -o \$@ \$^
- powerpc-linux-strip $@
-
-XFLAGS="-D__KERNEL__ -I../include -DCONFIG_4xx -Wall -Wstict-prototypes"
-mkimage.o.ppc: mkimage.c
- powerpc-linux-gcc -msoft-float -Wall -I../include -c -o \$@ \$^
-
-crc32.o.ppc: crc32.c
- powerpc-linux-gcc -msoft-float -Wall -I../include -c -o \$@ \$^
-
-EOF
-
-# make an image by default out of the u-boot image
-sed -e 's/^all:.*$/all: u-boot.image /' < Makefile > makefile
-cat <<EOF >>makefile
-u-boot.image: u-boot.bin
- tools/mkimage -A ppc -O linux -T firmware -C none -a 0 -e 0 -n U-Boot -d \$^ \$@
-
-EOF
diff --git a/board/cray/L1/u-boot.lds b/board/cray/L1/u-boot.lds
deleted file mode 100644
index cf4bbb921d..0000000000
--- a/board/cray/L1/u-boot.lds
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/cray/L1/init.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/4xx_enet.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/*. = env_offset;*/
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/cray/L1/u-boot.lds.debug b/board/cray/L1/u-boot.lds.debug
deleted file mode 100644
index 1608f8cdaa..0000000000
--- a/board/cray/L1/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
-
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/cray/L1/x2c.awk b/board/cray/L1/x2c.awk
deleted file mode 100644
index 9235e6cb36..0000000000
--- a/board/cray/L1/x2c.awk
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/awk
-BEGIN { print "unsigned char bootscript[] = { \n"}
-{ for (i = 2; i <= NF ; i++ ) printf "0x"$i","
- print ""
-}
-END { print "\n};\n" }
diff --git a/board/csb226/Makefile b/board/csb226/Makefile
deleted file mode 100644
index eee8f13525..0000000000
--- a/board/csb226/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := csb226.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/csb226/config.mk b/board/csb226/config.mk
deleted file mode 100644
index 23543920c3..0000000000
--- a/board/csb226/config.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Linux-Kernel is expected to be at c000'8000, entry c000'8000
-#
-# we load ourself to c170'0000, the upper 1 MB of second bank
-#
-# download areas is c800'0000
-#
-
-# This is the address where U-Boot lives in flash:
-#TEXT_BASE = 0
-
-# FIXME: armboot does only work correctly when being compiled
-# for the addresses _after_ relocation to RAM!! Otherwhise the
-# .bss segment is assumed in flash...
-TEXT_BASE = 0xa1fe0000
diff --git a/board/csb226/csb226.c b/board/csb226/csb226.c
deleted file mode 100644
index 80caf8b464..0000000000
--- a/board/csb226/csb226.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * (C) Copyright 2002
- * Robert Schwebel, Pengutronix, r.schwebel@pengutronix.de
- * Kyle Harris, Nexus Technologies, Inc., kharris@nexus-tech.net
- * Marius Groeger, Sysgo Real-Time Solutions GmbH, mgroeger@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
- */
-
-#include <common.h>
-#include <asm/arch/pxa-regs.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-# define SHOW_BOOT_PROGRESS(arg) show_boot_progress(arg)
-#else
-# define SHOW_BOOT_PROGRESS(arg)
-#endif
-
-/**
- * misc_init_r: - misc initialisation routines
- */
-
-int misc_init_r(void)
-{
-#if 0
- uchar *str;
-
- /* determine if the software update key is pressed during startup */
- /* not ported yet... */
- if (GPLR0 & 0x00000800) {
- printf("using bootcmd_normal (sw-update button not pressed)\n");
- str = getenv("bootcmd_normal");
- } else {
- printf("using bootcmd_update (sw-update button pressed)\n");
- str = getenv("bootcmd_update");
- }
-
- setenv("bootcmd",str);
-#endif
- return 0;
-}
-
-
-/**
- * board_init: - setup some data structures
- *
- * @return: 0 in case of success
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* arch number of CSB226 board */
- gd->bd->bi_arch_number = MACH_TYPE_CSB226;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xa0000100;
-
- return 0;
-}
-
-
-/**
- * dram_init: - setup dynamic RAM
- *
- * @return: 0 in case of success
- */
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return 0;
-}
-
-
-/**
- * csb226_set_led: - switch LEDs on or off
- *
- * @param led: LED to switch (0,1,2)
- * @param state: switch on (1) or off (0)
- */
-
-void csb226_set_led(int led, int state)
-{
- switch(led) {
-
- case 0: if (state==1) {
- GPCR0 |= CSB226_USER_LED0;
- } else if (state==0) {
- GPSR0 |= CSB226_USER_LED0;
- }
- break;
-
- case 1: if (state==1) {
- GPCR0 |= CSB226_USER_LED1;
- } else if (state==0) {
- GPSR0 |= CSB226_USER_LED1;
- }
- break;
-
- case 2: if (state==1) {
- GPCR0 |= CSB226_USER_LED2;
- } else if (state==0) {
- GPSR0 |= CSB226_USER_LED2;
- }
- break;
- }
-
- return;
-}
-
-
-/**
- * show_boot_progress: - indicate state of the boot process
- *
- * @param status: Status number - see README for details.
- *
- * The CSB226 does only have 3 LEDs, so we switch them on at the most
- * important states (1, 5, 15).
- */
-
-void show_boot_progress (int status)
-{
- switch(status) {
- case 1: csb226_set_led(0,1); break;
- case 5: csb226_set_led(1,1); break;
- case 15: csb226_set_led(2,1); break;
- }
-
- return;
-}
diff --git a/board/csb226/flash.c b/board/csb226/flash.c
deleted file mode 100644
index f6dfd96177..0000000000
--- a/board/csb226/flash.c
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * Robert Schwebel, Pengutronix, <r.schwebel@pengutronix.de>
- *
- * (C) Copyright 2003 (2 x 16 bit Flash bank patches)
- * Rolf Peukert, IMMS gGmbH, <rolf.peukert@imms.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 <common.h>
-#include <asm/arch/pxa-regs.h>
-
-#define FLASH_BANK_SIZE 0x02000000
-#define MAIN_SECT_SIZE 0x40000 /* 2x16 = 256k per sector */
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-/**
- * flash_init: - initialize data structures for flash chips
- *
- * @return: size of the flash
- */
-
-ulong flash_init(void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
- flash_info[i].flash_id =
- (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F128J3 & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset(flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
-
- switch (i) {
- case 0:
- flashbase = PHYS_FLASH_1;
- break;
- default:
- panic("configured too many flash banks!\n");
- break;
- }
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] = flashbase + j*MAIN_SECT_SIZE;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-
- return size;
-}
-
-
-/**
- * flash_print_info: - print information about the flash situation
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i, j;
-
- for (j=0; j<CFG_MAX_FLASH_BANKS; j++) {
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (INTEL_MANUFACT & FLASH_VENDMASK):
- printf ("Intel: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (INTEL_ID_28F128J3 & FLASH_TYPEMASK):
- printf("28F128J3 (128Mbit)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- return;
- }
-
- printf(" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) printf ("\n ");
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- info++;
- }
-}
-
-
-/**
- * flash_erase: - erase flash sectors
- */
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- int rc = ERR_OK;
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) != (INTEL_MANUFACT & FLASH_VENDMASK))
- return ERR_UNKNOWN_FLASH_VENDOR;
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) prot++;
- }
-
- if (prot) return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && !ctrlc(); sect++) {
-
- printf("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- if (info->protect[sect] == 0) { /* not protected */
- u32 * volatile addr = (u32 * volatile)(info->start[sect]);
-
- /* erase sector: */
- /* The strata flashs are aligned side by side on */
- /* the data bus, so we have to write the commands */
- /* to both chips here: */
-
- *addr = 0x00200020; /* erase setup */
- *addr = 0x00D000D0; /* erase confirm */
-
- while ((*addr & 0x00800080) != 0x00800080) {
- if (get_timer_masked() > CFG_FLASH_ERASE_TOUT) {
- *addr = 0x00B000B0; /* suspend erase*/
- *addr = 0x00FF00FF; /* read mode */
- rc = ERR_TIMOUT;
- goto outahere;
- }
- }
- *addr = 0x00500050; /* clear status register cmd. */
- *addr = 0x00FF00FF; /* reset to read mode */
- }
- printf("ok.\n");
- }
- if (ctrlc()) printf("User Interrupt!\n");
-
-outahere:
- /* allow flash to settle - wait 10 ms */
- udelay_masked(10000);
-
- if (flag) enable_interrupts();
-
- return rc;
-}
-
-/**
- * write_long: - copy memory to flash, assume a bank of 2 devices with 16bit each
- */
-
-static int write_long (flash_info_t *info, ulong dest, ulong data)
-{
- u32 * volatile addr = (u32 * volatile)dest, val;
- int rc = ERR_OK;
- int flag;
-
- /* read array command - just for the case... */
- *addr = 0x00FF00FF;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts();
-
- /* clear status register command */
- *addr = 0x00500050;
-
- /* program set-up command */
- *addr = 0x00400040;
-
- /* latch address/data */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- /* wait while polling the status register */
- while(((val = *addr) & 0x00800080) != 0x00800080) {
- if (get_timer_masked() > CFG_FLASH_WRITE_TOUT) {
- rc = ERR_TIMOUT;
- /* suspend program command */
- *addr = 0x00B000B0;
- goto outahere;
- }
- }
-
- /* check for errors */
- if(val & 0x001A001A) {
- printf("\nFlash write error %02x at address %08lx\n",
- (int)val, (unsigned long)dest);
- if(val & 0x00080008) {
- printf("Voltage range error.\n");
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if(val & 0x00020002) {
- printf("Device protect error.\n");
- rc = ERR_PROTECTED;
- goto outahere;
- }
- if(val & 0x00100010) {
- printf("Programming error.\n");
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
-
-outahere:
- /* read array command */
- *addr = 0x00FF00FF;
- if (flag) enable_interrupts();
-
- return rc;
-}
-
-
-/**
- * write_buf: - Copy memory to flash.
- *
- * @param info:
- * @param src: source of copy transaction
- * @param addr: where to copy to
- * @param cnt: number of bytes to copy
- *
- * @return error code
- */
-
-/* "long" version, uses 32bit words */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- ulong data;
- int l;
- int i, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
-
- if ((rc = write_long(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = *((ulong*)src);
- if ((rc = write_long(info, wp, data)) != 0) {
- return (rc);
- }
- src += 4;
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) return ERR_OK;
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
-
- return write_long(info, wp, data);
-}
diff --git a/board/csb226/lowlevel_init.S b/board/csb226/lowlevel_init.S
deleted file mode 100644
index aa9dcba6fc..0000000000
--- a/board/csb226/lowlevel_init.S
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * Most of this taken from Redboot hal_platform_setup.h with cleanup
- *
- * NOTE: I haven't clean this up considerably, just enough to get it
- * running. See hal_platform_setup.h for the source. See
- * board/cradle/lowlevel_init.S for another PXA250 setup that is
- * much cleaner.
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-DRAM_SIZE: .long CFG_DRAM_SIZE
-
-/* wait for coprocessor write complete */
- .macro CPWAIT reg
- mrc p15,0,\reg,c2,c0,0
- mov \reg,\reg
- sub pc,pc,#4
- .endm
-
-_TEXT_BASE:
- .word TEXT_BASE
-
-
-/*
- * Memory setup
- */
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
- /* Set up GPIO pins first ----------------------------------------- */
-
- ldr r0, =GPSR0
- ldr r1, =CFG_GPSR0_VAL
- str r1, [r0]
-
- ldr r0, =GPSR1
- ldr r1, =CFG_GPSR1_VAL
- str r1, [r0]
-
- ldr r0, =GPSR2
- ldr r1, =CFG_GPSR2_VAL
- str r1, [r0]
-
- ldr r0, =GPCR0
- ldr r1, =CFG_GPCR0_VAL
- str r1, [r0]
-
- ldr r0, =GPCR1
- ldr r1, =CFG_GPCR1_VAL
- str r1, [r0]
-
- ldr r0, =GPCR2
- ldr r1, =CFG_GPCR2_VAL
- str r1, [r0]
-
- ldr r0, =GPDR0
- ldr r1, =CFG_GPDR0_VAL
- str r1, [r0]
-
- ldr r0, =GPDR1
- ldr r1, =CFG_GPDR1_VAL
- str r1, [r0]
-
- ldr r0, =GPDR2
- ldr r1, =CFG_GPDR2_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_L
- ldr r1, =CFG_GAFR0_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_U
- ldr r1, =CFG_GAFR0_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_L
- ldr r1, =CFG_GAFR1_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_U
- ldr r1, =CFG_GAFR1_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_L
- ldr r1, =CFG_GAFR2_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_U
- ldr r1, =CFG_GAFR2_U_VAL
- str r1, [r0]
-
- ldr r0, =PSSR /* enable GPIO pins */
- ldr r1, =CFG_PSSR_VAL
- str r1, [r0]
-
-/* ldr r3, =MSC1 / low - bank 2 Lubbock Registers / SRAM */
-/* ldr r2, =CFG_MSC1_VAL / high - bank 3 Ethernet Controller */
-/* str r2, [r3] / need to set MSC1 before trying to write to the HEX LEDs */
-/* ldr r2, [r3] / need to read it back to make sure the value latches (see MSC section of manual) */
-/* */
-/* ldr r1, =LED_BLANK */
-/* mov r0, #0xFF */
-/* str r0, [r1] / turn on hex leds */
-/* */
-/*loop: */
-/* */
-/* ldr r0, =0xB0070001 */
-/* ldr r1, =_LED */
-/* str r0, [r1] / hex display */
-
-
- /* ---------------------------------------------------------------- */
- /* Enable memory interface */
- /* */
- /* The sequence below is based on the recommended init steps */
- /* detailed in the Intel PXA250 Operating Systems Developers Guide, */
- /* Chapter 10. */
- /* ---------------------------------------------------------------- */
-
- /* ---------------------------------------------------------------- */
- /* Step 1: Wait for at least 200 microsedonds to allow internal */
- /* clocks to settle. Only necessary after hard reset... */
- /* FIXME: can be optimized later */
- /* ---------------------------------------------------------------- */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-mem_init:
-
- ldr r1, =MEMC_BASE /* get memory controller base addr. */
-
- /* ---------------------------------------------------------------- */
- /* Step 2a: Initialize Asynchronous static memory controller */
- /* ---------------------------------------------------------------- */
-
- /* MSC registers: timing, bus width, mem type */
-
- /* MSC0: nCS(0,1) */
- ldr r2, =CFG_MSC0_VAL
- str r2, [r1, #MSC0_OFFSET]
- ldr r2, [r1, #MSC0_OFFSET] /* read back to ensure */
- /* that data latches */
- /* MSC1: nCS(2,3) */
- ldr r2, =CFG_MSC1_VAL
- str r2, [r1, #MSC1_OFFSET]
- ldr r2, [r1, #MSC1_OFFSET]
-
- /* MSC2: nCS(4,5) */
- ldr r2, =CFG_MSC2_VAL
- str r2, [r1, #MSC2_OFFSET]
- ldr r2, [r1, #MSC2_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2b: Initialize Card Interface */
- /* ---------------------------------------------------------------- */
-
- /* MECR: Memory Expansion Card Register */
- ldr r2, =CFG_MECR_VAL
- str r2, [r1, #MECR_OFFSET]
- ldr r2, [r1, #MECR_OFFSET]
-
- /* MCMEM0: Card Interface slot 0 timing */
- ldr r2, =CFG_MCMEM0_VAL
- str r2, [r1, #MCMEM0_OFFSET]
- ldr r2, [r1, #MCMEM0_OFFSET]
-
- /* MCMEM1: Card Interface slot 1 timing */
- ldr r2, =CFG_MCMEM1_VAL
- str r2, [r1, #MCMEM1_OFFSET]
- ldr r2, [r1, #MCMEM1_OFFSET]
-
- /* MCATT0: Card Interface Attribute Space Timing, slot 0 */
- ldr r2, =CFG_MCATT0_VAL
- str r2, [r1, #MCATT0_OFFSET]
- ldr r2, [r1, #MCATT0_OFFSET]
-
- /* MCATT1: Card Interface Attribute Space Timing, slot 1 */
- ldr r2, =CFG_MCATT1_VAL
- str r2, [r1, #MCATT1_OFFSET]
- ldr r2, [r1, #MCATT1_OFFSET]
-
- /* MCIO0: Card Interface I/O Space Timing, slot 0 */
- ldr r2, =CFG_MCIO0_VAL
- str r2, [r1, #MCIO0_OFFSET]
- ldr r2, [r1, #MCIO0_OFFSET]
-
- /* MCIO1: Card Interface I/O Space Timing, slot 1 */
- ldr r2, =CFG_MCIO1_VAL
- str r2, [r1, #MCIO1_OFFSET]
- ldr r2, [r1, #MCIO1_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2c: Write FLYCNFG FIXME: what's that??? */
- /* ---------------------------------------------------------------- */
-
- /* test if we run from flash or RAM - RAM/BDI: don't setup RAM */
- adr r3, mem_init /* r0 <- current position of code */
- ldr r2, =mem_init
- cmp r3, r2 /* skip init if in place */
- beq initirqs
-
-
- /* ---------------------------------------------------------------- */
- /* Step 2d: Initialize Timing for Sync Memory (SDCLK0) */
- /* ---------------------------------------------------------------- */
-
- /* Before accessing MDREFR we need a valid DRI field, so we set */
- /* this to power on defaults + DRI field. */
-
- ldr r3, =CFG_MDREFR_VAL
- ldr r2, =0xFFF
- and r3, r3, r2
- ldr r4, =0x03ca4000
- orr r4, r4, r3
-
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
-
- /* ---------------------------------------------------------------- */
- /* Step 3: Initialize Synchronous Static Memory (Flash/Peripherals) */
- /* ---------------------------------------------------------------- */
-
- /* Initialize SXCNFG register. Assert the enable bits */
-
- /* Write SXMRS to cause an MRS command to all enabled banks of */
- /* synchronous static memory. Note that SXLCR need not be written */
- /* at this time. */
-
- /* FIXME: we use async mode for now */
-
-
- /* ---------------------------------------------------------------- */
- /* Step 4: Initialize SDRAM */
- /* ---------------------------------------------------------------- */
-
- /* Step 4a: assert MDREFR:K?RUN and configure */
- /* MDREFR:K1DB2 and MDREFR:K2DB2 as desired. */
-
- ldr r4, =CFG_MDREFR_VAL
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
- /* Step 4b: de-assert MDREFR:SLFRSH. */
-
- bic r4, r4, #(MDREFR_SLFRSH)
-
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
-
- /* Step 4c: assert MDREFR:E1PIN and E0PIO */
-
- orr r4, r4, #(MDREFR_E1PIN|MDREFR_E0PIN)
-
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
-
- /* Step 4d: write MDCNFG with MDCNFG:DEx deasserted (set to 0), to */
- /* configure but not enable each SDRAM partition pair. */
-
- ldr r4, =CFG_MDCNFG_VAL
- bic r4, r4, #(MDCNFG_DE0|MDCNFG_DE1)
-
- str r4, [r1, #MDCNFG_OFFSET] /* write back MDCNFG */
- ldr r4, [r1, #MDCNFG_OFFSET]
-
-
- /* Step 4e: Wait for the clock to the SDRAMs to stabilize, */
- /* 100..200 µsec. */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-
- /* Step 4f: Trigger a number (usually 8) refresh cycles by */
- /* attempting non-burst read or write accesses to disabled */
- /* SDRAM, as commonly specified in the power up sequence */
- /* documented in SDRAM data sheets. The address(es) used */
- /* for this purpose must not be cacheable. */
-
- /* There should 9 writes, since the first write doesn't */
- /* trigger a refresh cycle on PXA250. See Intel PXA250 and */
- /* PXA210 Processors Specification Update, */
- /* Jan 2003, Errata #116, page 30. */
-
-
- ldr r3, =CFG_DRAM_BASE
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
-
- /* Step 4g: Write MDCNFG with enable bits asserted */
- /* (MDCNFG:DEx set to 1). */
-
- ldr r3, [r1, #MDCNFG_OFFSET]
- orr r3, r3, #(MDCNFG_DE0|MDCNFG_DE1)
- str r3, [r1, #MDCNFG_OFFSET]
-
- /* Step 4h: Write MDMRS. */
-
- ldr r2, =CFG_MDMRS_VAL
- str r2, [r1, #MDMRS_OFFSET]
-
-
- /* We are finished with Intel's memory controller initialisation */
-
- /* ---------------------------------------------------------------- */
- /* Disable (mask) all interrupts at interrupt controller */
- /* ---------------------------------------------------------------- */
-
-initirqs:
-
- mov r1, #0 /* clear int. level register (IRQ, not FIQ) */
- ldr r2, =ICLR
- str r1, [r2]
-
- ldr r2, =ICMR /* mask all interrupts at the controller */
- str r1, [r2]
-
-
- /* ---------------------------------------------------------------- */
- /* Clock initialisation */
- /* ---------------------------------------------------------------- */
-
-initclks:
-
- /* Disable the peripheral clocks, and set the core clock frequency */
- /* (hard-coding at 398.12MHz for now). */
-
- /* Turn Off ALL on-chip peripheral clocks for re-configuration */
- /* Note: See label 'ENABLECLKS' for the re-enabling */
- ldr r1, =CKEN
- mov r2, #0
- str r2, [r1]
-
-
- /* default value in case no valid rotary switch setting is found */
- ldr r2, =(CCCR_L27|CCCR_M2|CCCR_N10) /* DEFAULT: {200/200/100} */
-
- /* ... and write the core clock config register */
- ldr r1, =CCCR
- str r2, [r1]
-
- /* enable the 32Khz oscillator for RTC and PowerManager */
-/*
- ldr r1, =OSCC
- mov r2, #OSCC_OON
- str r2, [r1]
-*/
- /* NOTE: spin here until OSCC.OOK get set, meaning the PLL */
- /* has settled. */
-60:
- ldr r2, [r1]
- ands r2, r2, #1
- beq 60b
-
- /* ---------------------------------------------------------------- */
- /* */
- /* ---------------------------------------------------------------- */
-
- /* Save SDRAM size */
- ldr r1, =DRAM_SIZE
- str r8, [r1]
-
- /* Interrupt init: Mask all interrupts */
- ldr r0, =ICMR /* enable no sources */
- mov r1, #0
- str r1, [r0]
-
- /* FIXME */
-
-#ifndef DEBUG
- /*Disable software and data breakpoints */
- mov r0,#0
- mcr p15,0,r0,c14,c8,0 /* ibcr0 */
- mcr p15,0,r0,c14,c9,0 /* ibcr1 */
- mcr p15,0,r0,c14,c4,0 /* dbcon */
-
- /*Enable all debug functionality */
- mov r0,#0x80000000
- mcr p14,0,r0,c10,c0,0 /* dcsr */
-#endif
-
- /* ---------------------------------------------------------------- */
- /* End lowlevel_init */
- /* ---------------------------------------------------------------- */
-
-endlowlevel_init:
-
- mov pc, lr
diff --git a/board/csb226/u-boot.lds b/board/csb226/u-boot.lds
deleted file mode 100644
index f0102391b3..0000000000
--- a/board/csb226/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/cu824/Makefile b/board/cu824/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/cu824/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/cu824/README b/board/cu824/README
deleted file mode 100644
index cc0d207f5d..0000000000
--- a/board/cu824/README
+++ /dev/null
@@ -1,453 +0,0 @@
-ppcboot for a CU824 board
----------------------------
-
-CU824 has two banks of flash 8MB each. In board's notation, bank 0 is
-the one at the address of 0xFF800000 and bank 1 is the one at the
-address of 0xFF000000. On power-up the processor jumps to the address
-of 0xFFF00100, the last megabyte of the bank 0 of flash. Thus,
-U-Boot is configured to reside in flash starting at the address of
-0xFFF00000. The environment space is not embedded in the U-Boot code
-and is located in flash separately from U-Boot, at the address of
-0xFF008000.
-
-
-U-Boot test results
---------------------
-
-x.x Operation on all available serial consoles
-
-x.x.x CONFIG_CONS_INDEX 1
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
- CPU: MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
- Board: CU824 Revision 1 Local Bus at 99 MHz
- DRAM: 64 MB
- FLASH: 16 MB
- In: serial
- Out: serial
- Err: serial
-
-Hit any key to stop autoboot: 0
-=>
-=>he
-go - start application at address 'addr'
-run - run commands in an environment variable
-bootm - boot application image from memory
-bootp - boot image via network using BootP/TFTP protocol
-tftpboot- boot image via network using TFTP protocol
- and env variables ipaddr and serverip
-rarpboot- boot image via network using RARP/TFTP protocol
-bootd - boot default, i.e., run 'bootcmd'
-loads - load S-Record file over serial line
-loadb - load binary file over serial line (kermit mode)
-md - memory display
-mm - memory modify (auto-incrementing)
-nm - memory modify (constant address)
-mw - memory write (fill)
-cp - memory copy
-cmp - memory compare
-crc32 - checksum calculation
-base - print or set address offset
-printenv- print environment variables
-setenv - set environment variables
-saveenv - save environment variables to persistent storage
-protect - enable or disable FLASH write protection
-erase - erase FLASH memory
-flinfo - print FLASH memory information
-bdinfo - print Board Info structure
-iminfo - print header information for application image
-coninfo - print console devices and informations
-loop - infinite loop on address range
-mtest - simple RAM test
-icache - enable or disable instruction cache
-dcache - enable or disable data cache
-reset - Perform RESET of the CPU
-echo - echo args to console
-version - print monitor version
-help - print online help
-? - alias for 'help'
-=>
-
-
-x.x.x CONFIG_CONS_INDEX 2
-
-**** NOT TESTED ****
-
-x.x Flash Driver Operation
-
-x.x.x Erase Operation
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
- CPU: MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
- Board: CU824 Revision 1 Local Bus at 99 MHz
- DRAM: 64 MB
- FLASH: 16 MB
- In: serial
- Out: serial
- Err: serial
-
-Hit any key to stop autoboot: 0
-=>
-=>
-=>
-=>md ff000000
-ff000000: 27051956 70706362 6f6f7420 302e382e '..Vppcboot 0.8.
-ff000010: 3320284d 61792031 31203230 3031202d 3 (May 11 2001 -
-ff000020: 2031343a 35373a30 33290000 00000000 14:57:03)......
-ff000030: 00000000 00000000 00000000 00000000 ................
-ff000040: 00000000 00000000 00000000 00000000 ................
-ff000050: 00000000 00000000 00000000 00000000 ................
-ff000060: 00000000 00000000 00000000 00000000 ................
-ff000070: 00000000 00000000 00000000 00000000 ................
-ff000080: 00000000 00000000 00000000 00000000 ................
-ff000090: 00000000 00000000 00000000 00000000 ................
-ff0000a0: 00000000 00000000 00000000 00000000 ................
-ff0000b0: 00000000 00000000 00000000 00000000 ................
-ff0000c0: 00000000 00000000 00000000 00000000 ................
-ff0000d0: 00000000 00000000 00000000 00000000 ................
-ff0000e0: 00000000 00000000 00000000 00000000 ................
-ff0000f0: 00000000 00000000 00000000 00000000 ................
-=>erase ff000000 ff007fff
-Erase Flash from 0xff000000 to 0xff007fff
- done
-Erased 1 sectors
-=>md ff000000
-ff000000: ffffffff ffffffff ffffffff ffffffff ................
-ff000010: ffffffff ffffffff ffffffff ffffffff ................
-ff000020: ffffffff ffffffff ffffffff ffffffff ................
-ff000030: ffffffff ffffffff ffffffff ffffffff ................
-ff000040: ffffffff ffffffff ffffffff ffffffff ................
-ff000050: ffffffff ffffffff ffffffff ffffffff ................
-ff000060: ffffffff ffffffff ffffffff ffffffff ................
-ff000070: ffffffff ffffffff ffffffff ffffffff ................
-ff000080: ffffffff ffffffff ffffffff ffffffff ................
-ff000090: ffffffff ffffffff ffffffff ffffffff ................
-ff0000a0: ffffffff ffffffff ffffffff ffffffff ................
-ff0000b0: ffffffff ffffffff ffffffff ffffffff ................
-ff0000c0: ffffffff ffffffff ffffffff ffffffff ................
-ff0000d0: ffffffff ffffffff ffffffff ffffffff ................
-ff0000e0: ffffffff ffffffff ffffffff ffffffff ................
-ff0000f0: ffffffff ffffffff ffffffff ffffffff ................
-=>
-
-x.x.x Information
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
- CPU: MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
- Board: CU824 Revision 1 Local Bus at 99 MHz
- DRAM: 64 MB
- FLASH: 16 MB
- In: serial
- Out: serial
- Err: serial
-
-Hit any key to stop autoboot: 0
-=>
-=>
-=>
-=>
-=>flinfo
-
-Bank # 1: Intel: 28F160F3B (16Mbit)
- Size: 8 MB in 39 Sectors
- Sector Start Addresses:
- FF000000 FF008000 (RO) FF010000 FF018000 FF020000
- FF028000 FF030000 FF038000 FF040000 FF080000
- FF0C0000 FF100000 FF140000 FF180000 FF1C0000
- FF200000 FF240000 FF280000 FF2C0000 FF300000
- FF340000 FF380000 FF3C0000 FF400000 FF440000
- FF480000 FF4C0000 FF500000 FF540000 FF580000
- FF5C0000 FF600000 FF640000 FF680000 FF6C0000
- FF700000 FF740000 FF780000 FF7C0000
-
-Bank # 2: Intel: 28F160F3B (16Mbit)
- Size: 8 MB in 39 Sectors
- Sector Start Addresses:
- FF800000 FF808000 FF810000 FF818000 FF820000
- FF828000 FF830000 FF838000 FF840000 FF880000
- FF8C0000 FF900000 FF940000 FF980000 FF9C0000
- FFA00000 FFA40000 FFA80000 FFAC0000 FFB00000
- FFB40000 FFB80000 FFBC0000 FFC00000 FFC40000
- FFC80000 FFCC0000 FFD00000 FFD40000 FFD80000
- FFDC0000 FFE00000 FFE40000 FFE80000 FFEC0000
- FFF00000 (RO) FFF40000 FFF80000 FFFC0000
-=>
-
-x.x.x Flash Programming
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
- CPU: MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
- Board: CU824 Revision 1 Local Bus at 99 MHz
- DRAM: 64 MB
- FLASH: 16 MB
- In: serial
- Out: serial
- Err: serial
-
-Hit any key to stop autoboot: 0
-=>
-=>
-=>
-=>
-=>cp 0 ff000000 20
-Copy to Flash... done
-=>md 0
-00000000: 0ec08ce0 03f9800c 00000001 040c0000 ................
-00000010: 00000001 03fd1aa0 03fd1ae4 03fd1a00 ................
-00000020: 03fd1a58 03fceb04 03fd34cc 03fd34d0 ...X......4...4.
-00000030: 03fcd5bc 03fcdabc 00000000 00000000 ................
-00000040: 00000000 00000000 00000000 00000000 ................
-00000050: 00000000 00000000 00000000 00000000 ................
-00000060: 00000000 00000000 00000000 00000000 ................
-00000070: 00000000 00000000 00000000 00000000 ................
-00000080: 00000000 00000000 00000000 00000000 ................
-00000090: 00000000 00000000 00000000 00000000 ................
-000000a0: 00000000 00000000 00000000 00000000 ................
-000000b0: 00000000 00000000 00000000 00000000 ................
-000000c0: 00000000 00000000 00000000 00000000 ................
-000000d0: 00000000 00000000 00000000 00000000 ................
-000000e0: 00000000 00000000 00000000 00000000 ................
-000000f0: 00000000 00000000 00000000 00000000 ................
-=>md ff000000
-ff000000: 0ec08ce0 03f9800c 00000001 040c0000 ................
-ff000010: 00000001 03fd1aa0 03fd1ae4 03fd1a00 ................
-ff000020: 03fd1a58 03fceb04 03fd34cc 03fd34d0 ...X......4...4.
-ff000030: 03fcd5bc 03fcdabc 00000000 00000000 ................
-ff000040: 00000000 00000000 00000000 00000000 ................
-ff000050: 00000000 00000000 00000000 00000000 ................
-ff000060: 00000000 00000000 00000000 00000000 ................
-ff000070: 00000000 00000000 00000000 00000000 ................
-ff000080: ffffffff ffffffff ffffffff ffffffff ................
-ff000090: ffffffff ffffffff ffffffff ffffffff ................
-ff0000a0: ffffffff ffffffff ffffffff ffffffff ................
-ff0000b0: ffffffff ffffffff ffffffff ffffffff ................
-ff0000c0: ffffffff ffffffff ffffffff ffffffff ................
-ff0000d0: ffffffff ffffffff ffffffff ffffffff ................
-ff0000e0: ffffffff ffffffff ffffffff ffffffff ................
-ff0000f0: ffffffff ffffffff ffffffff ffffffff ................
-=>
-
-x.x.x Storage of environment variables in flash
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
- CPU: MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
- Board: CU824 Revision 1 Local Bus at 99 MHz
- DRAM: 64 MB
- FLASH: 16 MB
- In: serial
- Out: serial
- Err: serial
-
-Hit any key to stop autoboot: 0
-=>
-=>printenv
-bootargs=
-bootcmd=bootm FE020000
-bootdelay=5
-baudrate=9600
-ipaddr=192.168.4.2
-serverip=192.168.4.1
-ethaddr=00:40:42:01:00:a0
-stdin=serial
-stdout=serial
-stderr=serial
-
-Environment size: 167/32764 bytes
-=>setenv myvar 1234
-=>save_env
-Un-Protected 1 sectors
-Erasing Flash...
- done
-Erased 1 sectors
-Saving Environment to Flash...
-Protected 1 sectors
-=>reset
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
- CPU: MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
- Board: CU824 Revision 1 Local Bus at 99 MHz
- DRAM: 64 MB
- FLASH: 16 MB
- In: serial
- Out: serial
- Err: serial
-
-Hit any key to stop autoboot: 0
-=>
-=>printenv
-bootargs=
-bootcmd=bootm FE020000
-bootdelay=5
-baudrate=9600
-ipaddr=192.168.4.2
-serverip=192.168.4.1
-ethaddr=00:40:42:01:00:a0
-myvar=1234
-stdin=serial
-stdout=serial
-stderr=serial
-
-Environment size: 178/32764 bytes
-=>
-
-x.x Image Download and run over serial port
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
- CPU: MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
- Board: CU824 Revision 1 Local Bus at 99 MHz
- DRAM: 64 MB
- FLASH: 16 MB
- In: serial
- Out: serial
- Err: serial
-
-Hit any key to stop autoboot: 0
-=>
-=>
-=>mw 40000 0 10000
-=>md 40000
-00040000: 00000000 00000000 00000000 00000000 ................
-00040010: 00000000 00000000 00000000 00000000 ................
-00040020: 00000000 00000000 00000000 00000000 ................
-00040030: 00000000 00000000 00000000 00000000 ................
-00040040: 00000000 00000000 00000000 00000000 ................
-00040050: 00000000 00000000 00000000 00000000 ................
-00040060: 00000000 00000000 00000000 00000000 ................
-00040070: 00000000 00000000 00000000 00000000 ................
-00040080: 00000000 00000000 00000000 00000000 ................
-00040090: 00000000 00000000 00000000 00000000 ................
-000400a0: 00000000 00000000 00000000 00000000 ................
-000400b0: 00000000 00000000 00000000 00000000 ................
-000400c0: 00000000 00000000 00000000 00000000 ................
-000400d0: 00000000 00000000 00000000 00000000 ................
-000400e0: 00000000 00000000 00000000 00000000 ................
-000400f0: 00000000 00000000 00000000 00000000 ................
-=>loads
-## Ready for S-Record download ...
-
-(Back at xpert.denx.de)
-[vlad@xpert vlad]$ cat hello_world.srec >/dev/ttyS0
-[vlad@xpert vlad]$ kermit -l /dev/ttyS0 -b 9600 -c
-Connecting to /dev/ttyS0, speed 9600.
-The escape character is Ctrl-\ (ASCII 28, FS)
-Type the escape character followed by C to get back,
-or followed by ? to see other options.
-md 40000
-00040000: 00018148 9421ffe0 7c0802a6 bf61000c ...H.!..|....a..
-00040010: 90010024 48000005 7fc802a6 801effe8 ...$H...........
-00040020: 7fc0f214 7c7f1b78 813f0038 7c9c2378 ....|..x.?.8|.#x
-00040030: 807e8000 7cbd2b78 80090010 3b600000 .~..|.+x....;`..
-00040040: 7c0803a6 4e800021 813f0038 7f84e378 |...N..!.?.8...x
-00040050: 807e8004 80090010 7c0803a6 4e800021 .~......|...N..!
-00040060: 7c1be000 4181003c 80bd0000 813f0038 |...A..<.....?.8
-00040070: 3bbd0004 2c050000 40820008 80be8008 ;...,...@.......
-00040080: 80090010 7f64db78 807e800c 3b7b0001 .....d.x.~..;{..
-00040090: 7c0803a6 4e800021 7c1be000 4081ffcc |...N..!|...@...
-000400a0: 813f0038 807e8010 80090010 7c0803a6 .?.8.~......|...
-000400b0: 4e800021 813f0038 80090004 7c0803a6 N..!.?.8....|...
-000400c0: 4e800021 2c030000 4182ffec 813f0038 N..!,...A....?.8
-000400d0: 80090000 7c0803a6 4e800021 813f0038 ....|...N..!.?.8
-000400e0: 807e8014 80090010 7c0803a6 4e800021 .~......|...N..!
-000400f0: 38600000 80010024 7c0803a6 bb61000c 8`.....$|....a..
-=>go 40004
-## Starting application at 0x00040004 ...
-Hello World
-argc = 1
-argv[0] = "40004"
-argv[1] = "<NULL>"
-Hit any key to exit ...
-
-## Application terminated, rc = 0x0
-=>
-
-x.x Image download and run over ethernet interface
-
-
-ppcboot 0.9.2 (May 13 2001 - 17:56:46)
-
-Initializing...
- CPU: MPC8240 Revsion 1.1 at 247 MHz: 16 kB I-Cache 16 kB D-Cache
- Board: CU824 Revision 1 Local Bus at 99 MHz
- DRAM: 64 MB
- FLASH: 16 MB
- In: serial
- Out: serial
- Err: serial
-
-Hit any key to stop autoboot: 0
-=>
-=>
-=>mw 40000 0 10000
-=>md 40000
-00040000: 00000000 00000000 00000000 00000000 ................
-00040010: 00000000 00000000 00000000 00000000 ................
-00040020: 00000000 00000000 00000000 00000000 ................
-00040030: 00000000 00000000 00000000 00000000 ................
-00040040: 00000000 00000000 00000000 00000000 ................
-00040050: 00000000 00000000 00000000 00000000 ................
-00040060: 00000000 00000000 00000000 00000000 ................
-00040070: 00000000 00000000 00000000 00000000 ................
-00040080: 00000000 00000000 00000000 00000000 ................
-00040090: 00000000 00000000 00000000 00000000 ................
-000400a0: 00000000 00000000 00000000 00000000 ................
-000400b0: 00000000 00000000 00000000 00000000 ................
-000400c0: 00000000 00000000 00000000 00000000 ................
-000400d0: 00000000 00000000 00000000 00000000 ................
-000400e0: 00000000 00000000 00000000 00000000 ................
-000400f0: 00000000 00000000 00000000 00000000 ................
-=>tftpboot 40000 hello_world.bin
-ARP broadcast 1
-TFTP from server 192.168.4.1; our IP address is 192.168.4.2
-Filename 'hello_world.bin'.
-Load address: 0x40000
-Loading: #############
-done
-Bytes transferred = 65912 (10178 hex)
-=>md 40000
-00040000: 00018148 9421ffe0 7c0802a6 bf61000c ...H.!..|....a..
-00040010: 90010024 48000005 7fc802a6 801effe8 ...$H...........
-00040020: 7fc0f214 7c7f1b78 813f0038 7c9c2378 ....|..x.?.8|.#x
-00040030: 807e8000 7cbd2b78 80090010 3b600000 .~..|.+x....;`..
-00040040: 7c0803a6 4e800021 813f0038 7f84e378 |...N..!.?.8...x
-00040050: 807e8004 80090010 7c0803a6 4e800021 .~......|...N..!
-00040060: 7c1be000 4181003c 80bd0000 813f0038 |...A..<.....?.8
-00040070: 3bbd0004 2c050000 40820008 80be8008 ;...,...@.......
-00040080: 80090010 7f64db78 807e800c 3b7b0001 .....d.x.~..;{..
-00040090: 7c0803a6 4e800021 7c1be000 4081ffcc |...N..!|...@...
-000400a0: 813f0038 807e8010 80090010 7c0803a6 .?.8.~......|...
-000400b0: 4e800021 813f0038 80090004 7c0803a6 N..!.?.8....|...
-000400c0: 4e800021 2c030000 4182ffec 813f0038 N..!,...A....?.8
-000400d0: 80090000 7c0803a6 4e800021 813f0038 ....|...N..!.?.8
-000400e0: 807e8014 80090010 7c0803a6 4e800021 .~......|...N..!
-000400f0: 38600000 80010024 7c0803a6 bb61000c 8`.....$|....a..
-=>go 40004
-## Starting application at 0x00040004 ...
-Hello World
-argc = 1
-argv[0] = "40004"
-argv[1] = "<NULL>"
-Hit any key to exit ...
-
-## Application terminated, rc = 0x0
-=>
diff --git a/board/cu824/config.mk b/board/cu824/config.mk
deleted file mode 100644
index 18673e16d4..0000000000
--- a/board/cu824/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (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
-#
-
-#
-# CU824 board
-#
-
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/cu824/cu824.c b/board/cu824/cu824.c
deleted file mode 100644
index 3edd27a3eb..0000000000
--- a/board/cu824/cu824.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * (C) Copyright 2001
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
- *
- * (C) Copyright 2001-2006
- * 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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <pci.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define BOARD_REV_REG 0xFE80002B
-
-int checkboard (void)
-{
- char revision = *(volatile char *)(BOARD_REV_REG);
- char buf[32];
-
- puts ("Board: CU824 ");
- printf("Revision %d ", revision);
- printf("Local Bus at %s MHz\n", strmhz(buf, gd->bus_clk));
-
- return 0;
-}
-
-long int initdram(int board_type)
-{
- long size;
- long new_bank0_end;
- long mear1;
- long emear1;
-
- size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
-
- new_bank0_end = size - 1;
- mear1 = mpc824x_mpc107_getreg(MEAR1);
- emear1 = mpc824x_mpc107_getreg(EMEAR1);
- mear1 = (mear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
- emear1 = (emear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
- mpc824x_mpc107_setreg(MEAR1, mear1);
- mpc824x_mpc107_setreg(EMEAR1, emear1);
-
- return (size);
-}
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_sandpoint_config_table[] = {
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0f, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
-
- { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_sandpoint_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
- pci_mpc824x_init(&hose);
-}
diff --git a/board/cu824/flash.c b/board/cu824/flash.c
deleted file mode 100644
index 7368176e54..0000000000
--- a/board/cu824/flash.c
+++ /dev/null
@@ -1,486 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-#define FLASH_BANK_SIZE 0x800000
-#define MAIN_SECT_SIZE 0x40000
-#define PARAM_SECT_SIZE 0x8000
-
-#define BOARD_CTRL_REG 0xFE800013
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-static int write_data (flash_info_t *info, ulong dest, ulong *data);
-static void write_via_fpu(vu_long *addr, ulong *data);
-static __inline__ unsigned long get_msr(void);
-static __inline__ void set_msr(unsigned long msr);
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-/*---------------------------------------------------------------------*/
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init(void)
-{
- int i, j;
- ulong size = 0;
- volatile unsigned char *bcr = (volatile unsigned char *)(BOARD_CTRL_REG);
-
- DEBUGF("Write protect was: 0x%02X\n", *bcr);
- *bcr &= 0x1; /* FWPT must be 0 */
- *bcr |= 0x6; /* FWP0 = FWP1 = 1 */
- DEBUGF("Write protect is: 0x%02X\n", *bcr);
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- vu_long *addr = (vu_long *)(CFG_FLASH_BASE + i * FLASH_BANK_SIZE);
-
- addr[0] = 0x00900090;
-
- DEBUGF ("Flash bank # %d:\n"
- "\tManuf. ID @ 0x%08lX: 0x%08lX\n"
- "\tDevice ID @ 0x%08lX: 0x%08lX\n",
- i,
- (ulong)(&addr[0]), addr[0],
- (ulong)(&addr[2]), addr[2]);
-
- if ((addr[0] == addr[1]) && (addr[0] == INTEL_MANUFACT) &&
- (addr[2] == addr[3]) && (addr[2] == INTEL_ID_28F160F3B))
- {
- flash_info[i].flash_id = (FLASH_MAN_INTEL & FLASH_VENDMASK) |
- (INTEL_ID_28F160F3B & FLASH_TYPEMASK);
- } else {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- addr[0] = 0xFFFFFFFF;
- goto Done;
- }
-
- DEBUGF ("flash_id = 0x%08lX\n", flash_info[i].flash_id);
-
- addr[0] = 0xFFFFFFFF;
-
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset(flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- for (j = 0; j < flash_info[i].sector_count; j++) {
- if (j <= 7) {
- flash_info[i].start[j] = CFG_FLASH_BASE +
- i * FLASH_BANK_SIZE +
- j * PARAM_SECT_SIZE;
- } else {
- flash_info[i].start[j] = CFG_FLASH_BASE +
- i * FLASH_BANK_SIZE +
- (j - 7)*MAIN_SECT_SIZE;
- }
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE + FLASH_BANK_SIZE
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[1]);
-#else
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-#if CFG_ENV_ADDR >= CFG_FLASH_BASE + FLASH_BANK_SIZE
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[1]);
-#else
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-#endif
-
-Done:
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch ((i = info->flash_id & FLASH_VENDMASK)) {
- case (FLASH_MAN_INTEL & FLASH_VENDMASK):
- printf ("Intel: ");
- break;
- default:
- printf ("Unknown Vendor 0x%04x ", i);
- break;
- }
-
- switch ((i = info->flash_id & FLASH_TYPEMASK)) {
- case (INTEL_ID_28F160F3B & FLASH_TYPEMASK):
- printf ("28F160F3B (16Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type 0x%04x\n", i);
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
-Done:
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- DEBUGF ("Erase flash bank %d sect %d ... %d\n",
- info - &flash_info[0], s_first, s_last);
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (FLASH_MAN_INTEL & FLASH_VENDMASK)) {
- printf ("Can erase only Intel flash types - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *)(info->start[sect]);
-
- DEBUGF ("Erase sect %d @ 0x%08lX\n",
- sect, (ulong)addr);
-
- /* Disable interrupts which might cause a timeout
- * here.
- */
- flag = disable_interrupts();
-
- addr[0] = 0x00500050; /* clear status register */
- addr[0] = 0x00200020; /* erase setup */
- addr[0] = 0x00D000D0; /* erase confirm */
-
- addr[1] = 0x00500050; /* clear status register */
- addr[1] = 0x00200020; /* erase setup */
- addr[1] = 0x00D000D0; /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((addr[0] & 0x00800080) != 0x00800080) ||
- ((addr[1] & 0x00800080) != 0x00800080) ) {
- if ((now=get_timer(start)) >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- addr[0] = 0x00B000B0; /* suspend erase */
- addr[0] = 0x00FF00FF; /* to read mode */
- return 1;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- addr[0] = 0x00FF00FF;
- }
- }
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define FLASH_WIDTH 8 /* flash bus width in bytes */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong wp, cp, msr;
- int l, rc, i;
- ulong data[2];
- ulong *datah = &data[0];
- ulong *datal = &data[1];
-
- DEBUGF ("Flash write_buff: @ 0x%08lx, src 0x%08lx len %ld\n",
- addr, (ulong)src, cnt);
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- msr = get_msr();
- set_msr(msr | MSR_FP);
-
- wp = (addr & ~(FLASH_WIDTH-1)); /* get lower aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- *datah = *datal = 0;
-
- for (i = 0, cp = wp; i < l; i++, cp++) {
- if (i >= 4) {
- *datah = (*datah << 8) |
- ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datal << 8) | (*(uchar *)cp);
- }
- for (; i < FLASH_WIDTH && cnt > 0; ++i) {
- char tmp;
-
- tmp = *src;
-
- src++;
-
- if (i >= 4) {
- *datah = (*datah << 8) |
- ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datal << 8) | tmp;
-
- --cnt; ++cp;
- }
-
- for (; cnt == 0 && i < FLASH_WIDTH; ++i, ++cp) {
- if (i >= 4) {
- *datah = (*datah << 8) |
- ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datah << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_data(info, wp, data)) != 0) {
- set_msr(msr);
- return (rc);
- }
-
- wp += FLASH_WIDTH;
- }
-
- /*
- * handle FLASH_WIDTH aligned part
- */
- while (cnt >= FLASH_WIDTH) {
- *datah = *(ulong *)src;
- *datal = *(ulong *)(src + 4);
- if ((rc = write_data(info, wp, data)) != 0) {
- set_msr(msr);
- return (rc);
- }
- wp += FLASH_WIDTH;
- cnt -= FLASH_WIDTH;
- src += FLASH_WIDTH;
- }
-
- if (cnt == 0) {
- set_msr(msr);
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- *datah = *datal = 0;
- for (i = 0, cp = wp; i < FLASH_WIDTH && cnt > 0; ++i, ++cp) {
- char tmp;
-
- tmp = *src;
-
- src++;
-
- if (i >= 4) {
- *datah = (*datah << 8) | ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datal << 8) | tmp;
-
- --cnt;
- }
-
- for (; i < FLASH_WIDTH; ++i, ++cp) {
- if (i >= 4) {
- *datah = (*datah << 8) | ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datal << 8) | (*(uchar *)cp);
- }
-
- rc = write_data(info, wp, data);
- set_msr(msr);
-
- return (rc);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, ulong *data)
-{
- vu_long *addr = (vu_long *)dest;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if (((addr[0] & data[0]) != data[0]) ||
- ((addr[1] & data[1]) != data[1]) ) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0] = 0x00400040; /* write setup */
- write_via_fpu(addr, data);
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- while (((addr[0] & 0x00800080) != 0x00800080) ||
- ((addr[1] & 0x00800080) != 0x00800080) ) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- addr[0] = 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- addr[0] = 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void write_via_fpu(vu_long *addr, ulong *data)
-{
- __asm__ __volatile__ ("lfd 1, 0(%0)" : : "r" (data));
- __asm__ __volatile__ ("stfd 1, 0(%0)" : : "r" (addr));
-}
-/*-----------------------------------------------------------------------
- */
-static __inline__ unsigned long get_msr(void)
-{
- unsigned long msr;
-
- __asm__ __volatile__ ("mfmsr %0" : "=r" (msr) :);
- return msr;
-}
-
-static __inline__ void set_msr(unsigned long msr)
-{
- __asm__ __volatile__ ("mtmsr %0" : : "r" (msr));
-}
diff --git a/board/cu824/u-boot.lds b/board/cu824/u-boot.lds
deleted file mode 100644
index 7be85e4410..0000000000
--- a/board/cu824/u-boot.lds
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/dave/B2/B2.c b/board/dave/B2/B2.c
deleted file mode 100644
index 64fe948fcc..0000000000
--- a/board/dave/B2/B2.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * (C) Copyright 2004
- * DAVE Srl
- * http://www.dave-tech.it
- * http://www.wawnet.biz
- * mailto:info@wawnet.biz
- *
- * 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 <common.h>
-#include <asm/hardware.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialization
- */
-
-int board_init (void)
-{
- u32 temp;
-
- /* Configuration Port Control Register*/
- /* Port A */
- PCONA = 0x3ff;
-
- /* Port B */
- PCONB = 0xff;
- PDATB = 0xFFFF;
-
- /* Port C */
- /*
- PCONC = 0xff55ff15;
- PDATC = 0x0;
- PUPC = 0xffff;
- */
-
- /* Port D */
- /*
- PCOND = 0xaaaa;
- PUPD = 0xff;
- */
-
- /* Port E */
- PCONE = 0x0001aaa9;
- PDATE = 0x0;
- PUPE = 0xff;
-
- /* Port F */
- PCONF = 0x124955;
- PDATF = 0xff; /* B2-eth_reset tied high level */
- /*
- PUPF = 0x1e3;
- */
-
- /* Port G */
- PUPG = 0x1;
- PCONG = 0x3; /*PG0= EINT0= ETH_INT prepared for linux kernel*/
-
- INTMSK = 0x03fffeff;
- INTCON = 0x05;
-
- /*
- Configure chip ethernet interrupt as High level
- Port G EINT 0-7 EINT0 -> CHIP ETHERNET
- */
- temp = EXTINT;
- temp &= ~0x7;
- temp |= 0x1; /*LEVEL_HIGH*/
- EXTINT = temp;
-
- /*
- Reset SMSC LAN91C96 chip
- */
- temp= PCONF;
- temp |= 0x00000040;
- PCONF = temp;
-
- /* Reset high */
- temp = PDATF;
- temp |= (1 << 3);
- PDATF = temp;
-
- /* Short delay */
- for (temp=0;temp<10;temp++)
- {
- /* NOP */
- }
-
- /* Reset low */
- temp = PDATF;
- temp &= ~(1 << 3);
- PDATF = temp;
-
- /* arch number MACH_TYPE_MBA44B0 */
- gd->bd->bi_arch_number = MACH_TYPE_S3C44B0;
-
- /* location of boot parameters */
- gd->bd->bi_boot_params = 0x0c000100;
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return (0);
-}
diff --git a/board/dave/B2/Makefile b/board/dave/B2/Makefile
deleted file mode 100644
index 56b286f85e..0000000000
--- a/board/dave/B2/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2002
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@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
-#
-
-include $(TOPDIR)/config.mk
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS := B2.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/dave/B2/config.mk b/board/dave/B2/config.mk
deleted file mode 100644
index 521662207c..0000000000
--- a/board/dave/B2/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (C) Copyright 2000-2004
-# 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
-#
-
-TEXT_BASE = 0x0C100000
-
-PLATFORM_CPPFLAGS += -Uarm
diff --git a/board/dave/B2/flash.c b/board/dave/B2/flash.c
deleted file mode 100644
index ad67e865b3..0000000000
--- a/board/dave/B2/flash.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/hardware.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-#ifdef __DEBUG_START_FROM_SRAM__
- return CFG_DUMMY_FLASH_SIZE;
-#else
- unsigned long size_b0;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (0, &flash_info[0]);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-#endif
-}
diff --git a/board/dave/B2/lowlevel_init.S b/board/dave/B2/lowlevel_init.S
deleted file mode 100644
index 2f3a3645ed..0000000000
--- a/board/dave/B2/lowlevel_init.S
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * (C) Copyright 2004
- * DAVE Srl
- *
- * http://www.dave-tech.it
- * http://www.wawnet.biz
- * mailto:info@wawnet.biz
- *
- * memsetup-sa1110.S (blob): memory setup for various SA1110 architectures
- * Modified By MATTO
- *
- * Copyright (C) 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl)
- *
- * 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
- *
- */
-
-/*
- * Documentation:
- * Intel Corporation, "Intel StrongARM SA-1110 Microprocessor
- * Advanced Developer's manual, December 1999
- *
- * Intel has a very hard to find SDRAM configurator on their web site:
- * http://appzone.intel.com/hcd/sa1110/memory/index.asp
- *
- * NOTE: This code assumes that an SA1110 CPU *always* uses SDRAM. This
- * appears to be true, but it might be possible that somebody designs a
- * board with mixed EDODRAM/SDRAM memory (which is a bad idea). -- Erik
- *
- * 04-10-2001: SELETZ
- * - separated memory config for multiple platform support
- * - perform SA1110 Hardware Reset Procedure
- *
- */
-
-.equ B0_Tacs, 0x0 /* 0clk */
-.equ B0_Tcos, 0x0 /* 0clk */
-.equ B0_Tacc, 0x4 /* 6clk */
-.equ B0_Tcoh, 0x0 /* 0clk */
-.equ B0_Tah, 0x0 /* 0clk */
-.equ B0_Tacp, 0x0 /* 0clk */
-.equ B0_PMC, 0x0 /* normal(1data) */
-/* Bank 1 parameter */
-.equ B1_Tacs, 0x3 /* 4clk */
-.equ B1_Tcos, 0x3 /* 4clk */
-.equ B1_Tacc, 0x7 /* 14clkv */
-.equ B1_Tcoh, 0x3 /* 4clk */
-.equ B1_Tah, 0x3 /* 4clk */
-.equ B1_Tacp, 0x3 /* 6clk */
-.equ B1_PMC, 0x0 /* normal(1data) */
-
-/* Bank 2 parameter - LAN91C96 */
-.equ B2_Tacs, 0x3 /* 4clk */
-.equ B2_Tcos, 0x3 /* 4clk */
-.equ B2_Tacc, 0x7 /* 14clk */
-.equ B2_Tcoh, 0x3 /* 4clk */
-.equ B2_Tah, 0x3 /* 4clk */
-.equ B2_Tacp, 0x3 /* 6clk */
-.equ B2_PMC, 0x0 /* normal(1data) */
-
-/* Bank 3 parameter */
-.equ B3_Tacs, 0x3 /* 4clk */
-.equ B3_Tcos, 0x3 /* 4clk */
-.equ B3_Tacc, 0x7 /* 14clk */
-.equ B3_Tcoh, 0x3 /* 4clk */
-.equ B3_Tah, 0x3 /* 4clk */
-.equ B3_Tacp, 0x3 /* 6clk */
-.equ B3_PMC, 0x0 /* normal(1data) */
-
-/* Bank 4 parameter */
-.equ B4_Tacs, 0x3 /* 4clk */
-.equ B4_Tcos, 0x3 /* 4clk */
-.equ B4_Tacc, 0x7 /* 14clk */
-.equ B4_Tcoh, 0x3 /* 4clk */
-.equ B4_Tah, 0x3 /* 4clk */
-.equ B4_Tacp, 0x3 /* 6clk */
-.equ B4_PMC, 0x0 /* normal(1data) */
-
-/* Bank 5 parameter */
-.equ B5_Tacs, 0x3 /* 4clk */
-.equ B5_Tcos, 0x3 /* 4clk */
-.equ B5_Tacc, 0x7 /* 14clk */
-.equ B5_Tcoh, 0x3 /* 4clk */
-.equ B5_Tah, 0x3 /* 4clk */
-.equ B5_Tacp, 0x3 /* 6clk */
-.equ B5_PMC, 0x0 /* normal(1data) */
-
-/* Bank 6(if SROM) parameter */
-.equ B6_Tacs, 0x3 /* 4clk */
-.equ B6_Tcos, 0x3 /* 4clk */
-.equ B6_Tacc, 0x7 /* 14clk */
-.equ B6_Tcoh, 0x3 /* 4clk */
-.equ B6_Tah, 0x3 /* 4clk */
-.equ B6_Tacp, 0x3 /* 6clk */
-.equ B6_PMC, 0x0 /* normal(1data) */
-
-/* Bank 7(if SROM) parameter */
-.equ B7_Tacs, 0x3 /* 4clk */
-.equ B7_Tcos, 0x3 /* 4clk */
-.equ B7_Tacc, 0x7 /* 14clk */
-.equ B7_Tcoh, 0x3 /* 4clk */
-.equ B7_Tah, 0x3 /* 4clk */
-.equ B7_Tacp, 0x3 /* 6clk */
-.equ B7_PMC, 0x0 /* normal(1data) */
-
-/* Bank 6 parameter */
-.equ B6_MT, 0x3 /* SDRAM */
-.equ B6_Trcd, 0x0 /* 2clk */
-.equ B6_SCAN, 0x0 /* 10bit */
-
-.equ B7_MT, 0x3 /* SDRAM */
-.equ B7_Trcd, 0x0 /* 2clk */
-.equ B7_SCAN, 0x0 /* 10bit */
-
-
-/* REFRESH parameter */
-.equ REFEN, 0x1 /* Refresh enable */
-.equ TREFMD, 0x0 /* CBR(CAS before RAS)/Auto refresh */
-.equ Trp, 0x0 /* 2clk */
-.equ Trc, 0x3 /* 0x1=5clk 0x3=11clk*/
-.equ Tchr, 0x0 /* 0x2=3clk 0x0=0clks */
-.equ REFCNT, 879
-
-MEMORY_CONFIG:
- .long 0x12111900 /* Bank0 = OM[1:0] , Bank1-7 16bit, Bank2=Nowait,UB/LB*/
- .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC)) /*GCS0*/
- .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC)) /*GCS1*/
- .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC)) /*GCS2*/
- .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC)) /*GCS3*/
- .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC)) /*GCS4*/
- .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC)) /*GCS5*/
- .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN)) /*GCS6*/
- .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN)) /*GCS7*/
- .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT) /*REFRESH RFEN=1, TREFMD=0, trp=3clk, trc=5clk, tchr=3clk,count=1019*/
- .word 0x17 /*SCLK power down mode, BANKSIZE 16M/16M*/
- .word 0x20 /*MRSR6 CL=2clk*/
- .word 0x20 /*MRSR7*/
-
-
-.globl lowlevel_init
-lowlevel_init:
-
- /*
- the next instruction fail due memory relocation...
- we'll find the right MEMORY_CONFIG address with the next 3 lines...
- */
- /*ldr r0, =MEMORY_CONFIG*/
- mov r0, pc
- ldr r1, =(0x38+4)
- sub r0, r0, r1
-
- ldmia r0, {r1-r13}
- ldr r0, =0x01c80000
- stmia r0, {r1-r13}
- mov pc, lr
diff --git a/board/dave/B2/u-boot.lds b/board/dave/B2/u-boot.lds
deleted file mode 100644
index e10ac437ec..0000000000
--- a/board/dave/B2/u-boot.lds
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/s3c44b0/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- armboot_end_data = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/dave/PPChameleonEVB/Makefile b/board/dave/PPChameleonEVB/Makefile
deleted file mode 100644
index cb7becb4db..0000000000
--- a/board/dave/PPChameleonEVB/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o nand.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $^
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/dave/PPChameleonEVB/PPChameleonEVB.c b/board/dave/PPChameleonEVB/PPChameleonEVB.c
deleted file mode 100644
index e8302d9fc7..0000000000
--- a/board/dave/PPChameleonEVB/PPChameleonEVB.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * (C) Copyright 2003
- * DAVE Srl
- * http://www.dave-tech.it
- * http://www.wawnet.biz
- * mailto:info@wawnet.biz
- *
- * 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 <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-/* Prototypes */
-int gunzip(void *, int, unsigned char *, unsigned long *);
-
-int board_early_init_f (void)
-{
- out32(GPIO0_OR, CFG_NAND0_CE); /* set initial outputs */
- out32(GPIO0_OR, CFG_NAND1_CE); /* set initial outputs */
-
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0)
- * IRQ 26 (EXT IRQ 1)
- * IRQ 27 (EXT IRQ 2)
- * IRQ 28 (EXT IRQ 3)
- * IRQ 29 (EXT IRQ 4)
- * IRQ 30 (EXT IRQ 5)
- * IRQ 31 (EXT IRQ 6)
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
-#if 1 /* test-only */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-#else
- mtebc (epcr, 0x28400000); /* ebc in high-z */
-#endif
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-extern flash_info_t flash_info[]; /* info for FLASH chips */
-
-int misc_init_r (void)
-{
- /* adjust flash start and size as well as the offset */
- gd->bd->bi_flashstart = 0 - flash_info[0].size;
- gd->bd->bi_flashoffset= flash_info[0].size - CFG_MONITOR_LEN;
-#if 0
- volatile unsigned short *fpga_mode =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL);
- volatile unsigned char *duart0_mcr =
- (unsigned char *)((ulong)DUART0_BA + 4);
- volatile unsigned char *duart1_mcr =
- (unsigned char *)((ulong)DUART1_BA + 4);
-
- bd_t *bd = gd->bd;
- char * tmp; /* Temporary char pointer */
- unsigned char *dst;
- ulong len = sizeof(fpgadata);
- int status;
- int index;
- int i;
- unsigned long cntrl0Reg;
-
- dst = malloc(CFG_FPGA_MAX_SIZE);
- if (gunzip (dst, CFG_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
- printf ("GUNZIP ERROR - must RESET board to recover\n");
- do_reset (NULL, 0, 0, NULL);
- }
-
- status = fpga_boot(dst, len);
- if (status != 0) {
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("FPGA: %s\n", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=20; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc ('\n');
- do_reset(NULL, 0, 0, NULL);
- }
-
- puts("FPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("%s ", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
-
- free(dst);
-
- /*
- * Reset FPGA via FPGA_DATA pin
- */
- SET_FPGA(FPGA_PRG | FPGA_CLK);
- udelay(1000); /* wait 1ms */
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);
- udelay(1000); /* wait 1ms */
-#endif
-
-#if 0
- /*
- * Enable power on PS/2 interface
- */
- *fpga_mode |= CFG_FPGA_CTRL_PS2_RESET;
-
- /*
- * Enable interrupts in exar duart mcr[3]
- */
- *duart0_mcr = 0x08;
- *duart1_mcr = 0x08;
-#endif
- return (0);
-}
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming PPChameleonEVB");
- } else {
- puts(str);
- }
-
- putc ('\n');
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0 /* test-only */
- for (;;) {
- NAND_DISABLE_CE(1);
- udelay(100);
- NAND_ENABLE_CE(1);
- udelay(100);
- }
-#endif
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef CONFIG_CFB_CONSOLE
-# ifdef CONFIG_CONSOLE_EXTRA_INFO
-# include <video_fb.h>
-extern GraphicDevice smi;
-
-void video_get_info_str (int line_number, char *info)
-{
- uint pvr = get_pvr ();
-
- /* init video info strings for graphic console */
- switch (line_number) {
- case 1:
- switch (pvr) {
- case PVR_405EP_RB:
- sprintf (info, " AMCC PowerPC 405EP Rev. B");
- break;
- default:
- sprintf (info, " AMCC PowerPC 405EP Rev. <unknown>");
- break;
- }
- return;
- case 2:
- sprintf (info, " DAVE Srl PPChameleonEVB - www.dave-tech.it");
- return;
- case 3:
- sprintf (info, " %s", smi.modeIdent);
- return;
- }
-
- /* no more info lines */
- *info = 0;
- return;
-}
-# endif /* CONFIG_CONSOLE_EXTRA_INFO */
-#endif /* CONFIG_CFB_CONSOLE */
diff --git a/board/dave/PPChameleonEVB/config.mk b/board/dave/PPChameleonEVB/config.mk
deleted file mode 100644
index 9083aacfab..0000000000
--- a/board/dave/PPChameleonEVB/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (C) Copyright 2000, 2006
-# 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
-#
-
-# Reserve 256 kB for Monitor
-#TEXT_BASE = 0xFFFC0000
-
-# Reserve 320 kB for Monitor
-TEXT_BASE = 0xFFFB0000
diff --git a/board/dave/PPChameleonEVB/flash.c b/board/dave/PPChameleonEVB/flash.c
deleted file mode 100644
index 692d275a59..0000000000
--- a/board/dave/PPChameleonEVB/flash.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-#ifdef __DEBUG_START_FROM_SRAM__
- return CFG_DUMMY_FLASH_SIZE;
-#else
- unsigned long size;
- int i;
- uint pbcr;
- unsigned long base;
- int size_val = 0;
-
- debug("[%s, %d] Entering ...\n", __FUNCTION__, __LINE__);
- debug("[%s, %d] flash_info = 0x%08X ...\n", __FUNCTION__, __LINE__, flash_info);
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- debug("[%s, %d] Calling flash_get_size ...\n", __FUNCTION__, __LINE__);
- size = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size<<20);
- }
-
- debug("[%s, %d] Test point ...\n", __FUNCTION__, __LINE__);
-
- /* Setup offsets */
- flash_get_offsets (-size, &flash_info[0]);
- debug("[%s, %d] Test point ...\n", __FUNCTION__, __LINE__);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base = -size;
- switch (size) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
- debug("[%s, %d] Test point ...\n", __FUNCTION__, __LINE__);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- debug("[%s, %d] Test point ...\n", __FUNCTION__, __LINE__);
- flash_info[0].size = size;
-
- return (size);
-#endif
-}
diff --git a/board/dave/PPChameleonEVB/fpgadata.c b/board/dave/PPChameleonEVB/fpgadata.c
deleted file mode 100644
index f5e30dd6e3..0000000000
--- a/board/dave/PPChameleonEVB/fpgadata.c
+++ /dev/null
@@ -1,1139 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x80,0xb0,0xc0,0x3e,0x00,0x03,0x61,0x73,0x68,0x34,0x30,0x35,
- 0x5f,0x31,0x5f,0x30,0x30,0x2e,0x62,0x69,0x74,0x00,0x94,0x9b,0x7f,0x70,0x14,0x65,
- 0x9a,0xc7,0x9f,0xe9,0xee,0x24,0x9d,0x99,0x4e,0xa6,0x0d,0x84,0x42,0xe5,0x47,0xe7,
- 0xc7,0xba,0xa3,0x37,0x0c,0x63,0x82,0x9a,0x05,0x32,0x69,0x03,0x7f,0xe4,0x84,0x2d,
- 0xd9,0xbd,0xba,0xaa,0xdb,0x5a,0x6b,0x1d,0x5d,0xbc,0xe2,0xb6,0xd0,0xca,0xea,0x55,
- 0x1d,0x67,0x6d,0xdd,0xbd,0x24,0x39,0x08,0x07,0x2b,0x01,0xb9,0x23,0xee,0x51,0x5c,
- 0xf3,0x63,0xcb,0xa8,0xa9,0xad,0x11,0x76,0x0d,0x0a,0xa5,0x4d,0x2e,0x8b,0x21,0x44,
- 0xc8,0xb1,0xd6,0x6e,0x44,0x97,0x1d,0x34,0xab,0x23,0x72,0x18,0xd1,0x92,0x44,0x20,
- 0xb9,0xf7,0xed,0xee,0xf7,0xed,0x9f,0x33,0xc9,0x8e,0x7f,0xf8,0xe4,0x9d,0xd7,0xf6,
- 0x7d,0x9e,0x79,0xfb,0x79,0x3e,0xfd,0x7d,0xde,0x86,0xd2,0xe8,0xb8,0xf9,0x0f,0x40,
- 0xe8,0x31,0x90,0x1f,0x7b,0x66,0xc3,0xb2,0xe4,0x7d,0x8f,0xde,0xfb,0x68,0x32,0x99,
- 0x78,0xea,0xc7,0xeb,0xe1,0x71,0x88,0xd4,0x3d,0x73,0x5f,0xf2,0x89,0x7f,0xfc,0xe9,
- 0xbd,0xcb,0x96,0xc1,0x8f,0xf1,0x5f,0xc9,0x64,0xfd,0xd2,0xe4,0x7d,0x4b,0xef,0xad,
- 0x87,0xf5,0x50,0x7a,0x6f,0x72,0xf9,0xb2,0x65,0xcb,0x97,0x35,0xc0,0x13,0x10,0xaa,
- 0x3f,0x3c,0x8d,0x3f,0x2f,0xbf,0xf0,0xb7,0x7f,0x9f,0x04,0x14,0x02,0x80,0x92,0x64,
- 0x28,0x4d,0xfe,0x1d,0x49,0x86,0x94,0x10,0xa0,0xa6,0x25,0x49,0xd0,0xc9,0xdf,0x60,
- 0x7d,0x5f,0x9a,0x04,0xc5,0xf9,0x77,0x28,0x09,0x2a,0xac,0x03,0x75,0x07,0x54,0x24,
- 0x61,0xe6,0x8f,0x2a,0x20,0x6a,0xfe,0x85,0xf3,0xa7,0x87,0x50,0xde,0x59,0xf6,0xa7,
- 0xe9,0x9a,0x46,0x4d,0x6e,0x16,0xd7,0x0f,0xa9,0xc0,0xae,0x7f,0x61,0x56,0xd7,0xff,
- 0x9a,0x5e,0xff,0x2f,0x9d,0x0f,0x15,0xb3,0x98,0x0e,0x20,0xb0,0xf5,0x58,0xf3,0x11,
- 0xc4,0x20,0x0c,0x1c,0x02,0x0d,0x14,0x6c,0x78,0xaf,0x3f,0x40,0xad,0x93,0x45,0x53,
- 0x70,0x03,0x35,0x65,0xa3,0xa3,0xfc,0x3c,0x38,0x87,0x9a,0x40,0x9a,0xe0,0x53,0x30,
- 0x4d,0x46,0x8e,0xf1,0x57,0x4d,0x63,0x82,0x1f,0x87,0x56,0x6b,0x7e,0xff,0xfc,0x5f,
- 0xc1,0x71,0x94,0xc8,0x46,0xba,0x9a,0x13,0xdc,0x76,0x94,0x80,0xb2,0x4c,0x38,0x61,
- 0x8e,0x1c,0xe3,0xae,0x52,0x23,0x2b,0xd0,0x28,0x0e,0x0a,0x3b,0xe0,0x28,0xc4,0xf5,
- 0x88,0x1c,0xae,0x85,0x76,0x88,0x83,0x98,0xe4,0x24,0x73,0x24,0xc9,0x0d,0x53,0xa3,
- 0x1f,0x2f,0xd2,0xfc,0xe8,0xd0,0x0b,0xc7,0x21,0xa1,0x47,0xba,0xfb,0x13,0xb0,0x1d,
- 0x12,0x70,0x7b,0x92,0x8b,0x9b,0x23,0x19,0xee,0x0a,0x35,0xc6,0x05,0xba,0x9e,0xef,
- 0x55,0x5e,0x81,0x1b,0x90,0xd2,0xa3,0xfb,0xf8,0xa5,0xca,0x19,0x58,0x19,0x93,0x32,
- 0x35,0x71,0x73,0x24,0xc3,0x5f,0xa1,0xc6,0xc8,0x6a,0x3a,0x5f,0x0b,0x9d,0x80,0x69,
- 0x68,0xd2,0xa3,0x23,0xfc,0x4d,0x62,0x24,0xa3,0xe3,0xa6,0xa1,0x3b,0x8d,0x1c,0xa4,
- 0xe9,0x7a,0xe4,0x5e,0x7a,0xfd,0x8d,0xf0,0x19,0xa4,0xa0,0xdc,0x71,0x59,0x66,0x8c,
- 0x0b,0x74,0xfd,0xa3,0x45,0x71,0xd9,0x5c,0xff,0x3d,0x12,0xbc,0x8f,0xd7,0xdf,0xf9,
- 0x1b,0x7b,0xd9,0xcc,0xb8,0x86,0x77,0xbf,0x75,0x7d,0x61,0xad,0x19,0x04,0xc4,0x7d,
- 0xb7,0xe3,0x10,0x17,0xd7,0xee,0x74,0x84,0x85,0x19,0x13,0xf8,0x5e,0x31,0x3f,0xe3,
- 0xf0,0x23,0xe8,0x43,0x4b,0xb2,0x91,0x1f,0x84,0x53,0xf2,0x5e,0xb4,0xf4,0xc3,0xd2,
- 0x4d,0xdc,0x45,0x73,0x04,0x1b,0xc8,0x32,0x46,0xd9,0xf5,0x5b,0xc4,0xb5,0xf0,0x25,
- 0x5a,0xa9,0x47,0x77,0xf1,0x6b,0x95,0x8f,0x60,0x25,0x8a,0x26,0xf9,0x61,0xf8,0x12,
- 0xf0,0x48,0x03,0x7f,0x16,0x61,0x23,0x8b,0x47,0xce,0x73,0x74,0x3f,0xa8,0x0b,0x7b,
- 0xcd,0x20,0x7c,0x61,0x44,0xa3,0x51,0x2f,0x67,0x61,0xf9,0x82,0xbf,0xa2,0x5a,0xf1,
- 0x19,0x29,0xa6,0xf1,0x11,0x8b,0x7a,0xa5,0x1b,0x02,0x0e,0x02,0x8a,0xc4,0xe1,0x0c,
- 0x8e,0x8f,0xe4,0x89,0xcf,0xca,0x2c,0x1e,0x19,0x62,0xbf,0xef,0xe0,0xed,0xfb,0xa0,
- 0x0f,0x96,0xe8,0x91,0x75,0xdc,0x02,0xd8,0x8a,0x0d,0xb1,0x95,0xfb,0xc0,0x1c,0xa1,
- 0x06,0x1e,0xb9,0xc6,0xe2,0xa9,0xc0,0x7e,0xa1,0x0f,0x3d,0x99,0x8d,0xfc,0x1d,0xb7,
- 0xbc,0x7a,0x2b,0x8a,0x6b,0x2e,0x7f,0x0d,0x43,0xdc,0xc4,0xe9,0xec,0xfa,0x1b,0xe8,
- 0x7e,0xcb,0xe0,0x6d,0xd6,0x0e,0x92,0x7e,0xb7,0x2f,0x9e,0x78,0x07,0x9e,0x67,0xd7,
- 0xcf,0x56,0xe6,0xe0,0x1b,0x48,0xa1,0x68,0x96,0x5f,0x21,0x0c,0x71,0x4d,0x07,0xcb,
- 0x34,0xde,0x1a,0x31,0x0c,0x21,0x85,0xff,0x9f,0xfc,0x84,0x40,0xfd,0x6d,0x09,0x69,
- 0xa1,0x09,0xec,0x66,0x14,0xf1,0x97,0x14,0x6c,0xc8,0xe5,0x88,0xcf,0x82,0x35,0xc2,
- 0x8c,0xf3,0x40,0xf7,0xbf,0x28,0x1f,0x86,0x49,0x48,0xa9,0xd1,0x2e,0xfe,0x09,0x38,
- 0x0d,0x2b,0x55,0xa9,0x8b,0xaf,0xa5,0x23,0x63,0xd4,0xe8,0x67,0xf7,0x0b,0x12,0xd6,
- 0xc3,0xeb,0x90,0x50,0x23,0xbb,0xda,0x8a,0xdb,0x4a,0x21,0xb1,0x21,0xb6,0x8f,0xab,
- 0x35,0x47,0xba,0xb8,0x31,0x6a,0x64,0x41,0xb6,0xe6,0x37,0x14,0xb1,0x6f,0xd7,0xc3,
- 0x36,0x48,0xb4,0x88,0xf3,0x9c,0xf3,0x6f,0x37,0x8d,0x53,0x6c,0x3f,0xc4,0xe6,0x0a,
- 0xf0,0x2a,0xc4,0xd5,0x88,0xcc,0x09,0xe2,0x66,0x88,0x3f,0x34,0x1f,0x1b,0x74,0x64,
- 0x80,0x1a,0xfd,0x21,0xba,0x1f,0x36,0x95,0xa5,0xa9,0x53,0x69,0x18,0x84,0x94,0x28,
- 0xa1,0x88,0xe2,0xf3,0xf7,0x22,0x4f,0xf7,0x67,0x77,0xa5,0xe9,0xd4,0xc3,0x4f,0xb7,
- 0x7f,0x80,0x8d,0xa6,0x87,0xa2,0xbb,0xdb,0xc7,0x7c,0xfe,0x7e,0x5c,0x4c,0xef,0xc7,
- 0xf9,0x45,0xd6,0xe0,0x3a,0x7e,0x0f,0x8e,0x4f,0x53,0x4b,0xf9,0x3a,0xde,0x35,0xbf,
- 0x89,0x18,0xa7,0x58,0xfe,0x69,0x98,0x9f,0x85,0x63,0xf8,0xb6,0x8a,0xb4,0xb5,0x29,
- 0x30,0x2a,0x24,0xe6,0x85,0xdb,0x38,0x6b,0x04,0xd9,0xc6,0x59,0x16,0xcf,0x16,0xe8,
- 0x30,0x9d,0xda,0x1d,0xee,0x80,0xcd,0x5c,0x62,0x30,0x2c,0xb7,0x61,0x37,0x05,0xe2,
- 0x66,0x05,0xf3,0xf7,0x7c,0x88,0x5e,0xbf,0x5b,0x38,0x6c,0x46,0x6f,0x37,0x0e,0xe3,
- 0x0b,0xd8,0x08,0x3b,0xc2,0xce,0x8c,0x8f,0xd9,0x7e,0xd0,0x0c,0x7f,0x13,0x6a,0x74,
- 0x01,0xdf,0x81,0xd7,0x9f,0x4a,0x97,0x77,0xf1,0x7e,0x7f,0x73,0x2c,0x5f,0x0d,0x86,
- 0xac,0xfd,0xd0,0xcd,0x8f,0x55,0x63,0x63,0xc3,0xd2,0xa0,0xf9,0xdf,0xb0,0xfc,0x23,
- 0xca,0x1a,0x09,0x3b,0x44,0xb7,0xf0,0x9a,0x38,0x28,0x18,0xd1,0xd6,0x7c,0xf1,0x1f,
- 0x62,0xfb,0x39,0x56,0x14,0x83,0x37,0x20,0x81,0x22,0x63,0xdc,0xeb,0xf0,0x32,0x2c,
- 0xe9,0xe2,0x3f,0xe4,0x62,0x22,0x19,0xd9,0xae,0x71,0x39,0xf3,0x2b,0x8d,0x1b,0xb2,
- 0xf7,0x83,0xb0,0x56,0xa8,0x11,0xf0,0xdd,0x51,0xcb,0x89,0xd0,0x2e,0xc4,0xcf,0xe3,
- 0xdb,0x64,0x87,0xeb,0x7e,0x39,0x89,0x8d,0x21,0xb6,0xdf,0x90,0xfc,0x88,0x79,0xb7,
- 0x66,0xe7,0x65,0x62,0x2f,0xc2,0x12,0x15,0xdf,0x86,0x0b,0xd8,0xfd,0x2b,0x3f,0xc0,
- 0x19,0x46,0x8e,0xcd,0xef,0xec,0xfc,0x11,0x7c,0x82,0x1a,0xb3,0xd1,0x0d,0xdf,0xae,
- 0x80,0xb7,0xdb,0x1a,0xb5,0xe8,0x06,0x7e,0x3f,0x5c,0x47,0x0b,0xb3,0xd1,0x4d,0xfc,
- 0x45,0xf8,0xa7,0x8e,0x46,0x62,0x5c,0xae,0xa6,0xf3,0xc5,0x4a,0x9c,0x6f,0x43,0x38,
- 0x7b,0x68,0xd8,0xbb,0x1b,0xf0,0x2f,0x10,0xfd,0xb5,0x37,0xdf,0x2e,0xce,0xf0,0xfd,
- 0x6d,0x34,0x3e,0x20,0xbc,0xa9,0x4e,0xa3,0xd4,0x58,0x34,0x17,0x99,0x07,0x67,0x3a,
- 0x9a,0xc6,0xe2,0x37,0xad,0xfa,0xb5,0x73,0x82,0x9f,0x82,0xe9,0xb6,0xa6,0x4b,0xb8,
- 0x7e,0xe9,0x1a,0x8d,0xff,0xcb,0xf3,0xf7,0xc1,0x75,0x58,0x92,0x8b,0xa4,0x39,0xb9,
- 0x65,0x6b,0xe6,0xdb,0xab,0xc5,0x71,0x7b,0xfd,0x17,0xd5,0xbe,0x8a,0x38,0x31,0x2e,
- 0xb3,0xdf,0x17,0x60,0x5f,0x08,0x7f,0x3b,0x78,0x67,0x2b,0xd7,0x4a,0xf2,0xd5,0x40,
- 0x77,0xda,0xe1,0xaf,0x68,0x19,0x76,0xfe,0x51,0x84,0x1d,0xa5,0x35,0x46,0xf4,0xda,
- 0x1e,0x44,0x3c,0xd4,0x7e,0x3f,0x46,0x12,0xd1,0xd1,0xd0,0x46,0x23,0x9e,0x45,0x56,
- 0x60,0x07,0xd9,0xfe,0xec,0xa9,0x24,0x45,0x01,0x7b,0x27,0xf2,0x0f,0x92,0xfc,0x99,
- 0x5e,0x90,0xf9,0x2b,0x7f,0xfd,0xb2,0xd7,0x83,0x42,0xbd,0x82,0x31,0x78,0x60,0xce,
- 0x21,0x6c,0x2c,0x4a,0x47,0x83,0xea,0x51,0x96,0xdd,0x2f,0x55,0xb2,0x55,0xef,0xb2,
- 0x7c,0x12,0xce,0xe1,0x7c,0x2e,0x65,0xf9,0x95,0xac,0xde,0x85,0x2c,0x43,0x5f,0x4d,
- 0xd7,0x7f,0x40,0xd8,0x68,0x16,0x29,0x8d,0xab,0x41,0xaf,0x40,0xe2,0xf1,0x58,0x26,
- 0xec,0xaf,0xbf,0xd9,0x07,0xd9,0x7e,0x28,0x8a,0xc3,0x2b,0x64,0xb0,0x93,0xab,0x26,
- 0xf5,0x3a,0x1b,0xeb,0x36,0xea,0xf5,0x3d,0xee,0xf9,0x6c,0xbf,0x89,0x73,0x25,0x78,
- 0x5e,0x8e,0x0f,0x46,0xb4,0x62,0x80,0x43,0x62,0x5c,0x15,0x65,0x9b,0x07,0xde,0xd1,
- 0x28,0x0f,0xb0,0xfc,0x03,0x65,0x1b,0x43,0xb8,0xec,0x0e,0x62,0xa7,0x14,0x38,0xa3,
- 0xa4,0xc8,0xfa,0x49,0x7c,0x96,0xeb,0xe7,0x7e,0xc3,0xff,0x1f,0xc2,0xa1,0x7b,0x17,
- 0x7f,0xa5,0xb3,0xfc,0x73,0xb0,0xf2,0xa6,0x3c,0xad,0x34,0x0d,0x44,0x5a,0x31,0xb4,
- 0x4c,0x93,0xec,0xc1,0xea,0xd7,0x35,0x1c,0x1f,0x5a,0xdf,0x59,0xfe,0xd1,0xcb,0x18,
- 0xe4,0x5c,0x80,0x3f,0x75,0x19,0x06,0xde,0x36,0x28,0x75,0xe9,0x39,0xcb,0x70,0xf3,
- 0x0f,0x02,0x06,0x39,0x39,0x91,0xf8,0xeb,0xc4,0x9e,0x00,0xfe,0x11,0x8b,0x58,0xf5,
- 0xc9,0xc1,0xf3,0x8a,0xbb,0xac,0xb3,0xfb,0xab,0x9f,0xe5,0x1f,0xfd,0xb6,0x5e,0x1a,
- 0xb4,0xcb,0x24,0x9e,0xae,0x30,0x3a,0xf8,0x87,0xed,0xcf,0xb9,0xbd,0xf4,0x47,0x1f,
- 0xc2,0xbc,0xe1,0xd8,0x06,0x4e,0x50,0xd1,0x59,0x7e,0xb8,0x04,0x27,0x68,0x10,0x26,
- 0xb8,0x69,0x58,0xaa,0x07,0xf2,0xcf,0x84,0x4a,0xe7,0x33,0xfe,0xc9,0xe0,0x6a,0xf8,
- 0xbe,0x67,0x9b,0x05,0xf0,0xcf,0xa0,0xc0,0x76,0x4b,0x4e,0x7c,0xdf,0xbf,0x7e,0xce,
- 0xe2,0x1f,0xfa,0xf9,0xb0,0x68,0x2d,0x8d,0x86,0x0e,0xcf,0x43,0x40,0x7c,0xdc,0xfc,
- 0xf3,0x58,0x68,0x11,0xad,0xfe,0xdf,0xc0,0x5e,0xc3,0x28,0x36,0x30,0x20,0x17,0x71,
- 0x80,0x81,0x83,0x7f,0xa0,0x1c,0xbe,0xcc,0x18,0x90,0x73,0x12,0x7e,0x47,0x40,0xc8,
- 0xe2,0x9f,0x1c,0x35,0x3c,0xfc,0x53,0x69,0xc7,0x07,0xa6,0x65,0x16,0x96,0xd4,0x00,
- 0x21,0x22,0xcc,0x3f,0x29,0x02,0x42,0x36,0xff,0xf4,0x54,0x9e,0xc5,0xb7,0xad,0x01,
- 0x39,0xd9,0xfc,0xf1,0xb9,0x6c,0xe7,0xff,0xdb,0xf6,0xc1,0xdb,0x26,0xe4,0x8c,0x1a,
- 0xfc,0x13,0xf1,0xf1,0x4f,0x84,0xf0,0x0f,0xbd,0xbe,0x0e,0xfb,0x61,0xab,0x09,0x39,
- 0xd7,0x2c,0x7f,0xbd,0xfc,0x83,0x8d,0x71,0x96,0x7f,0x5a,0x30,0x4f,0xb6,0x9b,0x90,
- 0x33,0x8c,0xb6,0xdb,0x61,0x94,0x5c,0xf1,0xb4,0xf9,0x24,0x57,0xd4,0x53,0x31,0x04,
- 0x06,0xe4,0xbc,0x07,0x17,0x38,0x8a,0x3d,0xe0,0x36,0xec,0x7a,0xd4,0xa2,0x66,0x21,
- 0xe7,0xa9,0x3e,0xd4,0x28,0x09,0xe2,0x1f,0x30,0x8b,0x5a,0x84,0x54,0xb7,0xd3,0x70,
- 0xbf,0xb3,0xcc,0xd5,0x5b,0xa8,0xd0,0x35,0xa7,0x1f,0x7c,0xfc,0x43,0xaa,0xed,0x4b,
- 0x50,0xed,0x2c,0xbb,0x15,0x36,0xff,0xc8,0x34,0xff,0xcc,0x9f,0x6b,0xd3,0x0e,0xb7,
- 0x0d,0xee,0x72,0x95,0x69,0x66,0x9c,0x12,0xe8,0xef,0x2b,0x0a,0x8c,0x76,0xc6,0x60,
- 0x33,0xfe,0xbd,0x9d,0xd8,0x63,0xf3,0x0f,0xdb,0x9f,0xc7,0x44,0xca,0x3f,0xf5,0x59,
- 0x5c,0x88,0xef,0x77,0x3b,0x2e,0x5a,0xc6,0x59,0x8e,0xae,0xa7,0xbb,0x8c,0xf1,0xde,
- 0xbb,0xda,0x64,0xcc,0x5d,0xd6,0x03,0xf8,0xa7,0xbb,0xe8,0x2b,0x0a,0x39,0x7f,0xe6,
- 0x4e,0xc3,0x11,0xf7,0x7c,0x71,0x92,0x4b,0x79,0xf8,0x07,0x1c,0xb4,0xd3,0x09,0x07,
- 0x61,0x0d,0x2a,0xc8,0x3f,0x62,0xe5,0x80,0xf0,0x2a,0x47,0xfd,0x8d,0x29,0x5e,0x7f,
- 0x43,0x16,0xef,0x31,0x1e,0xab,0x3c,0xcc,0xa2,0xa7,0x6c,0x73,0xc6,0xbf,0xd4,0x15,
- 0x4f,0xba,0x1f,0x0e,0x56,0x92,0x41,0xb2,0xc8,0x92,0xdf,0xc2,0x49,0xa8,0x0b,0xf6,
- 0x37,0xd7,0x41,0xaf,0xdf,0x03,0x34,0x3e,0x35,0xfe,0x69,0xcc,0xb8,0x8c,0xe8,0xfd,
- 0x1b,0x93,0x4d,0xda,0x91,0x30,0x6f,0xc3,0x44,0x28,0x05,0x3b,0x83,0x78,0x7b,0xa8,
- 0x83,0xee,0x7f,0x45,0x30,0xf9,0x27,0x46,0x68,0xe7,0x4d,0x93,0x76,0x30,0xf6,0x70,
- 0xa6,0x31,0xdf,0xe2,0x9f,0x41,0x9b,0x7f,0xac,0xfc,0x23,0x06,0xa5,0x1d,0x66,0x0c,
- 0xb1,0xfc,0x53,0x15,0x32,0xaa,0x7f,0x56,0x6c,0xad,0xc0,0x77,0x6b,0x32,0xcf,0xfd,
- 0x3b,0xa8,0xb2,0xeb,0xc3,0x22,0x4c,0x3b,0x8d,0x59,0x89,0xd0,0xce,0x75,0xad,0xd1,
- 0xc4,0x1e,0x32,0xe2,0x34,0x86,0x58,0xfe,0x31,0xf8,0x87,0x3c,0x9d,0xe1,0xec,0xa1,
- 0x98,0xd9,0x23,0xe4,0xcf,0x27,0xfd,0x2c,0xff,0xa8,0x95,0x53,0xaa,0x55,0xbf,0xa6,
- 0xd2,0xe7,0xd0,0x0a,0x5a,0xbf,0xf0,0xc8,0xeb,0xf8,0xf9,0xfd,0x86,0xf9,0xd5,0x08,
- 0xdb,0x3f,0x3d,0x38,0xff,0x18,0x4e,0xb5,0x72,0x37,0xe1,0x77,0x98,0x67,0xec,0x65,
- 0xb3,0x7c,0xe2,0xe4,0x9f,0x17,0x60,0x1f,0x85,0x9c,0x0f,0x42,0xee,0x7c,0xf5,0xb4,
- 0xc1,0x3f,0x4f,0x9e,0xc4,0x23,0x59,0x96,0x7f,0xd2,0x02,0x0b,0xda,0x39,0x35,0x6f,
- 0x3e,0x1f,0x65,0xfb,0xb3,0xa1,0xa8,0x57,0xb4,0x9c,0xba,0xa5,0x9e,0x83,0x67,0x83,
- 0xf3,0xe7,0x90,0x60,0xd7,0x5f,0x3a,0xb8,0xca,0x8f,0x85,0x0e,0xfe,0xa1,0xeb,0xd9,
- 0x0c,0x8e,0xea,0xf6,0x27,0x77,0x99,0xab,0x71,0xf0,0x0f,0x5d,0xcf,0x49,0xca,0x3f,
- 0x99,0xea,0x2b,0x26,0xd8,0x04,0xd6,0x5f,0x9b,0x7f,0x2a,0xe9,0x7c,0x8c,0xcd,0x79,
- 0xeb,0xb5,0x83,0x7f,0x84,0x32,0x38,0x2a,0x5b,0xd1,0x38,0x84,0x0d,0xfa,0xbc,0x3f,
- 0x82,0x89,0x71,0x58,0x39,0xaa,0xc4,0x47,0xd7,0x38,0xf9,0x47,0x2f,0x7d,0x92,0xc4,
- 0x67,0x00,0x3b,0x75,0xc2,0x55,0x5f,0x46,0x0c,0x03,0xf3,0xcf,0x05,0x17,0xff,0x68,
- 0x0b,0xb1,0x77,0x4a,0xd3,0xa0,0xe9,0xa6,0xd2,0xe4,0xad,0xef,0x6a,0xca,0xc3,0x3f,
- 0x45,0x53,0x94,0x7f,0xbe,0x16,0xc7,0xd1,0x7d,0x9a,0x34,0x42,0xf5,0x1f,0x22,0x04,
- 0x9d,0xf3,0xea,0x3f,0xba,0x6c,0x41,0x4e,0x92,0xfb,0x18,0x3a,0x95,0x7b,0x50,0x67,
- 0xb6,0x22,0x4e,0xb1,0xe7,0x57,0xb0,0xdd,0xa7,0xff,0xd8,0xfc,0x33,0x86,0x93,0xe9,
- 0x5d,0xa8,0x34,0x79,0x87,0xe4,0x7c,0x42,0xf7,0xea,0x3f,0x95,0x8c,0x7f,0x3e,0x81,
- 0x4e,0x54,0xad,0x95,0xf6,0xd8,0xfc,0xd9,0x4b,0x23,0x6c,0xeb,0x3f,0x3a,0xd5,0x7f,
- 0x32,0x7f,0x73,0x0e,0xc6,0xf5,0xfb,0xb3,0x65,0xdd,0xed,0x8c,0x9f,0x0d,0x45,0x22,
- 0x8f,0xfe,0x33,0xde,0x7c,0x13,0x6f,0x8d,0x26,0x3d,0xe1,0x8c,0x0f,0x97,0x5f,0xff,
- 0xc9,0xe0,0xc7,0xf6,0x41,0x75,0xb9,0x26,0xa5,0x22,0x7e,0x3e,0x77,0xf0,0x4f,0xc8,
- 0x5c,0x6d,0xf9,0x09,0xfc,0xfc,0xd8,0xa9,0x28,0x7b,0x36,0x1c,0xb3,0xf5,0xab,0x61,
- 0xbf,0xfe,0x93,0xa5,0xfc,0xf3,0x00,0x7e,0x0c,0x47,0x10,0x43,0xe2,0x32,0x8e,0x29,
- 0x18,0x01,0xfc,0x93,0xc5,0xfc,0xf3,0x00,0xbe,0x49,0xc3,0x9b,0x9e,0x7e,0x40,0xed,
- 0x38,0x50,0x73,0xb8,0x65,0x82,0xdb,0x6f,0xdc,0xb6,0x7c,0x20,0xff,0x3c,0x24,0x4a,
- 0xa6,0xda,0x93,0xe4,0x05,0xd0,0xb5,0x06,0x41,0xaa,0xe3,0x77,0xd0,0x91,0xb3,0xd4,
- 0x70,0xf0,0x4f,0xd9,0x09,0xec,0x94,0x11,0x84,0x77,0xe1,0xa6,0xdc,0x24,0x44,0x5b,
- 0xf9,0x9f,0x99,0xb2,0x4f,0xc6,0x0e,0x94,0xcd,0x3f,0x2f,0x17,0x59,0x41,0x38,0x16,
- 0x11,0xa0,0x1a,0x8e,0xe8,0xf1,0xd7,0x22,0x09,0x1a,0xf6,0xb3,0xd4,0x70,0xe8,0x3f,
- 0xbb,0x8c,0xe7,0x29,0x92,0x46,0xe6,0xc2,0xef,0xa1,0x46,0x17,0xc7,0xdb,0x56,0xc2,
- 0x1f,0x68,0x62,0xd9,0x4a,0xf9,0x87,0xce,0x47,0xb0,0x9f,0x3a,0xf5,0x7d,0x65,0xef,
- 0xb6,0xaa,0x2a,0x0c,0x42,0x8b,0x0c,0x22,0x32,0xf2,0x95,0x65,0xd8,0xcf,0x5f,0x2d,
- 0x73,0x69,0xd0,0x9a,0x57,0xc3,0xee,0x74,0x35,0x32,0xf4,0x46,0x96,0x88,0xac,0xfd,
- 0xe6,0xd4,0x7f,0x7a,0x28,0xe4,0xfc,0x40,0xf8,0x7d,0x73,0xfd,0x9e,0x05,0x63,0x7c,
- 0x0c,0x86,0x2c,0xfe,0xe1,0x2c,0xc3,0xa1,0xff,0x80,0x55,0x74,0x3a,0xf8,0x03,0x44,
- 0xff,0x81,0x47,0x3b,0xda,0x0b,0xeb,0x3f,0x63,0xf0,0x29,0xad,0x6e,0x9f,0xd6,0xd4,
- 0xb5,0x0e,0xef,0x5a,0x5e,0x2b,0xce,0x42,0xff,0xd9,0xd3,0x36,0x26,0x6c,0x53,0xaa,
- 0x5b,0x36,0xec,0x8b,0xac,0x2f,0xa0,0xff,0xcc,0xa7,0xfa,0x4f,0x77,0xf1,0x98,0xf8,
- 0x0a,0xae,0xd7,0x2d,0x72,0xf3,0x61,0x3f,0xff,0x38,0xf2,0x0f,0xe5,0x9f,0xe6,0xe1,
- 0xd0,0x36,0x50,0x54,0xb1,0xae,0x6d,0x00,0x76,0xe5,0xd5,0x7f,0x1a,0xca,0xd2,0x98,
- 0xf7,0x12,0x10,0x05,0x9e,0x80,0x5f,0x1d,0x48,0x6d,0x35,0x7e,0xfd,0xc1,0xd6,0x7f,
- 0x46,0x17,0x5a,0x4e,0xed,0x6e,0xff,0x0a,0x6e,0xc5,0xde,0x7a,0x28,0x7a,0xbe,0x7d,
- 0xbd,0x36,0x0b,0xfd,0x67,0x17,0xde,0x6f,0xef,0x40,0xbd,0x2e,0x9d,0x6f,0x67,0xfa,
- 0xd8,0x57,0xd4,0xb0,0xf9,0x67,0x93,0x6c,0x41,0x0e,0xe0,0xb2,0x8e,0xef,0x2f,0xf1,
- 0x9e,0x2d,0x61,0x05,0x15,0xe0,0x9f,0x22,0xcb,0xa9,0x0a,0xc2,0x3f,0xa2,0xd6,0x2c,
- 0xca,0x6d,0x82,0xe2,0xe5,0x3d,0x5b,0xff,0x99,0x7f,0xdb,0x61,0x07,0x4f,0xaa,0xca,
- 0xea,0xb0,0xdc,0xec,0xd7,0xdf,0xbc,0xfa,0x8f,0xb5,0xc8,0xd3,0xea,0x91,0xa7,0x03,
- 0xf5,0x3d,0x5b,0xff,0xc9,0x51,0xfd,0x27,0xc3,0x8f,0xa1,0x49,0x31,0xd5,0x1c,0xfd,
- 0x45,0x41,0xfd,0x87,0xf2,0x0f,0x0e,0xb2,0x82,0xf3,0x4f,0x4a,0x8e,0x13,0x63,0x16,
- 0xfa,0xcf,0x2f,0x9b,0xbf,0x03,0x53,0xb0,0x74,0x77,0x4f,0x36,0x1c,0xa3,0xb2,0x4f,
- 0x90,0xfe,0x43,0xf3,0x4f,0x03,0x17,0x49,0x6f,0x23,0x20,0xd4,0x10,0xa0,0xcf,0xdb,
- 0xfa,0x8f,0x66,0xf0,0xcf,0x93,0x7a,0x64,0x23,0xb7,0x12,0xfa,0xc4,0x25,0x80,0xf3,
- 0xd5,0x02,0xdd,0xcb,0x3f,0xb6,0xfe,0xd3,0x23,0x9a,0xfc,0x13,0xfd,0x87,0xc8,0x1d,
- 0xf0,0x5b,0xd4,0x78,0x69,0xed,0x86,0x55,0x8b,0x74,0x2f,0xff,0x38,0xf4,0x9f,0x85,
- 0x56,0xbe,0x3d,0x18,0xca,0x09,0x37,0x30,0xef,0x2d,0xc5,0x69,0x16,0xe5,0xe7,0x1f,
- 0xf8,0xb7,0x29,0xf8,0x57,0x52,0xa4,0x72,0xf8,0xa6,0x7b,0xa7,0xab,0xfe,0x70,0x74,
- 0xb2,0x86,0x95,0x2d,0x86,0x46,0xb6,0xfe,0x43,0xf8,0xa7,0x4f,0xc3,0x8b,0x4c,0x57,
- 0x8c,0x70,0x3b,0xa1,0x4a,0x5a,0xf3,0x25,0xb7,0x80,0xe6,0x9f,0xb3,0xa8,0x0f,0xbe,
- 0x63,0xe8,0x3f,0x2c,0xfe,0x00,0x78,0xbe,0x82,0xbf,0x55,0xb9,0xff,0x85,0x2d,0xa1,
- 0xaa,0x93,0x3f,0x54,0xdb,0x1e,0xf1,0x3d,0xb8,0x39,0xf4,0x1f,0x9a,0x7f,0x80,0xd3,
- 0xe5,0x36,0x55,0x51,0x7e,0xb8,0x92,0x5b,0xeb,0x7c,0xb0,0x8d,0x79,0xf5,0x1f,0xcb,
- 0x5f,0x8d,0xd7,0xb9,0xc1,0x75,0x75,0xe9,0x48,0x27,0xff,0x33,0x23,0x6d,0x2e,0xce,
- 0xcc,0x09,0x78,0x7e,0xc4,0xfc,0x63,0xf2,0x92,0x8e,0x79,0xf8,0x1b,0x35,0x25,0x44,
- 0xb9,0x39,0xbd,0xbe,0x7a,0x94,0x65,0xeb,0x0f,0xc9,0x56,0xd2,0xce,0xcd,0x19,0x87,
- 0x0f,0x60,0x85,0x2e,0xe9,0x0e,0xfd,0x07,0xa6,0x05,0x8f,0xfe,0x83,0x28,0xff,0x74,
- 0x54,0x7c,0x04,0xe7,0x1f,0xac,0x56,0xd6,0xfe,0xbc,0x39,0x40,0xff,0x51,0x19,0xff,
- 0x90,0x7a,0x47,0x1e,0xea,0x7f,0x59,0xfc,0xa1,0xd2,0x2d,0xc6,0x3a,0xc4,0x0e,0xab,
- 0xde,0x85,0xf3,0xf0,0x0f,0xde,0x5d,0xca,0x46,0x23,0x3e,0xf0,0x0b,0x55,0x81,0x6d,
- 0x60,0xe6,0x67,0x22,0x83,0x0c,0xa7,0x8f,0xc2,0x46,0x9f,0xfe,0x03,0xc7,0x63,0xa4,
- 0xbf,0xc0,0x67,0x85,0x0b,0xea,0x72,0x7d,0x01,0xe2,0x17,0x30,0x7f,0xe9,0xc6,0xd0,
- 0x4b,0x9c,0xfc,0x43,0xea,0xd7,0xc3,0x3a,0x86,0x96,0x29,0x68,0x82,0x72,0xdd,0x2e,
- 0x5b,0x57,0x90,0x5f,0xff,0xb1,0xf9,0x67,0xaa,0x85,0x18,0xe5,0x13,0xfc,0x4d,0x64,
- 0xc9,0x3e,0xec,0x2b,0x87,0xfe,0x23,0x7f,0x4c,0x69,0xe7,0x0a,0x3a,0x8e,0xee,0x22,
- 0xc6,0xf4,0xec,0xf4,0x9f,0x61,0x44,0x8c,0x30,0x36,0x54,0x5f,0xff,0xcb,0xd6,0x7f,
- 0xf0,0xf3,0x97,0x23,0xda,0x77,0xcd,0xa4,0xff,0xa8,0x95,0x57,0x55,0xd7,0xaf,0x1f,
- 0xd8,0x9f,0x1a,0x61,0xfb,0x27,0x1b,0x7a,0xcd,0xa7,0xf6,0x04,0xe8,0x3f,0x41,0xfc,
- 0xe3,0xbf,0x6c,0x10,0xff,0xe0,0x7a,0xe4,0x5d,0xed,0xcd,0x02,0xfd,0xaf,0x6c,0xd1,
- 0xea,0xfc,0x8f,0x5d,0x01,0xfc,0x93,0x0e,0xcd,0xf3,0xa9,0x1f,0x7e,0xc3,0xd9,0xff,
- 0x12,0x28,0xe4,0x0c,0xbb,0x8c,0x6c,0x34,0x59,0x33,0x1c,0xc0,0x3f,0x0b,0x7f,0x4d,
- 0xd4,0x1e,0xbd,0x04,0xd3,0x8e,0x6a,0x81,0xd0,0x4d,0xd5,0x21,0x04,0x79,0xf8,0xa7,
- 0x07,0xd7,0x2f,0x6f,0x34,0xa6,0xf4,0x33,0x5e,0xfd,0x87,0xed,0x9f,0xc1,0xdb,0xf6,
- 0xf8,0x9e,0x16,0x87,0x15,0x6f,0x3e,0x71,0xea,0x3f,0xff,0x19,0xe0,0xe6,0x56,0xcf,
- 0x88,0x43,0xff,0x99,0x3b,0x10,0x10,0xc6,0x76,0xcf,0xc8,0x79,0xb6,0x3f,0x73,0x36,
- 0xff,0xd8,0xb2,0x0f,0xc5,0x1e,0x5b,0xff,0xf1,0xf3,0x4f,0xd0,0x63,0x78,0x1e,0xfe,
- 0xb1,0xd5,0x0c,0xcb,0x10,0x26,0x43,0x33,0xf2,0x4f,0x90,0x8c,0x53,0x88,0x7f,0x0a,
- 0xce,0x0f,0xe2,0x1f,0x87,0x0c,0xa2,0xe5,0xef,0x7f,0x35,0xd8,0xfd,0x2f,0xdb,0x4d,
- 0xe4,0x1d,0x39,0x6b,0xf7,0xbf,0xca,0x28,0xb4,0xcc,0x19,0xd3,0xde,0xcb,0xa7,0x6f,
- 0x04,0xf0,0x4f,0x17,0xff,0x67,0xc3,0xd8,0x19,0x34,0xff,0x14,0xbb,0x7f,0x1b,0x64,
- 0x06,0x39,0xba,0x85,0x3d,0xcd,0x97,0xd4,0x59,0xf0,0x4f,0x90,0xcc,0xe5,0xf0,0x37,
- 0x48,0xff,0x29,0x14,0x4f,0xba,0x1f,0xb4,0xca,0xf5,0xf9,0x65,0x1c,0xd3,0x58,0x8c,
- 0xf9,0xc7,0xd6,0x1f,0x42,0x87,0x67,0x9a,0x4f,0xf4,0x9f,0x20,0xfe,0xc9,0x9a,0x8d,
- 0x30,0x62,0x8c,0x7a,0xf9,0x87,0xed,0x7f,0xc6,0x3f,0x84,0x76,0xfe,0x1d,0x1b,0x51,
- 0x6a,0xcc,0xc0,0x3f,0xc9,0x62,0xc7,0x6d,0xe2,0x15,0x2e,0x86,0x04,0x56,0x5f,0x42,
- 0x76,0xb7,0x08,0x59,0xb7,0xed,0x59,0x1f,0x0f,0xe4,0xd8,0xf5,0x09,0xff,0xf4,0x59,
- 0xb4,0xa3,0xbc,0x4d,0xb1,0xe7,0x0f,0x5e,0xfe,0xb1,0xf5,0x9f,0x85,0x76,0xbe,0xed,
- 0x37,0xf3,0xb9,0x57,0xe8,0x70,0xf3,0x8f,0x59,0xbf,0xc6,0x8c,0x6a,0x75,0xae,0xcd,
- 0x90,0x7d,0x58,0xd9,0xba,0xca,0xf8,0xc7,0xa5,0xff,0xf4,0x91,0xfe,0x17,0xd1,0x7f,
- 0xb6,0x12,0x10,0x7a,0xd6,0x5e,0xf6,0x45,0x6a,0xb8,0xfa,0x5f,0x76,0xbe,0xda,0xaa,
- 0x98,0xb2,0x0f,0x1b,0x41,0xf9,0xf9,0x27,0x28,0xed,0x30,0x23,0x80,0x7f,0x70,0xbe,
- 0xe5,0xbc,0x69,0x33,0xa8,0xff,0x05,0x57,0xac,0x7a,0xb7,0x8a,0x14,0xfa,0x44,0xc0,
- 0xfc,0x9d,0x84,0x7f,0xe8,0xf5,0x09,0xff,0x9c,0x33,0x92,0xf6,0x1c,0xbb,0xcc,0xc9,
- 0xc4,0x58,0x8c,0x0d,0xd1,0xa7,0xff,0x6c,0x16,0xd6,0xba,0x65,0x9f,0x35,0x81,0x7a,
- 0x8e,0xcd,0x3f,0x45,0x71,0x26,0xfb,0x08,0xde,0x69,0xd4,0x68,0x76,0xf2,0x4f,0x1c,
- 0x0e,0x59,0xd1,0x10,0x8e,0x8a,0x76,0x58,0x06,0x18,0x21,0xac,0xf1,0xf2,0x0f,0x0e,
- 0xcb,0x69,0xe3,0xe9,0xdb,0x70,0xf3,0x88,0xa5,0xff,0x44,0xb0,0xbf,0x1a,0xe5,0x1f,
- 0x9e,0x4e,0x37,0xf4,0x1f,0xa2,0x17,0x91,0x6a,0x75,0x23,0x44,0x8e,0x6d,0xd4,0x50,
- 0xc7,0xed,0x08,0xe4,0x4a,0x02,0xf8,0xe7,0x26,0xd9,0x8d,0x8a,0xe4,0x68,0x7b,0x05,
- 0xf5,0xbf,0x64,0x06,0x39,0x53,0xc4,0x50,0x62,0x81,0xfd,0x2f,0x08,0xe2,0x1f,0x62,
- 0x00,0x7e,0xbe,0xf0,0xef,0x07,0x27,0xff,0xb8,0x69,0x53,0x15,0x8f,0xcd,0xb6,0xff,
- 0x65,0x9c,0x36,0xf1,0x9d,0x3f,0xc9,0xdf,0xff,0x32,0xa2,0x51,0x31,0xfb,0xfe,0xd7,
- 0x15,0x74,0x06,0xd5,0xc1,0xda,0x37,0x0a,0xeb,0x3f,0xac,0xff,0x55,0x3d,0xa5,0x6c,
- 0x87,0xea,0xe6,0xb2,0x13,0x01,0xe7,0x97,0xec,0xfe,0x57,0xd6,0xee,0x7f,0x9d,0x83,
- 0x76,0x01,0x32,0xf8,0x79,0xca,0xff,0xfc,0xe5,0xe4,0x9f,0x45,0x0e,0x0c,0x18,0xa8,
- 0x39,0x5c,0x4a,0xf4,0x10,0x1f,0xff,0x08,0x74,0xbf,0xb5,0x88,0xf8,0x6a,0xb4,0xed,
- 0xf5,0x3f,0x4a,0xd7,0xe6,0x1d,0xd5,0xbc,0x44,0x8f,0xfd,0xd8,0xfd,0xaf,0x62,0xba,
- 0x1e,0x75,0xa1,0x15,0x9f,0x0c,0xff,0x47,0x62,0x9c,0x8c,0xa6,0x03,0xe2,0x33,0xc2,
- 0xe2,0xdf,0x53,0x74,0x05,0x3e,0x42,0x75,0x64,0xfe,0x55,0x79,0x0d,0xac,0x44,0xd2,
- 0x31,0xa3,0x3f,0x6b,0x74,0xc4,0xd8,0xf9,0x1f,0x27,0xff,0x90,0xfc,0x59,0x45,0x92,
- 0xc6,0x1f,0xbb,0xf1,0x63,0x17,0x2a,0x6b,0xb5,0xfa,0xe9,0xec,0x20,0x90,0xe8,0xed,
- 0x7f,0xf5,0xa1,0x2a,0xe2,0xd4,0x59,0x78,0x11,0x2d,0x4d,0x8a,0x39,0xcb,0x5f,0xd1,
- 0x71,0xfe,0x67,0xdc,0xa3,0xff,0x28,0x38,0x68,0xd5,0xc4,0xd8,0x78,0xf2,0x6e,0x08,
- 0x4b,0x6e,0x85,0x5f,0x74,0xf3,0x0f,0x81,0x9c,0x23,0xb8,0x4c,0x94,0xe4,0xe0,0x32,
- 0x34,0x6a,0x52,0x96,0x8f,0x19,0xd8,0x13,0xa7,0xfc,0x13,0x77,0xf3,0x8f,0xa3,0x1e,
- 0x75,0xab,0x29,0x58,0xdc,0x31,0x6b,0xfe,0x81,0xc9,0x8a,0x94,0x2a,0x75,0xcf,0x19,
- 0x93,0x67,0xa1,0xff,0x18,0xd5,0x56,0xc5,0xfb,0xff,0x85,0xfe,0x82,0xfc,0x23,0xd4,
- 0xc2,0x4b,0xb4,0x5f,0x43,0xbe,0x15,0x83,0xeb,0x35,0xfd,0x88,0x60,0xf3,0x8f,0x56,
- 0x2f,0x24,0x1e,0x8b,0x15,0xee,0x7f,0x35,0x88,0x69,0xd6,0xef,0x43,0x66,0x23,0x66,
- 0x95,0xdf,0x5f,0x47,0xff,0x6b,0xa1,0xab,0x9a,0x37,0x91,0x83,0x3d,0x33,0xf1,0xcf,
- 0x2d,0x4b,0xed,0x41,0xb7,0xf0,0x7c,0xa9,0xd5,0xd0,0x4f,0x9a,0xf2,0x9d,0xff,0xb1,
- 0xf9,0xe7,0x92,0x61,0x7c,0x57,0xab,0x50,0x0a,0xf5,0xbf,0x2c,0xfe,0xd9,0x8e,0xbd,
- 0x5b,0xfd,0x2a,0x24,0xd2,0xa2,0xdc,0x1c,0x74,0xde,0x29,0x1f,0xff,0xb4,0x94,0x76,
- 0x05,0x9c,0xbf,0xb2,0xfb,0x5f,0xda,0x5c,0x0f,0xcf,0xc4,0x77,0x45,0x0a,0xe9,0x3f,
- 0x76,0xff,0x8b,0x7c,0x2b,0xe6,0xed,0x7f,0xd1,0xeb,0xfb,0xf8,0x47,0xda,0x12,0xa4,
- 0xff,0xd8,0xfd,0xaf,0x0e,0xcc,0x3f,0x21,0x02,0x39,0x15,0x37,0x76,0x3f,0x27,0x2e,
- 0x41,0x3d,0x1b,0xda,0x7a,0x18,0x11,0xc9,0x79,0xfb,0x5f,0xa4,0xff,0x8e,0xda,0x70,
- 0x34,0x44,0x25,0x48,0xff,0x51,0x3c,0xfd,0x2f,0x93,0x16,0xb6,0xc0,0x92,0x36,0x71,
- 0x9c,0xdb,0x57,0xa8,0xff,0x45,0xf5,0x9f,0x4d,0x7c,0x3f,0xbc,0x4d,0xea,0xcb,0x26,
- 0x7e,0x51,0xa1,0xfe,0x97,0xcd,0x3f,0x39,0x92,0x3d,0xd0,0xc3,0x41,0xf9,0xdc,0xd1,
- 0xff,0x2a,0xba,0xda,0x72,0x1d,0xd5,0x93,0x22,0xf5,0x06,0x5c,0xc4,0x86,0xf4,0xcf,
- 0x76,0xff,0x82,0xd4,0xaf,0x15,0xde,0xfe,0xd7,0x7e,0x5c,0x64,0x0f,0x90,0x45,0x8e,
- 0x76,0xec,0x44,0x77,0x6f,0x11,0x9f,0xa9,0x58,0xe0,0x5b,0xbf,0x93,0x37,0x88,0x77,
- 0xdf,0x32,0xe6,0x4b,0x27,0xa0,0xaa,0xab,0xb4,0xb5,0xda,0x35,0xff,0x6e,0xdd,0xdd,
- 0xff,0x32,0xf2,0x4f,0xad,0x01,0x39,0x70,0x00,0x62,0x9b,0x4b,0x83,0xf4,0x34,0xbb,
- 0xff,0x15,0x33,0xfa,0x17,0xaf,0x61,0xa7,0x4a,0x7a,0x8a,0xbe,0x80,0x24,0x2a,0x33,
- 0xf3,0x27,0xf3,0x77,0xb9,0xd9,0xff,0xb2,0xd7,0xd3,0x4b,0x07,0x3f,0x85,0xff,0xe2,
- 0x52,0x5d,0xe5,0xff,0x11,0x78,0xfe,0xc7,0xc9,0x3f,0xec,0xa1,0xfe,0xd6,0xe1,0x7a,
- 0x24,0x8d,0xbb,0xf4,0x9f,0x7c,0xfd,0xaf,0xd2,0x0c,0xf7,0x19,0x1c,0x4f,0x57,0x1f,
- 0x09,0x2f,0x0f,0x3a,0x7f,0xeb,0xe2,0x1f,0x6b,0xb0,0x27,0xfd,0x86,0x50,0xad,0x89,
- 0xc7,0x02,0xe6,0x7b,0xf4,0x1f,0x1c,0x84,0xd2,0x64,0xf3,0x20,0x1c,0x55,0x0e,0x6e,
- 0x7e,0xd6,0x3a,0x0f,0x3c,0x60,0xc6,0x87,0xf7,0x9e,0xff,0x91,0xe2,0xe8,0xc6,0x3a,
- 0x6b,0x3f,0x4c,0x40,0x1d,0x92,0x32,0x56,0x7c,0x22,0x8e,0x46,0x98,0x93,0x7f,0x6e,
- 0x19,0x4e,0x95,0x8d,0xf3,0xa3,0x30,0xa9,0x36,0x22,0xea,0xe6,0x20,0x35,0x86,0x02,
- 0xf8,0x27,0x65,0x62,0xb3,0xd9,0x2d,0x5d,0xe3,0xda,0x3f,0xf5,0xfe,0xfe,0xd7,0x0a,
- 0x02,0x39,0x47,0x2c,0xda,0x91,0x8e,0x71,0xae,0xf3,0xcf,0xd5,0xbe,0xfe,0x97,0x70,
- 0x34,0x14,0xd7,0xb7,0x3b,0x7e,0x7d,0xd7,0x7e,0x50,0xf2,0xf6,0xbf,0xcc,0xe8,0x89,
- 0x19,0x77,0x3c,0xab,0xf3,0xf5,0xbf,0xec,0x5f,0xdf,0xb5,0x7f,0xea,0xf2,0xf5,0xbf,
- 0xf2,0xe8,0x3f,0x6f,0xe5,0xed,0x7f,0xcd,0x4a,0xff,0x19,0x2d,0xf2,0xfc,0xfa,0x7c,
- 0xd2,0xc9,0x6f,0x47,0xbd,0xfa,0x4f,0xce,0xce,0x3f,0xb3,0xd2,0x7f,0xc6,0x43,0x8b,
- 0xcc,0x43,0xce,0xcf,0x92,0xea,0xaf,0x99,0xd8,0x23,0xe4,0xd7,0x7f,0xfe,0x5a,0x2c,
- 0x27,0x90,0x33,0x16,0x5d,0x4e,0x68,0x47,0x33,0x8e,0x3d,0x0f,0xfb,0x14,0x21,0xa7,
- 0xfe,0x63,0xf4,0xbf,0x06,0x02,0xe2,0x63,0xfa,0xeb,0xd3,0x7f,0xf0,0xa0,0xc9,0x3f,
- 0x56,0x34,0x1a,0x78,0x3f,0x1f,0xba,0xfa,0x5f,0xf0,0x16,0xdc,0xe7,0xca,0x36,0xfe,
- 0xfc,0xe3,0xea,0x7f,0xc9,0x6f,0x99,0xfc,0xc3,0xbc,0xf3,0xf3,0x9e,0xb7,0xff,0x55,
- 0xeb,0xea,0x1e,0xfa,0xf3,0x8f,0xb7,0xff,0x55,0xe7,0x54,0x7b,0x22,0x31,0x9f,0x22,
- 0x14,0xd0,0xff,0xb2,0xab,0xcf,0x9c,0xac,0x30,0x2b,0xfe,0xf1,0x97,0xc5,0xc2,0xfc,
- 0x53,0x40,0xd8,0xf1,0xe8,0x3f,0xa1,0x84,0xba,0xa6,0xe0,0xfc,0x20,0xfd,0x27,0x1c,
- 0x20,0x04,0x15,0xd4,0x7f,0xfc,0x65,0x37,0xa8,0xff,0x55,0xc6,0xfa,0x5f,0x05,0xf4,
- 0x0d,0x37,0xff,0x7c,0xea,0xfa,0x76,0x84,0x77,0xf0,0xa1,0x85,0x46,0xa7,0x38,0x67,
- 0xff,0x2b,0x67,0x9e,0x7f,0xf6,0x1f,0xfb,0xb1,0xf9,0x07,0x9c,0xfc,0x73,0xc0,0xec,
- 0x7f,0x51,0xef,0x2a,0x06,0xe4,0x02,0xfd,0x2f,0xcc,0x3f,0x2f,0xc1,0x53,0x33,0xe8,
- 0x3f,0xee,0xfe,0x17,0x5e,0xff,0x83,0x85,0xf5,0x9c,0x80,0xfe,0x97,0x43,0x1d,0x9a,
- 0xa9,0xff,0x95,0xef,0xbc,0x59,0xbe,0xfe,0xd7,0x4f,0x0c,0xc8,0x01,0xaa,0xf6,0x30,
- 0xc3,0xa9,0xff,0xb0,0xeb,0xb3,0xfc,0x23,0x14,0xc8,0x3f,0xde,0xfe,0x17,0xbe,0x49,
- 0x7f,0x5a,0xec,0x3f,0xf6,0x13,0xd4,0xff,0xea,0xf4,0xd0,0xce,0x7f,0x07,0x9d,0xff,
- 0xb9,0xac,0xb0,0xfe,0xd7,0xed,0xbd,0xe4,0x35,0x13,0x3d,0x10,0x7b,0x4c,0xa3,0x24,
- 0x53,0xd3,0xcf,0xe2,0xcf,0x59,0xcf,0xef,0x8b,0x27,0xf9,0x29,0xf5,0x2d,0xfb,0xfc,
- 0xaa,0xd5,0xff,0xba,0x8e,0x8e,0x8c,0x95,0xbb,0xf5,0x9f,0x1d,0x45,0x9f,0xe0,0x45,
- 0x6e,0x67,0xab,0x4d,0x52,0xe3,0x59,0xb8,0xb8,0xb9,0x4f,0xab,0x22,0xd2,0xd0,0xe5,
- 0x0e,0x7a,0x7d,0x40,0xfb,0xe0,0x45,0xcb,0x3b,0x89,0xb9,0xb9,0x17,0xa8,0x10,0xa4,
- 0x54,0x0d,0x86,0xbd,0xfa,0xcf,0xa1,0x42,0xf9,0x5c,0x31,0xf5,0x1f,0x16,0x9f,0x4a,
- 0xd3,0x5f,0xd2,0x9d,0x31,0xbc,0x33,0x1c,0xb7,0x0f,0xba,0x84,0x8e,0x90,0x8e,0x86,
- 0xab,0xff,0x65,0xce,0x2f,0x58,0x8f,0xdc,0xfd,0xaf,0xcf,0xf3,0xd4,0x3b,0xee,0x84,
- 0xcd,0x3f,0x74,0xfd,0xac,0xff,0x15,0x24,0xfb,0xe4,0xd1,0x7f,0xcc,0xc1,0x62,0xf2,
- 0x6d,0xf1,0xcc,0xe7,0x7f,0x24,0xeb,0xb4,0x0f,0xd1,0x7f,0xbc,0xf1,0x91,0xb1,0xd1,
- 0x7f,0xa7,0x57,0xff,0xb1,0xfd,0x95,0xb1,0xc1,0xce,0xc3,0x1f,0x99,0xd3,0x9b,0xbc,
- 0x61,0x1e,0x8d,0x76,0x9d,0xff,0x51,0x4c,0xa7,0xda,0xad,0xf3,0x3f,0xd7,0xda,0x2d,
- 0x7f,0x5f,0x25,0xff,0xa1,0x1a,0xd0,0xff,0xfa,0xdc,0xda,0x2d,0xf2,0x34,0x79,0xff,
- 0x6b,0xd4,0xde,0x3f,0x6f,0x06,0xf5,0xbf,0xae,0xc2,0x67,0x36,0xed,0x2c,0xcd,0xb6,
- 0x74,0xcf,0xf6,0xfc,0xb3,0x61,0x28,0xf3,0xe5,0x19,0xf4,0x1f,0x37,0xff,0x20,0xb1,
- 0x7b,0x86,0xfe,0x97,0xfb,0xd7,0xaf,0x8d,0xed,0x69,0x67,0x23,0x0c,0x5d,0x9c,0xfd,
- 0xaf,0x13,0xce,0xfd,0xd0,0x08,0xf4,0x45,0xb0,0x59,0xf4,0xbf,0xd2,0x37,0xe0,0x7e,
- 0xb1,0xcc,0xf7,0x3e,0x82,0xa7,0xff,0x45,0xf7,0x03,0x18,0xb4,0x06,0xe2,0xee,0x82,
- 0xef,0x7f,0x39,0xf4,0x9f,0xb3,0x98,0x87,0x6b,0x47,0x44,0x80,0xc2,0xfd,0xaf,0x45,
- 0xe6,0x69,0x67,0x83,0x7f,0x90,0x92,0x15,0xd7,0xce,0xd0,0xff,0x92,0xcc,0xd3,0xce,
- 0x98,0x7f,0xd0,0x97,0x68,0x99,0x2e,0xc1,0x8c,0xfc,0x83,0x83,0x30,0xb0,0x93,0xbc,
- 0xff,0x75,0x5d,0x4e,0x8d,0x3c,0x65,0xf6,0x4f,0x53,0x79,0xfb,0x5f,0x34,0x08,0x25,
- 0x1b,0x0d,0x1a,0x97,0xba,0x9c,0xf1,0x79,0xdf,0xdf,0xff,0xa2,0x4f,0x8b,0x46,0xfe,
- 0x8c,0xeb,0x9d,0xeb,0x66,0x3c,0xff,0x6c,0x3a,0x55,0x61,0xbc,0xf8,0xf6,0x61,0xcc,
- 0xd5,0x08,0xdb,0xeb,0xef,0x7f,0xf9,0xdf,0xf6,0xf2,0xc7,0xd3,0xdb,0xff,0x22,0x6d,
- 0x82,0x55,0x2d,0xf2,0x37,0xd0,0x88,0xa4,0xc7,0x9d,0xe7,0x9f,0x2f,0xe4,0xef,0x7f,
- 0x61,0xa3,0x41,0x4d,0xc9,0x0f,0x77,0xce,0x56,0xff,0xf9,0xb8,0xf3,0x34,0xa4,0x9a,
- 0xc5,0x00,0x10,0xe2,0xfc,0xfc,0xb3,0xbd,0x8b,0xfb,0x44,0xdc,0x96,0x36,0xf4,0x1c,
- 0x7f,0x47,0x26,0x4f,0xff,0x6b,0x1b,0x24,0x9a,0xc3,0x81,0x7a,0x45,0x70,0xff,0x6b,
- 0x33,0x24,0x1e,0x0a,0xcb,0x5c,0xc7,0xac,0xf8,0x67,0x55,0x4e,0x26,0xef,0x7f,0x3d,
- 0xa7,0x05,0x80,0x90,0xa3,0xff,0xc5,0xf4,0x9f,0x39,0x63,0xc5,0x93,0x78,0xb7,0x2c,
- 0x19,0x99,0x65,0xff,0x8b,0xfb,0x0a,0xd3,0x4e,0xbd,0x5a,0x36,0x12,0x00,0x8a,0x36,
- 0xff,0x38,0xf4,0x1f,0x62,0xdc,0x13,0x0a,0x23,0x3e,0x3d,0x03,0xff,0x58,0x4e,0xad,
- 0x0e,0xbd,0xca,0xa5,0xd7,0x95,0x9a,0xef,0xbb,0xd5,0x1a,0x20,0x24,0x90,0xaf,0xd6,
- 0xc8,0x15,0x41,0xfa,0x4f,0x31,0x89,0xde,0x4f,0xc8,0x8b,0x60,0xfe,0x8e,0xe4,0x29,
- 0x17,0xff,0x98,0xe7,0x9f,0xf9,0xf5,0x0b,0x26,0xa1,0xee,0x7b,0x65,0x72,0xc1,0xf3,
- 0x3f,0xbe,0xfe,0x97,0xe3,0x7d,0xb1,0x92,0x3c,0xfd,0x2f,0xab,0xdb,0xa5,0xc1,0x84,
- 0x72,0x3f,0x79,0xdf,0x70,0x56,0xe7,0x7f,0x34,0x6e,0xb2,0xe3,0x35,0xa8,0xea,0x12,
- 0x2f,0x71,0xa6,0xfe,0xb3,0x06,0xf3,0x8f,0x60,0x7e,0x55,0x11,0xd4,0xff,0xe2,0xda,
- 0xd1,0x11,0xbd,0x76,0x6f,0x38,0x48,0x7f,0xb6,0xcf,0x3f,0x3b,0xfa,0x5f,0x23,0xd0,
- 0x27,0x7e,0xeb,0xe4,0x1d,0xd9,0x36,0x9f,0xfe,0x03,0xee,0xfe,0x97,0x05,0x39,0xbb,
- 0xe1,0x6b,0xb4,0x4c,0x2b,0x0f,0xd2,0x7f,0x2e,0xd3,0xed,0xc6,0xf4,0x9f,0x12,0x5c,
- 0xc4,0xe5,0x6b,0xb0,0x7c,0xf3,0xcf,0x93,0x41,0xfa,0x8f,0xad,0xff,0x93,0xf7,0x97,
- 0xbb,0x8c,0x63,0x1b,0x53,0xd0,0x81,0x56,0xd4,0x2e,0x7c,0xcf,0xd0,0x7f,0xac,0x83,
- 0xd0,0x9f,0x9b,0xad,0x31,0x4f,0xff,0x0b,0x19,0x4e,0x8d,0x70,0x48,0xa9,0x92,0xa4,
- 0x67,0xf8,0x47,0x9c,0xeb,0x6f,0xcc,0xfa,0xfb,0x5f,0xca,0x12,0x3d,0x4c,0xfc,0xed,
- 0x08,0xc5,0x20,0x36,0x62,0x3c,0xaf,0xdd,0xcd,0xfc,0x1d,0xcc,0xd7,0xff,0xd2,0x45,
- 0x04,0x8a,0x22,0xde,0xcb,0xf9,0x9f,0x70,0xdd,0xfd,0xaf,0xe3,0xe6,0xb1,0x8d,0x2c,
- 0x4e,0x76,0x0d,0xf3,0xa4,0xff,0x67,0xef,0xfa,0x63,0xab,0xb8,0xb2,0xf3,0x7d,0xf3,
- 0xc6,0x30,0xb6,0x9f,0xed,0xb1,0x81,0x96,0x2c,0x04,0x06,0x03,0x5b,0x97,0xba,0xe0,
- 0xc5,0x88,0xb0,0x0e,0x31,0x83,0x49,0x54,0x16,0xa2,0x80,0x36,0x6d,0xb5,0x2b,0x45,
- 0x91,0x45,0xa8,0x8a,0x54,0xb6,0x62,0x7f,0xfc,0xe1,0x25,0xab,0xcd,0x80,0xc9,0xc6,
- 0x59,0xd3,0xae,0x93,0xcd,0x6a,0x89,0xb2,0xbb,0x7d,0x04,0x54,0x50,0x97,0x56,0x40,
- 0xd2,0x2c,0x34,0x28,0x79,0x10,0x4b,0x71,0x12,0x27,0x58,0xd9,0x54,0x9b,0x1f,0x94,
- 0x7d,0xd1,0xd2,0xc4,0x0d,0x0e,0x71,0x48,0x94,0x3a,0xc1,0xe0,0xce,0x9d,0xb9,0x3f,
- 0xe7,0x9e,0x7b,0x67,0x1c,0x36,0x9b,0x48,0x8d,0xff,0x3a,0x7a,0x1e,0x9e,0xe6,0x1e,
- 0xc6,0xf7,0x7e,0xf3,0x9d,0xef,0x7c,0x67,0x05,0xe9,0x6f,0x8a,0xd6,0x7b,0x1e,0xa8,
- 0x7f,0xd1,0x24,0xbc,0x8e,0xc6,0x56,0xb7,0xa3,0xda,0xc4,0x79,0xd4,0xa6,0xe5,0x7f,
- 0x2e,0xa2,0x71,0x74,0x3d,0xaa,0x19,0xcf,0x7f,0xcf,0xc0,0xff,0xec,0xe0,0xf8,0x27,
- 0xfc,0x6b,0x0a,0x96,0x7b,0x35,0x27,0x76,0x1a,0xf5,0x3f,0xfc,0x7d,0xbf,0x5c,0x3c,
- 0x56,0x5a,0xd4,0x52,0x79,0xd8,0x52,0x11,0x94,0xca,0xff,0x54,0x2f,0x9b,0x52,0x42,
- 0x87,0xdd,0x05,0xe8,0x2b,0xf1,0xfb,0x29,0x96,0xfd,0xc4,0x07,0xdf,0x40,0x52,0xff,
- 0x53,0xff,0xb8,0x43,0x40,0xdd,0x98,0xdf,0x86,0x7e,0x7e,0x38,0xbf,0x55,0xad,0xef,
- 0x70,0xfc,0x73,0x4d,0xb4,0xa8,0x53,0x75,0x17,0xf3,0x43,0x68,0xdc,0x5b,0x85,0xea,
- 0xb6,0xc9,0xe7,0x7b,0xfb,0x10,0xac,0xff,0xf9,0x50,0x84,0xcd,0x11,0x22,0x3a,0xc6,
- 0x18,0x21,0xa8,0xfe,0x75,0x98,0xa3,0x9d,0x91,0xa0,0x37,0x1d,0xff,0x2c,0x6d,0x18,
- 0xcc,0xb1,0xc7,0x80,0x20,0xe4,0xdd,0xe9,0xf8,0x27,0x7e,0x91,0x4f,0x0a,0xcb,0x25,
- 0xfc,0x93,0x53,0x61,0xf0,0x79,0x23,0xfe,0xb9,0x7a,0xfd,0x4f,0xb2,0xd1,0x49,0xc6,
- 0x3f,0x97,0x14,0xd8,0x9c,0xbc,0x7f,0x10,0xff,0x08,0xc7,0x74,0xb2,0xfe,0x0e,0xd7,
- 0xbf,0x5c,0x1a,0x38,0xf7,0x24,0x18,0x21,0x05,0xff,0x48,0x68,0x67,0x04,0xfd,0x1a,
- 0x97,0xbd,0x18,0x23,0x24,0xe1,0x9f,0xf0,0xfd,0xeb,0x1d,0xd2,0x1d,0x40,0x69,0x1f,
- 0xd2,0xf6,0x85,0xdf,0x50,0x26,0xdc,0xa8,0xb4,0x0a,0xe0,0x9f,0x63,0xd5,0x58,0x08,
- 0x17,0x65,0xe3,0x02,0x7a,0x0e,0xcd,0x91,0xf2,0x03,0xe1,0x1f,0x91,0xf6,0x31,0xe9,
- 0x7f,0x98,0xfe,0x79,0x8e,0x9d,0x49,0xff,0x03,0xd1,0x3e,0x99,0xf4,0x3f,0x02,0xed,
- 0x33,0x29,0xfd,0xcf,0xb4,0xf2,0x94,0xac,0xf5,0xaf,0x49,0xf1,0x3f,0x7f,0x38,0xfd,
- 0x4f,0x16,0xfc,0x83,0xe6,0xb3,0xd5,0x95,0xd0,0x98,0x95,0x8a,0x7f,0x38,0xff,0xd3,
- 0x7a,0xae,0x48,0xda,0xb8,0xc2,0x4f,0xf2,0x3a,0xfc,0xf3,0x00,0xa3,0x7d,0xa6,0x9d,
- 0xf3,0x15,0xfc,0x03,0xd5,0xbf,0x4c,0xfc,0x0f,0x58,0xff,0xa2,0xc2,0xef,0xfe,0xe0,
- 0xaa,0xf5,0x3f,0x90,0xfe,0xd9,0xc0,0xe7,0x28,0xf8,0x87,0xf3,0x45,0xff,0x94,0xae,
- 0xff,0x99,0x2c,0xff,0x13,0xd7,0xbf,0x2c,0x95,0xf6,0xd1,0xe8,0x7f,0x8c,0x7c,0x85,
- 0x0e,0xff,0x88,0x32,0x18,0x5f,0xe5,0x7f,0xe8,0xf7,0x63,0xfc,0x13,0xf5,0xbf,0x6f,
- 0xef,0xe6,0xb4,0x4f,0x51,0xc1,0x3f,0xa0,0xfe,0xc7,0xd6,0xf2,0x1b,0xb2,0xfe,0x07,
- 0xe3,0x9f,0xba,0xe3,0xdd,0x21,0xec,0xe9,0x4b,0x1c,0x64,0x08,0xd6,0xff,0x60,0xd9,
- 0xcf,0x47,0x74,0xff,0xe9,0xb2,0xe2,0x17,0x31,0xb8,0xfe,0xc5,0xf4,0x3f,0xdf,0xb2,
- 0x88,0xf0,0xfb,0x5b,0xc0,0xfb,0x1a,0x88,0x7f,0x54,0x18,0x09,0xe2,0x1f,0xc2,0x96,
- 0x8f,0xfe,0x1d,0xa3,0xcd,0x89,0xd0,0x45,0x10,0x3e,0x01,0xf8,0x67,0x14,0x48,0x8b,
- 0xa1,0xfe,0xb5,0x41,0x7f,0xde,0xd5,0x24,0xf0,0x8f,0xf3,0xf1,0xf8,0x1f,0xe3,0xf5,
- 0x2a,0xfe,0x69,0xd9,0x39,0x68,0xb7,0x46,0xc0,0x40,0xca,0x8f,0x9b,0xac,0x7f,0xd5,
- 0x84,0x68,0xc7,0x13,0xd7,0x7b,0xb4,0x3b,0xca,0xcf,0x4b,0x8c,0x08,0xaa,0x51,0xfa,
- 0xbf,0x24,0xb5,0x2a,0x16,0x4a,0xc5,0xfd,0xef,0x94,0x11,0x02,0xf0,0xcf,0xb3,0x35,
- 0x63,0xf9,0x76,0xcc,0xff,0x74,0x4a,0xfc,0x21,0xcc,0xff,0x3c,0x1e,0x2c,0x19,0x75,
- 0x48,0xd9,0xab,0x33,0x53,0xff,0xfb,0x62,0x54,0x49,0x9e,0x87,0xd5,0xe0,0xf3,0x90,
- 0xc0,0x3f,0xb9,0xc5,0x1d,0x3d,0xb8,0xdb,0x2b,0xcc,0xde,0x8d,0x4a,0x3e,0x4f,0x42,
- 0xfc,0xcf,0x4b,0x35,0xa4,0xec,0xd5,0x39,0x15,0x7a,0x1e,0x14,0xfc,0x53,0xae,0x1b,
- 0xad,0x8e,0x60,0x70,0x27,0xf8,0x60,0x28,0xf8,0xc7,0xbd,0x99,0x7c,0xdb,0x4d,0xa9,
- 0xfa,0x67,0xfc,0x3c,0x34,0x77,0x38,0x2d,0x28,0xea,0x76,0xff,0x0e,0xf8,0x3c,0x28,
- 0xf8,0xa7,0xb3,0x89,0x64,0x63,0x63,0xaa,0xfe,0x19,0xe3,0x9f,0xe6,0x2d,0x54,0xfd,
- 0xb2,0x85,0xc2,0x00,0x5d,0xff,0x7b,0x8c,0x7f,0x4e,0x16,0x08,0xfe,0xd9,0xa2,0xf4,
- 0xbf,0x27,0xf9,0x9f,0xc8,0xff,0x67,0x98,0x66,0xe3,0x46,0x1a,0xe0,0xfe,0xf7,0x11,
- 0x2d,0xff,0xb3,0x96,0xca,0xae,0x7c,0x9c,0x16,0xe7,0x4e,0x83,0xfe,0x39,0xda,0x4f,
- 0x3a,0x54,0xdb,0x1f,0x13,0xfe,0x69,0x8e,0xd4,0x3e,0xb9,0x70,0x75,0x9d,0x69,0xfd,
- 0xef,0x78,0xff,0xb1,0x38,0xed,0xe3,0x83,0xf9,0x4c,0xe2,0x9f,0x55,0x4c,0xed,0xb3,
- 0x13,0xee,0x7f,0xd7,0xe2,0x1f,0x97,0x1d,0x43,0x73,0x0d,0xf8,0x67,0xe5,0xe6,0xc2,
- 0x24,0xf1,0x0f,0x95,0xf1,0x7c,0x35,0x23,0xfe,0x71,0xe2,0x7e,0xf9,0xac,0xf8,0x67,
- 0x1d,0x28,0xfb,0xd1,0xe3,0x1f,0xa7,0x10,0xe4,0xf5,0x8d,0xff,0x0a,0xfe,0x91,0xd5,
- 0x3b,0xe7,0x92,0xc2,0xe6,0x35,0x49,0xfc,0xb3,0x6a,0x4b,0x21,0xa6,0x7d,0x6e,0xf0,
- 0xa1,0x44,0xdd,0x21,0xe1,0x1f,0x27,0x04,0x39,0x7d,0x4e,0x60,0x79,0x38,0x40,0x4e,
- 0x26,0xfc,0xb3,0xd1,0x21,0x36,0x47,0xab,0x2b,0x53,0xf5,0xcf,0x39,0x2c,0xfb,0x71,
- 0x28,0x8d,0x56,0x99,0x09,0xff,0x6c,0x6c,0x8e,0x68,0xbd,0xdc,0xca,0xce,0x3f,0xcf,
- 0x84,0x7f,0xc2,0x0f,0xab,0xa3,0xdf,0xae,0x9d,0x93,0x05,0xff,0xac,0xc4,0x6d,0x5f,
- 0x65,0xda,0x08,0x9f,0x8a,0x7f,0x30,0x6d,0xee,0x45,0x68,0x67,0xc9,0x03,0xeb,0x32,
- 0xe1,0x9f,0x32,0xfd,0x7b,0xd9,0x05,0xf2,0xa5,0x0a,0xfe,0x19,0xa2,0x7f,0xbf,0xa8,
- 0x0a,0xae,0x7f,0xd1,0xef,0x8f,0xf1,0xcf,0xca,0xce,0x66,0x8a,0x76,0x0a,0x60,0xfd,
- 0x4b,0x83,0x7f,0x72,0xe1,0xea,0x40,0xfc,0x63,0xd1,0xfc,0x10,0xfd,0x73,0xb9,0x40,
- 0xde,0xd6,0x3d,0xf0,0xfc,0x52,0xf4,0xcf,0xa5,0xa6,0x3b,0xf1,0xdd,0x06,0xcd,0x0e,
- 0x59,0x48,0x73,0xac,0xe8,0xd6,0xe1,0x1f,0x9f,0x5c,0xb6,0x44,0x5e,0x2f,0xac,0x7f,
- 0x6e,0xc5,0xcf,0x1b,0xd3,0xbb,0xa6,0xe1,0x1f,0xbc,0xde,0x95,0xfd,0x54,0x2d,0xe9,
- 0x81,0xfd,0x3b,0x12,0xfe,0x71,0xc4,0xdf,0xda,0x99,0xf0,0x4f,0xbb,0x5f,0x20,0xdb,
- 0x38,0x2a,0x40,0xe7,0x9d,0xca,0xff,0x34,0x11,0x3d,0x73,0x63,0x55,0xa2,0x11,0xa9,
- 0x0d,0xc0,0x3f,0xb9,0xc5,0xa5,0xb5,0xe4,0x74,0xf3,0x9c,0x6c,0xf8,0xc7,0x69,0x69,
- 0x88,0xb2,0xe1,0x56,0xc5,0xb2,0x1f,0xac,0x98,0x6a,0x60,0xfd,0x71,0x09,0xfc,0x83,
- 0xef,0x3f,0x5a,0xdd,0xbc,0x76,0x77,0x36,0xfe,0x5a,0x22,0xfb,0x11,0xf4,0xcf,0x12,
- 0xfe,0xc1,0xdb,0x4e,0xe4,0x5f,0xe7,0xdf,0x80,0x44,0xd9,0x0f,0x3e,0xbf,0xae,0x4f,
- 0xe0,0x9f,0x19,0xcc,0xff,0x87,0x1b,0x29,0xb8,0xa4,0x11,0x0c,0xc4,0x3f,0x7f,0x4f,
- 0x41,0xce,0xa0,0x45,0x68,0x9f,0x91,0xac,0xf5,0xaf,0x7d,0xf1,0xea,0x06,0x89,0x02,
- 0x0a,0xc4,0x3f,0x15,0x87,0xf4,0xb4,0x09,0xc4,0xff,0x54,0xe8,0x60,0xb0,0xf8,0x20,
- 0x19,0xf9,0x9f,0x35,0x46,0xfc,0x83,0x0e,0x71,0x7e,0x29,0x49,0xfb,0xe0,0x60,0xb9,
- 0xae,0xfe,0x45,0xee,0xbf,0x36,0x05,0xff,0xcc,0x60,0xfc,0xcf,0x08,0xe8,0xff,0xb3,
- 0x40,0xc1,0x3f,0x01,0x3d,0xfd,0x0b,0x98,0x06,0xa9,0x4a,0xeb,0xff,0xaa,0xa5,0xfa,
- 0xe7,0x17,0xd0,0xad,0xe8,0x7b,0x4a,0x23,0xd8,0x32,0xb0,0xfe,0x55,0x8a,0xdb,0xbe,
- 0x72,0x77,0x31,0xda,0x50,0x0a,0x64,0xfc,0xf3,0x1e,0xd5,0xff,0x40,0xf9,0x01,0xf1,
- 0xcf,0x3c,0x10,0xf6,0x34,0x68,0xf1,0xcf,0x42,0xb6,0xba,0xd7,0xd9,0x32,0x2b,0x0d,
- 0xfc,0x4f,0x94,0xb4,0x41,0x87,0x25,0x36,0x0d,0xff,0x3c,0x26,0x55,0xbb,0xd2,0xf1,
- 0x4f,0xdb,0xc7,0xea,0xff,0x22,0x42,0x17,0x0b,0x1b,0x01,0xb1,0xf3,0xae,0xd6,0xc0,
- 0xff,0xbc,0xc2,0x8d,0x80,0xb4,0xf8,0x27,0x17,0x1e,0xd3,0x56,0xf4,0x61,0x3f,0xae,
- 0x7f,0xb1,0x42,0x58,0x18,0x74,0x40,0xf8,0x27,0xd2,0x3f,0x6f,0xf5,0x67,0xe1,0xd3,
- 0x9f,0xb5,0xbd,0xef,0xd5,0xe3,0x9f,0x82,0xd0,0xff,0xc5,0xf0,0x0f,0x16,0xe2,0x4e,
- 0x4d,0xa9,0x7f,0xe5,0xcf,0x15,0x95,0xc0,0xa8,0x7f,0xfe,0x6f,0x3d,0x3e,0x84,0xf9,
- 0x9f,0x60,0x85,0x9e,0xff,0x61,0x7a,0x12,0xa8,0xff,0x0b,0xe8,0x77,0x33,0xf0,0x3f,
- 0x8d,0x26,0xff,0x1f,0x85,0xff,0x49,0xd1,0xff,0x5c,0x55,0xff,0x57,0x56,0xfe,0x27,
- 0x02,0x39,0x9b,0x32,0xf3,0x3f,0xe9,0xfa,0x43,0xb0,0xfe,0xa5,0xc2,0x00,0x0d,0xfe,
- 0xd1,0xd2,0x3e,0x10,0xfe,0xa9,0xa1,0xf8,0x67,0xcd,0xdb,0x7d,0x34,0xf0,0x53,0xfb,
- 0xbf,0xa2,0x63,0xcb,0x23,0xc1,0x44,0x0a,0xfe,0x79,0x84,0xb4,0x9d,0x46,0x77,0x5b,
- 0x0b,0xe1,0x37,0x4d,0xff,0x97,0x36,0x80,0xfb,0xbf,0x22,0x7d,0x4b,0x15,0x4f,0x63,
- 0x47,0x4a,0xff,0x57,0x6c,0x84,0xc8,0xf9,0x9f,0xbf,0x30,0xf1,0x3f,0x94,0x1d,0x02,
- 0xf1,0x12,0x58,0xff,0x1a,0x27,0xa7,0xff,0x34,0xda,0x11,0x96,0x52,0xff,0x8a,0x8d,
- 0x19,0xa3,0x20,0x69,0x04,0xa4,0xf2,0x3f,0xb3,0x84,0xfe,0x2f,0xb5,0x5e,0x23,0xe1,
- 0x1f,0x9f,0x90,0x3c,0xcf,0x8b,0xc0,0x40,0x56,0x08,0x4b,0xf8,0xc7,0x25,0x8b,0xba,
- 0x4c,0xab,0x7b,0xe3,0x28,0xd9,0x28,0x27,0xe0,0x9f,0xaf,0x48,0xb6,0x3f,0xd7,0x97,
- 0x36,0x40,0xe7,0x3b,0x50,0xff,0xc2,0xf8,0xf9,0xb7,0x89,0xc7,0x46,0xcb,0xff,0x48,
- 0x68,0x67,0x93,0xf8,0xc9,0xce,0x04,0xfe,0x69,0xaa,0x30,0xfc,0x59,0xf1,0xf5,0xea,
- 0xf5,0xcf,0x1a,0xfc,0x43,0xef,0x07,0xd9,0x69,0xfa,0xe4,0x93,0x38,0x3f,0xdc,0xdf,
- 0xd2,0xe5,0xe7,0xbb,0xa7,0xad,0x7f,0x0d,0x83,0xfd,0x5f,0x14,0xed,0x18,0xf9,0x1f,
- 0xee,0x7f,0x78,0xc1,0x23,0x81,0x5a,0x0f,0xe5,0xfd,0x5f,0x25,0xc6,0x07,0x8a,0xcf,
- 0x83,0x81,0xff,0x41,0xaa,0xfa,0xf7,0x76,0x19,0x18,0xc0,0xf5,0xaf,0x15,0xf9,0x41,
- 0xe7,0xbd,0xdc,0xb2,0x93,0x62,0xdb,0x3b,0xc4,0xff,0xcc,0x8e,0xf3,0x33,0x37,0xc2,
- 0x3f,0x98,0xf6,0x39,0x4c,0x69,0x1f,0xd0,0xff,0xc7,0x91,0xf1,0x67,0x9b,0x98,0x96,
- 0xf9,0x80,0xfe,0x79,0x38,0x07,0xec,0x27,0xb6,0x5e,0xff,0x8c,0x78,0xfd,0xcb,0xd0,
- 0xef,0x2f,0xea,0x9f,0xf9,0x7e,0x1e,0xd5,0x5b,0x99,0x9f,0x76,0xa5,0x84,0x7f,0xd8,
- 0xfd,0xd8,0x58,0x1d,0xc1,0xd0,0xce,0x76,0x18,0xff,0x7c,0xc8,0xf1,0x0f,0x3b,0x8f,
- 0xfe,0x04,0x9f,0x3e,0xdf,0x97,0xcf,0x23,0x1b,0xc0,0x3f,0xf4,0xbc,0x9b,0x86,0xf1,
- 0x8c,0x46,0x28,0xfb,0x14,0xc7,0x3f,0x88,0xd6,0xb3,0xf2,0x86,0x42,0x8c,0xdc,0xff,
- 0xc5,0xfc,0xfa,0x0c,0xf5,0x2f,0xba,0x5e,0xa1,0xfe,0xa5,0xca,0x7e,0xa0,0xfe,0xaf,
- 0x6b,0xc4,0xfe,0x77,0x4b,0x73,0xfe,0x9e,0x65,0xfd,0x5f,0xc7,0x6a,0xb2,0xe0,0x81,
- 0x37,0xb8,0x9e,0x07,0xf3,0x3f,0x76,0x94,0x9f,0xf7,0x13,0x97,0x0d,0x31,0xff,0x1f,
- 0x81,0xff,0x99,0x69,0xac,0x7f,0xb9,0x7a,0xff,0x67,0xba,0xba,0x59,0xd0,0x7a,0x05,
- 0xfd,0xf3,0x74,0x96,0xf6,0x91,0x4c,0xfa,0x67,0xdb,0xbc,0xde,0x1c,0xf6,0xb7,0x9c,
- 0x2f,0xe8,0x9f,0xdd,0xfd,0x0e,0x65,0xc3,0x3c,0xed,0x3f,0x04,0xfd,0x7f,0x32,0xe1,
- 0x1f,0x64,0x33,0xfd,0xcf,0x58,0x40,0x6d,0x0f,0xf1,0x27,0x3b,0x44,0xfc,0x33,0xe0,
- 0xd1,0xfd,0xc1,0xb9,0x9b,0xfd,0xbd,0x9c,0x34,0xe1,0x1f,0xfa,0x33,0xaf,0x5e,0xd4,
- 0xff,0x68,0xf0,0x40,0xc7,0x00,0xfd,0x7a,0xdc,0xff,0xe5,0x12,0x90,0xf3,0xa2,0x02,
- 0x7b,0x78,0xff,0x57,0x23,0xbd,0xde,0xe1,0x78,0xa0,0xac,0xdf,0xd8,0x4f,0xfd,0x80,
- 0xe6,0xa7,0xd3,0x66,0x22,0xd5,0xb3,0x91,0xed,0xcf,0x3d,0xa4,0x6d,0xf9,0x5c,0xdd,
- 0x77,0xf3,0x73,0xa8,0x11,0xd0,0x50,0xc0,0xf0,0x0f,0xfa,0x19,0xad,0xd6,0x0d,0xf9,
- 0xbf,0x11,0x6e,0x1b,0x2b,0x2a,0x67,0x5b,0x51,0x21,0xfe,0x9b,0x82,0xfe,0x39,0xe0,
- 0xf8,0x47,0xf5,0x6b,0x9d,0x4d,0x3f,0xe1,0xfd,0x5f,0xfe,0x74,0x26,0xea,0x50,0xfd,
- 0x6c,0x99,0xdf,0x9d,0xd0,0xff,0x55,0x21,0xac,0xb7,0x57,0x5e,0x66,0x75,0x33,0xed,
- 0x88,0xe7,0xff,0xbf,0x45,0x77,0x24,0x43,0x7e,0xf8,0xfd,0x08,0xf8,0xe7,0x3d,0xad,
- 0x10,0x5a,0x38,0x1f,0xb9,0xff,0xa1,0xf5,0x94,0x81,0x7f,0x60,0xff,0xbf,0x01,0x3f,
- 0xef,0xca,0xa2,0x10,0x5a,0x8b,0x7f,0x50,0x81,0xe7,0x47,0x94,0x25,0x0c,0x88,0x85,
- 0x30,0x01,0xff,0xcc,0x24,0x6a,0x9f,0x7f,0x4f,0xac,0xf7,0x59,0x0d,0xfe,0xa9,0x61,
- 0x8b,0x1a,0x4d,0x2c,0xf3,0x08,0x8c,0x7f,0xce,0x5a,0xe4,0x21,0x19,0xc7,0x6a,0xb1,
- 0x52,0xcd,0x18,0xc6,0x4b,0xc1,0xaa,0xd7,0x35,0xfc,0xcf,0xcc,0x0b,0xd4,0xe4,0xf0,
- 0x4c,0xe9,0x97,0xbb,0x96,0x8c,0x56,0x1f,0xeb,0x98,0xf0,0xcd,0xfc,0x0f,0x5d,0xa6,
- 0xb7,0x8f,0x08,0xbf,0x85,0xbf,0x2f,0x3b,0x89,0x7f,0x2a,0x0e,0xf1,0xb4,0xeb,0xfd,
- 0x27,0x39,0xfe,0x99,0xb1,0xd5,0x61,0x68,0xf0,0x7c,0x5c,0x0d,0xc4,0x69,0x99,0x23,
- 0x01,0x63,0xfe,0xff,0x2b,0xf4,0x7f,0x9d,0x89,0xfc,0x30,0x7b,0xa3,0xfc,0x58,0x26,
- 0xfc,0xc3,0xf4,0xe7,0xaf,0x91,0x36,0x28,0x3b,0x9a,0xf8,0xa0,0xa9,0x7f,0x15,0x82,
- 0x5e,0x6a,0xfb,0xd3,0x6b,0x2f,0x09,0x83,0x06,0xee,0xff,0x33,0x1d,0xc0,0x3f,0x98,
- 0x7f,0x8e,0xf9,0x8a,0x2c,0xfe,0xcf,0x9d,0xee,0xed,0x8a,0xfb,0x9f,0x80,0x07,0xae,
- 0x53,0xf5,0x3f,0x37,0xa3,0xdf,0x05,0xcb,0x62,0xb4,0x73,0xab,0x2b,0xc0,0x9e,0xa9,
- 0x2d,0xf3,0x5f,0x88,0x47,0x63,0x24,0xfd,0x9f,0x71,0xf6,0x28,0x3e,0x4c,0x36,0x82,
- 0x59,0x49,0xfc,0x13,0xbb,0xb3,0x96,0x6b,0x48,0xfe,0x07,0xc3,0xb4,0x5f,0x09,0xce,
- 0x47,0x2f,0x26,0xf3,0x19,0x23,0x94,0x9c,0x7f,0xb1,0xa4,0xe4,0x6c,0xb3,0xc6,0x8b,
- 0xf7,0xd8,0xcd,0xa7,0xc2,0xe0,0x79,0x5f,0xd5,0xff,0xd0,0xeb,0xbd,0x08,0xff,0x2c,
- 0x89,0xd8,0x9e,0xe0,0x00,0xe1,0xbb,0xa2,0x80,0xf1,0x3f,0xeb,0xe5,0xf9,0x17,0x02,
- 0xda,0xa1,0x46,0xd0,0x80,0xfe,0x87,0x5e,0x3f,0x4c,0xe6,0x5f,0x44,0x63,0x2f,0xde,
- 0x0a,0x83,0x5a,0x29,0x78,0x55,0xe9,0xff,0xca,0xed,0x8d,0xe6,0x5f,0xd4,0x46,0x32,
- 0x98,0x24,0xfe,0x31,0xce,0xbf,0xc0,0xf8,0x67,0xe5,0x6a,0xa1,0xbe,0x63,0xe1,0x60,
- 0x4e,0x18,0xe4,0x44,0xfe,0xe7,0x6f,0x11,0x9e,0xa7,0xb0,0x9e,0xd2,0x38,0x35,0xd2,
- 0xf9,0xfb,0xe5,0x24,0xfe,0x59,0x51,0xb1,0xd0,0x67,0xbf,0x7d,0x50,0xe9,0x7f,0x7f,
- 0x30,0x97,0xe8,0x7f,0x6f,0x72,0x6d,0xc6,0xf6,0x14,0xef,0x43,0xcd,0xeb,0x2a,0x21,
- 0x3e,0xe4,0x29,0x76,0xfd,0xb1,0x02,0x56,0x17,0xe3,0x45,0xcd,0x2f,0x07,0x2f,0x93,
- 0x42,0x18,0xf7,0xff,0xe9,0x4a,0xe2,0x9f,0x3d,0x02,0x1f,0x52,0xfc,0x1f,0xd9,0xef,
- 0xfa,0x56,0xf6,0xab,0x37,0x25,0xff,0xe7,0x57,0xe8,0xf5,0xcf,0x27,0x1b,0xc1,0x68,
- 0x20,0xf8,0xff,0xcc,0xc4,0xb6,0xcf,0x6d,0xb9,0xc8,0xff,0xe7,0x20,0x5a,0xec,0x62,
- 0xd8,0xe3,0x2b,0xf8,0x67,0x8a,0x88,0x7f,0x28,0xcd,0x55,0xdc,0x81,0x9a,0x6f,0xac,
- 0x76,0x1b,0xf1,0x32,0x9b,0x74,0xf8,0xc7,0xde,0x1f,0xa6,0x7d,0x51,0x4c,0xfb,0x68,
- 0xeb,0x89,0x6f,0x70,0xff,0x9f,0xbf,0xea,0x27,0xf7,0x3f,0xed,0x9c,0xfd,0x0c,0xb7,
- 0x75,0x6a,0x93,0xf1,0x8f,0xc7,0xf8,0xcf,0x88,0xff,0x89,0x7e,0xbb,0x99,0xe8,0x85,
- 0x72,0x9b,0x93,0xf8,0x67,0x1a,0xe7,0x1b,0x1d,0xb7,0xd8,0x49,0x69,0x37,0x6b,0x20,
- 0x0b,0xff,0xd3,0xe6,0xb0,0x6e,0x77,0x6c,0xfb,0xb3,0x1e,0xe2,0x7f,0xc4,0xfe,0xf7,
- 0x0d,0x44,0xff,0x13,0x1e,0x5b,0xdd,0x31,0x5f,0xa1,0x32,0x42,0x1c,0xff,0x04,0x0c,
- 0xff,0x4c,0x39,0xa3,0xfc,0xd9,0x02,0xf8,0xa7,0xc7,0xb9,0x3f,0xd6,0xff,0x84,0x68,
- 0xc7,0x7f,0x7a,0xc7,0x0d,0xe5,0x0d,0x5d,0x6b,0xcc,0xf8,0xa7,0x18,0xee,0x96,0xb1,
- 0x7a,0x70,0xf7,0xf5,0x48,0xd3,0x08,0x76,0x6a,0x0a,0x5d,0xaf,0x6f,0x1f,0x45,0xa7,
- 0xfb,0x62,0xff,0x1f,0xff,0xe9,0xbe,0xd6,0xf8,0x45,0x3e,0xc2,0x3f,0x5d,0x91,0x10,
- 0x3a,0x0a,0x5c,0x96,0xff,0x83,0x33,0xfb,0xd0,0xaf,0x8b,0x91,0xff,0x0f,0xf6,0x2f,
- 0x9a,0x57,0xaa,0xfe,0x2e,0xc5,0x3f,0xdb,0x22,0x85,0x46,0x18,0x7c,0xb3,0x63,0x91,
- 0xc0,0xff,0xf4,0xc5,0xb6,0x3f,0x98,0x2f,0xba,0x47,0x90,0x3d,0x4b,0x0a,0x46,0x4f,
- 0xf0,0x7f,0x0e,0x44,0xb7,0xd5,0x26,0x31,0x8d,0x1d,0xec,0xe8,0x9f,0x29,0xf4,0xbf,
- 0xf7,0xa0,0xe7,0x72,0x91,0x69,0xcf,0xf8,0x94,0xe7,0xd0,0x47,0xa2,0x8d,0x33,0x56,
- 0x54,0xc6,0x41,0x95,0xd0,0x0f,0x1b,0xc3,0x00,0x92,0x96,0xbf,0x4e,0xc3,0x3f,0x45,
- 0xf7,0xa2,0xe2,0x7e,0x73,0x26,0xe2,0x7f,0x6a,0x40,0xfc,0xb3,0xd7,0xde,0xe4,0xab,
- 0xc7,0x6e,0xf2,0x13,0x01,0xff,0xdc,0xe4,0x79,0xea,0xf5,0x06,0xfe,0x67,0x3a,0x42,
- 0xfb,0xd6,0x36,0x9f,0x8a,0xf0,0x00,0x15,0x06,0xe3,0x27,0x70,0x20,0x4e,0x94,0x9f,
- 0xc0,0x3f,0x41,0xb8,0xff,0x9c,0xef,0x8c,0x9a,0xbc,0xc6,0x83,0x58,0xff,0x13,0x2e,
- 0x33,0x3c,0xf1,0x4f,0x85,0x27,0xce,0xdb,0x6b,0x2f,0xf9,0x49,0xfc,0x53,0xd1,0xc7,
- 0xf5,0x51,0xbf,0xb5,0x56,0x9d,0x24,0x83,0x9c,0xe2,0xf3,0x2b,0xc0,0xa3,0x31,0x24,
- 0xfc,0x83,0x50,0xf8,0x1e,0xb8,0x37,0xdc,0x0e,0xa2,0x3e,0x10,0x5d,0x80,0xc4,0x1f,
- 0x1b,0x85,0x77,0xe7,0x87,0x3b,0xb0,0x21,0x10,0x7f,0x76,0xa1,0x79,0xc8,0xf1,0xc3,
- 0x1d,0xd2,0x10,0x5c,0xcd,0xf7,0x07,0xe1,0x7f,0xb6,0x83,0x2c,0x63,0x20,0xfc,0x98,
- 0x2f,0x8c,0x83,0xab,0xf9,0xfe,0xc9,0xfe,0x7c,0xc6,0xf2,0xef,0xe2,0x59,0x7e,0x83,
- 0xe8,0xdb,0x68,0x76,0xc9,0x10,0xd8,0x1f,0xfb,0xfb,0x3f,0xe1,0xfc,0xdb,0x6e,0x90,
- 0x21,0xe7,0x39,0x81,0x5f,0x9a,0xdc,0xcf,0xca,0x95,0x59,0xae,0xaa,0xab,0xfb,0x98,
- 0x5f,0xff,0x07,0xf8,0x59,0x35,0x31,0x31,0x51,0x4a,0x09,0xfe,0x3f,0x5f,0xff,0x19,
- 0xfb,0x7b,0xfc,0x7c,0x3f,0xfc,0x7c,0x3f,0xbc,0x8a,0xfc,0x7f,0xbe,0x1f,0xa6,0xfd,
- 0x7c,0xd6,0xf6,0x9f,0xcf,0xd6,0xf5,0xa2,0x3f,0x36,0x7e,0x9b,0x50,0x02,0x6d,0x7d,
- 0xb0,0x91,0x06,0x0d,0x46,0x7d,0x38,0xda,0x5d,0xaf,0xa3,0x9d,0x3b,0xc0,0xfa,0xa0,
- 0xa1,0x2c,0x08,0xf0,0x63,0x39,0xa1,0x7e,0x17,0x15,0x52,0xab,0xa1,0xf7,0x05,0x01,
- 0xff,0x27,0xfc,0x21,0x95,0x60,0xae,0xb6,0x3e,0xc8,0x02,0xb5,0x3f,0x11,0xaa,0x0f,
- 0xe6,0x13,0x65,0xc1,0x5e,0x9d,0x3f,0x64,0x8e,0xb1,0xc7,0x59,0xea,0x83,0xb4,0x3f,
- 0x6e,0xcc,0x22,0x83,0x62,0xb7,0xf3,0xb1,0xb0,0xa6,0xfa,0xe0,0xe1,0x78,0x2c,0x08,
- 0x6e,0x8b,0xbb,0x25,0xf6,0x87,0x5c,0x01,0xd6,0x07,0x05,0x7d,0x14,0x8a,0xdc,0x90,
- 0x04,0x59,0x38,0x50,0x1f,0x6c,0xb2,0x0f,0xa1,0xd7,0xe0,0xb2,0xa9,0x60,0x94,0x24,
- 0xf0,0x63,0xae,0x5e,0x6f,0xe0,0xce,0x36,0xd5,0x07,0xbf,0xa8,0xca,0xa2,0x58,0xa9,
- 0x54,0xac,0x0f,0xee,0xd6,0xa7,0xb1,0xa0,0xf2,0x63,0xd8,0x1f,0xe9,0x55,0xb4,0x1c,
- 0x2c,0x0b,0x72,0xa3,0x24,0xad,0x3f,0x52,0x06,0x7e,0x4c,0xa8,0xfe,0x7c,0x9d,0xd3,
- 0x20,0x8b,0x53,0xfb,0xe3,0x90,0x3a,0x16,0x4d,0xe0,0xc7,0xe8,0xf5,0x42,0x7d,0x70,
- 0x73,0xc4,0x8f,0xc9,0x7c,0xce,0x83,0x8a,0x3f,0x64,0xa6,0xfe,0x38,0xce,0x8f,0x75,
- 0x55,0x0a,0xf5,0x41,0x6a,0xcb,0xec,0xe8,0xeb,0x83,0x09,0x7f,0x48,0x1a,0x54,0xc8,
- 0x9f,0xbc,0x99,0xd0,0x87,0x83,0x65,0x32,0xc1,0x58,0xc0,0xd8,0x1f,0xd7,0xa8,0x04,
- 0x62,0x7d,0xb0,0x62,0x97,0x58,0x0f,0x6d,0x02,0xd6,0x5b,0x25,0xcd,0x87,0x9d,0x6e,
- 0x28,0xcb,0x02,0xf5,0xc1,0x87,0x45,0x7d,0xd4,0x71,0x46,0x8b,0x25,0xf5,0x51,0x0b,
- 0x58,0x7d,0x10,0xd4,0x47,0x1d,0x4f,0x04,0x52,0x7d,0x30,0xe2,0x63,0xe7,0x64,0xac,
- 0x0f,0x7a,0x15,0x89,0x69,0x20,0x75,0x29,0xfc,0x18,0x9e,0xa7,0x6c,0x6d,0x4d,0xd1,
- 0x6f,0x08,0xf5,0x41,0x24,0xe9,0xa3,0xbe,0x91,0x5a,0x1f,0xec,0x89,0xfd,0xb1,0x6b,
- 0xa3,0x69,0xb0,0x19,0xea,0x83,0xb3,0x13,0x7a,0x0f,0x50,0xff,0x23,0xf0,0x63,0x15,
- 0x4c,0xdf,0xfb,0x7d,0x3c,0x0d,0x56,0x3a,0xb6,0xd8,0xaf,0x86,0x18,0x3f,0xf6,0x2f,
- 0xf5,0xbf,0xe8,0x21,0x77,0x7b,0x1b,0xfa,0x69,0x31,0xf2,0x47,0x7a,0x21,0x20,0x46,
- 0x49,0x67,0xef,0x8e,0xad,0x9f,0x3a,0x24,0x7f,0xc8,0x1d,0x7c,0x75,0x1e,0xd3,0x83,
- 0x2d,0x94,0x84,0x61,0x49,0x7f,0xc8,0x34,0x3d,0x8c,0x50,0x1f,0x9c,0x7e,0x88,0xca,
- 0xa2,0xc2,0xd5,0x45,0x65,0x17,0x32,0x16,0xe4,0x47,0xc2,0x7a,0x9f,0x15,0xf8,0x31,
- 0xe1,0x18,0xd2,0xea,0x51,0xc5,0xfa,0xa0,0xf1,0xbc,0x7b,0x52,0xad,0x0f,0x36,0xeb,
- 0xc7,0x52,0x40,0xfc,0x98,0xa8,0x07,0x96,0x82,0xe7,0xf0,0x84,0x35,0x50,0x1f,0xfe,
- 0x63,0x5a,0x0f,0x7a,0xc4,0x61,0x63,0x41,0xc2,0xb4,0x2c,0x23,0xfe,0xd8,0x49,0x7d,
- 0x54,0xc0,0x57,0x57,0x6c,0xff,0x4f,0xdc,0x16,0x17,0x7e,0x32,0x67,0x88,0x04,0x8a,
- 0x3e,0xfc,0x72,0xfd,0x93,0xe8,0x8f,0xd9,0xf9,0x35,0x5c,0x77,0xb1,0x3b,0x1a,0x0b,
- 0xf2,0x6c,0xdd,0xc5,0x58,0xf1,0x92,0xa8,0x0f,0xde,0x2d,0x3e,0x2d,0xde,0xaa,0x73,
- 0xb5,0x66,0x7d,0x54,0xc9,0x11,0xd0,0xce,0x93,0x43,0xcd,0x25,0x07,0xea,0x8f,0x1b,
- 0x65,0xfb,0xf3,0x00,0xda,0x6d,0xe3,0x7e,0x25,0xf6,0xbf,0x5f,0xa5,0x04,0xe1,0xaf,
- 0x2e,0x72,0x7d,0xb8,0x2d,0xe9,0xa3,0x9a,0x4b,0xa0,0xde,0x9e,0xeb,0xc3,0xeb,0x93,
- 0xfa,0x70,0xf0,0xef,0xe5,0x1c,0xc3,0x4b,0xc5,0x7a,0xf1,0x79,0xc8,0xe9,0xf4,0x51,
- 0x6c,0xff,0x19,0x72,0x0f,0xf1,0x7e,0x84,0x77,0xc4,0xef,0xaf,0x85,0xf1,0xcf,0x4d,
- 0xc2,0xf3,0xf0,0x64,0xe4,0x6f,0xd9,0xc1,0xef,0xdf,0x25,0xc1,0x07,0xec,0x79,0x10,
- 0xf4,0x51,0x6a,0x5a,0x00,0xfc,0x33,0xea,0x72,0x7d,0x78,0x14,0x38,0xdb,0xa7,0xa8,
- 0x7a,0xa1,0x71,0x8e,0x7f,0x66,0xd6,0xa2,0xf7,0xdc,0x95,0xa5,0xd3,0x2d,0xd3,0x5e,
- 0x70,0x7e,0x17,0xa2,0x9d,0xda,0x36,0x6e,0x8b,0xfd,0x42,0xf8,0x6e,0x87,0xf1,0xcf,
- 0x1d,0x2f,0xb2,0xc7,0xcd,0x9f,0x7e,0x02,0x5d,0x62,0xfd,0x95,0x0e,0x4f,0x4b,0x7f,
- 0xdc,0xa1,0xa9,0xd4,0x07,0x05,0x7f,0x72,0xc0,0xa8,0x81,0x14,0x52,0x05,0x7d,0xb8,
- 0x23,0xe2,0x1f,0xdd,0x7c,0xc9,0x8b,0x0b,0xe8,0xf7,0x7b,0x92,0x3e,0xea,0x07,0x90,
- 0x3e,0x6a,0x7d,0x57,0x43,0x99,0xe1,0xd5,0x2d,0x76,0x8c,0x7f,0xf2,0xc6,0xfd,0x87,
- 0xeb,0xc3,0xcb,0xd3,0xb1,0x3e,0x7c,0x0e,0x2c,0x8b,0x02,0xfd,0x21,0x05,0xbd,0xca,
- 0x68,0x16,0x7d,0xf8,0x7e,0xa2,0xff,0x89,0xce,0x3b,0xcd,0xfc,0x50,0x11,0xff,0x2c,
- 0x70,0x85,0xd3,0xb6,0x11,0x3e,0x7f,0x85,0xfa,0xe0,0x4d,0x0b,0xec,0xf4,0xeb,0xb9,
- 0x3e,0xbc,0x69,0xba,0x88,0x7f,0x9a,0x8a,0x1a,0x7d,0x14,0xdb,0x7f,0xba,0xae,0xed,
- 0x74,0xe9,0x7c,0x58,0x7b,0xcc,0x5b,0x0a,0xcf,0x27,0xbd,0xc0,0xf6,0x9f,0x63,0x33,
- 0xf8,0x18,0x14,0x5c,0x38,0x5b,0x47,0x96,0xb9,0x3c,0x56,0x88,0x91,0x5f,0x7d,0xc0,
- 0xf6,0x9f,0x15,0x04,0xff,0xd4,0xe0,0x7a,0xd9,0x2b,0x68,0xe9,0xc6,0x5a,0x50,0x4f,
- 0xc5,0xf5,0x51,0x4e,0x31,0xf6,0x87,0x8c,0xf1,0x4f,0x23,0x72,0x82,0x06,0x05,0x11,
- 0x35,0x9c,0xe5,0xf8,0xc7,0x16,0xf5,0x51,0xbe,0xe7,0xff,0x50,0x5a,0xef,0x7d,0xc9,
- 0xfa,0xe0,0x1e,0x7b,0xbf,0x50,0x16,0xcc,0x3d,0xac,0xf1,0x1b,0x17,0xf4,0x51,0xfb,
- 0x39,0x7a,0xf9,0x30,0xd7,0xe0,0xff,0x02,0xb8,0xff,0x1c,0x9f,0x0f,0x3b,0x20,0xd6,
- 0x8b,0xdf,0xb5,0x71,0xf5,0x50,0xbd,0x7e,0xcd,0x47,0xcc,0x1f,0xdb,0x49,0xfa,0x03,
- 0xa4,0xcc,0x87,0x75,0xb8,0x3e,0x8a,0xb9,0x61,0x53,0xd8,0xd3,0x08,0xe0,0x1f,0xc7,
- 0x96,0xaa,0x81,0x8b,0x75,0xf8,0x87,0xfe,0xff,0x22,0x57,0xf8,0x6b,0xbd,0x4e,0x9a,
- 0xaf,0x2a,0xea,0xc3,0x99,0x3f,0xb6,0xb3,0xe7,0x76,0x09,0xed,0xbc,0x55,0x47,0xeb,
- 0x83,0x53,0xa5,0xf9,0x68,0xf4,0xeb,0x05,0x7d,0x94,0xa1,0xff,0x5d,0xd0,0x47,0xed,
- 0x7a,0x62,0x23,0xc7,0x3f,0x61,0x50,0xe0,0xc7,0xd6,0xb4,0x2b,0x0e,0x3d,0xbf,0xb8,
- 0x3e,0xca,0xd9,0x8d,0x37,0x0d,0x7a,0xb7,0x4b,0x4a,0x55,0x5f,0xe2,0xfd,0x71,0x83,
- 0xb1,0x50,0x53,0xd4,0x47,0x21,0xf4,0x33,0xfb,0x3a,0x71,0x75,0x60,0x63,0x6f,0x3f,
- 0xd7,0x47,0xd9,0xe2,0xfb,0x97,0xad,0xd1,0x87,0x8b,0xfa,0xa8,0x70,0x51,0x71,0x7d,
- 0x70,0xc4,0x7e,0x3c,0xdc,0x5d,0xc1,0xf9,0x0e,0xaf,0xf2,0xe7,0xad,0x5e,0xc9,0xcf,
- 0xb4,0x11,0x57,0x39,0xef,0xd8,0xfe,0x33,0xcf,0x3d,0xe1,0xb0,0xd3,0x0d,0xeb,0xa3,
- 0xaa,0xa1,0xf3,0x6e,0x94,0xdd,0xcf,0xde,0x4c,0xfe,0x90,0xe7,0xd8,0xfe,0x13,0x54,
- 0x28,0xd7,0x63,0x7d,0x54,0x4e,0x5b,0x1f,0x74,0x0b,0xbe,0x38,0x16,0xa4,0x14,0x0d,
- 0xa6,0x21,0xf3,0xbb,0x99,0x42,0x58,0xc0,0x3f,0x7b,0x88,0x3f,0xc0,0xe1,0xfc,0xdb,
- 0xf1,0xfb,0xf8,0x91,0x58,0xff,0xd3,0x4f,0x3e,0x89,0xf1,0x1e,0xc7,0x3f,0x33,0x70,
- 0x19,0x31,0x5e,0x5d,0x31,0xb6,0x05,0xc8,0xcb,0xfe,0xd8,0x49,0x7d,0x14,0x01,0xc9,
- 0x2f,0xcb,0xb6,0xea,0x5a,0xfc,0xb3,0x87,0x80,0x9c,0xfb,0xad,0x7f,0x53,0x60,0x0f,
- 0xc0,0xff,0x84,0xf8,0x27,0x5e,0x54,0x71,0xa7,0x81,0xdf,0xe0,0xfc,0x4f,0xd9,0x3e,
- 0x14,0x83,0x84,0xa2,0x65,0x10,0x8a,0x73,0xfe,0x67,0xf5,0x0c,0xa2,0x56,0x7a,0x00,
- 0xb0,0x65,0xe6,0xfd,0x71,0xaa,0x3f,0xf6,0x8b,0x39,0x83,0x3f,0x12,0xc7,0x3f,0xfd,
- 0x94,0xff,0x79,0xb4,0xda,0xf0,0x87,0x09,0xf8,0x63,0xb7,0x00,0xb6,0x5a,0x40,0x7f,
- 0x5c,0x89,0xed,0x3f,0x55,0x99,0xf8,0x9f,0x51,0xf7,0x76,0x85,0xfd,0x30,0xf7,0xc7,
- 0xdd,0x12,0x93,0x3c,0x27,0xf8,0x58,0x58,0xa3,0x3e,0x7c,0xc6,0x09,0xff,0x49,0x2e,
- 0x8b,0x12,0xfb,0x35,0x34,0xfc,0x0f,0x71,0xa3,0xea,0x33,0xe5,0x5f,0xe0,0x7f,0x66,
- 0x12,0xfc,0xb3,0x11,0xb0,0xc5,0xd6,0xe8,0xc3,0x0f,0x04,0x5c,0x06,0x9f,0xa6,0x0f,
- 0xa7,0xfa,0xa8,0xea,0x13,0x3f,0x34,0x34,0xfe,0x88,0xfc,0x4f,0xac,0x86,0xaa,0x7b,
- 0x2b,0xbf,0x85,0x0b,0xc5,0x71,0x30,0x17,0xd6,0x87,0xe7,0x8a,0x94,0xf6,0x31,0x08,
- 0x77,0x25,0xfc,0xe3,0xe2,0xb6,0xb8,0x0d,0xf7,0xe5,0x17,0x24,0x8c,0xa0,0x35,0xfa,
- 0x70,0xc2,0xff,0xec,0xc9,0x67,0xf2,0xc7,0x5e,0x51,0x21,0xf0,0x3f,0x19,0xfc,0x91,
- 0x38,0xfe,0x99,0x92,0xc9,0x1f,0xbb,0xab,0x86,0xcc,0x07,0x41,0xd5,0x9c,0x08,0xaa,
- 0xd4,0xfb,0x63,0x33,0x7d,0xd4,0x8b,0xdd,0x26,0x7d,0xb8,0xca,0xff,0x40,0xb6,0x90,
- 0x10,0xff,0x33,0x93,0x80,0x9c,0x2a,0x4b,0x1d,0x0b,0x02,0xf1,0x3f,0x68,0x17,0xd1,
- 0x83,0xdd,0x6f,0x3b,0xda,0xf5,0xca,0xf8,0x27,0x4a,0x5a,0xbd,0xc9,0x6f,0x5c,0xf2,
- 0xc7,0x8e,0x6d,0x9d,0xee,0x07,0xc6,0x82,0x00,0xfd,0x71,0x58,0x1f,0x75,0x5c,0x77,
- 0x19,0xa0,0x0f,0x77,0xa8,0x3e,0x7c,0x57,0xde,0x23,0x42,0xb5,0x8c,0xfd,0x71,0x56,
- 0x1c,0xf4,0xa6,0xf4,0xc7,0x71,0xfc,0x63,0xd8,0x7f,0xb8,0x3f,0x76,0xe0,0xde,0x96,
- 0xe1,0xef,0x97,0xfb,0x63,0xf7,0xf4,0xdc,0x9e,0x8b,0x40,0xce,0xd7,0xab,0x55,0x5b,
- 0x48,0x68,0x3e,0x2c,0xc5,0x3f,0x8f,0x19,0xf1,0x0f,0xef,0x8f,0xe3,0xfa,0xf0,0xf6,
- 0xb8,0xbf,0x29,0xd6,0x47,0xad,0x3a,0x47,0x83,0xb2,0x3c,0x1f,0x96,0xee,0x3f,0x2e,
- 0xbd,0xff,0x3b,0xe3,0xdb,0x2e,0xd3,0xa0,0x24,0xf7,0xc7,0x05,0xe4,0xfa,0xaf,0x55,
- 0xc9,0xeb,0x1d,0xd0,0xf4,0xc7,0x71,0xfc,0x23,0xe4,0xb3,0x35,0x91,0x4f,0xb1,0x3f,
- 0x8e,0x2d,0x8a,0xef,0x9f,0x05,0xce,0x08,0xa1,0x68,0x02,0x9a,0xe0,0x8f,0x9d,0x23,
- 0xf9,0xe9,0x4b,0xa6,0xe5,0xb4,0xc4,0xff,0xd0,0xfb,0x67,0xf8,0x67,0x08,0x18,0x0b,
- 0x02,0xea,0xa3,0x08,0x9e,0x69,0x61,0x63,0xd9,0x1b,0xd5,0xf3,0x0b,0xf4,0x47,0x32,
- 0x9c,0x77,0xa2,0x3e,0x8a,0xa4,0xe5,0x01,0x9a,0x9f,0xa5,0xb1,0x2d,0xb6,0x4e,0x1f,
- 0xfe,0x0f,0x5b,0xfd,0x68,0x51,0x7f,0x49,0xf3,0x73,0x8c,0xbc,0x68,0x8b,0x46,0x40,
- 0x25,0x11,0xff,0xf4,0xc9,0xab,0x7b,0x3f,0x4f,0x26,0xa6,0xbd,0x0b,0xe3,0x1f,0x15,
- 0xed,0x08,0x41,0xec,0x0f,0x79,0x87,0xae,0x3f,0xae,0x29,0x15,0xff,0x88,0xfe,0x00,
- 0xd3,0xc9,0xf4,0x5b,0xfa,0x49,0x43,0xb4,0xf0,0x78,0xbd,0xec,0x7e,0xea,0xf5,0xb0,
- 0xa7,0x01,0xe0,0x7f,0x10,0x30,0x1f,0x04,0xa8,0x7f,0x65,0xf0,0x87,0x9c,0x6b,0xf2,
- 0x47,0x2a,0x11,0xfd,0xf9,0x52,0xf9,0xfb,0xdd,0x3b,0x55,0x7d,0xb8,0xf0,0x18,0x9c,
- 0x8f,0xa7,0x99,0xa4,0xfb,0x23,0x91,0xb4,0xec,0x8b,0xdd,0xe3,0x59,0xc6,0x76,0xab,
- 0xf8,0x47,0x9a,0x8f,0x76,0x40,0x68,0x9c,0xe7,0xc1,0x2c,0x09,0xff,0xac,0x2d,0x38,
- 0x0c,0xed,0x9c,0x47,0x2d,0x49,0xfc,0x73,0x18,0xf6,0x47,0xa2,0x69,0x79,0xbc,0x44,
- 0xda,0xe2,0x88,0xe2,0x4e,0xf5,0x07,0x98,0x71,0x41,0x1c,0x6b,0xb8,0xbc,0xb4,0x41,
- 0x68,0x8b,0x83,0xfc,0x01,0xae,0x39,0xc1,0xdb,0x4c,0x7e,0xaa,0x31,0x0a,0x90,0xfc,
- 0x01,0x9e,0x10,0x65,0xf0,0xd0,0x7a,0xb1,0x3f,0x00,0xe3,0x7f,0xd6,0xda,0x82,0x1a,
- 0xfc,0xa1,0x44,0x3e,0x35,0xfe,0x00,0x82,0x1b,0x24,0x5c,0x08,0xfb,0x3d,0xcd,0x87,
- 0x25,0x34,0x48,0x0a,0xff,0x23,0xc1,0x18,0x81,0xcf,0xe9,0xcd,0xe2,0x0f,0xf9,0x45,
- 0xe9,0x98,0x8e,0x8f,0xf2,0x59,0x06,0x7f,0x48,0x2f,0x0d,0xff,0x48,0xf3,0x61,0x47,
- 0xd1,0x72,0x71,0x99,0x6b,0x00,0xfe,0x27,0xae,0x7f,0xd1,0xea,0x5e,0x93,0x4c,0x6b,
- 0x98,0xf0,0x8f,0x09,0x0f,0xdc,0xf1,0x86,0xa6,0xfe,0xe5,0x01,0xf8,0x27,0x67,0x98,
- 0x0f,0xeb,0x24,0xf0,0x8f,0x7d,0xf5,0xfe,0x90,0xc9,0xf9,0x68,0x3f,0x92,0xea,0x59,
- 0x44,0xef,0xcd,0xf9,0x1f,0x79,0x3e,0x9a,0xd6,0x1f,0x00,0x9e,0x8f,0x96,0xc5,0x1f,
- 0xc0,0x6e,0xd2,0xda,0x02,0x40,0xfc,0xcf,0x64,0xfd,0x01,0x3c,0xc8,0x1f,0x40,0xe9,
- 0x6f,0xe5,0xfc,0x8f,0x30,0x1f,0x2d,0x44,0x3b,0x43,0xe9,0xfe,0x00,0xd7,0x1e,0x12,
- 0xd8,0x8c,0xce,0x54,0xfc,0xe3,0x57,0x30,0xb5,0x06,0x9e,0x06,0xdb,0x9a,0xf6,0xfe,
- 0x4e,0xfc,0x91,0xca,0xc4,0x0d,0x29,0xdc,0x7f,0xb6,0x73,0x5b,0x92,0xc8,0x1f,0xa9,
- 0x0c,0xf9,0x03,0x9c,0x24,0xab,0x9b,0xa7,0xce,0x87,0x3d,0x29,0xf1,0x3f,0x72,0xfd,
- 0xcb,0xd6,0xec,0x3f,0xe2,0x7c,0x34,0xe1,0x7c,0x99,0x40,0x47,0xe1,0xf5,0x9e,0x85,
- 0xfc,0xb1,0x0d,0xc1,0xeb,0x3a,0x7f,0x00,0x4d,0xc0,0xf9,0x1f,0xc9,0x1f,0xe0,0x7c,
- 0x06,0x7f,0xc8,0x9c,0x70,0xbd,0xb6,0x9f,0x4b,0xe9,0x8f,0x1b,0x20,0xe7,0x1d,0xc6,
- 0x3f,0x3b,0xc5,0xfc,0xf8,0x49,0xfc,0xe3,0x44,0x6a,0x13,0xac,0x0f,0x1f,0x09,0xde,
- 0xa4,0xfa,0x70,0xba,0xde,0xdd,0x97,0x56,0x47,0xbf,0x2a,0x27,0xfd,0x91,0xb0,0x09,
- 0xf6,0xe5,0xb8,0x1f,0x50,0x68,0xeb,0x7e,0x1b,0x91,0xd1,0xb1,0x06,0xfc,0x53,0x33,
- 0x96,0x9b,0xa4,0x3f,0xc0,0xa4,0xe6,0x83,0x68,0xf8,0x1f,0x93,0x3f,0xf6,0x26,0x1c,
- 0xd4,0x4a,0x83,0x7a,0x27,0x8f,0x7f,0xe8,0xf3,0xc9,0xf1,0xcf,0x34,0xc3,0xf3,0x00,
- 0xcc,0x87,0x3d,0xa2,0x7e,0x2d,0x3f,0xe8,0x35,0xf8,0xc7,0xc0,0xff,0xd0,0x1f,0xd8,
- 0x1f,0x3b,0x83,0xfe,0xc7,0xd8,0x2f,0x2f,0xe9,0x7f,0x6c,0x99,0xed,0xb9,0x1e,0x07,
- 0x81,0x96,0xff,0xb9,0x56,0x87,0x0f,0x61,0xfe,0xe7,0xa0,0xd6,0x9f,0x4a,0x83,0x7f,
- 0xb8,0x3f,0x76,0x26,0x7f,0xc8,0x93,0x99,0xfc,0x01,0x24,0x7f,0x24,0x75,0xec,0x8e,
- 0x09,0xff,0xfc,0xe4,0x20,0x47,0x3b,0x98,0xf6,0xa9,0xfe,0x44,0xf1,0x8f,0x26,0xf8,
- 0xe4,0xfd,0xb1,0xe9,0x4f,0x46,0x7f,0x6c,0x76,0xfd,0x31,0x11,0xff,0x68,0x03,0xed,
- 0x7c,0xd8,0x38,0x70,0x92,0x9f,0x70,0xfc,0xb3,0x87,0xf1,0x3f,0x20,0x7f,0xf2,0x8c,
- 0x41,0xff,0x13,0xf3,0x3f,0x75,0x22,0xfe,0xb1,0x7a,0x0c,0xf3,0x41,0xa0,0x85,0xef,
- 0x30,0xe0,0x9f,0x38,0xb1,0x55,0x52,0x3e,0xef,0x4d,0xe2,0x9f,0x87,0xeb,0xd9,0xdd,
- 0xc6,0xf7,0x5f,0x2d,0xdc,0x7f,0x3f,0xbd,0xff,0x49,0xfb,0x23,0x31,0xfc,0xb3,0x88,
- 0xe3,0x1f,0xc3,0x7c,0x3a,0x61,0x3e,0x2c,0xe5,0x7f,0xbc,0x88,0xcf,0x94,0x0b,0x61,
- 0x63,0x06,0xfc,0xe3,0x02,0xfc,0xcf,0x00,0xc3,0x3f,0x6c,0x3e,0x2c,0xf3,0x47,0xda,
- 0x68,0xb1,0xb1,0x1a,0x2c,0x78,0x99,0x06,0x03,0x37,0xd2,0xef,0x67,0xfe,0x48,0x5f,
- 0x63,0x63,0x41,0xa6,0x31,0xd8,0xf3,0x2a,0xd3,0xff,0xb0,0xf9,0xd4,0xcc,0x1f,0xd2,
- 0x05,0xb6,0x91,0x61,0x86,0x7f,0xf8,0xfb,0x11,0x3d,0xbf,0xd8,0x58,0xab,0xe3,0xfc,
- 0xd8,0xfa,0x88,0xe9,0x7f,0x14,0x7f,0xc8,0xf0,0xfe,0xc9,0x6e,0xb3,0x22,0x0c,0x1e,
- 0x49,0xdc,0x3f,0xe0,0x8f,0xc4,0xae,0x17,0xf0,0x0f,0xbb,0x9e,0xeb,0x6d,0xa8,0x3f,
- 0x52,0xde,0x25,0x69,0x5c,0x13,0x0f,0xaa,0x96,0xf3,0xc9,0xf1,0xcf,0x16,0x8a,0x7f,
- 0x28,0x9f,0xf3,0x34,0xb4,0xde,0x67,0xb3,0xe1,0x1f,0x76,0x3d,0xd7,0x07,0x96,0x28,
- 0xfe,0x19,0x82,0x8e,0x39,0x83,0x3f,0x12,0x34,0x96,0x7d,0x98,0xeb,0x7f,0x14,0xfe,
- 0x07,0x1a,0x83,0x35,0x0c,0xe0,0x9f,0xa4,0xde,0x03,0x1b,0x65,0x2b,0xf9,0x11,0xfa,
- 0xe3,0x6a,0xb6,0x26,0xf8,0xae,0x47,0x70,0xb0,0x51,0x5e,0xaf,0xe2,0x0f,0x29,0x2c,
- 0xf3,0x22,0xb0,0x5e,0x8e,0x7f,0x4e,0x55,0x5c,0xb1,0x27,0x76,0x24,0x68,0x9f,0x8d,
- 0x0c,0xff,0xbc,0x13,0x57,0x54,0x85,0xfa,0xd7,0x4c,0x15,0xed,0x0c,0x06,0xf1,0xc4,
- 0x90,0x9d,0x23,0x91,0x75,0x40,0xd5,0x31,0x6b,0x54,0xad,0x7f,0xa9,0xc7,0xd0,0x52,
- 0x6b,0xb0,0xb8,0x2f,0xcc,0x4f,0xa5,0x41,0xff,0x43,0x82,0x87,0xc2,0x20,0xc4,0x3f,
- 0xb1,0xf1,0x54,0x95,0x88,0x7f,0x56,0x9b,0xf1,0x0f,0x2e,0xcd,0x14,0x0e,0xe7,0xdf,
- 0xe7,0xfa,0x1f,0x95,0xff,0x81,0xfc,0xa3,0x14,0xfe,0xa7,0x46,0xfa,0xda,0xd7,0x48,
- 0xe1,0x95,0x52,0x1f,0xdf,0x61,0xf8,0xa7,0x14,0x3d,0x0f,0xb5,0xba,0x7e,0xc9,0xde,
- 0x24,0xff,0x33,0x60,0x43,0xf8,0x47,0xe8,0x30,0x8d,0x2a,0xf2,0x5d,0x50,0xfd,0x4b,
- 0x80,0x01,0x49,0xc7,0x00,0x41,0xff,0xe3,0xdc,0xac,0xa0,0x9d,0x41,0x3c,0x1f,0xa4,
- 0x14,0x0d,0x0a,0x79,0x2a,0x0e,0xbe,0x2a,0xf9,0x03,0x18,0xf1,0x4f,0xcc,0xff,0xfc,
- 0x33,0xcd,0x0f,0xd6,0xff,0xbc,0x17,0xc8,0xb4,0xd8,0x85,0xb8,0x22,0x86,0x27,0x86,
- 0xbc,0xa6,0xe0,0x1f,0x57,0xf5,0x87,0x1c,0x8f,0x19,0xa1,0x51,0xce,0xa8,0x27,0xf5,
- 0x3f,0xf3,0x12,0xeb,0x3d,0x40,0x2b,0x80,0x64,0x3e,0x1a,0xdf,0x7f,0xb6,0x60,0xfd,
- 0xb3,0x95,0x7c,0xed,0xea,0x4e,0x30,0xd2,0x82,0xfe,0xa7,0x1e,0x83,0x9c,0xa3,0x09,
- 0xda,0xe7,0x2d,0x3a,0x31,0x04,0xf0,0x07,0xc8,0xf2,0x3e,0xae,0xf1,0x07,0x48,0x04,
- 0x16,0x0b,0x54,0xfc,0x53,0x6b,0xc2,0x33,0x8d,0x60,0xfd,0x2b,0xd3,0x7c,0x10,0x5a,
- 0xff,0xaa,0x32,0xe3,0x1f,0xa9,0xfe,0x95,0x01,0xff,0x28,0xf5,0x2f,0x49,0xc6,0x73,
- 0x38,0xae,0x10,0x75,0x33,0xa3,0xc8,0x0f,0x24,0xfe,0xe7,0x72,0x22,0x3f,0x9b,0x37,
- 0x46,0x1d,0xf7,0x0f,0xe4,0x59,0xea,0xc4,0xfa,0x57,0x51,0x2d,0x7b,0x05,0x11,0xec,
- 0xd9,0x69,0x79,0x45,0xf2,0x89,0x4e,0xff,0x43,0x06,0xa5,0x05,0x44,0xf6,0xb3,0x8b,
- 0x0e,0x0a,0xb9,0x5f,0xa9,0x7f,0xe5,0x55,0xd8,0xe3,0x12,0x44,0x94,0xef,0xeb,0x30,
- 0xfb,0x43,0x6e,0xa6,0x8e,0x07,0xec,0xfe,0x0f,0x4a,0xf5,0xaf,0x74,0xfc,0x03,0xd4,
- 0xbf,0x12,0x69,0x6f,0x93,0x14,0xe9,0x62,0xfd,0xeb,0x60,0x92,0xf6,0x89,0xe6,0xc3,
- 0xb6,0xc5,0x9f,0x60,0xc7,0x80,0x3a,0x4d,0xfd,0x6b,0x30,0x9a,0x4e,0xbe,0x1e,0x1b,
- 0xfb,0x3f,0x42,0x1b,0xdb,0x7f,0x9c,0xe4,0x7f,0x58,0xfd,0x6b,0x9b,0x4c,0x83,0xe0,
- 0xc6,0xf9,0x29,0xb8,0xe3,0x3e,0xe1,0x0f,0xd9,0xd3,0x43,0xf5,0x3f,0x16,0xa7,0x7d,
- 0xfc,0x5f,0x05,0x5f,0x2e,0xd7,0x6d,0xcf,0x5f,0xf1,0x7e,0x13,0x5c,0xab,0xe8,0x7f,
- 0xea,0x93,0xdb,0x38,0xf1,0x87,0x7c,0x34,0x3f,0x52,0xc2,0xc1,0x2d,0x52,0xfd,0x6b,
- 0xd7,0x13,0xae,0x5a,0xb6,0x88,0xe6,0x5b,0x8d,0x77,0x5f,0x41,0xa7,0x77,0x44,0xa3,
- 0x63,0x05,0x7f,0xc8,0x99,0xcc,0x1f,0x52,0xb0,0xa5,0x65,0x8c,0xf4,0x3d,0xd9,0xfc,
- 0x21,0x0f,0x24,0xae,0x2f,0x79,0x34,0xff,0x9e,0x0d,0x9d,0x77,0xdd,0x72,0xd0,0x28,
- 0xd7,0xbf,0x1e,0x4f,0xac,0x77,0x9c,0x4e,0x8c,0x65,0x46,0x88,0x82,0x1e,0x3b,0x77,
- 0x08,0xdd,0x09,0x9f,0x77,0xa3,0xf9,0x11,0x4b,0xc1,0x3f,0xf3,0x0c,0xfa,0xe7,0x79,
- 0x80,0x3f,0xa4,0x59,0xff,0x93,0x63,0x78,0x06,0xa8,0x7f,0x41,0xef,0xfb,0xbf,0x04,
- 0xeb,0x5f,0x2e,0xfc,0x5a,0xba,0x09,0xaa,0x7f,0x61,0xfc,0xe3,0xcb,0xeb,0x3d,0x43,
- 0xd7,0x7b,0x06,0x9d,0xcf,0xc5,0xfe,0x87,0x6c,0xff,0xd9,0x3b,0x23,0x95,0xef,0x3a,
- 0x9d,0xa9,0xfe,0xe5,0xd5,0xae,0xcd,0x7f,0x80,0x4e,0xa3,0xd6,0x4c,0xfc,0x0f,0x5a,
- 0x5c,0x76,0xfa,0x76,0xe2,0x8d,0xa2,0xb1,0xa4,0xf2,0x3f,0xb9,0x58,0xe6,0x2d,0x09,
- 0xed,0x50,0x95,0x17,0xa6,0xa5,0x1b,0x1d,0x4c,0xe5,0x7f,0x48,0xe0,0x84,0x69,0xb4,
- 0xee,0x45,0x8b,0x64,0xfe,0xc7,0x07,0x9e,0x9f,0x28,0xc0,0x0e,0x36,0x83,0xe8,0x39,
- 0xef,0x0b,0xf8,0x93,0x4c,0xf3,0xd1,0x42,0x84,0xec,0x5d,0x2e,0x5e,0xa7,0xab,0x7f,
- 0x4d,0x95,0xbe,0x7f,0x29,0xaa,0x7b,0x38,0x3c,0x1f,0x2f,0xb9,0x4b,0x15,0xfe,0x07,
- 0x9c,0x2f,0xb3,0x0c,0x07,0x7f,0x8a,0x8e,0x0f,0x2d,0x87,0xea,0x5f,0xea,0xf3,0xe0,
- 0xa1,0x6a,0xdb,0xaa,0x40,0xff,0xe1,0x37,0x65,0xe3,0x7f,0x16,0xbe,0x5e,0xfd,0x72,
- 0xd5,0x1f,0xa1,0xc7,0x00,0xfe,0x87,0xc0,0x1e,0x6b,0x90,0x07,0x97,0x50,0x4b,0xae,
- 0xce,0xcb,0xa3,0xdc,0x25,0xb4,0x22,0x9d,0xff,0x61,0xfd,0x5f,0x17,0xd1,0x84,0x7b,
- 0x9d,0x66,0x3e,0x9a,0xd0,0x1f,0x87,0x3f,0x59,0x89,0xf3,0xdf,0x8c,0x47,0xcf,0x97,
- 0x0b,0x2b,0xaa,0x17,0x65,0xe0,0x7f,0x1c,0xac,0x28,0x38,0x8a,0xf6,0x61,0x85,0xe1,
- 0x52,0x68,0x3e,0x9a,0xb4,0xde,0x25,0x5e,0xd5,0xb0,0xf5,0x05,0x0f,0x57,0xc4,0x9c,
- 0x2e,0xab,0x25,0xe1,0x8f,0x2d,0xe5,0x33,0x1a,0x3b,0xb8,0x15,0x3b,0xd2,0x57,0x21,
- 0x6c,0x9d,0xed,0xb4,0x58,0x0d,0xd0,0x7c,0xb4,0x04,0xed,0x53,0xeb,0x85,0xff,0xbf,
- 0x57,0xd0,0x72,0x3c,0x3a,0xa4,0x0d,0xe6,0x7f,0xba,0xe4,0x83,0xa9,0x7a,0x14,0x8d,
- 0xfa,0x6d,0x99,0xf8,0x1f,0x3f,0x52,0xfc,0x2e,0x40,0x1f,0xee,0x6d,0xcc,0xc4,0xff,
- 0x04,0xcd,0x7e,0x3c,0xb1,0xa2,0xb3,0x31,0x1b,0xff,0xb3,0xc8,0xaf,0x1c,0xb2,0x96,
- 0x55,0x44,0x13,0x4e,0xe1,0xfa,0x57,0x87,0x54,0x06,0x5a,0xe2,0x3b,0x43,0xd6,0x74,
- 0x74,0xa4,0x69,0x8b,0xa1,0xfe,0x25,0x9d,0xbf,0x35,0x41,0xbe,0xc5,0x1e,0xf3,0xda,
- 0xf4,0xfe,0xd8,0x42,0x80,0x0b,0x61,0x0d,0xbd,0x23,0xc5,0x89,0xa6,0xc7,0xd6,0xa5,
- 0xd5,0xbf,0xa6,0x2e,0x88,0x11,0xd1,0x4b,0xf9,0x97,0xfc,0xcb,0xa8,0xf5,0x46,0xec,
- 0x8f,0xa4,0x9b,0x0f,0x8b,0x83,0x7c,0x67,0x5c,0x08,0xdb,0x89,0x3f,0x71,0x1a,0xb5,
- 0xfc,0x0f,0x09,0xfa,0x70,0x23,0x98,0xd3,0xec,0xf7,0x36,0x58,0xfd,0xc1,0x11,0xd7,
- 0x4b,0xaf,0x7f,0x6d,0x16,0x11,0x51,0x63,0xaa,0x3f,0xb6,0xc5,0x10,0x0e,0x76,0xfc,
- 0x3e,0x9a,0x99,0xff,0x79,0x10,0x07,0x4e,0x7b,0x47,0x5d,0x8a,0x3f,0xb6,0x55,0x8e,
- 0x15,0xe9,0x3d,0x79,0x0f,0x95,0x36,0x2e,0x45,0xcd,0x1a,0xfd,0x0f,0xc5,0x3f,0x53,
- 0x48,0x30,0x6c,0xb5,0xa1,0x7f,0x0c,0x7e,0x55,0x74,0xca,0x46,0x7f,0xec,0xc3,0x0d,
- 0x83,0x05,0x1c,0xcc,0xfa,0x92,0x55,0xeb,0x77,0x97,0xbc,0x6d,0x95,0x9e,0xec,0x8f,
- 0xed,0x68,0x68,0xdb,0xb1,0xaa,0x36,0xf4,0x13,0xb4,0x70,0x53,0x65,0xa7,0xc6,0x1f,
- 0x5b,0x01,0x42,0xd8,0xbf,0xb1,0xb5,0xb3,0x66,0x0b,0x30,0x1f,0x16,0x38,0xdf,0x5b,
- 0xf2,0xc3,0x16,0x56,0xd0,0xd5,0x16,0x13,0xf3,0x61,0x27,0x82,0xb9,0xd2,0xf9,0x15,
- 0x0b,0xa1,0xeb,0x86,0xf3,0xed,0x21,0xfe,0x69,0x2d,0x17,0x86,0xf3,0x48,0xe5,0x7f,
- 0xd4,0xfb,0x1f,0xb5,0x56,0xf8,0x77,0xa3,0x3f,0x2b,0x39,0x9d,0xd6,0x22,0x09,0xff,
- 0x1c,0x80,0xaf,0xef,0xb4,0x6e,0x43,0xd8,0x61,0x29,0xbc,0x1e,0x81,0xfe,0xd8,0x34,
- 0xc0,0x78,0xb2,0x79,0x2c,0x0c,0xd6,0xa1,0x1d,0x41,0x53,0xc9,0xf1,0x2c,0x47,0xf2,
- 0xc7,0x96,0xe6,0xdd,0x57,0x93,0xf9,0x17,0xe5,0x10,0xff,0xff,0xcd,0xce,0x81,0x9e,
- 0x46,0xbc,0xff,0x2c,0x4a,0xe7,0x7f,0xfa,0x31,0xde,0x0e,0xde,0xf5,0xdb,0xfb,0xe6,
- 0x16,0xf3,0x5a,0x7f,0x6c,0x12,0xfc,0x17,0x16,0x42,0x0f,0x75,0x2f,0x0b,0xf1,0xd5,
- 0xb7,0x0f,0x16,0xca,0xf3,0xb5,0xfe,0xd8,0x24,0xb8,0x17,0x07,0x7d,0xd6,0xc2,0xe0,
- 0xde,0xf2,0xf2,0x3e,0xa7,0x98,0x3a,0x1f,0xed,0x21,0x6f,0x71,0x69,0x56,0x93,0x55,
- 0x08,0x7a,0x77,0xec,0x1f,0xc2,0xd7,0x9b,0xf8,0x1f,0x6b,0x84,0xbf,0x9f,0xee,0x08,
- 0xf7,0xe7,0x26,0x4f,0x9d,0x0f,0x22,0xae,0x37,0xbc,0xfe,0x15,0x1c,0x14,0xf3,0xd8,
- 0x3f,0xf3,0xb1,0x52,0xa1,0x68,0xe4,0x7f,0x46,0xa7,0x8e,0x87,0xfb,0xc9,0xaa,0xd2,
- 0x54,0xfc,0xc9,0x65,0x74,0x57,0xa9,0xae,0xd3,0x5c,0xff,0x9a,0xac,0x3f,0xf6,0xe4,
- 0xea,0x5f,0xa2,0x4d,0xf1,0x6e,0xfa,0x7e,0x91,0x45,0xff,0x33,0x8b,0x37,0x52,0x21,
- 0x65,0x3e,0x1a,0xcf,0x8f,0x40,0xd4,0xac,0xe1,0xfa,0xe7,0xdf,0xcf,0x7c,0xd8,0xa4,
- 0x2d,0x79,0x5a,0xfd,0xeb,0xb5,0x74,0xfd,0xb3,0x84,0x7f,0x92,0x36,0x86,0xda,0xfa,
- 0xd7,0x37,0x30,0x0c,0xb8,0x42,0xd9,0x8f,0x94,0xfa,0x17,0x1f,0x0b,0xfb,0x54,0x06,
- 0xfd,0xf3,0xb5,0xd8,0x1f,0x52,0x86,0x3d,0x9f,0x66,0xfd,0x4b,0x87,0x7f,0x0c,0xf5,
- 0xaf,0x0c,0xf5,0x44,0x70,0x3e,0xac,0xa1,0xff,0xeb,0xb3,0x50,0xff,0x5a,0xff,0xe9,
- 0xce,0x87,0x05,0x96,0x39,0x3f,0x65,0x3e,0xc8,0xa4,0xf4,0xcf,0xf8,0xb7,0x49,0x22,
- 0x28,0x5b,0xff,0xbb,0x1a,0x20,0x59,0xff,0x43,0xfd,0x21,0xdd,0xfb,0xc4,0x65,0x56,
- 0x4a,0xeb,0x9d,0x94,0xfe,0x27,0xc1,0xff,0xbc,0x22,0xf4,0xbb,0xc1,0xf7,0xff,0x69,
- 0xcc,0x07,0xc9,0x3e,0x1f,0x76,0x32,0xfa,0x1f,0x70,0x3e,0x08,0xa0,0x7f,0xa6,0xdf,
- 0xaf,0xe0,0x9f,0xa9,0x4a,0xa0,0x9d,0x8f,0x96,0x0c,0xe2,0xc6,0xf0,0x93,0x75,0xca,
- 0x7c,0x90,0xbe,0xf8,0xb4,0xf2,0xff,0x37,0xd2,0xff,0xcc,0x27,0xfe,0x90,0x63,0x77,
- 0xe0,0x89,0x57,0xed,0xea,0x7c,0x10,0xd2,0xff,0x45,0xf4,0x3f,0xdb,0xa8,0xfe,0x99,
- 0x04,0xc3,0x2a,0xff,0xe3,0xb1,0xd5,0xf1,0xeb,0x23,0xfd,0xb3,0x43,0x02,0x78,0x3e,
- 0x08,0x7e,0x8d,0x85,0xf3,0x99,0x9c,0x0f,0xb2,0x98,0x2e,0x53,0xa3,0xff,0x81,0xe6,
- 0x83,0x98,0xf6,0xdb,0x34,0xfc,0x43,0x82,0x13,0x2a,0xff,0x03,0xe3,0x9f,0x38,0x20,
- 0xe7,0x6f,0x5e,0x3b,0x1f,0x36,0x8b,0xfe,0x07,0xe3,0x1f,0x2f,0xce,0x46,0x20,0xf4,
- 0x7f,0xf1,0xfc,0x3c,0xf3,0x10,0x30,0x1f,0x8d,0x57,0x73,0xe8,0x32,0x07,0xe8,0x1b,
- 0xf7,0x80,0x52,0xff,0xba,0xe4,0xde,0x45,0xd5,0x3e,0x7c,0xbd,0x43,0x62,0x23,0xb3,
- 0x99,0xff,0x19,0x0f,0x26,0x16,0xb4,0x0e,0x14,0xba,0xf2,0xed,0xe1,0x1b,0x52,0x2b,
- 0xfe,0x86,0x16,0x5e,0xff,0x02,0xf0,0xcf,0x3b,0xe8,0x78,0x5f,0xe3,0x36,0x3c,0x31,
- 0xd6,0xe9,0x0d,0x1e,0x7e,0xb4,0xfa,0x5f,0x2d,0x8f,0xd7,0xbf,0x00,0xfd,0x4f,0xbf,
- 0x1f,0x3e,0x18,0x78,0x10,0x61,0x33,0xea,0x0d,0x9f,0x90,0xf5,0x2d,0x96,0x65,0x9a,
- 0x0f,0x12,0xa5,0xbd,0x11,0x85,0xdf,0x1f,0x5e,0xbf,0xab,0xb1,0x54,0x7d,0xa4,0xa3,
- 0x85,0xed,0x27,0xff,0xd7,0xde,0xd5,0x07,0xd7,0x55,0x5c,0xf7,0xb3,0xf7,0xed,0x95,
- 0xaf,0xa4,0x27,0xeb,0x3e,0xe9,0x3d,0xfb,0xc1,0x18,0xb8,0x92,0x0d,0x68,0x88,0x21,
- 0x4f,0xc2,0x80,0x83,0x29,0xba,0x7a,0xfa,0xb0,0xfc,0x01,0x7e,0xd8,0xb2,0x51,0xa9,
- 0xa6,0x73,0xcd,0xb8,0x0c,0x9d,0x71,0x33,0xb6,0x3b,0x0d,0x74,0x9a,0xc2,0x7d,0x92,
- 0x30,0x9a,0x40,0xca,0xab,0xe3,0x0e,0x62,0x86,0x19,0x5e,0x52,0x4f,0xca,0x4c,0x68,
- 0x47,0x40,0x08,0xce,0x40,0xe2,0x27,0x23,0x1b,0x07,0x13,0xaa,0x52,0x27,0xf1,0x50,
- 0x0f,0xb6,0x3b,0x2e,0xe3,0xb4,0x06,0x9c,0xc1,0x09,0x76,0xc0,0xb8,0x67,0x77,0xef,
- 0xc7,0xde,0xf7,0x25,0x19,0x02,0xed,0x24,0xf7,0xfc,0xe3,0xdf,0xec,0x5b,0x5d,0xef,
- 0xdd,0xbb,0x7b,0xf6,0xb7,0x67,0xf7,0x9c,0x53,0xc2,0x7f,0x38,0xf8,0x00,0x52,0x85,
- 0xc5,0xec,0x46,0xfd,0x2b,0x76,0x87,0xb9,0x66,0x77,0xbd,0x5e,0xea,0xff,0x15,0x18,
- 0x0f,0xe7,0x61,0x0f,0x03,0x9f,0xd8,0x17,0xd8,0x7a,0xd7,0x56,0xe6,0xfc,0xcb,0x35,
- 0xfb,0x30,0x70,0x82,0x5b,0xe4,0xa2,0xe2,0xc6,0x7e,0x87,0xb9,0xf8,0xd9,0xfa,0x54,
- 0xa5,0xfb,0x3f,0xee,0xfd,0x67,0xe4,0xc3,0x1a,0xe3,0xb7,0x2f,0xa9,0xad,0x47,0xf0,
- 0x45,0x3a,0x2a,0xd9,0x7f,0x9c,0xf9,0xf2,0x1c,0xf0,0xc0,0xce,0x94,0x97,0x20,0x48,
- 0x79,0xfa,0xe7,0x98,0x6c,0xff,0xd9,0xe3,0x1e,0x0c,0x7d,0xdf,0x5e,0x6c,0x69,0x5f,
- 0x57,0x2e,0x67,0x25,0x79,0x6d,0xb3,0x92,0x2c,0xc7,0x7f,0xb8,0xd9,0x87,0x81,0x29,
- 0x56,0x62,0x47,0x53,0x11,0xfc,0xc9,0x4c,0x15,0x10,0x5c,0x5a,0xc9,0xfe,0xb3,0xc7,
- 0xeb,0x28,0xf8,0xf2,0x34,0x8b,0x9f,0xa0,0xef,0x99,0x81,0xff,0x3c,0xb6,0x3b,0xf2,
- 0x2f,0xf0,0x1a,0x76,0x54,0x54,0xe8,0xab,0x0e,0xb3,0x71,0x3c,0x52,0xe7,0xfb,0x7f,
- 0x95,0xf0,0x1f,0x76,0xec,0x35,0xca,0xb6,0x51,0x8e,0x86,0xb1,0xeb,0x4d,0xe5,0x66,
- 0x29,0xde,0x45,0x31,0xff,0x39,0xab,0x6c,0x87,0x11,0xdb,0xe0,0x19,0x63,0xd9,0xfb,
- 0x5a,0xf5,0x49,0x69,0xff,0x85,0xfc,0x47,0x2f,0x1e,0x6f,0x51,0x65,0x04,0xf2,0x53,
- 0x6d,0x29,0xe5,0x0d,0x78,0x3e,0x63,0x1c,0xab,0x4f,0xd6,0x35,0x49,0xf1,0xb1,0x4b,
- 0xf9,0xcf,0xd3,0xf0,0x06,0xb4,0x4f,0xe0,0xb6,0xe2,0xb7,0xf0,0x89,0xfd,0x7c,0xbe,
- 0xf1,0xbf,0x23,0x4b,0x67,0xe6,0x3f,0x1a,0x03,0xe6,0x59,0xf8,0x31,0x9d,0x05,0xff,
- 0xf9,0x15,0x1b,0x36,0x08,0xe8,0x4f,0xb4,0x94,0x19,0x9d,0x89,0xff,0xfc,0x17,0xfc,
- 0x30,0xdd,0x9a,0xd1,0x72,0xfc,0xbe,0xca,0x77,0xcc,0xb6,0x9d,0x33,0xf1,0x1f,0xe3,
- 0x25,0xad,0x35,0xbd,0x72,0x9c,0x1f,0xdc,0xb4,0x9a,0x5a,0x6e,0x78,0x06,0xfe,0xb3,
- 0xeb,0xd9,0x36,0x63,0x65,0x9d,0x8e,0xf5,0xb3,0x00,0x2b,0xb5,0xa6,0xe1,0x19,0xf8,
- 0x8f,0x7d,0xd6,0xe8,0xd0,0xe6,0xb2,0x92,0x03,0xd0,0xa1,0xad,0x1e,0x96,0xfd,0xbf,
- 0xca,0xf0,0x9f,0x33,0x6c,0x7e,0x99,0x0d,0xd3,0xcd,0x67,0x94,0x5f,0xb3,0xd4,0x8d,
- 0xd3,0x33,0xdd,0x7f,0x36,0xce,0xb5,0x75,0xb0,0x8c,0x90,0xbc,0xa3,0x56,0x46,0x77,
- 0x8c,0x54,0xe5,0x3f,0xf8,0x45,0x76,0x9b,0xad,0x6e,0xa2,0xd8,0x6b,0x74,0x6d,0x2a,
- 0x10,0xff,0xa7,0x84,0xdd,0xa5,0xa7,0xe0,0x05,0xbb,0x25,0xa3,0x65,0x9a,0x0e,0xc1,
- 0x1e,0xf8,0xb6,0xa5,0x0d,0xca,0xf1,0xb1,0x03,0xfc,0x47,0x11,0xf1,0x97,0xcc,0x1f,
- 0xd1,0x85,0x66,0xdb,0x9b,0xca,0x19,0xfb,0x47,0xc6,0x97,0x98,0xa1,0xec,0x9d,0xaa,
- 0xe7,0x5f,0xef,0xc0,0xb9,0xc2,0x73,0xe9,0x28,0x03,0xbf,0xd2,0x3a,0x32,0x8b,0x77,
- 0x4a,0xfc,0xa7,0x5c,0xfc,0x1f,0xac,0x6f,0xdc,0xc2,0x1c,0xe1,0xdf,0x29,0x3d,0xff,
- 0x2a,0xe1,0x3f,0x73,0xdc,0xc0,0x0b,0xc2,0x11,0xde,0x4c,0xc1,0x9a,0x82,0x14,0x3f,
- 0xb9,0x84,0xff,0xc8,0xfe,0x5f,0xbf,0x44,0xd0,0xca,0x40,0xdd,0x4c,0xfc,0x47,0x44,
- 0x2c,0xf9,0xa9,0xcd,0xf4,0xcf,0x2a,0x03,0xeb,0xbb,0xe3,0xad,0x84,0xff,0x3c,0xc2,
- 0xc0,0x0b,0xc2,0x1e,0x72,0x84,0xf5,0x27,0xd4,0xdf,0xab,0xb4,0x79,0xf5,0xcb,0xd8,
- 0x7f,0x22,0x6f,0xc1,0x6f,0xec,0x3f,0xca,0x37,0x0e,0xf2,0x92,0x76,0x16,0x88,0xec,
- 0x1a,0xdf,0xff,0xab,0x0c,0xff,0x39,0xc9,0x5e,0xdc,0x8e,0xd8,0xac,0x84,0x62,0x57,
- 0x54,0xca,0x8f,0xe6,0x80,0x6e,0x76,0xfe,0x75,0xfd,0x71,0x2c,0xb9,0x14,0xf6,0x31,
- 0x46,0x74,0x32,0x52,0xb0,0x03,0xfc,0xa7,0x84,0xb6,0x3d,0xc4,0x88,0x8d,0x85,0x6a,
- 0x13,0x01,0x20,0x08,0xf8,0xbf,0x97,0xd4,0x3f,0x0c,0xdf,0x61,0x6a,0x6a,0x5a,0x19,
- 0x34,0xf8,0x1f,0xde,0x5f,0x99,0xff,0xf0,0x40,0x1c,0x27,0xc1,0xb6,0x21,0x5f,0xaf,
- 0x31,0xfb,0xcf,0x31,0x43,0xaf,0x5f,0x52,0x3e,0x3f,0x9a,0x7c,0x7f,0x20,0x8f,0x6a,
- 0x73,0xf7,0xc8,0x3d,0xf0,0xda,0x81,0x8e,0x63,0xf8,0xe9,0x25,0xff,0xaf,0x32,0xfc,
- 0xe7,0x3d,0x1c,0x36,0x2f,0xf7,0x34,0xe6,0x57,0xed,0x42,0x0d,0x76,0x8b,0x71,0x05,
- 0x48,0xfe,0x5f,0xc8,0x7f,0x92,0xa5,0xb7,0x3b,0xde,0x86,0x4e,0x35,0x3a,0xdd,0x7a,
- 0x06,0x15,0xdd,0xf5,0x7b,0xa3,0xff,0x36,0x02,0x9e,0xff,0x97,0x5d,0x86,0xff,0x9c,
- 0x04,0x76,0xbe,0x8c,0xf3,0x6b,0x0a,0x86,0xd9,0x42,0x9c,0x53,0x8c,0x99,0xec,0x3f,
- 0x2c,0x50,0xff,0x84,0xf2,0x9f,0x74,0x0c,0x57,0x40,0x96,0xca,0x79,0x06,0xfb,0x0f,
- 0xbb,0x86,0xd7,0x66,0x60,0x37,0x8e,0xd9,0x79,0x68,0x83,0x3a,0xa5,0x9a,0xfd,0x47,
- 0xa4,0x2d,0x80,0xd5,0xb9,0xc8,0x31,0x7a,0x80,0x2d,0x34,0xb9,0x08,0x54,0xb3,0xff,
- 0x44,0xce,0xc2,0xc7,0xa4,0x13,0xd6,0x98,0x91,0xd3,0xf0,0x31,0xed,0x84,0xc7,0xa6,
- 0x67,0xef,0xff,0xf5,0xaf,0x17,0x69,0xff,0xf9,0xde,0x45,0xdd,0x7f,0xf6,0x0c,0x5f,
- 0x55,0xce,0xbf,0x6a,0xcb,0x9d,0x27,0xce,0xfa,0xfe,0x33,0x0b,0xbd,0xbe,0x66,0xa2,
- 0x7b,0x36,0xfe,0x5f,0x0e,0xf8,0x72,0x15,0xfb,0x4f,0x45,0x50,0x64,0xff,0xa1,0x33,
- 0xdf,0x7f,0x76,0xc7,0x43,0xd5,0xfb,0xcf,0xa7,0x3e,0xcd,0xfd,0xe7,0x93,0x95,0xec,
- 0x3f,0xa5,0x66,0x1f,0x0e,0x0e,0x54,0x38,0xff,0x2a,0x8a,0x0f,0x30,0xf5,0xd4,0x69,
- 0xfe,0xbe,0xff,0x3f,0xed,0x3f,0xbe,0xff,0xd7,0x17,0x68,0xff,0xa1,0x9f,0xb7,0xfd,
- 0xe7,0x2b,0x17,0x7d,0xff,0xf9,0x1a,0x0e,0xc8,0xe7,0x66,0xff,0xa9,0x90,0x18,0xb7,
- 0xd8,0xff,0xeb,0x22,0xec,0x3f,0xb3,0xca,0xaf,0x5a,0xc9,0xff,0x6b,0x66,0xff,0xf7,
- 0xb2,0xf9,0x61,0x83,0xe0,0x91,0x80,0xfd,0x47,0x2d,0x63,0xff,0x29,0xed,0xcf,0x40,
- 0xfc,0x9f,0x32,0xcd,0x26,0xc1,0x44,0x78,0x92,0xfd,0x67,0x76,0xfe,0x5f,0x3e,0xff,
- 0x81,0x8b,0xb4,0xff,0x54,0xf1,0xff,0x2a,0x1b,0xff,0x30,0x51,0x45,0xff,0xf8,0xf6,
- 0x1f,0xef,0xfe,0x73,0x59,0xff,0xaf,0x2a,0xf1,0x7f,0xda,0xca,0xf0,0x1f,0x19,0xf0,
- 0x8c,0x21,0xcd,0xb3,0xb3,0xff,0x2c,0x2c,0xe7,0xff,0x95,0xa8,0xba,0x7e,0x39,0xf6,
- 0x1f,0xc9,0xff,0xeb,0x12,0x49,0xff,0x7c,0xe8,0x37,0x7b,0x31,0xb7,0x08,0x31,0x50,
- 0xc6,0xfe,0x53,0xf5,0x7d,0x99,0xfd,0xc7,0xcf,0x3f,0x68,0xd1,0x6a,0xfa,0xc7,0x75,
- 0xcd,0xa8,0xe0,0xff,0x55,0x16,0x4c,0x3e,0x26,0xc7,0xff,0x91,0xf9,0x0f,0x09,0x1c,
- 0x9c,0x3d,0x25,0xfd,0xe1,0x89,0xf2,0xf6,0x9f,0xf7,0x45,0x76,0xf8,0x59,0xfb,0x7f,
- 0x7d,0x54,0x1a,0xd8,0xa7,0xaa,0xff,0x57,0x00,0xd4,0x4d,0xf0,0x08,0x36,0x5f,0x2d,
- 0xe7,0xff,0xb5,0xb9,0xe2,0x78,0x23,0x9b,0xdf,0xaa,0x4f,0xb5,0x96,0xf8,0x7f,0xb9,
- 0xf6,0x9f,0x9b,0xa5,0xf3,0x3e,0x04,0x06,0x82,0xc3,0xe5,0xfc,0xbf,0xf8,0xdb,0xd1,
- 0x40,0x3e,0xb8,0x35,0xd2,0x89,0x86,0xc4,0x7f,0xbe,0x29,0x46,0x4b,0xd9,0xb0,0x87,
- 0xc8,0x7f,0x0a,0x45,0xf7,0x7f,0x0a,0x10,0xa4,0x3d,0xc7,0x05,0xd8,0x2e,0x2e,0x42,
- 0xeb,0x8f,0x40,0x6b,0x90,0xff,0x9c,0x64,0xf1,0x0f,0x69,0xa5,0xf5,0x3d,0x3f,0x62,
- 0x18,0xc2,0xbe,0xea,0x8e,0x1f,0x37,0xfe,0x8f,0x14,0x2d,0xb9,0x49,0x32,0x04,0x8d,
- 0x10,0x66,0x51,0x49,0x9f,0xf5,0xf4,0x89,0x4a,0xc5,0xf8,0x99,0x5b,0x6e,0x9a,0xbc,
- 0x01,0x07,0x29,0xb7,0xd8,0x94,0x8f,0xff,0x6c,0x14,0x0f,0x83,0x4f,0xd2,0x6e,0xff,
- 0xf8,0xfe,0x5f,0x5e,0xbc,0xcd,0x66,0x7f,0xe0,0xe9,0x5e,0xa2,0xd8,0x83,0xd0,0x31,
- 0x89,0xfc,0x4a,0x8a,0xff,0x13,0xf7,0xf8,0xf0,0xbb,0x65,0x0c,0x41,0xd8,0x3f,0x93,
- 0x41,0xff,0xaf,0x32,0x7c,0xf8,0x75,0x70,0x33,0xbc,0x93,0x11,0xe1,0x41,0x29,0xc5,
- 0xff,0x91,0xf2,0xc3,0x1a,0x5e,0xfc,0x67,0xc7,0x10,0xf4,0x0b,0xed,0xe1,0x42,0x4b,
- 0xf0,0xfc,0xeb,0x5e,0xe0,0xfc,0x67,0xca,0xa7,0x3d,0x37,0x63,0xb7,0x7c,0x04,0x4e,
- 0xc6,0xb4,0x83,0x34,0x55,0x74,0xfe,0x15,0xaf,0x36,0x1f,0xcd,0x8f,0x74,0x71,0x9e,
- 0xe8,0xc7,0x3f,0x8c,0x56,0xa9,0xff,0x1e,0x1c,0x1c,0xe6,0xfd,0xef,0xc7,0x77,0x3a,
- 0x50,0xac,0x4f,0x56,0x6d,0xf1,0xfd,0x4f,0x0f,0xf1,0xf3,0xf4,0x0a,0xf1,0x9f,0xcb,
- 0xf2,0x9f,0x87,0xc5,0x8b,0x4b,0xf1,0x9f,0x83,0xf7,0x0f,0x8b,0xe3,0xb9,0x8d,0x08,
- 0x0b,0x9b,0xcf,0x7f,0x0a,0xea,0xd3,0x7a,0x65,0xfe,0x83,0x03,0xf3,0xb9,0x2a,0xf1,
- 0x0f,0x4b,0x80,0x56,0xca,0x7f,0xfc,0xf5,0xee,0x1d,0x9b,0x81,0x86,0x19,0xf8,0x4f,
- 0x7c,0x91,0xeb,0xed,0xfe,0x0e,0x07,0x22,0xfe,0x1e,0x15,0x86,0x20,0xbb,0x6a,0x7e,
- 0x58,0x0e,0x6a,0xa5,0xfa,0xf8,0x84,0xe1,0x62,0xff,0x2f,0x08,0xf0,0x1f,0x7c,0xbe,
- 0xb8,0xff,0xb3,0xd9,0x29,0xc9,0x16,0xf9,0x7f,0x0d,0x82,0xcb,0x7f,0x9a,0xc5,0x6b,
- 0x36,0x48,0xef,0x5b,0xd0,0x4e,0x97,0xc4,0x7f,0xae,0xc6,0x67,0xce,0xec,0x72,0x3c,
- 0xe2,0xcb,0xda,0x7f,0x44,0x36,0xd8,0x35,0xfe,0xb5,0xf0,0xc8,0xaf,0xe1,0xa7,0xc5,
- 0xe7,0x5f,0xd5,0xf3,0xc3,0x6a,0x63,0xc5,0xfc,0xe7,0x5e,0x28,0xba,0xff,0xfc,0x27,
- 0x7a,0x93,0xec,0xff,0xd5,0x56,0x14,0xff,0x67,0x77,0xf9,0xfc,0xb0,0xa2,0x3f,0x4f,
- 0x8c,0x09,0xff,0xaf,0xb4,0x14,0xff,0xb9,0x3c,0xff,0xf1,0xfc,0xd7,0x04,0x11,0x92,
- 0xe2,0x1f,0xc2,0x2e,0xea,0x57,0x53,0x8a,0x68,0x9e,0xe2,0xda,0x7f,0xfc,0xf8,0x87,
- 0xd2,0x78,0x33,0x9c,0xc4,0x7c,0xd2,0xc0,0x3b,0x50,0xec,0xff,0x25,0xe5,0x87,0xfd,
- 0xc8,0xf6,0x69,0x0f,0xbd,0x4e,0xf8,0x7f,0xfd,0x5d,0x31,0xff,0x91,0xf6,0xe3,0x05,
- 0x0e,0xe4,0xf8,0xab,0xa7,0x94,0x11,0xa1,0xba,0x0f,0x7a,0xe3,0x81,0xf8,0x41,0xda,
- 0xa7,0x75,0x31,0x7f,0x95,0x23,0xfa,0x8b,0xe4,0x2f,0x84,0x61,0x64,0xbb,0xe3,0xff,
- 0xe5,0x3e,0x1e,0xb4,0x31,0x8f,0xff,0x88,0xfc,0xb0,0x73,0x25,0xfe,0xf3,0x1b,0x78,
- 0x55,0x80,0x83,0xde,0xfd,0xe7,0x36,0x5f,0xff,0xc8,0xf9,0x40,0x15,0x67,0x59,0x77,
- 0xf9,0xcf,0x76,0xf7,0x7d,0xcd,0x47,0x7f,0xdc,0xef,0xac,0x56,0x6f,0xc1,0xfb,0xa3,
- 0x08,0xce,0xb1,0x40,0xbe,0x3b,0x44,0xc6,0x34,0xb8,0x30,0xca,0x7f,0x0a,0xe4,0x87,
- 0xf5,0xb4,0x8d,0xc8,0xef,0x76,0x33,0x8b,0xff,0x9c,0x17,0x86,0x1d,0xeb,0x07,0xce,
- 0xfd,0x67,0xcf,0xfe,0x93,0x87,0x27,0x75,0xf7,0x7d,0xbd,0x8b,0x40,0xa6,0xe3,0xf6,
- 0x7e,0xa8,0xd4,0xff,0x4b,0x8a,0x7f,0x38,0xc5,0x77,0xf7,0x07,0x27,0x7c,0x45,0x34,
- 0xc5,0x23,0xfa,0x06,0xf8,0x8f,0xa6,0x3e,0x43,0xbd,0xf7,0xfd,0x5e,0xa9,0x61,0x87,
- 0x3e,0x50,0x68,0x0c,0xc4,0x7f,0x26,0x5e,0x3c,0xde,0xe3,0x3e,0x11,0x72,0x0d,0x23,
- 0xf1,0xb3,0xee,0xa3,0xdc,0xfa,0xc4,0x5f,0xef,0x4e,0xf3,0xb4,0x68,0x8d,0xa7,0x95,
- 0xaf,0x53,0x56,0x12,0x3d,0x1d,0xb9,0x80,0x0b,0xfd,0xf5,0x85,0x40,0xfc,0x9f,0xc9,
- 0xb8,0xe7,0xbf,0x33,0xe9,0xde,0xdf,0x10,0x2b,0x5a,0x03,0xae,0x5f,0xda,0x4b,0xb9,
- 0x56,0xe1,0xff,0xe5,0x7e,0x2f,0x1b,0x16,0xc3,0x32,0x85,0xb3,0x9d,0x93,0xc1,0xb4,
- 0x68,0x3c,0x70,0xf1,0x0f,0xc5,0xc2,0x17,0xe0,0x3f,0x9a,0xc3,0x7f,0x9c,0xfc,0xb0,
- 0x3f,0x50,0xbe,0x39,0xfa,0xbc,0xc1,0xdd,0xa0,0x0e,0x68,0x13,0x90,0x2f,0xac,0x4a,
- 0x35,0x49,0xfc,0x07,0x36,0xfb,0xe3,0x81,0xe7,0xcf,0x7d,0x39,0xf2,0x3e,0x7c,0xf4,
- 0xf4,0xad,0x4e,0xa0,0x48,0x45,0xac,0xef,0x1e,0xff,0xc9,0xfa,0xf7,0x9f,0x4f,0x13,
- 0x0e,0x5e,0x8e,0x3c,0xe8,0x84,0xed,0x65,0x1e,0xdf,0xb4,0x4c,0xfc,0x9f,0xa3,0xf6,
- 0x4d,0xdc,0x6c,0x18,0xbc,0x48,0x1f,0x3d,0x1b,0x79,0x8f,0x1e,0x1c,0x2e,0xf2,0xff,
- 0x92,0xed,0x3f,0xfa,0x32,0x04,0x11,0x97,0x08,0xd5,0xb9,0xf6,0x9f,0x80,0xff,0x97,
- 0x63,0xff,0x29,0xbd,0xff,0xcc,0x8e,0x75,0x4e,0x71,0xff,0xa6,0x64,0xc0,0xff,0xcb,
- 0xb1,0xff,0x44,0x26,0xf4,0x53,0xb0,0x4c,0xf6,0xff,0xfa,0x86,0x6b,0xff,0xa9,0x9b,
- 0x48,0x4b,0xf6,0x9f,0xf8,0x33,0xf1,0xff,0x20,0x37,0x4e,0x36,0x4e,0x90,0x53,0xf0,
- 0x37,0xe2,0x36,0xb8,0x18,0x3f,0xec,0xfc,0x45,0x3f,0xc8,0x01,0x6e,0xd5,0xdd,0xe7,
- 0x1f,0xb7,0x5f,0x86,0xa3,0xb0,0x06,0x3b,0x61,0xe1,0xc7,0xb4,0xa2,0x23,0x58,0xf9,
- 0xf3,0x2f,0x37,0x30,0xc5,0x62,0x8f,0x11,0xb9,0x25,0xc5,0xf9,0x2f,0xbe,0xca,0x0e,
- 0x49,0x5d,0xda,0x16,0x48,0x84,0xc1,0x03,0x63,0x82,0x1f,0xff,0xd9,0xe7,0x3f,0x69,
- 0xff,0xbc,0xc6,0x9d,0x2f,0xa7,0x5c,0x50,0x64,0xff,0x19,0x65,0xab,0x7f,0xda,0x3b,
- 0x0f,0x92,0x3d,0xc2,0xf2,0xd7,0x8a,0xab,0x41,0xee,0xf3,0x85,0xfd,0x67,0x71,0xa1,
- 0xb1,0xdd,0xe5,0x3f,0x13,0x11,0xc1,0x88,0xae,0x60,0xf1,0x9f,0x3f,0xc8,0xf3,0x40,
- 0xd0,0xb2,0xfd,0xe7,0x16,0xb9,0x37,0xae,0x28,0x34,0xca,0xf1,0x7f,0xcc,0x0b,0xfa,
- 0xad,0xe5,0xed,0x3f,0xb8,0x49,0x29,0x4a,0x9b,0x2b,0x25,0x3a,0x0c,0xda,0x7f,0x74,
- 0xcf,0x6c,0x5e,0x7e,0x63,0xb5,0x4a,0xf6,0xff,0xaa,0x66,0xff,0x49,0x7b,0x25,0xc7,
- 0x66,0xb2,0xff,0x90,0xcf,0x64,0xff,0xe9,0xae,0x98,0xff,0xa2,0x42,0x3e,0x88,0xd9,
- 0xda,0x7f,0xe2,0xe7,0xc8,0xc5,0xf9,0xbf,0x97,0xe4,0x87,0x2d,0xe1,0x3f,0x81,0xf5,
- 0xba,0x8c,0xfd,0x07,0x66,0xb2,0xff,0x74,0x05,0xec,0x3f,0xbb,0xb5,0xd9,0xf8,0x7f,
- 0x5d,0xac,0xfd,0xc7,0xf7,0xff,0x1a,0x9f,0x4d,0xfc,0x9f,0x8b,0xb6,0xff,0xbc,0x3d,
- 0x4b,0xfb,0xcf,0x82,0x67,0xc9,0x62,0xf3,0xa0,0xde,0x5a,0xe9,0xfc,0xab,0x02,0xa8,
- 0x91,0xfc,0xdf,0x8b,0xe3,0xff,0xcc,0x74,0xff,0x67,0x56,0xf6,0x9f,0x2a,0xe7,0x5f,
- 0x25,0x80,0x3c,0x16,0xc8,0x7f,0xf1,0xf9,0xc4,0xff,0xf1,0xec,0x3f,0x2d,0xcc,0xfe,
- 0x43,0x2f,0xca,0xfe,0x53,0xfb,0xe1,0x43,0x33,0xda,0x7f,0x7c,0xff,0xaf,0xcb,0x9e,
- 0x51,0x2b,0xef,0xbf,0x74,0x71,0xff,0xa7,0x3b,0x60,0xff,0x31,0x8f,0xe6,0x3a,0x8f,
- 0x3b,0xf1,0x7f,0x4a,0xec,0x3f,0x06,0x27,0x42,0x45,0xf6,0x1f,0xdd,0x8f,0xf6,0xe3,
- 0x35,0xfb,0xe4,0x2a,0x6e,0x11,0xd2,0x17,0x1f,0x0b,0xd8,0x7f,0xc6,0xe1,0x49,0xf2,
- 0xa2,0x52,0xc1,0xec,0x73,0x84,0x3d,0x8a,0x81,0x29,0xcf,0xff,0xcb,0xa2,0xaf,0xab,
- 0xc5,0xda,0xe6,0x75,0x4f,0xc3,0xc7,0x9d,0x9f,0x7c,0xfe,0xb3,0x34,0xf1,0x8c,0x97,
- 0xc6,0x42,0x2f,0x56,0x9b,0xa7,0x54,0x87,0xf8,0x95,0x8f,0xff,0x43,0x8a,0x17,0x26,
- 0xef,0x86,0x8c,0x1f,0xff,0x27,0xeb,0xd9,0x7f,0xaa,0xc5,0xfb,0xf5,0xd7,0xeb,0xc9,
- 0xd1,0xcd,0x7a,0x79,0x7b,0x8e,0xb7,0xa2,0x3d,0x12,0xf4,0xff,0xda,0xac,0x8b,0x43,
- 0x99,0xb5,0x22,0xbb,0x41,0x1d,0xaf,0xa6,0xcc,0x10,0xff,0x07,0x3b,0xe1,0x1e,0x2f,
- 0xdb,0x05,0xf6,0x4f,0xcd,0xe6,0x03,0xee,0xc1,0xeb,0xde,0x80,0xff,0x97,0xad,0x6d,
- 0xa6,0xff,0x23,0x3a,0xc1,0xcb,0x76,0xe1,0xdd,0xff,0x79,0x97,0x5d,0x44,0x39,0x8c,
- 0xe3,0xa1,0xc8,0xfe,0x23,0x48,0x8e,0x97,0xed,0xe2,0x63,0x37,0xec,0xcf,0xc7,0xf9,
- 0x0b,0x6d,0xb7,0xbe,0x16,0xe0,0x3f,0x15,0xf2,0xf1,0xe5,0x5f,0xff,0x5d,0xe7,0xe3,
- 0x6b,0xd5,0xc1,0xcd,0x8e,0xa7,0x8d,0x2a,0x2d,0x30,0x86,0x25,0x1e,0xf8,0x4c,0xcf,
- 0x0f,0xf3,0x21,0x7e,0x9e,0xf9,0x10,0xcd,0xa2,0x12,0xa8,0x94,0x0f,0x71,0x41,0xa1,
- 0xf4,0xb1,0x0f,0xa7,0x10,0xfc,0x65,0xf9,0x7c,0x88,0x7a,0x99,0x8e,0xa4,0x0c,0x98,
- 0xe5,0xfb,0x5f,0x2f,0xd3,0xed,0xa3,0x0c,0x98,0xe5,0xf3,0x21,0x46,0x0b,0x95,0xfb,
- 0x3c,0xcc,0x87,0x58,0x1d,0xfc,0x21,0xd7,0xff,0x02,0xe7,0x23,0xd7,0x7e,0x4c,0x1f,
- 0x3a,0x1a,0x52,0x0b,0xf3,0xc3,0xca,0xfd,0xff,0x70,0xea,0xf3,0xed,0x7f,0x7b,0xd6,
- 0xfa,0x90,0x29,0x3d,0xfe,0xb4,0x30,0x3f,0x6c,0x91,0x84,0xfa,0xf0,0xf7,0xbc,0xfe,
- 0xbe,0xae,0xc8,0x16,0xf3,0x88,0x7e,0x13,0xa8,0x59,0x01,0xe2,0xea,0xbe,0xc8,0x56,
- 0x73,0x48,0xbf,0x2f,0xde,0xf0,0x2a,0x03,0x99,0xf9,0xf4,0xb2,0x42,0xbb,0x57,0xbf,
- 0xb7,0x47,0xdd,0x4a,0x86,0xcc,0x3b,0x75,0x70,0x81,0x3a,0xc5,0x41,0xb7,0x9e,0x98,
- 0x22,0xa2,0x24,0x51,0x88,0xb9,0x7c,0x15,0x6c,0x85,0x18,0x76,0xbf,0xd1,0xa4,0xd1,
- 0x61,0x01,0x92,0x74,0x3b,0x69,0x41,0x30,0xdf,0x29,0xb1,0xf0,0x27,0xdb,0xf0,0x9e,
- 0x6f,0x03,0xb1,0x60,0x10,0xe6,0xc1,0x4e,0x5b,0x00,0x4d,0x45,0x40,0x06,0x95,0x79,
- 0x49,0x75,0x94,0x6c,0x24,0x83,0xb0,0x01,0x12,0x52,0xfd,0x7d,0x83,0x57,0xde,0x48,
- 0x6e,0xb3,0xd7,0x75,0xd1,0x31,0x75,0x1b,0x19,0xb2,0xef,0x34,0x12,0x07,0x38,0x98,
- 0x8f,0x80,0x20,0xc8,0x63,0x49,0xa1,0xdd,0x6b,0xcf,0xbe,0x2e,0xd3,0xd0,0x35,0xaa,
- 0x10,0xfc,0x9f,0x2c,0x48,0x9a,0x35,0x40,0x86,0xc1,0xb2,0x93,0xd0,0x07,0xc4,0xa6,
- 0x06,0x02,0x2c,0xb1,0xfd,0xf7,0xdd,0xd7,0x4f,0xef,0x26,0x49,0xbb,0xcf,0x80,0x31,
- 0xda,0x4a,0x34,0x3b,0x6d,0xe8,0x63,0xd4,0x10,0xc0,0xa6,0x16,0xd1,0x80,0x01,0xa9,
- 0xfe,0x2a,0x75,0x6d,0x76,0x20,0xbf,0xbe,0x8d,0xce,0x55,0xd3,0xd9,0xcc,0xe9,0x81,
- 0xb6,0x44,0x9d,0xda,0x35,0x9a,0xc9,0x23,0xa8,0x51,0xcd,0xd1,0x8c,0x11,0xbf,0x45,
- 0x05,0xbf,0x3d,0xf6,0x02,0x32,0x07,0xd6,0x17,0x12,0x19,0x7a,0x39,0xb9,0x13,0x41,
- 0x6c,0x8b,0x3a,0x44,0xd6,0xc1,0x40,0x21,0x91,0x52,0xff,0x94,0x44,0x18,0x58,0x4a,
- 0x3d,0xf3,0x0f,0xd6,0x67,0x1a,0xa0,0x09,0xa8,0xad,0x53,0xa6,0xf9,0x4c,0x02,0x31,
- 0x80,0x6e,0x1b,0xb5,0x97,0x4e,0x28,0xaa,0x86,0xa4,0x4d,0x75,0xe8,0x92,0xfa,0xc7,
- 0x52,0x34,0x60,0x1d,0x9d,0xcc,0x33,0x00,0x2d,0xa8,0x43,0x38,0x30,0x6c,0xcd,0xa8,
- 0x71,0x40,0x97,0xd4,0x3f,0x19,0x75,0x11,0xf9,0x63,0xd8,0x60,0xc6,0x73,0x64,0x13,
- 0x07,0x89,0x9c,0x6a,0xc1,0x61,0xd6,0xed,0x39,0xd5,0x20,0x87,0xe1,0x6b,0xd8,0xff,
- 0xd2,0xfb,0x9a,0x11,0xf6,0x99,0x6e,0xc4,0x16,0x45,0x58,0xb5,0xaf,0xc1,0x6d,0x76,
- 0xe4,0x6e,0x2c,0xb9,0x89,0x1d,0x25,0x21,0xb0,0xe7,0x21,0x90,0xc6,0x4f,0x9a,0xa6,
- 0xec,0xa8,0xd1,0xad,0x69,0xc3,0x34,0x95,0x65,0x40,0xdf,0xcb,0x41,0x1f,0x02,0x70,
- 0x4a,0xa4,0xef,0x85,0x92,0xc2,0x3d,0x55,0x84,0x8d,0x0c,0x07,0x14,0x38,0x50,0xd8,
- 0x61,0x8b,0x5b,0x22,0xf5,0x8f,0x42,0x52,0xf6,0x6a,0xa3,0x99,0x8d,0x2e,0x06,0xd6,
- 0x69,0x74,0x2f,0x49,0x4d,0xf2,0x92,0x83,0x0c,0xa4,0xb0,0x44,0xaa,0xbf,0x2f,0xad,
- 0x5a,0xd9,0x41,0x63,0x03,0xd0,0x61,0x01,0xb4,0x04,0x82,0x49,0x0e,0x46,0x08,0x4c,
- 0x0e,0xa6,0x10,0xd8,0x52,0xff,0xa4,0x79,0xcf,0xf1,0x2e,0x04,0x17,0x18,0xf8,0x46,
- 0x0c,0x50,0x06,0x22,0x1a,0xc8,0xef,0xbb,0x96,0x5a,0xd9,0xa4,0xd1,0xd7,0x0f,0x3b,
- 0x10,0x5c,0x82,0xaf,0x19,0x1b,0xa6,0x9b,0xd8,0xfb,0xf6,0xc7,0x76,0x50,0x83,0xbd,
- 0x6f,0x7f,0xcc,0x8e,0x49,0xdf,0x4b,0x1d,0x24,0x1b,0x60,0x3d,0x8e,0x45,0x0e,0x12,
- 0x76,0x02,0x4b,0x68,0x1f,0x96,0x20,0xd0,0x70,0x98,0xc6,0xec,0x84,0x29,0x8d,0x9f,
- 0x1a,0xb2,0xd5,0x1e,0xb0,0x12,0xe3,0xb4,0x86,0x74,0xd9,0x19,0x2b,0x9e,0x54,0x4b,
- 0x01,0x18,0xde,0x92,0x54,0x68,0xc2,0x4d,0xb3,0x66,0x00,0xb6,0x07,0xa7,0x40,0x97,
- 0x98,0x0b,0xd4,0xc6,0x49,0xd1,0x4f,0x9b,0xb0,0x84,0x03,0xef,0x78,0x01,0xdb,0xd3,
- 0xa7,0xc4,0xb2,0xa3,0x56,0x4b,0x32,0xd9,0x17,0xb9,0xc3,0x3e,0x64,0xdd,0x90,0x6c,
- 0x60,0x60,0x8a,0x83,0x39,0x4e,0x89,0xd4,0x9e,0xa9,0x3e,0xb2,0x35,0x3b,0x64,0xdd,
- 0xa9,0x5f,0xb6,0x5f,0xe5,0x20,0x99,0x60,0xe0,0xb0,0xe9,0x80,0x23,0xd6,0x7d,0xc9,
- 0x84,0xac,0x4f,0xb0,0xbe,0x3d,0x64,0xdd,0x94,0x6c,0xd8,0x1f,0xd9,0x6a,0x1f,0x71,
- 0x40,0x56,0x94,0x34,0xb3,0x9f,0xe6,0x27,0x1b,0x0a,0x31,0xa9,0x3e,0xe5,0x8f,0x1d,
- 0x84,0xfd,0x09,0x06,0xe6,0xb3,0xc7,0xde,0xf1,0x50,0x94,0xff,0x47,0xd0,0x92,0x8d,
- 0x5a,0xcb,0x93,0xeb,0x25,0xfd,0x03,0x6c,0x3c,0xf4,0xb7,0x34,0x69,0xea,0xb0,0xac,
- 0x88,0x86,0x7c,0x80,0x03,0xc3,0x96,0x46,0x1b,0xeb,0xb4,0x41,0x6b,0x5e,0x32,0xbe,
- 0x9d,0x6c,0xe4,0x40,0x95,0x40,0x4b,0x76,0xd0,0xda,0x90,0x54,0xa5,0xfa,0xbd,0x66,
- 0x22,0x45,0x56,0xc3,0x3a,0x1c,0xff,0xea,0x16,0x32,0x04,0xcb,0x21,0x51,0xe0,0xe0,
- 0x4e,0x04,0x24,0xe5,0x00,0xbf,0x3d,0xbd,0x38,0x7e,0xf2,0x5a,0x9b,0x52,0x07,0x5c,
- 0xed,0xe0,0x14,0x24,0x3e,0x60,0xfa,0x87,0x01,0x69,0x3c,0xf4,0xae,0xa4,0xd6,0xb7,
- 0x71,0xfc,0xd4,0xb1,0xd1,0x85,0x1f,0x2e,0xad,0xe9,0x12,0xb0,0x04,0x90,0xeb,0x77,
- 0x5d,0x99,0xe9,0x1a,0x68,0x5a,0x8f,0xec,0x53,0x35,0xb3,0x19,0x63,0x40,0x8b,0x31,
- 0x70,0x07,0x82,0x44,0x24,0x91,0xb1,0x51,0xff,0x68,0x09,0x90,0xfa,0xa7,0x8e,0x64,
- 0x0e,0x0c,0xa4,0x12,0x1a,0x8d,0x90,0x4c,0x61,0xc0,0x48,0x44,0xd5,0x6e,0x06,0x52,
- 0x08,0xd2,0x02,0x68,0xaa,0x29,0xf5,0x0f,0x98,0x66,0x4c,0xa7,0x94,0xe0,0x0e,0x2f,
- 0x0d,0xa8,0x02,0x0d,0xa6,0x02,0x29,0x07,0x00,0x77,0x83,0x03,0xfc,0xf6,0xa4,0x15,
- 0xc5,0xb6,0xf3,0x46,0xbf,0xad,0x28,0x60,0x33,0xed,0xa5,0x31,0x90,0x6d,0x33,0x10,
- 0x00,0x2b,0x41,0x20,0xb5,0xa7,0xd7,0x9c,0x63,0x31,0x25,0x1f,0xc1,0xfe,0xb4,0x1c,
- 0x6d,0x8f,0xe0,0x30,0x65,0xa0,0xc1,0x72,0xf4,0x8f,0x34,0x5f,0xcc,0xf9,0x4c,0xed,
- 0xcc,0x8b,0x3c,0x6a,0x47,0x18,0xb8,0x91,0xa9,0x1d,0x8b,0x0e,0x51,0x06,0xe6,0x18,
- 0x30,0x04,0xf3,0x11,0x48,0x0d,0x22,0x34,0x45,0x98,0xd2,0xb0,0x6d,0x0e,0xba,0x41,
- 0x2f,0x20,0x48,0x2a,0x0c,0x28,0x06,0x61,0x0b,0x81,0x5e,0x90,0xc7,0x83,0x50,0x32,
- 0x26,0x92,0xbb,0x76,0x88,0x9a,0x91,0x41,0x38,0x04,0x4b,0xa0,0x96,0x95,0x1c,0x32,
- 0x17,0x21,0x50,0x4c,0x90,0xeb,0xab,0x6a,0xbb,0xb9,0x3a,0xd3,0x9c,0xdb,0x39,0x42,
- 0x10,0x98,0xcd,0x71,0xfa,0x2a,0x69,0xef,0xba,0x3d,0x83,0x60,0x3f,0x69,0xe9,0x5a,
- 0x9d,0x59,0xa7,0x53,0xb9,0xfe,0x42,0xf5,0xde,0xc9,0xbb,0x52,0x1b,0xc6,0xe8,0x3f,
- 0xaa,0x7f,0x3e,0x79,0xd7,0x96,0x0d,0x4f,0x26,0xfe,0x89,0x95,0x18,0x1b,0x1e,0x15,
- 0x20,0x85,0x40,0x6e,0x3f,0xe5,0x49,0x01,0xf1,0x3f,0x15,0x5b,0x69,0x04,0x39,0x58,
- 0x24,0xda,0x23,0x00,0xff,0x49,0x92,0x1e,0x2b,0x96,0xa4,0x7d,0x04,0xd7,0x2f,0xb1,
- 0x90,0xc5,0x10,0xc4,0x92,0xa3,0xdd,0x2d,0x31,0xbb,0x87,0x81,0x3e,0x04,0x72,0xfd,
- 0x8d,0x99,0xd8,0x00,0x5d,0x8f,0x8b,0x89,0x8a,0xa0,0x67,0x3d,0x49,0x98,0xbd,0x19,
- 0x18,0xa0,0x77,0x40,0xc2,0xec,0xca,0xe8,0x03,0xd1,0x04,0x96,0x48,0xd5,0xb5,0x16,
- 0x45,0x33,0x87,0x75,0x63,0x54,0x6b,0x49,0x6b,0x99,0xe1,0xb8,0xa1,0x6a,0xc4,0x05,
- 0x1b,0xd7,0xb6,0x71,0x20,0x3f,0xbe,0x0e,0x14,0x1b,0xf2,0x99,0x36,0x1c,0x78,0x8a,
- 0x6d,0xe6,0xf5,0x36,0x8a,0x60,0x4c,0x00,0x70,0x4a,0xe4,0xfa,0x51,0xa5,0x19,0x46,
- 0x0b,0x7f,0x96,0x4a,0xae,0x8e,0xac,0x83,0x43,0x85,0xf6,0x54,0x83,0x00,0x37,0x20,
- 0xa8,0x69,0x16,0x40,0x6e,0x4f,0xad,0xba,0xad,0x6b,0x28,0xe7,0xd2,0x80,0xb1,0x79,
- 0x02,0x1c,0xe1,0xc4,0xa0,0x97,0x81,0xfb,0x8c,0x7f,0x90,0xfb,0xbf,0x7e,0x65,0xfa,
- 0xe7,0xb9,0x17,0x76,0x5d,0x5b,0xcb,0xc1,0xf7,0x77,0x5d,0xbb,0xa2,0x7e,0xed,0xca,
- 0xe9,0x1d,0x2f,0x2c,0xfa,0xe7,0xda,0xfa,0xf4,0xca,0x43,0x1c,0xc8,0xed,0x59,0xf6,
- 0xe0,0xed,0x17,0xfe,0x7d,0xcf,0x99,0x77,0xcf,0x71,0xf0,0xe2,0x99,0xf7,0xcf,0x2d,
- 0xfb,0x64,0xcd,0xd1,0x6f,0x5d,0x38,0x71,0xfe,0xdc,0xb2,0x07,0xd6,0x5c,0xe0,0x00,
- 0x3e,0x83,0xdc,0xfa,0x44,0xed,0x55,0xe9,0x15,0xb9,0x1d,0x9b,0x3a,0xcf,0x35,0x7e,
- 0xb7,0xfb,0x42,0xee,0xb7,0x7f,0x7b,0xeb,0x53,0x2b,0x1e,0x7c,0x73,0x45,0xee,0xf1,
- 0xf3,0x9d,0x17,0x56,0x5c,0xfd,0xe6,0x8a,0x33,0x8f,0x9f,0x97,0xeb,0x77,0x3e,0x70,
- 0xfb,0xd1,0x6f,0xbd,0x78,0xe2,0xdd,0x73,0x9d,0x4e,0x33,0xce,0x77,0xf2,0x86,0x9d,
- 0x78,0x1f,0xeb,0xdf,0x7e,0x94,0xb5,0x30,0x50,0x7f,0xe1,0xe5,0xfd,0x47,0x77,0xdc,
- 0x74,0xe2,0xd1,0x8d,0xcb,0xd8,0x1f,0x3e,0x8b,0x7f,0x88,0xe0,0xed,0xe6,0x17,0x47,
- 0xdf,0x3d,0xb7,0x30,0xc9,0xc1,0xa9,0xbf,0x0e,0x34,0xa8,0x75,0x8b,0xf9,0xa4,0x7e,
- 0xb5,0x9e,0x2d,0x28,0x08,0xe0,0x6a,0x5a,0x3b,0x09,0x5b,0xb1,0x64,0x4e,0xbc,0x76,
- 0x9f,0x82,0x20,0x73,0x35,0x25,0x72,0x7f,0x52,0x97,0x1f,0x8e,0x5e,0xe9,0xb0,0x41,
- 0xe4,0x87,0x30,0x64,0xce,0xe7,0xc0,0xe1,0x87,0x52,0xfd,0x62,0x7e,0xe8,0x01,0x5c,
- 0x91,0x19,0x51,0xe4,0xfc,0x30,0xd0,0x20,0xa4,0x6d,0x50,0x13,0xcb,0xd9,0x02,0x30,
- 0xda,0xb6,0x91,0x01,0x8d,0x6c,0x47,0x46,0xc4,0x4a,0x02,0xe3,0x59,0xeb,0xd9,0x46,
- 0xa2,0xc3,0xdd,0x0d,0xf6,0x58,0x4f,0x07,0x59,0x30,0xba,0xdc,0x88,0x1d,0xa0,0xdb,
- 0xc8,0x02,0x1b,0xc1,0xeb,0x74,0x5b,0x96,0x83,0x42,0xf0,0xf9,0x0e,0x3f,0xb4,0x0c,
- 0x48,0xea,0xec,0xf9,0xde,0x7f,0xc4,0x80,0xc1,0x81,0x2f,0x51,0xa4,0x85,0x38,0xad,
- 0x32,0x7c,0x7e,0x21,0x2d,0xb4,0xf4,0x1c,0xbd,0x6a,0x12,0xc1,0x16,0x7d,0x9c,0x5e,
- 0x45,0x6a,0xed,0xb4,0x19,0xd8,0xa3,0x7d,0x89,0xae,0xcc,0xce,0xcb,0xf7,0x8e,0xc1,
- 0x75,0xf4,0xae,0x6c,0xd3,0x44,0xcf,0xd3,0xb1,0x56,0x58,0x95,0x6d,0xca,0x23,0xb8,
- 0x0e,0x7f,0x42,0x30,0x2e,0xe9,0x4f,0xad,0xd0,0x08,0xcd,0x10,0x2f,0xa8,0x39,0x98,
- 0x8b,0x4a,0x2b,0x8e,0xdc,0x87,0xaf,0x36,0x58,0xb2,0xd4,0x07,0xa6,0xff,0x07,0xb8,
- 0x55,0xd5,0x71,0xb5,0xa7,0x5b,0x74,0x36,0x8b,0x70,0xd9,0x37,0x51,0xa5,0xf5,0xb2,
- 0xdd,0x6d,0x86,0xc4,0xf5,0x1e,0x64,0x8b,0x74,0x0b,0xf1,0xcc,0xe7,0xf8,0x7c,0xd3,
- 0xb1,0xbc,0x25,0xf9,0x06,0x53,0x17,0x76,0x3a,0xb6,0x25,0x35,0xc7,0xf4,0x56,0xaa,
- 0x65,0x15,0x56,0x22,0xd7,0x47,0xd2,0xcb,0x95,0x24,0x53,0xf4,0x49,0x48,0x63,0x6f,
- 0xd7,0xb0,0x92,0x7b,0x10,0xec,0x12,0x3f,0x5d,0x62,0x7b,0xf5,0x75,0x62,0x2a,0x16,
- 0x8c,0xc3,0x55,0x06,0xea,0x2c,0x0e,0xa0,0x76,0x0c,0x36,0x31,0xc0,0xae,0x32,0xb1,
- 0x9c,0xf6,0x57,0x19,0xb8,0x02,0xba,0x62,0x32,0x7e,0xc8,0x49,0x91,0x2e,0xf3,0xc3,
- 0x31,0x06,0x72,0x7b,0x97,0x88,0x92,0x9c,0xbf,0x9e,0xb2,0x37,0x2f,0xe1,0x87,0x66,
- 0x11,0x30,0x0b,0x9e,0x7d,0xde,0xc4,0xb7,0x4c,0x71,0x92,0xa6,0x0f,0x3b,0x00,0x5e,
- 0xa1,0x0e,0xd8,0x2b,0x4a,0xa2,0x92,0xfe,0x37,0x7b,0x4d,0xc1,0xdf,0xd8,0xd1,0x25,
- 0x02,0x40,0xfe,0x36,0xc2,0x7a,0xc0,0x60,0x44,0x4c,0xfc,0x44,0x91,0xbf,0x79,0xed,
- 0x21,0x12,0x3f,0xf4,0x40,0xaa,0xa8,0xc4,0x7f,0x7e,0x86,0xa4,0xc5,0x43,0x18,0x7b,
- 0x14,0x20,0xc6,0x5e,0xdc,0x01,0xa2,0xa4,0xa8,0x3d,0xf8,0x21,0xf1,0x8b,0x02,0x38,
- 0x20,0x86,0xdb,0x00,0x07,0xb8,0x3f,0xa5,0xbd,0xf6,0xf4,0xe3,0xb8,0xed,0xb2,0xe3,
- 0x96,0xca,0x06,0xf0,0x56,0x5b,0xb7,0x68,0x92,0xb0,0x92,0x20,0xf0,0x87,0x4f,0x3f,
- 0xb0,0x91,0xef,0xf1,0x5b,0x6f,0xaf,0x14,0x04,0x20,0xb5,0x67,0x03,0xb2,0x41,0xe4,
- 0x87,0x83,0xda,0x06,0x25,0x66,0xff,0xcc,0xe5,0x87,0x03,0x2e,0x10,0xfc,0xd0,0x5f,
- 0xdf,0x09,0xe3,0x6f,0x0b,0xac,0xe5,0x7a,0x6c,0xbf,0x00,0xc9,0xd8,0xfe,0x9a,0xbf,
- 0x22,0x08,0x32,0xb1,0x43,0x74,0x2b,0x59,0x60,0x2e,0x1f,0xbc,0x44,0x7a,0x5f,0xd2,
- 0x87,0xb4,0xf0,0x49,0xeb,0xea,0x24,0xd9,0xaf,0x08,0x50,0xbb,0x1f,0x5c,0xe0,0x94,
- 0x48,0xfa,0x27,0xd3,0xdb,0xa7,0xb6,0x73,0xda,0x09,0x12,0xff,0xbc,0xc1,0x66,0x8c,
- 0x31,0xf1,0xf3,0x84,0xa0,0x8e,0xfa,0x5e,0x69,0xfc,0x34,0x11,0x8b,0x69,0x1b,0xc6,
- 0x87,0x0d,0x7b,0x85,0xd0,0x3f,0x9b,0x78,0x89,0xab,0x88,0xfa,0xd5,0x82,0xd7,0x43,
- 0x26,0x0e,0xe0,0x8d,0x76,0xd2,0xaa,0x19,0xd7,0xbf,0x8b,0xe0,0x52,0xab,0x26,0x49,
- 0xb6,0xab,0xbc,0x04,0x81,0xf8,0x29,0x29,0xeb,0x9f,0x5e,0x8b,0xde,0xdf,0x32,0x17,
- 0x77,0x68,0x90,0x1f,0x5d,0x4a,0x2e,0x47,0x10,0x3b,0xb6,0xe8,0x7e,0x04,0xcb,0x11,
- 0x50,0x07,0x48,0xe3,0x99,0xac,0x45,0x36,0x88,0xfd,0x8f,0xed,0xc1,0xd1,0x72,0x09,
- 0x7e,0x08,0x9c,0x1d,0x9b,0x18,0x2d,0xec,0x27,0x3b,0x04,0x51,0xec,0x97,0xf4,0x0f,
- 0x8e,0x37,0x64,0x83,0x7c,0xfc,0x7c,0x83,0xb1,0xc1,0x7c,0x5f,0x80,0x1f,0x3a,0x40,
- 0xaa,0x8f,0xf3,0xcb,0xec,0x8a,0xeb,0xbd,0x38,0x5d,0x68,0x26,0xab,0x1b,0xbd,0x1a,
- 0x72,0x29,0x13,0x41,0x0f,0x02,0x2a,0x00,0x01,0xa9,0x7f,0x70,0xbe,0x14,0xe2,0x1d,
- 0xb8,0xf3,0xa8,0xc3,0x09,0x15,0x9f,0x20,0x51,0xd2,0x0d,0x99,0x42,0x3c,0xa5,0x22,
- 0x30,0x1c,0x60,0xfa,0xcf,0x47,0x65,0xa1,0xeb,0x9c,0x1f,0xda,0x66,0x2b,0xaa,0x1d,
- 0x82,0xfc,0xd0,0x74,0x89,0xa2,0x0b,0xe4,0xf1,0x93,0x6e,0x6d,0x62,0xfc,0x50,0x1b,
- 0x57,0x5a,0x91,0x93,0x75,0xb4,0x70,0x7e,0x38,0x06,0x86,0x51,0x37,0x86,0x25,0x79,
- 0xc6,0x0f,0xc7,0xa4,0xf6,0x10,0x57,0xff,0x24,0x85,0xfe,0xe9,0x73,0xf5,0x0f,0x03,
- 0x8b,0x70,0x9c,0x2b,0x4c,0xff,0x48,0xfd,0x63,0x72,0x25,0x53,0x63,0x8e,0xe5,0x50,
- 0x7b,0x3f,0x21,0xd4,0xce,0x16,0x6d,0x9c,0xa0,0x22,0xca,0x39,0x1a,0xa9,0x4b,0x9e,
- 0x5f,0x16,0x7e,0x26,0x54,0xb5,0xd8,0x26,0x1b,0x81,0x86,0x5b,0xeb,0x63,0x70,0xaf,
- 0x86,0x5f,0x70,0x38,0x77,0x6c,0xd1,0xd2,0xda,0xb9,0x0a,0x7e,0x41,0x7f,0xbe,0x67,
- 0x80,0xc0,0x57,0xac,0xb9,0x5b,0x22,0x2c,0x8c,0x54,0xca,0x8c,0xea,0x11,0x0a,0xaf,
- 0x22,0x31,0xe3,0x60,0x9f,0x21,0x4a,0x6c,0xa9,0x3d,0xc8,0xdf,0x96,0x98,0x0d,0x99,
- 0x48,0x26,0xb7,0x13,0xda,0xcd,0x06,0x33,0x32,0x00,0x3f,0xa3,0xed,0xfd,0xd1,0x4c,
- 0x24,0x0e,0xbf,0xc0,0x12,0x06,0xf4,0xbd,0x52,0x7b,0xba,0x29,0xee,0x46,0x53,0x7d,
- 0x49,0x40,0xb5,0x33,0x99,0x4c,0xf5,0x45,0x63,0x7f,0xef,0x82,0xc7,0x5d,0x20,0xeb,
- 0x1f,0x13,0xf9,0x61,0xb2,0xe0,0x1e,0x9e,0x54,0xb2,0x23,0xfa,0xfd,0xd3,0x8f,0xfc,
- 0x50,0x43,0x7e,0x68,0xdb,0x9b,0xee,0x66,0x44,0xd1,0x88,0x8d,0x53,0x87,0x16,0x7a,
- 0x40,0x1e,0x3f,0x66,0xaf,0x1a,0x4b,0xd4,0xf4,0x22,0x5d,0xee,0xc9,0xc4,0xe2,0xb4,
- 0x97,0xc4,0x4c,0x13,0xd5,0x0e,0x15,0xfa,0x87,0x95,0x00,0x31,0xa5,0xf1,0xa3,0x31,
- 0x96,0xea,0x6a,0x3e,0x7d,0x58,0xc5,0x61,0x60,0xe0,0x30,0x18,0x16,0x1b,0x07,0x3e,
- 0x1e,0xb2,0x20,0x09,0xa3,0x85,0x90,0x37,0x83,0xfc,0x90,0x83,0x1e,0xaf,0x44,0x1e,
- 0x3f,0xb7,0x2d,0x5c,0x67,0x8e,0x4e,0x6f,0x5c,0x32,0x7e,0x5b,0xcd,0x3a,0xf3,0xd0,
- 0xb4,0xb1,0xa4,0xe1,0x36,0xb2,0xce,0x1c,0x98,0xbe,0x01,0x41,0x84,0x95,0x20,0x90,
- 0xda,0x43,0xfa,0xe9,0xb6,0xae,0x05,0x39,0x5c,0xf4,0x7f,0xf2,0xb0,0x43,0x03,0x3c,
- 0x3e,0xc0,0x01,0x2c,0x37,0x24,0xfd,0x83,0xeb,0xb5,0xcf,0x0f,0x57,0xca,0xfc,0x70,
- 0x57,0x05,0x7e,0xd8,0xe9,0xf3,0xc3,0x35,0x32,0x3f,0x3c,0xf3,0x3b,0xe2,0x87,0x57,
- 0x32,0x5a,0xf8,0xcb,0xdc,0x85,0xf3,0x9d,0xe7,0x38,0x51,0x44,0x7e,0xf8,0x44,0x6d,
- 0x90,0x1f,0x9e,0x90,0xeb,0xf3,0xff,0xfd,0xc3,0x13,0x58,0xff,0x13,0x4e,0x14,0x91,
- 0x1f,0x3e,0x50,0xc4,0x0f,0x03,0xed,0x59,0xe6,0xf2,0xc3,0x85,0x97,0xdf,0x7e,0x74,
- 0x47,0x3b,0x23,0x96,0xf7,0x17,0xd5,0x3f,0xfe,0xe9,0x5b,0x9f,0x02,0x83,0xe0,0xfc,
- 0xc6,0x7f,0xbb,0xa3,0x9f,0xfe,0x29,0xa1,0x84,0x12,0x4a,0x28,0xa1,0x84,0x12,0x4a,
- 0x28,0xa1,0x84,0x12,0xca,0xef,0xbb,0xf0,0xbd,0x03,0x0d,0xf7,0x0e,0xa1,0x84,0x12,
- 0x4a,0x28,0xa1,0x84,0x12,0x4a,0x28,0xa1,0x84,0x12,0x4a,0x75,0xe1,0x7b,0x87,0x9a,
- 0x70,0xef,0x10,0x4a,0x28,0xa1,0x84,0x12,0x4a,0x28,0xa1,0x84,0x12,0x4a,0x28,0xa1,
- 0x54,0x17,0xbe,0x77,0xd0,0xf8,0xde,0xe1,0xff,0xba,0x29,0xa1,0x84,0x12,0x4a,0x28,
- 0xa1,0x84,0x12,0x4a,0x28,0xa1,0x84,0x12,0xca,0x17,0x28,0x29,0x16,0x72,0x19,0x5e,
- 0xf9,0x20,0x05,0x36,0xf3,0x62,0x8a,0xa4,0xc0,0xbc,0xe8,0xf3,0x04,0xe7,0x6f,0xd5,
- 0x14,0xe4,0x89,0xff,0xcc,0xe3,0x77,0x15,0xd7,0xfb,0x5f,0x2b,0x92,0xad,0x46,0xf1,
- 0x33,0x01,0x00,
diff --git a/board/dave/PPChameleonEVB/nand.c b/board/dave/PPChameleonEVB/nand.c
deleted file mode 100644
index f5c3dd9edc..0000000000
--- a/board/dave/PPChameleonEVB/nand.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * (C) Copyright 2006 DENX Software Engineering
- *
- * 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 <common.h>
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-
-#include <nand.h>
-
-/*
- * hardware specific access to control-lines
- * function borrowed from Linux 2.6 (drivers/mtd/nand/ppchameleonevb.c)
- */
-static void ppchameleonevb_hwcontrol(struct mtd_info *mtdinfo, int cmd)
-{
- struct nand_chip *this = mtdinfo->priv;
- ulong base = (ulong) this->IO_ADDR_W;
-
- switch(cmd) {
- case NAND_CTL_SETCLE:
- MACRO_NAND_CTL_SETCLE((unsigned long)base);
- break;
- case NAND_CTL_CLRCLE:
- MACRO_NAND_CTL_CLRCLE((unsigned long)base);
- break;
- case NAND_CTL_SETALE:
- MACRO_NAND_CTL_SETALE((unsigned long)base);
- break;
- case NAND_CTL_CLRALE:
- MACRO_NAND_CTL_CLRALE((unsigned long)base);
- break;
- case NAND_CTL_SETNCE:
- MACRO_NAND_ENABLE_CE((unsigned long)base);
- break;
- case NAND_CTL_CLRNCE:
- MACRO_NAND_DISABLE_CE((unsigned long)base);
- break;
- }
-}
-
-
-/*
- * read device ready pin
- * function +/- borrowed from Linux 2.6 (drivers/mtd/nand/ppchameleonevb.c)
- */
-static int ppchameleonevb_device_ready(struct mtd_info *mtdinfo)
-{
- struct nand_chip *this = mtdinfo->priv;
- ulong rb_gpio_pin;
-
- /* use the base addr to find out which chip are we dealing with */
- switch((ulong) this->IO_ADDR_W) {
- case CFG_NAND0_BASE:
- rb_gpio_pin = CFG_NAND0_RDY;
- break;
- case CFG_NAND1_BASE:
- rb_gpio_pin = CFG_NAND1_RDY;
- break;
- default: /* this should never happen */
- return 0;
- break;
- }
-
- if (in32(GPIO0_IR) & rb_gpio_pin)
- return 1;
- return 0;
-}
-
-
-/*
- * Board-specific NAND initialization. The following members of the
- * argument are board-specific (per include/linux/mtd/nand.h):
- * - IO_ADDR_R?: address to read the 8 I/O lines of the flash device
- * - IO_ADDR_W?: address to write the 8 I/O lines of the flash device
- * - hwcontrol: hardwarespecific function for accesing control-lines
- * - dev_ready: hardwarespecific function for accesing device ready/busy line
- * - enable_hwecc?: function to enable (reset) hardware ecc generator. Must
- * only be provided if a hardware ECC is available
- * - eccmode: mode of ecc, see defines
- * - chip_delay: chip dependent delay for transfering data from array to
- * read regs (tR)
- * - options: various chip options. They can partly be set to inform
- * nand_scan about special functionality. See the defines for further
- * explanation
- * Members with a "?" were not set in the merged testing-NAND branch,
- * so they are not set here either.
- */
-int board_nand_init(struct nand_chip *nand)
-{
-
- nand->hwcontrol = ppchameleonevb_hwcontrol;
- nand->dev_ready = ppchameleonevb_device_ready;
- nand->eccmode = NAND_ECC_SOFT;
- nand->chip_delay = NAND_BIG_DELAY_US;
- nand->options = NAND_SAMSUNG_LP_OPTIONS;
- return 0;
-}
-#endif /* (CONFIG_COMMANDS & CFG_CMD_NAND) */
diff --git a/board/dave/PPChameleonEVB/u-boot.lds b/board/dave/PPChameleonEVB/u-boot.lds
deleted file mode 100644
index 481d291874..0000000000
--- a/board/dave/PPChameleonEVB/u-boot.lds
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/4xx_enet.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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)
- }
-
- ppcenv_assert = ASSERT(. < 0xFFFF8000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified.");
- . = 0xFFFF8000;
- .ppcenv :
- {
- common/environment.o(.ppcenv);
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/dave/common/flash.c b/board/dave/common/flash.c
deleted file mode 100644
index bf0f2bf282..0000000000
--- a/board/dave/common/flash.c
+++ /dev/null
@@ -1,706 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
- short n;
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324B)) {
- /* set sector offsets for bottom boot block type */
- for (i=0; i<8; ++i) { /* 8 x 8k boot sectors */
- info->start[i] = base;
- base += 8 << 10;
- }
- while (i < info->sector_count) { /* 64k regular sectors */
- info->start[i] = base;
- base += 64 << 10;
- ++i;
- }
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324T)) {
- /* set sector offsets for top boot block type */
- base += info->size;
- i = info->sector_count;
- for (n=0; n<8; ++n) { /* 8 x 8k boot sectors */
- base -= 8 << 10;
- --i;
- info->start[i] = base;
- }
- while (i > 0) { /* 64k regular sectors */
- base -= 64 << 10;
- --i;
- info->start[i] = base;
- }
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("ST "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 M, top sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 M, bottom sector)\n");
- break;
- case FLASH_AMDL322T: printf ("AM29DL322T (32 M, top sector)\n");
- break;
- case FLASH_AMDL322B: printf ("AM29DL322B (32 M, bottom sector)\n");
- break;
- case FLASH_AMDL323T: printf ("AM29DL323T (32 M, top sector)\n");
- break;
- case FLASH_AMDL323B: printf ("AM29DL323B (32 M, bottom sector)\n");
- break;
- case FLASH_AM640U: printf ("AM29LV640D (64 M, uniform sector)\n");
- break;
- case FLASH_SST800A: printf ("SST39LF/VF800 (8 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST160A: printf ("SST39LF/VF160 (16 Mbit, uniform sector size)\n");
- break;
- case FLASH_STMW320DT: printf ("M29W320DT (32 M, top sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
-#ifdef CFG_FLASH_EMPTY_INFO
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++)
- {
- if (*flash++ != 0xffffffff)
- {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- /* print empty and read-only info */
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
-#else
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
-#endif
-
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- short n;
- CFG_FLASH_WORD_SIZE value;
- ulong base = (ulong)addr;
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *)addr;
-
- debug("[%s, %d] Entering ...\n", __FUNCTION__, __LINE__);
-
- /* Write auto select command: read Manufacturer ID */
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00900090;
-
- value = addr2[CFG_FLASH_READ0];
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (CFG_FLASH_WORD_SIZE)FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (CFG_FLASH_WORD_SIZE)SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case (CFG_FLASH_WORD_SIZE)STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[CFG_FLASH_READ1]; /* device ID */
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (CFG_FLASH_WORD_SIZE)STM_ID_29W320DT:
- info->flash_id += FLASH_STMW320DT;
- info->sector_count = 67;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL322T:
- info->flash_id += FLASH_AMDL322T;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL322B:
- info->flash_id += FLASH_AMDL322B;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL323T:
- info->flash_id += FLASH_AMDL323T;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL323B:
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV640U:
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x00800000; break; /* => 8 MB */
-
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF800A:
- info->flash_id += FLASH_SST800A;
- info->sector_count = 16;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF160A:
- info->flash_id += FLASH_SST160A;
- info->sector_count = 32;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324B)) {
- /* set sector offsets for bottom boot block type */
- for (i=0; i<8; ++i) { /* 8 x 8k boot sectors */
- info->start[i] = base;
- base += 8 << 10;
- }
- while (i < info->sector_count) { /* 64k regular sectors */
- info->start[i] = base;
- base += 64 << 10;
- ++i;
- }
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324T)) {
- /* set sector offsets for top boot block type */
- base += info->size;
- i = info->sector_count;
- for (n=0; n<8; ++n) { /* 8 x 8k boot sectors */
- base -= 8 << 10;
- --i;
- info->start[i] = base;
- }
- while (i > 0) { /* 64k regular sectors */
- base -= 64 << 10;
- --i;
- info->start[i] = base;
- }
- } else if ((info->flash_id & FLASH_TYPEMASK) == FLASH_STMW320DT) {
- /* set sector offsets for top boot block type */
- base += info->size;
- i = info->sector_count;
- /* 1 x 16k boot sector */
- base -= 16 << 10;
- --i;
- info->start[i] = base;
- /* 2 x 8k boot sectors */
- for (n=0; n<2; ++n) {
- base -= 8 << 10;
- --i;
- info->start[i] = base;
- }
- /* 1 x 32k boot sector */
- base -= 32 << 10;
- --i;
- info->start[i] = base;
-
- while (i > 0) { /* 64k regular sectors */
- base -= 64 << 10;
- --i;
- info->start[i] = base;
- }
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[CFG_FLASH_READ2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (CFG_FLASH_WORD_SIZE *)info->start[0];
- *addr2 = (CFG_FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *)(info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- ulong start, now, last;
- int i;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *)(info->start[sect]);
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE)0x00500050; /* block erase */
- for (i=0; i<50; i++)
- udelay(1000); /* wait 1 ms */
- } else {
- if (sect == s_first) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- }
- addr2[0] = (CFG_FLASH_WORD_SIZE)0x00300030; /* sector erase */
- }
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (CFG_FLASH_WORD_SIZE *)(info->start[l_sect]);
- while ((addr[0] & (CFG_FLASH_WORD_SIZE)0x00800080) != (CFG_FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (CFG_FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (CFG_FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
-#ifdef CONFIG_B2
- data = data | ((*(uchar *)cp)<<(8*i));
-#else
- data = (data << 8) | (*(uchar *)cp);
-#endif
- }
- for (; i<4 && cnt>0; ++i) {
-#ifdef CONFIG_B2
- data = data | ((*src++)<<(8*i));
-#else
- data = (data << 8) | *src++;
-#endif
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
-#ifdef CONFIG_B2
- data = data | ((*(uchar *)cp)<<(8*i));
-#else
- data = (data << 8) | (*(uchar *)cp);
-#endif
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
-#ifdef CONFIG_B2
- data = (*(ulong*)src);
- src += 4;
-#else
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
-#endif
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-#ifdef CONFIG_B2
- data = data | ((*src++)<<(8*i));
-#else
- data = (data << 8) | *src++;
-#endif
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
-#ifdef CONFIG_B2
- data = data | ((*(uchar *)cp)<<(8*i));
-#else
- data = (data << 8) | (*(uchar *)cp);
-#endif
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *)(info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *)dest;
- volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *)&data;
- ulong start;
- int flag;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile ulong *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- for (i=0; i<4/sizeof(CFG_FLASH_WORD_SIZE); i++)
- {
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (CFG_FLASH_WORD_SIZE)0x00800080) !=
- (data2[i] & (CFG_FLASH_WORD_SIZE)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/dave/common/fpga.c b/board/dave/common/fpga.c
deleted file mode 100644
index 5b5b5e9d2e..0000000000
--- a/board/dave/common/fpga.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef FPGA_DEBUG
-#define DBG(x...) printf(x)
-#else
-#define DBG(x...)
-#endif /* DEBUG */
-
-#define MAX_ONES 226
-
-#ifdef CFG_FPGA_PRG
-# define FPGA_PRG CFG_FPGA_PRG /* FPGA program pin (ppc output)*/
-# define FPGA_CLK CFG_FPGA_CLK /* FPGA clk pin (ppc output) */
-# define FPGA_DATA CFG_FPGA_DATA /* FPGA data pin (ppc output) */
-# define FPGA_DONE CFG_FPGA_DONE /* FPGA done pin (ppc input) */
-# define FPGA_INIT CFG_FPGA_INIT /* FPGA init pin (ppc input) */
-#else
-# define FPGA_PRG 0x04000000 /* FPGA program pin (ppc output) */
-# define FPGA_CLK 0x02000000 /* FPGA clk pin (ppc output) */
-# define FPGA_DATA 0x01000000 /* FPGA data pin (ppc output) */
-# define FPGA_DONE 0x00800000 /* FPGA done pin (ppc input) */
-# define FPGA_INIT 0x00400000 /* FPGA init pin (ppc input) */
-#endif
-
-#define ERROR_FPGA_PRG_INIT_LOW -1 /* Timeout after PRG* asserted */
-#define ERROR_FPGA_PRG_INIT_HIGH -2 /* Timeout after PRG* deasserted */
-#define ERROR_FPGA_PRG_DONE -3 /* Timeout after programming */
-
-#define SET_FPGA(data) out32(GPIO0_OR, data)
-
-#define FPGA_WRITE_1 { \
- SET_FPGA(FPGA_PRG | FPGA_DATA); /* set clock to 0 */ \
- SET_FPGA(FPGA_PRG | FPGA_DATA); /* set data to 1 */ \
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA); /* set clock to 1 */ \
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);} /* set data to 1 */
-
-#define FPGA_WRITE_0 { \
- SET_FPGA(FPGA_PRG | FPGA_DATA); /* set clock to 0 */ \
- SET_FPGA(FPGA_PRG); /* set data to 0 */ \
- SET_FPGA(FPGA_PRG | FPGA_CLK); /* set clock to 1 */ \
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);} /* set data to 1 */
-
-#if 0
-static int fpga_boot (unsigned char *fpgadata, int size)
-{
- int i, index, len;
- int count;
-
-#ifdef CFG_FPGA_SPARTAN2
- int j;
-#else
- unsigned char b;
- int bit;
-#endif
-
- /* display infos on fpgaimage */
- index = 15;
- for (i = 0; i < 4; i++) {
- len = fpgadata[index];
- DBG ("FPGA: %s\n", &(fpgadata[index + 1]));
- index += len + 3;
- }
-
-#ifdef CFG_FPGA_SPARTAN2
- /* search for preamble 0xFFFFFFFF */
- while (1) {
- if ((fpgadata[index] == 0xff) && (fpgadata[index + 1] == 0xff)
- && (fpgadata[index + 2] == 0xff)
- && (fpgadata[index + 3] == 0xff))
- break; /* preamble found */
- else
- index++;
- }
-#else
- /* search for preamble 0xFF2X */
- for (index = 0; index < size - 1; index++) {
- if ((fpgadata[index] == 0xff)
- && ((fpgadata[index + 1] & 0xf0) == 0x30))
- break;
- }
- index += 2;
-#endif
-
- DBG ("FPGA: configdata starts at position 0x%x\n", index);
- DBG ("FPGA: length of fpga-data %d\n", size - index);
-
- /*
- * Setup port pins for fpga programming
- */
- out32 (GPIO0_ODR, 0x00000000); /* no open drain pins */
- out32 (GPIO0_TCR, in32 (GPIO0_TCR) | FPGA_PRG | FPGA_CLK | FPGA_DATA); /* setup for output */
- out32 (GPIO0_OR, in32 (GPIO0_OR) | FPGA_PRG | FPGA_CLK | FPGA_DATA); /* set pins to high */
-
- DBG ("%s, ",
- ((in32 (GPIO0_IR) & FPGA_DONE) == 0) ? "NOT DONE" : "DONE");
- DBG ("%s\n",
- ((in32 (GPIO0_IR) & FPGA_INIT) == 0) ? "NOT INIT" : "INIT");
-
- /*
- * Init fpga by asserting and deasserting PROGRAM*
- */
- SET_FPGA (FPGA_CLK | FPGA_DATA);
-
- /* Wait for FPGA init line low */
- count = 0;
- while (in32 (GPIO0_IR) & FPGA_INIT) {
- udelay (1000); /* wait 1ms */
- /* Check for timeout - 100us max, so use 3ms */
- if (count++ > 3) {
- DBG ("FPGA: Booting failed!\n");
- return ERROR_FPGA_PRG_INIT_LOW;
- }
- }
-
- DBG ("%s, ",
- ((in32 (GPIO0_IR) & FPGA_DONE) == 0) ? "NOT DONE" : "DONE");
- DBG ("%s\n",
- ((in32 (GPIO0_IR) & FPGA_INIT) == 0) ? "NOT INIT" : "INIT");
-
- /* deassert PROGRAM* */
- SET_FPGA (FPGA_PRG | FPGA_CLK | FPGA_DATA);
-
- /* Wait for FPGA end of init period . */
- count = 0;
- while (!(in32 (GPIO0_IR) & FPGA_INIT)) {
- udelay (1000); /* wait 1ms */
- /* Check for timeout */
- if (count++ > 3) {
- DBG ("FPGA: Booting failed!\n");
- return ERROR_FPGA_PRG_INIT_HIGH;
- }
- }
-
- DBG ("%s, ",
- ((in32 (GPIO0_IR) & FPGA_DONE) == 0) ? "NOT DONE" : "DONE");
- DBG ("%s\n",
- ((in32 (GPIO0_IR) & FPGA_INIT) == 0) ? "NOT INIT" : "INIT");
-
- DBG ("write configuration data into fpga\n");
- /* write configuration-data into fpga... */
-
-#ifdef CFG_FPGA_SPARTAN2
- /*
- * Load uncompressed image into fpga
- */
- for (i = index; i < size; i++) {
- for (j = 0; j < 8; j++) {
- if ((fpgadata[i] & 0x80) == 0x80) {
- FPGA_WRITE_1;
- } else {
- FPGA_WRITE_0;
- }
- fpgadata[i] <<= 1;
- }
- }
-#else /* ! CFG_FPGA_SPARTAN2 */
- /* send 0xff 0x20 */
- FPGA_WRITE_1;
- FPGA_WRITE_1;
- FPGA_WRITE_1;
- FPGA_WRITE_1;
- FPGA_WRITE_1;
- FPGA_WRITE_1;
- FPGA_WRITE_1;
- FPGA_WRITE_1;
- FPGA_WRITE_0;
- FPGA_WRITE_0;
- FPGA_WRITE_1;
- FPGA_WRITE_0;
- FPGA_WRITE_0;
- FPGA_WRITE_0;
- FPGA_WRITE_0;
- FPGA_WRITE_0;
-
- /*
- ** Bit_DeCompression
- ** Code 1 .. maxOnes : n '1's followed by '0'
- ** maxOnes + 1 .. maxOnes + 1 : n - 1 '1's no '0'
- ** maxOnes + 2 .. 254 : n - (maxOnes + 2) '0's followed by '1'
- ** 255 : '1'
- */
-
- for (i = index; i < size; i++) {
- b = fpgadata[i];
- if ((b >= 1) && (b <= MAX_ONES)) {
- for (bit = 0; bit < b; bit++) {
- FPGA_WRITE_1;
- }
- FPGA_WRITE_0;
- } else if (b == (MAX_ONES + 1)) {
- for (bit = 1; bit < b; bit++) {
- FPGA_WRITE_1;
- }
- } else if ((b >= (MAX_ONES + 2)) && (b <= 254)) {
- for (bit = 0; bit < (b - (MAX_ONES + 2)); bit++) {
- FPGA_WRITE_0;
- }
- FPGA_WRITE_1;
- } else if (b == 255) {
- FPGA_WRITE_1;
- }
- }
-#endif /* CFG_FPGA_SPARTAN2 */
-
- DBG ("%s, ",
- ((in32 (GPIO0_IR) & FPGA_DONE) == 0) ? "NOT DONE" : "DONE");
- DBG ("%s\n",
- ((in32 (GPIO0_IR) & FPGA_INIT) == 0) ? "NOT INIT" : "INIT");
-
- /*
- * Check if fpga's DONE signal - correctly booted ?
- */
-
- /* Wait for FPGA end of programming period . */
- count = 0;
- while (!(in32 (GPIO0_IR) & FPGA_DONE)) {
- udelay (1000); /* wait 1ms */
- /* Check for timeout */
- if (count++ > 3) {
- DBG ("FPGA: Booting failed!\n");
- return ERROR_FPGA_PRG_DONE;
- }
- }
-
- DBG ("FPGA: Booting successful!\n");
- return 0;
-}
-#endif /* 0 */
diff --git a/board/dave/common/pci.c b/board/dave/common/pci.c
deleted file mode 100644
index f8f180c6c4..0000000000
--- a/board/dave/common/pci.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-#include <pci.h>
-
-
-u_long pci9054_iobase;
-
-
-#define PCI_PRIMARY_CAR (0x500000dc) /* PCI config address reg */
-#define PCI_PRIMARY_CDR (0x80000000) /* PCI config data reg */
-
-
-/*-----------------------------------------------------------------------------+
-| Subroutine: pci9054_read_config_dword
-| Description: Read a PCI configuration register
-| Inputs:
-| hose PCI Controller
-| dev PCI Bus+Device+Function number
-| offset Configuration register number
-| value Address of the configuration register value
-| Return value:
-| 0 Successful
-+-----------------------------------------------------------------------------*/
-int pci9054_read_config_dword(struct pci_controller *hose,
- pci_dev_t dev, int offset, u32* value)
-{
- unsigned long conAdrVal;
- unsigned long val;
-
- /* generate coded value for CON_ADR register */
- conAdrVal = dev | (offset & 0xfc) | 0x80000000;
-
- /* Load the CON_ADR (CAR) value first, then read from CON_DATA (CDR) */
- *(unsigned long *)PCI_PRIMARY_CAR = conAdrVal;
-
- /* Note: *pResult comes back as -1 if machine check happened */
- val = in32r(PCI_PRIMARY_CDR);
-
- *value = (unsigned long) val;
-
- out32r(PCI_PRIMARY_CAR, 0);
-
- if ((*(unsigned long *)0x50000304) & 0x60000000)
- {
- /* clear pci master/target abort bits */
- *(unsigned long *)0x50000304 = *(unsigned long *)0x50000304;
- }
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------+
-| Subroutine: pci9054_write_config_dword
-| Description: Write a PCI configuration register.
-| Inputs:
-| hose PCI Controller
-| dev PCI Bus+Device+Function number
-| offset Configuration register number
-| Value Configuration register value
-| Return value:
-| 0 Successful
-| Updated for pass2 errata #6. Need to disable interrupts and clear the
-| PCICFGADR reg after writing the PCICFGDATA reg.
-+-----------------------------------------------------------------------------*/
-int pci9054_write_config_dword(struct pci_controller *hose,
- pci_dev_t dev, int offset, u32 value)
-{
- unsigned long conAdrVal;
-
- conAdrVal = dev | (offset & 0xfc) | 0x80000000;
-
- *(unsigned long *)PCI_PRIMARY_CAR = conAdrVal;
-
- out32r(PCI_PRIMARY_CDR, value);
-
- out32r(PCI_PRIMARY_CAR, 0);
-
- /* clear pci master/target abort bits */
- *(unsigned long *)0x50000304 = *(unsigned long *)0x50000304;
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-#ifdef CONFIG_DASA_SIM
-static void pci_dasa_sim_config_pci9054(struct pci_controller *hose, pci_dev_t dev,
- struct pci_config_table *_)
-{
- unsigned int iobase;
- unsigned short status = 0;
- unsigned char timer;
-
- /*
- * Configure PLX PCI9054
- */
- pci_read_config_word(CFG_PCI9054_DEV_FN, PCI_COMMAND, &status);
- status |= PCI_COMMAND_MASTER | PCI_COMMAND_IO | PCI_COMMAND_MEMORY;
- pci_write_config_word(CFG_PCI9054_DEV_FN, PCI_COMMAND, status);
-
- /* Check the latency timer for values >= 0x60.
- */
- pci_read_config_byte(CFG_PCI9054_DEV_FN, PCI_LATENCY_TIMER, &timer);
- if (timer < 0x60)
- {
- pci_write_config_byte(CFG_PCI9054_DEV_FN, PCI_LATENCY_TIMER, 0x60);
- }
-
- /* Set I/O base register.
- */
- pci_write_config_dword(CFG_PCI9054_DEV_FN, PCI_BASE_ADDRESS_0, CFG_PCI9054_IOBASE);
- pci_read_config_dword(CFG_PCI9054_DEV_FN, PCI_BASE_ADDRESS_0, &iobase);
-
- pci9054_iobase = pci_mem_to_phys(CFG_PCI9054_DEV_FN, iobase & PCI_BASE_ADDRESS_MEM_MASK);
-
- if (pci9054_iobase == 0xffffffff)
- {
- printf("Error: Can not set I/O base register.\n");
- return;
- }
-}
-#endif
-
-static struct pci_config_table pci9054_config_table[] = {
-#ifndef CONFIG_PCI_PNP
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- PCI_BUS(CFG_ETH_DEV_FN), PCI_DEV(CFG_ETH_DEV_FN), PCI_FUNC(CFG_ETH_DEV_FN),
- pci_cfgfunc_config_device, { CFG_ETH_IOBASE,
- CFG_ETH_IOBASE,
- PCI_COMMAND_IO | PCI_COMMAND_MASTER }},
-#ifdef CONFIG_DASA_SIM
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- PCI_BUS(CFG_PCI9054_DEV_FN), PCI_DEV(CFG_PCI9054_DEV_FN), PCI_FUNC(CFG_PCI9054_DEV_FN),
- pci_dasa_sim_config_pci9054 },
-#endif
-#endif
- { }
-};
-
-static struct pci_controller pci9054_hose = {
- config_table: pci9054_config_table,
-};
-
-void pci_init(void)
-{
- struct pci_controller *hose = &pci9054_hose;
-
- /*
- * Register the hose
- */
- hose->first_busno = 0;
- hose->last_busno = 0xff;
-
- /* System memory space */
- pci_set_region(hose->regions + 0,
- 0x00000000, 0x00000000, 0x01000000,
- PCI_REGION_MEM | PCI_REGION_MEMORY);
-
- /* PCI Memory space */
- pci_set_region(hose->regions + 1,
- 0x00000000, 0xc0000000, 0x10000000,
- PCI_REGION_MEM);
-
- pci_set_ops(hose,
- pci_hose_read_config_byte_via_dword,
- pci_hose_read_config_word_via_dword,
- pci9054_read_config_dword,
- pci_hose_write_config_byte_via_dword,
- pci_hose_write_config_word_via_dword,
- pci9054_write_config_dword);
-
- hose->region_count = 2;
-
- pci_register_hose(hose);
-
- hose->last_busno = pci_hose_scan(hose);
-}
diff --git a/board/dbau1x00/Makefile b/board/dbau1x00/Makefile
deleted file mode 100644
index afe02c27c6..0000000000
--- a/board/dbau1x00/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-SOBJS = lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/dbau1x00/README b/board/dbau1x00/README
deleted file mode 100644
index b37ff3616b..0000000000
--- a/board/dbau1x00/README
+++ /dev/null
@@ -1,63 +0,0 @@
-By Thomas.Lange@corelatus.se 2004-Oct-05
-----------------------------------------
-DbAu1xx0 are development boards from AMD containing
-an Alchemy AU1xx0 series cpu with mips32 core.
-Existing cpu:s are Au1000, Au1100, Au1500 and Au1550
-
-Limitations & comments
-----------------------
-Support was originally big endian only.
-I have not tested, but several u-boot users report working
-configurations in little endian mode.
-
-I named the board dbau1x00, to allow
-support for all three development boards
-( dbau1000, dbau1100 and dbau1500 ).
-Now there is a new board called dbau1550 also, which
-should be supported RSN.
-
-I only have a dbau1000, so my testing is limited
-to this board.
-
-The board has two different flash banks, that can
-be selected via dip switch. This makes it possible
-to test new bootloaders without thrashing the YAMON
-boot loader delivered with board.
-
-NOTE! When you switch between the two boot flashes, the
-base addresses will be swapped.
-Have this in mind when you compile u-boot. TEXT_BASE has
-to match the address where u-boot is located when you
-actually launch.
-
-Ethernet only supported for mac0.
-
-PCMCIA only supported for slot 0, only 3.3V.
-
-PCMCIA IDE tested with Sandisk Compact Flash and
-IBM microdrive.
-
-###################################
-######## NOTE!!!!!! #########
-###################################
-If you partition a disk on another system (e.g. laptop),
-all bytes will be swapped on 16bit level when using
-PCMCIA and running cpu in big endian mode!!!!
-
-This is probably due to an error in Au1000 chip.
-
-Solution:
-
-a) Boot via network and partition disk directly from
-dbau1x00. The endian will then be correct.
-
-b) Partition disk on "laptop" and fill it with all files
-you need. Then write a simple program that endian swaps
-whole disk,
-
-Example:
-Original "laptop" byte order:
-B0 B1 B2 B3 B4 B5 B6 B7 B8 B9...
-
-Dbau1000 byte order will then be:
-B1 B0 B3 B2 B5 B4 B7 B6 B9 B8...
diff --git a/board/dbau1x00/config.mk b/board/dbau1x00/config.mk
deleted file mode 100644
index 39eb60a176..0000000000
--- a/board/dbau1x00/config.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# (C) Copyright 2003
-# 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
-#
-
-#
-# AMD development board AMD Alchemy DbAu1x00, MIPS32 core
-#
-
-# ROM version
-TEXT_BASE = 0xbfc00000
-
-# RAM version
-#TEXT_BASE = 0x80100000
diff --git a/board/dbau1x00/dbau1x00.c b/board/dbau1x00/dbau1x00.c
deleted file mode 100644
index d29e8d591e..0000000000
--- a/board/dbau1x00/dbau1x00.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * (C) Copyright 2003
- * Thomas.Lange@corelatus.se
- *
- * 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 <common.h>
-#include <command.h>
-#include <asm/au1x00.h>
-#include <asm/mipsregs.h>
-
-long int initdram(int board_type)
-{
- /* Sdram is setup by assembler code */
- /* If memory could be changed, we should return the true value here */
- return MEM_SIZE*1024*1024;
-}
-
-#define BCSR_PCMCIA_PC0DRVEN 0x0010
-#define BCSR_PCMCIA_PC0RST 0x0080
-
-/* In cpu/mips/cpu.c */
-void write_one_tlb( int index, u32 pagemask, u32 hi, u32 low0, u32 low1 );
-
-int checkboard (void)
-{
-#ifdef CONFIG_IDE_PCMCIA
- u16 status;
- volatile u32 *pcmcia_bcsr = (u32*)(DB1XX0_BCSR_ADDR+0x10);
-#endif /* CONFIG_IDE_PCMCIA */
- volatile u32 *phy = (u32*)(DB1XX0_BCSR_ADDR+0xC);
- volatile u32 *sys_counter = (volatile u32*)SYS_COUNTER_CNTRL;
- u32 proc_id;
-
- *sys_counter = 0x100; /* Enable 32 kHz oscillator for RTC/TOY */
-
- proc_id = read_32bit_cp0_register(CP0_PRID);
-
- switch (proc_id >> 24) {
- case 0:
- puts ("Board: Merlot (DbAu1000)\n");
- printf ("CPU: Au1000 396 MHz, id: 0x%02x, rev: 0x%02x\n",
- (proc_id >> 8) & 0xFF, proc_id & 0xFF);
- break;
- case 1:
- puts ("Board: DbAu1500\n");
- printf ("CPU: Au1500, id: 0x%02x, rev: 0x%02x\n",
- (proc_id >> 8) & 0xFF, proc_id & 0xFF);
- break;
- case 2:
- puts ("Board: DbAu1100\n");
- printf ("CPU: Au1100, id: 0x%02x, rev: 0x%02x\n",
- (proc_id >> 8) & 0xFF, proc_id & 0xFF);
- break;
- case 3:
- puts ("Board: DbAu1550\n");
- printf ("CPU: Au1550, id: 0x%02x, rev: 0x%02x\n",
- (proc_id >> 8) & 0xFF, proc_id & 0xFF);
- break;
- default:
- printf ("Unsupported cpu %d, proc_id=0x%x\n", proc_id >> 24, proc_id);
- }
-#ifdef CONFIG_IDE_PCMCIA
- /* Enable 3.3 V on slot 0 ( VCC )
- No 5V */
- status = 4;
- *pcmcia_bcsr = status;
-
- status |= BCSR_PCMCIA_PC0DRVEN;
- *pcmcia_bcsr = status;
- au_sync();
-
- udelay(300*1000);
-
- status |= BCSR_PCMCIA_PC0RST;
- *pcmcia_bcsr = status;
- au_sync();
-
- udelay(100*1000);
-
- /* PCMCIA is on a 36 bit physical address.
- We need to map it into a 32 bit addresses */
-
-#if 0
- /* We dont need theese unless we run whole pcmcia package */
- write_one_tlb(20, /* index */
- 0x01ffe000, /* Pagemask, 16 MB pages */
- CFG_PCMCIA_IO_BASE, /* Hi */
- 0x3C000017, /* Lo0 */
- 0x3C200017); /* Lo1 */
-
- write_one_tlb(21, /* index */
- 0x01ffe000, /* Pagemask, 16 MB pages */
- CFG_PCMCIA_ATTR_BASE, /* Hi */
- 0x3D000017, /* Lo0 */
- 0x3D200017); /* Lo1 */
-#endif /* 0 */
- write_one_tlb(22, /* index */
- 0x01ffe000, /* Pagemask, 16 MB pages */
- CFG_PCMCIA_MEM_ADDR, /* Hi */
- 0x3E000017, /* Lo0 */
- 0x3E200017); /* Lo1 */
-#endif /* CONFIG_IDE_PCMCIA */
-
- /* Release reset of ethernet PHY chips */
- /* Always do this, because linux does not know about it */
- *phy = 3;
-
- return 0;
-}
diff --git a/board/dbau1x00/flash.c b/board/dbau1x00/flash.c
deleted file mode 100644
index 3cf29e844b..0000000000
--- a/board/dbau1x00/flash.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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 <common.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- printf ("Skipping flash_init\n");
- return (0);
-}
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- printf ("write_buff not implemented\n");
- return (-1);
-}
diff --git a/board/dbau1x00/lowlevel_init.S b/board/dbau1x00/lowlevel_init.S
deleted file mode 100644
index 14a78465f3..0000000000
--- a/board/dbau1x00/lowlevel_init.S
+++ /dev/null
@@ -1,590 +0,0 @@
-/* Memory sub-system initialization code */
-
-#include <config.h>
-#include <version.h>
-#include <asm/regdef.h>
-#include <asm/au1x00.h>
-#include <asm/mipsregs.h>
-
-#define AU1500_SYS_ADDR 0xB1900000
-#define sys_endian 0x0038
-#define CP0_Config0 $16
-#define CPU_SCALE ((CFG_MHZ) / 12) /* CPU clock is a multiple of 12 MHz */
-#define MEM_1MS ((CFG_MHZ) * 1000)
-
- .text
- .set noreorder
- .set mips32
-
- .globl lowlevel_init
-lowlevel_init:
- /*
- * Step 1) Establish CPU endian mode.
- * Db1500-specific:
- * Switch S1.1 Off(bit7 reads 1) is Little Endian
- * Switch S1.1 On (bit7 reads 0) is Big Endian
- */
-#ifdef CONFIG_DBAU1550
- li t0, MEM_STCFG2
- li t1, 0x00000040
- sw t1, 0(t0)
-
- li t0, MEM_STTIME2
- li t1, 0x22080a20
- sw t1, 0(t0)
-
- li t0, MEM_STADDR2
- li t1, 0x10c03f00
- sw t1, 0(t0)
-#else
- li t0, MEM_STCFG1
- li t1, 0x00000080
- sw t1, 0(t0)
-
- li t0, MEM_STTIME1
- li t1, 0x22080a20
- sw t1, 0(t0)
-
- li t0, MEM_STADDR1
- li t1, 0x10c03f00
- sw t1, 0(t0)
-#endif
-
- li t0, DB1XX0_BCSR_ADDR
- lw t1,8(t0)
- andi t1,t1,0x80
- beq zero,t1,big_endian
- nop
-little_endian:
-
- /* Change Au1 core to little endian */
- li t0, AU1500_SYS_ADDR
- li t1, 1
- sw t1, sys_endian(t0)
- mfc0 t2, CP0_CONFIG
- mtc0 t2, CP0_CONFIG
- nop
- nop
-
- /* Big Endian is default so nothing to do but fall through */
-
-big_endian:
-
- /*
- * Step 2) Establish Status Register
- * (set BEV, clear ERL, clear EXL, clear IE)
- */
- li t1, 0x00400000
- mtc0 t1, CP0_STATUS
-
- /*
- * Step 3) Establish CP0 Config0
- * (set OD, set K0=3)
- */
- li t1, 0x00080003
- mtc0 t1, CP0_CONFIG
-
- /*
- * Step 4) Disable Watchpoint facilities
- */
- li t1, 0x00000000
- mtc0 t1, CP0_WATCHLO
- mtc0 t1, CP0_IWATCHLO
- /*
- * Step 5) Disable the performance counters
- */
- mtc0 zero, CP0_PERFORMANCE
- nop
-
- /*
- * Step 6) Establish EJTAG Debug register
- */
- mtc0 zero, CP0_DEBUG
- nop
-
- /*
- * Step 7) Establish Cause
- * (set IV bit)
- */
- li t1, 0x00800000
- mtc0 t1, CP0_CAUSE
-
- /* Establish Wired (and Random) */
- mtc0 zero, CP0_WIRED
- nop
-
-#ifdef CONFIG_DBAU1550
- /* No workaround if running from ram */
- lui t0, 0xffc0
- lui t3, 0xbfc0
- and t1, ra, t0
- bne t1, t3, noCacheJump
- nop
-
- /*** From AMD YAMON ***/
- /*
- * Step 8) Initialize the caches
- */
- li t0, (16*1024)
- li t1, 32
- li t2, 0x80000000
- addu t3, t0, t2
-cacheloop:
- cache 0, 0(t2)
- cache 1, 0(t2)
- addu t2, t1
- bne t2, t3, cacheloop
- nop
-
- /* Save return address */
- move t3, ra
-
- /* Run from cacheable space now */
- bal cachehere
- nop
-cachehere:
- li t1, ~0x20000000 /* convert to KSEG0 */
- and t0, ra, t1
- addi t0, 5*4 /* 5 insns beyond cachehere */
- jr t0
- nop
-
- /* Restore return address */
- move ra, t3
-
- /*
- * Step 9) Initialize the TLB
- */
- li t0, 0 # index value
- li t1, 0x00000000 # entryhi value
- li t2, 32 # 32 entries
-
-tlbloop:
- /* Probe TLB for matching EntryHi */
- mtc0 t1, CP0_ENTRYHI
- tlbp
- nop
-
- /* Examine Index[P], 1=no matching entry */
- mfc0 t3, CP0_INDEX
- li t4, 0x80000000
- and t3, t4, t3
- addiu t1, t1, 1 # increment t1 (asid)
- beq zero, t3, tlbloop
- nop
-
- /* Initialize the TLB entry */
- mtc0 t0, CP0_INDEX
- mtc0 zero, CP0_ENTRYLO0
- mtc0 zero, CP0_ENTRYLO1
- mtc0 zero, CP0_PAGEMASK
- tlbwi
-
- /* Do it again */
- addiu t0, t0, 1
- bne t0, t2, tlbloop
- nop
-
-#endif /* CONFIG_DBAU1550 */
-
- /* First setup pll:s to make serial work ok */
- /* We have a 12 MHz crystal */
- li t0, SYS_CPUPLL
- li t1, CPU_SCALE /* CPU clock */
- sw t1, 0(t0)
- sync
- nop
- nop
-
- /* wait 1mS for clocks to settle */
- li t1, MEM_1MS
-1: add t1, -1
- bne t1, zero, 1b
- nop
- /* Setup AUX PLL */
- li t0, SYS_AUXPLL
- li t1, 0x20 /* 96 MHz */
- sw t1, 0(t0) /* aux pll */
- sync
-
-#ifdef CONFIG_DBAU1550
- /* Static memory controller */
- /* RCE0 - can not change while fetching, do so from icache */
- move t2, ra /* Store return address */
- bal getAddr
- nop
-
-getAddr:
- move t1, ra
- move ra, t2 /* Move return addess back */
-
- cache 0x14,0(t1)
- cache 0x14,32(t1)
- /*** /From YAMON ***/
-
-noCacheJump:
-#endif /* CONFIG_DBAU1550 */
-
-#ifdef CONFIG_DBAU1550
- li t0, MEM_STTIME0
- li t1, 0x040181D7
- sw t1, 0(t0)
-
- /* RCE0 AMD MirrorBit Flash (?) */
- li t0, MEM_STCFG0
- li t1, 0x00000003
- sw t1, 0(t0)
-
- li t0, MEM_STADDR0
- li t1, 0x11803E00
- sw t1, 0(t0)
-#else /* CONFIG_DBAU1550 */
- li t0, MEM_STTIME0
- li t1, 0x040181D7
- sw t1, 0(t0)
-
- /* RCE0 AMD 29LV640M MirrorBit Flash */
- li t0, MEM_STCFG0
- li t1, 0x00000013
- sw t1, 0(t0)
-
- li t0, MEM_STADDR0
- li t1, 0x11E03F80
- sw t1, 0(t0)
-#endif /* CONFIG_DBAU1550 */
-
- /* RCE1 CPLD Board Logic */
- li t0, MEM_STCFG1
- li t1, 0x00000080
- sw t1, 0(t0)
-
- li t0, MEM_STTIME1
- li t1, 0x22080a20
- sw t1, 0(t0)
-
- li t0, MEM_STADDR1
- li t1, 0x10c03f00
- sw t1, 0(t0)
-
-#ifdef CONFIG_DBAU1550
- /* RCE2 CPLD Board Logic */
- li t0, MEM_STCFG2
- li t1, 0x00000040
- sw t1, 0(t0)
-
- li t0, MEM_STTIME2
- li t1, 0x22080a20
- sw t1, 0(t0)
-
- li t0, MEM_STADDR2
- li t1, 0x10c03f00
- sw t1, 0(t0)
-#else
- li t0, MEM_STCFG2
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, MEM_STTIME2
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, MEM_STADDR2
- li t1, 0x00000000
- sw t1, 0(t0)
-#endif
-
- /* RCE3 PCMCIA 250ns */
- li t0, MEM_STCFG3
- li t1, 0x00000002
- sw t1, 0(t0)
-
- li t0, MEM_STTIME3
- li t1, 0x280E3E07
- sw t1, 0(t0)
-
- li t0, MEM_STADDR3
- li t1, 0x10000000
- sw t1, 0(t0)
-
- sync
-
- /* Set peripherals to a known state */
- li t0, IC0_CFG0CLR
- li t1, 0xFFFFFFFF
- sw t1, 0(t0)
-
- li t0, IC0_CFG0CLR
- sw t1, 0(t0)
-
- li t0, IC0_CFG1CLR
- sw t1, 0(t0)
-
- li t0, IC0_CFG2CLR
- sw t1, 0(t0)
-
- li t0, IC0_SRCSET
- sw t1, 0(t0)
-
- li t0, IC0_ASSIGNSET
- sw t1, 0(t0)
-
- li t0, IC0_WAKECLR
- sw t1, 0(t0)
-
- li t0, IC0_RISINGCLR
- sw t1, 0(t0)
-
- li t0, IC0_FALLINGCLR
- sw t1, 0(t0)
-
- li t0, IC0_TESTBIT
- li t1, 0x00000000
- sw t1, 0(t0)
- sync
-
- li t0, IC1_CFG0CLR
- li t1, 0xFFFFFFFF
- sw t1, 0(t0)
-
- li t0, IC1_CFG0CLR
- sw t1, 0(t0)
-
- li t0, IC1_CFG1CLR
- sw t1, 0(t0)
-
- li t0, IC1_CFG2CLR
- sw t1, 0(t0)
-
- li t0, IC1_SRCSET
- sw t1, 0(t0)
-
- li t0, IC1_ASSIGNSET
- sw t1, 0(t0)
-
- li t0, IC1_WAKECLR
- sw t1, 0(t0)
-
- li t0, IC1_RISINGCLR
- sw t1, 0(t0)
-
- li t0, IC1_FALLINGCLR
- sw t1, 0(t0)
-
- li t0, IC1_TESTBIT
- li t1, 0x00000000
- sw t1, 0(t0)
- sync
-
- li t0, SYS_FREQCTRL0
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_FREQCTRL1
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_CLKSRC
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_PININPUTEN
- li t1, 0x00000000
- sw t1, 0(t0)
- sync
-
- li t0, 0xB1100100
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, 0xB1400100
- li t1, 0x00000000
- sw t1, 0(t0)
-
-
- li t0, SYS_WAKEMSK
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_WAKESRC
- li t1, 0x00000000
- sw t1, 0(t0)
-
- /* wait 1mS before setup */
- li t1, MEM_1MS
-1: add t1, -1
- bne t1, zero, 1b
- nop
-
-#ifdef CONFIG_DBAU1550
-/* SDCS 0,1,2 DDR SDRAM */
- li t0, MEM_SDMODE0
- li t1, 0x04276221
- sw t1, 0(t0)
-
- li t0, MEM_SDMODE1
- li t1, 0x04276221
- sw t1, 0(t0)
-
- li t0, MEM_SDMODE2
- li t1, 0x04276221
- sw t1, 0(t0)
-
- li t0, MEM_SDADDR0
- li t1, 0xe21003f0
- sw t1, 0(t0)
-
- li t0, MEM_SDADDR1
- li t1, 0xe21043f0
- sw t1, 0(t0)
-
- li t0, MEM_SDADDR2
- li t1, 0xe21083f0
- sw t1, 0(t0)
-
- sync
-
- li t0, MEM_SDCONFIGA
- li t1, 0x9030060a /* Program refresh - disabled */
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDCONFIGB
- li t1, 0x00028000
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDPRECMD /* Precharge all */
- li t1, 0
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD0
- li t1, 0x40000000
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD1
- li t1, 0x40000000
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD2
- li t1, 0x40000000
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD0
- li t1, 0x00000063
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD1
- li t1, 0x00000063
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD2
- li t1, 0x00000063
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDPRECMD /* Precharge all */
- sw zero, 0(t0)
- sync
-
- /* Issue 2 autoref */
- li t0, MEM_SDAUTOREF
- sw zero, 0(t0)
- sync
-
- li t0, MEM_SDAUTOREF
- sw zero, 0(t0)
- sync
-
- /* Enable refresh */
- li t0, MEM_SDCONFIGA
- li t1, 0x9830060a /* Program refresh - enabled */
- sw t1, 0(t0)
- sync
-
-#else /* CONFIG_DBAU1550 */
-/* SDCS 0,1 SDRAM */
- li t0, MEM_SDMODE0
- li t1, 0x005522AA
- sw t1, 0(t0)
-
- li t0, MEM_SDMODE1
- li t1, 0x005522AA
- sw t1, 0(t0)
-
- li t0, MEM_SDMODE2
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, MEM_SDADDR0
- li t1, 0x001003F8
- sw t1, 0(t0)
-
-
- li t0, MEM_SDADDR1
- li t1, 0x001023F8
- sw t1, 0(t0)
-
- li t0, MEM_SDADDR2
- li t1, 0x00000000
- sw t1, 0(t0)
-
- sync
-
- li t0, MEM_SDREFCFG
- li t1, 0x64000C24 /* Disable */
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDPRECMD
- sw zero, 0(t0)
- sync
-
- li t0, MEM_SDAUTOREF
- sw zero, 0(t0)
- sync
- sw zero, 0(t0)
- sync
-
- li t0, MEM_SDREFCFG
- li t1, 0x66000C24 /* Enable */
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD0
- li t1, 0x00000033
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD1
- li t1, 0x00000033
- sw t1, 0(t0)
- sync
-
-#endif /* CONFIG_DBAU1550 */
- /* wait 1mS after setup */
- li t1, MEM_1MS
-1: add t1, -1
- bne t1, zero, 1b
- nop
-
- li t0, SYS_PINFUNC
- li t1, 0x00008080
- sw t1, 0(t0)
-
- li t0, SYS_TRIOUTCLR
- li t1, 0x00001FFF
- sw t1, 0(t0)
-
- li t0, SYS_OUTPUTCLR
- li t1, 0x00008000
- sw t1, 0(t0)
- sync
-
- j ra
- nop
diff --git a/board/dbau1x00/u-boot.lds b/board/dbau1x00/u-boot.lds
deleted file mode 100644
index 10c9917986..0000000000
--- a/board/dbau1x00/u-boot.lds
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk 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_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
-*/
-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips")
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .sdata : { *(.sdata) }
-
- _gp = ALIGN(16);
-
- __got_start = .;
- .got : { *(.got) }
- __got_end = .;
-
- .sdata : { *(.sdata) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- uboot_end_data = .;
- num_got_entries = (__got_end - __got_start) >> 2;
-
- . = ALIGN(4);
- .sbss : { *(.sbss) }
- .bss : { *(.bss) }
- uboot_end = .;
-}
diff --git a/board/dnp1110/Makefile b/board/dnp1110/Makefile
deleted file mode 100644
index a024e550aa..0000000000
--- a/board/dnp1110/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := dnp1110.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/dnp1110/config.mk b/board/dnp1110/config.mk
deleted file mode 100644
index 4f6af46f8c..0000000000
--- a/board/dnp1110/config.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# DNP/1110 board with SA1100 cpu
-#
-# http://www.dilnetpc.com
-#
-
-#
-# DILNETPC has 1 banks of 32 MB DRAM
-#
-# c000'0000
-#
-# Linux-Kernel is expected to be at c000'8000, entry c000'8000
-#
-# we load ourself to c1f8'0000, the upper 1 MB of the first (only) bank
-#
-
-TEXT_BASE = 0xc1f80000
diff --git a/board/dnp1110/dnp1110.c b/board/dnp1110/dnp1110.c
deleted file mode 100644
index ab8e7beb99..0000000000
--- a/board/dnp1110/dnp1110.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-#include <SA-1100.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* arch number of DNP1110-Board */
- gd->bd->bi_arch_number = MACH_TYPE_DNP1110;
-
- /* flash vpp on */
- PPDR |= 0x80; /* assumes LCD controller is off */
- PPSR |= 0x80;
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return (0);
-}
diff --git a/board/dnp1110/flash.c b/board/dnp1110/flash.c
deleted file mode 100644
index 60874ba9b8..0000000000
--- a/board/dnp1110/flash.c
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (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 <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-void inline spin_wheel(void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++)
- {
- switch (i)
- {
- case 0:
- flash_get_size((FPW *)PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets(PHYS_FLASH_1, &flash_info[i]);
- break;
- default:
- panic("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf ("28F128J3A\n"); break;
- default: printf ("Unknown Chip Type\n"); break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info)
-{
- volatile FPW value;
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW)0x00AA00AA;
- addr[0x2AAA] = (FPW)0x00550055;
- addr[0x5555] = (FPW)0x00900090;
-
- mb();
- value = addr[0];
-
- switch (value) {
-
- case (FPW)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW)0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb();
- value = addr[1]; /* device ID */
- switch (value) {
-
- case (FPW)INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x02000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW)0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *)(info->start[sect]);
- FPW status;
-
- printf("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- *addr = (FPW)0x00500050; /* clear status register */
- *addr = (FPW)0x00200020; /* erase setup */
- *addr = (FPW)0x00D000D0; /* erase confirm */
-
- while (((status = *addr) & (FPW)0x00800080) != (FPW)0x00800080) {
- if (get_timer_masked() > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW)0x00B000B0; /* suspend erase */
- *addr = (FPW)0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = (FPW)0x00500050; /* clear status register cmd. */
- *addr = (FPW)0x00FF00FF; /* resest to read mode */
-
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<port_width && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_data(info, wp, SWAP(data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i=0; i<port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data(info, wp, SWAP(data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800)
- {
- spin_wheel();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<port_width && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_data(info, wp, SWAP(data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *)dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf("not erased at %08lx (%x)\n",(ulong)addr,*addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = (FPW)0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW)0x00800080) != (FPW)0x00800080) {
- if (get_timer_masked() > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW)0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW)0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-void inline
-spin_wheel(void)
-{
- static int p=0;
- static char w[] = "\\/-";
-
- printf("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/dnp1110/lowlevel_init.S b/board/dnp1110/lowlevel_init.S
deleted file mode 100644
index 7730be3437..0000000000
--- a/board/dnp1110/lowlevel_init.S
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Memory Setup stuff - taken from blob memsetup.S
- *
- * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
- * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
- *
- * 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 "config.h"
-#include "version.h"
-
-
-/* some parameters for the board */
-
-MEM_BASE: .long 0xa0000000
-MEM_START: .long 0xc0000000
-
-#define MDCNFG 0x00
-#define MDCAS00 0x04 /* CAS waveform rotate reg 0 */
-#define MDCAS01 0x08 /* CAS waveform rotate reg 1 bank */
-#define MDCAS02 0x0C /* CAS waveform rotate reg 2 bank */
-#define MDREFR 0x1C /* DRAM refresh control reg */
-#define MDCAS20 0x20 /* CAS waveform rotate reg 0 bank */
-#define MDCAS21 0x24 /* CAS waveform rotate reg 1 bank */
-#define MDCAS22 0x28 /* CAS waveform rotate reg 2 bank */
-#define MECR 0x18 /* Expansion memory (PCMCIA) bus configuration register */
-#define MSC0 0x10 /* static memory control reg 0 */
-#define MSC1 0x14 /* static memory control reg 1 */
-#define MSC2 0x2C /* static memory control reg 2 */
-#define SMCNFG 0x30 /* SMROM configuration reg */
-
-mdcas00: .long 0x5555557F
-mdcas01: .long 0x55555555
-mdcas02: .long 0x55555555
-mdcas20: .long 0x5555557F
-mdcas21: .long 0x55555555
-mdcas22: .long 0x55555555
-mdcnfg: .long 0x0000B25C
-mdrefr: .long 0x007000C1
-mecr: .long 0x10841084
-msc0: .long 0x00004774
-msc1: .long 0x00000000
-msc2: .long 0x00000000
-smcnfg: .long 0x00000000
-
-/* setting up the memory */
-
-.globl lowlevel_init
-lowlevel_init:
-
- ldr r0, MEM_BASE
-
- /* Set up the DRAM */
-
- /* MDCAS00 */
- ldr r1, mdcas00
- str r1, [r0, #MDCAS00]
-
- /* MDCAS01 */
- ldr r1, mdcas01
- str r1, [r0, #MDCAS01]
-
- /* MDCAS02 */
- ldr r1, mdcas02
- str r1, [r0, #MDCAS02]
-
- /* MDCAS20 */
- ldr r1, mdcas20
- str r1, [r0, #MDCAS20]
-
- /* MDCAS21 */
- ldr r1, mdcas21
- str r1, [r0, #MDCAS21]
-
- /* MDCAS22 */
- ldr r1, mdcas22
- str r1, [r0, #MDCAS22]
-
- /* MDREFR */
- ldr r1, mdrefr
- str r1, [r0, #MDREFR]
-
- /* Set up PCMCIA space */
- ldr r1, mecr
- str r1, [r0, #MECR]
-
- /* Setup the flash memory and other */
- ldr r1, msc0
- str r1, [r0, #MSC0]
-
- ldr r1, msc1
- str r1, [r0, #MSC1]
-
- ldr r1, msc2
- str r1, [r0, #MSC2]
-
- ldr r1, smcnfg
- str r1, [r0, #SMCNFG]
-
- /* MDCNFG */
- ldr r1, mdcnfg
- bic r1, r1, #0x00000001
- str r1, [r0, #MDCNFG]
-
- /* Load something to activate bank */
- ldr r2, MEM_START
-.rept 8
- ldr r1, [r2]
-.endr
-
- /* MDCNFG */
- ldr r1, mdcnfg
- orr r1, r1, #0x00000001
- str r1, [r0, #MDCNFG]
-
- /* everything is fine now */
- mov pc, lr
diff --git a/board/dnp1110/u-boot.lds b/board/dnp1110/u-boot.lds
deleted file mode 100644
index 258bece23c..0000000000
--- a/board/dnp1110/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/sa1100/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/eltec/bab7xx/Makefile b/board/eltec/bab7xx/Makefile
deleted file mode 100644
index f4b0b07d96..0000000000
--- a/board/eltec/bab7xx/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o pci.o misc.o el_srom.o dc_srom.o l2cache.o
-
-SOBJS = asm_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/eltec/bab7xx/asm_init.S b/board/eltec/bab7xx/asm_init.S
deleted file mode 100644
index 2a9b33e12c..0000000000
--- a/board/eltec/bab7xx/asm_init.S
+++ /dev/null
@@ -1,1476 +0,0 @@
-/*
- * (C) Copyright 2001 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.de>
- *
- * ELTEC BAB PPC RAM initialization
- *
- * 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 <config.h>
-#include <asm/processor.h>
-#include <74xx_7xx.h>
-#include <mpc106.h>
-#include <version.h>
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-/*
- * This following contains the entry code for the initialization code
- * for the MPC 106, a PCI Bridge/Memory Controller.
- * Register usage:
- * r0 = ramtest scratch register, toggleError loop counter
- * r1 = 0xfec0 0cf8 CONFIG_ADDRESS
- * r2 = 0xfee0 0cfc CONFIG_DATA
- * r3 = scratch register, subroutine argument and return value, ramtest size
- * r4 = scratch register, spdRead clock mask, OutHex loop count
- * r5 = ramtest scratch register
- * r6 = toggleError 1st value, spdRead port mask
- * r7 = toggleError 2nd value, ramtest scratch register,
- * spdRead scratch register (0x00)
- * r8 = ramtest scratch register, spdRead scratch register (0x80)
- * r9 = ramtest scratch register, toggleError loop end, OutHex digit
- * r10 = ramtest scratch register, spdWriteByte parameter,
- * spdReadByte return value, printf pointer to COM1
- * r11 = startType
- * r12 = ramtest scratch register, spdRead data mask
- * r13 = pointer to message block
- * r14 = pointer to GOT
- * r15 = scratch register, SPD save
- * r16 = bank0 size, total memory size
- * r17 = bank1 size
- * r18 = bank2 size
- * r19 = bank3 size
- * r20 = MCCR1, MSAR1
- * r21 = MCCR3, MEAR1
- * r22 = MCCR4, MBER
- * r23 = EMSAR1
- * r24 = EMEAR1
- * r25 = save link register 1st level
- * r26 = save link register 2nd level
- * r27 = save link register 3rd level
- * r30 = pointer to GPIO for spdRead
- */
-
-
-.globl board_asm_init
-board_asm_init:
-/*
- * setup pointer to message block
- */
- mflr r25 /* save away link register */
- bl get_lnk_reg /* r3=addr of next instruction */
- subi r4, r3, 8 /* r4=board_asm_init addr */
- addi r13, r4, (MessageBlock-board_asm_init)
-/*
- * dcache_disable
- */
- mfspr r3, HID0
- li r4, HID0_DCE
- andc r3, r3, r4
- mr r2, r3
- ori r3, r3, HID0_DCI
- sync
- mtspr HID0, r3
- mtspr HID0, r2
- isync
- sync
-/*
- * icache_disable
- */
- mfspr r3, HID0
- li r4, 0
- ori r4, r4, HID0_ICE
- andc r3, r3, r4
- sync
- mtspr HID0, r3
-/*
- * invalidate caches
- */
- ori r3, r3, (HID0_ICE | HID0_ICFI | HID0_DCI | HID0_DCE)
- or r4, r4, r3
- isync
- mtspr HID0, r4
- andc r4, r4, r3
- isync
- mtspr HID0, r4
- isync
-/*
- * icache_enable
- */
- mfspr r3, HID0
- ori r3, r3, (HID0_ICE | HID0_ICFI)
- sync
- mtspr HID0, r3
-
- lis r1, 0xfec0
- ori r1, r1, 0x0cf8
- lis r2, 0xfee0
- ori r2, r2, 0xcfc
-
-#ifdef CFG_ADDRESS_MAP_A
-/*
- * Switch to address map A if necessary.
- */
- lis r3, MPC106_REG@h
- ori r3, r3, PCI_PICR1
- stwbrx r3, 0, r1
- sync
- lwbrx r4, 0, r2
- sync
- lis r0, PICR1_XIO_MODE@h
- ori r0, r0, PICR1_XIO_MODE@l
- andc r4, r4, r0
- lis r0, PICR1_ADDRESS_MAP@h
- ori r0, r0, PICR1_ADDRESS_MAP@l
- or r4, r4, r0
- stwbrx r4, 0, r2
- sync
-#endif
-
-/*
- * Do the init for the SIO.
- */
- bl .sioInit
-
- addi r3, r13, (MinitLogo-MessageBlock)
- bl Printf
-
- addi r3, r13, (Mspd01-MessageBlock)
- bl Printf
-/*
- * Memory cofiguration using SPD information stored on the SODIMMs
- */
- li r17, 0
- li r18, 0
- li r19, 0
-
- li r3, 0x0002 /* get RAM type from spd for bank0/1 */
- bl spdRead
-
- cmpi 0, 0, r3, -1 /* error ? */
- bne noSpdError
-
- addi r3, r13, (Mfail-MessageBlock)
- bl Printf
-
- li r6, 0xe0 /* error codes in r6 and r7 */
- li r7, 0x00
- b toggleError /* fail - loop forever */
-
-noSpdError:
- mr r15, r3 /* save r3 */
-
- addi r3, r13, (Mok-MessageBlock)
- bl Printf
-
- cmpli 0, 0, r15, 0x0001 /* FPM ? */
- beq configFPM
- cmpli 0, 0, r15, 0x0002 /* EDO ? */
- beq configEDO
- cmpli 0, 0, r15, 0x0004 /* SDRAM ? */
- beq configSDRAM
-
- li r6, 0xe0 /* error codes in r6 and r7 */
- li r7, 0x01
- b toggleError /* fail - loop forever */
-
-configSDRAM:
- addi r3, r13, (MsdRam-MessageBlock)
- bl Printf
-/*
- * set the Memory Configuration Reg. 1
- */
- li r3, 0x001f /* get bank size from spd bank0/1 */
- bl spdRead
-
- andi. r3, r3, 0x0038
- beq SD16MB2B
-
- li r3, 0x0011 /* get number of internal banks */
- /* from spd for bank0/1 */
- bl spdRead
-
- cmpli 0, 0, r3, 0x02
- beq SD64MB2B
-
- cmpli 0, 0, r3, 0x04
- beq SD64MB4B
-
- li r6, 0xe0 /* error codes in r6 and r7 */
- li r7, 0x02
- b toggleError /* fail - loop forever */
-
-SD64MB2B:
- li r20, 0x0005 /* 64-Mbit SDRAM 2 banks */
- b SDRow2nd
-
-SD64MB4B:
- li r20, 0x0000 /* 64-Mbit SDRAM 4 banks */
- b SDRow2nd
-
-SD16MB2B:
- li r20, 0x000f /* 16-Mbit SDRAM 2 banks */
-
-SDRow2nd:
- li r3, 0x0102 /* get RAM type spd for bank2/3 */
- bl spdRead
-
- cmpli 0, 0, r3, 0x0004
- bne S2D64MB4B /* bank2/3 isn't present or no SDRAM */
-
- li r3, 0x011f /* get bank size from spd bank2/3 */
- bl spdRead
-
- andi. r3, r3, 0x0038
- beq S2D16MB2B
-/*
- * set the Memory Configuration Reg. 2
- */
- li r3, 0x0111 /* get number of internal banks */
- /* from spd for bank2/3 */
- bl spdRead
-
- cmpli 0, 0, r3, 0x02
- beq S2D64MB2B
-
- cmpli 0, 0, r3, 0x04
- beq S2D64MB4B
-
- li r6, 0xe0 /* error codes in r6 and r7 */
- li r7, 0x03
- b toggleError /* fail - loop forever */
-
-S2D64MB2B:
- ori r20, r20, 0x0050 /* 64-Mbit SDRAM 2 banks */
- b S2D64MB4B
-
-S2D16MB2B:
- ori r20, r20, 0x00f0 /* 16-Mbit SDRAM 2 banks */
-
-/*
- * set the Memory Configuration Reg. 3
- */
-S2D64MB4B:
- lis r21, 0x8630 /* BSTOPRE = 0x80, REFREC = 6, */
- /* RDLAT = 3 */
-
-/*
- * set the Memory Configuration Reg. 4
- */
- lis r22, 0x2430 /* PRETOACT = 2, ACTOPRE = 4, */
- /* WCBUF = 1, RCBUF = 1 */
- ori r22, r22, 0x2220 /* SDMODE = 0x022, ACTORW = 2 */
-
-/*
- * get the size of bank 0-3
- */
- li r3, 0x001f /* get bank size from spd bank0/1 */
- bl spdRead
-
- rlwinm r16, r3, 2, 24, 29 /* calculate size in MByte */
- /* (128 MB max.) */
-
- li r3, 0x0005 /* get number of banks from spd */
- /* for bank0/1 */
- bl spdRead
-
- cmpi 0, 0, r3, 2 /* 2 banks ? */
- bne SDRAMnobank1
-
- mr r17, r16
-
-SDRAMnobank1:
- addi r3, r13, (Mspd23-MessageBlock)
- bl Printf
-
- li r3, 0x0102 /* get RAM type spd for bank2/3 */
- bl spdRead
-
- cmpli 0, 0, r3, 0x0001 /* FPM ? */
- bne noFPM23 /* handle as EDO */
- addi r3, r13, (Mok-MessageBlock)
- bl Printf
- addi r3, r13, (MfpmRam-MessageBlock)
- bl Printf
- b configRAMcommon
-noFPM23:
- cmpli 0, 0, r3, 0x0002 /* EDO ? */
- bne noEDO23
- addi r3, r13, (Mok-MessageBlock)
- bl Printf
- addi r3, r13, (MedoRam-MessageBlock)
- bl Printf
- b configRAMcommon
-noEDO23:
- cmpli 0, 0, r3, 0x0004 /* SDRAM ? */
- bne noSDRAM23
- addi r3, r13, (Mok-MessageBlock)
- bl Printf
- addi r3, r13, (MsdRam-MessageBlock)
- bl Printf
- b configSDRAM23
-noSDRAM23:
- addi r3, r13, (Mna-MessageBlock)
- bl Printf
- b configRAMcommon /* bank2/3 isn't present or no SDRAM */
-
-configSDRAM23:
- li r3, 0x011f /* get bank size from spd bank2/3 */
- bl spdRead
-
- rlwinm r18, r3, 2, 24, 29 /* calculate size in MByte */
- /* (128 MB max.) */
-
- li r3, 0x0105 /* get number of banks from */
- /* spd bank0/1 */
- bl spdRead
-
- cmpi 0, 0, r3, 2 /* 2 banks ? */
- bne SDRAMnobank3
-
- mr r19, r18
-
-SDRAMnobank3:
- b configRAMcommon
-
-configFPM:
- addi r3, r13, (MfpmRam-MessageBlock)
- bl Printf
- b configEDO0
-/*
- * set the Memory Configuration Reg. 1
- */
-configEDO:
- addi r3, r13, (MedoRam-MessageBlock)
- bl Printf
-configEDO0:
- lis r20, MCCR1_TYPE_EDO@h
-
-getSpdRowBank01:
- li r3, 0x0003 /* get number of row bits from */
- /* spd from bank0/1 */
- bl spdRead
- ori r20, r20, (MCCR1_BK0_9BITS | MCCR1_BK1_9BITS)
- cmpli 0, 0, r3, 0x0009 /* bank0 - 9 row bits */
- beq getSpdRowBank23
-
- ori r20, r20, (MCCR1_BK0_10BITS | MCCR1_BK1_10BITS)
- cmpli 0, 0, r3, 0x000a /* bank0 - 10 row bits */
- beq getSpdRowBank23
-
- ori r20, r20, (MCCR1_BK0_11BITS | MCCR1_BK1_11BITS)
- cmpli 0, 0, r3, 0x000b /* bank0 - 11 row bits */
- beq getSpdRowBank23
-
- ori r20, r20, (MCCR1_BK0_12BITS | MCCR1_BK1_12BITS)
- cmpli 0, 0, r3, 0x000c /* bank0 - 12 row bits */
- beq getSpdRowBank23
-
- cmpli 0, 0, r3, 0x000d /* bank0 - 13 row bits */
- beq getSpdRowBank23
-
- li r6, 0xe0 /* error codes in r6 and r7 */
- li r7, 0x10
- b toggleError /* fail - loop forever */
-
-getSpdRowBank23:
- li r3, 0x0103 /* get number of row bits from */
- /* spd for bank2/3 */
- bl spdRead
-
- ori r20, r20, (MCCR1_BK2_9BITS | MCCR1_BK3_9BITS)
- cmpli 0, 0, r3, 0x0009 /* bank0 - 9 row bits */
- beq writeRowBits
-
- ori r20, r20, (MCCR1_BK2_10BITS | MCCR1_BK3_10BITS)
- cmpli 0, 0, r3, 0x000a /* bank0 - 10 row bits */
- beq writeRowBits
-
- ori r20, r20, (MCCR1_BK2_11BITS | MCCR1_BK3_11BITS)
- cmpli 0, 0, r3, 0x000b /* bank0 - 11 row bits */
- beq writeRowBits
-
- ori r20, r20, (MCCR1_BK2_12BITS | MCCR1_BK3_12BITS)
-
-/*
- * set the Memory Configuration Reg. 3
- */
-writeRowBits:
- lis r21, 0x000a /* CPX = 1, RAS6P = 4 */
- ori r21, r21, 0x2293 /* CAS5 = 2, CP4 = 1, */
- /* CAS3 = 2, RCD2 = 2, RP = 3 */
-/*
- * set the Memory Configuration Reg. 4
- */
- lis r22, 0x0010 /* all SDRAM parameter 0, */
- /* WCBUF flow through, */
- /* RCBUF registered */
-/*
- * get the size of bank 0-3
- */
- li r3, 0x0003 /* get row bits from spd bank0/1 */
- bl spdRead
-
- li r16, 0 /* bank size is: */
- /* (8*2^row*2^column)/0x100000 MB */
- ori r16, r16, 0x8000
- rlwnm r16, r16, r3, 0, 31
-
- li r3, 0x0004 /* get column bits from spd bank0/1 */
- bl spdRead
-
- rlwnm r16, r16, r3, 0, 31
-
- li r3, 0x0005 /* get number of banks from */
- /* spd for bank0/1 */
- bl spdRead
-
- cmpi 0, 0, r3, 2 /* 2 banks ? */
- bne EDOnobank1
-
- mr r17, r16
-
-EDOnobank1:
- addi r3, r13, (Mspd23-MessageBlock)
- bl Printf
-
- li r3, 0x0102 /* get RAM type spd for bank2/3 */
- bl spdRead
-
- cmpli 0, 0, r3, 0x0001 /* FPM ? */
- bne noFPM231 /* handle as EDO */
- addi r3, r13, (Mok-MessageBlock)
- bl Printf
- addi r3, r13, (MfpmRam-MessageBlock)
- bl Printf
- b EDObank2
-noFPM231:
- cmpli 0, 0, r3, 0x0002 /* EDO ? */
- bne noEDO231
- addi r3, r13, (Mok-MessageBlock)
- bl Printf
- addi r3, r13, (MedoRam-MessageBlock)
- bl Printf
- b EDObank2
-noEDO231:
- cmpli 0, 0, r3, 0x0004 /* SDRAM ? */
- bne noSDRAM231
- addi r3, r13, (Mok-MessageBlock)
- bl Printf
- addi r3, r13, (MsdRam-MessageBlock)
- bl Printf
- b configRAMcommon
-noSDRAM231:
- addi r3, r13, (Mfail-MessageBlock)
- bl Printf
- b configRAMcommon /* bank2/3 isn't present or no SDRAM */
-
-EDObank2:
- li r3, 0x0103 /* get row bits from spd for bank2/3 */
- bl spdRead
-
- li r18, 0 /* bank size is: */
- /* (8*2^row*2^column)/0x100000 MB */
- ori r18, r18, 0x8000
- rlwnm r18, r18, r3, 0, 31
-
- li r3, 0x0104 /* get column bits from spd bank2/3 */
- bl spdRead
-
- rlwnm r18, r18, r3, 0, 31
-
- li r3, 0x0105 /* get number of banks from */
- /* spd for bank2/3 */
- bl spdRead
-
- cmpi 0, 0, r3, 2 /* 2 banks ? */
- bne configRAMcommon
-
- mr r19, r18
-
-configRAMcommon:
- lis r1, MPC106_REG_ADDR@h
- ori r1, r1, MPC106_REG_ADDR@l
- lis r2, MPC106_REG_DATA@h
- ori r2, r2, MPC106_REG_DATA@l
-
- li r0, 0
-
-/*
- * If we are already running in RAM (debug mode), we should
- * NOT reset the MEMGO flag. Otherwise we will stop all memory
- * accesses.
- */
-#ifdef IN_RAM
- lis r4, MCCR1_MEMGO@h
- ori r4, r4, MCCR1_MEMGO@l
- or r20, r20, r4
-#endif
-
-/*
- * set the Memory Configuration Reg. 1
- */
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_MCCR1 /* register number 0xf0 */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
- stwbrx r20, r0, r2 /* write data to CONFIG_DATA */
-/*
- * set the Memory Configuration Reg. 3
- */
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_MCCR3 /* register number 0xf8 */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
- stwbrx r21, r0, r2 /* write data to CONFIG_DATA */
-/*
- * set the Memory Configuration Reg. 4
- */
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_MCCR4 /* register number 0xfc */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
- stwbrx r22, r0, r2 /* write data to CONFIG_DATA */
-/*
- * set the memory boundary registers for bank 0-3
- */
- li r20, 0
- li r23, 0
- li r24, 0
- subi r21, r16, 1 /* calculate end address bank0 */
- li r22, (MBER_BANK0)
-
- cmpi 0, 0, r17, 0 /* bank1 present ? */
- beq nobank1
-
- rlwinm r3, r16, 8, 16, 23 /* calculate start address of bank1 */
- or r20, r20, r3
- add r16, r16, r17 /* add to total memory size */
- subi r3, r16, 1 /* calculate end address of bank1 */
- rlwinm r3, r3, 8, 16, 23
- or r21, r21, r3
- ori r22, r22, (MBER_BANK1) /* enable bank1 */
- b bank2
-
-nobank1:
- ori r23, r23, 0x0300 /* set bank1 start to unused area */
- ori r24, r24, 0x0300 /* set bank1 end to unused area */
-
-bank2:
- cmpi 0, 0, r18, 0 /* bank2 present ? */
- beq nobank2
-
- andi. r3, r16, 0x00ff /* calculate start address of bank2 */
- andi. r4, r16, 0x0300
- rlwinm r3, r3, 16, 8, 15
- or r20, r20, r3
- rlwinm r3, r4, 8, 8, 15
- or r23, r23, r3
- add r16, r16, r18 /* add to total memory size */
- subi r3, r16, 1 /* calculate end address of bank2 */
- andi. r4, r3, 0x0300
- andi. r3, r3, 0x00ff
- rlwinm r3, r3, 16, 8, 15
- or r21, r21, r3
- rlwinm r3, r4, 8, 8, 15
- or r24, r24, r3
- ori r22, r22, (MBER_BANK2) /* enable bank2 */
- b bank3
-
-nobank2:
- lis r3, 0x0003
- or r23, r23, r3 /* set bank2 start to unused area */
- or r24, r24, r3 /* set bank2 end to unused area */
-
-bank3:
- cmpi 0, 0, r19, 0 /* bank3 present ? */
- beq nobank3
-
- andi. r3, r16, 0x00ff /* calculate start address of bank3 */
- andi. r4, r16, 0x0300
- rlwinm r3, r3, 24, 0, 7
- or r20, r20, r3
- rlwinm r3, r4, 16, 0, 7
- or r23, r23, r3
- add r16, r16, r19 /* add to total memory size */
- subi r3, r16, 1 /* calculate end address of bank3 */
- andi. r4, r3, 0x0300
- andi. r3, r3, 0x00ff
- rlwinm r3, r3, 24, 0, 7
- or r21, r21, r3
- rlwinm r3, r4, 16, 0, 7
- or r24, r24, r3
- ori r22, r22, (MBER_BANK3) /* enable bank3 */
- b writebound
-
-nobank3:
- lis r3, 0x0300
- or r23, r23, r3 /* set bank3 start to unused area */
- or r24, r24, r3 /* set bank3 end to unused area */
-
-writebound:
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_MSAR1 /* register number 0x80 */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
- stwbrx r20, r0, r2 /* write data to CONFIG_DATA */
-
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_MEAR1 /* register number 0x90 */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
- stwbrx r21, r0, r2 /* write data to CONFIG_DATA */
-
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_EMSAR1 /* register number 0x88 */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
- stwbrx r23, r0, r2 /* write data to CONFIG_DATA */
-
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_EMEAR1 /* register number 0x98 */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
- stwbrx r24, r0, r2 /* write data to CONFIG_DATA */
-
-/*
- * set boundaries of unused banks to unused address space
- */
- lis r4, 0x0303
- ori r4, r4, 0x0303 /* bank 4-7 start and end adresses */
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_EMSAR2 /* register number 0x8C */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
- stwbrx r4, r0, r2 /* write data to CONFIG_DATA */
-
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_EMEAR2 /* register number 0x9C */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
- stwbrx r4, r0, r2 /* write data to CONFIG_DATA */
-
-/*
- * set the Memory Configuration Reg. 2
- */
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_MCCR2 /* register number 0xf4 */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
-
- li r3, 0x000c /* get refresh from spd for bank0/1 */
- bl spdRead
-
- cmpi 0, 0, r3, -1 /* error ? */
- bne common1
-
- li r6, 0xe0 /* error codes in r6 and r7 */
- li r7, 0x20
- b toggleError /* fail - loop forever */
-
-common1:
- andi. r15, r3, 0x007f /* mask selfrefresh bit */
- li r3, 0x010c /* get refresh from spd for bank2/3 */
- bl spdRead
-
- cmpi 0, 0, r3, -1 /* error ? */
- beq common2
- andi. r3, r3, 0x007f /* mask selfrefresh bit */
- cmp 0, 0, r3, r15 /* find the lower */
- blt common3
-
-common2:
- mr r3, r15
-
-common3:
- li r4, 0x1010 /* refesh cycle 1028 clocks */
- /* left shifted 2 */
- cmpli 0, 0, r3, 0x0000 /* 15.6 us ? */
- beq writeRefresh
-
- li r4, 0x0808 /* refesh cycle 514 clocks */
- /* left shifted 2 */
- cmpli 0, 0, r3, 0x0002 /* 7.8 us ? */
- beq writeRefresh
-
- li r4, 0x2020 /* refesh cycle 2056 clocks */
- /* left shifted 2 */
- cmpli 0, 0, r3, 0x0003 /* 31.3 us ? */
- beq writeRefresh
-
- li r4, 0x4040 /* refesh cycle 4112 clocks */
- /* left shifted 2 */
- cmpli 0, 0, r3, 0x0004 /* 62.5 us ? */
- beq writeRefresh
-
- li r4, 0
- ori r4, r4, 0x8080 /* refesh cycle 8224 clocks */
- /* left shifted 2 */
- cmpli 0, 0, r3, 0x0005 /* 125 us ? */
- beq writeRefresh
-
- li r6, 0xe0 /* error codes in r6 and r7 */
- li r7, 0x21
- b toggleError /* fail - loop forever */
-
-writeRefresh:
- stwbrx r4, r0, r2 /* write data to CONFIG_DATA */
-
-/*
- * DRAM BANKS SHOULD BE ENABLED
- */
- addi r3, r13, (Mactivate-MessageBlock)
- bl Printf
- mr r3, r16
- bl OutDec
- addi r3, r13, (Mmbyte-MessageBlock)
- bl Printf
-
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_MBER /* register number 0xa0 */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
- stb r22, 0(r2) /* write data to CONFIG_DATA */
- li r8, 0x63 /* PGMAX = 99 */
- stb r8, 3(r2) /* write data to CONFIG_DATA */
-
-/*
- * DRAM SHOULD NOW BE CONFIGURED AND ENABLED
- * MUST WAIT 200us BEFORE ACCESSING
- */
- li r0, 0x7800
- mtctr r0
-
-wait200us:
- bdnz wait200us
-
- lis r3, MPC106_REG@h /* start building new reg number */
- ori r3, r3, MPC106_MCCR1 /* register number 0xf0 */
- stwbrx r3, r0, r1 /* write this value to CONFIG_ADDR */
- eieio /* make sure mem. access is complete */
-
- lwbrx r4, r0, r2 /* load r4 from CONFIG_DATA */
-
- lis r0, MCCR1_MEMGO@h /* MEMGO=1 */
- ori r0, r0, MCCR1_MEMGO@l
- or r4, r4, r0 /* set the MEMGO bit */
- stwbrx r4, r0, r2 /* write mdfd data to CONFIG_DATA */
-
- li r0, 0x7000
- mtctr r0
-
-wait8ref:
- bdnz wait8ref
-
- addi r3, r13, (Mok-MessageBlock)
- bl Printf
-
- mtlr r25
- blr
-
-/*
- * Infinite loop called in case of an error during RAM initialisation.
- * error codes in r6 and r7.
- */
-toggleError:
- li r0, 0
- lis r9, 127
- ori r9, r9, 65535
-toggleError1:
- addic r0, r0, 1
- cmpw cr1, r0, r9
- ble cr1, toggleError1
- li r0, 0
- lis r9, 127
- ori r9, r9, 65535
-toggleError2:
- addic r0, r0, 1
- cmpw cr1, r0, r9
- ble cr1, toggleError2
- b toggleError
-
-
-/******************************************************************************
- * This function performs a basic initialisation of the superio chip
- * to enable basic console output and SPD access during RAM initialisation.
- *
- * Upon completion, SIO resource registers are mapped as follows:
- * Resource Enabled Address
- * UART1 Yes 3F8-3FF COM1
- * UART2 Yes 2F8-2FF COM2
- * GPIO Yes 220-227
- */
-.set SIO_LUNINDEX, 0x07 /* SIO LUN index register */
-.set SIO_CNFG1, 0x21 /* SIO configuration #1 register */
-.set SIO_PCSCI, 0x23 /* SIO PCS configuration index reg */
-.set SIO_PCSCD, 0x24 /* SIO PCS configuration data reg */
-.set SIO_ACTIVATE, 0x30 /* SIO activate register */
-.set SIO_IOBASEHI, 0x60 /* SIO I/O port base address, 15:8 */
-.set SIO_IOBASELO, 0x61 /* SIO I/O port base address, 7:0 */
-.set SIO_LUNENABLE, 0x01 /* SIO LUN enable */
-
-.sioInit:
- mfspr r7, 8 /* save link register */
-
-.sioInit_87308:
-
-/*
- * Get base addr of ISA I/O space
- */
- lis r6, CFG_ISA_IO@h
- ori r6, r6, CFG_ISA_IO@l
-
-/*
- * Set offset to base address for config registers.
- */
-#if defined(CFG_NS87308_BADDR_0x)
- addi r4, r0, 0x0279
-#elif defined(CFG_NS87308_BADDR_10)
- addi r4, r0, 0x015C
-#elif defined(CFG_NS87308_BADDR_11)
- addi r4, r0, 0x002E
-#endif
- add r6, r6, r4 /* add offset to base */
- or r3, r6, r6 /* make a copy */
-
-/*
- * PMC (LUN 8)
- */
- addi r4, r0, SIO_LUNINDEX /* select PMC LUN */
- addi r5, r0, 0x8
- bl .sio_bw
- addi r4, r0, SIO_IOBASEHI /* initialize PMC address to 0x460 */
- addi r5, r0, 0x04
- bl .sio_bw
- addi r4, r0, SIO_IOBASELO
- addi r5, r0, 0x60
- bl .sio_bw
- addi r4, r0, SIO_ACTIVATE /* enable PMC */
- addi r5, r0, SIO_LUNENABLE
- bl .sio_bw
-
- lis r8, CFG_ISA_IO@h
- ori r8, r8, 0x0460
- li r9, 0x03
- stb r9, 0(r8) /* select PMC2 register */
- eieio
- li r9, 0x00
- stb r9, 1(r8) /* SuperI/O clock src: 24MHz via X1 */
- eieio
-
-/*
- * map UART1 (LUN 6) or UART2 (LUN 5) to COM1 (0x3F8)
- */
- addi r4, r0, SIO_LUNINDEX /* select COM1 LUN */
- addi r5, r0, 0x6
- bl .sio_bw
-
- addi r4, r0, SIO_IOBASEHI /* initialize COM1 address to 0x3F8 */
- addi r5, r0, 0x03
- bl .sio_bw
-
- addi r4, r0, SIO_IOBASELO
- addi r5, r0, 0xF8
- bl .sio_bw
-
- addi r4, r0, SIO_ACTIVATE /* enable COM1 */
- addi r5, r0, SIO_LUNENABLE
- bl .sio_bw
-
-/*
- * Init COM1 for polled output
- */
- lis r8, CFG_ISA_IO@h
- ori r8, r8, 0x03f8
- li r9, 0x00
- stb r9, 1(r8) /* int disabled */
- eieio
- li r9, 0x00
- stb r9, 4(r8) /* modem ctrl */
- eieio
- li r9, 0x80
- stb r9, 3(r8) /* link ctrl, bank select */
- eieio
- li r9, 115200/CONFIG_BAUDRATE
- stb r9, 0(r8) /* baud rate (LSB)*/
- eieio
- rotrwi r9, r9, 8
- stb r9, 1(r8) /* baud rate (MSB) */
- eieio
- li r9, 0x03
- stb r9, 3(r8) /* 8 data bits, 1 stop bit, */
- /* no parity */
- eieio
- li r9, 0x0b
- stb r9, 4(r8) /* enable the receiver and transmitter */
- eieio
-
-waitEmpty:
- lbz r9, 5(r8) /* transmit empty */
- andi. r9, r9, 0x40
- beq waitEmpty
- li r9, 0x47
- stb r9, 3(r8) /* send break, 8 data bits, */
- /* 2 stop bits, no parity */
- eieio
-
- lis r0, 0x0001
- mtctr r0
-
-waitCOM1:
- lwz r0, 5(r8) /* load from port for delay */
- bdnz waitCOM1
-
-waitEmpty1:
- lbz r9, 5(r8) /* transmit empty */
- andi. r9, r9, 0x40
- beq waitEmpty1
- li r9, 0x07
- stb r9, 3(r8) /* 8 data bits, 2 stop bits, */
- /* no parity */
- eieio
-
-/*
- * GPIO (LUN 7)
- */
- addi r4, r0, SIO_LUNINDEX /* select GPIO LUN */
- addi r5, r0, 0x7
- bl .sio_bw
-
- addi r4, r0, SIO_IOBASEHI /* initialize GPIO address to 0x220 */
- addi r5, r0, 0x02
- bl .sio_bw
-
- addi r4, r0, SIO_IOBASELO
- addi r5, r0, 0x20
- bl .sio_bw
-
- addi r4, r0, SIO_ACTIVATE /* enable GPIO */
- addi r5, r0, SIO_LUNENABLE
- bl .sio_bw
-
-.sioInit_done:
-
-/*
- * Get base addr of ISA I/O space
- */
- lis r3, CFG_ISA_IO@h
- ori r3, r3, CFG_ISA_IO@l
-
- addi r3, r3, 0x015C /* adjust to superI/O 87308 base */
- or r6, r3, r3 /* make a copy */
-/*
- * CS0
- */
- addi r4, r0, SIO_PCSCI /* select PCSCIR */
- addi r5, r0, 0x00
- bl .sio_bw
- addi r4, r0, SIO_PCSCD /* select PCSCDR */
- addi r5, r0, 0x00
- bl .sio_bw
- addi r4, r0, SIO_PCSCI /* select PCSCIR */
- addi r5, r0, 0x01
- bl .sio_bw
- addi r4, r0, SIO_PCSCD /* select PCSCDR */
- addi r5, r0, 0x76
- bl .sio_bw
- addi r4, r0, SIO_PCSCI /* select PCSCIR */
- addi r5, r0, 0x02
- bl .sio_bw
- addi r4, r0, SIO_PCSCD /* select PCSCDR */
- addi r5, r0, 0x40
- bl .sio_bw
-/*
- * CS1
- */
- addi r4, r0, SIO_PCSCI /* select PCSCIR */
- addi r5, r0, 0x05
- bl .sio_bw
- addi r4, r0, SIO_PCSCD /* select PCSCDR */
- addi r5, r0, 0x00
- bl .sio_bw
- addi r4, r0, SIO_PCSCI /* select PCSCIR */
- addi r5, r0, 0x05
- bl .sio_bw
- addi r4, r0, SIO_PCSCD /* select PCSCDR */
- addi r5, r0, 0x70
- bl .sio_bw
- addi r4, r0, SIO_PCSCI /* select PCSCIR */
- addi r5, r0, 0x06
- bl .sio_bw
- addi r4, r0, SIO_PCSCD /* select PCSCDR */
- addi r5, r0, 0x1C
- bl .sio_bw
-/*
- * CS2
- */
- addi r4, r0, SIO_PCSCI /* select PCSCIR */
- addi r5, r0, 0x08
- bl .sio_bw
- addi r4, r0, SIO_PCSCD /* select PCSCDR */
- addi r5, r0, 0x00
- bl .sio_bw
- addi r4, r0, SIO_PCSCI /* select PCSCIR */
- addi r5, r0, 0x09
- bl .sio_bw
- addi r4, r0, SIO_PCSCD /* select PCSCDR */
- addi r5, r0, 0x71
- bl .sio_bw
- addi r4, r0, SIO_PCSCI /* select PCSCIR */
- addi r5, r0, 0x0A
- bl .sio_bw
- addi r4, r0, SIO_PCSCD /* select PCSCDR */
- addi r5, r0, 0x1C
- bl .sio_bw
-
- mtspr 8, r7 /* restore link register */
- bclr 20, 0 /* return to caller */
-
-/*
- * this function writes a register to the SIO chip
- */
-.sio_bw:
- stb r4, 0(r3) /* write index register with register offset */
- eieio
- sync
- stb r5, 1(r3) /* 1st write */
- eieio
- sync
- stb r5, 1(r3) /* 2nd write */
- eieio
- sync
- bclr 20, 0 /* return to caller */
-/*
- * this function reads a register from the SIO chip
- */
-.sio_br:
- stb r4, 0(r3) /* write index register with register offset */
- eieio
- sync
- lbz r3, 1(r3) /* retrieve specified reg offset contents */
- eieio
- sync
- bclr 20, 0 /* return to caller */
-
-/*
- * Print a message to COM1 in polling mode
- * r10=COM1 port, r3=(char*)string
- */
-.globl Printf
-Printf:
- lis r10, CFG_ISA_IO@h /* COM1 port */
- ori r10, r10, 0x03f8
-
-WaitChr:
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, WaitChr /* wait till empty */
- lbzx r0, r0, r3 /* get char */
- stb r0, 0(r10) /* write to transmit reg */
- eieio
- addi r3, r3, 1 /* next char */
- lbzx r0, r0, r3 /* get char */
- cmpwi cr1, r0, 0 /* end of string ? */
- bne cr1, WaitChr
- blr
-
-/*
- * Print 8/4/2 digits hex value to COM1 in polling mode
- * r10=COM1 port, r3=val
- */
-OutHex2:
- li r9, 4 /* shift reg for 2 digits */
- b OHstart
-OutHex4:
- li r9, 12 /* shift reg for 4 digits */
- b OHstart
- .globl OutHex
-OutHex:
- li r9, 28 /* shift reg for 8 digits */
-OHstart:
- lis r10, CFG_ISA_IO@h /* COM1 port */
- ori r10, r10, 0x03f8
-OutDig:
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, OutDig
- sraw r0, r3, r9
- clrlwi r0, r0, 28
- cmpwi cr1, r0, 9
- ble cr1, digIsNum
- addic r0, r0, 55
- b nextDig
-digIsNum:
- addic r0, r0, 48
-nextDig:
- stb r0, 0(r10) /* write to transmit reg */
- eieio
- addic. r9, r9, -4
- bge OutDig
- blr
-/*
- * Print 3 digits hdec value to COM1 in polling mode
- * r10=COM1 port, r3=val, r7=x00, r8=x0, r9=x, r0, r6=scratch
- */
-.globl OutDec
-OutDec:
- li r6, 10
- divwu r0, r3, r6 /* r0 = r3 / 10, r9 = r3 mod 10 */
- mullw r10, r0, r6
- subf r9, r10, r3
-
- mr r3, r0
- divwu r0, r3, r6 /* r0 = r3 / 10, r8 = r3 mod 10 */
- mullw r10, r0, r6
- subf r8, r10, r3
-
- mr r3, r0
- divwu r0, r3, r6 /* r0 = r3 / 10, r7 = r3 mod 10 */
- mullw r10, r0, r6
- subf r7, r10, r3
-
- lis r10, CFG_ISA_IO@h /* COM1 port */
- ori r10, r10, 0x03f8
-
- or. r7, r7, r7
- bne noblank1
- li r3, 0x20
- b OutDec4
-
-noblank1:
- addi r3, r7, 48 /* convert to ASCII */
-
-OutDec4:
- lbz r0, 0(r13) /* slow down dummy read */
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, OutDec4
- stb r3, 0(r10) /* x00 to transmit */
- eieio
-
- or. r7, r7, r8
- beq OutDec5
-
- addi r3, r8, 48 /* convert to ASCII */
-OutDec5:
- lbz r0, 0(r13) /* slow down dummy read */
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, OutDec5
- stb r3, 0(r10) /* x0 to transmit */
- eieio
-
- addi r3, r9, 48 /* convert to ASCII */
-OutDec6:
- lbz r0, 0(r13) /* slow down dummy read */
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, OutDec6
- stb r3, 0(r10) /* x to transmit */
- eieio
- blr
-/*
- * Print a char to COM1 in polling mode
- * r10=COM1 port, r3=char
- */
-.globl OutChr
-OutChr:
- lis r10, CFG_ISA_IO@h /* COM1 port */
- ori r10, r10, 0x03f8
-
-OutChr1:
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, OutChr1 /* wait till empty */
- stb r3, 0(r10) /* write to transmit reg */
- eieio
- blr
-/*
- * Input: r3 adr to read
- * Output: r3 val or -1 for error
- */
-spdRead:
- mfspr r26, 8 /* save link register */
-
- lis r30, CFG_ISA_IO@h
- ori r30, r30, 0x220 /* GPIO Port 1 */
- li r7, 0x00
- li r8, 0x100
- and. r5, r3, r8
- beq spdbank0
- li r12, 0x08
- li r4, 0x10
- li r6, 0x18
- b spdRead1
-
-spdbank0:
- li r12, 0x20 /* set I2C data */
- li r4, 0x40 /* set I2C clock */
- li r6, 0x60 /* set I2C clock and data */
-
-spdRead1:
- li r8, 0x80
-
- bl spdStart /* access I2C bus as master */
- li r10, 0xa0 /* write to SPD */
- bl spdWriteByte
- bl spdReadAck /* ACK returns in r10 */
- cmpw cr0, r10, r7
- bne AckErr /* r10 must be 0, if ACK received */
- mr r10, r3 /* adr to read */
- bl spdWriteByte
- bl spdReadAck
- cmpw cr0, r10, r7
- bne AckErr
- bl spdStart
- li r10, 0xa1 /* read from SPD */
- bl spdWriteByte
- bl spdReadAck
- cmpw cr0, r10, r7
- bne AckErr
- bl spdReadByte /* return val in r10 */
- bl spdWriteAck
- bl spdStop /* release I2C bus */
- mr r3, r10
- mtspr 8, r26 /* restore link register */
- blr
-/*
- * ACK error occurred
- */
-AckErr:
- bl spdStop
- orc r3, r0, r0 /* return -1 */
- mtspr 8, r26 /* restore link register */
- blr
-
-/*
- * Routines to read from RAM spd.
- * r30 - GPIO Port1 address in all cases.
- * r4 - clock mask for SPD
- * r6 - port mask for SPD
- * r12 - data mask for SPD
- */
-waitSpd:
- li r0, 0x1000
- mtctr r0
-wSpd:
- bdnz wSpd
- bclr 20, 0 /* return to caller */
-
-/*
- * establish START condition on I2C bus
- */
-spdStart:
- mfspr r27, 8 /* save link register */
- stb r6, 0(r30) /* set SDA and SCL */
- eieio
- stb r6, 1(r30) /* switch GPIO to output */
- eieio
- bl waitSpd
- stb r4, 0(r30) /* reset SDA */
- eieio
- bl waitSpd
- stb r7, 0(r30) /* reset SCL */
- eieio
- bl waitSpd
- mtspr 8, r27
- bclr 20, 0 /* return to caller */
-
-/*
- * establish STOP condition on I2C bus
- */
-spdStop:
- mfspr r27, 8 /* save link register */
- stb r7, 0(r30) /* reset SCL and SDA */
- eieio
- stb r6, 1(r30) /* switch GPIO to output */
- eieio
- bl waitSpd
- stb r4, 0(r30) /* set SCL */
- eieio
- bl waitSpd
- stb r6, 0(r30) /* set SDA and SCL */
- eieio
- bl waitSpd
- stb r7, 1(r30) /* switch GPIO to input */
- eieio
- mtspr 8, r27
- bclr 20, 0 /* return to caller */
-
-spdReadByte:
- mfspr r27, 8
- stb r4, 1(r30) /* set GPIO for SCL output */
- eieio
- li r9, 0x08
- li r10, 0x00
-loopRB:
- stb r7, 0(r30) /* reset SDA and SCL */
- eieio
- bl waitSpd
- stb r4, 0(r30) /* set SCL */
- eieio
- bl waitSpd
- lbz r5, 0(r30) /* read from GPIO Port1 */
- rlwinm r10, r10, 1, 0, 31
- and. r5, r5, r12
- beq clearBit
- ori r10, r10, 0x01 /* append _1_ */
-clearBit:
- stb r7, 0(r30) /* reset SCL */
- eieio
- bl waitSpd
- addic. r9, r9, -1
- bne loopRB
- mtspr 8, r27
- bclr 20, 0 /* return (r10) to caller */
-
-/*
- * spdWriteByte writes bits 24 - 31 of r10 to I2C.
- * r8 contains bit mask 0x80
- */
-spdWriteByte:
- mfspr r27, 8 /* save link register */
- li r9, 0x08 /* write octet */
- and. r5, r10, r8
- bne sWB1
- stb r7, 0(r30) /* set SDA to _0_ */
- eieio
- b sWB2
-sWB1:
- stb r12, 0(r30) /* set SDA to _1_ */
- eieio
-sWB2:
- stb r6, 1(r30) /* set GPIO to output */
- eieio
-loopWB:
- and. r5, r10, r8
- bne sWB3
- stb r7, 0(r30) /* set SDA to _0_ */
- eieio
- b sWB4
-sWB3:
- stb r12, 0(r30) /* set SDA to _1_ */
- eieio
-sWB4:
- bl waitSpd
- and. r5, r10, r8
- bne sWB5
- stb r4, 0(r30) /* set SDA to _0_ and SCL */
- eieio
- b sWB6
-sWB5:
- stb r6, 0(r30) /* set SDA to _1_ and SCL */
- eieio
-sWB6:
- bl waitSpd
- and. r5, r10, r8
- bne sWB7
- stb r7, 0(r30) /* set SDA to _0_ and reset SCL */
- eieio
- b sWB8
-sWB7:
- stb r12, 0(r30) /* set SDA to _1_ and reset SCL */
- eieio
-sWB8:
- bl waitSpd
- rlwinm r10, r10, 1, 0, 31 /* next bit */
- addic. r9, r9, -1
- bne loopWB
- mtspr 8, r27
- bclr 20, 0 /* return to caller */
-
-/*
- * Read ACK from SPD, return value in r10
- */
-spdReadAck:
- mfspr r27, 8 /* save link register */
- stb r4, 1(r30) /* set GPIO to output */
- eieio
- stb r7, 0(r30) /* reset SDA and SCL */
- eieio
- bl waitSpd
- stb r4, 0(r30) /* set SCL */
- eieio
- bl waitSpd
- lbz r10, 0(r30) /* read GPIO Port 1 and mask SDA */
- and r10, r10, r12
- bl waitSpd
- stb r7, 0(r30) /* reset SDA and SCL */
- eieio
- bl waitSpd
- mtspr 8, r27
- bclr 20, 0 /* return (r10) to caller */
-
-spdWriteAck:
- mfspr r27, 8
- stb r12, 0(r30) /* set SCL */
- eieio
- stb r6, 1(r30) /* set GPIO to output */
- eieio
- bl waitSpd
- stb r6, 0(r30) /* SDA and SCL */
- eieio
- bl waitSpd
- stb r12, 0(r30) /* reset SCL */
- eieio
- bl waitSpd
- mtspr 8, r27
- bclr 20, 0 /* return to caller */
-
-get_lnk_reg:
- mflr r3 /* return link reg */
- blr
-
-/*
- * Messages for console output
- */
-.globl MessageBlock
-MessageBlock:
-Mok:
- .ascii "OK\015\012\000"
-Mfail:
- .ascii "FAILED\015\012\000"
-Mna:
- .ascii "NA\015\012\000"
-MinitLogo:
- .ascii "\015\012*** ELTEC Elektronik, Mainz ***\015\012"
- .ascii "\015\012Initialising RAM\015\012\000"
-Mspd01:
- .ascii " Reading SPD of bank0/1 ..... \000"
-Mspd23:
- .ascii " Reading SPD of bank2/3 ..... \000"
-MfpmRam:
- .ascii " RAM-Type: FPM \015\012\000"
-MedoRam:
- .ascii " RAM-Type: EDO \015\012\000"
-MsdRam:
- .ascii " RAM-Type: SDRAM \015\012\000"
-Mactivate:
- .ascii " Activating \000"
-Mmbyte:
- .ascii " MB .......... \000"
- .align 4
diff --git a/board/eltec/bab7xx/bab7xx.c b/board/eltec/bab7xx/bab7xx.c
deleted file mode 100644
index 555475e4d9..0000000000
--- a/board/eltec/bab7xx/bab7xx.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * (C) Copyright 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Andreas Heppel <aheppel@sysgo.de>
- * (C) Copyright 2001 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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 <common.h>
-#include <command.h>
-#include <mpc106.h>
-#include <mk48t59.h>
-#include <74xx_7xx.h>
-#include <ns87308.h>
-#include <video_fb.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*---------------------------------------------------------------------------*/
-/*
- * Get Bus clock frequency
- */
-ulong bab7xx_get_bus_freq (void)
-{
- /*
- * The GPIO Port 1 on BAB7xx reflects the bus speed.
- */
- volatile struct GPIO *gpio =
- (struct GPIO *) (CFG_ISA_IO + CFG_NS87308_GPIO_BASE);
-
- unsigned char data = gpio->dta1;
-
- if (data & 0x02)
- return 66666666;
-
- return 83333333;
-}
-
-/*---------------------------------------------------------------------------*/
-
-/*
- * Measure CPU clock speed (core clock GCLK1) (Approx. GCLK frequency in Hz)
- */
-ulong bab7xx_get_gclk_freq (void)
-{
- static const int pllratio_to_factor[] = {
- 00, 75, 70, 00, 20, 65, 100, 45, 30, 55, 40, 50, 80, 60, 35,
- 00,
- };
-
- return pllratio_to_factor[get_hid1 () >> 28] *
- (bab7xx_get_bus_freq () / 10);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int checkcpu (void)
-{
- uint pvr = get_pvr ();
-
- printf ("MPC7xx V%d.%d", (pvr >> 8) & 0xFF, pvr & 0xFF);
- printf (" at %ld / %ld MHz\n", bab7xx_get_gclk_freq () / 1000000,
- bab7xx_get_bus_freq () / 1000000);
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int checkboard (void)
-{
-#ifdef CFG_ADDRESS_MAP_A
- puts ("Board: ELTEC BAB7xx PReP\n");
-#else
- puts ("Board: ELTEC BAB7xx CHRP\n");
-#endif
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int checkflash (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("2 MB ## Test not implemented yet ##\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-
-static unsigned int mpc106_read_cfg_dword (unsigned int reg)
-{
- unsigned int reg_addr = MPC106_REG | (reg & 0xFFFFFFFC);
-
- out32r (MPC106_REG_ADDR, reg_addr);
-
- return (in32r (MPC106_REG_DATA | (reg & 0x3)));
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int dram_size (int board_type)
-{
- /* No actual initialisation to do - done when setting up
- * PICRs MCCRs ME/SARs etc in ram_init.S.
- */
-
- register unsigned long i, msar1, mear1, memSize;
-
-#if defined(CFG_MEMTEST)
- register unsigned long reg;
-
- printf ("Testing DRAM\n");
-
- /* write each mem addr with it's address */
- for (reg = CFG_MEMTEST_START; reg < CFG_MEMTEST_END; reg += 4)
- *reg = reg;
-
- for (reg = CFG_MEMTEST_START; reg < CFG_MEMTEST_END; reg += 4) {
- if (*reg != reg)
- return -1;
- }
-#endif
-
- /*
- * Since MPC106 memory controller chip has already been set to
- * control all memory, just read and interpret its memory boundery register.
- */
- memSize = 0;
- msar1 = mpc106_read_cfg_dword (MPC106_MSAR1);
- mear1 = mpc106_read_cfg_dword (MPC106_MEAR1);
- i = mpc106_read_cfg_dword (MPC106_MBER) & 0xf;
-
- do {
- if (i & 0x01) /* is bank enabled ? */
- memSize += (mear1 & 0xff) - (msar1 & 0xff) + 1;
- msar1 >>= 8;
- mear1 >>= 8;
- i >>= 1;
- } while (i);
-
- return (memSize * 0x100000);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- return dram_size (board_type);
-}
-
-/* ------------------------------------------------------------------------- */
-
-void after_reloc (ulong dest_addr)
-{
- /*
- * Jump to the main U-Boot board init code
- */
- board_init_r ((gd_t *) gd, dest_addr);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * do_reset is done here because in this case it is board specific, since the
- * 7xx CPUs can only be reset by external HW (the RTC in this case).
- */
-void do_reset (cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc, char *argv[])
-{
-#if defined(CONFIG_RTC_MK48T59)
- /* trigger watchdog immediately */
- rtc_set_watchdog (1, RTC_WD_RB_16TH);
-#else
-#error "You must define the macro CONFIG_RTC_MK48T59."
-#endif
-}
-
-/* ------------------------------------------------------------------------- */
-
-#if defined(CONFIG_WATCHDOG)
-/*
- * Since the 7xx CPUs don't have an internal watchdog, this function is
- * board specific. We use the RTC here.
- */
-void watchdog_reset (void)
-{
-#if defined(CONFIG_RTC_MK48T59)
- /* we use a 32 sec watchdog timer */
- rtc_set_watchdog (8, RTC_WD_RB_4);
-#else
-#error "You must define the macro CONFIG_RTC_MK48T59."
-#endif
-}
-#endif /* CONFIG_WATCHDOG */
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef CONFIG_CONSOLE_EXTRA_INFO
-extern GraphicDevice smi;
-
-void video_get_info_str (int line_number, char *info)
-{
- /* init video info strings for graphic console */
- switch (line_number) {
- case 1:
- sprintf (info, " MPC7xx V%d.%d at %ld / %ld MHz",
- (get_pvr () >> 8) & 0xFF,
- get_pvr () & 0xFF,
- bab7xx_get_gclk_freq () / 1000000,
- bab7xx_get_bus_freq () / 1000000);
- return;
- case 2:
- sprintf (info,
- " ELTEC BAB7xx with %ld MB DRAM and %ld MB FLASH",
- dram_size (0) / 0x100000, flash_init () / 0x100000);
- return;
- case 3:
- sprintf (info, " %s", smi.modeIdent);
- return;
- }
-
- /* no more info lines */
- *info = 0;
- return;
-}
-#endif
-
-/*---------------------------------------------------------------------------*/
diff --git a/board/eltec/bab7xx/config.mk b/board/eltec/bab7xx/config.mk
deleted file mode 100644
index aa463c5dc1..0000000000
--- a/board/eltec/bab7xx/config.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# (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
-#
-
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/eltec/bab7xx/dc_srom.c b/board/eltec/bab7xx/dc_srom.c
deleted file mode 100644
index a44af6e0d0..0000000000
--- a/board/eltec/bab7xx/dc_srom.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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
- */
-
-/*
- * SRom I/O routines.
- */
-
-#include <common.h>
-#include <pci.h>
-#include "srom.h"
-
-#define SROM_RD 0x00004000 /* Read from Boot ROM */
-#define SROM_WR 0x00002000 /* Write to Boot ROM */
-#define SROM_SR 0x00000800 /* Select Serial ROM when set */
-
-#define DT_IN 0x00000004 /* Serial Data In */
-#define DT_CLK 0x00000002 /* Serial ROM Clock */
-#define DT_CS 0x00000001 /* Serial ROM Chip Select */
-
-static u_int dc_srom_iobase;
-
-/*----------------------------------------------------------------------------*/
-
-static int inl(u_long addr)
-{
- return le32_to_cpu(*(volatile u_long *)(addr));
-}
-
-/*----------------------------------------------------------------------------*/
-
-static void outl (int command, u_long addr)
-{
- *(volatile u_long *)(addr) = cpu_to_le32(command);
-}
-
-/*----------------------------------------------------------------------------*/
-
-static void sendto_srom(u_int command, u_long addr)
-{
- outl(command, addr);
- udelay(1);
-
- return;
-}
-
-/*----------------------------------------------------------------------------*/
-
-static int getfrom_srom(u_long addr)
-{
- s32 tmp;
-
- tmp = inl(addr);
- udelay(1);
-
- return tmp;
-}
-
-/*----------------------------------------------------------------------------*/
-
-static void srom_latch (u_int command, u_long addr)
-{
- sendto_srom (command, addr);
- sendto_srom (command | DT_CLK, addr);
- sendto_srom (command, addr);
-
- return;
-}
-
-/*----------------------------------------------------------------------------*/
-
-static void srom_command_rd (u_int command, u_long addr)
-{
- srom_latch (command, addr);
- srom_latch (command, addr);
- srom_latch ((command & 0x0000ff00) | DT_CS, addr);
-
- return;
-}
-
-/*----------------------------------------------------------------------------*/
-
-static void srom_command_wr (u_int command, u_long addr)
-{
- srom_latch (command, addr);
- srom_latch ((command & 0x0000ff00) | DT_CS, addr);
- srom_latch (command, addr);
-
- return;
-}
-
-/*----------------------------------------------------------------------------*/
-
-static void srom_address(u_int command, u_long addr, u_char offset)
-{
- int i;
- signed char a;
-
- a = (char)(offset << 2);
- for (i=0; i<6; i++, a <<= 1)
- {
- srom_latch(command | ((a < 0) ? DT_IN : 0), addr);
- }
- udelay(1);
-
- i = (getfrom_srom(addr) >> 3) & 0x01;
-
- return;
-}
-/*----------------------------------------------------------------------------*/
-
-static short srom_data_rd (u_int command, u_long addr)
-{
- int i;
- short word = 0;
- s32 tmp;
-
- for (i=0; i<16; i++)
- {
- sendto_srom(command | DT_CLK, addr);
- tmp = getfrom_srom(addr);
- sendto_srom(command, addr);
-
- word = (word << 1) | ((tmp >> 3) & 0x01);
- }
-
- sendto_srom(command & 0x0000ff00, addr);
-
- return word;
-}
-
-/*----------------------------------------------------------------------------*/
-
-static int srom_data_wr (u_int command, u_long addr, short val)
-{
- int i;
- u_long longVal;
- s32 tmp;
-
- longVal = (u_long)(le16_to_cpu(val));
-
- for (i=0; i<16; i++)
- {
- tmp = (longVal & 0x8000)>>13;
-
- sendto_srom (tmp | command, addr);
- sendto_srom (tmp | command | DT_CLK, addr);
- sendto_srom (tmp | command, addr);
-
- longVal = longVal<<1;
- }
-
- sendto_srom(command & 0x0000ff00, addr);
- sendto_srom(command, addr);
-
- tmp = 100;
- do
- {
- if ((getfrom_srom(dc_srom_iobase) & 0x8) == 0x8)
- break;
- udelay(1000);
- } while (--tmp);
-
- if (tmp == 0)
- {
- printf("Write DEC21143 SRom timed out !\n");
- return (-1);
- }
-
- return 0;
-}
-
-
-/*----------------------------------------------------------------------------*/
-static short srom_rd (u_long addr, u_char offset)
-{
- sendto_srom (SROM_RD | SROM_SR, addr);
- srom_latch (SROM_RD | SROM_SR | DT_CS, addr);
-
- srom_command_rd (SROM_RD | SROM_SR | DT_IN | DT_CS, addr);
-
- srom_address (SROM_RD | SROM_SR | DT_CS, addr, offset);
-
- return srom_data_rd (SROM_RD | SROM_SR | DT_CS, addr);
-}
-
-/*----------------------------------------------------------------------------*/
-
-static void srom_wr_enable (u_long addr)
-{
- int i;
-
- sendto_srom (SROM_WR | SROM_SR, addr);
- srom_latch (SROM_WR | SROM_SR | DT_CS, addr);
-
- srom_latch (SROM_WR | SROM_SR | DT_IN | DT_CS, addr);
- srom_latch (SROM_WR | SROM_SR | DT_CS, addr);
- srom_latch (SROM_WR | SROM_SR | DT_CS, addr);
-
- for (i=0; i<6; i++)
- {
- srom_latch (SROM_WR | SROM_SR | DT_IN | DT_CS, addr);
- }
-}
-
-/*----------------------------------------------------------------------------*/
-
-static int srom_wr (u_long addr, u_char offset, short val)
-{
- srom_wr_enable (addr);
-
- sendto_srom (SROM_WR | SROM_SR, addr);
- srom_latch (SROM_WR | SROM_SR | DT_CS, addr);
-
- srom_command_wr (SROM_WR | SROM_SR | DT_IN | DT_CS, addr);
-
- srom_address (SROM_WR | SROM_SR | DT_CS, addr, offset);
-
- return srom_data_wr (SROM_WR | SROM_SR | DT_CS, addr, val);
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * load data from the srom
- */
-int dc_srom_load (u_short *dest)
-{
- int offset;
- short tmp;
-
- /* get srom iobase from local network controller */
- pci_read_config_dword(PCI_BDF(0,14,0), PCI_BASE_ADDRESS_1, &dc_srom_iobase);
- dc_srom_iobase &= PCI_BASE_ADDRESS_MEM_MASK;
- dc_srom_iobase = pci_mem_to_phys(PCI_BDF(0,14,0), dc_srom_iobase);
- dc_srom_iobase += 0x48; /* io offset for srom access */
-
- memset (dest, 0, 128);
- for (offset=0; offset<64; offset++)
- {
- tmp = srom_rd (dc_srom_iobase, offset);
- *dest++ = le16_to_cpu(tmp);
- }
-
- return (0);
-}
-
-/*----------------------------------------------------------------------------*/
-
-/*
- * store data into the srom
- */
-int dc_srom_store (u_short *src)
-{
- int offset;
-
- /* get srom iobase from local network controller */
- pci_read_config_dword(PCI_BDF(0,14,0), PCI_BASE_ADDRESS_1, &dc_srom_iobase);
- dc_srom_iobase &= PCI_BASE_ADDRESS_MEM_MASK;
- dc_srom_iobase = pci_mem_to_phys(PCI_BDF(0,14,0), dc_srom_iobase);
- dc_srom_iobase += 0x48; /* io offset for srom access */
-
- for (offset=0; offset<64; offset++)
- {
- if (srom_wr (dc_srom_iobase, offset, *src) == -1)
- return (-1);
- src++;
- }
-
- return (0);
-}
-
-/*----------------------------------------------------------------------------*/
diff --git a/board/eltec/bab7xx/el_srom.c b/board/eltec/bab7xx/el_srom.c
deleted file mode 100644
index 73f8066e0d..0000000000
--- a/board/eltec/bab7xx/el_srom.c
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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 <common.h>
-#include "srom.h"
-
-/*----------------------------------------------------------------------------*/
-/*
- * START sequence
- * _ _________
- * SCLK _> \____
- * _ ____
- * SDIO _> \_________
- * : : :
- */
-static void eepStart (void)
-{
- out8(I2C_BUS_DAT, 0x60); /* SCLK = high SDIO = high */
- out8(I2C_BUS_DIR, 0x60); /* set output direction for SCLK/SDIO */
- udelay(10);
- out8(I2C_BUS_DAT, 0x40); /* SCLK = high SDIO = low */
- udelay(10);
- out8(I2C_BUS_DAT, 0x00); /* SCLK = low SDIO = low */
- udelay(10);
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * STOP sequence
- * _______
- * SCLK _____/
- * _ ___
- * SDIO _>_______/
- * : : :
- */
-static void eepStop (void)
-{
- out8(I2C_BUS_DAT, 0x00); /* SCLK = low SDIO = low */
- out8(I2C_BUS_DIR, 0x60); /* set output direction for SCLK/SDIO */
- udelay(10);
- out8(I2C_BUS_DAT, 0x40); /* SCLK = high SDIO = low */
- udelay(10);
- out8(I2C_BUS_DAT, 0x60); /* SCLK = high SDIO = high */
- udelay(10);
- out8(I2C_BUS_DIR, 0x00); /* reset to input direction */
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * Read one byte from EEPROM
- * ___ ___ ___ ___ ___ ___ ___ ___
- * SCLK ___/ \___/ \___/ \___/ \___/ \___/ \___/ \___/ \
- * _________________________________________________________________
- * SDIO > ^ ^ ^ ^ ^ ^ ^ ^
- * : : : : : : : : : : : : : : : : :
- */
-static unsigned char eepReadByte (void)
-{
- register unsigned char buf = 0x00;
- register int i;
-
- out8(I2C_BUS_DIR, 0x40);
-
- for (i = 0; i < 8; i++)
- {
- out8(I2C_BUS_DAT, 0x00); /* SCLK = low SDIO = high */
- udelay(10);
- out8(I2C_BUS_DAT, 0x40); /* SCLK = high SDIO = high */
- udelay(15);
- buf <<= 1;
- buf = (in8(I2C_BUS_DAT) & 0x20) ? (buf | 0x01) : (buf & 0xFE);
- out8(I2C_BUS_DAT, 0x00); /* SCLK = low SDIO = high */
- udelay(10);
- }
- return(buf);
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * Write one byte to EEPROM
- * ___ ___ ___ ___ ___ ___ ___ ___
- * SCLK __/ \___/ \___/ \___/ \___/ \___/ \___/ \___/ \__
- * _______ _______ _______ _______ _______ _______ _______ ________
- * SDIO X_______X_______X_______X_______X_______X_______X_______X________
- * : 7 : 6 : 5 : 4 : 3 : 2 : 1 : 0
- */
-static void eepWriteByte (register unsigned char buf)
-{
- register int i;
-
- (buf & 0x80) ? out8(I2C_BUS_DAT, 0x20) : out8(I2C_BUS_DAT, 0x00); /* SCLK = low SDIO = data */
- out8(I2C_BUS_DIR, 0x60);
-
- for (i = 7; i >= 0; i--)
- {
- (buf & 0x80) ? out8(I2C_BUS_DAT, 0x20) : out8(I2C_BUS_DAT, 0x00); /* SCLK=low SDIO=data */
- udelay(10);
- (buf & 0x80) ? out8(I2C_BUS_DAT, 0x60) : out8(I2C_BUS_DAT, 0x40); /* SCLK=high SDIO=data */
- udelay(15);
- (buf & 0x80) ? out8(I2C_BUS_DAT, 0x20) : out8(I2C_BUS_DAT, 0x00); /* SCLK=low SDIO=data */
- udelay(10);
- buf <<= 1;
- }
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * Read data acknowledge of EEPROM
- * _______
- * SCLK ____/ \___
- * _______________
- * SDIO >
- * : : ^ :
- */
-static int eepReadAck (void)
-{
- int retval;
-
- out8(I2C_BUS_DIR, 0x40);
- out8(I2C_BUS_DAT, 0x00); /* SCLK = low SDIO = high */
- udelay(10);
- out8(I2C_BUS_DAT, 0x40); /* SCLK = high SDIO = high */
- udelay(10);
- retval = (in8(I2C_BUS_DAT) & 0x20) ? ERROR : 0;
- udelay(10);
- out8(I2C_BUS_DAT, 0x00); /* SCLK = low SDIO = high */
- udelay(10);
-
- return(retval);
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * Write data acknowledge to EEPROM
- * _______
- * SCLK ____/ \___
- *
- * SDIO >_______________
- * : : :
- */
-static void eepWriteAck (unsigned char ack)
-{
- ack ? out8(I2C_BUS_DAT, 0x20) : out8(I2C_BUS_DAT, 0x00); /* SCLK = low SDIO = ack */
- out8(I2C_BUS_DIR, 0x60);
- udelay(10);
- ack ? out8(I2C_BUS_DAT, 0x60) : out8(I2C_BUS_DAT, 0x40); /* SCLK = high SDIO = ack */
- udelay(15);
- ack ? out8(I2C_BUS_DAT, 0x20) : out8(I2C_BUS_DAT, 0x00); /* SCLK = low SDIO = ack */
- udelay(10);
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * Read bytes from EEPROM
- */
-int el_srom_load (addr, buf, cnt, device, block)
-unsigned char addr;
-unsigned char *buf;
-int cnt;
-unsigned char device;
-unsigned char block;
-{
- register int i;
-
- for (i=0;i<cnt;i++)
- {
- eepStart();
- eepWriteByte(0xA0 | device | block);
- if (eepReadAck() == ERROR)
- {
- eepStop();
- return(ERROR);
- }
- eepWriteByte(addr++);
- if (eepReadAck() == ERROR)
- {
- eepStop();
- return(ERROR);
- }
- eepStart();
-
- eepWriteByte(0xA1 | device | block);
- if (eepReadAck() == ERROR)
- {
- eepStop();
- return(ERROR);
- }
-
- *buf++ = eepReadByte();
- eepWriteAck(1);
- eepStop();
-
- if ((addr == 0) && (i != (cnt-1))) /* is it the same block ? */
- {
- if (block == FIRST_BLOCK)
- block = SECOND_BLOCK;
- else
- return(ERROR);
- }
- }
- return(cnt);
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- *
- * Write bytes to EEPROM
- *
- */
-int el_srom_store (addr, buf, cnt, device, block)
-unsigned char addr, *buf, device, block;
-int cnt;
-{
- register int i, retVal;
-
- for (i=0;i<cnt;i++)
- {
- retVal = ERROR;
- do
- {
- eepStart();
- eepWriteByte(0xA0 | device | block);
- if ((retVal = eepReadAck()) == ERROR)
- eepStop();
- } while (retVal == ERROR);
-
- eepWriteByte(addr++);
- if (eepReadAck() == ERROR) return(ERROR);
-
- if ((addr == 0) && (i != (cnt-1))) /* is it the same block ? */
- {
- if (block == FIRST_BLOCK)
- block = SECOND_BLOCK;
- else
- return(ERROR);
- }
-
- eepWriteByte(*buf++);
- if (eepReadAck() == ERROR)
- return(ERROR);
-
- eepStop();
- }
- return(cnt);
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * calculate checksum for ELTEC revision srom
- */
-unsigned long el_srom_checksum (ptr, size)
-register unsigned char *ptr;
-unsigned long size;
-{
- u_long f, accu = 0;
- u_int i;
- u_char byte;
-
- for (; size; size--)
- {
- byte = *ptr++;
- for (i = 8; i; i--)
- {
- f = ((byte & 1) ^ (accu & 1)) ? 0x84083001 : 0;
- accu >>= 1; accu ^= f;
- byte >>= 1;
- }
- }
- return(accu);
-}
-
-/*----------------------------------------------------------------------------*/
diff --git a/board/eltec/bab7xx/flash.c b/board/eltec/bab7xx/flash.c
deleted file mode 100644
index 442dd00519..0000000000
--- a/board/eltec/bab7xx/flash.c
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- * (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
- */
-
-/*
- * 07-10-2002 Frank Gottschling: added 29F032 flash (ELPPC).
- * fixed monitor protection part
- *
- * 09-18-2001 Andreas Heppel: Reduced the code in here to the usage
- * of AMD's 29F040 and 29F016 flashes, since the BAB7xx does use
- * any other.
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/pci_io.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*flash command address offsets*/
-
-#define ADDR0 (0x555)
-#define ADDR1 (0x2AA)
-#define ADDR3 (0x001)
-
-#define FLASH_WORD_SIZE unsigned char
-
-/*----------------------------------------------------------------------------*/
-
-unsigned long flash_init (void)
-{
- unsigned long size1, size2;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i)
- {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* initialise 1st flash */
- size1 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN)
- {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size1, size1<<20);
- }
-
- /* initialise 2nd flash */
- size2 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- if (flash_info[1].flash_id == FLASH_UNKNOWN)
- {
- printf ("## Unknown FLASH on Bank 1 - Size = 0x%08lx = %ld MB\n",
- size2, size2<<20);
- }
-
- /* monitor protection ON by default */
- if (size1 == 512*1024)
- {
- (void)flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE0_PRELIM,
- FLASH_BASE0_PRELIM+monitor_flash_len-1,
- &flash_info[0]);
- }
- if (size2 == 512*1024)
- {
- (void)flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE1_PRELIM,
- FLASH_BASE1_PRELIM+monitor_flash_len-1,
- &flash_info[1]);
- }
- if (size2 == 4*1024*1024)
- {
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE+monitor_flash_len-1,
- &flash_info[1]);
- }
-
- return (size1 + size2);
-}
-
-/*----------------------------------------------------------------------------*/
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- flash_init();
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case AMD_ID_F040B:
- printf ("AM29F040B (4 Mbit)\n");
- break;
- case AMD_ID_F016D:
- printf ("AM29F016D (16 Mbit)\n");
- break;
- case AMD_ID_F032B:
- printf ("AM29F032B (32 Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size >= (1 << 20)) {
- printf (" Size: %ld MB in %d Sectors\n", info->size >> 20, info->sector_count);
- } else {
- printf (" Size: %ld kB in %d Sectors\n", info->size >> 10, info->sector_count);
- }
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
-
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++) {
- if (*flash++ != 0xffffffff) {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
-
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
- }
- printf ("\n");
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * The following code cannot be run from FLASH!
- */
-ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong vendor, devid;
- ulong base = (ulong)addr;
- volatile unsigned char *caddr = (unsigned char *)addr;
-
-#ifdef DEBUG
- printf("flash_get_size for address 0x%lx: \n", (unsigned long)caddr);
-#endif
-
- /* Write auto select command: read Manufacturer ID */
- caddr[0] = 0xF0; /* reset bank */
- udelay(10);
-
- eieio();
- caddr[0x555] = 0xAA;
- udelay(10);
- caddr[0x2AA] = 0x55;
- udelay(10);
- caddr[0x555] = 0x90;
-
- udelay(10);
-
- vendor = caddr[0];
- devid = caddr[1];
-
-#ifdef DEBUG
- printf("Manufacturer: 0x%lx\n", vendor);
-#endif
-
- vendor &= 0xff;
- devid &= 0xff;
-
- /* We accept only two AMD types */
- switch (vendor) {
- case (FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- switch (devid) {
- case (FLASH_WORD_SIZE)AMD_ID_F040B:
- info->flash_id |= AMD_ID_F040B;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_F016D:
- info->flash_id |= AMD_ID_F016D;
- info->sector_count = 32;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_F032B:
- info->flash_id |= AMD_ID_F032B;
- info->sector_count = 64;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
-#ifdef DEBUG
- printf("flash id 0x%lx; sector count 0x%x, size 0x%lx\n", info->flash_id, info->sector_count, info->size);
-#endif
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* sector base address */
- info->start[i] = base + i * (info->size / info->sector_count);
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- caddr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = caddr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- caddr = (volatile unsigned char *)info->start[0];
- caddr[0] = 0xF0; /* reset bank */
- }
-
- return (info->size);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
- int rc = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (FLASH_WORD_SIZE *)(info->start[sect]);
- if (info->flash_id & FLASH_MAN_SST) {
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[0] = (FLASH_WORD_SIZE)0x00500050; /* block erase */
- udelay(30000); /* wait 30 ms */
- }
- else
- addr[0] = (FLASH_WORD_SIZE)0x00300030; /* sector erase */
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (FLASH_WORD_SIZE *)(info->start[l_sect]);
- while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return rc;
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*----------------------------------------------------------------------------*/
-/* Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)(info->start[0]);
- volatile FLASH_WORD_SIZE *dest2 = (FLASH_WORD_SIZE *)dest;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
- ulong start;
- int flag;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile FLASH_WORD_SIZE *)dest) &
- (FLASH_WORD_SIZE)data) != (FLASH_WORD_SIZE)data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- for (i=0; i<4/sizeof(FLASH_WORD_SIZE); i++)
- {
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (FLASH_WORD_SIZE)0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-
-/*----------------------------------------------------------------------------*/
diff --git a/board/eltec/bab7xx/l2cache.c b/board/eltec/bab7xx/l2cache.c
deleted file mode 100644
index 1e7537745a..0000000000
--- a/board/eltec/bab7xx/l2cache.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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 <common.h>
-
-#if defined(CFG_L2_BAB7xx)
-
-#include <pci.h>
-#include <mpc106.h>
-#include <asm/processor.h>
-
-/* defines L2CR register for MPC750 */
-
-#define L2CR_E 0x80000000
-#define L2CR_256K 0x10000000
-#define L2CR_512K 0x20000000
-#define L2CR_1024K 0x30000000
-#define L2CR_I 0x00200000
-#define L2CR_SL 0x00008000
-#define L2CR_IP 0x00000001
-
-/*----------------------------------------------------------------------------*/
-
-static int dummy (int dummy)
-{
- return (dummy+1);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int l2_cache_enable (int l2control)
-{
- if (l2control) /* BAB750 */
- {
- mtspr(SPRN_L2CR, l2control);
- mtspr(SPRN_L2CR, (l2control | L2CR_I));
- while (mfspr(SPRN_L2CR) & L2CR_IP)
- ;
- mtspr(SPRN_L2CR, (l2control | L2CR_E));
- return (0);
- }
- else /* BAB740 */
- {
- int picr1, picr2, mask;
- int picr2CacheSize, cacheSize;
- int *d;
- int devbusfn;
- u32 reg32;
-
- devbusfn = pci_find_device(PCI_VENDOR_ID_MOTOROLA,
- PCI_DEVICE_ID_MOTOROLA_MPC106, 0);
- if (devbusfn == -1)
- return (-1);
-
- pci_read_config_dword (devbusfn, PCI_PICR2, &reg32);
- reg32 &= ~PICR2_L2_EN;
- pci_write_config_dword (devbusfn, PCI_PICR2, reg32);
-
- /* cache size */
- if (*(volatile unsigned char *) (CFG_ISA_IO + 0x220) & 0x04)
- {
- /* cache size is 512 KB */
- picr2CacheSize = PICR2_L2_SIZE_512K;
- cacheSize = 0x80000;
- }
- else
- {
- /* cache size is 256 KB */
- picr2CacheSize = PICR2_L2_SIZE_256K;
- cacheSize = 0x40000;
- }
-
- /* setup PICR1 */
- mask =
- ~(PICR1_CF_BREAD_WS(1) |
- PICR1_CF_BREAD_WS(2) |
- PICR1_CF_CBA(0xff) |
- PICR1_CF_CACHE_1G |
- PICR1_CF_DPARK |
- PICR1_CF_APARK |
- PICR1_CF_L2_CACHE_MASK);
-
- picr1 =
- (PICR1_CF_CBA(0x3f) |
- PICR1_CF_CACHE_1G |
- PICR1_CF_APARK |
- PICR1_CF_DPARK |
- PICR1_CF_L2_COPY_BACK); /* PICR1_CF_L2_WRITE_THROUGH */
-
- pci_read_config_dword (devbusfn, PCI_PICR1, &reg32);
- reg32 &= mask;
- reg32 |= picr1;
- pci_write_config_dword (devbusfn, PCI_PICR1, reg32);
-
- /*
- * invalidate all L2 cache
- */
- picr2 =
- (PICR2_CF_INV_MODE |
- PICR2_CF_HIT_HIGH |
- PICR2_CF_MOD_HIGH |
- PICR2_CF_L2_HIT_DELAY(1) |
- PICR2_CF_APHASE_WS(1) |
- picr2CacheSize);
-
- pci_write_config_dword (devbusfn, PCI_PICR2, picr2);
-
- /*
- * dummy transactions
- */
- for (d=0; d<(int *)(2*cacheSize); d++)
- dummy(*d);
-
- pci_write_config_dword (devbusfn, PCI_PICR2,
- (picr2 | PICR2_CF_FLUSH_L2));
-
- /* setup PICR2 */
- picr2 =
- (PICR2_CF_FAST_CASTOUT |
- PICR2_CF_WDATA |
- PICR2_CF_ADDR_ONLY_DISABLE |
- PICR2_CF_HIT_HIGH |
- PICR2_CF_MOD_HIGH |
- PICR2_L2_UPDATE_EN |
- PICR2_L2_EN |
- PICR2_CF_APHASE_WS(1) |
- PICR2_CF_DATA_RAM_PBURST |
- PICR2_CF_L2_HIT_DELAY(1) |
- PICR2_CF_SNOOP_WS(2) |
- picr2CacheSize);
-
- pci_write_config_dword (devbusfn, PCI_PICR2, picr2);
- }
- return (0);
-}
-
-/*----------------------------------------------------------------------------*/
-
-#endif /* (CFG_L2_BAB7xx) */
diff --git a/board/eltec/bab7xx/misc.c b/board/eltec/bab7xx/misc.c
deleted file mode 100644
index 6a24807411..0000000000
--- a/board/eltec/bab7xx/misc.c
+++ /dev/null
@@ -1,547 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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
- */
-
-/* includes */
-#include <common.h>
-#include <linux/ctype.h>
-#include <pci.h>
-#include <net.h>
-#include <mpc106.h>
-#include <w83c553f.h>
-#include "srom.h"
-
-/* imports */
-extern char console_buffer[CFG_CBSIZE];
-extern int l2_cache_enable (int l2control);
-extern void *nvram_read (void *dest, const short src, size_t count);
-extern void nvram_write (short dest, const void *src, size_t count);
-
-/* globals */
-unsigned int ata_reset_time = 60;
-unsigned int scsi_reset_time = 10;
-unsigned int eltec_board;
-
-/* BAB750 uses SYM53C875(default) and BAB740 uses SYM53C860
- * values fixed after board identification
- */
-unsigned short scsi_dev_id = PCI_DEVICE_ID_NCR_53C875;
-unsigned int scsi_max_scsi_id = 15;
-unsigned char scsi_sym53c8xx_ccf = 0x13;
-
-/*----------------------------------------------------------------------------*/
-/*
- * handle sroms on BAB740/750
- * fix ether address
- * L2 cache initialization
- * ide dma control
- */
-int misc_init_r (void)
-{
- revinfo eerev;
- char *ptr;
- u_int i, l, initSrom, copyNv;
- char buf[256];
- char hex[23] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0,
- 0, 0, 0, 0, 10, 11, 12, 13, 14, 15 };
- pci_dev_t bdf;
-
- char sromSYM[] = {
-#ifdef TULIP_BUG
- /* 10BaseT, 100BaseTx no full duplex modes */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x08,
- 0x02, 0x86, 0x02, 0x00, 0xaf, 0x08, 0xa5, 0x00,
- 0x88, 0x04, 0x03, 0x27, 0x08, 0x25, 0x00, 0x61,
- 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xe8
-#endif
- /* 10BaseT, 10BaseT-FD, 100BaseTx, 100BaseTx-FD */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x08,
- 0x04, 0x86, 0x02, 0x00, 0xaf, 0x08, 0xa5, 0x00,
- 0x86, 0x02, 0x04, 0xaf, 0x08, 0xa5, 0x00, 0x88,
- 0x04, 0x03, 0x27, 0x08, 0x25, 0x00, 0x61, 0x80,
- 0x88, 0x04, 0x05, 0x27, 0x08, 0x25, 0x00, 0x61,
- 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x77
- };
-
- char sromMII[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x5b, 0x00,
- 0x2e, 0x4d, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x08,
- 0x01, 0x95, 0x03, 0x00, 0x00, 0x04, 0x01, 0x08,
- 0x00, 0x00, 0x02, 0x08, 0x02, 0x00, 0x00, 0x78,
- 0xe0, 0x01, 0x00, 0x50, 0x00, 0x18, 0x80, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0x41
- };
-
- /*
- * Check/Remake revision info
- */
- initSrom = 0;
- copyNv = 0;
-
- /* read out current revision srom contens */
- el_srom_load (0x0000, (u_char*)&eerev, sizeof(revinfo),
- SECOND_DEVICE, FIRST_BLOCK);
-
- /* read out current nvram shadow image */
- nvram_read (buf, CFG_NV_SROM_COPY_ADDR, CFG_SROM_SIZE);
-
- if (strcmp (eerev.magic, "ELTEC") != 0)
- {
- /* srom is not initialized -> create a default revision info */
- for (i = 0, ptr = (char *)&eerev; i < sizeof(revinfo); i++)
- *ptr++ = 0x00;
- strcpy(eerev.magic, "ELTEC");
- eerev.revrev[0] = 1;
- eerev.revrev[1] = 0;
- eerev.size = 0x00E0;
- eerev.category[0] = 0x01;
-
- /* node id from dead e128 as default */
- eerev.etheraddr[0] = 0x00;
- eerev.etheraddr[1] = 0x00;
- eerev.etheraddr[2] = 0x5B;
- eerev.etheraddr[3] = 0x00;
- eerev.etheraddr[4] = 0x2E;
- eerev.etheraddr[5] = 0x4D;
-
- /* cache config word for bab750 */
- *(int*)&eerev.res[0] = CLK2P0TO1_1MB_PB_0P5DH;
-
- initSrom = 1; /* force dialog */
- copyNv = 1; /* copy to nvram */
- }
-
- if ((copyNv == 0) && (el_srom_checksum((u_char*)&eerev, CFG_SROM_SIZE) !=
- el_srom_checksum((u_char*)buf, CFG_SROM_SIZE)))
- {
- printf ("Invalid revision info copy in nvram !\n");
- printf ("Press key:\n <c> to copy current revision info to nvram.\n");
- printf (" <r> to reenter revision info.\n");
- printf ("=> ");
- if (0 != readline (NULL))
- {
- switch ((char)toupper(console_buffer[0]))
- {
- case 'C':
- copyNv = 1;
- break;
- case 'R':
- copyNv = 1;
- initSrom = 1;
- break;
- }
- }
- }
-
- if (initSrom)
- {
- memcpy (buf, &eerev.revision[0][0], 14); /* save all revision info */
- printf ("Enter revision number (0-9): %c ", eerev.revision[0][0]);
- if (0 != readline (NULL))
- {
- eerev.revision[0][0] = (char)toupper(console_buffer[0]);
- memcpy (&eerev.revision[1][0], buf, 12); /* shift rest of rev info */
- }
-
- printf ("Enter revision character (A-Z): %c ", eerev.revision[0][1]);
- if (1 == readline (NULL))
- {
- eerev.revision[0][1] = (char)toupper(console_buffer[0]);
- }
-
- printf ("Enter board name (V-XXXX-XXXX): %s ", (char *)&eerev.board);
- if (11 == readline (NULL))
- {
- for (i=0; i<11; i++)
- eerev.board[i] = (char)toupper(console_buffer[i]);
- eerev.board[11] = '\0';
- }
-
- printf ("Enter serial number: %s ", (char *)&eerev.serial );
- if (6 == readline (NULL))
- {
- for (i=0; i<6; i++)
- eerev.serial[i] = console_buffer[i];
- eerev.serial[6] = '\0';
- }
-
- printf ("Enter ether node ID with leading zero (HEX): %02x%02x%02x%02x%02x%02x ",
- eerev.etheraddr[0], eerev.etheraddr[1],
- eerev.etheraddr[2], eerev.etheraddr[3],
- eerev.etheraddr[4], eerev.etheraddr[5]);
- if (12 == readline (NULL))
- {
- for (i=0; i<12; i+=2)
- eerev.etheraddr[i>>1] = (char)(16*hex[toupper(console_buffer[i])-'0'] +
- hex[toupper(console_buffer[i+1])-'0']);
- }
-
- l = strlen ((char *)&eerev.text);
- printf("Add to text section (max 64 chr): %s ", (char *)&eerev.text );
- if (0 != readline (NULL))
- {
- for (i = l; i<63; i++)
- eerev.text[i] = console_buffer[i-l];
- eerev.text[63] = '\0';
- }
-
- if (strstr ((char *)&eerev.board, "75") != NULL)
- eltec_board = 750;
- else
- eltec_board = 740;
-
- if (eltec_board == 750)
- {
- if (CPU_TYPE == CPU_TYPE_750)
- *(int*)&eerev.res[0] = CLK2P0TO1_1MB_PB_0P5DH;
- else
- *(int*)&eerev.res[0] = CLK2P5TO1_1MB_PB_0P5DH;
-
- printf("Enter L2Cache config word with leading zero (HEX): %08X ",
- *(int*)&eerev.res[0] );
- if (0 != readline (NULL))
- {
- for (i=0; i<7; i+=2)
- {
- eerev.res[i>>1] =
- (char)(16*hex[toupper(console_buffer[i])-'0'] +
- hex[toupper(console_buffer[i+1])-'0']);
- }
- }
-
- /* prepare network eeprom */
- sromMII[20] = eerev.etheraddr[0];
- sromMII[21] = eerev.etheraddr[1];
- sromMII[22] = eerev.etheraddr[2];
- sromMII[23] = eerev.etheraddr[3];
- sromMII[24] = eerev.etheraddr[4];
- sromMII[25] = eerev.etheraddr[5];
- printf("\nSRom: Writing DEC21143 MII info .. ");
-
- if (dc_srom_store ((u_short *)sromMII) == -1)
- printf("FAILED\n");
- else
- printf("OK\n");
- }
-
- if (eltec_board == 740)
- {
- *(int *)&eerev.res[0] = 0;
- sromSYM[20] = eerev.etheraddr[0];
- sromSYM[21] = eerev.etheraddr[1];
- sromSYM[22] = eerev.etheraddr[2];
- sromSYM[23] = eerev.etheraddr[3];
- sromSYM[24] = eerev.etheraddr[4];
- sromSYM[25] = eerev.etheraddr[5];
- printf("\nSRom: Writing DEC21143 SYM info .. ");
-
- if (dc_srom_store ((u_short *)sromSYM) == -1)
- printf("FAILED\n");
- else
- printf("OK\n");
- }
-
- /* update CRC */
- eerev.crc = el_srom_checksum((u_char *)eerev.board, eerev.size);
-
- /* write new values */
- printf("\nSRom: Writing revision info ...... ");
- if (el_srom_store((BLOCK_SIZE-sizeof(revinfo)), (u_char *)&eerev,
- sizeof(revinfo), SECOND_DEVICE, FIRST_BLOCK) == -1)
- printf("FAILED\n\n");
- else
- printf("OK\n\n");
-
- /* write new values as shadow image to nvram */
- nvram_write (CFG_NV_SROM_COPY_ADDR, (void *)&eerev, CFG_SROM_SIZE);
-
- } /*if (initSrom) */
-
- /* copy current values as shadow image to nvram */
- if (initSrom == 0 && copyNv == 1)
- nvram_write (CFG_NV_SROM_COPY_ADDR, (void *)&eerev, CFG_SROM_SIZE);
-
- /* update environment */
- sprintf (buf, "%02x:%02x:%02x:%02x:%02x:%02x",
- eerev.etheraddr[0], eerev.etheraddr[1],
- eerev.etheraddr[2], eerev.etheraddr[3],
- eerev.etheraddr[4], eerev.etheraddr[5]);
- setenv ("ethaddr", buf);
-
- /* print actual board identification */
- printf("Ident: %s Ser %s Rev %c%c\n",
- eerev.board, (char *)&eerev.serial,
- eerev.revision[0][0], eerev.revision[0][1]);
-
- /* global board ident */
- if (strstr ((char *)&eerev.board, "75") != NULL)
- eltec_board = 750;
- else
- eltec_board = 740;
-
- /*
- * L2 cache configuration
- */
-#if defined(CFG_L2_BAB7xx)
- ptr = getenv("l2cache");
- if (*ptr == '0')
- {
- printf ("Cache: L2 NOT activated on BAB%d\n", eltec_board);
- }
- else
- {
- printf ("Cache: L2 activated on BAB%d\n", eltec_board);
- l2_cache_enable(*(int*)&eerev.res[0]);
- }
-#endif
-
- /*
- * Reconfig ata reset timeout from environment
- */
- if ((ptr = getenv ("ata_reset_time")) != NULL)
- {
- ata_reset_time = (int)simple_strtoul (ptr, NULL, 10);
- }
- else
- {
- sprintf (buf, "%d", ata_reset_time);
- setenv ("ata_reset_time", buf);
- }
-
- /*
- * Reconfig scsi reset timeout from environment
- */
- if ((ptr = getenv ("scsi_reset_time")) != NULL)
- {
- scsi_reset_time = (int)simple_strtoul (ptr, NULL, 10);
- }
- else
- {
- sprintf (buf, "%d", scsi_reset_time);
- setenv ("scsi_reset_time", buf);
- }
-
-
- if ((bdf = pci_find_device(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_83C553, 0)) > 0)
- {
- if (pci_find_device(PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C860, 0) > 0)
- {
- /* BAB740 with SCSI=IRQ 11; SCC=IRQ 9; no IDE; NCR860 at 80 Mhz */
- scsi_dev_id = PCI_DEVICE_ID_NCR_53C860;
- scsi_max_scsi_id = 7;
- scsi_sym53c8xx_ccf = 0x15;
- pci_write_config_byte (bdf, WINBOND_IDEIRCR, 0xb0);
- }
-
- if ((ptr = getenv ("ide_dma_off")) != NULL)
- {
- u_long dma_off = simple_strtoul (ptr, NULL, 10);
- /*
- * setup user defined registers
- * s.a. linux/drivers/ide/sl82c105.c
- */
- bdf |= PCI_BDF(0,0,1); /* ide user reg at bdf function 1 */
- if (dma_off & 1)
- {
- pci_write_config_byte (bdf, 0x46, 1);
- printf("IDE: DMA off flag set: Bus 0 : Dev 0\n");
- }
- if (dma_off & 2)
- {
- pci_write_config_byte (bdf, 0x4a, 1);
- printf("IDE: DMA off flag set: Bus 0 : Dev 1\n");
- }
- if (dma_off & 4)
- {
- pci_write_config_byte (bdf, 0x4e, 1);
- printf("IDE: DMA off flag set: Bus 1 : Dev 0\n");
- }
- if (dma_off & 8)
- {
- pci_write_config_byte (bdf, 0x52, 1);
- printf("IDE: DMA off flag set: Bus 1 : Dev 1\n");
- }
- }
- }
- return (0);
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * BAB740 uses KENDIN KS8761 modem chip with not common setup values
- */
-#ifdef CONFIG_TULIP_SELECT_MEDIA
-
-/* Register bits.
- */
-#define BMR_SWR 0x00000001 /* Software Reset */
-#define STS_TS 0x00700000 /* Transmit Process State */
-#define STS_RS 0x000e0000 /* Receive Process State */
-#define OMR_ST 0x00002000 /* Start/Stop Transmission Command */
-#define OMR_SR 0x00000002 /* Start/Stop Receive */
-#define OMR_PS 0x00040000 /* Port Select */
-#define OMR_SDP 0x02000000 /* SD Polarity - MUST BE ASSERTED */
-#define OMR_PM 0x00000080 /* Pass All Multicast */
-#define OMR_PR 0x00000040 /* Promiscuous Mode */
-#define OMR_PCS 0x00800000 /* PCS Function */
-#define OMR_TTM 0x00400000 /* Transmit Threshold Mode */
-
-/* Ethernet chip registers.
- */
-#define DE4X5_BMR 0x000 /* Bus Mode Register */
-#define DE4X5_TPD 0x008 /* Transmit Poll Demand Reg */
-#define DE4X5_RRBA 0x018 /* RX Ring Base Address Reg */
-#define DE4X5_TRBA 0x020 /* TX Ring Base Address Reg */
-#define DE4X5_STS 0x028 /* Status Register */
-#define DE4X5_OMR 0x030 /* Operation Mode Register */
-#define DE4X5_SISR 0x060 /* SIA Status Register */
-#define DE4X5_SICR 0x068 /* SIA Connectivity Register */
-#define DE4X5_TXRX 0x070 /* SIA Transmit and Receive Register */
-#define DE4X5_GPPR 0x078 /* General Purpose Port register */
-#define DE4X5_APROM 0x048 /* Ethernet Address PROM */
-
-/*----------------------------------------------------------------------------*/
-
-static int INL(struct eth_device* dev, u_long addr)
-{
- return le32_to_cpu(*(volatile u_long *)(addr + dev->iobase));
-}
-
-/*----------------------------------------------------------------------------*/
-
-static void OUTL(struct eth_device* dev, int command, u_long addr)
-{
- *(volatile u_long *)(addr + dev->iobase) = cpu_to_le32(command);
-}
-
-/*----------------------------------------------------------------------------*/
-
-static void media_reg_init (
- struct eth_device* dev,
- u32 csr14,
- u32 csr15_dir,
- u32 csr15_v0,
- u32 csr15_v1,
- u32 csr6 )
-{
- OUTL(dev, 0, DE4X5_OMR); /* CSR6 */
- udelay(10 * 1000);
- OUTL(dev, 0, DE4X5_SICR); /* CSR13 */
- OUTL(dev, 1, DE4X5_SICR); /* CSR13 */
- udelay(10 * 1000);
- OUTL(dev, csr14, DE4X5_TXRX); /* CSR14 */
- OUTL(dev, csr15_dir, DE4X5_GPPR); /* CSR15 */
- OUTL(dev, csr15_v0, DE4X5_GPPR); /* CSR15 */
- udelay(10 * 1000);
- OUTL(dev, csr15_v1, DE4X5_GPPR); /* CSR15 */
- OUTL(dev, 0x00000301, DE4X5_SISR); /* CSR12 */
- OUTL(dev, csr6, DE4X5_OMR); /* CSR6 */
-}
-
-/*----------------------------------------------------------------------------*/
-
-void dc21x4x_select_media(struct eth_device* dev)
-{
- int i, status, ext;
- extern unsigned int eltec_board;
-
- if (eltec_board == 740)
- {
- printf("SYM media select "); /* BAB740 */
- /* start autoneg. with 10 mbit */
- media_reg_init (dev, 0x3ffff, 0x08af0008, 0x00a10008, 0x00a50008, 0x02400080);
- ext = status = 0;
- for (i=0; i<2000+ext; i++)
- {
- status = INL(dev, DE4X5_SISR);
- udelay(1000);
- if (status & 0x2000) ext = 2000;
- if ((status & 0x7000) == 0x5000) break;
- }
-
- /* autoneg. ok -> 100MB FD */
- if ((status & 0x0100f000) == 0x0100d000)
- {
- media_reg_init (dev, 0x37f7f, 0x08270008, 0x00210008, 0x00250008, 0x03c40280);
- printf("100baseTx-FD\n");
- }
- /* autoneg. ok -> 100MB HD */
- else if ((status & 0x0080f000) == 0x0080d000)
- {
- media_reg_init (dev, 0x17f7f, 0x08270008, 0x00210008, 0x00250008, 0x03c40080);
- printf("100baseTx\n");
- }
- /* autoneg. ok -> 10MB FD */
- else if ((status & 0x0040f000) == 0x0040d000)
- {
- media_reg_init (dev, 0x07f7f, 0x08af0008, 0x00a10008, 0x00a50008, 0x02400280);
- printf("10baseT-FD\n");
- }
- /* autoneg. fail -> 10MB HD */
- else
- {
- media_reg_init (dev, 0x7f7f, 0x08af0008, 0x00a10008, 0x00a50008,
- (OMR_SDP | OMR_TTM | OMR_PM));
- printf("10baseT\n");
- }
- }
- else
- {
- printf("MII media selected\n"); /* BAB750 */
- OUTL(dev, OMR_SDP | OMR_PS | OMR_PM, DE4X5_OMR); /* CSR6 */
- }
-}
-#endif /* CONFIG_TULIP_SELECT_MEDIA */
-
-/*---------------------------------------------------------------------------*/
diff --git a/board/eltec/bab7xx/pci.c b/board/eltec/bab7xx/pci.c
deleted file mode 100644
index edbd3ddf73..0000000000
--- a/board/eltec/bab7xx/pci.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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
- */
-
-/*
- * PCI initialisation for the MPC10x.
- */
-
-#include <common.h>
-#include <pci.h>
-#include <mpc106.h>
-
-#ifdef CONFIG_PCI
-
-struct pci_controller local_hose;
-
-void pci_init_board(void)
-{
- struct pci_controller* hose = (struct pci_controller *)&local_hose;
- u32 reg32;
- u16 reg16;
-
- hose->first_busno = 0;
- hose->last_busno = 0xff;
-
- pci_set_region(hose->regions + 0,
- CFG_PCI_MEMORY_BUS,
- CFG_PCI_MEMORY_PHYS,
- /*
- * Attention: pci_hose_phys_to_bus() failes in address compare,
- * so we need (CFG_PCI_MEMORY_SIZE-1)
- */
- CFG_PCI_MEMORY_SIZE-1,
- PCI_REGION_MEM | PCI_REGION_MEMORY);
-
- /* PCI memory space */
- pci_set_region(hose->regions + 1,
- CFG_PCI_MEM_BUS,
- CFG_PCI_MEM_PHYS,
- CFG_PCI_MEM_SIZE,
- PCI_REGION_MEM);
-
- /* ISA/PCI memory space */
- pci_set_region(hose->regions + 2,
- CFG_ISA_MEM_BUS,
- CFG_ISA_MEM_PHYS,
- CFG_ISA_MEM_SIZE,
- PCI_REGION_MEM);
-
- /* PCI I/O space */
- pci_set_region(hose->regions + 3,
- CFG_PCI_IO_BUS,
- CFG_PCI_IO_PHYS,
- CFG_PCI_IO_SIZE,
- PCI_REGION_IO);
-
- /* ISA/PCI I/O space */
- pci_set_region(hose->regions + 4,
- CFG_ISA_IO_BUS,
- CFG_ISA_IO_PHYS,
- CFG_ISA_IO_SIZE,
- PCI_REGION_IO);
-
- hose->region_count = 5;
-
- pci_setup_indirect(hose,
- MPC106_REG_ADDR,
- MPC106_REG_DATA);
-
- pci_register_hose(hose);
-
- hose->last_busno = pci_hose_scan(hose);
-
- /* Initialises the MPC10x PCI Configuration regs. */
- pci_read_config_dword (PCI_BDF(0,0,0), PCI_PICR2, &reg32);
- reg32 |= PICR2_CF_SNOOP_WS(3) |
- PICR2_CF_FLUSH_L2 |
- PICR2_CF_L2_HIT_DELAY(3) |
- PICR2_CF_APHASE_WS(3);
- reg32 &= ~(PICR2_L2_EN | PICR2_L2_UPDATE_EN);
- pci_write_config_dword (PCI_BDF(0,0,0), PCI_PICR2, reg32);
-
- pci_read_config_word (PCI_BDF(0,0,0), PCI_COMMAND, &reg16);
- reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
- pci_write_config_word(PCI_BDF(0,0,0), PCI_COMMAND, reg16);
-
- /* Clear non-reserved bits in status register */
- pci_write_config_word(PCI_BDF(0,0,0), PCI_STATUS, 0xffff);
-
- pci_read_config_dword (PCI_BDF(0,0,0), PCI_PICR1, &reg32);
- reg32 |= PICR1_CF_CBA(63) |
- PICR1_CF_BREAD_WS(2) |
- PICR1_MCP_EN |
- PICR1_CF_DPARK |
- PICR1_PROC_TYPE_604 |
- PICR1_CF_LOOP_SNOOP |
- PICR1_CF_APARK;
- pci_write_config_dword (PCI_BDF(0,0,0), PCI_PICR1, reg32);
-}
-
-#endif /* CONFIG_PCI */
diff --git a/board/eltec/bab7xx/srom.h b/board/eltec/bab7xx/srom.h
deleted file mode 100644
index c18ab91645..0000000000
--- a/board/eltec/bab7xx/srom.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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
- */
-
-/* common srom defs */
-#define FIRST_DEVICE 0x00
-#define SECOND_DEVICE 0x04
-#define FIRST_BLOCK 0x00
-#define SECOND_BLOCK 0x02
-#define BLOCK_SIZE 0x100
-#define ERROR (-1)
-
-#define CLK2P0TO1_1MB_PB_0P5DH 0x79000100
-#define CLK2P5TO1_1MB_PB_0P5DH 0x7B000100
-
-#define CPU_TYPE_740 0x08
-#define CPU_TYPE_750 0x08
-#define CPU_TYPE ((get_pvr()>>16)&0xffff)
-
-#define ABS(x) ((x<0)?-x:x)
-#define SROM_SHORT(pX) (*(u8 *)(pX) | *((u8 *)(pX)+1) << 8)
-
-/* bab7xx ELTEC srom */
-#define I2C_BUS_DAT (CFG_ISA_IO + 0x220)
-#define I2C_BUS_DIR (CFG_ISA_IO + 0x221)
-
-/* srom at mpc107 */
-#define MPC107_I2CADDR (mpc107_eumb_addr + 0x3000) /* address */
-#define MPC107_I2CFDR (mpc107_eumb_addr + 0x3004) /* freq divider */
-#define MPC107_I2CCR (mpc107_eumb_addr + 0x3008) /* control */
-#define MPC107_I2CSR (mpc107_eumb_addr + 0x300c) /* status */
-#define MPC107_I2CDR (mpc107_eumb_addr + 0x3010) /* data */
-#define MPC107_I2C_TIMEOUT 10000000
-
-/* i82559 */
-#define EE_ADDR_BITS 6
-#define EE_SIZE 0x40 /* 0x40 words */
-#define EE_CHECKSUM 0xBABA
-
-/* dc21143 */
-#define DEC_SROM_SIZE 128
-
-
-/*
- * structure of revision srom
- */
-typedef struct {
- char magic[8]; /* 000 - Magic number */
- char revrev[2]; /* 008 - Revision of structure */
- unsigned short size; /* 00A - Size of CRC area */
- unsigned long crc; /* 00C - CRC */
- char board[16]; /* 010 - Board Revision information */
- char option[4][16]; /* 020 - Option Revision information */
- char serial[8]; /* 060 - Board serial number */
- char etheraddr[6]; /* 068 - Ethernet node addresse */
- char reserved[2]; /* 06E - Reserved */
- char revision[7][2]; /* 070 - Revision codes */
- char category[2]; /* 07E - Category codes */
- char text[64]; /* 080 - Text field */
- char res[64]; /* 0C0 - Reserved */
-} revinfo;
-
-unsigned long el_srom_checksum (unsigned char *ptr, unsigned long size);
-int el_srom_load (unsigned char addr, unsigned char *buf, int cnt,
- unsigned char device, unsigned char block);
-int el_srom_store (unsigned char addr, unsigned char *buf, int cnt,
- unsigned char device, unsigned char block);
-
-int mpc107_i2c_init (unsigned long eumb_addr, unsigned long divider);
-int mpc107_i2c_read_byte (unsigned char device, unsigned char block, unsigned char offset);
-int mpc107_i2c_write_byte (unsigned char device, unsigned char block,
- unsigned char offset, unsigned char val);
-int mpc107_srom_load (unsigned char addr, unsigned char *pBuf, int cnt,
- unsigned char device, unsigned char block);
-int mpc107_srom_store (unsigned char addr, unsigned char *pBuf, int cnt,
- unsigned char device, unsigned char block);
-
-int dc_srom_load (unsigned short *dest);
-int dc_srom_store (unsigned short *src);
-
-unsigned short eepro100_srom_checksum (unsigned short *sromdata);
-void eepro100_srom_load (unsigned short *destination);
-int eepro100_srom_store (unsigned short *source);
diff --git a/board/eltec/bab7xx/u-boot.lds b/board/eltec/bab7xx/u-boot.lds
deleted file mode 100644
index d89eb6cff2..0000000000
--- a/board/eltec/bab7xx/u-boot.lds
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@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
- */
-
-/*
- * u-boot.lds - linker script for U-Boot on the Galileo Eval Board.
- */
-
-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/74xx_7xx/start.o (.text)
-
-/* store the environment in a seperate sector in the boot flash */
-/* . = env_offset; */
-/* common/environment.o(.text) */
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/eltec/elppc/Makefile b/board/eltec/elppc/Makefile
deleted file mode 100644
index 5ab96233ff..0000000000
--- a/board/eltec/elppc/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o pci.o misc.o mpc107_i2c.o eepro100_srom.o
-
-SOBJS = asm_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/eltec/elppc/asm_init.S b/board/eltec/elppc/asm_init.S
deleted file mode 100644
index 1b8d399ed3..0000000000
--- a/board/eltec/elppc/asm_init.S
+++ /dev/null
@@ -1,878 +0,0 @@
-/*
- * (C) Copyright 2001 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.de>
- *
- * ELTEC ELPPC RAM initialization
- *
- * 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 <config.h>
-#include <asm/processor.h>
-#include <version.h>
-#include <mpc106.h>
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-.globl board_asm_init
-board_asm_init:
-
-/*
- * setup pointer to message block
- */
- mflr r13 /* save away link register */
- bl get_lnk_reg /* r3=addr of next instruction */
- subi r4, r3, 8 /* r4=board_asm_init addr */
- addi r29, r4, (MessageBlock-board_asm_init)
-
-/*
- * dcache_disable
- */
- mfspr r3, HID0
- li r4, HID0_DCE
- andc r3, r3, r4
- mr r2, r3
- ori r3, r3, HID0_DCI
- sync
- mtspr HID0, r3
- mtspr HID0, r2
- isync
- sync
-/*
- * icache_disable
- */
- mfspr r3, HID0
- li r4, 0
- ori r4, r4, HID0_ICE
- andc r3, r3, r4
- sync
- mtspr HID0, r3
-/*
- * invalidate caches
- */
- ori r3, r3, (HID0_ICE | HID0_ICFI | HID0_DCI | HID0_DCE)
- or r4, r4, r3
- isync
- mtspr HID0, r4
- andc r4, r4, r3
- isync
- mtspr HID0, r4
- isync
-/*
- * icache_enable
- */
- mfspr r3, HID0
- ori r3, r3, (HID0_ICE | HID0_ICFI)
- sync
- mtspr HID0, r3
-
-
-/*
- * setup memory controller
- */
- lis r1, MPC106_REG_ADDR@h
- ori r1, r1, MPC106_REG_ADDR@l
- lis r2, MPC106_REG_DATA@h
- ori r2, r2, MPC106_REG_DATA@l
-
- /* Configure PICR1 */
- lis r3, MPC106_REG@h
- ori r3, r3, PCI_PICR1
- stwbrx r3, 0, r1
- addis r3, r0, 0xFF14
- ori r3, r3, 0x1CC8
- eieio
- stwbrx r3, 0, r2
-
- /* Configure PICR2 */
- lis r3, MPC106_REG@h
- ori r3, r3, PCI_PICR2
- stwbrx r3, 0, r1
- addis r3, r0, 0x0000
- ori r3, r3, 0x0000
- eieio
- stwbrx r3, 0, r2
-
- /* Configure EUMBAR */
- lis r3, MPC106_REG@h
- ori r3, r3, 0x0078 /* offest of EUMBAR in PCI config space */
- stwbrx r3, 0, r1
- lis r3, MPC107_EUMB_ADDR@h
- eieio
- stwbrx r3, 0, r2
-
- /* Configure Address Map B Option Reg */
- lis r3, MPC106_REG@h
- ori r3, r3, 0x00e0 /* offest of AMBOR in PCI config space */
- stwbrx r3, 0, r1
- lis r3, 0
- eieio
- stwbrx r3, 0, r2
-
- /* Configure I2C Controller */
- lis r14, MPC107_I2C_ADDR@h /* base of I2C controller */
- ori r14, r14, MPC107_I2C_ADDR@l
- lis r3, 0x2b10 /* I2C clock = 100MHz/1024 */
- stw r3, 4(r14)
- li r3, 0 /* clear arbitration */
- eieio
- stw r3, 12(r14)
-
- /* Configure MCCR1 */
- lis r3, MPC106_REG@h
- ori r3, r3, MPC106_MCCR1
- stwbrx r3, 0, r1
- addis r3, r0, 0x0660 /* don't set MEMGO now ! */
- ori r3, r3, 0x0000
- eieio
- stwbrx r3, 0, r2
-
- /* Configure MCCR2 */
- lis r3, MPC106_REG@h
- ori r3, r3, MPC106_MCCR2
- stwbrx r3, 0, r1
- addis r3, r0, 0x0400
- ori r3, r3, 0x1800
- eieio
- stwbrx r3, 0, r2
-
-
- /* Configure MCCR3 */
- lis r3, MPC106_REG@h
- ori r3, r3, MPC106_MCCR3
- stwbrx r3, 0, r1
- addis r3, r0, 0x0230
- ori r3, r3, 0x0000
- eieio
- stwbrx r3, 0, r2
-
- /* Configure MCCR4 */
- lis r3, MPC106_REG@h
- ori r3, r3, MPC106_MCCR4
- stwbrx r3, 0, r1
- addis r3, r0, 0x2532
- ori r3, r3, 0x2220
- eieio
- stwbrx r3, 0, r2
-
-/*
- * configure memory interface (MICRs)
- */
- addis r3, r0, 0x8000 /* ADDR_80 */
- ori r3, r3, 0x0080 /* SMEMADD1 */
- stwbrx r3, 0, r1
- addis r3, r0, 0xFFFF
- ori r3, r3, 0x4000
- eieio
- stwbrx r3, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_84 */
- ori r3, r3, 0x0084 /* SMEMADD2 */
- stwbrx r3, 0, r1
- addis r3, r0, 0xFFFF
- ori r3, r3, 0xFFFF
- eieio
- stwbrx r3, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_88 */
- ori r3, r3, 0x0088 /* EXTSMEM1 */
- stwbrx r3, 0, r1
- addis r3, r0, 0x0303
- ori r3, r3, 0x0000
- eieio
- stwbrx r3, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_8C */
- ori r3, r3, 0x008c /* EXTSMEM2 */
- stwbrx r3, 0, r1
- addis r3, r0, 0x0303
- ori r3, r3, 0x0303
- eieio
- stwbrx r3, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_90 */
- ori r3, r3, 0x0090 /* EMEMADD1 */
- stwbrx r3, 0, r1
- addis r3, r0, 0xFFFF
- ori r3, r3, 0x7F3F
- eieio
- stwbrx r3, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_94 */
- ori r3, r3, 0x0094 /* EMEMADD2 */
- stwbrx r3, 0, r1
- addis r3, r0, 0xFFFF
- ori r3, r3, 0xFFFF
- eieio
- stwbrx r3, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_98 */
- ori r3, r3, 0x0098 /* EXTEMEM1 */
- stwbrx r3, 0, r1
- addis r3, r0, 0x0303
- ori r3, r3, 0x0000
- eieio
- stwbrx r3, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_9C */
- ori r3, r3, 0x009c /* EXTEMEM2 */
- stwbrx r3, 0, r1
- addis r3, r0, 0x0303
- ori r3, r3, 0x0303
- eieio
- stwbrx r3, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_A0 */
- ori r3, r3, 0x00a0 /* MEMBNKEN */
- stwbrx r3, 0, r1
- addis r3, r0, 0x0000
- ori r3, r3, 0x0003
- eieio
- stwbrx r3, 0, r2
-
-/*
- * must wait at least 100us after HRESET to issue a MEMGO
- */
- lis r0, 1
- mtctr r0
-memStartWait:
- bdnz memStartWait
-
-/*
- * enable RAM Operations through MCCR1 (MEMGO)
- */
- lis r3, 0x8000
- ori r3, r3, 0x00f0
- stwbrx r3, r0, r1
- sync
- lwbrx r3, 0, r2
- lis r0, 0x0008
- or r3, r0, r3
- stwbrx r3, 0, r2
- sync
-
-/*
- * set LEDs first time
- */
- li r3, 0x1
- lis r30, CFG_USR_LED_BASE@h
- stb r3, 2(r30)
- sync
-
-/*
- * init COM1 for polled output
- */
- lis r8, CFG_NS16550_COM1@h /* COM1 base address*/
- ori r8, r8, CFG_NS16550_COM1@l
- li r9, 0x00
- stb r9, 1(r8) /* int disabled */
- eieio
- li r9, 0x00
- stb r9, 4(r8) /* modem ctrl */
- eieio
- li r9, 0x80
- stb r9, 3(r8) /* link ctrl */
- eieio
- li r9, (CFG_NS16550_CLK / 16 / CONFIG_BAUDRATE)
- stb r9, 0(r8) /* baud rate (LSB)*/
- eieio
- li r9, ((CFG_NS16550_CLK / 16 / CONFIG_BAUDRATE) >> 8)
- stb r9, 1(r8) /* baud rate (MSB) */
- eieio
- li r9, 0x07
- stb r9, 3(r8) /* 8 data bits, 2 stop bit, no parity */
- eieio
- li r9, 0x0b
- stb r9, 4(r8) /* enable the receiver and transmitter (modem ctrl) */
- eieio
-waitEmpty:
- lbz r9, 5(r8) /* transmit empty */
- andi. r9, r9, 0x40
- beq waitEmpty
- li r9, 0x47
- stb r9, 3(r8) /* send break, 8 data bits, 2 stop bit, no parity */
- eieio
-
- lis r0, 0x0001
- mtctr r0
-waitCOM1:
- lwz r0, 5(r8) /* load from port for delay */
- bdnz waitCOM1
-
-waitEmpty1:
- lbz r9, 5(r8) /* transmit empty */
- andi. r9, r9, 0x40
- beq waitEmpty1
- li r9, 0x07
- stb r9, 3(r8) /* 8 data bits, 2 stop bit, no parity */
- eieio
-
-/*
- * intro message from message block
- */
- addi r3, r29, (MnewLine-MessageBlock)
- bl Printf
- addi r3, r29, (MinitLogo-MessageBlock)
- bl Printf
-
-/*
- * memory cofiguration using SPD information stored on the SODIMMs
- */
- addi r3, r29, (Mspd01-MessageBlock)
- bl Printf
-
- li r17, 0
-
- li r3, 0x0002 /* get RAM type from spd for bank0/1 */
- bl spdRead
-
- cmpi 0, 0, r3, -1 /* error ? */
- bne noSpdError
-
- addi r3, r29, (Mfail-MessageBlock)
- bl Printf
-
- li r6, 0xe /* error codes in r6 and r7 */
- li r7, 0x0
- b toggleError /* fail - loop forever */
-
-noSpdError:
- mr r15, r3 /* save r3 */
-
- addi r3, r29, (Mok-MessageBlock)
- bl Printf
-
- cmpli 0, 0, r15, 0x0004 /* SDRAM ? */
- beq isSDRAM
-
- addi r3, r29, (MramTyp-MessageBlock)
- bl Printf
-
- li r6, 0xd /* error codes in r6 and r7 */
- li r7, 0x0
- b toggleError /* fail - loop forever */
-
-isSDRAM:
- li r3, 0x0012 /* get supported CAS latencies from byte 18 */
- bl spdRead
- mr r15, r3
- li r3, 0x09
- andi. r0, r15, 0x04
- bne maxCLis3
- li r3, 0x17
-maxCLis3:
- andi. r0, r15, 0x02
- bne CL2
-
- addi r3, r29, (MramTyp-MessageBlock)
- bl Printf
-
- li r6, 0xc /* error codes in r6 and r7 */
- li r7, 0x0
- b toggleError /* fail - loop forever */
-CL2:
- bl spdRead
- cmpli 0, 0, r3, 0xa1 /* cycle time must be 10ns max. */
- blt speedOk
-
- addi r3, r29, (MramTyp-MessageBlock)
- bl Printf
-
- li r6, 0xb /* error codes in r6 and r7 */
- li r7, 0x0
- b toggleError /* fail - loop forever */
-speedOk:
- lis r20, 0x06e8 /* preset MCR1 value */
-
- li r3, 0x0011 /* get number of internal banks from spd for bank0/1 */
- bl spdRead
-
- cmpli 0, 0, r3, 0x02
- beq SD_2B
- cmpli 0, 0, r3, 0x04
- beq SD_4B
-memConfErr:
- addi r3, r29, (MramConfErr-MessageBlock)
- bl Printf
-
- li r6, 0xa /* error codes in r6 and r7 */
- li r7, 0x0
- b toggleError /* fail - loop forever */
-
-SD_2B:
- li r3, 0x0003 /* get number of row bits from spd for bank0/1 */
- bl spdRead
- cmpli 0, 0, r3, 0x0b
- beq row11x2
- cmpli 0, 0, r3, 0x0c
- beq row12x2or13x2
- cmpli 0, 0, r3, 0x0d
- beq row12x2or13x2
- b memConfErr
-SD_4B:
- li r3, 0x0003 /* get number of row bits from spd for bank0/1 */
- bl spdRead
- cmpli 0, 0, r3, 0x0b
- beq row11x4or12x4
- cmpli 0, 0, r3, 0x0c
- beq row11x4or12x4
- cmpli 0, 0, r3, 0x0d
- beq row13x4
- b memConfErr
-row12x2or13x2:
- ori r20, r20, 0x05
- b row11x4or12x4
-row13x4:
- ori r20, r20, 0x0a
- b row11x4or12x4
-row11x2:
- ori r20, r20, 0x0f
-row11x4or12x4:
- /* get the size of bank 0-1 */
-
- li r3, 0x001f /* get bank size from spd for bank0/1 */
- bl spdRead
-
- rlwinm r16, r3, 2, 24, 29 /* calculate size in MByte (128 MB max.) */
-
- li r3, 0x0005 /* get number of banks from spd for bank0/1 */
- bl spdRead
-
- cmpi 0, 0, r3, 2 /* 2 banks ? */
- bne SDRAMnobank1
-
- mr r17, r16
-
-SDRAMnobank1:
- li r3, 0x000c /* get refresh from spd for bank0/1 */
- bl spdRead
- andi. r3, r3, 0x007f /* mask selfrefresh bit */
- li r4, 0x1800 /* refesh cycle 1536 clocks left shifted 2 */
- cmpli 0, 0, r3, 0x0000 /* 15.6 us ? */
- beq writeRefresh
-
- li r4, 0x0c00 /* refesh cycle 768 clocks left shifted 2 */
- cmpli 0, 0, r3, 0x0002 /* 7.8 us ? */
- beq writeRefresh
-
- li r4, 0x3000 /* refesh cycle 3072 clocks left shifted 2 */
- cmpli 0, 0, r3, 0x0003 /* 31.3 us ? */
- beq writeRefresh
-
- li r4, 0x6000 /* refesh cycle 6144 clocks left shifted 2 */
- cmpli 0, 0, r3, 0x0004 /* 62.5 us ? */
- beq writeRefresh
-
- li r4, 0
- ori r4, r4, 0xc000 /* refesh cycle 8224 clocks left shifted 2 */
- cmpli 0, 0, r3, 0x0005 /* 125 us ? */
- beq writeRefresh
-
- b memConfErr
-
-writeRefresh:
- lis r21, 0x0400 /* preset MCCR2 value */
- or r21, r21, r4
-
- /* Overwrite MCCR1 */
- lis r3, MPC106_REG@h
- ori r3, r3, MPC106_MCCR1
- stwbrx r3, 0, r1
- eieio
- stwbrx r20, 0, r2
-
- /* Overwrite MCCR2 */
- lis r3, MPC106_REG@h
- ori r3, r3, MPC106_MCCR2
- stwbrx r3, 0, r1
- eieio
- stwbrx r21, 0, r2
-
- /* set the memory boundary registers for bank 0-3 */
- li r20, 0
- lis r23, 0x0303
- lis r24, 0x0303
- subi r21, r16, 1 /* calculate end address bank0 */
- li r22, 1
-
- cmpi 0, 0, r17, 0 /* bank1 present ? */
- beq nobank1
-
- andi. r3, r16, 0x00ff /* calculate start address of bank1 */
- andi. r4, r16, 0x0300
- rlwinm r3, r3, 8, 16, 23
- or r20, r20, r3
- or r23, r23, r4
-
- add r16, r16, r17 /* add to total memory size */
-
- subi r3, r16, 1 /* calculate end address of bank1 */
- andi. r4, r3, 0x0300
- andi. r3, r3, 0x00ff
- rlwinm r3, r3, 8, 16, 23
- or r21, r21, r3
- or r24, r24, r4
-
- ori r22, r22, 2 /* enable bank1 */
- b bankOk
-nobank1:
- ori r23, r23, 0x0300 /* set bank1 start to unused area */
- ori r24, r24, 0x0300 /* set bank1 end to unused area */
-bankOk:
- addi r3, r29, (Mactivate-MessageBlock)
- bl Printf
- mr r3, r16
- bl OutDec
- addi r3, r29, (Mact0123e-MessageBlock)
- bl Printf
-
-/*
- * overwrite MSAR1, MEAR1, EMSAR1, and EMEAR1
- */
- addis r3, r0, 0x8000 /* ADDR_80 */
- ori r3, r3, 0x0080 /* MSAR1 */
- stwbrx r3, 0, r1
- eieio
- stwbrx r20, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_88 */
- ori r3, r3, 0x0088 /* EMSAR1 */
- stwbrx r3, 0, r1
- eieio
- stwbrx r23, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_90 */
- ori r3, r3, 0x0090 /* MEAR1 */
- stwbrx r3, 0, r1
- eieio
- stwbrx r21, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_98 */
- ori r3, r3, 0x0098 /* EMEAR1 */
- stwbrx r3, 0, r1
- eieio
- stwbrx r24, 0, r2
-
- addis r3, r0, 0x8000 /* ADDR_A0 */
- ori r3, r3, 0x00a0 /* MBER */
- stwbrx r3, 0, r1
- eieio
- stwbrx r22, 0, r2
-
-/*
- * delay to let SDRAM go through several initialization/refresh cycles
- */
- lis r3, 3
- mtctr r3
-memStartWait_1:
- bdnz memStartWait_1
- eieio
-
-/*
- * set LEDs end
- */
- li r3, 0xf
- lis r30, CFG_USR_LED_BASE@h
- stb r3, 2(r30)
- sync
-
- mtlr r13
- blr /* EXIT board_asm_init ... */
-
-/*----------------------------------------------------------------------------*/
-/*
- * print a message to COM1 in polling mode (r10=COM1 port, r3=(char*)string)
- */
-
-Printf:
- lis r10, CFG_NS16550_COM1@h /* COM1 base address*/
- ori r10, r10, CFG_NS16550_COM1@l
-WaitChr:
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, WaitChr /* wait till empty */
- lbzx r0, r0, r3 /* get char */
- stb r0, 0(r10) /* write to transmit reg */
- eieio
- addi r3, r3, 1 /* next char */
- lbzx r0, r0, r3 /* get char */
- cmpwi cr1, r0, 0 /* end of string ? */
- bne cr1, WaitChr
- blr
-
-/*
- * print a char to COM1 in polling mode (r10=COM1 port, r3=char)
- */
-OutChr:
- lis r10, CFG_NS16550_COM1@h /* COM1 base address*/
- ori r10, r10, CFG_NS16550_COM1@l
-OutChr1:
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, OutChr1 /* wait till empty */
- stb r3, 0(r10) /* write to transmit reg */
- eieio
- blr
-
-/*
- * print 8/4/2 digits hex value to COM1 in polling mode (r10=COM1 port, r3=val)
- */
-OutHex2:
- li r9, 4 /* shift reg for 2 digits */
- b OHstart
-OutHex4:
- li r9, 12 /* shift reg for 4 digits */
- b OHstart
-OutHex:
- li r9, 28 /* shift reg for 8 digits */
-OHstart:
- lis r10, CFG_NS16550_COM1@h /* COM1 base address*/
- ori r10, r10, CFG_NS16550_COM1@l
-OutDig:
- lbz r0, 0(r29) /* slow down dummy read */
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, OutDig
- sraw r0, r3, r9
- clrlwi r0, r0, 28
- cmpwi cr1, r0, 9
- ble cr1, digIsNum
- addic r0, r0, 55
- b nextDig
-digIsNum:
- addic r0, r0, 48
-nextDig:
- stb r0, 0(r10) /* write to transmit reg */
- eieio
- addic. r9, r9, -4
- bge OutDig
- blr
-
-/*
- * print 3 digits hdec value to COM1 in polling mode
- * (r10=COM1 port, r3=val, r7=x00, r8=x0, r9=x, r0, r6=scratch)
- */
-OutDec:
- li r6, 10
- divwu r0, r3, r6 /* r0 = r3 / 10, r9 = r3 mod 10 */
- mullw r10, r0, r6
- subf r9, r10, r3
- mr r3, r0
- divwu r0, r3, r6 /* r0 = r3 / 10, r8 = r3 mod 10 */
- mullw r10, r0, r6
- subf r8, r10, r3
- mr r3, r0
- divwu r0, r3, r6 /* r0 = r3 / 10, r7 = r3 mod 10 */
- mullw r10, r0, r6
- subf r7, r10, r3
- lis r10, CFG_NS16550_COM1@h /* COM1 base address*/
- ori r10, r10, CFG_NS16550_COM1@l
- or. r7, r7, r7
- bne noblank1
- li r3, 0x20
- b OutDec4
-noblank1:
- addi r3, r7, 48 /* convert to ASCII */
-OutDec4:
- lbz r0, 0(r29) /* slow down dummy read */
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, OutDec4
- stb r3, 0(r10) /* x00 to transmit */
- eieio
- or. r7, r7, r8
- beq OutDec5
- addi r3, r8, 48 /* convert to ASCII */
-OutDec5:
- lbz r0, 0(r29) /* slow down dummy read */
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, OutDec5
- stb r3, 0(r10) /* x0 to transmit */
- eieio
- addi r3, r9, 48 /* convert to ASCII */
-OutDec6:
- lbz r0, 0(r29) /* slow down dummy read */
- lbz r0, 5(r10) /* read link status */
- eieio
- andi. r0, r0, 0x40 /* mask transmitter empty bit */
- beq cr0, OutDec6
- stb r3, 0(r10) /* x to transmit */
- eieio
- blr
-
-/*
- * hang endless loop
- */
-toggleError: /* fail type in r6, r7=0xff, toggle LEDs */
- stb r7, 2(r30) /* r7 to LED */
- li r0, 0
- lis r9, 127
- ori r9, r9, 65535
-toggleError1:
- addic r0, r0, 1
- cmpw cr1, r0, r9
- ble cr1, toggleError1
- stb r6, 2(r30) /* r6 to LED */
- li r0, 0
- lis r9, 127
- ori r9, r9, 65535
-toggleError2:
- addic r0, r0, 1
- cmpw cr1, r0, r9
- ble cr1, toggleError2
- b toggleError
-
-/*
- * routines to read from ram spd
- */
-spdWaitIdle:
- lis r0, 0x1 /* timeout for about 100us */
- mtctr r0
-iSpd:
- lbz r10, 12(r14)
- andi. r10, r10, 0x20 /* mask and test MBB */
- beq idle
- bdnz iSpd
- orc. r10, r0, r0 /* return -1 to caller */
-idle:
- bclr 20, 0 /* return to caller */
-
-waitSpd:
- lis r0, 0x10 /* timeout for about 1.5ms */
- mtctr r0
-wSpd:
- lbz r10, 12(r14)
- andi. r10, r10, 0x82
- cmpli 0, 0, r10, 0x82 /* test MCF and MIF set */
- beq wend
- bdnz wSpd
- orc. r10, r0, r0 /* return -1 to caller */
- bclr 20, 0 /* return to caller */
-
-wend:
- li r10, 0
- stb r10, 12(r14) /* clear status */
- bclr 20, 0 /* return to caller */
-
-/*
- * spdread
- * in: r3 adr to read
- * out: r3 val or -1 for error
- * uses r10, assumes that r14 points to I2C controller
- */
-spdRead:
- mfspr r25, 8 /* save link register */
-
- bl spdWaitIdle
- bne spdErr
-
- li r10, 0x80 /* start with MEN */
- stb r10, 8(r14)
- eieio
-
- li r10, 0xb0 /* start as master */
- stb r10, 8(r14)
- eieio
-
- li r10, 0xa0 /* write device 0xA0 */
- stb r10, 16(r14)
- eieio
- bl waitSpd
- bne spdErr
-
- lbz r10, 12(r14) /* test ACK */
- andi. r10, r10, 0x01
- bne gotNoAck
-
- stb r3, 16(r14) /* data address */
- eieio
- bl waitSpd
- bne spdErr
-
-
- li r10, 0xb4 /* switch to read - restart */
- stb r10, 8(r14)
- eieio
-
- li r10, 0xa1 /* read device 0xA0 */
- stb r10, 16(r14)
- eieio
- bl waitSpd
- bne spdErr
-
- li r10, 0xa8 /* no ACK */
- stb r10, 8(r14)
- eieio
-
- lbz r10, 16(r14) /* trigger read next byte */
- eieio
- bl waitSpd
- bne spdErr
-
- li r10, 0x88 /* generate STOP condition */
- stb r10, 8(r14)
- eieio
-
- lbz r3, 16(r14) /* return read byte */
-
- mtspr 8, r25 /* restore link register */
- blr
-
-gotNoAck:
- li r10, 0x80 /* generate STOP condition */
- stb r10, 8(r14)
- eieio
-spdErr:
- orc r3, r0, r0 /* return -1 */
- mtspr 8, r25 /* restore link register */
- blr
-
-get_lnk_reg:
- mflr r3 /* return link reg */
- blr
-
-MessageBlock:
-
-MinitLogo:
- .ascii "\015\012*** ELTEC Elektronik, Mainz ***\015\012"
- .ascii "\015\012Initialising RAM\015\012\000"
-Mspd01:
- .ascii " Reading SPD of SODIMM ...... \000"
-MramTyp:
- .ascii "\015\012\SDRAM with CL=2 at 100 MHz required!\015\012\000"
-MramConfErr:
- .ascii "\015\012\Unsupported SODIMM Configuration!\015\012\000"
-Mactivate:
- .ascii " Activating \000"
-Mact0123e:
- .ascii " MByte.\015\012\000"
-Mok:
- .ascii "OK \015\012\000"
-Mfail:
- .ascii "FAILED \015\012\000"
-MnewLine:
- .ascii "\015\012\000"
- .align 4
diff --git a/board/eltec/elppc/config.mk b/board/eltec/elppc/config.mk
deleted file mode 100644
index aa463c5dc1..0000000000
--- a/board/eltec/elppc/config.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# (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
-#
-
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/eltec/elppc/eepro100_srom.c b/board/eltec/elppc/eepro100_srom.c
deleted file mode 100644
index f021c50cd6..0000000000
--- a/board/eltec/elppc/eepro100_srom.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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
- */
-
-/*
- * Local network srom writing for first time run
- */
-
-/* includes */
-#include <common.h>
-#include <pci.h>
-#include <net.h>
-#include "srom.h"
-
-extern int eepro100_write_eeprom (struct eth_device* dev,
- int location, int addr_len, unsigned short data);
-
-/*----------------------------------------------------------------------------*/
-
-unsigned short eepro100_srom_checksum (unsigned short *sromdata)
-{
- unsigned short sum = 0;
- unsigned int i;
-
- for (i = 0; i < (EE_SIZE-1); i++)
- {
- sum += sromdata[i];
- }
- return (EE_CHECKSUM - sum);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int eepro100_srom_store (unsigned short *source)
-{
- int count;
- struct eth_device onboard_dev;
-
- /* get onboard network iobase */
- pci_read_config_dword(PCI_BDF(0,0x10,0), PCI_BASE_ADDRESS_0,
- (unsigned int *)&onboard_dev.iobase);
- onboard_dev.iobase &= ~0xf;
-
- source[63] = eepro100_srom_checksum (source);
-
- for (count=0; count < EE_SIZE; count++)
- {
- if ( eepro100_write_eeprom ((struct eth_device*)&onboard_dev,
- count, EE_ADDR_BITS, SROM_SHORT(source)) == -1 )
- return -1;
- source++;
- }
- return 0;
-}
-
-/*----------------------------------------------------------------------------*/
-
-#ifdef EEPRO100_SROM_CHECK
-
-extern int read_eeprom (struct eth_device* dev, int location, int addr_len);
-
-void eepro100_srom_load (unsigned short *destination)
-{
- int count;
- struct eth_device onboard_dev;
-#ifdef DEBUG
- int lr = 0;
- printf ("eepro100_srom_download:\n");
-#endif
-
- /* get onboard network iobase */
- pci_read_config_dword(PCI_BDF(0,0x10,0), PCI_BASE_ADDRESS_0,
- &onboard_dev.iobase);
- onboard_dev.iobase &= ~0xf;
-
- memset (destination, 0x65, 128);
-
- for (count=0; count < 0x40; count++)
- {
- *destination++ = read_eeprom (struct eth_device*)&onboard_dev,
- count, EE_ADDR_BITS);
-#ifdef DEBUG
- printf ("%04x ", *(destination - 1));
- if (lr++ == 7)
- {
- printf("\n");
- lr = 0;
- }
-#endif
- }
-}
-#endif /* EEPRO100_SROM_CHECK */
-
-/*----------------------------------------------------------------------------*/
diff --git a/board/eltec/elppc/elppc.c b/board/eltec/elppc/elppc.c
deleted file mode 100644
index 108adb13d5..0000000000
--- a/board/eltec/elppc/elppc.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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 <common.h>
-#include <command.h>
-#include <mpc106.h>
-#include <video_fb.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-int checkboard (void)
-{
- puts ("Board: ELTEC PowerPC\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int checkflash (void)
-{
- /* TODO */
- printf ("Test not implemented !\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-static unsigned int mpc106_read_cfg_dword (unsigned int reg)
-{
- unsigned int reg_addr = MPC106_REG | (reg & 0xFFFFFFFC);
-
- out32r (MPC106_REG_ADDR, reg_addr);
-
- return (in32r (MPC106_REG_DATA | (reg & 0x3)));
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int dram_size (int board_type)
-{
- /*
- * No actual initialisation to do - done when setting up
- * PICRs MCCRs ME/SARs etc in asm_init.S.
- */
-
- register unsigned long i, msar1, mear1, memSize;
-
-#if defined(CFG_MEMTEST)
- register unsigned long reg;
-
- printf ("Testing DRAM\n");
-
- /* write each mem addr with it's address */
- for (reg = CFG_MEMTEST_START; reg < CFG_MEMTEST_END; reg += 4)
- *reg = reg;
-
- for (reg = CFG_MEMTEST_START; reg < CFG_MEMTEST_END; reg += 4) {
- if (*reg != reg)
- return -1;
- }
-#endif
-
- /*
- * Since MPC107 memory controller chip has already been set to
- * control all memory, just read and interpret its memory boundery register.
- */
- memSize = 0;
- msar1 = mpc106_read_cfg_dword (MPC106_MSAR1);
- mear1 = mpc106_read_cfg_dword (MPC106_MEAR1);
- i = mpc106_read_cfg_dword (MPC106_MBER) & 0xf;
-
- do {
- if (i & 0x01) /* is bank enabled ? */
- memSize += (mear1 & 0xff) - (msar1 & 0xff) + 1;
- msar1 >>= 8;
- mear1 >>= 8;
- i >>= 1;
- } while (i);
-
- return (memSize * 0x100000);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- return dram_size (board_type);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * The BAB 911 can be reset by writing bit 0 of the Processor Initialization
- * Register PI in the MPC 107 (at offset 0x41090 of the Embedded Utilities
- * Memory Block).
- */
-int do_reset (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- out8 (MPC107_EUMB_PI, 1);
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-#if defined(CONFIG_WATCHDOG)
-
-/*
- * Since the 7xx CPUs don't have an internal watchdog, this function is
- * board specific.
- */
-void watchdog_reset (void)
-{
-}
-#endif /* CONFIG_WATCHDOG */
-
-/* ------------------------------------------------------------------------- */
-
-void after_reloc (ulong dest_addr)
-{
- /*
- * Jump to the main U-Boot board init code
- */
- board_init_r ((gd_t *)gd, dest_addr);
-}
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef CONFIG_CONSOLE_EXTRA_INFO
-extern GraphicDevice smi;
-
-void video_get_info_str (int line_number, char *info)
-{
- /* init video info strings for graphic console */
- switch (line_number) {
- case 1:
- sprintf (info, " MPC7xx V%d.%d at %d / %d MHz",
- (get_pvr () >> 8) & 0xFF, get_pvr () & 0xFF, 400, 100);
- return;
- case 2:
- sprintf (info, " ELTEC ELPPC with %ld MB DRAM and %ld MB FLASH",
- dram_size (0) / 0x100000, flash_init () / 0x100000);
- return;
- case 3:
- sprintf (info, " %s", smi.modeIdent);
- return;
- }
-
- /* no more info lines */
- *info = 0;
- return;
-}
-#endif
diff --git a/board/eltec/elppc/flash.c b/board/eltec/elppc/flash.c
deleted file mode 100644
index 442dd00519..0000000000
--- a/board/eltec/elppc/flash.c
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- * (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
- */
-
-/*
- * 07-10-2002 Frank Gottschling: added 29F032 flash (ELPPC).
- * fixed monitor protection part
- *
- * 09-18-2001 Andreas Heppel: Reduced the code in here to the usage
- * of AMD's 29F040 and 29F016 flashes, since the BAB7xx does use
- * any other.
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/pci_io.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*flash command address offsets*/
-
-#define ADDR0 (0x555)
-#define ADDR1 (0x2AA)
-#define ADDR3 (0x001)
-
-#define FLASH_WORD_SIZE unsigned char
-
-/*----------------------------------------------------------------------------*/
-
-unsigned long flash_init (void)
-{
- unsigned long size1, size2;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i)
- {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* initialise 1st flash */
- size1 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN)
- {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size1, size1<<20);
- }
-
- /* initialise 2nd flash */
- size2 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- if (flash_info[1].flash_id == FLASH_UNKNOWN)
- {
- printf ("## Unknown FLASH on Bank 1 - Size = 0x%08lx = %ld MB\n",
- size2, size2<<20);
- }
-
- /* monitor protection ON by default */
- if (size1 == 512*1024)
- {
- (void)flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE0_PRELIM,
- FLASH_BASE0_PRELIM+monitor_flash_len-1,
- &flash_info[0]);
- }
- if (size2 == 512*1024)
- {
- (void)flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE1_PRELIM,
- FLASH_BASE1_PRELIM+monitor_flash_len-1,
- &flash_info[1]);
- }
- if (size2 == 4*1024*1024)
- {
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE+monitor_flash_len-1,
- &flash_info[1]);
- }
-
- return (size1 + size2);
-}
-
-/*----------------------------------------------------------------------------*/
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- flash_init();
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case AMD_ID_F040B:
- printf ("AM29F040B (4 Mbit)\n");
- break;
- case AMD_ID_F016D:
- printf ("AM29F016D (16 Mbit)\n");
- break;
- case AMD_ID_F032B:
- printf ("AM29F032B (32 Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size >= (1 << 20)) {
- printf (" Size: %ld MB in %d Sectors\n", info->size >> 20, info->sector_count);
- } else {
- printf (" Size: %ld kB in %d Sectors\n", info->size >> 10, info->sector_count);
- }
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
-
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++) {
- if (*flash++ != 0xffffffff) {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
-
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
- }
- printf ("\n");
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * The following code cannot be run from FLASH!
- */
-ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong vendor, devid;
- ulong base = (ulong)addr;
- volatile unsigned char *caddr = (unsigned char *)addr;
-
-#ifdef DEBUG
- printf("flash_get_size for address 0x%lx: \n", (unsigned long)caddr);
-#endif
-
- /* Write auto select command: read Manufacturer ID */
- caddr[0] = 0xF0; /* reset bank */
- udelay(10);
-
- eieio();
- caddr[0x555] = 0xAA;
- udelay(10);
- caddr[0x2AA] = 0x55;
- udelay(10);
- caddr[0x555] = 0x90;
-
- udelay(10);
-
- vendor = caddr[0];
- devid = caddr[1];
-
-#ifdef DEBUG
- printf("Manufacturer: 0x%lx\n", vendor);
-#endif
-
- vendor &= 0xff;
- devid &= 0xff;
-
- /* We accept only two AMD types */
- switch (vendor) {
- case (FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- switch (devid) {
- case (FLASH_WORD_SIZE)AMD_ID_F040B:
- info->flash_id |= AMD_ID_F040B;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_F016D:
- info->flash_id |= AMD_ID_F016D;
- info->sector_count = 32;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_F032B:
- info->flash_id |= AMD_ID_F032B;
- info->sector_count = 64;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
-#ifdef DEBUG
- printf("flash id 0x%lx; sector count 0x%x, size 0x%lx\n", info->flash_id, info->sector_count, info->size);
-#endif
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* sector base address */
- info->start[i] = base + i * (info->size / info->sector_count);
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- caddr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = caddr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- caddr = (volatile unsigned char *)info->start[0];
- caddr[0] = 0xF0; /* reset bank */
- }
-
- return (info->size);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
- int rc = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (FLASH_WORD_SIZE *)(info->start[sect]);
- if (info->flash_id & FLASH_MAN_SST) {
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[0] = (FLASH_WORD_SIZE)0x00500050; /* block erase */
- udelay(30000); /* wait 30 ms */
- }
- else
- addr[0] = (FLASH_WORD_SIZE)0x00300030; /* sector erase */
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (FLASH_WORD_SIZE *)(info->start[l_sect]);
- while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return rc;
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*----------------------------------------------------------------------------*/
-/* Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)(info->start[0]);
- volatile FLASH_WORD_SIZE *dest2 = (FLASH_WORD_SIZE *)dest;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
- ulong start;
- int flag;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile FLASH_WORD_SIZE *)dest) &
- (FLASH_WORD_SIZE)data) != (FLASH_WORD_SIZE)data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- for (i=0; i<4/sizeof(FLASH_WORD_SIZE); i++)
- {
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (FLASH_WORD_SIZE)0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-
-/*----------------------------------------------------------------------------*/
diff --git a/board/eltec/elppc/misc.c b/board/eltec/elppc/misc.c
deleted file mode 100644
index 5fb20ae66c..0000000000
--- a/board/eltec/elppc/misc.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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
- */
-
-/* includes */
-#include <common.h>
-#include <linux/ctype.h>
-#include <pci.h>
-#include <net.h>
-#include "srom.h"
-
-/* imports */
-extern char console_buffer[CFG_CBSIZE];
-extern int l2_cache_enable (int l2control);
-extern int eepro100_write_eeprom (struct eth_device *dev, int location,
- int addr_len, unsigned short data);
-extern int read_eeprom (struct eth_device *dev, int location, int addr_len);
-
-/*----------------------------------------------------------------------------*/
-/*
- * read/write to nvram is only byte access
- */
-void *nvram_read (void *dest, const long src, size_t count)
-{
- uchar *d = (uchar *) dest;
- uchar *s = (uchar *) (CFG_ENV_MAP_ADRS + src);
-
- while (count--)
- *d++ = *s++;
-
- return dest;
-}
-
-void nvram_write (long dest, const void *src, size_t count)
-{
- uchar *d = (uchar *) (CFG_ENV_MAP_ADRS + dest);
- uchar *s = (uchar *) src;
-
- while (count--)
- *d++ = *s++;
-}
-
-/*----------------------------------------------------------------------------*/
-/*
- * handle sroms on ELPPC
- * fix ether address
- * set serial console as default
- */
-int misc_init_r (void)
-{
- revinfo eerev;
- u_char *ptr;
- u_int i, l, initSrom, copyNv;
- char buf[256];
- char hex[23] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0,
- 0, 0, 0, 0, 10, 11, 12, 13, 14, 15
- };
-
- /* Clock setting for MPC107 i2c */
- mpc107_i2c_init (MPC107_EUMB_ADDR, 0x2b);
-
- /* Reset the EPIC */
- out32r (MPC107_EUMB_GCR, 0xa0000000);
- while (in32r (MPC107_EUMB_GCR) & 0x80000000); /* Wait for reset to complete */
- out32r (MPC107_EUMB_GCR, 0x20000000); /* Put into into mixed mode */
- while (in32r (MPC107_EUMB_IACKR) != 0xff); /* Clear all pending interrupts */
-
- /*
- * Check/Remake revision info
- */
- initSrom = 0;
- copyNv = 0;
-
- /* read out current revision srom contens */
- mpc107_srom_load (0x0000, (u_char *) & eerev, sizeof (revinfo),
- SECOND_DEVICE, FIRST_BLOCK);
-
- /* read out current nvram shadow image */
- nvram_read (buf, CFG_NV_SROM_COPY_ADDR, CFG_SROM_SIZE);
-
- if (strcmp (eerev.magic, "ELTEC") != 0) {
- /* srom is not initialized -> create a default revision info */
- for (i = 0, ptr = (u_char *) & eerev; i < sizeof (revinfo);
- i++)
- *ptr++ = 0x00;
- strcpy (eerev.magic, "ELTEC");
- eerev.revrev[0] = 1;
- eerev.revrev[1] = 0;
- eerev.size = 0x00E0;
- eerev.category[0] = 0x01;
-
- /* node id from dead e128 as default */
- eerev.etheraddr[0] = 0x00;
- eerev.etheraddr[1] = 0x00;
- eerev.etheraddr[2] = 0x5B;
- eerev.etheraddr[3] = 0x00;
- eerev.etheraddr[4] = 0x2E;
- eerev.etheraddr[5] = 0x4D;
-
- /* cache config word for ELPPC */
- *(int *) &eerev.res[0] = 0;
-
- initSrom = 1; /* force dialog */
- copyNv = 1; /* copy to nvram */
- }
-
- if ((copyNv == 0)
- && (el_srom_checksum ((u_char *) & eerev, CFG_SROM_SIZE) !=
- el_srom_checksum ((u_char *) buf, CFG_SROM_SIZE))) {
- printf ("Invalid revision info copy in nvram !\n");
- printf ("Press key:\n <c> to copy current revision info to nvram.\n");
- printf (" <r> to reenter revision info.\n");
- printf ("=> ");
- if (0 != readline (NULL)) {
- switch ((char) toupper (console_buffer[0])) {
- case 'C':
- copyNv = 1;
- break;
- case 'R':
- copyNv = 1;
- initSrom = 1;
- break;
- }
- }
- }
-
- if (initSrom) {
- memcpy (buf, &eerev.revision[0][0], 14); /* save all revision info */
- printf ("Enter revision number (0-9): %c ",
- eerev.revision[0][0]);
- if (0 != readline (NULL)) {
- eerev.revision[0][0] =
- (char) toupper (console_buffer[0]);
- memcpy (&eerev.revision[1][0], buf, 12); /* shift rest of rev info */
- }
-
- printf ("Enter revision character (A-Z): %c ",
- eerev.revision[0][1]);
- if (1 == readline (NULL)) {
- eerev.revision[0][1] =
- (char) toupper (console_buffer[0]);
- }
-
- printf ("Enter board name (V-XXXX-XXXX): %s ",
- (char *) &eerev.board);
- if (11 == readline (NULL)) {
- for (i = 0; i < 11; i++)
- eerev.board[i] =
- (char) toupper (console_buffer[i]);
- eerev.board[11] = '\0';
- }
-
- printf ("Enter serial number: %s ", (char *) &eerev.serial);
- if (6 == readline (NULL)) {
- for (i = 0; i < 6; i++)
- eerev.serial[i] = console_buffer[i];
- eerev.serial[6] = '\0';
- }
-
- printf ("Enter ether node ID with leading zero (HEX): %02x%02x%02x%02x%02x%02x ", eerev.etheraddr[0], eerev.etheraddr[1], eerev.etheraddr[2], eerev.etheraddr[3], eerev.etheraddr[4], eerev.etheraddr[5]);
- if (12 == readline (NULL)) {
- for (i = 0; i < 12; i += 2)
- eerev.etheraddr[i >> 1] =
- (char) (16 *
- hex[toupper
- (console_buffer[i]) -
- '0'] +
- hex[toupper
- (console_buffer[i + 1]) -
- '0']);
- }
-
- l = strlen ((char *) &eerev.text);
- printf ("Add to text section (max 64 chr): %s ",
- (char *) &eerev.text);
- if (0 != readline (NULL)) {
- for (i = l; i < 63; i++)
- eerev.text[i] = console_buffer[i - l];
- eerev.text[63] = '\0';
- }
-
- /* prepare network eeprom */
- memset (buf, 0, 128);
-
- buf[0] = eerev.etheraddr[1];
- buf[1] = eerev.etheraddr[0];
- buf[2] = eerev.etheraddr[3];
- buf[3] = eerev.etheraddr[2];
- buf[4] = eerev.etheraddr[5];
- buf[5] = eerev.etheraddr[4];
-
- *(unsigned short *) &buf[20] = 0x48B2;
- *(unsigned short *) &buf[22] = 0x0004;
- *(unsigned short *) &buf[24] = 0x1433;
-
- printf ("\nSRom: Writing i82559 info ........ ");
- if (eepro100_srom_store ((unsigned short *) buf) == -1)
- printf ("FAILED\n");
- else
- printf ("OK\n");
-
- /* update CRC */
- eerev.crc =
- el_srom_checksum ((u_char *) eerev.board, eerev.size);
-
- /* write new values */
- printf ("\nSRom: Writing revision info ...... ");
- if (mpc107_srom_store
- ((BLOCK_SIZE - sizeof (revinfo)), (u_char *) & eerev,
- sizeof (revinfo), SECOND_DEVICE, FIRST_BLOCK) == -1)
- printf ("FAILED\n\n");
- else
- printf ("OK\n\n");
-
- /* write new values as shadow image to nvram */
- nvram_write (CFG_NV_SROM_COPY_ADDR, (void *) &eerev,
- CFG_SROM_SIZE);
-
- }
-
- /*if (initSrom) */
- /* copy current values as shadow image to nvram */
- if (initSrom == 0 && copyNv == 1)
- nvram_write (CFG_NV_SROM_COPY_ADDR, (void *) &eerev,
- CFG_SROM_SIZE);
-
- /* update environment */
- sprintf (buf, "%02x:%02x:%02x:%02x:%02x:%02x",
- eerev.etheraddr[0], eerev.etheraddr[1],
- eerev.etheraddr[2], eerev.etheraddr[3],
- eerev.etheraddr[4], eerev.etheraddr[5]);
- setenv ("ethaddr", buf);
-
- /* print actual board identification */
- printf ("Ident: %s Ser %s Rev %c%c\n",
- eerev.board, (char *) &eerev.serial,
- eerev.revision[0][0], eerev.revision[0][1]);
-
- return (0);
-}
-
-/*----------------------------------------------------------------------------*/
diff --git a/board/eltec/elppc/mpc107_i2c.c b/board/eltec/elppc/mpc107_i2c.c
deleted file mode 100644
index ae6642e952..0000000000
--- a/board/eltec/elppc/mpc107_i2c.c
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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
- */
-
-/* includes */
-#include <common.h>
-#include "srom.h"
-
-/* locals */
-static unsigned long mpc107_eumb_addr = 0;
-
-/*----------------------------------------------------------------------------*/
-
-/*
- * calculate checksum for ELTEC revision srom
- */
-unsigned long el_srom_checksum (ptr, size)
-register unsigned char *ptr;
-unsigned long size;
-{
- u_long f, accu = 0;
- u_int i;
- u_char byte;
-
- for (; size; size--)
- {
- byte = *ptr++;
- for (i = 8; i; i--)
- {
- f = ((byte & 1) ^ (accu & 1)) ? 0x84083001 : 0;
- accu >>= 1; accu ^= f;
- byte >>= 1;
- }
- }
- return(accu);
-}
-
-/*----------------------------------------------------------------------------*/
-
-static int mpc107_i2c_wait ( unsigned long timeout )
-{
- unsigned long x;
-
- while (((x = in32r(MPC107_I2CSR)) & 0x82) != 0x82)
- {
- if (!timeout--)
- return -1;
- }
-
- if (x & 0x10)
- {
- return -1;
- }
- out32r(MPC107_I2CSR, 0);
-
- return 0;
-}
-
-/*----------------------------------------------------------------------------*/
-
-static int mpc107_i2c_wait_idle ( unsigned long timeout )
-{
- while (in32r(MPC107_I2CSR) & 0x20)
- {
- if (!timeout--)
- return -1;
- }
- return 0;
-}
-
-
-/*----------------------------------------------------------------------------*/
-
-int mpc107_i2c_read_byte (
- unsigned char device,
- unsigned char block,
- unsigned char offset )
-{
- unsigned long timeout = MPC107_I2C_TIMEOUT;
- int data;
-
- if (!mpc107_eumb_addr)
- return -6;
-
- mpc107_i2c_wait_idle (timeout);
-
- /* Start with MEN */
- out32r(MPC107_I2CCR, 0x80);
-
- /* Start as master */
- out32r(MPC107_I2CCR, 0xB0);
- out32r(MPC107_I2CDR, (0xA0 | device | block));
-
- if (mpc107_i2c_wait(timeout) < 0)
- {
- printf("mpc107_i2c_read Error 1\n");
- return -2;
- }
-
- if (in32r(MPC107_I2CSR)&0x1)
- {
- /* Generate STOP condition; device busy or not existing */
- out32r(MPC107_I2CCR, 0x80);
- return -1;
- }
-
- /* Data address */
- out32r(MPC107_I2CDR, offset);
-
- if (mpc107_i2c_wait(timeout) < 0)
- {
- printf("mpc107_i2c_read Error 2\n");
- return -3;
- }
-
- /* Switch to read - restart */
- out32r(MPC107_I2CCR, 0xB4);
- out32r(MPC107_I2CDR, (0xA1 | device | block));
-
- if (mpc107_i2c_wait(timeout) < 0)
- {
- printf("mpc107_i2c_read Error 3\n");
- return -4;
- }
-
- out32r(MPC107_I2CCR, 0xA8); /* no ACK */
- in32r(MPC107_I2CDR);
-
- if (mpc107_i2c_wait(timeout) < 0)
- {
- printf("mpc107_i2c_read Error 4\n");
- return -5;
- }
- /* Generate STOP condition */
- out32r(MPC107_I2CCR, 0x88);
-
- /* read */
- data = in32r(MPC107_I2CDR);
-
- return (data);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int mpc107_i2c_write_byte (
- unsigned char device,
- unsigned char block,
- unsigned char offset,
- unsigned char val )
-{
-
- unsigned long timeout = MPC107_I2C_TIMEOUT;
-
- if (!mpc107_eumb_addr)
- return -6;
-
- mpc107_i2c_wait_idle(timeout);
-
- /* Start with MEN */
- out32r(MPC107_I2CCR, 0x80);
-
- /* Start as master */
- out32r(MPC107_I2CCR, 0xB0);
- out32r(MPC107_I2CDR, (0xA0 | device | block));
-
- if (mpc107_i2c_wait(timeout) < 0)
- {
- printf("mpc107_i2c_write Error 1\n");
- return -1;
- }
-
- /* Data address */
- out32r(MPC107_I2CDR, offset);
-
- if (mpc107_i2c_wait(timeout) < 0)
- {
- printf("mpc107_i2c_write Error 2\n");
- return -1;
- }
-
- /* Write */
- out32r(MPC107_I2CDR, val);
- if (mpc107_i2c_wait(timeout) < 0)
- {
- printf("mpc107_i2c_write Error 3\n");
- return -1;
- }
-
- /* Generate Stop Condition */
- out32r(MPC107_I2CCR, 0x80);
-
- /* Return ACK or no ACK */
- return (in32r(MPC107_I2CSR) & 0x01);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int mpc107_srom_load (
- unsigned char addr,
- unsigned char *pBuf,
- int cnt,
- unsigned char device,
- unsigned char block )
-{
- register int i;
- int val;
- int timeout;
-
- for (i = 0; i < cnt; i++)
- {
- timeout=100;
- do
- {
- val = mpc107_i2c_read_byte (device, block, addr);
- if (val < -1)
- {
- printf("i2c_read_error %d at dev %x block %x addr %x\n",
- val, device, block, addr);
- return -1;
- }
- else if (timeout==0)
- {
- printf ("i2c_read_error: timeout at dev %x block %x addr %x\n",
- device, block, addr);
- return -1;
- }
- timeout--;
- } while (val == -1); /* if no ack: try again! */
-
- *pBuf++ = (unsigned char)val;
- addr++;
-
- if ((addr == 0) && (i != cnt-1)) /* is it the same block ? */
- {
- if (block == FIRST_BLOCK)
- block = SECOND_BLOCK;
- else
- {
- printf ("ic2_read_error: read beyond 2. block !\n");
- return -1;
- }
- }
- }
- udelay(100000);
- return (cnt);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int mpc107_srom_store (
- unsigned char addr,
- unsigned char *pBuf,
- int cnt,
- unsigned char device,
- unsigned char block )
-{
- register int i;
-
- for (i = 0; i < cnt; i++)
- {
- while (mpc107_i2c_write_byte (device,block,addr,*pBuf) == 1);
- addr++;
- pBuf++;
-
- if ((addr == 0) && (i != cnt-1)) /* is it the same block ? */
- {
- if (block == FIRST_BLOCK)
- block = SECOND_BLOCK;
- else
- {
- printf ("ic2_write_error: write beyond 2. block !\n");
- return -1;
- }
- }
- }
- udelay(100000);
- return(cnt);
-}
-
-/*----------------------------------------------------------------------------*/
-
-int mpc107_i2c_init ( unsigned long eumb_addr, unsigned long divider )
-{
- unsigned long x;
-
- if (eumb_addr)
- mpc107_eumb_addr = eumb_addr;
- else
- return -1;
-
- /* Set I2C clock */
- x = in32r(MPC107_I2CFDR) & 0xffffff00;
- out32r(MPC107_I2CFDR, (x | divider));
-
- /* Clear arbitration */
- out32r(MPC107_I2CSR, 0);
-
- return mpc107_eumb_addr;
-}
-
-/*----------------------------------------------------------------------------*/
diff --git a/board/eltec/elppc/pci.c b/board/eltec/elppc/pci.c
deleted file mode 100644
index 5b115ea617..0000000000
--- a/board/eltec/elppc/pci.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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
- */
-
-/*
- * PCI initialisation for the MPC10x.
- */
-
-#include <common.h>
-#include <pci.h>
-#include <mpc106.h>
-
-#ifdef CONFIG_PCI
-
-struct pci_controller local_hose;
-
-void pci_init_board(void)
-{
- struct pci_controller* hose = (struct pci_controller *)&local_hose;
- u16 reg16;
-
- hose->first_busno = 0;
- hose->last_busno = 0xff;
-
- pci_set_region(hose->regions + 0,
- CFG_PCI_MEMORY_BUS,
- CFG_PCI_MEMORY_PHYS,
- CFG_PCI_MEMORY_SIZE,
- PCI_REGION_MEM | PCI_REGION_MEMORY);
-
- /* PCI memory space */
- pci_set_region(hose->regions + 1,
- CFG_PCI_MEM_BUS,
- CFG_PCI_MEM_PHYS,
- CFG_PCI_MEM_SIZE,
- PCI_REGION_MEM);
-
- /* ISA/PCI memory space */
- pci_set_region(hose->regions + 2,
- CFG_ISA_MEM_BUS,
- CFG_ISA_MEM_PHYS,
- CFG_ISA_MEM_SIZE,
- PCI_REGION_MEM);
-
- /* PCI I/O space */
- pci_set_region(hose->regions + 3,
- CFG_PCI_IO_BUS,
- CFG_PCI_IO_PHYS,
- CFG_PCI_IO_SIZE,
- PCI_REGION_IO);
-
- /* ISA/PCI I/O space */
- pci_set_region(hose->regions + 4,
- CFG_ISA_IO_BUS,
- CFG_ISA_IO_PHYS,
- CFG_ISA_IO_SIZE,
- PCI_REGION_IO);
-
- hose->region_count = 5;
-
- pci_setup_indirect(hose,
- MPC106_REG_ADDR,
- MPC106_REG_DATA);
-
- pci_register_hose(hose);
-
- hose->last_busno = pci_hose_scan(hose);
-
- /* Initialises the MPC10x PCI Configuration regs. */
- pci_read_config_word (PCI_BDF(0,0,0), PCI_COMMAND, &reg16);
- reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
- pci_write_config_word(PCI_BDF(0,0,0), PCI_COMMAND, reg16);
-
- /* Clear non-reserved bits in status register */
- pci_write_config_word(PCI_BDF(0,0,0), PCI_STATUS, 0xffff);
-}
-
-#endif /* CONFIG_PCI */
diff --git a/board/eltec/elppc/srom.h b/board/eltec/elppc/srom.h
deleted file mode 100644
index c18ab91645..0000000000
--- a/board/eltec/elppc/srom.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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
- */
-
-/* common srom defs */
-#define FIRST_DEVICE 0x00
-#define SECOND_DEVICE 0x04
-#define FIRST_BLOCK 0x00
-#define SECOND_BLOCK 0x02
-#define BLOCK_SIZE 0x100
-#define ERROR (-1)
-
-#define CLK2P0TO1_1MB_PB_0P5DH 0x79000100
-#define CLK2P5TO1_1MB_PB_0P5DH 0x7B000100
-
-#define CPU_TYPE_740 0x08
-#define CPU_TYPE_750 0x08
-#define CPU_TYPE ((get_pvr()>>16)&0xffff)
-
-#define ABS(x) ((x<0)?-x:x)
-#define SROM_SHORT(pX) (*(u8 *)(pX) | *((u8 *)(pX)+1) << 8)
-
-/* bab7xx ELTEC srom */
-#define I2C_BUS_DAT (CFG_ISA_IO + 0x220)
-#define I2C_BUS_DIR (CFG_ISA_IO + 0x221)
-
-/* srom at mpc107 */
-#define MPC107_I2CADDR (mpc107_eumb_addr + 0x3000) /* address */
-#define MPC107_I2CFDR (mpc107_eumb_addr + 0x3004) /* freq divider */
-#define MPC107_I2CCR (mpc107_eumb_addr + 0x3008) /* control */
-#define MPC107_I2CSR (mpc107_eumb_addr + 0x300c) /* status */
-#define MPC107_I2CDR (mpc107_eumb_addr + 0x3010) /* data */
-#define MPC107_I2C_TIMEOUT 10000000
-
-/* i82559 */
-#define EE_ADDR_BITS 6
-#define EE_SIZE 0x40 /* 0x40 words */
-#define EE_CHECKSUM 0xBABA
-
-/* dc21143 */
-#define DEC_SROM_SIZE 128
-
-
-/*
- * structure of revision srom
- */
-typedef struct {
- char magic[8]; /* 000 - Magic number */
- char revrev[2]; /* 008 - Revision of structure */
- unsigned short size; /* 00A - Size of CRC area */
- unsigned long crc; /* 00C - CRC */
- char board[16]; /* 010 - Board Revision information */
- char option[4][16]; /* 020 - Option Revision information */
- char serial[8]; /* 060 - Board serial number */
- char etheraddr[6]; /* 068 - Ethernet node addresse */
- char reserved[2]; /* 06E - Reserved */
- char revision[7][2]; /* 070 - Revision codes */
- char category[2]; /* 07E - Category codes */
- char text[64]; /* 080 - Text field */
- char res[64]; /* 0C0 - Reserved */
-} revinfo;
-
-unsigned long el_srom_checksum (unsigned char *ptr, unsigned long size);
-int el_srom_load (unsigned char addr, unsigned char *buf, int cnt,
- unsigned char device, unsigned char block);
-int el_srom_store (unsigned char addr, unsigned char *buf, int cnt,
- unsigned char device, unsigned char block);
-
-int mpc107_i2c_init (unsigned long eumb_addr, unsigned long divider);
-int mpc107_i2c_read_byte (unsigned char device, unsigned char block, unsigned char offset);
-int mpc107_i2c_write_byte (unsigned char device, unsigned char block,
- unsigned char offset, unsigned char val);
-int mpc107_srom_load (unsigned char addr, unsigned char *pBuf, int cnt,
- unsigned char device, unsigned char block);
-int mpc107_srom_store (unsigned char addr, unsigned char *pBuf, int cnt,
- unsigned char device, unsigned char block);
-
-int dc_srom_load (unsigned short *dest);
-int dc_srom_store (unsigned short *src);
-
-unsigned short eepro100_srom_checksum (unsigned short *sromdata);
-void eepro100_srom_load (unsigned short *destination);
-int eepro100_srom_store (unsigned short *source);
diff --git a/board/eltec/elppc/u-boot.lds b/board/eltec/elppc/u-boot.lds
deleted file mode 100644
index d89eb6cff2..0000000000
--- a/board/eltec/elppc/u-boot.lds
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@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
- */
-
-/*
- * u-boot.lds - linker script for U-Boot on the Galileo Eval Board.
- */
-
-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/74xx_7xx/start.o (.text)
-
-/* store the environment in a seperate sector in the boot flash */
-/* . = env_offset; */
-/* common/environment.o(.text) */
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/eltec/mhpc/Makefile b/board/eltec/mhpc/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/eltec/mhpc/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/eltec/mhpc/config.mk b/board/eltec/mhpc/config.mk
deleted file mode 100644
index 03934de3f6..0000000000
--- a/board/eltec/mhpc/config.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (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
-#
-
-#
-# MHPC boards
-#
-
-TEXT_BASE = 0xfe000000
-/*TEXT_BASE = 0x00200000 */
diff --git a/board/eltec/mhpc/flash.c b/board/eltec/mhpc/flash.c
deleted file mode 100644
index 4cc66a973d..0000000000
--- a/board/eltec/mhpc/flash.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-#include <linux/byteorder/swab.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Protection Flags:
- */
-#define FLAG_PROTECT_SET 0x01
-#define FLAG_PROTECT_CLEAR 0x02
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
- size_b0 = flash_get_size((FPW *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_PS_16 | BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((FPW *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE+monitor_flash_len-1,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000);
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F640J5 :
- printf ("28F640J5 \n"); break;
- default: printf ("Unknown Chip Type=0x%lXh\n",
- info->flash_id & FLASH_TYPEMASK); break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (FPW *addr, flash_info_t *info)
-{
- FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW)0xAA00AA00;
- addr[0x2AAA] = (FPW)0x55005500;
- addr[0x5555] = (FPW)0x90009000;
-
- value = SWAP(addr[0]);
-
- switch (value) {
- case (FPW)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW)0xFF00FF00; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- value = SWAP(addr[1]); /* device ID no swap !*/
-
- switch (value) {
- case (FPW)INTEL_ID_28F640J5 :
- info->flash_id += FLASH_28F640J5 ;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW)0xFF00FF00; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, now, last;
- int rc = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *)(info->start[sect]);
- FPW status;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = (FPW)0x50005000; /* clear status register */
- *addr = (FPW)0x20002000; /* erase setup */
- *addr = (FPW)0xD000D000; /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = SWAP(*addr)) & (FPW)0x00800080) != (FPW)0x00800080) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW)0xB000B000; /* suspend erase */
- *addr = (FPW)0xFF00FF00; /* reset to read mode */
- rc = 1;
- break;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- *addr = (FPW)0xFF00FF00; /* reset to read mode */
- printf (" done\n");
- }
- }
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<port_width && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_data(info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i=0; i<port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data(info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if ((wp & 0xfff) == 0)
- {
- printf("%08lX",wp);
- printf("\x1b[8D");
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<port_width && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_data(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *)dest;
- ulong status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf("not erased at %08lx (%x)\n",(ulong)addr,*addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = (FPW)0x40004000; /* write setup */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- while (((status = SWAP(*addr)) & (FPW)0x00800080) != (FPW)0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW)0xFF00FF00; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW)0xFF00FF00; /* restore read mode */
-
- return (0);
-}
diff --git a/board/eltec/mhpc/mhpc.c b/board/eltec/mhpc/mhpc.c
deleted file mode 100644
index 0ffbdf0e57..0000000000
--- a/board/eltec/mhpc/mhpc.c
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
- * (C) Copyright 2001
- * ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.de>
- *
- * Board specific routines for the miniHiPerCam
- *
- * - initialisation (eeprom)
- * - memory controller
- * - serial io initialisation
- * - ethernet io initialisation
- *
- * -----------------------------------------------------------------
- * 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 <common.h>
-#include <linux/ctype.h>
-#include <commproc.h>
-#include "mpc8xx.h"
-#include <video_fb.h>
-
-/* imports from common/main.c */
-extern char console_buffer[CFG_CBSIZE];
-
-extern void eeprom_init (void);
-extern int eeprom_read (unsigned dev_addr, unsigned offset,
- unsigned char *buffer, unsigned cnt);
-extern int eeprom_write (unsigned dev_addr, unsigned offset,
- unsigned char *buffer, unsigned cnt);
-
-/* globals */
-void *video_hw_init (void);
-void video_set_lut (unsigned int index, /* color number */
- unsigned char r, /* red */
- unsigned char g, /* green */
- unsigned char b /* blue */
- );
-
-GraphicDevice gdev;
-
-/* locals */
-static void video_circle (char *center, int radius, int color, int pitch);
-static void video_test_image (void);
-static void video_default_lut (unsigned int clut_type);
-
-/* revision info foer MHPC EEPROM offset 480 */
-typedef struct {
- char board[12]; /* 000 - Board Revision information */
- char sensor; /* 012 - Sensor Type information */
- char serial[8]; /* 013 - Board serial number */
- char etheraddr[6]; /* 021 - Ethernet node addresse */
- char revision[2]; /* 027 - Revision code */
- char option[3]; /* 029 - resevered for options */
-} revinfo;
-
-/* ------------------------------------------------------------------------- */
-
-static const unsigned int sdram_table[] = {
- /* read single beat cycle */
- 0xef0efc04, 0x0e2dac04, 0x01ba5c04, 0x1ff5fc00,
- 0xfffffc05, 0xeffafc34, 0x0ff0bc34, 0x1ff57c35,
-
- /* read burst cycle */
- 0xef0efc04, 0x0e3dac04, 0x10ff5c04, 0xf0fffc00,
- 0xf0fffc00, 0xf1fffc00, 0xfffffc00, 0xfffffc05,
- 0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04,
-
- /* write single beat cycle */
- 0xef0efc04, 0x0e29ac00, 0x01b25c04, 0x1ff5fc05,
- 0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04,
-
- /* write burst cycle */
- 0xef0ef804, 0x0e39a000, 0x10f75000, 0xf0fff440,
- 0xf0fffc40, 0xf1fffc04, 0xfffffc05, 0xfffffc04,
- 0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04,
-
- /* periodic timer expired */
- 0xeffebc84, 0x1ffd7c04, 0xfffffc04, 0xfffffc84,
- 0xeffebc04, 0x1ffd7c04, 0xfffffc04, 0xfffffc05,
- 0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04,
-
- /* exception */
- 0xfffffc04, 0xfffffc05, 0xfffffc04, 0xfffffc04
-};
-
-/* ------------------------------------------------------------------------- */
-
-int board_early_init_f (void)
-{
- volatile immap_t *im = (immap_t *) CFG_IMMR;
- volatile cpm8xx_t *cp = &(im->im_cpm);
- volatile iop8xx_t *ip = (iop8xx_t *) & (im->im_ioport);
-
- /* reset the port A s.a. cpm-routines */
- ip->iop_padat = 0x0000;
- ip->iop_papar = 0x0000;
- ip->iop_padir = 0x0800;
- ip->iop_paodr = 0x0000;
-
- /* reset the port B for digital and LCD output */
- cp->cp_pbdat = 0x0300;
- cp->cp_pbpar = 0x5001;
- cp->cp_pbdir = 0x5301;
- cp->cp_pbodr = 0x0000;
-
- /* reset the port C configured for SMC1 serial port and aqc. control */
- ip->iop_pcdat = 0x0800;
- ip->iop_pcpar = 0x0000;
- ip->iop_pcdir = 0x0e30;
- ip->iop_pcso = 0x0000;
-
- /* Config port D for LCD output */
- ip->iop_pdpar = 0x1fff;
- ip->iop_pddir = 0x1fff;
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity
- */
-int checkboard (void)
-{
- puts ("Board: ELTEC miniHiperCam\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_r (void)
-{
- revinfo mhpcRevInfo;
- char nid[32];
- char *mhpcSensorTypes[] = { "OMNIVISON OV7610/7620 color",
- "OMNIVISON OV7110 b&w", NULL
- };
- char hex[23] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0,
- 0, 0, 0, 0, 10, 11, 12, 13, 14, 15
- };
- int i;
-
- /* check revision data */
- eeprom_read (CFG_I2C_EEPROM_ADDR, 480, (uchar *) &mhpcRevInfo, 32);
-
- if (strncmp ((char *) &mhpcRevInfo.board[2], "MHPC", 4) != 0) {
- printf ("Enter revision number (0-9): %c ",
- mhpcRevInfo.revision[0]);
- if (0 != readline (NULL)) {
- mhpcRevInfo.revision[0] =
- (char) toupper (console_buffer[0]);
- }
-
- printf ("Enter revision character (A-Z): %c ",
- mhpcRevInfo.revision[1]);
- if (1 == readline (NULL)) {
- mhpcRevInfo.revision[1] =
- (char) toupper (console_buffer[0]);
- }
-
- printf ("Enter board name (V-XXXX-XXXX): %s ",
- (char *) &mhpcRevInfo.board);
- if (11 == readline (NULL)) {
- for (i = 0; i < 11; i++) {
- mhpcRevInfo.board[i] =
- (char) toupper (console_buffer[i]);
- mhpcRevInfo.board[11] = '\0';
- }
- }
-
- printf ("Supported sensor types:\n");
- i = 0;
- do {
- printf ("\n \'%d\' : %s\n", i, mhpcSensorTypes[i]);
- } while (mhpcSensorTypes[++i] != NULL);
-
- do {
- printf ("\nEnter sensor number (0-255): %d ",
- (int) mhpcRevInfo.sensor);
- if (0 != readline (NULL)) {
- mhpcRevInfo.sensor =
- (unsigned char)
- simple_strtoul (console_buffer, NULL,
- 10);
- }
- } while (mhpcRevInfo.sensor >= i);
-
- printf ("Enter serial number: %s ",
- (char *) &mhpcRevInfo.serial);
- if (6 == readline (NULL)) {
- for (i = 0; i < 6; i++) {
- mhpcRevInfo.serial[i] = console_buffer[i];
- }
- mhpcRevInfo.serial[6] = '\0';
- }
-
- printf ("Enter ether node ID with leading zero (HEX): %02x%02x%02x%02x%02x%02x ", mhpcRevInfo.etheraddr[0], mhpcRevInfo.etheraddr[1], mhpcRevInfo.etheraddr[2], mhpcRevInfo.etheraddr[3], mhpcRevInfo.etheraddr[4], mhpcRevInfo.etheraddr[5]);
- if (12 == readline (NULL)) {
- for (i = 0; i < 12; i += 2) {
- mhpcRevInfo.etheraddr[i >> 1] =
- (char) (16 *
- hex[toupper
- (console_buffer[i]) -
- '0'] +
- hex[toupper
- (console_buffer[i + 1]) -
- '0']);
- }
- }
-
- /* setup new revision data */
- eeprom_write (CFG_I2C_EEPROM_ADDR, 480, (uchar *) &mhpcRevInfo,
- 32);
- }
-
- /* set environment */
- sprintf (nid, "%02x:%02x:%02x:%02x:%02x:%02x",
- mhpcRevInfo.etheraddr[0], mhpcRevInfo.etheraddr[1],
- mhpcRevInfo.etheraddr[2], mhpcRevInfo.etheraddr[3],
- mhpcRevInfo.etheraddr[4], mhpcRevInfo.etheraddr[5]);
- setenv ("ethaddr", nid);
-
- /* print actual board identification */
- printf ("Ident: %s %s Ser %s Rev %c%c\n",
- mhpcRevInfo.board,
- (mhpcRevInfo.sensor == 0 ? "color" : "b&w"),
- (char *) &mhpcRevInfo.serial, mhpcRevInfo.revision[0],
- mhpcRevInfo.revision[1]);
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- memctl->memc_mamr = CFG_MAMR & (~(MAMR_PTAE)); /* no refresh yet */
- memctl->memc_mbmr = MBMR_GPL_B4DIS; /* should this be mamr? - NTL */
- memctl->memc_mptpr = MPTPR_PTP_DIV64;
- memctl->memc_mar = 0x00008800;
-
- /*
- * Map controller SDRAM bank 0
- */
- memctl->memc_or1 = CFG_OR1_PRELIM;
- memctl->memc_br1 = CFG_BR1_PRELIM;
- udelay (200);
-
- /*
- * Map controller SDRAM bank 1
- */
- memctl->memc_or2 = CFG_OR2;
- memctl->memc_br2 = CFG_BR2;
-
- /*
- * Perform SDRAM initializsation sequence
- */
- memctl->memc_mcr = 0x80002105; /* SDRAM bank 0 */
- udelay (1);
- memctl->memc_mcr = 0x80002730; /* SDRAM bank 0 - execute twice */
- udelay (1);
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (10000);
-
- /* leave place for framebuffers */
- return (SDRAM_MAX_SIZE - SDRAM_RES_SIZE);
-}
-
-/* ------------------------------------------------------------------------- */
-
-static void video_circle (char *center, int radius, int color, int pitch)
-{
- int x, y, d, dE, dSE;
-
- x = 0;
- y = radius;
- d = 1 - radius;
- dE = 3;
- dSE = -2 * radius + 5;
-
- *(center + x + y * pitch) = color;
- *(center + y + x * pitch) = color;
- *(center + y - x * pitch) = color;
- *(center + x - y * pitch) = color;
- *(center - x - y * pitch) = color;
- *(center - y - x * pitch) = color;
- *(center - y + x * pitch) = color;
- *(center - x + y * pitch) = color;
- while (y > x) {
- if (d < 0) {
- d += dE;
- dE += 2;
- dSE += 2;
- x++;
- } else {
- d += dSE;
- dE += 2;
- dSE += 4;
- x++;
- y--;
- }
- *(center + x + y * pitch) = color;
- *(center + y + x * pitch) = color;
- *(center + y - x * pitch) = color;
- *(center + x - y * pitch) = color;
- *(center - x - y * pitch) = color;
- *(center - y - x * pitch) = color;
- *(center - y + x * pitch) = color;
- *(center - x + y * pitch) = color;
- }
-}
-
-/* ------------------------------------------------------------------------- */
-
-static void video_test_image (void)
-{
- char *di;
- int i, n;
-
- /* draw raster */
- for (i = 0; i < LCD_VIDEO_ROWS; i += 32) {
- memset ((char *) (LCD_VIDEO_ADDR + i * LCD_VIDEO_COLS),
- LCD_VIDEO_FG, LCD_VIDEO_COLS);
- for (n = i + 1; n < i + 32; n++)
- memset ((char *) (LCD_VIDEO_ADDR +
- n * LCD_VIDEO_COLS), LCD_VIDEO_BG,
- LCD_VIDEO_COLS);
- }
-
- for (i = 0; i < LCD_VIDEO_COLS; i += 32) {
- for (n = 0; n < LCD_VIDEO_ROWS; n++)
- *(char *) (LCD_VIDEO_ADDR + n * LCD_VIDEO_COLS + i) =
- LCD_VIDEO_FG;
- }
-
- /* draw gray bar */
- di = (char *) (LCD_VIDEO_ADDR + (LCD_VIDEO_COLS - 256) / 64 * 32 +
- 97 * LCD_VIDEO_COLS);
- for (n = 0; n < 63; n++) {
- for (i = 0; i < 256; i++) {
- *di++ = (char) i;
- *(di + LCD_VIDEO_COLS * 64) = (i & 1) * 255;
- }
- di += LCD_VIDEO_COLS - 256;
- }
-
- video_circle ((char *) LCD_VIDEO_ADDR + LCD_VIDEO_COLS / 2 +
- LCD_VIDEO_ROWS / 2 * LCD_VIDEO_COLS, LCD_VIDEO_ROWS / 2,
- LCD_VIDEO_FG, LCD_VIDEO_COLS);
-}
-
-/* ------------------------------------------------------------------------- */
-
-static void video_default_lut (unsigned int clut_type)
-{
- unsigned int i;
- unsigned char RGB[] = {
- 0x00, 0x00, 0x00, /* black */
- 0x80, 0x80, 0x80, /* gray */
- 0xff, 0x00, 0x00, /* red */
- 0x00, 0xff, 0x00, /* green */
- 0x00, 0x00, 0xff, /* blue */
- 0x00, 0xff, 0xff, /* cyan */
- 0xff, 0x00, 0xff, /* magenta */
- 0xff, 0xff, 0x00, /* yellow */
- 0x80, 0x00, 0x00, /* dark red */
- 0x00, 0x80, 0x00, /* dark green */
- 0x00, 0x00, 0x80, /* dark blue */
- 0x00, 0x80, 0x80, /* dark cyan */
- 0x80, 0x00, 0x80, /* dark magenta */
- 0x80, 0x80, 0x00, /* dark yellow */
- 0xc0, 0xc0, 0xc0, /* light gray */
- 0xff, 0xff, 0xff, /* white */
- };
-
- switch (clut_type) {
- case 1:
- for (i = 0; i < 240; i++)
- video_set_lut (i, i, i, i);
- for (i = 0; i < 16; i++)
- video_set_lut (i + 240, RGB[i * 3], RGB[i * 3 + 1],
- RGB[i * 3 + 2]);
- break;
- default:
- for (i = 0; i < 256; i++)
- video_set_lut (i, i, i, i);
- }
-}
-
-/* ------------------------------------------------------------------------- */
-
-void *video_hw_init (void)
-{
- unsigned int clut = 0;
- unsigned char *penv;
- immap_t *immr = (immap_t *) CFG_IMMR;
-
- /* enable video only on CLUT value */
- if ((penv = (uchar *)getenv ("clut")) != NULL)
- clut = (u_int) simple_strtoul ((char *)penv, NULL, 10);
- else
- return NULL;
-
- /* disable graphic before write LCD regs. */
- immr->im_lcd.lcd_lccr = 0x96000866;
-
- /* config LCD regs. */
- immr->im_lcd.lcd_lcfaa = LCD_VIDEO_ADDR;
- immr->im_lcd.lcd_lchcr = 0x010a0093;
- immr->im_lcd.lcd_lcvcr = 0x900f0024;
-
- printf ("Video: 640x480 8Bit Index Lut %s\n",
- (clut == 1 ? "240/16 (gray/vga)" : "256(gray)"));
-
- video_default_lut (clut);
-
- /* clear framebuffer */
- memset ((char *) (LCD_VIDEO_ADDR), LCD_VIDEO_BG,
- LCD_VIDEO_ROWS * LCD_VIDEO_COLS);
-
- /* enable graphic */
- immr->im_lcd.lcd_lccr = 0x96000867;
-
- /* fill in Graphic Device */
- gdev.frameAdrs = LCD_VIDEO_ADDR;
- gdev.winSizeX = LCD_VIDEO_COLS;
- gdev.winSizeY = LCD_VIDEO_ROWS;
- gdev.gdfBytesPP = 1;
- gdev.gdfIndex = GDF__8BIT_INDEX;
-
- if (clut > 1)
- /* return Graphic Device for console */
- return (void *) &gdev;
- else
- /* just graphic enabled - draw something beautiful */
- video_test_image ();
-
- return NULL; /* this disabels cfb - console */
-}
-
-/* ------------------------------------------------------------------------- */
-
-void video_set_lut (unsigned int index,
- unsigned char r, unsigned char g, unsigned char b)
-{
- unsigned int lum;
- unsigned short *pLut = (unsigned short *) (CFG_IMMR + 0x0e00);
-
- /* 16 bit lut values, 12 bit used, xxxx BBGG RRii iiii */
- /* y = 0.299*R + 0.587*G + 0.114*B */
- lum = (2990 * r + 5870 * g + 1140 * b) / 10000;
- pLut[index] =
- ((b & 0xc0) << 4) | ((g & 0xc0) << 2) | (r & 0xc0) | (lum &
- 0x3f);
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/eltec/mhpc/u-boot.lds b/board/eltec/mhpc/u-boot.lds
deleted file mode 100644
index 7099fc40de..0000000000
--- a/board/eltec/mhpc/u-boot.lds
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * (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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/eltec/mhpc/u-boot.lds.debug b/board/eltec/mhpc/u-boot.lds.debug
deleted file mode 100644
index 3165d56345..0000000000
--- a/board/eltec/mhpc/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/emk/common/am79c874.c b/board/emk/common/am79c874.c
deleted file mode 100644
index 552813e029..0000000000
--- a/board/emk/common/am79c874.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * (C) Copyright 2003
- * Reinhard Meyer, EMK Elektronik GmbH, r.meyer@emk-elektronik.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 <common.h>
-
-/*****************************************************************************
- * check fiber optic link present, and then copper link present. do auto switch
- * between both
- *****************************************************************************/
diff --git a/board/emk/common/flash.c b/board/emk/common/flash.c
deleted file mode 100644
index d6161bf358..0000000000
--- a/board/emk/common/flash.c
+++ /dev/null
@@ -1,591 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2003
- * Reinhard Meyer, EMK Elektronik GmbH, r.meyer@emk-elektronik.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 <common.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined (CONFIG_TOP860)
- typedef unsigned short FLASH_PORT_WIDTH;
- typedef volatile unsigned short FLASH_PORT_WIDTHV;
- #define FLASH_ID_MASK 0xFF
-
- #define FPW FLASH_PORT_WIDTH
- #define FPWV FLASH_PORT_WIDTHV
-
- #define FLASH_CYCLE1 0x0555
- #define FLASH_CYCLE2 0x02aa
- #define FLASH_ID1 0
- #define FLASH_ID2 1
- #define FLASH_ID3 0x0e
- #define FLASH_ID4 0x0F
-#endif
-
-#if defined (CONFIG_TOP5200) && !defined (CONFIG_LITE5200)
- typedef unsigned char FLASH_PORT_WIDTH;
- typedef volatile unsigned char FLASH_PORT_WIDTHV;
- #define FLASH_ID_MASK 0xFF
-
- #define FPW FLASH_PORT_WIDTH
- #define FPWV FLASH_PORT_WIDTHV
-
- #define FLASH_CYCLE1 0x0aaa
- #define FLASH_CYCLE2 0x0555
- #define FLASH_ID1 0
- #define FLASH_ID2 2
- #define FLASH_ID3 0x1c
- #define FLASH_ID4 0x1E
-#endif
-
-#if defined (CONFIG_TOP5200) && defined (CONFIG_LITE5200)
- typedef unsigned char FLASH_PORT_WIDTH;
- typedef volatile unsigned char FLASH_PORT_WIDTHV;
- #define FLASH_ID_MASK 0xFF
-
- #define FPW FLASH_PORT_WIDTH
- #define FPWV FLASH_PORT_WIDTHV
-
- #define FLASH_CYCLE1 0x0555
- #define FLASH_CYCLE2 0x02aa
- #define FLASH_ID1 0
- #define FLASH_ID2 1
- #define FLASH_ID3 0x0E
- #define FLASH_ID4 0x0F
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(FPWV *addr, flash_info_t *info);
-static void flash_reset(flash_info_t *info);
-static int write_word_amd(flash_info_t *info, FPWV *dest, FPW data);
-static flash_info_t *flash_get_info(ulong base);
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- unsigned long size = 0;
- int i = 0;
- extern void flash_preinit(void);
- extern void flash_afterinit(uint, ulong, ulong);
- ulong flashbase = CFG_FLASH_BASE;
-
- flash_preinit();
-
- /* There is only ONE FLASH device */
- memset(&flash_info[i], 0, sizeof(flash_info_t));
- flash_info[i].size =
- flash_get_size((FPW *)flashbase, &flash_info[i]);
- size += flash_info[i].size;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- flash_get_info(CFG_MONITOR_BASE));
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- flash_get_info(CFG_ENV_ADDR));
-#endif
-
-
- flash_afterinit(i, flash_info[i].start[0], flash_info[i].size);
- return size ? size : 1;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset(flash_info_t *info)
-{
- FPWV *base = (FPWV *)(info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- *base = (FPW)0x00FF00FF; /* Intel Read Mode */
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
- *base = (FPW)0x00F000F0; /* AMD Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static flash_info_t *flash_get_info(ulong base)
-{
- int i;
- flash_info_t * info;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i ++) {
- info = & flash_info[i];
- if (info->size &&
- info->start[0] <= base && base <= info->start[0] + info->size - 1)
- break;
- }
-
- return i == CFG_MAX_FLASH_BANKS ? 0 : info;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar *bootletter;
- char *fmt;
- uchar botbootletter[] = "B";
- uchar topbootletter[] = "T";
- uchar botboottype[] = "bottom boot sector";
- uchar topboottype[] = "top boot sector";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
-#if 0
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
-#endif
- default: printf ("Unknown Vendor "); break;
- }
-
- /* check for top or bottom boot, if it applies */
- if (info->flash_id & FLASH_BTYPE) {
- boottype = botboottype;
- bootletter = botbootletter;
- }
- else {
- boottype = topboottype;
- bootletter = topbootletter;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM160T:
- case FLASH_AM160B:
- fmt = "29LV160%s (16 Mbit, %s)\n";
- break;
- case FLASH_AMLV640U:
- fmt = "29LV640M (64 Mbit)\n";
- break;
- case FLASH_AMDLV065D:
- fmt = "29LV065D (64 Mbit)\n";
- break;
- case FLASH_AMLV256U:
- fmt = "29LV256M (256 Mbit)\n";
- break;
- default:
- fmt = "Unknown Chip Type\n";
- break;
- }
-
- printf (fmt, bootletter, boottype);
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i) {
- ulong size;
- int erased;
- ulong *flash = (unsigned long *) info->start[i];
-
- if ((i % 5) == 0) {
- printf ("\n ");
- }
-
- /*
- * Check if whole sector is erased
- */
- size =
- (i != (info->sector_count - 1)) ?
- (info->start[i + 1] - info->start[i]) >> 2 :
- (info->start[0] + info->size - info->start[i]) >> 2;
-
- for (
- flash = (unsigned long *) info->start[i], erased = 1;
- (flash != (unsigned long *) info->start[i] + size) && erased;
- flash++
- )
- erased = *flash == ~0x0UL;
-
- printf (" %08lX %s %s",
- info->start[i],
- erased ? "E": " ",
- info->protect[i] ? "(RO)" : " ");
- }
-
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size (FPWV *addr, flash_info_t *info)
-{
- int i;
-
- /* Write auto select command: read Manufacturer ID */
- /* Write auto select command sequence and test FLASH answer */
- addr[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE2] = (FPW)0x00550055; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE1] = (FPW)0x00900090; /* selects Intel or AMD */
-
- /* The manufacturer codes are only 1 byte, so just use 1 byte.
- * This works for any bus width and any FLASH device width.
- */
- udelay(100);
- switch (addr[FLASH_ID1] & 0xff) {
-
- case (uchar)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
-#if 0
- case (uchar)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-#endif
-
- default:
- printf ("unknown vendor=%x ", addr[FLASH_ID1] & 0xff);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- /* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */
- if (info->flash_id != FLASH_UNKNOWN) switch ((FPW)addr[FLASH_ID2]) {
-
- case (FPW)AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- info->start[0] = (ulong)addr;
- info->start[1] = (ulong)addr + 0x4000;
- info->start[2] = (ulong)addr + 0x6000;
- info->start[3] = (ulong)addr + 0x8000;
- for (i = 4; i < info->sector_count; i++)
- {
- info->start[i] = (ulong)addr + 0x10000 * (i-3);
- }
- break;
-
- case (FPW)AMD_ID_LV065D:
- info->flash_id += FLASH_AMDLV065D;
- info->sector_count = 128;
- info->size = 0x00800000;
- for (i = 0; i < info->sector_count; i++)
- {
- info->start[i] = (ulong)addr + 0x10000 * i;
- }
- break;
-
- case (FPW)AMD_ID_MIRROR:
- /* MIRROR BIT FLASH, read more ID bytes */
- if ((FPW)addr[FLASH_ID3] == (FPW)AMD_ID_LV640U_2 &&
- (FPW)addr[FLASH_ID4] == (FPW)AMD_ID_LV640U_3)
- {
- info->flash_id += FLASH_AMLV640U;
- info->sector_count = 128;
- info->size = 0x00800000;
- for (i = 0; i < info->sector_count; i++)
- {
- info->start[i] = (ulong)addr + 0x10000 * i;
- }
- break;
- }
- if ((FPW)addr[FLASH_ID3] == (FPW)AMD_ID_LV256U_2 &&
- (FPW)addr[FLASH_ID4] == (FPW)AMD_ID_LV256U_3)
- {
- /* attention: only the first 16 MB will be used in u-boot */
- info->flash_id += FLASH_AMLV256U;
- info->sector_count = 256;
- info->size = 0x01000000;
- for (i = 0; i < info->sector_count; i++)
- {
- info->start[i] = (ulong)addr + 0x10000 * i;
- }
- break;
- }
-
- /* fall thru to here ! */
- default:
- printf ("unknown AMD device=%x %x %x",
- (FPW)addr[FLASH_ID2],
- (FPW)addr[FLASH_ID3],
- (FPW)addr[FLASH_ID4]);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0x800000;
- break;
- }
-
- /* Put FLASH back in read mode */
- flash_reset(info);
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- FPWV *addr;
- int flag, prot, sect;
- int intel = (info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM160B:
- case FLASH_AMLV640U:
- break;
- case FLASH_UNKNOWN:
- default:
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- last = get_timer(0);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && rcode == 0; sect++) {
-
- if (info->protect[sect] != 0) /* protected, skip it */
- continue;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr = (FPWV *)(info->start[sect]);
- if (intel) {
- *addr = (FPW)0x00500050; /* clear status register */
- *addr = (FPW)0x00200020; /* erase setup */
- *addr = (FPW)0x00D000D0; /* erase confirm */
- }
- else {
- /* must be AMD style if not Intel */
- FPWV *base; /* first address in bank */
-
- base = (FPWV *)(info->start[0]);
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW)0x00800080; /* erase mode */
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- *addr = (FPW)0x00300030; /* erase sector */
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer(0);
-
- /* wait at least 50us for AMD, 80us for Intel.
- * Let's wait 1 ms.
- */
- udelay (1000);
-
- while ((*addr & (FPW)0x00800080) != (FPW)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
-
- if (intel) {
- /* suspend erase */
- *addr = (FPW)0x00B000B0;
- }
-
- flash_reset(info); /* reset to read mode */
- rcode = 1; /* failed */
- break;
- }
-
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) {/* every second */
- putc ('.');
- last = get_timer(0);
- }
- }
-
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) { /* every second */
- putc ('.');
- last = get_timer(0);
- }
-
- flash_reset(info); /* reset to read mode */
- }
-
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof(data), left -= sizeof(data) - bytes) {
-
- bytes = addr & (sizeof(data) - 1);
- addr &= ~(sizeof(data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits
- */
- for (i = 0; i < sizeof(data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left )
- data += *((uchar *)addr + i);
- else
- data += *src++;
- }
-
- /* write one word to the flash */
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- res = write_word_amd(info, (FPWV *)addr, data);
- break;
- default:
- /* unknown flash type, error! */
- printf ("missing or unknown FLASH type\n");
- res = 1; /* not really a timeout, but gives error */
- break;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd (flash_info_t *info, FPWV *dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
- FPWV *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
-
- base = (FPWV *)(info->start[0]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW)0x00A000A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- /* data polling for D7 */
- while (res == 0 && (*dest & (FPW)0x00800080) != (data & (FPW)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW)0x00F000F0; /* reset bank */
- res = 1;
- }
- }
-
- return (res);
-}
diff --git a/board/emk/common/vpd.c b/board/emk/common/vpd.c
deleted file mode 100644
index 8a3a12b047..0000000000
--- a/board/emk/common/vpd.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * (C) Copyright 2003
- * Reinhard Meyer, EMK Elektronik GmbH, r.meyer@emk-elektronik.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 <common.h>
-
-/*****************************************************************************
- * read "factory" part of EEPROM and set some environment variables
- *****************************************************************************/
-void read_factory_r (void)
-{
- /* read 'factory' part of EEPROM */
- uchar buf[81];
- uchar *p;
- uint length;
- uint addr;
- uint len;
-
- /* get length first */
- addr = CFG_FACT_OFFSET;
- if (eeprom_read (CFG_I2C_FACT_ADDR, addr, buf, 2)) {
- bailout:
- printf ("cannot read factory configuration\n");
- printf ("be sure to set ethaddr yourself!\n");
- return;
- }
- length = buf[0] + (buf[1] << 8);
- addr += 2;
-
- /* sanity check */
- if (length < 20 || length > CFG_FACT_SIZE - 2)
- goto bailout;
-
- /* read lines */
- while (length > 0) {
- /* read one line */
- len = length > 80 ? 80 : length;
- if (eeprom_read (CFG_I2C_FACT_ADDR, addr, buf, len))
- goto bailout;
- /* mark end of buffer */
- buf[len] = 0;
- /* search end of line */
- for (p = buf; *p && *p != 0x0a; p++);
- if (!*p)
- goto bailout;
- *p++ = 0;
- /* advance to next line start */
- length -= p - buf;
- addr += p - buf;
- /*printf ("%s\n", buf); */
- /* search for our specific entry */
- if (!strncmp ((char *) buf, "[RLA/lan/Ethernet] ", 19)) {
- setenv ("ethaddr", (char *)(buf + 19));
- } else if (!strncmp ((char *) buf, "[BOARD/SERIAL] ", 15)) {
- setenv ("serial#", (char *)(buf + 15));
- } else if (!strncmp ((char *) buf, "[BOARD/TYPE] ", 13)) {
- setenv ("board_id", (char *)(buf + 13));
- }
- }
-}
diff --git a/board/ep7312/Makefile b/board/ep7312/Makefile
deleted file mode 100644
index 45ee6cd084..0000000000
--- a/board/ep7312/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2002
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@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
-#
-
-include $(TOPDIR)/config.mk
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS := ep7312.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ep7312/config.mk b/board/ep7312/config.mk
deleted file mode 100644
index 0ae16a2efe..0000000000
--- a/board/ep7312/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (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
-#
-
-TEXT_BASE = 0xc0f80000
diff --git a/board/ep7312/ep7312.c b/board/ep7312/ep7312.c
deleted file mode 100644
index 6968a5dbdd..0000000000
--- a/board/ep7312/ep7312.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-#include <clps7111.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* Activate LED flasher */
- IO_LEDFLSH = 0x40;
-
- /* arch number MACH_TYPE_EDB7312 */
- gd->bd->bi_arch_number = MACH_TYPE_EDB7312;
-
- /* location of boot parameters */
- gd->bd->bi_boot_params = 0xc0020100;
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return (0);
-}
diff --git a/board/ep7312/flash.c b/board/ep7312/flash.c
deleted file mode 100644
index 272a9e5cce..0000000000
--- a/board/ep7312/flash.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-
-#define FLASH_BANK_SIZE 0x1000000
-#define MAIN_SECT_SIZE 0x20000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
- (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F128J3 & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic ("configured too many flash banks!\n");
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] = flashbase + j * MAIN_SECT_SIZE;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect ( FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (INTEL_MANUFACT & FLASH_VENDMASK):
- printf ("Intel: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (INTEL_ID_28F128J3 & FLASH_TYPEMASK):
- printf ("28F128J3 (128Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
-Done: ;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- int rc = ERR_OK;
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (INTEL_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- if (info->protect[sect] == 0) { /* not protected */
- vu_short *addr = (vu_short *) (info->start[sect]);
-
- *addr = 0x20; /* erase setup */
- *addr = 0xD0; /* erase confirm */
-
- while ((*addr & 0x80) != 0x80) {
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- *addr = 0xB0; /* suspend erase */
- *addr = 0xFF; /* reset to read mode */
- rc = ERR_TIMOUT;
- goto outahere;
- }
- }
-
- /* clear status register command */
- *addr = 0x50;
- /* reset to read mode */
- *addr = 0xFF;
- }
- printf ("ok.\n");
- }
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
- outahere:
-
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
-
- if (flag)
- enable_interrupts ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_word (flash_info_t * info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short *) dest, val;
- int rc = ERR_OK;
- int flag;
-
- /* Check if Flash is (sufficiently) erased
- */
- if ((*addr & data) != data)
- return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
-
- /* clear status register command */
- *addr = 0x50;
-
- /* program set-up command */
- *addr = 0x40;
-
- /* latch address/data */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((val = *addr) & 0x80) != 0x80) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- rc = ERR_TIMOUT;
- /* suspend program command */
- *addr = 0xB0;
- goto outahere;
- }
- }
-
- if (val & 0x1A) { /* check for error */
- printf ("\nFlash write error %02x at address %08lx\n",
- (int) val, (unsigned long) dest);
- if (val & (1 << 3)) {
- printf ("Voltage range error.\n");
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (val & (1 << 1)) {
- printf ("Device protect error.\n");
- rc = ERR_PROTECTED;
- goto outahere;
- }
- if (val & (1 << 4)) {
- printf ("Programming error.\n");
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
-
- outahere:
- /* read array command */
- *addr = 0xFF;
-
- if (flag)
- enable_interrupts ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- ushort data;
- int l;
- int i, rc;
-
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
- for (; i < 2 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 2) {
- data = *((vu_short *) src);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- }
- for (; i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- return write_word (info, wp, data);
-}
diff --git a/board/ep7312/lowlevel_init.S b/board/ep7312/lowlevel_init.S
deleted file mode 100644
index 5dadb313b1..0000000000
--- a/board/ep7312/lowlevel_init.S
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Memory Setup stuff - taken from ???
- *
- * 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 <config.h>
-#include <version.h>
-
-
-/* some parameters for the board */
-
-SYSCON1: .long 0x80000100
-SYSCON2: .long 0x80001100
-SYSCON3: .long 0x80002200
-MEMCFG1: .long 0x80000180
-MEMCFG2: .long 0x800001C0
-SDCONF: .long 0x80002300
-SDRFPR: .long 0x80002340
-
-syscon1_val: .long 0x00040100
-syscon2_val: .long 0x00000102
-syscon3_val: .long 0x0000020E
-memcfg1_val: .long 0x1f101710
-memcfg2_mask: .long 0x0000ffff @ only set lower 16 bits
-memcfg2_val: .long 0x00001f13 @ upper 16 bits are reserved for CS7 + CS6
-sdrfpr_val: .long 0x00000240
-sdconf_val: .long 0x00000522
-/* setting up the memory */
-
-.globl lowlevel_init
-lowlevel_init:
- /*
- * SYSCON1-3
- */
- ldr r0, SYSCON1
- ldr r1, syscon1_val
- str r1, [r0]
-
- ldr r0, SYSCON2
- ldr r1, syscon2_val
- str r1, [r0]
-
- ldr r0, SYSCON3
- ldr r1, syscon3_val
- str r1, [r0]
-
- /*
- * MEMCFG1
- */
- ldr r0, MEMCFG1
- ldr r1, memcfg1_val
- str r1, [r0]
-
- /*
- * MEMCFG2
- */
- ldr r0, MEMCFG2
- ldr r2, [r0]
- ldr r1, memcfg2_mask
- bic r2, r2, r1
- ldr r1, memcfg2_val
- orr r2, r2, r1
- str r2, [r0]
-
- /*
- * SDRFPR,SDCONF
- */
- ldr r0, SDCONF
- ldr r1, sdconf_val
- str r1, [r0]
-
- ldr r0, SDRFPR
- ldr r1, sdrfpr_val
- str r1, [r0]
-
- /* everything is fine now */
- mov pc, lr
diff --git a/board/ep7312/u-boot.lds b/board/ep7312/u-boot.lds
deleted file mode 100644
index 1122d7521c..0000000000
--- a/board/ep7312/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm720t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/ep8260/Makefile b/board/ep8260/Makefile
deleted file mode 100644
index f75249fc6a..0000000000
--- a/board/ep8260/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o mii_phy.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ep8260/config.mk b/board/ep8260/config.mk
deleted file mode 100644
index eaf1560e6f..0000000000
--- a/board/ep8260/config.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# (C) Copyright 2002
-# 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
-#
-
-#
-# EP8260 boards
-#
-
-# This should be equal to the CFG_FLASH_BASE define in config_ep8260.h
-# for the "final" configuration, with U-Boot in flash, or the address
-# in RAM where U-Boot is loaded at for debugging.
-#
-#TEXT_BASE = 0x00100000
-#TEXT_BASE = 0xFF000000
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/ep8260/ep8260.c b/board/ep8260/ep8260.c
deleted file mode 100644
index b9e1df43d7..0000000000
--- a/board/ep8260/ep8260.c
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * (C) Copyright 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Frank Panno <fpanno@delphintech.com>, Delphin Technology AG
- *
- * 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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include "ep8260.h"
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA30 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA29 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA28 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA27 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA26 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA25 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA24 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA23 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA22 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA21 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA20 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA19 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA18 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA17 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA16 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA15 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA14 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA13 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA12 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA11 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA10 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PA9 */ { 0, 1, 0, 1, 0, 0 }, /* */
- /* PA8 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PA7 */ { 0, 0, 0, 1, 0, 0 }, /* PA7 */
- /* PA6 */ { 0, 0, 0, 1, 0, 0 }, /* PA6 */
- /* PA5 */ { 0, 0, 0, 1, 0, 0 }, /* PA5 */
- /* PA4 */ { 0, 0, 0, 1, 0, 0 }, /* PA4 */
- /* PA3 */ { 0, 0, 0, 1, 0, 0 }, /* PA3 */
- /* PA2 */ { 0, 0, 0, 1, 0, 0 }, /* PA2 */
- /* PA1 */ { 0, 0, 0, 1, 0, 0 }, /* PA1 */
- /* PA0 */ { 0, 0, 0, 1, 0, 0 } /* PA0 */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 0, 1, 0, 1, 0, 0 }, /* */
- /* PB30 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PB29 */ { 0, 1, 1, 1, 0, 0 }, /* */
- /* PB28 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PB27 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PB26 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PB25 */ { 0, 1, 0, 1, 0, 0 }, /* */
- /* PB24 */ { 0, 1, 0, 1, 0, 0 }, /* */
- /* PB23 */ { 0, 1, 0, 1, 0, 0 }, /* */
- /* PB22 */ { 0, 1, 0, 1, 0, 0 }, /* */
- /* PB21 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PB20 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PB19 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PB18 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PB17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RX_DV */
- /* PB16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RX_ER */
- /* PB15 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TX_ER */
- /* PB14 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TX_EN */
- /* PB13 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII COL */
- /* PB12 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII CRS */
- /* PB11 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[3] */
- /* PB10 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[2] */
- /* PB9 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[1] */
- /* PB8 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[0] */
- /* PB7 */ { 0, 0, 0, 0, 0, 0 }, /* PB7 */
- /* PB6 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[1] */
- /* PB5 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[2] */
- /* PB4 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[3] */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 1, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 1, 0, 0 }, /* PC30 */
- /* PC29 */ { 0, 1, 1, 0, 0, 0 }, /* */
- /* PC28 */ { 0, 0, 0, 1, 0, 0 }, /* PC28 */
- /* PC27 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[0] */
- /* PC26 */ { 0, 0, 0, 1, 0, 0 }, /* PC26 */
- /* PC25 */ { 0, 0, 0, 1, 0, 0 }, /* PC25 */
- /* PC24 */ { 0, 0, 0, 1, 0, 0 }, /* PC24 */
- /* PC23 */ { 0, 1, 0, 1, 0, 0 }, /* */
- /* PC22 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PC21 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PC20 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PC19 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PC18 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PC17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII CLK15 */
- /* PC16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII CLK16 */
- /* PC15 */ { 0, 0, 0, 1, 0, 0 }, /* PC15 */
- /* PC14 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PC13 */ { 0, 0, 0, 1, 0, 0 }, /* PC13 */
- /* PC12 */ { 0, 0, 0, 1, 0, 0 }, /* PC12 */
- /* PC11 */ { 0, 0, 0, 1, 0, 0 }, /* PC11 */
- /* PC10 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PC9 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PC8 */ { 0, 0, 0, 1, 0, 0 }, /* PC8 */
- /* PC7 */ { 0, 0, 0, 1, 0, 0 }, /* PC7 */
- /* PC6 */ { 0, 0, 0, 1, 0, 0 }, /* PC6 */
- /* PC5 */ { 0, 0, 0, 1, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 1, 0, 0 }, /* PC4 */
- /* PC3 */ { 0, 0, 0, 1, 0, 0 }, /* PC3 */
- /* PC2 */ { 0, 0, 0, 1, 0, 1 }, /* */
- /* PC1 */ { 0, 0, 0, 1, 0, 0 }, /* */
- /* PC0 */ { 0, 0, 0, 1, 0, 0 }, /* */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PD30 */ { 0, 1, 1, 1, 0, 0 }, /* */
- /* PD29 */ { 0, 1, 0, 1, 0, 0 }, /* */
- /* PD28 */ { 0, 0, 0, 1, 0, 0 }, /* PD28 */
- /* PD27 */ { 0, 0, 0, 1, 0, 0 }, /* PD27 */
- /* PD26 */ { 0, 0, 0, 1, 0, 0 }, /* PD26 */
- /* PD25 */ { 0, 0, 0, 1, 0, 0 }, /* PD25 */
- /* PD24 */ { 0, 0, 0, 1, 0, 0 }, /* PD24 */
- /* PD23 */ { 0, 0, 0, 1, 0, 0 }, /* PD23 */
- /* PD22 */ { 0, 0, 0, 1, 0, 0 }, /* PD22 */
- /* PD21 */ { 0, 0, 0, 1, 0, 0 }, /* PD21 */
- /* PD20 */ { 0, 0, 0, 1, 0, 0 }, /* PD20 */
- /* PD19 */ { 0, 0, 0, 1, 0, 0 }, /* PD19 */
- /* PD18 */ { 0, 0, 0, 1, 0, 0 }, /* PD19 */
- /* PD17 */ { 0, 1, 0, 0, 0, 0 }, /* */
- /* PD16 */ { 0, 1, 0, 1, 0, 0 }, /* */
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PD8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PD7 */ { 0, 0, 0, 1, 0, 1 }, /* PD7 */
- /* PD6 */ { 0, 0, 0, 1, 0, 1 }, /* PD6 */
- /* PD5 */ { 0, 0, 0, 1, 0, 1 }, /* PD5 */
- /* PD4 */ { 0, 0, 0, 1, 0, 1 }, /* PD4 */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Setup CS4 to enable the Board Control/Status registers.
- * Otherwise the smcs won't work.
-*/
-int board_early_init_f (void)
-{
- volatile t_ep_regs *regs = (t_ep_regs *) CFG_REGS_BASE;
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
- memctl->memc_br4 = CFG_BR4_PRELIM;
- memctl->memc_or4 = CFG_OR4_PRELIM;
- regs->bcsr1 = 0x62; /* to enable terminal on SMC1 */
- regs->bcsr2 = 0x30; /* enable NVRAM and writing FLASH */
- return 0;
-}
-
-void reset_phy (void)
-{
- volatile t_ep_regs *regs = (t_ep_regs *) CFG_REGS_BASE;
-
- regs->bcsr4 = 0xC0;
-}
-
-/*
- * Check Board Identity:
- * I don' know, how the next board revisions will be coded.
- * Thats why its a static interpretation ...
-*/
-
-int checkboard (void)
-{
- volatile t_ep_regs *regs = (t_ep_regs *) CFG_REGS_BASE;
- uint major = 0, minor = 0;
-
- switch (regs->bcsr0) {
- case 0x02:
- major = 1;
- break;
- case 0x03:
- major = 1;
- minor = 1;
- break;
- case 0x06:
- major = 1;
- minor = 3;
- break;
- default:
- break;
- }
- printf ("Board: Embedded Planet EP8260, Revision %d.%d\n",
- major, minor);
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
- volatile uchar c = 0;
- volatile uchar *ramaddr = (uchar *) (CFG_SDRAM_BASE) + 0x110;
-
-/*
- ulong psdmr = CFG_PSDMR;
-#ifdef CFG_LSDRAM
- ulong lsdmr = CFG_LSDMR;
-#endif
-*/
- long size = CFG_SDRAM0_SIZE;
- int i;
-
-
-/*
-* Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
-*
-* "At system reset, initialization software must set up the
-* programmable parameters in the memory controller banks registers
-* (ORx, BRx, P/LSDMR). After all memory parameters are configured,
-* system software should execute the following initialization sequence
-* for each SDRAM device.
-*
-* 1. Issue a PRECHARGE-ALL-BANKS command
-* 2. Issue eight CBR REFRESH commands
-* 3. Issue a MODE-SET command to initialize the mode register
-*
-* The initial commands are executed by setting P/LSDMR[OP] and
-* accessing the SDRAM with a single-byte transaction."
-*
-* The appropriate BRx/ORx registers have already been set when we
-* get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
-*/
-
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_mptpr = CFG_MPTPR;
-
- memctl->memc_psdmr = (ulong) CFG_PSDMR | PSDMR_OP_PREA;
- *ramaddr = c;
-
- memctl->memc_psdmr = (ulong) CFG_PSDMR | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- memctl->memc_psdmr = (ulong) CFG_PSDMR | PSDMR_OP_MRW;
- *ramaddr = c;
-
- memctl->memc_psdmr = (ulong) CFG_PSDMR | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr = c;
-
-#ifndef CFG_RAMBOOT
-#ifdef CFG_LSDRAM
- size += CFG_SDRAM1_SIZE;
- ramaddr = (uchar *) (CFG_SDRAM1_BASE) + 0x8c;
- memctl->memc_lsrt = CFG_LSRT;
-
- memctl->memc_lsdmr = (ulong) CFG_LSDMR | PSDMR_OP_PREA;
- *ramaddr = c;
-
- memctl->memc_lsdmr = (ulong) CFG_LSDMR | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- memctl->memc_lsdmr = (ulong) CFG_LSDMR | PSDMR_OP_MRW;
- *ramaddr = c;
-
- memctl->memc_lsdmr = (ulong) CFG_LSDMR | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr = c;
-#endif /* CFG_LSDRAM */
-#endif /* CFG_RAMBOOT */
- return (size * 1024 * 1024);
-}
diff --git a/board/ep8260/ep8260.h b/board/ep8260/ep8260.h
deleted file mode 100644
index 3032b14245..0000000000
--- a/board/ep8260/ep8260.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef __EP8260_H__
-#define __EP8260_H__
-
-typedef struct tt_ep_regs {
- volatile unsigned char bcsr0;
- volatile unsigned char bcsr1;
- volatile unsigned char bcsr2;
- volatile unsigned char bcsr3;
- volatile unsigned char bcsr4;
- volatile unsigned char bcsr5;
- volatile unsigned char bcsr6;
- volatile unsigned char bcsr7;
- volatile unsigned char bcsr8;
- volatile unsigned char bcsr9;
- volatile unsigned char bcsr10;
- volatile unsigned char bcsr11;
- volatile unsigned char bcsr12;
- volatile unsigned char bcsr13;
- volatile unsigned char bcsr14;
- volatile unsigned char bcsr15;
-} t_ep_regs;
-typedef t_ep_regs *tp_ep_regs;
-
-#endif
diff --git a/board/ep8260/flash.c b/board/ep8260/flash.c
deleted file mode 100644
index 278d606b32..0000000000
--- a/board/ep8260/flash.c
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * (C) Copyright 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Frank Panno <fpanno@delphintech.com>, Delphin Technology AG
- *
- * Flash Routines for AMD device AM29DL323DB on the EP8260 board.
- *
- * This file is based on board/tqm8260/flash.c.
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-
-#define V_ULONG(a) (*(volatile unsigned long *)( a ))
-#define V_BYTE(a) (*(volatile unsigned char *)( a ))
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-/*-----------------------------------------------------------------------
- */
-void flash_reset(void)
-{
- if( flash_info[0].flash_id != FLASH_UNKNOWN ) {
- V_ULONG( flash_info[0].start[0] ) = 0x00F000F0;
- V_ULONG( flash_info[0].start[0] + 4 ) = 0x00F000F0;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_get_size( ulong baseaddr, flash_info_t *info )
-{
- short i;
- unsigned long flashtest_h, flashtest_l;
-
- /* Write auto select command sequence and test FLASH answer */
- V_ULONG(baseaddr + ((ulong)0x0555 << 3)) = 0x00AA00AA;
- V_ULONG(baseaddr + ((ulong)0x02AA << 3)) = 0x00550055;
- V_ULONG(baseaddr + ((ulong)0x0555 << 3)) = 0x00900090;
- V_ULONG(baseaddr + 4 + ((ulong)0x0555 << 3)) = 0x00AA00AA;
- V_ULONG(baseaddr + 4 + ((ulong)0x02AA << 3)) = 0x00550055;
- V_ULONG(baseaddr + 4 + ((ulong)0x0555 << 3)) = 0x00900090;
-
- flashtest_h = V_ULONG(baseaddr); /* manufacturer ID */
- flashtest_l = V_ULONG(baseaddr + 4);
-
- if ((int)flashtest_h == AMD_MANUFACT) {
- info->flash_id = FLASH_MAN_AMD;
- } else {
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- flashtest_h = V_ULONG(baseaddr + 8); /* device ID */
- flashtest_l = V_ULONG(baseaddr + 12);
- if (flashtest_h != flashtest_l) {
- info->flash_id = FLASH_UNKNOWN;
- return(0);
- }
-
- switch((int)flashtest_h) {
- case AMD_ID_DL323B:
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x01000000; /* 4 * 4 MB = 16 MB */
- break;
- case AMD_ID_LV640U: /* AMDLV640 and AMDLV641 have same ID */
- info->flash_id += FLASH_AMLV640U;
- info->sector_count = 128;
- info->size = 0x02000000; /* 4 * 8 MB = 32 MB */
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- return(0); /* no or unknown flash */
- }
-
- if(flashtest_h == AMD_ID_LV640U) {
- /* set up sector start adress table (uniform sector type) */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = baseaddr + (i * 0x00040000);
- } else {
- /* set up sector start adress table (bottom sector type) */
- for (i = 0; i < 8; i++) {
- info->start[i] = baseaddr + (i * 0x00008000);
- }
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = baseaddr + (i * 0x00040000) - 0x001C0000;
- }
- }
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- if ((V_ULONG( info->start[i] + 16 ) & 0x00010001) ||
- (V_ULONG( info->start[i] + 20 ) & 0x00010001)) {
- info->protect[i] = 1; /* D0 = 1 if protected */
- } else {
- info->protect[i] = 0;
- }
- }
-
- flash_reset();
- return(info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size_b0 = 0;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here (only one bank) */
-
- size_b0 = flash_get_size(CFG_FLASH0_BASE, &flash_info[0]);
- if (flash_info[0].flash_id == FLASH_UNKNOWN || size_b0 == 0) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0>>20);
- }
-
- /*
- * protect monitor and environment sectors
- */
-
-#if CFG_MONITOR_BASE >= CFG_FLASH0_BASE
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch ((info->flash_id >> 16) & 0xff) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMDL323B: printf ("29DL323B (32 M, bottom sector)\n");
- break;
- case FLASH_AMLV640U: printf ("29LV640U (64 M, uniform sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- V_ULONG( info->start[0] + (0x0555 << 3) ) = 0x00AA00AA;
- V_ULONG( info->start[0] + (0x02AA << 3) ) = 0x00550055;
- V_ULONG( info->start[0] + (0x0555 << 3) ) = 0x00800080;
- V_ULONG( info->start[0] + (0x0555 << 3) ) = 0x00AA00AA;
- V_ULONG( info->start[0] + (0x02AA << 3) ) = 0x00550055;
- V_ULONG( info->start[0] + 4 + (0x0555 << 3) ) = 0x00AA00AA;
- V_ULONG( info->start[0] + 4 + (0x02AA << 3) ) = 0x00550055;
- V_ULONG( info->start[0] + 4 + (0x0555 << 3) ) = 0x00800080;
- V_ULONG( info->start[0] + 4 + (0x0555 << 3) ) = 0x00AA00AA;
- V_ULONG( info->start[0] + 4 + (0x02AA << 3) ) = 0x00550055;
- udelay (1000);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- V_ULONG( info->start[sect] ) = 0x00300030;
- V_ULONG( info->start[sect] + 4 ) = 0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- while ((V_ULONG( info->start[l_sect] ) & 0x00800080) != 0x00800080 ||
- (V_ULONG( info->start[l_sect] + 4 ) & 0x00800080) != 0x00800080)
- {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- flash_reset ();
-
- printf (" done\n");
- return 0;
-}
-
-static int write_dword (flash_info_t *, ulong, unsigned char *);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong dp;
- static unsigned char bb[8];
- int i, l, rc, cc = cnt;
-
- dp = (addr & ~7); /* get lower dword aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - dp) != 0) {
- for (i = 0; i < 8; i++)
- bb[i] = (i < l || (i-l) >= cc) ? V_BYTE(dp+i) : *src++;
- if ((rc = write_dword(info, dp, bb)) != 0)
- {
- return (rc);
- }
- dp += 8;
- cc -= 8 - l;
- }
-
- /*
- * handle word aligned part
- */
- while (cc >= 8) {
- if ((rc = write_dword(info, dp, src)) != 0) {
- return (rc);
- }
- dp += 8;
- src += 8;
- cc -= 8;
- }
-
- if (cc <= 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- for (i = 0; i < 8; i++) {
- bb[i] = (i < cc) ? *src++ : V_BYTE(dp+i);
- }
- return (write_dword(info, dp, bb));
-}
-
-/*-----------------------------------------------------------------------
- * Write a dword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_dword (flash_info_t *info, ulong dest, unsigned char * pdata)
-{
- ulong start;
- ulong cl = 0, ch =0;
- int flag, i;
-
- for (ch=0, i=0; i < 4; i++)
- ch = (ch << 8) + *pdata++; /* high word */
- for (cl=0, i=0; i < 4; i++)
- cl = (cl << 8) + *pdata++; /* low word */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & ch) != ch
- ||(*((vu_long *)(dest + 4)) & cl) != cl)
- {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- V_ULONG( info->start[0] + (0x0555 << 3) ) = 0x00AA00AA;
- V_ULONG( info->start[0] + (0x02AA << 3) ) = 0x00550055;
- V_ULONG( info->start[0] + (0x0555 << 3) ) = 0x00A000A0;
- V_ULONG( dest ) = ch;
- V_ULONG( info->start[0] + 4 + (0x0555 << 3) ) = 0x00AA00AA;
- V_ULONG( info->start[0] + 4 + (0x02AA << 3) ) = 0x00550055;
- V_ULONG( info->start[0] + 4 + (0x0555 << 3) ) = 0x00A000A0;
- V_ULONG( dest + 4 ) = cl;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while (((V_ULONG( dest ) & 0x00800080) != (ch & 0x00800080)) ||
- ((V_ULONG( dest + 4 ) & 0x00800080) != (cl & 0x00800080))) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/ep8260/mii_phy.c b/board/ep8260/mii_phy.c
deleted file mode 100644
index 813f020ee9..0000000000
--- a/board/ep8260/mii_phy.c
+++ /dev/null
@@ -1,107 +0,0 @@
-#include <common.h>
-#include <mii_phy.h>
-#include "ep8260.h"
-
-#define MII_MDIO 0x01
-#define MII_MDCK 0x02
-#define MII_MDIR 0x04
-
-void
-mii_discover_phy(void)
-{
- int known;
- unsigned short phy_reg;
- unsigned long phy_id;
-
- known = 0;
- printf("Discovering phy @ 0: ");
- phy_id = mii_phy_read(2) << 16;
- phy_id |= mii_phy_read(3);
- if ((phy_id & 0xFFFFFC00) == 0x00137800) {
- printf("Level One ");
- if ((phy_id & 0x000003F0) == 0xE0) {
- printf("LXT971A Revision %d\n", (int)(phy_id & 0xF));
- known = 1;
- }
- else printf("unknown type\n");
- }
- else printf("unknown OUI = 0x%08lX\n", phy_id);
-
- phy_reg = mii_phy_read(1);
- if (!(phy_reg & 0x0004)) printf("Link is down\n");
- if (!(phy_reg & 0x0020)) printf("Auto-negotiation not complete\n");
- if (phy_reg & 0x0002) printf("Jabber condition detected\n");
- if (phy_reg & 0x0010) printf("Remote fault condition detected \n");
-
- if (known) {
- phy_reg = mii_phy_read(17);
- if (phy_reg & 0x0400)
- printf("Phy operating at %d MBit/s in %s-duplex mode\n",
- phy_reg & 0x4000 ? 100 : 10,
- phy_reg & 0x0200 ? "full" : "half");
- else
- printf("bad link!!\n");
-/*
-left off: no link, green 100MBit, yellow 10MBit
-right off: no activity, green full-duplex, yellow half-duplex
-*/
- mii_phy_write(20, 0x0452);
- }
-}
-
-unsigned short
-mii_phy_read(unsigned short reg)
-{
- int i;
- unsigned short tmp, val = 0, adr = 0;
- t_ep_regs *regs = (t_ep_regs*)CFG_REGS_BASE;
-
- tmp = 0x6002 | (adr << 7) | (reg << 2);
- regs->bcsr4 = 0xC3;
- for (i = 0; i < 64; i++) {
- regs->bcsr4 ^= MII_MDCK;
- }
- for (i = 0; i < 16; i++) {
- regs->bcsr4 &= ~MII_MDCK;
- if (tmp & 0x8000) regs->bcsr4 |= MII_MDIO;
- else regs->bcsr4 &= ~MII_MDIO;
- regs->bcsr4 |= MII_MDCK;
- tmp <<= 1;
- }
- regs->bcsr4 |= MII_MDIR;
- for (i = 0; i < 16; i++) {
- val <<= 1;
- regs->bcsr4 = MII_MDIO | (regs->bcsr4 | MII_MDCK);
- if (regs->bcsr4 & MII_MDIO) val |= 1;
- regs->bcsr4 = MII_MDIO | (regs->bcsr4 &= ~MII_MDCK);
- }
- return val;
-}
-
-void
-mii_phy_write(unsigned short reg, unsigned short val)
-{
- int i;
- unsigned short tmp, adr = 0;
- t_ep_regs *regs = (t_ep_regs*)CFG_REGS_BASE;
-
- tmp = 0x5002 | (adr << 7) | (reg << 2);
- regs->bcsr4 = 0xC3;
- for (i = 0; i < 64; i++) {
- regs->bcsr4 ^= MII_MDCK;
- }
- for (i = 0; i < 16; i++) {
- regs->bcsr4 &= ~MII_MDCK;
- if (tmp & 0x8000) regs->bcsr4 |= MII_MDIO;
- else regs->bcsr4 &= ~MII_MDIO;
- regs->bcsr4 |= MII_MDCK;
- tmp <<= 1;
- }
- for (i = 0; i < 16; i++) {
- regs->bcsr4 &= ~MII_MDCK;
- if (val & 0x8000) regs->bcsr4 |= MII_MDIO;
- else regs->bcsr4 &= ~MII_MDIO;
- regs->bcsr4 |= MII_MDCK;
- val <<= 1;
- }
-}
diff --git a/board/ep8260/u-boot.lds b/board/ep8260/u-boot.lds
deleted file mode 100644
index 4250e83f76..0000000000
--- a/board/ep8260/u-boot.lds
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * (C) Copyright 2001, 2002, 2002
- * 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(/opt/cross/lib); SEARCH_DIR(/opt/cross/powerpc-linux/lib);
-/* 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/mpc8260/start.o (.text)
- *(.text)
-/* common/environment.o(.text) */
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/eric/Makefile b/board/eric/Makefile
deleted file mode 100644
index f27fca6d7b..0000000000
--- a/board/eric/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/eric/config.mk b/board/eric/config.mk
deleted file mode 100644
index dd0b412095..0000000000
--- a/board/eric/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (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
-#
-
-#
-# esd ADCIOP boards
-#
-
-#TEXT_BASE = 0xFFF80000
-TEXT_BASE = 0xFFFC0000
diff --git a/board/eric/eric.c b/board/eric/eric.c
deleted file mode 100644
index 5413ae15c7..0000000000
--- a/board/eric/eric.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * (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 <common.h>
-#include <i2c.h>
-#include "eric.h"
-#include <asm/processor.h>
-
-#define PPC405GP_GPIO0_OR 0xef600700 /* GPIO Output */
-#define PPC405GP_GPIO0_TCR 0xef600704 /* GPIO Three-State Control */
-#define PPC405GP_GPIO0_ODR 0xef600718 /* GPIO Open Drain */
-#define PPC405GP_GPIO0_IR 0xef60071c /* GPIO Input */
-
-int board_early_init_f (void)
-{
-
- /*-------------------------------------------------------------------------+
- | Interrupt controller setup for the ERIC board.
- | Note: IRQ 0-15 405GP internally generated; active high; level sensitive
- | IRQ 16 405GP internally generated; active low; level sensitive
- | IRQ 17-24 RESERVED
- | IRQ 25 (EXT IRQ 0) FLASH; active low; level sensitive
- | IRQ 26 (EXT IRQ 1) PHY ; active low; level sensitive
- | IRQ 27 (EXT IRQ 2) HOST FAIL, active low; level sensitive
- | indicates NO Power or HOST RESET active
- | check GPIO7 (HOST RESET#) and GPIO8 (NO Power#)
- | for real IRQ source
- | IRQ 28 (EXT IRQ 3) HOST; active high; level sensitive
- | IRQ 29 (EXT IRQ 4) PCI INTC#; active low; level sensitive
- | IRQ 30 (EXT IRQ 5) PCI INTB#; active low; level sensitive
- | IRQ 31 (EXT IRQ 6) PCI INTA#; active low; level sensitive
- | -> IRQ6 Pin is NOW GPIO23 and can be activateted by setting
- | PPC405GP_GPIO0_TCR Bit 0 = 1 (driving the output as defined in PPC405GP_GPIO0_OR,
- | else tristate)
- | Note for ERIC board:
- | An interrupt taken for the HOST (IRQ 28) indicates that
- | the HOST wrote a "1" to one of the following locations
- | - VGA CRT_GPIO0 (if R1216 is loaded)
- | - VGA CRT_GPIO1 (if R1217 is loaded)
- |
- +-------------------------------------------------------------------------*/
-
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
- mtdcr (uiccr, 0x00000000); /* set all SMI to be non-critical */
- mtdcr (uicpr, 0xFFFFFF88); /* set int polarities; IRQ3 to 1 */
- mtdcr (uictr, 0x10000000); /* set int trigger levels, UART0 is EDGE */
- mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
-
- mtdcr (cntrl0, 0x00002000); /* set IRQ6 as GPIO23 to generate an interrupt request to the PCP2PCI bridge */
-
- out32 (PPC405GP_GPIO0_OR, 0x60000000); /*fixme is SMB_INT high or low active??; IRQ6 is GPIO23 output */
- out32 (PPC405GP_GPIO0_TCR, 0x7E400000);
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char *s = getenv ("serial#");
- char *e;
-
- puts ("Board: ");
-
- if (!s || strncmp (s, "ERIC", 9)) {
- puts ("### No HW ID - assuming ERIC");
- } else {
- for (e = s; *e; ++e) {
- if (*e == ' ')
- break;
- }
-
- for (; s < e; ++s) {
- putc (*s);
- }
- }
-
-
- putc ('\n');
-
- return (0);
-}
-
-
-/* ------------------------------------------------------------------------- */
-/* ------------------------------------------------------------------------- */
-/* ------------------------------------------------------------------------- */
-/*
- initdram(int board_type) reads EEPROM via I2c. EEPROM contains all of
- the necessary info for SDRAM controller configuration
-*/
-/* ------------------------------------------------------------------------- */
-/* ------------------------------------------------------------------------- */
-long int initdram (int board_type)
-{
-#ifndef CONFIG_ERIC
- int i;
- unsigned char datain[128];
- int TotalSize;
-#endif
-
-
-#ifdef CONFIG_ERIC
- /*
- * we have no EEPROM on ERIC
- * so let init.S do the init job for SDRAM
- * and simply return 32MByte here
- */
- return (CFG_SDRAM_SIZE * 1024 * 1024);
-#else
-
- /* Read Serial Presence Detect Information */
- for (i = 0; i < 128; i++)
- datain[i] = 127;
- i2c_send (SPD_EEPROM_ADDRESS, 0, 1, datain, 128);
- printf ("\nReading DIMM...\n");
-#if 0
- for (i = 0; i < 128; i++) {
- printf ("%d=0x%x ", i, datain[i]);
- if (((i + 1) % 10) == 0)
- printf ("\n");
- }
- printf ("\n");
-#endif
-
- /*****************************/
- /* Retrieve interesting data */
- /*****************************/
- /* size of a SDRAM bank */
- /* Number of bytes per side / number of banks per side */
- if (datain[31] == 0x08)
- TotalSize = 32;
- else if (datain[31] == 0x10)
- TotalSize = 64;
- else {
- printf ("IIC READ ERROR!!!\n");
- TotalSize = 32;
- }
-
- /* single-sided DIMM or double-sided DIMM? */
- if (datain[5] != 1) {
- /* double-sided DIMM => SDRAM banks 0..3 are valid */
- printf ("double-sided DIMM\n");
- TotalSize *= 2;
- }
- /* else single-sided DIMM => SDRAM bank 0 and bank 2 are valid */
- else {
- printf ("single-sided DIMM\n");
- }
-
-
- /* return size in Mb unit => *(1024*1024) */
- return (TotalSize * 1024 * 1024);
-#endif
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: xxx MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/eric/eric.h b/board/eric/eric.h
deleted file mode 100644
index b50d521d95..0000000000
--- a/board/eric/eric.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (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
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- * Start Address Length
- * +-----------------------+ 0x4000_0000 Start of Flash -----------------
- * | MON8xx code | 0x4000_0100 Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused) |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses | 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) | 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address | 0x04
- * +-----------------------+ 0x4001_FFC0 ^
- * | Hardware Information | 0x40 | MON8xx
- * +=======================+ 0x4002_0000 (sector border) -----------------
- * | Autostart Header | | Applications
- * | ... | v
- *
- *****************************************************************************/
diff --git a/board/eric/flash.c b/board/eric/flash.c
deleted file mode 100644
index c08a760266..0000000000
--- a/board/eric/flash.c
+++ /dev/null
@@ -1,1128 +0,0 @@
-/*
- * (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 <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-
-#ifdef CFG_FLASH_16BIT
-#define FLASH_WORD_SIZE unsigned short
-#define FLASH_ID_MASK 0xFFFF
-#else
-#define FLASH_WORD_SIZE unsigned long
-#define FLASH_ID_MASK 0xFFFFFFFF
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-/* stolen from esteem192e/flash.c */
-ulong flash_get_size (volatile FLASH_WORD_SIZE *addr, flash_info_t *info);
-
-#ifndef CFG_FLASH_16BIT
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-#else
-static int write_short (flash_info_t *info, ulong dest, ushort data);
-#endif
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
- uint pbcr;
- unsigned long base_b0, base_b1;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((volatile FLASH_WORD_SIZE *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Only one bank */
- if (CFG_MAX_FLASH_BANKS == 1)
- {
- /* Setup offsets */
- flash_get_offsets (FLASH_BASE0_PRELIM, &flash_info[0]);
-
- /* Monitor protection ON by default */
-#if 0 /* sand: */
- (void)flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE0_PRELIM-monitor_flash_len+size_b0,
- FLASH_BASE0_PRELIM-1+size_b0,
- &flash_info[0]);
-#else
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
- size_b1 = 0 ;
- flash_info[0].size = size_b0;
- }
-
- /* 2 banks */
- else
- {
- size_b1 = flash_get_size((volatile FLASH_WORD_SIZE *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- /* Re-do sizing to get full correct info */
-
- if (size_b1)
- {
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b1 = -size_b1;
- pbcr = (pbcr & 0x0001ffff) | base_b1 | (((size_b1/1024/1024)-1)<<17);
- mtdcr(ebccfgd, pbcr);
- /* printf("pb1cr = %x\n", pbcr); */
- }
-
- if (size_b0)
- {
- mtdcr(ebccfga, pb1cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb1cr);
- base_b0 = base_b1 - size_b0;
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (((size_b0/1024/1024)-1)<<17);
- mtdcr(ebccfgd, pbcr);
- /* printf("pb0cr = %x\n", pbcr); */
- }
-
- size_b0 = flash_get_size((volatile FLASH_WORD_SIZE *)base_b0, &flash_info[0]);
-
- flash_get_offsets (base_b0, &flash_info[0]);
-
- /* monitor protection ON by default */
-#if 0 /* sand: */
- (void)flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE0_PRELIM-monitor_flash_len+size_b0,
- FLASH_BASE0_PRELIM-1+size_b0,
- &flash_info[0]);
-#else
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((volatile FLASH_WORD_SIZE *)base_b1, &flash_info[1]);
-
- flash_get_offsets (base_b1, &flash_info[1]);
-
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- base_b1+size_b1-monitor_flash_len,
- base_b1+size_b1-1,
- &flash_info[1]);
- /* monitor protection OFF by default (one is enough) */
- (void)flash_protect(FLAG_PROTECT_CLEAR,
- base_b0+size_b0-monitor_flash_len,
- base_b0+size_b0-1,
- &flash_info[0]);
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
- }/* else 2 banks */
- return (size_b0 + size_b1);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start adress table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F320J3A ||
- (info->flash_id & FLASH_TYPEMASK) == FLASH_28F640J3A ||
- (info->flash_id & FLASH_TYPEMASK) == FLASH_28F128J3A) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * info->size/info->sector_count);
- }
- } else if (info->flash_id & FLASH_BTYPE) {
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CFG_FLASH_16BIT
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00008000;
- info->start[3] = base + 0x0000C000;
- info->start[4] = base + 0x00010000;
- info->start[5] = base + 0x00014000;
- info->start[6] = base + 0x00018000;
- info->start[7] = base + 0x0001C000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x000E0000;
- }
- }
- else {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- }
-#else
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00002000;
- info->start[2] = base + 0x00004000;
- info->start[3] = base + 0x00006000;
- info->start[4] = base + 0x00008000;
- info->start[5] = base + 0x0000A000;
- info->start[6] = base + 0x0000C000;
- info->start[7] = base + 0x0000E000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00070000;
- }
- }
- else {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- }
-#endif
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CFG_FLASH_16BIT
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- info->start[i--] = base + info->size - 0x00014000;
- info->start[i--] = base + info->size - 0x00018000;
- info->start[i--] = base + info->size - 0x0001C000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
-
- } else {
-
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-#else
- info->start[i--] = base + info->size - 0x00002000;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000A000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x0000E000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
-
- } else {
-
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-#endif
- }
-
-
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar botboot[]=", bottom boot sect)\n";
- uchar topboot[]=", top boot sector)\n";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- if (info->flash_id & 0x0001 ) {
- boottype = botboot;
- } else {
- boottype = topboot;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit%s",boottype);
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit%s",boottype);
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit%s",boottype);
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit%s",boottype);
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit%s",boottype);
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit%s",boottype);
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit%s",boottype);
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit%s",boottype);
- break;
- case FLASH_INTEL800B: printf ("INTEL28F800B (8 Mbit%s",boottype);
- break;
- case FLASH_INTEL800T: printf ("INTEL28F800T (8 Mbit%s",boottype);
- break;
- case FLASH_INTEL160B: printf ("INTEL28F160B (16 Mbit%s",boottype);
- break;
- case FLASH_INTEL160T: printf ("INTEL28F160T (16 Mbit%s",boottype);
- break;
- case FLASH_INTEL320B: printf ("INTEL28F320B (32 Mbit%s",boottype);
- break;
- case FLASH_INTEL320T: printf ("INTEL28F320T (32 Mbit%s",boottype);
- break;
-
-#if 0 /* enable when devices are available */
-
- case FLASH_INTEL640B: printf ("INTEL28F640B (64 Mbit%s",boottype);
- break;
- case FLASH_INTEL640T: printf ("INTEL28F640T (64 Mbit%s",boottype);
- break;
-#endif
- case FLASH_28F320J3A: printf ("INTEL28F320J3A (32 Mbit%s",boottype);
- break;
- case FLASH_28F640J3A: printf ("INTEL28F640J3A (64 Mbit%s",boottype);
- break;
- case FLASH_28F128J3A: printf ("INTEL28F128J3A (128 Mbit%s",boottype);
- break;
-
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-ulong flash_get_size (volatile FLASH_WORD_SIZE *addr, flash_info_t *info)
-{
- short i;
- ulong base = (ulong)addr;
- FLASH_WORD_SIZE value;
-
- /* Write auto select command: read Manufacturer ID */
-
-
-#ifndef CFG_FLASH_16BIT
-
- /*
- * Note: if it is an AMD flash and the word at addr[0000]
- * is 0x00890089 this routine will think it is an Intel
- * flash device and may(most likely) cause trouble.
- */
-
- addr[0x0000] = 0x00900090;
- if(addr[0x0000] != 0x00890089){
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-#else
-
- /*
- * Note: if it is an AMD flash and the word at addr[0000]
- * is 0x0089 this routine will think it is an Intel
- * flash device and may(most likely) cause trouble.
- */
-
- addr[0x0000] = 0x0090;
-
- if(addr[0x0000] != 0x0089){
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x0090;
-#endif
- }
- value = addr[0];
-
- switch (value) {
- case (AMD_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (STM_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_STM;
- break;
- case (SST_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_SST;
- break;
- case (INTEL_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
-
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (AMD_ID_LV400T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV400B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV800B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV160T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV160B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case (AMD_ID_LV320T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (AMD_ID_LV320B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
-
- case (INTEL_ID_28F800B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL800T;
- info->sector_count = 23;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (INTEL_ID_28F800B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL800B;
- info->sector_count = 23;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (INTEL_ID_28F160B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL160T;
- info->sector_count = 39;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (INTEL_ID_28F160B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL160B;
- info->sector_count = 39;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (INTEL_ID_28F320B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL320T;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (INTEL_ID_28F320B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
-#if 0 /* enable when devices are available */
- case (INTEL_ID_28F320B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL320T;
- info->sector_count = 135;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- case (INTEL_ID_28F320B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 135;
- info->size = 0x01000000;
- break; /* => 16 MB */
-#endif
- case (INTEL_ID_28F320J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 32 MBit */
- case (INTEL_ID_28F640J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 64 MBit */
- case (INTEL_ID_28F128J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 128 MBit */
-
- default:
- /* FIXME*/
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- flash_get_offsets(base, info);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile FLASH_WORD_SIZE *)info->start[0];
- if( (info->flash_id & 0xFF00) == FLASH_MAN_INTEL){
- *addr = (0x00F000F0 & FLASH_ID_MASK); /* reset bank */
- } else {
- *addr = (0x00FF00FF & FLASH_ID_MASK); /* reset bank */
- }
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-
- volatile FLASH_WORD_SIZE *addr=(volatile FLASH_WORD_SIZE*)(info->start[0]);
- int flag, prot, sect, l_sect, barf;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- ((info->flash_id > FLASH_AMD_COMP) &&
- ( (info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL ) ) ){
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
- if(info->flash_id < FLASH_AMD_COMP) {
-#ifndef CFG_FLASH_16BIT
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-#else
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x0080;
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
-#endif
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (volatile FLASH_WORD_SIZE *)(info->start[sect]);
- addr[0] = (0x00300030 & FLASH_ID_MASK);
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (volatile FLASH_WORD_SIZE*)(info->start[l_sect]);
- while ((addr[0] & (0x00800080&FLASH_ID_MASK)) !=
- (0x00800080&FLASH_ID_MASK) )
- {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (0x00F000F0 & FLASH_ID_MASK); /* reset bank */
- } else {
-
-
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- barf = 0;
-#ifndef CFG_FLASH_16BIT
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x00200020;
- addr[0] = 0x00D000D0;
- while(!(addr[0] & 0x00800080)); /* wait for error or finish */
- if( addr[0] & 0x003A003A) { /* check for error */
- barf = addr[0] & 0x003A0000;
- if( barf ) {
- barf >>=16;
- } else {
- barf = addr[0] & 0x0000003A;
- }
- }
-#else
- addr = (vu_short*)(info->start[sect]);
- addr[0] = 0x0020;
- addr[0] = 0x00D0;
- while(!(addr[0] & 0x0080)); /* wait for error or finish */
- if( addr[0] & 0x003A) /* check for error */
- barf = addr[0] & 0x003A;
-#endif
- if(barf) {
- printf("\nFlash error in sector at %lx\n",(unsigned long)addr);
- if(barf & 0x0002) printf("Block locked, not erased.\n");
- if((barf & 0x0030) == 0x0030)
- printf("Command Sequence error.\n");
- if((barf & 0x0030) == 0x0020)
- printf("Block Erase error.\n");
- if(barf & 0x0008) printf("Vpp Low error.\n");
- rcode = 1;
- } else printf(".");
- l_sect = sect;
- }
- addr = (volatile FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (0x00FF00FF & FLASH_ID_MASK); /* reset bank */
-
- }
-
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*flash_info_t *addr2info (ulong addr)
-{
- flash_info_t *info;
- int i;
-
- for (i=0, info=&flash_info[0]; i<CFG_MAX_FLASH_BANKS; ++i, ++info) {
- if ((addr >= info->start[0]) &&
- (addr < (info->start[0] + info->size)) ) {
- return (info);
- }
- }
-
- return (NULL);
-}
-*/
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- * Make sure all target addresses are within Flash bounds,
- * and no protected sectors are hit.
- * Returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - target range includes protected sectors
- * 8 - target address not in Flash memory
- */
-
-/*int flash_write (uchar *src, ulong addr, ulong cnt)
-{
- int i;
- ulong end = addr + cnt - 1;
- flash_info_t *info_first = addr2info (addr);
- flash_info_t *info_last = addr2info (end );
- flash_info_t *info;
-
- if (cnt == 0) {
- return (0);
- }
-
- if (!info_first || !info_last) {
- return (8);
- }
-
- for (info = info_first; info <= info_last; ++info) {
- ulong b_end = info->start[0] + info->size;*/ /* bank end addr */
-/* short s_end = info->sector_count - 1;
- for (i=0; i<info->sector_count; ++i) {
- ulong e_addr = (i == s_end) ? b_end : info->start[i + 1];
-
- if ((end >= info->start[i]) && (addr < e_addr) &&
- (info->protect[i] != 0) ) {
- return (4);
- }
- }
- }
-
-*/ /* finally write data to flash */
-/* for (info = info_first; info <= info_last && cnt>0; ++info) {
- ulong len;
-
- len = info->start[0] + info->size - addr;
- if (len > cnt)
- len = cnt;
- if ((i = write_buff(info, src, addr, len)) != 0) {
- return (i);
- }
- cnt -= len;
- addr += len;
- src += len;
- }
- return (0);
-}
-*/
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-#ifndef CFG_FLASH_16BIT
- ulong cp, wp, data;
- int l;
-#else
- ulong cp, wp;
- ushort data;
-#endif
- int i, rc;
-
-#ifndef CFG_FLASH_16BIT
-
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-
-#else
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start byte
- */
- if (addr - wp) {
- data = 0;
- data = (data << 8) | *src++;
- --cnt;
- if ((rc = write_short(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
-/* l = 0; used for debuging */
- while (cnt >= 2) {
- data = 0;
- for (i=0; i<2; ++i) {
- data = (data << 8) | *src++;
- }
-
-/* if(!l){
- printf("%x",data);
- l = 1;
- } used for debuging */
-
- if ((rc = write_short(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<2 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<2; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_short(info, wp, data));
-
-
-#endif
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-#ifndef CFG_FLASH_16BIT
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start,barf;
- int flag;
-
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- if(info->flash_id > FLASH_AMD_COMP) {
- /* AMD stuff */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
- } else {
- /* intel stuff */
- *addr = 0x00400040;
- }
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
-
- if(info->flash_id > FLASH_AMD_COMP) {
-
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
- } else {
-
- while(!(addr[0] & 0x00800080)){ /* wait for error or finish */
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
-
- if( addr[0] & 0x003A003A) { /* check for error */
- barf = addr[0] & 0x003A0000;
- if( barf ) {
- barf >>=16;
- } else {
- barf = addr[0] & 0x0000003A;
- }
- printf("\nFlash write error at address %lx\n",(unsigned long)dest);
- if(barf & 0x0002) printf("Block locked, not erased.\n");
- if(barf & 0x0010) printf("Programming error.\n");
- if(barf & 0x0008) printf("Vpp Low error.\n");
- return(2);
- }
-
-
- }
-
- return (0);
-
-}
-
-#else
-
-static int write_short (flash_info_t *info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short*)(info->start[0]);
- ulong start,barf;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_short *)dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- if(info->flash_id < FLASH_AMD_COMP) {
- /* AMD stuff */
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x00A0;
- } else {
- /* intel stuff */
- *addr = 0x00D0;
- *addr = 0x0040;
- }
- *((vu_short *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
-
- if(info->flash_id < FLASH_AMD_COMP) {
- /* AMD stuff */
- while ((*((vu_short *)dest) & 0x0080) != (data & 0x0080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
- } else {
- /* intel stuff */
- while(!(addr[0] & 0x0080)){ /* wait for error or finish */
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) return (1);
- }
-
- if( addr[0] & 0x003A) { /* check for error */
- barf = addr[0] & 0x003A;
- printf("\nFlash write error at address %lx\n",(unsigned long)dest);
- if(barf & 0x0002) printf("Block locked, not erased.\n");
- if(barf & 0x0010) printf("Programming error.\n");
- if(barf & 0x0008) printf("Vpp Low error.\n");
- return(2);
- }
- *addr = 0x00B0;
- *addr = 0x0070;
- while(!(addr[0] & 0x0080)){ /* wait for error or finish */
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) return (1);
- }
-
- *addr = 0x00FF;
-
- }
-
- return (0);
-
-}
-
-
-#endif
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/eric/init.S b/board/eric/init.S
deleted file mode 100644
index 9d4e7ff482..0000000000
--- a/board/eric/init.S
+++ /dev/null
@@ -1,355 +0,0 @@
-/*------------------------------------------------------------------------------+ */
-/* */
-/* This source code has been made available to you by IBM on an AS-IS */
-/* basis. Anyone receiving this source is licensed under IBM */
-/* copyrights to use it in any way he or she deems fit, including */
-/* copying it, modifying it, compiling it, and redistributing it either */
-/* with or without modifications. No license under IBM patents or */
-/* patent applications is to be implied by the copyright license. */
-/* */
-/* Any user of this software should understand that IBM cannot provide */
-/* technical support for this software and will not be responsible for */
-/* any consequences resulting from the use of this software. */
-/* */
-/* Any person who transfers this source code or any derivative work */
-/* must include the IBM copyright notice, this paragraph, and the */
-/* preceding two paragraphs in the transferred software. */
-/* */
-/* COPYRIGHT I B M CORPORATION 1995 */
-/* LICENSED MATERIAL - PROGRAM PROPERTY OF I B M */
-/*------------------------------------------------------------------------------- */
-
-/*----------------------------------------------------------------------------- */
-/* Function: ext_bus_cntlr_init */
-/* Description: Initializes the External Bus Controller for the external */
-/* peripherals. IMPORTANT: For pass1 this code must run from */
-/* cache since you can not reliably change a peripheral banks */
-/* timing register (pbxap) while running code from that bank. */
-/* For ex., since we are running from ROM on bank 0, we can NOT */
-/* execute the code that modifies bank 0 timings from ROM, so */
-/* we run it from cache. */
-/* */
-/*----------------------------------------------------------------------------- */
-#include <config.h>
-#include <ppc4xx.h>
-
-#define _LINUX_CONFIG_H 1 /* avoid reading Linux autoconf.h file */
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-
- .globl ext_bus_cntlr_init
-ext_bus_cntlr_init:
- mflr r4 /* save link register */
- bl ..getAddr
-..getAddr:
- mflr r3 /* get address of ..getAddr */
- mtlr r4 /* restore link register */
- addi r4,0,14 /* set ctr to 10; used to prefetch */
- mtctr r4 /* 10 cache lines to fit this function */
- /* in cache (gives us 8x10=80 instrctns) */
-..ebcloop:
- icbt r0,r3 /* prefetch cache line for addr in r3 */
- addi r3,r3,32 /* move to next cache line */
- bdnz ..ebcloop /* continue for 10 cache lines */
-
- /*------------------------------------------------------------------- */
- /* Delay to ensure all accesses to ROM are complete before changing */
- /* bank 0 timings. 200usec should be enough. */
- /* 200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles */
- /*------------------------------------------------------------------- */
- addis r3,0,0x0
- ori r3,r3,0xA000 /* ensure 200usec have passed since reset */
- mtctr r3
-..spinlp:
- bdnz ..spinlp /* spin loop */
-
- /*----------------------------------------------------------------------- */
- /* Memory Bank 0 (Flash) initialization (from openbios) */
- /*----------------------------------------------------------------------- */
-
- addi r4,0,pb0ap
- mtdcr ebccfga,r4
- addis r4,0,CS0_AP@h
- ori r4,r4,CS0_AP@l
- mtdcr ebccfgd,r4
-
- addi r4,0,pb0cr
- mtdcr ebccfga,r4
- addis r4,0,CS0_CR@h
- ori r4,r4,CS0_CR@l
- mtdcr ebccfgd,r4
-
- /*----------------------------------------------------------------------- */
- /* Memory Bank 1 (NVRAM/RTC) initialization */
- /*----------------------------------------------------------------------- */
-
- addi r4,0,pb1ap
- mtdcr ebccfga,r4
- addis r4,0,CS1_AP@h
- ori r4,r4,CS1_AP@l
- mtdcr ebccfgd,r4
-
- addi r4,0,pb1cr
- mtdcr ebccfga,r4
- addis r4,0,CS1_CR@h
- ori r4,r4,CS1_CR@l
- mtdcr ebccfgd,r4
-
- /*----------------------------------------------------------------------- */
- /* Memory Bank 2 (A/D converter) initialization */
- /*----------------------------------------------------------------------- */
-
- addi r4,0,pb2ap
- mtdcr ebccfga,r4
- addis r4,0,CS2_AP@h
- ori r4,r4,CS2_AP@l
- mtdcr ebccfgd,r4
-
- addi r4,0,pb2cr
- mtdcr ebccfga,r4
- addis r4,0,CS2_CR@h
- ori r4,r4,CS2_CR@l
- mtdcr ebccfgd,r4
-
- /*----------------------------------------------------------------------- */
- /* Memory Bank 3 (Ethernet PHY Reset) initialization */
- /*----------------------------------------------------------------------- */
-
- addi r4,0,pb3ap
- mtdcr ebccfga,r4
- addis r4,0,CS3_AP@h
- ori r4,r4,CS3_AP@l
- mtdcr ebccfgd,r4
-
- addi r4,0,pb3cr
- mtdcr ebccfga,r4
- addis r4,0,CS3_CR@h
- ori r4,r4,CS3_CR@l
- mtdcr ebccfgd,r4
-
- /*----------------------------------------------------------------------- */
- /* Memory Bank 4 (PC-MIP PRSNT1#) initialization */
- /*----------------------------------------------------------------------- */
-
- addi r4,0,pb4ap
- mtdcr ebccfga,r4
- addis r4,0,CS4_AP@h
- ori r4,r4,CS4_AP@l
- mtdcr ebccfgd,r4
-
- addi r4,0,pb4cr
- mtdcr ebccfga,r4
- addis r4,0,CS4_CR@h
- ori r4,r4,CS4_CR@l
- mtdcr ebccfgd,r4
-
- /*----------------------------------------------------------------------- */
- /* Memory Bank 5 (PC-MIP PRSNT2#) initialization */
- /*----------------------------------------------------------------------- */
-
- addi r4,0,pb5ap
- mtdcr ebccfga,r4
- addis r4,0,CS5_AP@h
- ori r4,r4,CS5_AP@l
- mtdcr ebccfgd,r4
-
- addi r4,0,pb5cr
- mtdcr ebccfga,r4
- addis r4,0,CS5_CR@h
- ori r4,r4,CS5_CR@l
- mtdcr ebccfgd,r4
-
- /*----------------------------------------------------------------------- */
- /* Memory Bank 6 (CPU LED0) initialization */
- /*----------------------------------------------------------------------- */
-
- addi r4,0,pb6ap
- mtdcr ebccfga,r4
- addis r4,0,CS6_AP@h
- ori r4,r4,CS6_AP@l
- mtdcr ebccfgd,r4
-
- addi r4,0,pb6cr
- mtdcr ebccfga,r4
- addis r4,0,CS6_CR@h
- ori r4,r4,CS5_CR@l
- mtdcr ebccfgd,r4
-
- /*----------------------------------------------------------------------- */
- /* Memory Bank 7 (CPU LED1) initialization */
- /*----------------------------------------------------------------------- */
-
- addi r4,0,pb7ap
- mtdcr ebccfga,r4
- addis r4,0,CS7_AP@h
- ori r4,r4,CS7_AP@l
- mtdcr ebccfgd,r4
-
- addi r4,0,pb7cr
- mtdcr ebccfga,r4
- addis r4,0,CS7_CR@h
- ori r4,r4,CS7_CR@l
- mtdcr ebccfgd,r4
-
-/* addis r4,r0,FPGA_BRDC@h */
-/* ori r4,r4,FPGA_BRDC@l */
-/* lbz r3,0(r4) /###*get FPGA board control reg */
-/* eieio */
-/* ori r3,r3,0x01 /###*set UART1 control to select CTS/RTS */
-/* stb r3,0(r4) */
-
- nop /* pass2 DCR errata #8 */
- blr
-
-/*----------------------------------------------------------------------------- */
-/* Function: sdram_init */
-/* Description: Configures SDRAM memory banks on ERIC. */
-/* We do manually init our SDRAM. */
-/* If we have two SDRAM banks, simply undef SINGLE_BANK (ROLF :-) */
-/* It is assumed that a 32MB 12x8(2) SDRAM is used. */
-/*----------------------------------------------------------------------------- */
- .globl sdram_init
-
-sdram_init:
-
- mflr r31
-
-#ifdef CFG_SDRAM_MANUALLY
- /*------------------------------------------------------------------- */
- /* Set MB0CF for bank 0. (0-32MB) Address Mode 4 since 12x8(2) */
- /*------------------------------------------------------------------- */
-
- addi r4,0,mem_mb0cf
- mtdcr memcfga,r4
- addis r4,0,MB0CF@h
- ori r4,r4,MB0CF@l
- mtdcr memcfgd,r4
-
- /*------------------------------------------------------------------- */
- /* Set MB1CF for bank 1. (32MB-64MB) Address Mode 4 since 12x8(2) */
- /*------------------------------------------------------------------- */
-
- addi r4,0,mem_mb1cf
- mtdcr memcfga,r4
- addis r4,0,MB1CF@h
- ori r4,r4,MB1CF@l
- mtdcr memcfgd,r4
-
- /*------------------------------------------------------------------- */
- /* Set MB2CF for bank 2. off */
- /*------------------------------------------------------------------- */
-
- addi r4,0,mem_mb2cf
- mtdcr memcfga,r4
- addis r4,0,MB2CF@h
- ori r4,r4,MB2CF@l
- mtdcr memcfgd,r4
-
- /*------------------------------------------------------------------- */
- /* Set MB3CF for bank 3. off */
- /*------------------------------------------------------------------- */
-
- addi r4,0,mem_mb3cf
- mtdcr memcfga,r4
- addis r4,0,MB3CF@h
- ori r4,r4,MB3CF@l
- mtdcr memcfgd,r4
-
- /*------------------------------------------------------------------- */
- /* Set the SDRAM Timing reg, SDTR1 and the refresh timer reg, RTR. */
- /* To set the appropriate timings, we need to know the SDRAM speed. */
- /* We can use the PLB speed since the SDRAM speed is the same as */
- /* the PLB speed. The PLB speed is the FBK divider times the */
- /* 405GP reference clock, which on the Walnut board is 33Mhz. */
- /* Thus, if FBK div is 2, SDRAM is 66Mhz; if FBK div is 3, SDRAM is */
- /* 100Mhz; if FBK is 3, SDRAM is 133Mhz. */
- /* NOTE: The Walnut board supports SDRAM speeds of 66Mhz, 100Mhz, and */
- /* maybe 133Mhz. */
- /*------------------------------------------------------------------- */
-
- mfdcr r5,strap /* determine FBK divider */
- /* via STRAP reg to calc PLB speed. */
- /* SDRAM speed is the same as the PLB */
- /* speed. */
- rlwinm r4,r5,4,0x3 /* get FBK divide bits */
-
-..chk_66:
- cmpi %cr0,0,r4,0x1
- bne ..chk_100
- addis r6,0,SDTR_66@h /* SDTR1 value for 66Mhz */
- ori r6,r6,SDTR_66@l
- addis r7,0,RTR_66 /* RTR value for 66Mhz */
- b ..sdram_ok
-..chk_100:
- cmpi %cr0,0,r4,0x2
- bne ..chk_133
- addis r6,0,SDTR_100@h /* SDTR1 value for 100Mhz */
- ori r6,r6,SDTR_100@l
- addis r7,0,RTR_100 /* RTR value for 100Mhz */
- b ..sdram_ok
-..chk_133:
- addis r6,0,0x0107 /* SDTR1 value for 133Mhz */
- ori r6,r6,0x4015
- addis r7,0,0x07F0 /* RTR value for 133Mhz */
-
-..sdram_ok:
- /*------------------------------------------------------------------- */
- /* Set SDTR1 */
- /*------------------------------------------------------------------- */
- addi r4,0,mem_sdtr1
- mtdcr memcfga,r4
- mtdcr memcfgd,r6
-
- /*------------------------------------------------------------------- */
- /* Set RTR */
- /*------------------------------------------------------------------- */
- addi r4,0,mem_rtr
- mtdcr memcfga,r4
- mtdcr memcfgd,r7
-
- /*------------------------------------------------------------------- */
- /* Delay to ensure 200usec have elapsed since reset. Assume worst */
- /* case that the core is running 200Mhz: */
- /* 200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles */
- /*------------------------------------------------------------------- */
- addis r3,0,0x0000
- ori r3,r3,0xA000 /* ensure 200usec have passed since reset */
- mtctr r3
-..spinlp2:
- bdnz ..spinlp2 /* spin loop */
-
- /*------------------------------------------------------------------- */
- /* Set memory controller options reg, MCOPT1. */
- /* Set DC_EN to '1' and BRD_PRF to '01' for 16 byte PLB Burst */
- /* read/prefetch. */
- /*------------------------------------------------------------------- */
- addi r4,0,mem_mcopt1
- mtdcr memcfga,r4
- addis r4,0,0x8080 /* set DC_EN=1 */
- ori r4,r4,0x0000
- mtdcr memcfgd,r4
-
- /*------------------------------------------------------------------- */
- /* Delay to ensure 10msec have elapsed since reset. This is */
- /* required for the MPC952 to stabalize. Assume worst */
- /* case that the core is running 200Mhz: */
- /* 200,000,000 (cycles/sec) X .010 (sec) = 0x1E8480 cycles */
- /* This delay should occur before accessing SDRAM. */
- /*------------------------------------------------------------------- */
- addis r3,0,0x001E
- ori r3,r3,0x8480 /* ensure 10msec have passed since reset */
- mtctr r3
-..spinlp3:
- bdnz ..spinlp3 /* spin loop */
-
-#else
-/*fixme: do SDRAM Autoconfig from EEPROM here */
-
-#endif
- mtlr r31 /* restore lr */
- blr
diff --git a/board/eric/u-boot.lds b/board/eric/u-boot.lds
deleted file mode 100644
index 4a0e5b4aed..0000000000
--- a/board/eric/u-boot.lds
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * (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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/eric/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/4xx_enet.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/adciop/Makefile b/board/esd/adciop/Makefile
deleted file mode 100644
index 4283300d89..0000000000
--- a/board/esd/adciop/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o ../common/pci.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/adciop/adciop.c b/board/esd/adciop/adciop.c
deleted file mode 100644
index 7a11a12cef..0000000000
--- a/board/esd/adciop/adciop.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * (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 <common.h>
-#include "adciop.h"
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-/* ------------------------------------------------------------------------- */
-
-
-int board_early_init_f (void)
-{
- /*
- * Set port pin in escc2 to keep living, and configure user led output
- */
- *(unsigned char *) 0x2000033e = 0x77; /* ESCC2: PCR bit3=pwr on, bit7=led out */
- *(unsigned char *) 0x2000033c = 0x88; /* ESCC2: PVR pwr on, led off */
-
- /*
- * Init pci regs
- */
- *(unsigned long *) 0x50000304 = 0x02900007; /* enable mem/io/master bits */
- *(unsigned long *) 0x500001b4 = 0x00000000; /* disable pci interrupt output enable */
- *(unsigned long *) 0x50000354 = 0x00c05800; /* disable emun interrupt output enable */
- *(unsigned long *) 0x50000344 = 0x00000000; /* disable pme interrupt output enable */
- *(unsigned long *) 0x50000310 = 0x00000000; /* pcibar0 */
- *(unsigned long *) 0x50000314 = 0x00000000; /* pcibar1 */
- *(unsigned long *) 0x50000318 = 0x00000000; /* pcibar2 */
-
- return 0;
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof (str));
-
- puts ("Board: ");
-
- if (!i || strncmp (str, "ADCIOP", 6)) {
- puts ("### No HW ID - assuming ADCIOP\n");
- return (1);
- }
-
- puts (str);
-
- putc ('\n');
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- return (16 * 1024 * 1024);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/esd/adciop/adciop.h b/board/esd/adciop/adciop.h
deleted file mode 100644
index 5fc313a258..0000000000
--- a/board/esd/adciop/adciop.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (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
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- * Start Address Length
- * +-----------------------+ 0x4000_0000 Start of Flash -----------------
- * | MON8xx code | 0x4000_0100 Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused) |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses | 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) | 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address | 0x04
- * +-----------------------+ 0x4001_FFC0 ^
- * | Hardware Information | 0x40 | MON8xx
- * +=======================+ 0x4002_0000 (sector border) -----------------
- * | Autostart Header | | Applications
- * | ... | v
- *
- *****************************************************************************/
diff --git a/board/esd/adciop/config.mk b/board/esd/adciop/config.mk
deleted file mode 100644
index 747f29f77e..0000000000
--- a/board/esd/adciop/config.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# (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
-#
-
-#
-# esd ADCIOP boards
-#
-
-# FLASH:
-#TEXT_BASE = 0xFFFE0000
-TEXT_BASE = 0xFFFD0000
-
-# SDRAM:
-#TEXT_BASE = 0x00FE0000
diff --git a/board/esd/adciop/flash.c b/board/esd/adciop/flash.c
deleted file mode 100644
index d9eccba1ea..0000000000
--- a/board/esd/adciop/flash.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- flash_get_offsets (FLASH_BASE0_PRELIM, &flash_info[0]);
-
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE0_PRELIM+size_b0-monitor_flash_len,
- FLASH_BASE0_PRELIM+size_b0-1,
- &flash_info[0]);
-
- if (size_b1) {
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(FLASH_BASE0_PRELIM + size_b0),
- &flash_info[1]);
-
- flash_get_offsets (FLASH_BASE0_PRELIM + size_b0, &flash_info[1]);
-
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE0_PRELIM+size_b0+size_b1-monitor_flash_len,
- FLASH_BASE0_PRELIM+size_b0+size_b1-1,
- &flash_info[1]);
- /* monitor protection OFF by default (one is enough) */
- flash_protect(FLAG_PROTECT_CLEAR,
- FLASH_BASE0_PRELIM+size_b0-monitor_flash_len,
- FLASH_BASE0_PRELIM+size_b0-1,
- &flash_info[0]);
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
diff --git a/board/esd/adciop/u-boot.lds b/board/esd/adciop/u-boot.lds
deleted file mode 100644
index ef937dd015..0000000000
--- a/board/esd/adciop/u-boot.lds
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/esd/apc405/Makefile b/board/esd/apc405/Makefile
deleted file mode 100644
index 024997e775..0000000000
--- a/board/esd/apc405/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o strataflash.o ../common/misc.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $^
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/apc405/apc405.c b/board/esd/apc405/apc405.c
deleted file mode 100644
index 078df001e9..0000000000
--- a/board/esd/apc405/apc405.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-extern void lxt971_no_sleep(void);
-
-/* fpga configuration data - gzip compressed and generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-/* Prototypes */
-int gunzip(void *, int, unsigned char *, unsigned long *);
-
-
-#ifdef CONFIG_LCD_USED
-/* logo bitmap data - gzip compressed and generated by bin2c */
-unsigned char logo_bmp[] =
-{
-#include CFG_LCD_LOGO_NAME
-};
-
-/*
- * include common lcd code (for esd boards)
- */
-#include "../common/lcd.c"
-
-#include CFG_LCD_HEADER_NAME
-#endif /* CONFIG_LCD_USED */
-
-
-int board_revision(void)
-{
- unsigned long cntrl0Reg;
- unsigned long value;
-
- /*
- * Get version of APC405 board from GPIO's
- */
-
- /*
- * Setup GPIO pins (CS2/GPIO11 and CS3/GPIO12 as GPIO)
- */
- cntrl0Reg = mfdcr(cntrl0);
- mtdcr(cntrl0, cntrl0Reg | 0x03000000);
- out32(GPIO0_ODR, in32(GPIO0_ODR) & ~0x00180000);
- out32(GPIO0_TCR, in32(GPIO0_TCR) & ~0x00180000);
- udelay(1000); /* wait some time before reading input */
- value = in32(GPIO0_IR) & 0x00180000; /* get config bits */
-
- /*
- * Restore GPIO settings
- */
- mtdcr(cntrl0, cntrl0Reg);
-
- switch (value) {
- case 0x00180000:
- /* CS2==1 && CS3==1 -> version <= 1.2 */
- return 2;
- case 0x00080000:
- /* CS2==0 && CS3==1 -> version 1.3 */
- return 3;
-#if 0 /* not yet manufactured ! */
- case 0x00100000:
- /* CS2==1 && CS3==0 -> version 1.4 */
- return 4;
- case 0x00000000:
- /* CS2==0 && CS3==0 -> version 1.5 */
- return 5;
-#endif
- default:
- /* should not be reached! */
- return 0;
- }
-}
-
-
-int board_early_init_f (void)
-{
- /*
- * First pull fpga-prg pin low, to disable fpga logic (on version 2 board)
- */
- out32(GPIO0_ODR, 0x00000000); /* no open drain pins */
- out32(GPIO0_TCR, CFG_FPGA_PRG); /* setup for output */
- out32(GPIO0_OR, CFG_FPGA_PRG); /* set output pins to high */
- out32(GPIO0_OR, 0); /* pull prg low */
-
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF81); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
-#if 1 /* test-only */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-#else
- mtebc (epcr, 0x28400000); /* ebc in high-z */
-#endif
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- volatile unsigned short *fpga_mode =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL);
- volatile unsigned short *fpga_ctrl2 =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL2);
- volatile unsigned char *duart0_mcr =
- (unsigned char *)((ulong)DUART0_BA + 4);
- volatile unsigned char *duart1_mcr =
- (unsigned char *)((ulong)DUART1_BA + 4);
- volatile unsigned short *fuji_lcdbl_pwm =
- (unsigned short *)((ulong)0xf0100200 + 0xa0);
- unsigned char *dst;
- ulong len = sizeof(fpgadata);
- int status;
- int index;
- int i;
- unsigned long cntrl0Reg;
-
- /*
- * Setup GPIO pins (CS6+CS7 as GPIO)
- */
- cntrl0Reg = mfdcr(cntrl0);
- mtdcr(cntrl0, cntrl0Reg | 0x00300000);
-
- dst = malloc(CFG_FPGA_MAX_SIZE);
- if (gunzip (dst, CFG_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
- printf ("GUNZIP ERROR - must RESET board to recover\n");
- do_reset (NULL, 0, 0, NULL);
- }
-
- status = fpga_boot(dst, len);
- if (status != 0) {
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("FPGA: %s\n", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=20; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc ('\n');
- do_reset(NULL, 0, 0, NULL);
- }
-
- /* restore gpio/cs settings */
- mtdcr(cntrl0, cntrl0Reg);
-
- puts("FPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("%s ", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
-
- free(dst);
-
- /*
- * Reset FPGA via FPGA_DATA pin
- */
- SET_FPGA(FPGA_PRG | FPGA_CLK);
- udelay(1000); /* wait 1ms */
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);
- udelay(1000); /* wait 1ms */
-
- /*
- * Write board revision in FPGA
- */
- *fpga_ctrl2 = (*fpga_ctrl2 & 0xfff0) | (gd->board_type & 0x000f);
-
- /*
- * Enable power on PS/2 interface (with reset)
- */
- *fpga_mode |= CFG_FPGA_CTRL_PS2_RESET;
- for (i=0;i<100;i++)
- udelay(1000);
- udelay(1000);
- *fpga_mode &= ~CFG_FPGA_CTRL_PS2_RESET;
-
- /*
- * Enable interrupts in exar duart mcr[3]
- */
- *duart0_mcr = 0x08;
- *duart1_mcr = 0x08;
-
- /*
- * Init lcd interface and display logo
- */
- lcd_init((uchar *)CFG_LCD_BIG_REG, (uchar *)CFG_LCD_BIG_MEM,
- regs_13806_640_480_16bpp,
- sizeof(regs_13806_640_480_16bpp)/sizeof(regs_13806_640_480_16bpp[0]),
- logo_bmp, sizeof(logo_bmp));
-
- /*
- * Reset microcontroller and setup backlight PWM controller
- */
- *fpga_mode |= 0x0014;
- for (i=0;i<10;i++)
- udelay(1000);
- *fpga_mode |= 0x001c;
- *fuji_lcdbl_pwm = 0x00ff;
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- unsigned char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming APC405");
- } else {
- puts(str);
- }
-
- gd->board_type = board_revision();
- printf(", Rev 1.%ld\n", gd->board_type);
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef CONFIG_IDE_RESET
-
-void ide_set_reset(int on)
-{
- volatile unsigned short *fpga_mode =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL);
-
- /*
- * Assert or deassert CompactFlash Reset Pin
- */
- if (on) { /* assert RESET */
- *fpga_mode &= ~(CFG_FPGA_CTRL_CF_RESET);
- } else { /* release RESET */
- *fpga_mode |= CFG_FPGA_CTRL_CF_RESET;
- }
-}
-
-#endif /* CONFIG_IDE_RESET */
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/esd/apc405/config.mk b/board/esd/apc405/config.mk
deleted file mode 100644
index 11faad2e00..0000000000
--- a/board/esd/apc405/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# esd ABG405 boards
-#
-
-TEXT_BASE = 0xFFF80000
diff --git a/board/esd/apc405/fpgadata.c b/board/esd/apc405/fpgadata.c
deleted file mode 100644
index c31625a99a..0000000000
--- a/board/esd/apc405/fpgadata.c
+++ /dev/null
@@ -1,2280 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x30,0x6a,0x41,0x42,0x00,0x03,0x61,0x62,0x67,0x34,0x30,0x35,
- 0x5f,0x31,0x5f,0x30,0x32,0x2e,0x62,0x69,0x74,0x00,0xed,0xbd,0x0b,0x74,0x1c,0xd5,
- 0x95,0x2e,0xbc,0xeb,0x54,0x49,0x2e,0x75,0xb7,0xd4,0xa5,0x87,0x89,0x00,0x63,0x4a,
- 0x2d,0xd9,0xb4,0x3d,0x6d,0xb9,0x2d,0x1b,0x59,0x08,0x59,0x2a,0x3d,0x20,0x1d,0xec,
- 0x60,0x41,0x98,0xc4,0x93,0x9f,0xcb,0x34,0xc4,0xc9,0x78,0xb2,0x9c,0x5c,0x43,0x72,
- 0xe7,0x3a,0x8f,0x21,0x47,0x0f,0xdb,0x6d,0xcb,0xe0,0xb6,0x71,0x12,0x67,0xe2,0x24,
- 0xed,0x07,0x60,0x88,0x27,0xd3,0x96,0x0d,0x96,0x31,0x81,0x92,0x11,0x20,0x1b,0x61,
- 0x2b,0x84,0x49,0xcc,0x23,0xd0,0x26,0x82,0x08,0x22,0x8c,0x30,0x0e,0x91,0xdf,0xff,
- 0xde,0xa7,0xba,0xaa,0xab,0x65,0x67,0xee,0xcc,0xbd,0x97,0xb5,0xfe,0xf5,0xaf,0x74,
- 0xd6,0x4c,0x76,0xaa,0x8e,0x4b,0x55,0xa7,0x4e,0xed,0xfd,0x9d,0xbd,0xbf,0xbd,0x37,
- 0xe4,0xf9,0x47,0xad,0xff,0x00,0x48,0x77,0x82,0x76,0xe7,0x5d,0xff,0x30,0x27,0x7c,
- 0xed,0xdf,0xcf,0xfa,0xfb,0x70,0x55,0xe5,0xd7,0xbf,0xb4,0x18,0xee,0x02,0x4f,0xd5,
- 0x37,0xae,0x0d,0x7f,0xe5,0x1f,0xaa,0xae,0xad,0x86,0x2f,0x81,0xb7,0x2a,0x1c,0xbe,
- 0x76,0x66,0x78,0xf6,0xcc,0xaa,0xd9,0xb0,0x18,0xf2,0x66,0xcd,0xa9,0x0d,0xd7,0xd4,
- 0x86,0x67,0xc1,0x97,0x41,0x2a,0xf4,0x5d,0xc0,0xdf,0xa3,0x3f,0xfa,0xdb,0xaf,0x84,
- 0x81,0x4b,0x00,0x30,0x21,0x2c,0x45,0xe9,0xbf,0xbd,0x61,0x49,0x97,0x80,0x37,0xcc,
- 0x08,0x83,0x49,0xff,0x1b,0xd2,0xe7,0xf3,0xc2,0xa0,0xbb,0xff,0xb7,0x14,0x06,0x03,
- 0x5a,0xa1,0x5e,0x81,0x22,0xf8,0x5f,0xff,0x24,0x50,0xb8,0x2d,0xff,0x57,0xc7,0xb3,
- 0xff,0xc4,0x78,0xfc,0xfd,0x6f,0x8f,0xff,0xcf,0xdc,0x0f,0x80,0xf2,0xbf,0x3d,0x5e,
- 0xfb,0xcf,0x8d,0xb7,0x85,0x0b,0x1a,0xfe,0x8b,0x1c,0x90,0x68,0x76,0x4b,0xfe,0x92,
- 0x60,0x34,0xf4,0xd9,0xd7,0x37,0x73,0xce,0xc3,0x05,0xde,0x90,0xf2,0x9f,0x95,0xbf,
- 0xc5,0x5f,0x08,0xef,0x1d,0x58,0x30,0xd6,0xfc,0x12,0xfb,0x00,0xe6,0xa6,0xfc,0xfd,
- 0xf2,0xbd,0xd0,0xd7,0x3e,0xfb,0xb0,0x6f,0x4c,0x1e,0x85,0x65,0xe9,0xf1,0x5c,0x3b,
- 0x0e,0xfb,0x79,0x65,0xca,0x1b,0x66,0xff,0x68,0xac,0xbb,0xa7,0x7c,0x40,0xed,0xc9,
- 0x7d,0x07,0xd6,0xf1,0x40,0xca,0x1b,0x63,0x21,0xd8,0xc1,0x03,0x83,0x6a,0x0f,0x4b,
- 0x29,0xe1,0xf4,0xf8,0x58,0xce,0x00,0xec,0x86,0x90,0xe9,0xad,0x62,0xc1,0xd8,0x36,
- 0x49,0x37,0x63,0x61,0x96,0x82,0x6d,0x9a,0x6e,0xfe,0x98,0x07,0x16,0xe0,0x34,0xea,
- 0xfd,0xd3,0xc3,0xec,0x2d,0xc9,0xbe,0xbe,0x39,0x71,0x27,0xec,0x87,0xca,0x5e,0x6f,
- 0x92,0x4d,0x97,0x7f,0x0e,0x01,0x53,0x4d,0x06,0x52,0xbc,0x0b,0x02,0xbd,0x5e,0x2e,
- 0xae,0xbf,0xd5,0xf4,0x24,0x9b,0x46,0x95,0xa8,0xfd,0xc0,0x85,0x23,0xa5,0x67,0xa0,
- 0xde,0xf4,0x27,0x65,0x43,0xff,0xa3,0x54,0x6d,0x4e,0x4a,0xb2,0x67,0xe0,0xf7,0x50,
- 0xdd,0xeb,0x5f,0x2b,0x2f,0x80,0x43,0x66,0xd8,0x2c,0x48,0xca,0xa6,0xd2,0x9a,0x1e,
- 0x9e,0x92,0x9e,0x84,0x0b,0xd0,0x60,0x8a,0xaf,0xe0,0x4d,0x14,0xbe,0x37,0x8a,0x4f,
- 0x77,0x46,0xc2,0x23,0x87,0xe4,0xb3,0xfa,0x79,0xbc,0x54,0xfe,0xa8,0x3c,0x06,0xf6,
- 0xf5,0x0d,0x6d,0x27,0xa4,0xaf,0x5f,0xa6,0x7d,0x89,0xce,0x26,0xe5,0x63,0xf0,0x82,
- 0x56,0x65,0xfa,0x3b,0xe5,0xa5,0xf0,0xaa,0x5e,0x4b,0xd7,0x6f,0x55,0xf4,0xf4,0xf8,
- 0xfe,0x9c,0x90,0x86,0xf7,0x6f,0x7a,0x93,0xde,0x28,0xac,0x53,0x66,0xe2,0x3f,0x64,
- 0x29,0x69,0x1d,0xaf,0x36,0x3f,0x03,0x72,0x08,0xda,0x53,0xe5,0x2f,0x2b,0x49,0x76,
- 0x02,0x57,0x7f,0xfa,0x7e,0x72,0x16,0x58,0xf3,0x93,0x64,0x0a,0x0a,0x95,0xbd,0xf3,
- 0xc3,0x45,0xfd,0xd0,0x91,0xd0,0x4d,0x2f,0xe4,0xfa,0x20,0xce,0x83,0xa6,0x1c,0x66,
- 0x63,0x60,0xdf,0x7f,0x54,0x9a,0x0c,0x7b,0xf9,0x8c,0x54,0xd7,0x77,0xd8,0x65,0x2d,
- 0x3f,0x4c,0xcc,0x18,0xf2,0x2e,0x6f,0x3f,0x01,0xab,0xf8,0x94,0x61,0x6f,0x7f,0xee,
- 0x53,0xbc,0x93,0x97,0xa5,0xd4,0xe5,0x97,0xf5,0x3b,0xd7,0x8f,0xa8,0x3e,0xbc,0x6c,
- 0x9d,0xe9,0xaf,0x65,0x01,0xfe,0x51,0x22,0xd4,0xe7,0xbf,0x4e,0xee,0x65,0x1d,0x4a,
- 0x78,0xe4,0x6a,0xc9,0x5b,0xa9,0x0e,0x42,0x8d,0xe9,0x0f,0xcb,0xb7,0x3a,0xab,0xde,
- 0xb8,0x2a,0x3d,0x3f,0x49,0x39,0x05,0x1f,0x68,0x0d,0x7d,0x05,0xa3,0xe5,0xa3,0xc6,
- 0x05,0x4f,0xbd,0x79,0x9f,0x81,0xcf,0x7b,0xce,0x3a,0x35,0x98,0x6b,0xcf,0xcf,0x8e,
- 0x9c,0x91,0xf4,0xfc,0x48,0x2a,0x4e,0x4b,0xfd,0x09,0x1f,0xce,0x36,0xfc,0x1a,0x6a,
- 0xcd,0x7c,0x2e,0x1f,0x87,0xa3,0x7c,0x36,0xcd,0xcf,0x7b,0xce,0xfa,0x89,0x14,0x6e,
- 0x86,0xbd,0x30,0xa3,0xd7,0xbb,0x2c,0x58,0xca,0x56,0x69,0xf3,0x8e,0x5e,0xb1,0x4c,
- 0x1e,0x84,0x87,0xb5,0x69,0xa6,0xd7,0x60,0x67,0x61,0x25,0x94,0x1d,0xf5,0x2e,0x63,
- 0x2f,0x39,0xf3,0x6f,0xc2,0x4f,0xc5,0xf3,0x7a,0xc7,0x58,0x2d,0x3e,0x66,0x08,0x9f,
- 0x2e,0x70,0x42,0x5a,0x95,0x98,0x96,0xca,0x8b,0xb0,0x37,0xe0,0x07,0xed,0xf8,0xe0,
- 0xcb,0xd9,0x28,0xd8,0xf3,0x1f,0x29,0x19,0xb0,0xe7,0x53,0xe5,0x1d,0x10,0x34,0x3d,
- 0x61,0xc6,0xd7,0x6f,0x93,0xa6,0x9b,0xde,0xeb,0xd8,0x00,0xb4,0x97,0x4e,0x35,0x71,
- 0xe9,0xbe,0xe4,0xac,0xcf,0xe1,0x89,0x3b,0xe0,0x34,0xd4,0x73,0x6f,0x42,0xbe,0x9e,
- 0x1f,0x82,0x4a,0xee,0x4b,0xb0,0xd3,0xfc,0x00,0xd4,0xf2,0xfc,0x14,0x1b,0x86,0x37,
- 0x5a,0xfe,0x89,0xdf,0x9f,0x90,0x4f,0x2b,0xce,0xfd,0x43,0x0a,0xc6,0xa0,0x1e,0xfc,
- 0x1c,0xe7,0x67,0x4c,0x49,0x0b,0xc3,0x74,0xa4,0x5d,0x3e,0xa6,0x8e,0xc1,0x13,0x1a,
- 0x1e,0x79,0xc9,0xb9,0x1f,0x55,0x1b,0x82,0x53,0x50,0x6f,0xf8,0xe3,0xf2,0x76,0x38,
- 0x08,0xb5,0xc6,0xba,0x78,0xf9,0x76,0xf5,0x15,0xe8,0x6e,0xbc,0x2f,0x2e,0xe3,0x29,
- 0xa3,0x32,0xea,0x8b,0xcb,0x07,0x9c,0xfb,0xe1,0xca,0x62,0xd8,0x07,0x95,0x86,0x37,
- 0xee,0xa9,0x50,0x57,0xc3,0x57,0x8d,0xae,0x38,0xeb,0x83,0x57,0x78,0xc0,0xf0,0xc5,
- 0xd9,0x90,0x74,0x9d,0x59,0xb9,0x3c,0x18,0xc7,0x15,0x65,0xab,0x85,0xd2,0x9c,0x8a,
- 0xf4,0x78,0x5c,0x3f,0x6d,0xec,0x2b,0x8d,0x5e,0x1a,0xf6,0x23,0x3d,0x60,0xe4,0x25,
- 0xd9,0xdb,0xf0,0x63,0xb5,0xa0,0x45,0x8d,0xb3,0xe7,0x9c,0xf5,0xa0,0x2a,0x0a,0xec,
- 0x82,0x90,0xe1,0xd5,0x8a,0x94,0xf6,0xb6,0x40,0x30,0x32,0x5f,0xcb,0x1d,0x82,0xf5,
- 0x65,0x01,0x43,0xd5,0x58,0x9f,0x8a,0xa7,0x22,0x41,0x8d,0x1d,0x90,0xec,0xf5,0xd0,
- 0x93,0x1f,0x15,0xcf,0xeb,0x5d,0x21,0x97,0x19,0xb1,0xdb,0xaa,0x4b,0x8e,0xf0,0x09,
- 0x29,0x38,0x0a,0x55,0x80,0xef,0xf7,0x98,0xd1,0x03,0xf5,0x25,0x3e,0x7c,0xd1,0x92,
- 0xbd,0x3e,0x37,0x5d,0x95,0x7e,0xde,0x56,0xf9,0xa4,0x71,0xaa,0xe8,0xeb,0x2d,0xde,
- 0x78,0xf1,0x49,0x38,0x55,0x58,0x6f,0x14,0x0c,0xe2,0xf3,0xfe,0x09,0xea,0x5b,0x70,
- 0x2a,0xde,0xc9,0xb5,0xe7,0x73,0x53,0x8e,0x3d,0x3f,0xde,0x29,0xfa,0xc1,0x68,0x7d,
- 0x8b,0x0f,0x87,0xf9,0x5e,0xf4,0x74,0xd3,0x8c,0x7d,0xd3,0x78,0x1b,0xe6,0x36,0x15,
- 0xc4,0xe5,0xe7,0x9c,0xf5,0x53,0xa3,0xa5,0xa0,0x07,0x2a,0x41,0x06,0x8f,0xd4,0x16,
- 0xbb,0xab,0xb6,0x34,0xc6,0x51,0x9f,0x8c,0x19,0x01,0x40,0xfd,0x00,0x5a,0x0f,0x04,
- 0x34,0x14,0x0e,0x3b,0xf3,0xa9,0xde,0xd0,0x67,0x3d,0x6f,0x51,0x3b,0xce,0x4f,0x4b,
- 0xa8,0x55,0xd5,0x02,0xef,0xc0,0x16,0xd0,0x69,0xc6,0xfa,0xf8,0x2e,0xa8,0x68,0xba,
- 0x52,0x2b,0x3a,0xe0,0xe8,0x9f,0xd2,0x89,0xdb,0xad,0xf9,0xd4,0xd8,0x14,0x58,0x9d,
- 0x13,0x34,0xd4,0x78,0x60,0xb1,0xb1,0x1f,0x02,0x86,0x77,0x3d,0xc3,0xa9,0xce,0x9b,
- 0x4e,0xff,0xf0,0x39,0x47,0xff,0x24,0x26,0x3a,0xef,0xb7,0x02,0x56,0xa3,0x10,0x8a,
- 0x37,0xf7,0xc1,0xbb,0xac,0xca,0xf0,0x6f,0xec,0x18,0x82,0x0f,0x3b,0xab,0x0d,0xbc,
- 0xff,0x61,0x47,0x3f,0x04,0xa5,0xed,0xf6,0xf8,0xbe,0xdc,0x53,0xb8,0x1e,0x68,0x36,
- 0xb4,0x77,0xad,0x23,0x78,0x29,0xb3,0xba,0xe9,0xea,0xb8,0x7c,0xc8,0x59,0x3f,0x41,
- 0x2d,0x21,0xe6,0xff,0x6a,0xfe,0x39,0x1d,0xfa,0xa1,0x96,0xa6,0x5d,0x67,0x63,0x93,
- 0xaa,0x00,0xf5,0x4f,0x0a,0xfa,0x55,0xf1,0x22,0x0e,0x65,0xae,0x9f,0x13,0x84,0x27,
- 0x70,0x19,0x7b,0x13,0x2c,0xa8,0xac,0x81,0x00,0x57,0x77,0xb0,0x1d,0xf0,0x79,0x5e,
- 0xcd,0xbd,0x3a,0x3b,0x65,0xdc,0xcf,0xcb,0x93,0xc1,0x44,0xd1,0x21,0xfb,0xf5,0xe2,
- 0xf8,0xb4,0xfe,0x09,0x37,0xf9,0xa0,0x03,0x74,0xf3,0xf2,0x52,0xe6,0x83,0xee,0xb6,
- 0x68,0xaf,0x37,0x9c,0x7b,0x40,0xed,0x30,0xf5,0x51,0x35,0x8c,0xe3,0xed,0xf7,0x9b,
- 0x90,0x26,0xd1,0xf7,0x6b,0x76,0x7d,0x83,0x4d,0xe2,0x1d,0x89,0xb2,0x3e,0x75,0x51,
- 0xfb,0x93,0xec,0x07,0x6c,0x8a,0xe9,0x5d,0x96,0xfb,0x6b,0x75,0x95,0x5a,0xf6,0x96,
- 0xba,0x8c,0xf5,0x6b,0xf6,0x7a,0xdb,0xa1,0x4e,0x86,0x3f,0xf3,0x79,0x29,0xfc,0x48,
- 0x27,0xc3,0xf3,0x3b,0xc2,0xa9,0xfc,0x45,0xf2,0x64,0xed,0x63,0x3e,0xeb,0x98,0x7f,
- 0xb9,0xfc,0x1b,0xf6,0x3c,0x9f,0x9d,0x08,0x2d,0x97,0x0f,0x39,0xfa,0x47,0xbd,0xca,
- 0xd2,0xb7,0xeb,0x92,0x1d,0xef,0x37,0xfd,0xf8,0x96,0x5f,0x1c,0xf0,0x6b,0xb3,0x07,
- 0x60,0x99,0x54,0x6f,0x2e,0x4c,0xca,0xa3,0xea,0x69,0x78,0x8a,0xf4,0xc9,0x01,0x47,
- 0xff,0x18,0xb6,0xfd,0x3a,0x25,0x7d,0xcf,0xf8,0xa0,0xb3,0x2a,0xb5,0xae,0x74,0xc2,
- 0xbd,0xe6,0x7c,0x7e,0x7d,0x6a,0x5d,0x8f,0x7c,0x5a,0x3a,0xb8,0x61,0x76,0xca,0x3f,
- 0x86,0x1a,0xc6,0x7e,0xbf,0x3b,0x6c,0xfd,0xd3,0xc3,0x0a,0xf8,0x3a,0x28,0x1b,0x2e,
- 0xa8,0x61,0x9b,0x8d,0xdf,0x24,0xf4,0x11,0xef,0xb7,0x8b,0x5e,0x80,0x07,0x13,0x77,
- 0x9a,0x78,0xab,0xef,0x39,0xef,0x57,0x03,0x31,0xde,0xf4,0x2c,0xcb,0x7d,0xdd,0x78,
- 0x58,0x2b,0xeb,0x9f,0xdf,0xca,0xea,0x7a,0x76,0x07,0xa6,0xf5,0xcf,0xbf,0x27,0xf7,
- 0xa8,0xba,0x4e,0x47,0xc5,0xb5,0xac,0xc9,0x74,0xde,0x57,0x34,0xa3,0x7f,0x42,0x2a,
- 0xcd,0xa7,0x27,0x9c,0xbb,0x16,0xba,0x21,0x4a,0x6a,0xa7,0x1f,0xb6,0xa1,0x46,0x42,
- 0xe1,0xa8,0xb3,0x3e,0x77,0x4c,0xb4,0x9e,0xb7,0x60,0xf4,0x73,0xdf,0x9d,0xf4,0x01,
- 0xec,0x36,0xfd,0xf1,0xe2,0xaf,0x19,0x27,0x50,0x7f,0x0a,0x0d,0x7c,0xb0,0xaf,0x16,
- 0x50,0xc8,0xdc,0x4f,0x1c,0x6c,0x7d,0x2b,0x8f,0xf8,0x50,0xe8,0xf5,0xc6,0xe5,0x11,
- 0xed,0x0a,0x03,0x8f,0xec,0x6a,0xff,0x10,0xce,0x68,0x0f,0x69,0xe2,0x1f,0xda,0xd7,
- 0x8f,0x6b,0x67,0xd3,0xf6,0x4e,0x1e,0x51,0x3f,0x40,0x61,0xc5,0xa0,0x7c,0x56,0x39,
- 0x6f,0xce,0xa6,0x23,0x49,0xed,0xe9,0xbc,0x86,0x84,0x6f,0x54,0x36,0x5b,0xec,0xf1,
- 0x6d,0xca,0x52,0xb4,0xbf,0x53,0xcd,0xae,0xa4,0x27,0x04,0x3f,0x27,0x43,0x16,0x67,
- 0x03,0x6c,0x0d,0xa0,0xfe,0x0c,0xcb,0x5b,0xd5,0x27,0xda,0x43,0x89,0x20,0x5a,0x34,
- 0xc3,0xd6,0x3f,0x3c,0x27,0x04,0x96,0xbd,0x03,0x31,0x1e,0xef,0x27,0x30,0x22,0x3d,
- 0xc1,0x02,0x78,0x24,0x77,0x2b,0xec,0xe3,0x95,0x9b,0x54,0x1c,0xef,0xac,0x1f,0x55,
- 0xf1,0x59,0xf3,0x33,0x8b,0xf9,0xe2,0xdb,0xb4,0x90,0xd9,0x55,0xcd,0x46,0xa4,0x76,
- 0x9c,0x16,0xa9,0xbb,0x8a,0xeb,0xbb,0xd4,0x10,0x57,0xab,0xd8,0x01,0x67,0x7d,0xf2,
- 0xfc,0xa5,0xd6,0xf3,0x9e,0x28,0xfe,0x65,0xea,0x03,0x40,0x7b,0xba,0xf1,0xf7,0x23,
- 0xa8,0xb1,0xab,0xfa,0xfc,0xc9,0x8e,0x84,0x79,0xa6,0xa2,0x9e,0xfb,0xba,0x3b,0x4c,
- 0x66,0xdf,0x4f,0xe2,0x2a,0x7a,0xde,0xb9,0xa6,0xff,0x71,0x79,0x84,0x5f,0x98,0xd2,
- 0xd0,0xe7,0x1f,0x2d,0x7e,0x1d,0xce,0x6b,0xf5,0x03,0xf8,0xbc,0x1c,0xfe,0x0c,0x0d,
- 0x1c,0xe7,0x67,0xd8,0xd1,0x3f,0x0e,0xfe,0xd9,0x27,0xef,0xd4,0x8e,0xc0,0xb6,0xfe,
- 0xfc,0x0f,0xe5,0x6a,0xed,0x37,0x07,0xea,0x69,0xd9,0x8c,0x74,0x1e,0x89,0xe3,0xfa,
- 0xe9,0x91,0x47,0x59,0x06,0xff,0xfc,0x42,0xe0,0x1f,0x39,0xc9,0xa6,0xb4,0x76,0x99,
- 0xb3,0x5f,0xf6,0x7d,0xcc,0xa6,0xc2,0xa3,0x80,0xf8,0xa7,0x87,0x9d,0x83,0x2e,0x5d,
- 0x08,0x99,0xf9,0x8f,0x29,0x36,0xfe,0x29,0x52,0x95,0xae,0x92,0x60,0xaf,0x3a,0x87,
- 0x25,0x94,0xfd,0x65,0x41,0xb3,0x2b,0xcc,0x06,0x52,0xdb,0x74,0xdd,0xbc,0x29,0x1c,
- 0xf8,0xbd,0x1b,0xff,0x58,0xf8,0x21,0xcc,0xf4,0x92,0x2e,0xa3,0xd2,0xcc,0x4b,0x7a,
- 0xb6,0x4a,0x8f,0xaa,0x01,0x73,0x7e,0x92,0x8d,0xe0,0xfa,0xd9,0x8a,0x13,0xeb,0xc2,
- 0x3f,0xc6,0x44,0x67,0x3d,0x54,0xb6,0xf7,0x17,0xd6,0x9a,0xa1,0xa4,0xdc,0x0e,0x27,
- 0x4a,0xac,0x15,0x02,0x7f,0x84,0x2a,0xfc,0x5e,0xd8,0xa0,0x63,0xbf,0x6c,0xfc,0xb3,
- 0x70,0x54,0xfe,0x4a,0x64,0x8c,0x2f,0xc3,0x85,0x27,0x2f,0x83,0xf3,0x6d,0x62,0x85,
- 0xbc,0xce,0xde,0xb4,0x96,0xca,0xc5,0xf8,0xe7,0xea,0x5d,0x37,0xf4,0x43,0x7f,0x63,
- 0xb5,0x19,0x0a,0x4f,0x48,0x44,0x4f,0x37,0xd1,0xf5,0x8b,0x47,0xe0,0x35,0xa8,0x16,
- 0x78,0xe0,0x62,0xfc,0xd3,0x83,0x86,0x92,0x2b,0x72,0xaf,0x3a,0x8a,0x37,0xfd,0x2a,
- 0xe2,0x31,0x5c,0x21,0x67,0xa1,0x0b,0x08,0x2f,0x35,0x5d,0x02,0xff,0xd4,0x32,0x13,
- 0xda,0x41,0x31,0x51,0xdb,0xac,0x80,0x00,0xd3,0x69,0x06,0xd6,0xc2,0x03,0x42,0x35,
- 0xe5,0x66,0xf0,0x8f,0x9e,0xc6,0x3f,0xf8,0x91,0xbe,0xc4,0x57,0xf2,0xb2,0x61,0x75,
- 0x39,0xfb,0x81,0xf4,0xd3,0xce,0x29,0xa9,0xf9,0xcb,0xd9,0x61,0xfe,0x30,0x02,0x03,
- 0xcf,0x72,0x96,0x8d,0x7f,0x3e,0x42,0xfc,0xe3,0xad,0x61,0x07,0x70,0x59,0xcd,0x19,
- 0xf6,0xf5,0x30,0x5e,0xb4,0x35,0x51,0x33,0xe2,0xaf,0x91,0xef,0xe7,0xbf,0xde,0xfe,
- 0x4d,0xd3,0x7f,0x3d,0xda,0x6b,0xfb,0xe7,0xe0,0x9f,0x5d,0xf8,0x11,0x9d,0x87,0x86,
- 0xe7,0x50,0x11,0x1d,0xa5,0xf5,0x23,0xbe,0x20,0x48,0xcf,0xcf,0xa0,0x33,0xff,0x19,
- 0xfc,0x83,0x67,0x4f,0xf3,0xee,0x57,0xd7,0xee,0xe9,0x48,0x40,0x3f,0xaf,0x42,0x0d,
- 0x26,0x1f,0xe7,0x2f,0x58,0xa7,0x2e,0xc2,0x3f,0x66,0xc1,0x32,0xf6,0xba,0xf2,0x38,
- 0x94,0xf7,0x7f,0x76,0x94,0x69,0x6c,0x25,0x5c,0x8b,0x6a,0x84,0xbd,0x9e,0x58,0x85,
- 0xa7,0x08,0xff,0x38,0xd7,0x77,0xf0,0xcf,0x72,0xf6,0x86,0xd2,0xbd,0xa6,0x2c,0xe5,
- 0x39,0xdd,0xf4,0x00,0xfc,0x00,0x61,0x1e,0x3e,0xe6,0x1b,0xc6,0x2a,0xeb,0xd4,0x25,
- 0xf0,0x4f,0x98,0xbd,0x08,0xdd,0xa9,0x00,0x09,0x0c,0xda,0xb9,0x98,0xcf,0x01,0xd4,
- 0xf0,0xa1,0x4b,0xe3,0x1f,0x7f,0x02,0x5f,0xfa,0x79,0xb3,0x8a,0x17,0x24,0x8a,0x7f,
- 0xa4,0xbe,0x71,0x67,0x00,0x05,0x79,0x18,0x0e,0x59,0xa7,0x4e,0x3b,0xf7,0x63,0xe3,
- 0x1f,0x0f,0x5a,0x1f,0x9d,0x84,0x1c,0x01,0x84,0xd2,0x88,0x28,0x37,0x2d,0xbc,0xe4,
- 0xac,0xff,0x0c,0xfe,0xf9,0x9c,0x25,0xf8,0xe2,0xcd,0x15,0xfa,0x41,0x4f,0xbd,0xb1,
- 0x50,0xd8,0x3b,0x45,0x18,0xbe,0x4b,0xe0,0x9f,0xef,0xb3,0x21,0x65,0x9f,0x54,0x69,
- 0x78,0xe2,0xec,0x21,0x63,0xb5,0x85,0x70,0x86,0x6c,0xa8,0x93,0x82,0x4b,0xe0,0x1f,
- 0x3c,0xab,0x54,0x12,0x8c,0xa9,0x60,0xe3,0xc7,0x5f,0x0a,0xff,0x90,0xf5,0xaf,0x08,
- 0x45,0x6e,0x2a,0x62,0x9d,0xa8,0xf5,0xec,0x23,0xd6,0xa9,0x8b,0xf1,0x8f,0xff,0x41,
- 0x44,0x3b,0x28,0x94,0x2c,0x58,0x51,0xae,0x83,0xd9,0x2a,0x1e,0xb3,0xd7,0x18,0xbb,
- 0x4d,0x08,0xc7,0xe5,0x8b,0xf0,0x4f,0x1c,0xf1,0xcf,0x39,0xad,0xfe,0x06,0xff,0x7a,
- 0xf9,0x65,0xe5,0x1c,0xb3,0xec,0xbb,0x91,0x3e,0x95,0xc1,0x3f,0xa5,0x36,0xfe,0x19,
- 0x6c,0x7e,0x5f,0xdf,0xc7,0x6a,0x5b,0x7d,0x1b,0x0e,0xcc,0x51,0x0f,0x42,0x15,0xc1,
- 0x86,0xa1,0x96,0xeb,0xac,0xf1,0x17,0xe3,0x1f,0x04,0x39,0xa9,0xce,0x9e,0x5b,0x43,
- 0xa5,0xf9,0x2b,0x19,0x01,0x83,0x00,0x44,0x38,0x43,0x3c,0xa6,0xd3,0x29,0x70,0xe1,
- 0x1f,0x70,0xf0,0x0f,0x0a,0x4a,0x68,0x91,0xaa,0xdd,0xaf,0xb0,0xb6,0xd8,0x56,0x63,
- 0x0d,0x3d,0xef,0x16,0x35,0xfd,0xbc,0xe3,0xf0,0x4f,0xe3,0x95,0xd6,0xec,0x85,0x8c,
- 0xbc,0xb8,0x98,0x4f,0xc4,0x87,0x04,0x2c,0xf7,0xb1,0xca,0xbf,0x84,0x7f,0x8a,0xde,
- 0x8e,0x13,0x9e,0x51,0xe3,0x72,0x6e,0xf4,0x20,0xb7,0xee,0x5f,0x39,0x25,0x89,0xfb,
- 0x1f,0x76,0xf4,0x4f,0x06,0xff,0x34,0x0f,0x69,0x28,0x34,0xfa,0x35,0xf9,0x1d,0x78,
- 0x57,0xb3,0xf1,0x8f,0x38,0x55,0x7c,0xc8,0xd1,0x3f,0x36,0xfe,0xf1,0xf3,0x6b,0xca,
- 0x94,0xe5,0xca,0xbd,0x80,0x68,0xf3,0x98,0x85,0xb7,0xc5,0xc2,0x63,0xf5,0x92,0xff,
- 0x52,0xf8,0x47,0x7e,0xc7,0x13,0x54,0x6b,0x81,0xf1,0x9b,0x12,0xec,0x0c,0xac,0x81,
- 0x7b,0x11,0x11,0xdd,0x3a,0x9c,0x86,0x46,0xf2,0x1a,0x67,0x3d,0x38,0xf8,0xa7,0x8a,
- 0x91,0x61,0x0a,0x9a,0xa5,0xf8,0xe1,0xb4,0xfd,0xdc,0xd2,0xc0,0xce,0xa7,0x74,0x31,
- 0xfe,0xf1,0x2e,0x62,0x93,0x60,0x37,0x2f,0x33,0xd7,0xdc,0xc3,0x5e,0x91,0x56,0x09,
- 0x18,0xc0,0x5e,0x5f,0xbb,0x57,0x17,0xdf,0xef,0x0e,0xe7,0xfa,0x36,0xfe,0xf1,0x0f,
- 0xb3,0xc9,0xfc,0xcf,0xfc,0xba,0xb7,0x7c,0xdf,0x93,0xdf,0x50,0xfe,0x90,0x9c,0x91,
- 0x42,0xfc,0xf3,0x66,0xde,0x9f,0xb7,0xcf,0x23,0xe1,0xbd,0x0c,0xfe,0xc9,0x4f,0xef,
- 0x37,0xd1,0xac,0x93,0x70,0xd6,0xff,0x78,0x73,0x3f,0x9a,0x75,0x4b,0xc3,0xac,0x4f,
- 0x0b,0x19,0xfc,0x03,0xb6,0xfd,0x1a,0x9b,0x72,0x3e,0xfa,0x42,0xfc,0xfa,0x54,0xc1,
- 0x98,0x7c,0x1e,0x9e,0xe7,0xd7,0x90,0xfd,0xba,0x60,0x5c,0x30,0x05,0xfe,0x31,0xc7,
- 0xe3,0x1f,0xd3,0xfb,0x55,0xf9,0xa9,0x08,0xee,0xa7,0x4c,0xb5,0x96,0xbd,0xae,0x75,
- 0x28,0xd3,0x46,0xbc,0xe1,0xa2,0x37,0xf8,0x7e,0xad,0x8c,0xee,0x3f,0x83,0x37,0x20,
- 0x8d,0x7f,0xbc,0x4d,0xec,0xf5,0xd8,0xc3,0x3a,0x6a,0x9b,0x7b,0x70,0x9b,0xb6,0x4e,
- 0x9d,0x66,0x76,0xe1,0xf3,0xe2,0x29,0x31,0x3e,0x83,0x7f,0x74,0x5b,0xff,0x00,0x58,
- 0xda,0x26,0x2f,0x9c,0xfb,0x1c,0x3c,0x60,0x12,0xec,0x09,0x8c,0xe0,0x29,0xa1,0x88,
- 0xfa,0x2f,0xc2,0x3f,0xde,0x24,0xde,0xf6,0x1f,0x2d,0xed,0x7a,0x9c,0x1d,0xe9,0x24,
- 0xfc,0x53,0x4e,0xa6,0x7c,0x2b,0xed,0xa0,0x33,0xf7,0xc3,0x6d,0xfc,0x13,0x97,0x77,
- 0x46,0xce,0xa0,0x62,0xbf,0x19,0xad,0x79,0xe3,0x1f,0xf5,0x2b,0x2c,0x0d,0x9c,0x56,
- 0xc5,0x19,0xfb,0x2b,0xa5,0xf1,0x4f,0x41,0x4a,0xfe,0x2e,0x0a,0xdf,0x41,0x7b,0x27,
- 0xd5,0xc1,0x9b,0xd2,0x5c,0xfa,0x43,0x67,0xe1,0x88,0xf5,0x17,0x8d,0x71,0xf8,0x47,
- 0xc0,0x9e,0x11,0x14,0x6a,0x4d,0x4f,0x92,0xad,0x41,0x20,0x57,0x45,0x88,0x6e,0x44,
- 0x7b,0x4d,0x40,0x9d,0x4b,0xe0,0x9f,0x2b,0x93,0x62,0xfc,0x74,0xb4,0x5f,0x6c,0x67,
- 0xe3,0x8f,0x95,0xe9,0xe4,0xc1,0x18,0x91,0xba,0xd2,0xe3,0x5d,0xfa,0x27,0x8d,0x7f,
- 0xca,0xd8,0x00,0xdf,0xad,0xe2,0xfe,0x74,0x4e,0xfb,0x4e,0x1c,0xa6,0x0f,0xa0,0x99,
- 0x1b,0xe0,0x0f,0x18,0x02,0x1a,0x65,0xf4,0x0f,0xd8,0xf8,0x87,0xb3,0x91,0xd4,0x19,
- 0xb8,0xce,0x54,0x4f,0xca,0x3b,0xe1,0xcd,0xd6,0xda,0x7e,0xff,0x1e,0x71,0xff,0x96,
- 0xeb,0xc3,0xd1,0x3f,0x89,0x3c,0xeb,0x79,0xaf,0xee,0xc0,0xd9,0x40,0xe1,0x90,0xbf,
- 0xbb,0xf8,0x75,0x76,0xa1,0xec,0x89,0x01,0xff,0x89,0x6d,0xef,0xeb,0x17,0x74,0x7c,
- 0xde,0x13,0xf2,0xb0,0x83,0x67,0xcc,0x15,0x62,0xfd,0x98,0xf9,0x1f,0x77,0xe0,0x3f,
- 0xe4,0x75,0x7a,0x41,0xb7,0xfc,0x06,0x1c,0xe0,0x73,0x53,0xbe,0xe4,0x03,0x75,0xea,
- 0x6b,0xd0,0x30,0xba,0x6e,0x4c,0x1e,0xcd,0xe0,0x13,0xe1,0xff,0x99,0x89,0xb7,0xa1,
- 0x5f,0x40,0xa1,0x76,0x8b,0xef,0x54,0xd1,0x71,0xe8,0xe2,0xd3,0x53,0xf7,0x9d,0xe0,
- 0xbf,0x80,0x2e,0x93,0x4c,0x3f,0x4b,0xe5,0xda,0xf3,0xd9,0x0f,0x03,0xca,0x6e,0x29,
- 0x64,0xae,0xae,0x42,0x7b,0x84,0x0f,0x0e,0x5d,0xe1,0xc0,0x4e,0x48,0xe0,0x0c,0x7c,
- 0xa6,0x0a,0x81,0xf1,0xee,0xa2,0x50,0x3f,0xee,0xd0,0xb7,0x3a,0xef,0x2b,0xed,0xff,
- 0x41,0xd8,0x73,0xeb,0x48,0x29,0x0a,0xed,0x79,0xc9,0xc0,0xfb,0xc6,0x0e,0x98,0xde,
- 0x9b,0x97,0xbc,0x71,0xa7,0x85,0x48,0x11,0xff,0x48,0xf6,0x7a,0x90,0xd2,0xf8,0x27,
- 0x1f,0xdf,0xbe,0x8a,0x42,0xaa,0x20,0x59,0xfc,0x0b,0x15,0xf5,0x83,0xb9,0x36,0x29,
- 0xef,0x54,0x05,0xb4,0x4e,0xca,0xbc,0xc5,0x85,0x7f,0x14,0xb1,0x1e,0x46,0xc5,0xfc,
- 0x5c,0xff,0x48,0x01,0x2d,0xbc,0xdf,0x41,0x43,0x2f,0x02,0x45,0xb2,0xef,0x57,0x67,
- 0xe3,0x9f,0xdb,0x32,0xfe,0x9f,0x90,0xfa,0x1a,0xab,0x46,0xf4,0xd8,0x3c,0x03,0xc6,
- 0xd4,0x2a,0x71,0xc4,0x3e,0x35,0xe8,0xf8,0xdf,0xfa,0xc5,0x7a,0x98,0x39,0xe8,0x1d,
- 0xf5,0xd4,0x41,0x57,0x6e,0xa8,0x2d,0x7f,0x14,0x61,0x0c,0x97,0x74,0xf3,0xca,0x51,
- 0x36,0xa9,0x70,0x9d,0xb5,0x1e,0xb2,0xf0,0x8f,0xb6,0x1b,0x2a,0xfb,0x6d,0xeb,0xcc,
- 0xf3,0xc2,0xb8,0x91,0xaf,0xe2,0x09,0x44,0xe0,0xc6,0xcd,0x91,0x6d,0xb9,0x3e,0xdc,
- 0x88,0xa1,0x7d,0xb7,0xd7,0x5b,0xd2,0xc6,0x3f,0xd7,0xb3,0x3b,0xcc,0x1f,0xf2,0x99,
- 0xdb,0xf3,0xbe,0x95,0xfb,0x14,0xdc,0x1f,0x9f,0x96,0xf2,0xd6,0x14,0xdd,0xc1,0x27,
- 0xb4,0x09,0x3c,0x70,0x54,0xb1,0xc7,0x47,0x22,0x3e,0x75,0x37,0xd4,0xf5,0xf9,0x6b,
- 0xe5,0xc3,0xf0,0xeb,0xb2,0xba,0x47,0x67,0xd6,0xca,0x3e,0x18,0x1d,0x4b,0x0e,0xe1,
- 0x15,0x6e,0xe6,0x1f,0xc5,0xeb,0x4c,0x04,0x42,0x2f,0x39,0xf8,0xd9,0xc1,0x3f,0x7f,
- 0x92,0x9f,0x34,0xf0,0x7b,0x8c,0xf9,0xff,0xd4,0x7c,0x16,0x81,0xdb,0xdc,0x5e,0xff,
- 0x49,0xef,0x93,0x46,0x7a,0x2b,0x31,0x98,0xd1,0xcf,0x8a,0x98,0x9f,0xc3,0x88,0x9f,
- 0x43,0x88,0x76,0xea,0xda,0x7c,0x4f,0x94,0x57,0xc2,0xa0,0x35,0x2d,0xc7,0x23,0xaf,
- 0x59,0xc2,0x81,0x0c,0x3e,0x4c,0xeb,0x93,0xae,0x7b,0xaa,0xf2,0x13,0xbf,0x85,0x19,
- 0x84,0xf6,0x27,0xc1,0x49,0x40,0xfd,0xf9,0x4d,0xf6,0x06,0x5f,0x95,0x22,0xfd,0x09,
- 0x19,0xff,0x89,0xa1,0x59,0xf8,0xc7,0x53,0x33,0x75,0x32,0x3c,0xcc,0x67,0x26,0x62,
- 0xdf,0x62,0xf5,0xb0,0xd6,0x9c,0x91,0xfa,0xcc,0xb7,0x73,0xdf,0x80,0x55,0x09,0xf1,
- 0xbc,0xfd,0xce,0xf5,0x23,0x25,0x6b,0xd3,0x4a,0xdb,0xe3,0x53,0x11,0x3d,0x76,0xe3,
- 0xf7,0xa8,0x2a,0x49,0xd8,0x81,0xd3,0x7e,0x19,0xcd,0xb0,0x50,0xec,0xaf,0x3a,0xd7,
- 0xb7,0xf1,0x0f,0xa2,0x9d,0x20,0xbc,0x07,0xf3,0x36,0x84,0x12,0xc5,0xb5,0xea,0x61,
- 0x3c,0xb2,0x30,0x51,0x9e,0xc1,0x3f,0x19,0xfc,0x66,0xe1,0x1f,0x72,0xf2,0x98,0x0e,
- 0xec,0x31,0xc6,0x8c,0xa7,0x48,0x38,0xe6,0x19,0xb6,0xf1,0x8f,0x3d,0x3f,0x2e,0xff,
- 0xcf,0x10,0x3b,0x88,0xd6,0x90,0xcc,0xa2,0x7e,0x0a,0xaa,0x85,0xc7,0xa0,0xe5,0x16,
- 0x34,0xf4,0x88,0x88,0x0e,0x38,0xf7,0x93,0xc6,0x3f,0x4d,0xde,0x78,0xd3,0x90,0x80,
- 0x31,0x64,0x76,0x61,0x97,0x14,0x68,0xc4,0x8d,0xde,0x83,0xda,0x3e,0xb6,0x95,0x8e,
- 0xfc,0x05,0xfc,0x83,0xe3,0x5b,0x3d,0xf8,0x0f,0xa5,0x7d,0xb0,0x95,0x8e,0x54,0x5c,
- 0xfe,0x23,0x98,0x4e,0xe3,0x0f,0x2b,0xf6,0x7a,0x4b,0xe3,0x9f,0x88,0xb7,0x08,0xad,
- 0x7f,0x1b,0xda,0x77,0xb5,0xa8,0xa8,0x0f,0x57,0xac,0x8e,0x08,0x81,0x75,0xf2,0x5d,
- 0xfa,0x0e,0x42,0x50,0x87,0x1c,0xfd,0x33,0x96,0x23,0xf0,0x4f,0x89,0x7f,0x05,0x79,
- 0x1b,0x10,0x78,0x14,0x58,0x78,0xaf,0x0a,0xf0,0x48,0x10,0x8e,0xb2,0xda,0x92,0x10,
- 0x97,0xcf,0x3b,0xfe,0x9f,0x98,0x85,0x07,0x5a,0x10,0xf6,0x0c,0xb5,0x9c,0xc2,0xfd,
- 0x5a,0xce,0xfa,0xe6,0x97,0xd5,0x73,0x04,0x03,0xd6,0x97,0x77,0x1a,0xaf,0x68,0xe2,
- 0xc1,0xdf,0x52,0xdc,0xf8,0xe7,0x15,0x68,0x68,0xf2,0xc5,0x3b,0x10,0x16,0x42,0x43,
- 0x63,0x41,0xbc,0x63,0xc8,0xf3,0xa2,0x72,0x0d,0x4e,0x4b,0xc7,0x1c,0xfd,0x94,0x6a,
- 0xe1,0x25,0x69,0x3c,0xfe,0x51,0x3b,0x8b,0xca,0x20,0x86,0x42,0x90,0xfc,0x3f,0x31,
- 0xc4,0x3f,0xc1,0x4e,0x28,0xc3,0x53,0xb5,0x12,0xf9,0x7f,0x1c,0xfd,0x13,0xc9,0x11,
- 0xf8,0xe7,0x26,0xb5,0xe8,0xa1,0x4e,0xd6,0xc6,0x04,0x3e,0x1c,0x82,0x36,0xa8,0x30,
- 0x3c,0x45,0x6b,0x14,0x65,0x8b,0xb2,0xf4,0x26,0xc4,0x3f,0x2f,0x39,0xfa,0x64,0x93,
- 0x85,0x7f,0x4c,0x9c,0xb4,0xed,0x9a,0x35,0xff,0x4d,0x38,0xb1,0x5a,0xa0,0xf1,0x0a,
- 0xad,0x09,0xa7,0x9a,0x09,0xff,0xcf,0x3b,0xce,0xfb,0x4a,0x94,0x90,0x37,0x8f,0x60,
- 0xed,0xb4,0xed,0xca,0x41,0xa5,0x0e,0xf1,0xaa,0xfc,0xac,0x7e,0x30,0x7a,0x19,0xbe,
- 0xe8,0xe2,0x0a,0xb0,0x1c,0x3b,0xc5,0x19,0xfc,0xb3,0x04,0xe8,0xfa,0x75,0xc6,0xcc,
- 0xb8,0xdc,0x02,0xa7,0x2c,0x58,0xf8,0x07,0xb1,0x42,0xbe,0x86,0x0b,0x43,0x4b,0x7b,
- 0x84,0x5e,0x1a,0x8f,0x7f,0x7c,0x0b,0xf8,0xe7,0xa2,0x38,0xff,0xf5,0x16,0xfe,0xe9,
- 0xbf,0xa1,0x1a,0xfe,0x9e,0x17,0xeb,0x70,0xd4,0x5a,0x6f,0x99,0xef,0x2b,0xa8,0x10,
- 0xfe,0x99,0xc9,0xd5,0x04,0x1b,0x56,0xd6,0xc0,0xcc,0xc7,0xf2,0x51,0x60,0x88,0x11,
- 0x79,0x57,0xa2,0x68,0x7f,0x34,0xed,0x1a,0x3a,0x94,0xc1,0x3f,0xca,0x02,0xda,0x64,
- 0xc5,0xd5,0x24,0x2c,0x60,0xa8,0x7f,0x96,0xe1,0xf7,0x32,0xc0,0xda,0xd5,0x0a,0x72,
- 0x3b,0x4f,0x48,0x7f,0x4a,0x77,0x1d,0x72,0xd6,0x9b,0x0e,0xb7,0xc3,0x0f,0xf1,0xfb,
- 0x55,0xef,0xc9,0x1d,0x00,0xdc,0xad,0x34,0x7f,0x66,0x19,0xe2,0x81,0x4e,0xfa,0x7e,
- 0xef,0x2e,0xda,0xa8,0xe2,0xa7,0x3d,0x80,0x78,0x20,0xe5,0xe8,0x9f,0x60,0xec,0x0e,
- 0xfc,0x7e,0xeb,0x52,0xa1,0xef,0xc9,0x77,0x20,0x2c,0x99,0x17,0xed,0x5c,0x8e,0xf6,
- 0xe5,0x39,0x7e,0x6d,0xca,0x7b,0x5a,0x2e,0x52,0xbf,0xc0,0x05,0xfe,0x79,0x2b,0xe0,
- 0xe0,0x55,0x81,0x7f,0x50,0xc9,0x3c,0x25,0xac,0x79,0x9d,0x81,0xda,0x63,0x00,0x46,
- 0x71,0x9b,0xb9,0x2e,0x59,0x9e,0x82,0x33,0x0a,0x6e,0xcc,0x51,0x9f,0x64,0xf6,0xa7,
- 0x39,0xe7,0x0d,0x6b,0xff,0x2e,0x55,0xc2,0x11,0xbc,0x7e,0xc1,0xbe,0xf2,0x37,0xe0,
- 0xf9,0x64,0x35,0x45,0x34,0x2a,0xe1,0x83,0x95,0x96,0xff,0x67,0xab,0x3d,0x3f,0x8f,
- 0x5a,0xf8,0xa7,0x0f,0xf7,0x9b,0x05,0xe6,0x6f,0x13,0x33,0x5a,0xd4,0xe5,0x81,0xd7,
- 0xa3,0x7d,0x25,0xfa,0x88,0xff,0x1e,0xf9,0x46,0x58,0xc5,0xee,0x24,0xfd,0xf0,0x1e,
- 0xb3,0xc7,0x23,0xfe,0xc1,0x87,0x9a,0xc6,0xbd,0xdf,0x62,0xb7,0xc3,0x2a,0x6d,0x46,
- 0xab,0x87,0xf0,0xcf,0x0f,0xca,0xa6,0x3c,0xeb,0x5d,0x96,0x5b,0x82,0x33,0x40,0x8e,
- 0x2f,0xd6,0x77,0xb1,0xff,0x27,0x7c,0xd9,0x02,0xed,0x01,0x16,0x8a,0xe2,0x7c,0x1e,
- 0xa6,0x30,0x07,0x6d,0x63,0x5b,0x26,0x74,0xc0,0x43,0xc2,0xff,0xe3,0x8c,0xdf,0x21,
- 0xec,0x57,0x2d,0x29,0xd5,0xa5,0xca,0x0b,0x4a,0xa8,0x14,0xed,0xd1,0x07,0xc6,0x60,
- 0x6b,0x35,0x1d,0xa9,0x40,0x44,0x34,0x57,0x28,0x52,0x67,0xfd,0x70,0x49,0xe8,0xdb,
- 0xb8,0x3f,0xf9,0xb9,0xb5,0x24,0x70,0x01,0x7b,0xc6,0x0c,0x11,0x86,0x78,0xdb,0xba,
- 0x14,0x45,0x28,0xec,0xf9,0x91,0xb4,0x27,0x55,0xdb,0xff,0x83,0xd6,0xed,0x7b,0x46,
- 0x01,0xc1,0x9e,0x11,0x28,0x37,0x7f,0xb6,0xac,0xb9,0x04,0x9e,0x81,0xd9,0xa6,0x6f,
- 0x94,0x65,0xfc,0x93,0x69,0xfc,0x33,0x4a,0xe8,0x05,0x77,0xeb,0x5f,0x1f,0xcd,0x4f,
- 0xb2,0x01,0x6d,0x47,0x8c,0xfc,0x39,0xf2,0x14,0xb4,0x80,0x5b,0x4d,0x35,0xc9,0x86,
- 0x5d,0xf8,0x47,0x8c,0x8f,0xd2,0x78,0xe5,0xc7,0x50,0xb9,0xcc,0x93,0x6c,0x1a,0x81,
- 0x1d,0xfc,0x51,0xb4,0x5f,0x2c,0xa4,0x77,0xb1,0xbb,0x4c,0xf5,0x12,0xf8,0xc7,0xc8,
- 0x9b,0x8d,0x68,0x07,0xd7,0x5b,0x4b,0x5e,0x78,0xc3,0x08,0x24,0xb4,0xe0,0x4b,0xde,
- 0x39,0x4c,0xd1,0x1f,0xc0,0x89,0x52,0x67,0xb9,0xfc,0x3f,0x10,0x23,0x7b,0x8a,0x9f,
- 0xc9,0x3d,0x1d,0xef,0x73,0x44,0x5f,0x86,0x67,0x17,0x3e,0xc8,0x70,0x4e,0xed,0xd1,
- 0xf9,0xdf,0xf4,0x4e,0x89,0xcc,0xd7,0xba,0xc9,0xe3,0x91,0xf1,0x87,0x5b,0xfe,0x9f,
- 0x06,0xf0,0x9f,0x28,0x3f,0x97,0x3c,0x53,0xd8,0x10,0x41,0xb4,0x83,0xf6,0xab,0x6c,
- 0x2f,0x79,0x3c,0x36,0x72,0x1b,0xff,0xe4,0x64,0xfc,0x2d,0x69,0xfc,0xbc,0x5b,0xd6,
- 0xe1,0x0f,0xd0,0xd0,0xef,0x53,0xe5,0x27,0x97,0x1c,0x81,0xda,0xd7,0x70,0xd9,0x1c,
- 0x6f,0x7a,0x13,0xc4,0xfa,0xc9,0xe0,0x1f,0x5e,0x9a,0x8e,0x7f,0x7d,0xe8,0x99,0xda,
- 0xda,0x35,0x38,0xf3,0xa4,0x1a,0x63,0x4f,0xf2,0x7f,0xbb,0x7d,0x0b,0xc2,0x1e,0x79,
- 0x27,0x5f,0xd7,0x36,0x9d,0xfc,0x3f,0xa3,0xce,0xfa,0x71,0xe2,0x5f,0x61,0xc6,0x61,
- 0x1b,0x02,0xa1,0x2b,0x80,0xad,0x8d,0x3f,0xa0,0xeb,0xc2,0xe2,0xf3,0xdd,0x9a,0xc0,
- 0xc3,0x27,0x24,0x7b,0xbc,0x99,0xb3,0x33,0xed,0x4f,0x2b,0x4a,0x00,0xa1,0xc7,0xe9,
- 0x9d,0xb8,0x31,0xf9,0xb9,0x32,0x5d,0xe0,0x4f,0xc4,0x3f,0xd3,0x05,0xfe,0x71,0xd6,
- 0x0f,0xe4,0x10,0xec,0x14,0x46,0x36,0x00,0x7f,0x64,0xf5,0xe6,0xe4,0xd5,0xb3,0x77,
- 0xc2,0x0b,0x52,0x2d,0x0e,0x93,0x68,0x69,0x09,0xa0,0xd2,0x67,0xd8,0xdf,0x97,0xed,
- 0xff,0x39,0x92,0x2c,0x5e,0xcc,0x49,0xc8,0x37,0x8b,0xd3,0x1e,0xb3,0xd1,0xf2,0x27,
- 0xb5,0xb4,0x7f,0x63,0xd4,0x7e,0x5d,0xf8,0xde,0xd2,0xfe,0xc9,0xb0,0x1c,0x5a,0xf2,
- 0x02,0x5e,0x0d,0xf5,0xcf,0x4e,0x5c,0x96,0xf5,0xbd,0x84,0xb8,0xe0,0x23,0xeb,0x4f,
- 0x6f,0x76,0xee,0xc7,0xf1,0xff,0xfc,0xc9,0x53,0x00,0xeb,0xa0,0xec,0x75,0x9f,0xe7,
- 0x8a,0x3a,0x65,0x1d,0xc2,0xaa,0x02,0xba,0xff,0x06,0xf1,0x68,0xf2,0x13,0xce,0xeb,
- 0x35,0x15,0x6b,0xff,0xe5,0xa9,0x31,0xf2,0xa0,0x43,0xd2,0x53,0x72,0x6e,0x60,0x01,
- 0x3e,0x66,0x05,0x05,0x6e,0x46,0xb4,0x62,0x58,0x4c,0xf3,0x93,0x74,0xf4,0x4f,0x54,
- 0xbb,0x23,0xed,0x0f,0x09,0x4c,0x86,0x55,0xe4,0x06,0x99,0x9f,0x7b,0x07,0x0a,0xd3,
- 0x84,0x87,0x84,0x5b,0xa7,0x60,0x8f,0x83,0xc7,0x22,0xea,0x02,0x11,0xff,0x2a,0xa8,
- 0x69,0xf7,0xb0,0x8e,0x44,0xd8,0xf4,0x7b,0xe5,0xa5,0xf0,0x7b,0x3d,0x94,0x5a,0x14,
- 0x2e,0x3e,0x1c,0xff,0x08,0xe6,0x50,0xfc,0x6b,0x83,0x73,0x3f,0xc6,0xc4,0x34,0xfe,
- 0x39,0x31,0x61,0xac,0xf1,0x69,0x6d,0x52,0x5f,0x88,0x37,0xcf,0x33,0xce,0x44,0x1a,
- 0x68,0x99,0x9d,0x35,0xce,0x68,0xe4,0x51,0x44,0xfc,0x63,0x3f,0xaf,0x6a,0xfb,0x7f,
- 0xf6,0xe0,0xfa,0x39,0xd3,0x5e,0xf5,0x92,0x12,0x93,0xff,0xbb,0xf1,0x47,0xb3,0xba,
- 0xdf,0x9f,0xfc,0x14,0x22,0xd2,0x56,0x31,0x3f,0xed,0x19,0xff,0xcc,0xe5,0xe9,0xfd,
- 0xd4,0x3f,0x75,0xdc,0x56,0xb2,0x57,0x29,0xeb,0xbd,0x69,0x19,0xe2,0x9f,0x55,0x81,
- 0x32,0x52,0x9b,0xb8,0x9f,0x0a,0x8a,0xfd,0xe3,0x89,0xcc,0x7e,0xca,0xf6,0xff,0xd4,
- 0xb0,0xc9,0xb0,0x3b,0x5e,0x31,0x34,0x7f,0xa4,0xe8,0x0e,0x65,0x5b,0xdb,0x9d,0x23,
- 0xf3,0xf1,0x79,0xb5,0xb4,0x6b,0xc8,0x74,0xbe,0xdf,0x25,0x8a,0xe3,0x7f,0x5e,0x88,
- 0x42,0x85,0xe9,0xad,0x68,0x5a,0x20,0x1c,0xfb,0xee,0xfd,0xac,0xdb,0xff,0x33,0x6c,
- 0xfb,0x7f,0x6a,0x51,0xa8,0xe6,0x5f,0x4b,0x15,0x2f,0x91,0xdf,0x83,0x6e,0x3a,0x32,
- 0x2c,0xa5,0x4f,0x7d,0x94,0xb9,0x7f,0xc9,0xde,0x8f,0xcb,0xc7,0xa2,0x63,0x46,0x8d,
- 0x84,0xeb,0x21,0xa1,0x8d,0x41,0xad,0x00,0x42,0x4a,0x8f,0x38,0x35,0xc1,0x1d,0xff,
- 0x4a,0xef,0xf7,0x37,0x16,0x57,0x28,0xa7,0xda,0xea,0xa3,0xf9,0xf1,0x07,0x10,0x21,
- 0x48,0xf6,0x7e,0xdf,0x12,0x9e,0x19,0x8f,0x7f,0x8c,0xae,0xf8,0xfd,0x53,0xb5,0x7d,
- 0xe1,0xca,0x68,0x30,0x5e,0x44,0x8e,0x9d,0x5a,0xe3,0xef,0x33,0xfe,0x9c,0x40,0x06,
- 0xff,0xd4,0xa4,0xf1,0x0f,0xc2,0x9e,0xc5,0x09,0x14,0x5a,0xbc,0xeb,0xd9,0x50,0xc9,
- 0x3e,0x69,0xfa,0x38,0xff,0x8f,0xfd,0x0b,0x96,0xa4,0xfd,0x3f,0x45,0xac,0xa5,0x73,
- 0x97,0x1e,0x8a,0xe4,0x69,0x53,0xfb,0x10,0xf6,0x04,0x23,0x1e,0x0d,0xd5,0x38,0x1e,
- 0x31,0xe4,0x4b,0xf9,0x7f,0x0a,0x56,0x04,0xa2,0x40,0x4f,0x97,0xcf,0xe5,0xde,0xc8,
- 0x58,0x6b,0x6d,0x89,0x97,0x5b,0x1e,0x21,0x7a,0xf0,0x8f,0x9d,0xfb,0xd9,0x64,0xfb,
- 0x43,0xd6,0xcb,0x7b,0x8c,0x53,0x5a,0x7d,0x4b,0xc1,0x32,0x79,0xa8,0xf5,0x94,0x56,
- 0x4b,0x61,0xaf,0x93,0x70,0xaa,0x88,0x9e,0xb7,0xfc,0x2d,0x44,0x55,0xe9,0xf1,0x12,
- 0xe1,0x1f,0xf2,0xff,0xb4,0xcd,0xd1,0xcf,0xa9,0xf3,0x3e,0x53,0x30,0x28,0x2f,0x46,
- 0xd8,0x53,0x84,0x88,0x08,0x11,0xd4,0xbb,0x70,0xaf,0xc0,0x4b,0xce,0x7e,0xad,0xa6,
- 0x94,0xa2,0x8d,0x95,0xe0,0x25,0x06,0x47,0x8d,0x81,0x40,0x88,0xa3,0xae,0xe9,0x31,
- 0xa6,0x6b,0xb9,0x02,0x08,0xb5,0x7e,0x9d,0x5c,0x43,0xcf,0x39,0xfb,0xa9,0x08,0xda,
- 0xe6,0xf5,0xf4,0xbc,0x55,0xed,0x9d,0xf4,0xe0,0xad,0x8b,0xe2,0xac,0xa5,0x62,0x57,
- 0x70,0xc9,0x4d,0x14,0xef,0x6b,0xdb,0x62,0x39,0xbe,0x5e,0x75,0xc6,0x97,0x2a,0xdb,
- 0xe1,0x11,0x9c,0xb4,0xf9,0xf1,0xa6,0xb7,0xc5,0xec,0xa9,0x1b,0x58,0x05,0xfe,0x43,
- 0x8f,0x88,0x97,0x89,0x53,0xde,0x38,0x1c,0x77,0xee,0x1f,0xf1,0x8f,0x75,0xff,0x71,
- 0xf9,0x61,0xf1,0xe0,0x95,0x9a,0xbc,0x18,0x5f,0xeb,0x15,0x8d,0x74,0xff,0x88,0x7f,
- 0x2a,0x85,0xff,0x87,0x67,0xd6,0xcf,0xf6,0x34,0x28,0xba,0x73,0xb1,0x91,0xc6,0x3f,
- 0x43,0x0a,0xfd,0x43,0x02,0xc6,0xf6,0xa5,0x5e,0x72,0xc6,0xab,0x69,0xff,0x4f,0x3e,
- 0x7c,0x2a,0xa1,0x8c,0xa9,0x61,0xc5,0xb7,0xf2,0x4b,0x3a,0xf4,0x2b,0x55,0x04,0x84,
- 0x10,0x88,0xe6,0x54,0x09,0xfc,0x93,0x89,0x97,0x49,0x96,0xff,0xa7,0x20,0xc5,0x6a,
- 0xe1,0x29,0x63,0x2e,0x0f,0xa6,0x8a,0x82,0xda,0xab,0xb8,0x8c,0x05,0x22,0xaa,0x85,
- 0x00,0xe1,0x9f,0x8c,0x7d,0xb1,0xfd,0x3f,0x79,0x61,0xed,0x3e,0x7d,0x57,0xab,0x7e,
- 0x34,0x4f,0x63,0x14,0x08,0xcb,0xed,0x8d,0x84,0x8b,0x06,0x60,0xb6,0xf5,0xe1,0x3c,
- 0xe3,0x8c,0xe7,0x85,0x96,0xff,0xc7,0x63,0xb0,0xab,0xe0,0xb1,0xce,0x2f,0xf3,0xbc,
- 0xc1,0x35,0x93,0xfb,0x10,0x11,0xf5,0xa9,0xf8,0xfd,0xf2,0xd9,0xdc,0xf2,0x87,0x18,
- 0xf6,0xfd,0xc4,0xd4,0x9f,0x0a,0xff,0x4f,0xde,0x72,0xf6,0x53,0xe5,0x4f,0x6d,0xb3,
- 0x52,0xf9,0x8b,0xca,0xeb,0x9b,0x9e,0x31,0xe7,0x0c,0xfb,0xf0,0xfb,0xc5,0x53,0xb3,
- 0x08,0xff,0x3c,0x63,0x0f,0x07,0xd5,0x8e,0x07,0x25,0xca,0x97,0xc2,0x87,0xb4,0xf0,
- 0xb4,0x66,0xd4,0x30,0x9e,0xea,0x03,0x33,0x93,0xf2,0x39,0x7e,0x06,0x9e,0x22,0x7d,
- 0x92,0xf1,0x8f,0x19,0xf0,0x94,0x65,0xbf,0x36,0xe1,0x47,0x7b,0x3e,0xde,0x30,0xe4,
- 0x3b,0x2a,0xd7,0xc3,0x91,0x78,0x7d,0xca,0x77,0xaa,0xfc,0x83,0xf0,0x91,0x78,0x43,
- 0x6a,0x61,0x4f,0xf9,0x20,0xb7,0xc7,0xef,0x28,0xdd,0x0c,0x7f,0x26,0xfd,0xf3,0x19,
- 0xf9,0x8b,0xd0,0x1d,0x9e,0xb1,0x23,0x3f,0x22,0xbf,0x2e,0xb6,0x51,0xf9,0xdf,0x96,
- 0x7f,0x6a,0xa2,0x60,0x7a,0xbf,0xcd,0xde,0x6b,0xb7,0x6f,0xc8,0x8e,0x7f,0x79,0xb5,
- 0xa6,0x4d,0xb0,0x07,0xbe,0x66,0x7a,0x4e,0x36,0xf9,0xe0,0x61,0x7d,0x46,0x7f,0x8c,
- 0x80,0xdf,0x2a,0x82,0x52,0xf7,0xa0,0xe9,0xb7,0xc7,0x47,0x95,0xf4,0xfe,0x4b,0x67,
- 0x9f,0x85,0x24,0xbe,0x24,0x2f,0xa0,0xda,0xd9,0x86,0x47,0x54,0xb7,0xff,0x39,0x83,
- 0x9f,0xc5,0x7e,0x1f,0x95,0x64,0x42,0xfe,0x57,0x5c,0x3f,0x93,0xcd,0x82,0x4e,0xb9,
- 0x8e,0x51,0xa0,0x4a,0x45,0x7d,0xeb,0x49,0xfb,0xcf,0x7f,0x9f,0xd1,0x0f,0x40,0x41,
- 0x8d,0x7a,0x73,0x21,0x97,0xfb,0x70,0x1b,0x55,0x6f,0x86,0xda,0x3e,0x37,0x02,0xaf,
- 0x49,0xf5,0xbd,0xeb,0x70,0xbf,0x6f,0x85,0x2a,0x92,0xcd,0x43,0x99,0xeb,0x6b,0x67,
- 0x81,0xae,0xe6,0x5f,0x26,0xd7,0xc1,0x00,0xd4,0xa5,0x7c,0x66,0xf1,0x66,0x04,0x42,
- 0x82,0xe6,0x61,0x19,0x3e,0x04,0x06,0xc7,0x9c,0xf7,0xf5,0x20,0xe2,0x9f,0x3f,0xa2,
- 0x91,0xea,0xda,0xe3,0x79,0x08,0x62,0xa9,0xca,0xbb,0x54,0x5f,0x7b,0x88,0x0c,0x71,
- 0xaf,0x37,0x99,0x3b,0x92,0xa6,0x76,0xb0,0x51,0x7b,0x3a,0x85,0xff,0x47,0x38,0x25,
- 0x78,0xfb,0x74,0x88,0xf1,0xca,0x98,0xa7,0x87,0xed,0x84,0x1f,0x5b,0xc3,0x46,0xd2,
- 0xa6,0x9c,0xa5,0x24,0xc3,0x7e,0xbf,0x25,0x3e,0x31,0x1b,0x5e,0xa9,0x88,0x73,0x8e,
- 0xfb,0xfd,0x9b,0xda,0x69,0xbd,0xe9,0x34,0x2d,0xed,0x88,0x07,0x74,0xe1,0x8a,0xcc,
- 0xe8,0x1f,0x8a,0x7f,0xd1,0xf3,0xfa,0x37,0xc8,0xd3,0x8c,0x7e,0xad,0x1e,0x2a,0x77,
- 0xc9,0x4f,0x96,0xbe,0xa9,0x37,0xf4,0xfd,0x24,0xc9,0xce,0xc1,0x99,0x20,0x02,0xc5,
- 0xee,0x8e,0x94,0x33,0x3e,0x31,0xf1,0xac,0x24,0xec,0xd7,0x47,0x68,0xad,0x9e,0x84,
- 0x7a,0x25,0x3f,0x17,0x1f,0x13,0xcd,0xd6,0xc0,0xd5,0x49,0xf9,0x77,0x09,0x01,0xad,
- 0x47,0xcb,0x53,0x15,0x17,0xc5,0xbf,0x36,0x15,0x1f,0x57,0xcf,0x6a,0x88,0x7f,0xba,
- 0xa5,0x97,0xe0,0x1c,0xaf,0x7f,0xc1,0xdf,0x2f,0xcf,0x40,0x44,0xdd,0x60,0xe1,0x1f,
- 0xfb,0x81,0xc9,0xff,0xf3,0x47,0xc2,0x3f,0x9b,0x9a,0x10,0x08,0xe9,0x73,0x47,0x3d,
- 0x67,0xd9,0x7b,0xb0,0x9a,0x97,0x8f,0x76,0xc4,0x02,0xf3,0x78,0x17,0x9e,0x9a,0xdf,
- 0x23,0x27,0x99,0xcb,0xff,0x63,0xad,0x07,0x0d,0xdf,0x7e,0x12,0x42,0x7d,0xea,0x1c,
- 0xf6,0x5e,0xee,0x3e,0x3c,0xd2,0xc5,0x59,0xbe,0xbd,0x1e,0x5c,0xf8,0x67,0x62,0xda,
- 0xc9,0x13,0x2f,0xc2,0xd9,0xe6,0x5f,0x37,0x3d,0xc9,0xa2,0x11,0xbc,0x7e,0xc0,0xcc,
- 0x8b,0x15,0xf9,0xb4,0x2e,0x45,0x40,0xa3,0x64,0x06,0xff,0x14,0x8e,0x68,0x76,0xfc,
- 0x45,0x3d,0xc5,0xeb,0x7b,0x7d,0xf8,0x75,0x34,0x9d,0x41,0xc1,0xef,0xeb,0x0a,0xb1,
- 0xf9,0x4c,0xe0,0x8d,0x5e,0xc3,0xe1,0xff,0x34,0x3e,0xa9,0x7c,0x20,0xbc,0x3d,0x34,
- 0x2d,0x84,0x8e,0xc8,0xdb,0x73,0x8e,0xf0,0x8f,0x29,0x3b,0xa1,0xd2,0xb1,0x4c,0x7c,
- 0xcd,0xf6,0xff,0x6c,0xea,0x38,0x5e,0x38,0x06,0x35,0x66,0x7e,0xb2,0x79,0x58,0x7a,
- 0x57,0x9b,0xda,0xef,0x23,0xfe,0xcf,0x0b,0xb6,0xff,0xc7,0xbe,0x9f,0xfe,0xb4,0x3f,
- 0x30,0x6f,0xa3,0x4c,0x0b,0xbb,0x1c,0xd1,0xf5,0x5d,0xc3,0xf0,0xab,0xb6,0xb9,0x83,
- 0xf9,0x9c,0x9d,0x65,0x74,0xff,0x08,0x84,0x3e,0x76,0xe2,0xe3,0x4e,0xfc,0x4b,0x63,
- 0x9f,0xe5,0xdd,0x42,0x11,0x35,0x45,0x20,0xc1,0xf5,0x93,0x11,0x35,0xb0,0x40,0x4d,
- 0xcf,0xcf,0xa8,0xfd,0xb4,0x88,0xdf,0x2c,0xff,0x4f,0xde,0x17,0x73,0x7f,0xaa,0x3e,
- 0x9e,0xf8,0xf2,0x70,0xe9,0xb7,0xd9,0x69,0x58,0xb1,0x61,0x71,0xea,0x33,0x4b,0xd8,
- 0x1b,0x7d,0x0f,0xa3,0xfd,0x46,0x3c,0x30,0xe2,0xc2,0x3f,0x16,0xff,0xc7,0x7b,0x05,
- 0xbb,0x19,0xba,0x13,0x75,0x66,0x7e,0x4d,0x33,0x5e,0xdf,0x08,0xbf,0xab,0x4a,0x1d,
- 0x5f,0xe7,0xcf,0x10,0x35,0x28,0x2c,0xbf,0x94,0x6b,0x8f,0x37,0xf2,0x2d,0xfc,0x23,
- 0xfd,0x4a,0x7e,0xb2,0xf1,0xbc,0x76,0x7d,0xbf,0x7f,0x0f,0xee,0x2e,0x3e,0x54,0x1a,
- 0x8e,0xfa,0x53,0xf2,0x59,0x95,0xfc,0x63,0x05,0xa3,0xae,0xe7,0xb5,0xe3,0x5f,0x05,
- 0x49,0xe1,0x4f,0xab,0x7f,0x59,0x7d,0xa2,0xcc,0x03,0x07,0x21,0x3c,0xb4,0x80,0x37,
- 0x1f,0x7f,0xeb,0x19,0xde,0x3d,0xce,0xff,0x93,0xf6,0x3f,0x07,0x2d,0xef,0x71,0x68,
- 0x40,0xad,0x62,0xa5,0xb0,0x42,0x99,0x76,0x50,0x8d,0x5e,0x76,0x96,0xaf,0xb2,0xfc,
- 0xc9,0x27,0x9c,0xe7,0x6d,0x13,0xf8,0x67,0x66,0xca,0xb3,0x08,0xb5,0xe5,0xe3,0xf8,
- 0xe0,0x9b,0xbe,0x15,0xa8,0x85,0xfb,0x62,0x65,0x29,0xb6,0xc8,0x78,0x83,0xff,0x10,
- 0x11,0x20,0xf9,0x7f,0x2e,0x8a,0x7f,0xa9,0xa5,0x81,0x01,0xa5,0x5b,0x27,0xb5,0xe3,
- 0x51,0xf5,0xb6,0xb7,0x96,0x98,0x57,0x54,0xe0,0x0a,0x7c,0xc0,0xd2,0xe7,0xaf,0x3a,
- 0xf7,0x93,0xf1,0xff,0xb0,0x61,0x38,0x6f,0xd4,0xf3,0x50,0x42,0xbe,0xde,0x73,0xd8,
- 0xac,0x6a,0xab,0x5c,0x2c,0x0f,0xc3,0xab,0x50,0x45,0xf8,0xe7,0x4c,0xc6,0xbf,0x64,
- 0xf3,0x7f,0xda,0xe4,0x94,0x6a,0xfb,0x7f,0x16,0x8c,0x19,0xf5,0x5a,0x0e,0x7f,0x20,
- 0xa5,0x0c,0x5f,0x8c,0x7f,0x2c,0x3c,0x50,0xb0,0x89,0xcc,0x22,0x1a,0xe2,0x82,0x78,
- 0x39,0x9a,0x45,0x72,0x83,0xac,0xc7,0xfd,0x5d,0xda,0x35,0xf4,0x8c,0x73,0x7d,0xc4,
- 0x3f,0x8a,0x30,0xbb,0x1b,0xd9,0x50,0x29,0x45,0x5b,0x44,0xd8,0x65,0x57,0x7b,0x60,
- 0x99,0x97,0x3c,0x12,0x14,0xe1,0x12,0xf1,0x2f,0xfb,0x67,0xf9,0x7f,0x42,0x86,0xe7,
- 0xfb,0xec,0x0f,0xb4,0xf0,0x28,0x5e,0x46,0xb0,0x67,0xea,0xdf,0x92,0xff,0xc7,0xc6,
- 0x3f,0x87,0xc7,0xc5,0xbf,0x2a,0xd3,0x6c,0x1f,0xc4,0x3f,0x88,0x34,0x84,0xff,0x27,
- 0x82,0x2b,0xb0,0x33,0x1d,0xff,0x6a,0x3a,0x94,0x63,0x5f,0x5f,0xe0,0x1f,0x56,0x97,
- 0x76,0xfb,0xdc,0x5a,0x2f,0x91,0xe0,0x1b,0x86,0x6a,0x7a,0xf0,0x32,0x1b,0xff,0x9c,
- 0x9f,0xe0,0xf0,0x79,0xf2,0xed,0x78,0x96,0x7c,0x52,0x3b,0x87,0xf8,0xa7,0x6b,0x7d,
- 0xf1,0x49,0xf8,0x93,0xf4,0x54,0x0b,0x1e,0x41,0x20,0x24,0x9e,0xb7,0xfc,0x3d,0x67,
- 0x3f,0x1b,0x4b,0xc7,0xbf,0xf2,0xe3,0x72,0x1f,0x9c,0x8a,0xd6,0x1b,0xca,0x86,0xae,
- 0x0a,0xf8,0x1d,0xcc,0x35,0x7c,0xad,0xf2,0x94,0x4d,0xe7,0xa0,0x8a,0x2e,0x75,0xd8,
- 0xd1,0x3f,0xe4,0xff,0x19,0x23,0xff,0x0f,0x2f,0x1a,0x25,0x47,0x90,0x16,0xe9,0xf4,
- 0xe8,0xb0,0x03,0x6f,0x83,0x25,0xd8,0x96,0xb6,0x31,0x10,0x44,0xa0,0xe7,0x58,0xb6,
- 0xff,0x67,0xa6,0x91,0xd7,0xaa,0xbd,0x0e,0xbb,0xa2,0xa1,0xd6,0x4d,0x1a,0xab,0x90,
- 0x56,0xe7,0xea,0xad,0x9e,0xb8,0xe7,0x06,0x3c,0xb5,0xd8,0x10,0xfe,0x1f,0x7b,0xfe,
- 0x29,0xfe,0x45,0x20,0x47,0x1d,0x64,0x27,0x61,0x9f,0x51,0xd9,0x88,0xf3,0x5f,0x21,
- 0x3d,0xa2,0x57,0x1a,0x3b,0xc8,0x11,0xf4,0x88,0x92,0x9b,0xed,0xff,0xd9,0x3a,0x91,
- 0x66,0x1b,0xef,0x7f,0x7d,0x3a,0x7a,0x15,0x8a,0xb3,0x29,0xd1,0x5e,0x08,0x1b,0x05,
- 0x04,0x84,0xf6,0x31,0xf2,0x77,0xe1,0xd2,0xb2,0xc7,0x2f,0x71,0xe2,0x5f,0x1d,0x84,
- 0x7e,0xeb,0x0c,0xbf,0x26,0x0f,0xb1,0x34,0xff,0x67,0xbb,0x76,0x0a,0x9e,0x10,0xf8,
- 0x27,0xe3,0xcf,0x11,0xf8,0xc7,0x9a,0xff,0xb0,0x2a,0x60,0x76,0x39,0xe2,0x1f,0xbd,
- 0x4a,0xf5,0xf3,0x62,0x9d,0xa5,0xfd,0x3f,0xec,0xa2,0xf8,0x97,0xba,0x63,0xc3,0xbb,
- 0xda,0x1a,0x0b,0xed,0xa8,0xda,0xfd,0x66,0x79,0xf2,0xca,0x44,0x7b,0x50,0x69,0x57,
- 0xc8,0xff,0xd3,0x94,0x21,0xb9,0x5a,0xf8,0x07,0xf1,0x4c,0xb4,0xe8,0x15,0x75,0x9b,
- 0xf5,0x75,0xf8,0x60,0x43,0x4b,0x82,0x7b,0xc3,0x01,0x9f,0xad,0x9f,0x99,0x83,0x6f,
- 0xb7,0x88,0xf8,0xd7,0x4c,0xfa,0x7e,0xcf,0xc3,0xc3,0xed,0xe2,0x6b,0xad,0x63,0x3f,
- 0x30,0xca,0x34,0xef,0x20,0xee,0x50,0x28,0x7e,0x8d,0x1b,0x13,0xc8,0xc4,0x77,0x44,
- 0xfc,0xab,0x2e,0x55,0x40,0x6e,0x9f,0x0f,0xcc,0x5d,0x29,0x7f,0x8d,0x3c,0x19,0x7e,
- 0xcb,0x67,0xe9,0xde,0xe5,0x72,0x01,0x7f,0xde,0xf2,0xff,0xb0,0xa9,0xf6,0xf5,0x6d,
- 0xfe,0x8f,0x88,0xee,0xbd,0xa6,0x5f,0x46,0xc4,0xc2,0x05,0x6c,0x1b,0x3d,0x66,0xd2,
- 0x3b,0xd2,0x2a,0x4c,0x61,0x58,0x3e,0xd0,0x69,0xaf,0x07,0xdc,0xbf,0x0b,0xff,0x8f,
- 0x6f,0x9f,0x5c,0x69,0x5c,0x30,0x1b,0x52,0x0b,0x4e,0x7d,0xfa,0x0d,0xf3,0xc8,0x86,
- 0xea,0x28,0x9a,0xad,0x7f,0x53,0x8f,0x58,0xd4,0x8e,0xa3,0x19,0xfc,0x93,0xd6,0x3f,
- 0xea,0xb7,0xe4,0x2f,0xe0,0x83,0xe7,0x0f,0xa9,0xcb,0xe5,0xdb,0xa3,0xbf,0xe5,0x8f,
- 0x85,0xbc,0xcb,0x8b,0x85,0x3f,0xd9,0x2c,0x58,0x8e,0x16,0xca,0x59,0x0f,0xb0,0x59,
- 0xdb,0x4b,0xfe,0xc0,0x97,0xf0,0xe9,0xf6,0x1a,0x21,0x93,0x60,0x4f,0xec,0x67,0xd1,
- 0x29,0x92,0x77,0x74,0xeb,0x66,0xbe,0x4a,0x13,0xfb,0x35,0x53,0xb7,0xc7,0xdb,0xfe,
- 0x9f,0x60,0x98,0x59,0x8a,0x1d,0x61,0xcf,0x7d,0xf0,0x80,0x54,0x01,0xde,0x9a,0x76,
- 0x0b,0xff,0xe0,0xc6,0x36,0xb3,0x7f,0x1c,0xcb,0x11,0xcf,0xcb,0x7d,0xc9,0xe2,0x90,
- 0x76,0x81,0xf0,0x4c,0x92,0xbd,0x08,0xaf,0x19,0x3f,0x90,0xfc,0x4f,0xca,0x4f,0x0a,
- 0xfb,0xe2,0x75,0xf3,0x07,0xac,0xf8,0x57,0x1d,0xf7,0x6f,0x94,0xdf,0x4f,0x87,0x05,
- 0x11,0x28,0x9e,0xa1,0x78,0x74,0xb2,0x79,0xa4,0xe4,0x8c,0x54,0x6f,0x4e,0x4e,0xca,
- 0xc3,0x2e,0xfe,0x80,0x30,0x6a,0xdc,0x77,0x12,0x77,0x1f,0x17,0xa4,0xbb,0xd1,0x1e,
- 0xc9,0x67,0x2b,0xde,0x84,0x79,0x80,0x42,0x48,0xc4,0xbf,0x3e,0x3d,0xda,0xdc,0xdf,
- 0x62,0xdf,0x4f,0xda,0xff,0xc3,0xd5,0x3d,0xed,0x1f,0x20,0x8c,0x09,0x50,0xfc,0x6b,
- 0x44,0xd9,0x16,0x0b,0x80,0x27,0x3c,0x61,0x29,0xd9,0x2f,0x04,0x42,0x81,0xe1,0xf1,
- 0xf1,0x2f,0xae,0xf2,0xa6,0x14,0xdf,0x2d,0x11,0x5f,0x17,0x61,0xcf,0x8f,0xf9,0xf4,
- 0x52,0xb5,0xbb,0x69,0x81,0xea,0xc4,0xbf,0xb2,0xf9,0x3f,0x95,0x09,0xb5,0xaa,0x68,
- 0xc0,0x7c,0x40,0x0b,0xf6,0x07,0xab,0xd8,0x08,0x6b,0x9b,0xa2,0xab,0xf8,0x87,0x16,
- 0x58,0x40,0x08,0xf1,0x8f,0xa3,0x7f,0xda,0xf3,0x97,0xaa,0x62,0x7e,0xf6,0x74,0xbc,
- 0x4f,0xd1,0xc0,0x03,0xbe,0xdd,0x1d,0x88,0xf7,0xca,0x6a,0x4b,0x7c,0xdd,0xde,0x3a,
- 0x78,0x81,0xe1,0x0c,0x74,0xcb,0xa6,0xb3,0xa0,0x13,0x3f,0x39,0xab,0xd1,0xf3,0xce,
- 0xbc,0xab,0x63,0xcc,0xf8,0x99,0x4e,0xe8,0xa8,0xf8,0x2c,0x7c,0x54,0x72,0xbd,0xcf,
- 0x3f,0x4b,0x3e,0x1b,0x3d,0x53,0x88,0xf6,0xfd,0xc3,0xe6,0xe1,0xce,0xf1,0xf8,0xa7,
- 0xe0,0x84,0xfc,0x24,0x1f,0x69,0xab,0x7a,0xd6,0xa7,0x96,0x2f,0x37,0xce,0xe8,0x0d,
- 0xcf,0x14,0x10,0xed,0xe7,0x85,0xb4,0xff,0xc7,0x99,0x7f,0x2b,0xfe,0x85,0xeb,0xe1,
- 0x43,0x56,0x67,0xc6,0x78,0xa0,0x57,0x8d,0xb1,0x20,0x7f,0x3a,0x3e,0xb3,0xff,0x70,
- 0x0f,0xfb,0xa3,0xb2,0xce,0x08,0xa4,0xee,0xef,0x61,0xa3,0xce,0xfa,0xef,0x4f,0xfb,
- 0x7f,0xf0,0xa5,0xaf,0x0d,0xef,0x80,0xa8,0xe9,0xe1,0x2c,0xa2,0x75,0x48,0xa1,0x03,
- 0x5d,0x61,0x36,0x6c,0x74,0x34,0x05,0xcd,0xf9,0xe1,0xc0,0x89,0xf1,0xfc,0x67,0x9c,
- 0xc6,0x2b,0x42,0xa8,0x88,0x9a,0xcc,0x47,0xdb,0x61,0xba,0xbe,0x1f,0xbe,0x4e,0xd3,
- 0x38,0x8c,0x40,0xf4,0x51,0x7a,0x23,0x29,0xe7,0xfd,0x2a,0x13,0x1d,0xfb,0xbb,0x13,
- 0x86,0x59,0xb8,0x37,0x57,0xd9,0xf6,0x55,0x0b,0x21,0x0b,0xa2,0xb2,0xf0,0x07,0x16,
- 0xa7,0x1c,0xfd,0x60,0xfb,0x7f,0xd6,0x51,0x74,0x75,0xb3,0xfa,0x74,0x6f,0xbe,0xd9,
- 0x3c,0xe6,0xb3,0x22,0x62,0xcd,0xc3,0x9a,0xe5,0x08,0x92,0x8f,0xb6,0xda,0xe3,0x6d,
- 0xfc,0xe3,0x0b,0xcb,0xa1,0xa6,0x17,0xe0,0xde,0x7e,0x54,0x3b,0x8f,0xe0,0xb4,0x08,
- 0xa0,0xf5,0x8f,0xf0,0x8c,0x15,0x08,0xcb,0xe0,0x01,0x33,0xed,0xff,0x51,0x47,0x59,
- 0xbd,0x22,0x99,0x33,0xfb,0xbd,0xf7,0x05,0x96,0x94,0xae,0x43,0x8d,0xa1,0x26,0xa5,
- 0xfe,0xd8,0x9b,0x06,0x39,0x12,0x8b,0x3e,0x1e,0xc7,0xff,0xa9,0xa4,0xef,0xa5,0x12,
- 0xb8,0x19,0x1a,0xf4,0xe6,0xa1,0x35,0xef,0x50,0xc4,0x87,0x73,0x83,0xde,0xd1,0xa8,
- 0xe3,0xfc,0xa0,0x85,0xb6,0xd7,0xcf,0x68,0x1a,0xff,0xa8,0xcb,0x59,0x81,0xd1,0x19,
- 0x9b,0x31,0x34,0xff,0x20,0x7b,0x55,0x5a,0xc5,0xbf,0x86,0x1f,0x32,0x22,0x04,0xc4,
- 0x03,0xc3,0xde,0xe5,0x55,0x67,0x75,0xfb,0xfa,0x16,0xff,0x07,0xef,0xff,0xfa,0xd9,
- 0x05,0x86,0xa9,0x85,0x46,0xbc,0xd3,0xe4,0x1d,0xf0,0x4c,0xa2,0x7e,0xc4,0x57,0x23,
- 0xdf,0x0c,0x2f,0x6c,0x0f,0x0f,0x5f,0x7d,0x7d,0xf1,0x4b,0x19,0xfe,0x73,0xbe,0xcd,
- 0x0f,0x97,0xcf,0xa1,0x36,0x6e,0x20,0x58,0x58,0x03,0x17,0x5a,0x1b,0xcc,0x7f,0x1b,
- 0x2d,0xc6,0x53,0xba,0xe5,0xff,0x61,0xf6,0xfc,0x67,0xf8,0x3f,0x1d,0x23,0xbc,0x1f,
- 0x67,0x7b,0x6d,0x5c,0x0e,0x4b,0x67,0x78,0xd5,0xa0,0x2f,0xf9,0xa9,0x14,0x9c,0x49,
- 0x89,0xf9,0xc9,0xd8,0x3b,0x1b,0xff,0x78,0xff,0x89,0x9d,0xd3,0x3a,0x61,0xc6,0x51,
- 0xd5,0x28,0xda,0x04,0xbb,0xa3,0x65,0x87,0x66,0x2c,0x43,0x6d,0xfe,0xc3,0x25,0x16,
- 0xfe,0xa9,0xb0,0xaf,0xcf,0x1d,0xfe,0x4f,0xd5,0x1b,0x9d,0xab,0x62,0x4b,0x53,0x6a,
- 0x3f,0xfb,0xa2,0xb2,0x37,0x31,0x05,0x9f,0x37,0xf7,0x55,0xd8,0xcd,0x1f,0x4c,0x5d,
- 0xb1,0x1c,0xbf,0x2f,0x7b,0xfe,0x2d,0xfc,0x93,0x66,0x2f,0xb4,0x19,0x38,0xb1,0xaa,
- 0x70,0xfb,0x54,0x20,0xb0,0x64,0x07,0xf5,0x07,0x58,0x85,0x79,0x25,0xed,0xbf,0xb2,
- 0xf9,0x3f,0x95,0xc2,0xdb,0x03,0x87,0x11,0xff,0xf8,0x16,0xcb,0xcb,0x95,0xd3,0x4a,
- 0x35,0x11,0xa1,0x4f,0x09,0x8f,0x50,0x41,0x02,0xf5,0x8f,0x7d,0x3f,0x19,0xfe,0x73,
- 0x53,0x2f,0x1b,0xab,0xa8,0x97,0xfc,0x2b,0xbe,0x94,0x88,0x92,0xff,0x87,0x2c,0xd4,
- 0xc4,0xb4,0x23,0xe8,0xc0,0x45,0xfc,0x9f,0x19,0xc4,0x8f,0x25,0x5a,0x48,0xfe,0xc6,
- 0x0e,0xb2,0x80,0x75,0xc6,0xd7,0xe3,0xf2,0x1f,0x94,0x34,0xfe,0xc9,0x8c,0xb7,0xfd,
- 0x3f,0x68,0x76,0x1f,0x94,0xdb,0xb4,0xea,0x56,0x04,0x42,0x08,0x63,0x72,0x2b,0x8d,
- 0x17,0xe3,0x81,0x77,0x60,0x9f,0xfa,0x17,0xf8,0x3f,0x44,0xfb,0x81,0xd5,0x70,0x57,
- 0xd3,0xea,0x78,0xee,0x90,0x7d,0x85,0x11,0xe2,0x1f,0x5a,0x7c,0x15,0xfb,0xfd,0xda,
- 0xfc,0x1f,0x95,0xa2,0x5d,0x6d,0x50,0x11,0x51,0xc3,0xb9,0x2d,0x5c,0x00,0x21,0xc1,
- 0xff,0xd1,0x2f,0xcd,0xff,0x29,0xf1,0xad,0xc0,0xfd,0x57,0x4c,0xaa,0x2a,0xb9,0x8f,
- 0xcb,0xc7,0x22,0x68,0x91,0x4b,0x3c,0x04,0x84,0xc6,0x2c,0x22,0xd0,0x71,0x67,0xfd,
- 0x6c,0xba,0xdc,0xf1,0xff,0x0c,0x19,0x4f,0xb3,0xfa,0x96,0x75,0xcb,0xe4,0x3d,0x2d,
- 0xa7,0x8a,0x26,0x0b,0xff,0x0f,0x79,0x84,0xe8,0x79,0x4f,0xc8,0x0e,0x5e,0x2a,0x4c,
- 0xd3,0xa2,0xd6,0xcb,0xd7,0xf2,0xb7,0xa1,0x61,0xc1,0x67,0x11,0xf6,0x74,0x9e,0x0a,
- 0x56,0xb5,0xfa,0xc8,0x5f,0xf4,0xa2,0x51,0x65,0xac,0xcb,0xf2,0xff,0x88,0xf8,0x57,
- 0xbd,0xaa,0xae,0xb8,0xab,0x8c,0xc7,0x24,0xe1,0xff,0x29,0xe3,0x3d,0x46,0x40,0x42,
- 0xe1,0x58,0x13,0x05,0xc2,0xae,0xe4,0xf8,0x21,0x8c,0x8b,0x7f,0x35,0xe1,0xf3,0xde,
- 0xa0,0x6d,0x81,0xd0,0x22,0x9c,0x96,0x1c,0x3c,0x92,0x68,0x55,0xb5,0xa2,0x3e,0x68,
- 0x6b,0x89,0x1a,0x57,0x5e,0x82,0xff,0x43,0xb3,0xb7,0x98,0xb6,0xbd,0x28,0x40,0x85,
- 0xbe,0x8f,0x05,0x04,0xfe,0x69,0x5c,0x2d,0x05,0xc6,0xf1,0x7f,0x72,0x2c,0xfc,0x83,
- 0x77,0xbb,0x18,0xde,0x35,0x11,0xff,0x6c,0x92,0xa7,0xe2,0x13,0x51,0x58,0x53,0x7e,
- 0x47,0x21,0x22,0x93,0x37,0x2e,0x0f,0x57,0xd8,0xeb,0xd3,0xc2,0x3f,0xb5,0xc6,0x4c,
- 0x4d,0xee,0x84,0x53,0x3a,0xe2,0x9f,0x1f,0xcd,0xff,0x07,0xf5,0x43,0xb1,0x0c,0x18,
- 0x22,0x40,0xdf,0x53,0x34,0x3f,0xaf,0x3a,0xfe,0x9f,0x20,0x58,0xfe,0x1f,0x1f,0x97,
- 0xa3,0x04,0x7b,0xe0,0x6a,0x2e,0x5b,0x47,0x42,0xbc,0x39,0x65,0x10,0xfe,0x59,0xc8,
- 0x8b,0x0f,0x75,0x3a,0xe3,0x05,0xfe,0xa9,0x25,0x6f,0xcf,0x75,0x45,0xf7,0x1b,0x5f,
- 0xe0,0xde,0x68,0x51,0x50,0x12,0x88,0x28,0x21,0x3f,0x01,0x87,0xdb,0x2a,0x09,0xea,
- 0x1f,0x72,0xb2,0x6a,0x82,0x92,0xa3,0x7f,0xe6,0xeb,0x71,0x49,0xdf,0xe2,0x55,0x03,
- 0x6b,0x55,0x3a,0x22,0x02,0x37,0x3f,0x36,0x04,0xff,0x70,0x3c,0xff,0x67,0x9a,0xa9,
- 0xd6,0xb0,0x3c,0xd8,0xcc,0xa7,0x34,0x79,0xcd,0xf6,0xcd,0x7c,0x2f,0x7c,0x6d,0x40,
- 0x5d,0x96,0xbb,0x51,0x5b,0x65,0x08,0x3c,0xd0,0x6f,0x18,0xb6,0x7e,0x10,0xf8,0x07,
- 0xf1,0xc9,0x3d,0xf2,0x17,0xd9,0x6f,0x78,0x59,0xc2,0xbb,0xbc,0xf9,0x67,0x14,0x11,
- 0x1b,0xf2,0x21,0x22,0x2a,0xf9,0xf7,0x76,0x81,0x7f,0x0e,0xd9,0xb7,0x9f,0xc6,0x3f,
- 0xb5,0x43,0xfe,0xa7,0xf0,0x7b,0xdc,0xc1,0x70,0x75,0x25,0xe4,0xa5,0x9c,0x88,0xbe,
- 0xe4,0xc6,0xd7,0x4e,0x29,0x42,0xd5,0x67,0xf0,0x8f,0xcd,0x7f,0xf6,0xfd,0xf2,0x99,
- 0x80,0xd1,0x17,0x9f,0x5b,0xe1,0xf7,0xca,0x17,0x70,0xdb,0x5e,0x3f,0xe4,0x1b,0x93,
- 0x9f,0x33,0xde,0xec,0x9c,0x4b,0xf8,0x67,0xb0,0x3d,0x9b,0xff,0x33,0xb3,0x4f,0xed,
- 0x91,0x6f,0x8a,0x77,0xc6,0xca,0x7a,0xbd,0x11,0xf9,0x76,0x78,0x18,0xea,0xfb,0xf1,
- 0xfe,0x9f,0x33,0xd6,0xb5,0x22,0x02,0xac,0x91,0x7f,0x6e,0xd8,0xd7,0xb7,0xfd,0x3f,
- 0xd3,0xbe,0xcd,0x14,0xf3,0x17,0xe1,0x32,0xc9,0xfb,0x8d,0xdc,0xd7,0x71,0xfc,0x8c,
- 0xfe,0xbc,0x65,0xec,0xe5,0xc4,0x0f,0xe1,0x41,0xd3,0x7b,0x0f,0xcb,0xf8,0x5b,0x6c,
- 0xfc,0x93,0x47,0x61,0xc4,0x04,0xdf,0x4a,0xfe,0x9f,0x85,0xc2,0xe3,0x81,0x47,0x9e,
- 0x43,0xfc,0x53,0x41,0xaa,0xe9,0xc7,0x8e,0x7d,0x4c,0x4c,0xb4,0xe2,0x7d,0xf9,0xa3,
- 0x72,0x10,0x8e,0x99,0xb8,0xdb,0x6a,0x7b,0xe0,0x9c,0x4e,0x44,0xa0,0xbc,0xa4,0x7c,
- 0x98,0xf8,0xa5,0xf8,0xe0,0xcd,0xef,0x39,0xcf,0x6b,0xf3,0x7f,0x6e,0x4e,0xc2,0x12,
- 0x6d,0x53,0x05,0x69,0x9b,0xe2,0x11,0xe9,0x3b,0xac,0xd6,0xac,0x24,0xda,0xcf,0x19,
- 0x49,0xc4,0xbf,0x86,0x32,0xfa,0x24,0xc3,0x7f,0x5e,0xae,0x1d,0x91,0x66,0xb7,0x2d,
- 0x30,0xcb,0x37,0xeb,0x6f,0x2a,0xe2,0x2f,0x9e,0x84,0x37,0xb9,0xb0,0x77,0x29,0x87,
- 0xff,0xd3,0x69,0xf3,0x7f,0x92,0x2c,0xe6,0x59,0x03,0xd5,0x86,0xaa,0x32,0xcb,0x23,
- 0x71,0x65,0x92,0xbd,0xa5,0x77,0x00,0xb3,0xfc,0x3f,0xe3,0xf9,0x3f,0x68,0xdf,0x75,
- 0x72,0x53,0x30,0xcf,0x5a,0x0a,0x9c,0xb1,0x4a,0xf3,0xf2,0x24,0x6e,0x13,0x7e,0xac,
- 0x4f,0x25,0x22,0x74,0xca,0x7e,0xbd,0x76,0xfc,0xab,0x17,0x41,0xce,0xea,0xce,0x36,
- 0xb5,0x82,0xdf,0xd4,0xd6,0xbe,0x16,0xb6,0x69,0xbe,0x81,0xf9,0x61,0x66,0x9a,0xc2,
- 0x51,0x3f,0xab,0xfd,0x40,0x9b,0x3d,0xde,0xe6,0x3f,0x17,0xfc,0x69,0xdb,0x14,0xfe,
- 0x82,0x54,0x05,0x95,0xed,0xf2,0xeb,0x68,0xd6,0x1b,0xfa,0xf3,0x92,0xc5,0x6f,0xc7,
- 0x5f,0xd3,0xaa,0x07,0xfd,0x8f,0xcb,0x19,0x7c,0x95,0xb8,0x3c,0xfd,0xbc,0x27,0x28,
- 0x5a,0x01,0x57,0x1f,0xc8,0x3f,0x20,0xe2,0x3b,0x0d,0x03,0xfe,0x13,0x1d,0xa3,0xad,
- 0xe7,0xe1,0xfa,0x43,0xfe,0xd1,0xf2,0xe1,0x15,0xd9,0xf8,0xe7,0x7a,0xd3,0xdf,0x23,
- 0x8f,0xf0,0x37,0x35,0x81,0x76,0x9e,0x82,0x0b,0xe1,0x2a,0x5c,0x96,0xcd,0x4b,0xf9,
- 0xf3,0x14,0x1f,0xec,0x91,0xc3,0x99,0xf8,0x23,0x20,0xfe,0x81,0xc0,0x49,0x62,0x3b,
- 0xa7,0xfc,0x30,0x3d,0x85,0xe8,0xb4,0x12,0x7a,0x0c,0x4f,0xd4,0xd7,0x13,0x98,0x47,
- 0x81,0x78,0x53,0xed,0x61,0x89,0x0c,0xff,0x59,0xe0,0x9f,0x60,0x6f,0x9a,0xdf,0x92,
- 0xde,0x5f,0xec,0xbe,0x41,0xef,0xc5,0xf9,0xfc,0x2c,0x1e,0x49,0xd0,0x87,0x36,0x7d,
- 0x1c,0xfe,0x11,0x20,0x81,0xe2,0x8f,0x22,0xec,0x15,0xc2,0x2f,0x7a,0xba,0x51,0xb8,
- 0x09,0xf1,0xe1,0x9a,0x18,0x21,0xcc,0xa6,0x64,0x86,0x9f,0x96,0x33,0x62,0x07,0x3d,
- 0x89,0x8d,0x4c,0xd6,0xd6,0x8b,0x2b,0x0a,0xd5,0x66,0x57,0x5d,0xc7,0x52,0xf6,0x0c,
- 0xef,0x36,0xd4,0xa4,0x0c,0x19,0xfc,0x53,0x48,0xfc,0x9f,0x34,0x9b,0xf7,0x7b,0xd6,
- 0xc2,0x78,0x12,0x31,0x72,0x43,0xa3,0x8f,0xec,0xfb,0x79,0xa8,0x33,0x67,0x8e,0xca,
- 0x63,0x8e,0x3f,0xd0,0xc1,0x3f,0x78,0x7d,0xf9,0x05,0xa8,0xea,0xf3,0x89,0xb0,0xd7,
- 0x0d,0xf5,0xc6,0xc2,0xc7,0xbd,0x21,0xfd,0x05,0x22,0x3a,0x5e,0xec,0xff,0x21,0xb4,
- 0x43,0x34,0x39,0x08,0xa4,0x08,0x0f,0x6b,0x4f,0xe0,0x46,0xbe,0xa0,0x87,0xd5,0xa9,
- 0xaf,0xf2,0x00,0x3d,0x6f,0xc6,0xbf,0x61,0xe2,0x7a,0xd8,0x6f,0x6d,0x13,0x28,0xba,
- 0x57,0x41,0xe3,0x69,0xc6,0x96,0x9a,0xde,0x6b,0x85,0x7f,0x2c,0x41,0x4b,0x2b,0xe3,
- 0xff,0xd1,0x61,0x32,0xcc,0xb5,0xf0,0xcf,0x1b,0xbc,0xa3,0x73,0x4a,0x4a,0x25,0x1a,
- 0xcc,0x63,0x89,0x19,0x4b,0xbc,0xdf,0x66,0x93,0xcd,0x1f,0x26,0xca,0xf0,0x08,0x22,
- 0x28,0xfb,0x17,0x29,0xb5,0xf8,0xcf,0xbe,0x9a,0x2f,0x1d,0x56,0xb6,0xc1,0x9c,0x54,
- 0xb0,0x56,0x1e,0x80,0x8f,0xda,0xbf,0x7b,0xcc,0x5f,0xdb,0x5c,0x99,0x7a,0x26,0x11,
- 0x36,0x2b,0x6b,0xdd,0xfe,0x9f,0x49,0x0e,0xfe,0x19,0x81,0x37,0xd5,0xeb,0xcc,0x09,
- 0x49,0xe1,0x16,0xab,0x37,0x0a,0x52,0xc5,0x67,0xef,0xc1,0x53,0x7d,0xfe,0x0f,0xe5,
- 0x41,0x67,0x7f,0xa4,0x66,0xe6,0xff,0x78,0xea,0xb5,0x48,0xfd,0x31,0x9f,0x45,0x3b,
- 0xef,0x8e,0xa2,0xf0,0x35,0x5c,0xa8,0xdd,0x86,0x8f,0xe2,0xf5,0x0e,0x7f,0x46,0xe8,
- 0x4f,0x01,0x72,0x5e,0x6f,0x9f,0xa0,0xe3,0x46,0x8c,0x1c,0x41,0x8f,0x41,0x99,0xe1,
- 0x59,0xc6,0x7c,0xdb,0x57,0xc1,0xb5,0x74,0xe4,0x55,0x07,0x6f,0x58,0xf1,0xaf,0x74,
- 0x74,0x6f,0xd5,0x8a,0x6b,0x8e,0x95,0x12,0xcc,0x7b,0x98,0x97,0x2f,0xcb,0x1b,0x63,
- 0x77,0xc4,0xb7,0xf1,0x60,0x14,0xa7,0x22,0xc3,0x3f,0x5c,0x22,0xf4,0x8f,0x8e,0xeb,
- 0x2d,0x80,0xeb,0x4d,0x4a,0xbb,0x9d,0xf7,0x2b,0xba,0xd1,0x75,0x2d,0x2e,0xbc,0x2e,
- 0x4b,0xd5,0xbb,0xe2,0x5f,0x39,0x84,0x7f,0x6a,0x2d,0xfc,0x73,0x08,0xd1,0x4e,0x88,
- 0x84,0xe3,0x50,0x95,0xc8,0x1b,0x91,0x97,0xb0,0xe3,0x6a,0x6d,0xc2,0x97,0x90,0xcf,
- 0x64,0xf0,0x55,0xa1,0x9d,0x8f,0x33,0x21,0x9d,0xf6,0xc5,0x8b,0x2d,0x44,0x54,0xc0,
- 0x3b,0xd0,0x34,0x1b,0xd5,0x0a,0xf1,0x7f,0x9c,0xf5,0x60,0xc5,0xbf,0x04,0xe9,0x45,
- 0xf0,0x5d,0xa3,0x7e,0xf2,0xff,0x9c,0xc2,0x69,0xc9,0xff,0x97,0x2b,0x11,0x11,0x6d,
- 0xab,0x32,0xd6,0xc6,0x5d,0xfe,0x31,0x0e,0x84,0x67,0xc8,0xc8,0xa2,0x12,0xfb,0x11,
- 0xa3,0x40,0x98,0xf0,0xe7,0x04,0x8c,0xfb,0x27,0xc9,0x5f,0x86,0x47,0xda,0x03,0xe4,
- 0xe1,0x19,0x76,0xde,0x2f,0xe1,0x9f,0x5d,0x69,0xfe,0x8f,0x24,0xe2,0x5f,0x71,0xb6,
- 0x3d,0x67,0xbf,0x14,0x30,0xae,0xdc,0x18,0x50,0x12,0xab,0xd5,0x00,0x79,0x30,0x0e,
- 0x3b,0xe3,0x2d,0xfc,0x13,0x24,0x6f,0x4f,0xdf,0x5a,0x0b,0xed,0x5c,0x46,0x61,0x2f,
- 0x1d,0x05,0x68,0xe1,0x5b,0x74,0x9d,0x02,0x61,0x2e,0xfc,0x73,0x55,0x14,0x46,0x6d,
- 0xb6,0x73,0xcd,0x2d,0x95,0xb0,0x6e,0x45,0x59,0x02,0x8f,0x88,0xb4,0xa3,0xb2,0x48,
- 0x7f,0x6b,0x37,0xe5,0x7f,0xbd,0x93,0xab,0x39,0xe3,0xe9,0xe9,0xaa,0x11,0xed,0x34,
- 0x6f,0x6f,0x7d,0x45,0x9b,0x47,0xe8,0x65,0x08,0xce,0x69,0x57,0x19,0x6b,0x5b,0xe5,
- 0xa1,0xc8,0x39,0xed,0x69,0x91,0xff,0xe5,0xe0,0xe7,0x1a,0xe1,0xff,0xa9,0xbd,0x89,
- 0xe6,0x47,0xff,0x16,0xcc,0x26,0x62,0x70,0x05,0x9c,0x5a,0x4c,0x19,0x64,0xcd,0x73,
- 0x8c,0x17,0x83,0x55,0x5f,0xcc,0x1f,0x94,0x0f,0x39,0xe3,0x4b,0x81,0xf0,0x4f,0x35,
- 0x25,0x79,0x1d,0xd3,0x7a,0x74,0x06,0xde,0xf6,0x22,0x1d,0x7a,0xa2,0x95,0xe0,0x4d,
- 0x30,0xde,0xbe,0x23,0x1a,0xd0,0xd4,0xf1,0xf1,0xaf,0x5d,0xc1,0xa0,0x60,0x77,0x27,
- 0xd6,0x47,0xe8,0x31,0xdb,0x15,0x69,0x57,0x4b,0xa8,0x71,0x3e,0x01,0xa1,0x36,0x55,
- 0x37,0xf2,0xb2,0xfc,0x3f,0x25,0xdb,0x55,0x6b,0xfe,0x03,0x43,0x0a,0x0a,0x8d,0x5e,
- 0x02,0x96,0xfb,0x4a,0x70,0x86,0x93,0x6c,0x3b,0x3c,0xa2,0x6d,0x25,0x46,0xf4,0x73,
- 0xce,0xfb,0x4a,0x28,0xf4,0x7e,0xa7,0x5b,0xd1,0xcc,0xbf,0x23,0x6f,0x55,0xdc,0x9b,
- 0x76,0xeb,0x6d,0x24,0xc4,0x8b,0x47,0xf2,0x11,0xff,0x38,0xfe,0x81,0x25,0x76,0x3c,
- 0x94,0xc6,0x7f,0x08,0x4f,0x65,0x68,0xcf,0xeb,0x36,0x93,0x07,0x8c,0xd7,0x51,0x20,
- 0xec,0xa5,0x0c,0x9e,0x71,0xf8,0xcf,0x82,0x7f,0x55,0x95,0xa6,0x3d,0x5b,0x47,0x12,
- 0xba,0x09,0x22,0x10,0x96,0xc1,0x3f,0xaa,0xe2,0xe4,0x7f,0x0d,0xb3,0x35,0x10,0xd8,
- 0xe6,0x4d,0x14,0x0d,0x2b,0xe2,0xc8,0xe2,0xe2,0x6f,0xc1,0x2f,0xd0,0x22,0x7b,0xdc,
- 0xf1,0x2f,0x15,0xf7,0x5f,0xfb,0x2d,0x27,0x0f,0x85,0x69,0x2a,0x0c,0x21,0x88,0xb4,
- 0x8b,0xd9,0xec,0x3e,0xe8,0xe0,0x3a,0x7d,0x41,0x07,0x5c,0xf9,0x17,0xf8,0xfd,0x5a,
- 0x24,0xe7,0x37,0x8c,0x87,0xa5,0x29,0x86,0xf7,0x1b,0xec,0x75,0x49,0x1c,0x89,0xb2,
- 0xdb,0xf5,0x6d,0x6a,0x59,0x9f,0xc7,0x8d,0x7f,0x82,0xa5,0x88,0x7f,0xfa,0x05,0xc8,
- 0x39,0x5c,0xf1,0x41,0xf7,0x94,0x63,0xfe,0x6f,0x77,0xbc,0xa1,0xfe,0xf6,0xd0,0xbc,
- 0xd4,0xc2,0xe5,0xe5,0x3f,0x85,0xe7,0xf9,0xec,0x14,0x02,0xa1,0x4c,0x3e,0x9a,0xe0,
- 0xff,0xa4,0x68,0x3f,0xf5,0xe9,0x0f,0xd6,0xbe,0xd6,0xfa,0x44,0x9a,0xd6,0x2b,0x55,
- 0x92,0xb0,0x53,0x39,0x63,0xf3,0x09,0xed,0xf5,0x10,0xcd,0x49,0xc7,0xbf,0x4e,0xc9,
- 0xf7,0x1a,0x67,0x92,0xb3,0x53,0x0b,0xc6,0xca,0xc9,0xa2,0xcd,0x1e,0xc2,0xbf,0x78,
- 0xaf,0x79,0x84,0xef,0x46,0x90,0x2e,0xbb,0xf8,0x36,0x52,0x7a,0xff,0xf5,0x6d,0x76,
- 0x07,0xff,0xc3,0xe3,0xd0,0xa2,0x5e,0x8f,0xfa,0xe7,0xf7,0x30,0x6d,0x38,0xaf,0x2a,
- 0xf7,0xa7,0xd0,0xa5,0xff,0x8d,0x99,0xbf,0x8c,0xbd,0x97,0x89,0x2f,0x10,0xfe,0xe1,
- 0x38,0xfe,0x6e,0x76,0x07,0xfe,0xc3,0x72,0x53,0xbd,0xc7,0xa2,0x3d,0xf7,0x77,0x2d,
- 0x2b,0x52,0xfb,0x56,0xc1,0x97,0x0f,0xa0,0xbe,0xca,0xec,0xbf,0x0c,0x87,0x7f,0x88,
- 0xd6,0x8a,0xfc,0x69,0xa4,0x7f,0xa4,0x6d,0x6a,0x70,0x28,0x2f,0xdc,0x3e,0x40,0x0c,
- 0xab,0x14,0x02,0x21,0xb7,0xff,0x7c,0x27,0x08,0x7b,0x94,0x04,0xe2,0x27,0x77,0x1b,
- 0xa1,0x51,0x18,0xd1,0x2e,0x1c,0x08,0x10,0x2d,0x73,0x29,0x6e,0x54,0x89,0x88,0xcb,
- 0x32,0xfb,0xaf,0x84,0x36,0x22,0xd9,0xf1,0x0e,0x9a,0x0d,0xc3,0x9a,0x1f,0xad,0xde,
- 0xcc,0xdf,0x35,0x81,0x0c,0x9f,0x98,0xb1,0x61,0x87,0x7f,0x25,0x65,0xf0,0x0f,0x09,
- 0xd7,0x47,0xf2,0xad,0xc0,0x07,0x1d,0xf9,0xd2,0x1e,0x38,0x8c,0x1a,0x3e,0x74,0x71,
- 0xfe,0x97,0x15,0xbd,0xd2,0x2c,0x62,0x8f,0x6c,0x21,0x9c,0xf9,0x4f,0x7a,0x42,0xda,
- 0xa3,0x37,0x05,0xcc,0x08,0xe2,0x9f,0xf1,0xfc,0x9f,0x4c,0xb4,0x2b,0x8f,0x04,0xaf,
- 0xc8,0x00,0x62,0x6b,0xa3,0x5d,0x5a,0xc0,0xe2,0xff,0x38,0xef,0x17,0x7c,0x4e,0x7e,
- 0x4a,0xdb,0xee,0x0a,0xd4,0x3f,0xd5,0xa8,0xa8,0x77,0x97,0x84,0xfa,0xbd,0x73,0x58,
- 0xfe,0x0f,0x1e,0xb1,0xf0,0x40,0xc6,0xff,0x03,0xa5,0x4b,0xf1,0xb6,0xf1,0xed,0xef,
- 0x2d,0x3e,0x57,0xf1,0xe7,0x8a,0xda,0xc1,0xfb,0x3e,0xee,0x18,0x81,0x23,0xc6,0xe4,
- 0xa3,0xde,0x3d,0x68,0xe8,0x0f,0x19,0xdd,0xa6,0xef,0x31,0xd9,0xcc,0x75,0xf0,0xcf,
- 0x55,0x67,0xe1,0x69,0x91,0xbf,0x53,0x3e,0xc2,0x2f,0x94,0xcc,0xbb,0xc9,0xdb,0xcd,
- 0xea,0x94,0xef,0x41,0xfd,0xe1,0x09,0x83,0xe5,0xef,0xc7,0xce,0x07,0x05,0xb5,0xc3,
- 0xcd,0xff,0x39,0x1b,0x7d,0x96,0x23,0xc8,0x31,0xe5,0x6a,0xf6,0x2a,0xdf,0x0f,0x37,
- 0x9f,0x90,0x6f,0x85,0x37,0xf5,0xb9,0xa9,0xc9,0xa7,0xe4,0x2a,0x38,0x02,0xdf,0x89,
- 0x4e,0x72,0xc7,0xbf,0x38,0xbc,0x8f,0x46,0x24,0xf0,0x86,0x0a,0x45,0x3e,0xb6,0x06,
- 0xb7,0x29,0xea,0x29,0xf6,0x16,0xac,0x2b,0x25,0x20,0xc4,0xa2,0x9d,0xff,0x26,0xd5,
- 0x22,0x10,0x62,0xa3,0xb9,0x6e,0xfc,0xb3,0x3a,0x84,0xcb,0x80,0x33,0x45,0x59,0xc3,
- 0xa6,0x03,0x5a,0x73,0x13,0x76,0xeb,0x4b,0x4c,0x6f,0x55,0x00,0x82,0xdb,0x20,0xd8,
- 0x58,0x3a,0x2e,0xfe,0xc5,0xba,0x10,0x24,0x44,0xb8,0x47,0xe1,0x6b,0x8c,0xc0,0x2d,
- 0x38,0x7b,0xbf,0x17,0xb4,0x1f,0x39,0xe9,0x89,0x56,0xfc,0x9c,0xf8,0x9c,0x49,0x96,
- 0xcd,0xff,0x41,0x10,0x62,0x86,0xd6,0xa2,0xda,0x3c,0xc4,0x6b,0x35,0x44,0x23,0x6f,
- 0xf9,0xce,0x28,0xc2,0x22,0xe7,0xa1,0x21,0xae,0x21,0xfb,0xdb,0xeb,0xe2,0x3f,0xef,
- 0x64,0x17,0x50,0xed,0x2c,0xec,0x65,0xe7,0x95,0x91,0xa6,0x86,0x18,0xb1,0x7d,0x34,
- 0x3f,0x5c,0x2f,0xf2,0x01,0x01,0x81,0x71,0xcb,0xcc,0xac,0xfc,0x2f,0xd8,0xa9,0x11,
- 0xec,0xc9,0x7f,0xd0,0x5b,0x21,0x1d,0x32,0x6a,0xe9,0x6a,0x29,0xe3,0x23,0xa9,0x8a,
- 0xfc,0x4b,0xc3,0xf0,0x5a,0x51,0x7d,0x23,0xe2,0x73,0x17,0xfe,0xb9,0xe1,0x2a,0xe8,
- 0x68,0x0b,0x7c,0x53,0x0d,0xa2,0xda,0xec,0x88,0x05,0x71,0xbd,0x31,0xb3,0x74,0x1d,
- 0xdc,0x2b,0x12,0xe1,0x61,0x5d,0x63,0xe5,0x12,0xbc,0xc3,0xa4,0xe3,0xff,0x41,0xfc,
- 0xa3,0x77,0x24,0x02,0x66,0x1e,0x5c,0xd1,0x09,0x9c,0x2f,0x81,0xeb,0xc2,0xb9,0xa6,
- 0x15,0x21,0x4d,0xb2,0xbe,0xb6,0xdd,0xea,0xd2,0x26,0xdc,0x7f,0x8d,0xba,0xf8,0x87,
- 0x93,0x61,0x1d,0x2f,0x4b,0xed,0xb8,0x29,0xf7,0x32,0x58,0x9b,0x9c,0x96,0xb8,0xfc,
- 0xdb,0x53,0x4f,0xc0,0x36,0x3e,0x6d,0x78,0xcd,0xf2,0xdc,0x8f,0x8d,0x09,0x2b,0x66,
- 0x44,0x3d,0xdf,0x66,0x4f,0x66,0xf8,0xcf,0x88,0x7f,0x3a,0x22,0x61,0x33,0xbf,0x92,
- 0xad,0x6c,0xe2,0xf1,0x1e,0x63,0x46,0xad,0x6c,0x2a,0xdb,0xb4,0xa5,0xc3,0xde,0x59,
- 0xf2,0x01,0xfe,0x6b,0x98,0x64,0xf8,0x6b,0xdd,0xfc,0xe7,0x49,0x4f,0x32,0xf1,0xbd,
- 0xb4,0xc9,0x43,0x45,0x27,0x61,0x2e,0x79,0x7b,0xc6,0xd4,0x23,0x9f,0xae,0x24,0xa1,
- 0x0f,0x2e,0x18,0x0d,0x86,0xf0,0x77,0xd9,0xf3,0xa3,0x4e,0xb4,0x48,0x56,0xf9,0x66,
- 0xf3,0x62,0x18,0x55,0xae,0x83,0x82,0x27,0xbb,0x2a,0xd2,0x1e,0xa1,0x66,0x7c,0x35,
- 0x51,0xf1,0x85,0x66,0xf8,0x09,0x11,0x69,0x33,0x7f,0x1c,0xca,0x8d,0xe0,0xe0,0x84,
- 0x12,0x6d,0x0f,0x94,0x71,0xf5,0x9f,0x58,0x89,0x4a,0xfa,0x73,0x3e,0xee,0xa7,0x60,
- 0x55,0x74,0x86,0x41,0xfe,0x1f,0x07,0x8f,0xe1,0xf3,0x9a,0x7b,0x29,0xa9,0x7f,0x29,
- 0xfb,0xbc,0xba,0xd3,0x2c,0xbf,0x6b,0x7a,0x0d,0xbb,0x63,0xda,0xde,0x8d,0x33,0x52,
- 0x1d,0xcb,0xd9,0xab,0x2c,0x9d,0xff,0xd5,0x9f,0x85,0x7f,0xba,0x23,0x89,0xa8,0x5a,
- 0x8d,0xfb,0xf7,0xe4,0xc1,0xc0,0xa8,0x1a,0x0e,0x2c,0xd4,0xd3,0x5f,0xdc,0x3b,0xe4,
- 0x7f,0x8e,0x8e,0xe3,0x3f,0x0f,0xc3,0xc7,0xb8,0xed,0x9a,0x34,0x32,0x61,0x89,0x7a,
- 0x9c,0xef,0xef,0xac,0x4c,0x94,0x7f,0xcb,0x66,0x04,0x9d,0xe6,0x87,0xa0,0xbe,0x5d,
- 0xc4,0xbf,0x32,0xf8,0x0d,0xed,0x91,0x56,0xaf,0x14,0x88,0x6d,0x38,0xa3,0xdd,0x77,
- 0x7a,0x3f,0xbe,0x50,0x18,0x26,0xa3,0x5e,0x1b,0xc7,0x7f,0x5e,0x69,0x1c,0x84,0xa2,
- 0xa8,0x4f,0xbb,0x72,0xb1,0xf1,0x8a,0x59,0x65,0x84,0xd0,0xfa,0xf3,0x57,0x6c,0x0b,
- 0x78,0x50,0x13,0x89,0x42,0x59,0xf1,0x2f,0xa0,0x6c,0xa3,0x25,0x71,0x56,0xa1,0xb7,
- 0xb5,0x55,0x37,0x06,0xe3,0x45,0xef,0x00,0x25,0x82,0xa1,0xd9,0x7d,0x5b,0x5f,0xcd,
- 0xf5,0xe8,0x78,0xfe,0x33,0x5b,0x0d,0xc1,0x16,0x4f,0x1c,0x81,0xd3,0x8f,0xd2,0x69,
- 0x4a,0x69,0x46,0x90,0x20,0xfa,0x06,0xf0,0x54,0x56,0xfc,0x8b,0xdc,0x3e,0xc1,0x88,
- 0xa7,0xc8,0x43,0xfe,0xa2,0x8a,0x88,0x5a,0x94,0xa6,0xfd,0x20,0xfe,0xe9,0x83,0x36,
- 0x3d,0x21,0xf8,0xcf,0x99,0xf8,0xd7,0x55,0x77,0x1a,0x66,0xeb,0x13,0x25,0x05,0x94,
- 0xff,0xfe,0x2a,0x54,0x11,0xdb,0x39,0x05,0x47,0x6f,0xc5,0xe7,0x5d,0x51,0x7e,0xac,
- 0xe9,0x50,0x6b,0x15,0xc7,0xa9,0x38,0xef,0xe4,0x5f,0xf4,0x5c,0x3e,0x64,0x9c,0x83,
- 0xb9,0x2d,0xf7,0xfd,0x4a,0xde,0xa3,0x9c,0x63,0x0d,0x44,0x84,0x3e,0x09,0xe4,0xf6,
- 0x41,0x18,0xf0,0x32,0x0a,0x0d,0xd9,0xfc,0xe7,0x1a,0xe5,0xa4,0x7e,0x50,0xaa,0x6a,
- 0x82,0xc1,0x67,0xbe,0xa9,0xbe,0xa8,0xcc,0xbd,0xc1,0x17,0x97,0x4e,0x6a,0x07,0x7d,
- 0xb3,0x1b,0x71,0xd8,0x9f,0xa4,0x83,0x30,0x91,0xfe,0xe1,0x3b,0x0e,0x7e,0x2e,0x05,
- 0x13,0xff,0x53,0x4e,0xd9,0x5e,0xba,0x1a,0x93,0x2a,0x4b,0xd4,0x15,0x38,0xff,0x1c,
- 0xa6,0x83,0xdc,0xce,0x52,0x6d,0x47,0xef,0x0e,0x80,0xca,0xe5,0xfb,0x33,0xfc,0x67,
- 0xa5,0x13,0x56,0x40,0x59,0xd3,0x74,0xed,0xa1,0xc5,0x95,0x6d,0xb0,0x38,0x22,0xf8,
- 0xcf,0x5b,0xf2,0x04,0x10,0xc2,0xe7,0x55,0x2b,0x04,0xfe,0x71,0xd6,0x43,0x69,0x49,
- 0x27,0x5b,0x81,0xeb,0xd3,0xf2,0xa7,0xa9,0x95,0x11,0x35,0x5e,0xb4,0x9d,0x3d,0x82,
- 0x6a,0x07,0xe7,0x7f,0x28,0x6f,0x35,0xed,0xef,0xe2,0xec,0xa1,0x0c,0xbf,0x42,0xd9,
- 0x03,0x2f,0x12,0xc8,0xdf,0x24,0xdf,0x08,0x07,0x8d,0xea,0x25,0x21,0xca,0x56,0x9b,
- 0x86,0x2f,0x82,0xde,0x6f,0xe7,0x6a,0xa8,0x8e,0xe6,0xbb,0xf3,0xbf,0x10,0xff,0xe8,
- 0xef,0x42,0x9d,0xb1,0xee,0x47,0xf2,0x1f,0xd4,0x53,0x65,0xa1,0x28,0xa1,0x41,0xe3,
- 0x57,0x36,0x43,0xfe,0x23,0x55,0xd4,0x07,0xc8,0xe2,0x3f,0x33,0xa2,0xe1,0x20,0xda,
- 0x8c,0xea,0xfd,0x91,0xfa,0x12,0x5c,0x5d,0x3a,0xae,0x37,0x11,0x7f,0x3c,0xa6,0x1c,
- 0x85,0x2a,0xe5,0x30,0x2f,0x3f,0xe0,0xf2,0xef,0x4d,0x83,0x35,0xa5,0xe5,0x31,0xf2,
- 0xff,0xc0,0xfd,0x06,0xd5,0x73,0x68,0x9a,0x0e,0x69,0xda,0xcf,0x69,0x78,0x94,0x97,
- 0x25,0x54,0x37,0xff,0x59,0xcd,0x89,0x00,0x3f,0x90,0x80,0xbc,0x1a,0xe6,0xcf,0xdd,
- 0x62,0x2c,0x25,0x37,0x45,0xae,0xb1,0xdb,0x72,0x53,0xbc,0x57,0xb6,0xcd,0xd4,0x0d,
- 0x95,0xf2,0xbf,0x1c,0xfd,0x23,0x4d,0xe2,0xab,0xe6,0xa0,0x3e,0x5f,0xb6,0xf2,0x2a,
- 0x78,0x90,0x36,0x7a,0xcb,0xd9,0x24,0x98,0x5b,0x74,0x67,0xaf,0xf7,0x1e,0x76,0x34,
- 0xf8,0x90,0x5a,0x0e,0x84,0x07,0x9c,0xfd,0x45,0xb0,0xb4,0x28,0xde,0xd9,0x39,0x2b,
- 0x91,0x3f,0xe6,0xad,0x85,0x77,0xf8,0xbc,0xa1,0x7c,0x8a,0x7f,0xfd,0x99,0x5f,0x9b,
- 0xf2,0x7f,0xb7,0xe3,0x34,0x3b,0xc0,0x67,0xe9,0x3e,0xe2,0x3f,0x3b,0xf1,0xaf,0xfc,
- 0x87,0x8c,0x33,0x9c,0x76,0x97,0x1d,0x3b,0xd8,0x51,0x8a,0xce,0x27,0x11,0x06,0x9c,
- 0xf1,0x08,0x86,0x21,0xee,0x50,0xd4,0xa7,0x60,0x66,0xb2,0xd8,0x85,0x7f,0x94,0xa7,
- 0xe0,0x48,0x67,0x43,0x22,0xff,0xb4,0x7c,0xda,0xe8,0xfb,0xfe,0x9c,0xa1,0xfc,0x7d,
- 0xf2,0x1b,0xc6,0x0b,0xf1,0x59,0xa9,0xb5,0x3d,0xd7,0x9c,0xe6,0xef,0xb5,0xcf,0x8e,
- 0xfe,0x6c,0xac,0x38,0x93,0xaf,0xb1,0x03,0x36,0xdd,0xda,0x09,0x33,0x5a,0x62,0xb5,
- 0x4d,0x87,0x78,0xa7,0x56,0x36,0xec,0xa9,0x91,0x37,0xc3,0xba,0xed,0xc1,0x11,0x75,
- 0x79,0xee,0x7b,0xe6,0xca,0x44,0x59,0xb0,0xa0,0x86,0xbd,0xb7,0xd2,0x7e,0xbf,0x00,
- 0x1b,0x61,0x55,0xe9,0x8c,0x04,0x3e,0xd4,0x20,0xbb,0x1f,0xfe,0x41,0xec,0xd7,0x0a,
- 0x57,0x41,0xd9,0xc0,0x67,0x96,0xb1,0x57,0xfa,0x37,0x86,0xa7,0xf8,0xb2,0xf8,0xcf,
- 0x46,0x09,0x47,0x35,0x1e,0xba,0x53,0xdd,0xb3,0x35,0x05,0xbc,0x6c,0x71,0x1f,0x05,
- 0x3e,0x80,0x0a,0x71,0xe4,0x51,0xfe,0x7b,0x5c,0xa9,0x20,0x0b,0xe8,0xc2,0x63,0x39,
- 0xdb,0xa1,0xcb,0xac,0x0f,0x86,0xf6,0xc8,0xc7,0x03,0xbc,0xad,0x3a,0xb5,0x20,0x59,
- 0x7e,0xbc,0xe3,0x08,0x6a,0xd4,0x19,0xa3,0xf2,0xef,0xd9,0x69,0xf6,0xb8,0x9e,0xe5,
- 0x3f,0x4f,0x68,0x43,0xa4,0x6d,0xcc,0x9b,0x7b,0x88,0xf6,0xdc,0x59,0xdb,0x7c,0xa3,
- 0x48,0xfc,0xc9,0x21,0x8f,0x90,0xfc,0x16,0x82,0xa3,0xda,0xe4,0xd5,0x49,0xdc,0x61,
- 0xd9,0xcf,0x2b,0x69,0x27,0xf9,0x85,0x60,0x03,0xf7,0x8f,0xfa,0xeb,0x34,0x5c,0x48,
- 0x43,0xbe,0xd1,0x4f,0x9d,0xe7,0xbf,0x45,0x20,0x77,0x35,0x25,0x3e,0x1f,0x86,0xb9,
- 0xb0,0x30,0x9b,0xff,0xbc,0x98,0xf7,0xe8,0x84,0xf6,0xab,0x43,0x10,0xeb,0xac,0x37,
- 0x3c,0xb4,0x1f,0xff,0x39,0xea,0xc8,0xab,0x93,0x4c,0xd6,0x62,0x50,0x1d,0x46,0x44,
- 0xf4,0x88,0x0b,0xff,0x44,0x45,0xfc,0xcb,0xb3,0xa9,0x28,0xa8,0xc7,0x62,0xb8,0x30,
- 0x92,0x45,0x23,0x4a,0x17,0x14,0x98,0x5d,0xe1,0xdc,0xf7,0xf4,0x76,0x1e,0xd0,0x3d,
- 0x59,0xfc,0x67,0xfc,0xbf,0x24,0x05,0xd9,0xc3,0x6c,0x75,0x8c,0x17,0x86,0xfa,0x6b,
- 0x28,0x2d,0x6e,0x9b,0x4f,0x1f,0xf4,0x84,0x8b,0xa6,0xad,0xe7,0x89,0x0a,0x40,0x20,
- 0xd4,0x9e,0xc1,0x3f,0x60,0xe4,0x51,0xbc,0xaf,0x60,0x90,0x49,0x7a,0x4c,0x9a,0x6d,
- 0x86,0xba,0xdb,0x71,0x63,0xce,0x2a,0x8f,0x7a,0x4f,0x34,0x2f,0xc9,0x35,0xa7,0x55,
- 0xb1,0x85,0xc9,0x6d,0x29,0xd9,0xe1,0x3f,0x5f,0x3e,0x4a,0xde,0x0c,0xc3,0xbf,0xab,
- 0x3d,0xba,0xe6,0xac,0x88,0x56,0x50,0x62,0x97,0x52,0x3f,0xb8,0xf0,0x43,0x79,0xc4,
- 0x3c,0x2b,0x51,0x3d,0x81,0xe6,0x1d,0x65,0xf6,0xfc,0xf4,0xda,0xfc,0xe7,0x31,0xf9,
- 0x5e,0xf8,0x40,0x45,0x61,0x34,0x70,0x1e,0xce,0xe9,0xd7,0x9b,0x08,0x9b,0xeb,0xf4,
- 0x23,0x66,0x43,0x36,0xff,0xd9,0xd4,0x7e,0x61,0xf1,0x7f,0x7a,0x58,0x25,0x7c,0x60,
- 0xa2,0x70,0x96,0x1d,0x87,0x7d,0xad,0xe5,0x2f,0x79,0x7a,0xb4,0x5f,0x2a,0xaf,0x01,
- 0x9d,0x2a,0x4a,0x39,0xfe,0x81,0x7e,0xc5,0x21,0x9d,0x2e,0xf0,0x09,0x61,0x0e,0xce,
- 0x27,0xee,0xc8,0x06,0xfe,0x31,0xcc,0x7c,0x5b,0x2d,0xe2,0x13,0x7b,0x4b,0xb2,0xc7,
- 0x13,0xff,0xd9,0x4a,0xf2,0x62,0x02,0x76,0xf6,0x52,0xda,0xbb,0xb6,0x0b,0xf1,0x0f,
- 0x4e,0xe3,0x4e,0xe5,0xc7,0x8a,0xc5,0xbf,0x72,0xee,0xe7,0x96,0x4c,0xfe,0x75,0x9a,
- 0x28,0x25,0xf8,0xf0,0x50,0x6b,0xfa,0xc2,0x78,0x05,0x87,0x9f,0x33,0x3e,0xff,0x9d,
- 0xf0,0xb0,0xf4,0x81,0x55,0xcd,0x06,0xe7,0x27,0x3e,0xc7,0x5c,0x38,0xfa,0xa5,0x0c,
- 0xff,0xc7,0x79,0x5f,0x88,0x7f,0x14,0x0a,0xaa,0xa6,0xd9,0x65,0xf7,0x50,0xa0,0x27,
- 0x04,0x63,0x6a,0xad,0x99,0x9f,0x9c,0x10,0xf2,0x39,0xd7,0xb7,0xdf,0xd6,0xd1,0x89,
- 0xe9,0x7a,0x08,0xf4,0xd7,0x9f,0xd6,0x03,0xbd,0x05,0xa3,0x9e,0x10,0x5c,0xcf,0xca,
- 0xf1,0xfe,0xe5,0x3a,0xf8,0xb9,0x72,0x71,0xfe,0x97,0x3d,0x3f,0x6b,0x69,0xff,0x85,
- 0x42,0x91,0xaf,0xf0,0x01,0x45,0x45,0x18,0xdc,0xb4,0x53,0xeb,0x50,0x16,0x9b,0x97,
- 0xce,0xff,0x1a,0xcb,0x9d,0x0c,0xbb,0xf9,0x94,0x14,0xa2,0x1d,0x14,0xda,0xca,0x86,
- 0x3c,0xcb,0xaf,0xb8,0x19,0x1e,0xb6,0xf1,0x80,0x83,0x7f,0xec,0xfa,0x3f,0x49,0xf9,
- 0x7e,0xf3,0x23,0xbc,0xbe,0x9f,0xf2,0xbf,0x7e,0xad,0xd7,0x0c,0xab,0xb3,0xf0,0x2f,
- 0x3e,0xa3,0x0b,0xfe,0xb3,0x0b,0xff,0xd8,0xf1,0x2f,0x8b,0xcf,0xb3,0x9f,0x88,0x64,
- 0xdf,0x15,0x3b,0x94,0x82,0x65,0xf2,0x4e,0x27,0xff,0xcb,0xc9,0x3f,0x4d,0xe7,0x7f,
- 0xa5,0xb7,0x69,0x4b,0x6a,0xcd,0xf9,0xdd,0xb8,0x5f,0x18,0x83,0x7f,0x1a,0x44,0xa0,
- 0xb8,0x73,0xeb,0x7c,0x8b,0x7f,0x9e,0xf1,0xff,0xf4,0x6b,0xe9,0xfd,0x17,0xb9,0x7d,
- 0x76,0x47,0xcb,0xcc,0xbc,0xb9,0xa8,0x3f,0xf7,0x4a,0xfa,0xa1,0xfb,0x96,0xb1,0x17,
- 0xe1,0xb7,0x96,0x6b,0xe8,0xa5,0x4c,0x7d,0x0f,0xf8,0xa9,0x4d,0x72,0x7e,0x43,0xda,
- 0xdb,0x36,0x8d,0xd2,0xfc,0x27,0x43,0xb2,0xef,0xcb,0x23,0x31,0x72,0x04,0xad,0xba,
- 0x98,0xff,0xb3,0xd6,0xf2,0xaf,0x5a,0x6c,0x67,0x9d,0xd4,0x8e,0x4f,0x78,0x14,0xa7,
- 0x85,0x9b,0x06,0xe0,0xc7,0x69,0xfe,0xcf,0xb8,0xf8,0x17,0xa1,0x1d,0x36,0x0c,0xa7,
- 0x19,0x39,0x82,0xbc,0x41,0x38,0x6f,0x52,0xfc,0x4b,0x1e,0x2e,0x3d,0x64,0x11,0xa1,
- 0xff,0x52,0xfd,0x1f,0x8b,0x0f,0x8c,0xc2,0x62,0x3a,0xc2,0x9c,0x53,0x97,0xce,0xff,
- 0xe2,0x1f,0x92,0x7f,0x40,0x23,0xda,0x4f,0x5f,0x95,0xe1,0xdb,0x48,0xf8,0x47,0x78,
- 0x0c,0xdc,0xfe,0x1f,0xa7,0xfe,0x4f,0xee,0x50,0xda,0x11,0xc1,0xb6,0xc3,0xbe,0x44,
- 0xb5,0x31,0x9d,0xf0,0xcc,0x23,0x56,0x62,0xd7,0xa5,0xf2,0xbf,0x9a,0x2c,0x37,0x91,
- 0x55,0xa6,0x06,0x85,0x18,0xc5,0x53,0x56,0xb3,0xc0,0xa5,0xf8,0x3f,0x56,0xb6,0xbb,
- 0x26,0xdc,0x3e,0x55,0xac,0x13,0xf1,0x4f,0x45,0xc4,0x83,0xf8,0x87,0x8b,0xc2,0x38,
- 0x9a,0x6b,0xff,0x35,0x66,0xe7,0xbf,0x5b,0x4f,0xd7,0x0d,0x96,0xfd,0x6d,0xad,0x2a,
- 0xf1,0xf1,0xe2,0x63,0xad,0x66,0x6b,0x55,0x76,0xfe,0x7b,0xcc,0xc9,0x7f,0xc7,0xbb,
- 0x15,0xd1,0xae,0xf5,0xc2,0xff,0x43,0x66,0xbd,0x78,0xe8,0xa6,0xf4,0x54,0xfc,0x21,
- 0x3b,0xff,0x8b,0x59,0x7c,0x21,0x38,0xa7,0xe2,0x6c,0xb4,0x76,0x6c,0xa7,0xf1,0x11,
- 0xdf,0xa0,0x3c,0x85,0x1f,0xb4,0x5c,0x67,0xcf,0x65,0xe5,0x7f,0x8d,0x31,0x2b,0xff,
- 0x1d,0x7a,0x88,0xed,0xd3,0xc9,0x84,0xff,0xa7,0x64,0x0a,0x22,0x22,0x7e,0x54,0x17,
- 0xfc,0x9f,0xec,0xfc,0xaf,0xf5,0xe9,0xe7,0xc5,0x07,0xd7,0x49,0xf1,0xe2,0xf3,0x1a,
- 0x4b,0x89,0xff,0x9c,0x13,0x6f,0x53,0x13,0x82,0xff,0xe3,0xac,0x9f,0x4d,0x69,0xfe,
- 0x8f,0xd7,0x76,0xbb,0x75,0x25,0x69,0x3e,0x25,0x4a,0x84,0xbf,0xa9,0x02,0xd6,0x2b,
- 0x56,0xfc,0xcb,0xc5,0x5f,0x1d,0x42,0xd8,0x89,0x9b,0x20,0xf1,0xbc,0xd0,0x6d,0x15,
- 0x7a,0xa2,0xc7,0x54,0xe3,0x69,0xff,0xcf,0xba,0x2c,0xfc,0x23,0x6d,0x57,0x5d,0xfe,
- 0x1f,0x9b,0x08,0x24,0x04,0xa9,0xcf,0x5e,0x2a,0x17,0xe5,0x7f,0xd1,0x24,0xa7,0x5f,
- 0x04,0xa4,0x85,0x49,0xb8,0xf0,0xd4,0x7e,0x0b,0x08,0x65,0xe7,0xbf,0xd7,0xa6,0xfd,
- 0x3f,0xf0,0x04,0x47,0x21,0xc5,0x82,0xf0,0x14,0x59,0xa8,0xc5,0x78,0xe4,0x51,0x0b,
- 0x08,0x65,0xe7,0x7f,0xcd,0xb6,0xf4,0x4f,0x8b,0xb1,0x4b,0xc3,0x0f,0x07,0x88,0xb8,
- 0x12,0x0f,0x99,0x57,0xe4,0x10,0x5f,0x45,0xd1,0xc7,0xe5,0xbf,0xc3,0xed,0xf6,0xf7,
- 0xfb,0x32,0x3c,0x86,0x82,0xdc,0x1a,0x10,0x8c,0xe8,0x7e,0x8f,0x51,0x35,0x10,0x7b,
- 0x18,0x24,0x53,0xe4,0x7f,0xd9,0xf7,0xbf,0x23,0x76,0x87,0x95,0xff,0xbe,0x5c,0xbe,
- 0x03,0xfe,0x44,0xc2,0x22,0xf9,0x0e,0xe5,0x63,0xde,0xf0,0x9e,0x67,0x89,0xfc,0x46,
- 0xfc,0x08,0xdf,0x35,0x2e,0xff,0xfd,0xaa,0x9d,0x0e,0x9f,0x93,0xf2,0xe3,0x9c,0x44,
- 0xf8,0xd7,0xd7,0x25,0xe4,0x91,0xe8,0x99,0x92,0xda,0x6c,0xff,0x8f,0x93,0xff,0x7e,
- 0x4a,0xfe,0x8d,0x71,0x84,0x37,0x0c,0x2d,0x0c,0x16,0xdf,0x0b,0xdf,0x89,0x37,0xa4,
- 0xee,0x3b,0x25,0x9f,0xd7,0xde,0xec,0x6b,0xb0,0xf2,0xdf,0xed,0xf9,0x79,0x44,0x4a,
- 0xf3,0x9f,0x97,0xb3,0xe7,0xf8,0xbf,0x93,0x70,0x9d,0x8c,0x4f,0x94,0x08,0xa5,0xf2,
- 0xef,0x66,0x6f,0xf4,0xa7,0xeb,0x6f,0x64,0xf8,0x3f,0x4e,0xfe,0xfb,0x3d,0xec,0xe5,
- 0x36,0x4a,0x7c,0x9b,0xdf,0x8a,0xfa,0x6a,0x8f,0x3a,0xc3,0x2c,0xbd,0x9b,0xbd,0xce,
- 0xd3,0xe3,0xb3,0xf3,0xdf,0xb7,0x59,0xf3,0x29,0x16,0x9e,0xe9,0xd5,0x02,0x0b,0xa4,
- 0x5d,0xbd,0x56,0x44,0xcc,0xe6,0x73,0x66,0xf4,0x15,0xe5,0x7f,0x09,0xfe,0x73,0x18,
- 0xd7,0xcf,0xaf,0x88,0xed,0x43,0x65,0xee,0x4e,0xc5,0x1b,0x4c,0x84,0xa9,0x67,0xd9,
- 0x9b,0xe9,0xfa,0x21,0x99,0xfc,0x77,0xc9,0xd1,0xb7,0x62,0xd9,0x98,0xfe,0x8d,0x34,
- 0x51,0xf0,0x5d,0xf3,0xea,0xed,0xf2,0x80,0xed,0x1f,0x73,0xe7,0xbf,0xdb,0xf6,0xae,
- 0xfc,0xbb,0x70,0x0e,0x66,0x9b,0xf8,0xa1,0x51,0x98,0xa3,0xc1,0xf4,0x0d,0xe3,0xfe,
- 0x34,0x9d,0xff,0xde,0x7f,0x29,0xff,0x4f,0x08,0xf6,0x29,0xd5,0xa6,0x77,0xb3,0xbc,
- 0x53,0xd9,0x2f,0x55,0x9a,0x05,0x0f,0xb1,0x11,0xf5,0xe7,0x7f,0x29,0xff,0x1d,0x0f,
- 0x2e,0x96,0x44,0xe0,0xa6,0x87,0xc2,0xee,0x5a,0xa5,0xa9,0x6e,0x11,0x19,0x64,0xe3,
- 0xf2,0xdf,0x3d,0x8a,0xe3,0xff,0x21,0x45,0x54,0x41,0x6e,0xc6,0x01,0xd2,0x48,0xe6,
- 0x95,0x3a,0x1b,0xe0,0xe9,0xa9,0xcb,0xec,0xbf,0x58,0x0e,0xc5,0xbf,0x84,0xf7,0xef,
- 0xcb,0xc6,0x7e,0xcb,0x9a,0xa0,0x7d,0xd7,0xe7,0xf5,0xa3,0x7e,0x3e,0x0b,0x47,0x14,
- 0xf1,0xbc,0xa6,0xa3,0x7f,0xb6,0xa6,0xe3,0x5f,0xeb,0xf6,0xc8,0xb4,0x11,0x6b,0x30,
- 0xaf,0xfe,0x08,0x9f,0x17,0xf5,0xc9,0xe1,0x82,0x54,0xf9,0x88,0x6d,0xbf,0xde,0x75,
- 0xbe,0x47,0x8a,0x7f,0x9d,0xe3,0xb8,0xbf,0x50,0x71,0x93,0xf5,0x22,0x9f,0x3b,0x74,
- 0xc3,0x58,0xf1,0x59,0xf5,0xc5,0xf8,0x53,0xb4,0x6c,0xa6,0xc2,0x1b,0xd2,0x6e,0x23,
- 0x7f,0x5c,0xfc,0x4b,0xdd,0xcf,0x03,0x51,0x35,0x16,0x78,0x07,0x1e,0xe1,0x81,0x7e,
- 0x6f,0x37,0x3b,0x07,0xab,0xa9,0xec,0x4f,0x92,0x4d,0x55,0xda,0x21,0x90,0x8a,0x84,
- 0x3d,0x7a,0xc6,0xff,0x33,0x71,0x00,0xe7,0x67,0x3b,0xcf,0x03,0x5c,0x0f,0x1d,0x50,
- 0xd1,0xef,0x0d,0xb7,0xbf,0x28,0x3d,0x22,0x05,0xcd,0x35,0x61,0x56,0xe1,0xeb,0xb6,
- 0xfc,0x39,0x81,0xac,0xf8,0xd7,0x13,0x7c,0xaa,0xa9,0xc6,0xee,0x1a,0x32,0x7e,0x4e,
- 0x65,0x0f,0x11,0xff,0xd0,0xfe,0x8b,0xa6,0xb1,0x82,0x4f,0x6f,0x9f,0x9e,0x8a,0x10,
- 0xbb,0xda,0x9e,0x4f,0x28,0x1c,0x81,0x0f,0x79,0x75,0x4d,0xfe,0xce,0xf2,0x77,0x94,
- 0x17,0xb4,0x6a,0xf3,0x3e,0x9a,0x9f,0x63,0xf1,0xc9,0x34,0x2d,0xca,0xe5,0xa7,0x79,
- 0xed,0xf2,0xfc,0xb0,0x0c,0x59,0xf8,0xe7,0x1c,0x5c,0xbf,0x78,0x9d,0xb9,0xed,0x63,
- 0x9c,0xa8,0x99,0x02,0x08,0xe9,0x56,0x18,0xb4,0xf9,0x63,0xe9,0x0d,0xe5,0xf1,0x03,
- 0x17,0xd5,0xff,0xf9,0x23,0xaf,0xe2,0xbe,0xed,0xf2,0xf6,0x68,0x9a,0x4d,0x34,0x80,
- 0x6a,0x4d,0xd0,0xae,0x86,0xf4,0xd7,0xa0,0xea,0x96,0x82,0xa4,0x57,0xcb,0x8e,0x7f,
- 0x19,0xfa,0xa0,0xba,0xb6,0xf9,0x06,0xd8,0xd6,0x1a,0x30,0x5f,0x48,0xde,0x75,0x4e,
- 0x7b,0x85,0x96,0xc1,0x93,0xec,0x6d,0xd8,0xcf,0x81,0x22,0x5c,0x55,0x59,0xf8,0x67,
- 0x0b,0x24,0x36,0x04,0xf3,0x8b,0xf2,0xb5,0x36,0x58,0x42,0xd3,0x32,0xa0,0xad,0xb7,
- 0xfc,0x3f,0xcf,0x2a,0x9b,0xee,0x4a,0xe8,0xb8,0x5f,0xa8,0x71,0xd7,0x3f,0x94,0xf6,
- 0x9a,0xfa,0x96,0x60,0x3f,0xbb,0x17,0xfe,0x35,0x2e,0xac,0xff,0x1b,0xf0,0xfd,0xb8,
- 0x40,0x08,0xbf,0x31,0x1e,0x8f,0x97,0x45,0xd5,0x6f,0x33,0x35,0x53,0xff,0x07,0x7c,
- 0xf0,0x7b,0x08,0xf3,0x60,0x9e,0xfc,0x0b,0xe3,0x19,0xa3,0x66,0xd8,0x5f,0x23,0x8f,
- 0x68,0xbf,0x4a,0x7e,0x77,0xc4,0x7f,0x7d,0xc7,0x73,0x7c,0x70,0x47,0x38,0x50,0x59,
- 0x2b,0x17,0x65,0xf8,0x3f,0x13,0x9f,0x34,0x3e,0x86,0xab,0x3b,0xc9,0xff,0xa3,0xfd,
- 0x99,0xa2,0x5d,0xc9,0x09,0x67,0xf5,0x73,0x85,0xf7,0xd2,0x44,0x0d,0x29,0x67,0xe1,
- 0xe9,0x3e,0xef,0x2e,0x77,0xfd,0xc3,0x1b,0x46,0xd4,0x8f,0x38,0xa1,0x05,0xdc,0x74,
- 0x9c,0xe1,0xb5,0x29,0x5f,0xd2,0x1b,0xd2,0xd1,0x6c,0x51,0x3e,0xc2,0x71,0x76,0x28,
- 0x37,0xdc,0x88,0x47,0xa6,0x8f,0xab,0xff,0x83,0xdb,0x84,0x56,0xa1,0x3f,0x11,0x16,
- 0x8e,0xa2,0x3e,0x79,0xd0,0x82,0x3d,0x2f,0xc3,0x4a,0x78,0xc4,0x9c,0x3e,0xca,0x8a,
- 0x9c,0x7c,0xed,0x5e,0x11,0xff,0xc2,0x4d,0x6b,0x84,0xfd,0x46,0x7d,0xda,0x14,0xd5,
- 0x8d,0x0a,0xf8,0x0a,0x84,0x3d,0x5d,0xf8,0xe0,0xfa,0xaa,0x8e,0x6b,0xa2,0x08,0x84,
- 0xc2,0x2e,0xfc,0x83,0xda,0x5b,0xd3,0x7f,0xa5,0x4e,0xbe,0xab,0x0f,0x92,0x5c,0x27,
- 0xd8,0xec,0x53,0x1f,0xa1,0xfa,0x3f,0x49,0x34,0x5b,0x5d,0x8d,0xa1,0x14,0x1e,0x29,
- 0xca,0xaa,0xff,0x73,0x7e,0x70,0x36,0x0f,0xbd,0x43,0xf9,0x23,0xbc,0x96,0x1f,0x4e,
- 0x94,0x07,0xe1,0x50,0xac,0x9a,0xa3,0xbe,0x7d,0x4f,0x3b,0x9c,0xb8,0x36,0x11,0x4a,
- 0xc8,0xb5,0xd9,0xf5,0x7f,0x8c,0xa7,0xd8,0xcc,0x4e,0x39,0xd5,0x32,0x16,0x11,0xf5,
- 0x7f,0x8e,0x59,0x86,0xa9,0x93,0x84,0xb2,0x5a,0x65,0x7c,0xfd,0x1f,0x95,0xd8,0x3e,
- 0x9e,0x0d,0x54,0xfd,0x26,0x2e,0xd8,0xbf,0x88,0x7f,0xa4,0x6e,0x32,0x8b,0x28,0xf0,
- 0x2a,0xaa,0xef,0xd7,0x9e,0xa9,0xff,0xd3,0xb2,0x98,0xca,0xf8,0x2c,0x0f,0x6e,0xde,
- 0xfa,0x36,0xdf,0x67,0x54,0x1a,0x72,0xfc,0x8a,0x1c,0x4e,0x1e,0x21,0xef,0x06,0x36,
- 0x15,0xf6,0xc5,0x03,0xc4,0x60,0xd1,0xb3,0xf1,0x0f,0xaf,0x8c,0xe0,0xa2,0xb2,0xdc,
- 0x3e,0x54,0xaf,0x46,0x38,0x82,0xbc,0x1b,0x3c,0x15,0x7c,0x1f,0x6c,0x8d,0x7a,0xe2,
- 0x45,0x2b,0xc7,0xe3,0x1f,0xc1,0xf6,0xa1,0x7a,0x38,0x64,0xfd,0x15,0xde,0x26,0x60,
- 0x4f,0x2e,0x9e,0xd2,0xa3,0x91,0x48,0x9c,0xb1,0x42,0x7b,0x3d,0x10,0xff,0x07,0xf1,
- 0x21,0xa5,0xb9,0xa5,0xd4,0xd3,0x56,0x22,0x7c,0x99,0x31,0x88,0xb0,0xc7,0xbb,0x42,
- 0x0a,0x8a,0x40,0x58,0xc1,0x0a,0xf9,0x17,0xce,0xfe,0x8b,0xea,0xff,0xa0,0xda,0x69,
- 0xc9,0x1f,0x2c,0x3b,0x09,0x7f,0x82,0xca,0xc6,0x7c,0x4a,0xe3,0xfa,0x1d,0x9a,0x75,
- 0x84,0x0d,0x2f,0xc3,0x85,0xc2,0xab,0x89,0x08,0xfd,0xce,0x04,0x7b,0x3e,0x29,0x5f,
- 0xfe,0xdf,0x61,0x76,0x53,0xc1,0x60,0xf9,0x6d,0xf8,0x0f,0xbb,0x09,0x08,0xcd,0xd1,
- 0x09,0x18,0xac,0x23,0x44,0xf4,0x27,0x6d,0x17,0x11,0x69,0x9e,0x53,0x5c,0xf8,0x47,
- 0xe9,0x81,0xad,0x14,0xe4,0x42,0xfc,0x23,0x05,0xa0,0x40,0xe4,0x7f,0xa5,0x2b,0x02,
- 0x41,0xac,0x35,0x50,0x12,0xcc,0xaa,0x7f,0x88,0xf8,0x27,0x0d,0xea,0x16,0xe0,0x36,
- 0x4a,0x6f,0x8e,0x68,0x6b,0x94,0xc4,0xae,0x69,0xf4,0xe0,0xb8,0x91,0x5c,0x5f,0xa6,
- 0x1b,0x6a,0x51,0xbb,0x8b,0xff,0x93,0x43,0xfc,0x1f,0x54,0xe3,0x1b,0xe0,0x1d,0x14,
- 0x18,0xb9,0xd1,0x08,0x4f,0x16,0xa4,0x2b,0x0c,0xe8,0xc2,0xc3,0xf6,0x9c,0xa3,0x1f,
- 0xb6,0x4a,0x43,0x6a,0xef,0xb2,0x70,0xd4,0x1f,0x2f,0x5c,0xac,0x7c,0xb8,0xab,0xaa,
- 0x31,0x57,0xbc,0x56,0x69,0xb2,0xb1,0x90,0x0a,0x21,0x9e,0x32,0xab,0xa2,0xbe,0xb8,
- 0x94,0xe1,0x3f,0x53,0xfd,0x9f,0xeb,0xa0,0xfe,0x26,0xdf,0x26,0x86,0x0b,0xa3,0xd3,
- 0xae,0x87,0x60,0x88,0x34,0xb1,0x21,0x7c,0xf0,0xb3,0xcb,0x66,0x66,0xd5,0x3f,0x24,
- 0xfe,0xcf,0xb2,0x2a,0x58,0xc0,0x9b,0x75,0x18,0x2e,0x15,0x65,0x36,0x13,0xca,0x98,
- 0x22,0x60,0x67,0x54,0x19,0x8b,0x76,0x2b,0x3e,0xde,0xec,0xae,0x67,0x88,0x68,0xc7,
- 0xd8,0x96,0x4c,0xa4,0xe4,0xe5,0xea,0xfd,0x8d,0x88,0x7f,0x86,0xdb,0x4f,0x6f,0x7a,
- 0x42,0xa9,0x26,0x20,0x54,0xa3,0x3c,0x65,0x94,0x73,0xe1,0xff,0x71,0xc6,0x4f,0x5c,
- 0x00,0x0f,0x70,0xbd,0x75,0x87,0x1e,0xe8,0x44,0x8b,0x85,0x6a,0x67,0x47,0xd1,0x1a,
- 0xb4,0x50,0x6a,0x2f,0x65,0x30,0xa9,0xbb,0xa1,0x22,0x15,0x0c,0x17,0x1d,0x72,0xea,
- 0xc7,0x5a,0xfc,0xe7,0x84,0xa6,0x2e,0xda,0x7a,0x0f,0x74,0x82,0x08,0x7b,0x1d,0x85,
- 0xa7,0x93,0x0f,0x12,0xa2,0x98,0xa4,0xee,0x85,0x29,0xe6,0xa6,0xf1,0xf5,0x0f,0x3f,
- 0x16,0x4e,0x1e,0xb6,0x01,0x86,0xf8,0xbc,0xa1,0x09,0x4b,0x9a,0xff,0x05,0xfe,0x1c,
- 0xbf,0x8e,0xea,0xeb,0xde,0x01,0xff,0xa3,0xf3,0xda,0x68,0x68,0x79,0x47,0x76,0xfd,
- 0xc3,0xd7,0xe8,0x6b,0xd2,0xca,0xc5,0x6e,0xa2,0xcf,0x4f,0x66,0xee,0x4c,0x54,0x30,
- 0xa2,0xd1,0xd0,0x2f,0xa9,0x35,0xbc,0xbb,0x9b,0x33,0xf5,0x7f,0xd0,0x7e,0xb5,0xfe,
- 0x99,0x7f,0x43,0xf7,0xf5,0xcb,0x8f,0xc7,0xc7,0xe2,0xb3,0x8f,0x2d,0x78,0xb7,0xfc,
- 0x25,0x4a,0xdb,0x19,0xf2,0x0f,0xcb,0xd5,0xc6,0x9b,0x7c,0x36,0x42,0xa3,0xe2,0x41,
- 0xcd,0xc5,0xff,0x89,0xec,0x85,0x32,0x55,0x5d,0x84,0xa0,0x77,0x4f,0xa2,0xce,0x54,
- 0x67,0x06,0x06,0x61,0x9b,0x54,0x46,0xf9,0xc8,0x3f,0x50,0x3a,0x50,0x75,0x67,0xd5,
- 0xff,0xd1,0x60,0xb3,0xfa,0xb8,0xa6,0xc3,0x67,0x6e,0x6b,0x1f,0x84,0xc7,0x35,0xdc,
- 0xaf,0xdd,0x85,0xcb,0xf8,0x67,0x20,0xea,0xb5,0xd6,0xf1,0xef,0x97,0xfe,0x6b,0x8b,
- 0x77,0x59,0x91,0xa9,0xd9,0xef,0x8b,0xf8,0x3f,0xdd,0x86,0x5e,0x9a,0x57,0x8a,0x20,
- 0xa7,0xdb,0xa8,0x30,0x57,0xeb,0xf8,0xa1,0x91,0x3f,0xed,0xc7,0x80,0xfb,0xcd,0x1f,
- 0x41,0x68,0xb1,0xa8,0x7f,0x68,0x7f,0x2f,0xc3,0x68,0xef,0x70,0x5b,0x04,0x33,0x36,
- 0xcd,0x7e,0x0b,0xc6,0x5a,0xbe,0x61,0xce,0xe0,0xb8,0xcc,0xde,0xd4,0xe9,0x79,0xcb,
- 0x15,0x78,0x8d,0xd7,0xc7,0x11,0xba,0xb8,0xeb,0x1f,0x2e,0x45,0xa5,0xf1,0x24,0xe0,
- 0xb2,0xf9,0xbd,0x32,0xa6,0xe1,0xb6,0x94,0xcb,0x43,0xbe,0x3f,0x32,0x32,0x4c,0x13,
- 0xde,0x36,0x86,0x1b,0xab,0x5a,0xb3,0xf0,0x8f,0xa9,0x9d,0x85,0xf3,0xfd,0xe5,0xdc,
- 0x37,0x5a,0x3c,0xaa,0x9e,0x5f,0x83,0x66,0x6e,0x40,0x9e,0x83,0x86,0x6f,0xb7,0xe9,
- 0x3f,0x54,0x7c,0x12,0x5e,0xc4,0x4f,0xef,0xe6,0xd1,0xe2,0x4c,0xfd,0x9f,0x15,0x88,
- 0x7f,0xf6,0xb5,0x05,0x12,0xea,0x26,0xf6,0x5e,0xac,0x3b,0xb2,0xd5,0xf4,0x2a,0x57,
- 0x94,0xeb,0xbb,0xa1,0xda,0xbc,0x32,0xc6,0xfe,0x10,0x38,0xda,0xa6,0x47,0x29,0x9e,
- 0xd5,0xea,0xc6,0x3f,0xfb,0x60,0x7a,0x62,0xc9,0xa6,0xa6,0xb7,0xa0,0x47,0x0b,0x98,
- 0x32,0xc2,0x00,0xb8,0x5e,0x9a,0x4a,0x40,0xee,0x1d,0xad,0xcb,0xf6,0xff,0xb8,0xf8,
- 0xcf,0xca,0x6e,0x1e,0xe4,0x9e,0x2b,0x98,0x19,0x49,0xaa,0xba,0x79,0xe5,0x9c,0x76,
- 0x45,0xdd,0xcf,0x16,0x1f,0x9d,0x1f,0x0e,0x3c,0x5b,0xb1,0x0b,0xa2,0x46,0x2c,0xec,
- 0xce,0xff,0xf2,0x11,0xfe,0xa9,0xe5,0xbe,0x07,0x2e,0x4b,0xf1,0xd3,0x70,0x6d,0x9f,
- 0xf7,0xf1,0x4f,0xeb,0x70,0x41,0xab,0x1a,0xf4,0x76,0xca,0xef,0xf3,0x67,0xb5,0xaa,
- 0xdb,0x0a,0x4e,0xca,0x46,0x86,0xff,0x9c,0xff,0xa4,0x76,0x01,0x2d,0x46,0xfe,0x7a,
- 0x79,0xb8,0xef,0x63,0x68,0xe8,0xc7,0xd9,0x18,0x85,0x3f,0xeb,0xb5,0x7d,0xfe,0xa6,
- 0x8e,0xfe,0xb5,0x2f,0xea,0x4f,0x47,0x56,0x8d,0x3e,0x33,0xec,0xe4,0x6b,0x1c,0xc8,
- 0x79,0x4a,0xb9,0xd0,0xd6,0x90,0xf2,0x8e,0xc9,0xe7,0xd5,0x0b,0x73,0x66,0xeb,0xbe,
- 0x31,0xb9,0x1e,0x86,0xd5,0x6b,0xcd,0xd0,0x09,0xf9,0x6c,0x4c,0x14,0x82,0x1e,0x9f,
- 0xff,0xb5,0xdf,0xf2,0xff,0x1c,0xc7,0x0f,0xad,0x3a,0xaa,0x76,0x77,0x84,0xf4,0x18,
- 0x04,0x46,0xd5,0xb3,0x08,0x84,0xde,0x5c,0x50,0x8d,0xa7,0xe4,0x0c,0xff,0xa7,0x5f,
- 0x59,0x2b,0xed,0xb6,0xe3,0xcb,0xfb,0x8d,0x00,0x47,0x6b,0xee,0xc3,0x6d,0x66,0xa8,
- 0x2f,0x32,0x87,0xea,0x1f,0xde,0xa9,0x53,0x21,0x44,0x97,0xff,0x67,0xe2,0x48,0x26,
- 0x9e,0xf8,0x84,0x36,0xb5,0x5f,0x25,0x5a,0xf8,0x6a,0xd5,0x22,0x96,0xb3,0x07,0xe0,
- 0x2b,0x74,0xaa,0xc7,0x89,0xdf,0x35,0x6a,0x2e,0xff,0xc3,0x29,0x34,0x73,0xd3,0x29,
- 0x5e,0x39,0x6c,0x12,0x63,0x47,0x1a,0xd1,0xfe,0x28,0x10,0xa3,0x94,0xc9,0xc7,0x3c,
- 0x06,0x76,0x3d,0x84,0xf2,0xb3,0xda,0xa9,0x18,0xf9,0xbb,0x10,0x1f,0x8e,0xed,0x10,
- 0x47,0x46,0xd2,0x81,0x51,0xb9,0xe7,0x22,0xfe,0x8f,0x75,0x7d,0xe3,0x71,0x6e,0xf9,
- 0x63,0x8d,0x5a,0xbc,0xfe,0x04,0x9f,0xf2,0x1a,0x3c,0x4e,0xa7,0x32,0xfe,0xcc,0xa3,
- 0x8a,0x5d,0xff,0x19,0xc7,0xef,0x52,0x03,0x69,0x47,0x16,0xbb,0xf6,0x58,0xfe,0x68,
- 0xd3,0x93,0xc4,0x08,0xa2,0x53,0xdd,0xf6,0xeb,0x42,0xbc,0xe4,0xf8,0x7f,0x10,0x06,
- 0x73,0x1d,0xbc,0xf4,0xbc,0x4f,0x98,0xc1,0xb7,0x6a,0x08,0x08,0xed,0x16,0xfb,0xaf,
- 0xdc,0x0c,0xff,0xe7,0x04,0xe1,0x1f,0x3e,0x23,0x75,0xe5,0xb7,0xd9,0x4f,0xf9,0x63,
- 0x7c,0x4b,0xf4,0xca,0xe5,0x6c,0x72,0xc9,0xde,0xad,0xd3,0x86,0xf3,0x6a,0xd8,0x1b,
- 0xf1,0x87,0x85,0x3f,0xa4,0x89,0x3b,0xe3,0x97,0xa4,0xeb,0x1f,0xfa,0x6b,0xd8,0x61,
- 0xbe,0x0b,0x92,0x80,0x77,0xbb,0x00,0x4e,0xec,0x08,0xbe,0xa7,0x86,0x9b,0x0e,0xf3,
- 0x6f,0x40,0xb8,0xcf,0x1f,0x96,0x5c,0xfc,0x9f,0xab,0x32,0xfe,0x31,0xe3,0x1c,0xbf,
- 0xde,0xf0,0xdb,0x69,0x92,0xfe,0xd1,0x07,0x9e,0x34,0xde,0xb4,0x02,0x85,0x19,0xfe,
- 0x4f,0xb6,0xff,0x47,0xb7,0xf1,0x39,0xab,0xef,0xf5,0x3d,0x8e,0xeb,0xf3,0x8f,0x16,
- 0x3f,0xfc,0xe2,0xfa,0x3f,0x7e,0x91,0xff,0xa5,0x5a,0x44,0x20,0x78,0x2c,0x77,0xde,
- 0x98,0xfa,0x8d,0xc0,0xeb,0xe6,0x2a,0x51,0x08,0x51,0xde,0xe0,0x8c,0x6f,0x74,0xd5,
- 0x3f,0x44,0x61,0xca,0x56,0x21,0x3c,0x6e,0xce,0xa0,0x8c,0xda,0x37,0x22,0x0f,0xc7,
- 0xcb,0xc6,0xc7,0xbf,0xd6,0xda,0x7c,0xfb,0x01,0xd8,0x6d,0x54,0x1c,0xf5,0x12,0xb1,
- 0x6a,0xb7,0x12,0xb4,0xf3,0x4f,0x85,0x63,0x3f,0x73,0x7d,0x57,0xfd,0xe7,0x61,0x38,
- 0x9f,0x98,0x1b,0xb7,0x04,0xdc,0x38,0xcf,0x48,0x34,0x0f,0xe7,0xbd,0xc7,0x44,0xfe,
- 0xd7,0x09,0xc7,0x9e,0x66,0xf9,0x7f,0x46,0x23,0x4f,0x64,0x1c,0x41,0x0b,0x79,0x73,
- 0x4a,0x19,0xb5,0xfd,0x3f,0xf6,0xf5,0xdd,0xfe,0x1f,0x41,0x8b,0x2d,0x10,0x6e,0x01,
- 0x25,0x1c,0x25,0xc3,0x27,0xfd,0x07,0xfe,0x1f,0xc2,0x33,0x86,0x20,0x02,0x2d,0xc6,
- 0x8d,0x61,0xa0,0x99,0x02,0x5b,0xf2,0x6a,0xcb,0x23,0x14,0xcd,0xd4,0x7f,0x56,0x32,
- 0xf5,0x7f,0x54,0x51,0xa6,0x58,0x04,0x6e,0xf4,0xad,0x2d,0x20,0xfc,0x3f,0x10,0xc8,
- 0xce,0x7f,0x57,0x21,0xe3,0xff,0x91,0x10,0xed,0x90,0xd0,0x02,0xeb,0x75,0x3d,0x12,
- 0x2c,0x6a,0xea,0x8b,0xb7,0x95,0x09,0xa8,0xd0,0xe4,0xf8,0x33,0xc7,0x4a,0xa3,0x22,
- 0xdf,0xca,0x4b,0x8f,0x79,0xa2,0x55,0x94,0xfd,0x29,0x33,0xfa,0x51,0xa8,0xe4,0xcd,
- 0xbd,0x2d,0xbc,0x55,0x78,0x84,0x3e,0x76,0xfc,0x87,0x19,0xff,0x8f,0x70,0xfb,0x3c,
- 0x9d,0x16,0x0a,0xeb,0x44,0x45,0x20,0x9b,0xff,0xfc,0xd6,0x45,0xf9,0x5f,0x08,0x7b,
- 0x2a,0x94,0x7f,0xe6,0x14,0x36,0x92,0x70,0x7c,0xb4,0x21,0x42,0xf9,0xe3,0x91,0x57,
- 0x82,0xd5,0x16,0x3f,0x3c,0x1b,0xff,0xd0,0xfd,0x78,0x10,0x0f,0x8c,0x6e,0xe5,0x04,
- 0x7b,0x12,0x3d,0x7a,0x65,0x49,0x84,0xc3,0x31,0x83,0x47,0xad,0xfc,0xaf,0x0c,0x1e,
- 0xce,0xe9,0xb3,0x9f,0x57,0x81,0xf5,0xaa,0x2e,0x0a,0x21,0x2a,0xbb,0xee,0x5c,0x6a,
- 0x4c,0x2b,0x61,0x7d,0xed,0x6d,0x1e,0xf1,0xbc,0xaf,0x3a,0xfa,0x76,0x93,0x5d,0xff,
- 0x19,0x61,0x8f,0xf6,0x08,0x0b,0x44,0x2c,0xfe,0x15,0x17,0xc0,0x72,0x88,0xa5,0xe7,
- 0xf3,0x78,0x96,0xff,0xc7,0xa9,0xff,0xfc,0x0a,0x74,0xb7,0x7a,0xe9,0xfe,0xf7,0xe9,
- 0xf5,0xc6,0x7d,0xf1,0xe2,0x21,0xe5,0x15,0x78,0x3c,0x3b,0xff,0x3d,0x93,0xff,0x25,
- 0xb2,0xe3,0x6d,0xfe,0x8f,0x42,0xb4,0x1f,0xc4,0x4b,0x1f,0x8e,0xcf,0x7f,0xcf,0xe2,
- 0xff,0x8c,0xfa,0xaa,0x34,0x02,0xa2,0xca,0x98,0x45,0xfb,0xd1,0x45,0x21,0x6e,0xe2,
- 0xdb,0x67,0xc6,0xdb,0xf5,0x9f,0x75,0x36,0x0c,0x4f,0xc1,0x56,0x44,0x3b,0xc5,0xc3,
- 0x50,0x9f,0xea,0x20,0xda,0xcf,0x0e,0x78,0x14,0xaa,0x45,0xfe,0xbb,0xf3,0x7e,0x83,
- 0x9d,0xbe,0x8c,0xfe,0xd9,0x6d,0x5a,0x7c,0x15,0xe8,0x8e,0x56,0x0c,0xa9,0x61,0xe6,
- 0xb3,0x19,0x9b,0x19,0xbe,0x50,0x19,0x4c,0xca,0xf8,0x6f,0x1f,0x33,0xca,0x53,0xea,
- 0x3d,0x6c,0x33,0xdf,0xcb,0x2b,0xf8,0x4d,0x35,0x28,0x3c,0xac,0x4d,0xb1,0xf2,0xdf,
- 0x9d,0xeb,0xc7,0x26,0x6b,0x7f,0xe6,0xa2,0xda,0xe1,0x1b,0x70,0x81,0xef,0x4a,0x85,
- 0xa8,0x6c,0xe9,0x89,0xf6,0x6b,0x13,0xbe,0xe5,0x72,0x7d,0xc5,0xf3,0xb1,0xbb,0xe9,
- 0xd4,0x01,0xfb,0xf6,0x41,0x9d,0xe4,0xf2,0xff,0x8c,0xa9,0x75,0xbd,0xfe,0x5d,0x1d,
- 0x23,0xfc,0x0c,0x88,0x32,0xc8,0xef,0x9b,0x7f,0x8c,0x8a,0x53,0x87,0x9c,0xf8,0x94,
- 0x69,0xd7,0xff,0x19,0x93,0x8f,0xa3,0xbe,0xda,0x9d,0x92,0x7b,0xe4,0x7a,0xfd,0x69,
- 0x5e,0xff,0x65,0x85,0x0c,0xd9,0x91,0xce,0xd9,0x43,0x54,0xff,0xc7,0x99,0x9f,0x47,
- 0x0b,0x37,0x1b,0x7b,0xb5,0x19,0x54,0xdd,0xe8,0x30,0xec,0xd5,0xb6,0x98,0xde,0x6f,
- 0xcb,0xb7,0xc3,0x0f,0xcb,0x42,0xa1,0xd0,0x32,0x54,0x8c,0xbf,0x05,0x51,0xc8,0x31,
- 0x13,0xff,0xda,0x24,0xf2,0xbf,0xac,0xe7,0x45,0x7d,0x3b,0x85,0x1c,0x41,0x93,0xe0,
- 0x31,0x69,0x86,0xba,0x9a,0x0a,0x77,0xfc,0x10,0xca,0x7a,0xaf,0x5c,0xe6,0xca,0xef,
- 0xbb,0x2b,0x53,0x7f,0x95,0x84,0xed,0xa4,0xff,0x17,0x48,0x0f,0x44,0x43,0xa0,0x86,
- 0x8b,0x96,0x2a,0x3f,0xb6,0xea,0x3f,0x67,0xf2,0xbf,0x4e,0x97,0xd8,0xfa,0x13,0xd5,
- 0xd4,0x19,0xa3,0x7a,0x10,0xb5,0x6b,0x1d,0x69,0x24,0x23,0x9f,0xe2,0x05,0x6f,0x5a,
- 0x1e,0x8f,0xb7,0xb2,0xf2,0xdf,0xad,0xf1,0x13,0x46,0xd4,0x53,0x15,0x55,0x07,0xd2,
- 0xc4,0x57,0x5c,0x21,0x61,0x77,0xfd,0x43,0x7b,0x7c,0xaf,0x96,0xd1,0xe7,0x68,0xf8,
- 0x44,0xd9,0xe7,0x3a,0x38,0xaf,0xcf,0x0b,0xfb,0xe8,0xfa,0x47,0xac,0x23,0x19,0xfb,
- 0xd8,0xdb,0xe9,0xe2,0xf3,0x24,0x2d,0xb7,0x03,0x79,0x00,0x2a,0x25,0x35,0x29,0xef,
- 0x64,0x5d,0x08,0x84,0x28,0xfe,0xe2,0xbc,0x5f,0x97,0xff,0x67,0x04,0xf6,0x31,0x51,
- 0xa6,0x98,0x8e,0x90,0x5b,0x23,0x40,0x89,0xf3,0x01,0xcb,0xff,0x63,0xff,0x5c,0xfe,
- 0x9f,0x01,0xbe,0x1b,0xf7,0xfb,0x54,0xa8,0x0d,0xb6,0x19,0x21,0x75,0x89,0x15,0x28,
- 0x14,0xfa,0x39,0x83,0x7f,0xd2,0xf9,0x5f,0xc2,0x9e,0x1a,0x7f,0xc2,0xab,0xa1,0xe1,
- 0xa8,0x23,0xfb,0xab,0xe0,0xfd,0x4f,0x82,0xe7,0xad,0xf9,0x71,0xd5,0x7f,0xfe,0x89,
- 0xe5,0xff,0x99,0x30,0xda,0x71,0xd6,0x14,0xfe,0x8d,0x93,0x32,0x55,0x00,0x98,0x57,
- 0x3a,0x03,0x0d,0x7d,0x22,0x3d,0x15,0x99,0xfa,0x84,0xe4,0xff,0xf9,0x13,0x9f,0xbd,
- 0x18,0xaf,0x16,0xe2,0x17,0xda,0x71,0x21,0xb5,0xcb,0xe7,0x8d,0x23,0xb8,0x91,0xf7,
- 0x9f,0x28,0xaf,0x84,0xd7,0x61,0x76,0x2a,0xff,0xa2,0xfc,0xaf,0x0a,0xbd,0x1f,0x1e,
- 0xff,0x7c,0xa5,0x48,0x04,0xf3,0xae,0x2d,0xdf,0xa9,0xfe,0x9c,0xfa,0x5f,0x7c,0x58,
- 0xb4,0x13,0xee,0x97,0x02,0x29,0xd5,0xcd,0xff,0xe9,0xcf,0x19,0x50,0x76,0x79,0x02,
- 0x91,0xbc,0x39,0xed,0x3e,0x43,0x3c,0xb8,0xc4,0x06,0xda,0xba,0xac,0x65,0xb0,0x16,
- 0xe1,0xec,0x56,0xaa,0xf8,0x97,0xa9,0xf7,0x42,0xfe,0x9f,0x5d,0x78,0xb5,0x3c,0x6b,
- 0x1a,0x11,0x46,0xae,0x14,0xc4,0x60,0x31,0x8d,0xff,0x46,0xfa,0x3c,0xa6,0xba,0xe3,
- 0x5f,0x06,0xad,0x1f,0x33,0x99,0x9a,0x91,0xf4,0x54,0x46,0xd2,0x89,0x93,0x23,0xca,
- 0x0b,0xc4,0xff,0x09,0xcb,0xab,0x48,0x3f,0xbc,0x84,0x0b,0xc9,0x74,0xf8,0x3f,0x88,
- 0x7f,0xe0,0x02,0x6b,0xa0,0x68,0xe9,0x88,0x26,0x26,0xca,0x94,0xed,0x15,0xd2,0x71,
- 0x12,0x4e,0x4b,0x33,0x53,0xde,0x71,0xfe,0x1f,0xfc,0x1e,0xab,0xcd,0x82,0x5d,0xa2,
- 0xbe,0x1f,0x5e,0xbf,0x5d,0xb6,0x57,0xec,0x84,0x0a,0x30,0x75,0xc1,0x88,0xfe,0x95,
- 0x63,0xbf,0x04,0xfe,0x39,0x1a,0xe8,0x57,0xcf,0x05,0x66,0x70,0xe1,0x2d,0xec,0x64,
- 0xe9,0x15,0x72,0x52,0x5e,0xcc,0xd6,0x48,0xa2,0x7e,0x54,0x26,0xff,0x6b,0x18,0xf1,
- 0xcf,0x2e,0xa8,0x38,0x81,0x07,0x6f,0x26,0x76,0xca,0x90,0x17,0x9a,0x46,0xa4,0xfd,
- 0x34,0x3f,0x75,0x90,0xdf,0x96,0xe8,0x0c,0x70,0xd5,0x1d,0xff,0xfa,0x50,0x9a,0x0c,
- 0x4f,0xc7,0xa9,0xc9,0x05,0x9b,0x0c,0x0f,0x27,0x66,0x1c,0xf3,0x1e,0x24,0x62,0x5e,
- 0xbb,0x40,0x08,0x93,0x0f,0x3d,0xc4,0xb7,0x8c,0xaa,0xcb,0xe1,0x6c,0x86,0xff,0x23,
- 0xf0,0xcf,0x9c,0xc1,0x50,0x8d,0xf7,0x46,0xf3,0x99,0x44,0x88,0x68,0x75,0x03,0xf0,
- 0x91,0x56,0x37,0xe2,0x4f,0xb6,0x57,0xf2,0x54,0x5e,0xb8,0x33,0x14,0x96,0x5f,0x1d,
- 0x5f,0xff,0x90,0xd8,0x3e,0x27,0x95,0x0b,0x94,0x5f,0x39,0xab,0xf9,0x49,0x0b,0x16,
- 0x26,0xbd,0x67,0x23,0xaf,0xc0,0x3c,0x7e,0x51,0xfd,0xe7,0xd3,0xbc,0xda,0xf4,0xed,
- 0xb2,0xab,0x41,0xf2,0xb4,0xb0,0xf0,0xb1,0x67,0x46,0xa4,0xfe,0xc5,0x55,0x7c,0x9d,
- 0x9b,0xff,0x63,0xe5,0x7f,0x95,0xf1,0xb5,0xa3,0x1e,0x0a,0x7b,0x5d,0x87,0xdb,0x28,
- 0x39,0xed,0x51,0xbf,0x47,0xde,0x0c,0x0f,0xe5,0x95,0x11,0xff,0xe7,0xb4,0x83,0xaf,
- 0x28,0xff,0xeb,0xf1,0xf6,0x2f,0x11,0xa9,0xfb,0x32,0xfb,0x31,0xdf,0xb0,0x10,0xd1,
- 0xb7,0xd9,0x79,0xe8,0x34,0xa7,0x24,0x05,0xfe,0xb1,0x7f,0x56,0xfe,0x57,0x62,0x8f,
- 0x1a,0xb6,0xfa,0x89,0x10,0xba,0xb6,0x10,0x66,0x57,0x92,0xfd,0x31,0xb8,0x95,0x57,
- 0xa4,0xb2,0xea,0x6f,0x08,0xff,0x4f,0x74,0x16,0x0f,0x25,0x58,0xd0,0x0a,0x84,0xa5,
- 0x64,0xa7,0x22,0xd0,0x19,0xfe,0xdc,0x33,0x7b,0xf7,0xac,0xbb,0x28,0xfe,0xa5,0x52,
- 0xb6,0x57,0x39,0x75,0xbb,0x48,0x97,0xfd,0xb1,0xf9,0xa8,0x30,0x16,0xa9,0xbd,0x64,
- 0xfc,0xab,0x89,0xca,0x3e,0x53,0xe0,0x63,0xf1,0xe4,0xc2,0x74,0x7c,0x04,0xf1,0xc0,
- 0x62,0x78,0x97,0x93,0x7f,0x60,0x3c,0xfe,0x31,0x28,0xed,0xc8,0x33,0x05,0x0d,0xf1,
- 0xd7,0xef,0x54,0xe3,0x4d,0x15,0x92,0x65,0x91,0xe5,0xa9,0xc6,0xdf,0x41,0x70,0x99,
- 0x2f,0xce,0x52,0x9a,0xdb,0xff,0xb3,0x5f,0xad,0x34,0x82,0x08,0x7b,0x7c,0x8f,0x40,
- 0x41,0xab,0x27,0x9e,0xbb,0x5d,0xdb,0x07,0x53,0xc9,0x4c,0x2f,0x86,0x3c,0xed,0xae,
- 0x45,0x6a,0x56,0xfc,0x0b,0x9c,0xfc,0x2f,0x85,0xef,0x62,0x95,0x46,0xa4,0x48,0x38,
- 0xa2,0x43,0x8d,0x5e,0x12,0x7e,0xa4,0x07,0x8d,0x9a,0x2c,0xfe,0x8f,0x4f,0xf0,0x9f,
- 0x29,0xff,0x2b,0x48,0x40,0xa8,0xc4,0x93,0x90,0xb7,0x44,0x7a,0xa0,0x9a,0x3a,0x62,
- 0xdc,0xd9,0xf4,0x56,0xab,0x30,0xc4,0xe7,0xb3,0xfd,0x3f,0x6c,0x1e,0x3e,0xdd,0xa7,
- 0x4e,0x1a,0x94,0x18,0xe5,0xbf,0xc5,0x2e,0x6b,0xbc,0x1e,0xdf,0xef,0xfb,0x5a,0x83,
- 0x91,0x8b,0xf8,0xc7,0xa9,0x9f,0x43,0xf8,0xe7,0x1c,0x63,0x86,0xef,0x07,0xf2,0x49,
- 0xf5,0x20,0x05,0xee,0x07,0x3b,0x1e,0x4c,0x23,0xa2,0x8e,0x39,0xc6,0x8b,0x25,0xb3,
- 0x44,0xfd,0x43,0x67,0x3f,0x65,0xe1,0x1f,0x1d,0xd4,0xe7,0xd8,0x31,0xf5,0xa8,0x54,
- 0xa9,0x7a,0x3b,0x03,0x09,0x2e,0x10,0x11,0x15,0x82,0x5e,0x73,0xcb,0xc5,0xf1,0xaf,
- 0xbc,0x5d,0xc4,0xe7,0xb9,0x2d,0xf0,0x2c,0xb4,0x41,0xa8,0x89,0xd2,0xfc,0x2d,0x44,
- 0x14,0x6e,0xaf,0xe0,0x6d,0x65,0x7a,0xf4,0xa2,0xfc,0xf7,0x5d,0xed,0xdb,0x0c,0x75,
- 0x30,0x30,0x82,0xbb,0xf5,0x4a,0xe3,0xc7,0xf1,0xad,0x36,0x22,0xf2,0x54,0xb0,0x36,
- 0x25,0x10,0xb9,0x28,0xff,0xfd,0x1c,0x9f,0x6d,0x04,0xe9,0x26,0x0f,0xd2,0x6d,0x6b,
- 0xcd,0x0e,0xc2,0x99,0x02,0x07,0x4d,0x11,0x11,0x73,0xc7,0xbf,0x04,0x3b,0xba,0x69,
- 0x61,0x5c,0xee,0xe3,0xa7,0xa0,0xb2,0xd9,0xbf,0x41,0xb6,0x32,0xc8,0xd2,0xfd,0x2f,
- 0xc4,0xa9,0xf1,0xf1,0xaf,0x06,0xf0,0x99,0xb2,0xae,0xa6,0x13,0xc1,0x74,0x6d,0x2c,
- 0x97,0xc2,0x5e,0xcd,0xba,0xde,0x2f,0x80,0x10,0x3b,0x90,0x15,0xff,0x7a,0xa2,0x34,
- 0x94,0x54,0x87,0xd9,0x75,0x54,0x08,0x31,0xa1,0xbe,0xcb,0x76,0x68,0x02,0x11,0xa5,
- 0x58,0x29,0xdc,0xaf,0x6c,0x5b,0x9f,0xc5,0xff,0xa1,0xfc,0xf7,0x6e,0x33,0x14,0x56,
- 0x55,0xa6,0x72,0x91,0xb8,0x34,0x8f,0xf2,0x53,0x72,0x51,0x51,0x27,0x98,0x9f,0xf2,
- 0x2f,0x46,0xf3,0xdc,0xfc,0x9f,0x32,0x09,0xad,0xbf,0x3e,0xe3,0x80,0x5a,0xd3,0x3e,
- 0x89,0x80,0xc1,0x68,0x9e,0xce,0x10,0x51,0x88,0x8e,0x36,0xec,0x72,0x58,0x05,0xf2,
- 0x68,0x5e,0x56,0xfd,0x43,0xca,0xff,0x32,0xe7,0x05,0x43,0x11,0xef,0x64,0xf8,0x9f,
- 0x6d,0x0d,0x89,0x19,0x11,0x9b,0xff,0xa3,0xca,0xf5,0xec,0x08,0xbf,0x3b,0x95,0x9f,
- 0xc5,0xff,0xb9,0x6a,0x27,0x8c,0x71,0x51,0xe4,0x70,0x44,0xd9,0x8f,0x0f,0x5e,0x80,
- 0xfa,0x5c,0x4f,0x9b,0xf5,0x61,0x46,0x42,0x65,0xf2,0x73,0xd9,0xf5,0x0f,0xd1,0x7e,
- 0xbd,0xe5,0x7f,0x44,0xbe,0x09,0x3e,0x88,0x37,0x6c,0xf7,0x7d,0x46,0x7e,0x0a,0x05,
- 0xbc,0xc2,0xc1,0xbf,0x29,0x37,0x8e,0xac,0x6f,0x18,0xf2,0xf7,0x14,0xc7,0x33,0xf1,
- 0x26,0xc4,0x3f,0x8f,0x41,0x99,0xe6,0x5d,0xc4,0x5e,0xe5,0x1d,0xda,0x8c,0x84,0x7a,
- 0x13,0xde,0xff,0xaa,0xc4,0x8c,0x61,0x3c,0xb2,0x81,0x34,0x2a,0x69,0x98,0x0c,0xfe,
- 0x89,0xc3,0xe6,0xc8,0x1e,0x98,0x72,0xc0,0xfb,0x55,0xf6,0xba,0xf1,0x70,0xd1,0x8c,
- 0x98,0x6a,0x4c,0x7d,0xdd,0xaa,0xa0,0x68,0xb0,0x52,0xbe,0x2a,0x3c,0xe3,0xa8,0x77,
- 0x59,0x53,0x67,0x16,0xff,0x30,0xc9,0x2b,0x74,0x5c,0x54,0xfd,0x20,0x43,0x08,0x82,
- 0x60,0xf3,0xc9,0x35,0x16,0xd3,0xb7,0xb5,0x2c,0xed,0x1b,0x57,0xff,0x70,0x27,0x9c,
- 0xe0,0xd5,0x29,0x7f,0xa2,0x58,0xf0,0x37,0xc8,0xdb,0x79,0xd6,0x86,0x31,0xba,0xfa,
- 0x0c,0xab,0x4b,0xa2,0xf0,0xa8,0xb3,0x7e,0xa8,0xff,0xc5,0xa9,0x30,0x2a,0x99,0xf8,
- 0xec,0xc5,0x39,0x69,0x7d,0x2b,0xea,0xd1,0x99,0x57,0x27,0xe5,0x28,0x9c,0x0e,0xd7,
- 0x0f,0x8a,0xd0,0x98,0x3d,0x3f,0x6d,0x1a,0xe5,0x83,0xcf,0x3e,0xb0,0x20,0x45,0x66,
- 0x4e,0x9a,0xdb,0xf9,0xd9,0x43,0x56,0x3e,0x14,0xf1,0x57,0x4f,0xb0,0x37,0x61,0xb6,
- 0xe1,0x1b,0x75,0xf5,0x67,0x31,0x11,0xff,0xf4,0x40,0x20,0x1c,0xdc,0x04,0x53,0xd1,
- 0x6c,0x51,0x35,0xad,0xa6,0x11,0xdc,0xbf,0x57,0x9a,0x79,0xbb,0x3a,0x52,0xed,0xab,
- 0x73,0xab,0x29,0x7e,0xf1,0xae,0x9b,0xff,0xac,0xee,0x03,0xbd,0x4f,0x2d,0xc3,0x4f,
- 0xf0,0xe7,0x52,0x25,0x97,0x78,0xd1,0x48,0xe1,0x8f,0xa9,0xec,0x4c,0x5c,0x37,0x79,
- 0x17,0x0f,0x8c,0x5e,0x54,0xff,0x10,0xc7,0x43,0xac,0x64,0x0d,0xc0,0x6e,0x2d,0xc4,
- 0xbd,0xb9,0x04,0x14,0xcb,0x7c,0x7d,0x79,0x1a,0x33,0xf9,0x9a,0xed,0x53,0x0f,0x40,
- 0x15,0x3b,0xb0,0x02,0xec,0xeb,0xe7,0x2d,0xa5,0x6a,0xab,0xa6,0x6f,0xbb,0xbc,0xd3,
- 0x3c,0x03,0x95,0xb1,0xfb,0x56,0xb2,0xd7,0xb5,0xd7,0x82,0xf5,0xfd,0x9f,0xde,0x20,
- 0x8f,0xa6,0x5e,0x08,0x56,0x1d,0xf4,0x75,0xcb,0xa9,0x4c,0xfd,0xe7,0xfc,0xb3,0x25,
- 0x4f,0x4a,0x0d,0x80,0xfb,0xa9,0x0f,0xf9,0xd3,0x7a,0x9d,0xe2,0xef,0x10,0xf3,0x39,
- 0x73,0x00,0xf5,0x4f,0x9c,0x8b,0x88,0xea,0x87,0xf2,0xf0,0xc5,0xf5,0x7f,0x10,0x3f,
- 0xdb,0xc2,0x79,0x38,0xb7,0xbe,0x3a,0x71,0xff,0x51,0x99,0x4e,0xcd,0x4b,0x65,0xf5,
- 0xff,0x32,0xe3,0x2e,0xff,0xcf,0x0b,0xb6,0xb0,0x4f,0x0f,0x24,0xbc,0x9b,0xd8,0xd2,
- 0x18,0x9d,0xf2,0xb8,0xfb,0x5f,0xf4,0x83,0xc3,0x87,0x1f,0x50,0x76,0x83,0x8a,0xc2,
- 0x8d,0x03,0x94,0x6f,0x02,0x54,0x11,0x48,0x10,0x53,0x4b,0xb3,0xfb,0x7f,0x8d,0xd8,
- 0xfd,0xbf,0x32,0x8e,0x20,0x0a,0x2c,0xea,0x56,0x45,0x6e,0x9c,0x58,0x4f,0x92,0x65,
- 0xea,0xf3,0x48,0x13,0x45,0xd9,0xe7,0xb4,0xff,0xc1,0x4e,0x04,0x3b,0xa5,0x54,0xe9,
- 0x94,0xd1,0x46,0xa5,0x12,0x4c,0xd1,0x91,0xca,0x7e,0xbf,0x76,0xfd,0x67,0x77,0xf5,
- 0x6f,0xb1,0x1e,0x0c,0xff,0x87,0x1d,0xdf,0x4d,0x03,0xa1,0xe2,0x31,0xa7,0x1e,0x42,
- 0x8b,0x66,0xad,0xae,0x02,0x57,0x75,0x71,0xbc,0xbe,0x5e,0xaf,0xe5,0xa7,0x8f,0x1c,
- 0x08,0xb9,0xf3,0xbf,0x8e,0x3a,0x78,0x38,0x30,0xa2,0x66,0x88,0xf1,0xb1,0x4a,0xc4,
- 0xf3,0x24,0xdc,0x5d,0x79,0xd4,0x93,0x74,0xe5,0x7f,0xa5,0xdc,0xfe,0x1f,0xcb,0x71,
- 0x91,0x3b,0x80,0x16,0x70,0x29,0x17,0x1b,0xb1,0xdd,0x5c,0x04,0x8e,0x33,0xfe,0x1f,
- 0x3b,0xff,0x3d,0x03,0x03,0x50,0x50,0x1f,0x6b,0x9b,0xb1,0x2d,0x6f,0x79,0xe0,0x0d,
- 0xd5,0x3a,0x52,0xe4,0xc2,0x03,0x2a,0xc5,0xbf,0xea,0xa8,0x7e,0xe3,0x61,0x8b,0x08,
- 0x14,0x46,0xfc,0xf3,0x21,0xd4,0x25,0x7d,0xe1,0x0e,0x04,0x42,0x85,0x75,0xe6,0x8c,
- 0xac,0xfa,0x3f,0x57,0x51,0x91,0x67,0x2b,0x2c,0x68,0xb8,0x12,0x07,0x08,0xf6,0xb0,
- 0x74,0x29,0xf5,0x4b,0xf9,0x7f,0xae,0xb6,0xe7,0x47,0x4c,0xd4,0x29,0xa8,0xd3,0xd5,
- 0x9a,0x2b,0x43,0xea,0x77,0xa4,0x7a,0xca,0x20,0xfb,0x0b,0xfc,0x1f,0x47,0xf8,0x83,
- 0xf4,0x35,0xc8,0xb7,0xf6,0x53,0x33,0xcc,0x3c,0x77,0xfe,0x57,0xc6,0xff,0xd3,0x64,
- 0x3d,0x2f,0xb5,0xbd,0x80,0xc7,0xf8,0xcc,0x70,0x84,0x10,0xe0,0xde,0xf1,0xfc,0xe7,
- 0x4c,0xfd,0x67,0xe6,0xda,0x88,0x6d,0xe3,0x21,0x2d,0xaf,0x86,0x89,0x8a,0xd0,0x34,
- 0x9f,0x97,0xec,0x7f,0x31,0x2c,0x12,0xe1,0x45,0x21,0xa0,0xd3,0xfc,0x7b,0x49,0x5f,
- 0xa2,0x23,0x08,0x27,0xec,0xfa,0xcf,0xce,0xf5,0x1d,0xff,0x4f,0xb1,0x9b,0x08,0xa4,
- 0xd5,0x33,0xd1,0x8f,0xe9,0x28,0xe0,0xc2,0xc8,0xce,0xff,0x1a,0xb2,0xf9,0x1e,0x56,
- 0xe2,0x33,0x0a,0x6f,0x93,0x05,0xbc,0xd3,0xb2,0x77,0xbc,0xd6,0xb8,0x18,0xff,0x58,
- 0x45,0xf6,0x9c,0xea,0x85,0xef,0x10,0x22,0x5a,0x4c,0x1e,0x1e,0xe5,0x3a,0xae,0x2f,
- 0xf2,0x5c,0x5c,0xff,0x27,0xbb,0xdb,0xc5,0x90,0x9d,0x26,0x3f,0x84,0x78,0x66,0xba,
- 0x15,0xaf,0xb1,0x7f,0x6e,0xfe,0x8f,0x10,0xae,0xb4,0x05,0x87,0x21,0x43,0xf9,0x5f,
- 0xce,0xf8,0x0c,0xff,0x47,0x76,0x39,0x22,0x44,0xdb,0x8b,0x04,0xd5,0x3f,0x94,0x6a,
- 0xc9,0x22,0x1f,0xcf,0xbd,0xa4,0xff,0xc7,0x12,0x26,0x50,0x44,0x6c,0x26,0xe2,0x19,
- 0x70,0x4e,0x1d,0xcf,0xbd,0xc8,0xff,0xe3,0xaa,0xfe,0x47,0x69,0xef,0x04,0x84,0x8a,
- 0x2b,0x8c,0xfb,0xf0,0xc3,0xc4,0xf9,0x39,0x24,0x5d,0xec,0xff,0x11,0xfc,0x1f,0x51,
- 0xed,0x30,0xa5,0x1e,0xc5,0x23,0x5d,0x9c,0xe9,0x5a,0x4c,0xa9,0xa5,0x8a,0xd0,0xae,
- 0xfc,0xaf,0x9c,0xbe,0xec,0xe7,0x15,0x42,0x9b,0x14,0x32,0x24,0xcd,0xd3,0xc9,0x49,
- 0x88,0x5d,0xa2,0xfe,0xb3,0xe5,0x4f,0x23,0xda,0x79,0x7a,0x1a,0x2b,0x3f,0x23,0x88,
- 0x58,0xab,0xc1,0x23,0xe6,0x33,0x93,0xff,0x35,0x31,0xeb,0xfe,0xad,0x30,0x16,0xac,
- 0xee,0x24,0x20,0x54,0xbc,0x9d,0x51,0x45,0x68,0xbc,0xff,0x4b,0xd5,0xff,0x91,0xb3,
- 0x27,0x8a,0xd6,0xc3,0x62,0x54,0x5c,0xb5,0xc4,0xf7,0x7e,0xb5,0xd3,0x9e,0x7f,0xc4,
- 0x3f,0x6a,0x66,0xda,0x15,0x72,0x33,0x4a,0x84,0xc0,0xed,0x23,0x2a,0x2e,0x3c,0x77,
- 0xfe,0x97,0xab,0xff,0x97,0xdd,0xed,0x02,0xd1,0xcb,0x53,0xbc,0xb2,0x6d,0xfe,0x10,
- 0x1b,0x2e,0x79,0x2a,0x31,0x33,0x46,0xfe,0x1f,0xdd,0xb9,0x7e,0xe7,0x82,0x4b,0x7c,
- 0x2f,0xbb,0x8d,0x90,0x39,0xbf,0x82,0x8f,0x10,0x34,0xb2,0xfc,0x3f,0x4e,0xfc,0x2b,
- 0xc3,0xff,0x71,0xbe,0xdf,0xdf,0xc1,0xe3,0xc6,0x8c,0x66,0x6f,0x94,0xbd,0xce,0xd3,
- 0x47,0x5c,0xf9,0xef,0xb1,0x3b,0xb4,0x34,0xff,0xe7,0x0d,0x9b,0x08,0xf4,0x1b,0xf8,
- 0x73,0xfb,0xbc,0xa8,0x77,0x49,0xf9,0x9b,0xfc,0x63,0x3c,0x72,0xf5,0x72,0xf9,0x90,
- 0xa3,0x7f,0x10,0xff,0x48,0x2e,0x7d,0x2e,0x14,0xcb,0x10,0x9c,0x26,0xb3,0x95,0x40,
- 0x43,0x73,0x0a,0x2d,0x6c,0x56,0xff,0x0b,0xc7,0x7e,0xf5,0xc8,0xc7,0x6d,0x47,0xd0,
- 0xe3,0x70,0x36,0x5e,0x1f,0xf5,0x0d,0xcb,0x95,0xf0,0x5d,0x3e,0x7b,0x68,0x7c,0xfe,
- 0x17,0xa1,0x35,0x73,0xfe,0xb7,0x49,0x7f,0x6a,0x69,0x22,0xd3,0xe3,0xdb,0xbf,0xf6,
- 0xf6,0x67,0xa3,0xf2,0xe4,0xfe,0x3d,0xc6,0xb5,0xd9,0xf9,0x5f,0x1a,0x4f,0xeb,0xab,
- 0xbb,0xd9,0xeb,0xab,0xd3,0x4f,0xb7,0x11,0xf6,0xe8,0x33,0xa9,0xc2,0xc9,0xed,0xf0,
- 0x10,0x94,0x99,0x59,0xf9,0x5f,0x7a,0xb6,0xff,0xc7,0x22,0x02,0x49,0xdd,0xf1,0x50,
- 0xab,0x14,0x06,0x1f,0x24,0xad,0x42,0x1c,0x19,0x7b,0x31,0x36,0xd1,0xde,0x4d,0x17,
- 0x8f,0xd8,0x8d,0x30,0xb6,0xa3,0x85,0xad,0x6f,0x55,0xf4,0xf2,0xef,0xe2,0x17,0x17,
- 0xa6,0x8c,0x9b,0x4c,0xfe,0x17,0x97,0x32,0xfe,0x9f,0x0c,0x11,0x68,0xcc,0xa8,0x37,
- 0xd7,0x75,0x8a,0x42,0xd0,0x16,0x50,0x74,0xf4,0x9b,0x99,0xed,0xff,0x11,0xc2,0xc7,
- 0xc6,0x79,0x98,0xfd,0x7b,0xdc,0xe8,0xd5,0x09,0xaa,0x70,0x56,0xff,0xaf,0x15,0x69,
- 0xfe,0x4f,0x97,0xcb,0xfe,0x0e,0x41,0xb2,0x77,0xfa,0xe2,0xab,0xdb,0x58,0x88,0x3e,
- 0xbd,0x13,0xbe,0xec,0xfc,0x2f,0xc7,0xff,0xb3,0x34,0x33,0xbe,0x27,0x16,0xe8,0xf5,
- 0x6e,0x2f,0x0a,0xa9,0x3d,0x7a,0x65,0x2a,0x3b,0xff,0x4b,0xf8,0x7f,0x2a,0x88,0x9f,
- 0xf9,0xa2,0x9d,0x96,0xd2,0x87,0x1f,0xb2,0x1e,0x89,0x51,0xe1,0xcd,0xa4,0x95,0x0a,
- 0xed,0xf2,0xff,0x5c,0x95,0xee,0x7f,0xd1,0x2d,0xbf,0xcf,0x89,0x28,0xf5,0xf7,0x54,
- 0xdd,0xb1,0x07,0xaa,0x6e,0x9b,0x9f,0x2c,0x0e,0xf1,0x31,0x49,0xa4,0x66,0xbb,0xf2,
- 0xbf,0xd2,0xfe,0x1f,0xff,0x87,0xe5,0x67,0xe3,0xe9,0xe7,0x3d,0x89,0xfa,0x79,0xde,
- 0x80,0xbf,0x15,0x2d,0xda,0x49,0x98,0x47,0xf6,0x2b,0x13,0xff,0xb2,0xd7,0x4f,0xbe,
- 0x48,0x7b,0xd7,0xab,0x53,0x0b,0xe2,0xcd,0x4f,0xc1,0x6b,0x7c,0x77,0x6a,0x5d,0xb7,
- 0x7c,0xde,0xf8,0x68,0xc5,0xdc,0xe8,0x82,0xb1,0xe6,0xd1,0x56,0x87,0xff,0x93,0xae,
- 0xff,0xac,0x22,0xec,0x29,0x7d,0xda,0x0c,0xa4,0x54,0x4e,0xfc,0x52,0xf2,0xff,0x9c,
- 0x0d,0x8c,0xf0,0xfd,0xed,0x81,0xa8,0xda,0x23,0x27,0x1d,0xfb,0x68,0xd7,0x7f,0xce,
- 0xb3,0x3e,0x2b,0x3d,0x11,0xd3,0x3c,0x6b,0x45,0x86,0xb2,0x3c,0x87,0x0d,0xe0,0x13,
- 0x55,0x18,0x79,0x54,0xff,0x47,0x77,0xee,0xc7,0xae,0xff,0x23,0xe6,0xff,0xd1,0x54,
- 0x70,0x93,0xf0,0x9f,0x90,0xff,0x07,0x08,0x48,0x4c,0x35,0xf2,0xb2,0xea,0x1f,0xba,
- 0xfa,0x5f,0x50,0x22,0x12,0x5f,0xb0,0xf6,0x81,0x9d,0xf0,0x9a,0xc8,0xcf,0x6a,0x1e,
- 0x81,0x8f,0xcc,0x39,0x08,0x3c,0xca,0x4d,0x57,0xfe,0x57,0x66,0x3d,0xc0,0x9f,0x45,
- 0xd9,0x43,0xe9,0xac,0xfe,0x34,0x35,0x2a,0x1d,0x6d,0xc6,0xd5,0x00,0xd7,0x1b,0x05,
- 0xa3,0xe5,0x2e,0xfe,0xb3,0x3b,0xfe,0x85,0x42,0xc2,0xb7,0xc1,0x1b,0x92,0xd2,0xb4,
- 0x67,0xe1,0xe8,0x18,0xb8,0x44,0xfd,0xc3,0x50,0xbf,0x80,0x6d,0x4f,0x2b,0x3e,0x53,
- 0xdd,0xc8,0x66,0xc2,0xaf,0x89,0xc1,0x35,0x8a,0x0f,0x72,0x1d,0x04,0x46,0x6f,0x4e,
- 0xde,0x9a,0xf1,0xff,0xd8,0xf5,0x9f,0xbd,0xe1,0x2a,0x31,0x51,0x54,0xf8,0xce,0x9f,
- 0x61,0x44,0xef,0x86,0xc4,0x32,0xaa,0x0f,0x79,0x71,0xfd,0xe7,0x6f,0x93,0xdb,0x87,
- 0xff,0xf7,0x51,0xf5,0x3b,0x1e,0xe1,0x08,0x1a,0xf6,0xd6,0x00,0x7e,0xd1,0xf1,0xb2,
- 0xe8,0x15,0xcb,0x99,0xdb,0xff,0xb3,0xc0,0xea,0xff,0x55,0x2b,0x1f,0x36,0x11,0xff,
- 0x84,0x7c,0x3f,0x2a,0xf6,0x05,0x76,0xf3,0xba,0x61,0xff,0xf5,0xf2,0xfd,0xf0,0x51,
- 0xb2,0xd4,0xb8,0xfa,0x7a,0x37,0xff,0x39,0x27,0x3d,0x3f,0x1f,0x0a,0xd8,0x3c,0xcf,
- 0x7c,0x9a,0xa6,0xe5,0x4d,0xa0,0x46,0xa8,0xde,0x3a,0x3c,0x75,0xa5,0x91,0xd5,0xff,
- 0x82,0xf2,0xdf,0x5f,0x73,0xe6,0xbf,0x08,0xd5,0x72,0x1c,0xd5,0x8e,0x98,0x9f,0xbd,
- 0x1d,0x23,0xda,0x47,0x30,0xe7,0x4e,0x5f,0x56,0xfe,0xd7,0xe5,0x6e,0xfc,0x43,0xfa,
- 0x67,0x94,0x6d,0xc6,0x6d,0xe3,0x75,0xa6,0x6c,0x69,0xd4,0x69,0x86,0x9a,0x9d,0xff,
- 0x65,0xe3,0x9f,0x5c,0x81,0xee,0xa2,0xde,0x45,0x45,0x77,0x68,0x0f,0x67,0x10,0xe0,
- 0x83,0xa9,0xe9,0x59,0xf1,0x2f,0x25,0x5b,0xff,0x0c,0xce,0xdf,0xc3,0xa8,0x7e,0x5a,
- 0xd0,0x3a,0xd2,0xcd,0x82,0x94,0x91,0x91,0x9d,0xff,0xe5,0xc2,0x3f,0x0d,0xdc,0xff,
- 0xb6,0x77,0x09,0xbc,0x97,0x3e,0xa2,0x9e,0x1f,0xad,0x4e,0x14,0x50,0xfe,0x97,0xfd,
- 0xbc,0xae,0xfa,0xcf,0xb6,0x3d,0x2a,0x4f,0xc0,0x26,0x91,0x11,0xdf,0x6c,0x39,0x82,
- 0x72,0xc8,0xff,0x63,0xaf,0xb7,0x74,0xfd,0xe7,0xd6,0x34,0x3f,0x96,0x1c,0x41,0xde,
- 0xc5,0x56,0x1b,0x2c,0xad,0xb8,0x42,0x44,0xc4,0xc6,0xd7,0x3f,0x24,0xfb,0x1b,0xf5,
- 0xda,0xfd,0xa7,0xd4,0x8d,0x6b,0xae,0x71,0x22,0x32,0xd2,0x87,0x22,0x22,0xe6,0xea,
- 0x7f,0x5a,0xe3,0xc6,0x3f,0x8f,0x40,0x65,0x63,0x70,0xbd,0xe7,0xcb,0xe2,0xc8,0xff,
- 0x23,0x88,0x2b,0x38,0xbe,0xcb,0xed,0xff,0x71,0xea,0x3f,0x5b,0xd5,0x9e,0x2b,0xa3,
- 0xe4,0x08,0x82,0x59,0xb0,0xd4,0xf0,0x16,0x7d,0x55,0xb1,0xa9,0x32,0xe3,0xea,0x1f,
- 0xda,0xcf,0x4b,0xf9,0xfe,0xea,0x0a,0xb9,0x31,0x5d,0xf6,0xb0,0xb9,0xcc,0xe8,0xb1,
- 0xe2,0x2f,0x99,0xfc,0xaf,0x4d,0x6e,0x3c,0xb0,0x4f,0x6b,0x30,0x16,0xfe,0x2a,0x5d,
- 0xdf,0x98,0xe2,0x5f,0xca,0x39,0x78,0x3a,0x3b,0xfe,0x65,0x8d,0x6f,0x48,0xc3,0x00,
- 0x7d,0x9e,0xe1,0xff,0x95,0x3c,0x05,0x5e,0x4c,0x5f,0xa1,0xe5,0x7d,0x91,0x11,0xef,
- 0xca,0xff,0xca,0xe0,0x1f,0x99,0xf0,0xcf,0x57,0xc0,0xbf,0x82,0x41,0x7b,0xcc,0xe1,
- 0xff,0xc0,0xf4,0x71,0xfe,0x1f,0x48,0x7b,0x7b,0xb4,0x5c,0x7c,0x5e,0x43,0x14,0xbe,
- 0x56,0xc8,0x11,0x64,0x78,0x4b,0x58,0x1f,0xdf,0xd7,0xae,0x1b,0xf3,0xb3,0xf2,0xbf,
- 0x14,0x1b,0xff,0xe4,0x5a,0xc2,0x4d,0x71,0x8f,0x02,0xe9,0x7e,0x6a,0x7d,0xd2,0x23,
- 0xda,0x74,0xe3,0xca,0x38,0xb8,0xfa,0x5f,0x28,0x16,0x9e,0x59,0x47,0x78,0xe9,0x14,
- 0x35,0x2e,0xd9,0xe0,0xad,0xb0,0x1c,0x41,0x76,0xc4,0x33,0xab,0xff,0x45,0x24,0x1b,
- 0xff,0x54,0x93,0xbf,0x68,0xc4,0x85,0xa0,0x58,0x7d,0x24,0x8b,0xff,0xac,0x5a,0xf5,
- 0x7f,0x14,0xbf,0xf5,0xbc,0x55,0x9a,0xaf,0xb3,0x2b,0x2a,0x1a,0xa1,0x8a,0x23,0x47,
- 0xe1,0x9f,0x58,0x76,0xff,0x0b,0x0b,0xff,0x24,0xf2,0x2c,0xfc,0x53,0x1e,0x53,0x53,
- 0xec,0x51,0xed,0x50,0x1a,0x11,0x29,0xb9,0x0f,0xfe,0xcd,0x8e,0x6c,0xfe,0xf3,0xc4,
- 0x05,0xc4,0x4f,0xa0,0xa4,0xc8,0x01,0x6d,0x36,0x8b,0x8e,0xa9,0x73,0x98,0x09,0x0f,
- 0xd8,0xdf,0x4b,0x1b,0xe8,0xe1,0xf9,0xe1,0xa6,0x8c,0xff,0xc7,0xae,0xff,0x9c,0x27,
- 0xbe,0x56,0x4a,0xcc,0x0c,0x07,0xd6,0x8b,0xb2,0x87,0x57,0xe2,0x11,0x69,0x05,0xfc,
- 0xab,0x91,0xd5,0xff,0x22,0xe6,0xf4,0x3f,0x45,0xfc,0xf3,0x11,0x9f,0x95,0xf2,0x2d,
- 0xf2,0xbe,0x11,0xf8,0x2d,0xbf,0x8e,0x80,0xd0,0x05,0xde,0xd7,0xfe,0x98,0xee,0xcf,
- 0xf2,0xff,0xa4,0xf1,0x40,0xbe,0x15,0xd6,0xb9,0x97,0xcf,0x8c,0xcb,0x4b,0x33,0x1a,
- 0x38,0x45,0x3b,0x88,0x2c,0xff,0x4f,0x09,0xe5,0xbf,0xcf,0x4d,0x15,0xf4,0xd0,0xfe,
- 0x3d,0xfe,0xbd,0x25,0xfe,0x7d,0xde,0xd3,0x1a,0xd5,0xff,0x41,0x20,0xf4,0x81,0xf1,
- 0x01,0xdf,0x1b,0x45,0xfc,0xe3,0xf2,0x57,0x6b,0x16,0xfe,0xf1,0xd7,0x16,0x1d,0x8e,
- 0x89,0xc4,0xf6,0x11,0xa6,0xe5,0xac,0x82,0xd0,0x30,0xde,0xf6,0x61,0xd8,0x8b,0xf8,
- 0x47,0x0d,0xcb,0x8f,0x3a,0xf1,0xb2,0xd2,0x0c,0xff,0x59,0xa0,0x3b,0x75,0xfe,0xad,
- 0x01,0xb1,0x4d,0xeb,0x17,0x1a,0xec,0x21,0xb8,0x86,0xf4,0x95,0xbb,0xff,0x45,0xf6,
- 0xfe,0x2b,0xe1,0x95,0x8a,0x7c,0xe9,0x36,0x8e,0xa4,0x7f,0xf4,0x0a,0xb2,0xef,0x9b,
- 0x9c,0xf7,0xd5,0x53,0x68,0x79,0xcb,0x27,0xa7,0xed,0xcb,0x98,0x7f,0x53,0x40,0xf7,
- 0x50,0xfd,0xe4,0x85,0xc9,0xe2,0xb3,0xa8,0x88,0xaa,0x09,0xff,0xb8,0xfa,0x5f,0xa4,
- 0xe3,0x5f,0xe9,0xf1,0xf7,0xf6,0xe7,0x6f,0x94,0x1f,0x4c,0xfb,0x7f,0x10,0x1a,0x9d,
- 0x36,0x51,0xd5,0x24,0x9b,0xb7,0x68,0xf6,0xf3,0x26,0x44,0xfe,0xfb,0xf7,0x52,0xc4,
- 0xf7,0x10,0x85,0x10,0x17,0xb6,0x6e,0xab,0x33,0x8e,0xc0,0xf5,0xa8,0x78,0x51,0xb1,
- 0x9f,0x47,0x9b,0xec,0x77,0xfb,0x7f,0xb6,0x58,0xf8,0xa7,0x6f,0x5d,0x52,0x17,0xc2,
- 0xa6,0x67,0x36,0x7b,0x2b,0xd8,0x6b,0x02,0x98,0xa1,0x45,0xee,0xe6,0x81,0x65,0xfe,
- 0xec,0xfe,0x17,0x21,0x67,0x9b,0x2f,0x51,0x76,0xb6,0xbc,0x89,0x49,0xa2,0xfe,0x8f,
- 0x47,0x30,0x58,0xf4,0xc0,0x5d,0x94,0x18,0x9e,0xf1,0xff,0xdc,0xe6,0xb3,0xf9,0x09,
- 0x0b,0xf8,0x6c,0x3d,0x34,0xe8,0x55,0x3c,0x2d,0xf0,0x80,0x16,0x3a,0x40,0xfd,0xbf,
- 0xf4,0x6e,0xd2,0x3f,0x73,0x9a,0xdc,0xfc,0x9f,0x90,0x4a,0xfc,0x67,0xef,0xae,0x03,
- 0xef,0x9b,0x7f,0x84,0xda,0x56,0xff,0x06,0xaf,0x2f,0xa7,0x4b,0xa9,0x25,0xb3,0x7b,
- 0x0e,0x4e,0x6b,0xf8,0x7d,0xed,0x91,0x53,0x4e,0xff,0x9d,0xc4,0x44,0x51,0xff,0x90,
- 0xec,0xfb,0x77,0xcd,0x33,0x5a,0x43,0xbf,0xff,0x65,0xef,0x93,0xf0,0x41,0xc5,0x77,
- 0xfa,0x29,0x11,0x2c,0xf1,0x71,0xc5,0x3c,0xea,0x00,0x32,0x3c,0xf5,0x22,0xff,0x0f,
- 0x95,0xf1,0xb1,0xf0,0xb3,0x74,0x36,0x71,0x76,0x4e,0x38,0x0a,0x11,0x39,0x00,0xdf,
- 0xe3,0xb3,0xa3,0xb8,0x3e,0xc3,0x17,0xfb,0x7f,0x92,0x8c,0xe2,0x5f,0xf5,0xc4,0xf7,
- 0x7e,0x9f,0x27,0x0d,0x16,0x9d,0xd4,0x73,0x57,0x40,0xdd,0xcf,0xa7,0x47,0xf1,0x48,
- 0x32,0xb3,0xbf,0xce,0xf8,0x7f,0xa8,0x11,0x95,0xb5,0x0c,0xf4,0x9e,0x96,0xa8,0xa1,
- 0xea,0x0c,0x7c,0xbb,0xe9,0x79,0x93,0x9e,0x2a,0x67,0x7f,0x97,0x9a,0xe8,0x14,0xd9,
- 0x16,0x61,0x44,0x6b,0xda,0x7b,0xca,0x02,0x37,0xe6,0x25,0xdb,0x03,0xd2,0xfe,0xd6,
- 0xf4,0xf5,0xed,0xf7,0xbb,0x65,0xa2,0x5d,0xff,0xb9,0x23,0x24,0x88,0xe2,0x82,0x78,
- 0x73,0x3a,0xda,0x1d,0x0d,0x56,0x78,0xcb,0xe1,0x44,0x6f,0xd5,0x92,0x75,0x3d,0x1d,
- 0xe0,0xc4,0xbb,0x1d,0xfc,0x13,0xf6,0xda,0x81,0x42,0x99,0x96,0x41,0x43,0x2a,0x34,
- 0x5a,0x3c,0x26,0x5d,0x88,0x35,0xd0,0x7a,0xc8,0xae,0xff,0x23,0xd2,0xca,0xe2,0x99,
- 0x6e,0x5f,0x23,0xf0,0x5e,0xa4,0xf6,0xa8,0x2f,0x21,0xff,0x23,0xbc,0xd7,0x54,0x6f,
- 0xf8,0xf6,0xca,0x85,0xee,0xfa,0x87,0x16,0x0c,0xde,0x50,0x24,0x84,0x03,0xa2,0x10,
- 0x90,0xac,0xeb,0xfd,0x88,0x18,0xa7,0xc1,0x13,0x4d,0x95,0x5f,0xc9,0xd7,0x58,0xb5,
- 0x7d,0x3b,0x82,0xff,0x93,0x26,0xbd,0x8b,0x85,0x91,0x12,0xc4,0x95,0x04,0x1a,0x6e,
- 0x15,0x9a,0x1a,0xf9,0x36,0x5e,0x91,0x2a,0x9d,0x93,0x7b,0x9d,0xb3,0xff,0x4a,0x66,
- 0xfc,0x3f,0x42,0x38,0xa6,0xd2,0x46,0xa6,0x73,0xfd,0x94,0x61,0xf5,0x9f,0x6f,0x2c,
- 0x82,0xbd,0xb1,0x19,0xd1,0xbc,0xe1,0xdc,0x90,0xc3,0x1f,0x5e,0x92,0xf6,0xff,0xf8,
- 0x83,0xde,0x02,0x93,0x0a,0x21,0xfe,0xac,0x16,0xef,0x7f,0x6b,0xb2,0x6e,0x38,0x14,
- 0xee,0x68,0x7a,0xf9,0xf7,0x6c,0x8e,0xb1,0x20,0xec,0x75,0xf1,0x9f,0x6d,0xfe,0x4f,
- 0x4a,0xe4,0x7f,0x11,0x10,0xc2,0xfb,0x3f,0xaf,0xd7,0x0e,0x78,0x4f,0xca,0xa3,0xea,
- 0x05,0x6d,0x1e,0x41,0x23,0x57,0xfe,0xbb,0xcd,0xff,0x49,0x38,0xf3,0x83,0x1b,0x99,
- 0x31,0x8a,0x88,0x3d,0x29,0x07,0xd5,0x59,0x7a,0x15,0xf7,0x85,0xe5,0x0c,0xff,0xb9,
- 0x3f,0x9e,0xd6,0x27,0x3a,0x73,0x88,0x04,0xb7,0xf3,0x73,0xd6,0x36,0xaa,0x54,0x30,
- 0x82,0x50,0xa8,0xca,0xd4,0xdf,0xb6,0xf1,0xcf,0xa2,0x8c,0xb7,0xe7,0x0d,0xe3,0x71,
- 0x7e,0x4d,0xea,0xf2,0xef,0xb2,0x2b,0xa4,0x9f,0xb5,0x95,0x1d,0x53,0xcf,0x32,0x3d,
- 0xdb,0xff,0xa3,0xe0,0x7c,0x6e,0xbe,0xc9,0xa7,0xa4,0xd7,0xdb,0x52,0xd8,0xa6,0xe9,
- 0x6b,0xf3,0xe6,0x78,0x0a,0xf4,0xdd,0x45,0xba,0xb9,0x63,0x8e,0x9b,0xff,0x5c,0x92,
- 0xf6,0xff,0xbc,0x27,0x93,0xe1,0x48,0x03,0xa1,0xa7,0xf8,0x5c,0xfe,0xaf,0x3b,0xa5,
- 0xeb,0xf9,0x4b,0xe6,0xae,0xb8,0x6f,0x89,0x77,0x1c,0xff,0x59,0x58,0xff,0x8e,0x54,
- 0x26,0x31,0xa7,0xa7,0xad,0x5e,0xf3,0xf1,0x8e,0x63,0x30,0x16,0xa9,0x2f,0xf2,0xaf,
- 0xcc,0xe2,0x3f,0xa7,0xed,0xdd,0x66,0xbb,0x2c,0x4c,0xfc,0xd3,0x43,0xec,0x15,0xa8,
- 0x8f,0xa0,0x5a,0x5b,0x4c,0x88,0x3d,0xea,0xdb,0x04,0xec,0xe2,0xfe,0xa7,0x9b,0x3d,
- 0x16,0xb0,0x91,0x05,0xed,0x76,0x7d,0x28,0x8a,0xc0,0xf8,0x6d,0xd8,0xd7,0x52,0xbd,
- 0x4c,0xfd,0x49,0xbb,0x7e,0x89,0xfc,0xaf,0xf6,0xec,0x46,0x60,0x46,0x6c,0x13,0x1b,
- 0xe1,0xfb,0x1a,0x05,0x5f,0x7a,0xa5,0xb3,0xde,0x1c,0xff,0x4f,0xa1,0xc7,0xd5,0x08,
- 0xb5,0x4d,0x0f,0x99,0xa5,0x9a,0x48,0xc4,0x98,0x6a,0x04,0xe3,0xac,0xdd,0xd1,0x3f,
- 0x8e,0xff,0x67,0x65,0x97,0x6e,0x35,0x02,0xa3,0x36,0xa3,0xfd,0xb7,0xd5,0xa3,0x6a,
- 0x97,0x53,0x1a,0x11,0x51,0x16,0x70,0xef,0x2f,0x32,0xf5,0xde,0xd3,0xfe,0x9f,0x75,
- 0x2f,0xa1,0x35,0xff,0x96,0x00,0x06,0xd2,0x90,0xf1,0x7e,0xe1,0x3c,0x4a,0x7c,0x3b,
- 0xab,0x9d,0x82,0x79,0xc6,0xba,0xd1,0xf2,0xaf,0x64,0xea,0xf9,0xd8,0xfe,0x9f,0x5f,
- 0xc9,0x73,0x94,0x83,0x16,0x10,0x7a,0xbb,0xf3,0xc5,0xc6,0xb9,0x86,0x3a,0x28,0xef,
- 0x51,0x67,0xd0,0x0a,0x6c,0x95,0x99,0xb3,0x7e,0x96,0xdb,0xf8,0xe7,0x41,0xa6,0x33,
- 0x1b,0xf6,0xf0,0x98,0xd5,0xff,0x54,0x47,0xfc,0x53,0x0f,0xf3,0xb9,0xa7,0x20,0xc3,
- 0xd7,0xb2,0xfd,0x3f,0x69,0xd8,0x43,0xdd,0xbe,0x9e,0xe5,0x6d,0xd1,0x0a,0xa3,0x26,
- 0xce,0x14,0x95,0xfc,0x3f,0x38,0x63,0x45,0x52,0x06,0x8f,0x51,0xf4,0xd0,0x42,0x9b,
- 0x69,0xd8,0x53,0x34,0x24,0xad,0x5e,0x79,0x97,0x11,0xd9,0xe4,0xa9,0x90,0x56,0xab,
- 0xd3,0x5b,0xbc,0x9b,0x20,0x37,0x53,0xff,0xb0,0xc4,0xf5,0x7e,0x1d,0xd8,0x73,0x50,
- 0x9f,0xb3,0xc0,0xb7,0xa1,0x78,0x0a,0x3b,0xd8,0x58,0xd9,0xe4,0x2f,0x91,0x82,0x99,
- 0xfe,0x2c,0xb0,0x5d,0x4c,0x8b,0xbf,0x68,0x9b,0x03,0x14,0xfb,0xd8,0x87,0x50,0x1f,
- 0x5d,0x17,0x97,0x11,0x18,0x6f,0x12,0x47,0x5c,0xf5,0x0f,0xb5,0x84,0x68,0x3b,0xe2,
- 0xef,0xf4,0x8a,0xf9,0xa7,0x6e,0xa7,0x29,0xb5,0x5f,0xaf,0xf7,0x85,0x3a,0xa4,0xb7,
- 0x60,0xac,0xb1,0x8a,0x1d,0xe9,0x94,0x3d,0xe3,0xfa,0x7f,0x89,0x68,0x97,0xea,0x38,
- 0x82,0xd4,0xfb,0x8d,0x99,0xf1,0x25,0x4b,0x9a,0x5e,0x25,0xfe,0x73,0xc2,0x3b,0x24,
- 0xdf,0x64,0x0f,0xb7,0xfb,0x7f,0x51,0x5a,0xae,0xd5,0x98,0xc9,0xaa,0xff,0xf3,0x72,
- 0x28,0x95,0xa7,0x05,0x06,0x24,0xd1,0xaf,0x73,0x2a,0x5b,0x93,0xa9,0xff,0x93,0xf1,
- 0xff,0x88,0xef,0xf7,0x00,0x0a,0x03,0x6c,0x23,0xcc,0x30,0xf2,0x5a,0xd9,0x7f,0x23,
- 0x44,0x74,0x00,0xff,0xb4,0xab,0xfe,0x0f,0xf9,0x7f,0xda,0xe6,0xa5,0x16,0x06,0x29,
- 0xec,0xd5,0x39,0x2f,0x2a,0x1c,0x41,0xbf,0xc5,0x0f,0x79,0x86,0x70,0x04,0xf1,0x5d,
- 0xa9,0x85,0x4b,0xbc,0x5d,0x17,0xf5,0x7f,0xc7,0xcf,0x30,0xcd,0xc6,0x24,0x7d,0x3b,
- 0x4c,0x1e,0xec,0x84,0x3c,0xa4,0x7e,0x64,0x9d,0x6a,0xca,0xe4,0x87,0x66,0xf8,0x3f,
- 0xf5,0x24,0x50,0xd9,0xe7,0xf3,0x3a,0x0a,0x43,0xbe,0xbf,0x93,0xab,0x61,0x2e,0xf9,
- 0x7f,0x96,0x78,0x35,0x77,0xff,0x53,0xc3,0xba,0x7f,0xf9,0x0e,0x8e,0xfb,0x2f,0xe3,
- 0xca,0x30,0x7b,0xdd,0x48,0x1a,0x33,0x86,0x83,0xad,0xf2,0x6d,0xb0,0x57,0x2f,0xdb,
- 0xa8,0x46,0xd9,0x74,0x07,0x5f,0x01,0xdf,0x9c,0xe7,0xa8,0x29,0x14,0x0c,0xdb,0xf1,
- 0xd5,0xa7,0x7e,0x73,0xeb,0x44,0xf8,0x61,0x5e,0xb9,0x89,0xe3,0x75,0x17,0xfe,0x19,
- 0xb0,0xd5,0xce,0x02,0xd5,0x99,0xcf,0x64,0x20,0x14,0x57,0x6b,0x58,0xa7,0xba,0xbb,
- 0xbd,0x22,0xa5,0x56,0xb0,0x52,0x57,0xff,0x53,0x0b,0xcf,0x4c,0x20,0x5a,0xe6,0x7e,
- 0xab,0x9e,0xcf,0x59,0xd8,0x6f,0xd4,0xb5,0xee,0xd8,0xc4,0xae,0x81,0x5f,0xc7,0xab,
- 0x96,0xf8,0x1e,0x91,0xa7,0x5f,0x9c,0xff,0xa5,0x15,0xbb,0xe2,0x11,0x67,0x8c,0xfa,
- 0x96,0xab,0x36,0xca,0x5f,0x36,0xc6,0x8c,0xda,0x97,0x44,0xab,0xbe,0x8b,0xf2,0xbf,
- 0x8e,0x09,0x36,0x51,0x83,0xc5,0xe7,0x3c,0x67,0x36,0x34,0xf9,0x46,0xe5,0x39,0xc4,
- 0xff,0xa1,0xd6,0xb4,0x70,0x71,0xfe,0x57,0x82,0x89,0xb6,0x17,0x16,0x31,0x69,0x9f,
- 0x51,0x59,0x13,0xa9,0x79,0x46,0x16,0x8d,0x18,0xbc,0xd7,0xe3,0xd7,0xee,0x8a,0x7f,
- 0xa5,0xdd,0x3e,0xb9,0x21,0x6a,0x7b,0x61,0x08,0x20,0x84,0x5f,0x68,0x54,0xdd,0xc4,
- 0xca,0xb5,0x2e,0x33,0xd0,0x8f,0x97,0x4a,0xd8,0xb3,0x69,0xf3,0x7f,0x7a,0xbd,0x5a,
- 0x81,0x2f,0xda,0xe1,0xcc,0x4f,0x4b,0x65,0x24,0x12,0x0e,0x44,0x73,0x57,0x43,0xc2,
- 0xec,0x02,0x57,0xfe,0x3b,0xb3,0xfa,0x7f,0x51,0xf5,0x83,0x19,0x40,0xfd,0xbf,0xfc,
- 0xbb,0x2c,0x37,0xd7,0x02,0x35,0xf9,0xa9,0xb2,0x92,0x17,0x94,0x2a,0x73,0x61,0xa2,
- 0x9c,0x67,0xd5,0xff,0x11,0xcf,0x7b,0x4f,0x87,0xb0,0x5f,0x46,0xc1,0x09,0xe9,0x2c,
- 0x3c,0x09,0x75,0x3e,0xaa,0x6f,0x93,0x38,0x47,0x81,0x8c,0x94,0xbc,0x24,0xe7,0x22,
- 0xfc,0x33,0xe6,0x9d,0x64,0x9c,0xe1,0x0d,0xbc,0x60,0x58,0x2e,0xa2,0x44,0x30,0x82,
- 0xcd,0x78,0xaa,0x73,0xde,0x31,0xe2,0xff,0x64,0xf2,0xc5,0xe0,0xb8,0x9d,0xff,0x1e,
- 0x22,0x20,0x94,0x50,0x77,0x14,0x4d,0x85,0x47,0x78,0x65,0xb4,0xa0,0x87,0x1d,0x57,
- 0xf6,0x77,0x0a,0xd7,0xd0,0xa8,0xee,0xe2,0xff,0x08,0xfc,0xd3,0x1c,0x0e,0xac,0xed,
- 0xdc,0x2d,0x85,0x60,0x4d,0x02,0x57,0x4b,0x1b,0x3e,0xc8,0x22,0xaa,0x50,0xb7,0x4d,
- 0xa4,0x2a,0x37,0x65,0xf3,0x7f,0xd2,0x49,0x76,0xbf,0xa0,0xf9,0x4c,0xaa,0x09,0x86,
- 0xd7,0x87,0x9b,0xd3,0x81,0xa4,0xdc,0x71,0xf9,0xef,0x3c,0xd3,0xff,0x7d,0x3b,0x09,
- 0x7a,0x65,0x52,0xd6,0xe1,0x10,0xcc,0x69,0xf4,0x89,0x0a,0x51,0x0a,0x15,0x82,0x2e,
- 0x36,0x0d,0x7b,0xfc,0x68,0xc6,0xff,0xf3,0x4d,0x14,0xea,0x2c,0xff,0xd8,0x1b,0x4a,
- 0xc3,0xe2,0x82,0x51,0xc4,0xdb,0x4f,0xb3,0x86,0x03,0xbe,0xd1,0xe6,0x8b,0xfb,0xbf,
- 0x0b,0x37,0xe3,0x0b,0x50,0xef,0xf3,0xed,0x12,0xd7,0xb7,0x3d,0x90,0xca,0x64,0xf2,
- 0xbf,0x65,0xf8,0x6c,0x4e,0xfc,0x8b,0xf2,0x19,0xbb,0x94,0x4a,0xc3,0x73,0x1d,0x2a,
- 0xde,0x35,0x76,0x20,0xec,0x7a,0x16,0x1a,0x5d,0xed,0xe6,0xff,0x64,0xc5,0xbf,0x70,
- 0x3d,0x8c,0xaa,0x15,0x01,0x8f,0xb5,0x3f,0xb5,0x3d,0xa8,0x52,0x98,0x8d,0x3a,0xf8,
- 0x6d,0xb4,0xd0,0x81,0x01,0xe7,0x61,0x15,0x9f,0x31,0xe4,0x59,0xc2,0x1a,0x60,0x05,
- 0x39,0x46,0xd2,0x11,0xb1,0x03,0x79,0xcb,0x9b,0x8e,0x67,0xfa,0x5f,0x40,0x9a,0xff,
- 0x7c,0xbd,0x7c,0x18,0x9e,0xe1,0x75,0x86,0xef,0x6f,0xbc,0xaa,0xde,0x0b,0x75,0x29,
- 0xff,0x2c,0x76,0xd8,0xfc,0x48,0xab,0xeb,0xf3,0x65,0xf1,0x9f,0x45,0xff,0xaf,0xab,
- 0xc5,0x67,0x65,0x5c,0x28,0x6c,0xe8,0x5d,0x17,0x95,0xcf,0xb6,0x9c,0x8b,0x53,0xc5,
- 0xc8,0x66,0xd1,0xe1,0xa2,0xbf,0x20,0x59,0x9c,0xd5,0xff,0x42,0x4c,0xb2,0xed,0x1f,
- 0x03,0x5f,0x72,0xc2,0x7b,0x70,0x88,0x57,0x19,0xae,0x7e,0xc4,0x13,0x5c,0xfc,0x9f,
- 0xf5,0xe3,0xe2,0x5f,0x54,0x4f,0x03,0xed,0xf3,0x96,0xb4,0x62,0x61,0x82,0x3f,0x79,
- 0xc2,0xe9,0x1f,0x97,0xa9,0xff,0xcc,0xde,0x44,0x21,0x94,0x88,0x2c,0x87,0x57,0xe1,
- 0x7e,0x5e,0x96,0x15,0x01,0xbc,0xb8,0xff,0x85,0x3d,0x7b,0x7d,0xd3,0x49,0x68,0xdf,
- 0x1a,0x4d,0xcf,0x27,0x0b,0x99,0x97,0xec,0x7f,0xea,0xa7,0x22,0xcf,0xa7,0xa1,0x21,
- 0xbe,0x40,0xa7,0xb6,0xa7,0x89,0xaa,0x44,0xda,0x23,0x64,0x11,0x81,0x2e,0x11,0xff,
- 0xb2,0x68,0xcf,0x2c,0x2f,0x36,0xe1,0x18,0x9c,0xb5,0x77,0xe8,0xe9,0xc2,0x2c,0x99,
- 0xf8,0x9a,0x8b,0xff,0xdc,0x87,0xf6,0x51,0x44,0x43,0x16,0xdb,0x6d,0xc1,0x87,0xa4,
- 0x4b,0xf5,0xbf,0xc8,0x86,0x31,0x10,0x2f,0x9a,0xd2,0x39,0x3e,0xc2,0x95,0xf1,0xff,
- 0x58,0xf8,0xc7,0xea,0xf6,0xa5,0x59,0xe3,0x03,0xd5,0xf0,0x4b,0x14,0xae,0xb4,0x3b,
- 0xc2,0xff,0xc5,0xfc,0xf7,0xf6,0x36,0x45,0x24,0x82,0x95,0xc0,0x63,0xae,0x08,0x91,
- 0x79,0x09,0xff,0x8f,0xf0,0x36,0x20,0xec,0x11,0xfc,0x13,0x6f,0x94,0x9e,0xd7,0x9a,
- 0x81,0x1a,0xbb,0xff,0x85,0xad,0x7f,0xfa,0x5d,0xfd,0xdf,0x5b,0x4f,0x41,0x43,0xcb,
- 0xbf,0xd1,0x83,0x7f,0xa8,0xd8,0x1e,0x1e,0xab,0xdf,0x7d,0xa6,0x9e,0xc9,0xa6,0x1c,
- 0xbb,0xff,0x97,0x68,0x0b,0x4b,0xfe,0x31,0xaa,0x17,0x94,0xf1,0x90,0x88,0x7f,0x78,
- 0x38,0xc7,0x85,0x7f,0xd4,0x74,0xfc,0xab,0x17,0x36,0x51,0xff,0x53,0x93,0x65,0x3a,
- 0xc2,0x53,0xff,0xd3,0xec,0xfe,0x5f,0x6a,0x4e,0x9f,0x64,0xe5,0xbf,0x17,0xf5,0x55,
- 0xec,0x42,0xfb,0x55,0xda,0x6a,0x3d,0x66,0x63,0x97,0xd6,0x84,0x82,0x24,0x9e,0x37,
- 0x13,0xff,0x2a,0x75,0xc5,0xbf,0x94,0x1f,0xb1,0xca,0x88,0x3a,0x98,0x15,0x58,0x84,
- 0xf1,0xfd,0x4f,0x27,0xe2,0xfd,0x8b,0x87,0x92,0xe8,0x6e,0xeb,0xa2,0xbe,0x74,0x3c,
- 0x2b,0xea,0x8e,0x70,0xb9,0xe2,0x5f,0xf0,0x17,0xe2,0x5f,0xcb,0xac,0xf5,0xc0,0xd2,
- 0xfd,0x4f,0xed,0xf1,0x41,0x4d,0x4f,0xaf,0xb7,0xcf,0xa5,0xa0,0x5f,0xaa,0x87,0x7c,
- 0x53,0x14,0x42,0x74,0x79,0xe4,0xb2,0xfb,0x7f,0xa5,0xf1,0x4f,0x17,0xc2,0x1e,0x6d,
- 0x8d,0x54,0x29,0xca,0x98,0xdf,0x7a,0x7f,0x26,0x22,0x36,0x93,0xfa,0x5f,0x5c,0xdc,
- 0xff,0xcb,0xd2,0x3f,0x52,0xa8,0xf7,0x33,0x41,0x5c,0x2d,0xed,0x4e,0xe0,0x38,0x37,
- 0xa4,0xe2,0xc6,0xfc,0x80,0xe3,0xcf,0x71,0xfa,0xbf,0x2f,0xcb,0x7d,0x83,0xaf,0x82,
- 0x10,0x5a,0xfc,0xf6,0x5f,0xc3,0x4a,0x71,0x24,0x20,0xbe,0x68,0x20,0xfe,0xb3,0x33,
- 0x7e,0x47,0x8c,0xf4,0x95,0x15,0xff,0xd2,0x9f,0xe7,0x57,0xa5,0xf2,0x97,0xc8,0xaf,
- 0xc2,0x73,0xb6,0x47,0xe8,0x0f,0x7c,0x1e,0xf9,0x7f,0x0e,0x8c,0xeb,0x7f,0x21,0xb2,
- 0x77,0xdf,0x37,0x49,0x9f,0xe0,0xd7,0xd7,0x07,0xa7,0xa5,0x8c,0x86,0x41,0xc5,0xe2,
- 0xaa,0xff,0xe3,0xe0,0x9f,0x53,0x82,0xb6,0x5a,0x3f,0xf4,0xd9,0x58,0xf9,0xab,0xa8,
- 0x7f,0x44,0xdb,0x8b,0xf3,0xea,0x99,0xf8,0x5c,0x1d,0x11,0x51,0xa9,0xa3,0xcf,0xa9,
- 0xff,0xe9,0x1f,0xe8,0x6e,0x6b,0xd9,0x71,0x72,0x5b,0x05,0xd5,0x02,0x36,0x68,0x3c,
- 0x94,0x08,0xa5,0x0a,0x96,0xb3,0xc3,0x1c,0xf5,0x89,0xe1,0x3d,0xcd,0xa6,0xbb,0xfb,
- 0x7f,0xa9,0xd6,0xf3,0x4e,0x7d,0x9d,0xc6,0x1f,0x50,0x6f,0x42,0x35,0xb5,0x52,0xb7,
- 0x3d,0x42,0x3a,0x3e,0xef,0x09,0x8f,0xe9,0xc6,0x3f,0xf6,0x7e,0x56,0xe8,0x73,0x44,
- 0xa1,0xb9,0x7d,0xb0,0xd5,0x0c,0xf5,0xd9,0x1a,0xc9,0x10,0xfc,0xe7,0x0c,0xfe,0x71,
- 0xec,0xcb,0x59,0xf6,0x02,0x2a,0xea,0xb5,0x49,0xf9,0x5d,0x38,0xb4,0xcc,0x79,0x5e,
- 0xea,0xb8,0xed,0xea,0x7f,0x11,0x07,0x7b,0xfc,0xe7,0x2c,0x7d,0x5b,0xb0,0xa7,0xf8,
- 0x58,0xfc,0xb4,0x4d,0x3c,0xf8,0x0e,0xd4,0xdf,0x32,0x21,0xc9,0x82,0x99,0x7c,0xb1,
- 0x4c,0xfd,0xc3,0xd7,0x45,0xb7,0x74,0x61,0xdd,0xce,0x5b,0xb4,0x67,0x71,0x6a,0x87,
- 0xc8,0x7f,0xb7,0xef,0x9f,0x2b,0x2e,0x3e,0x73,0x17,0x4c,0x05,0x35,0x09,0x7f,0xd0,
- 0xbb,0x2d,0xfe,0x2d,0x45,0x64,0x0a,0x08,0xe1,0x5c,0xd4,0xff,0xc2,0xa2,0x49,0x77,
- 0x59,0x8d,0x83,0xdf,0x82,0x27,0xd8,0x54,0xab,0x10,0xe2,0xcf,0x61,0xaa,0xe6,0x4d,
- 0x16,0xa5,0x34,0x57,0xfe,0x97,0xb5,0xde,0xaa,0x11,0x36,0x77,0x34,0x55,0xa8,0xa8,
- 0x7f,0x4c,0x72,0x8b,0x0d,0x7a,0xab,0x68,0x7e,0xa8,0x10,0x59,0x16,0xff,0xc7,0xee,
- 0xff,0xfe,0xb8,0xfc,0xcb,0xe8,0x0b,0x46,0xfd,0x21,0xdf,0x7a,0xf2,0x6f,0xe8,0x8f,
- 0x1f,0x9d,0x9f,0x2c,0xa7,0xfc,0x1a,0x5c,0x21,0xdd,0xe3,0xea,0x1f,0x8a,0xe7,0xdd,
- 0x2d,0xf6,0xef,0x73,0xc1,0xff,0x6b,0xd4,0x27,0xe7,0xb5,0xda,0x01,0xff,0x49,0xf9,
- 0xfd,0x84,0x68,0x8d,0xba,0xab,0x70,0x78,0x4a,0x36,0xfe,0x99,0xcd,0x7d,0x47,0xe5,
- 0xd3,0x38,0x7e,0x76,0x8b,0xef,0x18,0xae,0x96,0x81,0x8a,0x6b,0xa3,0x0b,0x8f,0xa1,
- 0x99,0x1e,0xa0,0xfa,0x9c,0xfd,0x6e,0xff,0x8f,0xc8,0xff,0xaa,0x06,0x35,0xde,0x34,
- 0x0c,0x6b,0xf4,0xea,0xdb,0x62,0x0f,0x06,0xa6,0x43,0x2c,0x1e,0x88,0x7a,0x13,0x9e,
- 0x4a,0x88,0xf1,0xe9,0xa9,0x82,0x58,0x40,0x07,0x37,0xfe,0xd9,0x0f,0x3a,0x57,0x89,
- 0x0f,0xb6,0x4d,0x0d,0x44,0x22,0x01,0x16,0x62,0x49,0xe1,0x66,0xf7,0xec,0xcc,0x8b,
- 0x51,0x85,0x16,0xb8,0x2c,0x2b,0xff,0xbd,0x64,0xbf,0x36,0x55,0x57,0x37,0xb0,0x81,
- 0xc0,0x8f,0x28,0x7f,0x01,0x94,0x4a,0x7d,0x13,0xc7,0xeb,0x27,0x61,0x69,0x59,0x0c,
- 0xa1,0x17,0x8b,0xe5,0x86,0xb3,0xfa,0x5f,0xec,0x86,0xaa,0xc4,0xda,0xb8,0x7c,0x0c,
- 0xfe,0x1c,0x2f,0x37,0x42,0xef,0x78,0x6b,0x61,0x34,0x55,0x95,0xf2,0x6f,0x95,0x5f,
- 0x84,0xfe,0xe6,0xaa,0xb1,0x7c,0x1f,0x73,0xd5,0x7f,0xb6,0xf0,0x0f,0xcc,0x3c,0x2a,
- 0x8f,0xc2,0x1f,0xa1,0xa1,0xd5,0x7f,0xf6,0xd7,0x63,0x30,0x22,0x5d,0x6f,0xfa,0xdf,
- 0x93,0x9f,0x86,0xb3,0xea,0xf5,0x07,0xfc,0xe6,0xf8,0xfa,0xcf,0x52,0xfd,0xa6,0x09,
- 0x44,0x62,0x7c,0x41,0x7b,0x7c,0x99,0x6f,0x8f,0xfc,0x20,0xbc,0xaa,0xd5,0x0f,0xae,
- 0xdd,0x28,0x07,0xf9,0x30,0x29,0x3a,0x2e,0xb7,0x8e,0xe7,0xff,0x04,0xbc,0xdf,0x67,
- 0xef,0x22,0x5a,0x4e,0x24,0x83,0x7b,0x70,0x63,0xb5,0xa6,0xb5,0x72,0x58,0xa5,0x8a,
- 0x49,0xdd,0x50,0x63,0x74,0xc5,0x3a,0xee,0xb1,0x5f,0xaf,0xdd,0xff,0x22,0xee,0x2d,
- 0x65,0x87,0xa8,0xda,0x2a,0xa8,0xf9,0x9e,0x08,0x6c,0xe0,0xa1,0x94,0xba,0xe5,0xe6,
- 0x75,0x90,0xe0,0x21,0x3c,0x95,0x9b,0xc9,0x7f,0xa7,0xfe,0x5f,0x8f,0xf1,0x19,0x15,
- 0x79,0x8b,0xd8,0x6b,0xb0,0x32,0x5e,0x3e,0x27,0xb8,0x88,0xdd,0xab,0xaf,0xe4,0x33,
- 0x53,0x35,0xdf,0x65,0x3f,0x6d,0xdc,0xc3,0xa7,0x25,0xbc,0x11,0x16,0x71,0xfc,0x3f,
- 0x82,0xff,0xac,0xd5,0x81,0x3f,0xdc,0xf1,0x9e,0xfe,0x0c,0x24,0xe1,0xf6,0x0d,0x4d,
- 0x0b,0xe0,0x25,0x3d,0x94,0xf2,0xc5,0x9b,0xd7,0x06,0x53,0x2a,0x42,0x23,0x45,0x2e,
- 0xca,0xca,0xff,0x3a,0x67,0x6d,0x13,0xce,0x35,0x5d,0x80,0xeb,0xf8,0xcc,0x41,0xb9,
- 0xce,0xb8,0x20,0x35,0x98,0x13,0x3e,0x94,0xbe,0x8b,0x0b,0xa9,0xa1,0xcf,0x6f,0x8c,
- 0xe3,0x3f,0x8b,0xb0,0x60,0x5c,0x2e,0x83,0x17,0xa4,0x24,0xb9,0x05,0x40,0xea,0x87,
- 0xba,0x5e,0x5f,0xbc,0xfc,0x66,0x52,0xd4,0xa6,0x2f,0x2e,0xb9,0xfc,0x3f,0xa8,0x7f,
- 0x1e,0x83,0x99,0x10,0x1b,0x64,0x1a,0x5b,0x47,0xf5,0x0f,0x47,0xe5,0xdb,0x61,0x05,
- 0xaa,0x75,0x95,0x12,0xe1,0x57,0xa0,0x85,0x52,0x0d,0xb6,0xc1,0xb9,0x7e,0x1b,0xfc,
- 0x54,0xd9,0xdb,0x36,0x23,0x59,0xba,0x9c,0x5d,0x81,0x78,0xaf,0x5c,0x57,0xbf,0xcb,
- 0x2e,0x83,0x95,0xbd,0xc2,0x23,0x54,0x8f,0xc0,0xef,0xbf,0x2f,0x53,0x87,0xb3,0xf2,
- 0xdf,0x45,0x35,0x89,0x54,0x30,0x7c,0x85,0x9f,0x77,0x45,0xf4,0x84,0x1a,0x6e,0x5f,
- 0x00,0x1d,0x06,0x4e,0x63,0x92,0x15,0x30,0x14,0x0c,0x15,0xd8,0x03,0x6e,0xfe,0x8f,
- 0x72,0x5a,0x69,0xa0,0x22,0xcf,0x41,0x7e,0xb8,0x71,0x76,0xc2,0x37,0x2c,0x5f,0xc1,
- 0x0e,0x1b,0x0d,0x9d,0xeb,0x50,0x43,0x1b,0x87,0xf5,0x79,0xc9,0x50,0x74,0x7c,0xfe,
- 0xbb,0x95,0xed,0x9e,0xb2,0xfc,0x21,0x0a,0xf5,0x7f,0xa7,0x7e,0x04,0xb1,0xe2,0x63,
- 0xad,0x63,0x7a,0x7d,0xd1,0xf8,0xfc,0x77,0x0a,0x82,0xb4,0xfa,0xd7,0xe3,0xfe,0xe5,
- 0x60,0x3c,0xbc,0x2c,0x14,0xbf,0x72,0x2a,0x1c,0xfc,0x89,0x20,0x3a,0x56,0x18,0xa7,
- 0xda,0xaa,0x0c,0xdf,0x66,0xd9,0xe5,0xff,0xe9,0x5c,0x0c,0xbb,0xd8,0xf4,0x65,0xde,
- 0xcd,0x9e,0xa9,0xb0,0x9a,0x6d,0x5d,0x46,0xd5,0xf6,0xd8,0x6a,0x08,0x2d,0x0e,0xc6,
- 0xdb,0x1f,0xe4,0xbb,0xa0,0x9a,0x36,0x56,0xe3,0xfd,0x3f,0x81,0x03,0x94,0xdf,0x44,
- 0xd9,0x49,0x66,0x6c,0x7d,0x7b,0x05,0x47,0x20,0x64,0x96,0xc6,0x3d,0x15,0xb0,0xbf,
- 0x30,0x10,0xc1,0x2b,0x38,0xaf,0x57,0xe0,0x9f,0x7d,0x56,0xfd,0x67,0x05,0x3a,0x74,
- 0x9d,0xea,0x1f,0x6e,0x6f,0x6f,0xab,0x08,0x19,0x91,0x22,0x0f,0x9d,0xaa,0x20,0x2a,
- 0x35,0xcb,0xd4,0x7f,0x16,0xf8,0xa7,0xaa,0xc4,0xff,0x60,0xb9,0x64,0xf4,0xdf,0x52,
- 0xb5,0x71,0x60,0x05,0xfe,0x75,0x01,0x84,0x56,0x14,0x93,0x69,0xae,0xe2,0x88,0x88,
- 0x2a,0x9d,0xf8,0xa9,0x9d,0xff,0xee,0x1f,0xf4,0x8a,0xfc,0xaf,0x16,0xff,0xaf,0x9a,
- 0x4f,0x1a,0xe7,0x28,0x10,0xf6,0x21,0x55,0xf8,0x81,0x79,0x86,0xbf,0x55,0x7e,0xc7,
- 0xf1,0x17,0xc5,0x72,0xb6,0x4b,0x1f,0xd2,0x7a,0x7b,0x99,0xb2,0xdd,0x59,0x55,0xab,
- 0xef,0x65,0xdc,0x96,0xfe,0x0e,0xe6,0x99,0xf0,0x31,0x28,0xbe,0x5f,0xb2,0xd9,0xb4,
- 0x14,0x99,0x3b,0xfe,0x45,0x68,0x47,0x15,0x6e,0x9f,0x1e,0x7d,0x2b,0xa8,0x3a,0x3b,
- 0xa6,0xac,0x31,0x0a,0x40,0x6d,0x67,0xd4,0x88,0x96,0xf8,0xcf,0xf2,0xfd,0x19,0xff,
- 0x8f,0x42,0x20,0xc7,0x77,0xab,0x57,0x0b,0xf4,0xe9,0xbb,0x16,0x40,0xab,0x5a,0xc2,
- 0x6e,0x80,0xb6,0x96,0x02,0x43,0xad,0xa6,0x8c,0x30,0xd0,0x29,0xf4,0xd3,0x54,0xe8,
- 0xe4,0xbf,0x4f,0xdc,0x4e,0xfd,0xd7,0x9a,0x10,0xe4,0xbc,0xdd,0xb6,0xdf,0xc0,0xf9,
- 0x59,0x6f,0x01,0xd1,0x03,0xc1,0x0d,0x81,0xed,0xf0,0x08,0xed,0x67,0x93,0xb0,0x32,
- 0xe3,0xff,0xb1,0xfa,0x7f,0x45,0x45,0x99,0xa3,0x53,0x2d,0x55,0x4b,0x42,0xf1,0xe2,
- 0x8a,0xbb,0x5e,0x31,0x42,0xad,0xbe,0x8d,0xf2,0x35,0xfc,0x47,0x46,0x77,0xd4,0xff,
- 0x93,0xb6,0x25,0x39,0xf6,0xf7,0x2b,0xf8,0x3f,0x14,0xe4,0xda,0x24,0xbf,0x43,0x6c,
- 0xe7,0x94,0xbf,0x54,0xde,0xae,0x9e,0xd2,0x29,0x1e,0x2a,0x8f,0x70,0x42,0x80,0x88,
- 0x7f,0x0e,0x8d,0xcb,0xff,0xaa,0x02,0xff,0xea,0x6b,0x74,0x3e,0x18,0xa9,0xd2,0x7c,
- 0xb1,0x62,0x9d,0x0d,0x7f,0xa6,0xb6,0xd0,0xd7,0x49,0xf9,0x5f,0x8d,0xb8,0xf0,0x3a,
- 0x2f,0xe2,0xff,0xfc,0x4d,0xcc,0x9b,0xa2,0xfa,0x87,0x6a,0x20,0x11,0x1c,0x2e,0x52,
- 0x83,0xf7,0xab,0xb3,0x77,0xa8,0x29,0x36,0xcd,0x5c,0x99,0x98,0xc9,0xd5,0x3b,0x8b,
- 0x5c,0xf9,0xef,0x2b,0x16,0x88,0x32,0x59,0x38,0x09,0x05,0x94,0x08,0x3f,0x16,0xa9,
- 0x09,0x14,0x20,0x10,0x0a,0x1e,0x0c,0x56,0xb4,0xa3,0xc0,0x43,0xa6,0x3a,0x87,0x1d,
- 0xd2,0x1d,0xfe,0x0f,0xe2,0x9f,0xa7,0xf9,0x34,0xf3,0xca,0x25,0x9e,0xab,0xe1,0x87,
- 0x90,0x38,0x10,0x5b,0xb6,0x72,0x0e,0x0e,0xbb,0xc6,0xf4,0xa4,0x8a,0xae,0x28,0xc1,
- 0xef,0x57,0x57,0xc7,0xf5,0xbf,0xd0,0xfe,0xcc,0x67,0x25,0xfc,0x47,0x59,0x3d,0xfb,
- 0x4d,0xdb,0xac,0xb7,0x7c,0xcb,0xbd,0x97,0xc1,0xf3,0xfc,0x3a,0x2a,0xfb,0x7c,0x59,
- 0x60,0x45,0xfb,0x3c,0x7d,0xc1,0xf2,0xe6,0xac,0xfc,0x77,0x4d,0xb4,0x35,0xe7,0xf2,
- 0x88,0xe7,0x3d,0xa8,0x2f,0xf5,0x27,0x3f,0x35,0x00,0xdf,0xc9,0xad,0x6d,0xcc,0xd7,
- 0xbd,0xc7,0xe0,0x5d,0xa8,0x83,0x6c,0xfe,0x4f,0xba,0xff,0x57,0xc1,0x58,0xf9,0xc7,
- 0x70,0xb8,0x6d,0x56,0x34,0x34,0x56,0x7c,0x59,0xeb,0xf3,0x6d,0xb3,0x77,0x7e,0xaa,
- 0x5f,0xaa,0x85,0x3f,0xf1,0x59,0xa9,0xb5,0xfd,0xf2,0x45,0xfe,0x1f,0x43,0x5d,0x22,
- 0x1f,0x32,0xef,0xd7,0xcb,0x0c,0x75,0x31,0x4c,0x1a,0x7e,0x28,0x90,0x48,0x78,0xdf,
- 0x62,0x45,0xc6,0xdb,0x30,0x4d,0xf1,0xdc,0xc9,0x1e,0x75,0xf0,0x52,0x1a,0xff,0x6c,
- 0xf0,0xb4,0xe6,0xbe,0xce,0x3a,0x29,0xda,0xd5,0xca,0xea,0x94,0xef,0x43,0x59,0xec,
- 0xc7,0xad,0x45,0x1a,0x3c,0x66,0x94,0x01,0x4e,0x6c,0xd4,0xd5,0xff,0x74,0xc0,0xea,
- 0x6f,0xa5,0xb3,0x47,0x14,0x6e,0x28,0x7a,0x4c,0x61,0x39,0x2c,0x69,0xe8,0xaa,0x77,
- 0x3b,0x63,0x13,0x77,0xc5,0x83,0xe0,0xa9,0x68,0x3f,0xea,0xaa,0x3f,0x2f,0xf0,0x4c,
- 0xb4,0x00,0x37,0x35,0xb9,0x87,0x0e,0xcc,0x79,0xc9,0xd7,0xb3,0xe6,0x1a,0xf6,0x2f,
- 0x46,0xc0,0xf4,0x3f,0x19,0x98,0xa1,0x53,0xc5,0x30,0x35,0x24,0x7f,0xd5,0x59,0x6f,
- 0x1b,0x29,0xfe,0xc5,0xeb,0x35,0x84,0x85,0xa3,0x30,0xa6,0x3d,0xf1,0x92,0xbf,0xa4,
- 0x63,0x00,0xde,0x35,0xea,0x07,0xd7,0x7d,0xdf,0x1b,0x8d,0xa3,0x3d,0x0a,0xfb,0xb7,
- 0xb8,0xf2,0xaf,0xad,0xfe,0x5f,0xf5,0x7c,0xd2,0x60,0xf1,0x6c,0xfd,0x70,0x70,0x76,
- 0xbf,0xef,0x3d,0xb9,0x4e,0x3f,0xbc,0xa3,0x61,0xd8,0x37,0xba,0xad,0x8a,0x2a,0x02,
- 0x81,0x3f,0x25,0x67,0xfc,0x3f,0xbc,0x84,0xfc,0x39,0x33,0x7b,0xd4,0xd6,0xf6,0x24,
- 0xdf,0x6e,0x6e,0xab,0x09,0x0e,0x78,0x2a,0x94,0x57,0xcc,0xd0,0xb2,0xe0,0x66,0xb9,
- 0x1c,0x7a,0x78,0x75,0xb8,0x6b,0x87,0xbc,0x6c,0x3c,0xfe,0x89,0xaa,0x3b,0x28,0xfb,
- 0x00,0xa6,0xf3,0x58,0x92,0x85,0x1a,0xd7,0xa8,0xa8,0x7f,0x62,0x07,0x42,0x5b,0x1e,
- 0xe1,0x01,0xdd,0xbb,0xc3,0x55,0x4d,0x29,0x8d,0x7f,0x40,0xdd,0x5a,0xc4,0x83,0x1c,
- 0x02,0x68,0xdf,0x99,0x22,0xc5,0xa1,0x72,0x01,0x0a,0xc0,0x93,0xbc,0x02,0xbc,0x7a,
- 0x6e,0x93,0x33,0x3e,0x8d,0x7f,0xb8,0x1a,0xef,0x00,0xb3,0x1f,0xc7,0xaf,0x05,0x56,
- 0x01,0xfd,0xac,0x72,0x50,0x24,0x02,0xbc,0x4b,0x9f,0x46,0xa2,0x19,0x1c,0x7d,0x98,
- 0xc8,0xb7,0xfa,0x7f,0xad,0x4b,0xca,0xa9,0xf8,0x59,0x89,0x1a,0x4f,0x7d,0xe9,0x2c,
- 0x2e,0x9a,0xfa,0x96,0x85,0x66,0x6e,0xa2,0xf5,0xbb,0x0a,0xe2,0x9f,0xa8,0x2b,0x1f,
- 0xc1,0x9c,0xf8,0x06,0x1c,0x06,0x51,0x84,0x7c,0x52,0x29,0xe2,0x9f,0x7e,0xdf,0xa0,
- 0x3c,0x67,0xf0,0x79,0xcb,0xa3,0x78,0x16,0x44,0xfd,0x84,0x1e,0x39,0xec,0xf0,0x67,
- 0x38,0xe2,0x9f,0x35,0x5c,0x24,0x79,0x55,0x6a,0xfb,0x07,0xcb,0x4f,0x7a,0x36,0x17,
- 0xe9,0x66,0x97,0xe5,0x11,0xba,0xa0,0xfe,0x5c,0x9d,0x6e,0x7a,0x7b,0x02,0x99,0xf8,
- 0x17,0xf1,0x7f,0xa8,0x88,0xba,0x27,0xcc,0x22,0xb0,0x5b,0xd2,0xcd,0x98,0x12,0x78,
- 0x88,0xa7,0xcb,0x40,0x0d,0x18,0xa8,0x81,0x09,0x3a,0x56,0x65,0xf9,0x7f,0xc8,0xc9,
- 0xe6,0xe9,0x61,0x5f,0x55,0xf6,0xb3,0x40,0xaf,0xba,0xb6,0x69,0xbb,0xd1,0xa5,0x57,
- 0xf6,0xca,0x84,0x27,0xb7,0xc1,0x74,0xea,0xbf,0x96,0xcd,0xff,0x39,0xc0,0xc3,0xc4,
- 0xef,0xfd,0x3a,0x7c,0x24,0x85,0xcd,0x50,0x4f,0xf1,0x54,0x76,0xd0,0x76,0x0c,0x92,
- 0x7f,0x0c,0xa1,0x32,0x38,0xfe,0x1f,0xc2,0x3f,0xe7,0xad,0x7e,0x2b,0x69,0x47,0x10,
- 0xb5,0x29,0x3c,0xc7,0x33,0x44,0x68,0x72,0x74,0xb8,0xfd,0x3f,0xbf,0xd0,0x5f,0x28,
- 0xad,0x7a,0xcb,0x97,0x14,0xdd,0x4e,0xbb,0xc9,0xfb,0x8a,0xf6,0x0b,0xaa,0xe9,0xfa,
- 0x03,0x76,0x6b,0x8c,0x8c,0xff,0xa7,0x3f,0x27,0x1f,0xba,0xcc,0xc0,0xa0,0xda,0xcd,
- 0x2a,0xf5,0x75,0x6a,0x79,0x6a,0x7e,0x02,0x72,0x85,0x61,0xf2,0x52,0x20,0x2c,0x4d,
- 0x6d,0xca,0xe6,0xff,0x88,0x26,0x20,0x35,0xcc,0xa7,0xe3,0x44,0xa5,0xbc,0x1a,0x38,
- 0x69,0x80,0x56,0xe2,0x40,0x1e,0xf1,0xbd,0xdd,0xfc,0x9f,0x55,0x94,0xff,0x75,0xb6,
- 0xe9,0x8e,0xce,0x55,0x66,0xd9,0xc9,0x2b,0x3f,0xc3,0x2e,0x6b,0x5d,0xe7,0xf6,0x87,
- 0xe4,0x2d,0x67,0xe7,0xb3,0xf8,0x3f,0xcf,0x40,0xd8,0xf4,0x85,0xbd,0x9e,0xf6,0x67,
- 0xb4,0xf0,0x7b,0x7e,0xaf,0xbc,0xb6,0xe9,0x19,0x6a,0xfb,0x7e,0x3d,0xde,0xff,0xaf,
- 0xb7,0xd6,0x0f,0xe7,0x5f,0xe7,0xce,0xff,0x9a,0xf8,0x24,0xfc,0x19,0xad,0x8f,0x3f,
- 0x29,0xed,0x30,0x44,0xfd,0x1f,0x2e,0x9f,0x34,0xec,0x8e,0x21,0xfa,0x05,0xc4,0x3f,
- 0x95,0xee,0xfc,0x2f,0xd1,0xff,0x82,0x57,0x51,0x5a,0x59,0x08,0xce,0xb0,0x7b,0x5f,
- 0xc5,0x3f,0x14,0x12,0x6d,0xe9,0xf2,0x93,0xf2,0x71,0xea,0x0f,0x92,0xf2,0x25,0x9b,
- 0x33,0xfc,0x04,0x8b,0xff,0x73,0xad,0xe3,0x3f,0xef,0x57,0xa3,0x6c,0x92,0xba,0x0a,
- 0xc8,0xed,0x43,0x85,0x58,0xad,0x40,0xd8,0x09,0x67,0x3c,0xf1,0x7f,0x76,0x9b,0x53,
- 0xd2,0xf1,0xbe,0x78,0x68,0x68,0xcd,0x12,0x76,0xbf,0xb2,0xca,0x4a,0x04,0x3b,0xcc,
- 0x29,0xdf,0x5f,0xbd,0x98,0xff,0x53,0x61,0xce,0xd7,0x8a,0x26,0xc4,0x44,0xa0,0x79,
- 0x56,0xd1,0xbf,0xe2,0x0a,0xac,0x30,0xd3,0x15,0x26,0x45,0x86,0x6f,0x86,0x9f,0x4c,
- 0xfc,0x9f,0xf3,0xbc,0x9a,0x9c,0x3c,0xd7,0xd3,0x36,0x93,0xfc,0x9f,0x3d,0xc6,0xa1,
- 0x44,0x3d,0xcf,0x4f,0x94,0x0f,0x6b,0xef,0x91,0x7d,0xbf,0xa8,0xfe,0xb3,0xd8,0x74,
- 0x7b,0x09,0xf6,0xd4,0xc1,0x67,0x63,0x2c,0x9a,0x6b,0x33,0x84,0x59,0xe9,0xc5,0xf5,
- 0x0f,0x5d,0xfb,0x7d,0x8a,0x8f,0x14,0x68,0x5f,0xaa,0x68,0xca,0xf0,0x43,0xe4,0x02,
- 0x2a,0x04,0x74,0x49,0xff,0x4f,0x1f,0xbc,0x22,0xfa,0x9f,0x7a,0xa6,0x6a,0xab,0xc7,
- 0xfb,0x7f,0x32,0xfd,0xdf,0x25,0xc2,0x3f,0x5f,0xcf,0xf8,0x8b,0x54,0x3b,0x70,0x23,
- 0xbb,0xc6,0x8f,0xe3,0xff,0x88,0x6a,0xcf,0x45,0x43,0xf1,0xf5,0xa2,0xff,0xa9,0x27,
- 0x97,0xb7,0xd9,0x81,0xb0,0xb4,0x6b,0xe8,0x2f,0xf0,0x7f,0xfa,0x45,0xdb,0x29,0xb9,
- 0xac,0xc9,0xf6,0x3f,0xa8,0x63,0xb7,0xd4,0x95,0xac,0x1b,0xcf,0xff,0xb9,0xa0,0x59,
- 0xf5,0x0c,0x45,0xff,0xf7,0x75,0xbf,0x2a,0x46,0xfc,0x93,0x7e,0xde,0x88,0x45,0x95,
- 0x71,0xf3,0x7f,0x72,0x70,0x7e,0x82,0xc2,0xed,0x3f,0xc4,0x0f,0x22,0x0c,0xf0,0xbd,
- 0xd4,0x51,0xa7,0x1f,0xb4,0x89,0xd0,0x07,0x2d,0xd7,0x8a,0xab,0x5f,0x06,0xf5,0x7f,
- 0x37,0x84,0xb7,0xe7,0x98,0x16,0x83,0x99,0x25,0x6a,0x67,0x53,0x26,0x10,0x06,0x31,
- 0xbd,0x52,0x2d,0xe0,0xec,0x70,0xa6,0xff,0xa9,0xb2,0x51,0x79,0x8c,0xe1,0xa6,0xbe,
- 0x95,0xfd,0x3b,0xac,0x30,0x66,0xd0,0xfc,0xac,0xd5,0xdb,0x98,0x78,0xcc,0x67,0xa1,
- 0x4d,0x15,0x19,0x61,0xae,0xfc,0x2f,0x65,0x3b,0xfc,0xab,0x36,0xd3,0xf0,0xbe,0xc4,
- 0x4e,0x1a,0xf7,0xc1,0x4c,0x43,0xdd,0xec,0xb1,0x03,0x61,0xe9,0x19,0xf6,0x50,0x23,
- 0x36,0x7b,0xbc,0x13,0xff,0xda,0xc4,0x86,0x02,0x07,0x25,0xea,0x7f,0x2a,0x57,0xb4,
- 0x1f,0x74,0xbf,0xf1,0xac,0xfc,0x2f,0xd1,0xff,0x9d,0xd3,0x78,0xc2,0x3f,0xe9,0x61,
- 0x65,0xb6,0xc0,0x2e,0xaa,0x7f,0xa8,0x6a,0x49,0x38,0x6b,0xcc,0x86,0x02,0x53,0x8e,
- 0xc3,0x00,0xed,0x67,0x71,0xfe,0xb5,0x7e,0x97,0x07,0x92,0x88,0x58,0x4d,0xe3,0xf8,
- 0x3f,0xd3,0xc9,0xc9,0x83,0xfb,0x53,0xdc,0x78,0x7a,0xa3,0xac,0x86,0xad,0x01,0xea,
- 0x70,0x87,0x9f,0x89,0xc3,0x88,0x76,0xd6,0x43,0x8e,0x01,0xa4,0x4d,0x3d,0x80,0xdb,
- 0x70,0x4e,0xdb,0x52,0xfd,0xc6,0x50,0x61,0x87,0xe2,0xcb,0x62,0xf0,0x66,0xf3,0x7f,
- 0x76,0xf3,0x69,0x96,0xff,0xb6,0x83,0x97,0x99,0x57,0xea,0x05,0x25,0xb0,0x2a,0xe3,
- 0xd1,0xcd,0x1f,0x20,0xfe,0x8f,0x93,0x9f,0x18,0x53,0x8b,0xe0,0x24,0x9f,0xa5,0x17,
- 0x44,0xe4,0x03,0xac,0x93,0x5f,0x1b,0xf5,0x2f,0x91,0xeb,0xd5,0xe7,0x1d,0x46,0x74,
- 0xec,0xaa,0xb7,0x50,0xb8,0x4b,0x1f,0xcf,0xff,0xc9,0x78,0x8f,0x13,0x08,0xa4,0x9d,
- 0xc4,0x8a,0x33,0xba,0xc8,0x6f,0x72,0xf5,0xff,0x52,0xba,0xe1,0x2c,0x6f,0xd0,0xfd,
- 0x07,0xe5,0x0d,0x70,0x34,0xde,0x10,0xf5,0xbf,0xeb,0xad,0xd7,0x8e,0xd8,0x89,0x3c,
- 0x17,0x36,0xd5,0x0f,0xad,0xa3,0xfc,0x77,0x7b,0x3c,0xf5,0x7f,0x17,0xfe,0x9c,0xb1,
- 0x76,0x1f,0xee,0xa7,0x42,0xe6,0x0b,0x41,0x56,0xd2,0x44,0xf7,0x5f,0x10,0x66,0x6f,
- 0x98,0xbb,0x13,0xa1,0xd4,0xfc,0x6f,0x07,0xde,0xbb,0xd1,0x9e,0x4f,0x0d,0xe2,0xb0,
- 0x87,0x9c,0x5a,0x07,0x58,0x9c,0xea,0x1d,0x19,0xde,0xbb,0x18,0xf5,0x0b,0x9b,0x62,
- 0x3d,0xef,0x0f,0xf5,0x19,0xfd,0xde,0x7b,0xdc,0xfc,0x1f,0xea,0xff,0xce,0xd3,0x7c,
- 0x06,0x61,0xe6,0x82,0xec,0x46,0x63,0x9b,0xc5,0x78,0x19,0x49,0xcf,0x67,0x53,0xc6,
- 0xff,0xbc,0x63,0x22,0xea,0x93,0x98,0x78,0x89,0x09,0xcb,0xad,0xf7,0x8b,0xe2,0xa5,
- 0xec,0x8f,0x69,0x22,0x81,0xfa,0xa6,0x68,0x55,0xe9,0xe2,0xff,0xc4,0x9d,0xfc,0x77,
- 0x38,0xae,0xfd,0x11,0x0a,0xf0,0xb5,0x36,0x6f,0xd7,0xff,0x1f,0x10,0xf5,0x9f,0xa9,
- 0x51,0x88,0xe8,0x88,0x9a,0x72,0xd6,0x4f,0x52,0x13,0xf5,0x90,0x01,0x37,0xf5,0xa3,
- 0x13,0xcf,0xa2,0xf5,0x5f,0x17,0xed,0xf8,0x17,0xe6,0x24,0xfe,0xbc,0x29,0x04,0x29,
- 0x8b,0xff,0xa3,0xd8,0xfe,0x1f,0x12,0x36,0x78,0x13,0x72,0x94,0x91,0x63,0x67,0x42,
- 0x32,0x53,0xcf,0xd0,0xed,0xff,0xd1,0xdd,0xde,0x57,0xd1,0x86,0xa6,0x82,0xd3,0x30,
- 0xd9,0xc5,0xa0,0x4e,0x64,0xfc,0xcf,0x25,0x99,0xfc,0xf7,0xc8,0xee,0xf2,0x10,0xf7,
- 0xea,0xed,0x37,0xb2,0x0e,0x2b,0x02,0x3b,0xc2,0xb7,0xe9,0xa1,0x03,0xde,0xaa,0x5c,
- 0xb7,0xff,0xc7,0xaa,0xbf,0x41,0xfe,0x67,0xe8,0x99,0x86,0xc0,0x6f,0x9b,0xbc,0xd6,
- 0xe2,0x97,0xee,0x21,0x7b,0x54,0xd3,0x30,0xe0,0xdf,0xdd,0x91,0xc8,0xe4,0x7f,0x4d,
- 0x4c,0xf7,0xbf,0xd8,0x63,0x59,0xf3,0x35,0x7e,0xbd,0x78,0x8f,0x95,0xb6,0x73,0x82,
- 0x18,0x65,0x7a,0x43,0xbf,0xbf,0x5b,0x1e,0x76,0xf0,0x8c,0xa8,0x7f,0x88,0x20,0xd0,
- 0x67,0xca,0x97,0x91,0xff,0xc7,0xf0,0x3d,0x23,0xd7,0xc0,0xeb,0x7c,0x6e,0x0a,0x67,
- 0x6c,0x32,0xa5,0xc6,0x53,0x20,0x2c,0x9c,0xc1,0x93,0x71,0xd1,0xff,0x4b,0x0f,0x72,
- 0x16,0xd2,0x9e,0x86,0x40,0x34,0x92,0x9b,0x1b,0x34,0xd0,0xbe,0x1f,0xb8,0x32,0x56,
- 0x34,0x1d,0xf6,0x21,0xde,0x23,0x28,0x98,0xe1,0x03,0xe4,0xac,0x25,0x76,0x37,0x6d,
- 0xba,0x7d,0xa2,0xbf,0x8c,0x8a,0x9b,0xb9,0x64,0x3c,0x88,0xf6,0x08,0x81,0x1f,0xa5,
- 0xc2,0x51,0x7d,0xf5,0x80,0x64,0xcf,0xbf,0xc8,0xff,0x8a,0x6d,0x6d,0x57,0x77,0x1c,
- 0x08,0xf1,0x1f,0xc3,0x56,0x43,0xdd,0xc5,0x42,0xfa,0x9a,0xf6,0x80,0x99,0x17,0x2f,
- 0x9a,0x49,0x7f,0x3a,0x9a,0x97,0x70,0xed,0xf7,0xa5,0x89,0x23,0xda,0x05,0x3e,0x7b,
- 0x8f,0xaf,0x9f,0xec,0xaf,0x54,0xb5,0x38,0xd4,0xd7,0x3e,0x4d,0x3b,0xca,0xab,0x7b,
- 0xe7,0xc3,0x35,0x33,0xb5,0x0f,0x79,0x38,0xe5,0xd3,0x64,0x70,0xfa,0xbf,0x8f,0x4a,
- 0x54,0xff,0x07,0x97,0x19,0x85,0xbd,0x2e,0xc0,0xbc,0x5e,0xff,0x60,0xf1,0x08,0xed,
- 0x58,0x4d,0xff,0x10,0x05,0x46,0xf5,0x06,0xee,0xbb,0xa8,0xff,0x7b,0xaa,0x6a,0xd0,
- 0xd7,0x6e,0xf1,0x5b,0x0c,0xff,0x56,0x79,0x9a,0x46,0xf8,0x27,0x64,0xca,0xef,0xc7,
- 0x5f,0xa0,0xd4,0x3c,0x77,0xfd,0x43,0xf2,0xff,0xec,0x36,0x75,0xae,0x6e,0x65,0x21,
- 0xb4,0xe6,0x95,0xe6,0xfc,0xa7,0x3c,0x33,0xf4,0xd7,0xa8,0x7e,0x51,0x77,0xd3,0x71,
- 0xfe,0x1a,0xf5,0x43,0xd9,0x33,0xae,0xfe,0x21,0xee,0xbf,0x20,0xd8,0x89,0xf3,0xf3,
- 0x73,0xb6,0x24,0xea,0x5d,0xcb,0xa6,0x6b,0xb1,0x7e,0x34,0xd3,0xaa,0xc5,0x3f,0x5c,
- 0x8a,0x1b,0x55,0x7b,0x36,0xed,0xfc,0xaf,0xb2,0xe9,0xb1,0xaf,0xb2,0x06,0xbe,0x8a,
- 0xcf,0xf8,0x8a,0xf7,0x1f,0x8b,0xae,0x84,0x9f,0xf0,0x3b,0x87,0xd4,0xef,0x36,0x9d,
- 0x87,0x1f,0xb6,0x97,0x27,0xd4,0x61,0xa6,0x66,0xf5,0x7f,0x3f,0x03,0x61,0x43,0x5d,
- 0x23,0xe7,0xf2,0xdf,0xeb,0x75,0x2d,0x5e,0x4d,0x56,0xc0,0xd4,0xba,0x87,0x43,0x8a,
- 0x7c,0xd8,0xec,0x15,0xd0,0x48,0xbe,0x62,0x5c,0xfd,0x9f,0x9f,0xf5,0xfb,0x8f,0xc9,
- 0x67,0x8d,0x0f,0xd4,0x86,0x96,0x85,0xa3,0x82,0x36,0x4f,0x65,0x7f,0x28,0xff,0x8b,
- 0xf8,0x3f,0x77,0xba,0xf0,0x5e,0x50,0xd9,0xa9,0x9c,0x51,0xaa,0x24,0x1f,0xc8,0x21,
- 0xf6,0x82,0x4e,0x68,0xd0,0x5b,0x27,0x2a,0xb4,0xfb,0x56,0x5a,0x6f,0x84,0x77,0x6e,
- 0xc2,0x57,0x6e,0x8f,0xb7,0xf2,0xbf,0x74,0x20,0xd8,0x03,0x0f,0x4f,0x9b,0x61,0x7a,
- 0x96,0xc9,0x93,0xc8,0x23,0x84,0x40,0x85,0x89,0xd4,0x78,0xb3,0x60,0x19,0xbb,0xc2,
- 0xd9,0x31,0x34,0xc2,0x4f,0x95,0xd9,0x04,0x72,0x06,0xd8,0x4f,0xf5,0x55,0xa8,0x9d,
- 0x4a,0x6b,0xd8,0x1d,0x73,0x1e,0xeb,0xfc,0x5a,0x6a,0x5a,0x84,0x4d,0xd6,0xf7,0xc6,
- 0xca,0xdf,0x52,0xcf,0x32,0x75,0x5c,0xfe,0x17,0xce,0x5e,0x45,0xfb,0x43,0x50,0x4e,
- 0x6a,0x67,0x8e,0x27,0x5f,0xdf,0x45,0xf9,0x98,0x35,0x6c,0x9d,0xbe,0x9b,0xeb,0xef,
- 0xa2,0x22,0x2a,0xca,0x8a,0x7f,0x7d,0xbc,0x6c,0x16,0x0f,0x8d,0x78,0x77,0x50,0x58,
- 0x33,0x16,0xfa,0xbd,0xbc,0x1c,0xce,0xb7,0xd6,0xf3,0xcf,0x3e,0x2a,0x5f,0x07,0x27,
- 0xa0,0x3c,0xee,0x1b,0xf1,0xd6,0x8e,0x8b,0x7f,0x3d,0x05,0xfe,0x4e,0x34,0xc9,0xc4,
- 0x7f,0x26,0x47,0x90,0xc8,0xd0,0x29,0x00,0x39,0xa5,0x2d,0x87,0xa7,0xb4,0x82,0x95,
- 0xcd,0x59,0xf9,0x5f,0x54,0xe4,0x30,0xea,0x2b,0xf5,0x4e,0x8d,0xfc,0x4a,0x0a,0x2f,
- 0xf1,0x95,0x10,0x11,0x08,0x11,0x02,0xc2,0x66,0x04,0xd2,0xac,0x6a,0x89,0xef,0x5f,
- 0xc6,0xe7,0x7f,0x99,0x81,0x6f,0x06,0x37,0xb2,0xa9,0xb0,0x5a,0x0a,0x10,0xed,0x67,
- 0x0a,0xec,0xeb,0xa5,0x46,0xe4,0xf2,0x8d,0xca,0x6a,0x75,0xce,0x12,0x75,0xc3,0xf8,
- 0xfc,0xaf,0xd2,0x40,0xb3,0xba,0x9e,0xd9,0xfd,0x2f,0xda,0xa7,0x14,0x52,0xe2,0x52,
- 0xe9,0x26,0x36,0xc5,0x58,0x5d,0x26,0xfa,0x35,0x64,0xc7,0xbf,0xf6,0x59,0x6e,0x9f,
- 0x5c,0x68,0xd3,0xf5,0xcf,0x2c,0xa1,0x44,0xf8,0xdd,0x4a,0xc8,0x08,0x16,0x35,0x2d,
- 0x86,0x36,0x36,0x95,0xfc,0x3f,0x19,0xfc,0x23,0xf8,0x3f,0xad,0xf8,0x7e,0x1f,0x94,
- 0xcb,0x8c,0xa3,0xad,0x5b,0xc1,0xb7,0xc2,0x53,0x66,0x8c,0xb5,0xd6,0x97,0x90,0xea,
- 0x42,0x8b,0x7a,0x8f,0x95,0xff,0x6e,0x7f,0x5f,0x94,0xff,0x75,0x4e,0xfb,0x59,0xcb,
- 0xc2,0x5f,0xc1,0xcb,0xca,0x29,0xad,0xa1,0xc5,0xff,0xab,0xc2,0x93,0xc6,0x2f,0x05,
- 0xff,0x99,0x9d,0x54,0xfe,0xa4,0xfc,0x33,0xf1,0x79,0xb2,0xfb,0xbf,0xff,0x8e,0xbc,
- 0xf1,0x2f,0xc9,0xdf,0x84,0x77,0xc3,0x38,0x2d,0xb8,0xff,0x32,0xfe,0x44,0x89,0xc0,
- 0x1b,0xe4,0x39,0xf0,0x22,0xcc,0xa2,0x23,0x87,0xb3,0xfa,0x9f,0xd6,0xa8,0x77,0x29,
- 0xde,0xf6,0x76,0x3d,0x16,0x0b,0xd7,0xe2,0x66,0xac,0x5d,0x37,0x7a,0x82,0x95,0x6a,
- 0xb0,0x0d,0x77,0xa0,0x3b,0x18,0xf5,0xbf,0x18,0xd7,0xff,0x7d,0xbd,0xa6,0x1b,0xf3,
- 0x8b,0x99,0xa2,0xb7,0x95,0x85,0x0c,0xb5,0xd0,0xe3,0x23,0x04,0x38,0x5f,0xa5,0xc2,
- 0x47,0x54,0xf8,0x51,0xd5,0x5c,0xfd,0x70,0x37,0x4d,0xdc,0x9e,0xb3,0x0f,0xb6,0x46,
- 0xbc,0x1b,0x72,0x17,0x37,0xad,0x86,0xe9,0xc6,0x1a,0xc4,0x93,0x51,0x82,0x91,0x91,
- 0x78,0x60,0x31,0xfc,0x9c,0x07,0x50,0x60,0xef,0x38,0xf1,0xb2,0xc4,0xf7,0x87,0xe0,
- 0x95,0x29,0x81,0xcf,0xf9,0xff,0xc5,0x5b,0xa1,0x11,0xda,0xf1,0xfd,0xcc,0x7b,0x0d,
- 0x9c,0x8a,0xd5,0x1b,0x0b,0xe2,0x5d,0x5f,0xe1,0xbd,0xd0,0x7d,0x9b,0x6f,0xd3,0xb8,
- 0xfc,0xaf,0x34,0xdb,0x67,0x3b,0xbc,0x02,0x35,0x44,0x2c,0x1c,0x52,0x44,0x61,0xcc,
- 0xa4,0xbc,0x3d,0x7a,0x4a,0xaa,0x8f,0xce,0xdc,0x50,0x9c,0xdd,0xff,0x7d,0x38,0x52,
- 0x55,0x14,0xe2,0xe5,0x16,0x10,0x2d,0xc0,0xfd,0xb1,0x3e,0xd6,0x44,0x5f,0xdc,0x03,
- 0x5b,0x60,0x79,0x81,0x88,0x48,0x66,0xf7,0x7f,0x7f,0x8a,0x6f,0x4b,0xa8,0xc7,0x3d,
- 0x35,0x84,0x76,0xda,0xbd,0xef,0xb2,0xeb,0xe0,0xb8,0x12,0xa0,0xb2,0x87,0xa5,0xfa,
- 0x53,0x91,0x19,0x3c,0x7f,0x88,0xb9,0xfa,0xbf,0xe3,0xfe,0xab,0xdc,0x48,0x0c,0xaa,
- 0x4f,0x6e,0xd8,0x61,0xf3,0x0f,0xf3,0x51,0xc0,0x65,0x03,0xec,0x7e,0x54,0x65,0xa1,
- 0x95,0x79,0xd5,0xee,0xfe,0xef,0xc4,0xff,0x51,0xcb,0x46,0x83,0xe1,0xdc,0xcd,0x22,
- 0x7f,0x41,0xfe,0x26,0x7e,0xc8,0xff,0xc6,0xcb,0xfa,0x55,0x63,0x65,0x89,0x68,0x0d,
- 0x9f,0xb7,0x84,0x65,0xf6,0xe3,0x54,0xff,0xf9,0x7d,0x54,0xc2,0xea,0x72,0xf9,0x07,
- 0xf0,0xe7,0xc4,0xbc,0xb7,0x0a,0xc6,0xe4,0x2b,0xb4,0x3d,0x7c,0x77,0x2a,0x14,0x6c,
- 0xff,0xa9,0xa0,0x46,0xe7,0x2f,0x97,0x59,0x06,0xff,0x38,0xfd,0xdf,0xa1,0x82,0x1c,
- 0x17,0x84,0x76,0x44,0x62,0x66,0x9f,0xff,0x21,0xd9,0x02,0x42,0xd9,0xfd,0xdf,0x73,
- 0xce,0xa3,0xfe,0xbf,0x1e,0x8d,0x54,0xf3,0x74,0x2a,0x7b,0x98,0x0a,0x8d,0x79,0xab,
- 0xe1,0x42,0xe7,0xbd,0xc7,0xd0,0x22,0x3c,0x45,0x1b,0x5b,0x91,0xff,0xe5,0xf8,0xd3,
- 0x1e,0xb1,0xea,0x6f,0x18,0x6a,0x95,0xe7,0x7e,0xd1,0xbd,0x5d,0x6d,0x25,0xda,0x61,
- 0x70,0x6a,0x4a,0xbd,0x55,0xe6,0xd1,0xc7,0xb4,0x19,0xb7,0x07,0x97,0xb1,0xb7,0x9a,
- 0xec,0xf1,0xd4,0xff,0xf4,0x31,0x75,0x5a,0xab,0xba,0xec,0x89,0x8d,0xb1,0x09,0x14,
- 0xff,0x8a,0xb2,0xdb,0xa2,0x7b,0x8c,0xaf,0x99,0x6a,0x4b,0xae,0x55,0x01,0xbb,0x74,
- 0x5c,0xfd,0x67,0x75,0x97,0xaa,0x47,0xd5,0x7f,0x61,0x8a,0xe8,0xf6,0xa5,0xae,0xc0,
- 0x8d,0x7f,0x37,0x9b,0x6a,0xaa,0x5a,0xae,0xa9,0xe3,0xfe,0xa2,0x55,0x75,0xd7,0xff,
- 0x19,0x46,0x7b,0x77,0xca,0xac,0x1d,0x0b,0x3d,0x29,0x3f,0x84,0xf6,0xa2,0x3e,0xe5,
- 0x7b,0x4c,0xfa,0x9a,0xb1,0x1b,0xed,0x11,0x6e,0x34,0xde,0x21,0x57,0x4f,0x4a,0xbd,
- 0xaa,0xc3,0x15,0xff,0x92,0x76,0xc2,0x29,0xe3,0x49,0xb2,0xef,0x43,0xc6,0x47,0x4a,
- 0xbd,0xb9,0x2e,0x21,0x3f,0x08,0x63,0x4d,0xd5,0x66,0xbe,0x4a,0x0c,0x90,0xbe,0xfa,
- 0x61,0x81,0xb7,0x9d,0xf9,0xd1,0x9e,0x14,0x65,0xa2,0x51,0xdb,0xcc,0x31,0xfe,0x3b,
- 0xcc,0xea,0xf7,0xbd,0x2a,0xd7,0xf2,0x11,0x69,0xb6,0xe9,0x4b,0x79,0xc3,0xc2,0xd5,
- 0xef,0x3b,0x29,0xab,0x4e,0xfc,0x6b,0x05,0x2c,0x85,0x5f,0xa6,0x2a,0xa3,0xea,0xeb,
- 0x72,0x0b,0xc2,0x1e,0xb4,0xef,0x7d,0x4d,0x01,0x1e,0x4b,0x05,0xcc,0xcf,0x3e,0x22,
- 0x7f,0x89,0xef,0xeb,0x0d,0x2d,0xf3,0x25,0xdb,0x83,0x59,0xfe,0x9f,0x7d,0x9c,0xd8,
- 0x3e,0x1b,0xa6,0x88,0x6a,0x3f,0x68,0xdd,0x80,0x3e,0x13,0x33,0xc2,0x73,0xa7,0xc2,
- 0xbe,0xb6,0xca,0x94,0xa8,0xd7,0xea,0x8a,0x7f,0x49,0x38,0x09,0x51,0xfa,0xfa,0x38,
- 0x6e,0xfc,0x7b,0x83,0x70,0x33,0x48,0x31,0xd0,0x07,0xf3,0x34,0x0f,0x42,0x71,0xdc,
- 0x98,0x4c,0xd3,0x3c,0xcc,0xb1,0x5f,0xed,0xf9,0x4b,0xe9,0xfe,0x25,0xdf,0x7a,0xb9,
- 0xc2,0xa0,0xeb,0xa3,0xa1,0xc1,0xcf,0x5c,0xa9,0x3a,0x8a,0x6a,0xa7,0x4c,0x24,0x92,
- 0xe0,0xa3,0x81,0x93,0x7f,0xba,0xf5,0xaa,0xb3,0xf0,0x5d,0x8a,0xef,0xbc,0x24,0x6f,
- 0x34,0xdf,0x24,0xfb,0x6e,0xb2,0x51,0x15,0x11,0xe0,0x51,0x6a,0x74,0x25,0xfc,0xcf,
- 0xc4,0x7f,0x76,0xd5,0x7f,0x26,0x98,0x34,0x9b,0xba,0x55,0x96,0xc2,0x11,0xaa,0xff,
- 0x13,0xf3,0x2e,0x17,0x65,0x7f,0x10,0x3f,0x7f,0x1d,0x44,0xff,0xf7,0x1e,0x04,0x6b,
- 0x99,0xf8,0xd7,0x08,0x3c,0xa1,0x50,0x35,0x42,0x4f,0x90,0xd0,0x60,0xca,0x1b,0xbb,
- 0x75,0x7a,0x6b,0x17,0x9f,0x9e,0xf2,0xf6,0x34,0xf9,0xf4,0x75,0x94,0x08,0xd6,0xd3,
- 0x14,0x76,0xf1,0x7f,0xfa,0xc8,0xed,0x63,0x94,0x86,0xd1,0x48,0x09,0x98,0x97,0x10,
- 0x8e,0x7a,0xab,0x11,0x2a,0xef,0xb0,0x12,0x0d,0xee,0xc9,0xf8,0x7f,0x0a,0x77,0x8a,
- 0x6c,0x32,0xb5,0x27,0x77,0x3a,0xce,0xff,0xd7,0x4d,0x6f,0x0c,0x55,0x5a,0x97,0x99,
- 0x6e,0x84,0x9a,0xee,0x88,0xba,0x3c,0x53,0x0f,0x8a,0xf8,0x3f,0x3c,0xb9,0x04,0xd7,
- 0xcf,0x74,0xf5,0x85,0x38,0xae,0x87,0x90,0x3c,0x1d,0x5e,0x31,0xab,0xac,0xfc,0x2c,
- 0xab,0x62,0xb3,0x6c,0x38,0xf1,0xac,0x14,0xae,0x9f,0xf3,0x16,0xe8,0x4d,0xe7,0x03,
- 0xa6,0xe4,0x4d,0x38,0x5f,0x4f,0xe3,0x11,0x2f,0x41,0xc7,0xbd,0x24,0xf4,0x44,0xed,
- 0xf1,0x2d,0xb8,0x7f,0x7f,0x81,0xba,0x39,0xf7,0xc8,0x41,0x0b,0x76,0x26,0xe4,0xa5,
- 0x2c,0xed,0xff,0x39,0x2e,0x8e,0x50,0xfd,0x1f,0x37,0xff,0x27,0xb7,0x43,0xdf,0x6a,
- 0x06,0x6b,0xf0,0x6e,0x5f,0xb3,0x89,0x64,0x1d,0xbc,0x9a,0x1e,0x73,0x44,0x5d,0x85,
- 0x47,0xae,0x0a,0x37,0x65,0xf8,0x3c,0x84,0x7f,0x3a,0x78,0xf4,0x68,0x9e,0xc6,0x96,
- 0x58,0xd5,0xd1,0x81,0x45,0xd4,0x0e,0xbe,0x5d,0x8c,0x17,0x33,0x46,0xf5,0x7f,0x1c,
- 0x7e,0x7b,0x52,0x9a,0xcc,0x57,0xc6,0xcb,0x86,0xf2,0x4e,0x79,0xbe,0x0d,0x3f,0x4c,
- 0xcc,0x48,0x5d,0x19,0xd9,0x7a,0x05,0xac,0xe3,0x53,0x52,0x57,0x2e,0x67,0x6f,0xe4,
- 0xad,0x4a,0xcc,0x24,0xff,0xcf,0x59,0xfb,0xf2,0x88,0x7f,0x14,0xba,0x7f,0xf3,0xb3,
- 0x05,0x9e,0x08,0x3c,0xa3,0x13,0x11,0x5a,0xc6,0xbf,0xa8,0x8a,0xb6,0x17,0xc4,0x08,
- 0xaa,0x4f,0x45,0xae,0x97,0x5f,0x75,0xc6,0x23,0xfe,0xe1,0x02,0x2d,0x2f,0xf3,0xf6,
- 0xd0,0x46,0xde,0x9c,0xa0,0xcb,0x47,0x2d,0x47,0x50,0x92,0x3a,0xea,0x32,0xab,0xff,
- 0x85,0x8b,0xff,0x43,0x65,0x10,0xba,0x53,0xbe,0xb8,0x1c,0xbc,0x51,0xcc,0x4f,0x10,
- 0x27,0xea,0x19,0xab,0x2c,0x15,0x9e,0xda,0x52,0x45,0xd4,0xbe,0x43,0x0e,0x9f,0x87,
- 0xf8,0x3f,0xed,0x96,0x93,0x67,0xb2,0xb5,0x6d,0x8c,0xa2,0xfe,0x59,0x05,0x5b,0xac,
- 0xfd,0xd4,0x36,0xab,0x22,0x62,0x86,0x0f,0xc6,0xe1,0x71,0x0a,0x7b,0xa5,0xd4,0xa3,
- 0xec,0x8a,0x04,0xe2,0xbd,0x63,0xde,0xe1,0x40,0x81,0xdd,0xf6,0xe2,0x0d,0xf8,0x61,
- 0xb2,0x2c,0x35,0x7f,0x79,0x91,0xe9,0xc2,0x3f,0x08,0x1a,0x35,0x7d,0x13,0x82,0xc6,
- 0x09,0xfa,0x6a,0xb1,0x11,0x6b,0xcf,0xe7,0xa2,0x8c,0x9b,0xd5,0x58,0x36,0x7a,0x31,
- 0xff,0xe7,0x30,0x9f,0x1d,0xf7,0x0d,0x21,0xda,0x21,0xb7,0x8f,0xff,0x1d,0xf9,0xfa,
- 0xc0,0x73,0x46,0x95,0x45,0x84,0x7e,0xd5,0xea,0x7f,0xf1,0x91,0xab,0x9f,0x66,0x8a,
- 0x11,0xfe,0x99,0xc9,0xbd,0x66,0x7a,0xf7,0x3d,0xff,0x98,0xe2,0xe4,0x23,0x0f,0x5f,
- 0xa2,0xfe,0xa1,0x66,0x65,0x7b,0xa5,0xbb,0x21,0xf8,0x7f,0x24,0x88,0x40,0xd5,0xd4,
- 0xdf,0x6a,0xb1,0x94,0x26,0x02,0x3d,0x93,0x79,0xde,0x8c,0xff,0xe7,0x5a,0xab,0x7a,
- 0xe1,0x26,0xf6,0x07,0x96,0x67,0x95,0xdd,0x73,0x18,0xce,0xa9,0x9c,0x8b,0xf9,0xcf,
- 0x6c,0x71,0x70,0xb5,0x16,0xa0,0xe8,0xfc,0x50,0x67,0x1e,0x4c,0x6d,0xa4,0x23,0x54,
- 0x38,0xa8,0xd1,0x3b,0x2e,0xff,0xdd,0x6a,0xf2,0x5e,0x14,0x68,0x49,0x97,0x7d,0x66,
- 0x7d,0xb1,0xd5,0x7a,0x82,0xae,0x60,0xbb,0x86,0x72,0x33,0xfc,0x90,0x9e,0xfc,0x3b,
- 0x8d,0xb1,0x5b,0x45,0xd9,0xe7,0x46,0xea,0x76,0x4a,0x4f,0x37,0x0c,0xfd,0x4c,0xd0,
- 0x9c,0x1a,0x8d,0x1e,0xeb,0x79,0x3f,0x76,0xec,0x5d,0xff,0x55,0x2f,0x1b,0xe7,0xb4,
- 0x79,0x86,0xff,0x16,0xef,0x9e,0xa6,0x73,0xe9,0x32,0xce,0x78,0xe4,0xa7,0x96,0x3f,
- 0xe7,0x54,0xc9,0xb8,0xfa,0x87,0xa5,0x13,0x4f,0xea,0xef,0xab,0xa8,0x84,0x07,0x3b,
- 0x08,0xed,0xcc,0x16,0x8e,0x23,0xfe,0x22,0x25,0x46,0xa1,0xd0,0xf4,0x3b,0x8b,0x1a,
- 0x94,0xe9,0xff,0xbe,0xbc,0x34,0x05,0x6b,0x0c,0xea,0x66,0x8e,0x9b,0xca,0x98,0x88,
- 0x76,0xb1,0x14,0xa3,0x32,0x38,0x22,0x22,0xd6,0xdf,0x5a,0x39,0x9e,0xff,0x63,0xf1,
- 0x31,0xd4,0xee,0x76,0x45,0xfd,0xb1,0xd5,0xff,0xe2,0x79,0x58,0x6f,0x54,0xd0,0x83,
- 0x0f,0x41,0xda,0xf1,0x95,0x59,0x0f,0xa5,0x39,0xdb,0x95,0xd5,0x94,0x76,0x17,0xf7,
- 0xac,0x64,0x3f,0xd2,0x71,0x3e,0x37,0x92,0xdb,0xc7,0x4a,0xbb,0x1b,0x92,0x7e,0x64,
- 0x4d,0xb5,0xab,0xfe,0x61,0xc9,0x49,0xe3,0x7d,0x68,0x68,0x0d,0xc5,0xa5,0x6a,0xe5,
- 0xdf,0xa9,0x7e,0xf5,0xf7,0xe5,0xb7,0xe1,0x15,0xa3,0xda,0x66,0x7c,0xd5,0x8f,0xab,
- 0x7f,0x08,0x9d,0x60,0x95,0x01,0x17,0xf5,0x0f,0xeb,0x8d,0x09,0x9b,0xe4,0xe7,0xdd,
- 0x15,0x11,0xf1,0x48,0x36,0xff,0x27,0x41,0x45,0xcc,0xb4,0x50,0x67,0xb9,0x15,0x76,
- 0x24,0xbc,0xad,0xa7,0xdb,0x5e,0xe8,0x56,0x68,0x6c,0x3c,0xff,0x67,0x0d,0x94,0x73,
- 0x55,0x67,0xb5,0x44,0x3b,0xe4,0xde,0x54,0xee,0x69,0x68,0xd7,0x45,0xdb,0x8b,0x20,
- 0x88,0x42,0xd0,0x89,0x80,0xab,0xfe,0x61,0x0e,0xf1,0x9f,0xd3,0x65,0x0f,0xa9,0x5f,
- 0xf0,0xfc,0x6a,0xf6,0xa2,0x91,0xf6,0x97,0xfa,0xd2,0xa1,0x31,0x17,0x5f,0x48,0x97,
- 0x26,0xc5,0x57,0x24,0xb6,0xc4,0xd4,0xd1,0xdc,0xdf,0x99,0xab,0xc2,0xc2,0xed,0x33,
- 0x80,0xdf,0x6f,0x19,0xd5,0x7f,0x2e,0xc1,0xfd,0xc5,0x45,0xf5,0x0f,0xeb,0xe3,0x6f,
- 0x26,0x66,0x8f,0x2d,0x58,0xee,0x3d,0x04,0xcf,0x0a,0xb7,0x0f,0x7b,0x95,0x3d,0x4f,
- 0xf5,0x7f,0x96,0x8b,0x42,0x40,0xb3,0xc6,0xd5,0x3f,0xbc,0xea,0x17,0xc6,0x75,0xf1,
- 0xfa,0x84,0x3f,0xec,0x9d,0xce,0x4e,0x71,0x2b,0x9b,0x1b,0x3e,0xb2,0x60,0xcf,0x90,
- 0x7e,0x46,0xa1,0x46,0x8a,0xe5,0x87,0x5c,0xfc,0x9f,0x8f,0x8d,0xdf,0xb5,0xa1,0xfd,
- 0x3a,0x2a,0x57,0xc3,0xb9,0xf6,0x59,0x29,0xdf,0xb0,0x7c,0x5e,0x7d,0x51,0x94,0x7d,
- 0x96,0xcf,0xc3,0x91,0xf8,0xf5,0xa2,0xff,0xbb,0x33,0xfe,0xd1,0xc2,0x3d,0x83,0xcf,
- 0x42,0x19,0xa8,0xa3,0x4d,0x97,0xc5,0xde,0x85,0xb2,0x61,0x75,0x04,0xf1,0xdb,0x2a,
- 0xab,0x23,0xc6,0xeb,0xb0,0x2e,0xa1,0x8f,0x74,0x2d,0x67,0x5f,0x75,0xde,0x17,0xc0,
- 0x46,0xf5,0x3e,0xc4,0x4b,0x79,0xad,0x4c,0xe3,0x8f,0xa9,0x53,0x06,0x54,0xb3,0x69,
- 0x33,0xac,0x50,0xc5,0x63,0xbe,0x81,0x88,0x45,0x10,0x81,0x46,0x5c,0xfc,0x9f,0x3e,
- 0xb5,0x8d,0xeb,0x5a,0x5e,0x98,0x95,0xf1,0x2d,0x38,0x8d,0x6a,0x05,0xf8,0xd4,0x8e,
- 0x88,0xf0,0x78,0x8c,0xb0,0xb4,0x63,0xbf,0xd5,0x99,0xff,0x1d,0x13,0x3b,0x51,0x7f,
- 0x86,0x21,0x3f,0x29,0x07,0xe0,0x23,0x4a,0x1b,0xd9,0x5e,0xde,0x09,0xcf,0x98,0x55,
- 0xbd,0x56,0xfc,0xc2,0x72,0x85,0xbd,0xe5,0xea,0x8f,0xfc,0x10,0xed,0x9e,0x94,0x82,
- 0xdd,0xf2,0xef,0xe1,0x8f,0xf0,0x6d,0xd3,0xbf,0xe3,0x99,0xed,0xba,0x55,0xf8,0xa5,
- 0x78,0x28,0xdd,0xff,0xbd,0x29,0xd3,0x8f,0x5e,0xd2,0x3e,0x86,0x23,0x6a,0x43,0x55,
- 0xfe,0x32,0xb9,0x4a,0xc2,0xef,0xab,0x77,0x61,0xaa,0x7c,0x0e,0x99,0xf5,0x5e,0x77,
- 0x05,0x98,0x21,0x17,0xff,0x87,0xfa,0x09,0x56,0x02,0x35,0x65,0x10,0x61,0x8b,0xd5,
- 0x21,0xf9,0x0f,0x02,0xd8,0xac,0xa3,0xc4,0xf6,0xd7,0xf0,0x0f,0x89,0xfe,0xef,0xf6,
- 0xfd,0xf3,0x9c,0xc5,0x86,0x18,0x1f,0xc7,0xe7,0x15,0x61,0x8e,0x1d,0x6c,0x6a,0xc5,
- 0x6a,0x78,0xc7,0x66,0x10,0x4d,0x37,0xe7,0x27,0x03,0x29,0x67,0x36,0xa9,0xfe,0x18,
- 0x7e,0x74,0xba,0x3a,0x8b,0x41,0xa2,0x0d,0x52,0xfd,0x79,0x3a,0xaa,0xb5,0x2e,0xd8,
- 0x6e,0xde,0x84,0x2b,0xd0,0xf7,0x40,0x69,0x70,0xc0,0x3b,0xc7,0x55,0x9f,0x13,0xd4,
- 0xc5,0xf8,0x11,0x85,0x20,0x14,0x97,0x75,0xbe,0x5a,0xab,0x32,0xbd,0x0f,0xa1,0x3d,
- 0x25,0xfb,0xeb,0xed,0x96,0x7f,0x67,0xbc,0x10,0xbd,0xe2,0x80,0xa8,0xf7,0xe8,0xc4,
- 0xbf,0xae,0xa2,0xb2,0xf3,0x0d,0xe0,0x3f,0x81,0x07,0x51,0xff,0xf4,0xe5,0x6f,0xeb,
- 0x78,0x9d,0x1a,0xbf,0x9a,0xfe,0x5d,0xf8,0xbc,0xdf,0xc1,0xf9,0x99,0xf0,0x61,0x20,
- 0x95,0xc5,0xff,0xc1,0x45,0x38,0xe4,0x7b,0x1d,0x57,0xe3,0x61,0x2a,0x84,0x78,0x42,
- 0xae,0x82,0xc3,0xca,0x5c,0x6a,0xd4,0x72,0x5e,0x3a,0x42,0xfc,0x9f,0xec,0xfa,0x87,
- 0x23,0xb0,0xaf,0x2c,0xd0,0x18,0xd9,0x50,0x14,0x4a,0xae,0xf1,0x4c,0x8f,0x04,0xff,
- 0x14,0x98,0x0e,0x6b,0xda,0x02,0xa9,0xf9,0x3d,0x81,0xe3,0xd0,0x85,0xd0,0x85,0xea,
- 0xff,0xb8,0xf2,0xc1,0x07,0xf4,0x27,0x54,0xbd,0x1f,0x37,0xad,0x3e,0xde,0xce,0xa2,
- 0x86,0xa7,0xaa,0x1d,0x51,0x1d,0x2e,0x83,0x2b,0x2d,0xfb,0x2e,0x3e,0xbd,0xf7,0x24,
- 0x7b,0x3c,0xe2,0x1f,0xdf,0x3e,0x9e,0x30,0xd5,0x4d,0x4d,0x3e,0x1c,0x26,0xda,0x7e,
- 0x85,0xe8,0xb2,0x56,0x63,0x11,0x7a,0x11,0xa2,0xfe,0x8f,0xb3,0x3e,0x11,0xff,0xec,
- 0x4a,0x55,0x99,0x21,0x5f,0x57,0x05,0x5b,0xc3,0xaa,0x8c,0x9b,0x47,0xbd,0xc0,0x9f,
- 0xc1,0x85,0x74,0xf5,0x93,0xf2,0xdb,0xb8,0xde,0xaa,0x44,0x7d,0x00,0x17,0xfe,0x79,
- 0x52,0x11,0xde,0x9e,0xc1,0xe2,0x73,0x0a,0x02,0xa1,0xd6,0xfc,0xd1,0xe6,0xd3,0x4b,
- 0xd2,0x65,0x9f,0x3f,0xe6,0x17,0xd4,0x86,0x03,0x59,0xf9,0x5f,0xad,0xda,0x4e,0xb4,
- 0x5f,0xb8,0x2c,0x29,0xff,0xeb,0x90,0x8e,0xf6,0x2b,0x8c,0x6a,0xe7,0x35,0x43,0xd8,
- 0xf7,0x29,0xca,0x99,0x9c,0xfa,0x67,0xfd,0xd9,0xf1,0x2f,0xaa,0x07,0x5e,0x6d,0xc6,
- 0xe2,0x78,0xdb,0xaf,0xc6,0x02,0x94,0xdf,0x3d,0x53,0xdf,0xdf,0x2e,0xe2,0x5f,0x0a,
- 0xec,0x37,0x42,0xa3,0xde,0xac,0xfa,0x3f,0x92,0xa8,0x7f,0x88,0xbb,0x03,0xd4,0x36,
- 0x1b,0xa8,0x6c,0x5d,0x98,0xe5,0x40,0x72,0x99,0x4e,0x19,0x52,0x8e,0xab,0x70,0xd4,
- 0x19,0x3f,0x2c,0x4d,0x36,0x7e,0xd9,0xf6,0x0f,0xd1,0xc8,0x22,0x56,0x5f,0xf2,0xd3,
- 0xf8,0x94,0xc5,0x5d,0xd7,0x7d,0xf1,0x32,0xf5,0x31,0xc2,0x03,0xc3,0xac,0xc8,0xe1,
- 0x03,0xbb,0xfd,0x3f,0xea,0x87,0x30,0xc7,0x0c,0xc5,0xbd,0x3e,0x78,0x09,0xe6,0xd0,
- 0xfd,0x03,0x9c,0x80,0x70,0xdf,0xc2,0x70,0xb3,0xcf,0xf8,0x28,0x47,0x54,0x04,0x7a,
- 0x35,0x93,0xff,0xf5,0x59,0xc1,0xff,0x31,0x27,0x0c,0xe2,0x6a,0xf9,0x18,0xf6,0x37,
- 0x2e,0x1c,0x6d,0x26,0x47,0x59,0x43,0xaf,0x68,0x14,0x9b,0x2e,0x8d,0x98,0x8d,0x7f,
- 0xd0,0xac,0xf7,0x52,0xfd,0x4c,0x38,0xc4,0xaa,0xa2,0xbe,0xbd,0xcf,0x84,0xd4,0x8f,
- 0x3a,0xab,0x2d,0xc6,0xf8,0x19,0xa8,0x4b,0xf9,0xc6,0xd7,0x3f,0x5c,0x41,0xf8,0xa7,
- 0xb5,0x68,0x12,0xac,0xa4,0x8d,0xd8,0x3d,0xcc,0xe9,0x08,0x3f,0x68,0x33,0xa2,0x5f,
- 0x72,0x7d,0xef,0x3f,0x85,0x15,0x3c,0x5d,0xef,0x71,0x25,0x2f,0x8b,0x7a,0x6a,0x8a,
- 0xae,0x90,0xf6,0x72,0x11,0x11,0xfb,0xad,0x78,0xde,0xac,0xfe,0xef,0x88,0x7f,0xd8,
- 0xea,0xd4,0xd6,0xbe,0xe0,0x65,0x9e,0x50,0x53,0x3b,0x24,0x8c,0xe9,0xa8,0xc6,0x8d,
- 0xdd,0xd4,0xff,0x62,0x0e,0x33,0x95,0xd9,0x16,0x9e,0x7c,0x35,0xab,0xfe,0xf3,0x61,
- 0xb5,0x2a,0x81,0xf8,0x67,0x3a,0x1c,0x86,0x2a,0x5e,0x90,0x90,0xaf,0x40,0x84,0x8c,
- 0x66,0xe2,0x98,0x4c,0x85,0x0e,0xeb,0xa9,0x23,0x7c,0x06,0x8f,0x5d,0xa2,0xff,0xd7,
- 0x95,0xc7,0x60,0x6c,0x10,0x8f,0xb4,0x65,0x1a,0x73,0x8f,0xaf,0xff,0x5c,0x25,0xd8,
- 0x3e,0x76,0xb7,0xaf,0xa9,0x56,0x04,0x24,0x5d,0xef,0x6e,0x89,0xa8,0x6f,0xec,0x3c,
- 0xaf,0xf2,0x65,0x4a,0x5a,0xbf,0x25,0x46,0x6e,0x9f,0x36,0x83,0xba,0x7d,0x79,0xa6,
- 0x9a,0xab,0x53,0x76,0x45,0x1a,0x2e,0x52,0xe3,0x53,0xce,0x7a,0x40,0xfc,0xa3,0xef,
- 0x53,0x03,0x4d,0xaa,0xb6,0xa6,0x42,0x5f,0xad,0xa6,0xeb,0x3f,0xff,0xbc,0x10,0x61,
- 0x8f,0x48,0xdc,0x50,0x05,0x95,0x65,0x7c,0xfd,0x9f,0x04,0x39,0x79,0x70,0x1b,0xa2,
- 0xe8,0xe9,0xc4,0x28,0x84,0x3d,0xf3,0x5d,0x15,0x72,0xdc,0xf8,0xa7,0xd1,0x18,0x6d,
- 0x0d,0x97,0xf8,0x72,0x64,0xa9,0xd5,0x44,0xe1,0xc8,0x0a,0x59,0x57,0x86,0x9d,0x19,
- 0x90,0xea,0xb3,0xeb,0x3f,0xa7,0xf9,0x3f,0xe9,0x7e,0x5e,0x24,0x50,0xff,0xd3,0x73,
- 0xe9,0x88,0x98,0x8d,0xf7,0xde,0x72,0xea,0xff,0x6c,0xca,0x19,0x32,0x70,0x5a,0x5a,
- 0x7d,0x7b,0x9a,0x1f,0x84,0x83,0x46,0x55,0xab,0x7f,0x63,0x47,0x09,0xfc,0x2e,0x58,
- 0x6d,0xac,0x8b,0xc3,0x50,0xde,0xef,0x2c,0xfe,0xf3,0x01,0x97,0xff,0xe7,0xad,0xc2,
- 0xd8,0x83,0x81,0x69,0xea,0x1a,0x16,0x50,0xd6,0xf2,0x00,0xcc,0xef,0x0c,0x04,0x95,
- 0x98,0x61,0x01,0x21,0x29,0xed,0x8a,0xcf,0xaa,0xff,0x83,0x66,0xab,0xdc,0x40,0xfc,
- 0xbc,0xa7,0x74,0x85,0x68,0x73,0xef,0xa9,0x80,0x07,0x94,0x0a,0x43,0xc6,0xe7,0xf5,
- 0xed,0xa2,0xc4,0xff,0x2c,0xfc,0x33,0xb1,0x93,0x3d,0xd6,0xb2,0x8d,0x68,0xcf,0x73,
- 0xf8,0x7d,0x08,0x3b,0x3b,0xe2,0xb7,0x56,0xc0,0x6a,0xd3,0xc2,0x3f,0xe4,0xcf,0xbf,
- 0xb8,0xfe,0xf3,0x3e,0x25,0x6c,0x84,0xe2,0xc5,0x9d,0xb8,0x2d,0xea,0x8e,0x8a,0xb2,
- 0x87,0xaf,0x20,0x7e,0xf3,0x52,0x63,0x2f,0xab,0xb0,0xa1,0x94,0x6a,0xb3,0xef,0x9f,
- 0xfc,0x3f,0x04,0x8a,0x8e,0xc4,0x8b,0x05,0xed,0xf9,0x33,0x08,0x8c,0x05,0xf1,0xbb,
- 0x71,0x1d,0xf5,0x83,0x3b,0xa5,0xa6,0xeb,0x3f,0xdb,0xf3,0x6f,0xf3,0x7f,0x44,0xb5,
- 0xe7,0x01,0x14,0xf2,0x71,0xdb,0x6b,0x35,0x82,0xef,0x94,0xa3,0xea,0x58,0x4e,0x95,
- 0x94,0x8d,0x7f,0x44,0xfc,0x2b,0xc0,0x4b,0x75,0x44,0x3b,0xf7,0x13,0xbf,0x22,0x11,
- 0xb8,0x22,0xf6,0x1b,0xb6,0xd5,0xe2,0x3f,0x53,0xfe,0x97,0x3f,0xab,0xfe,0x33,0xf9,
- 0x9f,0xb9,0x9e,0x8a,0xd5,0x34,0x15,0xc0,0x1a,0x6e,0x11,0x81,0x58,0xba,0xec,0x33,
- 0xed,0x17,0x3a,0xcd,0xac,0xfa,0xcf,0x82,0xff,0x6c,0x94,0x0d,0xaa,0xdf,0x64,0x57,
- 0xa9,0x2b,0x8d,0xb2,0x61,0xcf,0x3d,0x9e,0x1a,0x54,0xe3,0x77,0xe2,0xf7,0xdb,0xf4,
- 0x3a,0x3c,0xce,0xa7,0x1c,0xc8,0xc2,0x3f,0x3b,0x54,0xfc,0x9a,0xf8,0xee,0x44,0x70,
- 0xd8,0x5b,0xcb,0xa8,0x1b,0xbb,0xff,0x74,0x07,0x7d,0xc8,0xb3,0x8e,0xf9,0x97,0x37,
- 0xbf,0xa1,0xec,0x5d,0x71,0xed,0x16,0x81,0x7f,0x9c,0xef,0xe5,0x2a,0x57,0x3d,0x2e,
- 0x6a,0xfb,0x95,0x4f,0xd6,0x8d,0x3c,0x18,0xeb,0x08,0x0f,0x7c,0x84,0xf6,0xb7,0xc0,
- 0x5d,0x4f,0xde,0xb0,0xea,0xf7,0x46,0xd1,0x5a,0x3d,0x0e,0x67,0x3b,0x1b,0x3e,0xcc,
- 0x1f,0xeb,0xa8,0x57,0xfe,0xd4,0x3e,0x3b,0xb5,0xf0,0x54,0xf3,0x79,0xed,0x0f,0x5c,
- 0x6c,0xe4,0x07,0x1d,0x3e,0xf3,0x0e,0xe2,0x1f,0x6a,0x5b,0x8c,0xae,0x56,0x56,0xb2,
- 0x78,0x0f,0x6a,0x9b,0xc8,0xb2,0xa2,0x49,0x06,0xea,0x9f,0x3e,0xaa,0xf0,0x03,0x7b,
- 0xb5,0xb2,0xbe,0x82,0x65,0xec,0x3d,0x07,0xff,0x68,0xb0,0x09,0x9e,0x54,0xa7,0x30,
- 0x6f,0x1f,0x6a,0xa7,0xc7,0xf8,0xcc,0x3e,0xd4,0x4e,0xad,0xfa,0x93,0x42,0x5f,0x89,
- 0x42,0x88,0x5b,0xb8,0xd7,0x5d,0xff,0x79,0x49,0x49,0x3f,0x24,0x8d,0x0a,0xf0,0xaa,
- 0xcc,0x10,0x44,0x44,0x04,0x12,0xcd,0xb0,0x2b,0x62,0xcd,0x67,0x94,0xf0,0xa4,0xc7,
- 0xed,0xff,0xe9,0x99,0x88,0xfb,0x7d,0xa3,0xda,0x8a,0xf7,0x3d,0x01,0x0d,0x29,0xdf,
- 0x28,0xfb,0x0a,0x9c,0x41,0xfb,0x22,0x77,0x0b,0x3e,0xf3,0x25,0xeb,0x3f,0x3f,0x41,
- 0xd6,0x7c,0x27,0x4d,0x54,0xdf,0xe4,0xa4,0x37,0x41,0x82,0x93,0x08,0x46,0xf3,0x93,
- 0xa9,0x47,0xc4,0xb5,0x31,0x38,0xae,0xce,0xa6,0xa4,0xa7,0x31,0x11,0x06,0x52,0x47,
- 0x3f,0x55,0x17,0x3c,0x6f,0xa6,0xe3,0x5f,0x2f,0x52,0xc5,0x0f,0x77,0xfd,0x67,0xae,
- 0x2c,0xc7,0x1d,0xe7,0x36,0xca,0x1f,0x1c,0x83,0x0f,0xd8,0x4c,0x33,0x36,0xca,0x02,
- 0xc6,0x13,0x65,0x95,0x78,0xd9,0xc0,0x00,0x7e,0x08,0xf5,0x51,0xc2,0x3f,0x2d,0xf6,
- 0xfb,0xe5,0x52,0x48,0xd9,0x27,0x9a,0x0c,0x16,0x6d,0xd7,0x7a,0xc8,0xdf,0x9e,0xcc,
- 0xad,0x70,0x31,0xa8,0xad,0x54,0xf1,0x61,0x67,0xfd,0x58,0xf5,0x0f,0xa3,0x56,0xb6,
- 0x05,0x55,0xfb,0xb9,0x22,0x5c,0xa4,0x40,0x37,0xf8,0x32,0xfb,0x7d,0x8a,0xb7,0x66,
- 0xf2,0xdf,0xf3,0x97,0xd0,0xfa,0x97,0x44,0xfd,0xb1,0x7d,0x78,0xff,0x95,0xcb,0x3c,
- 0xba,0x78,0x5e,0xaa,0x38,0x47,0x44,0x17,0xe2,0x87,0x9b,0x99,0xf5,0x79,0xd5,0x58,
- 0xa1,0x1d,0xef,0x83,0xf7,0x61,0x9e,0x79,0xdf,0xe8,0x84,0x51,0xe1,0xf1,0x28,0x10,
- 0x89,0x6f,0x56,0xff,0x82,0x54,0xc6,0xff,0x23,0xb9,0xfa,0x9f,0x5e,0xe0,0xd5,0x87,
- 0x7c,0xdd,0xf2,0xc7,0xea,0x11,0x7d,0x76,0x4a,0xd4,0xc7,0x1e,0xa3,0xd6,0x2d,0x47,
- 0x3f,0x97,0xc1,0x3f,0x5c,0xb5,0xeb,0x1f,0x16,0x91,0x30,0x7d,0x54,0xfd,0x57,0x14,
- 0x54,0xc4,0x3f,0xea,0x0e,0x56,0x69,0xf4,0x28,0x01,0xf0,0x6c,0x42,0x7c,0xe2,0xe6,
- 0xff,0xb8,0xf2,0x71,0x74,0x32,0xf4,0xb8,0xd1,0x30,0x74,0x03,0x11,0xa0,0x4f,0x74,
- 0x30,0x54,0xb5,0xa6,0x13,0x19,0xfe,0x73,0xba,0xfe,0x8f,0x37,0xd9,0x24,0xea,0xff,
- 0x98,0x6a,0xb2,0xe9,0x03,0x86,0x1b,0x3d,0x33,0x98,0xf0,0x84,0xa0,0x87,0x07,0xf4,
- 0x2b,0xe2,0xae,0xfa,0x87,0x90,0xc9,0xff,0x5a,0x4a,0x85,0x8e,0x17,0x2b,0x49,0xf9,
- 0x39,0x78,0x21,0x1e,0x4e,0xf9,0x2e,0x97,0xaf,0x31,0x3e,0x84,0xaa,0x46,0x5f,0xb2,
- 0xd8,0x1c,0xcf,0x7f,0xb6,0xd9,0x3e,0x73,0x0d,0x7f,0xa2,0x79,0x0c,0x4e,0x49,0x0d,
- 0xc3,0x94,0x81,0x62,0x53,0x7f,0xc7,0xf1,0x9f,0x5d,0xf1,0xe8,0xa8,0x2f,0x3e,0x61,
- 0x06,0x02,0x75,0x5c,0x96,0x71,0xef,0x14,0xe3,0x20,0xaf,0xa2,0x44,0xe6,0x97,0xc7,
- 0xd5,0xff,0xb1,0xcb,0x1e,0x42,0x6d,0xa3,0x9a,0x2c,0x22,0x44,0x14,0x38,0x88,0x6a,
- 0x73,0x2a,0x8e,0xaf,0x6e,0xc5,0x27,0xca,0xe0,0x1f,0x53,0x59,0xa0,0xba,0xf3,0x95,
- 0xe8,0xeb,0x10,0xdb,0xae,0x14,0xe2,0xc3,0x3c,0xd8,0x10,0x0d,0xc4,0xf3,0x00,0xf1,
- 0x92,0xed,0xff,0x89,0x1a,0x77,0x64,0xd5,0x3f,0x1c,0xf6,0x2c,0xf1,0x4c,0x46,0xb5,
- 0x73,0x67,0x0a,0xf7,0x4b,0x57,0xc0,0xca,0xc4,0x35,0x89,0xbc,0x9b,0xd8,0x59,0x6e,
- 0xa4,0xc7,0x47,0xc0,0xaa,0xff,0x73,0x35,0x95,0x3d,0x44,0x61,0xc4,0x53,0xca,0x28,
- 0x23,0x2c,0x6c,0x2e,0xac,0x2d,0x56,0xd9,0xab,0x89,0x30,0xff,0x89,0xc7,0x8d,0x7f,
- 0xd2,0xf9,0xef,0xa2,0x2c,0xc0,0x19,0xb8,0xae,0x37,0x5f,0xd4,0x07,0xd0,0x1a,0xcc,
- 0x75,0x88,0x07,0x1a,0xcf,0x6b,0xf5,0xbc,0xe0,0xa0,0xab,0xff,0x97,0x9a,0xe9,0x3f,
- 0xeb,0x08,0x05,0xb4,0xa3,0x49,0xf9,0xc2,0x72,0xa5,0x70,0x04,0xf9,0x12,0xf8,0xfd,
- 0x3a,0xfc,0x87,0xcb,0xc7,0xe5,0x7f,0x79,0x29,0x10,0xd6,0x21,0x09,0x8f,0x90,0x4f,
- 0x6c,0x24,0x3d,0x51,0x76,0xc2,0x79,0xbf,0x99,0xfa,0x3f,0xd6,0xf3,0x8e,0x7a,0x4b,
- 0xd9,0x64,0x6d,0x02,0x22,0xa2,0x3c,0x42,0x44,0xeb,0xf8,0x96,0x94,0xba,0xc4,0x55,
- 0x7f,0x4c,0xf0,0x7f,0xa4,0xcc,0x7c,0xa6,0xbc,0x61,0x4f,0x3e,0xef,0x88,0xea,0x43,
- 0x79,0xd5,0x2c,0x9f,0x0b,0xfc,0x1c,0x44,0xfc,0x93,0xe1,0x3f,0x67,0xd5,0xff,0xc1,
- 0x8d,0x67,0x4a,0xbe,0x0e,0x0e,0x1b,0xdd,0x3c,0xff,0x1d,0xf9,0x7a,0x76,0x88,0xf8,
- 0x3f,0x8f,0xca,0xa7,0x9d,0x7a,0xc5,0xd9,0xf5,0x7f,0xe0,0x5e,0xc9,0x0f,0x32,0xa9,
- 0x8a,0x7a,0xb1,0xd5,0x36,0xc6,0xda,0xea,0xf5,0x19,0xe6,0xc5,0xf5,0x7f,0x32,0xf9,
- 0x3e,0x0b,0xe3,0x13,0xd2,0x89,0xf0,0xa2,0x11,0x2a,0xdc,0xf3,0x97,0xea,0x1f,0xa6,
- 0xd9,0x3b,0xf3,0x37,0xe6,0x3a,0x1e,0x1e,0x6a,0xf5,0x55,0x6d,0xa8,0x71,0x70,0xf1,
- 0x7f,0x2e,0xae,0x7f,0x98,0x49,0x84,0xc7,0x85,0x67,0x96,0x1b,0xc1,0x51,0x17,0xfe,
- 0xc9,0xae,0xff,0x03,0xa1,0x25,0x02,0xff,0xec,0x4a,0x90,0x47,0xc8,0xa3,0xf0,0xc7,
- 0x94,0x29,0xc4,0xf0,0x74,0xe1,0x1f,0x9f,0x9e,0x8d,0xf7,0xfc,0xbc,0xc8,0x39,0x42,
- 0x8d,0x50,0xf5,0x12,0x9f,0x29,0x1f,0xcf,0xe0,0x9f,0x9c,0xac,0xb4,0x26,0x8a,0x7f,
- 0x79,0x09,0xff,0x34,0x50,0x86,0xfb,0x49,0x23,0x7d,0xea,0x1d,0x37,0xfe,0xb1,0xcb,
- 0x1e,0x8a,0x7f,0x18,0x29,0xa0,0x7a,0xc8,0x1f,0x52,0x23,0xd4,0x0d,0x72,0x05,0x7f,
- 0x51,0x9b,0xd7,0xe2,0xd3,0x70,0x6b,0xec,0xe0,0x9f,0xd2,0xac,0xfa,0x87,0x95,0x5a,
- 0x64,0x05,0x09,0x86,0x68,0x84,0x3a,0x0b,0x62,0x50,0xa9,0xaa,0x9c,0xb9,0xf2,0xdf,
- 0x9d,0xfa,0x3f,0xa2,0x1f,0xe5,0x8c,0x96,0xd8,0xa2,0x22,0x0a,0x5b,0x94,0x19,0xde,
- 0xdb,0xd8,0x55,0x08,0xfc,0x04,0x63,0x2a,0x93,0xff,0x5e,0xaa,0xd8,0xf9,0xef,0xa2,
- 0xfe,0xe4,0x4c,0x43,0x7d,0x09,0xf7,0x93,0xbf,0x84,0x72,0xc3,0x8b,0x88,0xc8,0x66,
- 0x58,0xb9,0xf2,0xdf,0x27,0x2e,0x2e,0x75,0xdf,0xbf,0x51,0xb9,0x59,0x08,0x1b,0x5a,
- 0x50,0x3f,0x54,0x30,0x11,0x11,0xd3,0xbc,0x99,0xfc,0xf7,0x88,0xd5,0xff,0xcb,0x1e,
- 0x5f,0x27,0x88,0x40,0x06,0x45,0xc4,0x70,0x3d,0xf4,0x09,0xfc,0x33,0xd3,0x9d,0xff,
- 0xae,0x6a,0x89,0xf1,0x78,0x7b,0x02,0x4e,0xbb,0xe8,0xff,0x55,0x1c,0x66,0xfd,0x5a,
- 0x15,0x31,0xb2,0x3c,0x59,0xf1,0x2f,0x8b,0xe4,0x93,0x6b,0xd5,0x3f,0x8c,0x24,0x58,
- 0x90,0x3f,0x81,0x78,0xbe,0x6b,0x2b,0x21,0x22,0xe3,0x5a,0xae,0xa6,0x98,0xc7,0x1e,
- 0xee,0xca,0xff,0x6a,0x4a,0x17,0x6a,0xab,0xa1,0xb0,0x17,0x0c,0x9b,0x57,0xd6,0x30,
- 0x15,0xe2,0xa6,0xde,0xa2,0xea,0xb9,0x1e,0x47,0xff,0xd8,0xf5,0x7f,0xd2,0xdf,0x6f,
- 0xc8,0x88,0x7d,0x97,0x51,0x46,0x83,0x48,0x0c,0x2f,0x45,0x60,0x73,0x8d,0x81,0xd7,
- 0x57,0x1d,0xfe,0xb3,0x5d,0xff,0xc7,0x4f,0xdf,0x2f,0x0a,0x89,0xfc,0xa0,0xe7,0xa7,
- 0xf0,0x31,0xd5,0xff,0xa9,0xf1,0x7a,0xe0,0x08,0xdf,0x15,0x5d,0xb0,0xc4,0xeb,0xc9,
- 0xf0,0x9f,0xc7,0xf1,0x7f,0xa4,0x9f,0x25,0x64,0x51,0x01,0xd8,0xb0,0x02,0x61,0x84,
- 0x9f,0x13,0x2e,0xfe,0xb3,0x55,0xff,0xc7,0xca,0xf6,0x82,0x0b,0x71,0x14,0x36,0x95,
- 0x7f,0x0c,0xcf,0x23,0xec,0xc9,0x3f,0x8a,0xb0,0xf0,0x75,0x7e,0xed,0x90,0x6f,0x18,
- 0xf7,0xa7,0x0e,0xff,0x39,0x5d,0xff,0x47,0x78,0x7b,0x50,0x9f,0xb4,0x78,0xbf,0x28,
- 0x6f,0x8c,0xae,0xa0,0xf5,0xd0,0xca,0x5e,0xe2,0x9d,0x30,0x63,0x40,0xd5,0x5d,0xfd,
- 0xbf,0xdc,0xf5,0x7f,0x60,0xaf,0x3e,0x83,0x7b,0x9b,0x9a,0x4e,0xc2,0x4a,0x63,0x8b,
- 0x99,0x87,0xe3,0x8d,0x4e,0xb8,0x86,0xf2,0xdf,0x87,0x5c,0xfe,0x9f,0xec,0xfa,0x3f,
- 0xe0,0x85,0xf6,0x67,0x19,0x27,0x9a,0x7d,0x09,0x6e,0xd3,0x62,0xc4,0xff,0x0c,0x05,
- 0x32,0xfc,0xe7,0x1e,0xf7,0xf3,0x9e,0xa6,0x7c,0xf3,0x27,0xcb,0xff,0x48,0x1e,0xfb,
- 0x47,0xf2,0xb7,0x17,0x8f,0xc0,0x21,0xa9,0x9a,0x8f,0x3c,0x5c,0x7e,0xdc,0x89,0xf7,
- 0x65,0xfa,0x5f,0x88,0xf1,0x38,0x1b,0x3d,0xf2,0x0e,0x38,0xc5,0xeb,0x61,0x42,0x42,
- 0x1e,0xf1,0xbd,0xd7,0x38,0xd9,0x5c,0x48,0x85,0x29,0xec,0xeb,0x27,0x32,0xf9,0x5f,
- 0xa2,0xcc,0x8b,0x00,0x42,0xfa,0x79,0xb8,0x9e,0xfb,0x52,0x1d,0x67,0xe1,0xb8,0x54,
- 0xde,0xe9,0x4b,0xc9,0x15,0x0e,0xff,0x79,0x4b,0xa6,0xff,0x29,0xe2,0xb1,0xa8,0xe0,
- 0xf3,0xbc,0xcb,0x11,0xd8,0x94,0x46,0xa8,0xff,0xe9,0x13,0xa9,0xc0,0x51,0x9c,0x9f,
- 0xb0,0x13,0xaf,0xcc,0xea,0x7f,0xf1,0x04,0x09,0xb4,0x3b,0xa3,0x8e,0xf0,0xf8,0x19,
- 0x0e,0x69,0x3d,0x7c,0x3a,0xb9,0x6a,0x9d,0xe5,0x96,0xe1,0xff,0x54,0x89,0x6a,0x48,
- 0xa1,0xd6,0xf9,0x5a,0xbb,0x89,0x5f,0x68,0x25,0x4e,0x0d,0x7b,0xae,0x2c,0xa9,0x05,
- 0xcd,0x60,0x59,0x53,0x26,0x3e,0xcb,0xd3,0xfd,0x2f,0xec,0xe7,0x8d,0xfb,0x57,0xe1,
- 0x87,0x70,0x5a,0xaa,0xe5,0xa1,0x15,0xf2,0x10,0xa7,0x1e,0xbf,0xbe,0x84,0x57,0xcf,
- 0xf4,0xbf,0x98,0x68,0xd7,0x3f,0xc4,0xe7,0x3d,0xad,0x7d,0x8f,0x80,0xd0,0xa0,0xc5,
- 0x80,0x3a,0x80,0x1b,0xb1,0xb3,0xfa,0x5c,0xd3,0xff,0x16,0x1b,0xce,0xc4,0xb3,0xa4,
- 0xb1,0x8a,0xb3,0x65,0xb3,0xc1,0x1c,0xfc,0x9b,0x5a,0xf5,0x79,0xfe,0x3d,0xdd,0xbf,
- 0xac,0xbc,0x5e,0x3b,0x6f,0xc5,0xbf,0xc8,0x35,0x64,0xf5,0x7f,0x77,0xf9,0x7f,0xde,
- 0x83,0x1e,0x33,0xa0,0xa9,0x97,0xe1,0xd7,0xd1,0xd5,0x36,0x75,0xcb,0xfc,0x31,0x56,
- 0x4f,0xb4,0x1c,0x1b,0x11,0x09,0x22,0xb4,0xab,0xfe,0x73,0x0e,0xe2,0x61,0x2d,0x7a,
- 0x85,0xaa,0xb4,0x07,0x4b,0x3a,0x60,0xa9,0xee,0x25,0xd8,0xd3,0x1d,0x24,0x3c,0x5c,
- 0x34,0x60,0x9b,0x7e,0x77,0xfd,0xe7,0x1d,0x7a,0x8f,0x4a,0x41,0xfc,0x40,0x90,0xf2,
- 0xc7,0xcb,0x28,0xb1,0x4e,0xdb,0x4f,0xfe,0x1f,0x0b,0x11,0x89,0xa9,0xce,0xe0,0x1f,
- 0xb3,0x64,0x9f,0x76,0xd2,0x98,0xdd,0x12,0x1a,0x95,0x83,0xec,0x05,0xa8,0xd4,0xfd,
- 0xa3,0x4d,0x75,0x70,0xd6,0xe8,0xb6,0x66,0x6c,0xbf,0x55,0xc1,0x20,0xe3,0x1f,0x38,
- 0x06,0x3d,0xea,0xd9,0xc0,0x53,0x51,0x41,0x72,0x46,0xfc,0xd3,0xe6,0x1f,0xfd,0x9b,
- 0xef,0xc2,0x9f,0xe1,0x69,0xf3,0xef,0x33,0xfc,0x67,0x39,0x53,0xff,0xb9,0x55,0x7b,
- 0x04,0xfa,0x8d,0xb0,0xe1,0x4b,0x34,0x07,0x95,0xd7,0xa4,0x6a,0xd5,0x1f,0x6e,0x0e,
- 0xe1,0x8b,0xa8,0x72,0xf2,0x13,0xcd,0xec,0xfa,0x87,0x4a,0x10,0x62,0x26,0x1a,0xa9,
- 0x87,0x68,0x7e,0xa0,0x4a,0xf6,0x8e,0xae,0x09,0x99,0xfb,0xad,0xb6,0x29,0x54,0xda,
- 0x28,0x80,0x40,0xda,0xe5,0xff,0x19,0x96,0x16,0xb0,0x8e,0xfe,0x0a,0xbe,0x64,0xf3,
- 0x1a,0x95,0x3d,0xc0,0xf4,0x84,0xb7,0x06,0xe7,0x67,0x17,0xe8,0xa2,0x1e,0x14,0xec,
- 0x5e,0x56,0x91,0xed,0xff,0x39,0xd1,0x46,0xd1,0x9f,0x07,0x13,0xea,0xdf,0x21,0xda,
- 0xf9,0x21,0x2f,0xdb,0xee,0xfd,0x16,0xc2,0x80,0x5f,0xf2,0x29,0x6f,0xa7,0x11,0x42,
- 0x19,0x55,0x48,0xce,0xae,0xff,0xfc,0x4c,0x70,0x4e,0xcc,0x27,0x35,0xa9,0xca,0xaf,
- 0xb5,0x24,0xb5,0x89,0xc1,0xeb,0x47,0xc3,0xa6,0x7f,0x96,0x3c,0x60,0x7e,0x04,0x56,
- 0xff,0x77,0x17,0xff,0x67,0xa7,0xf1,0x11,0xf5,0xc3,0x5a,0x8d,0xda,0xe6,0xe7,0x4a,
- 0xbd,0x44,0x61,0x2c,0xd2,0xcf,0xc2,0x1f,0xdb,0x7a,0x46,0xb3,0xfa,0xdd,0x3b,0xfc,
- 0x9c,0x1d,0x39,0x23,0xda,0x0b,0xb0,0x81,0x9c,0x6c,0x41,0x41,0xd4,0xf7,0x25,0xdb,
- 0x42,0x04,0x3b,0x11,0x3f,0x97,0x3b,0x9f,0xaa,0xab,0xfe,0xf3,0x7a,0x62,0x77,0x97,
- 0x23,0xda,0xf1,0x94,0xaa,0x73,0xc9,0xdb,0x33,0x47,0xbe,0x5d,0xd9,0x0b,0xd3,0x4c,
- 0xcf,0x32,0xe6,0x94,0x16,0xc9,0xd4,0x7f,0x26,0xff,0x0f,0x45,0xbb,0xa6,0x2d,0xc5,
- 0xe7,0xdd,0xcb,0x67,0xea,0xea,0xf2,0xdc,0xc9,0xfc,0x69,0xcb,0x23,0xf4,0x17,0xf2,
- 0xdf,0x69,0xf7,0x7a,0xb9,0xee,0x09,0xd2,0x87,0xa6,0xa9,0xd4,0xff,0x62,0x7f,0x49,
- 0x50,0x54,0xdc,0xd2,0xd2,0xeb,0x2d,0xab,0xfe,0x33,0x82,0x9c,0xee,0x78,0xde,0xb0,
- 0x5c,0x83,0xaf,0x75,0x1e,0x5f,0x9b,0x28,0x0e,0xe2,0x8e,0x75,0xab,0xe8,0xff,0x2e,
- 0x2a,0x42,0xaf,0x4b,0xb0,0xd3,0x0e,0xdf,0x23,0x02,0x22,0xec,0xc5,0x0a,0x4c,0xcb,
- 0x1e,0x69,0x33,0xd3,0xfc,0x1f,0x2d,0xd3,0xa1,0x9b,0xf2,0xdf,0x33,0xf8,0x67,0x08,
- 0x7a,0x13,0xdd,0xc6,0x52,0x6d,0xbe,0xb0,0x86,0x4d,0x68,0xcd,0xaf,0x51,0x4e,0x41,
- 0x55,0x34,0x5f,0x10,0x3f,0xe0,0x5e,0x63,0x7c,0xff,0x2f,0x6d,0x35,0x91,0x4c,0x36,
- 0x06,0x88,0x76,0x5b,0xdf,0x8a,0xd6,0xb6,0x5a,0xd9,0x07,0x77,0xdd,0xf8,0x17,0xf2,
- 0xdf,0x95,0x0a,0x76,0x9f,0x51,0x66,0xa8,0x83,0xed,0x16,0x4d,0x37,0xb8,0xfe,0x2d,
- 0xc2,0x3f,0x53,0xb3,0xf8,0xd2,0x59,0xfd,0xbf,0xf8,0x0a,0xbd,0x2c,0x52,0x7a,0x2b,
- 0xb9,0x7d,0x94,0x90,0x69,0x35,0xc2,0xd0,0xf5,0x34,0x22,0x62,0x69,0xff,0x8f,0x7d,
- 0x3f,0x3d,0x2a,0x55,0xdb,0xeb,0x2e,0xf1,0xdd,0x40,0x6d,0xbf,0x44,0xfe,0x3b,0xa5,
- 0x7d,0xb5,0x3e,0x0e,0xe9,0x8a,0x7c,0x44,0x4d,0xbc,0x26,0x53,0xff,0xb9,0xff,0x72,
- 0xd1,0xe4,0xab,0xc5,0xbf,0xbe,0x99,0xd2,0xd8,0xaf,0x33,0xbc,0xeb,0xaf,0x1c,0x32,
- 0xfe,0x99,0x22,0x62,0xf1,0xf2,0x74,0x28,0x30,0x8e,0x78,0x29,0xc3,0xff,0x79,0x87,
- 0x9f,0x4b,0x14,0xdd,0x15,0xda,0xfc,0xcc,0xb3,0xb4,0x1b,0x35,0x0a,0x06,0x3b,0x3e,
- 0x86,0x83,0xc1,0x06,0xea,0x9f,0x4e,0xf1,0x20,0x91,0x0f,0x7e,0xc8,0x55,0xff,0xe7,
- 0x58,0x0b,0x6e,0x9a,0x6a,0xd5,0x01,0x51,0xed,0xb0,0x56,0x52,0x3b,0x8b,0x50,0x40,
- 0x45,0x6d,0xf0,0x80,0x93,0x08,0x3f,0xae,0xfe,0x33,0xcd,0x0f,0xa5,0xbd,0x53,0xd9,
- 0x0d,0x8f,0x56,0x44,0xb4,0x67,0xd1,0x31,0xc4,0xf1,0x77,0xb9,0xea,0x1f,0x8a,0xfc,
- 0x77,0xdc,0xa6,0x0d,0xb6,0x13,0xdb,0x79,0xba,0x11,0x8b,0x07,0x50,0x28,0x21,0xfe,
- 0x15,0x1b,0x92,0xec,0xf9,0x1c,0x57,0xff,0xb9,0xdb,0x10,0x69,0xef,0xab,0x09,0xbf,
- 0xc5,0x8b,0x29,0xec,0x35,0x49,0x1c,0x51,0xec,0xfc,0x77,0x6e,0xcf,0xff,0x57,0xa5,
- 0xed,0x0a,0x35,0xf9,0xfa,0x37,0x8b,0xed,0x5c,0xdb,0x42,0x40,0x28,0x70,0xaa,0x3d,
- 0x8d,0x88,0xce,0x58,0xe3,0x5f,0xcd,0xe4,0x73,0x09,0xfc,0x73,0x2f,0x2c,0xe8,0x93,
- 0x89,0x6d,0x45,0xd5,0xc5,0x3b,0x52,0x5a,0xbf,0x15,0xf6,0xc2,0x15,0xa8,0x8b,0xf5,
- 0x96,0x9d,0xff,0x45,0xdd,0xeb,0xd4,0x94,0xf0,0xff,0xcc,0x58,0x15,0x1b,0x42,0x45,
- 0xf7,0x2a,0x94,0x0b,0xff,0x8f,0x96,0xae,0x70,0xd5,0xee,0xac,0x07,0xca,0xff,0xda,
- 0x35,0x1a,0x32,0x77,0xe8,0xb8,0xbb,0x6c,0xc7,0xfd,0x42,0x5e,0x09,0x7b,0x91,0xea,
- 0x1f,0xb6,0xa4,0x3b,0x82,0x8d,0xab,0xff,0x2c,0xfa,0x5f,0xd0,0x67,0xbb,0x24,0x50,
- 0x67,0xac,0x84,0x99,0xa6,0xda,0xda,0xbe,0x11,0xd6,0x25,0xfe,0x11,0x44,0xfe,0xfb,
- 0x1e,0x43,0x7c,0xbf,0xb1,0x16,0xc3,0xbe,0x7e,0x6c,0xb2,0xf2,0xa7,0xce,0x99,0xf8,
- 0x89,0xc8,0x93,0xdb,0x9f,0xe3,0xf3,0x8e,0xe5,0x2f,0x62,0x87,0xe1,0x87,0xa9,0x69,
- 0xba,0x53,0x11,0x7a,0xe1,0xf2,0xf2,0x4c,0x3e,0x9a,0x7a,0xf9,0x4e,0x78,0x97,0x09,
- 0x12,0xef,0x07,0xea,0x69,0xdc,0xb8,0x1d,0x89,0x97,0x8f,0xb0,0x8f,0x00,0xd7,0x1b,
- 0xe9,0x93,0x31,0x23,0xed,0xff,0xb1,0xbf,0x47,0x63,0xe2,0x79,0x43,0x90,0x7c,0x86,
- 0xa1,0xa1,0x75,0x65,0x7c,0xdb,0x90,0xff,0x15,0xf9,0x0a,0xe3,0x79,0x3e,0x97,0xea,
- 0x1f,0x9e,0x6f,0x3d,0x6f,0x0a,0xfb,0x95,0xa9,0xff,0xfc,0xa8,0xb4,0xd9,0x78,0x4c,
- 0x99,0x31,0x10,0xbc,0x8b,0x3d,0x79,0x20,0x17,0xca,0x0e,0x7b,0x6f,0x09,0x94,0x98,
- 0xab,0x60,0xd7,0xc6,0x02,0x44,0x74,0xc6,0xe3,0x70,0x1d,0xf1,0x0f,0xdf,0x73,0xde,
- 0x6f,0x1c,0x36,0x6b,0x8f,0x69,0x33,0xcc,0x48,0x4d,0xee,0x1d,0xe4,0xaf,0xe6,0x5d,
- 0x06,0x2b,0x2d,0x5a,0x87,0xf3,0x40,0x08,0x30,0xf2,0xb8,0xa5,0xaf,0x52,0x2e,0xfc,
- 0x23,0xf2,0x4f,0x7b,0xd5,0x9e,0xa6,0xb5,0x38,0x9f,0x89,0x94,0x17,0x6e,0xf2,0x41,
- 0x87,0x52,0x01,0x14,0x61,0x54,0xba,0x41,0x28,0xa2,0x8c,0xbd,0xe8,0xc1,0xfd,0xe3,
- 0x87,0xc4,0x6f,0x59,0x23,0xd7,0x01,0xee,0xb6,0x86,0xfc,0x1a,0x0b,0xa9,0x47,0x8e,
- 0x86,0x21,0xbd,0x83,0xb6,0xfa,0xbf,0x3b,0xfc,0x3d,0x0e,0x3b,0x09,0x66,0xa3,0xb6,
- 0xf1,0x8e,0x28,0x88,0x07,0x06,0x17,0xc6,0x71,0x19,0x9c,0x61,0xb5,0xb0,0x4e,0xcc,
- 0x8f,0xe5,0x1f,0xcb,0xd4,0x7f,0x5e,0xcf,0xc9,0xe9,0xb1,0xab,0xd0,0xf7,0xab,0x8e,
- 0x3a,0x9c,0xf8,0x06,0xe2,0x9b,0x55,0xa3,0xbd,0x9b,0x0d,0x9b,0xd1,0xde,0x29,0x17,
- 0x12,0xc2,0xde,0x65,0xea,0x3f,0x9b,0x2d,0x4b,0xe1,0x09,0xb3,0x5c,0x53,0x07,0x71,
- 0xf7,0xb4,0x06,0x2a,0xdf,0xf2,0xae,0x47,0xf4,0xf2,0x34,0x04,0xc2,0xa2,0x22,0xf1,
- 0x70,0x3a,0xfe,0x95,0xcd,0xff,0x31,0x19,0x88,0x32,0xc8,0x6b,0x88,0x0f,0x13,0x67,
- 0xd3,0x38,0x9a,0x39,0x25,0x96,0x2c,0x1a,0x51,0x7a,0x58,0x65,0x76,0xff,0x2f,0xc2,
- 0x3f,0xbb,0x88,0xef,0x0a,0x1e,0x8a,0xef,0x50,0x35,0x80,0xe9,0x40,0xb4,0x04,0x31,
- 0x3f,0x6a,0xc2,0xe2,0xc3,0x64,0xf6,0x5f,0xfc,0x2a,0xe2,0xff,0x84,0x61,0x41,0xbc,
- 0xb8,0x4e,0x94,0x9d,0xc1,0xaf,0x5b,0x57,0xce,0x40,0x37,0xa8,0xa2,0x43,0x9c,0x35,
- 0x3f,0x66,0x16,0xfe,0xf9,0x25,0xa3,0xfe,0x17,0xe5,0x02,0xef,0x19,0x7e,0xf3,0xd3,
- 0xa3,0xda,0x85,0x1c,0x3c,0x42,0xf5,0x6d,0x46,0x2c,0xff,0xcf,0xc5,0xf5,0x9f,0x05,
- 0xda,0x39,0xc3,0x1b,0x46,0xfd,0x63,0xe5,0xe7,0x15,0x01,0xa4,0x05,0x7f,0x9e,0xcf,
- 0x3e,0x76,0xb5,0x1b,0xff,0x50,0xfe,0x17,0x15,0xf9,0xf1,0xf6,0x94,0xff,0x02,0x61,
- 0x49,0x65,0x6f,0x17,0xf5,0xbf,0xd8,0xaf,0xa7,0x1b,0x61,0x10,0x71,0x8e,0xf0,0xcf,
- 0x78,0xff,0x4f,0x6f,0x57,0x1a,0x0f,0xf7,0x53,0xa1,0x63,0x65,0x77,0x85,0x85,0x90,
- 0x7d,0xbb,0x95,0x44,0xaf,0x27,0x1b,0xff,0x38,0xfe,0x9f,0x9d,0x6e,0x47,0x8a,0x25,
- 0xe4,0xed,0xb6,0x3a,0xc2,0x8f,0x66,0xfb,0x7f,0x72,0x2c,0x7c,0xa8,0x64,0x36,0x0e,
- 0xdc,0x16,0x44,0xfe,0x17,0xe2,0x13,0x77,0xfe,0x17,0x81,0x1c,0x6f,0x1a,0xed,0xf4,
- 0x52,0x61,0x4c,0x7a,0xde,0xb4,0x47,0x48,0xb1,0xf0,0xcf,0xa5,0xea,0xff,0x5c,0xec,
- 0xe8,0x58,0x0a,0x67,0xca,0x28,0x50,0xdb,0x3c,0xbe,0xfe,0x73,0xe6,0xb6,0x53,0x96,
- 0xa0,0xd8,0x15,0x1d,0x1b,0x11,0x28,0x92,0xff,0xc7,0x5e,0xcf,0x17,0xf5,0xbf,0xe8,
- 0x0a,0x83,0xed,0x31,0x2b,0x5a,0x80,0xcb,0x54,0x4f,0xe1,0xa9,0xb1,0x4c,0xfd,0xb1,
- 0xac,0xfe,0x17,0x89,0xec,0x46,0x18,0x93,0x0d,0xc2,0x3f,0x57,0x12,0x1e,0xb0,0xaf,
- 0x6f,0xf5,0xff,0xaa,0xeb,0xb3,0xda,0x7e,0xf1,0xba,0xe7,0x44,0xda,0x97,0xa8,0x08,
- 0x54,0x25,0xdf,0x8c,0x50,0x27,0x79,0x80,0xf0,0xcf,0xc5,0xf5,0x0f,0xd3,0xf3,0xd3,
- 0x67,0x09,0x1a,0x1e,0x59,0x46,0xdf,0x0b,0xa4,0xf1,0x8f,0x3d,0x3f,0x3b,0xc6,0xfb,
- 0x7f,0xec,0x42,0xdc,0x94,0x11,0x56,0xc0,0x44,0xc6,0x9c,0xbb,0x7e,0x85,0xd5,0xff,
- 0x7d,0x86,0x95,0xed,0x45,0x42,0x97,0x68,0xa4,0x28,0x95,0x51,0xff,0xa0,0xcd,0x16,
- 0x91,0x80,0xe2,0x5f,0xf6,0xf5,0xcd,0x71,0xfe,0x9f,0x94,0x03,0xf3,0x44,0x46,0xd8,
- 0xaa,0xce,0x69,0x24,0x8c,0x66,0xd7,0xff,0x51,0x9c,0xea,0xd9,0x53,0xad,0x89,0xdd,
- 0x6f,0x39,0xf6,0xd7,0xda,0xfd,0x1c,0xff,0x62,0xff,0x0b,0x4a,0xfb,0x22,0x21,0x21,
- 0x68,0x3f,0x41,0x38,0xc4,0x6a,0x45,0xff,0x8b,0x4b,0xd4,0x3f,0x4c,0xf7,0x83,0x98,
- 0x90,0x71,0x8c,0x38,0x42,0xf1,0xf8,0xfc,0x77,0x7b,0xbf,0x2f,0xd5,0x37,0xfa,0x5c,
- 0x65,0x81,0x51,0xd0,0xd2,0xfd,0x4f,0x9d,0xfc,0xd3,0xf1,0xfe,0x9f,0xa0,0x10,0xb4,
- 0x80,0x7d,0x24,0x10,0xcd,0xca,0xff,0xba,0xa8,0xff,0x45,0xcc,0x29,0x53,0xb3,0x09,
- 0x85,0x59,0xca,0xd6,0x88,0xc0,0x3f,0xf6,0x7a,0xc8,0xee,0x7f,0x81,0x13,0x15,0xb1,
- 0x60,0x40,0xd0,0xf6,0x08,0x09,0x20,0x94,0xa9,0xbf,0x9a,0x95,0xff,0x45,0xf9,0xfe,
- 0x3e,0xd1,0x88,0xb3,0x35,0xdd,0xf8,0x75,0x59,0x6b,0x55,0x09,0x0a,0xc7,0x33,0xf9,
- 0x5f,0xe9,0xfa,0x3f,0xf3,0x5d,0xd6,0x9f,0xdc,0xaa,0x14,0xcf,0x12,0x0f,0x4e,0x1d,
- 0x3f,0x59,0xc6,0xff,0x53,0x9a,0xe5,0x2f,0x92,0x1a,0x5a,0xd7,0x8a,0xf1,0x46,0x95,
- 0x15,0x41,0x7b,0xd1,0x98,0xdd,0xea,0x1f,0xd7,0xff,0x5d,0x80,0x9c,0x82,0xb4,0xff,
- 0x87,0xbc,0x3d,0x29,0xb5,0x47,0x4f,0x13,0x81,0xb8,0x1e,0xa0,0xd4,0xf8,0xec,0xfe,
- 0xef,0x6e,0x7f,0x97,0x39,0x4c,0xc2,0xbe,0x34,0xf1,0x09,0x11,0x51,0xc2,0x7a,0x5e,
- 0x57,0xfe,0xbb,0x98,0x46,0x8f,0x53,0x7f,0xdb,0xea,0x7f,0x2a,0x3c,0xfc,0xc4,0x17,
- 0x4a,0xf7,0x93,0xb5,0xd7,0x83,0x93,0xff,0x65,0xfb,0x7f,0xc4,0xfb,0xfd,0x10,0xba,
- 0xed,0xfc,0xaf,0x2a,0xab,0xfe,0x8f,0x7d,0xfd,0xa0,0xab,0xfe,0x8f,0x96,0xf5,0x0f,
- 0x6d,0x41,0xe4,0xbf,0x8f,0xeb,0xff,0x95,0xb5,0xba,0x1a,0x33,0xeb,0x4d,0x1b,0xe3,
- 0x02,0x08,0xb9,0xfa,0xc5,0x2b,0x59,0xfd,0x2f,0x66,0xa6,0xc3,0x5e,0xa9,0xca,0x36,
- 0x14,0x8e,0xc2,0x53,0x14,0xda,0x18,0xdf,0xff,0xeb,0x12,0xfd,0x2f,0xfa,0x45,0x59,
- 0xa4,0x7e,0xdc,0x2f,0xe8,0x83,0xde,0x30,0x64,0xfa,0xbf,0xeb,0x52,0x96,0xff,0x47,
- 0xb4,0xfd,0x4a,0x3b,0x72,0x5b,0xf1,0xfa,0xe9,0x40,0xf6,0x70,0xe6,0xfa,0x8e,0xff,
- 0x27,0xd3,0xff,0xc2,0x11,0x5e,0x25,0xea,0x05,0x55,0x44,0x7c,0xef,0xe2,0xfa,0x87,
- 0x97,0xd2,0xb7,0xc3,0x69,0xa1,0xdc,0x55,0xff,0x70,0x62,0x56,0xfc,0xa2,0x7e,0xb1,
- 0xaf,0xa7,0xfc,0x5e,0x38,0xc7,0xaf,0x4f,0xf9,0x37,0xc9,0xa7,0xd9,0xa1,0x38,0xf1,
- 0x37,0x26,0x98,0x19,0xff,0x8f,0xed,0x7f,0x0e,0x5b,0xb7,0x3d,0xa4,0xd6,0xe2,0xb6,
- 0xeb,0x31,0x03,0xf5,0xcf,0x17,0x03,0xfd,0xb0,0x2a,0x51,0xd6,0xab,0x7e,0xdb,0xe5,
- 0xff,0x01,0xc8,0xf6,0x57,0x47,0x3c,0xf7,0x88,0x6d,0x9a,0x68,0x84,0x7a,0x14,0x56,
- 0xea,0x22,0x82,0xef,0xaa,0xff,0x93,0x5d,0x7f,0xbe,0xd2,0xb4,0xf6,0x5f,0x56,0xc7,
- 0x87,0x7e,0x8b,0x21,0x8c,0x82,0xab,0xfe,0xa1,0xf3,0xbc,0x4b,0x4b,0x68,0xff,0xb8,
- 0x80,0xcc,0x8a,0x15,0xcf,0x6a,0x1e,0xa6,0xf5,0xc3,0xa9,0xff,0x45,0xa6,0xfe,0x21,
- 0xb8,0xad,0x8f,0x88,0xfe,0x50,0xd9,0xe7,0x3e,0x41,0x73,0x1d,0xa6,0x56,0x3b,0x6d,
- 0x0b,0x93,0x5f,0x72,0xd7,0x3f,0x3c,0x5b,0x9a,0x36,0x6a,0x96,0xbd,0xdb,0x88,0x42,
- 0x29,0xd5,0xff,0x99,0x30,0xda,0x3c,0x26,0xfd,0x77,0x4a,0x7d,0x72,0xe3,0x9f,0x36,
- 0x65,0x69,0xa6,0x6d,0x13,0x95,0xa1,0xbe,0x21,0x19,0x20,0xc7,0x8e,0x30,0xbb,0xc3,
- 0xda,0x6b,0x3c,0xc0,0xd5,0x64,0x53,0xca,0xdd,0xff,0x2b,0x6d,0xef,0x40,0xd8,0x3b,
- 0xe9,0x26,0x11,0x76,0x87,0xe9,0x66,0x57,0x37,0x2e,0x03,0xea,0x08,0x1f,0x49,0x16,
- 0xb9,0xfa,0x7f,0x41,0xda,0xff,0x33,0x2b,0x77,0x40,0x7b,0xa0,0x28,0xb4,0x63,0xcd,
- 0x9c,0x76,0x42,0x8c,0x41,0x6a,0xd4,0xd8,0x4f,0xf5,0x28,0x52,0x6a,0x55,0x7b,0x46,
- 0xff,0x80,0x8a,0xd7,0x77,0xea,0xcb,0x19,0x75,0x9f,0xb9,0xe9,0xf1,0xf2,0x11,0xe5,
- 0x23,0xe5,0x0a,0xd3,0xdf,0xdd,0x31,0x6c,0xdc,0xa5,0x86,0x0d,0x5f,0xb7,0x64,0x66,
- 0xf2,0xbf,0xae,0xa2,0x24,0x37,0x7c,0xde,0x13,0x94,0xdd,0xa6,0x37,0xf4,0xe5,0xdb,
- 0xfd,0xbb,0xd7,0x8d,0xca,0x47,0xf9,0x07,0x56,0x45,0xcd,0x61,0x47,0xff,0xc0,0xb3,
- 0x39,0xf2,0xdd,0xc6,0xed,0xad,0x73,0x73,0xaf,0x7a,0x16,0xee,0x36,0x5e,0xd7,0xe6,
- 0x96,0xe4,0x3f,0x3b,0xf1,0x6e,0xb8,0x1d,0x3e,0x35,0x29,0xa7,0x57,0xba,0xbb,0xf1,
- 0x75,0xed,0x53,0x4a,0xbe,0x39,0xcb,0xb9,0x9f,0x1b,0x6e,0x54,0x66,0x49,0x3e,0xa3,
- 0x59,0xbb,0xaa,0x4f,0xba,0xbb,0xed,0xbf,0x19,0x9f,0xd3,0x26,0xf6,0xe5,0xce,0x82,
- 0xb5,0x8d,0xff,0x53,0x83,0x3e,0x98,0x25,0xdd,0x6e,0x7c,0x41,0xcb,0x31,0x0b,0xed,
- 0xfb,0x81,0x4e,0x56,0x76,0x77,0xec,0xf6,0xe8,0xa7,0x7c,0x4a,0xbb,0x54,0xc6,0x23,
- 0x7a,0x89,0xaa,0xac,0x94,0xee,0xe6,0x8b,0xf4,0xa2,0xd2,0x9c,0x03,0x28,0x44,0xf4,
- 0x22,0x55,0x71,0xd1,0xcd,0xb8,0x52,0x16,0x55,0x17,0x79,0x2e,0x83,0x9c,0x4e,0xdc,
- 0x74,0x97,0xb2,0xcb,0xb4,0x1b,0x38,0x1e,0x89,0x40,0xae,0xfe,0x7d,0x3e,0x25,0x2a,
- 0x2d,0x82,0xcf,0x43,0x0e,0x0f,0x1b,0xce,0xfd,0x2f,0xca,0xa9,0x6a,0xbb,0x8a,0x7f,
- 0x6e,0xd6,0xc4,0xa3,0x4a,0x95,0x74,0x15,0x6f,0x5e,0x52,0x72,0x54,0x0a,0x68,0xb7,
- 0x6f,0xfc,0x42,0x14,0x62,0xd2,0x3d,0xd2,0xed,0xf1,0x4f,0xeb,0xee,0xfb,0x79,0xd6,
- 0x88,0xea,0x50,0x5a,0x81,0x1f,0x1c,0x37,0x50,0x50,0x98,0x04,0xbc,0xa5,0x4c,0x2a,
- 0x85,0x5c,0x49,0xe3,0xb8,0xcc,0x50,0x50,0x0a,0x79,0xa1,0x73,0x3f,0xcf,0x46,0x94,
- 0xbb,0x24,0x95,0xdf,0x18,0xd6,0xd6,0x90,0x60,0xde,0xa8,0x17,0xb6,0x2b,0x65,0x6d,
- 0x2a,0x34,0x41,0x2b,0x2f,0x09,0x08,0x41,0xe3,0x99,0xf9,0x79,0x76,0x7e,0xce,0xad,
- 0xbd,0xad,0x89,0xbf,0xc5,0x0d,0x94,0x22,0x84,0x9a,0x89,0x4d,0xf8,0x27,0x5a,0xef,
- 0x2e,0x51,0x73,0x98,0xd4,0x64,0xb6,0x46,0x4b,0xd4,0x89,0x90,0xb9,0x1f,0x3e,0x49,
- 0xfa,0x14,0xdc,0x60,0x4e,0x5c,0xb6,0xe2,0x76,0x4b,0x58,0x9e,0x73,0xbb,0xf4,0x05,
- 0x68,0x1c,0x2c,0x5c,0xa6,0x4c,0x92,0x26,0xc0,0x6d,0x78,0x4a,0x81,0xcc,0xf3,0x72,
- 0xaa,0xfd,0x92,0xab,0x2a,0x9a,0xa4,0xc7,0x51,0x88,0x2a,0x71,0x29,0x08,0x8d,0x92,
- 0x66,0x34,0x72,0x71,0x5e,0x31,0x15,0x5c,0xf5,0x99,0xf9,0x7c,0x96,0xf8,0xc5,0x2b,
- 0x15,0x9d,0xc7,0x74,0x1d,0x05,0x40,0xa1,0x82,0xe5,0x49,0xed,0x50,0x16,0x2f,0xd5,
- 0x73,0x55,0xc4,0xe0,0x3a,0x2f,0x95,0x5c,0xf3,0xd3,0x9a,0xb3,0x58,0x7a,0x05,0x2e,
- 0x33,0x26,0xc6,0x27,0x2c,0x96,0xfe,0x8e,0x7d,0xde,0xc8,0x11,0x02,0x7c,0xde,0x98,
- 0x14,0x9f,0x50,0x81,0xf3,0xff,0x4f,0xc6,0x44,0xf7,0xf3,0x1a,0xf2,0x32,0x78,0x1d,
- 0xe6,0x12,0x31,0x21,0x0a,0x47,0x51,0xc8,0x8b,0xa1,0x35,0x59,0x04,0x97,0xc1,0x44,
- 0x53,0x5a,0x26,0x1d,0xe5,0x97,0xe1,0x29,0xd7,0xfa,0x69,0x52,0xa2,0x6d,0xa5,0x81,
- 0x1b,0x55,0xad,0x49,0x09,0xb7,0xf9,0x50,0x88,0x1f,0x50,0xca,0x78,0xec,0xee,0xf2,
- 0x60,0x5e,0x3b,0x44,0xdb,0x7c,0x7a,0xb3,0x0a,0xae,0xf7,0x05,0x14,0x03,0xa3,0xda,
- 0x10,0x08,0x85,0xa8,0x83,0x0e,0x09,0x9a,0xe0,0x43,0x80,0x11,0xd3,0x74,0x10,0xf9,
- 0x00,0xa6,0x96,0x99,0x1f,0x26,0x85,0xf9,0x02,0xbd,0x58,0x55,0x0e,0x38,0x42,0x4e,
- 0x95,0x19,0x49,0xa0,0xf0,0x42,0x4e,0xb8,0x6d,0x41,0xf8,0x73,0x21,0xc5,0x2c,0xcb,
- 0xdc,0x7f,0x53,0x4e,0xb4,0x6d,0x91,0xfe,0x79,0x75,0x62,0x47,0x5a,0x28,0x6c,0xcf,
- 0x89,0x9a,0x91,0xf0,0x17,0xd4,0x9c,0x0e,0x7c,0x71,0x8b,0xc2,0x37,0xfa,0x14,0xae,
- 0xb9,0xd6,0x8f,0x7d,0x3f,0x9c,0xca,0x5a,0x01,0xa3,0x29,0x0c,0xb7,0xa9,0x34,0x97,
- 0x1c,0xa7,0x59,0xd5,0x65,0xd5,0xbd,0x1e,0x6e,0xb8,0x55,0x59,0xdc,0x76,0xb9,0x7e,
- 0x63,0xa4,0xf0,0x01,0x5b,0x68,0x57,0xe6,0xb4,0xe5,0xe9,0x4d,0x11,0x63,0x83,0x52,
- 0xc1,0x2f,0xd7,0x9b,0x23,0x9a,0x7b,0xbd,0x45,0x73,0x16,0x49,0x9f,0x87,0x1b,0xf8,
- 0x44,0x4b,0xf8,0x5b,0x5e,0x48,0x8b,0xb2,0x09,0x0a,0xf1,0xef,0x49,0x2a,0xae,0xfe,
- 0x42,0x5e,0x62,0xb8,0xd6,0x4f,0xae,0x74,0x0b,0x6f,0x8d,0x4e,0xdc,0x94,0x93,0x16,
- 0x4a,0x73,0x6e,0x84,0x3c,0x7e,0xeb,0x9d,0x25,0xa5,0x4a,0xae,0xd4,0x88,0x47,0x4a,
- 0x4a,0x73,0x32,0xf9,0x38,0xc0,0x8b,0x24,0xc5,0x34,0x74,0x2d,0xa2,0x14,0x81,0xc2,
- 0x1b,0x49,0x60,0x85,0x8a,0xd4,0x08,0x5a,0x04,0xf0,0x54,0xa7,0x38,0x02,0x19,0xfd,
- 0xf3,0xec,0x8d,0xec,0x16,0xfe,0xef,0xd1,0x29,0xa5,0xf9,0x37,0xb2,0x42,0x14,0xca,
- 0x23,0x6a,0x0b,0x93,0xa4,0xbe,0xe8,0x44,0xad,0xf4,0xc6,0x4f,0xdd,0xc2,0x5f,0x8e,
- 0x5e,0x5b,0x7a,0x95,0x31,0x2b,0x33,0x3f,0x37,0xe6,0xdc,0xdd,0x76,0xbb,0xfe,0x05,
- 0x75,0xe2,0x73,0x39,0x77,0xf3,0xdb,0x71,0x3e,0x73,0x56,0xe6,0xde,0xdd,0xb6,0x28,
- 0xfa,0x0f,0xa5,0x57,0x3d,0x37,0x01,0x4f,0x45,0xff,0x67,0xe9,0x44,0xb3,0xd0,0xb9,
- 0x9f,0x1b,0x9a,0x50,0x09,0xfc,0x4e,0x9f,0x5b,0x9a,0xdf,0x2e,0xdf,0xcd,0xff,0x9b,
- 0x3e,0x77,0x51,0xfe,0x73,0x0a,0x0d,0xfb,0x54,0x69,0xce,0x73,0x78,0x64,0x73,0xf4,
- 0x0b,0xa5,0xf9,0x66,0xa1,0xf3,0x7e,0x6f,0xb8,0x31,0x67,0x16,0x9e,0xfd,0xc2,0xa2,
- 0xdb,0x9e,0xa3,0x3f,0x14,0x2d,0x2a,0x9d,0xf8,0x9c,0x72,0x6d,0xe7,0x7d,0xd1,0x2f,
- 0xd1,0xea,0xa6,0x53,0x9f,0x2e,0xcd,0x5a,0x3f,0x4c,0x8a,0xf2,0x48,0x18,0x95,0x4c,
- 0xbb,0xa4,0x93,0xb6,0xc1,0xa7,0x96,0x96,0x11,0x3f,0x18,0x14,0x5a,0xfb,0x11,0x5c,
- 0x21,0xb8,0xab,0xcb,0xac,0xb6,0x5c,0xe9,0x4e,0xbe,0xe8,0xce,0xcb,0x4a,0x73,0x56,
- 0x92,0x10,0x4d,0x0b,0x11,0xfc,0x43,0x25,0x2b,0x73,0xca,0x78,0x29,0x1e,0x51,0x78,
- 0x66,0xf8,0x0d,0xc6,0xb5,0xcb,0xa4,0xdb,0xe1,0x0b,0x50,0x62,0xae,0x20,0xe1,0x56,
- 0xd0,0x70,0xa1,0x4a,0x0b,0xe0,0x0b,0x4c,0x41,0xb3,0x88,0x47,0x3e,0x05,0xee,0xfb,
- 0xb9,0xa1,0x89,0x47,0x79,0x69,0x90,0xbe,0x3c,0x12,0x74,0xe6,0x41,0x81,0x96,0x4d,
- 0xae,0x47,0x6b,0xc7,0xf5,0x43,0x1f,0xa5,0x7b,0x3d,0xdc,0xd0,0xd4,0xa9,0xe3,0xea,
- 0x6a,0xc2,0x65,0x69,0x09,0x9e,0x42,0xbc,0x6d,0x71,0x44,0x6b,0x2f,0x21,0x81,0xa9,
- 0x85,0x59,0xe3,0x73,0x8c,0xb6,0xd6,0xc0,0x6d,0xea,0x44,0x12,0xb4,0xd9,0xad,0xbe,
- 0x89,0xcd,0x53,0x48,0xd7,0x95,0xf8,0x5a,0x8a,0x25,0x68,0x6b,0xd5,0x6f,0xf3,0x4d,
- 0x34,0xb2,0xe6,0xa7,0x95,0xdf,0x16,0x9e,0xe8,0x53,0x9a,0xd2,0xc2,0x8a,0x66,0x14,
- 0x5a,0xf4,0x42,0x35,0x27,0x7d,0x44,0xcd,0x31,0x32,0xdf,0x57,0x8e,0x6a,0xdc,0x05,
- 0x5a,0x27,0x2a,0x99,0x08,0x09,0x8a,0x22,0x81,0x61,0x18,0x12,0x2e,0x25,0x09,0x17,
- 0x0d,0xe9,0x42,0x5a,0x3d,0x99,0xfb,0x69,0xbc,0xb5,0xa9,0x82,0xb7,0xe9,0xfa,0xb4,
- 0x58,0x53,0x3b,0x70,0xbe,0x15,0x6a,0x62,0x93,0x99,0xb2,0xba,0x33,0x50,0xf6,0xc5,
- 0xd2,0x22,0x03,0x48,0x2d,0xa9,0xa5,0xe0,0xec,0xef,0x40,0x32,0x3e,0x1d,0xbd,0x7c,
- 0x91,0x72,0x59,0x53,0x4e,0xfc,0x86,0xa8,0xb4,0x09,0x7e,0xd3,0xfc,0x7d,0xde,0x1c,
- 0x9d,0xb5,0x48,0xfd,0x3c,0x2a,0xf7,0x1b,0x48,0xff,0x57,0xc3,0x44,0xd7,0xf3,0xae,
- 0x30,0x1a,0xa3,0xda,0x51,0xa8,0x66,0xf7,0xe1,0x30,0x38,0x2a,0x57,0xcb,0x39,0xf8,
- 0x7e,0xaf,0x53,0xd5,0x5c,0x28,0xc1,0xe5,0x8d,0x9f,0xce,0xa7,0x51,0xff,0x80,0xeb,
- 0x57,0xb1,0x2c,0xcf,0xe7,0x69,0x36,0x5a,0x07,0x2b,0xc2,0x92,0x0f,0x9a,0x0d,0x6e,
- 0x56,0x44,0x55,0x55,0x0d,0x28,0x31,0xae,0x93,0x3e,0xf9,0x0a,0x7d,0xda,0x99,0x5f,
- 0x09,0x4c,0x81,0x7c,0x43,0x06,0x78,0xd9,0xb8,0x16,0xf2,0x41,0xbe,0x95,0xbf,0xcc,
- 0x2b,0x20,0xcf,0x60,0xb7,0x40,0x1c,0xa6,0xf0,0x7c,0x60,0x46,0xd6,0xf8,0x8a,0xb6,
- 0xeb,0xf8,0xcd,0x5f,0x2c,0x2e,0x51,0xfa,0xa4,0x59,0xfc,0xe6,0xd6,0xe2,0x49,0xca,
- 0xdb,0x53,0xae,0x0b,0xe2,0xc2,0xdb,0xa8,0x6c,0xcf,0x29,0x53,0x16,0xb4,0xca,0x9a,
- 0x7b,0xfd,0x40,0xf9,0x8a,0x25,0x6d,0x5f,0x5c,0xf2,0xf9,0xb5,0x13,0xcb,0x73,0x96,
- 0x34,0x7e,0x51,0xff,0xfc,0xe6,0x89,0x0f,0xe5,0x2c,0x69,0x9b,0x1c,0xfe,0x7c,0xac,
- 0x70,0xab,0xb4,0xa4,0xf7,0x8b,0xe1,0xcb,0xd6,0xe6,0x64,0xdf,0x8f,0xb8,0x8d,0x28,
- 0x6c,0x04,0xbc,0x0d,0x8e,0xc2,0x26,0x98,0x03,0x97,0x03,0xbb,0x0d,0x06,0x95,0x6b,
- 0x21,0x0f,0xef,0x47,0x73,0x8f,0xcf,0x5b,0x5c,0x25,0xf9,0x3a,0x9b,0xa5,0xc2,0x58,
- 0xcb,0x5d,0x52,0xa9,0x82,0x42,0x67,0x4b,0x98,0x2c,0x9a,0xa4,0x99,0x2d,0x55,0x52,
- 0x69,0x27,0xe9,0x0d,0xd7,0x78,0xe5,0x06,0x6d,0x56,0xcb,0x4d,0xb7,0x48,0x85,0x8d,
- 0x37,0xb4,0x16,0xde,0x96,0x73,0x0b,0x4c,0x34,0x1a,0xb5,0xab,0x5a,0x94,0x1c,0x49,
- 0x31,0x0c,0xad,0xd0,0x50,0x26,0x4a,0x13,0x0d,0xd7,0x78,0xb5,0xac,0x49,0x6d,0xc5,
- 0x95,0x28,0x45,0x24,0x34,0x89,0xb1,0x89,0xba,0xa2,0x6e,0x61,0xc1,0xdb,0x3a,0x4a,
- 0xca,0xb8,0x3a,0xeb,0x56,0x85,0x4e,0xad,0x70,0x8f,0xf7,0xdc,0xc9,0xe2,0xc6,0x76,
- 0x6d,0x3a,0x78,0x24,0xc6,0x8d,0x04,0x04,0x4b,0x3c,0x85,0xac,0xcd,0x48,0x68,0x41,
- 0x43,0x1c,0xd9,0xa1,0x85,0xdc,0x6f,0x0b,0x7c,0xcd,0x9f,0x83,0x97,0xfb,0xae,0xad,
- 0x52,0x17,0xc8,0x28,0x98,0x65,0xf8,0x6d,0xb1,0xcf,0x49,0x1b,0xcd,0x89,0xe1,0xd2,
- 0x05,0xb9,0x9f,0x83,0xdb,0xfa,0xaf,0x0d,0x97,0xba,0xaf,0x9f,0x37,0x81,0x8c,0xfe,
- 0x17,0x02,0x39,0x07,0x73,0xee,0x01,0x84,0x01,0x15,0x13,0xfb,0xe5,0x7b,0xca,0x6e,
- 0xef,0xfc,0x07,0xfd,0xf2,0x7e,0xef,0x3d,0xd2,0xe6,0xd8,0x3f,0x54,0x4c,0x34,0xdd,
- 0xf3,0xaf,0x1a,0x07,0x8a,0xc2,0x9d,0xbe,0xc6,0x72,0x30,0x4c,0x2d,0xdc,0xe2,0x93,
- 0x64,0xad,0x05,0x05,0x05,0x05,0x3c,0x52,0x44,0x82,0xfb,0x7e,0x1a,0x2e,0x2c,0xbc,
- 0xf0,0xeb,0xf3,0x27,0x2f,0xfc,0x4e,0x08,0x17,0x4e,0x5e,0x38,0x77,0xb1,0x00,0xff,
- 0x07,0xbf,0xfa,0x37,0x17,0xee,0xc5,0xeb,0xef,0xfd,0x1d,0x09,0x2f,0xbd,0x89,0x57,
- 0x43,0x01,0x2f,0x9b,0x3c,0xf3,0xcf,0xa1,0xd7,0xfc,0x78,0x24,0xb9,0x7b,0x69,0xd6,
- 0xfd,0x34,0x2c,0x3c,0x82,0xe3,0x8f,0xfc,0x4e,0x08,0x0d,0x74,0x1b,0x0d,0x34,0xbe,
- 0xef,0xec,0xb9,0xd9,0x75,0x74,0xa4,0x6f,0xe0,0x43,0xf7,0xf8,0xf2,0xd2,0x9b,0x9f,
- 0x2b,0xaa,0xef,0x5c,0xfb,0xdf,0xca,0xaf,0xbe,0xf9,0xf9,0x0d,0x0d,0x9d,0xeb,0xce,
- 0x95,0x2f,0x8f,0x3c,0x57,0xbc,0xab,0x73,0xed,0x9d,0x78,0xea,0xf9,0x07,0xf6,0xa2,
- 0xe0,0x1e,0x2f,0xb1,0xbb,0x8d,0xcd,0xda,0x04,0x25,0xaf,0x8f,0x84,0xd6,0x4f,0x97,
- 0xe4,0x3d,0xcb,0x96,0x19,0x93,0x5a,0x27,0x94,0x48,0xcf,0x2a,0x77,0x93,0x70,0x79,
- 0x9e,0x7b,0x3e,0x15,0x85,0x40,0xe0,0xff,0xd4,0x6e,0x78,0x36,0xe7,0x6e,0x09,0x15,
- 0x35,0xe2,0xc3,0x1c,0xc4,0x93,0x78,0x44,0x20,0x46,0x5f,0xb4,0x19,0xf1,0xa1,0x6b,
- 0x3c,0x43,0x6d,0x2c,0x40,0xe0,0x4a,0xd2,0xcf,0xa8,0x66,0x6d,0x01,0x84,0x80,0x86,
- 0x00,0xf1,0xa1,0xfb,0x86,0xf4,0x3b,0x39,0x82,0x34,0x90,0x38,0xdc,0x09,0x42,0x40,
- 0xd8,0x00,0xa4,0x36,0x25,0xae,0xdc,0x79,0x79,0x29,0xbb,0x51,0x93,0xdc,0xe3,0x55,
- 0xe5,0x1e,0x69,0x12,0xff,0xb4,0x2e,0xf5,0xb7,0x90,0x30,0x41,0x2f,0xec,0x4f,0x1f,
- 0x29,0x3c,0x48,0xc2,0x9a,0xe6,0x59,0x92,0xfb,0x7e,0x00,0x04,0x08,0x04,0x54,0xb3,
- 0x51,0xfa,0x43,0x78,0xd9,0xf4,0x11,0xfa,0x43,0x0a,0x22,0x46,0x32,0xc5,0x99,0x5f,
- 0xa9,0x32,0x55,0xca,0x83,0x26,0x43,0x8b,0x2b,0x15,0x28,0xb0,0xa8,0xb6,0x49,0x29,
- 0xb7,0x8e,0x6c,0xa6,0x23,0x46,0x53,0x6b,0xd6,0xf7,0xf8,0x37,0xca,0x4d,0xbd,0xb8,
- 0xa8,0x62,0x85,0xd3,0x95,0x9b,0xda,0x8a,0xc2,0x2d,0x3b,0xd2,0x82,0xb2,0x56,0xfa,
- 0x1b,0xf8,0x0c,0x2f,0xd2,0xf1,0x94,0xeb,0xee,0xcd,0x10,0xcc,0x56,0x15,0x53,0x0a,
- 0x43,0x0e,0xdc,0x42,0xf1,0x5a,0x02,0x41,0x9f,0x43,0x6b,0x83,0xc2,0x02,0xb8,0x92,
- 0x5f,0x36,0x98,0x13,0x76,0x99,0x77,0x84,0x42,0xa8,0x21,0x72,0x50,0xad,0xa1,0x76,
- 0x6a,0x41,0x4d,0xdc,0x68,0xe0,0xc9,0xc6,0xb6,0x42,0x14,0xb4,0xdb,0x94,0x4f,0xa9,
- 0x85,0xc7,0x68,0x2f,0x1b,0xce,0x5c,0xdf,0x60,0x25,0x6a,0x27,0x94,0x41,0x69,0x69,
- 0x80,0xa1,0x22,0x2b,0xb3,0xc0,0x0d,0x90,0x40,0xff,0x94,0x30,0x56,0x69,0xd6,0x78,
- 0x88,0x16,0x96,0xc2,0x8d,0xa4,0xe8,0xa3,0x88,0x47,0x72,0x2d,0x81,0x8e,0xe0,0xfc,
- 0x47,0xcb,0x36,0xa1,0xfe,0xd4,0xb8,0x33,0x5e,0x6b,0x34,0xd8,0x37,0xb5,0x4d,0x38,
- 0x2c,0x2f,0xce,0x48,0x55,0xa1,0xc0,0x19,0x29,0x76,0x7a,0x83,0xec,0x2e,0x1d,0xdf,
- 0x08,0x5c,0xde,0xee,0xdc,0xbf,0x81,0x78,0x89,0x40,0xe0,0x97,0x54,0x38,0xa0,0x54,
- 0x09,0x41,0x3b,0xa0,0x84,0x57,0x93,0x50,0x7a,0x40,0x99,0x73,0xf0,0xf2,0xf0,0x8d,
- 0xaa,0x6a,0x3a,0x78,0xcc,0x68,0xc4,0x05,0xa1,0x09,0x76,0xac,0x69,0xe0,0xd4,0x74,
- 0xca,0x02,0x28,0xd2,0x91,0x32,0x81,0x18,0xf1,0x69,0xf0,0x94,0x83,0x1f,0x0c,0x7c,
- 0xb8,0x30,0x17,0x6c,0xf5,0x03,0x96,0xa0,0x92,0x10,0xb3,0x8f,0x10,0xfe,0x0c,0x41,
- 0x66,0x3d,0x58,0xf7,0x53,0x1a,0xfe,0xb4,0x0f,0xda,0x2d,0x01,0x0d,0xb1,0x82,0x0b,
- 0x03,0x8f,0xac,0x3f,0xa0,0x44,0x7b,0x4b,0xf5,0x1b,0x7d,0x68,0xaf,0x9d,0xfb,0x91,
- 0x04,0x3e,0x14,0x46,0x1c,0x84,0x59,0xb7,0x20,0x36,0x09,0xb8,0x7e,0x04,0x5e,0x55,
- 0x5d,0xf6,0xa2,0x55,0x12,0x78,0x58,0x58,0xf3,0xb4,0x60,0x5d,0x1f,0x0d,0xbd,0x38,
- 0x42,0x78,0x18,0x2f,0xa5,0x39,0xcf,0x6b,0x28,0xad,0x79,0x25,0xf8,0x62,0x35,0x4d,
- 0x69,0x95,0x48,0x40,0x95,0x6c,0x09,0x80,0x02,0x08,0xec,0xc6,0x9c,0xf9,0x89,0x48,
- 0xb9,0xd0,0xc8,0x35,0x5c,0xb7,0x7f,0x51,0x80,0x52,0x09,0x9c,0x78,0x62,0x44,0xa1,
- 0xdd,0x8a,0xa1,0xb7,0xaa,0x62,0x67,0x14,0x29,0x4b,0x0b,0x74,0xa4,0xc4,0x12,0x5c,
- 0xd5,0x25,0x68,0x7e,0x6e,0x94,0xd3,0x20,0xf0,0xf3,0x69,0x21,0xff,0xc6,0x6c,0xa1,
- 0x6c,0xd1,0x55,0x2e,0xbc,0x91,0x73,0x23,0xa2,0xbb,0x49,0x08,0xd2,0xa4,0x03,0x25,
- 0x96,0x50,0xf8,0x9c,0xf2,0x4d,0x6e,0x0b,0x6d,0x9b,0xa3,0xff,0xa0,0x16,0xba,0xe6,
- 0x5f,0xba,0x11,0x96,0x21,0x08,0x9c,0x50,0x9a,0x7f,0x80,0xdd,0xcd,0x5f,0x2f,0x9b,
- 0x5b,0x9a,0xf7,0x1c,0x2c,0xc3,0x61,0x13,0x54,0xe9,0x39,0x3c,0x32,0x49,0x9f,0x50,
- 0x7a,0x79,0x66,0x7c,0xeb,0x0d,0x02,0x7f,0x12,0x1a,0x24,0x7c,0xb8,0x00,0x85,0x89,
- 0xcf,0x49,0xff,0x03,0x8f,0x94,0x97,0x2e,0x7a,0x2e,0xe7,0x7f,0x90,0xfe,0x29,0x85,
- 0xf6,0xcc,0xfb,0x42,0xd0,0x5b,0xc1,0x3f,0xa3,0xb3,0x48,0xce,0x06,0x14,0xfe,0x4e,
- 0xbf,0x2c,0x22,0x80,0xe2,0x67,0x10,0x9f,0x03,0x1e,0x31,0xff,0x5b,0xf8,0x53,0x11,
- 0x25,0xf3,0xbe,0x0c,0x5c,0xb7,0xa8,0x7f,0x68,0x53,0xf5,0x50,0x5a,0x90,0x56,0xda,
- 0x47,0x50,0x68,0x2b,0x8d,0xde,0xb8,0xc9,0x8d,0x07,0x6e,0x88,0x2a,0xcb,0xa5,0xc9,
- 0xf0,0x69,0x9e,0x93,0xea,0x5c,0x2e,0x15,0xa0,0xa0,0xa5,0x94,0x1a,0x75,0xb2,0xf4,
- 0xe9,0xf6,0xc2,0x14,0x9e,0xf2,0xb0,0x26,0xae,0x99,0xae,0xf5,0x73,0x2b,0x2c,0xc6,
- 0x4d,0x41,0x6e,0x44,0xdb,0x80,0x42,0x1e,0x0a,0x94,0x2d,0x23,0x8e,0x48,0xd6,0x11,
- 0x16,0x71,0x5d,0xdf,0xc0,0xf5,0x63,0xe3,0x43,0x25,0x40,0xeb,0x27,0x28,0xd6,0x0f,
- 0x59,0x65,0xc2,0x93,0xd6,0x29,0xee,0xfa,0xbe,0x9a,0x14,0x63,0xb5,0xa6,0x2b,0xbe,
- 0x42,0xa6,0x18,0xbd,0x25,0x01,0x14,0x9a,0x95,0xd6,0x36,0x3c,0xa2,0x4a,0xac,0xc4,
- 0x10,0x9f,0x4c,0xa1,0xe1,0x9a,0x1f,0x46,0xfb,0xdc,0x70,0x8e,0x2a,0x35,0x43,0x15,
- 0x2f,0xd1,0x73,0x82,0x28,0xb4,0x9a,0x28,0xa8,0x64,0xef,0x4d,0x3a,0x05,0x19,0x7c,
- 0x68,0xe0,0x07,0xd7,0xa4,0x95,0x72,0x54,0x3d,0xaa,0xa1,0x81,0xb6,0x82,0xd6,0xa3,
- 0xd2,0xa4,0xa1,0x92,0x90,0x0a,0x71,0xa0,0x84,0x88,0xd1,0xfa,0x4a,0x9c,0xfb,0x69,
- 0x82,0x38,0x0f,0x23,0x08,0x64,0x5b,0x35,0x8e,0x08,0x4c,0x55,0x3d,0x00,0x31,0xaa,
- 0x84,0xab,0x32,0xc6,0x62,0x7c,0x87,0xae,0x6e,0x32,0x34,0xd7,0xf7,0x95,0x9b,0xd1,
- 0x36,0x39,0x24,0x14,0x5a,0xdb,0x76,0x4b,0x98,0x5d,0xaa,0x7c,0xc5,0xad,0x9f,0x71,
- 0x3c,0x5b,0x0c,0x3f,0x02,0x66,0xa0,0xfe,0x59,0x0c,0x3f,0x41,0xe1,0xf2,0x78,0xfa,
- 0x88,0x1a,0x87,0xc5,0xd7,0xfd,0x44,0x99,0x60,0x94,0xba,0xc6,0xdf,0x10,0xad,0xa8,
- 0xc9,0x2b,0x80,0xbb,0x38,0x24,0xb6,0xd7,0x48,0x1e,0xb8,0xab,0x93,0xde,0x57,0x21,
- 0x1d,0x29,0x4d,0x40,0x8d,0x7a,0x05,0xbb,0x71,0x05,0x64,0xbe,0xf7,0x56,0x7c,0xbc,
- 0x59,0xa6,0x6f,0x19,0x53,0x60,0x15,0xf5,0x6a,0x6d,0x45,0xe1,0x59,0x2a,0x5a,0xd1,
- 0xca,0x4a,0xa0,0x03,0x05,0x0f,0x09,0xee,0xf5,0xa3,0x10,0x7e,0x33,0xe4,0x56,0xf8,
- 0x3e,0x0a,0x9f,0x8d,0x22,0x6c,0xfb,0x77,0x7e,0x6d,0x4b,0xbe,0xc1,0x5a,0x61,0xa3,
- 0x76,0xed,0xc1,0xfc,0xd6,0xe6,0x3b,0xb4,0xf6,0xcc,0xf7,0x8e,0xef,0x6b,0x71,0x6f,
- 0x29,0x6e,0x42,0xa5,0x07,0x50,0xdb,0x5c,0xbe,0x0c,0x85,0x55,0x9d,0xe2,0xc8,0xed,
- 0x85,0x1d,0x0a,0x2d,0xbc,0x1b,0x27,0x49,0xd9,0xfa,0x67,0x16,0x6a,0x6e,0x86,0x18,
- 0xdd,0xde,0xa8,0xc6,0x48,0x97,0xb7,0xa2,0x1a,0xec,0x84,0x00,0xf8,0xe2,0x32,0xea,
- 0x67,0x07,0xd1,0x18,0x52,0xa4,0xa5,0x5a,0x2a,0x45,0x34,0x58,0xb8,0x49,0x89,0x16,
- 0x5e,0x8e,0x82,0xc4,0x17,0x7f,0x85,0x8e,0x44,0x0b,0x63,0x4a,0xb4,0xd4,0x47,0x88,
- 0xd1,0x3d,0x3f,0x46,0x8b,0x56,0x58,0x82,0x68,0xb0,0xd0,0x68,0x69,0xb5,0x84,0x96,
- 0x96,0xd6,0xc6,0x12,0x5f,0x4e,0xa1,0x84,0x47,0x94,0x1c,0x8f,0x24,0xb7,0x19,0x90,
- 0x59,0x3f,0xb8,0x00,0x41,0xac,0x44,0x03,0x77,0x07,0x25,0x6b,0x14,0x04,0x8a,0x70,
- 0x2b,0xad,0x4d,0xe1,0x3b,0x29,0x2d,0x11,0xa7,0x32,0xfb,0xbb,0x34,0x2c,0x6c,0x0d,
- 0x2a,0x24,0xc0,0xf6,0xb4,0x60,0x6c,0x6f,0x9d,0x66,0x1d,0x49,0x6a,0xd3,0x14,0x70,
- 0xad,0xe7,0xcf,0xca,0x9f,0x33,0x5e,0x1e,0xbc,0x76,0x4e,0x69,0x3e,0x0a,0x9d,0x28,
- 0xe4,0x7d,0x96,0x7d,0xce,0xe8,0x7b,0xf9,0xda,0x6b,0xf3,0x3f,0xdb,0xf6,0x39,0x43,
- 0x19,0x2c,0x9b,0xb3,0xc9,0x90,0x32,0xf3,0x13,0x51,0xee,0x01,0xb4,0xfe,0x60,0xc3,
- 0x00,0xc8,0xe9,0x47,0xa0,0xb8,0x88,0xf0,0x80,0xb9,0x72,0x99,0x34,0xa9,0xed,0x2b,
- 0x7a,0x96,0x7d,0xb7,0x60,0x61,0x1a,0x0d,0x6a,0x08,0x14,0xa5,0x62,0xcd,0x38,0xa0,
- 0xcd,0xea,0xf4,0xdd,0x92,0x06,0x8a,0x0b,0xca,0x5c,0xc3,0xe1,0x3f,0x80,0x85,0xff,
- 0x57,0xf0,0x21,0x81,0xc0,0x5f,0xbf,0x8f,0x20,0xb0,0xfe,0xcd,0xf9,0x73,0x7f,0xfd,
- 0xfe,0xc9,0xdd,0xff,0x8c,0xf8,0xf0,0xfc,0x33,0xef,0x9f,0x3c,0xf3,0xcf,0x97,0xbc,
- 0xbe,0x00,0x81,0x1f,0x21,0x08,0x6c,0x68,0x58,0x80,0xc2,0xc9,0x01,0x81,0x0f,0x8b,
- 0x3f,0x3a,0x79,0xf6,0xd2,0xf7,0x73,0x7d,0xe9,0xc2,0xe7,0x7f,0x4d,0x68,0xb0,0xe1,
- 0xea,0xc8,0xf3,0x0f,0x7c,0xd8,0xb9,0xf6,0x5b,0xe5,0xf7,0x2e,0xbc,0xf0,0xc0,0xae,
- 0xce,0xb3,0x77,0x5e,0x3f,0x39,0x72,0xbe,0x68,0xee,0x38,0x7c,0xc8,0x56,0x85,0xb7,
- 0x40,0xf0,0x1b,0x1e,0x2a,0xa7,0xb2,0x25,0x16,0xac,0xf2,0x68,0x07,0x56,0x06,0x13,
- 0x0b,0x7c,0x77,0x7b,0xb4,0xa6,0x4e,0xc0,0x53,0x86,0x47,0x73,0x8f,0xb7,0xed,0x89,
- 0xa6,0xe2,0xfb,0x6c,0xe1,0xcd,0xba,0x16,0xcb,0x99,0x0e,0x66,0x5b,0xa3,0xde,0xda,
- 0x2f,0x8c,0x97,0x01,0x59,0xe3,0xa1,0x53,0x40,0x11,0xa6,0xc1,0x0d,0x30,0x2b,0xa6,
- 0x34,0xe5,0x6a,0xbd,0x1d,0xe1,0x32,0x5f,0xa8,0x49,0x2a,0x31,0x9d,0x53,0xee,0xdf,
- 0x84,0x30,0x5e,0xe4,0x1b,0xba,0x06,0x39,0x3e,0xd4,0x11,0x8d,0xd0,0x6a,0xe0,0x65,
- 0x3b,0x94,0xbb,0x71,0x3f,0x78,0xc9,0xeb,0x73,0xfb,0x3b,0xe9,0x40,0x2d,0xa4,0x52,
- 0x6d,0x14,0xd4,0x42,0xed,0x93,0x80,0xa9,0xa6,0x73,0xca,0xfd,0xbc,0xae,0x7f,0xc1,
- 0x69,0x27,0x85,0x08,0x56,0x23,0x5f,0xa2,0xea,0x6b,0xb7,0x4f,0x39,0xee,0x5e,0x92,
- 0x33,0xa3,0x59,0x38,0xe2,0x63,0x92,0x11,0x63,0x01,0xfd,0xb3,0xf7,0x41,0xc0,0x67,
- 0x5a,0x2d,0xab,0x02,0xae,0xbf,0xa0,0x3a,0xbe,0x25,0x21,0x88,0x3b,0x88,0x21,0x30,
- 0x6b,0xc4,0xaf,0x59,0x8d,0xd9,0xa7,0xdc,0xe3,0x3d,0xab,0xaa,0xb6,0xc0,0x0e,0x63,
- 0xba,0xe6,0xe9,0x2c,0xd8,0x02,0x3b,0x0d,0x6f,0x89,0xe7,0xf9,0x82,0x2d,0xbe,0x1d,
- 0xd2,0xf4,0xd2,0x35,0x9d,0x2c,0x01,0x3b,0x60,0xba,0xe6,0x7e,0x02,0x67,0xfe,0x6b,
- 0x2c,0x01,0xb4,0xc4,0x0d,0xa4,0xb3,0x8a,0xf3,0x4a,0x22,0x78,0xa4,0x93,0xdf,0xa9,
- 0xbb,0xf0,0xaa,0x6a,0xcd,0xbf,0x42,0x93,0x4c,0x42,0x9e,0x21,0xdf,0x66,0x4c,0x80,
- 0xb2,0xcf,0xaa,0xc5,0xd2,0x22,0x8e,0x47,0x3a,0xd5,0x3b,0x99,0x96,0xa9,0xd7,0xaa,
- 0x6a,0x34,0xff,0x03,0xf0,0x0d,0x98,0x64,0x4e,0x98,0x83,0x02,0x6a,0xfc,0x3b,0x11,
- 0x67,0xe4,0x29,0xb7,0x36,0x4e,0xa2,0x17,0x21,0x4e,0x65,0xf2,0x8f,0xf0,0xfa,0xab,
- 0xc2,0xe2,0x25,0x4e,0x4a,0x75,0x2a,0x65,0xfd,0xbe,0x6f,0xc8,0xda,0x5d,0xcf,0x6a,
- 0x85,0x92,0x4a,0x09,0xc7,0x78,0xfd,0x01,0xf5,0x1b,0x2c,0xeb,0xfe,0x51,0xc1,0x8a,
- 0xd9,0xd1,0x8a,0x40,0xe5,0x94,0x47,0x01,0xe6,0xa7,0x27,0xb5,0x36,0xe9,0x65,0xbd,
- 0x4a,0x13,0x58,0x05,0x7d,0xb2,0xde,0x17,0xa4,0xf5,0xa0,0x46,0xee,0xb9,0x88,0x8a,
- 0x3b,0x79,0xfe,0xac,0xae,0xc7,0x94,0xa2,0x26,0xe0,0xdc,0x5a,0x3f,0xee,0xd1,0x1a,
- 0x97,0x2d,0xf0,0xea,0x33,0xf1,0xff,0xf5,0xc3,0xec,0x1c,0x40,0x70,0x29,0x1c,0x7d,
- 0xaa,0x35,0x2d,0xb3,0xf1,0xff,0x32,0xf9,0xa7,0xee,0x7f,0x09,0x86,0x18,0xa1,0xa5,
- 0xcb,0xbd,0xc5,0xf9,0xc5,0x83,0xea,0xea,0xdc,0xe3,0xb9,0x40,0xee,0x68,0xf6,0x50,
- 0x08,0x6b,0x83,0xce,0x78,0xbf,0xff,0xe2,0x7f,0x89,0x6b,0xb8,0xb7,0xc3,0xbc,0x1c,
- 0xc7,0xc8,0x0f,0xbf,0xba,0x08,0xa6,0xf4,0x2c,0x38,0x64,0x5e,0x62,0x54,0xe6,0xc7,
- 0xda,0xdb,0xdb,0xc5,0x15,0x03,0x1b,0x7f,0x1a,0x80,0xca,0x39,0x77,0xbd,0x7b,0x89,
- 0xfb,0x71,0xfd,0x8a,0xca,0x8a,0x4a,0xc5,0xa3,0xb3,0x22,0xa6,0x84,0x3b,0xd7,0x17,
- 0x2a,0x97,0x1c,0xd6,0x70,0xe1,0xc2,0x05,0xf3,0x7f,0x21,0xfc,0x2f,0xc6,0x9f,0xbb,
- 0xf0,0xf4,0x7f,0x65,0xfc,0xbc,0x0b,0x17,0x8e,0xff,0x57,0xc6,0x5f,0xfd,0x9f,0xbc,
- 0x9f,0x0f,0xd2,0xc2,0xcc,0xff,0xe2,0xfd,0x5f,0x7d,0xc4,0x39,0xf2,0xc1,0xc5,0xe3,
- 0x99,0xad,0xf4,0xfe,0x03,0xc1,0x3d,0xde,0xa5,0x0f,0xdd,0x02,0x64,0x8e,0xfc,0x25,
- 0x7d,0xf8,0x1f,0x08,0xee,0x9f,0xa3,0xf4,0xfe,0x03,0xc1,0xfd,0xcb,0xe8,0xab,0x4b,
- 0x0b,0xb3,0xff,0x03,0x7d,0xf8,0x17,0x04,0xd7,0xd3,0x5a,0x87,0x48,0xe9,0x01,0x69,
- 0x3f,0x95,0x12,0xa0,0xac,0x23,0xcc,0x12,0xe8,0x9f,0xfd,0x45,0x7d,0xf8,0x17,0x84,
- 0x2c,0x7d,0xd8,0xc9,0x50,0x1f,0x7e,0x83,0xf4,0x21,0x13,0x8a,0x71,0xd2,0x21,0xd4,
- 0x90,0x03,0x42,0x43,0xda,0xc2,0x25,0xf5,0xe1,0x7f,0x20,0x64,0xdd,0xff,0x7f,0x62,
- 0xfe,0x5d,0xf7,0x23,0x26,0x39,0xad,0x0f,0xc3,0x97,0x14,0x8c,0x71,0xfa,0xf0,0xbf,
- 0x74,0xfd,0xff,0xea,0xfc,0xff,0x27,0xde,0x6f,0xb6,0xbd,0xcb,0xf2,0x5d,0xfc,0xc5,
- 0xdf,0xa5,0xf4,0xe1,0x7f,0xea,0xe7,0xd2,0x87,0xff,0xc1,0xef,0x92,0xfa,0xf0,0xff,
- 0x23,0xbf,0xff,0x0b,0xfa,0xf0,0xff,0xd7,0xe3,0xff,0x6b,0xbf,0x30,0xe8,0x12,0x13,
- 0xff,0xdd,0xec,0xfb,0x3f,0xbb,0xd2,0x5f,0x7f,0x7f,0xfd,0xfd,0xf5,0xf7,0xd7,0xdf,
- 0x5f,0x7f,0x7f,0xfd,0xfd,0xf5,0xf7,0xd7,0xdf,0x5f,0x7f,0x7f,0xfd,0xfd,0xf5,0xf7,
- 0xff,0xe7,0x9f,0xd8,0x3b,0x30,0xb1,0x77,0x70,0x1f,0xce,0xa9,0xb9,0xe3,0xef,0x8c,
- 0x86,0xfa,0xef,0xfc,0xdd,0x27,0xf4,0x67,0x83,0xcf,0x43,0xc8,0x28,0x6f,0x81,0x12,
- 0xf3,0x93,0xb9,0xbe,0xe2,0x59,0xf2,0x23,0xee,0x9d,0xb8,0x3f,0xf2,0xc9,0x5c,0x1e,
- 0x1a,0x8e,0xd0,0xfd,0x1b,0xd0,0x60,0x7e,0x32,0xd7,0x57,0xf4,0x8d,0x5b,0xcc,0x2b,
- 0x5e,0xbe,0x2f,0xf6,0xc9,0x5c,0x1e,0xc2,0x47,0xc2,0x23,0x46,0xf9,0x32,0x33,0x6c,
- 0x7e,0x32,0xd7,0xcf,0x9f,0xfb,0xcf,0x2b,0xcc,0x49,0xff,0xf6,0xa5,0x85,0x9f,0xcc,
- 0xe5,0x71,0xfe,0xad,0xfb,0xff,0xa4,0xe6,0xdf,0x77,0xcd,0x66,0x0e,0x75,0x9f,0x4a,
- 0x7c,0x72,0xf3,0xef,0xc7,0xf5,0xb3,0x10,0x3e,0xa9,0xf9,0x2f,0x98,0xda,0x33,0x0a,
- 0x57,0xfe,0xed,0x63,0x9f,0xf9,0x64,0x2e,0x8f,0xf3,0x6f,0xdd,0xff,0x27,0xb6,0xfe,
- 0x2b,0x27,0x3e,0x6a,0x78,0xbf,0xb1,0x51,0xfd,0x5f,0x0f,0xfd,0xdf,0xfa,0x85,0x8f,
- 0x34,0xe0,0xfa,0xf9,0xde,0x27,0xb7,0xfe,0x35,0xa9,0x1a,0xa6,0xe4,0x4d,0xfb,0xe4,
- 0xd6,0xbf,0x75,0xff,0x9f,0xd4,0xfc,0xe7,0x97,0xb5,0xdc,0x08,0x55,0x27,0xa7,0x7e,
- 0x52,0xeb,0x27,0x7c,0xc1,0x24,0xfd,0x19,0x1e,0x35,0x3f,0x99,0xeb,0x2b,0xea,0xdd,
- 0xdf,0x37,0xab,0x77,0x6f,0xfc,0xc4,0xf4,0x7f,0xfa,0xfe,0xff,0x4f,0x5d,0x77,0x7f,
- 0xe9,0xa7,0x94,0x6f,0xfc,0x57,0xb3,0xfc,0x53,0x1b,0x3e,0x31,0xfd,0x73,0x61,0x94,
- 0xf4,0xe7,0xe8,0x27,0x35,0xff,0xfe,0xfa,0xdf,0x7f,0x60,0x5e,0xfb,0xea,0x17,0x8e,
- 0x7c,0x32,0x97,0xc7,0xf9,0xb7,0xee,0xff,0x13,0x9b,0xff,0xfa,0xb5,0x3f,0xe5,0xb3,
- 0x3f,0xb5,0x33,0xef,0x93,0xb9,0x3c,0xce,0xff,0x11,0xd2,0x9f,0x9f,0xd8,0xfa,0xcf,
- 0x9d,0xfc,0xaf,0x5f,0xe5,0x53,0x7f,0xf9,0x5a,0xcb,0xff,0x7a,0xe8,0xff,0xd6,0xaf,
- 0x21,0x7d,0xff,0x9f,0xd8,0xfc,0x4f,0xf9,0xdb,0xc7,0x41,0x9f,0xf8,0x93,0x4f,0x4e,
- 0xff,0x5c,0x20,0xfd,0xf9,0xc9,0xad,0xff,0x2b,0x72,0xca,0x8c,0xfa,0x9d,0xf9,0x2f,
- 0x7c,0x32,0x97,0xa7,0xa8,0x81,0xb8,0xff,0xff,0xab,0xf3,0x1f,0x06,0x0a,0x6d,0xde,
- 0x25,0x85,0x41,0x70,0x9d,0xe4,0x30,0x18,0xff,0xe5,0x78,0x42,0xfa,0xdf,0xe6,0x84,
- 0x21,0x21,0x65,0xae,0x79,0xec,0x8b,0xe3,0xc7,0xfd,0xbf,0xcd,0x20,0xf7,0xae,0x58,
- 0x11,0x01,0x00,
diff --git a/board/esd/apc405/logo_640_480_24bpp.c b/board/esd/apc405/logo_640_480_24bpp.c
deleted file mode 100644
index c52a430dd9..0000000000
--- a/board/esd/apc405/logo_640_480_24bpp.c
+++ /dev/null
@@ -1,235 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x85,0xd1,0x0f,0x40,0x00,0x03,0x61,0x62,0x67,0x5f,0x6c,0x6f,
- 0x67,0x6f,0x5f,0x36,0x34,0x30,0x5f,0x34,0x38,0x30,0x2e,0x62,0x6d,0x70,0x00,0xed,
- 0xd9,0xcb,0x91,0x25,0x3b,0x15,0x05,0xd0,0x02,0x03,0x08,0x86,0x98,0x80,0x05,0x18,
- 0xc0,0x1c,0x9f,0x30,0x05,0x53,0x18,0x60,0x08,0x9e,0x14,0x8f,0xe6,0x17,0x74,0xd5,
- 0xad,0xca,0x94,0xce,0x2f,0x33,0xd7,0x8a,0x7c,0x13,0x78,0x71,0xb4,0x25,0xdd,0xd6,
- 0x8e,0x86,0x3f,0xfe,0xe9,0x0f,0xbf,0xfd,0xcd,0xdb,0x3f,0xfd,0xe1,0x97,0x7f,0x7e,
- 0xff,0xcb,0x3f,0x7f,0xfe,0xf5,0xdb,0xdb,0xdf,0x7f,0xf5,0xf6,0xf6,0xab,0xb7,0xdf,
- 0xfd,0xf8,0xcf,0xdf,0x7e,0xf9,0xef,0xff,0xf6,0xcb,0xbf,0xf2,0xb7,0x7f,0xfd,0x6b,
- 0x3f,0xfc,0xf9,0x2f,0x7f,0xf9,0x2b,0x00,0x50,0xeb,0x0d,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x62,0xbc,0xbf,0xf8,0x00,0x80,0x35,0xaf,0xba,0x35,0xf0,
- 0x03,0x80,0x67,0x2a,0x28,0x59,0xed,0x0c,0x00,0x6f,0xdd,0xad,0xaa,0x94,0x01,0x78,
- 0x82,0xf6,0xc6,0xd4,0xc8,0x00,0x3c,0xca,0x25,0x4a,0x70,0x48,0x0c,0x00,0xd8,0x34,
- 0xad,0x61,0x5b,0x76,0x04,0x00,0x35,0xee,0x57,0xbb,0x9f,0xba,0x7a,0x7e,0x00,0x6e,
- 0xe3,0xf6,0x9d,0xfb,0xb5,0x5b,0x6e,0x0a,0x80,0xc9,0x1e,0xde,0xbc,0x1f,0x3d,0x64,
- 0x9b,0x00,0xb4,0x50,0xb8,0x07,0x3d,0x7c,0xfb,0x00,0x84,0xf0,0x57,0xdd,0x05,0x4e,
- 0x03,0x80,0x1d,0x9a,0x77,0x93,0x93,0x01,0xe0,0x2c,0xe5,0x1b,0xcb,0x11,0x01,0xf0,
- 0x35,0xb5,0x9b,0xca,0xa1,0x01,0xf0,0x13,0x7f,0xe7,0x2d,0xe6,0x00,0x01,0xd0,0xbc,
- 0x5d,0x1c,0x26,0xc0,0x63,0x29,0xdf,0x5e,0x4e,0x15,0xe0,0x81,0x34,0xef,0x10,0x4e,
- 0x18,0xe0,0x39,0x34,0xef,0x34,0x4e,0x1b,0xe0,0xde,0xfc,0x6f,0xce,0xf3,0x39,0x76,
- 0x80,0xfb,0x51,0xbe,0x57,0xe1,0xfc,0x01,0x6e,0x43,0xf9,0x5e,0x8b,0x5b,0x00,0xb8,
- 0x01,0xcd,0x0b,0x00,0xc5,0xfc,0xcd,0x17,0x00,0x8a,0x29,0x5f,0x00,0x28,0xa6,0x7c,
- 0x81,0x73,0xde,0x3f,0xe8,0x4e,0x04,0x97,0xa3,0x79,0x81,0xa3,0x3e,0xd6,0xee,0xa7,
- 0xba,0x63,0xc2,0x25,0x3c,0xa7,0x7f,0x43,0xfe,0x9a,0x7f,0xbf,0x63,0xb9,0xb3,0x83,
- 0x65,0xa1,0x3b,0x0e,0xda,0x39,0x4c,0xb7,0x00,0x1f,0xa4,0x16,0xcd,0xb4,0xca,0x1b,
- 0x15,0xe6,0xa2,0x09,0xaf,0x64,0xa1,0x2f,0x8e,0xbf,0xfc,0x6b,0xc3,0xdf,0x37,0x2a,
- 0x69,0x73,0xb9,0x96,0xc3,0xfc,0x6f,0x80,0xae,0xd8,0x30,0x55,0xf6,0x1b,0x5e,0xd9,
- 0x26,0x47,0xfe,0xc0,0x8e,0x0a,0x73,0xd1,0x84,0x57,0xb2,0xd3,0x17,0x49,0xc3,0xdf,
- 0xcb,0xfb,0xf7,0xe3,0xba,0x35,0xc7,0xf8,0xd3,0xd2,0x65,0x69,0xe1,0x0a,0x6e,0xd6,
- 0x77,0xd3,0xf2,0x74,0x5d,0x4a,0x76,0xc2,0x2b,0x59,0x2e,0x8b,0xbc,0xe1,0xef,0x7d,
- 0xfd,0xfb,0xbe,0x54,0x6a,0xf5,0x21,0x97,0xa3,0xc2,0x75,0xdc,0xac,0xef,0x0e,0xfe,
- 0x81,0x1d,0x15,0xa6,0xfd,0xd0,0x7e,0x5a,0xf7,0x6e,0x52,0x5f,0xfe,0xfd,0x66,0x59,
- 0x9e,0xb0,0x29,0xfb,0x00,0x8b,0x43,0xc2,0x05,0x15,0x54,0x4c,0x65,0x95,0x0c,0x8c,
- 0xd4,0x75,0x2f,0x6b,0x09,0x77,0x32,0xcf,0x95,0xf7,0xf2,0xef,0x37,0xcb,0xf2,0x84,
- 0x4d,0xd9,0x1b,0xac,0x0c,0x09,0x17,0x54,0x56,0x2e,0x95,0x6d,0x72,0x24,0xd5,0xa8,
- 0x30,0xa3,0x12,0x86,0x84,0x1f,0x27,0xef,0xf1,0xdf,0x9f,0xbc,0x36,0x21,0x4a,0xd2,
- 0x06,0xcb,0xe2,0xc1,0x65,0x95,0x35,0x4b,0x65,0x9b,0x1c,0x09,0x36,0x2a,0x4c,0x7b,
- 0xc8,0x6f,0x17,0xbd,0xbc,0xbc,0xc7,0x7f,0x7f,0xf2,0xda,0x84,0x40,0xe1,0xbb,0xab,
- 0xc9,0x06,0x57,0x56,0xd9,0x2c,0x95,0x7d,0x77,0x24,0xd8,0xa8,0x30,0xd3,0x42,0xc6,
- 0xee,0x62,0x84,0xbc,0xc7,0x7f,0x7f,0xf2,0xda,0x84,0x40,0xe1,0xbb,0xab,0xc9,0x06,
- 0x57,0x56,0x59,0x2b,0x95,0x55,0x72,0x30,0xde,0x9c,0x24,0xed,0x09,0xdf,0x8f,0xad,
- 0x7b,0x61,0x79,0x8f,0xff,0xfe,0xe4,0xb5,0x09,0xb1,0x62,0x77,0x57,0x10,0x0c,0x2e,
- 0xae,0xb2,0x56,0x2a,0xab,0xe4,0x60,0xbc,0x39,0x49,0xda,0x13,0xbe,0x1f,0x5e,0xf7,
- 0xc2,0x92,0x1e,0xff,0xfd,0x5a,0x59,0x9b,0x10,0x2b,0x70,0x6b,0xb1,0x02,0x2e,0x1e,
- 0x26,0x2a,0xee,0x94,0xca,0x36,0x39,0x92,0x70,0x54,0x98,0x69,0x09,0xc3,0xf7,0xd2,
- 0x2f,0xe9,0xf1,0xdf,0x1f,0xbb,0x30,0x21,0x5c,0xc8,0xbe,0x32,0x04,0x5c,0x3c,0x8c,
- 0x53,0x5f,0x28,0x95,0x6d,0x72,0x24,0xe1,0xa8,0x30,0xed,0x21,0x4f,0xad,0x7b,0x49,
- 0x19,0x8f,0x7f,0x48,0xa7,0xac,0x0d,0xc9,0x30,0x30,0x55,0xe4,0x2f,0x00,0xa6,0xa8,
- 0x2f,0x94,0xca,0xbe,0x3b,0x92,0x70,0x54,0x98,0x69,0x21,0xb3,0xf7,0xd5,0xa0,0xbb,
- 0x49,0xfe,0xe7,0x12,0xc1,0xba,0xb3,0xfc,0x5b,0xe1,0x0f,0x04,0xca,0xd4,0x17,0x4a,
- 0x65,0x95,0x1c,0x0c,0x39,0x27,0x49,0x7b,0xc2,0x8f,0x21,0xb3,0xb7,0x56,0xad,0xbb,
- 0x49,0xfe,0x27,0x24,0x58,0xc6,0x06,0xa3,0xa6,0x05,0x66,0x0b,0xfc,0x01,0xc0,0x18,
- 0xf5,0x85,0x52,0x59,0x25,0x07,0x43,0xce,0x49,0xd2,0x9e,0xf0,0x55,0xc8,0xd4,0xdd,
- 0x95,0xda,0x29,0x94,0x58,0x21,0xc1,0x32,0xf6,0x18,0x32,0x2a,0xf6,0xfc,0xf7,0xef,
- 0x1d,0xe6,0xb9,0x7d,0x9b,0x1c,0xc9,0x39,0x27,0x49,0x7b,0xc2,0x2f,0x42,0xa6,0x6e,
- 0xb0,0xd4,0x72,0xa7,0x04,0x8a,0x4a,0x95,0xb1,0xc7,0x90,0x39,0xb1,0xc1,0x76,0xae,
- 0x1b,0xa6,0xba,0x7d,0x9b,0x1c,0xc9,0x39,0x2a,0xcc,0xd8,0x84,0xd9,0xbf,0x8a,0x3a,
- 0xcb,0x9d,0x12,0x28,0x2a,0x55,0xc6,0x1e,0x43,0xe6,0xc4,0x06,0xdb,0xb9,0x6e,0x98,
- 0xaa,0xbe,0x4a,0x36,0x17,0xcd,0x88,0x3a,0x27,0xc9,0x84,0x84,0x5f,0x87,0x4c,0xfd,
- 0x61,0x14,0x59,0xee,0x94,0x40,0x51,0xa9,0x32,0xb6,0x19,0x3e,0x24,0x75,0x9b,0x70,
- 0x59,0xc5,0x3d,0xb2,0xb9,0x68,0x5e,0xda,0x39,0x49,0x26,0x9c,0xd8,0x7e,0x98,0xd1,
- 0x96,0x3b,0x25,0x50,0x54,0xaa,0x8c,0x6d,0x86,0x0f,0x49,0xdd,0x26,0x5c,0x56,0x71,
- 0x8f,0x6c,0x2e,0x9a,0x97,0x76,0x4e,0x92,0xf6,0x84,0x51,0xc7,0x35,0xd7,0x72,0xa7,
- 0x04,0x8a,0x4a,0x95,0xb1,0xcd,0xf0,0x21,0xa9,0xdb,0x84,0xcb,0xaa,0xef,0x91,0xcd,
- 0x75,0x1b,0x0b,0xa5,0x2c,0xcc,0xfc,0x84,0x35,0x3f,0x92,0x44,0xcb,0xb5,0x12,0x25,
- 0x2a,0x52,0xc6,0x36,0x43,0x0e,0x2a,0x2f,0x12,0xdc,0x45,0x71,0x89,0xec,0xaf,0xdb,
- 0x5b,0x28,0x35,0x61,0xae,0x12,0xb2,0xe0,0x77,0x92,0x65,0xb9,0x56,0x42,0x04,0x46,
- 0xca,0xd8,0x66,0xc8,0x41,0xe5,0x45,0x82,0xbb,0xa8,0x2f,0x91,0xcd,0x75,0x93,0x02,
- 0xcf,0x49,0x72,0xad,0x90,0x05,0x3f,0x95,0x14,0xcb,0xb5,0x12,0x22,0x30,0x52,0xc6,
- 0x36,0x43,0x0e,0x2a,0x2f,0x12,0xdc,0x45,0x7d,0x89,0x6c,0xae,0x9b,0x17,0x78,0x4e,
- 0x92,0xf6,0x84,0xa7,0x42,0x16,0xfc,0x5a,0xe2,0x2d,0xd7,0x4a,0x88,0xc0,0x48,0x19,
- 0xdb,0x0c,0x39,0xa8,0xbc,0x48,0x70,0x17,0xf5,0x25,0xb2,0xb9,0x6e,0x5e,0xe0,0x51,
- 0x61,0x2e,0x94,0xb0,0xe6,0x07,0x13,0x6c,0xb9,0x56,0x42,0x04,0x46,0xca,0xd8,0x66,
- 0xc8,0x41,0xe5,0x45,0x82,0x1b,0xa9,0x6c,0x90,0xfd,0x75,0xf3,0x0a,0x65,0x54,0x98,
- 0x6b,0x25,0x2c,0xfb,0xcd,0x84,0x59,0xae,0x95,0x10,0x81,0x91,0x32,0xf6,0x18,0x3e,
- 0x24,0x75,0x9b,0x70,0x65,0x95,0x0d,0xb2,0xbf,0x6e,0x5e,0xa1,0x8c,0x0a,0x73,0xb9,
- 0x84,0x65,0x3f,0x9b,0x30,0xcb,0xcd,0xb2,0x29,0x36,0x4f,0xc6,0x06,0xc3,0x87,0xa4,
- 0x6e,0x13,0xae,0xac,0xb2,0x41,0xf6,0xd7,0xcd,0xeb,0x94,0x39,0x49,0xae,0x98,0xb0,
- 0xf2,0x97,0x13,0x23,0xa4,0x02,0x02,0xab,0x64,0x61,0xd4,0x17,0xd3,0x96,0x07,0xbe,
- 0x27,0xf4,0xef,0xf2,0x90,0x4f,0xa7,0xc1,0x8d,0x54,0x36,0xc8,0xfe,0xba,0xa9,0x9d,
- 0x32,0x2a,0xcc,0x8d,0xe3,0x8d,0x10,0x52,0x01,0x81,0x55,0xb2,0x30,0x2a,0x7c,0xda,
- 0xc7,0x99,0xbd,0x43,0x3e,0x9d,0x06,0x37,0x52,0xf6,0x3e,0x87,0xac,0x9b,0xda,0x29,
- 0xa3,0xc2,0x5c,0x2e,0xde,0xa9,0x84,0xfd,0x42,0x2a,0x20,0xb0,0x4a,0x16,0x46,0x85,
- 0x4f,0xfb,0x38,0xb3,0x77,0xc8,0xa7,0xd3,0xe0,0x46,0x2a,0xdf,0xe7,0xfd,0x75,0x53,
- 0x3b,0x65,0x54,0x98,0xcb,0xc5,0x3b,0x9b,0xb0,0x59,0x48,0x05,0x04,0x56,0xc9,0xc2,
- 0xa8,0xc0,0x54,0xaf,0x06,0x86,0xcc,0xd9,0xc9,0xf3,0x69,0x2a,0xb8,0x8b,0xca,0xf7,
- 0x39,0x64,0xe9,0xbc,0x4e,0x19,0x15,0xa6,0xf1,0xa0,0x76,0xee,0xb7,0xfe,0x57,0xb4,
- 0x91,0x75,0xbb,0x02,0x02,0x7b,0xe4,0xec,0xa8,0x57,0x03,0xd7,0xe6,0x84,0x4f,0x8b,
- 0x8a,0xf4,0x2a,0x18,0xdc,0x45,0xe5,0xfb,0xbc,0xb9,0x6e,0x6a,0xad,0xcc,0x49,0x32,
- 0xfc,0xa0,0xa2,0xd2,0x36,0xdb,0xaf,0x80,0xc0,0x1e,0x39,0x3b,0x2a,0x43,0x60,0xaa,
- 0xd8,0xad,0xed,0xdc,0x32,0xcc,0x56,0xff,0x44,0xef,0xac,0x9b,0x5a,0x2b,0xf5,0x91,
- 0x66,0x7e,0x65,0xd7,0xda,0x69,0xbf,0x02,0x02,0x7b,0xe4,0xec,0xa8,0x0c,0x81,0xa9,
- 0x62,0xb7,0xb6,0x73,0xcb,0x30,0x5b,0xfd,0x13,0xbd,0xb3,0x6e,0x6a,0xad,0xb4,0x17,
- 0xdf,0x90,0xaf,0xf2,0x66,0xdb,0xec,0x57,0x40,0x60,0x8f,0x9c,0x1d,0x15,0x2e,0x36,
- 0x55,0xec,0xd6,0x96,0xaf,0x18,0xae,0xa0,0xfe,0x89,0x5e,0x5e,0x37,0xb5,0x56,0xda,
- 0x8b,0x6f,0xc8,0x57,0x7c,0xb3,0x3d,0x36,0x5b,0x20,0xb6,0x47,0x16,0xa6,0x05,0x0a,
- 0x4f,0x15,0xbb,0xb5,0x9d,0x5b,0x86,0xf1,0x5a,0x9e,0xe8,0xb5,0x75,0x53,0x6b,0xa5,
- 0xbd,0xf8,0x26,0x7c,0xf5,0x37,0xdb,0x63,0xb3,0x05,0x62,0x4b,0xe4,0xec,0xb4,0x40,
- 0x19,0xa9,0x62,0xb7,0xb6,0x76,0xbf,0x70,0x11,0x5d,0x0f,0xf5,0xb4,0x72,0x69,0xef,
- 0xbe,0x09,0x5f,0x94,0x96,0x45,0x4f,0x46,0xdc,0x68,0x81,0xd8,0x12,0x39,0x3b,0x2d,
- 0x4a,0x52,0xaa,0xd8,0xad,0x2d,0xdc,0x2c,0x5c,0x4a,0xcb,0x43,0x3d,0xb0,0x5c,0xda,
- 0xeb,0xaf,0xf7,0x0b,0xd4,0xb8,0xf4,0xe1,0x88,0x1b,0x2d,0x10,0x5b,0x22,0x67,0xa7,
- 0xed,0x0b,0x3f,0x9f,0x57,0xc3,0x6b,0xa2,0xc2,0xc5,0xd5,0x3f,0x98,0x03,0xfb,0xa5,
- 0xbd,0x01,0x1b,0xbf,0x58,0xed,0x01,0x0e,0x44,0xdc,0x68,0x81,0xd8,0x12,0x39,0x3b,
- 0x6d,0x53,0xc6,0xf9,0xbc,0x9a,0x5f,0x96,0x16,0xae,0xac,0xe5,0xb5,0x9c,0x56,0x31,
- 0xed,0x25,0xd8,0xf8,0x85,0x6b,0x0f,0xf0,0x5d,0xbe,0x8d,0x16,0x88,0x2d,0x91,0xb3,
- 0xd3,0xf6,0x85,0x9f,0xcf,0xab,0xe1,0x35,0x51,0xe1,0xe2,0x5a,0x5e,0xcb,0x69,0x15,
- 0xd3,0x5e,0x82,0x2d,0x5f,0x92,0x21,0x31,0x5e,0xe7,0xdb,0x68,0x81,0xd8,0x12,0x39,
- 0x3b,0x2d,0x4a,0x52,0xaa,0xd8,0xad,0x2d,0xdc,0x2c,0x5c,0x4d,0xcb,0xbb,0x3d,0xad,
- 0x6b,0xda,0xab,0x70,0xda,0x81,0x14,0xdf,0x6f,0xa9,0x9d,0x16,0x88,0x6d,0x90,0x53,
- 0xd3,0x62,0x65,0xa4,0xda,0xba,0x15,0x78,0xa8,0xfa,0xd7,0x7b,0x60,0xdd,0xb4,0x17,
- 0xe2,0x9c,0xa3,0xd8,0x37,0x30,0xd2,0xff,0xe7,0x5b,0xea,0x94,0xf0,0x3e,0x3a,0x3b,
- 0x30,0x56,0x78,0xaa,0x80,0x8b,0x81,0x27,0x2a,0x7e,0x30,0x07,0x96,0x4e,0x7b,0x2d,
- 0x4e,0x38,0x84,0x28,0x93,0xb3,0xfd,0xc8,0xb7,0x54,0x2b,0xe1,0x7d,0x74,0x76,0x60,
- 0xac,0xf0,0x54,0x31,0x77,0x03,0x4f,0x54,0xfc,0x5a,0x4e,0xab,0x9e,0xf6,0x72,0x6c,
- 0x3f,0x81,0x58,0xa3,0x13,0xae,0xd5,0x4a,0x78,0x1f,0x9d,0x1d,0xf8,0xe9,0xd8,0xb5,
- 0x21,0x5f,0x24,0x8c,0x9d,0x06,0x1c,0x50,0xfc,0x54,0x4e,0x2b,0xa0,0xf6,0x7e,0x1c,
- 0x72,0x0e,0x51,0xc6,0x06,0xfb,0x11,0x6e,0xa9,0x56,0xc2,0xfb,0xe8,0xec,0xc0,0x57,
- 0x63,0xd7,0xe6,0xbc,0x4a,0x18,0x3b,0x0d,0x38,0xa6,0xf2,0xb5,0x9c,0xd6,0x3b,0xed,
- 0xb5,0x38,0xed,0x40,0xea,0xef,0xb7,0xce,0x5a,0xad,0x84,0x97,0xd1,0xa9,0x81,0xdf,
- 0x4e,0x8e,0x9a,0xb6,0x36,0xe7,0x8b,0x60,0xc0,0x01,0x95,0x0f,0xe6,0xc0,0xba,0x69,
- 0x2f,0xc4,0x81,0x67,0x52,0x7c,0xbf,0x45,0xd6,0x6a,0x25,0xbc,0x8c,0x4e,0x0d,0xfc,
- 0x76,0x72,0xd4,0xb4,0xb5,0x39,0x05,0xc1,0xe0,0xee,0xca,0x5e,0xcb,0x81,0x5d,0xd3,
- 0xde,0x86,0x5d,0x5f,0x92,0x51,0x61,0x3e,0x84,0x3b,0x5f,0x04,0xe1,0xf5,0x71,0xb2,
- 0x91,0xbe,0x99,0x1c,0x35,0x6d,0x6d,0x4e,0x41,0x30,0x78,0x80,0xb2,0xd7,0x72,0x5a,
- 0xcb,0xb4,0xf7,0x60,0xe3,0x97,0x61,0x4e,0x92,0xcf,0xc2,0x9d,0x2f,0x82,0xf0,0xfa,
- 0x38,0xd9,0x48,0xdf,0x4c,0x8e,0x9a,0xb6,0x36,0xa7,0x20,0x18,0x3c,0x43,0xcd,0x83,
- 0x39,0xad,0x65,0xda,0x4b,0xb0,0xfd,0x8b,0x35,0x21,0xc3,0xeb,0x70,0xe7,0x8b,0x20,
- 0xbc,0x3e,0x4e,0x36,0xd2,0x37,0x93,0xa3,0xa6,0xad,0xcd,0x29,0x08,0x06,0x8f,0x51,
- 0xf0,0x60,0x4e,0xeb,0x97,0x51,0x61,0x66,0x1e,0xd1,0x29,0x13,0x32,0xbc,0x0e,0x77,
- 0xb2,0x0b,0x32,0xba,0xe3,0xd4,0xcc,0x6f,0x87,0x47,0x4d,0x5b,0x9b,0x53,0x10,0x0c,
- 0x1e,0xa3,0xe0,0xb5,0x1c,0x58,0x2e,0xa3,0xc2,0x74,0x1d,0x54,0x94,0xf6,0x00,0x5f,
- 0x86,0x3b,0xd9,0x05,0x19,0xdd,0x71,0x6a,0xe6,0xb7,0xc3,0xa3,0xa6,0xad,0xcd,0x29,
- 0x08,0x06,0x4f,0x92,0xfd,0x60,0x16,0xd7,0xca,0x91,0x9c,0xa3,0xc2,0x5c,0x28,0x5b,
- 0x6c,0xe6,0x0a,0x67,0xbb,0x20,0xa3,0x3b,0x4e,0xcd,0xfc,0x76,0x78,0xd4,0xb4,0xb5,
- 0x39,0x05,0xc1,0xe0,0x49,0x0a,0xde,0xcc,0xca,0x4e,0x39,0x12,0x72,0x54,0x98,0xc6,
- 0x78,0x51,0xda,0x03,0x7c,0x19,0xee,0x4c,0x17,0x64,0x74,0xc7,0xc9,0x46,0xfa,0x66,
- 0x78,0xd4,0xb4,0xb5,0x39,0x05,0xc1,0xe0,0x61,0x6e,0x53,0x28,0x07,0x43,0xce,0x49,
- 0xd2,0x9e,0x30,0x44,0xef,0xea,0xdf,0x85,0x3b,0xd3,0x05,0x19,0xdd,0x71,0xb2,0x91,
- 0xbe,0x19,0x1e,0x35,0x6d,0x6d,0x4e,0x41,0x30,0x78,0x9e,0xd4,0x37,0xb3,0xb2,0xef,
- 0x8e,0x84,0x1c,0x15,0xa6,0x3d,0xe1,0xbe,0xc6,0xa5,0x0f,0x84,0x3b,0xd3,0x05,0x19,
- 0xdd,0x71,0xb2,0x91,0xbe,0x19,0x1e,0x35,0x6d,0x6d,0x4e,0x41,0x30,0x78,0xa4,0xbc,
- 0x67,0xb3,0xb8,0xef,0x8e,0x24,0x1c,0x15,0xe6,0x72,0xf1,0xa2,0xd2,0x56,0x38,0xd5,
- 0x05,0x19,0xc5,0x71,0xbe,0x94,0xbe,0x9a,0x1f,0x35,0x6d,0x6d,0x4e,0x41,0x30,0x78,
- 0xa4,0xbc,0x97,0xb3,0xb2,0x4d,0x0e,0xc6,0x1b,0x15,0xa6,0x37,0xe1,0xbe,0xc6,0xa5,
- 0x0f,0x84,0x3b,0xd3,0x05,0x19,0xc5,0x71,0xbe,0x94,0x5e,0xce,0x5f,0x1b,0xf5,0xe9,
- 0xb4,0xc0,0x51,0xe1,0xd3,0xe0,0x91,0xf2,0x1e,0xcf,0xca,0xbe,0x3b,0x12,0x6f,0x4e,
- 0x92,0x09,0x21,0x37,0x75,0xad,0x7b,0x2c,0x5c,0x8e,0xec,0x00,0xb1,0x5b,0x08,0x3f,
- 0x99,0x8c,0x39,0xf0,0x78,0x49,0x8f,0x67,0x65,0xdf,0x1d,0x89,0x37,0x27,0xc9,0x84,
- 0x90,0x9b,0xba,0xd6,0x3d,0x9c,0x2f,0x41,0xef,0xea,0x67,0x5d,0x2b,0x18,0x3c,0x5b,
- 0xf8,0xfb,0x59,0xd9,0x77,0x47,0xb2,0x8d,0x0a,0x33,0x21,0xe4,0x8e,0xae,0x75,0x0f,
- 0xe7,0x6b,0x2d,0x8e,0x8c,0xd5,0xcf,0x1a,0x9b,0x2d,0xe2,0x7a,0xe1,0x7e,0x62,0xdf,
- 0xcf,0xe2,0xbe,0x3b,0x12,0x6c,0x54,0x98,0x8b,0x26,0xdc,0xcf,0x59,0xa1,0xb7,0x35,
- 0xc2,0x57,0x5f,0x30,0x36,0xdb,0xf6,0xdd,0xc2,0x5d,0xc5,0x3e,0xa1,0x95,0x6d,0x72,
- 0x24,0xd5,0xa8,0x30,0x17,0x4d,0xb8,0x9f,0xb3,0x42,0x6f,0x6b,0x84,0xaf,0x1e,0x9b,
- 0x76,0x6c,0x30,0x78,0xbc,0xc0,0x57,0xb4,0xb2,0x4d,0x8e,0xa4,0x9a,0x93,0xe4,0xba,
- 0x09,0xf7,0x73,0x56,0xe8,0x2d,0x8e,0xf0,0xd5,0x63,0xa3,0x4e,0xce,0x06,0x8f,0x17,
- 0xf5,0x90,0x56,0xb6,0xc9,0x91,0x48,0x73,0x92,0xb4,0xc7,0xdb,0x7c,0x09,0xbb,0xd6,
- 0x3d,0x9c,0xaf,0xb5,0x38,0xc2,0x57,0x0f,0x8f,0x3a,0x36,0x18,0x70,0xc1,0xbe,0x9b,
- 0x96,0x27,0xef,0xcc,0x1b,0x13,0x86,0x44,0x2d,0xd2,0xd8,0x1d,0xb1,0x4b,0x27,0x45,
- 0x1d,0x1b,0x0c,0x88,0x78,0x4e,0x8b,0x0b,0xe5,0xc8,0x1f,0xf0,0x39,0x49,0xe6,0x9f,
- 0x55,0x52,0xda,0x22,0x8d,0xc5,0x11,0xb8,0xf4,0x6d,0x72,0x9e,0xcd,0x06,0x6c,0x3f,
- 0xa7,0xd3,0x6a,0x65,0x4e,0x92,0xe1,0x07,0x95,0x17,0xb5,0x48,0x63,0x77,0x04,0x2e,
- 0x9d,0x9a,0xb3,0x2c,0xea,0x42,0x30,0xe0,0x87,0x9d,0x17,0x75,0x5a,0xad,0xcc,0x49,
- 0xd2,0x78,0x44,0x9b,0x3d,0xd8,0xb5,0xee,0xc9,0x94,0x7d,0xf5,0x11,0xb8,0x74,0x52,
- 0xc2,0xca,0xb4,0x3b,0xd9,0x80,0x8d,0x77,0x75,0x5a,0xad,0x74,0x95,0xdd,0xc0,0x2f,
- 0xf5,0xc7,0x90,0xb1,0xee,0xc9,0x94,0x7d,0x0d,0x12,0xb8,0x74,0x52,0xc2,0x9a,0xc0,
- 0x9b,0xa9,0x80,0xff,0x58,0x7b,0x5a,0xa7,0xd5,0x4a,0x7b,0xeb,0xcd,0xf9,0x52,0x7f,
- 0x09,0x19,0xeb,0x9e,0x4c,0xd9,0xd7,0x23,0x81,0x4b,0x87,0x67,0x2b,0x8b,0x1d,0x18,
- 0x0c,0x58,0x7a,0x5d,0xa7,0xd5,0x4a,0x7b,0xeb,0xcd,0xf9,0x52,0x7f,0x06,0x19,0xeb,
- 0x9e,0x4c,0xd9,0xd7,0x23,0x51,0x4b,0x87,0x07,0xab,0x49,0x9e,0x11,0x0c,0x58,0x7a,
- 0x5d,0xa7,0x35,0x4b,0x7b,0xf1,0x4d,0xf8,0x52,0x7f,0x03,0x49,0xeb,0x52,0x4a,0xe7,
- 0xc2,0x3c,0x67,0x1f,0xd8,0x69,0xe5,0xd2,0xde,0x7d,0x13,0xbe,0xa4,0xdb,0xcf,0x5b,
- 0x97,0x1e,0x9a,0x17,0xe6,0x39,0xfe,0xc0,0x4e,0x2b,0x97,0xf6,0xee,0x6b,0xff,0x32,
- 0xee,0xbd,0x60,0x69,0x00,0xfe,0xeb,0xc8,0x03,0x3b,0xad,0x5f,0xda,0xeb,0xaf,0xfd,
- 0x0b,0xbc,0xee,0xb2,0xa5,0x01,0xf8,0xc9,0x91,0x37,0x76,0x5a,0xc5,0xb4,0x37,0x60,
- 0xe3,0x17,0x7b,0xd7,0x95,0xab,0x03,0xf0,0xd1,0xd7,0x6f,0xec,0xb4,0x96,0x69,0x2f,
- 0xc1,0xae,0x2f,0xf0,0x96,0x5b,0x02,0x00,0xf0,0xd1,0x17,0x6f,0xec,0xb4,0xa2,0x69,
- 0xef,0xc1,0x96,0x2f,0xea,0x7e,0xbb,0x02,0x00,0xf0,0xca,0xab,0x67,0x76,0x5a,0xd7,
- 0xb4,0x57,0xe1,0xb4,0x03,0x39,0x78,0xb3,0x8d,0x01,0x00,0x58,0x30,0xb0,0x6e,0xda,
- 0x0b,0x71,0xd4,0x69,0x14,0x1c,0x17,0x00,0x2d,0xa6,0x95,0x4e,0x7b,0x27,0x4e,0x38,
- 0x84,0xca,0xbb,0x03,0xa0,0xc5,0xb4,0xea,0x69,0x6f,0xc6,0xc6,0xbd,0xb7,0xdc,0x1d,
- 0x00,0x2d,0xa6,0x75,0x50,0x7b,0x45,0xb6,0xec,0xba,0xeb,0xe2,0x00,0xe8,0x32,0xad,
- 0x89,0xda,0x8b,0xf2,0x12,0x8d,0x76,0xad,0xb4,0x00,0x7c,0x74,0xd7,0x86,0xba,0x31,
- 0x17,0x01,0x00,0xc5,0x94,0x2f,0x00,0x14,0x53,0xbe,0x00,0x50,0xcc,0xff,0x05,0x00,
- 0x00,0xc5,0x94,0x2f,0xc0,0xa3,0x78,0xcc,0x27,0x08,0x2c,0x5f,0x57,0x06,0x70,0x15,
- 0xde,0xf3,0x5e,0xca,0x17,0xe0,0xc9,0x3c,0xec,0x2d,0x94,0x2f,0x00,0xff,0xe2,0x79,
- 0xaf,0x11,0xdb,0xbc,0x6e,0x07,0xe0,0x1e,0xbc,0xf3,0xa9,0x94,0x2f,0x00,0x5f,0xf3,
- 0xe0,0x87,0x53,0xbe,0x00,0x1c,0xe4,0xf1,0x0f,0xa1,0x79,0x01,0x58,0xa0,0x0b,0x96,
- 0x85,0x37,0xaf,0x33,0x07,0x78,0x1a,0x8d,0x70,0x8a,0xda,0x05,0x20,0x8a,0x82,0x38,
- 0xc2,0xdf,0x79,0x01,0x48,0xa5,0x32,0x7e,0xa2,0x79,0x01,0x28,0xa3,0x3b,0xde,0xd2,
- 0x9a,0xf7,0x39,0x07,0x08,0xc0,0xb2,0xa7,0xb5,0x49,0x5e,0xe7,0xde,0xef,0xac,0x00,
- 0x28,0x70,0xfb,0x5a,0xd1,0xbc,0x00,0x8c,0x75,0xcb,0xc6,0x51,0xbb,0x00,0x5c,0xc5,
- 0x0d,0x3a,0xc8,0x5f,0x78,0x01,0xb8,0x81,0xc9,0xdd,0x94,0x5d,0xb5,0x3a,0x17,0x80,
- 0x76,0xed,0xcd,0x55,0xd6,0xb6,0x6a,0x17,0x80,0xb1,0xea,0xdb,0x50,0xf3,0x02,0xc0,
- 0x47,0xed,0xa5,0xa9,0x73,0x01,0x78,0xb2,0xf6,0x26,0x55,0xb5,0x00,0xd0,0xde,0xb6,
- 0x3a,0x17,0x00,0x3e,0xa5,0x5e,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0xfc,0x03,0x26,
- 0x84,0x0a,0xd6,0x36,0x10,0x0e,0x00,
diff --git a/board/esd/apc405/strataflash.c b/board/esd/apc405/strataflash.c
deleted file mode 100644
index ad7a71dc4d..0000000000
--- a/board/esd/apc405/strataflash.c
+++ /dev/null
@@ -1,789 +0,0 @@
-/*
- * (C) Copyright 2002
- * Brad Kemp, Seranoa Networks, Brad.Kemp@seranoa.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-#undef DEBUG_FLASH
-/*
- * This file implements a Common Flash Interface (CFI) driver for ppcboot.
- * The width of the port and the width of the chips are determined at initialization.
- * These widths are used to calculate the address for access CFI data structures.
- * It has been tested on an Intel Strataflash implementation.
- *
- * References
- * JEDEC Standard JESD68 - Common Flash Interface (CFI)
- * JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
- * Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
- * Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
- *
- * TODO
- * Use Primary Extended Query table (PRI) and Alternate Algorithm Query Table (ALT) to determine if protection is available
- * Add support for other command sets Use the PRI and ALT to determine command set
- * Verify erase and program timeouts.
- */
-
-#define FLASH_CMD_CFI 0x98
-#define FLASH_CMD_READ_ID 0x90
-#define FLASH_CMD_RESET 0xff
-#define FLASH_CMD_BLOCK_ERASE 0x20
-#define FLASH_CMD_ERASE_CONFIRM 0xD0
-#define FLASH_CMD_WRITE 0x40
-#define FLASH_CMD_PROTECT 0x60
-#define FLASH_CMD_PROTECT_SET 0x01
-#define FLASH_CMD_PROTECT_CLEAR 0xD0
-#define FLASH_CMD_CLEAR_STATUS 0x50
-#define FLASH_CMD_WRITE_TO_BUFFER 0xE8
-#define FLASH_CMD_WRITE_BUFFER_CONFIRM 0xD0
-
-#define FLASH_STATUS_DONE 0x80
-#define FLASH_STATUS_ESS 0x40
-#define FLASH_STATUS_ECLBS 0x20
-#define FLASH_STATUS_PSLBS 0x10
-#define FLASH_STATUS_VPENS 0x08
-#define FLASH_STATUS_PSS 0x04
-#define FLASH_STATUS_DPS 0x02
-#define FLASH_STATUS_R 0x01
-#define FLASH_STATUS_PROTECT 0x01
-
-#define FLASH_OFFSET_CFI 0x55
-#define FLASH_OFFSET_CFI_RESP 0x10
-#define FLASH_OFFSET_WTOUT 0x1F
-#define FLASH_OFFSET_WBTOUT 0x20
-#define FLASH_OFFSET_ETOUT 0x21
-#define FLASH_OFFSET_CETOUT 0x22
-#define FLASH_OFFSET_WMAX_TOUT 0x23
-#define FLASH_OFFSET_WBMAX_TOUT 0x24
-#define FLASH_OFFSET_EMAX_TOUT 0x25
-#define FLASH_OFFSET_CEMAX_TOUT 0x26
-#define FLASH_OFFSET_SIZE 0x27
-#define FLASH_OFFSET_INTERFACE 0x28
-#define FLASH_OFFSET_BUFFER_SIZE 0x2A
-#define FLASH_OFFSET_NUM_ERASE_REGIONS 0x2C
-#define FLASH_OFFSET_ERASE_REGIONS 0x2D
-#define FLASH_OFFSET_PROTECT 0x02
-#define FLASH_OFFSET_USER_PROTECTION 0x85
-#define FLASH_OFFSET_INTEL_PROTECTION 0x81
-
-#define FLASH_MAN_CFI 0x01000000
-
-typedef union {
- unsigned char c;
- unsigned short w;
- unsigned long l;
-} cfiword_t;
-
-typedef union {
- unsigned char * cp;
- unsigned short *wp;
- unsigned long *lp;
-} cfiptr_t;
-
-#define NUM_ERASE_REGIONS 4
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c);
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf);
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_detect_cfi(flash_info_t * info);
-static ulong flash_get_size (ulong base, int banknum);
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword);
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt);
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len);
-#endif
-/*-----------------------------------------------------------------------
- * create an address based on the offset and the port width
- */
-inline uchar * flash_make_addr(flash_info_t * info, int sect, int offset)
-{
- return ((uchar *)(info->start[sect] + (offset * info->portwidth)));
-}
-/*-----------------------------------------------------------------------
- * read a character at a port width address
- */
-inline uchar flash_read_uchar(flash_info_t * info, uchar offset)
-{
- uchar *cp;
- cp = flash_make_addr(info, 0, offset);
- return (cp[info->portwidth - 1]);
-}
-
-/*-----------------------------------------------------------------------
- * read a short word by swapping for ppc format.
- */
-ushort flash_read_ushort(flash_info_t * info, int sect, uchar offset)
-{
- uchar * addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ((addr[(2*info->portwidth) - 1] << 8) | addr[info->portwidth - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- * read a long word by picking the least significant byte of each maiximum
- * port size word. Swap for ppc format.
- */
-ulong flash_read_long(flash_info_t * info, int sect, uchar offset)
-{
- uchar * addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ( (addr[(2*info->portwidth) - 1] << 24 ) | (addr[(info->portwidth) -1] << 16) |
- (addr[(4*info->portwidth) - 1] << 8) | addr[(3*info->portwidth) - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size;
- int i;
- unsigned long address;
-
-
- /* The flash is positioned back to back, with the demultiplexing of the chip
- * based on the A24 address line.
- *
- */
-
- address = CFG_FLASH_BASE;
- size = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- size += flash_info[i].size = flash_get_size(address, i);
- address += CFG_FLASH_INCREMENT;
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",i,
- flash_info[0].size, flash_info[i].size<<20);
- }
- }
-
-#if 0 /* test-only */
- /* Monitor protection ON by default */
-#if (CFG_MONITOR_BASE >= CFG_FLASH_BASE)
- for(i=0; flash_info[0].start[i] < CFG_MONITOR_BASE+CFG_MONITOR_LEN-1; i++)
- (void)flash_real_protect(&flash_info[0], i, 1);
-#endif
-#else
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- - CFG_MONITOR_LEN,
- - 1, &flash_info[1]);
-#endif
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int rcode = 0;
- int prot;
- int sect;
-
- if( info->flash_id != FLASH_MAN_CFI) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
- if ((s_first < 0) || (s_first > s_last)) {
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- flash_write_cmd(info, sect, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sect, 0, FLASH_CMD_BLOCK_ERASE);
- flash_write_cmd(info, sect, 0, FLASH_CMD_ERASE_CONFIRM);
-
- if(flash_full_status_check(info, sect, info->erase_blk_tout, "erase")) {
- rcode = 1;
- } else
- printf(".");
- }
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id != FLASH_MAN_CFI) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- printf("CFI conformant FLASH (%d x %d)",
- (info->portwidth << 3 ), (info->chipwidth << 3 ));
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
- printf(" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n",
- info->erase_blk_tout, info->write_tout, info->buffer_write_tout, info->buffer_size);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
-#ifdef CFG_FLASH_EMPTY_INFO
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++)
- {
- if (*flash++ != 0xffffffff)
- {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- /* print empty and read-only info */
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
-#else
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
-#endif
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong wp;
- ulong cp;
- int aln;
- cfiword_t cword;
- int i, rc;
-
- /* get lower aligned address */
- wp = (addr & ~(info->portwidth - 1));
-
- /* handle unaligned start */
- if((aln = addr - wp) != 0) {
- cword.l = 0;
- cp = wp;
- for(i=0;i<aln; ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *)cp));
-
- for(; (i< info->portwidth) && (cnt > 0) ; i++) {
- flash_add_byte(info, &cword, *src++);
- cnt--;
- cp++;
- }
- for(; (cnt == 0) && (i < info->portwidth); ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *)cp));
- if((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp = cp;
- }
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
- while(cnt >= info->portwidth) {
- i = info->buffer_size > cnt? cnt: info->buffer_size;
- if((rc = flash_write_cfibuffer(info, wp, src,i)) != ERR_OK)
- return rc;
- wp += i;
- src += i;
- cnt -=i;
- }
-#else
- /* handle the aligned part */
- while(cnt >= info->portwidth) {
- cword.l = 0;
- for(i = 0; i < info->portwidth; i++) {
- flash_add_byte(info, &cword, *src++);
- }
- if((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp += info->portwidth;
- cnt -= info->portwidth;
- }
-#endif /* CFG_FLASH_USE_BUFFER_WRITE */
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- cword.l = 0;
- for (i=0, cp=wp; (i<info->portwidth) && (cnt>0); ++i, ++cp) {
- flash_add_byte(info, &cword, *src++);
- --cnt;
- }
- for (; i<info->portwidth; ++i, ++cp) {
- flash_add_byte(info, & cword, (*(uchar *)cp));
- }
-
- return flash_write_cfiword(info, wp, cword);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
- int retcode = 0;
-
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT);
- if(prot)
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_SET);
- else
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_CLEAR);
-
- if((retcode = flash_full_status_check(info, sector, info->erase_blk_tout,
- prot?"protect":"unprotect")) == 0) {
-
- info->protect[sector] = prot;
- /* Intel's unprotect unprotects all locking */
- if(prot == 0) {
- int i;
- for(i = 0 ; i<info->sector_count; i++) {
- if(info->protect[i])
- flash_real_protect(info, i, 1);
- }
- }
- }
-
- return retcode;
-}
-/*-----------------------------------------------------------------------
- * wait for XSR.7 to be set. Time out with an error if it does not.
- * This routine does not set the flash to read-array mode.
- */
-static int flash_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
- ulong start;
-
- /* Wait for command completion */
- start = get_timer (0);
- while(!flash_isset(info, sector, 0, FLASH_STATUS_DONE)) {
- if (get_timer(start) > info->erase_blk_tout) {
- printf("Flash %s timeout at address %lx\n", prompt, info->start[sector]);
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return ERR_TIMOUT;
- }
- }
- return ERR_OK;
-}
-/*-----------------------------------------------------------------------
- * Wait for XSR.7 to be set, if it times out print an error, otherwise do a full status check.
- * This routine sets the flash to read-array mode.
- */
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
- int retcode;
- retcode = flash_status_check(info, sector, tout, prompt);
- if((retcode == ERR_OK) && !flash_isequal(info,sector, 0, FLASH_STATUS_DONE)) {
- retcode = ERR_INVAL;
- printf("Flash %s error at address %lx\n", prompt,info->start[sector]);
- if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS | FLASH_STATUS_PSLBS)){
- printf("Command Sequence Error.\n");
- } else if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS)){
- printf("Block Erase Error.\n");
- retcode = ERR_NOT_ERASED;
- } else if (flash_isset(info, sector, 0, FLASH_STATUS_PSLBS)) {
- printf("Locking Error\n");
- }
- if(flash_isset(info, sector, 0, FLASH_STATUS_DPS)){
- printf("Block locked.\n");
- retcode = ERR_PROTECTED;
- }
- if(flash_isset(info, sector, 0, FLASH_STATUS_VPENS))
- printf("Vpp Low Error.\n");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return retcode;
-}
-/*-----------------------------------------------------------------------
- */
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c)
-{
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cword->c = c;
- break;
- case FLASH_CFI_16BIT:
- cword->w = (cword->w << 8) | c;
- break;
- case FLASH_CFI_32BIT:
- cword->l = (cword->l << 8) | c;
- }
-}
-
-
-/*-----------------------------------------------------------------------
- * make a proper sized command based on the port and chip widths
- */
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf)
-{
- int i;
- uchar *cp = (uchar *)cmdbuf;
- for(i=0; i< info->portwidth; i++)
- *cp++ = ((i+1) % info->chipwidth) ? '\0':cmd;
-}
-
-/*
- * Write a proper sized command to the correct address
- */
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
-
- volatile cfiptr_t addr;
- cfiword_t cword;
- addr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- *addr.cp = cword.c;
- break;
- case FLASH_CFI_16BIT:
- *addr.wp = cword.w;
- break;
- case FLASH_CFI_32BIT:
- *addr.lp = cword.l;
- break;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = (cptr.cp[0] == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = (cptr.wp[0] == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = (cptr.lp[0] == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-/*-----------------------------------------------------------------------
- */
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-
-/*-----------------------------------------------------------------------
- * detect if flash is compatible with the Common Flash Interface (CFI)
- * http://www.jedec.org/download/search/jesd68.pdf
- *
-*/
-static int flash_detect_cfi(flash_info_t * info)
-{
-
- for(info->portwidth=FLASH_CFI_8BIT; info->portwidth <= FLASH_CFI_32BIT;
- info->portwidth <<= 1) {
- for(info->chipwidth =FLASH_CFI_BY8;
- info->chipwidth <= info->portwidth;
- info->chipwidth <<= 1) {
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
- flash_write_cmd(info, 0, FLASH_OFFSET_CFI, FLASH_CMD_CFI);
- if(flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP,'Q') &&
- flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 1, 'R') &&
- flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 2, 'Y'))
- return 1;
- }
- }
- return 0;
-}
-/*
- * The following code cannot be run from FLASH!
- *
- */
-static ulong flash_get_size (ulong base, int banknum)
-{
- flash_info_t * info = &flash_info[banknum];
- int i, j;
- int sect_cnt;
- unsigned long sector;
- unsigned long tmp;
- int size_ratio;
- uchar num_erase_regions;
- int erase_region_size;
- int erase_region_count;
-
- info->start[0] = base;
-
- if(flash_detect_cfi(info)){
-#ifdef DEBUG_FLASH
- printf("portwidth=%d chipwidth=%d\n", info->portwidth, info->chipwidth); /* test-only */
-#endif
- size_ratio = info->portwidth / info->chipwidth;
- num_erase_regions = flash_read_uchar(info, FLASH_OFFSET_NUM_ERASE_REGIONS);
-#ifdef DEBUG_FLASH
- printf("found %d erase regions\n", num_erase_regions);
-#endif
- sect_cnt = 0;
- sector = base;
- for(i = 0 ; i < num_erase_regions; i++) {
- if(i > NUM_ERASE_REGIONS) {
- printf("%d erase regions found, only %d used\n",
- num_erase_regions, NUM_ERASE_REGIONS);
- break;
- }
- tmp = flash_read_long(info, 0, FLASH_OFFSET_ERASE_REGIONS);
- erase_region_size = (tmp & 0xffff)? ((tmp & 0xffff) * 256): 128;
- tmp >>= 16;
- erase_region_count = (tmp & 0xffff) +1;
- for(j = 0; j< erase_region_count; j++) {
- info->start[sect_cnt] = sector;
- sector += (erase_region_size * size_ratio);
- info->protect[sect_cnt] = flash_isset(info, sect_cnt, FLASH_OFFSET_PROTECT, FLASH_STATUS_PROTECT);
- sect_cnt++;
- }
- }
-
- info->sector_count = sect_cnt;
- /* multiply the size by the number of chips */
- info->size = (1 << flash_read_uchar(info, FLASH_OFFSET_SIZE)) * size_ratio;
- info->buffer_size = (1 << flash_read_ushort(info, 0, FLASH_OFFSET_BUFFER_SIZE));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_ETOUT);
- info->erase_blk_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_EMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WBTOUT);
- info->buffer_write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WBMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WTOUT);
- info->write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WMAX_TOUT)))/ 1000;
- info->flash_id = FLASH_MAN_CFI;
- }
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
- return(info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
-{
-
- cfiptr_t ctladdr;
- cfiptr_t cptr;
- int flag;
-
- ctladdr.cp = flash_make_addr(info, 0, 0);
- cptr.cp = (uchar *)dest;
-
-
- /* Check if Flash is (sufficiently) erased */
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- flag = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- flag = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- flag = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- return 2;
- }
- if(!flag)
- return 2;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, 0, 0, FLASH_CMD_WRITE);
-
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cptr.cp[0] = cword.c;
- break;
- case FLASH_CFI_16BIT:
- cptr.wp[0] = cword.w;
- break;
- case FLASH_CFI_32BIT:
- cptr.lp[0] = cword.l;
- break;
- }
-
- /* re-enable interrupts if necessary */
- if(flag)
- enable_interrupts();
-
- return flash_full_status_check(info, 0, info->write_tout, "write");
-}
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-
-/* loop through the sectors from the highest address
- * when the passed address is greater or equal to the sector address
- * we have a match
- */
-static int find_sector(flash_info_t *info, ulong addr)
-{
- int sector;
- for(sector = info->sector_count - 1; sector >= 0; sector--) {
- if(addr >= info->start[sector])
- break;
- }
- return sector;
-}
-
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len)
-{
-
- int sector;
- int cnt;
- int retcode;
- volatile cfiptr_t src;
- volatile cfiptr_t dst;
-
- src.cp = cp;
- dst.cp = (uchar *)dest;
- sector = find_sector(info, dest);
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_TO_BUFFER);
- if((retcode = flash_status_check(info, sector, info->buffer_write_tout,
- "write to buffer")) == ERR_OK) {
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cnt = len;
- break;
- case FLASH_CFI_16BIT:
- cnt = len >> 1;
- break;
- case FLASH_CFI_32BIT:
- cnt = len >> 2;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- flash_write_cmd(info, sector, 0, (uchar)cnt-1);
- while(cnt-- > 0) {
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- *dst.cp++ = *src.cp++;
- break;
- case FLASH_CFI_16BIT:
- *dst.wp++ = *src.wp++;
- break;
- case FLASH_CFI_32BIT:
- *dst.lp++ = *src.lp++;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_BUFFER_CONFIRM);
- retcode = flash_full_status_check(info, sector, info->buffer_write_tout,
- "buffer write");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- return retcode;
-}
-#endif /* CFG_USE_FLASH_BUFFER_WRITE */
diff --git a/board/esd/apc405/u-boot.lds b/board/esd/apc405/u-boot.lds
deleted file mode 100644
index f7a20d1da2..0000000000
--- a/board/esd/apc405/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/ar405/Makefile b/board/esd/ar405/Makefile
deleted file mode 100644
index 4d75868ea8..0000000000
--- a/board/esd/ar405/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/ar405/ar405.c b/board/esd/ar405/ar405.c
deleted file mode 100644
index dfead3363c..0000000000
--- a/board/esd/ar405/ar405.c
+++ /dev/null
@@ -1,436 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include "ar405.h"
-#include <asm/processor.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*cmd_boot.c*/
-extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-extern void lxt971_no_sleep(void);
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* fpga configuration data - generated by bin2cc */
-const unsigned char fpgadata[] = {
-#include "fpgadata.c"
-};
-
-const unsigned char fpgadata_xl30[] = {
-#include "fpgadata_xl30.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int board_early_init_f (void)
-{
- int index, len, i;
- int status;
-
-#ifdef FPGA_DEBUG
- /* set up serial port with default baudrate */
- (void) get_clocks ();
- gd->baudrate = CONFIG_BAUDRATE;
- serial_init ();
- console_init_f ();
-#endif
-
- /*
- * Boot onboard FPGA
- */
- /* first try 40er image */
- gd->board_type = 40;
- status = fpga_boot ((unsigned char *) fpgadata, sizeof (fpgadata));
- if (status != 0) {
- /* try xl30er image */
- gd->board_type = 30;
- status = fpga_boot ((unsigned char *) fpgadata_xl30, sizeof (fpgadata_xl30));
- if (status != 0) {
- /* booting FPGA failed */
-#ifndef FPGA_DEBUG
- /* set up serial port with default baudrate */
- (void) get_clocks ();
- gd->baudrate = CONFIG_BAUDRATE;
- serial_init ();
- console_init_f ();
-#endif
- printf ("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf ("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf ("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf ("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i = 0; i < 4; i++) {
- len = fpgadata[index];
- printf ("FPGA: %s\n", &(fpgadata[index + 1]));
- index += len + 3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i = 20; i > 0; i--) {
- printf ("Rebooting in %2d seconds \r", i);
- for (index = 0; index < 1000; index++)
- udelay (1000);
- }
- putc ('\n');
- do_reset (NULL, 0, 0, NULL);
- }
- }
-
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) PCI SLOT 0; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) PCI SLOT 1; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
- mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
- mtdcr (uicpr, 0xFFFFFF81); /* set int polarities */
- mtdcr (uictr, 0x10000000); /* set int trigger levels */
- mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
-
- *(ushort *) 0xf03000ec = 0x0fff; /* enable all interrupts in fpga */
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- int index;
- int len;
- char str[64];
- int i = getenv_r ("serial#", str, sizeof (str));
- const unsigned char *fpga;
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming AR405");
- } else {
- puts(str);
- }
-
- puts ("\nFPGA: ");
-
- /* display infos on fpgaimage */
- if (gd->board_type == 30) {
- fpga = fpgadata_xl30;
- } else {
- fpga = fpgadata;
- }
- index = 15;
- for (i = 0; i < 4; i++) {
- len = fpga[index];
- printf ("%s ", &(fpga[index + 1]));
- index += len + 3;
- }
-
- putc ('\n');
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-
-#if 1 /* test-only: some internal test routines... */
-/*
- * Some test routines
- */
-int do_digtest(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- volatile uchar *digen = (volatile uchar *)0xf03000b4;
- volatile ushort *digout = (volatile ushort *)0xf03000b0;
- volatile ushort *digin = (volatile ushort *)0xf03000a0;
- int i;
- int k;
- int start;
- int end;
-
- if (argc != 3) {
- puts("Usage: digtest n_start n_end (digtest 0 7)\n");
- return 0;
- }
-
- start = simple_strtol (argv[1], NULL, 10);
- end = simple_strtol (argv[2], NULL, 10);
-
- /*
- * Enable digital outputs
- */
- *digen = 0x08;
-
- printf("\nStarting digital In-/Out Test from I/O %d to %d (Cntrl-C to abort)...\n",
- start, end);
-
- /*
- * Set outputs one by one
- */
- for (;;) {
- for (i=start; i<=end; i++) {
- *digout = 0x0001 << i;
- for (k=0; k<200; k++)
- udelay(1000);
-
- if (*digin != (0x0001 << i)) {
- printf("ERROR: OUT=0x%04X, IN=0x%04X\n", 0x0001 << i, *digin);
- return 0;
- }
-
- /* Abort if ctrl-c was pressed */
- if (ctrlc()) {
- puts("\nAbort\n");
- return 0;
- }
- }
- }
-
- return 0;
-}
-U_BOOT_CMD(
- digtest, 3, 1, do_digtest,
- "digtest - Test digital in-/output\n",
- NULL
- );
-
-
-#define ERROR_DELTA 256
-
-struct io {
- volatile short val;
- short dummy;
-};
-
-int do_anatest(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- volatile short val;
- int i;
- int volt;
- struct io *out;
- struct io *in;
-
- out = (struct io *)0xf0300090;
- in = (struct io *)0xf0300000;
-
- i = simple_strtol (argv[1], NULL, 10);
-
- volt = 0;
- printf("Setting Channel %d to %dV...\n", i, volt);
- out[i].val = (volt * 0x7fff) / 10;
- udelay(10000);
- val = in[i*2].val;
- printf("-> InChannel %d: 0x%04x=%dV\n", i*2, val, (val * 4000) / 0x7fff);
- if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
- (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
- printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
- ((volt * 0x7fff) / 40) + ERROR_DELTA);
- return -1;
- }
- val = in[i*2+1].val;
- printf("-> InChannel %d: 0x%04x=%dV\n", i*2+1, val, (val * 4000) / 0x7fff);
- if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
- (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
- printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
- ((volt * 0x7fff) / 40) + ERROR_DELTA);
- return -1;
- }
-
- volt = 5;
- printf("Setting Channel %d to %dV...\n", i, volt);
- out[i].val = (volt * 0x7fff) / 10;
- udelay(10000);
- val = in[i*2].val;
- printf("-> InChannel %d: 0x%04x=%dV\n", i*2, val, (val * 4000) / 0x7fff);
- if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
- (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
- printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
- ((volt * 0x7fff) / 40) + ERROR_DELTA);
- return -1;
- }
- val = in[i*2+1].val;
- printf("-> InChannel %d: 0x%04x=%dV\n", i*2+1, val, (val * 4000) / 0x7fff);
- if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
- (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
- printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
- ((volt * 0x7fff) / 40) + ERROR_DELTA);
- return -1;
- }
-
- volt = 10;
- printf("Setting Channel %d to %dV...\n", i, volt);
- out[i].val = (volt * 0x7fff) / 10;
- udelay(10000);
- val = in[i*2].val;
- printf("-> InChannel %d: 0x%04x=%dV\n", i*2, val, (val * 4000) / 0x7fff);
- if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
- (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
- printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
- ((volt * 0x7fff) / 40) + ERROR_DELTA);
- return -1;
- }
- val = in[i*2+1].val;
- printf("-> InChannel %d: 0x%04x=%dV\n", i*2+1, val, (val * 4000) / 0x7fff);
- if ((val < ((volt * 0x7fff) / 40) - ERROR_DELTA) ||
- (val > ((volt * 0x7fff) / 40) + ERROR_DELTA)) {
- printf("ERROR! (min=0x%04x max=0x%04x)\n", ((volt * 0x7fff) / 40) - ERROR_DELTA,
- ((volt * 0x7fff) / 40) + ERROR_DELTA);
- return -1;
- }
-
- printf("Channel %d OK!\n", i);
-
- return 0;
-}
-U_BOOT_CMD(
- anatest, 2, 1, do_anatest,
- "anatest - Test analog in-/output\n",
- NULL
- );
-
-
-int counter = 0;
-
-void cyclicInt(void *ptr)
-{
- *(ushort *)0xf03000e8 = 0x0800; /* ack int */
- counter++;
-}
-
-
-int do_inctest(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- volatile uchar *digout = (volatile uchar *)0xf03000b4;
- volatile ulong *incin;
- int i;
-
- incin = (volatile ulong *)0xf0300040;
-
- /*
- * Clear inc counter
- */
- incin[0] = 0;
- incin[1] = 0;
- incin[2] = 0;
- incin[3] = 0;
-
- incin = (volatile ulong *)0xf0300050;
-
- /*
- * Inc a little
- */
- for (i=0; i<10000; i++) {
- switch (i & 0x03) {
- case 0:
- *digout = 0x02;
- break;
- case 1:
- *digout = 0x03;
- break;
- case 2:
- *digout = 0x01;
- break;
- case 3:
- *digout = 0x00;
- break;
- }
- udelay(10);
- }
-
- printf("Inc 0 = %ld\n", incin[0]);
- printf("Inc 1 = %ld\n", incin[1]);
- printf("Inc 2 = %ld\n", incin[2]);
- printf("Inc 3 = %ld\n", incin[3]);
-
- *(ushort *)0xf03000e0 = 0x0c80-1; /* set counter */
- *(ushort *)0xf03000ec |= 0x0800; /* enable int */
- irq_install_handler (30, (interrupt_handler_t *) cyclicInt, NULL);
- printf("counter=%d\n", counter);
-
- return 0;
-}
-U_BOOT_CMD(
- inctest, 3, 1, do_inctest,
- "inctest - Test incremental encoder inputs\n",
- NULL
- );
-#endif
diff --git a/board/esd/ar405/ar405.h b/board/esd/ar405/ar405.h
deleted file mode 100644
index 5fc313a258..0000000000
--- a/board/esd/ar405/ar405.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (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
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- * Start Address Length
- * +-----------------------+ 0x4000_0000 Start of Flash -----------------
- * | MON8xx code | 0x4000_0100 Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused) |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses | 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) | 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address | 0x04
- * +-----------------------+ 0x4001_FFC0 ^
- * | Hardware Information | 0x40 | MON8xx
- * +=======================+ 0x4002_0000 (sector border) -----------------
- * | Autostart Header | | Applications
- * | ... | v
- *
- *****************************************************************************/
diff --git a/board/esd/ar405/config.mk b/board/esd/ar405/config.mk
deleted file mode 100644
index 3e8baf6563..0000000000
--- a/board/esd/ar405/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (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
-#
-
-#
-# esd AR405 boards
-#
-
-#TEXT_BASE = 0xFFFE0000
-#TEXT_BASE = 0xFFFD0000
-TEXT_BASE = 0xFFFC0000
diff --git a/board/esd/ar405/flash.c b/board/esd/ar405/flash.c
deleted file mode 100644
index 89af1190a8..0000000000
--- a/board/esd/ar405/flash.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- switch (size_b0) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/ar405/fpgadata.c b/board/esd/ar405/fpgadata.c
deleted file mode 100644
index 5c337e0390..0000000000
--- a/board/esd/ar405/fpgadata.c
+++ /dev/null
@@ -1,2750 +0,0 @@
- 0x00,0x09,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x00,0x00,0x01,0x61,0x00,0x0d,
- 0x70,0x70,0x63,0x5f,0x61,0x72,0x30,0x31,0x2e,0x6e,0x63,0x64,0x00,0x62,0x00,0x0b,
- 0x73,0x34,0x30,0x78,0x6c,0x70,0x71,0x32,0x34,0x30,0x00,0x63,0x00,0x0b,0x32,0x30,
- 0x30,0x31,0x2f,0x30,0x32,0x2f,0x31,0x34,0x00,0x64,0x00,0x09,0x31,0x35,0x3a,0x34,
- 0x30,0x3a,0x30,0x34,0x00,0x65,0xe2,0x01,0x00,0x00,0xab,0x8e,0xff,0x30,0xe5,0xe5,
- 0xe8,0xe5,0x03,0xe8,0x04,0x01,0x02,0x11,0x09,0x09,0x01,0x07,0x02,0x04,0x04,0x06,
- 0x09,0x07,0x04,0x04,0x04,0x04,0x03,0x07,0x02,0x04,0x09,0x04,0x04,0x0b,0x09,0x09,
- 0x03,0x07,0x02,0x09,0x04,0x04,0x04,0x04,0x0e,0x04,0x04,0x09,0x03,0x07,0x02,0x04,
- 0x03,0x03,0x03,0x07,0xe5,0x01,0x0d,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
- 0x19,0x03,0x02,0x02,0x03,0x02,0x08,0x09,0x07,0x13,0x03,0x11,0x02,0x06,0x03,0x05,
- 0x03,0x05,0x11,0x1d,0x1f,0x13,0x10,0x01,0x01,0xe3,0x4c,0xe5,0x01,0x0a,0x04,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x09,0x04,0x04,0x02,0x06,0x01,0xe5,0x05,
- 0x01,0x02,0x04,0x04,0x04,0x09,0x09,0x09,0x09,0x04,0x06,0x01,0x07,0x09,0x04,0x04,
- 0x09,0x06,0x02,0x09,0x09,0x04,0x01,0xe7,0x03,0x04,0x07,0xe6,0x08,0x09,0x09,0x0e,
- 0x01,0xe6,0x13,0x09,0x09,0x09,0x03,0x05,0x03,0x05,0x09,0x09,0x09,0x09,0xe5,0x07,
- 0x03,0x05,0xe5,0x07,0xe5,0x01,0x05,0x0b,0xe5,0x07,0xe5,0x07,0x09,0x03,0x05,0xe6,
- 0xe5,0x04,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0xe6,0x04,0x03,0x05,0xe5,0xe6,0x04,
- 0xe5,0x07,0x03,0x05,0xe5,0x07,0x0b,0x01,0x0e,0x05,0x03,0x05,0x03,0x05,0x1d,0x03,
- 0x05,0x03,0x44,0xe5,0xe5,0x2e,0x1c,0x01,0x13,0x32,0x01,0xe3,0x4d,0xe5,0x0f,0x09,
- 0x09,0x27,0x09,0x42,0x04,0x4a,0x44,0x01,0x01,0x01,0x12,0x09,0x09,0x01,0x06,0x01,
- 0x12,0x09,0x0a,0x09,0x11,0x21,0x13,0x11,0x15,0x1d,0x1b,0x0c,0x0d,0x03,0x03,0x01,
- 0x31,0x31,0x47,0x81,0xe5,0xe5,0xe5,0x77,0x3e,0xe5,0x19,0xe5,0x1b,0x3b,0xe5,0xe5,
- 0x5a,0x3d,0x1f,0x74,0xe6,0xe5,0x28,0x5b,0x09,0xe5,0x0a,0x08,0xe5,0x08,0x1d,0x11,
- 0xe6,0x37,0x12,0x01,0x01,0x09,0x06,0x09,0x09,0x09,0xe5,0x07,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x01,0x03,0x03,0x03,0x05,0x05,0x05,0x09,0x09,0x09,0x09,0x09,0xe5,
- 0x07,0x09,0x09,0x09,0x05,0x03,0x09,0x09,0x09,0x10,0xe5,0x0f,0x09,0x09,0x04,0x04,
- 0x09,0x09,0x05,0x03,0x05,0x03,0x01,0x07,0x09,0x09,0x09,0x09,0x07,0x01,0x07,0xe5,
- 0x01,0x07,0x01,0x06,0x02,0x09,0x05,0x03,0x06,0x02,0x09,0x05,0x01,0x01,0x01,0x07,
- 0x05,0x03,0x09,0x09,0x09,0x04,0x04,0x0e,0x01,0xe5,0x02,0x09,0xe5,0x07,0xe5,0x01,
- 0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x03,0xe5,0x01,
- 0x01,0x03,0xe5,0x01,0x05,0xe5,0x07,0xe5,0xe5,0x05,0x09,0x09,0x01,0x02,0x06,0x04,
- 0x04,0x09,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0x09,0xe5,0x07,0x09,0xe5,0x02,0x04,0xe5,
- 0x01,0x05,0x09,0x09,0xe5,0x07,0xe5,0x04,0x0b,0x01,0x10,0x09,0x09,0x09,0x09,0x05,
- 0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x06,0x02,0x06,0x02,0x06,0xe6,0x01,0x06,0x02,
- 0x06,0x02,0x09,0x09,0x03,0x02,0x02,0x09,0x06,0x02,0x09,0x09,0x06,0x02,0x06,0x02,
- 0x09,0x09,0x0d,0x02,0xe5,0x02,0x01,0xe5,0x05,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x03,0x03,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x02,0x04,0xe5,0x03,0x03,0x05,0x03,0x0b,0x04,0xe5,0x02,0x06,0x02,0x09,0xe5,
- 0x07,0xe5,0x01,0x05,0x05,0x03,0xe5,0x03,0x03,0x05,0x03,0xe5,0x07,0xe5,0x07,0x09,
- 0x09,0xe5,0x07,0xe5,0x07,0x02,0x03,0xe5,0xe6,0x08,0x05,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x0f,0x01,0xe5,0x05,0x06,0x09,0x07,0xe6,0x08,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x05,0x03,0x0a,0x09,0x08,0x01,0x03,0x06,0x08,0x09,
- 0x09,0x0a,0x08,0x0a,0x07,0xe5,0x08,0x0a,0x09,0x08,0x09,0x11,0xe5,0xe5,0x01,0x0a,
- 0x02,0x04,0x01,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x01,0x04,0x02,0x03,0x02,0x02,
- 0x06,0x02,0x05,0xe5,0x01,0x05,0xe5,0x01,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,
- 0x08,0x02,0x05,0xe5,0x01,0x06,0x02,0x05,0xe5,0x01,0x04,0x01,0x02,0x06,0x02,0x06,
- 0x02,0x06,0x02,0x01,0x04,0x02,0x06,0x02,0x06,0x02,0x05,0xe5,0x01,0x06,0x02,0x06,
- 0x02,0x08,0x04,0xe5,0xe6,0x02,0x11,0x04,0xe6,0x24,0x09,0xe5,0x2f,0x06,0xe5,0xe5,
- 0x05,0x0e,0x06,0xe5,0x10,0x17,0x09,0x06,0x02,0x45,0x03,0x02,0xe5,0x15,0x0f,0x13,
- 0x27,0x1e,0x05,0x02,0x01,0x01,0x05,0x08,0x3c,0x06,0x01,0x45,0x04,0xe8,0x11,0x01,
- 0xe5,0x07,0x15,0x13,0x23,0x22,0xe5,0x04,0x01,0x06,0x2e,0x13,0x1d,0x2d,0xe5,0xe6,
- 0x18,0x02,0x0c,0x17,0x09,0x31,0x0d,0xe5,0x0c,0x31,0xe7,0x58,0x04,0xe5,0xe6,0x0f,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x01,0x02,0xe5,0x02,0x09,0x09,0x05,0x03,0x05,0x03,
- 0xe5,0x07,0x09,0x0b,0x09,0x09,0x09,0x01,0x03,0x03,0x07,0x01,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x0f,0xe6,0x13,0x1d,0x03,0x01,0x1a,0x13,0xe5,0xe5,0x0f,0x01,
- 0xe5,0x07,0xe5,0x05,0x01,0xe5,0x06,0xe6,0xe5,0x05,0x02,0x06,0x01,0xe5,0x09,0x12,
- 0x09,0x10,0x0a,0x01,0x08,0xe5,0x0f,0x01,0xe5,0x17,0xe5,0xe5,0x50,0x01,0x07,0x09,
- 0x01,0x14,0x05,0x01,0x08,0x0a,0x0a,0x02,0x09,0x0d,0x0b,0x14,0x4e,0xe5,0x01,0x3c,
- 0x0b,0x12,0x34,0x0b,0x06,0x01,0x0e,0x18,0x04,0x04,0x04,0x0f,0x27,0x19,0x02,0xe5,
- 0x05,0x67,0x09,0x3d,0x33,0x07,0x1d,0x17,0x05,0xe5,0xe6,0x05,0x15,0x5b,0x35,0x81,
- 0xe6,0x34,0x01,0x07,0x1d,0xe6,0x06,0x01,0x0b,0x05,0x01,0x0b,0x0b,0x2d,0x01,0x07,
- 0x0b,0x05,0x03,0x11,0xe6,0x1a,0x01,0x03,0x17,0xe5,0x1a,0x1c,0x09,0x24,0x01,0x11,
- 0x01,0x0e,0x07,0x15,0x1b,0x09,0x03,0x21,0x1c,0x01,0x18,0x01,0x01,0x35,0x20,0x01,
- 0x04,0x01,0x13,0x0d,0x0b,0x12,0x10,0x02,0x0a,0x03,0x11,0x01,0x09,0x02,0x03,0x07,
- 0x06,0x2a,0x0c,0x02,0x1a,0x0a,0x08,0x13,0x09,0x10,0xe5,0xe5,0x0b,0x03,0xe5,0x0e,
- 0x07,0x1e,0x03,0x01,0x12,0x0f,0x02,0x01,0x02,0x17,0x02,0x01,0x02,0x11,0x0d,0x13,
- 0xe5,0x01,0x27,0xe5,0x33,0x07,0x0d,0x3b,0x02,0x0b,0x09,0x0e,0x03,0x1c,0x35,0x01,
- 0xe6,0x64,0x09,0x2a,0x03,0x06,0x01,0x03,0x07,0x02,0x2b,0x05,0x20,0xe6,0x24,0xe5,
- 0xe5,0x06,0x43,0x0e,0x37,0x01,0x28,0x23,0x27,0x0c,0x15,0xe5,0xe6,0x68,0x0c,0x03,
- 0x02,0x13,0x05,0x02,0x14,0x01,0x0b,0x03,0x07,0x08,0x06,0x16,0x06,0x36,0xe5,0xe6,
- 0x60,0x07,0x13,0x02,0x10,0x0d,0x11,0x02,0x20,0x10,0x01,0x0c,0x01,0x02,0x34,0xe7,
- 0x09,0x06,0x58,0x10,0x01,0x11,0x01,0x1f,0x04,0x08,0x17,0x18,0x04,0x2c,0x0b,0x03,
- 0xe6,0x6e,0x37,0x0f,0x02,0x03,0xe5,0xe5,0x04,0xe5,0x06,0x01,0xe5,0x03,0xe5,0xe6,
- 0x05,0x08,0xe6,0x03,0x05,0xe5,0x07,0xe5,0x05,0x1e,0xe7,0xe6,0x01,0x01,0x6c,0x13,
- 0xe5,0x21,0xe5,0x0d,0x04,0x04,0x04,0x01,0x01,0x07,0xe5,0xe5,0x04,0xe5,0x0f,0x05,
- 0xe6,0x03,0xe5,0x06,0xe5,0x21,0x01,0x06,0x04,0x6c,0x10,0xe5,0x16,0x06,0x01,0xe5,
- 0xe5,0x0b,0x04,0x06,0xe5,0x10,0xe5,0x05,0xe5,0x07,0x0c,0xe5,0x18,0x1b,0x05,0x01,
- 0xe5,0x01,0x57,0x16,0x10,0x13,0xe5,0x04,0x07,0x01,0x04,0xe5,0xe5,0x08,0x06,0x12,
- 0xe5,0x1c,0x38,0x03,0xe5,0xe5,0x5a,0x27,0x03,0x22,0x06,0xe5,0x04,0xe5,0x06,0x01,
- 0x0e,0x07,0x02,0x02,0x05,0x0c,0x01,0x01,0x02,0xe5,0x01,0x05,0x09,0x1f,0xe5,0xe6,
- 0x01,0x5e,0x13,0x0f,0x03,0x04,0x10,0x01,0x02,0x04,0x08,0x02,0x01,0xe6,0x02,0x05,
- 0x03,0x0f,0x02,0x02,0x02,0x14,0x01,0x02,0x01,0x01,0x2c,0x02,0x01,0x01,0xe5,0x5b,
- 0x01,0x2d,0x0d,0x09,0x01,0x03,0xe5,0x03,0x04,0x01,0xe5,0x05,0x01,0x11,0x02,0x0e,
- 0x0b,0x01,0x02,0x0b,0x09,0xe5,0xe5,0xe5,0x19,0xe5,0x02,0x5d,0x01,0x3a,0x02,0x07,
- 0x01,0x01,0xe5,0xe5,0x01,0x02,0x06,0x17,0xe8,0xe5,0x01,0x0a,0xe5,0x0d,0x0e,0x09,
- 0x1f,0xe5,0xe6,0x6c,0xe5,0x25,0x12,0x04,0x04,0x02,0x09,0x10,0x09,0x09,0x1d,0x09,
- 0x21,0xe8,0x63,0x09,0x09,0x09,0x09,0x0b,0x0f,0xe5,0x0d,0x07,0xe6,0x06,0x05,0xe5,
- 0x0b,0xe5,0x03,0xe5,0x15,0x05,0xe5,0x07,0xe5,0x1f,0x02,0xe6,0x0d,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x04,0x01,0x02,0x03,0x02,0x02,0x03,0x05,0x03,0x05,0x03,0x05,
- 0x03,0x02,0x02,0x06,0x01,0x02,0x02,0x06,0xe5,0x04,0x02,0xe5,0x07,0x06,0x02,0x02,
- 0xe5,0x04,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x07,0x09,0x03,0x05,0xe6,0x06,0xe6,0x06,
- 0x09,0x06,0x06,0x02,0x01,0x02,0x59,0x08,0x0a,0x09,0x10,0x02,0x06,0x17,0x13,0x11,
- 0x02,0x1d,0x30,0xe5,0x03,0x05,0xe5,0x58,0x13,0x0a,0x13,0x0d,0x0e,0x27,0x03,0x0f,
- 0x0d,0x2f,0x0a,0x01,0x01,0x5f,0x07,0x01,0x04,0x02,0x1c,0x0c,0x0c,0xe6,0x06,0x06,
- 0x01,0x09,0x0a,0xe6,0x06,0x09,0xe6,0x0a,0x04,0x0a,0xe6,0x06,0xe6,0x1e,0xe8,0x5b,
- 0xe5,0x01,0x06,0x01,0xe5,0x07,0xe5,0x08,0x09,0x09,0x03,0x06,0xe5,0x09,0x0f,0x01,
- 0xe5,0x02,0x02,0x02,0x0a,0x13,0x0f,0x01,0x01,0x09,0x09,0x19,0xe5,0x02,0x01,0xe8,
- 0x66,0x12,0x1f,0xe5,0x0c,0x01,0x05,0x06,0x2b,0x03,0x0e,0x03,0x09,0x07,0x16,0x0a,
- 0xe5,0xe5,0x14,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x03,
- 0x05,0xe5,0x05,0xe7,0x01,0x04,0xe6,0x07,0xe5,0x07,0xe5,0x02,0x02,0xe7,0x07,0xe5,
- 0x05,0xe7,0x07,0xe5,0x01,0x05,0xe5,0x02,0x02,0xe7,0x05,0xe7,0x07,0xe5,0x07,0xe6,
- 0x03,0x01,0xe8,0x5e,0x07,0x01,0x07,0x02,0x10,0x01,0x16,0x09,0x09,0xe5,0x04,0x01,
- 0xe5,0x07,0x0a,0x08,0x0a,0x09,0xe5,0x06,0x0a,0x09,0x1b,0x08,0xe5,0x5c,0x09,0x01,
- 0x09,0x11,0x01,0x1c,0x03,0x01,0xe5,0x01,0x07,0x01,0xe5,0xe5,0x06,0x0e,0xe5,0x01,
- 0xe5,0xe5,0x0b,0xe5,0x01,0x0a,0x01,0x02,0x09,0xe5,0x01,0x03,0x01,0xe5,0x01,0x1c,
- 0xe7,0x0b,0x5a,0x01,0x0a,0x06,0x13,0x0a,0x03,0x0d,0xe5,0x02,0x0a,0x13,0x03,0xe5,
- 0x0d,0x03,0xe5,0x0c,0x0a,0x03,0xe5,0x07,0xe5,0x1b,0xe6,0xe5,0x66,0x01,0x0a,0x29,
- 0x03,0x01,0x06,0x01,0xe6,0x01,0x03,0x01,0x03,0x09,0x0c,0x01,0xe5,0x01,0x0d,0x01,
- 0xe5,0x02,0x08,0x0d,0x01,0xe5,0x05,0x01,0xe5,0x1b,0xe5,0xe5,0x73,0x1e,0x1e,0x06,
- 0xe5,0xe5,0x05,0x01,0xe5,0x11,0xe5,0x27,0x09,0x23,0xe5,0x10,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,
- 0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x09,0x01,0xe5,0x05,
- 0x01,0xe6,0x04,0x01,0x03,0x03,0x01,0xe5,0xe5,0xe5,0xe6,0xe5,0x06,0xe6,0x06,0x01,
- 0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x0a,0xe5,0x01,0x20,0x50,0x01,0xe5,0x04,0x1d,0x01,0x02,0xe5,0xe5,0x06,0xe6,0x01,
- 0x01,0x0b,0x0c,0x02,0x04,0x0e,0x03,0xe6,0x06,0x0f,0x03,0xe7,0x07,0x20,0xe6,0xe6,
- 0x08,0x33,0x26,0x05,0x06,0x02,0x17,0x0f,0x05,0x02,0x0f,0x0a,0x0c,0x07,0x05,0xe5,
- 0xe5,0xe5,0xe6,0x0d,0x07,0x04,0x2c,0x02,0xe7,0x6b,0x04,0x20,0x06,0xe5,0x07,0x15,
- 0x11,0x1a,0x02,0x01,0x13,0x0d,0x1e,0x02,0xe6,0x02,0xe5,0x5d,0xe5,0x01,0xe6,0x03,
- 0x05,0x08,0x07,0x01,0x09,0x09,0x02,0x09,0x03,0x04,0x02,0x0b,0x11,0x01,0x02,0x01,
- 0x53,0xe5,0x01,0xe6,0x66,0x02,0x10,0x08,0x01,0x03,0x03,0x08,0xe6,0x01,0x11,0x05,
- 0xe5,0x12,0x0c,0x02,0x05,0x4d,0xe5,0x01,0xe5,0x11,0x4c,0x12,0x02,0x09,0x15,0x02,
- 0x16,0xe5,0x08,0x08,0xe5,0x11,0xe5,0x12,0x08,0xe5,0x01,0x07,0x0b,0x09,0x0a,0x0a,
- 0xe9,0x42,0x11,0x24,0x08,0x07,0x07,0x09,0x09,0x0b,0x04,0xe5,0x02,0x02,0x01,0x02,
- 0xe5,0x09,0x01,0x02,0x01,0xe5,0x01,0xe5,0x09,0x01,0xe5,0x07,0x01,0x0e,0x27,0xe8,
- 0x04,0x22,0x4b,0x01,0x06,0x1b,0xe5,0x1a,0x04,0x01,0x07,0x16,0x0c,0x01,0x18,0x15,
- 0x17,0x05,0x16,0x40,0xe5,0xe6,0x2b,0xe7,0x05,0xe5,0x15,0x09,0x0c,0x04,0xe5,0xe5,
- 0x06,0xe6,0x05,0x01,0x09,0x05,0x17,0x1a,0x09,0x02,0x05,0x59,0x29,0x06,0x08,0x05,
- 0x11,0x08,0x03,0x1b,0x09,0x07,0x0f,0x0d,0x23,0xe6,0xe5,0x50,0x0c,0xe5,0x19,0x36,
- 0x04,0x02,0x01,0x04,0x02,0x01,0x02,0xe6,0x04,0x10,0x01,0xe5,0x0f,0x01,0x18,0x09,
- 0x13,0x01,0x01,0x5f,0x04,0x04,0x06,0x13,0x02,0x0c,0x0b,0x09,0x06,0x01,0x02,0x0b,
- 0x02,0x0a,0x01,0x03,0x02,0x09,0x06,0x0c,0x01,0x07,0x2c,0xe8,0x1b,0x43,0x08,0x1d,
- 0x0c,0x05,0x14,0xe5,0x0b,0x06,0x13,0x0a,0x04,0x0e,0x06,0x02,0x06,0x06,0x1e,0xe5,
- 0x01,0xe6,0x71,0xe6,0x09,0xe5,0x05,0xe5,0xe5,0xe5,0x03,0x02,0xe5,0x05,0x03,0x01,
- 0x04,0x09,0xe5,0x06,0xe5,0x01,0xe5,0x03,0xe6,0x07,0x13,0xe5,0x14,0xe5,0x04,0x09,
- 0x1e,0x02,0x02,0x02,0x01,0x5d,0x12,0xe5,0x09,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x03,0xe5,0x04,0x01,0x04,0x02,0x01,0x04,0x05,0x02,0x03,0xe5,0x0e,0x05,0x05,0xe5,
- 0x1c,0x01,0x04,0x09,0x1b,0x01,0x03,0xe5,0xe5,0x03,0x5f,0x01,0xe5,0x03,0x01,0x01,
- 0x07,0x01,0xe5,0xe5,0x10,0x01,0x0b,0x18,0x01,0x07,0xe5,0xe5,0x02,0xe5,0x0a,0x01,
- 0x0e,0x01,0xe5,0x03,0x04,0xe5,0x02,0x31,0x04,0xe6,0xe5,0x01,0x6b,0x0c,0x01,0x0e,
- 0xe5,0xe5,0xe5,0x08,0x19,0xe5,0x01,0x06,0x13,0x1d,0xe5,0x2f,0x06,0x05,0xe5,0x6e,
- 0x01,0x18,0x09,0x08,0x06,0x05,0x04,0x01,0x02,0x07,0x04,0x04,0x03,0x01,0x05,0x02,
- 0x04,0x0b,0x07,0x09,0x0b,0x09,0x16,0x07,0xe9,0x01,0x68,0x04,0xe5,0x02,0x09,0x13,
- 0x07,0x03,0x01,0x01,0xe5,0x09,0x01,0x01,0x08,0x03,0x01,0x03,0x05,0x0a,0x02,0x03,
- 0x01,0x0a,0x02,0x09,0x05,0x2c,0x02,0xe6,0xe6,0x65,0x07,0x12,0x08,0xe5,0x01,0x01,
- 0x02,0x08,0x0c,0xe6,0x01,0x01,0x01,0x07,0x02,0x04,0x01,0x05,0x08,0x02,0x15,0x07,
- 0x01,0x05,0x05,0x02,0x01,0x04,0x02,0x01,0x1a,0x01,0x02,0x81,0xe6,0x04,0xe5,0xe5,
- 0xe6,0xe5,0xe6,0x05,0x06,0x06,0xe5,0xe5,0xe6,0xe5,0x01,0x04,0x02,0x06,0x02,0x0a,
- 0xe5,0xe8,0x01,0x0a,0xe5,0x03,0x02,0x06,0x02,0x0b,0xe6,0x06,0xe6,0x1d,0x02,0x6d,
- 0x1a,0x02,0xe5,0x04,0x0b,0x02,0xe6,0x03,0x09,0x02,0xe5,0x04,0x02,0x02,0x03,0x09,
- 0x09,0x09,0x02,0xe5,0x04,0x02,0x02,0x03,0x02,0x02,0x03,0x09,0x1b,0x04,0x01,0x02,
- 0x60,0x0f,0x17,0xe5,0x07,0xe5,0x0a,0x08,0xe5,0x07,0xe5,0x15,0xe5,0x03,0xe5,0x0b,
- 0x05,0xe5,0x0b,0x0f,0xe5,0x01,0x05,0xe5,0x20,0x02,0xe5,0x0d,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x04,0x01,0x02,0xe5,0x02,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,
- 0x02,0x03,0x02,0xe5,0x07,0xe5,0x04,0x04,0x01,0x07,0xe5,0x04,0x02,0xe6,0x01,0x01,
- 0x02,0xe5,0xe5,0x05,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x02,0xe6,0x01,0xe5,0x02,0x01,
- 0x02,0xe5,0xe6,0x04,0xe5,0x04,0x02,0xe6,0xe5,0x04,0xe6,0x06,0x09,0x0d,0xe5,0x02,
- 0x02,0x59,0x09,0x09,0x09,0x08,0xe5,0x11,0x15,0xe5,0x08,0x09,0x12,0xe5,0x12,0x12,
- 0xe5,0x2b,0x02,0xe6,0xe5,0x58,0x0b,0x09,0x07,0x0b,0x05,0x09,0x15,0x03,0x07,0x0b,
- 0x0f,0x03,0x0f,0x01,0x15,0x31,0xe7,0x59,0x02,0x01,0x01,0x05,0x13,0x09,0x01,0xe7,
- 0x06,0xe6,0x04,0xe5,0xe7,0x07,0xe6,0x03,0x01,0xe7,0x06,0x09,0x03,0x05,0xe6,0x02,
- 0x03,0x05,0xe5,0xe8,0x06,0x09,0x06,0x01,0xe7,0x06,0xe6,0x20,0x01,0x5d,0x01,0xe5,
- 0x07,0xe5,0x09,0x04,0x02,0xe5,0x04,0xe5,0xe7,0x01,0x06,0x07,0x01,0xe6,0x08,0x04,
- 0xe5,0xe7,0x10,0x0b,0x0f,0x01,0xe6,0x10,0x07,0x01,0xe6,0x08,0x20,0x01,0xe7,0x5b,
- 0x01,0xe5,0x05,0x06,0x0c,0x06,0x02,0x01,0x01,0x08,0x05,0x02,0x01,0x03,0x0a,0x02,
- 0x01,0x04,0x02,0x01,0x07,0x0c,0x02,0x0d,0x01,0xe5,0x02,0x04,0x11,0x01,0x03,0xe5,
- 0x04,0x21,0xe6,0xe5,0x08,0x0b,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe6,0xe5,
- 0x02,0xe7,0x05,0xe7,0xe6,0xe6,0x02,0xe6,0x02,0x02,0xe8,0xe6,0x02,0xe6,0x01,0x05,
- 0xe5,0x01,0x05,0xe5,0x05,0xe7,0x07,0xe6,0xe5,0x02,0xe7,0x01,0x05,0xe5,0x01,0x05,
- 0xe6,0xe6,0x01,0xe7,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x06,0xe5,0x01,0x5f,0xe5,0x05,
- 0x0b,0x0a,0xe5,0x04,0x01,0x13,0x01,0x04,0x05,0xe5,0x04,0x01,0xe5,0x08,0x13,0xe5,
- 0x04,0x01,0xe5,0x05,0x01,0xe5,0x08,0x06,0x09,0x01,0xe6,0x07,0xe5,0x23,0x5d,0x01,
- 0xe5,0x0f,0x13,0x01,0x03,0x02,0x06,0x02,0x01,0xe5,0xe5,0x01,0x03,0x06,0x02,0xe5,
- 0xe6,0x04,0x0c,0x0d,0x02,0x02,0xe5,0x05,0x01,0x03,0x02,0x03,0x08,0x07,0x01,0x03,
- 0x02,0x06,0x02,0x14,0xe5,0x03,0xe6,0x01,0x5f,0x07,0x0b,0x13,0x04,0xe5,0x07,0xe5,
- 0x04,0x0e,0xe5,0x02,0x04,0x04,0xe5,0x16,0xe5,0x02,0x09,0xe5,0x02,0xe5,0x02,0x13,
- 0x04,0xe5,0x07,0xe5,0x14,0x07,0xe5,0xe5,0x5c,0x01,0xe5,0x0f,0x04,0x07,0x06,0x01,
- 0x02,0xe5,0xe6,0x04,0xe5,0xe6,0x01,0x01,0x06,0x05,0xe5,0xe7,0xe5,0x01,0x03,0x03,
- 0x15,0xe5,0xe6,0x02,0x06,0x01,0x02,0xe5,0xe7,0x01,0x10,0x01,0x02,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x14,0x03,0x05,0x11,0x55,0x01,0xe6,0x04,0x03,0xe5,0x08,0x19,0x1e,0xe5,
- 0xe5,0x13,0x05,0x17,0xe5,0x03,0x03,0x36,0x01,0x11,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0x04,0x02,
- 0x01,0xe5,0x04,0xe5,0xe6,0x05,0x01,0x01,0x05,0x01,0x01,0x06,0xe5,0xe5,0x01,0x04,
- 0xe8,0x04,0x01,0x04,0x02,0x01,0x02,0x04,0x01,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x03,
- 0xe6,0xe5,0x04,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0xe5,0x05,0x01,
- 0x07,0x01,0x0b,0x01,0xe5,0x6d,0x04,0x0b,0x07,0xe5,0x07,0xe5,0x0e,0x04,0xe6,0x06,
- 0xe5,0x03,0x03,0xe5,0x11,0xe6,0x05,0x0a,0xe5,0x03,0x05,0x04,0x01,0x03,0x06,0xe5,
- 0x01,0x05,0xe6,0x20,0xe8,0x4f,0x0a,0x04,0x09,0x02,0x13,0x04,0x06,0x02,0xe5,0x13,
- 0xe5,0x07,0x07,0x02,0x0b,0x06,0x03,0x0e,0x07,0x13,0x02,0x03,0x05,0xe5,0x04,0x1a,
- 0xe5,0xe5,0xe5,0x47,0x1a,0x06,0x07,0x12,0x09,0x14,0xe5,0x08,0x04,0x06,0x11,0x04,
- 0x0f,0x1a,0x01,0x09,0x0f,0x14,0x02,0xe5,0x1c,0x33,0x0b,0x09,0x0b,0x07,0x03,0x09,
- 0x03,0x09,0x03,0x01,0x0e,0x01,0x02,0x07,0x01,0x04,0x09,0x01,0x0a,0x01,0x09,0xe5,
- 0x05,0x01,0x07,0x01,0x01,0x01,0x05,0x05,0x26,0x02,0xe6,0x5d,0x01,0x08,0x06,0x0b,
- 0x10,0x09,0xe6,0x01,0x12,0x08,0x02,0x04,0x13,0x04,0x06,0x09,0x01,0x05,0x04,0x06,
- 0x05,0x2a,0xe7,0x02,0x0d,0x50,0x0e,0xe6,0x07,0x0c,0x06,0x03,0xe5,0x01,0x01,0x01,
- 0x03,0xe5,0x0a,0x02,0x03,0x0f,0x03,0x09,0x03,0xe6,0xe5,0xe5,0x13,0x02,0xe6,0x03,
- 0x09,0x0d,0xe5,0x1b,0xe5,0x01,0x09,0x01,0x2a,0x02,0x0e,0x0c,0x06,0xe5,0x04,0x09,
- 0x09,0xe5,0x10,0xe6,0x07,0xe7,0x07,0x09,0xe5,0x07,0x09,0xe5,0xe5,0x01,0xe5,0x01,
- 0x02,0x06,0x02,0x09,0x0b,0x03,0xe5,0x01,0x1a,0x1e,0x29,0x38,0x06,0x01,0xe5,0x02,
- 0x02,0x01,0x07,0x02,0x10,0x06,0xe5,0x02,0x07,0x08,0x02,0x09,0x06,0x02,0x01,0x07,
- 0x06,0x02,0x02,0x01,0x18,0x0b,0xe5,0x0f,0x04,0x13,0x03,0xe5,0x7a,0x1c,0x05,0xe5,
- 0xe5,0xe5,0x07,0x04,0x19,0x1b,0x09,0x0d,0x02,0x2a,0xe5,0x01,0x7c,0x0d,0x0a,0x03,
- 0x57,0x08,0x07,0x0c,0x1f,0x01,0xe5,0x32,0x24,0x0e,0x01,0xe5,0x05,0x01,0x07,0x01,
- 0x16,0x06,0x01,0x11,0x01,0x02,0x18,0x01,0x0f,0x0a,0x09,0x02,0x1d,0x18,0xe6,0xe5,
- 0x72,0x03,0x05,0x10,0xe5,0xe5,0x03,0x07,0x08,0x02,0x24,0x09,0xe5,0x16,0x03,0xe5,
- 0x21,0x12,0xe5,0xe7,0x61,0x0f,0x02,0x04,0x02,0x0b,0x09,0x10,0x01,0x02,0x25,0x09,
- 0x0b,0x11,0x03,0x07,0x02,0x0c,0x1c,0x01,0x01,0x6a,0x04,0x1d,0x0a,0xe5,0x01,0x02,
- 0xe5,0x01,0x02,0xe5,0x04,0x09,0x09,0x02,0xe5,0x04,0x02,0xe5,0x04,0x09,0x02,0x09,
- 0x09,0x0a,0x02,0xe5,0x04,0x1e,0xe6,0xe5,0xe5,0x01,0x01,0x6c,0xe5,0x2d,0xe5,0x1c,
- 0x01,0x0e,0x0f,0x21,0x02,0xe5,0x04,0x1b,0x01,0x03,0x01,0xe5,0x03,0x5f,0xe5,0x0a,
- 0x01,0x04,0x01,0xe5,0x0f,0x07,0x01,0x09,0x01,0x06,0xe5,0xe5,0x06,0x01,0x07,0x01,
- 0x06,0x02,0x07,0x01,0x09,0x01,0x48,0x06,0x01,0x64,0x09,0x02,0x01,0x04,0x02,0xe5,
- 0x0e,0x01,0xe5,0x05,0x01,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x19,0xe5,0x1b,0xe5,0x18,0x03,0x01,
- 0xe6,0x04,0x05,0xe5,0x05,0x01,0x4e,0x09,0x01,0x01,0x02,0xe5,0xe7,0x01,0x06,0x01,
- 0x07,0x01,0x06,0x02,0x01,0x06,0xe5,0xe5,0x05,0xe5,0xe5,0x06,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x03,0x02,0xe5,0x14,0xe5,0x04,0x05,0x09,0x07,0x03,0x01,0x13,0xe6,
- 0x08,0x01,0xe5,0x01,0x04,0x01,0x54,0x05,0x01,0x02,0x03,0xe5,0x08,0x01,0x01,0x07,
- 0x01,0x01,0x01,0xe5,0x03,0x01,0x01,0x01,0xe5,0x01,0x01,0x01,0x01,0xe5,0x01,0x01,
- 0x04,0x02,0x01,0x04,0x02,0x01,0x04,0x02,0x01,0x04,0x02,0x01,0x04,0xe5,0x15,0x03,
- 0xe6,0x13,0x02,0x05,0x0e,0x03,0x01,0xe5,0x0c,0x5b,0x07,0x01,0x05,0x04,0x06,0x01,
- 0x09,0x0b,0x04,0x01,0x02,0x09,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x04,0xe5,
- 0x07,0x01,0x07,0x02,0x01,0x0b,0x01,0xe5,0x05,0x01,0xe5,0x03,0x05,0x11,0x01,0xe5,
- 0xe5,0x0e,0x59,0x07,0x01,0x0a,0x06,0x01,0x07,0x01,0x09,0x01,0x04,0x01,0xe5,0xe5,
- 0x06,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x03,0xe6,0x06,0xe5,0x08,0xe5,
- 0xe5,0x01,0x03,0x07,0x01,0x01,0x05,0x01,0x01,0xe5,0xe6,0x16,0x02,0xe6,0x07,0x02,
- 0x06,0xe5,0x57,0x02,0x06,0x06,0x10,0x0b,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x03,
- 0x05,0x03,0x05,0x03,0x05,0x09,0x0b,0x04,0x02,0x01,0xe5,0x02,0x09,0x09,0x02,0xe5,
- 0x0c,0x05,0xe5,0xe6,0x09,0xe5,0x04,0x02,0x65,0x04,0x21,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x01,0x01,0xe5,0x08,0x09,0x05,0xe5,
- 0x07,0xe5,0x23,0xe5,0x0d,0x03,0x05,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x02,
- 0x06,0x09,0x09,0x04,0x01,0xe5,0xe5,0x08,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x06,
- 0xe5,0xe5,0x01,0x04,0x01,0x06,0xe5,0xe5,0x01,0x06,0x09,0x05,0x03,0xe5,0x03,0x03,
- 0xe6,0x06,0xe6,0x03,0x02,0xe5,0xe5,0x05,0x0d,0xe5,0xe7,0x01,0x63,0x09,0x13,0x0a,
- 0x0b,0x08,0xe5,0x08,0x08,0xe5,0x06,0xe6,0x07,0xe5,0x06,0xe6,0x1b,0x1c,0x19,0x03,
- 0xe5,0xe5,0x64,0x09,0x13,0x1a,0x04,0x04,0x09,0x04,0x04,0x04,0x04,0x03,0x05,0x04,
- 0x04,0x16,0x3e,0x01,0x0a,0x59,0x02,0x06,0x0e,0xe5,0x07,0x12,0x02,0x09,0x09,0x04,
- 0x01,0x02,0x09,0x09,0x09,0x07,0x01,0x07,0x01,0x0a,0x03,0x05,0xe6,0x06,0xe6,0x03,
- 0x02,0x15,0x02,0xe7,0x10,0x01,0x53,0x03,0x05,0x01,0x01,0x07,0xe6,0xe5,0x02,0x03,
- 0x02,0x01,0x02,0xe5,0x07,0x01,0xe5,0x05,0x01,0xe5,0x02,0x02,0x01,0xe5,0x05,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x04,0xe5,0xe6,0x02,0x01,0xe5,0xe7,0xe5,0x02,
- 0x01,0x01,0x05,0x0d,0x09,0x05,0x1e,0x0d,0x01,0x57,0x01,0x09,0x03,0xe5,0x03,0x09,
- 0x23,0x14,0x13,0x0b,0x21,0x0c,0x1e,0x01,0x01,0x04,0x08,0x01,0x05,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe6,
- 0x06,0xe5,0x01,0x05,0xe6,0x06,0xe5,0x01,0x05,0xe5,0xe5,0x01,0x04,0xe6,0x01,0x03,
- 0x01,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x03,0xe7,0x01,0x05,
- 0xe5,0x05,0x01,0xe5,0x07,0xe6,0x06,0xe5,0x05,0xe7,0x02,0x02,0xe7,0x07,0xe5,0x07,
- 0xe5,0x0a,0x67,0x01,0x27,0xe5,0x14,0x09,0x09,0x09,0x13,0xe5,0x04,0x01,0x11,0x0c,
- 0xe5,0x07,0xe5,0x22,0xe5,0x66,0x27,0x01,0x0b,0x06,0x02,0x03,0x02,0x02,0x06,0x02,
- 0x09,0x09,0x06,0x02,0x07,0x01,0x06,0x05,0x04,0x0f,0x02,0x06,0x02,0xe5,0x12,0xe5,
- 0x03,0xe5,0x01,0xe5,0x0c,0x01,0x01,0x55,0x01,0x01,0x09,0x09,0x09,0x07,0xe5,0x06,
- 0x02,0x04,0x04,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x03,0xe6,0x02,0x0b,
- 0x01,0x01,0x19,0x02,0xe5,0x04,0x02,0xe5,0x14,0x06,0xe5,0xe6,0x0c,0x01,0x57,0x27,
- 0x01,0xe5,0x07,0x01,0x06,0xe5,0xe6,0x01,0xe8,0xe6,0x02,0x01,0xe5,0xe6,0x05,0x01,
- 0xe5,0x05,0x01,0x03,0xe8,0xe6,0x0c,0xe6,0x19,0x01,0xe5,0x05,0x01,0xe6,0x13,0x03,
- 0x01,0xe5,0x01,0x61,0x08,0x06,0x09,0x02,0x0a,0x05,0x02,0x08,0x02,0x06,0x02,0x09,
- 0x06,0xe5,0xe6,0x07,0xe5,0x01,0x02,0xe5,0xe6,0x07,0xe5,0x01,0x02,0xe5,0xe5,0x0f,
- 0x02,0x1a,0x1b,0xe5,0xe5,0x10,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0xe5,0x05,0x01,0x07,0x01,0xe6,0x04,0x01,0x03,0x03,0x01,0x03,0x03,
- 0x01,0x07,0x01,0x01,0x05,0x01,0xe5,0xe5,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0x03,
- 0x02,0xe5,0xe5,0x05,0xe5,0xe5,0x02,0x03,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0b,0xe5,0xe5,0x01,0x0e,
- 0x48,0x0c,0x13,0x02,0x02,0x02,0x04,0x05,0xe7,0x01,0x04,0xe6,0x03,0x03,0xe7,0x01,
- 0xe5,0x01,0x02,0xe5,0x02,0x03,0x07,0x02,0x01,0x06,0xe5,0x01,0x03,0x07,0x02,0x0c,
- 0x05,0xe5,0x02,0x06,0xe5,0x01,0xe5,0xe5,0x01,0xe6,0x01,0x03,0x05,0x15,0x01,0xe5,
- 0x3c,0x12,0x28,0xe5,0x02,0x0e,0x06,0x01,0x09,0x03,0x05,0x03,0x06,0x0b,0xe5,0x02,
- 0x09,0x0e,0x06,0x1d,0x14,0x12,0x02,0xe6,0x29,0x56,0x06,0x06,0x01,0x06,0x0e,0x01,
- 0x01,0x02,0x03,0x01,0x03,0x01,0x01,0x10,0x01,0x02,0x07,0x13,0x10,0x01,0x07,0x01,
- 0x24,0xe7,0x31,0x25,0x0f,0x07,0xe5,0x09,0x09,0x07,0xe5,0x09,0x01,0x03,0x01,0x01,
- 0x01,0x07,0x01,0xe5,0x02,0x02,0x04,0x01,0xe5,0xe5,0x03,0x06,0x07,0x13,0xe6,0x08,
- 0x1b,0x01,0x19,0x01,0xe5,0x44,0x21,0x06,0x06,0x03,0x01,0x12,0x06,0x03,0x04,0x08,
- 0x09,0x09,0x09,0x05,0x09,0x03,0x01,0x15,0x01,0x22,0x1b,0xe5,0x07,0x04,0xe5,0x02,
- 0x43,0x01,0x1b,0x0b,0x03,0xe6,0x02,0x04,0xe5,0x01,0x04,0xe8,0x02,0x03,0x05,0x03,
- 0x04,0x06,0x03,0x05,0x03,0x03,0x0b,0xe5,0x0b,0x03,0x09,0xe6,0x02,0x13,0x03,0x0f,
- 0x0e,0x0d,0x01,0x0f,0x10,0x2c,0x01,0x14,0x09,0x02,0x03,0x01,0x2e,0x02,0xe8,0x04,
- 0xe6,0x09,0x03,0x02,0xe6,0x19,0xe5,0xe5,0x37,0xe6,0x09,0x42,0x14,0x1d,0x12,0xe5,
- 0x03,0x0f,0x0a,0x09,0xe5,0x07,0x13,0x01,0x01,0x13,0x04,0x0a,0x08,0x0c,0x13,0x03,
- 0x53,0xe5,0x03,0x0d,0xe5,0x07,0xe5,0x03,0x1f,0x01,0x09,0xe7,0x04,0x02,0xe5,0x18,
- 0x02,0xe5,0x06,0x0a,0xe5,0x0d,0x01,0x0b,0xe5,0x07,0xe5,0x03,0x06,0x17,0x01,0xe6,
- 0x54,0x13,0x09,0x06,0x11,0x09,0x02,0x05,0x08,0xe5,0x07,0xe5,0x03,0x12,0x04,0x13,
- 0xe5,0x16,0x04,0x09,0x22,0x02,0x0f,0x44,0x02,0x07,0x08,0x04,0x04,0xe5,0x02,0x01,
- 0x01,0x01,0x09,0x09,0x08,0x03,0x07,0x09,0x0a,0x09,0x08,0x04,0x02,0x02,0x08,0x07,
- 0x03,0x08,0x08,0x01,0x07,0x03,0x20,0x01,0xe5,0x0e,0x3e,0x1a,0xe5,0x07,0x09,0x07,
- 0xe6,0x08,0x03,0x16,0x0e,0x09,0x04,0x09,0x02,0xe6,0x03,0x18,0x0e,0x09,0x0b,0x10,
- 0x01,0x02,0x0d,0xe5,0x3e,0x0e,0x0b,0x0a,0xe5,0x06,0x01,0x0f,0x01,0x08,0x1e,0xe5,
- 0x06,0xe6,0x10,0x1a,0x03,0xe5,0x38,0xe8,0x0a,0x3e,0xe5,0x39,0xe5,0x17,0xe5,0xe5,
- 0x02,0x02,0xe5,0xe5,0x02,0xe5,0x14,0xe5,0x04,0x13,0x08,0xe5,0x01,0xe5,0x03,0xe5,
- 0x01,0xe5,0x04,0x02,0xe5,0x04,0x0a,0x13,0xe7,0xe6,0x01,0x01,0x08,0xe6,0x35,0x01,
- 0x15,0x03,0x22,0x03,0x1b,0x02,0x01,0x04,0x02,0x1d,0x0d,0x01,0x03,0x0a,0x12,0x09,
- 0x06,0xe5,0x13,0x01,0x03,0x01,0xe5,0x03,0x05,0xe5,0xe5,0xe5,0x3c,0x11,0x22,0xe5,
- 0x20,0x09,0x06,0x01,0x06,0xe5,0x12,0xe5,0x1b,0x01,0x02,0x01,0x16,0x01,0xe5,0x14,
- 0x04,0x03,0x02,0x0a,0x01,0x72,0xe5,0x10,0xe5,0x0d,0x09,0x06,0xe5,0x1a,0xe5,0x1f,
- 0x1a,0x04,0x15,0x02,0xe6,0xe5,0x0e,0x04,0x01,0x7a,0x02,0xe5,0x01,0x07,0x04,0x04,
- 0x04,0x04,0x09,0x09,0x09,0x09,0x09,0x11,0x02,0x02,0x05,0x09,0x02,0x03,0x02,0xe5,
- 0x01,0x12,0x02,0x02,0x0a,0x03,0x02,0x01,0x4a,0x04,0x25,0x01,0xe5,0x03,0x0b,0x04,
- 0x03,0x05,0x03,0x0a,0x09,0x13,0x1b,0x05,0x14,0x04,0x12,0x05,0xe6,0x0b,0x01,0x55,
- 0x2b,0x09,0x01,0x07,0x09,0x03,0x05,0x01,0x07,0x01,0x11,0x01,0x1b,0x07,0x05,0x09,
- 0x05,0x19,0xe5,0x02,0x0d,0x01,0x7f,0x0a,0xe5,0xe5,0x06,0x03,0xe5,0x03,0x04,0x04,
- 0x01,0x07,0x01,0x0b,0xe5,0x03,0x01,0x0b,0xe7,0x0b,0x02,0x0b,0xe6,0x06,0x06,0x18,
- 0xe8,0x12,0xe5,0x4d,0x02,0x10,0x1d,0xe5,0x09,0xe5,0x04,0x09,0x0c,0xe5,0x0e,0x13,
- 0x13,0x02,0x06,0x09,0x25,0x14,0x4f,0xe5,0x07,0x0b,0x07,0xe5,0x04,0x0c,0xe5,0x09,
- 0xe5,0x03,0xe5,0x07,0xe5,0x1b,0xe5,0x11,0xe5,0x17,0x03,0xe5,0x07,0xe5,0x15,0x09,
- 0xe5,0xe7,0x0d,0x02,0xe5,0x04,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x01,0x02,0x09,
- 0x04,0xe6,0x01,0x06,0x02,0x09,0x09,0x04,0x01,0x01,0x02,0x09,0xe5,0x07,0xe7,0x05,
- 0x04,0x01,0x02,0x09,0xe5,0x02,0x01,0x02,0x09,0xe5,0x07,0x09,0xe5,0x07,0xe6,0x06,
- 0xe6,0x03,0x02,0x04,0x01,0x02,0x03,0x09,0x01,0xe7,0x01,0x59,0x09,0x09,0x06,0x02,
- 0x1d,0x29,0x31,0x1c,0xe5,0x08,0x0e,0x03,0xe5,0xe5,0x5a,0x09,0x08,0x09,0x1e,0x02,
- 0x0e,0x17,0x0f,0x13,0x0b,0x1f,0x09,0x15,0xe5,0xe5,0x6e,0x01,0x10,0xe5,0xe5,0x08,
- 0x0b,0x0a,0x01,0x01,0x05,0xe6,0xe5,0x03,0x04,0x04,0x0a,0x01,0x01,0x04,0x0a,0xe6,
- 0x0d,0x02,0x03,0x05,0xe6,0x06,0xe6,0x03,0x09,0x0e,0x03,0x01,0x0a,0x06,0x4f,0x05,
- 0x02,0x06,0x01,0xe5,0x04,0x02,0xe5,0x02,0x02,0x01,0xe6,0xe5,0x04,0x01,0x07,0x03,
- 0x09,0x09,0x07,0x01,0x09,0x02,0x06,0x09,0x09,0x11,0x0b,0x09,0x07,0x01,0x05,0x01,
- 0x01,0x0d,0xe7,0x0e,0x53,0x0a,0x02,0x01,0x11,0x01,0x04,0x09,0x03,0x2a,0x13,0x0b,
- 0x01,0x0d,0x1a,0x02,0x0b,0x03,0x0b,0xe7,0x0e,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,
- 0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x08,0xe6,0x05,0xe7,0x02,0x03,0xe6,0x07,0xe5,
- 0x07,0xe5,0x05,0xe7,0x07,0xe5,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x02,0x02,0xe7,0x02,
- 0x02,0xe7,0x01,0x05,0xe5,0x07,0xe5,0x09,0xe5,0x55,0x13,0x08,0xe5,0x11,0x09,0x0b,
- 0x14,0x08,0x09,0x13,0x28,0xe5,0x07,0x06,0x09,0x01,0x0e,0xe6,0xe5,0x11,0x43,0x06,
- 0x03,0x08,0x06,0x01,0xe5,0x11,0x02,0x06,0x01,0x07,0x03,0x04,0x05,0xe5,0x01,0x05,
- 0x03,0x02,0x01,0x09,0x0a,0xe5,0x01,0x04,0x0a,0xe5,0x01,0x0c,0x0c,0xe5,0x01,0x05,
- 0xe5,0x01,0x02,0x01,0x05,0x01,0x01,0x0f,0xe5,0x0e,0x61,0x01,0x13,0x12,0x07,0x09,
- 0xe5,0x03,0x03,0x0e,0x0e,0xe5,0x02,0x0e,0xe5,0x1b,0xe5,0x03,0x03,0xe5,0xe5,0x19,
- 0x03,0x0f,0x46,0x13,0x06,0x01,0xe5,0x11,0x1a,0x01,0x06,0x01,0xe5,0x08,0x1a,0x01,
- 0xe5,0x0f,0x01,0xe5,0x19,0x01,0xe5,0x05,0x01,0xe5,0x01,0x1a,0x01,0x12,0x45,0x04,
- 0x0d,0xe5,0x07,0x0f,0x02,0xe5,0x1d,0x06,0x04,0x12,0x2d,0x02,0x0a,0x26,0x03,0xe5,
- 0x01,0x01,0x0f,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x02,0x04,0x01,0x04,0x01,0xe5,0xe5,0xe5,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x02,0x04,0x01,0x09,0x01,0x06,0xe5,0xe6,0x05,0x01,0x07,0x01,0x07,0x01,0x02,0x03,
- 0xe5,0xe5,0x05,0xe5,0xe5,0x06,0x01,0x07,0x01,0x07,0x01,0x06,0xe7,0x06,0x01,0x07,
- 0x01,0x07,0x01,0x08,0x02,0xe7,0x0a,0x05,0x45,0x09,0x04,0x09,0x14,0xe6,0x11,0x05,
- 0x04,0x01,0xe6,0x05,0xe6,0x15,0x05,0xe5,0x18,0x02,0xe5,0x04,0xe6,0x0e,0x04,0xe5,
- 0x02,0x07,0x08,0x0e,0xe7,0x03,0x06,0x30,0x1e,0x06,0x07,0x09,0x0e,0x12,0x0d,0x08,
- 0xe5,0x05,0x11,0x05,0xe5,0x1c,0x0d,0x0e,0xe5,0x05,0x08,0x11,0x01,0x02,0x5c,0x09,
- 0x07,0x07,0x07,0x07,0x13,0x06,0x05,0xe5,0xe5,0x05,0x02,0x15,0x07,0x09,0x01,0x0c,
- 0x44,0x01,0x10,0x5f,0xe8,0x05,0x02,0x08,0xe5,0x01,0x06,0x19,0x13,0x0b,0x07,0x1a,
- 0x07,0x25,0xe6,0x0d,0x03,0x08,0x02,0x4b,0x0b,0x0d,0x0b,0x07,0x04,0x0e,0x05,0x53,
- 0x01,0x28,0x11,0xe6,0x18,0x21,0x18,0xe5,0x16,0x06,0x01,0x14,0x09,0x03,0x03,0x03,
- 0x06,0x0b,0x06,0x03,0x01,0x03,0x03,0x06,0x09,0x0c,0x07,0x15,0x07,0x21,0xe5,0xe5,
- 0x10,0x05,0xe5,0x34,0x04,0x04,0xe5,0x02,0x01,0x07,0x01,0xe5,0x05,0x01,0x0a,0x09,
- 0x09,0x08,0xe5,0xe5,0x09,0x0f,0xe5,0x06,0xe6,0x1e,0x1d,0x03,0x07,0x04,0x1e,0x01,
- 0x08,0x0c,0x3b,0x04,0x0b,0xe5,0x07,0x06,0x02,0x07,0x18,0x03,0x0b,0x0c,0x04,0x02,
- 0x04,0x10,0x09,0x0b,0x23,0x04,0x06,0x01,0x14,0xe5,0x0d,0x04,0x40,0x04,0x03,0xe5,
- 0x03,0x13,0x0e,0x01,0xe5,0x0e,0xe6,0x13,0x0f,0x05,0x06,0xe5,0x11,0xe5,0x18,0x02,
- 0xe5,0x07,0xe5,0x0a,0x17,0xe8,0x0f,0x03,0x41,0x08,0x27,0x11,0x01,0x0e,0x06,0x05,
- 0x15,0x01,0x02,0x03,0x0a,0x01,0x15,0x05,0x01,0x07,0x01,0x06,0x1c,0xe7,0x04,0x04,
- 0x02,0x01,0x45,0x04,0x03,0xe5,0x06,0x01,0x09,0x07,0x01,0x1c,0xe5,0xe5,0x02,0x09,
- 0x0d,0x01,0xe5,0x1b,0x01,0x08,0x31,0x17,0x01,0xe7,0x04,0x08,0x09,0x3a,0x0a,0x01,
- 0x11,0x09,0x1f,0x14,0xe5,0x06,0x04,0x02,0x01,0x13,0x39,0x01,0x17,0x04,0x05,0xe5,
- 0x02,0x03,0x09,0x44,0x01,0x0b,0x05,0x01,0x09,0x0b,0x10,0x02,0x17,0x05,0x0d,0x0c,
- 0x03,0x0a,0x27,0x09,0x16,0x03,0xe6,0x55,0x04,0x02,0xe5,0x0e,0x16,0xe5,0x13,0xe5,
- 0x01,0xe5,0x0a,0x03,0x16,0xe5,0x04,0x0c,0xe5,0x04,0x05,0x10,0xe5,0x04,0x02,0xe5,
- 0x04,0xe5,0x08,0x13,0xe7,0xe6,0x01,0x01,0x0d,0x40,0xe5,0x07,0x02,0x10,0x17,0x14,
- 0x0d,0x01,0xe5,0x01,0x1d,0x13,0x06,0x16,0x09,0x1c,0x01,0x04,0x01,0x04,0x0b,0x3f,
- 0xe5,0x0a,0x13,0x3d,0x3b,0x3d,0x04,0xe5,0x01,0x02,0x0b,0x02,0x01,0xe5,0x3a,0x13,
- 0x31,0x18,0x06,0x08,0xe5,0x29,0x24,0xe5,0x18,0x02,0xe5,0x01,0x05,0x0a,0x0b,0x34,
- 0x03,0xe5,0xe6,0x01,0xe5,0x05,0xe7,0x08,0x01,0x04,0x01,0x1c,0x03,0x02,0x03,0x01,
- 0x05,0x04,0x04,0x02,0x06,0x13,0x13,0x04,0x18,0x09,0x0a,0x02,0x11,0xe5,0xe6,0x01,
- 0x02,0x16,0x39,0x06,0x03,0x01,0x02,0x02,0x01,0x01,0x02,0x2a,0x02,0x02,0x02,0x0a,
- 0x03,0x0a,0x2c,0x03,0x23,0x08,0x0e,0x03,0x01,0xe6,0x03,0x0a,0x06,0x01,0x3e,0x18,
- 0x04,0x23,0x02,0x0e,0x01,0xe5,0x02,0xe5,0x03,0x01,0x07,0x01,0x0c,0x18,0x17,0x09,
- 0x0d,0x11,0x01,0x01,0xe5,0x0f,0x06,0x01,0x3c,0xe5,0x42,0x02,0x0a,0xe5,0xe5,0xe6,
- 0x03,0x04,0x01,0x07,0x01,0x0b,0xe5,0x11,0xe5,0x03,0x10,0x01,0x05,0x09,0x21,0xe6,
- 0x04,0x0a,0x02,0x02,0x3f,0x02,0x02,0x41,0x02,0x06,0x09,0x1d,0x13,0x1d,0x09,0x0c,
- 0xe5,0x12,0xe5,0x01,0x10,0x0d,0x37,0x03,0x09,0x09,0x06,0x24,0x09,0x03,0xe5,0x07,
- 0xe5,0x12,0x02,0x05,0xe5,0x11,0xe5,0x1b,0xe5,0x07,0xe5,0x08,0x16,0xe9,0xe5,0x06,
- 0x01,0x02,0xe5,0xe5,0x05,0x03,0x05,0x09,0x09,0x09,0x09,0x09,0xe5,0x03,0xe5,0x01,
- 0x05,0x03,0x02,0x02,0x03,0x09,0x09,0x09,0x06,0x04,0xe5,0x07,0xe5,0x07,0xe6,0x01,
- 0x01,0x02,0x09,0x05,0x03,0xe5,0x07,0x09,0xe5,0x07,0x09,0x09,0xe6,0x06,0xe6,0x01,
- 0x01,0x02,0x09,0x0d,0x01,0xe5,0xe5,0x01,0x09,0x09,0x42,0x02,0x09,0x2e,0x02,0x3d,
- 0x3b,0x18,0x02,0x01,0x01,0x09,0x09,0x47,0x08,0x31,0x12,0x27,0x01,0x11,0x29,0x1e,
- 0xe8,0x0c,0x01,0xe6,0x04,0x01,0x3b,0xe6,0x0b,0x02,0x01,0x04,0x0e,0x1c,0xe5,0x01,
- 0x09,0x01,0x07,0xe6,0x05,0x09,0x0a,0x01,0x01,0x04,0x0a,0x01,0x1b,0xe6,0x06,0xe6,
- 0x03,0x1b,0xe7,0x0c,0x01,0xe5,0x07,0x01,0x39,0x01,0x04,0x03,0x06,0x01,0x01,0x02,
- 0x06,0x01,0x05,0xe5,0x1b,0x0d,0x09,0x09,0x07,0x01,0x01,0x07,0x05,0x01,0xe5,0x09,
- 0x0c,0x10,0x09,0x05,0x01,0x01,0x01,0x0d,0xe5,0x01,0xe5,0x02,0x01,0xe5,0x0b,0x02,
- 0x0c,0x14,0x23,0x0c,0xe5,0x01,0x01,0x09,0x06,0x02,0x04,0x18,0x06,0x13,0x04,0x1b,
- 0x01,0x04,0x27,0x0e,0x19,0x01,0xe5,0x0c,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x01,0x05,
- 0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0xe5,0x05,0xe7,0x05,0xe7,0x02,0x03,0xe6,
- 0x07,0xe5,0x07,0xe5,0x05,0xe8,0xe5,0x04,0xe5,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x02,
- 0x02,0xe7,0x02,0x02,0xe7,0x06,0xe6,0x07,0xe7,0x02,0x02,0x02,0x0d,0x01,0x28,0x2e,
- 0x01,0x07,0x0b,0x0a,0x09,0x1f,0x08,0x09,0x11,0x01,0xe5,0x1c,0xe5,0x07,0x09,0x06,
- 0x08,0x0f,0x03,0x01,0x0d,0x01,0x07,0x03,0x3c,0x0e,0x01,0x02,0x04,0x04,0x06,0x0a,
- 0x12,0x07,0xe5,0x03,0x01,0x02,0x04,0x04,0x05,0x06,0x02,0x08,0x01,0x02,0xe5,0xe5,
- 0x0a,0x01,0x02,0x18,0x01,0x02,0x04,0x01,0x02,0xe5,0xe5,0x01,0x01,0x0c,0xe5,0x03,
- 0xe5,0x01,0xe6,0x0b,0x01,0x28,0x26,0x09,0x09,0x09,0x14,0x07,0x06,0xe5,0x08,0xe5,
- 0x03,0x03,0x04,0x18,0xe5,0xe5,0xe6,0x0c,0xe5,0x17,0x03,0xe5,0x03,0x03,0xe5,0x02,
- 0x11,0x08,0xe6,0x03,0x08,0x01,0x28,0x2e,0x01,0x09,0x09,0x0a,0x09,0x0f,0x01,0x06,
- 0x01,0xe5,0x08,0x1a,0x01,0xe6,0xe6,0x0b,0x01,0xe5,0x0c,0x0c,0x01,0xe5,0x05,0x01,
- 0xe5,0x06,0x0d,0x03,0x01,0x02,0xe6,0x51,0x01,0xe5,0x07,0xe5,0x0f,0x02,0x14,0x03,
- 0x06,0x06,0x01,0xe6,0x0e,0x3b,0xe5,0xe5,0x25,0xe5,0x17,0x02,0x03,0xe5,0x0b,0x01,
- 0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x04,0x02,
- 0x01,0x07,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,
- 0x06,0x02,0xe6,0x06,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0xe6,0xe5,0x04,0x01,0x02,
- 0x04,0x01,0x01,0x05,0x01,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x03,0x06,0xe6,0xe5,0x03,0x0a,0xe5,0x01,0x07,0x1b,0x33,0x05,0xe5,0x01,
- 0x04,0x0c,0xe6,0x03,0x02,0xe5,0x06,0x0c,0xe5,0x07,0xe6,0x03,0x09,0x04,0x03,0x03,
- 0xe5,0x07,0xe5,0x07,0xe5,0x06,0x14,0xe5,0x07,0xe5,0x1c,0x07,0xe5,0x0b,0x08,0x4e,
- 0x12,0x0d,0xe6,0x01,0x03,0x07,0xe5,0x0a,0x01,0x07,0xe5,0x05,0x15,0x01,0xe5,0x07,
- 0xe5,0xe6,0x02,0xe5,0x05,0x0a,0x0a,0xe5,0x07,0xe5,0x05,0x0b,0x10,0xe5,0xe7,0x01,
- 0x02,0x09,0x26,0x23,0x01,0x34,0x15,0x02,0x06,0x22,0x0e,0x1d,0x05,0x03,0x23,0xe5,
- 0xe5,0x07,0x06,0x09,0x01,0x37,0x09,0x01,0x01,0x04,0xe6,0x07,0xe6,0x28,0x0d,0x6c,
- 0x07,0x0f,0xe6,0x08,0x01,0x01,0x48,0x02,0x03,0x02,0x11,0x02,0x23,0xe5,0x10,0x1e,
- 0x3c,0x26,0xe7,0x16,0xe6,0x16,0x13,0x12,0x06,0xe5,0x06,0xe5,0x13,0x01,0x0a,0x06,
- 0x01,0x04,0x01,0x0f,0x04,0xe5,0x01,0x0a,0x05,0x0f,0x05,0x01,0x1a,0x16,0x20,0xe6,
- 0x0f,0x06,0x01,0x0a,0x1d,0x0e,0x15,0x01,0x02,0x0d,0x1b,0x03,0x03,0x09,0x1a,0x01,
- 0xe5,0x54,0x11,0x01,0x01,0x01,0x08,0x07,0x4d,0xe5,0xe5,0x09,0x09,0x07,0x18,0x27,
- 0x04,0x0d,0x5d,0x05,0x0e,0x1d,0x3e,0xe5,0x08,0x05,0x02,0xe6,0x05,0xe7,0x05,0xe5,
- 0x01,0x02,0x04,0xe5,0x01,0x06,0x09,0x07,0x01,0xe5,0x07,0x01,0x07,0xe5,0x06,0x01,
- 0x33,0x19,0xe6,0x01,0x0e,0x46,0x18,0xe5,0x08,0x0b,0x08,0x07,0x02,0x08,0x09,0x09,
- 0x0b,0x11,0x01,0x0a,0x49,0xe5,0x01,0x03,0x15,0x22,0x22,0xe5,0x03,0xe5,0x01,0x09,
- 0x18,0x0d,0x06,0x06,0x02,0x05,0x04,0x0d,0x05,0x0b,0x0d,0x2d,0x1d,0xe7,0x01,0x15,
- 0x01,0x43,0x09,0x09,0x2c,0x0d,0x02,0xe6,0x12,0x04,0x60,0x01,0xe7,0x16,0xe5,0x1f,
- 0x0b,0x1a,0x06,0xe5,0x0a,0x1e,0x06,0x14,0xe5,0x1f,0x01,0x14,0x0b,0x09,0x04,0x04,
- 0x29,0xe6,0x48,0xe7,0x0a,0xe5,0x02,0x13,0x09,0x01,0x01,0xe5,0x05,0x02,0x01,0x02,
- 0x01,0x01,0xe5,0x07,0x01,0xe5,0x05,0x12,0xe5,0x07,0xe5,0x01,0xe5,0x04,0xe5,0x07,
- 0x20,0x01,0x04,0x09,0x1e,0xea,0x01,0x01,0x41,0x01,0x11,0xe5,0x0a,0xe5,0x14,0x02,
- 0xe5,0x04,0x02,0xe5,0x04,0x03,0x01,0x05,0x02,0xe5,0x04,0x13,0x09,0x03,0x01,0x04,
- 0x02,0x01,0x03,0x20,0xe5,0x05,0x02,0x01,0x04,0x1b,0x01,0x04,0x01,0x04,0x0f,0xe5,
- 0x36,0x0f,0x01,0x09,0x42,0x01,0x02,0x07,0x01,0x6d,0x05,0xe7,0x01,0x11,0x45,0x02,
- 0x01,0x07,0x43,0xe5,0x01,0x06,0x02,0x01,0x6f,0x02,0x01,0x01,0x15,0x08,0x01,0x3a,
- 0x03,0x02,0x01,0x01,0x09,0x0f,0x09,0x09,0x0b,0x09,0x07,0x03,0xe6,0x09,0x01,0x0c,
- 0x09,0x09,0x1d,0x09,0x1f,0xe5,0x01,0x02,0x18,0x01,0x02,0x3c,0x01,0x02,0xe5,0x01,
- 0x04,0x01,0x01,0xe5,0x3d,0x02,0x02,0x02,0x04,0x05,0x01,0x01,0x60,0x02,0x02,0x02,
- 0xe6,0x17,0x43,0x01,0x20,0x01,0x08,0xe5,0x11,0xe5,0x09,0xe5,0x0b,0x01,0x07,0x01,
- 0x22,0x1a,0x02,0x06,0x02,0x01,0x1a,0xe5,0xe7,0x16,0x45,0x01,0x1f,0xe8,0x04,0xe5,
- 0xe5,0xe5,0x03,0xe5,0x04,0x05,0x01,0x01,0x04,0xe5,0xe5,0xe6,0x01,0x06,0x01,0x07,
- 0x01,0x0b,0xe5,0x07,0xe7,0x05,0xe5,0xe6,0x19,0x01,0xe6,0x04,0xe6,0x1d,0x01,0xe5,
- 0x04,0x71,0x06,0x09,0x09,0x0b,0x09,0x09,0x1d,0x09,0x09,0x04,0x18,0x09,0x21,0xe8,
- 0x1d,0x41,0x19,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x0b,0x19,0xe5,
- 0x07,0xe5,0x07,0xe5,0x1b,0xe5,0x07,0xe5,0x23,0xe5,0x0d,0x09,0x05,0x03,0x09,0x09,
- 0x09,0x09,0x09,0x04,0x01,0x02,0xe5,0x07,0x02,0x01,0x01,0x02,0x09,0xe5,0x07,0xe5,
- 0x07,0xe5,0x06,0x02,0xe6,0x06,0xe5,0x07,0xe5,0x03,0xe5,0x01,0x02,0x06,0x09,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0x09,0x09,0xe6,0x06,0xe6,0x06,0x09,0x0d,0xe5,0xe5,0xe5,
- 0x01,0x13,0x45,0x13,0x3d,0x06,0x02,0x72,0x02,0x02,0xe5,0x14,0x43,0x14,0x10,0x09,
- 0x09,0x06,0x0e,0x03,0x08,0x1a,0x09,0x09,0x48,0xe6,0xe5,0x13,0x02,0x01,0x43,0x01,
- 0x01,0x0c,0x02,0x01,0x0a,0x01,0x01,0x05,0xe6,0x06,0x01,0x09,0xe6,0x06,0xe6,0x06,
- 0x08,0x14,0xe6,0x03,0x01,0xe7,0x06,0xe6,0x1a,0xe6,0x06,0xe6,0x14,0x09,0xe8,0x18,
- 0x01,0x41,0x02,0xe5,0x03,0x03,0x06,0x01,0xe5,0x09,0x09,0x09,0x0b,0x09,0x0f,0x02,
- 0x14,0x05,0x01,0xe6,0x08,0x1d,0x09,0x19,0xe5,0x02,0x02,0x02,0xe5,0x5b,0x01,0x11,
- 0x01,0x15,0x0b,0x04,0x04,0x11,0x09,0x03,0x09,0x06,0x03,0x02,0x01,0x01,0x08,0x4b,
- 0x01,0x15,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe6,0x01,0x04,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x05,0xe7,0x05,0xe7,0x08,
- 0xe6,0x02,0x02,0xe7,0x01,0x05,0xe6,0x06,0xe5,0x07,0xe5,0x05,0xe8,0xe5,0x03,0xe6,
- 0x05,0xe7,0x07,0xe5,0x07,0xe5,0x02,0x02,0xe7,0x02,0x02,0xe7,0x07,0xe5,0x07,0xe6,
- 0x03,0x01,0x02,0xe5,0x16,0x01,0x3c,0x06,0x01,0x09,0x07,0x01,0xe5,0x08,0xe5,0x27,
- 0xe5,0x07,0x08,0x24,0x03,0x1d,0xe5,0x07,0xe5,0x19,0x05,0xe8,0x18,0x02,0x40,0x01,
- 0x02,0x06,0x07,0x02,0x0b,0x09,0xe5,0x01,0x05,0xe5,0x01,0x07,0x01,0x01,0x05,0xe5,
- 0x01,0x03,0x05,0xe5,0x17,0xe5,0x01,0x05,0x09,0xe5,0x01,0x19,0xe5,0x01,0x05,0xe5,
- 0x01,0x14,0xe5,0x03,0xe5,0x01,0xe5,0x55,0x06,0x01,0x09,0x07,0x01,0x18,0xe5,0x07,
- 0xe5,0x01,0x11,0xe5,0x02,0x09,0x18,0xe5,0x07,0x05,0x03,0xe5,0x1b,0xe5,0x07,0xe5,
- 0x14,0x06,0x03,0x56,0x06,0x01,0xe5,0x07,0x07,0x01,0xe5,0x15,0x01,0xe5,0x05,0x01,
- 0xe5,0x08,0x01,0x06,0x01,0xe6,0x01,0x03,0x01,0xe5,0x18,0x01,0xe5,0x0f,0x01,0xe5,
- 0x19,0x01,0xe5,0x05,0x01,0xe5,0x18,0x01,0xe5,0xe7,0x19,0x44,0x48,0xe5,0x03,0x03,
- 0x0c,0x14,0x3b,0x16,0x08,0xe5,0x0b,0x04,0xe6,0x06,0x01,0x07,0x01,0x07,0x01,0x01,
- 0x05,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,
- 0x01,0x02,0x04,0x01,0x07,0x01,0xe5,0x05,0x01,0xe5,0x04,0xe5,0xe6,0x07,0x01,0x07,
- 0x01,0x03,0x03,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,
- 0x01,0x01,0xe5,0x03,0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0x02,
- 0x04,0x01,0x0a,0xe5,0xe6,0x54,0xe5,0x05,0x18,0x07,0xe5,0x10,0xe5,0x04,0x01,0x18,
- 0x17,0x03,0xe5,0x11,0xe5,0x03,0x17,0xe5,0x07,0xe5,0x21,0x02,0xe5,0x1d,0x35,0x0b,
- 0x13,0xe5,0x02,0xe5,0x06,0x09,0x01,0x0e,0x02,0x02,0x27,0xe5,0x07,0x04,0x04,0x01,
- 0x10,0x0a,0xe5,0xe5,0x05,0xe5,0x07,0x05,0x0d,0x01,0x04,0x01,0xe5,0xe5,0x52,0x0f,
- 0x1c,0x10,0xe5,0x16,0x24,0x12,0x10,0x17,0x25,0xe5,0x2e,0x13,0x0b,0x0d,0x01,0x09,
- 0x07,0xe6,0x1e,0x14,0x03,0x04,0x01,0x23,0xe6,0x09,0x19,0x33,0x01,0x09,0x53,0x01,
- 0x05,0x09,0x05,0x21,0xe5,0x06,0x58,0x33,0xe7,0x08,0x08,0x28,0x0f,0xe5,0xe5,0x0d,
- 0x01,0x13,0x09,0x0a,0x01,0x06,0xe5,0x05,0xe5,0x02,0x0c,0x03,0x16,0x10,0x05,0x09,
- 0x0b,0x09,0x07,0x2a,0x01,0x0d,0x0f,0x2b,0x13,0x13,0x09,0x13,0x2c,0xe5,0x11,0x09,
- 0x02,0x02,0x03,0x15,0x2e,0x04,0x03,0x03,0x0b,0x02,0x83,0x02,0x14,0x10,0x12,0x03,
- 0x3b,0x1b,0x01,0x01,0x01,0x08,0x29,0x09,0xe5,0x07,0x01,0x07,0x09,0x0a,0xe6,0x10,
- 0xe5,0x12,0x08,0xe5,0x02,0x01,0x03,0x28,0x01,0x0f,0x02,0x1c,0xe6,0x2c,0xe7,0x27,
- 0x16,0x0c,0x1d,0x10,0x01,0x14,0x01,0xe5,0x02,0x1e,0x04,0x26,0x1b,0x2f,0xe6,0x0e,
- 0x1e,0x1c,0x13,0x13,0x09,0x05,0x0d,0x0c,0xe5,0xe5,0x08,0x09,0x13,0x02,0x03,0x3b,
- 0x22,0xe5,0xe6,0x0d,0x01,0x39,0x13,0xe5,0x03,0x08,0x04,0x09,0x13,0x10,0x2d,0x5c,
- 0x02,0xe6,0x0c,0xe5,0x22,0x19,0x03,0x06,0x08,0xe5,0x11,0x09,0x13,0xe5,0x01,0x08,
- 0x09,0x33,0x07,0x02,0x1a,0x2b,0x02,0xe6,0x07,0xe5,0x03,0xe6,0x17,0x02,0xe5,0x12,
- 0xe5,0x08,0x01,0xe5,0x04,0x02,0x01,0x04,0x05,0x03,0x02,0x01,0x02,0x01,0xe5,0x07,
- 0x09,0xe5,0x0a,0x01,0x02,0x03,0x01,0xe5,0x05,0x02,0xe5,0x04,0x16,0x01,0x04,0x07,
- 0x0b,0x16,0x01,0x04,0x09,0x1e,0xe5,0x01,0xe6,0x01,0x01,0x08,0xe6,0x1a,0x03,0x0c,
- 0xe5,0x10,0xe5,0x07,0xe5,0x05,0x05,0x02,0x03,0x01,0x04,0x08,0x03,0xe5,0x0b,0x05,
- 0xe5,0x02,0x04,0xe6,0x05,0x05,0xe5,0x01,0x16,0x01,0x04,0x13,0x15,0xe5,0x05,0x02,
- 0xe5,0x04,0x1b,0x01,0x02,0x01,0xe6,0x03,0x05,0x01,0xe5,0xe5,0xe5,0x18,0x13,0x01,
- 0x01,0x02,0xe5,0x02,0x02,0x08,0x02,0xe5,0x02,0x02,0x04,0x04,0x01,0xe5,0x02,0x04,
- 0x01,0x02,0x02,0x08,0x07,0x09,0x03,0x11,0x77,0x05,0x01,0xe5,0x01,0x0a,0x01,0x1b,
- 0x10,0x02,0x01,0x04,0x04,0x0e,0x04,0x07,0x06,0x04,0x04,0x04,0x0d,0xe5,0x0d,0x13,
- 0x7b,0x02,0xe5,0xe6,0x0c,0x01,0x04,0x01,0x14,0x11,0x06,0x02,0x03,0x02,0x01,0x01,
- 0x05,0x02,0x03,0x02,0x01,0x01,0xe5,0x03,0x02,0x03,0x02,0x02,0x03,0x02,0x01,0x01,
- 0x05,0x09,0xe5,0x01,0x02,0x04,0x09,0x06,0x02,0x01,0x01,0x19,0x13,0x1d,0x09,0x19,
- 0x06,0xe7,0x01,0x0a,0x01,0x01,0x02,0x01,0x14,0x03,0x13,0x09,0x01,0x02,0x0e,0x01,
- 0x02,0xe5,0x02,0x09,0x01,0x02,0x04,0x04,0x0e,0x02,0x01,0x02,0x03,0x0f,0x03,0x01,
- 0x02,0x72,0x04,0x01,0xe5,0x0b,0x01,0x1b,0x13,0x01,0x01,0x07,0x01,0x02,0x01,0x04,
- 0x02,0x04,0x01,0x02,0x01,0xe5,0x02,0x02,0x04,0x01,0x02,0x01,0x02,0x01,0x02,0xe6,
- 0x06,0x04,0x04,0x01,0x02,0x04,0x01,0x01,0x06,0xe5,0x03,0x01,0x33,0xe5,0x19,0x09,
- 0x02,0x01,0x1a,0xe5,0xe7,0xe6,0x09,0x01,0x1b,0x13,0x01,0x02,0x09,0x01,0x07,0x02,
- 0x06,0x01,0x02,0x04,0xe7,0x05,0xe6,0x06,0xe6,0x05,0xe5,0xe6,0x02,0x01,0xe5,0xe5,
- 0xe5,0xe6,0x02,0xe5,0xe5,0x05,0xe5,0xe5,0xe6,0x03,0x01,0x01,0x18,0xe5,0x11,0xe5,
- 0xe5,0x1a,0x09,0xe6,0x1f,0xe5,0x12,0xe5,0x2c,0x09,0x02,0xe6,0x03,0x09,0x04,0x04,
- 0x09,0x02,0xe5,0x04,0x09,0x04,0x04,0x02,0xe5,0x06,0x04,0x04,0x09,0x1d,0x13,0x04,
- 0x18,0x09,0x25,0x14,0x2d,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,
- 0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x01,0xe5,0x05,0xe5,0x07,0xe5,0x07,0xe5,
- 0x1b,0xe5,0x11,0xe5,0x1b,0xe5,0x07,0xe5,0x1f,0x01,0xe7,0x0d,0x03,0xe5,0xe5,0x01,
- 0x06,0x02,0x09,0x02,0x06,0x09,0xe6,0x01,0x01,0x02,0xe6,0x06,0xe6,0x01,0x01,0x02,
- 0xe6,0xe5,0x04,0xe6,0x01,0x01,0x02,0xe7,0xe5,0xe5,0x01,0xe6,0xe5,0x04,0xe5,0x04,
- 0x02,0xe5,0x04,0x01,0x02,0xe5,0x07,0xe5,0x07,0xe6,0x06,0x09,0x09,0xe5,0x07,0x09,
- 0xe5,0x07,0x09,0x09,0xe6,0x06,0xe6,0x06,0x09,0x0d,0x03,0xe5,0x01,0x13,0x08,0xe5,
- 0x26,0x13,0x13,0x1c,0xe5,0x07,0xe5,0x91,0x05,0xe5,0x13,0x08,0x29,0x11,0x13,0x1b,
- 0x03,0x05,0x03,0x02,0x04,0x09,0x27,0x13,0x49,0x01,0xe5,0x16,0x08,0x02,0x1e,0xe6,
- 0xe5,0x04,0xe6,0x03,0x01,0xe5,0xe5,0xe5,0x04,0xe6,0xe5,0x04,0x01,0x01,0x05,0xe6,
- 0x06,0xe6,0x06,0xe6,0x06,0xe6,0xe5,0x05,0xe7,0xe5,0x04,0xe6,0xe5,0x04,0xe6,0x14,
- 0x05,0xe6,0x10,0xe6,0x14,0x05,0xe6,0xe5,0x04,0xe6,0x1e,0xe6,0xe5,0x01,0x0e,0x07,
- 0x01,0x05,0x02,0x1e,0x08,0xe5,0x04,0x01,0xe6,0x07,0xe5,0x08,0x08,0xe5,0x07,0xe5,
- 0x08,0x08,0xe5,0x06,0x02,0xe5,0x08,0x09,0x1d,0x13,0x1d,0x09,0x19,0xe5,0x02,0x01,
- 0x03,0xe5,0x0d,0x07,0x05,0x05,0x1e,0x05,0x03,0x06,0x01,0x03,0x02,0x06,0x09,0x07,
- 0x02,0x06,0x01,0x07,0x02,0x05,0x02,0x02,0x01,0x02,0x01,0x30,0x13,0x02,0x1d,0x28,
- 0x01,0xe6,0x0e,0x05,0xe5,0x01,0x05,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe6,0xe5,0x04,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x01,0x06,0xe6,0x02,0x02,0xe7,0x02,0x03,0xe6,0x07,0xe5,0x07,0xe5,0x05,
- 0xe7,0x07,0xe5,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x02,0x02,0xe7,0x02,0x02,0xe7,0x07,
- 0xe5,0x07,0xe6,0x03,0x01,0xe6,0xe5,0x08,0x19,0x1e,0x06,0x01,0xe5,0x08,0xe5,0x04,
- 0x01,0xe6,0x07,0xe5,0x04,0x01,0x07,0x01,0xe5,0x08,0x08,0xe5,0x09,0xe5,0x04,0x03,
- 0xe5,0x03,0x03,0xe5,0x03,0x1d,0x0d,0xe5,0x03,0x17,0x05,0x03,0xe5,0x03,0x15,0x05,
- 0x01,0xe6,0x03,0x0d,0x09,0x04,0x22,0x04,0x04,0x09,0x04,0x04,0x09,0x04,0x04,0x04,
- 0x04,0x09,0x04,0x01,0x02,0x06,0x04,0x03,0x05,0xe5,0xe6,0x04,0x03,0x19,0xe5,0xe6,
- 0x0e,0xe5,0xe6,0x16,0x01,0xe5,0xe6,0x04,0xe5,0xe6,0x13,0xe5,0x03,0xe6,0xe7,0x0d,
- 0x13,0x1e,0x08,0xe5,0x11,0x13,0x09,0xe5,0x08,0x09,0x07,0x02,0xe5,0x02,0x09,0xe5,
- 0x07,0x1d,0xe5,0x11,0xe5,0x1b,0xe5,0x07,0xe5,0x14,0x06,0xe6,0xe5,0x08,0x05,0x11,
- 0x6d,0x0b,0x06,0x08,0x27,0x13,0x1d,0x09,0x1c,0x01,0x03,0x03,0x09,0x02,0x1a,0x1e,
- 0x01,0x0e,0x02,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x11,0x01,0x1a,0x05,0xe5,0x2f,
- 0x0c,0x10,0x09,0x1a,0x06,0xe7,0x01,0x02,0x05,0x02,0x02,0x01,0x02,0x04,0x01,0x01,
- 0x05,0x01,0x04,0x02,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0xe6,0x06,0x01,
- 0x07,0xe6,0x06,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0xe6,0x08,0x01,
- 0x07,0x01,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x02,
- 0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x0c,0x01,0x03,
- 0x09,0x1f,0xe5,0x11,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,
- 0x03,0x03,0xe5,0x01,0x05,0xe6,0x07,0x07,0x02,0x09,0xe5,0x02,0x04,0xe5,0x1b,0xe5,
- 0x11,0xe5,0x03,0x0a,0x0c,0xe5,0x07,0xe5,0x20,0xe5,0x01,0xe5,0x29,0x06,0x0c,0x06,
- 0x03,0x08,0x03,0x02,0x02,0x01,0x07,0x01,0x07,0x01,0x04,0x03,0x07,0x01,0xe5,0x02,
- 0x02,0x01,0x02,0x02,0x03,0x03,0x08,0x02,0x02,0x03,0x1d,0x10,0x02,0xe5,0x1b,0x09,
- 0x10,0x10,0x04,0x01,0xe5,0x01,0x27,0x13,0x09,0x09,0x1f,0x04,0x01,0x07,0x11,0x01,
- 0x03,0x07,0xe5,0x01,0x06,0x0f,0x0d,0x13,0x1d,0x09,0x1e,0x05,0xe5,0x01,0x17,0xe6,
- 0x2e,0xe6,0x06,0xe7,0x05,0xe6,0x10,0xe6,0x06,0xe6,0x10,0xe6,0x1f,0x17,0x08,0x0a,
- 0x50,0x01,0xe5,0x17,0x16,0x15,0x03,0x05,0x0d,0x05,0x08,0xe5,0x02,0x09,0x07,0x0b,
- 0x04,0x04,0x05,0x32,0xe5,0x59,0x01,0x01,0x0b,0x06,0x17,0x10,0x0e,0xe5,0x06,0x0a,
- 0xe5,0x12,0x03,0x0e,0xe5,0x02,0x0d,0x04,0x01,0x0a,0x08,0x11,0x12,0xe5,0xe5,0x1f,
- 0x07,0x09,0x1f,0xe7,0x2f,0x0e,0x04,0x04,0x01,0x0a,0x03,0x02,0x01,0x04,0x01,0x0a,
- 0x02,0x09,0x06,0x0d,0x01,0x09,0x03,0x1a,0x18,0x57,0xe7,0x05,0x01,0x20,0x15,0x12,
- 0x09,0x28,0x13,0x05,0x09,0x34,0xe5,0x46,0x06,0x01,0x01,0x17,0xe5,0x2e,0x07,0x0c,
- 0xe6,0x02,0x04,0x09,0x26,0x08,0x0d,0x08,0xe6,0x06,0xe5,0x07,0xe5,0x12,0x1c,0xe6,
- 0x29,0x02,0x01,0xe5,0x18,0x46,0x08,0x0a,0xe5,0x08,0x0e,0x0a,0x17,0x05,0x03,0x0a,
- 0x04,0x04,0x03,0x0f,0x1b,0x2e,0x01,0xe5,0x17,0x29,0x13,0x0d,0x04,0x04,0x04,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x08,0x06,0x09,0x10,0x07,0x09,0xe6,0x07,0x03,0x09,0x0f,
- 0x36,0xe9,0x66,0xe5,0x01,0x06,0x09,0x09,0x0c,0x0b,0x09,0x07,0x17,0x02,0x01,0x04,
- 0x03,0xe5,0xe5,0x19,0xe5,0x34,0x01,0x01,0xe5,0xe5,0x02,0x03,0x07,0x31,0xe5,0x0c,
- 0x04,0x0c,0x01,0x01,0x07,0x03,0x01,0x03,0x01,0x07,0x01,0x0d,0x03,0x01,0x07,0x09,
- 0x1f,0xe5,0x07,0x02,0x06,0x04,0x02,0x01,0x0b,0x1b,0x09,0x09,0x08,0xe9,0x25,0xe5,
- 0x03,0xe5,0x01,0x01,0x03,0xe5,0x04,0x01,0xe6,0x04,0x06,0xe5,0xe5,0xe7,0x06,0x04,
- 0xe5,0xe5,0xe5,0xe8,0x05,0xe5,0x05,0x11,0x01,0x0c,0xe5,0xe6,0x05,0x02,0xe5,0x04,
- 0x01,0xe5,0x05,0x13,0x05,0x01,0x0b,0x16,0x01,0x04,0x09,0x02,0xe5,0x19,0xe6,0x01,
- 0xe5,0x01,0x01,0x2c,0xe5,0x08,0x01,0xe5,0x08,0x06,0x01,0xe6,0x01,0x0c,0xe5,0xe5,
- 0x01,0x03,0x01,0xe5,0x01,0x06,0xe5,0x11,0x0f,0x02,0x01,0x04,0x02,0xe5,0x04,0x15,
- 0xe5,0x0b,0xe6,0x02,0xe5,0x1b,0xe5,0x05,0x02,0x01,0x04,0x02,0x01,0x16,0x01,0x02,
- 0x01,0xe6,0x03,0x2a,0x09,0x05,0x03,0x05,0x09,0x01,0x03,0xe5,0x01,0x01,0x07,0x13,
- 0x01,0x07,0x01,0x04,0xe5,0xe5,0xe5,0x02,0xe5,0x03,0x01,0x1f,0x13,0x02,0xe5,0xe5,
- 0xe5,0x0a,0x43,0x04,0xe5,0x01,0x02,0x3c,0x09,0x09,0x09,0x01,0x07,0x05,0xe5,0x01,
- 0x06,0xe5,0xe5,0xe5,0x06,0x01,0x04,0x02,0x01,0x04,0xe5,0x02,0x01,0x36,0x02,0x01,
- 0x51,0x02,0x02,0xe5,0x3e,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x04,0x09,0xe5,
- 0x01,0x02,0x03,0x02,0xe5,0xe5,0x04,0x01,0x1a,0x09,0x09,0x13,0x02,0x01,0x01,0x03,
- 0x02,0x05,0x1d,0x09,0x18,0x06,0xe8,0x01,0x02,0x39,0x01,0x01,0x05,0x01,0x01,0x05,
- 0x03,0x02,0x01,0xe5,0xe5,0xe5,0x04,0x03,0x09,0x05,0x03,0x02,0x01,0xe5,0xe5,0xe5,
- 0x04,0x03,0x0b,0x37,0x03,0x02,0x01,0x4a,0x03,0x01,0xe6,0x2e,0x0a,0xe5,0x01,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x09,0x09,0x01,0x07,0x01,0x07,0x01,0x09,0x01,
- 0x0d,0xe5,0x05,0x0a,0x18,0x01,0x29,0x09,0x02,0x01,0x11,0x08,0x02,0x01,0x3c,0x01,
- 0xe5,0xe5,0x06,0x01,0x07,0x09,0x01,0x07,0x03,0xe5,0xe5,0xe6,0x02,0xe5,0x03,0x01,
- 0x07,0x01,0x07,0x01,0x08,0xe5,0xe5,0x0a,0xe5,0xe5,0xe5,0x04,0x08,0xe5,0x11,0xe5,
- 0x03,0x01,0x0b,0xe5,0x1c,0x09,0xe6,0x12,0xe6,0x06,0xe5,0xe6,0x69,0x09,0x33,0x09,
- 0x09,0x13,0x13,0x1d,0x09,0x22,0x01,0xe5,0x01,0x67,0xe5,0x07,0xe5,0x01,0x2f,0xe5,
- 0x07,0xe5,0x07,0xe5,0x11,0xe5,0x11,0xe5,0x1b,0xe5,0x07,0xe5,0x1f,0xe5,0x01,0xe5,
- 0x0d,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0xe5,0x04,0x02,0xe5,0x03,0x03,
- 0x04,0x01,0x02,0x09,0x08,0x02,0x02,0x06,0xe5,0x07,0xe6,0x06,0xe5,0x07,0x09,0xe5,
- 0x07,0x09,0xe5,0x07,0x09,0x09,0xe6,0x06,0xe6,0x06,0x09,0x0d,0xe5,0xe7,0x01,0x3b,
- 0x09,0x09,0x09,0x12,0xe5,0x12,0x1f,0x86,0x02,0xe5,0x01,0x3d,0x09,0x08,0x0a,0x0f,
- 0x03,0x05,0x0d,0x16,0x06,0x07,0x13,0x13,0x13,0x48,0xe5,0xe6,0x07,0x36,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x09,0xe7,0x05,0xe5,0xe5,0x03,0x01,0x09,0x07,0x01,0x09,
- 0x01,0x04,0x04,0xe7,0x06,0xe6,0x06,0xe6,0x0a,0x04,0xe5,0xe5,0x03,0x01,0x04,0x05,
- 0xe6,0x0f,0x04,0x05,0xe6,0xe5,0x04,0xe6,0x1f,0xe7,0x3e,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x01,0xe5,0x04,0x02,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x07,0x01,0xe5,0x05,0x02,0xe5,0x08,0x09,0x11,0xe6,0x04,
- 0x02,0x0a,0x11,0xe5,0x09,0x09,0x19,0xe5,0x02,0x01,0xe6,0xe6,0x3d,0x01,0x07,0x01,
- 0x07,0x01,0x04,0x02,0x01,0x09,0x04,0x0c,0x01,0x09,0x07,0x01,0x08,0xe5,0xe5,0x08,
- 0x14,0x12,0x07,0x01,0x0a,0x12,0x22,0x13,0x01,0x01,0xe5,0x13,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x05,0xe8,0xe5,0x02,0xe8,0xe5,0x02,0xe8,0xe5,0x02,0xe8,0xe5,0x02,
- 0xe7,0x01,0xe5,0x01,0xe8,0x04,0x02,0xe5,0xe5,0x02,0xe5,0xe6,0xe5,0x02,0xe5,0xe6,
- 0xe5,0x02,0xe7,0x01,0x01,0x04,0xe7,0x01,0x02,0xe7,0x02,0x03,0xe6,0x05,0x01,0xe5,
- 0x07,0xe5,0x01,0x03,0xe8,0x06,0xe5,0x05,0xe7,0x07,0xe5,0x01,0x05,0xe5,0x02,0x02,
- 0xe7,0x02,0x02,0xe7,0x05,0x01,0xe5,0x06,0xe7,0xe5,0x01,0x03,0x01,0x1a,0x1d,0xe5,
- 0x06,0x03,0xe5,0x03,0x03,0xe5,0x03,0x03,0xe5,0x03,0xe5,0x01,0xe5,0x03,0xe6,0x01,
- 0x0e,0x03,0xe5,0x03,0x03,0xe5,0x03,0x03,0xe5,0x0c,0x02,0xe6,0x03,0x03,0x05,0x03,
- 0x09,0x08,0xe5,0x04,0x02,0x0a,0x05,0x0c,0x0a,0x05,0x03,0xe5,0x03,0x0d,0xe5,0x03,
- 0x01,0x08,0xe5,0x19,0x21,0x01,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0x02,
- 0x02,0x03,0x05,0x03,0x02,0x06,0xe5,0xe5,0x05,0x02,0x06,0x0b,0xe5,0x03,0xe5,0xe6,
- 0x02,0x01,0x03,0x05,0xe5,0xe5,0x03,0x08,0xe5,0xe6,0xe6,0x0e,0xe5,0xe6,0x0b,0x0a,
- 0x01,0xe5,0xe6,0x04,0xe5,0xe6,0x07,0x0b,0xe5,0x03,0x01,0xe7,0x3a,0x01,0x03,0x05,
- 0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x03,0x01,0x07,0x01,0xe5,0x01,0x05,0xe5,0x01,
- 0x05,0xe5,0x01,0x05,0x02,0x07,0x04,0x04,0xe5,0x07,0x05,0x12,0x04,0xe5,0x02,0x0a,
- 0x03,0xe5,0x0c,0x0e,0xe5,0x07,0xe5,0x06,0x0a,0x02,0x07,0x02,0x1a,0x1d,0x03,0xe7,
- 0x05,0xe7,0x04,0x01,0xe6,0x01,0x02,0x01,0xe6,0x01,0x03,0xe6,0x01,0x03,0x01,0xe5,
- 0x05,0xe5,0x03,0x03,0x03,0x01,0x03,0x05,0x03,0x01,0xe5,0x08,0x02,0x05,0x13,0x06,
- 0x08,0x03,0x13,0x0f,0x0d,0x09,0x06,0x02,0x06,0x03,0x04,0x02,0x01,0x01,0xe7,0x3d,
- 0x02,0x10,0x02,0x10,0x09,0x02,0x0e,0x0b,0x02,0x10,0x19,0x19,0x02,0x1e,0x13,0x1a,
- 0x05,0x02,0xe5,0x10,0x01,0x07,0x01,0x07,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0x01,
- 0x02,0x02,0x01,0x01,0x05,0x01,0x04,0x02,0x01,0x01,0x05,0x01,0x07,0x01,0x04,0x02,
- 0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x04,0x02,0x01,0x09,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,
- 0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x07,0x01,0x05,0xe5,0x02,0xe6,
- 0xe5,0x3e,0x07,0x0b,0x02,0x0a,0x03,0x02,0x04,0x03,0x02,0x05,0x14,0x08,0x01,0x03,
- 0x08,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x0d,0x03,0xe5,0x04,0xe5,0x0a,0xe5,0x03,0x17,
- 0xe5,0x07,0xe5,0x22,0xe7,0x0a,0x13,0x08,0x14,0x06,0x09,0x03,0x04,0xe5,0x0b,0x09,
- 0xe5,0x07,0x11,0x09,0x05,0x02,0x07,0x01,0x02,0x04,0x08,0xe5,0x0e,0x02,0x06,0x0c,
- 0x11,0x0c,0x09,0x1a,0x06,0x01,0xe5,0xe5,0x42,0x13,0x09,0x0a,0x26,0xe5,0x04,0x05,
- 0x04,0x09,0x11,0x0c,0x03,0x0f,0x1c,0x09,0x11,0x0d,0xe5,0x02,0xe8,0x24,0x1b,0x07,
- 0x02,0x06,0x01,0x07,0x01,0x0a,0x0a,0x05,0x01,0x0a,0x06,0x01,0xe5,0x02,0x06,0x06,
- 0x27,0x07,0x01,0xe5,0xe6,0x02,0xe5,0x03,0x01,0x02,0x44,0xe6,0xe5,0x3a,0xe5,0x01,
- 0x0b,0x0a,0x03,0x05,0x03,0xe5,0x10,0x01,0x04,0xe5,0x11,0x04,0x01,0x01,0x0d,0x0b,
- 0x23,0x21,0x36,0x13,0x09,0x23,0x0d,0x03,0x01,0x05,0x01,0x01,0x02,0x06,0x05,0x08,
- 0x02,0x01,0x0d,0xe5,0x01,0x01,0x07,0x04,0x09,0x01,0x1c,0x03,0x0b,0x01,0x01,0x01,
- 0x04,0xe5,0x36,0x06,0x0c,0x02,0x02,0x0d,0x15,0x13,0xe5,0x02,0x13,0x04,0x04,0x09,
- 0x02,0xe5,0x0d,0xe5,0x11,0xe5,0x09,0x23,0x01,0x08,0x0d,0x09,0x04,0x4b,0x03,0x21,
- 0x3f,0x05,0x2d,0x3b,0x0b,0x38,0x16,0xe5,0x05,0x38,0xe5,0x11,0xe5,0x07,0xe6,0x02,
- 0x03,0xe6,0x02,0x07,0x02,0x01,0x01,0x01,0x06,0xe6,0x03,0x03,0x08,0x16,0x07,0x14,
- 0x01,0x01,0x05,0x01,0x01,0x03,0x02,0x16,0x19,0xe6,0x18,0x01,0xe5,0x3e,0xe5,0x11,
- 0xe5,0x0a,0x09,0x13,0x05,0x03,0x09,0x06,0x08,0x0e,0x32,0x21,0x0e,0x14,0x05,0xe6,
- 0x01,0xe5,0x10,0x12,0x09,0x09,0x04,0x04,0x0b,0x02,0x04,0x04,0x04,0x01,0x02,0x13,
- 0x10,0x02,0x0f,0x09,0xe5,0x04,0x03,0x0a,0x0f,0x07,0xe5,0x09,0xe5,0x07,0x09,0x16,
- 0x12,0x0b,0x01,0xe6,0x01,0x3d,0x13,0xe5,0x03,0x03,0x09,0x0c,0x06,0x06,0x0c,0x02,
- 0x01,0x09,0x09,0x07,0x26,0x01,0xe5,0x32,0x1c,0xe7,0xe5,0x1a,0x0c,0x19,0x05,0x0d,
- 0x03,0x05,0x09,0xe5,0x0b,0x05,0x13,0x01,0x0f,0x0e,0x13,0x12,0x0d,0x2e,0x0f,0x06,
- 0xe6,0xe7,0x17,0xe6,0xe5,0xe5,0x02,0xe5,0x0b,0xe5,0x05,0x01,0xe5,0x04,0x09,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x04,0x08,0xe5,0x01,0xe5,0xe5,0x02,0x09,0xe5,0x03,0x03,0xe5,
- 0x07,0xe5,0xe5,0xe5,0x04,0xe5,0xe6,0x05,0x09,0x01,0xe5,0x04,0xe5,0x01,0x01,0xe5,
- 0x01,0xe5,0x08,0xe5,0x03,0x03,0x09,0xe5,0x10,0xe5,0x01,0x01,0x04,0x02,0xe5,0x04,
- 0x1e,0xe5,0xe6,0xe5,0x01,0x01,0x01,0x0d,0xe5,0x06,0xe5,0x1c,0xe5,0x01,0x01,0x03,
- 0xe5,0x07,0xe5,0x01,0x01,0x06,0x03,0x09,0xe5,0xe5,0xe6,0x02,0x05,0x02,0x06,0x03,
- 0x05,0x02,0x03,0xe5,0x09,0x01,0x04,0x09,0x01,0xe5,0x08,0x01,0xe5,0x0c,0x05,0xe5,
- 0x0b,0x0c,0x01,0x06,0xe5,0x01,0xe5,0x01,0x09,0x1b,0x01,0x02,0x02,0xe5,0x03,0x01,
- 0x14,0x02,0x01,0xe5,0xe5,0xe5,0x1a,0x0b,0x07,0x04,0xe5,0x06,0xe5,0x0b,0x13,0x19,
- 0x1d,0x05,0x03,0xe5,0xe5,0xe6,0xe5,0x03,0x01,0xe5,0xe5,0xe5,0x1c,0x07,0x04,0x01,
- 0xe5,0xe5,0x1c,0x06,0xe6,0x01,0x1a,0xe5,0x01,0x01,0x17,0xe5,0x11,0xe5,0x07,0xe5,
- 0x01,0x05,0xe5,0x0b,0x06,0xe5,0xe5,0x08,0x05,0xe5,0x01,0x33,0x06,0x02,0x01,0x07,
- 0x01,0x25,0x09,0x01,0x1f,0x03,0xe7,0x39,0x09,0xe5,0x01,0x05,0x09,0xe5,0x01,0x05,
- 0x01,0x01,0x07,0x01,0xe5,0x03,0x09,0xe5,0x01,0xe5,0x03,0x09,0xe5,0x01,0x11,0x09,
- 0x0e,0x07,0x06,0x04,0x01,0x02,0x01,0x01,0xe5,0xe5,0x01,0x1a,0x02,0x09,0x22,0xe5,
- 0x01,0x02,0x1f,0x1d,0x02,0x01,0x0e,0x09,0x04,0x04,0x02,0x01,0xe5,0x02,0x09,0x05,
- 0x03,0x09,0x2f,0x03,0x09,0x05,0x01,0x01,0x01,0x02,0xe5,0xe5,0xe5,0x18,0x03,0x04,
- 0x04,0x1d,0x04,0x01,0xe5,0x1f,0x01,0x0e,0x0e,0x0e,0x04,0x07,0x04,0x02,0x0b,0x06,
- 0x02,0x06,0x01,0xe5,0x05,0x02,0x10,0x01,0x01,0x05,0xe6,0x05,0x0f,0x09,0x01,0x04,
- 0x01,0xe5,0xe5,0x06,0x01,0x03,0xe5,0x17,0x01,0xe5,0xe8,0xe5,0xe5,0x01,0x01,0x1a,
- 0x01,0x02,0x21,0x01,0x0e,0xe5,0x04,0xe7,0x03,0x01,0xe5,0x07,0xe5,0xe7,0x01,0x01,
- 0xe5,0x03,0x03,0xe5,0x05,0x07,0x03,0xe5,0x01,0x01,0x03,0xe5,0xe5,0xe6,0x02,0xe5,
- 0xe8,0x02,0xe5,0xe5,0xe5,0x08,0x06,0xe5,0xe5,0xe5,0x04,0x0e,0x09,0x01,0x01,0xe5,
- 0xe5,0xe6,0xe5,0xe6,0x03,0x01,0x01,0xe5,0xe5,0x15,0x04,0xe6,0x01,0x01,0x02,0xe6,
- 0x1f,0xe5,0x30,0x01,0xe5,0x02,0x09,0x09,0x09,0x09,0x02,0x02,0x0d,0x09,0x09,0x09,
- 0x10,0x04,0x09,0x02,0xe5,0x18,0x09,0x09,0x04,0x18,0x09,0x21,0x03,0x02,0x35,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x0b,0xe5,0x03,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x01,0x11,0xe5,0x07,0xe5,0x1b,0xe5,0x07,0xe5,0x07,0xe5,0x1b,0xe5,
- 0x07,0xe5,0x1f,0xe6,0xe6,0x0d,0x09,0x09,0x09,0x09,0xe5,0x04,0x02,0xe5,0x07,0xe5,
- 0x04,0x02,0xe5,0x03,0xe5,0x01,0xe5,0x02,0x01,0x02,0x09,0xe5,0x04,0x02,0xe5,0xe5,
- 0xe5,0xe5,0x01,0xe5,0xe5,0x02,0x02,0xe5,0x03,0x05,0x06,0x02,0xe5,0x07,0xe6,0x06,
- 0x09,0x09,0xe5,0xe5,0x05,0xe5,0x07,0xe5,0xe5,0x05,0x09,0x09,0xe7,0x05,0xe7,0x05,
- 0x09,0x0d,0xe5,0xe7,0x01,0x31,0x08,0xe5,0x11,0xe5,0x07,0xe5,0x08,0x12,0xe5,0x08,
- 0x08,0xe5,0x11,0x02,0x31,0x54,0x02,0xe6,0xe5,0x32,0x05,0x03,0x05,0x09,0x03,0x05,
- 0x03,0x05,0x03,0x0f,0x03,0x05,0x01,0x07,0x03,0x05,0x0d,0x07,0x27,0x03,0x05,0x09,
- 0x48,0xe5,0xe6,0xe5,0x28,0x01,0x09,0xe5,0xe5,0x06,0x01,0x04,0x01,0xe7,0x06,0x01,
- 0x03,0x02,0xe7,0x03,0x01,0x0a,0xe6,0x02,0x02,0xe7,0x05,0xe7,0x02,0x02,0xe7,0xe5,
- 0x02,0x07,0x04,0xe7,0xe5,0x01,0x01,0xe7,0x1a,0xe6,0xe5,0x03,0xe7,0xe5,0xe6,0xe8,
- 0x1a,0xe6,0x06,0xe6,0x1e,0xe5,0x01,0x2b,0x01,0xe5,0x05,0x02,0xe5,0x07,0xe5,0x04,
- 0x01,0xe6,0x03,0x03,0xe5,0x04,0x01,0xe6,0x04,0x01,0xe5,0x09,0x05,0x01,0xe6,0x03,
- 0xe5,0x01,0xe5,0x04,0x01,0xe6,0x10,0x02,0xe5,0x04,0x01,0xe6,0x0b,0x09,0x06,0x07,
- 0xe6,0x04,0x01,0xe6,0x1c,0x09,0x19,0xe5,0x02,0x02,0xe7,0x27,0x0e,0x04,0x01,0x06,
- 0x03,0x01,0x01,0x02,0x09,0x0c,0x01,0x0b,0x01,0xe5,0x05,0x07,0xe5,0x02,0x06,0x13,
- 0x0b,0x0c,0x08,0x06,0x08,0xe5,0x05,0x01,0xe5,0x20,0x09,0x1e,0x01,0xe5,0x14,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0x01,
- 0x04,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe5,0xe5,0x06,0xe7,
- 0x01,0x02,0xe7,0x06,0xe6,0x07,0xe5,0x07,0xe5,0x05,0xe7,0x01,0x05,0xe6,0xe5,0x02,
- 0xe7,0x07,0xe5,0x06,0xe6,0x02,0x02,0xe7,0x02,0x02,0xe7,0x07,0xe5,0x07,0xe7,0x02,
- 0x04,0xe5,0x2a,0x01,0xe6,0x06,0x09,0x0a,0x08,0x0a,0x06,0x01,0xe5,0x12,0x08,0xe6,
- 0x07,0x0b,0xe5,0x06,0xe6,0x04,0x01,0xe5,0x08,0x09,0x09,0xe5,0x06,0xe5,0x08,0xe5,
- 0x17,0x03,0xe5,0x07,0xe5,0x07,0x17,0x01,0x01,0x2b,0x01,0x07,0x09,0x01,0x11,0x01,
- 0x0a,0x06,0x01,0xe5,0x19,0x14,0x09,0xe5,0x04,0x02,0xe5,0xe6,0x04,0x1a,0x02,0xe5,
- 0x0e,0x02,0x1a,0x02,0x06,0x02,0x03,0x10,0xe5,0x03,0xe5,0x01,0xe5,0x36,0x14,0x1a,
- 0x01,0x14,0x08,0x0a,0x0f,0x04,0x04,0xe5,0x07,0x05,0x09,0x0d,0xe5,0x02,0xe5,0x0c,
- 0xe5,0x11,0x09,0xe5,0x07,0xe5,0x14,0x08,0x01,0x2e,0x06,0x04,0x04,0x04,0x09,0x04,
- 0x04,0x09,0x04,0x02,0x0b,0x09,0x04,0x04,0x09,0x09,0x03,0x01,0xe5,0x03,0xe5,0xe6,
- 0x04,0x03,0x03,0x09,0x0b,0xe5,0xe7,0x03,0x09,0xe5,0xe6,0x10,0x07,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x02,0x11,0x03,0x03,0x01,0x1b,0x09,0x17,0x01,0xe5,0xe5,0x0f,0x02,0x06,
- 0x02,0x06,0x02,0x06,0x01,0xe5,0xe5,0x03,0x02,0x06,0x01,0xe5,0x05,0x02,0x01,0x05,
- 0x28,0xe5,0xe5,0x0f,0x02,0x17,0xe5,0x08,0x30,0x03,0x01,0xe5,0x01,0x0b,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x02,0x02,0x01,0x01,0x05,0x01,0x01,0x05,
- 0x01,0x01,0x02,0x01,0xe5,0xe5,0xe5,0xe5,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,
- 0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x09,0x01,0xe6,0x04,0x01,0xe5,
- 0x05,0x01,0xe6,0x04,0x01,0x03,0x03,0x01,0x07,0x01,0x01,0x02,0x02,0x01,0x01,0x05,
- 0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0a,0x01,
- 0x01,0x0b,0x23,0x07,0x09,0xe5,0x07,0xe5,0x03,0x01,0xe7,0x05,0x01,0x07,0x01,0x01,
- 0x01,0x05,0x07,0x01,0xe5,0x07,0x07,0x01,0xe5,0x13,0xe5,0x07,0xe5,0x08,0xe5,0x01,
- 0x04,0xe5,0x07,0xe5,0x05,0x01,0x09,0xe5,0x1b,0xe5,0x07,0xe5,0x02,0x1d,0xe5,0xe7,
- 0x09,0x1e,0x04,0x01,0x01,0x03,0x01,0x01,0x02,0x01,0xe5,0x02,0x02,0x01,0x04,0x02,
- 0x01,0x07,0x02,0x06,0x04,0x01,0x09,0x02,0x03,0x02,0x02,0x04,0x01,0x02,0x02,0xe5,
- 0x01,0xe5,0x09,0x0b,0x07,0x03,0x06,0x02,0x01,0x04,0x03,0x0a,0x01,0x0c,0x1b,0x01,
- 0x15,0x10,0x03,0xe5,0x14,0x0a,0x09,0x06,0x02,0x04,0x11,0x08,0x10,0x02,0x02,0x01,
- 0x05,0x07,0x01,0x09,0x07,0x11,0x03,0x01,0x07,0x01,0x14,0x03,0x03,0x12,0x01,0x1b,
- 0x01,0x07,0x01,0x20,0x01,0x01,0xe6,0x0f,0x04,0x04,0x14,0x08,0x08,0x07,0x01,0x09,
- 0x0e,0xe5,0xe5,0xe5,0x0f,0x07,0x14,0x26,0xe5,0x05,0x10,0xe5,0xe5,0x05,0x02,0x09,
- 0x3f,0xe5,0xe6,0x30,0x07,0x06,0x06,0x01,0x01,0x04,0xe5,0x06,0x0f,0x23,0x07,0x02,
- 0xe6,0x19,0x0a,0x22,0x4a,0x03,0x18,0xe5,0x08,0x13,0x03,0x05,0x03,0x05,0x07,0x01,
- 0x09,0x07,0x01,0xe5,0x03,0x03,0x05,0x03,0x02,0x06,0x09,0x06,0xe5,0x01,0xe5,0x02,
- 0x05,0xe5,0xe5,0x04,0xe5,0x07,0xe6,0xe5,0x05,0x02,0x06,0xe5,0xe5,0x01,0x0d,0x03,
- 0x12,0x37,0x0b,0x05,0xe5,0x08,0x04,0xe5,0x03,0x0e,0x01,0x03,0x03,0x09,0x01,0x01,
- 0x05,0x03,0x01,0x03,0x01,0x07,0x09,0x09,0x09,0x09,0x08,0x01,0x0a,0x08,0x01,0x03,
- 0x07,0x05,0xe5,0x08,0x10,0x01,0xe7,0x0a,0x11,0x13,0x0f,0x07,0xe6,0xe5,0x02,0x10,
- 0xe5,0x0a,0x06,0x30,0x3c,0x02,0x01,0x18,0x09,0x06,0x0b,0x3e,0x1d,0x01,0x01,0x13,
- 0x22,0x07,0xe5,0x09,0x02,0xe5,0x03,0x0a,0x08,0x13,0xe5,0x11,0xe5,0x07,0xe5,0x09,
- 0xe5,0x07,0xe5,0x07,0xe5,0x03,0x0b,0xe9,0x04,0xe6,0x07,0xe6,0x06,0xe5,0x1b,0xe5,
- 0x0f,0x08,0x02,0x06,0x02,0xe5,0x02,0x18,0x19,0x08,0x0a,0x08,0x0a,0x06,0x01,0x11,
- 0x01,0xe5,0x06,0x0a,0xe5,0x07,0x0b,0xe5,0x01,0x05,0x01,0x01,0x05,0x01,0x14,0x06,
- 0x02,0x07,0x0a,0x1b,0x01,0x1f,0x03,0x01,0xe5,0x20,0x01,0x01,0xe5,0x0f,0x03,0x05,
- 0x09,0x04,0x04,0x06,0x02,0x03,0x05,0x05,0x03,0x03,0x05,0x09,0x06,0x02,0x0b,0x03,
- 0x05,0x03,0x05,0x07,0x01,0x07,0x01,0x01,0x07,0x09,0x03,0xe5,0x07,0x04,0x0e,0x34,
- 0xe7,0x17,0x09,0x10,0x01,0xe6,0x06,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x01,0xe5,0x03,0xe5,0x07,0xe5,0x09,0x09,0xe5,0x08,
- 0xe5,0x07,0x06,0x02,0x01,0xe5,0x05,0x09,0x28,0x2a,0xe5,0x01,0xe5,0x18,0x09,0x0c,
- 0x05,0x09,0x09,0x02,0x06,0x09,0x05,0x03,0x02,0x06,0x03,0x05,0x09,0x02,0x06,0x07,
- 0x01,0x0b,0x08,0xe5,0x08,0x0a,0x07,0xe5,0x07,0x01,0x0e,0x30,0x14,0xe6,0xe7,0x0a,
- 0x09,0x09,0x0c,0xe5,0x01,0x01,0xe5,0x02,0x02,0x01,0xe5,0x02,0x02,0xe5,0xe5,0x02,
- 0x02,0xe5,0xe5,0x02,0x02,0xe5,0xe5,0x02,0x05,0x03,0x02,0xe5,0xe5,0x05,0xe5,0xe5,
- 0x02,0x02,0xe5,0xe5,0x05,0xe5,0xe5,0x02,0x01,0xe5,0x03,0x03,0x02,0xe5,0xe5,0x02,
- 0x05,0x03,0x02,0xe5,0xe5,0x02,0xe5,0xe5,0xe6,0x02,0xe5,0x07,0x0b,0xe5,0x05,0x19,
- 0x0c,0xe5,0x1d,0xea,0x01,0x01,0x08,0x04,0x04,0xe6,0x06,0xe6,0x0a,0x02,0xe5,0x02,
- 0xe5,0x02,0xe5,0x02,0xe5,0x01,0xe5,0x03,0xe5,0xe5,0xe5,0xe5,0x01,0xe5,0x07,0xe5,
- 0x02,0x01,0x02,0xe5,0x07,0x02,0x06,0xe5,0x07,0x09,0xe5,0xe5,0x07,0x09,0xe5,0x07,
- 0xe5,0x02,0xe5,0x02,0xe5,0x02,0x01,0x02,0x04,0xe5,0x01,0xe5,0x0d,0x01,0x1e,0x0c,
- 0x1c,0x01,0x02,0xe8,0x03,0x08,0x06,0xe5,0xe5,0xe5,0x03,0x01,0x02,0x04,0xe5,0xe5,
- 0xe5,0x03,0x04,0x04,0x04,0x02,0x01,0x04,0x04,0x04,0x02,0x01,0x04,0x02,0x01,0x04,
- 0x04,0x04,0x04,0x04,0x02,0x01,0x04,0x02,0x01,0x04,0x04,0x06,0x01,0xe5,0xe5,0x03,
- 0x02,0x01,0x04,0x02,0x01,0x04,0x02,0x01,0x04,0x01,0x02,0x02,0x03,0xe5,0x11,0x19,
- 0x29,0x06,0xe6,0x01,0x0a,0x06,0x02,0x01,0x07,0x06,0xe5,0xe5,0xe5,0x03,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x02,0x06,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x30,0x2b,0x04,
- 0xe6,0x0c,0x07,0x01,0x01,0x02,0x04,0x01,0x03,0x02,0x0c,0x02,0x01,0x01,0x02,0x02,
- 0xe5,0x01,0x02,0x02,0x03,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,
- 0x01,0x02,0x02,0x06,0x02,0x06,0x02,0x03,0x02,0x02,0xe5,0x01,0x04,0x02,0x06,0x02,
- 0x06,0x02,0x06,0x02,0x06,0x02,0x04,0x04,0x0e,0x01,0x02,0x18,0x30,0x01,0x02,0x0a,
- 0x03,0x05,0x01,0x02,0x04,0x01,0x01,0x02,0x01,0x04,0x05,0x03,0x02,0x01,0xe5,0x02,
- 0x05,0x03,0x01,0x01,0xe6,0x02,0x04,0xe5,0x02,0x01,0x02,0xe5,0x02,0x01,0x02,0xe5,
- 0x02,0x05,0x03,0x01,0x02,0xe5,0x02,0x01,0x01,0xe6,0x02,0x07,0x03,0x01,0x02,0xe5,
- 0x02,0x05,0x03,0x02,0x01,0xe5,0x02,0x01,0x02,0xe5,0x02,0x05,0x03,0x0f,0x01,0x01,
- 0x19,0x03,0x27,0x04,0x01,0xe5,0x03,0xe5,0x05,0x0b,0x04,0x02,0x01,0x07,0x01,0x07,
- 0x03,0x05,0x03,0x05,0x09,0x07,0x01,0x03,0x05,0x03,0x05,0x03,0x02,0x02,0x09,0x06,
- 0x02,0x0b,0x06,0x02,0x09,0x04,0x01,0x02,0x09,0x06,0x04,0x01,0x0f,0x01,0x02,0x01,
- 0x16,0x2d,0x02,0xe6,0x01,0x03,0x06,0x0b,0x04,0xe5,0xe5,0xe5,0x06,0x01,0x09,0x02,
- 0x06,0x02,0x06,0x01,0xe5,0x05,0x01,0xe5,0x05,0x02,0xe6,0x03,0x02,0x06,0x02,0x01,
- 0xe5,0x02,0x01,0xe5,0x05,0x01,0xe5,0xe6,0x02,0x01,0xe5,0x07,0x01,0xe5,0xe7,0x01,
- 0x01,0xe5,0x05,0x01,0xe5,0xe7,0x01,0x01,0xe5,0x05,0x01,0xe5,0x01,0x03,0x02,0x0e,
- 0x01,0x01,0xe5,0xe6,0x14,0x2b,0x04,0x01,0x01,0x1d,0x15,0x02,0x02,0x02,0xe5,0x01,
- 0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,
- 0x01,0x01,0x02,0x02,0x03,0x02,0x02,0x01,0x01,0x02,0x02,0x05,0x02,0x02,0x03,0x02,
- 0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x06,0x02,0x10,0x04,0x42,0x05,
- 0x01,0x1c,0x19,0xe5,0x01,0x05,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,
- 0x06,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x0e,0xe5,0x47,0xe5,0x01,0xe5,0x0d,0x04,0x01,0x02,0x05,0x03,0x02,0x06,
- 0x04,0x01,0xe5,0xe7,0xe5,0x02,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,
- 0xe6,0x04,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x07,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,
- 0x01,0xe6,0x06,0x09,0xe5,0x07,0x09,0x09,0x09,0x09,0x09,0x0d,0x02,0x01,0x02,0x13,
- 0x1d,0xe5,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,
- 0x09,0x5d,0x02,0x02,0xe5,0x12,0x1d,0x03,0x09,0x02,0x06,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x06,
- 0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,
- 0x14,0x4a,0xe6,0x16,0x01,0x07,0x15,0xe5,0xe5,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,
- 0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,
- 0x01,0x04,0x02,0xe6,0x05,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0x01,0x04,0x02,0xe6,
- 0x03,0x02,0x01,0x01,0x01,0xe5,0x01,0xe6,0x02,0x02,0x0a,0xe6,0x44,0x01,0x01,0xe6,
- 0x16,0x02,0xe5,0x04,0x03,0x0f,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,
- 0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0xe5,0x06,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x03,
- 0xe5,0x01,0xe5,0x04,0x02,0xe5,0x06,0xe5,0x02,0x06,0x48,0xe9,0x15,0x01,0x07,0x0f,
- 0x0f,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x01,0x07,0x04,0x01,0x02,0x09,
- 0x09,0x09,0xe5,0x07,0x0b,0x02,0x45,0x01,0xe6,0x08,0x0b,0xe6,0x05,0xe7,0x06,0xe5,
- 0x07,0xe5,0x05,0xe7,0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0xe7,
- 0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0xe7,
- 0x01,0x03,0xe7,0x01,0xe5,0x01,0xe7,0x03,0x04,0xe6,0x01,0xe5,0x01,0xe7,0x01,0x03,
- 0xe7,0x01,0xe5,0x03,0xe5,0x01,0x05,0xe5,0x01,0x03,0x01,0xe5,0x01,0x05,0xe5,0x05,
- 0xe7,0x07,0xe5,0x07,0xe5,0x05,0xe7,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x07,0x02,0x1a,
- 0xe5,0x03,0x03,0x10,0x01,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0x09,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe6,
- 0x06,0xe5,0x07,0xe5,0x08,0x03,0x05,0x16,0x29,0x01,0xe5,0x1d,0x16,0x01,0x03,0x02,
- 0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,
- 0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x01,0x02,0x06,0x02,0x03,
- 0x02,0x02,0x05,0xe5,0x01,0x09,0x09,0x06,0x02,0xe5,0x03,0x04,0x05,0x03,0x19,0x09,
- 0x1d,0x01,0x17,0x01,0x0a,0x10,0x06,0xe5,0xe5,0x01,0x03,0xe5,0xe5,0x01,0x03,0xe5,
- 0xe5,0x01,0x03,0xe5,0xe5,0x05,0xe5,0xe5,0x01,0x03,0xe5,0xe5,0x01,0x03,0xe5,0xe5,
- 0x01,0x03,0xe5,0xe5,0x05,0xe5,0xe5,0x01,0x03,0xe5,0x02,0x02,0x03,0x02,0x02,0x03,
- 0xe5,0xe5,0x04,0xe5,0x01,0x02,0x06,0x09,0x02,0x02,0x01,0x03,0x0d,0x01,0x1c,0xe5,
- 0x06,0xe6,0x1b,0x01,0x01,0x17,0x02,0x01,0x01,0x05,0x01,0x10,0x02,0xe5,0xe7,0x03,
- 0xe5,0xe7,0x03,0xe5,0xe7,0x03,0xe5,0xe7,0x03,0xe5,0xe7,0x03,0xe5,0xe7,0x03,0xe5,
- 0xe7,0x03,0xe5,0xe7,0x03,0xe5,0xe7,0x03,0xe5,0xe6,0x01,0x04,0x03,0xe5,0x03,0xe5,
- 0xe7,0x03,0xe6,0xe6,0x03,0x04,0x04,0x04,0x04,0xe8,0x01,0xe5,0x01,0x08,0xe5,0xe6,
- 0x02,0x17,0xe6,0x05,0x01,0xe5,0x1c,0x01,0x0d,0x09,0xe5,0xe5,0x0a,0x1c,0x0a,0x08,
- 0x27,0x1a,0x04,0x2d,0x04,0x08,0x03,0x1f,0xe5,0xe5,0xe5,0x07,0x1c,0x06,0xe5,0xe5,
- 0x07,0x03,0x02,0x01,0x03,0x03,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,0x01,0x05,
- 0x01,0x07,0x01,0x07,0xe6,0x06,0x01,0x01,0x04,0xe5,0xe5,0x06,0x01,0x01,0x05,0xe6,
- 0x01,0x04,0x01,0x07,0x01,0x09,0xe6,0x01,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x01,0x02,0x02,0x01,0x01,0x05,0x01,0xe5,0x05,0x01,0x01,0x05,0x01,0x02,0x04,0x01,
- 0x01,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x08,0x03,0xe6,0x22,0x01,
- 0x02,0x04,0xe5,0xe5,0x01,0xe5,0x01,0xe5,0x07,0xe5,0x01,0x05,0x09,0xe5,0x0b,0xe5,
- 0x03,0x03,0x02,0x02,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x09,0xe5,0x07,
- 0xe5,0x01,0x02,0x03,0x05,0x02,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x02,0x2b,0x2f,0x01,
- 0xe5,0x0a,0x08,0xe5,0x03,0x0e,0xe5,0xe5,0x07,0xe5,0x01,0xe5,0x02,0x03,0x01,0x05,
- 0x01,0x02,0xe5,0xe5,0x02,0x04,0x09,0x04,0x06,0xe5,0x03,0x02,0x03,0x06,0xe5,0x03,
- 0x03,0x02,0x04,0x02,0x03,0x06,0xe5,0xe5,0x04,0x02,0x07,0xe5,0x02,0x02,0x02,0x03,
- 0x03,0x0f,0x08,0xe5,0x01,0x06,0x01,0x07,0x0c,0x07,0x15,0x06,0x04,0x02,0x1f,0x0c,
- 0xe5,0x02,0x0c,0x03,0x0a,0x04,0x02,0x0f,0x03,0x10,0x13,0x05,0x05,0x02,0x11,0x03,
- 0x07,0x03,0xe5,0x0a,0xe5,0x5d,0xe5,0xe5,0x16,0x09,0x01,0x03,0x01,0x0b,0x01,0x05,
- 0x01,0x01,0x07,0x01,0x16,0x04,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0x07,0x01,
- 0x07,0x09,0x01,0x01,0x09,0x07,0x02,0x03,0x02,0x01,0xe5,0x01,0xe5,0xe6,0xe5,0x5d,
- 0xe5,0x01,0x02,0x11,0x05,0x08,0x13,0x07,0x01,0x05,0x03,0x05,0xe5,0x05,0x02,0x0d,
- 0xe5,0xe5,0x02,0x01,0x05,0x01,0x01,0x09,0x05,0x01,0x01,0x06,0xe6,0x09,0x01,0x07,
- 0x0c,0x07,0x01,0x09,0x0e,0x51,0xe5,0x0f,0x01,0x03,0x02,0x02,0x04,0x01,0x11,0x05,
- 0x0d,0xe6,0x02,0x04,0xe5,0x03,0x08,0xe5,0x01,0x01,0x05,0x06,0x05,0xe5,0x02,0x03,
- 0x03,0x01,0x04,0xe5,0x02,0x03,0x02,0xe5,0x0c,0x05,0x05,0x07,0x06,0x06,0x01,0x02,
- 0x0a,0x05,0x03,0x09,0x08,0x06,0x09,0x14,0x0d,0xe8,0x16,0xe5,0x05,0x06,0x14,0x03,
- 0x04,0x04,0x09,0x01,0x02,0x04,0x01,0x07,0xe5,0x05,0x01,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x08,0xe5,0xe5,0xe5,0x01,0x04,0x09,0xe5,0x0a,0x0c,0x02,0x01,0x0b,0x07,0x01,
- 0x14,0x06,0x09,0x25,0xe6,0x09,0xe5,0x0c,0x0a,0x03,0x13,0x04,0x02,0x06,0x02,0x08,
- 0x02,0x0e,0x02,0x0d,0x16,0x01,0xe5,0xe5,0x01,0x0b,0x07,0xe5,0x01,0x02,0x08,0x27,
- 0x49,0xe5,0xe5,0xe5,0x12,0x06,0x0e,0xe6,0x03,0x01,0x1c,0x0f,0x04,0x01,0x0e,0x11,
- 0xe6,0xe5,0x0a,0x15,0xe6,0x0a,0x04,0x07,0x0b,0xe6,0x02,0x03,0x08,0xe8,0x05,0x06,
- 0x02,0x12,0x20,0x2e,0x0a,0x02,0x09,0xe5,0x12,0xe5,0x0b,0x04,0x06,0x02,0x09,0x09,
- 0xe5,0x0a,0x08,0x01,0x07,0x05,0x18,0x0b,0x01,0x13,0x44,0x01,0x01,0x13,0x01,0x0a,
- 0x04,0x04,0x05,0x14,0x01,0xe5,0x05,0x01,0x02,0x06,0x0a,0x08,0xe5,0x05,0x01,0x06,
- 0x02,0xe5,0x05,0x01,0xe5,0x07,0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,0x1a,0x02,0x05,
- 0x03,0x09,0x05,0x03,0x03,0x01,0x03,0x09,0x05,0xe5,0x07,0x1f,0x03,0xe5,0xe7,0x0e,
- 0x2f,0x0d,0x02,0x0c,0x0c,0x06,0x0e,0x04,0x0d,0x08,0x1d,0x01,0xe5,0x05,0x01,0x05,
- 0xe5,0x01,0x0f,0xe5,0x08,0x12,0xe5,0x06,0x01,0x20,0xe6,0x02,0x1c,0x1f,0x04,0x1b,
- 0x01,0x11,0x01,0x02,0x0e,0x01,0x12,0x09,0x05,0x03,0x1f,0x0c,0x06,0x0a,0x12,0x08,
- 0x08,0x1c,0xe5,0xe7,0x2b,0xe5,0x06,0xe5,0x09,0xe5,0x07,0x09,0x09,0x09,0x09,0xe5,
- 0x07,0x09,0x09,0xe5,0x04,0x06,0xe5,0x05,0x02,0xe5,0x04,0x05,0x02,0xe5,0x07,0xe5,
- 0xe6,0x05,0x08,0xe5,0x28,0xe5,0x05,0x1e,0xe7,0xe6,0x01,0x01,0x12,0xe5,0x11,0xe5,
- 0x01,0x0a,0x04,0xe5,0x01,0x09,0x09,0x05,0xe5,0x01,0x08,0x06,0xe5,0x01,0x09,0x05,
- 0xe5,0x01,0x09,0x0d,0xe5,0x01,0xe5,0x0a,0x03,0x01,0xe5,0x0c,0x01,0xe5,0x01,0xe5,
- 0x0a,0x2a,0xe5,0x21,0x01,0x02,0x01,0xe6,0x03,0x05,0xe5,0xe5,0xe5,0x03,0x01,0xe5,
- 0xe5,0x12,0x02,0xe6,0x01,0x01,0x09,0x04,0xe5,0x02,0x04,0x01,0xe5,0x04,0xe5,0x03,
- 0x13,0x04,0x01,0x02,0x09,0x04,0x01,0xe5,0x04,0xe5,0x05,0x04,0xe5,0x04,0x0f,0x03,
- 0x0c,0xe5,0x02,0x01,0x0f,0x01,0x1b,0x01,0x07,0x01,0x01,0x1b,0x08,0x02,0x06,0xe5,
- 0x01,0x01,0x04,0x02,0x01,0x11,0x06,0xe5,0xe5,0xe5,0x06,0x06,0xe5,0xe5,0x08,0x06,
- 0xe5,0xe5,0x0f,0xe5,0xe5,0x08,0x09,0x09,0x06,0xe5,0x01,0xe5,0x05,0xe5,0x14,0x10,
- 0x02,0x13,0x01,0x18,0x02,0x01,0x07,0x01,0x1f,0x02,0xe8,0x14,0x08,0x01,0x02,0x09,
- 0x11,0x04,0xe5,0x01,0xe5,0x08,0x01,0x02,0x09,0xe5,0x01,0xe5,0xe5,0x01,0x09,0x01,
- 0x01,0xe5,0xe5,0x01,0x01,0x01,0xe5,0x04,0x02,0xe5,0xe5,0x01,0x06,0x04,0x06,0x02,
- 0xe5,0x01,0xe5,0xe5,0x01,0x04,0x11,0x07,0x02,0x0c,0x06,0x12,0x03,0x02,0x03,0x02,
- 0x02,0x03,0x1d,0xe6,0x01,0x0e,0x0c,0x01,0x02,0x07,0x03,0x04,0x04,0x05,0x04,0x03,
- 0x02,0x06,0xe5,0xe5,0x01,0x09,0x03,0xe5,0xe5,0xe5,0x09,0x04,0x01,0x02,0x01,0x01,
- 0xe5,0x07,0xe5,0xe5,0x01,0x08,0x02,0x01,0x01,0xe5,0x03,0x03,0xe5,0xe5,0xe5,0x04,
- 0x03,0x18,0x0a,0x07,0xe5,0x13,0x04,0x02,0x01,0x04,0x02,0x19,0x02,0x01,0xe7,0x0b,
- 0x01,0x13,0x09,0x05,0x01,0x01,0x04,0x02,0x07,0x01,0x01,0x05,0x01,0x04,0x04,0x01,
- 0x05,0x01,0x01,0x04,0x02,0x01,0x09,0x07,0x07,0x01,0x0b,0x01,0x07,0x01,0x02,0x02,
- 0x01,0x01,0x01,0xe5,0x03,0x04,0x0e,0x01,0x05,0x0d,0x05,0x17,0x09,0x1b,0xe5,0x03,
- 0x04,0x01,0xe5,0x09,0x01,0x13,0x07,0x09,0x01,0x05,0x01,0x04,0x04,0x01,0x02,0x04,
- 0x04,0x04,0x01,0x02,0x04,0x01,0x01,0xe8,0xe5,0xe5,0x01,0x04,0x04,0x04,0x04,0x04,
- 0x04,0x06,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x13,0x01,0x02,0x0e,0x04,
- 0x18,0x04,0x04,0x04,0x18,0x08,0xe6,0x3a,0xe5,0x11,0x02,0x17,0x20,0xe5,0x07,0x02,
- 0x08,0x02,0x06,0x02,0x03,0x2a,0x02,0x2e,0x02,0x1b,0x03,0x1b,0x02,0x06,0x16,0x09,
- 0xe5,0x04,0x02,0xe5,0x17,0xe5,0x0b,0x10,0x18,0x09,0x05,0xe5,0x1c,0x13,0x2a,0x1d,
- 0xe5,0x01,0xe5,0x0d,0x06,0x02,0x03,0x05,0x09,0x09,0x03,0x05,0x09,0x09,0x04,0x01,
- 0x02,0x06,0x02,0xe5,0x07,0x03,0x05,0x09,0x09,0x0b,0x03,0x02,0x02,0x03,0x05,0xe6,
- 0x06,0x02,0x06,0x06,0x02,0x09,0x04,0x01,0x02,0x09,0x09,0x04,0x01,0x02,0x09,0x03,
- 0x05,0x09,0x0d,0xe7,0xe5,0x01,0x12,0xe5,0x30,0x09,0x09,0x06,0x02,0x13,0x13,0x12,
- 0x02,0x26,0xe5,0x12,0x1d,0x09,0x22,0x06,0x15,0x30,0x08,0x0b,0x08,0x06,0x0b,0x13,
- 0x15,0x27,0x15,0x1b,0x09,0x2c,0x01,0x14,0xe5,0x05,0x16,0x01,0x07,0x01,0x02,0x01,
- 0x04,0x02,0x06,0x02,0x01,0x04,0x02,0x01,0x01,0x02,0xe7,0xe5,0x01,0x01,0x02,0x01,
- 0x04,0x02,0x01,0x02,0x01,0x02,0x01,0x04,0x02,0x05,0xe5,0xe5,0x01,0x01,0x04,0x02,
- 0x07,0x01,0x04,0x01,0x07,0x01,0x07,0x01,0x02,0x04,0x01,0x04,0x04,0x02,0x06,0x0e,
- 0x04,0x02,0x01,0x04,0x02,0x1f,0xe6,0xe5,0x16,0x02,0xe5,0xe5,0x06,0x01,0xe5,0x0b,
- 0x01,0xe5,0x05,0x01,0x01,0x05,0x03,0x01,0xe5,0x01,0x01,0x01,0x02,0x02,0x01,0x01,
- 0x05,0x02,0xe5,0x04,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x01,0x03,0x01,0x01,
- 0x02,0x04,0x01,0x01,0x05,0x03,0x09,0x04,0xe5,0xe6,0x05,0x01,0xe5,0x02,0x02,0x03,
- 0x01,0x03,0x01,0xe5,0x05,0x01,0x01,0x01,0x05,0xe5,0x0f,0x01,0x01,0x05,0x03,0x19,
- 0xe5,0x02,0x02,0x02,0x14,0x02,0x01,0x04,0x1c,0xe5,0x03,0x04,0x04,0x03,0x05,0x09,
- 0x03,0x05,0x01,0x02,0x04,0x04,0x04,0x04,0x04,0x03,0xe5,0x0f,0x03,0xe5,0x03,0x04,
- 0x0c,0x01,0x06,0xe5,0xe5,0x06,0x01,0x03,0x02,0x0c,0x04,0x04,0x13,0x03,0x05,0x22,
- 0xe6,0xe5,0x14,0xe6,0x06,0xe5,0x07,0xe5,0x06,0xe6,0x05,0xe7,0x01,0x03,0xe7,0x01,
- 0x03,0xe8,0xe5,0x02,0xe8,0xe5,0x02,0xe8,0x04,0xe7,0x01,0x03,0xe8,0xe5,0x02,0xe7,
- 0x01,0x03,0xe7,0x01,0x03,0xe7,0xe5,0x01,0x04,0xe6,0x01,0x03,0xe7,0x06,0xe7,0xe5,
- 0x04,0xe6,0xe5,0x04,0xe6,0x04,0xe7,0x07,0xe6,0xe5,0x02,0xe7,0x01,0x05,0xe5,0x07,
- 0xe6,0xe5,0x02,0xe7,0x01,0x03,0xe7,0x07,0xe5,0x07,0xe7,0x02,0x01,0x01,0xe6,0x16,
- 0x01,0x07,0x01,0x0a,0x05,0xe5,0xe6,0x02,0x01,0xe5,0x07,0x02,0x06,0x09,0x09,0x02,
- 0xe5,0x01,0xe5,0xe6,0x07,0x09,0xe5,0x07,0x02,0x06,0x0b,0x02,0x06,0x07,0x01,0x03,
- 0x12,0x06,0xe5,0xe5,0x0f,0x02,0xe5,0x18,0x02,0x06,0x1b,0x01,0x01,0x17,0x01,0x07,
- 0x01,0x0a,0x06,0x01,0x03,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe5,0x01,0x04,0xe7,
- 0x04,0x01,0xe6,0x06,0xe6,0x04,0x01,0xe5,0x01,0x04,0xe7,0x04,0x01,0xe6,0xe5,0x03,
- 0xe6,0x08,0x01,0xe5,0x05,0xe6,0x08,0x1a,0x01,0xe6,0xe5,0x06,0x05,0x01,0xe5,0x01,
- 0xe5,0x0f,0x05,0x01,0xe6,0x04,0x01,0xe5,0x13,0xe5,0x03,0x01,0xe5,0xe5,0x16,0x01,
- 0x01,0x05,0x01,0x01,0x0c,0x05,0x04,0x05,0x02,0xe5,0x02,0x01,0x02,0xe5,0x04,0x01,
- 0x01,0x05,0x02,0xe5,0x02,0xe6,0x02,0x05,0x02,0xe5,0x04,0x01,0x01,0x05,0x02,0xe5,
- 0x04,0x01,0x01,0x02,0x02,0x01,0x07,0x01,0x01,0x01,0x05,0x08,0x12,0x01,0x02,0xe5,
- 0x0e,0x02,0xe5,0x02,0x15,0x02,0xe5,0x02,0x01,0x02,0xe5,0x14,0x06,0xe6,0xe5,0x16,
- 0x01,0x07,0x01,0x0a,0x03,0x05,0x02,0xe5,0x07,0x05,0x03,0x05,0x04,0x02,0x05,0x03,
- 0x05,0x09,0x05,0x04,0x08,0x05,0x04,0x06,0x04,0x04,0x04,0x0f,0x16,0x0d,0x05,0x05,
- 0xe5,0x0f,0x05,0x05,0x03,0x18,0x03,0x01,0x03,0x02,0x0e,0x0f,0xe5,0xe5,0x09,0xe5,
- 0x10,0x04,0x0b,0xe5,0xe7,0x2b,0xe5,0xe5,0x05,0x02,0x01,0x22,0x03,0xe5,0x3c,0x33,
- 0x02,0xe5,0xe5,0x0e,0x01,0x07,0x01,0x03,0x03,0x01,0x02,0x04,0x01,0x02,0x04,0x01,
- 0x01,0x05,0x01,0xe6,0x04,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,
- 0x06,0xe5,0xe5,0xe5,0x04,0x01,0x01,0x02,0x02,0x01,0xe6,0x06,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x06,0xe5,0xe5,0x06,0x01,0x07,0xe6,0x05,0xe5,0xe5,0xe5,0x04,0x01,
- 0x07,0x01,0x06,0xe5,0xe5,0x06,0x01,0x07,0x01,0x07,0x01,0x0d,0xe5,0x28,0x03,0xe5,
- 0x07,0xe5,0x02,0x02,0x01,0xe5,0xe5,0x05,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x0b,0x05,
- 0xe5,0x01,0x05,0xe5,0xe5,0x04,0xe6,0x05,0x01,0xe5,0x06,0x05,0x03,0x0c,0x09,0x01,
- 0x04,0x19,0x21,0x2f,0x01,0xe7,0x0a,0x08,0x05,0x10,0x09,0x07,0x10,0x02,0x0f,0x16,
- 0x11,0x1c,0x02,0xe6,0x02,0xe5,0x01,0xe5,0x11,0x09,0x0a,0x08,0x02,0x06,0xe5,0x08,
- 0x0b,0x07,0x0b,0x10,0xe5,0x02,0x24,0x07,0x03,0x05,0x08,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x0b,0x05,0x01,0x06,0xe5,0xe5,0xe5,0x04,0x01,0x03,0x03,0x01,0x0e,0x14,
- 0x04,0x01,0x03,0x28,0xe5,0x3c,0x03,0x01,0x02,0xe5,0x07,0x07,0x06,0xe6,0x02,0x03,
- 0xe6,0x09,0xe5,0x03,0x0a,0x04,0x0d,0xe7,0x01,0x01,0x02,0xe5,0x11,0x01,0x02,0x04,
- 0xe7,0x05,0x01,0x13,0x01,0x03,0x17,0x06,0x02,0xe5,0x07,0x13,0x01,0x4e,0x13,0x04,
- 0x09,0x04,0x1a,0x02,0x0c,0xe5,0x0d,0x03,0x09,0x01,0x01,0x04,0x02,0x02,0x05,0x02,
- 0x04,0x0b,0x01,0x02,0x1c,0x0e,0x04,0x0e,0x02,0x01,0x4a,0x03,0x09,0x05,0x0d,0x19,
- 0x03,0xe5,0x0c,0xe6,0x01,0x04,0xe5,0x02,0x09,0x0a,0x12,0xe5,0x06,0x01,0x0c,0x07,
- 0x09,0x0a,0x06,0x07,0x03,0x05,0x03,0x05,0x02,0x02,0x07,0x09,0x19,0x24,0x01,0x01,
- 0x0b,0xe5,0xe5,0x14,0x02,0x06,0x01,0x02,0x02,0xe5,0x09,0x04,0x09,0x09,0x02,0x06,
- 0x01,0x02,0x04,0x02,0x06,0x01,0x07,0x02,0x04,0x01,0x01,0x02,0xe5,0x04,0x02,0x06,
- 0x01,0xe5,0x01,0x03,0x04,0x04,0x01,0x07,0xe5,0x18,0x02,0x1b,0x0c,0x25,0x01,0x06,
- 0x06,0x10,0x14,0x05,0x0e,0xe5,0x02,0xe5,0x03,0x0b,0x0c,0x01,0x04,0x01,0x0a,0x06,
- 0x01,0x0c,0x02,0x03,0x01,0xe5,0x0f,0x02,0x08,0x07,0x0a,0x09,0xe5,0x06,0x04,0x12,
- 0x34,0xe6,0x09,0x1d,0x01,0x07,0x01,0x09,0xe7,0x0f,0xe6,0x04,0x03,0x08,0x0a,0x03,
- 0x04,0x0a,0x04,0x03,0xe6,0x06,0xe6,0x08,0x04,0x05,0x0d,0xe5,0x01,0x09,0xe7,0x06,
- 0xe6,0x06,0x0d,0x40,0x01,0x3c,0x04,0x0d,0x03,0x02,0x04,0xe5,0xe5,0x03,0xe5,0xe6,
- 0x0a,0x02,0x04,0x0a,0x0b,0x06,0x01,0x07,0x01,0x06,0x01,0x01,0x05,0xe5,0x11,0x05,
- 0x09,0x05,0xe5,0x0c,0x34,0x05,0x03,0xe5,0x01,0x0c,0xe5,0xe5,0x13,0x02,0x05,0x05,
- 0xe5,0x01,0x06,0x07,0x04,0x06,0x02,0x03,0x0f,0x04,0x0e,0x01,0x04,0x07,0x04,0x04,
- 0x10,0x13,0x07,0x01,0x03,0x08,0xe6,0x07,0x01,0x4e,0x02,0xe6,0x0d,0x01,0x12,0x08,
- 0x04,0x04,0x01,0x0e,0x01,0x02,0x06,0x0a,0x01,0x07,0x05,0x03,0x01,0x07,0x09,0x09,
- 0x0b,0x01,0xe5,0x05,0x09,0x09,0x01,0x07,0x16,0x06,0xe5,0xe5,0x1a,0x21,0x08,0x03,
- 0xe5,0xe5,0x03,0x07,0x1f,0x09,0x23,0x02,0x07,0x01,0x09,0x07,0x01,0x09,0x02,0xe5,
- 0x02,0x01,0x0b,0x07,0x01,0x09,0x07,0x01,0x09,0x0b,0x11,0x04,0x49,0xe6,0x0a,0x16,
- 0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x01,0xe5,0x03,0xe5,0x04,0x09,0x03,0x01,0xe5,
- 0x01,0x03,0xe5,0x03,0x03,0x05,0x09,0x03,0x05,0x03,0x05,0x03,0x02,0x01,0x02,0x03,
- 0x02,0xe5,0xe5,0x02,0x05,0x03,0x05,0x06,0x01,0xe5,0x02,0x02,0x01,0xe5,0x02,0x01,
- 0xe5,0x01,0x03,0x09,0x05,0x16,0xe5,0x27,0xe6,0x01,0xe5,0x01,0x01,0x08,0xe6,0x14,
- 0x05,0x03,0x05,0xe6,0xe5,0x01,0x01,0x06,0xe5,0x03,0x04,0x01,0x02,0x03,0xe5,0x03,
- 0xe5,0x01,0xe5,0x03,0xe5,0x07,0x09,0xe5,0x07,0xe5,0x02,0x01,0x02,0x0b,0x04,0x01,
- 0x02,0xe5,0x07,0xe5,0x01,0xe5,0x03,0x04,0x01,0x02,0x04,0x01,0x02,0x03,0xe5,0x03,
- 0x08,0xe6,0x07,0x02,0x12,0x25,0x01,0x02,0x02,0xe5,0x03,0x08,0x01,0x02,0x18,0x09,
- 0x01,0x0b,0x02,0x04,0x04,0x04,0x01,0xe5,0xe5,0x03,0x04,0x04,0x04,0x04,0x04,0x04,
- 0x04,0x04,0x02,0x01,0x04,0x01,0xe5,0xe5,0x05,0x01,0x02,0x04,0x02,0x01,0x04,0x02,
- 0x01,0x04,0x04,0x04,0x01,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x01,
- 0x04,0x04,0x3d,0x04,0x03,0x02,0x06,0xe5,0x03,0x1b,0x09,0x01,0x0e,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0x02,0x06,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x0a,0x3d,0x04,0xe6,
- 0x0f,0x1a,0x09,0x01,0x04,0x01,0x0c,0x02,0x03,0x02,0x02,0x06,0x02,0xe5,0x01,0x02,
- 0x02,0x01,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0x06,0x02,0x01,0x01,0x02,0x02,0x01,
- 0x01,0x04,0x02,0xe5,0x01,0x02,0x02,0x06,0x02,0x06,0x02,0x01,0x01,0x02,0x02,0x06,
- 0x02,0x03,0x02,0x02,0x04,0x04,0x04,0x1d,0x01,0x22,0xe5,0x01,0x02,0x0e,0x01,0x02,
- 0x14,0x03,0x05,0x01,0x01,0x04,0x0a,0x03,0x02,0xe7,0x02,0x05,0x03,0x04,0xe5,0x02,
- 0x05,0x03,0x05,0x03,0x01,0x02,0xe5,0x02,0x04,0xe5,0x02,0x07,0x03,0x04,0xe5,0x02,
- 0x02,0x01,0xe5,0x02,0x01,0x02,0xe5,0x02,0x04,0xe5,0x02,0x04,0xe5,0x02,0x01,0x01,
- 0xe6,0x02,0x01,0x02,0xe5,0x02,0x07,0x01,0x01,0x02,0x14,0x01,0x01,0x1d,0x03,0xe8,
- 0x29,0x09,0x01,0x04,0xe6,0x04,0x04,0x03,0x05,0x09,0x07,0x01,0x04,0x04,0x09,0x03,
- 0xe7,0x01,0x05,0xe6,0xe5,0x03,0x06,0x03,0x03,0x01,0x04,0x04,0x03,0x02,0x02,0x03,
- 0x02,0xe7,0x03,0x01,0xe5,0xe5,0x03,0x04,0x06,0x04,0x01,0xe5,0xe5,0x01,0x1d,0x01,
- 0x21,0x02,0x01,0x10,0x1a,0x05,0xe5,0x01,0x06,0x01,0x0c,0x02,0x01,0x01,0x02,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0xe5,0x03,0x02,0x06,0x01,0xe5,
- 0xe5,0x03,0x01,0xe5,0x04,0x02,0x02,0x06,0x01,0xe5,0x05,0x02,0x01,0xe6,0x01,0x02,
- 0x01,0x01,0x02,0x01,0xe8,0x02,0x01,0xe5,0x05,0x01,0xe5,0xe6,0x02,0x02,0x02,0x03,
- 0x1b,0x01,0x1f,0x05,0xe5,0x0f,0x02,0x02,0x1a,0xe5,0x15,0x02,0x02,0xe5,0x01,0x02,
- 0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x01,0x01,0x02,0x02,0x03,0x02,
- 0x02,0x01,0x01,0x02,0x02,0x05,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,
- 0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x01,0x04,0x02,0x44,0x02,0xe7,
- 0x0f,0x21,0xe5,0x17,0xe5,0x01,0xe5,0x03,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,
- 0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x06,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x08,0x3c,0xe8,0x08,0x01,0x02,0xe5,0x07,0x09,0x04,0x01,0x02,
- 0x04,0x01,0x02,0x09,0x07,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe5,0x06,0xe5,0xe7,0x04,
- 0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,
- 0xe5,0x05,0x01,0xe6,0x06,0x03,0x05,0x09,0x09,0x09,0x09,0x0d,0xe6,0xe6,0x01,0x09,
- 0x1d,0x1e,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x49,0x02,0x01,0xe6,0x0a,0x1d,0x1f,0x09,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,
- 0xe5,0x04,0x02,0xe5,0x04,0x02,0x06,0x02,0xe5,0x04,0x02,0xe5,0x05,0xe5,0x01,0x06,
- 0x02,0xe5,0x04,0x02,0x06,0x02,0x06,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,
- 0x02,0x4a,0xe7,0x0e,0xe5,0x19,0x01,0x11,0x01,0x09,0xe7,0x03,0x02,0x01,0x04,0x02,
- 0xe6,0x03,0x02,0x01,0x04,0x02,0x01,0x04,0x02,0xe6,0x03,0x02,0x01,0x04,0x02,0x01,
- 0x06,0x02,0x01,0x03,0xe5,0x01,0x01,0x04,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0x01,
- 0x04,0x02,0x01,0x04,0x02,0xe6,0x03,0x02,0x01,0x4b,0x11,0x19,0x01,0xe5,0x08,0x06,
- 0x01,0xe5,0x05,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x03,0xe5,0x01,0xe5,0x03,
- 0xe5,0x01,0xe5,0x03,0xe5,0x01,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x03,0x02,0x02,
- 0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0xe5,0x01,0x02,0x02,0xe5,0x07,0x35,0x02,0xe5,0x02,0x03,0x01,0xe5,0x26,
- 0x02,0x01,0x11,0x01,0x04,0x0e,0x04,0x01,0x02,0x09,0x09,0x04,0x04,0x01,0x04,0x02,
- 0x04,0x04,0x08,0x02,0x04,0x04,0x09,0x01,0x07,0x04,0x01,0x02,0x04,0x04,0x09,0xe5,
- 0x07,0x07,0x01,0x17,0x28,0xe5,0x01,0x15,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x01,
- 0x03,0xe8,0xe5,0x02,0xe7,0x02,0x02,0x01,0xe5,0x01,0x05,0xe5,0x01,0xe5,0x02,0xe6,
- 0x01,0x03,0xe7,0x01,0x05,0xe5,0x01,0x03,0x01,0xe5,0x01,0x05,0xe5,0x01,0x03,0x01,
- 0xe5,0x03,0x04,0xe6,0x01,0x04,0xe6,0x01,0x04,0xe6,0x01,0xe5,0x03,0xe5,0x01,0x05,
- 0xe5,0x01,0x03,0x01,0xe5,0x01,0x05,0xe5,0x01,0x03,0x01,0xe6,0xe5,0x04,0xe5,0x07,
- 0xe5,0x06,0xe6,0x05,0x01,0xe5,0x07,0xe5,0x07,0xe6,0x03,0x03,0x01,0x09,0x10,0x10,
- 0x01,0xe6,0x07,0xe5,0x07,0x06,0x01,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x09,0xe5,0x07,
- 0xe5,0x07,0xe6,0x06,0xe5,0x09,0xe5,0x07,0x09,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,
- 0x07,0xe6,0x06,0xe6,0x28,0x18,0x07,0x01,0x12,0x18,0x01,0x0e,0x01,0x03,0x02,0x02,
- 0xe5,0xe5,0x01,0x03,0x02,0xe5,0xe5,0x02,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0xe5,
- 0xe5,0x02,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0xe5,0xe5,0x02,0x04,0xe5,0xe5,0x02,
- 0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x06,0x02,0x06,0xe5,0xe5,0x02,0x02,0x02,
- 0x06,0x02,0x03,0x1d,0x09,0x14,0xe5,0x03,0x01,0x02,0xe5,0x18,0x10,0x01,0x0d,0x01,
- 0x08,0xe5,0xe5,0x01,0x02,0x01,0x01,0x07,0x01,0x02,0x03,0xe5,0xe5,0x04,0xe6,0xe5,
- 0x06,0x01,0x02,0x02,0x01,0x01,0x07,0x01,0x05,0x01,0x02,0xe5,0x05,0x02,0x06,0xe5,
- 0xe5,0x01,0x03,0x02,0x02,0x06,0x09,0x05,0x01,0x01,0x09,0x05,0x01,0x01,0x01,0x18,
- 0xe5,0x08,0x15,0x09,0xe5,0x02,0x16,0x10,0x01,0xe5,0x08,0x02,0xe7,0x02,0x02,0xe7,
- 0x01,0x03,0xe8,0x04,0xe8,0x04,0xe8,0x04,0xe8,0x04,0xe8,0x04,0xe8,0x04,0xe8,0x04,
- 0xe7,0x01,0x06,0x01,0xe5,0x04,0xe8,0x07,0xe5,0x08,0x09,0x05,0xe8,0x08,0x05,0xe8,
- 0xe5,0x16,0xe7,0x06,0xe6,0x14,0x03,0x01,0x01,0xe6,0x0f,0x1a,0xe5,0xe5,0x05,0xe5,
- 0xe5,0xe5,0x07,0x09,0x09,0x31,0x09,0x1f,0x2d,0xe5,0xe5,0xe5,0x1b,0xe5,0x2c,0x0b,
- 0x05,0x01,0x02,0x04,0x01,0x07,0x01,0x03,0x03,0x01,0x02,0x01,0x02,0x01,0xe5,0x05,
- 0xe7,0x05,0x01,0x01,0x05,0x01,0x01,0x05,0xe7,0x05,0x01,0x02,0x04,0x01,0xe6,0x04,
- 0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x02,0x06,0x01,0x07,0xe8,0x04,0x01,0x02,0x04,
- 0x01,0x01,0x05,0x01,0xe5,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0xe6,0x04,0x01,0xe6,
- 0x04,0x01,0xe6,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x02,0x09,0x01,0x02,0x08,
- 0x01,0x01,0xe5,0x01,0x05,0xe5,0x07,0xe5,0xe5,0x05,0xe5,0xe5,0xe5,0x03,0xe5,0x0a,
- 0x06,0xe5,0x02,0x04,0xe5,0xe5,0x05,0xe5,0xe5,0x02,0x02,0xe5,0x01,0xe5,0x03,0xe5,
- 0xe5,0x05,0xe5,0x01,0xe6,0x02,0xe5,0x01,0xe5,0x03,0xe5,0xe5,0x04,0x02,0xe5,0x07,
- 0x09,0xe6,0xe6,0x03,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x0c,0x01,0x01,0x16,0x05,
- 0x2c,0x03,0xe5,0x0a,0x01,0x06,0x01,0x07,0x01,0x08,0xe5,0x01,0xe5,0x02,0x01,0x06,
- 0x06,0x06,0x04,0x02,0xe5,0x07,0xe5,0x08,0x04,0xe5,0xe5,0xe5,0x08,0x05,0x03,0x0a,
- 0xe5,0x08,0x05,0x08,0x03,0xe5,0x04,0x04,0x03,0xe5,0x03,0x01,0x07,0xe6,0x04,0x06,
- 0x04,0x01,0x05,0x06,0x01,0x07,0x0c,0x09,0x1a,0xe6,0x01,0x05,0x08,0x0a,0x09,0x08,
- 0x04,0x05,0x02,0x03,0x09,0x02,0x08,0x03,0x03,0x01,0x03,0x06,0x08,0x03,0x03,0x02,
- 0x03,0x04,0x0d,0x01,0x01,0x04,0x02,0x03,0x02,0x09,0x02,0x05,0x0a,0x18,0x05,0x05,
- 0x15,0x23,0x09,0x03,0x0f,0x01,0x19,0x01,0x09,0x07,0xe7,0x11,0xe5,0x02,0x02,0x02,
- 0x02,0x01,0x01,0x04,0x02,0x03,0x13,0x07,0x01,0xe5,0x07,0x02,0xe5,0x01,0xe5,0xe5,
- 0xe5,0x01,0x01,0xe5,0x03,0x04,0x01,0x03,0x05,0x01,0x07,0x01,0x09,0xe5,0x12,0x05,
- 0x03,0x09,0x0c,0x1c,0x01,0x02,0xe5,0xe5,0x0a,0x0f,0x0d,0x01,0x01,0x04,0x01,0x06,
- 0x09,0x09,0x09,0x03,0x06,0x02,0x06,0x08,0x13,0xe5,0x01,0x07,0xe5,0x01,0x07,0x02,
- 0x02,0x02,0x06,0x06,0x09,0x08,0x55,0x0b,0xe5,0x0e,0x03,0x13,0x05,0x03,0x0d,0xe6,
- 0x02,0x0a,0x02,0xe6,0xe5,0xe5,0x04,0x0d,0x03,0x0a,0xe5,0x02,0x03,0x01,0x02,0x04,
- 0xe6,0x02,0x03,0x03,0x01,0x07,0x0e,0x08,0x03,0xe6,0x06,0x05,0x03,0x05,0x06,0x01,
- 0x0a,0x13,0x08,0x1f,0xe6,0xe5,0x07,0x04,0xe5,0x03,0x08,0x0e,0xe5,0x0a,0x06,0x01,
- 0xe5,0x05,0x04,0x04,0x09,0x02,0x09,0x0a,0xe5,0x06,0x05,0xe6,0xe5,0x11,0xe5,0x02,
- 0x04,0x04,0x04,0x13,0x01,0x01,0x05,0x01,0x0a,0x03,0x02,0x01,0x0a,0x0b,0x02,0x01,
- 0x09,0x01,0x0c,0x15,0x03,0x03,0x02,0x08,0x0e,0x07,0x02,0x03,0x06,0x04,0x02,0x0b,
- 0xe5,0x08,0x05,0x03,0x02,0x0d,0x01,0x05,0x09,0x01,0x01,0x02,0x0e,0x02,0x03,0x01,
- 0xe5,0x03,0x02,0x01,0x01,0x04,0x02,0x08,0xe5,0x11,0x16,0x18,0x0c,0x15,0x06,0x03,
- 0x01,0xe5,0x01,0x0e,0x05,0xe6,0x06,0xe6,0x06,0xe5,0x05,0x02,0x02,0x0b,0x01,0x04,
- 0x02,0x06,0x04,0x07,0x01,0xe5,0xe5,0x0f,0x07,0x02,0x08,0xe5,0x03,0x05,0x09,0x0f,
- 0x01,0x01,0xe8,0x02,0xe5,0x07,0x07,0x02,0x01,0x05,0x01,0x01,0x0a,0x03,0xe6,0x01,
- 0xe7,0x05,0x09,0x0a,0xe6,0x10,0x07,0xe7,0x01,0x01,0x14,0x09,0x07,0x01,0x08,0x16,
- 0x03,0x05,0x10,0x03,0x0a,0x13,0x0d,0x13,0x0d,0x01,0x1d,0x09,0x03,0x01,0x0b,0x1e,
- 0x17,0x01,0xe6,0x09,0x01,0x04,0x0b,0x09,0x06,0x01,0xe5,0x09,0x01,0xe5,0xe6,0x01,
- 0x08,0xe6,0x17,0x04,0x05,0x05,0x03,0x02,0xe5,0x01,0x01,0x0c,0x01,0x01,0x01,0x0c,
- 0xe5,0x01,0xe5,0x07,0x0f,0x04,0x04,0x0d,0x02,0x02,0xe5,0x01,0x09,0x09,0x05,0x09,
- 0xe5,0x14,0x02,0x0b,0xe6,0x18,0x20,0x05,0x14,0x12,0x05,0xe6,0xe6,0x01,0x03,0x01,
- 0x02,0x06,0x02,0xe5,0x08,0x04,0x05,0xe5,0x01,0x02,0x07,0x01,0x0a,0x12,0x02,0x07,
- 0x03,0x04,0x1c,0x0a,0x20,0xe5,0x01,0xe6,0x12,0x2d,0x28,0xe5,0x17,0x02,0x01,0x15,
- 0x05,0x01,0x1b,0x09,0x01,0x11,0x01,0x25,0x01,0x24,0x01,0xe6,0x06,0xe5,0x01,0x01,
- 0xe7,0x06,0xe5,0x07,0xe6,0x06,0x06,0x01,0x01,0xe5,0x07,0x07,0x01,0xe5,0xe5,0xe5,
- 0x03,0x07,0x01,0xe5,0x06,0xe5,0x04,0x01,0x0b,0x09,0x02,0x01,0x02,0x01,0xe5,0xe5,
- 0xe5,0x03,0xe7,0x07,0x09,0x08,0xe5,0x07,0xe5,0x08,0x08,0xe5,0x01,0xe5,0xe5,0x02,
- 0x12,0xe6,0x07,0x09,0xe5,0x1c,0x01,0xe6,0xe5,0x01,0x01,0x04,0xe5,0x03,0x04,0xe5,
- 0x0e,0x0f,0x03,0x09,0x05,0x03,0x02,0xe5,0x0e,0x08,0x01,0x0e,0xe5,0x01,0x05,0xe5,
- 0x01,0x02,0x01,0xe6,0x04,0xe5,0x06,0x09,0x05,0xe5,0x01,0x13,0xe5,0x07,0x09,0x05,
- 0x16,0x0a,0x09,0x1b,0x01,0x03,0x02,0x04,0x08,0x01,0x01,0x09,0x14,0x04,0x06,0x01,
- 0xe5,0x12,0x03,0x01,0xe5,0x03,0x03,0xe5,0x01,0x01,0x07,0x01,0x04,0x01,0x02,0x09,
- 0x04,0x01,0x02,0x01,0x0c,0x04,0x0b,0x03,0xe5,0x01,0x01,0x01,0x0f,0x01,0x11,0x03,
- 0x19,0x01,0x07,0x01,0x1d,0x04,0x01,0x01,0x02,0x07,0x02,0x01,0x25,0x06,0xe5,0xe5,
- 0x08,0x09,0x06,0xe5,0xe5,0x08,0x01,0x04,0xe5,0xe5,0x08,0x05,0xe5,0x01,0x09,0x15,
- 0x09,0x05,0xe5,0x01,0x01,0x11,0x01,0x11,0x1d,0x01,0x07,0x01,0x18,0xe5,0x04,0x04,
- 0xe6,0x0a,0x01,0x01,0x03,0x02,0x14,0x01,0x07,0x0b,0x02,0x04,0x05,0x02,0xe5,0xe5,
- 0x06,0x04,0xe5,0x01,0x0a,0x04,0xe5,0x01,0x06,0x02,0x07,0x01,0x06,0x02,0x02,0x01,
- 0x07,0x01,0x02,0x04,0x04,0xe5,0x01,0x0a,0x01,0x07,0x15,0x06,0x16,0x02,0x03,0x02,
- 0x02,0x03,0x1a,0x04,0x02,0x0a,0x01,0x01,0x02,0x01,0x14,0x01,0x01,0x05,0x03,0x07,
- 0x02,0x04,0x01,0x06,0xe5,0xe5,0x08,0x02,0x01,0x01,0x04,0x0a,0x01,0x01,0x09,0x07,
- 0x01,0x09,0x02,0x01,0x01,0x05,0x01,0x02,0x04,0x04,0x03,0x04,0x05,0x01,0x01,0x05,
- 0x13,0x07,0xe5,0x13,0x04,0x02,0x01,0x04,0x02,0x19,0x02,0x01,0xe7,0x0b,0x01,0x0c,
- 0x0e,0x01,0x04,0x02,0x09,0x01,0x07,0x07,0x01,0x09,0x01,0x07,0x01,0x02,0x01,0x02,
- 0x01,0x02,0x01,0x01,0xe5,0xe5,0x04,0x01,0x01,0x07,0x01,0x05,0x02,0xe5,0xe5,0x06,
- 0x04,0x04,0x07,0x01,0x01,0x07,0x01,0x04,0x02,0x15,0x02,0x02,0x17,0x09,0x21,0xe5,
- 0xe5,0xe5,0x01,0x0a,0x01,0x1b,0x01,0x04,0xe5,0xe5,0x03,0x04,0x01,0x02,0x04,0x01,
- 0x02,0x04,0x04,0x04,0x01,0x02,0x04,0x01,0x03,0xe6,0xe5,0x03,0x01,0x02,0x01,0x02,
- 0x04,0x01,0x02,0x04,0x01,0x02,0x06,0x01,0x07,0x04,0x04,0x04,0x04,0x01,0x07,0x01,
- 0x04,0xe7,0x03,0x0a,0xe5,0x01,0x04,0x18,0x04,0x04,0x04,0x1c,0x03,0xe5,0xe5,0xe5,
- 0x10,0x1f,0x07,0x13,0xe5,0x07,0x02,0x10,0x0b,0x11,0x02,0x06,0x0b,0x02,0x10,0x31,
- 0xe5,0x42,0xe5,0xe5,0x01,0x16,0x22,0x04,0x0e,0x02,0xe5,0x04,0x02,0x09,0x09,0x01,
- 0x07,0x06,0x09,0x02,0x06,0x02,0x01,0x01,0x07,0x09,0x0b,0x18,0x13,0x02,0x1d,0x27,
- 0x03,0xe5,0x08,0x01,0x02,0x02,0x06,0x09,0x09,0x04,0x01,0x02,0x02,0x01,0x01,0x02,
- 0x09,0x04,0x01,0x02,0x03,0x05,0x03,0x02,0x02,0x03,0x05,0x03,0xe5,0xe5,0x01,0x09,
- 0x04,0xe6,0x01,0x03,0x07,0x03,0x02,0x02,0x03,0xe5,0xe5,0x01,0x09,0x09,0x06,0x02,
- 0x09,0x04,0x01,0x02,0x03,0x05,0x09,0x04,0x01,0x02,0x05,0x03,0x09,0x09,0x0d,0xe6,
- 0x01,0x02,0x09,0x27,0x13,0x1c,0x14,0x13,0x12,0x02,0x09,0x1c,0xe5,0x12,0x1d,0x09,
- 0x1d,0x04,0x02,0x03,0x0b,0x25,0x07,0x0d,0x2f,0x13,0x15,0x0b,0x1b,0x15,0x1d,0x07,
- 0x1f,0x08,0xe8,0x0e,0x04,0x09,0x09,0x02,0x01,0x09,0x02,0x06,0x02,0x06,0x02,0x06,
- 0x02,0x04,0x01,0x02,0x04,0x01,0x09,0x02,0x01,0x04,0x02,0x04,0x01,0x02,0x04,0x01,
- 0x02,0x01,0x03,0xe5,0xe5,0x06,0x01,0x02,0x06,0x02,0x06,0x09,0x04,0x02,0x01,0x02,
- 0x01,0x09,0x04,0x02,0x15,0x02,0x01,0x02,0x04,0x01,0x02,0x20,0x02,0x0c,0xe5,0x01,
- 0x1a,0x01,0xe5,0x02,0x02,0x03,0x05,0x03,0x05,0x03,0x01,0x03,0x01,0x01,0x01,0x03,
- 0x01,0x01,0x05,0x01,0xe5,0x07,0x01,0x02,0x02,0x01,0x01,0x01,0x03,0x01,0x01,0x01,
- 0xe5,0x01,0x01,0x01,0x01,0xe5,0x03,0x01,0xe5,0x05,0x03,0x02,0x02,0x03,0x07,0xe5,
- 0x07,0xe5,0x05,0x03,0x01,0x0d,0x01,0x01,0x01,0x19,0x01,0x02,0x02,0x03,0x20,0x01,
- 0x01,0xe5,0x0d,0x1b,0x01,0x09,0x09,0x07,0x01,0x13,0x07,0x09,0x01,0x09,0x09,0x09,
- 0x08,0x0c,0x09,0x03,0xe5,0xe5,0x01,0x06,0x02,0x03,0xe5,0x01,0x01,0x0d,0xe5,0x21,
- 0x07,0x01,0x03,0x1e,0x03,0xe5,0x0b,0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe6,
- 0x04,0xe8,0x04,0xe8,0xe5,0x02,0xe7,0x01,0x03,0xe7,0x01,0x03,0xe8,0xe5,0x02,0xe8,
- 0xe5,0x02,0xe8,0xe5,0x02,0xe7,0x01,0x03,0xe8,0x04,0xe7,0x08,0xe6,0x05,0xe7,0x01,
- 0x04,0xe6,0x01,0x05,0xe5,0x01,0x05,0xe6,0x04,0xe7,0x07,0xe6,0x04,0xe7,0x07,0xe5,
- 0x07,0xe5,0x05,0xe8,0x04,0xe7,0x07,0xe5,0x07,0xe5,0x07,0x02,0x09,0x03,0x01,0x0a,
- 0x09,0x09,0x06,0x01,0xe5,0x07,0x09,0x09,0x11,0x01,0xe6,0x06,0x11,0x09,0x0b,0x01,
- 0x04,0x02,0x01,0x09,0x09,0xe5,0x07,0xe6,0x06,0x0a,0xe5,0x06,0x0a,0x10,0x01,0x09,
- 0x0a,0x19,0xe6,0x0c,0x01,0x0a,0x09,0x09,0x06,0x01,0xe6,0xe5,0x01,0x02,0x01,0x01,
- 0x02,0xe5,0x02,0x01,0x02,0xe5,0xe5,0xe5,0xe5,0x01,0x04,0x01,0x02,0xe5,0xe5,0x03,
- 0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0xe5,0x02,0x01,0x02,0x02,0x01,0x01,
- 0x02,0x02,0x01,0x06,0xe5,0x02,0x02,0x01,0xe5,0x02,0x04,0x02,0xe5,0x07,0x0b,0x01,
- 0x02,0x0a,0x01,0x01,0x01,0x02,0x03,0x04,0x0d,0x01,0x01,0x02,0x04,0x01,0x02,0x03,
- 0x17,0xe5,0xe6,0x3b,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x02,0x04,0xe5,0xe5,
- 0xe5,0x02,0x01,0x08,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x0c,0x03,0x01,0x03,
- 0x04,0x04,0x09,0x09,0x04,0xe5,0x11,0xe5,0x16,0x04,0xe5,0x02,0x04,0xe5,0x1c,0xe7,
- 0x19,0x09,0x09,0x0c,0x01,0xe5,0x01,0x03,0x01,0xe5,0x05,0x01,0xe5,0x01,0x03,0x01,
- 0xe5,0x01,0x03,0x01,0xe6,0xe6,0x01,0xe7,0x05,0x01,0xe5,0x01,0x03,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x04,0x03,0x01,0x07,0xe6,0x01,0x06,0x02,0xe5,0x07,0xe5,
- 0x0b,0x01,0xe5,0x02,0x06,0x05,0x01,0xe5,0x02,0x02,0x13,0x01,0xe5,0x05,0x01,0xe5,
- 0x02,0x17,0x02,0xe5,0x1b,0x1a,0xe5,0x05,0x02,0x06,0x09,0xe5,0xe5,0x13,0x05,0x02,
- 0x32,0xe5,0x07,0xe5,0x1b,0xe5,0x0f,0x02,0x3f,0x0a,0xe7,0xe5,0x0e,0x01,0x07,0x01,
- 0x07,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x02,0x02,0xe6,0x01,0x01,0x02,0x01,
- 0x03,0x03,0xe6,0x01,0x04,0xe8,0x03,0xe8,0x02,0x02,0xe6,0xe5,0x04,0x01,0x02,0x04,
- 0xe6,0xe5,0x04,0x01,0xe5,0x07,0x01,0xe6,0x04,0x01,0x01,0x05,0x01,0x01,0x05,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0xe5,0x05,0x01,0x01,0x05,0x01,
- 0x02,0x04,0x01,0x07,0x01,0x02,0x04,0x01,0x0a,0x01,0x01,0x14,0x0b,0x02,0x03,0x0f,
- 0x02,0x01,0x02,0x01,0x01,0xe5,0x05,0x01,0x01,0xe5,0x0d,0xe6,0x09,0x04,0x03,0x07,
- 0x09,0xe5,0x02,0x07,0x03,0x01,0x03,0xe6,0x05,0x01,0x02,0x04,0x04,0x0b,0x02,0xe5,
- 0x03,0x03,0xe5,0x07,0xe5,0x02,0x02,0xe5,0x1d,0x01,0x07,0x1a,0x07,0xe5,0xe7,0x0a,
- 0x0d,0x03,0x0b,0x09,0x02,0x06,0x02,0x09,0x03,0x02,0x0b,0x0c,0x02,0x0e,0xe5,0x01,
- 0x04,0x0d,0x06,0x02,0x08,0x06,0x02,0x06,0x0c,0x04,0x03,0x07,0x01,0xe5,0x02,0x06,
- 0x05,0x06,0x02,0x06,0x05,0x05,0x03,0x06,0x1a,0x04,0x02,0x0d,0x11,0x17,0x03,0x04,
- 0x03,0x05,0x0a,0x06,0x03,0x07,0x0b,0x0f,0x10,0x12,0x17,0x0b,0xe5,0x03,0x05,0x08,
- 0x19,0x2c,0x02,0x03,0x0d,0x01,0x01,0x09,0x08,0x06,0x01,0xe5,0x01,0x06,0x09,0x04,
- 0x01,0x02,0x09,0xe5,0x01,0x02,0x01,0x04,0x04,0xe5,0x02,0xe5,0xe5,0x07,0xe7,0x06,
- 0x01,0xe5,0x05,0xe6,0x03,0x02,0x08,0x01,0x08,0x1f,0x04,0x1c,0x17,0x01,0x19,0x09,
- 0xe5,0x02,0x0d,0x02,0x1a,0x01,0x03,0x01,0x09,0x07,0x06,0x04,0x0c,0x01,0x04,0x0e,
- 0xe5,0x01,0x03,0x06,0x01,0x02,0x05,0xe5,0x04,0x01,0x02,0x2e,0x01,0x03,0x03,0x37,
- 0x1a,0x04,0x03,0xe5,0xe5,0x08,0x05,0xe5,0x0b,0x09,0x0a,0x04,0x02,0x10,0x01,0xe5,
- 0x05,0x03,0x05,0x03,0x03,0x05,0x05,0x0a,0x03,0x0e,0x07,0x03,0x01,0x01,0x01,0x03,
- 0x03,0xe5,0x07,0x08,0x0b,0x04,0x08,0xe5,0x0c,0x0b,0x1a,0x1e,0xe5,0x01,0xe5,0x09,
- 0x02,0x03,0x12,0x0b,0x04,0x02,0x03,0x05,0x06,0x09,0x09,0x06,0x07,0x04,0x04,0x0b,
- 0x05,0x03,0x02,0x04,0x06,0x02,0x06,0xe6,0x09,0x03,0x02,0x01,0x11,0x01,0x0c,0x01,
- 0x05,0x0a,0xe5,0x10,0x03,0x09,0x12,0x0b,0x02,0x03,0x01,0x0b,0xe5,0xe5,0x08,0x1b,
- 0x12,0xe5,0x03,0x02,0x0b,0x09,0x26,0x04,0xe6,0x0e,0x01,0x07,0x09,0x0b,0x05,0x17,
- 0x07,0x08,0x2b,0x0a,0xe6,0x04,0x0d,0x08,0x17,0x01,0x07,0x09,0xe6,0x05,0x02,0x13,
- 0x05,0x03,0x01,0x02,0xe5,0xe7,0x03,0xe5,0xe7,0x07,0xe5,0x07,0x01,0xe6,0x0f,0x10,
- 0x03,0xe6,0x06,0x01,0x07,0xe5,0x11,0x01,0x07,0xe6,0x37,0x01,0x03,0x01,0x22,0x06,
- 0x06,0x05,0x0c,0x02,0x05,0x02,0x0c,0x05,0x0b,0x06,0xe5,0x07,0x02,0x04,0xe5,0xe5,
- 0x03,0x03,0x03,0x1a,0x07,0x04,0x11,0x01,0x1e,0x20,0x14,0xe6,0xe5,0x0e,0x19,0x04,
- 0x01,0x06,0x03,0x02,0x05,0x01,0x04,0x09,0x02,0xe6,0x03,0xe6,0x0d,0x02,0xe5,0x04,
- 0x06,0x03,0x01,0x08,0x05,0x06,0x06,0x03,0x02,0xe5,0x03,0x09,0x0e,0x05,0x03,0x02,
- 0x01,0x06,0x07,0x18,0x03,0x09,0x15,0x08,0x01,0x01,0xe5,0xe5,0xe5,0x09,0x02,0x0b,
- 0x18,0xe5,0x0b,0xe5,0x03,0x02,0x06,0xe5,0x04,0x02,0x03,0xe5,0x05,0xe5,0x05,0x0a,
- 0x06,0x01,0x03,0x07,0x09,0x03,0x06,0x07,0xe5,0x02,0x05,0x10,0x09,0x0c,0x1c,0xe5,
- 0x13,0x14,0x03,0xe7,0x0c,0x01,0x28,0x13,0x09,0x09,0xe5,0x11,0x14,0xe5,0x12,0x02,
- 0x08,0x05,0x02,0xe5,0x06,0x0a,0x0a,0x0f,0x02,0x09,0x02,0x0e,0x01,0x09,0x20,0xe5,
- 0x01,0xe6,0x0a,0x09,0x16,0xe5,0x07,0xe5,0x04,0x01,0xe6,0x04,0x02,0x0b,0x01,0xe5,
- 0x06,0xe5,0x05,0x08,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x11,0x01,0xe5,0xe6,0x01,0x02,
- 0xe5,0xe6,0x04,0xe6,0xe6,0x03,0x08,0xe6,0x04,0x02,0xe5,0xe6,0x06,0x04,0x17,0x02,
- 0x01,0xe5,0x08,0x22,0x02,0x01,0xe5,0x01,0x01,0x08,0xe6,0x06,0x17,0xe5,0x05,0xe5,
- 0x05,0x03,0x05,0xe6,0x15,0xe6,0x05,0x05,0x03,0x09,0xe5,0x03,0xe7,0xe5,0x04,0x09,
- 0x04,0x01,0xe5,0x01,0xe6,0x01,0xe6,0x02,0xe5,0x01,0xe6,0x08,0xe5,0x0a,0xe7,0xe7,
- 0x0d,0x02,0x0a,0xe5,0x07,0xe5,0x01,0xe6,0x01,0x06,0x1d,0x01,0x02,0x01,0x01,0x04,
- 0x05,0x01,0xe5,0xe5,0x06,0x13,0x01,0x04,0x01,0x0a,0x06,0x01,0xe5,0xe5,0x03,0x01,
- 0xe5,0x03,0x01,0xe5,0xe5,0x05,0x01,0xe5,0xe5,0x02,0xe5,0x06,0x01,0x01,0xe5,0xe5,
- 0x03,0xe5,0x07,0xe5,0x06,0xe5,0x0d,0x01,0x01,0x07,0x01,0xe5,0x08,0x08,0x05,0x01,
- 0x0a,0x06,0x09,0x01,0x0b,0x01,0xe5,0x0b,0x04,0x1a,0x08,0x02,0x07,0x02,0x01,0x07,
- 0x10,0x02,0x01,0x04,0x0c,0x06,0xe5,0xe5,0x05,0x08,0xe5,0x01,0x09,0x01,0x04,0x0c,
- 0x01,0x04,0xe5,0x06,0xe5,0x0c,0x0a,0x01,0x09,0x1b,0x01,0x08,0x0a,0x04,0x02,0x01,
- 0x0e,0x0e,0x18,0xe5,0x04,0x02,0x02,0xe5,0x0a,0x01,0x01,0x02,0xe5,0x01,0xe5,0x10,
- 0x09,0x07,0x02,0xe5,0x08,0x01,0x03,0x01,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x01,0x05,
- 0x02,0x07,0x02,0x0a,0x01,0x0c,0xe5,0x01,0x08,0x02,0x0c,0x07,0x01,0x1d,0xe8,0x01,
- 0xe5,0x06,0xe5,0x0e,0x02,0x01,0x01,0x07,0x08,0x1a,0xe6,0x01,0x02,0x0a,0x03,0x02,
- 0x01,0xe5,0x02,0x13,0x09,0x02,0x01,0xe5,0x02,0x05,0x01,0x01,0x02,0x01,0x05,0x04,
- 0x03,0x04,0x04,0x09,0x09,0x05,0x01,0x01,0x09,0x07,0x03,0x09,0x07,0x01,0x05,0x01,
- 0x01,0x13,0x05,0x02,0xe5,0x06,0x01,0x01,0x01,0xe5,0x03,0x0f,0x01,0x01,0x07,0x01,
- 0x03,0xe5,0x17,0x02,0xe6,0xe6,0x0b,0x01,0x07,0x13,0x01,0x04,0x07,0x04,0x05,0xe5,
- 0x01,0x01,0x18,0xe5,0xe5,0xe5,0x10,0x01,0x0c,0x08,0x02,0x09,0x0a,0xe5,0x03,0x07,
- 0x01,0x04,0x18,0x07,0x09,0x01,0x1b,0x07,0x1b,0xe9,0x0c,0x01,0xe6,0x04,0x13,0x01,
- 0x05,0x0b,0x09,0x01,0x03,0xe5,0x0b,0x03,0xe5,0x01,0x01,0x01,0x01,0xe5,0x0d,0x01,
- 0x16,0x01,0xe6,0xe5,0x10,0x04,0x07,0x01,0x03,0xe6,0x10,0xe5,0x01,0x02,0xe5,0x06,
- 0x04,0x01,0xe5,0xe5,0x0a,0xe5,0x0f,0x1f,0xe5,0x01,0x02,0x05,0xe5,0x08,0x2a,0x1d,
- 0x06,0x02,0x02,0x03,0x0c,0x1a,0x02,0x02,0x08,0x02,0x08,0x25,0x06,0x02,0x1a,0x02,
- 0x13,0xe5,0x07,0x0d,0xe5,0x03,0x01,0x02,0x05,0x36,0x01,0x11,0x05,0x05,0x03,0xe5,
- 0x07,0xe5,0x0d,0x17,0xe5,0x01,0xe5,0x3b,0xe6,0x06,0x01,0x17,0xe5,0x01,0x01,0x11,
- 0x09,0x01,0x0b,0x05,0xe9,0xe5,0x0b,0x09,0x09,0x06,0x02,0x06,0x02,0x02,0xe5,0x04,
- 0x06,0x02,0x03,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x02,0x09,0x09,0x09,0xe6,0x03,
- 0x04,0x02,0x03,0x02,0x09,0x06,0x02,0x09,0x09,0x04,0x01,0x02,0x03,0x05,0x09,0x09,
- 0xe5,0x03,0x03,0x09,0x03,0x05,0x05,0x03,0x0d,0x01,0xe5,0xe5,0x01,0x24,0x02,0x08,
- 0xe5,0x11,0x0a,0x1a,0x29,0xe5,0xe5,0x07,0xe5,0x0f,0x20,0x4f,0x04,0x02,0xe5,0x01,
- 0x27,0x0b,0x1c,0x10,0x09,0x2b,0x02,0x08,0x2f,0x25,0x2b,0x09,0xe7,0xe5,0x07,0x16,
- 0x01,0x04,0x01,0x02,0x07,0x01,0x07,0x01,0x04,0x0c,0x01,0x01,0x04,0x02,0xe7,0xe5,
- 0x01,0x01,0xe7,0x05,0x11,0x0c,0x01,0x01,0x04,0x01,0x04,0x02,0x06,0x02,0x09,0x01,
- 0x09,0x04,0x0c,0x01,0xe6,0x04,0x13,0x01,0xe7,0x03,0x13,0x01,0x1a,0x01,0x10,0xe5,
- 0x0e,0x01,0xe5,0x05,0x02,0x06,0x01,0xe5,0x02,0x02,0x01,0xe5,0x08,0x06,0x01,0xe6,
- 0x01,0x02,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe5,0x02,0x0c,0x02,0x09,0xe5,0x06,
- 0x01,0xe5,0x07,0xe5,0x04,0xe5,0x01,0x06,0x01,0xe5,0x04,0xe5,0x01,0x09,0x06,0x01,
- 0x01,0x05,0x02,0x0d,0x02,0x01,0xe6,0x04,0x02,0x09,0x06,0x01,0xe5,0x16,0x01,0xe6,
- 0x13,0x0c,0x01,0x09,0x07,0x01,0x07,0x01,0x03,0x0a,0x04,0xe5,0x0f,0x01,0xe5,0x05,
- 0x01,0x0d,0x03,0x08,0xe5,0xe5,0x07,0x02,0x06,0xe5,0x08,0x09,0x01,0x09,0x03,0x03,
- 0x01,0x07,0x01,0xe5,0x02,0x02,0x16,0x05,0xe5,0x08,0x01,0x24,0xe6,0x13,0xe6,0x07,
- 0xe6,0xe5,0x04,0xe6,0x06,0xe6,0x06,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0xe5,0x04,0xe6,
- 0x01,0x04,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0x04,0xe8,0xe5,0x03,0xe6,
- 0x01,0x01,0x04,0xe6,0x01,0x03,0xe8,0x05,0xe7,0xe5,0x03,0xe7,0x06,0xe6,0xe5,0x02,
- 0xe8,0xe5,0x04,0xe6,0x04,0xe7,0x07,0xe5,0x07,0xe6,0x04,0xe8,0xe5,0x02,0xe7,0x07,
- 0xe5,0x07,0xe5,0x06,0xe5,0xe6,0x03,0x08,0x02,0x03,0x01,0x03,0x0f,0x02,0xe6,0x04,
- 0x01,0xe5,0x08,0xe5,0x07,0x06,0x01,0xe5,0x08,0x10,0x01,0xe5,0x08,0x06,0x05,0xe5,
- 0x04,0x08,0x01,0xe5,0x05,0x02,0xe5,0xe6,0x01,0x02,0x03,0x02,0x01,0x06,0x02,0xe5,
- 0x08,0xe5,0xe6,0x01,0x01,0x07,0x02,0xe5,0xe6,0x04,0x06,0x01,0xe5,0x05,0x05,0xe5,
- 0x07,0xe5,0x01,0x01,0x18,0x03,0x0d,0x04,0x02,0x15,0x09,0x01,0x14,0x06,0x01,0xe5,
- 0xe5,0x08,0x09,0x04,0x01,0xe5,0x08,0x06,0x08,0x03,0x01,0x03,0x02,0x01,0xe5,0x04,
- 0x02,0x06,0xe5,0x07,0xe5,0xe5,0x06,0x02,0x0f,0xe5,0xe5,0x01,0x04,0x08,0x03,0x06,
- 0x01,0x02,0x04,0x08,0x09,0xe5,0xe5,0x1a,0xe5,0x0c,0x02,0x09,0x12,0x07,0x01,0xe5,
- 0x19,0x01,0x0a,0x10,0x01,0x11,0x07,0x08,0xe5,0x01,0xe5,0xe5,0x03,0x02,0x07,0x01,
- 0x02,0x08,0x04,0x04,0x07,0x01,0x05,0x03,0x07,0x07,0x0e,0x06,0x07,0x01,0x01,0x05,
- 0x1c,0x01,0x01,0x0d,0x02,0x02,0xe5,0x04,0x0d,0x02,0x02,0x06,0x01,0xe5,0x08,0x08,
- 0xe5,0x05,0x01,0xe5,0x19,0x01,0xe5,0x08,0x06,0x05,0x01,0xe5,0x05,0xe7,0x01,0x01,
- 0xe5,0x02,0x01,0x02,0xe5,0x01,0x01,0xe6,0x01,0x03,0x01,0xe5,0xe6,0x05,0x02,0x06,
- 0x01,0xe5,0x01,0x01,0xe6,0xe6,0x05,0x02,0x02,0x01,0xe5,0x02,0x10,0x02,0x03,0xe7,
- 0xe5,0x03,0xe6,0x1a,0xe5,0xe6,0x0c,0x02,0x06,0x02,0xe5,0x0c,0x09,0x03,0xe5,0x05,
- 0x02,0x06,0xe5,0xe5,0x03,0x06,0x04,0x03,0x0d,0x01,0x02,0x01,0x02,0x15,0x02,0x04,
- 0x03,0x02,0x0b,0x04,0x01,0xe5,0x0d,0x06,0x1c,0x09,0x14,0x12,0x16,0xe5,0xe6,0xe5,
- 0x0b,0x02,0x01,0x04,0x02,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,0x06,0xe5,0xe5,
- 0x02,0x03,0x01,0x07,0x01,0xe6,0x04,0x01,0x07,0xe6,0xe5,0xe5,0x01,0xe5,0xe5,0xe5,
- 0x04,0x01,0x01,0x05,0x01,0x01,0x03,0xe6,0xe5,0xe5,0x04,0x01,0x01,0x01,0x05,0x01,
- 0x07,0x01,0xe6,0x04,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0xe5,0xe5,
- 0x03,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x0b,0x02,
- 0x0d,0x01,0xe5,0xe5,0x03,0x01,0xe5,0x01,0x09,0x05,0xe5,0xe5,0x02,0x02,0x01,0x01,
- 0x01,0x01,0xe6,0x02,0x02,0x15,0xe5,0x02,0x05,0xe5,0x02,0x02,0x01,0x01,0x07,0x04,
- 0x0e,0xe6,0xe5,0x03,0x02,0xe5,0x01,0xe5,0x08,0x03,0xe6,0x01,0x07,0x01,0x0a,0xe5,
- 0x13,0x05,0x08,0x03,0x03,0xe5,0x09,0x04,0x06,0x16,0x08,0x02,0xe5,0x0b,0x08,0xe5,
- 0xe5,0x02,0x09,0xe5,0x01,0x0d,0x04,0x02,0x03,0x07,0x01,0x02,0x03,0x05,0x03,0x07,
- 0xe5,0x01,0x03,0x02,0x01,0x04,0x0d,0xe5,0x03,0x05,0xe5,0x01,0x02,0x01,0xe6,0xe5,
- 0x0d,0xe5,0x01,0x03,0x04,0x01,0x02,0x09,0x09,0x1d,0xe5,0x36,0xe5,0xe5,0xe5,0x01,
- 0x09,0x02,0x1c,0x0a,0x04,0x08,0x06,0x02,0x06,0x02,0x02,0x01,0x07,0x08,0x04,0xe5,
- 0x01,0xe5,0x01,0x04,0x07,0x01,0x01,0x01,0xe5,0x04,0x17,0x06,0x02,0x06,0x09,0x02,
- 0x05,0x0b,0xe5,0x16,0x03,0x15,0x12,0x06,0xe5,0x03,0xe5,0x08,0x03,0x04,0x07,0x03,
- 0x02,0x01,0x02,0x01,0xe5,0x07,0x02,0x01,0x07,0x03,0x05,0xe6,0x06,0x01,0x07,0x01,
- 0x07,0x01,0x07,0xe5,0x19,0x01,0xe6,0x06,0xe6,0xe5,0x05,0x03,0x0a,0x05,0x01,0x01,
- 0x03,0x0e,0xe5,0x03,0xe5,0x18,0x0c,0x1d,0x10,0x03,0xe5,0x07,0x06,0x03,0xe5,0xe5,
- 0x05,0x02,0xe5,0x01,0x0c,0x01,0x01,0x02,0x09,0x03,0x03,0x06,0x04,0x09,0x04,0x03,
- 0x10,0x11,0x01,0x07,0x22,0x01,0x01,0x0b,0x01,0x0d,0x04,0x01,0x10,0xe6,0x06,0x09,
- 0x2c,0x09,0x05,0x2b,0x05,0x03,0x0a,0x02,0xe6,0x02,0x03,0x05,0xe5,0x01,0x05,0x09,
- 0x09,0xe5,0x0b,0x01,0x03,0x03,0x09,0x03,0x02,0x01,0x08,0x0a,0x04,0x0c,0x03,0x0f,
- 0x27,0x0a,0x09,0x02,0x06,0xe6,0xe6,0x09,0x02,0xe5,0x0c,0x07,0x0a,0xe5,0x02,0x03,
- 0x06,0x0e,0x04,0x02,0x05,0x08,0x04,0x0c,0x02,0x03,0x0b,0x01,0x02,0x02,0x04,0xe5,
- 0x04,0x05,0x0d,0x10,0x04,0x11,0x18,0x09,0x06,0x12,0x14,0x01,0x03,0x01,0xe5,0x0b,
- 0x02,0x09,0x01,0x09,0x07,0x09,0x01,0x08,0x0d,0x10,0x01,0x05,0x12,0x02,0x0c,0x02,
- 0x06,0x0a,0x03,0x01,0x01,0x09,0x07,0x0b,0x0b,0x09,0x25,0x09,0x1d,0x01,0xe6,0x0b,
- 0x01,0x02,0x10,0x11,0xe7,0x05,0x01,0x02,0x04,0x01,0x01,0x06,0xe6,0x04,0x01,0x01,
- 0x07,0xe5,0x01,0x04,0xe7,0x05,0x05,0x03,0x06,0xe5,0x01,0xe5,0x01,0x05,0x01,0xe5,
- 0xe5,0x05,0xe5,0x03,0x03,0xe5,0x0f,0x01,0xe6,0xe5,0x04,0x01,0xe5,0x01,0x03,0x01,
- 0x07,0xe5,0x03,0x03,0x09,0x03,0x05,0xe6,0x01,0xe5,0x02,0xe5,0x02,0x22,0xe5,0xe5,
- 0x05,0xe5,0x03,0x05,0x01,0x0c,0x01,0x12,0x07,0x0a,0x06,0x03,0xe5,0x01,0x09,0x02,
- 0xe5,0x09,0x1d,0x02,0x04,0x01,0x02,0x09,0x09,0x0c,0xe5,0x02,0x0c,0x02,0x0f,0xe5,
- 0x04,0x09,0x06,0x03,0x0b,0xe5,0x08,0x16,0x02,0xe5,0x02,0x04,0x25,0x05,0x09,0x02,
- 0x01,0x0b,0x09,0x05,0x02,0x04,0x01,0x04,0x01,0x02,0x01,0x04,0x02,0x0a,0x01,0x05,
- 0x06,0x02,0x02,0x02,0xe5,0x03,0xe7,0xe5,0x01,0x01,0x01,0x08,0x06,0x03,0x05,0x02,
- 0xe5,0xe5,0x06,0x02,0xe5,0x02,0x04,0x08,0x0c,0x03,0x01,0x06,0x02,0x1b,0x05,0x01,
- 0xe6,0x01,0xe5,0x0d,0x11,0xe5,0x08,0x04,0x01,0x01,0x07,0x0b,0x0e,0x02,0x03,0x08,
- 0x06,0x03,0x05,0x01,0x07,0x09,0x03,0x05,0xe6,0x0a,0x0b,0x10,0xe6,0xe5,0x03,0x07,
- 0x01,0xe5,0x09,0x0b,0x0e,0x05,0x27,0xe8,0xe5,0x1a,0x08,0xe5,0x12,0x06,0x03,0x08,
- 0x02,0x0a,0xe5,0x03,0x09,0x03,0x01,0x07,0xe5,0x02,0xe5,0x03,0x0a,0x13,0x05,0x0d,
- 0x13,0x01,0x06,0x2e,0x26,0x03,0x01,0x0b,0xe5,0x01,0xe5,0x08,0x01,0x09,0x04,0x04,
- 0x09,0x06,0x0c,0x04,0x04,0x07,0x0a,0x05,0x0e,0x08,0x05,0x03,0x0c,0x09,0x06,0x08,
- 0x09,0x09,0x09,0x08,0x02,0x08,0x26,0xe5,0x07,0x01,0x10,0xe5,0x03,0xe5,0xe5,0x01,
- 0x03,0x02,0x05,0x02,0xe5,0x08,0x05,0x03,0x05,0x02,0xe5,0x07,0xe5,0x04,0x02,0xe5,
- 0x07,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x02,0xe5,
- 0x09,0xe5,0x07,0x06,0x02,0x07,0x02,0x08,0xe5,0x07,0x0a,0x06,0x01,0xe5,0x07,0xe5,
- 0x05,0x02,0x08,0xe5,0x07,0x09,0x06,0x0a,0x05,0x01,0xe8,0x07,0xe5,0xe5,0x01,0xe5,
- 0x07,0xe5,0x04,0x02,0xe5,0xe6,0x04,0xe5,0x04,0x03,0x0a,0xe6,0x03,0x01,0xe5,0x07,
- 0x05,0x02,0xe5,0xe6,0x05,0x05,0x04,0xe6,0x04,0xe5,0x07,0xe5,0x14,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x0b,0xe5,0x05,0x02,0x01,0x04,0x05,0x02,0xe5,0x08,0x08,0xe5,0x08,
- 0x02,0xe5,0x05,0x08,0xe5,0x06,0xe5,0x13,0xe5,0x01,0xe6,0x01,0x01,0x08,0xe6,0x0a,
- 0x05,0x02,0x03,0xe5,0xe6,0x07,0x03,0x05,0x0d,0x01,0xe5,0x05,0x05,0x02,0x02,0xe5,
- 0x06,0x04,0x06,0x01,0x04,0x05,0xe5,0x01,0x02,0xe5,0x10,0x02,0x01,0x03,0x03,0x01,
- 0x03,0x06,0xe5,0x07,0xe6,0x03,0x01,0xe6,0x07,0x03,0x05,0xe5,0xe5,0x09,0x02,0x01,
- 0x07,0x01,0x0d,0x0a,0x11,0x01,0x03,0x02,0x04,0x05,0xe5,0xe5,0x02,0xe5,0x0d,0x0b,
- 0x01,0x05,0x05,0xe5,0x07,0xe5,0x01,0x01,0x04,0x01,0xe5,0x01,0x06,0x04,0x01,0xe5,
- 0xe5,0xe5,0xe5,0x04,0x06,0x01,0xe5,0xe5,0x08,0x03,0xe5,0x03,0xe5,0x1b,0x01,0x09,
- 0x04,0xe5,0xe5,0xe5,0xe5,0x06,0x01,0x05,0x04,0x06,0x15,0x2f,0x05,0x02,0x02,0x07,
- 0xe5,0xe5,0xe5,0x10,0x09,0x09,0x09,0x06,0x02,0x01,0x07,0xe5,0xe5,0x05,0x06,0xe5,
- 0xe5,0xe5,0x06,0x09,0x01,0x07,0x06,0x03,0xe6,0x1b,0x01,0x07,0x06,0xe5,0xe5,0xe5,
- 0x06,0x09,0x09,0x49,0x02,0xe5,0x01,0x0d,0x01,0x11,0x0b,0x03,0x02,0xe5,0x03,0x09,
- 0x01,0xe6,0x04,0x04,0x01,0xe5,0xe5,0x03,0x0e,0x04,0x04,0x10,0x05,0xe6,0x03,0x0b,
- 0x04,0x01,0x02,0x09,0x06,0x03,0x02,0xe5,0xe5,0x01,0x01,0x01,0x02,0x02,0x03,0xe5,
- 0x0a,0x02,0x01,0x01,0x0f,0x09,0x09,0x1f,0xe6,0xe5,0x01,0x0a,0x01,0x01,0x0f,0x03,
- 0x05,0x03,0x01,0x02,0xe5,0x02,0x09,0x09,0x05,0x01,0x02,0x04,0x03,0x09,0x05,0x04,
- 0x08,0x05,0x03,0x03,0x01,0x02,0x12,0x01,0x01,0x09,0x05,0x03,0x01,0x02,0xe5,0xe5,
- 0xe5,0x04,0x03,0x02,0xe7,0x02,0x05,0x03,0x01,0x02,0x40,0x03,0x02,0xe5,0x0b,0x01,
- 0x02,0x0e,0x0b,0x07,0x04,0x04,0x03,0x02,0x02,0x01,0x01,0x05,0x09,0x09,0x01,0x01,
- 0xe5,0xe5,0x01,0x09,0x01,0x09,0x07,0x01,0x01,0xe5,0x0f,0x01,0x07,0x01,0x01,0x07,
- 0x07,0x01,0x01,0x07,0x07,0x0b,0x04,0x1a,0x02,0x01,0x04,0x02,0x1c,0x02,0x01,0x01,
- 0xe5,0x09,0x01,0x11,0x09,0x09,0x03,0xe5,0xe5,0x01,0x04,0xe7,0xe5,0xe5,0x01,0x04,
- 0x04,0x04,0x06,0x01,0xe5,0xe5,0x01,0x02,0x01,0x09,0x01,0x07,0x09,0x01,0xe5,0xe7,
- 0x07,0xe5,0xe5,0x01,0x01,0x01,0xe5,0x03,0x01,0x02,0x04,0x09,0x01,0x02,0x04,0x03,
- 0xe5,0x03,0x09,0x03,0xe8,0x0e,0xe5,0x08,0x01,0x01,0x05,0xe7,0x1e,0xe5,0x30,0x06,
- 0x04,0x04,0x02,0xe5,0x04,0x1d,0x0c,0xe5,0x11,0x02,0x03,0x02,0x08,0x04,0x04,0x09,
- 0x13,0x02,0x06,0x0c,0x02,0x03,0x13,0x09,0x09,0x22,0x02,0x14,0x1d,0xe6,0x02,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x11,0xe5,0x07,0xe5,0x15,0x05,0xe5,0x03,0x05,0xe5,
- 0x07,0xe5,0x07,0xe5,0x0b,0x05,0xe5,0x01,0xe6,0x02,0xe5,0x0b,0x05,0xe5,0x11,0xe5,
- 0x07,0xe5,0x07,0xe5,0x1f,0xe5,0x01,0xe5,0xe5,0x06,0x01,0x02,0x02,0xe6,0xe5,0x01,
- 0x09,0x09,0x02,0x06,0xe5,0x04,0x02,0xe6,0x06,0xe6,0x03,0x02,0xe6,0x06,0x09,0xe6,
- 0x06,0xe5,0xe5,0x05,0x09,0x04,0xe6,0x01,0xe5,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x02,
- 0xe6,0x03,0x02,0x03,0x05,0xe6,0x06,0xe5,0x02,0x01,0x02,0x05,0x03,0xe5,0x07,0x09,
- 0xe5,0x07,0xe6,0x06,0xe6,0x06,0x09,0x06,0x04,0x01,0xe6,0x01,0x02,0x09,0x09,0x24,
- 0x02,0x10,0x34,0x26,0x02,0x06,0x02,0x6c,0x05,0x02,0x03,0x0b,0x08,0x24,0x03,0x37,
- 0x0c,0x17,0x04,0x09,0x02,0x0a,0x19,0x13,0x13,0x34,0x02,0xe5,0xe5,0x0a,0x01,0x06,
- 0x02,0x11,0x01,0x09,0xe7,0x03,0x01,0xe7,0x02,0xe5,0xe8,0x05,0xe7,0x02,0x02,0x06,
- 0x02,0xe7,0x0c,0x02,0x07,0x01,0x06,0x03,0x01,0x03,0x04,0xe7,0x05,0xe5,0xe5,0x05,
- 0xe7,0x03,0x01,0x04,0x02,0x01,0xe7,0x05,0xe7,0x02,0xe5,0xe5,0x09,0xe6,0x10,0x01,
- 0x06,0xe7,0xe5,0x04,0x01,0x15,0x0d,0x0d,0x01,0xe5,0x05,0x02,0x03,0x0c,0x01,0xe5,
- 0x07,0xe6,0x03,0xe5,0x01,0xe5,0x04,0x01,0xe6,0x04,0x02,0xe5,0x06,0xe5,0x07,0xe6,
- 0x01,0x04,0xe6,0x06,0xe5,0x05,0x01,0xe5,0x05,0x02,0xe5,0xe5,0x06,0xe6,0x06,0xe6,
- 0x04,0x02,0xe5,0x04,0x01,0xe5,0x05,0x01,0xe6,0x01,0x04,0xe6,0x04,0x01,0xe5,0x02,
- 0x06,0x13,0x04,0x02,0xe6,0x08,0x19,0xe5,0x02,0x01,0x02,0xe5,0x0e,0x09,0x0d,0x0c,
- 0x02,0x01,0x07,0xe5,0x05,0x01,0xe5,0x04,0x02,0xe5,0x01,0x05,0x09,0xe5,0x05,0x06,
- 0x04,0x07,0x01,0x07,0x0a,0x02,0x01,0x01,0x05,0x04,0x04,0x07,0x01,0x09,0xe5,0x07,
- 0xe5,0x05,0x01,0x0b,0x16,0x04,0xe5,0x2a,0xe8,0x0c,0x05,0x01,0xe6,0x06,0xe5,0x07,
- 0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0x06,0xe5,0x01,0x05,0xe5,
- 0x01,0x05,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe5,0x03,
- 0x04,0xe6,0x01,0x03,0xe8,0x01,0x03,0xe7,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x01,0x03,
- 0xe8,0xe5,0x04,0xe5,0x05,0xe7,0x07,0xe5,0x06,0xe6,0x01,0x03,0xe7,0x05,0xe7,0x07,
- 0xe5,0x07,0xe7,0x02,0x01,0x01,0x01,0x10,0x02,0x05,0x0a,0x06,0x01,0xe5,0x07,0xe5,
- 0x08,0x1c,0xe6,0x06,0xe6,0x06,0xe5,0x07,0x07,0x01,0x09,0xe5,0x09,0xe5,0x04,0x02,
- 0x06,0x02,0xe5,0x04,0xe5,0xe6,0x08,0x08,0xe5,0x04,0xe5,0xe6,0x08,0x05,0x03,0x09,
- 0x05,0x02,0x06,0x03,0xe5,0x03,0x1b,0x02,0xe5,0x0f,0x04,0x01,0x13,0x01,0x09,0xe5,
- 0xe5,0x08,0x09,0x09,0x06,0x09,0x02,0x04,0x01,0xe5,0xe5,0x05,0x07,0x01,0x07,0x01,
- 0xe5,0xe5,0x07,0xe5,0xe5,0x02,0x02,0x02,0xe5,0xe7,0x03,0x03,0xe5,0xe5,0x0b,0x06,
- 0x02,0xe5,0xe7,0xe6,0x0a,0xe5,0xe6,0x02,0x09,0x01,0x06,0x02,0xe5,0xe6,0x04,0xe5,
- 0xe6,0x1c,0x01,0x0f,0x09,0x0a,0x09,0x08,0x0a,0x1c,0x09,0x13,0x09,0x12,0x02,0x04,
- 0x04,0x04,0xe5,0x02,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x02,0xe5,0x02,0x0a,
- 0x03,0xe5,0x11,0x04,0x04,0xe5,0x07,0xe5,0x1c,0x02,0x0d,0x02,0x02,0x03,0x0c,0x09,
- 0x08,0x27,0xe5,0x07,0x07,0x0b,0xe5,0x05,0x01,0x09,0x0b,0x04,0x04,0x03,0x03,0x09,
- 0x01,0xe5,0x07,0x09,0x03,0x03,0x01,0xe5,0x0b,0x06,0x12,0x03,0x09,0x1f,0xe7,0x0f,
- 0x10,0x01,0xe5,0x0f,0x01,0xe5,0x05,0xe5,0xe5,0xe5,0x08,0x04,0x09,0x01,0xe6,0x09,
- 0x04,0x01,0xe6,0x18,0xe5,0xe6,0x18,0x0f,0x17,0x01,0x17,0xe5,0x15,0x26,0xe8,0xe5,
- 0x0e,0x01,0x07,0x01,0x04,0x02,0xe6,0x06,0x01,0x01,0x05,0x01,0x01,0x02,0x02,0x01,
- 0x01,0x05,0x01,0x01,0x01,0x03,0x01,0xe5,0x02,0x02,0x01,0xe5,0x05,0x01,0x02,0x01,
- 0x02,0x01,0xe5,0xe5,0x03,0x01,0x01,0x05,0xe7,0x01,0x03,0xe7,0x07,0x01,0xe6,0x04,
- 0x01,0xe5,0xe5,0x03,0x01,0x06,0xe5,0xe5,0x06,0x01,0x07,0x01,0x02,0x01,0x02,0x01,
- 0x07,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x01,0x05,0xe6,0x01,0x04,
- 0x01,0x07,0x01,0x02,0x08,0x02,0x0d,0x05,0x05,0x03,0x05,0x01,0x08,0x03,0x03,0xe6,
- 0x08,0x08,0xe6,0x01,0x04,0x01,0x09,0x04,0x04,0x07,0xe6,0xe5,0x04,0x04,0x04,0xe5,
- 0xe5,0x02,0x02,0x02,0x05,0x02,0xe7,0x05,0xe5,0xe5,0x05,0x03,0x05,0xe5,0x01,0xe5,
- 0x03,0xe5,0x04,0x03,0x02,0x05,0xe5,0x02,0xe5,0x02,0xe5,0x01,0x05,0x09,0xe6,0x0a,
- 0x05,0xe5,0x07,0xe5,0x16,0x02,0xe6,0x0a,0x0c,0x06,0x02,0x06,0x01,0x07,0xe5,0x04,
- 0x02,0xe5,0x03,0x04,0x08,0x02,0x06,0x15,0x04,0x05,0x03,0x04,0x03,0x0d,0x03,0x07,
- 0x01,0xe5,0x09,0xe5,0xe5,0x01,0x02,0x04,0x03,0xe5,0xe5,0x04,0x07,0x03,0x08,0x04,
- 0x05,0x05,0x01,0x08,0x04,0x0d,0x1b,0x02,0x01,0x26,0x07,0x08,0x13,0x06,0x03,0x01,
- 0x13,0x06,0x0c,0x06,0x01,0x06,0x03,0x08,0x01,0x01,0x0c,0x02,0x06,0xe5,0x0b,0xe6,
- 0x08,0x02,0x01,0x02,0xe5,0x05,0x14,0x02,0x02,0xe5,0x09,0x01,0x07,0x01,0x0f,0x08,
- 0xe5,0xe6,0x07,0x02,0x01,0xe6,0x04,0x05,0x02,0x09,0x18,0x0b,0xe5,0x05,0x04,0x01,
- 0x14,0x05,0x12,0x04,0xe7,0x05,0x05,0x0b,0xe5,0x0d,0x07,0xe5,0xe5,0x08,0x06,0x01,
- 0x18,0x0f,0x0a,0x16,0x08,0xe5,0x02,0x02,0x0b,0x17,0x03,0x08,0x0c,0x03,0x0f,0x0e,
- 0x10,0x04,0x11,0x01,0x05,0x05,0x05,0x16,0x1b,0xe5,0x02,0x01,0x35,0x0b,0x0f,0x02,
- 0xe5,0xe6,0x18,0xe5,0x08,0x17,0x04,0x03,0xe5,0x03,0x04,0x08,0x13,0x04,0xe5,0x0c,
- 0x04,0xe5,0x06,0x07,0x01,0x04,0x04,0x0d,0xe5,0x04,0xe5,0x04,0xe6,0x03,0x02,0x04,
- 0xe5,0x08,0x03,0x04,0xe5,0x0c,0x01,0x0c,0xe5,0x07,0xe5,0x16,0x09,0x04,0x01,0x09,
- 0x0a,0xe6,0x20,0x05,0x08,0x0c,0x0c,0x06,0x06,0x02,0x09,0x06,0x06,0x06,0xe5,0x09,
- 0x10,0x0b,0x03,0x0c,0x09,0x01,0x07,0x04,0x13,0x04,0x09,0x01,0x26,0x12,0x06,0x04,
- 0x09,0x06,0xe5,0x0a,0x06,0x16,0x07,0x01,0x06,0x01,0x05,0x05,0xe5,0x06,0x04,0x02,
- 0x0e,0x1c,0x0a,0x05,0x02,0x04,0x02,0x07,0x08,0x1a,0x02,0x04,0x09,0x1f,0xe6,0x01,
- 0x08,0x02,0x09,0x08,0xe6,0x11,0x01,0x05,0xe6,0x0a,0x02,0x03,0xe5,0x11,0xe6,0x06,
- 0xe5,0x08,0x01,0x07,0x02,0x02,0x09,0x02,0x04,0x02,0x03,0xe7,0x01,0x03,0xe6,0x02,
- 0x03,0xe6,0x02,0x03,0xe6,0x02,0x02,0xe6,0x01,0x03,0xe7,0x06,0x09,0xe6,0xe5,0x04,
- 0xe6,0x0b,0x05,0xe5,0x22,0xe5,0xe6,0x0d,0x09,0x03,0x06,0x0b,0x03,0x03,0x09,0x06,
- 0x08,0x01,0xe5,0x01,0x12,0x01,0x04,0x02,0xe5,0x06,0x09,0x0e,0x02,0x05,0x08,0xe5,
- 0x02,0x03,0x08,0x02,0x08,0x06,0xe5,0x03,0x03,0x01,0x0e,0x04,0x07,0xe5,0x14,0x21,
- 0xe8,0xe5,0xe5,0x0e,0x05,0x18,0x04,0x04,0x03,0x03,0x01,0x04,0x04,0x0b,0x25,0xe7,
- 0xe5,0x05,0xe5,0xe5,0x07,0x03,0x02,0xe6,0x02,0x02,0xe5,0x06,0x05,0x01,0x06,0x07,
- 0x01,0x04,0x07,0x01,0x02,0x01,0x0b,0x0d,0x01,0x0d,0x1f,0x04,0x02,0xe5,0x07,0x06,
- 0x08,0x05,0x0f,0x07,0xe5,0x01,0x06,0x02,0x05,0x25,0x01,0x17,0x05,0xe6,0xe5,0x0d,
- 0x02,0x0a,0x0a,0x0d,0x07,0xe5,0x03,0xe5,0xe5,0x07,0xe6,0x0e,0x0b,0x01,0xe5,0x12,
- 0x14,0xe5,0xe5,0x01,0x06,0x10,0x03,0x07,0x01,0x06,0x05,0x01,0x14,0x0a,0x38,0x0f,
- 0x04,0xe5,0x01,0xe5,0xe5,0x0f,0x19,0x01,0x15,0x06,0x33,0x03,0xe5,0xe8,0x0a,0x02,
- 0xe5,0xe6,0x04,0xe5,0x01,0x01,0x03,0xe5,0x07,0x03,0xe5,0x04,0x07,0x01,0x02,0xe5,
- 0x02,0x02,0x08,0xe7,0x04,0x02,0xe5,0x05,0x07,0x03,0xe5,0x05,0xe5,0x06,0xe5,0x07,
- 0xe5,0x0b,0x07,0xe5,0x07,0xe5,0x01,0xe5,0x07,0xe5,0x04,0x0c,0xe5,0x04,0x12,0xe5,
- 0x1b,0xe5,0x1d,0x02,0x01,0xe5,0x01,0x01,0x05,0x01,0xe5,0x01,0x0d,0xe5,0x11,0x01,
- 0x04,0x09,0x13,0x01,0xe5,0x07,0xe5,0x01,0xe5,0x15,0x05,0x02,0x06,0x03,0x07,0xe5,
- 0x02,0x04,0x02,0x03,0xe5,0x03,0x01,0x01,0xe5,0xe6,0x03,0xe5,0x01,0xe5,0x07,0x06,
- 0xe5,0x04,0x05,0x0c,0x1d,0x1c,0x01,0x02,0xe5,0xe6,0x03,0x08,0x0d,0x09,0x02,0x01,
- 0xe5,0xe5,0x17,0x01,0xe5,0x1e,0x01,0x02,0x01,0xe5,0x01,0x1a,0x0d,0x04,0x01,0xe5,
- 0x03,0x10,0x09,0x01,0x0a,0x29,0xe5,0xe5,0x05,0xe5,0xe5,0x19,0xe5,0x02,0x04,0xe5,
- 0xe6,0x01,0x0a,0x1d,0x01,0x18,0x02,0x1d,0x09,0xe5,0x01,0x0f,0x06,0x0e,0x06,0xe5,
- 0x14,0x09,0x09,0x13,0x1a,0x02,0x06,0x02,0x1a,0x06,0x05,0xe5,0x0c,0x09,0x01,0x20,
- 0x04,0x01,0x02,0x02,0x06,0xe5,0x01,0x05,0x10,0x02,0x01,0x01,0xe5,0xe6,0xe5,0x08,
- 0x04,0x05,0x01,0xe5,0x05,0x02,0x04,0x02,0x03,0x07,0x01,0xe5,0xe5,0x02,0x02,0x02,
- 0x02,0xe5,0x01,0x02,0x02,0x03,0xe5,0x04,0x02,0xe5,0xe5,0x01,0x04,0x1b,0x01,0x07,
- 0x01,0x1b,0x07,0x01,0xe5,0xe5,0x01,0x0a,0x03,0x05,0x01,0x01,0x13,0x0f,0x01,0x01,
- 0x05,0x03,0x04,0x14,0x03,0x05,0x01,0x15,0x02,0x01,0xe5,0x02,0x07,0x04,0xe5,0xe7,
- 0x02,0x09,0x04,0xe5,0x02,0x04,0xe5,0x02,0x02,0xe6,0x03,0x02,0x01,0xe5,0xe5,0xe5,
- 0x08,0x04,0x14,0x03,0x05,0x03,0x1d,0x02,0x03,0xe5,0x0b,0x04,0x04,0x01,0x11,0x01,
- 0x0c,0x04,0x01,0x01,0x01,0xe5,0x05,0x03,0x17,0x04,0x01,0xe5,0x05,0x01,0x0a,0x04,
- 0x04,0x05,0xe5,0x05,0x07,0x06,0x01,0xe5,0xe5,0x01,0x02,0x03,0x04,0xe5,0x02,0x04,
- 0x02,0x09,0x01,0x07,0x07,0x43,0x02,0x01,0x02,0x0a,0x09,0x01,0x11,0x01,0x04,0x01,
- 0x04,0xe5,0x03,0x01,0x02,0x01,0x02,0x04,0x01,0x01,0x04,0xe7,0x0b,0x03,0xe5,0xe5,
- 0x01,0x03,0xe5,0xe5,0x05,0xe5,0x19,0x06,0x01,0x14,0x03,0xe5,0x01,0x01,0x03,0xe5,
- 0xe6,0x0a,0x01,0x01,0xe5,0x4d,0xe5,0x04,0x01,0x1b,0x1a,0x09,0x04,0x04,0x02,0xe5,
- 0x04,0x13,0x04,0x09,0x04,0x22,0x1a,0x09,0x04,0x0e,0x20,0x02,0x2e,0xe5,0xe5,0xe5,
- 0x1d,0x01,0x17,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x11,0xe5,0x07,0xe5,0x07,0xe5,
- 0x01,0x1b,0xe5,0x03,0x11,0x05,0xe5,0x07,0xe5,0x0b,0x05,0xe5,0x0b,0x13,0x09,0x09,
- 0x20,0xe6,0xe5,0x0b,0x02,0x01,0x01,0x02,0x03,0xe5,0xe5,0x01,0x09,0x09,0xe5,0x07,
- 0xe7,0xe5,0xe5,0x01,0xe6,0x03,0x02,0xe5,0x07,0x04,0x01,0x02,0xe5,0xe5,0xe5,0xe5,
- 0x01,0xe5,0x07,0xe5,0x01,0x05,0x09,0x0b,0xe5,0x07,0x09,0x03,0x05,0xe5,0x07,0xe5,
- 0x07,0x05,0x03,0xe5,0x07,0x05,0x03,0x09,0x05,0x03,0x03,0x05,0x05,0x03,0x09,0x04,
- 0x01,0x06,0xe5,0xe7,0x01,0x45,0x06,0x16,0x09,0x13,0x09,0x15,0x1d,0x09,0x13,0x13,
- 0x09,0x09,0x1d,0x04,0x02,0x03,0x39,0x0d,0x0f,0x0c,0x06,0x03,0x0f,0x01,0x09,0x0e,
- 0x04,0x01,0x1b,0x02,0x06,0x01,0x11,0x01,0x13,0x09,0x09,0x1f,0x09,0x01,0xe5,0xe5,
- 0x14,0x01,0x09,0x13,0xe7,0x06,0xe6,0x03,0x01,0xe5,0xe5,0x05,0xe7,0x0a,0x01,0x02,
- 0xe7,0xe5,0x03,0xe7,0x03,0x01,0xe7,0x0a,0x0b,0x02,0x03,0x0e,0xe5,0x0a,0xe7,0x05,
- 0xe7,0x0f,0xe7,0x16,0xe5,0xe5,0x06,0x10,0x1d,0x01,0x01,0x17,0x01,0xe5,0x05,0x02,
- 0x12,0xe6,0x08,0x04,0xe5,0x01,0xe5,0x01,0x02,0x02,0xe5,0x0e,0x02,0xe5,0x07,0xe5,
- 0xe5,0x01,0xe5,0xe7,0x01,0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,0x03,0x06,0xe6,0x06,
- 0xe5,0x02,0x02,0x02,0x03,0x04,0xe6,0x01,0x02,0x02,0xe5,0x01,0x05,0x05,0x02,0xe6,
- 0x03,0x03,0x10,0x01,0xe5,0x04,0x02,0xe5,0x08,0x21,0xe5,0xe6,0x16,0x01,0x03,0x05,
- 0x03,0xe5,0x0d,0x0b,0x02,0x04,0x09,0xe5,0x11,0xe5,0x02,0x01,0x02,0xe5,0x24,0x02,
- 0x01,0x02,0x08,0xe5,0x03,0x09,0xe5,0x07,0x01,0x07,0x09,0xe5,0x07,0x11,0x01,0x09,
- 0x09,0x03,0x1f,0x01,0xe5,0x14,0xe6,0x06,0xe6,0x06,0xe5,0x07,0xe5,0x01,0xe5,0x03,
- 0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x02,0x04,0xe6,
- 0x04,0xe6,0xe5,0x04,0xe6,0x04,0x04,0xe6,0x01,0x03,0xe5,0xe5,0x01,0x04,0xe6,0x01,
- 0x03,0x01,0xe6,0x06,0xe6,0x04,0xe6,0x02,0x03,0x01,0xe6,0x04,0xe6,0x08,0xe6,0xe5,
- 0x04,0xe6,0x04,0xe5,0xe6,0x04,0xe6,0x08,0xe5,0x07,0xe5,0x06,0x03,0x04,0x12,0x01,
- 0xe5,0x07,0xe5,0x08,0x08,0xe5,0x08,0x12,0xe6,0x10,0xe6,0x06,0x07,0x01,0xe5,0x07,
- 0xe5,0x01,0xe6,0x02,0xe6,0xe7,0x02,0x02,0x08,0xe6,0xe6,0x08,0x04,0x09,0xe5,0x07,
- 0xe5,0x01,0xe6,0x02,0x09,0xe5,0x01,0xe6,0x09,0xe5,0xe6,0x0b,0xe5,0x03,0x03,0xe6,
- 0x03,0x1a,0xe5,0x16,0x01,0xe5,0x05,0x02,0x12,0xe5,0xe5,0x06,0x01,0x09,0x03,0xe5,
- 0x03,0x0e,0x04,0x09,0x04,0x01,0xe5,0xe5,0x0c,0x09,0x02,0x04,0x03,0x09,0x09,0x02,
- 0x02,0x02,0x01,0x02,0x01,0x04,0x02,0x05,0x02,0x02,0x02,0x01,0x08,0x0a,0x01,0xe5,
- 0x0e,0xe5,0x07,0x08,0x13,0xe7,0x16,0x01,0x09,0x0a,0x08,0x1d,0x13,0x09,0x13,0xe5,
- 0x03,0x03,0x05,0x02,0x02,0xe5,0x02,0x01,0x02,0x05,0xe5,0x08,0x02,0x03,0x05,0x0f,
- 0x03,0x03,0x06,0x04,0x0d,0x0f,0xe5,0x07,0x04,0x18,0x02,0x10,0x06,0x01,0xe5,0x05,
- 0x02,0x09,0x08,0x18,0x01,0xe5,0x0b,0x06,0x20,0x02,0x06,0x02,0x05,0x06,0x05,0x02,
- 0x06,0x03,0x04,0x03,0x03,0x0c,0x02,0x05,0x0a,0x02,0x0a,0x02,0x01,0xe5,0x0c,0x09,
- 0x05,0x02,0x14,0xe8,0x02,0x0b,0xe5,0x32,0x04,0x02,0x24,0x02,0x10,0x09,0x15,0x03,
- 0xe5,0x03,0x01,0xe5,0x19,0x03,0x0f,0x1b,0x05,0x05,0x25,0x02,0x01,0x0f,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0xe6,0x04,0x01,0xe5,0xe5,0x03,0x01,0x01,0x05,0x01,0x07,
- 0x01,0x01,0x05,0x01,0xe5,0xe5,0x03,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0xe5,0x01,
- 0x03,0x01,0x03,0x03,0x01,0x09,0x01,0xe5,0x02,0x02,0x01,0x04,0x02,0x01,0x01,0x05,
- 0x01,0xe5,0x05,0x01,0x04,0x02,0x01,0x07,0x01,0x03,0x03,0xe6,0xe5,0x04,0x01,0x07,
- 0x01,0x01,0x05,0x01,0x03,0x03,0x01,0x01,0x05,0x01,0x07,0x01,0x02,0x04,0x06,0x2d,
- 0xe5,0x07,0x01,0x07,0xe6,0x01,0x02,0xe6,0x03,0x04,0xe5,0xe5,0x07,0xe5,0x09,0x03,
- 0xe5,0x09,0x05,0x03,0xe5,0x01,0x05,0x03,0x04,0x02,0xe6,0xe5,0x1e,0x08,0xe5,0x0c,
- 0x09,0x21,0x10,0x03,0x15,0xe7,0x01,0x08,0x03,0x05,0x13,0xe5,0x07,0x0a,0x08,0x0a,
- 0x08,0x0d,0x02,0xe5,0x0a,0x02,0x05,0x02,0x05,0x04,0x06,0x03,0x04,0x0b,0x14,0x08,
- 0x11,0x01,0x0a,0x09,0x03,0x02,0x02,0x09,0x0b,0x13,0x04,0x01,0x02,0x01,0x0a,0x09,
- 0x06,0x0a,0x04,0x05,0x02,0x02,0xe5,0x05,0xe5,0x07,0x02,0x06,0x02,0x01,0x0b,0x04,
- 0x0b,0x08,0x05,0x02,0x04,0x07,0x03,0x01,0x17,0x0c,0x06,0x08,0x06,0x0a,0x01,0x08,
- 0x1e,0x21,0xe5,0xe5,0x26,0x07,0xe5,0x06,0x03,0x05,0x08,0x1f,0x18,0xe5,0x08,0xe5,
- 0x07,0x03,0xe5,0x02,0xe5,0x03,0xe5,0x04,0xe7,0x02,0x05,0x03,0x0a,0x01,0x02,0x03,
- 0x05,0xe5,0x04,0x02,0x10,0xe6,0x06,0x06,0x02,0x01,0x0f,0x06,0x01,0x08,0xe5,0x01,
- 0xe5,0x1c,0x0b,0x27,0x25,0x09,0x06,0x0a,0x04,0xe5,0x01,0x04,0x02,0x04,0x02,0xe5,
- 0x01,0x06,0x07,0x01,0x0e,0x13,0x0c,0x04,0x0a,0x0a,0x03,0x01,0x0f,0x08,0x04,0x01,
- 0x09,0x1d,0x09,0x05,0xe5,0x07,0x04,0x02,0x01,0xe5,0xe5,0x07,0x03,0x04,0xe6,0x04,
- 0xe5,0x08,0x05,0x0d,0x04,0x01,0x06,0x03,0x17,0x03,0x13,0x05,0x02,0x10,0x02,0x1e,
- 0x03,0x01,0x0d,0x09,0x09,0x02,0xe6,0x11,0x08,0x12,0x06,0x08,0xe5,0x01,0x06,0x0c,
- 0x0d,0x02,0x04,0x04,0x04,0x01,0x01,0x07,0x01,0xe7,0x01,0xe5,0x01,0x11,0x01,0x05,
- 0x06,0xe5,0x07,0x03,0xe5,0x03,0x01,0xe5,0x05,0xe6,0x09,0x06,0xe6,0x02,0x02,0x05,
- 0x07,0x0f,0xe7,0x05,0x1f,0x03,0x0e,0x1d,0x04,0x02,0x20,0x09,0x05,0x20,0x09,0x04,
- 0xe5,0x04,0x0b,0x02,0x07,0x01,0x03,0x02,0x09,0x0b,0x23,0x27,0x0f,0x1b,0x08,0x06,
- 0xe6,0x06,0xe5,0x06,0x10,0x03,0xe6,0xe5,0x01,0x02,0x05,0xe5,0xe7,0xe5,0x01,0x04,
- 0x0b,0x06,0xe5,0x0d,0x01,0x01,0x01,0xe5,0x06,0xe6,0xe5,0x04,0x08,0x05,0x0b,0x03,
- 0xe5,0xe6,0xe5,0x02,0xe5,0x01,0x06,0x1c,0xe5,0x2c,0xe5,0x01,0x25,0x07,0x07,0xe5,
- 0x01,0x0e,0x0d,0x06,0x0b,0x06,0x03,0xe5,0x02,0x0a,0xe5,0xe5,0x02,0x0d,0x03,0x09,
- 0x01,0x1d,0x05,0x02,0x06,0xe5,0x09,0x18,0x02,0xe5,0x06,0x04,0x1c,0x05,0x01,0x01,
- 0x01,0x19,0x09,0x09,0x06,0x01,0xe6,0x03,0x03,0x05,0x03,0x0c,0x02,0xe5,0x05,0xe6,
- 0x01,0x06,0x03,0x01,0x0e,0x09,0x09,0xe5,0x02,0x02,0x01,0x04,0x03,0x01,0x04,0x0e,
- 0x04,0x01,0x07,0x09,0x05,0x02,0xe5,0x07,0x09,0x09,0x05,0xe5,0x20,0x02,0xe6,0x06,
- 0x01,0x0f,0x01,0x24,0x01,0xe5,0x05,0x0b,0xe5,0x01,0x02,0xe5,0x01,0x06,0x01,0x07,
- 0x02,0x0c,0x10,0x03,0x02,0xe6,0xe6,0x11,0x01,0x0e,0xe5,0xe5,0x13,0x07,0x24,0xe6,
- 0x17,0x06,0x03,0x01,0xe5,0x01,0x0e,0x13,0x1c,0x09,0x0c,0x05,0x09,0x0a,0x0a,0x14,
- 0x05,0x29,0x16,0x04,0x10,0x07,0x18,0x1f,0xe6,0x07,0xe5,0x02,0xe6,0x0b,0xe5,0x0a,
- 0x02,0xe6,0x03,0x02,0xe5,0x01,0xe5,0x01,0xe5,0xe6,0x04,0x03,0x01,0xe5,0xe5,0xe7,
- 0x04,0x02,0xe5,0xe6,0x01,0x03,0x06,0x02,0xe5,0x06,0x02,0xe5,0x05,0x02,0x01,0x06,
- 0xe5,0x07,0x01,0xe5,0x01,0x03,0x02,0x01,0xe5,0x03,0x01,0xe5,0x03,0xe8,0x04,0xe5,
- 0x08,0x09,0x09,0x09,0xe5,0xe6,0x02,0x01,0x02,0xe5,0x04,0x02,0x01,0x04,0x02,0xe5,
- 0x0a,0x02,0xe5,0x09,0x01,0xe6,0xe5,0x01,0x01,0x05,0xe5,0x1e,0x02,0x06,0x02,0x06,
- 0x03,0x02,0x01,0xe5,0x08,0x09,0x02,0x02,0xe5,0x01,0xe6,0xe5,0x05,0x02,0x0b,0xe5,
- 0x04,0x03,0xe5,0x07,0x01,0x01,0xe6,0xe5,0x02,0x01,0xe5,0x01,0x03,0x01,0xe5,0x0e,
- 0xe5,0x08,0xe5,0x03,0x0a,0x08,0x03,0xe5,0x04,0x09,0x02,0x01,0x03,0x03,0x01,0x03,
- 0x10,0x03,0x07,0x01,0x02,0xe8,0x03,0x0c,0x19,0x09,0x05,0xe5,0x08,0x01,0x05,0x04,
- 0x01,0x01,0x05,0x04,0x04,0x01,0x09,0x02,0x26,0x07,0x06,0x01,0x03,0x0a,0xe5,0x07,
- 0x0f,0x01,0x43,0x0b,0x04,0x02,0xe5,0x01,0x28,0x09,0x09,0x06,0xe5,0xe5,0x08,0x01,
- 0x07,0x05,0xe5,0x01,0x05,0xe5,0x2a,0xe5,0x08,0x05,0xe5,0x02,0x02,0x20,0xe5,0xe5,
- 0xe5,0x42,0x0d,0x02,0xe5,0x01,0x01,0x03,0x25,0x09,0x01,0x0c,0xe5,0x01,0x05,0xe5,
- 0x01,0xe5,0x08,0x09,0x01,0x02,0x09,0xe5,0x01,0x0a,0x01,0x02,0x09,0x08,0x02,0xe5,
- 0x01,0xe5,0x03,0x07,0x01,0x04,0x01,0x07,0x01,0x07,0x01,0x02,0x09,0x04,0x01,0x02,
- 0x09,0x09,0x09,0x04,0x01,0x02,0x0e,0x0f,0xe6,0xe6,0x01,0x28,0x03,0x05,0x01,0x01,
- 0x09,0x09,0x05,0x03,0x05,0x03,0x05,0x01,0x01,0x09,0x0f,0x01,0x01,0x11,0x03,0x05,
- 0x03,0x08,0x01,0x04,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x09,0x05,0x01,0x01,
- 0x23,0x01,0x01,0x0f,0x03,0x09,0x02,0xe5,0x01,0x02,0x02,0x0c,0x18,0x09,0x01,0x07,
- 0x05,0xe5,0x01,0x06,0x02,0x01,0x02,0x04,0x04,0x01,0x02,0x01,0x01,0xe5,0x05,0x04,
- 0x07,0x04,0x01,0x03,0xe5,0x08,0x06,0x01,0xe5,0x03,0x13,0x01,0x07,0x01,0x03,0xe5,
- 0x01,0x01,0x03,0xe5,0x01,0x01,0x07,0x01,0x04,0x01,0x18,0x05,0x01,0x04,0x0c,0x09,
- 0xe5,0x03,0x04,0x2b,0x09,0x01,0x07,0x03,0xe5,0xe5,0xe6,0x02,0xe5,0x01,0x01,0x01,
- 0x07,0x05,0xe6,0xe5,0xe5,0x01,0x06,0x01,0xe5,0x01,0x08,0x01,0xe5,0xe5,0xe6,0xe5,
- 0xe5,0x03,0xe8,0x02,0x04,0x04,0x03,0xe5,0x06,0x06,0x01,0x07,0x01,0x04,0x01,0xe5,
- 0xe5,0xe6,0x03,0x01,0x01,0xe7,0x01,0x01,0x01,0xe5,0xe5,0x05,0xe7,0x05,0xe7,0x06,
- 0x01,0x02,0x01,0x01,0xe5,0xe7,0x09,0x09,0x07,0xe7,0x08,0x31,0x02,0x03,0x02,0x02,
- 0x03,0x02,0x1a,0x09,0x13,0x09,0x0b,0x09,0x0c,0x1a,0x09,0x09,0x04,0x04,0x09,0x09,
- 0x04,0x04,0x20,0x03,0xe5,0xe5,0x07,0x01,0x2f,0x05,0xe5,0x01,0x05,0xe5,0x03,0x17,
- 0xe5,0x07,0xe5,0x01,0x0f,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x17,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x21,0x01,0xe5,
- 0x07,0x05,0x09,0x09,0x09,0x09,0x05,0xe5,0x01,0xe5,0x03,0xe5,0x01,0xe5,0x04,0x02,
- 0x06,0x02,0x09,0xe6,0x03,0x02,0xe5,0x01,0x05,0x09,0xe5,0x02,0x01,0x02,0xe5,0x09,
- 0xe6,0x03,0x02,0xe5,0x04,0x02,0xe5,0x02,0x01,0x02,0x09,0x09,0xe5,0x04,0x02,0xe5,
- 0x07,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0x06,0x02,0x02,0x0a,
- 0x03,0xe5,0x01,0x3a,0xe5,0x07,0xe5,0x07,0x07,0x02,0x12,0xe5,0x2f,0x02,0x08,0xe5,
- 0x08,0x1a,0x02,0x12,0xe5,0x2f,0xe5,0x08,0x04,0x02,0x03,0x3d,0x05,0x03,0x05,0x0d,
- 0x13,0x05,0x13,0x09,0x06,0x08,0x05,0x02,0x06,0x03,0x19,0x03,0x05,0x09,0x03,0x05,
- 0x09,0x13,0x0d,0x07,0x0e,0x35,0x01,0x09,0xe7,0x05,0xe7,0x03,0x01,0x07,0x01,0x07,
- 0x02,0xe6,0x06,0xe6,0x02,0xe5,0xe5,0x03,0x01,0xe5,0xe8,0xe5,0x03,0xe7,0x07,0xe5,
- 0xe5,0x05,0xe5,0xe5,0x03,0x02,0xe5,0x03,0x0c,0x04,0x05,0xe6,0x05,0xe7,0xe5,0x04,
- 0xe6,0x05,0xe7,0x06,0xe6,0x06,0xe6,0xe5,0x03,0xe7,0x0f,0x0f,0xe7,0x34,0x01,0xe5,
- 0x04,0xe5,0xe7,0x04,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe5,0x05,0x02,0xe5,0x07,
- 0xe5,0x04,0x01,0xe5,0x05,0x01,0xe6,0x04,0x02,0xe5,0x01,0x01,0x04,0xe6,0x03,0xe5,
- 0x01,0xe5,0x04,0x02,0xe5,0x07,0x08,0xe5,0x09,0x05,0x02,0xe5,0x08,0x05,0x02,0xe5,
- 0x08,0x09,0x04,0x02,0xe6,0x0e,0x02,0x0d,0xe5,0x01,0xe5,0x33,0x01,0x04,0x06,0x02,
- 0x09,0x02,0x01,0x04,0x02,0x01,0x06,0xe5,0x01,0x03,0x05,0x06,0x01,0x07,0x01,0x01,
- 0x07,0x08,0x02,0x03,0x05,0x09,0x13,0x03,0x07,0x04,0x02,0xe5,0x01,0x07,0x04,0x02,
- 0x01,0x09,0x01,0xe5,0x05,0x07,0x10,0x02,0x03,0x0c,0x01,0xe5,0x07,0x0b,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0x06,0xe6,0x01,0x04,0xe6,0xe5,0x04,0xe6,
- 0xe5,0x04,0xe6,0x06,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0xe5,0x02,0xe5,0xe6,0x01,0x02,
- 0xe6,0x04,0x04,0xe7,0x04,0xe8,0x01,0x04,0x09,0xe5,0x01,0x05,0xe5,0x05,0xe8,0x06,
- 0xe5,0x05,0xe8,0x06,0xe5,0x07,0xe5,0x05,0xe7,0x01,0xe5,0x01,0xe7,0x07,0xe6,0x06,
- 0xe5,0x06,0xe6,0xe5,0x34,0x01,0x14,0x08,0xe5,0x07,0xe6,0x04,0x0b,0xe6,0x07,0x12,
- 0xe5,0x03,0x05,0x06,0x02,0x06,0xe5,0x01,0xe5,0x06,0xe5,0x07,0xe6,0x0d,0x02,0xe6,
- 0x07,0x05,0x02,0x1a,0x02,0xe6,0x03,0x1b,0xe6,0xe5,0x34,0x01,0x0c,0x09,0x04,0x02,
- 0x06,0x01,0x07,0x04,0x04,0x01,0x02,0x13,0xe5,0x01,0xe5,0x03,0xe5,0x01,0x04,0x02,
- 0x01,0x01,0xe5,0x03,0xe5,0xe6,0x01,0x02,0x03,0xe5,0x0a,0x0c,0xe5,0xe7,0x03,0x09,
- 0xe5,0xe7,0x03,0x09,0x09,0xe5,0xe6,0x01,0x02,0x01,0xe6,0x1a,0x01,0xe6,0x4b,0x08,
- 0x09,0x07,0x16,0x0d,0xe6,0x01,0xe5,0x02,0xe5,0x01,0x02,0x09,0x04,0xe5,0x02,0x09,
- 0xe5,0x07,0x0e,0xe5,0x02,0x0a,0x03,0xe5,0x02,0x18,0xe5,0x02,0x03,0x01,0x1d,0xe7,
- 0x01,0x21,0x2e,0x02,0x06,0x01,0xe5,0x05,0x09,0x0c,0x0c,0x03,0x05,0x07,0x04,0x02,
- 0x05,0x05,0x04,0x02,0x02,0x08,0xe5,0x0b,0x03,0x0f,0x03,0x19,0x05,0x04,0x05,0x19,
- 0x01,0xe5,0x26,0xe5,0x01,0x01,0x0a,0x05,0x02,0x06,0x02,0x10,0x09,0x01,0xe5,0x05,
- 0x02,0x15,0x15,0x04,0x02,0x09,0x04,0x2d,0x38,0x01,0xe5,0x0b,0xe6,0xe5,0x10,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0xe6,0x04,0x01,0xe5,0xe5,0x01,0x01,0x01,0xe6,0x02,
- 0x01,0x01,0xe5,0x05,0x01,0xe5,0x04,0xe5,0xe5,0x02,0x03,0x01,0xe5,0x03,0x01,0x01,
- 0xe6,0x04,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x07,0x01,0x01,0x01,0x03,0x01,
- 0x01,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x07,0x01,
- 0x02,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x02,0x04,0x01,0x06,0xe7,0x0c,0xe5,
- 0x01,0x37,0x06,0xe5,0x01,0x05,0xe5,0x0b,0x04,0x0a,0x03,0x02,0x02,0xe5,0x01,0x05,
- 0xe5,0x11,0xe5,0x03,0x02,0x02,0x07,0x01,0x01,0x05,0x01,0xe5,0x07,0x03,0x12,0x06,
- 0x01,0x03,0x03,0xe5,0x07,0x02,0x07,0xe5,0x15,0x06,0x07,0xe5,0x0e,0xe7,0x0e,0x03,
- 0x0b,0x13,0x08,0x02,0xe5,0x02,0x02,0xe5,0x02,0x01,0x02,0x06,0x02,0x03,0x09,0x06,
- 0x05,0x04,0x04,0x0f,0xe5,0x04,0x05,0x10,0x01,0x06,0x09,0x04,0x16,0x03,0x12,0x07,
- 0x1b,0xe5,0x0e,0x02,0x02,0xe6,0x1b,0x12,0xe5,0x02,0x06,0x02,0x0c,0x02,0x19,0x04,
- 0x04,0x03,0x06,0x01,0x0f,0x02,0x05,0x04,0xe5,0x02,0x01,0x01,0x01,0x01,0x09,0x06,
- 0x0c,0x02,0xe5,0x06,0x03,0x06,0x02,0x06,0x02,0x11,0x1e,0x01,0x0e,0xe6,0xe6,0x11,
- 0x06,0x09,0xe5,0x10,0x04,0x02,0x01,0x06,0xe5,0xe6,0x02,0x04,0x07,0xe6,0x0a,0x05,
- 0x01,0xe5,0x02,0xe5,0xe5,0xe6,0x02,0xe5,0xe5,0xe5,0x10,0x0e,0x04,0x03,0x07,0xe5,
- 0xe5,0x02,0x06,0x01,0x1e,0x06,0x0d,0x1f,0x01,0x0d,0x01,0x02,0x1b,0x0b,0x01,0x0c,
- 0x04,0x15,0x02,0x04,0x08,0x19,0x01,0x07,0x01,0x11,0x08,0x13,0x1a,0x17,0x24,0x01,
- 0x0d,0x0c,0x05,0xe5,0x07,0x05,0x0d,0x13,0x0f,0x03,0x04,0xe5,0x02,0x05,0x07,0x06,
- 0x04,0x03,0x07,0x15,0x07,0x01,0x03,0x04,0x0c,0x01,0x01,0x05,0x09,0x01,0x05,0x0b,
- 0x0b,0x17,0x0d,0x17,0x0f,0x03,0xe5,0x0c,0x04,0xe5,0x11,0x07,0x0b,0x04,0x09,0x02,
- 0x06,0x13,0xe7,0x03,0x04,0x09,0x09,0x0f,0x08,0x1a,0x09,0x13,0x0b,0x07,0x04,0x01,
- 0x18,0x04,0x01,0x07,0x01,0xe5,0x0c,0x03,0x2f,0x0a,0x10,0x0f,0x07,0x14,0x07,0x01,
- 0x07,0x01,0x07,0x04,0x0f,0x03,0x12,0x07,0x1f,0x07,0x09,0x12,0x19,0x02,0x04,0x02,
- 0x08,0x30,0x06,0x07,0x06,0x02,0xe7,0x06,0xe5,0x03,0x01,0x02,0x04,0x07,0x01,0x09,
- 0x03,0xe5,0x03,0x03,0xe5,0x04,0x01,0xe5,0x01,0x04,0xe5,0xe5,0x11,0x02,0x02,0xe5,
- 0x04,0x06,0x01,0xe5,0x07,0xe5,0x06,0xe5,0xe5,0x05,0x0a,0xe6,0x06,0xe6,0x07,0x10,
- 0xe5,0x10,0x03,0x03,0x3c,0x10,0x03,0x01,0x04,0xe6,0x01,0x06,0x1a,0xe5,0x02,0x08,
- 0x01,0x05,0x02,0x0c,0x04,0x04,0x07,0x06,0x03,0x04,0x01,0x02,0x06,0x01,0x04,0x15,
- 0x02,0x08,0x09,0x05,0x15,0x09,0x01,0xe5,0x01,0x06,0x04,0x02,0x14,0x09,0x07,0x01,
- 0xe5,0x03,0x03,0x0f,0x06,0x08,0x03,0xe5,0x0e,0x03,0x02,0x03,0xe6,0x02,0x04,0x04,
- 0x0b,0x07,0x02,0xe5,0x06,0x06,0x1d,0x01,0x1a,0x1d,0xe5,0x07,0x0e,0xe5,0x01,0x01,
- 0x01,0x0b,0x01,0x2f,0x01,0x11,0x01,0x09,0x04,0x01,0xe5,0x06,0x01,0x01,0x08,0x01,
- 0x09,0x03,0x05,0x0b,0x11,0x1c,0x16,0x09,0x06,0x1d,0x09,0x0e,0x03,0x10,0x0b,0x08,
- 0x1c,0x13,0x12,0x01,0x0b,0x08,0x20,0x1b,0x09,0x07,0x17,0x07,0x08,0x01,0x18,0x01,
- 0x07,0x01,0x0f,0xe5,0xe7,0x0a,0x19,0xe5,0x04,0xe5,0x01,0xe5,0x03,0x0a,0xe5,0xe6,
- 0xe5,0x03,0xe6,0x05,0x01,0xe5,0x01,0x02,0xe6,0x03,0x03,0x05,0x01,0xe6,0xe6,0x01,
- 0x02,0xe5,0xe6,0x01,0x05,0xe5,0x05,0xe5,0x07,0xe9,0x01,0x05,0xe5,0x0b,0x01,0x01,
- 0x02,0xe5,0xe5,0x02,0x05,0x03,0x08,0xe5,0x08,0x05,0x06,0xe5,0x04,0x01,0xe5,0x05,
- 0x09,0x1e,0xe6,0xe5,0xe5,0x01,0x01,0x08,0xe5,0x18,0xe5,0x07,0xe5,0x0d,0x03,0x01,
- 0xe5,0x04,0xe5,0x04,0x02,0xe5,0x01,0x02,0x06,0xe7,0x02,0xe5,0xe6,0x03,0xe5,0x01,
- 0x05,0xe5,0x01,0x05,0xe5,0x10,0x01,0x01,0x01,0xe5,0x03,0x01,0x01,0x05,0x01,0xe5,
- 0xe5,0x01,0x03,0xe5,0xe5,0x02,0x05,0x03,0xe5,0x07,0x09,0x05,0x05,0xe5,0x07,0xe5,
- 0x05,0x09,0x05,0xe5,0x08,0xe5,0x08,0x01,0x02,0xe8,0x03,0x04,0xe5,0x01,0x01,0x0e,
- 0xe5,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0xe5,0x01,0xe5,0xe5,0xe5,0x01,0x01,0x01,0x02,
- 0x04,0x01,0x03,0x03,0x01,0x02,0x07,0x05,0xe5,0x01,0x01,0x07,0x01,0x01,0x05,0x03,
- 0x05,0x04,0xe6,0x01,0x01,0x01,0xe7,0x03,0x01,0x07,0x09,0x01,0x07,0x09,0x09,0x1d,
- 0x06,0x01,0xe5,0x02,0xe5,0x13,0xe5,0x03,0x09,0x09,0x06,0xe6,0x01,0x07,0x02,0x01,
- 0x0e,0x02,0x01,0x07,0x01,0x07,0x01,0x04,0x04,0x04,0xe5,0x01,0x02,0x02,0x04,0x07,
- 0x09,0x01,0x07,0x09,0x09,0x09,0x01,0x09,0x01,0x07,0x06,0xe5,0xe5,0xe5,0x06,0x09,
- 0x09,0x1d,0x06,0x02,0x19,0xe5,0x01,0x0b,0x0b,0x03,0x02,0x0b,0x01,0x01,0x0f,0x1d,
- 0x03,0x02,0xe5,0x01,0xe5,0x01,0x01,0x02,0x03,0x02,0xe5,0x01,0xe5,0x0a,0x02,0x01,
- 0x01,0xe5,0xe5,0x02,0x02,0xe5,0x08,0x04,0x09,0x10,0x04,0x09,0x04,0x04,0x04,0x04,
- 0x04,0x04,0x13,0x04,0x07,0x06,0x01,0x01,0x05,0x09,0x06,0x02,0xe5,0x01,0xe5,0xe5,
- 0x01,0x0f,0x02,0x0a,0x01,0x01,0x04,0x0e,0x09,0x09,0x09,0x04,0xe5,0x03,0x08,0x04,
- 0xe5,0x02,0x05,0x01,0x01,0x04,0xe5,0x02,0x04,0xe5,0x02,0x05,0x03,0x09,0x0b,0x05,
- 0x03,0x09,0x05,0x03,0x05,0x03,0x05,0x03,0x19,0x03,0x05,0x03,0x01,0x02,0x14,0x04,
- 0x01,0x01,0xe5,0xe5,0x01,0x08,0x02,0x02,0xe6,0x0b,0x01,0x05,0x0b,0x01,0x07,0x01,
- 0x07,0x01,0x04,0x04,0x01,0x02,0xe7,0xe5,0x08,0x01,0xe5,0x01,0x01,0x09,0x01,0x04,
- 0xe7,0xe5,0x04,0x01,0x04,0x01,0x02,0x09,0x01,0x09,0x01,0x07,0x09,0x01,0x01,0x01,
- 0xe5,0x01,0x09,0x09,0x06,0x13,0x01,0xe5,0x0c,0x09,0x09,0x02,0x02,0x01,0x07,0x01,
- 0x0d,0xe9,0x0c,0x01,0x11,0x01,0x07,0x01,0x07,0x01,0x05,0x06,0x01,0x02,0x01,0x02,
- 0x01,0x07,0x04,0x09,0x01,0x01,0xe7,0x01,0x09,0x05,0xe6,0xe5,0x02,0xe5,0x03,0x01,
- 0x01,0xe5,0x04,0xe5,0xe5,0x06,0x03,0xe5,0xe5,0xe6,0xe5,0x01,0x01,0x02,0x03,0xe5,
- 0xe5,0xe6,0x02,0xe5,0x03,0x03,0xe8,0x0e,0xe5,0xe5,0x01,0x09,0x04,0x09,0x09,0x01,
- 0xe6,0x0b,0x0b,0x02,0xe5,0x01,0x13,0x02,0x2b,0x02,0xe6,0x08,0x04,0x13,0x02,0x02,
- 0x17,0x09,0x15,0x02,0x06,0x04,0x04,0x09,0x09,0x0c,0xe5,0x04,0x04,0x0e,0x09,0x09,
- 0x0c,0xe5,0x04,0x02,0x02,0x05,0x01,0x02,0xe5,0xe5,0x11,0xe5,0x25,0x05,0xe5,0x07,
- 0xe5,0x01,0x05,0xe5,0x01,0xe5,0x04,0x08,0xe5,0x01,0xe5,0x17,0xe5,0x07,0xe5,0x13,
- 0xe5,0x03,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x11,0xe5,0x11,0xe5,0x01,0x05,
- 0xe5,0x07,0xe5,0x0b,0x06,0x02,0x0b,0x01,0xe5,0x08,0x01,0x02,0x04,0x01,0x02,0x09,
- 0x09,0x09,0x03,0x02,0x02,0xe6,0x06,0xe6,0x02,0x03,0xe6,0x01,0x01,0x02,0x09,0xe5,
- 0xe5,0x05,0x09,0x09,0xe5,0x07,0xe5,0x06,0x02,0x09,0xe5,0x07,0xe6,0x06,0xe5,0xe5,
- 0x05,0xe5,0x07,0xe5,0x07,0x09,0xe5,0x07,0x04,0x01,0x02,0xe6,0xe5,0x04,0xe6,0x06,
- 0xe6,0x06,0x04,0xe6,0x01,0x01,0x03,0x05,0x01,0xe5,0xe5,0xe5,0x01,0x09,0x09,0x26,
- 0x1e,0x31,0x1f,0x7c,0x04,0x01,0x0a,0x09,0x46,0x05,0x09,0x1d,0x01,0x07,0x06,0x0e,
- 0x02,0x10,0x09,0x09,0x13,0x48,0xe6,0xe5,0xe5,0x13,0x02,0x1b,0x01,0x0a,0x01,0x03,
- 0xe5,0xe8,0x02,0x03,0x01,0x0d,0x02,0xe7,0x03,0x01,0x04,0x02,0x01,0x04,0x04,0xe7,
- 0x05,0xe5,0xe5,0x05,0x01,0x07,0x01,0xe5,0xe5,0xe5,0x03,0xe7,0x03,0x01,0xe7,0x06,
- 0xe6,0xe5,0x03,0xe7,0x02,0xe5,0xe5,0x03,0x05,0xe6,0x0d,0x01,0xe5,0xe5,0xe5,0x04,
- 0xe6,0xe5,0x04,0xe6,0x03,0x0c,0x0f,0xe6,0x0f,0x06,0x02,0x17,0x02,0x01,0xe5,0x08,
- 0xe5,0x04,0x01,0xe6,0x07,0xe5,0x03,0x03,0xe5,0x06,0xe6,0x04,0x01,0xe5,0x05,0x01,
- 0xe5,0x07,0xe6,0x03,0xe5,0x01,0xe5,0x06,0x01,0xe5,0x02,0x02,0x01,0xe6,0x04,0x02,
- 0xe5,0x03,0xe5,0xe7,0x01,0x06,0x04,0x02,0xe6,0x01,0x02,0x01,0xe5,0x09,0x02,0x0c,
- 0x02,0xe5,0x08,0x09,0x05,0x03,0x02,0x05,0xe5,0x04,0xe5,0x02,0x01,0x02,0xe5,0x0c,
- 0x0b,0x22,0x13,0x16,0x01,0x01,0x05,0x01,0x03,0x02,0xe5,0xe5,0x08,0xe5,0x01,0x05,
- 0x06,0x01,0xe5,0xe5,0x05,0x09,0x02,0x03,0x03,0x01,0x01,0x0b,0x05,0xe5,0x01,0x11,
- 0x0c,0x04,0x03,0x09,0x06,0x03,0x02,0x01,0x03,0x09,0x0a,0xe5,0x01,0x15,0xe6,0x06,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x07,0xe6,
- 0xe5,0x04,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe5,0x01,0x03,0xe8,0x04,0xe7,0x01,0x01,
- 0x04,0xe6,0x05,0xe8,0x01,0x03,0xe7,0xe5,0x04,0xe5,0x02,0x04,0xe5,0x01,0x03,0xe7,
- 0x07,0xe5,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x02,0x02,0xe7,0x05,0xe8,0xe5,0x04,0xe5,
- 0x07,0xe7,0x02,0x01,0x03,0x04,0x14,0x1b,0x01,0x07,0x01,0xe6,0x0e,0x01,0x09,0x09,
- 0xe5,0x07,0xe5,0x08,0xe5,0x06,0x09,0xe5,0x0a,0x06,0x01,0x09,0xe5,0x12,0x08,0xe6,
- 0x04,0x01,0xe5,0x08,0x09,0x09,0x09,0x09,0xe5,0x06,0x19,0x01,0xe5,0x16,0x1d,0x01,
- 0x07,0x04,0x09,0x04,0x04,0x04,0x04,0x06,0x02,0x06,0x13,0x02,0xe5,0x01,0xe5,0x01,
- 0x01,0xe5,0x01,0x09,0x01,0xe5,0xe5,0x01,0xe5,0x01,0xe5,0x03,0x03,0x05,0x07,0x01,
- 0x06,0x02,0xe5,0x01,0xe5,0xe6,0x08,0x01,0xe5,0x01,0x0d,0x01,0x07,0x01,0xe5,0x01,
- 0x05,0xe5,0x01,0x02,0x01,0x09,0x0c,0x01,0xe6,0x0b,0x0c,0x27,0x13,0x09,0x0a,0x08,
- 0xe5,0x11,0x04,0xe5,0x02,0x04,0xe5,0x01,0x03,0x0d,0xe5,0x02,0xe5,0x02,0x18,0x04,
- 0xe5,0x11,0xe5,0x03,0x17,0xe5,0x07,0xe5,0x0a,0x10,0x01,0xe6,0x16,0x20,0x24,0x15,
- 0xe5,0x08,0x08,0x03,0x01,0xe6,0x04,0x01,0xe5,0x04,0x03,0x01,0x06,0x01,0xe6,0x07,
- 0x16,0x03,0x01,0xe5,0x02,0x0c,0x01,0xe5,0x02,0x16,0x01,0xe5,0x05,0x01,0xe5,0x1c,
- 0x01,0x0d,0x02,0x03,0x13,0x16,0x02,0x04,0x01,0x02,0x06,0x02,0x06,0xe5,0xe6,0x02,
- 0x01,0x02,0xe5,0x04,0x02,0x06,0x02,0xe6,0x03,0x03,0x1b,0xe5,0xe5,0x0f,0x09,0x09,
- 0xe5,0xe5,0x19,0x0b,0xe5,0x09,0x0f,0x02,0x03,0x02,0x02,0x04,0x05,0x06,0x01,0x0c,
- 0x02,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x02,0x02,0x01,
- 0xe5,0x02,0x02,0x01,0xe6,0xe5,0x02,0x01,0xe6,0xe5,0x02,0x01,0x03,0x03,0x01,0x04,
- 0x02,0x01,0x06,0xe5,0xe5,0x02,0x03,0x01,0x07,0x01,0x09,0x01,0x01,0x01,0x03,0x01,
- 0x02,0x04,0x01,0xe5,0xe5,0xe5,0x01,0x01,0xe5,0x02,0x02,0x01,0x03,0x03,0x01,0x01,
- 0x05,0x01,0x07,0x01,0x01,0x02,0x02,0x01,0x07,0xe6,0xe5,0x04,0x01,0x01,0x05,0x01,
- 0x02,0x03,0xe7,0xe5,0x01,0x02,0x01,0x0a,0xe6,0xe5,0x0c,0x04,0x17,0x14,0x01,0x06,
- 0xe5,0xe6,0x05,0x01,0x11,0x01,0x03,0x02,0xe5,0xe5,0xe5,0x04,0xe5,0x10,0x02,0x08,
- 0x02,0xe5,0x01,0xe5,0x03,0xe5,0x07,0x02,0x08,0x01,0x05,0x09,0xe5,0x01,0xe5,0x0d,
- 0xe5,0x02,0x04,0xe5,0x08,0x08,0xe5,0x07,0xe5,0x05,0xe5,0x01,0x05,0x01,0xe5,0x04,
- 0x07,0xe5,0x01,0xe5,0x0a,0x04,0x04,0x06,0x02,0x06,0x09,0x02,0x03,0x02,0x02,0x04,
- 0x01,0x05,0x01,0x04,0x06,0x02,0x06,0x01,0x03,0x03,0x05,0x01,0x08,0x0b,0x01,0x04,
- 0x02,0x01,0x04,0x01,0x03,0x03,0x07,0x1c,0x04,0x06,0x08,0x03,0x12,0x02,0x07,0x09,
- 0x10,0x01,0xe5,0xe5,0x0a,0x01,0xe7,0xe6,0x08,0x23,0x0a,0x02,0x01,0x08,0x02,0x01,
- 0x03,0x01,0x0c,0x13,0xe5,0xe5,0x08,0x0f,0x05,0x0a,0x02,0x02,0xe5,0x05,0x0d,0x05,
- 0x02,0x04,0x04,0x0e,0x09,0x01,0x11,0x09,0x17,0x0c,0xe5,0x01,0x10,0xe5,0xe5,0x05,
- 0x09,0x09,0x1c,0x07,0xe5,0x06,0x02,0x05,0x03,0xe5,0x05,0x01,0x07,0xe6,0x09,0x0b,
- 0x06,0x01,0xe5,0x01,0x02,0x03,0x09,0x06,0x06,0x06,0x0d,0x21,0x1d,0x07,0x01,0xe5,
- 0x07,0xe5,0x02,0xe5,0x01,0x25,0x01,0x01,0x07,0x2b,0x06,0x02,0x0b,0x04,0x09,0x09,
- 0x0c,0xe5,0xe6,0x0e,0x09,0x04,0x04,0x0a,0x27,0xe5,0x0e,0x0b,0x07,0x01,0x01,0x01,
- 0x0d,0xe6,0x01,0x13,0x1f,0x0c,0xe5,0x02,0x03,0x03,0x0a,0x0a,0x0d,0x01,0x07,0x03,
- 0x01,0x09,0x09,0xe5,0x01,0x03,0x0e,0x04,0x09,0x0e,0x04,0x0d,0x05,0x03,0x09,0x04,
- 0xe5,0x1a,0x0a,0xe5,0x0c,0x01,0xe5,0xe5,0xe5,0x0a,0x01,0x03,0xe5,0x06,0x09,0x01,
- 0x07,0x09,0x04,0x2c,0x04,0x04,0x07,0x09,0x09,0x03,0x04,0x0c,0x03,0x01,0xe5,0x02,
- 0x05,0x02,0x0b,0x04,0x01,0x04,0x01,0x03,0x03,0x01,0xe5,0xe5,0x05,0x0a,0x01,0x02,
- 0x09,0x07,0x10,0x02,0x0c,0x02,0x01,0x06,0x01,0xe5,0x28,0x0d,0x01,0x02,0x11,0x0a,
- 0x02,0x0e,0x02,0x12,0xe5,0x0b,0x11,0x03,0x02,0x05,0x07,0x07,0x07,0x13,0xe5,0x09,
- 0x1e,0x0f,0x0c,0x01,0x03,0x22,0x0f,0x05,0x05,0xe6,0x07,0xe5,0x01,0xe5,0x0d,0xe5,
- 0x0d,0x03,0xe7,0x01,0x0a,0x02,0xe6,0xe5,0x03,0xe7,0x05,0xe7,0x03,0x03,0x09,0xe5,
- 0x08,0xe6,0x06,0xe5,0x06,0x06,0xe5,0x16,0x26,0xe5,0xe5,0x15,0xe7,0xe5,0xe5,0x01,
- 0x1d,0x16,0x07,0x03,0x02,0xe6,0x01,0xe5,0x0d,0x02,0xe6,0x0f,0x14,0x07,0x08,0x01,
- 0x13,0x0c,0x01,0x04,0x02,0x03,0x21,0x29,0x03,0x13,0x03,0x01,0x01,0x06,0x02,0x01,
- 0x09,0x0d,0x08,0xe5,0x05,0x02,0x02,0x01,0xe5,0x0c,0x06,0xe5,0x03,0xe5,0xe5,0x03,
- 0x0e,0x04,0x01,0x06,0x02,0x0a,0x01,0x08,0x02,0x04,0x12,0xe5,0x03,0x03,0x02,0x06,
- 0x02,0x02,0xe5,0x01,0x05,0x09,0x11,0x01,0x1c,0x01,0xe5,0xe5,0x05,0x09,0xe6,0xea,
- 0x0d,0x09,0x27,0x0b,0x04,0x0c,0x0c,0x03,0x02,0x0b,0x09,0xe5,0x01,0x03,0xe5,0xe5,
- 0x07,0x01,0x1b,0x01,0x0f,0x01,0x07,0x01,0x07,0x01,0x15,0x18,0x07,0x10,0x02,0x03,
- 0x05,0x04,0x04,0x0a,0x0d,0x13,0x02,0x01,0x0b,0x01,0x0f,0x01,0x02,0x06,0x08,0x1b,
- 0x09,0x03,0x15,0x07,0x10,0x08,0xe5,0x07,0xe5,0x07,0x0f,0xe5,0x24,0x0c,0x02,0xe7,
- 0x1b,0xe5,0x03,0xe5,0x01,0xe5,0xe5,0x01,0xe6,0x06,0x0a,0x08,0xe5,0x04,0x02,0xe5,
- 0x07,0xe5,0x07,0xe5,0xe6,0x05,0x08,0xe5,0x01,0xe5,0x03,0xe5,0x01,0x01,0x04,0xe5,
- 0xe6,0x03,0x02,0x05,0x02,0xe5,0x04,0x02,0xe5,0x06,0x01,0xe5,0xe5,0xe5,0x01,0xe6,
- 0x09,0x01,0xe5,0x02,0x13,0x07,0x01,0x04,0x01,0xe5,0x01,0xe5,0x04,0x0c,0xe5,0xe6,
- 0x01,0x0e,0xe5,0xe6,0xe5,0x01,0x01,0x0a,0x0e,0xe5,0x0a,0x09,0xe5,0x07,0xe5,0x01,
- 0x08,0x06,0x03,0xe5,0x03,0xe5,0xe5,0x02,0xe5,0xe6,0x01,0x01,0xe5,0x01,0x03,0x08,
- 0x03,0x01,0xe6,0x02,0xe6,0x0c,0xe5,0x01,0x06,0x09,0x02,0x01,0x07,0x03,0xe5,0x03,
- 0x06,0x06,0xe5,0x0a,0xe5,0x11,0x06,0x01,0x02,0x09,0x0a,0x03,0xe5,0x02,0x09,0x01,
- 0x02,0x02,0xe5,0x03,0x0d,0x12,0x05,0x03,0x07,0x02,0x01,0x01,0x07,0xe5,0xe5,0xe5,
- 0x06,0x0b,0x09,0x0e,0x01,0xe5,0xe5,0x08,0x01,0x05,0x01,0x01,0xe5,0x0f,0x03,0x05,
- 0x06,0x01,0x02,0x0e,0x01,0xe5,0x0f,0xe5,0xe5,0x12,0x09,0x03,0x05,0x10,0x01,0xe5,
- 0x0a,0x08,0x02,0x06,0xe5,0x1f,0x09,0x06,0xe5,0x01,0x05,0x02,0x01,0x07,0x09,0x09,
- 0x09,0x09,0x01,0x07,0x06,0xe5,0xe5,0xe5,0x07,0xe5,0x08,0x09,0x06,0x04,0x0e,0x02,
- 0x01,0x0e,0xe5,0xe5,0x12,0x0b,0x09,0x13,0x0b,0x02,0x01,0x01,0x13,0x02,0x14,0x0b,
- 0x06,0x02,0xe5,0xe5,0x01,0x0b,0x0b,0x09,0x0c,0x03,0x0c,0x06,0x05,0x0b,0xe5,0x01,
- 0xe5,0x08,0x01,0x05,0x03,0x02,0x04,0x01,0x05,0x01,0x04,0x0e,0x04,0x03,0x0a,0x01,
- 0x07,0x05,0x02,0xe5,0x05,0x01,0x0a,0x04,0x01,0x01,0x07,0x03,0x02,0x0e,0x19,0x03,
- 0x05,0x03,0x02,0xe7,0x07,0x04,0x05,0x03,0x05,0x03,0x05,0x03,0x04,0x04,0x02,0xe6,
- 0x03,0x05,0x03,0x03,0x05,0x0b,0x02,0x01,0xe5,0x02,0x05,0x01,0x01,0x09,0x01,0x02,
- 0xe5,0xe5,0xe5,0x04,0x04,0x01,0x01,0x0a,0x04,0x02,0xe5,0x09,0x01,0x01,0x07,0x01,
- 0x02,0x01,0x02,0x01,0x01,0x02,0x0a,0x01,0x01,0x01,0x02,0x04,0x04,0xe7,0x24,0x04,
- 0x0b,0x04,0x01,0xe5,0xe5,0x04,0x01,0x01,0x02,0x04,0x0b,0x09,0x05,0x01,0x09,0x01,
- 0x09,0x07,0x01,0x01,0x07,0x09,0x04,0x04,0x01,0x02,0x06,0x01,0x05,0x01,0x02,0x04,
- 0x13,0x04,0x02,0x0b,0x01,0x07,0x09,0x10,0x01,0x04,0x0b,0xe5,0x01,0xe5,0xe6,0x27,
- 0x09,0x05,0xe5,0x01,0x01,0x01,0xe5,0x03,0x01,0x07,0x05,0xe5,0x01,0x09,0x09,0x03,
- 0xe5,0x03,0x01,0x07,0x09,0x01,0x02,0xe6,0x02,0xe5,0x02,0xe5,0x03,0x09,0x01,0x0c,
- 0x01,0x01,0xe5,0xe5,0x06,0x13,0x13,0x01,0x09,0x09,0x0e,0x01,0xe5,0xe5,0x0d,0xe5,
- 0x01,0x74,0x1d,0x0b,0x02,0xe5,0x07,0x02,0x06,0x02,0x03,0x02,0xe5,0x11,0x02,0x10,
- 0x02,0x44,0x02,0x14,0x09,0x23,0xe5,0x2f,0xe5,0x01,0xe5,0x17,0xe5,0x09,0xe5,0x01,
- 0xe5,0x07,0xe5,0x07,0x05,0xe5,0x15,0xe5,0x11,0x45,0xe9,0x0d,0x05,0xe5,0x01,0x05,
- 0x03,0x09,0x02,0x06,0x06,0x02,0xe5,0x04,0x02,0x09,0x09,0x09,0x02,0x03,0x02,0xe5,
- 0x07,0x06,0x02,0x09,0xe6,0x05,0x02,0xe5,0x07,0x09,0x05,0x03,0xe6,0x06,0x09,0x09,
- 0x06,0x02,0x03,0x05,0x09,0x09,0x09,0x09,0x06,0x02,0x0d,0xe9,0x01,0x12,0xe5,0x23,
- 0x09,0x02,0x26,0xe5,0x11,0x48,0x12,0xe5,0x1c,0x1c,0xe5,0x0d,0x04,0x01,0x15,0x30,
- 0x28,0x05,0x24,0x04,0x2b,0x13,0x1d,0x1d,0x12,0xe5,0xe6,0x0c,0x01,0x06,0xe5,0xe5,
- 0x17,0x09,0x01,0x02,0xe7,0x05,0x04,0x02,0x01,0x09,0x07,0x01,0x09,0xe7,0x0f,0x04,
- 0x04,0xe7,0x07,0xe7,0x03,0x01,0x07,0x01,0x0a,0x01,0x04,0x01,0x04,0x04,0x09,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x1a,0x02,0x0e,0x01,0xe6,0xe5,0x0c,0x01,0xe5,0x05,
- 0x01,0xe5,0x0c,0x19,0xe5,0xe5,0x02,0x02,0x06,0x01,0xe5,0x07,0xe5,0x05,0x01,0xe5,
- 0x04,0xe5,0xe7,0x01,0x0c,0x02,0x08,0xe6,0x01,0x01,0x02,0x01,0xe6,0x01,0x02,0x01,
- 0xe5,0x02,0x02,0x01,0xe5,0x04,0x03,0xe5,0x04,0x01,0xe5,0x05,0x03,0x04,0x02,0xe5,
- 0x05,0x01,0x01,0x05,0x01,0xe5,0x05,0x01,0xe5,0x07,0xe5,0x08,0x12,0x01,0x0c,0x02,
- 0xe6,0x0a,0xe5,0xe5,0x06,0x01,0x27,0x01,0x01,0x05,0x07,0x01,0x09,0x04,0x02,0x01,
- 0x03,0xe5,0x12,0x04,0x09,0xe5,0x06,0x06,0x0d,0x01,0x04,0x0c,0x01,0x09,0x04,0x04,
- 0x09,0x07,0x01,0x07,0x01,0x07,0x10,0x09,0x02,0x10,0xe9,0x07,0x03,0x01,0x05,0xe6,
- 0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe6,0xe5,0x04,0xe5,
- 0x01,0x05,0xe6,0xe5,0x04,0xe6,0x01,0x04,0xe5,0x07,0xe6,0x06,0xe5,0x01,0x04,0xe5,
- 0x02,0x02,0x03,0xe5,0x08,0xe6,0xe5,0x03,0xe6,0x07,0xe6,0xe5,0x04,0xe6,0x04,0xe5,
- 0xe5,0x01,0x05,0xe6,0xe5,0x02,0xe6,0xe5,0xe5,0x04,0xe6,0xe5,0x02,0x01,0xe5,0x01,
- 0x03,0xe7,0x05,0xe5,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0x02,0x04,0x04,0x05,0x07,
- 0x01,0x0a,0x09,0x09,0x08,0x09,0x0a,0xe5,0x06,0x14,0x09,0x08,0xe5,0x07,0xe6,0x01,
- 0x07,0x06,0x01,0xe5,0x05,0x01,0xe5,0x02,0x02,0x01,0xe6,0x0e,0x01,0x09,0x14,0x08,
- 0xe5,0x05,0x05,0xe5,0xe6,0xe5,0x02,0xe5,0x04,0xe5,0x06,0x10,0x01,0x0f,0x07,0x01,
- 0x0a,0x1f,0x04,0x15,0x14,0x01,0x0e,0x02,0x08,0x02,0x03,0x07,0x03,0xe5,0xe5,0x06,
- 0x01,0x06,0xe5,0x03,0x0e,0x04,0x01,0x01,0x02,0x0c,0x01,0xe6,0x02,0x08,0x03,0x01,
- 0x03,0x05,0xe6,0xe5,0x05,0x0a,0x03,0x0d,0xe7,0x0c,0x01,0x07,0x16,0x09,0x08,0x09,
- 0x13,0x1e,0x08,0x09,0x08,0x03,0x03,0x05,0x09,0x05,0x02,0x13,0x03,0x01,0xe5,0x01,
- 0x0d,0x01,0x0d,0xe5,0x05,0x07,0x01,0x01,0x05,0xe5,0x0b,0x0e,0x02,0xe5,0x0c,0x01,
- 0x07,0x01,0x0a,0x09,0x09,0x10,0x0c,0x08,0x0a,0x13,0x06,0x02,0x08,0x04,0x0b,0x05,
- 0x09,0x03,0x0f,0x0d,0x04,0xe5,0x05,0x06,0x05,0x08,0xe5,0x01,0x05,0x04,0x02,0x01,
- 0x04,0x05,0x06,0x12,0x01,0xe5,0xe5,0x09,0xe5,0xe5,0x19,0x01,0xe6,0x0c,0x13,0x01,
- 0x01,0xe6,0x12,0x05,0x02,0x26,0x02,0xe5,0x04,0x13,0x15,0xe5,0x0f,0xe5,0xe5,0x0d,
- 0x01,0x02,0x0a,0x09,0x0c,0x05,0x0e,0x02,0x0d,0x03,0x01,0x07,0x01,0x01,0x05,0x01,
- 0x02,0x01,0x02,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0x02,0x04,0x01,0xe5,0x02,0x02,
- 0x01,0x02,0x04,0x01,0x07,0x01,0x03,0x02,0xe5,0xe5,0x06,0x01,0x07,0x01,0xe5,0x05,
- 0x01,0x07,0x01,0x01,0x04,0x02,0x01,0x07,0x01,0x02,0x04,0x01,0xe5,0x05,0x01,0x07,
- 0x01,0xe5,0x05,0x01,0xe5,0x02,0x02,0x01,0xe5,0x05,0x01,0xe5,0x02,0x02,0x01,0x07,
- 0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x04,0xe5,0xe5,0x05,0x01,0x01,0x02,0xe5,
- 0x2c,0xe5,0x07,0x03,0x06,0x12,0x02,0x10,0xe5,0x05,0x01,0xe5,0x04,0x02,0xe5,0x01,
- 0x08,0x0b,0x03,0x02,0xe5,0x07,0xe5,0x02,0x01,0x02,0xe5,0x01,0x04,0x04,0x0a,0x08,
- 0x02,0x09,0x04,0x0f,0x02,0x03,0x0a,0x15,0x11,0x01,0xe6,0x09,0x09,0x13,0x01,0x01,
- 0x05,0x03,0x06,0x01,0x02,0x0d,0x03,0x01,0x03,0x07,0x04,0xe5,0x05,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x08,0x06,0xe5,0xe5,0x02,0x04,0xe5,0x01,0xe5,0xe5,0xe5,0xe5,0x02,
- 0x02,0x04,0x04,0x03,0x06,0x02,0x1b,0x01,0x09,0x02,0x03,0x2a,0x08,0x02,0x01,0x01,
- 0x0a,0x09,0x19,0x1e,0x11,0x0e,0x06,0x01,0x0f,0x09,0x09,0x12,0x03,0x0a,0x02,0x0f,
- 0x17,0x0e,0x17,0x05,0x16,0x01,0xe6,0x0c,0x19,0x1a,0x0f,0xe7,0x0b,0x01,0x02,0x01,
- 0xe5,0x05,0xe5,0x16,0x01,0x01,0x05,0x06,0x01,0x02,0x0e,0x01,0x07,0x01,0x04,0x02,
- 0x03,0x03,0x09,0x0d,0x03,0x03,0x01,0x07,0x01,0x0a,0x08,0x05,0x0b,0xe5,0x0e,0x01,
- 0x01,0x0f,0x2e,0x09,0x0b,0x05,0x0b,0x01,0x01,0x03,0x09,0x06,0x03,0x14,0x01,0x07,
- 0x0f,0x03,0x01,0x03,0x04,0x03,0x26,0xe5,0x04,0x03,0x11,0x11,0x10,0x01,0x03,0x09,
- 0x18,0xe5,0x02,0x16,0x07,0x05,0x0c,0x01,0x07,0x04,0xe5,0xe6,0x06,0x04,0x0d,0x11,
- 0x03,0x01,0x0f,0x09,0x01,0x09,0x03,0x0f,0x07,0x05,0x05,0x07,0x01,0x20,0x12,0x06,
- 0x01,0x0f,0xe5,0x10,0x09,0x01,0x09,0x01,0x02,0x04,0x0e,0x13,0x01,0x07,0x05,0x08,
- 0x04,0xe5,0x02,0x03,0x03,0x05,0x02,0xe5,0x02,0x04,0x02,0x02,0x07,0x05,0x04,0x04,
- 0x0c,0x06,0x02,0x0e,0x01,0x02,0x06,0x38,0x01,0xe6,0x05,0x22,0x17,0x02,0x09,0x04,
- 0x03,0xe5,0x11,0xe5,0x03,0x03,0xe5,0xe5,0x08,0x04,0x01,0x02,0x0c,0x03,0x01,0xe5,
- 0x03,0x03,0x02,0x1f,0x04,0x01,0x02,0x0f,0x09,0x20,0xe5,0x0e,0x08,0x03,0x02,0x02,
- 0x0d,0x1a,0xe5,0x08,0x0c,0x02,0x0b,0x06,0x0a,0x01,0x06,0x02,0xe7,0x02,0x0d,0xe6,
- 0xe6,0x02,0x01,0x06,0xe6,0x09,0xe6,0x10,0x01,0x07,0xe8,0x06,0x01,0x11,0x0c,0x06,
- 0x08,0x01,0x07,0xe6,0x21,0xe5,0xe6,0x05,0x1f,0x04,0x01,0x08,0x06,0x05,0x03,0xe5,
- 0x03,0x01,0xe5,0x09,0xe5,0x03,0x09,0x06,0x10,0xe5,0x01,0x0a,0x01,0x04,0x07,0x03,
- 0x02,0x11,0x04,0x05,0x04,0x03,0x13,0x13,0x13,0x18,0x0a,0xe5,0xe6,0x08,0x05,0x11,
- 0x01,0x03,0x09,0x08,0xe5,0x05,0x0f,0x06,0x01,0x06,0xe5,0x01,0x02,0x03,0x03,0x01,
- 0x06,0x1d,0x0c,0x01,0x03,0x01,0x01,0x01,0x02,0xe6,0x03,0x06,0x02,0x09,0x09,0x03,
- 0x09,0x05,0x01,0x02,0x04,0x04,0x1c,0x14,0xe9,0x08,0x03,0xe5,0x02,0x0f,0xe5,0x1f,
- 0x07,0xe5,0x17,0xe6,0x01,0x04,0x01,0x07,0x01,0x18,0x09,0xe5,0x04,0x09,0x09,0x01,
- 0xe5,0x05,0xe5,0x07,0x01,0x07,0x13,0x01,0x04,0x02,0x04,0x2f,0xe5,0xe5,0x01,0x01,
- 0x06,0x05,0x13,0x0d,0x1d,0x1e,0x12,0x26,0x09,0x0a,0x09,0x06,0x01,0x01,0x04,0x03,
- 0x13,0xe5,0x07,0x0c,0x1b,0x0a,0x01,0xe5,0x01,0xe6,0x17,0xe5,0x04,0x03,0x08,0xe5,
- 0xe6,0x04,0xe5,0x0e,0x02,0xe5,0x04,0x03,0x05,0x06,0xe5,0x04,0xe5,0x03,0x03,0x09,
- 0x09,0x02,0x01,0x04,0x06,0x04,0x01,0xe5,0x05,0x01,0xe5,0x01,0x03,0xe5,0x07,0xe5,
- 0x05,0x01,0xe5,0xe6,0xe5,0x02,0x02,0xe5,0x04,0x07,0x01,0xe5,0xe6,0x04,0x0a,0x0b,
- 0x01,0x04,0x05,0x06,0x01,0x0f,0x02,0xe7,0x01,0x01,0x16,0x01,0xe5,0x01,0x0c,0x02,
- 0xe5,0x06,0x04,0xe5,0x04,0xe5,0xe5,0x08,0x03,0x05,0x06,0x01,0xe5,0x08,0x02,0x06,
- 0x03,0x09,0x02,0x01,0xe6,0x01,0x01,0xe5,0x0a,0x01,0x04,0x02,0x01,0xe5,0x02,0xe5,
- 0xe6,0x04,0x0b,0xe5,0x01,0x02,0x09,0x09,0x03,0x01,0x03,0x17,0xe5,0x0a,0x05,0xe5,
- 0x0d,0x01,0x03,0xe7,0x03,0x1c,0x03,0x0c,0xe5,0xe5,0xe5,0xe5,0x0e,0x03,0x01,0xe5,
- 0x0b,0x0d,0x05,0x06,0xe5,0x02,0x13,0x09,0x03,0x0f,0x06,0xe5,0xe5,0x05,0xe5,0xe5,
- 0x02,0x05,0x06,0x01,0xe5,0x0f,0xe5,0xe5,0x05,0xe5,0x02,0x15,0x05,0x10,0xe5,0x02,
- 0x06,0xe6,0x01,0x1e,0x10,0x02,0x01,0x04,0x0c,0x13,0x09,0x09,0x06,0xe5,0xe5,0xe5,
- 0x10,0x05,0xe5,0x03,0x13,0x06,0x02,0x06,0x02,0x09,0x06,0x02,0x10,0x02,0x06,0x04,
- 0x1b,0x0f,0xe5,0x05,0x04,0x01,0x23,0x02,0x0c,0x09,0x03,0x02,0xe5,0x01,0xe5,0x08,
- 0x09,0x0b,0x04,0x01,0x02,0x02,0x01,0x01,0x05,0xe5,0x01,0xe5,0xe5,0x01,0x06,0x02,
- 0x03,0x01,0xe5,0xe5,0x01,0x04,0x01,0x02,0x04,0x04,0x02,0x06,0x02,0x06,0xe5,0x01,
- 0xe5,0x03,0x02,0x06,0x01,0x01,0x05,0x02,0x06,0xe5,0xe6,0x01,0x02,0xe5,0x01,0x05,
- 0x09,0x04,0x19,0x01,0xe7,0x01,0x1e,0x04,0x03,0x0e,0x05,0x04,0x03,0xe5,0x02,0x05,
- 0x09,0x03,0x05,0x01,0x07,0x04,0x04,0x04,0x04,0x01,0x01,0x05,0x03,0x03,0xe5,0x01,
- 0x01,0x02,0x04,0x01,0x01,0x05,0x03,0x05,0x03,0x05,0x03,0x02,0x01,0xe5,0x02,0x05,
- 0x03,0x01,0x02,0x0a,0x03,0x09,0x01,0x02,0x14,0x03,0x13,0x02,0x01,0x01,0xe5,0x21,
- 0x02,0x02,0x0b,0x01,0x02,0x04,0x01,0x04,0xe5,0xe5,0x08,0x01,0x07,0x0b,0x09,0x09,
- 0x07,0x01,0x03,0xe5,0x03,0x02,0x02,0x03,0x09,0x01,0x07,0x03,0x01,0xe5,0x05,0x09,
- 0x05,0x06,0x06,0x0b,0xe5,0x05,0x07,0x01,0x09,0x02,0x01,0x04,0x02,0x01,0xe5,0x05,
- 0x01,0x10,0x01,0x01,0xe5,0x20,0x04,0x0e,0x01,0x07,0x01,0x02,0xe7,0xe5,0x08,0x01,
- 0x02,0x04,0x09,0x01,0x02,0x04,0x04,0x04,0x01,0x02,0x04,0x01,0x01,0xe5,0xe5,0xe6,
- 0x02,0xe5,0x05,0x04,0x04,0x01,0x01,0xe5,0x03,0x04,0x01,0x01,0xe5,0x03,0x04,0x04,
- 0x04,0x03,0xe5,0xe6,0xe5,0x03,0x08,0xe5,0xe5,0x01,0x04,0x09,0x01,0x01,0x05,0x01,
- 0x07,0x04,0x05,0xe5,0x13,0xe5,0xe5,0x44,0x13,0x27,0x06,0x09,0x15,0x09,0x09,0x02,
- 0xe5,0x04,0x02,0xe5,0x04,0x04,0x04,0x09,0x04,0x04,0x09,0x02,0xe5,0x04,0x04,0x04,
- 0x20,0x01,0x02,0x46,0xe6,0x0d,0x04,0x0e,0x16,0x01,0x03,0xe5,0x07,0xe5,0x13,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x01,
- 0x05,0xe5,0x07,0xe5,0x07,0xe5,0x20,0xe8,0x0d,0x09,0x09,0x09,0x09,0x06,0x02,0x09,
- 0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x09,0x03,0x05,0xe5,0x07,0xe5,0x02,0x01,
- 0x04,0x09,0xe5,0xe5,0x05,0xe6,0x01,0x01,0x02,0xe6,0x06,0xe6,0x06,0xe5,0x02,0x01,
- 0x02,0xe6,0xe5,0x04,0xe5,0x02,0x01,0x02,0xe6,0xe5,0x01,0x02,0xe6,0x06,0xe6,0x06,
- 0xe6,0x06,0x09,0x04,0x01,0x06,0x03,0xe5,0x01,0x1d,0x1a,0x13,0x09,0x02,0x06,0x02,
- 0x06,0x2a,0x51,0x06,0x02,0x31,0x04,0x06,0x1e,0x3a,0x09,0x25,0x09,0x03,0x02,0x0e,
- 0x27,0x13,0x01,0x0a,0x32,0x0c,0x0f,0x13,0x02,0x0e,0x01,0x07,0x01,0x02,0x01,0x02,
- 0x01,0x07,0x01,0x02,0x06,0x04,0x04,0x02,0x06,0x02,0x06,0x02,0x04,0x01,0xe7,0x03,
- 0x01,0xe7,0xe5,0x03,0x01,0x02,0x06,0xe7,0xe5,0x03,0xe7,0xe5,0xe6,0xe8,0xe5,0x01,
- 0x01,0xe7,0x05,0xe7,0x03,0x01,0xe7,0x03,0x01,0xe5,0xe5,0xe5,0x01,0x01,0xe7,0xe5,
- 0x04,0x01,0x07,0xe6,0x06,0xe6,0xe5,0x1e,0xe6,0x0e,0xe5,0x0f,0x01,0x01,0x0f,0x01,
- 0xe5,0x05,0x01,0x01,0x05,0x01,0xe5,0x02,0x02,0x01,0x01,0x01,0x03,0x02,0x08,0x01,
- 0x01,0xe5,0x03,0x01,0x07,0x01,0x05,0x01,0xe6,0x04,0x01,0xe6,0x08,0x01,0x07,0xe6,
- 0x06,0xe6,0x04,0x02,0xe5,0x04,0x02,0xe5,0x06,0xe6,0x04,0x02,0xe5,0x04,0x01,0xe6,
- 0x04,0x02,0xe5,0x03,0x03,0xe5,0x08,0x09,0x20,0xe5,0x01,0xe5,0x0d,0x0d,0xe5,0x03,
- 0x03,0x0d,0x01,0x04,0x04,0x07,0x01,0x03,0x05,0x04,0x04,0x04,0x04,0x09,0x03,0x05,
- 0x03,0x03,0x01,0x01,0x05,0x01,0xe5,0x06,0xe5,0xe5,0x08,0xe5,0x07,0x09,0x09,0xe5,
- 0x07,0x01,0x02,0x04,0x03,0x03,0x01,0x09,0x03,0x10,0x0a,0x0c,0x15,0x01,0x0f,0x05,
- 0xe5,0x05,0x01,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0x04,0xe6,0xe5,0xe5,
- 0x04,0xe6,0x06,0xe6,0x06,0xe5,0x01,0x05,0x03,0x05,0xe5,0x01,0x05,0xe6,0xe5,0x02,
- 0xe8,0xe5,0x02,0xe7,0x03,0x05,0xe5,0x01,0x03,0xe7,0x01,0xe5,0x02,0xe6,0x02,0x04,
- 0xe5,0x07,0xe5,0x01,0x03,0xe7,0x02,0x03,0xe7,0xe5,0x02,0xe7,0x02,0x04,0xe5,0x07,
- 0xe5,0x05,0xe7,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x07,0x02,0x0f,0x28,0x0e,0x04,0x06,
- 0x0b,0xe5,0x07,0x09,0x07,0x01,0x0a,0x14,0x09,0x09,0xe6,0x07,0x09,0x08,0x0a,0x03,
- 0x01,0x03,0xe5,0x07,0x06,0x01,0xe5,0x08,0x09,0x09,0xe5,0x18,0xe5,0x0e,0x0f,0x01,
- 0x04,0x11,0x0b,0xe5,0x01,0x0c,0x02,0x04,0x09,0x04,0x03,0xe5,0x03,0x04,0x01,0x02,
- 0x07,0x01,0xe5,0x01,0x05,0xe5,0x01,0x07,0x03,0x02,0x02,0xe5,0x01,0x02,0x02,0x03,
- 0x03,0x01,0x09,0x06,0x02,0xe5,0x01,0x05,0x09,0xe5,0x01,0x05,0x04,0x02,0x01,0x09,
- 0xe5,0x01,0x03,0x01,0xe5,0x01,0x1c,0x01,0xe6,0x0d,0x0d,0x23,0x04,0xe5,0x03,0x12,
- 0xe5,0x07,0x09,0x18,0xe5,0x07,0xe5,0x01,0x02,0x09,0x04,0xe5,0x02,0x04,0x0f,0x08,
- 0x04,0xe5,0x03,0x0d,0xe5,0x03,0x08,0x0a,0x03,0xe5,0x07,0xe5,0x1c,0x02,0x03,0x0b,
- 0x0d,0x03,0x16,0x06,0x05,0x06,0x10,0x02,0x06,0x06,0x02,0x19,0x01,0xe5,0x05,0x01,
- 0xe5,0x08,0x01,0x02,0x03,0x01,0xe5,0x01,0x06,0x16,0x03,0x01,0xe5,0x0f,0x01,0xe5,
- 0x19,0x01,0xe5,0x05,0x01,0xe5,0x02,0x09,0x11,0x02,0x39,0x0c,0x04,0x04,0x01,0xe5,
- 0x05,0x02,0x01,0x04,0xe5,0xe5,0x05,0x02,0x06,0xe5,0xe5,0x03,0x19,0xe5,0x0f,0x02,
- 0x06,0x09,0x01,0xe5,0x05,0xe5,0xe5,0x05,0x01,0xe7,0x0d,0x01,0xe5,0x05,0x01,0xe5,
- 0x19,0x02,0x17,0xe5,0x01,0x10,0xe5,0xe5,0x06,0x01,0x07,0x01,0x01,0x05,0x01,0x07,
- 0xe6,0x06,0x01,0xe6,0xe5,0x02,0x01,0xe6,0x01,0x02,0x01,0xe5,0xe5,0x02,0xe5,0xe5,
- 0x06,0x01,0x04,0x02,0x01,0x01,0x05,0x01,0x07,0xe7,0x04,0xe5,0xe6,0xe5,0x05,0x01,
- 0x01,0x05,0x01,0x07,0x01,0x04,0x02,0x01,0x01,0x02,0x02,0x01,0x04,0x02,0x01,0x01,
- 0x02,0x02,0x01,0x01,0xe5,0x03,0x01,0x01,0x02,0x02,0x01,0x04,0x02,0x01,0x01,0x05,
- 0x01,0x01,0x05,0x01,0x02,0x02,0x01,0x01,0x01,0x05,0x01,0x0a,0xe5,0xe6,0x09,0x0e,
- 0xe5,0xe5,0x07,0x0a,0x09,0x08,0x07,0x0a,0x02,0x03,0xe7,0x06,0x08,0x03,0xe5,0x01,
- 0x02,0x02,0x01,0xe5,0x03,0x01,0x04,0x02,0x01,0x06,0x0c,0x04,0x02,0xe6,0x08,0xe5,
- 0x01,0x06,0x0b,0x06,0xe5,0x03,0x03,0x09,0xe5,0x12,0x14,0x16,0x03,0xe5,0x14,0xe5,
- 0xe5,0x05,0x03,0x05,0x08,0x08,0x01,0x0c,0x01,0x04,0x01,0x09,0x02,0x03,0x0a,0x09,
- 0x05,0x06,0x01,0x07,0x01,0x01,0x0a,0xe5,0x04,0x01,0x01,0x05,0xe5,0x06,0x08,0x03,
- 0x04,0x05,0x03,0x01,0x0a,0x02,0x0a,0x09,0x04,0x04,0x09,0x14,0x08,0xe7,0xe5,0x1a,
- 0x04,0x09,0x05,0x03,0x06,0x06,0x05,0x06,0x0c,0x02,0x02,0x09,0x08,0xe5,0x07,0x0a,
- 0x0a,0x0e,0x06,0x0e,0x07,0x06,0x0f,0x11,0x01,0x10,0x31,0x01,0x21,0x01,0x0a,0x0c,
- 0x03,0x01,0x01,0x02,0x02,0x09,0xe6,0x03,0x05,0x03,0xe5,0xe7,0x03,0x02,0xe6,0x06,
- 0xe6,0x06,0x0b,0x04,0xe5,0xe7,0xe5,0x02,0xe5,0x09,0x0b,0x06,0x02,0x13,0x09,0xe5,
- 0x09,0x07,0x01,0x04,0x1a,0x13,0x01,0xe6,0x01,0x02,0x20,0x19,0x03,0x05,0x04,0x05,
- 0x01,0x06,0x07,0x0b,0x13,0x03,0x07,0x05,0x02,0xe5,0x03,0x16,0x01,0x03,0x01,0x08,
- 0x03,0x0a,0x04,0x0e,0x09,0x01,0x01,0x03,0x1f,0x12,0xe6,0xe5,0x08,0x09,0x05,0xe5,
- 0x05,0x01,0x03,0x05,0x03,0x05,0x04,0x02,0x01,0x01,0x01,0x05,0x09,0x03,0x05,0x07,
- 0x01,0x07,0x01,0x03,0xe6,0xe5,0xe5,0x02,0xe5,0x03,0x05,0x03,0x07,0x01,0x0f,0x13,
- 0x05,0x03,0x0a,0x0e,0x03,0x03,0x18,0x10,0x02,0x08,0xe5,0x09,0xe9,0x17,0x09,0x02,
- 0x06,0x04,0x04,0x09,0x01,0x04,0xe5,0xe5,0xe5,0x06,0x09,0x06,0x02,0x09,0x09,0x01,
- 0x07,0x01,0x07,0x03,0x06,0x01,0xe5,0x05,0x02,0x02,0x03,0x01,0x01,0x08,0x04,0x01,
- 0x1d,0x02,0x09,0x04,0x14,0x03,0x06,0xe6,0x15,0x03,0xe6,0x02,0x0e,0x0c,0x10,0x0a,
- 0x0a,0x09,0x07,0xe5,0x07,0x13,0x01,0x09,0x07,0x01,0x07,0x12,0x01,0x02,0x14,0x64,
- 0x0b,0x0c,0x09,0xe7,0x02,0x02,0xe6,0x03,0x02,0x09,0xe6,0x01,0xe5,0x02,0xe5,0x03,
- 0xe5,0x02,0xe5,0x02,0x05,0x10,0xe7,0x02,0x03,0xe6,0x06,0xe6,0x07,0xe6,0x05,0x0a,
- 0x07,0x11,0xe5,0x02,0xe7,0x02,0x01,0xe7,0x05,0xe5,0xe5,0x01,0xe5,0x02,0xe6,0x01,
- 0xe5,0x0d,0xe6,0xe5,0x18,0xe5,0x0f,0xe5,0x10,0xe8,0xe5,0x01,0x04,0x07,0x02,0x05,
- 0x06,0xe5,0x0e,0x05,0x06,0x04,0x07,0x01,0x02,0xe5,0x02,0x03,0xe6,0x0c,0x03,0x02,
- 0xe5,0x07,0xe5,0x02,0x02,0xe5,0x02,0x02,0x09,0x03,0x20,0x05,0x02,0x01,0x08,0x08,
- 0x02,0x0a,0x07,0x03,0x1a,0x21,0xe5,0x01,0x02,0x10,0x05,0x03,0x02,0x02,0x03,0x05,
- 0x03,0x04,0xe5,0x08,0x01,0x01,0x02,0x01,0xe5,0x08,0x04,0x04,0x05,0xe5,0xe6,0x08,
- 0x04,0x01,0x02,0x03,0x05,0x04,0x04,0xe5,0x02,0x01,0x04,0x04,0xe5,0x06,0xe5,0x03,
- 0x03,0xe5,0x03,0x03,0x05,0x03,0x02,0x06,0x03,0x01,0x03,0x05,0x18,0x04,0x04,0x03,
- 0x02,0x02,0x05,0x0b,0x0d,0x01,0xe5,0x16,0xe5,0x07,0xe5,0xe5,0x05,0xe5,0x07,0xe5,
- 0xe5,0x05,0xe5,0x07,0xe5,0xe5,0xe5,0x03,0xe6,0xe5,0x01,0x02,0xe5,0x01,0x02,0x02,
- 0xe6,0x03,0x02,0xe6,0x03,0x02,0xe5,0x07,0xe5,0x01,0x02,0x02,0xe5,0x02,0x07,0xe5,
- 0x07,0xe5,0x04,0x02,0x09,0x01,0x07,0x13,0x09,0x0c,0x09,0x05,0xe5,0x01,0x29,0xe8,
- 0x17,0x09,0x02,0x06,0x09,0x02,0x06,0x09,0x09,0x02,0x06,0x09,0x09,0x02,0x06,0x02,
- 0x01,0x02,0x01,0x09,0x03,0x06,0x01,0x02,0x06,0x07,0x01,0x0a,0x09,0x0a,0x07,0x0a,
- 0xe5,0x01,0x0b,0x0b,0x02,0x09,0x20,0xe5,0x01,0x01,0xe5,0x13,0x03,0x05,0x03,0x02,
- 0xe5,0xe5,0x05,0xe5,0xe5,0x02,0x05,0x03,0x05,0x03,0x05,0x03,0x02,0xe5,0xe5,0x02,
- 0x02,0xe5,0xe5,0x02,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x02,0x01,0x02,0x03,
- 0xe5,0xe6,0xe5,0x05,0xe5,0x0a,0x03,0xe5,0x08,0x07,0xe5,0x01,0xe5,0x03,0xe5,0xe6,
- 0x05,0xe5,0x06,0xe5,0x01,0xe5,0x0c,0x07,0x02,0xe5,0x07,0xe5,0x13,0x01,0x01,0xe7,
- 0xe5,0xe5,0x13,0x01,0x07,0x01,0x07,0x02,0x06,0xe5,0x07,0x01,0x02,0x01,0x02,0xe5,
- 0x07,0x01,0x01,0xe5,0x03,0x01,0x07,0xe5,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x09,0x04,0x01,0x02,0x04,0x01,0x01,0xe5,0x06,0x03,0x06,0x03,0x08,0x02,0xe5,0x03,
- 0x07,0x03,0x08,0x02,0xe5,0x11,0x01,0xe5,0x01,0x0a,0x11,0x01,0x02,0x03,0x02,0x01,
- 0x0f,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x01,
- 0x04,0x04,0x04,0x02,0x01,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x01,0x06,0x01,
- 0x02,0x04,0x02,0x01,0x02,0x04,0x04,0x06,0x01,0x02,0x04,0x01,0xe5,0xe5,0x01,0x0b,
- 0x01,0x02,0x01,0x23,0x1f,0x04,0xe6,0xe5,0x01,0x11,0x01,0xe5,0x05,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0x02,0x06,0x01,0xe5,0x05,0x01,0xe5,0x08,0x06,0xe5,0x0a,0x01,0x0e,0xe5,
- 0x28,0x21,0x03,0x01,0xe7,0x16,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x06,
- 0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x06,0x02,0x01,
- 0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x06,0x02,0xe5,0x01,0x04,0x02,0x06,0x02,0x04,
- 0x04,0x04,0x04,0x09,0xe5,0x01,0x19,0xe5,0x01,0x1e,0x09,0x01,0x17,0x04,0x02,0x06,
- 0x02,0x0a,0x03,0x01,0x02,0xe5,0x02,0x01,0x02,0xe5,0x02,0x01,0x02,0xe5,0x02,0x05,
- 0x03,0x02,0x01,0xe5,0x02,0x01,0x02,0xe5,0x02,0x01,0x01,0xe6,0x02,0x01,0x01,0xe6,
- 0x02,0x05,0x03,0x01,0x02,0xe5,0x02,0x01,0x02,0xe5,0x02,0x01,0x02,0xe5,0x02,0x02,
- 0x01,0x02,0x03,0x04,0xe5,0x02,0x05,0x03,0x05,0x04,0x08,0x09,0x13,0x23,0x03,0x05,
- 0x01,0x01,0x13,0x04,0xe6,0x01,0x14,0x03,0xe5,0x03,0x03,0xe5,0x03,0x04,0x01,0x01,
- 0xe5,0x02,0x05,0x03,0xe5,0xe5,0xe6,0x02,0x05,0x03,0xe5,0xe5,0x01,0x03,0x01,0xe5,
- 0x01,0x09,0x09,0x04,0x04,0x06,0x02,0x0b,0x03,0x02,0xe5,0xe5,0x05,0x04,0x04,0x01,
- 0xe5,0x05,0x01,0x02,0x04,0x02,0x01,0x13,0x0c,0x18,0x09,0x01,0x11,0xe5,0x03,0x02,
- 0xe6,0x18,0x02,0x06,0x02,0xe6,0x03,0x01,0xe5,0xe5,0xe5,0x01,0x02,0x06,0x02,0x01,
- 0x01,0x02,0x02,0x06,0x02,0x01,0xe5,0x02,0x02,0x01,0x04,0x01,0xe5,0x05,0x01,0xe7,
- 0x03,0x01,0xe7,0x03,0x01,0xe5,0xe6,0x02,0x01,0xe5,0xe5,0xe5,0x03,0x02,0xe7,0x02,
- 0x01,0xe5,0xe6,0x02,0x01,0xe5,0xe5,0xe6,0x03,0x01,0x04,0x01,0xe8,0xe5,0xe5,0x12,
- 0x01,0xe5,0xe5,0x1f,0x09,0x01,0x11,0x08,0xe7,0x15,0x02,0x02,0x02,0xe5,0x01,0x02,
- 0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x01,
- 0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,
- 0x01,0x01,0x02,0x02,0x05,0x02,0x02,0x03,0x02,0x02,0x01,0x04,0x02,0x09,0xe6,0x03,
- 0x02,0x1a,0x04,0x43,0x01,0xe7,0xe5,0x17,0xe5,0x07,0xe5,0xe6,0x04,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x06,0xe5,0xe6,
- 0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0x01,0xe5,0x03,0xe5,0x01,0x01,0x17,0xe5,
- 0x01,0x46,0xe5,0xe6,0x0d,0x04,0x01,0xe5,0xe7,0x04,0x01,0xe6,0x04,0x01,0xe5,0x05,
- 0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe7,0x03,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0xe5,0x03,0x01,0xe5,0x07,0x01,
- 0xe7,0x03,0x01,0xe5,0x05,0x01,0xe5,0x04,0x02,0xe5,0xe5,0x05,0xe5,0x03,0x03,0x02,
- 0x06,0x06,0x02,0xe5,0x01,0x05,0x09,0x09,0x09,0x09,0x09,0x0d,0x02,0x01,0x16,0xe5,
- 0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x05,
- 0x02,0x13,0x12,0xe5,0x49,0x02,0xe5,0x01,0x15,0x01,0x09,0x02,0x06,0x02,0xe5,0x04,
- 0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0xe5,0x04,0x02,0xe5,0x04,
- 0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x05,0xe5,0x01,0x06,0x02,0xe5,0x04,0x02,
- 0xe5,0x02,0x05,0x09,0x03,0x13,0x05,0x4c,0x08,0x10,0xe7,0x03,0x02,0xe6,0x03,0x02,
- 0xe6,0x03,0x02,0xe6,0x02,0xe5,0x01,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,
- 0xe6,0xe5,0x01,0x02,0xe6,0x03,0x02,0xe6,0x02,0xe5,0x01,0xe6,0x02,0xe5,0x01,0xe6,
- 0x03,0x02,0xe6,0x05,0x02,0x01,0x04,0x02,0xe6,0x03,0x02,0xe6,0x03,0x01,0x01,0xe5,
- 0x06,0x01,0x06,0x09,0x0a,0x01,0x1a,0x2d,0x01,0xe5,0x16,0x02,0xe5,0x03,0xe5,0x01,
- 0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x01,0x02,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x01,0x02,0x02,0xe5,0x01,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x01,
- 0xe6,0x01,0x05,0xe5,0x04,0x02,0x08,0xe5,0x08,0xe5,0x1a,0xe5,0x2e,0x1b,0x02,0x04,
- 0xe5,0x07,0x09,0x03,0x05,0x01,0x07,0x03,0x05,0x01,0x04,0x02,0x01,0x01,0x05,0x03,
- 0xe5,0x03,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x01,0x02,0x02,0x06,0x01,0x02,0x04,0x04,
- 0x06,0x02,0x03,0x03,0x01,0xe5,0x11,0x03,0x05,0x04,0x13,0x0e,0x2d,0xe8,0x13,0xe5,
- 0x07,0xe5,0x01,0x05,0xe5,0x01,0xe5,0x03,0xe5,0x01,0xe5,0x01,0xe7,0x01,0x03,0x01,
- 0xe5,0x01,0xe5,0x01,0xe7,0x01,0x05,0xe5,0x01,0x04,0xe6,0x01,0xe5,0x02,0xe6,0x01,
- 0x04,0xe6,0x01,0x03,0x01,0xe5,0x01,0x05,0xe5,0x01,0xe5,0x02,0xe6,0x03,0x05,0xe5,
- 0x01,0xe5,0x02,0xe6,0x01,0xe5,0x03,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0x04,0xe7,0x01,
- 0x05,0xe5,0x06,0xe6,0x07,0xe5,0x07,0xe5,0x01,0x03,0xe7,0x05,0xe7,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0xe5,0x16,0x01,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0x09,0xe5,0x07,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x08,0xe6,
- 0x06,0xe5,0x07,0xe5,0x05,0x01,0xe6,0x06,0xe5,0x07,0xe5,0x02,0x04,0x09,0xe6,0x07,
- 0x12,0x03,0x09,0x1e,0xe5,0xe6,0x16,0x01,0xe5,0xe5,0x05,0x02,0x02,0x03,0x02,0x06,
- 0x02,0x03,0x02,0xe5,0xe5,0x02,0x02,0x02,0x03,0x02,0xe5,0xe5,0x02,0x02,0x02,0x03,
- 0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x04,
- 0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0xe5,0xe5,0x01,0x04,0x01,0xe5,0xe5,0x03,
- 0x02,0x02,0x02,0x02,0x07,0x01,0x02,0x03,0x03,0x12,0x06,0x09,0x14,0xe5,0x03,0xe5,
- 0x02,0x17,0x09,0x09,0x02,0x06,0x02,0x02,0xe6,0xe5,0x04,0x01,0x01,0x02,0x02,0xe6,
- 0xe5,0x06,0x01,0x06,0xe5,0xe5,0x01,0x03,0xe5,0xe5,0x05,0xe5,0xe5,0x04,0x01,0x01,
- 0x07,0x01,0x06,0xe5,0x01,0xe5,0x08,0x02,0x03,0xe5,0xe5,0x01,0x06,0x01,0x13,0x05,
- 0x03,0x0e,0xe5,0x16,0x04,0xe5,0x07,0xe5,0x14,0x07,0x02,0x19,0x07,0x05,0x03,0x09,
- 0x05,0xe8,0x04,0xe8,0x04,0xe8,0x04,0xe8,0x04,0xe8,0x04,0xe8,0x04,0xe8,0x04,0xe8,
- 0x04,0xe8,0x04,0xe7,0x01,0x06,0x01,0xe5,0x04,0xe8,0x05,0x01,0x02,0x07,0x09,0x02,
- 0x02,0xe7,0x01,0xe5,0x05,0x05,0xe7,0x02,0x09,0x08,0x03,0xe7,0x02,0x04,0xe5,0x14,
- 0x03,0x02,0x02,0xe5,0x01,0x2b,0xe5,0x26,0x02,0x37,0x1b,0x09,0x01,0xe5,0x05,0x03,
- 0x1b,0xe6,0x23,0x01,0x0a,0x03,0x12,0x03,0x03,0x0d,0x01,0x06,0xe5,0xe5,0x01,0x04,
- 0x01,0xe5,0x05,0x01,0xe5,0xe5,0x03,0x01,0x07,0x01,0x07,0x01,0x02,0x04,0x01,0x02,
- 0x04,0x01,0x07,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0xe5,0xe5,0x03,0x01,0x07,0x01,
- 0x02,0x06,0x01,0x01,0x05,0xe6,0xe5,0xe5,0x02,0xe6,0x01,0x04,0x01,0xe6,0x04,0x01,
- 0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x07,
- 0x01,0x07,0x01,0x06,0xe7,0x0a,0xe7,0x18,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x01,
- 0x02,0x02,0xe6,0x01,0xe5,0x02,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,
- 0x05,0xe5,0x04,0x02,0xe5,0x01,0x01,0x03,0xe5,0x07,0xe5,0x01,0xe5,0x02,0x02,0xe5,
- 0xe5,0x05,0xe5,0xe5,0x05,0xe5,0x06,0x02,0x06,0x01,0x08,0x0e,0x04,0xe5,0x01,0x05,
- 0xe5,0x1d,0x07,0x1a,0x01,0xe5,0x14,0x03,0x09,0x05,0xe5,0x06,0x02,0xe6,0x0b,0x02,
- 0xe5,0x01,0x02,0x01,0x04,0x04,0x0a,0x01,0xe7,0x03,0x03,0xe5,0x0c,0x09,0x04,0x04,
- 0x03,0x01,0x06,0x01,0xe7,0x03,0x01,0xe5,0x0a,0xe6,0x01,0x01,0x04,0x01,0x07,0x01,
- 0x07,0xe5,0x02,0xe5,0xe5,0xe5,0x01,0xe5,0x01,0x05,0x07,0x0a,0x07,0xe5,0x07,0xe5,
- 0x0a,0x06,0x03,0xe5,0x16,0x01,0xe5,0x05,0x01,0x03,0x05,0xe5,0x0b,0x03,0x01,0x01,
- 0xe5,0x02,0x02,0x03,0x03,0x01,0x04,0x02,0x01,0x02,0x01,0x09,0x02,0x01,0xe5,0x05,
- 0x01,0x02,0x03,0xe5,0xe5,0x06,0x01,0x05,0xe5,0x08,0x08,0xe5,0x1a,0x01,0x03,0x0c,
- 0x04,0x09,0x01,0x27,0x02,0x16,0x03,0xe5,0xe5,0x0d,0x05,0xe6,0x08,0x0a,0x03,0x0c,
- 0x01,0x03,0x03,0xe6,0x04,0x01,0x09,0x01,0x07,0x01,0x13,0x07,0x01,0x06,0xe5,0x08,
- 0x01,0x1a,0x02,0x01,0x03,0x03,0x01,0x06,0x07,0x07,0x04,0x01,0x10,0x03,0x03,0x05,
- 0xe5,0x07,0x09,0x17,0x03,0x13,0x16,0x09,0x07,0x01,0x03,0x02,0x04,0x04,0x05,0x09,
- 0x05,0x01,0x01,0x0b,0x0f,0x01,0x0a,0x06,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x07,0x04,
- 0x09,0x03,0x0a,0x0b,0x02,0x04,0x11,0x02,0x07,0x14,0x0a,0x04,0x02,0xe6,0xe6,0x06,
- 0x0e,0x03,0x05,0x04,0x05,0xe5,0x02,0x04,0xe5,0x02,0x01,0x01,0x0b,0x04,0x08,0x03,
- 0x0c,0x01,0x02,0x02,0xe5,0x01,0x01,0x02,0x0d,0x03,0x08,0x01,0xe5,0x0f,0x08,0xe5,
- 0x03,0x09,0x04,0x07,0x05,0x07,0x0b,0x0c,0x09,0x14,0x18,0xe7,0x2a,0x09,0x01,0x01,
- 0x04,0xe5,0xe5,0x10,0x02,0x03,0x05,0x06,0x13,0x01,0x07,0x01,0xe5,0x05,0x02,0x02,
- 0x08,0x02,0x03,0x09,0x0e,0x04,0x01,0x14,0x09,0x03,0x05,0x06,0x02,0x04,0x01,0x02,
- 0x03,0x02,0x04,0x04,0x01,0x0a,0x0d,0xe5,0xe6,0x05,0x0d,0x0a,0x0d,0x02,0x01,0x06,
- 0x01,0xe5,0xe5,0x04,0xe5,0x05,0x08,0x02,0xe5,0x07,0xe5,0x01,0x02,0x03,0x02,0x05,
- 0xe5,0x01,0x14,0x04,0xe5,0x02,0x06,0x02,0x01,0x06,0x01,0xe5,0x02,0xe5,0x16,0x04,
- 0xe5,0x08,0x1a,0xe5,0x11,0x1e,0x04,0xe5,0xe5,0x05,0x14,0x05,0xe5,0x03,0x03,0xe5,
- 0x0c,0x0c,0x04,0xe5,0x01,0x01,0x04,0x05,0xe5,0x05,0x01,0xe5,0x0f,0x08,0x09,0x01,
- 0x09,0xe5,0x06,0x20,0x06,0x04,0x18,0x09,0xe5,0x0b,0x1c,0x0a,0x03,0x02,0xe5,0x01,
- 0x03,0x06,0x18,0x04,0x04,0x01,0x09,0xe5,0x1e,0x01,0x02,0x04,0x04,0x02,0x01,0x09,
- 0x01,0x08,0x06,0x09,0x04,0x0a,0x1b,0x06,0x06,0x0c,0x23,0x2e,0xe5,0x01,0xe5,0x01,
- 0x10,0x0a,0x02,0x08,0xe6,0x03,0x02,0x01,0xe5,0x08,0x05,0x09,0x02,0x08,0x01,0xe5,
- 0x04,0xe7,0x08,0x08,0x03,0x09,0x0c,0x08,0x06,0x04,0x04,0x09,0x08,0x04,0x09,0x08,
- 0xe5,0x04,0x0c,0x09,0xe5,0x03,0x13,0xe5,0x19,0xe5,0x02,0x18,0x09,0x06,0x02,0xe6,
- 0x03,0x05,0xe6,0xe5,0x04,0x0c,0xe5,0x01,0x18,0x01,0x08,0x05,0x02,0x01,0x09,0x0e,
- 0x04,0x01,0x02,0x04,0x01,0xe5,0x03,0x07,0x05,0x0e,0x05,0x03,0x07,0x06,0xe5,0xe5,
- 0x0f,0x09,0x08,0x18,0xe6,0xe6,0x07,0x09,0x08,0x01,0x0f,0x09,0x01,0x13,0x02,0x03,
- 0x02,0x27,0x09,0xe5,0x04,0x32,0x01,0x24,0x02,0x0c,0x07,0x08,0x24,0x01,0x01,0xe5,
- 0x09,0x16,0xe6,0x07,0x0b,0xe5,0x01,0x04,0x08,0xe5,0x03,0x03,0x05,0x03,0x09,0xe5,
- 0x07,0x02,0xe5,0x04,0xe5,0x03,0x03,0x05,0x03,0x0b,0x0b,0xe5,0x05,0x05,0x02,0xe5,
- 0x12,0x02,0x01,0xe5,0x01,0x0a,0x02,0x01,0x03,0xe6,0x11,0xe5,0x12,0x13,0x01,0xe9,
- 0xe5,0xe5,0x07,0x0e,0x01,0x01,0x03,0x06,0x02,0x0c,0xe5,0x03,0x02,0x01,0x01,0x0a,
- 0x03,0x08,0x06,0xe5,0xe5,0x05,0xe5,0x01,0x02,0xe5,0x0a,0x03,0x09,0x07,0xe5,0x01,
- 0x0b,0xe5,0x08,0xe5,0xe5,0x02,0x0f,0x02,0x02,0xe5,0x01,0x09,0x03,0x02,0xe5,0x0f,
- 0x01,0x01,0x03,0x26,0x01,0x03,0x02,0x02,0x01,0x08,0x06,0xe5,0xe5,0xe5,0x17,0x01,
- 0xe5,0xe5,0x03,0xe5,0xe5,0xe5,0x03,0xe5,0xe5,0x02,0x01,0xe5,0x08,0x01,0xe5,0xe5,
- 0x0d,0xe5,0x07,0x01,0x02,0x01,0x02,0xe5,0x0a,0x05,0xe5,0x03,0x09,0x01,0x07,0x01,
- 0x01,0x05,0x06,0x01,0x0c,0x07,0x06,0x01,0x02,0x0b,0x0c,0xe5,0x02,0x0c,0x1a,0x04,
- 0x01,0x01,0x02,0x0a,0x09,0x01,0x11,0x06,0x02,0x01,0x07,0x01,0x07,0x13,0x05,0xe5,
- 0x07,0xe5,0x0d,0x04,0x18,0x09,0x01,0x07,0x01,0x07,0x06,0x0c,0x01,0x07,0x09,0x01,
- 0x18,0x04,0x0e,0x13,0x06,0x02,0xe6,0xe7,0x0a,0x1d,0x04,0xe5,0xe6,0x01,0x02,0x09,
- 0xe5,0x01,0xe5,0xe5,0x01,0x04,0x04,0x04,0x05,0x02,0x02,0x02,0xe5,0x01,0x02,0x02,
- 0x04,0x04,0x02,0x01,0x09,0x01,0x02,0x01,0x01,0x04,0x02,0x01,0x01,0x02,0x02,0x03,
- 0x02,0x02,0x03,0xe5,0x06,0x01,0x01,0x0c,0x04,0x12,0x0a,0x01,0x05,0x03,0x02,0x03,
- 0x02,0x04,0xe6,0x05,0x02,0x08,0x07,0x02,0x01,0x02,0x09,0xe5,0x02,0x09,0x0f,0x01,
- 0x02,0x01,0x01,0xe5,0x03,0x03,0xe5,0xe5,0xe5,0x03,0xe5,0xe5,0x01,0x04,0x04,0x0e,
- 0x04,0x03,0xe5,0x03,0x01,0x01,0xe5,0x03,0x04,0x09,0x04,0x03,0x02,0x04,0xe5,0x01,
- 0xe5,0x03,0x01,0xe7,0x03,0x02,0xe6,0x02,0x05,0x01,0x07,0x04,0x04,0x03,0x05,0x07,
- 0xe5,0x09,0x01,0x01,0x09,0x02,0xe7,0x02,0x01,0x02,0x04,0x02,0x01,0x0e,0x02,0xe5,
- 0x01,0x02,0x08,0x01,0x09,0x01,0x11,0x0b,0x04,0xe5,0xe5,0xe5,0xe5,0xe7,0xe5,0x08,
- 0x01,0x07,0x01,0x02,0x04,0x01,0x05,0x01,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x05,
- 0x03,0x04,0x06,0x09,0x05,0x01,0x15,0x07,0x06,0x04,0x05,0x0b,0x01,0x09,0x01,0x07,
- 0x07,0x19,0x02,0x01,0x02,0x0a,0x09,0x01,0x03,0xe5,0x0b,0x01,0x02,0x04,0x04,0x01,
- 0xe7,0xe5,0x01,0x04,0x04,0x04,0x01,0x02,0x04,0x04,0x04,0x01,0x02,0x04,0x01,0x02,
- 0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x04,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x13,
- 0x01,0x02,0x04,0x06,0xe5,0xe5,0xe5,0x01,0x0e,0x01,0x0c,0x04,0x0b,0x15,0xe5,0xe5,
- 0x02,0xe6,0x06,0x45,0x27,0xe5,0x07,0x02,0x1c,0x13,0x02,0x1a,0x02,0x08,0x07,0xe5,
- 0x18,0x02,0xe5,0x11,0x02,0x06,0x09,0x01,0x02,0x01,0x08,0x01,0x25,0x1f,0x07,0xe5,
- 0x04,0x02,0x24,0x0c,0xe5,0x09,0xe6,0x06,0xe5,0x07,0x10,0x1d,0x02,0x19,0xe5,0x0b,
- 0x09,0x0b,0x07,0x02,0xe6,0x07,0x05,0x09,0x09,0x09,0x03,0xe5,0xe5,0x01,0x06,0x02,
- 0x06,0x02,0x06,0x02,0x09,0x03,0xe5,0xe5,0x01,0x09,0x09,0x09,0x09,0x06,0x04,0x09,
- 0x09,0x03,0x02,0x02,0x02,0x03,0x02,0x09,0x09,0x04,0x01,0x02,0x03,0x05,0x09,0x09,
- 0xe6,0x06,0x04,0xe6,0x01,0x05,0xe5,0x01,0x0d,0xe5,0x01,0xe5,0x33,0x08,0xe5,0x07,
- 0xe5,0x05,0x0c,0x09,0x1d,0x10,0x0e,0x09,0x06,0x02,0x06,0x0c,0x3b,0x09,0x08,0x0f,
- 0x02,0x01,0x01,0x31,0x09,0x09,0x15,0x09,0x1d,0x1e,0x0a,0x07,0x14,0x3c,0x09,0x1f,
- 0xe5,0x13,0x09,0x02,0x01,0x04,0x02,0x01,0x02,0x01,0x04,0x02,0x01,0x04,0x02,0x04,
- 0x01,0x02,0x01,0x02,0x01,0x02,0x04,0x01,0x02,0x01,0x04,0x02,0x04,0x01,0x02,0x04,
- 0x01,0x02,0x04,0x01,0x02,0x06,0x02,0x05,0xe5,0xe5,0x01,0x04,0x01,0x02,0x06,0x02,
- 0x06,0x11,0x01,0x02,0x06,0x04,0x02,0x01,0x02,0x15,0x05,0xe6,0x0a,0x02,0x01,0x1c,
- 0x21,0x01,0xe5,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x05,0x01,0x01,0x02,0x02,
- 0x01,0x01,0x07,0x01,0x05,0x01,0x01,0x01,0x03,0x01,0x01,0x05,0x01,0x01,0x05,0x01,
- 0x01,0x07,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x01,0x02,0x02,0x03,0x02,0x02,0x01,
- 0x01,0x05,0x02,0x06,0x03,0x01,0xe5,0x01,0x01,0x01,0x05,0x02,0x06,0x01,0x01,0x01,
- 0x06,0x0f,0x03,0xe5,0x06,0xe5,0x05,0x01,0x01,0x04,0xe5,0x01,0x0f,0x01,0xe5,0x08,
- 0x16,0x01,0x09,0x09,0x09,0x09,0x03,0x05,0x03,0xe5,0x08,0x04,0x04,0x02,0x0b,0x03,
- 0x03,0x01,0x03,0xe5,0x01,0x01,0x03,0x07,0x03,0x05,0x13,0x04,0x12,0x05,0x03,0xe5,
- 0x30,0x02,0x01,0x1c,0xe5,0x13,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe6,0xe5,
- 0x02,0x01,0xe6,0xe5,0x02,0x01,0xe6,0x04,0xe6,0x06,0xe5,0xe5,0x07,0xe6,0xe5,0x02,
- 0xe8,0x04,0xe6,0x02,0x03,0xe6,0x02,0x03,0xe6,0xe5,0xe5,0x02,0xe6,0x01,0xe5,0x05,
- 0xe5,0x07,0xe7,0x06,0x01,0x07,0xe6,0x05,0xe6,0x05,0xe6,0xe5,0x06,0xe5,0x05,0xe6,
- 0x08,0xe5,0x07,0xe5,0x02,0x03,0xe6,0x06,0xe7,0xe5,0x04,0xe5,0x07,0xe5,0x08,0x01,
- 0x09,0x06,0x09,0xe5,0x2c,0x07,0x01,0x01,0x09,0x13,0x05,0x09,0x03,0x05,0x03,0x05,
- 0x03,0x09,0x01,0x09,0x09,0x10,0x02,0x05,0x03,0x09,0x05,0x03,0x11,0x01,0xe5,0x0f,
- 0x01,0x18,0xe8,0x32,0x03,0x06,0x02,0x06,0x02,0x04,0x01,0x02,0x04,0x01,0xe5,0x07,
- 0x02,0x06,0x02,0x03,0x02,0x07,0x01,0x06,0x02,0x02,0x04,0x01,0x01,0x02,0x04,0x01,
- 0xe5,0x07,0xe5,0xe5,0x05,0xe5,0x0d,0x01,0xe5,0xe5,0x05,0x01,0xe5,0x08,0x05,0x02,
- 0x02,0x11,0x08,0x02,0x06,0xe5,0xe5,0x01,0x17,0x01,0xe5,0x0e,0x1c,0x0d,0x01,0x07,
- 0x01,0x07,0x01,0x03,0x03,0x01,0xe5,0x01,0x05,0x07,0xe6,0x07,0xe5,0x02,0x03,0x01,
- 0x03,0x04,0xe5,0x06,0x01,0x0f,0x04,0xe5,0x0c,0x13,0x03,0x01,0x03,0x09,0x04,0xe5,
- 0x02,0x13,0xe5,0x02,0xe5,0x07,0xe5,0x02,0x19,0x01,0xe5,0x0f,0x09,0x09,0x08,0x02,
- 0xe5,0x04,0x02,0xe8,0x01,0x02,0xe8,0x04,0x01,0x07,0x01,0x02,0x04,0xe8,0x01,0x02,
- 0xe8,0x04,0xe5,0x04,0x02,0x01,0x07,0xe5,0x07,0x01,0x09,0x01,0x07,0xe9,0x03,0x01,
- 0x02,0x02,0x0c,0xe5,0x01,0x04,0x01,0x02,0x02,0x06,0x04,0xe5,0x04,0x16,0xe8,0x05,
- 0xe8,0xe5,0x18,0x02,0xe5,0x01,0x09,0xe5,0xe5,0x0d,0x0b,0xe5,0xe5,0x0f,0x0c,0xe5,
- 0x04,0x02,0x01,0x12,0x0a,0x04,0xe5,0xe5,0x05,0x02,0x01,0x04,0x02,0x07,0x03,0xe5,
- 0x12,0x05,0xe5,0xe5,0x09,0x05,0x09,0x09,0xe5,0xe5,0x19,0x11,0x1c,0xe5,0xe6,0x0a,
- 0x01,0x03,0x01,0x07,0x01,0x07,0x01,0x01,0x01,0x03,0x01,0x07,0x01,0x04,0x02,0x01,
- 0xe5,0x05,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0xe6,0x02,
- 0x03,0x01,0x03,0x03,0xe6,0x08,0x01,0x02,0x04,0x01,0x07,0x01,0x04,0x02,0x01,0xe5,
- 0x05,0xe6,0xe5,0x04,0x01,0xe5,0x02,0x02,0x01,0x04,0x01,0xe8,0x05,0x01,0xe6,0x04,
- 0x01,0x03,0x03,0x01,0x07,0x01,0xe5,0xe5,0x03,0x01,0x07,0x01,0x0e,0x0f,0x2b,0x0d,
- 0x05,0xe5,0x01,0x01,0x0d,0x0b,0x03,0xe6,0x01,0x06,0x04,0xe5,0xe7,0x04,0x01,0xe5,
- 0x04,0x02,0x01,0xe5,0x02,0x11,0x06,0x12,0x0c,0x01,0x05,0x01,0x1b,0x2c,0xe5,0xe7,
- 0x12,0x0f,0xe5,0x0c,0x04,0x03,0x05,0x04,0x07,0x02,0x02,0x0e,0x0a,0xe6,0x03,0x01,
- 0xe6,0x09,0x08,0x01,0x05,0x05,0x01,0x04,0x1b,0x06,0x05,0x0e,0x13,0x0d,0x0a,0x12,
- 0x0a,0x06,0x02,0x01,0x04,0x06,0xe5,0xe5,0x15,0x03,0xe5,0x02,0x0a,0x02,0x01,0x03,
- 0x13,0xe6,0x02,0x10,0x02,0x02,0x06,0x05,0x03,0x02,0x06,0x01,0x03,0x03,0x03,0x1e,
- 0x02,0x17,0x05,0x03,0x01,0x04,0x14,0x01,0x01,0x0b,0x22,0x01,0xe6,0x08,0x10,0x05,
- 0xe6,0x06,0x01,0xe5,0x02,0x02,0xe6,0x10,0x02,0x09,0x06,0x01,0x05,0x03,0x07,0x01,
- 0x02,0x04,0x05,0xe5,0x01,0x01,0x02,0x04,0x01,0xe5,0x06,0xe5,0xe5,0x02,0x06,0x03,
- 0x05,0x03,0x01,0x0a,0x01,0x04,0x02,0x01,0x02,0x10,0x01,0x04,0xe5,0xe5,0xe6,0x06,
- 0x06,0x01,0xe5,0x08,0xe5,0x04,0x06,0x02,0xe6,0x0c,0xe6,0xe6,0x07,0x16,0x07,0x05,
- 0x08,0x05,0x0a,0x04,0x10,0x02,0x07,0x0a,0x05,0x03,0x09,0x05,0x03,0x05,0x01,0x01,
- 0x02,0x26,0x01,0x08,0x0d,0x03,0x0a,0x11,0x01,0x13,0x05,0x02,0x0f,0xe9,0x07,0x09,
- 0x09,0x03,0x09,0x05,0x06,0x13,0x01,0x0a,0xe5,0x03,0xe5,0x08,0x01,0x04,0xe6,0x08,
- 0xe6,0x04,0x02,0x06,0xe6,0x02,0x03,0x07,0x09,0x0f,0x07,0x01,0x03,0x03,0xe7,0x01,
- 0x17,0x01,0x05,0x03,0x0b,0x07,0x03,0x05,0xe5,0x15,0x01,0xe7,0xe5,0x13,0xe5,0xe7,
- 0x09,0x07,0x13,0x02,0x01,0x0b,0x06,0x02,0xe5,0x04,0xe5,0xe5,0xe5,0x03,0x07,0x03,
- 0x05,0x0e,0x01,0x07,0x04,0x09,0x0a,0xe5,0x0d,0x01,0xe5,0x05,0x0e,0x0a,0x03,0x02,
- 0x06,0x0c,0x06,0xe5,0x02,0x04,0xe5,0x07,0x11,0xe5,0xe5,0x05,0x01,0x1d,0xe6,0x05,
- 0xe5,0x07,0x01,0x02,0x0f,0x01,0x01,0x02,0x02,0x02,0x03,0x10,0x04,0x08,0x15,0x04,
- 0x05,0x09,0xe5,0xe5,0x0e,0xe5,0x07,0x02,0x05,0x02,0x09,0x0e,0x02,0x08,0xe6,0xe5,
- 0x08,0xe5,0x01,0x07,0x01,0x03,0xe5,0x05,0x10,0x01,0x06,0x23,0x0a,0xe5,0x04,0x02,
- 0xe5,0x06,0x13,0xe5,0x01,0x09,0x07,0x0e,0x0a,0x0c,0x0a,0xe5,0x09,0x01,0x19,0x12,
- 0x02,0x01,0x02,0x09,0x0d,0xe6,0x05,0xe5,0x01,0xe5,0x03,0x09,0x07,0x05,0x07,0x35,
- 0xe5,0x0a,0x02,0xe5,0x15,0x05,0x08,0x06,0x04,0x1e,0x01,0x0b,0x0b,0x03,0x07,0x02,
- 0x22,0x04,0x07,0x03,0x0b,0x08,0x05,0x1e,0xe9,0x01,0x1d,0x01,0xe5,0x03,0x08,0x0d,
- 0x01,0x05,0x02,0x10,0x02,0xe5,0x07,0x01,0x05,0x01,0x06,0x03,0x03,0x31,0x07,0x0d,
- 0x01,0xe5,0xe6,0x02,0x01,0x02,0x09,0x07,0x01,0x09,0x06,0x02,0x01,0x02,0x04,0x04,
- 0x04,0x05,0x04,0x0e,0x02,0x03,0x1f,0x0a,0xe5,0x03,0x09,0x02,0xe5,0x06,0xe5,0xe5,
- 0x06,0x05,0x03,0x06,0x02,0x06,0x02,0x10,0x02,0x05,0xe5,0x07,0x05,0xe5,0xe6,0x09,
- 0xe5,0x0d,0x05,0xe5,0xe5,0x01,0x09,0x06,0x1d,0x02,0x06,0x09,0x09,0xe5,0x18,0xe6,
- 0x01,0x20,0x1d,0x09,0x09,0x07,0xe5,0x07,0x01,0x06,0x02,0x0b,0x06,0x02,0x0b,0x07,
- 0x06,0x05,0x17,0x0e,0x05,0xe5,0x02,0x04,0x13,0x01,0x07,0x01,0x07,0x01,0x07,0xe5,
- 0x04,0x10,0x06,0x01,0xe6,0x1f,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x0e,0x0e,0x07,0x06,
- 0x0c,0xe5,0x14,0xe5,0x05,0x0b,0x08,0x09,0xe5,0x0e,0x03,0x08,0xe5,0x04,0x03,0x08,
- 0xe5,0x01,0xe5,0x03,0xe5,0x11,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x01,0x03,0xe5,0x06,
- 0x02,0x01,0x03,0xe5,0xe5,0x1a,0x01,0xe6,0x0b,0x05,0x02,0x03,0x01,0xe5,0x05,0x01,
- 0xe5,0x03,0x01,0x01,0x0f,0x01,0x01,0x07,0xe5,0x03,0x01,0x04,0x09,0x05,0xe5,0x01,
- 0x0a,0xe6,0x01,0x05,0xe5,0x0a,0x07,0x05,0xe5,0xe5,0x08,0xe5,0x01,0x02,0x01,0xe5,
- 0x08,0x02,0x10,0x04,0x07,0x06,0x02,0x0a,0x01,0xe5,0x0f,0x03,0xe5,0xe5,0x01,0x01,
- 0x1e,0x01,0x05,0x01,0x07,0x06,0x01,0xe5,0x08,0x06,0xe5,0xe5,0x01,0x10,0x01,0x02,
- 0x15,0xe5,0x02,0x0b,0x07,0x09,0x01,0x13,0x04,0x01,0x04,0x07,0x04,0x01,0x02,0x01,
- 0x11,0x01,0x0b,0xe5,0x01,0x01,0x16,0x08,0x0c,0x01,0x01,0xe5,0xe5,0x1d,0x06,0x02,
- 0x01,0x07,0x06,0x02,0xe6,0x06,0x06,0xe5,0x01,0xe5,0x0d,0xe5,0x02,0x11,0x06,0xe5,
- 0xe5,0xe5,0x06,0x05,0xe5,0x03,0x09,0x01,0x25,0x06,0xe5,0xe5,0x08,0x06,0xe5,0xe5,
- 0x05,0xe5,0xe5,0x05,0x02,0x01,0x07,0x10,0x0d,0x02,0x01,0x03,0xe7,0x14,0x01,0x09,
- 0x03,0x01,0xe5,0x09,0x07,0x06,0x03,0xe5,0x03,0x08,0xe5,0x03,0x01,0x07,0x01,0x02,
- 0xe5,0x01,0xe5,0xe5,0x06,0x05,0x02,0x05,0x03,0xe5,0x03,0xe5,0x01,0x01,0x02,0x02,
- 0x06,0x06,0x11,0x01,0xe5,0x03,0x04,0x01,0x03,0x02,0xe5,0x03,0x03,0x13,0x06,0x01,
- 0xe5,0x0f,0x02,0x02,0x05,0x11,0xea,0xe5,0x13,0x01,0x01,0x05,0x03,0x02,0x01,0x04,
- 0x05,0x03,0x05,0x02,0x01,0x02,0xe6,0x0d,0x01,0x01,0xe5,0xe5,0xe5,0x04,0x03,0x02,
- 0x01,0xe5,0xe5,0xe5,0x04,0x01,0x06,0xe5,0x03,0x02,0xe6,0xe5,0x01,0x06,0x04,0x03,
- 0xe5,0x02,0x01,0x01,0xe5,0x10,0x01,0xe5,0x03,0x04,0x01,0x01,0x05,0x04,0x02,0x05,
- 0x09,0x01,0x01,0xe6,0x02,0x02,0x01,0x04,0x09,0x02,0x01,0xe5,0x02,0x04,0x04,0x09,
- 0x01,0x01,0x01,0xe5,0x01,0x14,0x01,0x09,0x07,0x01,0x04,0x02,0x06,0x02,0x07,0x01,
- 0x03,0xe5,0x0d,0x01,0x04,0x01,0x02,0x01,0x05,0x01,0x07,0x06,0xe6,0x01,0x04,0xe7,
- 0x0a,0x07,0x01,0x01,0x0e,0x01,0x05,0x04,0x01,0x07,0x01,0x09,0x13,0x02,0x0e,0x01,
- 0x13,0x05,0x01,0x01,0x0d,0xe6,0xe7,0x15,0x01,0x07,0x06,0x01,0xe5,0xe5,0x04,0x01,
- 0x07,0x01,0x01,0xe5,0xe7,0x01,0x10,0x02,0x01,0x03,0xe5,0x08,0x01,0xe5,0xe5,0x06,
- 0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x06,0x04,0x04,0x01,0x03,0xe5,
- 0x08,0x01,0x0a,0x01,0x02,0x04,0x01,0x07,0x04,0x22,0x01,0x11,0x09,0x01,0x0d,0xe5,
- 0x01,0xe5,0x08,0x02,0x35,0x16,0x01,0xe5,0x0c,0x16,0xe6,0x08,0x07,0xe5,0x09,0x02,
- 0x1a,0x02,0x24,0x02,0x06,0x27,0x14,0xe5,0x01,0x0a,0x37,0xe5,0x01,0x05,0xe5,0x01,
- 0xe5,0x07,0x0f,0xe5,0x01,0x10,0x02,0xe5,0x31,0x06,0x02,0x27,0x0b,0x11,0x09,0x0b,
- 0x13,0xe7,0x09,0x03,0x09,0x09,0x09,0x09,0x06,0x02,0xe5,0xe7,0xe5,0x01,0xe5,0x07,
- 0x03,0x05,0x04,0x01,0x02,0xe6,0xe5,0x04,0x09,0x09,0x09,0x04,0x01,0x04,0x09,0x09,
- 0x05,0x03,0x05,0x03,0x06,0x02,0x06,0x02,0x09,0x05,0xe5,0x01,0x04,0x01,0x02,0x09,
- 0x04,0xe6,0x01,0x03,0x02,0x02,0x09,0x02,0x09,0xea,0x3a,0x02,0x09,0x1d,0x1d,0x09,
- 0x09,0x29,0x06,0x02,0x08,0x13,0xe5,0x08,0x13,0x08,0xe5,0x08,0x09,0x04,0x06,0x3d,
- 0x05,0x01,0x1d,0x1d,0x09,0x0b,0x27,0x0a,0x1e,0x09,0x13,0x07,0x09,0x0b,0x08,0xe5,
- 0xe6,0x22,0x11,0x01,0x07,0x02,0x01,0x03,0xe5,0x08,0x01,0xe5,0x04,0x02,0x06,0xe5,
- 0xe7,0x03,0x02,0x07,0x01,0x02,0x06,0x02,0x01,0x02,0x01,0x02,0x01,0x06,0x02,0x04,
- 0x01,0x04,0x02,0x01,0x07,0x01,0x07,0x01,0x02,0x06,0x07,0x01,0x02,0x04,0x13,0x01,
- 0x09,0x07,0x08,0x02,0x06,0x02,0x10,0x01,0x1e,0x04,0xe5,0x0c,0x02,0x01,0xe5,0x02,
- 0x04,0xe6,0x07,0xe5,0xe5,0x01,0xe5,0xe7,0x01,0x04,0xe5,0x02,0x04,0xe6,0x06,0xe5,
- 0x05,0x01,0x01,0x01,0xe5,0x01,0x03,0x05,0x01,0x01,0x07,0x01,0x01,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x01,0x01,0x01,0x05,0x01,0x05,0x01,0xe5,0x07,0x01,0x05,0x03,
- 0x09,0x05,0x01,0x01,0x05,0x01,0xe5,0x05,0x01,0xe5,0x08,0x06,0x02,0x0d,0x01,0x01,
- 0xe5,0x21,0x04,0x0b,0xe5,0xe5,0x08,0x07,0x01,0x07,0x0b,0x07,0x01,0x01,0x02,0x04,
- 0x04,0x0e,0x03,0x05,0x03,0x0f,0x01,0x11,0x01,0x03,0x03,0x01,0x03,0x05,0x07,0x01,
- 0x03,0x03,0x0f,0xe5,0x01,0x01,0x09,0x1d,0x0e,0x03,0xe5,0x13,0xe5,0x07,0xe5,0x01,
- 0x04,0xe6,0x07,0xe6,0xe5,0x03,0xe5,0x02,0x05,0xe6,0x06,0xe6,0x04,0x01,0xe5,0x01,
- 0x05,0xe6,0x06,0xe5,0x01,0x05,0xe5,0x07,0xe6,0x05,0xe7,0x04,0x01,0xe5,0x03,0x05,
- 0xe6,0xe5,0x02,0xe7,0x06,0xe7,0xe5,0x04,0xe5,0x01,0x05,0xe6,0xe5,0x02,0xe6,0x02,
- 0x05,0xe6,0x04,0x01,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0x04,0xe6,0x06,0xe6,0x08,0xe6,
- 0x06,0xe5,0x08,0xe6,0x22,0xe6,0x03,0x03,0xe5,0x07,0xe5,0x04,0x09,0x01,0x09,0x09,
- 0xe5,0x05,0x01,0x09,0x13,0x15,0x09,0xe5,0x01,0xe5,0xe6,0xe7,0x01,0x0e,0x09,0x03,
- 0xe6,0x02,0x07,0x0b,0x07,0x01,0x09,0xe5,0x01,0x06,0x04,0x1c,0xe6,0xe5,0x22,0x18,
- 0x01,0xe5,0x0a,0x09,0x03,0x02,0x02,0xe5,0x07,0x09,0x13,0x06,0x0b,0xe5,0xe5,0x05,
- 0x02,0xe5,0x03,0xe6,0xe5,0x05,0x14,0x01,0x06,0x0a,0x08,0x0a,0x01,0x07,0x07,0xe5,
- 0x05,0x02,0x1c,0xe8,0x21,0x04,0x18,0x09,0x05,0x01,0x01,0x05,0x03,0x07,0x01,0x09,
- 0x0b,0x03,0x03,0x01,0x02,0x04,0x03,0x01,0x0f,0x05,0x0d,0x01,0x07,0x09,0x05,0x03,
- 0x0b,0x01,0x01,0x05,0x07,0x01,0x07,0xe5,0x02,0xe5,0x03,0x03,0xe5,0x1b,0xe6,0xe5,
- 0x02,0x1f,0xe5,0x02,0x05,0x09,0x03,0x02,0x04,0x09,0xe5,0xe5,0xe5,0xe6,0xe9,0x01,
- 0xe5,0x05,0x04,0x06,0xe5,0x0b,0x01,0x03,0x04,0x01,0xe5,0x03,0xe5,0xe5,0x04,0x02,
- 0x01,0x01,0x02,0xe5,0x01,0x06,0x03,0x01,0x02,0x0c,0x04,0x01,0x03,0x08,0x0b,0xe6,
- 0x09,0x01,0x07,0x02,0x09,0x02,0x1e,0xe6,0xe5,0x37,0x06,0xe5,0xe5,0x05,0x01,0xe5,
- 0x1c,0x10,0x09,0x02,0x07,0x01,0x07,0xe5,0x1c,0x02,0x01,0x04,0x02,0x10,0x09,0x09,
- 0x01,0xe5,0x05,0x02,0x0b,0x04,0x02,0xe5,0x08,0x18,0xe6,0x10,0x01,0x01,0x05,0x01,
- 0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x03,0x03,0x01,0xe6,0x01,0x02,0xe6,0x01,0x04,
- 0x01,0xe6,0x04,0x01,0x07,0xe6,0xe5,0x04,0xe7,0x01,0x03,0x01,0x06,0xe5,0xe5,0x06,
- 0x01,0x06,0x02,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0xe5,0xe5,
- 0x01,0x01,0xe5,0xe5,0x03,0x01,0x02,0x01,0x02,0x01,0x04,0x02,0x01,0x01,0x02,0x02,
- 0x01,0x01,0x04,0xe5,0xe5,0xe5,0x04,0x01,0x02,0xe5,0x02,0x01,0x01,0x05,0xe6,0x06,
- 0x01,0x0c,0x01,0x0c,0x21,0x01,0x04,0x05,0x05,0xe7,0x01,0x03,0x05,0x03,0xe5,0x0b,
- 0xe5,0xe6,0x0e,0x02,0x09,0xe6,0x03,0x11,0x03,0x13,0xe5,0x01,0xe5,0x01,0x05,0x03,
- 0x07,0xe5,0x0b,0xe5,0x0f,0x05,0xe5,0x01,0x04,0x02,0x01,0x05,0x01,0x04,0x04,0xe5,
- 0x16,0x01,0xe7,0x14,0x07,0x0c,0x08,0x06,0x01,0xe5,0xe5,0x06,0x0b,0x07,0x06,0x07,
- 0x04,0x07,0x05,0x03,0x08,0x01,0x07,0x0b,0x09,0x01,0x07,0xe5,0x09,0x0b,0x02,0x02,
- 0x09,0x09,0x02,0x09,0x08,0x05,0x04,0x04,0x04,0x02,0x06,0x10,0x01,0xe7,0xe5,0x2f,
- 0x09,0x01,0x01,0x07,0x02,0x09,0xe5,0xe5,0x02,0x0f,0x01,0x06,0xe5,0x06,0x03,0x07,
- 0x09,0x03,0x04,0x29,0xe5,0x04,0x07,0x05,0x08,0xe5,0xe5,0xe5,0x08,0x0b,0x07,0x01,
- 0x04,0x03,0x1d,0xe6,0x06,0x01,0x1c,0x01,0x0b,0x01,0x07,0x02,0x06,0x18,0x02,0x13,
- 0x05,0x02,0x04,0xe5,0x03,0x01,0x01,0xe5,0x06,0x08,0x01,0x01,0x13,0x01,0xe5,0x05,
- 0x03,0xe5,0x05,0x02,0x02,0x01,0xe5,0x04,0xe5,0x08,0x0b,0xe5,0x03,0x01,0x01,0x07,
- 0x0b,0x07,0x01,0x0d,0xe6,0x01,0x33,0x03,0x04,0xe5,0x02,0x05,0x04,0x02,0x01,0x11,
- 0x0b,0x0a,0x09,0x06,0xe5,0xe5,0xe5,0xe5,0x03,0x01,0x05,0x01,0x05,0x04,0x09,0xe5,
- 0x06,0xe6,0x01,0x03,0x0a,0x05,0x03,0x05,0x05,0x03,0x08,0x04,0x03,0x01,0x0a,0x06,
- 0x05,0x05,0x03,0x0a,0x01,0xe7,0x1b,0x08,0x0e,0x01,0x03,0x05,0xe5,0x01,0x05,0x08,
- 0xe5,0x02,0x04,0xe5,0x08,0x02,0x06,0x03,0x05,0x03,0x03,0x01,0x03,0x05,0x03,0x02,
- 0xe5,0x02,0x03,0x03,0x01,0x02,0x06,0x07,0x01,0x09,0x09,0x07,0x0b,0x09,0x09,0x0d,
- 0xe5,0x07,0xe5,0x02,0xe5,0x01,0x04,0x0f,0x01,0xe7,0x19,0x04,0x0e,0x06,0x02,0x06,
- 0x07,0x01,0x04,0xe5,0x02,0x02,0x06,0x06,0x02,0x02,0x06,0x09,0x02,0xe5,0x04,0x09,
- 0x02,0x05,0xe5,0xe5,0x08,0x02,0x06,0x03,0x05,0x04,0x04,0x02,0x06,0x0e,0x04,0x02,
- 0x0b,0x07,0x06,0x02,0x04,0x01,0x01,0x07,0x01,0x03,0x03,0x01,0x0e,0xe6,0xe5,0x2f,
- 0x06,0xe5,0x01,0x03,0x02,0x02,0x01,0x03,0xe5,0xe7,0xe5,0x01,0x06,0x02,0x09,0xe5,
- 0x07,0xe5,0x01,0x05,0xe5,0x02,0x04,0xe5,0x02,0x04,0xe5,0x05,0x01,0x02,0x06,0x02,
- 0x06,0x02,0x01,0x04,0x02,0x03,0x02,0x02,0x01,0x03,0xe5,0x01,0x0a,0xe5,0x03,0x02,
- 0x03,0x05,0xe6,0x06,0x08,0x02,0x02,0x0f,0xe5,0x10,0x03,0x03,0x16,0x09,0x14,0xe5,
- 0x05,0xe5,0x03,0x03,0xe5,0xe5,0x0d,0x01,0x08,0x01,0x09,0xe6,0x06,0x0b,0x04,0x03,
- 0xe6,0x02,0xe5,0x01,0x02,0x07,0xe6,0xe5,0x05,0xe6,0x05,0xe5,0x07,0xe6,0x07,0xe5,
- 0x06,0x10,0x09,0x01,0xe5,0x0a,0x19,0x14,0xe5,0xe5,0x02,0x07,0x19,0x0f,0x01,0x0e,
- 0x03,0x26,0xe5,0x12,0x03,0x06,0x07,0x02,0x08,0x01,0x09,0x07,0x09,0xe5,0x07,0x01,
- 0x03,0x09,0x0b,0x09,0x06,0x01,0xe5,0x02,0x06,0x25,0x01,0xe7,0x07,0x09,0x09,0x06,
- 0x10,0x01,0x06,0x06,0x02,0xe5,0xe5,0x03,0x04,0x03,0x05,0x06,0xe5,0xe5,0x04,0xe6,
- 0xe5,0x05,0xe5,0xe5,0x02,0xe5,0xe6,0xe5,0x03,0x01,0xe5,0xe5,0x0f,0x09,0x09,0x09,
- 0x09,0xe5,0x09,0x10,0xe5,0x07,0x05,0xe5,0x11,0x07,0x01,0x0a,0x0e,0x01,0xe5,0x09,
- 0x2a,0x01,0x01,0x07,0x02,0x04,0x01,0xe5,0x04,0x01,0xe5,0x05,0x01,0xe5,0xe5,0x04,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x02,0x03,0x04,0x02,0x06,0xe5,0x01,
- 0x02,0x02,0x09,0x09,0xe5,0x02,0xe6,0x01,0x0a,0x0f,0x02,0x08,0xe5,0x08,0x09,0x03,
- 0x05,0x0b,0x0c,0x02,0xe5,0x05,0x39,0x14,0x09,0x0b,0x02,0x13,0x19,0x09,0x09,0x09,
- 0x09,0x09,0x0c,0x09,0x06,0x0a,0x09,0x07,0x01,0x06,0x02,0x18,0xe6,0xe5,0xe6,0x0c,
- 0x09,0xe6,0x06,0xe5,0x0b,0xe5,0xe5,0x02,0x01,0xe5,0x01,0x03,0x02,0x01,0xe5,0x02,
- 0x02,0xe5,0xe5,0x05,0xe5,0xe5,0x02,0x02,0xe5,0xe5,0x08,0x03,0x05,0x09,0x09,0x06,
- 0x01,0x01,0xe5,0xe5,0xe5,0x01,0xe5,0xe5,0x02,0x02,0x01,0xe5,0x02,0x02,0x01,0xe5,
- 0x02,0xe5,0xe5,0xe6,0x02,0xe5,0x07,0x08,0xe5,0x07,0x09,0x03,0xe5,0x28,0x02,0xe5,
- 0x09,0x02,0xe5,0xe6,0xe5,0xe5,0x0e,0xe5,0x07,0xe5,0x04,0x05,0xe5,0x04,0x01,0x02,
- 0xe5,0x07,0x01,0x02,0x01,0x02,0x04,0xe5,0x02,0x02,0x01,0xe5,0x02,0x01,0x07,0x09,
- 0x01,0x02,0xe5,0x02,0x04,0xe5,0x02,0x02,0x06,0x02,0x08,0x09,0xe5,0x02,0x01,0x02,
- 0x04,0x01,0x02,0x04,0x01,0x02,0x08,0xe6,0x19,0xe5,0x2c,0x01,0xe5,0x0a,0x01,0x02,
- 0xe5,0xe6,0x01,0x01,0x16,0x11,0x04,0x04,0x04,0x04,0x02,0x01,0x04,0x01,0xe5,0xe5,
- 0x03,0x04,0x04,0x04,0x04,0x02,0x01,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x06,
- 0x01,0x02,0x04,0x02,0x01,0x04,0x01,0xe5,0xe5,0x03,0x01,0x02,0x04,0x01,0x02,0x02,
- 0x09,0x01,0x01,0xe5,0xe5,0xe5,0x0b,0x02,0x09,0xe6,0x01,0x06,0x01,0x06,0xe5,0x01,
- 0x01,0x07,0x03,0x02,0xe5,0x02,0x04,0xe5,0xe6,0x01,0x28,0x06,0x01,0xe5,0x05,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x04,0xe5,0x01,0x01,
- 0x04,0x0c,0x06,0x0c,0x13,0x01,0x07,0x06,0x06,0x02,0xe6,0xe7,0x09,0x20,0x03,0x02,
- 0x02,0x02,0x06,0x02,0x06,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,
- 0x02,0x02,0xe5,0x01,0x02,0x02,0x06,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,
- 0xe5,0x01,0x04,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0x06,0x02,0x03,0x02,
- 0x02,0x01,0x01,0xe5,0x03,0x0c,0x01,0x0f,0x01,0xe6,0x11,0xe5,0x01,0x01,0x07,0x01,
- 0x0c,0x07,0x02,0xe6,0x01,0x06,0x01,0xe5,0x1d,0x03,0x04,0xe5,0x02,0x05,0x03,0x05,
- 0x03,0x05,0x03,0x02,0x01,0xe5,0x02,0x02,0x01,0xe5,0x02,0x05,0x03,0x05,0x03,0x02,
- 0x01,0xe5,0x02,0x04,0xe5,0x02,0x02,0x01,0x02,0x03,0x02,0x01,0xe5,0x02,0x05,0x03,
- 0x04,0xe5,0x02,0x01,0x01,0xe6,0x02,0x01,0x02,0xe5,0x02,0x09,0x05,0x03,0x09,0x02,
- 0x01,0xe5,0x02,0x01,0x02,0x04,0x01,0x01,0xe6,0x01,0x06,0x02,0x0a,0x09,0x02,0x03,
- 0x02,0x2a,0x04,0xe7,0x02,0x02,0x02,0x03,0x02,0x02,0x09,0x06,0x01,0xe5,0x02,0x05,
- 0x03,0x02,0x01,0xe5,0x02,0x02,0x02,0x06,0x01,0xe5,0x05,0xe7,0x05,0x01,0x02,0x09,
- 0x09,0x04,0x02,0x01,0x06,0x02,0x0b,0x01,0x01,0xe5,0x01,0x01,0x18,0x01,0xe5,0x03,
- 0x04,0x09,0x06,0x02,0x01,0x02,0x14,0xe5,0xe7,0x12,0xe5,0x15,0x0b,0x02,0x01,0xe6,
- 0x01,0x02,0x02,0x03,0x01,0xe5,0x05,0x01,0xe5,0xe5,0x03,0x02,0x01,0x01,0x02,0x02,
- 0x01,0x01,0x02,0x02,0x02,0x03,0x01,0xe5,0xe5,0xe5,0x01,0x01,0xe5,0xe5,0xe5,0x01,
- 0x01,0xe5,0x07,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe7,0x03,0x01,0xe8,0x02,0x01,
- 0xe7,0x03,0x02,0x04,0x01,0x17,0xe5,0x18,0xe5,0x01,0xe7,0xe7,0x15,0x02,0xe6,0x03,
- 0xe5,0x2d,0x02,0x02,0x02,0xe5,0x01,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x01,0x01,
- 0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,
- 0x02,0x05,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,
- 0x06,0x02,0x13,0x02,0x10,0xe5,0x07,0x06,0x02,0x02,0x03,0x16,0x02,0x01,0x05,0x32,
- 0xe5,0x07,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,
- 0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x06,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x1c,0x09,
- 0xe5,0x07,0x01,0x03,0x0a,0x02,0xe5,0x11,0x02,0xe6,0x0d,0x09,0x09,0x09,0x02,0x03,
- 0xe5,0xe7,0x04,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,
- 0xe6,0x04,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x07,0x01,0xe5,
- 0xe5,0x03,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe6,
- 0x06,0x06,0x02,0x09,0x03,0x05,0x04,0x01,0x02,0x02,0xe6,0xe5,0x01,0xe5,0x04,0x02,
- 0xe6,0x01,0x01,0x02,0x04,0x01,0x06,0xe5,0x01,0xe5,0x32,0x01,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x11,0xe5,0x08,0x09,0x09,
- 0x10,0x02,0x09,0x09,0x04,0x06,0x35,0x09,0x02,0x06,0x02,0xe5,0x04,0x02,0xe5,0x04,
- 0x02,0x06,0x02,0x06,0x02,0x06,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x06,0x02,
- 0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0x0e,
- 0x08,0x0a,0x07,0x14,0x08,0x0b,0x08,0x02,0xe5,0x1d,0x02,0x01,0x04,0x0e,0xe7,0x03,
- 0x02,0xe6,0x03,0x02,0x01,0x04,0x02,0xe6,0x03,0x02,0xe6,0x02,0xe5,0x01,0xe6,0x03,
- 0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0x01,0x05,0xe5,0x01,0x01,0x04,
- 0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x02,0xe5,
- 0xe5,0x03,0x02,0x13,0x01,0x07,0x01,0x0a,0xe5,0x01,0x05,0x19,0xe6,0x20,0x01,0xe5,
- 0x0f,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,
- 0x02,0xe5,0x03,0xe5,0x01,0xe5,0x04,0x02,0xe5,0x03,0xe5,0x01,0xe5,0x03,0xe5,0x01,
- 0xe5,0x06,0x02,0xe5,0x04,0x02,0xe5,0x03,0xe5,0x01,0xe5,0x04,0x02,0xe5,0x04,0x02,
- 0xe5,0x01,0x01,0xe5,0x01,0xe5,0x04,0x01,0xe5,0x07,0x01,0x07,0xe5,0x02,0x02,0x01,
- 0x01,0x05,0x01,0xe5,0x07,0x01,0x05,0x03,0x04,0x03,0x0d,0xe5,0x01,0xe5,0x11,0x0d,
- 0x01,0x15,0x07,0x09,0x09,0x09,0x09,0x09,0xe5,0x07,0x09,0xe5,0x07,0x0b,0x09,0x09,
- 0x01,0x07,0x01,0x07,0xe5,0x07,0x01,0x01,0xe5,0x01,0x01,0x04,0x04,0x04,0x04,0x07,
- 0x01,0x13,0x04,0x1d,0x01,0x01,0x15,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x05,
- 0xe7,0x01,0xe5,0x01,0xe7,0x01,0x03,0xe7,0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0xe7,
- 0x01,0xe5,0x01,0xe7,0x01,0x03,0xe7,0x01,0xe5,0x01,0xe7,0x01,0x03,0xe7,0x01,0x03,
- 0xe7,0xe5,0x01,0x04,0xe6,0x01,0xe5,0x01,0xe7,0x01,0x04,0xe6,0x01,0x05,0xe5,0x01,
- 0x05,0xe5,0x01,0x05,0xe6,0xe5,0x04,0xe6,0x04,0xe7,0x01,0x05,0xe6,0xe5,0x04,0xe5,
- 0x01,0x03,0xe7,0x01,0xe5,0x01,0x01,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe5,0x01,0x2e,
- 0xe5,0x04,0x01,0x06,0x02,0xe6,0x03,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe6,0x03,
- 0x02,0xe5,0x04,0x02,0xe6,0x03,0x02,0xe5,0x04,0x02,0x06,0x02,0xe5,0x04,0x04,0xe5,
- 0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x07,0xe6,0x06,0xe5,0x04,0x03,0x0f,
- 0x03,0x06,0x01,0x07,0x01,0xe5,0x04,0x03,0xe5,0x03,0x02,0x09,0x12,0x35,0x01,0x03,
- 0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,0xe5,0x01,0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,
- 0x03,0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,
- 0x03,0x01,0xe5,0x01,0xe5,0x01,0x01,0xe5,0x03,0xe5,0x04,0x02,0x03,0x01,0xe5,0x01,
- 0xe5,0x04,0x02,0xe5,0x07,0x09,0x05,0xe5,0x0e,0x02,0xe5,0x09,0x01,0x02,0x04,0x01,
- 0xe5,0x01,0x01,0xe5,0x04,0xe5,0xe7,0x03,0x04,0x14,0xe5,0x33,0x03,0x02,0xe5,0xe5,
- 0x02,0x02,0xe5,0xe5,0x02,0x02,0xe5,0xe5,0x01,0xe5,0x01,0xe5,0xe5,0x02,0x02,0xe5,
- 0xe5,0x01,0xe5,0x01,0xe5,0xe5,0x02,0x02,0xe5,0xe5,0x01,0xe5,0x01,0xe5,0xe5,0x02,
- 0x02,0xe5,0xe5,0x02,0x02,0xe5,0x01,0xe5,0x02,0x02,0x02,0x02,0xe5,0x01,0xe5,0xe5,
- 0x02,0x02,0x02,0x03,0x05,0x03,0x05,0x02,0xe5,0x02,0x04,0x0c,0xe6,0x03,0x08,0x0e,
- 0xe5,0x08,0x0d,0x0f,0x01,0xe5,0x23,0x09,0x08,0x03,0x03,0x05,0x03,0x05,0x03,0x05,
- 0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x05,0x09,0x05,0x03,
- 0x06,0x02,0x09,0x09,0x05,0xe5,0x04,0x0c,0x06,0x06,0x01,0xe5,0x08,0x02,0xe5,0x04,
- 0x02,0xe5,0x0b,0x10,0xe6,0xe5,0x45,0x10,0x20,0x06,0x0c,0x07,0x05,0x08,0x2c,0x0d,
- 0x02,0xe5,0xe5,0x0f,0xe5,0xe5,0x08,0x06,0xe5,0xe5,0x05,0x02,0x06,0xe5,0xe5,0x09,
- 0x04,0x01,0x0b,0x05,0x01,0x07,0x01,0xe5,0x05,0x01,0xe5,0xe5,0x03,0x01,0x01,0x05,
- 0x01,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0xe5,0x04,0xe5,0xe5,0x06,0xe7,0xe5,0x03,
- 0xe7,0xe5,0x03,0x01,0x01,0x05,0x01,0xe5,0x05,0x01,0xe7,0x05,0x01,0x01,0x05,0xe6,
- 0xe5,0x04,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x02,
- 0xe5,0x01,0xe5,0xe5,0x01,0x04,0x01,0x03,0x03,0x01,0x01,0x05,0x01,0x01,0xe6,0x02,
- 0x01,0x02,0x01,0x02,0x01,0x02,0xe5,0x02,0x01,0x0b,0x02,0x02,0x13,0x09,0x20,0xe5,
- 0x02,0x05,0x03,0x01,0x02,0xe5,0xe5,0x05,0x04,0x04,0x09,0xe5,0x07,0xe5,0xe5,0xe5,
- 0x0d,0x0c,0x02,0x05,0xe5,0x13,0x01,0x0d,0x02,0x08,0xe5,0x11,0xe5,0x0f,0x10,0x02,
- 0x1c,0xe7,0x1c,0x21,0x09,0x02,0x02,0x02,0x03,0xe5,0x02,0x02,0x02,0x03,0x0b,0x03,
- 0x04,0x01,0x06,0x05,0xe5,0xe5,0x02,0x0a,0x02,0x06,0xe5,0x09,0x0c,0x01,0x07,0x01,
- 0x01,0x05,0x03,0x10,0x02,0x01,0x06,0x05,0x03,0x04,0xe5,0x1f,0x07,0x01,0xe7,0x02,
- 0xe5,0x28,0x03,0x05,0x03,0x04,0x0a,0x05,0x02,0x0a,0x08,0x02,0x01,0x04,0x01,0x0d,
- 0x05,0x0a,0x0b,0x0c,0x05,0x0a,0x0d,0x05,0x05,0x03,0x09,0x03,0x03,0x28,0x02,0x13,
- 0xe5,0xe6,0x01,0x01,0x03,0x14,0x05,0x13,0x05,0x03,0x01,0x0f,0x04,0x06,0x01,0xe5,
- 0x03,0xe8,0x06,0x02,0x02,0x03,0xe6,0x02,0x0b,0x01,0x01,0x04,0x05,0x06,0x01,0x06,
- 0xe7,0x06,0x01,0xe5,0x01,0x01,0x01,0x01,0xe5,0x05,0xe5,0x06,0xe5,0xe6,0x05,0xe7,
- 0x07,0xe5,0x03,0x03,0x01,0x07,0x02,0x04,0xe6,0x06,0x09,0xe6,0x0c,0xe5,0x02,0xe5,
- 0x01,0x1d,0x05,0x0a,0x08,0xe5,0x0f,0x03,0x04,0x0b,0x05,0x11,0xe5,0x03,0x0e,0x01,
- 0x02,0x05,0x07,0x01,0xe5,0xe5,0x01,0x05,0x03,0xe5,0xe5,0xe5,0xe5,0x07,0x01,0x0b,
- 0x05,0xe5,0x02,0x04,0x03,0xe5,0xe5,0xe5,0x08,0x05,0x03,0x05,0x04,0x04,0x05,0x08,
- 0x10,0x02,0xe5,0x1b,0x12,0x04,0x09,0x05,0x01,0xe5,0x01,0x04,0x05,0x06,0x02,0x01,
- 0x01,0x05,0x06,0x02,0x01,0x09,0x01,0x05,0x04,0x03,0x05,0x01,0x03,0x02,0x05,0xe5,
- 0x02,0x13,0x04,0xe5,0x12,0x05,0x02,0xe5,0x08,0x01,0xe5,0x0e,0xe5,0x03,0x07,0x1e,
- 0x02,0xe7,0x10,0x1e,0x17,0xe5,0x1f,0x20,0x0c,0x01,0x05,0x03,0x01,0x14,0x06,0x03,
- 0x0a,0x04,0xe5,0x07,0x02,0x06,0xe5,0x0a,0x35,0xe6,0xe5,0x02,0x06,0x10,0x2a,0x02,
- 0x10,0x01,0x05,0x01,0x01,0x06,0x1e,0x05,0x06,0x10,0x09,0x0e,0x0d,0x04,0xe5,0x05,
- 0x04,0x09,0x16,0x0d,0x05,0x08,0x0d,0xe5,0xe6,0x16,0x0c,0x0f,0xe6,0x0a,0x04,0x08,
- 0xe8,0x11,0x01,0x11,0x02,0x02,0x16,0xe8,0x0a,0x0f,0x03,0x0e,0x01,0x01,0x03,0x08,
- 0x09,0x06,0xe5,0x0c,0xe7,0x04,0x01,0x08,0x0e,0x0e,0xe5,0xe5,0x17,0x17,0x05,0x02,
- 0x1a,0x05,0x06,0x06,0x14,0x1b,0x03,0x04,0x01,0x14,0x06,0x06,0x02,0x03,0x0d,0x1e,
- 0x05,0x2d,0xe8,0x23,0x01,0x09,0x09,0x06,0x01,0x08,0x04,0x02,0x0a,0x06,0x01,0x28,
- 0x05,0x04,0xe5,0x01,0x06,0x02,0x06,0x08,0x09,0xe5,0x15,0xe5,0x0b,0x01,0xe5,0x02,
- 0x04,0x08,0x06,0xe5,0x25,0x01,0xe5,0x2e,0x0a,0x12,0x07,0x02,0x09,0x06,0x04,0x09,
- 0x14,0x0c,0x02,0xe5,0x05,0x01,0x06,0x0b,0x02,0xe5,0x04,0x01,0xe6,0x01,0x03,0x03,
- 0x0d,0x01,0x06,0x02,0x01,0x02,0x01,0x02,0x09,0x07,0x01,0x0c,0x15,0xe8,0x30,0x21,
- 0xe5,0x02,0x0f,0x1b,0x11,0x07,0x14,0x1a,0x16,0x07,0x07,0xe5,0x09,0x0c,0x08,0xe5,
- 0x14,0xe6,0xe7,0x17,0xe5,0x0e,0x16,0xe5,0x11,0x06,0x02,0xe5,0x07,0xe8,0x01,0x02,
- 0xe5,0x07,0x03,0xe5,0x04,0x05,0x0c,0x02,0x0a,0x07,0x09,0xe5,0xe6,0x04,0x09,0xe5,
- 0x07,0xe6,0x09,0xe5,0x04,0x03,0xe5,0x0d,0xe5,0x15,0x01,0x03,0xe5,0x09,0xe6,0xe7,
- 0x01,0x01,0x15,0x10,0x10,0x01,0x04,0x02,0xe5,0x14,0x03,0x05,0xe5,0x01,0x02,0xe5,
- 0xe5,0x02,0x05,0xe5,0x04,0x01,0xe6,0x01,0x05,0x0a,0x01,0x01,0x0d,0x01,0xe6,0x07,
- 0xe5,0xe5,0x12,0x01,0xe6,0x06,0x04,0xe5,0x03,0xe5,0x08,0xe5,0x0e,0x05,0xe5,0x0d,
- 0xe5,0x0d,0x01,0x04,0xe6,0x03,0x26,0x13,0x01,0x1b,0x0b,0x02,0x04,0x0b,0x09,0x07,
- 0x05,0xe5,0x03,0x01,0x02,0xe6,0x03,0x09,0x09,0x04,0x01,0x05,0x01,0xe5,0x02,0x0b,
- 0x07,0x04,0x01,0x0a,0x01,0x04,0x01,0x06,0xe5,0x01,0x01,0x09,0x0b,0x07,0x04,0xe5,
- 0xe6,0x01,0x28,0x10,0x02,0x01,0x1b,0x09,0x09,0x09,0x09,0x09,0x05,0xe5,0x03,0x06,
- 0xe5,0xe5,0x08,0x09,0x10,0xe5,0xe5,0x05,0xe5,0x0a,0x10,0xe5,0xe5,0xe5,0x0d,0x02,
- 0x01,0x04,0xe5,0xe5,0x16,0x03,0x02,0x2b,0x11,0x0b,0x01,0x11,0x0b,0x04,0x01,0xe5,
- 0x0a,0x04,0x01,0x02,0x02,0x01,0x01,0x05,0x0b,0x04,0x04,0x01,0x01,0x02,0x03,0x02,
- 0x02,0x0a,0x19,0xe5,0xe5,0x03,0x01,0x1c,0xe5,0x01,0x0d,0x02,0x11,0x02,0xe5,0x01,
- 0x28,0x03,0x13,0x05,0x01,0x01,0x0f,0x03,0x05,0x03,0x01,0x02,0xe5,0x02,0x05,0x03,
- 0x01,0x02,0xe5,0x02,0x01,0x02,0x04,0x06,0x04,0x07,0x02,0x03,0xe5,0x02,0x02,0x01,
- 0xe5,0x02,0x01,0x02,0xe5,0x02,0x04,0x04,0x01,0x02,0x04,0x01,0x01,0xe6,0xe5,0xe5,
- 0x08,0x09,0x09,0x02,0xe7,0x02,0x01,0x02,0x04,0x13,0x02,0x02,0xe6,0x26,0x02,0x13,
- 0x01,0x07,0x01,0x11,0x06,0x01,0x02,0x07,0x04,0x06,0x03,0xe5,0x03,0x01,0x09,0x0e,
- 0x02,0x01,0x05,0x03,0x03,0xe5,0x03,0x02,0x0c,0x03,0x07,0x01,0x07,0x01,0x07,0x06,
- 0x02,0x01,0x09,0x02,0x04,0x01,0x09,0x17,0xe6,0x01,0x27,0xe6,0xe5,0x12,0x01,0x07,
- 0x01,0x0d,0xe5,0x01,0x06,0x01,0xe5,0x08,0x09,0x06,0x02,0x04,0x01,0x01,0x0b,0x04,
- 0xe5,0xe6,0xe5,0xe5,0x01,0xe6,0x01,0x06,0x02,0x05,0xe5,0x04,0x06,0x0b,0x03,0xe5,
- 0x01,0x01,0x07,0x06,0xe5,0xe5,0xe5,0x06,0x09,0x01,0x07,0x17,0xe5,0xe5,0xe7,0x44,
- 0x09,0x33,0x04,0x0c,0x08,0x02,0x01,0xe5,0x05,0x0b,0x0e,0x02,0x02,0x06,0x02,0x06,
- 0x15,0x07,0x02,0x1a,0x02,0x12,0xe7,0x45,0xe6,0x06,0x01,0x25,0x0f,0xe5,0x0b,0x01,
- 0x05,0xe5,0x01,0x09,0xe6,0x16,0x03,0xe5,0x07,0xe5,0x09,0x1b,0x31,0xe5,0xe7,0x0d,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x03,0x05,0x09,0x09,0x09,0x05,0x03,0x09,0xe6,0x03,
- 0x02,0x03,0x04,0x02,0xe5,0x01,0x05,0x04,0x01,0x02,0x09,0x09,0xe5,0x02,0x01,0x02,
- 0x04,0x01,0x02,0x06,0x02,0x09,0x06,0x02,0x02,0x02,0x03,0x02,0x06,0x04,0x01,0x02,
- 0x09,0x0d,0x02,0x01,0x02,0x88,0x0c,0x15,0x13,0x09,0x09,0x06,0x0c,0x06,0x0c,0x09,
- 0x09,0x18,0x06,0x97,0x02,0x04,0x0d,0x11,0x09,0x09,0x13,0x15,0x08,0x08,0x1e,0xe5,
- 0xe6,0xe5,0x11,0x09,0x1d,0x01,0xe5,0xe5,0x03,0x02,0x01,0x09,0x0e,0x04,0x07,0x01,
- 0x07,0x01,0x07,0x01,0xe7,0x0a,0x04,0x02,0xe6,0xe5,0x01,0x01,0x02,0x06,0x04,0x04,
- 0x09,0xe6,0x01,0x02,0x01,0x04,0x0e,0x04,0x04,0x09,0x09,0x09,0x09,0x16,0x03,0xe6,
- 0x3e,0x01,0xe5,0x05,0x01,0xe5,0x04,0x02,0xe5,0x11,0xe5,0x05,0x01,0xe5,0x02,0x02,
- 0x01,0xe5,0x05,0x01,0xe6,0x08,0x04,0x02,0x02,0xe5,0x04,0x01,0x01,0x02,0x02,0x02,
- 0x08,0xe5,0x0c,0x02,0x01,0x01,0x02,0x05,0x06,0x01,0xe5,0x08,0x09,0x05,0x03,0x03,
- 0x02,0x01,0xe5,0x05,0x02,0x17,0xe8,0x45,0x09,0x04,0x04,0x0b,0x02,0x04,0x0c,0x01,
- 0x07,0x01,0x01,0x01,0x0e,0x04,0x02,0x0e,0x09,0x13,0x06,0x02,0x09,0x09,0x04,0x01,
- 0x0c,0x09,0x22,0x01,0x01,0x14,0xe6,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x05,0x01,0xe5,
- 0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x01,0x03,0x01,0xe5,0x05,0x01,0x01,
- 0x01,0x05,0xe6,0xe5,0x02,0x01,0xe5,0x07,0xe5,0x09,0xe5,0x05,0xe6,0xe5,0x06,0xe5,
- 0x01,0x05,0xe5,0x02,0x04,0xe6,0xe5,0x02,0xe8,0x06,0xe6,0xe5,0x02,0xe5,0xe5,0x07,
- 0xe5,0x07,0xe5,0x05,0x01,0xe6,0xe5,0x02,0xe7,0x07,0xe5,0x07,0xe5,0x06,0x03,0x16,
- 0x03,0x09,0xe5,0x11,0x04,0x01,0x01,0x07,0x01,0x09,0xe5,0x08,0xe5,0x06,0xe5,0x03,
- 0x01,0x01,0x03,0x01,0x04,0x0c,0x01,0x01,0x02,0x0b,0x08,0x05,0x03,0x09,0xe6,0x0e,
- 0x01,0x0a,0xe5,0x06,0x03,0xe5,0x03,0x13,0xe5,0x03,0xe5,0x01,0xe5,0x01,0xe5,0xe5,
- 0x01,0x19,0x01,0xe5,0x37,0x02,0x03,0x01,0x07,0x01,0x09,0xe5,0x11,0xe5,0x01,0x03,
- 0x01,0x06,0x03,0x0a,0x07,0x02,0x06,0x04,0x06,0x02,0x01,0x01,0xe5,0x0a,0x11,0x01,
- 0x01,0x04,0x0a,0x01,0x06,0x17,0x02,0x02,0xe5,0xe5,0x04,0xe6,0x19,0x03,0x14,0x05,
- 0x22,0x17,0x13,0x05,0x09,0x13,0x04,0x07,0x03,0x08,0x03,0x01,0x03,0x09,0x13,0x03,
- 0xe6,0x0c,0x05,0xe5,0x01,0x13,0x05,0x03,0xe5,0x03,0x1e,0x01,0x0c,0x07,0x05,0x09,
- 0x13,0x02,0x06,0x09,0x08,0xe5,0x08,0x08,0xe5,0x01,0x06,0x02,0xe5,0x04,0x0c,0x0f,
- 0x0b,0x04,0x02,0x02,0x08,0xe5,0x11,0x03,0xe7,0x02,0x06,0x01,0x03,0x06,0x09,0x09,
- 0x02,0xe5,0x01,0x01,0xe5,0x02,0x21,0x1e,0x06,0x05,0x01,0xe5,0x2d,0xe5,0xe6,0x0e,
- 0x01,0xe5,0x19,0x02,0x07,0xe5,0x01,0x0b,0x18,0x02,0xe5,0x02,0x0b,0xe5,0xe5,0x0f,
- 0xe5,0xe5,0x27,0x13,0x02,0xe6,0xe5,0xe5,0x0e,0x01,0x07,0x01,0x07,0x01,0x04,0x02,
- 0x01,0x07,0x01,0x01,0x04,0xe5,0xe5,0x06,0x01,0x01,0x05,0x01,0x01,0x01,0x03,0x01,
- 0x07,0x01,0x03,0x03,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x07,
- 0x01,0x01,0x04,0xe5,0xe5,0xe5,0x04,0x01,0x01,0x04,0xe5,0xe5,0x06,0x01,0x01,0x01,
- 0x03,0x01,0x06,0xe5,0xe5,0x02,0x03,0x01,0x07,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,
- 0xe6,0x04,0x01,0x07,0x01,0x01,0x06,0x04,0xe5,0x19,0x19,0x18,0x0b,0x01,0x0d,0xe5,
- 0x02,0x04,0xe5,0xe5,0x02,0x06,0xe5,0xe5,0x01,0xe6,0x04,0xe8,0x02,0x05,0x25,0xe5,
- 0x03,0x02,0x04,0xe5,0x1f,0x0e,0x08,0x22,0x03,0xe5,0x15,0x10,0x1d,0x08,0x08,0xe5,
- 0x01,0x08,0x01,0x01,0x04,0x01,0xe5,0x0c,0x01,0xe5,0x02,0xe5,0x05,0xe5,0x06,0x08,
- 0xe5,0xe5,0x09,0x0e,0x0b,0x13,0x09,0x07,0xe5,0xe5,0x0b,0x0b,0x21,0xe6,0xe6,0x3d,
- 0x09,0x05,0x0c,0x09,0x04,0x01,0x05,0x07,0x09,0x05,0x03,0x01,0x01,0x02,0x02,0x03,
- 0x02,0x01,0x20,0x09,0x09,0x58,0x02,0x05,0x03,0x42,0x13,0x09,0x0d,0x02,0x02,0x06,
- 0x02,0xe5,0x04,0x01,0x04,0x04,0x01,0x03,0x03,0x01,0xe5,0x08,0x0b,0x06,0xe5,0x05,
- 0x09,0xe6,0x0a,0x09,0x02,0x04,0xe5,0x0e,0x26,0xe7,0x04,0x02,0x35,0x12,0x0a,0x09,
- 0x0f,0x06,0x06,0x02,0x0a,0x04,0x07,0x04,0x02,0x0f,0x18,0x07,0x10,0x07,0x03,0x3b,
- 0xe5,0x12,0x09,0x09,0x27,0x0f,0x03,0x0e,0xe5,0x17,0x02,0x09,0x03,0x07,0x01,0x12,
- 0xe5,0x01,0x04,0xe6,0x09,0x28,0x15,0x1f,0x02,0x01,0xe5,0x01,0x06,0x07,0x05,0x09,
- 0x09,0x09,0x09,0x04,0x06,0x07,0x06,0xe6,0x06,0x01,0x02,0xe5,0x0f,0x0a,0x08,0x08,
- 0xe5,0xe5,0x05,0x01,0x02,0x0c,0x0b,0x01,0x01,0x12,0x06,0x01,0xe5,0x12,0x09,0x2b,
- 0x01,0x01,0x64,0x0a,0x05,0x1f,0x03,0x01,0x0c,0x05,0x11,0x1b,0x0d,0x08,0xe5,0x03,
- 0x2e,0x05,0x01,0x01,0x08,0x0d,0x09,0x09,0x09,0x09,0x09,0xe7,0x04,0xe5,0x09,0xe5,
- 0x0c,0x18,0xe5,0x04,0x01,0x09,0xe5,0xe6,0xe5,0x05,0x01,0x02,0x04,0xe5,0x07,0xe5,
- 0x06,0x08,0xe7,0x07,0xe6,0x06,0xe5,0x1e,0x06,0xe6,0x06,0xe5,0x0c,0x05,0x05,0xe5,
- 0x01,0x01,0x07,0x42,0xe5,0xe5,0x0c,0xe5,0x02,0x09,0x18,0xe5,0x11,0x04,0x05,0x0a,
- 0x02,0xe5,0x04,0x02,0x0a,0x05,0x02,0x07,0x0b,0x27,0x06,0x01,0x01,0x10,0x06,0xe5,
- 0xe5,0x09,0x05,0x0c,0x09,0x09,0x09,0x01,0x08,0x02,0x01,0x0d,0x03,0x01,0x09,0x07,
- 0x01,0x0a,0x17,0x05,0x03,0xe6,0x01,0x01,0x03,0xe5,0x04,0x03,0x04,0xe5,0x11,0x03,
- 0x05,0x08,0xe5,0x08,0xe5,0xe5,0x1e,0x09,0x06,0x0f,0xe6,0x07,0xe5,0x53,0x13,0x02,
- 0x09,0x03,0x05,0x09,0x12,0x06,0x08,0x03,0x01,0x09,0x07,0x01,0x02,0x04,0x05,0x03,
- 0x09,0x0c,0x0b,0x24,0x01,0x01,0xe5,0xe5,0x44,0x18,0x07,0xe5,0x09,0x27,0x09,0x02,
- 0x10,0x03,0x13,0xe5,0x07,0x09,0x05,0xe6,0x1a,0x1b,0x07,0x01,0xe5,0xe8,0x0d,0xe5,
- 0x0a,0xe5,0x04,0xe5,0x2d,0x0c,0x05,0x06,0xe5,0xe5,0x08,0x05,0xe5,0x05,0x0b,0xe5,
- 0x07,0x09,0x0c,0x01,0x04,0x08,0x06,0x0d,0x09,0x02,0xe5,0x03,0xe8,0x12,0x01,0x04,
- 0x1e,0x01,0x01,0x01,0x02,0x01,0x0c,0x0c,0xe5,0x2d,0x0e,0xe5,0xe5,0x05,0xe5,0x02,
- 0x01,0x01,0xe5,0x12,0xe5,0x04,0x01,0x05,0x05,0x03,0x09,0x0b,0xe6,0x15,0x0c,0x03,
- 0x01,0x03,0x03,0xe5,0x11,0x01,0x07,0x01,0x20,0x01,0x03,0x02,0x04,0x20,0x20,0xe5,
- 0xe5,0xe5,0x0c,0xe5,0x0b,0x01,0x02,0x01,0x01,0xe5,0xe6,0x02,0x01,0xe5,0xe5,0x08,
- 0x01,0x05,0x01,0x18,0x01,0x01,0xe5,0xe5,0x0a,0x0f,0x1a,0xe5,0xe5,0xe5,0xe5,0x1c,
- 0x15,0xe5,0x03,0x04,0xe5,0x01,0x02,0x46,0x01,0x1b,0x01,0x04,0x02,0xe6,0x06,0x09,
- 0x05,0xe5,0x01,0x01,0x1d,0x01,0x0e,0x02,0x09,0x1a,0x02,0x01,0x3d,0x04,0xe6,0xe5,
- 0x5c,0x02,0x03,0xe5,0xe5,0x04,0xe5,0x02,0xe6,0x03,0x08,0x02,0x02,0x09,0x06,0x01,
- 0x02,0x04,0x01,0x02,0x09,0x04,0x01,0x02,0x02,0x0b,0x04,0x09,0x04,0x01,0x02,0x02,
- 0x10,0x09,0x09,0x09,0x14,0xe6,0xe6,0x01,0x4a,0x0f,0x04,0xe5,0xe7,0xe5,0xe5,0xe5,
- 0xe6,0x02,0x0d,0xe7,0x02,0x02,0x01,0x04,0x06,0xe5,0xe5,0xe5,0x04,0x01,0x01,0x09,
- 0x05,0x01,0x01,0x09,0x01,0x02,0xe5,0x02,0x0f,0x01,0x01,0x09,0x3b,0x03,0xe5,0xe5,
- 0x01,0x46,0x01,0x11,0x01,0x07,0x01,0x07,0x01,0xe5,0x02,0x01,0xe5,0xe5,0x08,0x07,
- 0x01,0x04,0x04,0x01,0x07,0x01,0x04,0x02,0x01,0x01,0x02,0x01,0xe5,0xe5,0xe5,0x09,
- 0xe6,0x01,0x06,0x01,0x04,0x05,0x01,0x07,0x01,0x0d,0xe5,0x05,0x02,0x01,0x04,0x02,
- 0x08,0xe5,0x11,0x04,0x49,0x01,0x0e,0x01,0xe5,0xe5,0x01,0x04,0x01,0x07,0x01,0x01,
- 0x02,0x01,0xe5,0x08,0x03,0xe7,0x01,0x01,0x01,0xe5,0xe7,0x01,0x01,0x01,0xe5,0x03,
- 0x01,0x01,0xe5,0x01,0x01,0x01,0x02,0xe6,0x01,0x01,0x02,0x0a,0xe5,0x01,0x03,0xe5,
- 0xe5,0xe5,0x04,0x01,0x01,0xe5,0xe5,0xe6,0x03,0x01,0x0b,0xe5,0x08,0x01,0x01,0x05,
- 0x01,0xe5,0x04,0xe7,0x12,0x01,0x01,0x09,0x63,0x02,0x03,0x13,0x02,0x02,0x03,0x0b,
- 0x09,0x09,0x09,0x13,0x09,0x09,0x13,0x09,0x09,0x04,0x04,0x16,0x02,0xe6,0x09,0x01,
- 0x57,0x09,0xe5,0x03,0xe5,0x08,0x08,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x11,0xe5,0x07,0xe5,0x07,0xe5,0x11,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x15,0xe9,0x07,0x05,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x06,0x02,0x05,0x03,0x06,
- 0x02,0xe5,0x04,0x02,0x09,0xe5,0x07,0xe5,0x04,0x04,0xe5,0x07,0xe5,0x07,0xe6,0x06,
- 0xe6,0x03,0x02,0x09,0xe5,0x07,0xe6,0x06,0xe5,0x07,0x09,0xe5,0x07,0xe6,0x06,0xe6,
- 0x06,0xe5,0x07,0x0d,0xe5,0x01,0xe5,0x01,0x4f,0x06,0x0c,0x08,0xe5,0x05,0x1d,0x29,
- 0x02,0x63,0x04,0x03,0x01,0xe5,0x50,0x12,0x0a,0x19,0x09,0x0b,0x09,0x16,0x10,0x13,
- 0x13,0x1d,0x0d,0x0a,0x01,0x01,0x44,0x04,0x09,0x04,0x02,0x01,0x02,0x04,0x01,0x0a,
- 0xe5,0x06,0x07,0x01,0xe7,0x03,0x01,0xe7,0x04,0x02,0xe7,0x05,0xe7,0x03,0x01,0xe7,
- 0x02,0x02,0xe7,0xe5,0x0d,0xe7,0x05,0xe7,0x05,0xe7,0x05,0x0a,0x01,0x07,0x01,0x07,
- 0xe6,0xe5,0x04,0x01,0x16,0xe7,0x4a,0xe5,0x02,0x02,0x01,0xe5,0x02,0x04,0x01,0x07,
- 0xe5,0x02,0x06,0x01,0x03,0x03,0x01,0x03,0x01,0xe6,0x03,0xe5,0xe7,0x06,0x02,0xe5,
- 0x06,0xe6,0x01,0x02,0x01,0xe6,0x06,0xe6,0x07,0xe5,0x03,0x02,0xe6,0x06,0xe6,0x06,
- 0xe6,0x06,0xe5,0x09,0x09,0x09,0x09,0x17,0x01,0xe5,0x07,0x3f,0x02,0x09,0x09,0x03,
- 0x03,0x01,0x0d,0xe5,0x03,0x03,0x07,0x05,0x01,0x0b,0x09,0x01,0x05,0x01,0xe5,0x07,
- 0xe5,0x11,0xe5,0x04,0x02,0x01,0x01,0x02,0x02,0x09,0x0d,0x11,0x20,0x03,0x15,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe6,0xe5,0x04,0xe5,
- 0x05,0x01,0xe5,0x01,0x05,0xe5,0x02,0x04,0xe6,0x06,0xe5,0x05,0xe6,0xe5,0xe6,0x01,
- 0xe5,0x02,0xe5,0x01,0x03,0xe5,0x02,0x03,0xe8,0xe5,0x03,0xe6,0x01,0x05,0xe5,0x07,
- 0xe5,0x01,0x03,0xe7,0x01,0x05,0xe5,0x01,0xe5,0x01,0xe7,0x01,0x05,0xe5,0x07,0xe5,
- 0x05,0xe7,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x06,0xe6,0xe5,0x03,0x46,0xe5,0x05,0x01,
- 0xe6,0x04,0x01,0x05,0x0b,0x0b,0x07,0x01,0xe5,0x03,0x04,0x0a,0xe5,0x07,0xe5,0x08,
- 0x03,0x04,0xe5,0x07,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x1e,0x09,0x17,0xe6,0xe5,
- 0x4a,0xe5,0x05,0x01,0x09,0x03,0x19,0x02,0x04,0x01,0xe5,0xe6,0x01,0x05,0xe5,0x01,
- 0x01,0xe5,0x03,0x03,0x02,0x02,0xe5,0x01,0x05,0x03,0x02,0x02,0x04,0x04,0x06,0x02,
- 0xe5,0x01,0x02,0x02,0x06,0x02,0xe5,0x01,0x02,0x0c,0x09,0xe5,0x01,0x03,0x01,0xe5,
- 0x01,0x03,0x01,0x15,0xe5,0x01,0x09,0x41,0x07,0x01,0x09,0x05,0x01,0x01,0x07,0x0b,
- 0x0e,0xe5,0x03,0x03,0xe5,0x04,0xe5,0x02,0x04,0xe5,0x02,0xe5,0x03,0x08,0xe5,0x07,
- 0x09,0xe5,0x02,0xe5,0x02,0xe5,0x07,0xe5,0x02,0xe5,0x02,0x18,0xe5,0x07,0xe5,0x1c,
- 0xe7,0x4a,0xe5,0x05,0x01,0xe5,0x0a,0xe5,0x04,0x0c,0x06,0x0d,0x09,0x05,0x0b,0x03,
- 0x01,0xe5,0x06,0x01,0x02,0x07,0x0b,0x03,0x01,0xe5,0x01,0x09,0x03,0x01,0xe5,0x01,
- 0x17,0x01,0xe5,0x05,0x01,0xe5,0x1e,0xe5,0x58,0x0c,0x09,0x02,0x06,0x02,0x1b,0x04,
- 0x0c,0x10,0x05,0x02,0x07,0x01,0x0a,0x3e,0x14,0xe7,0x01,0x0e,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x07,0x01,0x01,0x05,
- 0x01,0x04,0x02,0x01,0x07,0x01,0x03,0x03,0x01,0x07,0x01,0x01,0x05,0x01,0xe6,0x06,
- 0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0xe6,0xe5,0x04,
- 0x01,0x01,0x05,0x01,0x01,0x05,0xe6,0xe5,0x04,0x01,0x07,0x01,0x01,0x05,0x01,0x07,
- 0x01,0x06,0xe5,0xe5,0x09,0x03,0x10,0x0f,0x09,0x1c,0x19,0x0b,0xe5,0x01,0xe5,0x01,
- 0x01,0x03,0x08,0x0c,0x03,0x07,0xe5,0x08,0x08,0xe6,0x06,0xe5,0x05,0xe5,0x01,0x13,
- 0x07,0x13,0xe6,0x06,0x13,0xe6,0x02,0x12,0x01,0x01,0xe5,0x07,0x04,0x38,0x06,0x01,
- 0x07,0x0c,0x07,0x09,0x01,0x07,0x07,0x01,0x07,0x01,0x06,0x04,0x01,0x02,0x02,0x06,
- 0x04,0x03,0x04,0x07,0x16,0x09,0x0d,0x06,0x16,0x06,0x07,0x0a,0xe6,0x01,0x0c,0x45,
- 0x03,0x05,0x03,0x0b,0x1d,0x03,0x02,0x01,0xe5,0x02,0x04,0x03,0x0f,0x08,0x02,0x08,
- 0x1b,0x04,0x0e,0x09,0x06,0x0c,0x1a,0xe5,0xe6,0x4c,0x04,0x01,0x02,0x03,0x03,0x02,
- 0x03,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x02,0x09,0x02,0xe7,0x02,0x11,0x04,
- 0x03,0xe5,0x02,0x0e,0x01,0x08,0x09,0x02,0x14,0x3a,0xe5,0xe7,0x12,0x09,0x49,0x01,
- 0x09,0x02,0x07,0x03,0xe5,0x08,0x0b,0x05,0x0f,0x05,0x02,0x10,0x09,0x5b,0x02,0xe5,
- 0x0f,0x1c,0x0c,0x09,0x1c,0x03,0x0a,0x01,0xe5,0x05,0x05,0x0d,0x01,0x02,0x04,0x04,
- 0x01,0x06,0x14,0x06,0x0b,0x09,0x04,0x01,0x0f,0x16,0x25,0x02,0x01,0x08,0x09,0x11,
- 0x13,0x09,0x04,0x04,0x0f,0x0d,0xe5,0x03,0xe5,0x0b,0x09,0x06,0xe6,0x12,0x02,0x1a,
- 0x01,0x02,0x03,0xe5,0x08,0x02,0x02,0x1a,0x13,0x13,0x0d,0x01,0x01,0x06,0x0e,0x50,
- 0x05,0x01,0x04,0xe5,0x02,0x11,0x08,0x05,0x0b,0x02,0x01,0x15,0x09,0x02,0x02,0x08,
- 0xe5,0x1f,0x34,0xe6,0x07,0x0a,0x2a,0x09,0x09,0x04,0x02,0x01,0x03,0x06,0xe6,0x0b,
- 0x0d,0x0b,0x08,0xe5,0x02,0xe5,0x03,0xe6,0x10,0x01,0x02,0xe5,0x03,0xe6,0x0b,0x0a,
- 0x0d,0x03,0x04,0x05,0x03,0x09,0x23,0x01,0xe5,0x01,0x6a,0xe5,0x1e,0x01,0xe5,0x01,
- 0x03,0x03,0xe5,0x07,0x01,0xe5,0x14,0x05,0x02,0x01,0x16,0x0c,0x42,0xe6,0xe6,0x36,
- 0x02,0x09,0x01,0x07,0x14,0x0e,0xe6,0x09,0x01,0x01,0x07,0x09,0x09,0xe7,0x03,0x09,
- 0x0c,0xe5,0x07,0x02,0x06,0xe5,0x01,0x01,0x2b,0x06,0x02,0x1f,0x01,0xe5,0x57,0x19,
- 0xe6,0x02,0x01,0x03,0xe5,0x02,0x03,0x02,0x0a,0x02,0x11,0x09,0x07,0x12,0x07,0x01,
- 0x0b,0x04,0x05,0x3f,0x01,0x4d,0x25,0x13,0x10,0x06,0x2a,0x03,0x03,0x08,0x02,0x1a,
- 0x35,0x01,0xe5,0xe6,0x05,0xe5,0x04,0xe5,0x25,0xe5,0x25,0x01,0x04,0x09,0x04,0xe6,
- 0x01,0x04,0x09,0x0a,0xe5,0x03,0x02,0x09,0x02,0xe5,0x04,0xe5,0x04,0x02,0xe5,0x07,
- 0xe5,0x15,0xe5,0x03,0xe5,0x15,0xe5,0x03,0xe5,0xe6,0x04,0x1f,0x01,0xe5,0x01,0xe5,
- 0xe5,0xe5,0x04,0x01,0x2c,0x2a,0x01,0x05,0x04,0xe6,0x06,0x09,0x10,0xe5,0x01,0xe5,
- 0x0d,0xe6,0x0b,0x02,0x01,0x01,0x01,0x03,0x10,0xe5,0x0c,0x1f,0xe5,0x20,0x01,0x03,
- 0xe5,0xe5,0x01,0x01,0x0c,0x55,0x01,0x09,0x07,0x06,0x01,0x02,0x13,0x17,0x05,0x0e,
- 0x01,0x01,0x06,0xe5,0x0b,0x01,0x01,0x1d,0x02,0x01,0xe5,0xe5,0x01,0x15,0x01,0x02,
- 0x05,0x02,0x02,0x61,0xe5,0xe5,0x08,0x01,0x07,0x06,0x02,0x01,0x13,0x1d,0x10,0x09,
- 0x09,0xe5,0xe5,0xe5,0x24,0x01,0x17,0xe5,0x05,0x05,0xe7,0x64,0x04,0x01,0x01,0x05,
- 0xe5,0x01,0xe5,0x03,0x02,0x0a,0xe5,0xe5,0x01,0x05,0xe5,0x08,0x01,0x11,0x09,0x01,
- 0x05,0x03,0x02,0x01,0xe6,0x06,0x01,0x4c,0xe6,0x01,0x02,0x06,0x02,0x5e,0x01,0x02,
- 0x05,0x01,0x01,0xe5,0x02,0x05,0x07,0xe6,0xe5,0xe5,0x06,0x03,0x05,0x01,0x01,0x0f,
- 0x03,0x05,0x01,0x01,0x05,0x04,0x01,0x01,0x07,0x01,0x04,0x27,0x1d,0x03,0xe7,0x01,
- 0x60,0xe5,0x01,0x01,0x01,0x0f,0x06,0x04,0x05,0x01,0x01,0x04,0x04,0x06,0x01,0xe5,
- 0xe5,0x03,0x0c,0x09,0x01,0x1b,0x01,0x22,0x01,0xe5,0xe5,0x0d,0x01,0x10,0x03,0xe5,
- 0xe6,0x5f,0xe5,0x01,0x04,0x0e,0x03,0xe5,0x01,0x01,0x01,0x07,0x01,0x01,0xe5,0x01,
- 0x03,0x09,0x01,0x04,0xe6,0x09,0x09,0x01,0x1b,0x01,0x25,0x01,0x03,0xe5,0x07,0xe5,
- 0x14,0xe7,0x68,0x13,0x02,0x09,0xe5,0x04,0x0e,0xe5,0x1b,0x09,0x02,0x06,0xe5,0x07,
- 0xe5,0x4d,0x01,0x01,0xe5,0x59,0xe5,0x07,0x05,0xe5,0x01,0x0f,0xe5,0x03,0x04,0x08,
- 0xe5,0x01,0xe5,0x29,0x11,0x06,0x02,0x31,0x1f,0xe7,0x0d,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x05,0x03,0xe6,0x02,0xe5,0x01,0x09,0xe5,0x07,0x09,0xe5,0x09,0x02,
- 0x06,0x04,0x01,0x02,0x09,0x09,0x06,0x02,0x03,0xe5,0xe5,0x01,0x03,0xe5,0xe5,0x01,
- 0x09,0x09,0x09,0x09,0x05,0x03,0x09,0x0d,0x04,0x66,0x08,0xe5,0x3c,0x1c,0xe5,0x08,
- 0x09,0x4a,0x02,0xe8,0x62,0x0b,0x0f,0x13,0x19,0x1d,0x08,0x08,0x50,0xe8,0x31,0x20,
- 0x01,0x07,0x01,0x09,0xe7,0xe5,0x0b,0x01,0xe5,0xe5,0xe5,0x03,0x07,0x01,0xe5,0xe5,
- 0x05,0x01,0x07,0x01,0x09,0x07,0x01,0x07,0x01,0x07,0x15,0x25,0x01,0x22,0x01,0x01,
- 0x46,0x0c,0x01,0xe5,0x05,0x01,0xe5,0x05,0x02,0xe5,0x06,0x01,0x04,0xe5,0xe7,0x06,
- 0x01,0x01,0x03,0x01,0xe6,0x06,0x01,0xe5,0x05,0x01,0xe5,0x05,0x02,0x05,0xe5,0xe6,
- 0x02,0x02,0x01,0xe5,0x02,0x06,0x09,0x01,0x03,0x02,0x03,0x1d,0x02,0x01,0xe5,0x21,
- 0x01,0xe6,0x11,0x53,0x01,0xe5,0x01,0x09,0x0a,0x04,0x03,0x02,0x07,0x01,0x0b,0xe5,
- 0xe5,0x05,0x02,0x03,0x02,0x09,0x06,0x09,0x03,0x0b,0x03,0x14,0x08,0x28,0x01,0x01,
- 0x15,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x06,0xe5,0xe5,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x07,0x03,0x05,0xe5,0x07,0xe5,0x09,
- 0xe6,0xe5,0x04,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe8,0x37,0x13,
- 0x06,0x01,0x07,0x01,0x04,0x04,0x11,0x01,0x07,0x01,0x07,0x01,0xe5,0x07,0x01,0x0a,
- 0x08,0xe5,0x05,0x01,0xe5,0x05,0x01,0x07,0x15,0xe5,0x08,0x13,0xe5,0x04,0x01,0x0a,
- 0xe5,0x15,0x01,0x01,0x38,0x1a,0x01,0x07,0x01,0x06,0xe5,0x0a,0x07,0x01,0x06,0xe5,
- 0xe5,0x06,0x01,0xe5,0x06,0xe5,0xe5,0x09,0x06,0x09,0x01,0x07,0x01,0x1b,0x0c,0x1a,
- 0x01,0x22,0xe6,0xe5,0x4b,0x32,0x09,0x09,0x1d,0xe5,0x08,0x1a,0x0b,0xe5,0x4c,0x38,
- 0x13,0x17,0x07,0x06,0x02,0x0b,0x1b,0x09,0x06,0x02,0x09,0x09,0x0b,0x09,0x04,0x02,
- 0x09,0x13,0x09,0x09,0x18,0xe8,0x65,0x03,0x05,0xe5,0xe5,0x05,0x02,0x06,0x14,0x01,
- 0x01,0x17,0x02,0xe5,0xe5,0xe5,0x12,0x27,0x1c,0x1a,0x11,0x01,0x07,0x01,0x01,0x05,
- 0x01,0x07,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x02,0x04,
- 0x01,0x01,0x02,0x02,0x01,0x03,0x03,0x01,0x02,0xe5,0x02,0x01,0x01,0x05,0x01,0xe5,
- 0xe5,0x03,0xe7,0xe5,0x05,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x01,0x01,0x03,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,
- 0x01,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0x0b,0xe5,0xe5,0x0b,0x1c,0xe5,0x0b,0xe5,
- 0x0d,0x03,0x02,0x2c,0x01,0xe6,0x05,0x0a,0xe6,0x1c,0x01,0x07,0xe5,0x0e,0x0e,0x07,
- 0xe5,0x29,0x20,0xe7,0x34,0x10,0x06,0x0a,0x09,0x02,0x04,0x08,0x04,0x01,0x13,0x07,
- 0x11,0x07,0x03,0x03,0x03,0x02,0x15,0x06,0x02,0x01,0x01,0x02,0x09,0x02,0x08,0x0f,
- 0x0d,0x08,0x08,0xe5,0x01,0xe5,0x35,0x13,0x21,0x0f,0x05,0x06,0xe5,0x01,0xe5,0xe5,
- 0x23,0x02,0x01,0x0b,0x19,0x01,0x2f,0x09,0x15,0x04,0x29,0x34,0x03,0x01,0xe5,0x09,
- 0x02,0x0a,0x01,0x01,0x04,0x09,0x0c,0x01,0x01,0xe5,0x0c,0x05,0xe5,0x07,0xe5,0x07,
- 0x02,0x08,0x0c,0x04,0x03,0x07,0x07,0x04,0x21,0x01,0xe5,0x04,0xe5,0x65,0x01,0x0d,
- 0x07,0x08,0x02,0x01,0x09,0x01,0xe5,0x05,0x03,0x01,0x0f,0x09,0x09,0x0a,0x05,0x21,
- 0x09,0x24,0xe5,0x02,0xe5,0x01,0x0c,0x09,0x09,0x01,0x28,0x06,0x04,0x05,0x08,0x01,
- 0x06,0x0a,0x02,0x03,0x01,0x08,0xe5,0x06,0x03,0x09,0x03,0xe6,0x02,0x02,0x06,0xe5,
- 0x07,0x09,0x09,0x02,0x06,0x13,0x09,0x09,0x03,0x11,0x08,0x02,0xe5,0xe9,0x1d,0x0d,
- 0x09,0x09,0x2e,0xe5,0x1e,0xe5,0x01,0xe5,0xe5,0x01,0x05,0x03,0x01,0xe5,0x01,0x03,
- 0x06,0x02,0x09,0x01,0x02,0x04,0x01,0x07,0x05,0x03,0x01,0x11,0x01,0x07,0x05,0x03,
- 0x01,0x0e,0x09,0x07,0x01,0x01,0xe5,0x07,0x15,0x52,0x0f,0x06,0x02,0x0b,0x01,0x05,
- 0xe5,0x08,0x08,0x04,0x05,0x1e,0x01,0x07,0x12,0x01,0x31,0xe6,0xe6,0x48,0x18,0x03,
- 0xe5,0x03,0x0a,0x06,0x0f,0xe6,0x01,0x03,0xe5,0xe7,0x06,0xe6,0x06,0xe5,0x08,0x04,
- 0xe6,0x01,0x07,0xe7,0x05,0xe5,0xe5,0x05,0xe6,0x01,0x0e,0xe5,0xe5,0x06,0xe5,0x21,
- 0x09,0xe5,0x01,0xe5,0x05,0x43,0x0c,0x0c,0x02,0xe5,0x23,0x04,0x02,0x03,0xe5,0x01,
- 0x06,0x03,0x06,0x02,0x09,0x09,0x08,0x11,0x02,0x19,0xe5,0x01,0x2b,0x01,0xe7,0x07,
- 0x0f,0x53,0x09,0x01,0x08,0x05,0x03,0x04,0x04,0x04,0x01,0x03,0xe5,0x01,0x01,0x03,
- 0xe5,0x01,0x01,0x07,0x01,0x06,0xe5,0xe6,0x04,0x1d,0x03,0x01,0xe5,0x04,0x03,0xe5,
- 0x03,0xe5,0x05,0x01,0xe5,0x1a,0x06,0xe5,0xe5,0x12,0x04,0xe5,0x0d,0x41,0x15,0x09,
- 0x02,0x02,0xe5,0x08,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x02,
- 0x04,0x01,0x01,0xe5,0x03,0x01,0xe5,0x10,0xe5,0xe5,0x05,0xe5,0x05,0xe5,0xe5,0x1a,
- 0x07,0xe5,0xe5,0xe5,0x15,0x5c,0x09,0x11,0x17,0x13,0x39,0x02,0x06,0x15,0x10,0x07,
- 0xe8,0x06,0xe5,0x04,0xe5,0x01,0x01,0x32,0x02,0xe5,0x14,0xe5,0x05,0x08,0xe5,0x01,
- 0x01,0xe5,0x01,0xe5,0x01,0xe5,0x19,0xe5,0x07,0xe5,0x08,0xe7,0x05,0x02,0x01,0x04,
- 0x01,0xe5,0x04,0xe5,0x08,0xe5,0x06,0x01,0x07,0xe5,0x0a,0xe5,0x05,0x01,0xe5,0x04,
- 0x02,0xe5,0x04,0xe5,0x13,0x05,0x02,0x01,0x05,0xe5,0x06,0xe5,0x12,0x01,0x1e,0x02,
- 0x20,0xe5,0x07,0xe5,0x01,0x06,0xe5,0x07,0x01,0x0b,0x03,0x09,0x09,0x02,0xe5,0x04,
- 0x03,0xe5,0x03,0x03,0xe5,0x03,0x09,0x14,0x0b,0xe5,0x08,0x01,0x07,0xe5,0x16,0x01,
- 0x02,0x02,0xe5,0x03,0x0c,0x37,0x04,0x1c,0x09,0x05,0x03,0x02,0xe5,0xe5,0xe5,0x07,
- 0x05,0xe5,0x03,0x09,0x01,0x07,0x01,0x03,0x01,0x01,0x01,0x07,0x01,0x03,0xe5,0x01,
- 0x01,0x03,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x11,0x04,0xe5,0x02,0x01,0xe5,0x01,
- 0xe5,0x01,0x01,0x0a,0x0b,0xe5,0x03,0x04,0xe5,0xe6,0x01,0x46,0x31,0x06,0x02,0x01,
- 0x0e,0x0a,0xe5,0x05,0x02,0xe5,0x07,0xe5,0x04,0x01,0xe5,0x07,0xe5,0x04,0x0a,0x09,
- 0x0b,0xe5,0x08,0xe5,0x07,0xe5,0x03,0x16,0xe5,0x05,0x02,0x03,0x01,0x47,0x22,0x04,
- 0x01,0x07,0x07,0x06,0x09,0x02,0x1b,0xe5,0x08,0x08,0xe5,0x12,0xe5,0x01,0x1b,0x01,
- 0x04,0xe5,0x09,0x02,0x1a,0x04,0x02,0x46,0x03,0x23,0x01,0x01,0x05,0x03,0x09,0x09,
- 0x04,0x01,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x01,0x04,
- 0x04,0x04,0x13,0x04,0x04,0x09,0x02,0x01,0x18,0x02,0x01,0x01,0x02,0x46,0x04,0x0b,
- 0x01,0x14,0x01,0x02,0x01,0x01,0xe5,0x03,0x01,0x01,0x04,0x06,0x02,0xe5,0x01,0x04,
- 0x06,0x02,0x05,0xe6,0xe5,0x01,0x01,0xe6,0x01,0x06,0x02,0x02,0xe8,0x01,0x09,0x06,
- 0x02,0x04,0xe5,0x0c,0x06,0x02,0x04,0xe5,0x02,0x22,0xe5,0xe5,0xe5,0x48,0x21,0xe5,
- 0x03,0x01,0x07,0x18,0x01,0x01,0x13,0x01,0x05,0x08,0xe5,0xe5,0xe5,0x04,0xe6,0x0f,
- 0xe5,0x09,0xe5,0x19,0xe5,0xe5,0xe5,0x06,0x01,0x1c,0xe7,0x08,0x02,0x5d,0x16,0xe5,
- 0x07,0x05,0xe5,0x01,0xe5,0x05,0x03,0x02,0x02,0x03,0xe5,0x03,0xe5,0x07,0xe5,0x01,
- 0x02,0x02,0xe5,0x01,0x02,0x02,0x03,0x02,0x02,0xe5,0x01,0x02,0x02,0x13,0x03,0x02,
- 0x02,0xe5,0x01,0x02,0x02,0x03,0xe5,0x1b,0x04,0x0a,0xe5,0x5d,0xe5,0x15,0x0b,0x03,
- 0xe5,0x0d,0x0f,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x11,0xe5,0x0b,0x13,0x05,0xe5,
- 0x0b,0xe5,0x1d,0xe7,0x0d,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x01,0x02,
- 0xe5,0x04,0x02,0x09,0x02,0x02,0x03,0x06,0x02,0xe6,0x03,0x04,0x05,0xe5,0x01,0x06,
- 0x02,0xe6,0x02,0xe5,0x01,0xe5,0x02,0xe6,0x01,0xe6,0x03,0x02,0x04,0x01,0x02,0xe5,
- 0x02,0x01,0x02,0x05,0x03,0x06,0x02,0x05,0x03,0xe5,0x04,0x02,0x09,0x09,0x0d,0x01,
- 0x01,0xe5,0x01,0x63,0x08,0xe5,0x12,0x06,0x02,0x08,0xe5,0x09,0xe5,0x07,0xe5,0x05,
- 0x13,0x02,0x13,0x10,0x02,0x09,0x06,0x02,0x1d,0x04,0x02,0x02,0xe5,0x62,0x07,0x02,
- 0x13,0x0a,0x03,0x05,0x05,0x05,0x03,0x05,0x03,0x09,0x01,0x07,0x04,0x04,0x09,0x01,
- 0x01,0x05,0x0e,0x04,0x05,0x03,0x01,0x02,0x04,0x17,0x0a,0xe5,0x01,0x01,0x06,0x10,
- 0x36,0x18,0xe5,0xe5,0xe5,0x03,0x07,0x01,0x04,0x0f,0xe6,0x04,0x17,0xe6,0x06,0xe6,
- 0x06,0x01,0x11,0xe6,0x24,0x01,0x2b,0x01,0x19,0xe5,0x4b,0x02,0xe5,0x04,0x02,0x03,
- 0x02,0x01,0xe5,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x13,0x09,0x09,
- 0x20,0x01,0xe6,0x12,0xe5,0x03,0x4a,0x04,0x09,0x4b,0xe5,0x6c,0x01,0x01,0x15,0xe5,
- 0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe6,0x06,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x02,0x02,0x01,0xe5,0xe5,0x06,0xe5,
- 0x06,0xe7,0x02,0x03,0xe6,0x02,0x04,0xe5,0x07,0xe5,0x05,0xe7,0x02,0x04,0xe5,0x05,
- 0xe7,0x07,0xe5,0x07,0xe5,0x05,0xe7,0x05,0x01,0xe5,0x07,0xe5,0x07,0xe5,0x06,0x02,
- 0xe5,0x03,0x14,0x3c,0xe5,0x10,0xe5,0x07,0xe6,0x04,0x01,0xe6,0x11,0x02,0x0c,0x05,
- 0xe5,0x01,0x05,0x03,0x05,0xe5,0x11,0x03,0x05,0xe5,0x07,0x03,0x0f,0x09,0x03,0x05,
- 0x02,0x1f,0x01,0xe5,0x18,0x4d,0x02,0x06,0x09,0x01,0x10,0x05,0x03,0x01,0x05,0x03,
- 0x05,0x03,0x05,0x03,0x05,0x09,0x09,0x03,0x05,0x07,0x01,0x03,0x0f,0x07,0x01,0x03,
- 0x05,0x03,0x1b,0x01,0xe6,0x18,0x4f,0x09,0x13,0x05,0x04,0x04,0x13,0x01,0x04,0x1d,
- 0x02,0x01,0x11,0x01,0x0e,0x0c,0x01,0x04,0x04,0x1d,0x02,0x19,0xe5,0x12,0x27,0x10,
- 0x04,0x04,0x02,0x09,0x06,0x04,0x02,0xe5,0x07,0xe5,0x13,0xe5,0x08,0x1c,0xe5,0x0f,
- 0x01,0xe5,0x19,0x01,0xe5,0x07,0xe5,0x1b,0x01,0xe6,0x31,0x15,0x06,0x28,0x01,0x0d,
- 0x05,0x02,0x07,0xe5,0x01,0x03,0x02,0x02,0xe5,0x04,0x02,0x06,0x02,0x06,0x02,0x03,
- 0x02,0x02,0x06,0x02,0x06,0x02,0x10,0x02,0x06,0x02,0x06,0x02,0x21,0xe5,0xe6,0x10,
- 0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0xe5,
- 0xe5,0xe5,0x01,0x01,0xe5,0x05,0x01,0x01,0x05,0xe6,0x01,0x04,0x01,0x02,0x04,0x01,
- 0x02,0x01,0x02,0x01,0x01,0x05,0xe6,0x04,0x01,0x01,0x01,0x05,0x01,0x01,0x01,0x03,
- 0x01,0x01,0x05,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0xe5,0x01,
- 0x01,0x01,0x02,0x02,0x01,0x01,0x01,0xe5,0x01,0x01,0x01,0x07,0x01,0x01,0x03,0x01,
- 0x01,0x05,0x01,0x01,0x02,0x02,0x01,0x01,0x07,0x01,0x01,0x05,0x01,0x0d,0xe5,0x27,
- 0x06,0x3a,0x15,0x0d,0x02,0xe6,0x01,0x17,0x02,0xe6,0x08,0x07,0xe5,0x07,0xe5,0x03,
- 0x07,0x0f,0xe5,0x07,0x05,0x04,0x2b,0x01,0x01,0xe5,0x19,0x15,0x09,0x09,0x06,0x02,
- 0x01,0x07,0x0e,0x0b,0x04,0x15,0x02,0x07,0x0f,0x04,0x08,0x06,0x02,0xe5,0x01,0x02,
- 0x03,0x04,0x18,0x13,0x05,0x09,0x0c,0x0d,0x02,0xe7,0xe5,0x02,0x37,0x01,0x13,0x11,
- 0x08,0x02,0x08,0x11,0x05,0x02,0x1c,0x13,0x05,0x03,0x1e,0x04,0x03,0x01,0x35,0xe5,
- 0x01,0xe5,0x0f,0x09,0x3a,0x05,0x2a,0x04,0x02,0x01,0x09,0x01,0xe5,0x05,0x01,0x0f,
- 0x01,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0xe5,0x01,0x06,0x06,0x01,0xe5,
- 0x05,0x01,0x02,0x04,0x01,0x21,0x01,0xe7,0x15,0x27,0x22,0x04,0x09,0x14,0x09,0x01,
- 0x07,0xe5,0xe5,0xe5,0x06,0x01,0x11,0x01,0x02,0x01,0x02,0x01,0x07,0x01,0x02,0x04,
- 0x01,0x02,0x04,0x01,0x11,0x01,0x04,0x02,0x01,0x07,0x01,0x25,0xe5,0x0d,0x09,0x09,
- 0x13,0x03,0x04,0xe5,0x02,0x04,0xe5,0x05,0x02,0x01,0x07,0x09,0x03,0x0e,0xe5,0x09,
- 0x04,0x04,0x01,0x02,0x01,0x07,0x29,0xe5,0xe6,0x08,0x09,0x13,0x04,0x01,0x0c,0x08,
- 0xe5,0x16,0xe5,0x01,0xe5,0x0c,0xe5,0x07,0xe5,0x07,0x13,0x01,0x14,0x07,0x01,0x03,
- 0x02,0x02,0x09,0x10,0x17,0x02,0x07,0x09,0x09,0x0a,0x08,0x06,0x09,0xe5,0x07,0xe5,
- 0xe5,0x0f,0x02,0x02,0x0d,0xe5,0x05,0x01,0x1c,0xe6,0x0e,0x04,0x02,0x09,0x02,0x13,
- 0x26,0xe5,0x08,0x12,0x15,0x05,0xe5,0x19,0x17,0x09,0x09,0x13,0x02,0x04,0x0b,0x09,
- 0x1a,0x01,0x01,0x01,0x1c,0x25,0x26,0x04,0x1c,0xe5,0x08,0xe5,0x43,0x28,0x26,0x01,
- 0xe6,0x44,0xe5,0x2d,0x04,0x04,0x03,0x15,0xe5,0x92,0x02,0xe6,0x17,0x09,0x0b,0x07,
- 0x09,0x0e,0x04,0x09,0x1d,0x03,0x07,0xe6,0x06,0xe6,0x07,0xe5,0x01,0x08,0x08,0xe5,
- 0x08,0x09,0x03,0x01,0x02,0xe5,0x08,0x14,0x04,0x05,0x07,0x0f,0x18,0xe8,0x17,0x17,
- 0x04,0xe6,0xe6,0x0f,0x08,0xe5,0x02,0x04,0xe5,0x02,0x05,0x02,0x09,0x09,0x08,0x10,
- 0x04,0x2f,0x07,0x01,0x07,0x01,0x07,0x01,0x14,0x08,0x09,0x19,0x02,0x21,0x19,0x03,
- 0x0b,0x09,0x09,0x09,0x11,0x2f,0x12,0x10,0x0b,0x0a,0x09,0x01,0x02,0x15,0x07,0xe5,
- 0x19,0xe7,0x02,0x0b,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0xe5,0x01,0x03,
- 0xe5,0x07,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x07,
- 0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x08,
- 0x06,0xe7,0x03,0x01,0xe5,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x08,0x08,0xe5,0x07,0xe5,
- 0x0b,0x03,0xe5,0x01,0x0b,0x01,0x05,0x01,0x01,0x02,0x05,0xe5,0x08,0x08,0xe5,0x08,
- 0x09,0x08,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x01,0x02,0x02,0xe5,
- 0x04,0x02,0xe5,0x04,0x01,0x03,0x08,0xe6,0x06,0xe5,0x04,0x03,0x07,0xe6,0x01,0x06,
- 0x08,0x08,0xe6,0x06,0xe5,0x05,0x02,0xe5,0x03,0x04,0x09,0x09,0x09,0x0f,0x01,0x02,
- 0xe5,0x03,0x06,0xe5,0x03,0x03,0xe5,0xe5,0xe5,0xe5,0x01,0xe5,0x07,0x06,0x02,0xe6,
- 0x06,0xe5,0x02,0x04,0xe6,0xe5,0x01,0x02,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x07,0x02,
- 0x01,0x04,0xe6,0x06,0x09,0x01,0x09,0x01,0xe5,0x05,0x02,0x04,0xe6,0x08,0x02,0x03,
- 0x02,0x07,0x01,0x01,0x04,0x02,0x06,0xe5,0xe6,0x07,0x09,0xe5,0x06,0xe5,0x06,0x01,
- 0x09,0x09,0x10,0xe6,0x23,0x0b,0x25,0x09,0x09,0x16,0x05,0x02,0xe5,0x07,0x0c,0x05,
- 0x03,0x06,0x13,0x12,0x07,0x02,0x08,0x02,0x03,0x02,0x0d,0x2b,0xe5,0x0e,0x05,0x03,
- 0x09,0x09,0x09,0xe5,0x02,0x04,0x09,0x09,0x04,0x04,0x09,0x04,0x04,0xe5,0x07,0xe5,
- 0x07,0x01,0x01,0x05,0xe5,0x09,0x09,0x08,0xe5,0x08,0x09,0x02,0x04,0x01,0x09,0x10,
- 0x02,0x13,0x08,0xe5,0x08,0x09,0x0e,0x01,0x01,0x0d,0xe5,0x01,0x03,0x01,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x02,0x04,0xe5,0x02,
- 0x03,0xe6,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x02,0x05,
- 0x03,0x04,0xe5,0x07,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x01,
- 0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x10,0xe6,0x0c,0x02,0x04,0x01,
- 0x02,0x06,0x02,0x06,0x09,0x02,0x05,0xe5,0x01,0x05,0xe5,0x01,0x06,0x02,0x02,0x03,
- 0x02,0x02,0x03,0x02,0x01,0xe5,0x02,0x09,0x02,0x06,0x06,0x02,0x08,0x01,0xe5,0x06,
- 0x01,0x09,0x05,0x03,0x09,0x0a,0x02,0x05,0x02,0x01,0xe5,0x03,0x04,0x03,0x02,0x06,
- 0x05,0x04,0x09,0x08,0x09,0x11,0x01,0xe5,0x0d,0xe5,0x07,0x09,0x09,0xe5,0xe5,0x05,
- 0x09,0x09,0x09,0x09,0x09,0x09,0xe5,0xe5,0x05,0x09,0xe5,0xe5,0x05,0xe5,0xe5,0x07,
- 0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,
- 0xe5,0x05,0x09,0x09,0x09,0xe5,0x07,0xe5,0xe5,0x05,0x02,0x06,0xe5,0xe5,0x05,0xe5,
- 0xe5,0x0b,0xe5,0xe6,0x09,0x03,0x02,0x06,0x01,0x07,0x01,0x07,0x09,0x01,0x03,0x03,
- 0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x04,0x04,0x01,0x07,0x04,
- 0x04,0x04,0x06,0x05,0x03,0x05,0x03,0x09,0x09,0x13,0x13,0x04,0x04,0x03,0x11,0x07,
- 0x03,0x05,0x0f,0x02,0xe5,0x18,0x09,0x04,0x0e,0x09,0x01,0x02,0x04,0x01,0x07,0x09,
- 0x06,0x02,0x01,0x11,0x01,0xe5,0xe5,0x1f,0x06,0x17,0x05,0x01,0x02,0x03,0x08,0x06,
- 0x02,0x09,0x10,0x04,0x04,0x24,0xe6,0xe5,0x0d,0x05,0x03,0x03,0x05,0x02,0x02,0x06,
- 0x06,0x09,0x09,0x03,0x05,0x02,0x06,0x02,0x02,0xe5,0x01,0x09,0x09,0x09,0x05,0xe5,
- 0x01,0x08,0x02,0x09,0x02,0x06,0x0d,0x05,0x0d,0x05,0x02,0x04,0x04,0xe5,0x04,0x09,
- 0x02,0x1a,0x09,0x0f,0xe8,0x2b,0x11,0x1d,0x1d,0x18,0x04,0xe5,0x09,0x13,0x01,0x1a,
- 0xe5,0x09,0xe5,0xe5,0x04,0x1f,0x25,0xe6,0x0f,0x03,0x05,0x09,0x09,0x09,0x09,0x01,
- 0x07,0x09,0x09,0x09,0xe5,0x07,0x05,0x03,0x09,0x01,0x07,0x06,0xe5,0x02,0x09,0x09,
- 0x01,0x03,0x03,0x05,0x03,0x09,0xe5,0x07,0x09,0x09,0x01,0x07,0x09,0x07,0x01,0x09,
- 0x09,0x0d,0x01,0x01,0x04,0x27,0x39,0x25,0x09,0x0b,0x09,0x09,0x02,0xe5,0x0e,0x02,
- 0x07,0x0b,0x1d,0x2e,0xe5,0xe6,0x50,0xe5,0x1b,0x13,0x04,0x04,0x04,0x06,0x04,0x09,
- 0x04,0x04,0x13,0x0e,0x13,0x1d,0x27,0xe7,0x21,0xc6,0x40,0x03,0x03,0x07,0xe3,0x09,
- 0x3a,0x03,0x07,0x29,0x1f,0x25,0x0b,0x3b,0x15,0xe5,0x2d,0x01,0x27,0xe7,0x6e,0x16,
- 0x05,0xe5,0x01,0x05,0x02,0x02,0x05,0x03,0x05,0xe5,0x01,0x05,0x0d,0x05,0x5c,0x06,
- 0x01,0x01,0x05,0x93,0x59,0x34,0x05,0xe5,0x01,0x04,0xe5,0xe3,0x34,0x10,0x02,0xe5,
- 0x13,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0xe6,0x06,0x09,0x09,0x09,0x03,0x05,0x0a,0xe5,
- 0xe5,0x04,0x09,0x08,0xe5,0x07,0xe5,0x08,0x08,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x08,0x08,0xe5,0x08,0x09,0x07,0x03,0x09,0x09,0x09,0x09,0x09,
- 0x04,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x05,0x01,0xe5,0x08,0x08,0xe5,0x08,0x07,0xe6,
- 0x11,0x16,0x09,0x09,0x0f,0x03,0x09,0x09,0x05,0x03,0x09,0x05,0x03,0x13,0x04,0x09,
- 0x05,0x05,0x09,0x09,0x13,0x14,0x03,0x09,0x09,0x05,0x03,0x2f,0xe5,0x01,0x0d,0x03,
- 0x03,0x05,0x03,0x05,0x03,0x01,0x0d,0x03,0x05,0x03,0x09,0x05,0x03,0x09,0x09,0x01,
- 0x11,0x01,0x04,0x04,0x04,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x09,0x04,0x06,0x0b,
- 0x03,0x05,0x03,0x09,0x09,0x01,0x0d,0x03,0x03,0x05,0x03,0x0e,0xe8,0x0a,0x06,0x01,
- 0x02,0x01,0x02,0x01,0x02,0x01,0x01,0xe5,0xe5,0x02,0x07,0xe5,0xe5,0x03,0x02,0x01,
- 0x01,0xe5,0xe5,0x01,0x01,0x01,0xe5,0xe5,0x01,0x01,0x04,0x02,0x01,0x01,0xe5,0xe5,
- 0x01,0x01,0x01,0x02,0x03,0x07,0xe5,0xe5,0xe6,0xe5,0x04,0x02,0x02,0x03,0x02,0x02,
- 0x05,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x01,0x07,0x03,0x02,0x02,0x02,0x04,
- 0x02,0x01,0x04,0x02,0x01,0x02,0x01,0x02,0x01,0x01,0xe5,0x05,0x04,0x03,0x07,0xe5,
- 0xe5,0x03,0x04,0x04,0x0b,0x02,0xe5,0x01,0xe5,0x01,0xe5,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
diff --git a/board/esd/ar405/fpgadata_xl30.c b/board/esd/ar405/fpgadata_xl30.c
deleted file mode 100644
index 57d327a2c5..0000000000
--- a/board/esd/ar405/fpgadata_xl30.c
+++ /dev/null
@@ -1,2436 +0,0 @@
- 0x00,0x09,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x00,0x00,0x01,0x61,0x00,0x0d,
- 0x70,0x70,0x63,0x5f,0x61,0x72,0x30,0x31,0x2e,0x6e,0x63,0x64,0x00,0x62,0x00,0x0b,
- 0x73,0x33,0x30,0x78,0x6c,0x70,0x71,0x32,0x34,0x30,0x00,0x63,0x00,0x0b,0x32,0x30,
- 0x30,0x34,0x2f,0x31,0x32,0x2f,0x31,0x34,0x00,0x64,0x00,0x09,0x31,0x37,0x3a,0x30,
- 0x33,0x3a,0x32,0x33,0x00,0x65,0xe2,0x01,0x00,0x00,0x97,0xf2,0xff,0x30,0xe6,0x03,
- 0xe5,0x01,0x01,0x01,0xe5,0xe6,0x04,0x01,0x02,0x11,0x09,0x09,0x02,0x04,0x04,0x06,
- 0x09,0x07,0x09,0x04,0x04,0x04,0x04,0x09,0x09,0x0b,0x09,0x09,0x04,0x04,0x04,0x04,
- 0x04,0x09,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x07,0x08,0x01,0xe5,
- 0x0c,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x13,0x03,0x02,0x02,0x03,0x02,0x08,
- 0x09,0x11,0x03,0x11,0x02,0x06,0x03,0x05,0x03,0x21,0x33,0x11,0xe5,0xe5,0xe3,0x17,
- 0x0b,0xe5,0x01,0x0f,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x04,0x04,0x02,
- 0x06,0x01,0xe5,0x05,0x01,0x02,0x02,0xe6,0x03,0x04,0x09,0x09,0x07,0xe6,0x03,0x06,
- 0x01,0x07,0x09,0x04,0x04,0x09,0x09,0x06,0x02,0x04,0x04,0x04,0x04,0x09,0x09,0x09,
- 0x12,0x14,0x09,0x09,0x03,0x05,0x03,0x05,0x09,0x09,0x03,0x05,0x09,0xe5,0x01,0x05,
- 0xe5,0x07,0xe5,0xe6,0x04,0x0b,0xe5,0x07,0xe5,0x07,0x03,0x05,0xe5,0x01,0x05,0xe5,
- 0x01,0x05,0xe6,0xe5,0x04,0x03,0x05,0x03,0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,
- 0x07,0x09,0x03,0x0e,0x05,0x03,0x05,0x03,0x05,0x13,0x03,0x05,0x03,0x08,0x31,0xe5,
- 0xe5,0x37,0x44,0x01,0x01,0x01,0x79,0x8a,0xe5,0x01,0x10,0x09,0x09,0x1d,0x09,0x38,
- 0x04,0x36,0x45,0xe7,0xe5,0x11,0x09,0x09,0x13,0x09,0x3e,0x09,0x3b,0x1d,0x18,0x05,
- 0x01,0x01,0x06,0x73,0x12,0x77,0xe5,0xe5,0xe5,0xa2,0xe5,0x41,0x1c,0xe8,0x84,0x1f,
- 0x25,0x3a,0xe5,0xe6,0x3c,0x70,0x4e,0x0c,0x10,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x03,0x07,0x01,0x07,0x09,0x09,0x09,0x09,0x09,0xe5,0x07,0x09,
- 0x09,0x09,0x01,0x07,0x0d,0xe5,0x01,0x10,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x05,0x03,0x05,0x03,0x05,0x03,0x07,0x03,0x09,0x05,0x03,0x05,0x03,0x09,0x09,0x09,
- 0x05,0x03,0x09,0x01,0x07,0x09,0x09,0x08,0x06,0x01,0x0d,0xe5,0x05,0x01,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x04,0x01,0xe6,0x07,0xe5,0x03,0x02,0xe6,0x07,0xe5,0x01,
- 0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x01,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x01,0x05,
- 0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x02,0x04,
- 0xe5,0x07,0xe5,0x01,0x0c,0xe8,0x0f,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x05,0x03,
- 0x01,0x07,0x09,0xe5,0x07,0xe5,0x01,0x02,0xe5,0x02,0x09,0x09,0x09,0x09,0x01,0x01,
- 0x05,0x09,0x09,0x09,0x09,0x09,0x09,0x06,0x0a,0x05,0xe5,0x05,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x02,0x06,0xe5,0x03,0x03,0xe5,0x03,0x03,0xe5,0x04,0x02,
- 0xe5,0x02,0x01,0x02,0xe5,0x01,0x05,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x07,0xe5,0x03,
- 0x03,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x07,0x02,0x03,0x03,0x0f,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x08,0x07,0x01,0x0d,0x09,0x09,0x09,0x09,0x04,0x01,0x02,0x09,0x09,
- 0x09,0x09,0x09,0x05,0x03,0x09,0x01,0x03,0x05,0x09,0x09,0x08,0xe5,0x06,0x01,0x09,
- 0x08,0xe5,0x08,0x09,0x09,0x09,0x0a,0x07,0xe6,0x01,0x03,0x06,0x02,0xe5,0x04,0x02,
- 0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,
- 0x04,0x01,0x02,0x05,0xe5,0x01,0x08,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x04,0x01,
- 0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,
- 0x06,0x02,0xe5,0x02,0x37,0xe5,0x04,0x09,0x31,0x05,0x05,0x13,0x09,0x04,0x24,0x07,
- 0x09,0x17,0x02,0x02,0x01,0x01,0x03,0x42,0x01,0x13,0x13,0x10,0x0c,0x01,0x09,0x07,
- 0x01,0x06,0x05,0x24,0x06,0x0a,0x0f,0x0f,0x01,0xe6,0xe5,0x1d,0x1b,0x21,0x09,0x09,
- 0x13,0x01,0x13,0x1d,0x05,0x17,0x2b,0x05,0xe6,0x33,0x04,0x05,0xe5,0x05,0x03,0x06,
- 0x2c,0x0b,0x04,0x1d,0x59,0xe6,0x0f,0x09,0x09,0x09,0x09,0x07,0x01,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x01,0x05,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x0d,0xe5,0x01,0x2b,0x02,0x1a,0x13,0x02,0x09,0x06,0x0c,0x08,0xe5,0xe5,0x05,
- 0x02,0xe5,0x07,0x06,0x01,0xe5,0x09,0x0f,0x01,0xe5,0x0f,0x09,0x03,0x03,0x01,0x1b,
- 0xe5,0xe5,0x2a,0x12,0x2f,0xe5,0x08,0x09,0x0b,0x16,0x06,0x16,0x12,0x06,0x03,0x08,
- 0x1c,0x01,0x2b,0x1e,0x03,0x0e,0xe5,0x07,0x0a,0x03,0x04,0x0c,0x04,0x03,0xe5,0x07,
- 0x6a,0xe5,0x01,0x59,0x06,0x03,0x1c,0x0b,0x0b,0x18,0x0d,0x13,0x2b,0x06,0xe7,0x14,
- 0x0a,0x09,0x2c,0x15,0x64,0x34,0x01,0xe5,0x13,0x16,0x09,0x01,0x17,0x0b,0x01,0x09,
- 0x01,0x01,0x2a,0x0e,0x01,0x04,0x02,0x01,0x09,0x07,0x01,0x02,0x04,0x01,0x07,0xe6,
- 0x01,0xe5,0x02,0xe7,0x05,0x01,0x13,0x05,0xe7,0x2d,0x06,0x02,0x0a,0x0c,0x0f,0x06,
- 0x01,0x0d,0x0e,0x1e,0x01,0x07,0x02,0x07,0x09,0xe5,0x08,0x08,0x08,0x0a,0x01,0x19,
- 0x01,0x54,0xe5,0x26,0x03,0x01,0x12,0x10,0x02,0x13,0x0e,0x06,0x08,0x23,0x04,0x01,
- 0x01,0x10,0x13,0xe5,0x02,0x04,0x09,0x09,0x09,0x02,0x06,0x15,0x09,0x01,0x02,0x02,
- 0x07,0x05,0x11,0x06,0x01,0x0a,0x13,0x0d,0x02,0x30,0xe6,0x01,0x0f,0x34,0x23,0x11,
- 0xe5,0x28,0x30,0x0b,0x1b,0x07,0xe5,0x26,0x12,0x11,0xe5,0x26,0x25,0xe6,0xe5,0x0b,
- 0x05,0x03,0x01,0x4d,0x02,0xe5,0x10,0x5a,0x14,0xe6,0x18,0x2d,0x10,0x13,0x17,0x01,
- 0x33,0x33,0x01,0x04,0x02,0x01,0x09,0x08,0x02,0xe6,0xe6,0x03,0x04,0x02,0x01,0x04,
- 0x04,0x07,0x01,0x0a,0x06,0x01,0x07,0x01,0x0a,0x08,0x15,0x0d,0xe7,0x19,0x04,0x13,
- 0x21,0x01,0x11,0x09,0x07,0xe6,0x09,0x03,0x05,0xe5,0x01,0x10,0x06,0x02,0x0b,0x05,
- 0x01,0x1d,0x06,0x1b,0x01,0xe6,0x24,0x2f,0x13,0x08,0x13,0x0c,0x14,0x07,0x30,0x01,
- 0x02,0x21,0x01,0xe6,0x1f,0x1f,0xe5,0x25,0xe5,0x0e,0x0a,0x03,0x09,0x06,0x02,0xe5,
- 0x11,0xe5,0x07,0xe5,0x04,0x06,0xe5,0x03,0x0b,0x27,0xe7,0xe6,0x01,0x01,0x2d,0x01,
- 0x0e,0x20,0x01,0x01,0x12,0x0b,0xe5,0x02,0x0b,0x01,0xe5,0x0f,0xe5,0xe6,0x01,0xe5,
- 0x03,0xe5,0x01,0x07,0x03,0xe5,0x0b,0x09,0x14,0xe5,0x08,0x01,0x04,0x01,0x04,0x40,
- 0xe5,0x01,0x01,0x1d,0x01,0x0f,0x04,0x01,0xe5,0x09,0xe5,0xe5,0xe5,0x06,0x03,0xe5,
- 0x0a,0xe5,0x0c,0x07,0x10,0x01,0xe5,0x05,0xe5,0x02,0x0e,0x01,0x02,0x09,0x05,0x01,
- 0xe5,0x01,0x43,0x02,0x01,0x2f,0x06,0x0b,0x02,0x01,0x07,0x10,0x0c,0x0b,0x0e,0x02,
- 0x06,0xe5,0x11,0x02,0x01,0x0b,0x02,0x02,0xe5,0x46,0x0d,0x13,0x19,0x02,0x02,0x05,
- 0xe5,0x09,0x09,0x01,0x05,0x03,0x09,0x06,0xe5,0x10,0x06,0x03,0x09,0x08,0x03,0x02,
- 0xe5,0x01,0x08,0xe5,0xe5,0x01,0x4a,0x05,0x03,0x01,0x02,0x0e,0x04,0x0e,0x07,0x03,
- 0x03,0xe5,0x03,0x05,0x03,0x05,0x01,0x01,0x05,0x03,0x04,0xe5,0x02,0x03,0x03,0x01,
- 0x01,0x02,0x0a,0x04,0x01,0xe7,0x04,0x01,0xe5,0x0b,0x02,0x01,0x01,0x04,0x03,0xe8,
- 0x42,0x04,0x01,0x09,0x13,0x05,0x1e,0xe7,0xe5,0x03,0x01,0xe5,0x08,0x01,0x0f,0x03,
- 0x07,0x0e,0x01,0x01,0x05,0x06,0x13,0x0d,0x03,0xe5,0x48,0x01,0x07,0x3a,0x02,0x01,
- 0x04,0x02,0x09,0x01,0x11,0x0b,0x0d,0xe5,0x01,0x01,0x1b,0x01,0x0e,0xe8,0x08,0x02,
- 0x6a,0xe5,0x07,0x0d,0x07,0xe6,0x10,0x02,0x06,0x09,0x1d,0x02,0x06,0x1e,0xe5,0xe6,
- 0x09,0xe5,0x75,0xe6,0x12,0x09,0x09,0x0b,0x07,0x01,0x11,0x09,0x06,0x04,0x11,0x09,
- 0x02,0xe6,0x0d,0x09,0x09,0x09,0x09,0x09,0x09,0x02,0x06,0x09,0x09,0x02,0x03,0x02,
- 0x09,0x0b,0x09,0x03,0x02,0x02,0x03,0xe5,0xe5,0x01,0x05,0x03,0x06,0x02,0x03,0x05,
- 0x02,0x01,0x01,0x02,0x03,0x02,0x02,0x05,0x03,0x04,0x01,0x02,0x06,0x02,0x03,0x09,
- 0x02,0x01,0x02,0x6a,0x02,0x1f,0x08,0x0a,0x10,0x02,0x13,0x08,0xe5,0x1b,0xe5,0x0d,
- 0x02,0x03,0x6e,0x1e,0x14,0x12,0x13,0x0b,0x1d,0x13,0x02,0x21,0x01,0x2e,0x02,0x11,
- 0x13,0x0a,0x0a,0x01,0x07,0x01,0x07,0x01,0x06,0x02,0x09,0x07,0x08,0xe5,0xe5,0x06,
- 0x01,0x06,0x0c,0x07,0x01,0x04,0x09,0xe8,0x20,0x01,0xe5,0x0c,0x22,0xe5,0x0f,0x02,
- 0x09,0x06,0x02,0x08,0x02,0x06,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x07,0xe5,
- 0x05,0x03,0x05,0x02,0x03,0x02,0x01,0xe5,0x05,0x01,0x01,0x02,0x02,0x01,0xe6,0xe5,
- 0x01,0xe5,0x01,0x06,0x01,0x01,0x05,0xe5,0x02,0x02,0xe5,0xe5,0x1f,0xe5,0xe5,0x30,
- 0x11,0x29,0x01,0x07,0x01,0x06,0xe5,0xe5,0x0d,0x02,0x01,0x06,0xe5,0x08,0x01,0x04,
- 0x02,0x01,0x13,0x09,0x03,0x0a,0x02,0xe5,0x14,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,
- 0x06,0xe6,0xe6,0x04,0xe5,0xe6,0xe5,0x02,0xe5,0xe6,0xe5,0x02,0xe5,0xe6,0x04,0xe5,
- 0xe5,0x05,0xe5,0xe6,0xe5,0x05,0xe5,0x04,0x02,0xe5,0xe5,0x04,0x01,0x01,0x05,0xe5,
- 0x07,0xe6,0x06,0xe6,0x06,0xe7,0x02,0x02,0x01,0xe5,0x7a,0x06,0x07,0x03,0x02,0x01,
- 0x03,0x03,0x01,0xe5,0x05,0x01,0xe5,0x02,0x04,0x04,0x04,0x07,0x09,0x01,0x05,0x01,
- 0x01,0x09,0x07,0x0b,0x0e,0x01,0x01,0x7b,0x08,0x01,0xe5,0x04,0x02,0xe5,0xe5,0x05,
- 0xe5,0xe6,0x02,0x01,0xe5,0xe5,0x02,0x02,0x02,0x03,0x02,0xe5,0x07,0xe5,0x08,0x01,
- 0x06,0xe5,0xe5,0x08,0x09,0x07,0x10,0xe5,0xe6,0x70,0x12,0x05,0x04,0xe5,0x01,0x04,
- 0xe6,0x01,0x03,0x01,0xe6,0xe6,0x03,0xe5,0x07,0xe5,0x01,0x05,0xe6,0x04,0x01,0x03,
- 0x05,0x15,0x0b,0x0e,0x01,0xe6,0x37,0x4e,0x02,0x02,0xe5,0x01,0x01,0x04,0x02,0x01,
- 0xe5,0x02,0x02,0x01,0xe5,0x01,0x06,0x02,0x03,0x04,0xe5,0x02,0x05,0x03,0x01,0xe5,
- 0x05,0x04,0x09,0x06,0x07,0x04,0x0b,0xe6,0xe5,0x66,0x13,0x02,0x07,0x14,0xe5,0xe5,
- 0x37,0xe5,0xe5,0x08,0x10,0x02,0x0d,0xe8,0x10,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x04,0x02,0x01,
- 0x07,0x01,0x01,0x02,0x02,0x01,0xe5,0x07,0x01,0xe5,0xe5,0x03,0x01,0x04,0x02,0x01,
- 0x07,0x01,0x01,0x05,0x01,0xe6,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x05,
- 0xe6,0xe5,0x04,0x01,0x01,0x05,0x01,0x02,0x08,0xe5,0xe5,0x1f,0x20,0x0d,0x0b,0x1b,
- 0x03,0x05,0x07,0xe5,0x01,0x13,0x05,0x0a,0x08,0xe6,0x0d,0x05,0x05,0x02,0x05,0x03,
- 0x0f,0xe5,0x01,0x0d,0xe8,0x09,0x12,0x1f,0x1d,0x08,0x04,0x04,0x05,0x09,0x08,0x16,
- 0x0f,0x25,0x2f,0xe5,0xe8,0x3e,0x0c,0x03,0xe5,0x34,0x0d,0x0f,0x05,0x06,0x03,0xe6,
- 0xe5,0x0b,0x12,0x0d,0x1b,0xe5,0x02,0xe5,0x11,0xe5,0x0b,0x01,0x2f,0xe6,0x1a,0x0c,
- 0x12,0x01,0x01,0x02,0x02,0x09,0x0d,0x07,0x01,0x02,0x09,0x02,0x01,0x04,0x08,0x05,
- 0x07,0xe6,0x08,0x05,0x07,0x02,0x01,0x2f,0x01,0x34,0x0c,0x06,0x08,0x01,0xe5,0x0c,
- 0x08,0x09,0x0c,0x14,0x05,0x0f,0x01,0x08,0x01,0x0d,0x09,0x01,0x03,0x2f,0x23,0x15,
- 0x09,0x02,0x01,0x0c,0xe5,0x05,0x03,0xe6,0x0d,0x16,0x11,0x01,0x0a,0xe5,0x0b,0x0a,
- 0x03,0x05,0x0a,0xe5,0xe6,0x0f,0x02,0x08,0x13,0x31,0x04,0x02,0x0d,0x05,0x05,0xe5,
- 0x0d,0x06,0x02,0x13,0xe5,0x07,0x13,0x06,0x01,0x02,0x0d,0x08,0xe5,0x05,0x0b,0x02,
- 0x0a,0xe5,0x2d,0x2c,0x02,0x09,0x18,0xe5,0x08,0x02,0x0d,0x22,0x08,0x30,0x01,0x01,
- 0x1d,0x04,0x04,0x35,0x01,0x0b,0x08,0x03,0x08,0x02,0xe5,0x04,0xe6,0x01,0x04,0xe5,
- 0x02,0xe7,0x01,0x03,0xe5,0x07,0xe7,0x03,0x01,0x09,0x44,0xe5,0xe5,0x21,0x48,0x19,
- 0x17,0x07,0x0b,0x0e,0x41,0x03,0xe5,0x01,0x02,0x6b,0x05,0x0d,0x04,0x01,0x04,0x09,
- 0x09,0x0e,0x0a,0x23,0x17,0x11,0x6c,0x01,0x04,0x1a,0x1d,0x04,0x1a,0x39,0xe6,0xe5,
- 0x04,0x6d,0x12,0x25,0x02,0x01,0x0d,0x2a,0x1c,0x01,0xe7,0x07,0x01,0x05,0x01,0xe5,
- 0x04,0xe5,0xe5,0xe5,0x03,0xe5,0xe5,0xe5,0x02,0xe5,0x44,0x10,0x02,0x18,0xe5,0x03,
- 0xe5,0xe6,0x04,0xe5,0x01,0xe5,0x03,0xe5,0x0b,0x01,0x11,0xe5,0x05,0x01,0x01,0x04,
- 0xe5,0x08,0x09,0x01,0xe6,0xe5,0x01,0x01,0x04,0xe5,0x11,0xe5,0x04,0x02,0xe5,0x4b,
- 0x02,0x01,0xe5,0x03,0x06,0xe5,0x07,0x09,0x06,0xe5,0xe5,0x01,0x06,0xe5,0x07,0x09,
- 0x05,0xe5,0x01,0x1a,0xe5,0x16,0x01,0x02,0x01,0xe6,0x03,0x16,0x13,0x15,0xe5,0x01,
- 0x01,0x25,0x06,0x01,0x02,0x0b,0x1d,0x02,0x06,0x01,0x07,0x01,0x02,0xe5,0x02,0x04,
- 0xe5,0x02,0x04,0x01,0x18,0x11,0x04,0xe6,0xe5,0x01,0x43,0xe5,0xe5,0xe5,0x21,0xe5,
- 0xe5,0x13,0xe5,0x08,0x09,0x06,0xe5,0x0a,0x06,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x25,
- 0x06,0x04,0xe6,0x11,0x09,0x09,0x3b,0x04,0x08,0xe5,0xe5,0x0c,0x02,0x04,0x09,0x03,
- 0x02,0xe5,0x0e,0x02,0x02,0x05,0xe5,0x05,0x02,0x06,0x02,0x06,0x02,0xe5,0xe5,0x02,
- 0x02,0x05,0x09,0x0c,0x07,0x02,0xe6,0x01,0x4a,0x1b,0x01,0x02,0xe7,0xe5,0x06,0x03,
- 0x02,0x01,0x02,0x03,0x01,0x02,0x04,0x02,0x01,0x04,0x02,0x01,0xe5,0x02,0x02,0x01,
- 0xe5,0x02,0x03,0xe6,0x02,0x02,0x01,0xe5,0x02,0x02,0x01,0xe5,0x02,0x02,0x01,0xe5,
- 0xe5,0xe5,0x01,0x01,0x1f,0x02,0x02,0x01,0xe7,0x12,0x09,0x06,0x0a,0x18,0x01,0x15,
- 0x02,0x01,0xe5,0x08,0x0b,0x0b,0x09,0x07,0x0b,0x09,0x05,0x03,0x09,0x09,0x07,0x01,
- 0x0e,0x01,0x04,0x02,0x01,0x10,0xe5,0x01,0xe5,0x10,0xe8,0x04,0xe5,0xe6,0x05,0x22,
- 0x01,0x16,0x01,0x04,0x07,0x04,0x10,0x27,0x29,0x0b,0xe5,0xe5,0x06,0x01,0x15,0xe6,
- 0x08,0x02,0x03,0x09,0x04,0x04,0x3b,0x04,0x07,0x02,0x10,0x02,0x08,0xe5,0x07,0x02,
- 0x06,0x02,0x06,0x02,0x06,0xe5,0x07,0xe5,0x11,0xe5,0x0e,0x02,0x01,0x04,0x04,0x07,
- 0x02,0x06,0xe5,0x02,0x0a,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x39,0xe5,0x0b,0x06,0x2c,
- 0x09,0x13,0xe5,0x1b,0x05,0xe5,0x01,0xe6,0x02,0xe5,0x0b,0x09,0x01,0x01,0xe6,0x06,
- 0x05,0xe5,0x07,0xe5,0x07,0xe6,0x06,0x09,0x09,0x09,0x09,0x09,0xe6,0x06,0x02,0xe5,
- 0x01,0x02,0x09,0x04,0x01,0x04,0x09,0x09,0x02,0x02,0x03,0x04,0xe6,0x01,0x06,0x02,
- 0x09,0x02,0x06,0x02,0x01,0x01,0x02,0x03,0x05,0xe5,0x07,0xe6,0x06,0x05,0x07,0x02,
- 0x01,0x02,0x6c,0xe5,0x08,0x15,0x09,0x09,0x12,0x0a,0x09,0x27,0x0e,0x05,0xe5,0x10,
- 0x09,0x53,0x08,0x14,0x09,0x09,0x1d,0x09,0x1b,0x0d,0x12,0xe8,0x0f,0x01,0x07,0xe6,
- 0x06,0x01,0x39,0x01,0x10,0x02,0x03,0xe5,0x09,0x0a,0x08,0xe5,0x08,0x09,0x01,0x07,
- 0x09,0x09,0x13,0x01,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x16,0x01,0x11,0x09,0x09,0x3b,
- 0x08,0x06,0x03,0x01,0x05,0xe5,0x0a,0x08,0xe5,0x07,0xe5,0x07,0xe5,0x05,0x01,0xe5,
- 0x07,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x09,0x05,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,
- 0x01,0x09,0x02,0xe9,0x19,0x47,0x02,0x0c,0x09,0x15,0x09,0x04,0x04,0x06,0xe5,0xe5,
- 0x1c,0x09,0x03,0x0d,0x01,0x09,0x03,0x0b,0xe5,0xe5,0x12,0xe7,0x05,0xe7,0x05,0xe7,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x05,0x01,0xe5,0x07,0xe6,0x06,
- 0xe6,0x04,0xe7,0xe5,0x06,0xe7,0x04,0xe8,0x04,0xe8,0x05,0xe7,0xe5,0x02,0xe7,0x05,
- 0x01,0xe5,0x05,0x01,0xe6,0x04,0xe8,0x06,0xe5,0x05,0xe5,0xe6,0xe5,0x02,0xe5,0xe5,
- 0x01,0x05,0xe5,0x06,0x01,0x01,0x1a,0x45,0x06,0x01,0x09,0x0e,0x01,0x09,0x01,0x06,
- 0x02,0x03,0x03,0x01,0x07,0x01,0xe5,0xe6,0x04,0x02,0x03,0x02,0x02,0x03,0x09,0xe5,
- 0xe5,0x09,0x01,0x0a,0xe5,0x06,0x0c,0x02,0x02,0x13,0x02,0x06,0x02,0x06,0x02,0x35,
- 0x02,0x03,0x01,0x09,0x02,0x0a,0x02,0x01,0x08,0xe5,0x07,0xe5,0x02,0x02,0x01,0xe5,
- 0x07,0xe6,0xe6,0x02,0xe7,0x06,0xe6,0x06,0x09,0xe5,0x09,0x01,0x03,0x02,0x06,0x02,
- 0x02,0x02,0x04,0xe5,0x03,0xe5,0xe5,0xe5,0x10,0x02,0xe5,0x03,0xe5,0x01,0xe5,0x04,
- 0x02,0xe5,0x36,0x03,0x0d,0x0f,0x03,0x07,0x08,0xe5,0x08,0x09,0x03,0x03,0x01,0x09,
- 0x09,0x09,0x03,0x01,0x09,0x02,0xe6,0x03,0x02,0xe6,0x01,0x07,0x06,0xe6,0xe5,0x12,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x37,0x01,0x0d,0x0a,0x02,0x01,0x09,0x09,
- 0xe5,0x04,0x02,0x06,0x02,0xe5,0x01,0x01,0xe5,0x02,0x08,0xe5,0x0e,0x02,0x03,0x0f,
- 0x09,0x05,0x08,0x03,0x01,0xe5,0x01,0x6b,0x05,0x09,0x02,0x01,0x10,0xe5,0xe5,0x05,
- 0xe5,0xe5,0x05,0xe5,0xe5,0xe5,0x11,0x05,0xe5,0xe6,0x04,0xe5,0xe5,0x05,0x02,0x03,
- 0xe5,0x26,0x02,0x11,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0x01,0x05,0x01,0x06,0xe5,
- 0xe5,0x06,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0xe6,0x06,0x01,
- 0xe5,0x02,0x04,0x01,0x03,0x03,0x01,0x02,0x01,0x02,0x01,0xe5,0x02,0x02,0x01,0x07,
- 0x01,0xe5,0x05,0x01,0x03,0x03,0x01,0x03,0x03,0x01,0x04,0x02,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x0a,0x01,0x01,0x0b,0xe5,0x02,0x04,0x03,0xe5,0x07,0xe5,0x29,0x0f,
- 0xe5,0x03,0x0c,0x02,0x05,0xe5,0x36,0x03,0x06,0x17,0x04,0x06,0x01,0x07,0x14,0x03,
- 0xe5,0x01,0xe5,0x03,0x08,0x13,0x0f,0x09,0x0a,0x16,0x07,0x09,0x08,0x0a,0x0b,0x04,
- 0xe6,0xe5,0x08,0x09,0x19,0xe5,0x01,0x0a,0x0c,0x05,0x05,0x04,0x03,0x0a,0x01,0x01,
- 0x02,0x13,0x02,0xe5,0xe5,0x07,0x3b,0x19,0x01,0x09,0x05,0x0d,0x05,0x02,0x07,0x01,
- 0xe5,0x06,0x12,0x09,0x1a,0x04,0x0a,0x09,0xe9,0x18,0x45,0x06,0x01,0xe5,0x05,0x02,
- 0x06,0x04,0xe5,0x03,0xe6,0x04,0x01,0x02,0x07,0x06,0x02,0x0b,0x04,0x04,0xe5,0x02,
- 0x02,0x01,0x04,0x02,0x06,0x07,0x02,0x0b,0x01,0x07,0x01,0x0c,0x02,0xe5,0xe5,0x0a,
- 0x1c,0x3a,0x01,0x02,0x01,0x09,0x04,0x04,0x02,0x01,0x01,0x07,0x03,0x0c,0x05,0x03,
- 0x06,0x15,0x0a,0x1c,0x01,0x07,0x0e,0xe6,0xe6,0x21,0x0d,0x3c,0xe5,0x02,0x03,0x0d,
- 0x03,0x09,0x02,0x05,0xe5,0xe5,0x02,0x07,0x09,0x03,0x05,0x01,0x01,0x01,0x02,0x02,
- 0x06,0x0a,0x05,0x07,0x09,0x04,0x0c,0xe7,0x11,0x02,0x05,0xe5,0x1d,0x0d,0x04,0x09,
- 0x09,0x09,0x07,0x10,0x01,0x04,0x05,0x08,0x10,0x16,0xe6,0x0a,0x08,0x06,0xe5,0x07,
- 0x05,0x03,0x11,0xe7,0x23,0x26,0x18,0x09,0x05,0x03,0x0d,0x0f,0x06,0x02,0x02,0x1c,
- 0x11,0xe5,0x0e,0x04,0x04,0x04,0x02,0x10,0xe5,0xe6,0x09,0x05,0x09,0x09,0x02,0x53,
- 0x01,0x07,0x01,0xe5,0x01,0x03,0x01,0xe6,0x03,0x10,0x08,0x06,0xe5,0x0d,0x0e,0x0b,
- 0x05,0x03,0x09,0x0d,0xe5,0x01,0x46,0x39,0x04,0x04,0x08,0x22,0x02,0x01,0x01,0x1b,
- 0x0b,0x21,0xe5,0xe5,0x08,0x05,0x01,0x07,0x01,0x09,0x0d,0x3a,0x05,0x03,0x01,0x0c,
- 0xe6,0x08,0x09,0x04,0x01,0x09,0x31,0xe5,0xe6,0x09,0x03,0x04,0x05,0x07,0x02,0xe5,
- 0x0f,0xe5,0x0d,0x02,0x27,0x2d,0x08,0x0a,0x03,0x01,0x01,0x03,0x03,0x03,0x08,0x12,
- 0x04,0x19,0x06,0x09,0x06,0x10,0xe6,0xe6,0x0b,0xe5,0x08,0x03,0x06,0x02,0x02,0x21,
- 0x16,0x0b,0x14,0x0b,0x02,0x05,0x02,0xe6,0x33,0x11,0x04,0x03,0x02,0x02,0x13,0x01,
- 0x01,0x01,0x01,0x5d,0xe5,0x06,0x10,0x02,0xe5,0x05,0x01,0x0b,0x09,0x09,0xe5,0x11,
- 0xe5,0x04,0x02,0xe5,0x12,0x02,0xe5,0x03,0xe5,0x1d,0xe5,0x01,0x01,0x02,0x03,0x1f,
- 0x33,0x01,0x04,0x05,0xe5,0x02,0x10,0xe5,0x11,0x04,0x04,0x04,0x01,0x01,0x01,0xe5,
- 0x07,0xe5,0x07,0xe6,0x05,0xe6,0xe5,0x05,0xe5,0x0a,0x23,0x01,0x01,0x02,0xe5,0xe6,
- 0x03,0x01,0x02,0xe5,0x01,0x06,0x01,0x02,0x04,0x01,0xe5,0x23,0x01,0x05,0x1a,0x07,
- 0x09,0x04,0x05,0x05,0x0b,0x01,0xe5,0xe5,0x08,0x01,0x07,0x09,0x07,0x01,0x09,0x15,
- 0x02,0xe5,0x02,0x04,0xe5,0x0a,0x01,0x05,0x02,0xe5,0xe5,0x05,0xe5,0x01,0x09,0x2e,
- 0x20,0x06,0x02,0x0b,0x13,0x06,0x02,0x01,0x09,0x09,0x09,0x07,0x01,0x09,0x0d,0xe5,
- 0x11,0xe5,0x0f,0x02,0x01,0xe7,0xe5,0x0c,0x02,0x02,0x03,0x03,0x01,0x03,0x05,0x1c,
- 0x1a,0x06,0x05,0xe6,0xe5,0x06,0x08,0x02,0x01,0x07,0x06,0xe6,0x05,0x02,0x02,0x09,
- 0x09,0x13,0x0c,0x06,0xe5,0x02,0x01,0x03,0x02,0x02,0x11,0xe9,0x03,0x0a,0x05,0xe5,
- 0x01,0x06,0x02,0x03,0xe6,0x21,0x19,0x03,0x03,0x01,0x01,0x09,0x01,0x03,0x03,0x01,
- 0x01,0x09,0x04,0x04,0x04,0x02,0x01,0x07,0x01,0x07,0x01,0x09,0x07,0x01,0x12,0x05,
- 0x03,0x05,0x0b,0x02,0x02,0xe5,0xe6,0x0e,0x05,0x0b,0x27,0x17,0x07,0x07,0x05,0xe5,
- 0x01,0x0b,0x01,0x07,0x06,0xe5,0xe5,0xe5,0x03,0xe5,0x02,0x04,0x04,0x04,0x01,0x02,
- 0x04,0x0e,0x0c,0x04,0x01,0x05,0x01,0x01,0x05,0x03,0x08,0x04,0xe6,0x01,0xe5,0x0b,
- 0x02,0x06,0x02,0x06,0x02,0x24,0x18,0xe6,0x01,0x05,0xe5,0x01,0x04,0x06,0x09,0x01,
- 0x0e,0xe7,0xe5,0x03,0xe6,0x01,0x05,0x03,0x04,0x04,0x05,0x0d,0x0b,0xe5,0xe5,0x01,
- 0x02,0x03,0x01,0xe5,0x01,0x1a,0xe5,0x08,0x02,0x03,0x02,0xe5,0x04,0x09,0x02,0x1d,
- 0x1a,0x2c,0x27,0xe6,0x10,0x02,0x06,0x02,0x03,0x04,0x04,0x02,0xe5,0x04,0x0c,0x02,
- 0x07,0xe5,0x01,0x14,0x13,0x01,0x1b,0xe6,0x16,0xe5,0x12,0x18,0x01,0x11,0x27,0x0f,
- 0xe5,0x1c,0x02,0x06,0x02,0xe6,0xe6,0x0a,0x02,0xe5,0x01,0x02,0x02,0xe5,0xe5,0x02,
- 0x02,0xe5,0x01,0x05,0x09,0x09,0x09,0x09,0x09,0xe6,0x06,0x06,0x02,0x09,0x06,0x04,
- 0x03,0x02,0x02,0x09,0x03,0x05,0x09,0x02,0x06,0x09,0x03,0x05,0x09,0xe5,0x04,0x02,
- 0xe5,0xe5,0x02,0x02,0xe5,0xe5,0x05,0x05,0x07,0x03,0xe5,0x01,0x06,0x02,0x06,0x09,
- 0x2a,0x24,0x02,0x12,0xe5,0x07,0x02,0x4c,0x0b,0xe5,0x08,0x0e,0x02,0x03,0x0b,0x39,
- 0x28,0x14,0x0b,0x4b,0x0b,0x09,0x16,0xe6,0x0c,0x02,0x09,0x09,0x19,0xe5,0xe5,0x06,
- 0x01,0x14,0xe6,0x0a,0x04,0x02,0x03,0x0b,0xe5,0xe5,0x2d,0x1e,0x01,0xe7,0xe5,0x04,
- 0x09,0x15,0x01,0x02,0xe5,0x0e,0x2f,0x01,0xe5,0x05,0x03,0x13,0x0f,0x03,0x01,0x02,
- 0x03,0x05,0x02,0x01,0xe5,0x05,0x02,0x0a,0x04,0x03,0x05,0x03,0x09,0x05,0x03,0x09,
- 0x06,0x01,0xe6,0x04,0x0b,0x07,0x01,0x01,0x01,0x0d,0xe5,0x0c,0x09,0x01,0x2c,0x02,
- 0x01,0x0e,0x18,0x0d,0x05,0x01,0x06,0x07,0x12,0x03,0x01,0x11,0x01,0x07,0x01,0x07,
- 0x01,0xe5,0x1b,0x0e,0x01,0x01,0x15,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe6,0x06,0xe5,0x07,0xe5,0x02,0x04,0xe5,0x07,0xe6,0x06,0xe5,0x06,0xe6,0xe6,
- 0xe5,0x03,0x01,0xe5,0x04,0xe5,0xe5,0x06,0xe6,0x05,0xe8,0xe5,0x02,0xe7,0x05,0xe8,
- 0xe5,0x02,0x01,0xe6,0xe5,0x02,0xe8,0xe5,0x02,0x01,0xe6,0x06,0xe5,0x01,0x05,0xe5,
- 0x01,0x04,0xe6,0x07,0x02,0x23,0x1b,0x01,0x1e,0xe5,0x07,0x10,0x01,0x04,0x04,0x01,
- 0xe5,0x07,0xe5,0x0f,0x01,0xe6,0xe5,0x05,0xe5,0xe5,0x02,0x01,0xe6,0xe5,0x08,0x09,
- 0xe5,0x04,0xe5,0x04,0x02,0xe5,0x04,0x12,0x07,0x02,0xe5,0x0e,0x13,0x1b,0x01,0x34,
- 0x04,0x01,0x06,0x01,0xe5,0xe6,0x02,0x01,0x03,0x02,0x02,0x05,0x03,0xe5,0xe5,0x03,
- 0x01,0x07,0x01,0xe5,0xe5,0x03,0x01,0x13,0x06,0x01,0x01,0x0b,0x07,0x01,0x02,0x01,
- 0x02,0xe5,0x03,0xe9,0x08,0x0f,0x09,0x46,0x10,0x01,0x06,0x04,0x05,0xe5,0x01,0x04,
- 0xe6,0x01,0x04,0xe5,0xe5,0xe5,0x04,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,
- 0x01,0x01,0x05,0x21,0x07,0x06,0x03,0x21,0x2c,0x13,0x07,0x10,0x01,0x09,0x01,0xe5,
- 0x01,0xe5,0x04,0x02,0x05,0x03,0x01,0xe6,0xe6,0x01,0xe8,0xe6,0x02,0xe7,0xe6,0x01,
- 0xe8,0xe5,0x04,0x01,0x01,0x03,0x01,0xe5,0x04,0xe5,0x05,0x12,0x04,0x03,0x03,0x05,
- 0x0d,0x01,0xe5,0x05,0x01,0xe5,0x05,0x02,0x24,0x04,0x22,0x14,0x0c,0xe5,0x05,0xe5,
- 0xe5,0x05,0x0c,0x06,0x01,0xe5,0x0f,0x07,0x0b,0x09,0x16,0x03,0x01,0x01,0x0e,0x02,
- 0x01,0x02,0x01,0x02,0x01,0x03,0x03,0x01,0x07,0x01,0x01,0x05,0x01,0x02,0x04,0x01,
- 0x07,0x01,0x07,0x01,0xe5,0x05,0x01,0x01,0x05,0x01,0x03,0x03,0x01,0x01,0x05,0x01,
- 0xe5,0x06,0xe5,0xe5,0xe5,0x04,0x01,0x04,0x02,0x01,0x07,0x01,0x07,0x01,0x04,0x02,
- 0x01,0xe5,0x05,0x01,0x01,0x02,0x02,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0xe6,0x04,
- 0x01,0xe6,0x04,0x01,0x0a,0x03,0x13,0x0c,0xe5,0x27,0x02,0x11,0xe5,0x08,0x2b,0x0a,
- 0xe5,0x02,0x04,0x02,0xe5,0x04,0x09,0x05,0x04,0xe5,0x0c,0xe6,0x05,0x09,0x04,0x14,
- 0x02,0xe6,0x09,0x09,0x30,0x15,0x01,0x09,0x06,0x0a,0x08,0x07,0x04,0x09,0x06,0x02,
- 0x06,0x09,0x02,0x06,0x02,0x06,0x02,0x0b,0xe5,0xe5,0x1f,0x08,0xe5,0x02,0x02,0x19,
- 0x42,0x0b,0x02,0x09,0x07,0x09,0x02,0x08,0x09,0x09,0x09,0x0f,0x0f,0x11,0x20,0x01,
- 0xe6,0x15,0x01,0x07,0xe5,0x04,0x06,0x19,0x01,0x0b,0x1d,0x05,0x01,0x04,0x04,0x01,
- 0x07,0x0b,0xe5,0x05,0xe5,0xe5,0x08,0x06,0x01,0xe5,0x02,0x05,0x10,0xe6,0x06,0x01,
- 0x07,0x01,0x04,0x15,0xe6,0x0b,0x0a,0x02,0x18,0x18,0x18,0x0a,0x07,0xe5,0xe5,0x01,
- 0x01,0x02,0x01,0x05,0x01,0x01,0x03,0x07,0x10,0x08,0x04,0x01,0x0e,0x0b,0x06,0x05,
- 0x09,0x04,0x08,0x0a,0x01,0xe6,0x2b,0x03,0x05,0x11,0x06,0x18,0xe5,0x07,0x0d,0x03,
- 0x11,0x06,0x0c,0x0a,0x08,0x09,0x09,0x0d,0x09,0x0b,0x02,0x0b,0x03,0x2b,0x01,0x2a,
- 0x0d,0xe5,0xe5,0x09,0x09,0x06,0x0e,0x0d,0x11,0x07,0x13,0x0c,0x06,0x05,0x1c,0x02,
- 0x0b,0x22,0x09,0x14,0x1c,0x02,0xe5,0x04,0x02,0x0a,0x01,0xe5,0x19,0x13,0x27,0x03,
- 0x05,0x11,0x05,0x07,0x03,0x09,0x01,0x11,0x3d,0x1c,0x0d,0x03,0x02,0x02,0xe6,0x04,
- 0x02,0xe6,0x06,0xe5,0x02,0x01,0x0c,0xe5,0x02,0x02,0x01,0xe5,0x03,0x03,0xe5,0xe6,
- 0x1e,0x01,0x12,0x03,0x02,0xe5,0x18,0x44,0x17,0x08,0x01,0xe5,0x09,0xe5,0x02,0x06,
- 0x07,0xe5,0x11,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x1d,0x0f,0x03,0xe6,0xe5,0x11,0x0d,
- 0x0c,0x0a,0x12,0x28,0xe5,0x06,0x03,0xe5,0x08,0xe5,0x08,0x05,0x15,0x02,0x22,0xe5,
- 0x02,0x09,0x0f,0x0d,0xe6,0xe5,0x27,0x02,0x01,0x2c,0x0c,0x01,0x02,0x01,0x0a,0x01,
- 0xe6,0x01,0x0a,0x11,0x02,0xe5,0x0a,0x03,0x01,0xe5,0x23,0x22,0x08,0x03,0xe5,0x04,
- 0x25,0x1d,0x0f,0x07,0x09,0x1a,0x14,0x01,0x01,0x11,0x25,0xe5,0x04,0x27,0x02,0xe7,
- 0x0e,0xe5,0x07,0x09,0x1c,0x01,0x15,0x01,0xe5,0x02,0xe5,0x06,0x1b,0x04,0xe7,0x05,
- 0x01,0xe5,0x05,0x05,0x03,0x02,0x01,0x0e,0x09,0x02,0x01,0x04,0x08,0xe5,0x01,0xe5,
- 0x04,0xe5,0x07,0x05,0x0e,0xe7,0x01,0x02,0x01,0x05,0x01,0x04,0x02,0x01,0x04,0x02,
- 0x01,0x04,0x23,0x09,0xe5,0x03,0xe5,0x01,0x03,0x05,0x0f,0xe5,0x07,0xe5,0x03,0xe5,
- 0x01,0x15,0xe5,0x01,0x02,0x03,0xe5,0xe5,0x0b,0x09,0x02,0xe5,0x04,0x0a,0x01,0xe5,
- 0x01,0xe5,0x01,0xe5,0xe5,0xe5,0x03,0x05,0x0b,0x01,0x03,0x02,0x04,0x26,0x29,0x07,
- 0x06,0x01,0x07,0xe5,0xe5,0x08,0x01,0x0b,0x07,0x01,0x01,0x05,0x01,0x01,0x05,0x0c,
- 0x20,0xe5,0x03,0x09,0x11,0x0b,0x05,0x02,0x02,0x24,0xe5,0x01,0x1d,0x09,0x09,0x09,
- 0x06,0xe5,0x06,0xe5,0x01,0x01,0x08,0xe5,0x04,0xe5,0x01,0x01,0x04,0xe5,0xe5,0xe5,
- 0x06,0x09,0xe5,0xe5,0x23,0x09,0x13,0x0d,0x04,0x01,0x12,0x09,0x09,0x07,0x02,0x02,
- 0xe5,0x17,0xe5,0x01,0x02,0x06,0xe5,0x03,0x07,0x03,0x01,0xe5,0xe5,0x01,0x01,0x01,
- 0x05,0x08,0x02,0x09,0x09,0x04,0x04,0x07,0x0b,0x09,0x09,0x07,0x08,0x02,0x03,0x05,
- 0x06,0x02,0x0b,0xe5,0xe6,0x01,0x28,0x02,0x08,0x04,0x01,0x0a,0x04,0x01,0x01,0xe5,
- 0x02,0x03,0xe6,0x02,0x08,0x08,0x01,0xe5,0x02,0x04,0x07,0x03,0x09,0x09,0x05,0x03,
- 0x05,0x02,0xe5,0xe5,0x01,0x21,0x05,0xe5,0x02,0x03,0xe5,0x0b,0x02,0x08,0x02,0x01,
- 0xe7,0x11,0xe5,0x06,0x08,0x0f,0x10,0x01,0x0c,0x05,0x01,0x03,0x02,0x01,0x02,0x04,
- 0x04,0x05,0x01,0x01,0x0b,0x04,0x01,0xe5,0xe5,0x06,0x01,0x02,0x04,0x18,0x0b,0x01,
- 0x07,0x01,0xe5,0x06,0x03,0x05,0x05,0x07,0x0d,0xe5,0x01,0xe5,0x10,0xe5,0xe5,0x05,
- 0xe5,0x08,0xe6,0x01,0x02,0x08,0x0d,0xe5,0x01,0x09,0x09,0x04,0x01,0x01,0xe5,0x01,
- 0x03,0xe6,0x01,0x07,0x01,0x01,0xe5,0xe5,0x03,0x03,0xe5,0xe5,0xe6,0xe5,0xe6,0x03,
- 0x01,0x01,0xe5,0x03,0x03,0xe5,0x03,0x02,0x0a,0xe5,0x07,0xe5,0xe5,0x05,0xe5,0xe5,
- 0x01,0x02,0x06,0x03,0xe5,0xe5,0x06,0xe6,0x03,0x0b,0x02,0xe6,0xe5,0x04,0x0a,0x04,
- 0x04,0x09,0x09,0x02,0x09,0x02,0x10,0xe5,0x0e,0x09,0x02,0x10,0x04,0x06,0x02,0xe5,
- 0x04,0x09,0x09,0x09,0x02,0x06,0x09,0x04,0x04,0x02,0x01,0x04,0x02,0x06,0x04,0x04,
- 0x14,0x02,0xe6,0xe5,0x0f,0xe5,0x07,0xe5,0x07,0xe5,0x0b,0xe6,0x03,0x02,0x13,0xe5,
- 0x0d,0xe5,0x0b,0x01,0x07,0xe5,0x03,0xe5,0x09,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,
- 0xe5,0x08,0x02,0x01,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x07,0x01,0x03,0xe5,0x07,
- 0xe5,0x12,0x03,0xe5,0xe6,0x0d,0xe5,0x07,0xe5,0x07,0xe6,0x01,0x01,0x02,0xe5,0x07,
- 0x03,0x05,0x09,0x09,0x09,0xe7,0xe5,0xe5,0x01,0xe5,0x01,0x05,0x09,0xe5,0x09,0xe5,
- 0x03,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x02,0x01,0x02,0x01,0x01,0x05,0xe5,0x07,0xe5,
- 0x07,0xe5,0x04,0x02,0xe5,0xe6,0x04,0xe5,0x07,0xe6,0x06,0x0d,0x03,0xe5,0x01,0x27,
- 0x3b,0x47,0x24,0x2f,0x02,0xe8,0x10,0x09,0x0b,0x3d,0x19,0x0b,0x09,0x09,0x09,0x03,
- 0x0f,0x09,0x09,0x13,0x21,0xe7,0x0f,0xe6,0x06,0xe6,0x06,0xe6,0x06,0x03,0x13,0x04,
- 0x14,0xe6,0x06,0x0d,0x04,0xe5,0xe5,0x04,0xe5,0xe8,0x03,0x01,0xe7,0xe5,0x03,0xe5,
- 0xe5,0xe5,0x04,0xe6,0x03,0x01,0xe5,0x08,0xe6,0x06,0xe6,0xe5,0x01,0x01,0xe7,0x06,
- 0x09,0xe6,0x06,0xe6,0xe5,0x12,0x02,0xe5,0x09,0x06,0x09,0x09,0x13,0x01,0x0a,0x04,
- 0x01,0x13,0x0c,0x05,0xe5,0x06,0xe6,0x06,0x01,0xe6,0x03,0xe5,0xe7,0x03,0x02,0xe6,
- 0x08,0x05,0x01,0x01,0x09,0x09,0x05,0x01,0xe6,0x06,0x0b,0x09,0x09,0x05,0xe5,0x02,
- 0x01,0xe9,0x0f,0x09,0x0b,0x0d,0x01,0x13,0x21,0x03,0x06,0x04,0x03,0x09,0x05,0x01,
- 0xe5,0x01,0x05,0x0d,0xe5,0x01,0x01,0x0d,0x07,0x01,0x09,0x03,0x19,0xe5,0x0a,0x0a,
- 0xe5,0x12,0xe7,0x05,0xe7,0x02,0x02,0xe7,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x02,0x02,0x01,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x03,0xe6,0x01,
- 0x06,0xe6,0xe5,0xe5,0x02,0xe6,0x02,0x03,0xe6,0x03,0x02,0xe6,0xe5,0xe5,0x02,0x01,
- 0xe5,0x02,0x02,0xe7,0x05,0x01,0xe5,0x02,0x02,0xe7,0x01,0x05,0xe5,0x02,0x02,0xe7,
- 0x02,0x02,0xe7,0x07,0xe7,0x02,0x05,0x24,0xe5,0x06,0x1d,0x14,0xe5,0x06,0xe5,0x07,
- 0x09,0x03,0x05,0x01,0x05,0x04,0x03,0xe5,0x02,0xe5,0x01,0x01,0x04,0x02,0x01,0x01,
- 0x01,0x06,0x03,0x05,0x03,0x06,0x01,0xe6,0x03,0x0d,0xe5,0x07,0xe5,0x04,0x01,0x0e,
- 0x03,0x13,0x02,0x06,0x02,0x06,0x02,0xe5,0xe5,0x1c,0x17,0x05,0x07,0x04,0x06,0x06,
- 0x01,0xe5,0xe5,0x03,0x01,0x06,0x02,0x02,0xe5,0x04,0x07,0x01,0xe5,0xe5,0x04,0xe5,
- 0x05,0x01,0xe5,0x07,0x01,0x01,0x03,0x01,0xe5,0x01,0x0d,0x02,0x06,0x02,0xe5,0xe5,
- 0x01,0x02,0x01,0xe5,0x03,0x04,0x11,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x0a,
- 0x01,0x01,0x11,0x01,0x13,0x03,0x03,0xe5,0x07,0x09,0x01,0x02,0xe5,0x06,0x01,0x01,
- 0x04,0xe5,0x02,0x03,0x01,0x02,0xe5,0x03,0xe5,0x02,0x03,0x01,0x01,0x01,0x04,0xe5,
- 0x01,0xe5,0x03,0xe5,0xe5,0xe5,0x04,0x02,0xe5,0x0e,0x02,0xe5,0x04,0x02,0xe5,0xe5,
- 0xe5,0x06,0x06,0xe6,0xe5,0x08,0x02,0x06,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe6,
- 0x08,0x01,0x2b,0x01,0x01,0x02,0x06,0x0b,0x05,0x09,0xe5,0x07,0x05,0x0e,0x02,0x01,
- 0x03,0xe5,0x07,0xe5,0x11,0x13,0x01,0xe5,0x05,0x01,0xe6,0xe5,0x02,0x04,0x03,0x02,
- 0xe8,0x0f,0x09,0x0a,0x04,0x01,0xe5,0x2d,0x09,0x03,0x06,0x01,0x01,0x02,0x05,0x0c,
- 0x0c,0x0b,0x02,0x01,0x04,0x02,0x24,0xe5,0xe5,0x19,0x02,0x0d,0x01,0x01,0x11,0x01,
- 0x02,0x04,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x04,0x02,0x01,0xe5,0x05,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x02,0x01,0x04,0x01,
- 0xe5,0x05,0xe6,0xe5,0x04,0x01,0x03,0x03,0x01,0x02,0xe5,0x02,0x01,0x06,0xe7,0x06,
- 0x01,0x07,0x01,0x03,0x03,0x01,0x02,0x04,0x01,0x07,0x01,0xe5,0x05,0x01,0x0a,0x01,
- 0x01,0x02,0x0c,0xe5,0x01,0x05,0xe5,0x07,0xe6,0x05,0x0c,0x20,0x04,0xe5,0x06,0xe7,
- 0x0b,0x04,0xe5,0x09,0xe5,0xe6,0x04,0xe5,0x08,0x06,0x01,0xe5,0x05,0x01,0xe5,0x01,
- 0x06,0xe5,0x01,0x05,0x0f,0x02,0xe5,0x07,0xe6,0xe5,0xe5,0x02,0xe5,0x01,0x03,0xe5,
- 0x01,0x0c,0x01,0xe7,0xe5,0x04,0x35,0x27,0x01,0x04,0xe5,0x0c,0x02,0x03,0x03,0x06,
- 0x03,0x03,0x04,0x03,0x03,0x02,0x08,0x08,0x01,0x03,0x04,0x06,0x05,0xe5,0x0a,0x0c,
- 0x1a,0xe5,0x02,0x01,0x0b,0x01,0x02,0x04,0x01,0x07,0x01,0x04,0x10,0x23,0x01,0x09,
- 0x0c,0x05,0x01,0x03,0x01,0x01,0x01,0x07,0x02,0x01,0x04,0x03,0x05,0x02,0xe5,0xe5,
- 0x05,0x02,0x22,0x01,0x07,0x01,0x02,0x04,0x01,0x18,0x03,0x28,0x02,0x01,0x17,0x0a,
- 0x06,0x02,0x09,0x02,0x01,0x01,0x05,0xe6,0x17,0x01,0x02,0x01,0x18,0x04,0xe5,0x1d,
- 0x07,0xe6,0x07,0x09,0x03,0x04,0x04,0x09,0x01,0x01,0x2c,0x01,0xe5,0x01,0x0a,0x27,
- 0x02,0x01,0x06,0x07,0x09,0x01,0xe5,0x07,0x01,0x02,0x03,0x1f,0x06,0x0b,0x1b,0x0b,
- 0x12,0x01,0x01,0x13,0x07,0x01,0x09,0x04,0xe5,0x02,0x01,0x02,0xe5,0x14,0x01,0x04,
- 0xe5,0x14,0x01,0xe5,0x07,0x06,0x01,0x04,0xe5,0x02,0x0c,0x09,0xe5,0x0b,0x05,0x13,
- 0x09,0x03,0x04,0x0b,0x08,0x03,0x01,0x03,0x0c,0xe6,0x1c,0x0d,0x09,0x01,0x0e,0x0c,
- 0x20,0x0f,0xe5,0x0d,0x15,0x13,0x11,0x14,0x0f,0xe5,0x0f,0x02,0x1c,0xe5,0x07,0x06,
- 0x02,0x1e,0x05,0x0b,0x0c,0x06,0x0c,0x0c,0x10,0x01,0x11,0x08,0x37,0x10,0x03,0x0d,
- 0xe5,0x07,0xe5,0x35,0x24,0x03,0x02,0xe5,0x03,0x02,0xe5,0xe6,0x01,0x02,0x01,0xe6,
- 0x02,0x03,0xe5,0x04,0x02,0xe6,0x03,0x02,0x09,0x09,0x07,0x02,0x01,0x11,0xe5,0x02,
- 0x04,0xe5,0x18,0x01,0xe6,0x05,0x09,0x09,0x3e,0x08,0x12,0x05,0x02,0xe5,0x04,0x01,
- 0x02,0x06,0x02,0x06,0x09,0x02,0x21,0x01,0x0f,0x07,0x09,0x17,0x02,0xe5,0x0d,0x09,
- 0x07,0x06,0x05,0x04,0x04,0x04,0x09,0x02,0x01,0x09,0x19,0x0a,0xe5,0xe5,0x01,0x01,
- 0x03,0x0c,0x06,0x06,0x05,0x04,0x12,0x14,0x09,0x01,0x01,0x09,0x08,0x01,0x0f,0x01,
- 0xe6,0x18,0x04,0x09,0x02,0xe5,0x08,0x11,0x01,0x04,0x0f,0x0b,0x10,0x0c,0x02,0x05,
- 0x01,0x08,0x05,0x02,0x01,0x08,0x05,0x02,0x0a,0x02,0x1e,0x05,0x02,0x11,0x01,0x01,
- 0x01,0xe5,0x2c,0x04,0x02,0xe5,0x1b,0x28,0x17,0xe5,0x11,0x12,0x10,0x1b,0x17,0x05,
- 0xe6,0xe7,0x0e,0x09,0x02,0xe5,0x04,0xe5,0x0d,0x24,0x01,0x04,0x01,0xe5,0x01,0x17,
- 0x0b,0x02,0xe5,0xe5,0x02,0x02,0xe5,0x05,0x01,0x01,0x04,0x02,0xe5,0x06,0xe5,0x01,
- 0xe5,0x0b,0x02,0x01,0x04,0x05,0x06,0x01,0x04,0x09,0xe5,0x12,0xe5,0xe8,0x01,0x01,
- 0x0b,0x09,0x03,0xe5,0x04,0x0f,0xe6,0x21,0xe5,0xe6,0x01,0x05,0x09,0xe5,0x0a,0x07,
- 0x03,0x02,0xe5,0x01,0x02,0x02,0xe5,0x08,0x01,0xe6,0xe5,0x01,0xe5,0x0b,0x04,0x01,
- 0x01,0x04,0x01,0xe5,0x05,0x05,0x05,0xe5,0x04,0x09,0x12,0x01,0x02,0x01,0x01,0x04,
- 0x23,0x01,0x06,0xe5,0x01,0x01,0x18,0xe5,0x0c,0x02,0x04,0x06,0xe5,0x02,0x07,0x01,
- 0x03,0xe5,0x03,0x01,0x07,0x09,0x01,0x09,0x03,0xe5,0x01,0x01,0x04,0xe5,0x05,0x0e,
- 0x01,0x07,0x29,0x05,0x02,0x02,0x25,0x09,0x02,0x01,0x18,0xe5,0x0a,0x09,0x06,0xe5,
- 0xe5,0x08,0x01,0x09,0x01,0x07,0x06,0xe5,0xe5,0xe5,0x06,0x09,0x01,0x04,0x16,0x01,
- 0x07,0x19,0xe5,0x0f,0x03,0xe5,0xe5,0x05,0x0b,0x09,0x09,0x02,0x01,0x02,0x04,0xe5,
- 0x01,0x1b,0x02,0x05,0x02,0x02,0x03,0xe5,0x03,0x04,0x01,0x02,0x01,0x01,0x05,0x0b,
- 0x04,0x04,0x09,0x06,0x02,0x01,0x01,0x05,0x02,0x01,0x01,0x02,0x01,0x01,0x05,0x09,
- 0x04,0x0e,0x09,0x07,0x05,0x07,0xe6,0xe5,0x01,0x2b,0x03,0xe7,0x02,0x02,0x01,0x17,
- 0x03,0xe7,0x02,0x03,0xe6,0x02,0x05,0x01,0x02,0x08,0x06,0x04,0x05,0x03,0x09,0x05,
- 0x03,0x01,0x02,0x04,0x05,0x04,0x01,0x01,0x0e,0x05,0x03,0x19,0x02,0x03,0xe6,0xe5,
- 0x01,0x03,0xe5,0xe6,0x03,0xe5,0x0c,0x09,0x06,0x02,0x02,0x01,0x07,0x01,0x1b,0x01,
- 0x09,0x01,0x03,0x01,0x05,0xe5,0x01,0x01,0x07,0x01,0x01,0xe5,0x05,0x01,0x02,0x01,
- 0x01,0xe5,0x05,0x01,0xe5,0xe5,0x03,0x04,0x02,0x04,0x01,0x04,0x04,0x0e,0x01,0xe5,
- 0xe5,0x06,0x0e,0x08,0x02,0x02,0x0f,0x01,0x01,0xe5,0x05,0x0a,0xe8,0x04,0xe8,0x05,
- 0xe7,0xe5,0x01,0x06,0x01,0x1b,0x02,0x06,0x04,0x01,0x01,0xe5,0x02,0xe5,0x03,0x09,
- 0x01,0x02,0x01,0x01,0x02,0x01,0x01,0xe5,0xe5,0xe6,0x02,0xe5,0xe5,0xe6,0xe5,0xe6,
- 0x01,0x01,0x03,0xe5,0x03,0x01,0x01,0xe5,0x01,0x01,0x0d,0xe5,0xe5,0x01,0x01,0x01,
- 0xe5,0x03,0x0d,0xe5,0xe5,0xe5,0x04,0xe7,0xe5,0xe6,0x0d,0xe7,0x0f,0x09,0x09,0x09,
- 0x02,0x09,0x02,0x17,0x09,0x09,0x13,0x0b,0x09,0x09,0x09,0x09,0x13,0x02,0x01,0x04,
- 0x13,0x09,0x09,0x02,0x0b,0x02,0x10,0xe5,0x07,0xe5,0x07,0xe5,0x0b,0x01,0x07,0x1d,
- 0x05,0xe5,0x07,0xe5,0x11,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0x09,0xe5,0x03,0x03,0xe5,0x11,0xe5,0x07,0xe5,0x0b,0x01,0x08,0xea,0x0b,0xe5,
- 0x07,0xe5,0x07,0xe6,0x01,0x01,0x02,0xe5,0xe6,0x04,0x03,0x05,0x09,0x06,0x02,0xe5,
- 0x03,0x03,0xe6,0x06,0xe5,0x07,0x09,0xe6,0x03,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x09,0xe5,0x07,0xe6,0x03,
- 0x02,0xe5,0x01,0x08,0xe8,0xe5,0x01,0x4c,0x02,0x2e,0x02,0x32,0xe5,0x1c,0x1a,0x02,
- 0x0e,0x04,0x01,0x11,0x09,0x35,0x19,0x17,0x07,0x09,0x09,0x09,0x09,0x01,0x11,0x09,
- 0x01,0x11,0x0c,0x17,0x0a,0x05,0xe6,0x06,0xe6,0x06,0xe6,0x03,0x02,0x1c,0x07,0x02,
- 0x09,0xe6,0x06,0xe6,0x03,0x06,0x04,0xe7,0xe5,0x02,0x02,0xe7,0xe5,0x03,0xe7,0xe5,
- 0x01,0x01,0xe7,0xe5,0x03,0xe5,0xe5,0x03,0x01,0xe7,0x03,0x01,0x04,0x02,0x01,0xe7,
- 0xe5,0x01,0x01,0xe7,0x05,0x04,0x05,0xe6,0x06,0x01,0x04,0x02,0x0d,0xe5,0xe6,0x10,
- 0x09,0x09,0x05,0x0d,0x11,0xe5,0x07,0x0b,0x02,0x06,0x02,0x04,0x01,0x07,0xe6,0x06,
- 0x02,0xe5,0x03,0x02,0xe6,0x04,0x01,0xe6,0x06,0xe6,0x04,0x01,0xe6,0x06,0xe6,0x04,
- 0x01,0xe6,0x03,0xe5,0xe7,0x04,0x02,0x0a,0x09,0x05,0x09,0xe5,0x02,0x02,0xe8,0x07,
- 0x07,0x09,0x1b,0x10,0x02,0x07,0x10,0x0c,0x08,0x02,0x01,0x09,0x01,0x07,0x03,0xe5,
- 0xe6,0xe6,0x07,0x06,0xe5,0xe5,0x02,0x03,0x01,0x0b,0x01,0x03,0x01,0x03,0x05,0x2c,
- 0xe5,0x01,0x13,0xe7,0x05,0xe7,0x02,0x02,0xe8,0x06,0xe5,0x01,0x05,0xe5,0x07,0xe5,
- 0x01,0x05,0xe5,0x07,0xe5,0x02,0x02,0x01,0xe5,0x02,0x04,0xe5,0x01,0x05,0xe5,0x01,
- 0x03,0xe7,0xe6,0x04,0xe7,0x01,0xe5,0x01,0x01,0xe6,0xe5,0x02,0xe7,0x01,0x03,0xe8,
- 0xe6,0x01,0xe7,0x01,0x03,0xe7,0x05,0x01,0xe6,0xe6,0x01,0xe8,0x06,0xe5,0x02,0x02,
- 0xe7,0x05,0xe8,0x06,0xe7,0x02,0x01,0x01,0x01,0x10,0x09,0x09,0xe5,0x24,0x14,0xe5,
- 0x07,0x12,0xe5,0x01,0x02,0x04,0xe5,0x01,0x02,0x02,0xe6,0x03,0x06,0x02,0x02,0x06,
- 0x03,0x02,0x02,0xe5,0xe5,0x05,0xe5,0xe5,0x09,0x05,0x0d,0xe5,0x07,0xe5,0x17,0x01,
- 0x13,0x02,0x06,0x02,0x06,0x02,0x20,0x09,0x0d,0x12,0x06,0x04,0x01,0x01,0xe5,0x05,
- 0xe6,0x01,0x03,0x01,0xe5,0x07,0xe5,0x01,0x04,0xe6,0x07,0xe6,0xe5,0x02,0x01,0xe6,
- 0xe5,0x04,0x04,0x02,0x01,0xe5,0x0f,0x02,0x06,0x02,0x0a,0xe5,0x03,0xe5,0xe8,0x0e,
- 0x03,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x0c,0x13,0x19,0x04,0x12,0xe5,0x03,0x05,0xe5,
- 0x03,0x03,0x05,0x08,0xe5,0x02,0x03,0x01,0x04,0x03,0xe5,0xe5,0xe5,0x03,0xe5,0x06,
- 0x01,0x08,0xe5,0x11,0xe5,0x07,0xe5,0x0a,0x06,0xe5,0x01,0x12,0xe5,0xe6,0x04,0xe5,
- 0xe6,0x04,0xe5,0xe7,0x0a,0x02,0x10,0x16,0xe5,0xe5,0x05,0x10,0x02,0x01,0xe5,0x02,
- 0x04,0x01,0x04,0x02,0xe6,0x06,0x06,0x02,0xe6,0x06,0x04,0x01,0xe5,0xe7,0x06,0x09,
- 0xe5,0x11,0xe5,0xe6,0x04,0xe5,0xe7,0x09,0x03,0x02,0x02,0x11,0x19,0xe5,0xe5,0xe5,
- 0x08,0x18,0x02,0x0a,0x05,0x01,0xe6,0x06,0xe5,0x0d,0x02,0x0d,0x0e,0x17,0xe5,0x0d,
- 0x0e,0x01,0x1a,0xe5,0x0c,0x02,0xe5,0x08,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x03,
- 0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x02,0x04,0x01,0x01,
- 0x05,0x01,0x01,0x05,0x01,0xe6,0x06,0x01,0xe5,0x05,0x01,0x01,0x05,0x01,0x07,0x01,
- 0x06,0xe7,0x06,0xe6,0x06,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0xe6,
- 0x06,0x01,0x0a,0xe6,0xe5,0x0e,0xe5,0x01,0x05,0xe6,0x06,0xe5,0x03,0x0f,0x19,0xe5,
- 0x05,0xe5,0x01,0xe6,0x05,0xe6,0xe5,0x07,0x07,0xe5,0x09,0x03,0x03,0x19,0x06,0xe6,
- 0x02,0x02,0x0a,0x02,0x06,0x06,0x0f,0x05,0xe6,0x02,0x0f,0x03,0x02,0xe5,0x06,0x02,
- 0x01,0x01,0x05,0x01,0x01,0x03,0x02,0x01,0x04,0x20,0x10,0x04,0x09,0x07,0x07,0x02,
- 0x01,0x0c,0x17,0x06,0x02,0x03,0x03,0x08,0x05,0x06,0x02,0x0d,0x0d,0x01,0x01,0x17,
- 0xe5,0xe5,0xe5,0x04,0x0c,0x0b,0x04,0x04,0x07,0x2e,0x08,0x07,0x05,0x03,0x09,0x04,
- 0x06,0x27,0x02,0x3d,0x0d,0x02,0x2d,0x25,0xe5,0x06,0x03,0x03,0x06,0x02,0x02,0x01,
- 0x0c,0xe5,0x03,0x07,0x0b,0xe5,0x05,0x09,0x04,0x02,0x02,0x01,0x01,0x06,0x0c,0xe5,
- 0x05,0x01,0x0e,0x09,0x04,0x0f,0xe7,0x27,0x03,0x10,0x28,0x08,0x03,0x05,0x09,0x01,
- 0x09,0x08,0x04,0x11,0x17,0x05,0x09,0x01,0x04,0x17,0x0f,0xe5,0x01,0x09,0x09,0x09,
- 0x08,0x1d,0x06,0x03,0x01,0x08,0x12,0x03,0x06,0x06,0xe5,0x03,0x05,0x29,0x31,0x0b,
- 0x04,0x0f,0xe6,0x12,0x35,0x27,0x0c,0x0d,0x07,0x03,0x0f,0x04,0x0f,0x1c,0x09,0x09,
- 0x0c,0x02,0x04,0x02,0x01,0x01,0x06,0x15,0xe5,0x01,0x28,0x02,0x0d,0x13,0x02,0x10,
- 0x02,0xe5,0x0e,0x08,0x02,0x08,0xe6,0x18,0x1e,0x15,0x02,0x06,0x03,0x01,0x06,0x19,
- 0x04,0x01,0x04,0x17,0x1d,0x02,0xe5,0x03,0x09,0x02,0x09,0xe5,0x01,0x02,0x01,0x02,
- 0xe6,0x04,0x01,0xe6,0x06,0x0a,0x01,0x07,0x05,0x0d,0xe5,0x0b,0x2c,0x01,0x1e,0x03,
- 0x0f,0x37,0x16,0x03,0x03,0x09,0x07,0x01,0x1b,0x0d,0x07,0x01,0x02,0x24,0x0e,0xe6,
- 0xe5,0xe5,0x06,0x0e,0x0b,0xe5,0x04,0x3a,0xe5,0xe6,0xe5,0x03,0x04,0x01,0xe5,0xe5,
- 0x03,0x0a,0xe5,0xe5,0xe5,0x03,0x07,0x01,0xe5,0x03,0xe5,0x04,0xe5,0xe5,0x01,0x0a,
- 0x05,0x04,0x03,0x0a,0x05,0xe5,0x03,0x0a,0x11,0x07,0xe5,0x31,0x05,0x14,0x09,0xe5,
- 0x07,0x05,0xe5,0x08,0x09,0x04,0x09,0x09,0x0a,0x04,0xe5,0x03,0xe5,0x08,0x0e,0x12,
- 0x02,0x25,0x02,0xe6,0x01,0x09,0x1b,0x05,0x0d,0x14,0x17,0x01,0x08,0xe5,0x01,0x07,
- 0x26,0x01,0x1c,0x05,0x0a,0x02,0xe5,0x30,0xe6,0x0e,0x02,0x01,0x04,0x02,0xe5,0x04,
- 0xe5,0x0d,0x20,0xe5,0x01,0xe5,0x04,0x0f,0x06,0xe5,0x04,0x06,0x04,0x02,0xe5,0xe5,
- 0x02,0xe5,0x07,0x0c,0x01,0x02,0x07,0x10,0x01,0x04,0x0c,0xe5,0x05,0x01,0x01,0x04,
- 0xe5,0x06,0x01,0x09,0xe6,0x01,0xe5,0x01,0x01,0x05,0xe5,0x04,0x02,0xe5,0x04,0xe5,
- 0xe5,0xe5,0x03,0x0f,0x13,0xe6,0x03,0x01,0x07,0xe5,0x04,0x05,0xe5,0x0c,0x08,0x0b,
- 0x01,0xe5,0x01,0x02,0x01,0x08,0x0b,0xe5,0x0b,0x0f,0xe5,0x04,0x0d,0xe5,0x07,0x01,
- 0x0b,0xe5,0x08,0x01,0x02,0xe5,0xe6,0x03,0x0f,0xe5,0xe5,0xe5,0x0c,0xe5,0x03,0x07,
- 0x15,0x0b,0x11,0x04,0x01,0x0a,0x01,0x03,0xe5,0x03,0x01,0x07,0x09,0x01,0x04,0xe5,
- 0xe5,0x05,0x01,0xe5,0xe5,0x06,0x06,0x01,0xe5,0x0f,0x01,0x18,0x07,0x09,0x06,0x01,
- 0x02,0x14,0x01,0x0d,0xe5,0x01,0x09,0x13,0x01,0x1b,0x06,0xe5,0x02,0x04,0xe5,0xe5,
- 0xe5,0x07,0xe5,0xe5,0x06,0x05,0xe5,0x01,0x01,0x04,0xe5,0x0a,0x01,0x07,0x06,0x02,
- 0x10,0x02,0x1f,0x0b,0x04,0x01,0x12,0x09,0x09,0x07,0x02,0x02,0xe5,0x12,0x01,0x04,
- 0x01,0x0f,0x06,0x02,0x03,0x07,0x01,0x05,0x0b,0x04,0x04,0x09,0x09,0xe5,0x01,0x05,
- 0x04,0x04,0x02,0x01,0x0e,0x02,0x07,0x02,0x05,0x09,0x06,0x0e,0x03,0x02,0x18,0x12,
- 0x05,0xe5,0x02,0x0f,0x01,0x01,0x19,0x03,0x03,0x05,0x04,0x04,0x0b,0x05,0x03,0x09,
- 0x0a,0x01,0x01,0x04,0x05,0x03,0x05,0x17,0x04,0x16,0x01,0x09,0x03,0xe8,0x15,0x01,
- 0x04,0x01,0x04,0x05,0x07,0x01,0x13,0x01,0x15,0x07,0x03,0xe5,0x09,0x01,0x01,0x01,
- 0xe5,0x05,0x01,0x02,0x01,0x01,0xe5,0x05,0x02,0x01,0x01,0x02,0x01,0xe5,0x08,0x01,
- 0x07,0x03,0x01,0xe5,0x1d,0x08,0x01,0x04,0x01,0xe5,0x03,0x04,0x01,0x01,0x04,0xe9,
- 0x10,0xe5,0x03,0x01,0x01,0xe5,0xe5,0xe5,0x04,0x04,0x02,0x06,0x13,0x01,0x16,0x04,
- 0x03,0xe5,0x05,0x07,0x01,0x02,0xe6,0x03,0x01,0x01,0xe5,0xe5,0xe6,0x02,0xe5,0xe6,
- 0xe5,0xe5,0x01,0xe6,0x0b,0x01,0x01,0xe5,0xe5,0x01,0x04,0x12,0xe5,0x11,0xe5,0xe5,
- 0xe5,0x04,0x01,0x04,0x03,0xe5,0x09,0x01,0xe5,0x0f,0x09,0x02,0x06,0x09,0x31,0x02,
- 0x06,0x0c,0x02,0x03,0x0b,0x09,0x02,0x01,0x04,0x13,0x04,0x04,0x13,0x0c,0x06,0x09,
- 0x04,0x07,0x02,0x08,0x02,0x02,0x0d,0xe5,0x07,0xe5,0x01,0x01,0x03,0xe5,0x39,0xe5,
- 0x01,0xe6,0x02,0xe5,0x11,0xe5,0x09,0xe5,0x07,0xe5,0x01,0x01,0x03,0xe5,0x11,0xe5,
- 0x07,0xe5,0x08,0x08,0xe5,0x0b,0x01,0x03,0xe5,0x07,0xe5,0x0b,0xe5,0x05,0x01,0xe6,
- 0xe6,0x0d,0xe5,0x07,0xe5,0x03,0x03,0xe6,0x03,0x02,0xe5,0xe5,0x05,0x09,0x06,0x02,
- 0x02,0x06,0x09,0xe6,0x06,0xe5,0x04,0x02,0x09,0xe6,0x08,0xe5,0x07,0xe5,0x03,0x03,
- 0xe6,0x03,0x02,0x09,0xe5,0x07,0xe7,0x05,0x09,0xe5,0x04,0x02,0x03,0x05,0xe5,0x07,
- 0xe6,0x06,0x0d,0xe6,0x01,0x02,0x24,0x02,0x1c,0xe5,0x25,0xe5,0x31,0xe5,0x2f,0xe5,
- 0x2b,0x03,0xe7,0x10,0x09,0x0d,0x1d,0x23,0x03,0x1b,0x09,0x0d,0x0f,0x1d,0x03,0x0f,
- 0x20,0x01,0xe6,0x0f,0xe6,0x02,0xe5,0xe8,0x06,0xe6,0x03,0x02,0x2e,0x01,0xe7,0xe5,
- 0x03,0xe5,0xe5,0x03,0x01,0x09,0xe7,0x04,0xe5,0xe8,0x02,0xe5,0xe8,0x03,0x01,0xe7,
- 0x03,0x01,0x09,0xe7,0xe5,0x01,0x01,0xe7,0x03,0x0c,0xe6,0x10,0x01,0x01,0x05,0x01,
- 0x03,0x11,0xe5,0xe6,0x10,0x05,0x01,0xe6,0x08,0x07,0x1f,0x0c,0x02,0x01,0xe6,0x06,
- 0xe6,0x04,0x01,0xe6,0x01,0x04,0xe6,0x01,0x01,0x02,0x01,0xe6,0x01,0x02,0x01,0xe6,
- 0x04,0x01,0xe6,0x04,0x03,0x04,0x02,0xe6,0x04,0x01,0xe6,0x04,0x03,0x01,0x07,0x04,
- 0xe5,0xe7,0x08,0x09,0x08,0x06,0xe5,0x02,0x01,0xe5,0x01,0xe5,0x0f,0x09,0x02,0x2c,
- 0x0d,0x02,0x06,0x05,0x04,0x02,0x01,0x09,0x01,0x07,0x01,0x01,0x0f,0x01,0xe5,0x01,
- 0x03,0x01,0x03,0x05,0xe5,0x01,0xe5,0x01,0x01,0xe5,0x02,0x02,0x10,0x04,0x1b,0x01,
- 0x0e,0x03,0x13,0xe7,0x05,0xe7,0x02,0x02,0xe7,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe6,
- 0x06,0xe5,0x07,0xe5,0x02,0x02,0x01,0xe5,0x01,0x05,0xe6,0xe5,0x04,0xe5,0x01,0x03,
- 0xe7,0xe6,0xe5,0x02,0xe7,0x02,0x02,0x01,0xe6,0xe5,0x02,0xe8,0x04,0x01,0xe5,0x01,
- 0x03,0xe8,0xe5,0x02,0xe8,0x04,0x01,0xe5,0x02,0x02,0xe8,0x05,0xe6,0x05,0xe7,0x05,
- 0xe8,0xe5,0x04,0xe7,0x02,0x02,0xe7,0x16,0x01,0x0a,0x06,0x31,0x01,0xe6,0x06,0xe5,
- 0x07,0x09,0x03,0x08,0x02,0x03,0x01,0xe6,0x07,0xe5,0xe5,0x04,0x09,0x03,0x06,0x02,
- 0x10,0x0d,0x01,0x09,0x03,0xe5,0x03,0x13,0x01,0x13,0x02,0xe5,0xe5,0x02,0x02,0x03,
- 0x02,0x02,0x32,0x01,0x03,0x05,0xe5,0x05,0x04,0x06,0x04,0x01,0x05,0x03,0x01,0xe5,
- 0xe5,0x02,0x02,0x05,0x03,0xe5,0x03,0x03,0x02,0x06,0x09,0x05,0x0a,0x02,0x05,0x0a,
- 0x01,0xe5,0x05,0x01,0xe5,0x09,0xe5,0x03,0xe5,0x02,0x11,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0xe5,0x20,0x01,0x13,0x03,0x03,0x01,0x11,0x01,0x03,0xe5,0xe5,0x03,0x03,
- 0x05,0x03,0x08,0xe5,0x02,0x03,0x01,0x03,0x01,0x02,0xe5,0x03,0xe5,0x01,0xe5,0x06,
- 0x01,0x04,0xe5,0x01,0xe5,0x0e,0x02,0xe5,0x04,0x02,0xe5,0xe5,0xe5,0x06,0x06,0x01,
- 0x01,0x13,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x1d,0x19,0x01,0x03,0x07,0x0b,
- 0x04,0xe5,0x09,0xe6,0x05,0xe7,0x06,0xe7,0x04,0xe7,0x01,0x05,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0x07,0x01,0xe5,0x0f,0x09,0x03,0x01,0x08,0x03,0x02,0x02,0xe5,0x0f,0x09,
- 0x09,0x08,0x06,0x01,0xe5,0x0f,0x45,0x01,0x13,0x02,0x0a,0x08,0x06,0x02,0x0b,0x04,
- 0x01,0xe5,0x09,0x09,0x05,0x02,0x01,0x08,0x03,0xe7,0x01,0x03,0x0a,0xe6,0x01,0x04,
- 0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x03,0x03,0x01,0x07,0x01,0x03,0x03,0x01,0x07,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x07,0x01,0xe6,
- 0x01,0x02,0x01,0xe5,0x05,0x01,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x01,0x01,0x03,
- 0x01,0x07,0x01,0x04,0x02,0xe6,0x06,0x01,0x07,0x01,0x02,0x04,0x01,0x0a,0xe5,0xe6,
- 0x0e,0xe6,0x06,0xe5,0x07,0xe5,0x05,0x12,0x20,0xe5,0x04,0x02,0xe5,0x01,0x02,0x15,
- 0x06,0x08,0x06,0xe6,0x01,0x01,0xe6,0x01,0x04,0x0a,0x02,0x06,0x03,0x01,0x05,0x06,
- 0x07,0x04,0x03,0x05,0xe5,0x05,0xe5,0x0f,0xe5,0xe6,0x09,0x08,0x13,0x09,0x15,0x13,
- 0x0c,0x1a,0x01,0x03,0x05,0x08,0x02,0xe5,0xe5,0x14,0x03,0x05,0x09,0x02,0x02,0x03,
- 0xe5,0x0a,0x08,0x01,0x01,0x04,0x0a,0x07,0x02,0xe6,0x02,0x09,0x01,0x02,0x04,0x01,
- 0x07,0x01,0x0c,0x07,0x24,0x01,0x07,0x06,0x06,0xe5,0xe5,0x08,0x01,0x0b,0x17,0x0b,
- 0x13,0x0d,0x09,0x02,0x06,0x05,0x0b,0x07,0x02,0xe5,0xe5,0x0a,0x12,0x09,0x02,0x17,
- 0x16,0x09,0x22,0x01,0x0e,0x02,0x02,0x08,0x11,0xe6,0x06,0xe5,0x11,0xe5,0x02,0x1e,
- 0x0a,0xe5,0x01,0x08,0x16,0x0d,0x0f,0x05,0x29,0x01,0x07,0xe5,0xe5,0x09,0x02,0xe5,
- 0x05,0x08,0x03,0x04,0x10,0x06,0x06,0x1d,0x0a,0x1b,0x02,0xe5,0x08,0x09,0x09,0x09,
- 0x08,0x0f,0xe5,0x20,0x0f,0x0b,0x01,0x03,0x03,0x09,0x02,0x07,0x06,0x01,0xe5,0x07,
- 0x01,0x07,0x0c,0x0f,0xe6,0x07,0x03,0x09,0x09,0x0e,0x01,0x18,0xe5,0x07,0x1a,0x01,
- 0x02,0x09,0xe5,0x07,0x07,0x0b,0x04,0x0c,0x08,0x06,0x02,0x02,0x03,0x0c,0x01,0x07,
- 0x09,0x01,0x0f,0x06,0x04,0x09,0xe5,0xe5,0x02,0x08,0x06,0x08,0x04,0x02,0xe5,0x07,
- 0x09,0x01,0x07,0x16,0x12,0x13,0x07,0x08,0x01,0xe5,0x01,0x02,0x05,0x04,0x04,0xe5,
- 0xe5,0x01,0x06,0x02,0x02,0x10,0x0b,0x07,0x17,0x04,0x07,0x1a,0x0a,0x02,0x06,0x10,
- 0xe5,0x06,0x2e,0x11,0x09,0xe5,0xe5,0x05,0x09,0x02,0x02,0xe5,0x0a,0x05,0x02,0xe5,
- 0x02,0x0a,0xe5,0x08,0x16,0xe5,0x07,0xe5,0x0c,0x04,0xe6,0x17,0x02,0xe5,0x02,0x13,
- 0x02,0x0d,0x01,0x41,0x18,0x0d,0x06,0xe6,0x06,0x2b,0x06,0x01,0x12,0x19,0x02,0xe5,
- 0x02,0x0b,0x22,0x09,0x09,0x05,0x03,0x04,0x02,0xe6,0x03,0x03,0x0f,0x03,0xe5,0xe5,
- 0x05,0x05,0x01,0x09,0xe5,0x05,0x01,0x04,0x04,0x03,0x02,0x06,0x05,0x03,0xe6,0x06,
- 0x04,0x04,0xe5,0xe5,0x01,0x04,0x01,0x16,0x0b,0x03,0x01,0xe6,0x01,0x06,0x02,0xe6,
- 0x17,0x04,0x26,0xe5,0x03,0x02,0xe6,0xe5,0x0c,0xe5,0x0b,0x02,0x05,0x02,0x02,0xe5,
- 0x03,0x03,0x06,0x07,0x01,0xe5,0x09,0x05,0x01,0x19,0x02,0xe5,0x1c,0x0d,0x01,0xe7,
- 0x0b,0x0e,0x10,0x20,0x07,0x1b,0x0a,0x0b,0x13,0x08,0x03,0x09,0x05,0x1c,0x02,0x04,
- 0x06,0x12,0x0e,0xe9,0x07,0xe5,0x04,0x09,0x02,0x01,0x0d,0xe5,0x07,0xe6,0x03,0x02,
- 0x17,0xe5,0x2c,0xe6,0x01,0xe5,0x03,0xe5,0x13,0x04,0x0b,0x02,0x01,0x01,0xe5,0xe7,
- 0x04,0x01,0x18,0x01,0x02,0x01,0x05,0x01,0x0c,0xe8,0xe5,0x01,0x01,0x05,0x01,0x04,
- 0x08,0x02,0xe5,0x0f,0x02,0x01,0x0a,0xe6,0x17,0xe5,0xe6,0x0e,0xe5,0x1a,0x02,0x01,
- 0x14,0x09,0xe6,0x06,0xe5,0x04,0x01,0xe7,0x08,0x18,0xe5,0x04,0x05,0x0b,0x01,0x02,
- 0xe6,0xe5,0x03,0x34,0x02,0xe5,0xe5,0xe5,0x03,0x01,0x02,0x04,0xe5,0x0c,0x03,0xe5,
- 0x03,0x04,0xe5,0x07,0x01,0x02,0x03,0xe5,0x08,0x01,0xe5,0x01,0x02,0x02,0x01,0xe5,
- 0xe5,0x01,0x01,0x01,0x02,0x04,0x01,0xe5,0xe5,0x06,0x06,0xe5,0x04,0x05,0x10,0x01,
- 0xe5,0x05,0x01,0xe5,0xe5,0x06,0x0b,0x05,0x02,0x02,0x39,0xe5,0xe5,0xe5,0x03,0x04,
- 0x11,0x06,0xe5,0xe5,0x04,0xe5,0x03,0x04,0xe5,0xe5,0x10,0xe5,0x08,0xe5,0xe5,0xe5,
- 0x03,0xe5,0xe5,0xe5,0x03,0x02,0x01,0x04,0xe5,0xe5,0x05,0x0e,0x0e,0xe5,0x07,0x02,
- 0x01,0x07,0x0d,0x02,0xe5,0xe6,0x11,0x09,0x09,0x18,0x01,0x05,0x06,0x0a,0x02,0x02,
- 0x02,0x0b,0x01,0xe5,0x05,0x01,0xe5,0x03,0x01,0x01,0x04,0x03,0x02,0x0f,0x06,0x02,
- 0xe5,0xe7,0xe5,0x01,0x04,0x04,0x02,0x01,0x01,0x07,0x0b,0xe5,0xe5,0xe5,0xe5,0x07,
- 0x06,0x04,0x0a,0x06,0xe7,0x01,0x3c,0x03,0x0a,0x0d,0xe5,0x02,0x02,0x01,0x09,0xe5,
- 0x02,0x04,0x02,0x02,0xe5,0x01,0x10,0x02,0x01,0x04,0x05,0x04,0x04,0x03,0x02,0x01,
- 0xe5,0x03,0x01,0x01,0xe5,0xe5,0xe5,0x06,0x01,0x01,0x02,0xe5,0x01,0x05,0x03,0x0a,
- 0x05,0x03,0x09,0x02,0xe6,0xe6,0x12,0x01,0x07,0x06,0x02,0x01,0x05,0x0e,0x01,0x02,
- 0x01,0x01,0x02,0x0f,0x03,0x01,0xe5,0xe5,0x03,0x02,0x02,0x01,0x04,0x02,0x01,0x01,
- 0x0e,0x05,0x03,0x04,0x01,0x04,0x04,0x07,0x01,0x04,0x01,0xe5,0x0d,0x04,0x0b,0x02,
- 0x02,0x0b,0x01,0x01,0x05,0x06,0x08,0x01,0xe5,0xe5,0x10,0xe7,0x05,0xe5,0x01,0x06,
- 0x01,0x16,0x01,0x04,0x01,0x02,0x09,0x07,0x04,0x01,0xe7,0x08,0x09,0x01,0x08,0x14,
- 0x01,0x01,0xe5,0x01,0x01,0x09,0x01,0xe6,0xe6,0x01,0x15,0x0a,0xe5,0x0e,0x01,0x02,
- 0x04,0x05,0xe6,0x08,0xe7,0x0f,0x09,0x09,0x04,0x36,0x0c,0x09,0x02,0x12,0x05,0x03,
- 0x06,0x13,0x27,0x0c,0x06,0x0c,0x02,0x07,0x02,0xe5,0x0f,0xe5,0x07,0xe5,0x07,0xe5,
- 0x1f,0x10,0x08,0xe5,0x08,0x02,0xe6,0x06,0x09,0x07,0xe5,0x03,0x07,0x01,0x03,0xe5,
- 0x1f,0x13,0x09,0xe5,0x04,0x02,0x01,0x03,0xe5,0x0b,0xe5,0x08,0x02,0xe5,0x0d,0xe5,
- 0x07,0xe5,0x07,0xe6,0x06,0x09,0x09,0x05,0x03,0x09,0x09,0xe6,0x06,0x06,0x02,0x05,
- 0x03,0x05,0x02,0x02,0xe5,0x07,0x02,0xe5,0x04,0xe5,0x04,0x02,0x09,0x06,0x02,0x05,
- 0x03,0x09,0x03,0x05,0xe5,0x02,0x01,0x02,0xe6,0xe5,0x04,0xe7,0x02,0x02,0x02,0x0a,
- 0x03,0xe5,0x01,0x6a,0x02,0x13,0x0b,0x12,0xe5,0x08,0x08,0xe5,0x1c,0x1c,0xe5,0x0d,
- 0x02,0xe5,0x01,0x11,0x09,0x52,0x12,0x04,0x08,0x03,0x0b,0x03,0x07,0x0b,0x1c,0x1e,
- 0x13,0xe5,0xe5,0x09,0x04,0xe7,0xe5,0x04,0x01,0x01,0x02,0x01,0xe5,0xe5,0x05,0x07,
- 0x01,0x1a,0xe5,0xe5,0x08,0xe7,0x19,0x09,0x01,0x01,0x11,0xe5,0xe5,0x05,0x13,0x1d,
- 0xe5,0x0c,0x05,0xe6,0x02,0xe5,0xe5,0x0e,0x01,0xe5,0x0e,0xe6,0x08,0x04,0xe5,0xe7,
- 0x03,0x02,0xe5,0x05,0x01,0xe5,0x09,0x09,0x02,0x02,0x01,0xe6,0xe5,0x04,0xe6,0x08,
- 0x01,0x07,0x02,0x04,0x01,0x07,0x01,0xe6,0xe5,0x06,0x07,0xe6,0x04,0x03,0x08,0xe5,
- 0x04,0x03,0x08,0x03,0x05,0x06,0x03,0x02,0x05,0xe5,0x08,0x02,0x02,0x01,0xe5,0x05,
- 0xe5,0x02,0x02,0xe5,0xe6,0x0d,0x01,0x0f,0x01,0x09,0x07,0x01,0x0e,0x08,0x03,0x01,
- 0x04,0x04,0x03,0x03,0x01,0x13,0x08,0x02,0x01,0x01,0x0f,0x03,0xe5,0x03,0x0e,0x02,
- 0x01,0x11,0x01,0x11,0x01,0x0a,0x06,0x01,0x0e,0x01,0x01,0x0f,0x05,0xe5,0x07,0xe6,
- 0xe5,0x04,0xe5,0x01,0x05,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,
- 0x01,0xe5,0x01,0x01,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe6,0x06,0xe5,0x01,0x01,0x05,
- 0xe5,0x07,0xe5,0x01,0x05,0xe6,0x05,0xe5,0x06,0xe6,0xe5,0x04,0x01,0x07,0x01,0xe6,
- 0xe5,0x02,0xe6,0x02,0x05,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0x03,0x02,
- 0xe7,0x08,0x05,0x0a,0xe5,0x10,0x11,0x01,0x07,0x01,0x09,0x09,0xe5,0x03,0x17,0x09,
- 0x01,0x0a,0x08,0xe5,0x05,0x01,0x07,0x02,0xe5,0x02,0x03,0x05,0x01,0x01,0xe5,0x01,
- 0x01,0x04,0x02,0xe6,0x02,0xe5,0x19,0x01,0xe6,0x05,0x05,0x02,0xe5,0x08,0x05,0x02,
- 0x09,0x09,0x06,0x11,0x01,0x02,0x04,0x01,0x02,0x06,0x02,0x06,0x02,0xe5,0x07,0x08,
- 0x07,0x01,0x07,0x01,0x02,0x08,0x07,0xe6,0x04,0x04,0x03,0x02,0x02,0x03,0xe5,0x03,
- 0x03,0xe5,0xe5,0x09,0x05,0xe5,0x01,0xe5,0x08,0x0a,0x04,0x01,0x07,0xe5,0x03,0x01,
- 0xe5,0xe6,0x0d,0x1d,0x1b,0x01,0x09,0x09,0xe5,0x03,0x17,0x08,0xe5,0xe5,0x09,0x08,
- 0x09,0x04,0x02,0x05,0xe6,0x02,0x03,0x01,0x01,0x01,0xe5,0x03,0x01,0x01,0x05,0x0d,
- 0x11,0x09,0x07,0x01,0xe5,0x01,0x0c,0x1d,0x1b,0x01,0x09,0x09,0x03,0x10,0x06,0x0b,
- 0x01,0x13,0x13,0xe5,0x01,0xe5,0x08,0x02,0x01,0xe5,0x05,0x01,0xe5,0x01,0x06,0x06,
- 0x13,0x01,0xe5,0x0a,0x01,0x02,0xe5,0x2e,0x12,0x06,0x02,0x06,0x02,0x14,0x05,0x01,
- 0xe6,0x10,0x02,0x09,0x10,0xe5,0xe5,0x03,0x01,0x02,0x06,0xe5,0xe5,0x13,0x05,0x02,
- 0x06,0x02,0x10,0xe5,0xe5,0x06,0x05,0xe5,0xe6,0x0a,0x05,0x01,0x07,0x01,0x01,0x05,
- 0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x01,0x03,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x04,0x02,0x01,0x01,0x05,0x01,0x05,0x03,0x01,0x02,0x04,0x01,0xe5,0x05,
- 0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x03,0x03,0x01,
- 0x01,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0xe6,0x01,0x02,0x02,0xe5,0xe6,0x0f,0x01,
- 0x02,0x03,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x0d,0x01,0x03,0xe5,0x03,0x09,0xe5,0x01,
- 0x03,0x03,0xe5,0x09,0x01,0x02,0x04,0x10,0xe5,0xe6,0xe5,0x03,0x01,0xe5,0x01,0x05,
- 0xe6,0xe5,0x0c,0xe5,0x01,0x06,0x05,0x04,0xe5,0x01,0x0c,0xe5,0x03,0xe6,0x01,0xe5,
- 0x03,0xe5,0x0c,0x04,0x0c,0xe7,0x01,0x08,0xe5,0x07,0xe5,0x07,0x01,0x05,0x0a,0x14,
- 0x07,0x09,0x03,0x04,0x0a,0x0f,0x08,0x02,0x03,0x03,0x01,0x04,0x01,0x08,0x1d,0x01,
- 0xe5,0xe5,0x03,0x11,0x0b,0x08,0x0a,0x01,0x04,0xe5,0xe5,0xe5,0x01,0x01,0x06,0x06,
- 0x05,0x09,0x08,0x01,0x17,0x01,0x0e,0x07,0x02,0xe5,0x20,0x04,0x01,0x01,0x01,0x03,
- 0x01,0x01,0x04,0x11,0x09,0x09,0x19,0x13,0x0f,0x02,0x03,0xe7,0x09,0x0f,0x06,0x13,
- 0x01,0x03,0x0a,0x01,0xe6,0x05,0x03,0x0e,0x02,0x01,0x06,0xe5,0xe5,0x01,0x07,0x01,
- 0x06,0x01,0x09,0x04,0x05,0xe5,0x01,0x01,0xe8,0x07,0x07,0x01,0xe6,0xe5,0x02,0xe6,
- 0x04,0x0b,0x01,0x07,0x01,0x11,0x01,0x01,0x06,0x02,0x03,0x02,0x02,0x08,0x13,0x03,
- 0x12,0x01,0x16,0x09,0x07,0x07,0x07,0x01,0x03,0x02,0x0a,0x03,0x02,0xe5,0x17,0x08,
- 0x07,0x03,0x03,0x04,0x10,0x01,0x01,0x09,0x05,0x09,0x01,0x02,0x07,0x05,0x01,0xe6,
- 0x08,0x01,0x07,0x09,0x09,0x15,0x03,0x08,0xe5,0x06,0x01,0x02,0x07,0x01,0x02,0x01,
- 0x01,0x05,0x02,0xe5,0x08,0x07,0x01,0x01,0x07,0x01,0x03,0x01,0x03,0x03,0x0e,0xe5,
- 0x03,0x02,0x01,0x09,0x01,0x03,0x03,0x0e,0x02,0x05,0x05,0x03,0x05,0x03,0x0e,0x0c,
- 0x0d,0x03,0x1b,0x0e,0x01,0x07,0xe5,0x07,0x03,0x05,0xe6,0x01,0x04,0x05,0x03,0xe7,
- 0x07,0x05,0x03,0x02,0x05,0xe5,0x0b,0x05,0x0a,0x04,0x03,0xe5,0x01,0x06,0x04,0x01,
- 0x05,0x10,0x02,0xe5,0x03,0xe5,0x09,0x06,0x01,0xe5,0x11,0x01,0x06,0xe5,0x24,0x05,
- 0x0c,0x02,0x04,0x04,0xe5,0x08,0x03,0x07,0x0b,0x06,0x01,0xe6,0x01,0xe6,0x03,0x02,
- 0xe5,0xe5,0x07,0x09,0x27,0x0a,0x03,0x0e,0x02,0x07,0x04,0xe5,0x07,0x02,0x0b,0xe6,
- 0x06,0x01,0x07,0xe6,0x0a,0x06,0x03,0x1c,0x04,0x07,0x09,0x0b,0xe5,0x0a,0xe5,0x02,
- 0x01,0x02,0xe5,0x04,0x02,0xe5,0xe5,0x01,0x03,0xe5,0xe7,0x02,0x01,0x06,0xe7,0x03,
- 0x02,0xe6,0x03,0xe5,0x05,0x04,0xe7,0x06,0xe6,0x02,0x08,0x0c,0xe7,0xe5,0x0e,0x08,
- 0x13,0xe5,0x11,0x29,0x18,0x05,0x04,0x03,0x02,0x03,0x01,0x01,0x03,0xe6,0xe5,0x04,
- 0xe6,0xe5,0x03,0x03,0x04,0x05,0x07,0x02,0x13,0xe5,0xe6,0x03,0x1a,0xe6,0x01,0x36,
- 0x03,0x03,0xe6,0x06,0x1d,0x06,0x02,0x03,0x05,0xe5,0x01,0x07,0x08,0x08,0x01,0xe5,
- 0x09,0x02,0x08,0x05,0x08,0x03,0x08,0xe5,0x05,0x06,0x11,0xe5,0x11,0x02,0xe6,0x19,
- 0x25,0x01,0x07,0x01,0x01,0x01,0x0a,0x0b,0xe5,0x04,0x03,0x02,0x04,0xe6,0xe6,0x07,
- 0xe5,0xe5,0x10,0x1c,0xe5,0x07,0x03,0x07,0x04,0x03,0x1e,0x0b,0xe6,0xe6,0x3e,0xe5,
- 0x07,0xe5,0x03,0x07,0x10,0x08,0xe5,0x16,0x16,0x09,0x0c,0x03,0x08,0x01,0x0f,0x2e,
- 0x01,0xe8,0x07,0xe5,0x02,0x01,0xe5,0x0a,0x01,0x04,0x08,0xe5,0x15,0xe5,0x03,0xe6,
- 0xe5,0xe6,0x04,0xe5,0x06,0x14,0xe5,0x04,0x0f,0xe5,0x04,0x02,0xe5,0x04,0x0a,0x01,
- 0xe5,0x04,0x08,0xe6,0x03,0x02,0xe6,0x03,0xe5,0x01,0x0a,0x01,0x01,0x04,0xe5,0xe6,
- 0x04,0x01,0xe5,0x05,0x0a,0xe6,0xe5,0xe5,0x01,0x01,0x05,0x01,0x04,0x05,0xe5,0x03,
- 0xe5,0x05,0x08,0x10,0xe5,0x04,0xe5,0x06,0xe5,0x03,0x03,0xe5,0x15,0xe5,0x03,0xe5,
- 0x0c,0x05,0x01,0x01,0x03,0x03,0x01,0x04,0x02,0xe5,0x0e,0x08,0x03,0xe5,0xe7,0x06,
- 0xe5,0x01,0x05,0x04,0x01,0xe5,0x03,0x03,0x01,0x03,0x0a,0x07,0x01,0x02,0xe6,0xe5,
- 0x03,0x14,0x21,0xe5,0x08,0xe5,0x04,0x05,0x1a,0xe5,0x02,0x03,0xe5,0x08,0xe5,0x02,
- 0x06,0xe5,0x01,0x01,0x03,0xe5,0x01,0x01,0x02,0xe5,0x01,0x01,0x1b,0x01,0x01,0xe5,
- 0x03,0x01,0x03,0xe5,0x03,0x16,0x10,0x04,0x02,0xe5,0x01,0x14,0x23,0xe5,0x08,0x09,
- 0xe5,0x1a,0xe5,0x01,0x0f,0xe5,0x09,0xe5,0x07,0xe5,0x08,0x02,0x01,0x0d,0xe5,0x08,
- 0x02,0x01,0x04,0xe5,0xe5,0xe5,0x02,0xe5,0x01,0x19,0xe5,0x03,0x0b,0x03,0x01,0xe5,
- 0x11,0x06,0x02,0xe5,0x01,0x05,0x1a,0x04,0xe6,0x09,0x01,0x04,0x01,0xe5,0xe5,0x01,
- 0x04,0x01,0x02,0x09,0xe5,0x01,0x02,0x10,0x01,0x04,0xe6,0x01,0x04,0xe5,0x01,0x06,
- 0x04,0x01,0x02,0x0c,0x01,0x01,0x07,0x01,0x02,0x03,0x09,0x05,0x04,0x01,0x02,0x09,
- 0x03,0x09,0xe6,0x01,0x14,0x03,0x01,0x02,0x1e,0x01,0x01,0x01,0x02,0x02,0x01,0x01,
- 0x02,0xe5,0xe5,0xe5,0x03,0xe5,0xe5,0xe5,0x04,0x01,0x01,0x0a,0x01,0x01,0x04,0x06,
- 0x04,0x04,0x04,0x09,0x02,0x01,0x04,0x05,0x01,0x01,0x09,0x02,0x01,0xe5,0x02,0x02,
- 0x01,0xe5,0xe5,0xe5,0x02,0x01,0x03,0x02,0xe6,0x09,0x01,0x01,0x09,0x03,0xe5,0x03,
- 0x02,0xe5,0xe7,0x12,0x01,0x02,0x04,0x06,0x1b,0x11,0x04,0x02,0x01,0x01,0x01,0x02,
- 0x01,0xe5,0xe5,0xe5,0x01,0x01,0xe5,0xe5,0x19,0xe6,0xe5,0x01,0x02,0x03,0x02,0x05,
- 0x01,0x01,0x02,0x01,0xe5,0xe5,0xe5,0x04,0x09,0x01,0x07,0x01,0x04,0x09,0x01,0x0a,
- 0x01,0x01,0xe5,0x0b,0x07,0xe7,0xe5,0x10,0xe7,0x01,0x03,0xe5,0xe6,0x05,0x1a,0x11,
- 0x09,0x01,0x02,0x01,0x02,0x01,0x04,0x01,0xe5,0xe5,0x11,0x07,0x07,0x01,0xe5,0x05,
- 0x04,0x01,0x02,0x01,0x02,0x01,0x02,0x0e,0x01,0x07,0x01,0x01,0xe5,0xe8,0x0c,0xe5,
- 0x03,0x01,0x02,0x08,0xe5,0x0a,0xe6,0xe5,0x0f,0x09,0x04,0x04,0x20,0x02,0x06,0xe5,
- 0x07,0x02,0x03,0x04,0x1b,0x0b,0x01,0x03,0xe5,0x01,0x01,0x03,0xe5,0x01,0xe5,0x04,
- 0x04,0x04,0x0c,0x02,0x06,0xe5,0x04,0x02,0xe5,0x0e,0x09,0x09,0x02,0x0a,0xe5,0x01,
- 0x10,0xe5,0x07,0xe5,0x07,0xe5,0x1f,0x13,0x05,0xe5,0x21,0x0b,0x03,0xe5,0x01,0x01,
- 0x03,0xe5,0x01,0xe5,0x03,0xe5,0x07,0xe5,0x0b,0x09,0x05,0xe5,0x01,0x09,0xe5,0x03,
- 0xe5,0x07,0xe5,0x07,0xe5,0x03,0x07,0x03,0xe5,0x0d,0xe5,0x07,0xe5,0x07,0xe6,0x06,
- 0x09,0x09,0x03,0x02,0x02,0x06,0x02,0x02,0xe5,0x04,0xe6,0x06,0x02,0x01,0x01,0x02,
- 0x06,0x02,0x06,0x01,0x02,0x09,0xe6,0xe5,0x01,0x02,0xe6,0x06,0xe7,0x05,0xe7,0x02,
- 0x02,0x03,0x02,0x02,0x03,0x02,0x02,0xe5,0x01,0x02,0x02,0x04,0x01,0x02,0xe5,0x04,
- 0x02,0xe6,0x06,0xe5,0x0a,0xe5,0x02,0xe5,0x01,0x42,0x09,0x02,0x24,0x09,0x0e,0x06,
- 0x1f,0xe5,0x05,0x0b,0xe5,0x05,0x02,0x09,0x08,0xe5,0x17,0x02,0xe5,0x01,0x11,0x09,
- 0x35,0x34,0x06,0x05,0x09,0x19,0x13,0x05,0x03,0x08,0x06,0x02,0x10,0x10,0x01,0x0e,
- 0xe6,0x06,0x01,0x07,0xe6,0x20,0xe5,0xe5,0x06,0x06,0x05,0xe6,0x05,0x07,0x01,0x06,
- 0xe5,0xe5,0x08,0x01,0x0a,0x01,0x07,0xe6,0x06,0xe6,0x03,0x01,0xe7,0x02,0xe5,0xe5,
- 0x08,0x07,0x01,0xe7,0x05,0x04,0x04,0xe7,0xe5,0x03,0xe7,0x06,0xe6,0x0a,0xe5,0x01,
- 0x11,0x09,0x02,0x06,0x16,0x06,0x05,0x02,0x08,0x01,0x09,0x07,0xe6,0x06,0x01,0x05,
- 0x01,0xe5,0x07,0x01,0xe5,0x02,0x06,0x02,0x06,0x09,0x05,0x01,0xe6,0x04,0x01,0xe5,
- 0x05,0x02,0x06,0x01,0xe6,0x06,0xe6,0x04,0x02,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x04,
- 0xe5,0x02,0x01,0xe6,0xe5,0x10,0x02,0x0f,0x02,0x19,0x07,0x01,0x07,0x01,0x10,0x02,
- 0x07,0x01,0x03,0x03,0x01,0x03,0xe5,0xe5,0xe6,0xe5,0x13,0x03,0x05,0x06,0x01,0xe5,
- 0x01,0x03,0x01,0x09,0x03,0xe5,0x03,0x01,0x07,0x09,0x09,0x07,0x01,0x06,0x0a,0xe5,
- 0x12,0xe7,0x05,0xe7,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe6,0xe5,0x04,0xe6,
- 0xe5,0x04,0xe5,0x02,0x02,0x01,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe6,0xe5,0x02,0x01,
- 0xe5,0x01,0x01,0x05,0xe5,0x05,0x01,0xe5,0x05,0x01,0x08,0xe5,0xe5,0xe5,0x03,0xe5,
- 0x02,0x03,0xe6,0x02,0x03,0xe8,0x06,0x03,0x05,0xe6,0x01,0x02,0xe8,0x01,0x02,0xe8,
- 0xe6,0x03,0xe6,0x03,0x01,0xe8,0x19,0x27,0x06,0x01,0x07,0x01,0x0a,0x08,0xe6,0x06,
- 0x09,0x09,0x01,0xe6,0x0c,0x09,0x09,0x08,0xe5,0xe5,0xe5,0x04,0x03,0xe5,0x02,0xe6,
- 0x02,0x04,0x04,0xe5,0x06,0xe5,0x07,0xe5,0x08,0xe5,0x05,0x06,0xe7,0x11,0xe5,0x01,
- 0x03,0x01,0xe5,0x01,0x05,0xe5,0x01,0x17,0x01,0x04,0x01,0x07,0x01,0x02,0x09,0xe5,
- 0x04,0x02,0x08,0x05,0x01,0x03,0x04,0xe5,0x0c,0x09,0x04,0x04,0x04,0x04,0x04,0xe5,
- 0xe5,0x05,0xe5,0x01,0x09,0x01,0x03,0xe5,0x02,0x05,0x04,0xe5,0x01,0xe5,0x03,0xe5,
- 0x01,0x05,0x04,0xe5,0x03,0xe9,0x13,0xe5,0x07,0xe5,0x07,0xe5,0x16,0x07,0x01,0x07,
- 0x01,0x0a,0x04,0x03,0x09,0x07,0x01,0x05,0x03,0x01,0x0d,0x01,0x07,0x01,0x08,0xe5,
- 0x08,0x01,0x01,0x03,0xe6,0x02,0x03,0x01,0x03,0x05,0x03,0x09,0xe5,0x02,0xe5,0x02,
- 0xe5,0x02,0xe5,0x0a,0x06,0x01,0xe6,0x12,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x15,0xe5,0x05,0x01,0x07,0x01,0xe5,0x0b,0x01,0x03,0x11,0x01,0xe5,0x01,0x01,0x03,
- 0x01,0xe5,0x0b,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x01,0x03,0xe5,0x03,0xe5,0x01,
- 0xe5,0x01,0x05,0xe5,0x04,0x06,0x05,0x01,0xe6,0x04,0x01,0xe5,0x0e,0x04,0xe5,0x13,
- 0x13,0x16,0x02,0x06,0xe5,0xe5,0x05,0x27,0xe5,0xe5,0x07,0x09,0xe5,0xe5,0x08,0x01,
- 0x13,0x02,0x01,0xe5,0xe6,0x04,0xe5,0xe5,0x05,0x09,0xe5,0xe5,0x1b,0xe5,0x06,0x05,
- 0xe5,0xe6,0xe6,0x06,0x06,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x01,
- 0x05,0x01,0x04,0x01,0xe5,0xe5,0xe5,0x04,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0xe6,
- 0x04,0x01,0x07,0x01,0x01,0x04,0xe5,0xe6,0x02,0xe5,0x01,0xe9,0xe5,0x02,0x01,0xe6,
- 0x04,0x01,0xe6,0x04,0x01,0x07,0x01,0x01,0x02,0x02,0x01,0x04,0x02,0x01,0x01,0x02,
- 0x02,0x01,0xe6,0xe5,0x02,0x01,0xe6,0x04,0x01,0x06,0xe5,0xe5,0xe5,0x04,0x01,0x04,
- 0x02,0x02,0x03,0x0f,0xe5,0x01,0x08,0x02,0xe5,0x01,0xe5,0x19,0x05,0x04,0x09,0x06,
- 0x03,0xe5,0x02,0xe5,0x0e,0x06,0x16,0x03,0x03,0x01,0xe5,0x11,0x0c,0x08,0x07,0xe5,
- 0x0b,0x06,0x02,0x05,0x09,0xe5,0x0e,0x01,0xe5,0x06,0x03,0xe5,0xe5,0x05,0x0a,0x01,
- 0x10,0x0d,0x05,0x15,0x18,0x09,0xe5,0x09,0x02,0x06,0x13,0x02,0x02,0x0c,0x0d,0xe5,
- 0xe5,0x05,0x0a,0x07,0x05,0x04,0xe5,0xe5,0xe5,0x03,0x03,0x02,0x01,0x02,0x02,0x0f,
- 0x35,0x06,0x02,0x08,0x02,0x0f,0x24,0x06,0xe5,0xe6,0x04,0x09,0x09,0x09,0x09,0x09,
- 0x16,0x05,0x04,0xe5,0x0b,0x01,0x01,0x01,0x06,0xe6,0x18,0x09,0x14,0x03,0x01,0xe6,
- 0x06,0x01,0x01,0x03,0x05,0xe5,0x0c,0x02,0x01,0xe5,0x01,0x01,0xe7,0x07,0x01,0xe5,
- 0x02,0x04,0xe5,0x07,0x01,0x02,0x0c,0x01,0x02,0xe5,0x04,0xe5,0x09,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x02,0x05,0x0a,0x05,0xe7,0x0c,0x01,0xe6,0x0a,0x08,0x2e,0x03,0x0e,
- 0x03,0x01,0x11,0x12,0x03,0xe5,0x01,0x0d,0x09,0x0e,0x01,0x03,0x03,0x04,0x17,0x02,
- 0x0d,0x20,0xe5,0x0e,0x03,0x09,0x09,0x06,0x1a,0xe6,0x02,0x03,0xe6,0x08,0x08,0xe5,
- 0x04,0x01,0x04,0x03,0xe5,0x08,0x01,0x05,0x03,0x02,0x06,0x0c,0x02,0x15,0x03,0x03,
- 0x01,0x0d,0x0d,0x01,0x03,0x03,0x03,0x01,0x03,0x0a,0x01,0xe6,0x0c,0x03,0x01,0x2e,
- 0x0d,0x02,0x09,0x02,0x06,0x10,0x0d,0x13,0x28,0xe5,0x0f,0x06,0x0e,0xe6,0x0c,0x0b,
- 0x01,0xe5,0x02,0x18,0x02,0x24,0x0e,0x08,0xe5,0x01,0xe5,0x04,0x0d,0x1a,0x05,0x03,
- 0x07,0x09,0x16,0x10,0x05,0x01,0x01,0x09,0x0f,0x0b,0x01,0x01,0x01,0x0e,0x12,0xe5,
- 0x11,0x01,0x03,0x04,0x08,0xe6,0x02,0x12,0x01,0x08,0x02,0x03,0x07,0x08,0xe8,0x02,
- 0x03,0x05,0xe5,0x02,0x0b,0x02,0xe5,0x0e,0x02,0x09,0x07,0x01,0x09,0x07,0x01,0x03,
- 0xe6,0x02,0x06,0x0d,0xe8,0x02,0x0c,0x02,0x0d,0xe5,0x1c,0x0a,0x16,0x17,0x01,0x04,
- 0xe5,0x01,0x04,0x04,0x01,0x0b,0x05,0x09,0xe5,0x08,0x19,0x02,0x05,0x03,0x0c,0x19,
- 0xe6,0xe5,0x13,0x1d,0x09,0x04,0x04,0x02,0x01,0x09,0x0e,0x04,0xe5,0x02,0x15,0x04,
- 0x03,0xe5,0x07,0x09,0x1b,0x01,0x07,0x01,0xe5,0x07,0xe5,0x01,0x01,0xe5,0x02,0x04,
- 0xe5,0x0a,0x07,0x09,0x01,0x01,0xe5,0xe7,0x11,0x07,0x0d,0x16,0xe5,0x08,0x06,0x01,
- 0xe5,0x01,0x01,0x0d,0x03,0x1a,0xe6,0x01,0x01,0x11,0x10,0xe6,0x02,0x05,0x0a,0x10,
- 0xe5,0x07,0x01,0xe5,0x1d,0xe5,0xe7,0x04,0x0b,0x20,0x0d,0x09,0x09,0x02,0xe5,0x2c,
- 0x05,0x24,0x27,0x06,0xe5,0xe5,0x05,0x0e,0x09,0x02,0xe5,0x01,0xe6,0x07,0xe5,0x04,
- 0x05,0x04,0x01,0x01,0x04,0x26,0xe6,0xe5,0xe5,0x06,0xe5,0x01,0x02,0x01,0xe5,0x01,
- 0x02,0xe5,0x09,0x01,0xe5,0x0b,0x04,0x09,0x09,0x02,0xe5,0x0a,0x03,0x05,0x17,0x32,
- 0xe5,0xe6,0xe5,0x01,0x01,0x05,0x01,0x03,0x01,0xe6,0x01,0x04,0xe6,0x04,0x26,0xe5,
- 0x02,0xe5,0x01,0xe5,0x02,0xe5,0x07,0xe5,0x06,0x04,0xe5,0x04,0x01,0x0c,0xe5,0x01,
- 0x09,0x05,0xe5,0x07,0xe5,0x07,0x03,0x02,0x01,0xe5,0x05,0x01,0x06,0xe5,0x12,0x01,
- 0xe6,0x1d,0x01,0x02,0x03,0x04,0x0d,0x04,0x04,0x1e,0xe5,0x01,0x01,0x04,0x01,0x05,
- 0xe6,0x03,0x0b,0x02,0x01,0x04,0xe5,0xe6,0x18,0x13,0x01,0x07,0x07,0x09,0x17,0x01,
- 0xe5,0x01,0x0b,0x0d,0xe5,0x04,0x08,0x05,0xe7,0x01,0x14,0x24,0x02,0x01,0x0d,0xe5,
- 0x03,0x0e,0x04,0x04,0x18,0x13,0x09,0x09,0x09,0x19,0xe5,0x0b,0x14,0x01,0x0a,0x03,
- 0x02,0x05,0x07,0x01,0x02,0x04,0x04,0x09,0x16,0x11,0x02,0x02,0xe5,0x04,0xe5,0xe5,
- 0x01,0x02,0x04,0x04,0xe5,0x01,0x03,0x02,0x05,0x08,0x02,0x03,0x05,0x06,0x02,0x01,
- 0x01,0x02,0x02,0x04,0x04,0x04,0x04,0x04,0x01,0x02,0x09,0x06,0x02,0x01,0x01,0x02,
- 0x02,0xe5,0x01,0xe5,0xe5,0x01,0x04,0x04,0x01,0x01,0x07,0x01,0x01,0x02,0x0a,0x01,
- 0x01,0x05,0x03,0x27,0x09,0x07,0x01,0x02,0xe7,0xe5,0xe5,0x04,0x02,0x02,0x01,0xe6,
- 0x02,0x10,0xe5,0x02,0x01,0x01,0xe5,0x09,0x03,0x01,0x02,0xe5,0x02,0x02,0x01,0xe5,
- 0x02,0x05,0x03,0x05,0x01,0x01,0x0f,0x03,0xe5,0x02,0xe5,0x02,0x01,0x02,0xe5,0xe5,
- 0xe5,0x0b,0x01,0x04,0x04,0x01,0xe5,0x0b,0x01,0x02,0x01,0x01,0xe5,0x04,0xe5,0x05,
- 0x19,0x01,0x1b,0x01,0x01,0x01,0xe5,0x03,0x04,0x01,0x07,0x01,0x0b,0x02,0x02,0x0a,
- 0xe5,0x03,0x04,0x01,0x02,0x01,0x05,0x09,0x05,0xe5,0x01,0x01,0x01,0xe7,0x07,0xe5,
- 0x03,0x05,0x03,0x04,0x01,0xe5,0xe5,0xe5,0x01,0x06,0x01,0xe5,0x07,0xe5,0xe5,0xe5,
- 0x01,0x0a,0x01,0x01,0xe7,0x01,0x03,0xe5,0x08,0x18,0x01,0x13,0xe5,0x05,0x01,0x02,
- 0x01,0x05,0x03,0x08,0xe5,0x05,0xe5,0x05,0x03,0xe5,0xe5,0x05,0xe5,0x03,0x03,0xe5,
- 0xe5,0x01,0x04,0x01,0x02,0x03,0xe7,0x01,0x03,0xe5,0x03,0x01,0x02,0x08,0xe5,0xe5,
- 0x01,0x01,0x07,0x03,0xe5,0xe5,0x01,0x01,0x02,0x01,0xe5,0x03,0x02,0xe5,0x09,0xe5,
- 0xe5,0x01,0x0d,0x09,0x09,0x31,0x02,0x06,0x04,0x04,0x02,0x01,0x07,0x06,0x0b,0x04,
- 0x04,0x09,0x04,0x04,0x04,0x04,0x09,0x09,0x02,0xe5,0x04,0x04,0x07,0xe5,0x04,0x04,
- 0x04,0x02,0xe6,0x13,0x01,0x10,0xe5,0x07,0xe5,0x07,0xe5,0x29,0xe5,0x03,0x03,0x01,
- 0x03,0xe5,0x07,0xe5,0x03,0x04,0x02,0x01,0x03,0xe5,0x01,0x03,0x03,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x0f,0xe5,
- 0x07,0xe5,0x01,0x06,0x0d,0x02,0xe5,0x0d,0xe5,0x07,0xe5,0x07,0xe6,0x06,0x09,0x09,
- 0x09,0x06,0x02,0xe5,0x01,0x05,0xe6,0x03,0x02,0xe5,0x02,0x01,0x02,0x05,0x03,0xe5,
- 0x01,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x02,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe6,
- 0xe5,0x04,0xe5,0x01,0x02,0x02,0x02,0x06,0xe5,0x07,0xe6,0x02,0x03,0x0d,0xe5,0xe7,
- 0x01,0x45,0x06,0x02,0x12,0xe5,0x08,0x32,0x2f,0x02,0x2c,0x02,0xe5,0xe6,0x10,0x09,
- 0x29,0x0b,0x13,0x05,0x03,0x05,0x09,0x0b,0x09,0x09,0x13,0x09,0x13,0x03,0x0f,0x20,
- 0xe5,0xe6,0x0c,0x01,0xe7,0x06,0xe6,0x03,0x01,0xe5,0xe5,0x19,0x04,0x02,0x01,0x04,
- 0x04,0xe6,0x04,0x01,0xe7,0x06,0xe5,0x0d,0xe5,0xe8,0x04,0x02,0xe7,0x03,0x01,0xe7,
- 0x03,0x01,0xe7,0x05,0xe7,0x05,0xe7,0x06,0x01,0x04,0x01,0xe5,0xe5,0x03,0x01,0xe5,
- 0xe5,0x02,0x02,0x09,0xe5,0xe5,0x02,0xe5,0xe8,0x14,0x01,0xe6,0x0c,0x01,0xe6,0x08,
- 0x05,0x01,0xe6,0x1a,0xe5,0x05,0x01,0xe5,0x09,0x02,0x01,0xe5,0xe7,0x04,0x02,0xe5,
- 0x01,0x06,0x05,0x01,0xe6,0x03,0x04,0xe6,0x04,0x01,0xe6,0x03,0xe5,0xe7,0x03,0xe5,
- 0x01,0xe5,0x01,0x04,0xe6,0x08,0x05,0x01,0xe6,0x04,0x01,0xe6,0x06,0xe6,0x06,0xe6,
- 0x04,0x01,0xe6,0x07,0xe5,0xe5,0x02,0xe5,0x02,0x03,0x01,0xe5,0x0b,0x01,0x01,0x0e,
- 0xe5,0xe5,0x02,0x16,0x02,0x07,0x01,0x06,0x0a,0x01,0x01,0x02,0x01,0x02,0x14,0x02,
- 0x07,0xe5,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0xe5,0x07,0x09,0x01,0x18,0x0c,0x06,
- 0x02,0x0a,0x02,0x16,0xe6,0x0c,0x01,0x03,0xe7,0x02,0x02,0xe8,0xe5,0x02,0xe7,0x07,
- 0xe5,0x07,0xe5,0x01,0x05,0xe6,0x06,0xe5,0x02,0x04,0xe6,0xe5,0x02,0x01,0xe5,0x02,
- 0x04,0xe5,0x07,0xe5,0x07,0xe5,0xe5,0x01,0x03,0xe8,0xe5,0x02,0xe8,0xe5,0x02,0xe8,
- 0x01,0x02,0xe7,0x01,0x03,0xe7,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0xe8,0xe5,0x04,
- 0xe5,0x01,0x03,0xe7,0x05,0xe7,0x07,0xe7,0x02,0x02,0x01,0xe5,0x15,0x03,0x05,0x09,
- 0x0d,0x08,0xe5,0x05,0x01,0xe5,0x12,0x06,0x02,0xe5,0x07,0xe5,0x04,0x01,0x0b,0xe6,
- 0x01,0x05,0x09,0xe5,0x06,0xe5,0x02,0x04,0xe5,0x02,0x0c,0x01,0x07,0x01,0xe6,0x10,
- 0x06,0xe5,0xe6,0x04,0xe5,0x01,0xe5,0x0b,0x03,0x11,0x01,0x01,0xe5,0x03,0x01,0x01,
- 0xe5,0x03,0x01,0x01,0xe5,0x0c,0x08,0xe5,0x05,0x01,0x0b,0x09,0x01,0x01,0x05,0x09,
- 0x05,0x01,0x01,0x03,0xe5,0x03,0x02,0xe5,0x01,0x03,0x01,0x03,0x05,0x03,0xe5,0x03,
- 0x03,0x02,0xe5,0xe5,0x02,0x05,0xe5,0x01,0xe5,0xe5,0x01,0xe5,0x02,0x01,0x02,0xe5,
- 0x01,0xe5,0x03,0x06,0x01,0x01,0x01,0xe6,0xe5,0xe5,0xe5,0xe6,0x01,0x02,0x04,0xe5,
- 0x03,0xe6,0xe6,0x13,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x16,0x07,0x01,0xe5,0x12,0x04,
- 0x0d,0x0f,0x05,0x05,0x07,0xe6,0x06,0xe6,0x02,0xe5,0x01,0x01,0x03,0x03,0x01,0x09,
- 0x09,0x08,0xe5,0x0c,0x04,0xe5,0x03,0x03,0xe5,0xe5,0x08,0x0a,0x13,0x09,0x09,0x10,
- 0x08,0xe5,0x05,0x01,0xe5,0x15,0x05,0x07,0x0f,0xe5,0xe5,0x03,0x03,0x01,0xe5,0x05,
- 0x01,0xe5,0x06,0xe7,0x06,0xe5,0x01,0x04,0xe6,0x05,0xe7,0x05,0x01,0x07,0x01,0xe5,
- 0x0b,0x03,0x09,0x05,0x08,0x03,0x01,0xe8,0x16,0x02,0x30,0xe5,0x03,0x01,0xe5,0xe5,
- 0x0f,0x02,0x3e,0xe5,0x03,0x02,0x08,0xe5,0x19,0x02,0x1c,0xe5,0x0c,0x01,0xe6,0xe5,
- 0x08,0x05,0x01,0x05,0x01,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x01,
- 0x05,0xe6,0xe5,0x04,0x01,0x01,0x01,0x03,0x01,0x01,0x05,0x01,0x01,0x02,0x02,0x01,
- 0x01,0x05,0x01,0xe6,0x04,0x01,0x02,0x06,0x01,0x01,0x05,0xe6,0x06,0x01,0x02,0x04,
- 0x01,0x02,0xe5,0x02,0x01,0x07,0xe6,0x06,0x01,0x07,0x01,0x01,0x05,0xe6,0xe5,0x03,
- 0xe7,0xe5,0x04,0x01,0x07,0x01,0x06,0x03,0xe6,0xe5,0x14,0x03,0xe5,0x07,0xe5,0x04,
- 0x18,0x08,0x0d,0xe5,0x02,0xe5,0x05,0x05,0x1b,0xe5,0x07,0xe5,0xe5,0x09,0x05,0xe5,
- 0x05,0x01,0xe5,0x01,0x05,0xe5,0x04,0x02,0xe5,0x04,0x02,0x07,0xe5,0x01,0x02,0x04,
- 0x01,0x07,0x09,0x0b,0x02,0x02,0xe6,0x0a,0x04,0x04,0xe5,0xe5,0x04,0x02,0x1f,0x06,
- 0x03,0x0b,0x02,0x01,0x07,0x0f,0xe6,0x07,0x01,0x03,0x01,0x02,0x01,0x02,0x03,0x04,
- 0x06,0xe5,0x01,0x09,0x04,0xe5,0x03,0x09,0x03,0x06,0x0b,0xe5,0x02,0x02,0x01,0x04,
- 0x0c,0x04,0x05,0x02,0x02,0xe6,0x08,0x18,0x16,0x03,0xe5,0x0c,0x0c,0x04,0x0b,0x03,
- 0x01,0x09,0x08,0x06,0x08,0x02,0x10,0xe5,0x06,0x0a,0xe5,0x04,0x02,0x01,0x0a,0x19,
- 0x03,0x0b,0x05,0x04,0xe7,0x07,0x01,0x02,0xe6,0x09,0x06,0xe6,0x1e,0x05,0x01,0x03,
- 0x03,0xe6,0x06,0x01,0x02,0x07,0x06,0x01,0x04,0x05,0x07,0x09,0xe8,0x01,0x03,0x01,
- 0xe5,0x08,0x0d,0x05,0x17,0x04,0x0b,0x0f,0x01,0x0e,0x02,0xe5,0xe5,0x0b,0x19,0x1e,
- 0x01,0x02,0x06,0x19,0x03,0x01,0x05,0x0b,0x0c,0x08,0x02,0x19,0x06,0x1b,0x03,0x09,
- 0x07,0x01,0x04,0x0b,0x05,0x10,0x09,0x05,0xe5,0x15,0x0b,0x06,0xe5,0x08,0x01,0x0a,
- 0x1a,0xe5,0x04,0x03,0x09,0xe5,0x07,0x0c,0x05,0xe5,0x09,0x07,0xe5,0x0c,0x03,0x05,
- 0x06,0xe5,0x0e,0x05,0x0b,0xe7,0x24,0xe6,0x0f,0x10,0xe5,0x14,0x13,0x04,0x0b,0x04,
- 0xe5,0x01,0x0f,0x0e,0x01,0x02,0x53,0xe8,0x4a,0x36,0x02,0xe5,0x02,0x09,0x09,0x0d,
- 0x02,0x0d,0x09,0x0b,0x01,0x05,0x0a,0x0a,0x07,0x08,0x04,0x01,0xe5,0x34,0xe6,0x02,
- 0x13,0x03,0xe5,0x15,0xe5,0xe5,0x08,0x02,0xe5,0x06,0xe5,0xe6,0x06,0x08,0xe5,0x06,
- 0x01,0x01,0x04,0x02,0x06,0x03,0xe5,0x06,0xe6,0x17,0xe5,0x01,0x01,0x01,0x01,0x06,
- 0x06,0xe5,0x01,0x0c,0x01,0xe6,0xe5,0x35,0x0b,0x0c,0x01,0x01,0x16,0x0c,0x01,0xe5,
- 0x02,0x06,0xe5,0x1e,0x0e,0xe6,0xe5,0x02,0x03,0x01,0x01,0x01,0xe5,0xe5,0x1a,0x0c,
- 0x01,0x07,0x07,0x01,0xe5,0x01,0x08,0x35,0x04,0x02,0x01,0x0a,0x01,0x06,0x01,0x02,
- 0x1c,0xe5,0x02,0x13,0x06,0x02,0x09,0xe5,0xe5,0x01,0xe5,0x04,0x09,0x13,0x09,0x0e,
- 0x04,0x0e,0xe5,0x01,0xe6,0x08,0x19,0x1b,0x09,0x01,0x11,0x0b,0x0a,0x07,0x0d,0x02,
- 0x18,0x08,0x04,0x02,0xe6,0x04,0x03,0x05,0x09,0x02,0xe5,0x06,0xe6,0x01,0x11,0x0c,
- 0x04,0x06,0x0a,0x09,0x09,0x01,0x11,0x05,0xe5,0x03,0x02,0x02,0x11,0xe5,0x03,0x14,
- 0x07,0x0f,0x05,0x09,0x0f,0x12,0xe5,0x13,0x0e,0x06,0x05,0x05,0x04,0x03,0x02,0x02,
- 0xe6,0x11,0x01,0x0a,0x16,0x0d,0x01,0xe5,0x01,0xe6,0x03,0x02,0xe6,0xe5,0xe5,0x02,
- 0xe5,0x01,0xe5,0x03,0xe5,0xe6,0x05,0x09,0x06,0x04,0x05,0xe5,0x01,0x05,0x03,0x05,
- 0x09,0x03,0x16,0x01,0x11,0xe5,0x23,0xe6,0x02,0x02,0x01,0x1c,0x1d,0xe5,0x03,0xe5,
- 0x01,0x01,0x01,0x02,0x01,0xe5,0x0f,0xe5,0xe6,0x01,0x06,0x08,0xe5,0xe5,0x07,0xe5,
- 0xe5,0x05,0x03,0x05,0x03,0x05,0x0d,0x01,0xe5,0x12,0xe5,0x0a,0xe5,0x11,0xe5,0x13,
- 0x01,0x04,0x01,0x04,0x1c,0x0f,0xe5,0x01,0x01,0x09,0x07,0x09,0x03,0xe5,0x07,0x07,
- 0x03,0xe5,0x01,0x01,0x01,0x05,0x0d,0x04,0x01,0xe5,0x05,0xe5,0xe5,0x08,0x04,0x04,
- 0x24,0x01,0x02,0x0a,0x03,0x01,0xe5,0xe5,0x09,0x08,0x05,0x01,0xe5,0x01,0x1e,0x10,
- 0xe5,0xe5,0xe5,0x06,0x09,0x01,0x07,0x13,0x09,0x05,0xe5,0x01,0x0b,0x09,0x09,0x09,
- 0x2e,0xe5,0xe5,0x09,0x05,0x0d,0x02,0x09,0x02,0x02,0xe5,0x20,0x1f,0x06,0xe5,0xe5,
- 0x03,0x01,0xe5,0x14,0x06,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x01,0xe5,0x03,
- 0xe5,0x01,0x05,0x09,0x04,0x04,0x04,0x01,0x02,0x09,0x04,0x01,0x02,0x09,0x04,0x01,
- 0xe5,0xe5,0xe5,0xe5,0x02,0xe5,0x02,0x03,0x02,0xe5,0x01,0x03,0x0f,0xe6,0x01,0x1e,
- 0x03,0x13,0x05,0x03,0x03,0xe6,0xe5,0xe5,0xe5,0x01,0xe5,0x02,0x0f,0x03,0x03,0xe5,
- 0x04,0x03,0xe5,0x03,0x03,0x02,0x04,0x03,0x05,0x09,0x04,0x03,0x05,0x04,0x0e,0x01,
- 0x01,0x0f,0x02,0x09,0x06,0x04,0x01,0x01,0x03,0x0a,0x02,0xe5,0xe7,0x1f,0x13,0x01,
- 0x04,0x04,0x05,0x01,0x01,0x07,0x04,0x09,0x06,0x05,0x01,0x01,0x05,0x01,0x07,0x02,
- 0xe5,0x06,0x01,0x01,0x07,0x01,0x07,0x06,0x01,0xe5,0xe5,0x0a,0x01,0xe5,0x01,0x01,
- 0x01,0x01,0xe5,0x06,0xe6,0x01,0x01,0x0a,0x06,0x01,0x02,0x14,0xe5,0x02,0x02,0x1e,
- 0x13,0x01,0x05,0x01,0x09,0x01,0x07,0x13,0x09,0x04,0x04,0x04,0x06,0x04,0x04,0x01,
- 0x02,0x04,0x01,0x02,0x04,0x03,0xe5,0xe5,0x01,0x04,0x09,0x04,0x01,0x02,0x08,0xe5,
- 0x03,0x01,0xe6,0x07,0x03,0x01,0x1c,0xe5,0xe5,0x01,0x2e,0x02,0x10,0x02,0x06,0xe5,
- 0x1b,0xe5,0x07,0xe5,0x2e,0x02,0x01,0xe5,0x05,0x02,0x03,0x09,0x09,0x09,0x09,0x02,
- 0x13,0xe5,0x0c,0x32,0xe5,0x39,0xe5,0x15,0x21,0xe5,0x01,0xe5,0x07,0x05,0xe5,0x07,
- 0xe5,0x07,0xe5,0x0b,0x09,0x01,0x0d,0xe5,0x01,0x09,0xe6,0xe6,0x0a,0x02,0x09,0x09,
- 0x09,0x09,0x04,0x01,0x02,0x04,0x01,0x02,0x09,0x09,0x09,0x02,0x03,0x02,0x06,0x02,
- 0x0b,0x09,0x06,0x02,0x09,0xe5,0x04,0x02,0x05,0x03,0xe6,0x06,0xe6,0x06,0xe5,0x02,
- 0x01,0x02,0xe5,0x01,0x05,0xe5,0x03,0xe5,0x01,0x04,0x01,0x02,0x01,0x03,0x07,0x01,
- 0x02,0x02,0x08,0xe5,0x30,0x09,0x24,0x02,0x08,0xe5,0x08,0x0b,0x06,0x02,0x12,0x28,
- 0x12,0xe5,0x08,0x0e,0x03,0xe5,0xe5,0x09,0x31,0x0a,0x25,0x09,0x0a,0x0b,0x09,0x10,
- 0x27,0x01,0x15,0x07,0x18,0x0f,0x1b,0x01,0x07,0x01,0x07,0x01,0x18,0x04,0x07,0x01,
- 0x09,0x02,0x01,0x02,0x01,0x02,0x05,0x02,0x02,0x06,0x02,0x04,0x01,0x02,0x01,0x02,
- 0x01,0xe5,0xe5,0x05,0x02,0x06,0xe7,0x05,0xe7,0x03,0x01,0xe7,0x06,0x06,0x01,0xe6,
- 0x04,0x0c,0xe5,0x0b,0x01,0x01,0x0d,0x02,0x1a,0x01,0xe5,0x04,0xe5,0xe6,0x05,0x01,
- 0xe5,0x08,0x12,0xe5,0x04,0xe5,0xe6,0x05,0x03,0x05,0x03,0x07,0x01,0x01,0x05,0x01,
- 0x01,0x05,0x03,0x05,0x01,0xe6,0x06,0x01,0x07,0xe6,0x06,0xe6,0x03,0xe5,0xe7,0x08,
- 0x04,0xe5,0x01,0x08,0x01,0x02,0x02,0x01,0x01,0x05,0xe5,0x02,0x03,0xe7,0x0d,0x04,
- 0x15,0x07,0x02,0x01,0x03,0x03,0x01,0x0e,0x0e,0x0d,0xe5,0x01,0x01,0x03,0x03,0x01,
- 0x03,0x07,0x03,0x05,0x03,0x03,0x01,0x03,0x0f,0x03,0x02,0x02,0xe5,0x04,0x02,0xe5,
- 0x02,0x13,0x02,0x01,0xe5,0x02,0x02,0x05,0x05,0xe5,0x04,0x07,0xe5,0x01,0x0d,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,
- 0xe5,0x01,0x05,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0x06,0xe5,0xe6,0xe5,0x04,0xe6,0xe5,
- 0x04,0xe6,0x06,0xe5,0x07,0xe6,0x06,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x02,0x04,
- 0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe7,0x02,0x02,0xe7,0x0e,
- 0x1b,0x01,0x0a,0x06,0x01,0x14,0x08,0xe5,0x05,0x01,0x09,0x09,0x1f,0x07,0x01,0xe5,
- 0x07,0x09,0x09,0xe5,0x05,0x01,0xe5,0x0f,0x01,0x09,0x09,0x0e,0x01,0x01,0x0d,0x1d,
- 0x01,0x0a,0x06,0x01,0x14,0x08,0x07,0x01,0x07,0x03,0x09,0x07,0x03,0x05,0x03,0x09,
- 0x05,0x01,0xe5,0xe5,0x05,0x01,0x07,0x02,0x06,0x02,0x04,0x01,0x02,0x09,0x04,0x01,
- 0x07,0x04,0x06,0x02,0x04,0xe5,0x03,0xe5,0xe8,0x07,0x02,0x02,0x31,0x07,0x15,0xe5,
- 0x1b,0x1f,0x13,0x09,0x09,0xe5,0x08,0x08,0x07,0x01,0x09,0x09,0x07,0x09,0xe5,0x01,
- 0x0a,0x0c,0x1d,0x06,0x01,0x0a,0x09,0x08,0xe5,0x08,0x1c,0x09,0x1d,0x0b,0x09,0x1b,
- 0x01,0xe5,0x05,0x0b,0x0c,0x03,0x01,0x0b,0x15,0xe5,0xe5,0x0d,0x15,0x01,0xe5,0x05,
- 0xe5,0xe5,0x1b,0xe5,0x05,0x02,0x08,0x09,0x01,0xe5,0x0f,0x01,0xe5,0xe5,0x03,0x01,
- 0xe5,0x1e,0x04,0x02,0x10,0x02,0x04,0x08,0x03,0x07,0x01,0x11,0x01,0xe6,0x04,0x01,
- 0xe5,0x02,0x02,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0xe5,0x05,0x01,
- 0x04,0x02,0x01,0x01,0x05,0x01,0x01,0xe5,0x03,0xe6,0xe5,0x04,0x01,0x04,0x01,0xe5,
- 0xe7,0x02,0x03,0x01,0x04,0x02,0x01,0x01,0x05,0x01,0x04,0x01,0xe5,0xe6,0xe5,0xe5,
- 0x01,0x01,0x07,0x01,0x07,0x01,0x06,0xe5,0xe5,0x03,0x02,0x01,0x07,0x01,0x03,0x03,
- 0x01,0x07,0x01,0x02,0x07,0xe5,0x01,0x4a,0xe6,0x0b,0x05,0xe5,0xe5,0x05,0xe5,0x0b,
- 0x03,0x05,0x0b,0x05,0xe5,0x01,0x05,0xe5,0x01,0x0f,0xe5,0x01,0x0b,0x03,0x09,0x07,
- 0x13,0x03,0x08,0x0a,0x03,0x02,0xe5,0x0a,0x09,0x09,0x1d,0x08,0x01,0x03,0x04,0x09,
- 0x04,0x06,0x0e,0x02,0x06,0x02,0x08,0x02,0xe5,0x01,0x02,0x03,0x05,0x07,0x01,0x03,
- 0x05,0xe5,0x07,0x09,0x0c,0x09,0x09,0x06,0x02,0xe5,0x05,0x08,0xe5,0xe7,0xe5,0x01,
- 0x03,0x01,0x08,0x37,0x03,0x07,0x05,0x01,0x01,0x06,0x01,0x01,0x0b,0x01,0x15,0x01,
- 0x04,0x02,0x01,0x0c,0x06,0x13,0x09,0x05,0x06,0xe5,0x01,0x27,0xe7,0x0a,0x10,0x08,
- 0xe5,0x06,0x08,0x07,0x01,0x07,0x02,0x0b,0x09,0x0a,0x03,0x01,0x05,0x01,0x01,0x02,
- 0x09,0x02,0x03,0x01,0x01,0x05,0x01,0xe5,0x0c,0x01,0x04,0xe5,0x06,0x1a,0x01,0x07,
- 0xe6,0x06,0xe5,0x01,0xe5,0x05,0x0e,0x03,0x35,0x09,0x02,0x09,0x03,0x01,0x09,0x07,
- 0x07,0x06,0x09,0x07,0x08,0x09,0x04,0x18,0xe5,0x07,0x19,0x05,0xe5,0x06,0x11,0x0c,
- 0x01,0x13,0x09,0x0f,0x02,0x06,0x01,0x02,0x04,0x09,0x01,0x1f,0x03,0x05,0x03,0xe6,
- 0x02,0x03,0x03,0x03,0x09,0x03,0x04,0x0a,0x06,0x09,0x01,0x0a,0x05,0xe5,0x05,0x05,
- 0x09,0x0d,0x03,0x0d,0x01,0xe5,0x08,0x1a,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,
- 0x06,0x02,0x03,0x02,0x01,0x07,0x02,0x04,0x01,0x01,0xe5,0x08,0x03,0x01,0xe5,0xe6,
- 0x01,0x01,0x02,0xe5,0x01,0x04,0x01,0x09,0x09,0x09,0x09,0x09,0xe6,0x36,0x01,0xe5,
- 0x02,0x11,0x1c,0x11,0x10,0x0b,0x07,0x04,0x1a,0x02,0x04,0x03,0x04,0xe5,0x08,0x03,
- 0xe5,0x03,0x04,0x04,0x03,0x05,0x0e,0xe5,0x0a,0x06,0x1b,0x05,0x01,0x0d,0xe5,0x01,
- 0x05,0xe5,0x07,0xe5,0x08,0x03,0x1f,0x0c,0x09,0x01,0x0a,0x0b,0x04,0x0a,0x15,0x04,
- 0x0e,0x07,0x09,0xe6,0x12,0x04,0x03,0x0f,0x0a,0xe5,0xe6,0x02,0x06,0x02,0x01,0x07,
- 0x01,0x07,0x01,0x08,0x0c,0x09,0x18,0xe5,0x19,0x07,0x04,0x20,0x13,0x0f,0x02,0xe5,
- 0x14,0xe5,0x04,0x16,0x04,0x01,0xe5,0x16,0x01,0x07,0x01,0x02,0x06,0x06,0x02,0x06,
- 0x02,0x09,0x13,0x06,0x0c,0x07,0x01,0x06,0x02,0x01,0x06,0x13,0x09,0x25,0x02,0x01,
- 0x03,0xe5,0xe5,0x05,0x09,0x15,0x02,0xe5,0x06,0x10,0x09,0x07,0xe6,0x06,0xe6,0x06,
- 0xe6,0x06,0xe6,0x05,0x02,0x02,0x06,0x02,0x06,0x02,0x03,0x02,0xe5,0xe5,0x01,0xe5,
- 0x01,0xe5,0x03,0x05,0xe5,0xe5,0x01,0x01,0x01,0xe5,0xe5,0x01,0xe6,0xe8,0x01,0x01,
- 0x01,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x01,0xe6,0xe5,0x01,0x04,0x01,0x13,0x2b,0xe6,
- 0x01,0x02,0x02,0x0d,0x04,0x09,0x21,0x08,0x07,0x02,0x04,0x01,0x09,0x01,0x05,0x01,
- 0x08,0x09,0x02,0x0b,0x27,0x09,0x10,0x0e,0x0c,0x04,0x0c,0xe6,0xe7,0x06,0xe5,0x05,
- 0x05,0x03,0x05,0x01,0x01,0x05,0x06,0xe5,0xe5,0xe5,0xe5,0x01,0xe5,0xe5,0x02,0x02,
- 0x01,0xe5,0x02,0x02,0xe5,0xe5,0x02,0x05,0x01,0x01,0x05,0x03,0x05,0x01,0x01,0x02,
- 0xe5,0xe5,0x02,0x02,0xe5,0x02,0x01,0x01,0x02,0xe5,0xe5,0x02,0x02,0xe5,0xe5,0x02,
- 0xe5,0xe6,0xe5,0x02,0x05,0x03,0x01,0xe5,0x01,0x01,0x01,0x02,0xe5,0x04,0x05,0x01,
- 0x01,0x06,0x08,0x20,0x01,0x03,0xe6,0x01,0x01,0x05,0xe5,0x03,0x03,0x01,0xe5,0x01,
- 0x03,0x01,0xe5,0x01,0x08,0x04,0xe5,0x02,0x01,0x02,0xe5,0x02,0x01,0x01,0xe5,0x03,
- 0x04,0xe5,0x02,0x01,0x07,0xe5,0x02,0xe5,0x02,0x09,0x01,0x02,0x01,0x02,0x04,0x01,
- 0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0xe5,0x07,0x01,0x02,0x01,
- 0x02,0x08,0xe5,0xe5,0x04,0x02,0x06,0xe5,0x04,0x01,0xe5,0x20,0x02,0x03,0x04,0x12,
- 0x09,0x06,0x04,0x04,0x04,0x02,0x01,0x04,0x02,0x01,0x04,0x01,0xe5,0xe5,0x03,0x04,
- 0x04,0x04,0x04,0x01,0xe5,0xe5,0x03,0x02,0x01,0x04,0x01,0xe5,0xe5,0x05,0x01,0xe5,
- 0xe5,0x03,0x01,0x02,0x04,0x01,0x02,0x04,0x04,0x04,0x04,0x04,0x01,0x02,0x02,0x04,
- 0x04,0x0b,0x07,0x06,0xe5,0xe5,0xe5,0x17,0xe8,0x01,0x14,0x09,0x06,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x02,0x06,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0xe5,0xe5,0x08,
- 0x09,0x05,0xe5,0x01,0x01,0x12,0x02,0x01,0xe5,0x02,0x12,0x04,0x04,0x04,0x04,0x06,
- 0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,
- 0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,
- 0x02,0x01,0x01,0x04,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,
- 0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0xe5,0x01,0xe5,0x03,0x09,0x06,0x04,
- 0x01,0xe5,0x03,0x09,0x14,0x04,0x02,0x14,0x03,0x05,0x03,0x05,0x03,0x02,0x01,0xe5,
- 0x02,0x02,0x01,0xe5,0x02,0x02,0x01,0xe5,0x02,0x02,0x01,0xe5,0x02,0x02,0x01,0xe5,
- 0x02,0x02,0x01,0xe5,0x02,0x01,0x02,0xe5,0x02,0x01,0x02,0xe5,0x02,0x01,0x02,0x01,
- 0xe5,0x02,0x01,0x02,0xe5,0x02,0x01,0x02,0xe5,0x02,0x01,0x02,0xe5,0x02,0x04,0xe5,
- 0x02,0x01,0x02,0xe5,0x02,0x02,0x01,0xe5,0x02,0x0a,0x04,0x03,0x01,0x02,0xe5,0x02,
- 0x09,0x13,0x01,0x01,0xe8,0x10,0xe6,0x01,0x04,0xe6,0x01,0x03,0xe7,0x01,0x03,0x02,
- 0x02,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x09,0x03,0x05,0x03,0x05,0x0b,0x04,
- 0x04,0x09,0x03,0x05,0x07,0x01,0x09,0x0b,0x02,0x01,0x02,0x01,0x09,0x07,0x03,0x01,
- 0xe5,0x01,0x01,0x01,0xe5,0xe5,0xe5,0x0f,0xe6,0x01,0x11,0xe5,0xe5,0xe6,0x02,0xe5,
- 0xe5,0xe6,0x03,0x01,0x01,0x02,0x02,0x01,0xe6,0x01,0x02,0x01,0x01,0x02,0x02,0x01,
- 0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x01,0xe5,0xe5,0xe5,0x01,0x02,
- 0x06,0x02,0xe6,0x03,0x01,0xe7,0x05,0x01,0xe7,0x03,0x01,0xe7,0x03,0x02,0xe6,0x03,
- 0x01,0xe5,0x05,0x01,0xe7,0x03,0x01,0xe5,0x05,0x01,0xe5,0xe6,0xe5,0xe5,0x01,0x04,
- 0x09,0x04,0x04,0x01,0x02,0x14,0xe7,0xe5,0x0f,0x09,0x09,0x06,0x02,0x02,0x03,0x02,
- 0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,
- 0x03,0x02,0x02,0x03,0x02,0x02,0x05,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
- 0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x06,0x02,0x01,0x07,0xe5,0x0e,0x09,0x17,
- 0x01,0xe6,0x0f,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x01,0x03,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x06,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,
- 0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x18,0xe5,0x07,0xe5,0x19,0xe5,0x08,
- 0x01,0x02,0xe5,0x07,0xe5,0xe5,0x05,0xe6,0x01,0x01,0xe5,0xe8,0x01,0x01,0x01,0xe6,
- 0x04,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe6,0x04,
- 0x01,0xe6,0x04,0x01,0xe5,0x07,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0xe5,0x03,0x01,0xe5,0x04,0x02,0x09,0x09,0xe7,
- 0x05,0xe6,0x06,0x0d,0xe5,0x02,0x02,0x09,0x1d,0xe5,0x08,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x07,0xe5,0x08,0x2c,0x03,0x01,0xe5,
- 0x08,0x07,0x09,0x0d,0x01,0x09,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0xe5,
- 0x04,0x02,0x06,0x02,0x06,0x02,0xe5,0x05,0xe5,0x01,0xe5,0x04,0x02,0xe5,0x04,0x02,
- 0x06,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x02,0x08,0x31,0x03,
- 0x0c,0x02,0xe7,0x05,0xe7,0x05,0xe7,0x05,0xe5,0xe5,0x03,0x02,0xe6,0x03,0x02,0xe6,
- 0x02,0xe5,0x01,0x01,0x04,0x02,0xe6,0x03,0x02,0x01,0x04,0x02,0x01,0x04,0x02,0xe6,
- 0x03,0x02,0xe6,0x05,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x02,
- 0xe5,0x01,0xe6,0x03,0x02,0x01,0x04,0x02,0xe6,0x05,0x02,0x06,0x0a,0xe6,0x06,0xe6,
- 0x14,0x01,0xe6,0x0c,0x02,0xe5,0x06,0xe6,0x06,0xe6,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x03,0xe5,0x01,0xe5,0x04,0x02,0xe5,0x03,0xe5,0x01,0xe5,0x04,0x02,0xe5,0x01,0x02,
- 0x02,0xe5,0x03,0xe5,0x01,0xe5,0x03,0xe5,0x01,0xe5,0x03,0x02,0x02,0xe5,0x03,0xe5,
- 0x01,0xe5,0x03,0xe5,0x01,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x03,0xe5,0x01,0xe5,
- 0x04,0x02,0xe5,0x04,0x03,0x05,0x01,0xe5,0x02,0x06,0x09,0x17,0x02,0xe5,0x08,0x04,
- 0x01,0x07,0x01,0x07,0x10,0x02,0x09,0x09,0x09,0x09,0x06,0x02,0x09,0xe5,0x02,0x04,
- 0xe5,0x06,0x02,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x02,0x04,0x04,0xe5,0x07,0x04,0x04,
- 0x09,0x03,0xe5,0x03,0x0a,0x02,0xe5,0x04,0x17,0x01,0x01,0x0d,0x05,0xe7,0x01,0x03,
- 0xe7,0x01,0xe5,0x01,0xe7,0x05,0xe5,0xe5,0x01,0xe5,0x01,0xe5,0xe5,0x01,0xe5,0x01,
- 0xe5,0xe5,0x01,0x03,0xe7,0x01,0xe5,0x01,0xe7,0x01,0x03,0xe7,0x01,0x04,0xe6,0x01,
- 0x03,0xe7,0x01,0x03,0xe7,0x03,0x03,0xe7,0x01,0x03,0x01,0xe5,0x01,0x04,0xe6,0x01,
- 0xe5,0x01,0xe7,0x01,0x04,0xe6,0x01,0x03,0xe7,0x01,0xe5,0x03,0xe5,0x01,0x03,0x01,
- 0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x05,0xe7,0x07,0xe5,0x07,0x01,0xe5,0x0e,0x06,0x02,
- 0x06,0x02,0xe6,0x03,0xe5,0xe6,0x07,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,
- 0x06,0xe5,0x07,0xe6,0x06,0xe6,0x08,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe5,0x07,0xe6,
- 0x06,0xe5,0x07,0xe6,0x06,0x07,0x01,0xe5,0x0e,0x03,0x05,0x0c,0x05,0xe7,0x0c,0x04,
- 0xe5,0xe6,0x01,0x02,0xe5,0xe6,0x01,0x02,0xe5,0xe7,0xe6,0xe6,0x01,0x02,0x02,0xe5,
- 0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0x01,
- 0xe6,0x01,0xe5,0xe5,0x02,0x02,0x02,0xe5,0x01,0x02,0x02,0x02,0xe5,0x03,0x02,0x01,
- 0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x03,
- 0x02,0xe5,0xe5,0xe5,0xe5,0x01,0x02,0x04,0x04,0x03,0xe5,0xe5,0x0b,0x02,0xe5,0x04,
- 0xe5,0xe6,0x10,0x01,0xe6,0x0e,0x04,0xe5,0x02,0x04,0xe5,0x02,0x04,0xe5,0xe5,0x05,
- 0xe7,0x05,0xe7,0x05,0xe7,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x04,0x01,0x01,0x06,0xe5,
- 0xe5,0x05,0xe5,0xe5,0x04,0xe6,0x01,0xe5,0x04,0x01,0x01,0x07,0x01,0x07,0x01,0x02,
- 0x02,0x01,0x01,0x06,0xe5,0xe5,0x04,0x01,0x01,0x07,0x03,0x03,0x01,0x01,0x01,0xe5,
- 0x0d,0x04,0x03,0xe5,0x11,0xe5,0xe6,0x0c,0x05,0x05,0x03,0x05,0x03,0x05,0x03,0x03,
- 0x05,0x03,0x05,0x03,0x05,0x01,0xe6,0x04,0x01,0xe6,0x04,0xe5,0xe6,0x04,0x01,0xe6,
- 0x04,0x01,0xe6,0x04,0x02,0x02,0x05,0xe8,0x04,0xe8,0x04,0xe8,0x04,0xe8,0x04,0x01,
- 0xe6,0x04,0xe8,0x04,0x01,0x03,0x03,0xe8,0xe6,0x0b,0xe5,0x07,0x14,0xe8,0x18,0xe5,
- 0x05,0xe5,0xe5,0xe5,0x01,0x3b,0x09,0x2f,0x23,0x09,0xe5,0xe5,0x0c,0x02,0x02,0x25,
- 0x01,0x0f,0x01,0x07,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0xe5,0x05,0x01,0x07,
- 0x01,0x07,0x01,0xe5,0x05,0xe6,0x06,0x01,0x07,0x01,0x07,0x01,0x09,0x01,0x07,0x01,
- 0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x04,0xe5,0xe5,0xe5,0x04,0x01,0x02,0xe5,0x02,
- 0x01,0x01,0x01,0x03,0x01,0x01,0x05,0x01,0xe6,0x02,0x01,0x01,0x07,0x01,0x01,0x05,
- 0x01,0x0b,0x01,0xe5,0x01,0xe5,0x20,0x04,0x03,0x01,0x07,0x02,0x06,0x02,0x05,0xe5,
- 0x01,0x06,0x02,0x05,0xe5,0x07,0xe5,0x01,0x06,0x0f,0x01,0x10,0x09,0x05,0xe5,0x01,
- 0x01,0xe5,0x01,0x03,0xe5,0x03,0xe5,0x07,0x03,0x07,0x01,0x05,0x05,0x0d,0x15,0x04,
- 0xe7,0x0a,0x09,0x04,0x04,0x0b,0x07,0x01,0x04,0x01,0xe5,0xe5,0x04,0xe5,0xe5,0xe6,
- 0x03,0xe6,0x04,0x01,0xe5,0xe5,0x06,0xe5,0x09,0x07,0x0f,0x0f,0x09,0x01,0x11,0xe5,
- 0x04,0x06,0xe5,0xe5,0x01,0x0e,0xe5,0x0c,0x1a,0xe5,0x02,0x0c,0x04,0x1f,0x0c,0x07,
- 0x01,0x07,0x07,0x06,0x02,0x01,0x04,0x03,0x02,0x06,0x02,0x05,0x03,0x01,0x09,0x05,
- 0x01,0x0e,0x02,0x06,0x02,0x03,0x01,0x02,0x01,0xe5,0x03,0x03,0x0e,0x14,0x1a,0xe6,
- 0x08,0x08,0x22,0x06,0x02,0x09,0x09,0x07,0x01,0x01,0x07,0x09,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0x01,0xe5,0x05,0x01,0x01,0x05,0x01,0xe5,0x11,0xe5,0xe5,0x07,0x1b,0x01,
- 0x01,0x25,0xe5,0x02,0xe5,0x01,0x11,0x18,0x0c,0x0a,0x09,0x03,0xe5,0x03,0x09,0x02,
- 0xe6,0x02,0x0d,0x09,0x03,0xe5,0x0a,0x01,0x0e,0xe5,0x07,0x09,0x0a,0x26,0x09,0x0f,
- 0xe6,0x01,0x01,0x08,0x11,0x08,0x03,0x05,0x03,0xe6,0x02,0x03,0x04,0xe6,0x06,0xe5,
- 0x02,0x04,0xe5,0x02,0x03,0x01,0x01,0x0a,0x06,0x0d,0x03,0x03,0x03,0x09,0x09,0xe5,
- 0x07,0x04,0xe6,0x01,0x03,0x01,0xe5,0xe5,0x0f,0x06,0x24,0x09,0xe5,0x02,0x02,0x0e,
- 0x0f,0x09,0x02,0x06,0x06,0x02,0x01,0x05,0x01,0x09,0x02,0x06,0x04,0x02,0x0b,0x15,
- 0x0d,0x0f,0x09,0x09,0x05,0x03,0x04,0x04,0x2e,0x08,0xe6,0x01,0x03,0x27,0x02,0x01,
- 0x02,0xe5,0x0d,0xe5,0x05,0x07,0x03,0x02,0x13,0x16,0x1a,0x04,0x03,0xe5,0x03,0x15,
- 0x04,0x1b,0x1b,0x03,0xe5,0x01,0x13,0x0e,0x02,0x05,0xe5,0x01,0x05,0xe6,0x05,0x01,
- 0x11,0xe6,0x06,0x04,0x01,0x02,0x09,0xe5,0x0f,0x02,0xe5,0x02,0x0b,0x05,0x07,0x03,
- 0x03,0x01,0xe5,0x04,0x03,0x06,0x0c,0xe5,0xe5,0x02,0x0c,0xe5,0x04,0x01,0x0b,0x04,
- 0x09,0x01,0xe5,0xe5,0x02,0x1f,0x07,0x02,0x04,0x04,0x02,0x04,0x12,0xe5,0x0e,0x0c,
- 0x05,0xe5,0xe5,0x04,0xe5,0x02,0xe5,0x08,0x06,0x05,0x03,0x0d,0x09,0x0f,0x03,0xe5,
- 0x0f,0x03,0x10,0x02,0x0a,0x03,0xe5,0x01,0x0b,0x06,0x10,0x02,0x0b,0x04,0x0d,0x06,
- 0x06,0x01,0x02,0x01,0x01,0x02,0x03,0x02,0x02,0x03,0x05,0x15,0x0b,0xe5,0x01,0x08,
- 0x01,0x02,0x06,0x03,0x03,0x04,0x0a,0x01,0x01,0x04,0x06,0x0b,0x07,0x0c,0x0e,0xe9,
- 0xe5,0x1f,0x13,0x22,0x04,0x08,0xe5,0xe5,0x06,0x03,0x09,0x02,0x04,0x03,0x0c,0x04,
- 0x01,0x04,0xe5,0x02,0x08,0xe5,0x04,0x02,0x10,0xe5,0x0d,0x16,0xe5,0xe5,0x0b,0x03,
- 0x1b,0x08,0x13,0x21,0x05,0x07,0x0b,0x15,0x1c,0x0c,0x07,0x13,0x0c,0x12,0xe5,0x03,
- 0x03,0x03,0x09,0xe8,0x20,0x01,0x01,0xe5,0x04,0xe5,0x08,0x01,0xe5,0x04,0xe5,0x01,
- 0x01,0x03,0xe5,0x08,0x09,0xe5,0x06,0xe5,0x08,0x01,0xe5,0x01,0x02,0x03,0xe5,0x06,
- 0x05,0x02,0xe5,0x01,0x01,0x04,0x0c,0xe5,0x03,0xe5,0x08,0xe5,0x06,0x0a,0x02,0xe5,
- 0x02,0xe5,0xe5,0x06,0xe5,0x11,0xe6,0x08,0x04,0xe5,0x01,0x01,0x1d,0x02,0xe5,0x0e,
- 0x02,0xe5,0xe5,0xe7,0x04,0xe5,0x0d,0x07,0x02,0x05,0xe5,0x01,0x06,0x02,0x02,0x01,
- 0xe5,0x05,0xe5,0x03,0x05,0x01,0xe5,0x02,0x01,0xe5,0x01,0xe5,0xe5,0x05,0xe5,0x04,
- 0xe5,0xe6,0x03,0xe5,0x02,0x02,0x10,0x02,0xe5,0xe6,0x0d,0x10,0xe5,0x01,0x07,0x01,
- 0x02,0x02,0xe5,0x03,0x04,0xe5,0x01,0x01,0x13,0x03,0xe5,0x01,0x01,0x01,0x02,0xe5,
- 0x02,0x09,0x01,0x01,0xe5,0x01,0x01,0x01,0x01,0xe5,0x01,0x02,0x03,0xe5,0x02,0x02,
- 0x04,0x01,0x04,0x01,0x02,0x02,0x04,0x01,0x04,0x01,0x04,0x01,0xe5,0x03,0x01,0x09,
- 0x04,0xe5,0x02,0x09,0x01,0x01,0xe5,0x03,0x04,0x01,0xe5,0xe5,0x03,0xe5,0x02,0x03,
- 0xe5,0x01,0x01,0x1d,0x03,0xe5,0x03,0x05,0xe7,0x01,0x06,0xe5,0x01,0x01,0x0d,0xe5,
- 0x07,0xe5,0x01,0x01,0x04,0xe5,0x0a,0x05,0xe5,0x01,0x01,0x07,0xe5,0x01,0x02,0x0c,
- 0x01,0x11,0x01,0x04,0xe5,0x0c,0x01,0x07,0x05,0xe5,0x01,0x09,0x13,0x01,0x04,0x08,
- 0xe5,0x01,0x01,0x1b,0x05,0xe5,0x05,0x02,0x02,0xe5,0x25,0x01,0x01,0xe5,0xe5,0x0b,
- 0x01,0x01,0xe5,0xe5,0x02,0x02,0xe5,0xe5,0x08,0xe5,0xe5,0x01,0x06,0xe5,0x01,0x02,
- 0x04,0x01,0x05,0xe5,0x01,0xe5,0x0f,0x01,0x01,0xe5,0x0a,0x02,0xe5,0x01,0x05,0x04,
- 0x01,0x04,0x01,0x05,0xe5,0x01,0xe5,0xe5,0x04,0x06,0x01,0x01,0x20,0x04,0x01,0x06,
- 0x01,0x01,0xe5,0x01,0x0e,0x13,0x04,0xe5,0xe5,0xe5,0x08,0x04,0xe5,0xe5,0xe5,0x01,
- 0x01,0xe5,0xe5,0xe5,0x06,0x0b,0x05,0x03,0x02,0x01,0x04,0x02,0x01,0xe5,0x02,0x0b,
- 0x04,0xe5,0x02,0x05,0x03,0x0a,0x01,0x01,0xe5,0xe5,0xe5,0x01,0x01,0x04,0x05,0x01,
- 0x01,0x09,0x04,0x04,0x19,0x03,0x09,0x03,0xe5,0xe6,0x0b,0x01,0x13,0x02,0x01,0xe5,
- 0xe5,0xe5,0x01,0x06,0x02,0x02,0x01,0x01,0x07,0x01,0x07,0x01,0x09,0x07,0x01,0x02,
- 0x06,0x04,0x02,0x01,0x02,0xe6,0x05,0x02,0x02,0x01,0x01,0x09,0x01,0x01,0xe5,0x01,
- 0x01,0x02,0x04,0x01,0x09,0x07,0x01,0x04,0x04,0x02,0x02,0x01,0x01,0x04,0x01,0x16,
- 0x0d,0x01,0x01,0xe5,0x0c,0x01,0x13,0x01,0xe5,0xe8,0xe5,0x08,0x01,0xe5,0x03,0x01,
- 0x07,0x01,0x07,0x01,0x01,0xe5,0x05,0x01,0xe5,0xe5,0xe6,0xe5,0x03,0x01,0x02,0x01,
- 0xe5,0xe6,0xe5,0xe5,0x0a,0x01,0xe5,0xe5,0xe6,0xe5,0x06,0x04,0x01,0x01,0xe5,0xe5,
- 0x01,0x01,0x02,0x01,0x09,0x01,0xe5,0x03,0x01,0x03,0xe6,0x02,0x01,0xe7,0x01,0x01,
- 0x04,0x16,0x0d,0x04,0x01,0x24,0x13,0x02,0x24,0x13,0x02,0x01,0xe5,0x0e,0x02,0x02,
- 0x0d,0x0c,0xe6,0x06,0x02,0x03,0x02,0x09,0x02,0x03,0x02,0xe5,0x09,0x23,0x01,0x01,
- 0xe7,0x23,0xe5,0x01,0x0f,0xe5,0x01,0x01,0x17,0xe5,0x01,0xe5,0x03,0xe5,0x11,0xe5,
- 0x01,0x11,0xe5,0x01,0x0f,0xe5,0x15,0x05,0xe5,0x03,0x07,0x05,0xe5,0x33,0xe6,0xe6,
- 0x08,0x01,0x02,0x09,0x06,0x02,0xe5,0x03,0x03,0x06,0x02,0xe5,0x03,0x03,0x06,0x02,
- 0x09,0xe5,0x07,0xe5,0x07,0x09,0xe5,0x03,0x03,0x06,0x04,0xe5,0x02,0xe6,0x01,0x09,
- 0xe6,0x06,0x09,0x05,0xe5,0x01,0xe5,0x07,0x05,0x03,0xe5,0x07,0x09,0x09,0x09,0x0d,
- 0xe5,0xe5,0xe5,0x01,0x09,0x12,0xe5,0x08,0x08,0xe5,0x08,0x06,0x3d,0xe5,0x0a,0x13,
- 0x12,0xe5,0x49,0x02,0xe5,0xe6,0x09,0x14,0x05,0x02,0x0a,0x05,0x02,0x24,0x13,0x0d,
- 0x02,0x04,0x03,0x13,0x13,0x05,0x13,0x34,0xe8,0xe5,0x0c,0x14,0xe6,0x03,0x01,0x0a,
- 0xe6,0x03,0x01,0x07,0x01,0x09,0xe7,0x06,0xe6,0x03,0x01,0x0a,0xe6,0x02,0xe5,0xe5,
- 0x0b,0xe6,0x03,0x01,0x07,0x01,0xe7,0x05,0x02,0x03,0xe5,0xe5,0x09,0xe6,0x03,0x01,
- 0x0a,0xe6,0x23,0x0e,0xe8,0x0c,0x02,0x13,0xe5,0x04,0x01,0xe5,0x04,0x03,0xe5,0x01,
- 0x02,0x01,0xe5,0x05,0x01,0xe5,0x07,0xe6,0xe6,0x04,0xe5,0x04,0x01,0xe5,0x02,0x05,
- 0xe5,0x04,0x01,0xe5,0x0a,0xe5,0x04,0x01,0xe5,0x02,0x02,0x01,0xe6,0x01,0x04,0x01,
- 0x05,0x01,0xe5,0x04,0x03,0xe5,0x01,0x02,0x01,0xe5,0x02,0x01,0x03,0xe5,0x24,0xe5,
- 0x0c,0x02,0xe5,0x0e,0x0e,0x06,0x05,0x01,0x04,0x05,0x06,0x01,0x07,0x01,0x0b,0x08,
- 0x06,0x01,0x0b,0x01,0xe5,0x01,0x01,0x04,0x03,0x03,0x06,0x01,0x07,0x01,0x04,0x04,
- 0x07,0x01,0x04,0x0c,0x01,0x0a,0x16,0x0f,0x0e,0x02,0xe5,0x0c,0x07,0xe5,0x07,0xe5,
- 0x07,0xe6,0xe5,0x02,0xe7,0x05,0x01,0xe6,0xe5,0x02,0xe8,0xe5,0x02,0xe7,0x05,0x01,
- 0xe5,0x07,0xe6,0xe5,0x02,0xe7,0x05,0x01,0xe6,0xe5,0x03,0xe6,0x09,0xe6,0xe5,0x02,
- 0xe8,0xe6,0x01,0xe8,0x04,0xe8,0xe5,0x02,0xe7,0x02,0x04,0xe6,0xe5,0x02,0x01,0xe5,
- 0x06,0xe6,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x06,0x01,0x01,0x0f,0x13,
- 0xe5,0x07,0xe5,0x01,0xe5,0xe5,0x01,0xe6,0x03,0x02,0xe5,0x01,0xe5,0xe5,0x01,0xe5,
- 0x01,0xe5,0xe5,0x01,0x06,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe5,0x04,0x02,0x04,
- 0x01,0x04,0xe6,0x03,0x02,0x04,0x01,0x03,0xe5,0x01,0x01,0x02,0x06,0xe5,0xe6,0x02,
- 0x01,0x02,0xe5,0x04,0xe5,0xe6,0x01,0x05,0xe6,0x03,0x20,0xe5,0x0d,0x01,0xe5,0x0c,
- 0x13,0x01,0xe5,0xe5,0x03,0x02,0x04,0xe6,0xe5,0x01,0x02,0xe6,0x01,0x04,0xe6,0x06,
- 0xe5,0x01,0x02,0x02,0xe6,0xe5,0x01,0x03,0x02,0x03,0x01,0xe6,0xe6,0xe5,0x01,0xe6,
- 0x07,0x02,0x01,0x02,0x02,0xe6,0x06,0xe5,0x04,0x02,0xe5,0x01,0x02,0x02,0xe6,0xe6,
- 0x03,0xe6,0xe6,0xe5,0x01,0xe6,0xe5,0x04,0x01,0x01,0x02,0x02,0xe5,0x1f,0xe5,0x0c,
- 0xe6,0xe5,0x0e,0x1d,0x05,0x07,0x01,0x03,0x05,0x03,0xe5,0x03,0x07,0x01,0x0d,0x04,
- 0xe5,0x06,0x01,0x03,0x08,0x08,0x03,0x03,0x01,0x07,0x01,0x03,0x03,0xe6,0x06,0x01,
- 0x09,0x04,0x04,0x08,0xe5,0x20,0x0e,0xe5,0x01,0x0d,0x13,0x09,0x02,0x03,0x02,0x05,
- 0xe5,0x01,0x02,0x03,0x02,0x02,0x03,0x08,0xe5,0x01,0x06,0x04,0xe5,0x01,0xe5,0x01,
- 0x05,0xe5,0x01,0x02,0x08,0x05,0xe5,0x01,0x02,0x0c,0xe5,0x01,0x05,0xe5,0x04,0x02,
- 0x03,0x05,0xe5,0x04,0x06,0x05,0xe5,0x04,0x1c,0xe5,0x0c,0xe6,0xe5,0x1e,0x02,0x01,
- 0x11,0x01,0x0a,0x11,0xe5,0x06,0x01,0x11,0x01,0x06,0x02,0x08,0xe5,0xe5,0xe5,0x03,
- 0x0e,0x09,0x0e,0x02,0x10,0x03,0x13,0xe5,0x1f,0xe5,0xe5,0xe6,0x0d,0x01,0x01,0x05,
- 0x01,0x07,0x01,0xe6,0x04,0xe8,0x04,0xe8,0x03,0xe7,0x06,0xe7,0xe5,0x03,0x01,0x01,
- 0x05,0x01,0x02,0x04,0xe6,0xe5,0x04,0x01,0x01,0x05,0x01,0xe5,0xe5,0x01,0x03,0x01,
- 0x02,0x01,0x01,0xe5,0xe5,0x06,0x01,0x07,0x01,0x01,0x05,0x01,0xe6,0x01,0x02,0x01,
- 0x07,0x01,0x01,0x01,0x03,0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,
- 0x01,0x0b,0x01,0xe5,0x23,0x01,0x11,0x12,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0x09,
- 0xe5,0x05,0xe5,0x08,0x0c,0xe5,0x01,0x0b,0x09,0x07,0x03,0x01,0xe5,0x04,0x02,0xe5,
- 0x07,0xe5,0x01,0x07,0x14,0x08,0x0c,0x03,0xe5,0x07,0x02,0x09,0x09,0xe5,0x11,0xe5,
- 0x07,0x09,0xe5,0xe5,0x01,0x05,0x08,0x01,0x03,0x01,0x05,0x05,0x01,0xe5,0x0b,0x01,
- 0x0b,0x01,0x01,0x01,0x01,0x01,0x09,0x0a,0x09,0x02,0x07,0x01,0xe6,0x03,0x02,0x0d,
- 0x02,0x09,0x09,0x04,0x04,0x04,0x01,0x01,0xe7,0xe6,0x2b,0x14,0x0d,0x02,0x0c,0x02,
- 0x02,0x06,0x08,0x01,0x06,0x02,0x11,0x07,0x03,0x09,0x0b,0xe5,0x03,0x07,0xe5,0x02,
- 0x01,0x3a,0x01,0x09,0x12,0x04,0xe6,0x01,0x04,0x01,0xe5,0x02,0xe5,0xe7,0x01,0x01,
- 0x02,0x01,0xe5,0x05,0x01,0x02,0x01,0x07,0x01,0x02,0xe6,0x03,0xe5,0xe5,0xe6,0x05,
- 0xe6,0x06,0x01,0x04,0x02,0x01,0xe7,0x04,0xe5,0xe5,0x09,0x05,0x0a,0x01,0x01,0x08,
- 0x03,0x01,0x0a,0x01,0x06,0x21,0xe5,0xe5,0x08,0x01,0xe7,0x0a,0x05,0x0f,0x05,0x01,
- 0x01,0x02,0x05,0xe5,0x06,0x04,0x05,0x02,0x05,0x06,0x03,0xe5,0x04,0x02,0xe5,0x01,
- 0x06,0x07,0x01,0x02,0x06,0x02,0x08,0x02,0x0a,0x0c,0x01,0x02,0x05,0x12,0x04,0x03,
- 0xe5,0x07,0x0b,0x09,0x06,0x0b,0xe5,0xe6,0x08,0x0f,0x01,0x02,0x04,0x0d,0x04,0xe5,
- 0x02,0x03,0xe6,0x02,0xe5,0x01,0xe6,0x02,0x09,0x04,0xe5,0x0c,0x05,0xe5,0x07,0x03,
- 0x03,0x03,0xe5,0x07,0xe5,0x0b,0x06,0x01,0x04,0xe6,0x01,0x07,0x0c,0x03,0xe6,0x08,
- 0x0d,0x04,0xe5,0x0b,0x08,0x01,0xe5,0x01,0xe5,0xe5,0x06,0xe5,0x06,0x05,0x08,0x04,
- 0x07,0x06,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe6,0x02,0x01,0x09,0x01,0x0a,0x13,
- 0x07,0x0d,0x09,0x0c,0xe5,0x09,0x06,0x09,0x04,0x01,0x07,0x0c,0x04,0x01,0x09,0x10,
- 0x01,0xe6,0x07,0x09,0x09,0x09,0x09,0x0b,0x09,0x0c,0x06,0x0b,0x07,0x05,0x09,0x06,
- 0xe5,0x02,0x01,0x07,0x01,0x0b,0x1d,0x06,0xe5,0xe5,0x0a,0x05,0xe6,0x06,0x02,0x01,
- 0x09,0x06,0x05,0x03,0xe6,0xe5,0x08,0x07,0x01,0x09,0x03,0xe6,0xe5,0x0f,0x07,0x06,
- 0x02,0x05,0x04,0xe5,0x01,0xe5,0x02,0xe6,0x01,0x02,0x0b,0x04,0x01,0x02,0x09,0xe5,
- 0x04,0x04,0x06,0x02,0xe5,0xe5,0x01,0xe5,0x01,0xe6,0x0d,0x16,0x05,0x04,0xe5,0x07,
- 0xe5,0x04,0x0c,0xe5,0x0e,0xe8,0x02,0x10,0x0f,0x02,0x01,0xe5,0x07,0xe5,0x01,0x02,
- 0xe5,0x13,0x02,0x02,0x06,0x02,0x02,0x1e,0x02,0x07,0xe5,0xe5,0x13,0x01,0x10,0x0f,
- 0x09,0x07,0x08,0x11,0x02,0x09,0x03,0xe5,0xe6,0x16,0x01,0x04,0x04,0xe5,0x02,0x09,
- 0x04,0x06,0x06,0x01,0x0f,0x04,0x02,0x0e,0x15,0x0e,0x04,0x01,0x09,0x06,0x02,0xe5,
- 0xe5,0x03,0x04,0x04,0x09,0x02,0x01,0x03,0xe5,0x02,0xe5,0x03,0x03,0x07,0x02,0x02,
- 0x03,0x02,0xe5,0x03,0x08,0x01,0xe7,0x02,0x03,0x0e,0x01,0x09,0x02,0x07,0x07,0x0d,
- 0x07,0x02,0x02,0xe5,0xe6,0x03,0x03,0x02,0x03,0x0f,0x0b,0x09,0x06,0xe5,0x1c,0x08,
- 0x06,0x06,0x0f,0x05,0x05,0x03,0x02,0x02,0x07,0x05,0x05,0x02,0x03,0x16,0x0d,0x15,
- 0x12,0x09,0x05,0x01,0x2d,0x02,0xe6,0x0c,0x1b,0x1d,0xe6,0x17,0x01,0x07,0x07,0xe7,
- 0x02,0x0c,0x0b,0x09,0x04,0x04,0x10,0xe5,0x06,0x0b,0x07,0x12,0x03,0xe5,0x03,0x0d,
- 0x0b,0xe5,0x12,0x04,0x0c,0x01,0x0e,0x03,0xe5,0x05,0x09,0x16,0x0b,0xe6,0xe5,0x04,
- 0x01,0xe5,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x07,0xe5,0x04,
- 0x02,0xe5,0x07,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x09,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x06,
- 0x03,0x08,0xe5,0x07,0x0d,0x09,0x03,0xe6,0x07,0x01,0x03,0xe6,0x06,0x08,0x01,0x01,
- 0xe5,0x0d,0x01,0xe5,0x12,0x08,0x09,0x1e,0x16,0xe5,0x05,0x08,0xe5,0x01,0xe5,0x0d,
- 0x09,0xe5,0x0b,0x01,0x0a,0x02,0xe5,0x01,0xe5,0xe5,0x01,0xe5,0x08,0x0a,0xe5,0xe5,
- 0xe6,0x01,0x01,0x04,0xe5,0x06,0x0a,0xe5,0x02,0x04,0xe5,0x0b,0x02,0x06,0x16,0x09,
- 0x25,0x10,0xe5,0x01,0xe5,0x0a,0x02,0xe5,0x08,0xe5,0x05,0x04,0xe5,0x0e,0xe5,0x01,
- 0x08,0x03,0x02,0x01,0xe7,0x03,0xe5,0x04,0x07,0x01,0x02,0x01,0xe6,0x03,0x05,0xe5,
- 0xe5,0xe5,0xe5,0x0b,0xe5,0x02,0x01,0xe7,0x01,0x01,0x17,0xe5,0x01,0x06,0xe5,0xe5,
- 0xe5,0x08,0x04,0xe5,0x02,0x33,0x01,0x05,0x01,0x04,0xe5,0x01,0x01,0x03,0xe5,0xe5,
- 0xe5,0x08,0x01,0x07,0x04,0x01,0x02,0x07,0x01,0x07,0x01,0x01,0x02,0xe5,0x01,0x01,
- 0x08,0x04,0x01,0xe6,0x01,0x0a,0x01,0x18,0x02,0x01,0x07,0x09,0x06,0x02,0x06,0xe5,
- 0xe5,0xe5,0x02,0xe5,0x01,0x05,0xe5,0x01,0x33,0x06,0x02,0x01,0x04,0xe5,0x04,0x02,
- 0x02,0x01,0x07,0x06,0x02,0x10,0x02,0x01,0x03,0xe5,0x01,0x01,0x04,0x10,0x03,0xe5,
- 0xe5,0x16,0x01,0x0c,0x02,0x0d,0x02,0xe5,0x01,0xe5,0x03,0xe5,0xe6,0x01,0x02,0x06,
- 0x02,0x01,0x01,0xe5,0xe5,0x01,0xe5,0x01,0x05,0x04,0x09,0x0d,0x09,0x06,0x02,0x02,
- 0xe5,0xe6,0x11,0x0d,0x05,0xe6,0x04,0x02,0x05,0xe5,0xe7,0x08,0x07,0x05,0xe6,0x01,
- 0x01,0x05,0xe8,0x01,0x0e,0x05,0x01,0x01,0x09,0x09,0x05,0x01,0x02,0x03,0xe5,0xe5,
- 0x01,0x06,0x02,0x04,0x04,0x01,0x01,0xe5,0xe5,0x01,0x01,0x01,0x05,0x04,0x09,0x0a,
- 0xe5,0x04,0x02,0xe5,0x05,0xe7,0x02,0x02,0x01,0x04,0x09,0x01,0x02,0x04,0x05,0x03,
- 0x03,0xe5,0x01,0x0b,0x02,0x01,0xe5,0x02,0x05,0x01,0x01,0x02,0x01,0x04,0x09,0x02,
- 0xe9,0x0b,0x01,0x03,0xe5,0x01,0x01,0x02,0x06,0x07,0x01,0x04,0x01,0x02,0x05,0x01,
- 0x06,0x02,0x01,0x04,0x04,0x09,0x02,0x06,0x02,0x04,0x09,0x0d,0x09,0x09,0x01,0xe5,
- 0xe5,0x01,0x01,0x08,0x08,0x01,0x09,0x05,0x01,0x01,0x09,0x04,0x02,0x01,0x07,0x01,
- 0x08,0x0e,0x04,0x0d,0x01,0x04,0x01,0xe5,0xe5,0x03,0x01,0x02,0x01,0xe5,0x03,0x01,
- 0x02,0x01,0x01,0xe5,0xe5,0x01,0x04,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x04,
- 0x04,0x04,0x04,0x09,0x09,0x0a,0xe5,0x08,0x09,0x04,0x01,0xe5,0xe5,0xe5,0x10,0x01,
- 0x04,0x01,0xe5,0x08,0x01,0x02,0x01,0x04,0x01,0xe5,0xe8,0xe5,0x06,0x01,0x0b,0xe5,
- 0xe5,0xe5,0x06,0xe8,0x23,0x02,0x1d,0xe5,0x07,0x09,0x02,0x41,0x04,0x0d,0x03,0xe5,
- 0x07,0x15,0x04,0x02,0xe5,0x07,0x09,0x02,0x02,0xe5,0x01,0xe5,0x0a,0x01,0x24,0xe5,
- 0x03,0x04,0x02,0x1d,0x01,0x07,0x1a,0x09,0x0b,0x09,0x08,0xe5,0x15,0xe5,0x07,0x01,
- 0x0e,0x08,0xe5,0x01,0x09,0xe6,0x06,0x05,0xe5,0x01,0x09,0xe6,0xe7,0x07,0x01,0x02,
- 0x09,0x02,0x03,0x02,0xe5,0x04,0x02,0x05,0x03,0x06,0x02,0x06,0x02,0x03,0x05,0x04,
- 0xe6,0x01,0x09,0x09,0x09,0x08,0x02,0x09,0x06,0x02,0xe6,0x06,0x06,0x02,0x04,0x01,
- 0x02,0x05,0x03,0x04,0x01,0x02,0x09,0xe5,0xe6,0x01,0x02,0x04,0x01,0x02,0x03,0x02,
- 0x02,0xe5,0x03,0xe5,0x05,0xe5,0xe5,0xe5,0x01,0x09,0x12,0xe5,0x07,0x0a,0x06,0x02,
- 0x06,0x02,0x13,0x09,0x29,0x06,0x02,0x10,0x0c,0x13,0x09,0x06,0x0c,0x06,0x02,0x06,
- 0x02,0x04,0x02,0xe5,0x01,0x0a,0x14,0x05,0x09,0x01,0x0a,0x08,0x15,0x08,0x21,0x07,
- 0x0a,0x17,0x05,0x13,0x09,0x05,0x0d,0x07,0x05,0x01,0x02,0x09,0xe5,0x01,0x01,0x0a,
- 0x02,0x09,0x06,0x03,0x01,0x06,0x02,0x01,0x04,0x02,0x01,0x02,0x01,0x02,0x01,0x04,
- 0x02,0x01,0x02,0x01,0x02,0x01,0x04,0x02,0x06,0x09,0x09,0x0b,0x09,0x09,0xe7,0x05,
- 0x11,0x01,0x09,0x04,0x04,0x02,0x01,0x05,0xe6,0x03,0x01,0x07,0x01,0x0a,0xe6,0x0a,
- 0xe6,0xe5,0x01,0x07,0x02,0x02,0x08,0xe5,0x08,0xe5,0x01,0x02,0x03,0x07,0x01,0x05,
- 0x01,0x01,0x05,0x03,0x05,0x01,0x01,0x05,0x01,0x01,0x05,0x03,0x07,0x01,0x01,0x05,
- 0x01,0x01,0x07,0x01,0x01,0x07,0x01,0x03,0x02,0xe5,0x06,0x01,0x09,0x05,0x01,0xe5,
- 0x04,0xe5,0x01,0x06,0x01,0x01,0x01,0x06,0xe5,0x01,0x02,0x01,0xe5,0x04,0xe5,0xe6,
- 0x09,0x05,0xe5,0x02,0x01,0xe8,0x0e,0x09,0x04,0x0e,0x03,0x05,0x03,0x05,0x03,0x05,
- 0x03,0x05,0x03,0x05,0x09,0x09,0x03,0x05,0x04,0x03,0x02,0x03,0x05,0x03,0xe5,0x03,
- 0xe5,0x07,0x11,0x01,0x06,0x02,0x09,0x03,0x09,0x05,0x07,0x01,0x03,0x14,0x02,0xe5,
- 0x0c,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe6,0x04,0xe7,0x01,0x03,0xe8,0x04,0xe8,0x04,
- 0xe7,0x01,0x03,0xe8,0xe5,0x02,0xe8,0x06,0xe5,0x01,0x03,0x01,0xe5,0x01,0x04,0xe6,
- 0x03,0x04,0xe6,0x07,0xe6,0x04,0xe7,0x01,0x03,0xe7,0x05,0xe8,0xe5,0x02,0xe8,0x04,
- 0x01,0xe6,0xe5,0x02,0xe7,0x02,0x04,0xe6,0x06,0xe6,0xe5,0x04,0xe5,0x02,0x04,0xe7,
- 0x02,0x02,0x01,0xe5,0xe5,0x0c,0xe6,0x06,0x09,0xe5,0x05,0x01,0x09,0x11,0x01,0x07,
- 0x3f,0x09,0xe6,0xe6,0x07,0x0d,0x01,0x09,0xe5,0x11,0xe5,0x05,0x01,0xe5,0x05,0x01,
- 0xe5,0x08,0x0d,0xe8,0x0c,0x0b,0x07,0x01,0xe5,0xe5,0x03,0x01,0x02,0xe5,0x01,0xe5,
- 0x03,0xe5,0x01,0x05,0xe5,0x01,0xe5,0xe5,0x01,0xe5,0x01,0xe5,0x03,0xe5,0x01,0x02,
- 0x02,0xe5,0x01,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x04,0x04,0xe5,0x03,0x03,
- 0x04,0x04,0x04,0x04,0xe5,0xe5,0x02,0x02,0xe5,0x01,0x02,0x05,0x02,0xe5,0x01,0xe5,
- 0xe6,0xe5,0x03,0x01,0xe5,0x07,0x0a,0xe5,0x0d,0x01,0x0f,0x09,0x18,0xe5,0x02,0x04,
- 0xe5,0x02,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x08,0x07,0x01,0x08,0x03,0x07,
- 0xe5,0x02,0x05,0x03,0x05,0x08,0xe5,0x06,0xe6,0xe5,0xe5,0x03,0xe5,0x02,0x05,0x08,
- 0xe5,0x0c,0x07,0x01,0xe5,0x16,0x02,0xe5,0x0c,0x02,0x08,0x07,0x0f,0x01,0xe6,0x04,
- 0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x01,0x03,0xe7,0x05,0xe7,
- 0x05,0xe7,0x06,0x01,0x08,0xe7,0x05,0xe8,0x05,0xe6,0x07,0xe5,0x05,0xe7,0x01,0xe5,
- 0x01,0x01,0xe6,0x01,0x02,0x01,0x03,0x03,0x01,0xe6,0x08,0x02,0x06,0x01,0xe5,0x11,
- 0x07,0xe5,0x1a,0x08,0x10,0xe5,0xe5,0x05,0x02,0x06,0xe5,0xe5,0x17,0x05,0xe5,0x03,
- 0x04,0x04,0x03,0xe5,0x21,0x0b,0x02,0xe6,0x08,0x09,0x08,0xe5,0x03,0x04,0x04,0x09,
- 0x02,0x06,0x02,0x01,0x06,0x05,0xe5,0xe5,0xe5,0x0e,0x01,0x07,0x01,0x01,0x05,0x01,
- 0xe6,0x03,0xe5,0xe7,0x04,0x01,0x02,0x01,0x01,0xe5,0xe7,0x04,0x01,0xe6,0x04,0x01,
- 0xe5,0x05,0x01,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x09,0x01,0x01,0x05,0xe6,0x01,
- 0x04,0xe8,0x03,0xe5,0xe6,0x03,0x01,0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x05,0x01,
- 0xe5,0x02,0x02,0x01,0xe5,0x02,0x02,0x01,0xe6,0x01,0x02,0x01,0xe5,0x03,0x01,0x01,
- 0x06,0x03,0x03,0x02,0xe5,0x03,0x18,0x01,0xe5,0x0d,0x02,0x04,0xe6,0xe5,0x09,0x0e,
- 0x18,0x09,0x02,0x06,0x06,0x08,0x09,0x08,0x07,0xe5,0x2f,0xe5,0x01,0x03,0x01,0xe5,
- 0x01,0x05,0xe5,0x08,0xe5,0x01,0x01,0x01,0xe5,0x03,0x06,0x09,0x09,0xe5,0x17,0x09,
- 0x09,0x11,0x02,0x02,0x08,0x0a,0x15,0x05,0x07,0x10,0x01,0x05,0x04,0xe5,0xe5,0x01,
- 0x06,0x01,0x07,0x07,0xe5,0xe5,0x02,0x07,0x01,0x07,0x02,0x04,0x08,0x01,0x01,0xe5,
- 0xe5,0x0f,0x0d,0x02,0x01,0xe5,0x0c,0x04,0x1f,0x09,0xe5,0x06,0x0a,0x07,0xe5,0x18,
- 0x0d,0x01,0x07,0x17,0x18,0x09,0x05,0x01,0x04,0x0b,0xe5,0x01,0x15,0x0d,0x04,0x02,
- 0xe6,0x06,0xe6,0x06,0x01,0x02,0x01,0x02,0xe6,0x01,0x08,0x01,0xe5,0x01,0x01,0x05,
- 0x01,0x03,0x04,0x02,0x05,0x0c,0xe5,0xe5,0x04,0x08,0x06,0x04,0xe5,0x0a,0x02,0x02,
- 0x03,0x04,0x13,0xe5,0xe5,0x04,0x19,0x0d,0xe9,0x07,0x18,0x05,0x0b,0x09,0x03,0x10,
- 0x08,0x01,0x01,0x04,0x05,0x0d,0x09,0x01,0xe5,0xe5,0xe5,0x1c,0x03,0x07,0x02,0x02,
- 0x10,0x01,0x0c,0x05,0x1d,0x05,0x02,0xe5,0xe6,0x08,0x05,0x08,0xe6,0x07,0x07,0xe6,
- 0x06,0x01,0x07,0x05,0x03,0x05,0x05,0x03,0x05,0xe5,0x06,0xe5,0x06,0x01,0x09,0xe5,
- 0x05,0x03,0x02,0x05,0xe5,0x02,0x05,0x03,0x01,0x0b,0x0c,0x0c,0x12,0x07,0x04,0x05,
- 0x01,0x01,0x01,0x04,0x0a,0xe6,0xe6,0x0c,0xe5,0x02,0x04,0x09,0x03,0x05,0x04,0x04,
- 0x02,0x04,0x0e,0x02,0x03,0x07,0x01,0xe5,0x07,0x07,0x02,0x03,0x04,0x06,0x05,0x08,
- 0x11,0x01,0x12,0xe5,0x08,0x05,0x03,0x02,0x05,0xe5,0x08,0x03,0x05,0x02,0x06,0x06,
- 0x07,0x02,0xe7,0xe6,0x06,0x02,0x06,0x02,0x05,0x0d,0x10,0x06,0x01,0xe5,0x0a,0x02,
- 0xe5,0x01,0x03,0x08,0xe5,0x0e,0xe6,0xe5,0x01,0x01,0x04,0x05,0xe5,0x03,0x03,0x04,
- 0x03,0x01,0x02,0x03,0x04,0x0c,0x09,0x03,0x05,0x09,0x09,0x04,0x04,0x09,0x04,0xe5,
- 0x09,0x01,0xe6,0x07,0xe5,0x02,0xe5,0x0d,0x03,0xe5,0x05,0x0c,0x01,0x02,0x15,0x02,
- 0x06,0x07,0x0a,0x01,0x01,0x09,0x07,0xe5,0xe5,0x05,0x01,0xe7,0x01,0x01,0x02,0x03,
- 0x01,0x04,0x01,0x06,0xe6,0x04,0xe7,0x03,0x01,0xe8,0x04,0xe5,0x08,0xe6,0x03,0xe5,
- 0xe6,0x07,0xe6,0xe5,0x01,0x0a,0x0a,0xe7,0x0f,0x0a,0xe5,0x03,0x01,0x12,0x10,0xe5,
- 0x0c,0x1b,0x07,0x01,0x08,0x01,0x0b,0x07,0x0b,0x05,0x02,0x03,0x06,0x0a,0xe5,0x01,
- 0x0e,0x07,0x03,0x05,0x02,0x13,0x03,0xe6,0xe5,0xe5,0xe5,0x09,0xe5,0x04,0x08,0x04,
- 0x03,0x08,0x01,0x01,0x02,0x04,0x01,0x07,0x04,0x09,0x09,0x04,0x0b,0x02,0x01,0x0e,
- 0x04,0x09,0x09,0x01,0x04,0x08,0x03,0x06,0x01,0xe5,0x02,0x03,0x01,0x03,0x05,0x03,
- 0xe5,0x02,0xe5,0x02,0x05,0x03,0xe5,0x03,0x06,0x02,0x0e,0x02,0xe6,0x0c,0x14,0x0b,
- 0x03,0x03,0x13,0x05,0x03,0x06,0x02,0x0a,0x04,0x02,0xe5,0x01,0x02,0x06,0x08,0x01,
- 0xe6,0x04,0xe5,0x03,0xe5,0x15,0x03,0x04,0xe5,0x01,0x09,0x09,0x08,0xe5,0xe5,0x06,
- 0x01,0x05,0xe6,0x07,0x0e,0x01,0x1e,0x05,0x01,0x11,0xe5,0x0e,0x01,0x07,0x01,0x01,
- 0x05,0xe5,0x0e,0x04,0x01,0x11,0x01,0x07,0xe5,0x04,0x02,0x05,0x0d,0x01,0x09,0x04,
- 0x09,0x02,0x03,0xe5,0x03,0x09,0x09,0x09,0x03,0x0c,0xea,0x0d,0xe6,0x03,0x02,0x0a,
- 0xe5,0x03,0x01,0x09,0x02,0x06,0x09,0x07,0x06,0xe5,0xe5,0x01,0xe5,0x01,0x01,0xe5,
- 0x01,0xe5,0x04,0x02,0xe5,0x04,0x02,0x08,0x01,0xe6,0x04,0x02,0x03,0xe5,0xe5,0x01,
- 0xe5,0x01,0xe5,0x03,0xe5,0x01,0x01,0xe5,0xe5,0x03,0x01,0x04,0x08,0xe5,0x07,0xe5,
- 0x01,0xe5,0x02,0x01,0x01,0xe5,0x04,0xe5,0x01,0xe5,0x19,0x01,0xe5,0xe6,0x01,0x01,
- 0x0b,0x01,0x04,0x05,0xe5,0x02,0x08,0x0a,0x08,0x09,0x10,0x01,0x07,0xe5,0x04,0x08,
- 0x11,0x03,0x0d,0xe5,0x03,0x03,0xe5,0x05,0xe6,0x01,0x06,0xe5,0x03,0x0a,0x09,0x02,
- 0x01,0x03,0x0b,0x01,0x01,0x07,0x01,0x0c,0x01,0x02,0x01,0xe6,0x03,0x12,0x05,0xe5,
- 0x03,0x01,0x05,0x0b,0x18,0x09,0x06,0xe5,0xe5,0x08,0x07,0x01,0x09,0x0b,0x07,0x01,
- 0x10,0x05,0x06,0x01,0x01,0x01,0x03,0xe5,0x01,0x05,0x01,0x01,0x01,0x02,0xe5,0x02,
- 0x01,0x03,0xe5,0x01,0x01,0xe5,0x05,0x01,0x03,0x01,0x01,0x01,0x02,0xe5,0x03,0x05,
- 0x01,0xe5,0x01,0x14,0x06,0xe5,0x0a,0x13,0x09,0x06,0x01,0xe5,0x05,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x02,0x06,0x01,0xe5,0x05,0x01,
- 0xe5,0x12,0x0d,0x02,0x10,0x01,0xe5,0x05,0x02,0x09,0xe5,0x04,0x0c,0x06,0x02,0x02,
- 0xe5,0x0c,0x01,0x07,0x01,0x0c,0xe5,0x01,0xe5,0xe5,0x0b,0xe5,0x01,0x06,0x02,0x06,
- 0x02,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x05,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x03,0x01,
- 0xe5,0xe5,0x02,0x02,0x02,0x01,0x04,0x01,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x02,0x02,
- 0xe5,0xe5,0x06,0x04,0x09,0x01,0xe6,0x06,0x01,0x0f,0xe5,0xe6,0x03,0x01,0x02,0x05,
- 0xe5,0x01,0x04,0x01,0x01,0xe5,0x05,0xe5,0x01,0xe5,0x01,0x0a,0x01,0x01,0x05,0x01,
- 0x01,0x09,0x05,0x01,0x01,0x09,0x05,0x09,0x06,0x01,0x02,0x01,0x04,0x02,0x01,0x02,
- 0xe6,0x01,0x01,0x07,0x01,0x01,0x02,0x02,0x01,0x06,0x02,0x01,0x01,0x02,0x02,0x01,
- 0x01,0x02,0x02,0x01,0x04,0xe5,0xe5,0xe5,0x04,0x03,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x03,0xe5,0xe6,0x0b,0x01,0x07,0x01,0x04,0x01,0x02,0x07,0x01,0x09,0x03,
- 0xe5,0x10,0x06,0x05,0x03,0x09,0x09,0x02,0x06,0x03,0xe5,0x02,0x02,0x04,0x01,0x02,
- 0x09,0x05,0x01,0x01,0x07,0x05,0xe5,0x02,0x02,0x02,0x03,0x03,0x01,0x03,0x05,0x01,
- 0x01,0x02,0xe5,0xe5,0xe5,0xe5,0x02,0x05,0x02,0x01,0xe5,0x02,0x0e,0x01,0x02,0x02,
- 0x0a,0x01,0x07,0x01,0x04,0x04,0x01,0xe7,0x01,0x01,0x09,0x01,0xe5,0x03,0x09,0x09,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x09,0x01,0x03,0xe5,0x01,0x01,0x04,
- 0x01,0xe5,0xe5,0x06,0x01,0x07,0x03,0xe5,0x08,0x02,0x09,0x08,0x07,0x01,0x09,0x07,
- 0x0a,0xe5,0x05,0xe5,0xe5,0x02,0x02,0x1a,0x01,0xe5,0x02,0x0c,0x02,0x03,0x02,0x02,
- 0x06,0xe5,0x0b,0x09,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x05,0x05,0x03,0x05,0x03,
- 0x05,0x09,0x06,0x08,0xe5,0x01,0xe5,0x03,0x03,0xe5,0x03,0x03,0xe6,0x02,0xe5,0x01,
- 0xe6,0x02,0x05,0x03,0xe5,0x07,0x03,0xe5,0x07,0x02,0xe6,0x1d,0x05,0xe5,0x0b,0xe5,
- 0x03,0xe5,0x01,0x06,0x02,0xe5,0x04,0x02,0x12,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x02,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x03,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x01,
- 0xe5,0x07,0xe5,0x07,0xe5,0x03,0xe5,0x01,0xe5,0x07,0xe5,0x03,0xe5,0x01,0xe5,0x07,
- 0x0a,0xe5,0xe6,0x0d,0x09,0x02,0x02,0x03,0xe5,0x07,0x06,0x02,0xe5,0x01,0x05,0x09,
- 0x03,0x02,0xe5,0xe5,0x05,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,
- 0xe5,0x05,0x02,0x01,0x06,0xe5,0xe5,0x05,0xe5,0xe5,0x08,0x09,0xe5,0x01,0x02,0x02,
- 0xe6,0x03,0x02,0x06,0x02,0x06,0x02,0xe6,0x03,0x02,0x06,0x02,0xe6,0x03,0x02,0x05,
- 0xe5,0x05,0xe5,0xe5,0xe5,0x01,0x27,0x08,0xe5,0x1b,0xe6,0x06,0xe6,0x07,0xe5,0x04,
- 0x02,0xe5,0x04,0x02,0xe5,0x04,0x05,0x05,0x03,0x05,0x03,0x19,0x02,0x06,0x09,0x09,
- 0x0b,0x09,0x07,0x02,0x06,0x07,0x02,0x01,0x01,0x25,0x01,0x0b,0x05,0x17,0x09,0x04,
- 0x03,0x05,0x03,0x05,0x02,0x06,0x0b,0x09,0x09,0x14,0x02,0x04,0x09,0x09,0x09,0x09,
- 0x09,0x03,0x05,0x0e,0x02,0xe5,0xe5,0x09,0x02,0x07,0x01,0x0a,0xe6,0x03,0x01,0x0a,
- 0xe6,0x03,0x01,0x09,0x0e,0x04,0x09,0x09,0x06,0x02,0x06,0x01,0x02,0x09,0x06,0x02,
- 0x07,0x01,0x07,0x01,0xe7,0x06,0xe6,0x1a,0xe6,0x10,0xe6,0x14,0xe5,0x01,0x0f,0xe5,
- 0x02,0x02,0x01,0xe5,0x02,0x01,0x03,0xe5,0x04,0x01,0xe5,0x08,0xe5,0x04,0x01,0x01,
- 0x01,0x05,0x01,0x01,0x05,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x04,0xe5,0xe6,0x05,
- 0x01,0xe5,0x07,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x02,0x01,
- 0xe5,0xe7,0x08,0x09,0x09,0x02,0x06,0x09,0x02,0x06,0x09,0x0c,0xe5,0x01,0x0f,0x07,
- 0x01,0x0a,0x08,0x04,0x01,0x03,0x57,0x1e,0x01,0xe5,0x02,0x06,0x01,0x1b,0x02,0x0f,
- 0x02,0x15,0x01,0xe5,0x0e,0x05,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x03,0x01,0xe5,0x01,0x05,0xe5,0x01,0x05,
- 0xe5,0x01,0x05,0xe5,0xe5,0x01,0x04,0xe6,0x01,0x03,0x01,0xe5,0x01,0x03,0xe7,0x05,
- 0xe8,0xe5,0x02,0xe7,0x05,0xe7,0x05,0x01,0xe5,0x06,0xe6,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x08,0x01,0x0f,0x07,0x01,0xe5,0x07,0xe6,0x04,0x01,0x09,0xe5,0x11,
- 0x09,0xe5,0x08,0x04,0x0e,0x09,0x05,0x05,0xe5,0x03,0x03,0x05,0x09,0xe5,0xe6,0x04,
- 0xe5,0xe5,0x03,0x01,0x07,0x01,0x03,0xe5,0xe5,0x05,0xe5,0x01,0x01,0x0d,0x19,0x08,
- 0x01,0xe5,0x0e,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x0a,0x06,0x02,
- 0x04,0x01,0xe5,0x07,0x09,0x09,0x09,0xe5,0x04,0x04,0x04,0xe6,0x01,0xe5,0x01,0x01,
- 0xe5,0x01,0x04,0xe7,0xe6,0x01,0x01,0xe6,0xe5,0xe5,0x02,0xe5,0x04,0x02,0xe5,0x04,
- 0x02,0x06,0x02,0xe5,0x04,0x07,0x01,0x09,0x09,0x0e,0xe5,0x0e,0x0a,0x12,0x0a,0x1c,
- 0x09,0xe5,0x01,0x01,0x03,0x09,0xe5,0x07,0x08,0x02,0x05,0x03,0x05,0x03,0x03,0x01,
- 0x08,0xe5,0x02,0x03,0x01,0x07,0x01,0x09,0x09,0x31,0x02,0x0f,0x0a,0x06,0x09,0x09,
- 0x1d,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x07,
- 0x01,0xe5,0x02,0x02,0x01,0xe5,0x01,0x03,0x01,0xe5,0x02,0x05,0x02,0x03,0x01,0x03,
- 0x09,0x24,0x17,0x09,0xe8,0x02,0x13,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,
- 0xe5,0xe5,0x05,0x09,0xe5,0xe5,0x13,0x05,0x02,0x06,0xe5,0xe5,0x05,0x0b,0xe5,0xe5,
- 0x05,0xe5,0xe5,0x05,0xe5,0xe6,0x08,0x05,0x01,0xe5,0x05,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0xe5,0x04,0x02,0x06,0x02,0x06,0x02,0xe5,0x04,0x02,0x04,0x08,0xe8,0xe5,
- 0x0e,0x01,0x03,0x03,0x01,0x02,0xe5,0x02,0x01,0x01,0x01,0x03,0xe6,0xe5,0xe5,0x02,
- 0x01,0x03,0x03,0x01,0x02,0xe5,0x02,0x01,0x07,0x01,0x07,0xe7,0x05,0x01,0x01,0x01,
- 0x03,0x01,0xe5,0x02,0x02,0x01,0x06,0x02,0x01,0x01,0x02,0x01,0xe5,0xe5,0x03,0x02,
- 0x01,0x07,0x01,0x02,0x04,0x01,0x05,0x01,0x01,0xe5,0x03,0x01,0x01,0xe5,0x03,0x01,
- 0x01,0x05,0x01,0x01,0x01,0x03,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0xe6,0x06,0x02,
- 0x02,0xe5,0x18,0xe5,0x0a,0x01,0x0f,0x02,0x02,0x1a,0x02,0x02,0x07,0xe8,0xe5,0x05,
- 0x04,0x0a,0x01,0x06,0x22,0x07,0x02,0xe5,0x07,0x06,0x02,0xe5,0x04,0x02,0xe5,0x0e,
- 0x03,0x02,0x0c,0x07,0x02,0xe6,0x0a,0x03,0x05,0xe5,0xe5,0xe5,0x02,0x0f,0x05,0x06,
- 0x07,0x0a,0xe5,0x05,0x01,0x05,0xe5,0x04,0x01,0xe6,0x06,0x06,0x04,0x0b,0x05,0x03,
- 0x13,0xe5,0x02,0x08,0x05,0x02,0x06,0x01,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x03,0x02,
- 0xe5,0x01,0x04,0xe5,0x01,0x07,0x08,0x02,0xe6,0x10,0x03,0xe5,0x0e,0x1b,0x0d,0x08,
- 0x13,0x07,0x08,0x07,0x2b,0x03,0x02,0x01,0x08,0x08,0x01,0x04,0x02,0x01,0x1f,0x09,
- 0xe5,0x03,0xe5,0x01,0x07,0x08,0x03,0x01,0x07,0xe6,0x09,0x06,0xe7,0x04,0xe5,0xe5,
- 0x03,0x0c,0x06,0x04,0x06,0xe5,0xe5,0x08,0x07,0xe5,0x05,0x05,0xe6,0x04,0xe7,0x05,
- 0xe5,0xe5,0x0e,0xe5,0xe6,0x04,0x02,0xe5,0x02,0x04,0x09,0x02,0x03,0x02,0x09,0x09,
- 0xe5,0x07,0x05,0x02,0x04,0xe7,0xe5,0x19,0x01,0x05,0x10,0x02,0x0a,0x0f,0x04,0x06,
- 0x0a,0x01,0x03,0xe5,0x01,0x07,0x04,0x02,0x02,0x0b,0x10,0x09,0x02,0x02,0x0b,0x1f,
- 0xe5,0x1a,0x04,0x05,0xe8,0x08,0x09,0xe5,0x01,0x04,0x09,0x06,0x02,0x06,0x07,0x01,
- 0x02,0x06,0x08,0xe5,0x02,0x09,0x1d,0x03,0x01,0x01,0x19,0x06,0xe5,0xe5,0x02,0xe5,
- 0x05,0x09,0x05,0x01,0x01,0x02,0x01,0x04,0x01,0x07,0x05,0x03,0x05,0xe5,0x01,0x0f,
- 0xe7,0xe5,0x08,0x06,0x13,0x06,0x07,0x01,0x09,0x03,0x05,0x02,0x06,0x02,0x0e,0x06,
- 0x1a,0x1a,0x02,0x09,0x0c,0x1a,0x0d,0x0b,0x0e,0x05,0xe5,0xe6,0x02,0x1a,0x06,0x20,
- 0x0e,0x01,0x1d,0x02,0x01,0x06,0x03,0xe5,0x04,0x0a,0x07,0xe6,0x02,0x03,0x04,0x06,
- 0x02,0x06,0x0c,0x04,0x0b,0x0b,0x06,0x08,0x02,0x0b,0xe6,0x07,0xe6,0x01,0xe6,0x02,
- 0xe5,0x01,0xe5,0x12,0x01,0x0e,0x02,0x07,0x06,0xe5,0xe5,0xe5,0x04,0x08,0x01,0x01,
- 0xe6,0xe5,0x0a,0x03,0x01,0x04,0x01,0xe5,0x09,0x09,0xe5,0x07,0x06,0x01,0x01,0x1b,
- 0x07,0x01,0x01,0x08,0x03,0x04,0x01,0xe6,0x07,0x01,0x0f,0xe6,0x02,0x0c,0xe5,0x07,
- 0x02,0x09,0xe5,0x03,0x0e,0x05,0x01,0x11,0x05,0x04,0x02,0x03,0x04,0xe5,0xe5,0x0f,
- 0x03,0x15,0x10,0x02,0x11,0x13,0x01,0x04,0x11,0x07,0x0b,0x04,0xe7,0x04,0x12,0x05,
- 0x0e,0x06,0x02,0x06,0x02,0x06,0x02,0x0e,0x01,0x02,0x13,0xe5,0x02,0x02,0x01,0x06,
- 0x04,0x04,0x09,0x01,0x09,0x05,0xe5,0x04,0x0e,0x0b,0x0c,0x0a,0xe5,0x06,0x02,0x02,
- 0xe5,0x12,0xe7,0xe5,0x02,0x08,0x15,0x01,0x05,0x01,0x01,0x05,0x01,0x07,0xe5,0x01,
- 0x05,0x02,0x01,0x05,0x01,0x09,0x08,0x08,0x05,0x02,0xe6,0x08,0x05,0x17,0x01,0x04,
- 0x02,0x05,0x09,0x03,0x03,0x07,0x07,0x0f,0x03,0x16,0x02,0xe5,0xe5,0x04,0x08,0x1f,
- 0x09,0x09,0x09,0xe5,0x0e,0x06,0x01,0x04,0x05,0x0b,0x0c,0x1c,0x02,0x07,0x12,0x14,
- 0x0d,0x05,0x1a,0xe7,0x07,0x01,0x03,0xe5,0x04,0x01,0xe7,0x03,0x01,0xe5,0x07,0x01,
- 0xe5,0x07,0x01,0xe5,0x05,0x01,0xe5,0x06,0x04,0x02,0xe5,0x04,0x06,0xe5,0x06,0xe5,
- 0x01,0x03,0x02,0xe5,0xe5,0x03,0x01,0x01,0x01,0x01,0x02,0x01,0xe5,0x01,0x09,0x03,
- 0x02,0xe5,0x04,0xe5,0x07,0x02,0x01,0x04,0x09,0xe5,0x03,0x03,0x07,0x01,0x02,0xe5,
- 0xe5,0xe6,0x07,0xe6,0xe6,0x04,0xe5,0x09,0x03,0x01,0x02,0x01,0x05,0x01,0xe6,0xe5,
- 0x05,0x03,0xe5,0x03,0xe5,0x03,0xe5,0x02,0x08,0x03,0x01,0xe5,0x01,0x03,0x01,0xe5,
- 0x01,0x04,0x04,0xe7,0x05,0x04,0x04,0xe5,0x04,0x01,0xe5,0x02,0x02,0x01,0xe5,0x04,
- 0xe5,0x03,0x06,0x01,0xe5,0x08,0x03,0xe7,0x05,0x05,0x02,0x02,0xe5,0x07,0xe5,0x07,
- 0xe5,0x01,0x0a,0x02,0x05,0x04,0x08,0xe5,0x03,0xe5,0xe5,0x07,0x01,0x04,0x01,0x04,
- 0x0a,0x07,0x09,0x01,0x04,0xe5,0x02,0x01,0x01,0xe5,0x07,0xe5,0x08,0x01,0x07,0x01,
- 0xe5,0xe5,0x06,0x0b,0x07,0x09,0x06,0xe5,0x01,0x04,0x05,0x09,0x10,0x01,0x05,0x08,
- 0x09,0x05,0x03,0x02,0x01,0x02,0x02,0x04,0x01,0x13,0x03,0xe5,0x03,0x05,0xe5,0xe5,
- 0x01,0x0a,0x09,0x09,0x0f,0xe5,0x01,0x06,0x02,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,
- 0x09,0x09,0x13,0x1d,0x05,0xe5,0x0b,0x01,0x11,0x06,0xe5,0x04,0x04,0x01,0x02,0x0c,
- 0x04,0x01,0xe5,0x08,0x01,0x06,0x05,0xe5,0x01,0x05,0x01,0xe6,0x04,0xe5,0x01,0x05,
- 0xe5,0x01,0xe5,0xe5,0x06,0x04,0x06,0x02,0x04,0x04,0x04,0x04,0x0b,0xe5,0x01,0xe5,
- 0x03,0x04,0x04,0x04,0x01,0x02,0x09,0xe5,0x01,0x05,0x09,0x04,0x04,0x09,0xe5,0x01,
- 0xe5,0x14,0x06,0x06,0xe5,0x01,0xe5,0x0c,0x03,0x04,0xe5,0x02,0x05,0x03,0x01,0x01,
- 0xe5,0x03,0x09,0x04,0x04,0x04,0x04,0x05,0x01,0x01,0x01,0x02,0xe5,0x02,0x05,0x03,
- 0x04,0xe5,0x02,0x05,0x03,0x0b,0x02,0x01,0xe5,0x02,0x05,0x03,0x05,0x01,0x01,0x09,
- 0x02,0x01,0x14,0x03,0x09,0x02,0x01,0xe5,0x02,0x0f,0x03,0x02,0xe6,0x03,0x03,0xe7,
- 0x0e,0x02,0x02,0x01,0x09,0x01,0x04,0x04,0x07,0x04,0x02,0x01,0x03,0xe5,0x01,0x01,
- 0x06,0x01,0xe5,0x05,0x02,0x0b,0x01,0xe5,0xe6,0xe5,0x05,0x02,0x04,0xe6,0x03,0x06,
- 0x02,0x06,0x02,0x03,0x01,0xe5,0x01,0x01,0x07,0x10,0x0c,0x06,0x04,0x07,0x01,0x03,
- 0xe5,0x0d,0x0d,0xe6,0xe6,0x0c,0x09,0x09,0x05,0xe6,0x02,0x01,0xe7,0x01,0x03,0xe7,
- 0x01,0x04,0x04,0x03,0xe7,0x01,0x05,0xe6,0xe5,0x02,0x05,0x04,0x01,0xe5,0xe5,0x02,
- 0xe5,0xe6,0xe5,0x02,0xe5,0x04,0xe5,0x02,0xe5,0x01,0x01,0x03,0xe5,0xe8,0x03,0x01,
- 0x02,0x01,0x01,0xe5,0x03,0x03,0xe5,0x07,0xe8,0x04,0xe5,0xe5,0xe6,0x02,0xe5,0xe7,
- 0x01,0x01,0xe7,0x01,0x01,0x04,0x01,0x0a,0x0d,0x03,0x01,0xe5,0x26,0x02,0x03,0x02,
- 0xe5,0x04,0x02,0x06,0x09,0x02,0x02,0x0d,0x02,0x06,0x04,0x04,0x02,0x01,0xe5,0x02,
- 0x02,0xe5,0x06,0x02,0x06,0x09,0x04,0x04,0x09,0x02,0x06,0x09,0x02,0xe5,0x04,0x09,
- 0x02,0xe5,0x11,0x02,0x0f,0xe5,0xe5,0xe6,0x09,0x1d,0x05,0xe5,0x01,0xe5,0x03,0xe5,
- 0x01,0x01,0x03,0xe5,0x01,0xe5,0x03,0xe5,0x01,0x13,0x01,0x03,0xe5,0x07,0xe5,0x01,
- 0xe5,0x03,0xe5,0x09,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x03,
- 0x03,0xe5,0x07,0xe5,0x07,0xe5,0x01,0xe5,0x03,0xe5,0x01,0x0f,0x03,0x09,0x07,0x02,
- 0x02,0xe5,0x09,0x03,0x09,0x09,0x05,0x03,0xe5,0x04,0x02,0xe5,0x01,0x02,0x02,0xe7,
- 0x05,0xe5,0x03,0x03,0x02,0x03,0x02,0x03,0x05,0xe6,0x06,0xe5,0xe5,0x02,0x02,0xe5,
- 0x04,0x01,0x02,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x04,
- 0x02,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x02,0xe6,0x01,0x09,0xe5,0x03,0x03,0x04,0xe6,
- 0x05,0xe6,0x01,0x02,0x1d,0x12,0xe5,0x05,0x02,0x13,0x08,0x1d,0xe5,0x07,0xe5,0x28,
- 0x12,0xe5,0x11,0xe5,0x08,0x1d,0x04,0x02,0x02,0xe5,0x1d,0x10,0x03,0x05,0x01,0x11,
- 0x01,0x25,0x03,0x05,0x03,0x02,0x04,0x09,0x13,0x03,0x05,0x09,0x03,0x05,0x09,0x03,
- 0x05,0x03,0x1b,0x0a,0x01,0xe6,0x0e,0x07,0x01,0x07,0x01,0x0a,0xe6,0x05,0xe7,0x03,
- 0x01,0xe7,0x05,0xe5,0xe5,0x03,0x09,0x01,0xe6,0x04,0x01,0xe7,0x02,0xe5,0xe8,0x02,
- 0xe5,0xe8,0x07,0xe7,0x03,0x01,0xe5,0xe5,0x02,0xe5,0xe8,0x05,0xe7,0xe5,0x03,0xe5,
- 0xe5,0x05,0xe7,0x02,0xe5,0xe6,0xe5,0x03,0x01,0xe7,0x06,0xe6,0xe5,0xe6,0xe5,0x06,
- 0x01,0x01,0x05,0x01,0x0e,0x01,0x01,0x0c,0x02,0xe5,0x04,0xe5,0xe6,0x05,0x01,0xe5,
- 0x02,0x01,0x03,0xe5,0x03,0xe5,0xe7,0x03,0xe5,0x01,0xe5,0x01,0x02,0x01,0xe6,0x06,
- 0xe5,0x04,0xe5,0xe7,0x04,0x01,0xe6,0x01,0x02,0x01,0xe6,0x04,0x01,0xe6,0x06,0x01,
- 0xe6,0x04,0x01,0xe6,0x04,0x01,0xe6,0x06,0xe6,0x03,0xe5,0xe7,0x04,0x02,0xe5,0x01,
- 0x02,0x01,0xe6,0x03,0xe5,0xe7,0x07,0xe5,0x04,0x01,0xe5,0x05,0x01,0xe5,0x02,0x02,
- 0x01,0xe5,0x0c,0xe5,0x01,0xe5,0x06,0xe5,0x04,0x07,0x01,0x04,0x04,0x0b,0x02,0x06,
- 0x07,0xe5,0x0c,0x02,0x06,0x02,0x01,0x07,0x01,0xe5,0x01,0x03,0x01,0x04,0x02,0x01,
- 0xe5,0x02,0x03,0x04,0x01,0xe5,0x01,0x01,0x03,0x06,0x03,0x04,0xe5,0x0b,0xe5,0x03,
- 0x01,0x02,0x02,0x01,0x0b,0x02,0x05,0x02,0x03,0x01,0x07,0x01,0xe5,0x17,0xe8,0x0d,
- 0x05,0xe6,0xe5,0x04,0xe6,0x06,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe6,0x06,0xe5,0x01,
- 0x05,0xe6,0xe6,0x03,0xe6,0xe5,0x04,0xe6,0xe6,0x03,0xe6,0xe5,0x03,0xe6,0x01,0x05,
- 0x01,0xe6,0xe5,0x02,0xe7,0x06,0xe6,0x01,0x04,0xe7,0x05,0xe7,0x04,0xe8,0xe5,0x02,
- 0x01,0xe5,0x05,0xe7,0x07,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe5,0x05,0x01,0xe5,0x06,
- 0x02,0xe5,0x0e,0x0a,0x06,0x01,0x09,0xe5,0x23,0x02,0xe5,0x04,0x01,0xe5,0x0f,0x01,
- 0xe6,0x04,0x01,0x0c,0x0c,0xe5,0x01,0x01,0xe6,0x06,0x0a,0xe5,0x06,0xe5,0x01,0x03,
- 0x01,0xe6,0x04,0x01,0xe5,0x07,0xe6,0x06,0x07,0x01,0x07,0x01,0x03,0x0b,0xe5,0xe5,
- 0xe5,0x0c,0x0a,0x06,0x01,0x07,0x01,0xe5,0xe5,0x08,0x09,0x09,0x06,0x07,0x01,0x01,
- 0x0a,0x04,0x01,0x02,0x04,0x01,0x02,0x03,0x07,0x03,0x05,0x03,0xe5,0xe5,0x01,0x01,
- 0x01,0x02,0x02,0x01,0x01,0x05,0x03,0xe5,0x03,0x03,0xe5,0xe5,0x01,0x04,0x01,0x02,
- 0xe5,0x01,0xe5,0xe5,0x01,0x04,0x09,0x01,0x07,0x01,0x05,0x0c,0x08,0x06,0x13,0x2f,
- 0x0b,0xe5,0x11,0x09,0x04,0x03,0x03,0x02,0x01,0x09,0x09,0x03,0x05,0x08,0xe5,0x02,
- 0xe5,0x02,0xe5,0x02,0x03,0x01,0x04,0x03,0xe5,0x0c,0x09,0x19,0x01,0xe5,0x0e,0xe5,
- 0x08,0x06,0x02,0x06,0x29,0xe5,0x05,0x01,0xe5,0x0f,0x01,0x07,0x01,0x06,0x08,0xe7,
- 0x05,0x01,0xe5,0x05,0xe7,0x01,0x03,0xe7,0x05,0xe8,0x04,0xe8,0xe5,0x04,0x07,0x01,
- 0xe6,0x08,0x02,0x08,0x0a,0x02,0x0a,0xe5,0xe7,0x15,0x02,0x13,0x06,0xe5,0xe5,0x03,
- 0x04,0x06,0x04,0x02,0x01,0x01,0xe5,0x07,0xe5,0xe5,0x0e,0x01,0x06,0x0b,0x02,0x09,
- 0x06,0x01,0xe5,0x09,0x05,0x0e,0x0c,0x01,0xe5,0xe5,0xe5,0x03,0x02,0x06,0x02,0x01,
- 0x1f,0xe5,0xe6,0x10,0x01,0x04,0x02,0x01,0x01,0x05,0xe6,0xe5,0x04,0x01,0xe6,0xe5,
- 0x02,0x01,0x01,0x05,0xe6,0x06,0x01,0x04,0x02,0x01,0x07,0x01,0x02,0x04,0xe7,0x05,
- 0x01,0x07,0x01,0x07,0x01,0x01,0xe5,0x05,0x01,0xe5,0x02,0x02,0x01,0x07,0x01,0x04,
- 0x02,0x01,0x02,0x04,0x01,0x07,0x01,0x03,0x03,0x01,0xe6,0xe5,0x02,0x01,0x04,0x02,
- 0x01,0xe5,0x05,0x01,0x02,0x04,0x01,0x02,0x01,0x02,0x02,0x02,0xe5,0x01,0x0e,0xe5,
- 0x03,0x01,0xe5,0x0f,0x05,0x06,0x02,0xe5,0x01,0x02,0xe5,0x05,0xe6,0x02,0x0e,0xe5,
- 0x09,0x04,0x02,0xe6,0x01,0x03,0x09,0x02,0xe5,0x01,0x03,0x01,0xe5,0x03,0x03,0xe5,
- 0x07,0xe5,0x07,0x09,0xe5,0x04,0x02,0x0a,0xe5,0x04,0x02,0x05,0xe5,0x02,0x07,0x18,
- 0xe9,0x01,0x04,0x03,0x09,0xe5,0xe5,0x02,0x02,0x04,0xe5,0x02,0x0b,0x09,0x05,0x02,
- 0x03,0x02,0x06,0x04,0x0d,0xe5,0x04,0x01,0x03,0x09,0x01,0x02,0xe5,0x04,0xe5,0x01,
- 0x0b,0x02,0x06,0x01,0x07,0x07,0x01,0x09,0x03,0xe5,0x01,0x0a,0x11,0x02,0x01,0x02,
- 0x12,0x04,0x12,0x17,0x05,0x03,0x09,0x09,0x01,0x07,0x03,0x06,0x01,0x01,0x02,0x06,
- 0x16,0x06,0x06,0x02,0x06,0xe5,0x05,0x02,0x05,0xe5,0x04,0x05,0x05,0x0c,0x07,0x02,
- 0x0e,0x15,0x0a,0xe9,0x12,0x02,0x15,0x07,0xe6,0x08,0xe5,0x02,0x02,0x01,0x11,0x01,
- 0xe5,0x05,0xe6,0x06,0xe5,0xe5,0x07,0xe5,0x06,0xe5,0xe5,0x08,0x03,0xe5,0x0a,0x0a,
- 0x11,0x03,0x11,0xe5,0x01,0x03,0x01,0x01,0x07,0xe8,0x0b,0x08,0xe6,0x01,0x01,0x11,
- 0x02,0x02,0x06,0x0a,0x07,0x02,0x06,0x01,0x0c,0x04,0x0a,0x02,0x04,0x01,0xe5,0x12,
- 0x08,0xe5,0x10,0x01,0x17,0x03,0x1f,0x0d,0x08,0x05,0x06,0x0c,0x03,0xe6,0x05,0x10,
- 0x09,0x04,0x04,0x09,0x03,0xe5,0x03,0x02,0x04,0x01,0xe5,0x02,0x04,0x04,0x02,0x01,
- 0x09,0x02,0x06,0x09,0x07,0x03,0x01,0x01,0x03,0x0b,0x03,0x05,0x05,0x03,0x09,0xe6,
- 0x04,0x01,0x01,0x01,0xe5,0x03,0x09,0x07,0x01,0xe5,0x07,0x17,0x01,0x02,0x09,0x0d,
- 0x02,0x06,0x02,0x06,0x02,0x06,0xe7,0x05,0xe6,0x06,0xe6,0x04,0x01,0xe6,0x06,0xe6,
- 0x06,0xe6,0xe5,0x04,0xe7,0x02,0x02,0xe6,0x01,0x06,0xe7,0x05,0x09,0xe6,0x06,0xe6,
- 0x05,0xe7,0x02,0xe5,0x01,0xe6,0x06,0xe6,0x01,0x04,0xe6,0x06,0x09,0x09,0x03,0x08,
- 0x0e,0xe5,0xe5,0x05,0x0c,0x28,0x06,0x0c,0x06,0x02,0x09,0x09,0x08,0x02,0x04,0x05,
- 0x0b,0x19,0x08,0x1e,0x29,0x08,0x03,0x08,0x0f,0x01,0x05,0xe7,0x05,0xe7,0x02,0x02,
- 0xe6,0x07,0xe5,0x02,0x01,0x07,0x0e,0x01,0x06,0x01,0x07,0x07,0x0b,0x02,0xe8,0x03,
- 0xe8,0x05,0xe7,0x01,0x02,0x09,0x06,0x04,0x13,0x03,0x04,0xe5,0xe6,0x04,0xe5,0x07,
- 0xe5,0xe5,0x17,0x01,0xe5,0x02,0x11,0x02,0x09,0x09,0x0a,0x02,0x03,0x02,0x02,0x1c,
- 0x06,0x1c,0x02,0x09,0x06,0xe5,0xe5,0x1a,0x02,0x13,0x07,0x01,0x03,0x03,0x01,0x0a,
- 0x18,0xe5,0xe6,0x0a,0x02,0x02,0x06,0x06,0x02,0x09,0x08,0xe5,0x07,0xe5,0x05,0x02,
- 0x04,0x01,0x02,0x04,0x04,0x04,0x04,0x04,0xe6,0x01,0x03,0x05,0x03,0xe5,0xe5,0x03,
- 0x03,0x02,0x05,0xe5,0x04,0x06,0x02,0x02,0x06,0x09,0x03,0x05,0x09,0x09,0x03,0x05,
- 0x08,0xe5,0x0e,0x04,0xe5,0x02,0x02,0x01,0x0d,0x09,0x05,0x03,0x01,0x07,0x07,0xe6,
- 0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x05,0xe7,0x08,0xe6,
- 0x06,0x01,0x07,0xe7,0x05,0xe6,0x06,0xe6,0x01,0x04,0xe6,0x06,0xe7,0x05,0xe6,0x08,
- 0x06,0x02,0xe5,0xe5,0x05,0x14,0x03,0xe5,0x01,0x10,0x09,0xe5,0x07,0x09,0x33,0x08,
- 0x18,0x0b,0x05,0x12,0x0a,0x15,0x0f,0x09,0xe6,0x06,0x03,0x10,0x02,0x01,0xe8,0x07,
- 0xe5,0x03,0x14,0xe5,0x07,0xe5,0x03,0x03,0x01,0xe5,0x01,0x03,0x05,0x03,0x01,0xe5,
- 0x01,0x09,0x03,0x05,0x06,0xe5,0xe5,0x02,0x05,0x01,0x04,0x01,0x02,0x03,0x02,0xe5,
- 0xe5,0x02,0x02,0xe5,0xe5,0x02,0x02,0x01,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x02,
- 0x05,0x0d,0x09,0x09,0x09,0x02,0xe5,0xe5,0x0d,0xe6,0xe7,0x01,0x01,0x0d,0x04,0x06,
- 0x01,0xe5,0x01,0x06,0x02,0x08,0xe5,0x01,0xe5,0x03,0xe5,0x07,0x01,0x01,0xe5,0x03,
- 0x02,0x06,0xe5,0x07,0x04,0x01,0x02,0x03,0xe5,0x03,0x04,0xe5,0x04,0xe5,0xe5,0x05,
- 0xe5,0xe5,0x05,0xe5,0x02,0xe5,0x02,0x09,0x09,0xe5,0xe5,0xe5,0xe5,0x01,0x08,0xe6,
- 0xe5,0xe5,0xe6,0x02,0x02,0x01,0xe5,0x01,0x06,0x03,0x02,0xe5,0xe5,0x0a,0x01,0x02,
- 0x03,0x04,0x05,0xe5,0xe5,0xe5,0x21,0x04,0x04,0x04,0x02,0x01,0x04,0x04,0x04,0x04,
- 0x04,0x04,0x04,0x04,0x04,0x01,0xe5,0xe5,0x03,0x02,0x01,0x06,0x04,0x04,0x04,0x04,
- 0x02,0x01,0x04,0x02,0x01,0x04,0x02,0x01,0x04,0x04,0x04,0x02,0x01,0x02,0x06,0x01,
- 0x11,0xe5,0x0a,0x0b,0x04,0x01,0x01,0x02,0x07,0x02,0x01,0x04,0xe5,0xe5,0x08,0x09,
- 0x06,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x02,0x06,0x01,0xe5,0x05,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x08,0x09,0x05,0xe5,0x01,0x09,0x0d,0x05,0xe5,0x0a,0x10,0x01,0x01,0x05,0xe5,0x01,
- 0x05,0xe5,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,
- 0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,
- 0x02,0xe5,0x01,0x04,0x02,0x03,0x02,0x02,0xe5,0x01,0x02,0x02,0x06,0x02,0x03,0x02,
- 0x02,0x03,0x02,0x02,0xe5,0x01,0x02,0x02,0x03,0xe5,0x03,0x09,0x01,0x01,0x05,0xe5,
- 0x01,0x05,0x01,0x01,0xe5,0x0f,0x03,0x02,0x0e,0x09,0x04,0x04,0x09,0x05,0x03,0x05,
- 0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x02,0x01,0xe5,0x02,0x02,0x01,0xe5,
- 0x02,0x07,0x03,0x02,0xe7,0x02,0x04,0xe5,0x02,0x01,0x02,0xe5,0x02,0x02,0xe7,0x02,
- 0x02,0xe7,0x02,0x05,0x03,0x02,0xe7,0x02,0x09,0x04,0x04,0x02,0x01,0x04,0x04,0xe5,
- 0x02,0x09,0x02,0xe5,0x01,0xe5,0x0b,0x01,0x04,0x02,0x04,0x01,0xe5,0xe5,0x05,0x02,
- 0x06,0x02,0x03,0xe5,0x03,0x06,0x02,0x03,0xe5,0x03,0x06,0x01,0xe5,0x02,0xe5,0x03,
- 0x06,0x02,0x03,0xe5,0x03,0x06,0x04,0x04,0x04,0x05,0xe6,0xe5,0x08,0x06,0x02,0x06,
- 0x02,0x03,0x05,0x06,0x04,0x04,0x01,0xe5,0x03,0x02,0x01,0x09,0x04,0x01,0xe7,0x0e,
- 0x04,0x02,0x0a,0x01,0x04,0xe5,0xe5,0x02,0xe5,0xe8,0x02,0xe5,0x01,0x01,0x03,0xe5,
- 0xe6,0x02,0x02,0x01,0x01,0x02,0x01,0xe5,0xe7,0x01,0x02,0x01,0x01,0x02,0x01,0xe7,
- 0x03,0x02,0x01,0x01,0x02,0x01,0xe5,0xe7,0x01,0x02,0x01,0x01,0x02,0x01,0xe5,0xe7,
- 0x03,0x01,0xe5,0x05,0x01,0xe5,0xe5,0x03,0x01,0xe5,0x05,0x01,0xe5,0xe7,0x01,0x01,
- 0xe5,0xe7,0x01,0x02,0x06,0x01,0xe5,0xe6,0x02,0x01,0xe5,0xe5,0xe6,0x02,0xe5,0x03,
- 0x03,0xe5,0x03,0x03,0xe5,0xe5,0x01,0x0d,0x02,0x02,0xe5,0xe5,0x12,0x04,0x02,0x06,
- 0x09,0x02,0x01,0x01,0x02,0x02,0x02,0xe5,0x01,0x02,0x03,0x02,0x02,0x03,0x02,0x02,
- 0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x05,0x02,0x02,0x03,
- 0x02,0x02,0x01,0x01,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
- 0x02,0x02,0x01,0x04,0x02,0x06,0x02,0xe5,0x04,0x02,0x06,0x04,0x0f,0x02,0x02,0xe5,
- 0x13,0xe5,0x03,0xe5,0x01,0x01,0x03,0xe5,0x01,0xe5,0x03,0xe5,0x01,0x01,0x03,0xe5,
- 0x01,0x05,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,
- 0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x06,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,
- 0x07,0xe5,0x01,0x01,0x03,0xe5,0x01,0x14,0xe5,0xe6,0x0a,0x02,0x06,0x02,0xe5,0xe6,
- 0x01,0x02,0xe5,0x04,0x02,0xe5,0xe6,0x02,0x01,0xe8,0x02,0x01,0xe5,0x05,0x01,0xe7,
- 0x03,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0xe5,0x07,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,
- 0xe6,0x04,0x01,0xe5,0x05,0x01,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x01,0x02,0x02,
- 0xe5,0x01,0x02,0x02,0x02,0x01,0x01,0x05,0xe5,0xe5,0x01,0x02,0x06,0x02,0x08,0xe5,
- 0x07,0xe5,0x07,0xe5,0x08,0xe5,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x08,0x04,0x03,
- 0xe7,0x08,0x0b,0x05,0x03,0x05,0x03,0x05,0x02,0x02,0x09,0x02,0xe5,0x04,0x02,0x06,
- 0x02,0xe5,0x04,0x02,0x06,0x02,0xe5,0x04,0x02,0x06,0x02,0xe5,0x05,0xe5,0x01,0xe5,
- 0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0x06,0x02,
- 0xe5,0x04,0x02,0xe5,0x02,0x05,0x03,0x05,0x03,0x05,0x01,0x09,0x0a,0x03,0x0c,0xe5,
- 0xe5,0x05,0x02,0xe5,0xe5,0x05,0xe7,0x05,0xe5,0xe5,0x05,0xe7,0x03,0x02,0xe6,0x03,
- 0x02,0xe6,0x03,0x02,0x01,0x01,0x02,0x02,0xe6,0x03,0x02,0x01,0x01,0x02,0x02,0x01,
- 0x04,0x02,0xe6,0x05,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,
- 0x02,0xe6,0xe5,0x01,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0x01,0x06,0xe7,0x05,0xe7,
- 0x05,0xe7,0x02,0x02,0x0f,0xe7,0x0c,0x01,0xe5,0x05,0x01,0xe6,0x03,0xe5,0xe7,0x04,
- 0x01,0xe6,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,
- 0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x06,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,
- 0x02,0xe5,0x04,0x01,0xe6,0x03,0xe5,0xe7,0x04,0x01,0xe6,0x04,0x02,0x06,0xe5,0x02,
- 0x03,0xe7,0x0d,0x04,0x09,0x09,0x01,0x07,0x01,0x04,0x07,0x01,0x02,0x01,0x02,0x01,
- 0x07,0x09,0x01,0x04,0x02,0x09,0x06,0x02,0x08,0x02,0x09,0x01,0x02,0x04,0x06,0x02,
- 0x09,0x09,0x09,0x09,0x04,0x09,0x08,0xe5,0x05,0x07,0x12,0x0d,0x01,0x03,0xe5,0xe6,
- 0x04,0xe5,0xe6,0x01,0x02,0xe5,0xe6,0x04,0x01,0xe5,0x06,0xe6,0x01,0x03,0x01,0xe5,
- 0x01,0x04,0xe6,0x01,0x03,0x01,0xe5,0x01,0x03,0xe7,0x01,0x03,0x01,0xe5,0x01,0x03,
- 0xe7,0x01,0xe5,0x03,0xe5,0x03,0xe5,0x01,0xe7,0x01,0x03,0xe7,0x01,0xe5,0x01,0xe7,
- 0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0x01,0xe5,0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,
- 0x01,0xe5,0x01,0x03,0xe8,0x01,0x04,0xe6,0x01,0x02,0xe6,0xe5,0x04,0xe6,0xe5,0x06,
- 0xe7,0x02,0x01,0x01,0x01,0x08,0x04,0x01,0x0a,0x09,0xe5,0x07,0xe5,0x03,0xe5,0xe5,
- 0x05,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0xe5,0x04,0x02,0xe6,0x03,0x02,
- 0xe5,0x03,0xe5,0x03,0xe5,0x04,0x02,0x06,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0xe5,0x04,0x02,0xe5,0x07,0xe6,0x03,0x03,0x09,0x04,0x04,0x04,0x03,0x0f,
- 0x02,0x09,0x03,0x01,0x03,0x02,0x03,0x01,0x03,0x05,0x03,0x05,0x02,0xe6,0xe5,0x01,
- 0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,
- 0x02,0xe5,0x01,0xe5,0xe5,0x01,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x03,0x04,0x02,
- 0xe5,0xe6,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0xe5,0xe6,0x01,0x02,
- 0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0x03,0x02,0xe5,0xe6,0x02,0x01,0x09,
- 0x03,0x03,0x01,0x03,0xe5,0x0f,0xe6,0xe5,0x0b,0xe5,0xe5,0x03,0xe6,0x05,0xe7,0x05,
- 0xe7,0x05,0x01,0x01,0x06,0xe5,0xe5,0x04,0x01,0x01,0x06,0xe5,0xe5,0x04,0x01,0x01,
- 0x05,0xe6,0xe5,0x04,0x01,0x01,0x05,0xe6,0xe5,0x01,0x04,0x02,0xe5,0x01,0x03,0xe5,
- 0xe5,0x04,0xe6,0xe5,0x01,0x02,0xe6,0xe5,0x01,0x03,0xe5,0xe5,0x01,0x02,0x01,0x01,
- 0x02,0x02,0xe6,0xe5,0x01,0x02,0x01,0x01,0x06,0xe5,0x0d,0x02,0xe6,0x06,0xe6,0x02,
- 0x11,0xe5,0x0c,0x01,0xe5,0x01,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x03,0xe5,0x01,
- 0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x06,0x02,0x05,0xe5,
- 0x01,0x05,0xe5,0x03,0x05,0xe5,0x01,0x05,0x03,0x06,0x02,0x05,0xe5,0x01,0x06,0x02,
- 0x06,0x02,0x09,0x05,0x13,0xe5,0x07,0xe5,0x01,0x02,0x11,0xe5,0x01,0x0d,0x08,0x06,
- 0xe5,0xe5,0x05,0x02,0x28,0x13,0x1f,0x13,0x09,0x23,0x09,0x02,0x06,0x07,0x01,0x02,
- 0xe5,0x07,0xe5,0x0b,0x01,0x01,0x0b,0x05,0x01,0x01,0x05,0x01,0x02,0xe5,0x02,0x01,
- 0xe6,0x04,0x01,0x07,0x01,0x07,0xe6,0xe5,0x04,0x01,0x01,0x04,0xe5,0xe5,0x06,0x01,
- 0x01,0x05,0x01,0xe5,0x05,0xe6,0x01,0x04,0xe6,0x08,0xe6,0x06,0x01,0x07,0xe6,0x01,
- 0x04,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0xe6,0x05,0xe5,0xe6,0x01,0x03,0x01,0xe6,
- 0x01,0x02,0x01,0x01,0x04,0xe5,0xe5,0x06,0x01,0x0a,0x02,0xe5,0x01,0x10,0x03,0x01,
- 0xe5,0x01,0xe5,0x07,0x03,0xe6,0x02,0xe5,0xe5,0x05,0xe5,0xe5,0x04,0x07,0x01,0xe6,
- 0x03,0xe5,0xe5,0x09,0x05,0x09,0xe5,0xe5,0x05,0x02,0x05,0x02,0xe5,0x02,0x08,0xe5,
- 0x03,0xe5,0x07,0xe5,0x01,0xe5,0x03,0xe5,0x01,0xe5,0x03,0x03,0x05,0xe5,0x02,0x01,
- 0x01,0xe5,0x03,0x02,0x02,0x02,0x05,0xe5,0x05,0xe5,0xe5,0x05,0x10,0xe6,0xe6,0x11,
- 0x09,0x09,0x02,0x0f,0xe5,0x0b,0x01,0x03,0x04,0x07,0x06,0x0a,0x04,0x03,0x10,0x04,
- 0x03,0x04,0x03,0x01,0x07,0x01,0x02,0x04,0x02,0x05,0x07,0x03,0x01,0x0a,0xe6,0x01,
- 0x02,0x03,0x01,0x02,0x01,0x07,0xe5,0x02,0x0e,0x06,0xe5,0xe7,0x11,0x04,0x01,0x0c,
- 0x03,0x02,0x02,0x0d,0x05,0x0f,0x03,0x0b,0x04,0x09,0x09,0x06,0x04,0x0c,0x06,0x09,
- 0x06,0x02,0x09,0x09,0x0a,0x12,0xe5,0x04,0x12,0xe5,0x06,0x03,0x0d,0xe6,0x08,0x07,
- 0xe6,0x03,0x04,0xe5,0x03,0x01,0x0c,0x03,0xe5,0x02,0x03,0x05,0xe5,0x02,0xe5,0x02,
- 0x05,0x01,0x01,0xe5,0x05,0x01,0x06,0xe8,0x05,0x01,0x01,0x06,0xe5,0xe5,0x05,0xe5,
- 0xe5,0x05,0xe5,0xe5,0x02,0x01,0xe6,0xe5,0x04,0xe6,0xe5,0x06,0x01,0x07,0x01,0x07,
- 0xe5,0x07,0x06,0x04,0x06,0x07,0x06,0x01,0xe9,0x07,0x05,0x06,0x01,0x08,0x01,0x04,
- 0x0c,0x02,0x03,0x07,0x0b,0x01,0x07,0x0a,0x02,0x02,0x09,0x06,0x06,0xe5,0xe5,0xe5,
- 0xe5,0x08,0x07,0x01,0x03,0x03,0x01,0x02,0x04,0x01,0x07,0x01,0x02,0x01,0x02,0x01,
- 0x07,0x01,0x05,0x05,0x07,0x10,0x08,0x0c,0x09,0x09,0x08,0x0e,0x01,0x08,0xe5,0x07,
- 0xe6,0x05,0x03,0x05,0xe6,0x06,0xe6,0x02,0x04,0xe5,0x04,0x01,0xe6,0x08,0x03,0x03,
- 0x03,0x04,0xe5,0xe5,0x04,0xe6,0x01,0xe5,0x04,0x07,0x05,0x04,0x07,0x05,0xe5,0x02,
- 0x04,0xe6,0x15,0x03,0x05,0x11,0x01,0x03,0xe5,0x01,0x0d,0x03,0x20,0x01,0x0f,0x0b,
- 0x09,0x05,0x03,0x01,0x02,0x0e,0x0b,0x01,0x02,0x04,0x09,0x01,0x07,0x0e,0x0e,0x01,
- 0xe5,0x05,0x0c,0x09,0x09,0x02,0x07,0xe5,0x0a,0x03,0x02,0x10,0x07,0x01,0x07,0x08,
- 0x0b,0x01,0x07,0x09,0x04,0x07,0x01,0x03,0x09,0x0c,0x01,0x07,0x02,0x04,0xe5,0x04,
- 0x0d,0x02,0x04,0x01,0x08,0xe5,0x01,0x07,0x08,0x07,0x01,0x0a,0x0d,0x07,0x08,0x06,
- 0x03,0x01,0xe6,0x07,0xe5,0x0b,0x09,0x12,0xe5,0x05,0x09,0x01,0x08,0x06,0x01,0x06,
- 0x04,0xe5,0x06,0x01,0x06,0x02,0xe8,0x05,0xe5,0x05,0x06,0x01,0xe5,0xe5,0x04,0x0e,
- 0x06,0x08,0xe5,0x01,0x04,0x04,0x09,0xe6,0x07,0xe5,0x08,0x01,0x15,0x01,0xe5,0xe6,
- 0x05,0x04,0x06,0x14,0x01,0x19,0x1d,0x13,0x08,0x03,0xe7,0x04,0x03,0xe5,0x06,0x09,
- 0xe5,0x07,0x06,0xe5,0xe7,0x03,0x02,0x09,0x0e,0x03,0x02,0x02,0x09,0x0b,0x0d,0x02,
- 0x02,0x0c,0x1b,0x01,0x06,0xe5,0xe6,0x01,0x02,0x09,0x06,0x02,0xe5,0xe5,0x01,0x09,
- 0xe5,0x02,0x01,0x05,0xe5,0x04,0xe5,0x04,0x09,0x01,0x03,0x03,0x01,0xe5,0x04,0x10,
- 0x03,0x01,0x07,0x01,0x03,0x0d,0x01,0x08,0x06,0x02,0xe6,0x0b,0x15,0x02,0xe5,0xe5,
- 0x0b,0x0b,0xe5,0x07,0xe5,0x05,0x03,0x05,0x0a,0x06,0x01,0x02,0x06,0xe5,0x04,0x0c,
- 0xe5,0x11,0xe5,0x09,0x0a,0x06,0x01,0x03,0x05,0x09,0xe5,0x0f,0x01,0xe5,0x0b,0x09,
- 0x05,0x01,0x09,0x07,0xe5,0x02,0x09,0x03,0x10,0x03,0x17,0x09,0x1d,0x13,0x15,0x0a,
- 0x06,0x16,0x09,0x2f,0xe5,0x10,0x02,0x0c,0x01,0xe5,0x01,0xe6,0x0d,0xe5,0x01,0x01,
- 0x04,0x02,0xe5,0x0e,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x09,
- 0xe5,0x04,0x02,0xe5,0x04,0x04,0x09,0x09,0x09,0x09,0x09,0xe5,0xe6,0x04,0x13,0xe5,
- 0x07,0x08,0xe5,0x01,0xe5,0x03,0xe5,0x09,0x05,0x02,0x01,0x08,0xe5,0x01,0x02,0xe5,
- 0x18,0xe5,0x07,0x09,0x06,0x02,0x09,0x02,0x01,0x04,0x09,0x05,0xe5,0x01,0x05,0x03,
- 0x07,0xe5,0x01,0x06,0x02,0x09,0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x02,
- 0xe5,0x14,0xe5,0xe5,0xe5,0xe5,0xe7,0xe5,0x08,0x03,0xe5,0x0c,0x01,0x02,0x03,0x04,
- 0x0a,0x02,0x01,0xe5,0xe5,0xe5,0xe5,0x04,0x01,0x0e,0xe5,0xe5,0x05,0xe5,0xe5,0x04,
- 0xe5,0x01,0x01,0x04,0x01,0x02,0x04,0xe5,0x02,0xe5,0x05,0x10,0xe5,0x05,0x01,0xe5,
- 0x01,0x0c,0x04,0xe5,0xe5,0x04,0xe5,0x03,0x03,0xe5,0x08,0x01,0xe5,0x04,0xe5,0x03,
- 0x01,0x05,0x0b,0x09,0x04,0xe5,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0xe6,0x05,0x07,0xe5,
- 0x01,0x0a,0x06,0x02,0x01,0x04,0xe5,0xe5,0xe5,0x0c,0xe5,0x01,0x06,0x02,0x06,0x02,
- 0x06,0x02,0x05,0xe5,0x01,0xe5,0xe5,0x02,0xe5,0xe5,0x04,0xe5,0x07,0xe5,0x01,0x05,
- 0xe5,0x13,0xe5,0x01,0x09,0x13,0x09,0x06,0x02,0x09,0x09,0x06,0x02,0x01,0x07,0x01,
- 0x0b,0x06,0x05,0x09,0x05,0x06,0x09,0x04,0x01,0x07,0x01,0x02,0x02,0x03,0x02,0x02,
- 0x03,0x02,0x01,0xe7,0x03,0x04,0x01,0xe5,0xe5,0x05,0x09,0x02,0xe5,0x01,0x05,0xe5,
- 0x01,0x04,0x02,0x01,0x01,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x01,0x09,0xe5,0x01,0x02,
- 0x02,0xe5,0x01,0x02,0x02,0x01,0x01,0xe5,0xe5,0x01,0xe5,0xe6,0x01,0x02,0x06,0x02,
- 0x03,0x02,0x02,0xe5,0xe6,0x13,0x05,0xe5,0x01,0xe5,0x01,0x0a,0x03,0x04,0x04,0x09,
- 0x05,0x01,0x01,0x05,0x01,0x02,0x06,0x02,0x09,0x06,0x02,0x04,0x01,0x04,0x01,0x02,
- 0x07,0x04,0x03,0x04,0x07,0x04,0x04,0x09,0x01,0x02,0x09,0x03,0xe5,0x03,0x03,0xe5,
- 0x03,0x04,0x01,0x02,0x01,0x01,0x02,0x02,0x04,0x03,0x03,0x01,0x03,0x02,0x01,0x04,
- 0x09,0x09,0x05,0xe6,0x0d,0x05,0x01,0x01,0x01,0x02,0x01,0xe5,0xe5,0xe5,0x01,0x02,
- 0x01,0x02,0x01,0x02,0x09,0x01,0x02,0x04,0x01,0x07,0x01,0x02,0x06,0x04,0x02,0x01,
- 0x07,0x01,0x05,0x01,0x06,0x01,0x02,0x01,0x07,0x01,0x02,0x04,0x09,0x01,0x05,0x01,
- 0x01,0x02,0x02,0x01,0x0b,0x02,0x04,0x01,0x04,0x04,0x01,0x07,0x07,0x01,0x07,0x01,
- 0x0d,0xe5,0xe7,0x0c,0x09,0x01,0x02,0x01,0x02,0x01,0x02,0x02,0x01,0x01,0x02,0x01,
- 0xe5,0xe5,0x03,0x04,0x01,0x02,0x04,0x04,0x04,0x01,0x02,0x04,0x03,0xe5,0xe6,0xe5,
- 0xe5,0x01,0x04,0x01,0x02,0x04,0x03,0xe5,0xe5,0x03,0x01,0x02,0x04,0x04,0x04,0x04,
- 0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x04,0x04,0x04,0x04,0x01,0x02,0x02,0x01,0x04,
- 0x04,0x03,0xe5,0x03,0x01,0x07,0x01,0x0e,0x02,0xe5,0x19,0x04,0x04,0x0e,0x11,0x02,
- 0x06,0x02,0x06,0x02,0x06,0xe6,0x10,0x02,0x03,0x04,0x13,0x02,0x2e,0xe5,0x07,0x02,
- 0x03,0x09,0x20,0xe6,0xe6,0x13,0xe5,0x03,0xe5,0x07,0xe5,0x08,0x16,0x09,0xe5,0x07,
- 0x05,0xe5,0x01,0xe5,0x04,0x12,0xe5,0x14,0x02,0x13,0x13,0xe5,0x07,0x09,0x05,0xe5,
- 0x07,0xe5,0x1c,0x02,0x03,0xe5,0x0a,0x02,0x04,0x01,0x02,0xe6,0x06,0xe6,0x06,0x06,
- 0x02,0x09,0x05,0x03,0x09,0x05,0x03,0xe5,0x07,0x09,0x06,0x02,0xe5,0x04,0x04,0x09,
- 0x05,0x03,0x09,0x03,0x02,0x02,0x06,0x02,0x06,0x02,0x03,0x05,0x03,0x05,0xe6,0x06,
- 0xe5,0x07,0x09,0x0d,0x01,0xe7,0x01,0x06,0x02,0x09,0x13,0x06,0x02,0x09,0x27,0x09,
- 0x06,0x09,0x18,0x09,0x06,0x0b,0x07,0x43,0x02,0xe5,0x01,0x09,0x0a,0x12,0x07,0x02,
- 0x09,0x26,0x09,0x11,0x06,0x11,0x0a,0x41,0x20,0xe5,0xe6,0x0c,0x01,0x09,0xe7,0x03,
- 0x01,0xe5,0xe5,0x05,0x02,0x06,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x01,0x04,0x02,
- 0x04,0x01,0xe7,0x05,0x02,0x06,0x02,0x04,0x01,0xe7,0x07,0x02,0x01,0x02,0x01,0x02,
- 0x01,0x04,0x02,0x06,0x02,0x01,0x04,0x02,0x01,0x04,0x02,0x06,0x02,0x04,0x01,0x02,
- 0x01,0x05,0xe6,0x05,0xe5,0xe5,0x0f,0x0e,0xe5,0x01,0x0d,0x01,0xe5,0x04,0xe5,0x01,
- 0xe5,0x03,0xe5,0xe7,0x01,0x02,0x03,0x02,0x02,0x03,0x05,0x01,0x01,0x05,0x01,0x01,
- 0x05,0x03,0x04,0xe5,0xe7,0xe5,0x02,0x03,0x01,0xe5,0x01,0x03,0x05,0x02,0xe5,0x06,
- 0x03,0x05,0x01,0x01,0x01,0x03,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x07,0x01,
- 0x05,0x01,0x01,0x05,0x01,0x01,0x09,0x04,0x02,0xe6,0x10,0xe5,0x0c,0x01,0x01,0x0d,
- 0x01,0x09,0x01,0x05,0x01,0x09,0x03,0x05,0x04,0x18,0x0b,0x07,0x09,0x03,0x02,0x02,
- 0x01,0x02,0x03,0x02,0x09,0x04,0x04,0x03,0xe5,0x08,0x09,0x04,0x04,0x09,0x18,0x13,
- 0x03,0x0b,0xe8,0x0d,0x05,0xe6,0x06,0xe6,0xe5,0x04,0xe6,0x04,0xe8,0x04,0xe7,0x05,
- 0xe7,0x05,0xe7,0x01,0x03,0xe7,0x06,0xe7,0x05,0xe7,0x04,0xe7,0x07,0xe5,0x01,0x05,
- 0xe7,0x01,0x04,0xe7,0xe5,0x02,0xe8,0x04,0x01,0xe5,0x01,0x03,0xe8,0x04,0x01,0xe5,
- 0x01,0x03,0x01,0xe5,0x05,0xe7,0x02,0x04,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x01,0x05,
- 0xe5,0x06,0x01,0xe6,0x0c,0x01,0x09,0xe5,0x11,0xe6,0x06,0x09,0x09,0x09,0x13,0x07,
- 0x01,0x0a,0x0a,0x1d,0x09,0x09,0x09,0x09,0x0a,0x08,0x13,0x0f,0xe7,0x0c,0x01,0x07,
- 0x04,0x09,0x06,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0xe5,0x03,0xe5,0x01,0x02,0x02,
- 0xe5,0x01,0xe5,0x03,0xe5,0x01,0x05,0x01,0x01,0x02,0x02,0x01,0x01,0xe5,0xe5,0x01,
- 0xe5,0x01,0x03,0x01,0x03,0x04,0x02,0x03,0x05,0x03,0x02,0x02,0xe5,0x01,0xe5,0xe5,
- 0x01,0x03,0xe5,0xe5,0x01,0xe5,0x01,0x02,0x02,0x03,0xe5,0xe5,0x01,0xe5,0x04,0x02,
- 0x01,0x01,0x05,0x06,0x02,0x10,0x0f,0x01,0xe6,0x0b,0x01,0x09,0xe5,0x11,0x04,0xe5,
- 0x02,0x04,0xe5,0x02,0x04,0xe5,0x02,0x04,0xe5,0x02,0x04,0xe5,0x08,0x03,0x05,0x08,
- 0xe5,0x0b,0x02,0x03,0xe6,0x02,0x04,0xe5,0x07,0xe5,0x06,0x01,0x08,0xe5,0x02,0x03,
- 0x01,0x09,0x03,0x03,0x01,0x04,0x08,0x13,0x11,0xe5,0x02,0x09,0x01,0xe5,0x05,0x15,
- 0x03,0x01,0xe5,0x01,0x03,0x01,0xe6,0x04,0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,0x03,
- 0x01,0xe5,0x05,0xe7,0x01,0x03,0xe7,0x05,0x01,0xe5,0x06,0x01,0x04,0x04,0xe6,0x01,
- 0x03,0x01,0xe5,0x01,0x03,0xe8,0x05,0xe6,0x01,0x03,0xe8,0x05,0xe6,0x01,0x03,0x01,
- 0x03,0x04,0xe6,0x0b,0x13,0x0e,0x02,0xe5,0x01,0x2f,0x02,0x02,0x08,0xe5,0x07,0xe5,
- 0x1b,0xe5,0x0f,0x02,0x12,0x09,0x01,0xe5,0x1c,0x0b,0x04,0xe5,0xe5,0x31,0x02,0x03,
- 0x11,0x01,0x07,0x01,0x07,0xe6,0xe5,0x04,0xe6,0x06,0xe6,0xe5,0x04,0xe6,0x06,0xe6,
- 0x06,0xe6,0x06,0x01,0x07,0x01,0x07,0x01,0x05,0x01,0x01,0x01,0x07,0x01,0x03,0x03,
- 0xe6,0xe5,0x04,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x02,0x04,0x01,0x02,0x01,
- 0x02,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x01,0x09,0xe7,0x0f,
- 0x08,0xe5,0x01,0x05,0xe7,0xe5,0x03,0xe5,0xe5,0x03,0xe7,0x07,0xe6,0x06,0xe6,0x06,
- 0xe6,0x06,0xe5,0x01,0x05,0xe5,0x03,0x03,0xe5,0x08,0x03,0x03,0x02,0xe5,0x07,0xe6,
- 0x01,0xe5,0x01,0xe6,0xe5,0x05,0xe6,0x06,0xe5,0x05,0x01,0xe5,0x1b,0xe5,0x01,0x01,
- 0x03,0xe5,0x02,0x1a,0x02,0x02,0xe6,0x09,0x02,0x02,0x05,0x08,0xe5,0x03,0x0b,0x0b,
- 0x11,0x0b,0x12,0x0c,0x07,0x03,0x06,0x01,0x08,0xe5,0xe5,0x01,0x01,0x02,0x09,0x01,
- 0x02,0x01,0xe5,0xe5,0x06,0x06,0x02,0x0b,0x01,0xe5,0x06,0xe5,0x04,0x09,0x05,0x0b,
- 0x02,0x01,0x01,0x11,0x02,0x02,0x06,0x02,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x04,0x02,0x01,0x04,0x01,0xe5,0xe5,0x05,0xe5,0xe5,0x01,0x09,0x03,0x04,
- 0x09,0x05,0xe5,0x0b,0x06,0x09,0x02,0xe5,0x02,0xe5,0x09,0x05,0x03,0x09,0x04,0x0c,
- 0x06,0x0e,0x01,0x0d,0xe6,0x02,0x08,0x04,0x07,0x01,0x01,0x07,0x01,0x07,0x01,0x04,
- 0x02,0x01,0x11,0xe6,0x06,0x01,0x07,0x01,0xe5,0x03,0x01,0x01,0x07,0x01,0x01,0x04,
- 0x08,0x05,0x0a,0x13,0x12,0xe5,0x08,0x1d,0x04,0x03,0xe5,0x02,0xe5,0xe6,0x08,0x04,
- 0x02,0x03,0x09,0x04,0x08,0x09,0x03,0x03,0x02,0x06,0x02,0x02,0x01,0x11,0x01,0x01,
- 0x02,0x02,0x03,0x02,0x02,0x0b,0x01,0xe6,0xe5,0x02,0x02,0x08,0x01,0x05,0x0a,0xe5,
- 0x08,0x08,0x09,0x03,0x04,0x01,0x07,0xe6,0x10,0x09,0x09,0xe7,0xe5,0x0f,0x09,0x10,
- 0x01,0x03,0x03,0x01,0x01,0x07,0xe5,0x07,0x09,0x07,0x01,0x09,0x09,0x02,0x01,0x04,
- 0x03,0xe5,0x01,0x03,0x09,0x09,0x05,0x03,0x02,0x06,0x09,0xe5,0x07,0x03,0x2d,0x0d,
- 0xe5,0xe5,0xe5,0x0b,0x0e,0x10,0x01,0x07,0x05,0x03,0x09,0x09,0x01,0x04,0x02,0x09,
- 0x03,0x05,0x09,0x04,0x01,0x04,0x03,0x05,0x09,0x09,0x09,0x03,0x02,0x02,0x09,0x0d,
- 0x11,0x0c,0x02,0xe7,0xe5,0x0a,0xe9,0xe5,0x06,0xe5,0x06,0x0b,0x06,0x04,0x06,0x1d,
- 0x0c,0x1b,0x0a,0x01,0x0a,0x09,0x0e,0x03,0x0f,0x1d,0x09,0x13,0x08,0x03,0xe5,0x01,
- 0x01,0x06,0x0f,0x04,0x02,0xe6,0x03,0x0c,0x05,0x03,0x09,0x08,0xe5,0x09,0xe6,0xe5,
- 0x04,0xe7,0x05,0xe6,0x13,0x03,0x22,0xe6,0x02,0x08,0x03,0x1e,0xe6,0x16,0x09,0xe9,
- 0x02,0x11,0x03,0x07,0x02,0x0e,0x12,0x09,0x0d,0x09,0x09,0x12,0x02,0x25,0x02,0x05,
- 0x14,0x11,0x05,0x03,0x1f,0xe6,0x09,0x09,0x09,0x01,0x02,0x03,0xe5,0x03,0x04,0x04,
- 0x03,0x05,0x06,0x02,0x06,0x02,0x04,0x04,0x04,0x04,0x04,0x01,0x02,0x04,0x01,0x02,
- 0x04,0x06,0x01,0x01,0x05,0x02,0x03,0x02,0x03,0x05,0x09,0x03,0xe5,0xe5,0x01,0x04,
- 0x04,0x04,0x0b,0x02,0x19,0x0e,0x03,0x03,0xe5,0x0e,0x0b,0x05,0xe5,0xe6,0x02,0x01,
- 0xe5,0x01,0x05,0xe5,0x07,0xe5,0x01,0xe5,0x03,0xe5,0x01,0x05,0xe5,0x01,0xe5,0x03,
- 0xe5,0x01,0x05,0xe5,0x01,0x05,0xe6,0x01,0x04,0xe6,0x01,0x02,0x01,0x01,0xe5,0x07,
- 0xe6,0x02,0x03,0xe5,0x01,0x03,0x01,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe6,0x06,0xe5,
- 0x0a,0x07,0x06,0x04,0x09,0x12,0x03,0x01,0xe6,0x1a,0x07,0x08,0x02,0x06,0x02,0x06,
- 0x02,0x06,0x09,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x0b,0x09,0x09,0x09,0x09,
- 0x03,0xe5,0x03,0x09,0x02,0x09,0x08,0x0a,0x20,0x01,0xe6,0x0c,0x06,0xe5,0xe5,0x02,
- 0x09,0x02,0xe5,0xe5,0x05,0xe5,0xe5,0x02,0x05,0x06,0xe5,0xe5,0x02,0x02,0xe5,0xe5,
- 0x02,0x02,0xe5,0xe5,0x02,0x02,0xe5,0xe5,0x02,0x02,0xe5,0xe5,0x02,0x02,0xe5,0xe5,
- 0x05,0xe5,0x02,0x03,0x01,0xe5,0x01,0x09,0x06,0xe5,0xe5,0xe5,0xe5,0x01,0xe5,0xe5,
- 0x02,0x02,0xe5,0xe5,0x02,0x01,0xe5,0x05,0x02,0xe5,0x0d,0xe5,0x08,0x05,0x0c,0xe5,
- 0x09,0x02,0xe5,0xe6,0xe5,0xe5,0x07,0x09,0x04,0x04,0xe5,0xe5,0x07,0x02,0x06,0x01,
- 0x02,0x01,0x02,0x09,0x01,0xe5,0x05,0x01,0x02,0x01,0x02,0xe5,0xe5,0x05,0xe5,0x02,
- 0x01,0x02,0xe5,0x02,0x01,0x02,0x02,0x08,0xe5,0xe5,0x05,0x03,0xe5,0x03,0x02,0x01,
- 0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x03,0xe5,0x02,0xe5,0x01,0xe6,0x0f,0x02,
- 0x01,0xe6,0x07,0x06,0x01,0x0c,0x01,0x04,0x01,0x04,0x08,0x09,0x03,0x07,0x04,0x04,
- 0x04,0x04,0x02,0x01,0x04,0x02,0x01,0x04,0x04,0x04,0x02,0x01,0x04,0x04,0x04,0x02,
- 0x01,0x04,0x02,0x01,0x04,0x04,0x06,0x04,0x04,0x02,0x01,0x04,0x04,0x04,0x01,0xe5,
- 0xe5,0x03,0x01,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x01,0x03,0x05,0x01,0x04,0x01,0xe5,
- 0xe5,0x08,0x01,0x05,0x0d,0x02,0xe5,0x02,0x04,0x02,0xe5,0xe6,0x09,0x09,0x09,0x06,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x02,0x06,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x08,
- 0x01,0x07,0x01,0x07,0x09,0x10,0xe5,0x04,0x02,0xe9,0xe5,0x09,0x09,0x04,0x06,0x02,
- 0x06,0x02,0x03,0x02,0x02,0xe5,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0xe5,0x01,0x02,
- 0x02,0x01,0x01,0x02,0x02,0x06,0x02,0x01,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0x08,
- 0x02,0x06,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x06,0x02,0x06,0x02,0x04,0x04,0x09,
- 0x10,0x02,0xe5,0x01,0xe5,0x08,0x01,0x0d,0x01,0xe5,0xe5,0x08,0x02,0xe5,0x02,0x05,
- 0x03,0x05,0x03,0x05,0x03,0x02,0xe7,0x02,0x05,0x03,0x04,0xe5,0x02,0x05,0x03,0x04,
- 0xe5,0x02,0x05,0x03,0x04,0xe5,0x02,0x05,0x03,0x01,0x02,0x02,0x03,0x05,0x03,0x02,
- 0xe7,0x02,0x02,0xe7,0x02,0x04,0xe5,0x02,0x04,0xe5,0x02,0x04,0xe5,0x02,0x09,0x09,
- 0x05,0x03,0x02,0x01,0xe5,0x02,0x05,0x01,0x01,0x09,0x02,0x01,0xe6,0x0c,0x09,0x03,
- 0xe5,0xe5,0x03,0x01,0x02,0x01,0xe5,0x02,0x02,0x02,0x03,0x05,0x03,0x02,0xe7,0x02,
- 0x05,0x03,0x01,0xe6,0xe5,0x08,0x03,0x03,0x01,0x03,0x05,0x06,0x04,0x04,0x04,0x09,
- 0x03,0x02,0x02,0x06,0xe5,0xe5,0x06,0x01,0x06,0xe5,0x02,0x02,0x01,0x02,0x01,0x03,
- 0xe5,0x01,0x01,0x04,0x04,0x01,0x05,0x09,0x01,0x0d,0x02,0xe6,0x01,0x0a,0x09,0x04,
- 0x02,0x01,0x04,0x01,0x01,0x02,0x02,0x02,0x03,0x02,0x06,0x02,0xe6,0x03,0x02,0x06,
- 0x02,0x01,0x04,0x01,0xe5,0x05,0x02,0x06,0x02,0x06,0x01,0xe5,0xe7,0x03,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x02,0x01,0xe6,0x01,0x01,0xe8,0x02,0x01,0xe5,0x05,0x01,0xe8,
- 0x02,0x01,0xe8,0xe5,0xe5,0xe6,0x03,0x01,0x04,0xe5,0xe5,0x03,0x04,0x09,0x01,0x0b,
- 0xe5,0x02,0x01,0xe5,0xe5,0x16,0x09,0x06,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,
- 0x03,0x02,0x02,0x03,0x02,0x02,0x01,0x01,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,
- 0x03,0x02,0x02,0x05,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
- 0x02,0x02,0x03,0x02,0x02,0x06,0x02,0x06,0x0c,0x01,0x04,0x20,0x01,0xe5,0xe5,0x19,
- 0xe5,0x07,0xe5,0x07,0xe5,0x01,0x01,0x03,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,
- 0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x06,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x04,0xe5,0x0d,0x03,0xe5,0x20,0xe8,0x0d,0x02,0x06,0xe6,0x06,
- 0xe6,0x01,0x01,0xe5,0xe7,0x02,0x01,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe6,0x04,
- 0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe5,0x07,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x07,0xe5,0x04,0x02,0x02,0x06,0xe6,0x06,0x09,0x0d,0x01,0x01,0xe5,
- 0x29,0xe5,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x0f,0x02,0x2c,0x02,0x01,0x01,0x29,0x01,0x09,0x02,0x06,0x02,0x06,0x02,0x06,
- 0x02,0x06,0x02,0xe5,0x04,0x02,0x06,0x02,0x06,0x02,0xe5,0x05,0xe5,0x01,0xe5,0x04,
- 0x02,0xe5,0x04,0x02,0x06,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x08,0x01,0x32,0xe5,0xe6,0x0c,0x01,0x0a,0xe6,0x05,0xe5,0xe5,0x05,0xe7,0x03,0x02,
- 0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,
- 0x03,0x02,0xe6,0x03,0x02,0xe6,0x05,0x02,0xe6,0x03,0x02,0x01,0x04,0x02,0xe6,0x03,
- 0x02,0x01,0x04,0x02,0x01,0x04,0x02,0x01,0x04,0x02,0x01,0x01,0x01,0xe5,0xe6,0xe5,
- 0x03,0x01,0x07,0x01,0xe5,0xe5,0xe5,0x1d,0x01,0xe5,0x0c,0x01,0xe5,0x09,0x07,0xe6,
- 0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,
- 0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x06,0x02,0xe5,0x04,0x02,
- 0xe5,0x04,0x02,0xe5,0x03,0xe5,0x01,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,
- 0xe5,0x04,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe6,0x21,0x01,0xe5,0x0a,0xe5,0xe5,
- 0x0a,0x07,0x13,0x09,0x09,0x09,0x09,0x03,0xe5,0x03,0x09,0x09,0x08,0x02,0x09,0x03,
- 0x05,0x03,0x05,0x04,0x04,0x09,0x04,0x04,0x07,0x01,0x03,0x03,0x01,0x06,0xe5,0xe5,
- 0x22,0x01,0xe5,0x08,0x03,0x01,0x05,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x02,0x02,0xe7,
- 0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0xe7,
- 0x01,0xe5,0x01,0xe7,0x01,0xe5,0x02,0xe6,0x01,0xe5,0x01,0xe7,0x01,0xe5,0x02,0xe6,
- 0x03,0xe5,0x02,0xe6,0x01,0x03,0x01,0xe5,0x01,0xe5,0x01,0xe7,0x01,0x04,0xe6,0x01,
- 0x04,0xe6,0x01,0x03,0xe7,0x01,0x05,0xe6,0xe5,0x02,0x01,0xe6,0x06,0xe6,0xe5,0x04,
- 0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe5,0x01,0x1a,0x08,0xe6,0x04,0x01,0xe5,0x04,0x02,
- 0xe6,0x03,0x02,0xe5,0x04,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x04,0xe5,0x04,0x02,0x06,0x02,0xe5,0x04,0x02,
- 0xe6,0x03,0x02,0xe5,0x04,0x02,0xe6,0x03,0x02,0xe6,0x0d,0xe5,0xe7,0x07,0x09,0x09,
- 0x0d,0xe6,0xe5,0x19,0x01,0x06,0x02,0x04,0x01,0x02,0xe5,0xe6,0x01,0x02,0xe5,0xe6,
- 0x01,0x02,0xe5,0xe6,0x01,0x02,0xe5,0xe6,0x01,0x02,0xe5,0xe6,0x01,0x02,0x01,0xe6,
- 0x01,0x02,0x02,0xe5,0x01,0x02,0xe5,0xe6,0x01,0x02,0x03,0x04,0x02,0x01,0xe6,0x01,
- 0x02,0xe5,0xe6,0x01,0x02,0x01,0xe6,0x01,0x02,0x01,0xe6,0x01,0xe5,0xe5,0x01,0xe5,
- 0x01,0x02,0x01,0xe6,0x01,0x02,0x02,0x06,0x02,0xe6,0xe5,0x09,0x01,0x18,0xe5,0x03,
- 0xe5,0xe5,0xe6,0x21,0x07,0x02,0x03,0xe5,0xe5,0x05,0xe5,0xe5,0x01,0x03,0xe5,0xe5,
- 0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x01,0x02,0x01,0x01,0x02,0x03,0xe5,0xe5,0x01,0x03,
- 0xe5,0xe5,0x01,0x03,0x03,0xe5,0x01,0x04,0x01,0x07,0x01,0x02,0x02,0x01,0x01,0x07,
- 0x01,0x06,0xe5,0xe5,0x04,0x01,0x01,0x07,0x07,0x01,0x01,0x01,0x14,0x09,0x06,0x06,
- 0xe5,0x01,0x03,0x1f,0x09,0x03,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,
- 0xe5,0x01,0x05,0x03,0x05,0x03,0x0b,0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,
- 0x05,0xe5,0x01,0x05,0x03,0x05,0xe5,0x01,0x05,0x09,0xe5,0x01,0x01,0xe5,0x12,0x09,
- 0x07,0x03,0x01,0x01,0xe6,0x0c,0x01,0xe5,0x05,0xe5,0xe5,0x3b,0x13,0x13,0x15,0x17,
- 0x0f,0x05,0x02,0x0a,0x1b,0xe5,0x16,0xe8,0x0d,0x02,0x01,0x01,0x01,0x03,0xe6,0x06,
- 0x01,0x02,0x04,0x01,0x01,0x05,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0x01,0x01,0x05,0xe6,
- 0x06,0x01,0xe6,0x04,0xe6,0x06,0xe6,0xe5,0x04,0x01,0x02,0x06,0x01,0x01,0x05,0xe6,
- 0x06,0x01,0x02,0x04,0x01,0x07,0x01,0x01,0x05,0x01,0x02,0x01,0x02,0x01,0x02,0x04,
- 0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x02,0x04,0x01,0x03,0x03,0x02,0xe5,0xe6,
- 0x1a,0x04,0x02,0x03,0x05,0xe5,0x01,0xe5,0x03,0x09,0xe5,0xe5,0x06,0x09,0x08,0xe5,
- 0x01,0x05,0xe5,0x07,0xe5,0xe5,0xe6,0x02,0xe5,0x06,0x02,0xe5,0x01,0xe5,0x03,0xe5,
- 0x04,0x02,0xe5,0x01,0xe5,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x03,0x01,0xe5,0x04,
- 0x05,0x03,0x04,0x07,0x01,0x07,0xe5,0x02,0x04,0xe5,0x0e,0x01,0xe5,0x0a,0x09,0x07,
- 0x04,0x04,0x03,0x0c,0x06,0x07,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0xe5,0xe5,0x03,
- 0xe5,0x02,0x04,0x01,0xe5,0xe5,0x03,0xe5,0x03,0x02,0x04,0xe7,0x03,0xe5,0x09,0xe5,
- 0x04,0x02,0xe5,0x05,0xe5,0xe5,0x07,0x08,0x01,0xe5,0x20,0x03,0x11,0x06,0xe9,0xe5,
- 0x18,0x0c,0x01,0x02,0x06,0x02,0x05,0xe5,0xe5,0x02,0xe5,0x0b,0x05,0x10,0x02,0x03,
- 0x05,0x03,0x02,0x06,0x0e,0x14,0x03,0x05,0x07,0x05,0x08,0x08,0x07,0x03,0x03,0x09,
- 0x08,0x01,0x0f,0x01,0xe5,0x0c,0x01,0x0d,0x01,0x0b,0x01,0x01,0x05,0x01,0x07,0xe6,
- 0x03,0x04,0x02,0x04,0x01,0x11,0x01,0x07,0x01,0x09,0x02,0x01,0x02,0x01,0x01,0x05,
- 0x01,0x07,0xe8,0x01,0x04,0x01,0xe5,0x03,0x01,0x0b,0xe5,0x05,0x08,0xe7,0x08,0x02,
- 0xe5,0x04,0xe5,0x23,0xe6,0x0c,0xe5,0x04,0x0a,0x0a,0x01,0x03,0x03,0x01,0x19,0x01,
- 0x01,0x03,0x01,0xe5,0x03,0x01,0x01,0x01,0x01,0x05,0x01,0x01,0x05,0x0b,0x01,0x01,
- 0x03,0x02,0x02,0x02,0x01,0x08,0xe5,0x03,0x04,0x05,0x07,0x0b,0x07,0x06,0x09,0x01,
- 0x06,0x06,0x01,0x01,0x06,0x02,0x09,0xe5,0xe6,0x02,0x04,0x23,0x08,0xe5,0x06,0xe6,
- 0x06,0xe6,0x03,0x01,0x01,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x02,0xe5,0x02,0xe5,0x02,
- 0xe5,0x01,0xe6,0x02,0x03,0xe5,0xe6,0x07,0xe5,0x02,0x03,0xe6,0x04,0x01,0x01,0x03,
- 0x04,0xe5,0x02,0x04,0xe6,0x0b,0x0a,0x02,0x0a,0xe5,0x21,0x01,0x01,0xe5,0x01,0x0c,
- 0x09,0x0d,0x0c,0x01,0x07,0x01,0x02,0x02,0x01,0x04,0xe5,0x02,0x01,0x07,0x07,0x01,
- 0x01,0x07,0x01,0x07,0x0b,0x04,0x04,0x01,0x07,0x06,0x02,0x09,0x01,0x07,0x01,0x0d,
- 0x08,0x09,0x09,0x08,0x08,0x11,0x0a,0x07,0x09,0x01,0x07,0x07,0xe5,0x09,0x0b,0x01,
- 0x02,0x02,0x10,0x06,0x0f,0x01,0x04,0x01,0x05,0xe5,0x01,0x02,0x03,0x04,0x07,0x01,
- 0x15,0x26,0x03,0x08,0x05,0x01,0x14,0xe9,0x0c,0x12,0xe5,0x08,0x02,0x05,0xe5,0x04,
- 0x02,0xe5,0x07,0xe5,0x05,0x01,0xe5,0x07,0x01,0x05,0x01,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0x11,0x07,0x05,0xe6,0x03,0x01,0xe6,0x01,0xe6,0x01,0xe6,0x01,0xe5,0xe5,0xe5,
- 0x03,0x01,0x02,0x06,0x02,0xe6,0x01,0x1f,0x07,0x04,0x01,0x03,0x0b,0x13,0x01,0x02,
- 0xe5,0x02,0x04,0x04,0x09,0x01,0x07,0x04,0x04,0x0e,0x04,0x04,0x04,0x09,0x01,0x02,
- 0x02,0x0f,0x11,0x0a,0x09,0x17,0x02,0x01,0x2c,0xe5,0xe7,0x06,0x19,0x0a,0x02,0x03,
- 0xe7,0x06,0xe6,0x03,0x02,0xe6,0x05,0x01,0xe5,0x09,0x06,0xe6,0x05,0xe8,0x04,0xe7,
- 0x05,0x04,0xe5,0x05,0x01,0x06,0x03,0x08,0x06,0x01,0x01,0x03,0xe6,0xe5,0x03,0x09,
- 0xe5,0x07,0x02,0x16,0x02,0x08,0x0c,0x01,0x01,0x01,0x22,0x02,0x04,0xe5,0x02,0x0c,
- 0x02,0x0d,0x04,0xe5,0x0c,0x19,0x03,0x06,0x04,0x05,0x07,0x01,0x03,0x05,0x01,0x1e,
- 0x04,0x01,0x0c,0x08,0xe5,0x05,0x0a,0x0c,0xe5,0xe5,0xe5,0x04,0x27,0x13,0x06,0x09,
- 0x01,0x28,0x01,0x13,0x14,0x02,0x31,0x09,0x06,0x0f,0x04,0x03,0x01,0xe5,0x02,0x0c,
- 0xe5,0x04,0x01,0xe5,0xe5,0x06,0xe5,0x08,0x09,0xe5,0x07,0x09,0xe5,0x07,0x07,0x0b,
- 0x07,0x01,0xe5,0x07,0x0c,0x01,0xe5,0x02,0x01,0x0a,0xe6,0x05,0x09,0x09,0x09,0x02,
- 0x01,0x04,0x02,0xe5,0x02,0x01,0x01,0xe5,0x01,0x04,0x01,0x01,0x03,0xe5,0x13,0x04,
- 0xe6,0xe5,0x0c,0x06,0x0c,0x10,0x02,0x09,0x09,0x06,0x02,0x13,0x09,0x06,0x02,0x0f,
- 0xe5,0xe5,0x12,0x03,0x05,0x02,0x09,0x06,0x03,0x02,0x01,0xe5,0x0b,0x06,0xe5,0x04,
- 0xe5,0x0a,0xe5,0x02,0x06,0x01,0x02,0x03,0x02,0x14,0x17,0x0c,0xe5,0xe5,0x04,0xe5,
- 0x01,0x10,0xe5,0x02,0xe5,0x07,0x07,0x17,0x0b,0x02,0xe5,0xe5,0x05,0xe5,0x14,0x0b,
- 0x03,0xe5,0x01,0x03,0x02,0xe5,0xe5,0xe5,0x01,0x04,0x01,0x0b,0x07,0x09,0x04,0xe5,
- 0xe7,0x03,0x11,0x1d,0x06,0x02,0x06,0x02,0x09,0x05,0xe5,0x01,0xe5,0x01,0x01,0xe5,
- 0x01,0x06,0xe5,0xe5,0x08,0x05,0xe5,0x03,0x09,0x09,0x05,0xe5,0x01,0x09,0x06,0x02,
- 0x09,0x01,0x03,0xe5,0x01,0x01,0x04,0xe5,0xe5,0xe5,0x06,0x13,0x05,0xe5,0x05,0x04,
- 0xe7,0x15,0x13,0x01,0x09,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x06,0x02,0xe5,0x01,
- 0xe5,0xe6,0xe5,0x03,0x01,0x02,0xe5,0x01,0x02,0x02,0x06,0x02,0x06,0x01,0x02,0x06,
- 0x04,0x01,0x02,0x02,0x09,0x01,0x01,0x02,0x05,0x03,0x17,0x02,0x05,0x04,0x01,0x02,
- 0x03,0x0c,0x04,0x01,0x06,0xe5,0xe5,0xe6,0xe5,0x13,0x03,0x0f,0x01,0x01,0x05,0x01,
- 0x02,0x03,0x02,0x02,0x06,0x02,0x04,0x01,0x02,0x01,0x01,0xe5,0xe5,0x01,0x01,0x01,
- 0xe5,0xe5,0x01,0x06,0x02,0x04,0x01,0x02,0x01,0x01,0x02,0x01,0x02,0x01,0x01,0xe5,
- 0xe5,0x05,0x02,0x02,0x08,0x04,0xe5,0xe5,0x08,0x07,0x08,0xe5,0x0c,0x05,0x01,0x01,
- 0x03,0x0b,0x03,0x04,0x04,0x02,0x03,0x01,0x15,0x0e,0x04,0x01,0x09,0x05,0x01,0x01,
- 0x02,0x04,0x01,0x09,0x02,0x06,0x02,0x01,0x04,0x02,0x04,0x01,0x09,0x0b,0x04,0x04,
- 0x05,0x01,0x01,0x04,0x02,0x04,0x02,0x03,0x07,0x01,0x02,0x06,0x02,0x02,0x01,0x09,
- 0x01,0x02,0x04,0x01,0x04,0x0e,0x05,0x07,0x01,0xe5,0xe6,0x15,0x06,0x0c,0x01,0x02,
- 0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x04,0x02,0x01,
- 0x04,0x04,0x01,0x02,0x04,0x01,0x02,0x06,0x04,0x01,0xe5,0xe5,0xe5,0x01,0x04,0x01,
- 0x02,0x01,0xe5,0xe5,0x02,0xe5,0x03,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,
- 0x01,0x02,0x04,0x01,0x01,0xe5,0x03,0x01,0x01,0xe5,0xe6,0x0a,0x0d,0x02,0x02,0xe5,
- 0x1e,0x2f,0x02,0x06,0x02,0x06,0xe5,0x29,0x07,0xe5,0x09,0x04,0x02,0xe5,0x11,0x09,
- 0xe5,0x07,0x02,0x03,0x09,0x02,0x01,0x19,0x01,0xe5,0xe7,0x2e,0x20,0xe5,0x07,0x05,
- 0xe5,0x01,0xe5,0x2e,0x12,0xe5,0x01,0xe5,0x04,0x09,0x04,0x04,0x02,0x06,0x02,0x05,
- 0xe5,0x07,0xe5,0x01,0x01,0x07,0x11,0x05,0xe5,0x0d,0x09,0x04,0x01,0x02,0x09,0x06,
- 0x02,0x09,0x09,0x06,0x02,0x04,0xe6,0x01,0xe6,0x06,0x09,0x06,0x02,0x04,0x01,0x04,
- 0x09,0x04,0x01,0x02,0x09,0xe5,0x07,0x04,0x01,0x02,0x04,0x01,0x02,0x03,0xe5,0xe5,
- 0x01,0x03,0x05,0xe5,0x04,0x02,0xe5,0x03,0xe5,0x01,0x03,0x05,0x04,0x01,0x06,0x01,
- 0x01,0xe5,0x1f,0x09,0x06,0x02,0x09,0x10,0x0c,0x09,0x09,0x08,0xe5,0x08,0x15,0x13,
- 0x09,0x09,0x09,0x12,0xe5,0x05,0x02,0x13,0x04,0x05,0xe5,0x1c,0x09,0x07,0x02,0x09,
- 0x1e,0x07,0x09,0x09,0x0b,0x02,0x12,0x0f,0x02,0x0a,0x09,0x09,0x0f,0x03,0x05,0x02,
- 0x12,0x0a,0xe8,0x22,0x04,0x04,0x02,0x01,0x04,0x02,0x06,0x02,0x01,0x02,0x01,0x02,
- 0x01,0x04,0x02,0x06,0xe7,0xe5,0x03,0x02,0x06,0x02,0x06,0x02,0x01,0x04,0x01,0x02,
- 0x04,0x01,0x02,0x06,0x02,0x06,0xe7,0xe5,0x01,0x01,0x02,0x01,0x02,0x01,0x02,0x01,
- 0x02,0x01,0x02,0x01,0x04,0x02,0x04,0x01,0xe7,0x03,0x01,0xe5,0xe5,0x03,0x01,0x1a,
- 0x01,0x14,0x09,0x02,0x02,0x06,0x03,0x05,0x03,0x05,0x03,0x05,0x01,0x01,0x07,0x01,
- 0x02,0x01,0xe5,0x01,0xe5,0x04,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x09,0x01,0x05,
- 0x01,0x01,0x01,0x03,0x01,0x01,0x02,0x02,0x01,0xe6,0x04,0x01,0x01,0x01,0x03,0x01,
- 0x01,0x01,0x03,0x01,0x01,0x01,0xe5,0x01,0x01,0x01,0x01,0x03,0x01,0xe6,0x03,0xe5,
- 0xe7,0x01,0x02,0x02,0x19,0xe7,0x11,0x0f,0x04,0x04,0x04,0x04,0x09,0x0e,0x04,0x04,
- 0x05,0x03,0x04,0x04,0x04,0x09,0x04,0x03,0xe5,0xe5,0x03,0x04,0x09,0x35,0xe5,0x01,
- 0x01,0x04,0x0c,0x01,0x18,0x03,0x15,0xe5,0x07,0xe6,0x06,0xe6,0x04,0xe8,0x04,0xe8,
- 0x04,0xe7,0x05,0xe8,0x04,0xe7,0x05,0xe8,0x04,0xe8,0x04,0xe8,0x05,0xe6,0x03,0x04,
- 0xe6,0x01,0x03,0xe8,0xe5,0x03,0xe7,0x01,0x03,0xe6,0x05,0x01,0xe5,0x05,0xe7,0x05,
- 0x01,0xe5,0x01,0x03,0xe8,0xe6,0x03,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,
- 0xe5,0xe5,0x19,0x08,0xe5,0x07,0xe5,0x07,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,
- 0x1e,0x08,0x09,0x09,0x09,0x0a,0x08,0x07,0x01,0xe5,0x17,0xe7,0x20,0x0b,0xe5,0xe6,
- 0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,
- 0x01,0xe5,0x03,0x03,0x02,0x02,0x03,0x02,0x02,0xe5,0x01,0x02,0x02,0x01,0x01,0x07,
- 0x03,0x05,0xe5,0x01,0x02,0x02,0x01,0x01,0x03,0x01,0x03,0xe5,0x03,0x03,0xe5,0x03,
- 0xe5,0x01,0xe5,0x03,0x04,0x01,0x02,0xe5,0x01,0x05,0x04,0x04,0x04,0x01,0x19,0x01,
- 0xe6,0x18,0x08,0xe5,0x07,0x04,0xe5,0x02,0x04,0xe5,0x02,0x04,0xe5,0x02,0x04,0xe5,
- 0x02,0x04,0xe5,0x06,0xe6,0x02,0x03,0xe6,0x02,0x04,0xe5,0x02,0x08,0x02,0x04,0xe5,
- 0x02,0x04,0xe5,0x08,0x08,0xe5,0x02,0x03,0x01,0x03,0x04,0xe5,0x02,0x03,0x01,0x08,
- 0xe5,0x03,0x08,0x07,0x01,0xe5,0x16,0x01,0xe6,0x02,0x16,0x06,0x02,0x08,0x03,0x01,
- 0xe5,0x01,0x03,0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,0x03,0x01,0xe6,0x04,0x01,0xe5,
- 0x05,0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,0x04,0x01,0x08,0x01,
- 0xe5,0x01,0x03,0xe7,0x01,0x03,0xe7,0x05,0xe8,0x05,0xe7,0x04,0xe8,0x06,0x03,0x03,
- 0x01,0xe5,0x09,0x09,0x01,0xe5,0x17,0x01,0xe5,0x16,0xe5,0xe5,0x0d,0x0b,0xe5,0xe5,
- 0x02,0x02,0xe5,0xe5,0xe5,0xe5,0x01,0xe5,0xe5,0x05,0x1d,0xe5,0xe5,0x05,0xe5,0xe5,
- 0x13,0xe5,0x07,0xe5,0x06,0x01,0x08,0xe5,0x07,0xe5,0x07,0xe5,0x08,0x10,0x03,0x20,
- 0x02,0xe5,0x10,0x01,0xe6,0xe5,0x02,0x01,0xe5,0x04,0xe5,0xe7,0x04,0x01,0x07,0x01,
- 0x02,0x04,0x01,0x07,0x01,0x03,0x03,0x01,0x07,0xe6,0x01,0x04,0x01,0x07,0x01,0x06,
- 0xe5,0xe6,0x07,0xe6,0xe5,0x04,0x01,0x07,0x01,0x01,0x05,0xe6,0x06,0x01,0x07,0x01,
- 0x01,0x05,0x01,0x07,0x01,0x02,0x04,0x01,0x01,0x01,0x03,0x01,0x01,0x04,0xe5,0xe5,
- 0x01,0x04,0x01,0x0b,0xe5,0xe5,0x18,0x09,0xe5,0x01,0x09,0x04,0x09,0x02,0x06,0x02,
- 0xe5,0x0a,0x01,0x02,0xe5,0x0a,0x01,0x01,0x01,0x02,0x06,0x02,0x06,0x0e,0x03,0x06,
- 0x06,0xe5,0x04,0x16,0xe5,0x05,0x0b,0xe5,0x08,0x08,0xe5,0x17,0xe5,0xe6,0x14,0x02,
- 0x06,0xe5,0x04,0x09,0x01,0x07,0x08,0x14,0x12,0x01,0x05,0x04,0x04,0x03,0x0a,0x0c,
- 0x03,0x05,0xe5,0x02,0x02,0x09,0x07,0x05,0x01,0x0b,0x0a,0x02,0xe5,0x04,0x03,0x03,
- 0x0c,0x08,0x01,0x01,0xe5,0x19,0x08,0x03,0x09,0x01,0x0e,0x0e,0x0a,0xe5,0xe5,0x05,
- 0x09,0x03,0x03,0x01,0x06,0x02,0x13,0x08,0xe5,0x03,0x1d,0x0a,0x06,0x01,0x01,0x09,
- 0x06,0x02,0xe5,0x02,0x09,0x07,0xe5,0x01,0x04,0x03,0x17,0x0a,0xe6,0x06,0xe6,0x01,
- 0x03,0xe7,0x03,0x02,0xe6,0x05,0x05,0x07,0x02,0x03,0xe6,0x06,0xe6,0x06,0xe6,0x03,
- 0x02,0xe5,0x01,0x07,0xe6,0x06,0x08,0xe7,0x02,0xe5,0x01,0x01,0xe5,0x05,0x01,0x07,
- 0x01,0x04,0x06,0x02,0x02,0x01,0x05,0x01,0x01,0x02,0x01,0x04,0x17,0xe5,0xe5,0xe6,
- 0x01,0x2d,0x15,0x1b,0x01,0x11,0x02,0x08,0x01,0x02,0x09,0x0a,0x07,0x09,0x02,0x04,
- 0x01,0x02,0x06,0x02,0x03,0x08,0x01,0x02,0x01,0x05,0xe5,0xe5,0xe5,0x02,0x09,0x0f,
- 0x02,0x01,0x01,0xe5,0x08,0x0e,0x09,0x06,0xe5,0x04,0x03,0x02,0x01,0x04,0x09,0x06,
- 0x0e,0x04,0x02,0x02,0x06,0x01,0x07,0x05,0x03,0x07,0x05,0xe5,0xe5,0x01,0x07,0x09,
- 0x09,0x05,0x0d,0x0f,0x03,0x05,0x03,0x03,0x05,0x08,0x0a,0x04,0xe5,0x13,0x01,0x02,
- 0x02,0xe5,0xe5,0x13,0x01,0x01,0x02,0x0a,0x15,0x04,0x0e,0x04,0x0c,0x0d,0x03,0x02,
- 0x0f,0x0c,0x03,0xe5,0x0c,0x09,0x01,0x02,0x02,0x09,0x05,0x11,0x09,0x03,0x03,0x06,
- 0x07,0x11,0x0b,0x0a,0x12,0x03,0x07,0xe6,0x0e,0x0b,0x0c,0x09,0x07,0x08,0x03,0x05,
- 0x10,0x04,0x23,0x01,0x13,0x0c,0x01,0xe6,0x1f,0x01,0x01,0x04,0xe5,0x07,0x0a,0xe6,
- 0x03,0x02,0xe5,0x07,0xe7,0x05,0xe8,0x02,0x02,0x08,0x02,0x06,0xe5,0x07,0x01,0xe5,
- 0x0a,0x0d,0x02,0xe6,0x0b,0xe5,0x0d,0x01,0x09,0x02,0x06,0xe5,0x0d,0x09,0x14,0xe5,
- 0x02,0x05,0x21,0x15,0x07,0xe5,0x03,0x06,0x07,0x05,0x04,0x05,0x01,0x07,0xe6,0xe5,
- 0x01,0x01,0x02,0x01,0xe5,0x1e,0x1d,0x17,0x27,0x02,0xe6,0x11,0x05,0x03,0x09,0x09,
- 0x02,0x03,0x05,0x0d,0x03,0x02,0x01,0x03,0x05,0x03,0x02,0x06,0x05,0x03,0xe5,0x04,
- 0x05,0x08,0xe5,0x03,0x06,0x03,0x0c,0xe5,0x04,0x03,0x01,0x06,0x03,0x01,0x04,0x04,
- 0x06,0x09,0x08,0x03,0x0a,0x09,0x07,0x19,0x0b,0xe5,0x08,0x09,0x09,0x01,0x07,0x06,
- 0x01,0x07,0x0c,0x06,0x01,0x0d,0x06,0x01,0x06,0x02,0x07,0x01,0x09,0x03,0x03,0x01,
- 0x08,0xe5,0x05,0xe5,0xe5,0x04,0xe5,0x12,0x09,0x15,0x02,0xe5,0xe6,0x01,0x02,0x14,
- 0x0c,0x13,0x02,0x04,0x10,0x04,0x06,0x13,0x0a,0x01,0x0b,0x06,0x2f,0x05,0x03,0x13,
- 0x0b,0x0c,0x02,0x03,0x03,0xe5,0xe6,0x08,0xe5,0x04,0xe5,0x12,0xe5,0x07,0x02,0x01,
- 0x04,0x09,0xe5,0x03,0x0d,0xe5,0xe6,0x01,0x02,0xe5,0x07,0x06,0x03,0x04,0x03,0x02,
- 0xe5,0x01,0xe5,0x02,0xe5,0x07,0xe5,0x07,0x09,0xe5,0x11,0x09,0xe5,0x07,0x02,0x01,
- 0x07,0xe5,0xe5,0x02,0x01,0xe5,0x01,0x04,0x01,0x01,0x03,0xe5,0x09,0x04,0xe6,0x02,
- 0x05,0x01,0x17,0x0a,0x02,0x01,0x0a,0xe5,0xe5,0x05,0x05,0xe5,0x08,0xe5,0xe5,0x01,
- 0x06,0xe5,0x01,0x05,0x06,0x01,0xe5,0x02,0xe5,0xe6,0x02,0x03,0xe5,0xe6,0xe5,0x02,
- 0xe5,0x07,0x09,0x05,0x06,0x01,0x04,0x05,0xe5,0x01,0x02,0x01,0x04,0x02,0xe5,0xe7,
- 0x03,0xe5,0xe7,0x03,0x01,0xe5,0x03,0xe6,0x0d,0x01,0x02,0x01,0xe6,0x03,0x0c,0x27,
- 0xe5,0x05,0x07,0x06,0x01,0xe5,0xe5,0xe5,0x09,0x06,0x03,0xe5,0x0b,0x0a,0xe5,0x19,
- 0xe5,0xe5,0xe5,0x03,0xe5,0x16,0x03,0xe5,0x01,0x01,0x03,0xe5,0x01,0x01,0x07,0x01,
- 0x01,0x05,0x0d,0x07,0x04,0x02,0xe5,0x13,0xe5,0x28,0x09,0x09,0x01,0x03,0xe5,0x01,
- 0x09,0x09,0x09,0x0b,0x05,0xe5,0x01,0x10,0x02,0x01,0x04,0x16,0x09,0x01,0x04,0xe5,
- 0xe5,0xe5,0x03,0x02,0x01,0x07,0x10,0xe5,0x04,0x02,0x03,0xe5,0x0a,0x0a,0x09,0x01,
- 0x02,0x09,0x04,0x01,0x02,0x06,0x02,0x03,0xe5,0x03,0x09,0x09,0xe5,0x01,0x02,0x02,
- 0xe5,0x01,0x05,0xe5,0x01,0xe5,0x03,0x06,0x04,0x09,0xe5,0x01,0x05,0x02,0x06,0x02,
- 0x0a,0xe5,0xe5,0x01,0x06,0x02,0x09,0x04,0x01,0x02,0x02,0x01,0x01,0x02,0x03,0xe5,
- 0x03,0x14,0xe5,0xe5,0xe5,0x01,0x07,0xe6,0x0d,0x02,0x01,0xe5,0xe5,0xe5,0x0e,0x01,
- 0x01,0x05,0x03,0x02,0xe7,0x02,0x09,0x09,0x05,0x03,0x02,0x01,0x04,0x05,0x03,0x07,
- 0x03,0x09,0x13,0x05,0x05,0x01,0xe6,0xe5,0xe5,0x04,0x03,0x01,0x02,0x04,0x05,0x01,
- 0x01,0x02,0x01,0xe5,0x02,0x03,0x01,0x04,0x12,0x04,0x01,0x02,0x1e,0x01,0x0c,0xe6,
- 0x01,0x01,0x03,0xe5,0x03,0x01,0x05,0x03,0x01,0xe5,0x01,0x01,0x03,0xe5,0x01,0x0b,
- 0x02,0x04,0x06,0x02,0x0b,0x09,0x06,0x0c,0x01,0x02,0x0e,0x01,0x02,0x01,0x01,0x02,
- 0x04,0x02,0x01,0x04,0x02,0x01,0x02,0x01,0x02,0x01,0x01,0x02,0x01,0xe5,0x05,0x12,
- 0x01,0xe5,0xe5,0x01,0x1e,0x01,0x01,0xe7,0x05,0xe5,0x03,0x01,0x01,0xe5,0x03,0x04,
- 0x01,0x02,0x04,0x04,0x01,0x01,0xe5,0xe5,0x01,0x03,0xe5,0xe5,0xe6,0x02,0xe5,0xe5,
- 0x01,0x03,0xe5,0xe8,0x02,0xe5,0x05,0x03,0xe5,0x03,0x03,0xe8,0x04,0xe5,0x03,0x01,
- 0x01,0xe5,0x0d,0x01,0x01,0xe5,0xe5,0x01,0x03,0xe5,0xe6,0xe5,0xe5,0xe6,0xe8,0xe5,
- 0xe6,0xe6,0xe5,0xe5,0x01,0xe6,0x01,0x04,0x01,0xe5,0x11,0x01,0x01,0xe6,0x1a,0x02,
- 0x03,0x09,0x09,0x09,0x04,0x04,0x02,0xe5,0x04,0x04,0x04,0x09,0x02,0x01,0x04,0x02,
- 0xe5,0x04,0x0b,0x09,0x02,0xe5,0x04,0x02,0x06,0x0c,0x06,0x04,0x04,0x04,0x04,0x09,
- 0x02,0x01,0x04,0x0e,0x11,0x01,0x01,0xe5,0x1d,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x01,0xe5,0x03,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x01,0x03,0xe5,
- 0x01,0xe5,0x03,0xe5,0x01,0x07,0xe5,0x07,0xe5,0x01,0xe5,0x03,0xe5,0x01,0xe6,0x02,
- 0xe5,0x08,0x02,0xe6,0x02,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x03,0xe5,0x07,
- 0xe5,0x01,0x13,0xe5,0x01,0xe5,0x0a,0x02,0x04,0x01,0x02,0x02,0xe5,0x04,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe7,0x05,0xe7,0x05,0xe5,0xe5,0x05,0xe5,0x03,0x03,0xe5,0xe6,
- 0x01,0x02,0xe5,0x07,0xe5,0x03,0x05,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x02,0x01,0x02,
- 0xe5,0x07,0x09,0xe5,0x07,0xe5,0xe5,0x05,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe6,0x03,
- 0x02,0xe5,0x03,0x03,0x04,0x01,0x06,0xe5,0x02,0x0b,0xe5,0x08,0x27,0x30,0xe5,0x1d,
- 0xe5,0x12,0x09,0x09,0x1a,0x02,0x06,0x09,0x02,0x18,0x05,0xe5,0x0a,0x07,0x11,0x09,
- 0x09,0x01,0x1b,0x09,0x09,0x03,0x05,0x09,0x06,0x04,0x03,0x05,0x09,0x01,0x07,0x03,
- 0x07,0x07,0x09,0x09,0x01,0x07,0x0c,0x06,0x16,0xe5,0xe6,0x0e,0x0e,0x02,0x01,0xe7,
- 0x02,0xe5,0xe8,0x03,0x01,0xe7,0x05,0xe7,0xe5,0x01,0x01,0xe7,0x02,0x02,0xe7,0x05,
- 0xe7,0x03,0x01,0xe7,0x05,0xe7,0x03,0x01,0xe7,0x02,0x02,0x01,0xe7,0x05,0xe7,0x02,
- 0xe5,0xe8,0x02,0x02,0xe7,0x0f,0xe7,0x02,0x02,0xe7,0x05,0xe7,0x05,0xe5,0xe5,0x05,
- 0xe7,0x03,0x01,0x02,0x15,0xe5,0xe6,0x0c,0x02,0x09,0x06,0x01,0xe6,0x04,0x01,0xe6,
- 0x01,0x02,0x01,0xe6,0x03,0xe5,0x01,0xe5,0x04,0x01,0xe6,0x06,0xe6,0x01,0x02,0x01,
- 0xe6,0x04,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0xe6,0x06,0x01,0xe6,0x04,0x01,0xe6,
- 0x04,0x01,0xe6,0x04,0x02,0xe5,0x08,0x01,0xe5,0x01,0x02,0xe5,0x06,0xe6,0x06,0xe6,
- 0x04,0x02,0xe5,0x04,0x01,0xe6,0x04,0x01,0xe6,0x16,0x02,0xe5,0x0d,0x03,0xe5,0x01,
- 0x09,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x02,0x04,0x01,0x04,0x03,0x08,0xe5,
- 0x13,0x02,0x05,0x0f,0x01,0xe5,0xe5,0x03,0x01,0x04,0x08,0x08,0xe5,0x11,0x01,0x07,
- 0xe5,0x07,0x01,0x01,0x02,0xe5,0xe5,0x08,0x01,0x02,0x02,0x01,0x18,0x02,0xe5,0x0c,
- 0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe6,0x06,0xe5,0x07,
- 0xe5,0x01,0x05,0xe6,0x01,0x04,0xe5,0x07,0xe6,0x06,0xe5,0x02,0x03,0xe6,0x01,0x01,
- 0xe5,0x01,0xe8,0x06,0xe5,0x05,0x01,0xe6,0x04,0xe7,0x07,0xe6,0x04,0xe7,0x01,0x03,
- 0x01,0xe5,0x01,0x03,0xe8,0xe5,0x04,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe5,0x07,0xe5,
- 0x08,0x01,0x0f,0x0a,0x09,0x09,0x09,0x08,0x07,0x01,0xe5,0x07,0xe6,0x07,0xe5,0x04,
- 0x01,0xe5,0x08,0x06,0x01,0xe5,0x02,0x07,0x10,0x01,0xe6,0x06,0x04,0x02,0x0b,0x09,
- 0xe6,0x06,0x09,0x0a,0x08,0x18,0xe5,0xe6,0x0c,0x18,0x07,0x01,0x09,0x04,0x04,0x04,
- 0x01,0x02,0x06,0x02,0x09,0x04,0x01,0xe5,0xe5,0x08,0x04,0x01,0xe5,0xe5,0x02,0x05,
- 0x01,0x03,0x05,0x03,0xe5,0xe5,0x01,0x03,0xe5,0x03,0xe5,0x01,0x02,0x02,0x03,0xe5,
- 0x03,0xe5,0x01,0x02,0x02,0x06,0x02,0xe5,0x01,0xe5,0x03,0x04,0x04,0x04,0x01,0x02,
- 0x16,0xe8,0x0d,0x0a,0x09,0x13,0x08,0x0a,0x08,0x1e,0x11,0x06,0xe6,0x08,0x07,0x01,
- 0x03,0x05,0x09,0x03,0x04,0xe5,0x02,0x03,0x01,0x03,0x04,0xe5,0x0d,0x06,0x01,0x19,
- 0xe5,0xe5,0x02,0x09,0x0c,0x24,0x15,0x2c,0x01,0x08,0xe7,0x05,0xe7,0x05,0xe8,0x04,
- 0x01,0xe5,0x05,0xe8,0x04,0xe7,0x01,0x05,0x03,0x03,0x01,0xe5,0x09,0x09,0x01,0x18,
- 0x02,0xe5,0x16,0xe5,0xe5,0x03,0x0f,0x03,0x15,0xe5,0xe5,0x0f,0x02,0x10,0x02,0x06,
- 0x02,0x01,0x06,0xe5,0xe5,0x23,0x27,0xe5,0xe5,0x07,0xe6,0x04,0xe5,0xe5,0x16,0xe5,
- 0xe6,0x10,0x01,0x01,0x02,0x02,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x02,0x04,
- 0x01,0x07,0x01,0x07,0x01,0x05,0x01,0xe7,0x04,0xe5,0xe5,0x04,0x01,0xe6,0x03,0x02,
- 0x01,0x05,0x03,0x01,0x07,0xe6,0x06,0xe6,0x06,0x01,0x03,0x03,0x01,0xe5,0x05,0x01,
- 0x01,0x05,0x01,0x07,0x01,0x02,0x01,0x02,0x01,0x07,0x01,0x03,0x03,0x01,0x01,0x04,
- 0xe7,0x01,0x07,0xe8,0x08,0x0f,0xe5,0x07,0xe5,0x08,0xe5,0xe6,0x03,0xe5,0x01,0x0e,
- 0xe5,0x01,0x1b,0xe5,0x01,0x05,0x01,0x04,0x02,0x07,0x03,0xe5,0x02,0x04,0x03,0x05,
- 0xe5,0x06,0xe5,0xe5,0xe5,0x05,0x07,0xe5,0x02,0x04,0xe5,0x07,0xe6,0x06,0xe5,0x04,
- 0x03,0x08,0xe5,0x04,0x0e,0x02,0xe5,0x01,0xe5,0xe5,0x08,0x09,0x01,0x06,0x02,0x01,
- 0x05,0x01,0x02,0x03,0x02,0xe5,0xe5,0x0c,0x0a,0x06,0x01,0x0a,0x01,0x02,0x01,0x02,
- 0xe5,0x07,0x01,0x06,0x04,0x04,0x02,0xe5,0x09,0x0a,0x02,0x02,0x0d,0xe5,0xe5,0x05,
- 0x02,0x02,0xe5,0x01,0x01,0x01,0x01,0x01,0x05,0x01,0x02,0x02,0x01,0x02,0xe5,0xe5,
- 0xe5,0xe5,0x0f,0x02,0xe7,0xe5,0xe5,0x15,0x0a,0xe5,0x01,0xe5,0x0a,0x09,0x09,0x02,
- 0x0f,0xe5,0x12,0x06,0x02,0x05,0x01,0x01,0x0b,0x09,0x07,0x01,0xe5,0x07,0x09,0xe5,
- 0x08,0x09,0x06,0xe5,0x02,0x0e,0x07,0x08,0x0c,0x01,0xe7,0x06,0xe5,0x05,0x08,0x04,
- 0x02,0x01,0x11,0xe6,0xe5,0x12,0x04,0x05,0x04,0x01,0xe6,0x01,0x07,0x04,0x01,0x11,
- 0xe5,0x01,0x01,0x05,0x01,0x0a,0x10,0x01,0xe5,0x02,0x12,0xe5,0x04,0x06,0xe5,0x05,
- 0x01,0x01,0x02,0x1e,0xe5,0xe5,0xe5,0x17,0x0a,0x04,0x01,0x08,0x01,0x07,0x09,0x1b,
- 0x01,0x1d,0x01,0x01,0x06,0x02,0x01,0x0f,0x0b,0x01,0x03,0x1f,0x08,0x01,0xe5,0x01,
- 0xe5,0x02,0x07,0x09,0x01,0x09,0xe8,0x11,0x0d,0x05,0x0f,0x04,0x04,0x04,0x04,0x02,
- 0x01,0xe5,0x02,0x02,0x06,0x01,0x07,0x09,0x03,0xe5,0x03,0x02,0x04,0x03,0x02,0x05,
- 0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x08,0x09,0x01,0x17,
- 0x09,0x11,0xe9,0x19,0x09,0x03,0x02,0x02,0x05,0xe5,0xe6,0x02,0x02,0x01,0xe6,0x04,
- 0x01,0x07,0x01,0x07,0x01,0x02,0x04,0x01,0x03,0x03,0x01,0x07,0x01,0x06,0x02,0xe5,
- 0x03,0x03,0x09,0x09,0x09,0x04,0x01,0xe5,0x0a,0xe5,0x02,0x05,0x01,0x0b,0x07,0x0a,
- 0x0c,0x01,0x07,0xe5,0xe6,0x02,0x11,0x10,0x06,0x03,0x06,0x02,0x06,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0x01,0x07,0x03,0x05,0xe5,0x04,0x03,0x03,0x05,0x09,0x05,
- 0x03,0x06,0x02,0x02,0x01,0x09,0x04,0x20,0x20,0xe7,0x07,0x12,0x02,0x03,0x02,0x04,
- 0xe8,0x02,0x0f,0x02,0x06,0x06,0xe6,0x03,0x02,0xe6,0xe5,0xe5,0xe5,0x15,0x0b,0x0e,
- 0x01,0x09,0x02,0x0e,0x0e,0x09,0x09,0x06,0x01,0x01,0x04,0x02,0xe5,0x0c,0x0b,0x03,
- 0x11,0xe5,0x0e,0x09,0x07,0x09,0x11,0x03,0x09,0x05,0x08,0x07,0x07,0x04,0x02,0x03,
- 0x1d,0x15,0x07,0x09,0x08,0x12,0x01,0x02,0x16,0xe5,0xe6,0xe5,0x0b,0x24,0x02,0x01,
- 0x07,0x03,0x05,0x09,0x02,0x06,0x06,0x02,0x04,0x04,0x06,0x02,0x06,0x02,0x01,0x09,
- 0x02,0xe5,0x01,0x02,0x02,0xe5,0x04,0x03,0x01,0x03,0x06,0xe5,0xe5,0x02,0x03,0x01,
- 0x09,0x04,0x01,0x02,0x04,0x01,0x06,0x09,0xe5,0x13,0xe7,0x0e,0x01,0x14,0x0e,0x01,
- 0x02,0x02,0x01,0x01,0x07,0x01,0x05,0x01,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,
- 0x01,0x03,0x01,0x01,0xe5,0xe5,0x01,0x05,0x02,0x02,0x02,0xe5,0x01,0x05,0xe5,0x01,
- 0x03,0x01,0xe5,0x01,0x03,0x01,0xe5,0x01,0x06,0x02,0x06,0xe5,0xe5,0x04,0xe5,0x06,
- 0x01,0xe5,0x07,0xe5,0x17,0x09,0xe5,0xe5,0x01,0x02,0x0a,0x02,0x21,0x09,0x09,0x09,
- 0x03,0x05,0x08,0xe5,0x08,0x09,0x0d,0x09,0x09,0x04,0x04,0x01,0x07,0x02,0x05,0x0a,
- 0x01,0x06,0x05,0x02,0x0a,0x03,0x22,0xe5,0xe5,0x06,0xe5,0x04,0xe6,0x1b,0x05,0x03,
- 0x05,0x09,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x05,0xe5,0x01,0x03,0x07,0x03,
- 0x02,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x02,0x02,0xe5,0xe5,0x04,0xe5,0x01,
- 0x03,0x02,0xe5,0xe5,0x02,0x09,0x0f,0x02,0xe5,0x04,0x02,0xe5,0x04,0x0e,0x01,0xe5,
- 0x01,0xe5,0x02,0x05,0xe5,0xe6,0x1e,0x08,0x01,0x01,0xe5,0x03,0x09,0x01,0x01,0xe5,
- 0x03,0xe5,0x02,0xe5,0x02,0xe5,0x07,0x01,0x01,0xe5,0x03,0x03,0xe5,0x03,0xe5,0x09,
- 0xe5,0x01,0xe5,0x03,0x09,0x09,0xe5,0xe5,0x05,0x04,0x01,0x02,0x09,0xe5,0x02,0x01,
- 0x01,0xe6,0x0f,0x01,0xe5,0x05,0x03,0x05,0x0b,0x01,0x04,0xe6,0xe5,0x01,0x0a,0x01,
- 0x1e,0x01,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x01,0x04,
- 0x04,0x04,0x02,0x01,0x06,0x04,0x04,0x02,0x01,0x04,0x02,0x01,0x04,0x04,0x04,0x02,
- 0x01,0x04,0x01,0xe5,0xe5,0x03,0x02,0x01,0x02,0x04,0x0b,0xe5,0xe5,0xe5,0x01,0x04,
- 0x09,0x06,0xe5,0x02,0x04,0x01,0x01,0x0d,0x24,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0x02,0x06,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x0f,0x02,0x01,0x07,0x09,0x06,0x06,0x02,
- 0xe6,0xe6,0x08,0x01,0x02,0x16,0x04,0x01,0x02,0x06,0x02,0xe5,0x01,0x02,0x02,0xe5,
- 0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x06,0x02,0x01,0x01,0x02,0x02,0x06,0x02,0x01,
- 0x01,0x02,0x02,0xe5,0x01,0x04,0x02,0xe5,0x01,0x02,0x02,0x06,0x02,0x03,0x02,0x02,
- 0x03,0x02,0x02,0x03,0x02,0x02,0x01,0x01,0x02,0x02,0x04,0x04,0x09,0x02,0x01,0x08,
- 0xe5,0x08,0x07,0x07,0xe7,0xe5,0x08,0x02,0xe5,0x02,0x01,0x02,0x14,0x01,0x01,0x05,
- 0x03,0x05,0x03,0x02,0x01,0xe5,0x02,0x04,0xe5,0x02,0x05,0x03,0x05,0x03,0x05,0x03,
- 0x05,0x03,0x07,0x03,0x05,0x03,0x02,0x01,0xe5,0x02,0x02,0xe7,0x02,0x02,0xe7,0x02,
- 0x02,0xe7,0x02,0x01,0x02,0xe5,0x02,0x05,0x03,0x0f,0x01,0x01,0x03,0x01,0x03,0x05,
- 0x03,0x09,0x04,0x01,0x0f,0x16,0x01,0x02,0x01,0x07,0x03,0xe5,0x03,0x06,0x01,0xe5,
- 0x02,0x03,0x01,0x09,0x03,0x05,0x09,0x03,0xe5,0xe5,0x01,0x0b,0x04,0x04,0x09,0x09,
- 0x04,0x04,0x05,0xe5,0x01,0x04,0xe6,0x01,0x0b,0x0e,0x01,0xe5,0xe5,0x06,0x04,0x04,
- 0x09,0xe5,0x03,0x01,0xe7,0xe6,0x09,0x17,0xe5,0xe8,0xe5,0xe6,0xe5,0xe5,0x01,0x02,
- 0x01,0x01,0x02,0x01,0xe7,0x03,0x02,0x01,0x01,0x02,0x01,0xe5,0x05,0x02,0x06,0x01,
- 0xe5,0xe5,0xe5,0x01,0x02,0x01,0xe6,0x01,0x01,0xe5,0x07,0x01,0xe5,0xe5,0x03,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0xe5,0xe5,0x01,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x07,0xe5,0xe5,0xe6,0xe5,0x06,0x09,0x09,0x0a,0xe5,0x11,
- 0x09,0x02,0x03,0x09,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x03,0x02,0x02,
- 0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x05,
- 0x02,0x02,0x01,0x01,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
- 0x02,0x02,0x03,0x02,0x02,0x06,0x02,0x06,0x0c,0xe5,0x1b,0x01,0xe5,0xe5,0x09,0x09,
- 0x01,0x07,0xe5,0x03,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0xe6,0x04,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,
- 0x06,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0x2d,0xe6,0x06,0x02,0x02,0x05,
- 0x03,0x09,0xe5,0x07,0xe5,0x01,0x02,0xe5,0xe7,0xe5,0x02,0x01,0xe5,0xe5,0x03,0x01,
- 0xe6,0x04,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0xe5,
- 0x07,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x07,0xe5,0x07,0x02,0x06,0x02,0x06,0x06,
- 0x06,0xe5,0x01,0xe5,0x08,0x02,0x24,0x02,0xe5,0x08,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x2d,0x02,0x04,0x04,0x01,0x09,0x1b,0x09,
- 0x03,0x01,0x09,0x02,0xe5,0x04,0x02,0x06,0x02,0xe5,0x04,0x02,0x06,0x02,0xe5,0x04,
- 0x02,0x06,0x02,0xe5,0x05,0xe5,0x01,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,
- 0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x08,0x21,0x08,
- 0xe5,0x01,0x0d,0x01,0x07,0x01,0x06,0xe5,0xe8,0x03,0x01,0xe7,0x05,0xe7,0x03,0x02,
- 0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x02,0xe5,0x01,0x01,0x04,0x02,0xe6,0x03,0x02,
- 0x01,0x04,0x02,0x01,0x03,0x02,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,
- 0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,0x02,0x01,0x06,0xe5,0xe5,
- 0x03,0x01,0x04,0x1d,0xe5,0x01,0x0d,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe6,0x04,
- 0x01,0xe6,0x04,0x02,0xe5,0x04,0x02,0xe5,0x03,0xe5,0x01,0xe5,0x04,0x02,0xe5,0x04,
- 0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x06,0x02,0xe5,0x04,0x02,
- 0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0xe5,0x03,0x02,0xe6,0x04,0x01,0xe5,0x20,0x03,0xe5,0x08,0x02,0x01,0x0e,
- 0x02,0x01,0xe5,0x02,0x06,0x02,0x06,0x04,0x02,0x04,0x04,0x01,0x07,0x04,0x04,0x09,
- 0x01,0x02,0x04,0x09,0x08,0x02,0x01,0x07,0x04,0x04,0x09,0x09,0x06,0x02,0x01,0x07,
- 0x09,0x09,0x09,0x23,0x01,0xe5,0x0c,0x01,0x05,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x05,
- 0x01,0xe5,0x06,0xe6,0x01,0xe5,0x01,0x01,0xe5,0x01,0x04,0xe6,0x01,0xe5,0x01,0x01,
- 0xe5,0x01,0x03,0xe7,0x01,0x03,0x01,0xe5,0x01,0x04,0xe6,0x01,0x05,0xe5,0x03,0x03,
- 0xe7,0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0x01,0xe5,0x01,0xe5,0x01,0xe7,0x01,0xe5,
- 0x01,0x01,0xe5,0x01,0x03,0xe7,0x01,0xe5,0x01,0x01,0xe5,0x01,0x03,0xe7,0x01,0x03,
- 0xe7,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0xe5,0x0c,0x01,0xe5,0x05,0x01,
- 0x0a,0x06,0x01,0xe5,0x04,0xe5,0xe5,0x05,0x02,0xe5,0x04,0x02,0x06,0x02,0xe5,0x04,
- 0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x04,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x07,0x06,0x02,0xe5,
- 0x04,0xe5,0x0b,0x17,0xe5,0xe6,0x0c,0x01,0x07,0x01,0x0c,0x04,0x01,0x02,0x02,0xe6,
- 0xe5,0x01,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,
- 0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x03,0x04,
- 0x02,0xe5,0xe6,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0xe5,0xe6,0x01,
- 0x02,0x02,0xe5,0x01,0x02,0xe5,0xe6,0x01,0x02,0x02,0x03,0x02,0xe5,0xe6,0x01,0xe5,
- 0xe5,0xe6,0xe5,0x0b,0x17,0x01,0x01,0x09,0x03,0x01,0xe5,0x12,0x09,0x02,0x01,0x01,
- 0x06,0xe5,0xe5,0x01,0x02,0x01,0x01,0x06,0xe5,0xe5,0x01,0x02,0x01,0x01,0x05,0xe6,
- 0xe5,0x04,0x01,0x01,0x06,0xe5,0xe5,0x09,0xe5,0x01,0x03,0xe5,0xe5,0x01,0x02,0xe6,
- 0xe5,0x01,0x02,0x01,0x01,0x02,0x03,0xe5,0xe5,0x01,0x02,0x01,0x01,0x02,0x03,0xe5,
- 0xe5,0x01,0x02,0x01,0x01,0x06,0xe5,0x02,0x03,0x28,0x02,0xe5,0x01,0x0a,0x02,0x20,
- 0xe5,0x03,0x03,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,
- 0x01,0x06,0x02,0x05,0xe5,0x01,0x06,0x04,0x05,0xe5,0x01,0x05,0x03,0x06,0x02,0x05,
- 0xe5,0x01,0x06,0x02,0x05,0xe5,0x01,0x09,0x05,0x05,0x04,0x0f,0x17,0x02,0xe6,0x41,
- 0x1d,0x6b,0x02,0xe5,0x0e,0x02,0x07,0x01,0x06,0xe5,0xe5,0x10,0x11,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x06,0xe5,0xe5,0xe5,0x04,0x01,
- 0xe6,0x04,0x01,0x07,0x01,0x07,0xe6,0x01,0x04,0x01,0x01,0x07,0xe6,0xe5,0x04,0xe6,
- 0xe5,0x04,0xe6,0x06,0x01,0x01,0x05,0xe6,0x01,0x04,0xe6,0x06,0x01,0x04,0x02,0x01,
- 0x01,0x05,0x01,0x04,0x02,0x01,0x07,0x01,0x07,0x01,0x0a,0x01,0x01,0x02,0x0c,0xe5,
- 0x04,0x0c,0xe5,0xe5,0x05,0xe5,0x01,0x05,0xe5,0x02,0x05,0x01,0x03,0x02,0x03,0xe5,
- 0x04,0x01,0x06,0xe5,0xe5,0xe5,0x04,0x02,0x02,0x02,0xe5,0xe5,0xe5,0x03,0xe5,0xe5,
- 0xe5,0x02,0x02,0x0a,0x08,0xe5,0x02,0x04,0xe5,0x01,0xe5,0x03,0xe5,0x02,0x04,0xe5,
- 0x07,0xe5,0x01,0x03,0x01,0xe5,0x01,0x05,0xe5,0x05,0x05,0x05,0x08,0x13,0xe5,0x0c,
- 0x02,0x0e,0xe5,0xe5,0x03,0x02,0x01,0x03,0x02,0x01,0xe5,0x01,0x03,0xe5,0x0d,0x03,
- 0xe5,0x03,0x04,0x07,0x02,0x03,0x05,0x06,0x01,0x10,0x03,0x01,0x02,0x06,0x05,0x01,
- 0x01,0x03,0x03,0x01,0x09,0x03,0x01,0x03,0xe5,0x03,0x02,0x03,0x04,0xe5,0xe5,0x0f,
- 0x1a,0xe6,0x01,0x0e,0x19,0x07,0x07,0x05,0x05,0x06,0x06,0x0b,0x03,0x03,0x09,0x01,
- 0x09,0x03,0x08,0x13,0x09,0x09,0x09,0x13,0x1a,0x02,0x06,0x11,0xe5,0x01,0xe5,0x0b,
- 0x05,0x0d,0x01,0x0a,0x08,0x02,0x09,0x01,0x04,0x07,0x01,0x04,0x04,0x09,0x02,0x01,
- 0x04,0x05,0x03,0xe5,0x05,0x03,0x07,0x01,0x05,0x01,0x01,0xe5,0x03,0x07,0x03,0x01,
- 0xe5,0x05,0x10,0x02,0x10,0x25,0xe6,0xe7,0x0e,0x12,0xe5,0x0f,0x10,0x0b,0x02,0x01,
- 0x01,0x0c,0x0c,0x10,0x01,0x0a,0x02,0x06,0xe5,0xe5,0x05,0x06,0x01,0x01,0x01,0x0a,
- 0x05,0x06,0x02,0x02,0x05,0x13,0x1c,0xe5,0x01,0xe5,0x07,0x27,0x03,0xe7,0x06,0xe5,
- 0x04,0x01,0x06,0x08,0x03,0x06,0x01,0xe5,0x04,0x04,0xe5,0x06,0x01,0x03,0x03,0x01,
- 0x03,0x01,0x03,0xe6,0x02,0xe5,0x02,0xe5,0x11,0xe5,0x02,0x04,0xe5,0x02,0x08,0x14,
- 0x01,0x1d,0x06,0xea,0x39,0x04,0x01,0x0b,0xe5,0x0b,0x06,0xe5,0x02,0x09,0x01,0xe5,
- 0x06,0x0d,0x06,0x01,0x02,0x04,0x01,0xe5,0x0b,0x03,0x01,0xe5,0x05,0x01,0x20,0x11,
- 0x04,0x12,0xe5,0x01,0x08,0x02,0x23,0x0c,0x13,0x07,0x03,0x07,0x02,0x08,0x05,0x0e,
- 0x19,0x09,0xe5,0x07,0xe5,0xe5,0x05,0x02,0x0b,0x2d,0x01,0x0a,0x02,0x1b,0x03,0x04,
- 0x06,0x03,0x01,0x01,0x04,0x02,0x09,0x01,0xe5,0x04,0xe5,0x01,0x08,0x01,0x08,0x03,
- 0x02,0x01,0x05,0x03,0x04,0x02,0x01,0x01,0xe5,0x02,0x0c,0x01,0x05,0x09,0x01,0x07,
- 0x01,0x09,0x07,0x04,0x0a,0xe5,0x0b,0xe5,0x08,0x19,0x06,0x24,0x07,0x05,0x03,0xe5,
- 0x0e,0x08,0x05,0x0d,0x02,0x09,0x06,0x03,0x01,0x09,0x08,0x13,0x29,0x03,0x2c,0x02,
- 0xe6,0xe5,0x16,0x03,0x05,0x09,0xe5,0x09,0x0c,0xe5,0xe6,0x01,0x05,0x01,0x08,0x02,
- 0xe5,0xe5,0x04,0x04,0x01,0x02,0xe5,0x01,0x02,0x02,0x09,0x02,0x03,0x01,0xe5,0x04,
- 0x05,0x03,0x06,0x02,0x09,0x06,0x06,0x06,0x01,0x08,0x07,0x02,0x23,0xe7,0xe5,0x07,
- 0x37,0x08,0x08,0x01,0x08,0x0a,0x08,0x0a,0x11,0x03,0x06,0x01,0x09,0x07,0x01,0xe5,
- 0x0f,0x01,0xe5,0x16,0x04,0x23,0x02,0x1d,0x2c,0x14,0x12,0x08,0x08,0x01,0x20,0x3c,
- 0x21,0x02,0xe7,0x28,0x03,0xe5,0x07,0x09,0x09,0x09,0x07,0x01,0x09,0x0a,0x08,0xe5,
- 0xe5,0xe5,0x03,0x01,0x09,0x07,0x01,0x09,0x09,0x09,0x09,0x09,0x02,0xe5,0x01,0x02,
- 0xe5,0x26,0x01,0x01,0xe6,0x01,0x01,0x0f,0xe5,0x14,0x03,0xe5,0x07,0x06,0x02,0x06,
- 0x02,0x06,0x02,0x05,0x03,0x09,0x0b,0xe5,0x02,0x05,0xe5,0x01,0xe6,0x07,0x03,0x09,
- 0x06,0x02,0x05,0x03,0x09,0x05,0xe5,0x01,0x06,0x02,0x01,0xe5,0x04,0x26,0x01,0x03,
- 0x01,0xe5,0x03,0x26,0x09,0x0b,0x03,0xe5,0x01,0x01,0x04,0x01,0xe5,0xe5,0x03,0x01,
- 0x02,0xe5,0x02,0x01,0x02,0x07,0x0b,0x01,0x09,0x01,0x0f,0x05,0xe5,0x01,0x01,0x11,
- 0x09,0x09,0x01,0x03,0xe5,0x01,0x01,0x22,0x01,0x02,0x04,0xe5,0xe6,0x2a,0x09,0x10,
- 0x02,0x09,0x09,0xe7,0x02,0x04,0x04,0xe5,0xe5,0x13,0xe5,0x08,0x05,0xe5,0x01,0x09,
- 0x09,0x06,0xe5,0xe5,0x04,0xe5,0x01,0x06,0xe5,0xe5,0x05,0xe5,0xe5,0xe5,0x21,0x06,
- 0x02,0x01,0x01,0x2b,0x0b,0x02,0x04,0x01,0x02,0x02,0x03,0x02,0x03,0x02,0x02,0x07,
- 0x01,0x02,0x01,0x0b,0x02,0x04,0x01,0x02,0x08,0x02,0x06,0x09,0x02,0x06,0x02,0x01,
- 0x01,0x02,0x02,0x06,0x02,0x06,0x02,0xe5,0x01,0x02,0x03,0x02,0x05,0x20,0x07,0xe6,
- 0xe6,0x01,0x28,0x03,0x07,0x02,0x04,0x04,0xe5,0x01,0x05,0xe5,0xe6,0x04,0xe5,0x01,
- 0xe5,0x03,0x01,0x01,0xe5,0x0a,0x02,0x04,0x04,0xe5,0x01,0x02,0x03,0x02,0x01,0xe5,
- 0xe5,0x03,0x01,0x02,0x02,0x09,0x04,0x01,0x02,0x06,0x02,0x04,0x04,0x03,0x09,0x04,
- 0x27,0x02,0xe8,0x01,0x11,0x01,0x14,0x04,0x04,0x01,0x07,0x01,0x02,0x04,0x01,0x07,
- 0x01,0x09,0x02,0x04,0x01,0x02,0x04,0x01,0x03,0xe5,0x01,0x01,0x0b,0x01,0x02,0x04,
- 0x07,0x01,0x07,0x01,0x09,0x02,0x04,0x01,0x07,0x04,0x02,0x01,0x01,0x05,0x01,0x01,
- 0x01,0x29,0x01,0xe7,0x01,0x11,0x01,0x14,0x04,0x04,0x01,0x02,0x04,0x04,0x04,0x04,
- 0x04,0x04,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x04,0x06,0x04,0x01,
- 0xe7,0xe5,0x01,0x04,0x01,0x02,0x04,0x04,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x04,
- 0x04,0x04,0x04,0x01,0x02,0x2b,0xe6,0xe5,0x06,0x27,0x02,0x06,0x02,0x06,0x02,0x10,
- 0x13,0xe5,0x1a,0x0c,0x27,0x09,0xe5,0x07,0xe5,0x04,0x0c,0xe5,0x1b,0xe5,0x01,0xe5,
- 0x09,0x01,0x22,0x16,0x13,0x01,0x03,0xe5,0x08,0x1e,0xe5,0x08,0x02,0x01,0x27,0x07,
- 0x06,0x08,0xe5,0x0b,0xe5,0x1b,0xe9,0x07,0x05,0x09,0x09,0x09,0x04,0x01,0x02,0x09,
- 0x04,0xe6,0x01,0x09,0x03,0x02,0x02,0xe6,0x06,0x09,0x06,0x02,0x04,0x01,0x04,0xe6,
- 0x06,0x04,0xe6,0x01,0x04,0x01,0x02,0x09,0x09,0x09,0x03,0x05,0x09,0xe7,0x02,0x02,
- 0x09,0x09,0x04,0x01,0x06,0xe6,0x01,0x02,0x27,0x09,0x09,0x09,0x12,0xe5,0x08,0x09,
- 0x08,0xe5,0x08,0x15,0x09,0x13,0x24,0x02,0x1d,0x04,0x03,0xe5,0xe5,0x28,0x05,0x01,
- 0x09,0x09,0x15,0x09,0x09,0x07,0x0b,0x02,0x10,0x0b,0x13,0x26,0x1e,0x08,0x01,0x01,
- 0x01,0x08,0x22,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0xe7,0x05,0x02,
- 0x06,0x02,0x06,0x02,0x08,0xe5,0xe5,0x03,0x01,0x02,0x01,0x04,0x02,0x01,0x04,0x02,
- 0x01,0x02,0x01,0x02,0x04,0x01,0x02,0x01,0x02,0x01,0x02,0x04,0x01,0x02,0x04,0x01,
- 0xe5,0xe5,0x03,0x01,0x23,0xe5,0xe5,0x2a,0x03,0x02,0x02,0x03,0x05,0x03,0x05,0x03,
- 0x07,0x01,0x08,0xe5,0x04,0x03,0x01,0x03,0x03,0x05,0x03,0x07,0x02,0xe5,0x01,0x02,
- 0x01,0x01,0x01,0x03,0x03,0x02,0x04,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x02,0x02,
- 0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x03,0x01,0xe6,0x04,0x01,0xe5,0x21,0xe5,0xe5,
- 0x13,0x18,0x09,0x03,0x05,0x09,0x03,0x05,0x03,0x05,0xe5,0x07,0x09,0x03,0x05,0x08,
- 0x02,0x0e,0x04,0x09,0x03,0xe5,0x11,0x0f,0x04,0x02,0x01,0x07,0x01,0x22,0xe8,0x14,
- 0xe5,0x07,0xe5,0x07,0xe6,0x04,0xe8,0x04,0xe8,0x04,0xe8,0x04,0xe7,0x01,0x03,0xe7,
- 0x06,0xe7,0x04,0xe8,0x04,0xe8,0x05,0xe6,0x01,0x05,0xe7,0x06,0xe7,0x04,0xe7,0x01,
- 0x03,0x01,0xe5,0x05,0xe7,0x05,0x01,0xe5,0x05,0x01,0xe5,0x01,0x03,0xe8,0xe5,0x04,
- 0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe6,0xe5,0x0f,0xe5,0x18,0x01,0xe5,
- 0x05,0x01,0x07,0x01,0x09,0x07,0x01,0x09,0x07,0x01,0x09,0x09,0x0b,0xe6,0xe6,0x03,
- 0x09,0x09,0x09,0x09,0x09,0x1b,0x01,0x25,0xe5,0x2a,0x01,0xe5,0xe6,0x01,0xe5,0xe5,
- 0x01,0xe5,0x01,0xe5,0xe5,0x01,0xe5,0x01,0x02,0x02,0xe5,0x01,0xe5,0xe5,0x01,0xe5,
- 0x01,0x05,0x03,0xe5,0xe5,0x01,0x01,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0x01,0x01,
- 0x02,0x04,0x03,0x02,0x02,0x03,0x02,0x02,0xe5,0x01,0xe5,0x03,0x03,0x02,0x02,0xe5,
- 0x01,0xe5,0x03,0x03,0x02,0x02,0xe5,0x07,0xe5,0x01,0x05,0x04,0x01,0x24,0xe6,0x31,
- 0xe5,0x07,0xe5,0x07,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x02,0x04,0xe5,0x06,0x01,0x03,
- 0x04,0xe5,0x02,0x08,0x02,0x05,0x03,0x04,0xe5,0x02,0x04,0xe5,0x02,0x03,0x01,0x03,
- 0x04,0xe5,0x02,0x03,0x01,0x03,0x05,0x03,0x04,0xe5,0x0a,0x24,0x01,0xe6,0x0f,0x09,
- 0x16,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x01,0x03,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0xe7,0x01,0x03,0x01,0xe5,0x01,0x04,0x01,0x02,0x05,0x01,0xe5,
- 0x01,0x03,0x01,0xe5,0x01,0x03,0xe8,0x05,0xe6,0x01,0x03,0xe8,0x05,0xe6,0x01,0x03,
- 0x01,0x03,0x03,0x01,0xe5,0x09,0x01,0x23,0xe8,0x01,0x27,0xe5,0xe5,0x05,0xe5,0xe6,
- 0x04,0xe5,0xe5,0x07,0xe5,0x07,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x05,0xe5,0xe5,0x05,
- 0xe5,0xe5,0x03,0x0d,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe6,0x04,0xe5,0xe5,0x05,
- 0xe5,0xe5,0x05,0x09,0xe5,0xe5,0x13,0x1d,0x03,0x02,0x06,0x04,0x05,0x01,0x07,0x01,
- 0xe6,0x04,0x01,0xe6,0x04,0x01,0xe6,0x04,0x01,0x07,0xe7,0x05,0x01,0x02,0x04,0xe6,
- 0xe5,0x04,0xe6,0xe5,0x04,0x01,0x02,0x04,0xe6,0xe5,0x04,0xe6,0xe5,0x06,0x01,0x01,
- 0x05,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x04,0xe5,0xe5,0x03,0x02,
- 0x01,0xe5,0xe5,0x02,0xe5,0xe5,0x01,0x04,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,
- 0x0d,0xe5,0x15,0x15,0xe7,0x05,0xe6,0x06,0xe7,0x06,0xe5,0x01,0x05,0xe6,0x06,0xe6,
- 0x06,0xe5,0x01,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe6,0x05,0xe6,0x02,0xe5,
- 0x01,0xe6,0x06,0xe6,0x01,0x04,0xe6,0x06,0xe6,0x07,0xe5,0x06,0xe6,0x08,0x2d,0xe7,
- 0x06,0x24,0x09,0xe5,0x07,0x05,0x03,0x03,0x01,0x03,0x09,0x06,0x02,0x02,0xe5,0xe5,
- 0x09,0x0d,0xe5,0x05,0x02,0x06,0x02,0x02,0x03,0x02,0x09,0x02,0x06,0x05,0x03,0x02,
- 0x06,0x07,0x03,0x04,0x04,0x04,0x11,0x08,0xe5,0xe5,0xe5,0xe5,0x08,0x05,0x02,0x0f,
- 0x06,0x09,0x09,0x05,0x03,0x06,0x02,0x09,0x08,0xe5,0x07,0x0f,0x05,0x0a,0x05,0x03,
- 0x07,0x01,0x03,0x02,0x02,0x03,0x05,0x09,0x09,0x0f,0x13,0x14,0xe5,0x01,0xe5,0x29,
- 0xe6,0x05,0xe7,0x06,0xe6,0xe5,0x01,0x02,0x01,0x07,0x01,0xe5,0x08,0x02,0x03,0x01,
- 0x04,0x02,0xe6,0x05,0xe7,0x06,0xe5,0x02,0x06,0xe6,0x06,0xe6,0x06,0xe7,0x05,0xe6,
- 0x06,0xe7,0x05,0xe6,0x03,0x02,0xe6,0x06,0x01,0x0a,0x04,0x0f,0x0b,0xe7,0xe5,0x1e,
- 0x1b,0x0d,0x02,0x02,0x01,0x01,0x02,0x03,0x09,0x02,0x02,0x02,0x13,0x20,0x08,0x09,
- 0x17,0x07,0x19,0x14,0x01,0xe5,0xe7,0x07,0x1a,0x06,0x02,0x05,0xe5,0xe5,0x03,0x02,
- 0x05,0x13,0x05,0x03,0x05,0x07,0x05,0x03,0x09,0x03,0x03,0xe5,0x01,0xe6,0x02,0x03,
- 0x01,0x03,0x03,0x07,0x01,0x01,0x07,0x09,0x02,0x1c,0x21,0x01,0x02,0x0a,0x34,0x01,
- 0xe5,0x02,0x07,0xe5,0x05,0x06,0x02,0x06,0xe5,0x02,0x08,0x02,0x0d,0xe5,0x03,0x04,
- 0x02,0x06,0x02,0x10,0xe5,0x06,0x17,0x10,0x0f,0x15,0xe7,0x01,0x12,0x22,0x14,0xe5,
- 0x08,0x10,0x04,0x0b,0x07,0x02,0x0a,0x02,0x02,0x13,0x06,0x01,0xe5,0x09,0xe5,0x0f,
- 0x11,0xe5,0xe5,0x08,0x15,0x01,0x01,0x2b,0xe6,0x0d,0x01,0x0a,0xe5,0x07,0x01,0x05,
- 0x01,0xe8,0x03,0xe6,0x02,0x05,0x04,0xe5,0x04,0x02,0x03,0xe7,0x08,0x08,0xe5,0x24,
- 0x09,0x07,0x05,0x2b,0x01,0xe6,0x07,0x23,0x0e,0x0c,0xe6,0x03,0x0e,0x08,0xe5,0x09,
- 0x11,0x04,0x07,0x08,0x01,0x18,0xe5,0x11,0x0b,0x2f,0xe9,0x3c,0x11,0x0a,0x03,0x06,
- 0xe5,0xe6,0x07,0xe5,0x01,0x09,0x06,0xe5,0x0f,0x02,0x03,0x02,0x09,0x06,0x0f,0x15,
- 0x02,0x01,0xe5,0xe5,0x03,0x1d,0xe5,0xe6,0x37,0x02,0x09,0x06,0x01,0xe5,0x07,0x03,
- 0x02,0x02,0x07,0xe5,0xe5,0x03,0xe5,0xe6,0x07,0x09,0x05,0x05,0x01,0x05,0x0a,0x13,
- 0x02,0x0b,0x15,0x01,0x22,0xe5,0xe6,0x01,0x06,0x25,0x13,0x0c,0x0f,0xe5,0x08,0x07,
- 0x12,0x03,0x0c,0x06,0x20,0x03,0x03,0x09,0x01,0x02,0x1a,0x14,0xe6,0xe5,0xe5,0xe5,
- 0x08,0x10,0xe5,0x17,0x03,0xe5,0x03,0x14,0x09,0xe5,0x0d,0x03,0x05,0x0f,0xe5,0x06,
- 0xe5,0x08,0x01,0xe5,0x04,0xe5,0x01,0xe5,0x03,0xe5,0x08,0x05,0x09,0x06,0xe5,0x1e,
- 0x0c,0x01,0x01,0x03,0xe5,0x0b,0x10,0xe5,0x19,0x15,0x01,0x04,0x06,0x01,0x01,0x0e,
- 0x03,0x05,0x06,0xe5,0x01,0x01,0x02,0x08,0x07,0x01,0x03,0xe5,0xe6,0x0e,0x01,0x15,
- 0xe5,0x02,0xe5,0x06,0x18,0x0d,0x03,0x01,0xe5,0xe5,0x0a,0x45,0x01,0x02,0xe6,0x03,
- 0x11,0x09,0x06,0x01,0x01,0x02,0x02,0x04,0x01,0x04,0x01,0x02,0x07,0x01,0x01,0x09,
- 0x09,0x05,0x0b,0x07,0x01,0x1b,0x0b,0x05,0xe5,0xe6,0x03,0x07,0x45,0x01,0x1b,0x09,
- 0x15,0x01,0x04,0xe5,0x07,0x02,0x01,0x22,0xe5,0x02,0x04,0xe5,0xe5,0xe5,0x02,0xe5,
- 0x15,0x0d,0x01,0xea,0x0b,0x27,0x01,0x07,0x01,0x0c,0x09,0x09,0xe5,0x01,0xe5,0xe5,
- 0x01,0x04,0x04,0x04,0x04,0x0b,0xe5,0x01,0xe5,0xe5,0x0b,0x01,0xe6,0x01,0x04,0x01,
- 0xe5,0xe5,0x0b,0x04,0x05,0x02,0xe5,0xe5,0x01,0xe5,0x01,0x05,0x06,0x11,0x0f,0xea,
- 0x0b,0x03,0x23,0x01,0x01,0x05,0x01,0x01,0x13,0x09,0x05,0x01,0x01,0x05,0x03,0x05,
- 0x03,0x0b,0x05,0x01,0x01,0x09,0x04,0xe5,0x02,0x02,0x01,0xe5,0xe5,0xe5,0x10,0x09,
- 0x02,0x08,0x07,0x11,0x03,0x09,0x01,0xe5,0xe5,0xe5,0x0c,0x27,0x01,0x04,0x01,0xe5,
- 0xe5,0x01,0x01,0x01,0x07,0x02,0x01,0x02,0x06,0x03,0xe5,0x01,0x01,0x04,0x02,0x09,
- 0x03,0x09,0x07,0x01,0x02,0xe6,0x03,0x02,0xe7,0xe5,0xe5,0x03,0x02,0x01,0x0c,0x04,
- 0x09,0x01,0x07,0x01,0x01,0x02,0x16,0x05,0xe5,0x07,0xe7,0xe6,0x0b,0x27,0x01,0x04,
- 0x01,0xe5,0xe5,0x03,0x01,0x04,0xe5,0xe8,0xe5,0xe6,0x05,0x01,0xe5,0xe5,0x01,0x01,
- 0x01,0xe5,0xe8,0x02,0xe5,0xe5,0x01,0x0d,0x01,0xe5,0x03,0x01,0x03,0xe5,0x03,0x01,
- 0xe5,0xe5,0xe6,0xe5,0x03,0xe7,0xe5,0x0a,0xe7,0x03,0x09,0x07,0x01,0x02,0xe7,0x14,
- 0x06,0x06,0x01,0x01,0x01,0xe5,0x4b,0x09,0x09,0x02,0xe6,0x03,0x09,0x04,0x10,0x02,
- 0x02,0x0d,0x02,0x09,0x10,0x02,0xe5,0x07,0x10,0x22,0x06,0x02,0xe5,0xe5,0x45,0x05,
- 0xe5,0x07,0xe5,0x07,0xe5,0x01,0xe5,0x03,0xe5,0x07,0xe5,0x13,0xe5,0x01,0x0f,0xe5,
- 0x03,0x07,0xe6,0x03,0x08,0xe5,0x01,0x06,0x04,0x0d,0xe5,0x08,0x21,0xe5,0xe6,0x0d,
- 0x09,0x09,0x09,0x09,0x09,0x02,0x02,0x03,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0x0b,0xe5,0x03,0x03,0x06,0x02,0xe5,0xe5,0xe5,0xe5,0x01,0x09,0x09,
- 0xe5,0x03,0xe5,0x01,0x09,0x09,0xe7,0xe5,0xe5,0x01,0x09,0x09,0x06,0x06,0xe5,0xe7,
- 0x5a,0xe5,0x32,0x08,0xe5,0x08,0x1a,0x02,0x09,0x09,0x09,0x1c,0xe5,0x03,0x03,0xe7,
- 0x4c,0x09,0x03,0x05,0x09,0x09,0x15,0x03,0x09,0x05,0x03,0x0f,0x09,0x01,0x09,0x0b,
- 0x09,0x1c,0x09,0x01,0x01,0x0d,0x01,0x18,0x09,0x09,0x02,0x01,0x04,0x02,0x01,0xe7,
- 0x06,0xe6,0x06,0x01,0x03,0x02,0xe7,0x05,0xe7,0x03,0x01,0x0c,0xe6,0x03,0x01,0x0a,
- 0xe6,0xe5,0x01,0x01,0x07,0x01,0x07,0x01,0xe7,0xe5,0x01,0x01,0x13,0xe7,0x0d,0x01,
- 0x07,0x01,0x0f,0xe7,0x0c,0x01,0xe5,0x20,0x0c,0x01,0xe5,0x04,0xe5,0xe7,0x08,0x08,
- 0xe5,0x01,0x04,0xe6,0x03,0x02,0xe6,0x04,0x01,0xe6,0x01,0x07,0xe5,0x04,0x01,0xe5,
- 0x08,0xe5,0x04,0x01,0xe5,0x04,0xe5,0xe7,0x04,0x01,0xe6,0x04,0x01,0x01,0x01,0x07,
- 0x05,0x02,0xe5,0x08,0x01,0x03,0x01,0xe5,0x05,0x01,0xe5,0x0d,0xe5,0xe5,0x0c,0x01,
- 0x39,0x01,0xe5,0x08,0x03,0x0e,0xe5,0x02,0x04,0x01,0x0b,0x08,0x03,0x01,0xe5,0xe5,
- 0x03,0x06,0x07,0x04,0x02,0x01,0x03,0xe5,0xe5,0x02,0x06,0x01,0x03,0xe5,0x08,0x01,
- 0x02,0x03,0x0c,0xe5,0xe5,0x03,0x02,0x01,0x09,0x05,0xe8,0x0b,0x01,0x05,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,
- 0x01,0x05,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x09,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0x06,
- 0xe6,0xe5,0x04,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0x01,0x04,0xe5,0x07,0xe6,
- 0xe5,0x04,0xe6,0xe5,0x04,0xe5,0x07,0xe7,0x2d,0x09,0x06,0x01,0x0a,0x12,0xe6,0x06,
- 0xe5,0x07,0xe5,0x05,0x01,0xe5,0x09,0x09,0xe6,0x06,0xe5,0x05,0x01,0xe6,0x07,0x06,
- 0x01,0xe6,0x04,0x01,0x09,0x09,0xe5,0x05,0x16,0xe5,0x0f,0x2e,0x10,0x01,0x1b,0x01,
- 0x09,0x09,0xe5,0x05,0x01,0x08,0xe5,0xe5,0x06,0x09,0x01,0x07,0x01,0x11,0x01,0x07,
- 0x01,0x07,0x09,0x31,0xe6,0x36,0x13,0x1c,0xe5,0x07,0x0a,0x14,0x0a,0x08,0x0a,0x12,
- 0x09,0x09,0xe5,0x05,0x25,0xe5,0xe5,0x02,0x20,0x09,0x09,0x09,0x0b,0x09,0x04,0x04,
- 0x06,0x02,0x06,0x02,0x09,0x06,0x04,0x04,0x02,0x06,0x04,0x04,0x02,0x0b,0x09,0x04,
- 0x01,0x02,0x04,0x04,0x04,0x04,0x09,0x11,0x0d,0xe8,0x0a,0x01,0x01,0xe5,0x3e,0x1a,
- 0x05,0x02,0x03,0x02,0x02,0x07,0xe5,0x01,0x01,0x08,0x05,0x02,0x14,0xe5,0x01,0x09,
- 0x01,0x02,0x1a,0x01,0xe5,0xe5,0x0b,0x01,0x02,0x0d,0xe5,0x01,0x0e,0x02,0x01,0x01,
- 0x05,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x02,0x04,
- 0x01,0x02,0x04,0x01,0x01,0x05,0xe7,0xe5,0x03,0xe7,0x05,0x01,0xe6,0xe5,0x02,0xe8,
- 0x06,0x01,0xe6,0x04,0x01,0x07,0x01,0xe6,0x04,0x01,0x02,0x04,0x01,0x07,0x01,0x01,
- 0x04,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0xe5,0xe5,0x02,0x01,0x02,0x04,0x01,
- 0x05,0x01,0x01,0x0a,0xe6,0xe5,0x01,0x34,0xe5,0x0d,0x04,0x03,0x05,0xe5,0xe6,0x03,
- 0x02,0x02,0x04,0x06,0xe5,0xe5,0x05,0x01,0xe5,0x07,0xe7,0xe5,0x0d,0xe6,0x12,0xe5,
- 0x0f,0xe5,0x01,0x04,0x04,0x07,0xe5,0x09,0x24,0xe5,0x0f,0x24,0xe5,0x0e,0x01,0x07,
- 0x02,0x04,0x02,0x03,0x06,0x07,0x02,0x04,0x02,0x01,0xe5,0xe6,0x15,0x18,0x0b,0x1a,
- 0x01,0x02,0x1b,0xe5,0x0a,0xe5,0xe7,0x5b,0x01,0x07,0x09,0x09,0x04,0x03,0x02,0xe5,
- 0xe5,0x05,0x07,0x01,0x01,0x02,0x04,0x03,0x07,0x02,0x03,0x05,0x0c,0x27,0x11,0x01,
- 0xe8,0x03,0xe5,0x02,0x03,0xe6,0x3a,0xe5,0x08,0x06,0x01,0x0e,0x15,0xe5,0x02,0x04,
- 0x02,0x01,0x09,0x01,0xe5,0xe5,0x04,0x05,0xe5,0xe5,0xe6,0x0d,0x01,0x07,0xe6,0x10,
- 0x01,0x01,0x05,0xe6,0x06,0xe6,0x0c,0xe7,0xe6,0x01,0x01,0x07,0x11,0x29,0x0f,0x01,
- 0x01,0x01,0x05,0x07,0x09,0x01,0x0b,0xe5,0x09,0x02,0x02,0x13,0x04,0xe5,0x01,0xe5,
- 0x0e,0x1c,0xe5,0x10,0x10,0xe5,0xe7,0x07,0x2e,0x01,0x05,0xe5,0x01,0x03,0x08,0x08,
- 0x08,0x0b,0x03,0x09,0x09,0x02,0xe6,0x02,0x02,0x07,0x01,0x0f,0x03,0x09,0x04,0x02,
- 0x09,0xe6,0x08,0x11,0x08,0x10,0x03,0xe6,0x03,0x06,0x03,0x13,0x09,0x1e,0xe5,0x08,
- 0x13,0x04,0x06,0x05,0x02,0x03,0x0b,0x06,0x02,0x04,0x09,0x04,0x0f,0x02,0x0a,0x01,
- 0x07,0xe5,0x01,0xe5,0x0a,0x05,0x17,0xe5,0xe6,0x02,0x4a,0x08,0xe5,0x12,0x03,0xe5,
- 0x01,0x04,0x04,0x06,0x0a,0xe5,0x01,0x01,0x03,0xe5,0x01,0x03,0x06,0xe5,0x03,0x02,
- 0x09,0x0a,0x01,0x07,0xe5,0xe5,0x01,0x0e,0x09,0x02,0x12,0xe5,0x01,0xe5,0xe5,0x3a,
- 0x04,0x02,0x01,0x09,0x09,0xe5,0xe5,0xe5,0xe5,0x01,0xe7,0x0c,0x0b,0x01,0x05,0x03,
- 0x01,0xe5,0x0a,0xe5,0x05,0x02,0x03,0x02,0x01,0x1a,0xe6,0x06,0x01,0x2c,0x03,0x3b,
- 0x13,0x1a,0x17,0x02,0x0b,0x02,0x11,0x05,0x04,0x1a,0x02,0x34,0x01,0x01,0xe7,0x3c,
- 0x04,0x01,0x0a,0x08,0xe5,0xe5,0x05,0x01,0xe5,0x05,0x06,0x06,0x01,0xe5,0x01,0x08,
- 0x08,0x0e,0x01,0x04,0x03,0x0b,0x01,0xe5,0x11,0x03,0xe5,0x01,0x01,0x04,0x01,0x25,
- 0x03,0x1e,0x3e,0x01,0x0b,0x04,0x02,0x09,0x01,0x0c,0x02,0x02,0xe5,0x04,0x08,0x0e,
- 0x09,0x13,0x01,0x07,0x05,0x21,0x02,0x02,0x01,0xe5,0x24,0x47,0x04,0x09,0x16,0x1c,
- 0x0a,0x11,0xe5,0x01,0x07,0x2d,0x02,0xe6,0x43,0x01,0x03,0xe6,0x06,0xe5,0x07,0xe6,
- 0x06,0x02,0xe5,0x04,0x0d,0xe5,0x06,0x05,0x02,0x0b,0x01,0xe5,0x04,0x08,0x13,0x06,
- 0x02,0xe5,0x2e,0x02,0x01,0xe5,0xe6,0x01,0x01,0x40,0xe5,0x0b,0xe5,0x01,0x05,0xe5,
- 0xe5,0x0b,0xe5,0x02,0x03,0x0b,0x01,0x02,0xe5,0x11,0xe5,0x04,0xe5,0x04,0x16,0x01,
- 0x0a,0xe5,0xe5,0x31,0x02,0x02,0xe5,0x03,0x48,0x07,0x07,0x01,0x04,0xe5,0xe5,0xe5,
- 0x03,0x01,0x18,0x01,0xe5,0xe6,0x0c,0x04,0x01,0xe5,0xe5,0x01,0xe6,0x12,0xe5,0xe5,
- 0xe5,0x01,0x01,0x01,0xe5,0xe5,0x03,0x01,0x02,0x02,0xe6,0x01,0x01,0x24,0xe6,0x52,
- 0x09,0x01,0x04,0x02,0x01,0x04,0x04,0x13,0x06,0xe5,0x02,0x07,0x05,0xe5,0x01,0x01,
- 0x07,0x01,0x0e,0x02,0x01,0x04,0x02,0x01,0x04,0x04,0x03,0xe5,0x01,0x01,0x1c,0x02,
- 0x01,0x01,0xe7,0x3e,0x01,0x13,0x09,0x04,0xe6,0x07,0x04,0x06,0x06,0x01,0x04,0x02,
- 0x01,0x01,0x03,0x0c,0x02,0x05,0x07,0x06,0x07,0xe5,0x07,0x01,0x01,0x03,0x01,0xe6,
- 0x03,0x28,0xe9,0x01,0x3c,0x01,0x01,0x0f,0x03,0x05,0x03,0x09,0x05,0x02,0x08,0x01,
- 0x01,0x02,0x02,0x03,0x02,0x01,0xe5,0x01,0x03,0x01,0x04,0x09,0x05,0x01,0xe5,0x02,
- 0x01,0x02,0x01,0x01,0x01,0xe5,0x03,0x05,0x01,0x01,0x05,0x03,0x09,0x1d,0x01,0x01,
- 0x01,0xe5,0x01,0x39,0x01,0xe5,0xe5,0x12,0x04,0x01,0xe5,0xe5,0x02,0xe5,0x01,0x01,
- 0x04,0x01,0xe5,0x05,0x02,0x06,0x06,0x01,0x02,0x01,0x02,0x04,0x01,0x05,0x04,0x01,
- 0x0e,0x01,0xe5,0x08,0x01,0x04,0x01,0xe5,0xe5,0x06,0x01,0x04,0x02,0x01,0x21,0xe5,
- 0xe7,0x3e,0x01,0x11,0x09,0x01,0x03,0xe5,0x01,0x01,0x0a,0x02,0xe6,0x02,0x03,0xe6,
- 0x02,0x04,0x01,0x01,0x03,0x10,0x01,0x01,0xe5,0x06,0x08,0x07,0x01,0x03,0xe5,0x01,
- 0x01,0x07,0x01,0x01,0xe5,0xe6,0xe5,0xe5,0x20,0x02,0xe6,0x08,0x02,0x1a,0x02,0x06,
- 0xe5,0x11,0x13,0x13,0xe5,0x04,0x02,0x02,0x06,0x02,0x05,0x09,0x02,0x09,0x02,0x03,
- 0x02,0xe5,0x04,0x02,0x02,0x10,0xe5,0x07,0xe5,0x04,0x04,0x26,0x02,0xe5,0xe5,0x25,
- 0xe5,0x07,0x13,0x01,0x13,0x11,0x05,0xe5,0x01,0x06,0x02,0xe5,0x05,0xe5,0x07,0xe5,
- 0x03,0x04,0x02,0x05,0xe5,0x01,0x05,0xe5,0x01,0x06,0x02,0xe5,0x04,0x02,0x0f,0xe5,
- 0x01,0x28,0x02,0xe5,0x0d,0x09,0x09,0x09,0x03,0x05,0x09,0x02,0x02,0x03,0x09,0x02,
- 0x01,0x01,0x02,0x09,0x05,0xe5,0x01,0xe5,0x03,0x03,0x0b,0xe6,0x06,0xe5,0xe5,0x02,
- 0x02,0x02,0xe5,0x04,0xe5,0x03,0xe5,0x01,0xe5,0x01,0x02,0x02,0x02,0x06,0x05,0xe5,
- 0x01,0x06,0x02,0xe5,0x03,0xe5,0x01,0x09,0x09,0x06,0x06,0xe6,0x01,0x02,0x45,0x13,
- 0x12,0xe5,0x27,0xe5,0x0f,0x0b,0xe5,0x11,0xe5,0x07,0xe5,0x07,0xe5,0x19,0x02,0x04,
- 0x03,0x01,0xe5,0x46,0x13,0x13,0x05,0x09,0x15,0x03,0x05,0x09,0x09,0x03,0x05,0x09,
- 0x03,0x07,0x07,0x03,0x1c,0x09,0xe8,0xe5,0x1e,0x01,0x07,0x01,0x04,0x0c,0x01,0x09,
- 0x07,0x01,0x04,0x04,0x07,0x01,0x06,0x03,0xe5,0x0b,0x07,0x01,0x07,0xe5,0x0e,0x01,
- 0xe7,0x06,0xe5,0x0e,0x01,0x04,0x02,0x01,0x07,0x01,0xe5,0xe5,0x05,0x22,0x02,0xe5,
- 0x20,0x01,0xe5,0x05,0x01,0xe5,0x0e,0xe5,0xe6,0x05,0x02,0x05,0xe5,0xe6,0x05,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x02,0xe5,0x08,0x0b,0x02,0x02,0x02,0xe5,0x01,0x06,0x05,
- 0x01,0xe6,0x07,0xe5,0x01,0x06,0x05,0x01,0xe6,0x03,0xe5,0xe7,0x03,0xe5,0x01,0xe5,
- 0x04,0x02,0x24,0xe5,0x4a,0x13,0x06,0x07,0x02,0x06,0x1a,0xe5,0x0c,0x09,0x02,0x01,
- 0xe5,0x0b,0xe5,0x08,0x0e,0x03,0x05,0x22,0xe5,0x01,0x15,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe6,0xe5,0x02,0x01,0xe5,0x07,0xe5,
- 0x02,0x04,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x02,0x04,0xe5,0x07,0xe5,
- 0x01,0x05,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x06,
- 0xe5,0xe6,0x20,0x01,0x07,0x01,0x0a,0xe5,0x04,0x01,0x09,0x07,0x01,0xe6,0x06,0xe6,
- 0xe5,0xe5,0xe5,0xe6,0x07,0xe5,0x08,0xe5,0x09,0xe5,0x04,0x02,0x06,0x02,0x06,0x01,
- 0xe5,0x05,0x01,0xe5,0x08,0x06,0x01,0x07,0x01,0x07,0x01,0xe5,0x07,0x22,0xe5,0xe6,
- 0x20,0x01,0x07,0x01,0x11,0x01,0x07,0x09,0x01,0x07,0x01,0x07,0x01,0xe5,0x1a,0x16,
- 0x07,0x01,0xe5,0x19,0x01,0x07,0x01,0x07,0x02,0x06,0x24,0xe6,0xe6,0x49,0x13,0x05,
- 0x0e,0x08,0x16,0x09,0x13,0x09,0x1c,0x09,0x23,0xe7,0x02,0x34,0x10,0x0c,0x06,0x01,
- 0xe5,0x08,0x08,0x02,0x06,0x02,0x0b,0x06,0x02,0x09,0x09,0x09,0x06,0x02,0x09,0x04,
- 0x04,0x09,0x04,0x26,0x01,0x6c,0x04,0x01,0xe5,0x0c,0x03,0x0a,0x3b,0x01,0xe5,0x02,
- 0x0a,0x26,0x02,0xe5,0x01,0xe5,0x0c,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,
- 0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x07,0x01,0xe6,0x04,0x01,0x01,0x05,0x01,0x01,
- 0x05,0x01,0x02,0x01,0x02,0x01,0x01,0x05,0x01,0x09,0x01,0x01,0x05,0x01,0xe5,0xe5,
- 0x03,0x01,0x01,0x05,0x01,0x02,0x04,0xe6,0x01,0x04,0x01,0x01,0x05,0xe6,0x02,0x03,
- 0x01,0x02,0x04,0xe6,0xe5,0x04,0x01,0x06,0xe5,0xe5,0x06,0x01,0x02,0x07,0x02,0xe5,
- 0x0b,0x11,0x32,0x03,0x04,0x08,0x0f,0xe5,0x13,0xe5,0x06,0xe5,0x08,0xe5,0x07,0xe5,
- 0x01,0x05,0x09,0xe5,0x0e,0x08,0x03,0xe5,0x2c,0xe7,0x07,0x25,0x18,0x09,0x09,0x06,
- 0x02,0x0a,0x01,0x06,0x0c,0x01,0x09,0x05,0x02,0x08,0x04,0x06,0x08,0x03,0xe5,0x12,
- 0x04,0x0c,0x1f,0xe6,0xe6,0xe5,0x52,0x0d,0x01,0x09,0x12,0x01,0x18,0x01,0x07,0x05,
- 0x0c,0x1d,0x0b,0x21,0x01,0x01,0xe5,0x24,0x0d,0x21,0x0f,0x09,0xe5,0x02,0x04,0xe5,
- 0x04,0x03,0x0a,0xe5,0xe5,0x02,0x03,0x01,0x02,0x02,0x04,0x06,0x01,0xe5,0x51,0x01,
- 0xe7,0x1e,0x05,0x35,0x08,0x0f,0x08,0x05,0x01,0xe5,0x05,0x06,0x09,0x0f,0xe5,0xe5,
- 0x19,0x06,0x27,0x0b,0x01,0xe6,0x07,0x04,0xe5,0xe5,0x10,0x09,0x09,0x2b,0x09,0x09,
- 0x01,0x0a,0xe5,0x04,0x05,0x09,0x10,0x01,0x02,0x0a,0x09,0x03,0x01,0x02,0x09,0x13,
- 0x17,0x01,0x02,0x0a,0x02,0x13,0x09,0xe7,0x05,0xe5,0xe5,0x08,0x06,0x01,0xe5,0x08,
- 0x03,0x0f,0x03,0x05,0x09,0xe5,0x04,0x0e,0x16,0x0d,0x01,0x0f,0x14,0xe5,0x01,0x06,
- 0x0d,0x0c,0x03,0x02,0x0c,0x13,0xe5,0x11,0x1a,0x1d,0x12,0x01,0x08,0xe5,0x04,0xe6,
- 0x19,0x1d,0x05,0x03,0x05,0x02,0x07,0x02,0x17,0x02,0xe5,0x11,0x12,0x18,0x09,0x04,
- 0x0c,0x06,0x14,0x0e,0x06,0x08,0x03,0x14,0x04,0x03,0x0a,0x04,0x1c,0x03,0x12,0x0a,
- 0x01,0x01,0x46,0x1b,0x02,0x0f,0x03,0x06,0x03,0xe6,0x1b,0x05,0xe5,0x13,0x0c,0x3d,
- 0xe5,0x0f,0x02,0x04,0x02,0x01,0x02,0x01,0x04,0xe5,0x02,0x09,0x04,0x04,0x03,0x05,
- 0x01,0x02,0x04,0x09,0x01,0x02,0x04,0x2b,0x16,0x04,0x09,0x0d,0x01,0x03,0x04,0x02,
- 0x01,0x13,0x01,0x07,0x09,0x06,0x01,0x04,0x0c,0x01,0x03,0x01,0x09,0x08,0x07,0x01,
- 0xe5,0xe5,0xe5,0x03,0xe5,0x0c,0x05,0x09,0x08,0xe6,0xe5,0x13,0x13,0x08,0x0a,0x07,
- 0x06,0x02,0x07,0x01,0x09,0x09,0x07,0x01,0x09,0x02,0x06,0x02,0x0e,0xe5,0x16,0x0a,
- 0x0e,0x05,0x09,0x03,0x03,0x09,0x01,0x01,0xe5,0x03,0xe5,0x09,0x06,0x1f,0x1e,0xe5,
- 0x07,0xe5,0x11,0xe5,0x04,0x04,0x01,0x0f,0xe5,0x07,0x01,0x0b,0x03,0xe5,0xe5,0x0b,
- 0x02,0xe5,0x08,0x09,0x09,0x09,0x04,0xe5,0x02,0x09,0x09,0x05,0x02,0xe5,0xe5,0x01,
- 0xe5,0x01,0xe5,0xe5,0x03,0xe7,0x07,0xe5,0x03,0x05,0xe5,0x05,0xe7,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x08,0x04,0xe5,0x02,0x04,0x04,0x08,0xe5,0x03,0x04,0x08,0xe5,0x07,
- 0xe5,0x0c,0x02,0xe5,0x17,0x14,0x05,0x0a,0x09,0x01,0x0a,0x08,0x01,0x08,0xe5,0x01,
- 0x01,0x02,0x01,0x09,0x02,0x07,0xe5,0x06,0x01,0x09,0x08,0xe5,0x08,0x0e,0x18,0x09,
- 0x09,0x09,0x0e,0x02,0x03,0x0b,0x06,0x02,0x06,0x0c,0x06,0x0c,0x0e,0x01,0x02,0x02,
- 0x06,0x03,0x05,0x03,0x05,0x06,0x02,0x04,0x01,0x04,0x03,0x02,0x02,0x09,0x09,0x03,
- 0x03,0x01,0x07,0x01,0x07,0x07,0x01,0x01,0x09,0xe5,0x11,0x09,0x0f,0x02,0x08,0xe5,
- 0x1c,0x08,0x13,0x09,0x03,0x09,0x0d,0x0b,0x09,0x0b,0x17,0x03,0x0b,0x09,0xe5,0x07,
- 0x27,0x12,0x02,0xe6,0xe5,0x0e,0x01,0x0c,0x04,0x04,0x05,0x05,0x02,0x13,0x0a,0x03,
- 0x18,0x09,0x0b,0xe5,0x04,0x02,0x09,0x01,0x07,0x07,0x01,0x07,0x08,0xe5,0xe5,0x02,
- 0x01,0x01,0x01,0x04,0x0e,0x09,0x09,0x0f,0x01,0xe5,0x0b,0xe6,0x07,0xe5,0x05,0x01,
- 0xe5,0x02,0x04,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x07,
- 0xe6,0x06,0xe6,0x06,0xe5,0x07,0xe5,0x08,0xe6,0x07,0xe5,0x07,0xe5,0x06,0xe6,0x07,
- 0x13,0x03,0x03,0x0b,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x0e,0x01,0xe6,0x02,
- 0x09,0x01,0x07,0x05,0x03,0x01,0x07,0x07,0x01,0x01,0x07,0x08,0xe5,0xe5,0x06,0x09,
- 0x04,0x04,0x09,0x09,0x0a,0xe5,0x02,0x05,0x09,0x05,0x03,0x12,0x0c,0x04,0x05,0x06,
- 0x08,0xe5,0x08,0x09,0x0b,0x06,0x01,0x0e,0xe5,0x07,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0xe5,0xe5,0x05,0xe5,0xe5,0x07,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,
- 0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0x09,0x09,0x09,0xe5,0x07,0x02,0x06,0xe5,
- 0xe5,0x05,0xe5,0xe5,0x0b,0x02,0xe5,0x0d,0x02,0x06,0x01,0x07,0x09,0x01,0x02,0x04,
- 0x09,0x01,0x07,0x09,0x01,0x07,0x03,0x05,0x05,0x03,0x02,0x06,0x0b,0x04,0x04,0x09,
- 0x1f,0x07,0x13,0x09,0x09,0x09,0x02,0x10,0x12,0x44,0x02,0x04,0xe5,0x04,0x02,0xe5,
- 0x18,0x25,0x01,0x01,0x21,0x2f,0x05,0x01,0x01,0x0e,0x09,0x02,0x06,0x02,0x06,0x09,
- 0x02,0x01,0x02,0x01,0x02,0x01,0x04,0x09,0x09,0x09,0x01,0xe5,0x05,0x05,0x03,0x02,
- 0x05,0x02,0x09,0x02,0xe5,0x04,0x04,0x03,0xe5,0x07,0x03,0x05,0xe5,0x08,0x05,0x02,
- 0xe5,0x02,0x03,0x01,0x04,0x04,0x09,0x09,0x09,0x06,0xe5,0xe5,0x06,0x18,0x09,0x09,
- 0x1d,0x0f,0x13,0x03,0x0a,0x0a,0x04,0x10,0x09,0x06,0xe5,0xe5,0x4a,0xe5,0x01,0x07,
- 0x08,0xe5,0x07,0x09,0x09,0x03,0x05,0x09,0x09,0xe5,0x07,0x09,0x09,0x09,0x05,0x03,
- 0x06,0xe5,0x02,0x09,0x09,0x09,0xe5,0x07,0x07,0x01,0x01,0x07,0x01,0x07,0x05,0x03,
- 0x01,0x07,0x09,0x09,0x0e,0x01,0xe5,0x03,0x61,0x11,0x01,0x07,0x0b,0x09,0x09,0x03,
- 0x05,0x02,0xe5,0x05,0x15,0x3b,0xe5,0x14,0x13,0x13,0x09,0x14,0x09,0x0d,0x09,0x06,
- 0x04,0x09,0x04,0xe5,0x02,0x04,0x04,0x18,0x13,0x09,0x27,0xe5,0xe5,0x09,0x17,0x06,
- 0x02,0x4f,0x4f,0x09,0x2b,0x05,0xe6,0x0a,0x3b,0x27,0x5b,0x3c,0xe6,0x3c,0x5b,0x1e,
- 0x26,0x27,0xe5,0xe5,0x03,0x10,0x31,0x2a,0x05,0x03,0x05,0x02,0x02,0x05,0x03,0x05,
- 0x03,0x05,0xe5,0x01,0x05,0x14,0x13,0x29,0x06,0xe5,0xe6,0x46,0x27,0x15,0x46,0x33,
- 0x05,0xe5,0x01,0x04,0x57,0xa9,0x03,0x14,0x09,0x09,0x09,0x09,0x09,0xe6,0x06,0x09,
- 0xe6,0x06,0x09,0xe6,0x06,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0xe6,0x06,0x09,
- 0x09,0x09,0x09,0x0a,0x02,0x05,0x09,0x08,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x05,0x01,0xe5,0x07,0xe5,0x05,0x01,0xe5,0x07,0xe5,0x05,0x02,0x09,0x07,0x03,
- 0x09,0x09,0x09,0x09,0x04,0x03,0xe5,0x07,0xe5,0x05,0x01,0xe5,0x07,0xe5,0x07,0xe5,
- 0x08,0x09,0x10,0xe6,0x15,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,
- 0x03,0x05,0x03,0x09,0x05,0x03,0x04,0x09,0x05,0x05,0x09,0x09,0x09,0x14,0x03,0x09,
- 0x05,0x03,0x09,0x27,0x01,0x0d,0x03,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x03,
- 0x09,0x05,0x03,0x09,0x05,0x03,0x09,0x01,0x04,0x04,0x04,0x06,0x04,0x04,0x04,0x04,
- 0x04,0x04,0x04,0x06,0x0b,0x03,0x09,0x09,0x09,0x09,0x03,0x05,0x03,0x0d,0x02,0x01,
- 0x0b,0x06,0x01,0x02,0x01,0x04,0x02,0x01,0x04,0x02,0x01,0x04,0x02,0x01,0x04,0x02,
- 0x01,0x01,0x05,0x01,0x04,0x02,0x01,0x01,0x05,0x01,0x02,0x01,0x02,0x01,0x01,0xe5,
- 0x06,0x02,0x02,0x03,0x02,0x02,0x05,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
- 0x02,0x02,0x02,0x04,0x02,0x01,0x04,0x02,0x01,0x01,0xe5,0x03,0x01,0x01,0x02,0x04,
- 0x02,0x01,0x02,0x01,0x01,0x02,0x04,0x04,0x04,0x06,0x02,0x02,0xe6,0xe5,0xe5,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
diff --git a/board/esd/ar405/u-boot.lds b/board/esd/ar405/u-boot.lds
deleted file mode 100644
index 3b9aa7c5d1..0000000000
--- a/board/esd/ar405/u-boot.lds
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/4xx_enet.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_ppc/board.o (.text)
- lib_generic/zlib.o (.text)
-
- common/cmd_boot.o (.text)
- common/cmd_bootm.o (.text)
- common/cmd_flash.o (.text)
- common/cmd_mem.o (.text)
- common/cmd_nvedit.o (.text)
- common/console.o (.text)
- common/lists.o (.text)
- common/main.o (.text)
-
-/*
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.ppcenv)
-*/
- common/environment.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/ash405/Makefile b/board/esd/ash405/Makefile
deleted file mode 100644
index 4d75868ea8..0000000000
--- a/board/esd/ash405/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/ash405/ash405.c b/board/esd/ash405/ash405.c
deleted file mode 100644
index 84fc3a01dc..0000000000
--- a/board/esd/ash405/ash405.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-
-/* fpga configuration data - gzip compressed and generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-/* Prototypes */
-int gunzip(void *, int, unsigned char *, unsigned long *);
-
-
-int board_early_init_f (void)
-{
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF9F); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- volatile unsigned char *duart0_mcr = (unsigned char *)((ulong)DUART0_BA + 4);
- volatile unsigned char *duart1_mcr = (unsigned char *)((ulong)DUART1_BA + 4);
- volatile unsigned char *duart2_mcr = (unsigned char *)((ulong)DUART2_BA + 4);
- volatile unsigned char *duart3_mcr = (unsigned char *)((ulong)DUART3_BA + 4);
- unsigned char *dst;
- ulong len = sizeof(fpgadata);
- int status;
- int index;
- int i;
-
- dst = malloc(CFG_FPGA_MAX_SIZE);
- if (gunzip (dst, CFG_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
- printf ("GUNZIP ERROR - must RESET board to recover\n");
- do_reset (NULL, 0, 0, NULL);
- }
-
- status = fpga_boot(dst, len);
- if (status != 0) {
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("FPGA: %s\n", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=20; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc ('\n');
- do_reset(NULL, 0, 0, NULL);
- }
-
- puts("FPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("%s ", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
-
- free(dst);
-
- /*
- * Reset FPGA via FPGA_DATA pin
- */
- SET_FPGA(FPGA_PRG | FPGA_CLK);
- udelay(1000); /* wait 1ms */
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);
- udelay(1000); /* wait 1ms */
-
- /*
- * Reset external DUARTs
- */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_DUART_RST); /* set reset to high */
- udelay(10); /* wait 10us */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_DUART_RST); /* set reset to low */
- udelay(1000); /* wait 1ms */
-
- /*
- * Set NAND-FLASH GPIO signals to default
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~(CFG_NAND_CLE | CFG_NAND_ALE));
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_NAND_CE);
-
- /*
- * Enable interrupts in exar duart mcr[3]
- */
- *duart0_mcr = 0x08;
- *duart1_mcr = 0x08;
- *duart2_mcr = 0x08;
- *duart3_mcr = 0x08;
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming ASH405");
- } else {
- puts(str);
- }
-
- putc ('\n');
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand_legacy.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- nand_probe(CFG_NAND_BASE);
- if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
- print_size(nand_dev_desc[0].totlen, "\n");
- }
-}
-#endif
diff --git a/board/esd/ash405/config.mk b/board/esd/ash405/config.mk
deleted file mode 100644
index 1d743a9f87..0000000000
--- a/board/esd/ash405/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# esd ASH405 boards
-#
-
-TEXT_BASE = 0xFFFC0000
diff --git a/board/esd/ash405/flash.c b/board/esd/ash405/flash.c
deleted file mode 100644
index 89af1190a8..0000000000
--- a/board/esd/ash405/flash.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- switch (size_b0) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/ash405/fpgadata.c b/board/esd/ash405/fpgadata.c
deleted file mode 100644
index 94e8db892a..0000000000
--- a/board/esd/ash405/fpgadata.c
+++ /dev/null
@@ -1,2492 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x5c,0xa1,0x5d,0x3f,0x00,0x03,0x61,0x73,0x68,0x34,0x30,0x35,
- 0x5f,0x31,0x5f,0x30,0x32,0x2e,0x62,0x69,0x74,0x00,0xec,0xfd,0x0f,0x78,0x1c,0xe5,
- 0x91,0x2f,0x0a,0x57,0xbf,0xdd,0x92,0x5f,0x4d,0x8f,0x34,0xad,0x91,0x4c,0x14,0x30,
- 0xa6,0x35,0x92,0xcd,0x58,0x19,0xc9,0xe3,0x91,0x90,0x85,0x10,0xa3,0xb6,0x24,0x58,
- 0x45,0x36,0x58,0x71,0xd8,0x2c,0x67,0x97,0x93,0x1d,0x88,0x93,0xe3,0xdd,0x75,0x72,
- 0x1c,0x36,0x37,0xc7,0x21,0x6c,0xf2,0x6a,0x24,0xe3,0xb1,0x65,0xe3,0xc1,0x38,0xc1,
- 0x04,0x92,0x3b,0xfe,0x43,0x10,0xe0,0x24,0x63,0xd9,0x60,0x19,0x1b,0x68,0x09,0x41,
- 0xc6,0xb6,0xb0,0x15,0xc7,0x9b,0x35,0xc4,0x0b,0x63,0x50,0x88,0x30,0x82,0xc8,0xe0,
- 0x24,0xb2,0x2d,0xec,0x5b,0xd5,0x23,0xcd,0xf4,0x38,0x7b,0xf6,0xec,0xde,0xf3,0xdc,
- 0xef,0xdb,0xef,0xbb,0xab,0x73,0x9e,0x67,0x2b,0xdd,0xed,0xa6,0xfb,0x9d,0xb7,0xab,
- 0x7e,0x55,0xf5,0xab,0x2a,0xc8,0x73,0x8d,0xa7,0xfe,0x1f,0x80,0x74,0x37,0x68,0x77,
- 0xff,0xfd,0x8a,0x1a,0xff,0x0d,0x7f,0xbd,0xe0,0xaf,0xfd,0x81,0xaa,0xaf,0x7d,0x69,
- 0x39,0xdc,0x03,0x6a,0xe0,0xef,0x6f,0xf0,0x7f,0xf9,0x1b,0x5f,0x5f,0x50,0x53,0x03,
- 0x5f,0xc2,0xff,0xe5,0xf7,0x57,0xcf,0xf7,0xdf,0x88,0xff,0x1f,0x96,0x43,0xde,0x82,
- 0x05,0xf5,0x35,0xb5,0xf5,0xfe,0x1a,0xf8,0x32,0x48,0xd5,0x3b,0x2f,0xe3,0xdf,0xd3,
- 0x8f,0xfe,0xf9,0x57,0xfc,0x20,0x24,0x00,0x98,0xe1,0x97,0x42,0xf4,0x7f,0x55,0xbf,
- 0xa4,0x4b,0x20,0x1a,0x2b,0xfd,0x60,0xd2,0xff,0x86,0xa9,0xf3,0x79,0x7e,0xd0,0xed,
- 0xff,0x5b,0xf2,0x83,0x01,0xed,0x60,0x6c,0x00,0xb7,0x1f,0xfe,0xd7,0x7f,0x86,0x22,
- 0xa6,0xc5,0x7f,0xe7,0xf5,0x97,0x0f,0x8b,0xff,0xe9,0x55,0x99,0xbf,0xc6,0x8f,0x62,
- 0xd3,0x22,0xfb,0x37,0xdc,0x5f,0x32,0x20,0x7d,0xff,0x37,0xfe,0x4d,0xf7,0xff,0xc3,
- 0xf4,0xfd,0xff,0xbd,0xd7,0x83,0xfb,0xdf,0x70,0x39,0x80,0x92,0x7e,0x1e,0x37,0x38,
- 0x80,0x09,0x88,0x81,0xf7,0x5f,0x11,0x1a,0x07,0xa7,0xff,0x61,0x7f,0xce,0x09,0x71,
- 0x4c,0x34,0x24,0x67,0xac,0x92,0x67,0x19,0x93,0x7c,0x61,0xd2,0x15,0xed,0x3c,0x17,
- 0x3b,0x2a,0x1a,0x93,0xae,0x44,0xd9,0x4a,0x76,0xac,0xa3,0x5a,0x5f,0x3a,0x51,0x34,
- 0xae,0xad,0x9a,0xba,0xde,0x2c,0xf9,0x2d,0x74,0x8b,0x82,0x10,0x8f,0xb3,0xca,0x48,
- 0x1f,0x38,0x92,0x05,0x1b,0xd8,0x6f,0xf4,0xf5,0xa2,0x2a,0xa9,0xf6,0xc1,0x8b,0x7c,
- 0x9d,0xa8,0x30,0xd4,0x3e,0x96,0x54,0xf4,0xa9,0xeb,0x13,0xd0,0x65,0x74,0x82,0xcf,
- 0x7c,0xcc,0x9f,0x9b,0xaf,0x3c,0x9f,0x17,0x33,0x55,0x0d,0x06,0x79,0x58,0xf2,0xa1,
- 0x90,0xeb,0x84,0x67,0x84,0x6e,0xa8,0xfe,0xa6,0xc3,0xd2,0xf4,0xf5,0x66,0xce,0x8f,
- 0xa1,0x1b,0xaa,0x42,0x25,0xc2,0xb1,0x12,0xfa,0xc2,0x1e,0xd3,0xb1,0x81,0x7d,0x85,
- 0x45,0xb4,0xaa,0x41,0x75,0x6b,0x93,0x0f,0x9e,0xd1,0x2b,0x5a,0xd5,0x38,0x9b,0x50,
- 0xa6,0x9f,0x67,0xd1,0xcc,0x77,0xc3,0x47,0x1e,0x08,0xbe,0xe3,0xda,0x5b,0xe6,0x83,
- 0x71,0x11,0xe8,0xbf,0xee,0x71,0xf9,0x5d,0x38,0x6c,0x04,0x93,0x2e,0xbd,0xcc,0x09,
- 0xef,0xac,0x09,0xac,0x72,0xc5,0xe5,0xe1,0x96,0xe9,0xeb,0x63,0x52,0x5c,0xb9,0xbc,
- 0xa8,0x71,0x91,0xeb,0x5b,0xf2,0x41,0xf8,0x04,0x1a,0xcd,0xa5,0xa6,0x3c,0x0e,0x97,
- 0x44,0xa3,0xe9,0x1a,0x57,0x27,0xb5,0x1f,0x2a,0x2f,0xdd,0xed,0x1a,0x6f,0x1e,0x85,
- 0xd0,0xd4,0xf5,0x27,0xb4,0x2e,0xfe,0x3e,0xd4,0x0f,0x5c,0xb7,0xfb,0xf3,0x63,0xca,
- 0xaf,0xcb,0xeb,0xcd,0x25,0x8f,0x7f,0x6a,0x44,0x9a,0x80,0xa0,0xe9,0xea,0x93,0x3f,
- 0x84,0xf3,0x22,0x60,0x6c,0x88,0xcb,0xe3,0xca,0xf4,0x7a,0x26,0x72,0x74,0xd1,0x3d,
- 0xa2,0x1b,0xfc,0x59,0xd6,0x80,0x2f,0xe2,0x49,0xb4,0x46,0xd9,0xbb,0x30,0x21,0xaa,
- 0xde,0x56,0x9f,0x65,0x93,0xb0,0xbf,0xab,0xd6,0xcc,0x8f,0xb3,0x8f,0x70,0xf7,0x4f,
- 0xbd,0xaf,0xb2,0x44,0xd9,0x91,0xe0,0xe3,0x8e,0x9a,0xdc,0x8d,0x7a,0x54,0xd2,0x4f,
- 0x73,0xb7,0x7b,0x44,0xe9,0x15,0xbe,0xa4,0xaa,0xb0,0x21,0xa8,0x86,0x98,0xc1,0xfd,
- 0x6c,0x02,0xbf,0x95,0xd4,0xdf,0xb8,0xf6,0x5d,0xf8,0x94,0x28,0xfb,0x69,0xeb,0x6a,
- 0xcf,0x6c,0xe8,0xea,0xbb,0x3b,0xe9,0xbd,0x93,0xfd,0x2a,0x54,0x1e,0xa9,0x4c,0xaa,
- 0x2b,0xd8,0x9b,0xc6,0xbe,0xe1,0x39,0xa1,0xbc,0xd5,0xec,0x64,0xfa,0xfe,0xad,0x7c,
- 0x89,0xf1,0x0e,0xd4,0x8d,0x3a,0x6a,0x9b,0x37,0xc0,0x2f,0xcd,0x78,0xff,0x92,0x9b,
- 0x9a,0x86,0x8c,0x5e,0xad,0x21,0xe9,0xaa,0x29,0x3b,0x2a,0x3e,0x86,0x40,0xbb,0xd3,
- 0x2f,0x1f,0x67,0xd3,0xcf,0x6f,0xcc,0x3c,0x08,0xbf,0x85,0xe0,0xa0,0x67,0x5c,0xde,
- 0x05,0xfb,0xe0,0x06,0x13,0x57,0x6f,0xd2,0xb8,0x5f,0xc3,0xf7,0x1d,0x97,0x27,0xe1,
- 0x8f,0x4a,0x63,0x8b,0x3a,0x2e,0x0f,0xb3,0xe9,0xf5,0xe1,0x33,0x7b,0xe0,0x22,0xf8,
- 0x4d,0x67,0xbc,0x79,0x97,0x11,0x67,0x6e,0x73,0x69,0x54,0x1a,0x81,0x93,0x10,0x4c,
- 0x3a,0xe3,0xf2,0x07,0xe6,0x00,0x04,0x42,0x28,0x0c,0x40,0x7a,0x3f,0x68,0x51,0x78,
- 0x16,0x4a,0xcd,0xfc,0x55,0x15,0xb3,0xa2,0x7b,0x51,0x58,0xdc,0xce,0x06,0xa1,0x0b,
- 0x6e,0x34,0x1d,0xab,0x9a,0x86,0xf4,0x5f,0xc1,0x53,0x06,0x5f,0x85,0xeb,0x33,0x7d,
- 0xbd,0x0e,0x8f,0xc1,0x4b,0xa2,0x2c,0xf9,0xe8,0x6a,0xc7,0x8f,0xe0,0xa5,0xf0,0x9c,
- 0x64,0xdb,0x6a,0xcf,0x9b,0xd0,0x25,0xe6,0x27,0xf3,0x56,0x2f,0x7b,0x53,0xac,0x15,
- 0xd7,0xdf,0xc3,0x57,0x33,0x33,0xbd,0xdf,0x46,0x8b,0xd7,0xc3,0x6e,0xd0,0x5f,0xcf,
- 0x0b,0x38,0x36,0xf0,0x3d,0xc9,0x72,0x53,0xad,0x61,0x1f,0xe4,0x75,0xc4,0xbc,0x21,
- 0xf5,0x06,0x5c,0xcf,0x87,0x4d,0x5f,0xc8,0xeb,0x67,0xc7,0xd3,0xd7,0x8f,0xcc,0xbc,
- 0x08,0x17,0x62,0xd5,0xd1,0xfc,0x0f,0xd5,0x1e,0xb8,0xb4,0xad,0x56,0x14,0x7c,0x59,
- 0x3e,0xcf,0x1e,0x0c,0x05,0x3b,0xf3,0x56,0x7c,0x7e,0x14,0x5e,0x8d,0x2d,0x8c,0x3b,
- 0x63,0xf2,0x84,0x32,0xfd,0xbe,0xad,0x92,0xd0,0x27,0xe0,0x45,0xcd,0xd5,0x25,0xdf,
- 0x0d,0x13,0xec,0x79,0x40,0x21,0x19,0x19,0x65,0x41,0x28,0x10,0x9d,0x49,0x3e,0x01,
- 0xf7,0x31,0x97,0x90,0x8f,0xc3,0xb4,0x16,0x71,0x6a,0x3b,0x9b,0x0e,0x41,0xaf,0xe1,
- 0x8c,0xca,0xb9,0xe1,0x43,0xa2,0xb6,0xc5,0xb5,0x55,0xfe,0x4a,0xd7,0xa1,0x45,0xc1,
- 0x90,0xeb,0x71,0xf9,0x01,0x71,0x28,0x12,0x30,0x36,0x45,0xe5,0x01,0x65,0xfa,0x7a,
- 0x01,0x5f,0x81,0x0e,0x43,0xff,0x2f,0x8e,0xab,0xcb,0x7e,0x13,0xe9,0x10,0x9e,0x90,
- 0xfa,0x28,0x2b,0x87,0xd7,0xa1,0xca,0x50,0xa3,0xee,0xb9,0xf0,0x7a,0xc8,0x83,0x02,
- 0x4b,0x82,0x36,0x75,0x7d,0x5d,0x4e,0x39,0xac,0x03,0x8f,0xd1,0xba,0x19,0x2f,0x5b,
- 0x17,0xfa,0x31,0x9e,0x0d,0xaf,0xa4,0x2f,0xa8,0x55,0xdd,0xc2,0x76,0xc2,0x3a,0xdd,
- 0xba,0xfe,0xd5,0xf4,0x7e,0xf0,0x16,0x3b,0xb7,0xad,0x13,0x1e,0xa3,0xcd,0xbd,0x7e,
- 0xb0,0xa7,0xc3,0x1b,0x32,0x54,0xf7,0x80,0xb2,0xed,0x21,0x70,0x1a,0xaa,0xc6,0x94,
- 0xd8,0xa3,0x90,0x24,0x61,0x60,0x7a,0x3b,0xc0,0xea,0xfc,0x90,0x48,0x40,0x00,0x78,
- 0x58,0xd5,0x45,0x42,0xaf,0x95,0xd4,0xb0,0x4c,0x47,0x82,0xa0,0x0a,0x39,0x86,0x42,
- 0x2f,0xe0,0xfb,0xbe,0x29,0x4d,0x3f,0xcf,0xd6,0x99,0xe7,0xe0,0xf7,0xd0,0x68,0x2c,
- 0x5d,0xf6,0xf2,0xce,0xd8,0x27,0xde,0xa0,0xe1,0x1a,0x96,0xce,0x6d,0xfb,0x04,0x6e,
- 0x36,0xd4,0x61,0x79,0x04,0x2e,0xc3,0xcd,0x6d,0xae,0xa8,0xfc,0x95,0x9c,0xe9,0xef,
- 0xb1,0x24,0x67,0x2f,0xd0,0xd9,0x45,0xc7,0x17,0xef,0x15,0xff,0xc0,0xaa,0xf1,0x1f,
- 0xb2,0x1b,0xc4,0x3f,0xe4,0xdc,0x64,0xac,0x1d,0x96,0xf7,0xe2,0xad,0x7a,0x5b,0xf0,
- 0xfa,0x57,0x61,0xfa,0xfa,0xba,0x92,0xd3,0xd0,0xa7,0x54,0x09,0x1e,0x0e,0xeb,0xa2,
- 0x17,0xf0,0x79,0xba,0x1c,0xa5,0xa2,0x0f,0x3c,0xa0,0xc6,0x58,0x29,0xa0,0x20,0x54,
- 0xc1,0x8e,0xa6,0xd7,0xb3,0x55,0xe9,0x32,0x76,0x83,0xcf,0xc8,0x2b,0x72,0x6c,0x8c,
- 0xed,0x87,0x90,0xb1,0xb8,0xd8,0x93,0x03,0xfb,0xc3,0xba,0xb1,0x58,0x73,0xaf,0x51,
- 0xf6,0x33,0x9d,0xde,0xf7,0xb8,0x34,0x7d,0xff,0xad,0xca,0x2e,0xe9,0x00,0xae,0x36,
- 0x8f,0xe2,0x7a,0xee,0x87,0xb9,0xb4,0x7a,0xe5,0xfa,0x7e,0xd8,0x6e,0x74,0x3f,0x64,
- 0x1d,0xb1,0xd6,0xf3,0xdd,0xf4,0x7e,0x88,0xcd,0x7c,0xb7,0xe4,0xbc,0xd2,0xd0,0x7e,
- 0xdb,0x6c,0x75,0x27,0x9c,0x1f,0xf6,0x18,0xae,0xc7,0x3b,0xe7,0xc2,0xf9,0xa6,0xfa,
- 0xd0,0x75,0x5b,0x71,0xfd,0xcf,0xb6,0x07,0x96,0xe3,0xf3,0x8f,0xa6,0xf5,0x55,0x62,
- 0xd1,0x4e,0x71,0x9e,0xe3,0xb2,0x6c,0xc6,0xd5,0x38,0x0f,0x28,0x3c,0x2a,0xbf,0xbb,
- 0xe8,0x7c,0x6b,0x70,0x05,0x6e,0x0c,0x3c,0x22,0xf0,0x48,0x54,0xbe,0x90,0xd6,0x3f,
- 0x5c,0x8b,0xe1,0xd7,0x5c,0x0f,0xf9,0xe2,0x4b,0xba,0x38,0x19,0xaa,0x85,0x7c,0x90,
- 0x75,0xa0,0xf5,0xf7,0x09,0x59,0x37,0x4e,0x42,0x40,0xcb,0x17,0xf2,0xe1,0xf4,0x7e,
- 0xf6,0xe6,0xd4,0xc3,0x51,0xa3,0x4c,0xf0,0xa4,0xfb,0x46,0xc8,0x6d,0xa9,0x88,0x5d,
- 0x33,0xc6,0xbc,0xf0,0x40,0x17,0xae,0xd8,0x0a,0xd6,0x07,0x6f,0x0a,0x5c,0x9f,0x18,
- 0x3b,0x9c,0xd9,0x0f,0x4a,0x0b,0x74,0x1a,0xde,0x81,0x3c,0xdd,0x93,0x0f,0x0f,0x47,
- 0xf5,0x91,0xcf,0x56,0x7b,0x9c,0x78,0xc4,0x97,0x44,0xb5,0x93,0x0b,0x3b,0x56,0xe9,
- 0xfd,0x79,0x7e,0xbc,0x7e,0xfa,0xf7,0x15,0xda,0x17,0xf4,0xb5,0xa2,0xcc,0xf4,0x7e,
- 0x83,0x39,0x60,0x0d,0xcc,0x33,0xd4,0x71,0x36,0x1b,0xd6,0xf0,0xfc,0x7b,0x5a,0xc7,
- 0x07,0x7e,0xc4,0x1f,0x91,0x4a,0x4d,0x75,0x95,0x67,0x34,0x7d,0x7d,0x24,0x72,0x2b,
- 0xfc,0x5c,0xdc,0x98,0xbc,0xcd,0x3b,0x63,0x36,0xff,0x95,0x58,0x80,0xda,0xa9,0xa8,
- 0x80,0xbd,0x22,0x6e,0x0e,0x39,0xef,0x94,0x67,0xc3,0x6f,0xc5,0x82,0x64,0xfe,0x6a,
- 0xe9,0x8c,0x67,0xfa,0x7a,0x2e,0xed,0x82,0x77,0x48,0xbb,0xc6,0xd4,0x51,0x98,0x80,
- 0xfa,0x45,0xae,0xb8,0x3a,0x86,0x0b,0xd5,0x60,0xb8,0xfc,0xf2,0x10,0xaa,0x9a,0x17,
- 0x07,0x51,0x23,0x0d,0x3c,0x30,0xbd,0x3e,0x4c,0x39,0x08,0x97,0xf1,0x26,0xce,0x51,
- 0x39,0xd8,0xb2,0xb6,0xe3,0x33,0xcb,0x5d,0x13,0xec,0x45,0x98,0x14,0x8d,0x21,0x57,
- 0x9d,0xf4,0x1d,0xf8,0xa4,0x03,0x4f,0x4d,0xc8,0x66,0x7a,0xff,0xf4,0x94,0x3c,0x2e,
- 0xf6,0xf1,0xd2,0x01,0x3e,0xce,0xea,0x59,0x87,0x5e,0x6a,0xa8,0xdf,0x61,0xb3,0xc4,
- 0x5e,0xf0,0x35,0xa9,0xdf,0x96,0x67,0x89,0x7d,0xb0,0xdb,0x44,0xfd,0x73,0x46,0x4c,
- 0xdf,0x1f,0xc4,0xe3,0x8b,0xf6,0xa1,0x9a,0xe2,0xcb,0x1d,0x77,0x88,0x4d,0xac,0xd2,
- 0x58,0x1c,0x60,0xa7,0x60,0x2f,0x54,0x1a,0xea,0x32,0x76,0x8a,0xbf,0x00,0xd7,0xd3,
- 0xf5,0x19,0xfd,0xa3,0x2b,0x0f,0x6a,0xbd,0x22,0x66,0x72,0x70,0x87,0x34,0x01,0x8a,
- 0x81,0xfa,0xe7,0x36,0x88,0x0b,0xdf,0xdd,0xaa,0x9b,0x6d,0x80,0x38,0xe8,0x6f,0xe3,
- 0xc2,0x26,0xd2,0xfb,0xb3,0x67,0xe6,0x00,0xfe,0xe8,0x7e,0xc3,0xb7,0x4b,0x5e,0x09,
- 0x47,0xb4,0x17,0x0d,0xd7,0x5e,0x79,0x4c,0x99,0x68,0x9a,0x1d,0xba,0xe6,0xa0,0x3c,
- 0xa6,0x5d,0x14,0x0b,0xdf,0x46,0xfd,0x79,0x26,0xbd,0x7f,0x84,0xb4,0x33,0x74,0x11,
- 0x82,0xc3,0xf3,0xfb,0xe4,0x1e,0x38,0xab,0xd5,0x1b,0xd7,0xc5,0x5f,0xde,0x29,0x26,
- 0xda,0x83,0xc6,0xd2,0x83,0x78,0x87,0x8b,0x22,0x48,0x1a,0x3b,0x99,0xde,0x3f,0xa5,
- 0xda,0x5e,0xf6,0xcf,0xd0,0xd8,0xb4,0x31,0xa9,0xd6,0xc1,0x9b,0x50,0x6d,0xa0,0x75,
- 0x9b,0x14,0x8f,0xf3,0xea,0xe5,0x6b,0x87,0x9b,0x83,0xf8,0x3d,0x56,0x93,0x62,0x37,
- 0x5b,0xa6,0x9f,0x7f,0x9b,0xf2,0x15,0xe8,0x36,0xab,0x3e,0xe2,0x5e,0xdc,0x36,0x91,
- 0x98,0x65,0xcd,0x8f,0x32,0xf1,0x36,0x0a,0x3e,0x77,0x15,0xec,0xe9,0xf0,0x98,0x68,
- 0x7f,0x93,0x46,0x7a,0x3f,0xe4,0x54,0xc0,0x3a,0x51,0x15,0xca,0xeb,0xf1,0x54,0xc1,
- 0x56,0xe1,0xb9,0xdb,0xd1,0xc7,0xc6,0xa0,0x27,0x8c,0x9f,0xc9,0x41,0xe6,0x8b,0xee,
- 0x17,0x1e,0x73,0x71,0xbc,0x29,0x99,0xde,0x6f,0xbc,0xd8,0x09,0x0f,0x23,0x1e,0xc0,
- 0x45,0x70,0x88,0xe8,0x22,0xaf,0xa1,0x06,0xd8,0x08,0xf4,0xc0,0x8a,0x16,0x35,0x8e,
- 0x78,0xe0,0x00,0xe8,0xa6,0xea,0x67,0x03,0xd2,0xf4,0xf2,0x43,0xfe,0x4a,0xed,0x10,
- 0x04,0x95,0xfc,0x18,0xda,0xf7,0x37,0x8c,0x80,0xe1,0xda,0xb7,0x63,0x0c,0x37,0x46,
- 0xc0,0x58,0x1c,0x57,0x2b,0x95,0x8b,0xd0,0x4b,0xef,0x6b,0xa6,0xf5,0xcf,0xf6,0x99,
- 0xe7,0xf8,0x6f,0xa1,0x31,0x31,0x3f,0x29,0xbf,0xc7,0xc7,0x50,0x11,0xa1,0x76,0x9a,
- 0x84,0x53,0xd0,0xd8,0xba,0xe9,0xb4,0x3c,0x19,0xfb,0x03,0x90,0xa1,0x97,0x47,0x73,
- 0xa6,0xd7,0xdf,0xbc,0x65,0x3c,0x3a,0x08,0xf5,0xdc,0x35,0x50,0xa6,0x8b,0x49,0x7f,
- 0x63,0x89,0x53,0xc8,0xe3,0x5d,0x93,0x7a,0x23,0x9f,0x35,0xd0,0x39,0xae,0x0f,0x79,
- 0xaa,0xb9,0x6b,0x18,0x11,0x42,0x7a,0xfd,0xb5,0x0f,0x94,0x5f,0x9b,0x9e,0xc1,0x82,
- 0x83,0x57,0xcd,0x87,0x03,0x86,0x6f,0xd8,0x7b,0xb0,0xe9,0x43,0xe3,0x40,0xb4,0xea,
- 0x1c,0x3f,0xc8,0xe6,0xc3,0x33,0x51,0xcf,0x88,0xba,0x0b,0xf5,0xf3,0xf4,0xfd,0x39,
- 0xf4,0x43,0xa7,0xd6,0x03,0x6a,0x79,0x20,0x47,0xd9,0x1d,0xf2,0x6d,0xe5,0x0b,0x98,
- 0xc9,0xe3,0xb4,0x02,0xe0,0x4e,0x40,0x07,0xda,0x77,0xdc,0x21,0x03,0x69,0xfd,0x63,
- 0xce,0xdc,0x85,0x3a,0xc8,0x63,0xb6,0x45,0xd9,0x0a,0x78,0x3e,0x07,0x15,0x91,0x60,
- 0x63,0xfc,0x80,0x56,0x05,0x3c,0xde,0x54,0x0e,0x4f,0xa3,0x7e,0xeb,0x14,0x6c,0x3c,
- 0xad,0x7f,0xa0,0x78,0x07,0x4f,0x28,0xf5,0xa6,0x2b,0xaa,0x7a,0xf8,0x84,0x14,0xd4,
- 0x96,0x88,0x2f,0x8d,0xf1,0x09,0x33,0x08,0xde,0xa8,0x3c,0x08,0x68,0x7f,0x05,0xea,
- 0x13,0x33,0xbd,0xdf,0x4e,0x8b,0x97,0xe0,0xbb,0xac,0x51,0xba,0x3d,0x24,0xbf,0xa4,
- 0x5d,0xd6,0x68,0x35,0xca,0xc6,0xf1,0x0b,0xba,0xd9,0x74,0x9d,0x9e,0x31,0x01,0x9f,
- 0x30,0x5c,0xb1,0xa4,0x3c,0x61,0x4c,0xef,0x07,0x53,0xdb,0x26,0x5d,0xe4,0xbd,0x89,
- 0x4d,0xf1,0x32,0xd4,0x4e,0x4a,0x6d,0xd4,0xd9,0x2b,0x8f,0x41,0xc2,0xc0,0x6d,0x16,
- 0x2d,0xdb,0xa5,0x1f,0xe1,0x01,0x5c,0xff,0x66,0x7f,0x06,0xef,0x29,0x55,0x10,0x37,
- 0x51,0x1b,0x47,0xd8,0x28,0xd4,0x2b,0x1e,0x23,0xff,0x41,0xf6,0x36,0xda,0xa3,0xaf,
- 0x79,0xd5,0x79,0x4c,0xf7,0x9f,0xd4,0xb7,0x93,0xe1,0xb8,0x37,0xfd,0xf3,0x26,0x73,
- 0xbe,0x86,0x1f,0x45,0x4c,0xbb,0x86,0x33,0xb4,0x25,0x2c,0xd7,0x68,0x75,0x36,0x0d,
- 0x28,0x9d,0x9a,0x4f,0x57,0xbd,0xac,0x93,0x09,0x53,0x87,0xc5,0x1a,0xab,0x4b,0xe3,
- 0x9f,0x90,0xe4,0x86,0x7d,0x91,0xd2,0x91,0x6b,0x56,0xe7,0xfe,0x4a,0xdf,0xfd,0x40,
- 0x69,0x8c,0xdf,0x07,0x47,0xf5,0x2e,0x81,0xf8,0xe7,0x4e,0x54,0x44,0x8f,0xc4,0x4b,
- 0x93,0xf8,0x0f,0xef,0x54,0xa6,0xf7,0x5b,0x2b,0x77,0xea,0x7b,0xc0,0x3f,0xd7,0x55,
- 0xda,0x79,0x14,0x3e,0x96,0x6a,0x7e,0xc1,0x6f,0x92,0xcd,0xa6,0x97,0x0d,0x9f,0xe9,
- 0xd2,0x3b,0x23,0xd0,0xaf,0xfb,0x5b,0x50,0xb1,0xb8,0x73,0xa7,0x9f,0xc7,0xc8,0x8f,
- 0x1b,0x93,0x5a,0x63,0xff,0x52,0xfc,0xd1,0x8d,0x09,0x68,0x84,0xf9,0xfd,0xcd,0x93,
- 0x78,0xa4,0x0a,0x5c,0x5a,0xd1,0x09,0xe3,0x23,0xbd,0x51,0xb8,0x12,0xf2,0x70,0x7a,
- 0xfd,0x7b,0x72,0xc6,0xc0,0x84,0xda,0xa4,0x33,0x5a,0x36,0x0a,0x67,0x44,0x2f,0xee,
- 0xb7,0xb2,0x31,0x54,0x53,0x0d,0x3a,0x7e,0xb6,0x83,0x70,0x38,0xb5,0xfe,0x67,0xd2,
- 0xfb,0x27,0x51,0x18,0x65,0x6b,0xa1,0x0c,0xf2,0x43,0x72,0x17,0xea,0xcf,0x52,0x81,
- 0xda,0x63,0x98,0xf4,0x89,0xe9,0x30,0x50,0xd1,0xaf,0x61,0xa8,0x91,0x42,0xec,0xa3,
- 0xf4,0xf3,0x9b,0xf0,0x23,0x78,0x52,0x54,0x8e,0x23,0xc8,0x79,0x13,0x76,0x88,0xd2,
- 0xa4,0x63,0x35,0x7b,0x0b,0xf6,0xe1,0xfb,0x5a,0x47,0x1e,0x8e,0x94,0xbe,0xad,0xae,
- 0x66,0xe3,0x69,0xbc,0xd4,0x5a,0x6c,0x12,0xc0,0xf7,0xe7,0x31,0x44,0xfa,0x02,0x0f,
- 0x73,0x60,0x2f,0x43,0x5c,0xf1,0x49,0x0e,0x85,0xf5,0x43,0x54,0xe8,0xba,0x0a,0x88,
- 0x7f,0xa6,0xf7,0xc3,0x28,0xe2,0xb7,0x33,0x30,0x3b,0xbe,0x44,0x97,0x13,0x70,0x46,
- 0x0a,0x74,0x14,0xc4,0xe4,0xf7,0xe1,0x02,0x04,0x05,0xc2,0x9e,0x51,0xf6,0x06,0xf4,
- 0x0a,0xdc,0x0f,0x17,0x32,0xf8,0x07,0xce,0xc2,0x5d,0xb0,0xb0,0xc4,0x65,0xca,0x71,
- 0x98,0xc4,0xf5,0xf9,0x22,0xe2,0x67,0x71,0x0e,0x05,0xd7,0x20,0x7e,0x26,0x23,0xc6,
- 0xcd,0x80,0xa7,0x32,0xf8,0x27,0xd2,0xfe,0xaa,0xf2,0x8b,0xc2,0x00,0xc1,0x9e,0xff,
- 0x06,0x87,0x50,0x8d,0x3b,0xa3,0x45,0x23,0x2d,0xe7,0x63,0x9e,0x90,0x4b,0xeb,0x54,
- 0x62,0x87,0xa2,0x01,0xc3,0xa9,0xc9,0x2c,0x83,0x7f,0x94,0xe5,0xa1,0x75,0x03,0x9e,
- 0x56,0x75,0x2b,0x9b,0x8b,0xc0,0xa6,0xca,0x28,0xf9,0x3e,0xea,0x87,0xfd,0xe2,0x9e,
- 0x90,0xfa,0x90,0x63,0xae,0x78,0xbd,0x09,0x77,0x54,0x54,0x0e,0xa5,0xed,0x4b,0x89,
- 0xe2,0x83,0x1f,0xc2,0x0e,0x43,0x3d,0xce,0xbe,0xc1,0x36,0xc2,0x7c,0xe3,0xd1,0x61,
- 0x76,0x4e,0x79,0x01,0x3e,0xd3,0xaa,0x0e,0x7b,0x6a,0x60,0x23,0x94,0x19,0x91,0x61,
- 0x96,0xfe,0x79,0x81,0x2b,0xc5,0xb1,0x35,0xde,0xd2,0x36,0x75,0x59,0x98,0x84,0xca,
- 0xb6,0x75,0xcb,0xc2,0x27,0x62,0xcf,0x7a,0xe7,0x2d,0x96,0xef,0x7d,0xa0,0x38,0xf6,
- 0x08,0x9e,0xca,0x5b,0x16,0x6e,0x4a,0x5f,0xdf,0xc7,0x43,0xe2,0x0d,0x3d,0xc0,0x5d,
- 0x16,0xec,0xd1,0x1b,0x78,0x5e,0x58,0x4e,0x8a,0x3e,0xfd,0x69,0x3a,0x42,0x88,0x28,
- 0x90,0xe7,0x1c,0x90,0x0b,0x58,0x1a,0xff,0x38,0x07,0x63,0x68,0xd6,0x09,0xe4,0xe0,
- 0xf7,0xe2,0x0d,0xb6,0x55,0x45,0xa5,0xe5,0x68,0xbf,0x6a,0xd1,0xac,0x17,0x8d,0xf0,
- 0xf3,0xf0,0x53,0xb2,0xef,0xef,0xe6,0xa6,0xf1,0x06,0xe2,0xa5,0x0f,0xa0,0xba,0xbd,
- 0xe0,0xb8,0x5c,0x13,0x3b,0xe4,0x0f,0x7c,0x6e,0x16,0xc1,0x9e,0xd7,0xf4,0xc6,0x36,
- 0x27,0x1e,0x81,0xd7,0x50,0xd1,0x39,0x37,0xcb,0xb9,0xd2,0xf4,0xfa,0xd7,0x41,0xa9,
- 0x1e,0x01,0x8f,0x82,0x6a,0x41,0x87,0x88,0xdf,0xa3,0x91,0x60,0x44,0x00,0xf5,0x43,
- 0x87,0xa3,0x14,0xd6,0x83,0xa7,0x0b,0x8f,0x14,0xa4,0xd7,0x93,0xdf,0x31,0x78,0x7c,
- 0x5b,0x61,0x8f,0x51,0x51,0xc8,0x14,0xe8,0xd0,0xf5,0x25,0xbc,0x90,0x75,0x41,0x87,
- 0xe6,0x33,0x38,0xe2,0x3d,0xa3,0x43,0xf3,0x18,0x78,0x84,0x49,0xd3,0xd7,0x97,0xe4,
- 0x20,0x68,0x34,0x50,0x45,0x45,0x51,0xdb,0xac,0x33,0x3c,0x29,0x20,0x84,0x3f,0x44,
- 0xab,0x81,0x82,0x81,0x1e,0x8d,0xc1,0x1f,0x62,0xb9,0x19,0xfc,0xa3,0xec,0xe4,0xef,
- 0xa1,0x19,0x2a,0x88,0xb2,0x39,0xfa,0x67,0xf1,0x69,0xf9,0x0f,0x3b,0x77,0xe2,0x0f,
- 0x1d,0x5c,0x86,0x88,0x77,0x2e,0x1c,0x32,0xfc,0xed,0xce,0xad,0xb2,0xb7,0x6b,0xfa,
- 0x7d,0x9f,0x86,0x9d,0xb0,0x5b,0xa0,0x35,0xff,0xb4,0x3a,0xe2,0x3e,0x0f,0x07,0x97,
- 0xcf,0x47,0x35,0xc5,0xd0,0xbe,0x87,0x50,0x18,0x61,0x67,0xe1,0x45,0x63,0x7e,0x54,
- 0x3d,0x93,0xb6,0x5f,0x5e,0xdc,0xc4,0x27,0x5b,0x03,0x04,0xaa,0x25,0x18,0x36,0x02,
- 0xe0,0x64,0xcd,0xba,0x81,0x88,0x54,0x6b,0x00,0x19,0xe0,0x24,0xc7,0x23,0x20,0x3b,
- 0xba,0xa6,0xf7,0xbf,0x0e,0x37,0x72,0xc4,0x3f,0xf1,0x82,0x58,0x93,0x57,0xff,0x81,
- 0xe2,0x11,0xde,0x24,0xab,0xa0,0x65,0xd9,0xce,0xc7,0x50,0x8d,0x1c,0xe5,0x9e,0x0e,
- 0x1e,0x63,0x3c,0x83,0x7f,0xbe,0xb7,0x24,0xdc,0x69,0xf4,0x9c,0x5b,0x5c,0x82,0xcb,
- 0xf2,0x30,0x78,0x4d,0xee,0x73,0x28,0xee,0x0e,0x11,0x0b,0x39,0xfc,0xeb,0xf3,0x3d,
- 0xe1,0xae,0x98,0xb9,0xc2,0xdf,0xe6,0x48,0xeb,0x9f,0x52,0x49,0xc1,0xcf,0xf6,0x29,
- 0xf3,0xea,0x6f,0xb8,0x1f,0x87,0x47,0x60,0x5e,0x82,0xfb,0xc3,0xb3,0x40,0x36,0xb7,
- 0x99,0xeb,0x61,0xbb,0xa2,0x3f,0x00,0x77,0x93,0x69,0xe3,0x46,0xfa,0xfe,0x30,0x1b,
- 0x5e,0x16,0x37,0x9e,0x76,0xd5,0xa9,0x3f,0x82,0xb7,0x22,0x37,0xbd,0x6d,0xac,0x96,
- 0x0b,0x10,0x11,0xf9,0xf1,0x43,0x46,0xfc,0x33,0x80,0x82,0x73,0xb5,0xec,0x48,0xfb,
- 0x5f,0xbc,0x70,0x97,0xf2,0x3e,0xd4,0x92,0x51,0x43,0x6b,0x1e,0xaa,0x3d,0xb1,0x89,
- 0xf0,0x0f,0x5a,0x7c,0x73,0x23,0xae,0x0f,0x3f,0x83,0xc2,0x52,0xc4,0x3f,0x69,0xff,
- 0xcb,0xc8,0x19,0x93,0xfe,0x49,0x2c,0x4c,0x16,0x4c,0xc8,0x97,0xe0,0xf2,0xe3,0x37,
- 0x25,0x1d,0x37,0xca,0x41,0xbc,0x7f,0xf5,0xa8,0x6b,0xa2,0xb9,0xa2,0xfd,0xe8,0xe6,
- 0xea,0xa4,0xeb,0xbc,0x3c,0x9c,0xc1,0x3f,0x85,0xcf,0xed,0x5c,0xa3,0x97,0x0e,0xf2,
- 0xaf,0x87,0x4f,0x29,0x7f,0x8c,0xde,0xf0,0x2a,0x5f,0x1d,0x9e,0xa5,0xff,0x13,0x2f,
- 0x7d,0x3b,0xef,0xaf,0xc2,0x57,0x85,0x1e,0xa8,0x2b,0x1d,0x54,0xff,0x3e,0x7c,0x26,
- 0xfd,0xfb,0x3e,0x04,0x5b,0x17,0xad,0x85,0x72,0xf3,0x33,0xab,0xd8,0x29,0x63,0x1f,
- 0x9a,0x2d,0xc7,0xbd,0x6c,0x56,0xd3,0x5a,0x98,0x67,0x2e,0x5e,0xc5,0x9c,0x5d,0x61,
- 0xb8,0x7b,0x40,0x5d,0xe5,0x4e,0x6a,0xd3,0xeb,0xbf,0xa2,0xf8,0x0c,0xeb,0x6c,0x5f,
- 0x7e,0x22,0xaf,0x86,0x0d,0x69,0x7b,0x58,0xf9,0x30,0x6f,0x60,0xf9,0xfc,0x61,0x53,
- 0x1f,0x96,0x1a,0x58,0x81,0x16,0x36,0x96,0x8f,0xab,0x75,0xec,0x64,0x7a,0x7f,0xea,
- 0x33,0x9f,0xd6,0x5e,0x36,0x6a,0xfb,0x5d,0x7d,0xec,0x77,0xd2,0xe5,0x64,0x63,0xd2,
- 0xb1,0x55,0x76,0xc1,0x11,0xf1,0x7c,0x12,0xfd,0x6b,0x14,0xcc,0xc0,0xb0,0xeb,0x20,
- 0xe2,0xdb,0xe9,0xe7,0x11,0x90,0xd4,0xdf,0xd3,0xeb,0x13,0x05,0xfe,0xce,0x31,0xf3,
- 0x7d,0xbd,0x6e,0xc0,0x55,0xb3,0x63,0x4c,0xbc,0xc3,0x1b,0x06,0x50,0x9f,0x8f,0x89,
- 0x8f,0xf0,0x94,0xab,0xf7,0xf3,0x19,0xfb,0xdb,0xa1,0x4d,0xc0,0x31,0xa8,0x1e,0xce,
- 0x1f,0x97,0x1b,0xe1,0x08,0x2b,0x33,0x9d,0xc3,0x72,0x95,0xb2,0x29,0x56,0x64,0xde,
- 0x36,0x5e,0xd6,0xc0,0x8e,0x1a,0x53,0xf8,0x67,0xfa,0xfa,0x7e,0xf8,0x1b,0x78,0xc6,
- 0xa8,0x30,0x13,0x71,0xd9,0xc9,0xba,0x59,0x85,0xc9,0x0f,0x22,0xec,0xe9,0x46,0xd8,
- 0xc3,0xfb,0x50,0x23,0xad,0x37,0xb7,0x23,0xfe,0x69,0x1a,0xb7,0xe1,0x1f,0x6f,0xe9,
- 0x63,0x3c,0x64,0xe6,0xf5,0x32,0x1f,0x74,0x02,0x5d,0xcf,0x7c,0xe2,0x19,0xa8,0x48,
- 0xe0,0xf5,0x15,0xfc,0x79,0xe6,0x31,0xbb,0xe3,0x1e,0x1b,0xfe,0x51,0x40,0xec,0x06,
- 0xef,0x70,0x89,0xbf,0x62,0x25,0x74,0x72,0xaf,0xe9,0x0d,0xfc,0xad,0x93,0xed,0x80,
- 0x1e,0x73,0x54,0x5b,0xef,0x84,0xcd,0x53,0xf8,0xa7,0x70,0x7a,0x3f,0x88,0xfc,0x15,
- 0xf0,0x6b,0xdc,0xed,0xb7,0xc5,0x67,0x54,0xf2,0x63,0x70,0x93,0xb9,0xe4,0x59,0xd9,
- 0x47,0x11,0x89,0xc4,0x86,0x5e,0xd9,0x17,0xb9,0x00,0x01,0x0b,0xff,0xc8,0xd3,0xfb,
- 0x33,0x76,0xed,0x44,0xeb,0x87,0x29,0x90,0x73,0x70,0xd7,0x45,0x14,0xae,0x3b,0x5b,
- 0x3a,0x09,0x6f,0x41,0xed,0xf0,0x52,0x3f,0x3a,0xf2,0x63,0x53,0xf8,0x27,0x37,0x83,
- 0x37,0x7e,0x05,0x6f,0x56,0x7e,0x7b,0x70,0xc9,0x59,0xf9,0x20,0xfa,0xdf,0xd5,0xa6,
- 0xef,0xa4,0x5a,0xd3,0x74,0x0c,0x1a,0x75,0xdf,0x73,0x32,0xae,0x8f,0x67,0x41,0x9e,
- 0xf3,0x7e,0x1b,0xfe,0x31,0xb5,0x0f,0x71,0x11,0xaa,0x4f,0xf1,0x3f,0xb2,0x83,0x20,
- 0x0c,0xfd,0x0b,0x5c,0x0b,0xcf,0xd1,0xba,0x9d,0x55,0x31,0xde,0xcb,0x7e,0x06,0xeb,
- 0xa3,0x1e,0xc1,0x11,0x1f,0xa6,0x7f,0xdf,0x44,0xce,0x10,0xee,0x21,0xaf,0xd9,0x8a,
- 0xfe,0xb8,0x58,0xbf,0xc2,0x9b,0xe0,0x6e,0x56,0x6e,0x76,0xea,0xbe,0x0e,0x47,0x31,
- 0x73,0x1a,0x4f,0x83,0xee,0xe7,0x01,0x96,0x89,0x0f,0x98,0x33,0x7f,0x0a,0x91,0x45,
- 0x9e,0x7e,0xbc,0xc9,0x06,0xde,0x2d,0x9e,0x36,0xf9,0x66,0x5c,0x76,0xf4,0x67,0xa3,
- 0x8e,0xb8,0x7b,0x17,0xc7,0xeb,0x75,0x3c,0x35,0x9e,0xc6,0xc3,0xa6,0xf4,0x5b,0x78,
- 0x43,0x5c,0x6d,0xfa,0xe2,0xf2,0x2e,0x30,0x23,0xf5,0xe6,0x86,0xa8,0x3c,0x03,0x8e,
- 0x18,0xc1,0xbd,0x05,0x71,0xd9,0xa7,0xbc,0x1f,0xeb,0x25,0x43,0x3c,0x7c,0xcb,0xf4,
- 0xfd,0x63,0x52,0x03,0xfc,0x21,0x86,0x68,0x67,0x95,0xdc,0x00,0x93,0x7c,0xa1,0xb9,
- 0xf4,0xa4,0x7c,0x0e,0x2e,0xc7,0x1a,0x45,0xde,0xb8,0x7a,0xbf,0xfe,0x97,0x4d,0x8d,
- 0xe6,0x7c,0x5c,0x9f,0xb4,0xfe,0x19,0x84,0x9f,0xc1,0xfb,0x46,0xfd,0xcb,0xd6,0xf7,
- 0x78,0x58,0xab,0x4d,0xa0,0x5a,0xd3,0xe1,0x08,0xda,0x47,0x3c,0x32,0x26,0x21,0xfe,
- 0x04,0x44,0x44,0x19,0xfc,0x63,0xe6,0x38,0xe0,0x99,0xcf,0x95,0x8d,0xab,0xe3,0x0f,
- 0xdf,0xaf,0xad,0x1f,0xd4,0x87,0xf9,0xcc,0x8a,0x72,0xfc,0x05,0x7d,0x42,0xed,0x65,
- 0x6f,0x89,0x3d,0x08,0xed,0xf8,0x5e,0xc4,0x3f,0xd3,0xfb,0x21,0x99,0xb3,0xa4,0x6c,
- 0x3b,0xf3,0x0e,0xe2,0x8f,0xee,0x54,0x62,0x52,0xf9,0x60,0x1b,0xaa,0xe5,0xbc,0x30,
- 0xf8,0x62,0x72,0x9c,0xbd,0xa6,0x69,0x64,0xc1,0x6b,0x98,0x3f,0x13,0xff,0x91,0x82,
- 0xd2,0x8f,0xc5,0xbc,0xf7,0xd4,0xd5,0x8e,0xdb,0x8d,0x9d,0xa2,0x34,0xe4,0xf8,0x4b,
- 0x0d,0x61,0x8f,0xa8,0xdc,0xae,0x52,0x60,0xe4,0x39,0x51,0x96,0xf4,0xae,0x66,0x77,
- 0xda,0xe2,0x3f,0x4e,0xf6,0x0e,0xac,0x1e,0x55,0xe3,0x65,0x05,0xee,0xd3,0x50,0x63,
- 0x16,0x5c,0x23,0x97,0xeb,0xfd,0x9f,0x73,0xc6,0x36,0x5d,0x53,0x34,0xd4,0xde,0x5b,
- 0xe8,0x37,0x9c,0x7e,0xf9,0xea,0x4c,0xfc,0xe7,0x87,0xbb,0xe0,0x7f,0x90,0xfe,0x19,
- 0xef,0x7c,0x61,0xfd,0x5b,0xd0,0x38,0x98,0x1f,0x6d,0x9e,0x84,0xef,0x5e,0x65,0x01,
- 0xc5,0x31,0xed,0x92,0x62,0xed,0x9f,0xe1,0xdc,0xe9,0xf5,0x21,0xfc,0x73,0x18,0x82,
- 0x03,0xf3,0xf7,0x4a,0x63,0xe2,0x90,0x52,0x6b,0xaa,0x64,0xf8,0x2e,0x4a,0x0d,0x31,
- 0x5c,0x76,0x72,0xdc,0x82,0x80,0xc2,0xe1,0x4c,0xfc,0xe7,0xa1,0xc7,0xe1,0x01,0x69,
- 0xb5,0x39,0xeb,0xde,0xce,0x06,0xf8,0x47,0x2b,0xfe,0x13,0x38,0x05,0x7f,0x64,0x95,
- 0xc2,0xb1,0xaa,0xe9,0x14,0xfa,0x5f,0x08,0x84,0x56,0xb1,0x0b,0xe9,0xf5,0x14,0xf0,
- 0x22,0x5b,0x2b,0x2a,0x47,0x1c,0xf5,0xec,0x47,0xc6,0x5a,0xc4,0x3f,0xea,0x9d,0xee,
- 0x5f,0xc1,0x3e,0x73,0x7e,0x8c,0xe3,0xfb,0x2e,0x42,0x20,0xa4,0x53,0xfc,0xc7,0x86,
- 0x7f,0x86,0x38,0x7d,0x86,0xe8,0xb4,0xa2,0xa3,0xd1,0xa4,0x8f,0xa0,0xb6,0x19,0xea,
- 0xda,0x03,0xbe,0xed,0x6d,0x75,0x9e,0x21,0x05,0x85,0x71,0x87,0x3d,0xfe,0x93,0x9c,
- 0xf9,0xa8,0xf1,0xaa,0x19,0x14,0x08,0x7b,0x7a,0xb4,0x57,0x97,0x23,0x5a,0x7b,0x5a,
- 0x3e,0x2f,0x5d,0x32,0x1b,0xc3,0x84,0x7f,0x72,0x2e,0x41,0x63,0x5f,0x76,0xfc,0x07,
- 0x92,0x30,0x51,0x53,0xaf,0x15,0x40,0x51,0x8c,0x4f,0xf0,0xe7,0x29,0xfa,0x61,0x4a,
- 0xa3,0x3c,0x08,0xae,0x0e,0x74,0xbb,0x26,0x60,0x16,0x9b,0xdf,0x65,0xc3,0x3f,0x5c,
- 0x1b,0x41,0x6b,0x58,0x4f,0xa0,0xa5,0x8b,0x1f,0xc2,0xf5,0x55,0xa3,0xcd,0x78,0x24,
- 0x37,0xd8,0xba,0x49,0x43,0xfb,0x78,0x96,0xa3,0x7d,0xff,0x81,0x3d,0xfe,0xa3,0x7c,
- 0x19,0xcd,0x6e,0xc5,0x1d,0x87,0x29,0xec,0x73,0xa8,0xb5,0x76,0x19,0x27,0xfc,0xf3,
- 0x94,0x15,0xff,0x69,0xfa,0xb1,0xb1,0x9f,0x21,0xfe,0xf9,0x91,0x2d,0xfe,0x53,0x22,
- 0x55,0xd2,0xf5,0xed,0x91,0x28,0xdb,0xc9,0xd6,0x41,0x85,0xe1,0x88,0xa2,0xff,0xb5,
- 0x4e,0xaa,0x32,0x16,0x47,0xdd,0xe5,0x9c,0xe2,0x15,0xdc,0x1e,0xff,0xe1,0x4a,0xb9,
- 0xd2,0xe1,0xf5,0xb6,0x5d,0xed,0x1e,0x50,0x76,0xae,0x9b,0xe7,0x6b,0x53,0x35,0x36,
- 0x18,0xdb,0xe6,0xf5,0x19,0xaa,0xfb,0xd5,0xae,0xd8,0x6e,0xaf,0xde,0xb6,0x4e,0xb3,
- 0xf9,0x5f,0x75,0xf9,0x21,0x48,0xe8,0xf5,0xdc,0x19,0x9e,0x11,0x43,0x30,0x1e,0xe0,
- 0xb7,0x0b,0xc4,0x3f,0x11,0x1d,0xdf,0x37,0x5c,0xe4,0xed,0x9a,0xd0,0xe3,0x1c,0x3d,
- 0xa6,0x37,0xd3,0xfa,0xe7,0xe4,0xa7,0x4f,0xb0,0x4f,0x20,0xb8,0xd8,0xb5,0xb9,0x73,
- 0x24,0xf6,0xc1,0xbc,0x85,0x6d,0xbe,0xe3,0xe1,0x73,0xdb,0x3f,0xf1,0xa2,0x5b,0x71,
- 0x3c,0x3c,0x42,0x11,0xd7,0xc3,0x78,0x2a,0x83,0x7f,0x4a,0x72,0xce,0xc1,0x3f,0x48,
- 0x8d,0x2d,0xfc,0x38,0x2f,0xdf,0xfe,0x1a,0xf9,0x6b,0xc3,0x72,0x4d,0xfb,0x21,0xbd,
- 0xda,0x58,0xf2,0x4b,0xf9,0x9c,0x82,0x40,0xa2,0x05,0x35,0x76,0x26,0xfe,0xb3,0x5a,
- 0x5b,0x01,0x7d,0x52,0x95,0x62,0xc5,0x7f,0x22,0x73,0xab,0x4a,0x54,0x08,0x7b,0x8d,
- 0xc8,0xbc,0x0a,0xe1,0xe8,0x64,0xa7,0xc1,0x02,0x42,0xe1,0xb0,0x2d,0xfe,0x73,0x4b,
- 0x4b,0xc9,0x43,0x84,0x76,0x8a,0xdc,0xca,0xce,0x8e,0x3c,0xdf,0xe7,0xd5,0x28,0x53,
- 0xb4,0x6d,0x35,0x15,0x06,0x2a,0xa2,0x41,0xa3,0xa3,0xd0,0x47,0x42,0x26,0xfe,0x53,
- 0x32,0x73,0xa7,0xb1,0x5f,0xaf,0x32,0xbc,0x51,0x40,0xd8,0x53,0x8a,0xcb,0xbe,0xd9,
- 0x51,0x9e,0xfb,0x54,0x7b,0x45,0x0b,0x2e,0xec,0x08,0x5b,0x97,0x0a,0x0d,0xd9,0xe3,
- 0x3f,0xbf,0x81,0xd7,0x63,0x41,0x43,0x89,0x4a,0xf4,0x7b,0x05,0x11,0xd6,0xca,0xe5,
- 0xf0,0x1e,0xac,0x5e,0xe5,0x7c,0x14,0x3d,0xa6,0x43,0xa5,0xc1,0x90,0xcf,0x1e,0xff,
- 0x19,0x95,0x76,0x82,0x15,0xff,0x21,0x6b,0x8e,0x42,0xbb,0x05,0x14,0x5f,0xef,0xc0,
- 0x7f,0xb8,0xb5,0x6c,0x10,0xce,0x6b,0xc1,0xd6,0xac,0xf8,0x8f,0x57,0x8b,0x19,0x13,
- 0x2c,0xc0,0x9d,0x50,0x96,0x54,0x4e,0x36,0x05,0x60,0x06,0xc2,0x4e,0x18,0x5f,0x54,
- 0x5b,0x8c,0x1b,0x4f,0x87,0x09,0x25,0xa8,0x39,0xc3,0x59,0xf1,0x9f,0x9b,0xe0,0x43,
- 0x28,0x8b,0x3a,0x10,0xff,0x68,0x0f,0x1a,0x65,0x5b,0xd4,0x91,0x36,0xaf,0xfe,0x3c,
- 0xb0,0xd8,0x91,0x1e,0x76,0x23,0x42,0xfd,0x2a,0x74,0x1d,0xec,0xf1,0x9f,0x9c,0x3f,
- 0x8b,0x6e,0x6f,0xaf,0x20,0xd0,0xb2,0x12,0x1e,0x36,0xd0,0xfa,0xd4,0xe5,0x56,0x41,
- 0x35,0x5a,0x7c,0x75,0x41,0xae,0xb3,0x63,0x07,0x54,0x99,0xfc,0x06,0x5b,0xfc,0x27,
- 0xb6,0xa8,0x18,0xb6,0x0b,0x2f,0x7e,0xa4,0x6e,0xa7,0x99,0x23,0x24,0x43,0xfd,0x86,
- 0x67,0x16,0xec,0xa3,0x40,0xca,0x6a,0x36,0x4b,0x7f,0x12,0x2a,0x13,0x79,0xab,0xdc,
- 0x99,0xf8,0x4f,0x4f,0xe4,0x2a,0x78,0x57,0x7c,0x2b,0xe9,0xac,0xfb,0xd2,0x17,0xc5,
- 0x3f,0x89,0x05,0x49,0x95,0x60,0xcf,0x4b,0xc9,0x1b,0x42,0xae,0x09,0x2b,0xfe,0xd3,
- 0x38,0xe2,0x5b,0x2d,0xdb,0xe2,0x3f,0x9f,0xde,0x89,0x0f,0xf9,0x9c,0x81,0xda,0xf5,
- 0x83,0x18,0xa1,0xc1,0xee,0xb8,0x84,0xf8,0x47,0xc2,0x15,0x43,0x20,0xa4,0xbd,0x0f,
- 0xc1,0x53,0x9b,0x62,0xf6,0xf8,0x8f,0x74,0xc2,0x7c,0x25,0x7e,0x53,0x72,0x03,0xe1,
- 0x9f,0x97,0x45,0x75,0x32,0xff,0x24,0x01,0xa1,0x8e,0xfa,0xbb,0xf1,0xfe,0x41,0x7e,
- 0x24,0x7a,0x73,0xd2,0x79,0x1e,0x81,0x62,0x06,0xff,0x7c,0x1f,0xba,0xdc,0xfa,0x28,
- 0x3f,0xcb,0x36,0x40,0x57,0xbc,0xd4,0xe0,0xf9,0xe1,0xbb,0x60,0x1f,0x83,0x95,0x79,
- 0xed,0xee,0xd9,0xe2,0xc9,0x58,0x65,0xc2,0x31,0xce,0x9e,0xee,0x9a,0xbe,0x3f,0x88,
- 0x2d,0x03,0x5b,0x42,0x7f,0x13,0x41,0x37,0x6d,0x16,0x6c,0xd2,0xd1,0x5f,0x6b,0x67,
- 0xa7,0x60,0x5f,0xc9,0xbc,0x96,0xee,0x55,0xac,0x58,0x3c,0x19,0x9a,0x6f,0xf6,0xac,
- 0x62,0x46,0x26,0x5e,0x5d,0xfc,0x0a,0x47,0xb7,0xcb,0x28,0xf1,0xbb,0x77,0x41,0x87,
- 0xd0,0x43,0x11,0x8d,0x2d,0x95,0xf6,0x38,0xbd,0xcb,0xf2,0x34,0x54,0xb2,0x3b,0x50,
- 0xff,0xb4,0x65,0xc7,0x7f,0x3a,0xd1,0xc7,0xab,0x17,0x68,0xbf,0x1a,0xf8,0xa1,0xb6,
- 0xc0,0x3d,0x4b,0xb6,0xa2,0xda,0xc4,0xe7,0x5f,0x86,0xef,0xeb,0x83,0xf7,0xe1,0xe6,
- 0x61,0xd4,0x3f,0x7f,0x9b,0x89,0xff,0xc0,0x87,0x62,0x62,0x51,0x30,0x8a,0xeb,0xb3,
- 0x8b,0x9d,0x0d,0xbd,0xd8,0x5e,0xd5,0x25,0x2d,0x1f,0x3c,0x80,0xfe,0xc5,0x8c,0x3e,
- 0xf4,0x40,0x0f,0x88,0xe0,0xe0,0xd2,0x98,0x1c,0x4b,0xef,0x1f,0x49,0x3b,0x07,0x43,
- 0xb0,0x40,0x38,0xdf,0x28,0x9b,0x44,0x6f,0xa2,0x9a,0xc2,0xb0,0x97,0x70,0x3d,0xf1,
- 0x43,0xeb,0x93,0x2f,0x45,0x2e,0x2b,0x8d,0x03,0xce,0xd3,0xb6,0xf8,0x8f,0x50,0xbe,
- 0x26,0x4d,0x88,0xed,0x5b,0xd1,0xc8,0x8e,0x21,0xcc,0xad,0x58,0x55,0xb0,0x95,0xbd,
- 0xcb,0x0f,0x28,0x73,0x29,0x10,0xf4,0x36,0x85,0x46,0x4d,0xc4,0xcf,0xf6,0xf8,0xcf,
- 0x5c,0xbe,0x35,0xe2,0x89,0x78,0xe3,0x6c,0x17,0x8b,0x44,0x3c,0xf7,0xa0,0xe3,0x36,
- 0x26,0x0e,0x50,0xfc,0x79,0x37,0xde,0xe1,0x19,0xba,0x5e,0x30,0x3b,0xfe,0xc9,0x85,
- 0x1e,0xd0,0x1f,0xe0,0x7e,0xf7,0x10,0x08,0xdd,0x6b,0x5c,0x0d,0xdb,0x11,0x28,0x02,
- 0xea,0x9f,0x1a,0xf7,0x51,0xd8,0xa3,0xe3,0xf5,0x1c,0xec,0xf1,0x9f,0xe5,0x5d,0x11,
- 0x16,0x88,0xa2,0xd9,0x7d,0x1c,0x0e,0x29,0x7e,0xc3,0xf5,0x50,0xb3,0xb5,0x1f,0x5a,
- 0x29,0x50,0x16,0x79,0x9f,0x37,0x9a,0xb8,0x3e,0x76,0xfc,0x33,0x62,0xdc,0x2f,0x35,
- 0x88,0xa5,0xe3,0xf2,0x64,0xf9,0x0b,0x5a,0x23,0x39,0x26,0x93,0x70,0x19,0x3e,0x75,
- 0xeb,0xd2,0x71,0x66,0xb6,0x5c,0x46,0xfc,0x33,0x3f,0x69,0xc7,0x3f,0x39,0x1f,0xc1,
- 0xef,0x16,0x2c,0x1c,0xcc,0x3f,0x57,0x76,0x69,0xd1,0xfb,0xd1,0x9b,0x47,0x9c,0x1f,
- 0x77,0xee,0x1d,0x18,0x8a,0xfa,0xe7,0xf8,0x3e,0x56,0xaf,0x86,0x9f,0x47,0x17,0x8c,
- 0x3b,0xc7,0x55,0xbf,0x2d,0xfe,0x93,0xd4,0xbb,0xfd,0x55,0x08,0xfb,0x11,0xdf,0xd2,
- 0x6a,0xcc,0x3b,0x87,0x8a,0x3a,0xa2,0xe0,0x17,0xf4,0x1c,0xa3,0xfc,0x94,0x27,0xc1,
- 0x6b,0xc3,0x7a,0xc6,0xff,0xca,0x31,0xc5,0x0e,0xcf,0xf2,0x44,0x6b,0x20,0x77,0xa8,
- 0x6b,0x47,0xa9,0x2f,0xb1,0x28,0xc0,0x72,0x94,0x88,0x84,0x3e,0x5b,0x8d,0xdb,0x17,
- 0xdf,0xa1,0xeb,0x78,0x3d,0x6b,0xb2,0xc5,0x7f,0x3a,0x69,0xd1,0xba,0x78,0x3c,0x3c,
- 0x26,0x6e,0xc2,0xd5,0xc8,0x8b,0x3b,0xf0,0xfe,0x1d,0x15,0x49,0x88,0x23,0x10,0x7a,
- 0xaa,0x4b,0x37,0xf1,0xa7,0xf1,0xa7,0xf5,0x8f,0x31,0xf3,0x9d,0x12,0xf4,0x17,0x86,
- 0x9d,0x7d,0xb8,0x6d,0xde,0x57,0x82,0x26,0x5a,0xdb,0x9d,0x30,0x10,0x0b,0xac,0x40,
- 0xa1,0x80,0xbf,0x2f,0x7a,0x09,0x1a,0x69,0xe9,0xfd,0x93,0x94,0xe2,0xfc,0x2d,0xe9,
- 0xe6,0x64,0xc1,0x05,0xf9,0x92,0x7e,0x59,0xcc,0x1f,0x2e,0x18,0x6f,0xfe,0xd0,0xb8,
- 0x04,0xd7,0x21,0x8c,0x2c,0x9a,0xe4,0xb8,0x3e,0xa3,0x68,0xdf,0x27,0xd2,0xfb,0xc7,
- 0xd4,0x62,0x88,0x76,0x9e,0x1b,0xbe,0x6e,0x8b,0xec,0x93,0x8f,0x14,0x06,0xcc,0x25,
- 0x7e,0xd9,0x87,0x16,0xbf,0xde,0x50,0x10,0x5f,0xa1,0x63,0x12,0xa0,0xff,0xa2,0x2d,
- 0xfe,0x93,0x53,0x6a,0x6c,0x3a,0xee,0x39,0xa5,0xee,0x6b,0xaa,0x84,0xee,0x3b,0x3c,
- 0xbf,0xe2,0xbf,0x7f,0xb0,0x72,0xd1,0x1b,0x77,0xd6,0x9e,0xd8,0xf8,0x7b,0xc7,0xfc,
- 0xe1,0x43,0xed,0xb5,0xc9,0xfc,0xdf,0xb3,0x80,0x0d,0xff,0x18,0xc6,0xc3,0x39,0xe5,
- 0xfd,0xaa,0xbf,0xe9,0xa8,0xb4,0xa3,0xc3,0x93,0xdc,0x5a,0xc7,0xe6,0x1a,0x61,0x31,
- 0x77,0xc4,0xb1,0x9f,0x81,0xf2,0x58,0x21,0x7e,0xaa,0xfb,0xb3,0xe2,0x3f,0xfe,0xa6,
- 0x47,0xb6,0xce,0x41,0x35,0xe2,0xf8,0x22,0x3c,0x19,0x2b,0x4b,0xc2,0x8d,0xe8,0x61,
- 0x6d,0xe9,0xba,0x7e,0x44,0xfd,0x96,0x23,0x28,0x6d,0xea,0x98,0xf1,0x76,0xde,0x6a,
- 0x56,0x62,0xc3,0x3f,0x30,0xfc,0xeb,0xc2,0x9a,0x57,0xfe,0x4a,0x67,0x43,0xb1,0x67,
- 0x62,0x7e,0x52,0x74,0x0a,0xfa,0x83,0x75,0xa3,0x05,0x7e,0x55,0x81,0x8f,0x75,0x3f,
- 0xbe,0x91,0xea,0xce,0xe0,0x9f,0xdb,0xb6,0x28,0xbf,0xd3,0x6e,0x1a,0xc4,0x45,0x68,
- 0x80,0xb7,0x28,0x3e,0x76,0x4e,0x9e,0xa4,0x40,0x87,0x99,0x1f,0x57,0xcf,0xc1,0xef,
- 0x08,0x3f,0xef,0xee,0xb4,0xe3,0x9f,0x24,0x7e,0xa4,0xa4,0x9d,0x68,0xfd,0x29,0x70,
- 0xdd,0x8b,0xfa,0x9f,0x60,0xf9,0x83,0x71,0x79,0x03,0x2e,0x9d,0x85,0xcf,0x2b,0x6c,
- 0xf1,0x9f,0xb8,0xb2,0x36,0x54,0x6a,0x16,0xa0,0x3f,0x85,0xd0,0xb5,0xb2,0x3f,0xef,
- 0xa3,0xa6,0xc7,0xe1,0x39,0xf4,0xa7,0xf8,0x37,0x51,0xc3,0xfc,0x0c,0x11,0x51,0xf7,
- 0xbd,0x2c,0x90,0xfe,0x7d,0x4d,0xf8,0x01,0xec,0xe8,0x98,0x77,0xd6,0x41,0xd1,0x9e,
- 0x7d,0x66,0x65,0x32,0xef,0x5b,0xec,0x2a,0xfd,0xa5,0xae,0x39,0x14,0x08,0xba,0x04,
- 0x6b,0xc3,0x88,0x88,0xea,0x10,0x1f,0x4e,0xaf,0x7f,0x6b,0xf1,0x80,0xde,0x89,0xfe,
- 0x85,0xa3,0x06,0x8d,0xfe,0x36,0xe1,0xfb,0x32,0x02,0xa1,0x07,0xa1,0xb7,0xc5,0x4b,
- 0x2f,0xbe,0xd4,0xb3,0x1d,0xf4,0x16,0x84,0x9a,0x6e,0x5b,0xfc,0x67,0x3f,0xfb,0x10,
- 0x6e,0x12,0x05,0xa3,0x0f,0x27,0x94,0x0b,0x52,0x30,0xe6,0x8a,0xc9,0x5e,0xb8,0x14,
- 0x5a,0xf8,0x50,0x41,0x52,0xbe,0xa8,0x1f,0x35,0xe2,0x78,0x44,0xad,0xb7,0xe3,0x1f,
- 0x63,0x02,0x3c,0xee,0x02,0x11,0x4e,0x1a,0xa3,0x88,0xee,0xd0,0x0c,0x11,0xec,0x09,
- 0x92,0x87,0xbe,0x0d,0x26,0x78,0x50,0xcb,0xca,0x7f,0x59,0xf8,0x47,0x0a,0x50,0xfe,
- 0xab,0x9c,0xaf,0x83,0x94,0x00,0x87,0xf8,0xb4,0x00,0xee,0x56,0x1e,0xcd,0x8e,0xff,
- 0xa0,0x91,0xdd,0x6e,0xac,0x88,0x3a,0xe6,0xc2,0xeb,0xaf,0x6f,0xff,0x66,0x45,0xd4,
- 0x51,0xce,0x5e,0x87,0x30,0x5a,0x64,0xc7,0x9c,0x30,0x9e,0x5a,0x95,0x1f,0x75,0xe8,
- 0x36,0xfc,0xa3,0xa0,0x7f,0xa1,0x9b,0x5e,0x8d,0xed,0x6c,0xdd,0x86,0x8a,0x97,0xc2,
- 0x1a,0xd0,0x01,0xdc,0x12,0xd8,0xc3,0x84,0x88,0x34,0x96,0x6b,0xd3,0x3f,0x78,0xbd,
- 0x37,0xd4,0xc6,0xdd,0x61,0x05,0x76,0x43,0xc8,0x70,0xa0,0x10,0x43,0x0f,0x05,0x61,
- 0xc0,0x03,0x74,0x2b,0x2f,0x02,0xa1,0x30,0xcb,0xc2,0x3f,0x27,0xf5,0x40,0x84,0x87,
- 0xcb,0x62,0x30,0x0a,0x01,0x58,0x42,0x89,0xb0,0x08,0xd4,0x81,0x93,0xc9,0xba,0x72,
- 0x27,0xab,0x17,0x05,0x61,0xb9,0x20,0xad,0x7f,0xb6,0x5e,0x7b,0xae,0xe7,0x3d,0x6f,
- 0x63,0x9b,0xeb,0x78,0xe7,0x37,0x62,0x3f,0xf4,0x36,0x2e,0xce,0xdf,0xdc,0x79,0x2e,
- 0xf6,0x7b,0xef,0xf5,0x6d,0x2e,0x12,0x3e,0xf0,0x2e,0x6c,0xdb,0x98,0x85,0x7f,0x66,
- 0x8e,0x20,0x5a,0xa8,0x6f,0x71,0x6e,0x2e,0x52,0xd8,0x21,0xad,0xd7,0x02,0x06,0xc6,
- 0xeb,0xb8,0x50,0xae,0x87,0x8b,0x14,0x5c,0x9f,0x40,0x0b,0xc5,0x7f,0x32,0xf9,0x2f,
- 0x2d,0x59,0x2e,0xb8,0xa7,0xab,0x95,0xf0,0x8f,0xd0,0x3d,0x4c,0xc6,0x1f,0x02,0x22,
- 0xde,0x0a,0xae,0x76,0x3a,0xbc,0xfa,0xd3,0xdc,0x03,0x91,0x81,0xb0,0x2d,0xfe,0x93,
- 0x73,0x4e,0x3c,0xa1,0xcd,0x33,0x1c,0x9f,0x67,0xc5,0xb1,0x8d,0x7a,0x69,0xab,0xfa,
- 0x39,0x76,0x0e,0xbe,0xa7,0xcf,0x6b,0x53,0x8f,0xa3,0xfd,0x5a,0x03,0x68,0x01,0x3f,
- 0xef,0x60,0x19,0xfc,0x93,0xb3,0x53,0xa7,0xa0,0x99,0xe3,0x57,0xac,0x18,0xf2,0x51,
- 0x50,0x87,0xf1,0xfa,0x35,0xf0,0x99,0x45,0xea,0xb0,0xa7,0x96,0x3f,0x51,0x5e,0xda,
- 0xc2,0x87,0xed,0xf1,0x9f,0x9c,0x9f,0xd3,0xf3,0xaf,0x0a,0x3e,0x8e,0xbf,0x57,0x3f,
- 0x3d,0x36,0x85,0x9d,0x5f,0xff,0x6c,0x60,0xd9,0xa6,0xd4,0xef,0xbb,0xdd,0x40,0xfc,
- 0xe3,0xcd,0x99,0xde,0x9f,0x3d,0xd2,0x93,0x70,0x16,0x82,0xad,0x88,0x87,0xdf,0x15,
- 0xe7,0xa3,0xc1,0x15,0x14,0x0d,0x33,0x28,0x11,0xb6,0x29,0x9a,0xca,0x88,0x11,0x82,
- 0xb2,0xc7,0x7f,0x76,0xa3,0xfd,0x5a,0xa8,0x38,0x07,0x65,0xbf,0x4e,0xf9,0x70,0xd7,
- 0x80,0xec,0x87,0x49,0xa3,0x51,0xcb,0x37,0xe5,0xaf,0x2b,0x43,0xc6,0x75,0xe0,0x32,
- 0x55,0x47,0x06,0xff,0x14,0x7a,0x9d,0x4f,0x83,0x27,0x36,0x23,0xc6,0xe6,0x29,0xeb,
- 0x11,0xaa,0x14,0xec,0x72,0x7b,0xe1,0x79,0xa9,0xaa,0x8f,0x7b,0x98,0x37,0xba,0x1e,
- 0xf1,0x8f,0x3a,0xca,0x1c,0x36,0xfc,0x43,0x5c,0x8e,0xb9,0x3a,0x17,0x1e,0x89,0xc5,
- 0xf0,0x33,0x72,0x00,0xea,0x82,0xb8,0x52,0x5e,0x97,0xc7,0x58,0x08,0x4f,0xf9,0x40,
- 0x95,0x3c,0x99,0xf8,0x4f,0x0c,0x1a,0xe0,0x49,0xa0,0x24,0x97,0xa3,0x41,0x22,0xc1,
- 0xd1,0x80,0x9f,0x2d,0xba,0x2d,0x49,0x44,0x08,0x0d,0xfc,0x49,0xf8,0xaa,0x79,0xcd,
- 0x2a,0xe6,0x4d,0xdf,0xbf,0x87,0xbb,0x79,0x97,0xa8,0x09,0x39,0x13,0xf2,0xd5,0x56,
- 0xb6,0x2b,0xb7,0x55,0x76,0xc3,0xb9,0x8e,0x46,0xfd,0xb6,0x44,0xd1,0x17,0x58,0x97,
- 0xb8,0x39,0xe9,0x4a,0xc8,0x15,0x99,0xf8,0xcf,0x92,0x0d,0xda,0x45,0xf4,0x2e,0xd1,
- 0x7b,0xb5,0xd2,0xe8,0xe0,0x20,0xc5,0x42,0xf1,0x1f,0x54,0x23,0xa3,0xe8,0x48,0xe2,
- 0x17,0x17,0x97,0x07,0xd2,0xfa,0x07,0x72,0xde,0x36,0x4e,0x89,0xc6,0xd8,0x75,0x09,
- 0x79,0xae,0x34,0x29,0x1a,0xcb,0x9d,0xfb,0xcb,0x02,0x30,0x89,0x40,0x08,0xf1,0x4f,
- 0x3d,0x09,0xba,0x6b,0x34,0x0b,0xff,0xfc,0xa8,0xe5,0x9f,0x60,0x7e,0x4b,0xc9,0xbd,
- 0x9d,0x7f,0x29,0xf6,0xe9,0xf3,0x4d,0x6f,0xc2,0x31,0x4b,0x7b,0xc9,0xb9,0x1b,0x54,
- 0x83,0x15,0x2b,0x7f,0x44,0x45,0xa4,0xb6,0xb3,0x8a,0x4c,0x7e,0x01,0xe2,0xbb,0xbb,
- 0xac,0xe8,0x74,0xd3,0x5d,0xb1,0x7d,0x79,0x95,0xe6,0xba,0x55,0x4c,0xd3,0xf7,0x42,
- 0xe5,0x80,0x4a,0x88,0x68,0x2f,0xc7,0xa5,0x58,0xc1,0xc0,0x86,0x7f,0x5e,0xa3,0xfc,
- 0xce,0x2c,0x5e,0xcf,0x9a,0xa0,0x2f,0xec,0xd3,0x39,0xb0,0x2a,0xd8,0x93,0xa0,0xb0,
- 0x73,0x93,0xae,0xed,0x31,0xbc,0xba,0xaa,0x39,0xb8,0x0d,0xff,0xfc,0x04,0x5e,0x4e,
- 0xbd,0x94,0x0e,0x7d,0x22,0x08,0x4b,0x44,0x59,0x95,0xf6,0xb1,0x59,0x03,0xdd,0x42,
- 0xd5,0x4b,0x2f,0x16,0x07,0xbc,0xa8,0x4f,0x2a,0x6c,0xf1,0x9f,0xd3,0x3a,0xe2,0x1f,
- 0xd3,0xa5,0xe0,0xb2,0x1c,0x50,0x82,0x83,0x56,0xb6,0x6b,0x22,0xb5,0x3e,0x63,0x62,
- 0xd4,0x98,0xca,0x7f,0x4d,0xdf,0x5f,0xd2,0x10,0x0d,0x8a,0x6a,0x42,0x3b,0x75,0xca,
- 0x65,0x28,0x33,0xf3,0x0d,0xb9,0x41,0xfc,0x4e,0xaf,0x66,0x4b,0x84,0x7c,0x8e,0x1d,
- 0x8b,0x56,0x9b,0x2e,0x90,0x21,0x1d,0xff,0xe9,0x80,0xe6,0x15,0x91,0x93,0x1e,0xa1,
- 0x6e,0xec,0x1c,0x81,0x3e,0xd8,0x0e,0xad,0x71,0xb6,0x43,0x9c,0x3c,0x4d,0x49,0x1b,
- 0x36,0xca,0x23,0x94,0xda,0x88,0x3b,0x74,0x1b,0xfe,0xf1,0x21,0x28,0xc2,0xeb,0xe3,
- 0x08,0x03,0xfa,0xc0,0x2b,0xe1,0x65,0x3e,0xe8,0x96,0x3c,0xd6,0xf5,0x50,0xc6,0x3d,
- 0x52,0x77,0x8c,0xe9,0x36,0xfd,0xa3,0x77,0x44,0x40,0x5f,0xa4,0x02,0x4b,0x44,0xf6,
- 0xc0,0x0a,0x93,0xe3,0x3f,0x86,0xad,0xec,0x1e,0xf4,0x6b,0xd8,0x20,0x1a,0x5b,0x9d,
- 0x18,0x32,0xcc,0x9e,0xff,0x8a,0x51,0x92,0x4b,0x45,0x6b,0x2b,0x2e,0x36,0xd5,0x9b,
- 0x95,0xbd,0x32,0xc1,0xc2,0xde,0xe1,0x59,0xb4,0x31,0xde,0xa1,0xfc,0x57,0x4c,0x06,
- 0x1b,0xfe,0x19,0xd6,0x28,0x2c,0xef,0x32,0x8b,0x76,0xc3,0xa4,0x77,0x21,0x14,0xf4,
- 0xcb,0xe3,0x30,0x29,0x35,0x82,0x4a,0x44,0x97,0x53,0x0a,0x9e,0x1a,0xce,0xc2,0x3f,
- 0xe3,0x70,0x59,0xa9,0x36,0x37,0x7c,0x24,0xff,0x4a,0x79,0xdf,0x7f,0x93,0x70,0x8d,
- 0xab,0xd5,0x70,0x0c,0x1a,0x5f,0x29,0xf8,0xa8,0xf3,0xfb,0xca,0xcb,0xfa,0x02,0xc3,
- 0x39,0x9e,0x95,0xff,0xda,0x0e,0x9b,0x60,0xe1,0x38,0x3f,0xc7,0x46,0xc4,0xda,0x1a,
- 0x56,0x5c,0x70,0xc3,0x80,0x57,0x74,0x0f,0xcf,0x1f,0xe2,0x93,0x8e,0x1f,0x6b,0x3f,
- 0x0b,0x78,0xee,0x70,0xf4,0xd9,0xe2,0x3f,0x5c,0x31,0xf9,0x0e,0x88,0x0d,0x6e,0x5d,
- 0xc0,0x06,0xf5,0x1d,0xe0,0x35,0xd5,0x80,0x47,0xb0,0x4e,0xc5,0x97,0x60,0x7e,0xb6,
- 0x13,0x3a,0x7d,0x7a,0xdb,0x7a,0xbf,0x3d,0xff,0xf5,0xb9,0xa7,0x11,0xff,0xcc,0x35,
- 0x4b,0xe2,0xee,0x41,0xe8,0xcc,0xf5,0x0c,0xa8,0x71,0xa8,0xf0,0x77,0x13,0x8c,0x8c,
- 0xb3,0x9d,0x2d,0xcf,0x80,0x27,0xe4,0x78,0x2e,0x2b,0xff,0xd5,0x29,0xde,0x47,0x23,
- 0xbb,0x24,0x5e,0xf8,0x2e,0x2e,0x4b,0x3d,0x01,0xe3,0xed,0xfc,0x08,0x02,0x21,0xfc,
- 0x82,0x1e,0x40,0xfb,0xeb,0x5e,0x91,0x7b,0x50,0x36,0xd3,0xfa,0xe7,0x34,0xc4,0x9d,
- 0xc7,0xa0,0xc1,0x9c,0x3f,0xde,0xfc,0x47,0x84,0x85,0x8d,0x1d,0x05,0xe3,0x65,0x13,
- 0xca,0x45,0xb8,0xd9,0x74,0x8d,0x37,0x9f,0xd3,0x2f,0xc3,0x4b,0x4c,0x45,0xfc,0x33,
- 0xfd,0x73,0x21,0xfe,0x79,0x0a,0x28,0xc9,0x45,0xdf,0x23,0x7b,0x5f,0xaf,0xc7,0xff,
- 0x90,0x5a,0x0a,0x17,0xb5,0x5e,0x82,0x3d,0xe5,0xec,0x08,0x8f,0x1b,0xce,0xec,0xfc,
- 0x97,0x17,0x36,0x99,0x65,0x49,0xfe,0x87,0xa6,0x11,0x78,0x6b,0x91,0xa7,0xdf,0xf1,
- 0x0f,0xa8,0x0d,0x5e,0x5a,0x53,0x66,0xf2,0xff,0xa3,0x69,0xae,0xb2,0xd6,0xf0,0xb4,
- 0x23,0x54,0xce,0xc2,0x3f,0xfe,0xc7,0x86,0xf5,0xe4,0x35,0x35,0xe1,0x41,0xf4,0x0e,
- 0xbc,0x82,0xdf,0xc8,0x7a,0x60,0x0f,0x6e,0x03,0x5e,0xd7,0xa4,0x40,0x27,0xf4,0xb4,
- 0x33,0xb0,0xe3,0x9f,0x45,0x57,0x2b,0x0f,0x8b,0xbb,0xc7,0x3e,0x4d,0xd6,0xff,0x91,
- 0x68,0xa9,0xee,0xb8,0x8f,0xfd,0x00,0xf6,0x09,0x3d,0xc9,0xeb,0xd8,0x55,0xb0,0x36,
- 0xf2,0x99,0xe5,0x8e,0x3a,0x3b,0xfe,0x69,0x65,0xed,0xbf,0x04,0xff,0x19,0x97,0x1f,
- 0xd5,0xf2,0x3b,0xb1,0x7a,0xe1,0xbc,0x49,0x8e,0x10,0xec,0x49,0x38,0xfd,0x1d,0xb9,
- 0x2b,0x3a,0x45,0x9d,0x39,0x7b,0x81,0x6c,0xc3,0x3f,0xd7,0x6e,0x25,0x90,0x33,0x5c,
- 0x70,0x4e,0x3e,0x07,0xdf,0x6d,0x45,0xb4,0x73,0x56,0x5e,0x0d,0x2f,0x21,0x3e,0x9c,
- 0xbf,0xbb,0xe3,0x1c,0xae,0xd8,0x42,0x33,0x3f,0x2b,0xfe,0x33,0x73,0x1c,0x2e,0xae,
- 0xa8,0x3b,0xe1,0x7b,0x16,0xb5,0xfd,0xcb,0x7a,0x40,0xdc,0x1e,0x97,0x92,0xb8,0x3e,
- 0xc1,0x84,0x73,0xef,0x8e,0x72,0xb8,0xd8,0x6a,0xf1,0x7f,0x6c,0xf9,0xaf,0x4f,0x97,
- 0xc0,0x9e,0x50,0x69,0x02,0xb5,0xe5,0x5e,0x58,0x4b,0xf9,0xaf,0x6f,0xb2,0x93,0xa4,
- 0x3f,0x07,0xf8,0xbd,0x68,0x71,0xf6,0x18,0x68,0xaa,0x56,0xb1,0x8f,0x6c,0xf8,0xe7,
- 0xff,0x84,0x7d,0xb1,0xbf,0x49,0xe6,0xd5,0xe7,0xe2,0xdb,0x89,0x9d,0x08,0xfc,0xd8,
- 0xaf,0x94,0x85,0xc2,0x37,0xc6,0xeb,0xe6,0x5e,0x85,0xa7,0xe6,0x24,0x4b,0xee,0xb7,
- 0xe7,0xbf,0x94,0xa3,0xd6,0xea,0xe5,0xf9,0x73,0x1f,0x30,0x3a,0xe5,0xf2,0x5f,0x21,
- 0xfe,0x39,0x82,0x47,0x28,0xe3,0x9c,0x5b,0x00,0x7b,0x98,0x2f,0xe1,0xa8,0x1b,0xb0,
- 0xe5,0xbf,0x72,0x0e,0x18,0x17,0xd0,0xff,0xca,0x27,0xd8,0x73,0x14,0x6e,0x40,0xb4,
- 0xd3,0x7c,0x41,0x5c,0x80,0xef,0x08,0x67,0xec,0x9a,0x0a,0xe7,0x05,0x58,0x28,0x9c,
- 0xa3,0x33,0x6c,0xf9,0x2f,0xed,0x34,0x3a,0xdd,0x0d,0x50,0x00,0x72,0x92,0x8d,0x1b,
- 0xf5,0x50,0x20,0x9a,0x93,0x62,0x02,0xee,0x87,0xf9,0x08,0x84,0x8c,0x09,0x3c,0xe2,
- 0x12,0x33,0xec,0xf8,0xe7,0xd5,0xc8,0x7b,0xfa,0xd5,0xcb,0xf3,0xb7,0xca,0xcb,0x81,
- 0xf2,0x23,0x4e,0x8a,0x0f,0x9c,0x2d,0xbf,0xca,0xc8,0x7f,0xfc,0x9a,0x72,0xe3,0xbc,
- 0x6e,0x59,0x4c,0x3b,0xff,0x67,0x39,0xea,0x20,0x8f,0x11,0x21,0xeb,0xbf,0xee,0x6e,
- 0x8f,0xc1,0xbf,0xef,0x49,0xd1,0x4e,0x38,0xfd,0xc3,0xfd,0x89,0x8a,0x6c,0xfe,0x4f,
- 0x89,0x52,0x2e,0x3d,0xc5,0x2a,0x8c,0x12,0x4a,0xd3,0x3c,0x05,0xf7,0x18,0x7f,0x13,
- 0x6d,0x5a,0x8e,0xd7,0x57,0x18,0x9f,0xa5,0x23,0xbb,0xe1,0x9e,0x76,0x8b,0xff,0x33,
- 0xfd,0x87,0xf8,0x67,0x5b,0x87,0xcf,0xdb,0xd6,0xe7,0x0e,0x97,0xc3,0x36,0xaf,0xa7,
- 0x2d,0xcf,0x1d,0x6e,0x91,0x76,0x7b,0xbd,0x16,0x22,0xb2,0x04,0xc4,0x3f,0xb6,0xf8,
- 0x0f,0x5f,0x21,0x46,0xad,0xf8,0x8f,0xaa,0xb3,0x51,0xdd,0xc3,0x6f,0x0b,0xe7,0x85,
- 0x60,0x42,0x0f,0xa2,0xdf,0x5c,0xa4,0xf3,0x09,0xdd,0x4f,0x89,0xb0,0xa3,0xe9,0xfd,
- 0xb3,0xf5,0xda,0xbd,0xf0,0x2d,0x6f,0xad,0x81,0x68,0x67,0x6f,0xec,0x75,0xef,0x4b,
- 0x6d,0x05,0x28,0xf4,0x9c,0x97,0x9e,0x6b,0x9b,0x11,0x55,0xf7,0xf2,0xf3,0x04,0x8d,
- 0x86,0xcb,0xb2,0xe3,0x3f,0x9f,0xe0,0xcf,0xee,0x3c,0x2e,0x2b,0xf0,0x82,0x1f,0xd7,
- 0x67,0xb8,0x73,0xd0,0x78,0x4d,0x0f,0x20,0x82,0xa2,0x44,0x98,0xb4,0xa7,0xc5,0xb5,
- 0xd9,0xce,0xff,0xd1,0xde,0x83,0xbe,0x7c,0x4f,0x8e,0x97,0xf0,0x4f,0x9f,0xdf,0xa3,
- 0xe5,0x77,0x11,0xfe,0x01,0x4f,0x9e,0xda,0xc1,0x74,0x16,0x51,0x3c,0x8a,0x1a,0xb3,
- 0xf1,0x7f,0x78,0xce,0xa0,0xb1,0x5b,0x43,0x58,0x58,0xc4,0x94,0xf8,0x6e,0x5d,0xbf,
- 0xbd,0x55,0xcb,0x1d,0x81,0x0e,0x4d,0x5f,0xac,0x6a,0x56,0x22,0x4c,0x37,0xd4,0x42,
- 0x9b,0xfe,0x29,0x99,0xb9,0x33,0x15,0x34,0xd3,0x2a,0xca,0x5b,0xf6,0x4b,0x9e,0x36,
- 0x5c,0xc6,0x11,0x8b,0x61,0xb5,0x18,0xd7,0xb3,0x64,0x1d,0xf3,0xb4,0xd0,0x7a,0x66,
- 0xf0,0x4f,0xf1,0x13,0x88,0x5e,0x02,0x88,0x4e,0xe5,0xb9,0x88,0x5e,0x02,0xab,0x10,
- 0xd6,0x0e,0xea,0x87,0x72,0xac,0x9f,0x95,0x12,0x61,0x81,0x15,0x33,0xb6,0xce,0x18,
- 0x4d,0xe7,0xa7,0x9e,0x86,0x9d,0x5e,0x8b,0xf6,0x13,0xed,0x7c,0x17,0x28,0xbe,0x41,
- 0x78,0x8f,0x9d,0xb7,0x84,0xce,0x77,0x5b,0xf1,0x54,0x93,0x6b,0x0b,0x7e,0x2f,0xd3,
- 0xd7,0x7b,0xb5,0x6d,0x6c,0x58,0xf2,0x83,0x8f,0xa2,0x8b,0x27,0xcb,0x03,0x70,0x2c,
- 0x2c,0x9f,0x86,0x04,0xd4,0x82,0x13,0x9a,0x75,0x7d,0x98,0xe2,0xcf,0x42,0x3e,0x9c,
- 0xc9,0x7f,0x29,0x75,0xfa,0xd1,0x50,0x85,0xe0,0x49,0xb4,0x3e,0x0f,0x2e,0xf2,0x88,
- 0xc5,0x23,0x28,0x84,0x99,0x47,0x38,0x92,0xe1,0x4f,0xc3,0x51,0xb3,0x6c,0x33,0xfa,
- 0xef,0x89,0xf4,0x7e,0xf0,0xae,0x69,0x82,0x30,0xc7,0xf5,0xa9,0x63,0x43,0x88,0x96,
- 0x3d,0xe6,0x62,0x74,0x6c,0x79,0xa7,0x56,0x6e,0xf2,0x1a,0x47,0x81,0xd4,0xb9,0x5d,
- 0x37,0xdb,0xfc,0x9e,0xc3,0x99,0xfc,0x57,0x21,0xd3,0x1e,0xa0,0x34,0xd9,0x2a,0xd4,
- 0x3f,0x9d,0x7c,0x1b,0xa2,0x85,0xb9,0x93,0xa2,0x03,0x4a,0x47,0x1c,0x7e,0x56,0xec,
- 0xe9,0xe4,0xa5,0x49,0xfc,0x7e,0x13,0x99,0xfc,0x57,0xeb,0xd5,0x7c,0x88,0xf8,0x39,
- 0xab,0xe5,0x37,0xf5,0x7f,0x12,0x0b,0x46,0xd5,0xd5,0xf2,0x5b,0xe1,0x57,0xc4,0xc2,
- 0x31,0xdf,0x9d,0x65,0xb3,0xe1,0x15,0x3c,0x55,0xb0,0x5a,0x3e,0x6c,0xcb,0x7f,0xf5,
- 0x20,0xcc,0x26,0x23,0x5e,0xf4,0x81,0x40,0xd8,0x33,0xe8,0x8a,0x16,0x59,0x61,0x64,
- 0x93,0x80,0xa5,0xf2,0x1e,0x34,0x88,0x4a,0x3b,0xfe,0x31,0x72,0x26,0xcc,0xef,0x94,
- 0x06,0x97,0x6f,0x9a,0x90,0xab,0x42,0xff,0x98,0x82,0x3d,0x6f,0x36,0xbd,0x16,0x0d,
- 0x8e,0x38,0xcf,0xcb,0x41,0x78,0x29,0x5c,0x7d,0xb7,0x73,0x42,0xd6,0x6c,0xf8,0x27,
- 0xd2,0xb1,0xb7,0x3d,0x36,0xaa,0x8e,0x37,0x05,0xc5,0x1a,0x0d,0xd1,0x8b,0x26,0x3f,
- 0x6e,0xae,0xf1,0x57,0x8e,0xf2,0xd5,0x4c,0x11,0xcf,0xe9,0xdb,0x48,0xff,0x54,0xa4,
- 0xf1,0xa7,0x30,0xb6,0xb6,0xef,0x85,0x39,0x84,0xf7,0xee,0x2a,0xdd,0x00,0xa5,0x04,
- 0x7b,0xee,0x57,0xbe,0x87,0x88,0x28,0x2f,0xc0,0x66,0xf1,0x67,0x61,0x8e,0x91,0xb7,
- 0x0a,0xed,0xfb,0xf4,0xfa,0x87,0x8a,0x5b,0x8d,0x78,0x2a,0x89,0x73,0x3b,0x7e,0xc8,
- 0x64,0xcd,0xdd,0x3f,0xfb,0xf2,0x43,0x92,0xcf,0x5c,0xa7,0x31,0x27,0xc4,0xa1,0xfc,
- 0xbf,0xa8,0x41,0x56,0x92,0xde,0x9f,0xde,0x99,0x3f,0x05,0x8a,0xde,0x6c,0x8a,0xcb,
- 0xf7,0xc3,0x21,0x65,0xcf,0x38,0xbe,0xe6,0xa4,0xf2,0x3a,0xba,0x99,0xb3,0xe2,0xd7,
- 0x70,0x74,0x24,0x7f,0x6c,0xa0,0xe3,0xe9,0xb0,0xe1,0x9f,0x51,0xca,0xce,0x53,0x12,
- 0x70,0x17,0x3b,0x4d,0x68,0x47,0x20,0x0c,0x78,0x0f,0x8f,0x54,0xed,0x2d,0xfb,0xe0,
- 0x8e,0x8f,0xa4,0x3a,0xa3,0x60,0x77,0x16,0xfe,0x99,0x30,0xce,0xa2,0xd2,0x9e,0x31,
- 0x59,0x34,0x09,0xff,0x15,0x6e,0x18,0x98,0x35,0xdc,0xdc,0x00,0xaf,0xc4,0x16,0x9a,
- 0x79,0xc3,0xe8,0xe6,0x27,0x60,0x21,0xc5,0xe7,0x6d,0xf9,0x2f,0xe5,0xef,0xa0,0x8f,
- 0x92,0x56,0x5d,0xe1,0x21,0x6d,0x9d,0xe9,0x31,0xf3,0xb7,0x22,0x9e,0x59,0x47,0x78,
- 0xe6,0x79,0xf6,0xae,0x38,0x29,0x02,0x7e,0xca,0xbf,0x64,0xf0,0x8f,0xe2,0xd5,0x9f,
- 0x17,0x3f,0x36,0x10,0xff,0x8c,0x49,0xfb,0x23,0x9e,0x7e,0xee,0x74,0xf8,0xa4,0x75,
- 0xb0,0xdc,0x44,0x18,0xf0,0x21,0x3c,0x1a,0xb9,0xe7,0x4b,0x25,0x71,0x4f,0x52,0x9a,
- 0xde,0x0f,0x5c,0xe1,0x46,0x2f,0xe8,0x89,0xc5,0xfe,0xdc,0x31,0xb1,0x8d,0x14,0x35,
- 0x30,0x27,0xc3,0x85,0x3a,0xbc,0x1e,0x3d,0xf4,0xe6,0xcd,0xe4,0xc1,0x21,0x1e,0x48,
- 0xf3,0x69,0x81,0x7b,0x11,0x56,0xd5,0x9e,0x20,0x1a,0x6a,0xec,0x7c,0x4b,0xc0,0xe4,
- 0x51,0xb7,0x4f,0x39,0xc4,0x6e,0x48,0x54,0xf6,0x36,0x7d,0x00,0x27,0x17,0xf9,0x0d,
- 0x1f,0x3e,0xff,0x8c,0x74,0x7c,0xf2,0xda,0x09,0x31,0x09,0x37,0x0d,0xb9,0xc6,0xcb,
- 0x26,0xe1,0x9f,0xbd,0x2f,0x99,0xe8,0x88,0x4d,0x5a,0x44,0xdf,0xfc,0x9d,0x88,0x8f,
- 0x27,0xf9,0x4b,0xc6,0xd2,0x71,0x5b,0x3c,0xd6,0xcc,0xf9,0x88,0xbf,0x65,0x7e,0x4b,
- 0xc7,0x4d,0xf2,0xa2,0xf2,0x47,0xd1,0x38,0xa7,0x60,0x5c,0xfe,0x03,0x8c,0x74,0x35,
- 0xea,0xe8,0xc8,0x07,0xe1,0x18,0x11,0xa1,0xfb,0xe4,0xf1,0x0c,0x3e,0xd1,0xde,0x25,
- 0x5a,0x2f,0xcf,0xa7,0x7c,0xdf,0x01,0xa8,0xa2,0x34,0xdf,0xbb,0x10,0x11,0x55,0x31,
- 0xf5,0xa0,0x5c,0x85,0xa0,0xb5,0x2a,0xa1,0xf6,0x65,0xe5,0xbf,0x06,0x61,0x8f,0xee,
- 0x75,0x38,0xe2,0xe1,0x0d,0x68,0x86,0x56,0x26,0xd4,0x05,0xac,0x05,0x61,0xa5,0x4f,
- 0x2c,0xae,0xc9,0x75,0x52,0x3c,0x70,0xc0,0xe2,0x3b,0x4d,0xff,0xbe,0xe6,0xcc,0x1f,
- 0xe3,0xc1,0x0a,0xc0,0x9b,0xec,0xa2,0xfb,0x27,0xf3,0xe2,0xa8,0x7f,0x10,0xff,0x44,
- 0x10,0x76,0xfa,0x04,0x01,0x21,0x44,0x44,0xb6,0xfc,0xd7,0xcc,0x01,0xf4,0x0e,0xbc,
- 0x5a,0x81,0x5f,0xde,0x85,0x66,0xb7,0x2a,0xe9,0x8a,0x97,0xbd,0x0b,0xef,0xe9,0xb3,
- 0xb7,0xba,0xe2,0x92,0x0f,0x4d,0x9f,0x85,0x87,0x33,0xfc,0xe7,0xb8,0xb4,0x17,0xde,
- 0x62,0x0b,0xe7,0xa2,0x11,0xbf,0x5f,0xa1,0x68,0x18,0xbd,0xaf,0xb8,0x6c,0x34,0x0a,
- 0xd7,0x2a,0xf9,0x20,0x21,0x22,0x2b,0x3f,0x68,0x8b,0xff,0xec,0x2a,0x25,0x58,0x85,
- 0xf8,0x67,0x4c,0xbf,0xc8,0xbf,0x69,0x5e,0x87,0x40,0x48,0x7f,0xbd,0x3d,0x20,0xf2,
- 0xe3,0xfd,0xbb,0x28,0x11,0x46,0x40,0x68,0x3c,0x8d,0x7f,0x4e,0xe6,0xcc,0xa1,0xf5,
- 0xd9,0xec,0x88,0xc3,0xef,0xf8,0x01,0xdc,0x3f,0x78,0xb7,0x35,0x78,0xa4,0x36,0xac,
- 0x9e,0x93,0x97,0x1a,0xbf,0x4e,0x01,0xb9,0x8f,0x6c,0xf8,0xa7,0x19,0xca,0x80,0x03,
- 0x2e,0xc2,0x31,0x63,0x0f,0x5e,0xaf,0x2e,0x08,0xbf,0x6a,0x3c,0x3c,0xe4,0xed,0x43,
- 0xc3,0x7d,0x8c,0x75,0xc2,0x4a,0x33,0x9b,0xff,0x2c,0x11,0x0c,0x28,0xd3,0xd5,0xd5,
- 0xb9,0x6f,0x6a,0x2f,0x45,0x2c,0x3e,0xcc,0xf7,0xa5,0x4d,0x68,0xbf,0xd5,0xd5,0xe1,
- 0x37,0xf5,0x47,0x52,0xc4,0x98,0x0c,0xff,0xb9,0x8d,0xe7,0x26,0x9f,0x41,0x2f,0xd2,
- 0xe5,0xf7,0x10,0xdb,0x59,0x1f,0x56,0xeb,0x11,0x08,0x1d,0x87,0x3a,0x91,0x57,0xf7,
- 0xa5,0x21,0xf1,0x32,0x3d,0x7f,0x9d,0x9d,0xff,0x7c,0x6d,0x17,0xbf,0x4c,0x6c,0xde,
- 0x71,0x79,0xd2,0xb8,0x0c,0x07,0x06,0x5d,0xbb,0x3b,0xb7,0x18,0x04,0x7b,0x5c,0xab,
- 0xca,0x96,0x4c,0xaf,0x4f,0x56,0xfc,0x87,0x5f,0x24,0x5a,0x0b,0xe5,0x07,0x8f,0xb0,
- 0x60,0x32,0xdf,0x8f,0x66,0x9a,0x3c,0x38,0xd7,0x02,0x8f,0x8f,0xfc,0x35,0xb3,0xa0,
- 0x4e,0x76,0xd8,0xf2,0x5f,0x5b,0x08,0xed,0x40,0xfe,0x2a,0x76,0x8a,0xaf,0x95,0x66,
- 0x98,0x79,0xf7,0xe6,0x16,0xf3,0x3f,0x42,0xa5,0xc8,0x5b,0xa5,0xcf,0x42,0x44,0x54,
- 0x89,0xaa,0x86,0x05,0x6c,0xf9,0xaf,0x1f,0xc1,0xbe,0x8e,0xca,0xd0,0xd6,0x54,0xb4,
- 0x27,0x3f,0xc9,0x27,0xd8,0x17,0x88,0xff,0x13,0x5b,0x3c,0x01,0x5f,0xc4,0xa5,0xa8,
- 0x24,0x44,0x94,0xfe,0x5a,0x28,0xff,0x45,0x68,0xa7,0xee,0xd3,0x1a,0xa5,0x81,0x44,
- 0xf9,0x47,0xb8,0x7a,0xb7,0x4b,0x7b,0xb6,0xfa,0xf6,0xe0,0x7a,0xb6,0x20,0x9e,0xac,
- 0x32,0xad,0xf8,0xcf,0xf4,0xfd,0x93,0x33,0x9f,0xd7,0x9f,0x87,0x9b,0x23,0xce,0x98,
- 0xbc,0x02,0x0e,0xc7,0x1a,0xfb,0xf2,0x43,0x6c,0x85,0xb8,0xd4,0x74,0xb3,0x70,0x25,
- 0xd5,0x56,0xf6,0x06,0xb9,0xa2,0x31,0xb5,0xce,0x16,0xff,0x39,0x4d,0xde,0x16,0x85,
- 0x7d,0x50,0x68,0xa9,0x25,0xd8,0x13,0x03,0x74,0xbb,0x94,0xfc,0x2e,0x14,0xa6,0x4e,
- 0xd9,0xf1,0xcf,0xbb,0xd2,0x21,0xcb,0xde,0xc9,0xef,0xc2,0x21,0x3d,0xb0,0x48,0xdd,
- 0x5a,0xf6,0x15,0x7e,0x5e,0xd4,0x1b,0x4e,0xb7,0xfc,0x15,0x46,0xa7,0x78,0x16,0xfe,
- 0x51,0x6e,0x59,0xf4,0x14,0x54,0xad,0xae,0x88,0xe6,0x8e,0xac,0x78,0x6a,0x7d,0x85,
- 0x51,0xf0,0x10,0xba,0x09,0xbb,0x4b,0x6a,0x57,0x14,0x10,0xff,0x64,0x1d,0xb3,0xf2,
- 0x2f,0x36,0xfc,0x63,0xf1,0x9f,0xab,0x12,0x9f,0x8d,0xe6,0x2e,0x4f,0x99,0xe9,0x2d,
- 0x57,0x95,0x8b,0xa7,0x24,0x4f,0x4b,0x6b,0xd4,0xbd,0x5c,0x59,0xa7,0x54,0x19,0x57,
- 0x5f,0x91,0xff,0x82,0x6d,0x50,0x45,0x41,0xa1,0x41,0x14,0xbc,0x86,0xc3,0xfd,0xfd,
- 0x07,0x10,0x26,0xcd,0xb5,0x02,0x41,0xa8,0xb1,0x7d,0x74,0xca,0x9e,0xff,0x5a,0x81,
- 0xe8,0x22,0x08,0xf9,0x14,0xc4,0x8e,0x40,0x00,0x5c,0xe1,0x32,0x9d,0x88,0xa9,0xe0,
- 0xdc,0xae,0x86,0x10,0xee,0x07,0xa1,0x2a,0x2b,0xff,0x75,0xed,0x39,0xe9,0x7c,0x2a,
- 0xfe,0x73,0x22,0xf6,0x89,0xaf,0xb1,0xad,0x20,0x5a,0xb8,0x17,0x6e,0x06,0x0a,0x44,
- 0xcb,0x27,0xc8,0x90,0x2d,0xce,0xb7,0xf3,0x7f,0x4a,0x72,0x4e,0x00,0x6a,0xfb,0x45,
- 0xce,0x05,0x88,0xb7,0x3f,0x91,0x82,0x2d,0x05,0xed,0x72,0xb1,0xf2,0x81,0xd4,0xb8,
- 0xc8,0x75,0xbc,0xfb,0x2e,0x76,0x28,0x27,0x88,0x88,0xa8,0xd9,0x9e,0xff,0x4a,0x72,
- 0x93,0x57,0x01,0x05,0xd5,0x63,0x75,0x08,0xcc,0x78,0x17,0x8b,0x11,0x23,0x1a,0x64,
- 0x8b,0x11,0x04,0x55,0xcc,0x61,0xe7,0x3f,0xf3,0x5b,0x06,0x59,0x87,0xee,0x33,0x4b,
- 0xb4,0xa6,0x41,0xb1,0xdb,0x5b,0xd5,0xea,0x28,0x74,0x2b,0xb0,0x5b,0xf2,0x19,0x8b,
- 0xb5,0xdc,0x96,0xe9,0xf7,0xcd,0xca,0x7f,0x89,0x75,0xe0,0x6b,0xe5,0x04,0x7b,0x0e,
- 0xc0,0xdf,0xb6,0xa0,0xb0,0x53,0x1c,0x80,0x82,0xe6,0xbc,0x29,0x22,0x10,0x65,0x18,
- 0xed,0xf9,0xaf,0x57,0xc4,0x21,0x29,0x68,0xf8,0x2c,0xf6,0x32,0x34,0xb4,0xde,0x1e,
- 0x95,0xcb,0xa5,0xf3,0x89,0xe0,0xd7,0xf1,0x17,0x5f,0x8e,0xf8,0xa7,0x8a,0x5e,0x3c,
- 0x2b,0xff,0xa5,0xe3,0x22,0xdc,0xe3,0x7a,0xb4,0x6c,0x84,0x9f,0x8f,0xd6,0x1b,0xf9,
- 0x1a,0xfd,0x43,0x2d,0xd8,0x82,0xf8,0xe7,0xb7,0x70,0x5e,0xb9,0x82,0xff,0x8c,0xf8,
- 0xc7,0x62,0x3b,0xe7,0x08,0x59,0xef,0x98,0xda,0x5d,0x3a,0x24,0xf4,0x00,0x73,0x0a,
- 0x35,0x45,0x44,0x77,0x65,0xf3,0x9f,0xeb,0x10,0x63,0x15,0x21,0xda,0xc9,0xbd,0x51,
- 0xfc,0x28,0x54,0x45,0xf8,0xa7,0x4f,0xff,0xa9,0x58,0x18,0xcd,0xff,0x0a,0x2b,0xd1,
- 0xd6,0x23,0xd4,0x97,0x89,0xff,0x9c,0xbe,0xbf,0x74,0x1b,0xa7,0x78,0xe9,0x3c,0xca,
- 0x17,0xef,0x89,0xac,0x34,0xd1,0x17,0x72,0xe9,0x1d,0xc2,0x7b,0x02,0x11,0x51,0x81,
- 0x41,0xa9,0x64,0x95,0xf8,0xcf,0xd3,0xeb,0x49,0xf9,0xaf,0x27,0xbb,0xca,0xcc,0xbc,
- 0x6f,0xb3,0x59,0xf0,0x08,0x54,0x26,0xd4,0xf6,0xf0,0x8b,0xf0,0x04,0xd5,0x5f,0x68,
- 0x78,0x64,0x06,0xcc,0x1b,0x54,0x57,0x35,0xd9,0xf3,0x5f,0x6e,0xf8,0x79,0xe4,0xc6,
- 0x64,0xfe,0x7d,0x6c,0x36,0x7e,0xb6,0x37,0x8f,0xbb,0x88,0xa6,0xf8,0x8a,0xb8,0x11,
- 0x11,0x51,0xd1,0x6c,0x46,0xd4,0x68,0x57,0x56,0xfe,0xeb,0xda,0x18,0x5c,0x6c,0xaf,
- 0x33,0x6f,0x8f,0x97,0x8d,0x59,0xda,0xc3,0x15,0x95,0xc6,0x10,0x28,0xd6,0x98,0xaf,
- 0x45,0xd1,0x22,0x5c,0x84,0xab,0xcd,0x9c,0x2c,0xfe,0x73,0xce,0x1b,0xf2,0x5b,0xda,
- 0x82,0xd0,0x06,0x44,0x3b,0xc6,0xfb,0x51,0xb4,0x56,0x27,0xe5,0x37,0xe1,0x37,0x22,
- 0x90,0x54,0x6e,0x94,0x9f,0xe3,0x64,0xbf,0x88,0xff,0xac,0x4f,0xaf,0xff,0x53,0x85,
- 0xc2,0x38,0x06,0xa5,0x5a,0xfe,0x44,0x93,0x13,0xd6,0xc6,0x50,0xdb,0x68,0xec,0x14,
- 0xfc,0x23,0xcc,0x9b,0x74,0xdc,0x87,0x1b,0xef,0x49,0x98,0x6f,0x3a,0xbe,0xce,0xce,
- 0x14,0x4f,0xdf,0x1f,0x20,0x0a,0x6b,0xfd,0x65,0x86,0x77,0x15,0x9b,0xa5,0x3d,0xa9,
- 0x57,0x52,0x74,0xe8,0x94,0xfe,0x13,0x5e,0x66,0x96,0xdc,0x9b,0x7b,0xce,0xd2,0x57,
- 0xc4,0x7f,0xb6,0xc5,0x7f,0x06,0x70,0xd1,0x74,0x2d,0xaf,0x0e,0xd7,0xb3,0x93,0xac,
- 0x9b,0xc6,0x8e,0x6a,0x0f,0x71,0xef,0x9d,0x0e,0x60,0x05,0x50,0xa6,0x54,0x99,0x8e,
- 0xec,0xfc,0xd7,0x5a,0x7e,0x0c,0x02,0x51,0x3e,0xde,0x4d,0x61,0x8d,0x46,0xb2,0x56,
- 0x1f,0x4a,0xef,0x0b,0xcf,0xf1,0x25,0x71,0x76,0x86,0x1f,0xc1,0x23,0xe4,0x3f,0xa6,
- 0xeb,0x05,0x04,0x24,0xd1,0xdf,0x7f,0xb1,0x9d,0xa2,0x3d,0xa8,0x46,0x82,0x49,0xdc,
- 0x2d,0x88,0x7f,0xa4,0x20,0xd1,0x2c,0xc7,0xda,0xa7,0x02,0x65,0xc9,0xf4,0xf3,0x48,
- 0xda,0x47,0x14,0xcd,0x08,0xe7,0x53,0xf5,0xca,0x65,0xad,0xda,0x44,0x47,0x03,0xf1,
- 0x80,0xa7,0xf1,0x6e,0xe7,0xb8,0x15,0x11,0xfa,0xae,0xd9,0x65,0xe7,0xff,0x08,0xdc,
- 0xd9,0xcf,0x80,0x2f,0x8e,0x46,0xea,0x43,0x78,0xcc,0x40,0xa0,0xbb,0xd9,0xfd,0xdf,
- 0x95,0xfd,0x86,0xef,0xac,0xa3,0x0e,0xaa,0xf4,0x03,0xec,0x6b,0x66,0x24,0x9b,0xff,
- 0x5c,0x4a,0x46,0x59,0x47,0x33,0xfd,0x81,0xe8,0x45,0xfc,0xcc,0xa3,0x9e,0xdf,0x69,
- 0x4f,0xa5,0x80,0xc1,0x4f,0xad,0x0c,0x91,0x23,0x9e,0x95,0xff,0xa2,0x24,0x20,0x7e,
- 0xbf,0x01,0x36,0xe4,0xdc,0xc3,0x2b,0x4c,0xae,0xb1,0x25,0xa8,0x7f,0x7c,0xe1,0xf5,
- 0x01,0xf4,0xf7,0xc9,0x51,0x75,0x64,0xf3,0x9f,0xef,0xc6,0xe7,0x0f,0x4a,0xf9,0xbd,
- 0x72,0xbf,0x71,0x51,0x0f,0x98,0x1b,0xbe,0x57,0x36,0xa6,0x9c,0x87,0xef,0x70,0xe7,
- 0x5e,0x95,0xf6,0x43,0x95,0x59,0xf5,0x6c,0x56,0xfe,0x6b,0x3c,0x76,0x99,0x35,0x82,
- 0x6b,0x37,0xbe,0xe6,0x5b,0xac,0xd1,0xfc,0xcc,0x00,0xc5,0x7f,0xd0,0xe2,0xb8,0xde,
- 0x79,0xec,0x2e,0x34,0x6d,0x08,0x84,0x3e,0xca,0x8a,0xff,0x4c,0xc0,0x90,0x16,0x30,
- 0x9d,0xe7,0x8b,0x26,0x95,0x63,0x1d,0x8d,0xaf,0x39,0xf3,0xe4,0x17,0x8d,0xcb,0xd1,
- 0xc0,0x88,0xf3,0x2c,0xe2,0x81,0x0f,0xe6,0x2d,0x28,0x77,0x9e,0x2b,0xb3,0xc7,0x7f,
- 0x26,0xf4,0x0d,0xb0,0x30,0x71,0x27,0x7e,0x80,0x9e,0x1d,0xbc,0x6a,0x88,0xf7,0x2e,
- 0xdb,0x85,0x8f,0xed,0x49,0xe0,0x8a,0x35,0x18,0xeb,0x56,0x54,0xb4,0x46,0xfc,0xf6,
- 0xf8,0x4f,0x4e,0x02,0xf5,0x89,0x3e,0xc0,0x7b,0xd9,0x06,0xd1,0x59,0x5a,0x6e,0x96,
- 0xc4,0xd9,0x86,0xae,0x3d,0x7a,0xcc,0xe4,0x81,0xa6,0x0d,0x31,0xf4,0x58,0x4d,0x47,
- 0x20,0x8b,0xff,0xec,0xd5,0xd6,0x49,0x73,0xfb,0x7b,0xe2,0xcc,0xa7,0x3c,0x23,0x21,
- 0x5a,0xe8,0x0b,0x57,0x69,0x07,0x34,0x3d,0xc1,0x76,0x23,0xe2,0x7a,0x4a,0x54,0xf4,
- 0x33,0xc2,0x3f,0xd3,0xfb,0xd3,0x98,0x39,0xda,0x74,0x38,0x1a,0x30,0xe1,0x46,0xc4,
- 0x3f,0x47,0x0a,0x83,0x66,0x79,0x9d,0xfc,0xd3,0x08,0xa5,0xa5,0x7c,0x07,0xf1,0x7b,
- 0x79,0x2f,0x12,0x58,0x5e,0x70,0xf0,0xe5,0x61,0x5b,0xfe,0xeb,0x07,0x4a,0x8a,0x1f,
- 0x55,0x74,0x0a,0x2e,0x8b,0x06,0x73,0xd3,0x38,0xf1,0x7f,0x78,0x63,0x12,0x77,0xc8,
- 0x98,0xf6,0xcf,0xf0,0x5d,0xa3,0xf2,0xa3,0xac,0xfc,0xd7,0x2e,0x39,0xe1,0x0e,0xf4,
- 0x2b,0xf1,0x66,0x9f,0x71,0x44,0xc2,0x85,0x7a,0x56,0x5e,0x29,0x1f,0x81,0x5e,0x4a,
- 0x1b,0x39,0x21,0x61,0x04,0x28,0xff,0x68,0xcf,0x7f,0x7d,0xa6,0x55,0x9c,0x28,0xfb,
- 0x95,0xe3,0xd9,0x70,0xb0,0xa5,0xdb,0x59,0xf6,0x8f,0x05,0x2f,0xb0,0xeb,0xef,0xec,
- 0x36,0xef,0x39,0xc5,0xf7,0xb1,0x86,0xba,0x75,0xab,0xf4,0xdf,0xdf,0xb2,0x2f,0x8b,
- 0xff,0x63,0x40,0x18,0x95,0x4c,0x45,0x5d,0x6e,0x01,0xeb,0x8c,0xc5,0x88,0x08,0xb4,
- 0x04,0x9e,0x91,0x74,0x13,0xbf,0x17,0x97,0xfe,0x14,0x94,0x93,0x63,0xd5,0x67,0xe7,
- 0x3f,0xfb,0x1f,0x8c,0x96,0x8e,0x44,0x56,0xa3,0x1a,0x59,0x1b,0x45,0xfc,0x73,0x9e,
- 0xcd,0xd6,0x9f,0x14,0xa5,0xc9,0xc3,0xf7,0xc1,0x6c,0xd1,0x29,0xae,0x4f,0x2e,0xbe,
- 0x2f,0xab,0xfe,0xcb,0x0b,0x9d,0x4a,0xfd,0x28,0xe2,0x43,0x27,0xbc,0x0c,0xfe,0x84,
- 0xab,0xbe,0x68,0xa5,0xb2,0x83,0x7b,0x92,0x55,0x2f,0x2e,0x72,0x42,0x3f,0xec,0x35,
- 0x0b,0x6e,0x92,0x37,0xdb,0xf0,0xcf,0x7e,0xf8,0x23,0xcc,0x1f,0xa6,0x6a,0x38,0x0b,
- 0xed,0x54,0x8e,0x4b,0xb8,0x91,0xb4,0xe0,0x20,0x7d,0x41,0xe1,0x8b,0x70,0x93,0x99,
- 0x7f,0xb6,0xb9,0xdd,0x86,0x7f,0x0e,0xc1,0x99,0x7b,0x02,0x83,0x8e,0xb8,0x34,0xa6,
- 0x1c,0x81,0xfa,0xc1,0x82,0x78,0x91,0x2f,0x95,0x08,0x8b,0x17,0x55,0xfa,0x0f,0x31,
- 0x5c,0x9f,0x68,0xa1,0x9d,0xff,0xbc,0x15,0x8e,0xa2,0xdb,0x78,0x1b,0xe2,0x1f,0xd8,
- 0x04,0x65,0x26,0x1f,0x77,0x34,0x4c,0xc3,0x9e,0x1f,0xa2,0x30,0xaf,0xff,0x8a,0xf8,
- 0xcf,0x8b,0xf0,0xe3,0x0e,0x3d,0x59,0xb2,0xda,0x7d,0xb4,0x75,0xad,0x98,0x87,0x6e,
- 0x9a,0x39,0x7b,0x1a,0xf6,0x7c,0x11,0xd6,0x88,0x39,0xa7,0x23,0xab,0x6f,0xb5,0xf3,
- 0x9f,0x0f,0x49,0x61,0x43,0x37,0xa5,0x12,0x36,0x44,0xf9,0x77,0x33,0x52,0xe7,0x51,
- 0x6b,0x3a,0x84,0x6f,0x79,0x77,0x5d,0x78,0x48,0x79,0xb8,0x15,0xbf,0xaf,0x9a,0x07,
- 0xec,0xfc,0xe7,0xe7,0xe1,0x43,0x11,0x10,0xfc,0x69,0x39,0x01,0x87,0x3b,0xea,0x45,
- 0xd5,0x88,0x5c,0x0f,0x4f,0xc7,0x50,0x9f,0x8c,0xec,0x59,0xc1,0x8e,0x52,0xfc,0x67,
- 0x24,0x8b,0xff,0x9c,0x34,0x47,0x4b,0x5e,0xb4,0xd2,0x5e,0x6c,0x42,0xb3,0xb2,0x5d,
- 0xb1,0xa6,0x29,0xc3,0x44,0x19,0xa2,0x7a,0xcd,0xd5,0xf1,0x27,0xfc,0x9f,0x74,0xb6,
- 0x0b,0x61,0x4f,0xb4,0x73,0x39,0x3c,0x25,0x5d,0x65,0x6c,0xf8,0x81,0xdb,0xca,0xef,
- 0xdc,0xe3,0xbc,0x32,0xff,0xf5,0x14,0x6c,0xa7,0x6c,0x57,0xb9,0xde,0x01,0x9e,0x3b,
- 0xbd,0xd1,0xab,0xcb,0xd9,0x53,0x39,0x55,0xc6,0x4f,0xb6,0xa2,0x40,0xf9,0x2f,0xef,
- 0x56,0xd5,0x96,0xff,0xca,0x51,0x44,0x87,0xa4,0xb7,0xb7,0x16,0x33,0x3a,0xab,0x1b,
- 0xad,0x94,0xff,0x7a,0x14,0xca,0x29,0xff,0xb5,0x53,0xea,0x80,0xd8,0x20,0x77,0x67,
- 0xe7,0xbf,0x62,0x1d,0x5e,0xbd,0x8d,0xb2,0x63,0xb1,0x75,0x92,0xde,0x06,0xda,0x55,
- 0x29,0xd8,0xc3,0xdd,0x0f,0x74,0x6d,0xc3,0x53,0x28,0x64,0xe7,0xbf,0x88,0xe4,0xcc,
- 0x97,0xa0,0xd9,0x15,0x11,0x29,0x40,0x6c,0x1f,0x9d,0x4f,0xc0,0x5c,0x88,0x30,0x59,
- 0x74,0x99,0x7a,0x5c,0x38,0x29,0xff,0x95,0xe6,0x3f,0x5f,0x7b,0x6e,0xfb,0x65,0x6f,
- 0x90,0xf0,0xcf,0x48,0xec,0x13,0xef,0x73,0x24,0xec,0x8d,0xbd,0x60,0x21,0xa2,0x8e,
- 0xe5,0x78,0xc4,0x82,0x46,0x3f,0x9e,0x11,0x4a,0x3f,0xff,0x88,0x49,0xeb,0xf3,0xe0,
- 0x43,0xf2,0x88,0x38,0x04,0x9e,0x25,0xae,0xa8,0x8a,0x0b,0xa5,0x11,0xed,0x39,0x5c,
- 0x6e,0x5a,0x19,0xc3,0x87,0xb2,0xf2,0x5f,0xa3,0xfd,0x91,0x56,0x0f,0xb3,0xf0,0x4f,
- 0x44,0xf7,0x38,0x55,0x08,0xeb,0xc4,0x88,0x76,0xf0,0xed,0x4d,0xba,0xd9,0xd3,0x5a,
- 0xc1,0x1c,0xa7,0x59,0x56,0xfe,0x2b,0xbc,0xc6,0x5f,0xda,0xd2,0xd6,0xce,0x4e,0x98,
- 0x6b,0xe6,0x95,0xb6,0xaa,0xc7,0x1d,0xc5,0x3c,0x07,0x4a,0x5b,0xf9,0xb2,0x81,0x62,
- 0xb1,0x06,0x4d,0x1b,0x6f,0x67,0xcc,0x8e,0x7f,0xd8,0x1a,0xd8,0xb6,0x88,0x1f,0x67,
- 0xe7,0x50,0x68,0x36,0xd4,0x53,0xac,0x58,0x5f,0x03,0x3b,0x0c,0xc7,0x2f,0x58,0x0d,
- 0xfc,0x44,0xfa,0x4c,0x93,0xe3,0xb8,0x3d,0xff,0x35,0x73,0x04,0xd6,0x99,0x01,0x02,
- 0x39,0xf8,0x43,0x8b,0xed,0x8b,0xae,0xd3,0xe4,0x72,0x76,0xc8,0x7d,0x6f,0xc8,0xf7,
- 0xb8,0x5a,0xae,0x1d,0x0a,0xf5,0x86,0x9c,0x51,0xd5,0x9b,0xd6,0x3f,0x3d,0xd2,0x8f,
- 0x5b,0xce,0x97,0x5b,0x20,0x67,0x90,0x9f,0x8f,0xa5,0x88,0x40,0x70,0x5e,0xcc,0x6e,
- 0xff,0x61,0xb4,0x79,0x04,0x15,0x7b,0xb0,0xd5,0xb5,0xd5,0x9e,0xff,0xd2,0xe2,0x70,
- 0xca,0x58,0x48,0xa4,0x7a,0xfa,0x62,0x1a,0xd1,0x3e,0xc8,0x0b,0x60,0x92,0x34,0xbc,
- 0x29,0x8f,0x6b,0x43,0xe8,0xbf,0x2b,0x83,0xb2,0x2d,0xff,0x95,0xc3,0x5b,0x9e,0x86,
- 0xe7,0x63,0x6a,0x8c,0x55,0x68,0xeb,0xa9,0x50,0xae,0x87,0x79,0x3b,0x9e,0xd7,0xab,
- 0xfa,0xf0,0xc8,0x28,0xac,0x07,0xbf,0xc8,0x4f,0xca,0xb6,0xfc,0x17,0x7a,0xe6,0x51,
- 0xd0,0xcb,0x55,0x60,0x06,0xc4,0xc1,0x87,0x0b,0xf6,0x80,0x1c,0x8d,0x27,0xab,0xb8,
- 0x8a,0x2b,0x9c,0x17,0x41,0x4c,0x89,0x4b,0xdd,0x96,0xc9,0x7f,0x49,0xb3,0x50,0x9f,
- 0xcc,0x33,0xbb,0x57,0x7b,0x96,0xe8,0x6b,0xad,0xb4,0xd7,0x55,0xb3,0x94,0x7d,0x8a,
- 0xf5,0xfd,0x9e,0x72,0xaf,0x85,0x52,0x33,0x2f,0x3b,0xff,0x55,0x0f,0x27,0xc4,0x82,
- 0x10,0xc2,0x92,0x2f,0x28,0xe7,0xc2,0x8d,0x21,0x67,0x2b,0x73,0xc3,0xde,0x70,0xa5,
- 0xee,0x5a,0x81,0xb0,0xdf,0xa4,0xd0,0x90,0x57,0xfd,0xdb,0x4c,0xfc,0xe7,0xda,0x9d,
- 0x68,0xd4,0xea,0x85,0x2b,0x26,0xf7,0x58,0x6e,0xd4,0x14,0xff,0xb9,0xca,0x5c,0x4c,
- 0x86,0xfe,0xa2,0x52,0x07,0x14,0x2f,0xb5,0xe5,0xbf,0xde,0x5d,0x34,0xa8,0xd5,0xc6,
- 0x36,0x26,0x9a,0xef,0x53,0xc6,0x44,0x11,0x39,0xf2,0xc1,0x9c,0xcb,0xd1,0xea,0xdf,
- 0x38,0x13,0xf2,0xdb,0xc6,0x50,0xb4,0x5a,0x77,0x25,0xb2,0xf2,0x5f,0x3f,0xe8,0x58,
- 0x1b,0x2a,0x5d,0xb9,0x78,0xdc,0x51,0x8c,0xfa,0x67,0x9b,0xc9,0x07,0x98,0x56,0x7e,
- 0x4e,0x93,0xc0,0x51,0xef,0xb9,0x14,0x5e,0x1b,0xd9,0x66,0xaa,0xbd,0xec,0x69,0x5b,
- 0xfe,0x6b,0x83,0xd8,0x40,0x61,0xa2,0xf6,0xf0,0x2c,0xd8,0x69,0x45,0x7b,0xb6,0xcf,
- 0x82,0x97,0x0a,0xcb,0x06,0x22,0xf7,0x78,0x86,0xcd,0x2d,0x94,0x0a,0x5c,0x31,0x60,
- 0xcf,0x7f,0x99,0xac,0x13,0x17,0x4d,0xf5,0xe6,0x02,0x74,0x8a,0x72,0x31,0x2f,0x97,
- 0x49,0x5d,0x7d,0x9a,0xae,0x3b,0x66,0xe7,0x0e,0xc1,0xc3,0x11,0xdd,0xbd,0x58,0x63,
- 0x91,0x0c,0xfe,0x29,0x8c,0x19,0xdd,0xd0,0x0b,0x6a,0x0f,0xc2,0xda,0xf7,0x63,0xb5,
- 0xe2,0xda,0x88,0x5c,0x0a,0x7d,0xe2,0x23,0xdd,0xf9,0x23,0x36,0xa6,0xfc,0x9a,0x3c,
- 0x8e,0xc8,0x0c,0x7b,0xfe,0x6b,0x0c,0xc6,0xa1,0x8e,0xa2,0x61,0xbb,0x60,0x62,0x51,
- 0xbd,0x51,0x90,0x22,0x1e,0x7c,0x87,0xd2,0x40,0xa7,0x61,0xb4,0x89,0x14,0xef,0x0c,
- 0x7b,0xfc,0xe7,0x24,0xf1,0x9f,0x8d,0xfc,0x0b,0xe8,0x7d,0x1c,0xd3,0xe6,0x27,0x69,
- 0xdb,0x28,0xa7,0x70,0xdb,0x6c,0x22,0x06,0xec,0x31,0x51,0x6d,0xba,0x42,0xdd,0xb6,
- 0xfc,0x97,0xb2,0x5c,0xeb,0x31,0x9e,0x16,0x05,0x54,0xbf,0x73,0x52,0xaf,0x02,0x35,
- 0x8e,0x8a,0x14,0x3d,0x7a,0x53,0xed,0x62,0x65,0x1e,0x61,0x6c,0x87,0x6b,0xa2,0xcc,
- 0x96,0xff,0x92,0xca,0xe1,0x31,0xf7,0x57,0x44,0x24,0xe6,0xee,0x61,0xa9,0x30,0x05,
- 0x3a,0x9e,0xd6,0xf5,0x5b,0x1c,0x1b,0x3a,0xba,0x4b,0xe6,0x82,0x43,0x64,0xe5,0xbf,
- 0xb8,0x10,0xb0,0xb2,0x85,0x68,0x87,0x2c,0x4a,0xb4,0x1f,0x60,0x49,0x46,0x85,0x2a,
- 0xb2,0x87,0x81,0x88,0x58,0xc4,0x33,0x96,0x95,0xff,0x12,0xbf,0x86,0xe7,0x12,0xd7,
- 0xc6,0x8b,0x36,0xb0,0x23,0xd0,0x60,0x22,0xb0,0x21,0x60,0xfc,0xdc,0xa0,0x6b,0xdf,
- 0x0c,0x9f,0x78,0x59,0xaf,0xbd,0x32,0xff,0x75,0x96,0x4f,0xc2,0x01,0x67,0x01,0xbe,
- 0x26,0xb3,0x12,0x61,0x03,0xd2,0xb8,0x74,0x0e,0x6e,0xe6,0xae,0x4e,0xf9,0xac,0x73,
- 0xc2,0xb8,0x09,0x36,0x1d,0xcf,0xc2,0x3f,0x49,0x38,0x07,0x01,0xa5,0xa0,0x4b,0x1e,
- 0x5f,0x3f,0xe4,0xaf,0x46,0xff,0x6e,0x59,0x5c,0x4c,0xf2,0x6f,0xab,0x94,0x71,0xee,
- 0x9a,0xd4,0xf7,0x70,0xd7,0xf1,0xac,0xfc,0xd7,0xcf,0x8c,0x03,0xc3,0x1e,0xb2,0xe6,
- 0x43,0xa1,0x67,0xbe,0xc1,0x4e,0xaa,0x2f,0xb0,0xf9,0xc6,0x81,0xfe,0xaa,0x71,0x7e,
- 0x03,0xf3,0xb5,0x1c,0x28,0xf1,0x9c,0x53,0x7f,0x92,0x95,0xff,0x1a,0x52,0xf6,0x48,
- 0x31,0xb3,0xcd,0xef,0x1e,0xea,0x12,0xba,0x70,0xe3,0xfb,0x3a,0x95,0x28,0xe5,0x23,
- 0x58,0xee,0xe0,0xce,0x98,0x47,0x07,0xcb,0xdf,0xcc,0xe0,0x1f,0xf4,0xe6,0xc0,0xfa,
- 0xe8,0x92,0x08,0x44,0x89,0x6d,0xee,0xd0,0xf9,0x01,0x9d,0xea,0xbf,0x2a,0xbc,0xe8,
- 0x91,0xe1,0xc2,0xc6,0x98,0x1d,0xff,0x50,0xf6,0x33,0x00,0x0f,0xa2,0x3d,0x52,0x8e,
- 0x28,0x16,0xdb,0x44,0x87,0xf3,0xd2,0x7d,0x88,0x61,0xf1,0x0b,0x7a,0x07,0xac,0xd4,
- 0x95,0x1d,0xff,0x1c,0x54,0xfe,0x88,0x66,0x5d,0x45,0x6b,0xae,0xdd,0x21,0x35,0xc2,
- 0x5f,0x9b,0xcd,0x63,0x70,0x89,0xdd,0x6c,0xe2,0xc6,0x38,0xa7,0xa4,0x52,0x87,0xd9,
- 0xf8,0x07,0x8e,0xe8,0x56,0xb6,0x6b,0x97,0x7e,0x04,0x82,0x03,0x4e,0x3f,0xae,0xff,
- 0x21,0x78,0xae,0x9f,0x22,0x1e,0xda,0x45,0xdd,0xc2,0xdb,0xe3,0x36,0xfc,0x83,0x4e,
- 0xa8,0xe9,0xa1,0xe7,0xef,0x17,0x11,0xe6,0xa9,0xe3,0x11,0x96,0xd4,0xd7,0x47,0xe8,
- 0x08,0xbe,0x56,0x5f,0x08,0x77,0x94,0xc8,0x8a,0xff,0x18,0x56,0x99,0x52,0x09,0x75,
- 0x26,0x10,0xe8,0x61,0x96,0x70,0x36,0x00,0x61,0xa1,0xd3,0x65,0xa8,0x91,0x0c,0x9f,
- 0x8e,0xeb,0x33,0x61,0xc3,0x3f,0x05,0xe2,0x91,0x48,0xa9,0xc9,0xef,0x63,0x6f,0xb2,
- 0xb5,0x94,0xf6,0x5a,0xcd,0xde,0x34,0xd6,0xa0,0xb0,0xf8,0x3e,0xf7,0x8f,0x94,0x7d,
- 0xd1,0xca,0xb7,0xd5,0x15,0x59,0xf8,0xa7,0x80,0xd2,0x52,0x63,0xce,0x7a,0x79,0x43,
- 0x34,0xb1,0xad,0x06,0x9c,0xbc,0x73,0x08,0xff,0x0b,0x35,0x89,0xf9,0x6a,0x73,0x8b,
- 0x36,0x1e,0x6b,0x80,0x02,0x2d,0x2b,0xfe,0x13,0x63,0x63,0xd2,0x6c,0x27,0x2e,0x42,
- 0x12,0x2e,0x17,0x2e,0x1c,0x9c,0x8f,0x6f,0x07,0xbf,0x27,0x1a,0xf3,0x59,0xb9,0xce,
- 0xb0,0xe2,0x3f,0xa3,0xd9,0xf1,0x1f,0x5c,0xff,0x5a,0x20,0x6f,0xd4,0x62,0x43,0xf9,
- 0xfc,0x45,0xdb,0x29,0xec,0x46,0xeb,0x7f,0x86,0x11,0x50,0x2c,0xc8,0xca,0x7f,0x15,
- 0x3e,0x4e,0xf1,0x1f,0x0a,0x6a,0xcd,0x82,0x83,0xac,0x14,0xb8,0xe1,0x76,0x42,0x17,
- 0xf8,0xfa,0xb9,0xc1,0x4e,0xa0,0x50,0x4a,0x89,0x78,0x3b,0xfe,0xb1,0xe2,0x3f,0xf4,
- 0x9a,0xb3,0x53,0x69,0xbe,0xd5,0xe1,0x14,0xfe,0xc1,0x23,0x47,0xa1,0xf3,0x5f,0xaa,
- 0xff,0x8a,0xa3,0x7f,0xd1,0x0a,0x0c,0x77,0x4c,0x12,0xd7,0x9f,0xf8,0x0c,0x82,0xfb,
- 0x20,0x52,0xe0,0x19,0x00,0xd2,0xe7,0x7f,0x52,0xff,0x75,0x01,0x6a,0x3b,0x9c,0x94,
- 0xff,0xba,0x90,0x0c,0x44,0x96,0xec,0x9a,0xd1,0x43,0xfd,0x13,0x84,0xf3,0xa7,0xf2,
- 0x99,0xc8,0x61,0x33,0x10,0x77,0x9d,0xc9,0xc2,0x3f,0xe3,0x56,0xd9,0x97,0xcb,0x90,
- 0x77,0x03,0x95,0x7d,0xcd,0xc7,0xad,0x04,0x53,0xdb,0x66,0x9c,0x88,0x19,0xb0,0xd4,
- 0xbc,0x02,0xff,0x9c,0x97,0x82,0xc6,0x92,0x68,0x11,0xb1,0x91,0x03,0xa1,0x25,0x57,
- 0x77,0x96,0xa3,0xbd,0x6b,0x30,0x96,0x6b,0x65,0xe5,0xfc,0x7c,0x22,0xd0,0x94,0x7f,
- 0x45,0xfd,0x17,0xec,0x87,0x02,0x83,0x23,0xfe,0xa1,0x44,0xcc,0x8a,0xfc,0xad,0x54,
- 0x76,0x2d,0xaa,0x8c,0x88,0x55,0x91,0x2d,0x62,0x08,0x8d,0x98,0x9e,0x15,0xff,0x79,
- 0x41,0x92,0x8d,0xbc,0x61,0x56,0xa3,0xbf,0x00,0x3b,0x5a,0x49,0x30,0x5e,0xd0,0xe7,
- 0x1b,0x8e,0x61,0x47,0x0d,0xbc,0x00,0x65,0xad,0xc4,0x57,0xb1,0xe9,0x9f,0xe2,0xd8,
- 0xb3,0xde,0xca,0xb6,0x79,0xcb,0xde,0x25,0xc1,0xaa,0xf6,0x4a,0x1d,0x71,0xa0,0x10,
- 0x7f,0xd6,0x2b,0xb7,0xf1,0x65,0x57,0xe0,0x9f,0xe7,0xf5,0x3a,0x9e,0x4f,0xd5,0x5e,
- 0x13,0x08,0x84,0x48,0x88,0x50,0xfe,0xeb,0xf6,0x70,0x91,0x2e,0x2e,0xe0,0x11,0xe7,
- 0x80,0x6a,0xe7,0xff,0x58,0x6c,0x8d,0xc3,0x05,0xbd,0x88,0x7f,0xce,0x57,0x50,0x21,
- 0x98,0x9a,0x5a,0x81,0xdb,0x36,0x3f,0x8c,0x47,0xbc,0x41,0x82,0x0a,0xb6,0xf8,0xcf,
- 0x2d,0x23,0xfc,0x9f,0x53,0x24,0x9f,0x9a,0x58,0x87,0xbf,0x9a,0xd8,0xce,0x35,0xf0,
- 0x9a,0x5e,0xd4,0xe6,0x7c,0x58,0x5e,0x6e,0x31,0x36,0x79,0x36,0xff,0xe7,0x34,0x6c,
- 0x95,0x3c,0x39,0xf9,0x94,0xff,0xea,0xa9,0xf1,0x94,0xe0,0x87,0xe6,0x35,0x10,0xff,
- 0x80,0xb7,0xb3,0xa9,0xd4,0x1f,0xe1,0x56,0x69,0x98,0x1d,0xff,0x0c,0xde,0xda,0x31,
- 0x73,0xbb,0x95,0xff,0x8a,0x6d,0xd3,0x63,0x2d,0x75,0x85,0x15,0x8a,0x95,0xf6,0x42,
- 0x58,0xd8,0x62,0x76,0xa0,0xf9,0xf1,0x16,0x66,0xe3,0x1f,0x8a,0xf6,0x1b,0x79,0x51,
- 0xc7,0x1c,0xb1,0xcd,0x62,0x8f,0x7b,0xca,0x8d,0x75,0x08,0x44,0x79,0x94,0xcd,0x61,
- 0xeb,0x52,0x7c,0x72,0x1b,0xfe,0x29,0xfc,0x2d,0xbc,0x6e,0x06,0x56,0x39,0x1f,0xff,
- 0xd4,0xf5,0xf0,0x5e,0x0a,0xe8,0x5e,0x4f,0xb0,0x96,0x12,0x61,0x5f,0x9e,0x86,0xbe,
- 0x76,0xfc,0xf3,0x04,0x9c,0x37,0x82,0xed,0x4b,0xb7,0x34,0x8f,0x4c,0x47,0x7b,0x5e,
- 0x65,0xd3,0x89,0xb0,0x54,0x45,0xbc,0x66,0xaf,0xff,0xd2,0x04,0x0c,0xeb,0x01,0xb4,
- 0xc2,0x5f,0xa2,0x66,0x22,0x68,0x0d,0x81,0x02,0x8f,0x28,0x2c,0x15,0xcd,0x12,0x9e,
- 0xf2,0x53,0x21,0xbc,0x3d,0xfe,0xe3,0x85,0xa3,0x09,0x8f,0xf0,0xc6,0xe4,0x1b,0xa1,
- 0x80,0xed,0x10,0x6a,0x0f,0x1a,0xb2,0xe7,0x41,0xa7,0xb2,0x77,0xca,0xf0,0x7a,0x62,
- 0x3c,0xab,0xfe,0x3d,0x67,0x09,0xfa,0x5f,0xdb,0x4d,0x1e,0x6f,0xbb,0xcd,0xd3,0x09,
- 0x9e,0x21,0xb5,0x84,0xbd,0x0a,0xbb,0xd1,0x71,0x40,0xc5,0xeb,0x64,0x9d,0xa9,0xfe,
- 0x1b,0x87,0x6d,0xf8,0xc7,0x89,0x68,0xb9,0x74,0x10,0x0f,0x16,0x53,0xfe,0x1a,0x61,
- 0x4f,0xf8,0x94,0xbe,0xcf,0x28,0xa5,0xc4,0xd9,0x2c,0xd1,0x09,0xa5,0x03,0x7c,0x15,
- 0xfe,0x17,0xa7,0xef,0xdf,0xc3,0x67,0x53,0xb5,0xd7,0x19,0xe7,0x7d,0xf2,0xed,0xce,
- 0x9f,0x87,0x2d,0xfe,0xf3,0x9b,0xf0,0xb1,0xd8,0x4d,0x61,0x9f,0x02,0xf1,0x6a,0xaa,
- 0xfe,0xeb,0x4c,0x06,0xff,0x7c,0x7a,0x17,0x7b,0x0f,0x66,0x27,0xd0,0xcc,0x8d,0x4c,
- 0xd1,0x9e,0x09,0xf6,0xb0,0x60,0xbf,0x6b,0x37,0x2a,0xea,0x54,0x6a,0x2c,0x0b,0xff,
- 0x4c,0x9a,0x97,0x45,0x35,0x05,0x79,0x82,0x70,0x2c,0xb1,0x70,0xa7,0x93,0x88,0xd0,
- 0x68,0xd6,0x7f,0xe3,0x3a,0x28,0x07,0xf5,0x63,0xa2,0x28,0xe9,0xda,0x6f,0xaf,0x7f,
- 0x2f,0xfc,0x51,0xff,0x6f,0x5b,0x4b,0xdf,0xf3,0x8e,0x87,0x8b,0x61,0x87,0x62,0xd5,
- 0x9f,0x9e,0xf2,0xac,0x2d,0x29,0x35,0x8b,0xea,0xd7,0x37,0x28,0xdb,0xf9,0x0d,0xa6,
- 0xfa,0x2d,0x5b,0xfd,0x17,0xc0,0xe3,0xb0,0x43,0x2b,0x4d,0x20,0xa8,0x9b,0xa5,0x3f,
- 0x02,0xe5,0x74,0xfd,0x90,0x41,0x2f,0x2e,0xdf,0xcb,0xee,0xc2,0xa5,0xc3,0x15,0xb8,
- 0x37,0x2b,0xfe,0x73,0xd4,0xd8,0x21,0x62,0xe3,0x79,0xf5,0xb9,0x33,0x60,0x8f,0xa1,
- 0x47,0xbd,0x37,0xb2,0x21,0xd1,0xd9,0xa2,0x1f,0x52,0x1b,0xd8,0x6d,0xd0,0xd3,0x65,
- 0x75,0xe4,0xb0,0xc7,0x7f,0x76,0xc1,0x3b,0xa2,0xfa,0xed,0xca,0x49,0xdc,0x36,0x6f,
- 0xb5,0xd7,0x8e,0x6e,0x88,0xcb,0xc7,0xe0,0x88,0xe8,0x1d,0x77,0x4d,0xc8,0xdf,0x8d,
- 0x1c,0x11,0x7e,0x6a,0xb4,0x72,0x26,0x5d,0x0f,0x8b,0xf8,0x47,0x7f,0xbf,0xb5,0x61,
- 0xa0,0x20,0xde,0x9c,0x14,0xef,0x68,0xc1,0x88,0x2b,0xbe,0x76,0x0c,0x3e,0xce,0x0b,
- 0x0e,0xba,0xfc,0x9d,0xbb,0xc4,0x45,0xfe,0x9d,0xb7,0x51,0xb0,0xe3,0x9f,0x53,0xf0,
- 0x56,0xb8,0xd6,0x74,0xae,0xc2,0xcf,0x0a,0x81,0x90,0xb9,0xe4,0x7e,0x39,0x98,0x77,
- 0xc4,0xb4,0xca,0xbe,0x66,0xc1,0x51,0x7d,0x61,0x72,0xc9,0x78,0x99,0x1d,0xff,0xac,
- 0xd4,0xba,0x4d,0x8f,0xd9,0x1a,0x47,0xa5,0xd1,0x8d,0xfe,0x94,0x37,0x4e,0xf5,0x5f,
- 0x60,0x95,0xbd,0xfb,0x60,0xbd,0x5e,0xdb,0x9f,0x1f,0x67,0x59,0xfc,0x1f,0xe8,0xd6,
- 0xe7,0x52,0x52,0x63,0xae,0x8e,0x97,0x45,0x89,0xff,0x63,0x3c,0x66,0x5d,0xef,0xf0,
- 0xc1,0x63,0x54,0x08,0x16,0xb7,0xe3,0x1f,0xc8,0xc7,0x4d,0xa5,0x9f,0xac,0x5b,0x80,
- 0xda,0xac,0x53,0xd3,0x85,0xc3,0xef,0xa0,0x8a,0xf8,0x58,0xbf,0x1a,0x70,0x38,0x95,
- 0x87,0xb5,0x72,0x33,0xcf,0x7f,0xb5,0x0d,0xff,0x38,0xbf,0x0a,0x47,0x60,0xe1,0x2f,
- 0x9d,0x7b,0xcb,0x14,0xf6,0x73,0xa3,0x57,0x38,0x9f,0x65,0x3e,0xfe,0x18,0xd1,0x4a,
- 0xbf,0x29,0x5b,0x15,0xf1,0x64,0x9a,0xed,0xf8,0x67,0x6c,0xd1,0xef,0x60,0x36,0xbe,
- 0x5d,0xf5,0x39,0xb8,0xcc,0x1a,0x85,0x15,0xf8,0xb2,0x68,0xab,0x1f,0x77,0x4e,0x82,
- 0x15,0xfa,0x38,0x97,0x85,0x7f,0x06,0x61,0xa8,0x2b,0x00,0xf3,0xef,0x94,0x27,0x43,
- 0x68,0xdd,0xa0,0xa0,0x4f,0xbe,0x16,0x7e,0x47,0x8c,0xa9,0x8f,0xe4,0x11,0xf6,0x0a,
- 0x54,0xeb,0xbe,0x89,0x2c,0xfc,0xf3,0xa1,0x32,0xcc,0x3c,0x12,0xdf,0xea,0xa9,0x14,
- 0x2f,0x41,0x15,0x15,0x6a,0x35,0x88,0x67,0xf4,0xb2,0x90,0xfa,0x09,0xfb,0x03,0x5b,
- 0x67,0x56,0x24,0x79,0x6f,0xd8,0x1e,0xff,0x19,0xb4,0x5a,0x0e,0xa9,0x51,0xb6,0x24,
- 0x15,0xdd,0x8a,0x33,0xa7,0xe8,0xe4,0xba,0x81,0xdf,0xcb,0x20,0x8b,0x19,0x1e,0x51,
- 0x12,0xb8,0xa2,0xfe,0xfd,0x07,0x06,0xa2,0x85,0x68,0x2a,0xbf,0x36,0xc0,0xfb,0x88,
- 0x56,0x2d,0xb6,0x1b,0x8b,0xe3,0x30,0xa6,0xf5,0x88,0x8a,0x64,0x24,0x9e,0x85,0x7f,
- 0x46,0xee,0x4c,0xb4,0xfb,0x6b,0x5c,0x85,0xea,0x4a,0x85,0x1a,0x23,0x14,0x10,0x3f,
- 0xf9,0x7d,0xf4,0xc8,0x36,0xc5,0xe5,0x11,0xe3,0x3d,0xd3,0xdf,0xe3,0xcc,0xc6,0x3f,
- 0x3f,0x42,0x7c,0x18,0x84,0xa5,0x27,0xe5,0x95,0x30,0xc5,0x76,0x9e,0xa4,0xb2,0xf7,
- 0xdf,0xb8,0xc6,0x3b,0xcf,0xc1,0x3f,0xa7,0xf2,0x3b,0x59,0xfc,0x67,0x91,0x08,0x05,
- 0x34,0xdf,0x66,0xd9,0xc7,0x8f,0x40,0xcd,0x70,0x3e,0x7e,0x8f,0xf2,0x11,0xaa,0xe7,
- 0x25,0x86,0xde,0x2f,0x8c,0xc0,0x16,0x67,0x5c,0xb5,0xc7,0x7f,0xe6,0x87,0x23,0xfd,
- 0x4f,0x07,0xbc,0x5b,0x58,0x83,0x7b,0x13,0xae,0x8f,0x77,0x1f,0x9b,0x0c,0x59,0xfd,
- 0x5b,0x26,0xc2,0x83,0x94,0xa1,0xa0,0xfe,0x3f,0x76,0xfe,0xcf,0xad,0x10,0x11,0xe5,
- 0x03,0xbc,0xd8,0x8a,0x97,0x96,0x13,0x8d,0xe7,0x03,0x34,0xd1,0xe5,0x2d,0x79,0x75,
- 0x6c,0x10,0x76,0x7f,0x5d,0x4f,0xe6,0xf9,0xb3,0xf8,0xcf,0xb3,0x87,0xbb,0xa2,0x95,
- 0x94,0x06,0x9a,0x6d,0xac,0x15,0x5f,0x1d,0xe5,0xf7,0x35,0xbd,0x49,0x78,0x20,0xd4,
- 0xbd,0x9a,0xfd,0x0a,0xf2,0x63,0xdb,0x4e,0x4b,0xd9,0xfc,0xe7,0x5c,0x61,0xf2,0x9a,
- 0x78,0x44,0x53,0x9d,0xf0,0x72,0xbc,0x66,0xc0,0x79,0xa3,0x3c,0x04,0x9d,0x46,0xcd,
- 0x92,0xfc,0xc0,0x8c,0xa3,0xfa,0xb2,0x98,0x7f,0x70,0x4d,0x3c,0x8b,0xff,0x73,0xd0,
- 0x98,0x94,0xea,0x37,0xb8,0xce,0x96,0x8d,0xc1,0xe5,0x96,0x6b,0x13,0xd4,0x2f,0x42,
- 0xbf,0xac,0x05,0xef,0xc0,0x65,0xf9,0x67,0xe5,0xb2,0x45,0x94,0xca,0xc2,0x3f,0x83,
- 0x90,0x90,0x02,0x46,0x6e,0x54,0xfe,0x29,0x3b,0xd2,0x6e,0xd1,0xae,0xc6,0xc4,0xb7,
- 0xa1,0x7e,0xd8,0xf5,0x1c,0xba,0x06,0xaf,0xcb,0x01,0x73,0x53,0xbc,0xd9,0x8e,0x7f,
- 0xb6,0x20,0xc8,0xd9,0x41,0x41,0xe3,0x59,0x62,0xad,0x5e,0x69,0x52,0x22,0xcc,0x24,
- 0x44,0xa4,0xde,0x8b,0x1a,0x69,0x8d,0xa5,0x51,0xb3,0xf0,0x4f,0x80,0xad,0x11,0x77,
- 0x27,0xdb,0x4e,0xe6,0x1e,0x5d,0xb4,0x56,0xf8,0x92,0xeb,0x89,0x08,0xfd,0x88,0x98,
- 0x33,0xae,0xde,0xc8,0xbe,0x08,0x8f,0x74,0x94,0x26,0xaf,0xc9,0xc6,0x3f,0x47,0x41,
- 0xe8,0xfa,0x29,0x4e,0x61,0xb4,0x4e,0xf0,0x8d,0xe5,0x15,0xa2,0xff,0xd2,0x1b,0xf3,
- 0x25,0xbb,0xad,0x23,0xa1,0xd0,0x88,0xea,0xcf,0xc2,0x3f,0x7d,0xa1,0xa3,0x7a,0x35,
- 0x82,0x6c,0x99,0xbc,0xe3,0x9b,0x63,0x05,0x3d,0x28,0x5c,0x4a,0xd6,0x13,0xed,0x79,
- 0x05,0xbc,0xd9,0xb2,0x87,0x5c,0xd1,0xac,0xf8,0x0f,0x9f,0x90,0x1a,0xb4,0xa5,0xe9,
- 0x6c,0x57,0x97,0x9c,0xce,0x88,0x09,0xe3,0x5f,0xc8,0x7f,0x0d,0x4a,0x64,0x0d,0x97,
- 0x44,0x9b,0xa9,0x0c,0x3c,0xd0,0x92,0x1f,0x95,0xe7,0x8a,0xd7,0xa5,0xda,0x90,0x13,
- 0x11,0x91,0x58,0x07,0xf5,0xc4,0x8f,0x1d,0xc8,0xc2,0x3f,0xb8,0x49,0x56,0x38,0xb6,
- 0x10,0xda,0x61,0x15,0xab,0xf2,0xb7,0x38,0xe6,0x78,0xd7,0x49,0xe5,0x46,0x8f,0x56,
- 0xf6,0xdf,0x94,0x0e,0xca,0x8f,0x5f,0x91,0xff,0x62,0x1d,0xc2,0x43,0x49,0x99,0xe5,
- 0xb0,0x1b,0x2a,0xda,0x1d,0x5a,0x58,0xc1,0x3b,0xcc,0x6d,0x8d,0x6c,0xc9,0xdd,0xe9,
- 0x79,0x46,0xab,0x68,0xbd,0xa2,0xfe,0x2b,0x37,0x86,0x46,0xad,0x6d,0xbd,0x3f,0x57,
- 0x89,0xed,0x9e,0xc7,0xdb,0xd0,0x1b,0x55,0x76,0x74,0x48,0x73,0x89,0xff,0x43,0x85,
- 0x60,0x1e,0x03,0xae,0xa8,0xff,0x42,0x7f,0x2d,0xc0,0xab,0x84,0x1c,0x42,0xfc,0x53,
- 0x41,0x82,0x2e,0x12,0x70,0x15,0xdf,0x10,0x6e,0x8e,0x45,0x47,0xf5,0x7a,0xe2,0x9f,
- 0x1c,0xb5,0xf3,0x9f,0xe1,0x93,0x8a,0xc6,0x36,0x57,0xbb,0x3c,0x12,0x3f,0x8f,0x42,
- 0xfe,0xf1,0xce,0x91,0x9d,0x56,0xfd,0x57,0xb4,0xf9,0x0e,0xf6,0x8f,0x54,0xe1,0x75,
- 0x65,0xfd,0xd7,0x2b,0xd0,0x88,0xb0,0x87,0xed,0x8c,0x1d,0xf2,0x57,0x1b,0x88,0x7f,
- 0xce,0x21,0x6c,0xb0,0xea,0xdf,0xcf,0x81,0x55,0x11,0x16,0xcd,0xc6,0x3f,0x5a,0x2b,
- 0xaf,0x52,0x22,0x82,0x85,0x44,0xc4,0xbf,0x70,0x73,0x05,0x84,0x93,0x46,0xc4,0x5b,
- 0x05,0x8e,0x0e,0x76,0x1a,0x4e,0x4a,0xe8,0x5f,0x84,0x37,0x3f,0x68,0xd7,0x3f,0x4d,
- 0x1d,0x92,0xcf,0xc8,0xd3,0x3c,0x83,0xb1,0x87,0x74,0x7d,0x49,0x1e,0x25,0xfe,0x3a,
- 0x62,0x54,0xff,0xee,0x1e,0x31,0xa8,0x10,0xbe,0xdb,0x9d,0x8d,0x7f,0xba,0x1e,0xbd,
- 0xa7,0x0a,0xf1,0x0f,0xae,0xe7,0xa3,0x50,0x7e,0x8b,0x9a,0xe2,0xff,0x54,0xdd,0xe2,
- 0x88,0x7a,0x46,0xe0,0xd1,0x10,0x15,0xe2,0xb1,0x07,0xec,0xf1,0x1f,0x71,0x68,0x20,
- 0xb8,0x22,0x3f,0x5a,0xb4,0x93,0x11,0x6d,0x3b,0x9f,0xf8,0x3c,0x87,0x20,0x88,0xbf,
- 0x6f,0xf3,0x20,0x1c,0x12,0xc1,0x90,0x2b,0x1b,0xff,0x3c,0x40,0x6c,0x8d,0xf6,0x2a,
- 0x62,0x07,0xa1,0x60,0x14,0x50,0x99,0x58,0x8a,0x11,0xd4,0x4c,0x44,0xe8,0xd9,0xab,
- 0x36,0x45,0xb3,0xe2,0x3f,0xdb,0xfc,0x77,0x7a,0xfc,0x57,0xf9,0xc8,0x89,0x1e,0x87,
- 0x80,0x8e,0x8e,0x86,0x8e,0x30,0xa0,0x56,0xa1,0x44,0x98,0x9f,0xea,0xdf,0x51,0xb0,
- 0xc7,0x7f,0x6e,0x54,0x8e,0xea,0x65,0xb1,0xd6,0x10,0xeb,0x41,0xd8,0xf3,0xb7,0x7d,
- 0xde,0x51,0xf7,0xa7,0xcd,0xf5,0xe0,0x8b,0x2d,0x1e,0x91,0xbf,0x25,0x3e,0x3c,0xd4,
- 0x19,0x53,0x63,0x4d,0x76,0xfe,0xf3,0x67,0x59,0xa7,0x59,0x3e,0xce,0xab,0x99,0x4f,
- 0xdb,0xa3,0xe8,0x94,0x7d,0x70,0xf2,0x1d,0xe4,0x98,0x57,0x86,0x0b,0x58,0xa7,0x80,
- 0x51,0x34,0x7c,0x36,0xfe,0xb3,0xd4,0x80,0x58,0xac,0xdc,0xe4,0x21,0xc7,0xe3,0x62,
- 0x8f,0x7f,0x9e,0x19,0xb9,0x33,0x5c,0x2c,0x59,0xf1,0xdb,0x56,0xd6,0x02,0x4f,0x0a,
- 0x8b,0x21,0x63,0x8f,0xff,0xcc,0x56,0x06,0x3b,0x6e,0x48,0x3a,0x43,0xf2,0xec,0x9e,
- 0x3f,0x8a,0xd2,0x98,0x63,0x05,0x3e,0xed,0x6f,0xf1,0xc8,0xd2,0xd5,0x33,0x66,0x43,
- 0xbf,0x58,0x90,0x5c,0x3a,0xa1,0xda,0xf8,0xcf,0x9f,0xdd,0x80,0x6f,0xf7,0xbc,0xb9,
- 0x54,0x97,0xc7,0xcc,0x8b,0x6d,0x0d,0x61,0x57,0x94,0xf8,0x84,0xee,0x20,0xd1,0x74,
- 0x47,0x58,0x1e,0x20,0x10,0xca,0xc6,0x3f,0xa7,0x8c,0x7f,0x12,0x0b,0x7f,0x93,0x9f,
- 0x90,0x5f,0x84,0xb7,0x3a,0x1a,0x93,0x9b,0x26,0xca,0x50,0x10,0xd5,0x23,0xce,0xa7,
- 0xe4,0xab,0xb5,0x9f,0x77,0x11,0x34,0xea,0xb4,0xe3,0x9f,0x1f,0x0a,0x74,0xb2,0xfa,
- 0x12,0x4d,0xe8,0x4f,0xfd,0x12,0xae,0x3f,0x34,0xe3,0x5e,0x7d,0x0b,0x02,0x83,0xd2,
- 0xd1,0x82,0xaf,0xb1,0x42,0x65,0x07,0x15,0x62,0x7c,0x9d,0xd9,0xf1,0xcf,0x41,0xee,
- 0x82,0x39,0x83,0x79,0x26,0x3b,0xa5,0xd1,0x6b,0xb6,0x85,0x62,0x11,0x78,0x04,0xe6,
- 0xf4,0xe7,0xe9,0xe8,0xc1,0x11,0x83,0xe8,0x8a,0xfc,0xd7,0x31,0x11,0x21,0xf6,0x26,
- 0xa0,0xb6,0x79,0x0c,0xca,0x07,0xf2,0xfa,0xf0,0xdd,0x3a,0x23,0xe5,0xa6,0x43,0x67,
- 0x05,0xc6,0x0e,0xa5,0x67,0x18,0x2d,0xa6,0x1d,0xff,0x3c,0xc0,0xba,0x79,0xed,0xdb,
- 0xf9,0x9c,0x4d,0xe2,0x63,0x34,0x0c,0x17,0x50,0xfd,0xce,0x5b,0xf0,0x63,0x33,0x3f,
- 0xa6,0x56,0x41,0xa7,0x14,0x38,0xed,0x1b,0x2f,0x3b,0x63,0x8f,0xff,0xb4,0x8e,0x4a,
- 0xc1,0xe1,0xa5,0x11,0x75,0x17,0xbf,0x08,0xb5,0x83,0x05,0xd1,0xb2,0xdf,0xc0,0x45,
- 0xad,0x2e,0x89,0x8a,0xe8,0x03,0xb8,0xc8,0x83,0xa7,0xae,0xe0,0x3f,0x9f,0x83,0x37,
- 0x79,0xb5,0xe9,0x33,0x9b,0x1b,0x88,0xbd,0x29,0x66,0x24,0xcb,0x7e,0xc5,0x8e,0x01,
- 0x4b,0x14,0x24,0xe5,0x49,0xe5,0xad,0x62,0x5c,0xa8,0xf1,0x2c,0xfe,0xf3,0xd7,0x20,
- 0xa2,0xe8,0xc9,0xd6,0x08,0xda,0xc7,0x03,0x88,0x96,0x57,0x44,0x99,0x07,0x17,0xca,
- 0x93,0x44,0x47,0xfe,0x55,0x78,0x06,0xf4,0x51,0x9e,0x8d,0x7f,0xe6,0xc2,0x63,0xc2,
- 0x13,0xe2,0x1b,0xc8,0x5e,0x4b,0x5f,0x49,0xe4,0xc5,0xd9,0xdf,0x10,0x4d,0xd7,0x6c,
- 0xeb,0xf1,0x7c,0xc8,0x51,0x10,0x91,0x2c,0xfc,0xa3,0x38,0x25,0xc4,0x03,0x27,0xad,
- 0xf5,0x21,0xa2,0xa6,0xd7,0x8f,0xeb,0xf3,0x18,0xc4,0x12,0x1c,0xc2,0xaf,0x71,0x8f,
- 0xe9,0xe9,0xe0,0xfe,0x02,0x7b,0xfc,0xe7,0xcb,0x8b,0x7e,0x0d,0xbd,0xc7,0xb9,0x28,
- 0x9b,0xd5,0x75,0xb9,0xbd,0xd6,0xcc,0x9f,0x23,0x87,0x94,0x23,0x8a,0xfb,0x70,0x41,
- 0x4c,0xfe,0xa0,0xf0,0xf5,0x45,0x01,0x2a,0x9d,0xb3,0xe3,0x9f,0x49,0x31,0x06,0x0d,
- 0xe6,0x0c,0x43,0x1a,0x33,0xbe,0x5b,0xde,0x68,0x6c,0xfc,0x08,0xd1,0xcb,0x65,0xf8,
- 0x8e,0x39,0xc3,0x94,0x27,0xd9,0x51,0xf4,0x11,0xb3,0xeb,0xdf,0x73,0x3e,0xbc,0xe5,
- 0x72,0xb4,0x31,0xe9,0x3b,0x2f,0x4f,0x8a,0x63,0x62,0x4f,0x79,0x41,0x9f,0x2b,0x08,
- 0xbf,0x8b,0x06,0x5e,0xd9,0x70,0x56,0xbe,0x09,0xde,0x8a,0x56,0x27,0x97,0x4c,0x96,
- 0xd9,0xeb,0xbf,0xa8,0x2c,0xcb,0x47,0xa0,0xee,0xab,0xb1,0x6e,0xaf,0x27,0xa1,0xf6,
- 0x32,0x5f,0x4c,0xf6,0x54,0x44,0x5a,0xff,0x78,0x4f,0x0f,0x7f,0xa6,0xd4,0x93,0x40,
- 0x84,0x63,0xaf,0xff,0x1a,0x8a,0x96,0xe9,0xbe,0x01,0xee,0x87,0x8d,0xf8,0x6b,0xea,
- 0x89,0x6e,0x7f,0xd8,0xa9,0xec,0x90,0xbc,0xe6,0x0a,0xbf,0xc3,0x27,0xf6,0xe8,0x9e,
- 0x01,0x1e,0xb0,0xd5,0x5f,0x10,0xfe,0x39,0x90,0x22,0xc9,0x50,0x1b,0x37,0x0f,0xf1,
- 0x7f,0x9c,0x28,0x78,0x4f,0xa2,0x45,0xfb,0x29,0x6c,0x8f,0x78,0x08,0x41,0xd9,0xeb,
- 0xbf,0x52,0xd5,0x01,0xce,0xfd,0xf2,0x2e,0x76,0xa4,0x23,0x90,0x7c,0xf0,0xa0,0xbb,
- 0xaa,0xf0,0x7d,0xa8,0x1f,0x6f,0x8d,0x17,0xb9,0xf4,0xd7,0x45,0x9c,0x1a,0xf1,0xd9,
- 0xeb,0xbf,0x0e,0xf2,0xef,0x42,0xe3,0xb8,0x05,0x7b,0x2e,0x7b,0x10,0xed,0x7c,0x44,
- 0x65,0x80,0xd1,0x60,0x72,0xe9,0xb8,0x7c,0x8e,0xbf,0xa4,0x34,0x8e,0x5c,0x81,0x7f,
- 0x76,0xc1,0xfb,0x4a,0x00,0x41,0x4b,0x91,0x4f,0x79,0x5f,0xaa,0x35,0x7d,0x7b,0x55,
- 0x9f,0x76,0x11,0x02,0x89,0xfc,0x3d,0xf2,0x57,0x0d,0x8a,0x6f,0x5c,0x51,0xff,0x55,
- 0x69,0x1c,0xb8,0xd3,0x73,0x82,0xef,0xcb,0xbd,0x76,0xf9,0x81,0x76,0xcf,0xaf,0xf8,
- 0xb3,0x1e,0x9f,0x38,0x70,0xe7,0x17,0x4e,0xf2,0x73,0x6c,0xbe,0xb1,0x5e,0xd4,0x9e,
- 0xcb,0x7f,0x21,0xbb,0xfe,0xdd,0x78,0x18,0xb6,0x8f,0x20,0xc8,0x29,0x80,0x67,0xa2,
- 0xe5,0x66,0xc5,0x7e,0x96,0x5f,0x7e,0x40,0xe8,0x8b,0xf2,0xea,0x72,0xbb,0x78,0x67,
- 0xab,0x9e,0x2c,0x89,0xb3,0xd5,0x76,0xfc,0x03,0xfb,0xa2,0xa5,0x56,0x3c,0x44,0x90,
- 0x10,0xb9,0x2f,0x97,0x02,0x23,0x73,0x92,0x25,0x75,0xec,0x39,0x58,0xbb,0xfe,0xcb,
- 0x49,0xe9,0xbe,0x2b,0xe2,0x3f,0x17,0x35,0x3f,0x3e,0xbf,0xc3,0x69,0xbc,0x0f,0xb5,
- 0x27,0x0a,0x5e,0xa4,0x44,0x3f,0xe8,0x44,0xd4,0x19,0x42,0x43,0xe3,0x1f,0x70,0x3e,
- 0xdf,0xb9,0x2c,0x0b,0xff,0x7c,0xd7,0x6a,0x8b,0x24,0x4d,0x0e,0x5f,0x4c,0x55,0xbb,
- 0x4f,0x1a,0xdf,0x85,0xe0,0xe0,0xa6,0xbd,0xea,0x5d,0xec,0xa2,0x76,0xf3,0xa0,0xeb,
- 0xac,0x6c,0xcf,0x7f,0x8d,0x21,0x3e,0xaf,0xb7,0x60,0x0f,0x0a,0xb5,0xe6,0xa6,0x68,
- 0xd9,0x87,0x1a,0xd1,0xa2,0x0a,0xf6,0xc8,0x2b,0xf9,0x21,0x11,0xa0,0x40,0x99,0xbd,
- 0xfe,0xeb,0x20,0x6c,0x02,0x4b,0x69,0xfc,0xb3,0xe5,0x3f,0xca,0x54,0x4f,0xba,0x96,
- 0xe2,0x81,0x1f,0xb1,0xbd,0xec,0x49,0x78,0xaa,0x9f,0xaf,0xca,0xaa,0xff,0xfa,0x11,
- 0xa2,0xbb,0xf9,0x44,0x73,0x7a,0x53,0x6c,0xa2,0xfa,0xf7,0xd5,0xa1,0x4b,0x84,0xf7,
- 0xc6,0xf1,0xc8,0x6c,0x7d,0xa3,0xb0,0x96,0xc2,0x5e,0xff,0x35,0x44,0x30,0xb2,0x85,
- 0x7f,0x9a,0xf2,0x5f,0x61,0x7d,0x52,0x9d,0xc3,0x6e,0x85,0x8e,0x42,0xdf,0x30,0xee,
- 0x9f,0x8d,0x62,0x87,0xf0,0x86,0x78,0x76,0xfd,0x57,0x0f,0x7a,0xb7,0x56,0xfd,0xfb,
- 0x28,0x1c,0x8d,0x55,0x47,0x5d,0x49,0x79,0x14,0x8f,0x34,0xc6,0x1c,0x31,0xb9,0x9e,
- 0x1f,0x15,0x81,0xf0,0xae,0x2b,0xea,0xbf,0x2c,0xf6,0xcb,0x52,0xc1,0x4e,0xb3,0x09,
- 0xe9,0x79,0x70,0x85,0x89,0xf6,0x4c,0xf5,0x5f,0x4a,0x11,0x22,0x22,0xed,0xc5,0x2b,
- 0xf1,0xcf,0x08,0x1c,0x62,0x96,0x59,0x2c,0xe7,0x87,0xa0,0x82,0xfa,0xff,0x94,0x13,
- 0x10,0x32,0x36,0x3c,0x4a,0x19,0x31,0xa5,0xca,0x70,0x6e,0xcd,0x8a,0xff,0x7c,0xd9,
- 0xb3,0xae,0x75,0xfb,0x32,0xca,0x7f,0xb1,0x43,0xad,0xe1,0x65,0xde,0x2d,0xeb,0xaf,
- 0x0f,0xed,0x97,0xb6,0x2f,0x42,0x18,0x73,0xfd,0x3d,0x68,0x88,0xdb,0xbd,0x8f,0x5e,
- 0x51,0xff,0xd5,0x01,0x21,0xab,0xda,0xab,0x9c,0xea,0xbf,0xd0,0xbe,0x97,0xc3,0x36,
- 0x89,0x60,0xd2,0x83,0x04,0x84,0xac,0x46,0x37,0xd9,0xf5,0x5f,0x1d,0x53,0x65,0x62,
- 0x31,0xba,0x2c,0x4f,0x03,0x2a,0x04,0xd3,0xdb,0xbc,0xd3,0xfc,0x1f,0x3c,0x95,0x5d,
- 0xff,0x45,0x61,0x07,0x04,0x39,0x20,0xa8,0xfe,0x2b,0xdf,0x2a,0xbb,0x46,0x44,0x34,
- 0x2b,0x6c,0x35,0xe2,0x6b,0xe8,0x70,0x42,0x56,0xfd,0xd7,0x48,0xcf,0x79,0xef,0xcd,
- 0x6d,0xae,0xe3,0xdd,0x23,0xb1,0x35,0xde,0x85,0x87,0x0b,0x8e,0xbf,0x7c,0x22,0xf6,
- 0xc2,0xbc,0xc6,0x36,0x79,0x73,0xe7,0xb9,0x9e,0xdf,0x53,0xfe,0x2b,0x1b,0xff,0x50,
- 0x7e,0x30,0xd8,0x52,0x80,0xeb,0x13,0x3b,0xaf,0x35,0x58,0x89,0x42,0x03,0x8f,0x50,
- 0xfc,0x87,0xf2,0x83,0x1e,0xab,0xff,0xa1,0x94,0xc1,0x3f,0x49,0x5d,0xe4,0x59,0x45,
- 0xee,0xba,0xe8,0xd3,0x89,0xed,0x13,0xd6,0x01,0xf1,0x4f,0x84,0x77,0x32,0x5d,0xef,
- 0xe1,0x15,0xa0,0x0e,0x84,0x8f,0xa6,0xbf,0x47,0x9e,0x73,0x42,0xac,0x91,0x2a,0x0d,
- 0xc7,0xb2,0xab,0x4e,0xec,0x7c,0x56,0xaf,0x6c,0xe5,0xed,0x0c,0x61,0xf6,0x9c,0xca,
- 0x36,0xbe,0x2c,0x50,0x23,0x9e,0x80,0xbb,0xa9,0x91,0xdd,0x40,0xa6,0xff,0xcf,0xcc,
- 0x2e,0xab,0x8d,0x12,0xff,0x05,0xb5,0x51,0xd2,0xf1,0x1f,0xb6,0x3b,0x6a,0x0c,0x3c,
- 0xd2,0xca,0x87,0x1d,0x35,0xde,0x27,0xe0,0x33,0x54,0x11,0xf6,0x6a,0x56,0xfe,0xcb,
- 0x7a,0xfe,0xad,0xaa,0x05,0x63,0xda,0x9d,0xdf,0x9f,0x81,0x3f,0x5c,0x34,0xd8,0x8e,
- 0xb0,0x76,0x0e,0xbc,0x17,0x0f,0x84,0xb2,0xfa,0x1f,0xf6,0x50,0xfd,0x3b,0x58,0xa0,
- 0xa8,0x9c,0xc2,0x62,0xcb,0x5d,0x0f,0xc9,0xef,0x52,0xdb,0x43,0x2a,0xfb,0x1a,0x31,
- 0x50,0x68,0x77,0x65,0xe3,0x1f,0xea,0xc7,0xb5,0x50,0x71,0x59,0x65,0x2c,0x50,0x0d,
- 0xce,0x57,0x50,0x18,0xd2,0xac,0x78,0xe3,0x2a,0x38,0x55,0x5c,0xad,0xa0,0x60,0x8f,
- 0xff,0x54,0xc0,0x19,0xe1,0x89,0xa9,0xbb,0xd8,0x19,0xfd,0x79,0xe1,0x11,0x0e,0x8a,
- 0xff,0x1c,0x36,0xab,0x9e,0x53,0xa9,0xed,0xcf,0x61,0xb3,0x36,0xa6,0x66,0xd7,0xbf,
- 0x1b,0xe8,0x9d,0xce,0x05,0x55,0x98,0x14,0x38,0xf5,0x42,0x04,0x10,0x5d,0x47,0x79,
- 0x15,0x5c,0x03,0xcb,0x0c,0x06,0xbc,0x9c,0xe2,0xa5,0x87,0xb3,0xf2,0x5f,0x08,0x72,
- 0xd0,0x49,0x71,0x9f,0x82,0x97,0x22,0x7f,0x47,0xdd,0x2a,0x4e,0xb1,0x19,0xa9,0xfc,
- 0x75,0x03,0x7e,0xda,0x5f,0xa6,0xfa,0x2f,0x7b,0xfc,0xe7,0x2a,0xfe,0x1b,0x71,0x43,
- 0x48,0x6d,0x95,0x7f,0x05,0xbf,0xef,0xba,0x31,0xc4,0xef,0x64,0x97,0xe0,0x84,0xb8,
- 0x59,0x57,0xeb,0xe4,0x2f,0xc2,0x20,0x9e,0x72,0xad,0xb0,0xc7,0x7f,0x3e,0x4b,0xfd,
- 0xb8,0xa8,0xbb,0x88,0x34,0x0a,0x1f,0x29,0xb5,0xe4,0x7d,0x24,0xad,0xfc,0x97,0x4a,
- 0x85,0x96,0xef,0x80,0x45,0x74,0xc9,0xf4,0xff,0x81,0x9c,0x09,0x71,0x29,0xda,0xb8,
- 0xd3,0xd5,0xd7,0xfc,0x3c,0x1c,0xa5,0x6c,0xd7,0x0a,0x35,0x00,0x56,0x44,0xe8,0x90,
- 0x1c,0xa0,0x46,0x40,0x31,0x57,0x22,0x2b,0xfe,0xb3,0x05,0x9e,0xf5,0x57,0x1a,0x6a,
- 0x1b,0x2b,0x66,0x6b,0x1e,0x47,0x45,0xd4,0x4e,0x81,0x68,0x65,0x87,0xee,0xb8,0xcf,
- 0x3d,0x0b,0x76,0x6a,0xa5,0x06,0xfa,0x47,0x59,0xf1,0x1f,0x63,0x5f,0x4e,0xe5,0xcb,
- 0xd7,0x9c,0x0d,0x93,0x9a,0x2a,0x33,0x1c,0xe3,0x6c,0x96,0xbe,0x8f,0xcf,0xe9,0xe7,
- 0xf7,0x3a,0x66,0xe9,0x9b,0xac,0xfc,0x57,0x16,0xfe,0x49,0x52,0x1a,0x51,0x7f,0x0c,
- 0x3c,0x86,0x24,0x84,0xfe,0x1c,0xcf,0x65,0x0c,0xe2,0xa2,0xbc,0xc6,0x21,0xf0,0x25,
- 0x63,0x14,0xd8,0xd7,0xb2,0xf0,0x0f,0x2a,0x0d,0x29,0x58,0xea,0x8a,0x34,0x27,0xf1,
- 0x6b,0xea,0x8d,0xdf,0x2e,0x8a,0x3c,0xca,0x84,0x32,0x17,0x81,0xae,0xec,0x81,0x44,
- 0x4b,0xaf,0x8e,0xfa,0x24,0x0b,0xff,0xa0,0x7d,0xb4,0x82,0x60,0xbb,0xac,0xf8,0x98,
- 0xa5,0x78,0x0f,0x48,0xf5,0xa6,0xd5,0x28,0xf2,0xa2,0x7f,0xaa,0x22,0xcc,0x8e,0x7f,
- 0xfe,0x99,0x9c,0x08,0x53,0x1e,0x54,0xd0,0x9b,0x18,0x54,0x87,0xe5,0x06,0x18,0x92,
- 0xaa,0x65,0xbc,0xac,0x01,0x55,0x6f,0x35,0xf5,0xbb,0x33,0x6d,0xf1,0x9f,0x15,0x60,
- 0x15,0x09,0xc6,0xad,0x6c,0x69,0x95,0xae,0xea,0x4c,0x67,0x9d,0xa8,0xd8,0x55,0xe1,
- 0x00,0x77,0x37,0x6c,0x17,0x54,0x7f,0x61,0xef,0xff,0x03,0x3f,0x98,0xba,0x9e,0xd1,
- 0x3f,0xbc,0x3a,0x86,0xaf,0xd9,0x4d,0xb4,0x31,0x42,0xec,0x9d,0x56,0x3f,0xd2,0x5c,
- 0x3b,0xff,0x47,0x31,0x1e,0x22,0x74,0xcd,0x72,0x07,0x95,0x0e,0xdd,0x47,0xde,0x84,
- 0x13,0x37,0x9d,0x8f,0xe3,0xb2,0xfb,0x50,0xad,0x51,0x3f,0x64,0x77,0x56,0xff,0xc3,
- 0x14,0x0d,0xac,0x37,0x3c,0x46,0x85,0x72,0x66,0xc1,0x6e,0xd5,0x47,0x16,0x67,0xd0,
- 0xd5,0xdb,0xe9,0x54,0x7e,0x4d,0x19,0x9f,0x27,0xb2,0xf9,0x3f,0x5d,0x63,0xd0,0x28,
- 0xb9,0x0c,0xfc,0x4c,0x26,0xa8,0x1b,0xdb,0x80,0x44,0x1f,0xce,0x5c,0x22,0x2a,0x8c,
- 0xe3,0xe2,0xfd,0x49,0xfd,0xd7,0xa5,0xcf,0x7d,0x62,0x54,0x8f,0x3b,0x57,0xcb,0xc1,
- 0x92,0x63,0x88,0x96,0x2b,0x0e,0x35,0x07,0xe1,0x98,0x51,0xad,0x5b,0xfc,0xf9,0x63,
- 0x0f,0x2d,0x20,0x21,0x1b,0xff,0xbc,0x40,0x45,0xee,0xf1,0xcd,0x3e,0xbd,0x5b,0xf7,
- 0x1c,0x89,0xf4,0x82,0x33,0xd6,0xbd,0xaa,0x82,0xf1,0x00,0xdb,0xa9,0x77,0x2a,0xb5,
- 0x61,0xde,0xdb,0xd4,0x93,0x3b,0xbd,0x9e,0xde,0x9c,0x21,0x71,0x40,0x0a,0x99,0x3d,
- 0x01,0x87,0x33,0xdc,0xc9,0x89,0xf6,0x43,0x61,0x55,0xa9,0x87,0xd7,0x21,0xb0,0x09,
- 0xaf,0xd3,0xbd,0xbc,0x1e,0xf1,0x4f,0xfa,0xf7,0x42,0xfc,0xa3,0x1c,0x88,0xe8,0x87,
- 0xbc,0x7e,0x2b,0x1e,0xe2,0x31,0x79,0x1d,0xc5,0x8b,0x14,0xf0,0x50,0x47,0x20,0x58,
- 0x2f,0xca,0xb7,0xa3,0x87,0x12,0x4f,0xf3,0xa5,0x41,0xd9,0x05,0xcf,0x8b,0x40,0xb2,
- 0x75,0x7f,0x73,0x15,0x1c,0x11,0x01,0xd3,0x79,0x50,0xb6,0xd6,0x67,0x9b,0xb3,0x0e,
- 0x85,0x97,0xcd,0xfa,0x52,0xdc,0x21,0x70,0xc7,0xf4,0xfd,0xb7,0x69,0x07,0xf9,0x25,
- 0x78,0x29,0x49,0xfc,0xf0,0xf6,0xcb,0x9b,0xa7,0x81,0x10,0x34,0x8a,0xa5,0x17,0x1e,
- 0xbe,0xac,0x51,0x45,0x58,0x3e,0xe2,0x43,0x5b,0xff,0xc3,0x9f,0x48,0xef,0x1b,0xb5,
- 0x09,0x57,0xaf,0xbc,0x52,0x5c,0xd4,0x7b,0xa9,0xbe,0x7b,0x65,0xe4,0x48,0x79,0xf0,
- 0x71,0x67,0x5c,0xf5,0x89,0x23,0x46,0xa0,0xa4,0xa0,0xd7,0x9e,0xff,0x52,0x7c,0x8e,
- 0x4e,0xbf,0xe7,0xa3,0x6b,0x5e,0x64,0xf3,0xe1,0x80,0xe9,0x39,0xf1,0xa3,0x83,0xe1,
- 0x0f,0xf4,0xb7,0x92,0x05,0x71,0xfe,0x1c,0xab,0xec,0x7a,0x43,0xf2,0x8c,0xf3,0x17,
- 0xd9,0x47,0xe9,0x9f,0xd7,0x54,0xf2,0x43,0x3b,0x0c,0xdd,0x5c,0xec,0xf7,0x2c,0x31,
- 0xf6,0x48,0x9e,0x91,0x6b,0xfc,0x94,0xd6,0x01,0x9f,0xb0,0x3a,0xd8,0x74,0x26,0xf4,
- 0x2e,0xdc,0x18,0x67,0xd3,0xf6,0x2e,0xa4,0x05,0x5b,0x37,0x89,0x39,0x63,0xea,0x44,
- 0xee,0xec,0xbc,0x7d,0x91,0xd2,0xe9,0x78,0xc8,0xfc,0x58,0x1e,0xe2,0x01,0xfe,0xbd,
- 0x48,0x59,0xec,0xb3,0xab,0xd9,0x49,0x65,0xfa,0xfa,0x56,0xee,0x34,0x76,0xe8,0xfe,
- 0xa4,0xea,0x97,0x97,0xc0,0x45,0xdd,0x9f,0x50,0x17,0x20,0xec,0x79,0x19,0x1a,0xf4,
- 0x7c,0xdc,0x6f,0x5a,0xbf,0xee,0x07,0x97,0x5f,0xfe,0x75,0xba,0x7f,0x9d,0x31,0x73,
- 0xa3,0xf1,0x47,0xc4,0x33,0xd3,0xcb,0x62,0xaa,0xf1,0xe6,0x31,0x78,0x09,0x6e,0x86,
- 0xdc,0x71,0x79,0xcc,0xf8,0x04,0x1a,0xbb,0x0a,0xc6,0x6d,0xfd,0x0f,0x39,0xe1,0x1f,
- 0xa9,0xa6,0x1f,0x41,0x78,0x01,0x0a,0x81,0xfe,0x7c,0x2b,0x5e,0x2d,0xea,0x05,0x65,
- 0x0c,0xd9,0x11,0x70,0xc7,0xf2,0xfb,0x64,0x96,0xd6,0x0f,0xa3,0xd2,0x41,0xe8,0x24,
- 0xa7,0x09,0xd5,0x88,0x85,0x7f,0x0c,0xa2,0x35,0xec,0xd3,0xcb,0x4c,0x2f,0x09,0x3f,
- 0x93,0xe6,0x89,0xd6,0x71,0xd6,0x9b,0x3b,0x7d,0x3d,0xb4,0xff,0x48,0x59,0x2b,0xae,
- 0xa7,0xfe,0x87,0xb3,0xd9,0x5a,0x51,0xf6,0x0e,0xac,0x86,0x37,0x61,0xcf,0x96,0xbf,
- 0xa1,0xf7,0xbd,0x64,0x51,0xc1,0x3f,0xbb,0x3a,0xd3,0xde,0x8f,0xf8,0x3f,0xd0,0xa9,
- 0xa3,0x3f,0x42,0xdd,0xed,0xd6,0x09,0x3d,0x84,0xab,0xfd,0x2e,0xe2,0xbd,0x7b,0x9e,
- 0xcb,0xdb,0xea,0x39,0x0a,0x3b,0xc2,0xde,0x28,0xe2,0x9f,0x1f,0x64,0x9e,0x47,0x89,
- 0xb0,0xa3,0x7c,0x5f,0x8c,0xc7,0xc2,0x5e,0x38,0x1c,0xeb,0xed,0x70,0x8e,0xc9,0x67,
- 0xc4,0x05,0xf8,0xb6,0xc8,0x7f,0x1a,0x85,0x57,0x63,0xd5,0x54,0x1a,0x56,0x97,0xb6,
- 0x5f,0xad,0x5a,0x4c,0x19,0x07,0x2a,0xf2,0x52,0xad,0xb2,0x53,0xa8,0x4a,0xb5,0xfd,
- 0xa1,0xfe,0xcf,0x24,0x18,0x2f,0xba,0x2d,0xfc,0x93,0x5e,0x1f,0x6d,0x97,0x7e,0x08,
- 0x6a,0xc9,0xac,0x5b,0xf1,0x9f,0x45,0x1b,0xa2,0x33,0x88,0x08,0x14,0x5c,0x64,0x55,
- 0xc4,0x7f,0xb6,0xc3,0xb2,0x8f,0x03,0x19,0xbe,0xb7,0x52,0xce,0x28,0xff,0xb2,0x22,
- 0xd5,0x76,0xd8,0x63,0x11,0x81,0x60,0x5d,0xb4,0x0a,0xf1,0x8f,0x67,0x0e,0xac,0x33,
- 0x9f,0x5b,0xa5,0x6e,0xcd,0x8a,0xff,0xf8,0x10,0xe4,0xdc,0x83,0xa0,0xc5,0x2a,0xfb,
- 0x42,0x3c,0x13,0x9f,0xa2,0xe9,0x22,0x5e,0x52,0xe0,0x19,0x6d,0x6e,0x8b,0xba,0x19,
- 0x77,0xd4,0xf4,0x1f,0x87,0x72,0xb0,0x48,0x3e,0x1a,0xd1,0x80,0x59,0x8c,0xf0,0x12,
- 0xc2,0x1e,0xaf,0x8f,0x88,0x43,0x4e,0xf6,0x14,0x94,0x53,0x3f,0xe4,0xc3,0xe9,0xfa,
- 0x0b,0x62,0x7e,0x27,0xf4,0x00,0x2c,0x11,0x33,0x42,0xf8,0xe2,0x84,0x7f,0x50,0x1f,
- 0x26,0x4a,0xa9,0xff,0xb0,0xaa,0xc3,0x19,0xb2,0x50,0x42,0x7e,0x33,0xbd,0x7f,0xfa,
- 0x66,0x8e,0xc5,0x2f,0x7b,0x0f,0x10,0xc9,0xe7,0x5c,0xec,0x13,0x04,0x42,0x05,0xc7,
- 0xbb,0xcf,0xc5,0xa6,0x19,0xd1,0x7b,0xff,0x6b,0xc5,0xcd,0x04,0x84,0xde,0x4d,0xaf,
- 0x67,0x9d,0x55,0xff,0x5e,0xd1,0xe2,0xa4,0xec,0xcf,0x59,0x2d,0xb8,0xa8,0x40,0x2b,
- 0x6a,0x31,0xce,0xeb,0x7e,0xa2,0xfd,0x94,0xa7,0xea,0xdf,0xed,0xfd,0x9f,0x4b,0x78,
- 0x52,0x8f,0x70,0x0f,0xb4,0x86,0xc3,0xd4,0x86,0xb1,0x4a,0xe6,0x84,0x7f,0xea,0xbc,
- 0x1e,0xca,0x73,0xea,0xfe,0x30,0x9e,0x72,0x20,0xfe,0x49,0xeb,0x9f,0x56,0x28,0x16,
- 0xcf,0x6a,0x9f,0x59,0xc4,0x97,0x79,0x4e,0xc4,0x08,0xff,0x38,0x08,0xff,0x3c,0xeb,
- 0x2f,0x45,0xfc,0x43,0xf5,0xef,0xac,0xd4,0x28,0x59,0xc6,0x8e,0xa7,0xf7,0x43,0x89,
- 0xd2,0x05,0x3f,0x2c,0x2c,0x6b,0xed,0x19,0x86,0x73,0xf0,0x42,0x79,0xe5,0x22,0xfe,
- 0x39,0x47,0x8d,0x78,0x01,0x4a,0xef,0xf0,0x0e,0xb3,0x5a,0x58,0x53,0x58,0xda,0xe4,
- 0x18,0xc6,0x1d,0x35,0x7d,0x7d,0x4c,0x79,0x02,0x7f,0xd6,0x3e,0x43,0x99,0xca,0x5e,
- 0x2d,0x2f,0xd8,0xba,0x83,0xf0,0xad,0x3b,0xe4,0xdc,0xaa,0x22,0x10,0x32,0x7a,0x57,
- 0x39,0xa3,0xd7,0x8f,0xa6,0xfb,0x1f,0x9e,0xd1,0x76,0xc2,0x7b,0xd4,0xe4,0xf9,0xd1,
- 0xb2,0x11,0x71,0x9e,0x05,0x17,0xa5,0xda,0x3e,0x53,0xfe,0x6b,0x4b,0xea,0x0e,0xab,
- 0x70,0x3f,0x7c,0x94,0xc5,0xff,0x99,0x6c,0xaf,0x56,0x36,0xf4,0x37,0xa3,0x1a,0xcf,
- 0xdb,0x03,0x4b,0x5f,0x41,0x6d,0x3c,0x04,0x0b,0x4b,0x9c,0xfd,0x54,0x08,0x0f,0xd5,
- 0x85,0x4e,0x53,0x1e,0x48,0xd7,0x7f,0x81,0xe2,0xd5,0x0e,0x9b,0x9e,0x38,0xdf,0xc5,
- 0x46,0xf5,0xe7,0x07,0x3d,0x51,0x04,0x42,0x5e,0x58,0x6f,0x78,0xe2,0xf9,0x24,0x9c,
- 0x91,0x3c,0x82,0x27,0x9b,0x12,0x99,0xfd,0xb9,0xc6,0x80,0x9e,0x44,0x0c,0x95,0xf2,
- 0xe6,0x01,0x88,0x0f,0xeb,0x6e,0xd5,0xb9,0x1e,0x20,0xd2,0xea,0x03,0xbe,0x01,0x17,
- 0x36,0x06,0xba,0x34,0x8f,0xf0,0xcf,0xf4,0xfd,0x4b,0xa5,0x06,0xcb,0x7f,0xa9,0xa0,
- 0xaf,0xf5,0x25,0x02,0x42,0xe3,0x2c,0x88,0xfa,0xea,0x33,0xc3,0x94,0x21,0x82,0x27,
- 0x61,0x9b,0x99,0xb7,0xaa,0xc9,0x6c,0x99,0x7e,0x1c,0x6f,0x89,0x1b,0x46,0x44,0xb5,
- 0x5e,0x40,0xf8,0x67,0xaf,0x58,0xa0,0x77,0xb7,0x4a,0x6e,0xf6,0x2a,0xe2,0x9f,0x25,
- 0xad,0xea,0x55,0xca,0x6f,0xc5,0xee,0x64,0xfe,0x0a,0x79,0xc0,0x93,0xde,0x9f,0x79,
- 0x1b,0xac,0xfe,0xcf,0xf9,0x54,0xed,0x8e,0x8e,0x6d,0xff,0xa6,0x54,0x1b,0xb1,0xda,
- 0x54,0xfd,0xfb,0x28,0xf8,0x20,0x37,0x6a,0x7b,0xdf,0x50,0x7e,0xdc,0xf8,0x5d,0xd7,
- 0x8d,0x23,0xce,0x09,0xf9,0x02,0xc2,0x9e,0xc6,0x90,0x73,0xa2,0xa8,0x17,0x5e,0xa3,
- 0xb2,0x9d,0x09,0x5c,0xc6,0xc4,0x66,0xb4,0x5f,0x09,0x79,0x38,0xfd,0xfc,0x3d,0xd2,
- 0x8b,0x62,0x10,0x62,0xe5,0xad,0xa9,0x6c,0xfb,0x4d,0x5d,0xbc,0x95,0x35,0xb0,0x07,
- 0xa8,0xcc,0xdf,0x20,0x47,0xac,0xe7,0x86,0xc3,0x14,0xff,0xf9,0x7e,0xfa,0x7b,0x84,
- 0xe8,0xa2,0x7d,0x30,0x9f,0xea,0x55,0x27,0xf5,0x27,0x79,0xa5,0x81,0x8a,0x2b,0xaa,
- 0xaf,0xd5,0x08,0xef,0x85,0xcf,0xc1,0x26,0x7f,0x99,0x59,0xb2,0x82,0x65,0xf8,0xc6,
- 0x46,0xf1,0x90,0xc0,0x6f,0x78,0x0e,0x17,0x6c,0x00,0xff,0xb1,0x57,0xf0,0x0d,0xe8,
- 0xd8,0x46,0x24,0x1f,0x53,0xb9,0x3b,0x41,0x9f,0xb7,0x86,0x1f,0xe6,0xc9,0x4c,0x7d,
- 0x5f,0xce,0x2e,0x4a,0xea,0x81,0x2f,0x82,0xda,0xa3,0x47,0x14,0x84,0x7d,0x1b,0xe4,
- 0x9f,0x5a,0x15,0x07,0x9b,0x22,0xf8,0xbe,0x89,0x68,0x40,0xb1,0xf2,0x9b,0xd3,0xbf,
- 0x57,0x4c,0x4b,0x2a,0xef,0x93,0x7e,0xde,0x2d,0x8f,0x29,0xef,0x33,0xdc,0x48,0xbb,
- 0x3b,0x4f,0x13,0x10,0xa2,0xf5,0x79,0x57,0xbb,0xa8,0x58,0xa5,0x61,0x76,0xfe,0xf3,
- 0x24,0x0c,0x4a,0x7f,0x0f,0xf9,0x66,0x5e,0x0d,0x0c,0xe5,0x36,0x0a,0x97,0xc9,0xee,
- 0x37,0x2e,0xa1,0x46,0x9c,0x61,0xca,0x97,0x8c,0xcb,0x52,0xb5,0xe9,0x4a,0xaa,0x3c,
- 0xdd,0xff,0xa7,0x5f,0xf9,0xd2,0x3d,0x8f,0x81,0xd5,0x64,0xc6,0xab,0x74,0x2b,0x55,
- 0xcb,0xd5,0xb8,0x7c,0x0f,0xd5,0x9f,0x9a,0x8b,0x89,0xc6,0x4c,0x15,0xf1,0x88,0x58,
- 0xea,0x8c,0xe9,0xdf,0x4b,0xe4,0x50,0x98,0xeb,0x1e,0x13,0xd5,0x4e,0x84,0x1a,0xd7,
- 0xf4,0xab,0x71,0xcf,0x2e,0x52,0x5c,0xa6,0x85,0xa0,0xe2,0x92,0x47,0x52,0xb3,0xf8,
- 0x3f,0xf8,0x4f,0xa2,0xf0,0xb6,0x86,0x9f,0x6b,0x17,0xee,0x2e,0x5c,0x76,0x21,0x4c,
- 0xe8,0xc5,0xe7,0x5d,0x0c,0xee,0x41,0x6d,0x0f,0xa7,0xd2,0x39,0x37,0xcb,0x81,0xf4,
- 0xdf,0x4a,0xfe,0x32,0xdb,0x7e,0x32,0x9f,0xac,0x09,0xd1,0x9c,0x36,0x59,0xc0,0xcf,
- 0x6a,0xab,0x42,0x8d,0x80,0x74,0xf7,0x15,0xfc,0x9f,0x99,0x49,0x63,0x8c,0xfa,0xf3,
- 0x13,0x24,0x3a,0x05,0xdf,0xa5,0x7c,0xf1,0x2a,0xaa,0x7f,0x77,0xe0,0x91,0x61,0xe5,
- 0xdc,0x14,0xfe,0xb1,0xd5,0x7f,0x5d,0x82,0x4f,0xbc,0xd5,0xaf,0xe4,0x9f,0x97,0xef,
- 0x87,0x21,0xbe,0x60,0xe4,0xf6,0xb3,0xf2,0x65,0xb8,0xac,0xd7,0x27,0x9d,0x3b,0xf0,
- 0xc8,0xcf,0xa1,0xec,0x35,0x34,0x85,0xfe,0x0c,0xff,0xbc,0xe4,0x43,0x65,0x7f,0x8b,
- 0x27,0xa1,0x06,0xd0,0xfa,0x70,0x02,0x42,0x7f,0x60,0x3e,0xf1,0x92,0xe9,0xb9,0xdb,
- 0xf1,0x63,0xb4,0xf8,0xdd,0xf7,0x7a,0x86,0xd5,0x89,0xec,0xf8,0x4f,0x21,0xba,0x15,
- 0x09,0x34,0xe2,0x43,0x6c,0x3d,0x0f,0x25,0x1c,0xb5,0x6c,0x89,0xd8,0xa3,0x79,0xcd,
- 0xf5,0xb9,0xec,0x36,0xe8,0xf4,0xea,0xaf,0xe1,0x29,0x96,0xa9,0xff,0xca,0xd9,0xc5,
- 0xf7,0x8b,0x8a,0x41,0x8b,0x46,0xc5,0x85,0xf5,0x43,0x50,0x22,0xcc,0x93,0x74,0xc4,
- 0xd8,0x2e,0xd6,0xad,0x50,0x3f,0x49,0x96,0xc1,0x63,0x14,0xff,0x39,0x6f,0xf6,0x9a,
- 0xb7,0xc5,0xe5,0x95,0x4a,0x22,0xb1,0x79,0x24,0x85,0x87,0xa1,0x3e,0x99,0x1b,0x6b,
- 0x6e,0x51,0x16,0x43,0xaf,0xf9,0x67,0x71,0x15,0x16,0x4d,0xff,0xbe,0x31,0x89,0xc6,
- 0x5e,0x7c,0xaa,0x7f,0xc6,0x38,0xde,0xff,0x13,0x86,0x9f,0xc9,0xaa,0xa2,0x49,0xf8,
- 0x18,0xf1,0xcf,0xcf,0x92,0xf8,0xbe,0x97,0xc1,0x1a,0xf4,0x60,0xc7,0x3f,0xbb,0x60,
- 0x62,0x95,0xb5,0xbb,0x9c,0xd2,0xfb,0xc2,0xca,0x36,0xa2,0xc5,0xcf,0x0d,0xbc,0xed,
- 0xdc,0x29,0xfb,0x94,0x23,0xbc,0xd7,0x74,0xfa,0xd5,0xe9,0xb7,0xa5,0xf8,0x8f,0x8f,
- 0xd8,0x1a,0xa6,0x1c,0xc7,0xcf,0xaa,0x53,0x6c,0x37,0x9d,0xf4,0x1f,0x7a,0x6b,0x9b,
- 0x9e,0xcc,0x8f,0xe1,0x8b,0xfc,0x93,0x59,0x36,0x8a,0x5f,0x50,0x20,0x7d,0xbd,0xa9,
- 0x2c,0x81,0xfd,0xa6,0x0f,0x64,0x42,0x3b,0x02,0x56,0x9a,0x0e,0x7f,0xd3,0x10,0x74,
- 0x0a,0xef,0x2f,0x9e,0x8e,0xb3,0x02,0x7d,0x87,0x11,0x4a,0x22,0xde,0xab,0x53,0xd2,
- 0xf1,0x1f,0xed,0x8b,0xf0,0x6c,0x8a,0xfd,0x3b,0x1b,0x36,0x46,0x29,0x30,0x02,0x84,
- 0x7f,0xf2,0x42,0xea,0x19,0xc7,0x6c,0x7d,0x5f,0x47,0x69,0x32,0xbb,0xfe,0x9d,0x2f,
- 0x31,0xe2,0x46,0xc3,0xb0,0x7a,0xa3,0xec,0x34,0xc2,0xd0,0xd0,0xef,0xf0,0x4b,0x63,
- 0xc6,0xcb,0x50,0x97,0x74,0x5c,0x2d,0x3b,0xb5,0x1d,0xdc,0x3f,0x58,0xe0,0xb7,0xe7,
- 0xbf,0x72,0x52,0x63,0x41,0xfe,0x7a,0x7c,0xf1,0x27,0xca,0x3f,0x41,0x35,0x3e,0x3f,
- 0x15,0x82,0x69,0xcf,0x9a,0x1b,0xfd,0x65,0xa7,0xe0,0x2d,0x3c,0x95,0x17,0xb7,0xf5,
- 0xff,0x21,0xfc,0x83,0x68,0x87,0xf4,0xd5,0x07,0xca,0x04,0x6e,0x4b,0xc7,0xf3,0xdd,
- 0x3e,0xe5,0xe2,0xf6,0x7a,0x03,0x7f,0x91,0xf2,0xd4,0x46,0x7d,0xce,0x5e,0xff,0xf5,
- 0xe9,0xc7,0x61,0x8f,0x62,0xc5,0x7f,0xee,0x12,0xbb,0xa7,0x12,0x61,0xf0,0x4e,0x61,
- 0x29,0x38,0x49,0xd8,0x77,0x77,0xe9,0xf0,0xe2,0x7b,0xc3,0xbd,0x99,0x7e,0xf2,0xc4,
- 0xff,0x11,0x5e,0x7c,0x4d,0xcf,0x9b,0xe6,0x73,0x0f,0xcc,0x49,0x3a,0x6e,0x74,0x7f,
- 0x11,0xf6,0xc5,0x69,0xfe,0x05,0xbb,0x4e,0x7a,0x38,0x36,0xe7,0xf4,0x35,0x75,0xb6,
- 0xfe,0x1b,0x2b,0x94,0x21,0xd8,0x53,0xa2,0x7f,0x54,0x11,0x67,0x4b,0xe0,0xc0,0x40,
- 0x79,0xc8,0x4a,0x84,0xed,0x00,0xdf,0xbb,0x79,0x0d,0xe1,0x02,0xfc,0xec,0x7f,0x4c,
- 0xf5,0x2c,0x9b,0x33,0xf3,0x32,0x66,0x8e,0xc2,0x25,0xf3,0xa6,0x54,0xfc,0xe7,0xd2,
- 0x70,0x2d,0xf5,0x7f,0x5e,0x01,0x17,0x58,0x63,0x2c,0xff,0xdd,0x66,0xaf,0x72,0x41,
- 0x22,0x0f,0x94,0xd9,0xea,0xbf,0x24,0x1d,0x41,0x4e,0x83,0xc2,0x45,0x73,0x52,0x9b,
- 0xd0,0xea,0x15,0x8b,0xf6,0x3c,0x01,0x6e,0xad,0x20,0x85,0x88,0xea,0xaf,0x8c,0xff,
- 0x90,0x35,0xac,0x32,0x72,0x2c,0x7f,0x1f,0xee,0xb5,0xf2,0x23,0x0a,0xf1,0x61,0x9c,
- 0xda,0x8c,0xeb,0xe1,0x5b,0xf0,0xa7,0xfd,0x9f,0x39,0xb1,0x7d,0xa8,0xed,0xb0,0xb4,
- 0xdf,0xaa,0x0e,0xa3,0xfe,0xcf,0x8a,0x6f,0xc9,0xa6,0x68,0xf3,0xbb,0xb0,0xdf,0xea,
- 0x48,0x2c,0x67,0xfa,0x3f,0xd3,0xfc,0x0b,0xea,0xd7,0x77,0x4d,0x6a,0x5e,0x83,0x4e,
- 0x89,0x9b,0x9d,0x39,0xfb,0xf5,0xaf,0x19,0xab,0xe3,0xee,0xf2,0x39,0xbb,0xe7,0xbd,
- 0x1d,0x2a,0x89,0xba,0x73,0xd3,0xf5,0xa7,0xde,0x62,0x84,0x3d,0x5e,0x5f,0x9b,0x83,
- 0xe2,0x3f,0xbb,0xbd,0x2b,0x8c,0x3c,0x77,0x78,0x10,0x8f,0x54,0x19,0x9f,0x76,0x0f,
- 0x74,0x6d,0xdb,0xed,0x0d,0x51,0x20,0x28,0xbb,0xff,0xe1,0x85,0xd2,0x20,0x5f,0x8a,
- 0x68,0x47,0xd4,0x79,0x3c,0x90,0x1f,0x96,0xf0,0x7d,0xf5,0x2a,0xc9,0xcb,0xdc,0xba,
- 0x98,0xf0,0x04,0xb8,0x33,0x2c,0xcd,0xce,0xc4,0x7f,0x0a,0x47,0x80,0xd8,0xce,0xf9,
- 0x9b,0x3b,0x47,0xb4,0xcb,0x54,0xff,0xb5,0xf9,0x9d,0x91,0xd8,0x79,0xe5,0xe6,0x7e,
- 0xd7,0xf1,0x97,0xcf,0xc1,0x7e,0xaf,0xd5,0x1a,0xfa,0x2b,0x72,0x26,0xdf,0x44,0x4d,
- 0x11,0xeb,0x6f,0xb1,0xe2,0x3f,0xaf,0x69,0x56,0xa0,0x6c,0xb9,0xf1,0x89,0x8e,0x1e,
- 0xeb,0xc3,0x72,0x8d,0xf6,0x89,0x52,0x4d,0xf5,0xef,0x59,0xfd,0x7f,0xa0,0x8f,0x48,
- 0x3e,0x6c,0xbd,0x0e,0xde,0xd2,0x00,0x53,0x09,0xff,0x50,0xfd,0x97,0x43,0x96,0xee,
- 0x86,0x3e,0xc9,0xa3,0xa0,0xbe,0x2d,0x48,0xaf,0x4f,0x2b,0x1a,0xb9,0xdd,0x85,0x5e,
- 0xa3,0xcd,0xed,0x6e,0xe1,0x85,0xba,0xde,0xba,0xb8,0xf0,0xea,0x16,0x65,0xb7,0xe6,
- 0x33,0x3a,0xdd,0x4c,0x69,0xdf,0xad,0x85,0xa8,0xfe,0x7d,0x99,0x34,0xfd,0xfc,0x25,
- 0xc5,0x3b,0x95,0xdd,0xd4,0x0d,0x49,0x63,0xcb,0xb5,0x79,0xf0,0x40,0xab,0x9a,0x5a,
- 0xd8,0x02,0x93,0x47,0xef,0x59,0x6e,0xec,0x07,0x46,0x85,0xf0,0x73,0xb3,0xe2,0x3f,
- 0xe7,0x79,0xfd,0xea,0x02,0xc2,0xb7,0x53,0xf9,0x2f,0x02,0xa2,0xc1,0xe5,0x9b,0x1e,
- 0xea,0x2c,0x87,0xb3,0xd2,0x66,0x63,0x69,0xd4,0xd6,0xff,0x39,0x61,0xc5,0x7f,0x6a,
- 0x69,0x28,0x46,0x17,0x3f,0xaf,0xd7,0x87,0x5c,0xe9,0xb6,0x3f,0x25,0xd4,0x11,0x31,
- 0x8f,0x12,0x61,0x6a,0xd6,0xfc,0x0b,0x8a,0x0f,0x68,0x34,0xed,0xc2,0xea,0xbf,0xe4,
- 0x04,0xb4,0x6e,0xa3,0x50,0x4b,0x13,0x58,0x62,0x61,0xea,0x90,0xe3,0x04,0x29,0x53,
- 0xff,0xee,0xcd,0xf1,0xf2,0x17,0x9b,0xaa,0x44,0x24,0xe6,0x41,0xd8,0x03,0x6f,0x0b,
- 0x4e,0xb4,0xe7,0xe7,0x59,0xe9,0x76,0x15,0x61,0x3c,0x1c,0x35,0xaa,0x3a,0xac,0xfa,
- 0xf7,0xf4,0x7e,0x40,0xfb,0xb5,0x63,0x15,0x75,0x87,0xf0,0x38,0x9d,0xdd,0x6e,0xab,
- 0x4d,0xd6,0x90,0xb4,0x43,0xf8,0xe8,0x33,0x79,0x0d,0x3a,0x4f,0x58,0xa3,0x0a,0x0e,
- 0x4f,0x6f,0x07,0x10,0x85,0x56,0xb7,0x9f,0x84,0xf7,0x5e,0xea,0x07,0xa8,0xcc,0x1b,
- 0x6d,0x25,0x20,0xf4,0x6c,0x64,0x9e,0xa9,0xde,0x9b,0xeb,0x52,0x72,0x52,0x8d,0x80,
- 0x12,0xd3,0xb7,0x87,0x08,0x9f,0x0d,0xbf,0xed,0x68,0x1c,0x73,0xa6,0xda,0x3e,0x7f,
- 0x66,0x92,0xdf,0x27,0xbf,0x29,0x4e,0x8b,0x9b,0x43,0xae,0x7f,0x90,0xdf,0x84,0x57,
- 0xa9,0x3e,0x6b,0xb5,0x7c,0xb8,0x76,0xfa,0x7a,0x8e,0xfe,0xef,0x45,0x98,0x3d,0xe8,
- 0xda,0xd7,0x3d,0x96,0xfb,0x4b,0xa8,0x1d,0x9e,0xbf,0x97,0x65,0xe1,0x9f,0x2a,0xe3,
- 0x33,0xf1,0xe6,0x81,0x07,0xa6,0xdf,0x17,0xfd,0x5f,0xe3,0x72,0x34,0xc5,0xff,0xd1,
- 0x8e,0xc5,0x50,0x9f,0x1f,0xdc,0xf1,0xa2,0xfe,0x49,0x8a,0x11,0x74,0x49,0x43,0x44,
- 0x94,0x54,0x27,0xca,0x6c,0xf5,0xef,0x25,0x3f,0x12,0xcf,0x19,0xa5,0x94,0xbf,0x98,
- 0x05,0x6b,0x88,0xb6,0x7d,0x1f,0x0a,0xcf,0x22,0x6c,0xcb,0xbf,0x77,0xd9,0x29,0xef,
- 0x5e,0x02,0x36,0xdf,0x66,0x15,0x99,0xf9,0x17,0xf0,0xf8,0xa2,0xdd,0x92,0xa5,0xaf,
- 0x9c,0xb0,0x56,0xaf,0x1c,0x50,0xef,0x65,0x8f,0xd3,0x04,0x9f,0x96,0xbc,0x55,0xc6,
- 0x09,0xe3,0x59,0x0a,0x7c,0x55,0x7b,0x74,0xdb,0xfc,0x8b,0x0d,0xca,0x1e,0xd0,0xcf,
- 0x95,0x90,0x3e,0xef,0x28,0xf1,0x25,0x55,0xca,0x5f,0xec,0xa6,0x0f,0xb3,0x3e,0x37,
- 0x81,0x60,0xd6,0x47,0xf1,0x8d,0x92,0x2c,0xfe,0xcf,0x45,0x63,0xcf,0x88,0x73,0x9c,
- 0xc2,0x1a,0x03,0x8d,0xfd,0xd4,0xb8,0x18,0xaf,0xf7,0x8f,0xe7,0x8d,0xa7,0x1b,0x1f,
- 0x7d,0xc6,0x91,0x33,0xfd,0x3c,0x02,0xc6,0x38,0x1d,0x9c,0x1f,0x97,0x87,0xd8,0xc5,
- 0x54,0x36,0x70,0x4c,0x3a,0x2f,0x7d,0x67,0xc2,0xb5,0x9b,0x1a,0x05,0x4c,0xf7,0xff,
- 0x99,0xbe,0xbe,0x14,0xf1,0xcf,0x65,0x6f,0xb5,0x79,0x3b,0xdd,0xf6,0x58,0x6a,0xda,
- 0xc5,0xfd,0x70,0xbe,0xab,0xda,0x58,0x32,0x3e,0xe3,0x2d,0x38,0x0a,0xdf,0x45,0x0b,
- 0x28,0x43,0x1a,0xaf,0x6e,0x53,0x56,0x3a,0xf7,0x58,0xb4,0x5b,0x5c,0xf6,0xce,0xe8,
- 0xd3,0x29,0xda,0xcf,0x7e,0xa8,0x88,0x3b,0xe2,0xcd,0x1f,0x6a,0x11,0x1a,0x74,0x85,
- 0xf6,0x77,0xfa,0x73,0xb1,0xf8,0x3f,0x07,0x14,0x0b,0xed,0x8c,0xb1,0x14,0x4d,0xa8,
- 0x69,0xa5,0xb4,0x5f,0xf7,0x24,0xff,0x32,0xee,0xfe,0x00,0x0e,0x98,0x55,0x83,0x08,
- 0x9c,0xf4,0xf4,0xf7,0xc5,0x8b,0x9d,0xe2,0x80,0xa4,0x13,0xc9,0x79,0x48,0xe9,0xb6,
- 0x1a,0x05,0xb8,0x69,0x7d,0x2a,0x4c,0xc7,0x02,0xd6,0xc5,0xa2,0xe0,0xc4,0x23,0xeb,
- 0xb3,0xf9,0xcf,0x17,0x61,0x81,0x59,0x30,0xde,0x4c,0xd5,0xd6,0x65,0xd4,0xb8,0x78,
- 0x25,0x39,0x92,0x83,0x05,0xe3,0x88,0xc7,0xde,0x80,0x2a,0x8a,0x48,0x40,0x26,0x3e,
- 0x39,0x73,0x32,0x45,0x52,0xfd,0x88,0xfc,0x77,0xa9,0xd1,0x5c,0x7a,0x96,0xf8,0x2d,
- 0x70,0x73,0x87,0xeb,0xa3,0xe6,0x71,0x65,0xcc,0xf2,0xe8,0xbf,0x94,0xc1,0x3f,0x40,
- 0x38,0xcc,0xaa,0x83,0xd5,0xfe,0x15,0x01,0xec,0x7f,0x0a,0xe0,0xd3,0x19,0xa0,0xfd,
- 0x6b,0x82,0xfd,0x8f,0x38,0xad,0xdc,0x40,0x0f,0xf1,0x5f,0x11,0xfe,0x77,0xee,0x3f,
- 0x35,0xe5,0xe0,0x5f,0x15,0x6c,0x7f,0xff,0xfa,0x85,0x29,0xe1,0x7f,0xe7,0xfe,0xff,
- 0xde,0xbf,0xff,0x60,0xeb,0xaf,0xd1,0x2c,0xbf,0x21,0xf8,0x7b,0x98,0x65,0xfe,0x2b,
- 0x82,0xf2,0x7f,0xfb,0xfe,0xff,0x0f,0xaf,0xbf,0xa2,0x89,0x7f,0xc3,0x9a,0x4b,0x69,
- 0x7d,0xf5,0xef,0xfd,0x6b,0x68,0xf8,0xb7,0x5c,0xe5,0x72,0xfd,0xdf,0xbc,0xfd,0xff,
- 0x07,0xfe,0x1a,0x2f,0x5f,0xbe,0x6c,0xfe,0x2f,0x84,0xff,0x37,0x5f,0xff,0x1f,0xec,
- 0x7b,0xfc,0x4f,0x7d,0xf8,0x9f,0xfa,0xf0,0x7f,0x63,0xfd,0xff,0x53,0x1f,0xfe,0xaf,
- 0xfe,0xfe,0xa3,0xe9,0x9f,0xff,0x58,0xd7,0x9b,0x33,0x27,0xe1,0x77,0x8a,0x15,0x06,
- 0x69,0x30,0xd2,0xf8,0xf9,0x18,0x31,0x8e,0x56,0xc9,0x0d,0xda,0x11,0x8a,0x90,0x98,
- 0xf6,0xfc,0x60,0xc9,0x87,0xd0,0x2d,0x3c,0x49,0xde,0xc7,0xca,0xc5,0x3a,0x4a,0xc4,
- 0x47,0xd8,0xdb,0x0c,0x61,0x73,0xb3,0x23,0xe2,0xf0,0xc0,0xba,0x70,0xad,0xee,0x10,
- 0x56,0xa3,0xd5,0xd4,0x1f,0x87,0x5d,0xf8,0x4d,0x87,0x24,0x9e,0xca,0xf7,0xe9,0xb0,
- 0x58,0x67,0x86,0x26,0x14,0xa7,0x98,0xda,0xd0,0xbb,0x24,0x14,0x1c,0xd2,0xf4,0xf5,
- 0x66,0xce,0x18,0xac,0xe3,0x1e,0xe0,0xbb,0xa9,0x1b,0x4c,0xc9,0x76,0x1a,0xfb,0x98,
- 0x0c,0x45,0x8a,0x7d,0x26,0xa3,0x30,0xe3,0x3a,0xc3,0xaa,0x37,0xec,0x4b,0xe3,0x5b,
- 0x09,0xb6,0xc3,0xfb,0x46,0x6f,0xd2,0x77,0x50,0xad,0x60,0x87,0xcd,0x40,0xcf,0xe2,
- 0x70,0xd9,0x97,0x20,0x91,0x08,0x6a,0xce,0xc7,0xcb,0xe6,0x8b,0xc3,0x50,0x57,0xbc,
- 0x61,0x83,0x8d,0xff,0xb6,0x4d,0xdb,0xdc,0xfa,0x47,0x08,0x8e,0xb8,0x56,0x49,0x03,
- 0x30,0xd1,0xd1,0xb8,0xd3,0x35,0x24,0x5b,0x42,0xab,0xeb,0xf5,0xea,0x37,0xc5,0xe5,
- 0x27,0xbe,0x0b,0x78,0xc4,0x1e,0x1f,0xdb,0x29,0x1d,0x31,0xfc,0x4b,0x9c,0xbb,0x67,
- 0xf8,0xd8,0xe1,0xf6,0x5e,0xd8,0xb8,0x5d,0xbe,0xbb,0x29,0x61,0xf4,0x8a,0x25,0x6e,
- 0x75,0xbe,0x38,0x73,0x67,0xb0,0xb8,0xaa,0x2b,0xab,0x3f,0x64,0x79,0x5e,0xf7,0x71,
- 0x8f,0xc1,0xfb,0x66,0x2c,0x07,0x21,0x3c,0xdc,0xb7,0x8b,0xf8,0x1b,0x91,0x6f,0x26,
- 0xf9,0x16,0x47,0x25,0x74,0x8a,0x82,0x1a,0x2e,0xb2,0xf9,0x51,0x3c,0xcc,0xca,0x93,
- 0xad,0x9c,0x6d,0xc0,0xb3,0x7a,0x92,0x97,0xb8,0x6f,0x57,0x68,0xa1,0x2a,0xca,0x3d,
- 0xa0,0x08,0xf0,0x11,0x9f,0xd0,0xce,0x0f,0x2f,0x58,0x14,0x16,0x73,0x46,0x79,0x2b,
- 0x23,0xe2,0x90,0xfe,0x41,0xc9,0x5f,0xb2,0xd9,0x5d,0x6b,0x69,0x50,0xc8,0xdf,0x39,
- 0x18,0xac,0x89,0x39,0x89,0x2f,0x94,0x35,0x1f,0xcd,0x10,0x7c,0x6f,0xcf,0x92,0x62,
- 0xc7,0x06,0x78,0x59,0xf7,0x0f,0x29,0x37,0xca,0xb7,0x8b,0x97,0x35,0xfd,0xe9,0xdb,
- 0x3d,0x2a,0x63,0x66,0xac,0xe1,0x64,0xc1,0x5e,0xfb,0x7c,0xb4,0x6b,0x77,0x2d,0x9b,
- 0xd4,0x6e,0x12,0xf3,0xdb,0xad,0x68,0x61,0xe3,0x10,0x2e,0x14,0x35,0xd6,0xb8,0x79,
- 0x30,0xef,0x6d,0x36,0x0e,0x9f,0x10,0x75,0x6a,0xc2,0x96,0x1f,0xf4,0xfe,0x79,0x0f,
- 0xa7,0x26,0xd8,0x4e,0x72,0xc3,0x2f,0x52,0xfc,0x30,0x6a,0x11,0xa5,0xd0,0x6d,0xef,
- 0x93,0x9d,0x70,0xd8,0x1a,0x1d,0x9b,0x35,0x1f,0x76,0xab,0xd6,0xa9,0x94,0xf6,0xf3,
- 0x10,0x3b,0x09,0x7b,0x00,0x85,0xf6,0xa6,0x21,0x98,0x41,0x8c,0x94,0x55,0x6c,0x96,
- 0x62,0x75,0xdc,0x25,0x7e,0xf8,0xf4,0xf5,0x00,0x0f,0xc2,0x23,0x56,0x59,0x9c,0xfb,
- 0x4d,0xab,0x3e,0xce,0x58,0xcd,0xde,0xe4,0x33,0x22,0x95,0xdb,0xf3,0xea,0xd8,0x6c,
- 0xd8,0x2e,0xb6,0xd1,0x3c,0x14,0x61,0xe3,0x47,0x1d,0xd3,0x3b,0x3f,0xa7,0x9b,0x1c,
- 0xfd,0x2f,0xaa,0x4f,0x49,0xf0,0x00,0x3b,0x26,0x3a,0x13,0xbe,0xb3,0x79,0x37,0x3a,
- 0x5c,0x7c,0xc7,0x3d,0xfa,0x6f,0xb2,0xe7,0x83,0xe4,0x44,0xd8,0x1b,0x22,0x10,0xf5,
- 0xf6,0xc8,0xef,0xc1,0x05,0x23,0x2e,0x7c,0xdb,0xe5,0xd1,0xf0,0x61,0xa8,0x12,0xb7,
- 0x3d,0xa1,0x56,0x44,0xb6,0x1b,0x81,0x2e,0x9a,0x0f,0x92,0xee,0x2f,0xda,0xaa,0x9d,
- 0x36,0x26,0xf8,0x41,0xb7,0x0b,0x64,0x53,0x4c,0xf0,0xa9,0xfe,0xd8,0xe3,0x10,0x64,
- 0x94,0x1f,0xac,0xe8,0xd3,0x82,0xd9,0xf3,0xd1,0x88,0x1f,0xd5,0x0f,0xf7,0xb6,0xa7,
- 0xfa,0x03,0x18,0xc1,0x76,0x67,0x09,0x09,0x4d,0xfe,0xe5,0xd4,0x48,0x50,0x3b,0x54,
- 0xb8,0xea,0xcb,0xce,0xec,0xfc,0xe0,0x7f,0x9b,0xb1,0x4e,0x6c,0x5f,0x9d,0x1a,0xcb,
- 0x25,0xaa,0x8c,0xfc,0xc7,0xe5,0x16,0xaa,0xcf,0x0a,0xf1,0x2d,0x44,0x54,0xee,0xfc,
- 0x26,0xd5,0xc7,0xd9,0xfb,0x43,0xd6,0xb4,0x6c,0xd4,0xca,0x0c,0x7e,0x3c,0xb7,0x46,
- 0x22,0x62,0x4f,0xde,0x2f,0xc2,0xdf,0x80,0x8d,0x14,0x78,0x1c,0xdf,0xfc,0x7b,0x65,
- 0xa3,0x84,0xa7,0x86,0xb3,0xfa,0x43,0xce,0xb2,0xe6,0xa3,0x79,0x97,0xad,0x2f,0xde,
- 0x41,0xf3,0xd1,0xf2,0x50,0xd8,0x9e,0x3a,0x12,0x3e,0x11,0x5b,0x53,0x35,0x87,0xea,
- 0xe3,0x06,0xd2,0xd7,0xaf,0xe6,0x21,0xb1,0xde,0xe3,0xe1,0xce,0xd4,0x34,0x34,0x6a,
- 0x0b,0xc9,0x42,0x5b,0x12,0xfa,0xbd,0x74,0x24,0x19,0x4e,0xe8,0x78,0x6a,0xc0,0x96,
- 0x1f,0xdc,0x9a,0xbf,0x53,0x49,0xb1,0x9d,0xe5,0x91,0xd8,0x14,0xed,0x99,0xe2,0x3f,
- 0x05,0x6d,0x54,0x4f,0x51,0x68,0x1d,0xb9,0x92,0x1f,0xfe,0x9a,0x34,0xdf,0x78,0xf0,
- 0x38,0x5e,0xff,0x89,0x6e,0xf1,0xc3,0x6b,0xe0,0x83,0x72,0xe2,0x87,0xab,0x35,0xf0,
- 0x4a,0xce,0x02,0x9a,0x8f,0x96,0xdd,0x1f,0x32,0x02,0xf5,0x54,0x04,0x97,0x14,0x7d,
- 0x9a,0x47,0x03,0xc1,0xbc,0xad,0x3d,0x4a,0x95,0x68,0xed,0x60,0xa5,0xd0,0x03,0xdb,
- 0x95,0x8a,0xf0,0xe6,0x07,0xd3,0xeb,0xdf,0x9a,0x33,0x68,0x91,0xc0,0x1d,0x85,0x4d,
- 0x5d,0x7d,0xbb,0x41,0x6f,0x59,0x47,0x83,0xd2,0x4a,0x8b,0x53,0xb4,0x31,0x63,0x5b,
- 0xaa,0x75,0xa4,0x3b,0x33,0x1f,0x76,0xe6,0x4e,0xb6,0x4e,0xaf,0x32,0x70,0xb5,0x7f,
- 0x63,0xb5,0xe5,0xcc,0xdb,0xec,0xc1,0x1f,0x42,0xaf,0x6a,0xf5,0x6e,0x66,0x73,0xf9,
- 0x53,0xed,0x9e,0x3b,0x1c,0x51,0xf6,0xe3,0xac,0xf9,0x20,0x87,0x44,0xf0,0xd6,0x02,
- 0x2b,0xec,0x09,0xe1,0x25,0x95,0x5b,0x36,0x5d,0x0f,0xef,0x45,0x82,0x86,0x33,0x2a,
- 0xcd,0x80,0xf7,0x44,0x20,0x84,0xbf,0xef,0x8a,0x4c,0x7e,0x50,0xea,0xd2,0xcf,0x43,
- 0x7d,0x93,0x15,0x16,0x3b,0xab,0x50,0xb5,0x60,0xd1,0x6f,0xa4,0xf3,0xe0,0x5b,0x94,
- 0x5a,0x28,0x4a,0x1d,0x6a,0xd9,0xfd,0x91,0x9a,0x4e,0x42,0x2d,0xe4,0x53,0x36,0x36,
- 0x81,0xcb,0xe0,0xa2,0xb6,0xe4,0x27,0xdb,0x7b,0x35,0xa7,0xd4,0xa9,0xeb,0x27,0x21,
- 0x95,0x3f,0xca,0xf4,0x87,0xcc,0xa1,0x20,0x58,0x69,0x8c,0xda,0x02,0xc0,0x7a,0x8e,
- 0xfa,0x79,0xc4,0x73,0x35,0xcd,0x47,0xeb,0xe1,0x49,0xf5,0x5b,0xe1,0x5b,0xef,0xb8,
- 0x51,0x64,0xc7,0xc7,0xba,0x72,0x21,0x1c,0x29,0xdf,0x9b,0x57,0x42,0xf1,0x1c,0xf0,
- 0x26,0xd5,0x1b,0xdd,0xb9,0xed,0x0f,0x81,0x9e,0xf4,0xd6,0xb1,0x75,0xd0,0x69,0xea,
- 0xef,0x71,0xbf,0x91,0x89,0x8f,0x95,0x42,0xb1,0xb6,0x96,0xea,0x73,0xeb,0xc2,0xb3,
- 0xdb,0xd6,0xc2,0xdf,0x34,0xa9,0x54,0xe8,0x3a,0x43,0x94,0x1a,0x5b,0x57,0xe5,0x9e,
- 0x82,0x35,0xc6,0x53,0xc0,0xff,0xde,0x16,0x1f,0xf3,0x46,0x1c,0xf0,0x73,0xf1,0x7f,
- 0x24,0xf3,0x57,0xcf,0x08,0x8a,0x97,0xc5,0x3c,0x6a,0xec,0x3f,0x1b,0xfe,0x42,0xf8,
- 0x47,0x9c,0x2b,0x8a,0x7e,0xc4,0x7e,0x2e,0x76,0x5b,0xf1,0xb1,0xb9,0xe9,0xfd,0x59,
- 0xd2,0xc3,0xdf,0xa1,0x32,0x70,0x2b,0xfb,0x03,0x0f,0x50,0xb4,0x67,0x08,0x3e,0xa6,
- 0xfe,0xe1,0x7e,0x69,0x09,0x7b,0x4a,0xa9,0x97,0xac,0xf9,0xb0,0xd3,0xef,0xdb,0x94,
- 0x33,0xc1,0x36,0x49,0x55,0xa3,0xca,0x84,0xfc,0x1d,0x38,0xd6,0x65,0x75,0x43,0xba,
- 0xa4,0x5c,0xee,0x08,0x24,0x37,0x9d,0x6f,0xfe,0x11,0xcd,0x37,0xa7,0x23,0xf6,0xf9,
- 0x68,0x8f,0x89,0xb5,0x7e,0xdf,0x58,0x09,0xb1,0xb9,0xd6,0xb2,0x7c,0x2b,0x1e,0x08,
- 0xfb,0x60,0xdb,0x0a,0x75,0x35,0xdb,0xa8,0xaf,0xe1,0xdb,0x0c,0xca,0x0f,0xa6,0xe7,
- 0x83,0x08,0xb1,0x75,0x11,0x65,0x03,0x23,0x7e,0x36,0x6b,0xaa,0x1b,0x52,0xf8,0x14,
- 0xec,0xe1,0xa5,0xaf,0xaa,0xdf,0x0c,0x3f,0x8e,0x47,0x74,0x33,0xef,0x1b,0xb6,0xfc,
- 0x60,0xa8,0x38,0xc1,0x69,0x1e,0x7a,0xab,0x9f,0x11,0xbb,0x1e,0xb5,0x77,0x0d,0x3b,
- 0x2a,0xf6,0x0c,0xea,0xed,0xb8,0x50,0x9b,0x68,0x3d,0x07,0xf3,0xec,0xf3,0xd1,0xbc,
- 0xc5,0xa4,0x3f,0x83,0xa6,0xcf,0xaf,0x06,0xe1,0x88,0x40,0xa1,0x4f,0xfe,0x50,0xb9,
- 0x38,0x18,0x18,0x77,0x1d,0x64,0x3f,0xb9,0xf5,0x08,0x78,0xc6,0x2b,0x3f,0xb2,0xf1,
- 0xdf,0x04,0x6e,0xf1,0x8b,0x46,0x70,0x98,0x96,0xc5,0xb8,0x48,0x63,0xbb,0xfd,0x24,
- 0x40,0x43,0xc2,0xb5,0x57,0xfd,0x00,0x3e,0xe6,0xc1,0x81,0x82,0xec,0xfc,0x60,0x1f,
- 0x85,0xc5,0x06,0x9d,0x1f,0x51,0x37,0x00,0x08,0xbe,0xed,0x1a,0xef,0x6c,0x68,0xfd,
- 0xf9,0xd6,0xea,0xe5,0xce,0xf1,0xa2,0xfb,0xe1,0xc8,0xb6,0x1b,0x4c,0xc5,0x3e,0x1f,
- 0xb6,0x5f,0x71,0x90,0x19,0x3a,0xe9,0xa5,0xb2,0xac,0x6e,0xa8,0x4a,0xd2,0x98,0x57,
- 0x1a,0x94,0x66,0x78,0xeb,0xe4,0xdb,0x61,0x9d,0xe9,0x59,0x65,0xf5,0x87,0x9c,0xfe,
- 0xbd,0x68,0x3e,0xec,0x63,0xe6,0xdc,0x54,0x1a,0xab,0x5b,0xaf,0x4a,0xd0,0xf5,0x12,
- 0x05,0xca,0x5a,0x1f,0x77,0x7c,0x0d,0x1e,0x33,0x3c,0xe3,0x57,0xf4,0x47,0xe2,0xfa,
- 0xc3,0x52,0x39,0xb1,0x55,0xa9,0xfa,0xd2,0x47,0x81,0x32,0xdc,0xc9,0xc4,0xd8,0x74,
- 0x3b,0x5a,0x8c,0xcd,0x5a,0xcc,0xbc,0x3a,0xbb,0x3f,0xd2,0x8a,0xf5,0xbf,0xa6,0xf9,
- 0x17,0x71,0x8b,0x16,0x55,0x45,0xfb,0xa1,0x12,0x85,0x3d,0xad,0xf8,0x59,0x7d,0x15,
- 0x7e,0x2d,0x05,0xcc,0xaa,0xec,0xf9,0x68,0x09,0xf8,0x80,0xed,0x5f,0x92,0xe6,0xb7,
- 0xb8,0x06,0xd4,0xc9,0x5d,0xdf,0x85,0xc6,0x5b,0x5d,0x85,0xf2,0x39,0xfe,0xa1,0xfe,
- 0x6d,0xea,0x6f,0x9c,0xe1,0x47,0x0d,0xcc,0xbc,0xc4,0x8f,0x89,0xea,0x91,0xa1,0x8f,
- 0xe5,0xa0,0xf1,0x73,0xb3,0xda,0xef,0x3c,0xaf,0x06,0x8d,0xc9,0x28,0xae,0xd8,0x04,
- 0x11,0xc9,0xa2,0x7b,0x4a,0x9c,0x07,0x9b,0x33,0xf8,0xc7,0xd4,0xc6,0xb6,0x74,0x96,
- 0xa2,0x7d,0x39,0xdb,0xe4,0x13,0xdd,0x34,0xdd,0xa3,0x97,0x39,0x45,0xaf,0xfe,0x99,
- 0x93,0xb7,0xc7,0x99,0xb3,0x6b,0x9d,0x8e,0xd0,0xc5,0xcf,0xfc,0x99,0xfe,0x90,0xb0,
- 0xc1,0xd3,0xc9,0x63,0x89,0x15,0x81,0x0a,0x27,0x93,0x45,0x2c,0xb9,0x02,0x5f,0x5c,
- 0x3c,0x0f,0xfa,0x30,0x0f,0xac,0xdf,0x50,0x86,0x86,0x6b,0xab,0x37,0x70,0x75,0x20,
- 0xc3,0x0f,0x2f,0xde,0x40,0x30,0xc9,0xb4,0xf0,0x52,0x07,0x19,0x3e,0xa2,0x8d,0x3d,
- 0x0f,0x15,0xfd,0xb8,0x7f,0x36,0x2c,0x0a,0x73,0x3d,0x64,0xdd,0x7f,0x7a,0x7f,0x2e,
- 0x9a,0x89,0xd6,0x96,0x59,0x69,0xbb,0x2a,0xa3,0x5b,0x04,0x92,0x4b,0xfa,0xca,0x7c,
- 0xd2,0x05,0xea,0xf8,0xd4,0x27,0xff,0x44,0x3f,0x62,0x04,0x02,0x78,0x4a,0x4f,0xdb,
- 0x2f,0xca,0x0f,0x4e,0x35,0x39,0x9c,0xb4,0xfa,0x43,0xba,0xce,0x95,0x5d,0x8a,0x5d,
- 0xe2,0x8d,0xe6,0xed,0x17,0xe4,0xfb,0xb5,0xcb,0xd1,0x46,0xd8,0x74,0x45,0x7f,0x48,
- 0x71,0x51,0xaf,0x4d,0xe4,0xf7,0xca,0x3e,0xf1,0xbe,0x1e,0x48,0x38,0xe3,0xdd,0x2b,
- 0x09,0x08,0x99,0x05,0xbd,0xc4,0x8f,0xe2,0x81,0xad,0x0f,0xd2,0x7c,0xb4,0xe9,0x9f,
- 0xcb,0xcc,0xa9,0x14,0x07,0x12,0x9e,0x09,0x7e,0x2e,0x3c,0x1f,0xf6,0x27,0x3c,0x27,
- 0xef,0xec,0x63,0x3f,0x11,0x61,0x63,0xe1,0xdb,0xfc,0x20,0xab,0xd4,0x7f,0xcd,0x3d,
- 0x13,0xad,0x2f,0xca,0xdf,0x4c,0xef,0x87,0x84,0x42,0x65,0x02,0x54,0x14,0xe9,0x70,
- 0xb6,0xee,0x91,0xf0,0xc5,0x6b,0x10,0x08,0x85,0xc5,0xdc,0xe3,0x57,0xd3,0x60,0x8b,
- 0xcd,0x46,0x0c,0xf2,0xfc,0xac,0x3e,0xd3,0x1f,0x52,0xfb,0x22,0xc2,0x80,0xd2,0x24,
- 0xff,0xd6,0xb2,0xd9,0xc6,0x4b,0x28,0x94,0xac,0x7e,0xe0,0x47,0xf0,0x00,0x2e,0x54,
- 0x64,0x75,0x78,0x59,0xf1,0xf7,0x84,0xbe,0xfc,0xd3,0xab,0xd9,0xfd,0xb6,0xfc,0xe0,
- 0xed,0xa8,0x3d,0x6a,0x06,0x6f,0xdb,0x9d,0xeb,0x44,0xc1,0x9f,0xe0,0x7d,0xf2,0x12,
- 0x18,0xc0,0xff,0x62,0x41,0xaf,0xbc,0x01,0x1e,0xa3,0x7e,0x29,0x75,0xf6,0xfc,0xe0,
- 0x4c,0x5a,0x9f,0xe0,0xa0,0xd5,0x5f,0xeb,0x32,0xbc,0x64,0xaa,0x67,0xe5,0xfb,0x8d,
- 0x4b,0x16,0x63,0x5c,0xde,0x45,0xf3,0x53,0xfa,0x3d,0xf6,0xfa,0x38,0x4e,0xf1,0x6d,
- 0x8a,0xde,0xbf,0x80,0x9f,0x2d,0xfe,0x10,0x49,0x5c,0xf6,0x5d,0x70,0x41,0x04,0x0e,
- 0xa7,0x88,0x52,0xd4,0x3a,0xb2,0xaf,0xd9,0xc6,0x0f,0xd7,0x52,0xfd,0x01,0xd4,0x8f,
- 0xd9,0x2c,0xbe,0x36,0xd5,0x1f,0x69,0x16,0xbc,0xc4,0x4a,0x4d,0x2b,0xd1,0xb0,0x8f,
- 0x55,0x1a,0x3d,0xe3,0xac,0xb7,0x7c,0xfa,0xfe,0xa9,0xfc,0x20,0xcd,0x43,0x61,0x2f,
- 0x5a,0xd3,0x40,0xac,0x46,0x01,0xcf,0x09,0x18,0xc9,0x5b,0xed,0x79,0x53,0xdf,0xd7,
- 0x51,0x19,0xc3,0x23,0x7a,0x1a,0xaf,0x8e,0x2a,0xbb,0xe0,0x00,0xab,0x32,0xbb,0xfd,
- 0x4c,0x31,0xd6,0x3b,0x62,0x13,0xbc,0x84,0xe5,0x42,0x2f,0x35,0x6e,0xdd,0xda,0x74,
- 0x14,0x0e,0x24,0xac,0x7c,0xc7,0xe6,0xf4,0xfe,0x4c,0x4a,0xa3,0x40,0x49,0xc0,0x4d,
- 0x31,0xf9,0x69,0x34,0x1c,0xd5,0x71,0xe7,0xd3,0xf2,0xd3,0xde,0x4b,0x91,0x5e,0x91,
- 0xdf,0x23,0x4f,0x18,0x97,0x06,0x1a,0x37,0x3a,0x89,0x1f,0x35,0xfd,0x3c,0xad,0x94,
- 0x1d,0x83,0x2a,0xd8,0x44,0x6d,0xf6,0x26,0x20,0xa8,0x34,0x8a,0x14,0x3f,0x4a,0x4b,
- 0xcd,0x47,0xd3,0x52,0xf5,0x71,0x5a,0x1a,0xff,0xc0,0x4e,0xfe,0xba,0x45,0xf2,0x41,
- 0xeb,0xf6,0x2d,0x3d,0xd0,0xb2,0x18,0x0d,0xdf,0x2d,0xd4,0x16,0x52,0xb1,0x32,0x86,
- 0x9a,0xc5,0xff,0xb9,0xb2,0x3e,0xee,0xe9,0x55,0xf9,0x56,0x5a,0x10,0xb6,0x37,0x59,
- 0xdd,0xad,0x89,0xef,0xe4,0xb5,0x12,0x55,0xa8,0x7f,0xf2,0xed,0xf8,0xa7,0x6e,0x66,
- 0x39,0x3c,0x0a,0x9e,0xa6,0x54,0x1a,0x11,0xa8,0x8d,0xb3,0xdb,0xea,0xa7,0x4a,0x15,
- 0x73,0xe5,0xca,0x7e,0xae,0x37,0x65,0xd5,0xc7,0x51,0x7e,0x90,0xfa,0x6f,0xe7,0xb9,
- 0xc3,0x43,0x56,0xda,0x42,0xd5,0xd8,0x08,0xeb,0x00,0xdf,0x61,0x87,0xe6,0x50,0x76,
- 0xee,0x66,0xb1,0xb6,0x3c,0xad,0x29,0xa3,0x7f,0x56,0xd3,0x7c,0x10,0x4a,0x4b,0x85,
- 0x09,0xe6,0x49,0x81,0x14,0xde,0x8b,0x40,0x90,0x17,0x50,0xa1,0x1c,0x11,0xc5,0x9d,
- 0x42,0xfe,0x30,0x93,0x1f,0x9c,0x39,0x12,0x3f,0x3f,0x2f,0xd8,0xb6,0x74,0x33,0xf5,
- 0x87,0x4c,0xd1,0xa2,0xce,0xc5,0xa8,0x63,0xd2,0x6b,0x29,0xc6,0x54,0x63,0xdb,0xa6,
- 0xcd,0x9d,0x7f,0x60,0x76,0x7e,0xf8,0xeb,0xc4,0xaf,0xde,0x4c,0xb0,0x50,0x0b,0x5a,
- 0xfc,0x79,0xe3,0x10,0x04,0xda,0x9c,0x85,0xf2,0x88,0x86,0xc2,0x2d,0xce,0x68,0x99,
- 0x8d,0x4f,0x55,0x12,0xd3,0x23,0xd4,0x1f,0x32,0xdc,0x69,0x0a,0xae,0x57,0xc9,0x4e,
- 0xca,0x0f,0x0a,0x6f,0x05,0x6f,0x0a,0xc3,0xe9,0xf2,0x08,0xdf,0x0e,0x7c,0x20,0xfc,
- 0x66,0x66,0x3e,0x9a,0xb2,0x45,0xac,0x81,0x4a,0x9a,0x0f,0x72,0x47,0x6c,0x8d,0x5e,
- 0xd9,0xda,0xda,0xee,0x2e,0x56,0x36,0x96,0x96,0xb6,0x89,0x65,0xd4,0x31,0x49,0xda,
- 0x41,0xd4,0xa9,0x4c,0x7f,0xc8,0xad,0xca,0x4e,0xb0,0xf8,0xe1,0xc3,0x6c,0xaf,0xb1,
- 0x11,0x5c,0x6d,0xad,0xed,0xac,0xc6,0xd8,0xa8,0xcd,0x5b,0xe4,0x3d,0xce,0x7e,0x1f,
- 0x5e,0x03,0x65,0xed,0xde,0x61,0xdb,0x7a,0xc6,0x66,0x5a,0xd5,0x70,0x34,0x86,0x69,
- 0x39,0x1c,0x4a,0x50,0xa3,0x48,0xb5,0x9c,0xf5,0x9b,0x56,0x5b,0x00,0xc4,0xab,0x5b,
- 0x03,0x08,0x7d,0xd9,0xa8,0x98,0x5e,0x1f,0xca,0x0f,0xbe,0x67,0x35,0x01,0xe8,0x7c,
- 0x97,0x9d,0x37,0x82,0x8b,0x0a,0x2c,0x5a,0x94,0x98,0xea,0x20,0x7a,0x3e,0x6c,0xf1,
- 0xa3,0xec,0xf9,0xc1,0x78,0xa4,0x41,0xb7,0xfa,0x23,0xc5,0x61,0x08,0xaa,0x35,0xd7,
- 0x40,0xd1,0x78,0x78,0xa8,0xe5,0xef,0xe9,0x48,0xa1,0x38,0x65,0x54,0x03,0xfa,0xa7,
- 0x87,0xc5,0xf4,0xfe,0xf7,0xe6,0x7c,0x06,0xce,0x98,0x1e,0xea,0x06,0x90,0x80,0xf5,
- 0x8b,0xee,0x11,0x8b,0x77,0xb9,0xdf,0x53,0xd6,0x4b,0x15,0x78,0xa4,0xf9,0xef,0x88,
- 0xe8,0x24,0x1c,0x49,0x39,0x92,0xd9,0x0f,0xca,0x97,0x20,0x66,0xce,0x05,0xd5,0xc9,
- 0x4c,0x10,0x9f,0xad,0x80,0x6b,0x9c,0xb8,0xbb,0x50,0x2d,0x4b,0xaa,0xc4,0x64,0x2b,
- 0xe0,0x12,0x01,0x76,0x38,0xcd,0x4f,0x10,0xda,0x7f,0x85,0x27,0xcd,0x54,0x5b,0x00,
- 0xe9,0x49,0x31,0xcf,0x54,0xbf,0x61,0xd5,0x77,0xa0,0x30,0xc1,0x6e,0xe3,0x9b,0x10,
- 0x78,0xa3,0xff,0x32,0x6a,0x4c,0xdf,0x3f,0x12,0x59,0x06,0x63,0xe2,0x86,0xa4,0x8b,
- 0xf8,0x51,0x47,0x09,0xff,0xb4,0xca,0x17,0x94,0x41,0xb1,0x2d,0xe4,0x6a,0x2d,0x73,
- 0x23,0x34,0x5a,0x90,0x74,0xb6,0xca,0x67,0x32,0xfc,0xa8,0xc2,0x5d,0xf0,0x77,0xa9,
- 0x79,0x19,0xa3,0xec,0x75,0x78,0x0e,0x54,0x2a,0x43,0x46,0x0d,0x63,0xcd,0xa3,0x84,
- 0x24,0x20,0xd8,0x8a,0xcb,0xe1,0x4c,0x7f,0x48,0xe5,0xa0,0xf1,0x96,0xf8,0x6e,0x39,
- 0x3a,0x65,0x01,0xf8,0x44,0x34,0xea,0xb7,0x4d,0xc8,0x7f,0x80,0xc9,0x8e,0x60,0xf9,
- 0x8c,0xa7,0x10,0x08,0x0d,0x89,0x6a,0xe2,0x47,0x8d,0xdb,0xf2,0x83,0x82,0xa6,0x51,
- 0x8f,0xaa,0x6d,0xea,0x2c,0xe3,0x39,0x54,0x44,0x39,0x40,0xfd,0xf9,0x19,0x1e,0xb9,
- 0xd3,0x3d,0xce,0x9e,0xa4,0xfa,0xb8,0x55,0x36,0xfc,0x03,0xe2,0xf1,0x45,0xa4,0xaf,
- 0xba,0x03,0xec,0x04,0x2a,0xae,0xf9,0x74,0xf6,0x14,0xde,0x61,0xce,0x12,0xf5,0x9e,
- 0xed,0xa7,0x8c,0xb5,0x30,0x7f,0x18,0x5d,0xd1,0xc1,0x0c,0x3f,0x5c,0x11,0x56,0x7f,
- 0x12,0x15,0x18,0x07,0xf4,0xa6,0xb4,0x3c,0x09,0x17,0xf6,0x80,0xe6,0x13,0x8b,0x4b,
- 0x98,0xd9,0x1e,0x33,0x7c,0xe0,0x8d,0xdb,0xf0,0x4f,0xcf,0xcc,0x24,0x9f,0x2a,0xaa,
- 0x7d,0x5a,0xf4,0x99,0xe8,0x36,0x46,0xe4,0xa4,0x7e,0xf1,0xc4,0x37,0xc5,0x5f,0x6f,
- 0x2d,0x4b,0x4a,0x09,0xb3,0x81,0xa3,0xfe,0x39,0x69,0xe3,0x87,0xef,0xb2,0x92,0x86,
- 0xd7,0x51,0x19,0xdd,0xc5,0x92,0x60,0xd2,0x6a,0x14,0x89,0x77,0x30,0xae,0xdb,0x29,
- 0x8f,0x95,0x5e,0xf4,0xd3,0xa8,0x74,0xf9,0x74,0x1a,0xff,0x97,0x6a,0xe3,0x34,0x1d,
- 0xde,0xf4,0x99,0xf0,0x1d,0xf8,0x10,0xbe,0x3b,0xa0,0x9a,0x72,0x1d,0x1c,0xd3,0xaa,
- 0x93,0xf9,0xc3,0xb2,0x1f,0x15,0x6f,0xb5,0xe9,0x1c,0x55,0x33,0xf6,0x7a,0x9b,0x42,
- 0x65,0x59,0xd4,0x8d,0x87,0xe9,0x4b,0xf6,0x53,0xbf,0x2c,0x3f,0xaa,0x9d,0x93,0xe8,
- 0x56,0x78,0x63,0xf2,0x4a,0x7c,0xb5,0x0a,0x2a,0x5d,0xcf,0xd4,0xa7,0x88,0x1c,0x27,
- 0x1a,0x11,0xbc,0xde,0x9f,0x3b,0x8a,0xfa,0xe7,0x6b,0x90,0x17,0x47,0xff,0xa2,0x9b,
- 0xeb,0x1d,0xad,0xfe,0xcd,0x3e,0xad,0x8f,0x21,0x1e,0xd8,0x66,0xe7,0x47,0x15,0x4b,
- 0x10,0x65,0xbe,0x81,0x08,0x84,0xbb,0xa0,0xd7,0x9a,0x9e,0x96,0xcb,0x21,0x6a,0x0d,
- 0xb2,0x0a,0x1b,0xd4,0x91,0xd5,0xcc,0xaa,0x4f,0x81,0xfc,0xaf,0x12,0x3f,0x1c,0x61,
- 0x86,0x9c,0x6a,0x93,0x95,0x9f,0x02,0x42,0x6e,0xb2,0x2f,0x3e,0xb4,0x68,0x68,0xe8,
- 0xb7,0xc9,0x7a,0x5a,0xff,0x6c,0x9b,0x39,0x2e,0xc6,0x52,0xeb,0xb9,0x0a,0x26,0xe1,
- 0x66,0xc8,0x37,0x3b,0x53,0xfd,0x5b,0x36,0x9a,0x45,0xe3,0xd6,0x11,0x97,0xbd,0x3f,
- 0x52,0x7f,0xce,0x78,0xf4,0x94,0xee,0x80,0x02,0xa3,0x33,0x2e,0xf0,0x32,0x07,0x35,
- 0x56,0x8a,0xe2,0x87,0xc6,0x5d,0xf4,0x0f,0x07,0xa1,0xda,0xed,0x6a,0xb7,0xcd,0x47,
- 0x33,0x4b,0x7e,0x4a,0xfd,0x91,0xc6,0xd1,0x9a,0xcf,0x87,0x03,0xd1,0xaa,0x71,0xbe,
- 0xdf,0xf8,0x9d,0xd1,0x6d,0x7a,0xc6,0x11,0xf8,0x7d,0x15,0x9e,0x31,0x2b,0x4e,0xaa,
- 0x3f,0x61,0x7a,0x9a,0x9f,0x99,0x50,0x36,0x48,0x7b,0xd0,0x8b,0x71,0xe8,0x4c,0x18,
- 0xbb,0xa9,0x1b,0x2d,0x30,0x13,0x45,0x5d,0xb1,0xf2,0xef,0x28,0xb4,0x5e,0xad,0xb1,
- 0x70,0x86,0x1f,0xae,0x50,0x7f,0x24,0xcf,0x49,0xea,0x0f,0xa0,0x3f,0x0f,0x05,0xb8,
- 0x9b,0xdc,0xd4,0x6f,0x8a,0x99,0xaa,0x68,0x0a,0xc1,0x33,0x32,0x7d,0xc8,0xcc,0x9f,
- 0xe6,0x53,0x7d,0xce,0xea,0x8f,0x54,0x01,0xe8,0x7f,0xed,0x80,0xd5,0x9a,0x35,0x58,
- 0x67,0xb4,0xfc,0x08,0xf4,0xb6,0x58,0x8a,0xfa,0x65,0x54,0xdd,0x78,0x2a,0x6a,0x9b,
- 0x0f,0x4b,0xf6,0xfd,0x66,0xd3,0x95,0x94,0x2f,0xb5,0x5e,0x16,0x8d,0x06,0x5e,0x76,
- 0x8e,0xfa,0xad,0x09,0x0b,0x31,0x4e,0x52,0xc7,0x80,0x33,0xd9,0xf8,0x07,0xfe,0x9e,
- 0x8c,0x9a,0x5f,0xde,0x86,0x8a,0xba,0x81,0xb2,0xb1,0x5e,0xea,0x3f,0xd9,0x54,0xd0,
- 0x3b,0x63,0x83,0xf1,0xbe,0xdf,0xaa,0xf8,0xce,0xc4,0x7f,0x4e,0xe6,0x94,0xb5,0xf4,
- 0xb5,0x23,0x6c,0x16,0xac,0x4a,0xac,0x17,0x56,0x37,0x24,0x05,0x3f,0x84,0xe0,0x6e,
- 0xde,0x35,0xe3,0x1e,0x88,0x18,0x1e,0x11,0xd1,0x9b,0x32,0xfd,0x01,0x4c,0x65,0x91,
- 0x11,0xc7,0xdd,0x89,0x6f,0xf8,0x20,0xf4,0x46,0x7d,0xa5,0xaa,0xe2,0x50,0x16,0x45,
- 0x85,0x37,0xda,0x86,0xef,0xac,0xc4,0x94,0x58,0xcc,0x8b,0x78,0x2f,0xbd,0xdf,0x10,
- 0xff,0x74,0x3d,0x22,0x2a,0x2b,0xd4,0x6f,0x31,0x37,0x3c,0x21,0x2a,0x93,0xd7,0xac,
- 0xce,0xbd,0x3a,0x67,0xcf,0xb6,0xca,0xe5,0xfc,0x5b,0xa9,0x8e,0x91,0x21,0xfc,0x1e,
- 0x4b,0x6c,0xfc,0xf0,0xdb,0xc5,0xc7,0x7a,0xc3,0xe8,0x26,0x1d,0x61,0xd5,0xc7,0xe0,
- 0x6b,0x9a,0x01,0x45,0x8a,0x81,0xf0,0x3b,0x5c,0xe0,0x67,0x63,0x10,0xa3,0xfd,0x43,
- 0xfc,0xa8,0x34,0x3f,0x3c,0xc7,0x1a,0xfb,0xae,0xb8,0x86,0xe5,0x61,0xe3,0x24,0x55,
- 0xa3,0x8c,0x17,0x4d,0x18,0x97,0xf5,0x99,0x86,0xcb,0x68,0x1e,0x47,0x68,0xd1,0x08,
- 0x05,0x89,0x2c,0x7e,0x78,0x0c,0x95,0x52,0x20,0xa9,0x47,0xf1,0xeb,0xf8,0x08,0x6a,
- 0x63,0x3e,0xcb,0x71,0x13,0x61,0x13,0xdd,0xd2,0x10,0xfb,0x35,0xd4,0x88,0x7c,0x8a,
- 0xff,0x4c,0x5f,0x9f,0x28,0xd9,0x40,0x4e,0x13,0xf0,0x10,0x6e,0xd9,0x67,0x69,0x3a,
- 0x95,0xc1,0x86,0x9d,0x7b,0x95,0x52,0xfa,0xd0,0x36,0xe0,0xe7,0xbd,0x8d,0x8e,0x7c,
- 0x94,0xe6,0x87,0x23,0xfe,0xd1,0x9e,0x14,0x53,0xb0,0x67,0x5f,0x07,0x24,0xf3,0xee,
- 0x67,0x6f,0xc2,0x9e,0x81,0xf2,0xe4,0x3a,0xab,0x43,0x26,0x42,0xa3,0xbc,0xd5,0xa8,
- 0xea,0xa7,0xaf,0x1f,0x55,0x04,0x08,0xfc,0x7a,0x78,0xae,0x87,0xfa,0xdd,0xe9,0xf0,
- 0x69,0x52,0xec,0x71,0xa3,0x5c,0xcb,0xb3,0x3a,0x50,0x71,0x9d,0xe2,0x8d,0x6f,0xa4,
- 0xaf,0x4f,0xce,0x1c,0x85,0x33,0x88,0x37,0xf9,0x4e,0xf4,0x97,0x9f,0x87,0x40,0xcf,
- 0xb5,0x31,0xf9,0x0c,0x3c,0x6f,0xd6,0x46,0xf3,0x63,0xcd,0x5e,0x38,0x3c,0x50,0x4b,
- 0xfd,0xf4,0x26,0x32,0xfc,0x70,0x29,0xae,0x51,0x13,0xa4,0x54,0x37,0x24,0xfc,0x5e,
- 0x0b,0x5e,0xc5,0x85,0x9a,0xd4,0x6f,0xe2,0x0f,0x92,0x85,0x1a,0x2b,0x7c,0x21,0x15,
- 0xff,0x49,0xaf,0x8f,0xf6,0x00,0xfc,0x22,0x56,0x6b,0xb8,0xdc,0x6c,0x79,0x53,0x7f,
- 0xb4,0xb6,0xf5,0xba,0xad,0x33,0x46,0x8c,0x43,0x9e,0xfb,0xd1,0x3e,0xaa,0x0a,0xf4,
- 0x47,0x11,0xff,0x10,0x3f,0x6a,0xfa,0x79,0x84,0xf2,0x65,0x8d,0xc6,0xb2,0xd3,0x18,
- 0x53,0x58,0x27,0x50,0x78,0x88,0x8d,0x48,0xaf,0x4b,0x55,0xab,0xb8,0x16,0x2e,0x87,
- 0xd7,0xf3,0x6a,0x43,0xf9,0x57,0xf0,0xa3,0xc4,0x0f,0xe1,0xfa,0x16,0x1a,0xe3,0x25,
- 0x6d,0x64,0xd7,0x1b,0xd7,0x9c,0x70,0x9f,0x23,0x0b,0xde,0xc6,0x89,0xcf,0x4c,0xa3,
- 0xbe,0x50,0x28,0xb0,0xe1,0x9f,0xe2,0xd8,0x5a,0x6f,0x69,0x9b,0xba,0x2c,0xbc,0x37,
- 0xb6,0xc6,0x7b,0x37,0x09,0xa7,0x9e,0xfa,0x9e,0xb7,0xb2,0x2d,0x42,0x8d,0x92,0xbe,
- 0xe7,0x9d,0x43,0x1d,0x93,0xda,0xd2,0xfc,0xcc,0xd5,0xf9,0x2b,0xc4,0x49,0xbd,0x96,
- 0xab,0xe1,0xb2,0xa4,0x48,0xa0,0xb0,0x38,0xdc,0x44,0xf3,0x61,0xab,0xb8,0x2f,0x15,
- 0x11,0x0a,0xe4,0x39,0x07,0xe4,0xd9,0x76,0xfc,0x93,0x6a,0xfb,0xa3,0x95,0x2d,0x9f,
- 0x2a,0x7b,0x2f,0x5a,0xae,0x4d,0x45,0x84,0xc6,0x28,0x22,0x74,0x98,0x0c,0xbd,0x92,
- 0xc1,0x3f,0xe7,0xac,0x26,0x48,0xae,0xe3,0xac,0x66,0xef,0x6b,0x7a,0x91,0xa1,0x0c,
- 0xd3,0x58,0x10,0x7d,0x01,0xf5,0x07,0xa8,0x81,0x7c,0xa5,0x9a,0x46,0x87,0xd8,0xf8,
- 0x51,0x25,0x34,0x04,0xd6,0x22,0x41,0x85,0x20,0xa2,0x79,0x34,0x2e,0x10,0xfd,0x46,
- 0x50,0x03,0x78,0xb7,0x79,0x4a,0xf5,0x08,0xb3,0xfa,0x23,0x3d,0x68,0xe3,0x87,0x77,
- 0x35,0x75,0x68,0x5e,0x22,0x41,0xb5,0x20,0xcc,0x8b,0xb5,0xf0,0xc2,0x26,0x85,0x75,
- 0x68,0x60,0x70,0xc4,0x7b,0x66,0x87,0xf6,0xb4,0xc1,0x0b,0xf1,0x53,0x9a,0x5e,0x7f,
- 0xc4,0x3f,0x79,0xd4,0x04,0x49,0xdd,0x8c,0x78,0x66,0x9d,0x71,0x4f,0xbb,0x37,0xd5,
- 0x16,0xbb,0xc2,0x80,0x87,0x58,0xb9,0x44,0x02,0xaa,0xa6,0x1f,0x67,0xf8,0xe1,0x33,
- 0x7f,0x2b,0x0e,0x95,0xd7,0x1b,0xae,0xad,0x56,0x7c,0x2f,0xd0,0xbe,0x21,0x35,0x16,
- 0xc4,0x4f,0xf8,0x47,0xd1,0x0e,0xb1,0x3a,0x2a,0x94,0xcb,0xf4,0x07,0x48,0x48,0x3f,
- 0x8e,0x9c,0xd7,0x9f,0xc7,0xeb,0xbb,0x77,0x6a,0x67,0x2d,0x20,0xd4,0x3d,0x02,0x29,
- 0xa1,0xf3,0x37,0x8e,0xb3,0xac,0xd6,0xc8,0xe2,0x87,0x73,0xad,0x03,0x86,0x11,0x76,
- 0x2a,0x20,0x83,0x55,0x86,0xb0,0x49,0x94,0x91,0x57,0x99,0x8a,0x37,0xc2,0x49,0xb9,
- 0x5e,0xdb,0x00,0x72,0x93,0xad,0x3e,0x6e,0xbf,0x38,0xba,0xc8,0x13,0xe6,0x63,0x61,
- 0xdc,0xcf,0xdc,0x27,0x54,0x6a,0x94,0xbd,0x1e,0xe6,0xd3,0xc4,0x90,0x09,0x38,0x1a,
- 0xa9,0x25,0xc1,0x91,0x89,0x2f,0x29,0xb7,0x87,0xc3,0xc9,0x58,0xb2,0xa2,0xc6,0xa1,
- 0xc0,0x6e,0xe1,0x33,0x54,0x1f,0x73,0x85,0x3b,0x84,0x4f,0xd4,0xdd,0xcc,0x86,0x9a,
- 0x3a,0x85,0x3e,0xd2,0xa3,0x3b,0x1c,0x69,0xfd,0x2c,0x34,0x03,0x3a,0xb9,0x7e,0xda,
- 0xe1,0xa7,0x32,0x31,0x1a,0x13,0xf6,0x0d,0x70,0xc2,0x5a,0xa3,0x12,0xa8,0x71,0x10,
- 0xac,0x51,0x9e,0xe8,0x47,0xc8,0xad,0xa7,0xf5,0x4f,0x24,0xf2,0x45,0x78,0x35,0x35,
- 0x04,0x64,0x36,0xfc,0x51,0x5c,0x9b,0xec,0xae,0xb3,0x3a,0x26,0xdd,0xbc,0x8d,0x26,
- 0x86,0x50,0xeb,0xa4,0x7b,0x9c,0x2b,0x64,0x4f,0xa6,0x3f,0x36,0xe2,0x9f,0x33,0x29,
- 0x7e,0x78,0x8a,0x1d,0x34,0x23,0x6e,0xd5,0xc7,0x05,0x21,0x3f,0x5e,0x34,0x06,0xef,
- 0xb0,0xd9,0xe6,0x8c,0x98,0x3c,0x90,0xc6,0x27,0x4c,0x89,0x8b,0x4b,0x22,0x98,0x2c,
- 0x68,0x92,0x5f,0xd4,0x7e,0x27,0x6e,0x4a,0xde,0x56,0x57,0x56,0x85,0x1e,0xfd,0x7c,
- 0x62,0x8c,0x57,0x29,0x7f,0xdc,0x56,0x3d,0xe2,0x1c,0x95,0x33,0xf5,0x6b,0x3d,0x25,
- 0x1d,0xfa,0x73,0x25,0x95,0x67,0xb8,0x11,0x4e,0xd5,0xa7,0x6c,0xfc,0x76,0xf7,0x5f,
- 0x27,0xff,0x08,0x37,0xcf,0xc2,0xe7,0xff,0xd1,0xc8,0xb3,0xc3,0xa5,0x4b,0x1c,0x77,
- 0x77,0x3e,0x9d,0xe6,0x87,0x83,0xd8,0x82,0x30,0xc9,0x37,0xe4,0x08,0x51,0x3c,0x99,
- 0xe2,0x3f,0xf7,0x5a,0x81,0x20,0x9f,0xb0,0xf8,0xf0,0xfb,0x24,0xd4,0x60,0x21,0x7b,
- 0x7d,0x9c,0xf2,0x00,0xf4,0x0a,0xdf,0x28,0xf7,0xb2,0xdb,0xe1,0xe1,0xcf,0x95,0x0f,
- 0xe7,0xd5,0xb8,0xdb,0xf8,0x1e,0x03,0x81,0xd0,0x0d,0xec,0xc1,0xe8,0xee,0xf6,0xd8,
- 0x2a,0x87,0xcf,0xa6,0xaf,0x7a,0x66,0xbe,0x0a,0x13,0x66,0xc3,0xaa,0x82,0x5d,0x14,
- 0xf6,0x61,0xc1,0x51,0xdf,0xd6,0xb2,0x2a,0x38,0x12,0xfb,0x62,0x4f,0x65,0xbc,0x68,
- 0x3e,0x7c,0xac,0x05,0x3e,0x5a,0xd2,0x23,0x9f,0xc9,0xcc,0x87,0x95,0x76,0xea,0x13,
- 0xd4,0x94,0xef,0xc7,0xf2,0xae,0xd0,0x3b,0xbc,0x6e,0xa0,0x40,0xeb,0xfc,0x89,0x8e,
- 0x02,0xea,0xf3,0x1d,0x16,0x3f,0x2a,0xe1,0xd2,0xfb,0x63,0x36,0x7e,0xd4,0x5e,0x38,
- 0x15,0x5b,0x98,0x44,0x25,0xf6,0x1d,0xb8,0x2c,0xb9,0x4d,0xe7,0x78,0x8e,0x0f,0x7e,
- 0x26,0x16,0xee,0x74,0xc6,0xe5,0xa0,0xb8,0x0c,0xd5,0x2d,0x9b,0x92,0x72,0x86,0x1f,
- 0xbe,0x0d,0xfe,0x1b,0xc4,0xb8,0xc7,0xe4,0x3e,0xf5,0x6b,0x70,0xa0,0xb0,0x62,0x90,
- 0x1f,0xdc,0x9e,0x0b,0xcf,0x00,0x7e,0x68,0xcf,0x33,0x1f,0x47,0xc5,0x18,0xa2,0x46,
- 0x5b,0xf6,0xfe,0x00,0x85,0x5b,0x61,0x6e,0x22,0x6f,0x97,0x63,0xa5,0x71,0x80,0x68,
- 0x4e,0x7d,0x6c,0x97,0xd1,0xad,0x7b,0x04,0xdf,0x8a,0xd7,0x1f,0x10,0x56,0x3f,0xc3,
- 0x10,0xee,0x9a,0xa9,0xdf,0x57,0x51,0xb4,0xcd,0xd4,0x2f,0x5a,0xb7,0xfa,0x03,0xf4,
- 0x98,0x7d,0x7e,0x47,0x04,0x3a,0x21,0xd6,0x81,0x18,0xc1,0xd9,0xb1,0x87,0x95,0x1b,
- 0xaa,0xee,0x68,0xca,0xf0,0xc3,0xf3,0x97,0x23,0xfa,0xaa,0x35,0xf3,0x09,0x7d,0x11,
- 0xdb,0xf6,0xf6,0x38,0xfb,0xf1,0xf6,0xf7,0x11,0x0f,0xe3,0xf7,0xe5,0x8b,0x5d,0x94,
- 0x16,0x18,0xae,0x98,0x6c,0x64,0xe2,0x3f,0x3f,0xfc,0x43,0x6c,0x0c,0x1a,0x07,0x96,
- 0x26,0x2d,0xff,0xfd,0x7a,0x9a,0x6f,0xb5,0x0a,0x5e,0x92,0x1a,0x25,0x97,0x29,0x9d,
- 0x83,0x0b,0x5a,0x23,0xd5,0x03,0xf6,0xd8,0xe6,0x6b,0x5c,0x6a,0xbf,0xdc,0xd9,0x38,
- 0xb2,0xf2,0x39,0xaa,0x86,0x2b,0xac,0x1e,0xc9,0x5f,0x5d,0xd4,0x08,0xc7,0xcc,0x3d,
- 0x83,0xbb,0x26,0x9b,0xeb,0x8d,0x63,0x75,0xd5,0x23,0xae,0xf3,0xf6,0xf9,0xb0,0x25,
- 0x43,0x5d,0x7b,0xbc,0xbe,0x04,0x3f,0xcb,0x7c,0xe2,0x99,0x50,0x45,0x02,0x7a,0x07,
- 0x7c,0xa2,0x53,0x47,0xc4,0x12,0x6f,0x8a,0x28,0xcf,0xa4,0xa8,0xe0,0x59,0xfc,0x70,
- 0x61,0x4d,0xa7,0x0a,0x20,0x9e,0xe9,0x0c,0x41,0x82,0xfa,0x6f,0xe4,0x76,0x82,0xf7,
- 0x64,0xc9,0x66,0xe6,0x7c,0xa0,0x53,0xd7,0x4d,0x35,0xc0,0xc2,0x99,0xf8,0x4f,0xce,
- 0x2e,0xe9,0x80,0x64,0xf5,0x07,0xf0,0xb5,0x3e,0x03,0xba,0x59,0x5f,0x67,0xf5,0x07,
- 0xc0,0x5f,0xa4,0x87,0xfd,0x54,0xdf,0x41,0x85,0x87,0x71,0x16,0xcf,0xd4,0x6f,0x52,
- 0x7f,0x80,0xd4,0x58,0x58,0x82,0x85,0xbd,0xc9,0xd9,0x07,0x1f,0x46,0xe1,0xa1,0x80,
- 0xb9,0xa1,0x4e,0xae,0xe2,0x8b,0x53,0xf3,0x49,0x85,0xbd,0x3f,0xc0,0x54,0xfc,0x47,
- 0x9d,0xe4,0x17,0xa1,0x31,0xb1,0x71,0xdc,0x75,0xa9,0xe5,0xb2,0xd5,0x51,0x4a,0x3e,
- 0xa7,0x7c,0x37,0x15,0x1a,0x5a,0x9d,0x85,0x7f,0x7e,0xad,0xd5,0x9a,0xb7,0x2d,0x68,
- 0xfe,0x1a,0xd0,0xa0,0xba,0x86,0xe8,0x0c,0xdf,0x2b,0x24,0xe4,0xa7,0xfe,0x8b,0x7f,
- 0x32,0x1f,0x16,0x7d,0x85,0x76,0xcf,0x09,0x3e,0xc1,0x2a,0x95,0x97,0xda,0x3d,0xe7,
- 0xf2,0xbe,0x17,0xae,0x84,0x03,0xcb,0xbe,0x34,0xec,0x38,0xe0,0x99,0x6f,0xbc,0xf5,
- 0xb9,0xda,0x3f,0x6c,0x7c,0x36,0x3b,0xff,0x05,0x0f,0x8b,0xb9,0x23,0x79,0x01,0xcf,
- 0x4a,0xfd,0x40,0xa1,0x6e,0x4a,0x75,0xf8,0xe1,0x1c,0xd8,0xe2,0x99,0xfc,0x6c,0x0d,
- 0x2b,0xe7,0x3b,0x34,0x3d,0xd9,0xba,0x1f,0xb2,0xfa,0x23,0xc1,0x23,0x84,0x07,0xea,
- 0xd9,0x17,0x8d,0x7d,0xe2,0xee,0xb7,0xf3,0x26,0xd8,0x17,0x61,0x5f,0x57,0xe9,0xa8,
- 0x3a,0xe1,0xb8,0x0a,0xf6,0x89,0x2f,0x27,0xf3,0xbe,0x05,0x77,0xda,0xe2,0x3f,0x4e,
- 0xf8,0x25,0xd4,0x98,0xf9,0xf5,0xf2,0x12,0x83,0xd0,0xb2,0xc5,0x97,0xde,0x03,0xfa,
- 0x68,0x7e,0x49,0x91,0x53,0x7f,0x5f,0xf7,0x0f,0x3a,0xfd,0x7f,0x66,0xef,0x8f,0xb4,
- 0x0b,0x7e,0xa7,0x5d,0x37,0x38,0xe3,0xac,0xbc,0xab,0xf5,0x72,0x49,0x23,0x15,0xfe,
- 0x1f,0xb4,0x18,0x77,0xeb,0x43,0xd4,0x71,0x9d,0x13,0x83,0xb1,0xd9,0xde,0x1f,0x89,
- 0xd4,0x54,0xbd,0xe9,0xdc,0xd7,0x59,0x35,0x35,0x0d,0xb6,0xec,0x43,0x14,0xbe,0xd3,
- 0xbf,0x34,0xfa,0x25,0x6a,0x94,0x4d,0xfd,0x91,0xfe,0xa4,0x3f,0x40,0x99,0xc9,0x3f,
- 0x72,0xcc,0x62,0x9b,0xf4,0x52,0xb3,0x79,0x15,0x9b,0xa4,0xc0,0xf2,0x49,0x9a,0x37,
- 0x0d,0x3f,0xcb,0x29,0xed,0x57,0xc7,0x59,0x6f,0x56,0x7f,0x00,0x74,0x33,0x53,0xf8,
- 0x67,0x2d,0xbe,0x78,0xe7,0xea,0xf0,0x9b,0xe5,0x6b,0x45,0xfe,0x7b,0xdd,0x27,0xaf,
- 0x0e,0x52,0xa9,0x32,0x85,0x86,0xfc,0xe9,0xf8,0x4f,0x6b,0xf1,0x10,0x9f,0x8a,0x1f,
- 0xe6,0x52,0x20,0x91,0xf4,0xf9,0xab,0x80,0xfa,0xdc,0xbc,0xe6,0x66,0xea,0x4f,0x92,
- 0x1a,0x5d,0xb4,0xd9,0xde,0x1f,0x00,0xf5,0x6d,0xbd,0x40,0x27,0xab,0x42,0x1c,0x86,
- 0xde,0x58,0xaa,0x3f,0x00,0x47,0xe0,0x77,0x1a,0x1d,0xa5,0x33,0xa8,0xcc,0xf0,0xfb,
- 0xca,0xee,0x0f,0x40,0xf5,0x2c,0xf3,0xa7,0xc2,0x3e,0x0a,0xf5,0x07,0x98,0xee,0x8f,
- 0xf4,0x4e,0x2a,0x10,0xf4,0x2f,0xcd,0x87,0x5d,0xa2,0x15,0x95,0xf3,0xf3,0xd3,0x8d,
- 0xb2,0xad,0xfe,0x00,0x51,0x75,0x0e,0x1c,0xb2,0xf2,0x23,0xcc,0xc6,0x0f,0x87,0xd4,
- 0x7c,0x58,0x6f,0x8a,0x66,0x9c,0x6a,0x94,0x6d,0x09,0x4e,0xcd,0x73,0x7d,0x78,0x9d,
- 0xb9,0x7d,0x95,0x37,0x6b,0x3e,0x6c,0x8e,0x22,0x4d,0x35,0x4d,0x1a,0x49,0xd1,0x50,
- 0xb5,0xdc,0x72,0x4b,0xb0,0xea,0xe3,0x3a,0x34,0xbd,0x05,0xfd,0xa9,0x07,0xfe,0xb4,
- 0x3f,0x40,0x8a,0x16,0xae,0x1b,0x9f,0xb6,0xfa,0x03,0x48,0x7a,0x1b,0x5d,0xaf,0x74,
- 0x5a,0xa5,0x73,0xf8,0x3d,0x4e,0xef,0x87,0x74,0x7f,0x80,0x70,0x91,0x80,0x3e,0x3d,
- 0x60,0x0d,0xaa,0x80,0xa9,0xb0,0x8f,0x35,0xa8,0x42,0xa0,0xf0,0x53,0x7b,0x7f,0x80,
- 0xd8,0x79,0x5f,0x90,0x9a,0x00,0x7c,0x83,0xca,0xe2,0x16,0x17,0x1c,0x7f,0x98,0xc2,
- 0x3e,0x55,0x6d,0x3f,0x5d,0xd6,0x79,0x22,0x7e,0x9e,0xf8,0xe1,0x9b,0x5f,0xfe,0x4a,
- 0xd6,0x7c,0x58,0xaa,0xaf,0x77,0x51,0xfc,0xe7,0xbc,0x3f,0x68,0xc1,0x06,0xa3,0x1f,
- 0x6a,0x29,0xfe,0x93,0x9a,0x0f,0x6b,0x05,0x46,0x32,0xf8,0x27,0x69,0xc5,0x7f,0x54,
- 0xd6,0x09,0x11,0xe1,0x9f,0xaa,0x8f,0xeb,0xf1,0x56,0x71,0x6f,0xb8,0x49,0xf7,0x44,
- 0x78,0x6d,0xaa,0x3f,0x40,0x46,0xff,0x9c,0xb0,0xe2,0x3f,0xea,0xe7,0xdd,0x35,0xb1,
- 0x27,0xf4,0xca,0xd6,0xbc,0x76,0x77,0x31,0xac,0xd1,0x2b,0xdb,0x38,0x22,0x2e,0xb1,
- 0xc6,0x5d,0x6a,0x74,0x2f,0xb3,0xcf,0x47,0xcb,0x49,0xc5,0x7f,0xd4,0x76,0x56,0x43,
- 0x42,0xeb,0xbc,0xe3,0x4d,0xc5,0xc6,0x4f,0xac,0x88,0xd0,0xd5,0x35,0xa1,0x8d,0x70,
- 0xfd,0x15,0xfd,0x01,0xb4,0x9d,0x2c,0x35,0xff,0x45,0xcd,0xa5,0xc0,0x0e,0xa2,0xd3,
- 0x75,0x54,0xd6,0x57,0x6b,0x38,0xbf,0x2f,0xcf,0x61,0x87,0x72,0xad,0x41,0x69,0x99,
- 0xfa,0xb8,0x1e,0xd8,0x39,0x05,0x0b,0x11,0x06,0x5b,0xfd,0x91,0x2c,0x7e,0xf8,0x43,
- 0x0d,0x86,0xeb,0x71,0x79,0x0a,0x08,0x5d,0xd1,0x1f,0x60,0xba,0xfb,0xe8,0x2a,0x38,
- 0xc5,0xaa,0xc1,0x35,0x48,0xfd,0x01,0xa0,0x9a,0x1a,0x65,0xfb,0xa9,0xbe,0x9b,0x4e,
- 0xd9,0xf8,0xe1,0x8a,0x57,0x9c,0xd1,0xab,0x22,0xea,0x76,0xf9,0xef,0x10,0xf6,0x58,
- 0x81,0xa0,0x51,0x58,0xaf,0x7b,0xfa,0x78,0x15,0xf5,0x07,0x00,0xf4,0x1f,0x93,0x59,
- 0xfc,0xf0,0x2f,0x89,0x58,0xd2,0x57,0xa7,0x16,0x30,0x43,0x44,0xc1,0x43,0xfe,0x9a,
- 0xa9,0x08,0xa1,0x73,0x8e,0x28,0xc9,0x22,0x32,0x74,0xdb,0xfb,0x03,0xe8,0xd4,0x1f,
- 0x20,0xd5,0x0d,0xe0,0x2e,0xfa,0x1e,0xcd,0x6b,0x56,0xe5,0x4e,0xb2,0x4d,0xc2,0xaa,
- 0x78,0x6d,0x80,0x1d,0xf0,0x14,0x9e,0x82,0x4c,0xfc,0xc7,0xcb,0xa9,0x3e,0xee,0x66,
- 0xdd,0xd5,0x2a,0x2f,0x83,0x13,0x62,0xb7,0xae,0xb6,0xca,0xc7,0x95,0x41,0xb1,0x47,
- 0x5f,0xd2,0x8a,0x88,0x88,0x26,0xc6,0xe2,0xa9,0xac,0xfe,0x90,0xda,0xfb,0xe9,0xfa,
- 0xf7,0x54,0xbe,0xc3,0x02,0x42,0xfd,0x16,0xed,0x39,0x71,0xe5,0x7c,0x58,0x23,0x67,
- 0xd2,0xb8,0x9c,0xaa,0x86,0xbb,0x64,0x4d,0x83,0xb5,0xda,0x02,0xbc,0x99,0x1a,0x6b,
- 0x45,0x83,0x62,0x17,0xe8,0xce,0x75,0xf6,0xf8,0x4f,0xe1,0x66,0xb1,0x17,0x2a,0x41,
- 0x35,0xdd,0xcb,0xe0,0xb7,0xd4,0xcd,0xfb,0x42,0xdb,0x2c,0x78,0x56,0xf3,0x41,0x81,
- 0xea,0xa0,0xd0,0xf4,0x3c,0xb3,0xed,0xbe,0xec,0xfe,0x00,0x62,0x5f,0xea,0x7d,0x1f,
- 0x47,0x28,0x51,0x66,0xd1,0x9b,0xf4,0xe7,0xac,0x7e,0x6e,0x16,0x02,0xc4,0x17,0x6f,
- 0xb3,0xc5,0x7f,0x42,0xc5,0x26,0xfa,0xef,0x3e,0x8a,0xff,0x34,0x29,0x3b,0x2c,0x45,
- 0xe4,0xae,0x82,0xfd,0x62,0x25,0xac,0x17,0xe8,0xe6,0x53,0x07,0x06,0xb4,0x80,0x6f,
- 0xd8,0xe6,0xa3,0xa5,0x87,0x0a,0x85,0x85,0x35,0x6d,0x7c,0xb7,0x5c,0x05,0xaf,0xc7,
- 0xf0,0xc8,0x83,0xb2,0xc7,0x6a,0x04,0x8a,0xaa,0xe9,0x8d,0xac,0xfe,0x00,0x17,0xa7,
- 0xd7,0x67,0xd4,0x08,0xfa,0xad,0xfe,0x6c,0x17,0x0c,0x6b,0x30,0xf7,0xd4,0x29,0xdc,
- 0x5a,0xb6,0xfe,0x00,0xe8,0xa6,0x29,0xd5,0xd4,0xcf,0x76,0x15,0x3b,0x12,0x6d,0x1c,
- 0x99,0x71,0x5e,0xbe,0x64,0xbc,0x46,0x63,0xd1,0x4c,0x47,0x43,0x8a,0x31,0x9e,0x94,
- 0xc7,0xd3,0xcf,0xd3,0xa1,0x50,0x5b,0x24,0xe2,0x87,0x37,0xf9,0x20,0x62,0x56,0xf9,
- 0xaf,0xdb,0xc0,0xde,0x61,0xeb,0x0d,0x9a,0xf7,0x2a,0x1b,0x04,0x45,0x24,0xaa,0xcf,
- 0xb5,0xe1,0x9f,0x95,0xa9,0xa6,0xcd,0xf1,0xdc,0x95,0xd0,0x9d,0x5f,0x35,0xa0,0xc6,
- 0xc3,0x63,0xde,0x6e,0x6e,0x15,0x76,0xc5,0xc0,0xda,0x51,0xdb,0xed,0xf9,0x2f,0xfc,
- 0x27,0xe4,0x96,0xaa,0x8a,0xc5,0x7e,0xf1,0xd1,0x3c,0x62,0x53,0x12,0x52,0x0c,0xb8,
- 0xc4,0xc6,0x94,0x87,0xa9,0x3f,0xb6,0xdb,0x9e,0xff,0xe2,0x68,0x16,0xc9,0xac,0xec,
- 0xa5,0xf9,0x53,0xd4,0x26,0xa2,0x97,0x59,0x8d,0x68,0x06,0x7d,0x34,0x11,0xec,0x97,
- 0x74,0x6a,0xbb,0x9c,0xb4,0xe5,0xbf,0x92,0xd3,0x4d,0x9e,0x93,0x86,0x15,0xed,0xe9,
- 0x2a,0x1b,0x87,0x83,0xd0,0xc8,0x67,0xbc,0xcc,0x56,0xe1,0x52,0xe0,0xa9,0x5f,0x64,
- 0xf7,0x47,0xc2,0x4d,0xd2,0x08,0xce,0x8f,0x8a,0xea,0x8d,0x21,0xca,0x7f,0x45,0xe4,
- 0x6a,0x98,0x8c,0x56,0x97,0xe6,0xd3,0xa0,0x99,0x41,0xdc,0xba,0xf9,0x1f,0x65,0xf5,
- 0x07,0xf8,0x10,0xfa,0x44,0x55,0x88,0xaf,0x43,0xfc,0xd3,0x83,0x6f,0xe7,0x88,0x51,
- 0x7d,0x0a,0x54,0xe8,0x7c,0x73,0xf8,0x2b,0xb0,0x7e,0x4d,0x95,0x4e,0x2f,0x6e,0xc7,
- 0x3f,0xd4,0x2f,0xc2,0xc0,0x1f,0xdd,0x8b,0x5f,0x95,0x97,0xf3,0xb0,0x43,0x11,0x7d,
- 0xba,0x17,0xf2,0xdc,0x6c,0x48,0xee,0x84,0x95,0x90,0x57,0xc3,0xb2,0xfa,0x23,0x71,
- 0xba,0xbf,0x43,0x30,0x1f,0x2a,0x8b,0x0a,0x70,0xec,0xb4,0x06,0xef,0x56,0x30,0xd4,
- 0xcf,0x2b,0x35,0x1a,0xc5,0xd2,0x7a,0x25,0xfe,0x99,0x10,0xbe,0x64,0xc1,0x73,0xaa,
- 0x17,0xad,0xc9,0xf3,0x06,0xa7,0xb6,0x12,0x67,0xa1,0xae,0x26,0x7f,0xaf,0xfc,0xae,
- 0x71,0x44,0x04,0x63,0x1b,0xe3,0x32,0x64,0xf8,0x1e,0x88,0x7f,0x26,0x71,0x93,0x54,
- 0x12,0x3e,0xfc,0x24,0xba,0xb0,0x1d,0x7f,0xfd,0x8f,0x8c,0x4f,0x62,0xdf,0xa5,0xb6,
- 0x51,0x7f,0x80,0xcb,0x66,0x63,0xd8,0xe5,0x97,0x27,0xb2,0xeb,0xe3,0x3a,0x82,0xa6,
- 0x6f,0xaf,0xbc,0x02,0x0e,0xc5,0x02,0x46,0x7e,0x97,0xfc,0x15,0xaa,0xd7,0xd0,0x9c,
- 0x7b,0x55,0x1f,0xfc,0xda,0x4f,0x13,0x69,0xb3,0xfa,0x43,0xfa,0x68,0x7d,0x4c,0xf0,
- 0x22,0x6c,0x23,0xff,0x1d,0x81,0xee,0xdc,0x9c,0xfd,0x50,0x00,0xde,0xb8,0xdb,0x19,
- 0xe9,0x56,0x74,0xe1,0x1c,0xcf,0xea,0x0f,0xb9,0x84,0xd6,0x87,0xf8,0x2a,0x9f,0x15,
- 0xeb,0x17,0x31,0x91,0xa7,0xb1,0x56,0xe8,0x05,0xdf,0xdb,0xa8,0x80,0x14,0xd8,0x6c,
- 0x7a,0x85,0xe3,0x8a,0xfe,0x90,0xb0,0x37,0x5a,0x39,0xca,0x4b,0x10,0x0f,0x3c,0x10,
- 0x2b,0xdd,0xc5,0xbf,0xcd,0xae,0x86,0xe7,0xc4,0x57,0xdf,0x2e,0x69,0x45,0x7f,0xff,
- 0x47,0xd1,0xeb,0x63,0x7c,0x75,0x6e,0x89,0x8d,0xff,0x53,0x60,0x8c,0x4b,0x0d,0xc3,
- 0xb8,0x5b,0x56,0xc0,0x61,0xd1,0xdb,0x93,0xff,0x03,0x79,0x09,0xde,0xbf,0x61,0xd0,
- 0xd9,0xf5,0x32,0x42,0xa3,0x58,0x9d,0x96,0x5d,0x1f,0x77,0xed,0x41,0x31,0x09,0x55,
- 0x89,0x4d,0xc3,0xd2,0x18,0xbb,0x04,0x8d,0x5d,0x6a,0x5c,0x9e,0x34,0xbe,0x23,0x35,
- 0x0c,0x2e,0x4d,0x14,0x11,0x55,0xec,0x26,0x5c,0xa8,0xce,0x4c,0xfc,0x07,0xf1,0x0f,
- 0x37,0x85,0x3f,0x49,0x61,0x37,0xa0,0xfe,0x54,0xa8,0xbd,0x57,0xc0,0xfb,0xc2,0x6a,
- 0xdb,0x5e,0x0e,0x1f,0xa7,0x02,0xd7,0x7f,0x9b,0xd5,0x1f,0x7b,0x2d,0xdc,0x90,0x0a,
- 0x23,0x53,0xd8,0x3c,0xb2,0xca,0x51,0x62,0x55,0x1c,0xa3,0x5a,0xa6,0xd1,0x69,0x56,
- 0xbf,0xd9,0x4c,0x7f,0xa4,0x7e,0xc4,0x3f,0x5d,0x66,0xd9,0xdb,0x8e,0xd5,0xe1,0x37,
- 0xac,0x68,0x8f,0x83,0xe6,0x2b,0xad,0xed,0xfa,0x72,0x72,0xf1,0x4a,0x63,0x36,0xbc,
- 0xd4,0xb1,0x2d,0x76,0x4d,0x1d,0x6e,0xec,0xe9,0xf5,0x6f,0xdd,0x32,0xc4,0xc3,0xc9,
- 0xf2,0x71,0x4a,0xeb,0x3b,0x3a,0x59,0xf9,0x71,0x2b,0x7f,0xda,0x69,0xe8,0xe6,0x5f,
- 0x51,0x04,0x0c,0x81,0x5f,0xe4,0x9a,0x78,0x56,0x7f,0xa4,0xc8,0x55,0x47,0xcd,0xea,
- 0x78,0x01,0xc2,0x1e,0x38,0xbc,0xe8,0xb9,0x68,0x41,0x4c,0xf6,0xb2,0x33,0x1a,0x3e,
- 0x76,0x8f,0xec,0x15,0x7f,0x30,0x16,0xc4,0xf0,0x45,0xee,0xcb,0xe0,0x1f,0x23,0xa9,
- 0x4d,0x48,0x41,0x6e,0x45,0x17,0x27,0x1c,0x34,0x1f,0x56,0x8e,0x39,0x27,0x94,0xef,
- 0x68,0x56,0x47,0xf1,0x09,0xad,0xbe,0x78,0xe9,0x9f,0xe0,0x1f,0x23,0xf8,0x65,0x97,
- 0x5b,0xa6,0x69,0x59,0x05,0x34,0x0f,0x7d,0xae,0x38,0x04,0x55,0x08,0x7b,0xf8,0x4e,
- 0x38,0xe4,0x0d,0x50,0x7f,0x48,0x56,0x9c,0xc9,0x7f,0x7d,0xa5,0xe5,0x29,0xa8,0x5a,
- 0x84,0x4a,0xa6,0x5c,0x5a,0xb7,0xa8,0x2a,0xd4,0xad,0xb1,0x27,0xe0,0x75,0xd9,0xd7,
- 0x7e,0xed,0x16,0x96,0x03,0xeb,0x94,0xfa,0x76,0xab,0x3e,0x6e,0xfa,0x7a,0xea,0x8f,
- 0x4d,0xd9,0x2e,0x35,0xca,0x5a,0xc2,0x68,0xaf,0x9b,0xd0,0x3a,0x7f,0xa3,0x78,0xa3,
- 0x34,0xff,0x96,0x92,0x76,0x62,0xe8,0x51,0xeb,0x80,0x28,0xcb,0x34,0x50,0x20,0xfc,
- 0xb3,0x0d,0x7c,0x34,0x04,0x56,0x81,0x35,0xe2,0xab,0x64,0xcd,0x7f,0x05,0x33,0x89,
- 0x38,0x74,0x27,0x23,0x28,0x55,0x41,0xd0,0xa8,0x29,0xad,0x7f,0xfa,0x2c,0xfc,0x13,
- 0xe4,0x6a,0x18,0xb5,0x9f,0x80,0x06,0x54,0xd4,0x0e,0x03,0x8f,0x54,0x09,0x6e,0x16,
- 0x79,0xd1,0x90,0x06,0xac,0xf9,0x20,0x2c,0x8d,0x7f,0xf2,0x07,0xe1,0x13,0xa9,0xd1,
- 0x98,0x31,0x2c,0x5b,0xdd,0xb0,0xdb,0x5c,0xee,0xce,0x72,0xab,0x2d,0x36,0x21,0x22,
- 0xf8,0x04,0x6e,0x32,0xd4,0xcd,0x0f,0xbf,0x3b,0x23,0x9d,0x6f,0xb2,0xe6,0xc3,0xde,
- 0x94,0x6a,0x0b,0xf9,0x09,0xdc,0xdc,0x32,0x2b,0x4a,0xfd,0x21,0xb5,0xc6,0x45,0xae,
- 0x61,0xf9,0x04,0xbc,0x42,0xa3,0x0d,0x1e,0xca,0xe2,0xff,0x50,0x91,0xb2,0x07,0x15,
- 0x35,0x4b,0xf6,0xf4,0xe9,0x55,0xfc,0x2f,0x45,0x78,0x54,0xef,0xa1,0x8c,0x03,0x43,
- 0x35,0x4b,0x1a,0x23,0xd2,0x91,0x3d,0x1f,0x4d,0xd9,0x0f,0x15,0xcb,0x11,0xd4,0xd1,
- 0x7c,0x34,0x5f,0x6b,0xab,0x9b,0xfa,0x43,0x52,0x99,0x12,0x21,0x40,0x2b,0x15,0xa8,
- 0x65,0xcf,0x87,0x55,0xf6,0x1b,0x8c,0xb2,0x8d,0x23,0xb0,0x5f,0xf2,0x19,0xad,0x51,
- 0xbc,0xfe,0x29,0x85,0x56,0x38,0x77,0x04,0x9e,0x8a,0x54,0x0c,0xf0,0xac,0xf9,0xb0,
- 0x33,0x97,0xa3,0xb6,0xb9,0xba,0xdd,0xca,0x76,0x51,0xd9,0x23,0x02,0xd7,0xdf,0x40,
- 0x7a,0x22,0x5e,0xbf,0xe1,0x6f,0xcf,0xa7,0xfe,0x48,0xd3,0xfb,0xd3,0xea,0x8f,0x24,
- 0x4d,0x8f,0x05,0x81,0x2b,0x04,0x83,0x3a,0x0c,0x58,0xf8,0x67,0xfa,0x7a,0xaf,0x16,
- 0x93,0x12,0x30,0x9b,0xfa,0x53,0xe9,0x12,0x19,0xca,0x25,0xa2,0xf9,0x34,0x23,0x18,
- 0x90,0xc2,0x9f,0xfc,0x39,0x2a,0x5d,0x74,0xd8,0xf8,0x3f,0xf5,0x08,0x7b,0x2a,0x7b,
- 0xbc,0x31,0x54,0x1a,0x2f,0xb2,0xff,0x2e,0x9c,0x14,0xf6,0xa1,0xf8,0x4f,0x7e,0x52,
- 0xfe,0x4b,0xf8,0xa9,0x59,0x4d,0xa3,0x43,0xf8,0xf4,0xe5,0xe0,0x5d,0x73,0x2b,0xd1,
- 0x7e,0x4c,0x5e,0x97,0xeb,0x54,0xc8,0x51,0xcd,0x23,0x3e,0x4c,0x27,0x2c,0x19,0xe2,
- 0x9a,0x7b,0x89,0x1f,0x3d,0x88,0x73,0xe8,0x2f,0xd8,0xfb,0x43,0x5e,0x05,0x4f,0xc0,
- 0x7c,0xb3,0xe7,0xfe,0xab,0x4a,0xe0,0x59,0x14,0xf2,0x56,0xb1,0x13,0xb0,0xd6,0x3d,
- 0x3f,0xf9,0xd9,0xd5,0x9e,0xff,0xaa,0x3c,0xc1,0x4b,0xcd,0xc5,0x75,0x8c,0xa7,0xf1,
- 0x4f,0x0f,0xbf,0x8a,0xad,0xa1,0x69,0x68,0x75,0xea,0x55,0xf0,0x5c,0x47,0x65,0xb2,
- 0xf2,0xbe,0xa6,0x0b,0x14,0xff,0xa1,0xb4,0xd7,0x17,0xe1,0xe7,0x5d,0x0b,0xa8,0x51,
- 0xb6,0x23,0x83,0x7f,0xae,0xed,0xd2,0xac,0x30,0x7b,0x1c,0x1d,0x0d,0x1a,0x0b,0xfb,
- 0x60,0xbc,0x6c,0xd4,0x4a,0xa3,0xab,0x31,0x79,0x2c,0xf7,0xf5,0x54,0x69,0x7c,0x06,
- 0xff,0x98,0x39,0x7f,0x90,0x3e,0xd1,0x1a,0x93,0xbe,0x89,0xe6,0x4b,0xc6,0x5b,0x16,
- 0x10,0xea,0xbc,0x04,0x97,0xd1,0xd0,0x3b,0xb7,0xca,0xc7,0xdd,0xbf,0xb5,0x4a,0xe7,
- 0xec,0xf5,0x71,0x85,0x5b,0xa4,0xdf,0x40,0xe5,0xa8,0x77,0x15,0x62,0x8b,0x6d,0x50,
- 0x75,0x0e,0xf5,0xe7,0x3f,0x46,0xf7,0x81,0xeb,0x09,0xc7,0xb7,0xd9,0xb0,0xde,0x11,
- 0x28,0x35,0xbd,0xe3,0xec,0xe9,0x34,0xfe,0xa4,0xfe,0xd8,0x4f,0x68,0x95,0x09,0xbe,
- 0x2a,0x7c,0x42,0x7b,0x00,0xe6,0xf7,0x3b,0xbe,0xbe,0xf9,0xa4,0xb2,0x4f,0x72,0x25,
- 0x54,0xea,0x30,0xf0,0x24,0xbb,0x9b,0x54,0x59,0x66,0x3e,0xac,0x5e,0x3c,0x04,0xdb,
- 0x0c,0xdf,0x00,0x6f,0x60,0x06,0x6d,0x33,0xb3,0xb5,0x0f,0x7f,0xad,0x3d,0x50,0x2e,
- 0xd4,0x5d,0xe1,0xa3,0x7c,0x47,0x47,0x6c,0x18,0x57,0x78,0x6b,0x7a,0x7f,0xae,0x98,
- 0x59,0x0e,0xef,0xbc,0xdd,0x60,0x3a,0xf7,0x16,0x91,0x59,0x6f,0x80,0x82,0x89,0xa6,
- 0x31,0xed,0x8f,0x92,0x85,0x67,0x8e,0xc2,0xfb,0xb1,0x00,0x51,0x73,0xed,0xf3,0x61,
- 0x47,0xf8,0x7b,0x29,0xfc,0x33,0xa6,0xbf,0x2f,0x05,0x01,0x15,0xef,0x6f,0xa4,0x6f,
- 0x53,0x63,0xe4,0xbd,0x88,0x7f,0xfe,0xca,0x08,0x0e,0xe3,0x8a,0x65,0xfa,0x23,0x99,
- 0x1a,0x7e,0x56,0xfc,0xf3,0xc9,0xfc,0x55,0x9d,0x41,0x71,0x49,0xa4,0x88,0xbe,0xfc,
- 0x32,0xdc,0x74,0x1a,0xed,0x5d,0x03,0x3b,0x26,0x8a,0x06,0x5c,0xab,0x58,0xd6,0x7c,
- 0x10,0x44,0x6b,0xf7,0x98,0x7c,0xbf,0xdb,0x07,0x07,0x36,0x7b,0x86,0x11,0xf6,0x7c,
- 0x40,0x13,0x6c,0xdb,0xd5,0x17,0xc2,0xf3,0xa1,0x23,0x16,0x48,0x2e,0x8e,0xa3,0xbf,
- 0x99,0xc1,0x3f,0xe5,0x70,0xc0,0x53,0xd5,0x32,0x2f,0xee,0xf6,0xe9,0x7b,0x24,0x8f,
- 0x52,0x32,0x55,0xcf,0x7e,0x42,0x8d,0xb3,0x2a,0xbd,0x5b,0xaf,0x0a,0xa1,0xbe,0x8d,
- 0x65,0xea,0xe3,0x14,0xc5,0xd8,0x0f,0x73,0xa9,0xe9,0xba,0x53,0xda,0x03,0xf7,0xf0,
- 0x15,0x71,0x4f,0x97,0x76,0x00,0xca,0x07,0x54,0x7f,0x93,0xc2,0xc3,0xd0,0x63,0xa8,
- 0x7e,0x47,0xb8,0x78,0x7a,0xf5,0x45,0x3e,0x55,0xc3,0x51,0xda,0xcb,0xe1,0x53,0x2e,
- 0xb4,0x07,0xfe,0xd1,0xf9,0x1c,0xde,0x1f,0x81,0x22,0x77,0xf5,0x3a,0x7c,0x70,0xa4,
- 0x9d,0x3a,0xa8,0x97,0x89,0xdc,0xe9,0xe7,0xa1,0xfe,0x90,0xff,0x00,0xfe,0xc1,0xf9,
- 0xc3,0x14,0xff,0xd1,0x83,0x83,0x33,0x9e,0xfb,0x25,0x0a,0x68,0x1a,0x5d,0xe7,0xf0,
- 0xc8,0x25,0x58,0x40,0x86,0x7e,0x45,0x3a,0x1e,0x32,0x90,0xf3,0x21,0xbf,0x2c,0x16,
- 0x26,0x9c,0xd4,0xfd,0xe6,0x25,0x51,0x7d,0xda,0x95,0x40,0x20,0x7d,0xd9,0xb3,0x30,
- 0x99,0x3f,0xa1,0x36,0x18,0xc7,0xc4,0x42,0xdd,0x39,0xf1,0xa5,0x71,0x5b,0xfe,0xeb,
- 0x43,0x38,0x20,0xea,0xc7,0xf9,0x0b,0xee,0x0f,0xcc,0x9b,0x44,0x6d,0x52,0xa5,0x31,
- 0xb8,0x37,0x99,0x1e,0xd3,0xb1,0xd5,0xfd,0x13,0xb2,0xf8,0x21,0x47,0x1f,0x1b,0xb7,
- 0xf3,0x7f,0x94,0x3d,0xcc,0x37,0x7c,0x18,0x3f,0x2b,0xfc,0xbe,0xc0,0xb4,0xe6,0x7f,
- 0x3d,0x6c,0xcc,0xa5,0x46,0x2e,0xf9,0xd1,0x6e,0x56,0x6e,0x44,0xfc,0xec,0xa3,0x0c,
- 0xfe,0x51,0xd2,0xfd,0x21,0xc7,0xe0,0x80,0x36,0x97,0xa6,0xcd,0x8e,0x49,0x8f,0x81,
- 0x27,0xc9,0xfa,0x1c,0xbb,0x58,0xb7,0xf0,0xb4,0x3b,0xec,0xfd,0xb1,0x17,0x59,0xfd,
- 0x21,0x6b,0x4d,0x67,0xbc,0x68,0x8c,0xda,0x36,0xf6,0x23,0xec,0xa7,0x23,0x35,0xa3,
- 0x95,0x75,0xb2,0xcf,0xf9,0x72,0xb2,0xf6,0x8e,0x0d,0x34,0xbf,0x23,0xf3,0xfd,0x52,
- 0xfc,0xe7,0x46,0x73,0x7e,0xbc,0xcc,0xe2,0x47,0x25,0xd3,0xfd,0x91,0xfe,0x2c,0x15,
- 0x31,0x7b,0xe9,0x9e,0x2b,0xe7,0xc3,0xa6,0x40,0x75,0x1f,0xb5,0xdd,0x86,0xef,0x0c,
- 0x5a,0xf5,0x98,0x14,0xf1,0x28,0xa0,0x23,0x47,0x4a,0x02,0xed,0xce,0xb8,0x7c,0xd6,
- 0x96,0xff,0xa2,0x5f,0x7f,0x7e,0x52,0x45,0x6f,0x48,0xe9,0xbc,0xb3,0xca,0x2a,0x9c,
- 0xd4,0xf7,0x09,0x8f,0xc8,0xef,0x93,0xef,0x87,0x6e,0xd3,0x7b,0x4f,0x7e,0x9c,0xfd,
- 0x21,0x8b,0xff,0xf3,0x30,0xf8,0x92,0x2a,0xb5,0x49,0xef,0xec,0x40,0xa1,0x8e,0x1d,
- 0x85,0x3d,0x71,0xd4,0x48,0xb5,0x81,0x31,0xa2,0xa2,0x19,0xd9,0xf3,0x61,0xb5,0x2f,
- 0x8a,0x7d,0x53,0xfd,0x01,0xd8,0xd4,0x98,0xb0,0x37,0x61,0x5f,0xb8,0x6c,0x79,0xde,
- 0xc9,0xab,0xbe,0x08,0x5d,0xd1,0x79,0xcb,0xf3,0x56,0xb3,0xc9,0x6c,0xfe,0x8f,0xd6,
- 0xf0,0x2a,0x82,0xba,0x2a,0x6a,0xbb,0x64,0xba,0xfc,0x9d,0x14,0xc8,0xa5,0x41,0x5d,
- 0xf2,0x18,0xeb,0xa7,0x40,0xfd,0x4d,0xf6,0xf9,0x20,0x16,0xff,0xa7,0xf1,0xe7,0xae,
- 0xb3,0x9d,0x93,0xfa,0xaf,0xe1,0xba,0x14,0x51,0xea,0x8f,0xa8,0x9f,0x51,0x8d,0x4f,
- 0xb2,0xdf,0x43,0xbe,0x91,0xd5,0x1f,0xdb,0xea,0x0f,0x90,0x9a,0x86,0xe6,0x83,0xc5,
- 0xa8,0xb8,0x9c,0xb4,0x2c,0x78,0x24,0xa9,0x50,0xa3,0xf2,0x97,0x21,0x6e,0x2c,0x89,
- 0x4b,0xb6,0xfe,0xd8,0x25,0x8f,0xa3,0xdb,0x65,0xf9,0x53,0xb3,0xc4,0x5a,0x29,0xdf,
- 0x6c,0x5d,0x25,0xdf,0x05,0xfb,0x8c,0xf9,0x66,0x5b,0x88,0xfd,0x10,0x1e,0x48,0xb5,
- 0x8e,0xfc,0x28,0x9b,0xff,0x13,0xc6,0xd7,0xac,0x67,0x0f,0x86,0xad,0xe9,0xb7,0x93,
- 0x14,0xef,0xda,0x3e,0x67,0x3c,0xef,0x7e,0x04,0x95,0xe8,0x78,0xae,0xf2,0xae,0xce,
- 0x4d,0x4e,0x3f,0x3e,0x8c,0x2a,0x43,0xd4,0x0d,0x80,0xb6,0x19,0xf1,0xc7,0x7c,0x06,
- 0x0f,0xa6,0x1a,0xb3,0x7f,0xa4,0x36,0x34,0x6d,0xa0,0x8e,0xf4,0xab,0xb8,0xbd,0x3f,
- 0x36,0xe5,0xbf,0x2e,0x50,0x9a,0x4f,0x97,0xbd,0xf0,0x46,0x2c,0x18,0x73,0x8e,0x50,
- 0x7f,0x00,0x68,0x8c,0xe7,0xaf,0xc4,0x23,0x47,0x45,0x75,0x9c,0xf8,0xcf,0x76,0xfe,
- 0x0f,0x1f,0x85,0xef,0x4c,0xf5,0x47,0x32,0x82,0x39,0xf3,0x45,0x91,0x15,0xff,0x91,
- 0x0a,0xba,0x3a,0xc9,0xd4,0x04,0x4b,0x5c,0x82,0xd9,0xf1,0x4f,0xca,0xdf,0x5f,0x1a,
- 0x2d,0x52,0xa4,0xf7,0x84,0x35,0x36,0x02,0xed,0x9d,0x19,0x40,0x3c,0x50,0x46,0xfd,
- 0x1b,0x89,0x1f,0x72,0x05,0xff,0x67,0x3f,0xe1,0x99,0xad,0xd4,0xc8,0x88,0xa6,0x33,
- 0x3c,0x84,0x66,0x77,0xb7,0xe1,0x21,0x86,0x49,0x39,0xfc,0x82,0xd5,0x2c,0xcb,0xe2,
- 0x3f,0x5b,0xfd,0x01,0x10,0x4d,0xa9,0x0f,0xb1,0x72,0xe5,0x29,0xdd,0x63,0x7c,0x26,
- 0xce,0x52,0x6d,0x04,0xa8,0xb0,0x9d,0x3f,0xa5,0x59,0xf3,0x2c,0xb2,0xf9,0x3f,0xbb,
- 0x95,0x14,0xfe,0x89,0xad,0x4b,0x59,0x7f,0x0a,0x04,0x85,0x88,0x2f,0xa4,0xc4,0x0e,
- 0xa4,0x06,0xab,0x65,0xf3,0x7f,0xf0,0xa5,0xb8,0x2b,0x2c,0xeb,0x5d,0x4f,0xa3,0x37,
- 0x4a,0x63,0xb3,0x60,0x42,0x0f,0x00,0xc2,0x42,0x5d,0x8c,0x2a,0x01,0x9a,0x4f,0x71,
- 0x34,0x3b,0xff,0x95,0x8a,0x87,0x8c,0xc4,0x3e,0x81,0xc6,0x45,0x05,0xed,0x12,0xf5,
- 0x37,0x78,0xa9,0xed,0xf6,0x61,0x3c,0x62,0xb5,0xaa,0x8b,0x36,0xff,0x21,0x13,0xff,
- 0x91,0xe8,0xfa,0x4f,0x19,0x2e,0x8b,0xff,0x4c,0x67,0x29,0xff,0xf5,0x89,0x8e,0xeb,
- 0xd3,0x2e,0x2f,0xd7,0x5e,0x93,0x16,0x2c,0x72,0x0e,0xb3,0x07,0xec,0xf1,0x1f,0xa9,
- 0x0f,0xaa,0xa6,0xf8,0xcf,0x50,0x95,0x7a,0x9e,0x3e,0x88,0x71,0x55,0x78,0xb6,0xe9,
- 0x11,0xc4,0xdb,0x78,0xca,0xc6,0xff,0xa1,0xfe,0x00,0x60,0xf1,0x9f,0x07,0x77,0x92,
- 0xa0,0x96,0xd0,0xfb,0x6a,0x7a,0x1b,0x4d,0x68,0x32,0x3b,0x14,0x8a,0x77,0xcd,0xb5,
- 0xf1,0x7f,0x60,0xa7,0xb5,0xfe,0x56,0x3c,0xed,0x26,0x28,0x68,0xa1,0xfe,0xd8,0xd2,
- 0x7e,0xf0,0xb4,0xaa,0x5b,0xd8,0x4e,0x58,0xc7,0xe7,0xb6,0x5c,0x81,0x7f,0x88,0x76,
- 0x55,0x3b,0x15,0xc6,0x21,0x1a,0xcf,0xe3,0x16,0x10,0x0a,0xa4,0x06,0xdf,0xf7,0x0f,
- 0x5b,0x11,0xbf,0x1e,0x5b,0xfe,0x6b,0xa7,0x0d,0xf6,0xe8,0x28,0xfc,0x80,0xc2,0x3e,
- 0xd4,0xe8,0xe6,0x07,0x65,0x83,0x9c,0x4e,0xcd,0xcf,0xe6,0xff,0x50,0x7c,0xe0,0x3b,
- 0x52,0x0a,0x6f,0xd3,0x7c,0x90,0x0e,0xab,0x1f,0x69,0x6d,0x0a,0xff,0x9c,0x34,0x02,
- 0x7f,0x3a,0x1f,0xe4,0x0c,0xf8,0xb6,0xe7,0xc5,0x36,0x8f,0xc2,0x87,0x46,0x6d,0x4c,
- 0xed,0x91,0x7b,0xe0,0x45,0xd4,0x3f,0xbe,0x15,0xcc,0xcb,0x8f,0x26,0x2c,0x6a,0xb4,
- 0xad,0x3f,0xa4,0x42,0xdd,0x33,0x56,0xd2,0xb2,0xa0,0x5a,0x48,0x7a,0x43,0x6a,0x49,
- 0xee,0xab,0xb0,0x27,0x9a,0x62,0x24,0x42,0xf8,0xb3,0xfa,0x6f,0xd0,0xd5,0xca,0xc4,
- 0x7f,0x84,0x76,0x97,0x15,0xff,0xc9,0xa3,0xb6,0xf6,0x3f,0x8b,0xcc,0xa1,0x6e,0xd8,
- 0xa7,0x70,0x47,0x6d,0x1b,0xe5,0xe7,0xd8,0xac,0x81,0x07,0xe9,0xfb,0x6d,0x0f,0x67,
- 0xfa,0x43,0x46,0x22,0x6f,0xc2,0x6f,0xf1,0xb3,0x75,0x51,0xb6,0xeb,0x25,0x04,0x42,
- 0xd6,0x7c,0x90,0x3f,0x76,0xdc,0x70,0x26,0x7f,0xb5,0x1c,0x0c,0x53,0x6a,0xcc,0x79,
- 0xe7,0x15,0xfc,0x9f,0xa9,0xf8,0x0f,0xe9,0xf3,0xda,0x54,0xa0,0xe3,0x3c,0x55,0xac,
- 0x50,0x20,0xe8,0x6d,0x78,0x91,0xf8,0x2d,0xb6,0xf9,0xb0,0x70,0x50,0x5c,0x4e,0x45,
- 0x7b,0xa8,0x2d,0x36,0x0a,0xe7,0xe5,0x37,0xd1,0x6c,0xdd,0x90,0xbc,0xfd,0xa4,0x5c,
- 0x85,0x16,0x6d,0x41,0xc8,0x77,0xa7,0x64,0x9b,0x8f,0x56,0x92,0xe2,0xf3,0x14,0xdc,
- 0x97,0x0a,0x3b,0x5b,0x63,0xdd,0xe0,0x49,0xed,0x06,0x44,0x38,0xf2,0x17,0xc5,0x73,
- 0xfa,0x36,0xca,0x87,0x3e,0x6d,0xe7,0xff,0xa4,0xf8,0x8a,0xd4,0x16,0x60,0x2d,0xaf,
- 0xb4,0x1a,0x63,0xf2,0x47,0xa0,0x2c,0x19,0x6e,0x67,0x77,0x89,0x17,0xa1,0xac,0x25,
- 0xaf,0xdd,0xd6,0x9f,0x44,0x57,0x36,0x4c,0x0f,0x39,0xa5,0x36,0x2f,0xbe,0x41,0xb5,
- 0x26,0x3c,0x24,0xed,0x86,0xf2,0x73,0x25,0x34,0x08,0xb5,0x37,0xa1,0x9b,0x79,0x59,
- 0xf3,0xd1,0x66,0xa6,0xfb,0x3d,0x1e,0x84,0x97,0x45,0xea,0xc5,0xe1,0xd7,0xb0,0x20,
- 0x59,0x50,0x87,0xf6,0xe2,0x42,0x32,0xf0,0x2a,0x2a,0xde,0x8a,0xcc,0x7c,0x10,0x69,
- 0xca,0x1e,0xd1,0xfc,0x5c,0x6b,0xa1,0xfa,0x9a,0xc7,0xe0,0x3d,0x25,0xd8,0xef,0x3a,
- 0x38,0x63,0xcc,0x0a,0x04,0xcd,0x8e,0xda,0xfa,0x43,0x96,0x6a,0x29,0xbe,0x47,0xc1,
- 0x05,0xcb,0xba,0x2d,0x1c,0xc6,0xf5,0x69,0x30,0x2e,0xc2,0xc2,0x01,0xe7,0x78,0xe7,
- 0x5d,0xfc,0x28,0xbe,0x88,0xf3,0x94,0xad,0x3f,0x24,0xf1,0x7f,0x28,0xec,0xd6,0x4a,
- 0xb4,0x93,0x03,0x83,0x1e,0xb4,0x47,0xf2,0x4a,0xe8,0x45,0xfb,0xce,0x77,0x31,0x9f,
- 0x72,0x3c,0xa1,0xf7,0x54,0xd8,0xfb,0xb3,0x51,0x7f,0x80,0x67,0xa0,0x6a,0xd0,0x11,
- 0xcf,0x1d,0xd3,0x0e,0x88,0xb9,0xa9,0x7e,0x02,0xcf,0x44,0xe6,0x9a,0xad,0x8f,0xb3,
- 0x95,0xf0,0x03,0xad,0x22,0x51,0x62,0xe7,0x3f,0x3b,0x34,0xea,0x4e,0xec,0xeb,0xe7,
- 0x01,0xcf,0x90,0xd5,0x1f,0x5b,0x8d,0x5b,0xfa,0x19,0x11,0x17,0xee,0xb7,0x8e,0x1f,
- 0xa4,0x1a,0x05,0xd8,0xe2,0x3f,0xce,0x95,0x06,0x3d,0x4f,0x41,0xbc,0xe8,0x03,0xea,
- 0x07,0x8e,0xd7,0x5b,0x86,0x78,0xa1,0xe9,0xa3,0x89,0xe4,0x6f,0xc0,0xf3,0x86,0x33,
- 0x5e,0x66,0xda,0xf8,0x3f,0x93,0xd2,0xef,0x52,0x43,0x40,0x26,0x63,0x93,0x2c,0x65,
- 0xbf,0x10,0xf6,0xe0,0x91,0x50,0xd9,0xa4,0x71,0x02,0x16,0x8a,0x2b,0xe6,0xc3,0x8e,
- 0x0f,0x0e,0x95,0x37,0x72,0xe2,0x33,0xa0,0xe3,0x5f,0xcd,0x6f,0x1f,0x68,0x26,0xa2,
- 0xdd,0x4d,0xdc,0xf7,0xb2,0xea,0x1f,0x18,0x2a,0xaf,0xe6,0xe8,0x9a,0xd9,0xe7,0x83,
- 0x8c,0x19,0xdd,0xd1,0xaa,0x11,0xf5,0x20,0xfb,0x1d,0x1c,0x18,0xa8,0x18,0x59,0xbc,
- 0x9f,0xda,0x22,0x99,0x9e,0x71,0xea,0x7f,0x68,0x74,0x6f,0xf1,0x8c,0x7b,0x77,0x66,
- 0xcd,0x87,0x4d,0x6e,0xa6,0x30,0x97,0x2a,0xa1,0xad,0xed,0xd5,0x74,0x38,0x0c,0xb9,
- 0xa2,0x45,0x18,0xde,0x16,0xbe,0x80,0x41,0x97,0x80,0x90,0xe2,0x28,0xbe,0x62,0x3e,
- 0x48,0x37,0x85,0xb9,0x70,0xfd,0xc5,0x7e,0x56,0x91,0xb0,0xd6,0xb3,0x5b,0xf3,0x74,
- 0xa1,0x5a,0xf3,0xe9,0x2a,0x78,0xfa,0x1d,0x59,0xf3,0xd1,0x0a,0x47,0xee,0x3c,0x1c,
- 0xaa,0xf2,0x58,0xd3,0x3a,0xce,0x2b,0x81,0xbb,0x0b,0x1e,0x2a,0xda,0xce,0x12,0x52,
- 0x1d,0x2c,0x81,0x32,0x2f,0x65,0x64,0x16,0x3c,0x98,0x3d,0x1f,0xa4,0x0f,0x3e,0x51,
- 0x1a,0x13,0xf8,0xbe,0x17,0x68,0x59,0x62,0xae,0x64,0xe7,0x5b,0xd3,0x3b,0x6a,0x04,
- 0x26,0xe1,0xa5,0xf1,0x7c,0x91,0xd5,0x1f,0x7b,0x67,0xf1,0x1b,0x79,0x41,0xf8,0x14,
- 0x75,0xdf,0x3a,0xa2,0x59,0xb4,0xd5,0x18,0x65,0x04,0x68,0x22,0xfc,0x3c,0xb4,0xef,
- 0x75,0xda,0x15,0xf1,0x1f,0x2f,0xac,0x33,0xab,0x46,0xd5,0x08,0xaa,0x1d,0x01,0x55,
- 0x7d,0xdc,0xeb,0xf1,0xc1,0x2f,0x87,0x6b,0x63,0x5e,0xc1,0xca,0xb5,0x08,0x02,0x39,
- 0xd4,0xd8,0xf6,0xf8,0xcf,0x0a,0xe9,0x21,0x81,0xb0,0x87,0xe7,0x26,0x28,0x1e,0xd8,
- 0x7b,0xe7,0x9c,0xa6,0x21,0xa3,0x73,0x50,0x8f,0x39,0x00,0xed,0x5d,0x8c,0x10,0x91,
- 0x96,0x15,0xff,0xc9,0x35,0x1e,0x10,0x95,0xba,0xba,0x3a,0xfc,0x7d,0x58,0x1b,0xad,
- 0xa4,0x7e,0xb3,0x4d,0xc6,0x16,0x31,0x67,0xb9,0x63,0x35,0xbb,0x3a,0x77,0x47,0x24,
- 0xc7,0xa3,0xae,0x00,0x7b,0x7f,0x24,0x0e,0xbf,0x70,0x34,0x98,0x2a,0xb8,0x13,0x6c,
- 0x40,0x6b,0xe8,0x71,0xea,0xf2,0x6b,0xc6,0xcb,0x77,0xfa,0xdf,0x2d,0xf0,0xcb,0x0a,
- 0xfa,0x58,0x0d,0xe6,0x26,0x2d,0x2b,0xfe,0xb3,0xb3,0xe4,0x12,0xda,0xf7,0xb5,0xe3,
- 0xf2,0x09,0xe3,0x13,0xed,0x66,0xe3,0xbf,0xb7,0x97,0xc5,0x0d,0x8a,0x28,0xde,0xd6,
- 0xaf,0x4e,0xc0,0x5b,0x70,0x93,0x72,0xc5,0x7c,0xb4,0x0f,0x29,0xc9,0x95,0xfc,0x9a,
- 0xbf,0xec,0xa7,0xec,0x10,0x10,0xff,0xb9,0x99,0xda,0x42,0x06,0x85,0x53,0xa8,0xbe,
- 0x5c,0xca,0x48,0xfa,0xb2,0xf3,0x5f,0x51,0x85,0xd8,0x95,0x9c,0x22,0x6c,0x0f,0xb0,
- 0x52,0x68,0x4b,0xd5,0xcd,0x56,0x52,0xfd,0x97,0x66,0x11,0x2f,0xb9,0x99,0x95,0xff,
- 0x7a,0x50,0x79,0xb2,0x63,0x5e,0xb2,0x75,0xb5,0xf6,0x23,0xc4,0x87,0xe5,0xc9,0xb6,
- 0x3a,0xf7,0x83,0xca,0x5a,0xf4,0x66,0xf3,0xea,0x3c,0x05,0xb0,0x36,0x52,0x4a,0xfc,
- 0x1f,0x7b,0x7f,0x6c,0x53,0x80,0xe2,0x85,0x56,0xc6,0x40,0x08,0xbd,0x9c,0xaf,0x67,
- 0x56,0xa0,0xb5,0x1c,0xf2,0x04,0xf3,0x38,0x89,0xcf,0x99,0x07,0x57,0xe4,0xbf,0x2a,
- 0xf4,0x7a,0xc1,0xb7,0xe3,0xef,0x75,0x18,0x9e,0xa3,0x46,0x49,0x11,0x14,0x1a,0x44,
- 0xa5,0x95,0x11,0x33,0x03,0x22,0xff,0x4c,0x56,0xfe,0x8b,0x68,0x3f,0x8f,0x40,0x8e,
- 0x51,0x36,0x0e,0xe7,0xd0,0x42,0x5a,0x44,0x20,0x6a,0x3b,0x56,0x90,0x62,0x04,0xa1,
- 0x60,0x5c,0x11,0xff,0x39,0x0b,0x81,0x15,0x05,0x5b,0xe5,0xb9,0xca,0x79,0x14,0xba,
- 0x1f,0xb2,0xe2,0x03,0xf5,0xed,0x4a,0xb4,0x6c,0x39,0x9c,0xe6,0x01,0x63,0x53,0xf4,
- 0x4f,0xe6,0xa3,0x79,0x42,0x68,0x76,0xc9,0x10,0x7b,0xda,0xd5,0xef,0x23,0xfe,0xb1,
- 0x02,0x89,0x51,0x2a,0x44,0x82,0x5a,0xb2,0xc8,0x57,0xcc,0x47,0x13,0x65,0x86,0xfa,
- 0x0b,0xb6,0xb7,0xe5,0x05,0xf1,0xa5,0x76,0x22,0x02,0xb1,0x8d,0xfa,0x0e,0xc3,0x31,
- 0xcc,0xbe,0x01,0x3f,0x29,0x2e,0x33,0xaf,0xf9,0x93,0xf9,0x68,0xbb,0x88,0xff,0xb3,
- 0x7e,0x4b,0xec,0x59,0xef,0xb6,0x36,0x99,0xca,0xbe,0xd6,0xce,0x2b,0xb5,0xe6,0xa3,
- 0xc5,0xd6,0x78,0xe7,0x10,0x23,0x28,0x7b,0x3e,0x1a,0x8d,0x45,0x73,0x4d,0xcf,0x47,
- 0x73,0x85,0x59,0xb2,0x2b,0x51,0x1a,0xe0,0x55,0x61,0x39,0x24,0x56,0xe0,0x91,0xa5,
- 0xd9,0xf3,0xd1,0x46,0x76,0x5b,0xdd,0x0e,0x89,0x0f,0x4c,0x44,0xa0,0x19,0x51,0x6b,
- 0xfe,0x45,0x8d,0x49,0x1d,0x93,0x62,0x56,0xe8,0xe3,0xca,0xfe,0xd8,0x14,0xe4,0x21,
- 0xb6,0x4f,0xec,0x35,0xbd,0xd1,0x28,0x48,0xf1,0x7f,0xaa,0xdb,0x9c,0xbf,0x94,0xcf,
- 0xc1,0x07,0x74,0xea,0x8a,0xf9,0x68,0x34,0x0d,0x96,0xf0,0x8f,0x0e,0xa3,0xee,0x2a,
- 0xcd,0x9b,0xe2,0xff,0x30,0xe0,0x3b,0xd8,0x69,0x4f,0x04,0xb6,0xa3,0x13,0x19,0xce,
- 0x9a,0x0f,0x32,0xb0,0xbb,0x58,0x27,0xa3,0x46,0x78,0xd2,0xd7,0x82,0x42,0x17,0xeb,
- 0xd0,0x7a,0x0c,0xaf,0x9b,0xf0,0x0f,0xe1,0xc3,0xa2,0x2b,0xe6,0xa3,0x3d,0x0a,0xb4,
- 0xda,0xb8,0x65,0x9e,0x4a,0x01,0xa1,0x29,0xfe,0xcf,0x66,0x6b,0x50,0x88,0x85,0x27,
- 0xb3,0xe6,0x83,0xc0,0x54,0x5a,0x53,0xa1,0x42,0xb0,0x45,0x05,0x29,0xfe,0xcf,0xd5,
- 0xed,0x4e,0x6a,0xfc,0x78,0x3a,0x45,0x04,0xb2,0xcf,0x07,0xe9,0x82,0xf7,0xe0,0xa0,
- 0x31,0x5f,0x53,0x47,0xe0,0x3d,0x63,0x0a,0x08,0x9d,0x85,0xda,0xe9,0x40,0xd0,0x73,
- 0x84,0x7f,0xec,0xf9,0xaf,0x58,0x9e,0xe6,0xb1,0xd0,0x0e,0xe1,0x1f,0x3f,0x77,0x5a,
- 0x44,0xa0,0x92,0x1a,0xab,0x51,0xb9,0x36,0xa1,0x59,0xad,0xcb,0xed,0xf3,0x41,0xbc,
- 0xca,0x51,0xd3,0x83,0xfb,0x99,0x8d,0x6a,0xcf,0xc7,0xca,0x04,0x1f,0xcd,0xad,0x90,
- 0x5e,0x34,0xe6,0xf7,0xf0,0x24,0xe3,0xda,0x51,0xa8,0x0d,0xe7,0xc7,0x98,0x7d,0x3e,
- 0xc8,0x12,0x10,0xfd,0xe5,0x21,0x6e,0xe1,0x1f,0x88,0x45,0xbd,0x0d,0x87,0x15,0x63,
- 0x8f,0x51,0x1e,0x42,0xb5,0xa3,0x28,0xdb,0xc8,0xff,0x8a,0x3b,0xb2,0xe6,0xc3,0x86,
- 0x1f,0x68,0x2a,0x1f,0x58,0x81,0xb0,0x01,0xdd,0x3a,0xca,0xef,0x84,0xad,0x8e,0x49,
- 0xa6,0xe3,0x2f,0x1d,0xc5,0x5d,0x33,0xa4,0x2f,0x53,0x04,0xc9,0xde,0x1f,0x3b,0x48,
- 0x4d,0xb0,0x93,0xce,0xd4,0x58,0xb4,0x05,0xd3,0x83,0x0e,0x6b,0x92,0xae,0x12,0xb9,
- 0xd6,0xca,0x7f,0xe1,0xa9,0xbf,0xb5,0xe7,0xbf,0x60,0x14,0x8d,0xe0,0x74,0xda,0x2b,
- 0x23,0xe4,0x50,0x7c,0xec,0x1d,0xa5,0xa1,0xdf,0xb5,0x5b,0x66,0xf6,0xf9,0x68,0xc9,
- 0x73,0xa2,0xf1,0x74,0x01,0xcd,0x47,0xbb,0x18,0x9d,0x4a,0x84,0x59,0x88,0xe8,0xce,
- 0xce,0x5a,0xe3,0x48,0x2a,0x35,0x66,0xef,0x8f,0xfd,0xa2,0xb9,0x46,0x2b,0x7d,0x95,
- 0x7f,0x7d,0x73,0xb1,0xb1,0x2f,0xe6,0x1b,0x50,0xbf,0x11,0x3e,0x05,0xfb,0x16,0xf9,
- 0x68,0xf0,0xfd,0x55,0xb0,0x76,0x37,0x21,0x9c,0xcd,0xd9,0xf9,0xaf,0x9d,0xe0,0xb5,
- 0xfc,0x35,0x7a,0xcd,0x41,0x0b,0x2f,0x59,0x88,0xa8,0xdd,0xd1,0x22,0xd6,0xa6,0x8e,
- 0xd8,0xfb,0x63,0xbf,0x66,0x88,0xa8,0x7e,0x28,0xaf,0xa6,0xa9,0x40,0xec,0xf9,0x95,
- 0x6f,0x5c,0x6d,0x40,0x47,0x7e,0x4f,0xbb,0x6f,0x44,0x2d,0x66,0xb7,0x40,0x67,0xdc,
- 0x37,0x8a,0x47,0xec,0xfd,0xb1,0x0f,0xc2,0xa8,0x51,0x37,0x8e,0xf8,0x6d,0xbe,0xf7,
- 0xbc,0x11,0x0c,0xa1,0xf0,0xa1,0xb0,0x10,0xd1,0x1b,0xf2,0x37,0xc5,0x11,0x23,0x48,
- 0x83,0xd2,0xec,0xfd,0xb1,0x87,0xf4,0x0b,0x3a,0x7a,0xdf,0xfe,0x1d,0x43,0x70,0x51,
- 0xbf,0x7f,0xc0,0x55,0xd3,0x39,0x56,0x4a,0x65,0x5f,0x2e,0xad,0xb3,0x6b,0x2e,0x2e,
- 0xd4,0xe0,0x75,0xd9,0xf3,0xd1,0x26,0xe1,0x04,0x54,0x9b,0xf9,0x71,0xa9,0x91,0xba,
- 0x1d,0x5a,0xf1,0x1f,0xe5,0x2d,0xc4,0x57,0x56,0xa1,0xe5,0xcf,0xad,0x8a,0xef,0xec,
- 0xf9,0x68,0xc4,0xaf,0x33,0x39,0x8d,0x45,0x3b,0x02,0x9e,0xb3,0xfc,0x60,0x53,0x15,
- 0xd9,0xf7,0x11,0x4b,0xff,0x74,0x2b,0x9e,0xdf,0xa8,0x59,0xf3,0x41,0x24,0x1f,0x5e,
- 0x7f,0x4f,0x22,0xaf,0x97,0xed,0x82,0x67,0x44,0xc5,0x3d,0x34,0xcf,0xcb,0x78,0x4c,
- 0xe0,0x1d,0xe8,0xc3,0x79,0x4c,0xb7,0x5a,0x27,0xd9,0xfb,0x43,0x3a,0xc3,0xe8,0xd6,
- 0xe1,0xb6,0x69,0xdb,0xc0,0x76,0x48,0x3d,0xa6,0xd7,0xcf,0x7d,0xc4,0xff,0x31,0x57,
- 0x68,0x0e,0x25,0xfc,0xb0,0x1e,0x43,0xd7,0xd5,0x61,0x9f,0x8f,0xb6,0x92,0xac,0x2d,
- 0x3e,0xff,0x97,0x10,0x18,0xc7,0xea,0x4f,0x58,0x44,0x97,0x5f,0x43,0xe0,0xc4,0x86,
- 0xa8,0x5c,0x1e,0xff,0x75,0x9e,0xc5,0x6f,0xc9,0x9e,0x8f,0x36,0x96,0x22,0xb1,0xdc,
- 0x0f,0xc7,0x8c,0x85,0xc9,0x4d,0x66,0x8a,0xd6,0x6b,0xa2,0x63,0x35,0x92,0x1a,0x94,
- 0x36,0xde,0x9c,0xd5,0x1f,0xdb,0xf8,0x5d,0xaa,0xbf,0xd6,0x25,0x76,0x4c,0x34,0x8e,
- 0xf8,0x26,0xe5,0xa0,0x71,0x6e,0x4b,0xf5,0x88,0xf3,0xe0,0xe2,0x60,0xfb,0xe5,0x68,
- 0xf5,0xc8,0x75,0xe7,0x9b,0xed,0xf8,0x67,0x08,0xf1,0xaa,0x9e,0x88,0xf4,0xb2,0xb1,
- 0x68,0xb7,0xa7,0x20,0x61,0x15,0xbe,0xdd,0xa4,0x7b,0x0e,0xb5,0xc5,0xd1,0xbc,0x1c,
- 0xc8,0xf1,0xe0,0x52,0x80,0x1d,0xff,0x0c,0x75,0xed,0x28,0x8d,0x0d,0xf4,0xf8,0xc3,
- 0x4b,0x74,0x99,0xfb,0xcc,0xd6,0x40,0x93,0x33,0xb2,0x87,0x56,0xa0,0x97,0x6d,0x50,
- 0xf6,0xe0,0xfb,0x3a,0xfc,0x57,0xe0,0x9f,0x03,0x12,0xad,0x3f,0x8d,0xe5,0x15,0x73,
- 0x13,0x3c,0xe0,0xde,0xa5,0x10,0x8d,0x8a,0xc5,0xd9,0x7c,0xbe,0x07,0xd7,0x33,0x2f,
- 0x7b,0x3e,0x1a,0xc1,0xe0,0xc0,0x20,0x2e,0xcb,0xd7,0xa8,0xec,0x3a,0xb9,0x84,0xf8,
- 0xe1,0x17,0x77,0x52,0xfd,0x57,0xd9,0x4f,0x95,0x8b,0xa2,0x97,0xf8,0x27,0xc3,0xd9,
- 0xfc,0x1f,0x13,0x3f,0x8a,0x73,0x88,0x06,0x2f,0x4b,0x56,0xfc,0xe7,0x1f,0xa8,0x10,
- 0x6c,0x7c,0xd3,0xf9,0x2f,0x9d,0xa3,0x0f,0xa7,0xff,0x4f,0xe6,0x83,0x50,0x7d,0xe2,
- 0x06,0xbc,0x2d,0xcd,0x87,0xb5,0xbe,0x47,0x7e,0x91,0xda,0x92,0xef,0x46,0xc7,0xe4,
- 0x48,0x69,0x10,0x81,0x68,0x73,0xf6,0x7c,0x90,0xee,0xe1,0xaa,0x73,0xfc,0x05,0x0f,
- 0x6e,0x9b,0xf6,0xaa,0x13,0xea,0x3e,0xf6,0x81,0x49,0x13,0x75,0xd5,0x1b,0x4a,0xbf,
- 0x1c,0xea,0x4e,0x56,0xfd,0x1e,0x9e,0xcd,0xce,0x7f,0x19,0x84,0xf7,0xbc,0x7e,0xe6,
- 0x32,0x1e,0x2e,0xac,0x1a,0xe9,0x26,0xc7,0x81,0x32,0xaa,0xdd,0x64,0xdf,0x3b,0xc1,
- 0x97,0x84,0x05,0x57,0xe4,0xbf,0x66,0x88,0xca,0x11,0x7e,0x5f,0x78,0xb6,0xf6,0x48,
- 0x34,0x15,0xff,0x41,0x37,0x67,0x5b,0x52,0xbd,0xc0,0xbe,0x08,0x6b,0x63,0x95,0xd4,
- 0x7f,0xd2,0x8e,0x7f,0x9c,0xf0,0x32,0x6f,0x18,0x70,0x3e,0x2f,0x3b,0xd9,0x2f,0x35,
- 0x9f,0x55,0x2f,0x09,0x1f,0x73,0x8d,0x1c,0x87,0x0d,0x4d,0x2f,0x43,0xc3,0xcb,0xce,
- 0xdd,0xd9,0xf9,0xaf,0xa6,0xcb,0x5a,0x23,0x95,0x7d,0x9d,0x82,0xdf,0x15,0xd3,0x6e,
- 0x29,0x9a,0x54,0x1a,0xa9,0xfe,0x2b,0x4e,0x85,0xf0,0xfa,0xcd,0x87,0x5c,0x7b,0xe4,
- 0x6c,0xfe,0xcf,0x11,0xc9,0x1a,0x02,0x8b,0x8e,0x09,0x0b,0xa4,0xf4,0x15,0x11,0x81,
- 0x36,0xc4,0xad,0x40,0x90,0xc5,0x8f,0xfa,0x97,0xe6,0x83,0xb8,0x4f,0x69,0x2f,0x49,
- 0xa5,0x66,0x37,0xe9,0x93,0x4d,0x56,0x07,0x36,0x37,0x6a,0x98,0x9c,0x52,0xb3,0x64,
- 0xfc,0x8a,0xf9,0x20,0x8f,0x88,0xcf,0x58,0xf3,0x41,0xf8,0x23,0xa9,0x42,0xb0,0x4b,
- 0xde,0xb5,0x5d,0x16,0x23,0xfa,0xba,0x54,0x29,0xdc,0x95,0xf3,0x41,0x1e,0x02,0x3d,
- 0xc4,0x0b,0x3d,0xaf,0x6a,0xe8,0xe6,0x87,0x68,0xde,0xa5,0xd6,0xb9,0x4a,0x5f,0x5e,
- 0x52,0xc2,0xf2,0x10,0x51,0xc4,0xfa,0xff,0x64,0x3e,0xc8,0x1b,0x10,0xa0,0xb1,0x68,
- 0x4f,0x8b,0x37,0xc4,0x73,0x61,0x57,0xac,0xf3,0x0c,0x1c,0x35,0x7b,0x63,0xb3,0xce,
- 0xa8,0x75,0xfc,0x02,0x04,0x84,0xef,0xca,0xf9,0x20,0xa3,0x2d,0xc1,0x62,0xf4,0xc7,
- 0x4f,0x6b,0x13,0x86,0x35,0x1f,0x2d,0xc9,0x50,0xd0,0x88,0x11,0xa4,0xff,0xcb,0xfc,
- 0x9f,0x41,0xb4,0x8f,0x8f,0xcb,0xff,0xcd,0x32,0xac,0xce,0x87,0x32,0xf3,0x43,0xcb,
- 0xe1,0x50,0x7f,0x60,0x79,0xf6,0x7c,0x10,0xe2,0xff,0x98,0xdb,0xdb,0x57,0x6c,0x55,
- 0x67,0xc0,0x3a,0x63,0x7b,0xc8,0xfb,0xb8,0x63,0x2e,0x43,0x81,0x68,0x3f,0x73,0xd8,
- 0xba,0x2e,0xab,0x63,0x76,0x16,0xff,0x67,0x7a,0xde,0x47,0x39,0xec,0x96,0xbc,0x2d,
- 0x79,0xd4,0x45,0x26,0x75,0xc4,0xad,0xe8,0xeb,0x40,0x6f,0x42,0x8b,0x7f,0x6b,0x16,
- 0xff,0x87,0xf8,0x51,0x11,0x0d,0x3f,0xdb,0x1d,0xe0,0x35,0xf2,0xfc,0x4d,0x5d,0xa9,
- 0x8a,0x4b,0xad,0x09,0x6f,0x65,0xc5,0x43,0x58,0x93,0x1d,0xff,0x4c,0xcd,0x07,0x29,
- 0xd2,0xad,0xee,0x97,0x68,0x76,0x63,0x5a,0x02,0xdf,0x4f,0x01,0x59,0x07,0x9a,0x29,
- 0x81,0xf6,0xf7,0x76,0xfb,0x7c,0x34,0xab,0x2d,0xb6,0x55,0xf6,0xf5,0xcf,0xde,0x85,
- 0x6d,0x05,0xc7,0x3b,0xef,0xe8,0x4b,0x15,0x82,0xbd,0x3c,0x89,0xa7,0x82,0x74,0xea,
- 0xc7,0x59,0xf8,0xe7,0xe5,0x9c,0xc0,0x2d,0xa9,0x79,0x19,0x5a,0x3d,0x05,0x52,0xac,
- 0xfa,0x2f,0x5a,0xa8,0x11,0x8a,0xe8,0xde,0xb2,0x29,0x7b,0x3e,0x5a,0xaa,0x3f,0xb6,
- 0x1a,0x0e,0x83,0xe8,0xd3,0x75,0x46,0xfc,0x1f,0x2d,0xe2,0xdd,0xce,0x39,0x02,0x33,
- 0xbd,0xcf,0x9a,0x0f,0xb2,0xdd,0x3e,0x1f,0xf6,0x9c,0x58,0x03,0x44,0xf2,0x71,0x20,
- 0xf0,0xd3,0x3f,0x63,0xf5,0xc7,0xd6,0x36,0xea,0x56,0x7f,0xec,0x13,0xeb,0x5e,0x50,
- 0x4a,0x0d,0xf5,0xf8,0x15,0xf8,0x67,0x0d,0xec,0x48,0xf1,0x7f,0x5e,0x48,0xb1,0xc7,
- 0x6b,0x60,0x23,0x47,0xe1,0x17,0x4d,0xe7,0xf0,0x08,0xcd,0x07,0xc9,0xb5,0xcd,0x87,
- 0x9d,0x39,0x08,0x87,0xb4,0xc0,0x72,0x17,0xe2,0x5b,0xe3,0x7c,0xb4,0x2e,0x54,0x10,
- 0xa5,0xfa,0x2f,0xc3,0x1d,0xf2,0x6d,0x45,0xa0,0x7b,0x56,0x09,0x2c,0x72,0x69,0x59,
- 0xf8,0x67,0x27,0x3b,0xcf,0xd0,0xcc,0x6d,0xa6,0x6a,0x2f,0x08,0xde,0xea,0x7a,0xfc,
- 0xcf,0x46,0xc4,0xf9,0x68,0x10,0xef,0x40,0x40,0x31,0x6a,0x85,0xce,0xae,0xe4,0xff,
- 0x2c,0x4c,0xc1,0xec,0x53,0x88,0xae,0xad,0x6e,0x24,0x04,0xb3,0x37,0x51,0x8c,0xf3,
- 0x54,0x8a,0xea,0x90,0x15,0xff,0xe9,0x3a,0x93,0xa6,0xfd,0x48,0x55,0x54,0xed,0xee,
- 0x85,0xe7,0x51,0x50,0x7b,0x98,0x97,0x1f,0x86,0xaa,0x8e,0x2b,0xe6,0x83,0x34,0x8b,
- 0x18,0x94,0xa3,0x63,0x89,0x46,0x7c,0xab,0xf0,0x69,0x5c,0x78,0x74,0xab,0x82,0xc9,
- 0xc1,0xc9,0x71,0x40,0x1f,0xfe,0x4f,0xe6,0x83,0xfc,0x0c,0x4a,0x5f,0x46,0xa3,0xff,
- 0xa6,0x15,0x0f,0xf1,0xa6,0x68,0xc0,0x95,0xe6,0xe2,0xfb,0x29,0x31,0x9d,0x8a,0xa8,
- 0xd8,0xf1,0x8f,0x1b,0x41,0x8e,0x35,0x04,0xe4,0x4d,0xf8,0x47,0x71,0x73,0x8c,0x4f,
- 0xc8,0x57,0xc3,0xef,0xc5,0xcd,0x49,0x57,0x42,0xaa,0x85,0x57,0x49,0x58,0x91,0xcd,
- 0xff,0x21,0x7e,0x1d,0x0d,0x01,0x49,0x6a,0x17,0x28,0x50,0x26,0x10,0x28,0x5e,0x90,
- 0x82,0x54,0x08,0x36,0x4a,0x81,0x0e,0xa0,0xf8,0x8f,0x0d,0xff,0x8c,0x89,0x31,0xd1,
- 0xb8,0xcd,0x95,0x28,0x0a,0xc0,0xa5,0x8e,0x85,0x77,0xe7,0x27,0xe4,0x00,0x1f,0x12,
- 0xd5,0xe5,0xae,0xd1,0xe6,0x00,0x9c,0x12,0xd5,0xba,0x2b,0x21,0xdb,0xe2,0x3f,0x85,
- 0xbd,0x1d,0xf8,0x90,0x86,0x1c,0xb7,0xda,0x42,0xaa,0xc2,0x41,0x85,0xf0,0x54,0xf6,
- 0x85,0xbf,0xf8,0x41,0xb6,0x56,0x42,0xe1,0x22,0x7b,0x3a,0x6b,0x3e,0xc8,0x93,0xbc,
- 0xf2,0x55,0x35,0x64,0xe1,0x9f,0xd2,0x01,0x3e,0xee,0x28,0x81,0xef,0xc1,0x9c,0x01,
- 0x5c,0xc6,0x62,0x78,0x80,0x5b,0xf3,0x41,0x6c,0xf1,0x9f,0x62,0x13,0xfd,0xae,0x2a,
- 0x40,0xb5,0x03,0x46,0x5c,0xf3,0xea,0xe8,0xc6,0xe6,0x42,0x6f,0x02,0x5d,0xf7,0xad,
- 0xf8,0x61,0xaf,0x03,0x2f,0xcd,0x07,0xb1,0xc7,0x7f,0x62,0x30,0x2a,0x82,0xba,0x2b,
- 0xda,0xe9,0x81,0x09,0x51,0xab,0x3b,0x23,0x9d,0x73,0xf5,0x37,0x92,0xb5,0xba,0xeb,
- 0x07,0xcd,0x15,0xa4,0x28,0x28,0xf4,0x57,0xf1,0x27,0xfc,0x9f,0x4d,0xb1,0xa2,0x94,
- 0x80,0x8a,0xf7,0x3d,0x44,0xd4,0xf5,0xc4,0x37,0x18,0xe1,0x67,0xa4,0x20,0xd9,0xbb,
- 0x64,0x16,0xff,0x07,0xad,0x9b,0xe1,0x1c,0xaf,0x68,0x80,0x4f,0x60,0xa1,0xb8,0x8e,
- 0xe2,0x21,0x44,0xfb,0x41,0xfc,0xd3,0x20,0x8e,0xc1,0x1e,0xe2,0xff,0x64,0xe1,0x1f,
- 0xa5,0x0f,0x77,0x4b,0xab,0x72,0x55,0x0c,0x7a,0xa9,0x10,0x40,0xb8,0x4f,0xfb,0x84,
- 0x68,0x80,0xd6,0x9d,0xf5,0x4c,0x3b,0x19,0xc2,0x4f,0x2f,0x2a,0x87,0xb2,0xe6,0xc3,
- 0xf6,0x51,0x36,0x7c,0x0b,0x8b,0xc1,0xf3,0x30,0x17,0xaf,0x67,0x83,0xd2,0x7a,0x7d,
- 0x2e,0xf0,0xbd,0xb8,0xf1,0x1e,0x55,0x18,0xee,0x9f,0x26,0xfb,0x7c,0x34,0x20,0x3e,
- 0xb0,0x81,0xdb,0x72,0x03,0xf5,0xb3,0x15,0xb8,0x89,0x13,0xe4,0x5f,0x98,0x11,0x85,
- 0x95,0x2b,0x9b,0xc1,0xe2,0x03,0x67,0xf4,0x0f,0xcd,0x07,0xa1,0xee,0xdf,0x4b,0x76,
- 0xbb,0x7d,0xfc,0xe3,0x54,0xfc,0x87,0x06,0x85,0xcc,0x35,0x7d,0x7b,0xcb,0x7c,0x16,
- 0xff,0x67,0xe9,0xf6,0x66,0x3b,0xfe,0x19,0xb7,0xbc,0x75,0xd5,0x94,0x56,0x59,0x9f,
- 0xc9,0x0c,0x63,0xca,0x2d,0xcd,0x6f,0x42,0xe1,0x7e,0xfa,0x5e,0x1e,0xca,0x8a,0xff,
- 0xfc,0xe1,0xce,0x9f,0xf9,0x1b,0x87,0x9c,0xdf,0x52,0x5f,0x34,0x7e,0xa7,0xed,0x19,
- 0x77,0x9d,0x57,0x67,0x37,0x1d,0x8b,0xee,0x1f,0xf1,0xb5,0xca,0x01,0xf8,0x7d,0x14,
- 0xa1,0xe3,0x1f,0x9a,0xed,0xfc,0x9f,0x84,0xe8,0x0c,0x55,0x51,0x53,0x9a,0x25,0x62,
- 0x9d,0x81,0x68,0x27,0xc0,0xa8,0x10,0xde,0x93,0xe0,0xd1,0x70,0x4f,0x0c,0xed,0xcb,
- 0x00,0xdf,0xcd,0x62,0xb9,0x19,0xfd,0x33,0x88,0xda,0xc4,0x37,0x98,0xe7,0x77,0xaf,
- 0x84,0x3d,0xf7,0x78,0x10,0xed,0xb8,0x9d,0xa2,0x53,0x02,0xd3,0xe1,0x61,0x06,0x3c,
- 0xaf,0x5b,0x1d,0x5a,0xec,0xf3,0x41,0x9e,0xa0,0x36,0x02,0xfd,0xf3,0xfa,0xf0,0xcb,
- 0x7b,0x94,0xda,0x9e,0x58,0xf1,0x1f,0xfc,0x3a,0xd1,0x6c,0xf5,0x28,0xcf,0x83,0x67,
- 0x80,0xfb,0x9b,0x32,0xf3,0x41,0x8c,0x99,0x1f,0x20,0xec,0x0c,0xd2,0x58,0x8a,0x02,
- 0xb8,0x20,0xfc,0xc9,0xeb,0xe2,0x65,0xd6,0x7c,0x90,0x11,0xaa,0xcf,0x45,0xc7,0xca,
- 0x4d,0x81,0x32,0xad,0xc5,0x1e,0xff,0xb9,0x0c,0x0d,0x66,0xc1,0xb8,0xfc,0x82,0xfe,
- 0x01,0x9a,0xf5,0x4d,0xe7,0x9f,0x44,0x20,0x64,0x58,0xf8,0x70,0x02,0x3e,0x61,0x37,
- 0x8f,0x58,0x8d,0x58,0xa7,0xef,0x6f,0x6a,0x3f,0x41,0xb4,0x49,0xf9,0x35,0x79,0x25,
- 0xaa,0x81,0xc0,0x80,0x2b,0x55,0x7f,0x17,0x34,0x9d,0xb1,0x19,0xdb,0xe0,0x30,0x0b,
- 0x0c,0xe3,0xa9,0xb8,0x1d,0xff,0x0c,0x77,0xaf,0x2a,0x3b,0xc5,0x9f,0x65,0xf3,0xf5,
- 0x75,0x9f,0xf7,0x34,0xa9,0x7b,0x59,0x65,0x3f,0x01,0x21,0xfe,0x92,0xfc,0x37,0xcb,
- 0xdf,0x68,0xf7,0x24,0xf2,0xff,0x98,0x85,0x7f,0x96,0xa3,0xbd,0x2e,0x37,0xf9,0x7e,
- 0x76,0x14,0xba,0xb7,0xe8,0x49,0x75,0x3f,0x02,0xe9,0xee,0xcd,0x5f,0x1b,0x41,0x9f,
- 0xf6,0x01,0xd8,0xa6,0x79,0x7b,0xf0,0xc5,0xe3,0x99,0xf9,0x20,0xd2,0x2c,0x63,0x0d,
- 0x19,0xfd,0x09,0xf6,0x23,0xe8,0x8c,0x96,0x8e,0x5e,0xb3,0x9a,0xbd,0x28,0xd1,0x04,
- 0x31,0x38,0x89,0xfa,0xe7,0x05,0x31,0x2f,0xf6,0xe9,0xd5,0x59,0xf5,0x5f,0xb9,0xc6,
- 0x2f,0xd0,0xfb,0x76,0xfa,0xad,0xb1,0x20,0xfa,0x2b,0xb2,0x5f,0xde,0x60,0x74,0x6a,
- 0xb3,0x4c,0x9f,0xce,0x9e,0x80,0xb7,0xa1,0x2e,0x82,0xa7,0x36,0x67,0xea,0xbf,0xae,
- 0xdd,0x6b,0xf5,0xc7,0x9e,0x4f,0xf8,0x19,0xf1,0xe1,0x10,0x01,0x69,0xf6,0x12,0x34,
- 0x0e,0x5a,0x81,0xc4,0x37,0xa3,0xfb,0xa8,0x50,0xce,0xce,0xff,0x19,0x9a,0x9a,0x8f,
- 0x56,0xb4,0x8b,0x06,0xcd,0x53,0x22,0x72,0x97,0xd5,0xa6,0x7e,0x83,0x90,0xbb,0x52,
- 0xf3,0xc1,0x77,0xdb,0xfb,0xff,0x14,0x3e,0xce,0x36,0x41,0x59,0xc2,0x9a,0x0f,0x42,
- 0x6c,0x9f,0xbc,0x29,0xc7,0xca,0x74,0x0c,0xa3,0xb0,0x11,0x4a,0x17,0x51,0xfe,0x2b,
- 0x5d,0xff,0x65,0xc2,0x8b,0xda,0x5a,0x31,0x6f,0xcc,0x71,0x3f,0xbe,0x6f,0x6f,0x47,
- 0x69,0x32,0x6f,0xc2,0x81,0xfe,0xa3,0x59,0xf9,0x36,0x1f,0x65,0xcf,0x51,0xe1,0x7f,
- 0x88,0xdf,0x67,0xab,0xa7,0xa0,0xf9,0xb0,0x29,0x6b,0x8e,0x6a,0x67,0x4f,0xab,0xbe,
- 0x35,0xaf,0x90,0xda,0x20,0x77,0xf8,0x42,0x44,0xbc,0x87,0x30,0xe8,0x5f,0xc0,0xf5,
- 0xcc,0xd4,0x7f,0x8d,0xce,0xec,0x83,0xc3,0x50,0x2f,0x10,0xff,0xac,0x87,0x4b,0x50,
- 0x44,0x83,0xc5,0xbd,0x56,0x46,0xcc,0x19,0xa3,0x88,0x10,0xdb,0x1d,0xf7,0xc5,0xec,
- 0xf5,0x5f,0x90,0x6c,0xb1,0x8a,0xdc,0xbb,0xac,0x34,0xc4,0xf3,0x53,0x63,0x41,0xd0,
- 0x5e,0xd0,0x11,0xf7,0xe4,0xf4,0x7c,0xd8,0xe9,0xf5,0x41,0xfc,0x13,0x3d,0x34,0xdd,
- 0x36,0xf9,0x3d,0x08,0x84,0x94,0xad,0xf2,0x1c,0x38,0x14,0x0d,0x18,0x1b,0xac,0x8a,
- 0x21,0x2d,0xd0,0xc2,0xa3,0x59,0xf5,0x5f,0x88,0x7f,0xa4,0xed,0x86,0x77,0xcb,0x7a,
- 0x0a,0x3b,0x6c,0x6f,0xe1,0x0f,0x31,0xc4,0x3f,0x02,0x8f,0x3c,0xee,0x28,0x67,0xaf,
- 0x9b,0xdb,0x57,0xf1,0x2b,0xf1,0xcf,0x43,0xd3,0x63,0xd1,0x88,0xc8,0xe1,0xb0,0xe6,
- 0x7d,0xe0,0x11,0x47,0x21,0xea,0xe7,0xef,0x71,0x4f,0x73,0x85,0x66,0xab,0xff,0x22,
- 0xfc,0xf3,0x90,0x57,0x6f,0xe3,0xd6,0x65,0x15,0x2b,0x8c,0x7a,0x74,0xbb,0xb8,0x04,
- 0x21,0xc3,0x1a,0x9c,0xf1,0x3d,0x88,0xb5,0x39,0xdc,0x61,0x47,0xba,0xfe,0x82,0xf0,
- 0xcf,0x49,0x3d,0xc0,0x37,0x22,0xfe,0x61,0x09,0xbd,0x4e,0x72,0x08,0x89,0x1a,0xd1,
- 0xf8,0xa1,0x20,0x86,0xdf,0xd7,0x29,0xe6,0xe6,0x05,0x61,0x7b,0xfd,0x17,0xe2,0x9f,
- 0x0f,0x52,0x20,0x27,0x85,0x7f,0xf2,0x97,0x85,0x53,0x65,0xef,0x56,0xfc,0xe7,0x62,
- 0x4a,0xb0,0xd7,0x7f,0x8d,0x4c,0x0f,0x01,0x41,0xeb,0xef,0xef,0xa5,0xec,0x58,0x0a,
- 0xff,0x2c,0x45,0xfc,0x93,0x3a,0xb5,0xf9,0x4f,0xf1,0x8f,0xc2,0x59,0xd8,0x14,0x7d,
- 0x7e,0x0f,0xf5,0xc7,0x06,0x88,0x78,0x19,0x57,0xf1,0xb7,0xd5,0x05,0xaf,0x50,0xf8,
- 0x40,0xf8,0x41,0x9b,0xfe,0xf9,0x55,0x14,0xfd,0x7d,0x83,0xd0,0x0e,0xe2,0x9f,0xd2,
- 0x56,0xb5,0x1d,0x8a,0x81,0xea,0xdf,0xbb,0x8f,0xb3,0x73,0x1d,0x6b,0xa4,0x52,0x23,
- 0xf2,0x79,0x5b,0xfd,0x57,0xc9,0xcc,0x1f,0x4f,0x17,0xcd,0x9d,0x33,0x10,0xff,0xb4,
- 0xaa,0xc7,0x1d,0x35,0x62,0x63,0x69,0x19,0x55,0xd8,0xd5,0xb0,0x8d,0x30,0xcf,0x30,
- 0x86,0xb3,0xea,0xbf,0x46,0xd8,0x3a,0xe8,0x25,0x12,0x17,0xe1,0x19,0xcf,0x32,0x02,
- 0x72,0xac,0x1f,0xac,0xb1,0x2f,0x83,0x88,0x60,0x89,0xdf,0xa5,0x7a,0xd3,0xfd,0x37,
- 0x7a,0xa6,0xf3,0x5f,0x8f,0xe3,0xf5,0x67,0xd3,0x89,0xb0,0xae,0x17,0x43,0x56,0x22,
- 0x2c,0x85,0x7f,0xb2,0xe7,0x83,0xe8,0x93,0x7c,0x21,0x73,0x11,0xdb,0x79,0x48,0xaf,
- 0x66,0x56,0x3d,0xef,0x10,0x4b,0x55,0x20,0x8a,0x53,0x56,0x04,0x52,0x65,0x36,0xfc,
- 0x33,0x0f,0x9e,0x37,0x3d,0x71,0x2a,0xd2,0xa1,0xb6,0x3f,0x51,0xe7,0xce,0xd4,0xa0,
- 0x2b,0xa1,0xea,0x9e,0xf7,0x99,0xc5,0x88,0xce,0xaa,0xff,0xca,0xb9,0x1b,0xfa,0x86,
- 0xe7,0xd6,0xa8,0x53,0xed,0x05,0x35,0xde,0xd5,0x94,0xb4,0x88,0xa9,0x78,0xe4,0x65,
- 0x74,0xed,0x75,0xca,0x30,0x66,0xea,0xbf,0x62,0x30,0x8b,0xda,0x76,0x99,0x94,0x7f,
- 0x97,0xd6,0x1a,0xa5,0x49,0xef,0xaa,0xa6,0x53,0xd3,0xb0,0xe7,0x13,0x8d,0x2a,0xaa,
- 0x54,0xbf,0xad,0xfe,0xab,0x87,0x5f,0x0d,0x7b,0xc5,0x0d,0xba,0xeb,0xce,0x22,0x37,
- 0x0c,0x89,0x3d,0x31,0xe7,0x8a,0xe6,0x37,0x38,0xcd,0x07,0xd9,0xb4,0x1a,0x3f,0x93,
- 0xb5,0x16,0xff,0x59,0xb5,0xd5,0x7f,0xcd,0xda,0xe9,0xb4,0xc2,0x3e,0x31,0xd5,0xb2,
- 0xef,0xc6,0x83,0x94,0x46,0x24,0x22,0x10,0x7e,0x56,0x43,0x30,0x8a,0x5a,0x00,0xed,
- 0x7b,0xa6,0xfe,0x0b,0x72,0xfe,0xc0,0x97,0x52,0x90,0x27,0x21,0xdf,0x63,0x5c,0x16,
- 0xd5,0xa1,0x47,0x5e,0x97,0x3f,0x6a,0x1d,0xeb,0x08,0x50,0xd9,0xfb,0x8b,0xf8,0x5f,
- 0xac,0x9e,0xe3,0x3c,0x24,0x67,0xf0,0x49,0x4f,0x61,0x04,0xba,0xf4,0x4a,0x50,0x57,
- 0xdd,0xf3,0x26,0xec,0xd5,0xca,0x44,0xe5,0xdd,0xec,0x12,0x6c,0x32,0xca,0x46,0x51,
- 0xed,0xf8,0x9b,0xd6,0x96,0x6c,0x33,0xf9,0xdf,0x3b,0x2a,0x32,0xf5,0x5f,0x08,0x79,
- 0xad,0xb7,0x6b,0x67,0xc3,0x68,0xb8,0xb7,0x0d,0xe2,0x65,0x13,0xb1,0x1f,0x97,0xcc,
- 0xe1,0xa8,0xc1,0x1e,0xb7,0x2a,0xc8,0x5a,0x5b,0xe7,0xda,0xf1,0x4f,0x52,0xb3,0x56,
- 0xcf,0xeb,0x1e,0x32,0xe2,0xb8,0x9e,0x25,0x79,0xb9,0xaf,0xe6,0x75,0xc0,0xf2,0x41,
- 0xde,0xc5,0x88,0xfd,0xab,0x53,0xa1,0x2b,0xb7,0xd5,0x7f,0x51,0xa3,0x82,0xa0,0xe4,
- 0xea,0x91,0x3f,0x84,0xbe,0x44,0xc0,0xc9,0x05,0x6e,0x8c,0xa7,0xc4,0x73,0x49,0x7d,
- 0x8d,0xbc,0x1d,0x5a,0x07,0x2c,0xfe,0x73,0x45,0xa6,0xfe,0x0b,0x3e,0x4c,0x85,0xc5,
- 0x1e,0x92,0x4f,0xc3,0x45,0xdd,0x2a,0x84,0x7f,0x4f,0xbb,0x60,0xd4,0x13,0x2d,0x7c,
- 0x6c,0xc9,0x45,0xde,0x60,0xba,0xa2,0xd5,0x99,0xfe,0xd8,0x92,0x36,0xc1,0x4f,0x10,
- 0x49,0x3e,0x55,0xdd,0x5c,0x2d,0x0a,0x52,0x34,0x8f,0x32,0xd4,0xe7,0x0e,0x3f,0x02,
- 0xa1,0x5e,0x93,0x7b,0x6d,0xf5,0x5f,0xc4,0xff,0xb1,0xda,0x5c,0xaf,0x63,0x49,0x71,
- 0x00,0xac,0x34,0xfa,0x69,0xd1,0x07,0x01,0x3f,0x6e,0x03,0x1a,0x64,0xe6,0x81,0xd6,
- 0x68,0x56,0xfd,0x57,0x39,0x3c,0x46,0x7c,0xe9,0x18,0x1b,0x33,0xf6,0x58,0xfd,0x37,
- 0xac,0x42,0x8c,0x8a,0x81,0x6e,0xc1,0x76,0x31,0xa1,0x78,0xc0,0xb1,0x8d,0xc5,0x6c,
- 0xf5,0x5f,0xf3,0xac,0xa6,0x0a,0xaa,0xd6,0x44,0xbe,0x13,0xe2,0x1f,0xdd,0x9d,0x40,
- 0xa0,0x35,0xca,0x16,0xfb,0x1d,0x31,0x4b,0x75,0xa3,0x06,0xb3,0xcd,0x07,0xc9,0x4f,
- 0x35,0xf9,0x59,0x1a,0x6f,0x1a,0x9b,0x1a,0x0b,0x52,0x34,0xb6,0xf3,0xa2,0x72,0xb5,
- 0xf9,0xd7,0xe4,0x71,0xbf,0x8c,0x47,0xaa,0x62,0xaa,0x1d,0xff,0x0c,0x6b,0x53,0xfc,
- 0xe7,0xf1,0x45,0x93,0xf0,0x12,0xba,0x09,0x72,0x52,0xa2,0xc1,0x82,0xc4,0x00,0x4f,
- 0x01,0xa1,0xec,0xf9,0x20,0xe3,0xb1,0xb1,0xba,0xc6,0x02,0xe7,0xab,0x9d,0xf1,0xc3,
- 0x43,0xfe,0x6a,0xad,0x6a,0x90,0xea,0xdf,0xfd,0x8d,0xdc,0x37,0xd0,0xe9,0x17,0x43,
- 0xf5,0x7b,0x9c,0xce,0x87,0x3b,0xfd,0x52,0x06,0xff,0x7c,0x10,0x43,0xfc,0x73,0x92,
- 0x3f,0xe7,0xf6,0x19,0xdd,0x86,0xe7,0x24,0x5f,0x28,0xff,0xc4,0xec,0x0e,0xf9,0x4e,
- 0xde,0xb6,0xd7,0x4d,0x82,0xe7,0x64,0x64,0x67,0x56,0xfd,0x57,0xc2,0x1a,0x83,0xc2,
- 0xc1,0x61,0x76,0x89,0x40,0x6c,0x98,0x6b,0x9e,0x84,0x47,0xf8,0xcb,0x7f,0xce,0xdd,
- 0xdb,0x9d,0x3a,0x3a,0x1b,0x2d,0x91,0x2c,0xfc,0x53,0xb8,0x93,0xf2,0x5f,0x27,0x11,
- 0xe4,0xdc,0x46,0x65,0x65,0x10,0x89,0x31,0x3c,0xa2,0x54,0x41,0x9e,0x87,0xc5,0x58,
- 0x27,0xc4,0x44,0xab,0x68,0xf2,0xdb,0xf8,0xcf,0x23,0x94,0x06,0xf5,0x3b,0x1f,0x94,
- 0xdf,0xa1,0x69,0xa4,0xa8,0x96,0x3f,0x75,0xda,0x9b,0x38,0x69,0x35,0x52,0xd0,0x29,
- 0x10,0x21,0x9c,0x51,0x15,0x6c,0xf1,0x9f,0x1e,0x04,0x81,0xe8,0x74,0x7c,0x84,0x5f,
- 0xc7,0x85,0x0e,0x82,0x3d,0x65,0x07,0xf9,0x65,0xf1,0x5d,0x42,0x44,0x56,0xa0,0xcc,
- 0x98,0x1f,0xba,0x32,0xfe,0xa3,0xd5,0x6a,0xce,0xb0,0x7c,0x77,0xe8,0xbc,0x1e,0x18,
- 0x28,0x88,0xab,0xf3,0xbc,0x13,0xad,0xbd,0xa6,0x33,0xda,0xed,0x64,0x47,0x4a,0x28,
- 0xbe,0x91,0x95,0xff,0x42,0x85,0x3a,0xec,0xf9,0x15,0xdf,0x1b,0xf6,0x49,0x17,0x5a,
- 0x11,0x2d,0xaf,0x65,0x73,0xe1,0x80,0xf0,0x14,0x5f,0xdb,0xc3,0xca,0x8c,0x08,0xbe,
- 0x70,0x64,0x63,0x16,0xfe,0x09,0x19,0x42,0x5a,0x7e,0x9a,0xd7,0x05,0x5e,0x73,0xf6,
- 0x86,0x3d,0xe5,0x0e,0x08,0x94,0x3b,0xf7,0xc8,0x15,0xe5,0x11,0x1d,0x35,0x52,0xcc,
- 0x08,0x39,0x79,0x76,0xfe,0x8b,0x68,0x3f,0xba,0x1e,0x69,0x65,0x9b,0xe1,0x89,0x68,
- 0xe9,0x88,0xfa,0x2d,0x76,0xb5,0xb1,0x37,0xf2,0x37,0x49,0xfe,0x5f,0xc2,0xb3,0xf5,
- 0xb2,0x28,0x9a,0xfe,0x15,0xc2,0x1e,0xff,0x71,0x20,0x86,0xa8,0x21,0xfc,0x36,0xa4,
- 0xf4,0x6a,0xf1,0xc1,0xd9,0xda,0x0c,0x67,0xe8,0x22,0xd4,0x99,0x7c,0xb7,0xec,0xeb,
- 0x4a,0x6a,0xf1,0x16,0xe7,0x81,0xac,0xf8,0xcf,0x5e,0xaa,0xf6,0x02,0x57,0xc7,0xa7,
- 0x56,0xb5,0x7c,0xa2,0x35,0x2a,0x54,0x1d,0xd0,0x7a,0xbf,0xb6,0x10,0xe6,0xf7,0xa3,
- 0xa1,0x7f,0x4b,0x6b,0x8c,0xb8,0x12,0xcd,0xc3,0xee,0xe9,0xf5,0xe9,0x41,0xfb,0x45,
- 0xd1,0x1e,0x5f,0x5f,0x99,0x4f,0xbb,0x28,0xe8,0x6b,0x45,0xff,0xf7,0x88,0x55,0xb6,
- 0xd0,0xac,0xd3,0x8e,0x15,0x16,0x9f,0x33,0x13,0xff,0xe9,0x83,0x0d,0xb0,0x0d,0xb8,
- 0x81,0x2a,0xcf,0xcf,0xac,0xf9,0x8c,0x25,0xd0,0x95,0x5b,0x66,0x16,0xb4,0xa3,0x6a,
- 0x3d,0x08,0xdb,0x8c,0xc5,0x21,0xf6,0xd1,0x15,0xf3,0x61,0xf5,0x24,0xaf,0xb3,0xc2,
- 0xe6,0xa5,0x29,0x61,0x2a,0xfe,0x93,0x3a,0x82,0xaa,0x78,0xdc,0x56,0xff,0x65,0xa2,
- 0x11,0xa4,0x2e,0xb1,0x6e,0x80,0x78,0xa9,0x2e,0xb5,0x92,0x62,0x8f,0x50,0x3f,0x13,
- 0x62,0xcd,0xc6,0xf1,0x14,0x0a,0xc7,0xb3,0xe2,0x3f,0x87,0x15,0xdc,0x24,0x31,0x95,
- 0x60,0x4f,0xaf,0xf0,0xc5,0x9a,0xbd,0x08,0x74,0x7b,0xad,0x23,0xca,0x05,0xa5,0x57,
- 0xe0,0x0a,0x5c,0xc8,0xce,0x7f,0x69,0xe9,0xfa,0xf7,0x9b,0xc1,0xd5,0x5f,0x36,0x4c,
- 0xdb,0x46,0xb2,0xf2,0x5f,0xe7,0xdc,0x8d,0x8a,0x55,0xff,0x9e,0xd6,0xe7,0xda,0x48,
- 0x0a,0x04,0xa6,0xfa,0xe3,0x59,0xf5,0x4d,0x73,0xd8,0xa1,0xd4,0x58,0x90,0x72,0x65,
- 0xea,0x14,0x4b,0xdb,0x0b,0x0b,0xff,0x58,0x65,0x5f,0x4d,0x23,0x53,0x44,0x14,0x9a,
- 0x8f,0x06,0x14,0xf6,0xf1,0x94,0xe3,0xa9,0x98,0xf1,0x27,0xf8,0x87,0xe2,0x1b,0x79,
- 0x68,0xaf,0x51,0x55,0xcf,0x37,0xf2,0xda,0x3d,0x35,0xca,0x46,0x6a,0x2c,0x30,0x8c,
- 0x78,0x86,0x4c,0x79,0x5e,0xfb,0x15,0xf9,0x2f,0xea,0x76,0x98,0x47,0x69,0xaf,0x67,
- 0xad,0xfe,0x87,0xe1,0x59,0xb1,0x35,0xf3,0xb6,0xb5,0xf1,0x65,0xeb,0xe9,0x54,0x59,
- 0xdb,0xbc,0x2b,0xf3,0x5f,0x09,0xc4,0x3f,0xf9,0x61,0x39,0x29,0x26,0xf4,0x06,0x12,
- 0x40,0x98,0x78,0xc4,0xc9,0x64,0xbd,0x2b,0xa1,0xf7,0xf2,0xfc,0x01,0xb9,0x2a,0xbb,
- 0xfe,0x0b,0xf1,0xcf,0xed,0x9b,0x1f,0xb6,0x84,0xc3,0x55,0x56,0xda,0x8b,0x10,0x51,
- 0xef,0xc3,0x63,0x28,0xcc,0x6e,0xcb,0xcd,0xca,0x7f,0xcd,0x4c,0x83,0x1c,0x25,0x76,
- 0xc8,0x1f,0x98,0x9a,0x0f,0xab,0x07,0x68,0x3e,0x6c,0x39,0x9b,0x3a,0x35,0xd7,0xd6,
- 0xff,0xe7,0x34,0xe1,0x9f,0x1c,0x6f,0x38,0x1c,0x13,0x11,0xbf,0xee,0xa6,0xf9,0xb0,
- 0x46,0xc4,0xeb,0xe1,0xbc,0x93,0x95,0xa6,0xa0,0xd1,0x40,0x56,0xfe,0xeb,0xc4,0xc0,
- 0x1a,0x6d,0x9b,0xc1,0x7f,0xc9,0x8a,0xb7,0xaf,0xd1,0xb7,0x2d,0xf1,0x7e,0x8e,0x15,
- 0xbb,0xd7,0xf8,0xb7,0x59,0xf3,0xd1,0x86,0xad,0x53,0x9f,0xb7,0xc7,0x7f,0x72,0x76,
- 0x52,0x7d,0x22,0x7e,0xc3,0x6c,0xef,0xf4,0x3c,0x50,0x2a,0x04,0x2b,0x6b,0x6e,0x1d,
- 0xf6,0xd0,0x7a,0xe2,0xc2,0xb6,0xa3,0x63,0x32,0xbd,0x1f,0x62,0xc5,0x3b,0xad,0xdf,
- 0x77,0x56,0xb4,0xa8,0x3c,0xf5,0xb3,0x7e,0x5f,0x9d,0x4b,0x47,0xbe,0x91,0x8a,0xef,
- 0x41,0x60,0x99,0xef,0x51,0xd9,0x2b,0xd2,0xf1,0x07,0x78,0x62,0x8a,0x0f,0x66,0x65,
- 0xbb,0x1a,0x68,0x1a,0xec,0xa0,0xa0,0xf9,0x20,0xf3,0x35,0xf5,0x37,0x29,0x44,0xb4,
- 0x35,0x2b,0xff,0x15,0x05,0xcb,0x7e,0x99,0xaa,0x66,0x95,0x7d,0x59,0xf1,0x9f,0x41,
- 0x6d,0x41,0x89,0x93,0x3a,0xa2,0x9d,0xd2,0xaa,0x8b,0xf1,0x88,0x23,0xd3,0xff,0x47,
- 0xf1,0xc2,0x61,0xb1,0x9d,0xe2,0x3f,0x5e,0xb6,0x5e,0x78,0x10,0xcf,0x6f,0x47,0x20,
- 0x24,0xb6,0xf7,0x72,0x9a,0x18,0x72,0xd8,0xdc,0x4e,0xf5,0xef,0xdc,0x16,0xff,0x31,
- 0x98,0x10,0x54,0xf6,0xe5,0xa0,0x66,0x7f,0x31,0xe0,0x96,0x10,0x89,0xe9,0x1c,0x9d,
- 0x85,0x26,0x91,0x20,0x1c,0xe5,0x70,0xa4,0xf9,0x93,0xba,0xe4,0x84,0xb5,0x14,0xf4,
- 0x58,0xe5,0x69,0x80,0x4e,0x14,0x52,0x8d,0x6d,0x25,0x9d,0xfa,0x77,0x39,0x2d,0x3c,
- 0x80,0x47,0xbc,0x59,0xf5,0x5f,0xa6,0x58,0xa0,0xbb,0xb8,0xec,0x86,0x41,0x14,0x38,
- 0x95,0x7d,0x91,0xe0,0xa3,0x23,0x74,0xca,0xd9,0x2a,0x57,0x64,0xc5,0x7f,0xfe,0xce,
- 0x0a,0xb3,0x4b,0xe9,0xfc,0x57,0x92,0xa5,0x13,0x61,0x7f,0x67,0x51,0xa3,0xed,0xf5,
- 0x5f,0xd2,0xb8,0xb8,0x24,0x6e,0xb2,0xca,0xbe,0xb4,0xa3,0x54,0xff,0x35,0x8a,0x6e,
- 0xfb,0xb1,0xae,0xea,0x11,0xd7,0x7e,0xf9,0x79,0xe5,0x58,0xb8,0x1a,0xa1,0x91,0xad,
- 0x7e,0xb9,0xa7,0x70,0x83,0x8e,0xb0,0x76,0xd8,0x3b,0xe9,0xb8,0x56,0x6c,0xe4,0x3b,
- 0x4c,0x3e,0x1c,0x6e,0x80,0x2e,0x7e,0xa3,0x53,0x3d,0x14,0xae,0x89,0xed,0x84,0x52,
- 0x84,0x46,0xe1,0x0a,0x5b,0xfc,0x27,0x4a,0x6d,0x82,0x80,0x37,0x69,0xed,0xfc,0x01,
- 0x6a,0x6f,0x1d,0xb2,0xea,0xdf,0xe7,0xf4,0xab,0xf7,0xb2,0xad,0xdc,0xc2,0x7b,0x9c,
- 0xdd,0x6a,0xab,0xff,0x3a,0x0a,0xbb,0xa3,0xe5,0xc3,0xfc,0xe6,0xb9,0x4b,0x58,0x87,
- 0xa9,0xff,0x23,0x9f,0xe5,0x90,0x0c,0xf1,0xaa,0x57,0x57,0x15,0x36,0x03,0x62,0xed,
- 0xb1,0x99,0x6a,0x03,0xbb,0xd3,0x56,0xff,0xf5,0x53,0xda,0x0f,0xa3,0xce,0xbd,0xf2,
- 0x12,0xaa,0x06,0x35,0x67,0x6d,0x95,0xd1,0xd1,0x18,0xae,0x0d,0xb8,0x22,0xf2,0x93,
- 0x9f,0x4b,0x18,0x01,0x40,0x68,0xf4,0x97,0xb6,0xf8,0x4f,0x52,0xbf,0xc0,0xeb,0xdc,
- 0xae,0x07,0x8a,0xb6,0x85,0x3e,0xe2,0x0d,0xe8,0x65,0x77,0x0e,0x79,0x3f,0x66,0xc1,
- 0x84,0xcb,0xbf,0xe3,0x10,0x22,0xa2,0x83,0x94,0x08,0xdb,0x69,0x8b,0xff,0x5c,0x82,
- 0x7f,0x84,0xea,0xa4,0x73,0x75,0x51,0x50,0x79,0x8d,0xba,0xfd,0x0c,0x17,0x35,0xe0,
- 0x46,0x5a,0x40,0x1b,0xa9,0xc6,0xda,0x5a,0xca,0x7b,0x72,0xa6,0xff,0x4f,0x07,0x7c,
- 0x49,0x7f,0xc3,0xf0,0xf8,0xf9,0x06,0xb9,0x0c,0xde,0x68,0xf2,0xd4,0xf2,0x9d,0x0e,
- 0x3d,0x55,0x7f,0x1d,0x67,0x5e,0xab,0xb1,0x21,0xf5,0xff,0xb1,0xe5,0xbf,0x96,0x18,
- 0x8f,0xc1,0x3d,0x83,0x7c,0x37,0xf3,0x19,0xcf,0x80,0x95,0x9d,0xd1,0xe1,0x31,0xc5,
- 0xd3,0x4f,0x81,0x0b,0x2f,0x5d,0xef,0x88,0x65,0xcf,0x47,0x93,0xa2,0x88,0x08,0x70,
- 0x53,0xa1,0x36,0xb6,0x04,0xd4,0x24,0x51,0x5c,0xbf,0x56,0xd6,0x86,0x8b,0x4d,0x8d,
- 0x7f,0xb5,0x0a,0x5b,0xfe,0x8b,0x7f,0x95,0xff,0x3a,0x95,0x44,0x70,0x5a,0xd5,0xc4,
- 0xce,0xb8,0x15,0xf6,0xe9,0x35,0x7d,0xbd,0xb2,0x8f,0x51,0xfc,0xe7,0xc1,0x98,0xad,
- 0xff,0x4f,0xec,0xda,0x71,0xaf,0x35,0x04,0xb6,0xa3,0x39,0x6e,0xc5,0x4b,0x37,0x99,
- 0xd6,0x58,0xd8,0xf9,0x60,0x4d,0x58,0xa6,0x53,0xf9,0xc7,0x3b,0x6d,0xfd,0x0f,0xf3,
- 0xc7,0xb5,0x53,0xd4,0xcd,0xcc,0xec,0x4c,0xa2,0x1a,0xbf,0x09,0x0a,0xc2,0x9d,0xe3,
- 0x62,0xd2,0x13,0x80,0xa5,0xc6,0x33,0xfe,0x28,0xde,0x81,0xe7,0x1f,0x97,0xc7,0xd3,
- 0xf3,0x8c,0x4c,0x18,0x5a,0xde,0x1d,0xad,0x1a,0x16,0x07,0xd9,0x07,0xe2,0x00,0xd1,
- 0x7e,0x88,0xff,0x7c,0xa0,0xab,0x82,0x1a,0x45,0xfe,0x0c,0x9e,0x69,0xaf,0xc2,0xf7,
- 0x0d,0x67,0xe2,0x6f,0x09,0xe8,0x42,0x07,0xcd,0xa7,0x38,0xc0,0xdd,0xaf,0xf7,0x19,
- 0x56,0x23,0xa0,0x7e,0x25,0xae,0xe9,0x0a,0x79,0x1c,0x06,0x9e,0xd2,0xd0,0x43,0x1f,
- 0x48,0xc7,0x73,0x4c,0xa5,0xc7,0x58,0x07,0x55,0x83,0x5e,0x1a,0x8b,0x73,0x20,0xb5,
- 0xda,0x63,0x70,0x0d,0x54,0x9c,0x54,0xe3,0x4d,0xbb,0x28,0x23,0x3f,0xe8,0x88,0x35,
- 0x8d,0x67,0xfa,0x5b,0x2a,0x31,0x48,0x48,0xc1,0x50,0x55,0xac,0xe8,0xbd,0xf2,0x8b,
- 0x52,0xfd,0xf2,0x07,0x85,0x3c,0x96,0x87,0x66,0x17,0x96,0xc6,0xcb,0x48,0xff,0x54,
- 0x95,0xe4,0x47,0x8b,0xcc,0xf6,0xcc,0xef,0x7b,0x90,0x92,0x80,0x31,0x17,0x95,0x99,
- 0xa0,0xd9,0x0a,0x23,0x30,0x1e,0x2f,0x9c,0x50,0x82,0x49,0xc4,0x87,0x17,0xe1,0x52,
- 0x2e,0x22,0xa2,0x31,0x74,0xed,0xa7,0xef,0x7f,0x02,0x76,0xc2,0x61,0x29,0x68,0x54,
- 0xee,0x94,0xbd,0xf0,0x6b,0xa8,0x37,0x7c,0xdb,0x8b,0xc6,0xc8,0xbe,0x6b,0xce,0x5e,
- 0xb9,0x4b,0xfc,0x9a,0x84,0xa8,0x5c,0x97,0x89,0x27,0x14,0x7b,0xa9,0x5b,0x9d,0xb0,
- 0xb2,0x9f,0x11,0xc9,0xbb,0xad,0x84,0xd8,0xaa,0x31,0xe1,0x31,0x4b,0xd6,0x33,0x6f,
- 0xe4,0x64,0x89,0x27,0x99,0x4f,0xf5,0x44,0xd3,0x3f,0x6f,0x52,0xf1,0x6a,0x1d,0x02,
- 0xbd,0xb3,0x12,0xa6,0x28,0x5b,0xa5,0x50,0x17,0xa2,0x1d,0x93,0xc6,0x28,0x27,0x39,
- 0x34,0x1d,0xce,0x8b,0xb2,0x7b,0xa8,0x03,0xe4,0xf4,0xd3,0x03,0x5a,0xdf,0xab,0xe0,
- 0x81,0x48,0xe5,0x0a,0xef,0x8a,0xb0,0x43,0xac,0x5d,0xbf,0x22,0xc4,0x57,0xe4,0xbe,
- 0x29,0x9e,0x14,0xf3,0x3c,0xfc,0xbe,0xdc,0xab,0xa4,0x87,0xbb,0x42,0x81,0xbc,0xd6,
- 0x74,0x35,0x0e,0xc0,0x0a,0x70,0xc2,0xcb,0x46,0xb0,0xc7,0xa5,0xa9,0xb9,0x62,0x58,
- 0x8a,0x0b,0xde,0x20,0x0f,0xec,0x14,0x3c,0x96,0xf4,0x72,0x39,0xd2,0xb5,0x0c,0xe2,
- 0xb4,0xb5,0xdc,0xe9,0xeb,0x8d,0x99,0x56,0x3d,0x66,0xcb,0x7c,0x9a,0x17,0xf6,0x71,
- 0xe1,0xdc,0x96,0x19,0xa2,0x6c,0x08,0xfe,0x4a,0xbb,0x4a,0x41,0xb5,0x33,0x48,0x9f,
- 0x2a,0xe0,0x87,0x39,0x9c,0x99,0x3f,0x9e,0xdf,0x03,0xdf,0x12,0xf5,0xa6,0xd3,0x5f,
- 0xb4,0xcb,0xea,0xff,0xec,0x8a,0x32,0x04,0x42,0x5d,0x01,0xb3,0xc0,0x2f,0xfb,0x94,
- 0xd7,0xa1,0x36,0x49,0xfd,0x9f,0xd9,0xf4,0xf5,0x09,0xd8,0x82,0x68,0x3f,0x55,0x46,
- 0x0a,0x7b,0x49,0xdb,0x84,0x58,0x54,0x89,0xc3,0x3c,0x50,0xa9,0x89,0x43,0x58,0xb1,
- 0x1a,0xe8,0x7f,0x9c,0x5e,0x4f,0xb0,0xfa,0x1f,0xce,0xa3,0x26,0xcf,0x6f,0xc2,0x1e,
- 0x31,0x27,0xb9,0xb8,0x2e,0x34,0x7b,0xaa,0x23,0x62,0x38,0xd5,0xff,0x07,0x4f,0x65,
- 0xf2,0xef,0x09,0x25,0xc6,0xd1,0xad,0x60,0x9c,0xb3,0x7b,0x20,0xde,0x52,0xee,0xc6,
- 0x6d,0x26,0x8b,0xb8,0xe6,0xa5,0x8a,0x4b,0x43,0x13,0x2d,0xe5,0xc4,0xff,0xf9,0x65,
- 0xfa,0x7a,0xdc,0x6f,0x08,0x7b,0xea,0x85,0xb3,0x07,0x8d,0xce,0x85,0x4f,0x3f,0x17,
- 0xdd,0x14,0x43,0x6b,0x75,0x81,0xca,0xd6,0x74,0xd9,0xeb,0x3e,0xac,0xd5,0x0a,0x27,
- 0x22,0xc0,0xf4,0xf5,0x2b,0x60,0xaa,0x1e,0x79,0x91,0x4c,0xb4,0x28,0xf4,0xbe,0x0d,
- 0x75,0xbc,0x70,0x92,0x37,0x4a,0xae,0x41,0xf9,0xac,0x7f,0x0c,0xf5,0x49,0x01,0xe1,
- 0x9f,0xe9,0xeb,0xbd,0xf0,0xe3,0x8e,0x43,0x5a,0x03,0x15,0x31,0x11,0xda,0x69,0x68,
- 0x19,0xdc,0x2a,0xcf,0x50,0x0e,0xc5,0x82,0xcb,0x37,0x6d,0xed,0xcc,0xb5,0x02,0x1d,
- 0x2e,0xcd,0x36,0x3f,0x57,0x14,0xcf,0x9d,0x9e,0xee,0x6a,0x8d,0x85,0x6d,0xcf,0x7f,
- 0x14,0xf1,0xf3,0x3a,0xf1,0xb5,0x90,0xba,0x25,0x77,0x8e,0xbe,0xce,0xa2,0x06,0xc9,
- 0xa1,0x34,0x5e,0x2a,0x51,0xca,0xd1,0x28,0x7f,0x86,0xf0,0x4f,0x0d,0x50,0x99,0xb6,
- 0x7a,0xc2,0x0a,0x53,0xa0,0x70,0x7c,0x7d,0x0d,0x5f,0x03,0x5f,0x6a,0xb9,0x66,0xd8,
- 0x9d,0x5b,0x68,0x4c,0xff,0x5e,0x40,0x20,0xc7,0x82,0x3d,0xc5,0xbb,0x9f,0xf0,0x56,
- 0x1e,0x56,0x53,0xb0,0xa7,0x92,0x68,0x3f,0x24,0x6c,0x23,0x21,0x13,0x7f,0xbe,0x13,
- 0x42,0xe1,0x88,0x5e,0xcf,0x6f,0x0b,0xab,0x7a,0x78,0x54,0x27,0x22,0xb4,0x44,0xb0,
- 0xa7,0x2a,0xaf,0x3b,0xec,0xd6,0xc3,0x08,0x8d,0x22,0xae,0x01,0xf9,0xaa,0x74,0x7d,
- 0xc7,0xd6,0x99,0x56,0xdb,0xe7,0x36,0xe2,0x03,0xc7,0x1e,0x45,0x6b,0x9e,0x67,0xb5,
- 0x35,0xc6,0x2f,0x48,0xa6,0x7e,0xd7,0xe7,0xbd,0x0d,0x8b,0x89,0xff,0x93,0x9e,0xb7,
- 0x58,0x92,0xf7,0xfb,0xe2,0x8d,0x0a,0x82,0x1c,0xe2,0x3f,0xbf,0xa6,0x57,0x2f,0x42,
- 0xfd,0x5c,0xa3,0x58,0xfc,0x9f,0xe3,0x72,0x8d,0x7b,0x23,0x2c,0xb0,0xe2,0x3f,0x99,
- 0x7e,0x89,0xf0,0xb2,0x20,0xfe,0x8f,0x93,0xf8,0xcf,0x59,0xfd,0x7f,0x0a,0x3a,0xe4,
- 0x52,0xe8,0x21,0xfc,0x13,0x0e,0x3f,0x90,0xe9,0xff,0x0c,0x5d,0x27,0x3a,0x0a,0x2d,
- 0xfe,0xcf,0x60,0xac,0x03,0xf4,0x16,0x5e,0xe8,0x56,0x80,0x8e,0x80,0xc6,0x5a,0x8c,
- 0x8e,0x54,0xff,0xe7,0xab,0x33,0xfd,0x7f,0x10,0xcf,0x4c,0x91,0x7c,0xa6,0xd8,0x3e,
- 0xa9,0x79,0xbb,0xe8,0x08,0xc7,0x1d,0xcb,0x51,0xff,0x58,0xa7,0x7e,0x9a,0x89,0xff,
- 0x28,0x3b,0xf5,0x43,0xda,0x54,0xb7,0x43,0x0b,0xff,0x3c,0x9a,0x82,0x3d,0x84,0x6f,
- 0x5b,0xe0,0x90,0xd6,0x6b,0xf1,0x7f,0xd2,0xf8,0xe4,0x30,0xec,0x64,0xe7,0xc5,0x41,
- 0xa3,0x2a,0x15,0xd6,0x78,0x71,0xd1,0x7c,0x6d,0x93,0x25,0x18,0x16,0x71,0x88,0x84,
- 0xf9,0x14,0xff,0x49,0x7f,0x5f,0xd0,0xc1,0x86,0xa7,0xd9,0xce,0x26,0xba,0x6e,0x28,
- 0x90,0x16,0xa8,0x4f,0x1d,0x19,0xc6,0x17,0x75,0x82,0xcc,0xd2,0xf7,0x87,0x9c,0x0a,
- 0xc4,0x3f,0x9e,0x0e,0xbe,0xdd,0xea,0xff,0xfc,0xdd,0x9d,0xfc,0x6d,0xca,0x7f,0x09,
- 0x3d,0xcc,0xdf,0x96,0x57,0xeb,0x47,0xa5,0xb2,0xef,0xf3,0x18,0x83,0xb4,0xfe,0xe1,
- 0x5d,0x54,0x26,0x50,0x6e,0x96,0x94,0x38,0x7c,0xd4,0x06,0x73,0xc4,0xeb,0x73,0xe4,
- 0xa2,0x05,0x8f,0x85,0xbc,0x75,0xac,0xc0,0xd1,0xa9,0xc5,0x50,0xff,0xd8,0xe6,0x77,
- 0x4b,0x30,0xcb,0x8b,0xf8,0x67,0xa8,0x75,0x35,0xd5,0x2f,0x50,0xe1,0xd8,0x2a,0x36,
- 0x4b,0x27,0x22,0x2b,0x0f,0x39,0x96,0x28,0x9d,0xf4,0x69,0x07,0x58,0xda,0xdc,0x21,
- 0x9c,0xba,0x8a,0xfd,0xbc,0xa3,0x66,0x74,0x56,0x9d,0xec,0x82,0x9f,0x53,0xfd,0x42,
- 0x9d,0xd5,0x08,0x68,0x41,0x72,0xd6,0x9d,0x32,0x35,0x02,0x5a,0x10,0x72,0x7e,0x47,
- 0xce,0x28,0x38,0x2f,0x3c,0x11,0x7b,0x27,0x35,0xff,0x2b,0x35,0x08,0x6c,0xc6,0x34,
- 0x10,0xba,0x4e,0x73,0x8d,0x29,0xef,0xc3,0x6c,0x03,0x4f,0x65,0xea,0xfd,0x9b,0x94,
- 0x9d,0xed,0xc7,0xc4,0x55,0x23,0x05,0x13,0xf2,0x25,0x7e,0x2c,0x7a,0xd3,0x6f,0x5c,
- 0x13,0xcd,0x97,0xe0,0x58,0x8a,0xf6,0x53,0x0b,0x9f,0x6c,0xa9,0x26,0x41,0xcb,0xc4,
- 0x5b,0xda,0xbf,0x2f,0xd6,0x6a,0x65,0x67,0xa8,0xfe,0xd4,0xbb,0xb6,0xb0,0xf4,0x5d,
- 0xf5,0xeb,0xe1,0xa1,0xf2,0xb5,0x25,0x95,0x03,0xaa,0xce,0x8a,0x63,0xfb,0x56,0xcf,
- 0xc3,0xef,0x39,0x9c,0x89,0xff,0xc4,0xc4,0x83,0xfd,0x08,0x72,0x06,0x1d,0xab,0xd8,
- 0xa4,0xd1,0x59,0x3c,0x2f,0x41,0x85,0xff,0x4d,0x56,0x44,0x48,0x63,0xc5,0xfc,0x59,
- 0x28,0x7d,0x15,0x8f,0xac,0x48,0xdf,0xdf,0x28,0x7e,0xd0,0xe8,0x8c,0xea,0x88,0x7f,
- 0x68,0xba,0x5c,0xd4,0x93,0x54,0x6b,0x68,0xde,0x77,0x87,0x45,0x04,0x72,0x95,0x1c,
- 0x10,0x5e,0x43,0x6d,0x70,0xb7,0x67,0xf2,0xe3,0xca,0x4f,0xb4,0x6e,0x63,0x4f,0x72,
- 0xf6,0x5e,0xf9,0x32,0x3b,0x62,0x54,0x9c,0xbd,0x6e,0x96,0xfc,0x55,0xed,0x88,0x89,
- 0xf6,0xa8,0x77,0xf1,0xfc,0x45,0x17,0xd0,0xc2,0xba,0x26,0xd4,0xa6,0x8c,0x7e,0x80,
- 0x5d,0xe1,0x8b,0x7a,0xdd,0x00,0x55,0xbb,0x77,0x5c,0xd4,0x83,0x27,0x5d,0xdf,0x97,
- 0x87,0xc4,0x45,0xbd,0x61,0xc0,0x55,0xf3,0xf2,0x10,0xbf,0xe8,0x09,0xde,0xe9,0xf2,
- 0x77,0xc6,0x6c,0xbf,0xd7,0x16,0x44,0x0b,0x08,0x7b,0x56,0x97,0x35,0xc0,0x1f,0x4b,
- 0x8b,0xcc,0x8d,0xe3,0x72,0x95,0xb1,0xc9,0x6c,0x4c,0x3a,0xc7,0xe5,0x60,0xde,0x61,
- 0xa8,0x1e,0x46,0x0b,0x08,0x69,0x7b,0xd7,0xaf,0x94,0x6b,0x8f,0x45,0xd1,0xec,0xf6,
- 0xa5,0xca,0xb8,0x3e,0x26,0x41,0xe9,0x86,0x82,0x64,0xeb,0x56,0x36,0x6f,0x0d,0xe2,
- 0x99,0x45,0x34,0x1f,0x6d,0x51,0x26,0xfe,0xb3,0x1c,0x1e,0x23,0x33,0xdd,0x6b,0x5d,
- 0x5f,0x91,0xcc,0x4b,0xfd,0x43,0x34,0xd3,0x28,0x88,0x3e,0xc5,0xf3,0x0b,0x8b,0xff,
- 0x93,0xde,0x0f,0x9a,0xc2,0x1e,0x86,0xd8,0x90,0xd7,0xdf,0x46,0x44,0xe8,0xa7,0x5f,
- 0x8e,0xf8,0xdd,0x4e,0xb6,0x07,0x7c,0xaf,0x54,0xf8,0x1d,0x0a,0x3c,0x2c,0x01,0xd5,
- 0x7f,0xb1,0xcc,0xbc,0x15,0x7e,0x7f,0x74,0x0a,0xff,0x54,0xc2,0x45,0xe5,0xbe,0xa4,
- 0xd5,0xff,0xf0,0xd7,0x2c,0x68,0x56,0x3d,0x8b,0xf8,0x67,0x2b,0x02,0x21,0xe2,0xff,
- 0xa4,0xf3,0x17,0x1d,0x33,0x27,0x17,0xa1,0x7d,0x3f,0x89,0x2f,0x75,0x2a,0x76,0x19,
- 0x3f,0x1c,0xaa,0x07,0xf4,0x1d,0x53,0x1a,0x13,0x79,0x17,0x8a,0x26,0xc8,0xf4,0x1b,
- 0xae,0xf1,0xe6,0xa4,0xad,0xff,0xcf,0x78,0x64,0x68,0xce,0x4d,0x92,0x4b,0x74,0xae,
- 0x8a,0x4f,0x7a,0xaa,0xf9,0x94,0x63,0x4b,0x8c,0x68,0x29,0x29,0x26,0xf5,0x46,0xe6,
- 0x3c,0x91,0x3d,0xff,0xc2,0xd9,0x4d,0x24,0xde,0x3e,0x47,0x95,0x76,0x40,0x90,0xe0,
- 0xf9,0x5d,0xeb,0xdf,0x0d,0x57,0x8d,0x74,0xbe,0xc0,0x3e,0x2c,0x3e,0x20,0xaa,0x92,
- 0x8e,0xed,0x2c,0x9e,0xd6,0xcf,0x3c,0xa7,0x9f,0x75,0xde,0xe8,0x6d,0x39,0x82,0xfe,
- 0xb8,0xd3,0xdf,0x14,0x53,0xd4,0x52,0x66,0xa2,0xbd,0x5b,0x09,0x7f,0x05,0xac,0x1f,
- 0x68,0x50,0x23,0xaf,0x65,0x81,0xb4,0xfe,0x34,0xa5,0x5d,0xe8,0x23,0x79,0x84,0x1a,
- 0x07,0x9f,0xb0,0x1a,0x0b,0x44,0xdd,0x63,0xda,0x01,0xbd,0x8a,0x80,0xe5,0x98,0x78,
- 0x1e,0xa8,0xab,0xa0,0xbd,0xfe,0xbd,0x78,0x87,0x48,0xe4,0xd4,0x97,0x2e,0xdd,0xfa,
- 0x79,0x8f,0xff,0xef,0x89,0x7f,0x82,0x8a,0xa5,0xe5,0x7c,0x47,0xf0,0x16,0x57,0xbc,
- 0x79,0xa4,0xd8,0x4a,0x64,0x44,0x65,0x3d,0xfd,0xbe,0xa7,0xe1,0xc5,0xe8,0x5b,0xd0,
- 0x98,0x70,0xbd,0xdd,0xfc,0xa2,0x66,0x35,0x5e,0x48,0x76,0x4e,0xc0,0x87,0x82,0x06,
- 0x07,0xcb,0x17,0x50,0xff,0xe0,0xfa,0x84,0xb2,0xf2,0x5f,0x1d,0xd4,0x7d,0xbd,0x15,
- 0x8d,0x54,0xd2,0x8a,0xbf,0xf9,0xe2,0x72,0xb9,0xf6,0x3a,0x02,0xa1,0x07,0x7b,0x2d,
- 0x7e,0x42,0xef,0x60,0x36,0xff,0x59,0xa9,0xe2,0x75,0xac,0x8a,0x8a,0x4c,0xa9,0x30,
- 0xdf,0xa3,0xf3,0x07,0xe5,0x15,0xb0,0xbe,0xfc,0xea,0x58,0x81,0x60,0x67,0xa0,0x4f,
- 0x58,0xf1,0x64,0xff,0x95,0xf5,0xef,0x51,0xd5,0x8b,0x9f,0x49,0x3c,0x84,0x30,0xd8,
- 0xc9,0xf8,0x92,0xcd,0x87,0xbc,0x31,0x87,0x92,0x9b,0xa0,0x08,0xaa,0xae,0x6a,0x4d,
- 0x99,0xfe,0xcf,0xf7,0x48,0x6e,0xb4,0xfe,0x95,0xcb,0xd5,0xbf,0x62,0xc7,0xa5,0x27,
- 0xe3,0xdb,0xde,0xe6,0x13,0xec,0x56,0x63,0x8d,0x98,0x77,0x8f,0xe3,0xdb,0x9e,0x5f,
- 0x89,0x7d,0x11,0x04,0x06,0x7f,0xc3,0x1a,0xec,0xfc,0x1f,0xfd,0x63,0xf0,0xbd,0xea,
- 0xaa,0x08,0x0f,0x85,0xe2,0x3d,0x7e,0x8a,0xa6,0x72,0xe3,0x38,0xd4,0x89,0x02,0xc7,
- 0xa7,0x0e,0x47,0xcf,0x82,0xbf,0x05,0xf7,0x8f,0x3d,0xfe,0x13,0x9b,0xea,0x7f,0x58,
- 0x34,0xee,0x7c,0x8b,0x68,0x3f,0x51,0x76,0xae,0x95,0x2a,0x9a,0x37,0x9d,0x9d,0x71,
- 0xce,0xf8,0x0e,0x7c,0x46,0xa8,0x89,0xec,0xfe,0x3f,0x14,0xbf,0x15,0xbe,0x78,0x11,
- 0xc5,0x7f,0x10,0x96,0x6f,0x55,0x0b,0xa8,0x63,0xa7,0x59,0x19,0xc7,0xfd,0x79,0x58,
- 0x58,0xf1,0x9f,0x4c,0xfc,0x36,0x51,0x28,0x28,0x9e,0x6c,0x70,0x9a,0x72,0x44,0xdd,
- 0x30,0xb8,0x9e,0xe2,0x3f,0x23,0xec,0xd1,0x05,0xc2,0xd3,0x79,0x46,0x77,0x52,0xbe,
- 0x37,0x5d,0xff,0x95,0xe2,0xff,0xf8,0xac,0x68,0x8f,0xb4,0xaf,0x43,0x4a,0xe6,0xad,
- 0x76,0x7f,0x51,0x59,0xdb,0xe1,0x4b,0xb6,0xd5,0x95,0xcc,0x26,0xfe,0xf3,0xdb,0xaa,
- 0xbd,0xff,0x73,0x6b,0xb1,0x09,0x5b,0x29,0xde,0x98,0x8b,0xaf,0x14,0x9f,0xa3,0xf3,
- 0x3c,0xc6,0x0c,0x21,0xd0,0xdb,0xe4,0xac,0x09,0x1d,0x5c,0xca,0xbf,0x0b,0xb6,0x2c,
- 0x1d,0x3f,0x21,0xfe,0xf3,0x0f,0x68,0x93,0x10,0xbe,0xbd,0x80,0xd6,0x1c,0xd1,0xe9,
- 0x0a,0xb4,0x52,0x41,0x51,0xb0,0x5d,0x26,0x57,0x3a,0x40,0x1d,0x81,0xea,0xd2,0xfb,
- 0x81,0xe2,0x3f,0x63,0x53,0xf1,0x55,0xb4,0x46,0x2f,0x40,0xc1,0xe0,0x8c,0xb8,0x63,
- 0xc4,0xb8,0xd9,0xe2,0x3f,0x4f,0xb7,0x9e,0xc8,0xf0,0x7f,0x22,0xda,0xab,0xe2,0x10,
- 0xd4,0x18,0x1b,0x4a,0xe4,0xb9,0x1d,0x87,0x20,0xb8,0x02,0xad,0xf9,0x13,0x70,0x3e,
- 0x86,0xf6,0xb1,0x58,0x56,0xf8,0x21,0xd4,0xe7,0xb8,0x3e,0x19,0xfb,0x22,0xe0,0x2b,
- 0x64,0x6d,0xdb,0x23,0x5b,0xaf,0xb9,0x15,0x9e,0x1a,0xaf,0x0a,0xf1,0xc7,0xa9,0x10,
- 0x3b,0x56,0x1b,0xca,0xdf,0x2a,0x2f,0x27,0x44,0x44,0xfc,0xe7,0x98,0x6d,0xfe,0x45,
- 0x39,0x8d,0xbd,0x68,0xe2,0xbf,0x68,0xb2,0xfa,0xd5,0x58,0x81,0x20,0x4e,0x89,0x1b,
- 0x22,0xae,0x18,0x1b,0x2d,0xbe,0x0a,0xcb,0x4d,0xd7,0x8f,0x70,0x65,0x0b,0x82,0x9c,
- 0x79,0x34,0xe4,0xa2,0x66,0xdb,0x13,0x29,0x20,0x74,0x62,0xdb,0xb3,0xd4,0xf6,0xf0,
- 0xde,0xf0,0x1d,0xd3,0x40,0x28,0xd3,0xff,0xa7,0x8f,0xeb,0xe1,0x56,0x84,0x3d,0xce,
- 0x30,0xd3,0xad,0xb6,0x87,0xf9,0xdb,0xe5,0x98,0x45,0x84,0x4e,0x4f,0xc4,0x70,0x5d,
- 0x11,0xff,0x91,0xce,0x7b,0x6b,0x8d,0xeb,0xb5,0xa9,0xb2,0x6e,0x32,0xf4,0x34,0x2f,
- 0xd5,0x1a,0x8c,0xcb,0xa6,0xe6,0x5f,0x64,0xea,0xbf,0xa8,0xfe,0xfd,0xd0,0x34,0xff,
- 0x99,0xe6,0x5f,0xe0,0xc6,0xab,0xd1,0x5e,0x2b,0x4f,0xe1,0x1f,0xab,0x35,0x22,0xc5,
- 0x7f,0xd2,0xf1,0x99,0x3a,0xed,0x34,0x58,0x41,0x1e,0xe2,0x3f,0xd3,0xfc,0x0b,0x9a,
- 0xbe,0x6d,0x24,0xc0,0x03,0x9c,0xe6,0x5f,0x3c,0x0d,0x9e,0x2e,0xc4,0x3f,0xb3,0x33,
- 0xf8,0x3c,0x67,0xb0,0xad,0x43,0x8b,0x99,0x75,0x85,0xd4,0xdf,0x0f,0x7a,0x5a,0x64,
- 0x14,0x18,0x1e,0x21,0x57,0xac,0xab,0xd5,0x12,0x8a,0x1c,0x6e,0x69,0x7a,0xfd,0x89,
- 0xff,0xb3,0xce,0xf0,0xb4,0x13,0xfe,0xe4,0xfb,0xa1,0xc2,0x2a,0xa3,0x83,0x75,0xcc,
- 0x93,0x42,0xa4,0x4f,0xa1,0x10,0x79,0xc8,0xce,0xff,0xa1,0xf8,0x8f,0x08,0xb4,0x4f,
- 0xb5,0x75,0xaa,0x37,0x5c,0xd1,0x69,0xfc,0x13,0x9d,0xea,0x88,0xa8,0x6c,0x2d,0xca,
- 0xcc,0x87,0x7d,0x1a,0xf7,0xfa,0xd9,0x2c,0xda,0xb3,0xbb,0x73,0x44,0x7b,0x8f,0xa7,
- 0x23,0x42,0x41,0x63,0x53,0x49,0xd6,0xfc,0x0b,0xf2,0x47,0xfc,0x34,0xe6,0x9b,0x5e,
- 0x93,0x80,0x50,0x11,0x51,0x75,0x6a,0x60,0x16,0x1e,0x91,0x86,0x17,0xf9,0xb5,0x25,
- 0xa2,0xc8,0x56,0xff,0xae,0x78,0xe1,0x8c,0xf4,0x77,0x51,0x75,0x94,0x55,0x48,0x0f,
- 0x76,0x78,0x62,0x3c,0xe9,0xaa,0x28,0x7d,0x90,0x7b,0x62,0xd7,0x8e,0x32,0x07,0x6e,
- 0xec,0xda,0xd8,0xc6,0x18,0x8b,0xa4,0xf3,0x11,0xde,0x35,0x2d,0xce,0x1d,0x4c,0xdf,
- 0xaa,0x96,0x20,0xec,0xe9,0x6c,0x53,0x96,0xb7,0x96,0xb3,0x16,0xe8,0x5c,0x54,0x6e,
- 0xb4,0xce,0xf7,0x28,0x8b,0x3a,0x84,0xbe,0xfc,0x6a,0x7f,0x41,0x86,0xff,0x5c,0x2a,
- 0xcd,0xd2,0x77,0xb0,0x79,0x26,0x9a,0xf5,0xd9,0x14,0x08,0x4a,0x4e,0x0f,0x36,0x1a,
- 0xc8,0x5b,0xe5,0xb8,0x8b,0xad,0xe5,0x73,0xfa,0xd5,0x55,0x6e,0x7b,0xff,0x1f,0x9a,
- 0x0f,0x5b,0x4a,0xf5,0x5f,0x05,0x7c,0xad,0xb8,0x81,0xbc,0x95,0x2f,0x02,0x09,0xad,
- 0x75,0x65,0x34,0x31,0xd6,0x7f,0xba,0xa0,0xae,0xe8,0x6f,0x33,0xf5,0x5f,0x9f,0xde,
- 0x05,0xef,0x6b,0xa9,0x68,0x0f,0xba,0x41,0x56,0xb4,0x67,0x4c,0x99,0xaa,0x30,0xdd,
- 0x05,0xef,0xa4,0x5a,0x23,0xb2,0xcd,0xd3,0xeb,0x33,0xdd,0xff,0xc7,0x39,0x21,0xbf,
- 0x09,0xc7,0x3a,0x1a,0x93,0x4b,0x57,0xcb,0x41,0xc4,0x57,0x37,0x25,0x5d,0xfb,0xa7,
- 0x89,0xd0,0xfb,0x1f,0xb6,0xc7,0x7f,0x52,0xf5,0x5c,0x34,0xc6,0x42,0xef,0x9c,0x2a,
- 0x44,0xe5,0x7f,0xf4,0x94,0x26,0x0a,0xea,0xdc,0xa7,0xa8,0xd5,0xcf,0xab,0xa8,0x4f,
- 0x2a,0xd2,0xf9,0xb5,0x28,0x50,0xbd,0x98,0x8f,0x9a,0x5a,0xa7,0xd3,0x7c,0xb3,0x60,
- 0x1f,0x9b,0xd7,0xdf,0x7d,0x2f,0x3b,0xa5,0x59,0x44,0xe8,0x00,0xae,0xd8,0xf4,0xfa,
- 0x87,0x8a,0x87,0x5e,0xd9,0xf3,0x39,0xbc,0xbe,0x2e,0xf7,0x18,0x74,0xfa,0x7d,0x63,
- 0x6a,0x35,0x2b,0x80,0x1d,0x5b,0xac,0xb6,0x63,0x47,0x87,0xf6,0x74,0xf8,0xcc,0xee,
- 0x67,0x2b,0xec,0xf1,0x9f,0x8d,0x70,0xb9,0xbd,0x61,0xc5,0xd7,0xea,0x8a,0x3e,0x30,
- 0xd0,0x51,0xfd,0xc5,0x75,0x5b,0xd4,0x2a,0xfd,0x00,0xac,0x1e,0x75,0x69,0x45,0x1f,
- 0xc0,0xc5,0xc8,0x77,0xcc,0xa5,0xe7,0xca,0x32,0xf1,0x9f,0x28,0xa2,0x41,0xb4,0x47,
- 0x03,0x33,0xe3,0x0f,0x0f,0xa5,0xc2,0x62,0x35,0xd4,0xf6,0x99,0x07,0x07,0x1e,0x7c,
- 0xa8,0x13,0x81,0x22,0x0f,0xbe,0x8c,0xd0,0x28,0x13,0xff,0x79,0x48,0x7b,0x11,0xde,
- 0x92,0xaa,0x8d,0xfc,0xf1,0xb2,0xfb,0x11,0x16,0x2e,0x18,0x5d,0x32,0x2e,0xcf,0x36,
- 0x7e,0xce,0xaa,0x07,0x9d,0xe3,0x5f,0x9a,0x25,0xfd,0x1c,0xf1,0x0f,0x02,0xa1,0x4c,
- 0xfc,0xa7,0xbf,0xeb,0x6b,0x14,0xed,0xa1,0xf9,0x56,0x3e,0xad,0x3b,0x51,0x91,0xe4,
- 0x07,0x99,0x8f,0x77,0x27,0x3c,0x49,0x6f,0x9f,0x83,0x92,0xa2,0x3a,0x22,0x10,0xb6,
- 0x2d,0x53,0xff,0xa5,0xf8,0x5a,0xa9,0x3a,0x3b,0x6f,0x37,0x5b,0x29,0xba,0x35,0x04,
- 0x42,0x54,0xf6,0xd5,0x4d,0xfc,0xe7,0xbe,0xb0,0x4f,0x3c,0xa3,0x53,0xe0,0xc8,0x93,
- 0xc5,0x7f,0x56,0x1e,0x06,0x7d,0x6a,0xdb,0x68,0x5e,0x22,0xbe,0x3a,0x2d,0xfe,0x73,
- 0x84,0x26,0x62,0x3c,0x4c,0x11,0xa4,0x40,0x6e,0x46,0xff,0x08,0xbe,0x12,0xad,0x49,
- 0xaf,0x99,0xbf,0x5b,0x5e,0x89,0xf8,0xd0,0xca,0xb6,0xf8,0x58,0x37,0x21,0xa2,0xe7,
- 0x9a,0x2b,0xf9,0xfb,0x78,0xca,0x19,0x2f,0xb3,0xc7,0x7f,0x26,0x53,0x24,0xe7,0x8f,
- 0xa6,0x69,0xcf,0xe3,0xd3,0xc2,0xc7,0x9d,0x93,0xb1,0xa9,0xd2,0xb0,0x4c,0xfc,0xe7,
- 0xdf,0x34,0x8f,0x6f,0x96,0x09,0xb6,0xbf,0x7f,0xe7,0x3c,0x3e,0xde,0x85,0x7a,0x29,
- 0x62,0xa0,0xa7,0xf6,0x3f,0x17,0xe0,0xdf,0x77,0xff,0xec,0xe7,0x99,0x1a,0x8a,0xe7,
- 0x34,0xaf,0x14,0xac,0x53,0x43,0xff,0xdf,0x9a,0x87,0xe8,0x34,0xaf,0x14,0xfe,0xe5,
- 0xbf,0xff,0x1f,0x98,0x87,0x68,0xdd,0x76,0x4a,0xa0,0x23,0x5a,0xc6,0x7f,0x4c,0xdd,
- 0x7f,0x08,0x6f,0x32,0xcb,0xfc,0x9f,0xde,0x3f,0xeb,0xf7,0x62,0x14,0x84,0xc3,0x65,
- 0xd3,0xfe,0xe7,0x2b,0x9a,0xfd,0xfc,0x82,0x6e,0x02,0xa9,0xe2,0xb0,0x7f,0x79,0xfd,
- 0x6d,0xd7,0xa7,0xe6,0x21,0x0e,0xfd,0xeb,0xcb,0xee,0xec,0xff,0xcf,0x79,0x88,0xff,
- 0x41,0xe6,0x0f,0xfe,0xc7,0xbb,0x9e,0xad,0xf5,0xff,0x3f,0xfa,0x3d,0xfe,0xbb,0xf5,
- 0x21,0x7e,0x86,0xff,0xef,0x9c,0x0f,0xfb,0x3f,0xff,0x21,0xfe,0x77,0xd6,0x3f,0xa3,
- 0x9d,0xc4,0xbf,0x59,0x1f,0xa6,0x8c,0xce,0x94,0xf6,0xfb,0xcf,0xf9,0xb0,0xb6,0xbf,
- 0xff,0xd4,0x87,0xff,0x7f,0x7e,0xfd,0x9a,0x45,0xf2,0x2a,0xe3,0x94,0xb6,0x10,0xf2,
- 0xfb,0x2d,0xe1,0x7f,0x14,0xe7,0xaf,0x91,0xbf,0xbe,0xe8,0x2e,0x6d,0x61,0x71,0xfe,
- 0x2b,0x33,0xbe,0x6e,0xcc,0x6a,0xff,0x94,0x92,0x6f,0x2e,0x48,0x5f,0x3f,0xb8,0x24,
- 0xe7,0xeb,0xd2,0x5d,0xc6,0x5f,0x68,0xc6,0x60,0x4a,0x28,0x29,0x4e,0x09,0xcd,0xda,
- 0xcc,0x41,0x29,0x75,0x6a,0xa6,0x59,0x98,0xce,0x50,0x75,0x38,0x24,0x5d,0xb4,0xea,
- 0x6e,0x0e,0xe1,0x29,0x41,0x79,0xc0,0x12,0x3e,0x45,0x42,0xa9,0x68,0x0d,0xe1,0x91,
- 0x4c,0x78,0x1b,0xb1,0x83,0x14,0x82,0x3b,0xe1,0x2a,0xf8,0x9e,0x20,0x41,0xfa,0x82,
- 0x96,0x23,0xa4,0xbb,0xe1,0x4e,0x76,0x15,0x0a,0x39,0xa1,0x8e,0x3b,0xe1,0x0b,0x90,
- 0x63,0xbb,0x7e,0xf0,0xce,0x9c,0x5a,0xe9,0x36,0xf1,0xf9,0x45,0x0a,0xcf,0xb9,0x57,
- 0xba,0x4b,0xfc,0x85,0x3e,0xf3,0x70,0xce,0xbd,0x1d,0x28,0x78,0x67,0x26,0xa6,0x8f,
- 0x98,0x0b,0xd2,0xcf,0xb3,0xe6,0xb3,0x86,0xae,0x95,0x28,0x2c,0x07,0x3f,0xd6,0x10,
- 0x94,0x40,0x2e,0x48,0xe2,0x4f,0x85,0xcc,0xfb,0xbe,0x62,0x28,0xf7,0x48,0x5c,0xdc,
- 0xaa,0xc3,0x06,0xc5,0x23,0x71,0xb3,0x49,0xd7,0x22,0x4a,0x29,0x1e,0x69,0xf2,0x6b,
- 0x61,0x45,0x97,0xa8,0x1b,0xbe,0x66,0xbf,0xbe,0x29,0x67,0x59,0xc7,0x1d,0xb1,0x3f,
- 0xf7,0x2a,0x8e,0x9c,0xa6,0x8e,0xf6,0x78,0xb1,0x77,0xa6,0x23,0xc7,0xe8,0x68,0x8f,
- 0xdd,0xe1,0x9d,0x99,0x2b,0x19,0xa2,0x5d,0x2f,0x6e,0x98,0x09,0x99,0xe7,0x11,0xc5,
- 0xd2,0x0c,0xf8,0x73,0x73,0x66,0xbb,0x32,0x4b,0xfa,0x0b,0x14,0x0a,0x57,0xe5,0xdc,
- 0x25,0x7d,0x1e,0xee,0x30,0x67,0xd6,0xe5,0x7c,0x51,0x92,0x2d,0x41,0x49,0x87,0x7f,
- 0xf0,0x7a,0x5d,0x10,0xf7,0x47,0x11,0xa8,0xfc,0x50,0xf3,0x85,0x24,0x52,0x81,0xcd,
- 0x02,0x75,0xa1,0x26,0x29,0xa8,0x1a,0x34,0xea,0x95,0xb5,0x28,0x73,0xfd,0x2b,0x2b,
- 0x18,0x31,0x1d,0x74,0x41,0x49,0x33,0x14,0x4a,0x05,0xd7,0xa7,0x8e,0x70,0x3d,0x77,
- 0x4a,0x58,0x94,0x79,0x9e,0x57,0xda,0xa5,0x72,0xe9,0xbf,0xc0,0x17,0x0c,0x25,0x9a,
- 0xb3,0x1c,0x85,0xab,0x8c,0x99,0xd1,0x9c,0x90,0x74,0x12,0x97,0x1d,0x05,0x1d,0x85,
- 0x6f,0xc2,0xcc,0xac,0xf5,0x91,0x69,0x82,0xd6,0x55,0xf8,0x44,0x96,0xf0,0x4d,0xc8,
- 0x17,0x45,0xf7,0xa0,0xb0,0x10,0xf2,0xc4,0x8c,0x7b,0xe0,0x4e,0x71,0x15,0x1e,0xb1,
- 0xaf,0x8f,0xe2,0xef,0x70,0xea,0x32,0xe7,0x61,0x4b,0x68,0xe6,0xda,0x80,0xe2,0x17,
- 0x4e,0xfd,0x56,0x14,0xd8,0xd4,0x11,0xdb,0xfe,0x11,0x90,0x4a,0x81,0x90,0x34,0x25,
- 0x98,0x56,0x75,0x16,0xa3,0x64,0xa3,0x5f,0x99,0x3a,0x92,0x59,0x1f,0x26,0xf9,0xc5,
- 0x12,0xbd,0x88,0x2b,0x61,0x12,0x4a,0x51,0x18,0x90,0xfc,0xfd,0xd6,0x91,0x23,0x24,
- 0xf8,0x3f,0xcf,0x15,0xd3,0xb6,0x3e,0x4d,0xb4,0xa9,0xf4,0x2f,0x80,0x12,0xb6,0x84,
- 0xab,0xf8,0x4c,0x14,0xfa,0xf1,0x08,0x9f,0xd9,0x99,0xa3,0xf7,0xdf,0xe9,0x47,0x41,
- 0x64,0x9e,0xe7,0x95,0x26,0x6b,0xe5,0xd2,0x4b,0x38,0x25,0x38,0x33,0x82,0xcc,0xc1,
- 0xfe,0xbe,0xcb,0x94,0x50,0x47,0x89,0x7e,0x6b,0x2b,0x6c,0x46,0xe1,0xd3,0xb8,0xe4,
- 0x85,0x61,0x65,0x39,0xbe,0xe6,0xad,0xad,0x85,0x9b,0x15,0x9d,0xde,0xb7,0xb5,0x50,
- 0x14,0x66,0xae,0x0f,0xe5,0xdc,0x29,0x5d,0x05,0x7f,0x2e,0x14,0x1d,0x05,0x5c,0x74,
- 0x31,0x13,0x8f,0xc0,0xad,0x78,0x64,0x66,0x48,0xe2,0x28,0x14,0x8a,0x99,0x86,0x6d,
- 0xff,0xe4,0x4a,0x9f,0x13,0x77,0x85,0x3e,0xb5,0x55,0xca,0x95,0x16,0x89,0xf6,0xd0,
- 0x1d,0x25,0x39,0x29,0xa1,0xd8,0x26,0xa0,0x59,0x4a,0x5f,0xef,0xb6,0xcc,0x88,0xd1,
- 0x0a,0x6e,0x09,0xc4,0x22,0x5d,0xe3,0x0a,0x93,0x14,0x81,0x1f,0x45,0xab,0xe2,0x2e,
- 0x84,0x94,0x60,0x4b,0xcf,0xbe,0x72,0x2b,0x2b,0x14,0x5d,0xa1,0xbb,0x4b,0x4a,0x6e,
- 0x95,0x3f,0x27,0x4e,0x84,0x6e,0x28,0xc9,0x27,0xe1,0x0e,0x4b,0x98,0x91,0x3a,0xe2,
- 0xb4,0x3d,0xcf,0x2b,0xb7,0x4a,0x5f,0xef,0xb8,0x2b,0xf4,0x17,0xda,0xb5,0xaf,0xe6,
- 0x90,0xf0,0xa9,0x92,0x99,0x96,0x80,0x8a,0xc2,0x12,0x4e,0x85,0xfe,0x47,0xc9,0x4c,
- 0xdb,0xfb,0xde,0x72,0xab,0xfc,0x75,0xf1,0x78,0x68,0x61,0x49,0xce,0xab,0x28,0x9c,
- 0x0a,0xfd,0x45,0x49,0x3e,0x09,0x77,0xe1,0x91,0xfc,0x57,0xa5,0xbb,0xe9,0xd5,0x4a,
- 0xf2,0x4d,0xfb,0xf5,0xd6,0x6d,0xff,0xe2,0x4e,0xc9,0xba,0xed,0xdd,0x53,0xf7,0x57,
- 0x42,0x74,0x7f,0x69,0x41,0x87,0x33,0xd4,0x5c,0x52,0x6c,0xdb,0x3f,0xc0,0xa6,0xd5,
- 0x4e,0x4a,0xff,0x2c,0x4b,0x09,0x77,0x59,0x47,0x72,0x48,0xf8,0x14,0xcf,0x11,0x99,
- 0xfd,0x03,0xb9,0xf8,0x1f,0xbd,0x33,0x74,0x55,0x49,0xf1,0x03,0x53,0x42,0x0e,0x0a,
- 0x1d,0x36,0xe1,0x0b,0x25,0xf6,0xeb,0x6f,0x31,0xe6,0xf8,0xa5,0x25,0xf0,0x79,0xdc,
- 0xff,0x39,0xab,0xa4,0xbb,0xe0,0x53,0x30,0xd3,0xb4,0x84,0xbf,0x40,0x41,0xf2,0x4f,
- 0x09,0x99,0xe7,0xb9,0xa5,0x89,0x72,0xff,0x5e,0x56,0x80,0xbb,0x25,0x24,0x4a,0x70,
- 0x3f,0x48,0x19,0x41,0xd1,0x53,0x82,0x7d,0x7d,0xda,0xba,0x42,0xdb,0x70,0xff,0x38,
- 0x00,0xcf,0x76,0xd0,0x7e,0xd3,0x52,0x42,0x13,0x09,0xa1,0x94,0x60,0xbf,0x7e,0x51,
- 0x4e,0xbb,0x74,0x87,0xfb,0xcf,0xa1,0x8b,0x29,0xa8,0x76,0xf4,0x62,0x3e,0x93,0xe5,
- 0x18,0xe2,0x73,0xfa,0x1d,0x7c,0xa6,0x9c,0xd3,0x2e,0xac,0x23,0x60,0x5b,0x1f,0x55,
- 0x6a,0x4f,0xdc,0xe1,0x9f,0xc9,0x95,0x66,0xa9,0xdd,0xbc,0x43,0xff,0x73,0x67,0x8e,
- 0x25,0xf8,0x67,0x3a,0x73,0x9a,0x52,0x02,0xcf,0x31,0x6c,0xeb,0x03,0x86,0xa1,0x69,
- 0x8a,0x22,0x69,0x1c,0x9a,0x50,0xdb,0x90,0x0a,0x9c,0x16,0x20,0x23,0x64,0x9e,0xa7,
- 0x99,0x31,0x21,0x62,0x7a,0xeb,0xd6,0x54,0xc7,0x0e,0xe0,0x9c,0x84,0x0e,0x2f,0x75,
- 0xe0,0x26,0x4a,0x96,0x8e,0x82,0xed,0x79,0x6e,0x31,0xa4,0x90,0x84,0xfb,0x5d,0x9e,
- 0x89,0xda,0x5e,0x22,0x6d,0x6f,0x09,0x27,0x15,0xda,0xf8,0x96,0x22,0x22,0xfd,0x63,
- 0xfb,0x5e,0x0c,0xcb,0x5e,0xd4,0xca,0x1b,0x85,0x4c,0xfa,0x87,0x46,0xe9,0xa2,0x70,
- 0x97,0xf2,0x4d,0xab,0x83,0x02,0xd0,0x2f,0x92,0x6f,0xff,0x7d,0x25,0x4b,0x8d,0x34,
- 0x43,0x44,0x28,0x7e,0x89,0xb4,0x87,0x66,0xa2,0x50,0xc2,0x9a,0x51,0x00,0x5d,0x2a,
- 0xc1,0x2f,0x0c,0x85,0xcc,0x9f,0x92,0x52,0x3b,0x06,0xda,0x8b,0x05,0xe0,0x24,0x12,
- 0xc3,0x09,0xa8,0x81,0x3c,0x3a,0x72,0xc2,0xb0,0xd8,0x06,0x59,0xfa,0x07,0x72,0xa4,
- 0x05,0xc6,0x92,0xf6,0xa2,0x68,0xd7,0xcf,0x49,0x08,0xc9,0xb3,0x94,0x57,0xa4,0x05,
- 0x8b,0x6e,0x6f,0x2f,0x2a,0x56,0x06,0xa5,0xd2,0x45,0x4b,0xda,0x3f,0xaf,0x29,0xf6,
- 0xeb,0xaf,0xcf,0x59,0xd1,0xff,0x97,0xfe,0x2f,0x44,0x94,0x6d,0x29,0xe1,0xf1,0x99,
- 0x3b,0x48,0xd0,0xaf,0xda,0x30,0x73,0x87,0x64,0x1d,0xd9,0x30,0xd3,0xfe,0xfc,0x40,
- 0xb1,0x60,0xc1,0x8c,0x69,0x78,0x6b,0xc0,0x16,0xea,0x7e,0x02,0xcd,0x06,0x7c,0x4f,
- 0x99,0x7a,0x9e,0xac,0xeb,0x97,0x87,0x0a,0x4b,0x94,0x5b,0x25,0x88,0xa0,0x21,0x2b,
- 0x41,0x43,0x56,0x88,0x42,0x61,0x49,0x57,0x73,0x69,0xa1,0x68,0x21,0xe1,0x56,0x14,
- 0xec,0xef,0xdb,0xd2,0x5e,0x78,0x87,0xf2,0xe7,0x68,0x4c,0x72,0xda,0x3f,0x47,0xc2,
- 0xcc,0x45,0xb7,0xb4,0xc3,0x1d,0xca,0xe7,0x60,0xa6,0x71,0x4b,0xbb,0x76,0x87,0x32,
- 0x53,0x9a,0x69,0xdf,0x0f,0xbc,0x94,0x71,0x23,0xac,0xe9,0x5d,0xbc,0xb4,0x89,0xb7,
- 0x87,0x53,0xfb,0xc1,0xab,0x85,0x8b,0xf5,0x1c,0x7e,0xf7,0xb2,0x92,0x76,0x14,0x3a,
- 0xec,0x8f,0x43,0xe1,0x69,0x88,0x69,0x68,0x1f,0x25,0x26,0x8c,0x6c,0x01,0x50,0xd8,
- 0x8e,0x82,0xfd,0x7a,0x67,0x6e,0x91,0xd4,0x65,0xce,0xf1,0x97,0x38,0xe5,0x22,0x38,
- 0x61,0xce,0xf4,0xe7,0x2f,0x91,0x3f,0x8f,0xc2,0x0d,0x28,0xe4,0x16,0xa5,0x04,0xfb,
- 0xf3,0xe4,0xe5,0xdc,0xbb,0xe8,0xae,0x28,0x1a,0xfd,0x84,0x74,0x8f,0x74,0x57,0x98,
- 0x04,0x84,0x01,0xa7,0x08,0x06,0x24,0x6e,0x21,0xe1,0x7f,0x78,0x66,0xda,0xd7,0xff,
- 0x9a,0xb6,0xa6,0x5f,0x45,0x9f,0xdd,0x59,0x99,0xa7,0x92,0xb0,0x77,0x67,0xe5,0x67,
- 0xd5,0x65,0x6d,0xc3,0x9b,0x9f,0x2d,0xff,0x49,0x9e,0xda,0xd4,0x76,0x82,0x84,0x79,
- 0xf6,0xe7,0xb9,0xe9,0xbb,0xb7,0x5f,0xfe,0xe5,0x4b,0xe7,0x3e,0x38,0x6f,0x09,0xfb,
- 0xce,0xfd,0xee,0xfc,0x4d,0x97,0x96,0xbe,0xf5,0xf0,0xe5,0x91,0x4f,0xce,0xdf,0xf4,
- 0x9d,0xa5,0x97,0x49,0xf8,0x04,0xfe,0x37,0xfe,0x82,0x8f,0xe6,0xcd,0x6d,0xfa,0x6c,
- 0x74,0xf3,0xf2,0xc6,0xf3,0xae,0x1f,0x37,0x5f,0x8e,0x5e,0xf8,0x87,0xe0,0xff,0xf9,
- 0xd9,0xef,0x1e,0xff,0x6c,0xf4,0x91,0x4f,0x1a,0x2f,0x7f,0xf6,0xfa,0xe3,0x9f,0x3d,
- 0xf7,0xc8,0x88,0xfd,0xfa,0xc6,0xef,0xdc,0xfe,0xd6,0xc3,0xfb,0x46,0x3e,0x38,0xdf,
- 0x38,0xf5,0x18,0x9f,0x34,0x5a,0x0f,0x36,0xf2,0x3b,0xbc,0xfe,0xf6,0xb7,0xac,0x27,
- 0xb4,0x5f,0x5f,0x36,0xbb,0xf5,0xad,0xcd,0x0b,0x47,0x36,0xdc,0x7d,0x13,0xfd,0xc3,
- 0xdd,0xf8,0x0f,0x51,0x78,0xb3,0x68,0x5f,0xd7,0x07,0xe7,0xcb,0x4a,0x2c,0x61,0xec,
- 0x5b,0x59,0x0f,0x14,0x5e,0x65,0x3c,0xae,0x5d,0x5f,0xb2,0xce,0x2c,0x43,0x01,0xae,
- 0x57,0xf2,0xfa,0xe1,0xeb,0x78,0xe4,0xbf,0xcd,0xca,0xfb,0x39,0x43,0xa1,0xfd,0x7a,
- 0x45,0xb2,0xaf,0xa7,0x32,0x85,0x0f,0x61,0x30,0x67,0x81,0x25,0xfc,0xf9,0x14,0x50,
- 0x44,0x7c,0x98,0x32,0x04,0x5a,0x8e,0xfd,0xfa,0x29,0xfd,0x5c,0x82,0xf8,0x30,0x34,
- 0xad,0xa8,0x4b,0xad,0x23,0xca,0x7a,0x3a,0x85,0xf8,0xb0,0x58,0x64,0x3d,0x50,0x0a,
- 0xa4,0x75,0x64,0xd0,0x9a,0x42,0xc2,0xad,0x20,0x6d,0x80,0xbb,0xad,0x23,0x59,0xfb,
- 0x39,0xaf,0xe5,0xde,0x3c,0x67,0xb8,0x59,0x16,0x91,0xe5,0x01,0x69,0x56,0xd7,0x9f,
- 0xe9,0x85,0x09,0xe5,0x5e,0x69,0x96,0x98,0xa1,0x17,0x9a,0x96,0x80,0x47,0xcc,0xec,
- 0xfb,0x6b,0xbc,0x98,0x49,0xd0,0x81,0xa8,0xab,0x44,0xfb,0x13,0x7c,0xa8,0x5b,0x42,
- 0xe6,0x8f,0x23,0x2c,0xc4,0xcf,0xca,0x40,0x7c,0x48,0x40,0x11,0xd1,0x60,0x54,0xb9,
- 0xbe,0x03,0xbf,0xd0,0x90,0xb6,0x55,0x99,0x2b,0xe5,0x89,0xa6,0xf6,0x2c,0x1f,0xed,
- 0x33,0x4a,0x5b,0xc7,0x55,0xf1,0x5b,0x84,0x56,0xa1,0xfc,0x65,0x87,0x3b,0xd6,0xd2,
- 0x53,0xe8,0x81,0x36,0x14,0x94,0xbe,0xc2,0xb9,0x0a,0x09,0x2d,0x11,0x9b,0xfe,0xe4,
- 0x66,0x1e,0x14,0x41,0xb1,0x99,0x43,0xb4,0x72,0x19,0x05,0x48,0x59,0x1b,0x3c,0x52,
- 0x27,0xdd,0x9e,0x12,0xfc,0x92,0x91,0xf9,0x07,0xe8,0xaa,0xfe,0x5f,0xed,0x9d,0x41,
- 0x6c,0xdb,0x54,0x18,0xc7,0xbf,0x97,0xbc,0x66,0x0e,0x4a,0x2b,0x7b,0xca,0x84,0x03,
- 0x55,0x95,0x8c,0x52,0x76,0x74,0x24,0x2a,0x15,0x71,0xd8,0x4b,0x53,0x27,0x61,0x52,
- 0xc1,0x50,0x40,0x13,0x27,0x17,0xf5,0x30,0x26,0x21,0xa5,0x08,0xa4,0x9d,0x90,0x53,
- 0x02,0x2a,0x1c,0x50,0x56,0x81,0x68,0x6f,0x39,0x4c,0x70,0xe2,0xc8,0x3d,0x2b,0x62,
- 0x62,0xb7,0x1d,0xa2,0x71,0xa4,0x93,0xb8,0x70,0x47,0x42,0x1c,0xc6,0xf8,0x3e,0x3f,
- 0xc7,0x7e,0xcd,0xa6,0x48,0xdb,0x01,0x24,0xf4,0xfd,0x4f,0x7f,0x3d,0xbf,0xba,0xcf,
- 0xf6,0xf3,0xdf,0xbf,0xcf,0x96,0x1d,0x9b,0x2a,0xe3,0x00,0xe8,0xa3,0xd0,0x54,0x89,
- 0x62,0xa4,0xf9,0xc4,0x87,0x81,0x28,0xc3,0x06,0x38,0x20,0xaf,0x89,0xf4,0xf6,0x39,
- 0xae,0x5f,0x57,0xca,0xd5,0xaa,0xae,0x54,0xed,0xb8,0xc0,0x94,0x16,0x21,0xc2,0xbe,
- 0x7d,0x5e,0x5a,0xbd,0xf8,0xe1,0xbe,0xd9,0x5f,0x86,0x3a,0x24,0xa3,0x38,0x2d,0xd7,
- 0x71,0x6f,0x17,0x74,0x8b,0x13,0x25,0x8b,0xea,0x51,0xda,0xdf,0x16,0x2a,0x1f,0xc2,
- 0x21,0xac,0x54,0x69,0x8f,0xe0,0x6e,0x5c,0x81,0xe2,0x3e,0xec,0x50,0x8b,0x2a,0xd2,
- 0x37,0x84,0x8e,0x70,0x11,0x5e,0x01,0x27,0x52,0xfe,0xba,0xec,0x12,0x14,0x5d,0xc1,
- 0xeb,0x1d,0x61,0xa1,0xe6,0xc3,0xcf,0xc9,0x0c,0x8e,0x97,0x35,0x1f,0x0e,0x46,0xe9,
- 0xf3,0x74,0xda,0xf2,0xea,0x34,0x1f,0xaa,0x87,0x4c,0x5a,0x91,0x2b,0xdc,0x4a,0x4f,
- 0x43,0xda,0xde,0xc4,0xfc,0x28,0x13,0x73,0xac,0x5b,0x4a,0xf6,0x28,0x7d,0x7e,0xa4,
- 0x7c,0xa5,0xf9,0x8d,0x1e,0x05,0xa0,0x81,0x96,0xe5,0x7c,0x42,0x9b,0x59,0xd5,0xdb,
- 0x4b,0x8b,0xa4,0x93,0xf1,0xa1,0x12,0x8f,0xe2,0x43,0x6f,0xaa,0x25,0x1b,0x4f,0x20,
- 0xd6,0xf5,0x4a,0x70,0x69,0x62,0x1c,0x02,0xe3,0xc4,0xe8,0x16,0x7b,0x94,0xce,0x08,
- 0x1a,0x0f,0x1d,0x48,0x1f,0x92,0x23,0xea,0x83,0x83,0x65,0x40,0x62,0x92,0x16,0x58,
- 0x4f,0xc7,0xd3,0xc1,0x69,0xd0,0x88,0xca,0xe1,0x9c,0x2b,0x0a,0xb0,0x1b,0xd9,0xa1,
- 0x24,0xd3,0x98,0x32,0x20,0xd2,0xf7,0x49,0xf1,0x7c,0x04,0xfd,0x82,0x01,0xdd,0xc8,
- 0x55,0x31,0x1f,0x6a,0x2c,0x24,0x50,0x4c,0x4c,0x36,0xdd,0x94,0xff,0x36,0xd2,0x60,
- 0x3f,0xac,0xe1,0x95,0x1a,0x41,0xf1,0xad,0x09,0x1f,0x8e,0x4f,0x19,0x95,0x5d,0xdf,
- 0x45,0x4b,0xee,0xf6,0x16,0xc3,0xb6,0xed,0xdc,0xd2,0xc6,0x75,0x6e,0x15,0x3e,0x12,
- 0x68,0x02,0x67,0x2c,0x77,0xc5,0xa2,0x6a,0x5f,0xae,0x8c,0xb2,0xf5,0x8b,0x16,0x10,
- 0x1f,0x9e,0x41,0x1a,0xcc,0x91,0x79,0xc1,0x2d,0x66,0x26,0xbf,0x1d,0x1b,0x23,0x4f,
- 0x02,0x5f,0xf3,0xe7,0xd3,0xae,0xc8,0xf8,0x13,0x56,0x63,0x62,0x3c,0x77,0x17,0xf9,
- 0x90,0x8c,0x73,0x9c,0x1d,0x2f,0xc4,0xe0,0x38,0x7f,0x3a,0xf2,0x00,0xcd,0x2b,0x3a,
- 0x7f,0x3e,0xcc,0x5a,0x62,0x63,0x8c,0x07,0x27,0xf0,0x76,0xe4,0x86,0x85,0x43,0xf8,
- 0x16,0xcd,0x33,0x61,0xc1,0x15,0x9f,0xc9,0xb8,0x05,0x8d,0x5e,0xe4,0x9a,0xf9,0xe3,
- 0x87,0x73,0x17,0x6a,0x0b,0x58,0xa1,0xc1,0xb0,0xbf,0x26,0x96,0xd0,0x38,0x27,0x78,
- 0x06,0x2e,0x41,0x1b,0x4d,0x3f,0x31,0x23,0x63,0xfe,0xbc,0x81,0x34,0x18,0xff,0xba,
- 0xd8,0x01,0x96,0x7a,0x15,0x2f,0x87,0x58,0x18,0xed,0x10,0x16,0x76,0xc4,0x81,0x06,
- 0xc5,0x8e,0x91,0x3f,0x38,0xdf,0x90,0x06,0x63,0x3e,0xfc,0xa2,0x8f,0x34,0x38,0x6c,
- 0x9d,0xe2,0xc3,0xc4,0x18,0xfd,0xf1,0xfc,0x52,0x8d,0xf2,0x59,0x1f,0x06,0x38,0x7f,
- 0x7a,0x76,0xd5,0xb7,0x1c,0x3c,0xd5,0xe3,0xdf,0xd1,0xc1,0x68,0xd0,0x46,0x80,0xb1,
- 0x7f,0xb0,0xa4,0x1c,0x95,0xbd,0x39,0x0b,0x2e,0xd1,0xaf,0x97,0x0f,0x45,0x49,0x34,
- 0x21,0xa0,0x16,0xc3,0xa8,0x6c,0x7e,0x62,0x1e,0x7a,0xc8,0x87,0x1b,0x34,0x55,0xf0,
- 0x4f,0x41,0xd0,0xb7,0xe0,0x34,0x16,0x36,0x26,0xc6,0xc8,0x37,0x1c,0x4f,0xf5,0x2c,
- 0xf2,0x61,0x88,0xf1,0x70,0x1e,0x69,0x10,0x4b,0x6c,0xc2,0xc2,0x7d,0xc2,0xc2,0xfd,
- 0xdc,0x10,0x5b,0x96,0xd1,0x18,0xe3,0x11,0x49,0xfe,0xe4,0xb1,0x2a,0xc1,0xfc,0xb1,
- 0xf4,0x69,0x58,0xa7,0xd8,0xb9,0x1e,0x7d,0x15,0x56,0xc8,0x54,0xcc,0xfd,0xa3,0x30,
- 0x6d,0x2a,0xb0,0xd2,0xec,0x0d,0xf6,0x42,0x71,0x64,0x61,0xfe,0x0c,0x44,0x77,0x0d,
- 0xf3,0x27,0x57,0xc4,0x16,0x1b,0x0d,0x18,0xd7,0x2f,0xe5,0x87,0xd1,0x1a,0xd0,0xf1,
- 0x1a,0xd1,0xf1,0xfa,0x52,0x62,0x69,0x7d,0x22,0x2f,0x58,0xd8,0xb2,0x37,0x38,0xd9,
- 0x59,0x2b,0x2e,0xe4,0x9a,0x3d,0xe3,0x7c,0x0f,0x40,0xc8,0x97,0xc2,0x85,0xcb,0xf9,
- 0xaf,0xe1,0x3b,0xfa,0x16,0x98,0x9d,0x97,0xf0,0xd3,0x43,0xc6,0x18,0x0f,0xf2,0xe4,
- 0xaa,0x9a,0xef,0xe6,0x83,0xc1,0x18,0xea,0x6a,0x5e,0xe5,0xcb,0xf0,0x8b,0xac,0x77,
- 0x4a,0x01,0x19,0x6c,0x21,0x63,0x1f,0x1b,0xe3,0x69,0xca,0xed,0x9b,0x6e,0x17,0xf3,
- 0x01,0x63,0x67,0xe4,0x7a,0xad,0x92,0xf3,0x8d,0x0c,0x6f,0x9e,0x36,0x66,0xfe,0x28,
- 0xcd,0x87,0x65,0xe4,0xd5,0x19,0xf7,0x11,0xb3,0xfd,0xd3,0xd9,0x48,0xf8,0x30,0xda,
- 0x79,0xd7,0x46,0x53,0x73,0x0e,0x65,0x82,0x85,0xa9,0x89,0xcc,0xfc,0xf1,0xe5,0xeb,
- 0xe7,0xa4,0x8f,0xb8,0xbc,0x11,0xd8,0x65,0xe9,0x0b,0x47,0x29,0x8c,0x1d,0xa9,0xf3,
- 0xc7,0x21,0x23,0x94,0x31,0x7f,0x68,0x02,0xa6,0xc9,0x67,0x63,0xc9,0x45,0x53,0x12,
- 0xec,0x3d,0xa3,0x70,0xe8,0x65,0xf9,0x03,0x44,0x83,0x3d,0xba,0x0d,0x6c,0x3f,0xe5,
- 0x10,0x16,0xc2,0xa3,0x40,0xd1,0x9c,0x3f,0x9b,0x62,0xab,0xd1,0xbf,0x53,0x7b,0xd1,
- 0xdd,0xcc,0x6d,0xa9,0x31,0x9a,0xf9,0xcd,0xfc,0x96,0x7a,0xf3,0xce,0xaa,0x36,0x63,
- 0x32,0xc6,0x78,0x84,0xb5,0xfc,0x41,0x63,0x71,0xd0,0xae,0x39,0xb7,0x3f,0xed,0xea,
- 0xab,0xff,0xcf,0x85,0x18,0x03,0x20,0x01,0x83,0x76,0xd5,0xc8,0x1f,0xbc,0x5e,0x5f,
- 0x6d,0xdd,0xbd,0xfe,0xc3,0x8d,0xf7,0x8f,0x9e,0xbd,0x7a,0x89,0xf8,0xf0,0xfb,0xf7,
- 0x34,0x1f,0xde,0xc8,0xf8,0xb0,0x68,0x74,0x87,0x8b,0x19,0x1f,0xbe,0x46,0x7c,0xf8,
- 0xe0,0xbe,0xe6,0xc3,0x3f,0x32,0x3e,0x3c,0xc5,0x63,0x8f,0xab,0xe7,0x09,0x0b,0x7f,
- 0x1f,0x3c,0xb8,0x7f,0xf1,0xaf,0x04,0x14,0x91,0x18,0x67,0xf0,0x61,0xfc,0xdf,0xff,
- 0xfc,0x0d,0xfb,0xff,0x3d,0x01,0xc5,0x8f,0x67,0xf1,0xe1,0xcb,0x13,0x3e,0x7c,0x6e,
- 0xe9,0xd5,0x5f,0x0f,0xea,0xd4,0xff,0xda,0x54,0xff,0x7b,0x4f,0x3e,0x7a,0x0f,0xa1,
- 0x81,0xbe,0xd8,0xe8,0x41,0xb3,0xf4,0xe4,0x6b,0x61,0xb1,0x58,0x2c,0x16,0x8b,0xc5,
- 0x62,0xb1,0x58,0xff,0x77,0xc5,0xb5,0x83,0xe4,0xda,0x81,0xc5,0x62,0xb1,0x58,0x2c,
- 0x16,0x8b,0xc5,0x62,0xcd,0x56,0x5c,0x3b,0x14,0xb8,0x76,0x60,0xb1,0x58,0x2c,0x16,
- 0x8b,0xc5,0x62,0xb1,0x58,0xb3,0x15,0xd7,0x0e,0x56,0x5c,0x3b,0xfc,0xd7,0x43,0x61,
- 0xb1,0x58,0x2c,0x16,0x8b,0xc5,0x62,0xb1,0x58,0xff,0xa2,0x3c,0x7a,0x81,0x1c,0x0a,
- 0xb7,0x3d,0x88,0xdf,0x89,0xc9,0x7b,0xa0,0x1e,0xfb,0x79,0x42,0xf2,0xb7,0x73,0x1e,
- 0x0c,0x45,0xb6,0xce,0x7b,0xef,0x4c,0xf7,0xfb,0x07,0x18,0x78,0xae,0x50,0xf1,0x33,
- 0x01,0x00,
diff --git a/board/esd/ash405/u-boot.lds b/board/esd/ash405/u-boot.lds
deleted file mode 100644
index 95854f2932..0000000000
--- a/board/esd/ash405/u-boot.lds
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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/esd/canbt/Makefile b/board/esd/canbt/Makefile
deleted file mode 100644
index 4d75868ea8..0000000000
--- a/board/esd/canbt/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/canbt/canbt.c b/board/esd/canbt/canbt.c
deleted file mode 100644
index 055a397730..0000000000
--- a/board/esd/canbt/canbt.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * (C) Copyright 2001
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.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
- */
-
-#include <common.h>
-#include "canbt.h"
-#include <asm/processor.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*cmd_boot.c*/
-extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* fpga configuration data */
-const unsigned char fpgadata[] = {
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int board_early_init_f (void)
-{
- unsigned long cntrl0Reg;
- int index, len, i;
- int status;
-
- /*
- * Setup GPIO pins
- */
- cntrl0Reg = mfdcr (cntrl0) & 0xf0001fff;
- cntrl0Reg |= 0x0070f000;
- mtdcr (cntrl0, cntrl0Reg);
-
-#ifdef FPGA_DEBUG
- /* set up serial port with default baudrate */
- (void) get_clocks ();
- gd->baudrate = CONFIG_BAUDRATE;
- serial_init ();
- console_init_f ();
-#endif
-
- /*
- * Boot onboard FPGA
- */
- status = fpga_boot ((unsigned char *) fpgadata, sizeof (fpgadata));
- if (status != 0) {
- /* booting FPGA failed */
-#ifndef FPGA_DEBUG
- /* set up serial port with default baudrate */
- (void) get_clocks ();
- gd->baudrate = CONFIG_BAUDRATE;
- serial_init ();
- console_init_f ();
-#endif
- printf ("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf ("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf ("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf ("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i = 0; i < 4; i++) {
- len = fpgadata[index];
- printf ("FPGA: %s\n", &(fpgadata[index + 1]));
- index += len + 3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i = 20; i > 0; i--) {
- printf ("Rebooting in %2d seconds \r", i);
- for (index = 0; index < 1000; index++)
- udelay (1000);
- }
- putc ('\n');
- do_reset (NULL, 0, 0, NULL);
- }
-
- /*
- * Setup port pins for normal operation
- */
- out32 (GPIO0_ODR, 0x00000000); /* no open drain pins */
- out32 (GPIO0_TCR, 0x07038100); /* setup for output */
- out32 (GPIO0_OR, 0x07030100); /* set output pins to high (default) */
-
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) PCI SLOT 0; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) PCI SLOT 1; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
- mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
- mtdcr (uicpr, 0xFFFFFF81); /* set int polarities */
- mtdcr (uictr, 0x10000000); /* set int trigger levels */
- mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- int index;
- int len;
- char str[64];
- int i = getenv_r ("serial#", str, sizeof (str));
-
- puts ("Board: ");
-
- if (!i || strncmp (str, "CANBT", 5)) {
- puts ("### No HW ID - assuming CANBT\n");
- return (0);
- }
-
- puts (str);
-
- puts ("\nFPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i = 0; i < 4; i++) {
- len = fpgadata[index];
- printf ("%s ", &(fpgadata[index + 1]));
- index += len + 3;
- }
-
- putc ('\n');
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- return (16 * 1024 * 1024);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/esd/canbt/canbt.h b/board/esd/canbt/canbt.h
deleted file mode 100644
index 5fc313a258..0000000000
--- a/board/esd/canbt/canbt.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (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
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- * Start Address Length
- * +-----------------------+ 0x4000_0000 Start of Flash -----------------
- * | MON8xx code | 0x4000_0100 Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused) |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses | 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) | 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address | 0x04
- * +-----------------------+ 0x4001_FFC0 ^
- * | Hardware Information | 0x40 | MON8xx
- * +=======================+ 0x4002_0000 (sector border) -----------------
- * | Autostart Header | | Applications
- * | ... | v
- *
- *****************************************************************************/
diff --git a/board/esd/canbt/config.mk b/board/esd/canbt/config.mk
deleted file mode 100644
index 80076cd943..0000000000
--- a/board/esd/canbt/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (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
-#
-
-#
-# esd ADCIOP boards
-#
-
-TEXT_BASE = 0xFFFE0000
-#TEXT_BASE = 0xFFFD0000
diff --git a/board/esd/canbt/flash.c b/board/esd/canbt/flash.c
deleted file mode 100644
index de847f9bea..0000000000
--- a/board/esd/canbt/flash.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (((size_b0/1024/1024)-1)<<17);
- mtdcr(ebccfgd, pbcr);
- /* printf("pb1cr = %x\n", pbcr); */
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -monitor_flash_len,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/canbt/fpgadata.c b/board/esd/canbt/fpgadata.c
deleted file mode 100644
index 0de7d9225b..0000000000
--- a/board/esd/canbt/fpgadata.c
+++ /dev/null
@@ -1,404 +0,0 @@
- 0x00,0x09,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x00,0x00,0x01,0x61,0x00,0x0c,
- 0x69,0x6f,0x5f,0x63,0x68,0x69,0x70,0x2e,0x6e,0x63,0x64,0x00,0x62,0x00,0x0b,0x73,
- 0x30,0x35,0x78,0x6c,0x76,0x71,0x31,0x30,0x30,0x00,0x63,0x00,0x0b,0x32,0x30,0x30,
- 0x31,0x2f,0x31,0x31,0x2f,0x32,0x33,0x00,0x64,0x00,0x09,0x31,0x33,0x3a,0x33,0x34,
- 0x3a,0x34,0x33,0x00,0x65,0xe2,0x01,0x00,0x00,0x18,0xe6,0xff,0x30,0xe8,0x01,0x01,
- 0x01,0x01,0xe7,0xe6,0x04,0x01,0x0d,0x04,0x07,0x03,0x05,0x03,0x05,0x03,0xe5,0xe5,
- 0x05,0x09,0x04,0x06,0x01,0x07,0x09,0x01,0x07,0x0b,0x0f,0x07,0x03,0x05,0x03,0x05,
- 0x03,0x11,0x03,0x0f,0x09,0x03,0x05,0x10,0xe5,0xe6,0x1a,0x0a,0x13,0x29,0x19,0x05,
- 0x09,0x04,0x04,0x09,0x09,0x09,0x0b,0x04,0x04,0x09,0x09,0x09,0x0e,0xe5,0x01,0x14,
- 0x09,0x09,0x09,0x03,0x05,0x0b,0x03,0x05,0x09,0x09,0x09,0x09,0x01,0xe6,0x7b,0x01,
- 0x01,0x02,0x75,0xe8,0x3e,0x3b,0x02,0x34,0x0a,0x09,0x07,0x09,0x01,0x11,0x0a,0xe5,
- 0xe6,0x5c,0x1e,0xe6,0xe5,0x0a,0xe5,0x50,0x1d,0x0d,0x31,0x09,0x14,0x13,0x07,0x01,
- 0x01,0x2a,0x08,0x0b,0x1e,0x1c,0x01,0xe5,0x0f,0x09,0x09,0xe5,0x07,0x09,0xe6,0x08,
- 0x05,0x03,0x01,0x07,0x09,0x09,0x0d,0xe8,0x0f,0x09,0xe5,0x07,0x09,0x04,0x05,0x0a,
- 0x01,0x07,0x01,0x07,0x09,0x09,0x0d,0xe5,0xe6,0x0c,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x03,0x03,0xe5,0x06,0xe5,0xe6,0x03,0x03,0xe5,0x04,0x02,0xe5,0x01,0x05,0xe5,
- 0x07,0xe5,0x01,0x07,0x05,0xe7,0x0f,0x09,0x09,0x09,0x10,0x04,0x05,0x03,0x03,0x05,
- 0x09,0x09,0x08,0x08,0x04,0x01,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x02,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x02,0x04,0xe5,0x07,0x02,0x03,
- 0x02,0xe5,0x0e,0x09,0x09,0x09,0x15,0x09,0x09,0x09,0x09,0x0e,0xe6,0xe5,0x0c,0x09,
- 0x09,0x09,0x09,0x04,0x04,0x01,0x09,0x06,0x02,0x09,0x09,0x11,0xe7,0x0c,0x02,0x06,
- 0x02,0x04,0x01,0x02,0x01,0x01,0x02,0x02,0x06,0x02,0x03,0x02,0x01,0x02,0x06,0x02,
- 0x01,0x04,0x02,0x06,0x02,0x03,0x02,0x02,0x11,0x03,0x17,0x03,0x05,0x12,0x15,0x02,
- 0x23,0x08,0x16,0x06,0x0c,0x05,0x15,0x07,0x01,0x0a,0x02,0x0f,0x01,0x07,0x02,0xe5,
- 0xe5,0x08,0x07,0x02,0x07,0x02,0x10,0x03,0x11,0x03,0x2b,0x05,0xe6,0x2b,0x0a,0x06,
- 0x01,0x01,0x11,0x0b,0x0e,0xe5,0x08,0xe6,0xe5,0x0f,0x09,0x09,0x09,0x09,0x0b,0x09,
- 0x09,0x01,0x07,0x09,0x0e,0x01,0xe5,0x0f,0x0d,0x22,0xe5,0xe5,0x27,0x0e,0xe6,0x47,
- 0x11,0x17,0x02,0x04,0x01,0x01,0x0d,0x0d,0x1f,0x04,0x01,0x24,0x10,0x03,0x01,0x2a,
- 0x12,0x0c,0x06,0xe5,0x0a,0x09,0x11,0xe5,0x01,0x1c,0x09,0x17,0x0b,0x09,0x09,0x04,
- 0x19,0xe5,0x0c,0x01,0x0d,0x22,0x0a,0x01,0x0d,0xe5,0x04,0x18,0x01,0xe5,0x01,0x05,
- 0x04,0x01,0x02,0xe5,0x14,0x10,0x0b,0x02,0x01,0x02,0x02,0xe5,0x19,0x0d,0xe5,0xe5,
- 0x0e,0x09,0x09,0x02,0x06,0x09,0x02,0x03,0x04,0x03,0x05,0x09,0x15,0x0c,0x02,0xe5,
- 0x01,0x0b,0x04,0x04,0x09,0x09,0x02,0x06,0x09,0xe5,0x01,0x06,0x05,0x03,0x06,0x1e,
- 0x02,0x1c,0x1d,0x08,0xe5,0x05,0x02,0x06,0x02,0x03,0xe5,0x1b,0x03,0x17,0xe5,0x08,
- 0x02,0x09,0xe5,0x09,0x0f,0xe5,0x08,0x07,0x09,0x06,0x0b,0x02,0x17,0xe5,0x09,0x01,
- 0x1f,0x05,0xe5,0x02,0x05,0x03,0x1f,0xe5,0xe6,0x0e,0x09,0x03,0x05,0x03,0x05,0x09,
- 0x11,0x01,0x01,0x04,0x0c,0x01,0x0a,0x0e,0x01,0xe5,0x0c,0xe6,0x06,0xe6,0x06,0xe6,
- 0x06,0xe6,0x02,0x03,0xe6,0x03,0x03,0x02,0x09,0x06,0xe5,0xe5,0x25,0x14,0x1a,0x12,
- 0x05,0x04,0x02,0x13,0x16,0xe7,0xe5,0x11,0xe5,0x11,0xe5,0x06,0xe5,0x14,0xe5,0x11,
- 0xe5,0x03,0xe5,0x08,0xe5,0x06,0x01,0x02,0x02,0x02,0x01,0x2c,0xe5,0x08,0x01,0x1d,
- 0xe5,0xe6,0x01,0x02,0x01,0x04,0x09,0x01,0x02,0xe6,0x03,0x04,0xe5,0x02,0x01,0x02,
- 0xe5,0x02,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x02,0xe5,0x04,0x01,0x07,0x05,0xe5,
- 0x01,0x01,0x02,0xe5,0x07,0xe5,0x01,0x01,0xe5,0x09,0xe5,0xe5,0xe7,0x01,0x0e,0x08,
- 0x03,0xe5,0x04,0x02,0x06,0x02,0xe5,0x04,0x0d,0xe5,0x07,0xe5,0x08,0xe5,0x07,0x05,
- 0x07,0x02,0x01,0x01,0xe8,0xe5,0x10,0x01,0x05,0x0c,0x10,0xe5,0x01,0x06,0xe5,0x08,
- 0x08,0xe6,0x01,0x02,0x05,0xe5,0x04,0xe5,0x01,0x06,0xe5,0x01,0xe5,0x01,0x10,0x02,
- 0x05,0xe5,0x01,0x06,0x02,0x06,0x02,0x05,0x03,0x07,0xe5,0x01,0x05,0xe5,0x01,0x05,
- 0x04,0x03,0x03,0xe5,0x04,0x08,0xe6,0xe5,0xe6,0x01,0x0b,0x05,0x03,0x09,0x09,0x09,
- 0x06,0x04,0x05,0x01,0x01,0x09,0x05,0x0a,0x01,0x01,0x02,0x08,0x02,0xe5,0xe6,0x01,
- 0x11,0xe5,0x31,0x14,0x10,0x0a,0x02,0xe8,0x0c,0x03,0xe6,0x02,0x03,0x05,0x03,0x05,
- 0x03,0x02,0x02,0x03,0x02,0x04,0x03,0x01,0x03,0x03,0x05,0x0d,0xe5,0x06,0x0b,0x01,
- 0x01,0x11,0x0c,0x01,0x04,0x02,0x01,0x04,0x02,0x09,0x0b,0x01,0x07,0x01,0x07,0x09,
- 0x13,0xe6,0xe6,0x0a,0x02,0x06,0x02,0x03,0x02,0x02,0x04,0xe6,0x01,0x05,0xe5,0x01,
- 0x03,0x07,0x03,0x02,0x02,0x05,0xe5,0x01,0x03,0x02,0x02,0x03,0xe5,0xe5,0x01,0x06,
- 0x04,0x01,0x01,0xe5,0xe5,0x01,0x08,0xe5,0x07,0xe5,0x07,0xe5,0x08,0x08,0xe5,0x08,
- 0x0a,0xe5,0x05,0x09,0x02,0x09,0x05,0xe5,0x01,0x07,0xe5,0xe6,0x08,0x05,0x03,0x05,
- 0x03,0x05,0x05,0x03,0x03,0x05,0x03,0x07,0x03,0x05,0x09,0x03,0x0a,0x08,0x0d,0xe5,
- 0x5e,0x06,0x07,0x0b,0xe8,0x10,0x01,0x07,0x09,0x01,0x07,0x01,0x07,0x0b,0x09,0x09,
- 0x08,0x03,0x06,0x0c,0xe8,0x09,0x54,0x01,0x0d,0x02,0x07,0x01,0x01,0x15,0xe5,0x05,
- 0xe7,0x05,0xe7,0x07,0xe5,0x06,0xe6,0x08,0xe6,0x05,0xe7,0x06,0xe7,0xe5,0x02,0xe7,
- 0x05,0xe7,0x0a,0x10,0xe5,0x07,0x09,0x33,0x06,0x0b,0x0f,0xe7,0x19,0x05,0x03,0x02,
- 0x02,0x13,0x0b,0x09,0x03,0x05,0x06,0x02,0xe5,0x07,0x08,0x02,0xe5,0x1b,0xe6,0x07,
- 0xe5,0x11,0xe5,0x01,0x07,0xe5,0x06,0xe6,0x07,0xe5,0xe5,0xe5,0x03,0xe5,0x02,0x03,
- 0xe6,0x0a,0xe5,0x02,0x0e,0x09,0xe5,0xe6,0x04,0xe8,0x04,0x09,0xe5,0xe6,0x06,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe7,0xe6,0x01,0x01,0xe6,0x03,0xe8,0x06,0x01,0x01,
- 0x0e,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0xe5,0x05,0x01,0x09,0x01,0x07,0x01,
- 0x07,0x01,0x01,0x08,0x08,0x01,0x0a,0xe9,0x10,0x01,0x01,0x05,0x01,0xe5,0x05,0x01,
- 0xe6,0x04,0x01,0xe6,0x04,0x01,0x01,0x02,0x03,0xe5,0xe5,0xe5,0x03,0xe5,0xe5,0x06,
- 0x01,0x02,0x04,0x01,0x07,0x01,0xe5,0x08,0x01,0xe6,0x0e,0xe5,0x02,0x0e,0xe5,0x07,
- 0xe5,0x07,0xe5,0xe5,0x0d,0x09,0xe5,0x06,0x04,0xe5,0x05,0x01,0xe5,0x0c,0xe6,0xe6,
- 0x1e,0x07,0x15,0x07,0x09,0xe5,0x0d,0xe5,0xe5,0xe5,0x01,0x01,0x09,0x04,0xe6,0xe6,
- 0x04,0x02,0x04,0x01,0x02,0x09,0x04,0x01,0x02,0x04,0x01,0x07,0x01,0x04,0x02,0x08,
- 0x0b,0x06,0x0e,0x10,0xe5,0xe6,0x0b,0x01,0x07,0x01,0x03,0xe5,0x01,0x01,0x07,0x01,
- 0x07,0x01,0x02,0x05,0x09,0x17,0x04,0x03,0x03,0x09,0xe7,0xe5,0x0d,0x01,0x07,0x01,
- 0x07,0x01,0x04,0x02,0x01,0x07,0x01,0x04,0x01,0x0a,0x07,0x06,0x01,0x02,0x0a,0x13,
- 0xe6,0x0d,0x03,0x05,0x09,0x03,0x05,0x09,0x03,0x03,0x03,0x02,0x05,0xe5,0x02,0x04,
- 0xe5,0x07,0xe5,0x01,0x03,0x02,0x0d,0x01,0x02,0x0d,0x02,0x02,0x03,0x09,0x02,0x06,
- 0x04,0x04,0x02,0xe5,0x04,0x01,0x05,0x03,0x01,0xe5,0x05,0x01,0x07,0x01,0x08,0x0c,
- 0x06,0x06,0x02,0x05,0xe6,0x06,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0xe5,0x03,0xe5,
- 0x01,0xe5,0xe5,0xe5,0x06,0x09,0x01,0xe5,0x17,0x03,0x01,0xe6,0x09,0x02,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x01,0xe6,0x07,0x11,0xe5,0xe5,0x09,0x02,
- 0x0e,0x0b,0x04,0x01,0x03,0x03,0x09,0x01,0x07,0x04,0x04,0x02,0xe5,0xe6,0x03,0x07,
- 0x18,0xe5,0x13,0xe5,0xe6,0x0c,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x02,0x04,0xe5,0x07,
- 0xe5,0x0a,0x03,0xe5,0x01,0x01,0x07,0x01,0xe5,0x03,0xe5,0x09,0x01,0x0a,0x02,0x03,
- 0xe5,0x0c,0xe6,0x06,0xe6,0x01,0x04,0xe6,0x06,0xe7,0xe5,0x03,0xe6,0x01,0x05,0x02,
- 0x09,0x05,0x03,0x07,0x01,0x02,0x06,0x0a,0x03,0xe5,0xe6,0xe5,0x06,0x1c,0x1a,0xe5,
- 0x02,0x05,0x0a,0x12,0x02,0x0c,0xe5,0x01,0x01,0x1b,0xe5,0x04,0x03,0x01,0x06,0xe5,
- 0x10,0xe5,0x01,0xe5,0x03,0xe5,0x12,0xe5,0x06,0xe5,0x07,0x01,0x03,0xe9,0xe5,0x17,
- 0xe5,0x08,0xe5,0x06,0xe5,0x08,0xe5,0x09,0xe5,0x17,0x03,0x01,0x0e,0x01,0x01,0x02,
- 0x02,0x01,0x04,0xe5,0x02,0x04,0xe5,0x02,0x09,0x09,0x09,0x04,0xe5,0x04,0x01,0xe5,
- 0x05,0x01,0xe5,0x05,0x01,0x08,0xe5,0x01,0xe5,0x05,0xe5,0x07,0xe5,0x01,0x01,0xe5,
- 0x01,0x1b,0x09,0xe5,0x07,0x14,0xe5,0x05,0x01,0xe5,0x04,0x02,0xe5,0x01,0x06,0x0d,
- 0x02,0x01,0xe5,0x02,0xe5,0xe5,0x06,0x01,0x05,0xe5,0x01,0x05,0x02,0x10,0xe5,0xe6,
- 0x04,0x01,0x01,0x06,0x01,0x02,0x0f,0xe5,0x01,0xe5,0x02,0xe5,0x01,0x08,0x01,0x06,
- 0xe5,0xe7,0x01,0x06,0x02,0x05,0x01,0x01,0x05,0x03,0x07,0x01,0x05,0x01,0x01,0x05,
- 0x0d,0x01,0x0f,0x04,0x04,0x08,0x01,0x02,0x04,0xe6,0x01,0xe6,0x01,0x0b,0x09,0x06,
- 0x02,0x09,0x09,0x0b,0x05,0x03,0x09,0x0a,0x02,0x06,0x08,0x02,0x02,0xe6,0xe5,0x12,
- 0xe5,0x11,0xe5,0x1d,0xe6,0x14,0x04,0xe6,0x01,0x0f,0x03,0xe6,0x07,0x05,0x03,0x02,
- 0x02,0x03,0x05,0x03,0xe5,0x03,0x03,0x02,0x02,0x03,0x02,0x04,0x03,0xe5,0x03,0x03,
- 0x05,0x03,0x08,0xe5,0x01,0x12,0xe5,0xe5,0xe5,0x07,0x01,0x07,0xe5,0x07,0x01,0x04,
- 0x16,0x08,0x02,0xe5,0x04,0x02,0x01,0x07,0x01,0x07,0xe5,0x07,0x09,0xe5,0x01,0xe5,
- 0x09,0xe5,0x01,0x06,0x02,0x03,0x02,0x02,0x06,0x02,0x06,0x02,0x03,0x07,0x06,0x02,
- 0x03,0x05,0x03,0xe5,0xe5,0x01,0x04,0x01,0x02,0x05,0xe5,0x05,0x01,0xe5,0xe5,0x0a,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0x09,0xe5,0x08,0x0a,0xe5,0x08,0x09,0x05,0x03,0x06,
- 0x02,0x07,0xe8,0x08,0x05,0x03,0x05,0x03,0x05,0x09,0x03,0x05,0x05,0x05,0x03,0x05,
- 0x03,0x05,0x04,0x09,0x0a,0x08,0xe5,0xe6,0x5b,0x07,0x17,0xe6,0x01,0x0e,0x09,0x09,
- 0x01,0x07,0x09,0x0b,0x01,0x07,0x01,0x07,0x05,0x03,0x04,0xe5,0x01,0x0e,0xe5,0xe6,
- 0x1c,0x1c,0xe5,0x1e,0x04,0x09,0x0e,0x01,0xe6,0x08,0x0b,0xe5,0x05,0x01,0xe5,0x05,
- 0x01,0xe5,0x07,0xe5,0x05,0x01,0xe5,0x07,0xe7,0x05,0xe7,0x05,0x01,0xe6,0x04,0x01,
- 0xe6,0x04,0xe7,0x06,0x02,0xe5,0xe5,0x0d,0xe5,0x07,0x29,0x09,0x09,0x08,0x09,0x0e,
- 0x03,0x20,0x09,0x13,0x05,0x05,0x03,0x05,0x09,0x09,0xe5,0x07,0x09,0xe6,0x19,0x02,
- 0x01,0x07,0x01,0x11,0x01,0x02,0x06,0xe6,0x06,0xe6,0x03,0x02,0x01,0x07,0x01,0x03,
- 0x03,0xe6,0x07,0xe5,0xe6,0x11,0x09,0xe8,0x04,0x01,0xe6,0x04,0x09,0xe8,0x06,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x04,0xe8,0x04,0xe9,0x04,0x01,0xe5,0x06,0x03,0xe5,0x0b,0xe5,
- 0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x07,0xe5,0xe5,
- 0x05,0xe5,0xe6,0x04,0x02,0x06,0x02,0x01,0x14,0xe9,0x05,0x0a,0x01,0xe5,0x05,0x01,
- 0xe5,0x05,0x01,0xe6,0x04,0x01,0x01,0x05,0x01,0xe6,0x01,0x04,0x01,0x01,0x05,0x01,
- 0xe6,0x01,0x02,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x02,0x07,0xe8,0x02,0x05,0x04,
- 0x07,0x01,0xe5,0x07,0x03,0x02,0x02,0x09,0x04,0x01,0x04,0x04,0xe5,0x02,0xe6,0x02,
- 0x02,0x02,0x03,0x02,0xe5,0x01,0x1a,0xe5,0x1a,0x02,0x06,0x0a,0x02,0x16,0x08,0xe5,
- 0x06,0x04,0x02,0x02,0x0d,0xe5,0xe5,0x01,0xe6,0x12,0x04,0x1b,0x04,0x05,0x0a,0x02,
- 0x02,0x07,0x0b,0x15,0xe5,0x01,0xe5,0x0b,0xe6,0x03,0x02,0xe6,0x03,0x02,0xe6,0x03,
- 0x02,0xe7,0x05,0xe6,0x02,0x08,0x09,0x06,0xe6,0x01,0x02,0x03,0x09,0xe5,0x01,0x09,
- 0x04,0x09,0x03,0x09,0x09,0x09,0x09,0x03,0x03,0x01,0xe5,0x07,0x0b,0x19,0x0c,0xe7,
- 0x08,0x08,0x06,0xe6,0x0c,0x01,0xe6,0x04,0x0a,0xe5,0x05,0xe5,0x03,0x02,0x0a,0x03,
- 0x05,0x03,0x05,0x09,0x04,0x10,0x13,0x06,0x02,0x09,0x02,0x03,0x04,0x04,0x04,0x09,
- 0x0f,0x12,0x02,0x01,0x04,0x15,0x02,0x08,0x02,0x04,0x0e,0x08,0x05,0x28,0x04,0x01,
- 0x03,0x19,0x20,0xe6,0x08,0x06,0x10,0x19,0x01,0x06,0x01,0x1d,0x15,0x02,0x0a,0x08,
- 0x06,0x01,0xe6,0x06,0x07,0x0b,0x02,0xe7,0xe5,0x05,0x09,0x01,0x11,0x04,0xe5,0x02,
- 0x04,0xe5,0x04,0x01,0x08,0x07,0x08,0xe5,0x05,0x16,0x01,0x02,0x19,0x10,0x01,0x0a,
- 0x08,0x0d,0x0a,0x0b,0x0a,0x09,0x01,0x01,0x19,0x0e,0x07,0x04,0xe5,0x1a,0x28,0x02,
- 0x01,0x26,0xe5,0x04,0x11,0x02,0xe5,0x01,0xe5,0xe5,0x08,0x02,0xe5,0x07,0xe5,0x13,
- 0x01,0xe5,0xe9,0xe5,0x1b,0xe5,0x12,0xe5,0x03,0x01,0x02,0x03,0x01,0xe5,0x01,0xe6,
- 0x03,0x01,0xe5,0x0c,0x11,0x01,0x01,0xe5,0xe5,0xe5,0x01,0x01,0x12,0x01,0x09,0x02,
- 0x01,0xe5,0xe5,0xe7,0x01,0xe5,0x03,0x08,0x06,0x01,0xe5,0x01,0x01,0x04,0x03,0x16,
- 0x01,0x02,0x01,0xe5,0xe6,0x01,0x02,0x11,0xe5,0xe5,0xe5,0x06,0x06,0xe5,0xe5,0xe5,
- 0x02,0xe5,0x05,0x07,0x0b,0x07,0x19,0xe5,0x05,0x02,0xe6,0xe6,0xe5,0x01,0x03,0x02,
- 0x16,0x09,0x01,0x01,0x02,0x02,0x09,0x09,0x01,0x01,0xe5,0x03,0x23,0xe5,0x01,0xe5,
- 0x01,0x06,0x02,0x0e,0x05,0x03,0x0c,0x01,0x02,0x01,0x07,0x03,0x05,0x01,0x01,0x05,
- 0x03,0x1d,0xe5,0x02,0x01,0x02,0x14,0x01,0x09,0x07,0x04,0x01,0x0e,0x04,0x04,0x03,
- 0xe5,0xe5,0xe6,0x03,0x19,0x02,0x02,0x03,0x17,0x01,0x07,0x09,0x04,0x01,0xe5,0x0c,
- 0x09,0x01,0x04,0x01,0xe5,0x25,0x01,0xe5,0x03,0x03,0x26,0xe5,0xe5,0x05,0x0c,0x08,
- 0x0a,0xe5,0x1b,0x02,0xe6,0x09,0x01,0x22,0x02,0x01,0x13,0x01,0x04,0x02,0xe5,0x11,
- 0xe5,0x12,0xe5,0xe6,0x07,0x05,0x09,0x09,0x09,0x03,0x05,0x0b,0x03,0x05,0x09,0x09,
- 0x09,0x06,0x06,0x03,0xe5,0x29,0x05,0x03,0x05,0x0f,0x05,0x20,0x0b,0xe5,0x27,0x09,
- 0x14,0x07,0x2b,0xe7,0x15,0x02,0x16,0x10,0x01,0x04,0x02,0x09,0x01,0x07,0x01,0x18,
- 0x03,0x19,0xe5,0x0c,0x02,0x01,0x01,0x01,0x06,0xe5,0x03,0x02,0x01,0xe5,0x07,0xe6,
- 0x04,0x01,0xe5,0x04,0xe5,0xe6,0x16,0x03,0xe5,0x17,0x22,0x0b,0x02,0x2e,0xe5,0x01,
- 0x15,0xe5,0x01,0x03,0xe5,0xe5,0x05,0x02,0xe5,0xe5,0x04,0xe5,0x07,0x0a,0xe7,0xe5,
- 0x04,0xe5,0x06,0xe6,0x07,0xe5,0x07,0xe5,0x06,0x03,0x04,0x14,0x03,0x23,0x01,0x04,
- 0x0c,0x01,0xe6,0x04,0x01,0x1b,0xe5,0x18,0x06,0x09,0xe5,0xe5,0x0f,0x02,0x01,0x06,
- 0x09,0xe5,0xe5,0x05,0xe5,0xe5,0x18,0x02,0x19,0x04,0xe6,0x05,0x01,0xe5,0x09,0x0a,
- 0x09,0x09,0x07,0x01,0x1b,0x01,0x01,0x19,0x04,0x08,0xe5,0x01,0x04,0x09,0x01,0x07,
- 0x0b,0x01,0x05,0x21,0x01,0x01,0xe5,0x0f,0x19,0xe5,0xe5,0x11,0x01,0xe6,0x04,0x01,
- 0xe5,0xe5,0x03,0xe5,0xe5,0xe5,0x1d,0x01,0xe7,0x05,0x0a,0x01,0x02,0x04,0x01,0x07,
- 0x01,0xe5,0x02,0x01,0xe5,0xe6,0xe5,0x03,0x01,0x01,0x02,0x01,0x02,0x01,0xe5,0x01,
- 0x03,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x0b,0x01,0xe5,0x08,0x20,0x09,0x02,
- 0xe6,0xe6,0x05,0x03,0x0e,0x0a,0xe5,0x01,0x16,0xe7,0x1d,0x08,0x07,0x04,0x01,0x03,
- 0x02,0x05,0x02,0x06,0x05,0x0b,0x07,0x07,0x08,0xe5,0x01,0xe5,0x11,0x16,0x0f,0xe5,
- 0x03,0xe5,0xe5,0x01,0x04,0x03,0x04,0x05,0x06,0x19,0xe6,0xe7,0x05,0xe5,0x05,0x09,
- 0x03,0x09,0x04,0x02,0x01,0x02,0x01,0x10,0x02,0x01,0x04,0x01,0x03,0x20,0x02,0xe6,
- 0x10,0x18,0xe5,0x03,0x04,0x01,0x05,0x01,0x09,0x04,0x14,0x16,0xe5,0x01,0xe5,0x12,
- 0x0b,0x04,0x07,0x0e,0x02,0xe5,0x02,0x06,0x05,0x26,0xe6,0xe7,0x12,0xe5,0x04,0x0f,
- 0x03,0x0b,0x04,0x0e,0x0f,0x03,0x18,0x01,0xe5,0x1a,0xe5,0x10,0x05,0x0a,0x11,0x14,
- 0x14,0xe5,0xe5,0x16,0xe6,0x02,0x02,0xe7,0x02,0x03,0xe6,0x06,0xe6,0xe6,0x03,0xe5,
- 0x08,0xe7,0xe5,0x29,0x03,0x02,0x10,0x06,0x03,0x05,0x03,0x01,0x02,0x0a,0x03,0x02,
- 0x07,0xe5,0x04,0x0a,0x20,0x01,0x01,0xe5,0x14,0x17,0x02,0xe5,0x19,0x01,0xe5,0xe5,
- 0xe5,0x02,0x03,0x06,0x0d,0x07,0xe6,0x01,0x2e,0x03,0x02,0x01,0x03,0x02,0x01,0x0b,
- 0xe5,0x09,0x01,0x1f,0x01,0xe6,0x12,0x0c,0x0e,0x17,0x05,0x0d,0x09,0x14,0x02,0xe5,
- 0xe5,0x01,0x0b,0xe5,0xe6,0x05,0x02,0xe5,0x10,0xe5,0x01,0x0e,0xe8,0x05,0xe5,0xe6,
- 0xe5,0x01,0xe5,0x1d,0x02,0x01,0xe5,0x01,0x0e,0x01,0xe5,0x04,0x03,0x01,0x0c,0x03,
- 0xe5,0x01,0x0b,0xe5,0x01,0x01,0xe5,0x05,0xe5,0x03,0x03,0x1b,0x01,0x01,0xe5,0xe5,
- 0xe5,0x03,0x15,0x12,0x07,0x0b,0x01,0x04,0xe5,0x03,0x06,0x1a,0x01,0x02,0x01,0xe5,
- 0xe6,0xe7,0xe5,0x16,0x10,0x01,0x07,0x05,0xe5,0x03,0x01,0x04,0xe5,0xe5,0x01,0x06,
- 0x1a,0xe5,0x04,0x02,0x01,0x01,0xe5,0xe5,0x18,0x09,0x04,0x04,0x04,0x04,0x08,0x0c,
- 0x04,0x23,0xe6,0xe7,0xe5,0x01,0x25,0x04,0x04,0x03,0x07,0x03,0x01,0x02,0x04,0x04,
- 0xe5,0x02,0x1d,0xe5,0xe6,0x01,0x02,0x18,0x02,0x06,0x02,0x02,0x01,0x04,0x02,0x06,
- 0x01,0x02,0x01,0x03,0xe5,0x08,0xe7,0x20,0x06,0xe5,0x1a,0x01,0xe5,0x05,0xe7,0xe5,
- 0x03,0x01,0xe7,0x02,0xe7,0x03,0x01,0x04,0x02,0x03,0xe5,0xe5,0x01,0x25,0x01,0xe5,
- 0x04,0x14,0x01,0xe5,0xe6,0x02,0x01,0x09,0x07,0x01,0x0c,0x01,0xe5,0x02,0x01,0x02,
- 0x25,0x01,0x02,0x01,0x18,0xe5,0x07,0xe5,0x11,0xe5,0x13,0xe5,0x01,0x27,0x02,0xe6,
- 0x0d,0x09,0xe6,0x06,0xe6,0x06,0x09,0xe5,0x04,0x04,0x09,0xe5,0x01,0x05,0x02,0x01,
- 0x01,0x02,0x09,0x0d,0xe9,0x01,0x19,0x09,0x09,0x09,0xe5,0x01,0x11,0x2a,0x02,0x39,
- 0x01,0x13,0x2b,0x02,0x17,0x01,0xe7,0x06,0x01,0x09,0x06,0xe7,0x02,0x02,0x01,0x04,
- 0x05,0xe6,0xe5,0xe6,0xe5,0x08,0x18,0xe8,0x16,0x01,0xe6,0x08,0x09,0x04,0x02,0xe6,
- 0x01,0x04,0x01,0xe5,0x04,0x02,0xe6,0x04,0x01,0xe5,0x05,0x02,0x17,0xe8,0x15,0x04,
- 0x0c,0x0e,0x09,0x01,0x04,0x04,0x01,0x05,0x01,0x06,0x02,0x18,0xe6,0xe5,0x14,0xe5,
- 0x05,0xe6,0x06,0xe6,0x08,0xe5,0x01,0xe5,0x02,0xe5,0x02,0x01,0x04,0xe5,0x02,0x04,
- 0xe5,0xe5,0xe5,0x03,0xe5,0xe5,0x06,0xe5,0x07,0xe5,0x0a,0x17,0x01,0xe5,0x03,0x09,
- 0x01,0x01,0x09,0xe5,0x07,0x01,0xe6,0x06,0xe5,0x11,0x18,0xe5,0x01,0x17,0x01,0x03,
- 0x02,0x06,0x02,0xe5,0xe5,0x08,0x06,0x02,0x01,0x06,0x02,0xe5,0x04,0x09,0xe5,0x19,
- 0xe8,0x19,0x03,0xe5,0x07,0xe5,0xe5,0xe5,0x08,0xe5,0x02,0x03,0x02,0x04,0x04,0x04,
- 0x09,0x04,0x17,0xe9,0x1b,0xe5,0x07,0xe5,0x02,0x01,0x02,0x06,0x02,0x06,0x02,0x03,
- 0x04,0x02,0x07,0x03,0x02,0x1a,0xe9,0x09,0x09,0x09,0x08,0x05,0xe5,0x07,0x0c,0x05,
- 0x02,0x06,0x24,0x03,0x0b,0x05,0x01,0x06,0xe5,0xe5,0x06,0xe6,0xe5,0x04,0x01,0xe5,
- 0x05,0x01,0x04,0x04,0xe7,0x01,0x03,0x01,0xe6,0x04,0x01,0x07,0x01,0xe5,0xe5,0x03,
- 0x01,0x0a,0xe8,0x0e,0xe5,0x09,0x07,0xe5,0x05,0x08,0xe5,0xe5,0x02,0x08,0xe6,0xe5,
- 0xe6,0xe6,0x01,0x04,0xe5,0x0c,0x0a,0x06,0x02,0x01,0xe7,0x13,0x07,0xe5,0x01,0x01,
- 0x06,0x0c,0xe5,0x03,0x03,0x03,0x05,0x12,0x1a,0x01,0x02,0x0d,0x01,0x03,0x09,0x02,
- 0x04,0x01,0xe5,0xe5,0x08,0x09,0xe5,0x05,0x03,0x01,0x07,0x01,0x0d,0x0f,0xe5,0x03,
- 0x03,0x03,0xe5,0x18,0x0e,0x12,0xe7,0x06,0x01,0x09,0x03,0x19,0x05,0x02,0xe5,0x06,
- 0x09,0x09,0xe5,0x07,0x02,0x01,0x05,0x01,0x0b,0x01,0x07,0x03,0x01,0x03,0x01,0x0f,
- 0x10,0x02,0xe5,0xe8,0x08,0x01,0x06,0x12,0x06,0x09,0x03,0xe5,0x01,0x03,0x03,0x03,
- 0xe6,0x08,0x06,0x10,0x01,0x07,0xe5,0xe8,0xe5,0x0c,0x0f,0x0b,0x02,0xe5,0x04,0x04,
- 0x03,0xe5,0x02,0x03,0x02,0x02,0x01,0x04,0x06,0x0b,0x10,0x01,0xe5,0xe5,0x11,0x01,
- 0x06,0x14,0x08,0x02,0x01,0xe5,0x03,0xe5,0xe5,0x01,0x02,0x04,0x02,0x02,0x01,0x1f,
- 0x03,0xe5,0x0a,0x09,0x09,0xe7,0x02,0x0d,0xe6,0x06,0xe6,0x03,0x05,0x04,0x27,0xe7,
- 0xe5,0xe5,0x06,0x1a,0x03,0x0e,0x07,0x01,0x0a,0x23,0x0b,0xe7,0xe6,0x11,0x02,0x0a,
- 0xe5,0xe5,0x01,0x02,0x01,0x07,0x03,0xe5,0x05,0x0d,0x02,0x02,0x05,0x1b,0x02,0x01,
- 0x03,0x0f,0x09,0xe5,0x06,0x05,0xe5,0xe7,0x01,0x01,0xe6,0xe5,0x04,0xe7,0x05,0x02,
- 0xe5,0x06,0xe5,0x04,0x1d,0x02,0x17,0x0d,0x06,0x02,0x06,0x16,0x09,0x24,0x01,0x01,
- 0x11,0xe5,0x08,0x01,0x0d,0xe5,0x04,0x02,0xe5,0x0b,0x08,0x05,0x02,0xe6,0x06,0xe5,
- 0x13,0x01,0xe6,0xe5,0x01,0x01,0x0e,0xe5,0x08,0xe5,0xe6,0x03,0xe5,0x0f,0x15,0x06,
- 0xe6,0x09,0x11,0x01,0x01,0x02,0xe6,0x03,0x15,0x08,0xe5,0x09,0x05,0x06,0x01,0x04,
- 0x11,0x01,0x02,0x15,0x01,0x02,0x01,0xe5,0xe6,0x01,0x02,0x17,0x06,0x03,0x01,0xe5,
- 0x12,0x1a,0x18,0xe5,0x04,0x03,0xe5,0xe6,0xe5,0x18,0x06,0x02,0x03,0xe5,0x08,0x01,
- 0x05,0x03,0x04,0x01,0x01,0x06,0x02,0xe5,0xe6,0x02,0x01,0x1a,0xe5,0xe5,0xe5,0x01,
- 0x1e,0x03,0x02,0xe6,0x01,0x01,0x01,0x02,0xe5,0xe5,0xe5,0x06,0x04,0x04,0x08,0xe5,
- 0xe6,0x01,0x02,0x15,0x02,0xe5,0x03,0xe5,0x01,0x18,0x07,0x04,0x01,0x0a,0x01,0x09,
- 0x01,0x02,0x01,0x01,0x08,0x01,0x01,0x0c,0x12,0x02,0xe8,0x1b,0xe6,0x01,0x03,0xe5,
- 0xe5,0x0b,0x01,0x09,0x04,0x01,0x01,0xe5,0x08,0x01,0xe5,0x22,0x01,0xe5,0x07,0x10,
- 0x01,0xe5,0x01,0x03,0x01,0x02,0x07,0x02,0x06,0xe5,0x08,0xe5,0x01,0x06,0xe5,0x07,
- 0x09,0x02,0x10,0x04,0x0a,0x01,0x0d,0xe5,0x01,0x05,0xe5,0x15,0x0b,0xe5,0x04,0x02,
- 0xe5,0x07,0xe6,0x1a,0x01,0xe8,0x06,0x05,0x09,0xe6,0xe5,0x04,0xe5,0x02,0x01,0x02,
- 0x02,0x06,0x02,0xe5,0x01,0x04,0x09,0x09,0xe5,0x02,0x01,0x02,0x09,0x0d,0x01,0x02,
- 0x02,0x19,0x03,0x04,0xe5,0x02,0x09,0x08,0xe5,0x06,0x09,0x03,0x09,0x1f,0x1f,0x05,
- 0x03,0x09,0x09,0x13,0x09,0x1e,0x01,0x01,0x17,0x01,0xe5,0xe5,0x05,0xe7,0x02,0x02,
- 0x07,0x01,0x04,0x09,0x01,0x01,0xe5,0x03,0x04,0x02,0x08,0x07,0x01,0x0e,0xe5,0xe6,
- 0x15,0xe5,0xe7,0x01,0x02,0x02,0xe5,0x01,0x02,0x01,0xe5,0x05,0x01,0xe5,0x09,0x01,
- 0x05,0x02,0xe5,0xe5,0x01,0xe5,0xe6,0x05,0x02,0x06,0x01,0xe5,0x0c,0x01,0x01,0x08,
- 0x0b,0x02,0x0b,0xe5,0x05,0x01,0x09,0x04,0x06,0x07,0x09,0x09,0x09,0x01,0x10,0x01,
- 0x15,0xe6,0x04,0xe8,0x04,0xe8,0xe5,0x04,0xe6,0xe5,0x03,0xe5,0x0a,0x01,0x07,0x01,
- 0x01,0x05,0x03,0x05,0xe6,0xe5,0x04,0xe5,0x06,0xe5,0x01,0x1a,0x08,0x09,0xe5,0x05,
- 0x01,0xe5,0x09,0x07,0x01,0x07,0x0b,0x1b,0xe5,0x19,0x02,0x02,0xe5,0x05,0x01,0xe5,
- 0xe5,0x06,0x01,0xe5,0x02,0x01,0x0b,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0x19,0x01,
- 0x01,0xe5,0x15,0x06,0xe5,0x02,0x03,0x01,0x01,0x01,0xe5,0x07,0x08,0x02,0x07,0x09,
- 0x09,0x1b,0xe7,0x16,0x04,0xe5,0xe7,0x03,0x01,0xe7,0xe6,0x05,0x01,0xe5,0x02,0x09,
- 0x01,0x02,0x04,0x04,0x0b,0x1a,0x01,0xe5,0x34,0x01,0x03,0x04,0x01,0xe6,0x01,0xe5,
- 0x03,0xe5,0x02,0x01,0x23,0x01,0x01,0xe5,0x10,0x01,0x07,0x01,0xe5,0x05,0x01,0x06,
- 0xe5,0xe6,0x05,0x01,0x04,0xe5,0x02,0x01,0x07,0x01,0x02,0xe5,0x02,0x01,0xe5,0xe5,
- 0x03,0x01,0xe6,0x04,0x01,0x0a,0x03,0x16,0x02,0xe5,0x07,0x06,0x02,0xe5,0x04,0x02,
- 0xe5,0x02,0x08,0x01,0x03,0x01,0xe5,0x08,0x02,0x05,0xe5,0x01,0x0a,0x09,0x01,0x01,
- 0xe5,0x15,0x01,0x05,0x0c,0x09,0xe5,0xe5,0x01,0x03,0x06,0x02,0xe5,0xe5,0x02,0xe5,
- 0x01,0x03,0x01,0x03,0x08,0x09,0x06,0xe5,0xe7,0x04,0x1d,0x01,0x07,0x0a,0xe5,0x03,
- 0xe5,0x05,0x03,0x05,0xe5,0x01,0x0c,0x18,0xe9,0x17,0x05,0x0a,0x05,0x09,0x06,0x06,
- 0x04,0x07,0xe6,0xe5,0x0e,0x0b,0x05,0xe5,0xe5,0x15,0xe5,0x07,0x0e,0x01,0x01,0x0b,
- 0x04,0xe5,0x02,0x01,0x05,0xe6,0xe5,0x15,0x09,0x02,0x03,0xe7,0x17,0x12,0x0d,0x03,
- 0x0a,0x09,0x01,0xe5,0x02,0x01,0x1b,0x01,0xe5,0xe5,0x11,0x0d,0x0a,0xe6,0x05,0xe5,
- 0x02,0x05,0xe5,0x09,0x01,0x03,0x06,0x04,0x1b,0x01,0xe5,0xe5,0x1a,0x0a,0x0b,0x01,
- 0xe5,0x05,0x02,0xe5,0x04,0xe6,0x08,0x09,0x14,0x08,0xe5,0x01,0x06,0x11,0x0c,0x01,
- 0x11,0x04,0xe5,0x09,0x05,0x08,0x1f,0xe5,0xe7,0x0a,0x06,0x03,0x02,0x06,0x1e,0x09,
- 0x07,0x0c,0x04,0x09,0x0d,0x02,0xe5,0x01,0x06,0x09,0x05,0x03,0x04,0x06,0x02,0x10,
- 0x06,0x08,0x03,0x02,0x01,0x01,0x07,0x12,0x04,0x04,0x03,0x18,0x0d,0x02,0x0d,0x04,
- 0x05,0x02,0x03,0x03,0x05,0x03,0x05,0x11,0x09,0xe5,0xe5,0x1e,0x05,0x03,0x01,0x17,
- 0x06,0x09,0x05,0x02,0xe5,0x12,0x07,0x01,0x03,0x06,0x23,0x06,0x04,0x0b,0x10,0x01,
- 0x08,0x11,0x02,0x02,0xe5,0xe6,0x07,0x07,0x14,0x08,0x06,0x18,0x09,0x09,0x09,0x0e,
- 0x02,0xe6,0x0a,0x09,0x09,0x02,0xe5,0x1d,0xe5,0x01,0x01,0x04,0xe5,0x24,0xe6,0xe9,
- 0x01,0x01,0x08,0x09,0xe6,0x06,0xe6,0xe5,0x1e,0x02,0x01,0xe5,0x2a,0x01,0x01,0xe5,
- 0xe5,0x03,0x08,0x06,0x01,0x0a,0x2c,0xe5,0x26,0x02,0xe5,0xe6,0x01,0x0a,0x06,0xe5,
- 0x02,0x04,0x02,0x01,0x27,0x06,0xe5,0x02,0x1c,0x02,0x01,0xe6,0xe6,0x0c,0x09,0x01,
- 0x02,0x02,0x01,0x01,0x03,0x02,0xe5,0xe5,0x06,0x01,0x15,0x01,0xe5,0xe5,0xe5,0x05,
- 0x02,0x19,0xe6,0xe7,0x01,0x0a,0x03,0x05,0x01,0x02,0x01,0x01,0xe5,0xe5,0xe5,0x03,
- 0xe5,0xe5,0xe5,0x04,0x01,0x01,0x16,0x08,0x02,0x01,0x15,0x02,0x01,0xe5,0x02,0xe5,
- 0x03,0xe5,0x05,0x0e,0x04,0x01,0x03,0xe6,0xe5,0xe5,0x06,0x01,0x15,0x02,0x0b,0x1a,
- 0x02,0xe5,0xe6,0x05,0x06,0x0b,0x07,0x05,0xe5,0x01,0x01,0x07,0x01,0x18,0xe6,0x07,
- 0xe6,0x18,0x01,0xe6,0xe6,0x12,0x08,0x0a,0x02,0x25,0x14,0xe5,0x0c,0x02,0x03,0x02,
- 0x0a,0x09,0x01,0x11,0xe5,0x31,0x09,0xe5,0x12,0x02,0xe5,0x09,0x03,0x05,0xe5,0x01,
- 0x06,0x02,0x02,0x06,0x09,0x0b,0x09,0x04,0x01,0x02,0x03,0x05,0x09,0x0d,0xe9,0x01,
- 0x12,0x09,0xe5,0x2e,0x03,0x26,0xe5,0xe5,0x1e,0x31,0x2b,0xe5,0xe5,0x0a,0x01,0x09,
- 0x04,0x02,0x06,0x1f,0x07,0x01,0x0e,0x1a,0x01,0x0d,0x01,0xe5,0x04,0xe5,0x01,0xe5,
- 0x07,0x05,0x03,0x19,0x06,0x07,0xe5,0x04,0x02,0xe5,0x17,0x02,0x0c,0x0c,0x06,0x3e,
- 0x1a,0x01,0x01,0x13,0xe5,0xe6,0x04,0xe6,0x06,0xe6,0x06,0xe6,0x08,0xe5,0x09,0xe5,
- 0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x06,0x01,0xe6,0x13,0x05,0x04,0x04,0xe5,
- 0x02,0x01,0x02,0x03,0xe5,0x18,0x0a,0xe5,0x04,0x1a,0xe5,0xe6,0x15,0x07,0x01,0x09,
- 0xe5,0x07,0x18,0x11,0x1b,0xe5,0xe5,0x12,0x01,0xe5,0x02,0x02,0x01,0x07,0xe6,0xe5,
- 0x01,0x02,0x01,0x0c,0x0c,0x13,0x18,0x01,0xe6,0x12,0x06,0x01,0xe6,0x04,0x03,0x02,
- 0x02,0x02,0x1b,0x02,0x07,0x08,0x18,0xe5,0x01,0x0d,0xe5,0xe5,0x05,0x01,0xe5,0x02,
- 0x02,0x03,0x0a,0x02,0x17,0x02,0x03,0x05,0x0e,0x11,0x02,0x01,0x0a,0x06,0x01,0xe5,
- 0x01,0x03,0x01,0x04,0x02,0x01,0x07,0x01,0x01,0x05,0x01,0x02,0x01,0x04,0x01,0x01,
- 0x05,0x01,0x07,0x01,0x02,0x04,0xe6,0x06,0x01,0x0b,0x02,0x09,0x04,0x0a,0x09,0xe5,
- 0x01,0x05,0xe5,0x13,0xe5,0x01,0x03,0xe5,0x01,0x05,0x05,0x1e,0x01,0x01,0xe5,0xe5,
- 0x01,0x0b,0x04,0x05,0x04,0x01,0x05,0x03,0x12,0xe5,0xe5,0x0b,0x01,0x06,0x01,0x1d,
- 0x02,0x01,0x0b,0x0d,0x11,0x0e,0x04,0x09,0x30,0x03,0xe5,0x03,0x02,0x04,0x01,0x02,
- 0x01,0xe5,0xe7,0x04,0x01,0x01,0x07,0x01,0x0a,0x0b,0x08,0x09,0xe5,0x05,0x01,0xe5,
- 0x11,0x05,0x02,0x02,0x02,0x09,0x03,0x04,0x0a,0x0a,0x02,0x01,0x07,0x03,0x11,0x01,
- 0x01,0x05,0x05,0x0d,0x06,0x02,0xe5,0xe5,0xe6,0x0b,0x08,0x06,0xe8,0xe5,0x03,0xe5,
- 0xe5,0xe5,0x10,0x04,0x04,0x01,0x0a,0xe5,0x01,0x04,0xe6,0x16,0x02,0x01,0x05,0x0a,
- 0x06,0x02,0x02,0x04,0x01,0x15,0x04,0x05,0x04,0x0a,0x01,0x21,0x03,0xe5,0x05,0x12,
- 0x04,0x07,0x07,0x10,0x12,0x27,0xe8,0x02,0x08,0x0f,0x16,0x08,0x02,0x0a,0x05,0x03,
- 0x07,0x1c,0xe6,0xe6,0xe5,0x11,0x1a,0x01,0x02,0x08,0x01,0x06,0x1c,0x16,0xe5,0xe6,
- 0x08,0xe5,0x07,0x0c,0x02,0xe5,0x07,0x09,0x10,0x08,0x05,0xe5,0x03,0x01,0x01,0x17,
- 0x01,0xe7,0x18,0x08,0xe5,0x02,0x05,0x08,0xe5,0x07,0x16,0x05,0xe5,0x01,0x01,0x18,
- 0xe6,0x18,0x08,0x08,0xe5,0x09,0x17,0x01,0x03,0xe5,0x08,0x16,0x03,0x02,0x03,0x09,
- 0x09,0x13,0x04,0x20,0xe5,0x01,0x02,0x06,0x17,0xe5,0x01,0x01,0xe6,0x0b,0x0b,0x02,
- 0x0b,0x01,0xe7,0x22,0xe5,0x02,0x09,0x14,0x01,0x01,0x03,0xe5,0x0c,0x05,0xe5,0x0e,
- 0x02,0xe5,0x04,0x22,0xe5,0x03,0x07,0x0f,0xe5,0x03,0x01,0x04,0x01,0xe5,0xe5,0x01,
- 0x07,0x19,0xe5,0x01,0x01,0xe5,0x22,0x04,0x04,0xe5,0xe5,0x0e,0xe5,0x05,0x02,0x01,
- 0x01,0xe5,0x0b,0x12,0xe5,0x02,0x05,0x01,0x02,0xe5,0x01,0x1e,0x01,0x02,0x1f,0xeb,
- 0xe5,0x09,0x03,0x09,0x01,0x01,0xe6,0x08,0x01,0x04,0x01,0x20,0x02,0x06,0x01,0x01,
- 0x01,0x02,0x0e,0x05,0xe6,0x0b,0x13,0x09,0x01,0x27,0x01,0x04,0x04,0x15,0x04,0xe7,
- 0x0b,0x13,0x06,0x01,0xe5,0xe5,0xe5,0x2b,0xe5,0x02,0x1a,0xe6,0x1c,0x02,0x05,0xe5,
- 0x07,0xe5,0x01,0x06,0x1c,0x02,0x01,0xe5,0x05,0x02,0x0b,0x04,0xe5,0x02,0x0a,0x13,
- 0x06,0x02,0x01,0x05,0x01,0x0b,0x1d,0x1d,0x01,0xe7,0x09,0x03,0x02,0x06,0x02,0x02,
- 0x03,0x03,0x05,0xe5,0xe5,0xe7,0x01,0x0b,0x09,0x04,0x01,0x02,0x02,0x01,0xe6,0x01,
- 0x02,0x06,0x0d,0x01,0xe7,0x15,0x09,0x05,0x03,0x09,0x1f,0x09,0x1b,0xe8,0x14,0x09,
- 0x08,0x08,0x20,0x08,0x1e,0xe5,0x01,0x16,0xe5,0xe5,0x06,0x01,0x06,0xe5,0x07,0x20,
- 0x01,0xe6,0x04,0x01,0x19,0x01,0xe5,0x01,0x14,0x01,0xe5,0x05,0x01,0x01,0x01,0x06,
- 0xe5,0x07,0x1c,0x08,0xe5,0x01,0x17,0xe6,0xe6,0x15,0x01,0x04,0x40,0x01,0x18,0xe8,
- 0x14,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe6,0x01,
- 0x04,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x06,0x02,0xe5,0x16,0x01,0x07,0x01,0x57,0xe7,
- 0x03,0x12,0x01,0x07,0x01,0x13,0x1f,0x07,0x1c,0xe6,0x16,0x01,0x26,0x14,0x01,0x07,
- 0x1c,0x01,0x04,0x12,0x01,0x07,0x04,0x09,0x26,0x07,0x15,0x01,0x04,0xe6,0x0c,0x01,
- 0xe5,0x09,0x05,0xe5,0xe5,0x13,0x1b,0x06,0x02,0x10,0x04,0x03,0xe6,0xe6,0x02,0xe5,
- 0x06,0x01,0x02,0x01,0xe5,0x05,0x01,0x04,0x02,0xe6,0x06,0x01,0x01,0x05,0x01,0x04,
- 0x04,0x01,0x02,0x04,0x01,0x04,0x02,0x01,0x01,0x02,0x02,0x01,0x07,0x01,0x01,0x04,
- 0x05,0xe6,0x02,0x12,0x0e,0x07,0x03,0x0c,0x08,0x0c,0x06,0x1e,0x01,0xe7,0x1d,0x08,
- 0x01,0x0e,0x24,0x13,0x06,0xe5,0xe5,0xe5,0x14,0x09,0xe5,0x07,0xe5,0x01,0x01,0x0a,
- 0x02,0x01,0x05,0x34,0xe9,0xe5,0x01,0x02,0x0e,0x01,0x07,0x01,0xe5,0x05,0xe7,0x01,
- 0xe5,0x01,0x0f,0x0f,0x09,0x15,0x07,0xe5,0x16,0x01,0x0a,0x03,0x03,0x06,0x03,0x02,
- 0x04,0x13,0x03,0x09,0x03,0x10,0x02,0x01,0xe5,0xe6,0x18,0x06,0x0b,0xe6,0x07,0x06,
- 0x06,0x07,0x0e,0x1b,0xe9,0x0f,0x05,0x04,0x08,0x06,0xe5,0x04,0x05,0x02,0x03,0x14,
- 0x04,0x03,0x1b,0x01,0x02,0x11,0x0a,0xe5,0x07,0x06,0x11,0xe5,0x39,0x02,0x0d,0xe5,
- 0x0b,0x03,0x0c,0x10,0x01,0x39,0x01,0xe5,0xe5,0x0c,0x02,0x05,0x04,0x10,0x05,0xe5,
- 0x0a,0x3a,0xe5,0xe6,0x01,0x16,0x0d,0x02,0x06,0x05,0xe5,0x06,0xe5,0xe5,0x0e,0x25,
- 0xe5,0x01,0xe5,0x1b,0x09,0xe5,0x04,0x08,0xe5,0x07,0x02,0x19,0x11,0x0b,0x02,0x17,
- 0x15,0x06,0x02,0x0a,0x3a,0xe7,0x11,0xe5,0x04,0x0f,0x4b,0xe5,0x02,0xe6,0x01,0x01,
- 0x0e,0xe5,0x05,0x0f,0xe6,0x11,0x34,0x01,0x01,0x03,0xe5,0x03,0x05,0x01,0xe5,0xe5,
- 0x03,0xe5,0xe5,0xe6,0x0f,0x01,0x04,0x01,0xe5,0x01,0x03,0xe5,0x02,0x04,0x28,0xe5,
- 0x03,0x01,0x03,0x02,0x02,0x07,0x02,0x01,0x04,0xe5,0xe5,0xe6,0x0c,0xe5,0xe5,0xe5,
- 0x03,0xe5,0x02,0x04,0x32,0xe5,0x05,0x02,0x01,0x01,0x0b,0x01,0x01,0x02,0x04,0x21,
- 0xe5,0x01,0xe5,0xe5,0x05,0x02,0x2d,0xe7,0xe6,0x01,0x0a,0x01,0x02,0x04,0x13,0x01,
- 0x01,0x01,0x02,0x05,0x02,0xe5,0x05,0x2e,0x02,0x03,0x01,0xe6,0x17,0x11,0x01,0x07,
- 0x07,0x03,0x35,0x02,0xe8,0x11,0x06,0x11,0x01,0x09,0x03,0xe5,0x3d,0x01,0xe5,0x11,
- 0x09,0x14,0x02,0x05,0x3e,0xe7,0xe5,0x1a,0xe5,0x1e,0x3d,0xe5,0x01,0xe5,0x0a,0x02,
- 0x09,0x09,0x09,0x06,0x02,0x03,0x02,0x04,0x09,0x09,0x09,0x09,0x0d,0xe9,0x01,0x08,
- 0xe5,0x04,0x09,0x14,0x02,0x05,0x02,0xe5,0x3a,0xe5,0xe6,0x0a,0x26,0x08,0x40,0xe6,
- 0x0c,0x04,0x04,0x01,0x02,0x15,0x0b,0x04,0x36,0xe8,0x0e,0x01,0x02,0x02,0x01,0xe6,
- 0xe5,0x0f,0x0a,0x09,0xe5,0x35,0xe8,0x08,0x02,0x09,0x01,0x10,0x07,0x08,0x07,0x2e,
- 0x08,0xe7,0x0e,0x05,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x0c,0x09,0x01,0x14,0x14,0x36,
- 0x02,0xe5,0x0e,0x07,0x16,0x4d,0x01,0xe5,0x0b,0x09,0x01,0x11,0x0b,0x01,0x06,0x02,
- 0x36,0xe5,0xe6,0x02,0x0b,0x02,0x04,0x04,0x0e,0x02,0x11,0x39,0xe5,0x01,0x2b,0x15,
- 0x01,0xe5,0x20,0x12,0xe5,0xe7,0x10,0x01,0x02,0x03,0xe5,0xe5,0x06,0x01,0x02,0x04,
- 0x01,0x07,0x01,0x05,0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0b,0xe5,
- 0xe5,0x18,0x12,0x02,0x09,0x21,0x01,0x1c,0xe6,0xe6,0x13,0x1c,0x0b,0x01,0x13,0x24,
- 0xe5,0x01,0xe5,0x18,0x14,0x10,0x3b,0x02,0x17,0x01,0x0e,0x02,0x01,0x07,0xe5,0x09,
- 0x01,0x16,0x1a,0x05,0x02,0x17,0x01,0x13,0x0d,0x03,0x04,0x03,0x10,0x1c,0x02,0x02,
- 0xe6,0x19,0x09,0x06,0x05,0x0f,0x37,0x01,0xe7,0x25,0x04,0x01,0x11,0x08,0x10,0x1f,
- 0x02,0x01,0x26,0x08,0x0f,0x06,0x33,0x01,0x01,0x0a,0x10,0x0f,0x13,0x07,0x31,0x02,
- 0xe6,0x11,0x16,0x01,0x03,0x0f,0x3b,0x02,0x14,0x01,0x16,0xe5,0x0c,0x28,0x13,0x04,
- 0xe5,0x2b,0x0a,0x36,0x0a,0x01,0x01,0x2b,0xe5,0x0d,0x3e,0xe8,0xe5,0x75,0xe5,0x03,
- 0x02,0x01,0x28,0x47,0x01,0x02,0xe6,0xe5,0x03,0x23,0x01,0x4a,0x04,0xe5,0x01,0x02,
- 0x74,0x02,0xe6,0xe6,0x04,0x05,0x21,0x01,0x01,0x01,0x45,0x01,0xe6,0x01,0x08,0x25,
- 0x02,0x3f,0x02,0x05,0xe6,0x72,0x04,0xe5,0xe5,0xe5,0x01,0x2c,0x4a,0x03,0xe6,0x2d,
- 0x43,0x06,0x01,0xe5,0x7a,0xe8,0x0d,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,
- 0x0d,0x03,0xe5,0x01,0x27,0x4c,0x06,0x29,0x52,0x01,0x2d,0xe5,0x48,0x03,0x01,0x16,
- 0x03,0x14,0x4a,0xe6,0xe5,0x2c,0x03,0x4a,0xe6,0x03,0x10,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0x02,
- 0xe5,0x16,0x01,0x13,0x4c,0x03,0x17,0x01,0x63,0xe6,0x15,0x01,0x13,0x12,0x39,0x03,
- 0x03,0x13,0x01,0x16,0x49,0xe5,0xe6,0x2a,0x01,0xe5,0x49,0x02,0xe6,0x10,0x01,0x01,
- 0x05,0x01,0x02,0x03,0xe5,0xe5,0x02,0x03,0x01,0x01,0x05,0x01,0x01,0x02,0x03,0xe5,
- 0xe5,0x06,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0a,0xe5,0x01,0x5b,0x22,0xe5,0x09,
- 0x34,0x07,0x09,0x0b,0x1a,0x02,0x01,0x3f,0x3a,0xe6,0xe5,0x16,0x10,0x17,0x07,0x2b,
- 0x08,0xe5,0x19,0x16,0x09,0x03,0x3b,0xe7,0x23,0x1a,0x04,0xe5,0x33,0x01,0xe6,0x1b,
- 0x22,0x0a,0x0d,0x23,0x01,0x3f,0x3c,0xe6,0x20,0xe6,0x15,0x04,0x2a,0x09,0x06,0xe5,
- 0xe5,0x23,0x1a,0xe5,0x28,0x0f,0x02,0xe5,0x38,0x41,0xe5,0xe6,0xe5,0x24,0x04,0x1a,
- 0x30,0x01,0xe5,0xe5,0x2c,0x4c,0xe5,0x01,0xe6,0x75,0xe8,0xe5,0x01,0x01,0x70,0x01,
- 0x03,0xe5,0xe5,0x03,0x70,0x04,0xe5,0x01,0x02,0x74,0x02,0x01,0xe6,0x01,0x78,0x02,
- 0x74,0x02,0x02,0xe8,0x13,0x5f,0x04,0x03,0xe5,0x13,0xe5,0x63,0x01,0xe6,0x08,0x02,
- 0x08,0x64,0xe5,0x01,0x0a,0xe5,0x6e,0xe5,0xe6,0x0d,0x09,0x09,0x09,0x09,0x0b,0x09,
- 0x09,0x09,0x09,0x0d,0xe9,0x01,0x74,0x06,0x7a,0x03,0x01,0x2b,0x4d,0xe5,0xe5,0x23,
- 0x08,0xe5,0x47,0x02,0xe8,0x2c,0x4b,0xe5,0x01,0xe5,0x12,0x01,0x07,0xe6,0x07,0xe5,
- 0x02,0x03,0x01,0x09,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,
- 0x01,0xe6,0x0f,0xe5,0x02,0x09,0x01,0x01,0xe5,0x03,0x03,0x03,0x01,0x38,0x0b,0x01,
- 0x01,0x01,0x13,0x02,0x09,0xe5,0xe6,0x02,0x01,0x02,0x06,0x37,0x0d,0x01,0x01,0x15,
- 0x07,0xe6,0xe5,0xe5,0x04,0x03,0x05,0x47,0xe5,0xe5,0x0f,0x02,0xe5,0x07,0xe5,0x01,
- 0x01,0xe5,0x01,0xe5,0x03,0x03,0xe5,0x38,0x0e,0x01,0xe5,0x2e,0x33,0x15,0xe5,0xe5,
- 0xe5,0x10,0x01,0x07,0x01,0x07,0x01,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x02,0xe5,0xe6,
- 0x07,0x01,0xe5,0x05,0x01,0xe6,0x04,0xe7,0x05,0x01,0x07,0x01,0x0b,0xe7,0x3d,0x15,
- 0x21,0x03,0x03,0xe5,0x3e,0x38,0xe5,0xe5,0xe5,0x12,0x02,0x09,0x1e,0x07,0x32,0x03,
- 0xe5,0x19,0x05,0x01,0x0a,0x09,0x06,0x3a,0xe5,0x01,0x23,0x03,0x17,0x3a,0x03,0xe5,
- 0x1f,0x1d,0x16,0xe5,0x24,0xe5,0x1e,0x09,0x12,0x02,0x15,0x01,0x23,0xe7,0x3e,0x23,
- 0x17,0x01,0xe5,0x3e,0x3c,0xe6,0x24,0x19,0x3d,0xe6,0x1b,0xe5,0x04,0x02,0xe5,0x08,
- 0x38,0x12,0x33,0x36,0xe6,0x0b,0x01,0xe5,0xe5,0x6a,0x10,0xe6,0x02,0x0b,0xe5,0xe5,
- 0x05,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe7,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x0b,0x03,0xe5,0x0f,0x09,0x09,0x09,0x09,0x04,0x04,0x01,0x09,0x09,0x09,
- 0x01,0x07,0x0d,0xe5,0xe6,0x0e,0x09,0x03,0x05,0x09,0x09,0x04,0x06,0x04,0x04,0x04,
- 0x04,0x04,0x04,0x09,0x0e,0x03,0x26,0x57,0x0f,0x09,0x09,0x09,0x09,0x0b,0x01,0x07,
- 0x09,0x09,0x02,0x06,0x0e,0xe5,0xe6,0x0c,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x0e,0x03,0x03,0x09,0x09,
- 0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x12,0xe6,0x0d,0xe5,0xe5,0x05,0xe5,0xe5,
- 0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x07,0xe5,0xe5,0x05,0xe5,0xe5,0x05,
- 0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x0b,0x03,0x0e,0x09,0x09,0x09,0x09,0x03,
- 0x07,0x09,0x09,0x09,0x09,0x0f,0x02,0xe5,0x79,0xe5,0x01,0x0e,0x09,0x09,0x09,0x09,
- 0x08,0x02,0x09,0x09,0x09,0x09,0x11,0xe6,0x3e,0x3b,0x02,0x10,0x09,0x09,0x09,0x09,
- 0x0b,0x09,0x09,0x09,0x09,0x10,0xe5,0x7d,0x3f,0x3a,0xe5,0x01,0x3f,0x36,0x04,0x02,
- 0x7a,0x01,0x01,0x13,0x3d,0x28,0x01,0x01,0x3f,0x33,0x0a,0x3f,0x34,0x08,0xe5,0x79,
- 0x01,0x01,0x14,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0xe5,0x01,0x0f,
- 0x09,0x09,0x09,0x09,0x07,0x03,0x09,0x09,0x09,0x08,0xe5,0x0d,0x03,0x3a,0x04,0x3a,
- 0x02,0xe5,0x0c,0x09,0x03,0x05,0x09,0x09,0x03,0x07,0x09,0x09,0x07,0x01,0x1b,0x01,
- 0xe5,0x0a,0x02,0x07,0x05,0x03,0x01,0x03,0x03,0x01,0x03,0x03,0x09,0x06,0xe5,0x02,
- 0x04,0x04,0x04,0x02,0x06,0xe5,0x02,0x02,0x06,0x02,0xe5,0x02,0x03,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,
diff --git a/board/esd/canbt/u-boot.lds b/board/esd/canbt/u-boot.lds
deleted file mode 100644
index ff15b3fef9..0000000000
--- a/board/esd/canbt/u-boot.lds
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/extable.o (.text)
- lib_ppc/board.o (.text)
- lib_generic/zlib.o (.text)
- lib_generic/crc32.o (.text)
-
- common/cmd_boot.o (.text)
- common/cmd_bootm.o (.text)
- common/cmd_flash.o (.text)
- common/cmd_mem.o (.text)
- common/cmd_nvedit.o (.text)
- common/console.o (.text)
- common/lists.o (.text)
- common/main.o (.text)
- net/net.o (.text)
-
-/* . = env_offset;
- common/environment.o (.text)
-*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/cms700/Makefile b/board/esd/cms700/Makefile
deleted file mode 100644
index df487662fd..0000000000
--- a/board/esd/cms700/Makefile
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common/xilinx_jtag)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-# Objects for Xilinx JTAG programming (CPLD)
-CPLD = ../common/xilinx_jtag/lenval.o \
- ../common/xilinx_jtag/micro.o \
- ../common/xilinx_jtag/ports.o
-
-COBJS = $(BOARD).o flash.o ../common/misc.o $(CPLD)
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/cms700/cms700.c b/board/esd/cms700/cms700.c
deleted file mode 100644
index cb04710737..0000000000
--- a/board/esd/cms700/cms700.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * (C) Copyright 2005
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern void lxt971_no_sleep(void);
-
-/* fpga configuration data - not compressed, generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-int filesize = sizeof(fpgadata);
-
-
-int board_early_init_f (void)
-{
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-
- /*
- * Reset CPLD via GPIO12 (CS3) pin
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_PLD_RESET);
- udelay(1000); /* wait 1ms */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_PLD_RESET);
- udelay(1000); /* wait 1ms */
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- /* adjust flash start and offset */
- gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
- gd->bd->bi_flashoffset = 0;
-
- /*
- * Setup and enable EEPROM write protection
- */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_EEPROM_WP);
-
- /*
- * Set NAND-FLASH GPIO signals to default
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~(CFG_NAND_CLE | CFG_NAND_ALE));
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_NAND_CE);
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char str[64];
- int flashcnt;
- int delay;
- volatile unsigned char *led_reg = (unsigned char *)((ulong)CFG_PLD_BASE + 0x1000);
- volatile unsigned char *ver_reg = (unsigned char *)((ulong)CFG_PLD_BASE + 0x1001);
-
- puts ("Board: ");
-
- if (getenv_r("serial#", str, sizeof(str)) == -1) {
- puts ("### No HW ID - assuming CMS700");
- } else {
- puts(str);
- }
-
- printf(" (PLD-Version=%02d)\n", *ver_reg);
-
- /*
- * Flash LEDs
- */
- for (flashcnt = 0; flashcnt < 3; flashcnt++) {
- *led_reg = 0x00; /* LEDs off */
- for (delay = 0; delay < 100; delay++)
- udelay(1000);
- *led_reg = 0x0f; /* LEDs on */
- for (delay = 0; delay < 50; delay++)
- udelay(1000);
- }
- *led_reg = 0x70;
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#if defined(CFG_EEPROM_WREN)
-/* Input: <dev_addr> I2C address of EEPROM device to enable.
- * <state> -1: deliver current state
- * 0: disable write
- * 1: enable write
- * Returns: -1: wrong device address
- * 0: dis-/en- able done
- * 0/1: current state if <state> was -1.
- */
-int eeprom_write_enable (unsigned dev_addr, int state)
-{
- if (CFG_I2C_EEPROM_ADDR != dev_addr) {
- return -1;
- } else {
- switch (state) {
- case 1:
- /* Enable write access, clear bit GPIO_SINT2. */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_EEPROM_WP);
- state = 0;
- break;
- case 0:
- /* Disable write access, set bit GPIO_SINT2. */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_EEPROM_WP);
- state = 0;
- break;
- default:
- /* Read current status back. */
- state = (0 == (in32(GPIO0_OR) & CFG_EEPROM_WP));
- break;
- }
- }
- return state;
-}
-
-int do_eep_wren (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int query = argc == 1;
- int state = 0;
-
- if (query) {
- /* Query write access state. */
- state = eeprom_write_enable (CFG_I2C_EEPROM_ADDR, -1);
- if (state < 0) {
- puts ("Query of write access state failed.\n");
- } else {
- printf ("Write access for device 0x%0x is %sabled.\n",
- CFG_I2C_EEPROM_ADDR, state ? "en" : "dis");
- state = 0;
- }
- } else {
- if ('0' == argv[1][0]) {
- /* Disable write access. */
- state = eeprom_write_enable (CFG_I2C_EEPROM_ADDR, 0);
- } else {
- /* Enable write access. */
- state = eeprom_write_enable (CFG_I2C_EEPROM_ADDR, 1);
- }
- if (state < 0) {
- puts ("Setup of write access state failed.\n");
- }
- }
-
- return state;
-}
-
-U_BOOT_CMD(eepwren, 2, 0, do_eep_wren,
- "eepwren - Enable / disable / query EEPROM write access\n",
- NULL);
-#endif /* #if defined(CFG_EEPROM_WREN) */
-
-/* ------------------------------------------------------------------------- */
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand_legacy.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- nand_probe(CFG_NAND_BASE);
- if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
- print_size(nand_dev_desc[0].totlen, "\n");
- }
-}
-#endif
-
-void reset_phy(void)
-{
-#ifdef CONFIG_LXT971_NO_SLEEP
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-#endif
-}
diff --git a/board/esd/cms700/config.mk b/board/esd/cms700/config.mk
deleted file mode 100644
index 5c3c01cf87..0000000000
--- a/board/esd/cms700/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# esd CMS405 boards
-#
-
-TEXT_BASE = 0xFFFC0000
diff --git a/board/esd/cms700/flash.c b/board/esd/cms700/flash.c
deleted file mode 100644
index 89af1190a8..0000000000
--- a/board/esd/cms700/flash.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- switch (size_b0) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/cms700/fpgadata.c b/board/esd/cms700/fpgadata.c
deleted file mode 100644
index 08be5e7949..0000000000
--- a/board/esd/cms700/fpgadata.c
+++ /dev/null
@@ -1,1812 +0,0 @@
- 0x07,0x20,0x12,0x00,0x12,0x01,0x04,0x00,0x00,0x00,0x00,0x02,0x08,0xff,0x02,0x08,
- 0xfe,0x08,0x00,0x00,0x00,0x20,0x01,0x0f,0xff,0xff,0xff,0x09,0x00,0x00,0x00,0x00,
- 0xf9,0x60,0x40,0x93,0x02,0x08,0xff,0x02,0x08,0xff,0x02,0x08,0xe8,0x08,0x00,0x00,
- 0x00,0x06,0x01,0x00,0x09,0x05,0x00,0x02,0x08,0xed,0x04,0x00,0x03,0x0d,0x40,0x08,
- 0x00,0x00,0x00,0x12,0x01,0x00,0x00,0x00,0x09,0x03,0xff,0xff,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x03,0x09,0x03,0xff,0xfd,0x03,0xff,0xfd,0x04,0x00,0x00,0x00,0x00,0x02,
- 0x08,0xea,0x08,0x00,0x00,0x00,0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x00,0x24,0x00,0x1c,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x00,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x00,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x00,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x44,
- 0x00,0x14,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x00,
- 0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x00,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x00,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x00,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,
- 0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x00,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x01,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x04,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x08,0x10,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x10,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x28,0x10,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x01,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x01,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x01,0x48,0x0c,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x01,0x4c,0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x01,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x01,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x01,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x01,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x01,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x01,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x01,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x01,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x02,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x02,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x02,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x02,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x02,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x02,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x02,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x02,0x80,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x02,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x02,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x02,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x02,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x02,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x02,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x03,0x04,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x03,0x08,0x80,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x0c,0x00,0x00,0x03,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x10,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x20,0x00,0x1c,0x12,0x81,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x03,0x24,0x00,0x00,0x13,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x03,0x28,0x20,0x1c,0x11,0x81,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x03,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x03,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x03,0x40,0x00,0x14,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x03,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,
- 0x48,0x40,0x14,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x4c,
- 0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x03,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x03,0x80,0x00,0x0c,0x01,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x03,0x84,0x00,
- 0x24,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x03,0x88,0x00,0x34,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x03,0x8c,0x00,0x50,0x43,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x03,0x90,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x03,0xa0,0x00,0x00,0x03,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x03,0xa4,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,
- 0xa8,0x00,0x00,0x43,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xac,
- 0x00,0x5c,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xb0,0x00,
- 0x1c,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xc0,0x00,0x00,
- 0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xc4,0x00,0x00,0x00,
- 0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xc8,0x00,0x28,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xcc,0x00,0x54,0x00,0x61,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x03,0xd0,0x00,0x14,0x00,0x63,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x04,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x04,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x40,0x00,0x04,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x04,0x48,0x00,0x04,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x04,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x04,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x04,0x80,0x00,0x00,0x00,0x21,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x04,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x04,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x04,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x04,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x04,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x04,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x04,0xc0,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x04,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x04,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x04,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x05,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x05,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x05,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x05,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x05,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x05,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x05,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x05,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x40,0x20,
- 0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x44,0x20,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x4c,0x00,0x04,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x05,0x50,0x00,0x04,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x05,0x80,0x00,
- 0x08,0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x05,0x84,0x00,0x24,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x05,0x88,0x00,0x14,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,
- 0x8c,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x90,
- 0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xa0,0x00,
- 0x00,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xc0,0x00,0x00,0x00,0x81,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xc4,0x00,0x00,0x00,0x81,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xc8,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x05,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x05,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x06,0x02,0x03,0x02,0x02,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x06,0x07,0x03,0x03,0x81,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x06,0x0a,0x03,0x03,0x03,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x0f,0x02,0x03,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x12,0x03,0x03,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x23,0x03,0x03,0x03,0x81,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x27,0x03,0x03,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x29,0x03,0x03,0x03,0x81,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x06,0x2e,0x03,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x06,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x06,0x40,0x20,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x06,0x44,0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x06,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x06,0x4c,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x06,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x06,0x80,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x06,
- 0x84,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x06,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x06,0x8c,0x01,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x06,0x90,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x06,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x06,0xa4,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x06,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x06,0xac,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xc0,
- 0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x06,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x07,0x00,
- 0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x07,0x04,0x03,0x01,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x07,0x0a,0x01,0x02,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x07,0x0e,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,
- 0x12,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x22,
- 0x01,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x26,0x03,
- 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x28,0x03,0x03,
- 0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x2e,0x03,0x02,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x40,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x44,0x20,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x07,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x07,0x80,0x13,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x07,0x84,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x07,0x88,0x01,0x02,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x90,0x01,0x01,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xa0,0x00,0x02,0x03,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xa8,0x01,0x02,0x02,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xac,0x01,0x00,0x02,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x07,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x07,0xc0,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x07,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x07,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x07,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x07,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x08,0x02,0x02,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x08,0x06,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x08,0x09,0x03,0x03,0x02,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x0e,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x08,0x13,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x08,0x23,0x02,0x02,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x08,0x27,0x02,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x08,0x29,0x03,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x08,0x2f,0x03,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x08,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x08,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x08,
- 0x82,0x03,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x08,0x86,0x00,0x02,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x08,0x89,0x02,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x08,0x8e,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x08,0x93,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,
- 0xa3,0x03,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xa7,
- 0x03,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xa9,0x02,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xad,0x02,0x02,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x08,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x09,0x00,0x22,0x00,0x02,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x04,0x41,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x0a,0x03,
- 0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x0c,0x02,0x02,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x11,0x03,0x02,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x20,0x02,0x00,0x02,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x24,0x42,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x28,0x0b,0x00,0x02,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x2d,0x03,0x02,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x09,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x09,0x44,0x80,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x09,0x48,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x09,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x09,0x80,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x09,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x8a,0x02,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x8c,0x02,0x02,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x91,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x09,0xa0,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x09,0xa4,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x09,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x09,0xad,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x09,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x09,0xc0,0x00,0x40,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x0a,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,0x04,0x01,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x0a,0x08,0x01,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0a,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0a,0x10,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0a,0x20,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x28,
- 0x01,0x00,0x02,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x2c,0x03,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x44,0x00,0x00,0x80,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x0a,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0a,0x80,0x02,0x40,0x90,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,0x84,0x00,0x00,0x80,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xa4,0x02,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xa8,0x02,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xc0,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0a,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0a,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0a,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x0b,0x00,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x0b,0x04,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0b,0x09,0x01,0x02,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x0c,0x00,0x01,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x10,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x20,0x00,0x02,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0b,0x24,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0b,0x2a,0x01,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0b,0x2c,0x01,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0b,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0b,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0b,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0b,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x0b,0x80,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0b,0x84,0x01,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x0b,0x88,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0b,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0b,0x90,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0b,0xa0,0x00,0x00,0x02,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0b,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,
- 0xa8,0x03,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xac,
- 0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x0b,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0c,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,
- 0x08,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x10,0x01,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x20,0x00,0x00,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x28,0x00,0x00,0x02,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x2c,0x01,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0c,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0c,0x4c,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x0c,0x50,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0c,0x80,0x02,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x0c,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x8c,0x00,0x00,0x02,0x21,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0xa0,0x01,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0xa4,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0c,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0c,0xac,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0c,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0c,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0c,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0c,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x0d,0x02,0x03,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0d,0x07,
- 0x03,0x03,0x01,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x0d,0x0b,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0d,0x0f,0x02,0x03,0x01,0x21,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0d,0x13,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0d,0x23,0x03,0x03,0x0b,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0d,0x27,0x03,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0d,0x2b,0x0b,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,
- 0x2f,0x03,0x03,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x30,
- 0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x0d,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0d,0x80,0x60,
- 0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0d,0x84,0x40,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x0d,0x88,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0d,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x0d,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0e,0x00,0x80,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x0e,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0x08,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x0c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x10,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x20,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0e,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0e,0x40,0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0e,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0e,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0e,0x4c,0x00,0x04,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0x50,0x00,0x04,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x0e,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,
- 0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0x88,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0e,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0e,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0e,0xa0,0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0e,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0e,0xa8,0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0e,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xc0,
- 0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xc8,0x50,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xcc,0x10,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0f,0x00,
- 0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0f,0x04,0x02,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x0f,0x08,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0f,0x0c,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,
- 0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x20,
- 0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x24,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x2a,0x00,0x01,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x2c,0x00,0x01,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x30,0x00,0x80,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x40,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x48,0x10,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x0f,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0f,0x80,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x0f,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0f,0x88,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x90,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xa0,0x20,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xa4,0x00,0x80,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xa8,0x00,0x00,0x8c,0x0d,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0f,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0f,0xc0,0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0f,0xc4,0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0f,0xc8,0x00,0x00,0x60,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0f,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0f,0xd0,0x00,
- 0x80,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x10,0x00,0x01,0x0a,0x0a,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x10,0x05,0x03,0x35,0x09,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x10,0x08,0x01,0x16,0x03,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x0d,0x00,0x91,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x10,0x10,0x01,0x21,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x10,0x20,0x01,0x1f,0x03,0xe1,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x10,0x24,0x01,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x10,0x2a,0x01,0x3f,0x13,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x10,0x2e,0x01,0x1d,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x10,0x30,0x00,0x1c,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,
- 0x40,0x00,0x14,0x00,0xe1,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x44,
- 0x00,0x80,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x48,0x00,
- 0x1c,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x4c,0x00,0x94,
- 0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x10,0x50,0x00,0x94,0x00,0x63,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x10,
- 0x80,0x00,0x80,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x10,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x10,0x88,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x10,0x8c,0x00,0x40,0x40,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x10,0x90,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,
- 0xa0,0x00,0xa0,0x9c,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xa4,
- 0x00,0xa0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xa8,0x00,
- 0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xac,0x00,0x40,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xb0,0x00,0x80,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xc0,0x00,0x80,0x60,0x09,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xc4,0x00,0x08,0x08,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xc8,0x00,0x20,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xcc,0x00,0x40,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x10,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x11,0x00,0x02,0x00,0x08,0xc1,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x04,0x00,0x24,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x08,0x62,
- 0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x0c,0x02,0x82,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x10,0x02,0x02,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x20,0x02,0x9c,0x00,0x81,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x24,0x02,0x00,0x10,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x28,0x42,0x20,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x2c,0x0a,0x9c,0x00,0x81,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x11,0x40,0x00,0x94,0x08,0xe1,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x11,0x44,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x11,0x48,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x11,0x4c,0x00,0x94,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x11,0x80,0x00,0x98,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x11,0x84,0x00,0x80,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x88,0x00,0x24,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x8c,0x00,0x50,0x40,0x09,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x90,0x00,0xa0,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x11,0xa0,0x00,0x00,0x10,0x61,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x11,0xa4,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x11,0xa8,0x00,0x1c,0xdc,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x11,0xac,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x11,0xb0,0x00,0x1c,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x11,0xc0,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,
- 0xc4,0x00,0x80,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0xc8,
- 0x00,0x34,0x60,0x69,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0xcc,0x00,
- 0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0xd0,0x00,0x94,0x00,0x63,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x12,0x00,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x12,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x12,0x08,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x12,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x12,0x11,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x12,0x20,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x28,
- 0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x2d,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x12,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x12,0x80,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x12,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x12,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x8c,0x02,
- 0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x90,0x02,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xa0,0x02,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x12,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x12,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x12,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x12,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x13,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x13,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x13,0x08,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x13,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x13,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x13,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x13,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x13,0x40,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x13,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,
- 0x48,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x13,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x13,0x82,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x13,0x86,0x00,
- 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x13,0x89,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x13,0x8e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x13,0x92,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x13,0xa3,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x13,0xa7,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,
- 0xa9,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xac,
- 0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x13,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x14,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x14,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x14,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x40,0x20,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x14,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x14,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x14,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x14,0x80,0x10,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x14,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x14,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0xa0,0x10,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x14,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x14,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x14,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x14,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x14,0xc0,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x14,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x14,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x14,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x15,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x15,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x15,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x15,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x15,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x15,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x15,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x15,0x28,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x15,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x15,0x80,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x15,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x15,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xc0,0x00,0x20,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x15,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x15,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x16,0x00,0x00,0x02,0x02,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x16,0x04,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x16,0x08,0x01,0x02,0x03,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x0c,0x00,0x01,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x10,0x01,0x01,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x20,0x00,0x03,0x03,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x2a,0x01,0x03,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x16,0x2c,0x01,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x16,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x16,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x16,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x16,0x48,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x16,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x16,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x16,0x82,0x03,0x22,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x16,
- 0x87,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x16,0x8a,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x16,0x8f,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x16,0x92,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x16,0xa3,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x16,0xa7,0x03,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x16,0xa9,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x16,0xae,0x03,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x16,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x17,0x00,
- 0x03,0x08,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x17,0x04,0x03,0x01,0x09,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x17,0x0a,0x01,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x17,0x0e,0x00,0x11,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,
- 0x12,0x01,0x21,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x22,
- 0x01,0xa3,0x8f,0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x26,0x03,
- 0x82,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x28,0x03,0x1f,
- 0x13,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x2e,0x03,0x82,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x30,0x00,0x9c,0x00,0x81,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x40,0x00,0x80,0x68,0x09,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x44,0x00,0x08,0x00,0x81,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x48,0x00,0x14,0x00,0x61,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x17,0x50,0x00,0x94,0x00,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x17,0x82,0x03,0x01,0x2a,0xc1,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x17,0x86,0x03,0xb7,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x17,0x89,0x03,0x33,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x8e,0x02,0xc2,0x41,
- 0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x93,0x03,0x83,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xa3,0x03,0x1e,0x13,0x81,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xa7,0x03,0x03,0x10,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xa9,0x03,0x23,0xce,0x0d,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xaf,0x03,0x5e,0x00,0x81,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x17,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x17,0xc0,0x00,0x1c,0x00,0xe1,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x17,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x17,0xc8,0x00,0x28,0x60,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x17,0xcc,0x00,0xd4,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x17,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x18,0x00,0x02,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x18,0x04,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x18,0x0a,0x03,0x00,0x02,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x0c,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x18,0x11,0x03,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x18,0x20,0x02,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x18,0x24,0x03,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x18,0x28,0x03,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x18,0x2d,0x03,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x18,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x18,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x18,
- 0x80,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x18,0x84,0x01,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x18,0x88,0x01,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x18,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x18,0x90,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,
- 0xa0,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xa4,
- 0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xa8,0x03,
- 0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xac,0x03,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x18,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x19,0x00,0x01,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x08,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x10,0x01,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x2c,0x00,0x10,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x30,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x19,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x19,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x19,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x19,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x19,0x83,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x19,0x87,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x93,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x19,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x19,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x19,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x19,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x19,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x19,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x1a,0x00,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,0x04,0x02,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x1a,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1a,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1a,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1a,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x2c,0x00,
- 0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x30,0x00,0x08,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x48,0x00,0x00,0x40,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x1a,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1a,0x81,0x01,0x01,0x01,
- 0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,0x85,0x01,0x03,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x91,0x00,0x02,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1a,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1a,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1a,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x1b,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x1b,0x04,0x01,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1b,0x08,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x10,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1b,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1b,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1b,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1b,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1b,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1b,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1b,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x1b,0x83,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1b,0x87,0x01,
- 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x1b,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1b,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1b,0x91,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1b,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1b,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x1b,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1c,0x01,0x42,0x08,
- 0x03,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,0x05,0x02,0xa7,0x02,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,
- 0x08,0x00,0x14,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x0c,
- 0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x11,0x00,
- 0x23,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x20,0x40,0x1c,
- 0x00,0xe1,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x24,0x00,0x1c,0x00,
- 0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x28,0x00,0x1c,0x8c,0x8d,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x2c,0x00,0x9c,0x00,0x81,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x30,0x00,0x1c,0x00,0x81,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x40,0x80,0x14,0x00,0xe1,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x44,0x00,0x14,0x00,0xe1,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1c,0x48,0x00,0x1c,0x60,0x69,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1c,0x4c,0x00,0x14,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x1c,0x50,0x00,0x14,0x00,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1c,0x83,0x20,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x1c,0x87,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x93,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1c,0xa8,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1c,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1c,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1c,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1c,0xc4,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1c,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x1d,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1d,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x1d,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1d,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1d,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1d,0x20,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1d,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1d,0x28,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x1d,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1d,0x81,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1d,0x85,0x00,0x00,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x1d,0x88,0x01,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x91,
- 0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1d,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x1d,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1e,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x1e,0x04,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0x0a,0x01,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x0c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x10,0x00,0x01,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x20,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1e,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1e,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1e,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1e,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1e,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x1e,0x81,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,
- 0x84,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1e,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1e,0x90,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1e,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1e,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1e,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1e,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xc0,
- 0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xcc,0x00,0x00,0x80,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1f,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1f,0x04,0x00,0x02,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x1f,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1f,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,
- 0x10,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x20,
- 0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x24,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x28,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x2c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x40,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x1f,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1f,0x81,0x00,0x01,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x1f,0x85,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1f,0x88,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x91,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xa0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1f,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1f,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1f,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1f,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1f,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1f,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x20,0x03,0x01,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x20,0x07,0x00,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x20,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x20,0x13,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x20,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x20,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x20,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x20,0x2c,0x00,0x04,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x20,0x30,0x00,0x04,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x20,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x20,
- 0x81,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x20,0x85,0x01,0x01,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x20,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x20,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x20,0x91,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,
- 0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xc8,0x80,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x20,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x21,0x02,0x01,0x01,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x06,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x08,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x10,0x01,0x01,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x20,0x00,0x04,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x28,0x00,0x04,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x21,0x40,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x21,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x21,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x21,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x21,0x81,0x01,0x01,0x93,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x21,0x85,0x00,0x00,0x82,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x88,0x00,0x02,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x91,0x01,0x01,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x21,0xa0,0x00,0x00,0x20,0x11,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x21,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x21,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x21,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x21,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x21,0xc0,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x22,0x00,0x00,0x08,0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x22,0x04,0x01,0x24,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x22,0x08,0x00,0x34,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x22,0x0c,0x00,0x50,0x40,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x22,0x10,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x22,0x20,0x00,0x00,0x10,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,
- 0x24,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x28,
- 0x00,0x00,0x50,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x2c,0x00,
- 0x5c,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x30,0x00,0x1c,
- 0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x40,0x00,0x00,0x00,
- 0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x44,0x00,0x00,0x00,0x81,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x48,0x00,0x28,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x4c,0x00,0xd4,0x00,0x61,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x22,0x50,0x00,0x14,0x00,0x63,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x22,0x80,0x02,0x06,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x22,0x84,0x01,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x22,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x8c,0x00,
- 0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x90,0x02,0x82,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xc0,0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x22,0xc4,0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x22,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x22,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x22,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x23,0x01,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x23,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x23,0x08,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x11,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x23,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x23,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x23,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x23,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x23,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x23,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x23,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x23,0x80,0x02,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x23,0x86,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x23,0x88,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x23,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x23,0x92,0x02,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x23,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x23,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x23,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x24,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x24,0x04,0x00,0x02,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x24,
- 0x08,0x01,0x00,0x01,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x0c,
- 0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x10,0x00,
- 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x24,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x24,0x4c,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x24,0x50,0x00,0x00,0x00,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x24,0x80,0x01,0x01,0x01,0x21,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x24,0x84,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x24,0x8a,0x02,0x02,0x02,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x90,0x01,0x01,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x24,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x24,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x24,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x24,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x24,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x24,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x24,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x24,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x25,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x25,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x25,0x08,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x25,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x25,0x10,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x25,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x25,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x25,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x25,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x25,0x80,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x25,0x84,0x00,0x00,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x25,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x90,
- 0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xa0,0x04,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x25,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x25,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x26,0x00,0x03,0x00,0x02,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x26,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x26,0x08,0x00,0x03,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x0c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x10,0x03,0x00,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x20,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x26,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x26,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x26,0x40,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x26,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x26,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x26,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x26,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x26,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x26,
- 0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x26,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x26,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x26,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x26,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x26,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x26,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x26,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x26,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x27,0x01,
- 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x27,0x04,0x01,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x27,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x27,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,
- 0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x20,
- 0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x25,0x01,
- 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x28,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x2c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x40,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x27,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x27,0x80,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x27,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x27,0x88,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x90,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xa0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x27,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x27,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x27,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x27,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x27,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x27,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x28,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x28,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x28,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x28,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x28,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x28,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x28,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x28,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x28,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,
- 0x40,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x48,0x00,
- 0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x28,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x28,
- 0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x28,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x28,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x28,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x28,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,
- 0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x28,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x29,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x04,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x08,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x10,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x20,0x20,0x00,0x00,0x09,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x29,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x29,0x44,0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x29,0x48,0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x29,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x29,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x29,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x88,0x80,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x29,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x29,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x29,0xa8,0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x29,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x29,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x29,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0xc8,
- 0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0xcc,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x2a,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x2a,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2a,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2a,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2a,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x2a,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2a,0x80,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2a,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2a,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2a,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x2b,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x2b,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2b,0x08,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2b,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2b,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2b,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2b,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2b,0x40,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2b,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2b,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x2b,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2b,0x84,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x2b,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2b,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2b,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2b,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2b,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xc8,0x80,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x2b,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2c,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x28,0x00,0x00,0x04,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2c,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2c,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x2c,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2c,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x2c,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,0x88,0x00,0x00,0x00,0x21,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0xa0,0x00,0x00,0x40,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2c,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2c,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2c,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2c,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2c,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2c,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x2d,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2d,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x2d,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2d,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2d,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2d,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2d,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2d,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x2d,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2d,0x80,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2d,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x2d,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2d,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x2d,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2e,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x2e,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0x08,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x0c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x10,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x20,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x24,0x00,0x1c,0x00,0x81,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2e,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2e,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2e,0x44,0x00,0x14,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2e,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2e,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x2e,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,
- 0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2e,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2e,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2e,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2e,0xa4,0x00,0x00,0x8c,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2e,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2e,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xc4,0x00,
- 0x00,0x60,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2f,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2f,0x04,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x2f,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2f,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,
- 0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x20,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x24,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x28,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x2c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x40,0x00,0x00,0x00,0x41,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x48,0x00,0x00,0x00,0x41,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x2f,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2f,0x80,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x2f,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2f,0x88,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x90,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xa0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2f,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2f,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2f,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2f,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2f,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2f,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x30,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x30,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x30,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x30,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x30,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x30,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x30,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x30,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x30,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x4c,0x00,0x10,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x30,0x50,0x00,0x10,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x30,
- 0x80,0xe0,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x30,0x84,0xc0,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x30,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x30,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x30,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,
- 0xa0,0x60,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xa4,
- 0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xa8,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xc0,0x40,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xc4,0x40,0x00,0x00,0x05,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xc8,0x10,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x30,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x31,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x04,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x08,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x10,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x31,0x40,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x31,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x31,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x31,0x4c,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x31,0x80,0x00,0x00,0x90,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x31,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x31,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x31,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x31,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x31,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x31,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x31,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x32,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x32,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x32,0x08,0x00,0xc0,0xd4,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x32,0x0c,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x32,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x32,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x28,
- 0x00,0xc0,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x2c,0x00,
- 0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x48,0x00,0xc0,0x84,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x4c,0x00,0x20,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x32,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x32,0x80,0x08,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x32,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x32,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xa0,0x04,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x32,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x32,0xc8,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x32,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x32,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x33,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x33,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x33,0x08,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x33,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x33,0x28,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x33,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x33,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x33,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x33,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x33,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x33,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x33,0x84,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x33,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x33,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x33,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x33,0xa0,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x33,0xa4,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x33,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x34,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x34,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x34,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x20,0x00,0x00,
- 0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x34,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x34,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x34,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x34,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x34,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x34,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x34,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x34,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x34,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x34,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x34,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x34,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x34,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x34,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x35,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x35,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x35,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x35,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x35,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x35,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x35,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x35,0x28,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x35,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x35,0x80,0x00,
- 0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x35,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x35,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xa4,0x00,0x1c,
- 0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xc4,0x00,0x14,0x00,0x61,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x35,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x35,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x35,0xd0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x02,0x08,0xff,0x04,0x00,0x00,
- 0x00,0x64,0x02,0x08,0xf0,0x04,0x00,0x00,0x00,0x00,0x02,0x08,0xff,0x02,0x08,0xff,
- 0x08,0x00,0x00,0x00,0x01,0x01,0x00,0x09,0x00,0x00,0x00,
diff --git a/board/esd/cms700/u-boot.lds b/board/esd/cms700/u-boot.lds
deleted file mode 100644
index f7a20d1da2..0000000000
--- a/board/esd/cms700/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/common/auto_update.c b/board/esd/common/auto_update.c
deleted file mode 100644
index 5cd342332f..0000000000
--- a/board/esd/common/auto_update.c
+++ /dev/null
@@ -1,561 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * Gary Jennejohn, DENX Software Engineering, gj@denx.de.
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND) && !defined(CFG_NAND_LEGACY)
-#warning CFG_NAND_LEGACY not defined in a file using the legacy NAND support!
-#endif
-
-#include <command.h>
-#include <image.h>
-#include <asm/byteorder.h>
-#include <linux/mtd/nand_legacy.h>
-#include <fat.h>
-
-#include "auto_update.h"
-
-#ifdef CONFIG_AUTO_UPDATE
-
-#if !(CONFIG_COMMANDS & CFG_CMD_FAT)
-#error "must define CFG_CMD_FAT"
-#endif
-
-extern au_image_t au_image[];
-extern int N_AU_IMAGES;
-
-#define AU_DEBUG
-#undef AU_DEBUG
-
-#undef debug
-#ifdef AU_DEBUG
-#define debug(fmt,args...) printf (fmt ,##args)
-#else
-#define debug(fmt,args...)
-#endif /* AU_DEBUG */
-
-
-#define LOAD_ADDR ((unsigned char *)0x100000) /* where to load files into memory */
-#define MAX_LOADSZ 0x1e00000
-
-/* externals */
-extern int fat_register_device(block_dev_desc_t *, int);
-extern int file_fat_detectfs(void);
-extern long file_fat_read(const char *, void *, unsigned long);
-long do_fat_read (const char *filename, void *buffer, unsigned long maxsize, int dols);
-#ifdef CONFIG_VFD
-extern int trab_vfd (ulong);
-extern int transfer_pic(unsigned char, unsigned char *, int, int);
-#endif
-extern int flash_sect_erase(ulong, ulong);
-extern int flash_sect_protect (int, ulong, ulong);
-extern int flash_write (char *, ulong, ulong);
-/* change char* to void* to shutup the compiler */
-extern block_dev_desc_t *get_dev (char*, int);
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND) && defined(CFG_NAND_LEGACY)
-/* references to names in cmd_nand.c */
-#define NANDRW_READ 0x01
-#define NANDRW_WRITE 0x00
-#define NANDRW_JFFS2 0x02
-#define NANDRW_JFFS2_SKIP 0x04
-extern struct nand_chip nand_dev_desc[];
-extern int nand_legacy_rw(struct nand_chip* nand, int cmd, size_t start, size_t len,
- size_t * retlen, u_char * buf);
-extern int nand_legacy_erase(struct nand_chip* nand, size_t ofs, size_t len, int clean);
-#endif /* (CONFIG_COMMANDS & CFG_CMD_NAND) && defined(CFG_NAND_LEGACY) */
-
-extern block_dev_desc_t ide_dev_desc[CFG_IDE_MAXDEVICE];
-
-
-int au_check_cksum_valid(int i, long nbytes)
-{
- image_header_t *hdr;
- unsigned long checksum;
-
- hdr = (image_header_t *)LOAD_ADDR;
-
- if ((au_image[i].type == AU_FIRMWARE) && (au_image[i].size != ntohl(hdr->ih_size))) {
- printf ("Image %s has wrong size\n", au_image[i].name);
- return -1;
- }
-
- if (nbytes != (sizeof(*hdr) + ntohl(hdr->ih_size))) {
- printf ("Image %s bad total SIZE\n", au_image[i].name);
- return -1;
- }
- /* check the data CRC */
- checksum = ntohl(hdr->ih_dcrc);
-
- if (crc32 (0, (uchar *)(LOAD_ADDR + sizeof(*hdr)), ntohl(hdr->ih_size))
- != checksum) {
- printf ("Image %s bad data checksum\n", au_image[i].name);
- return -1;
- }
- return 0;
-}
-
-
-int au_check_header_valid(int i, long nbytes)
-{
- image_header_t *hdr;
- unsigned long checksum;
-
- hdr = (image_header_t *)LOAD_ADDR;
- /* check the easy ones first */
-#undef CHECK_VALID_DEBUG
-#ifdef CHECK_VALID_DEBUG
- printf("magic %#x %#x ", ntohl(hdr->ih_magic), IH_MAGIC);
- printf("arch %#x %#x ", hdr->ih_arch, IH_CPU_PPC);
- printf("size %#x %#lx ", ntohl(hdr->ih_size), nbytes);
- printf("type %#x %#x ", hdr->ih_type, IH_TYPE_KERNEL);
-#endif
- if (nbytes < sizeof(*hdr))
- {
- printf ("Image %s bad header SIZE\n", au_image[i].name);
- return -1;
- }
- if (ntohl(hdr->ih_magic) != IH_MAGIC || hdr->ih_arch != IH_CPU_PPC)
- {
- printf ("Image %s bad MAGIC or ARCH\n", au_image[i].name);
- return -1;
- }
- /* check the hdr CRC */
- checksum = ntohl(hdr->ih_hcrc);
- hdr->ih_hcrc = 0;
-
- if (crc32 (0, (uchar *)hdr, sizeof(*hdr)) != checksum) {
- printf ("Image %s bad header checksum\n", au_image[i].name);
- return -1;
- }
- hdr->ih_hcrc = htonl(checksum);
-
- /* check the type - could do this all in one gigantic if() */
- if ((au_image[i].type == AU_FIRMWARE) && (hdr->ih_type != IH_TYPE_FIRMWARE)) {
- printf ("Image %s wrong type\n", au_image[i].name);
- return -1;
- }
- if ((au_image[i].type == AU_SCRIPT) && (hdr->ih_type != IH_TYPE_SCRIPT)) {
- printf ("Image %s wrong type\n", au_image[i].name);
- return -1;
- }
-
- /* recycle checksum */
- checksum = ntohl(hdr->ih_size);
-
-#if 0 /* test-only */
- /* for kernel and app the image header must also fit into flash */
- if (idx != IDX_DISK)
- checksum += sizeof(*hdr);
- /* check the size does not exceed space in flash. HUSH scripts */
- /* all have ausize[] set to 0 */
- if ((ausize[idx] != 0) && (ausize[idx] < checksum)) {
- printf ("Image %s is bigger than FLASH\n", au_image[i].name);
- return -1;
- }
-#endif
-
- return 0;
-}
-
-
-int au_do_update(int i, long sz)
-{
- image_header_t *hdr;
- char *addr;
- long start, end;
- int off, rc;
- uint nbytes;
- int k;
-#if (CONFIG_COMMANDS & CFG_CMD_NAND) && defined(CFG_NAND_LEGACY)
- int total;
-#endif
-
- hdr = (image_header_t *)LOAD_ADDR;
-
- switch (au_image[i].type) {
- case AU_SCRIPT:
- printf("Executing script %s\n", au_image[i].name);
-
- /* execute a script */
- if (hdr->ih_type == IH_TYPE_SCRIPT) {
- addr = (char *)((char *)hdr + sizeof(*hdr));
- /* stick a NULL at the end of the script, otherwise */
- /* parse_string_outer() runs off the end. */
- addr[ntohl(hdr->ih_size)] = 0;
- addr += 8;
-
- /*
- * Replace cr/lf with ;
- */
- k = 0;
- while (addr[k] != 0) {
- if ((addr[k] == 10) || (addr[k] == 13)) {
- addr[k] = ';';
- }
- k++;
- }
-
- run_command(addr, 0);
- return 0;
- }
-
- break;
-
- case AU_FIRMWARE:
- case AU_NOR:
- case AU_NAND:
- start = au_image[i].start;
- end = au_image[i].start + au_image[i].size - 1;
-
- /*
- * do not update firmware when image is already in flash.
- */
- if (au_image[i].type == AU_FIRMWARE) {
- char *orig = (char*)start;
- char *new = (char *)((char *)hdr + sizeof(*hdr));
- nbytes = ntohl(hdr->ih_size);
-
- while(--nbytes) {
- if (*orig++ != *new++) {
- break;
- }
- }
- if (!nbytes) {
- printf("Skipping firmware update - images are identical\n");
- break;
- }
- }
-
- /* unprotect the address range */
- /* this assumes that ONLY the firmware is protected! */
- if (au_image[i].type == AU_FIRMWARE) {
- flash_sect_protect(0, start, end);
- }
-
- /*
- * erase the address range.
- */
- if (au_image[i].type != AU_NAND) {
- printf("Updating NOR FLASH with image %s\n", au_image[i].name);
- debug ("flash_sect_erase(%lx, %lx);\n", start, end);
- flash_sect_erase(start, end);
- } else {
-#if (CONFIG_COMMANDS & CFG_CMD_NAND) && defined(CFG_NAND_LEGACY)
- printf("Updating NAND FLASH with image %s\n", au_image[i].name);
- debug ("nand_legacy_erase(%lx, %lx);\n", start, end);
- rc = nand_legacy_erase (nand_dev_desc, start, end - start + 1, 0);
- debug ("nand_legacy_erase returned %x\n", rc);
-#endif
- }
-
- udelay(10000);
-
- /* strip the header - except for the kernel and ramdisk */
- if (au_image[i].type != AU_FIRMWARE) {
- addr = (char *)hdr;
- off = sizeof(*hdr);
- nbytes = sizeof(*hdr) + ntohl(hdr->ih_size);
- } else {
- addr = (char *)((char *)hdr + sizeof(*hdr));
- off = 0;
- nbytes = ntohl(hdr->ih_size);
- }
-
- /*
- * copy the data from RAM to FLASH
- */
- if (au_image[i].type != AU_NAND) {
- debug ("flash_write(%p, %lx %x)\n", addr, start, nbytes);
- rc = flash_write((char *)addr, start, nbytes);
- } else {
-#if (CONFIG_COMMANDS & CFG_CMD_NAND) && defined(CFG_NAND_LEGACY)
- debug ("nand_legacy_rw(%p, %lx %x)\n", addr, start, nbytes);
- rc = nand_legacy_rw(nand_dev_desc, NANDRW_WRITE | NANDRW_JFFS2,
- start, nbytes, (size_t *)&total, (uchar *)addr);
- debug ("nand_legacy_rw: ret=%x total=%d nbytes=%d\n", rc, total, nbytes);
-#endif
- }
- if (rc != 0) {
- printf("Flashing failed due to error %d\n", rc);
- return -1;
- }
-
- /*
- * check the dcrc of the copy
- */
- if (au_image[i].type != AU_NAND) {
- rc = crc32 (0, (uchar *)(start + off), ntohl(hdr->ih_size));
- } else {
-#if (CONFIG_COMMANDS & CFG_CMD_NAND) && defined(CFG_NAND_LEGACY)
- rc = nand_legacy_rw(nand_dev_desc, NANDRW_READ | NANDRW_JFFS2 | NANDRW_JFFS2_SKIP,
- start, nbytes, (size_t *)&total, (uchar *)addr);
- rc = crc32 (0, (uchar *)(addr + off), ntohl(hdr->ih_size));
-#endif
- }
- if (rc != ntohl(hdr->ih_dcrc)) {
- printf ("Image %s Bad Data Checksum After COPY\n", au_image[i].name);
- return -1;
- }
-
- /* protect the address range */
- /* this assumes that ONLY the firmware is protected! */
- if (au_image[i].type == AU_FIRMWARE) {
- flash_sect_protect(1, start, end);
- }
-
- break;
-
- default:
- printf("Wrong image type selected!\n");
- }
-
- return 0;
-}
-
-
-static void process_macros (const char *input, char *output)
-{
- char c, prev;
- const char *varname_start = NULL;
- int inputcnt = strlen (input);
- int outputcnt = CFG_CBSIZE;
- int state = 0; /* 0 = waiting for '$' */
- /* 1 = waiting for '(' or '{' */
- /* 2 = waiting for ')' or '}' */
- /* 3 = waiting for ''' */
-#ifdef DEBUG_PARSER
- char *output_start = output;
-
- printf ("[PROCESS_MACROS] INPUT len %d: \"%s\"\n", strlen(input), input);
-#endif
-
- prev = '\0'; /* previous character */
-
- while (inputcnt && outputcnt) {
- c = *input++;
- inputcnt--;
-
- if (state!=3) {
- /* remove one level of escape characters */
- if ((c == '\\') && (prev != '\\')) {
- if (inputcnt-- == 0)
- break;
- prev = c;
- c = *input++;
- }
- }
-
- switch (state) {
- case 0: /* Waiting for (unescaped) $ */
- if ((c == '\'') && (prev != '\\')) {
- state = 3;
- break;
- }
- if ((c == '$') && (prev != '\\')) {
- state++;
- } else {
- *(output++) = c;
- outputcnt--;
- }
- break;
- case 1: /* Waiting for ( */
- if (c == '(' || c == '{') {
- state++;
- varname_start = input;
- } else {
- state = 0;
- *(output++) = '$';
- outputcnt--;
-
- if (outputcnt) {
- *(output++) = c;
- outputcnt--;
- }
- }
- break;
- case 2: /* Waiting for ) */
- if (c == ')' || c == '}') {
- int i;
- char envname[CFG_CBSIZE], *envval;
- int envcnt = input-varname_start-1; /* Varname # of chars */
-
- /* Get the varname */
- for (i = 0; i < envcnt; i++) {
- envname[i] = varname_start[i];
- }
- envname[i] = 0;
-
- /* Get its value */
- envval = getenv (envname);
-
- /* Copy into the line if it exists */
- if (envval != NULL)
- while ((*envval) && outputcnt) {
- *(output++) = *(envval++);
- outputcnt--;
- }
- /* Look for another '$' */
- state = 0;
- }
- break;
- case 3: /* Waiting for ' */
- if ((c == '\'') && (prev != '\\')) {
- state = 0;
- } else {
- *(output++) = c;
- outputcnt--;
- }
- break;
- }
- prev = c;
- }
-
- if (outputcnt)
- *output = 0;
-
-#ifdef DEBUG_PARSER
- printf ("[PROCESS_MACROS] OUTPUT len %d: \"%s\"\n",
- strlen(output_start), output_start);
-#endif
-}
-
-
-/*
- * this is called from board_init() after the hardware has been set up
- * and is usable. That seems like a good time to do this.
- * Right now the return value is ignored.
- */
-int do_auto_update(void)
-{
- block_dev_desc_t *stor_dev;
- long sz;
- int i, res, cnt, old_ctrlc, got_ctrlc;
- char buffer[32];
- char str[80];
-
- /*
- * Check whether a CompactFlash is inserted
- */
- if (ide_dev_desc[0].type == DEV_TYPE_UNKNOWN) {
- return -1; /* no disk detected! */
- }
-
- /* check whether it has a partition table */
- stor_dev = get_dev("ide", 0);
- if (stor_dev == NULL) {
- debug ("Uknown device type\n");
- return -1;
- }
- if (fat_register_device(stor_dev, 1) != 0) {
- debug ("Unable to register ide disk 0:1 for fatls\n");
- return -1;
- }
-
- /*
- * Check if magic file is present
- */
- if (do_fat_read(AU_MAGIC_FILE, buffer, sizeof(buffer), LS_NO) <= 0) {
- return -1;
- }
-
-#ifdef CONFIG_AUTO_UPDATE_SHOW
- board_auto_update_show(1);
-#endif
- puts("\nAutoUpdate Disk detected! Trying to update system...\n");
-
- /* make sure that we see CTRL-C and save the old state */
- old_ctrlc = disable_ctrlc(0);
-
- /* just loop thru all the possible files */
- for (i = 0; i < N_AU_IMAGES; i++) {
- /*
- * Try to expand the environment var in the fname
- */
- process_macros(au_image[i].name, str);
- strcpy(au_image[i].name, str);
-
- printf("Reading %s ...", au_image[i].name);
- /* just read the header */
- sz = do_fat_read(au_image[i].name, LOAD_ADDR, sizeof(image_header_t), LS_NO);
- debug ("read %s sz %ld hdr %d\n",
- au_image[i].name, sz, sizeof(image_header_t));
- if (sz <= 0 || sz < sizeof(image_header_t)) {
- puts(" not found\n");
- continue;
- }
- if (au_check_header_valid(i, sz) < 0) {
- puts(" header not valid\n");
- continue;
- }
- sz = do_fat_read(au_image[i].name, LOAD_ADDR, MAX_LOADSZ, LS_NO);
- debug ("read %s sz %ld hdr %d\n",
- au_image[i].name, sz, sizeof(image_header_t));
- if (sz <= 0 || sz <= sizeof(image_header_t)) {
- puts(" not found\n");
- continue;
- }
- if (au_check_cksum_valid(i, sz) < 0) {
- puts(" checksum not valid\n");
- continue;
- }
- puts(" done\n");
-
- do {
- res = au_do_update(i, sz);
- /* let the user break out of the loop */
- if (ctrlc() || had_ctrlc()) {
- clear_ctrlc();
- if (res < 0)
- got_ctrlc = 1;
- break;
- }
- cnt++;
- } while (res < 0);
- }
-
- /* restore the old state */
- disable_ctrlc(old_ctrlc);
-
- puts("AutoUpdate finished\n\n");
-#ifdef CONFIG_AUTO_UPDATE_SHOW
- board_auto_update_show(0);
-#endif
-
- return 0;
-}
-
-
-int auto_update(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- do_auto_update();
-
- return 0;
-}
-U_BOOT_CMD(
- autoupd, 1, 1, auto_update,
- "autoupd - Automatically update images\n",
- NULL
-);
-#endif /* CONFIG_AUTO_UPDATE */
diff --git a/board/esd/common/auto_update.h b/board/esd/common/auto_update.h
deleted file mode 100644
index e2af3c7b15..0000000000
--- a/board/esd/common/auto_update.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * (C) Copyright 2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#ifndef _AUTO_UPDATE_H_
-#define _AUTO_UPDATE_H_
-
-#define MBR_MAGIC 0x07081967
-#define MBR_MAGIC_ADDR 0x100 /* offset 0x100 should be free space */
-
-#define AU_MAGIC_FILE "__auto_update"
-
-#define AU_SCRIPT 1
-#define AU_FIRMWARE 2
-#define AU_NOR 3
-#define AU_NAND 4
-
-struct au_image_s {
- char name[80];
- ulong start;
- ulong size;
- int type;
-};
-
-typedef struct au_image_s au_image_t;
-
-int do_auto_update(void);
-#ifdef CONFIG_AUTO_UPDATE_SHOW
-void board_auto_update_show(int au_active);
-#endif
-
-#endif /* #ifndef _AUTO_UPDATE_H_ */
diff --git a/board/esd/common/cmd_loadpci.c b/board/esd/common/cmd_loadpci.c
deleted file mode 100644
index bf796ff9d1..0000000000
--- a/board/esd/common/cmd_loadpci.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * (C) Copyright 2005
- * Matthias Fuchs, esd GmbH Germany, matthias.fuchs@esd-electronics.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
- */
-
-#include <common.h>
-#include <command.h>
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-
-extern int do_bootm (cmd_tbl_t *, int, int, char *[]);
-extern int do_autoscript (cmd_tbl_t *, int, int, char *[]);
-
-#define ADDRMASK 0xfffff000
-
-/*
- * Command loadpci: wait for signal from host and boot image.
- */
-int do_loadpci(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int *ptr = 0;
- int count = 0;
- int count2 = 0;
- char addr[16];
- char str[] = "\\|/-";
- char *local_args[2];
-
- while(1) {
- /*
- * Mark sync address
- */
- ptr = 0;
- memset(ptr, 0, 0x20);
-
- *ptr = 0xffffffff;
- puts("\nWaiting for action from pci host -");
-
- /*
- * Wait for host to write the start address
- */
- while (*ptr == 0xffffffff) {
- count++;
- if (!(count % 100)) {
- count2++;
- putc(0x08); /* backspace */
- putc(str[count2 % 4]);
- }
-
- /* Abort if ctrl-c was pressed */
- if (ctrlc()) {
- puts("\nAbort\n");
- return 0;
- }
-
- udelay(1000);
- }
-
- printf("\nGot bootcode %08x: ", *ptr);
- sprintf(addr, "%08x", *ptr & ADDRMASK);
-
- switch (*ptr & ~ADDRMASK) {
- case 0:
- /*
- * Boot image via bootm
- */
- printf("booting image at addr 0x%s ...\n", addr);
- setenv("loadaddr", addr);
-
- do_bootm (cmdtp, 0, 0, NULL);
- break;
-
- case 1:
- /*
- * Boot image via autoscr
- */
- printf("executing script at addr 0x%s ...\n", addr);
-
- local_args[0] = addr;
- local_args[1] = NULL;
- do_autoscript(cmdtp, 0, 1, local_args);
- break;
-
- case 2:
- /*
- * Call run_cmd
- */
- printf("running command at addr 0x%s ...\n", addr);
- run_command ((char*)(*ptr & ADDRMASK), 0);
- break;
-
- default:
- printf("unhandled boot method\n");
- break;
- }
- }
-}
-
-U_BOOT_CMD(
- loadpci, 1, 1, do_loadpci,
- "loadpci - Wait for pci bootcmd and boot it\n",
- NULL
- );
-
-#endif
diff --git a/board/esd/common/flash.c b/board/esd/common/flash.c
deleted file mode 100644
index dca10be1b5..0000000000
--- a/board/esd/common/flash.c
+++ /dev/null
@@ -1,672 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
- short n;
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324B)) {
- /* set sector offsets for bottom boot block type */
- for (i=0; i<8; ++i) { /* 8 x 8k boot sectors */
- info->start[i] = base;
- base += 8 << 10;
- }
- while (i < info->sector_count) { /* 64k regular sectors */
- info->start[i] = base;
- base += 64 << 10;
- ++i;
- }
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324T)) {
- /* set sector offsets for top boot block type */
- base += info->size;
- i = info->sector_count;
- for (n=0; n<8; ++n) { /* 8 x 8k boot sectors */
- base -= 8 << 10;
- --i;
- info->start[i] = base;
- }
- while (i > 0) { /* 64k regular sectors */
- base -= 64 << 10;
- --i;
- info->start[i] = base;
- }
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_EXCEL: printf ("Excel Semiconductor "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 M, top sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 M, bottom sector)\n");
- break;
- case FLASH_AMDL322T: printf ("AM29DL322T (32 M, top sector)\n");
- break;
- case FLASH_AMDL322B: printf ("AM29DL322B (32 M, bottom sector)\n");
- break;
- case FLASH_AMDL323T: printf ("AM29DL323T (32 M, top sector)\n");
- break;
- case FLASH_AMDL323B: printf ("AM29DL323B (32 M, bottom sector)\n");
- break;
- case FLASH_AM640U: printf ("AM29LV640D (64 M, uniform sector)\n");
- break;
- case FLASH_SST800A: printf ("SST39LF/VF800 (8 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST160A: printf ("SST39LF/VF160 (16 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST320: printf ("SST39LF/VF320 (32 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST640: printf ("SST39LF/VF640 (64 Mbit, uniform sector size)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
-#ifdef CFG_FLASH_EMPTY_INFO
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++)
- {
- if (*flash++ != 0xffffffff)
- {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- /* print empty and read-only info */
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
-#else
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
-#endif
-
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- short n;
- CFG_FLASH_WORD_SIZE value;
- ulong base = (ulong)addr;
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00900090;
-
- value = addr2[CFG_FLASH_READ0];
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (CFG_FLASH_WORD_SIZE)FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (CFG_FLASH_WORD_SIZE)SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case (CFG_FLASH_WORD_SIZE)EXCEL_MANUFACT:
- info->flash_id = FLASH_MAN_EXCEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[CFG_FLASH_READ1]; /* device ID */
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL322T:
- info->flash_id += FLASH_AMDL322T;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL322B:
- info->flash_id += FLASH_AMDL322B;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL323T:
- info->flash_id += FLASH_AMDL323T;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL323B:
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV640U:
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x00800000; break; /* => 8 MB */
-
-#if !(defined(CONFIG_ADCIOP) || defined(CONFIG_DASA_SIM))
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF800A:
- info->flash_id += FLASH_SST800A;
- info->sector_count = 16;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF160A:
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF1601:
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF1602:
- info->flash_id += FLASH_SST160A;
- info->sector_count = 32;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF3201:
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF3202:
- info->flash_id += FLASH_SST320;
- info->sector_count = 64;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF6401:
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF6402:
- info->flash_id += FLASH_SST640;
- info->sector_count = 128;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324B)) {
- /* set sector offsets for bottom boot block type */
- for (i=0; i<8; ++i) { /* 8 x 8k boot sectors */
- info->start[i] = base;
- base += 8 << 10;
- }
- while (i < info->sector_count) { /* 64k regular sectors */
- info->start[i] = base;
- base += 64 << 10;
- ++i;
- }
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324T)) {
- /* set sector offsets for top boot block type */
- base += info->size;
- i = info->sector_count;
- for (n=0; n<8; ++n) { /* 8 x 8k boot sectors */
- base -= 8 << 10;
- --i;
- info->start[i] = base;
- }
- while (i > 0) { /* 64k regular sectors */
- base -= 64 << 10;
- --i;
- info->start[i] = base;
- }
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_AMD)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[CFG_FLASH_READ2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (CFG_FLASH_WORD_SIZE *)info->start[0];
- *addr2 = (CFG_FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *)(info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- ulong start, now, last;
- int i;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *)(info->start[sect]);
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE)0x00500050; /* block erase */
- for (i=0; i<50; i++)
- udelay(1000); /* wait 1 ms */
- } else {
- if (sect == s_first) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- }
- addr2[0] = (CFG_FLASH_WORD_SIZE)0x00300030; /* sector erase */
- }
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (CFG_FLASH_WORD_SIZE *)(info->start[l_sect]);
- while ((addr[0] & (CFG_FLASH_WORD_SIZE)0x00800080) != (CFG_FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (CFG_FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (CFG_FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *)(info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *)dest;
- volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *)&data;
- ulong start;
- int flag;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- for (i=0; i<4/sizeof(CFG_FLASH_WORD_SIZE); i++)
- {
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (CFG_FLASH_WORD_SIZE)0x00800080) !=
- (data2[i] & (CFG_FLASH_WORD_SIZE)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/esd/common/fpga.c b/board/esd/common/fpga.c
deleted file mode 100644
index ad56402693..0000000000
--- a/board/esd/common/fpga.c
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef FPGA_DEBUG
-#define DBG(x...) printf(x)
-#else
-#define DBG(x...)
-#endif /* DEBUG */
-
-#define MAX_ONES 226
-
-#ifdef CFG_FPGA_PRG
-# define FPGA_PRG CFG_FPGA_PRG /* FPGA program pin (ppc output)*/
-# define FPGA_CLK CFG_FPGA_CLK /* FPGA clk pin (ppc output) */
-# define FPGA_DATA CFG_FPGA_DATA /* FPGA data pin (ppc output) */
-# define FPGA_DONE CFG_FPGA_DONE /* FPGA done pin (ppc input) */
-# define FPGA_INIT CFG_FPGA_INIT /* FPGA init pin (ppc input) */
-#else
-# define FPGA_PRG 0x04000000 /* FPGA program pin (ppc output) */
-# define FPGA_CLK 0x02000000 /* FPGA clk pin (ppc output) */
-# define FPGA_DATA 0x01000000 /* FPGA data pin (ppc output) */
-# define FPGA_DONE 0x00800000 /* FPGA done pin (ppc input) */
-# define FPGA_INIT 0x00400000 /* FPGA init pin (ppc input) */
-#endif
-
-#define ERROR_FPGA_PRG_INIT_LOW -1 /* Timeout after PRG* asserted */
-#define ERROR_FPGA_PRG_INIT_HIGH -2 /* Timeout after PRG* deasserted */
-#define ERROR_FPGA_PRG_DONE -3 /* Timeout after programming */
-
-#ifndef SET_FPGA
-# define SET_FPGA(data) out32(GPIO0_OR, data)
-#endif
-
-#ifdef FPGA_PROG_ACTIVE_HIGH
-# define FPGA_PRG_LOW FPGA_PRG
-# define FPGA_PRG_HIGH 0
-#else
-# define FPGA_PRG_LOW 0
-# define FPGA_PRG_HIGH FPGA_PRG
-#endif
-
-#define FPGA_CLK_LOW 0
-#define FPGA_CLK_HIGH FPGA_CLK
-
-#define FPGA_DATA_LOW 0
-#define FPGA_DATA_HIGH FPGA_DATA
-
-#define FPGA_WRITE_1 { \
- SET_FPGA(FPGA_PRG_HIGH | FPGA_CLK_LOW | FPGA_DATA_HIGH); /* set clock to 0 */ \
- SET_FPGA(FPGA_PRG_HIGH | FPGA_CLK_LOW | FPGA_DATA_HIGH); /* set data to 1 */ \
- SET_FPGA(FPGA_PRG_HIGH | FPGA_CLK_HIGH | FPGA_DATA_HIGH); /* set clock to 1 */ \
- SET_FPGA(FPGA_PRG_HIGH | FPGA_CLK_HIGH | FPGA_DATA_HIGH);} /* set data to 1 */
-
-#define FPGA_WRITE_0 { \
- SET_FPGA(FPGA_PRG_HIGH | FPGA_CLK_LOW | FPGA_DATA_HIGH); /* set clock to 0 */ \
- SET_FPGA(FPGA_PRG_HIGH | FPGA_CLK_LOW | FPGA_DATA_LOW); /* set data to 0 */ \
- SET_FPGA(FPGA_PRG_HIGH | FPGA_CLK_HIGH | FPGA_DATA_LOW); /* set clock to 1 */ \
- SET_FPGA(FPGA_PRG_HIGH | FPGA_CLK_HIGH | FPGA_DATA_HIGH);} /* set data to 1 */
-
-#ifndef FPGA_DONE_STATE
-# define FPGA_DONE_STATE (in32(GPIO0_IR) & FPGA_DONE)
-#endif
-#ifndef FPGA_INIT_STATE
-# define FPGA_INIT_STATE (in32(GPIO0_IR) & FPGA_INIT)
-#endif
-
-
-static int fpga_boot(unsigned char *fpgadata, int size)
-{
- int i,index,len;
- int count;
-#ifdef CFG_FPGA_SPARTAN2
- int j;
-#else
- unsigned char b;
- int bit;
-#endif
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++)
- {
- len = fpgadata[index];
- DBG("FPGA: %s\n", &(fpgadata[index+1]));
- index += len+3;
- }
-
-#ifdef CFG_FPGA_SPARTAN2
- /* search for preamble 0xFFFFFFFF */
- while (1)
- {
- if ((fpgadata[index] == 0xff) && (fpgadata[index+1] == 0xff) &&
- (fpgadata[index+2] == 0xff) && (fpgadata[index+3] == 0xff))
- break; /* preamble found */
- else
- index++;
- }
-#else
- /* search for preamble 0xFF2X */
- for (index = 0; index < size-1 ; index++)
- {
- if ((fpgadata[index] == 0xff) && ((fpgadata[index+1] & 0xf0) == 0x30))
- break;
- }
- index += 2;
-#endif
-
- DBG("FPGA: configdata starts at position 0x%x\n",index);
- DBG("FPGA: length of fpga-data %d\n", size-index);
-
- /*
- * Setup port pins for fpga programming
- */
-#ifndef CONFIG_M5249
- out32(GPIO0_ODR, 0x00000000); /* no open drain pins */
- out32(GPIO0_TCR, in32(GPIO0_TCR) | FPGA_PRG | FPGA_CLK | FPGA_DATA); /* setup for output */
-#endif
- SET_FPGA(FPGA_PRG_HIGH | FPGA_CLK_HIGH | FPGA_DATA_HIGH); /* set pins to high */
-
- DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
- DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
- /*
- * Init fpga by asserting and deasserting PROGRAM*
- */
- SET_FPGA(FPGA_PRG_LOW | FPGA_CLK_HIGH | FPGA_DATA_HIGH); /* set prog active */
-
- /* Wait for FPGA init line low */
- count = 0;
- while (FPGA_INIT_STATE)
- {
- udelay(1000); /* wait 1ms */
- /* Check for timeout - 100us max, so use 3ms */
- if (count++ > 3)
- {
- DBG("FPGA: Booting failed!\n");
- return ERROR_FPGA_PRG_INIT_LOW;
- }
- }
-
- DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
- DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
- /* deassert PROGRAM* */
- SET_FPGA(FPGA_PRG_HIGH | FPGA_CLK_HIGH | FPGA_DATA_HIGH); /* set prog inactive */
-
- /* Wait for FPGA end of init period . */
- count = 0;
- while (!(FPGA_INIT_STATE))
- {
- udelay(1000); /* wait 1ms */
- /* Check for timeout */
- if (count++ > 3)
- {
- DBG("FPGA: Booting failed!\n");
- return ERROR_FPGA_PRG_INIT_HIGH;
- }
- }
-
- DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
- DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
- DBG("write configuration data into fpga\n");
- /* write configuration-data into fpga... */
-
-#ifdef CFG_FPGA_SPARTAN2
- /*
- * Load uncompressed image into fpga
- */
- for (i=index; i<size; i++)
- {
- for (j=0; j<8; j++)
- {
- if ((fpgadata[i] & 0x80) == 0x80)
- {
- FPGA_WRITE_1;
- }
- else
- {
- FPGA_WRITE_0;
- }
- fpgadata[i] <<= 1;
- }
- }
-#else
- /* send 0xff 0x20 */
- FPGA_WRITE_1; FPGA_WRITE_1; FPGA_WRITE_1; FPGA_WRITE_1;
- FPGA_WRITE_1; FPGA_WRITE_1; FPGA_WRITE_1; FPGA_WRITE_1;
- FPGA_WRITE_0; FPGA_WRITE_0; FPGA_WRITE_1; FPGA_WRITE_0;
- FPGA_WRITE_0; FPGA_WRITE_0; FPGA_WRITE_0; FPGA_WRITE_0;
-
- /*
- ** Bit_DeCompression
- ** Code 1 .. maxOnes : n '1's followed by '0'
- ** maxOnes + 1 .. maxOnes + 1 : n - 1 '1's no '0'
- ** maxOnes + 2 .. 254 : n - (maxOnes + 2) '0's followed by '1'
- ** 255 : '1'
- */
-
- for (i=index; i<size; i++)
- {
- b = fpgadata[i];
- if ((b >= 1) && (b <= MAX_ONES))
- {
- for(bit=0; bit<b; bit++)
- {
- FPGA_WRITE_1;
- }
- FPGA_WRITE_0;
- }
- else if (b == (MAX_ONES+1))
- {
- for(bit=1; bit<b; bit++)
- {
- FPGA_WRITE_1;
- }
- }
- else if ((b >= (MAX_ONES+2)) && (b <= 254))
- {
- for(bit=0; bit<(b-(MAX_ONES+2)); bit++)
- {
- FPGA_WRITE_0;
- }
- FPGA_WRITE_1;
- }
- else if (b == 255)
- {
- FPGA_WRITE_1;
- }
- }
-#endif
-
- DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
- DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
- /*
- * Check if fpga's DONE signal - correctly booted ?
- */
-
- /* Wait for FPGA end of programming period . */
- count = 0;
- while (!(FPGA_DONE_STATE))
- {
- udelay(1000); /* wait 1ms */
- /* Check for timeout */
- if (count++ > 3)
- {
- DBG("FPGA: Booting failed!\n");
- return ERROR_FPGA_PRG_DONE;
- }
- }
-
- DBG("FPGA: Booting successful!\n");
- return 0;
-}
diff --git a/board/esd/common/lcd.c b/board/esd/common/lcd.c
deleted file mode 100644
index 196171ce5a..0000000000
--- a/board/esd/common/lcd.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * (C) Copyright 2005
- * Stefan Roese, DENX Software Engineering, sr@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 "lcd.h"
-
-
-extern int video_display_bitmap (ulong, int, int);
-
-
-int palette_index;
-int palette_value;
-int lcd_depth;
-unsigned char *glob_lcd_reg;
-unsigned char *glob_lcd_mem;
-
-#ifdef CFG_LCD_ENDIAN
-void lcd_setup(int lcd, int config)
-{
- if (lcd == 0) {
- /*
- * Set endianess and reset lcd controller 0 (small)
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_LCD0_RST); /* set reset to low */
- udelay(10); /* wait 10us */
- if (config == 1) {
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_LCD_ENDIAN); /* big-endian */
- } else {
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_LCD_ENDIAN); /* little-endian */
- }
- udelay(10); /* wait 10us */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_LCD0_RST); /* set reset to high */
- } else {
- /*
- * Set endianess and reset lcd controller 1 (big)
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_LCD1_RST); /* set reset to low */
- udelay(10); /* wait 10us */
- if (config == 1) {
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_LCD_ENDIAN); /* big-endian */
- } else {
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_LCD_ENDIAN); /* little-endian */
- }
- udelay(10); /* wait 10us */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_LCD1_RST); /* set reset to high */
- }
-
- /*
- * CFG_LCD_ENDIAN may also be FPGA_RESET, so set inactive
- */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_LCD_ENDIAN); /* set reset high again */
-}
-#endif /* #ifdef CFG_LCD_ENDIAN */
-
-
-void lcd_bmp(uchar *logo_bmp)
-{
- int i;
- uchar *ptr;
- ushort *ptr2;
- ushort val;
- unsigned char *dst = NULL;
- int x, y;
- int width, height, bpp, colors, line_size;
- int header_size;
- unsigned char *bmp;
- unsigned char r, g, b;
- BITMAPINFOHEADER *bm_info;
- ulong len;
-
- /*
- * Check for bmp mark 'BM'
- */
- if (*(ushort *)logo_bmp != 0x424d) {
-
- /*
- * Decompress bmp image
- */
- len = CFG_VIDEO_LOGO_MAX_SIZE;
- dst = malloc(CFG_VIDEO_LOGO_MAX_SIZE);
- if (dst == NULL) {
- printf("Error: malloc in gunzip failed!\n");
- return;
- }
- if (gunzip(dst, CFG_VIDEO_LOGO_MAX_SIZE, (uchar *)logo_bmp, &len) != 0) {
- return;
- }
- if (len == CFG_VIDEO_LOGO_MAX_SIZE) {
- printf("Image could be truncated (increase CFG_VIDEO_LOGO_MAX_SIZE)!\n");
- }
-
- /*
- * Check for bmp mark 'BM'
- */
- if (*(ushort *)dst != 0x424d) {
- printf("LCD: Unknown image format!\n");
- free(dst);
- return;
- }
- } else {
- /*
- * Uncompressed BMP image, just use this pointer
- */
- dst = (uchar *)logo_bmp;
- }
-
- /*
- * Get image info from bmp-header
- */
- bm_info = (BITMAPINFOHEADER *)(dst + 14);
- bpp = LOAD_SHORT(bm_info->biBitCount);
- width = LOAD_LONG(bm_info->biWidth);
- height = LOAD_LONG(bm_info->biHeight);
- switch (bpp) {
- case 1:
- colors = 1;
- line_size = width >> 3;
- break;
- case 4:
- colors = 16;
- line_size = width >> 1;
- break;
- case 8:
- colors = 256;
- line_size = width;
- break;
- case 24:
- colors = 0;
- line_size = width * 3;
- break;
- default:
- printf("LCD: Unknown bpp (%d) im image!\n", bpp);
- if ((dst != NULL) && (dst != (uchar *)logo_bmp)) {
- free(dst);
- }
- return;
- }
- printf(" (%d*%d, %dbpp)\n", width, height, bpp);
-
- /*
- * Write color palette
- */
- if ((colors <= 256) && (lcd_depth <= 8)) {
- ptr = (unsigned char *)(dst + 14 + 40);
- for (i=0; i<colors; i++) {
- b = *ptr++;
- g = *ptr++;
- r = *ptr++;
- ptr++;
- S1D_WRITE_PALETTE(glob_lcd_reg, i, r, g, b);
- }
- }
-
- /*
- * Write bitmap data into framebuffer
- */
- ptr = glob_lcd_mem;
- ptr2 = (ushort *)glob_lcd_mem;
- header_size = 14 + 40 + 4*colors; /* skip bmp header */
- for (y=0; y<height; y++) {
- bmp = &dst[(height-1-y)*line_size + header_size];
- if (lcd_depth == 16) {
- if (bpp == 24) {
- for (x=0; x<width; x++) {
- /*
- * Generate epson 16bpp fb-format from 24bpp image
- */
- b = *bmp++ >> 3;
- g = *bmp++ >> 2;
- r = *bmp++ >> 3;
- val = ((r & 0x1f) << 11) | ((g & 0x3f) << 5) | (b & 0x1f);
- *ptr2++ = val;
- }
- } else if (bpp == 8) {
- for (x=0; x<line_size; x++) {
- /* query rgb value from palette */
- ptr = (unsigned char *)(dst + 14 + 40) ;
- ptr += (*bmp++) << 2;
- b = *ptr++ >> 3;
- g = *ptr++ >> 2;
- r = *ptr++ >> 3;
- val = ((r & 0x1f) << 11) | ((g & 0x3f) << 5) | (b & 0x1f);
- *ptr2++ = val;
- }
- }
- } else {
- for (x=0; x<line_size; x++) {
- *ptr++ = *bmp++;
- }
- }
- }
-
- if ((dst != NULL) && (dst != (uchar *)logo_bmp)) {
- free(dst);
- }
-}
-
-
-void lcd_init(uchar *lcd_reg, uchar *lcd_mem, S1D_REGS *regs, int reg_count,
- uchar *logo_bmp, ulong len)
-{
- int i;
- ushort s1dReg;
- uchar s1dValue;
- int reg_byte_swap;
-
- /*
- * Detect epson
- */
- lcd_reg[0] = 0x00;
- lcd_reg[1] = 0x00;
-
- if (lcd_reg[0] == 0x1c) {
- /*
- * Big epson detected
- */
- reg_byte_swap = FALSE;
- palette_index = 0x1e2;
- palette_value = 0x1e4;
- lcd_depth = 16;
- puts("LCD: S1D13806");
- } else if (lcd_reg[1] == 0x1c) {
- /*
- * Big epson detected (with register swap bug)
- */
- reg_byte_swap = TRUE;
- palette_index = 0x1e3;
- palette_value = 0x1e5;
- lcd_depth = 16;
- puts("LCD: S1D13806S");
- } else if (lcd_reg[0] == 0x18) {
- /*
- * Small epson detected (704)
- */
- reg_byte_swap = FALSE;
- palette_index = 0x15;
- palette_value = 0x17;
- lcd_depth = 8;
- puts("LCD: S1D13704");
- } else if (lcd_reg[0x10000] == 0x24) {
- /*
- * Small epson detected (705)
- */
- reg_byte_swap = FALSE;
- palette_index = 0x15;
- palette_value = 0x17;
- lcd_depth = 8;
- lcd_reg += 0x10000; /* add offset for 705 regs */
- puts("LCD: S1D13705");
- } else {
- puts("LCD: No controller detected!\n");
- return;
- }
-
- /*
- * Setup lcd controller regs
- */
- for (i = 0; i<reg_count; i++) {
- s1dReg = regs[i].Index;
- if (reg_byte_swap) {
- if ((s1dReg & 0x0001) == 0)
- s1dReg |= 0x0001;
- else
- s1dReg &= ~0x0001;
- }
- s1dValue = regs[i].Value;
- lcd_reg[s1dReg] = s1dValue;
- }
-
- /*
- * Save reg & mem pointer for later usage (e.g. bmp command)
- */
- glob_lcd_reg = lcd_reg;
- glob_lcd_mem = lcd_mem;
-
- /*
- * Display bmp image
- */
- lcd_bmp(logo_bmp);
-}
-
-#ifdef CONFIG_VIDEO_SM501
-int do_esdbmp(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- ulong addr;
- char *str;
-
- if (argc != 2) {
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- addr = simple_strtoul(argv[1], NULL, 16);
-
- str = getenv("bd_type");
- if ((strcmp(str, "ppc221") == 0) || (strcmp(str, "ppc231") == 0)) {
- /*
- * SM501 available, use standard bmp command
- */
- return (video_display_bitmap(addr, 0, 0));
- } else {
- /*
- * No SM501 available, use esd epson bmp command
- */
- lcd_bmp((uchar *)addr);
- return 0;
- }
-}
-
-U_BOOT_CMD(
- esdbmp, 2, 1, do_esdbmp,
- "esdbmp - display BMP image\n",
- "<imageAddr> - display image\n"
-);
-#endif
diff --git a/board/esd/common/lcd.h b/board/esd/common/lcd.h
deleted file mode 100644
index 3169e6bb5c..0000000000
--- a/board/esd/common/lcd.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-/*
- * Neutralize little endians.
- */
-#define SWAP_LONG(data) ((unsigned long) \
- (((unsigned long)(data) >> 24) | \
- ((unsigned long)(data) << 24) | \
- (((unsigned long)(data) >> 8) & 0x0000ff00 ) | \
- (((unsigned long)(data) << 8) & 0x00ff0000 )))
-#define SWAP_SHORT(data) ((unsigned short) \
- (((unsigned short)(data) >> 8 ) | \
- ((unsigned short)(data) << 8 )))
-#define LOAD_LONG(data) SWAP_LONG(data)
-#define LOAD_SHORT(data) SWAP_SHORT(data)
-
-#ifndef FALSE
-#define FALSE 0
-#define TRUE (!FALSE)
-#endif
-
-#define S1D_WRITE_PALETTE(p,i,r,g,b) \
- { \
- ((volatile uchar*)(p))[palette_index] = (uchar)(i); \
- ((volatile uchar*)(p))[palette_value] = (uchar)(r); \
- ((volatile uchar*)(p))[palette_value] = (uchar)(g); \
- ((volatile uchar*)(p))[palette_value] = (uchar)(b); \
- }
-
-typedef struct
-{
- ushort Index;
- uchar Value;
-} S1D_REGS;
-
-typedef struct /**** BMP file info structure ****/
-{
- unsigned int biSize; /* Size of info header */
- int biWidth; /* Width of image */
- int biHeight; /* Height of image */
- unsigned short biPlanes; /* Number of color planes */
- unsigned short biBitCount; /* Number of bits per pixel */
- unsigned int biCompression; /* Type of compression to use */
- unsigned int biSizeImage; /* Size of image data */
- int biXPelsPerMeter; /* X pixels per meter */
- int biYPelsPerMeter; /* Y pixels per meter */
- unsigned int biClrUsed; /* Number of colors used */
- unsigned int biClrImportant; /* Number of important colors */
-} BITMAPINFOHEADER;
diff --git a/board/esd/common/misc.c b/board/esd/common/misc.c
deleted file mode 100644
index 48b4b7c7b9..0000000000
--- a/board/esd/common/misc.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * (C) Copyright 2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-
-#ifdef CONFIG_LXT971_NO_SLEEP
-#include <miiphy.h>
-#endif
-
-
-#ifdef CONFIG_LXT971_NO_SLEEP
-void lxt971_no_sleep(void)
-{
- unsigned short reg;
-
- miiphy_read("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x10, &reg);
- reg &= ~0x0040; /* disable sleep mode */
- miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x10, reg);
-}
-#endif /* CONFIG_LXT971_NO_SLEEP */
diff --git a/board/esd/common/pci.c b/board/esd/common/pci.c
deleted file mode 100644
index f711205efe..0000000000
--- a/board/esd/common/pci.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-#include <pci.h>
-
-
-u_long pci9054_iobase;
-
-
-#define PCI_PRIMARY_CAR (0x500000dc) /* PCI config address reg */
-#define PCI_PRIMARY_CDR (0x80000000) /* PCI config data reg */
-
-
-/*-----------------------------------------------------------------------------+
-| Subroutine: pci9054_read_config_dword
-| Description: Read a PCI configuration register
-| Inputs:
-| hose PCI Controller
-| dev PCI Bus+Device+Function number
-| offset Configuration register number
-| value Address of the configuration register value
-| Return value:
-| 0 Successful
-+-----------------------------------------------------------------------------*/
-int pci9054_read_config_dword(struct pci_controller *hose,
- pci_dev_t dev, int offset, u32* value)
-{
- unsigned long conAdrVal;
- unsigned long val;
-
- /* generate coded value for CON_ADR register */
- conAdrVal = dev | (offset & 0xfc) | 0x80000000;
-
- /* Load the CON_ADR (CAR) value first, then read from CON_DATA (CDR) */
- *(unsigned long *)PCI_PRIMARY_CAR = conAdrVal;
-
- /* Note: *pResult comes back as -1 if machine check happened */
- val = in32r(PCI_PRIMARY_CDR);
-
- *value = (unsigned long) val;
-
- out32r(PCI_PRIMARY_CAR, 0);
-
- if ((*(unsigned long *)0x50000304) & 0x60000000)
- {
- /* clear pci master/target abort bits */
- *(unsigned long *)0x50000304 = *(unsigned long *)0x50000304;
- }
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------+
-| Subroutine: pci9054_write_config_dword
-| Description: Write a PCI configuration register.
-| Inputs:
-| hose PCI Controller
-| dev PCI Bus+Device+Function number
-| offset Configuration register number
-| Value Configuration register value
-| Return value:
-| 0 Successful
-| Updated for pass2 errata #6. Need to disable interrupts and clear the
-| PCICFGADR reg after writing the PCICFGDATA reg.
-+-----------------------------------------------------------------------------*/
-int pci9054_write_config_dword(struct pci_controller *hose,
- pci_dev_t dev, int offset, u32 value)
-{
- unsigned long conAdrVal;
-
- conAdrVal = dev | (offset & 0xfc) | 0x80000000;
-
- *(unsigned long *)PCI_PRIMARY_CAR = conAdrVal;
-
- out32r(PCI_PRIMARY_CDR, value);
-
- out32r(PCI_PRIMARY_CAR, 0);
-
- /* clear pci master/target abort bits */
- *(unsigned long *)0x50000304 = *(unsigned long *)0x50000304;
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-#ifdef CONFIG_DASA_SIM
-static void pci_dasa_sim_config_pci9054(struct pci_controller *hose, pci_dev_t dev,
- struct pci_config_table *_)
-{
- unsigned int iobase;
- unsigned short status = 0;
- unsigned char timer;
-
- /*
- * Configure PLX PCI9054
- */
- pci_read_config_word(CFG_PCI9054_DEV_FN, PCI_COMMAND, &status);
- status |= PCI_COMMAND_MASTER | PCI_COMMAND_IO | PCI_COMMAND_MEMORY;
- pci_write_config_word(CFG_PCI9054_DEV_FN, PCI_COMMAND, status);
-
- /* Check the latency timer for values >= 0x60.
- */
- pci_read_config_byte(CFG_PCI9054_DEV_FN, PCI_LATENCY_TIMER, &timer);
- if (timer < 0x60)
- {
- pci_write_config_byte(CFG_PCI9054_DEV_FN, PCI_LATENCY_TIMER, 0x60);
- }
-
- /* Set I/O base register.
- */
- pci_write_config_dword(CFG_PCI9054_DEV_FN, PCI_BASE_ADDRESS_0, CFG_PCI9054_IOBASE);
- pci_read_config_dword(CFG_PCI9054_DEV_FN, PCI_BASE_ADDRESS_0, &iobase);
-
- pci9054_iobase = pci_mem_to_phys(CFG_PCI9054_DEV_FN, iobase & PCI_BASE_ADDRESS_MEM_MASK);
-
- if (pci9054_iobase == 0xffffffff)
- {
- printf("Error: Can not set I/O base register.\n");
- return;
- }
-}
-#endif
-
-static struct pci_config_table pci9054_config_table[] = {
-#ifndef CONFIG_PCI_PNP
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- PCI_BUS(CFG_ETH_DEV_FN), PCI_DEV(CFG_ETH_DEV_FN), PCI_FUNC(CFG_ETH_DEV_FN),
- pci_cfgfunc_config_device, { CFG_ETH_IOBASE,
- CFG_ETH_IOBASE,
- PCI_COMMAND_IO | PCI_COMMAND_MASTER }},
-#ifdef CONFIG_DASA_SIM
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- PCI_BUS(CFG_PCI9054_DEV_FN), PCI_DEV(CFG_PCI9054_DEV_FN), PCI_FUNC(CFG_PCI9054_DEV_FN),
- pci_dasa_sim_config_pci9054 },
-#endif
-#endif
- { }
-};
-
-static struct pci_controller pci9054_hose = {
- config_table: pci9054_config_table,
-};
-
-void pci_init_board(void)
-{
- struct pci_controller *hose = &pci9054_hose;
-
- /*
- * Register the hose
- */
- hose->first_busno = 0;
- hose->last_busno = 0xff;
-
- /* System memory space */
- pci_set_region(hose->regions + 0,
- 0x00000000, 0x00000000, 0x01000000,
- PCI_REGION_MEM | PCI_REGION_MEMORY);
-
- /* PCI Memory space */
- pci_set_region(hose->regions + 1,
- 0x00000000, 0xc0000000, 0x10000000,
- PCI_REGION_MEM);
-
- pci_set_ops(hose,
- pci_hose_read_config_byte_via_dword,
- pci_hose_read_config_word_via_dword,
- pci9054_read_config_dword,
- pci_hose_write_config_byte_via_dword,
- pci_hose_write_config_word_via_dword,
- pci9054_write_config_dword);
-
- hose->region_count = 2;
-
- pci_register_hose(hose);
-
- hose->last_busno = pci_hose_scan(hose);
-}
diff --git a/board/esd/common/s1d13704_320_240_4bpp.h b/board/esd/common/s1d13704_320_240_4bpp.h
deleted file mode 100644
index 77c8a467a9..0000000000
--- a/board/esd/common/s1d13704_320_240_4bpp.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *
- * Generic Header information generated by 13704CFG.EXE (Build 10)
- *
- * Copyright (c) 2000,2001 Epson Research and Development, Inc.
- * All rights reserved.
- *
- * Panel: 320x240x4bpp 78Hz Mono 4-Bit STN, Disabled (PCLK=6.666MHz)
- *
- * This file defines the configuration environment and registers,
- * which can be used by any software, such as display drivers.
- *
- * PLEASE NOTE: If you FTP this file to a non-Windows platform, make
- * sure you transfer this file using ASCII, not BINARY
- * mode.
- *
- */
-
-static S1D_REGS regs_13704_320_240_4bpp[] =
-{
- { 0x00, 0x00 }, /* Revision Code Register */
- { 0x01, 0x04 }, /*00*/ /* Mode Register 0 Register */
- { 0x02, 0xA4 }, /*a0*/ /* Mode Register 1 Register */
- { 0x03, 0x83 }, /*03*/ /* Mode Register 2 Register - bit7 is LUT bypass */
- { 0x04, 0x27 }, /* Horizontal Panel Size Register */
- { 0x05, 0xEF }, /* Vertical Panel Size Register (LSB) */
- { 0x06, 0x00 }, /* Vertical Panel Size Register (MSB) */
- { 0x07, 0x00 }, /* FPLINE Start Position Register */
- { 0x08, 0x00 }, /* Horizontal Non-Display Period Register */
- { 0x09, 0x00 }, /* FPFRAME Start Position Register */
- { 0x0A, 0x02 }, /* Vertical Non-Display Period Register */
- { 0x0B, 0x00 }, /* MOD Rate Register */
- { 0x0C, 0x00 }, /* Screen 1 Start Address Register (LSB) */
- { 0x0D, 0x00 }, /* Screen 1 Start Address Register (MSB) */
- { 0x0E, 0x00 }, /* Not Used */
- { 0x0F, 0x00 }, /* Screen 2 Start Address Register (LSB) */
- { 0x10, 0x00 }, /* Screen 2 Start Address Register (MSB) */
- { 0x11, 0x00 }, /* Not Used */
- { 0x12, 0x00 }, /* Memory Address Offset Register */
- { 0x13, 0xFF }, /* Screen 1 Vertical Size Register (LSB) */
- { 0x14, 0x03 }, /* Screen 1 Vertical Size Register (MSB) */
- { 0x15, 0x00 }, /* Look-Up Table Address Register */
- { 0x16, 0x00 }, /* Look-Up Table Bank Select Register */
- { 0x17, 0x00 }, /* Look-Up Table Data Register */
- { 0x18, 0x01 }, /* GPIO Configuration Control Register */
- { 0x19, 0x01 }, /* GPIO Status/Control Register */
- { 0x1A, 0x00 }, /* Scratch Pad Register */
- { 0x1B, 0x00 }, /* SwivelView Mode Register */
- { 0x1C, 0xA0 }, /* Line Byte Count Register */
- { 0x1D, 0x00 }, /* Not Used */
- { 0x1E, 0x00 }, /* Not Used */
- { 0x1F, 0x00 }, /* Not Used */
-};
diff --git a/board/esd/common/s1d13705_320_240_8bpp.h b/board/esd/common/s1d13705_320_240_8bpp.h
deleted file mode 100644
index 60843ac433..0000000000
--- a/board/esd/common/s1d13705_320_240_8bpp.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *
- * Generic Header information generated by 13704CFG.EXE (Build 10)
- *
- * Copyright (c) 2000,2001 Epson Research and Development, Inc.
- * All rights reserved.
- *
- * Panel: 320x240x8bpp 78Hz Mono 8-Bit STN, Disabled (PCLK=6.666MHz)
- *
- * This file defines the configuration environment and registers,
- * which can be used by any software, such as display drivers.
- *
- * PLEASE NOTE: If you FTP this file to a non-Windows platform, make
- * sure you transfer this file using ASCII, not BINARY
- * mode.
- *
- */
-
-static S1D_REGS regs_13705_320_240_8bpp[] =
-{
- { 0x00, 0x00 }, /* Revision Code Register */
- { 0x01, 0x23 }, /* Mode Register 0 Register */
- { 0x02, 0xE0 }, /* Mode Register 1 Register */
- { 0x03, 0x03 }, /* Mode Register 2 Register - bit7 is LUT bypass */
- { 0x04, 0x27 }, /* Horizontal Panel Size Register */
- { 0x05, 0xEF }, /* Vertical Panel Size Register (LSB) */
- { 0x06, 0x00 }, /* Vertical Panel Size Register (MSB) */
- { 0x07, 0x00 }, /* FPLINE Start Position Register */
- { 0x08, 0x00 }, /* Horizontal Non-Display Period Register */
- { 0x09, 0x01 }, /* FPFRAME Start Position Register */
- { 0x0A, 0x02 }, /* Vertical Non-Display Period Register */
- { 0x0B, 0x00 }, /* MOD Rate Register */
- { 0x0C, 0x00 }, /* Screen 1 Start Address Register (LSB) */
- { 0x0D, 0x00 }, /* Screen 1 Start Address Register (MSB) */
- { 0x0E, 0x00 }, /* Not Used */
- { 0x0F, 0x00 }, /* Screen 2 Start Address Register (LSB) */
- { 0x10, 0x00 }, /* Screen 2 Start Address Register (MSB) */
- { 0x11, 0x00 }, /* Not Used */
- { 0x12, 0x00 }, /* Memory Address Offset Register */
- { 0x13, 0xFF }, /* Screen 1 Vertical Size Register (LSB) */
- { 0x14, 0x03 }, /* Screen 1 Vertical Size Register (MSB) */
- { 0x15, 0x00 }, /* Look-Up Table Address Register */
- { 0x16, 0x00 }, /* Look-Up Table Bank Select Register */
- { 0x17, 0x00 }, /* Look-Up Table Data Register */
- { 0x18, 0x01 }, /* GPIO Configuration Control Register */
- { 0x19, 0x01 }, /* GPIO Status/Control Register */
- { 0x1A, 0x00 }, /* Scratch Pad Register */
- { 0x1B, 0x00 }, /* SwivelView Mode Register */
- { 0x1C, 0xFF }, /* Line Byte Count Register */
- { 0x1D, 0x00 }, /* Not Used */
- { 0x1E, 0x00 }, /* Not Used */
- { 0x1F, 0x00 }, /* Not Used */
-};
diff --git a/board/esd/common/s1d13806_1024_768_8bpp.h b/board/esd/common/s1d13806_1024_768_8bpp.h
deleted file mode 100644
index 68801bf408..0000000000
--- a/board/esd/common/s1d13806_1024_768_8bpp.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- *
- * File generated by S1D13806CFG.EXE
- *
- * Copyright (c) 2000,2001 Epson Research and Development, Inc.
- * All rights reserved.
- *
- * PLEASE NOTE: If you FTP this file to a non-Windows platform, make
- * sure you transfer this file using ASCII, not BINARY mode.
- *
- * Panel: (active) 1024x768 34Hz TFT Single 12-bit (PCLK=BUSCLK=33.333MHz)
- * Memory: Embedded SDRAM (MCLK=CLKI=49.100MHz) (BUSCLK=33.333MHz)
- *
- */
-
-static S1D_REGS regs_13806_1024_768_8bpp[] =
-{
- {0x0001,0x00}, /* Miscellaneous Register */
- {0x01FC,0x00}, /* Display Mode Register */
- {0x0004,0x00}, /* General IO Pins Configuration Register 0 */
- {0x0005,0x00}, /* General IO Pins Configuration Register 1 */
- {0x0008,0x00}, /* General IO Pins Control Register 0 */
- {0x0009,0x00}, /* General IO Pins Control Register 1 */
- {0x0010,0x00}, /* Memory Clock Configuration Register */
- {0x0014,0x01}, /* LCD Pixel Clock Configuration Register */
- {0x0018,0x00}, /* CRT/TV Pixel Clock Configuration Register */
- {0x001C,0x02}, /* MediaPlug Clock Configuration Register */
- {0x001E,0x01}, /* CPU To Memory Wait State Select Register */
- {0x0021,0x03}, /* DRAM Refresh Rate Register */
- {0x002A,0x00}, /* DRAM Timings Control Register 0 */
- {0x002B,0x01}, /* DRAM Timings Control Register 1 */
- {0x0020,0x80}, /* Memory Configuration Register */
- {0x0030,0x55}, /* Panel Type Register */
- {0x0031,0x00}, /* MOD Rate Register */
- {0x0032,0x7F}, /* LCD Horizontal Display Width Register */
- {0x0034,0x12}, /* LCD Horizontal Non-Display Period Register */
- {0x0035,0x01}, /* TFT FPLINE Start Position Register */
- {0x0036,0x0B}, /* TFT FPLINE Pulse Width Register */
- {0x0038,0xFF}, /* LCD Vertical Display Height Register 0 */
- {0x0039,0x02}, /* LCD Vertical Display Height Register 1 */
- {0x003A,0x2C}, /* LCD Vertical Non-Display Period Register */
- {0x003B,0x0A}, /* TFT FPFRAME Start Position Register */
- {0x003C,0x01}, /* TFT FPFRAME Pulse Width Register */
- {0x0040,0x03}, /* LCD Display Mode Register */
- {0x0041,0x00}, /* LCD Miscellaneous Register */
- {0x0042,0x00}, /* LCD Display Start Address Register 0 */
- {0x0043,0x00}, /* LCD Display Start Address Register 1 */
- {0x0044,0x00}, /* LCD Display Start Address Register 2 */
- {0x0046,0x00}, /* LCD Memory Address Offset Register 0 */
- {0x0047,0x02}, /* LCD Memory Address Offset Register 1 */
- {0x0048,0x00}, /* LCD Pixel Panning Register */
- {0x004A,0x00}, /* LCD Display FIFO High Threshold Control Register */
- {0x004B,0x00}, /* LCD Display FIFO Low Threshold Control Register */
- {0x0050,0x4F}, /* CRT/TV Horizontal Display Width Register */
- {0x0052,0x13}, /* CRT/TV Horizontal Non-Display Period Register */
- {0x0053,0x01}, /* CRT/TV HRTC Start Position Register */
- {0x0054,0x0B}, /* CRT/TV HRTC Pulse Width Register */
- {0x0056,0xDF}, /* CRT/TV Vertical Display Height Register 0 */
- {0x0057,0x01}, /* CRT/TV Vertical Display Height Register 1 */
- {0x0058,0x2B}, /* CRT/TV Vertical Non-Display Period Register */
- {0x0059,0x09}, /* CRT/TV VRTC Start Position Register */
- {0x005A,0x01}, /* CRT/TV VRTC Pulse Width Register */
- {0x005B,0x10}, /* TV Output Control Register */
- {0x0060,0x03}, /* CRT/TV Display Mode Register */
- {0x0062,0x00}, /* CRT/TV Display Start Address Register 0 */
- {0x0063,0x00}, /* CRT/TV Display Start Address Register 1 */
- {0x0064,0x00}, /* CRT/TV Display Start Address Register 2 */
- {0x0066,0x40}, /* CRT/TV Memory Address Offset Register 0 */
- {0x0067,0x01}, /* CRT/TV Memory Address Offset Register 1 */
- {0x0068,0x00}, /* CRT/TV Pixel Panning Register */
- {0x006A,0x00}, /* CRT/TV Display FIFO High Threshold Control Register */
- {0x006B,0x00}, /* CRT/TV Display FIFO Low Threshold Control Register */
- {0x0070,0x00}, /* LCD Ink/Cursor Control Register */
- {0x0071,0x01}, /* LCD Ink/Cursor Start Address Register */
- {0x0072,0x00}, /* LCD Cursor X Position Register 0 */
- {0x0073,0x00}, /* LCD Cursor X Position Register 1 */
- {0x0074,0x00}, /* LCD Cursor Y Position Register 0 */
- {0x0075,0x00}, /* LCD Cursor Y Position Register 1 */
- {0x0076,0x00}, /* LCD Ink/Cursor Blue Color 0 Register */
- {0x0077,0x00}, /* LCD Ink/Cursor Green Color 0 Register */
- {0x0078,0x00}, /* LCD Ink/Cursor Red Color 0 Register */
- {0x007A,0x1F}, /* LCD Ink/Cursor Blue Color 1 Register */
- {0x007B,0x3F}, /* LCD Ink/Cursor Green Color 1 Register */
- {0x007C,0x1F}, /* LCD Ink/Cursor Red Color 1 Register */
- {0x007E,0x00}, /* LCD Ink/Cursor FIFO Threshold Register */
- {0x0080,0x00}, /* CRT/TV Ink/Cursor Control Register */
- {0x0081,0x01}, /* CRT/TV Ink/Cursor Start Address Register */
- {0x0082,0x00}, /* CRT/TV Cursor X Position Register 0 */
- {0x0083,0x00}, /* CRT/TV Cursor X Position Register 1 */
- {0x0084,0x00}, /* CRT/TV Cursor Y Position Register 0 */
- {0x0085,0x00}, /* CRT/TV Cursor Y Position Register 1 */
- {0x0086,0x00}, /* CRT/TV Ink/Cursor Blue Color 0 Register */
- {0x0087,0x00}, /* CRT/TV Ink/Cursor Green Color 0 Register */
- {0x0088,0x00}, /* CRT/TV Ink/Cursor Red Color 0 Register */
- {0x008A,0x1F}, /* CRT/TV Ink/Cursor Blue Color 1 Register */
- {0x008B,0x3F}, /* CRT/TV Ink/Cursor Green Color 1 Register */
- {0x008C,0x1F}, /* CRT/TV Ink/Cursor Red Color 1 Register */
- {0x008E,0x00}, /* CRT/TV Ink/Cursor FIFO Threshold Register */
- {0x0100,0x00}, /* BitBlt Control Register 0 */
- {0x0101,0x00}, /* BitBlt Control Register 1 */
- {0x0102,0x00}, /* BitBlt ROP Code/Color Expansion Register */
- {0x0103,0x00}, /* BitBlt Operation Register */
- {0x0104,0x00}, /* BitBlt Source Start Address Register 0 */
- {0x0105,0x00}, /* BitBlt Source Start Address Register 1 */
- {0x0106,0x00}, /* BitBlt Source Start Address Register 2 */
- {0x0108,0x00}, /* BitBlt Destination Start Address Register 0 */
- {0x0109,0x00}, /* BitBlt Destination Start Address Register 1 */
- {0x010A,0x00}, /* BitBlt Destination Start Address Register 2 */
- {0x010C,0x00}, /* BitBlt Memory Address Offset Register 0 */
- {0x010D,0x00}, /* BitBlt Memory Address Offset Register 1 */
- {0x0110,0x00}, /* BitBlt Width Register 0 */
- {0x0111,0x00}, /* BitBlt Width Register 1 */
- {0x0112,0x00}, /* BitBlt Height Register 0 */
- {0x0113,0x00}, /* BitBlt Height Register 1 */
- {0x0114,0x00}, /* BitBlt Background Color Register 0 */
- {0x0115,0x00}, /* BitBlt Background Color Register 1 */
- {0x0118,0x00}, /* BitBlt Foreground Color Register 0 */
- {0x0119,0x00}, /* BitBlt Foreground Color Register 1 */
- {0x01E0,0x00}, /* Look-Up Table Mode Register */
- {0x01E2,0x00}, /* Look-Up Table Address Register */
- {0x01F0,0x10}, /* Power Save Configuration Register */
- {0x01F1,0x00}, /* Power Save Status Register */
- {0x01F4,0x00}, /* CPU-to-Memory Access Watchdog Timer Register */
- {0x01FC,0x01}, /* Display Mode Register */
-};
diff --git a/board/esd/common/s1d13806_320_240_4bpp.h b/board/esd/common/s1d13806_320_240_4bpp.h
deleted file mode 100644
index 24d7350f26..0000000000
--- a/board/esd/common/s1d13806_320_240_4bpp.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- *
- * File generated by S1D13806CFG.EXE
- *
- * Copyright (c) 2000,2001 Epson Research and Development, Inc.
- * All rights reserved.
- *
- * PLEASE NOTE: If you FTP this file to a non-Windows platform, make
- * sure you transfer this file using ASCII, not BINARY mode.
- *
- * Panel: (active) 320x240 62Hz STN Single 4-bit (PCLK=CLKI2/4=6.250MHz)
- * Memory: Embedded SDRAM (MCLK=CLKI=49.500MHz) (BUSCLK=33.333MHz)
- *
- */
-
-static S1D_REGS regs_13806_320_240_4bpp[] =
-{
- {0x0001,0x00}, /* Miscellaneous Register */
- {0x01FC,0x00}, /* Display Mode Register */
- {0x0004,0x08}, /* General IO Pins Configuration Register 0 */
- {0x0005,0x08}, /* General IO Pins Configuration Register 1 */
- {0x0008,0x08}, /* General IO Pins Control Register 0 */
- {0x0009,0x00}, /* General IO Pins Control Register 1 */
- {0x0010,0x00}, /* Memory Clock Configuration Register */
- {0x0014,0x32}, /* LCD Pixel Clock Configuration Register */
- {0x0018,0x00}, /* CRT/TV Pixel Clock Configuration Register */
- {0x001C,0x02}, /* MediaPlug Clock Configuration Register */
- {0x001E,0x01}, /* CPU To Memory Wait State Select Register */
- {0x0021,0x03}, /* DRAM Refresh Rate Register */
- {0x002A,0x00}, /* DRAM Timings Control Register 0 */
- {0x002B,0x01}, /* DRAM Timings Control Register 1 */
- {0x0020,0x80}, /* Memory Configuration Register */
- {0x0030,0x00}, /* Panel Type Register */
- {0x0031,0x00}, /* MOD Rate Register */
- {0x0032,0x27}, /* LCD Horizontal Display Width Register */
- {0x0034,0x03}, /* LCD Horizontal Non-Display Period Register */
- {0x0035,0x01}, /* TFT FPLINE Start Position Register */
- {0x0036,0x0B}, /* TFT FPLINE Pulse Width Register */
- {0x0038,0xEF}, /* LCD Vertical Display Height Register 0 */
- {0x0039,0x00}, /* LCD Vertical Display Height Register 1 */
- {0x003A,0x2C}, /* LCD Vertical Non-Display Period Register */
- {0x003B,0x0A}, /* TFT FPFRAME Start Position Register */
- {0x003C,0x01}, /* TFT FPFRAME Pulse Width Register */
- {0x0040,0x02}, /* LCD Display Mode Register */
- {0x0041,0x00}, /* LCD Miscellaneous Register */
- {0x0042,0x00}, /* LCD Display Start Address Register 0 */
- {0x0043,0x00}, /* LCD Display Start Address Register 1 */
- {0x0044,0x00}, /* LCD Display Start Address Register 2 */
- {0x0046,0x50}, /* LCD Memory Address Offset Register 0 */
- {0x0047,0x00}, /* LCD Memory Address Offset Register 1 */
- {0x0048,0x00}, /* LCD Pixel Panning Register */
- {0x004A,0x00}, /* LCD Display FIFO High Threshold Control Register */
- {0x004B,0x00}, /* LCD Display FIFO Low Threshold Control Register */
- {0x0050,0x4F}, /* CRT/TV Horizontal Display Width Register */
- {0x0052,0x13}, /* CRT/TV Horizontal Non-Display Period Register */
- {0x0053,0x01}, /* CRT/TV HRTC Start Position Register */
- {0x0054,0x0B}, /* CRT/TV HRTC Pulse Width Register */
- {0x0056,0xDF}, /* CRT/TV Vertical Display Height Register 0 */
- {0x0057,0x01}, /* CRT/TV Vertical Display Height Register 1 */
- {0x0058,0x2B}, /* CRT/TV Vertical Non-Display Period Register */
- {0x0059,0x09}, /* CRT/TV VRTC Start Position Register */
- {0x005A,0x01}, /* CRT/TV VRTC Pulse Width Register */
- {0x005B,0x10}, /* TV Output Control Register */
- {0x0060,0x03}, /* CRT/TV Display Mode Register */
- {0x0062,0x00}, /* CRT/TV Display Start Address Register 0 */
- {0x0063,0x00}, /* CRT/TV Display Start Address Register 1 */
- {0x0064,0x00}, /* CRT/TV Display Start Address Register 2 */
- {0x0066,0x40}, /* CRT/TV Memory Address Offset Register 0 */
- {0x0067,0x01}, /* CRT/TV Memory Address Offset Register 1 */
- {0x0068,0x00}, /* CRT/TV Pixel Panning Register */
- {0x006A,0x00}, /* CRT/TV Display FIFO High Threshold Control Register */
- {0x006B,0x00}, /* CRT/TV Display FIFO Low Threshold Control Register */
- {0x0070,0x00}, /* LCD Ink/Cursor Control Register */
- {0x0071,0x01}, /* LCD Ink/Cursor Start Address Register */
- {0x0072,0x00}, /* LCD Cursor X Position Register 0 */
- {0x0073,0x00}, /* LCD Cursor X Position Register 1 */
- {0x0074,0x00}, /* LCD Cursor Y Position Register 0 */
- {0x0075,0x00}, /* LCD Cursor Y Position Register 1 */
- {0x0076,0x00}, /* LCD Ink/Cursor Blue Color 0 Register */
- {0x0077,0x00}, /* LCD Ink/Cursor Green Color 0 Register */
- {0x0078,0x00}, /* LCD Ink/Cursor Red Color 0 Register */
- {0x007A,0x1F}, /* LCD Ink/Cursor Blue Color 1 Register */
- {0x007B,0x3F}, /* LCD Ink/Cursor Green Color 1 Register */
- {0x007C,0x1F}, /* LCD Ink/Cursor Red Color 1 Register */
- {0x007E,0x00}, /* LCD Ink/Cursor FIFO Threshold Register */
- {0x0080,0x00}, /* CRT/TV Ink/Cursor Control Register */
- {0x0081,0x01}, /* CRT/TV Ink/Cursor Start Address Register */
- {0x0082,0x00}, /* CRT/TV Cursor X Position Register 0 */
- {0x0083,0x00}, /* CRT/TV Cursor X Position Register 1 */
- {0x0084,0x00}, /* CRT/TV Cursor Y Position Register 0 */
- {0x0085,0x00}, /* CRT/TV Cursor Y Position Register 1 */
- {0x0086,0x00}, /* CRT/TV Ink/Cursor Blue Color 0 Register */
- {0x0087,0x00}, /* CRT/TV Ink/Cursor Green Color 0 Register */
- {0x0088,0x00}, /* CRT/TV Ink/Cursor Red Color 0 Register */
- {0x008A,0x1F}, /* CRT/TV Ink/Cursor Blue Color 1 Register */
- {0x008B,0x3F}, /* CRT/TV Ink/Cursor Green Color 1 Register */
- {0x008C,0x1F}, /* CRT/TV Ink/Cursor Red Color 1 Register */
- {0x008E,0x00}, /* CRT/TV Ink/Cursor FIFO Threshold Register */
- {0x0100,0x00}, /* BitBlt Control Register 0 */
- {0x0101,0x00}, /* BitBlt Control Register 1 */
- {0x0102,0x00}, /* BitBlt ROP Code/Color Expansion Register */
- {0x0103,0x00}, /* BitBlt Operation Register */
- {0x0104,0x00}, /* BitBlt Source Start Address Register 0 */
- {0x0105,0x00}, /* BitBlt Source Start Address Register 1 */
- {0x0106,0x00}, /* BitBlt Source Start Address Register 2 */
- {0x0108,0x00}, /* BitBlt Destination Start Address Register 0 */
- {0x0109,0x00}, /* BitBlt Destination Start Address Register 1 */
- {0x010A,0x00}, /* BitBlt Destination Start Address Register 2 */
- {0x010C,0x00}, /* BitBlt Memory Address Offset Register 0 */
- {0x010D,0x00}, /* BitBlt Memory Address Offset Register 1 */
- {0x0110,0x00}, /* BitBlt Width Register 0 */
- {0x0111,0x00}, /* BitBlt Width Register 1 */
- {0x0112,0x00}, /* BitBlt Height Register 0 */
- {0x0113,0x00}, /* BitBlt Height Register 1 */
- {0x0114,0x00}, /* BitBlt Background Color Register 0 */
- {0x0115,0x00}, /* BitBlt Background Color Register 1 */
- {0x0118,0x00}, /* BitBlt Foreground Color Register 0 */
- {0x0119,0x00}, /* BitBlt Foreground Color Register 1 */
- {0x01E0,0x00}, /* Look-Up Table Mode Register */
- {0x01E2,0x00}, /* Look-Up Table Address Register */
- {0x01F0,0x10}, /* Power Save Configuration Register */
- {0x01F1,0x00}, /* Power Save Status Register */
- {0x01F4,0x00}, /* CPU-to-Memory Access Watchdog Timer Register */
- {0x01FC,0x01}, /* Display Mode Register */
-};
diff --git a/board/esd/common/s1d13806_640_480_16bpp.h b/board/esd/common/s1d13806_640_480_16bpp.h
deleted file mode 100644
index 178f1a9615..0000000000
--- a/board/esd/common/s1d13806_640_480_16bpp.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- *
- * File generated by S1D13806CFG.EXE
- *
- * Copyright (c) 2000,2001 Epson Research and Development, Inc.
- * All rights reserved.
- *
- * PLEASE NOTE: If you FTP this file to a non-Windows platform, make
- * sure you transfer this file using ASCII, not BINARY mode.
- *
- * Panel: (active) 640x480 59Hz TFT Single 18-bit (PCLK=CLKI2=25.000MHz)
- * Memory: Embedded SDRAM (MCLK=CLKI=49.152MHz) (BUSCLK=33.333MHz)
- *
- */
-
-static S1D_REGS regs_13806_640_480_16bpp[] =
-{
- {0x0001,0x00}, /* Miscellaneous Register */
- {0x01FC,0x00}, /* Display Mode Register */
- {0x0004,0x18}, /* General IO Pins Configuration Register 0 */
- {0x0005,0x00}, /* General IO Pins Configuration Register 1 */
- {0x0008,0x18}, /* General IO Pins Control Register 0 */
- {0x0009,0x00}, /* General IO Pins Control Register 1 */
- {0x0010,0x00}, /* Memory Clock Configuration Register */
- {0x0014,0x02}, /* LCD Pixel Clock Configuration Register */
- {0x0018,0x02}, /* CRT/TV Pixel Clock Configuration Register */
- {0x001C,0x02}, /* MediaPlug Clock Configuration Register */
- {0x001E,0x01}, /* CPU To Memory Wait State Select Register */
- {0x0021,0x03}, /* DRAM Refresh Rate Register */
- {0x002A,0x00}, /* DRAM Timings Control Register 0 */
- {0x002B,0x01}, /* DRAM Timings Control Register 1 */
- {0x0020,0x80}, /* Memory Configuration Register */
- {0x0030,0x25}, /* Panel Type Register */
- {0x0031,0x00}, /* MOD Rate Register */
- {0x0032,0x4F}, /* LCD Horizontal Display Width Register */
- {0x0034,0x13}, /* LCD Horizontal Non-Display Period Register */
- {0x0035,0x00}, /* TFT FPLINE Start Position Register */
- {0x0036,0x0B}, /* TFT FPLINE Pulse Width Register */
- {0x0038,0xDF}, /* LCD Vertical Display Height Register 0 */
- {0x0039,0x01}, /* LCD Vertical Display Height Register 1 */
- {0x003A,0x24}, /* LCD Vertical Non-Display Period Register */
- {0x003B,0x00}, /* TFT FPFRAME Start Position Register */
- {0x003C,0x01}, /* TFT FPFRAME Pulse Width Register */
- {0x0040,0x05}, /* LCD Display Mode Register */
- {0x0041,0x00}, /* LCD Miscellaneous Register */
- {0x0042,0x00}, /* LCD Display Start Address Register 0 */
- {0x0043,0x00}, /* LCD Display Start Address Register 1 */
- {0x0044,0x00}, /* LCD Display Start Address Register 2 */
- {0x0046,0x80}, /* LCD Memory Address Offset Register 0 */
- {0x0047,0x02}, /* LCD Memory Address Offset Register 1 */
- {0x0048,0x00}, /* LCD Pixel Panning Register */
- {0x004A,0x00}, /* LCD Display FIFO High Threshold Control Register */
- {0x004B,0x00}, /* LCD Display FIFO Low Threshold Control Register */
- {0x0050,0x4F}, /* CRT/TV Horizontal Display Width Register */
- {0x0052,0x13}, /* CRT/TV Horizontal Non-Display Period Register */
- {0x0053,0x01}, /* CRT/TV HRTC Start Position Register */
- {0x0054,0x0B}, /* CRT/TV HRTC Pulse Width Register */
- {0x0056,0xDF}, /* CRT/TV Vertical Display Height Register 0 */
- {0x0057,0x01}, /* CRT/TV Vertical Display Height Register 1 */
- {0x0058,0x2B}, /* CRT/TV Vertical Non-Display Period Register */
- {0x0059,0x09}, /* CRT/TV VRTC Start Position Register */
- {0x005A,0x01}, /* CRT/TV VRTC Pulse Width Register */
- {0x005B,0x10}, /* TV Output Control Register */
- {0x0060,0x05}, /* CRT/TV Display Mode Register */
- {0x0062,0x00}, /* CRT/TV Display Start Address Register 0 */
- {0x0063,0x00}, /* CRT/TV Display Start Address Register 1 */
- {0x0064,0x00}, /* CRT/TV Display Start Address Register 2 */
- {0x0066,0x80}, /* CRT/TV Memory Address Offset Register 0 */
- {0x0067,0x02}, /* CRT/TV Memory Address Offset Register 1 */
- {0x0068,0x00}, /* CRT/TV Pixel Panning Register */
- {0x006A,0x00}, /* CRT/TV Display FIFO High Threshold Control Register */
- {0x006B,0x00}, /* CRT/TV Display FIFO Low Threshold Control Register */
- {0x0070,0x00}, /* LCD Ink/Cursor Control Register */
- {0x0071,0x01}, /* LCD Ink/Cursor Start Address Register */
- {0x0072,0x00}, /* LCD Cursor X Position Register 0 */
- {0x0073,0x00}, /* LCD Cursor X Position Register 1 */
- {0x0074,0x00}, /* LCD Cursor Y Position Register 0 */
- {0x0075,0x00}, /* LCD Cursor Y Position Register 1 */
- {0x0076,0x00}, /* LCD Ink/Cursor Blue Color 0 Register */
- {0x0077,0x00}, /* LCD Ink/Cursor Green Color 0 Register */
- {0x0078,0x00}, /* LCD Ink/Cursor Red Color 0 Register */
- {0x007A,0x1F}, /* LCD Ink/Cursor Blue Color 1 Register */
- {0x007B,0x3F}, /* LCD Ink/Cursor Green Color 1 Register */
- {0x007C,0x1F}, /* LCD Ink/Cursor Red Color 1 Register */
- {0x007E,0x00}, /* LCD Ink/Cursor FIFO Threshold Register */
- {0x0080,0x00}, /* CRT/TV Ink/Cursor Control Register */
- {0x0081,0x01}, /* CRT/TV Ink/Cursor Start Address Register */
- {0x0082,0x00}, /* CRT/TV Cursor X Position Register 0 */
- {0x0083,0x00}, /* CRT/TV Cursor X Position Register 1 */
- {0x0084,0x00}, /* CRT/TV Cursor Y Position Register 0 */
- {0x0085,0x00}, /* CRT/TV Cursor Y Position Register 1 */
- {0x0086,0x00}, /* CRT/TV Ink/Cursor Blue Color 0 Register */
- {0x0087,0x00}, /* CRT/TV Ink/Cursor Green Color 0 Register */
- {0x0088,0x00}, /* CRT/TV Ink/Cursor Red Color 0 Register */
- {0x008A,0x1F}, /* CRT/TV Ink/Cursor Blue Color 1 Register */
- {0x008B,0x3F}, /* CRT/TV Ink/Cursor Green Color 1 Register */
- {0x008C,0x1F}, /* CRT/TV Ink/Cursor Red Color 1 Register */
- {0x008E,0x00}, /* CRT/TV Ink/Cursor FIFO Threshold Register */
- {0x0100,0x00}, /* BitBlt Control Register 0 */
- {0x0101,0x00}, /* BitBlt Control Register 1 */
- {0x0102,0x00}, /* BitBlt ROP Code/Color Expansion Register */
- {0x0103,0x00}, /* BitBlt Operation Register */
- {0x0104,0x00}, /* BitBlt Source Start Address Register 0 */
- {0x0105,0x00}, /* BitBlt Source Start Address Register 1 */
- {0x0106,0x00}, /* BitBlt Source Start Address Register 2 */
- {0x0108,0x00}, /* BitBlt Destination Start Address Register 0 */
- {0x0109,0x00}, /* BitBlt Destination Start Address Register 1 */
- {0x010A,0x00}, /* BitBlt Destination Start Address Register 2 */
- {0x010C,0x00}, /* BitBlt Memory Address Offset Register 0 */
- {0x010D,0x00}, /* BitBlt Memory Address Offset Register 1 */
- {0x0110,0x00}, /* BitBlt Width Register 0 */
- {0x0111,0x00}, /* BitBlt Width Register 1 */
- {0x0112,0x00}, /* BitBlt Height Register 0 */
- {0x0113,0x00}, /* BitBlt Height Register 1 */
- {0x0114,0x00}, /* BitBlt Background Color Register 0 */
- {0x0115,0x00}, /* BitBlt Background Color Register 1 */
- {0x0118,0x00}, /* BitBlt Foreground Color Register 0 */
- {0x0119,0x00}, /* BitBlt Foreground Color Register 1 */
- {0x01E0,0x00}, /* Look-Up Table Mode Register */
- {0x01E2,0x00}, /* Look-Up Table Address Register */
- {0x01F0,0x10}, /* Power Save Configuration Register */
- {0x01F1,0x00}, /* Power Save Status Register */
- {0x01F4,0x00}, /* CPU-to-Memory Access Watchdog Timer Register */
- {0x01FC,0x01}, /* Display Mode Register */
-};
diff --git a/board/esd/common/s1d13806_640_480_8bpp.h b/board/esd/common/s1d13806_640_480_8bpp.h
deleted file mode 100644
index c1f5b2bb77..0000000000
--- a/board/esd/common/s1d13806_640_480_8bpp.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- *
- * File generated by S1D13806CFG.EXE
- *
- * Copyright (c) 2000,2001 Epson Research and Development, Inc.
- * All rights reserved.
- *
- * PLEASE NOTE: If you FTP this file to a non-Windows platform, make
- * sure you transfer this file using ASCII, not BINARY mode.
- *
- * Panel: (active) 640x480 59Hz TFT Single 18-bit (PCLK=CLKI2=25.000MHz)
- * Memory: Embedded SDRAM (MCLK=CLKI=49.152MHz) (BUSCLK=33.333MHz)
- *
- */
-
-static S1D_REGS regs_13806_640_320_16bpp[] =
-{
- {0x0001,0x00}, /* Miscellaneous Register */
- {0x01FC,0x00}, /* Display Mode Register */
- {0x0004,0x18}, /* General IO Pins Configuration Register 0 */
- {0x0005,0x00}, /* General IO Pins Configuration Register 1 */
- {0x0008,0x18}, /* General IO Pins Control Register 0 */
- {0x0009,0x00}, /* General IO Pins Control Register 1 */
- {0x0010,0x00}, /* Memory Clock Configuration Register */
- {0x0014,0x02}, /* LCD Pixel Clock Configuration Register */
- {0x0018,0x02}, /* CRT/TV Pixel Clock Configuration Register */
- {0x001C,0x02}, /* MediaPlug Clock Configuration Register */
- {0x001E,0x01}, /* CPU To Memory Wait State Select Register */
- {0x0021,0x03}, /* DRAM Refresh Rate Register */
- {0x002A,0x00}, /* DRAM Timings Control Register 0 */
- {0x002B,0x01}, /* DRAM Timings Control Register 1 */
- {0x0020,0x80}, /* Memory Configuration Register */
- {0x0030,0x25}, /* Panel Type Register */
- {0x0031,0x00}, /* MOD Rate Register */
- {0x0032,0x4F}, /* LCD Horizontal Display Width Register */
- {0x0034,0x13}, /* LCD Horizontal Non-Display Period Register */
- {0x0035,0x00}, /* TFT FPLINE Start Position Register */
- {0x0036,0x0B}, /* TFT FPLINE Pulse Width Register */
- {0x0038,0xDF}, /* LCD Vertical Display Height Register 0 */
- {0x0039,0x01}, /* LCD Vertical Display Height Register 1 */
- {0x003A,0x24}, /* LCD Vertical Non-Display Period Register */
- {0x003B,0x00}, /* TFT FPFRAME Start Position Register */
- {0x003C,0x01}, /* TFT FPFRAME Pulse Width Register */
- {0x0040,0x03}, /* LCD Display Mode Register (8bpp) */
- {0x0041,0x00}, /* LCD Miscellaneous Register */
- {0x0042,0x00}, /* LCD Display Start Address Register 0 */
- {0x0043,0x00}, /* LCD Display Start Address Register 1 */
- {0x0044,0x00}, /* LCD Display Start Address Register 2 */
- {0x0046,0x80}, /* LCD Memory Address Offset Register 0 */
- {0x0047,0x02}, /* LCD Memory Address Offset Register 1 */
- {0x0048,0x00}, /* LCD Pixel Panning Register */
- {0x004A,0x00}, /* LCD Display FIFO High Threshold Control Register */
- {0x004B,0x00}, /* LCD Display FIFO Low Threshold Control Register */
- {0x0050,0x4F}, /* CRT/TV Horizontal Display Width Register */
- {0x0052,0x13}, /* CRT/TV Horizontal Non-Display Period Register */
- {0x0053,0x01}, /* CRT/TV HRTC Start Position Register */
- {0x0054,0x0B}, /* CRT/TV HRTC Pulse Width Register */
- {0x0056,0xDF}, /* CRT/TV Vertical Display Height Register 0 */
- {0x0057,0x01}, /* CRT/TV Vertical Display Height Register 1 */
- {0x0058,0x2B}, /* CRT/TV Vertical Non-Display Period Register */
- {0x0059,0x09}, /* CRT/TV VRTC Start Position Register */
- {0x005A,0x01}, /* CRT/TV VRTC Pulse Width Register */
- {0x005B,0x10}, /* TV Output Control Register */
- {0x0060,0x05}, /* CRT/TV Display Mode Register */
- {0x0062,0x00}, /* CRT/TV Display Start Address Register 0 */
- {0x0063,0x00}, /* CRT/TV Display Start Address Register 1 */
- {0x0064,0x00}, /* CRT/TV Display Start Address Register 2 */
- {0x0066,0x80}, /* CRT/TV Memory Address Offset Register 0 */
- {0x0067,0x02}, /* CRT/TV Memory Address Offset Register 1 */
- {0x0068,0x00}, /* CRT/TV Pixel Panning Register */
- {0x006A,0x00}, /* CRT/TV Display FIFO High Threshold Control Register */
- {0x006B,0x00}, /* CRT/TV Display FIFO Low Threshold Control Register */
- {0x0070,0x00}, /* LCD Ink/Cursor Control Register */
- {0x0071,0x01}, /* LCD Ink/Cursor Start Address Register */
- {0x0072,0x00}, /* LCD Cursor X Position Register 0 */
- {0x0073,0x00}, /* LCD Cursor X Position Register 1 */
- {0x0074,0x00}, /* LCD Cursor Y Position Register 0 */
- {0x0075,0x00}, /* LCD Cursor Y Position Register 1 */
- {0x0076,0x00}, /* LCD Ink/Cursor Blue Color 0 Register */
- {0x0077,0x00}, /* LCD Ink/Cursor Green Color 0 Register */
- {0x0078,0x00}, /* LCD Ink/Cursor Red Color 0 Register */
- {0x007A,0x1F}, /* LCD Ink/Cursor Blue Color 1 Register */
- {0x007B,0x3F}, /* LCD Ink/Cursor Green Color 1 Register */
- {0x007C,0x1F}, /* LCD Ink/Cursor Red Color 1 Register */
- {0x007E,0x00}, /* LCD Ink/Cursor FIFO Threshold Register */
- {0x0080,0x00}, /* CRT/TV Ink/Cursor Control Register */
- {0x0081,0x01}, /* CRT/TV Ink/Cursor Start Address Register */
- {0x0082,0x00}, /* CRT/TV Cursor X Position Register 0 */
- {0x0083,0x00}, /* CRT/TV Cursor X Position Register 1 */
- {0x0084,0x00}, /* CRT/TV Cursor Y Position Register 0 */
- {0x0085,0x00}, /* CRT/TV Cursor Y Position Register 1 */
- {0x0086,0x00}, /* CRT/TV Ink/Cursor Blue Color 0 Register */
- {0x0087,0x00}, /* CRT/TV Ink/Cursor Green Color 0 Register */
- {0x0088,0x00}, /* CRT/TV Ink/Cursor Red Color 0 Register */
- {0x008A,0x1F}, /* CRT/TV Ink/Cursor Blue Color 1 Register */
- {0x008B,0x3F}, /* CRT/TV Ink/Cursor Green Color 1 Register */
- {0x008C,0x1F}, /* CRT/TV Ink/Cursor Red Color 1 Register */
- {0x008E,0x00}, /* CRT/TV Ink/Cursor FIFO Threshold Register */
- {0x0100,0x00}, /* BitBlt Control Register 0 */
- {0x0101,0x00}, /* BitBlt Control Register 1 */
- {0x0102,0x00}, /* BitBlt ROP Code/Color Expansion Register */
- {0x0103,0x00}, /* BitBlt Operation Register */
- {0x0104,0x00}, /* BitBlt Source Start Address Register 0 */
- {0x0105,0x00}, /* BitBlt Source Start Address Register 1 */
- {0x0106,0x00}, /* BitBlt Source Start Address Register 2 */
- {0x0108,0x00}, /* BitBlt Destination Start Address Register 0 */
- {0x0109,0x00}, /* BitBlt Destination Start Address Register 1 */
- {0x010A,0x00}, /* BitBlt Destination Start Address Register 2 */
- {0x010C,0x00}, /* BitBlt Memory Address Offset Register 0 */
- {0x010D,0x00}, /* BitBlt Memory Address Offset Register 1 */
- {0x0110,0x00}, /* BitBlt Width Register 0 */
- {0x0111,0x00}, /* BitBlt Width Register 1 */
- {0x0112,0x00}, /* BitBlt Height Register 0 */
- {0x0113,0x00}, /* BitBlt Height Register 1 */
- {0x0114,0x00}, /* BitBlt Background Color Register 0 */
- {0x0115,0x00}, /* BitBlt Background Color Register 1 */
- {0x0118,0x00}, /* BitBlt Foreground Color Register 0 */
- {0x0119,0x00}, /* BitBlt Foreground Color Register 1 */
- {0x01E0,0x00}, /* Look-Up Table Mode Register */
- {0x01E2,0x00}, /* Look-Up Table Address Register */
- {0x01F0,0x10}, /* Power Save Configuration Register */
- {0x01F1,0x00}, /* Power Save Status Register */
- {0x01F4,0x00}, /* CPU-to-Memory Access Watchdog Timer Register */
- {0x01FC,0x01}, /* Display Mode Register */
-};
diff --git a/board/esd/common/xilinx_jtag/lenval.c b/board/esd/common/xilinx_jtag/lenval.c
deleted file mode 100644
index 7316266a52..0000000000
--- a/board/esd/common/xilinx_jtag/lenval.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * (C) Copyright 2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-/*******************************************************/
-/* file: lenval.c */
-/* abstract: This file contains routines for using */
-/* the lenVal data structure. */
-/*******************************************************/
-
-#include <common.h>
-#include <asm/processor.h>
-
-#include "lenval.h"
-#include "ports.h"
-
-
-/*****************************************************************************
- * Function: value
- * Description: Extract the long value from the lenval array.
- * Parameters: plvValue - ptr to lenval.
- * Returns: long - the extracted value.
- *****************************************************************************/
-long value( lenVal* plvValue )
-{
- long lValue; /* result to hold the accumulated result */
- short sIndex;
-
- lValue = 0;
- for ( sIndex = 0; sIndex < plvValue->len ; ++sIndex )
- {
- lValue <<= 8; /* shift the accumulated result */
- lValue |= plvValue->val[ sIndex]; /* get the last byte first */
- }
-
- return( lValue );
-}
-
-/*****************************************************************************
- * Function: initLenVal
- * Description: Initialize the lenval array with the given value.
- * Assumes lValue is less than 256.
- * Parameters: plv - ptr to lenval.
- * lValue - the value to set.
- * Returns: void.
- *****************************************************************************/
-void initLenVal( lenVal* plv,
- long lValue )
-{
- plv->len = 1;
- plv->val[0] = (unsigned char)lValue;
-}
-
-/*****************************************************************************
- * Function: EqualLenVal
- * Description: Compare two lenval arrays with an optional mask.
- * Parameters: plvTdoExpected - ptr to lenval #1.
- * plvTdoCaptured - ptr to lenval #2.
- * plvTdoMask - optional ptr to mask (=0 if no mask).
- * Returns: short - 0 = mismatch; 1 = equal.
- *****************************************************************************/
-short EqualLenVal( lenVal* plvTdoExpected,
- lenVal* plvTdoCaptured,
- lenVal* plvTdoMask )
-{
- short sEqual;
- short sIndex;
- unsigned char ucByteVal1;
- unsigned char ucByteVal2;
- unsigned char ucByteMask;
-
- sEqual = 1;
- sIndex = plvTdoExpected->len;
-
- while ( sEqual && sIndex-- )
- {
- ucByteVal1 = plvTdoExpected->val[ sIndex ];
- ucByteVal2 = plvTdoCaptured->val[ sIndex ];
- if ( plvTdoMask )
- {
- ucByteMask = plvTdoMask->val[ sIndex ];
- ucByteVal1 &= ucByteMask;
- ucByteVal2 &= ucByteMask;
- }
- if ( ucByteVal1 != ucByteVal2 )
- {
- sEqual = 0;
- }
- }
-
- return( sEqual );
-}
-
-
-/*****************************************************************************
- * Function: RetBit
- * Description: return the (byte, bit) of lv (reading from left to right).
- * Parameters: plv - ptr to lenval.
- * iByte - the byte to get the bit from.
- * iBit - the bit number (0=msb)
- * Returns: short - the bit value.
- *****************************************************************************/
-short RetBit( lenVal* plv,
- int iByte,
- int iBit )
-{
- /* assert( ( iByte >= 0 ) && ( iByte < plv->len ) ); */
- /* assert( ( iBit >= 0 ) && ( iBit < 8 ) ); */
- return( (short)( ( plv->val[ iByte ] >> ( 7 - iBit ) ) & 0x1 ) );
-}
-
-/*****************************************************************************
- * Function: SetBit
- * Description: set the (byte, bit) of lv equal to val
- * Example: SetBit("00000000",byte, 1) equals "01000000".
- * Parameters: plv - ptr to lenval.
- * iByte - the byte to get the bit from.
- * iBit - the bit number (0=msb).
- * sVal - the bit value to set.
- * Returns: void.
- *****************************************************************************/
-void SetBit( lenVal* plv,
- int iByte,
- int iBit,
- short sVal )
-{
- unsigned char ucByteVal;
- unsigned char ucBitMask;
-
- ucBitMask = (unsigned char)(1 << ( 7 - iBit ));
- ucByteVal = (unsigned char)(plv->val[ iByte ] & (~ucBitMask));
-
- if ( sVal )
- {
- ucByteVal |= ucBitMask;
- }
- plv->val[ iByte ] = ucByteVal;
-}
-
-/*****************************************************************************
- * Function: AddVal
- * Description: add val1 to val2 and store in resVal;
- * assumes val1 and val2 are of equal length.
- * Parameters: plvResVal - ptr to result.
- * plvVal1 - ptr of addendum.
- * plvVal2 - ptr of addendum.
- * Returns: void.
- *****************************************************************************/
-void addVal( lenVal* plvResVal,
- lenVal* plvVal1,
- lenVal* plvVal2 )
-{
- unsigned char ucCarry;
- unsigned short usSum;
- unsigned short usVal1;
- unsigned short usVal2;
- short sIndex;
-
- plvResVal->len = plvVal1->len; /* set up length of result */
-
- /* start at least significant bit and add bytes */
- ucCarry = 0;
- sIndex = plvVal1->len;
- while ( sIndex-- )
- {
- usVal1 = plvVal1->val[ sIndex ]; /* i'th byte of val1 */
- usVal2 = plvVal2->val[ sIndex ]; /* i'th byte of val2 */
-
- /* add the two bytes plus carry from previous addition */
- usSum = (unsigned short)( usVal1 + usVal2 + ucCarry );
-
- /* set up carry for next byte */
- ucCarry = (unsigned char)( ( usSum > 255 ) ? 1 : 0 );
-
- /* set the i'th byte of the result */
- plvResVal->val[ sIndex ] = (unsigned char)usSum;
- }
-}
-
-/*****************************************************************************
- * Function: readVal
- * Description: read from XSVF numBytes bytes of data into x.
- * Parameters: plv - ptr to lenval in which to put the bytes read.
- * sNumBytes - the number of bytes to read.
- * Returns: void.
- *****************************************************************************/
-void readVal( lenVal* plv,
- short sNumBytes )
-{
- unsigned char* pucVal;
-
- plv->len = sNumBytes; /* set the length of the lenVal */
- for ( pucVal = plv->val; sNumBytes; --sNumBytes, ++pucVal )
- {
- /* read a byte of data into the lenVal */
- readByte( pucVal );
- }
-}
diff --git a/board/esd/common/xilinx_jtag/lenval.h b/board/esd/common/xilinx_jtag/lenval.h
deleted file mode 100644
index 6bec4ea5aa..0000000000
--- a/board/esd/common/xilinx_jtag/lenval.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * (C) Copyright 2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-/*******************************************************/
-/* file: lenval.h */
-/* abstract: This file contains a description of the */
-/* data structure "lenval". */
-/*******************************************************/
-
-#ifndef lenval_dot_h
-#define lenval_dot_h
-
-/* the lenVal structure is a byte oriented type used to store an */
-/* arbitrary length binary value. As an example, the hex value */
-/* 0x0e3d is represented as a lenVal with len=2 (since 2 bytes */
-/* and val[0]=0e and val[1]=3d. val[2-MAX_LEN] are undefined */
-
-/* maximum length (in bytes) of value to read in */
-/* this needs to be at least 4, and longer than the */
-/* length of the longest SDR instruction. If there is, */
-/* only 1 device in the chain, MAX_LEN must be at least */
-/* ceil(27/8) == 4. For 6 devices in a chain, MAX_LEN */
-/* must be 5, for 14 devices MAX_LEN must be 6, for 20 */
-/* devices MAX_LEN must be 7, etc.. */
-/* You can safely set MAX_LEN to a smaller number if you*/
-/* know how many devices will be in your chain. */
-#define MAX_LEN 7000
-
-
-typedef struct var_len_byte
-{
- short len; /* number of chars in this value */
- unsigned char val[MAX_LEN+1]; /* bytes of data */
-} lenVal;
-
-
-/* return the long representation of a lenVal */
-extern long value(lenVal *x);
-
-/* set lenVal equal to value */
-extern void initLenVal(lenVal *x, long value);
-
-/* check if expected equals actual (taking the mask into account) */
-extern short EqualLenVal(lenVal *expected, lenVal *actual, lenVal *mask);
-
-/* add val1+val2 and put the result in resVal */
-extern void addVal(lenVal *resVal, lenVal *val1, lenVal *val2);
-
-/* return the (byte, bit) of lv (reading from left to right) */
-extern short RetBit(lenVal *lv, int byte, int bit);
-
-/* set the (byte, bit) of lv equal to val (e.g. SetBit("00000000",byte, 1)
- equals "01000000" */
-extern void SetBit(lenVal *lv, int byte, int bit, short val);
-
-/* read from XSVF numBytes bytes of data into x */
-extern void readVal(lenVal *x, short numBytes);
-
-#endif
diff --git a/board/esd/common/xilinx_jtag/micro.c b/board/esd/common/xilinx_jtag/micro.c
deleted file mode 100644
index 318f229feb..0000000000
--- a/board/esd/common/xilinx_jtag/micro.c
+++ /dev/null
@@ -1,1864 +0,0 @@
-/*
- * (C) Copyright 2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-/*****************************************************************************
- * file: micro.c
- * abstract: This file contains the function, xsvfExecute(),
- * call for interpreting the XSVF commands.
- * Usage: Call xsvfExecute() to process XSVF data.
- * The XSVF data is retrieved by readByte() in ports.c
- * Remove the main function if you already have one.
- * Options: XSVF_SUPPORT_COMPRESSION
- * This define supports the XC9500/XL compression scheme.
- * This define adds support for XSDRINC and XSETSDRMASKS.
- * XSVF_SUPPORT_ERRORCODES
- * This define causes the xsvfExecute function to return
- * an error code for specific errors. See error codes below.
- * If this is not defined, the return value defaults to the
- * legacy values for backward compatibility:
- * 1 = success; 0 = failure.
- * Debugging: DEBUG_MODE (Legacy name)
- * Define DEBUG_MODE to compile with debugging features.
- * Both micro.c and ports.c must be compiled with the DEBUG_MODE
- * defined to enable the standalone main implementation in
- * micro.c that reads XSVF from a file.
- * History: v2.00 - Original XSVF implementation.
- * v4.04 - Added delay at end of XSIR for XC18v00 support.
- * Added new commands for CoolRunner support:
- * XSTATE, XENDIR, XENDDR
- * v4.05 - Cleanup micro.c but leave ports.c intact.
- * v4.06 - Fix xsvfGotoTapState for retry transition.
- * v4.07 - Update example waitTime implementations for
- * compatibility with Virtex-II.
- * v4.10 - Add new XSIR2 command that supports a 2-byte
- * IR-length parameter for IR shifts > 255 bits.
- * v4.11 - No change. Update version to match SVF2XSVF xlator.
- * v4.14 - Added XCOMMENT.
- * v5.00 - Improve XSTATE support.
- * Added XWAIT.
- *****************************************************************************/
-
-#include <common.h>
-#include <command.h>
-#include <asm/processor.h>
-
-#include "micro.h"
-#include "lenval.h"
-#include "ports.h"
-
-
-extern const unsigned char fpgadata[];
-extern int filesize;
-
-
-/*============================================================================
- * XSVF #define
- ============================================================================*/
-
-#define XSVF_VERSION "5.00"
-
-/*****************************************************************************
- * Define: XSVF_SUPPORT_COMPRESSION
- * Description: Define this to support the XC9500/XL XSVF data compression
- * scheme.
- * Code size can be reduced by NOT supporting this feature.
- * However, you must use the -nc (no compress) option when
- * translating SVF to XSVF using the SVF2XSVF translator.
- * Corresponding, uncompressed XSVF may be larger.
- *****************************************************************************/
-#ifndef XSVF_SUPPORT_COMPRESSION
-#define XSVF_SUPPORT_COMPRESSION 1
-#endif
-
-/*****************************************************************************
- * Define: XSVF_SUPPORT_ERRORCODES
- * Description: Define this to support the new XSVF error codes.
- * (The original XSVF player just returned 1 for success and
- * 0 for an unspecified failure.)
- *****************************************************************************/
-#ifndef XSVF_SUPPORT_ERRORCODES
-#define XSVF_SUPPORT_ERRORCODES 1
-#endif
-
-#ifdef XSVF_SUPPORT_ERRORCODES
-#define XSVF_ERRORCODE(errorCode) errorCode
-#else /* Use legacy error code */
-#define XSVF_ERRORCODE(errorCode) ((errorCode==XSVF_ERROR_NONE)?1:0)
-#endif /* XSVF_SUPPORT_ERRORCODES */
-
-
-/*============================================================================
- * DEBUG_MODE #define
- ============================================================================*/
-#define DEBUG_MODE
-
-#ifdef DEBUG_MODE
-#define XSVFDBG_PRINTF(iDebugLevel,pzFormat) \
- { if ( xsvf_iDebugLevel >= iDebugLevel ) \
- printf( pzFormat ); }
-#define XSVFDBG_PRINTF1(iDebugLevel,pzFormat,arg1) \
- { if ( xsvf_iDebugLevel >= iDebugLevel ) \
- printf( pzFormat, arg1 ); }
-#define XSVFDBG_PRINTF2(iDebugLevel,pzFormat,arg1,arg2) \
- { if ( xsvf_iDebugLevel >= iDebugLevel ) \
- printf( pzFormat, arg1, arg2 ); }
-#define XSVFDBG_PRINTF3(iDebugLevel,pzFormat,arg1,arg2,arg3) \
- { if ( xsvf_iDebugLevel >= iDebugLevel ) \
- printf( pzFormat, arg1, arg2, arg3 ); }
-#define XSVFDBG_PRINTLENVAL(iDebugLevel,plenVal) \
- { if ( xsvf_iDebugLevel >= iDebugLevel ) \
- xsvfPrintLenVal(plenVal); }
-#else /* !DEBUG_MODE */
-#define XSVFDBG_PRINTF(iDebugLevel,pzFormat)
-#define XSVFDBG_PRINTF1(iDebugLevel,pzFormat,arg1)
-#define XSVFDBG_PRINTF2(iDebugLevel,pzFormat,arg1,arg2)
-#define XSVFDBG_PRINTF3(iDebugLevel,pzFormat,arg1,arg2,arg3)
-#define XSVFDBG_PRINTLENVAL(iDebugLevel,plenVal)
-#endif /* DEBUG_MODE */
-
-
-/*============================================================================
- * XSVF Type Declarations
- ============================================================================*/
-
-/*****************************************************************************
- * Struct: SXsvfInfo
- * Description: This structure contains all of the data used during the
- * execution of the XSVF. Some data is persistent, predefined
- * information (e.g. lRunTestTime). The bulk of this struct's
- * size is due to the lenVal structs (defined in lenval.h)
- * which contain buffers for the active shift data. The MAX_LEN
- * #define in lenval.h defines the size of these buffers.
- * These buffers must be large enough to store the longest
- * shift data in your XSVF file. For example:
- * MAX_LEN >= ( longest_shift_data_in_bits / 8 )
- * Because the lenVal struct dominates the space usage of this
- * struct, the rough size of this struct is:
- * sizeof( SXsvfInfo ) ~= MAX_LEN * 7 (number of lenVals)
- * xsvfInitialize() contains initialization code for the data
- * in this struct.
- * xsvfCleanup() contains cleanup code for the data in this
- * struct.
- *****************************************************************************/
-typedef struct tagSXsvfInfo
-{
- /* XSVF status information */
- unsigned char ucComplete; /* 0 = running; 1 = complete */
- unsigned char ucCommand; /* Current XSVF command byte */
- long lCommandCount; /* Number of commands processed */
- int iErrorCode; /* An error code. 0 = no error. */
-
- /* TAP state/sequencing information */
- unsigned char ucTapState; /* Current TAP state */
- unsigned char ucEndIR; /* ENDIR TAP state (See SVF) */
- unsigned char ucEndDR; /* ENDDR TAP state (See SVF) */
-
- /* RUNTEST information */
- unsigned char ucMaxRepeat; /* Max repeat loops (for xc9500/xl) */
- long lRunTestTime; /* Pre-specified RUNTEST time (usec) */
-
- /* Shift Data Info and Buffers */
- long lShiftLengthBits; /* Len. current shift data in bits */
- short sShiftLengthBytes; /* Len. current shift data in bytes */
-
- lenVal lvTdi; /* Current TDI shift data */
- lenVal lvTdoExpected; /* Expected TDO shift data */
- lenVal lvTdoCaptured; /* Captured TDO shift data */
- lenVal lvTdoMask; /* TDO mask: 0=dontcare; 1=compare */
-
-#ifdef XSVF_SUPPORT_COMPRESSION
- /* XSDRINC Data Buffers */
- lenVal lvAddressMask; /* Address mask for XSDRINC */
- lenVal lvDataMask; /* Data mask for XSDRINC */
- lenVal lvNextData; /* Next data for XSDRINC */
-#endif /* XSVF_SUPPORT_COMPRESSION */
-} SXsvfInfo;
-
-/* Declare pointer to functions that perform XSVF commands */
-typedef int (*TXsvfDoCmdFuncPtr)( SXsvfInfo* );
-
-/*============================================================================
- * XSVF Command Bytes
- ============================================================================*/
-
-/* encodings of xsvf instructions */
-#define XCOMPLETE 0
-#define XTDOMASK 1
-#define XSIR 2
-#define XSDR 3
-#define XRUNTEST 4
-/* Reserved 5 */
-/* Reserved 6 */
-#define XREPEAT 7
-#define XSDRSIZE 8
-#define XSDRTDO 9
-#define XSETSDRMASKS 10
-#define XSDRINC 11
-#define XSDRB 12
-#define XSDRC 13
-#define XSDRE 14
-#define XSDRTDOB 15
-#define XSDRTDOC 16
-#define XSDRTDOE 17
-#define XSTATE 18 /* 4.00 */
-#define XENDIR 19 /* 4.04 */
-#define XENDDR 20 /* 4.04 */
-#define XSIR2 21 /* 4.10 */
-#define XCOMMENT 22 /* 4.14 */
-#define XWAIT 23 /* 5.00 */
-/* Insert new commands here */
-/* and add corresponding xsvfDoCmd function to xsvf_pfDoCmd below. */
-#define XLASTCMD 24 /* Last command marker */
-
-
-/*============================================================================
- * XSVF Command Parameter Values
- ============================================================================*/
-
-#define XSTATE_RESET 0 /* 4.00 parameter for XSTATE */
-#define XSTATE_RUNTEST 1 /* 4.00 parameter for XSTATE */
-
-#define XENDXR_RUNTEST 0 /* 4.04 parameter for XENDIR/DR */
-#define XENDXR_PAUSE 1 /* 4.04 parameter for XENDIR/DR */
-
-/* TAP states */
-#define XTAPSTATE_RESET 0x00
-#define XTAPSTATE_RUNTEST 0x01 /* a.k.a. IDLE */
-#define XTAPSTATE_SELECTDR 0x02
-#define XTAPSTATE_CAPTUREDR 0x03
-#define XTAPSTATE_SHIFTDR 0x04
-#define XTAPSTATE_EXIT1DR 0x05
-#define XTAPSTATE_PAUSEDR 0x06
-#define XTAPSTATE_EXIT2DR 0x07
-#define XTAPSTATE_UPDATEDR 0x08
-#define XTAPSTATE_IRSTATES 0x09 /* All IR states begin here */
-#define XTAPSTATE_SELECTIR 0x09
-#define XTAPSTATE_CAPTUREIR 0x0A
-#define XTAPSTATE_SHIFTIR 0x0B
-#define XTAPSTATE_EXIT1IR 0x0C
-#define XTAPSTATE_PAUSEIR 0x0D
-#define XTAPSTATE_EXIT2IR 0x0E
-#define XTAPSTATE_UPDATEIR 0x0F
-
-/*============================================================================
- * XSVF Function Prototypes
- ============================================================================*/
-
-int xsvfDoIllegalCmd( SXsvfInfo* pXsvfInfo ); /* Illegal command function */
-int xsvfDoXCOMPLETE( SXsvfInfo* pXsvfInfo );
-int xsvfDoXTDOMASK( SXsvfInfo* pXsvfInfo );
-int xsvfDoXSIR( SXsvfInfo* pXsvfInfo );
-int xsvfDoXSIR2( SXsvfInfo* pXsvfInfo );
-int xsvfDoXSDR( SXsvfInfo* pXsvfInfo );
-int xsvfDoXRUNTEST( SXsvfInfo* pXsvfInfo );
-int xsvfDoXREPEAT( SXsvfInfo* pXsvfInfo );
-int xsvfDoXSDRSIZE( SXsvfInfo* pXsvfInfo );
-int xsvfDoXSDRTDO( SXsvfInfo* pXsvfInfo );
-int xsvfDoXSETSDRMASKS( SXsvfInfo* pXsvfInfo );
-int xsvfDoXSDRINC( SXsvfInfo* pXsvfInfo );
-int xsvfDoXSDRBCE( SXsvfInfo* pXsvfInfo );
-int xsvfDoXSDRTDOBCE( SXsvfInfo* pXsvfInfo );
-int xsvfDoXSTATE( SXsvfInfo* pXsvfInfo );
-int xsvfDoXENDXR( SXsvfInfo* pXsvfInfo );
-int xsvfDoXCOMMENT( SXsvfInfo* pXsvfInfo );
-int xsvfDoXWAIT( SXsvfInfo* pXsvfInfo );
-/* Insert new command functions here */
-
-/*============================================================================
- * XSVF Global Variables
- ============================================================================*/
-
-/* Array of XSVF command functions. Must follow command byte value order! */
-/* If your compiler cannot take this form, then convert to a switch statement*/
-TXsvfDoCmdFuncPtr xsvf_pfDoCmd[] =
-{
- xsvfDoXCOMPLETE, /* 0 */
- xsvfDoXTDOMASK, /* 1 */
- xsvfDoXSIR, /* 2 */
- xsvfDoXSDR, /* 3 */
- xsvfDoXRUNTEST, /* 4 */
- xsvfDoIllegalCmd, /* 5 */
- xsvfDoIllegalCmd, /* 6 */
- xsvfDoXREPEAT, /* 7 */
- xsvfDoXSDRSIZE, /* 8 */
- xsvfDoXSDRTDO, /* 9 */
-#ifdef XSVF_SUPPORT_COMPRESSION
- xsvfDoXSETSDRMASKS, /* 10 */
- xsvfDoXSDRINC, /* 11 */
-#else
- xsvfDoIllegalCmd, /* 10 */
- xsvfDoIllegalCmd, /* 11 */
-#endif /* XSVF_SUPPORT_COMPRESSION */
- xsvfDoXSDRBCE, /* 12 */
- xsvfDoXSDRBCE, /* 13 */
- xsvfDoXSDRBCE, /* 14 */
- xsvfDoXSDRTDOBCE, /* 15 */
- xsvfDoXSDRTDOBCE, /* 16 */
- xsvfDoXSDRTDOBCE, /* 17 */
- xsvfDoXSTATE, /* 18 */
- xsvfDoXENDXR, /* 19 */
- xsvfDoXENDXR, /* 20 */
- xsvfDoXSIR2, /* 21 */
- xsvfDoXCOMMENT, /* 22 */
- xsvfDoXWAIT /* 23 */
-/* Insert new command functions here */
-};
-
-#ifdef DEBUG_MODE
-char* xsvf_pzCommandName[] =
-{
- "XCOMPLETE",
- "XTDOMASK",
- "XSIR",
- "XSDR",
- "XRUNTEST",
- "Reserved5",
- "Reserved6",
- "XREPEAT",
- "XSDRSIZE",
- "XSDRTDO",
- "XSETSDRMASKS",
- "XSDRINC",
- "XSDRB",
- "XSDRC",
- "XSDRE",
- "XSDRTDOB",
- "XSDRTDOC",
- "XSDRTDOE",
- "XSTATE",
- "XENDIR",
- "XENDDR",
- "XSIR2",
- "XCOMMENT",
- "XWAIT"
-};
-
-char* xsvf_pzErrorName[] =
-{
- "No error",
- "ERROR: Unknown",
- "ERROR: TDO mismatch",
- "ERROR: TDO mismatch and exceeded max retries",
- "ERROR: Unsupported XSVF command",
- "ERROR: Illegal state specification",
- "ERROR: Data overflows allocated MAX_LEN buffer size"
-};
-
-char* xsvf_pzTapState[] =
-{
- "RESET", /* 0x00 */
- "RUNTEST/IDLE", /* 0x01 */
- "DRSELECT", /* 0x02 */
- "DRCAPTURE", /* 0x03 */
- "DRSHIFT", /* 0x04 */
- "DREXIT1", /* 0x05 */
- "DRPAUSE", /* 0x06 */
- "DREXIT2", /* 0x07 */
- "DRUPDATE", /* 0x08 */
- "IRSELECT", /* 0x09 */
- "IRCAPTURE", /* 0x0A */
- "IRSHIFT", /* 0x0B */
- "IREXIT1", /* 0x0C */
- "IRPAUSE", /* 0x0D */
- "IREXIT2", /* 0x0E */
- "IRUPDATE" /* 0x0F */
-};
-#endif /* DEBUG_MODE */
-
-/*#ifdef DEBUG_MODE */
-/* FILE* in; /XXX* Legacy DEBUG_MODE file pointer */
-int xsvf_iDebugLevel;
-/*#endif /XXX* DEBUG_MODE */
-
-/*============================================================================
- * Utility Functions
- ============================================================================*/
-
-/*****************************************************************************
- * Function: xsvfPrintLenVal
- * Description: Print the lenval value in hex.
- * Parameters: plv - ptr to lenval.
- * Returns: void.
- *****************************************************************************/
-#ifdef DEBUG_MODE
-void xsvfPrintLenVal( lenVal *plv )
-{
- int i;
-
- if ( plv )
- {
- printf( "0x" );
- for ( i = 0; i < plv->len; ++i )
- {
- printf( "%02x", ((unsigned int)(plv->val[ i ])) );
- }
- }
-}
-#endif /* DEBUG_MODE */
-
-
-/*****************************************************************************
- * Function: xsvfInfoInit
- * Description: Initialize the xsvfInfo data.
- * Parameters: pXsvfInfo - ptr to the XSVF info structure.
- * Returns: int - 0 = success; otherwise error.
- *****************************************************************************/
-int xsvfInfoInit( SXsvfInfo* pXsvfInfo )
-{
- XSVFDBG_PRINTF1( 4, " sizeof( SXsvfInfo ) = %d bytes\n",
- sizeof( SXsvfInfo ) );
-
- pXsvfInfo->ucComplete = 0;
- pXsvfInfo->ucCommand = XCOMPLETE;
- pXsvfInfo->lCommandCount = 0;
- pXsvfInfo->iErrorCode = XSVF_ERROR_NONE;
- pXsvfInfo->ucMaxRepeat = 0;
- pXsvfInfo->ucTapState = XTAPSTATE_RESET;
- pXsvfInfo->ucEndIR = XTAPSTATE_RUNTEST;
- pXsvfInfo->ucEndDR = XTAPSTATE_RUNTEST;
- pXsvfInfo->lShiftLengthBits = 0L;
- pXsvfInfo->sShiftLengthBytes= 0;
- pXsvfInfo->lRunTestTime = 0L;
-
- return( 0 );
-}
-
-/*****************************************************************************
- * Function: xsvfInfoCleanup
- * Description: Cleanup the xsvfInfo data.
- * Parameters: pXsvfInfo - ptr to the XSVF info structure.
- * Returns: void.
- *****************************************************************************/
-void xsvfInfoCleanup( SXsvfInfo* pXsvfInfo )
-{
-}
-
-/*****************************************************************************
- * Function: xsvfGetAsNumBytes
- * Description: Calculate the number of bytes the given number of bits
- * consumes.
- * Parameters: lNumBits - the number of bits.
- * Returns: short - the number of bytes to store the number of bits.
- *****************************************************************************/
-short xsvfGetAsNumBytes( long lNumBits )
-{
- return( (short)( ( lNumBits + 7L ) / 8L ) );
-}
-
-/*****************************************************************************
- * Function: xsvfTmsTransition
- * Description: Apply TMS and transition TAP controller by applying one TCK
- * cycle.
- * Parameters: sTms - new TMS value.
- * Returns: void.
- *****************************************************************************/
-void xsvfTmsTransition( short sTms )
-{
- setPort( TMS, sTms );
- setPort( TCK, 0 );
- setPort( TCK, 1 );
-}
-
-/*****************************************************************************
- * Function: xsvfGotoTapState
- * Description: From the current TAP state, go to the named TAP state.
- * A target state of RESET ALWAYS causes TMS reset sequence.
- * All SVF standard stable state paths are supported.
- * All state transitions are supported except for the following
- * which cause an XSVF_ERROR_ILLEGALSTATE:
- * - Target==DREXIT2; Start!=DRPAUSE
- * - Target==IREXIT2; Start!=IRPAUSE
- * Parameters: pucTapState - Current TAP state; returns final TAP state.
- * ucTargetState - New target TAP state.
- * Returns: int - 0 = success; otherwise error.
- *****************************************************************************/
-int xsvfGotoTapState( unsigned char* pucTapState,
- unsigned char ucTargetState )
-{
- int i;
- int iErrorCode;
-
- iErrorCode = XSVF_ERROR_NONE;
- if ( ucTargetState == XTAPSTATE_RESET )
- {
- /* If RESET, always perform TMS reset sequence to reset/sync TAPs */
- xsvfTmsTransition( 1 );
- for ( i = 0; i < 5; ++i )
- {
- setPort( TCK, 0 );
- setPort( TCK, 1 );
- }
- *pucTapState = XTAPSTATE_RESET;
- XSVFDBG_PRINTF( 3, " TMS Reset Sequence -> Test-Logic-Reset\n" );
- XSVFDBG_PRINTF1( 3, " TAP State = %s\n",
- xsvf_pzTapState[ *pucTapState ] );
- } else if ( ( ucTargetState != *pucTapState ) &&
- ( ( ( ucTargetState == XTAPSTATE_EXIT2DR ) && ( *pucTapState != XTAPSTATE_PAUSEDR ) ) ||
- ( ( ucTargetState == XTAPSTATE_EXIT2IR ) && ( *pucTapState != XTAPSTATE_PAUSEIR ) ) ) )
- {
- /* Trap illegal TAP state path specification */
- iErrorCode = XSVF_ERROR_ILLEGALSTATE;
- } else {
- if ( ucTargetState == *pucTapState )
- {
- /* Already in target state. Do nothing except when in DRPAUSE
- or in IRPAUSE to comply with SVF standard */
- if ( ucTargetState == XTAPSTATE_PAUSEDR )
- {
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_EXIT2DR;
- XSVFDBG_PRINTF1( 3, " TAP State = %s\n",
- xsvf_pzTapState[ *pucTapState ] );
- }
- else if ( ucTargetState == XTAPSTATE_PAUSEIR )
- {
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_EXIT2IR;
- XSVFDBG_PRINTF1( 3, " TAP State = %s\n",
- xsvf_pzTapState[ *pucTapState ] );
- }
- }
-
- /* Perform TAP state transitions to get to the target state */
- while ( ucTargetState != *pucTapState )
- {
- switch ( *pucTapState )
- {
- case XTAPSTATE_RESET:
- xsvfTmsTransition( 0 );
- *pucTapState = XTAPSTATE_RUNTEST;
- break;
- case XTAPSTATE_RUNTEST:
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_SELECTDR;
- break;
- case XTAPSTATE_SELECTDR:
- if ( ucTargetState >= XTAPSTATE_IRSTATES )
- {
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_SELECTIR;
- }
- else
- {
- xsvfTmsTransition( 0 );
- *pucTapState = XTAPSTATE_CAPTUREDR;
- }
- break;
- case XTAPSTATE_CAPTUREDR:
- if ( ucTargetState == XTAPSTATE_SHIFTDR )
- {
- xsvfTmsTransition( 0 );
- *pucTapState = XTAPSTATE_SHIFTDR;
- }
- else
- {
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_EXIT1DR;
- }
- break;
- case XTAPSTATE_SHIFTDR:
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_EXIT1DR;
- break;
- case XTAPSTATE_EXIT1DR:
- if ( ucTargetState == XTAPSTATE_PAUSEDR )
- {
- xsvfTmsTransition( 0 );
- *pucTapState = XTAPSTATE_PAUSEDR;
- }
- else
- {
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_UPDATEDR;
- }
- break;
- case XTAPSTATE_PAUSEDR:
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_EXIT2DR;
- break;
- case XTAPSTATE_EXIT2DR:
- if ( ucTargetState == XTAPSTATE_SHIFTDR )
- {
- xsvfTmsTransition( 0 );
- *pucTapState = XTAPSTATE_SHIFTDR;
- }
- else
- {
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_UPDATEDR;
- }
- break;
- case XTAPSTATE_UPDATEDR:
- if ( ucTargetState == XTAPSTATE_RUNTEST )
- {
- xsvfTmsTransition( 0 );
- *pucTapState = XTAPSTATE_RUNTEST;
- }
- else
- {
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_SELECTDR;
- }
- break;
- case XTAPSTATE_SELECTIR:
- xsvfTmsTransition( 0 );
- *pucTapState = XTAPSTATE_CAPTUREIR;
- break;
- case XTAPSTATE_CAPTUREIR:
- if ( ucTargetState == XTAPSTATE_SHIFTIR )
- {
- xsvfTmsTransition( 0 );
- *pucTapState = XTAPSTATE_SHIFTIR;
- }
- else
- {
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_EXIT1IR;
- }
- break;
- case XTAPSTATE_SHIFTIR:
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_EXIT1IR;
- break;
- case XTAPSTATE_EXIT1IR:
- if ( ucTargetState == XTAPSTATE_PAUSEIR )
- {
- xsvfTmsTransition( 0 );
- *pucTapState = XTAPSTATE_PAUSEIR;
- }
- else
- {
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_UPDATEIR;
- }
- break;
- case XTAPSTATE_PAUSEIR:
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_EXIT2IR;
- break;
- case XTAPSTATE_EXIT2IR:
- if ( ucTargetState == XTAPSTATE_SHIFTIR )
- {
- xsvfTmsTransition( 0 );
- *pucTapState = XTAPSTATE_SHIFTIR;
- }
- else
- {
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_UPDATEIR;
- }
- break;
- case XTAPSTATE_UPDATEIR:
- if ( ucTargetState == XTAPSTATE_RUNTEST )
- {
- xsvfTmsTransition( 0 );
- *pucTapState = XTAPSTATE_RUNTEST;
- }
- else
- {
- xsvfTmsTransition( 1 );
- *pucTapState = XTAPSTATE_SELECTDR;
- }
- break;
- default:
- iErrorCode = XSVF_ERROR_ILLEGALSTATE;
- *pucTapState = ucTargetState; /* Exit while loop */
- break;
- }
- XSVFDBG_PRINTF1( 3, " TAP State = %s\n",
- xsvf_pzTapState[ *pucTapState ] );
- }
- }
-
- return( iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfShiftOnly
- * Description: Assumes that starting TAP state is SHIFT-DR or SHIFT-IR.
- * Shift the given TDI data into the JTAG scan chain.
- * Optionally, save the TDO data shifted out of the scan chain.
- * Last shift cycle is special: capture last TDO, set last TDI,
- * but does not pulse TCK. Caller must pulse TCK and optionally
- * set TMS=1 to exit shift state.
- * Parameters: lNumBits - number of bits to shift.
- * plvTdi - ptr to lenval for TDI data.
- * plvTdoCaptured - ptr to lenval for storing captured TDO data.
- * iExitShift - 1=exit at end of shift; 0=stay in Shift-DR.
- * Returns: void.
- *****************************************************************************/
-void xsvfShiftOnly( long lNumBits,
- lenVal* plvTdi,
- lenVal* plvTdoCaptured,
- int iExitShift )
-{
- unsigned char* pucTdi;
- unsigned char* pucTdo;
- unsigned char ucTdiByte;
- unsigned char ucTdoByte;
- unsigned char ucTdoBit;
- int i;
-
- /* assert( ( ( lNumBits + 7 ) / 8 ) == plvTdi->len ); */
-
- /* Initialize TDO storage len == TDI len */
- pucTdo = 0;
- if ( plvTdoCaptured )
- {
- plvTdoCaptured->len = plvTdi->len;
- pucTdo = plvTdoCaptured->val + plvTdi->len;
- }
-
- /* Shift LSB first. val[N-1] == LSB. val[0] == MSB. */
- pucTdi = plvTdi->val + plvTdi->len;
- while ( lNumBits )
- {
- /* Process on a byte-basis */
- ucTdiByte = (*(--pucTdi));
- ucTdoByte = 0;
- for ( i = 0; ( lNumBits && ( i < 8 ) ); ++i )
- {
- --lNumBits;
- if ( iExitShift && !lNumBits )
- {
- /* Exit Shift-DR state */
- setPort( TMS, 1 );
- }
-
- /* Set the new TDI value */
- setPort( TDI, (short)(ucTdiByte & 1) );
- ucTdiByte >>= 1;
-
- /* Set TCK low */
- setPort( TCK, 0 );
-
- if ( pucTdo )
- {
- /* Save the TDO value */
- ucTdoBit = readTDOBit();
- ucTdoByte |= ( ucTdoBit << i );
- }
-
- /* Set TCK high */
- setPort( TCK, 1 );
- }
-
- /* Save the TDO byte value */
- if ( pucTdo )
- {
- (*(--pucTdo)) = ucTdoByte;
- }
- }
-}
-
-/*****************************************************************************
- * Function: xsvfShift
- * Description: Goes to the given starting TAP state.
- * Calls xsvfShiftOnly to shift in the given TDI data and
- * optionally capture the TDO data.
- * Compares the TDO captured data against the TDO expected
- * data.
- * If a data mismatch occurs, then executes the exception
- * handling loop upto ucMaxRepeat times.
- * Parameters: pucTapState - Ptr to current TAP state.
- * ucStartState - Starting shift state: Shift-DR or Shift-IR.
- * lNumBits - number of bits to shift.
- * plvTdi - ptr to lenval for TDI data.
- * plvTdoCaptured - ptr to lenval for storing TDO data.
- * plvTdoExpected - ptr to expected TDO data.
- * plvTdoMask - ptr to TDO mask.
- * ucEndState - state in which to end the shift.
- * lRunTestTime - amount of time to wait after the shift.
- * ucMaxRepeat - Maximum number of retries on TDO mismatch.
- * Returns: int - 0 = success; otherwise TDO mismatch.
- * Notes: XC9500XL-only Optimization:
- * Skip the waitTime() if plvTdoMask->val[0:plvTdoMask->len-1]
- * is NOT all zeros and sMatch==1.
- *****************************************************************************/
-int xsvfShift( unsigned char* pucTapState,
- unsigned char ucStartState,
- long lNumBits,
- lenVal* plvTdi,
- lenVal* plvTdoCaptured,
- lenVal* plvTdoExpected,
- lenVal* plvTdoMask,
- unsigned char ucEndState,
- long lRunTestTime,
- unsigned char ucMaxRepeat )
-{
- int iErrorCode;
- int iMismatch;
- unsigned char ucRepeat;
- int iExitShift;
-
- iErrorCode = XSVF_ERROR_NONE;
- iMismatch = 0;
- ucRepeat = 0;
- iExitShift = ( ucStartState != ucEndState );
-
- XSVFDBG_PRINTF1( 3, " Shift Length = %ld\n", lNumBits );
- XSVFDBG_PRINTF( 4, " TDI = ");
- XSVFDBG_PRINTLENVAL( 4, plvTdi );
- XSVFDBG_PRINTF( 4, "\n");
- XSVFDBG_PRINTF( 4, " TDO Expected = ");
- XSVFDBG_PRINTLENVAL( 4, plvTdoExpected );
- XSVFDBG_PRINTF( 4, "\n");
-
- if ( !lNumBits )
- {
- /* Compatibility with XSVF2.00: XSDR 0 = no shift, but wait in RTI */
- if ( lRunTestTime )
- {
- /* Wait for prespecified XRUNTEST time */
- xsvfGotoTapState( pucTapState, XTAPSTATE_RUNTEST );
- XSVFDBG_PRINTF1( 3, " Wait = %ld usec\n", lRunTestTime );
- waitTime( lRunTestTime );
- }
- }
- else
- {
- do
- {
- /* Goto Shift-DR or Shift-IR */
- xsvfGotoTapState( pucTapState, ucStartState );
-
- /* Shift TDI and capture TDO */
- xsvfShiftOnly( lNumBits, plvTdi, plvTdoCaptured, iExitShift );
-
- if ( plvTdoExpected )
- {
- /* Compare TDO data to expected TDO data */
- iMismatch = !EqualLenVal( plvTdoExpected,
- plvTdoCaptured,
- plvTdoMask );
- }
-
- if ( iExitShift )
- {
- /* Update TAP state: Shift->Exit */
- ++(*pucTapState);
- XSVFDBG_PRINTF1( 3, " TAP State = %s\n",
- xsvf_pzTapState[ *pucTapState ] );
-
- if ( iMismatch && lRunTestTime && ( ucRepeat < ucMaxRepeat ) )
- {
- XSVFDBG_PRINTF( 4, " TDO Expected = ");
- XSVFDBG_PRINTLENVAL( 4, plvTdoExpected );
- XSVFDBG_PRINTF( 4, "\n");
- XSVFDBG_PRINTF( 4, " TDO Captured = ");
- XSVFDBG_PRINTLENVAL( 4, plvTdoCaptured );
- XSVFDBG_PRINTF( 4, "\n");
- XSVFDBG_PRINTF( 4, " TDO Mask = ");
- XSVFDBG_PRINTLENVAL( 4, plvTdoMask );
- XSVFDBG_PRINTF( 4, "\n");
- XSVFDBG_PRINTF1( 3, " Retry #%d\n", ( ucRepeat + 1 ) );
- /* Do exception handling retry - ShiftDR only */
- xsvfGotoTapState( pucTapState, XTAPSTATE_PAUSEDR );
- /* Shift 1 extra bit */
- xsvfGotoTapState( pucTapState, XTAPSTATE_SHIFTDR );
- /* Increment RUNTEST time by an additional 25% */
- lRunTestTime += ( lRunTestTime >> 2 );
- }
- else
- {
- /* Do normal exit from Shift-XR */
- xsvfGotoTapState( pucTapState, ucEndState );
- }
-
- if ( lRunTestTime )
- {
- /* Wait for prespecified XRUNTEST time */
- xsvfGotoTapState( pucTapState, XTAPSTATE_RUNTEST );
- XSVFDBG_PRINTF1( 3, " Wait = %ld usec\n", lRunTestTime );
- waitTime( lRunTestTime );
- }
- }
- } while ( iMismatch && ( ucRepeat++ < ucMaxRepeat ) );
- }
-
- if ( iMismatch )
- {
- XSVFDBG_PRINTF( 1, " TDO Expected = ");
- XSVFDBG_PRINTLENVAL( 1, plvTdoExpected );
- XSVFDBG_PRINTF( 1, "\n");
- XSVFDBG_PRINTF( 1, " TDO Captured = ");
- XSVFDBG_PRINTLENVAL( 1, plvTdoCaptured );
- XSVFDBG_PRINTF( 1, "\n");
- XSVFDBG_PRINTF( 1, " TDO Mask = ");
- XSVFDBG_PRINTLENVAL( 1, plvTdoMask );
- XSVFDBG_PRINTF( 1, "\n");
- if ( ucMaxRepeat && ( ucRepeat > ucMaxRepeat ) )
- {
- iErrorCode = XSVF_ERROR_MAXRETRIES;
- }
- else
- {
- iErrorCode = XSVF_ERROR_TDOMISMATCH;
- }
- }
-
- return( iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfBasicXSDRTDO
- * Description: Get the XSDRTDO parameters and execute the XSDRTDO command.
- * This is the common function for all XSDRTDO commands.
- * Parameters: pucTapState - Current TAP state.
- * lShiftLengthBits - number of bits to shift.
- * sShiftLengthBytes - number of bytes to read.
- * plvTdi - ptr to lenval for TDI data.
- * lvTdoCaptured - ptr to lenval for storing TDO data.
- * iEndState - state in which to end the shift.
- * lRunTestTime - amount of time to wait after the shift.
- * ucMaxRepeat - maximum xc9500/xl retries.
- * Returns: int - 0 = success; otherwise TDO mismatch.
- *****************************************************************************/
-int xsvfBasicXSDRTDO( unsigned char* pucTapState,
- long lShiftLengthBits,
- short sShiftLengthBytes,
- lenVal* plvTdi,
- lenVal* plvTdoCaptured,
- lenVal* plvTdoExpected,
- lenVal* plvTdoMask,
- unsigned char ucEndState,
- long lRunTestTime,
- unsigned char ucMaxRepeat )
-{
- readVal( plvTdi, sShiftLengthBytes );
- if ( plvTdoExpected )
- {
- readVal( plvTdoExpected, sShiftLengthBytes );
- }
- return( xsvfShift( pucTapState, XTAPSTATE_SHIFTDR, lShiftLengthBits,
- plvTdi, plvTdoCaptured, plvTdoExpected, plvTdoMask,
- ucEndState, lRunTestTime, ucMaxRepeat ) );
-}
-
-/*****************************************************************************
- * Function: xsvfDoSDRMasking
- * Description: Update the data value with the next XSDRINC data and address.
- * Example: dataVal=0x01ff, nextData=0xab, addressMask=0x0100,
- * dataMask=0x00ff, should set dataVal to 0x02ab
- * Parameters: plvTdi - The current TDI value.
- * plvNextData - the next data value.
- * plvAddressMask - the address mask.
- * plvDataMask - the data mask.
- * Returns: void.
- *****************************************************************************/
-#ifdef XSVF_SUPPORT_COMPRESSION
-void xsvfDoSDRMasking( lenVal* plvTdi,
- lenVal* plvNextData,
- lenVal* plvAddressMask,
- lenVal* plvDataMask )
-{
- int i;
- unsigned char ucTdi;
- unsigned char ucTdiMask;
- unsigned char ucDataMask;
- unsigned char ucNextData;
- unsigned char ucNextMask;
- short sNextData;
-
- /* add the address Mask to dataVal and return as a new dataVal */
- addVal( plvTdi, plvTdi, plvAddressMask );
-
- ucNextData = 0;
- ucNextMask = 0;
- sNextData = plvNextData->len;
- for ( i = plvDataMask->len - 1; i >= 0; --i )
- {
- /* Go through data mask in reverse order looking for mask (1) bits */
- ucDataMask = plvDataMask->val[ i ];
- if ( ucDataMask )
- {
- /* Retrieve the corresponding TDI byte value */
- ucTdi = plvTdi->val[ i ];
-
- /* For each bit in the data mask byte, look for 1's */
- ucTdiMask = 1;
- while ( ucDataMask )
- {
- if ( ucDataMask & 1 )
- {
- if ( !ucNextMask )
- {
- /* Get the next data byte */
- ucNextData = plvNextData->val[ --sNextData ];
- ucNextMask = 1;
- }
-
- /* Set or clear the data bit according to the next data */
- if ( ucNextData & ucNextMask )
- {
- ucTdi |= ucTdiMask; /* Set bit */
- }
- else
- {
- ucTdi &= ( ~ucTdiMask ); /* Clear bit */
- }
-
- /* Update the next data */
- ucNextMask <<= 1;
- }
- ucTdiMask <<= 1;
- ucDataMask >>= 1;
- }
-
- /* Update the TDI value */
- plvTdi->val[ i ] = ucTdi;
- }
- }
-}
-#endif /* XSVF_SUPPORT_COMPRESSION */
-
-/*============================================================================
- * XSVF Command Functions (type = TXsvfDoCmdFuncPtr)
- * These functions update pXsvfInfo->iErrorCode only on an error.
- * Otherwise, the error code is left alone.
- * The function returns the error code from the function.
- ============================================================================*/
-
-/*****************************************************************************
- * Function: xsvfDoIllegalCmd
- * Description: Function place holder for illegal/unsupported commands.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoIllegalCmd( SXsvfInfo* pXsvfInfo )
-{
- XSVFDBG_PRINTF2( 0, "ERROR: Encountered unsupported command #%d (%s)\n",
- ((unsigned int)(pXsvfInfo->ucCommand)),
- ((pXsvfInfo->ucCommand < XLASTCMD)
- ? (xsvf_pzCommandName[pXsvfInfo->ucCommand])
- : "Unknown") );
- pXsvfInfo->iErrorCode = XSVF_ERROR_ILLEGALCMD;
- return( pXsvfInfo->iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXCOMPLETE
- * Description: XCOMPLETE (no parameters)
- * Update complete status for XSVF player.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXCOMPLETE( SXsvfInfo* pXsvfInfo )
-{
- pXsvfInfo->ucComplete = 1;
- return( XSVF_ERROR_NONE );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXTDOMASK
- * Description: XTDOMASK <lenVal.TdoMask[XSDRSIZE]>
- * Prespecify the TDO compare mask.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXTDOMASK( SXsvfInfo* pXsvfInfo )
-{
- readVal( &(pXsvfInfo->lvTdoMask), pXsvfInfo->sShiftLengthBytes );
- XSVFDBG_PRINTF( 4, " TDO Mask = ");
- XSVFDBG_PRINTLENVAL( 4, &(pXsvfInfo->lvTdoMask) );
- XSVFDBG_PRINTF( 4, "\n");
- return( XSVF_ERROR_NONE );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXSIR
- * Description: XSIR <(byte)shiftlen> <lenVal.TDI[shiftlen]>
- * Get the instruction and shift the instruction into the TAP.
- * If prespecified XRUNTEST!=0, goto RUNTEST and wait after
- * the shift for XRUNTEST usec.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXSIR( SXsvfInfo* pXsvfInfo )
-{
- unsigned char ucShiftIrBits;
- short sShiftIrBytes;
- int iErrorCode;
-
- /* Get the shift length and store */
- readByte( &ucShiftIrBits );
- sShiftIrBytes = xsvfGetAsNumBytes( ucShiftIrBits );
- XSVFDBG_PRINTF1( 3, " XSIR length = %d\n",
- ((unsigned int)ucShiftIrBits) );
-
- if ( sShiftIrBytes > MAX_LEN )
- {
- iErrorCode = XSVF_ERROR_DATAOVERFLOW;
- }
- else
- {
- /* Get and store instruction to shift in */
- readVal( &(pXsvfInfo->lvTdi), xsvfGetAsNumBytes( ucShiftIrBits ) );
-
- /* Shift the data */
- iErrorCode = xsvfShift( &(pXsvfInfo->ucTapState), XTAPSTATE_SHIFTIR,
- ucShiftIrBits, &(pXsvfInfo->lvTdi),
- /*plvTdoCaptured*/0, /*plvTdoExpected*/0,
- /*plvTdoMask*/0, pXsvfInfo->ucEndIR,
- pXsvfInfo->lRunTestTime, /*ucMaxRepeat*/0 );
- }
-
- if ( iErrorCode != XSVF_ERROR_NONE )
- {
- pXsvfInfo->iErrorCode = iErrorCode;
- }
- return( iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXSIR2
- * Description: XSIR <(2-byte)shiftlen> <lenVal.TDI[shiftlen]>
- * Get the instruction and shift the instruction into the TAP.
- * If prespecified XRUNTEST!=0, goto RUNTEST and wait after
- * the shift for XRUNTEST usec.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXSIR2( SXsvfInfo* pXsvfInfo )
-{
- long lShiftIrBits;
- short sShiftIrBytes;
- int iErrorCode;
-
- /* Get the shift length and store */
- readVal( &(pXsvfInfo->lvTdi), 2 );
- lShiftIrBits = value( &(pXsvfInfo->lvTdi) );
- sShiftIrBytes = xsvfGetAsNumBytes( lShiftIrBits );
- XSVFDBG_PRINTF1( 3, " XSIR2 length = %d\n", (int)lShiftIrBits);
-
- if ( sShiftIrBytes > MAX_LEN )
- {
- iErrorCode = XSVF_ERROR_DATAOVERFLOW;
- }
- else
- {
- /* Get and store instruction to shift in */
- readVal( &(pXsvfInfo->lvTdi), xsvfGetAsNumBytes( lShiftIrBits ) );
-
- /* Shift the data */
- iErrorCode = xsvfShift( &(pXsvfInfo->ucTapState), XTAPSTATE_SHIFTIR,
- lShiftIrBits, &(pXsvfInfo->lvTdi),
- /*plvTdoCaptured*/0, /*plvTdoExpected*/0,
- /*plvTdoMask*/0, pXsvfInfo->ucEndIR,
- pXsvfInfo->lRunTestTime, /*ucMaxRepeat*/0 );
- }
-
- if ( iErrorCode != XSVF_ERROR_NONE )
- {
- pXsvfInfo->iErrorCode = iErrorCode;
- }
- return( iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXSDR
- * Description: XSDR <lenVal.TDI[XSDRSIZE]>
- * Shift the given TDI data into the JTAG scan chain.
- * Compare the captured TDO with the expected TDO from the
- * previous XSDRTDO command using the previously specified
- * XTDOMASK.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXSDR( SXsvfInfo* pXsvfInfo )
-{
- int iErrorCode;
- readVal( &(pXsvfInfo->lvTdi), pXsvfInfo->sShiftLengthBytes );
- /* use TDOExpected from last XSDRTDO instruction */
- iErrorCode = xsvfShift( &(pXsvfInfo->ucTapState), XTAPSTATE_SHIFTDR,
- pXsvfInfo->lShiftLengthBits, &(pXsvfInfo->lvTdi),
- &(pXsvfInfo->lvTdoCaptured),
- &(pXsvfInfo->lvTdoExpected),
- &(pXsvfInfo->lvTdoMask), pXsvfInfo->ucEndDR,
- pXsvfInfo->lRunTestTime, pXsvfInfo->ucMaxRepeat );
- if ( iErrorCode != XSVF_ERROR_NONE )
- {
- pXsvfInfo->iErrorCode = iErrorCode;
- }
- return( iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXRUNTEST
- * Description: XRUNTEST <uint32>
- * Prespecify the XRUNTEST wait time for shift operations.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXRUNTEST( SXsvfInfo* pXsvfInfo )
-{
- readVal( &(pXsvfInfo->lvTdi), 4 );
- pXsvfInfo->lRunTestTime = value( &(pXsvfInfo->lvTdi) );
- XSVFDBG_PRINTF1( 3, " XRUNTEST = %ld\n", pXsvfInfo->lRunTestTime );
- return( XSVF_ERROR_NONE );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXREPEAT
- * Description: XREPEAT <byte>
- * Prespecify the maximum number of XC9500/XL retries.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXREPEAT( SXsvfInfo* pXsvfInfo )
-{
- readByte( &(pXsvfInfo->ucMaxRepeat) );
- XSVFDBG_PRINTF1( 3, " XREPEAT = %d\n",
- ((unsigned int)(pXsvfInfo->ucMaxRepeat)) );
- return( XSVF_ERROR_NONE );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXSDRSIZE
- * Description: XSDRSIZE <uint32>
- * Prespecify the XRUNTEST wait time for shift operations.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXSDRSIZE( SXsvfInfo* pXsvfInfo )
-{
- int iErrorCode;
- iErrorCode = XSVF_ERROR_NONE;
- readVal( &(pXsvfInfo->lvTdi), 4 );
- pXsvfInfo->lShiftLengthBits = value( &(pXsvfInfo->lvTdi) );
- pXsvfInfo->sShiftLengthBytes= xsvfGetAsNumBytes( pXsvfInfo->lShiftLengthBits );
- XSVFDBG_PRINTF1( 3, " XSDRSIZE = %ld\n", pXsvfInfo->lShiftLengthBits );
- if ( pXsvfInfo->sShiftLengthBytes > MAX_LEN )
- {
- iErrorCode = XSVF_ERROR_DATAOVERFLOW;
- pXsvfInfo->iErrorCode = iErrorCode;
- }
- return( iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXSDRTDO
- * Description: XSDRTDO <lenVal.TDI[XSDRSIZE]> <lenVal.TDO[XSDRSIZE]>
- * Get the TDI and expected TDO values. Then, shift.
- * Compare the expected TDO with the captured TDO using the
- * prespecified XTDOMASK.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXSDRTDO( SXsvfInfo* pXsvfInfo )
-{
- int iErrorCode;
- iErrorCode = xsvfBasicXSDRTDO( &(pXsvfInfo->ucTapState),
- pXsvfInfo->lShiftLengthBits,
- pXsvfInfo->sShiftLengthBytes,
- &(pXsvfInfo->lvTdi),
- &(pXsvfInfo->lvTdoCaptured),
- &(pXsvfInfo->lvTdoExpected),
- &(pXsvfInfo->lvTdoMask),
- pXsvfInfo->ucEndDR,
- pXsvfInfo->lRunTestTime,
- pXsvfInfo->ucMaxRepeat );
- if ( iErrorCode != XSVF_ERROR_NONE )
- {
- pXsvfInfo->iErrorCode = iErrorCode;
- }
- return( iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXSETSDRMASKS
- * Description: XSETSDRMASKS <lenVal.AddressMask[XSDRSIZE]>
- * <lenVal.DataMask[XSDRSIZE]>
- * Get the prespecified address and data mask for the XSDRINC
- * command.
- * Used for xc9500/xl compressed XSVF data.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-#ifdef XSVF_SUPPORT_COMPRESSION
-int xsvfDoXSETSDRMASKS( SXsvfInfo* pXsvfInfo )
-{
- /* read the addressMask */
- readVal( &(pXsvfInfo->lvAddressMask), pXsvfInfo->sShiftLengthBytes );
- /* read the dataMask */
- readVal( &(pXsvfInfo->lvDataMask), pXsvfInfo->sShiftLengthBytes );
-
- XSVFDBG_PRINTF( 4, " Address Mask = " );
- XSVFDBG_PRINTLENVAL( 4, &(pXsvfInfo->lvAddressMask) );
- XSVFDBG_PRINTF( 4, "\n" );
- XSVFDBG_PRINTF( 4, " Data Mask = " );
- XSVFDBG_PRINTLENVAL( 4, &(pXsvfInfo->lvDataMask) );
- XSVFDBG_PRINTF( 4, "\n" );
-
- return( XSVF_ERROR_NONE );
-}
-#endif /* XSVF_SUPPORT_COMPRESSION */
-
-/*****************************************************************************
- * Function: xsvfDoXSDRINC
- * Description: XSDRINC <lenVal.firstTDI[XSDRSIZE]> <byte(numTimes)>
- * <lenVal.data[XSETSDRMASKS.dataMask.len]> ...
- * Get the XSDRINC parameters and execute the XSDRINC command.
- * XSDRINC starts by loading the first TDI shift value.
- * Then, for numTimes, XSDRINC gets the next piece of data,
- * replaces the bits from the starting TDI as defined by the
- * XSETSDRMASKS.dataMask, adds the address mask from
- * XSETSDRMASKS.addressMask, shifts the new TDI value,
- * and compares the TDO to the expected TDO from the previous
- * XSDRTDO command using the XTDOMASK.
- * Used for xc9500/xl compressed XSVF data.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-#ifdef XSVF_SUPPORT_COMPRESSION
-int xsvfDoXSDRINC( SXsvfInfo* pXsvfInfo )
-{
- int iErrorCode;
- int iDataMaskLen;
- unsigned char ucDataMask;
- unsigned char ucNumTimes;
- unsigned char i;
-
- readVal( &(pXsvfInfo->lvTdi), pXsvfInfo->sShiftLengthBytes );
- iErrorCode = xsvfShift( &(pXsvfInfo->ucTapState), XTAPSTATE_SHIFTDR,
- pXsvfInfo->lShiftLengthBits,
- &(pXsvfInfo->lvTdi), &(pXsvfInfo->lvTdoCaptured),
- &(pXsvfInfo->lvTdoExpected),
- &(pXsvfInfo->lvTdoMask), pXsvfInfo->ucEndDR,
- pXsvfInfo->lRunTestTime, pXsvfInfo->ucMaxRepeat );
- if ( !iErrorCode )
- {
- /* Calculate number of data mask bits */
- iDataMaskLen = 0;
- for ( i = 0; i < pXsvfInfo->lvDataMask.len; ++i )
- {
- ucDataMask = pXsvfInfo->lvDataMask.val[ i ];
- while ( ucDataMask )
- {
- iDataMaskLen += ( ucDataMask & 1 );
- ucDataMask >>= 1;
- }
- }
-
- /* Get the number of data pieces, i.e. number of times to shift */
- readByte( &ucNumTimes );
-
- /* For numTimes, get data, fix TDI, and shift */
- for ( i = 0; !iErrorCode && ( i < ucNumTimes ); ++i )
- {
- readVal( &(pXsvfInfo->lvNextData),
- xsvfGetAsNumBytes( iDataMaskLen ) );
- xsvfDoSDRMasking( &(pXsvfInfo->lvTdi),
- &(pXsvfInfo->lvNextData),
- &(pXsvfInfo->lvAddressMask),
- &(pXsvfInfo->lvDataMask) );
- iErrorCode = xsvfShift( &(pXsvfInfo->ucTapState),
- XTAPSTATE_SHIFTDR,
- pXsvfInfo->lShiftLengthBits,
- &(pXsvfInfo->lvTdi),
- &(pXsvfInfo->lvTdoCaptured),
- &(pXsvfInfo->lvTdoExpected),
- &(pXsvfInfo->lvTdoMask),
- pXsvfInfo->ucEndDR,
- pXsvfInfo->lRunTestTime,
- pXsvfInfo->ucMaxRepeat );
- }
- }
- if ( iErrorCode != XSVF_ERROR_NONE )
- {
- pXsvfInfo->iErrorCode = iErrorCode;
- }
- return( iErrorCode );
-}
-#endif /* XSVF_SUPPORT_COMPRESSION */
-
-/*****************************************************************************
- * Function: xsvfDoXSDRBCE
- * Description: XSDRB/XSDRC/XSDRE <lenVal.TDI[XSDRSIZE]>
- * If not already in SHIFTDR, goto SHIFTDR.
- * Shift the given TDI data into the JTAG scan chain.
- * Ignore TDO.
- * If cmd==XSDRE, then goto ENDDR. Otherwise, stay in ShiftDR.
- * XSDRB, XSDRC, and XSDRE are the same implementation.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXSDRBCE( SXsvfInfo* pXsvfInfo )
-{
- unsigned char ucEndDR;
- int iErrorCode;
- ucEndDR = (unsigned char)(( pXsvfInfo->ucCommand == XSDRE ) ?
- pXsvfInfo->ucEndDR : XTAPSTATE_SHIFTDR);
- iErrorCode = xsvfBasicXSDRTDO( &(pXsvfInfo->ucTapState),
- pXsvfInfo->lShiftLengthBits,
- pXsvfInfo->sShiftLengthBytes,
- &(pXsvfInfo->lvTdi),
- /*plvTdoCaptured*/0, /*plvTdoExpected*/0,
- /*plvTdoMask*/0, ucEndDR,
- /*lRunTestTime*/0, /*ucMaxRepeat*/0 );
- if ( iErrorCode != XSVF_ERROR_NONE )
- {
- pXsvfInfo->iErrorCode = iErrorCode;
- }
- return( iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXSDRTDOBCE
- * Description: XSDRB/XSDRC/XSDRE <lenVal.TDI[XSDRSIZE]> <lenVal.TDO[XSDRSIZE]>
- * If not already in SHIFTDR, goto SHIFTDR.
- * Shift the given TDI data into the JTAG scan chain.
- * Compare TDO, but do NOT use XTDOMASK.
- * If cmd==XSDRTDOE, then goto ENDDR. Otherwise, stay in ShiftDR.
- * XSDRTDOB, XSDRTDOC, and XSDRTDOE are the same implementation.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXSDRTDOBCE( SXsvfInfo* pXsvfInfo )
-{
- unsigned char ucEndDR;
- int iErrorCode;
- ucEndDR = (unsigned char)(( pXsvfInfo->ucCommand == XSDRTDOE ) ?
- pXsvfInfo->ucEndDR : XTAPSTATE_SHIFTDR);
- iErrorCode = xsvfBasicXSDRTDO( &(pXsvfInfo->ucTapState),
- pXsvfInfo->lShiftLengthBits,
- pXsvfInfo->sShiftLengthBytes,
- &(pXsvfInfo->lvTdi),
- &(pXsvfInfo->lvTdoCaptured),
- &(pXsvfInfo->lvTdoExpected),
- /*plvTdoMask*/0, ucEndDR,
- /*lRunTestTime*/0, /*ucMaxRepeat*/0 );
- if ( iErrorCode != XSVF_ERROR_NONE )
- {
- pXsvfInfo->iErrorCode = iErrorCode;
- }
- return( iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXSTATE
- * Description: XSTATE <byte>
- * <byte> == XTAPSTATE;
- * Get the state parameter and transition the TAP to that state.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXSTATE( SXsvfInfo* pXsvfInfo )
-{
- unsigned char ucNextState;
- int iErrorCode;
- readByte( &ucNextState );
- iErrorCode = xsvfGotoTapState( &(pXsvfInfo->ucTapState), ucNextState );
- if ( iErrorCode != XSVF_ERROR_NONE )
- {
- pXsvfInfo->iErrorCode = iErrorCode;
- }
- return( iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXENDXR
- * Description: XENDIR/XENDDR <byte>
- * <byte>: 0 = RUNTEST; 1 = PAUSE.
- * Get the prespecified XENDIR or XENDDR.
- * Both XENDIR and XENDDR use the same implementation.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXENDXR( SXsvfInfo* pXsvfInfo )
-{
- int iErrorCode;
- unsigned char ucEndState;
-
- iErrorCode = XSVF_ERROR_NONE;
- readByte( &ucEndState );
- if ( ( ucEndState != XENDXR_RUNTEST ) && ( ucEndState != XENDXR_PAUSE ) )
- {
- iErrorCode = XSVF_ERROR_ILLEGALSTATE;
- }
- else
- {
-
- if ( pXsvfInfo->ucCommand == XENDIR )
- {
- if ( ucEndState == XENDXR_RUNTEST )
- {
- pXsvfInfo->ucEndIR = XTAPSTATE_RUNTEST;
- }
- else
- {
- pXsvfInfo->ucEndIR = XTAPSTATE_PAUSEIR;
- }
- XSVFDBG_PRINTF1( 3, " ENDIR State = %s\n",
- xsvf_pzTapState[ pXsvfInfo->ucEndIR ] );
- }
- else /* XENDDR */
- {
- if ( ucEndState == XENDXR_RUNTEST )
- {
- pXsvfInfo->ucEndDR = XTAPSTATE_RUNTEST;
- }
- else
- {
- pXsvfInfo->ucEndDR = XTAPSTATE_PAUSEDR;
- }
- XSVFDBG_PRINTF1( 3, " ENDDR State = %s\n",
- xsvf_pzTapState[ pXsvfInfo->ucEndDR ] );
- }
- }
-
- if ( iErrorCode != XSVF_ERROR_NONE )
- {
- pXsvfInfo->iErrorCode = iErrorCode;
- }
- return( iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXCOMMENT
- * Description: XCOMMENT <text string ending in \0>
- * <text string ending in \0> == text comment;
- * Arbitrary comment embedded in the XSVF.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXCOMMENT( SXsvfInfo* pXsvfInfo )
-{
- /* Use the comment for debugging */
- /* Otherwise, read through the comment to the end '\0' and ignore */
- unsigned char ucText;
-
- if ( xsvf_iDebugLevel > 0 )
- {
- putc( ' ' );
- }
-
- do
- {
- readByte( &ucText );
- if ( xsvf_iDebugLevel > 0 )
- {
- putc( ucText ? ucText : '\n' );
- }
- } while ( ucText );
-
- pXsvfInfo->iErrorCode = XSVF_ERROR_NONE;
-
- return( pXsvfInfo->iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfDoXWAIT
- * Description: XWAIT <wait_state> <end_state> <wait_time>
- * If not already in <wait_state>, then go to <wait_state>.
- * Wait in <wait_state> for <wait_time> microseconds.
- * Finally, if not already in <end_state>, then goto <end_state>.
- * Parameters: pXsvfInfo - XSVF information pointer.
- * Returns: int - 0 = success; non-zero = error.
- *****************************************************************************/
-int xsvfDoXWAIT( SXsvfInfo* pXsvfInfo )
-{
- unsigned char ucWaitState;
- unsigned char ucEndState;
- long lWaitTime;
-
- /* Get Parameters */
- /* <wait_state> */
- readVal( &(pXsvfInfo->lvTdi), 1 );
- ucWaitState = pXsvfInfo->lvTdi.val[0];
-
- /* <end_state> */
- readVal( &(pXsvfInfo->lvTdi), 1 );
- ucEndState = pXsvfInfo->lvTdi.val[0];
-
- /* <wait_time> */
- readVal( &(pXsvfInfo->lvTdi), 4 );
- lWaitTime = value( &(pXsvfInfo->lvTdi) );
- XSVFDBG_PRINTF2( 3, " XWAIT: state = %s; time = %ld\n",
- xsvf_pzTapState[ ucWaitState ], lWaitTime );
-
- /* If not already in <wait_state>, go to <wait_state> */
- if ( pXsvfInfo->ucTapState != ucWaitState )
- {
- xsvfGotoTapState( &(pXsvfInfo->ucTapState), ucWaitState );
- }
-
- /* Wait for <wait_time> microseconds */
- waitTime( lWaitTime );
-
- /* If not already in <end_state>, go to <end_state> */
- if ( pXsvfInfo->ucTapState != ucEndState )
- {
- xsvfGotoTapState( &(pXsvfInfo->ucTapState), ucEndState );
- }
-
- return( XSVF_ERROR_NONE );
-}
-
-
-/*============================================================================
- * Execution Control Functions
- ============================================================================*/
-
-/*****************************************************************************
- * Function: xsvfInitialize
- * Description: Initialize the xsvf player.
- * Call this before running the player to initialize the data
- * in the SXsvfInfo struct.
- * xsvfCleanup is called to clean up the data in SXsvfInfo
- * after the XSVF is played.
- * Parameters: pXsvfInfo - ptr to the XSVF information.
- * Returns: int - 0 = success; otherwise error.
- *****************************************************************************/
-int xsvfInitialize( SXsvfInfo* pXsvfInfo )
-{
- /* Initialize values */
- pXsvfInfo->iErrorCode = xsvfInfoInit( pXsvfInfo );
-
- if ( !pXsvfInfo->iErrorCode )
- {
- /* Initialize the TAPs */
- pXsvfInfo->iErrorCode = xsvfGotoTapState( &(pXsvfInfo->ucTapState),
- XTAPSTATE_RESET );
- }
-
- return( pXsvfInfo->iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfRun
- * Description: Run the xsvf player for a single command and return.
- * First, call xsvfInitialize.
- * Then, repeatedly call this function until an error is detected
- * or until the pXsvfInfo->ucComplete variable is non-zero.
- * Finally, call xsvfCleanup to cleanup any remnants.
- * Parameters: pXsvfInfo - ptr to the XSVF information.
- * Returns: int - 0 = success; otherwise error.
- *****************************************************************************/
-int xsvfRun( SXsvfInfo* pXsvfInfo )
-{
- /* Process the XSVF commands */
- if ( (!pXsvfInfo->iErrorCode) && (!pXsvfInfo->ucComplete) )
- {
- /* read 1 byte for the instruction */
- readByte( &(pXsvfInfo->ucCommand) );
- ++(pXsvfInfo->lCommandCount);
-
- if ( pXsvfInfo->ucCommand < XLASTCMD )
- {
- /* Execute the command. Func sets error code. */
- XSVFDBG_PRINTF1( 2, " %s\n",
- xsvf_pzCommandName[pXsvfInfo->ucCommand] );
- /* If your compiler cannot take this form,
- then convert to a switch statement */
-#if 0 /* test-only */
- xsvf_pfDoCmd[ pXsvfInfo->ucCommand ]( pXsvfInfo );
-#else
- switch (pXsvfInfo->ucCommand) {
- case 0:
- xsvfDoXCOMPLETE(pXsvfInfo); /* 0 */
- break;
- case 1:
- xsvfDoXTDOMASK(pXsvfInfo); /* 1 */
- break;
- case 2:
- xsvfDoXSIR(pXsvfInfo); /* 2 */
- break;
- case 3:
- xsvfDoXSDR(pXsvfInfo); /* 3 */
- break;
- case 4:
- xsvfDoXRUNTEST(pXsvfInfo); /* 4 */
- break;
- case 5:
- xsvfDoIllegalCmd(pXsvfInfo); /* 5 */
- break;
- case 6:
- xsvfDoIllegalCmd(pXsvfInfo); /* 6 */
- break;
- case 7:
- xsvfDoXREPEAT(pXsvfInfo); /* 7 */
- break;
- case 8:
- xsvfDoXSDRSIZE(pXsvfInfo); /* 8 */
- break;
- case 9:
- xsvfDoXSDRTDO(pXsvfInfo); /* 9 */
- break;
-#ifdef XSVF_SUPPORT_COMPRESSION
- case 10:
- xsvfDoXSETSDRMASKS(pXsvfInfo); /* 10 */
- break;
- case 11:
- xsvfDoXSDRINC(pXsvfInfo); /* 11 */
- break;
-#else
- case 10:
- xsvfDoIllegalCmd(pXsvfInfo); /* 10 */
- break;
- case 11:
- xsvfDoIllegalCmd(pXsvfInfo); /* 11 */
- break;
-#endif /* XSVF_SUPPORT_COMPRESSION */
- case 12:
- xsvfDoXSDRBCE(pXsvfInfo); /* 12 */
- break;
- case 13:
- xsvfDoXSDRBCE(pXsvfInfo); /* 13 */
- break;
- case 14:
- xsvfDoXSDRBCE(pXsvfInfo); /* 14 */
- break;
- case 15:
- xsvfDoXSDRTDOBCE(pXsvfInfo); /* 15 */
- break;
- case 16:
- xsvfDoXSDRTDOBCE(pXsvfInfo); /* 16 */
- break;
- case 17:
- xsvfDoXSDRTDOBCE(pXsvfInfo); /* 17 */
- break;
- case 18:
- xsvfDoXSTATE(pXsvfInfo); /* 18 */
- break;
- case 19:
- xsvfDoXENDXR(pXsvfInfo); /* 19 */
- break;
- case 20:
- xsvfDoXENDXR(pXsvfInfo); /* 20 */
- break;
- case 21:
- xsvfDoXSIR2(pXsvfInfo); /* 21 */
- break;
- case 22:
- xsvfDoXCOMMENT(pXsvfInfo); /* 22 */
- break;
- case 23:
- xsvfDoXWAIT(pXsvfInfo); /* 23 */
- break;
- }
-#endif
- }
- else
- {
- /* Illegal command value. Func sets error code. */
- xsvfDoIllegalCmd( pXsvfInfo );
- }
- }
-
- return( pXsvfInfo->iErrorCode );
-}
-
-/*****************************************************************************
- * Function: xsvfCleanup
- * Description: cleanup remnants of the xsvf player.
- * Parameters: pXsvfInfo - ptr to the XSVF information.
- * Returns: void.
- *****************************************************************************/
-void xsvfCleanup( SXsvfInfo* pXsvfInfo )
-{
- xsvfInfoCleanup( pXsvfInfo );
-}
-
-
-/*============================================================================
- * xsvfExecute() - The primary entry point to the XSVF player
- ============================================================================*/
-
-/*****************************************************************************
- * Function: xsvfExecute
- * Description: Process, interpret, and apply the XSVF commands.
- * See port.c:readByte for source of XSVF data.
- * Parameters: none.
- * Returns: int - Legacy result values: 1 == success; 0 == failed.
- *****************************************************************************/
-int xsvfExecute(void)
-{
- SXsvfInfo xsvfInfo;
-
- xsvfInitialize( &xsvfInfo );
-
- while ( !xsvfInfo.iErrorCode && (!xsvfInfo.ucComplete) )
- {
- xsvfRun( &xsvfInfo );
- }
-
- if ( xsvfInfo.iErrorCode )
- {
- XSVFDBG_PRINTF1( 0, "%s\n", xsvf_pzErrorName[
- ( xsvfInfo.iErrorCode < XSVF_ERROR_LAST )
- ? xsvfInfo.iErrorCode : XSVF_ERROR_UNKNOWN ] );
- XSVFDBG_PRINTF2( 0, "ERROR at or near XSVF command #%ld. See line #%ld in the XSVF ASCII file.\n",
- xsvfInfo.lCommandCount, xsvfInfo.lCommandCount );
- }
- else
- {
- XSVFDBG_PRINTF( 0, "SUCCESS - Completed XSVF execution.\n" );
- }
-
- xsvfCleanup( &xsvfInfo );
-
- return( XSVF_ERRORCODE(xsvfInfo.iErrorCode) );
-}
-
-
-/*****************************************************************************
- * Function: do_cpld
- * Description: main function.
- * Specified here for creating stand-alone debug executable.
- * Embedded users should call xsvfExecute() directly.
- * Parameters: iArgc - number of command-line arguments.
- * ppzArgv - array of ptrs to strings (command-line arguments).
- * Returns: int - Legacy return value: 1 = success; 0 = error.
- *****************************************************************************/
-int do_cpld(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int iErrorCode;
- char* pzXsvfFileName;
- unsigned long duration;
- unsigned long long startClock, endClock;
-
- iErrorCode = XSVF_ERRORCODE( XSVF_ERROR_NONE );
- pzXsvfFileName = 0;
- xsvf_iDebugLevel = 0;
-
- printf("XSVF Player v%s, Xilinx, Inc.\n", XSVF_VERSION);
- printf("XSVF Filesize = %d bytes\n", filesize);
-
- /* Initialize the I/O. SetPort initializes I/O on first call */
- setPort( TMS, 1 );
-
- /* Execute the XSVF in the file */
- startClock = get_ticks();
- iErrorCode = xsvfExecute();
- endClock = get_ticks();
- duration = (unsigned long)(endClock - startClock);
- printf("\nExecution Time = %d seconds\n", (int)(duration/get_tbclk()));
-
- return( iErrorCode );
-}
-U_BOOT_CMD(
- cpld, 1, 1, do_cpld,
- "cpld - Program onboard CPLD\n",
- NULL
- );
diff --git a/board/esd/common/xilinx_jtag/micro.h b/board/esd/common/xilinx_jtag/micro.h
deleted file mode 100644
index 3c463ab92b..0000000000
--- a/board/esd/common/xilinx_jtag/micro.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * (C) Copyright 2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-/*****************************************************************************
- * File: micro.h
- * Description: This header file contains the function prototype to the
- * primary interface function for the XSVF player.
- * Usage: FIRST - PORTS.C
- * Customize the ports.c function implementations to establish
- * the correct protocol for communicating with your JTAG ports
- * (setPort() and readTDOBit()) and tune the waitTime() delay
- * function. Also, establish access to the XSVF data source
- * in the readByte() function.
- * FINALLY - Call xsvfExecute().
- *****************************************************************************/
-#ifndef XSVF_MICRO_H
-#define XSVF_MICRO_H
-
-/* Legacy error codes for xsvfExecute from original XSVF player v2.0 */
-#define XSVF_LEGACY_SUCCESS 1
-#define XSVF_LEGACY_ERROR 0
-
-/* 4.04 [NEW] Error codes for xsvfExecute. */
-/* Must #define XSVF_SUPPORT_ERRORCODES in micro.c to get these codes */
-#define XSVF_ERROR_NONE 0
-#define XSVF_ERROR_UNKNOWN 1
-#define XSVF_ERROR_TDOMISMATCH 2
-#define XSVF_ERROR_MAXRETRIES 3 /* TDO mismatch after max retries */
-#define XSVF_ERROR_ILLEGALCMD 4
-#define XSVF_ERROR_ILLEGALSTATE 5
-#define XSVF_ERROR_DATAOVERFLOW 6 /* Data > lenVal MAX_LEN buffer size*/
-/* Insert new errors here */
-#define XSVF_ERROR_LAST 7
-
-/*****************************************************************************
- * Function: xsvfExecute
- * Description: Process, interpret, and apply the XSVF commands.
- * See port.c:readByte for source of XSVF data.
- * Parameters: none.
- * Returns: int - For error codes see above.
- *****************************************************************************/
-int xsvfExecute(void);
-
-#endif /* XSVF_MICRO_H */
diff --git a/board/esd/common/xilinx_jtag/ports.c b/board/esd/common/xilinx_jtag/ports.c
deleted file mode 100644
index 3ad94a5b66..0000000000
--- a/board/esd/common/xilinx_jtag/ports.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * (C) Copyright 2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-/*******************************************************/
-/* file: ports.c */
-/* abstract: This file contains the routines to */
-/* output values on the JTAG ports, to read */
-/* the TDO bit, and to read a byte of data */
-/* from the prom */
-/* */
-/*******************************************************/
-
-#include <common.h>
-#include <asm/processor.h>
-
-#include "ports.h"
-
-static unsigned long output = 0;
-static int filepos = 0;
-static int oldstate = 0;
-static int newstate = 0;
-static int readptr = 0;
-
-extern long filesize;
-extern const unsigned char fpgadata[];
-
-
-/* if in debugging mode, then just set the variables */
-void setPort(short p,short val)
-{
- if (p==TMS) {
- if (val) {
- output |= JTAG_TMS;
- } else {
- output &= ~JTAG_TMS;
- }
- }
- if (p==TDI) {
- if (val) {
- output |= JTAG_TDI;
- } else {
- output &= ~JTAG_TDI;
- }
- }
- if (p==TCK) {
- if (val) {
- output |= JTAG_TCK;
- } else {
- output &= ~JTAG_TCK;
- }
- out32(GPIO0_OR, output);
- }
-}
-
-
-/* toggle tck LH */
-void pulseClock(void)
-{
- setPort(TCK,0); /* set the TCK port to low */
- setPort(TCK,1); /* set the TCK port to high */
-}
-
-
-/* read in a byte of data from the prom */
-void readByte(unsigned char *data)
-{
- /* pretend reading using a file */
- *data = fpgadata[readptr++];
- newstate = (100 * filepos++) / filesize;
- if (newstate != oldstate) {
- printf("%4d\r\r\r\r", newstate);
- oldstate = newstate;
- }
-}
-
-/* read the TDO bit from port */
-unsigned char readTDOBit(void)
-{
- unsigned long inputs;
-
- inputs = in32(GPIO0_IR);
- if (inputs & JTAG_TDO)
- return 1;
- else
- return 0;
-}
-
-
-/* Wait at least the specified number of microsec. */
-/* Use a timer if possible; otherwise estimate the number of instructions */
-/* necessary to be run based on the microcontroller speed. For this example */
-/* we pulse the TCK port a number of times based on the processor speed. */
-void waitTime(long microsec)
-{
- udelay(microsec); /* esd */
-}
diff --git a/board/esd/common/xilinx_jtag/ports.h b/board/esd/common/xilinx_jtag/ports.h
deleted file mode 100644
index 0e389907ff..0000000000
--- a/board/esd/common/xilinx_jtag/ports.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * (C) Copyright 2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-/*******************************************************/
-/* file: ports.h */
-/* abstract: This file contains extern declarations */
-/* for providing stimulus to the JTAG ports.*/
-/*******************************************************/
-
-#ifndef ports_dot_h
-#define ports_dot_h
-
-/* these constants are used to send the appropriate ports to setPort */
-/* they should be enumerated types, but some of the microcontroller */
-/* compilers don't like enumerated types */
-#define TCK (short) 0
-#define TMS (short) 1
-#define TDI (short) 2
-
-/*
- * Use CFG_FPGA_xxx defines from board include file.
- */
-#define JTAG_TMS CFG_FPGA_PRG /* output */
-#define JTAG_TCK CFG_FPGA_CLK /* output */
-#define JTAG_TDI CFG_FPGA_DATA /* output */
-#define JTAG_TDO CFG_FPGA_DONE /* input */
-
-/* set the port "p" (TCK, TMS, or TDI) to val (0 or 1) */
-void setPort(short p, short val);
-
-/* read the TDO bit and store it in val */
-unsigned char readTDOBit(void);
-
-/* make clock go down->up->down*/
-void pulseClock(void);
-
-/* read the next byte of data from the xsvf file */
-void readByte(unsigned char *data);
-
-void waitTime(long microsec);
-
-#endif
diff --git a/board/esd/cpci2dp/Makefile b/board/esd/cpci2dp/Makefile
deleted file mode 100644
index 2d4e189977..0000000000
--- a/board/esd/cpci2dp/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o ../common/cmd_loadpci.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/cpci2dp/config.mk b/board/esd/cpci2dp/config.mk
deleted file mode 100644
index 2da4c9f765..0000000000
--- a/board/esd/cpci2dp/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# esd CPCI2DP board
-#
-
-TEXT_BASE = 0xFFFC0000
diff --git a/board/esd/cpci2dp/cpci2dp.c b/board/esd/cpci2dp/cpci2dp.c
deleted file mode 100644
index 36bf329f81..0000000000
--- a/board/esd/cpci2dp/cpci2dp.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * (C) Copyright 2005
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_early_init_f (void)
-{
- unsigned long cntrl0Reg;
-
- /*
- * Setup GPIO pins
- */
- cntrl0Reg = mfdcr(cntrl0);
- mtdcr(cntrl0, cntrl0Reg | ((CFG_EEPROM_WP | CFG_PB_LED | CFG_SELF_RST | CFG_INTA_FAKE) << 5));
-
- /* set output pins to high */
- out32(GPIO0_OR, CFG_EEPROM_WP);
- /* setup for output (LED=off) */
- out32(GPIO0_TCR, CFG_EEPROM_WP | CFG_PB_LED);
-
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) PB0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) PB1; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) PCI SLOT 0; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) PCI SLOT 1; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) unused
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF81); /* set int polarities */
-
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- return 0;
-}
-
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- unsigned long cntrl0Reg;
-
- /* adjust flash start and offset */
- gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
- gd->bd->bi_flashoffset = 0;
-
- /*
- * Select cts (and not dsr) on uart1
- */
- cntrl0Reg = mfdcr(cntrl0);
- mtdcr(cntrl0, cntrl0Reg | 0x00001000);
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming CPCI2DP");
- } else {
- puts(str);
- }
-
- printf(" (Ver 1.0)");
-
- putc ('\n');
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#if defined(CFG_EEPROM_WREN)
-/* Input: <dev_addr> I2C address of EEPROM device to enable.
- * <state> -1: deliver current state
- * 0: disable write
- * 1: enable write
- * Returns: -1: wrong device address
- * 0: dis-/en- able done
- * 0/1: current state if <state> was -1.
- */
-int eeprom_write_enable (unsigned dev_addr, int state) {
- if (CFG_I2C_EEPROM_ADDR != dev_addr) {
- return -1;
- } else {
- switch (state) {
- case 1:
- /* Enable write access, clear bit GPIO_SINT2. */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_EEPROM_WP);
- state = 0;
- break;
- case 0:
- /* Disable write access, set bit GPIO_SINT2. */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_EEPROM_WP);
- state = 0;
- break;
- default:
- /* Read current status back. */
- state = (0 == (in32(GPIO0_OR) & CFG_EEPROM_WP));
- break;
- }
- }
- return state;
-}
-#endif
-
-#if defined(CFG_EEPROM_WREN)
-int do_eep_wren (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int query = argc == 1;
- int state = 0;
-
- if (query) {
- /* Query write access state. */
- state = eeprom_write_enable (CFG_I2C_EEPROM_ADDR, -1);
- if (state < 0) {
- puts ("Query of write access state failed.\n");
- } else {
- printf ("Write access for device 0x%0x is %sabled.\n",
- CFG_I2C_EEPROM_ADDR, state ? "en" : "dis");
- state = 0;
- }
- } else {
- if ('0' == argv[1][0]) {
- /* Disable write access. */
- state = eeprom_write_enable (CFG_I2C_EEPROM_ADDR, 0);
- } else {
- /* Enable write access. */
- state = eeprom_write_enable (CFG_I2C_EEPROM_ADDR, 1);
- }
- if (state < 0) {
- puts ("Setup of write access state failed.\n");
- }
- }
-
- return state;
-}
-
-U_BOOT_CMD(
- eepwren, 2, 0, do_eep_wren,
- "eepwren - Enable / disable / query EEPROM write access\n",
- NULL
- );
-#endif /* #if defined(CFG_EEPROM_WREN) */
diff --git a/board/esd/cpci2dp/flash.c b/board/esd/cpci2dp/flash.c
deleted file mode 100644
index de847f9bea..0000000000
--- a/board/esd/cpci2dp/flash.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (((size_b0/1024/1024)-1)<<17);
- mtdcr(ebccfgd, pbcr);
- /* printf("pb1cr = %x\n", pbcr); */
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -monitor_flash_len,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/cpci2dp/u-boot.lds b/board/esd/cpci2dp/u-boot.lds
deleted file mode 100644
index f7a20d1da2..0000000000
--- a/board/esd/cpci2dp/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/cpci405/Makefile b/board/esd/cpci405/Makefile
deleted file mode 100644
index ce7876c414..0000000000
--- a/board/esd/cpci405/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o ../common/auto_update.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/cpci405/config.mk b/board/esd/cpci405/config.mk
deleted file mode 100644
index 0be45c70d7..0000000000
--- a/board/esd/cpci405/config.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# (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
-#
-
-#
-# esd CPCI405 boards
-#
-
-ifeq ($(BOARD_REVISION),CPCI4052)
-TEXT_BASE = 0xFFFC0000
-else
-ifeq ($(BOARD_REVISION),CPCI405DT)
-TEXT_BASE = 0xFFFC0000
-else
-ifeq ($(BOARD_REVISION),CPCI405AB)
-TEXT_BASE = 0xFFFC0000
-else
-TEXT_BASE = 0xFFFD0000
-endif
-endif
-endif
diff --git a/board/esd/cpci405/cpci405.c b/board/esd/cpci405/cpci405.c
deleted file mode 100644
index f80361081a..0000000000
--- a/board/esd/cpci405/cpci405.c
+++ /dev/null
@@ -1,793 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-#include <net.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); /*cmd_boot.c*/
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* fpga configuration data - generated by bin2cc */
-const unsigned char fpgadata[] =
-{
-#ifdef CONFIG_CPCI405_VER2
-# ifdef CONFIG_CPCI405AB
-# include "fpgadata_cpci405ab.c"
-# else
-# include "fpgadata_cpci4052.c"
-# endif
-#else
-# include "fpgadata_cpci405.c"
-#endif
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-#include "../common/auto_update.h"
-
-#ifdef CONFIG_CPCI405AB
-au_image_t au_image[] = {
- {"cpci405ab/preinst.img", 0, -1, AU_SCRIPT},
- {"cpci405ab/pImage", 0xffc00000, 0x000c0000, AU_NOR},
- {"cpci405ab/pImage.initrd", 0xffcc0000, 0x00300000, AU_NOR},
- {"cpci405ab/u-boot.img", 0xfffc0000, 0x00040000, AU_FIRMWARE},
- {"cpci405ab/postinst.img", 0, 0, AU_SCRIPT},
-};
-#else
-#ifdef CONFIG_CPCI405_VER2
-au_image_t au_image[] = {
- {"cpci4052/preinst.img", 0, -1, AU_SCRIPT},
- {"cpci4052/pImage", 0xffc00000, 0x000c0000, AU_NOR},
- {"cpci4052/pImage.initrd", 0xffcc0000, 0x00300000, AU_NOR},
- {"cpci4052/u-boot.img", 0xfffc0000, 0x00040000, AU_FIRMWARE},
- {"cpci4052/postinst.img", 0, 0, AU_SCRIPT},
-};
-#else
-au_image_t au_image[] = {
- {"cpci405/preinst.img", 0, -1, AU_SCRIPT},
- {"cpci405/pImage", 0xffc00000, 0x000c0000, AU_NOR},
- {"cpci405/pImage.initrd", 0xffcc0000, 0x00310000, AU_NOR},
- {"cpci405/u-boot.img", 0xfffd0000, 0x00030000, AU_FIRMWARE},
- {"cpci405/postinst.img", 0, 0, AU_SCRIPT},
-};
-#endif
-#endif
-
-int N_AU_IMAGES = (sizeof(au_image) / sizeof(au_image[0]));
-
-
-/* Prototypes */
-int cpci405_version(void);
-int gunzip(void *, int, unsigned char *, unsigned long *);
-void lxt971_no_sleep(void);
-
-
-int board_early_init_f (void)
-{
-#ifndef CONFIG_CPCI405_VER2
- int index, len, i;
- int status;
-#endif
-
-#ifdef FPGA_DEBUG
- /* set up serial port with default baudrate */
- (void) get_clocks ();
- gd->baudrate = CONFIG_BAUDRATE;
- serial_init ();
- console_init_f();
-#endif
-
- /*
- * First pull fpga-prg pin low, to disable fpga logic (on version 2 board)
- */
- out32(GPIO0_ODR, 0x00000000); /* no open drain pins */
- out32(GPIO0_TCR, CFG_FPGA_PRG); /* setup for output */
- out32(GPIO0_OR, CFG_FPGA_PRG); /* set output pins to high */
- out32(GPIO0_OR, 0); /* pull prg low */
-
- /*
- * Boot onboard FPGA
- */
-#ifndef CONFIG_CPCI405_VER2
- if (cpci405_version() == 1) {
- status = fpga_boot((unsigned char *)fpgadata, sizeof(fpgadata));
- if (status != 0) {
- /* booting FPGA failed */
-#ifndef FPGA_DEBUG
- /* set up serial port with default baudrate */
- (void) get_clocks ();
- gd->baudrate = CONFIG_BAUDRATE;
- serial_init ();
- console_init_f();
-#endif
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = fpgadata[index];
- printf("FPGA: %s\n", &(fpgadata[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=20; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc ('\n');
- do_reset(NULL, 0, 0, NULL);
- }
- }
-#endif /* !CONFIG_CPCI405_VER2 */
-
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) CAN1 (+FPGA on CPCI4052) ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) PCI SLOT 0; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) PCI SLOT 1; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- if (cpci405_version() == 3) {
- mtdcr(uicpr, 0xFFFFFF99); /* set int polarities */
- } else {
- mtdcr(uicpr, 0xFFFFFF81); /* set int polarities */
- }
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-int ctermm2(void)
-{
-#ifdef CONFIG_CPCI405_VER2
- return 0; /* no, board is cpci405 */
-#else
- if ((*(unsigned char *)0xf0000400 == 0x00) &&
- (*(unsigned char *)0xf0000401 == 0x01))
- return 0; /* no, board is cpci405 */
- else
- return -1; /* yes, board is cterm-m2 */
-#endif
-}
-
-
-int cpci405_host(void)
-{
- if (mfdcr(strap) & PSR_PCI_ARBIT_EN)
- return -1; /* yes, board is cpci405 host */
- else
- return 0; /* no, board is cpci405 adapter */
-}
-
-
-int cpci405_version(void)
-{
- unsigned long cntrl0Reg;
- unsigned long value;
-
- /*
- * Setup GPIO pins (CS2/GPIO11 and CS3/GPIO12 as GPIO)
- */
- cntrl0Reg = mfdcr(cntrl0);
- mtdcr(cntrl0, cntrl0Reg | 0x03000000);
- out32(GPIO0_ODR, in32(GPIO0_ODR) & ~0x00180000);
- out32(GPIO0_TCR, in32(GPIO0_TCR) & ~0x00180000);
- udelay(1000); /* wait some time before reading input */
- value = in32(GPIO0_IR) & 0x00180000; /* get config bits */
-
- /*
- * Restore GPIO settings
- */
- mtdcr(cntrl0, cntrl0Reg);
-
- switch (value) {
- case 0x00180000:
- /* CS2==1 && CS3==1 -> version 1 */
- return 1;
- case 0x00080000:
- /* CS2==0 && CS3==1 -> version 2 */
- return 2;
- case 0x00100000:
- /* CS2==1 && CS3==0 -> version 3 */
- return 3;
- case 0x00000000:
- /* CS2==0 && CS3==0 -> version 4 */
- return 4;
- default:
- /* should not be reached! */
- return 2;
- }
-}
-
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- unsigned long cntrl0Reg;
-
- /* adjust flash start and offset */
- gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
- gd->bd->bi_flashoffset = 0;
-
-#ifdef CONFIG_CPCI405_VER2
- {
- unsigned char *dst;
- ulong len = sizeof(fpgadata);
- int status;
- int index;
- int i;
-
- /*
- * On CPCI-405 version 2 the environment is saved in eeprom!
- * FPGA can be gzip compressed (malloc) and booted this late.
- */
-
- if (cpci405_version() >= 2) {
- /*
- * Setup GPIO pins (CS6+CS7 as GPIO)
- */
- cntrl0Reg = mfdcr(cntrl0);
- mtdcr(cntrl0, cntrl0Reg | 0x00300000);
-
- dst = malloc(CFG_FPGA_MAX_SIZE);
- if (gunzip (dst, CFG_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
- printf ("GUNZIP ERROR - must RESET board to recover\n");
- do_reset (NULL, 0, 0, NULL);
- }
-
- status = fpga_boot(dst, len);
- if (status != 0) {
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("FPGA: %s\n", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=20; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc ('\n');
- do_reset(NULL, 0, 0, NULL);
- }
-
- /* restore gpio/cs settings */
- mtdcr(cntrl0, cntrl0Reg);
-
- puts("FPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("%s ", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
-
- free(dst);
-
- /*
- * Reset FPGA via FPGA_DATA pin
- */
- SET_FPGA(FPGA_PRG | FPGA_CLK);
- udelay(1000); /* wait 1ms */
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);
- udelay(1000); /* wait 1ms */
-
- if (cpci405_version() == 3) {
- volatile unsigned short *fpga_mode = (unsigned short *)CFG_FPGA_BASE_ADDR;
- volatile unsigned char *leds = (unsigned char *)CFG_LED_ADDR;
-
- /*
- * Enable outputs in fpga on version 3 board
- */
- *fpga_mode |= CFG_FPGA_MODE_ENABLE_OUTPUT;
-
- /*
- * Set outputs to 0
- */
- *leds = 0x00;
-
- /*
- * Reset external DUART
- */
- *fpga_mode |= CFG_FPGA_MODE_DUART_RESET;
- udelay(100);
- *fpga_mode &= ~(CFG_FPGA_MODE_DUART_RESET);
- }
- }
- else {
- puts("\n*** U-Boot Version does not match Board Version!\n");
- puts("*** CPCI-405 Version 1.x detected!\n");
- puts("*** Please use correct U-Boot version (CPCI405 instead of CPCI4052)!\n\n");
- }
- }
-
-#else /* CONFIG_CPCI405_VER2 */
-
-#if 0 /* test-only: code-plug now not relavant for ip-address any more */
- /*
- * Generate last byte of ip-addr from code-plug @ 0xf0000400
- */
- if (ctermm2()) {
- char str[32];
- unsigned char ipbyte = *(unsigned char *)0xf0000400;
-
- /*
- * Only overwrite ip-addr with allowed values
- */
- if ((ipbyte != 0x00) && (ipbyte != 0xff)) {
- bd->bi_ip_addr = (bd->bi_ip_addr & 0xffffff00) | ipbyte;
- sprintf(str, "%ld.%ld.%ld.%ld",
- (bd->bi_ip_addr & 0xff000000) >> 24,
- (bd->bi_ip_addr & 0x00ff0000) >> 16,
- (bd->bi_ip_addr & 0x0000ff00) >> 8,
- (bd->bi_ip_addr & 0x000000ff));
- setenv("ipaddr", str);
- }
- }
-#endif
-
- if (cpci405_version() >= 2) {
- puts("\n*** U-Boot Version does not match Board Version!\n");
- puts("*** CPCI-405 Board Version 2.x detected!\n");
- puts("*** Please use correct U-Boot version (CPCI4052 instead of CPCI405)!\n\n");
- }
-
-#endif /* CONFIG_CPCI405_VER2 */
-
- /*
- * Select cts (and not dsr) on uart1
- */
- cntrl0Reg = mfdcr(cntrl0);
- mtdcr(cntrl0, cntrl0Reg | 0x00001000);
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-#ifndef CONFIG_CPCI405_VER2
- int index;
- int len;
-#endif
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
- unsigned short ver;
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming CPCI405");
- } else {
- puts(str);
- }
-
- ver = cpci405_version();
- printf(" (Ver %d.x, ", ver);
-
-#if 0 /* test-only */
- if (ver >= 2) {
- volatile u16 *fpga_status = (u16 *)CFG_FPGA_BASE_ADDR + 1;
-
- if (*fpga_status & CFG_FPGA_STATUS_FLASH) {
- puts ("FLASH Bank B, ");
- } else {
- puts ("FLASH Bank A, ");
- }
- }
-#endif
-
- if (ctermm2()) {
- char str[4];
-
- /*
- * Read board-id and save in env-variable
- */
- sprintf(str, "%d", *(unsigned char *)0xf0000400);
- setenv("boardid", str);
- printf("CTERM-M2 - Id=%s)", str);
- } else {
- if (cpci405_host()) {
- puts ("PCI Host Version)");
- } else {
- puts ("PCI Adapter Version)");
- }
- }
-
-#ifndef CONFIG_CPCI405_VER2
- puts ("\nFPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = fpgadata[index];
- printf("%s ", &(fpgadata[index+1]));
- index += len+3;
- }
-#endif
-
- putc ('\n');
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef CONFIG_CPCI405_VER2
-#ifdef CONFIG_IDE_RESET
-
-void ide_set_reset(int on)
-{
- volatile unsigned short *fpga_mode = (unsigned short *)CFG_FPGA_BASE_ADDR;
-
- /*
- * Assert or deassert CompactFlash Reset Pin
- */
- if (on) { /* assert RESET */
- *fpga_mode &= ~(CFG_FPGA_MODE_CF_RESET);
- } else { /* release RESET */
- *fpga_mode |= CFG_FPGA_MODE_CF_RESET;
- }
-}
-
-#endif /* CONFIG_IDE_RESET */
-#endif /* CONFIG_CPCI405_VER2 */
-
-
-#ifdef CONFIG_CPCI405AB
-
-#define ONE_WIRE_CLEAR (*(volatile unsigned short *)(CFG_FPGA_BASE_ADDR + CFG_FPGA_MODE) \
- |= CFG_FPGA_MODE_1WIRE_DIR)
-#define ONE_WIRE_SET (*(volatile unsigned short *)(CFG_FPGA_BASE_ADDR + CFG_FPGA_MODE) \
- &= ~CFG_FPGA_MODE_1WIRE_DIR)
-#define ONE_WIRE_GET (*(volatile unsigned short *)(CFG_FPGA_BASE_ADDR + CFG_FPGA_STATUS) \
- & CFG_FPGA_MODE_1WIRE)
-
-/*
- * Generate a 1-wire reset, return 1 if no presence detect was found,
- * return 0 otherwise.
- * (NOTE: Does not handle alarm presence from DS2404/DS1994)
- */
-int OWTouchReset(void)
-{
- int result;
-
- ONE_WIRE_CLEAR;
- udelay(480);
- ONE_WIRE_SET;
- udelay(70);
-
- result = ONE_WIRE_GET;
-
- udelay(410);
- return result;
-}
-
-
-/*
- * Send 1 a 1-wire write bit.
- * Provide 10us recovery time.
- */
-void OWWriteBit(int bit)
-{
- if (bit) {
- /*
- * write '1' bit
- */
- ONE_WIRE_CLEAR;
- udelay(6);
- ONE_WIRE_SET;
- udelay(64);
- } else {
- /*
- * write '0' bit
- */
- ONE_WIRE_CLEAR;
- udelay(60);
- ONE_WIRE_SET;
- udelay(10);
- }
-}
-
-
-/*
- * Read a bit from the 1-wire bus and return it.
- * Provide 10us recovery time.
- */
-int OWReadBit(void)
-{
- int result;
-
- ONE_WIRE_CLEAR;
- udelay(6);
- ONE_WIRE_SET;
- udelay(9);
-
- result = ONE_WIRE_GET;
-
- udelay(55);
- return result;
-}
-
-
-void OWWriteByte(int data)
-{
- int loop;
-
- for (loop=0; loop<8; loop++) {
- OWWriteBit(data & 0x01);
- data >>= 1;
- }
-}
-
-
-int OWReadByte(void)
-{
- int loop, result = 0;
-
- for (loop=0; loop<8; loop++) {
- result >>= 1;
- if (OWReadBit()) {
- result |= 0x80;
- }
- }
-
- return result;
-}
-
-
-int do_onewire(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- volatile unsigned short val;
- int result;
- int i;
- unsigned char ow_id[6];
- char str[32];
- unsigned char ow_crc;
-
- /*
- * Clear 1-wire bit (open drain with pull-up)
- */
- val = *(volatile unsigned short *)0xf0400000;
- val &= ~0x1000; /* clear 1-wire bit */
- *(volatile unsigned short *)0xf0400000 = val;
-
- result = OWTouchReset();
- if (result != 0) {
- puts("No 1-wire device detected!\n");
- }
-
- OWWriteByte(0x33); /* send read rom command */
- OWReadByte(); /* skip family code ( == 0x01) */
- for (i=0; i<6; i++) {
- ow_id[i] = OWReadByte();
- }
- ow_crc = OWReadByte(); /* read crc */
-
- sprintf(str, "%08X%04X", *(unsigned int *)&ow_id[0], *(unsigned short *)&ow_id[4]);
- printf("Setting environment variable 'ow_id' to %s\n", str);
- setenv("ow_id", str);
-
- return 0;
-}
-U_BOOT_CMD(
- onewire, 1, 1, do_onewire,
- "onewire - Read 1-write ID\n",
- NULL
- );
-
-
-#define CFG_I2C_EEPROM_ADDR_2 0x51 /* EEPROM CAT28WC32 */
-#define CFG_ENV_SIZE_2 0x800 /* 2048 bytes may be used for env vars*/
-
-/*
- * Write backplane ip-address...
- */
-int do_get_bpip(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- bd_t *bd = gd->bd;
- char *buf;
- ulong crc;
- char str[32];
- char *ptr;
- IPaddr_t ipaddr;
-
- buf = malloc(CFG_ENV_SIZE_2);
- if (eeprom_read(CFG_I2C_EEPROM_ADDR_2, 0, (uchar *)buf, CFG_ENV_SIZE_2)) {
- puts("\nError reading backplane EEPROM!\n");
- } else {
- crc = crc32(0, (uchar *)(buf+4), CFG_ENV_SIZE_2-4);
- if (crc != *(ulong *)buf) {
- printf("ERROR: crc mismatch %08lx %08lx\n", crc, *(ulong *)buf);
- return -1;
- }
-
- /*
- * Find bp_ip
- */
- ptr = strstr(buf+4, "bp_ip=");
- if (ptr == NULL) {
- printf("ERROR: bp_ip not found!\n");
- return -1;
- }
- ptr += 6;
- ipaddr = string_to_ip(ptr);
-
- /*
- * Update whole ip-addr
- */
- bd->bi_ip_addr = ipaddr;
- sprintf(str, "%ld.%ld.%ld.%ld",
- (bd->bi_ip_addr & 0xff000000) >> 24,
- (bd->bi_ip_addr & 0x00ff0000) >> 16,
- (bd->bi_ip_addr & 0x0000ff00) >> 8,
- (bd->bi_ip_addr & 0x000000ff));
- setenv("ipaddr", str);
- printf("Updated ip_addr from bp_eeprom to %s!\n", str);
- }
-
- free(buf);
-
- return 0;
-}
-U_BOOT_CMD(
- getbpip, 1, 1, do_get_bpip,
- "getbpip - Update IP-Address with Backplane IP-Address\n",
- NULL
- );
-
-/*
- * Set and print backplane ip...
- */
-int do_set_bpip(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- char *buf;
- char str[32];
- ulong crc;
-
- if (argc < 2) {
- puts("ERROR!\n");
- return -1;
- }
-
- printf("Setting bp_ip to %s\n", argv[1]);
- buf = malloc(CFG_ENV_SIZE_2);
- memset(buf, 0, CFG_ENV_SIZE_2);
- sprintf(str, "bp_ip=%s", argv[1]);
- strcpy(buf+4, str);
- crc = crc32(0, (uchar *)(buf+4), CFG_ENV_SIZE_2-4);
- *(ulong *)buf = crc;
-
- if (eeprom_write(CFG_I2C_EEPROM_ADDR_2, 0, (uchar *)buf, CFG_ENV_SIZE_2)) {
- puts("\nError writing backplane EEPROM!\n");
- }
-
- free(buf);
-
- return 0;
-}
-U_BOOT_CMD(
- setbpip, 2, 1, do_set_bpip,
- "setbpip - Write Backplane IP-Address\n",
- NULL
- );
-
-#endif /* CONFIG_CPCI405AB */
diff --git a/board/esd/cpci405/flash.c b/board/esd/cpci405/flash.c
deleted file mode 100644
index e766895bb0..0000000000
--- a/board/esd/cpci405/flash.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long calc_size(unsigned long size)
-{
- switch (size) {
- case 1 << 20:
- return 0;
- case 2 << 20:
- return 1;
- case 4 << 20:
- return 2;
- case 8 << 20:
- return 3;
- case 16 << 20:
- return 4;
- default:
- return 0;
- }
-}
-
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
- uint pbcr;
- unsigned long base_b0, base_b1;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- base_b0 = FLASH_BASE0_PRELIM;
- size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 << 20);
- }
-
- base_b1 = FLASH_BASE1_PRELIM;
- size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
- /* Re-do sizing to get full correct info */
-
- if (size_b1) {
- if (size_b1 < (1 << 20)) {
- /* minimum CS size on PPC405GP is 1MB !!! */
- size_b1 = 1 << 20;
- }
- base_b1 = -size_b1;
- mtdcr (ebccfga, pb0cr);
- pbcr = mfdcr (ebccfgd);
- mtdcr (ebccfga, pb0cr);
- pbcr = (pbcr & 0x0001ffff) | base_b1 | (calc_size(size_b1) << 17);
- mtdcr (ebccfgd, pbcr);
-#if 0 /* test-only */
- printf("size_b1=%x base_b1=%x pb1cr = %x\n",
- size_b1, base_b1, pbcr); /* test-only */
-#endif
- }
-
- if (size_b0) {
- if (size_b0 < (1 << 20)) {
- /* minimum CS size on PPC405GP is 1MB !!! */
- size_b0 = 1 << 20;
- }
- base_b0 = base_b1 - size_b0;
- mtdcr (ebccfga, pb1cr);
- pbcr = mfdcr (ebccfgd);
- mtdcr (ebccfga, pb1cr);
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (calc_size(size_b0) << 17);
- mtdcr (ebccfgd, pbcr);
-#if 0 /* test-only */
- printf("size_b0=%x base_b0=%x pb0cr = %x\n",
- size_b0, base_b0, pbcr); /* test-only */
-#endif
- }
-
- size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
- flash_get_offsets (base_b0, &flash_info[0]);
-
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- base_b0 + size_b0 - monitor_flash_len,
- base_b0 + size_b0 - 1, &flash_info[0]);
-
- if (size_b1) {
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
- flash_get_offsets (base_b1, &flash_info[1]);
-
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- base_b1 + size_b1 - monitor_flash_len,
- base_b1 + size_b1 - 1, &flash_info[1]);
- /* monitor protection OFF by default (one is enough) */
- flash_protect (FLAG_PROTECT_CLEAR,
- base_b0 + size_b0 - monitor_flash_len,
- base_b0 + size_b0 - 1, &flash_info[0]);
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
diff --git a/board/esd/cpci405/fpgadata_cpci405.c b/board/esd/cpci405/fpgadata_cpci405.c
deleted file mode 100644
index 20e61c1fa7..0000000000
--- a/board/esd/cpci405/fpgadata_cpci405.c
+++ /dev/null
@@ -1,342 +0,0 @@
- 0x00,0x09,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x00,0x00,0x01,0x61,0x00,0x0d,
- 0x63,0x70,0x63,0x69,0x34,0x30,0x35,0x32,0x2e,0x6e,0x63,0x64,0x00,0x62,0x00,0x0b,
- 0x73,0x30,0x35,0x78,0x6c,0x76,0x71,0x31,0x30,0x30,0x00,0x63,0x00,0x0b,0x32,0x30,
- 0x30,0x31,0x2f,0x30,0x35,0x2f,0x31,0x30,0x00,0x64,0x00,0x09,0x31,0x35,0x3a,0x31,
- 0x35,0x3a,0x32,0x33,0x00,0x65,0xe2,0x01,0x00,0x00,0x15,0x08,0xff,0x30,0xe8,0x01,
- 0x01,0x01,0x01,0xe7,0xe6,0x04,0x01,0x02,0x11,0x05,0x03,0x05,0x03,0x05,0x03,0x05,
- 0x03,0x04,0x04,0x0b,0x02,0x02,0x01,0x04,0x02,0x01,0x0b,0x07,0x01,0x01,0x0d,0x03,
- 0x05,0x09,0x03,0x05,0x03,0x05,0x03,0x0b,0x13,0x01,0x06,0xe5,0xe5,0x02,0x03,0x0c,
- 0x01,0xe6,0x11,0x08,0x13,0x16,0x08,0x1e,0x0b,0xe5,0xe6,0x0e,0x09,0x09,0x09,0x09,
- 0x0b,0x07,0xe6,0x08,0x02,0xe5,0x04,0x01,0xe6,0x04,0x0e,0x01,0x01,0x14,0x09,0x09,
- 0x09,0x09,0x05,0x05,0xe5,0xe6,0x04,0x03,0x05,0xe5,0x01,0x05,0xe5,0x07,0x0c,0xe5,
- 0x5b,0x01,0x01,0x05,0x01,0x11,0x02,0xe5,0xe5,0x48,0x13,0x1a,0x01,0xe6,0x3e,0x0b,
- 0x10,0x03,0x05,0x13,0x03,0x01,0x28,0x14,0x11,0x24,0x03,0xe5,0xe6,0xe5,0x5d,0x01,
- 0x17,0xe5,0x01,0x01,0x0b,0xe5,0x12,0x09,0x49,0x03,0x01,0x01,0x0d,0x31,0x0a,0x2f,
- 0x01,0xe6,0x28,0x15,0x1e,0x1b,0xe5,0x01,0x10,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,
- 0x09,0x09,0x05,0x02,0x04,0x03,0x10,0x09,0x09,0x04,0x04,0x09,0x01,0x05,0x03,0x09,
- 0x13,0x05,0x03,0x0e,0x01,0xe5,0x0c,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0xe5,0x04,0x03,0xe6,0x07,0xe5,0x04,0x02,0xe5,0x05,0x01,0xe5,0xe5,0x05,
- 0xe5,0x0e,0x03,0x10,0x09,0x09,0x09,0x09,0x06,0x0d,0x0a,0xe5,0x06,0x0a,0x0e,0x01,
- 0xe5,0x05,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x09,0xe5,0x07,
- 0xe5,0x02,0x04,0xe5,0xe5,0x01,0x03,0xe5,0x07,0xe5,0x07,0x02,0x05,0xe6,0x0e,0x09,
- 0x09,0x09,0x09,0x0d,0x13,0x03,0x05,0x02,0xe5,0x02,0x08,0x05,0xe8,0x0c,0x07,0x01,
- 0x09,0x09,0x06,0x02,0x05,0x03,0x01,0x02,0x02,0x01,0x01,0x06,0x02,0x02,0x06,0x02,
- 0x06,0x0a,0x06,0xe5,0xe5,0x0c,0x02,0x06,0x02,0x06,0x02,0x04,0x01,0x02,0x06,0x02,
- 0x06,0x01,0x02,0x06,0x02,0x06,0x01,0xe6,0x02,0xe6,0xe6,0x05,0x02,0x0d,0x02,0xe5,
- 0x02,0x2b,0x01,0x06,0x0b,0x0c,0x06,0x01,0x01,0xe5,0x14,0x02,0x03,0xe5,0xe6,0x13,
- 0x23,0x0a,0x14,0x04,0x1c,0xe5,0xe6,0x27,0x01,0x0e,0x0a,0x03,0x13,0x1d,0x02,0xe5,
- 0x0d,0x04,0xe7,0x14,0x0e,0x05,0xe5,0x05,0x0c,0x03,0x0a,0x01,0x09,0x0a,0x01,0x10,
- 0x04,0xe5,0x02,0x09,0x09,0x09,0x09,0xe6,0x08,0x09,0x09,0xe5,0x07,0x0e,0xe5,0xe5,
- 0x32,0x0d,0x10,0x02,0x02,0x03,0x02,0x02,0x03,0x15,0xe6,0x47,0x09,0x02,0x09,0x07,
- 0x12,0xe5,0xe6,0x24,0x1c,0x12,0x09,0x16,0x03,0xe5,0x01,0x06,0x27,0x16,0x04,0x08,
- 0x22,0x05,0x01,0x47,0x15,0x09,0x05,0x0c,0x02,0xe5,0x40,0xe5,0x11,0xe6,0x06,0x01,
- 0x18,0xe8,0x05,0x3e,0x0f,0x0c,0x18,0x01,0xe5,0x2f,0x0f,0x13,0x08,0xe6,0x19,0xe6,
- 0xe5,0x0b,0x2b,0x15,0x14,0x05,0x10,0x01,0xe6,0x3f,0x28,0x07,0x0a,0xe6,0x09,0x2e,
- 0x2d,0x12,0xe8,0x59,0x08,0x0f,0xe5,0x04,0x01,0x01,0x23,0x07,0x01,0x01,0x17,0x2c,
- 0x05,0xe8,0x22,0x09,0x02,0x28,0x0a,0x15,0xe6,0xe5,0x12,0x0d,0xe5,0x01,0x06,0x2e,
- 0x09,0x16,0xe8,0x74,0xe5,0xe5,0xe7,0x01,0x01,0x50,0xe5,0x1d,0x01,0x02,0x01,0x01,
- 0x04,0x52,0x18,0x01,0x02,0x01,0x03,0xe7,0x01,0x52,0x1a,0x06,0x02,0x03,0x57,0x11,
- 0x01,0x05,0x06,0xe5,0x03,0x02,0x52,0x03,0x01,0x02,0x0a,0x01,0x01,0x06,0x02,0x02,
- 0x01,0xe7,0x55,0x11,0x01,0x0b,0x02,0xe5,0x01,0x55,0x13,0x01,0x0e,0xe5,0xe6,0x04,
- 0xe5,0x01,0x02,0x6c,0xe7,0xe5,0x04,0x04,0x6f,0xe6,0xe6,0x09,0x03,0x09,0x09,0x09,
- 0x09,0x0b,0x09,0x09,0x09,0x09,0x06,0x06,0xe6,0xe6,0x01,0x6c,0x02,0x09,0xe6,0x6e,
- 0x08,0x01,0xe5,0xe6,0x22,0x09,0x4e,0x01,0x23,0xe5,0x07,0xe5,0x4a,0xe9,0x1e,0x02,
- 0x09,0x4d,0x01,0xe5,0x14,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x07,0xe5,
- 0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x05,0x01,0x02,0x09,0x19,0x09,
- 0x50,0x23,0x09,0x4c,0xe5,0x01,0x23,0x09,0x4c,0x02,0xe5,0x08,0x19,0x09,0x4c,0xe5,
- 0xe6,0x1e,0x59,0x02,0xe6,0x10,0x01,0x01,0x04,0xe5,0xe5,0x06,0x01,0x01,0x05,0x01,
- 0x07,0x01,0x09,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0a,0xe6,0xe5,
- 0x77,0x02,0x02,0xe5,0x28,0x04,0x03,0x08,0x03,0x13,0x24,0xe6,0xe6,0x3e,0x3b,0xe5,
- 0xe6,0x22,0x1a,0x39,0x02,0xe6,0x3e,0x3a,0x01,0x01,0xe5,0x11,0x2b,0x1b,0x1d,0xe5,
- 0x02,0x3f,0x32,0x07,0xe5,0xe6,0x07,0x36,0x3c,0x01,0x1a,0x24,0xe5,0x38,0xe6,0xe5,
- 0x0a,0x0a,0x28,0x3c,0x01,0x1b,0x5f,0xe7,0x7a,0xe7,0x7a,0x02,0x01,0x01,0x73,0xe5,
- 0x02,0xe6,0x01,0x72,0x01,0x03,0xe7,0x03,0x6b,0x01,0x02,0x01,0x02,0x01,0xe7,0xe5,
- 0x6b,0xe5,0x05,0x02,0x03,0xe5,0x77,0x02,0xe7,0xe5,0x73,0x03,0xe8,0x77,0x01,0xe8,
- 0x78,0xe6,0xe5,0x78,0xe5,0x01,0xe5,0x7a,0xe8,0x0d,0x09,0x09,0x09,0x09,0x0b,0x09,
- 0x09,0x09,0x09,0x0d,0xe5,0xe7,0x01,0x77,0xe8,0x77,0x01,0x02,0xe5,0x6f,0x0d,0x7a,
- 0x01,0xe6,0x78,0xe5,0xe5,0xe5,0x14,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x7a,0xe5,0xe5,0x79,
- 0x01,0xe6,0x79,0x01,0x01,0x7e,0x7c,0xe6,0x10,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x01,0x07,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x07,0x01,
- 0x02,0x05,0x04,0xe5,0x7b,0xe7,0x1e,0x29,0x08,0x25,0xe9,0x3e,0x3c,0x01,0x03,0xe5,
- 0x39,0x3d,0xe7,0x3c,0x3b,0x02,0xe5,0x2f,0x0d,0x3b,0xe5,0xe6,0x3d,0x3a,0x01,0x01,
- 0x3f,0x3c,0xe7,0x03,0x25,0xe6,0x10,0x1f,0xe6,0x1a,0xe5,0x2d,0x10,0x21,0x18,0xe5,
- 0xe6,0x15,0x63,0xe6,0xe5,0x13,0x22,0x41,0xe7,0xe5,0x36,0x42,0x01,0x01,0x01,0x76,
- 0xe5,0x01,0xe6,0x01,0x01,0x70,0x01,0x06,0x01,0xe5,0xe5,0x6f,0x04,0xe5,0x01,0x02,
- 0x74,0x06,0xe5,0x0a,0x6e,0x01,0xe5,0xe6,0x06,0xe6,0x69,0x04,0x01,0x02,0x76,0xe9,
- 0x79,0xe5,0xe7,0x7a,0x01,0x63,0x16,0xe9,0x0d,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,
- 0x09,0x09,0x04,0x01,0x06,0x02,0xe6,0x71,0x04,0x02,0x02,0xe5,0xe5,0x60,0x0b,0x0b,
- 0xe5,0xe5,0x36,0x27,0x01,0x16,0x03,0x01,0x37,0xe5,0x25,0x01,0x01,0x16,0x01,0xe7,
- 0x26,0x0e,0x27,0x01,0x03,0x14,0xe5,0x01,0x15,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x01,0x05,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x09,0xe5,
- 0x2d,0x08,0x2a,0x17,0xe6,0xe5,0x2d,0x08,0x2a,0x18,0xe5,0xe5,0x08,0x2d,0x08,0x39,
- 0x02,0xe5,0x2d,0x08,0x2c,0x19,0xe5,0x12,0xe5,0x63,0x01,0xe6,0x05,0x0a,0x01,0x07,
- 0x01,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x0a,0xe5,0xe6,0xe5,0x06,0x4a,0x0e,0x16,0xe9,0x32,0x09,0x13,
- 0x13,0x12,0xe5,0x02,0x0a,0x33,0xe6,0x12,0x09,0x1b,0x01,0x01,0xe5,0x07,0x06,0x03,
- 0x1a,0x1a,0x16,0x17,0x01,0x02,0x13,0x2b,0xe5,0x0e,0x2b,0x01,0xe5,0x0a,0x32,0x03,
- 0x17,0x03,0xe6,0x16,0x02,0x01,0x26,0x02,0x01,0x07,0x0b,0x01,0xe6,0x04,0x15,0x01,
- 0x18,0xe8,0x08,0x1e,0x02,0x13,0x3a,0x03,0x05,0x02,0x36,0x15,0xe5,0x06,0xe7,0x17,
- 0xe5,0xe6,0x38,0x05,0x15,0x02,0x07,0x1a,0x02,0x02,0x13,0x16,0x2a,0x0e,0x03,0x12,
- 0x19,0x04,0x0d,0x03,0x0b,0x2d,0xe5,0x11,0x19,0x20,0x2f,0x11,0x01,0x01,0x49,0x02,
- 0xe6,0x0d,0x02,0xe5,0x04,0x0e,0x03,0x01,0x02,0x01,0x41,0x04,0x03,0xe5,0x0d,0x02,
- 0x06,0x0b,0x01,0x03,0x02,0x01,0xe5,0xe5,0x22,0xe5,0x05,0x1a,0x10,0x01,0xe5,0xe5,
- 0x01,0x04,0x02,0x08,0x04,0x01,0x01,0x02,0x48,0x10,0xe5,0xe5,0xe5,0x06,0xe6,0xe5,
- 0xe6,0x05,0x02,0xe9,0x04,0x05,0x20,0x04,0x01,0x0c,0x01,0x07,0x0e,0x04,0x01,0xe5,
- 0x05,0x02,0x03,0x01,0x06,0xe5,0xe5,0xe5,0xe6,0x07,0x23,0x01,0x02,0x0c,0x01,0x01,
- 0x05,0x03,0x0f,0x01,0xe5,0x05,0x03,0x04,0x04,0x02,0xe8,0x01,0x3e,0x01,0x07,0x0d,
- 0x02,0x01,0xe5,0xe5,0x06,0x05,0xe6,0x06,0xe7,0xe5,0x40,0x01,0x07,0x10,0x01,0xe5,
- 0xe6,0x05,0x01,0xe5,0x02,0x0a,0x01,0xe6,0x1b,0x02,0x10,0x26,0x09,0x09,0x04,0x07,
- 0x01,0xe7,0x01,0x1b,0xe5,0x13,0x23,0xe5,0x0b,0x09,0xe5,0x09,0x01,0xe5,0x0d,0x09,
- 0x09,0x04,0x01,0x02,0x09,0x0b,0x09,0x09,0xe6,0x06,0xe5,0x02,0xe6,0x01,0xe5,0xe5,
- 0xe5,0xe5,0x05,0x01,0x02,0x16,0x13,0x33,0x13,0x04,0x02,0xe5,0xe6,0xe5,0x10,0x14,
- 0x32,0x14,0x0b,0xe6,0x16,0x01,0x11,0x01,0x24,0x05,0xe5,0x04,0x01,0xe5,0x05,0x01,
- 0xe6,0x0d,0x01,0x16,0xe5,0xe6,0x0f,0x01,0xe5,0x29,0x05,0x01,0x07,0x01,0x0f,0xe8,
- 0x15,0x01,0x11,0x01,0x2a,0x08,0x07,0x01,0x01,0x0c,0xe5,0xe6,0x03,0x10,0xe6,0xe5,
- 0x04,0x09,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0x02,0x06,0x01,0xe5,0x06,0xe7,0xe5,
- 0x02,0x01,0xe6,0xe5,0x04,0xe5,0x08,0x01,0x17,0x01,0x05,0x0b,0x01,0x0f,0x09,0x0b,
- 0x04,0xe5,0x04,0x01,0x09,0x0f,0xe5,0xe5,0x16,0x01,0x06,0x0a,0x01,0x30,0xe5,0xe5,
- 0x05,0xe5,0xe5,0x0d,0x01,0xe7,0x17,0x05,0x0b,0x01,0x0f,0x02,0x08,0x07,0x01,0x08,
- 0x04,0x03,0x01,0x16,0x17,0x01,0x03,0xe5,0x0d,0x0d,0x15,0x08,0x01,0x01,0xe5,0xe5,
- 0x03,0xe6,0x10,0xe6,0xe5,0x10,0x1c,0x03,0x18,0x13,0xe5,0xe5,0x05,0x14,0x11,0x01,
- 0x01,0x05,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x02,0x04,0x01,0x04,
- 0x02,0x01,0x07,0x01,0x03,0x03,0x01,0x03,0x03,0x01,0x0b,0xe7,0xe5,0x12,0x15,0x05,
- 0x0a,0x10,0xe5,0x17,0x03,0xe5,0x0c,0x01,0xe7,0x48,0x03,0x0e,0x0c,0x03,0x01,0x08,
- 0x04,0x05,0x02,0x0b,0x0b,0x09,0x08,0xe5,0x03,0x05,0x0b,0x01,0x02,0x0b,0x0e,0x01,
- 0x0c,0x01,0xe6,0xe5,0x01,0x0f,0x02,0xe6,0x03,0x0e,0x03,0x18,0x0d,0x20,0xea,0x01,
- 0x06,0x20,0x03,0x0f,0x05,0x21,0x14,0x01,0xe5,0x15,0x1f,0x07,0x09,0x1b,0x13,0x04,
- 0xe5,0x06,0x04,0x0c,0x0a,0xe5,0x09,0x04,0x06,0xe6,0x24,0x03,0x01,0x0e,0x01,0xe6,
- 0x0a,0x03,0x17,0xe5,0x15,0x11,0x11,0x09,0x0c,0x02,0xe6,0x06,0x02,0x0b,0xe6,0x17,
- 0x09,0x02,0x07,0x12,0x04,0xe6,0x06,0xe5,0xe6,0x0c,0xe7,0x18,0x15,0xe5,0x0d,0x10,
- 0x11,0x06,0x01,0x0e,0x01,0xe6,0x3c,0x06,0x03,0x22,0x0e,0x01,0xe6,0x09,0x04,0x58,
- 0x11,0x02,0xe5,0x08,0x05,0x2a,0x01,0x1c,0x0f,0x10,0xe6,0xe5,0xe5,0x01,0x05,0xe5,
- 0xe5,0x01,0xe5,0x01,0x01,0x03,0xe5,0x11,0x09,0x02,0xe5,0x06,0xe5,0x22,0x0e,0x01,
- 0x03,0x02,0x06,0xe5,0x01,0xe6,0x21,0xe5,0xe5,0x2f,0x01,0xe5,0x0a,0x01,0x06,0x01,
- 0xe5,0xe5,0x04,0x01,0xe5,0xe5,0xe5,0x08,0x1b,0x02,0x0a,0x23,0x06,0xe5,0x02,0x06,
- 0x01,0xe5,0xe5,0x06,0x02,0x27,0x33,0x05,0xe5,0x05,0x02,0x02,0xe6,0x09,0x01,0x01,
- 0x27,0x06,0x25,0x04,0x01,0x02,0x09,0xe5,0xe6,0xe8,0x09,0x01,0x01,0x02,0x01,0x1e,
- 0x03,0x02,0xe6,0x29,0x01,0x01,0x09,0x02,0x03,0x02,0x0a,0x01,0x18,0x01,0x07,0x01,
- 0x02,0x04,0x01,0x07,0x01,0x20,0x01,0x01,0x06,0x02,0x04,0x01,0xe5,0xe5,0x09,0x01,
- 0x18,0x01,0x0a,0x12,0xe5,0x18,0x05,0x01,0x0e,0xe8,0xe5,0x10,0x02,0x24,0xe5,0x0b,
- 0x07,0xe5,0x07,0x06,0x02,0xe5,0x04,0x02,0x02,0x06,0xe7,0xe5,0x13,0x3d,0x09,0x01,
- 0x03,0xe5,0x01,0x05,0xe5,0x01,0xe5,0x0b,0xe5,0x0a,0x02,0x02,0xe6,0xe5,0x01,0x09,
- 0x09,0x04,0x01,0x02,0x0b,0x09,0x03,0x05,0x05,0x03,0xe5,0x01,0x05,0xe6,0x03,0x06,
- 0x01,0xe5,0xe5,0x0a,0xe5,0x08,0x27,0x32,0xe5,0x03,0x03,0x01,0xe5,0xe5,0x08,0x07,
- 0x27,0x27,0x0b,0x0b,0xe5,0xe5,0x0c,0x01,0x04,0x04,0x1a,0xe5,0xe5,0x08,0x01,0x07,
- 0x01,0x07,0x01,0x04,0x02,0x01,0xe5,0x05,0x01,0xe6,0x0f,0x02,0x0a,0x01,0xe5,0x05,
- 0x02,0x1a,0x01,0xe5,0x07,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe6,
- 0x01,0x01,0xe5,0xe7,0x0b,0xe5,0x01,0xe5,0x0a,0xe5,0xe5,0x08,0x03,0x13,0x05,0x03,
- 0xe5,0x03,0x01,0x25,0x01,0xe5,0x07,0x04,0x03,0x0d,0x01,0x05,0xe6,0x04,0xe5,0xe5,
- 0x07,0xe5,0x07,0xe6,0x04,0x01,0xe5,0x01,0x01,0x05,0xe5,0x07,0xe5,0x06,0xe6,0x05,
- 0xe5,0xe6,0xe5,0x04,0xe5,0x0a,0x09,0x05,0x09,0xe5,0x02,0x05,0xe5,0x07,0x08,0x05,
- 0x05,0xe6,0x02,0x01,0x01,0x05,0x01,0x01,0xe5,0x02,0x02,0x01,0xe5,0x02,0x02,0x01,
- 0x0e,0xe8,0x03,0x08,0x01,0x07,0x02,0x05,0x14,0x05,0x05,0x09,0x01,0x07,0x01,0x06,
- 0xe5,0xe6,0x04,0xe5,0xe5,0x0f,0xe6,0x08,0x03,0x01,0x09,0x03,0x01,0xe5,0x0c,0x08,
- 0x05,0x02,0x02,0x05,0x09,0x04,0x05,0x06,0x01,0xe5,0x01,0x0e,0x03,0x04,0x08,0x01,
- 0x07,0x02,0x02,0xe5,0x04,0x09,0x06,0x02,0x02,0x05,0x02,0x13,0x03,0x07,0xe6,0x01,
- 0x01,0x02,0x0b,0x02,0xe6,0x02,0x08,0x01,0xe5,0x0c,0x19,0x0f,0x1a,0x05,0x01,0xe5,
- 0x0b,0x01,0x01,0xe5,0x02,0x02,0x07,0x02,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,
- 0x01,0x05,0x01,0x04,0x04,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x02,0x02,
- 0x01,0x0b,0x02,0x01,0x01,0x07,0x14,0x0c,0x01,0x05,0x07,0xe5,0x06,0x03,0x0c,0xe6,
- 0x06,0xe6,0x13,0x01,0x02,0xe6,0x06,0x24,0xe5,0x01,0x02,0x04,0x02,0x12,0x01,0x02,
- 0xe5,0xe5,0x06,0x08,0x07,0x08,0xe6,0xe6,0x08,0x14,0x01,0x07,0x01,0x0e,0x02,0xe7,
- 0x0f,0x0f,0x19,0xe5,0xe6,0x03,0x08,0x06,0x10,0x0e,0xe5,0x03,0x08,0x01,0x1f,0xe6,
- 0xe5,0x03,0x0a,0x02,0x01,0xe5,0x01,0x0c,0x16,0xe5,0x07,0xe5,0x03,0x05,0x01,0xe6,
- 0x03,0x01,0x15,0x08,0x04,0x0e,0xe5,0xe6,0x11,0x01,0x02,0xe5,0x1b,0xe5,0x06,0x03,
- 0x05,0x05,0x0b,0x1d,0xe7,0xe6,0x06,0x03,0x0d,0x0e,0x0b,0x01,0x01,0xe6,0x02,0x01,
- 0xe7,0x05,0x1d,0x11,0x02,0x28,0x06,0x03,0x07,0xe5,0x01,0x0b,0x18,0x06,0x06,0x07,
- 0x03,0xe5,0x1e,0x01,0x07,0x07,0x0c,0x07,0x02,0xe5,0xe5,0x02,0x02,0xe6,0x06,0x15,
- 0x05,0x02,0xe5,0x1c,0x05,0x10,0x05,0x04,0x05,0x12,0x01,0x15,0x09,0x02,0xe5,0x0b,
- 0x07,0x0e,0x04,0xe5,0x02,0x02,0x10,0x01,0xe5,0xe5,0xe5,0x0b,0xe6,0x01,0x01,0x1d,
- 0xe6,0xe5,0xe5,0x0f,0x09,0x05,0xe6,0x06,0xe5,0x04,0x03,0x0b,0x0b,0x07,0xe5,0x03,
- 0x0a,0x02,0x01,0x07,0x04,0xe8,0x11,0x01,0x0d,0x05,0x04,0x09,0x02,0x01,0x05,0x03,
- 0xe5,0x0e,0x04,0x0e,0x03,0x0a,0xe5,0xe6,0x01,0x0e,0x06,0xe5,0xe5,0x0f,0x02,0x12,
- 0x03,0x10,0x08,0xe6,0x10,0x02,0x03,0xe5,0xe5,0x03,0x01,0xe6,0x02,0x03,0x07,0x0b,
- 0x07,0x01,0x12,0x02,0x09,0xe5,0x04,0x0a,0x08,0x05,0x0b,0xe5,0xe7,0x17,0xe5,0x07,
- 0xe5,0x07,0xe5,0x04,0x02,0x02,0xe5,0x06,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x04,0x17,
- 0xe5,0x01,0xe5,0xe5,0x01,0x01,0x01,0x06,0xe5,0x0a,0x08,0xe5,0x05,0xe5,0x01,0x05,
- 0xe6,0x09,0xe5,0x09,0x09,0x10,0x0b,0x01,0x02,0x01,0xe6,0x03,0x01,0x08,0x0e,0x01,
- 0x0c,0x07,0x01,0x02,0x08,0x01,0x05,0x13,0x06,0x01,0xe5,0xe5,0x03,0x01,0x02,0x01,
- 0x03,0x01,0xe5,0x0c,0x1d,0x05,0xe5,0x01,0x01,0x0b,0x09,0x1b,0x01,0x04,0x06,0x02,
- 0x03,0x0f,0x06,0xe5,0xe5,0x09,0x08,0x06,0xe5,0xe6,0x04,0x02,0x08,0x03,0x03,0x01,
- 0x0a,0x08,0xe5,0xe5,0x03,0xe6,0x04,0xe5,0x02,0xe5,0x01,0x02,0x07,0x03,0x03,0x01,
- 0x01,0x01,0x07,0x01,0x05,0x03,0x03,0x01,0x01,0xe5,0x03,0xe5,0x03,0x01,0x03,0xe5,
- 0x05,0x02,0x11,0xe7,0xe5,0xe5,0x01,0x01,0x01,0x02,0x06,0x01,0x0d,0x07,0x01,0x03,
- 0xe5,0x0d,0x07,0x01,0x04,0xe6,0x01,0x07,0x15,0x09,0x01,0x0b,0x02,0xe5,0x01,0x0d,
- 0x09,0x01,0x04,0x01,0x03,0x06,0x09,0x02,0x03,0x06,0x25,0x01,0x10,0xe6,0x08,0x1d,
- 0x02,0x06,0x06,0x02,0x01,0xe5,0x11,0x02,0x10,0x02,0x06,0xe5,0x01,0xe5,0x03,0x04,
- 0x0a,0x01,0x1b,0x09,0x01,0x13,0xe5,0x07,0x10,0xe5,0xe5,0x08,0x03,0x06,0x02,0xe5,
- 0x07,0x05,0x09,0x06,0x02,0x02,0x02,0x03,0x03,0x05,0xe5,0x04,0x04,0x09,0x04,0xe6,
- 0x01,0x04,0x01,0x02,0x03,0x05,0x03,0x02,0x06,0x01,0xe7,0x01,0x1a,0x02,0x13,0x08,
- 0xe5,0x1e,0x09,0x06,0x0a,0x01,0xe6,0x1e,0x13,0x07,0x21,0x07,0x12,0x02,0xe7,0xe5,
- 0x0a,0x01,0x15,0x05,0x01,0x07,0x01,0xe5,0x07,0x01,0x13,0x04,0x02,0x01,0x07,0x01,
- 0x0f,0xe5,0xe5,0x0c,0x01,0xe5,0x16,0x02,0x01,0x01,0x04,0xe5,0xe5,0x05,0x02,0x01,
- 0xe5,0x08,0x06,0x01,0xe5,0x05,0x01,0x01,0x01,0x02,0xe5,0xe6,0x0c,0xe5,0xe6,0x0c,
- 0x01,0x0d,0x07,0x0c,0x04,0x09,0x01,0x13,0x09,0x07,0x01,0x0d,0xe6,0x01,0x0d,0x01,
- 0x03,0xe7,0x05,0xe7,0x05,0xe6,0xe5,0x04,0xe8,0xe5,0x03,0xe6,0x01,0x01,0x03,0x02,
- 0x06,0xe5,0xe6,0xe5,0x02,0xe8,0x06,0xe5,0x01,0x05,0xe5,0x07,0x02,0x13,0xe5,0xe5,
- 0x02,0xe5,0xe5,0x05,0x04,0x01,0x01,0x04,0x02,0x01,0xe5,0x07,0x01,0xe5,0x08,0xe5,
- 0x0e,0x01,0x07,0x01,0x0e,0xe5,0xe6,0x14,0xe5,0x06,0x01,0x07,0x01,0xe5,0xe5,0x05,
- 0xe5,0xe5,0x05,0x04,0x03,0x02,0x07,0x01,0x09,0xe5,0xe5,0x08,0x0e,0xe5,0x01,0xe5,
- 0x0a,0x08,0x09,0x01,0x02,0x02,0x01,0x07,0x01,0xe6,0xe6,0x02,0xe5,0x01,0xe5,0xe6,
- 0x03,0xe6,0xe5,0x02,0x01,0x07,0xe6,0x0a,0x01,0x0e,0xe8,0x13,0x05,0x03,0xe6,0x02,
- 0x03,0x02,0x04,0xe5,0xe5,0xe5,0xe6,0x01,0x01,0xe5,0x01,0x01,0xe5,0x01,0xe5,0x01,
- 0x01,0xe5,0x02,0x01,0x07,0xe6,0x04,0x06,0x0e,0x02,0xe5,0x01,0x07,0x16,0x0d,0xe5,
- 0x03,0x02,0xe5,0x08,0xe5,0x05,0x02,0x10,0x02,0x06,0x02,0x0c,0xe6,0xe6,0x10,0x01,
- 0xe5,0x05,0x01,0xe5,0x02,0x02,0x01,0x01,0x05,0x01,0x04,0x02,0x01,0x04,0x04,0x01,
- 0x02,0x01,0x01,0xe7,0x06,0x01,0x03,0x03,0x01,0x04,0x02,0x01,0xe5,0x0a,0xe6,0xe5,
- 0x20,0xe5,0x07,0xe5,0x05,0x02,0x05,0x04,0xe5,0xe5,0x03,0x01,0x11,0x09,0x0e,0x05,
- 0xe5,0x0a,0x07,0x0a,0x03,0x01,0x01,0x03,0x01,0x06,0xe5,0x01,0x0a,0x0e,0x13,0x12,
- 0xe9,0x03,0x05,0x16,0x05,0x02,0x11,0x02,0x01,0x03,0x07,0x02,0x03,0x11,0x13,0x03,
- 0xe5,0x0a,0xe7,0x03,0x0e,0x04,0x0b,0xe7,0xe5,0x05,0xe7,0x03,0x02,0x01,0x07,0x01,
- 0x05,0x01,0xe5,0x16,0xe5,0x02,0xe5,0x35,0x08,0x01,0x03,0x05,0x01,0x08,0xe5,0x03,
- 0x1e,0xe8,0x07,0x03,0x05,0x04,0xe5,0x02,0x02,0xe7,0x01,0x05,0xe5,0x02,0xe6,0x06,
- 0x01,0xe6,0x02,0x0d,0x05,0x0f,0x11,0xe9,0x20,0x09,0x0c,0x06,0x01,0x01,0x02,0x0b,
- 0x02,0x05,0x11,0x0c,0x02,0xe5,0x0b,0x16,0x02,0x03,0x02,0x05,0x0a,0xe5,0x03,0x01,
- 0x0a,0x05,0xe6,0xe5,0x07,0x15,0x02,0xe5,0x0c,0xe5,0x15,0x02,0x07,0x03,0xe5,0x08,
- 0x07,0x02,0x0b,0x02,0x15,0x0a,0xe6,0xe5,0x03,0x05,0x05,0x24,0x06,0xe5,0xe6,0x03,
- 0x09,0x03,0x04,0x25,0x0e,0x05,0x02,0x01,0x02,0x07,0x02,0x0f,0x02,0x08,0x04,0x02,
- 0x01,0x04,0xe5,0x03,0xe5,0x20,0xe7,0x08,0x0f,0x01,0x0d,0x01,0x01,0x03,0x04,0xe5,
- 0xe5,0x01,0x03,0xe5,0xe5,0x08,0x09,0x23,0x01,0xe5,0x01,0x15,0x1d,0x04,0x05,0x0a,
- 0x03,0x06,0x22,0xe6,0xe5,0x0c,0x09,0x09,0x18,0xe6,0x03,0x02,0xe6,0xe5,0xe5,0x02,
- 0x03,0xe5,0x05,0x07,0xe6,0x06,0x01,0x08,0xe5,0xe5,0x01,0xe5,0x03,0x08,0x09,0xe5,
- 0x07,0xe5,0x17,0xe5,0x03,0x05,0xe5,0x06,0x01,0xe5,0x0e,0x05,0xe5,0x02,0x06,0x01,
- 0x02,0xe5,0xe6,0x03,0x08,0x05,0xe5,0x03,0x04,0xe5,0x02,0x03,0xe5,0x08,0x01,0x02,
- 0x04,0x01,0x02,0x01,0x01,0xe5,0xe6,0xe5,0x0b,0x12,0x04,0xe5,0x02,0x01,0x02,0x01,
- 0x01,0x02,0x0a,0x06,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0x09,0x02,0x06,0x04,0x01,0x07,
- 0x0a,0x01,0x10,0x0d,0x03,0xe8,0x04,0x05,0xe5,0x08,0x01,0x06,0x02,0x03,0x01,0xe6,
- 0xe6,0xe6,0xe6,0x04,0x02,0xe5,0x01,0x01,0x11,0x04,0x10,0x06,0x05,0xe6,0x01,0xe5,
- 0x01,0x07,0xe7,0x02,0x05,0x01,0x01,0x01,0x01,0xe6,0x05,0x01,0xe5,0x01,0x05,0x05,
- 0x01,0xe6,0x01,0x01,0x01,0x09,0x07,0x04,0x01,0x0a,0x03,0x03,0xe5,0x03,0x02,0xe5,
- 0x01,0xe5,0x0b,0x09,0x01,0x09,0x07,0x01,0x02,0x01,0xe5,0x02,0x09,0x01,0x07,0x06,
- 0x01,0xe5,0x02,0x02,0x0e,0x05,0x05,0x02,0x02,0xe5,0x0c,0x09,0x01,0x07,0x09,0x01,
- 0xe6,0x01,0xe5,0xe5,0x0a,0x01,0x07,0x05,0xe5,0x03,0x03,0xe6,0x0a,0x05,0xe5,0x08,
- 0x03,0xe5,0x07,0x13,0x09,0xe5,0x04,0x04,0x04,0x02,0x0b,0x09,0x09,0x02,0x1a,0xe9,
- 0x0b,0x13,0x04,0x0a,0x01,0xe5,0x07,0xe6,0x08,0xe6,0x06,0xe6,0x03,0x20,0x01,0xe7,
- 0x0d,0x09,0x09,0x06,0x02,0xe5,0x07,0x06,0x04,0x09,0x04,0x01,0x02,0xe5,0xe5,0x05,
- 0x09,0x0d,0x04,0x27,0x0c,0x08,0xe5,0x0a,0x09,0x1d,0x08,0x01,0xe5,0xe5,0x2e,0x0b,
- 0x09,0x0b,0x1b,0x08,0x01,0x01,0x01,0x1e,0x0c,0x01,0xe5,0x05,0x01,0xe5,0x07,0x01,
- 0x06,0xe5,0xe5,0x08,0x01,0x16,0x01,0x09,0xe6,0x19,0x0a,0x01,0x03,0x01,0x01,0x02,
- 0x01,0xe5,0xe7,0x06,0x01,0xe5,0x05,0x01,0xe5,0x08,0xe5,0xe5,0x1e,0x01,0xe6,0x07,
- 0x0c,0xe5,0x05,0x08,0x03,0x01,0x09,0x06,0x02,0x01,0x07,0x01,0x04,0x01,0x04,0x1f,
- 0x03,0xe6,0x12,0xe7,0x06,0x09,0xe6,0xe5,0x03,0xe7,0xe5,0x02,0xe5,0xe5,0x01,0x01,
- 0x04,0xe7,0xe5,0x02,0xe7,0x05,0x02,0x08,0xe5,0x07,0xe5,0x06,0xe8,0x0f,0x03,0x01,
- 0x08,0x01,0x01,0x06,0x03,0xe5,0x02,0xe6,0xe6,0x09,0xe5,0x04,0xe5,0xe5,0x09,0x22,
- 0xe5,0xe5,0x0f,0x04,0xe5,0x08,0xe5,0xe5,0x04,0xe5,0x06,0x01,0xe5,0xe6,0x04,0x02,
- 0x01,0x04,0xe7,0xe5,0x03,0xe6,0x02,0x05,0x1b,0x01,0x01,0x15,0x01,0x07,0x09,0x09,
- 0x01,0x01,0x03,0xe7,0xe6,0xe6,0x03,0x03,0x03,0x01,0xe5,0x05,0x01,0xe5,0x1a,0xe5,
- 0x01,0x10,0x02,0x03,0x05,0xe5,0x06,0xe6,0x01,0x02,0x01,0xe6,0x01,0x01,0xe5,0xe7,
- 0x03,0x01,0xe5,0x01,0xe5,0x01,0x01,0xe5,0x02,0x07,0xe6,0x1c,0xe5,0x01,0x0d,0x01,
- 0xe5,0x05,0x02,0x09,0x07,0x01,0x12,0x01,0xe5,0x05,0xe5,0xe5,0x1d,0x0b,0xe5,0xe5,
- 0xe5,0x08,0xe5,0x02,0x02,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x04,
- 0x01,0x02,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0x0b,0x02,
- 0x0b,0x09,0x01,0x09,0x0f,0x05,0xe5,0x09,0xe5,0x06,0x03,0x08,0x08,0x15,0x03,0x01,
- 0xe5,0x06,0x15,0x17,0x07,0x02,0x02,0x09,0xe5,0x0d,0x01,0x05,0x12,0x03,0xe5,0x02,
- 0x0f,0xe5,0x05,0x0b,0xe5,0x05,0x06,0x08,0x03,0x15,0x0e,0x04,0x08,0x04,0x01,0xe6,
- 0x08,0x12,0x03,0x01,0x07,0x01,0x04,0x02,0x01,0xe5,0x07,0xe7,0x0e,0xe7,0x03,0x12,
- 0xe5,0x07,0x01,0xe5,0xe5,0x0a,0x05,0x0d,0x01,0x01,0x08,0x01,0x07,0xe5,0x06,0xe5,
- 0xe5,0x02,0x0e,0x27,0xe6,0x07,0x09,0x04,0xe5,0x02,0xe5,0x0c,0xe5,0x01,0x0a,0x03,
- 0xe5,0x01,0x04,0x0a,0x03,0x05,0x11,0x09,0xe5,0x02,0x24,0x16,0x03,0x02,0x01,0x0a,
- 0x05,0x01,0x1d,0x05,0xe5,0xe5,0x02,0x22,0x09,0x0e,0xe5,0x03,0x03,0x06,0x07,0x21,
- 0xe5,0x01,0x08,0x0f,0x0e,0x0b,0x0a,0xe5,0x04,0x02,0x01,0x09,0x03,0x19,0x01,0x06,
- 0x02,0x13,0x04,0x19,0xe5,0x04,0x02,0x02,0x19,0x1b,0x05,0xe7,0x04,0x22,0x12,0x09,
- 0xe5,0x05,0x0e,0x21,0x06,0x03,0x1a,0x1d,0x03,0x05,0x01,0xe5,0x11,0x04,0x13,0x01,
- 0x05,0x0b,0x13,0x1c,0x08,0x01,0x26,0x05,0xe6,0xe5,0xe5,0x17,0xe6,0xe5,0xe5,0x02,
- 0xe5,0x15,0x01,0x05,0xe5,0x01,0xe5,0x03,0xe5,0x0e,0x05,0xe5,0x01,0x02,0xe5,0x09,
- 0xe8,0xe5,0x01,0x01,0x15,0x02,0xe5,0x01,0xe5,0x01,0x02,0xe5,0x10,0xe5,0x03,0xe5,
- 0x11,0xe5,0x07,0x06,0x01,0xe5,0x0a,0x01,0x02,0xe5,0x01,0x04,0x05,0xe5,0xe5,0xe5,
- 0x12,0x1d,0x01,0x01,0x01,0xe5,0x03,0x01,0x05,0x01,0x07,0x09,0x03,0x07,0x08,0x02,
- 0x0a,0x01,0x11,0x1f,0x01,0x09,0x07,0x01,0x07,0x09,0x0d,0x03,0x02,0xe5,0x08,0x01,
- 0x0a,0x01,0x09,0x06,0xe5,0xe5,0x12,0x01,0x03,0x02,0xe5,0xe6,0x05,0x01,0x06,0xe5,
- 0x08,0x0a,0x06,0x01,0xe5,0x01,0x06,0x02,0x04,0x05,0x01,0x01,0x05,0x03,0x03,0xe6,
- 0xe5,0xe5,0x10,0x03,0x05,0x01,0x07,0x01,0x01,0x02,0xe7,0x02,0x05,0x03,0x06,0x02,
- 0x02,0x01,0x01,0xe5,0x0b,0x01,0x07,0x01,0x04,0x04,0x05,0x01,0x01,0x13,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x06,0x02,0x0a,0x04,0x02,0xe6,0x0c,0x01,0x07,0x01,0x04,0xe5,
- 0xe5,0x08,0x01,0x13,0x01,0x07,0x01,0x07,0x01,0x07,0x05,0xe6,0xe5,0x0f,0xe5,0xe7,
- 0x07,0xe5,0x13,0x2e,0x02,0x02,0x06,0x22,0x02,0x4f,0x09,0x01,0x1b,0xe5,0x01,0xe5,
- 0x0a,0x02,0x09,0x06,0x02,0x09,0x09,0x04,0x01,0x04,0x02,0x01,0x01,0x02,0x04,0xe6,
- 0x01,0x03,0x05,0x09,0x0d,0xe5,0xe7,0x01,0x06,0x02,0x12,0xe5,0x1c,0x0b,0x2c,0x04,
- 0xe6,0x08,0x13,0x1d,0x0b,0x32,0x01,0x01,0x0f,0x10,0x02,0x1f,0x07,0x01,0xe5,0x05,
- 0x01,0x04,0x1d,0xe5,0x01,0x0d,0x02,0x10,0x02,0x19,0x02,0x02,0x06,0x01,0xe5,0x04,
- 0xe5,0xe6,0x24,0x0f,0x04,0x0e,0x18,0x01,0x04,0x07,0x01,0x09,0x21,0xe5,0x01,0xe5,
- 0x0c,0x05,0xe5,0xe5,0x07,0xe6,0x04,0xe5,0xe5,0x06,0xe6,0x07,0xe5,0x01,0x05,0x02,
- 0xe5,0x04,0x02,0xe5,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x05,0xe6,0xe6,0x0e,0x03,0xe5,
- 0x04,0xe5,0x06,0x1d,0x01,0xe6,0x04,0x01,0x07,0x01,0x0a,0xe5,0x15,0xe5,0x01,0x0d,
- 0x08,0x0a,0x05,0x02,0x09,0x0c,0x08,0xe5,0xe5,0x06,0x01,0x22,0x03,0x0f,0x05,0xe5,
- 0x0b,0x04,0xe6,0x06,0x01,0x0c,0x01,0x03,0x01,0xe6,0xe5,0x02,0x01,0x01,0x01,0x22,
- 0xe6,0xe5,0x0c,0x06,0x05,0x06,0x02,0x02,0x06,0x03,0x0e,0x02,0x02,0xe5,0x01,0x01,
- 0x07,0x01,0x0a,0x1a,0xe5,0x40,0xe5,0xe5,0x19,0x01,0xe5,0x05,0x01,0xe5,0x0b,0x01,
- 0x01,0xe5,0x10,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x09,0x01,0xe5,0x04,
- 0xe7,0x06,0x01,0x03,0x03,0x01,0x07,0x01,0x0b,0x01,0xe5,0x22,0x0d,0x01,0xe5,0x08,
- 0x03,0x07,0x02,0xe5,0x18,0x01,0x0a,0x05,0xe8,0x0a,0x16,0xe5,0x21,0xe5,0x01,0x26,
- 0x06,0x01,0x01,0xe5,0x30,0x06,0x03,0x02,0x0d,0x0b,0x24,0xe5,0x03,0x2c,0x05,0x06,
- 0x03,0x04,0x02,0xe5,0x01,0x05,0x01,0x18,0x09,0xe8,0x04,0x05,0x07,0x0b,0x1f,0xe5,
- 0x0f,0x06,0x03,0x1b,0x01,0x03,0xe5,0xe5,0x19,0x07,0x0b,0x09,0x03,0xe6,0x07,0x04,
- 0x03,0x01,0x24,0x03,0x01,0x03,0x1a,0x17,0x06,0x12,0x1c,0x0a,0xe6,0xe5,0x05,0x0e,
- 0x06,0x01,0x07,0x09,0x0d,0xe5,0x10,0x16,0x12,0xe7,0x12,0x02,0x09,0x09,0x08,0xe5,
- 0x09,0xe5,0x08,0x04,0x2c,0xe6,0x27,0x13,0xe5,0xe6,0x05,0x33,0x02,0x09,0x01,0x05,
- 0x01,0x09,0xe5,0x07,0x1b,0x02,0x06,0x09,0x22,0xe8,0x31,0x10,0x08,0xe5,0x07,0xe5,
- 0x05,0x0e,0x0b,0xe5,0xe7,0x07,0x15,0x10,0x0e,0x02,0xe5,0x09,0x09,0x17,0x0a,0xe5,
- 0x01,0xe6,0x48,0x09,0x22,0xe5,0x01,0xe6,0x01,0x01,0x46,0xe6,0x01,0x04,0x1f,0x01,
- 0x02,0x03,0x04,0x43,0x01,0x02,0x04,0x01,0x02,0x0e,0xe5,0xe5,0xe5,0x08,0x04,0x02,
- 0xe5,0x01,0x45,0x04,0x09,0x0e,0x02,0x01,0x0b,0x02,0xe6,0xe5,0x48,0x01,0x01,0x07,
- 0x11,0x14,0x01,0x02,0x48,0x01,0x01,0x05,0x03,0x13,0x09,0x02,0x02,0xe6,0x4b,0x09,
- 0x04,0x0c,0x01,0x08,0x04,0xe6,0x01,0x31,0xe5,0x19,0x09,0x05,0x0b,0x01,0x10,0xe6,
- 0x08,0x47,0x02,0x06,0x02,0x15,0x06,0xe7,0x09,0x01,0x45,0xe5,0x07,0x1d,0x03,0xe5,
- 0x07,0x05,0x09,0x09,0x09,0x09,0x0b,0x04,0x01,0x02,0x09,0x05,0x03,0x09,0x0d,0x01,
- 0xe7,0x01,0x47,0x09,0x22,0x04,0xe6,0x46,0x09,0x28,0xe5,0xe6,0x42,0x06,0x02,0x07,
- 0x01,0x20,0x03,0x01,0x43,0xe5,0x08,0x08,0xe5,0x20,0x03,0xe5,0x41,0x06,0x07,0x02,
- 0x28,0x15,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x05,0xe5,0x01,0x05,
- 0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe6,0xe5,0x2d,0xe5,0x12,0x13,0xe6,
- 0x1f,0x02,0xe5,0x42,0x11,0x01,0x22,0xe5,0x01,0x43,0x13,0x21,0xe7,0xe5,0x2d,0x14,
- 0x11,0x02,0x1c,0xe5,0x03,0x02,0x4b,0x01,0xe5,0x05,0x23,0xe7,0xe5,0x10,0x01,0x07,
- 0x01,0x07,0x01,0x07,0xe6,0x06,0x01,0x09,0x01,0x02,0xe5,0x02,0x01,0x04,0x02,0x01,
- 0x07,0x01,0x07,0x01,0x01,0x03,0xe5,0x06,0x2f,0x2e,0x1c,0x02,0xe5,0x1e,0x28,0x1e,
- 0x10,0xe6,0xe6,0x1a,0x14,0x0e,0x09,0xe5,0x2a,0x03,0x02,0xe6,0x08,0x14,0x19,0x05,
- 0x07,0x03,0xe6,0x06,0x06,0x17,0x06,0xe7,0x3e,0x0b,0x0b,0x22,0xe9,0x07,0x09,0x09,
- 0x10,0x09,0x04,0x01,0x04,0xe6,0x27,0x0a,0x02,0xe5,0x29,0x14,0x0a,0x2a,0x04,0x02,
- 0xe5,0x0a,0x12,0x20,0x3a,0xe5,0xe6,0x0a,0x07,0x10,0x18,0x01,0x05,0x0b,0x08,0x19,
- 0x06,0xe5,0xe5,0x1b,0x13,0x0e,0xe5,0x0d,0x09,0x21,0x02,0x32,0x1c,0x2a,0x01,0x01,
- 0x0a,0x2f,0x15,0x0b,0x1c,0xe5,0xe7,0x09,0x27,0x41,0x06,0xe9,0x4f,0xe5,0xe5,0x02,
- 0xe5,0x1c,0xe5,0x01,0x01,0x02,0x01,0x4c,0xe5,0x21,0x01,0x03,0xe5,0xe5,0x03,0x0e,
- 0xe5,0x01,0x01,0x17,0xe5,0x01,0x01,0x1d,0x03,0x1b,0x05,0x01,0xe5,0x01,0x11,0xe5,
- 0xe5,0xe5,0x17,0xe5,0xe5,0xe5,0x3e,0x02,0xe8,0x54,0x04,0x03,0x1c,0x02,0x02,0x18,
- 0x1d,0x20,0x01,0xe6,0x17,0x03,0x01,0xe6,0x15,0x01,0x1b,0x01,0x1d,0x23,0xe5,0x01,
- 0xe5,0x16,0x01,0x1b,0x01,0x22,0x1f,0x03,0x09,0x02,0x4e,0x1e,0xe8,0xe5,0x59,0x01,
- 0x1d,0xe7,0x0d,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x03,0x05,0x09,0x0d,0x01,0x01,
- 0xe5,0x01,0x74,0x04,0xe6,0x7a,0xe5,0xe5,0x79,0xe5,0xe6,0x53,0x03,0xe5,0x1f,0xe9,
- 0x53,0x01,0x21,0xe5,0x01,0xe5,0x08,0x0b,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x09,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x05,0x01,0x02,0x55,
- 0x01,0x26,0x55,0x01,0x22,0x03,0x40,0x14,0x01,0x23,0x02,0x04,0x50,0x01,0x02,0x22,
- 0xe5,0x01,0x0e,0x43,0x1b,0x0b,0xe5,0x02,0xe5,0x0b,0x01,0x07,0x01,0x07,0x01,0xe5,
- 0x05,0x01,0x07,0x01,0x04,0x04,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x04,0xe5,0xe5,
- 0x06,0x01,0x02,0x05,0x04,0xe5,0x53,0x01,0x27,0xe5,0x72,0x04,0xe7,0xe5,0x2f,0x0e,
- 0xe5,0x11,0x0a,0x09,0x11,0x03,0xe5,0x1b,0x1b,0x1b,0x01,0x01,0x14,0x0e,0xe5,0x1c,
- 0x13,0x07,0x05,0xe5,0x16,0x15,0x0b,0xe5,0x01,0xe5,0x0c,0xe5,0xe5,0x17,0x02,0x0a,
- 0x06,0xe5,0x05,0x0d,0x1a,0x0a,0x01,0xe5,0x12,0x17,0xe5,0x11,0x0f,0x17,0x12,0x01,
- 0xe6,0x1b,0x10,0x11,0x19,0x20,0xe5,0x01,0x1e,0x20,0x3e,0x3f,0x24,0x19,0x02,0x0a,
- 0x01,0x30,0xe5,0xe5,0x28,0x0d,0xe5,0xe5,0x0e,0x33,0x2c,0x08,0x02,0xe6,0x0e,0x17,
- 0x1a,0x37,0xe5,0xe6,0x02,0x0b,0xe5,0x07,0xe5,0x07,0xe5,0x05,0xe7,0x07,0xe5,0x06,
- 0xe8,0x05,0xe7,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x0b,0xe6,0xe6,0x0f,0x09,0x09,0x07,
- 0x01,0x09,0x09,0x01,0x05,0x01,0x01,0x07,0x01,0x09,0x07,0x01,0x01,0x0b,0xe6,0xe5,
- 0x0e,0x0a,0x03,0x04,0xe5,0x07,0x0a,0x07,0x02,0x01,0x02,0x04,0x09,0x05,0xe5,0x01,
- 0x04,0x04,0x10,0x01,0x11,0x4b,0x1c,0xe6,0xe5,0x18,0x09,0x04,0x06,0x07,0x01,0x09,
- 0x09,0x09,0x09,0x09,0x02,0x0b,0x02,0xe5,0x0c,0xe6,0x05,0xe6,0x01,0x05,0xe5,0x07,
- 0xe6,0x06,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x05,0x01,0xe5,0x07,0xe5,0x06,0x04,
- 0x03,0x02,0x03,0x09,0x09,0x01,0x07,0x01,0x07,0x09,0x01,0x05,0x03,0x09,0x09,0x09,
- 0x09,0x11,0x02,0x0e,0xe5,0x07,0x09,0x09,0xe5,0x07,0x0b,0x02,0x06,0xe5,0xe5,0x05,
- 0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x0e,0xe5,0x0d,0x09,0x09,0x09,0x09,0x0b,
- 0x09,0x09,0x09,0x09,0x0f,0xe5,0x01,0x12,0x06,0x09,0xe5,0x11,0x05,0x05,0xe5,0x37,
- 0xe5,0x0d,0x06,0x02,0x09,0x09,0x09,0x08,0x02,0x09,0x09,0x09,0x09,0x0f,0xe8,0x3e,
- 0x1d,0x20,0x10,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x0d,0x02,0xe5,0x03,
- 0x04,0x1f,0x33,0x20,0x3f,0x3b,0xe5,0xe5,0x17,0x1d,0x08,0x02,0x33,0x05,0xe6,0x03,
- 0x13,0x06,0x02,0x13,0x06,0x0b,0x16,0x06,0x13,0x01,0xe5,0x03,0x4c,0x0c,0x1b,0xe5,
- 0x01,0x17,0x08,0x14,0x08,0xe5,0x1e,0x13,0x06,0x01,0xe6,0x20,0x1d,0x34,0x06,0xe5,
- 0xe5,0x48,0x15,0x07,0x12,0xe8,0x13,0x02,0xe5,0x04,0xe8,0x04,0x09,0x02,0xe5,0x04,
- 0xe6,0x08,0xe6,0x06,0x09,0x02,0xe5,0x04,0xe6,0x06,0x09,0xe8,0x0d,0xe5,0x06,0xe6,
- 0x05,0xe7,0x08,0x07,0xe6,0x05,0xe5,0x01,0xe5,0x05,0x02,0x09,0x07,0xe6,0x05,0x02,
- 0x0e,0xe8,0x25,0x18,0x3b,0x01,0xe5,0x14,0x05,0x03,0x09,0x01,0x07,0x05,0x03,0x07,
- 0x03,0x01,0x03,0x05,0x03,0x0d,0x01,0x03,0x0c,0x01,0xe6,0x0a,0x03,0x02,0x01,0x06,
- 0xe5,0x07,0x02,0x03,0x03,0x01,0x07,0x08,0x0b,0x04,0x05,0x03,0x0e,0x04,0xe9,0x03,
- 0xe6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,
diff --git a/board/esd/cpci405/fpgadata_cpci4052.c b/board/esd/cpci405/fpgadata_cpci4052.c
deleted file mode 100644
index 7204028408..0000000000
--- a/board/esd/cpci405/fpgadata_cpci4052.c
+++ /dev/null
@@ -1,765 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0xe9,0xf4,0x75,0x3e,0x00,0x03,0x63,0x70,0x63,0x69,0x34,0x30,
- 0x35,0x5f,0x32,0x5f,0x30,0x34,0x2e,0x62,0x69,0x74,0x00,0xed,0x7c,0x0f,0x74,0x14,
- 0xd7,0x79,0xef,0x37,0x77,0x66,0xc5,0x68,0x77,0xa5,0x1d,0xad,0x56,0xce,0xda,0x16,
- 0xf2,0x68,0x25,0xc8,0xa2,0xae,0xc4,0xb2,0xc2,0x58,0x96,0xc5,0x6a,0xb4,0x92,0xe9,
- 0xda,0xe0,0xb0,0x26,0x6e,0xc3,0x6b,0xfd,0x92,0xc5,0x26,0xad,0xfa,0x0e,0x71,0x85,
- 0xd3,0xe6,0xa9,0x6e,0x5f,0xdf,0xd5,0x6a,0x31,0x02,0x61,0x58,0xff,0x69,0xa3,0xb8,
- 0x24,0x59,0x88,0xda,0x28,0x2e,0xc9,0x5b,0x04,0x01,0x61,0x1c,0x7b,0x50,0x65,0x2c,
- 0x40,0x06,0x85,0xfa,0xbc,0x87,0x6d,0x6a,0x2f,0x8e,0xea,0xa7,0x60,0x99,0xca,0x40,
- 0x1d,0xf1,0xcf,0x7a,0xdf,0x9d,0x7f,0xbb,0x22,0x89,0xdb,0xd3,0xd7,0x73,0xfa,0xce,
- 0x79,0x9e,0xc4,0xc7,0xd7,0xba,0xba,0x33,0xf7,0x7e,0xf3,0xdd,0xdf,0xf7,0xfb,0x7d,
- 0xdf,0x1d,0x41,0xa1,0x6b,0x5a,0xff,0x1f,0x00,0xb7,0x0e,0x4a,0x1e,0xed,0x78,0xf4,
- 0x0f,0x96,0x06,0xef,0xfc,0x4a,0xe8,0x2b,0xc1,0xa5,0x75,0x8f,0x3d,0xba,0x1e,0x1e,
- 0x01,0x7b,0xe8,0xeb,0x4b,0xee,0xfc,0xa3,0x8d,0x4b,0x96,0x2e,0x85,0x47,0xc1,0x11,
- 0x0a,0x06,0xeb,0x17,0xe3,0xff,0x97,0xdc,0x05,0xeb,0xa1,0x70,0xc9,0x5d,0x8d,0x4b,
- 0x96,0x35,0x2e,0x0d,0xc2,0x57,0x01,0xe2,0x3d,0xb3,0x78,0xbd,0xf0,0xad,0xdf,0xfa,
- 0xbd,0x20,0x50,0x0e,0x00,0xe6,0x05,0xb9,0x38,0xfb,0x77,0x41,0x90,0x93,0x39,0xa0,
- 0xcd,0xb5,0x41,0x50,0xd9,0x7f,0x83,0xd1,0x5f,0x18,0x04,0x39,0xff,0xbf,0xb9,0x20,
- 0x28,0x10,0x03,0xcf,0xd7,0xc0,0x1d,0x84,0x9b,0x2e,0x0e,0x04,0xaa,0xb7,0x3e,0xad,
- 0x8f,0xdc,0xdc,0xc5,0xae,0x7f,0x45,0x9f,0xfb,0x57,0x74,0x09,0xff,0xd6,0x3e,0xfd,
- 0x5f,0xb3,0x6e,0xf0,0xe0,0xcc,0x38,0x6d,0x45,0x60,0x63,0x0d,0xa9,0x79,0x44,0x1f,
- 0xa7,0xda,0x2e,0xc1,0x58,0x72,0x99,0xbc,0x6a,0x0b,0xa9,0x22,0x63,0xea,0x37,0x82,
- 0xae,0x3e,0x3e,0x08,0x1d,0xfa,0x8c,0xa4,0xf7,0x68,0xcf,0x80,0xcf,0x27,0x8a,0xa4,
- 0x1a,0x7a,0x40,0xa6,0x8e,0xe7,0x13,0x69,0xd0,0xd7,0xdc,0x63,0x9b,0xa4,0xbb,0x64,
- 0x19,0x44,0x72,0x9b,0xd8,0xd5,0x93,0x96,0xa3,0x0e,0x42,0x7c,0x9c,0x3e,0x4e,0x2d,
- 0x19,0x20,0x3f,0x00,0xec,0x03,0xe2,0xe4,0x7a,0x38,0x9f,0xea,0xa0,0x24,0x23,0xc4,
- 0xf5,0xc9,0x94,0xa9,0x70,0x1e,0x0e,0xa8,0x81,0xdd,0xbc,0x0c,0xc3,0x64,0x19,0xb8,
- 0x32,0xbc,0x24,0xe8,0xe3,0xb2,0x5c,0x1a,0xde,0x81,0x57,0x54,0x57,0x96,0xbf,0x0c,
- 0x7f,0x0e,0x77,0x50,0xd7,0x34,0x3f,0x03,0xfa,0x38,0x45,0x1a,0x80,0x13,0x10,0xca,
- 0x16,0x0d,0xf0,0x7e,0xbc,0x41,0x48,0x71,0xa6,0x71,0x9c,0xac,0xf5,0x8d,0xda,0xfc,
- 0xf0,0x1b,0x31,0x5f,0x56,0x1c,0x20,0x01,0x38,0x2f,0xf8,0x54,0x31,0xcd,0x3f,0x8e,
- 0xef,0x4f,0xbb,0xa7,0xad,0x0d,0x7a,0x14,0x19,0x0a,0x25,0x02,0xb6,0x5d,0xd0,0xce,
- 0x89,0x29,0x32,0x84,0x76,0x60,0x97,0xcc,0x2d,0xa3,0x7b,0xd2,0x95,0xd5,0xe2,0xef,
- 0x92,0x5b,0x1e,0xfa,0x21,0xad,0x4c,0x8b,0x6b,0xc9,0x5a,0x63,0x5c,0x34,0xea,0x4a,
- 0x1d,0x49,0xef,0x5e,0x54,0x74,0x9b,0xc3,0x4e,0xcf,0xa5,0x83,0x71,0x67,0x0f,0x6f,
- 0x9a,0x58,0x99,0xbf,0x47,0xf9,0x67,0x29,0x0c,0xae,0xf1,0xd6,0xeb,0xb0,0x44,0x6a,
- 0x3e,0xb6,0x78,0xb4,0x7e,0xbc,0x40,0x9f,0xe7,0x80,0x6d,0x02,0x8e,0xc3,0x8b,0xaa,
- 0x33,0xc3,0xfb,0xe0,0x44,0x32,0x24,0x07,0x32,0x55,0x35,0x86,0x3d,0xa3,0x25,0xcf,
- 0x09,0x4f,0x42,0xa5,0x2a,0x4e,0x47,0x96,0xc2,0x66,0xa8,0xa2,0xe2,0x34,0x71,0x1b,
- 0x76,0x51,0xe1,0x3b,0xf0,0x4d,0xba,0x28,0xdb,0xde,0x59,0xf0,0xbc,0x63,0x33,0xad,
- 0x8c,0x17,0xb6,0x93,0x0e,0xd0,0xd7,0x17,0xf5,0x4c,0x91,0xc3,0xd4,0x77,0x56,0xbc,
- 0xbb,0xc0,0x09,0xdd,0x20,0xab,0x85,0x7e,0xfb,0x1a,0x41,0x7f,0x0f,0x93,0x65,0x93,
- 0xf0,0xd6,0xae,0xc6,0xcc,0xb6,0xf4,0x3c,0xbf,0x70,0x9c,0x84,0x68,0xd1,0x0b,0xfc,
- 0x13,0xc6,0x3d,0xa3,0x90,0x26,0x3d,0x80,0xf3,0xa4,0x8e,0x2c,0xcc,0x60,0xa3,0x58,
- 0xe5,0x9f,0x31,0xde,0x9f,0x28,0x4d,0x90,0x63,0x74,0x50,0x81,0x14,0x59,0x0f,0x3f,
- 0x87,0x70,0xcb,0xbc,0xa7,0x79,0x62,0xdc,0x93,0x0a,0xeb,0x61,0x0b,0xec,0x8e,0x89,
- 0xcf,0xe1,0x7b,0x3f,0x24,0xd4,0x29,0x8e,0x9d,0x44,0x06,0x49,0xeb,0xf3,0xda,0x96,
- 0x92,0xa7,0xe4,0x2a,0xc5,0x1e,0xb3,0xef,0x17,0x7f,0x02,0x8b,0x15,0x47,0xac,0xa0,
- 0xc0,0xb0,0x99,0x28,0x78,0x60,0x13,0x54,0xc6,0xed,0x6b,0x89,0x07,0x7e,0x0c,0xb5,
- 0xca,0xed,0x6b,0x09,0xe1,0x74,0x9b,0x0d,0x15,0x1d,0x51,0xd4,0x35,0x41,0x4f,0xdd,
- 0x26,0x7e,0x57,0x5b,0x76,0x4d,0xd8,0xe3,0x7a,0xd5,0x51,0xc7,0xeb,0x76,0xe9,0x9b,
- 0x3f,0x51,0x70,0x05,0xc2,0x4a,0x51,0x6a,0xe5,0x7a,0x60,0x8d,0x95,0x29,0xfe,0xfd,
- 0x82,0x0e,0xe3,0x79,0x97,0xe1,0x86,0x50,0xaf,0xdc,0x31,0xce,0x57,0xc3,0x35,0x21,
- 0xac,0xb8,0xc6,0xf9,0x85,0x86,0x3d,0x1b,0xa4,0x6c,0x72,0x08,0x88,0x28,0x26,0x88,
- 0x4c,0x87,0xe4,0x3a,0xd1,0xb1,0x9b,0x6c,0x37,0xd6,0x20,0xda,0x46,0xe4,0xbd,0x7e,
- 0x39,0x62,0x97,0x12,0x82,0xbc,0x57,0x0c,0x3c,0xe2,0x90,0x12,0xc4,0xf0,0x4f,0x6f,
- 0x59,0xbf,0x77,0xaf,0x22,0x2b,0xd1,0x4c,0xc1,0x42,0xe9,0x10,0x14,0x2b,0x0e,0x89,
- 0x3c,0x69,0xd8,0x2c,0x2d,0xf5,0xe3,0x14,0x7c,0x8a,0x2b,0xe5,0xa8,0x16,0xaf,0x10,
- 0x7c,0xde,0x73,0xbc,0xdf,0xf0,0x33,0x3f,0xfc,0x8d,0x72,0x05,0x5e,0x56,0xe6,0xa5,
- 0xf8,0x09,0x6d,0x9e,0xae,0x14,0x7f,0xdc,0x78,0x47,0x7e,0x29,0x1d,0x1f,0x85,0x10,
- 0xda,0x9a,0x4f,0xa3,0xad,0xb1,0x91,0x74,0xd8,0xcd,0x71,0xc2,0xdd,0xb0,0x1d,0xaa,
- 0xba,0xc4,0x2c,0xfa,0xee,0x8b,0x9c,0x8f,0xae,0xcc,0x46,0xec,0x86,0x2f,0xf9,0x6d,
- 0x5f,0xe0,0xba,0x21,0xad,0x8a,0x19,0xb2,0x0d,0xf6,0x81,0x5f,0xc5,0xb9,0xd8,0x2d,
- 0xff,0x0c,0x73,0xe8,0x2f,0x8a,0x18,0x73,0x97,0xf7,0x1c,0x4c,0x2f,0x1a,0xbd,0x3d,
- 0x46,0x44,0xc3,0xd6,0x7e,0xb1,0x02,0x4e,0xd1,0xfa,0x74,0xf1,0x24,0xff,0x5d,0x3a,
- 0x9b,0xbe,0x7b,0xe6,0x2b,0x93,0xa5,0x76,0x03,0x57,0xc4,0xf9,0xdb,0x4a,0xaf,0xe2,
- 0xeb,0x7e,0x99,0xf2,0x53,0x70,0x4f,0x6c,0xd9,0xb0,0x2b,0xcd,0x0f,0x1b,0xfe,0xa9,
- 0xd8,0x3e,0x81,0x13,0xa9,0xaf,0x4f,0x3a,0x0f,0xb9,0x4f,0xc1,0xa9,0x9f,0x86,0x27,
- 0x9c,0x7d,0xfc,0xb8,0x61,0xcf,0x81,0x92,0xff,0x41,0x13,0xe9,0xaa,0xf5,0xb8,0x0d,
- 0x2a,0x68,0x37,0xad,0xcd,0x62,0xe3,0xbc,0xb9,0x6f,0x61,0xe7,0xf0,0x0e,0xa9,0x92,
- 0x16,0x3e,0xe2,0x5b,0xde,0xb3,0x19,0x16,0x8f,0xae,0x5d,0x4f,0x46,0xa8,0xbe,0xbe,
- 0xb8,0x67,0xcc,0x9d,0x40,0x3b,0x14,0x52,0xe2,0x14,0xba,0x21,0xa0,0x8a,0x7e,0x72,
- 0x26,0xa9,0xbf,0x87,0x81,0xb2,0x34,0x1c,0x83,0x41,0xf5,0x81,0x0c,0xff,0x67,0xde,
- 0x53,0x64,0x39,0xdb,0x18,0x17,0x92,0xfa,0x3d,0x29,0x9c,0x83,0x2b,0x4a,0x78,0xbc,
- 0x78,0xbf,0x63,0x0a,0xde,0x86,0x70,0xd6,0xb5,0xb7,0x34,0x6b,0xf8,0x27,0x17,0xbb,
- 0x24,0x9d,0xa2,0xfb,0xb2,0xab,0x2e,0xb6,0x36,0x09,0xa7,0xa0,0x59,0x15,0x66,0xf8,
- 0x89,0x36,0xbd,0xaf,0x4b,0x58,0x07,0xbd,0x3d,0xbe,0xa3,0xfe,0x21,0xe2,0x84,0x5e,
- 0xa8,0x3b,0x12,0xdd,0x9f,0xc8,0x2a,0xba,0x7f,0x52,0xdb,0x2a,0xe8,0x5a,0x20,0xab,
- 0x7d,0x19,0x7b,0x80,0xf5,0xa9,0xf6,0x41,0x92,0x35,0xec,0x29,0x0a,0x45,0x72,0xd7,
- 0x7a,0x79,0x54,0x0c,0x92,0x5a,0xb9,0x5b,0xae,0x3b,0xb3,0x35,0x44,0x86,0x8d,0xd5,
- 0x41,0xe1,0xd7,0xe0,0x44,0x74,0xf0,0x2d,0xe7,0x32,0x7e,0xb9,0x70,0x6a,0x7d,0xf3,
- 0x78,0xf1,0x81,0xee,0x2c,0xd1,0xef,0x99,0x9e,0x3f,0x95,0xf8,0x85,0x5c,0x71,0xdc,
- 0xf5,0xf1,0xf7,0xae,0xd3,0x6b,0x4d,0xcb,0xcf,0x14,0x5d,0xec,0x9e,0x34,0xfc,0x53,
- 0xb5,0x4d,0x29,0xef,0x76,0x85,0xcf,0xb9,0x2e,0x95,0x7e,0xa2,0x5c,0xa3,0xf5,0xd9,
- 0x3b,0x66,0xf8,0x69,0x0b,0x3f,0x6f,0x24,0x0f,0x27,0xea,0xb2,0x2b,0xbf,0x4e,0xc6,
- 0xe8,0xe1,0x17,0x7c,0x59,0xc7,0x10,0xc9,0x0a,0x26,0x7e,0x8e,0x29,0xfb,0xd0,0x54,
- 0x8e,0x20,0xf6,0xed,0x13,0xd2,0xac,0xf1,0x9e,0x89,0x9f,0x65,0x7b,0xe0,0x30,0x4e,
- 0x7d,0x65,0x86,0x4c,0xc1,0x3e,0xc4,0x4f,0x6c,0x4c,0x1b,0xef,0x41,0x29,0x9b,0x92,
- 0xd0,0x54,0xea,0xea,0x0c,0x37,0x05,0xd7,0x20,0x84,0x7d,0xad,0xe3,0x16,0x7e,0xbe,
- 0x04,0xaf,0xa0,0xa9,0x5c,0xd3,0x55,0xd7,0x61,0x56,0x6b,0xe4,0xe1,0xe7,0x1e,0xee,
- 0x03,0x1c,0xe7,0xcc,0x94,0x4e,0x91,0x13,0xd8,0xa8,0xcb,0xf0,0xe3,0x46,0x7c,0x18,
- 0xb5,0x35,0x31,0x53,0x4d,0xd8,0xa7,0x49,0x40,0xc4,0xc6,0x2f,0x8a,0x32,0xe4,0xa2,
- 0x85,0x9f,0xab,0xe0,0x7b,0x10,0xc8,0x16,0x06,0xc9,0x2a,0x78,0x56,0x0e,0xa8,0xde,
- 0x20,0x99,0xb1,0xfc,0xb3,0xa2,0x67,0x73,0xa2,0x36,0xeb,0xf8,0x13,0x52,0x01,0xdf,
- 0x4c,0xd5,0x66,0xb9,0x4e,0x32,0x6a,0xe2,0xa7,0x58,0x07,0xdf,0xa3,0x4d,0xef,0x15,
- 0x35,0x96,0x7e,0x61,0xfc,0xef,0xd3,0x4d,0x53,0xce,0x7b,0xf8,0xd3,0x86,0x7f,0x2a,
- 0xf3,0x7f,0x08,0xd7,0xa4,0x26,0xf5,0x64,0x86,0xdf,0x00,0x1f,0x40,0x93,0x8a,0x31,
- 0x20,0x87,0x9f,0x17,0x12,0x27,0x84,0xb0,0xfa,0xc0,0x8b,0x2b,0x03,0xda,0xfa,0xb0,
- 0xef,0xbc,0x85,0x9f,0x4f,0x51,0x74,0x3d,0x55,0xbc,0x9c,0x28,0x87,0x83,0xb0,0x48,
- 0x75,0x74,0x90,0xd3,0x39,0xfc,0xa4,0x9b,0xe9,0xe2,0x6c,0xe1,0x13,0x91,0x0a,0x38,
- 0x48,0x2b,0xb3,0x8e,0x4e,0x32,0x6d,0xbc,0xda,0xa8,0x67,0x0c,0x61,0x33,0x70,0x24,
- 0x1a,0x8c,0x38,0xd1,0xb0,0x7e,0x66,0xeb,0xd3,0x16,0x7e,0x0e,0x20,0x5e,0x87,0x69,
- 0x51,0x1a,0xf7,0xe6,0x55,0xf0,0x51,0xdc,0x2b,0x57,0x2d,0xfc,0xd4,0x61,0x13,0xf7,
- 0xb4,0xd6,0x90,0x5c,0xb4,0xf4,0x74,0x0e,0x3f,0xe1,0x0a,0x1f,0x56,0x8a,0x75,0x2c,
- 0x08,0xad,0x47,0x2c,0x18,0xce,0xc3,0xcf,0x43,0x5c,0xa0,0x03,0x43,0xcd,0x04,0x1c,
- 0x82,0xdd,0x8a,0x23,0x85,0x3e,0x68,0xe2,0x27,0x42,0x2a,0xd4,0xad,0xb5,0xeb,0x7d,
- 0x3e,0xd6,0x77,0xd4,0xc2,0x4f,0x81,0x2e,0x11,0x02,0x8a,0xe8,0x26,0x23,0xb0,0x17,
- 0x71,0x1e,0xb1,0x60,0xd8,0xc2,0xcf,0x75,0x4a,0x27,0xce,0x65,0xfb,0x26,0xfe,0x9c,
- 0x32,0x1d,0x63,0x40,0xf3,0xe8,0x05,0x5e,0x7f,0x0f,0x88,0x9f,0xca,0x15,0x06,0x8d,
- 0x4f,0xb3,0xb9,0xcc,0x0b,0x33,0x80,0xca,0xe1,0xe7,0x84,0x7c,0x0c,0x9a,0x95,0xd5,
- 0xa9,0xee,0x09,0xb8,0xa1,0xd4,0x2b,0xce,0x14,0x7f,0xd4,0xc2,0xcf,0x73,0x89,0x1e,
- 0x52,0x07,0x7c,0x32,0x92,0x45,0xfc,0xac,0x01,0x91,0x92,0x93,0x79,0xf8,0xd9,0x05,
- 0x7e,0xc5,0xe1,0x4e,0x20,0x90,0x82,0xac,0x88,0x6c,0x2e,0xc6,0x3d,0x4b,0xfa,0xc5,
- 0x2d,0x50,0xc7,0xa6,0x3e,0x21,0xee,0xc5,0x86,0x1f,0xd7,0x60,0xe2,0x67,0xd9,0x04,
- 0xee,0xf7,0x46,0x06,0xe1,0x13,0xc2,0x15,0x16,0xa7,0x53,0xfc,0xa4,0xe1,0x9f,0x7e,
- 0x2e,0x09,0x1a,0xa4,0xea,0x36,0x6b,0xd4,0xf1,0x53,0x5f,0x3b,0xe2,0xa7,0x30,0xc3,
- 0x85,0x61,0x35,0x45,0x5e,0x30,0x4a,0x31,0x56,0x51,0xfe,0xb8,0x89,0x9f,0x18,0xdf,
- 0x5f,0x84,0xc5,0x83,0x8e,0x34,0xf1,0x0b,0xef,0x70,0xb5,0x43,0xd1,0x34,0xb1,0xc6,
- 0xa1,0x7f,0xe2,0x3e,0xea,0xc1,0x57,0x8a,0xb1,0x51,0x0a,0x44,0xec,0xc1,0xc8,0x71,
- 0xc3,0x3f,0xd3,0x5c,0xb9,0x78,0x17,0xa9,0xa5,0x8e,0x06,0x7c,0xe8,0x37,0xa1,0x96,
- 0xfa,0x3b,0xc8,0xa4,0x31,0x6e,0x40,0xac,0x48,0xff,0x82,0x2e,0xcf,0xba,0x3a,0xf9,
- 0x70,0xfa,0x35,0xba,0x5c,0x2e,0xee,0xe4,0xcf,0x5b,0xf8,0xf9,0x43,0x7a,0x8d,0x84,
- 0x8f,0xb8,0x0e,0xf0,0x1f,0x0a,0xd7,0xa0,0x89,0x71,0x94,0x61,0xa2,0xaf,0x0f,0x6c,
- 0x9f,0xc4,0x4f,0x25,0xc3,0xe9,0xd5,0x3f,0xe9,0xfe,0x91,0x72,0x32,0x15,0x92,0x8b,
- 0x86,0x78,0xd5,0xc2,0xcf,0xef,0x24,0xba,0x9f,0xae,0x4d,0xe3,0xf3,0xea,0xc8,0x8e,
- 0x4d,0x7e,0x59,0xbc,0x27,0x1f,0x3f,0x61,0xb3,0x1b,0xe7,0x12,0x24,0x3b,0xe9,0x93,
- 0x72,0x25,0x6c,0xe9,0x70,0xab,0x92,0xbe,0x3e,0x59,0xf7,0x4f,0xaa,0xaf,0x01,0xc3,
- 0x0c,0x02,0xd4,0xa8,0x60,0xe2,0xe7,0x4b,0xc8,0x7b,0xc2,0x48,0x85,0xaa,0x5e,0x42,
- 0xc3,0xfa,0x00,0xf7,0xa6,0x79,0x4f,0x0a,0x53,0xe2,0x35,0x2e,0x9c,0x5a,0x9d,0xe1,
- 0xa7,0xd0,0xd6,0x68,0xbc,0x4c,0x0e,0x3f,0x25,0x84,0x00,0xae,0x99,0xee,0x98,0xe6,
- 0xaf,0xc3,0x0d,0xb8,0x0b,0xec,0xd3,0xbc,0x6a,0xe1,0xe7,0x06,0x86,0x2f,0xff,0xd3,
- 0x81,0xf8,0x22,0x1c,0xc2,0x01,0x18,0x7c,0x72,0xf8,0x19,0x80,0xc3,0x5c,0x5d,0x17,
- 0xeb,0x83,0x41,0xea,0xbb,0xd5,0x8e,0x7d,0x96,0x7f,0x3a,0x95,0xfa,0x78,0xa0,0xd7,
- 0xb1,0x74,0x78,0x2c,0xbe,0x4f,0x96,0x9d,0xf6,0x65,0x96,0x7f,0x42,0xd1,0xc3,0xf2,
- 0x35,0x08,0xf7,0xb8,0x2e,0xf2,0x37,0xe8,0x55,0xf4,0xcf,0xe2,0x0c,0xaf,0x1a,0xfe,
- 0x99,0xbe,0x15,0xa1,0x4a,0x6a,0xb6,0xf3,0x17,0x79,0xc4,0xcf,0xf5,0x77,0x4b,0x45,
- 0x1f,0xf1,0x39,0xfc,0xfc,0x04,0x66,0x4b,0xee,0x91,0x1f,0xb8,0x54,0x58,0xa7,0x8e,
- 0xd1,0x3f,0x9f,0x71,0x36,0xe4,0xe1,0xe7,0x8f,0xa4,0x83,0x1d,0xbe,0xb8,0xe3,0x12,
- 0x59,0x10,0xeb,0x95,0xeb,0x46,0xec,0x43,0x88,0x83,0x06,0x7e,0x0a,0x63,0x80,0x53,
- 0xc8,0xa2,0xcd,0x44,0xd2,0x5d,0x18,0xf8,0x39,0xda,0xec,0x62,0x3e,0x7e,0x0a,0x08,
- 0xb7,0x19,0xe2,0x23,0xbd,0xb4,0xf8,0x55,0x7b,0x0e,0x3f,0xc1,0xa6,0xc1,0x66,0x1c,
- 0x5f,0x69,0x00,0x56,0x8e,0xd6,0xa5,0x31,0x1e,0xa9,0x26,0x7e,0x96,0xbc,0x24,0xce,
- 0xc2,0x2b,0x0a,0xc2,0xe6,0x04,0xcc,0xf2,0xcb,0xe7,0xf2,0xcf,0x3d,0x26,0x1c,0x8d,
- 0x49,0xf8,0x42,0xba,0x9c,0x99,0x3c,0xfe,0x19,0x10,0x5f,0x01,0x7c,0xde,0x34,0xee,
- 0x69,0xc4,0xcf,0x2e,0x7c,0x47,0x21,0xc3,0x66,0xaa,0xc0,0x20,0x47,0xce,0xde,0x9e,
- 0x29,0xd0,0x80,0xb4,0x45,0x0c,0xba,0x1b,0x4c,0xfc,0x94,0x2a,0xfa,0x10,0xaa,0x26,
- 0x11,0xaa,0xde,0x69,0xfb,0x3e,0x0d,0xb4,0x17,0x3e,0x41,0x9a,0x24,0x7d,0x5c,0x54,
- 0x2c,0xa6,0xfb,0x20,0x78,0xde,0x15,0xe4,0x8f,0xd3,0x9f,0xa5,0x9b,0xda,0x9d,0x8d,
- 0xbc,0xdb,0xc4,0x4f,0xcf,0x4b,0x38,0x97,0x57,0x46,0x5c,0x97,0xbb,0x26,0x0b,0xde,
- 0x96,0x9a,0x95,0x3c,0xfc,0x14,0xd9,0xfa,0x64,0xf4,0xdd,0x41,0x86,0xad,0x5c,0xe8,
- 0x08,0xce,0xf3,0xbc,0xb1,0xbe,0x28,0xb7,0x13,0x0e,0x46,0x6b,0x55,0x47,0x08,0xfd,
- 0x6c,0x07,0x04,0xd5,0xad,0x1d,0xe4,0xa2,0x61,0x17,0x19,0xf9,0xe7,0xc1,0x34,0x62,
- 0xf9,0x13,0xe4,0xcb,0xf0,0x7d,0xfa,0xd5,0xac,0xd8,0x89,0xef,0x5d,0x5f,0x5f,0x3b,
- 0xfa,0xa7,0x11,0xab,0x9c,0x52,0x37,0x95,0x55,0x7b,0x1e,0x7e,0x0a,0x03,0x08,0x9b,
- 0xcd,0x0c,0x36,0x3b,0xe1,0x42,0xf4,0xae,0x64,0x00,0xf1,0xd3,0xb0,0x59,0x54,0x62,
- 0x54,0x28,0x2c,0x23,0x7e,0xbe,0x07,0x33,0xa2,0x06,0xa4,0x39,0xfc,0xec,0x87,0x37,
- 0xa1,0xb1,0xbd,0x48,0xe2,0x93,0x70,0x4c,0x08,0x22,0x4e,0x70,0xc3,0x60,0xe2,0x67,
- 0x35,0xec,0xe5,0xe4,0x38,0xe2,0x67,0x35,0x74,0x91,0xdd,0x8a,0x78,0x33,0x7e,0xd6,
- 0x28,0x85,0x29,0xd2,0x0f,0x5b,0x38,0x5f,0x8b,0x38,0x07,0x3f,0x61,0x6f,0xb5,0x8f,
- 0xe1,0xa7,0x40,0xb7,0x40,0x3c,0x2a,0xe6,0xe1,0xe7,0xfc,0x38,0xcc,0xc4,0x1a,0xa1,
- 0x08,0xf9,0xa7,0x32,0x1a,0x0b,0x79,0x02,0x94,0x37,0xf1,0x73,0x68,0x3e,0xc2,0x91,
- 0xd4,0x7c,0x04,0xf1,0xf3,0xf2,0x1a,0x8c,0x9b,0x6d,0xae,0x1c,0x7e,0x36,0x20,0x9f,
- 0x7f,0xb3,0xa5,0x19,0x29,0x62,0x62,0x22,0x7d,0x9f,0xb4,0x6c,0xd4,0x39,0xee,0x7b,
- 0xdf,0xf0,0x4f,0x2f,0x64,0xa5,0x21,0xa5,0x0e,0x1c,0x4f,0x26,0x14,0x4a,0x41,0xb6,
- 0xfb,0x73,0xf8,0x19,0xb5,0x25,0x61,0x6f,0x3c,0xa0,0xdc,0x8a,0x58,0x9e,0x46,0x32,
- 0xbd,0x4a,0x94,0xe0,0xb4,0x89,0x9f,0x9e,0x7e,0x16,0x03,0xe2,0x2b,0x53,0xc2,0x7a,
- 0xb2,0x05,0x63,0x80,0x37,0x0f,0x3f,0x85,0x7e,0xef,0x9b,0x10,0x8e,0x17,0xa5,0xd6,
- 0xfd,0xe3,0xd2,0x23,0xc9,0x6f,0xb4,0xac,0x4a,0xb5,0x9a,0xf8,0xd9,0x2e,0xb1,0x71,
- 0x1a,0x7e,0xb6,0x49,0x48,0x9c,0x58,0xe3,0x2d,0xc3,0xd6,0x7e,0xcd,0xd6,0x3e,0xa9,
- 0x88,0xb6,0x56,0xc2,0x68,0x24,0x04,0x47,0x69,0x95,0x89,0x9f,0xa2,0xe0,0x87,0x97,
- 0xc1,0x37,0x20,0x66,0x89,0x1f,0xb6,0x62,0x8c,0x2b,0xce,0x5a,0xf8,0x29,0x22,0x7e,
- 0x3e,0x8b,0xfe,0x89,0xf1,0x7d,0x1b,0x62,0x4f,0x8d,0x5a,0x28,0x93,0xe3,0x56,0x7c,
- 0x2f,0x17,0x0e,0xa6,0xab,0xb2,0x85,0x9d,0xe4,0x2c,0x6c,0x96,0x17,0x8d,0x88,0x71,
- 0x0b,0x3f,0xfd,0xde,0x0a,0xd8,0x37,0x50,0x9f,0x7d,0xe0,0x4f,0xab,0xbe,0x4b,0x5f,
- 0x7b,0xe1,0xee,0xac,0xab,0x3d,0x0f,0x3f,0x71,0xff,0x75,0xbc,0xac,0x16,0x0f,0xf2,
- 0xb5,0xe8,0xa8,0xcb,0xc6,0x17,0xe7,0xf8,0x67,0x5c,0xf8,0x11,0x30,0x9a,0xb4,0xe3,
- 0x4a,0xf7,0xac,0xf2,0x41,0x5f,0xf3,0xe5,0x40,0x7b,0x95,0x64,0xe2,0xa7,0xb4,0x7d,
- 0xe4,0x20,0x95,0x27,0x0b,0x67,0x48,0xb8,0xba,0x9b,0x2e,0x9e,0xf4,0xb6,0x93,0x9a,
- 0x3c,0xfc,0xfc,0xa6,0x5c,0x39,0x8a,0x7b,0x0c,0x9d,0x18,0x6a,0x55,0x31,0x5e,0x53,
- 0x60,0xf8,0xa7,0xe2,0xd9,0x26,0xec,0x23,0xb2,0xda,0x1b,0x24,0xc5,0x52,0xa9,0x8a,
- 0xfc,0x53,0x26,0x5e,0x13,0x3f,0x6d,0x7b,0xe0,0x5d,0x08,0xbd,0x31,0x6f,0x9a,0x7f,
- 0x19,0x66,0xa3,0xcd,0xaa,0x33,0x7d,0x7b,0x9d,0xc5,0xf5,0x19,0x16,0x84,0xd5,0xa2,
- 0x0c,0xbf,0x07,0x18,0x39,0x72,0xa5,0xe7,0xe0,0xe7,0x35,0x68,0xce,0xba,0xa6,0xed,
- 0xe5,0xe4,0x54,0xe1,0x72,0x15,0x8d,0x67,0x72,0x37,0x03,0x3f,0x55,0xc4,0x17,0xe4,
- 0x98,0xa4,0x4e,0x2d,0x4a,0xfb,0x4c,0xff,0xa4,0x36,0xd6,0x57,0x33,0x82,0x5b,0x64,
- 0x0f,0x72,0xa9,0xc7,0x54,0x7b,0x3a,0x87,0x9f,0x92,0x53,0xde,0x27,0x06,0x46,0x1d,
- 0xa1,0x82,0x6d,0xe9,0xee,0x75,0x81,0x9f,0xf2,0x0b,0x13,0x16,0x7e,0x8a,0x1b,0x90,
- 0xbb,0x35,0xaa,0xc5,0x17,0xb9,0x9f,0xa8,0xa7,0xe4,0xe6,0xd1,0xe2,0x7e,0x3e,0x6b,
- 0xe2,0x67,0xd9,0x75,0x79,0x16,0xc2,0x6b,0x90,0x1e,0x6f,0x10,0x67,0xe3,0xe1,0x31,
- 0x24,0x2b,0x93,0x11,0x0b,0x3f,0x3d,0xd3,0xc9,0xc3,0x72,0x51,0x94,0x34,0xc0,0x25,
- 0x7a,0x57,0xb6,0x18,0xf9,0xa7,0xe1,0x2f,0x14,0x2e,0x88,0x43,0xd4,0x27,0xa3,0x5b,
- 0xfa,0x00,0x05,0x24,0xe3,0x9f,0xd3,0x96,0x7e,0x1f,0x83,0x0c,0x0b,0x35,0x80,0x12,
- 0x71,0x1f,0xf4,0xb3,0xcd,0x9d,0x8f,0x9f,0x38,0xce,0x27,0xf6,0x3c,0x33,0x00,0xf7,
- 0x80,0x8f,0x2d,0x34,0x1f,0x3f,0xaf,0xa4,0x1b,0x82,0x45,0x4e,0xfe,0x07,0x70,0x09,
- 0x96,0xa9,0xc5,0x19,0x62,0xea,0x07,0xc4,0x4f,0xe7,0x75,0x68,0xe6,0x76,0x8c,0xf3,
- 0x7f,0x60,0xf2,0xcf,0xeb,0x79,0xf8,0x89,0xfb,0x1d,0x9c,0xc9,0xee,0x01,0x8d,0x7f,
- 0xba,0x32,0xe4,0x0d,0xe3,0xfd,0x21,0x7e,0x52,0x4a,0x6b,0x0a,0xc4,0xe7,0xc9,0x00,
- 0xe2,0xa7,0xf6,0xbc,0x8b,0x39,0xfc,0x14,0x52,0x6e,0x3f,0xe2,0xa1,0xd2,0x83,0xf8,
- 0xa9,0x71,0x37,0x93,0xd7,0xc9,0x4a,0x05,0x6c,0xa3,0x8b,0x64,0xf1,0x18,0x79,0x3e,
- 0xf9,0x7d,0x06,0xa4,0x4f,0xc0,0x75,0xa3,0x2f,0xea,0x75,0xc2,0x78,0xba,0x41,0x0e,
- 0xd8,0xf9,0xde,0xe4,0xcf,0x92,0x0d,0x93,0x2e,0xe4,0x9f,0x05,0x7a,0x9f,0x52,0xbe,
- 0x13,0xae,0x56,0x2e,0x87,0x1d,0x09,0x7e,0x52,0x79,0x1b,0x8d,0xee,0x42,0x0e,0x5d,
- 0x60,0xec,0x95,0xb2,0x29,0x61,0x1a,0x96,0xb5,0x6c,0xa5,0x3c,0x03,0xfc,0x85,0x0c,
- 0xf0,0x87,0x4d,0xfe,0x79,0x5f,0x39,0xec,0x27,0x95,0x8a,0x4d,0x25,0x5e,0xf4,0xc1,
- 0x4a,0xe4,0x9f,0x70,0xd1,0x58,0x9f,0x0c,0x15,0xb0,0x9f,0x2e,0x96,0xed,0x51,0x82,
- 0x40,0x4a,0x17,0x30,0xfe,0x79,0xc6,0x98,0x4b,0x3b,0xc6,0xaa,0xcc,0x1a,0x7f,0x62,
- 0x4b,0x6d,0x82,0xd9,0xba,0x9a,0xad,0xe1,0xad,0x3c,0xfe,0xf9,0xb1,0xba,0xbc,0xa7,
- 0x22,0xcb,0x7f,0x4b,0xbe,0x0a,0xcb,0xa8,0x83,0xe1,0xa7,0x3e,0x17,0xd4,0xef,0x30,
- 0x24,0x2e,0x2c,0xb9,0x23,0x59,0x1a,0x4f,0xcd,0xa0,0xf1,0x5c,0xb4,0xea,0xb4,0xb9,
- 0xa7,0x19,0xff,0x4c,0x84,0x62,0xfc,0xf3,0x7c,0xb5,0x74,0x2c,0xb2,0x90,0x71,0xbe,
- 0x61,0xa3,0x8f,0x0a,0x0b,0x94,0x43,0xf4,0x85,0xb5,0x3d,0x5e,0xc4,0xcf,0x5d,0xd4,
- 0xa7,0xf3,0x4f,0xfd,0xd2,0xf0,0x53,0xaa,0x41,0x48,0xb5,0x57,0x9b,0x24,0x6e,0x0e,
- 0x7e,0x22,0xb6,0x8a,0x92,0xbd,0x3a,0x59,0xc9,0xc8,0x1f,0xc3,0x4f,0xfd,0x9e,0x43,
- 0xf3,0xdb,0x11,0xe7,0x1b,0xa1,0xf6,0xaf,0x19,0x3f,0xd3,0x49,0xf1,0x85,0x79,0x39,
- 0xfc,0xbc,0x01,0xcb,0x95,0xa2,0x71,0xfe,0xb2,0xf2,0x11,0xdc,0xc2,0xe6,0x72,0xc1,
- 0xc2,0xcf,0xfd,0xf0,0x0f,0x64,0xb9,0xe2,0x8c,0x71,0xd5,0xf2,0x3f,0x40,0x85,0x72,
- 0x47,0xaa,0xea,0x82,0xe1,0x83,0x88,0x9f,0x30,0x84,0xae,0x59,0x44,0xa1,0x12,0x7a,
- 0x00,0x81,0x94,0xe2,0x5c,0x0c,0xfc,0x14,0x92,0xc2,0xb7,0xa0,0x5a,0xf1,0xbb,0x13,
- 0xd5,0xe4,0x69,0x08,0x28,0x76,0x89,0x9c,0x36,0xe6,0xe2,0x8d,0xf5,0x6b,0xd4,0xb9,
- 0x10,0xd7,0x40,0xd9,0x1a,0x56,0x32,0xfc,0xd4,0xfb,0xd2,0x6d,0xfd,0xc2,0x4f,0xe9,
- 0xd2,0x3f,0xf1,0x78,0xb9,0x6a,0x74,0xb8,0x3f,0x67,0x18,0x39,0x69,0xc6,0xb1,0x12,
- 0xd4,0xf6,0xfe,0x70,0xc7,0x1d,0xcf,0x39,0x18,0xff,0xd4,0xfa,0xde,0x32,0x39,0xa6,
- 0x24,0xcb,0xa8,0xdf,0xbd,0x2e,0xda,0x9a,0xd6,0xd6,0xf7,0x54,0x8e,0x7f,0x8a,0xb6,
- 0x46,0x28,0x56,0xaa,0x32,0xf6,0xf7,0x71,0xaf,0xbc,0xd3,0x56,0x87,0xbf,0x12,0x31,
- 0x75,0xa3,0x68,0x5b,0x01,0x5d,0x0f,0xca,0x9b,0x6e,0x0d,0x24,0x9c,0xb0,0x3b,0xab,
- 0x05,0xc9,0xe1,0x9c,0x3e,0xf2,0x3d,0x05,0xeb,0x90,0x7a,0x91,0x97,0xe0,0x2f,0x8b,
- 0xbe,0xc6,0xf4,0xca,0xa8,0x89,0xd7,0x5e,0x37,0x42,0xf4,0x12,0xb9,0xa8,0x93,0xaf,
- 0x80,0x09,0x3a,0x3f,0xfb,0xed,0x4e,0x2b,0x97,0x20,0xce,0xa7,0x30,0x8d,0x88,0xbd,
- 0x38,0x33,0x6f,0x4c,0x9a,0x81,0x0a,0x14,0x7b,0x7c,0xe4,0x16,0x7d,0x5c,0x5c,0x78,
- 0x1e,0xa6,0xe8,0x8b,0xeb,0xeb,0x3a,0xab,0x2a,0x50,0xc8,0x37,0x4f,0xb8,0x66,0xf8,
- 0x33,0xc6,0x3c,0x07,0xa0,0x2f,0x99,0x94,0x97,0xca,0x45,0x41,0x7b,0x31,0xdd,0xbc,
- 0x2b,0x90,0x45,0x22,0x7a,0x9e,0xc8,0x86,0xd3,0xa7,0x0a,0xf6,0xc0,0x22,0xa7,0xe3,
- 0x23,0xd2,0x44,0x37,0x05,0x6b,0x47,0x71,0x2e,0x47,0x15,0xbd,0x4f,0xf1,0x50,0xa0,
- 0x4a,0xbf,0x5c,0xb8,0x94,0x14,0x91,0x2e,0x2d,0xd0,0xfb,0xc6,0x0d,0x6d,0x3f,0x80,
- 0x9c,0x3d,0xab,0x36,0x90,0xe2,0xfd,0xbc,0x8b,0x24,0x04,0xb6,0x6f,0xf9,0x0b,0x54,
- 0x9f,0x4b,0x1a,0x7d,0x70,0x26,0x16,0x96,0x16,0xff,0x98,0x9f,0x52,0xae,0x46,0xc2,
- 0xea,0x8e,0x4c,0xd5,0xa4,0xa5,0xdf,0xa7,0x85,0x29,0xb1,0x5e,0x2e,0x9a,0x7e,0xf6,
- 0xba,0x7c,0x76,0x77,0x95,0xba,0x7a,0xba,0x34,0x6e,0x70,0xcc,0x2e,0xe1,0x11,0x18,
- 0x18,0xf5,0x85,0x6a,0xfb,0xc8,0x14,0xe9,0x39,0x57,0x83,0xfb,0xdd,0x97,0xe3,0x9f,
- 0xd8,0x97,0xd8,0x2d,0x2e,0x7a,0x09,0xfb,0x86,0xa0,0xe6,0x48,0x61,0xc6,0x9d,0xd3,
- 0xef,0xf8,0x4c,0x48,0x17,0xde,0xb7,0x84,0x7c,0x88,0xe4,0xbe,0x7d,0xd4,0xb1,0xb4,
- 0x60,0x58,0x30,0x1d,0x5b,0x86,0xc9,0x58,0xe8,0xb6,0xa2,0xfd,0xa5,0x1f,0xd2,0x19,
- 0xa9,0xf1,0x9d,0xa2,0x03,0x5d,0x71,0xd9,0xd4,0xef,0xd3,0x70,0x19,0x96,0xdb,0x71,
- 0x0a,0x53,0x23,0x67,0xdd,0xe1,0x51,0xdc,0xef,0x66,0x4c,0x55,0x6d,0xff,0x04,0xa7,
- 0x68,0x48,0x2d,0x7c,0x89,0x7f,0x5f,0x79,0x97,0x86,0xc7,0x03,0x43,0x16,0xff,0x54,
- 0xa5,0x09,0xd2,0xdd,0x53,0x75,0x19,0xa9,0xe5,0x18,0xf4,0xd2,0xba,0x37,0xc4,0x21,
- 0xc8,0x5a,0xf1,0x7d,0x8a,0x7e,0x4f,0x4e,0x33,0x2e,0x35,0x46,0x9f,0x85,0xc0,0xe8,
- 0xad,0xf9,0xfa,0xbd,0xbf,0xfc,0x6f,0x11,0xc6,0xc4,0x4c,0xc1,0x94,0xd4,0xcb,0xd5,
- 0xa9,0x85,0x39,0xfc,0xa4,0x65,0x23,0x18,0x6a,0x42,0x68,0x2a,0xfe,0x82,0x26,0xe4,
- 0x31,0xf8,0x98,0xfa,0x21,0xcb,0xed,0x17,0xde,0x25,0xcb,0x19,0x6c,0xce,0x22,0x7e,
- 0x2e,0x57,0x8b,0x91,0x7f,0x9a,0xba,0x1f,0x63,0xff,0x35,0x18,0x44,0xb8,0xd5,0x63,
- 0xd5,0x11,0xc6,0xf9,0x8c,0xf7,0xde,0x83,0x7b,0xfa,0xf0,0xd6,0x2a,0x7c,0xde,0x1a,
- 0x96,0xf3,0x58,0x7c,0xc4,0x31,0x47,0xbf,0x8b,0xc8,0x3f,0x91,0xb2,0x45,0xa6,0x18,
- 0xff,0x3c,0x92,0x87,0x9f,0xe9,0xae,0x5b,0xd4,0x83,0x29,0xf9,0x9c,0xd8,0xe9,0xfe,
- 0xf2,0xc8,0x66,0x5a,0x8b,0xf8,0x49,0xce,0x18,0xf6,0x8c,0x46,0x8b,0xe1,0x52,0x26,
- 0x98,0x2d,0x6e,0xe0,0x4f,0xc2,0xcf,0x68,0xd3,0xa4,0xab,0x31,0x4f,0xbf,0xef,0x67,
- 0xb1,0x71,0x1c,0xa7,0xb0,0x47,0xc2,0xc0,0x34,0xec,0xda,0x6b,0xcd,0x65,0xc0,0x36,
- 0x51,0x78,0x02,0x06,0xb1,0xaf,0x4a,0xcb,0x33,0x64,0x8b,0xf2,0xf0,0xf3,0xe9,0xe7,
- 0xb8,0xcd,0x50,0x79,0x06,0x5d,0x0f,0xf9,0x04,0x2c,0x1e,0x15,0x51,0xbf,0x1b,0xfb,
- 0x81,0xc2,0x01,0xd8,0x9c,0xd4,0x64,0xfb,0x27,0x12,0xce,0x85,0x91,0x8e,0x51,0x2b,
- 0xff,0xf9,0x7e,0xe4,0x6f,0x99,0x1c,0x66,0xef,0x41,0xcb,0x2f,0xcd,0xc1,0x4f,0xe9,
- 0x38,0x0a,0x15,0xe4,0x9f,0x93,0xa6,0x90,0xbf,0xca,0xe9,0xf7,0x64,0xfa,0x7d,0xad,
- 0xa1,0xdf,0x15,0x43,0xc8,0x9b,0xf9,0x02,0x2d,0xff,0x09,0xa1,0x16,0x17,0xd3,0xe1,
- 0xc7,0x74,0x52,0x95,0xc3,0xcf,0xf5,0xb0,0x85,0x68,0xb0,0x39,0x42,0xb6,0x70,0x8f,
- 0xdd,0x84,0x9f,0xe2,0x16,0x5d,0xb6,0x4f,0xc0,0xcd,0xf8,0xd9,0x26,0x40,0x17,0xa4,
- 0xa3,0x08,0x9b,0x13,0xd0,0xc5,0x05,0xa2,0x73,0xf5,0x7b,0x4c,0x65,0xb2,0x9d,0xe9,
- 0xf7,0x51,0xa8,0xf3,0xec,0xc8,0xe1,0xe7,0xe8,0xfc,0x37,0x58,0x3a,0xb1,0x6d,0x75,
- 0xaa,0xf5,0x0d,0x91,0x35,0x5c,0x39,0xfc,0xf4,0xda,0x5e,0x45,0x6c,0x0d,0x99,0x9a,
- 0x39,0x7c,0xbf,0x8b,0xe1,0xa7,0xde,0xd7,0x29,0x21,0x7e,0xca,0xbb,0x19,0x6c,0x62,
- 0x03,0xea,0xbc,0x0e,0xea,0x36,0xf1,0x13,0xf5,0x3b,0xec,0x15,0xe5,0x18,0xf2,0x56,
- 0xa6,0xdf,0x03,0x11,0x9c,0xcb,0x69,0xc3,0x9e,0xde,0xb2,0x7e,0xc4,0x79,0x63,0x0d,
- 0x87,0x8c,0x35,0x98,0xf8,0xe9,0x61,0xf9,0x4f,0xed,0x79,0xef,0x03,0x4b,0x2a,0xec,
- 0xc8,0xc3,0x4f,0xe8,0x37,0xd2,0x9e,0x8f,0x4e,0x28,0x46,0xfe,0x33,0x87,0x9f,0x08,
- 0x9b,0x74,0x90,0x99,0xd8,0x8a,0x0f,0x96,0x7e,0x47,0xfe,0xb9,0x1d,0x69,0x27,0xd3,
- 0xef,0xf0,0x82,0x50,0xc7,0x1a,0x26,0x7e,0x32,0xfd,0xde,0xad,0xbd,0x5b,0x9f,0x9e,
- 0x3b,0x9c,0x83,0x9f,0x61,0xba,0x99,0x85,0xd9,0x4e,0xd4,0xef,0xdf,0x87,0xda,0x57,
- 0x35,0xfc,0xd4,0x6d,0xed,0x17,0x2b,0xc8,0x29,0xba,0x24,0xeb,0xba,0xc6,0x87,0x55,
- 0xd4,0xef,0x93,0xae,0xce,0xaa,0xe3,0x46,0x7c,0x47,0xfe,0x49,0x19,0xaf,0x43,0x0d,
- 0xf4,0xa1,0xde,0xc8,0xe4,0xe5,0x3f,0xff,0x29,0x7e,0x72,0x33,0xe3,0x9f,0x3f,0x43,
- 0xe1,0x49,0x91,0xe0,0xcd,0x94,0x9e,0x31,0xd6,0x87,0xfa,0xdd,0xb7,0x15,0xee,0x3c,
- 0xe2,0xe8,0x8c,0x9c,0xad,0xde,0x47,0x6b,0xa7,0x56,0xfe,0xa9,0xfb,0xbc,0xb1,0x06,
- 0xa0,0x3b,0xe9,0x76,0x2d,0xe4,0xa3,0xef,0x1e,0x14,0x10,0x3f,0x1f,0x27,0x23,0x06,
- 0x7e,0xc6,0x3d,0x27,0x91,0x56,0x57,0xb3,0x6d,0x87,0x42,0x49,0xa8,0x53,0x57,0x06,
- 0x89,0xb5,0x1f,0xca,0x5e,0x96,0x8e,0x31,0xdd,0xc8,0xa8,0xd0,0x35,0x61,0x31,0xce,
- 0xe5,0x8b,0xe7,0x2d,0x9f,0x9f,0x92,0x8c,0xe9,0xe9,0x44,0x94,0x35,0x84,0x1c,0xff,
- 0xbc,0x01,0xf5,0x6c,0x5c,0x93,0xc6,0xa5,0x9c,0xd3,0x7c,0xb6,0xcd,0xd4,0x47,0x8c,
- 0x63,0x32,0x9a,0xb4,0x66,0x0f,0x13,0xeb,0x2a,0xea,0xdb,0x73,0x16,0x7e,0x6e,0x80,
- 0x43,0x3d,0x3e,0x9d,0x9b,0x32,0x92,0xca,0xb4,0xbd,0x89,0x9f,0x80,0xfc,0x93,0xd9,
- 0x3a,0xe3,0x7e,0x4a,0xd8,0x57,0x55,0x37,0x8c,0x24,0x35,0xc7,0x3f,0xff,0x33,0xbd,
- 0x22,0x85,0x46,0x5c,0xff,0x5c,0xba,0x1c,0xae,0x29,0xe1,0xf1,0x6d,0xfb,0xf8,0xac,
- 0xb1,0xdf,0xd3,0xf3,0xaf,0xa7,0x67,0xab,0x9b,0x8f,0xb9,0xf6,0x31,0xfd,0xde,0x10,
- 0x3e,0xe1,0x3a,0x90,0xd3,0xef,0xdc,0x27,0xc8,0xe7,0x97,0xc7,0x5d,0x43,0x7c,0x0d,
- 0x8c,0xe1,0xfe,0xbb,0x63,0xc8,0xaa,0x1f,0xa9,0xe2,0x05,0x38,0x9c,0x40,0xf7,0xca,
- 0x90,0x1a,0x78,0xab,0xab,0x8e,0xf1,0x4f,0x99,0xe8,0x6b,0x18,0x45,0xfe,0xb9,0x8f,
- 0x6c,0x50,0xf0,0x75,0xfb,0xc0,0x78,0xef,0x16,0x7e,0xda,0x98,0x7e,0x7f,0x2c,0xae,
- 0xe9,0xf7,0xbf,0x82,0xba,0x11,0x96,0xff,0x34,0x6c,0x26,0x95,0x69,0xa6,0x92,0x4f,
- 0x05,0x79,0x3b,0x8c,0x46,0xc3,0x69,0x47,0xc6,0x91,0x97,0xff,0xf4,0xa2,0xa9,0x50,
- 0xbf,0x3b,0x66,0xe0,0x13,0x96,0x4f,0x9e,0x76,0x34,0x18,0xe3,0x62,0x9a,0x7e,0x47,
- 0xfd,0xa7,0xd5,0x65,0x20,0x34,0xd2,0x94,0xc3,0x4f,0xa6,0xdf,0xd1,0x54,0xdf,0x10,
- 0x87,0x50,0x53,0xf6,0xc2,0xb2,0xac,0x18,0x8c,0xe4,0xf8,0x27,0xcb,0x2f,0xf9,0x95,
- 0xc2,0x06,0x22,0x72,0x5d,0x44,0x90,0xc5,0x20,0x4c,0x73,0xba,0x3d,0xa7,0xe1,0xcb,
- 0xf4,0x20,0xad,0x5d,0x8f,0x52,0xf9,0xf9,0xae,0x1d,0x5d,0x0b,0x3a,0xb1,0x31,0x2a,
- 0xe9,0xef,0x21,0x0a,0x5f,0xa0,0x97,0x52,0x0d,0x3f,0x7f,0x60,0xa8,0x97,0xd0,0x13,
- 0x74,0xe9,0xa4,0x88,0xfc,0xd3,0x30,0xb5,0x32,0x1f,0xf5,0xbb,0x3b,0xcc,0x64,0xbb,
- 0xaa,0xbd,0xf7,0x53,0x37,0xe9,0x77,0x5c,0xdf,0xfc,0x0c,0xef,0x87,0x63,0x34,0x24,
- 0x3b,0x73,0xf8,0x39,0x7a,0xab,0x26,0x7d,0x94,0xb5,0xd3,0xfc,0x5a,0xf8,0x5f,0x50,
- 0xa9,0xf4,0x74,0xf8,0x4e,0x1b,0xe3,0x34,0xfd,0x8e,0xfc,0xf3,0xbe,0xce,0xd0,0x60,
- 0x10,0x35,0x3a,0xd3,0xef,0x3d,0xe6,0xbe,0x45,0xfe,0x79,0x18,0x02,0x31,0x31,0x68,
- 0x3f,0x8e,0x62,0x2f,0xad,0xfa,0x11,0x3f,0x21,0x57,0x3f,0x42,0xfd,0x3e,0x84,0xb0,
- 0x39,0x04,0x27,0xa1,0x9e,0x3a,0xd3,0xfc,0x8b,0x56,0xbe,0x40,0xd3,0xef,0x6e,0x17,
- 0x25,0x8f,0x98,0x89,0x50,0x13,0xaf,0x45,0xad,0x4e,0x12,0x8a,0xbb,0xfa,0x4a,0xab,
- 0x7f,0x15,0x7e,0x1e,0x22,0xbe,0x0e,0x47,0x9f,0x4f,0x80,0x2d,0x2d,0x75,0xb1,0xbc,
- 0xfc,0x67,0x83,0xa6,0xdf,0x7d,0x6b,0x1d,0x6e,0xe4,0xa6,0x5b,0x0a,0xeb,0x22,0xd8,
- 0x77,0xd2,0xdc,0xd3,0x1e,0x01,0xfb,0x64,0xa5,0x57,0x22,0x0b,0xa1,0x4b,0xd6,0xf0,
- 0xf3,0xb8,0x4d,0xb7,0xd9,0x50,0x51,0x5c,0x98,0x81,0xc1,0x32,0xc4,0x4f,0x59,0x62,
- 0xf8,0xb2,0x23,0xa7,0xdf,0xfb,0xca,0x18,0x34,0x2e,0x67,0x35,0x9b,0x37,0x0a,0x6e,
- 0x48,0xba,0x7e,0x37,0x6c,0xd6,0x67,0x63,0x7d,0xcd,0x8a,0x73,0xbc,0x4a,0x90,0x8e,
- 0x89,0xe1,0xfb,0x9d,0xe3,0xfc,0x51,0xc3,0xcf,0x1a,0xbc,0x1a,0x6c,0x8a,0x48,0xf5,
- 0xe2,0xd0,0xd3,0xb2,0x58,0x62,0xf9,0xcf,0x02,0x23,0xbe,0x03,0xea,0x77,0x08,0xb4,
- 0xde,0x16,0xa2,0xfb,0xc5,0x4d,0x5d,0xb5,0x71,0x91,0xf1,0x4f,0x7d,0xed,0x5e,0x81,
- 0xf1,0xcf,0xc7,0x94,0xdb,0x53,0x35,0x13,0xbb,0x9f,0x92,0x17,0x47,0xb5,0x1c,0x84,
- 0xb1,0x57,0xca,0x26,0xa4,0x2b,0xd0,0xa4,0x6c,0x4f,0xb1,0xbc,0x46,0x4b,0x38,0x16,
- 0xc8,0xe5,0x3f,0xa3,0x9c,0x86,0x9f,0xeb,0x8b,0x52,0x3c,0xab,0x73,0x35,0x31,0x9b,
- 0xe5,0xec,0xa9,0xd9,0x1a,0xee,0xa0,0xa5,0x95,0xc2,0x28,0xd4,0x43,0x80,0x5a,0xf6,
- 0x34,0xf2,0x9f,0x03,0x8e,0x2c,0x68,0xfa,0x3d,0x2d,0xfe,0x52,0xfe,0xf3,0x1c,0x9f,
- 0x89,0x38,0xa5,0xee,0x84,0x4c,0x31,0x36,0x9a,0xfa,0x9d,0x96,0x94,0x6b,0x52,0x19,
- 0x31,0x6b,0x29,0xd9,0xac,0x56,0x26,0x30,0xde,0x66,0x05,0x7d,0x5c,0x8f,0x58,0x01,
- 0x2c,0xff,0xe9,0xe8,0x74,0xdc,0x06,0xc3,0x34,0x93,0x75,0x76,0xf2,0xef,0x99,0xfa,
- 0xbd,0x6c,0x8f,0x0e,0x47,0xcb,0xfe,0x2e,0x2b,0x5e,0x45,0xae,0xf1,0x5d,0xe6,0x83,
- 0xfa,0x3c,0x15,0xa6,0xdf,0x91,0x76,0x3a,0xaf,0xf0,0x61,0xee,0x18,0xad,0xaf,0x76,
- 0x75,0xf2,0x60,0xe2,0xa7,0x77,0xbb,0x70,0x30,0x5d,0x37,0xd9,0xd3,0xe9,0xbb,0x25,
- 0xdd,0x95,0xa9,0xf4,0x23,0x70,0xd7,0x18,0xba,0x0a,0xf5,0xbb,0x84,0x73,0x19,0x16,
- 0x1f,0x27,0xde,0x48,0x52,0xae,0x8c,0xe3,0xa4,0xcc,0x71,0x71,0x61,0x9b,0xb4,0x0f,
- 0xea,0xa6,0x11,0xaa,0x98,0xf3,0x60,0xd0,0x0a,0x12,0xd1,0xe8,0x1b,0xd2,0xe7,0xf2,
- 0x6a,0x20,0xb3,0xb2,0x16,0x4e,0xd0,0xc1,0x94,0x2b,0xe3,0x30,0x73,0x02,0x49,0xd0,
- 0xf6,0x0a,0xc5,0x7d,0x34,0x21,0x5c,0xa2,0x4d,0xac,0x61,0xea,0xf7,0xb4,0xa4,0x95,
- 0x40,0x46,0x9d,0x33,0x7c,0x83,0x7c,0x1c,0xea,0x87,0x11,0x3f,0x47,0x0d,0xfc,0xdc,
- 0xa5,0xeb,0xf7,0x71,0x84,0x4d,0x8a,0xf1,0x88,0x11,0x35,0x32,0x99,0xcb,0x7f,0x0a,
- 0x87,0x85,0xba,0x61,0x71,0x10,0xf1,0x73,0x0b,0xe7,0xd3,0x72,0xa3,0xb9,0xfc,0x27,
- 0xdd,0xe7,0x0b,0x14,0xda,0xdd,0xa4,0x3f,0xb9,0x2b,0x22,0x83,0xbf,0x9e,0x0c,0x1b,
- 0xfe,0x49,0x8b,0x36,0x28,0x08,0x8d,0xef,0x3a,0x3f,0xae,0xf2,0x2b,0xa3,0xf1,0xc1,
- 0xb5,0xab,0x06,0xab,0xac,0xfc,0xe7,0xb7,0xaf,0xab,0xb3,0x72,0xf8,0x98,0xab,0xbe,
- 0x5b,0x55,0xaf,0xc7,0xc3,0x5f,0x40,0x20,0xb5,0xf8,0x67,0xd9,0x75,0xd8,0x80,0xdb,
- 0xbc,0x68,0x94,0x0f,0xb3,0x78,0x74,0xbf,0x33,0xa7,0xdf,0x55,0xef,0xac,0xb0,0x95,
- 0xca,0x8f,0x38,0x7a,0x48,0x40,0x3e,0x4c,0xeb,0xa6,0xed,0x39,0xfd,0x3e,0x6a,0x7b,
- 0x5d,0xf4,0xa3,0x8d,0x1c,0x90,0x70,0x6e,0xd9,0xa7,0x73,0x22,0x4b,0xbf,0x73,0x7b,
- 0x98,0x9b,0x28,0xc8,0x0b,0xf4,0x18,0x60,0xcf,0xf8,0x4c,0x1e,0x29,0x21,0xbe,0x9c,
- 0x83,0x10,0x9a,0xca,0xc1,0xfa,0x2a,0x58,0x3d,0x6e,0xd4,0xe2,0x9f,0x2f,0x31,0x9b,
- 0x0d,0x6b,0xb1,0x6a,0x96,0x2c,0x9f,0xce,0xcf,0x7f,0xc2,0x1e,0xe5,0xcd,0x92,0x50,
- 0x7a,0xd5,0x10,0xcf,0xea,0x32,0x8c,0x43,0xf3,0xa6,0x7e,0x3f,0x63,0x2b,0x47,0x7a,
- 0xec,0xcb,0x22,0x7e,0x06,0x90,0x9b,0xd6,0x4d,0xcf,0xe1,0x9f,0x0f,0xd4,0x64,0x84,
- 0x6a,0xc9,0x4f,0xc9,0x36,0x09,0xbd,0xfa,0x72,0x1e,0xff,0x9c,0xe6,0x2a,0x60,0x7b,
- 0x7a,0x41,0xbb,0x18,0x2d,0x60,0xe0,0x55,0x9b,0xe5,0x3b,0x23,0x9f,0x18,0x7d,0x51,
- 0xd1,0xa9,0x4c,0xd3,0xa5,0x72,0xa0,0x87,0xdf,0xae,0xe2,0xbb,0x55,0x5d,0x4b,0xf8,
- 0xb7,0x4c,0xfd,0x3e,0xff,0x29,0xf8,0x98,0xbb,0x47,0x71,0xa9,0x8e,0x3f,0x83,0x0f,
- 0x24,0x2d,0xcf,0x60,0xea,0xf7,0x01,0x96,0x9f,0x40,0x9f,0x98,0xff,0x22,0x72,0x53,
- 0x23,0xa6,0x1e,0x37,0xf1,0xb3,0x64,0xa7,0x70,0x90,0xd5,0x8f,0x36,0xda,0xad,0x8d,
- 0x71,0x51,0xd2,0xd7,0x47,0xe1,0x3b,0x23,0x3f,0x4e,0xd6,0xa6,0xa3,0x9d,0xa4,0x42,
- 0x9b,0x0b,0xfa,0xae,0x6a,0xf1,0x4f,0x2d,0xff,0x39,0x21,0xde,0x4d,0x9c,0xac,0x91,
- 0x9d,0x53,0x3f,0xea,0x81,0xab,0x42,0x98,0xd6,0xee,0x21,0xac,0xb6,0x1b,0x1e,0x70,
- 0xe5,0xeb,0xf7,0xac,0x30,0x43,0x19,0x6c,0x76,0xc7,0x2d,0xfc,0xcc,0xe9,0x77,0xf2,
- 0x73,0x84,0xcd,0x55,0xcf,0xf3,0x8c,0x7f,0x36,0x29,0x81,0x9b,0xf8,0x27,0x57,0x17,
- 0x8b,0xee,0x24,0x13,0x02,0x72,0xcc,0x87,0xc5,0x39,0xfc,0x93,0xfc,0x80,0xd6,0x2a,
- 0x85,0xe3,0xee,0x11,0x8d,0x7f,0xce,0xc9,0x7f,0x3a,0xe9,0x26,0xa8,0x8d,0xfb,0xd7,
- 0x92,0x91,0x5b,0x50,0xc7,0xcd,0xc9,0x7f,0x16,0xc5,0x61,0x12,0xc2,0x9e,0x55,0xf7,
- 0x7e,0x1e,0xf9,0x27,0x17,0x06,0x67,0x8e,0x7f,0x6a,0xf5,0x23,0xb0,0xea,0x32,0xcd,
- 0xf9,0xfc,0xb3,0xcf,0x76,0x99,0xbc,0x0e,0xf7,0xb4,0x39,0xc7,0x1d,0xd5,0xac,0xef,
- 0x7e,0x04,0xaf,0x0b,0xb9,0xfa,0x11,0xca,0x76,0xd4,0xef,0x04,0x71,0x07,0x81,0x94,
- 0xe1,0xa7,0xa5,0xdf,0x6d,0x23,0x0a,0xab,0x1f,0xd9,0xdd,0x3e,0x21,0x8d,0x40,0xaa,
- 0x14,0xce,0xe1,0x9f,0x25,0x5b,0x10,0xe7,0x11,0xde,0xab,0xb9,0x43,0xc6,0x1a,0x4c,
- 0xfe,0xc9,0xea,0x47,0x42,0xa3,0x52,0xc3,0x72,0xbf,0xc8,0x3f,0x5b,0xbe,0x8d,0xf8,
- 0x69,0xf8,0x75,0x3b,0xab,0x1f,0xe1,0x3c,0x9d,0x38,0x4f,0xe9,0x8a,0xd0,0x14,0xbd,
- 0x99,0x7f,0x42,0x98,0xab,0x65,0xfc,0x13,0x6d,0x2d,0x14,0xe5,0xf1,0x4f,0xae,0x81,
- 0x0c,0xd3,0xc5,0xd4,0x99,0x25,0x7e,0xee,0x45,0x6e,0x31,0x15,0x6f,0xe2,0x9f,0x29,
- 0xb6,0x7d,0xec,0x4e,0x89,0xbd,0x5b,0x7f,0x30,0x32,0x6c,0xd5,0x8f,0x24,0x94,0x29,
- 0x68,0xeb,0x18,0x29,0xa7,0x07,0x71,0x0d,0x62,0x07,0x98,0xfc,0x73,0x40,0x2c,0x86,
- 0xd7,0x68,0x73,0x3a,0xd0,0x7e,0xfb,0x1d,0xe8,0x2f,0xcb,0x11,0x3f,0x2b,0x2d,0xfe,
- 0x79,0x2b,0xd3,0x6a,0x61,0xa5,0x38,0xcd,0x7f,0x98,0xbe,0xc6,0xce,0x5d,0x64,0xe6,
- 0xd4,0xdf,0xaf,0xd1,0xe6,0x89,0x00,0xe2,0x27,0xd3,0xef,0xd9,0xa2,0x7c,0xfe,0x99,
- 0x81,0xee,0x3e,0x0c,0x35,0x7d,0xf6,0x3a,0xd2,0x4d,0x6b,0xdb,0xc5,0x3f,0xe1,0xcf,
- 0x9b,0x36,0x83,0x97,0xe0,0xfb,0x25,0xb5,0x3d,0x3d,0x8f,0x90,0x72,0xf1,0x9b,0x72,
- 0xed,0xf1,0xff,0xb4,0x31,0xaf,0xfe,0x3e,0xc2,0xd2,0x90,0xb1,0x68,0x5a,0xab,0x1f,
- 0x05,0xe4,0x1e,0xe6,0x9f,0x7a,0x1f,0xc3,0xcf,0x0f,0x28,0xab,0xfb,0x3a,0x9a,0xe0,
- 0x6d,0xa1,0x89,0xe9,0xb1,0x1c,0xff,0x9c,0x64,0xdb,0x75,0xd8,0xf5,0x1c,0xf2,0xcf,
- 0x0f,0x40,0x23,0x24,0x7b,0xcc,0x1a,0xa6,0xf4,0x09,0x9c,0x92,0xef,0x4a,0x6f,0x9b,
- 0xbe,0x9d,0xf1,0x4f,0xbc,0xc1,0x74,0xa9,0xc5,0x3f,0x61,0x15,0xdb,0xef,0x13,0xe2,
- 0xfe,0x52,0x0d,0x5f,0x64,0x3f,0x6a,0xf4,0x1c,0x7e,0x2a,0xbd,0xb0,0x10,0x21,0x35,
- 0xa1,0x15,0xb1,0xb3,0x22,0x6a,0x7b,0xc3,0x9e,0x76,0x41,0x84,0x5e,0x8f,0xfc,0x9a,
- 0xdf,0x93,0xd8,0x46,0xf7,0x31,0xff,0x0c,0x5a,0xef,0x01,0xf1,0x93,0x9c,0xa8,0x5e,
- 0xda,0x13,0x38,0xc0,0xbf,0x24,0x5c,0x5b,0x17,0x8e,0xb6,0x0d,0xf2,0xd9,0x02,0x43,
- 0xbf,0x7f,0x1b,0xb9,0x70,0x50,0x83,0x9c,0x40,0x7c,0xb6,0x21,0x2c,0xac,0xde,0xdb,
- 0x3a,0xf9,0x64,0x5e,0xfd,0x88,0x86,0xd3,0xc8,0x3f,0xb3,0xa8,0xc4,0x43,0x59,0x57,
- 0x9e,0x7e,0x07,0xe4,0x9f,0xdd,0x75,0xbb,0x1c,0x43,0xca,0x05,0xd8,0x42,0x77,0x6b,
- 0xf9,0x4f,0x21,0x8f,0x7f,0xea,0x35,0xb7,0x31,0x76,0xb6,0xe9,0xe6,0xfc,0x27,0x4e,
- 0x3d,0xa5,0xd5,0xc0,0xb6,0xfc,0x72,0xfe,0x13,0x5f,0x69,0x46,0x0b,0x35,0xea,0xa8,
- 0x56,0x10,0xca,0xe6,0xea,0x47,0x5a,0xcc,0x71,0x4c,0x93,0xeb,0xc2,0x4f,0x52,0xcd,
- 0xea,0xea,0x9b,0xeb,0x47,0xe1,0x94,0xc6,0xf5,0x67,0x94,0x65,0x5a,0xcd,0xdb,0xd0,
- 0xda,0xaa,0x2d,0x60,0xe6,0x93,0xc7,0x18,0x39,0xd2,0x9e,0x67,0xf8,0xd9,0xa8,0xe0,
- 0x34,0xe6,0xe9,0x56,0xa5,0x8c,0x9e,0x3b,0xbc,0x0a,0x26,0xff,0xac,0x60,0xfc,0xd3,
- 0x8f,0xb2,0xfd,0x1d,0x78,0x89,0xd5,0xbc,0x9f,0x20,0xd7,0x65,0x7d,0x5c,0xd4,0x5b,
- 0x4c,0x11,0x36,0x07,0xbe,0xd2,0xd8,0x7a,0x12,0xa6,0xfb,0x97,0x4e,0xe5,0xeb,0xf7,
- 0xf2,0x3d,0xec,0x95,0x26,0x5d,0x1f,0xf1,0xd7,0x5b,0xa6,0x19,0x7e,0x7e,0xc4,0x8f,
- 0x3f,0xa9,0xcf,0x13,0xf9,0xa7,0xf8,0x75,0xca,0xe2,0x43,0x6b,0x16,0x1f,0xa0,0xd7,
- 0xdf,0xa9,0x81,0x9f,0xac,0x7e,0x04,0x95,0xb4,0x97,0x69,0xa0,0xfd,0x28,0x86,0x7e,
- 0x17,0xf1,0xb3,0x5a,0x1f,0xa7,0xf3,0xcf,0xca,0x34,0xab,0x65,0xc1,0x01,0xbd,0xfe,
- 0x3e,0xb7,0x7e,0x24,0x0f,0x6b,0xb6,0xce,0xe8,0xb6,0xb6,0xf0,0x13,0x58,0xfd,0x68,
- 0x5f,0xca,0x91,0x46,0x53,0x7d,0x92,0x0e,0xcd,0xa9,0xbf,0x1b,0x9c,0x68,0x9e,0x56,
- 0x7f,0x17,0x1a,0x6f,0xae,0x1f,0xe5,0x61,0xd6,0x32,0x65,0x4e,0xfd,0x1d,0x39,0x26,
- 0xa9,0x6b,0xd9,0xce,0xf4,0xed,0xde,0x5f,0x59,0x7f,0x37,0xb5,0xef,0xcd,0xf5,0x77,
- 0xd8,0x2b,0x68,0xa9,0xc6,0x11,0x7a,0x48,0x07,0xa8,0x5c,0xfd,0x48,0x3f,0x0b,0x70,
- 0x3b,0x6d,0x65,0x0d,0xb7,0x96,0xff,0xe4,0x25,0xa3,0x4f,0x83,0x4d,0xb5,0x38,0xc5,
- 0x5f,0x8e,0xde,0xd0,0x27,0x75,0x71,0x9e,0xbe,0x86,0x21,0x1b,0xcb,0x8d,0x86,0x55,
- 0x84,0xcd,0xcb,0xf2,0xeb,0x28,0xac,0x8b,0x73,0xdc,0x54,0xcb,0x7f,0x42,0x1d,0x2b,
- 0xbb,0x9f,0x43,0xb2,0x5e,0xc3,0x0e,0xd0,0xbc,0x63,0xe2,0xa7,0xc6,0x3f,0xeb,0x18,
- 0x6c,0x1e,0x05,0x06,0x96,0x5a,0xfe,0xd3,0xaa,0x1f,0x49,0x6c,0x0d,0xde,0x94,0xef,
- 0x7d,0xd8,0x22,0x6b,0xc5,0xb0,0xbc,0xfa,0x91,0x78,0xc5,0x16,0x8e,0x3f,0x95,0x2a,
- 0x9d,0x90,0x8e,0xe8,0xcf,0xb3,0xea,0x47,0x31,0xcd,0x66,0xf7,0x9e,0xd2,0x6c,0x46,
- 0x7f,0x45,0xfd,0x88,0x1d,0x71,0xd0,0xce,0x3a,0x84,0xf2,0xf5,0xbb,0x28,0xf8,0xc5,
- 0x17,0x99,0x0f,0xa6,0x23,0xa3,0xf0,0x22,0xa9,0x62,0xfa,0x3d,0xbf,0x7e,0x64,0x9e,
- 0x63,0x61,0xb9,0x6d,0xb6,0xa1,0xf2,0xea,0x47,0x92,0x11,0x66,0x51,0x33,0xc3,0x02,
- 0x8a,0x8d,0x49,0x83,0x7f,0xb2,0xfa,0x91,0x51,0x7f,0x7f,0x07,0x1b,0x77,0xa6,0xb1,
- 0x71,0x5e,0x7f,0x1c,0x88,0x45,0x3a,0xff,0xd4,0xf6,0xdf,0x25,0x68,0x44,0x67,0x2c,
- 0x1d,0xf6,0xe8,0xf3,0x8c,0x0b,0x9f,0xc0,0xe1,0xae,0xdf,0xc8,0xce,0x1b,0xc2,0x30,
- 0x74,0x2a,0x15,0xea,0x77,0x0e,0xe5,0xce,0x2f,0xc1,0xf6,0x24,0xca,0xf6,0xf7,0x99,
- 0x0f,0x2a,0xdd,0x78,0x4f,0xd4,0x40,0xe7,0x8d,0xb3,0x46,0x12,0xec,0x54,0xf4,0xb9,
- 0x44,0x5e,0x6f,0xdb,0x01,0xeb,0x7a,0xec,0x1d,0x05,0x23,0x73,0xe3,0x3b,0x5b,0xc3,
- 0x49,0xe8,0x56,0xfa,0x29,0xea,0xe2,0x33,0x79,0xf5,0x23,0xd4,0x8d,0x59,0x6d,0xdf,
- 0x9e,0x48,0x85,0x28,0x62,0xf9,0x05,0xc3,0xd6,0x19,0xbd,0x7e,0x34,0xcc,0xfa,0xa2,
- 0xd7,0xa4,0x30,0xb5,0xe5,0xf8,0x67,0x97,0x74,0xdd,0x66,0xc8,0xf6,0xb3,0x70,0x0a,
- 0x75,0x15,0x2b,0x2a,0x9b,0xf5,0xa3,0x24,0xf2,0xcf,0x82,0x00,0x93,0xed,0x53,0x88,
- 0xd7,0xbb,0xf1,0x9e,0x24,0xaf,0x7e,0xc4,0xf8,0x27,0xa3,0xa4,0x53,0xac,0x16,0x42,
- 0xf3,0xeb,0xef,0x18,0xb4,0xf7,0x29,0x48,0xe7,0x42,0x89,0xb1,0xd1,0x5e,0x31,0xfd,
- 0x4c,0x9e,0x7e,0xa7,0xde,0x0d,0xea,0xe1,0x68,0x78,0x64,0xd5,0x41,0xfe,0x43,0x7a,
- 0x22,0x1e,0xea,0x2b,0xfe,0xf1,0xf7,0xac,0xfa,0xd1,0xb7,0xa7,0x46,0x70,0xbf,0x9f,
- 0x61,0xb5,0x79,0xf1,0x92,0x7f,0x39,0x2d,0xbe,0x98,0x57,0x7f,0xbf,0x4c,0x5e,0x4d,
- 0x35,0x83,0xf3,0xbd,0xee,0x26,0xe9,0x94,0x96,0x0f,0xe1,0xa7,0x13,0xfa,0xfa,0x54,
- 0xe9,0x43,0xb9,0x57,0xc6,0xb9,0x24,0xc9,0x62,0x96,0xff,0xd4,0xf0,0x33,0x61,0xe2,
- 0x67,0x56,0xed,0x96,0x03,0x6a,0x21,0x90,0x2d,0xa6,0x7e,0xbf,0xc8,0xe9,0xf6,0x54,
- 0xcb,0x58,0x19,0xa7,0x6e,0xda,0x9f,0xbe,0x3f,0xcd,0xf5,0x6a,0xc0,0xe6,0x9b,0x36,
- 0x6c,0x4d,0x3d,0x54,0x39,0x91,0x0a,0x67,0x8b,0xf6,0x74,0xbf,0x40,0x4e,0xe8,0xf9,
- 0x64,0xd5,0xc8,0xa3,0x7c,0x04,0x2f,0x88,0xb3,0xec,0x38,0xd0,0x5b,0xfc,0x13,0x8a,
- 0x51,0x3f,0x9a,0x36,0x73,0xd4,0x52,0x3f,0x41,0xd9,0x3e,0xee,0xa4,0xa5,0x4e,0xd6,
- 0x60,0xe3,0xce,0x9a,0xfc,0x53,0x58,0x3e,0x8a,0xa6,0x7a,0x43,0xfc,0x6b,0x14,0xce,
- 0xbd,0xb0,0x9b,0x39,0xce,0x55,0xdd,0x2c,0xec,0xfc,0x27,0x61,0xf9,0x25,0xa4,0x18,
- 0xc5,0xac,0xd0,0xa9,0xd5,0x8f,0xa8,0xde,0x97,0xe1,0x2a,0x84,0x1d,0xb4,0x72,0x42,
- 0x7c,0xd3,0x5e,0x01,0xdf,0xd5,0x31,0xeb,0x63,0xa3,0xef,0x7e,0x91,0x90,0xbf,0x23,
- 0x41,0x75,0x55,0xb0,0x54,0x84,0xb7,0xa5,0xe0,0x11,0xe4,0x9f,0xa6,0x7e,0x8f,0xcc,
- 0x1f,0x52,0x66,0xa5,0x97,0xd5,0xc5,0x1d,0xfc,0x99,0xf8,0x3f,0x69,0xf3,0x2c,0x1d,
- 0x37,0x63,0xf8,0x6f,0x4d,0xb2,0xf3,0x1a,0x6a,0x45,0xaa,0xd4,0x8f,0x8d,0x46,0xbd,
- 0x7e,0xa4,0xf7,0x8d,0x3e,0xfd,0x7c,0x62,0x33,0x59,0xac,0x16,0xc5,0x88,0x9d,0x6e,
- 0x36,0xf8,0xa7,0xc9,0xf9,0xe0,0x9b,0x0a,0x3b,0xbf,0x74,0x7f,0xc3,0x6d,0x15,0xb0,
- 0x99,0x2e,0xd2,0xf8,0xa7,0x64,0xfa,0xe7,0xeb,0xd0,0x4d,0x02,0xd3,0x62,0x70,0x77,
- 0xb1,0xc8,0xc3,0x06,0x1d,0x3f,0xf5,0xbe,0x49,0xdb,0x10,0x1c,0xa7,0x77,0x64,0xec,
- 0xd9,0xaa,0x7b,0x0a,0xee,0x67,0x7b,0x25,0xcd,0x5f,0xb4,0xf8,0xa7,0x2a,0xcf,0x48,
- 0x61,0x27,0x6e,0x65,0x35,0x6e,0xe9,0x77,0xd9,0xf0,0xa5,0xf7,0xe9,0x31,0xa2,0x71,
- 0xa9,0x85,0xc8,0x3f,0xeb,0x34,0xfc,0x34,0xdf,0x91,0xf0,0xfb,0xf6,0x2d,0xf3,0xd8,
- 0xb1,0x1e,0xfb,0x42,0x33,0xc7,0x99,0x35,0xd6,0xee,0x15,0x16,0xe0,0x8f,0x02,0x5a,
- 0x8d,0x48,0xb1,0xf2,0x9f,0x60,0xdc,0x53,0x48,0x68,0xb4,0xd3,0x4d,0xb4,0xc6,0x1c,
- 0xfc,0x14,0xd7,0x45,0x46,0xd7,0x84,0x3d,0x7d,0x9b,0xea,0xad,0xfc,0xe0,0xc7,0xc4,
- 0xc8,0x7f,0x16,0xbd,0x81,0xb0,0xd9,0x3c,0x82,0x61,0xe8,0xb2,0x49,0x44,0xdf,0x9b,
- 0xa7,0xfb,0xa7,0xc8,0x7d,0xac,0x1e,0x83,0x65,0x6d,0xce,0x3e,0xfe,0x1b,0x5a,0x9e,
- 0x81,0x60,0x1f,0x31,0xf3,0x9f,0x3f,0x23,0x54,0x0c,0x08,0xe2,0x30,0x72,0xef,0x9b,
- 0xeb,0x47,0xb6,0x11,0x95,0x4d,0xa1,0xe7,0xa1,0x84,0x0d,0x76,0xe9,0x73,0x79,0xcb,
- 0xe2,0x9f,0x7f,0x0d,0x3f,0xa0,0x75,0x4a,0xcf,0x69,0x7b,0x35,0xfc,0x40,0x5b,0x03,
- 0x32,0x05,0xbd,0x2f,0xfd,0x17,0x13,0xe4,0x18,0x17,0x6e,0xf3,0x3f,0xc7,0x2f,0x20,
- 0x7f,0x00,0xe1,0x96,0xef,0xe4,0xe7,0x3f,0x93,0xca,0x9b,0xd0,0x14,0x77,0x79,0xf9,
- 0xa3,0xf4,0x4d,0xed,0x20,0x53,0xd5,0x69,0x83,0x83,0x21,0x7e,0x26,0xd8,0xf9,0x4f,
- 0x27,0x85,0x4a,0xa2,0xaf,0xaf,0x6a,0xd8,0xec,0xc3,0xd0,0xb5,0x95,0xf3,0x75,0x21,
- 0xed,0xac,0x41,0x61,0xd6,0xa8,0xe5,0x3f,0xab,0x75,0xbb,0xf8,0x6d,0x0f,0x70,0xa5,
- 0xcc,0x3f,0x1b,0xdc,0xdb,0x59,0x7e,0x5e,0xcf,0x7f,0xea,0x57,0x25,0x57,0xee,0xdb,
- 0x9c,0xae,0xa4,0xfe,0xf5,0xe4,0x29,0xf8,0xbe,0x76,0xde,0x2d,0xa2,0x2a,0xc6,0xb8,
- 0x9e,0x30,0x79,0x8d,0x2e,0xc9,0x3a,0x67,0x7a,0xbf,0x43,0xfe,0x37,0x02,0xe9,0x6b,
- 0x9d,0x55,0xc3,0xb2,0xf1,0x1e,0xe6,0x23,0xff,0x0c,0x17,0x53,0xd7,0xee,0xd6,0x0d,
- 0xec,0x5c,0xa5,0xa6,0x81,0x92,0xc6,0x3e,0xb2,0x7d,0x1c,0x79,0x1b,0x69,0x27,0xda,
- 0x33,0x0c,0xda,0x7e,0x1f,0xaa,0x1a,0xdf,0xad,0xf7,0xfd,0xa0,0x64,0x73,0x7a,0x33,
- 0xad,0xed,0x11,0xa3,0x89,0x72,0x46,0x7c,0xd5,0x95,0x4f,0x90,0xf3,0x92,0xe9,0x9f,
- 0x49,0xcd,0x65,0xa3,0x31,0xf2,0xb0,0xfc,0x7d,0xe6,0xbb,0x1b,0xc9,0x94,0x95,0xff,
- 0x9c,0x92,0x7a,0x21,0x90,0x11,0x81,0x7c,0x01,0xb1,0xc0,0x89,0x6b,0x88,0x98,0xfe,
- 0x39,0x50,0x36,0x85,0xf0,0x57,0xa7,0xfa,0x97,0x3a,0x1e,0x23,0x1f,0xa0,0xde,0x74,
- 0x65,0xbe,0xf8,0x9e,0xe9,0x67,0x68,0xfc,0x0f,0x12,0xe1,0x27,0xd1,0x65,0x11,0x64,
- 0x49,0x58,0xbd,0x03,0x85,0xbc,0xd1,0xc7,0xc5,0xae,0x8b,0xef,0x72,0x21,0xfc,0x51,
- 0x77,0x00,0x4e,0x69,0x7b,0x4c,0xce,0x1a,0xcf,0x53,0x85,0xaf,0xe2,0xf3,0x76,0xa3,
- 0x19,0xed,0x4e,0x5c,0x9f,0x46,0x9c,0xa6,0x0d,0xbb,0x50,0xa8,0x86,0xbf,0x62,0x14,
- 0x2a,0x45,0x02,0xb4,0x57,0x3b,0x44,0xe9,0x36,0x7d,0x57,0x84,0xea,0x23,0xdd,0x10,
- 0xa7,0x9a,0x2e,0x7e,0x56,0xb3,0xf5,0x33,0xa6,0x7f,0x2a,0xe2,0x57,0x07,0xde,0x85,
- 0xd0,0x11,0x47,0x0a,0xf5,0xad,0x5e,0x9f,0xe6,0x4d,0xde,0xba,0x7b,0xfe,0x14,0xcc,
- 0x4a,0xcd,0x5d,0xae,0x23,0xfc,0x65,0xa3,0xae,0xfd,0x68,0xb6,0xd2,0xd4,0xda,0x17,
- 0x30,0x7c,0x0d,0x9e,0xab,0x53,0xf9,0x10,0x1c,0xe3,0xea,0xb3,0x81,0x99,0xbc,0xfa,
- 0xd1,0x05,0x89,0x95,0xdd,0x31,0xbe,0xa7,0x71,0xd3,0x1c,0x40,0x81,0xac,0x64,0x21,
- 0xc7,0x3f,0xd9,0x51,0x44,0x3b,0x52,0x09,0xa9,0xdb,0xd6,0x7e,0x44,0x0c,0x16,0xcc,
- 0x39,0xff,0x49,0x6b,0x46,0x06,0x20,0x42,0x9d,0x5b,0x68,0x31,0x12,0xbf,0x1c,0xff,
- 0x44,0x7b,0x5e,0x3a,0xd6,0x78,0x66,0x7b,0xc6,0xe1,0x23,0x47,0x68,0x03,0x3b,0xd0,
- 0x69,0xd6,0x8f,0xa6,0x35,0xfd,0x7e,0x50,0x5d,0x7d,0xbd,0xfb,0x17,0xd2,0x0d,0xb8,
- 0x4b,0x3b,0xff,0x69,0xd5,0x8f,0xd0,0xc4,0xde,0x90,0xea,0xdc,0xef,0xa8,0x84,0xb7,
- 0xe5,0xd0,0xb0,0x2b,0x77,0x7e,0xe9,0x8c,0x2d,0x20,0x1e,0x52,0x14,0x8c,0x39,0x76,
- 0x36,0xcf,0xd0,0xf8,0xca,0x4c,0xde,0xf9,0xf9,0x55,0x30,0x08,0x69,0x75,0x91,0x44,
- 0x04,0x78,0xfa,0xa1,0x6d,0x4c,0xbf,0x77,0x18,0xf6,0x64,0xfa,0xfd,0x95,0x74,0x55,
- 0xf6,0xd6,0xdb,0x12,0x07,0x94,0xcd,0xbb,0x17,0x4d,0x3a,0x66,0x0a,0xa2,0x46,0x5f,
- 0x14,0xf5,0xd1,0xc5,0xb4,0x9c,0xbd,0xf7,0x36,0x87,0x1d,0xde,0xa2,0x4d,0x59,0xd7,
- 0x8b,0xfc,0x1a,0x4b,0xbf,0xef,0x51,0x5e,0x2c,0x59,0x3e,0x56,0xfc,0x2c,0x7f,0xa6,
- 0xed,0x2a,0x87,0x5c,0x78,0x6f,0xbe,0x7e,0x17,0xae,0x32,0x5c,0xca,0x38,0x64,0x78,
- 0x1d,0x06,0xd5,0xd5,0x0d,0xad,0x24,0xa7,0xdf,0x3d,0x2c,0xff,0x29,0x4a,0x05,0x3b,
- 0xdd,0x9b,0xf5,0x64,0xbc,0xdb,0xd2,0x32,0xdf,0x41,0xda,0xf9,0xb5,0x20,0x74,0x92,
- 0x10,0x74,0xd3,0x75,0xd9,0xdb,0x3b,0xad,0x1c,0x12,0x8b,0xef,0x83,0x10,0x58,0xeb,
- 0x3f,0x44,0x06,0x8c,0x62,0x03,0xb9,0xcd,0xe4,0x9f,0x25,0x03,0xf0,0x09,0x34,0x67,
- 0x9c,0x53,0x8e,0x7b,0xe8,0x49,0xbd,0x90,0xd4,0x98,0x57,0x3f,0xd2,0x61,0xb3,0x3b,
- 0x2b,0xeb,0x42,0x9e,0x9f,0x53,0x7f,0x87,0x70,0xfb,0xaa,0x3e,0x9e,0xe5,0x3f,0x1f,
- 0x67,0x40,0x7a,0xd3,0xf9,0x4f,0xe5,0x0f,0xfb,0xe4,0x6a,0xa1,0x4b,0x68,0x57,0xc4,
- 0x9b,0xea,0xef,0x50,0x17,0x13,0x0f,0x90,0x00,0xc1,0xa0,0x15,0xbd,0xf9,0xfc,0x12,
- 0x45,0xa8,0x7a,0x06,0x6d,0xdd,0x85,0xbc,0xce,0x9f,0x57,0x7f,0x2f,0xd2,0x53,0x08,
- 0xce,0x4d,0x8e,0xca,0xc8,0xe8,0x83,0x3e,0x6e,0xae,0x7e,0x87,0xff,0xc6,0x2d,0x57,
- 0x5c,0x3f,0xe5,0xdf,0x80,0x1b,0x52,0xb3,0xb2,0x78,0xae,0x7e,0x3f,0x05,0xac,0xfe,
- 0xde,0x5b,0x0d,0x4f,0x79,0xeb,0x95,0xd5,0xe3,0xfc,0x49,0x4b,0xbf,0xc7,0x35,0xd8,
- 0xec,0x49,0x46,0xfc,0x64,0xab,0x5c,0x73,0x13,0x7e,0xb2,0x3c,0x99,0xd2,0xee,0x4e,
- 0x08,0xbb,0xb6,0xc8,0x1a,0x17,0xce,0xaf,0x1f,0x6d,0x81,0x62,0xc5,0x9f,0xd1,0xce,
- 0x59,0xd5,0x28,0xb7,0xcf,0xd1,0xef,0xc2,0xb1,0x3f,0xaa,0x88,0x6c,0x4b,0x15,0x2e,
- 0x94,0x8e,0xc5,0x06,0x5b,0x56,0xe7,0xe1,0x27,0xd7,0x4f,0x0e,0x31,0xd8,0x7c,0xbe,
- 0xea,0x7d,0xf8,0x15,0xf5,0xa3,0x19,0x25,0x24,0x39,0xe9,0x17,0x71,0xa1,0xca,0xa0,
- 0xe0,0xcc,0x3f,0xff,0x29,0x0a,0x2f,0xb7,0x2c,0xda,0x62,0x9f,0x70,0xfb,0xe1,0x00,
- 0x54,0xa5,0x0a,0xe6,0xea,0xf7,0xbd,0xb2,0x9f,0x8a,0x83,0x8c,0x7f,0x52,0xf9,0xf4,
- 0x96,0x5c,0xfd,0x28,0xcd,0x95,0xc3,0xc1,0xe4,0x62,0x6a,0x8f,0x93,0xf2,0xfb,0xf6,
- 0x8b,0x95,0xe7,0xde,0xca,0xd5,0xdf,0x07,0xc4,0x0a,0xf8,0x31,0xbd,0x3b,0xbb,0x6a,
- 0x6d,0xd5,0x3b,0xf0,0xdf,0xe9,0xc6,0xac,0xad,0x93,0xcf,0xab,0x1f,0x31,0xda,0xa9,
- 0x3a,0xfe,0x86,0x9f,0x92,0x67,0xc0,0xc3,0xce,0x87,0xe4,0xeb,0xf7,0xe7,0xd2,0x0d,
- 0xfd,0x5f,0xf8,0x09,0xff,0x58,0xdb,0x6b,0xcf,0x86,0x26,0x9d,0x0d,0x2b,0xbd,0x26,
- 0xd6,0x71,0xdf,0x19,0x19,0x1c,0xaf,0x4c,0x8b,0x35,0xa4,0x4e,0x7e,0x32,0x2d,0xf7,
- 0xfb,0x1b,0xed,0x35,0x96,0x7e,0xdf,0x09,0x7f,0x21,0x2e,0x3a,0xe3,0x28,0x21,0xe5,
- 0x9b,0x76,0x70,0x9f,0x57,0x1d,0x8f,0x13,0x6a,0xe6,0x3f,0x99,0x7f,0x72,0xb2,0x5a,
- 0xb8,0x88,0x38,0x0b,0x12,0xb0,0x10,0xd0,0x3f,0x53,0xa6,0x7e,0x2f,0xd1,0xce,0xcd,
- 0x8c,0xef,0x18,0xa8,0x59,0x0e,0xc7,0xd3,0x07,0x94,0x3f,0xcc,0xf0,0x2f,0xe4,0xce,
- 0x7f,0xc2,0x95,0xf5,0x61,0xb5,0xb8,0x1f,0xf1,0x73,0x46,0x69,0x54,0xc4,0x0c,0xd7,
- 0x6e,0x9e,0xa1,0x93,0xae,0x73,0x37,0xa0,0x5e,0x79,0x20,0x66,0x6b,0x92,0x4f,0xc2,
- 0xe7,0xe3,0xce,0xe9,0x56,0x35,0xaf,0x7e,0xb4,0x57,0x4d,0x77,0x6e,0xef,0xbf,0x2d,
- 0x00,0x54,0x59,0x16,0x2f,0x9a,0x7b,0xfe,0xf3,0x10,0xf5,0xc5,0xa3,0xec,0x7b,0x84,
- 0x17,0x94,0xba,0xa8,0x88,0xf8,0x59,0x62,0xf8,0xa7,0xc7,0x09,0x43,0x1e,0xdf,0x4a,
- 0x7b,0x95,0xfd,0x29,0x92,0x40,0xc7,0xb9,0x35,0x4f,0xbf,0xdb,0x36,0x28,0x87,0x94,
- 0xd0,0x5a,0xe7,0xe9,0x82,0x97,0x92,0xe7,0xe5,0xf0,0x1a,0xe7,0x01,0x5e,0x9d,0x67,
- 0xe8,0xf7,0x07,0xa7,0x94,0x99,0x78,0x73,0xa4,0xf8,0xfd,0xd2,0x3f,0x53,0xae,0x96,
- 0xdf,0x69,0x77,0x7d,0x9c,0x77,0x7e,0x7e,0x1a,0x35,0x60,0x3d,0xb8,0x54,0xbe,0x03,
- 0xc6,0x58,0x00,0x1d,0xe7,0x83,0x29,0xe3,0xfc,0x92,0xf7,0x3c,0xf4,0x50,0x9f,0xec,
- 0xe8,0x21,0x3e,0x6c,0xd4,0xc8,0xf6,0x3e,0x12,0x34,0x6b,0xde,0x90,0x86,0x5d,0x44,
- 0x86,0x95,0xe0,0xd3,0x41,0xbf,0x30,0x48,0x42,0xc6,0x5e,0x51,0x85,0x01,0x3f,0xca,
- 0x76,0x74,0x67,0x0c,0x5e,0xe8,0xe0,0x82,0x3d,0xe3,0x36,0xc7,0x71,0x65,0xe7,0xd8,
- 0xe7,0x43,0xf1,0xd5,0x19,0xc7,0x42,0x72,0x8c,0x2e,0x8b,0xa3,0x9f,0x81,0x11,0x57,
- 0xb2,0x5c,0x1f,0x7c,0x0c,0xcd,0xeb,0x11,0x36,0x3f,0x56,0xfe,0x39,0xd5,0x18,0x77,
- 0x29,0x8e,0x1c,0xff,0xdc,0x25,0x5f,0xf3,0x84,0x14,0x67,0x90,0x17,0x84,0x37,0x49,
- 0x50,0x09,0xa4,0x79,0x8f,0x75,0x7e,0xa9,0xa6,0xaf,0x37,0xe1,0x53,0xc4,0x21,0x56,
- 0xd3,0x40,0x4d,0x89,0x81,0xbe,0x91,0x82,0x31,0x97,0x7b,0x49,0x86,0xca,0x54,0xe4,
- 0x50,0xe1,0x3d,0x03,0xd8,0x90,0x48,0x83,0xd1,0x17,0x97,0xbe,0x0c,0x94,0xca,0x69,
- 0x51,0x24,0x2f,0x8a,0x09,0xf6,0xfd,0x91,0xb7,0x20,0x9c,0xd4,0xfb,0xa2,0xe2,0x0a,
- 0xf8,0x88,0x06,0x69,0x80,0x73,0x0c,0xc0,0x69,0xc8,0xa4,0x9d,0x4b,0x1c,0xb7,0x99,
- 0xfa,0xbd,0x6c,0x9b,0x7a,0x45,0x0e,0x27,0xe7,0x51,0xae,0x5d,0xb9,0x8a,0xba,0xc3,
- 0x75,0xa8,0x75,0xdc,0xd2,0x6a,0xfd,0xce,0x61,0x08,0x65,0xd9,0x67,0x16,0xec,0xfb,
- 0x23,0x15,0x31,0x6b,0xd8,0x38,0x03,0x12,0x15,0xb7,0xc1,0x93,0xb0,0x4b,0x15,0xf5,
- 0xfa,0x3b,0xe2,0xa7,0x42,0x4c,0xae,0x28,0xc3,0x5f,0x92,0xcd,0x7a,0xd9,0x08,0x35,
- 0x10,0xe3,0xc2,0xed,0x56,0xfe,0xb3,0x5d,0xd8,0x86,0x3f,0x92,0xc7,0xc5,0x26,0x56,
- 0x7f,0x57,0xe4,0x33,0x8e,0x7e,0x0b,0x0b,0x26,0xcb,0x46,0xc9,0x71,0x94,0xed,0x81,
- 0x17,0xf8,0x9f,0xa3,0xf0,0x1b,0x4c,0xb9,0xb2,0x39,0xfe,0xa9,0xd7,0x8f,0x88,0x8e,
- 0x9f,0x62,0x13,0xec,0x50,0xbb,0x2d,0xfe,0x89,0x7c,0xfe,0x1c,0xab,0x33,0xbb,0xf9,
- 0x6a,0x0d,0x0b,0x56,0xa5,0x4a,0x89,0x64,0xbe,0xbf,0xf5,0x9a,0x19,0x1d,0x7d,0x3e,
- 0x5d,0xac,0x23,0x46,0xca,0x46,0xae,0xa4,0xc1,0xb6,0x14,0x7e,0x28,0x57,0x29,0x8e,
- 0x71,0xb2,0x14,0xd8,0xf7,0x47,0xe2,0x38,0x31,0xb6,0x2d,0xf2,0x2c,0x0f,0xdd,0x24,
- 0x57,0x46,0x1d,0x6b,0x88,0x87,0xfe,0x58,0xae,0x8d,0x8a,0xa7,0xed,0xe6,0xf7,0x47,
- 0x33,0xf3,0x59,0xfe,0x93,0xd5,0xa7,0x1d,0x5a,0x7e,0x10,0xa3,0x3f,0xbf,0xcc,0x18,
- 0xd7,0x33,0x7f,0xe2,0xa1,0x2b,0x9e,0x70,0x9b,0xeb,0xe9,0xd6,0x89,0x98,0xde,0xe0,
- 0xdf,0x13,0x4c,0xfc,0x7c,0x83,0xbe,0x2e,0x87,0x23,0xae,0xd3,0xdd,0x13,0x70,0x9f,
- 0xd8,0x8c,0x98,0xd5,0xed,0x23,0xb9,0xfa,0xd1,0x56,0x46,0x3b,0x93,0x91,0x2c,0xf3,
- 0xb3,0xb2,0xde,0x24,0x79,0xd2,0xd2,0xef,0x9b,0xa0,0xab,0x2d,0xa0,0xf0,0x12,0x79,
- 0xd5,0xd3,0xc5,0x69,0xfc,0xf3,0x36,0x63,0xed,0x7d,0x42,0x3f,0xd1,0xa9,0x73,0x44,
- 0x3f,0x43,0xd0,0x9b,0x22,0x3f,0x32,0xf9,0x27,0xcb,0x7f,0xea,0x47,0x3b,0xd9,0x01,
- 0x05,0x6c,0xf4,0xf1,0x7e,0xcb,0x9e,0x49,0xe1,0x0a,0x67,0xe5,0x3c,0xb0,0xf1,0x0c,
- 0x6f,0xf2,0x4f,0x56,0x3f,0x3a,0xa3,0x0c,0xb2,0xb2,0x11,0x2e,0x96,0x60,0xac,0x02,
- 0x9e,0x98,0xdf,0x26,0xd9,0xee,0x86,0xad,0x5d,0x3e,0x2a,0x0e,0xb0,0x1c,0x35,0xd4,
- 0x51,0x47,0x96,0x8f,0x98,0xfc,0x53,0xb8,0x8f,0x3e,0x9b,0x42,0xfe,0x79,0xb7,0x4f,
- 0xcb,0x7f,0xaa,0x2b,0x65,0x62,0x8e,0xa3,0xd2,0x5a,0xd0,0x7d,0xa2,0xa0,0x9c,0xd3,
- 0xc4,0xb3,0x4c,0x14,0xc5,0xb0,0x59,0xcf,0xef,0xc0,0xdf,0xa3,0x9b,0x38,0x3b,0x1d,
- 0x86,0x90,0x6f,0xe7,0xcd,0xa3,0x46,0x62,0xd9,0x80,0x70,0x8d,0x43,0x0a,0x15,0xe4,
- 0xa7,0xc4,0x3f,0xd5,0xce,0x55,0x5a,0xb9,0x6d,0xc5,0xf6,0x42,0xc4,0x90,0x99,0x9f,
- 0xc0,0x6c,0x6a,0x79,0x56,0x9c,0xe4,0xc7,0x8d,0x81,0x2f,0xdc,0xba,0x55,0xdd,0x2c,
- 0x6b,0x47,0x93,0xce,0x6a,0xf9,0xf9,0xbe,0x47,0x42,0xe7,0x8d,0xfd,0x27,0x41,0x5f,
- 0x6a,0xb3,0x50,0xab,0xf6,0x76,0x90,0x87,0xe1,0x60,0x41,0xad,0x2a,0xae,0x77,0x4f,
- 0x50,0xd3,0x3f,0xb7,0x6a,0x12,0x74,0xa5,0x9e,0x83,0x60,0xdf,0x1f,0x85,0x2c,0x3d,
- 0x56,0xf6,0xde,0x02,0x43,0x66,0x6e,0xd0,0x92,0x0a,0xce,0x3d,0x7f,0x67,0xf2,0xcf,
- 0x14,0x37,0x80,0x3f,0x6a,0xd2,0xeb,0xef,0x97,0x70,0xc2,0x8b,0xd3,0xf3,0xfe,0xd1,
- 0x7c,0x0f,0x52,0x4a,0x3a,0x95,0x46,0xfd,0xde,0xc1,0x97,0x3b,0x4f,0x91,0x25,0xaa,
- 0x98,0x2d,0x9d,0x34,0xe6,0xb2,0x0b,0x43,0x3a,0xca,0x61,0xa6,0xd1,0x03,0xc8,0x3f,
- 0x7d,0x47,0x8a,0xd2,0x6b,0x66,0xda,0xf4,0xb5,0xd3,0x16,0x39,0xd8,0x0b,0xff,0x45,
- 0x8d,0xee,0x2d,0x08,0x68,0x67,0x19,0xb5,0xf3,0x9f,0x86,0x5d,0x3c,0x4e,0x59,0x3f,
- 0xbe,0x82,0xbc,0x15,0xb5,0xe8,0x78,0xaf,0xec,0xce,0xe5,0x3f,0xd7,0x25,0x7a,0x95,
- 0x46,0x35,0x90,0xe1,0x03,0x02,0x3b,0x40,0x53,0x9c,0xe6,0xcd,0x9c,0x40,0xba,0xec,
- 0x6c,0xfa,0x86,0x1f,0x69,0xe7,0x38,0xaf,0x7f,0xd7,0xf3,0x54,0x96,0xcf,0x26,0x4d,
- 0xfc,0xbc,0x00,0x33,0x05,0xf5,0xba,0x3d,0xaf,0x41,0xbd,0xea,0xcc,0xff,0xfe,0xe8,
- 0x02,0x0c,0x15,0xb0,0x63,0x9f,0xca,0x05,0x78,0x85,0x7e,0x4f,0x15,0xe7,0x7c,0x7f,
- 0x04,0x19,0xa2,0x7d,0x76,0x34,0xe6,0x65,0x87,0x67,0xc5,0xb9,0xdf,0x1f,0x0d,0xe9,
- 0x32,0x7a,0x8a,0x1d,0x5e,0x67,0x0b,0x9d,0x36,0xf2,0x36,0x8c,0x7f,0xce,0xe8,0x69,
- 0xcf,0x29,0xf1,0x1a,0x09,0xb1,0x09,0xe7,0xd5,0xdf,0x3d,0x9f,0x1c,0xd5,0x8f,0x7d,
- 0x7a,0xb5,0xda,0xcb,0xdc,0xfc,0xe7,0x01,0x39,0x64,0xd8,0x1a,0x79,0x9d,0x7f,0x4e,
- 0xfd,0x1d,0xdd,0x52,0x4b,0x7b,0x4e,0x09,0x48,0x28,0x8f,0x88,0x99,0x48,0xde,0xf9,
- 0x25,0x29,0xa3,0x68,0x67,0x7b,0xf1,0xdd,0x26,0x31,0x48,0xe6,0xbe,0x3f,0x8a,0xb7,
- 0x54,0xc0,0x81,0xcc,0x2e,0x26,0x95,0xdf,0xa1,0x07,0x53,0x95,0x53,0x85,0xf9,0xdf,
- 0x1f,0x15,0xab,0x57,0xd2,0xc1,0xec,0x8e,0x06,0xfe,0xa4,0x72,0x29,0x15,0xcc,0x16,
- 0xe5,0x7f,0x7f,0xc4,0xce,0xcf,0x37,0x33,0xda,0xa9,0x25,0x70,0x8e,0x14,0xe7,0x7f,
- 0x7f,0x84,0x31,0x55,0x1c,0x34,0xce,0x64,0xc8,0xa1,0xd1,0x40,0xfe,0xf7,0x47,0xe5,
- 0x82,0x7e,0xec,0xd3,0x7d,0x56,0x7c,0x25,0xe6,0x7f,0x43,0x9c,0xf3,0xfd,0x11,0x32,
- 0x6f,0x2d,0x85,0xf0,0x0e,0x92,0xe2,0x05,0x93,0x22,0xfb,0xfe,0x48,0x5f,0x9f,0x96,
- 0x5f,0x3a,0x22,0x9b,0x39,0xb2,0x3a,0x66,0xeb,0xfc,0xef,0x8f,0xae,0xd2,0x90,0x7e,
- 0x7e,0xe9,0x22,0x2c,0x63,0xf5,0xf7,0x39,0xdf,0x1f,0x55,0x5a,0xdf,0x1f,0xdd,0x94,
- 0xff,0x9c,0x80,0x6b,0xca,0xa0,0xb2,0x3a,0xd5,0x3a,0xe1,0xd1,0xbf,0xb3,0x69,0x9d,
- 0xc3,0x3f,0x61,0xb7,0xf2,0x57,0x5a,0x8e,0x53,0x62,0xe7,0xe7,0xf9,0x74,0x5e,0xfe,
- 0x73,0x2f,0xa9,0x51,0x56,0x22,0xf6,0x70,0x87,0x14,0x8c,0x55,0xa9,0x48,0x3e,0xff,
- 0xdc,0x27,0x6b,0xc7,0x3e,0x47,0x90,0x54,0xc9,0x51,0xe4,0x9f,0x89,0xbc,0xfa,0xd1,
- 0x74,0x8c,0x51,0xc4,0xd6,0x2c,0x74,0x42,0xc8,0xe3,0xcc,0xe5,0x3f,0xfb,0xb4,0xf3,
- 0xf3,0xcb,0x10,0xcf,0x18,0x2e,0x49,0xe1,0xb6,0x1d,0x29,0xfe,0x6f,0x8c,0xfc,0x27,
- 0xab,0xbf,0xdf,0xf0,0xb3,0x73,0x56,0xd8,0x77,0x43,0xd4,0x0e,0x16,0xe5,0xbe,0x3f,
- 0xca,0xc2,0x50,0x7c,0x10,0xef,0xe9,0x63,0x89,0x50,0xdf,0xfc,0xde,0x39,0xdf,0x1f,
- 0xc1,0x5e,0xa7,0x46,0x3b,0x47,0xa4,0xbd,0x20,0x47,0x1c,0x79,0xdf,0x1f,0x21,0xff,
- 0x3c,0x14,0x5f,0x38,0x37,0x87,0x9b,0xf7,0xfd,0xd1,0x15,0x45,0x3f,0x2f,0x25,0x5c,
- 0x81,0x41,0xed,0xfc,0xa7,0xf5,0xfd,0x51,0x3f,0x5c,0x11,0x1a,0xf3,0xf0,0x93,0x7d,
- 0x7f,0xa4,0x8f,0x33,0xf8,0xa7,0x66,0x6b,0xef,0x8c,0x26,0xe4,0xe7,0x7c,0x7f,0xf4,
- 0x72,0x0f,0xd3,0x9b,0xee,0x49,0x38,0x90,0xf2,0xd1,0x9b,0xea,0xef,0x87,0xa9,0xf1,
- 0x6e,0x07,0xb1,0xd1,0x93,0xcb,0x7f,0x32,0xfe,0x79,0xc0,0x3c,0x33,0x74,0x40,0xac,
- 0x9c,0x14,0x3b,0xdc,0x79,0xdf,0x1f,0xc1,0x2c,0x3b,0xbf,0xc4,0xf2,0x9f,0x97,0x92,
- 0xf5,0x33,0x81,0xce,0x39,0xe7,0xe7,0xaf,0x02,0x3b,0x4e,0xa9,0xf9,0xe7,0xcb,0x6f,
- 0xcd,0x39,0xbf,0x74,0x01,0x6e,0xd0,0x30,0xee,0xf7,0x79,0xfa,0xf7,0x86,0xb8,0xdf,
- 0xf3,0xbe,0x3f,0xa2,0xfb,0xd3,0x81,0x49,0x47,0xe3,0x2d,0x27,0xe1,0x60,0x56,0x9e,
- 0x14,0x1b,0xad,0x6f,0x85,0x90,0x7f,0xd2,0x83,0x0c,0x5b,0x1f,0x77,0x9f,0xa5,0x07,
- 0x25,0x79,0x54,0x7c,0xdc,0x8a,0xef,0x1a,0xff,0xa4,0x7a,0x0e,0x57,0x60,0x07,0x84,
- 0xe6,0x7c,0x7f,0xb4,0x87,0x1d,0x01,0xd0,0xf7,0xfb,0x47,0xb0,0x8f,0xed,0x77,0xf3,
- 0x9e,0x29,0xe4,0x9f,0x48,0x3f,0x8c,0xbd,0xd2,0xc2,0x3e,0x4a,0xb4,0xf2,0x9f,0x94,
- 0xd5,0xdf,0x49,0xbd,0x71,0xee,0x89,0xe1,0xd2,0xdc,0xef,0x8f,0x5e,0x54,0x7c,0x47,
- 0x7a,0x33,0xbe,0x29,0xe1,0xb0,0xca,0xea,0xef,0xbe,0x7c,0xfe,0x99,0x51,0x16,0x1a,
- 0xd8,0x43,0x65,0x75,0x6e,0xfd,0x5d,0xcd,0x04,0xe5,0x31,0x76,0xe6,0xb2,0x6b,0x5f,
- 0x95,0x3c,0x3a,0x19,0xb4,0xce,0xcf,0xd3,0xa2,0x0d,0xe9,0x6b,0x10,0x1a,0x75,0x1d,
- 0xec,0xfe,0x30,0x73,0xcd,0x5d,0x3f,0xee,0x3c,0x58,0x6a,0xd5,0xdf,0xe7,0x5f,0x4f,
- 0x5e,0x8d,0x37,0x8f,0x9d,0x1a,0x6c,0x9d,0x4a,0xcf,0x06,0xc3,0x27,0x5d,0x83,0x56,
- 0xfe,0x13,0xd4,0x16,0x5b,0x87,0x72,0x56,0xfa,0x9c,0x60,0x7b,0x95,0xdb,0xb8,0xe5,
- 0xe1,0xe8,0x97,0x84,0xf9,0xaa,0x3e,0x4d,0x80,0x57,0xdb,0x6c,0x1b,0x61,0x55,0xcb,
- 0xe7,0xa4,0xb2,0xa3,0x05,0x72,0xb0,0x7c,0x55,0x95,0x64,0x53,0x97,0xc4,0x8c,0x71,
- 0x11,0x0e,0xc9,0x9c,0xec,0x16,0x85,0x27,0x5b,0xe4,0xfd,0xd1,0x0d,0x44,0x14,0xa8,
- 0x71,0xde,0x14,0xf9,0x28,0x2a,0xc8,0xb5,0x70,0x0b,0xd8,0x68,0x65,0x47,0x61,0xd4,
- 0xee,0x96,0x6d,0xd4,0xba,0x67,0x94,0x7b,0x1c,0x1e,0xa6,0x9f,0x93,0x6d,0xa3,0x9b,
- 0xfe,0xb8,0xe1,0xbe,0xa5,0xee,0xf5,0x1e,0x6a,0xde,0xf3,0xd5,0x18,0xc4,0x39,0x2f,
- 0xac,0x80,0x12,0x0a,0xf1,0x07,0x45,0x21,0xc2,0x01,0x5d,0x62,0x8e,0x53,0x40,0xe6,
- 0x44,0x88,0x80,0x44,0x85,0x2a,0x4e,0xa4,0xac,0x61,0xf5,0x7d,0xb1,0x4c,0xe9,0x8a,
- 0xc9,0x0f,0x89,0x65,0x3c,0x17,0xc9,0x2a,0x93,0x92,0xb7,0x0c,0x4a,0x8c,0x7b,0x52,
- 0x27,0xf7,0x39,0x68,0x51,0xa5,0x0e,0xc1,0xc9,0xdd,0x29,0xb7,0xac,0x95,0xbe,0x21,
- 0x40,0xa5,0x31,0x8e,0x2a,0x02,0x9b,0x31,0xb3,0xae,0x70,0x2b,0x67,0x8f,0x22,0x41,
- 0xe5,0x8c,0xfa,0x11,0xbc,0x1a,0x27,0x5e,0x2e,0x81,0xbf,0x83,0xce,0xee,0x05,0x22,
- 0x41,0xd2,0xcb,0x99,0xf3,0x3c,0x12,0xe3,0xd6,0xc3,0x7d,0xb0,0x46,0x29,0xa7,0xb6,
- 0xf5,0xdc,0x7d,0xa8,0x7e,0x1f,0xa2,0xe6,0x3d,0x5f,0x85,0x42,0xb6,0xf6,0x65,0x50,
- 0x44,0x39,0x56,0x2e,0x5d,0x83,0x46,0xb0,0xe6,0x19,0x29,0x08,0x76,0x39,0x65,0x5e,
- 0x04,0x74,0x67,0x34,0x1e,0xd2,0x11,0xcb,0x9e,0x49,0x31,0x16,0x62,0xa2,0x8f,0x65,
- 0x07,0x65,0x41,0x64,0x7f,0x23,0x41,0xb5,0xec,0xe9,0xe0,0x42,0xea,0x2a,0x2d,0x32,
- 0x72,0x41,0x1a,0x45,0xa3,0xb7,0xa9,0xb2,0x79,0xcf,0xd6,0x05,0x71,0x35,0x1a,0xbc,
- 0xc5,0x29,0x74,0xdb,0x3a,0xb4,0x3e,0x5b,0xce,0x9e,0x11,0x78,0xbc,0x4b,0x94,0x57,
- 0xf8,0x25,0xb4,0x27,0xa0,0xf1,0xc4,0x3c,0x9b,0xad,0x11,0x16,0x76,0x15,0xa6,0x23,
- 0xed,0xd2,0xf3,0x42,0x35,0x2d,0x0c,0x46,0xa2,0x79,0x7d,0xf8,0x16,0xb8,0x08,0xc4,
- 0xa8,0x47,0x36,0x1b,0x60,0xde,0x93,0x16,0x70,0x2d,0x34,0x16,0xf7,0x78,0x6d,0x05,
- 0xdc,0x7d,0x94,0xc4,0x25,0xaf,0x79,0x02,0x19,0xfb,0xdc,0x36,0x01,0x09,0x80,0x14,
- 0x15,0x9e,0x31,0x1a,0xa6,0x44,0xc0,0x7b,0xae,0xe0,0x1f,0xa4,0x6f,0xc4,0xff,0xd8,
- 0x3b,0x9f,0x35,0x70,0x3a,0x5e,0x50,0xac,0x79,0xae,0x28,0xdc,0xd8,0x75,0x36,0xfe,
- 0x25,0x6f,0xd9,0x51,0x5b,0x47,0xd7,0xc3,0xf2,0x7f,0xf5,0x96,0x59,0x73,0xb9,0x37,
- 0xc2,0x6d,0xa4,0x67,0xe3,0x77,0x79,0x8b,0x8e,0x72,0x1d,0xf4,0x6c,0xe5,0x5d,0xe2,
- 0x7c,0xb5,0xc4,0xec,0x5b,0x51,0xb0,0x84,0x3a,0xe3,0xf3,0xbc,0xca,0xd1,0x82,0x3f,
- 0xa6,0x45,0xf1,0x2a,0xaf,0x48,0xcd,0xf7,0x0e,0x84,0x7b,0x84,0xf9,0xa7,0x1f,0xb6,
- 0xa2,0xa3,0x3a,0xe5,0x5b,0xd0,0x3f,0x8d,0x7d,0x04,0x50,0xc0,0x55,0x25,0xa3,0xd3,
- 0xee,0x06,0x61,0x3b,0x57,0x49,0xd7,0xc6,0xdd,0x5e,0xec,0x33,0xef,0xa9,0x94,0x75,
- 0xc0,0x2a,0x28,0x05,0x41,0xb5,0x75,0xc8,0x51,0xc2,0x1a,0xe6,0x3d,0xef,0x8d,0x40,
- 0x1c,0xed,0x89,0x66,0x4c,0x40,0x3c,0x2d,0xfa,0x89,0x5d,0xa2,0xd6,0x5c,0x22,0x82,
- 0xdc,0xe5,0x95,0x57,0x88,0x25,0x09,0x01,0x37,0x06,0xf6,0x95,0xe4,0xf5,0x55,0x2a,
- 0x47,0x1e,0x0a,0xde,0xeb,0x2c,0x8b,0x70,0x4a,0x97,0x22,0xbb,0x9d,0x36,0x25,0x6f,
- 0x9e,0x31,0xfa,0x90,0x5c,0x26,0xda,0x22,0xd8,0x50,0xe4,0x12,0x71,0x93,0x39,0x4b,
- 0x96,0xb1,0x53,0x30,0x6e,0x15,0x40,0x8b,0x28,0x20,0x3e,0x08,0xc0,0x71,0x56,0xd7,
- 0xbd,0x11,0x22,0x77,0x51,0x39,0x2e,0x7a,0xdd,0x09,0x61,0x80,0x5b,0x08,0xa2,0xd7,
- 0xf2,0xf9,0x7b,0x95,0x79,0x71,0x65,0x2d,0xfc,0xb6,0x50,0xd6,0x75,0x6f,0xbc,0x04,
- 0x35,0x29,0x94,0x59,0x73,0x79,0x55,0xe1,0x82,0xa0,0x67,0x6a,0x5b,0x64,0xf9,0x4c,
- 0xd1,0x2d,0x50,0x6e,0xad,0x1d,0x0d,0x83,0xaf,0x8b,0xa2,0xeb,0xf5,0x2c,0x94,0xfd,
- 0x62,0x41,0x81,0x00,0xb9,0x3e,0x89,0x89,0x4c,0x20,0x0a,0xc2,0xde,0x02,0xa9,0x30,
- 0x4e,0x62,0x79,0x7d,0x02,0xb7,0x04,0xa2,0x8a,0x5b,0x12,0xfa,0xb9,0x45,0x70,0xbf,
- 0x52,0x5a,0xee,0x51,0xad,0xbe,0x2a,0x5b,0xbb,0xfa,0x3b,0xc1,0x5b,0xb6,0xd9,0x76,
- 0xdb,0xda,0xe9,0xfd,0x71,0xf7,0xce,0x92,0x39,0xf7,0xe4,0x0a,0x21,0xa2,0x48,0x29,
- 0xb8,0x53,0xd1,0x6e,0x9e,0xeb,0x13,0x85,0x78,0x89,0x57,0x58,0xc1,0x95,0xf4,0xb4,
- 0x05,0x25,0xb1,0x80,0x70,0x4f,0xe7,0xcd,0xb3,0x25,0x56,0xe2,0x11,0x7e,0x8b,0x2b,
- 0x53,0x5a,0xa4,0x12,0x45,0x78,0x90,0xb3,0xe5,0xd9,0xac,0x32,0x22,0x3e,0x94,0x28,
- 0x93,0x37,0x45,0x2b,0x23,0x7e,0x05,0x1b,0xc9,0xdc,0x30,0x3b,0x47,0xa8,0x92,0x96,
- 0xfc,0x60,0x5f,0x80,0x8d,0xdd,0x8a,0x3f,0xd7,0x05,0x4e,0xfe,0x41,0xee,0x39,0x15,
- 0xfd,0xb9,0x8d,0xff,0x22,0xcb,0x6b,0x06,0xbd,0x79,0xf7,0x9c,0x87,0x98,0x05,0x5f,
- 0x92,0xcb,0x46,0x6d,0x8f,0x97,0x3c,0x9c,0xf8,0x92,0xaf,0x2c,0xb7,0x3e,0x94,0xcf,
- 0xaa,0x14,0x44,0x74,0xa9,0x32,0x1b,0xb9,0x7b,0x36,0xcf,0xae,0x9e,0xfd,0xfb,0xd9,
- 0xcb,0xb3,0x37,0xac,0x06,0xfc,0xab,0xae,0x65,0x6f,0x3b,0x96,0x0d,0xbf,0x9e,0xd9,
- 0xb7,0x21,0xf0,0xae,0x3e,0x6e,0x2a,0xd7,0xf7,0xf9,0xa6,0x55,0xa7,0x4a,0xeb,0x47,
- 0xc6,0x3e,0xaa,0x6f,0xd6,0xfb,0x3e,0xca,0x7b,0x9e,0x37,0x7a,0xd4,0xbd,0x24,0xb9,
- 0x6d,0xdd,0x3d,0x66,0x23,0xd7,0x67,0x23,0x1b,0x95,0x9d,0xb1,0x79,0x9e,0xc2,0x57,
- 0x59,0xa3,0xe3,0x2e,0x4f,0x61,0x6e,0x0d,0xc2,0xbc,0x8d,0xdc,0xc3,0xb8,0xff,0x6c,
- 0x23,0x1c,0x36,0xf0,0x45,0x96,0xe4,0xfa,0x0a,0x70,0xfb,0x44,0x81,0xe1,0x3c,0xee,
- 0x95,0xe8,0x9c,0xbd,0x82,0x20,0xb5,0x0e,0xf7,0xf1,0x0a,0x89,0xd3,0x37,0x74,0x01,
- 0xe4,0xb0,0x00,0xdf,0xdf,0xe3,0xe8,0x5a,0xbf,0x29,0x73,0xa3,0x08,0x42,0xe5,0xb4,
- 0xd4,0x9f,0x77,0x4f,0x80,0x75,0x1c,0xfb,0x75,0xdc,0x2b,0x6c,0xdc,0x0a,0xe0,0x72,
- 0xf7,0xf4,0x08,0x0b,0xba,0x34,0x9f,0x78,0x4e,0x58,0xc8,0x15,0x2a,0x91,0x3f,0x92,
- 0x72,0x7d,0x55,0x10,0xed,0x72,0x83,0xd0,0x57,0xe2,0x13,0xee,0xe7,0xdc,0xf2,0xbd,
- 0x03,0x25,0xd6,0xd3,0x54,0x27,0xee,0x59,0x94,0x03,0x0d,0xe0,0x04,0x9e,0x22,0x1f,
- 0x0d,0x72,0x46,0x48,0xc5,0x9f,0xde,0x02,0x65,0xc0,0x65,0x85,0x98,0x72,0x8b,0x64,
- 0x63,0xb1,0x29,0xc6,0x19,0x61,0x1a,0xc7,0x29,0x88,0xed,0x2c,0x13,0xc5,0xe6,0x03,
- 0x3a,0x4e,0xe6,0xfa,0x84,0x38,0xc6,0x9c,0xdf,0x63,0x31,0x47,0x0f,0x3e,0x25,0x66,
- 0x1c,0x93,0x38,0xc5,0x13,0xb7,0x79,0x69,0x01,0x14,0xb2,0x31,0x7d,0xf8,0x4b,0x85,
- 0x09,0xe3,0x71,0x0a,0x62,0x81,0xd4,0xb5,0x4d,0x6e,0x15,0x25,0xa4,0xa4,0x1a,0xe0,
- 0x4b,0x26,0x86,0x28,0x78,0xfb,0x10,0x9b,0x22,0xc3,0xf9,0x20,0x63,0x59,0x8c,0x3b,
- 0x1b,0xe3,0x14,0x07,0x84,0x54,0x67,0xb0,0x95,0x65,0xe0,0x83,0xd4,0x99,0x69,0x15,
- 0x8d,0xbf,0xd2,0xc3,0xee,0xd9,0x0a,0x1d,0x48,0x4c,0x7e,0x5b,0xfb,0x0b,0x28,0x5d,
- 0xde,0x20,0x02,0x0d,0xb5,0xee,0x89,0xb8,0x84,0x58,0x87,0x8f,0xd1,0xb0,0x47,0x26,
- 0xa2,0xb5,0x8f,0x62,0x08,0xdf,0xec,0x47,0x2b,0xb4,0x3e,0x04,0xa8,0x88,0x68,0xed,
- 0x3f,0xe5,0x5e,0x3d,0xfe,0x71,0xa0,0x61,0x8b,0x07,0x9b,0x0f,0x46,0x8c,0x7b,0x46,
- 0x19,0xea,0x50,0x29,0x2e,0x78,0x39,0xbd,0x21,0x79,0x2d,0xbf,0x8e,0x2a,0xc4,0x06,
- 0x08,0x63,0x92,0x28,0x60,0x83,0x6a,0x0d,0xb0,0xe6,0xa9,0xe3,0xfc,0x9d,0xde,0x22,
- 0xd6,0x18,0x89,0x7f,0xd5,0x5b,0x94,0xc3,0xba,0x15,0xb0,0xb1,0xab,0x3c,0xfe,0xfb,
- 0xde,0x92,0xa3,0xc2,0xc6,0xae,0x55,0xf1,0xdf,0xf4,0x5a,0x3e,0xa1,0x70,0x2b,0x60,
- 0x09,0xdd,0x19,0xff,0x9c,0xf7,0xd6,0xa3,0x05,0x1b,0xbb,0x76,0xc6,0x3f,0xef,0xb5,
- 0xfc,0x33,0xa6,0xe1,0xbc,0x88,0xbf,0x1e,0x3d,0x0a,0x4b,0xba,0x1e,0xc6,0xc8,0x5c,
- 0x36,0x6c,0xae,0x9d,0x73,0x73,0xd5,0xf4,0x3e,0xb9,0x94,0x05,0x6f,0xd6,0x70,0x47,
- 0x05,0x13,0xe7,0x15,0x5c,0x43,0x25,0x8e,0x5b,0xe1,0x85,0x27,0xa1,0xb2,0xcb,0xcb,
- 0x22,0x3a,0x35,0xbe,0x2f,0x86,0x7b,0xe3,0x42,0x27,0x14,0xc3,0x6f,0x52,0x29,0x2b,
- 0x34,0x70,0xc5,0xe8,0x33,0xb9,0x77,0xc4,0xad,0x81,0xf5,0x5d,0x85,0x72,0x81,0x7e,
- 0xcf,0x42,0x39,0x12,0x45,0x3e,0x67,0xcc,0xd3,0x46,0x4c,0x33,0x26,0x84,0x47,0x74,
- 0xc0,0xb7,0xfa,0x30,0x3e,0x28,0x47,0x3c,0x32,0x42,0x40,0xab,0x10,0x53,0x3d,0x08,
- 0xf8,0x25,0x4a,0xde,0x3b,0xc2,0x30,0x1a,0xb4,0x89,0xf8,0x42,0xd6,0x60,0x60,0xb5,
- 0x39,0xd1,0x3f,0x8d,0x3e,0x41,0xc3,0x79,0xaa,0x19,0x51,0xd1,0x5f,0x86,0x69,0x6b,
- 0xbc,0x27,0x01,0xc4,0x79,0x59,0xf4,0x92,0x02,0x99,0x22,0xe0,0xfb,0x45,0xb0,0xe6,
- 0x09,0x05,0x8c,0x2f,0xfd,0x1e,0xba,0xa5,0x60,0x11,0x27,0xd3,0x9e,0xa0,0xe1,0xf5,
- 0x3c,0xc5,0x3b,0x4e,0xaa,0xe1,0x5b,0xf0,0x88,0x52,0x98,0x7b,0xef,0xf1,0x02,0x91,
- 0xb3,0xc3,0x0a,0x8a,0x32,0xdf,0x8f,0x6b,0xf7,0xe5,0xd6,0x1e,0x13,0x38,0xa8,0x8c,
- 0x89,0x31,0x52,0xc6,0xfe,0x94,0x4d,0xcc,0xf9,0x10,0xf1,0xa0,0x7f,0x9a,0xf6,0x6c,
- 0x03,0x1b,0x14,0x76,0xb4,0xc6,0x3c,0x6f,0xc0,0x02,0x28,0x8a,0x93,0xdf,0x86,0x61,
- 0x6b,0xed,0xad,0x42,0x5c,0x91,0xa4,0xb6,0xf2,0x92,0x6e,0x14,0xa6,0x5e,0x69,0x45,
- 0x45,0xce,0x3f,0x39,0x9d,0xbb,0x61,0x5c,0x49,0x0a,0xda,0x9f,0x45,0x92,0xc1,0x7a,
- 0x47,0x9c,0xd8,0x86,0x38,0x4f,0x11,0xe7,0xe9,0x7a,0x1d,0xf0,0x9f,0xce,0xd9,0x53,
- 0x51,0x62,0x1b,0x3d,0x60,0xb3,0x71,0x2d,0x23,0xb1,0x07,0x3d,0x82,0x4d,0xca,0xd9,
- 0x53,0x10,0xd3,0x11,0xd1,0xb3,0x55,0xa8,0xec,0x42,0x9c,0x07,0xcf,0x93,0x36,0x19,
- 0xed,0x69,0xbc,0x5b,0xce,0x6e,0x23,0xda,0xda,0x04,0x0d,0xf0,0xf7,0x80,0xdf,0xc2,
- 0x25,0xe5,0xde,0x07,0xf8,0x2f,0x2a,0xc9,0xd3,0x77,0x2e,0x5d,0xfb,0xc0,0xbc,0x52,
- 0xe5,0xb9,0xb3,0xeb,0x96,0x16,0x5a,0xf7,0xe4,0xa2,0xf2,0xe3,0x95,0x3b,0xe1,0xf7,
- 0x71,0x2e,0x6d,0x8f,0x94,0x3c,0x2c,0xcc,0x83,0x3c,0x9c,0xd7,0xe1,0x1d,0x21,0xb5,
- 0xca,0x1b,0x1d,0x61,0xd8,0xfa,0xef,0x80,0xf3,0xb5,0x9f,0x32,0xae,0xfe,0x53,0xfa,
- 0x18,0xbc,0x97,0x1e,0xd4,0xe7,0xf2,0xda,0x33,0x4b,0x92,0x4f,0x5d,0xc9,0xf5,0x91,
- 0x24,0xec,0x62,0x07,0x0f,0x25,0xab,0x91,0xeb,0xc3,0x0d,0xcb,0x19,0x1b,0xd6,0x68,
- 0xe4,0x4d,0x26,0x89,0xbc,0x58,0x64,0x68,0x68,0x35,0x72,0xd7,0x5c,0xd7,0x54,0x20,
- 0xbf,0x0f,0xc1,0x73,0x4c,0x7b,0xb9,0xdd,0x41,0xa3,0x91,0x9b,0x8b,0xd6,0x0b,0x62,
- 0xae,0x61,0xcd,0x84,0xf1,0x0c,0x59,0x3b,0x3e,0x69,0xfd,0x0a,0xb1,0xfa,0xd8,0x7f,
- 0x8d,0x69,0x3f,0xe6,0x43,0x7a,0x7f,0xae,0xcf,0x9e,0x24,0xbb,0x60,0x40,0xa9,0x91,
- 0xf4,0x06,0xd4,0x48,0xb9,0x27,0xde,0xb4,0xbe,0xca,0xdc,0xfa,0xc4,0x9b,0xd7,0x57,
- 0x49,0xac,0x71,0xa2,0xc4,0xfe,0x3e,0xda,0x18,0x2e,0xab,0x5c,0xc5,0x86,0xb6,0x3e,
- 0x22,0x58,0xe3,0x36,0x07,0xf1,0xd7,0xbf,0x8e,0xe3,0xcc,0x46,0xee,0x79,0x84,0x11,
- 0x24,0x59,0x11,0x73,0x8d,0x39,0xf6,0x94,0xd9,0xf3,0xf2,0x1a,0xe6,0x25,0x51,0x9e,
- 0x85,0x91,0x7a,0xfc,0x87,0x37,0x75,0x91,0xf9,0x9d,0xcd,0xa7,0x5c,0x4d,0x4d,0xbf,
- 0xfc,0x33,0x97,0xeb,0x5f,0x1c,0xf6,0x7f,0x71,0x35,0xcf,0xce,0xce,0xaa,0x73,0x1a,
- 0xff,0x6f,0xf6,0x7d,0x9a,0xcf,0x03,0x73,0x05,0xc8,0xf9,0x3c,0xfc,0x3b,0xf9,0x7c,
- 0xbe,0x57,0xe7,0x79,0xe0,0xa7,0xfa,0xbc,0x68,0xfa,0xbc,0xd5,0x98,0xeb,0xf3,0x73,
- 0x47,0xfe,0x1a,0x9f,0x1f,0x1b,0xf8,0x7a,0x4d,0xf9,0x70,0x6e,0xdc,0xaf,0xdd,0xd3,
- 0xbf,0xe4,0xf3,0xca,0x1c,0x9f,0xb7,0x96,0xa5,0x39,0xff,0xd7,0xa1,0x7c,0x58,0xf8,
- 0x97,0xc7,0x7d,0xda,0x9e,0xfe,0x34,0xbb,0x40,0x1e,0x8b,0xcb,0x59,0x58,0xfe,0xe5,
- 0x9f,0xdd,0x74,0x7d,0xe6,0xf3,0xbf,0xae,0xef,0xd7,0x5f,0xec,0x6f,0x39,0x12,0xed,
- 0xdf,0x2d,0xaf,0xfd,0x6b,0xc7,0x7c,0x76,0x7d,0x76,0x7d,0x76,0x7d,0x76,0x7d,0x76,
- 0x7d,0x76,0xfd,0xff,0x72,0x69,0x71,0x92,0x68,0x71,0x52,0xfd,0x8f,0x9e,0xcb,0x67,
- 0xd7,0x67,0xd7,0x67,0xd7,0x67,0xd7,0x67,0xd7,0x67,0xd7,0x7f,0xc4,0x15,0x64,0x65,
- 0x00,0xd8,0xfb,0xb2,0xf1,0xf7,0xff,0xf9,0x20,0x28,0xf3,0x3e,0xfd,0xf7,0xb5,0xdf,
- 0xb3,0x05,0x21,0xcd,0xe5,0xc6,0xf7,0xa7,0x6e,0x9e,0xeb,0xff,0x01,0x51,0x16,0x5f,
- 0xd0,0xd5,0x60,0x00,0x00,
diff --git a/board/esd/cpci405/fpgadata_cpci405ab.c b/board/esd/cpci405/fpgadata_cpci405ab.c
deleted file mode 100644
index 3f78473dc5..0000000000
--- a/board/esd/cpci405/fpgadata_cpci405ab.c
+++ /dev/null
@@ -1,1285 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x73,0xed,0xb5,0x40,0x00,0x03,0x63,0x70,0x63,0x69,0x34,0x30,
- 0x35,0x5f,0x32,0x5f,0x30,0x35,0x2e,0x62,0x69,0x74,0x00,0xed,0xbd,0x0b,0x74,0x1c,
- 0xd5,0x95,0x36,0xba,0xeb,0x54,0xb5,0x54,0xea,0x6e,0xa9,0x4b,0x2d,0x89,0x08,0xfc,
- 0xa0,0xd4,0x92,0x8d,0xec,0xb4,0xe4,0x76,0xdb,0x18,0x23,0x84,0x54,0x6e,0x09,0xa7,
- 0x01,0x83,0x15,0x1e,0x09,0x33,0xc3,0xcd,0xb4,0xc1,0x99,0xf1,0xcc,0x72,0x66,0x84,
- 0x93,0x95,0x31,0x24,0x93,0x39,0x7a,0xd8,0x16,0x96,0xc1,0x6d,0xe3,0x99,0x98,0xc0,
- 0xe5,0x6f,0x3f,0x48,0x0c,0x71,0xf2,0xb7,0x65,0xc0,0xe2,0x31,0x50,0x12,0xc2,0xb4,
- 0x1f,0xd8,0x0a,0xf0,0xcf,0x98,0xc7,0x98,0x36,0x51,0x88,0x00,0x01,0xf2,0xe3,0x27,
- 0x32,0x96,0xad,0xbb,0xcf,0x39,0x55,0xd5,0x2d,0xc9,0x64,0x32,0x6b,0xcd,0xba,0x8f,
- 0x75,0xe9,0xac,0x95,0xec,0x94,0x8e,0xab,0xcf,0xa9,0x53,0x67,0x7f,0xfb,0xdb,0xfb,
- 0x3b,0xa7,0x21,0xcf,0x37,0x2c,0xfe,0x03,0x20,0x2d,0x83,0xc2,0xbb,0x9b,0xef,0xfe,
- 0x9b,0xf9,0xa1,0x2b,0xff,0x32,0xfc,0x97,0xa1,0x2b,0xab,0xff,0xee,0xee,0xe5,0x70,
- 0x17,0xb8,0xc3,0xdf,0x9f,0x17,0xfa,0xc1,0x3d,0x73,0xe7,0xcf,0x87,0xbb,0xc1,0x13,
- 0x0e,0x85,0xe6,0xcf,0x09,0x5d,0x39,0x27,0x7c,0x15,0x2c,0x87,0xbc,0xb9,0x57,0xd6,
- 0xcc,0x9b,0x5b,0x13,0x5a,0x08,0xdf,0x05,0xd8,0xd9,0x3c,0x86,0x9f,0x27,0x1f,0xbe,
- 0xfd,0xaf,0x42,0x40,0x25,0x00,0xc8,0x0d,0x49,0x31,0xf6,0xbf,0x6a,0x48,0xd2,0x25,
- 0xa0,0xf5,0x55,0x21,0x30,0xd9,0xff,0x07,0xeb,0xef,0x79,0x21,0xd0,0xb3,0xff,0xbf,
- 0x14,0x02,0x03,0x9a,0xa0,0xe2,0x6e,0xf0,0x87,0xe0,0xcb,0x3e,0x12,0x28,0x94,0x1b,
- 0x7f,0x4a,0x1b,0xf2,0xa5,0x4d,0xd8,0xe7,0x4f,0x6f,0xe3,0xff,0x63,0x4d,0x94,0xff,
- 0xae,0x36,0xfc,0xbf,0xc7,0xfc,0x50,0x8c,0xa6,0xc4,0x9e,0x44,0x31,0xb8,0xc6,0x1b,
- 0xf5,0x7d,0xfc,0x3e,0xa6,0xeb,0x82,0x31,0x46,0xeb,0x0e,0xfb,0x4e,0xc9,0xaf,0x47,
- 0x8e,0x42,0x67,0xff,0xd2,0xb3,0x72,0xd0,0x3c,0x0a,0xf3,0x52,0xdf,0x1b,0x69,0x18,
- 0x86,0x66,0xde,0x71,0x6d,0xc8,0xfb,0x7c,0x7b,0xd5,0x6b,0x9e,0x93,0x24,0x4d,0x37,
- 0xf6,0x95,0xf7,0x79,0x36,0x93,0x6b,0x8d,0x8d,0xfd,0x5f,0xff,0xdf,0x4b,0xba,0x49,
- 0x5a,0xe1,0x0f,0xaf,0xc3,0x75,0xb8,0x63,0x2f,0x04,0x53,0x9e,0x50,0xdc,0xec,0x68,
- 0x33,0x2a,0x53,0xd8,0x66,0x09,0x6d,0x83,0x4a,0x53,0x0d,0x45,0xde,0x97,0xf8,0x7d,
- 0xcc,0xc2,0xdd,0xca,0xf3,0x50,0x6d,0x7a,0x92,0xe4,0x03,0xe8,0x24,0x01,0xd3,0x13,
- 0x9f,0xbd,0x12,0x3c,0x78,0x45,0x4d,0x92,0x61,0x25,0xc6,0x3b,0x5d,0x38,0x04,0xe7,
- 0x48,0x9d,0xe9,0x4b,0xca,0xbf,0x85,0x43,0x50,0x63,0xfa,0x34,0x79,0x25,0x74,0xa2,
- 0x31,0x35,0x19,0xe8,0x57,0xf8,0x7d,0xd2,0xd2,0x0b,0x30,0x46,0xea,0xcd,0x8d,0xc3,
- 0x0d,0xc3,0xa5,0xcc,0xf0,0xf5,0xcb,0xbb,0xe1,0x0f,0x70,0xb5,0x79,0xf9,0xb0,0x3c,
- 0x02,0xfc,0x3e,0x86,0xb6,0x1b,0xce,0x49,0x75,0x66,0x30,0x29,0x97,0xc1,0x3b,0x6a,
- 0xd8,0xf4,0x26,0xe5,0xc3,0xea,0x21,0x8d,0xdf,0xb9,0x5f,0xd1,0x59,0x9b,0x94,0x2b,
- 0x08,0xcf,0xc3,0x1c,0xb3,0x74,0x38,0x37,0x56,0xfc,0xea,0xe1,0x72,0x53,0x8d,0x93,
- 0x51,0xf5,0x28,0x9d,0xc2,0x7a,0x78,0x0a,0x5f,0x20,0xf6,0x5d,0xae,0x25,0x80,0xe3,
- 0xc2,0x51,0x04,0x74,0xf2,0x50,0xaf,0x6e,0x96,0x86,0xc8,0x61,0xd8,0x01,0xde,0x1e,
- 0x4f,0x88,0x8c,0xe0,0xf3,0xc4,0x8f,0x2e,0x4d,0x5f,0xb4,0x8f,0x56,0xa5,0xd5,0xd5,
- 0x64,0x15,0xb4,0x6d,0x59,0x96,0x56,0xff,0x2c,0x70,0x1c,0xf0,0xca,0xa0,0xe7,0x3e,
- 0x72,0x4c,0xdc,0x27,0xaa,0x16,0xd0,0xd3,0x50,0x3b,0xa8,0x3e,0x1b,0x20,0xbd,0x6f,
- 0x48,0xe1,0xc1,0xe0,0x14,0xf9,0x48,0xde,0x6f,0x1f,0xaf,0x3d,0xe1,0xab,0x91,0x5f,
- 0x17,0x2f,0x8e,0x31,0xed,0x05,0x63,0x0c,0xea,0xdf,0xf4,0xe1,0xb8,0x60,0x4c,0xad,
- 0xff,0x37,0xdf,0x26,0x79,0x14,0x0e,0x69,0xd7,0xf4,0x5e,0x8e,0x7d,0xf6,0xf3,0x71,
- 0xed,0x72,0x7d,0x8a,0x8f,0xa5,0xee,0x4d,0xfa,0x54,0x5b,0x1a,0xce,0x41,0x78,0xb8,
- 0x63,0x2b,0xf9,0xac,0xfd,0xe3,0x9e,0xf0,0x01,0x1c,0xd7,0x47,0x62,0xbe,0xa2,0x85,
- 0x8f,0xc2,0x3a,0xa5,0x2a,0xa5,0xfe,0x80,0xf4,0xc3,0xbe,0x70,0x59,0x4a,0x6d,0x22,
- 0xb5,0x46,0x5b,0xa8,0xec,0xa0,0xa7,0x99,0xbc,0x2e,0x9e,0xb3,0x09,0x8f,0xc1,0x4f,
- 0x69,0x30,0xad,0xde,0x17,0x78,0x5d,0xdf,0x4b,0x13,0x69,0xf7,0xea,0xc8,0xf4,0xd4,
- 0x2f,0x92,0x65,0x83,0x9e,0xd5,0x64,0x18,0xf8,0xf3,0x89,0x16,0x1f,0x86,0x87,0x70,
- 0xec,0xd1,0x10,0x39,0xd0,0xbe,0x17,0x74,0xd3,0xad,0x91,0x25,0xd0,0x06,0x31,0xd3,
- 0x13,0xf2,0xbf,0x2e,0xe6,0x7d,0xb0,0x70,0x17,0xbc,0x0d,0x75,0x74,0x49,0x42,0x3e,
- 0x0b,0xa7,0x20,0x4c,0x1f,0x4c,0xb4,0x55,0xc2,0x47,0x68,0x5c,0x9e,0x90,0xbf,0x10,
- 0xdf,0x15,0x85,0x34,0x0c,0x42,0x2d,0xf8,0xa8,0x9c,0x56,0x47,0x8c,0x3a,0x90,0xa8,
- 0x9c,0x80,0x11,0xa8,0x83,0xa5,0x54,0x7e,0x1d,0xf8,0x7d,0x54,0x6d,0x00,0xce,0xc2,
- 0x4f,0x0c,0x6f,0xbc,0xa8,0x02,0xde,0xd2,0xc2,0xc6,0xd1,0xb8,0x3c,0xa0,0x9d,0x85,
- 0x3a,0xc3,0x13,0x97,0x7b,0xc5,0x77,0x51,0x74,0x13,0xcf,0x42,0xb5,0x91,0x1f,0x2f,
- 0x5a,0xae,0xdc,0xbf,0x3d,0xc0,0xfe,0xb4,0x13,0x9e,0xa5,0xd5,0x68,0x90,0x18,0x68,
- 0xac,0x4d,0xa9,0xab,0x42,0x62,0x6d,0x54,0x8d,0x78,0xf3,0x1e,0x26,0xac,0x0d,0x19,
- 0x80,0x67,0x75,0xd6,0x26,0xb2,0x5f,0xcc,0x85,0x5a,0xdc,0x0e,0x7b,0x94,0x60,0x34,
- 0xcf,0x4f,0x1a,0x41,0xaa,0xd0,0xa3,0x1e,0x8d,0xf4,0xd1,0x3d,0x7a,0x90,0x19,0x11,
- 0xee,0x46,0xa0,0x3b,0x7f,0x91,0x31,0x02,0xd5,0xc5,0xde,0x35,0x72,0x99,0x71,0x07,
- 0x74,0x95,0xf8,0x5c,0x77,0x9f,0x30,0x46,0x48,0x1d,0x6c,0xa4,0xf2,0xa7,0x32,0x9f,
- 0xf7,0xad,0x25,0xd8,0x67,0xa5,0xee,0x3a,0xdf,0xa6,0x79,0xa3,0x70,0x56,0xab,0x6b,
- 0xc4,0xf7,0x70,0xa7,0xc1,0x8d,0xb8,0xfc,0x41,0x4e,0xb3,0xe8,0xcf,0x00,0xbc,0x45,
- 0xea,0x22,0xbe,0xf8,0x26,0x05,0x7e,0xa5,0x2e,0x88,0x6c,0xc0,0x71,0x55,0x9e,0xd7,
- 0xeb,0xae,0x67,0x6d,0xc4,0x7c,0x2d,0xd4,0xd2,0xd0,0x4d,0xaa,0xc1,0x43,0xdd,0xba,
- 0xd6,0xdd,0x58,0x59,0xaa,0xb6,0x12,0xbc,0x62,0x54,0x6b,0x1e,0x4a,0x8e,0x88,0xb1,
- 0xab,0xae,0x3e,0x7d,0x13,0x04,0x23,0x1e,0x7f,0xab,0x92,0xd8,0x06,0x15,0x11,0x55,
- 0xdb,0xde,0xa7,0xef,0xd5,0x82,0x8d,0xd8,0xe7,0x5e,0xb1,0xbe,0x4a,0x4b,0xf0,0x69,
- 0x28,0xfc,0x69,0xec,0xa4,0xec,0x21,0xac,0xd8,0x44,0x06,0x14,0x66,0xb0,0xb1,0x8b,
- 0xb9,0x48,0x14,0xef,0x84,0xb7,0xa0,0x6e,0x91,0x2f,0x2e,0xcd,0x80,0x0f,0x61,0x81,
- 0xa1,0x6c,0x15,0xcf,0x19,0xaf,0xc8,0x83,0x62,0x5d,0x54,0xc2,0x4e,0xfe,0xe4,0x71,
- 0xe9,0x2d,0xc7,0x01,0x3e,0x67,0xf8,0xb0,0x0d,0xf0,0x2b,0x71,0xf9,0xa0,0x78,0x37,
- 0x2a,0xb5,0x04,0xa4,0x70,0x06,0x7d,0xb4,0xa1,0x4c,0x19,0x41,0xb7,0xec,0xc5,0xc9,
- 0x85,0x11,0xb5,0x0e,0xd0,0x38,0x68,0xdd,0x47,0xa9,0x24,0x6e,0xa8,0xa6,0x9e,0x04,
- 0xa9,0x84,0xb5,0xad,0x01,0xaa,0x26,0xc8,0x60,0xf1,0x8b,0x46,0x41,0x4b,0x47,0x82,
- 0x1c,0x14,0x9e,0xaa,0xd2,0xb5,0x44,0x91,0xf1,0x1d,0xf3,0x84,0xb4,0x0d,0xb0,0x07,
- 0xf4,0x1e,0x37,0x5b,0x5f,0x49,0xf0,0x9a,0xb3,0x42,0xd8,0xc6,0x5e,0x5f,0x34,0x17,
- 0xaa,0x52,0x9e,0x7b,0xc8,0x8b,0xb4,0xdd,0xd8,0xd6,0xe7,0x6e,0xce,0x79,0x97,0x3e,
- 0x03,0xf9,0xe9,0xbc,0x66,0x92,0x12,0x73,0x5a,0xa9,0xd6,0xd3,0x57,0xe9,0xb5,0x43,
- 0xbe,0x6b,0xe4,0xc7,0xf4,0xcf,0xe9,0xdc,0xc1,0x99,0x3f,0x92,0x8f,0xc3,0xe7,0x74,
- 0x6a,0xfa,0xa6,0xd5,0xe5,0x07,0xc5,0xfa,0x52,0xf3,0x77,0xeb,0xe7,0xa0,0xee,0x5d,
- 0xdf,0x53,0xf2,0xca,0xd4,0x30,0xd4,0xbd,0x95,0xbf,0x57,0x1e,0x82,0x2f,0xa0,0xce,
- 0x2c,0x48,0xca,0xbd,0x39,0xc2,0x6f,0xb8,0x2e,0x68,0x63,0xb4,0x3e,0xed,0x7d,0x56,
- 0xfe,0xd4,0x38,0x13,0x0f,0x9f,0xd9,0x38,0xf2,0x8d,0xba,0xd8,0x1f,0xe8,0xbc,0x13,
- 0xbe,0x11,0xb9,0x5f,0xcc,0xd7,0x2e,0x69,0x03,0xec,0x43,0xbf,0x51,0xb9,0x90,0x1c,
- 0xa1,0x4f,0xcd,0xad,0x1c,0xf4,0x74,0xb7,0x4e,0x35,0xf6,0x26,0x57,0x98,0x9e,0xab,
- 0x8b,0x9e,0xb4,0xfc,0x18,0x3c,0x8a,0x6d,0xaa,0x4c,0xec,0xe1,0xbb,0xf0,0x14,0x2c,
- 0xeb,0xf3,0x34,0x47,0xee,0x54,0xf7,0x41,0x99,0xe9,0xb9,0x27,0xd2,0x27,0x9e,0x61,
- 0x0c,0xd7,0xd7,0x5e,0x29,0x68,0xe6,0x85,0x70,0x59,0x25,0xa5,0x4a,0xb3,0x33,0x14,
- 0x59,0x89,0x57,0x2a,0xf1,0x69,0x90,0x9f,0x89,0x79,0xdf,0x55,0xf2,0x02,0x2e,0xf3,
- 0x7a,0x33,0x7f,0x58,0x1e,0x33,0x86,0x61,0x5e,0x8f,0x6f,0xf8,0xeb,0x3f,0xc6,0x3e,
- 0x87,0xd1,0x47,0xc9,0x1f,0xb5,0xc7,0xc4,0xba,0x18,0x52,0x70,0x5c,0xe6,0x83,0xc9,
- 0xf2,0x21,0x03,0xd7,0x17,0x73,0x71,0xbb,0xe1,0x0b,0x99,0x1b,0x3b,0xc5,0xfa,0x92,
- 0xb4,0x51,0x40,0xdf,0x62,0xfa,0x86,0xd1,0xa5,0x8c,0x2a,0x57,0x09,0xe3,0x88,0xb8,
- 0x12,0x5b,0xce,0xdb,0xb4,0x28,0x2b,0xe1,0x11,0xf4,0xc6,0x9d,0x49,0x9c,0x82,0x63,
- 0xe6,0x76,0xe6,0x06,0x87,0x60,0x3d,0xe5,0x1e,0x3b,0x6d,0xf0,0xf5,0x45,0xa5,0x95,
- 0x20,0x7c,0xb8,0x7f,0x08,0xba,0x3b,0x7e,0x6e,0xb5,0xe9,0xa8,0xee,0x59,0x8f,0x6d,
- 0xc4,0x7c,0xa9,0xc5,0xf9,0xdc,0x6f,0x4c,0x09,0xfb,0x87,0x22,0x71,0xd0,0x8f,0x79,
- 0x42,0xad,0x87,0xa1,0xd5,0xc0,0x91,0x2e,0x20,0xbd,0x02,0x9b,0x40,0xfa,0x31,0x1f,
- 0x97,0xef,0xe4,0x43,0xa3,0x74,0x04,0xb0,0x3f,0x67,0xe4,0x21,0xe5,0xe0,0xca,0xba,
- 0x37,0x1f,0x7c,0xa6,0x2d,0x46,0xf8,0x77,0x25,0x4a,0x46,0xe1,0x3d,0xa8,0xef,0xf5,
- 0x9c,0x92,0x47,0xcd,0x51,0xa8,0xff,0x8d,0xaf,0xab,0x6d,0x74,0xfb,0x17,0x50,0x8f,
- 0xbe,0xae,0x68,0x50,0x60,0x01,0xc3,0xaf,0xcf,0x8c,0x79,0x87,0x0b,0x4e,0xb6,0xfd,
- 0x6b,0xeb,0xd1,0xbf,0x99,0xf7,0x56,0xfe,0x9e,0xa2,0x5a,0xe3,0x63,0x6d,0xde,0xd1,
- 0x60,0x97,0xdc,0x2c,0x59,0xf8,0x75,0xb8,0x7d,0x9d,0x51,0xfe,0xa6,0xf7,0x8c,0x31,
- 0xd5,0xd8,0x68,0xec,0xe8,0xf7,0xfc,0x90,0xfc,0x2b,0x7d,0xa9,0xf9,0xeb,0xfd,0xea,
- 0x19,0xaa,0xdb,0xf8,0x35,0x04,0x3b,0x42,0xe8,0xe2,0x42,0xb0,0x81,0xb6,0xe9,0xfa,
- 0x31,0xec,0xaa,0xd7,0xdc,0xab,0xe8,0xa9,0xe8,0x3c,0x08,0x88,0x67,0x68,0x96,0x6c,
- 0x40,0x24,0xd2,0xcd,0xbc,0x24,0x09,0xaa,0x9d,0x4a,0x80,0x4d,0xd3,0x6e,0x78,0xde,
- 0x35,0x9b,0xe1,0x57,0xb3,0x98,0x77,0xa3,0x64,0x08,0x3e,0x26,0x61,0x7c,0xa3,0xf0,
- 0x4f,0x87,0x70,0x9a,0xf2,0x93,0x0d,0xc1,0xfc,0x8f,0x25,0x3f,0x02,0x90,0x47,0xcb,
- 0xe0,0xd7,0x1f,0xe0,0x25,0xb3,0x60,0xb8,0x61,0x54,0xfd,0x83,0x3d,0x29,0x63,0xae,
- 0x7a,0x36,0x5f,0xdd,0x0e,0x7e,0xd1,0x43,0x6a,0xf8,0x70,0x7e,0x52,0xde,0x00,0x1f,
- 0x2b,0x0b,0xf0,0x9f,0x17,0x05,0xb5,0x73,0x7a,0xb8,0x77,0x43,0x72,0x47,0xdc,0xc6,
- 0xaf,0x39,0xda,0x46,0xd8,0x31,0xdc,0x31,0xea,0xae,0xa5,0x1b,0xf5,0xf2,0x94,0xeb,
- 0x14,0xa9,0xa5,0x2f,0x99,0xe5,0x3d,0xea,0x30,0x09,0xdb,0xf8,0xb5,0x14,0xda,0x34,
- 0xbd,0x3f,0xef,0x39,0xe2,0x6b,0xdf,0x71,0xa2,0x62,0x84,0x84,0x89,0xb7,0xe5,0x97,
- 0xe6,0xec,0x3e,0x75,0x0f,0xe9,0x76,0xd6,0x17,0xac,0x4b,0x94,0x9d,0xc8,0xbb,0x26,
- 0x67,0x7a,0xd3,0x3a,0x3a,0x6b,0x90,0xdc,0x47,0xa6,0xc3,0xde,0x44,0xde,0x40,0xe5,
- 0x7d,0x44,0xd5,0x2c,0xfc,0xf2,0x26,0xda,0x70,0x38,0x55,0x0b,0x77,0x14,0x74,0x60,
- 0x7f,0xd2,0xb3,0x6b,0x3c,0x5e,0x38,0x7d,0xff,0xcf,0x5e,0xf1,0xd6,0xc8,0x9b,0x6d,
- 0xfc,0xda,0x4d,0xc6,0x56,0xd4,0xf7,0x15,0x74,0xc9,0xdf,0xd3,0xff,0x49,0x5d,0x80,
- 0x63,0xc7,0x71,0x9d,0x83,0x05,0x6f,0x32,0xcc,0x25,0x16,0x7e,0x0d,0xc1,0xa1,0x45,
- 0x5d,0x47,0xbd,0x7b,0xa5,0x5f,0xc1,0xc7,0xee,0x05,0x47,0xf2,0x9f,0xe9,0xac,0x32,
- 0x0e,0x11,0x7f,0xbf,0xb7,0xcb,0x33,0xdb,0xc1,0x2f,0xd5,0x07,0x7a,0x4a,0x5d,0xd5,
- 0x3a,0x95,0xae,0xab,0x28,0x33,0x1f,0x58,0x45,0xa6,0xea,0x1b,0x57,0x94,0xf5,0xab,
- 0x73,0xc9,0x66,0x07,0xbf,0x4a,0xaf,0x48,0x94,0x0d,0x22,0xe6,0x3e,0x86,0x50,0xbb,
- 0x6c,0x50,0xbd,0xd7,0xf8,0x0e,0xac,0xa3,0x55,0x27,0x3a,0x7e,0x44,0xac,0x70,0x2e,
- 0x5a,0x3c,0x04,0xbf,0xc4,0xf9,0x2a,0x4d,0x92,0x0d,0xf8,0x42,0x26,0xd8,0x42,0x5b,
- 0x49,0xda,0x60,0xb7,0x59,0x99,0xc4,0xfb,0x08,0xfc,0x2a,0xd9,0x45,0x18,0x5a,0xad,
- 0x4c,0xc8,0xbb,0xd8,0xb2,0xa2,0xde,0x84,0xbc,0x42,0x3a,0xa8,0xd4,0xa1,0x51,0x54,
- 0x63,0xe3,0xd7,0x09,0xa5,0x14,0xea,0x34,0x5f,0xbb,0xb4,0x4c,0x1b,0x84,0x1a,0x74,
- 0xd4,0x0c,0xbf,0x0c,0xc2,0x10,0xcd,0xc1,0xaf,0x0f,0xe2,0x07,0x12,0x0b,0x1a,0xf3,
- 0x7f,0x76,0x45,0x8e,0xf1,0x56,0x3c,0xdc,0xf8,0x77,0xf1,0x45,0x3f,0xa7,0x07,0x34,
- 0xfd,0xbb,0x4b,0xb6,0x36,0xb4,0x5a,0xf8,0xa5,0xfc,0x35,0xdc,0x4f,0x03,0x4d,0xea,
- 0xa3,0x39,0x33,0xe0,0x7e,0x23,0xd0,0x54,0x1a,0x27,0x57,0xc0,0xfd,0xe6,0x82,0x66,
- 0xf5,0x51,0xb7,0xee,0xe0,0x17,0xdc,0x0f,0x15,0x46,0x5e,0x3c,0x52,0xa1,0x6e,0xca,
- 0x4b,0x7c,0x53,0xf5,0xf7,0xee,0xd4,0x5b,0x60,0x76,0x43,0xe5,0xbf,0x90,0xb5,0x16,
- 0x7e,0x29,0x8a,0x82,0xaf,0xe8,0xf5,0xaa,0xdf,0xaf,0xb4,0xb4,0x04,0xf4,0xa8,0xdb,
- 0xff,0x57,0x4a,0xbc,0x45,0xf7,0x46,0x55,0x7f,0x84,0xd8,0xf8,0x75,0x7d,0x24,0xd5,
- 0xf4,0xcc,0x96,0xfc,0x19,0xee,0x3c,0xa3,0xbf,0x29,0x54,0xec,0x76,0xc9,0x2d,0x91,
- 0x83,0xb7,0x96,0x32,0x44,0xfb,0xb5,0xcc,0xbf,0x6b,0xeb,0x34,0xf4,0xfc,0xc5,0x75,
- 0x8d,0x4b,0x37,0xc1,0x80,0x71,0xb6,0xb0,0xae,0xf1,0xa6,0x4d,0xf2,0x72,0xe3,0xde,
- 0xe2,0x05,0x8d,0xb9,0x9b,0xe4,0x0f,0x72,0x63,0x16,0x7e,0x91,0x03,0x95,0xe1,0x1b,
- 0xbc,0xf1,0xb6,0x81,0xfd,0x6f,0xdd,0xd5,0xd5,0x98,0xbf,0x45,0xae,0xa8,0x3c,0xb0,
- 0x28,0xdc,0x84,0x57,0x72,0x6c,0xfc,0x32,0xa1,0x23,0xa6,0x97,0xaa,0x4a,0xa4,0x07,
- 0x3a,0xf4,0x40,0x71,0x55,0x3b,0xd9,0x46,0xa8,0x9e,0x00,0x75,0xbf,0xbb,0xc0,0x7a,
- 0x3e,0xae,0x37,0x13,0x6b,0xd4,0xb2,0x88,0x7a,0x4b,0xeb,0x9b,0xe6,0x3f,0x2f,0x2b,
- 0x8b,0x96,0x7e,0x8b,0x4c,0x4d,0xac,0x31,0xca,0x9a,0xf2,0x9a,0xb6,0x13,0x97,0x85,
- 0x5f,0x4f,0xc1,0x03,0x52,0xb9,0xa1,0xf6,0x93,0x33,0xf0,0x00,0x94,0x2d,0xba,0xb4,
- 0x3f,0x8c,0x57,0xe0,0x6e,0xe3,0x89,0x26,0x92,0x63,0xe1,0x17,0x62,0xee,0x01,0x08,
- 0x1b,0xc1,0x78,0x39,0x02,0xab,0x14,0x36,0x36,0xb0,0x80,0x81,0x5d,0xb9,0x29,0x1e,
- 0xa8,0x14,0xeb,0xab,0x52,0xda,0x89,0x68,0xf5,0x02,0xa2,0x55,0xd1,0x00,0x61,0xb0,
- 0xb5,0x54,0x2b,0xef,0xd3,0x4e,0xa2,0xf1,0x60,0xdc,0x73,0x50,0xac,0xaf,0x4a,0x2d,
- 0x59,0xd8,0x07,0xd7,0xc0,0x06,0xb3,0x21,0xa4,0x1e,0x26,0xdf,0x47,0xc0,0xf9,0x7a,
- 0x08,0x0e,0xc3,0x5c,0x28,0x30,0x65,0xb7,0x85,0x5f,0xae,0x59,0xb7,0xac,0xd7,0x03,
- 0x5b,0x2a,0x13,0xee,0xca,0x9c,0xf5,0x52,0x80,0x6e,0x78,0x3c,0x52,0x89,0xd1,0xce,
- 0xf6,0x7f,0x56,0xb7,0xcb,0x6e,0x0b,0x77,0x5c,0x3f,0x86,0x75,0xed,0xb3,0x4c,0xb5,
- 0x39,0xa7,0x16,0x36,0xc2,0x32,0x74,0xf8,0xee,0xa9,0xda,0x4f,0xe9,0x0c,0xd3,0xdd,
- 0x8c,0xe0,0xc7,0xd7,0x57,0x42,0x9a,0x0a,0xeb,0xd0,0xf3,0xab,0xab,0x2f,0xb1,0x0c,
- 0xde,0xc6,0x98,0x81,0x06,0x59,0x21,0xee,0xb3,0x4b,0x9d,0x8e,0x91,0xc5,0xd5,0x18,
- 0x43,0x16,0x4d,0x87,0x97,0x5b,0xf4,0xf4,0x4d,0x23,0xb7,0x16,0xc0,0xbf,0xd3,0x2b,
- 0xd3,0x05,0x23,0xb8,0x2e,0x04,0x7e,0x4d,0x13,0x51,0xd3,0x46,0x5a,0xc4,0x02,0x86,
- 0x17,0xa5,0x39,0xb4,0x1c,0x31,0x17,0x5f,0x48,0x5f,0x3b,0xbe,0x63,0x02,0x77,0x5c,
- 0x5f,0x18,0xaf,0xd1,0x05,0x09,0x44,0xab,0xba,0xbe,0xcf,0x5a,0xaf,0x3a,0x91,0x3f,
- 0xe8,0x9f,0xa9,0xbe,0xb6,0xa9,0x3e,0xf1,0xc0,0x7f,0x78,0xc0,0xc2,0xaf,0xc2,0x17,
- 0xb5,0x75,0x1a,0x46,0x7a,0x35,0x45,0x7f,0x0f,0x1b,0x0d,0x3d,0xad,0xde,0x9b,0x33,
- 0xdd,0xfc,0x03,0x9d,0x33,0xa8,0xfe,0x88,0x38,0xf8,0xb5,0x95,0xae,0x81,0x19,0x1d,
- 0x0d,0xb8,0xf4,0x52,0xbf,0x80,0xb2,0x14,0x9b,0x57,0xba,0x46,0xaf,0xea,0xc8,0xbb,
- 0x05,0x57,0x3b,0x7f,0x3e,0x7a,0x71,0x9a,0x50,0x7c,0x54,0x1e,0xc8,0x31,0xa0,0x03,
- 0xb6,0xc3,0x9f,0x51,0xbf,0xae,0x24,0x94,0x20,0xec,0x02,0xd2,0x61,0xe3,0xd7,0x4e,
- 0x38,0x88,0x61,0x06,0x46,0x4d,0x3a,0x0c,0x2a,0x61,0xf0,0xc6,0x3d,0x95,0xb0,0x1e,
- 0x23,0xbd,0xfc,0x44,0xf9,0x6c,0xc5,0xb0,0xf0,0x0b,0x63,0xfe,0x17,0x4d,0xdf,0x7c,
- 0x84,0xe3,0x73,0x18,0xea,0x23,0x1c,0xa3,0xe1,0x62,0xf8,0x85,0x23,0xb5,0xf0,0xeb,
- 0x0c,0x39,0x02,0xf3,0x0c,0x5f,0x87,0xbc,0xaa,0xfd,0xb0,0x14,0xae,0x5c,0xd9,0x4f,
- 0x16,0x32,0xfc,0x32,0xbc,0x31,0x99,0x36,0x5a,0xf8,0x15,0xc3,0xf7,0x30,0x00,0x97,
- 0x3e,0x48,0xca,0xa1,0x63,0x51,0xc0,0xef,0x66,0xfd,0x39,0x76,0x7d,0x35,0xac,0x6f,
- 0x6f,0xd5,0x2d,0xfc,0x72,0xe9,0x06,0x85,0xed,0x8a,0xa7,0x85,0x18,0xa4,0x83,0x06,
- 0x24,0xb5,0x85,0x24,0xb0,0xbf,0x41,0x45,0xa5,0x68,0x58,0xeb,0xcb,0x8b,0xcc,0x45,
- 0x4f,0x79,0xc2,0x7e,0x34,0x14,0xfd,0x35,0x77,0x98,0x3c,0xa8,0x3e,0xa4,0x06,0x4d,
- 0xf7,0xfc,0x56,0x6b,0x7d,0x41,0x7e,0x0c,0x7d,0x50,0x18,0x6e,0xa4,0x2f,0xc7,0x62,
- 0x29,0x34,0xbc,0xed,0x32,0xa5,0x29,0xa3,0x4e,0xf5,0xe6,0xc8,0x54,0xc4,0x87,0x89,
- 0x69,0x69,0x03,0x61,0xcb,0x95,0x4f,0x31,0x56,0x1f,0x85,0x67,0xbc,0xbe,0xb5,0x9d,
- 0xcd,0xc6,0xb1,0xca,0x6a,0x65,0x69,0xab,0x3c,0x28,0xe2,0x43,0x53,0xba,0x00,0xef,
- 0xd1,0x6b,0x2b,0xaa,0xee,0x97,0x5a,0xe1,0xf7,0x14,0xfd,0xfc,0x48,0xf9,0x05,0x18,
- 0xa3,0xf3,0xd2,0xbe,0x93,0xf2,0xb0,0x85,0x5f,0xa5,0x9f,0xc2,0xf3,0xb4,0x5a,0x55,
- 0xa9,0x3b,0x00,0x9d,0xb4,0x7c,0x58,0xed,0xda,0x3e,0x94,0x78,0xbe,0x22,0xd0,0xeb,
- 0xf9,0x9c,0x0c,0xe7,0x58,0xf8,0xb5,0x01,0x79,0x4a,0x35,0xa8,0xad,0x39,0x54,0xdb,
- 0xa1,0x54,0xf4,0xe7,0x85,0x02,0x87,0xe9,0x5e,0x15,0x47,0x31,0x8f,0x9c,0x92,0x84,
- 0xcf,0x44,0xdf,0x8b,0xd8,0x1d,0x50,0x29,0x22,0x5a,0x67,0x2c,0x80,0x6e,0x30,0x87,
- 0x5d,0x09,0x30,0x10,0xb7,0x62,0x7e,0xa3,0x64,0x25,0xbc,0x03,0xc1,0x90,0x17,0xe4,
- 0xed,0x65,0x1f,0x9b,0x0b,0xcc,0x07,0x18,0xbe,0x23,0xd1,0xe8,0x59,0x9a,0x6c,0xe8,
- 0x6f,0x74,0xf0,0xeb,0x9f,0xa0,0x5e,0xf2,0x1d,0xc0,0x1e,0x8e,0xd1,0x6b,0x4d,0x0f,
- 0xc7,0x2f,0xa8,0xef,0xf1,0x25,0xcb,0xb3,0xf9,0x17,0x46,0x95,0x0f,0x52,0x79,0x99,
- 0x76,0xd0,0x60,0xf7,0x41,0x1e,0xc7,0xa2,0x14,0xc4,0x02,0x2d,0x9b,0x7f,0x61,0x9f,
- 0x13,0x01,0x13,0x51,0xf9,0x2a,0x16,0xd2,0xec,0x16,0xd1,0xc5,0x30,0x59,0x20,0xe6,
- 0xc2,0x54,0x38,0xff,0x02,0x37,0x90,0x08,0xb4,0x35,0xed,0x14,0xc1,0xd2,0xf3,0xb0,
- 0x92,0x81,0x6f,0x48,0xf8,0x4c,0x5d,0xfb,0x0e,0x42,0xc0,0x1c,0x5d,0xbd,0x9e,0x9c,
- 0x4a,0xcc,0xa1,0x8f,0x0f,0x7a,0xee,0x0d,0x20,0x28,0x24,0xaa,0xd2,0xf2,0x7d,0xa4,
- 0x5a,0xd1,0x04,0x7e,0x2d,0x81,0xd3,0x78,0x9f,0x02,0x8f,0x1c,0xf1,0xbe,0x0c,0xf3,
- 0x07,0xa5,0x1a,0x79,0x89,0x7a,0x9a,0xd6,0x9a,0xbe,0x85,0xb2,0x5f,0xc4,0x1b,0x46,
- 0xc9,0x0b,0xae,0x31,0xb6,0xbe,0x4c,0xc6,0xbf,0xa0,0xbe,0x1f,0x71,0x79,0x88,0x19,
- 0x7d,0x1b,0x4f,0xb6,0xf5,0x8b,0x75,0xa1,0xba,0xf8,0x2b,0x0a,0xc1,0x38,0xae,0xa6,
- 0xd3,0x10,0x3e,0xe6,0xeb,0x6e,0x08,0x12,0x64,0x64,0x66,0xf0,0xc5,0x4e,0x62,0xf1,
- 0xa6,0x4b,0x59,0xec,0x37,0x07,0x54,0x13,0xef,0xfb,0xef,0xf0,0x44,0x0a,0x87,0x83,
- 0x8c,0x0c,0xa3,0x41,0xf5,0x14,0x09,0xe7,0x88,0xb5,0x83,0xfc,0x6b,0x5f,0x4b,0xd5,
- 0xb6,0x8e,0xe8,0x4c,0x3f,0x3c,0x4d,0xcb,0x06,0x90,0x76,0x21,0x0a,0xb7,0x54,0x9d,
- 0x50,0x57,0xe7,0xa8,0xe2,0x3e,0x2b,0x94,0xc3,0x6c,0xec,0x9a,0xaa,0xac,0x2d,0x30,
- 0x1e,0x52,0x59,0x58,0x98,0xb3,0x1b,0xf9,0x17,0xf2,0xe5,0x10,0xa9,0x11,0x6d,0x10,
- 0xbf,0x10,0xb6,0xea,0xe9,0xd4,0x58,0xee,0xd5,0xf0,0x79,0x6f,0x98,0xfa,0x58,0xb0,
- 0x7d,0x10,0x18,0x7e,0xc9,0x35,0xc2,0x1f,0x32,0xfe,0x85,0x7e,0xc3,0x7b,0x79,0x4b,
- 0x6e,0x5a,0x19,0x29,0x14,0x44,0x8c,0x7b,0x12,0x8e,0x5f,0x62,0x5c,0x9a,0x88,0xf0,
- 0xbd,0xf1,0xf2,0x99,0xa1,0x03,0xda,0x73,0x68,0xc8,0xcc,0xd3,0xd6,0xa1,0x83,0x45,
- 0xfe,0xa5,0x0b,0xfc,0x5a,0xae,0x72,0x6e,0x15,0x27,0x8a,0xf1,0x04,0x0d,0x18,0x1d,
- 0x8c,0x5b,0xdd,0x2f,0xae,0xa4,0xc5,0x5c,0x2c,0x44,0xfc,0x7a,0x16,0x82,0x06,0x46,
- 0x44,0x15,0xfa,0xfd,0x79,0xb3,0xd9,0x9f,0xec,0x36,0x81,0x23,0x96,0xcf,0x2c,0x56,
- 0x30,0xd4,0x0f,0xe2,0x3f,0x77,0x57,0xc0,0x36,0xd0,0xa3,0x95,0xc8,0xbf,0xa0,0x05,
- 0xaf,0xe8,0x7e,0x72,0xd0,0x65,0xe1,0x57,0x0c,0x46,0xa4,0xba,0xe2,0xe0,0x1a,0xf4,
- 0x1b,0x29,0x1c,0xad,0x77,0x4d,0x51,0x0f,0x22,0x5a,0x6d,0xb1,0xb2,0x46,0xbe,0x90,
- 0xc5,0xbf,0xd0,0x03,0x78,0xfa,0xf1,0xf5,0xfb,0x47,0xe0,0xb4,0xcb,0xe2,0x29,0x9b,
- 0xe4,0xf7,0xc1,0xe1,0x5f,0x67,0xa1,0xd6,0xc8,0x2d,0x96,0xe7,0xc3,0x7f,0x40,0x17,
- 0xa3,0x30,0x33,0xe0,0xac,0x51,0x63,0xf8,0x36,0xb7,0xe6,0x88,0xf5,0xb5,0xb0,0x34,
- 0xad,0x76,0xf3,0xf7,0x10,0x51,0xb8,0x03,0x02,0xc5,0x9e,0x56,0xa2,0xd3,0x6e,0xa9,
- 0xda,0xe3,0x59,0xeb,0x2e,0x20,0x62,0x4e,0x5d,0xc8,0x19,0xa1,0xfa,0x06,0xb7,0xdf,
- 0x5f,0x21,0x3f,0x44,0x2b,0x8c,0x47,0xb4,0xd6,0xc6,0x8e,0x3d,0x65,0x95,0xc6,0x8d,
- 0x5a,0xab,0xdf,0xc5,0xdb,0x94,0x2a,0x3b,0xd9,0xf3,0x69,0x52,0xfd,0xa4,0xc2,0xb8,
- 0x9f,0xce,0x34,0x3c,0xda,0x0d,0x82,0xb1,0x7a,0xb4,0xc8,0x4c,0x31,0x5f,0x09,0xce,
- 0x19,0x6b,0x9b,0x0b,0xb6,0xc8,0x0a,0x12,0xb1,0x05,0xac,0x3f,0x48,0xb2,0xa0,0x86,
- 0x19,0x16,0x7e,0x45,0x39,0x7e,0xd5,0x35,0xb3,0xe1,0x84,0xac,0x3f,0xed,0xe4,0xec,
- 0x18,0x0d,0x67,0xbe,0x12,0xec,0xf9,0x40,0x3e,0x2d,0x8a,0xa9,0x23,0xe8,0x7f,0xac,
- 0x39,0xe5,0x06,0xb1,0xf1,0xab,0x12,0x9e,0x43,0xfe,0x15,0x4d,0x90,0x1a,0x7d,0xad,
- 0x32,0xbb,0x05,0x89,0xd8,0x20,0x5e,0x09,0x30,0x46,0xb6,0xde,0xc6,0x2f,0x91,0xdf,
- 0x28,0x0d,0xf9,0x6f,0xd0,0xb6,0xeb,0x8c,0x88,0x11,0xf6,0xd6,0xe9,0x68,0xdc,0xb5,
- 0x5e,0xcc,0x29,0x2d,0x9c,0xaa,0xe1,0xfb,0x9c,0xaa,0x3c,0xe5,0xd7,0x10,0xe3,0xaa,
- 0xcc,0x29,0xab,0xc8,0xbb,0xf1,0xab,0xe8,0x32,0xd3,0xb3,0x0a,0x7d,0xa6,0xf0,0x3f,
- 0x88,0x5f,0x7f,0xa0,0xd7,0x0e,0x7a,0x7f,0x24,0xdf,0x82,0x7e,0xec,0xda,0xb4,0x07,
- 0xf9,0x97,0xf1,0x4f,0xe9,0xb9,0x83,0x4b,0x6b,0xda,0x02,0x3a,0xbf,0x8f,0x5a,0xb2,
- 0x9b,0xf1,0x94,0x63,0xe8,0xde,0x4d,0xf2,0x5b,0xf4,0xf3,0x4b,0x9f,0x29,0x1a,0x32,
- 0xce,0xc1,0x63,0xff,0xb6,0x74,0x8f,0x1c,0xb1,0x70,0x47,0xf9,0x35,0x8c,0x6d,0xba,
- 0xfc,0x54,0xde,0x73,0xeb,0x7b,0xe1,0xb3,0xd6,0x9a,0xb4,0xaf,0xbb,0xed,0x02,0x9c,
- 0x8b,0xd7,0xa4,0x37,0x3e,0x2b,0x9b,0xe2,0x19,0xee,0x2a,0x7d,0xcc,0xdc,0xa7,0x55,
- 0xa5,0x11,0xad,0xfc,0xb8,0xbe,0xb6,0x0d,0xde,0xb8,0x90,0x1c,0x47,0xfe,0x55,0x35,
- 0xe8,0x5b,0x48,0x3e,0x12,0xeb,0x8b,0xf3,0x2f,0x69,0x8e,0x99,0x37,0x1c,0x88,0xc3,
- 0xff,0x34,0x66,0xf5,0x21,0x11,0x7b,0xd4,0xd8,0xa7,0x23,0x8b,0x6c,0xce,0x31,0x75,
- 0xb1,0x06,0x95,0x0d,0x22,0xb7,0x73,0xb5,0x1b,0xf4,0x87,0xf8,0x90,0xd9,0xd8,0x09,
- 0x7b,0x08,0x81,0x94,0xf5,0x5d,0x25,0xcc,0x8f,0xd5,0x7f,0x90,0x3f,0x4c,0xb6,0xb5,
- 0x3e,0xd9,0x57,0x83,0x37,0x94,0x5f,0x40,0x9f,0x70,0x0d,0xcb,0x35,0x7d,0x24,0xe6,
- 0x8b,0xe3,0x17,0x7a,0x80,0x8d,0x49,0x79,0x1b,0x9c,0xa3,0x75,0xe6,0xe5,0x48,0xc4,
- 0x78,0xf6,0x09,0x47,0x9a,0x16,0xf3,0x55,0x86,0xfc,0xeb,0x33,0x0c,0xf5,0xbd,0xc3,
- 0x6d,0xcd,0xf8,0x1e,0xce,0x33,0x5f,0x1b,0x5e,0xf5,0x63,0x75,0x4c,0x99,0xc3,0x98,
- 0x5d,0xaa,0x91,0x7f,0xd7,0x36,0x60,0xdc,0x2a,0x68,0x56,0x86,0xe4,0x48,0xeb,0x1b,
- 0x2d,0x01,0xc1,0xad,0x1e,0x81,0x99,0x8c,0x6d,0x0d,0x5a,0x73,0x21,0x71,0x9f,0xc9,
- 0x18,0xc7,0x5f,0xb9,0x1f,0xa1,0x01,0xd3,0x9d,0xcc,0x59,0xa9,0x3e,0x0f,0x7f,0xc7,
- 0x58,0x5b,0xda,0xc1,0xaf,0x16,0xc4,0x02,0x33,0xba,0x27,0x10,0x33,0xf9,0xb8,0xc2,
- 0x39,0x87,0xd5,0x87,0xa2,0x4a,0xca,0xb3,0x00,0x7a,0xc5,0xfa,0x82,0xfc,0x95,0x89,
- 0x8f,0xa1,0x3e,0xe5,0xfd,0x5c,0x8e,0xd1,0x77,0x20,0x9c,0xca,0x3f,0x25,0x23,0x23,
- 0x8b,0x5d,0x9e,0xca,0x3f,0xd3,0x60,0xda,0xf8,0xc5,0xbc,0x7a,0x6d,0xbf,0xef,0x87,
- 0x53,0x86,0x4d,0xe4,0x29,0x47,0x96,0x7e,0xde,0x36,0x14,0x65,0xfe,0x10,0xc9,0xda,
- 0x60,0xbb,0x85,0x5f,0xe9,0xd4,0x50,0xac,0xde,0x9b,0xbf,0x56,0xd6,0xe9,0xe1,0x50,
- 0x5d,0xbe,0xb7,0x45,0x0e,0x19,0x29,0x3d,0x5c,0x8a,0x0e,0x24,0x64,0xe7,0x0f,0x4f,
- 0x98,0x1d,0xa1,0xea,0x62,0x75,0x0d,0x29,0x83,0x8e,0x6f,0x56,0x17,0xbb,0xd7,0x92,
- 0xb2,0x78,0xc7,0xea,0x40,0x9f,0xba,0x80,0x38,0xfc,0xeb,0x30,0xdd,0xa1,0x07,0x53,
- 0x53,0xc2,0x24,0x5f,0x6f,0xd3,0x83,0x07,0x2e,0x9b,0xef,0x7f,0xa0,0xa3,0xad,0x4c,
- 0x4f,0x75,0x94,0xb5,0xde,0x65,0xe5,0x0f,0x4b,0x12,0xd0,0xa1,0xfc,0x9d,0x74,0x03,
- 0xf8,0xd1,0x40,0x67,0x5e,0x49,0x73,0x12,0x1a,0x2e,0x58,0x7c,0x1a,0x11,0x8b,0x7f,
- 0x41,0xc9,0x09,0x18,0x64,0x3e,0x7c,0x43,0x5b,0xb9,0x91,0x22,0x75,0xe4,0xe6,0x96,
- 0xa2,0x04,0xa4,0xb4,0x2e,0x0c,0x3c,0xe4,0x26,0x85,0x8f,0x2b,0x2d,0x75,0xa8,0x8c,
- 0x0b,0x57,0x6d,0xf0,0x34,0x91,0x0b,0x50,0x3f,0xc3,0x77,0xc7,0x5f,0x2c,0x21,0x67,
- 0x5b,0x6b,0xcd,0x39,0xcd,0x1e,0x87,0x7f,0x21,0x3d,0x61,0x68,0xf5,0x54,0x79,0x15,
- 0x02,0x22,0x23,0x74,0x72,0x10,0x5e,0x46,0x03,0xfd,0xaa,0x83,0x5f,0x95,0xc8,0x07,
- 0x11,0xad,0x68,0x20,0xa1,0x3c,0x07,0x35,0x92,0x1c,0x47,0x62,0x78,0xbf,0xc2,0xf9,
- 0xa0,0xc3,0xbf,0x0c,0x48,0xa0,0x6f,0xf1,0xb0,0xd7,0x24,0x09,0x15,0x08,0x64,0x61,
- 0x93,0x50,0xe4,0x5c,0xaa,0x86,0x01,0x8c,0xe0,0x5f,0x85,0x97,0x40,0x3b,0xad,0xaa,
- 0xe8,0x64,0x5c,0x66,0x4f,0xeb,0xac,0xf4,0x8d,0xb3,0xc9,0x2d,0x8d,0x6b,0xdb,0x67,
- 0x0d,0xa9,0xf7,0x91,0x52,0x27,0x7f,0x08,0xbf,0x25,0xb5,0x43,0xbe,0x1a,0x79,0x23,
- 0x7d,0xa3,0x71,0xfe,0x60,0x4e,0x8d,0x7c,0xb3,0xf9,0x72,0x8b,0x36,0x14,0xac,0x44,
- 0xfc,0xe2,0x43,0x37,0x30,0x7e,0xc6,0x78,0x03,0x7c,0x7b,0xc8,0x10,0x3d,0xaf,0xd5,
- 0xf5,0xf9,0xd2,0x9e,0x24,0x5c,0x60,0xf3,0x75,0x56,0xee,0x17,0xf9,0x8d,0x5d,0x25,
- 0x69,0x48,0x21,0x7e,0x79,0x69,0x03,0xf3,0x75,0x61,0x58,0x82,0x81,0x99,0x92,0x52,
- 0xc2,0x12,0x3e,0x1f,0x9b,0x7f,0x5d,0x3a,0x15,0x59,0x92,0xde,0x53,0x39,0x2c,0xdf,
- 0x09,0xbf,0x40,0x6e,0xae,0x86,0xe4,0x25,0xf0,0x06,0xcc,0x37,0xf3,0x43,0xb2,0x5f,
- 0x3c,0x1f,0x91,0x3f,0x9c,0xc5,0x72,0x9e,0x37,0x4b,0x0f,0xb5,0x73,0x03,0xf1,0x8b,
- 0xce,0x48,0xe7,0xad,0x40,0x5c,0x16,0x3e,0x53,0x79,0x17,0x7e,0x0a,0xcb,0x06,0x30,
- 0xca,0xbd,0x93,0xa5,0x43,0x4d,0xf5,0x07,0xe4,0xce,0xca,0x9f,0xc6,0x66,0xb0,0xac,
- 0x88,0xdf,0xe6,0x5f,0x1f,0xc1,0x9f,0x0f,0xd7,0x6c,0xf1,0x26,0xae,0xa8,0x54,0xdf,
- 0xd6,0x6b,0x10,0xb6,0x72,0x2b,0x2b,0x0e,0x36,0x2e,0xa0,0xf9,0x09,0x8f,0xc3,0xbf,
- 0x92,0xc6,0x10,0x1b,0x97,0x99,0x1b,0x87,0x01,0x98,0x01,0x4b,0x8d,0xdc,0x7e,0x6d,
- 0x54,0xb9,0x16,0x7c,0x86,0xbc,0xd9,0xe6,0x5f,0x7d,0x6a,0x0f,0xcc,0x5f,0xe4,0xd5,
- 0xe4,0x0a,0xe5,0x80,0x12,0x36,0xf2,0xe3,0x0f,0x2d,0x87,0x1e,0xe4,0x05,0x4b,0xe2,
- 0xe8,0x0f,0x2d,0xfe,0xb5,0x1c,0xee,0x57,0x02,0x46,0x34,0x7e,0x17,0x23,0x59,0x01,
- 0xe3,0x86,0x38,0xa9,0x50,0x9e,0x90,0x66,0x2f,0x52,0xe3,0xf8,0x46,0x59,0xfc,0xab,
- 0x16,0x19,0xc7,0x1c,0xc6,0x41,0xe6,0x93,0x5f,0xc1,0x0e,0x23,0xaf,0xdf,0x3d,0x1f,
- 0x59,0xc9,0x0e,0xa3,0xb4,0x9f,0xe4,0xd8,0xeb,0xab,0xb8,0x75,0x8d,0xfe,0xc4,0xf5,
- 0x95,0xb7,0xcc,0x2e,0xa6,0x8f,0xeb,0x65,0x51,0xf7,0x2d,0xee,0xe2,0xf6,0xc7,0xf5,
- 0x59,0xd1,0xca,0x5b,0xdc,0xad,0x99,0xfc,0x61,0xaa,0xa9,0x0e,0xd9,0x56,0x79,0x99,
- 0x31,0xd8,0x14,0x2e,0xce,0x5f,0xd3,0x50,0x86,0x57,0xc2,0xc5,0x4b,0x5e,0x91,0xab,
- 0x25,0x81,0x5f,0xd3,0x90,0x76,0x69,0x97,0x34,0x22,0x5a,0x0d,0x19,0xef,0x20,0xff,
- 0xca,0xdf,0xd4,0x30,0x10,0x65,0xf9,0xc3,0x8d,0xc8,0xbf,0x2e,0xb1,0xf1,0xcb,0xf8,
- 0x10,0xa1,0xcd,0xbb,0xb9,0xed,0x77,0xfa,0x01,0x35,0xbc,0xf8,0xe6,0xb8,0x67,0xa7,
- 0x71,0x20,0xba,0xaa,0x69,0xc9,0x26,0x79,0xa6,0xcd,0xbf,0x3e,0x34,0x3a,0x9a,0xaa,
- 0xb7,0xe4,0xaf,0x25,0x88,0xef,0x80,0x8f,0x6e,0x9d,0x7f,0x56,0xe3,0xdb,0xfa,0x6c,
- 0x4d,0xa5,0xfe,0x02,0x27,0x7f,0x48,0xb7,0xa9,0xc1,0xa8,0xaa,0x6d,0xee,0x93,0xb6,
- 0xa9,0x7a,0xf4,0x46,0x6d,0x73,0x7b,0x7b,0x0b,0xc4,0x9a,0xd4,0x4b,0x48,0xab,0x93,
- 0x3f,0xec,0xb8,0x3f,0x16,0x8c,0x3e,0xbc,0x39,0x32,0x80,0xb0,0x35,0xf3,0xfa,0xbc,
- 0x2d,0xa4,0x02,0x1e,0x96,0x66,0x37,0xa9,0x5b,0xc8,0x5a,0x3b,0x7f,0xf8,0x38,0x60,
- 0x7f,0x9a,0xbc,0x9b,0x8b,0x3e,0xd0,0x3e,0x84,0x70,0xd3,0xf4,0xad,0xf2,0x2f,0xe0,
- 0x80,0x41,0x62,0x4b,0xb6,0x7a,0x76,0xd9,0xf9,0xc3,0x76,0xaf,0xc8,0x16,0x16,0x0d,
- 0xd0,0xb3,0xdb,0x5f,0x88,0x15,0xf8,0x8b,0xfa,0xe8,0xd9,0xc6,0xda,0xe8,0x1c,0xbf,
- 0x7c,0x83,0x9d,0x3f,0xdc,0x46,0x8e,0x19,0x5d,0x5a,0xb0,0xfd,0x6b,0x94,0x98,0x39,
- 0x61,0xad,0x9a,0xca,0x65,0x24,0x65,0x74,0xb1,0x44,0xa2,0xdb,0xc9,0x1f,0x22,0x53,
- 0x08,0xd0,0x1b,0x90,0x7f,0xe1,0xba,0x61,0xf9,0x43,0x46,0xc4,0x90,0xa4,0x57,0x26,
- 0x22,0x6e,0xe1,0xc6,0x18,0x7e,0x31,0x17,0x87,0x61,0xa1,0x97,0x1b,0x51,0x66,0x74,
- 0x42,0xa5,0xe9,0x0e,0xe9,0x6e,0x3b,0xbf,0x31,0xd5,0x58,0x47,0xcb,0xfa,0x3c,0xf7,
- 0x92,0xa9,0xc6,0x43,0xe1,0x32,0x33,0xda,0x4c,0xa6,0xd2,0x75,0xd2,0xac,0x94,0x7a,
- 0x0f,0xe9,0xb0,0xf3,0x87,0x05,0xe6,0x7b,0xc3,0xa1,0xc1,0xfc,0x85,0xee,0x3a,0xfa,
- 0xef,0xc9,0x64,0x1a,0xe3,0xf0,0x82,0xc4,0xcb,0xe9,0x6b,0x86,0x0a,0x46,0xda,0xdc,
- 0x56,0xfe,0x70,0xda,0xaf,0xd0,0xcf,0x57,0xf7,0x3f,0xf8,0x54,0xf9,0x4a,0xfd,0x63,
- 0xa3,0xee,0xb0,0xef,0x19,0xf9,0x93,0xfe,0x73,0xb0,0xe0,0x5d,0x8c,0x7b,0x23,0x22,
- 0xbf,0x61,0xb8,0x2e,0xc0,0x51,0x7a,0xcd,0xb0,0xf7,0xbc,0xfc,0x13,0xe3,0x28,0xdd,
- 0x31,0xa2,0xbc,0xb8,0xa3,0xce,0x38,0xd4,0x7f,0x15,0xcb,0x28,0x6a,0x36,0xff,0x7a,
- 0x41,0x5b,0xa7,0xe8,0x66,0xfe,0x6a,0xf9,0x3b,0x4d,0xc8,0xad,0x3e,0x89,0xde,0x4b,
- 0xbc,0xe6,0xba,0x9d,0x48,0x0c,0xef,0x25,0xb3,0x33,0xf9,0x43,0x5e,0x3d,0x59,0x15,
- 0x99,0xda,0xb2,0x4e,0x9b,0x61,0x5e,0x7f,0x0f,0x79,0xb4,0xe0,0xa7,0xfa,0x77,0xfb,
- 0xdc,0xcd,0x9a,0x62,0xe7,0x0f,0x5f,0xc3,0x90,0x58,0x1f,0xce,0x9b,0x4b,0x96,0x34,
- 0xfe,0x52,0xab,0x38,0x35,0x65,0x61,0xc1,0xee,0xf8,0x43,0x6e,0xbd,0x77,0x76,0xa8,
- 0xf5,0x32,0x9b,0x7f,0xfd,0x2b,0x3d,0x0a,0xcf,0xef,0xf7,0x0e,0x97,0xd7,0xc2,0x51,
- 0x5c,0xcb,0x55,0x67,0xe4,0x97,0xe8,0x7b,0xd2,0x55,0xc3,0x05,0xa3,0xee,0x4a,0xf1,
- 0x5d,0x88,0x5f,0xeb,0x39,0x7e,0x85,0xda,0x86,0x2a,0xce,0xa9,0x0b,0xfb,0x3a,0xf6,
- 0xca,0x2b,0xb5,0x8f,0x8b,0x6b,0xfa,0x5c,0x7b,0x1a,0xac,0xb8,0x4e,0xd2,0xde,0x85,
- 0xf7,0xd4,0xb9,0x18,0xc6,0x97,0xaf,0x84,0xa5,0x2c,0xaf,0xd5,0xfc,0xfd,0x5a,0xf5,
- 0x55,0x98,0x6b,0x7a,0x43,0xb2,0x6e,0xf3,0x2f,0x56,0xa9,0x61,0x90,0x44,0x76,0x43,
- 0x27,0xd9,0xce,0x0d,0xc2,0x12,0x65,0xeb,0x93,0x72,0x22,0x66,0xf1,0xaf,0x95,0x38,
- 0x4d,0x01,0x73,0x56,0xd2,0xef,0x85,0x5f,0x72,0xd7,0x1d,0x08,0xaa,0x9d,0xc0,0x7d,
- 0xa6,0x6e,0xe5,0x0f,0x21,0xd8,0xd8,0x06,0x09,0xf3,0x86,0xf9,0x64,0x43,0xeb,0x0e,
- 0x88,0xa5,0x2e,0x9b,0x0b,0x1b,0xa4,0x36,0x18,0x34,0xdd,0xf3,0x9c,0xfc,0xa1,0xfa,
- 0x63,0x78,0x4f,0x9a,0xf7,0x4a,0xfe,0x19,0xb9,0x56,0xff,0x3d,0x94,0xbf,0x7b,0xd3,
- 0x2a,0x79,0xaa,0xf1,0xea,0xdd,0x57,0xff,0x2f,0xef,0x70,0x83,0x6e,0xe5,0x0f,0xa7,
- 0x8d,0xd2,0x31,0xb8,0x2a,0xe5,0xdb,0x2b,0x0f,0xe9,0xef,0x01,0xfa,0xc3,0xd3,0x32,
- 0x5e,0x59,0x71,0x85,0xb9,0xf1,0xb4,0xbc,0xcb,0xce,0x1f,0x62,0xbc,0x41,0xeb,0xd3,
- 0xd3,0xbb,0xe5,0xf7,0x8d,0x23,0x10,0x8a,0x79,0xbb,0x65,0x16,0x6f,0x84,0xd3,0xde,
- 0x6e,0xa7,0xfe,0x25,0xf8,0x57,0xba,0xb3,0xdb,0x9f,0x56,0xdf,0xa2,0x81,0x88,0xda,
- 0x4d,0xf0,0x8a,0xbe,0xa0,0x57,0xed,0x8e,0x0c,0x5b,0xf1,0x8f,0x88,0xd5,0xcd,0xcb,
- 0x42,0x24,0xcd,0xc8,0x63,0x14,0x43,0xf4,0xc3,0xae,0x3d,0x44,0x4f,0xa1,0x71,0xca,
- 0x65,0x7d,0x97,0x60,0x37,0x53,0x92,0xe4,0x7d,0x78,0x84,0xea,0x4d,0x08,0x5b,0x43,
- 0xda,0xb3,0x5a,0x85,0x19,0x75,0xea,0x5f,0x2c,0x7f,0x78,0x4e,0x64,0xa4,0x5f,0x86,
- 0x43,0x2d,0xe1,0xc6,0x20,0xe3,0xc2,0x67,0x61,0x15,0xab,0x64,0x65,0xd7,0xbf,0x18,
- 0xdb,0x1a,0x6e,0x1b,0x66,0x01,0x70,0x8c,0xe7,0x0f,0xcf,0x03,0xab,0x88,0xc9,0xe3,
- 0xf9,0x97,0x99,0x9f,0xbc,0x75,0x19,0x4b,0xc1,0x35,0x09,0x4e,0xcd,0xf9,0x57,0xc3,
- 0x9b,0x59,0xfc,0x8b,0x54,0x0f,0xba,0x5f,0xf8,0x73,0x1d,0xf6,0x1a,0x01,0x16,0xb4,
- 0x0f,0x59,0xd9,0x5d,0xbb,0xfe,0x65,0xf1,0xaf,0x5e,0xf5,0x6a,0x62,0x40,0x17,0xbe,
- 0x77,0x3c,0x3f,0xff,0x2c,0xcf,0xd8,0x93,0x2f,0xac,0xf5,0xc5,0xf9,0x57,0xd5,0xa0,
- 0xfb,0x3e,0x8c,0xc7,0xf6,0x99,0x3b,0x74,0x84,0xad,0xe3,0x2d,0x4f,0xb7,0x54,0xb1,
- 0x5a,0xd2,0x90,0x9d,0x3f,0xbc,0x19,0x58,0xfd,0xcb,0x7b,0x8d,0xdc,0x80,0xc6,0x7c,
- 0xbd,0xa0,0x46,0x3e,0x42,0x4f,0xc6,0x6b,0x07,0x7d,0xd7,0x60,0x4c,0x6b,0xe1,0x17,
- 0xab,0x7f,0x5d,0x6b,0x16,0x84,0xe4,0x34,0x1a,0x2f,0x2a,0x48,0x81,0xc5,0xb8,0x70,
- 0x80,0xe3,0xf8,0x17,0x67,0x91,0xef,0xc3,0x21,0x98,0x4f,0xf9,0xb8,0xce,0x92,0x3a,
- 0x56,0xe0,0xb3,0xeb,0x5f,0x97,0x8a,0xdc,0xbb,0xa7,0xf9,0xae,0x7e,0x8c,0x0f,0xcb,
- 0xa8,0x9b,0x25,0xe1,0x9f,0xce,0x99,0x63,0xaa,0xcd,0xb7,0x9c,0x12,0xf7,0xe1,0xfc,
- 0x8b,0x56,0xa5,0xdd,0xab,0xc9,0xe7,0xda,0x3a,0x7a,0x45,0x02,0x8d,0xe3,0xf0,0xb4,
- 0xc9,0xab,0x78,0xe9,0x71,0xfc,0x8b,0x8d,0x34,0xc5,0x7c,0x4b,0xe2,0x67,0x6c,0xec,
- 0x7b,0x04,0xff,0x7a,0xdd,0xc9,0x1f,0xb2,0x0a,0x02,0x2d,0x48,0xe4,0x9e,0xa5,0x47,
- 0xe0,0xaa,0x6d,0x05,0x09,0x79,0x10,0xbe,0xa0,0x75,0x34,0x98,0xa9,0x7f,0x49,0x36,
- 0xdb,0xca,0x45,0x83,0xd6,0x28,0xb9,0xe3,0xf8,0x97,0x85,0x5f,0xbc,0x2e,0x63,0x14,
- 0x3c,0x2c,0xef,0x5c,0x78,0x16,0x61,0xab,0x20,0x7e,0x37,0x63,0x2e,0x0b,0x18,0x11,
- 0xeb,0xcd,0xe0,0x17,0xb2,0x89,0x66,0x4f,0x31,0xba,0xe5,0x3d,0x24,0xc1,0xb9,0x95,
- 0xf2,0x2c,0x99,0xcc,0xbf,0xaa,0x17,0x7b,0x10,0xda,0xd0,0xb8,0xcb,0x70,0xf3,0xfa,
- 0x17,0xcc,0x64,0x6d,0xf6,0x8f,0xe7,0x5f,0x1e,0xcd,0x8d,0x86,0x1e,0x60,0xc5,0xb2,
- 0x3e,0x7e,0x45,0x65,0xb5,0x24,0x0b,0xbf,0x62,0xa2,0x87,0x09,0xb9,0xcc,0x40,0x5a,
- 0x51,0xfc,0x20,0xef,0xf3,0x2d,0x0b,0x8a,0x83,0xe3,0xeb,0x5f,0xd8,0xe7,0xcb,0xe3,
- 0xf2,0x9b,0xf0,0xbf,0xb5,0x7a,0x63,0x23,0x12,0x16,0xf5,0xbc,0xa8,0x13,0x65,0xd5,
- 0xbf,0x18,0x47,0xf3,0xf5,0x37,0xcc,0x80,0xdf,0x55,0x86,0x9b,0xf2,0x39,0x47,0x33,
- 0xc2,0x4d,0x2b,0xe3,0xf2,0x7e,0xb0,0xf9,0x97,0xc2,0xf8,0x97,0x87,0xa2,0x9f,0x5d,
- 0x6f,0xcc,0x06,0x95,0xb2,0xfa,0x97,0x1e,0x40,0xa3,0xc8,0xaa,0x7f,0x45,0xa1,0xdd,
- 0xee,0x73,0x23,0xdd,0x83,0x20,0x9e,0xc7,0xfa,0xbc,0xad,0x0c,0x17,0x9a,0x46,0x5e,
- 0xb7,0xf0,0x4b,0xd9,0xc9,0xc6,0xbe,0x08,0xdf,0xde,0xef,0xc2,0xc3,0xda,0x6c,0xa3,
- 0x34,0x6e,0xe0,0xd8,0x5b,0x75,0x1c,0xbb,0x53,0xff,0xb2,0xfa,0x9c,0x1b,0x97,0xbf,
- 0x0b,0x27,0x0d,0x16,0x27,0x60,0x7f,0x3e,0xc4,0x07,0xe5,0x65,0xf5,0xaf,0x6c,0xfe,
- 0xc5,0x46,0xf1,0x0b,0xf8,0x90,0x72,0x83,0xfd,0xab,0x0b,0x8b,0x7c,0xf1,0x86,0x9f,
- 0x65,0xf1,0x2f,0xe0,0xd5,0xae,0x18,0x86,0x97,0x0b,0x90,0x88,0x59,0x73,0x1a,0xcc,
- 0xd4,0xbf,0x38,0xff,0x9a,0x93,0x74,0xc7,0x90,0x92,0x3f,0x08,0x3a,0x23,0x62,0x83,
- 0x9c,0x91,0xa9,0xac,0xfe,0x25,0xe6,0x42,0xf0,0x2f,0xd5,0x3d,0x9b,0xac,0x04,0x9a,
- 0xaa,0x10,0xf5,0xe5,0xe7,0x79,0xc5,0xd9,0xae,0x7f,0x21,0xff,0x82,0xab,0xa0,0x2a,
- 0xe4,0x36,0x36,0x4f,0x35,0xd7,0x80,0xc4,0xd2,0x86,0xef,0xb2,0x37,0xbc,0xaf,0xa3,
- 0x19,0x6f,0xc8,0xef,0xd3,0xa1,0x3e,0xc6,0xf8,0x57,0xa2,0x20,0x2a,0x7f,0x87,0xf6,
- 0xd1,0xab,0x86,0xbd,0xab,0xe5,0xe3,0xf0,0x87,0x74,0xfd,0xc0,0x86,0xd5,0xf2,0x47,
- 0x16,0x7e,0x95,0xec,0xd6,0xce,0xb1,0x3a,0x2c,0xc8,0x9f,0x28,0x38,0xc0,0x63,0xd5,
- 0xb8,0x76,0xf0,0x4a,0x5d,0x3f,0xae,0xa6,0x5e,0x81,0x5f,0xa0,0xbc,0x88,0xfe,0xf0,
- 0x5a,0xdd,0x1b,0x95,0x5f,0x32,0x2e,0xd0,0x3d,0x67,0x5c,0xdd,0xe5,0x17,0xd0,0xfb,
- 0xd5,0x23,0x45,0x2e,0x32,0x35,0x81,0x5f,0xa5,0xc8,0xa4,0x30,0xfc,0xce,0xbf,0xc1,
- 0x3f,0x1d,0x3e,0xd7,0xaf,0x1c,0x54,0xef,0x93,0x37,0xc0,0xbe,0x78,0x95,0x99,0x7f,
- 0x2f,0xf9,0x48,0x3c,0x1f,0xab,0xfe,0x65,0xa8,0x8b,0xc8,0xa3,0xf0,0x0c,0x29,0x4f,
- 0xe5,0xad,0x12,0x7d,0x66,0x9d,0x37,0xc5,0xf3,0xb1,0xf8,0x17,0xe4,0x01,0xf1,0xd1,
- 0xed,0xfd,0x15,0x0c,0xc4,0xf1,0x8a,0x8b,0x57,0xc4,0x52,0x36,0x7e,0x31,0x3f,0x56,
- 0x0b,0x5e,0x90,0x5f,0xd0,0xbb,0xcd,0xbd,0xe8,0xd0,0xca,0x59,0x4e,0xe6,0x9f,0xf8,
- 0x7a,0x77,0xf0,0x8b,0xf9,0x04,0xed,0x28,0xfd,0xfa,0x6e,0x60,0xf5,0x2f,0xe1,0xeb,
- 0x24,0x46,0xc4,0x64,0x2b,0x7f,0x58,0x26,0xea,0x5f,0xe0,0xed,0x41,0x9a,0x73,0x78,
- 0xeb,0x3c,0x24,0x62,0x3c,0x67,0x35,0x0f,0x7d,0x4b,0x83,0x29,0xf0,0x4b,0xf0,0xaf,
- 0xea,0x79,0xee,0x76,0xcf,0x12,0x25,0x81,0x00,0x94,0xcf,0xfc,0xe1,0x5e,0x91,0x1f,
- 0xb3,0xd6,0x17,0x15,0x39,0x2b,0x1d,0x5f,0xd1,0x95,0xca,0x56,0x95,0xf3,0xaf,0x21,
- 0xf8,0x25,0xc7,0xb8,0x9c,0x0c,0xff,0x52,0x70,0x5c,0x8a,0xbb,0x18,0xe7,0x34,0xa1,
- 0x6c,0x7f,0x79,0x4a,0x38,0x8c,0x73,0x7a,0x7d,0xc2,0xf4,0xcc,0xdd,0xdc,0x6b,0xe7,
- 0x0f,0xd9,0x77,0xd5,0x69,0xde,0xb5,0xf2,0x3f,0x9a,0xc7,0xa4,0x79,0xef,0x16,0xec,
- 0x91,0x3f,0x81,0x8f,0x8d,0x42,0x56,0x2b,0x31,0x25,0x9b,0x7f,0x25,0xb0,0xcf,0xaa,
- 0x6f,0x6d,0xd1,0x50,0xe3,0x19,0xa8,0x4b,0xe5,0x7f,0xde,0xc0,0xaf,0x98,0x4b,0x87,
- 0xe5,0x4c,0xfd,0x8b,0xe3,0x97,0xef,0x59,0xf9,0x20,0x0c,0xd1,0x9a,0x3e,0xef,0x88,
- 0x3c,0xda,0x3e,0x16,0xb8,0xb2,0x02,0x0d,0x47,0xbf,0x21,0xf0,0xeb,0xc6,0x2e,0xed,
- 0x23,0x38,0x46,0xb7,0xbd,0xab,0x76,0xb5,0x8e,0xc6,0x5e,0x8a,0xe3,0x42,0x4b,0xb6,
- 0x66,0xf4,0x1b,0xc2,0xd7,0x85,0xf5,0xc1,0x4b,0x76,0x41,0x65,0x8f,0x1a,0x0a,0x6c,
- 0xa0,0x7b,0x61,0xb9,0xda,0x11,0xce,0xb1,0xf5,0x1b,0x25,0xac,0xda,0xc5,0xd0,0x21,
- 0x32,0xa8,0x6e,0xd5,0x03,0xe6,0x8a,0x24,0x0c,0x15,0x5e,0x03,0x95,0xd7,0x67,0xe9,
- 0x37,0x4a,0x9c,0x2c,0xdf,0x21,0x33,0xad,0xd6,0xb0,0x69,0xda,0xad,0x9e,0x23,0x0b,
- 0x12,0xde,0x89,0xf8,0x25,0xd0,0x6a,0x94,0xda,0xf5,0x2f,0x0c,0x4e,0xe6,0x4c,0xc2,
- 0xaf,0xa5,0xc9,0xa2,0x0f,0x03,0xa9,0x45,0x4c,0xc8,0xc1,0x38,0x35,0x59,0xc0,0x1c,
- 0xfe,0x38,0xfd,0x46,0xb5,0x79,0x63,0x32,0x30,0x88,0x5c,0xe6,0xef,0x7b,0xb0,0x1b,
- 0xa3,0xea,0x3e,0x3d,0xd0,0x93,0x9f,0x94,0xbb,0xc6,0xe9,0x37,0x7a,0x3a,0xd9,0x1b,
- 0x45,0x85,0xeb,0xc6,0x91,0xa6,0x39,0x90,0x65,0xf4,0x1b,0x1c,0x0b,0x30,0x3e,0xbc,
- 0xd0,0x84,0x44,0x8c,0x15,0x95,0x8e,0xc3,0xde,0x96,0xf2,0x0a,0x69,0xb5,0xb6,0xd5,
- 0xe6,0x5f,0x5e,0x86,0x5f,0x26,0xf2,0xaf,0x83,0x09,0x80,0x60,0x1a,0x81,0xec,0xb0,
- 0x7a,0x3a,0x19,0x82,0x82,0x6c,0xfd,0x06,0x8e,0x02,0xc7,0x7e,0x52,0x1e,0xa1,0xa3,
- 0xc0,0x6b,0xac,0x9f,0xe8,0x63,0xe4,0x79,0x03,0xaf,0xd8,0xfc,0xcb,0x35,0x54,0xca,
- 0x9f,0x4f,0xb7,0x5c,0x09,0x27,0xa0,0xeb,0x30,0x3e,0xa8,0x4f,0xe0,0x5c,0xf4,0x27,
- 0x65,0x18,0x78,0x64,0xea,0x5f,0x16,0x7e,0x45,0x4a,0xb5,0x76,0x28,0xeb,0xf5,0xe0,
- 0x7a,0xa7,0xfb,0xf4,0xbf,0x37,0xd4,0x61,0xe4,0x4d,0xfc,0x3e,0xa6,0x85,0x5f,0x88,
- 0xb0,0x61,0x78,0xa1,0xbd,0xec,0x43,0x46,0x1e,0x29,0xae,0xc1,0xb9,0x95,0xab,0x1d,
- 0xfe,0x55,0xec,0xe0,0x57,0x5e,0xac,0x95,0xb2,0xfc,0xc6,0x62,0x7e,0xa5,0x19,0x1f,
- 0x82,0xc3,0xbf,0x06,0x39,0x7e,0xf9,0x12,0xb9,0xa5,0x70,0xc1,0x64,0xf9,0x43,0x59,
- 0x64,0x14,0x97,0x24,0xca,0x1d,0xfe,0x95,0x50,0x58,0xae,0x69,0x29,0x95,0x4f,0x68,
- 0x23,0xa1,0x1f,0xc3,0x4d,0xb4,0x88,0x11,0x8d,0x3a,0x75,0x29,0xcd,0x1d,0xa7,0xdf,
- 0xe0,0x7e,0xf5,0x03,0xe3,0x00,0xc2,0xd6,0x91,0x78,0xa4,0x0f,0x79,0x41,0x98,0x39,
- 0xcf,0xf1,0xf8,0x65,0xe4,0xc5,0xc9,0x07,0xb4,0x05,0xf9,0x57,0x20,0x1e,0x58,0xae,
- 0xb4,0x98,0x81,0x45,0x1e,0x07,0xbf,0x4a,0x05,0x7e,0x09,0xd9,0xc6,0xfd,0x1c,0xb6,
- 0xfc,0x03,0x9c,0xac,0x79,0x1c,0xfc,0x52,0x15,0x81,0x05,0x08,0x01,0x03,0x24,0x8f,
- 0xe8,0x51,0xb7,0x46,0x1a,0x1f,0x6a,0xab,0xd0,0x0d,0x4f,0x06,0xbf,0xbc,0x16,0xc2,
- 0xba,0xd0,0x03,0x44,0x61,0x41,0x71,0xc1,0x1a,0xf9,0x44,0x53,0x0a,0xba,0x8a,0x7d,
- 0x6b,0x1c,0xfc,0x9a,0x66,0xfb,0xf9,0xc2,0x37,0xe1,0xbc,0x82,0xfc,0x0b,0xfd,0x3c,
- 0x32,0x32,0x44,0xab,0x78,0x79,0xb6,0x7e,0x43,0x70,0x99,0x1f,0x28,0x3d,0x24,0xdc,
- 0x58,0x80,0xa4,0xc6,0x38,0x9f,0x17,0x32,0x36,0x60,0x1b,0x47,0xbf,0xa1,0x75,0x2b,
- 0xd5,0x92,0xa7,0x95,0xa4,0x55,0x96,0x3f,0xac,0x84,0x48,0xcf,0x6d,0xdd,0x46,0x40,
- 0xca,0x6f,0x85,0x8c,0x7e,0xc3,0xc2,0xaf,0xd6,0x3e,0xf2,0x04,0xc6,0x87,0x51,0x34,
- 0xe8,0x1e,0x08,0xdc,0x80,0x46,0xb6,0x7e,0xc3,0x1a,0x3b,0x7d,0xa2,0x69,0xbb,0x01,
- 0x02,0xbb,0x03,0xac,0x1a,0x98,0xd1,0x6f,0x28,0x6f,0x91,0x3a,0x63,0x69,0xfc,0xd6,
- 0xef,0x6e,0x3d,0x21,0x85,0x8d,0x9c,0xf8,0xad,0x03,0xca,0x59,0xe2,0xbf,0xc5,0x1b,
- 0x2f,0xca,0xe8,0x37,0xf0,0x5f,0xb1,0x3e,0x13,0xd6,0xf9,0x5a,0x36,0x9c,0x01,0xed,
- 0x24,0xfc,0x7a,0xd1,0xe5,0xf1,0xdc,0x2c,0xfd,0x86,0x15,0x81,0x24,0xd4,0x54,0x4e,
- 0x98,0xe1,0x97,0x8e,0x2b,0xca,0xd2,0x6f,0xf0,0x67,0xc8,0xf8,0x17,0xa2,0x15,0x4b,
- 0x1b,0x4e,0x31,0x9f,0x14,0x69,0x43,0x04,0xb2,0x74,0x10,0xf1,0xcb,0x9f,0xd1,0x6f,
- 0xd8,0xef,0x98,0xa4,0xc9,0x36,0x11,0x6b,0x29,0xe3,0x8a,0x29,0x47,0xbf,0x31,0x55,
- 0xbc,0xcf,0xab,0x49,0x29,0xbc,0x04,0x33,0xfa,0xe4,0xfb,0x10,0x38,0xda,0xc9,0x9c,
- 0xbe,0xca,0x55,0x19,0xfd,0x06,0xcf,0x1f,0xa6,0x7d,0x23,0x6d,0x9b,0xe1,0x55,0x3a,
- 0x77,0xc8,0x75,0x5f,0xdb,0x74,0x63,0x3f,0x9d,0x96,0xf6,0xde,0x2b,0xdb,0xfa,0x8d,
- 0x69,0xc2,0x27,0xf8,0x9e,0x92,0x4d,0xf5,0x63,0x78,0x0e,0x61,0xcb,0xf3,0x49,0x74,
- 0x44,0xa9,0xeb,0xf7,0xec,0xcd,0xe8,0x37,0x3e,0xb5,0xfc,0x61,0xdb,0x7e,0xe3,0x3d,
- 0x5a,0x33,0xb0,0xf1,0xd9,0x1d,0x75,0x8d,0xa9,0xd6,0xf0,0x30,0xae,0x2f,0x87,0x7f,
- 0x3d,0xc6,0xfa,0x83,0xd1,0xa9,0xff,0x75,0x58,0xa7,0xcf,0x4a,0x7b,0x9e,0x0b,0x3c,
- 0xa6,0xd1,0xe4,0xac,0xc1,0xfc,0x1a,0xb7,0xcd,0xbf,0x0c,0xbe,0x06,0x53,0xb8,0xf4,
- 0xfa,0xe9,0xff,0x50,0x66,0x31,0x63,0x89,0xb1,0x65,0xee,0x15,0xa9,0x4b,0x57,0x91,
- 0xf6,0x2c,0xfd,0x86,0x18,0x7b,0x0f,0xec,0xe0,0xf9,0x79,0xc4,0x8b,0x38,0xd9,0xdd,
- 0x8f,0x0f,0x61,0x6b,0x36,0x7e,0xd5,0x31,0x57,0x60,0xde,0xf5,0x4e,0xfa,0x1a,0x66,
- 0xfc,0x98,0x1c,0xc3,0x30,0x79,0xc9,0xb0,0xfc,0xeb,0x71,0xf8,0x85,0x3e,0xb3,0xfc,
- 0x84,0xfa,0x08,0xbc,0x88,0x4e,0x4f,0xde,0x0d,0x83,0x50,0x83,0xf8,0x25,0x2d,0x9b,
- 0xa4,0xdf,0x18,0x86,0xf7,0xd0,0xb7,0x5c,0x3e,0x0c,0xa3,0x70,0x18,0xe6,0xf5,0x22,
- 0x90,0xa5,0x33,0xfc,0xcb,0x8a,0xde,0xdf,0xd7,0xdf,0x80,0x05,0xe6,0x23,0x88,0x5f,
- 0xe8,0xf4,0x76,0x99,0x1d,0x88,0x5f,0xb1,0x09,0xfa,0x0d,0xc6,0x41,0x24,0x4b,0xbf,
- 0xb1,0x2b,0xc6,0x88,0x98,0xdf,0xd6,0x6f,0x20,0xda,0xce,0x63,0xfa,0x8d,0x05,0xc4,
- 0x8c,0x3c,0x02,0x15,0x08,0x0a,0xfe,0xc3,0x89,0x04,0xcc,0xee,0xc5,0xbe,0x38,0xfc,
- 0x8b,0xfb,0xf9,0x94,0xef,0x94,0x9c,0x6e,0x7d,0x07,0xae,0x3a,0xe6,0x19,0x2e,0x1a,
- 0x6d,0x1d,0x5c,0x3d,0x2f,0xe5,0xfd,0x07,0x39,0x6d,0xf1,0xaf,0x4b,0xcf,0x33,0x7f,
- 0xd8,0xef,0xfb,0xbc,0x68,0xb8,0xef,0x1f,0xa0,0xfe,0x88,0xe7,0xf3,0x97,0x87,0x94,
- 0x37,0x03,0xd7,0x9a,0x7f,0xff,0xb9,0x3c,0xe8,0xca,0xc6,0xaf,0x01,0xdf,0x08,0xd2,
- 0xae,0x31,0x13,0x27,0x8e,0xf3,0x2f,0x6d,0x1e,0x33,0xc6,0xe3,0x57,0xca,0x83,0xb4,
- 0x4b,0x79,0x5e,0xaf,0x4e,0x7b,0x92,0x9b,0x87,0xf4,0x97,0x20,0x90,0xf6,0x64,0xeb,
- 0x0f,0xed,0xb9,0xb0,0x81,0x8c,0x1c,0xa6,0x7b,0x2b,0x78,0x52,0x37,0x1b,0xbf,0x2c,
- 0xed,0x8a,0x2d,0x44,0xcc,0xd4,0xbf,0xc6,0xf3,0x2f,0x1f,0x0b,0x21,0x9e,0x17,0x49,
- 0x5d,0x5e,0xff,0x12,0xba,0xc1,0x71,0xf8,0x65,0xc1,0xd6,0x78,0x63,0x02,0x7e,0xb1,
- 0xfb,0x28,0xe7,0x94,0xe9,0xe2,0x86,0xa7,0x99,0xa0,0x71,0x12,0x7e,0x21,0x9e,0x3a,
- 0xb4,0x6b,0x08,0x17,0xc8,0xf6,0x8b,0xe8,0x0f,0x33,0xe3,0xca,0xe4,0xe7,0x27,0xe0,
- 0xd7,0x89,0xce,0x7b,0xc9,0x71,0xca,0x65,0x87,0x0c,0xbf,0x5e,0x8a,0x97,0xa5,0x3d,
- 0xf7,0xd9,0xeb,0xcb,0xc1,0xaf,0xab,0x1b,0x8e,0x30,0x21,0x62,0xda,0xb7,0x50,0x3e,
- 0x0c,0xe7,0x12,0x0b,0xcd,0x6c,0xfd,0xe1,0x6e,0x31,0x8a,0x64,0xc3,0x90,0x31,0x26,
- 0x3a,0x3f,0x6a,0x9c,0xb3,0x34,0x93,0x0e,0x7e,0x89,0x71,0x2d,0xcc,0x0d,0x66,0x1e,
- 0xd4,0xb9,0x8e,0x1f,0xa2,0xb1,0xe8,0xa3,0x89,0xf8,0x95,0x63,0x2d,0x7c,0x16,0xaf,
- 0xbe,0x64,0x2c,0x33,0xc7,0xeb,0x0f,0x2d,0xfc,0x9a,0xae,0x59,0xc6,0x71,0xd8,0xd7,
- 0x5e,0x76,0x62,0xbc,0xfe,0x70,0xaf,0x12,0x34,0x65,0xe6,0x52,0xf8,0xd8,0x93,0x99,
- 0xb1,0x4f,0xe0,0x5f,0xbe,0x84,0xa7,0xd2,0x32,0x18,0xff,0x82,0x05,0xcc,0xc8,0xd2,
- 0x1f,0x5a,0x6a,0x43,0x87,0x76,0x4d,0xe6,0x5f,0x8e,0xc2,0x4d,0x18,0x88,0x05,0x15,
- 0xaa,0x75,0x65,0x02,0x7e,0x09,0x49,0xa1,0xc4,0x65,0x75,0x15,0x9a,0x75,0xe5,0x62,
- 0xf8,0x65,0x19,0xce,0x15,0x07,0xbf,0x6c,0xfe,0x45,0xfa,0xb2,0x89,0x58,0x30,0x1b,
- 0xbf,0x04,0xff,0x2a,0x16,0x5d,0x6d,0xaa,0x83,0x07,0x98,0x10,0x71,0xe4,0x36,0xde,
- 0x67,0x07,0xbf,0x26,0xf4,0xf9,0x26,0x6e,0x68,0x13,0xf9,0x17,0xc7,0xaf,0x7e,0xf6,
- 0x27,0xc2,0x4b,0x63,0x68,0xdc,0xcc,0xdb,0xec,0xcf,0xd2,0x1f,0x42,0xb5,0xea,0x61,
- 0xb4,0x2b,0xc9,0x93,0xd5,0x18,0xa2,0x27,0x0d,0xc6,0xc8,0x26,0xe0,0x57,0x44,0xf4,
- 0x59,0x45,0xf0,0xf5,0x47,0xfa,0x12,0xd6,0x28,0x26,0xe1,0x17,0x0c,0x64,0x3d,0x04,
- 0xa5,0x80,0x8f,0x3d,0xc3,0xbf,0xde,0xca,0xee,0xb3,0x65,0x4c,0x67,0x62,0xce,0xc1,
- 0x8c,0x7e,0xe3,0xde,0xf1,0x6d,0x8a,0xb2,0xf4,0x87,0xb1,0x6c,0xfc,0xe2,0xfc,0x6b,
- 0x04,0x16,0xb0,0xc7,0xc2,0xf3,0xd8,0x50,0x30,0x81,0x7f,0x31,0xb6,0x15,0x11,0x65,
- 0xaf,0x1b,0x19,0x7e,0xad,0x17,0x46,0x16,0xff,0x7a,0x48,0xb0,0x2d,0xb6,0xd0,0x2a,
- 0x98,0xac,0xd7,0x0b,0x2c,0xfb,0xed,0x71,0xf8,0x57,0x42,0xe0,0x57,0x5a,0xd0,0x2e,
- 0x5a,0x66,0xca,0xf7,0x92,0xe9,0xdf,0x5c,0x97,0x98,0xc5,0xde,0xe7,0xc1,0x8c,0x7e,
- 0xe3,0x0f,0xe8,0xc7,0x90,0x76,0x7d,0x07,0xfe,0xd0,0x71,0x65,0xda,0xb7,0x5a,0x9e,
- 0xae,0xbf,0x9a,0x98,0x9b,0xde,0x98,0xe1,0x5f,0xd3,0x76,0x4b,0xb8,0x64,0x0e,0x0b,
- 0x9f,0xa0,0xe3,0xda,0xe9,0x92,0x87,0xda,0xcf,0x2d,0x7f,0x86,0x2d,0x22,0x0b,0xbf,
- 0x40,0xe8,0xb1,0x07,0xbc,0x67,0x65,0x34,0x3a,0xe6,0x0d,0xf8,0xce,0xcb,0x9f,0x1a,
- 0x47,0x53,0xf3,0xd2,0x9d,0x23,0xb2,0xe9,0xe0,0x17,0xe5,0xfd,0x61,0xfa,0xc3,0x97,
- 0xca,0x74,0xb6,0xde,0x2f,0x18,0xeb,0xda,0xcb,0x06,0x0b,0x7e,0x44,0x3e,0x72,0xf2,
- 0x87,0x06,0xd7,0x1f,0x72,0xda,0x45,0x66,0x88,0x35,0xf8,0x53,0x28,0x43,0x20,0x0b,
- 0x98,0xb6,0x7e,0x43,0xb8,0x94,0xbc,0x2c,0x97,0x72,0x98,0x27,0x51,0x71,0xa1,0x8d,
- 0xe3,0x5f,0xf5,0x66,0x55,0x92,0x97,0xc2,0xbb,0x58,0xd0,0x3e,0x4a,0xde,0x53,0xfc,
- 0x5c,0x7f,0x38,0x1e,0xbf,0x0a,0xd0,0x6f,0x30,0xa3,0x87,0xfb,0x84,0x8f,0xc1,0xaa,
- 0x7f,0x65,0xf0,0x4b,0x72,0x5c,0xe5,0x3f,0xa1,0x51,0x34,0x2a,0x14,0x80,0xc3,0x32,
- 0x8c,0xc7,0xaf,0x1b,0xd1,0x3f,0x4b,0xcf,0x2b,0x75,0xb6,0x7f,0xae,0x36,0x6f,0x4e,
- 0xca,0x09,0x5b,0xbf,0x11,0xb4,0x73,0x68,0xb6,0xcf,0x9c,0xe9,0x38,0x4f,0x3d,0xa3,
- 0xdf,0x10,0x5a,0xf4,0x08,0x2b,0xe7,0x55,0xa6,0x0e,0x31,0xfd,0xe1,0x5e,0x3d,0x98,
- 0x72,0x77,0xf9,0x5b,0x33,0xfc,0xeb,0x1c,0x5c,0xdb,0xeb,0xdb,0x27,0x7f,0x42,0x5f,
- 0x82,0xea,0x37,0x59,0x6e,0x10,0xc6,0x98,0x78,0xf2,0x69,0x19,0xac,0xfa,0xd7,0xa5,
- 0xcc,0x0d,0x62,0x0f,0x9f,0x91,0x87,0xd2,0x63,0x4a,0x5d,0x9f,0xaf,0xab,0x01,0xfd,
- 0xe1,0xc2,0xba,0xbe,0x82,0x67,0xe4,0x5d,0x96,0x7e,0xc3,0xf5,0x22,0x7c,0xb6,0xb6,
- 0x0e,0xe3,0x16,0xf9,0x45,0x72,0x34,0x30,0xaf,0x1f,0x8d,0x21,0x38,0xea,0xaa,0x4f,
- 0x2d,0x3d,0xeb,0x71,0xea,0x5f,0x9f,0xba,0x18,0xff,0x42,0xd8,0xfa,0x54,0xdb,0x78,
- 0x5f,0x79,0x3f,0x76,0x75,0x0c,0x3a,0xfb,0xe7,0x0c,0xdc,0xd8,0x15,0xb0,0xeb,0x5f,
- 0x56,0xae,0xc9,0x1d,0x66,0x14,0x18,0x2a,0x8e,0xb1,0xb9,0x88,0xb6,0x09,0x20,0xdb,
- 0x3e,0x11,0xbf,0xf8,0xd8,0x67,0x73,0x20,0xcb,0xe9,0x84,0xea,0x1e,0x4f,0x32,0x27,
- 0x64,0xe1,0x57,0xa1,0x93,0x3f,0xdc,0xed,0x3d,0x07,0xab,0xd8,0x34,0x0d,0x31,0xc5,
- 0x38,0x7b,0xc7,0xe2,0x13,0xf1,0xeb,0xee,0x51,0xfd,0x55,0x0c,0x45,0xbe,0x21,0x74,
- 0x0e,0x75,0x93,0xf0,0x2b,0x6c,0x3a,0x69,0x43,0x37,0x1a,0xe4,0x90,0xc2,0xf3,0x6c,
- 0xe3,0xf0,0x8b,0xa1,0xa7,0xfc,0x20,0xad,0x87,0x39,0xc8,0xbf,0x02,0xc7,0x61,0x23,
- 0xcc,0x61,0xb9,0xdc,0x71,0xf8,0x65,0x97,0x56,0x61,0xa5,0x79,0x03,0x1a,0xc6,0x0e,
- 0x12,0x34,0xa3,0x49,0x25,0x83,0x5f,0xd2,0x4b,0x09,0xae,0x3c,0x7f,0xac,0x1d,0xb1,
- 0x60,0x88,0xf3,0x2f,0xae,0xa8,0xbf,0x2f,0xe2,0xe0,0x57,0x81,0x79,0x2e,0x91,0xfc,
- 0xf0,0xc1,0x1a,0xf9,0x08,0x9c,0xa6,0x75,0x43,0x05,0x0b,0x1b,0x8e,0x98,0xbf,0x5d,
- 0x53,0x3b,0x14,0xac,0x91,0xb2,0xf9,0x97,0x56,0xdf,0xc7,0xd2,0x86,0xaa,0x90,0xa3,
- 0xc8,0xe7,0xe1,0x46,0x36,0xd2,0x3d,0xd9,0xfa,0x43,0x36,0x9c,0xcb,0xbb,0x65,0xc4,
- 0xaf,0x85,0x75,0x29,0x36,0x40,0x7a,0x8e,0xd4,0xbd,0xee,0x9b,0xcc,0xbf,0x86,0x09,
- 0x5b,0xf8,0xc1,0x37,0xec,0x7c,0xcb,0x31,0x4f,0xb3,0x3b,0xab,0xfe,0x25,0x60,0x6b,
- 0xd5,0xf4,0xd2,0x5f,0xec,0x14,0x9c,0xd1,0xdc,0x97,0xe4,0x40,0x96,0x54,0x6c,0xfc,
- 0x52,0x04,0x64,0x47,0xbc,0xd6,0x26,0x02,0x01,0xe2,0xcc,0xb7,0x6c,0x9e,0x88,0x5f,
- 0xc8,0x07,0x3f,0x92,0x58,0xda,0xb0,0x41,0x30,0xb2,0xa5,0x09,0xf9,0xb9,0xf1,0xf8,
- 0xe5,0xc0,0xd6,0x37,0x28,0x2f,0xf4,0xb0,0x2b,0xd2,0x2d,0x93,0xf1,0x8b,0xe5,0x76,
- 0x8c,0x95,0x68,0xd0,0x93,0xca,0xc5,0xf8,0x17,0x7a,0xe3,0xe5,0x29,0x2b,0x6d,0xf8,
- 0x01,0xe2,0xd7,0xec,0x2f,0xc5,0x2f,0x29,0xb8,0x48,0xb5,0x39,0xc8,0x45,0xf1,0xab,
- 0x11,0xf6,0x04,0x82,0xd1,0x94,0xd0,0xcf,0x57,0x46,0x27,0xe1,0x17,0x20,0xdb,0xe2,
- 0xf8,0x55,0xbc,0x61,0x8d,0xad,0x4f,0x70,0xc9,0x9f,0x4a,0xe3,0xf1,0xab,0xbf,0x68,
- 0xb9,0xd0,0xcf,0x23,0x4f,0x71,0xf4,0xf3,0xe2,0x5d,0x2d,0x95,0x44,0x9b,0xa5,0x71,
- 0xf9,0x07,0x70,0x00,0x6a,0xd8,0x9f,0xce,0xc0,0x59,0x7d,0x15,0xc7,0x2f,0x25,0x1b,
- 0xbf,0xc0,0x43,0x70,0x14,0xbb,0xf4,0x00,0x20,0x11,0x3b,0xb1,0xa8,0x5b,0x5a,0xa0,
- 0xa1,0xe1,0xe0,0x57,0xa3,0xc3,0xbf,0xa0,0x25,0xaa,0xdf,0xc1,0x8d,0x3d,0x86,0xde,
- 0xe4,0xb9,0x28,0xff,0x92,0x9e,0x90,0x02,0x86,0xcc,0xc6,0x7e,0x35,0x99,0x29,0xc6,
- 0xee,0xe0,0x97,0xc5,0x73,0x07,0xe0,0x80,0x54,0x23,0x40,0x8a,0x3d,0x1f,0xa6,0x9f,
- 0x07,0x07,0xbf,0x32,0xd0,0x46,0x5e,0xe4,0x79,0x51,0x38,0x79,0x51,0xfc,0x62,0xb4,
- 0xcb,0x1c,0x86,0x9f,0xb0,0xb2,0x97,0x6e,0xcf,0xb2,0xcd,0xd1,0x38,0x7e,0x15,0x30,
- 0xda,0x35,0x05,0x8d,0x9f,0xb0,0xb4,0xa1,0x40,0xb4,0x86,0x44,0xc3,0x04,0xfd,0xc6,
- 0xc3,0x21,0x92,0xc3,0x5f,0x36,0x77,0x88,0x28,0x3c,0x6a,0x62,0xf8,0xa5,0x64,0xe3,
- 0x97,0x89,0xd1,0xa0,0x06,0xfb,0x34,0x95,0x25,0xbd,0xd9,0x95,0x7c,0xb3,0xb3,0x99,
- 0xec,0xca,0xc6,0xaf,0x6b,0xd3,0x37,0xdd,0xd7,0x76,0x19,0x1a,0xf9,0xe9,0xe9,0x67,
- 0xe5,0x4b,0xf2,0x38,0x23,0x5b,0x2d,0x7d,0x94,0xcd,0xbf,0xa6,0xb3,0xd5,0x94,0x86,
- 0x73,0xee,0xba,0xfe,0xfc,0xae,0xaf,0x0f,0x88,0x20,0xf0,0x99,0xb6,0x0c,0x7e,0x01,
- 0xc3,0x2f,0xdf,0xb3,0x32,0x31,0x8e,0xb6,0x84,0x3f,0x47,0x42,0xf7,0xb9,0x71,0x94,
- 0x29,0xea,0xcf,0x3e,0xe4,0xe0,0xd7,0x83,0xb0,0x77,0x3b,0x86,0xa9,0x0b,0x67,0x13,
- 0xfa,0x06,0xe8,0xe9,0x29,0x0b,0x71,0x7d,0xed,0x48,0x06,0xcd,0xca,0x1a,0x7f,0x06,
- 0xbf,0xb4,0x7d,0x7a,0x95,0xe9,0x1e,0x26,0x4d,0xb0,0x4e,0x2b,0x33,0x6f,0x6c,0x26,
- 0x7d,0xca,0x3a,0x7f,0x90,0xe7,0x0f,0xb3,0xf1,0x8b,0x2b,0xc1,0x0c,0xe4,0x32,0xdc,
- 0xc9,0xf4,0xc1,0x0e,0xae,0x66,0xc9,0xc2,0x2f,0x0c,0xbf,0xd1,0x1f,0x0e,0xcb,0x06,
- 0x1c,0x85,0xbd,0xe8,0xe2,0x70,0x4e,0x99,0x3f,0xf4,0x0e,0x4f,0xc4,0x2f,0x0c,0xf5,
- 0x13,0x3c,0x6d,0x88,0x7e,0xc3,0x1a,0x17,0xe3,0x44,0x13,0xf8,0x57,0xf9,0x30,0x7c,
- 0x06,0xf3,0x18,0x0e,0x2e,0x00,0x91,0x8b,0x0b,0x98,0x93,0xf8,0xd7,0x6f,0x95,0x4e,
- 0x0c,0xe3,0x0b,0x92,0xe4,0xd7,0xf6,0x95,0xf4,0x78,0xfc,0xc2,0x98,0xff,0x7d,0x9d,
- 0xd5,0xbf,0xb0,0xcf,0x15,0xd4,0x6e,0xe3,0xe0,0x97,0xbe,0x57,0x0d,0xf6,0x79,0xe6,
- 0x13,0xd3,0xc4,0x50,0xe4,0xf0,0xc1,0x30,0x59,0xa3,0xe2,0x15,0xd3,0x33,0x8f,0x38,
- 0xf9,0xc3,0xef,0x99,0xcf,0x37,0x23,0xff,0xfa,0x5c,0x4e,0xd3,0xdf,0x37,0x21,0xee,
- 0x7c,0xfe,0xb5,0x19,0xda,0xb9,0x50,0xdd,0x9b,0x4b,0x87,0xcb,0x1d,0xfd,0x06,0x1b,
- 0x57,0xfd,0x31,0xdf,0x0f,0x1b,0x86,0xcd,0x31,0x7d,0xce,0x2b,0x05,0x7b,0xdb,0x46,
- 0xe3,0xe7,0xca,0xea,0x0f,0x20,0xa2,0xd9,0xfa,0x43,0x31,0x5f,0x69,0xce,0xbf,0x5e,
- 0x12,0x44,0xec,0xd7,0xf0,0x39,0x63,0xd0,0x4e,0xfe,0xd0,0xb4,0xf2,0x87,0x9e,0xae,
- 0x56,0x87,0x88,0x0d,0xd1,0xe7,0xf0,0x4a,0x1e,0xf2,0x2f,0xf1,0x7c,0xa2,0x4e,0xfe,
- 0x90,0x6c,0x50,0xe7,0x59,0x3c,0x45,0xef,0x12,0xc6,0x47,0x93,0xf9,0x57,0x06,0xc8,
- 0x9e,0x13,0x86,0xc5,0xbf,0x68,0x86,0x7f,0x09,0x02,0x75,0x79,0xd2,0xda,0xa3,0x81,
- 0x57,0x2c,0x4d,0x4e,0x06,0xbf,0x1a,0x46,0xad,0x29,0x40,0xec,0xbe,0xc0,0x77,0x49,
- 0x34,0x8c,0x08,0x2d,0x0d,0xc3,0xaf,0x8f,0x1d,0xfe,0x05,0x82,0x7f,0x15,0x7f,0x41,
- 0xfd,0x59,0xfc,0xab,0xc3,0x15,0xa4,0x59,0x78,0xea,0xf4,0x67,0x22,0xff,0xda,0x31,
- 0x89,0x7f,0x75,0x09,0x44,0x1b,0x16,0x53,0x91,0x68,0x99,0x4e,0x05,0x16,0xe4,0xd8,
- 0xfc,0x2b,0x70,0x9c,0xbe,0x48,0xcb,0x18,0x16,0x1c,0xa3,0xbc,0x0d,0xdb,0xff,0xf5,
- 0x5b,0xe0,0xfa,0x8d,0x23,0xc6,0x69,0xad,0x76,0xd0,0x87,0xf8,0x45,0x4f,0xc5,0x43,
- 0x8c,0x88,0xbd,0x9d,0xc3,0xdb,0x88,0xfc,0x21,0xdb,0x13,0x51,0x64,0xbd,0x6c,0x7b,
- 0x70,0x5c,0x5f,0x48,0x88,0x68,0x88,0x5f,0x42,0xd7,0xb4,0xcb,0x75,0x58,0x3d,0x24,
- 0xf2,0x87,0x41,0xce,0x4f,0x79,0xac,0x75,0x50,0x18,0xbd,0x16,0x7e,0x6d,0x12,0x6a,
- 0x43,0x0b,0xbf,0x2c,0xfe,0xb5,0x56,0x18,0xaf,0xdb,0xef,0xfc,0x63,0x4c,0x2d,0xcf,
- 0xf9,0x17,0x38,0xfc,0x6b,0x2d,0x1a,0x37,0xae,0xb6,0xe3,0x43,0xc4,0x2f,0xd2,0x26,
- 0x86,0xec,0x95,0xac,0xb1,0x0f,0x41,0x2b,0x78,0xb3,0xf9,0x57,0x61,0x07,0x30,0xb5,
- 0x3c,0x97,0x1d,0x7e,0x81,0xae,0x29,0x37,0x41,0x06,0xc9,0x83,0x84,0xef,0xfa,0xf9,
- 0x42,0xf8,0xba,0x49,0xf8,0x35,0x8e,0x7f,0x89,0xb9,0x60,0xf8,0x75,0x60,0x22,0x2f,
- 0x50,0x0e,0xc4,0x2d,0xfe,0xc5,0xdb,0x20,0x7e,0x11,0xa6,0x24,0xf4,0xc5,0xc3,0x36,
- 0xbf,0xf0,0x0f,0x28,0x6f,0x91,0x1a,0x81,0x5f,0xfc,0x23,0xf4,0xf3,0x36,0x7e,0x11,
- 0x27,0x91,0x68,0xf1,0x2f,0xe1,0xc7,0x14,0x45,0x6b,0xc9,0xf0,0xaf,0x95,0x8b,0x1e,
- 0x41,0x43,0xdb,0x24,0xae,0x44,0x44,0x1b,0x86,0x5f,0x6c,0x7f,0x93,0x67,0x0d,0x87,
- 0xda,0x9f,0x14,0x6f,0xa4,0x72,0xcf,0xa2,0x14,0xfc,0x04,0x2e,0x47,0xfe,0x25,0xf2,
- 0x1b,0xa9,0x7c,0xd1,0xd5,0x02,0xab,0xcf,0x8b,0x38,0x36,0x9d,0x17,0x82,0xbd,0x4f,
- 0x2d,0xfe,0x25,0x21,0x5a,0x49,0xfc,0x4f,0x03,0xd2,0x59,0xa9,0xfa,0x9b,0x68,0x3c,
- 0x2e,0xbd,0x06,0x1c,0x97,0x2d,0xbe,0xbc,0xda,0xc2,0xaf,0xcb,0x81,0x58,0x40,0x46,
- 0x89,0xde,0xda,0x01,0x01,0x66,0xec,0xb7,0xf5,0xf3,0x99,0xfc,0x21,0x1a,0x15,0x62,
- 0x93,0x57,0x0b,0xf0,0x9c,0xe7,0xeb,0x62,0xbe,0x4a,0x6f,0x17,0xf8,0xb5,0x3e,0xc3,
- 0x3d,0xfd,0x15,0xca,0x2c,0xc4,0xa6,0x97,0xe3,0xe1,0xfd,0xe2,0x19,0x26,0x8a,0x77,
- 0x7a,0x59,0x7f,0x3c,0x02,0xb6,0x18,0xb4,0xc9,0xed,0xf8,0x7c,0x78,0x7f,0x06,0x85,
- 0x2e,0x6e,0x85,0x93,0x3f,0x74,0xe6,0x82,0x89,0xed,0xe1,0x45,0x76,0xe5,0x6d,0x8b,
- 0x5b,0x39,0xfb,0xbf,0x8a,0x74,0xc5,0x9e,0x53,0x6e,0x60,0x9f,0x33,0xfb,0xbf,0x40,
- 0xec,0xff,0x8a,0x30,0xd8,0xaa,0x61,0xb4,0x6b,0x50,0xeb,0xa2,0xec,0x4a,0xb8,0x57,
- 0x3c,0xe7,0x4a,0x57,0xa3,0xc4,0xde,0xb1,0x29,0xe3,0x38,0xfe,0x1e,0x1a,0x34,0x6f,
- 0x0c,0xf9,0x7b,0xed,0xf8,0xf0,0x12,0xfe,0x3e,0x77,0xde,0x97,0xf5,0x3e,0xd3,0xa7,
- 0x55,0x66,0xe8,0x29,0x83,0xaf,0xd3,0x4a,0xf5,0x12,0xf2,0x2a,0x43,0xab,0x7f,0x92,
- 0xa7,0x2b,0x7f,0x68,0x67,0xb0,0x25,0x1f,0x4f,0x0a,0xfc,0x92,0x0f,0x8a,0xf5,0xa5,
- 0x4e,0x6b,0xcf,0x4a,0x59,0x48,0x97,0xf5,0x31,0x83,0x71,0xfc,0x2c,0xfe,0x65,0x94,
- 0x7c,0x6e,0xd7,0x53,0x3e,0xe5,0x8e,0xd1,0x8b,0x8e,0x51,0x7f,0x1a,0x1f,0x00,0xfa,
- 0xc3,0x63,0x96,0x26,0xf0,0xd2,0x76,0xd1,0x8d,0x85,0x91,0x23,0x48,0xc4,0xaa,0x19,
- 0x11,0x7b,0x17,0xf6,0x3c,0x85,0x3e,0x61,0x21,0xf9,0x58,0xb4,0x01,0xba,0x25,0xd3,
- 0xd5,0x7d,0x1a,0xdb,0x08,0x16,0x79,0xd7,0xf8,0x57,0x9d,0x03,0xd9,0x4e,0x2b,0x7f,
- 0xa8,0xf4,0x65,0xa7,0x74,0xaa,0x33,0x44,0xec,0x91,0x10,0xfc,0x46,0xb1,0xd6,0xfb,
- 0x4e,0xde,0x67,0xcf,0x30,0x07,0x29,0x46,0xc4,0xa4,0x51,0xec,0x33,0xcf,0x47,0x3d,
- 0x09,0xd6,0x5a,0x1e,0xb2,0x6a,0x25,0x56,0xac,0xfe,0xa0,0xd0,0x0c,0x58,0xde,0x4f,
- 0xe0,0x17,0x7c,0xce,0x5d,0x4a,0x81,0x90,0x2f,0xd6,0xdb,0xf5,0x2f,0x46,0xc4,0xe4,
- 0xf4,0x72,0x2b,0x3e,0x5c,0x99,0x71,0x83,0x1f,0x4b,0xd5,0xa2,0xb6,0x85,0x2f,0x52,
- 0x0f,0x02,0xd9,0x49,0x7b,0xff,0xd7,0xf2,0xf1,0x3e,0xb3,0x94,0x19,0xcf,0x72,0x32,
- 0x42,0xd2,0x12,0x9f,0x0b,0x15,0xf2,0xd9,0xb8,0xfa,0x59,0xda,0x90,0xee,0x50,0x56,
- 0x9a,0xee,0x05,0x6c,0x4e,0xb5,0x60,0x9f,0x3b,0xec,0xb7,0xe6,0x1d,0xd4,0xe5,0x62,
- 0x2e,0x4e,0xb7,0x0d,0xc5,0xd0,0x8f,0x1d,0xf3,0x3e,0x45,0xce,0xc3,0xd9,0x15,0x78,
- 0x65,0xaf,0x9c,0xce,0xb5,0xf5,0x1b,0xac,0xab,0x29,0xce,0x19,0x3f,0x23,0xf5,0x47,
- 0x98,0x3f,0xdc,0x75,0x4e,0xaf,0x4f,0x15,0xec,0x2d,0x72,0xf0,0xeb,0xd7,0xf0,0x0e,
- 0xce,0x57,0xfe,0x88,0xa7,0x8e,0x1c,0x5e,0x36,0xcf,0xfb,0xe0,0xb3,0x2c,0x7f,0x48,
- 0xeb,0xb3,0xf2,0x87,0x66,0xe9,0xa7,0xda,0xf3,0xb4,0x86,0x65,0x0b,0xab,0xbd,0xeb,
- 0x43,0x7a,0xbe,0xda,0x55,0xf4,0x6b,0x51,0x11,0x43,0xfc,0x12,0xfa,0xf9,0x54,0xe3,
- 0x61,0xe5,0x21,0xc2,0x5f,0xbf,0x0d,0xb0,0x0d,0x2a,0x4c,0x77,0x96,0xc3,0x7f,0xdf,
- 0xd6,0xcf,0x3b,0xfc,0x2b,0xa8,0x26,0x20,0x07,0x2a,0x93,0x11,0xbc,0x22,0x15,0x30,
- 0x34,0xb7,0xb4,0xfa,0x80,0xf8,0xf5,0x0e,0x86,0x10,0xf9,0x21,0xf4,0xcf,0x83,0xf0,
- 0xb9,0xb6,0x38,0xa3,0xbb,0x18,0x9f,0x3f,0xbc,0x06,0xe7,0x54,0x1a,0x85,0x77,0xe0,
- 0x6a,0xea,0x63,0xc6,0xf8,0xfc,0xe1,0x6d,0x9c,0x7f,0xfd,0xc4,0xf4,0x76,0x31,0x7a,
- 0x82,0xbc,0x3b,0xdf,0xbe,0xcf,0xc6,0x49,0xf9,0x43,0xf5,0xa9,0xd6,0xa3,0x8c,0x88,
- 0x51,0x95,0xd5,0xc8,0x26,0xe9,0x37,0x34,0xce,0xf1,0x6b,0xc9,0x51,0xf4,0x24,0x95,
- 0xe0,0x61,0xbb,0x5c,0xac,0xa8,0x69,0x58,0xc4,0xfc,0xc3,0xda,0x77,0x38,0x6c,0xe5,
- 0xdd,0x47,0x8e,0x97,0x3d,0x43,0x67,0x2d,0x6f,0x65,0x42,0xc4,0xab,0x12,0x55,0x3c,
- 0x7f,0x68,0xeb,0xe7,0x6f,0xa6,0xa7,0x93,0xc1,0xc1,0x7c,0xc4,0x2f,0xf3,0x24,0x2c,
- 0x1c,0xfc,0xcb,0x85,0xc8,0x4f,0x4f,0x27,0x6a,0x45,0xfe,0x50,0x13,0x6b,0x67,0x37,
- 0xd3,0x6f,0xf4,0x55,0xef,0xc1,0xae,0x8e,0x4a,0x3f,0x34,0xc4,0xfe,0x2f,0x96,0x3f,
- 0xdc,0x93,0xa5,0xdf,0x50,0x7e,0xa4,0xd4,0xf0,0x1c,0x23,0xa7,0x03,0xf9,0xc9,0x22,
- 0x5e,0x83,0xc6,0x2b,0x77,0xf7,0x8a,0xe7,0x93,0x72,0xf4,0x1b,0x2c,0x6d,0x08,0x7a,
- 0x5f,0x47,0xb3,0xec,0x5c,0x79,0x3d,0x5b,0xbf,0x31,0x8b,0x63,0x2e,0xcb,0xc9,0xbc,
- 0xbf,0x62,0xb5,0xd8,0x73,0xcd,0x80,0x2c,0xe5,0xe8,0x37,0x34,0x31,0x83,0x39,0x87,
- 0xf1,0x9f,0x97,0xa7,0x3b,0x78,0x7d,0x59,0xcc,0xe9,0xdb,0x90,0x55,0xff,0xaa,0x41,
- 0xfc,0x2a,0x4a,0xc1,0x17,0xc3,0x7c,0xff,0x97,0x5d,0x11,0x93,0xbf,0xb0,0xf0,0x54,
- 0x4a,0x64,0x60,0xeb,0x0c,0xf6,0xe8,0x66,0x7b,0xff,0xf2,0xe5,0x59,0xfa,0x79,0x2b,
- 0xe6,0x7f,0x38,0xf7,0xf7,0x7c,0x3b,0x92,0x37,0x0b,0xc8,0x7a,0x45,0x7f,0x1c,0xfe,
- 0xf5,0x33,0xc2,0x38,0xda,0x76,0xa3,0x52,0x38,0xea,0xba,0x2c,0xfe,0xb5,0x50,0xca,
- 0xf0,0x2f,0xfd,0x61,0xe0,0x7b,0xd2,0x9d,0x64,0xda,0x11,0xb1,0x5f,0xc6,0xd6,0x6f,
- 0x1c,0x62,0xf8,0xf5,0xb4,0x5e,0x16,0x55,0x33,0x89,0xc4,0x71,0xfa,0x79,0xde,0x67,
- 0xbc,0x73,0xea,0x96,0x79,0x36,0xff,0x1a,0x97,0x3f,0x2c,0xb1,0xf9,0x17,0x76,0xf5,
- 0x2d,0x26,0x3b,0x14,0x7d,0xae,0x61,0x84,0xc5,0xe2,0x5f,0x5b,0x1d,0xfd,0x06,0x42,
- 0xdb,0x81,0xca,0xf0,0xe2,0x9b,0x37,0x65,0xc6,0xe5,0xe8,0x37,0x62,0x36,0x6c,0xa5,
- 0x61,0x7d,0x0c,0xdf,0xc3,0xd6,0x0c,0x90,0x1d,0x11,0x71,0x0b,0xd7,0x6f,0x10,0x81,
- 0xb9,0xa4,0x45,0xd5,0xc7,0xf5,0xf9,0x75,0x89,0xb7,0xb1,0xf4,0x1b,0x36,0x64,0xb3,
- 0xfd,0x05,0x81,0x81,0x4c,0xee,0x94,0xb7,0xb1,0xf9,0x17,0xc7,0xa6,0x03,0x66,0xe0,
- 0x07,0xd9,0xcf,0x39,0xa3,0xdf,0x28,0xb5,0xdb,0x90,0x93,0xfe,0x17,0x8d,0xaa,0xac,
- 0x36,0xaf,0x4f,0xd0,0x6f,0xb4,0x20,0xed,0x3a,0x66,0x24,0xb5,0x20,0x95,0x18,0x90,
- 0x4d,0x67,0xcf,0xa7,0xd7,0xc9,0x1f,0x2a,0x3c,0x7f,0x38,0x80,0xfc,0x6b,0xbd,0x12,
- 0xc8,0xf0,0x2f,0xcf,0x44,0xfd,0x86,0xa9,0x56,0xb4,0x4a,0xe1,0x87,0x90,0x83,0x48,
- 0x0e,0x90,0x8d,0xd3,0x6f,0xf0,0x7c,0x5d,0xd4,0x5d,0xa8,0xae,0x2b,0x2b,0x4b,0xe5,
- 0xad,0xce,0x24,0xc6,0xd3,0x62,0x4e,0x2d,0xfd,0x7c,0xda,0x7b,0x87,0x7c,0x19,0xdc,
- 0x9a,0x48,0x0e,0x56,0x8d,0x78,0xac,0x8a,0xd8,0x6a,0xf9,0x7d,0xb1,0x07,0x41,0x15,
- 0x5a,0x08,0xd3,0x07,0xb2,0x09,0xe7,0x6e,0xa9,0xfb,0x5f,0x05,0x4f,0x89,0x84,0x9b,
- 0x99,0x8b,0xf8,0x65,0xe5,0x7f,0xae,0x7b,0xb1,0x71,0xac,0x15,0xf9,0x57,0x54,0xf6,
- 0xc3,0x7b,0xe9,0x79,0xa3,0x1b,0xce,0xb7,0x59,0x15,0xb1,0x11,0x47,0x3f,0x7f,0xe9,
- 0x63,0x74,0x5f,0x22,0x98,0x9e,0x52,0x20,0x47,0x3a,0x5e,0xdd,0xaa,0x7f,0x52,0x70,
- 0x9f,0x5d,0x38,0xb8,0xcf,0xd6,0xcf,0xab,0x4c,0xbf,0x81,0xfc,0xcb,0x13,0x21,0x9a,
- 0xf9,0x53,0xa5,0x2c,0x25,0xaf,0x62,0x40,0x06,0xdf,0x4b,0x79,0x56,0xd9,0xfc,0x2b,
- 0xc6,0xf4,0x1b,0x8c,0x69,0x82,0xdb,0x80,0xb6,0x25,0x89,0xbe,0x6c,0x9f,0x99,0xd1,
- 0xcf,0x8b,0xd5,0x0d,0x32,0xc0,0x7b,0x74,0xef,0x70,0xd5,0x30,0x62,0x2e,0xf3,0x6c,
- 0xbe,0x64,0xf9,0x47,0x62,0xec,0x71,0x18,0x92,0xb8,0x67,0x63,0xeb,0xeb,0xb4,0x52,
- 0xd7,0x6b,0xf9,0x3a,0xd6,0xc6,0xce,0x1f,0x26,0x34,0x0b,0xad,0xcc,0xa2,0x66,0xf5,
- 0x1d,0x08,0x99,0xc1,0x61,0xb9,0x16,0xde,0x83,0x39,0x8c,0x88,0xa5,0xc6,0xe9,0x37,
- 0x4c,0xcf,0x86,0x29,0x77,0x6b,0x4c,0x52,0xa8,0xb1,0x3d,0x47,0x96,0x3f,0x1c,0x74,
- 0xf8,0x97,0xf2,0xbc,0x54,0xdd,0xe3,0xe9,0xf0,0xdf,0x15,0x7a,0x04,0xf9,0x97,0x14,
- 0x82,0x20,0x4f,0xa6,0xc9,0x19,0xfe,0x55,0x8c,0xe1,0xee,0xa2,0xe0,0x6f,0x3c,0xd0,
- 0x6a,0xb0,0x23,0x2c,0x0e,0x5c,0xb6,0xc0,0xbd,0x84,0xee,0x35,0x56,0xa6,0x3c,0x73,
- 0x89,0xa5,0x9f,0xa7,0xf9,0x2b,0x53,0xe7,0x62,0xd5,0x6f,0xf9,0xda,0xe4,0xe5,0x03,
- 0xef,0xe9,0xf3,0x0e,0x7b,0x87,0xdb,0x82,0xf4,0x9d,0x15,0xc8,0xc8,0x92,0xb2,0xcd,
- 0xbf,0xfe,0x79,0xa8,0xff,0x5c,0xac,0xfe,0xf0,0xd2,0xd6,0xc2,0x74,0xfc,0x5c,0x71,
- 0xdd,0xe1,0x9b,0xba,0xe4,0x17,0x8c,0x73,0x65,0x75,0x7d,0x8c,0x7f,0x59,0xd8,0xe4,
- 0x1a,0xad,0x3c,0xa2,0xcf,0x8d,0x79,0xb6,0x62,0xbc,0x31,0x0a,0x75,0xe9,0xa5,0x23,
- 0xe5,0x0b,0x00,0x6f,0x98,0x2e,0x40,0xfe,0x45,0x2d,0xfc,0x1a,0x62,0xdb,0x45,0x6d,
- 0xcc,0x9d,0xc9,0x01,0x08,0xfe,0xa7,0x31,0x3b,0x3d,0xa5,0xdb,0xae,0x95,0xa4,0x5c,
- 0x1b,0x80,0x6a,0xfa,0x38,0x9e,0x12,0x84,0x36,0x7f,0x0c,0x81,0x2c,0x72,0x4a,0xac,
- 0x2f,0x53,0xd9,0x4d,0x3a,0x0d,0x64,0x37,0x7b,0xd8,0x7d,0x4c,0x7c,0x2c,0x21,0x77,
- 0x10,0x7e,0x29,0xb0,0x7b,0x44,0xbc,0xf3,0x52,0xc9,0x60,0xef,0x41,0x8c,0xaf,0x3d,
- 0xdd,0x6c,0x0a,0x4c,0x0e,0x5b,0x05,0x06,0xdb,0xc8,0x3c,0x1d,0xc7,0x65,0xf0,0x36,
- 0x69,0xe9,0x49,0x38,0xcf,0x8e,0xdd,0x18,0x61,0x21,0x84,0xbd,0x97,0x5c,0x6c,0x64,
- 0x6e,0x18,0x11,0x6d,0x0c,0xad,0x83,0xa4,0x0c,0x76,0xec,0x86,0x27,0x08,0x1f,0x1b,
- 0xfc,0x20,0x8e,0x21,0xbe,0x21,0x1a,0x6f,0xf8,0x1b,0xd1,0xe7,0x63,0xae,0x85,0xd0,
- 0x09,0x0b,0x58,0xb6,0xd0,0xd9,0xd4,0x30,0x04,0x1b,0x69,0x80,0x15,0x2e,0x3f,0xe7,
- 0x8f,0x19,0x4c,0x88,0x92,0x0e,0x8c,0x88,0x54,0xb6,0xac,0x76,0x28,0x95,0x22,0x87,
- 0xd6,0xa6,0x55,0x70,0xfc,0x12,0x79,0xa4,0x11,0xed,0x16,0xf2,0x00,0xbd,0x82,0x4b,
- 0xd0,0x0d,0x91,0x36,0x24,0xc7,0xa5,0x75,0xfd,0x33,0x18,0x16,0x8c,0x52,0x7e,0x9f,
- 0xa8,0x1a,0x25,0xbd,0xf8,0xda,0x78,0xbb,0x65,0x24,0x62,0x04,0xe3,0xba,0x1a,0x96,
- 0xcf,0x4c,0x3c,0x65,0x7a,0xae,0x71,0xf8,0x57,0x49,0x37,0x8e,0xa2,0xce,0xbc,0xe2,
- 0xa4,0x3c,0xaa,0x8d,0xc1,0xe5,0x7d,0x9e,0x93,0x3c,0x2f,0xca,0x8b,0xb6,0x16,0xff,
- 0x52,0x95,0xdd,0xea,0x01,0xb6,0x0b,0x20,0x59,0x54,0xad,0x1c,0xa2,0x4c,0x26,0x8a,
- 0x40,0x7f,0xd4,0xe0,0xe3,0x3a,0x28,0xd6,0x69,0xaa,0xf4,0xb1,0xd6,0x35,0x7c,0x9b,
- 0x27,0x99,0xaa,0xae,0xb3,0x0c,0x58,0xa7,0x96,0xb1,0xf5,0x7e,0xca,0xca,0x5d,0x60,
- 0x34,0xbd,0x96,0x96,0x0d,0x5b,0xb2,0xf9,0x32,0x4b,0x3f,0x9f,0xe4,0x9c,0xd1,0x5a,
- 0x5f,0x83,0xca,0x03,0x46,0x1b,0xb2,0xd1,0xca,0x85,0x6e,0xaf,0xdc,0x66,0x26,0xcc,
- 0xca,0x90,0xbb,0x20,0xc2,0x94,0xb1,0x1c,0xbf,0x44,0x9b,0x92,0x2f,0xe0,0x88,0x81,
- 0xb0,0xf5,0xa4,0x5c,0x09,0x47,0x68,0x18,0x7d,0x94,0xcc,0xf6,0x7f,0x71,0x21,0x87,
- 0xf5,0x5d,0x51,0x89,0xea,0x23,0xba,0x4d,0xbb,0x34,0xcb,0x18,0xb6,0xeb,0x5f,0x62,
- 0x5c,0x88,0x5f,0x3d,0xd0,0xc5,0x60,0xab,0x02,0xce,0xaa,0xac,0xfe,0xd5,0x20,0x76,
- 0xda,0x8e,0xc3,0x2f,0x85,0x6d,0x5b,0x56,0xb7,0x90,0x19,0xf0,0x6c,0xa4,0xba,0xc9,
- 0xb3,0x25,0xf0,0x3b,0xf6,0x66,0x72,0xfc,0x12,0x75,0x61,0xa6,0x3f,0xbc,0x5f,0x0d,
- 0x44,0x54,0xad,0xb5,0x42,0x7f,0x56,0xad,0x8e,0x78,0xe2,0xad,0x7d,0x3a,0x5e,0xc9,
- 0xe2,0x5f,0x88,0x5f,0xb4,0x45,0xd7,0x99,0xda,0xd0,0x29,0x7b,0x21,0x28,0xe8,0x42,
- 0xbf,0x21,0xbe,0x6b,0x24,0x7f,0x99,0x61,0x36,0x85,0x8a,0xbd,0x2e,0x8f,0x64,0x0c,
- 0x7f,0xb3,0xb6,0x78,0xa3,0x4b,0xee,0x69,0x34,0x9b,0xba,0x58,0x9f,0x3f,0x17,0x58,
- 0xd9,0x51,0xf2,0x66,0xe4,0xbc,0x56,0x6f,0xcc,0x61,0xf8,0xc5,0x8c,0x8d,0x0c,0xa4,
- 0xce,0x6a,0x8c,0x21,0x16,0xbd,0x6f,0xe3,0x17,0xc2,0x31,0x0d,0x1b,0xca,0x16,0x79,
- 0x06,0x1b,0x4e,0x53,0x70,0x8b,0xfc,0x3b,0xa6,0x3f,0x64,0xe3,0xda,0x4e,0x2c,0xfc,
- 0xea,0x31,0x3b,0xf4,0x80,0xaa,0x22,0xed,0x82,0x0e,0x9d,0xe9,0x0f,0x03,0x69,0x78,
- 0xca,0xd8,0x9e,0xc5,0xbf,0x10,0xbf,0xe8,0x9a,0x68,0x59,0x83,0xfa,0x3a,0x29,0x5e,
- 0xbb,0x26,0x5a,0x6e,0xa8,0xb7,0x90,0x37,0xe9,0xd3,0x31,0xd6,0xe7,0x9c,0x9f,0x89,
- 0x36,0x5b,0x95,0x9d,0xc6,0x9a,0xd8,0x36,0xa3,0xf2,0x75,0x77,0x31,0x3c,0x40,0xbf,
- 0xce,0x37,0x32,0xd3,0x7f,0x15,0xb9,0xd3,0x4f,0x45,0x0c,0x89,0xf8,0x45,0x78,0x78,
- 0xa0,0xe1,0x73,0x3e,0xa0,0x86,0x0c,0x95,0x27,0x6c,0x45,0x9e,0x76,0x97,0x3d,0x5f,
- 0x3f,0x87,0xb3,0x54,0xec,0xff,0xb2,0xd3,0x86,0x8e,0xf1,0x3a,0xb5,0xe6,0x8b,0x76,
- 0xb0,0x6d,0xa7,0x1b,0xd8,0x16,0xe0,0x94,0xd1,0x05,0x5e,0x9a,0xab,0x63,0x64,0xc7,
- 0xf7,0x7f,0xf5,0x8a,0x36,0x2c,0x7f,0xb8,0x9e,0xcb,0xe6,0x73,0x06,0xc9,0x7a,0x1a,
- 0x68,0xe1,0xf8,0xf5,0x6b,0xba,0x00,0x89,0x98,0xdc,0x5a,0x21,0xe6,0x42,0xb9,0x09,
- 0xda,0x68,0x65,0x1a,0x97,0xd5,0x11,0x56,0xf6,0x62,0x5c,0xa6,0x00,0x5a,0x5b,0x99,
- 0x27,0xb1,0x63,0x75,0xaa,0xbd,0x5b,0x9c,0x6b,0xcc,0xfa,0x0d,0xbe,0xc6,0xff,0xa1,
- 0xe1,0x6b,0xdc,0xaf,0xfe,0x98,0x5c,0x2e,0xfd,0x3c,0x8f,0x17,0x95,0x52,0xdc,0x65,
- 0x42,0x47,0xc7,0x77,0xc8,0x11,0xfa,0x7c,0x22,0xb8,0x22,0xf0,0x05,0xb9,0x99,0x96,
- 0x27,0x82,0x83,0xee,0x1a,0xf2,0x6a,0xeb,0x5c,0xce,0xbf,0x78,0x77,0x38,0x7e,0xb1,
- 0xca,0xec,0xfd,0x59,0x21,0xd6,0x20,0x06,0xc0,0xdc,0xc9,0xb4,0xb6,0x0b,0xbf,0xa1,
- 0x3c,0x49,0x5f,0x6b,0x99,0xb7,0xfc,0x86,0x67,0xe5,0x0f,0xe0,0x3c,0x5d,0xb0,0xdc,
- 0xbb,0xd5,0xb3,0x00,0x46,0xe2,0x61,0x16,0xcf,0xf7,0x6f,0xe7,0x6d,0x9e,0x2c,0xfd,
- 0x99,0xb9,0x06,0xca,0x57,0xe2,0x92,0xf9,0x37,0xf3,0x69,0x28,0x5b,0xa1,0x5e,0x46,
- 0x2e,0x89,0x77,0x27,0xca,0x4e,0x78,0x6a,0xc8,0x47,0xe2,0x19,0x6a,0xb0,0x35,0xb4,
- 0x05,0xca,0xd5,0x47,0xee,0x6a,0xed,0xcf,0x7b,0x4a,0x2d,0x83,0xbc,0x5e,0xd2,0x14,
- 0x7b,0x9a,0x96,0xb1,0xcd,0x6b,0x03,0x36,0x7e,0x75,0x40,0x7c,0x58,0xd7,0x0b,0x77,
- 0xe1,0x8a,0xeb,0xc6,0x67,0x26,0x51,0x02,0xc5,0x7b,0x44,0x6e,0xa7,0x5f,0xb4,0xe9,
- 0x2e,0xf9,0x14,0xde,0x30,0xba,0xde,0xf7,0x6d,0x65,0xdb,0x60,0x7b,0xc2,0xe6,0xaf,
- 0x92,0x9e,0x95,0x85,0xcf,0x61,0x40,0x8e,0xf1,0xea,0x07,0xd6,0xba,0x90,0x76,0x13,
- 0x96,0x6b,0xba,0x39,0x9e,0xd9,0xbf,0xbc,0x1b,0x4e,0xf1,0x58,0x3d,0xd7,0xd2,0x12,
- 0x27,0xb4,0x47,0x71,0x55,0xee,0xa5,0xbe,0x9e,0xdc,0x85,0x70,0x41,0xbd,0x8a,0xfa,
- 0xd2,0xf2,0x42,0x5b,0x7f,0x98,0x16,0x3e,0x73,0x27,0xe2,0x17,0x9b,0x2f,0x0f,0x95,
- 0x59,0x98,0x11,0x16,0x7a,0x9b,0xe7,0xd1,0x43,0xde,0x98,0x24,0x67,0x96,0x8b,0xb9,
- 0xc0,0x39,0x65,0xa1,0x91,0x9b,0x95,0x95,0x9f,0x80,0xd9,0xc6,0x8d,0x68,0x48,0xbb,
- 0x78,0x15,0xc6,0x9f,0x16,0xf3,0xe5,0x2e,0x56,0xe9,0xfd,0xa0,0xdf,0xe0,0xb9,0xc4,
- 0x7d,0x5d,0x7c,0x0f,0x54,0xde,0xe1,0x29,0x9e,0xad,0x24,0x92,0xa1,0x8a,0x14,0x46,
- 0xc2,0xf6,0x9c,0xe6,0x47,0x13,0x29,0x29,0xac,0x16,0xe0,0x3b,0x4f,0xd3,0xb0,0x50,
- 0xf5,0xb5,0xb6,0xe9,0x70,0x36,0x16,0x4e,0xf9,0xf6,0xc9,0x56,0x2c,0x9a,0xd8,0x34,
- 0x42,0x46,0x99,0x97,0x78,0x39,0x37,0x69,0x8c,0xc2,0xbc,0x52,0x9f,0x81,0x7f,0x3a,
- 0xbf,0xac,0xfe,0x95,0x8d,0xa7,0x8b,0xd2,0x15,0x16,0x7e,0xf1,0xe8,0x22,0x96,0xbf,
- 0x55,0x0e,0x08,0xbe,0xcc,0x62,0xfe,0x43,0x2c,0xa3,0x88,0xfc,0xcb,0x15,0x13,0x3e,
- 0x9c,0xa7,0x0d,0x63,0x6a,0x77,0x20,0xa1,0x74,0x42,0x75,0xaf,0x3a,0x4c,0x2e,0x60,
- 0x9b,0x6a,0x64,0x64,0x72,0x52,0xf0,0xd3,0x14,0xcf,0x1f,0x72,0x6d,0x58,0x0e,0xec,
- 0xa8,0x0c,0xa6,0xf2,0x42,0x7e,0x8b,0x91,0x85,0xc8,0x29,0x89,0xb7,0xb1,0xf2,0x87,
- 0x51,0x75,0xab,0xff,0xe7,0x78,0x9f,0x20,0x3b,0xc6,0x61,0x48,0xec,0xc0,0x4a,0x92,
- 0xa4,0xa5,0x3b,0xe5,0xf5,0x9d,0xda,0x58,0xfe,0x54,0x39,0x47,0xf9,0x58,0xaa,0xeb,
- 0xf1,0x32,0xdc,0xb1,0xde,0x31,0x2b,0xff,0x9c,0x2e,0xe4,0xe7,0x47,0xa5,0x59,0x4c,
- 0xab,0x7f,0xc6,0x05,0x0f,0xf2,0x50,0x60,0x3c,0xff,0x6a,0xd2,0x76,0x63,0x94,0x52,
- 0x17,0x29,0x88,0x7b,0x2a,0x08,0x23,0x74,0x1b,0x11,0xc8,0x88,0x75,0x9f,0xdf,0xd8,
- 0x98,0x1b,0xd4,0xb0,0x3f,0x23,0x18,0xa2,0xcf,0x0c,0xb1,0x6e,0xf8,0x86,0xc9,0xb4,
- 0x38,0x1a,0x1f,0xf2,0xfd,0xd4,0x7c,0x61,0x98,0x0a,0x8f,0x06,0x9b,0xdd,0xa5,0x24,
- 0x8f,0x17,0x9a,0x71,0x38,0xaf,0x81,0x95,0x55,0x1b,0x11,0xf9,0x79,0x16,0x75,0x22,
- 0x6c,0xad,0x50,0xcf,0xaf,0xbd,0x8c,0xae,0x8b,0x33,0x21,0x7d,0xc1,0x71,0x63,0x1d,
- 0xc6,0x63,0xf2,0xea,0x9c,0x51,0xab,0xfe,0x55,0x5a,0x00,0x7b,0x93,0xb5,0x2b,0x0a,
- 0x2e,0x6b,0xa8,0x86,0x37,0xa0,0x76,0xd0,0xc3,0x88,0xd8,0xcb,0x49,0xa6,0x9f,0xcf,
- 0xb5,0xeb,0x5f,0x53,0xd9,0xbe,0xec,0x5a,0xc3,0x17,0xc2,0x65,0x25,0xca,0x79,0x6d,
- 0xb5,0x7c,0xff,0x32,0xc7,0x2f,0x3e,0x2e,0xd5,0x75,0x84,0x3d,0x0d,0xc3,0xa7,0x7a,
- 0x2a,0x70,0x0a,0xc2,0xac,0x06,0x1d,0x34,0x0f,0x01,0x9f,0x38,0x2b,0x1f,0x95,0x92,
- 0x78,0xfe,0xd0,0xf0,0x18,0xe4,0x29,0x7e,0x5e,0x41,0xde,0x3d,0xc4,0x6b,0xfc,0x54,
- 0x68,0x77,0xb3,0xf4,0xf3,0xd8,0xc3,0x98,0x27,0x45,0x2e,0xe1,0xf8,0x85,0xa1,0xe3,
- 0x74,0xfa,0x53,0x04,0xdf,0xbc,0xd5,0x11,0x5b,0x3f,0x5f,0x7c,0x58,0x8c,0x34,0x8f,
- 0xac,0x41,0x23,0xc0,0xb5,0x61,0x84,0x3d,0x84,0x59,0x99,0xfc,0xa1,0xb4,0x0b,0xc3,
- 0xe4,0x5a,0x5c,0x0e,0xb9,0x0b,0x23,0x02,0xb6,0xf8,0xfe,0xe5,0x6a,0x9a,0x97,0xd1,
- 0x6f,0x68,0xec,0xfc,0xa8,0xba,0x62,0xdf,0x06,0x5c,0x29,0x23,0xf0,0x22,0xba,0x65,
- 0x0f,0xdf,0xe5,0xa7,0x15,0x8c,0xd3,0xcf,0x63,0x84,0x1f,0x43,0xfc,0xfa,0x80,0x1e,
- 0x40,0x0a,0x73,0x38,0xfe,0xfd,0xe5,0xd1,0x03,0x62,0x53,0xf0,0xf8,0xfa,0x57,0x34,
- 0xff,0x5f,0xc8,0x07,0xf6,0xb6,0xe5,0x5c,0x5c,0x29,0xd5,0xcd,0x93,0xea,0x5f,0x8d,
- 0x6a,0xd2,0xdf,0x07,0xf7,0x4b,0xec,0x20,0x29,0x77,0x85,0xf4,0xf0,0x44,0xfd,0x46,
- 0xa9,0xa5,0x3f,0x44,0xd8,0x42,0xa3,0xd2,0x4f,0x94,0xd6,0x4d,0x30,0x4e,0xbf,0x31,
- 0x2d,0x66,0xe9,0x13,0x8a,0x4e,0x44,0xcc,0x5b,0x6a,0x8a,0x97,0xb8,0x1a,0x90,0x68,
- 0x30,0xa7,0xe7,0xf0,0xaf,0xee,0x69,0x8c,0xdd,0x30,0x6e,0x55,0x78,0xc6,0xde,0xb6,
- 0xcc,0x76,0x7b,0xd5,0x66,0xe9,0x37,0xba,0x4b,0xce,0xd8,0xfc,0xeb,0x07,0x3c,0x41,
- 0xba,0x71,0x73,0xdb,0x99,0xc4,0x01,0x76,0xc5,0x39,0x3f,0xaa,0x14,0x32,0x69,0x43,
- 0x65,0x17,0x13,0x72,0xac,0x25,0x27,0xa0,0xc3,0xe2,0x5f,0x13,0xf5,0xf3,0x64,0xb9,
- 0xde,0xa2,0x32,0x21,0x47,0xab,0xd8,0x73,0xed,0x99,0xa8,0x9f,0x37,0x3d,0xf1,0xc8,
- 0x4e,0xfd,0x09,0x1c,0xb2,0x6c,0xe5,0x4e,0xcd,0x2c,0xfd,0x06,0xf0,0xe7,0xdc,0xe8,
- 0xd3,0xe4,0x46,0xec,0xcf,0xdf,0x09,0x92,0x65,0x65,0x6e,0x07,0xc5,0x3e,0xe8,0x15,
- 0xa2,0x4d,0xcc,0xf7,0xa8,0xbc,0xdc,0x96,0xd0,0xf4,0xd9,0xfc,0xeb,0x6d,0xab,0xfe,
- 0x05,0x8e,0x7e,0xa3,0xcc,0x4a,0x24,0x32,0xfd,0x21,0xd4,0x29,0x3e,0x47,0xbf,0xa1,
- 0x02,0xd7,0xcf,0x6f,0xcf,0xff,0xa4,0x68,0xb5,0xb6,0x5e,0xd0,0xae,0x85,0xd2,0x7a,
- 0x32,0x27,0x91,0xe1,0x5f,0x6a,0x09,0xe7,0x5f,0x46,0xa9,0xa6,0xa9,0x0a,0x7b,0xd9,
- 0xe4,0x10,0xc9,0xc9,0x69,0x53,0xb2,0xf9,0x97,0x2e,0x4d,0x95,0xf6,0xc1,0x9c,0xf4,
- 0xfd,0x3f,0x20,0x77,0xc2,0x3a,0x9d,0x17,0xc2,0x4a,0xf5,0x75,0x42,0xa1,0x64,0xe9,
- 0x37,0x2a,0x4b,0xb9,0x7e,0x23,0x81,0xfc,0x2b,0x1c,0x79,0x95,0xfe,0xe3,0x80,0xaf,
- 0xc6,0x73,0x19,0xbe,0xd8,0x9c,0x7f,0x8d,0xab,0x7f,0xe1,0x32,0x0f,0xc9,0x9f,0xd0,
- 0x73,0x35,0x75,0xfd,0xbe,0x3d,0x9d,0x29,0x3b,0xb7,0x63,0xe9,0xe7,0x63,0x5c,0x3f,
- 0x5f,0x9f,0xf2,0xdd,0x5b,0x5e,0x43,0xdf,0x8b,0xd7,0xbf,0xbf,0xf1,0x59,0x79,0x3a,
- 0x1c,0x8a,0xf3,0x8c,0xa2,0x7d,0x7e,0x14,0x72,0x2b,0x1e,0xa2,0xaf,0x76,0xff,0x0f,
- 0xb6,0xd0,0xd2,0x9e,0x11,0xa2,0x1a,0xbf,0xa0,0x55,0x66,0xc1,0x6a,0x5b,0xbf,0xe1,
- 0x17,0xfa,0xf9,0x76,0x64,0x5b,0xa1,0xc6,0x9f,0x92,0x2a,0xb6,0xd5,0xfa,0x0e,0xd1,
- 0xf9,0x55,0xa4,0xcf,0xce,0xcf,0x6f,0x60,0xf9,0x8d,0xb4,0x67,0x21,0x79,0x40,0xed,
- 0xe4,0xb9,0x53,0x77,0x94,0x55,0x2b,0x0c,0x24,0x62,0x6f,0x8b,0x79,0xdf,0x2e,0x71,
- 0xce,0xd8,0xea,0x83,0xce,0x59,0xec,0x30,0x25,0xe6,0xe2,0x56,0xa0,0xcf,0xfc,0xb1,
- 0xe1,0x73,0xf4,0x1b,0x09,0x6d,0x48,0x39,0x47,0xea,0xe2,0x1b,0x93,0x45,0x1f,0xda,
- 0xc3,0xb9,0x9f,0x9d,0xc2,0xc7,0x36,0x0d,0x0d,0x88,0xf5,0xd5,0x22,0xea,0x5f,0x74,
- 0x49,0xbf,0xdc,0x5c,0xf9,0x1e,0x61,0xb0,0x25,0x2f,0x8c,0x1c,0x85,0x7a,0x3d,0x7f,
- 0xb8,0xc8,0xd2,0xe0,0x59,0xf5,0xaf,0x64,0xd5,0x53,0x97,0xe5,0xa1,0xab,0xe4,0x65,
- 0x94,0x59,0xcc,0x3f,0x2b,0x97,0x65,0xf4,0xf3,0x42,0x7f,0x98,0xb8,0xfe,0x29,0xb2,
- 0x82,0x6f,0x16,0xb3,0xdb,0xb0,0xcd,0x47,0x16,0xff,0x72,0x17,0x7b,0x8d,0xbd,0xb0,
- 0xb2,0xe5,0xe1,0xb0,0xbb,0x32,0x86,0x9c,0xba,0xdf,0x13,0x46,0xe7,0xd9,0x36,0x33,
- 0xd8,0xe4,0x9e,0x6b,0xaf,0x2f,0x76,0x1f,0xec,0x6a,0x7b,0xfe,0x3e,0xb9,0x59,0x3d,
- 0xaa,0xcc,0x33,0x37,0x9e,0x6a,0xab,0x84,0x43,0xa1,0x3a,0xcd,0x9b,0x6c,0x4b,0x8b,
- 0xf5,0xb5,0xbd,0x64,0x34,0xfe,0xd2,0xac,0xfa,0x0e,0xdf,0x9e,0xa2,0x54,0x7c,0x0c,
- 0xa6,0xff,0xc6,0x77,0xaa,0x73,0x84,0x8e,0x85,0xea,0x01,0x39,0xa3,0x73,0xfe,0x86,
- 0xc5,0x8e,0xbb,0x91,0x7f,0x7d,0x82,0xf1,0x3c,0x2f,0x84,0x7d,0x6c,0xe1,0x97,0xa5,
- 0xdf,0x80,0x21,0x51,0xff,0x62,0xdb,0xbe,0x3a,0x69,0x40,0x18,0xe2,0x4a,0x64,0x70,
- 0x92,0xfe,0x90,0x71,0xb4,0x0a,0x41,0xc4,0x76,0xd8,0xf9,0xc3,0xc9,0xfa,0x8d,0x47,
- 0xe8,0xcc,0x71,0x85,0xa7,0x11,0xab,0xee,0x59,0x9c,0xd1,0x0d,0xc2,0x69,0x84,0x7e,
- 0x47,0x4b,0xe3,0x41,0xfc,0x12,0xeb,0xe2,0x04,0x64,0xe9,0x0f,0x3f,0x13,0xf4,0xc4,
- 0x29,0x84,0x8d,0xc4,0x78,0x9b,0x6c,0xfd,0xe1,0x24,0xc3,0xce,0x1f,0x2a,0x41,0xc8,
- 0xca,0xe5,0xd6,0x65,0xf7,0x47,0xee,0xe2,0xbd,0x41,0x7c,0x5f,0x92,0x19,0xd7,0x44,
- 0x21,0xa2,0xa5,0xdf,0x88,0x49,0x59,0x25,0x24,0x91,0x94,0x63,0x46,0xa2,0xea,0x84,
- 0xbc,0x9a,0x58,0xfa,0xf9,0x15,0x50,0xa0,0x59,0xb2,0xc3,0x23,0xe6,0x69,0x2d,0x98,
- 0xc6,0x45,0x74,0x18,0x4e,0x27,0xf8,0x15,0x1b,0xbf,0xfe,0x8f,0x17,0x84,0xde,0xe6,
- 0x24,0x1f,0x4e,0x5d,0x96,0xae,0xf2,0xe4,0x78,0xfd,0x61,0x6d,0xda,0x6b,0x0f,0xc7,
- 0x23,0x0c,0x76,0xa5,0xe1,0x7d,0x47,0xbf,0x21,0x59,0x3b,0x4d,0xde,0x55,0x9c,0x44,
- 0xe2,0x3e,0xb8,0x9a,0x5d,0xc9,0xd6,0x1f,0xb6,0xb3,0xdd,0x5e,0xdf,0x3a,0x6e,0xe9,
- 0x0f,0x23,0xc7,0x8b,0xf7,0xb5,0x7f,0x0f,0xf1,0xcb,0xe6,0xd4,0x2b,0x2c,0x7d,0x94,
- 0x6a,0xe7,0xe7,0xad,0xb1,0x57,0x32,0x20,0x9b,0xa0,0x3f,0x0c,0x5a,0x31,0x6d,0x8b,
- 0xcf,0x36,0xaa,0x26,0xe9,0x0f,0x27,0xd7,0xbf,0x32,0xf8,0xd5,0x31,0x59,0x7f,0x98,
- 0x9b,0xc9,0x1f,0x7e,0x89,0xfe,0x30,0x3b,0x37,0x68,0xe3,0x97,0x32,0x41,0x7f,0x98,
- 0x97,0xd5,0x66,0xbf,0x9d,0x9f,0xcf,0xd6,0x1f,0x92,0x6a,0x6b,0xff,0x97,0x22,0xf0,
- 0x4b,0xcc,0x7b,0xb7,0xba,0xcc,0x18,0xd7,0xd5,0x07,0x58,0x72,0xcf,0xc9,0x1f,0xf2,
- 0xef,0xda,0x3a,0xed,0x4c,0xa6,0xcf,0xe7,0xc9,0xf8,0xe2,0x9d,0x85,0x5f,0x1d,0xec,
- 0xfc,0x28,0x8e,0x5f,0x18,0x6f,0x9c,0x73,0x12,0x77,0xe2,0x4a,0xc0,0xd1,0x1f,0xea,
- 0x16,0x5a,0xe9,0x4e,0x22,0x91,0x74,0x48,0xdc,0x70,0xf6,0x2f,0x0f,0xd0,0x16,0x91,
- 0x3f,0xcc,0xea,0xbc,0x85,0x5f,0x11,0x47,0xbf,0x21,0x3d,0x31,0x5e,0x72,0x19,0x71,
- 0x6a,0x7f,0x8b,0x2d,0x5f,0xb7,0xa5,0x1d,0x0e,0xb8,0x78,0x3d,0xae,0x82,0x91,0x2c,
- 0x81,0x4d,0x16,0x7e,0xad,0xc8,0xe8,0xe7,0x85,0x46,0xd1,0x83,0xc3,0x89,0x8f,0x1b,
- 0x97,0x67,0xbd,0xc5,0xad,0xb4,0xc4,0x97,0xd7,0x34,0x33,0xf5,0x2f,0xe5,0x23,0x06,
- 0x5b,0x3a,0x19,0x54,0xac,0xb4,0xe1,0x88,0xfa,0x9c,0xb8,0x62,0x71,0x22,0x96,0x3f,
- 0x9c,0x37,0x61,0x59,0xa5,0x26,0xe4,0x0f,0xcb,0xa4,0xa9,0xf0,0x8b,0xcc,0x6b,0x5c,
- 0x65,0xca,0xcd,0x4c,0x41,0x2e,0xae,0x38,0xf5,0x2f,0x27,0x5b,0x78,0xdc,0x36,0xde,
- 0xb6,0x8c,0xf2,0x83,0xe2,0xb0,0x58,0xf5,0xd2,0x17,0x8c,0x8c,0x26,0x59,0x18,0x83,
- 0x0e,0x7e,0x39,0xe7,0x1f,0xda,0xd9,0xc2,0x17,0x8d,0xb1,0x38,0x77,0x8c,0x5f,0xc0,
- 0xb9,0xf8,0xb5,0xe9,0xfc,0x6e,0x62,0xe3,0x17,0xd7,0x47,0x61,0x0f,0xbf,0xc0,0x90,
- 0x8f,0x77,0xe3,0x47,0xac,0x3f,0x09,0x5c,0x71,0x3f,0xca,0xb5,0xce,0x8f,0xda,0x6c,
- 0x9d,0x7f,0xe8,0x39,0x49,0xd0,0xe0,0xa5,0x3a,0x74,0x05,0xfb,0x34,0x76,0x52,0x96,
- 0xcd,0xbf,0xfe,0xb6,0x78,0xc8,0xd2,0x47,0xb1,0x94,0x29,0x15,0x63,0xe7,0x19,0x7b,
- 0x08,0x05,0x2c,0xfd,0xfc,0x93,0x25,0x2f,0xc0,0x8f,0xc4,0xae,0xd5,0xdd,0xfc,0x6c,
- 0x0d,0xec,0xea,0xae,0x62,0x46,0xb2,0x2a,0x92,0xc4,0x3a,0xff,0x30,0x0e,0x19,0x17,
- 0x27,0x8d,0x1b,0xd7,0xd2,0xa4,0xfc,0xb8,0x58,0x5f,0x54,0x1b,0xd5,0x8e,0x5a,0x3e,
- 0x53,0x75,0x42,0x7d,0xcb,0xb0,0xea,0x5f,0x3d,0x7c,0xff,0xb2,0xd0,0x1f,0x3a,0x69,
- 0x43,0x78,0x5e,0x12,0xfa,0x84,0x8c,0x7e,0xa3,0x73,0x82,0x66,0x60,0x90,0x1b,0xee,
- 0xa4,0x5d,0x83,0x66,0xfa,0x79,0x11,0xe1,0xb7,0x1e,0x66,0x42,0xc4,0x3e,0xc4,0x2f,
- 0x9c,0x53,0xdd,0x6b,0xe6,0x85,0xed,0xf5,0x45,0xbd,0x2b,0x8d,0x43,0x6c,0x4b,0xf2,
- 0x3e,0xf9,0x13,0x33,0xd3,0x67,0xa3,0xee,0xcd,0x82,0xa7,0x1d,0xfd,0xbc,0xa8,0x7f,
- 0x1d,0xf0,0x75,0x15,0x0d,0xf5,0xf3,0x42,0xd8,0x49,0xd6,0xe7,0x15,0xdc,0xc8,0xd2,
- 0x6f,0x70,0x75,0x4d,0xb7,0x67,0x17,0x1a,0x75,0xe9,0xaa,0x11,0x9c,0x2f,0x7e,0x65,
- 0x44,0x6e,0x56,0x1c,0xfd,0x46,0x27,0xa2,0x95,0x1a,0x2a,0x5f,0x29,0x8c,0x6e,0x32,
- 0xa4,0x58,0x86,0x9e,0xe1,0x5f,0xac,0xcf,0x6a,0x32,0xa7,0x43,0x6b,0x83,0x95,0xac,
- 0xfe,0x75,0x90,0x5f,0x41,0x5f,0x17,0xc8,0xe0,0x17,0x1b,0xfb,0xd6,0x4d,0x05,0x2b,
- 0x75,0x66,0xf8,0x93,0xd8,0x86,0x19,0x79,0x49,0x12,0xb2,0x78,0x53,0x89,0x50,0x1b,
- 0x7a,0x43,0xf2,0x36,0x6e,0x14,0x24,0x1b,0x06,0xb9,0x91,0x9f,0xcc,0xb5,0xf6,0x5f,
- 0xa4,0xa5,0x17,0x08,0x7b,0xf2,0x73,0x46,0x3c,0xc3,0xdc,0x08,0xda,0x73,0x51,0x3d,
- 0xec,0x99,0xa4,0x9f,0xf7,0x54,0x72,0x4e,0xcd,0x53,0xc1,0x16,0xff,0xea,0xb7,0xf3,
- 0x87,0x5e,0xbe,0x53,0xb2,0x33,0x1e,0xf9,0x7a,0xf4,0x79,0x51,0x3b,0x1e,0x84,0x4e,
- 0xf1,0x46,0x4d,0xd4,0xcf,0x2f,0x24,0x7f,0xcb,0x5d,0x77,0x03,0xbe,0x63,0x92,0x45,
- 0xc4,0x86,0x45,0x6d,0x2b,0x29,0xf0,0x6b,0x00,0xc3,0xc2,0xef,0x58,0x42,0x8e,0xc0,
- 0x05,0x69,0x1d,0xcd,0xe7,0xb5,0x24,0xbb,0xfe,0xe5,0x35,0xc4,0xfe,0xaf,0xce,0x1b,
- 0x12,0xa7,0x61,0x21,0x83,0xad,0x14,0xbc,0x21,0xce,0x8f,0xb2,0xeb,0x5f,0xd3,0x5e,
- 0xd0,0x18,0x6c,0x6d,0xec,0x2f,0xe7,0x40,0xc6,0x68,0x57,0xca,0xc1,0x2f,0x65,0x1c,
- 0x7e,0x05,0x93,0x18,0xee,0x1e,0xb2,0x71,0xf9,0x65,0x1a,0xce,0xd2,0x6f,0xa4,0x70,
- 0x7d,0x5d,0x25,0xf0,0x4b,0x21,0xbc,0xf0,0xdd,0x4c,0x46,0x09,0x23,0x62,0xac,0xfe,
- 0x25,0xd6,0x29,0x85,0xc7,0x54,0x71,0xe6,0xb0,0x7f,0x8a,0x64,0x09,0x39,0xde,0x11,
- 0x44,0xcc,0xa9,0x7f,0xd9,0xfb,0xbf,0x3a,0xf6,0xdc,0x10,0xb4,0x29,0xe7,0x20,0xdb,
- 0x9c,0x3e,0xae,0xfe,0x25,0xf0,0xcb,0xbb,0x4b,0x5e,0xc8,0x8f,0x8d,0xf2,0xb1,0x83,
- 0x7c,0x0f,0x42,0x97,0xd0,0xcf,0x37,0x4f,0xc4,0x2f,0x6a,0x89,0xd6,0x6c,0xfd,0xe1,
- 0xc4,0xf3,0xa3,0x7c,0x9b,0xe5,0x0a,0x6a,0x0b,0x39,0x6c,0x5e,0x90,0xd1,0x6f,0x08,
- 0xb7,0xbc,0x35,0x30,0x93,0x0b,0x39,0xe4,0x2c,0x6d,0xc6,0x24,0xfd,0xa1,0x3b,0x4b,
- 0xc8,0x61,0x19,0x47,0x26,0xea,0x0f,0xdd,0x0a,0x6d,0x99,0x80,0x05,0x13,0xeb,0x5f,
- 0x2e,0xb9,0xcc,0xb0,0xf8,0xc5,0x09,0xdb,0x98,0xa8,0x9f,0xef,0x97,0xcf,0x18,0x42,
- 0x64,0xd8,0xe0,0x20,0x9a,0xcd,0xad,0x5c,0x67,0x38,0x5a,0xe5,0xf7,0xcb,0x4f,0xab,
- 0xcc,0x08,0xc6,0xe5,0xdf,0xc1,0x6b,0x02,0xbf,0xec,0xf3,0xa3,0x90,0x9f,0x32,0xfc,
- 0xea,0x6c,0x25,0x09,0x6e,0xb0,0xfd,0xcb,0xad,0x02,0xd1,0xe4,0x82,0x1c,0x4b,0x1f,
- 0x25,0x7a,0x98,0xa7,0xad,0x5f,0xc3,0x0d,0x86,0xb9,0x5b,0xac,0x3e,0xfb,0x33,0xfa,
- 0x43,0x36,0xd2,0x4e,0x7f,0x60,0x27,0xb1,0xf8,0x69,0x5f,0xc2,0x1a,0x7b,0x8e,0x93,
- 0x3f,0xe4,0x68,0x95,0x1f,0x2f,0xfa,0x39,0x7f,0xbc,0x5e,0xd6,0x1f,0xeb,0x39,0x5b,
- 0xe7,0x47,0xad,0x90,0x76,0x12,0x9b,0x76,0x51,0x66,0xcc,0x61,0xe5,0xbc,0xf1,0xf5,
- 0xaf,0x0c,0x7e,0x15,0xe9,0xad,0x29,0x1b,0xbf,0x52,0xa4,0x6e,0x5c,0xfd,0x4b,0xd5,
- 0x18,0x5a,0xc9,0xef,0x93,0x6b,0x2a,0xd7,0x43,0x90,0x4e,0x61,0xfb,0x97,0xd7,0x5b,
- 0xf8,0x35,0xbe,0xfe,0xe5,0x09,0xbb,0x0b,0x94,0x36,0xc9,0x02,0xb2,0x87,0x14,0xae,
- 0xe8,0x18,0xaf,0x9f,0xef,0xf1,0x34,0x91,0x52,0x21,0x4c,0x42,0x20,0x33,0x7f,0x0a,
- 0xf9,0x59,0xf5,0xaf,0x5d,0xce,0xfe,0x2f,0xb9,0x00,0x98,0x90,0x83,0x69,0xda,0xc9,
- 0xb7,0xed,0xfa,0x97,0xf0,0xab,0xd3,0x76,0x0b,0xc9,0x53,0x1c,0x23,0x73,0xcb,0x67,
- 0x7e,0x92,0xb0,0x54,0x5e,0xbd,0xf6,0xf9,0x87,0x9f,0x8a,0xd3,0xf3,0xba,0xcb,0x67,
- 0x1b,0x47,0x45,0x18,0x7f,0xc1,0x78,0xb9,0x3d,0x3c,0xe0,0x5b,0xe8,0xb1,0xce,0x2d,
- 0x64,0xfa,0xf9,0x97,0x68,0xd9,0x90,0xe7,0x2f,0x88,0x1f,0xd6,0x91,0xaa,0x21,0x4f,
- 0x0d,0x39,0x4e,0xdf,0x48,0x6c,0x1b,0xf4,0xd4,0xb8,0x67,0x3b,0xe7,0x47,0x19,0x2f,
- 0x49,0x65,0xa9,0x29,0xcd,0x44,0xa5,0xbc,0xcf,0xf7,0x90,0x51,0xe4,0x5f,0x33,0x18,
- 0xff,0x72,0xce,0x3f,0xb4,0x64,0xf3,0x5b,0x89,0x44,0xac,0x50,0xff,0x88,0xfe,0x90,
- 0xd8,0x44,0xa0,0x3a,0xf5,0x2f,0x95,0x95,0xef,0x71,0x5d,0x54,0x19,0xd6,0x7a,0x1f,
- 0x6b,0x39,0x04,0x4c,0xf3,0xef,0x99,0x3d,0x61,0xff,0x57,0xfc,0xeb,0x83,0xf0,0x17,
- 0x99,0x58,0xbd,0x26,0xab,0xfe,0xe5,0xe8,0x0f,0xcf,0xc8,0xc5,0xc0,0x80,0xec,0xf2,
- 0x61,0xe2,0x68,0x06,0xac,0xfa,0x17,0xb5,0xeb,0x5f,0x5b,0xe4,0xbb,0x26,0x83,0xd4,
- 0x78,0xfd,0xa1,0x3b,0xd1,0x3a,0x7b,0x52,0x9b,0x6c,0xfd,0x21,0x3b,0x0a,0x0c,0xb6,
- 0x1b,0xbd,0x6d,0x24,0xd8,0xcb,0xf6,0x52,0xc1,0xde,0x90,0xd0,0x1f,0x3a,0xe7,0x47,
- 0xd1,0x73,0x7a,0xdd,0xc1,0x82,0x32,0x59,0xa7,0x38,0xae,0x63,0x9e,0x3d,0xf2,0x68,
- 0x07,0xdb,0x11,0xb6,0xb4,0x6b,0x87,0x29,0x83,0x85,0x5f,0x2a,0xaf,0xfe,0xf7,0xca,
- 0x49,0x73,0x4c,0xa9,0x3f,0xe8,0x3b,0x5d,0x7e,0xd8,0x18,0x8b,0xa1,0x63,0x3c,0x25,
- 0x0f,0x4a,0x0e,0x7e,0xbd,0x27,0xe2,0x8d,0x5a,0xf8,0x8c,0xe2,0xb2,0xa2,0x3c,0x7f,
- 0x58,0x3f,0x6e,0xff,0xd7,0x10,0x87,0x2d,0xec,0x61,0x05,0xeb,0x33,0x45,0x63,0xd4,
- 0xf8,0xa5,0x35,0x2e,0x87,0x7f,0x69,0x0f,0xd9,0xb1,0xc4,0x0e,0x09,0x97,0x15,0x10,
- 0x81,0x68,0x53,0x32,0xfc,0xeb,0xf6,0x0d,0xd6,0x90,0xdd,0x15,0x84,0xdf,0x67,0x1b,
- 0x61,0x27,0xc4,0x4e,0xe4,0x5f,0x1c,0x65,0x42,0x72,0xb5,0x81,0xaf,0xd6,0x4a,0xdf,
- 0x7a,0xc9,0xd1,0xcf,0x4f,0xe6,0x5f,0x7d,0xcc,0xe8,0x15,0x3c,0x85,0x8c,0xaf,0x7f,
- 0x65,0xf4,0x87,0xfa,0xa1,0x52,0x1e,0xea,0x1f,0x86,0x73,0x6a,0x5d,0x6f,0x36,0xff,
- 0xaa,0x32,0xac,0x29,0x18,0x80,0x4e,0xa3,0xba,0x5b,0x7d,0x1c,0xe7,0x14,0x79,0xe5,
- 0x29,0x24,0x98,0xa7,0xc4,0x63,0x46,0xfc,0x32,0xac,0x57,0xeb,0x15,0x36,0x9c,0x10,
- 0xbe,0x6a,0xaf,0xc5,0x70,0xc5,0x9d,0xf4,0x2c,0x6c,0x1d,0xc9,0xec,0xaf,0x5c,0x27,
- 0xf6,0x2f,0x1f,0x4f,0xac,0xa3,0xc1,0x98,0x7a,0x07,0xe3,0x5f,0xad,0xfc,0xfc,0xc3,
- 0x63,0x94,0xcf,0x69,0x54,0x0d,0x1a,0xbf,0xe5,0xf8,0x55,0xbe,0x9f,0xbe,0x0c,0xb5,
- 0x89,0x02,0xb6,0xff,0xeb,0x74,0x47,0xad,0x99,0x5b,0xd3,0x36,0xfe,0xfc,0x79,0xa6,
- 0x71,0x1d,0xcd,0x19,0x13,0x42,0xdf,0xf3,0xb1,0x89,0xfc,0xeb,0x53,0xb0,0xf4,0x87,
- 0x3f,0x67,0xe7,0x93,0x80,0xb7,0x43,0xfe,0x35,0x65,0x85,0xb0,0x25,0xdd,0x72,0xc0,
- 0xe6,0x5f,0x2f,0x64,0xf4,0x87,0x08,0x5b,0xa0,0xf6,0xb3,0xf3,0x76,0x08,0x2f,0x84,
- 0x39,0xfb,0x97,0x5f,0x14,0x7d,0x1e,0x21,0xff,0x86,0x86,0x94,0x76,0x8f,0x90,0xc7,
- 0xe0,0x17,0x74,0xc6,0x09,0x75,0x35,0x49,0x66,0xf0,0xcb,0x82,0xad,0x25,0xa4,0x0d,
- 0xb6,0xbf,0x3e,0x9b,0xe5,0x0f,0x77,0xc0,0x4e,0x56,0x08,0xf3,0x67,0xf8,0xd7,0x41,
- 0xbb,0x94,0xb0,0x1e,0xe6,0xc5,0x0b,0xd2,0xe5,0xbb,0xe0,0x23,0x58,0xc0,0x84,0x1c,
- 0x93,0xf5,0xf3,0xc2,0xe9,0xe5,0x31,0x5f,0xb7,0x95,0x9d,0x9b,0x9a,0xd1,0xcf,0x37,
- 0x4d,0xe0,0x5f,0x1d,0xb6,0xe1,0xb9,0x08,0xff,0x0a,0xfc,0x8e,0xd7,0xbf,0xa6,0x6d,
- 0xb1,0x0c,0xcf,0x96,0x0c,0xff,0x9a,0x99,0xd1,0x6f,0xb0,0xfa,0xd7,0xdf,0x6e,0xb1,
- 0x0c,0x4f,0xbc,0xd5,0xd6,0x1f,0x66,0xf1,0x2f,0xba,0x07,0xaa,0xa3,0x6e,0x3f,0x37,
- 0xc6,0xe5,0x0f,0x91,0x7f,0x75,0x0b,0xfd,0x7c,0x8f,0x31,0xdc,0x54,0x5b,0xbc,0xde,
- 0x36,0x98,0x7e,0x9e,0x8c,0xc7,0xaf,0x38,0xc7,0xaf,0xfa,0xc6,0xfc,0xdf,0x14,0x0d,
- 0x18,0x36,0x7e,0xe5,0xf2,0xb9,0x50,0x5d,0x0e,0xa2,0xcd,0x48,0x88,0x83,0x9b,0xda,
- 0x2a,0xf8,0x09,0x4e,0x78,0xe5,0x7d,0xe7,0xfc,0x5e,0x7d,0x50,0xe8,0xe7,0x59,0xfd,
- 0xab,0x1a,0x3a,0x7e,0xee,0xd6,0x15,0x66,0xe4,0xf5,0x66,0x9d,0x3f,0xdf,0x61,0xe9,
- 0x0f,0xb7,0xc0,0xe3,0x6a,0x55,0xb3,0xda,0xd4,0x5a,0xa2,0xa3,0x61,0x78,0x9a,0x1c,
- 0xfd,0xbc,0xa5,0x3f,0x44,0x5c,0x7e,0x0a,0x7e,0x05,0x73,0xf0,0x3d,0xcc,0x99,0xcf,
- 0x4f,0xd3,0xca,0xeb,0x77,0xf2,0x87,0x5b,0x1c,0x6d,0xfc,0x4e,0xd6,0x0d,0x23,0xb8,
- 0x45,0xe2,0xfd,0xc1,0x2b,0x52,0xd6,0xfe,0x65,0x71,0x45,0x6e,0xb4,0xf6,0x2f,0x67,
- 0xf2,0x87,0x07,0x6d,0xfe,0xb5,0x9d,0x9f,0xf3,0xe6,0x6b,0x95,0x99,0xa0,0x69,0x1e,
- 0x82,0x89,0x2c,0x94,0x4d,0x5e,0xb3,0xcc,0x2d,0x6a,0x49,0x95,0xca,0x42,0x9e,0x49,
- 0xf6,0xd8,0xdb,0xbe,0x78,0xfd,0xeb,0x6d,0x8a,0x46,0x9a,0x64,0x9d,0x1f,0x55,0xce,
- 0xde,0xb1,0xf9,0x50,0x00,0x6d,0x94,0xd7,0xbf,0xf0,0xad,0x23,0xdc,0x58,0xaf,0x5b,
- 0xfc,0x6b,0xba,0x0d,0x5b,0x85,0xd0,0x6e,0x2e,0xd3,0xd4,0x46,0x62,0xc2,0x96,0x8e,
- 0xb2,0x90,0xba,0x84,0x74,0x38,0xfa,0x43,0x71,0xec,0xe1,0x6a,0x04,0x93,0x23,0x74,
- 0x6f,0x22,0x38,0xe8,0x79,0x1b,0x8e,0xd0,0x79,0xcc,0x58,0x6f,0xe1,0xd7,0xa5,0x6c,
- 0xff,0xd7,0x74,0x21,0x2f,0x17,0xc3,0xc1,0xb1,0x5b,0xc2,0xd1,0x88,0xcd,0xbf,0xbe,
- 0x30,0xb8,0x1e,0xfb,0x43,0xf9,0x73,0xe3,0x93,0x96,0xab,0x62,0xca,0x5b,0x72,0x35,
- 0xbc,0x46,0xeb,0x97,0x7b,0xdf,0x72,0xf2,0x87,0x62,0xff,0xd7,0x60,0x67,0x25,0xf9,
- 0x88,0xae,0x45,0x5c,0x56,0xff,0x96,0xf8,0xcd,0x9f,0x27,0xe7,0xec,0x42,0xc3,0xd1,
- 0xb4,0xc7,0x29,0xdf,0xbf,0x7c,0x17,0x19,0xd6,0x77,0x42,0x95,0xa6,0x46,0x48,0x94,
- 0xb6,0xc3,0x1c,0x55,0x8d,0x92,0x01,0xf1,0x0c,0x9d,0xfd,0xcb,0x3a,0xaf,0xfd,0x61,
- 0xf0,0x3f,0xbf,0x75,0xb9,0x5a,0x2e,0x32,0x1e,0xc7,0x26,0xec,0x5f,0x4e,0xca,0x9f,
- 0xaa,0xbf,0x64,0x81,0x7d,0xb2,0x68,0x39,0xf7,0x00,0xd1,0x64,0xf9,0xe0,0xc4,0xfd,
- 0xcb,0x82,0x02,0xeb,0x3e,0x55,0xde,0xc5,0x17,0x5a,0x3d,0xcd,0x3a,0xbf,0xd7,0xf6,
- 0x99,0xc7,0xe0,0x38,0xe1,0x0b,0x36,0x64,0x3c,0x88,0x2d,0x7c,0xe9,0x72,0x6b,0xff,
- 0x72,0x4f,0x46,0x7f,0x28,0x42,0xbe,0xce,0x38,0x09,0x5a,0xb1,0xdf,0x2d,0xb6,0xfe,
- 0x50,0xa9,0x14,0x6d,0x12,0xd8,0xc6,0x4a,0xcb,0xef,0x84,0x27,0xec,0x18,0xd2,0x5a,
- 0x5f,0xbc,0xe6,0x92,0xc2,0x71,0xa5,0x62,0xad,0x24,0x48,0x3b,0xf5,0xb5,0x1d,0x81,
- 0xed,0x52,0xb0,0x55,0xae,0x88,0x5b,0xfc,0xcb,0x50,0x63,0xed,0xe7,0x08,0x7a,0xe3,
- 0x6d,0x18,0xd3,0x1e,0x63,0x87,0x7b,0xaf,0xf5,0x24,0xe8,0xa0,0x56,0xa7,0xfa,0xd6,
- 0x96,0x3b,0xfc,0xcb,0xda,0xff,0xb5,0x4d,0x1e,0xa2,0x63,0x70,0xf9,0x41,0x5f,0x57,
- 0xdb,0x8f,0xe1,0x1d,0x44,0xb4,0x8d,0x5d,0x45,0x93,0xf4,0xf3,0x77,0x3b,0xc4,0xf9,
- 0x7d,0x72,0x94,0x45,0x20,0x23,0xf2,0xb0,0xa5,0x1b,0xb4,0xf5,0xf3,0xdd,0x60,0x1b,
- 0xd8,0xd5,0x4e,0x98,0xcd,0x8d,0x1c,0x9b,0x7f,0xa9,0xec,0xb7,0x00,0x6e,0x0c,0x19,
- 0x68,0x08,0xa7,0x97,0x06,0x2b,0x56,0x7f,0x7f,0x5c,0xfd,0x8b,0x43,0xb6,0xe6,0x40,
- 0x76,0xa7,0xd0,0x6f,0x0c,0x5b,0xbc,0xa9,0x64,0x72,0xba,0xef,0x65,0x7e,0x6e,0xe1,
- 0x1f,0xdf,0xbf,0x7c,0xfa,0x8f,0xec,0x5f,0xb6,0x8d,0x13,0xfc,0x20,0xc4,0x0c,0x7e,
- 0x1d,0x63,0x5a,0x1a,0x71,0xfe,0x86,0x08,0x21,0x7c,0x9c,0x7f,0xd1,0x40,0x96,0xfe,
- 0x70,0xd0,0xc9,0x1f,0xe6,0x38,0xf9,0x8d,0x57,0xe9,0x43,0x54,0xcf,0xd2,0x1f,0x22,
- 0xff,0xb2,0xd4,0x47,0x77,0xf1,0x5c,0xdc,0x20,0x3b,0x94,0x89,0xae,0xa3,0xcb,0xf0,
- 0x4a,0x8e,0xc3,0xbf,0x0a,0xde,0xdc,0x0b,0xb5,0x83,0x4c,0x3f,0x6f,0xb2,0x83,0xa4,
- 0x3c,0x0b,0xe5,0xfd,0x15,0xef,0x74,0x24,0x07,0xb3,0xf4,0x87,0xd3,0x76,0x73,0xda,
- 0x75,0x39,0x8e,0x4b,0xe1,0xfc,0x6b,0x0f,0x2e,0x99,0x73,0x96,0x91,0xcd,0xbf,0xd8,
- 0xfe,0x65,0x8f,0xf8,0x81,0x98,0xdc,0xcc,0x00,0x17,0x65,0xf1,0x2f,0x2b,0xbb,0x92,
- 0xa5,0x9f,0xb7,0xf5,0x87,0x39,0x86,0x78,0xe7,0x99,0xfe,0xf0,0x7b,0x2c,0x4c,0xfd,
- 0x0e,0x3b,0xc8,0x37,0x2d,0xaf,0x46,0x20,0x1b,0xaf,0x3f,0x44,0xfc,0xb2,0xa7,0x72,
- 0x89,0xb5,0xd1,0x32,0xf0,0xe9,0x24,0xfd,0xa1,0xb3,0xff,0x6b,0x85,0x6d,0x9c,0x35,
- 0x85,0x41,0x26,0xe7,0x0f,0x9d,0x9f,0x4d,0x49,0xb3,0x83,0x6e,0x04,0xff,0x12,0x7e,
- 0x5e,0x1b,0x90,0xc6,0xe1,0x17,0x13,0x78,0x4b,0x07,0xec,0xfd,0x5f,0xba,0x8d,0x5f,
- 0x0f,0x67,0xe7,0x06,0xf9,0x01,0x11,0x2d,0x46,0x80,0x15,0x91,0xd3,0xd2,0x04,0xfe,
- 0x95,0x49,0x1b,0x0e,0x11,0xeb,0xfc,0x8d,0x49,0xfc,0xcb,0x92,0xf0,0xb9,0x99,0x71,
- 0x3f,0x24,0x26,0xf0,0xaf,0xee,0xec,0xb4,0x98,0x87,0xf1,0xaf,0xf5,0x4d,0x4c,0x9f,
- 0x90,0xfb,0xa9,0x88,0x0f,0x19,0x7e,0x4d,0xdc,0x0b,0xcc,0xf4,0xf3,0x02,0xbf,0x2c,
- 0x4c,0xb1,0xf6,0x7f,0x6d,0xec,0x97,0x2b,0x2c,0xb2,0xe6,0x99,0x6f,0x9c,0xd7,0xf8,
- 0xb8,0xf6,0xbb,0x1c,0xfe,0x25,0xd2,0x86,0x6e,0x3d,0xdb,0x08,0x67,0xd7,0xbf,0x1c,
- 0xfd,0x7c,0x26,0x7f,0x98,0x43,0xf7,0x08,0xcd,0xc9,0xeb,0x62,0x9d,0x66,0xed,0xff,
- 0x72,0x1e,0x02,0x43,0xf3,0xed,0x17,0xd7,0x1f,0x56,0x64,0x8c,0x93,0x96,0x7e,0x1e,
- 0x6c,0xfe,0x35,0x3e,0x96,0xf0,0xd9,0xba,0xca,0x8b,0xf1,0xaf,0xec,0xfc,0x61,0x4a,
- 0x15,0xfa,0x8d,0xec,0xfd,0x5f,0x22,0x7f,0xc8,0xf5,0xf3,0x68,0x9c,0x55,0x1f,0xec,
- 0x09,0x5c,0x44,0x7f,0xf8,0x48,0x56,0xfe,0xf0,0x28,0x6d,0xd3,0x62,0xe6,0x45,0xf6,
- 0x7f,0x89,0xd7,0x98,0x6f,0x5b,0x7e,0x0f,0xd6,0x88,0x7c,0xc2,0x44,0xfe,0x65,0xe7,
- 0x0f,0xa7,0xac,0x96,0x2f,0x20,0x90,0xed,0xc9,0xd6,0x1f,0x4e,0x9b,0xec,0x13,0x46,
- 0x59,0xe7,0x59,0x12,0x3e,0xc3,0xbf,0x8c,0x73,0x6c,0x1b,0x51,0xb7,0xfc,0x29,0xdf,
- 0xc8,0xec,0x3b,0x2b,0x7f,0xc1,0x70,0x30,0x5b,0x7f,0x58,0xf8,0x20,0xdd,0xb7,0x9d,
- 0xe9,0xe7,0xf1,0x8d,0xda,0x27,0x0a,0x58,0x6f,0x42,0x6b,0x02,0x7d,0x42,0x8d,0xfc,
- 0x64,0xd6,0xf9,0xbd,0x7a,0x55,0xcf,0x8d,0x5c,0x3f,0xcf,0x80,0x6c,0x15,0x39,0x06,
- 0x3f,0xd7,0xcb,0xcc,0x8c,0xfe,0x50,0xcf,0x9c,0xbf,0x61,0x1f,0xdb,0x8b,0x71,0xd4,
- 0x76,0xe1,0x33,0x3b,0xb2,0xcf,0xef,0xe5,0x27,0xc9,0x33,0xd9,0x21,0xef,0xf3,0xef,
- 0x31,0x32,0x67,0xfa,0x8d,0x89,0xfb,0xbf,0xb2,0xc7,0xf5,0x01,0xfc,0x99,0x30,0x12,
- 0xe3,0xf6,0x2f,0xf7,0x64,0xfb,0xcc,0x33,0xca,0x85,0xf1,0xfc,0xcb,0xc1,0xaf,0x00,
- 0x2b,0xd9,0x70,0xff,0xfc,0x7b,0xf6,0x42,0x66,0xf3,0x2f,0x29,0xab,0xe6,0x62,0x51,
- 0x8f,0x4f,0xf5,0xe7,0xec,0xfc,0xa1,0xb5,0xbe,0xbc,0x74,0xaf,0xca,0xf4,0xf3,0xa2,
- 0x84,0xd4,0xdf,0x19,0xda,0xfe,0x0a,0xf0,0xbd,0x54,0x73,0xb3,0xf8,0x57,0x9a,0x6d,
- 0xb5,0x5e,0xfa,0x4c,0xf9,0x27,0x26,0x27,0x1a,0x5d,0x6c,0x9f,0xd4,0x7d,0xec,0x2c,
- 0xaf,0xb6,0x71,0xe7,0xf7,0xd6,0xa7,0x7c,0xa7,0x5f,0x1e,0x35,0x3f,0x63,0xe7,0x99,
- 0x77,0x3d,0xf4,0x26,0x3d,0xa5,0xd7,0x33,0x0e,0xe2,0x9c,0x1f,0x35,0x0a,0xaf,0xea,
- 0x7b,0x79,0xd9,0x4b,0xb2,0x0e,0xfe,0x5a,0x50,0x7a,0xd8,0x98,0xd7,0xe4,0x1d,0x2c,
- 0x67,0x67,0x15,0x83,0x38,0xff,0xb0,0x33,0x96,0x29,0x7b,0xe9,0x6a,0x47,0x60,0x26,
- 0x3b,0x77,0xd7,0xe8,0x48,0xb4,0xda,0xe7,0x1f,0xc2,0x06,0x68,0x2d,0x75,0xf4,0x87,
- 0x18,0x43,0xc6,0x91,0x02,0x53,0x5d,0x8f,0xaa,0x81,0x88,0x7d,0xfe,0x3c,0xec,0x56,
- 0xd7,0xab,0x01,0x67,0xff,0x57,0x40,0xdd,0x4a,0x2a,0x49,0x87,0xba,0xdd,0xc0,0xc0,
- 0x6c,0x44,0xcc,0x97,0x74,0x3b,0xb2,0x2d,0xa3,0xcb,0xb4,0xce,0xdf,0xe0,0x07,0x7f,
- 0x29,0xca,0x81,0xfe,0xc0,0x80,0x37,0x51,0x9e,0xb2,0xf5,0x87,0x8f,0xc2,0x1f,0xb4,
- 0x97,0x1c,0xfc,0x02,0x9f,0x59,0x7e,0x06,0x9d,0x79,0x6d,0x4f,0x7d,0xfa,0xee,0x2c,
- 0xfe,0x75,0x50,0xcc,0xf2,0x90,0xfa,0xb1,0xab,0x8e,0x1d,0x6f,0x5b,0x89,0x6b,0xb0,
- 0xcb,0x40,0x5e,0xd0,0x6f,0xeb,0x37,0x6a,0xe9,0x83,0x60,0xe9,0x2a,0x3f,0x26,0xd5,
- 0xa0,0xc6,0x31,0x3e,0xdc,0x8b,0xe3,0x52,0x77,0x6f,0xfe,0x5c,0xe8,0xd9,0xd8,0xf9,
- 0x87,0xad,0x6a,0x96,0xae,0x52,0xd5,0x89,0xa2,0x74,0x81,0xde,0x83,0x86,0xc5,0xd1,
- 0x62,0xda,0x77,0x8c,0x07,0xe9,0x32,0xbb,0xfe,0x55,0x95,0x56,0x57,0x90,0x4b,0xe0,
- 0x19,0xbc,0xa2,0xae,0x8c,0x38,0xfa,0xc3,0x25,0xd0,0x03,0x21,0xd3,0x37,0x97,0xd1,
- 0x2e,0xa8,0xed,0x53,0xc3,0xb2,0x0a,0xa7,0xf5,0x90,0x19,0xd4,0xe5,0xb7,0xc5,0x7d,
- 0x8c,0x92,0x0d,0xc4,0x3a,0xa1,0x71,0xc8,0x26,0x8f,0x1f,0x89,0x8c,0x7d,0xc2,0xc6,
- 0x5c,0x55,0x79,0x4c,0x3d,0x28,0x50,0x78,0x08,0x4e,0xd3,0x1a,0xd3,0xa7,0xcb,0x39,
- 0x90,0x62,0xf9,0xc3,0x84,0xec,0x2e,0xe6,0x6d,0xa2,0xa5,0xff,0x27,0xb4,0x9a,0xdb,
- 0xec,0xf5,0x8e,0x4b,0x26,0x16,0x29,0x86,0x56,0x66,0xa4,0x49,0x58,0xac,0x65,0x1d,
- 0x1e,0xa3,0xeb,0x12,0xdb,0xb2,0x6a,0x76,0x23,0xe4,0x32,0x58,0x63,0x96,0xc5,0x3c,
- 0x2b,0xdc,0x60,0xeb,0xe7,0x19,0x5f,0x4e,0xd8,0x63,0xe7,0x0f,0x41,0x85,0xb6,0x98,
- 0x1e,0x43,0x47,0xe4,0xb7,0xf5,0x87,0x83,0x70,0x44,0xa8,0x0d,0x85,0x8f,0xc2,0xfe,
- 0x54,0xc2,0x11,0xb3,0xab,0xd5,0x97,0x96,0xc3,0xb6,0x9e,0x0d,0xa7,0x57,0x1b,0xe7,
- 0xeb,0xa6,0x0c,0x93,0x89,0xfb,0xbf,0xd0,0x67,0xc6,0xc3,0xe3,0xf6,0x1c,0xcd,0x6c,
- 0xb7,0x4e,0x81,0xb0,0xce,0x33,0x37,0x19,0xff,0xe2,0x6a,0x43,0x3f,0xc7,0x26,0xa4,
- 0x5d,0x91,0x2b,0xc4,0x26,0xaf,0x52,0xb7,0xe5,0x35,0x16,0x5e,0x57,0xa1,0x3d,0xab,
- 0x06,0xb2,0xf0,0xab,0x9f,0xcc,0x17,0xbf,0x81,0xb5,0x89,0x08,0x99,0x27,0xd7,0x1f,
- 0xee,0xd1,0x13,0x36,0x7e,0x55,0xc5,0x3c,0xc7,0xc8,0x25,0xca,0x9e,0xb2,0x60,0x14,
- 0xff,0x95,0xf5,0x1b,0x7e,0x23,0x2c,0x7f,0xd8,0x24,0x8e,0x55,0xcf,0xb3,0xba,0x1a,
- 0xe2,0x1b,0x99,0x91,0x91,0x2d,0xb0,0xf5,0x87,0x03,0x88,0x44,0x59,0x7e,0x7e,0x69,
- 0xd2,0xc3,0x85,0x88,0xd7,0xf9,0xfa,0xe5,0xf7,0x73,0x2c,0xfd,0xe1,0x19,0x7a,0x3e,
- 0xdd,0xc5,0xe1,0x98,0x43,0x1b,0xd7,0xab,0x5f,0x5f,0xc9,0x7e,0x3f,0x45,0x0e,0x08,
- 0xcd,0xc0,0xc2,0x52,0xc4,0x2f,0x1a,0x10,0xfa,0x79,0x86,0x5f,0x1d,0xcc,0x60,0xbf,
- 0x64,0xa1,0x9a,0xd8,0x67,0x4b,0xbf,0xb1,0x86,0xed,0x56,0xb6,0xfb,0x5c,0x6d,0xa8,
- 0x4d,0xe4,0x0c,0xac,0x51,0xcb,0x9a,0xd4,0x5b,0x5a,0x2f,0x93,0xf8,0xe8,0xb7,0x2a,
- 0x3b,0xe1,0x79,0x3d,0x20,0xca,0x5e,0xec,0x20,0x44,0xa6,0x3f,0x0c,0xac,0x6b,0x64,
- 0xbc,0xdb,0x5f,0x6d,0xed,0xff,0xba,0x7d,0x80,0xa9,0xbc,0x32,0x7d,0xf6,0x6e,0x69,
- 0xe8,0x33,0x0e,0x40,0x38,0xe6,0xc5,0x97,0x5f,0xb7,0xe6,0x6b,0xa7,0x72,0x52,0x79,
- 0x31,0xd3,0x86,0xe5,0x0f,0xd1,0x78,0x31,0x3a,0x27,0xee,0x71,0xf4,0x87,0x88,0x5f,
- 0xba,0x75,0xec,0xfc,0xa0,0x10,0x72,0x9c,0x80,0x11,0x05,0x0d,0xb3,0x88,0xd8,0xfa,
- 0xc3,0xd9,0xfa,0x8b,0x94,0xa3,0xd5,0xa0,0xf6,0x1c,0x04,0x99,0xfe,0xd0,0x3a,0xff,
- 0x30,0x4d,0x88,0x26,0xda,0x28,0x8d,0xb0,0xd7,0x4c,0x64,0xad,0x2f,0x16,0x28,0x22,
- 0x40,0xa7,0x71,0x7d,0x59,0x73,0x41,0xb5,0xdb,0xe0,0x19,0xa1,0x9e,0x65,0x67,0x59,
- 0xcc,0xe1,0x85,0x5d,0x78,0x5a,0xaa,0xea,0xc7,0xfb,0x08,0x97,0x09,0x1d,0x1d,0xdf,
- 0xc2,0xf0,0x7b,0x8f,0xc0,0x2f,0x24,0x62,0x09,0xef,0x0a,0x84,0xda,0xff,0x8d,0x01,
- 0x79,0x30,0x25,0x8b,0x57,0x1e,0xd4,0x92,0x9d,0xd9,0x7e,0xbe,0x96,0xce,0x49,0x60,
- 0xe7,0xd9,0x3e,0xa9,0x5c,0xea,0x39,0x68,0xeb,0x0f,0xff,0xe5,0x16,0x2b,0x7a,0x47,
- 0x7f,0x18,0xaf,0x1f,0xdc,0xb8,0x3a,0xb7,0xce,0x38,0x4f,0xeb,0x63,0xbe,0x41,0xb9,
- 0x5f,0x8c,0xeb,0xc9,0xd2,0x2d,0xb0,0x56,0xb3,0xfa,0xf3,0x07,0x0e,0xac,0xf2,0x9d,
- 0xc6,0xd3,0x5a,0x55,0x63,0x5e,0x8c,0x7c,0xb4,0x98,0xb7,0xd1,0x60,0x8b,0xd6,0x02,
- 0x76,0x9f,0xa5,0xaa,0x8e,0xce,0x65,0x6e,0x2d,0xfa,0x34,0xe3,0xcb,0xd7,0xa3,0xb7,
- 0xe1,0x6d,0x62,0x4a,0x3b,0x62,0x8f,0xe5,0x5b,0x90,0x76,0x31,0x7c,0x27,0xf0,0x2c,
- 0x0d,0x1a,0x79,0x10,0xb6,0xbe,0x6b,0x17,0xcb,0xf7,0xea,0x5d,0xa2,0xcc,0xcd,0x63,
- 0xec,0x38,0xa9,0xd2,0xbf,0x68,0xab,0xa3,0x1e,0x76,0x02,0x2a,0x7f,0x37,0xe2,0x18,
- 0x6f,0x58,0x3f,0xfb,0x65,0xd5,0xf5,0xe2,0x48,0x58,0xbe,0x30,0xea,0xe2,0xb9,0x4f,
- 0xc9,0x03,0xb6,0xfe,0xf0,0x29,0x38,0x6f,0xec,0x75,0x7c,0x26,0xf5,0xa5,0xca,0x87,
- 0xd5,0x0b,0xbd,0x73,0xa9,0xb7,0x5f,0xb6,0xf4,0x87,0x8f,0xe3,0xfa,0x4a,0x1a,0xdb,
- 0x9d,0x94,0x20,0xf5,0x74,0x60,0x58,0xf8,0x9c,0x11,0x88,0xab,0x5b,0x22,0x27,0x97,
- 0x59,0xf9,0x43,0x16,0x11,0x05,0xb2,0xd2,0x86,0x9b,0x91,0x8c,0x3c,0x07,0x01,0x88,
- 0x26,0x03,0x69,0x31,0x5f,0x88,0x5f,0x90,0x84,0x6c,0x2d,0xba,0x86,0xc6,0x73,0xf8,
- 0x92,0x22,0xaf,0x74,0xf4,0x87,0xcb,0xed,0x53,0x95,0x38,0xe6,0x32,0x59,0x54,0xba,
- 0xf4,0x39,0x29,0x0c,0xc1,0xb8,0x9c,0x6e,0x75,0xea,0x5f,0x17,0xb2,0x78,0x0a,0xdd,
- 0x68,0xde,0x35,0x8c,0x98,0xfb,0x12,0xf8,0xfa,0xbf,0x9f,0x9e,0x69,0xe9,0x37,0x1c,
- 0xda,0x75,0xc1,0x16,0x72,0x4c,0xdc,0xff,0x45,0x1d,0xfe,0x45,0xec,0x83,0x7c,0xc9,
- 0xa7,0xda,0xf3,0xed,0xd5,0x27,0x3c,0xdd,0x91,0xec,0xf3,0xa3,0x64,0x7e,0x32,0xc3,
- 0x61,0x76,0x04,0x25,0x1a,0x77,0x65,0xed,0xff,0x12,0xdf,0x55,0x28,0xf8,0x57,0xa7,
- 0xcd,0xbf,0xa6,0x64,0x1d,0xdc,0xe4,0x9c,0x7f,0x38,0xb9,0x16,0x29,0xce,0xa2,0x5c,
- 0x9a,0x2c,0x9a,0x74,0x7e,0xaf,0x3c,0x7a,0xe9,0x38,0x22,0xe6,0xb9,0x08,0xff,0x6a,
- 0x18,0x1a,0xf7,0xa0,0xb2,0xf5,0x1b,0x56,0x2e,0x57,0x16,0x3f,0xd1,0xb2,0x20,0x3b,
- 0x97,0x1b,0xb9,0xf8,0xf9,0x51,0xe3,0x37,0x08,0x64,0xf4,0x1b,0x71,0x06,0x5b,0x53,
- 0xee,0x23,0xc7,0xe3,0x2f,0xd1,0x19,0xe2,0xfc,0xa8,0x7d,0xdb,0xaa,0x4e,0x70,0x2e,
- 0xc3,0xef,0xc3,0x7f,0xbf,0x32,0x59,0xdb,0xc7,0xf9,0xd7,0x39,0x08,0x0d,0xfa,0xae,
- 0x66,0x40,0x46,0x6b,0xcd,0x8d,0xd7,0x64,0x9d,0x1f,0xd5,0x78,0x4e,0x6c,0x5b,0x1e,
- 0x6a,0xfa,0x98,0x15,0x37,0x93,0xdf,0x18,0xb5,0x37,0xd4,0x67,0xeb,0x37,0x14,0x8c,
- 0x5b,0xf8,0x71,0x8e,0xca,0xb8,0xa0,0xab,0x61,0xd2,0xf9,0x51,0x19,0xda,0xf5,0xee,
- 0x84,0xfd,0x5f,0xb6,0x7e,0xc3,0xc1,0x5c,0xc7,0x98,0x32,0xfe,0xfc,0xa8,0x49,0x7b,
- 0xb7,0xf7,0x8a,0x22,0xc5,0xa4,0xf3,0xa3,0x2c,0x4d,0xf2,0xc6,0x44,0xd1,0xa0,0xf7,
- 0x0b,0x91,0xa0,0xf8,0x4f,0xf5,0x1b,0x7f,0xe4,0xfc,0xa8,0xa5,0xd9,0xfb,0xbf,0x2e,
- 0xa6,0xdf,0xc8,0x18,0x35,0x7f,0xec,0xfc,0xa8,0x22,0xcb,0x58,0xf4,0x65,0xe7,0x47,
- 0x29,0x0e,0x11,0xab,0xcc,0xce,0x1f,0x66,0xef,0xff,0x9a,0xd8,0xe7,0x8b,0x9e,0x1f,
- 0x45,0xc6,0xf3,0x14,0x4b,0xbf,0xb1,0x55,0x1a,0xb8,0x28,0x97,0xb9,0xc8,0xf9,0x51,
- 0x92,0x83,0x5f,0xd9,0xc6,0x11,0xc1,0xdf,0x33,0xfb,0x97,0x2d,0xce,0xd8,0xa6,0x45,
- 0x9c,0x2b,0x17,0x39,0x7f,0x63,0xb2,0x76,0xc5,0xca,0x1f,0x16,0xda,0xdf,0xde,0x30,
- 0xb9,0x3f,0x59,0xe7,0x47,0x89,0x29,0xb8,0x48,0xe7,0x0f,0xfe,0x31,0xfe,0x35,0x41,
- 0xbf,0x61,0xf3,0x2f,0x76,0x24,0xe6,0x73,0x8a,0xd8,0xbf,0xfc,0x25,0xfb,0xbf,0xa6,
- 0x4c,0x38,0x9f,0x2d,0x5b,0xbf,0x91,0xc5,0xbf,0x1e,0xb5,0xf9,0x97,0xf3,0x3e,0x0f,
- 0x8a,0xf3,0xb1,0x33,0xfc,0xeb,0xd6,0xe3,0x59,0x44,0xac,0x7d,0xb2,0xfe,0x90,0xad,
- 0x14,0xc9,0x3e,0x67,0xa9,0xc8,0xf1,0x09,0x19,0xfd,0x86,0xc8,0x1f,0xf2,0xf3,0xa3,
- 0x18,0x11,0x3b,0xcb,0x89,0x18,0x37,0x32,0xe7,0x6f,0xd0,0xbd,0xec,0xfc,0xc3,0x6b,
- 0x08,0xdb,0xbf,0x1c,0xe4,0xeb,0x9d,0xb2,0xdf,0x4b,0xf2,0xac,0x8e,0x58,0x9c,0xa8,
- 0x14,0xac,0xf3,0x0f,0xad,0x63,0x7b,0xb9,0x21,0xed,0xd3,0xaa,0xb2,0xf7,0x7f,0x39,
- 0xeb,0xcb,0x9f,0x19,0xbb,0xad,0xe8,0xb0,0xce,0xdf,0x48,0x38,0xfc,0xab,0x7c,0x32,
- 0xc9,0xfa,0x23,0xfc,0x2b,0x2b,0xa3,0x68,0xeb,0x37,0x60,0x4c,0x19,0xcf,0xbf,0x18,
- 0x23,0xfb,0x11,0x3f,0x59,0x71,0xe2,0xf9,0x1b,0x19,0xfe,0x35,0xa4,0xb2,0x8a,0x61,
- 0x27,0x62,0xd3,0x45,0xf8,0xd7,0x44,0xc3,0xe1,0x5f,0xf9,0x99,0xa9,0x44,0xfe,0x75,
- 0x50,0xd4,0xbf,0x58,0x45,0x6c,0xbe,0xa3,0x3f,0xcc,0x5f,0xc9,0xab,0x5d,0x1b,0x9f,
- 0xf1,0x73,0xfd,0x06,0x3f,0x64,0x3e,0x71,0xae,0xb6,0x06,0xb9,0x55,0xe6,0xf7,0x53,
- 0x86,0x8c,0xb1,0x59,0xf5,0x7d,0xbe,0xbd,0x6d,0x43,0x7d,0x9f,0x41,0xdd,0x41,0xdf,
- 0x33,0x6c,0x3f,0x6c,0xa0,0x86,0x9d,0x60,0x39,0xe8,0xe7,0x73,0x01,0xaf,0x2c,0x92,
- 0x9b,0x8d,0x3b,0xb5,0xab,0x94,0xfc,0x1e,0x89,0x19,0x5f,0xcb,0xc9,0x7f,0x45,0xba,
- 0x27,0xef,0x4e,0xf5,0xaa,0xb2,0x7c,0x73,0x2e,0x88,0x36,0x8d,0xb9,0xf7,0x48,0x77,
- 0x1a,0x5f,0xd3,0x4a,0xfa,0xb8,0xf1,0x6d,0xad,0xc4,0x54,0xe6,0xc2,0x06,0xe3,0x1b,
- 0xc5,0x8a,0x59,0xd8,0x24,0x3a,0x44,0x24,0x9d,0x46,0x75,0xbf,0xaa,0xb4,0x0a,0xc3,
- 0x8b,0xc6,0x3d,0x54,0xd5,0x8b,0x54,0x97,0x08,0x25,0xd8,0x83,0x46,0x22,0x76,0x07,
- 0x5c,0x02,0x2e,0x2a,0xc5,0xa4,0x3b,0xe0,0x36,0x34,0x1e,0x8f,0xa9,0x51,0x7e,0xc5,
- 0x6a,0xf3,0x4a,0xd4,0xb5,0x4a,0xba,0x93,0x7e,0x4d,0x2f,0x49,0x71,0xe3,0xdb,0xdf,
- 0x2d,0x4e,0xb9,0x7e,0x50,0x1b,0xed,0xfb,0xf6,0x32,0xe7,0xbb,0x5e,0x69,0xc2,0x45,
- 0x54,0x0a,0x8b,0x15,0xa9,0x85,0x1b,0x39,0x12,0x6d,0x85,0xd8,0x26,0x15,0x8d,0x38,
- 0xb5,0xfb,0x6c,0x28,0x01,0x49,0x85,0x88,0xae,0x51,0x45,0xe7,0x46,0x21,0x2d,0xc6,
- 0x2b,0x66,0x04,0x34,0xa7,0xcd,0xad,0x52,0xa4,0xa7,0x49,0xbf,0x2d,0x58,0x42,0x24,
- 0x83,0x36,0x95,0x15,0x2f,0xbc,0x3d,0x22,0x45,0xa0,0x29,0x79,0x5b,0x69,0x09,0xd8,
- 0xe3,0xf2,0x4a,0x45,0x70,0x9d,0xa9,0x35,0xbb,0x96,0x48,0x5f,0x33,0x6e,0x33,0x4b,
- 0x7e,0xa0,0x78,0xa5,0xdb,0x4d,0xa3,0xbf,0xb0,0xd9,0xfa,0x19,0x04,0x36,0x2e,0x74,
- 0x9e,0x8c,0xaf,0x49,0xa0,0xf8,0xf1,0xf6,0x4a,0x1c,0x54,0xb8,0x1e,0x54,0x43,0xda,
- 0x0a,0x92,0x3d,0xae,0x18,0x29,0x85,0xb5,0x10,0xc3,0x27,0x42,0x4a,0x8d,0x56,0xd0,
- 0xdb,0xd1,0x50,0x0d,0x02,0x65,0xb4,0x54,0x72,0xc6,0xe5,0x8a,0x49,0x6f,0xc1,0xb7,
- 0x8c,0x19,0xd4,0xb5,0x5c,0x3a,0x06,0x3f,0x34,0x8a,0x69,0xee,0x72,0x29,0x85,0x57,
- 0x8a,0x33,0xe3,0xca,0x8b,0xc1,0x31,0x7c,0x62,0xf9,0x54,0xba,0x0b,0xee,0xa0,0x97,
- 0xc0,0xb4,0x0e,0xa9,0x59,0x8a,0xc2,0x02,0x98,0xe6,0xb4,0x89,0xe4,0x84,0x5a,0xbc,
- 0x7a,0x83,0xaa,0xbd,0x7c,0x49,0xe8,0x15,0x66,0x94,0xbe,0xac,0xb0,0x6f,0x6e,0xf0,
- 0x82,0x39,0xd7,0x1a,0x97,0x6a,0x84,0x58,0xd0,0x8c,0x30,0x8e,0x6f,0xb8,0x17,0xbb,
- 0x8e,0x98,0xc6,0x72,0xd7,0x78,0xc5,0xb0,0xc7,0xe5,0x91,0x42,0x74,0x49,0xb2,0x48,
- 0x55,0x0e,0x4a,0xa1,0x96,0x25,0xa1,0x5b,0x55,0xa5,0xd7,0x15,0xc2,0xc9,0x2d,0x52,
- 0x8b,0x4d,0xf1,0x9b,0x4a,0xf0,0x4a,0xc3,0x8c,0xe6,0x96,0x3b,0x42,0x7e,0xb5,0xa4,
- 0xcd,0xd5,0xdc,0x73,0x87,0xfe,0x2d,0xd5,0xd5,0xe6,0x8a,0xd1,0x52,0x34,0x4a,0xa8,
- 0xf5,0x5d,0xaf,0x44,0x40,0xc7,0x6f,0x8f,0xa8,0x48,0x02,0x63,0xac,0x30,0xa6,0x6a,
- 0x14,0x42,0x12,0x7b,0x00,0x40,0x43,0x56,0x9f,0x6f,0x51,0xe6,0xb7,0x5c,0x8a,0x6d,
- 0x0a,0x37,0x2b,0x7a,0x8b,0x37,0xd9,0xb0,0xe2,0x9b,0xeb,0xf1,0x4a,0x9e,0xbe,0x38,
- 0xaa,0xd1,0x42,0xfb,0x19,0x4a,0xa5,0xd2,0xb7,0xa0,0x89,0x96,0xa0,0x01,0x8b,0xa1,
- 0x90,0xba,0xd8,0x95,0x08,0xdc,0x4e,0x15,0xc3,0x9e,0xaf,0x1c,0x69,0x11,0x6d,0x8a,
- 0x15,0x97,0xba,0x2c,0x63,0xab,0x6b,0xb1,0x74,0x3d,0x8d,0x30,0x03,0xac,0x0f,0xf5,
- 0xbb,0x14,0xba,0x48,0x6f,0x52,0x15,0xbf,0x0b,0xa8,0xa1,0x6b,0x51,0x85,0x14,0x2a,
- 0x2d,0x8b,0xd0,0x60,0x73,0x28,0xbe,0x6b,0xb1,0xfc,0x4d,0xfa,0x66,0xec,0xca,0x52,
- 0xaf,0x6d,0xa8,0x39,0x68,0x28,0x68,0x94,0x1a,0x21,0x6b,0x5c,0x8b,0x5d,0xf7,0xd0,
- 0x3b,0x63,0xdf,0x2e,0x75,0xad,0x45,0xe3,0xdd,0xf4,0x3f,0xa8,0x25,0xfb,0x73,0xf1,
- 0x69,0xe8,0xdf,0x56,0x4b,0xec,0xb5,0x73,0x5d,0x04,0x57,0xc1,0xbb,0xb1,0xaf,0x95,
- 0xe6,0xef,0x47,0xe3,0xce,0x13,0x57,0xa9,0x68,0x34,0xb7,0xdc,0x19,0x43,0xc3,0xb4,
- 0xc6,0x75,0xdd,0xe2,0x9c,0xb9,0x78,0xa5,0xa1,0xf4,0xf6,0xfd,0x68,0x78,0x97,0xc9,
- 0x77,0x14,0xee,0x57,0xae,0x6c,0xcf,0x8b,0x7d,0xfb,0x0e,0xa0,0xd6,0xb8,0x80,0x48,
- 0xcd,0xf8,0xe4,0x09,0xae,0x2f,0x7c,0x98,0x77,0xea,0x5f,0xc3,0xb9,0xe0,0x57,0x70,
- 0xc5,0x51,0x6b,0x5c,0x52,0x8e,0xb4,0x8c,0xde,0x81,0x2f,0x1a,0x8e,0xbd,0xac,0xe5,
- 0x8e,0xe1,0x6f,0x2d,0x74,0x6d,0x74,0x2d,0x6b,0x89,0xc6,0x2e,0x29,0xc5,0x36,0x86,
- 0xf8,0x2e,0xa3,0xa4,0x59,0xba,0x13,0x8a,0xa0,0xd8,0x74,0x35,0x4b,0x4b,0xe2,0xdf,
- 0xe6,0x06,0xc6,0x18,0xdf,0x26,0xce,0xfa,0x72,0x45,0x80,0xcd,0xa0,0x35,0x5f,0xaa,
- 0x9e,0xe3,0x66,0xc6,0x36,0x34,0x0a,0x9c,0xb9,0xb8,0x2e,0x82,0xd3,0xa4,0xea,0x8b,
- 0xd5,0xc2,0x56,0x34,0xb0,0xf1,0x6c,0x66,0x6c,0x63,0xb3,0x5c,0x98,0x69,0x53,0x66,
- 0xb4,0x34,0x85,0x6e,0xf7,0x96,0x44,0x24,0xc3,0xbc,0xad,0xac,0x58,0x65,0x46,0x87,
- 0xc1,0xde,0x0d,0xc3,0x19,0x17,0xce,0xe7,0x6d,0x7a,0x89,0xd7,0x15,0x91,0x9a,0xcc,
- 0xdb,0x42,0x25,0x95,0xed,0x0d,0x52,0x13,0x6d,0xd4,0x0b,0xbd,0x0a,0x88,0x98,0x84,
- 0x7d,0xee,0xe2,0x2b,0x4c,0x52,0x15,0x43,0xc1,0xf5,0x25,0xe1,0x7b,0x6a,0x14,0xa3,
- 0x33,0x95,0xec,0xbf,0xe3,0x77,0x11,0x9d,0x52,0x5d,0xaf,0x54,0x09,0x21,0x68,0x80,
- 0xda,0xe1,0x27,0x4a,0x07,0x04,0xca,0xbc,0x5b,0xed,0xb5,0x7c,0x9d,0x91,0xcb,0xdc,
- 0xce,0x0f,0xd1,0xdb,0xe0,0x8b,0x73,0x0c,0xbe,0x95,0x53,0x4c,0xbf,0x11,0x9b,0x9b,
- 0x52,0xbf,0x05,0xc5,0x76,0x9f,0xd7,0x18,0x12,0xdb,0x27,0xc1,0x0e,0x24,0x46,0xdf,
- 0x72,0x27,0x7c,0x8d,0xe4,0x51,0xb9,0xf9,0xea,0xa8,0xfa,0x2d,0x32,0x95,0x3a,0xdf,
- 0x96,0xa3,0x4b,0x5e,0xec,0xb9,0x66,0xa2,0x81,0x6f,0x62,0x85,0x96,0xd2,0x63,0xd1,
- 0x8e,0x52,0x99,0xa8,0x4e,0x1b,0x0d,0xbd,0x43,0x3e,0xb6,0x81,0x7e,0xa8,0x60,0x47,
- 0xcc,0xfb,0x69,0x3f,0xcc,0xd0,0x54,0x76,0xb6,0x9f,0xd3,0x46,0x91,0xca,0x60,0x89,
- 0xe1,0x2f,0x56,0xfa,0xa4,0xb2,0x45,0x4b,0x9a,0x6e,0x2d,0x56,0x7e,0x37,0xe3,0xea,
- 0xd4,0x92,0xa6,0xa2,0xcb,0x9c,0x39,0x85,0x72,0xd7,0x8a,0x9e,0x3f,0x0f,0x5d,0xb2,
- 0xa1,0x64,0x07,0x37,0xbe,0xb5,0xa1,0x64,0xbb,0xeb,0x6f,0xe8,0x0d,0xa1,0x4b,0x1e,
- 0x93,0x9c,0x36,0xa5,0xf8,0x5d,0x79,0xe8,0xe2,0x20,0x0e,0x33,0xd9,0x77,0x69,0x68,
- 0xcc,0x47,0xa7,0x47,0x0c,0xcd,0x69,0xa3,0x2a,0x77,0x15,0x96,0x2a,0x8b,0xa5,0xc2,
- 0x8e,0xc6,0x58,0x61,0x69,0xfb,0xe2,0x42,0x34,0x42,0x85,0x6a,0x7b,0x8e,0xb4,0x29,
- 0x33,0xae,0x45,0x4d,0x85,0xb7,0x29,0xb7,0x4b,0x25,0xc6,0xa2,0x26,0xed,0x36,0xa5,
- 0x84,0x19,0x9a,0x66,0xe0,0x15,0x97,0xe1,0xdc,0xa7,0x2c,0xc2,0x6b,0xaf,0x6b,0xa2,
- 0x68,0xdc,0x46,0x8a,0xd1,0x91,0x6d,0x8b,0xa0,0x47,0x43,0xc3,0xb9,0x8d,0xdb,0x45,
- 0xa8,0x91,0x44,0x72,0xcd,0x0c,0xe4,0x7e,0xb3,0xc1,0xbd,0x08,0x8d,0x5d,0x5a,0xa5,
- 0xd3,0x04,0xbc,0xf2,0xad,0xf0,0xa6,0xb9,0x2c,0xa4,0x32,0xa3,0xdd,0xbc,0x32,0xac,
- 0x36,0x7e,0xe3,0x56,0x5d,0x49,0x95,0x84,0xb6,0x66,0xbe,0x8b,0x41,0x40,0xfc,0xdb,
- 0xba,0x2b,0x25,0xad,0x82,0x77,0xe1,0x1f,0x94,0x7f,0x46,0x50,0x28,0x7b,0xb7,0xfd,
- 0xaf,0xf5,0x12,0xd3,0x6e,0x23,0x43,0xb4,0x57,0x0b,0x29,0xde,0x65,0xe5,0x60,0xf4,
- 0xf9,0xe7,0x2a,0xde,0xb2,0x72,0xcd,0x30,0xfd,0xa1,0x76,0x6f,0xe6,0xe5,0xa8,0x1f,
- 0x5b,0x3a,0xf6,0xc6,0xd8,0x99,0xb1,0xf3,0x93,0x0d,0xf8,0xaf,0x7c,0x16,0xbc,0xe3,
- 0x59,0xd0,0xfb,0x5a,0x72,0xef,0xca,0xa0,0x30,0xc6,0x86,0x82,0xef,0x2d,0x1d,0x7b,
- 0xfd,0x3d,0x34,0x9c,0x36,0x57,0xd4,0x2e,0x39,0x5a,0x34,0xaf,0xef,0xf0,0xc9,0x79,
- 0xc2,0x18,0x3b,0x39,0xaf,0x1e,0xbf,0xab,0x1e,0x8d,0x4c,0x7f,0x4a,0x6f,0x7e,0x75,
- 0xf3,0xdc,0xf6,0x07,0xce,0x5e,0x53,0x1a,0x3d,0x5e,0xb4,0xaf,0x7d,0xc3,0xbd,0xd7,
- 0xac,0x8e,0xee,0x2f,0xda,0x33,0xb0,0x61,0x99,0xd3,0xc6,0x45,0x9a,0x8d,0xa9,0xcd,
- 0x57,0x28,0x79,0xaf,0xc0,0x3d,0x68,0x2c,0xb0,0x0c,0xed,0x8a,0xe2,0x4b,0x9d,0xb1,
- 0x2b,0x36,0x1c,0xf7,0x7d,0x8d,0x19,0x45,0xda,0xed,0x7d,0xae,0x7b,0xa4,0x77,0xf1,
- 0xca,0x34,0xa7,0x0d,0xc7,0x65,0xc8,0xe0,0xb2,0xaa,0xac,0x15,0x06,0x28,0xd4,0xb9,
- 0x8f,0x80,0x51,0x90,0xda,0x61,0x99,0x54,0x6a,0x2c,0x06,0x89,0x2a,0xcb,0xd8,0x15,
- 0x35,0xf3,0x8e,0xb9,0x95,0x55,0xd2,0x54,0xfa,0x0d,0x5d,0x3b,0x64,0x19,0x85,0x29,
- 0x65,0xd5,0x22,0x66,0x48,0xce,0x77,0x81,0x05,0xc7,0xf8,0x86,0xa3,0x03,0x61,0x37,
- 0x6c,0xb5,0xef,0xec,0xdc,0xa7,0x50,0x29,0x97,0xf2,0x4c,0x84,0xe3,0x2d,0x4a,0x85,
- 0xc4,0x5e,0x5a,0x2d,0xae,0xcc,0x68,0x51,0x69,0xa4,0x39,0xb3,0x2e,0xca,0xe1,0x86,
- 0x1e,0x7f,0xa2,0x71,0x57,0xe1,0xdd,0x10,0xe5,0xbf,0xe9,0x5a,0x88,0xfc,0xde,0xf4,
- 0x0f,0x37,0xee,0xb2,0xe7,0x54,0x35,0x55,0x28,0xa2,0x8a,0x89,0x30,0xb2,0x44,0x38,
- 0x33,0x06,0x62,0xb7,0x82,0x62,0x4a,0xf3,0x25,0xc3,0x72,0x1b,0x66,0x31,0x14,0x02,
- 0xdb,0x03,0x28,0x15,0x23,0x60,0x16,0xd2,0x9c,0x52,0xec,0xcb,0x75,0x2e,0x05,0x9d,
- 0x80,0x24,0xc2,0x3a,0xbc,0x8f,0x81,0xab,0xa5,0x5d,0x42,0x7f,0xc1,0x96,0x0d,0xeb,
- 0x81,0xca,0x16,0x6d,0x3b,0x94,0x29,0x6a,0xa6,0x4d,0x71,0xcc,0xb5,0x15,0x22,0xec,
- 0x16,0x31,0xb2,0x95,0x23,0x4f,0x8e,0x80,0xa0,0x32,0x0b,0xbf,0x34,0xc9,0xc0,0x91,
- 0x6e,0x65,0xcb,0x8f,0x92,0xbb,0xa0,0x94,0xe6,0x40,0x5e,0x87,0xc2,0xc6,0x3e,0x13,
- 0x2e,0x6d,0x15,0x31,0xb6,0x71,0x9d,0x83,0xcb,0xbd,0x8e,0xa1,0x84,0x5a,0x36,0x30,
- 0xc3,0xf2,0xf3,0x06,0xa8,0x1c,0x8e,0x1d,0x5c,0x96,0x81,0xff,0xce,0xab,0x30,0xc4,
- 0xb8,0x0c,0xf0,0x40,0x88,0x7a,0xcb,0x64,0x15,0x0e,0x41,0xa8,0xc7,0x1b,0x6a,0x50,
- 0x0d,0xfe,0xcb,0x70,0xba,0xac,0x2a,0x20,0xfc,0x98,0x71,0x5d,0x83,0xd2,0x8c,0x6e,
- 0x19,0xfd,0x73,0x9b,0xd2,0xdc,0x53,0x1a,0x62,0x06,0xc4,0x7a,0xd8,0x15,0x89,0x8a,
- 0x7d,0xeb,0x86,0x14,0x11,0xf1,0x88,0x85,0xcb,0xf8,0xcf,0xd1,0x08,0xa1,0xe7,0x67,
- 0xb8,0x2c,0xda,0x34,0x49,0x11,0xee,0xde,0x2d,0x3f,0xcf,0xfa,0x5c,0x88,0x6d,0xb8,
- 0xe7,0xb7,0xe7,0xd4,0xb8,0xce,0xc0,0xf1,0x17,0xc3,0x75,0x50,0x68,0x08,0x37,0x0d,
- 0xc5,0x80,0xb4,0xcb,0xc0,0x5b,0x14,0x46,0xc4,0xb8,0xa2,0xf8,0x0e,0x2c,0xa2,0x5a,
- 0x4c,0x29,0x95,0xf6,0xdb,0x86,0x73,0xc5,0x9a,0xd3,0x28,0x10,0x01,0xc7,0x38,0x03,
- 0x92,0x30,0x10,0x97,0xa1,0x85,0x1b,0x16,0x2e,0x1b,0xd7,0x39,0x70,0xbc,0x9f,0x1b,
- 0x57,0x95,0xe6,0xdb,0x57,0xf2,0x6d,0x4c,0x91,0x16,0x2b,0xf7,0xb4,0x4c,0x8d,0xe5,
- 0x96,0x22,0x8c,0xde,0x43,0x1f,0x8d,0xfd,0x35,0x7e,0x29,0x61,0x57,0xbe,0x51,0x2a,
- 0x99,0xa2,0xce,0x68,0x48,0x8b,0x81,0xfd,0xe9,0x0a,0x35,0x4f,0xb4,0xc9,0x2d,0xcd,
- 0xe3,0x00,0x1d,0xbb,0xa2,0x34,0xcf,0x7a,0x9f,0x9b,0x2c,0x5c,0xfe,0x76,0x69,0xc9,
- 0x7e,0x05,0x71,0x19,0x01,0x1a,0x8d,0x7b,0x5a,0x1e,0x65,0x57,0x7a,0xed,0xf9,0xf2,
- 0x43,0x05,0xbd,0x9e,0x2d,0xab,0xcd,0x88,0xcb,0x77,0xe8,0x5f,0x8b,0xe2,0x42,0x9b,
- 0xcf,0xae,0x44,0x15,0x6a,0xf5,0x19,0xc7,0x8e,0x51,0x5e,0x2c,0xa7,0x54,0x5a,0xab,
- 0x94,0x21,0x1c,0x2f,0x66,0xc6,0x32,0x71,0xc5,0x7e,0xe7,0xaf,0x8b,0x29,0xab,0xa5,
- 0xe9,0x52,0x43,0xab,0x96,0x46,0xe3,0x06,0x68,0xa0,0xdc,0x98,0x0e,0xdf,0xa0,0x9a,
- 0x85,0xcb,0x86,0x74,0x0b,0x2c,0xa7,0x97,0xb2,0xd9,0xd9,0x2c,0x26,0x2e,0x8a,0xf3,
- 0xc5,0xae,0xe4,0x44,0xed,0xb5,0x63,0xf0,0xf9,0x52,0x13,0x62,0xbe,0xd6,0xe0,0xc4,
- 0x55,0xf2,0x89,0x13,0xb8,0x6c,0xcf,0x57,0x04,0x8c,0x16,0x2d,0x74,0x9d,0xb7,0x10,
- 0x0d,0x53,0x0b,0xb9,0xb8,0x41,0x35,0xbd,0xd1,0x5b,0x68,0xd8,0xe3,0x62,0xb8,0x5c,
- 0x9c,0x70,0x79,0x59,0x40,0x6c,0x16,0x87,0x5c,0x95,0x52,0x03,0xbb,0xa2,0xe3,0x15,
- 0xc3,0xba,0x0f,0x62,0x4a,0x04,0xe7,0x59,0x91,0x18,0x2e,0x5b,0x00,0x0d,0x11,0x09,
- 0x01,0x1a,0x67,0xcb,0x9e,0xaf,0x08,0x81,0x2c,0x5c,0x4e,0xe8,0xaa,0xda,0x8a,0x57,
- 0x3a,0xd8,0x15,0xb0,0xc7,0x65,0x28,0x76,0x40,0xc7,0x8d,0xbf,0xca,0xac,0xaf,0x42,
- 0x6a,0xcf,0x17,0x2b,0x0a,0x3c,0x0c,0x33,0x8d,0x3c,0x8a,0x78,0x3a,0x0d,0x72,0xd1,
- 0x50,0x7e,0x80,0xab,0x65,0xa6,0x71,0xbd,0x33,0xae,0x58,0x4e,0xa5,0x54,0xc0,0x1f,
- 0x5d,0x4e,0xa5,0xeb,0x32,0x58,0x8c,0x46,0xf1,0x0a,0x69,0xbd,0xd6,0xe0,0x3c,0xc3,
- 0x26,0x8c,0x1d,0x74,0xc3,0xdb,0x24,0x6f,0x81,0x1e,0x28,0x6b,0x42,0x00,0x2b,0x61,
- 0x86,0xa1,0x6a,0x72,0x09,0x98,0xf6,0xb8,0x14,0x28,0x83,0xfc,0x45,0xf2,0x6d,0xd0,
- 0x07,0x33,0x16,0xe5,0x37,0x35,0x34,0xc1,0x2b,0x70,0x25,0xa8,0x4d,0x78,0xa5,0xd7,
- 0x5e,0xcb,0x0d,0x0a,0xae,0xa6,0xe6,0xc5,0x5e,0x5c,0x5f,0xdc,0x98,0x2a,0xd6,0x57,
- 0x08,0x0d,0xea,0x8c,0x0b,0xb8,0x5f,0x09,0xe1,0xec,0x94,0x1b,0x2a,0xfb,0x79,0x21,
- 0xca,0xe4,0x68,0x40,0x2a,0x90,0x50,0x5a,0xf3,0x15,0x6d,0xe4,0xb8,0xac,0x09,0x5c,
- 0x56,0x18,0x2e,0x1b,0x77,0x49,0x08,0xd0,0x52,0xa1,0xdd,0xe6,0x3a,0xc3,0x68,0x2a,
- 0x2c,0x5e,0x7c,0xdd,0xa2,0x4d,0x86,0xd9,0xa4,0x15,0x17,0xbb,0xa4,0x42,0xe3,0x3a,
- 0x68,0x2a,0x56,0xd8,0x8a,0x73,0xfc,0x46,0x22,0x82,0x5e,0xc4,0xc5,0x03,0xed,0xd2,
- 0xe2,0xb5,0x2e,0x1d,0x5f,0xb4,0x48,0xa9,0x86,0x93,0x8f,0xfe,0x50,0xcc,0x98,0xe1,
- 0xee,0x41,0x5c,0x4e,0x08,0x5c,0x6e,0x81,0x84,0x81,0x86,0x44,0x5a,0x8c,0x04,0xc7,
- 0x65,0xf1,0x9c,0xaf,0xbb,0xe9,0xe5,0x5b,0x63,0x6f,0xf6,0x97,0xcd,0x57,0xf3,0x8b,
- 0x6e,0x35,0xda,0xd1,0xc8,0xbb,0x49,0xbe,0xd5,0x78,0xb3,0xff,0xca,0xf9,0xaa,0xe1,
- 0x8c,0x6b,0x6d,0xf3,0x8c,0xa9,0xad,0xb9,0x4a,0xa1,0x59,0x81,0x58,0x00,0xdf,0x28,
- 0x2b,0x49,0x91,0x55,0x85,0x53,0xdb,0x11,0x14,0x4c,0x7b,0x35,0x97,0x0b,0x5c,0x5e,
- 0xb2,0xac,0xbc,0x34,0xba,0xdf,0x3f,0xb7,0x7d,0x03,0x1a,0x06,0x37,0xfe,0xfb,0x71,
- 0xb9,0x6a,0xec,0xc6,0x9f,0xbc,0x3c,0x76,0xe6,0xdc,0xca,0xaa,0xb1,0xa5,0xfb,0xde,
- 0xf8,0xe4,0x4c,0x06,0x97,0x33,0xf7,0x99,0x37,0xb6,0x64,0xac,0x68,0xec,0xcc,0xe8,
- 0xc9,0x79,0x63,0x4b,0x8f,0xbe,0x71,0xfa,0x4c,0x06,0x97,0x33,0x6d,0xae,0xe1,0xb8,
- 0x3c,0x20,0x70,0xd9,0x7f,0x15,0xc7,0xe5,0x9b,0x19,0x2e,0x3f,0x70,0xd6,0x69,0x43,
- 0xda,0x61,0x1b,0x54,0x1a,0xee,0xa9,0xbd,0x96,0xa1,0xb1,0x2b,0x87,0x99,0xe1,0xb4,
- 0x41,0xbf,0xe5,0x38,0xb0,0x09,0x46,0xa6,0xd3,0xed,0xec,0x55,0xe0,0xe8,0x33,0xc9,
- 0x70,0x3e,0xdc,0xed,0x19,0x30,0xd5,0xb4,0x0c,0xbe,0xc6,0x0e,0x73,0xc3,0xf9,0x50,
- 0xf1,0x92,0x4d,0x36,0xbc,0xa6,0xd3,0xe7,0x2f,0x6f,0x65,0xf7,0x98,0x31,0x78,0xfe,
- 0xeb,0xc3,0x20,0x8e,0xa1,0xc8,0x6e,0x4a,0xec,0x36,0x17,0xfd,0x1a,0x6e,0x78,0x7b,
- 0xed,0x36,0xee,0x76,0xb2,0x0d,0x76,0x19,0xb3,0x35,0xf7,0xba,0x30,0x37,0xa6,0x1e,
- 0xb4,0xaf,0x90,0x3f,0xfd,0xf9,0xa8,0x93,0x9f,0x4f,0xe6,0x8a,0xdd,0x1f,0x0d,0x72,
- 0x43,0xf8,0x34,0xbe,0x8f,0xcf,0x87,0x1b,0xce,0xf3,0xf9,0x3e,0x30,0x99,0x85,0x75,
- 0x9f,0x75,0xa1,0x2f,0x7b,0xce,0x4e,0x7f,0xb0,0xf1,0x7f,0xf2,0x7c,0xf8,0x7c,0x7d,
- 0xc9,0x73,0x76,0x5a,0x68,0xac,0x46,0xf7,0x65,0x1f,0x91,0xd3,0xfb,0x53,0x3e,0xb5,
- 0xb5,0x7f,0xe4,0x8f,0x3e,0xdf,0x9f,0x7a,0x9b,0xff,0xc6,0x4f,0xfd,0xd8,0xd8,0x98,
- 0x79,0x71,0xe3,0xff,0xd3,0x6d,0x48,0xf6,0x12,0x1e,0x6f,0x64,0x1a,0x89,0xa5,0x37,
- 0xf1,0x5d,0x1d,0xbf,0x06,0xff,0x0b,0x6b,0x59,0xbb,0x88,0xe1,0x7c,0xbe,0x74,0x2d,
- 0xdb,0x0d,0xbe,0x7c,0x05,0x66,0x5a,0xa9,0x99,0x25,0xac,0x4e,0x58,0xd4,0x81,0x3f,
- 0x65,0x2d,0x67,0xda,0x88,0xb5,0xfc,0x7d,0x5c,0xcb,0xd6,0x12,0x9e,0xb4,0x96,0xd5,
- 0x3f,0xb6,0x96,0x9d,0x36,0x7f,0xe4,0xf9,0x8c,0x5b,0xcb,0xc0,0xd7,0xb2,0xb5,0x84,
- 0xad,0x45,0x8d,0x46,0xaf,0xf2,0x27,0xdf,0xe7,0x4f,0xf1,0x75,0x7f,0xca,0x73,0x86,
- 0x0c,0x71,0xbe,0xc8,0xe7,0xab,0xb5,0xfc,0xff,0xbe,0x36,0xff,0xf9,0x27,0x04,0xba,
- 0x44,0xf8,0xff,0x46,0xae,0xff,0x2f,0xfe,0xd3,0xaf,0x3e,0x5f,0x7d,0xbe,0xfa,0x7c,
- 0xf5,0xf9,0xea,0xf3,0xd5,0xe7,0xab,0xcf,0x57,0x9f,0xff,0x5f,0x7c,0x78,0xbc,0x44,
- 0x78,0xbc,0x64,0xfc,0x3f,0xdd,0x97,0xaf,0x3e,0x5f,0x7d,0xbe,0xfa,0x7c,0xf5,0xf9,
- 0xea,0xf3,0xd5,0xe7,0xab,0xcf,0x57,0x9f,0xff,0xbb,0x3f,0x21,0x2e,0x0c,0x7b,0xa3,
- 0x36,0x04,0xbc,0xa8,0x2b,0x87,0xc0,0xc8,0xfb,0xd3,0xfe,0x1d,0x6f,0xef,0x0a,0x41,
- 0x42,0xca,0xdc,0xa7,0xe7,0x1f,0x27,0xf6,0xf5,0xff,0x02,0xd6,0x2c,0x67,0x26,0xbd,
- 0xa4,0x00,0x00,
diff --git a/board/esd/cpci405/u-boot.lds b/board/esd/cpci405/u-boot.lds
deleted file mode 100644
index f7a20d1da2..0000000000
--- a/board/esd/cpci405/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/cpci440/Makefile b/board/esd/cpci440/Makefile
deleted file mode 100644
index d13d31c974..0000000000
--- a/board/esd/cpci440/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o strataflash.o ../common/misc.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/cpci440/config.mk b/board/esd/cpci440/config.mk
deleted file mode 100644
index 8e5f63fe48..0000000000
--- a/board/esd/cpci440/config.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# (C) Copyright 2002
-# 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
-#
-
-#
-# esd ADCIOP boards
-#
-
-#TEXT_BASE = 0xFFFE0000
-
-ifeq ($(ramsym),1)
-TEXT_BASE = 0x07FD0000
-else
-TEXT_BASE = 0xFFFC0000
-#TEXT_BASE = 0x01fc0000
-endif
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/esd/cpci440/cpci440.c b/board/esd/cpci440/cpci440.c
deleted file mode 100644
index 43d8a3b3bf..0000000000
--- a/board/esd/cpci440/cpci440.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * (C) Copyright 2002
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-
-#include <common.h>
-#include <asm/processor.h>
-
-
-extern void lxt971_no_sleep(void);
-
-
-long int fixed_sdram( void );
-
-int board_early_init_f (void)
-{
- uint reg;
-
- /*--------------------------------------------------------------------
- * Setup the external bus controller/chip selects
- *-------------------------------------------------------------------*/
- mtdcr( ebccfga, xbcfg );
- reg = mfdcr( ebccfgd );
- mtdcr( ebccfgd, reg | 0x04000000 ); /* Set ATC */
-
- mtebc( pb0ap, 0x92015480 ); /* FLASH/SRAM */
- mtebc( pb0cr, 0xFF87A000 ); /* BAS=0xff8 8MB R/W 16-bit */
- /* test-only: other regs still missing... */
-
- /*--------------------------------------------------------------------
- * Setup the interrupt controller polarities, triggers, etc.
- *-------------------------------------------------------------------*/
- mtdcr( uic0sr, 0xffffffff ); /* clear all */
- mtdcr( uic0er, 0x00000000 ); /* disable all */
- mtdcr( uic0cr, 0x00000009 ); /* SMI & UIC1 crit are critical */
- mtdcr( uic0pr, 0xfffffe13 ); /* per ref-board manual */
- mtdcr( uic0tr, 0x01c00008 ); /* per ref-board manual */
- mtdcr( uic0vr, 0x00000001 ); /* int31 highest, base=0x000 */
- mtdcr( uic0sr, 0xffffffff ); /* clear all */
-
- mtdcr( uic1sr, 0xffffffff ); /* clear all */
- mtdcr( uic1er, 0x00000000 ); /* disable all */
- mtdcr( uic1cr, 0x00000000 ); /* all non-critical */
- mtdcr( uic1pr, 0xffffe0ff ); /* per ref-board manual */
- mtdcr( uic1tr, 0x00ffc000 ); /* per ref-board manual */
- mtdcr( uic1vr, 0x00000001 ); /* int31 highest, base=0x000 */
- mtdcr( uic1sr, 0xffffffff ); /* clear all */
-
- return 0;
-}
-
-
-int checkboard (void)
-{
- sys_info_t sysinfo;
- get_sys_info(&sysinfo);
-
- printf("Board: esd CPCI-440\n");
- printf("\tVCO: %lu MHz\n", sysinfo.freqVCOMhz/1000000);
- printf("\tCPU: %lu MHz\n", sysinfo.freqProcessor/1000000);
- printf("\tPLB: %lu MHz\n", sysinfo.freqPLB/1000000);
- printf("\tOPB: %lu MHz\n", sysinfo.freqOPB/1000000);
- printf("\tEPB: %lu MHz\n", sysinfo.freqEPB/1000000);
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-
- return (0);
-}
-
-
-long int initdram (int board_type)
-{
- long dram_size = 0;
-
- dram_size = fixed_sdram();
- return dram_size;
-}
-
-
-/*************************************************************************
- * fixed sdram init -- doesn't use serial presence detect.
- *
- * Assumes: 64 MB, non-ECC, non-registered
- * PLB @ 133 MHz
- *
- ************************************************************************/
-long int fixed_sdram( void )
-{
- uint reg;
-
-#if 1 /* test-only */
- /*--------------------------------------------------------------------
- * Setup some default
- *------------------------------------------------------------------*/
- mtsdram( mem_uabba, 0x00000000 ); /* ubba=0 (default) */
- mtsdram( mem_slio, 0x00000000 ); /* rdre=0 wrre=0 rarw=0 */
- mtsdram( mem_devopt,0x00000000 ); /* dll=0 ds=0 (normal) */
- mtsdram( mem_wddctr,0x40000000 ); /* wrcp=0 dcd=0 */
- mtsdram( mem_clktr, 0x40000000 ); /* clkp=1 (90 deg wr) dcdt=0 */
-
- /*--------------------------------------------------------------------
- * Setup for board-specific specific mem
- *------------------------------------------------------------------*/
- /*
- * Following for CAS Latency = 2.5 @ 133 MHz PLB
- */
- mtsdram( mem_b0cr, 0x00082001 );/* SDBA=0x000, 64MB, Mode 2, enabled*/
- mtsdram( mem_tr0, 0x410a4012 );/* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */
- /* RA=10 RD=3 */
- mtsdram( mem_tr1, 0x8080082f );/* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */
- mtsdram( mem_rtr, 0x08200000 );/* Rate 15.625 ns @ 133 MHz PLB */
- mtsdram( mem_cfg1, 0x00000000 );/* Self-refresh exit, disable PM */
- udelay( 400 ); /* Delay 200 usecs (min) */
-
- /*--------------------------------------------------------------------
- * Enable the controller, then wait for DCEN to complete
- *------------------------------------------------------------------*/
- mtsdram( mem_cfg0, 0x86000000 );/* DCEN=1, PMUD=1, 64-bit */
- for(;;)
- {
- mfsdram( mem_mcsts, reg );
- if( reg & 0x80000000 )
- break;
- }
-
- return( 64 * 1024 * 1024 ); /* 64 MB */
-#else
- return( 32 * 1024 * 1024 ); /* 64 MB */
-#endif
-}
diff --git a/board/esd/cpci440/init.S b/board/esd/cpci440/init.S
deleted file mode 100644
index 82f37fd996..0000000000
--- a/board/esd/cpci440/init.S
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-* Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.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
-*/
-
-#include <ppc_asm.tmpl>
-#include <config.h>
-
-/* General */
-#define TLB_VALID 0x00000200
-
-/* Supported page sizes */
-
-#define SZ_1K 0x00000000
-#define SZ_4K 0x00000010
-#define SZ_16K 0x00000020
-#define SZ_64K 0x00000030
-#define SZ_256K 0x00000040
-#define SZ_1M 0x00000050
-#define SZ_16M 0x00000070
-#define SZ_256M 0x00000090
-
-/* Storage attributes */
-#define SA_W 0x00000800 /* Write-through */
-#define SA_I 0x00000400 /* Caching inhibited */
-#define SA_M 0x00000200 /* Memory coherence */
-#define SA_G 0x00000100 /* Guarded */
-#define SA_E 0x00000080 /* Endian */
-
-/* Access control */
-#define AC_X 0x00000024 /* Execute */
-#define AC_W 0x00000012 /* Write */
-#define AC_R 0x00000009 /* Read */
-
-/* Some handy macros */
-
-#define EPN(e) ((e) & 0xfffffc00)
-#define TLB0(epn,sz) ( (EPN((epn)) | (sz) | TLB_VALID ) )
-#define TLB1(rpn,erpn) ( ((rpn)&0xfffffc00) | (erpn) )
-#define TLB2(a) ( (a)&0x00000fbf )
-
-#define tlbtab_start\
- mflr r1 ;\
- bl 0f ;
-
-#define tlbtab_end\
- .long 0, 0, 0 ; \
-0: mflr r0 ; \
- mtlr r1 ; \
- blr ;
-
-#define tlbentry(epn,sz,rpn,erpn,attr)\
- .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr)
-
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- * Pointer to the table is returned in r1
- *
- *************************************************************************/
-
- .section .bootpg,"ax"
- .globl tlbtab
-
-tlbtab:
- tlbtab_start
- tlbentry( 0xf0000000, SZ_256M, 0xf0000000, 1, AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry( CFG_PERIPHERAL_BASE, SZ_256M, 0x40000000, 1, AC_R|AC_W|SA_G|SA_I)
- tlbentry( CFG_ISRAM_BASE, SZ_4K, 0x80000000, 0, AC_R|AC_W|AC_X )
- tlbentry( CFG_ISRAM_BASE + 0x1000, SZ_4K, 0x80001000, 0, AC_R|AC_W|AC_X )
- tlbentry( CFG_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X )
- tlbtab_end
diff --git a/board/esd/cpci440/strataflash.c b/board/esd/cpci440/strataflash.c
deleted file mode 100644
index 2f055c20d5..0000000000
--- a/board/esd/cpci440/strataflash.c
+++ /dev/null
@@ -1,755 +0,0 @@
-/*
- * (C) Copyright 2002
- * Brad Kemp, Seranoa Networks, Brad.Kemp@seranoa.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-#undef DEBUG_FLASH
-/*
- * This file implements a Common Flash Interface (CFI) driver for U-Boot.
- * The width of the port and the width of the chips are determined at initialization.
- * These widths are used to calculate the address for access CFI data structures.
- * It has been tested on an Intel Strataflash implementation.
- *
- * References
- * JEDEC Standard JESD68 - Common Flash Interface (CFI)
- * JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
- * Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
- * Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
- *
- * TODO
- * Use Primary Extended Query table (PRI) and Alternate Algorithm Query Table (ALT) to determine if protection is available
- * Add support for other command sets Use the PRI and ALT to determine command set
- * Verify erase and program timeouts.
- */
-
-#define FLASH_CMD_CFI 0x98
-#define FLASH_CMD_READ_ID 0x90
-#define FLASH_CMD_RESET 0xff
-#define FLASH_CMD_BLOCK_ERASE 0x20
-#define FLASH_CMD_ERASE_CONFIRM 0xD0
-#define FLASH_CMD_WRITE 0x40
-#define FLASH_CMD_PROTECT 0x60
-#define FLASH_CMD_PROTECT_SET 0x01
-#define FLASH_CMD_PROTECT_CLEAR 0xD0
-#define FLASH_CMD_CLEAR_STATUS 0x50
-#define FLASH_CMD_WRITE_TO_BUFFER 0xE8
-#define FLASH_CMD_WRITE_BUFFER_CONFIRM 0xD0
-
-#define FLASH_STATUS_DONE 0x80
-#define FLASH_STATUS_ESS 0x40
-#define FLASH_STATUS_ECLBS 0x20
-#define FLASH_STATUS_PSLBS 0x10
-#define FLASH_STATUS_VPENS 0x08
-#define FLASH_STATUS_PSS 0x04
-#define FLASH_STATUS_DPS 0x02
-#define FLASH_STATUS_R 0x01
-#define FLASH_STATUS_PROTECT 0x01
-
-#define FLASH_OFFSET_CFI 0x55
-#define FLASH_OFFSET_CFI_RESP 0x10
-#define FLASH_OFFSET_WTOUT 0x1F
-#define FLASH_OFFSET_WBTOUT 0x20
-#define FLASH_OFFSET_ETOUT 0x21
-#define FLASH_OFFSET_CETOUT 0x22
-#define FLASH_OFFSET_WMAX_TOUT 0x23
-#define FLASH_OFFSET_WBMAX_TOUT 0x24
-#define FLASH_OFFSET_EMAX_TOUT 0x25
-#define FLASH_OFFSET_CEMAX_TOUT 0x26
-#define FLASH_OFFSET_SIZE 0x27
-#define FLASH_OFFSET_INTERFACE 0x28
-#define FLASH_OFFSET_BUFFER_SIZE 0x2A
-#define FLASH_OFFSET_NUM_ERASE_REGIONS 0x2C
-#define FLASH_OFFSET_ERASE_REGIONS 0x2D
-#define FLASH_OFFSET_PROTECT 0x02
-#define FLASH_OFFSET_USER_PROTECTION 0x85
-#define FLASH_OFFSET_INTEL_PROTECTION 0x81
-
-
-#define FLASH_MAN_CFI 0x01000000
-
-
-typedef union {
- unsigned char c;
- unsigned short w;
- unsigned long l;
-} cfiword_t;
-
-typedef union {
- unsigned char * cp;
- unsigned short *wp;
- unsigned long *lp;
-} cfiptr_t;
-
-#define NUM_ERASE_REGIONS 4
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c);
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf);
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_detect_cfi(flash_info_t * info);
-static ulong flash_get_size (ulong base, int banknum);
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword);
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt);
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len);
-#endif
-/*-----------------------------------------------------------------------
- * create an address based on the offset and the port width
- */
-inline uchar * flash_make_addr(flash_info_t * info, int sect, int offset)
-{
- return ((uchar *)(info->start[sect] + (offset * info->portwidth)));
-}
-/*-----------------------------------------------------------------------
- * read a character at a port width address
- */
-inline uchar flash_read_uchar(flash_info_t * info, uchar offset)
-{
- uchar *cp;
- cp = flash_make_addr(info, 0, offset);
- return (cp[info->portwidth - 1]);
-}
-
-/*-----------------------------------------------------------------------
- * read a short word by swapping for ppc format.
- */
-ushort flash_read_ushort(flash_info_t * info, int sect, uchar offset)
-{
- uchar * addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ((addr[(2*info->portwidth) - 1] << 8) | addr[info->portwidth - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- * read a long word by picking the least significant byte of each maiximum
- * port size word. Swap for ppc format.
- */
-ulong flash_read_long(flash_info_t * info, int sect, uchar offset)
-{
- uchar * addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ( (addr[(2*info->portwidth) - 1] << 24 ) | (addr[(info->portwidth) -1] << 16) |
- (addr[(4*info->portwidth) - 1] << 8) | addr[(3*info->portwidth) - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size;
- int i;
- unsigned long address;
-
-
- /* The flash is positioned back to back, with the demultiplexing of the chip
- * based on the A24 address line.
- *
- */
-
- address = CFG_FLASH_BASE;
- size = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- size += flash_info[i].size = flash_get_size(address, i);
- address += CFG_FLASH_INCREMENT;
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",i,
- flash_info[0].size, flash_info[i].size<<20);
- }
- }
-
-#if 0 /* test-only */
- /* Monitor protection ON by default */
-#if (CFG_MONITOR_BASE >= CFG_FLASH_BASE)
- for(i=0; flash_info[0].start[i] < CFG_MONITOR_BASE+monitor_flash_len-1; i++)
- (void)flash_real_protect(&flash_info[0], i, 1);
-#endif
-#endif
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int rcode = 0;
- int prot;
- int sect;
-
- if( info->flash_id != FLASH_MAN_CFI) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
- if ((s_first < 0) || (s_first > s_last)) {
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- flash_write_cmd(info, sect, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sect, 0, FLASH_CMD_BLOCK_ERASE);
- flash_write_cmd(info, sect, 0, FLASH_CMD_ERASE_CONFIRM);
-
- if(flash_full_status_check(info, sect, info->erase_blk_tout, "erase")) {
- rcode = 1;
- } else
- printf(".");
- }
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id != FLASH_MAN_CFI) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- printf("CFI conformant FLASH (%d x %d)",
- (info->portwidth << 3 ), (info->chipwidth << 3 ));
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
- printf(" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n",
- info->erase_blk_tout, info->write_tout, info->buffer_write_tout, info->buffer_size);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n");
- printf (" %08lX%5s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong wp;
- ulong cp;
- int aln;
- cfiword_t cword;
- int i, rc;
-
- /* get lower aligned address */
- wp = (addr & ~(info->portwidth - 1));
-
- /* handle unaligned start */
- if((aln = addr - wp) != 0) {
- cword.l = 0;
- cp = wp;
- for(i=0;i<aln; ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *)cp));
-
- for(; (i< info->portwidth) && (cnt > 0) ; i++) {
- flash_add_byte(info, &cword, *src++);
- cnt--;
- cp++;
- }
- for(; (cnt == 0) && (i < info->portwidth); ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *)cp));
- if((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp = cp;
- }
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
- while(cnt >= info->portwidth) {
- i = info->buffer_size > cnt? cnt: info->buffer_size;
- if((rc = flash_write_cfibuffer(info, wp, src,i)) != ERR_OK)
- return rc;
- wp += i;
- src += i;
- cnt -=i;
- }
-#else
- /* handle the aligned part */
- while(cnt >= info->portwidth) {
- cword.l = 0;
- for(i = 0; i < info->portwidth; i++) {
- flash_add_byte(info, &cword, *src++);
- }
- if((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp += info->portwidth;
- cnt -= info->portwidth;
- }
-#endif /* CFG_FLASH_USE_BUFFER_WRITE */
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- cword.l = 0;
- for (i=0, cp=wp; (i<info->portwidth) && (cnt>0); ++i, ++cp) {
- flash_add_byte(info, &cword, *src++);
- --cnt;
- }
- for (; i<info->portwidth; ++i, ++cp) {
- flash_add_byte(info, & cword, (*(uchar *)cp));
- }
-
- return flash_write_cfiword(info, wp, cword);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
- int retcode = 0;
-
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT);
- if(prot)
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_SET);
- else
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_CLEAR);
-
- if((retcode = flash_full_status_check(info, sector, info->erase_blk_tout,
- prot?"protect":"unprotect")) == 0) {
-
- info->protect[sector] = prot;
- /* Intel's unprotect unprotects all locking */
- if(prot == 0) {
- int i;
- for(i = 0 ; i<info->sector_count; i++) {
- if(info->protect[i])
- flash_real_protect(info, i, 1);
- }
- }
- }
-
- return retcode;
-}
-/*-----------------------------------------------------------------------
- * wait for XSR.7 to be set. Time out with an error if it does not.
- * This routine does not set the flash to read-array mode.
- */
-static int flash_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
- ulong start;
-
- /* Wait for command completion */
- start = get_timer (0);
- while(!flash_isset(info, sector, 0, FLASH_STATUS_DONE)) {
- if (get_timer(start) > info->erase_blk_tout) {
- printf("Flash %s timeout at address %lx\n", prompt, info->start[sector]);
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return ERR_TIMOUT;
- }
- }
- return ERR_OK;
-}
-/*-----------------------------------------------------------------------
- * Wait for XSR.7 to be set, if it times out print an error, otherwise do a full status check.
- * This routine sets the flash to read-array mode.
- */
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
- int retcode;
- retcode = flash_status_check(info, sector, tout, prompt);
- if((retcode == ERR_OK) && !flash_isequal(info,sector, 0, FLASH_STATUS_DONE)) {
- retcode = ERR_INVAL;
- printf("Flash %s error at address %lx\n", prompt,info->start[sector]);
- if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS | FLASH_STATUS_PSLBS)){
- printf("Command Sequence Error.\n");
- } else if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS)){
- printf("Block Erase Error.\n");
- retcode = ERR_NOT_ERASED;
- } else if (flash_isset(info, sector, 0, FLASH_STATUS_PSLBS)) {
- printf("Locking Error\n");
- }
- if(flash_isset(info, sector, 0, FLASH_STATUS_DPS)){
- printf("Block locked.\n");
- retcode = ERR_PROTECTED;
- }
- if(flash_isset(info, sector, 0, FLASH_STATUS_VPENS))
- printf("Vpp Low Error.\n");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return retcode;
-}
-/*-----------------------------------------------------------------------
- */
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c)
-{
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cword->c = c;
- break;
- case FLASH_CFI_16BIT:
- cword->w = (cword->w << 8) | c;
- break;
- case FLASH_CFI_32BIT:
- cword->l = (cword->l << 8) | c;
- }
-}
-
-
-/*-----------------------------------------------------------------------
- * make a proper sized command based on the port and chip widths
- */
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf)
-{
- int i;
- uchar *cp = (uchar *)cmdbuf;
- for(i=0; i< info->portwidth; i++)
- *cp++ = ((i+1) % info->chipwidth) ? '\0':cmd;
-}
-
-/*
- * Write a proper sized command to the correct address
- */
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
-
- volatile cfiptr_t addr;
- cfiword_t cword;
- addr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- *addr.cp = cword.c;
- break;
- case FLASH_CFI_16BIT:
- *addr.wp = cword.w;
- break;
- case FLASH_CFI_32BIT:
- *addr.lp = cword.l;
- break;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = (cptr.cp[0] == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = (cptr.wp[0] == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = (cptr.lp[0] == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-/*-----------------------------------------------------------------------
- */
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-
-/*-----------------------------------------------------------------------
- * detect if flash is compatible with the Common Flash Interface (CFI)
- * http://www.jedec.org/download/search/jesd68.pdf
- *
- */
-static int flash_detect_cfi(flash_info_t * info)
-{
-
- for(info->portwidth=FLASH_CFI_8BIT; info->portwidth <= FLASH_CFI_32BIT;
- info->portwidth <<= 1) {
- for(info->chipwidth =FLASH_CFI_BY8;
- info->chipwidth <= info->portwidth;
- info->chipwidth <<= 1) {
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
- flash_write_cmd(info, 0, FLASH_OFFSET_CFI, FLASH_CMD_CFI);
- if(flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP,'Q') &&
- flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 1, 'R') &&
- flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 2, 'Y'))
- return 1;
- }
- }
- return 0;
-}
-/*
- * The following code cannot be run from FLASH!
- *
- */
-static ulong flash_get_size (ulong base, int banknum)
-{
- flash_info_t * info = &flash_info[banknum];
- int i, j;
- int sect_cnt;
- unsigned long sector;
- unsigned long tmp;
- int size_ratio;
- uchar num_erase_regions;
- int erase_region_size;
- int erase_region_count;
-
- info->start[0] = base;
-
- if(flash_detect_cfi(info)){
-#ifdef DEBUG_FLASH
- printf("portwidth=%d chipwidth=%d\n", info->portwidth, info->chipwidth); /* test-only */
-#endif
- size_ratio = info->portwidth / info->chipwidth;
- num_erase_regions = flash_read_uchar(info, FLASH_OFFSET_NUM_ERASE_REGIONS);
-#ifdef DEBUG_FLASH
- printf("found %d erase regions\n", num_erase_regions);
-#endif
- sect_cnt = 0;
- sector = base;
- for(i = 0 ; i < num_erase_regions; i++) {
- if(i > NUM_ERASE_REGIONS) {
- printf("%d erase regions found, only %d used\n",
- num_erase_regions, NUM_ERASE_REGIONS);
- break;
- }
- tmp = flash_read_long(info, 0, FLASH_OFFSET_ERASE_REGIONS);
- erase_region_size = (tmp & 0xffff)? ((tmp & 0xffff) * 256): 128;
- tmp >>= 16;
- erase_region_count = (tmp & 0xffff) +1;
- for(j = 0; j< erase_region_count; j++) {
- info->start[sect_cnt] = sector;
- sector += (erase_region_size * size_ratio);
- info->protect[sect_cnt] = flash_isset(info, sect_cnt, FLASH_OFFSET_PROTECT, FLASH_STATUS_PROTECT);
- sect_cnt++;
- }
- }
-
- info->sector_count = sect_cnt;
- /* multiply the size by the number of chips */
- info->size = (1 << flash_read_uchar(info, FLASH_OFFSET_SIZE)) * size_ratio;
- info->buffer_size = (1 << flash_read_ushort(info, 0, FLASH_OFFSET_BUFFER_SIZE));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_ETOUT);
- info->erase_blk_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_EMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WBTOUT);
- info->buffer_write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WBMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WTOUT);
- info->write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WMAX_TOUT)))/ 1000;
- info->flash_id = FLASH_MAN_CFI;
- }
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
- return(info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
-{
-
- cfiptr_t ctladdr;
- cfiptr_t cptr;
- int flag;
-
- ctladdr.cp = flash_make_addr(info, 0, 0);
- cptr.cp = (uchar *)dest;
-
-
- /* Check if Flash is (sufficiently) erased */
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- flag = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- flag = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- flag = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- return 2;
- }
- if(!flag)
- return 2;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, 0, 0, FLASH_CMD_WRITE);
-
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cptr.cp[0] = cword.c;
- break;
- case FLASH_CFI_16BIT:
- cptr.wp[0] = cword.w;
- break;
- case FLASH_CFI_32BIT:
- cptr.lp[0] = cword.l;
- break;
- }
-
- /* re-enable interrupts if necessary */
- if(flag)
- enable_interrupts();
-
- return flash_full_status_check(info, 0, info->write_tout, "write");
-}
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-
-/* loop through the sectors from the highest address
- * when the passed address is greater or equal to the sector address
- * we have a match
- */
-static int find_sector(flash_info_t *info, ulong addr)
-{
- int sector;
- for(sector = info->sector_count - 1; sector >= 0; sector--) {
- if(addr >= info->start[sector])
- break;
- }
- return sector;
-}
-
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len)
-{
-
- int sector;
- int cnt;
- int retcode;
- volatile cfiptr_t src;
- volatile cfiptr_t dst;
-
- src.cp = cp;
- dst.cp = (uchar *)dest;
- sector = find_sector(info, dest);
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_TO_BUFFER);
- if((retcode = flash_status_check(info, sector, info->buffer_write_tout,
- "write to buffer")) == ERR_OK) {
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cnt = len;
- break;
- case FLASH_CFI_16BIT:
- cnt = len >> 1;
- break;
- case FLASH_CFI_32BIT:
- cnt = len >> 2;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- flash_write_cmd(info, sector, 0, (uchar)cnt-1);
- while(cnt-- > 0) {
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- *dst.cp++ = *src.cp++;
- break;
- case FLASH_CFI_16BIT:
- *dst.wp++ = *src.wp++;
- break;
- case FLASH_CFI_32BIT:
- *dst.lp++ = *src.lp++;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_BUFFER_CONFIRM);
- retcode = flash_full_status_check(info, sector, info->buffer_write_tout,
- "buffer write");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- return retcode;
-}
-#endif /* CFG_USE_FLASH_BUFFER_WRITE */
diff --git a/board/esd/cpci440/u-boot.lds b/board/esd/cpci440/u-boot.lds
deleted file mode 100644
index 57220d385a..0000000000
--- a/board/esd/cpci440/u-boot.lds
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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
-{
- .resetvec 0xFFFFFFFC :
-/* .resetvec 0x01FFFFFC :*/
- {
- *(.resetvec)
- } = 0xffff
-
- .bootpg 0xFFFFF000 :
-/* .bootpg 0x01FFF000 :*/
- {
- cpu/ppc4xx/start.o (.bootpg)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/esd/cpci440/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/cpci5200/Makefile b/board/esd/cpci5200/Makefile
deleted file mode 100644
index 276eabb9f5..0000000000
--- a/board/esd/cpci5200/Makefile
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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
-# ifneq ($(OBJTREE),$(SRCTREE))
-# $(shell mkdir -p $(obj)../common/xilinx_jtag)
-# endif
-
-LIB = $(obj)lib$(BOARD).a
-
-# Objects for Xilinx JTAG programming (CPLD)
-# CPLD = ../common/xilinx_jtag/lenval.o \
-# ../common/xilinx_jtag/micro.o \
-# ../common/xilinx_jtag/ports.o
-
-# COBJS = $(BOARD).o flash.o $(CPLD)
-COBJS = $(BOARD).o strataflash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/cpci5200/config.mk b/board/esd/cpci5200/config.mk
deleted file mode 100644
index 170779d6c1..0000000000
--- a/board/esd/cpci5200/config.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2003
-# 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
-#
-
-#
-# IceCube board:
-#
-# Valid values for TEXT_BASE are:
-#
-# 0xFFF00000 boot high (standard configuration)
-# 0xFF000000 boot low for 16 MiB boards
-# 0xFF800000 boot low for 8 MiB boards
-# 0x00100000 boot from RAM (for testing only)
-#
-
-sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
-
-ifndef TEXT_BASE
-## Standard: boot high
-TEXT_BASE = 0xFFF00000
-## For testing: boot from RAM
-# TEXT_BASE = 0x00100000
-endif
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/esd/cpci5200/cpci5200.c b/board/esd/cpci5200/cpci5200.c
deleted file mode 100644
index a925b84fd9..0000000000
--- a/board/esd/cpci5200/cpci5200.c
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-/*
- * cpci5200.c - main board support/init for the esd cpci5200.
- */
-
-#include <common.h>
-#include <mpc5xxx.h>
-#include <pci.h>
-#include <command.h>
-
-#include "mt46v16m16-75.h"
-
-void init_ata_reset(void);
-
-static void sdram_start(int hi_addr)
-{
- long hi_addr_bit = hi_addr ? 0x01000000 : 0;
-
- /* unlock mode register */
- *(vu_long *) MPC5XXX_SDRAM_CTRL =
- SDRAM_CONTROL | 0x80000000 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* precharge all banks */
- *(vu_long *) MPC5XXX_SDRAM_CTRL =
- SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* set mode register: extended mode */
- *(vu_long *) MPC5XXX_SDRAM_MODE = SDRAM_EMODE;
- __asm__ volatile ("sync");
-
- /* set mode register: reset DLL */
- *(vu_long *) MPC5XXX_SDRAM_MODE = SDRAM_MODE | 0x04000000;
- __asm__ volatile ("sync");
-
- /* precharge all banks */
- *(vu_long *) MPC5XXX_SDRAM_CTRL =
- SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* auto refresh */
- *(vu_long *) MPC5XXX_SDRAM_CTRL =
- SDRAM_CONTROL | 0x80000004 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* set mode register */
- *(vu_long *) MPC5XXX_SDRAM_MODE = SDRAM_MODE;
- __asm__ volatile ("sync");
-
- /* normal operation */
- *(vu_long *) MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
- __asm__ volatile ("sync");
-}
-
-/*
- * ATTENTION: Although partially referenced initdram does NOT make real use
- * use of CFG_SDRAM_BASE. The code does not work if CFG_SDRAM_BASE
- * is something else than 0x00000000.
- */
-
-long int initdram(int board_type)
-{
- ulong dramsize = 0;
- ulong test1, test2;
-
- /* setup SDRAM chip selects */
- *(vu_long *) MPC5XXX_SDRAM_CS0CFG = 0x0000001e; /* 2G at 0x0 */
- *(vu_long *) MPC5XXX_SDRAM_CS1CFG = 0x80000000; /* disabled */
- __asm__ volatile ("sync");
-
- /* setup config registers */
- *(vu_long *) MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
- *(vu_long *) MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
- __asm__ volatile ("sync");
-
- /* set tap delay */
- *(vu_long *) MPC5XXX_CDM_PORCFG = SDRAM_TAPDELAY;
- __asm__ volatile ("sync");
-
- /* find RAM size using SDRAM CS0 only */
- sdram_start(0);
- test1 = get_ram_size((long *) CFG_SDRAM_BASE, 0x80000000);
- sdram_start(1);
- test2 = get_ram_size((long *) CFG_SDRAM_BASE, 0x80000000);
-
- if (test1 > test2) {
- sdram_start(0);
- dramsize = test1;
- } else {
- dramsize = test2;
- }
-
- /* memory smaller than 1MB is impossible */
- if (dramsize < (1 << 20)) {
- dramsize = 0;
- }
-
- /* set SDRAM CS0 size according to the amount of RAM found */
- if (dramsize > 0) {
- *(vu_long *) MPC5XXX_SDRAM_CS0CFG =
- 0x13 + __builtin_ffs(dramsize >> 20) - 1;
- /* let SDRAM CS1 start right after CS0 */
- *(vu_long *) MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e; /* 2G */
- } else {
-#if 0
- *(vu_long *) MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
- /* let SDRAM CS1 start right after CS0 */
- *(vu_long *) MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e; /* 2G */
-#else
- *(vu_long *) MPC5XXX_SDRAM_CS0CFG =
- 0x13 + __builtin_ffs(0x08000000 >> 20) - 1;
- /* let SDRAM CS1 start right after CS0 */
- *(vu_long *) MPC5XXX_SDRAM_CS1CFG = 0x08000000 + 0x0000001e; /* 2G */
-#endif
- }
-
-#if 0
- /* find RAM size using SDRAM CS1 only */
- sdram_start(0);
- get_ram_size((ulong *) (CFG_SDRAM_BASE + dramsize), 0x80000000);
- sdram_start(1);
- get_ram_size((ulong *) (CFG_SDRAM_BASE + dramsize), 0x80000000);
- sdram_start(0);
-#endif
- /* set SDRAM CS1 size according to the amount of RAM found */
-
- *(vu_long *) MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
-
- init_ata_reset();
- return (dramsize);
-}
-
-int checkboard(void)
-{
- puts("Board: esd CPCI5200 (cpci5200)\n");
- return 0;
-}
-
-void flash_preinit(void)
-{
- /*
- * Now, when we are in RAM, enable flash write
- * access for detection process.
- * Note that CS_BOOT cannot be cleared when
- * executing in flash.
- */
- *(vu_long *) MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
-}
-
-void flash_afterinit(ulong size)
-{
- if (size == 0x02000000) {
- /* adjust mapping */
- *(vu_long *) MPC5XXX_BOOTCS_START =
- *(vu_long *) MPC5XXX_CS0_START =
- START_REG(CFG_BOOTCS_START | size);
- *(vu_long *) MPC5XXX_BOOTCS_STOP =
- *(vu_long *) MPC5XXX_CS0_STOP =
- STOP_REG(CFG_BOOTCS_START | size, size);
- }
-}
-
-#ifdef CONFIG_PCI
-static struct pci_controller hose;
-
-extern void pci_mpc5xxx_init(struct pci_controller *);
-
-void pci_init_board(void) {
- pci_mpc5xxx_init(&hose);
-}
-#endif
-
-#if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
-
-void init_ide_reset(void)
-{
- debug("init_ide_reset\n");
-
- /* Configure PSC1_4 as GPIO output for ATA reset */
- *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC1_4;
- *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC1_4;
-}
-
-void ide_set_reset(int idereset)
-{
- debug("ide_reset(%d)\n", idereset);
-
- if (idereset) {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
- } else {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
- }
-}
-#endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
-
-#define MPC5XXX_SIMPLEIO_GPIO_ENABLE (MPC5XXX_GPIO + 0x0004)
-#define MPC5XXX_SIMPLEIO_GPIO_DIR (MPC5XXX_GPIO + 0x000C)
-#define MPC5XXX_SIMPLEIO_GPIO_DATA_OUTPUT (MPC5XXX_GPIO + 0x0010)
-#define MPC5XXX_SIMPLEIO_GPIO_DATA_INPUT (MPC5XXX_GPIO + 0x0014)
-
-#define MPC5XXX_INTERRUPT_GPIO_ENABLE (MPC5XXX_GPIO + 0x0020)
-#define MPC5XXX_INTERRUPT_GPIO_DIR (MPC5XXX_GPIO + 0x0028)
-#define MPC5XXX_INTERRUPT_GPIO_DATA_OUTPUT (MPC5XXX_GPIO + 0x002C)
-#define MPC5XXX_INTERRUPT_GPIO_STATUS (MPC5XXX_GPIO + 0x003C)
-
-#define GPIO_WU6 0x40000000UL
-#define GPIO_USB0 0x00010000UL
-#define GPIO_USB9 0x08000000UL
-#define GPIO_USB9S 0x00080000UL
-
-void init_ata_reset(void)
-{
- debug("init_ata_reset\n");
-
- /* Configure GPIO_WU6 as GPIO output for ATA reset */
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_WU6;
- *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_WU6;
- *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_WU6;
- __asm__ volatile ("sync");
-
- *(vu_long *) MPC5XXX_SIMPLEIO_GPIO_DATA_OUTPUT &= ~GPIO_USB0;
- *(vu_long *) MPC5XXX_SIMPLEIO_GPIO_ENABLE |= GPIO_USB0;
- *(vu_long *) MPC5XXX_SIMPLEIO_GPIO_DIR |= GPIO_USB0;
- __asm__ volatile ("sync");
-
- *(vu_long *) MPC5XXX_INTERRUPT_GPIO_DATA_OUTPUT &= ~GPIO_USB9;
- *(vu_long *) MPC5XXX_INTERRUPT_GPIO_ENABLE &= ~GPIO_USB9;
- __asm__ volatile ("sync");
-
- if ((*(vu_long *) MPC5XXX_INTERRUPT_GPIO_STATUS & GPIO_USB9S) == 0) {
- *(vu_long *) MPC5XXX_SIMPLEIO_GPIO_DATA_OUTPUT |= GPIO_USB0;
- __asm__ volatile ("sync");
- }
-}
-
-int do_writepci(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int addr;
- unsigned int size;
- int i;
- volatile unsigned long *ptr;
-
- addr = simple_strtol(argv[1], NULL, 16);
- size = simple_strtol(argv[2], NULL, 16);
-
- printf("\nWriting at addr %08x, size %08x.\n", addr, size);
-
- while (1) {
- ptr = (volatile unsigned long *)addr;
- for (i = 0; i < (size >> 2); i++) {
- *ptr++ = i;
- }
-
- /* Abort if ctrl-c was pressed */
- if (ctrlc()) {
- puts("\nAbort\n");
- return 0;
- }
- putc('.');
- }
- return 0;
-}
-
-U_BOOT_CMD(writepci, 3, 1, do_writepci,
- "writepci- Write some data to pcibus\n",
- "<addr> <size>\n" " - Write some data to pcibus.\n");
diff --git a/board/esd/cpci5200/mt46v16m16-75.h b/board/esd/cpci5200/mt46v16m16-75.h
deleted file mode 100644
index 22d0a55444..0000000000
--- a/board/esd/cpci5200/mt46v16m16-75.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#define SDRAM_DDR 1 /* is DDR */
-
-#if defined(CONFIG_MPC5200)
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE 0x018D0000
-#define SDRAM_EMODE 0x40090000
-#define SDRAM_CONTROL 0x705f0f00
-#define SDRAM_CONFIG1 0x73722930
-#define SDRAM_CONFIG2 0x47770000
-#define SDRAM_TAPDELAY 0x10000000
-
-#else
-#error CONFIG_MPC5200 not defined
-#endif
diff --git a/board/esd/cpci5200/strataflash.c b/board/esd/cpci5200/strataflash.c
deleted file mode 100644
index d76af02dbe..0000000000
--- a/board/esd/cpci5200/strataflash.c
+++ /dev/null
@@ -1,804 +0,0 @@
-/*
- * (C) Copyright 2002
- * Brad Kemp, Seranoa Networks, Brad.Kemp@seranoa.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/cache.h>
-
-#undef DEBUG_FLASH
-/*
- * This file implements a Common Flash Interface (CFI) driver for U-Boot.
- * The width of the port and the width of the chips are determined at initialization.
- * These widths are used to calculate the address for access CFI data structures.
- * It has been tested on an Intel Strataflash implementation.
- *
- * References
- * JEDEC Standard JESD68 - Common Flash Interface (CFI)
- * JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
- * Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
- * Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
- *
- * TODO
- * Use Primary Extended Query table (PRI) and Alternate Algorithm Query Table (ALT) to determine if protection is available
- * Add support for other command sets Use the PRI and ALT to determine command set
- * Verify erase and program timeouts.
- */
-
-#define FLASH_CMD_CFI 0x98
-#define FLASH_CMD_READ_ID 0x90
-#define FLASH_CMD_RESET 0xff
-#define FLASH_CMD_BLOCK_ERASE 0x20
-#define FLASH_CMD_ERASE_CONFIRM 0xD0
-#define FLASH_CMD_WRITE 0x40
-#define FLASH_CMD_PROTECT 0x60
-#define FLASH_CMD_PROTECT_SET 0x01
-#define FLASH_CMD_PROTECT_CLEAR 0xD0
-#define FLASH_CMD_CLEAR_STATUS 0x50
-#define FLASH_CMD_WRITE_TO_BUFFER 0xE8
-#define FLASH_CMD_WRITE_BUFFER_CONFIRM 0xD0
-
-#define FLASH_STATUS_DONE 0x80
-#define FLASH_STATUS_ESS 0x40
-#define FLASH_STATUS_ECLBS 0x20
-#define FLASH_STATUS_PSLBS 0x10
-#define FLASH_STATUS_VPENS 0x08
-#define FLASH_STATUS_PSS 0x04
-#define FLASH_STATUS_DPS 0x02
-#define FLASH_STATUS_R 0x01
-#define FLASH_STATUS_PROTECT 0x01
-
-#define FLASH_OFFSET_CFI 0x55
-#define FLASH_OFFSET_CFI_RESP 0x10
-#define FLASH_OFFSET_WTOUT 0x1F
-#define FLASH_OFFSET_WBTOUT 0x20
-#define FLASH_OFFSET_ETOUT 0x21
-#define FLASH_OFFSET_CETOUT 0x22
-#define FLASH_OFFSET_WMAX_TOUT 0x23
-#define FLASH_OFFSET_WBMAX_TOUT 0x24
-#define FLASH_OFFSET_EMAX_TOUT 0x25
-#define FLASH_OFFSET_CEMAX_TOUT 0x26
-#define FLASH_OFFSET_SIZE 0x27
-#define FLASH_OFFSET_INTERFACE 0x28
-#define FLASH_OFFSET_BUFFER_SIZE 0x2A
-#define FLASH_OFFSET_NUM_ERASE_REGIONS 0x2C
-#define FLASH_OFFSET_ERASE_REGIONS 0x2D
-#define FLASH_OFFSET_PROTECT 0x02
-#define FLASH_OFFSET_USER_PROTECTION 0x85
-#define FLASH_OFFSET_INTEL_PROTECTION 0x81
-
-#define FLASH_MAN_CFI 0x01000000
-
-typedef union {
- unsigned char c;
- unsigned short w;
- unsigned long l;
-} cfiword_t;
-
-typedef union {
- unsigned char *cp;
- unsigned short *wp;
- unsigned long *lp;
-} cfiptr_t;
-
-#define NUM_ERASE_REGIONS 4
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-static void flash_add_byte(flash_info_t * info, cfiword_t * cword, uchar c);
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void *cmdbuf);
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset,
- uchar cmd);
-static int flash_isequal(flash_info_t * info, int sect, uchar offset,
- uchar cmd);
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_detect_cfi(flash_info_t * info);
-static ulong flash_get_size(ulong base, int banknum);
-static int flash_write_cfiword(flash_info_t * info, ulong dest,
- cfiword_t cword);
-static int flash_full_status_check(flash_info_t * info, ulong sector,
- ulong tout, char *prompt);
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp,
- int len);
-#endif
-/*-----------------------------------------------------------------------
- * create an address based on the offset and the port width
- */
-inline uchar *flash_make_addr(flash_info_t * info, int sect, int offset)
-{
- return ((uchar *) (info->start[sect] + (offset * info->portwidth)));
-}
-
-/*-----------------------------------------------------------------------
- * read a character at a port width address
- */
-inline uchar flash_read_uchar(flash_info_t * info, uchar offset)
-{
- uchar *cp;
- cp = flash_make_addr(info, 0, offset);
- return (cp[info->portwidth - 1]);
-}
-
-/*-----------------------------------------------------------------------
- * read a short word by swapping for ppc format.
- */
-ushort flash_read_ushort(flash_info_t * info, int sect, uchar offset)
-{
- uchar *addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ((addr[(2 * info->portwidth) - 1] << 8) |
- addr[info->portwidth - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- * read a long word by picking the least significant byte of each maiximum
- * port size word. Swap for ppc format.
- */
-ulong flash_read_long(flash_info_t * info, int sect, uchar offset)
-{
- uchar *addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ((addr[(2 * info->portwidth) - 1] << 24) |
- (addr[(info->portwidth) - 1] << 16) |
- (addr[(4 * info->portwidth) - 1] << 8) |
- addr[(3 * info->portwidth) - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init(void)
-{
- unsigned long size;
- int i;
- unsigned long address;
-
- /* The flash is positioned back to back, with the demultiplexing of the chip
- * based on the A24 address line.
- *
- */
-
- address = CFG_FLASH_BASE;
- size = 0;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- size += flash_info[i].size = flash_get_size(address, i);
- address += CFG_FLASH_INCREMENT;
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf
- ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
- i, flash_info[0].size, flash_info[i].size << 20);
- }
- }
-
-#if 0 /* test-only */
- /* Monitor protection ON by default */
-#if (CFG_MONITOR_BASE >= CFG_FLASH_BASE)
- for (i = 0;
- flash_info[0].start[i] < CFG_MONITOR_BASE + monitor_flash_len - 1;
- i++)
- (void)flash_real_protect(&flash_info[0], i, 1);
-#endif
-#endif
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-{
- int rcode = 0;
- int prot;
- int sect;
-
- if (info->flash_id != FLASH_MAN_CFI) {
- printf("Can't erase unknown flash type - aborted\n");
- return 1;
- }
- if ((s_first < 0) || (s_first > s_last)) {
- printf("- no sectors to erase\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- printf("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf("\n");
- }
-
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- flash_write_cmd(info, sect, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sect, 0, FLASH_CMD_BLOCK_ERASE);
- flash_write_cmd(info, sect, 0, FLASH_CMD_ERASE_CONFIRM);
-
- if (flash_full_status_check
- (info, sect, info->erase_blk_tout, "erase")) {
- rcode = 1;
- } else
- printf(".");
- }
- }
- printf(" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t * info)
-{
- int i;
-
- if (info->flash_id != FLASH_MAN_CFI) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- printf("CFI conformant FLASH (%d x %d)",
- (info->portwidth << 3), (info->chipwidth << 3));
- printf(" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
- printf
- (" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n",
- info->erase_blk_tout, info->write_tout, info->buffer_write_tout,
- info->buffer_size);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf("\n");
- printf(" %08lX%5s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong wp;
- ulong cp;
- int aln;
- cfiword_t cword;
- int i, rc;
-
- /* get lower aligned address */
- wp = (addr & ~(info->portwidth - 1));
-
- /* handle unaligned start */
- if ((aln = addr - wp) != 0) {
- cword.l = 0;
- cp = wp;
- for (i = 0; i < aln; ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *) cp));
-
- for (; (i < info->portwidth) && (cnt > 0); i++) {
- flash_add_byte(info, &cword, *src++);
- cnt--;
- cp++;
- }
- for (; (cnt == 0) && (i < info->portwidth); ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *) cp));
- if ((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp = cp;
- }
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
- while (cnt >= info->portwidth) {
- i = info->buffer_size > cnt ? cnt : info->buffer_size;
- if ((rc = flash_write_cfibuffer(info, wp, src, i)) != ERR_OK)
- return rc;
- wp += i;
- src += i;
- cnt -= i;
- }
-#else
- /* handle the aligned part */
- while (cnt >= info->portwidth) {
- cword.l = 0;
- for (i = 0; i < info->portwidth; i++) {
- flash_add_byte(info, &cword, *src++);
- }
- if ((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp += info->portwidth;
- cnt -= info->portwidth;
- }
-#endif /* CFG_FLASH_USE_BUFFER_WRITE */
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- cword.l = 0;
- for (i = 0, cp = wp; (i < info->portwidth) && (cnt > 0); ++i, ++cp) {
- flash_add_byte(info, &cword, *src++);
- --cnt;
- }
- for (; i < info->portwidth; ++i, ++cp) {
- flash_add_byte(info, &cword, (*(uchar *) cp));
- }
-
- return flash_write_cfiword(info, wp, cword);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect(flash_info_t * info, long sector, int prot)
-{
- int retcode = 0;
-
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT);
- if (prot)
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_SET);
- else
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_CLEAR);
-
- if ((retcode =
- flash_full_status_check(info, sector, info->erase_blk_tout,
- prot ? "protect" : "unprotect")) == 0) {
-
- info->protect[sector] = prot;
- /* Intel's unprotect unprotects all locking */
- if (prot == 0) {
- int i;
- for (i = 0; i < info->sector_count; i++) {
- if (info->protect[i])
- flash_real_protect(info, i, 1);
- }
- }
- }
-
- return retcode;
-}
-
-/*-----------------------------------------------------------------------
- * wait for XSR.7 to be set. Time out with an error if it does not.
- * This routine does not set the flash to read-array mode.
- */
-static int flash_status_check(flash_info_t * info, ulong sector, ulong tout,
- char *prompt)
-{
- ulong start;
-
- /* Wait for command completion */
- start = get_timer(0);
- while (!flash_isset(info, sector, 0, FLASH_STATUS_DONE)) {
- if (get_timer(start) > info->erase_blk_tout) {
- printf("Flash %s timeout at address %lx\n", prompt,
- info->start[sector]);
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return ERR_TIMOUT;
- }
- }
- return ERR_OK;
-}
-
-/*-----------------------------------------------------------------------
- * Wait for XSR.7 to be set, if it times out print an error, otherwise do a full status check.
- * This routine sets the flash to read-array mode.
- */
-static int flash_full_status_check(flash_info_t * info, ulong sector,
- ulong tout, char *prompt)
-{
- int retcode;
- retcode = flash_status_check(info, sector, tout, prompt);
- if ((retcode == ERR_OK)
- && !flash_isequal(info, sector, 0, FLASH_STATUS_DONE)) {
- retcode = ERR_INVAL;
- printf("Flash %s error at address %lx\n", prompt,
- info->start[sector]);
- if (flash_isset
- (info, sector, 0,
- FLASH_STATUS_ECLBS | FLASH_STATUS_PSLBS)) {
- printf("Command Sequence Error.\n");
- } else if (flash_isset(info, sector, 0, FLASH_STATUS_ECLBS)) {
- printf("Block Erase Error.\n");
- retcode = ERR_NOT_ERASED;
- } else if (flash_isset(info, sector, 0, FLASH_STATUS_PSLBS)) {
- printf("Locking Error\n");
- }
- if (flash_isset(info, sector, 0, FLASH_STATUS_DPS)) {
- printf("Block locked.\n");
- retcode = ERR_PROTECTED;
- }
- if (flash_isset(info, sector, 0, FLASH_STATUS_VPENS))
- printf("Vpp Low Error.\n");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return retcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_add_byte(flash_info_t * info, cfiword_t * cword, uchar c)
-{
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- cword->c = c;
- break;
- case FLASH_CFI_16BIT:
- cword->w = (cword->w << 8) | c;
- break;
- case FLASH_CFI_32BIT:
- cword->l = (cword->l << 8) | c;
- }
-}
-
-/*-----------------------------------------------------------------------
- * make a proper sized command based on the port and chip widths
- */
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void *cmdbuf)
-{
- int i;
- uchar *cp = (uchar *) cmdbuf;
- for (i = 0; i < info->portwidth; i++)
- *cp++ = ((i + 1) % info->chipwidth) ? '\0' : cmd;
-}
-
-/*
- * Write a proper sized command to the correct address
- */
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset,
- uchar cmd)
-{
-
- volatile cfiptr_t addr;
- cfiword_t cword;
- addr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- *addr.cp = cword.c;
- break;
- case FLASH_CFI_16BIT:
- *addr.wp = cword.w;
- break;
- case FLASH_CFI_32BIT:
- *addr.lp = cword.l;
- break;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = (cptr.cp[0] == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = (cptr.wp[0] == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = (cptr.lp[0] == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-
-/*-----------------------------------------------------------------------
- * detect if flash is compatible with the Common Flash Interface (CFI)
- * http://www.jedec.org/download/search/jesd68.pdf
- *
- */
-static int flash_detect_cfi(flash_info_t * info)
-{
-
- for (info->portwidth = FLASH_CFI_8BIT;
- info->portwidth <= FLASH_CFI_32BIT; info->portwidth <<= 1) {
- for (info->chipwidth = FLASH_CFI_BY8;
- info->chipwidth <= info->portwidth;
- info->chipwidth <<= 1) {
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
- flash_write_cmd(info, 0, FLASH_OFFSET_CFI,
- FLASH_CMD_CFI);
- if (flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP, 'Q')
- && flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 1,
- 'R')
- && flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 2,
- 'Y'))
- return 1;
- }
- }
- return 0;
-}
-
-/*
- * The following code cannot be run from FLASH!
- *
- */
-static ulong flash_get_size(ulong base, int banknum)
-{
- flash_info_t *info = &flash_info[banknum];
- int i, j;
- int sect_cnt;
- unsigned long sector;
- unsigned long tmp;
- int size_ratio = 0;
- uchar num_erase_regions;
- int erase_region_size;
- int erase_region_count;
-
- info->start[0] = base;
-#if 0
- invalidate_dcache_range(base, base + 0x400);
-#endif
- if (flash_detect_cfi(info)) {
-
- size_ratio = info->portwidth / info->chipwidth;
- num_erase_regions =
- flash_read_uchar(info, FLASH_OFFSET_NUM_ERASE_REGIONS);
-
- sect_cnt = 0;
- sector = base;
- for (i = 0; i < num_erase_regions; i++) {
- if (i > NUM_ERASE_REGIONS) {
- printf("%d erase regions found, only %d used\n",
- num_erase_regions, NUM_ERASE_REGIONS);
- break;
- }
- tmp =
- flash_read_long(info, 0,
- FLASH_OFFSET_ERASE_REGIONS);
- erase_region_size =
- (tmp & 0xffff) ? ((tmp & 0xffff) * 256) : 128;
- tmp >>= 16;
- erase_region_count = (tmp & 0xffff) + 1;
- for (j = 0; j < erase_region_count; j++) {
- info->start[sect_cnt] = sector;
- sector += (erase_region_size * size_ratio);
- info->protect[sect_cnt] =
- flash_isset(info, sect_cnt,
- FLASH_OFFSET_PROTECT,
- FLASH_STATUS_PROTECT);
- sect_cnt++;
- }
- }
-
- info->sector_count = sect_cnt;
- /* multiply the size by the number of chips */
- info->size =
- (1 << flash_read_uchar(info, FLASH_OFFSET_SIZE)) *
- size_ratio;
- info->buffer_size =
- (1 << flash_read_ushort(info, 0, FLASH_OFFSET_BUFFER_SIZE));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_ETOUT);
- info->erase_blk_tout =
- (tmp *
- (1 << flash_read_uchar(info, FLASH_OFFSET_EMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WBTOUT);
- info->buffer_write_tout =
- (tmp *
- (1 << flash_read_uchar(info, FLASH_OFFSET_WBMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WTOUT);
- info->write_tout =
- (tmp *
- (1 << flash_read_uchar(info, FLASH_OFFSET_WMAX_TOUT))) /
- 1000;
- info->flash_id = FLASH_MAN_CFI;
- }
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
-#ifdef DEBUG_FLASH
- printf("portwidth=%d chipwidth=%d\n", info->portwidth, info->chipwidth); /* test-only */
-#endif
-#ifdef DEBUG_FLASH
- printf("found %d erase regions\n", num_erase_regions);
-#endif
-#ifdef DEBUG_FLASH
- printf("size=%08x sectors=%08x \n", info->size, info->sector_count);
-#endif
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_write_cfiword(flash_info_t * info, ulong dest, cfiword_t cword)
-{
-
- cfiptr_t ctladdr;
- cfiptr_t cptr;
- int flag;
-
- ctladdr.cp = flash_make_addr(info, 0, 0);
- cptr.cp = (uchar *) dest;
-
- /* Check if Flash is (sufficiently) erased */
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- flag = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- flag = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- flag = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- return 2;
- }
- if (!flag)
- return 2;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, 0, 0, FLASH_CMD_WRITE);
-
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- cptr.cp[0] = cword.c;
- break;
- case FLASH_CFI_16BIT:
- cptr.wp[0] = cword.w;
- break;
- case FLASH_CFI_32BIT:
- cptr.lp[0] = cword.l;
- break;
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- return flash_full_status_check(info, 0, info->write_tout, "write");
-}
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-
-/* loop through the sectors from the highest address
- * when the passed address is greater or equal to the sector address
- * we have a match
- */
-static int find_sector(flash_info_t * info, ulong addr)
-{
- int sector;
- for (sector = info->sector_count - 1; sector >= 0; sector--) {
- if (addr >= info->start[sector])
- break;
- }
- return sector;
-}
-
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp,
- int len)
-{
-
- int sector;
- int cnt;
- int retcode;
- volatile cfiptr_t src;
- volatile cfiptr_t dst;
-
- src.cp = cp;
- dst.cp = (uchar *) dest;
- sector = find_sector(info, dest);
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_TO_BUFFER);
- if ((retcode = flash_status_check(info, sector, info->buffer_write_tout,
- "write to buffer")) == ERR_OK) {
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- cnt = len;
- break;
- case FLASH_CFI_16BIT:
- cnt = len >> 1;
- break;
- case FLASH_CFI_32BIT:
- cnt = len >> 2;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- flash_write_cmd(info, sector, 0, (uchar) cnt - 1);
- while (cnt-- > 0) {
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- *dst.cp++ = *src.cp++;
- break;
- case FLASH_CFI_16BIT:
- *dst.wp++ = *src.wp++;
- break;
- case FLASH_CFI_32BIT:
- *dst.lp++ = *src.lp++;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- }
- flash_write_cmd(info, sector, 0,
- FLASH_CMD_WRITE_BUFFER_CONFIRM);
- retcode =
- flash_full_status_check(info, sector,
- info->buffer_write_tout,
- "buffer write");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- return retcode;
-}
-#endif /* CFG_USE_FLASH_BUFFER_WRITE */
diff --git a/board/esd/cpci5200/u-boot.lds b/board/esd/cpci5200/u-boot.lds
deleted file mode 100644
index f23432ecfa..0000000000
--- a/board/esd/cpci5200/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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/mpc5xxx/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/esd/cpciiser4/Makefile b/board/esd/cpciiser4/Makefile
deleted file mode 100644
index 4d75868ea8..0000000000
--- a/board/esd/cpciiser4/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/cpciiser4/config.mk b/board/esd/cpciiser4/config.mk
deleted file mode 100644
index 58574cb042..0000000000
--- a/board/esd/cpciiser4/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (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
-#
-
-#
-# esd CPCIISER4 boards
-#
-
-#TEXT_BASE = 0xFFFE0000
-#TEXT_BASE = 0xFFFD0000
-TEXT_BASE = 0xFFFC0000
diff --git a/board/esd/cpciiser4/cpciiser4.c b/board/esd/cpciiser4/cpciiser4.c
deleted file mode 100644
index fcb8cbbe73..0000000000
--- a/board/esd/cpciiser4/cpciiser4.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * (C) Copyright 2000
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include "cpciiser4.h"
-#include <asm/processor.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*cmd_boot.c*/
-
-extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-extern void lxt971_no_sleep(void);
-
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-#if 0
-#define FPGA_DEBUG2
-#endif
-
-/* fpga configuration data - generated by bin2cc */
-const unsigned char fpgadata[] = {
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int board_early_init_f (void)
-{
- int index, len, i;
- volatile unsigned char dummy;
- int status;
-
-#ifdef FPGA_DEBUG
- /* set up serial port with default baudrate */
- (void) get_clocks ();
- gd->baudrate = CONFIG_BAUDRATE;
- serial_init ();
- console_init_f ();
-#endif
-
- /*
- * Boot onboard FPGA
- */
- status = fpga_boot ((unsigned char *) fpgadata, sizeof (fpgadata));
- if (status != 0) {
- /* booting FPGA failed */
-#ifndef FPGA_DEBUG
- /* set up serial port with default baudrate */
- (void) get_clocks ();
- gd->baudrate = CONFIG_BAUDRATE;
- serial_init ();
- console_init_f ();
-#endif
- printf ("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf ("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf ("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf ("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i = 0; i < 4; i++) {
- len = fpgadata[index];
- printf ("FPGA: %s\n", &(fpgadata[index + 1]));
- index += len + 3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i = 20; i > 0; i--) {
- printf ("Rebooting in %2d seconds \r", i);
- for (index = 0; index < 1000; index++)
- udelay (1000);
- }
- putc ('\n');
- do_reset (NULL, 0, 0, NULL);
- }
-
- /*
- * Init FPGA via RESET (read access on CS3)
- */
- dummy = *(unsigned char *) 0xf0200000;
-
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) PCI SLOT 0; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) PCI SLOT 1; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
- mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
- /* mtdcr(uicpr, 0xFFFFFF81); / set int polarities */
- mtdcr (uicpr, 0xFFFFFF80); /* set int polarities */
- mtdcr (uictr, 0x10000000); /* set int trigger levels */
- mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- int index;
- int len;
- char str[64];
- int i = getenv_r ("serial#", str, sizeof (str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming AR405");
- } else {
- puts(str);
- }
-
- puts ("\nFPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i = 0; i < 4; i++) {
- len = fpgadata[index];
- printf ("%s ", &(fpgadata[index + 1]));
- index += len + 3;
- }
-
- putc ('\n');
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- return (16 * 1024 * 1024);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/esd/cpciiser4/cpciiser4.h b/board/esd/cpciiser4/cpciiser4.h
deleted file mode 100644
index 5fc313a258..0000000000
--- a/board/esd/cpciiser4/cpciiser4.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (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
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- * Start Address Length
- * +-----------------------+ 0x4000_0000 Start of Flash -----------------
- * | MON8xx code | 0x4000_0100 Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused) |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses | 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) | 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address | 0x04
- * +-----------------------+ 0x4001_FFC0 ^
- * | Hardware Information | 0x40 | MON8xx
- * +=======================+ 0x4002_0000 (sector border) -----------------
- * | Autostart Header | | Applications
- * | ... | v
- *
- *****************************************************************************/
diff --git a/board/esd/cpciiser4/flash.c b/board/esd/cpciiser4/flash.c
deleted file mode 100644
index de847f9bea..0000000000
--- a/board/esd/cpciiser4/flash.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (((size_b0/1024/1024)-1)<<17);
- mtdcr(ebccfgd, pbcr);
- /* printf("pb1cr = %x\n", pbcr); */
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -monitor_flash_len,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/cpciiser4/fpgadata.c b/board/esd/cpciiser4/fpgadata.c
deleted file mode 100644
index 5e020979e3..0000000000
--- a/board/esd/cpciiser4/fpgadata.c
+++ /dev/null
@@ -1,2068 +0,0 @@
- 0x00,0x09,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x00,0x00,0x01,0x61,0x00,0x0c,
- 0x69,0x73,0x65,0x72,0x34,0x5f,0x31,0x2e,0x6e,0x63,0x64,0x00,0x62,0x00,0x0b,0x73,
- 0x34,0x30,0x78,0x6c,0x70,0x71,0x32,0x30,0x38,0x00,0x63,0x00,0x0b,0x32,0x30,0x30,
- 0x31,0x2f,0x30,0x33,0x2f,0x31,0x39,0x00,0x64,0x00,0x09,0x31,0x36,0x3a,0x31,0x34,
- 0x3a,0x32,0x35,0x00,0x65,0xe2,0x01,0x00,0x00,0x80,0xf0,0xff,0x30,0xe5,0xe5,0xe8,
- 0xe5,0x03,0xe8,0x04,0x01,0x02,0x09,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x07,0x0b,0x01,0x07,0x01,0x05,0x09,0x03,0x07,0x09,0x01,0x05,0x03,0x05,0x0b,0x0c,
- 0x08,0x01,0x07,0x01,0x05,0x03,0x05,0x03,0x07,0x01,0x07,0x02,0x04,0x03,0x07,0x01,
- 0x09,0x07,0x01,0x07,0x01,0x07,0x08,0xe7,0x0c,0x09,0x09,0x09,0x09,0x09,0x02,0x04,
- 0x0b,0x09,0x06,0xe5,0xe5,0x01,0x03,0xe5,0xe5,0x08,0x02,0x06,0x07,0x01,0x06,0xe5,
- 0x02,0x02,0x04,0x01,0x02,0xe5,0x02,0x02,0x08,0x09,0x09,0x09,0x09,0x13,0x09,0x07,
- 0x01,0x09,0x09,0x13,0xe5,0x47,0x05,0x17,0x04,0x04,0x0e,0x0e,0x09,0x06,0x04,0x09,
- 0x59,0x25,0x02,0xe5,0x0e,0x09,0x09,0x09,0x09,0x09,0x01,0x05,0xe6,0x08,0x09,0x09,
- 0x01,0x07,0x09,0x01,0x07,0x09,0x0b,0x01,0x07,0x01,0x04,0x01,0x0a,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0e,0xe8,0x13,0x09,0x09,0x09,0x09,0x0a,0xe7,
- 0x04,0x09,0x0a,0xe5,0x07,0xe5,0x06,0x09,0x0a,0xe5,0x07,0xe5,0x09,0xe5,0x06,0xe8,
- 0x04,0x09,0x09,0xe5,0x07,0xe5,0x07,0x09,0x03,0x05,0xe5,0x07,0x0a,0xe5,0x06,0x09,
- 0x09,0x09,0x03,0x40,0x08,0x1d,0xe5,0x12,0x1f,0x08,0xe5,0x07,0x01,0x55,0x26,0x01,
- 0xe6,0xe5,0x46,0x31,0x1f,0x13,0x58,0x25,0xe6,0xe5,0x3f,0x04,0x1d,0x04,0x04,0x0e,
- 0x0e,0x09,0x03,0x02,0x04,0x04,0x0a,0x53,0x28,0x02,0xe5,0xe5,0x10,0x09,0x09,0x02,
- 0x06,0x09,0x1d,0x1d,0x09,0x17,0x1b,0x01,0x07,0x1d,0x09,0x02,0x10,0x13,0x09,0x09,
- 0x0a,0x03,0x01,0x48,0x1f,0x11,0x01,0x1d,0x01,0x09,0x07,0x7e,0x01,0xe5,0xe5,0x42,
- 0x1d,0x04,0x04,0x1d,0x09,0x0b,0x15,0x4d,0x28,0x01,0x01,0x99,0x95,0xe7,0x28,0x6f,
- 0x0a,0x44,0x44,0xe5,0xe6,0x0f,0x09,0x09,0x04,0x04,0x09,0x09,0x09,0x09,0x03,0x05,
- 0x05,0x03,0x09,0x09,0x09,0x09,0x0b,0x01,0x01,0x01,0x03,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x04,0x04,0x09,0x09,0x09,0x09,0x09,0x0e,0xe7,0x0f,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x07,0x03,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0x03,0x0d,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x04,
- 0x02,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x08,0xe6,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x0f,0x01,0xe5,0x0f,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x05,0x03,
- 0x09,0x09,0xe5,0x07,0x09,0x09,0x06,0x04,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x04,0x0b,0xe5,0x05,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0x02,0x06,0xe5,0x0e,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,
- 0x04,0x09,0x04,0x04,0x09,0x0b,0x04,0x04,0x04,0x04,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x12,0x0d,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,
- 0xe5,0x08,0x06,0x02,0x09,0x09,0x09,0x01,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x07,0x08,0xe5,0x01,0x0d,0x02,0x06,0x02,0x06,0x02,0x06,
- 0x02,0x06,0x02,0x09,0x06,0x02,0x04,0x01,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,
- 0x02,0x06,0x02,0x06,0x02,0x06,0x04,0x04,0x01,0x02,0x06,0x02,0x06,0x02,0x06,0x02,
- 0x05,0xe5,0x01,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,
- 0x02,0x06,0x02,0x0e,0xe7,0x02,0x3b,0x11,0x25,0x1c,0x06,0x04,0x89,0x04,0x02,0x03,
- 0x4d,0x46,0x02,0x19,0x0a,0x6f,0xe6,0x02,0x3b,0x12,0x22,0x02,0x1d,0x03,0x07,0x01,
- 0x89,0xe5,0xe6,0x3f,0x08,0xe5,0x05,0x2a,0x17,0x11,0x18,0xe5,0x01,0xe5,0x68,0x03,
- 0x10,0x09,0x09,0x09,0x09,0x09,0x07,0x01,0x09,0x09,0x04,0x04,0x09,0x09,0x09,0x09,
- 0x0b,0x09,0x09,0x09,0x07,0x01,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,
- 0x01,0x01,0x3f,0x01,0xe5,0x0d,0x0b,0x01,0xe5,0x02,0x02,0x1d,0x09,0x02,0x08,0x21,
- 0x0f,0x02,0x1a,0x01,0xe5,0x3f,0xe5,0xe5,0x10,0x2d,0x1e,0x26,0x09,0x06,0x37,0x60,
- 0x01,0xe5,0x67,0x26,0x0c,0x30,0x1e,0x43,0xe6,0x05,0x54,0x0f,0x2a,0x08,0xe5,0x0b,
- 0x80,0x02,0xe5,0xd0,0x60,0x56,0x09,0x8a,0x01,0x40,0xe5,0x01,0x6e,0x1a,0x61,0x01,
- 0x40,0xe8,0x05,0x85,0xa1,0xe5,0x01,0x61,0x38,0x14,0x09,0x01,0x0e,0x63,0xe6,0xe5,
- 0x10,0x3f,0x5f,0x7c,0x02,0xe5,0x8e,0xe6,0x9f,0x91,0x9d,0x02,0x88,0x0c,0x98,0x03,
- 0x63,0x3f,0x05,0x07,0x7c,0xe8,0xaa,0x05,0x40,0x3b,0x01,0x01,0xe6,0x06,0xe5,0x65,
- 0x16,0x03,0xe5,0x04,0x1f,0xe5,0x07,0x0f,0x5e,0xe5,0x03,0x02,0x01,0x04,0xe5,0x65,
- 0x20,0x20,0x09,0x0f,0x5b,0x01,0x06,0x04,0x6c,0x30,0xe5,0xe5,0xe5,0x08,0x04,0x01,
- 0xe5,0x12,0x5b,0x04,0xe5,0xe6,0x01,0x6e,0x30,0x02,0x01,0x03,0xe5,0x01,0x09,0x13,
- 0x5d,0x02,0xe8,0x70,0x22,0x0e,0x10,0x09,0x0e,0x61,0xe5,0xe5,0x01,0x6e,0x03,0x33,
- 0x05,0x04,0x03,0x05,0x0e,0x03,0x59,0x02,0x01,0xe7,0x6f,0x1a,0x01,0x04,0x11,0x01,
- 0x09,0x04,0xe5,0x02,0x11,0x5f,0x01,0xe5,0xe5,0x70,0x22,0x01,0x01,0x0c,0x01,0x0c,
- 0xe7,0x02,0x02,0x0e,0x63,0xe5,0x91,0x1f,0x02,0x02,0x75,0xe5,0xe6,0x10,0x80,0xe5,
- 0x1e,0x02,0x78,0xe5,0xe6,0x08,0x01,0x02,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x02,0x06,0x09,0x09,0xe6,0x08,0x09,0x09,0x01,0x01,0x05,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0xe5,0xe5,0xe5,0x01,0x09,0xa1,0x09,0x72,
- 0x03,0x02,0x0b,0x05,0x9b,0x07,0x7a,0x01,0x92,0xe6,0x16,0x05,0xe6,0x08,0x6d,0x02,
- 0xe7,0xe5,0x03,0x0a,0x81,0x1b,0x01,0x01,0x02,0x06,0x73,0xe5,0x92,0x01,0x1b,0x01,
- 0x01,0x78,0xe5,0x01,0x01,0x04,0x0e,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x09,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe8,
- 0x08,0x05,0xa1,0x09,0x74,0x01,0x0d,0xa1,0x09,0x74,0xe5,0x01,0x0f,0x8a,0x16,0x09,
- 0x73,0xe5,0xe5,0x0c,0x04,0x81,0x1a,0x04,0x04,0x04,0x6f,0xe5,0xe6,0x70,0x01,0xe5,
- 0x39,0x02,0x06,0x02,0x0d,0x02,0xe5,0xe5,0x5c,0xe5,0xe6,0xe5,0x0e,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x03,0x03,0x01,0x07,0x01,0x07,0x01,0xe6,0x04,0x01,0x01,0x02,0x04,0x01,0x01,0x05,
- 0x01,0x04,0x02,0x01,0x01,0x02,0x02,0x01,0x07,0x01,0x03,0x03,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x08,0x01,0x03,
- 0x7a,0x08,0x2b,0x01,0xe5,0x05,0x01,0xe5,0x71,0x01,0xe6,0x88,0x0d,0x17,0xe5,0x04,
- 0x02,0xe5,0x70,0xe6,0xe6,0x83,0x04,0x0f,0x1e,0x75,0x03,0x0f,0x5e,0x1d,0x0b,0x01,
- 0x04,0x0f,0x01,0x05,0x77,0xe7,0x0c,0x80,0x0a,0x15,0x02,0xe5,0x7a,0x02,0x7d,0x04,
- 0x04,0x08,0xe5,0x06,0x05,0xe5,0x0e,0xe5,0x16,0x64,0x01,0x01,0x82,0x02,0xe5,0xe5,
- 0x05,0x09,0x15,0x09,0x04,0x08,0x04,0x62,0xe5,0xe5,0x6e,0x0e,0x08,0x09,0x07,0x15,
- 0x0b,0x72,0xe6,0xe5,0x6e,0x1a,0x03,0x0a,0xe5,0x16,0x05,0x75,0xe5,0xe6,0x77,0x1d,
- 0x01,0xe5,0x0f,0x83,0x02,0xe5,0x7c,0xe5,0xe5,0x09,0x05,0x1d,0x01,0x7d,0xe8,0x7a,
- 0x07,0x02,0x0a,0x0c,0x11,0x06,0x02,0x0d,0x63,0xe6,0x01,0x11,0x5c,0x18,0x07,0x20,
- 0x02,0x07,0x73,0xe9,0x72,0x09,0x02,0xe5,0x04,0xe5,0x03,0x0b,0x13,0x09,0x72,0xe8,
- 0xe5,0x01,0x01,0x6d,0xe5,0xe5,0x08,0x02,0xe5,0xe5,0x02,0x05,0xe5,0x02,0x06,0x1d,
- 0xe5,0x6d,0x01,0x02,0xe6,0xe5,0x03,0x69,0xe5,0xe5,0xe5,0x17,0xe5,0xe5,0xe5,0x03,
- 0x01,0x02,0x01,0x0e,0xe5,0x07,0xe5,0xe5,0x6e,0x04,0xe8,0x01,0x6a,0xe5,0x01,0x01,
- 0x0d,0xe5,0x01,0x06,0x02,0x01,0x04,0xe5,0x02,0x01,0x0e,0x09,0x02,0x71,0x02,0x03,
- 0x73,0x02,0x04,0x0e,0x02,0x01,0x01,0xe5,0x02,0x01,0x02,0x11,0x04,0x04,0xe6,0x05,
- 0x01,0x6c,0x02,0x02,0x70,0x02,0x04,0x09,0x03,0x05,0x01,0xe5,0x01,0x02,0x02,0x03,
- 0x17,0x01,0x03,0x02,0x01,0x68,0x02,0xe5,0xe7,0x6f,0x01,0x07,0x09,0x01,0x02,0x04,
- 0x01,0x09,0x01,0x1b,0x73,0x04,0x71,0x01,0x02,0x04,0x04,0x04,0x01,0x01,0xe5,0x03,
- 0x01,0xe5,0x07,0x01,0x1b,0x75,0xe7,0x80,0x02,0x03,0x09,0x02,0x02,0x08,0x02,0x1a,
- 0xe5,0x6e,0xe6,0x75,0x01,0x06,0x02,0xe5,0x03,0xe5,0x01,0xe5,0x07,0x0b,0x13,0x09,
- 0x6d,0x01,0xe7,0x0d,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x03,0x02,
- 0x02,0x09,0xe5,0x04,0x02,0xe5,0x01,0x02,0x04,0x05,0x03,0x09,0x05,0x03,0x02,0xe5,
- 0x04,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0xe5,0x01,0xe5,0x01,0x6d,
- 0x04,0x03,0xe5,0x08,0x06,0x0b,0x20,0x72,0x02,0xe8,0x6c,0x0b,0x08,0x06,0x2d,0x77,
- 0x02,0x01,0x71,0x02,0x04,0x01,0x02,0x01,0x02,0x01,0xe7,0x03,0x01,0xe5,0x1e,0x79,
- 0x01,0x03,0x71,0x03,0x05,0x01,0x01,0x01,0x03,0x01,0xe6,0x04,0x01,0x06,0x05,0x19,
- 0x03,0x71,0xe6,0xe5,0x72,0x03,0x05,0x03,0x03,0x01,0x03,0x03,0x01,0x1f,0x7d,0xe5,
- 0xe5,0x14,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe6,0xe5,0x04,0xe6,0xe6,0x03,0xe6,0xe5,0x04,0xe5,
- 0x09,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe8,0x70,
- 0x01,0x09,0x07,0x01,0xe5,0x05,0x01,0x0b,0x1b,0x01,0x74,0x01,0x71,0x01,0x07,0x01,
- 0x07,0x02,0x06,0x01,0x09,0x1d,0x75,0x01,0xe5,0x7c,0x09,0x09,0x08,0x93,0x03,0x76,
- 0x04,0x01,0x02,0x04,0x04,0x04,0x01,0xa0,0x71,0x09,0x02,0x06,0x02,0x06,0xe5,0xe5,
- 0x07,0x17,0x05,0x01,0xe5,0x71,0x02,0x01,0x0f,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0x04,
- 0x02,0x01,0x04,0x02,0x01,0x01,0x01,0x03,0x01,0x02,0x01,0x01,0x02,0x01,0x07,0x01,
- 0x07,0x01,0x02,0x01,0x02,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x08,0x03,0xe6,0x72,0x01,0x05,
- 0x01,0xe5,0x02,0x02,0x01,0xe5,0xa7,0xe6,0x5a,0x08,0x07,0x0b,0x01,0x06,0xe5,0xe5,
- 0xe5,0xe5,0x03,0x13,0x10,0xe5,0x01,0x75,0xe9,0x6d,0x03,0x0a,0x10,0x0a,0x94,0xe5,
- 0xe6,0x70,0x04,0x04,0x01,0xe5,0x05,0x01,0x04,0x02,0x01,0x04,0x01,0x02,0x13,0x08,
- 0xe5,0x74,0x02,0x73,0x04,0x01,0xe5,0xe5,0x09,0x04,0x03,0x07,0x03,0x13,0x0a,0x73,
- 0x01,0x41,0x26,0xe5,0x12,0x04,0x02,0x01,0x07,0x01,0x07,0x1a,0x05,0xe5,0x02,0x6e,
- 0x01,0xe6,0x2f,0x0e,0xe5,0x20,0x04,0x01,0x0c,0x04,0x01,0x04,0x12,0x03,0x13,0x04,
- 0x7b,0x03,0x41,0x29,0x12,0xe5,0x07,0x09,0x03,0x02,0x0a,0x8b,0xe6,0x4d,0x23,0x0f,
- 0x01,0x0a,0xe6,0x02,0x02,0xe5,0x93,0x02,0xe5,0x3a,0x33,0x03,0x19,0x03,0x07,0x19,
- 0x7b,0x02,0x45,0x05,0x1d,0x0a,0x09,0x13,0x1e,0x04,0xe5,0xe5,0xe5,0x08,0x68,0xe6,
- 0xe6,0x3d,0x01,0x02,0x05,0xe5,0x21,0x07,0x07,0x04,0x05,0x10,0x16,0x01,0x07,0x09,
- 0x67,0x02,0xe6,0x43,0x06,0x1a,0xe5,0x16,0xe5,0x07,0x25,0x01,0x08,0x04,0x03,0x01,
- 0x6b,0xe7,0x32,0x06,0x01,0x2c,0x02,0x01,0x04,0x0f,0x0d,0x1b,0x03,0x05,0x0d,0x64,
- 0xe6,0xe7,0x01,0x01,0x31,0xe5,0x02,0xe5,0x02,0xe5,0x21,0x01,0x1e,0x0c,0x0a,0x11,
- 0x03,0x07,0x0b,0x61,0x01,0x04,0xe6,0x03,0x32,0x02,0x06,0x02,0x1f,0x01,0xe5,0x02,
- 0x09,0x01,0xe5,0x03,0x07,0x29,0x06,0x01,0x05,0x6a,0x05,0x01,0xe5,0x01,0x2f,0xe5,
- 0xe5,0xe5,0x08,0x25,0x13,0x06,0xe5,0xe5,0x0f,0xe5,0x16,0x7b,0x03,0x02,0x35,0x01,
- 0x04,0x01,0x09,0x1e,0x01,0x02,0x09,0x0a,0x02,0xe5,0xe5,0x26,0x09,0x06,0x01,0x6c,
- 0xe7,0x01,0x34,0x01,0x04,0xe5,0xe5,0xe5,0x02,0x1f,0x01,0x02,0x15,0x01,0xe5,0xe5,
- 0xe5,0x06,0x04,0x01,0x04,0x01,0x04,0x0a,0x03,0x05,0x01,0x01,0x02,0x01,0x68,0x04,
- 0xe7,0x35,0x05,0x29,0x13,0x01,0x04,0x02,0x06,0x16,0x0b,0x7d,0xe5,0xe7,0x34,0x01,
- 0x07,0x01,0x25,0x04,0x08,0xe5,0x03,0x04,0xe7,0xe5,0x05,0xe6,0x01,0x02,0x1a,0x04,
- 0x79,0xe5,0x01,0x45,0x09,0x02,0x21,0x0c,0x02,0x06,0x02,0x06,0x0b,0x02,0x10,0x02,
- 0x06,0x02,0x6c,0xe7,0x3b,0xe5,0x07,0x01,0x07,0xe5,0x19,0x07,0xe6,0x07,0x02,0x09,
- 0x06,0x04,0x09,0xe5,0x11,0xe5,0x07,0x6e,0xe8,0x0d,0x09,0x09,0x09,0x09,0x06,0x02,
- 0x05,0xe5,0x01,0x09,0x09,0x09,0x09,0xe5,0x07,0x03,0xe5,0xe5,0x01,0x03,0x02,0x02,
- 0x04,0x01,0x04,0x02,0x06,0x09,0x09,0x03,0x05,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x0d,0xe9,0x01,0x38,0x02,0x06,0x02,0x1d,0x04,0x09,0x0e,0x06,0x02,0x09,
- 0x1f,0x72,0x03,0x02,0x3d,0x07,0x1d,0x11,0x0b,0x0a,0x08,0x1f,0x78,0xe5,0xe6,0xe5,
- 0x32,0x01,0x07,0x09,0x01,0x1d,0x02,0x01,0x05,0xe6,0x03,0x01,0x02,0x03,0x02,0x09,
- 0x02,0x26,0x07,0x04,0x63,0x04,0xe5,0x34,0x01,0xe5,0x07,0xe5,0x05,0x01,0xe5,0x19,
- 0x01,0x01,0x09,0x05,0x01,0x01,0x01,0xe5,0x04,0x03,0x02,0x03,0x01,0x08,0x14,0x05,
- 0x01,0xe5,0x02,0x02,0x03,0x69,0xe5,0x34,0x01,0x07,0x08,0xe5,0x1e,0x0a,0x0d,0x04,
- 0x10,0x04,0x11,0x0b,0x07,0x6a,0xe5,0x01,0x15,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,
- 0xe5,0x04,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x07,0xe5,0x07,0xe6,0x06,0xe6,0x06,0xe6,
- 0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x06,0xe8,0x3e,0x09,0x01,0x28,0x10,0x01,0xe6,0x06,0x29,0x07,
- 0x6b,0x01,0xe5,0x40,0x07,0x01,0x1d,0x1b,0x01,0x07,0x29,0x01,0x07,0x6e,0x35,0x01,
- 0x07,0x0b,0x28,0x12,0x12,0x14,0x0b,0x07,0x6a,0x02,0xe5,0x34,0x01,0x09,0xe5,0x07,
- 0x1d,0x02,0x09,0x09,0x07,0x0b,0x1a,0x04,0x04,0x01,0x07,0x04,0x65,0x01,0xe6,0x35,
- 0x01,0x06,0xe5,0xe5,0x31,0x05,0x02,0x01,0x04,0xe5,0xe5,0x08,0x08,0x14,0x01,0x01,
- 0x04,0x02,0x71,0xe6,0xe5,0xe5,0x0e,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x04,0x02,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x01,0x03,
- 0x01,0x02,0xe5,0x02,0x01,0x07,0x01,0xe5,0x02,0x04,0x01,0xe5,0x05,0x01,0x01,0x05,
- 0x01,0x04,0x02,0xe6,0xe5,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x08,0x01,0xe5,0x01,0x3b,0x09,0x1f,
- 0x05,0x07,0xe5,0x05,0x03,0x0f,0x06,0x01,0x03,0x0d,0x06,0xe5,0x04,0xe5,0x0a,0xe5,
- 0x66,0x01,0xe7,0x27,0x0e,0x03,0x26,0x0a,0x03,0x19,0x09,0x0c,0x0c,0xe5,0x0a,0x06,
- 0x0f,0x58,0x01,0xe7,0x44,0x0c,0x04,0x16,0x03,0x05,0x20,0x05,0x24,0x6a,0x01,0xe5,
- 0x34,0xe6,0x08,0x01,0x23,0x01,0xe5,0x04,0x04,0x05,0x01,0x07,0x06,0x0e,0x01,0x1b,
- 0x02,0x04,0x6d,0x02,0x32,0x02,0x0a,0x07,0x1c,0x03,0x0f,0x03,0x03,0xe5,0x04,0x10,
- 0x04,0x19,0x03,0x02,0x6e,0x03,0x3a,0x06,0x08,0xe5,0x08,0x08,0xe5,0x04,0x01,0x06,
- 0x0c,0x01,0x19,0x01,0x01,0x04,0x19,0xe5,0x09,0x12,0x02,0x52,0xe5,0xe5,0x26,0x0d,
- 0x01,0x07,0x02,0xe5,0x04,0x09,0x01,0x07,0x01,0x0c,0x09,0x04,0xe5,0x07,0x01,0x0c,
- 0x04,0xe5,0x0c,0x06,0x01,0x07,0x1d,0xe5,0x55,0x01,0xe5,0x28,0x17,0xe5,0x05,0x04,
- 0x07,0x26,0x18,0x02,0x0f,0x0f,0x1f,0x54,0xe6,0xe5,0x27,0x12,0x35,0xe5,0x07,0xe5,
- 0x03,0x02,0xe7,0x05,0xe6,0x03,0x03,0x0b,0xe5,0x11,0xe5,0x20,0x51,0x01,0x01,0x39,
- 0x09,0x20,0x08,0x05,0x09,0x09,0x09,0x06,0xe5,0x04,0x07,0x04,0x0b,0xe6,0x72,0xe5,
- 0x01,0x30,0x06,0x13,0x05,0x01,0x01,0x0a,0x09,0x07,0xe5,0x02,0x03,0xe6,0x03,0x0d,
- 0x0c,0x02,0x05,0xe5,0x08,0x01,0x23,0x01,0x54,0x03,0xe5,0x2d,0x06,0xe5,0x01,0x04,
- 0x01,0xe5,0x01,0x05,0x09,0x04,0x01,0x02,0x1d,0x01,0x07,0x22,0x06,0x09,0x1d,0x53,
- 0xe5,0xe5,0xe5,0x35,0x12,0x01,0x09,0x09,0x11,0x0b,0x01,0x06,0x13,0xe5,0x08,0x09,
- 0x01,0x03,0x05,0x06,0x16,0x02,0x54,0xe7,0x32,0x09,0x09,0x10,0xe5,0x04,0x02,0xe5,
- 0xe5,0x05,0xe5,0x04,0x02,0x01,0xe5,0x02,0xe5,0x03,0x05,0xe5,0x05,0x0a,0xe8,0x05,
- 0x09,0x09,0x02,0xe5,0x04,0x64,0xe6,0x01,0xe5,0x01,0x01,0x30,0x09,0x06,0x01,0xe6,
- 0x11,0x06,0x01,0xe5,0x03,0x01,0x01,0x01,0x01,0x02,0xe5,0x01,0xe5,0xe5,0x06,0x04,
- 0xe5,0x04,0x0c,0x02,0x01,0x03,0x06,0x03,0x08,0x03,0xe5,0x16,0x4f,0x01,0x02,0xe5,
- 0xe6,0x03,0x23,0x01,0x0a,0x02,0x06,0x09,0x01,0x07,0x0d,0x05,0x0b,0x07,0x01,0x03,
- 0xe5,0x1c,0x01,0xe5,0x05,0x01,0x01,0xe5,0x04,0xe5,0x03,0x02,0x08,0x14,0x4c,0x04,
- 0xe8,0x01,0x2e,0xe5,0x01,0xe5,0x07,0x09,0x01,0x04,0x02,0x09,0x09,0x10,0x02,0x01,
- 0x24,0xe5,0xe5,0x08,0x05,0xe5,0x01,0x1f,0x51,0x06,0x35,0x02,0xe5,0x04,0x01,0x06,
- 0xe5,0xe5,0x02,0x01,0xe6,0xe5,0x06,0x04,0x04,0x04,0x09,0x02,0x01,0x01,0x02,0x01,
- 0x01,0xe5,0xe5,0x01,0x01,0x01,0x05,0x15,0x03,0xe5,0x04,0x02,0xe5,0x03,0x01,0x01,
- 0x05,0x17,0x4e,0x01,0xe5,0x01,0x2c,0x05,0x02,0xe5,0x06,0x01,0x03,0x01,0x01,0x07,
- 0x01,0x01,0x05,0x01,0x02,0xe5,0x01,0xe5,0x02,0x09,0x01,0x02,0xe5,0xe5,0xe5,0x03,
- 0x05,0x03,0x0e,0x01,0x02,0x01,0x04,0x02,0xe7,0x07,0xe5,0x02,0x04,0x16,0x01,0x01,
- 0x01,0xe5,0x49,0x02,0x03,0xe5,0x35,0x04,0x01,0xe5,0xe5,0x06,0x01,0x09,0x07,0x09,
- 0x03,0x02,0x01,0x04,0x01,0xe5,0x01,0x01,0x01,0x03,0x01,0x01,0x02,0x02,0x05,0x01,
- 0xe5,0x17,0x07,0x01,0x01,0x01,0xe5,0x01,0x05,0x0c,0x02,0x50,0x04,0xe6,0xe6,0x2a,
- 0x0b,0x04,0x01,0x02,0x07,0x01,0x09,0x07,0x01,0x02,0x04,0x04,0x09,0x01,0x01,0xe5,
- 0xe5,0x01,0x04,0x01,0x02,0x01,0x01,0x05,0x01,0x01,0x04,0x0b,0xe5,0x03,0x09,0x04,
- 0x09,0x01,0x01,0x08,0x03,0x54,0x01,0x01,0x31,0x02,0x03,0x02,0x02,0x06,0x09,0xe5,
- 0x18,0x09,0x02,0x02,0x03,0x0c,0x06,0x0e,0x02,0x03,0x02,0x1a,0x16,0x52,0xe6,0x31,
- 0x09,0xe5,0x07,0x01,0x04,0x02,0x09,0xe5,0x05,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x0d,
- 0x03,0xe5,0x0d,0x05,0xe6,0xe5,0xe5,0x03,0x02,0xe5,0x07,0x05,0xe5,0x01,0x15,0x4f,
- 0x01,0xe5,0x0d,0x09,0x09,0x09,0x02,0x02,0x03,0x02,0x06,0x04,0xe6,0x01,0xe6,0xe6,
- 0xe5,0x01,0x09,0x09,0xe6,0x06,0xe6,0x03,0x02,0xe6,0x06,0x09,0xe6,0x08,0x03,0x05,
- 0xe5,0x01,0x02,0x02,0x09,0x05,0x03,0xe6,0xe6,0xe5,0x01,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x04,0x01,0x06,0x01,0x02,0x02,0x31,0x09,0x09,0x09,0x09,0x04,0x09,
- 0x0b,0x02,0x09,0x24,0x03,0xe5,0x1c,0x09,0x4f,0x04,0x03,0xe5,0xe5,0x31,0x08,0x0b,
- 0x07,0x0a,0x1d,0x08,0x27,0x03,0x1c,0x08,0x50,0x0a,0x01,0xe5,0xe5,0x28,0x01,0x07,
- 0x02,0x06,0x01,0x09,0x01,0x05,0x01,0x09,0x02,0x07,0x01,0x07,0xe6,0x05,0xe5,0xe5,
- 0x02,0xe5,0xe5,0x05,0xe5,0x01,0xe6,0x07,0x04,0x05,0x01,0x04,0x01,0x02,0x04,0x01,
- 0x07,0x01,0xe7,0x03,0x04,0x04,0x01,0x52,0x01,0xe8,0x2a,0x01,0xe5,0x05,0x01,0x0a,
- 0x06,0x01,0xe6,0x04,0x01,0xe5,0x07,0x01,0x09,0x08,0xe5,0x01,0x01,0xe5,0x01,0xe5,
- 0x04,0x01,0xe6,0x01,0x04,0xe6,0x03,0x04,0xe5,0x02,0x05,0xe5,0x04,0x01,0xe6,0xe5,
- 0x01,0xe5,0xe7,0x04,0x01,0xe6,0x06,0x01,0x04,0xe5,0xe6,0x52,0x03,0x35,0x01,0x0e,
- 0x01,0x02,0x07,0x01,0x09,0x04,0x0c,0x03,0x07,0x03,0x05,0x07,0x08,0x02,0x01,0x0e,
- 0x04,0x10,0x04,0x01,0x03,0x0b,0x54,0xe5,0x01,0x15,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe6,0xe5,0x04,0xe5,0x07,0xe6,0x01,0x04,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x06,
- 0xe7,0x05,0xe7,0x04,0xe8,0xe5,0x02,0xe7,0x01,0xe5,0x02,0xe6,0x01,0x01,0x05,0xe5,
- 0x07,0xe6,0x06,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe5,0x01,
- 0x37,0x07,0x01,0x09,0x09,0x09,0x0e,0x0e,0x07,0x01,0xe5,0x05,0x01,0xe6,0x08,0x11,
- 0x01,0x07,0x01,0xe5,0x05,0x01,0xe5,0x05,0x09,0x01,0x54,0xe8,0x4a,0x07,0x01,0x07,
- 0x12,0x07,0x01,0xe5,0xe5,0x02,0x02,0xe5,0xe6,0x01,0x02,0xe5,0xe5,0x05,0x04,0x07,
- 0x09,0x01,0x07,0x01,0x07,0x01,0x09,0x07,0x01,0x54,0x01,0x01,0x3f,0x15,0x09,0x0f,
- 0x0d,0x04,0xe5,0x02,0x04,0xe5,0xe5,0xe5,0x03,0x03,0xe5,0xe5,0x12,0x0a,0x09,0x06,
- 0x61,0xe7,0x40,0x0c,0x04,0x09,0x04,0x09,0xe5,0xe6,0x04,0x01,0x01,0xe5,0xe5,0x01,
- 0xe5,0xe6,0x01,0xe5,0xea,0xe5,0x01,0x03,0x02,0x01,0x0c,0x04,0x01,0x02,0x09,0x09,
- 0x06,0x02,0x06,0x55,0x01,0xe5,0x2a,0x01,0xe5,0x03,0x01,0x09,0xe5,0xe5,0x05,0x02,
- 0x06,0x09,0xe5,0xe5,0x05,0x01,0xe6,0x04,0x02,0x06,0x09,0x03,0x14,0x06,0xe5,0xe5,
- 0x08,0xe5,0x06,0xe5,0x19,0x02,0x52,0xe6,0x01,0x01,0x0f,0x01,0x07,0x01,0x07,0x01,
- 0x04,0x02,0x01,0xe5,0x05,0x01,0xe5,0x02,0x02,0x01,0x02,0xe5,0x02,0x01,0x04,0x02,
- 0x01,0x03,0x03,0x01,0x04,0x02,0x01,0x03,0x03,0x01,0x02,0x04,0x01,0x06,0xe5,0xe5,
- 0x01,0x04,0x01,0x04,0x04,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0xe6,0x03,0x02,0xe6,0x06,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x0a,0x01,0x01,0x32,0x03,0xe6,0x02,0x0c,0x20,0x03,0x02,0x0a,0x07,0x01,
- 0x11,0x02,0x01,0xe5,0x07,0xe5,0x02,0x02,0x01,0xe5,0xe5,0x06,0x02,0x05,0xe6,0x08,
- 0x05,0x57,0x02,0xe5,0x27,0x09,0x01,0x0e,0xe5,0xe5,0x07,0x01,0x09,0x07,0x01,0x01,
- 0x15,0x03,0x05,0x02,0x01,0x0c,0xe5,0x0a,0x01,0x01,0xe5,0x01,0x01,0x02,0x03,0x01,
- 0x04,0xe7,0xe6,0x66,0x01,0xe5,0xe5,0x36,0xe5,0x1e,0x02,0x0a,0x09,0x09,0x03,0x01,
- 0x14,0x03,0x03,0xe5,0x05,0x06,0x11,0x0c,0x62,0xe6,0xe5,0x04,0x22,0x02,0x04,0x04,
- 0x01,0x02,0x06,0x09,0x05,0x01,0x06,0x02,0x13,0xe5,0x09,0x07,0x01,0x01,0x05,0x01,
- 0x13,0xe7,0x07,0x09,0x05,0x14,0xe7,0x02,0x4f,0x02,0x01,0x05,0x28,0x09,0x02,0x04,
- 0x05,0xe5,0x09,0x02,0x09,0x1b,0x05,0xe5,0x02,0x01,0x03,0x05,0x02,0xe5,0x01,0x0c,
- 0x08,0x06,0x02,0x1e,0x55,0x01,0x01,0x2c,0xe5,0x06,0x13,0x05,0x0e,0xe5,0x02,0x12,
- 0x10,0x01,0x05,0xe6,0x06,0x05,0x11,0xe5,0xe5,0x04,0xe5,0x1c,0x53,0x01,0xe5,0xe5,
- 0x04,0x2a,0x04,0x01,0x07,0x02,0x04,0x01,0x07,0x01,0x01,0x07,0x02,0x0c,0x0b,0x01,
- 0x01,0xe5,0x05,0x02,0x06,0x01,0xe6,0x04,0x04,0x09,0x02,0x03,0x09,0x01,0x19,0x01,
- 0xe5,0x54,0xe5,0xe6,0x2e,0x11,0x05,0x01,0x15,0x27,0xe5,0x0f,0x0f,0x05,0x02,0x26,
- 0x04,0x4f,0x02,0xe5,0x2d,0xe5,0x08,0xe6,0x05,0xe5,0x30,0xe5,0x09,0x03,0x01,0x03,
- 0xe5,0x08,0x02,0x07,0x03,0xe6,0x06,0xe6,0xe6,0x08,0x03,0xe7,0x10,0xe5,0x54,0x02,
- 0xe5,0x3a,0x1b,0x1f,0x08,0x18,0x0e,0x03,0x05,0x13,0x10,0xe5,0x55,0xe7,0x33,0x02,
- 0x09,0x02,0xe5,0x0a,0x03,0x0a,0x19,0x0a,0x01,0x03,0x16,0xe5,0x02,0x04,0x04,0x09,
- 0x0a,0x0d,0x02,0x01,0x53,0xe5,0x02,0xe5,0x29,0x01,0x09,0x09,0x07,0x01,0x09,0x06,
- 0x02,0xe5,0x12,0x10,0x01,0x02,0x04,0x01,0xe6,0x01,0x10,0x09,0xe5,0x01,0x02,0xe5,
- 0xe5,0x1c,0x01,0x54,0x01,0x35,0x01,0x07,0xe5,0x11,0x01,0x09,0x15,0x09,0x04,0x20,
- 0xe5,0x07,0xe5,0x07,0x08,0x0e,0x01,0x05,0x55,0xe9,0x2f,0xe5,0x0a,0x1a,0xe5,0x04,
- 0x09,0x02,0x01,0x04,0x05,0x09,0x23,0x05,0x02,0xe5,0x04,0x05,0xe5,0x05,0x0c,0x01,
- 0x04,0x50,0xe6,0x01,0xe5,0x01,0x01,0x30,0xe5,0x02,0x04,0x01,0x18,0xe5,0xe5,0x04,
- 0xe5,0x05,0x0f,0xe5,0x07,0x22,0x06,0xe5,0xe5,0x05,0xe5,0x03,0xe5,0x04,0x0c,0xe5,
- 0x04,0x4e,0x01,0x02,0xe8,0x03,0x2d,0xe5,0x02,0x03,0xe5,0x08,0xe5,0x06,0xe5,0x06,
- 0x08,0x13,0x05,0x01,0x02,0x04,0x04,0x01,0xe5,0x20,0x06,0xe5,0xe5,0xe5,0x17,0x01,
- 0x02,0x4f,0x06,0x01,0x02,0x2e,0xe5,0x01,0x05,0xe5,0x01,0x06,0xe5,0x06,0xe5,0x0b,
- 0x1a,0x02,0x01,0x07,0x06,0x1e,0xe5,0x01,0x05,0xe5,0x01,0x01,0x18,0x02,0x53,0x03,
- 0xe5,0xe5,0x2a,0x01,0x02,0x06,0x24,0xe5,0x03,0x09,0x09,0x02,0x01,0x01,0xe5,0x04,
- 0xe5,0xe5,0x01,0x01,0xe6,0x01,0x04,0x01,0x0c,0x09,0x02,0x03,0x01,0xe5,0xe6,0x0a,
- 0x0c,0x01,0x08,0x47,0x08,0xe5,0x01,0x02,0x25,0x04,0xe5,0x01,0xe5,0x02,0x01,0x02,
- 0x04,0x02,0x01,0x04,0x01,0x02,0x04,0x02,0xe7,0xe5,0x01,0x03,0x14,0x01,0xe5,0x01,
- 0x01,0xe6,0x02,0x09,0x04,0x0c,0x09,0x02,0x06,0x01,0xe5,0x01,0x02,0x14,0x03,0x03,
- 0xe5,0x49,0x04,0x01,0xe5,0x29,0x01,0x02,0x04,0x01,0x25,0x07,0x05,0x01,0xe5,0x07,
- 0xe5,0x01,0x01,0x07,0x01,0x07,0x01,0x05,0x0d,0x09,0x09,0x01,0x1b,0x01,0x05,0x48,
- 0x04,0xe6,0xe6,0x2a,0x04,0x01,0x01,0x14,0x09,0x09,0x01,0x02,0x09,0x01,0x01,0x04,
- 0xe5,0xe5,0xe6,0xe6,0x05,0x01,0x01,0xe5,0xe5,0x01,0x15,0x04,0x04,0x02,0x06,0x01,
- 0xe5,0x09,0xe5,0x0d,0x5a,0x05,0x2b,0x02,0x10,0xe5,0x1b,0x02,0x03,0x09,0x09,0x09,
- 0x04,0x07,0x02,0x19,0x09,0x02,0x02,0x03,0x6a,0xe5,0x3b,0xe5,0x23,0x01,0xe5,0x03,
- 0xe6,0x06,0xe6,0x10,0xe5,0x0b,0x12,0x09,0x0c,0x05,0xe5,0x12,0x02,0x4f,0xe9,0x0d,
- 0x09,0x09,0x09,0x09,0x06,0x02,0x02,0x06,0x02,0x01,0x01,0x02,0x09,0x09,0xe6,0x06,
- 0xe5,0x07,0xe5,0x04,0x02,0xe5,0x07,0x05,0x05,0x06,0x02,0x09,0xe6,0x03,0x02,0xe5,
- 0x01,0x05,0xe5,0x07,0x09,0x05,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x06,0x06,0x01,
- 0x01,0xe5,0x01,0x27,0x09,0x06,0x02,0x13,0x09,0x04,0x09,0x09,0x0b,0x0c,0x12,0x02,
- 0x09,0x06,0x02,0x09,0x13,0x4e,0xe5,0x03,0x02,0xe8,0x28,0x08,0x0a,0x11,0x0a,0x1a,
- 0x13,0x03,0x14,0x08,0x0b,0x08,0x06,0x0d,0x05,0x48,0x0c,0xe5,0xe5,0x25,0x07,0x10,
- 0x07,0x01,0x07,0x01,0x09,0x02,0x07,0xe6,0xe5,0x04,0xe6,0x03,0x01,0xe5,0x07,0xe5,
- 0xe5,0x03,0x12,0x02,0x04,0x07,0x01,0x04,0x01,0xe5,0x08,0x01,0x0e,0x01,0x02,0x4f,
- 0x05,0x02,0x28,0x01,0x01,0x05,0x02,0x09,0x08,0xe5,0x08,0x08,0x01,0x09,0x09,0x05,
- 0x01,0x07,0x01,0xe6,0x04,0x01,0xe5,0x0e,0x06,0x01,0x05,0x01,0x05,0x01,0x0a,0xe5,
- 0x0b,0x02,0x01,0xe6,0x52,0x02,0x49,0x01,0x06,0xe5,0xe5,0x08,0x0b,0x09,0x01,0x03,
- 0x01,0x04,0x04,0x06,0x16,0x13,0x01,0x07,0x10,0x02,0x01,0x57,0xe5,0x14,0xe5,0x07,
- 0xe5,0x07,0xe6,0xe5,0x04,0xe6,0x06,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe6,0x06,
- 0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0x06,0xe5,0x01,0x05,0xe5,0x09,0xe5,0x07,
- 0xe5,0x01,0x03,0x01,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x07,0xe6,0xe5,0x04,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0x03,
- 0x53,0x01,0x09,0x14,0x06,0x01,0x09,0xe5,0x07,0x27,0x01,0x07,0x01,0x6c,0xe5,0x02,
- 0x01,0x24,0x01,0x31,0x1b,0x01,0x07,0x01,0xe5,0x2b,0x01,0x01,0x01,0x07,0x01,0x11,
- 0x56,0xe5,0xe6,0x05,0x30,0x1b,0x01,0x09,0x14,0x12,0x07,0x01,0x08,0x20,0x07,0x6e,
- 0x01,0x01,0xe5,0x2a,0x07,0x24,0x04,0x09,0x09,0x0e,0x04,0x04,0x1a,0x09,0xe5,0x02,
- 0x01,0x09,0x02,0x13,0x4c,0x06,0xe7,0x02,0x26,0x02,0x06,0x02,0x08,0xe5,0x05,0xe5,
- 0xe5,0x05,0x01,0xe5,0x05,0x02,0x1a,0x02,0x06,0x02,0x06,0xe5,0xe6,0x10,0x0b,0xe5,
- 0x03,0x01,0x02,0x1a,0xe5,0xe5,0x51,0xe6,0xe6,0x02,0x0d,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x01,0x02,0x02,0x01,0x07,0x01,0x02,0xe5,0x02,0x01,0x02,0xe5,0x02,0x01,
- 0x01,0x05,0x01,0x07,0x01,0xe5,0x05,0x01,0x04,0x02,0x01,0x04,0x02,0xe6,0x02,0x03,
- 0x01,0x04,0x04,0x01,0x01,0x02,0x02,0x01,0xe5,0x05,0xe6,0xe5,0xe5,0x02,0xe6,0x06,
- 0x01,0x07,0x01,0x04,0x02,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x05,0xe5,0x02,0x01,0xe7,0x01,0x27,0xe5,0x06,0xe5,0x02,0x1f,
- 0x03,0xe5,0x09,0xe6,0x06,0xe5,0x03,0x01,0x04,0x03,0xe5,0x07,0x09,0x15,0x0a,0x1b,
- 0xe5,0x51,0x05,0xe5,0xe6,0x12,0x1c,0x07,0x13,0x0a,0x03,0x06,0x04,0x05,0x04,0x05,
- 0x44,0x17,0x56,0x01,0x02,0x28,0x11,0x03,0x09,0x1d,0x02,0x06,0xe5,0x02,0x01,0x08,
- 0x08,0x02,0x0c,0xe5,0x05,0x0a,0x09,0x01,0x09,0x04,0x13,0x52,0x03,0x2d,0x0a,0x08,
- 0x01,0x02,0x02,0x02,0x1f,0x01,0x0c,0xe7,0x02,0x05,0x08,0xe5,0x11,0x01,0x07,0x01,
- 0x01,0x05,0x01,0x07,0x69,0xe6,0xe6,0x3f,0x02,0x07,0x10,0x1d,0x01,0x06,0x07,0x04,
- 0x08,0x0e,0x09,0x09,0x08,0x04,0x63,0x01,0xe6,0x2a,0x01,0x0a,0x07,0xe5,0x27,0x05,
- 0x02,0x01,0x08,0x16,0xe5,0x01,0xe5,0x09,0x09,0xe6,0x06,0xe6,0x01,0x03,0x1a,0xe5,
- 0x4d,0xe9,0x3e,0x07,0x10,0x18,0x13,0x01,0xe5,0x04,0x0a,0x15,0x02,0x06,0x01,0x0d,
- 0x0d,0x57,0x02,0x2e,0xe5,0x03,0x0c,0x2f,0x02,0x01,0x1c,0x05,0x05,0x0a,0x01,0x02,
- 0x03,0x0a,0x03,0x16,0x04,0x06,0x48,0xe5,0x01,0x05,0x2f,0xe6,0x09,0x06,0xe6,0x16,
- 0x13,0x14,0x02,0x09,0xe5,0x08,0x09,0xe6,0xe5,0x01,0x02,0x04,0x0f,0x62,0x01,0x34,
- 0x03,0x01,0x08,0x08,0x21,0x0a,0x0f,0x05,0x05,0x01,0x01,0x15,0xe5,0x0e,0x06,0x05,
- 0x0d,0x53,0x02,0x2d,0xe5,0x01,0x03,0x01,0x03,0x05,0x01,0x01,0x26,0x0d,0x0c,0x13,
- 0x01,0x07,0x01,0xe5,0x0a,0x0a,0x0a,0xe5,0x0c,0x53,0xe6,0x01,0xe5,0x2b,0xe5,0x07,
- 0x08,0xe5,0x0c,0x37,0xe5,0x13,0x03,0x05,0x1e,0x02,0x05,0x08,0xe5,0x49,0x09,0xe6,
- 0xe5,0x04,0x25,0x01,0x08,0x0a,0x1f,0x14,0x0e,0x01,0x0d,0x07,0x08,0x0c,0x16,0x03,
- 0x07,0x01,0x57,0xe8,0x36,0x08,0xe5,0x08,0xe5,0x07,0x09,0xe5,0x07,0x09,0x05,0x06,
- 0xe5,0x04,0x09,0x01,0xe5,0x07,0x09,0x09,0x02,0xe5,0xe5,0x02,0xe5,0x03,0x0d,0x05,
- 0x0d,0x46,0xe5,0xe5,0xe6,0x01,0x01,0x2d,0xe5,0x0e,0x07,0x01,0x06,0x02,0x06,0x02,
- 0x06,0x02,0x07,0x01,0x05,0x04,0x01,0x01,0x01,0x08,0x02,0x02,0xe5,0x0a,0x01,0x0e,
- 0x02,0xe5,0xe6,0x01,0x05,0x0c,0x06,0xe5,0x0b,0x43,0x01,0x04,0x01,0x04,0x23,0x01,
- 0xe5,0xe5,0x0a,0x01,0xe5,0x01,0x02,0x0d,0x09,0x09,0x09,0xe5,0x02,0x07,0x05,0xe5,
- 0x01,0x01,0x01,0x02,0x01,0x02,0x0d,0x09,0x02,0xe5,0x02,0x04,0xe5,0xe5,0xe5,0x06,
- 0x10,0xe5,0x02,0x07,0x47,0x05,0xe7,0x01,0x25,0x02,0x14,0x01,0x08,0x04,0x01,0x02,
- 0x04,0x01,0x02,0x04,0x01,0x02,0x04,0xe5,0x0a,0x09,0x01,0x04,0xe5,0xe5,0xe5,0x19,
- 0x02,0x06,0x02,0x01,0x07,0x10,0xe5,0xe5,0x05,0x02,0x49,0x02,0xe5,0xe6,0x28,0x01,
- 0x01,0x02,0x0e,0x02,0x0b,0xe5,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0xe5,0x01,0x02,
- 0x02,0x01,0x01,0xe5,0x05,0x01,0xe5,0x08,0x01,0x03,0x02,0x09,0x07,0x0c,0x01,0x05,
- 0x01,0xe6,0xe5,0x01,0x04,0x15,0x05,0xe5,0x04,0x47,0xe8,0x01,0x28,0x04,0xe5,0x01,
- 0x0d,0xe5,0xe5,0x01,0x02,0x02,0x09,0x03,0x05,0x09,0x03,0x04,0x04,0xe5,0x02,0x05,
- 0x01,0x01,0x05,0x06,0xe6,0x15,0x03,0x02,0x01,0xe5,0xe5,0xe5,0x04,0x03,0x0f,0x03,
- 0x01,0x01,0xe5,0x04,0x45,0x03,0xe7,0x38,0x04,0x04,0x13,0x02,0x10,0x02,0x09,0x01,
- 0x04,0x04,0x01,0x03,0xe5,0x03,0x0f,0xe5,0x0b,0x01,0x07,0x01,0x01,0x05,0x15,0x09,
- 0x4b,0x02,0x30,0xe6,0x06,0x10,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x04,0x09,0x04,
- 0x01,0x02,0x01,0x04,0x01,0xe5,0xe5,0x01,0x0a,0xe5,0xe5,0xe5,0x04,0x04,0x04,0x04,
- 0x01,0x02,0x04,0x13,0x0b,0x02,0x47,0xe8,0x04,0xe5,0x01,0xe5,0x25,0x02,0x06,0x02,
- 0x03,0x02,0x03,0x09,0x05,0x03,0x05,0x03,0x05,0x09,0x0b,0x11,0x02,0x05,0x3e,0x50,
- 0x01,0xe6,0x04,0x04,0x31,0x09,0x01,0x10,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x03,0xe5,
- 0x05,0x09,0x02,0x06,0xe5,0x08,0xe6,0x11,0x0a,0x21,0x51,0xe5,0x07,0x05,0x09,0x09,
- 0x09,0x09,0x05,0xe5,0x01,0x03,0x05,0x07,0x01,0x07,0x01,0x07,0x01,0x06,0x02,0x09,
- 0x09,0x05,0xe5,0x01,0x0b,0xe5,0x04,0x02,0x06,0x02,0x06,0x02,0x02,0x06,0x09,0x09,
- 0x06,0x02,0x09,0x09,0x09,0x09,0x09,0x09,0x06,0x06,0x02,0x01,0x02,0x31,0x06,0x16,
- 0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x04,0xe5,0x08,0x09,0x08,0xe5,0x03,0x0b,
- 0x01,0x0b,0xe5,0x07,0x14,0x09,0x06,0x02,0x44,0x05,0x02,0x01,0x01,0x33,0x1c,0x05,
- 0x03,0x05,0x03,0x05,0x04,0x09,0x05,0x03,0x05,0x03,0x11,0x0d,0x05,0x17,0x07,0x0a,
- 0x50,0xe7,0x27,0x07,0x04,0x01,0x0a,0x15,0x09,0x09,0x09,0x01,0x04,0x02,0x03,0xe5,
- 0xe5,0x01,0x04,0x01,0x02,0x01,0x06,0xe7,0x0f,0x02,0x01,0x02,0x01,0x02,0x0b,0x02,
- 0x04,0x13,0x45,0x03,0xe6,0x2e,0x05,0x01,0x01,0x04,0xe5,0xe5,0x0a,0x09,0x09,0x09,
- 0x09,0x02,0x02,0x03,0x05,0x01,0xe6,0x04,0x01,0x01,0x01,0x07,0xe6,0x08,0x05,0x03,
- 0x02,0x02,0x01,0x01,0x0c,0x06,0x08,0x0a,0x49,0xe5,0xe6,0x26,0x0e,0x09,0x0d,0x03,
- 0x09,0x09,0x06,0x0e,0x04,0x02,0x01,0x03,0xe5,0x0a,0x04,0x01,0x11,0x03,0x03,0x01,
- 0x11,0x09,0x01,0x54,0xe5,0xe6,0x14,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,
- 0xe6,0x06,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x03,0xe6,0x08,0xe6,
- 0x06,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x03,0x05,0xe5,0x07,0xe6,0x06,0xe6,0xe5,0x04,
- 0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x0a,0x2b,0x01,0x09,0xe5,0x07,0x0a,0x06,0x09,0x09,
- 0x07,0x01,0x0b,0xe5,0x05,0x01,0xe6,0x06,0x0b,0xe5,0x05,0x01,0x0a,0x08,0x11,0x15,
- 0x4a,0x01,0xe6,0x2a,0x01,0x07,0x01,0xe5,0x05,0x0c,0x08,0x09,0x09,0x06,0x02,0x07,
- 0x01,0x07,0x01,0x07,0x0d,0xe5,0x12,0x06,0x07,0x1f,0x4e,0xe6,0x2c,0x09,0x09,0x2b,
- 0xe6,0x02,0x09,0xe5,0x07,0x09,0x08,0x02,0x07,0x01,0x13,0x11,0x15,0x4a,0xe8,0x2c,
- 0x02,0x06,0xe5,0xe5,0x03,0x0c,0x01,0x09,0x09,0x09,0xe6,0x01,0x04,0x04,0x01,0x02,
- 0x04,0x01,0x02,0x04,0x04,0x08,0x02,0x09,0x09,0x04,0x04,0xe5,0x11,0x0e,0x04,0x47,
- 0x01,0xe6,0x2a,0xe5,0xe5,0x12,0xe5,0x04,0x04,0x04,0x03,0x05,0x09,0x09,0x01,0xe5,
- 0x05,0x01,0xe6,0x04,0x09,0xe5,0xe5,0x1b,0x02,0x06,0x09,0xe5,0xe5,0x0f,0x02,0x06,
- 0x02,0x4a,0x02,0x11,0x01,0x07,0x01,0x07,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,
- 0x03,0x03,0x01,0x03,0x03,0x01,0x03,0x03,0x01,0x02,0xe5,0x02,0x01,0x03,0x03,0x01,
- 0x04,0x02,0xe7,0xe6,0x02,0x01,0x01,0x02,0x02,0x01,0xe5,0x02,0x04,0x01,0x06,0xe5,
- 0xe5,0x02,0x03,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x07,0x01,0x04,0x02,0x01,0x03,
- 0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0a,0xe6,
- 0xe5,0x2e,0x0f,0x02,0x05,0x02,0xe6,0x06,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0x06,0xe5,
- 0x07,0xe5,0x01,0x2d,0x01,0xe5,0x06,0xe6,0x06,0x12,0x09,0x01,0xe5,0x4c,0x01,0x30,
- 0x05,0x06,0x11,0x0a,0x1a,0x03,0x26,0x0c,0x01,0x07,0x21,0x06,0x4a,0x02,0xe7,0x45,
- 0x01,0x01,0x03,0x03,0x01,0x02,0x04,0x01,0x07,0x01,0x01,0x02,0x02,0x01,0x03,0x05,
- 0x02,0x0b,0x0c,0xe5,0x05,0x15,0x03,0x26,0x4c,0xe8,0x02,0x01,0x26,0x09,0x07,0x01,
- 0xe5,0x0e,0x02,0x05,0x01,0xe5,0x09,0x02,0x04,0x01,0x03,0x03,0x01,0x02,0x04,0x01,
- 0xe5,0x07,0xe5,0x11,0x09,0xe5,0x01,0x02,0x02,0x01,0x10,0x0d,0x03,0x02,0xe5,0x49,
- 0x01,0x01,0xe6,0x02,0x30,0x0b,0x0d,0x1f,0x03,0x0a,0x05,0xe5,0x01,0x02,0x04,0x02,
- 0x05,0x0e,0x13,0x02,0x1d,0x50,0x02,0xe6,0x02,0x01,0x24,0x0a,0xe5,0x06,0x13,0x0d,
- 0x01,0x03,0x09,0x04,0x04,0x0b,0x09,0x07,0x03,0x02,0x01,0x06,0x0b,0x01,0x01,0x1e,
- 0xe5,0x01,0x05,0xe5,0x48,0xe5,0xe5,0xe5,0x02,0x05,0x21,0x01,0xe5,0x05,0x02,0x0b,
- 0x11,0x06,0x01,0x2f,0xe5,0x01,0x05,0xe7,0x0c,0x04,0x11,0x13,0x01,0x02,0x05,0x42,
- 0x0a,0xe5,0x01,0xe5,0x35,0x1f,0x04,0x05,0x03,0x05,0x08,0x12,0xe5,0x04,0x04,0x04,
- 0x01,0x03,0x09,0x05,0x0d,0x03,0xe5,0x13,0x06,0x53,0xe5,0x3c,0xe7,0x10,0xe5,0x06,
- 0x09,0xe6,0x06,0xe6,0x03,0x0b,0x04,0x10,0x0b,0xe5,0x03,0x06,0x06,0xe6,0x06,0xe5,
- 0x07,0xe5,0x11,0x01,0x08,0x44,0xe5,0x30,0xe6,0x0c,0x10,0x03,0x12,0x07,0xe5,0x25,
- 0x05,0x08,0x12,0x0a,0x08,0x03,0x1a,0x3f,0x02,0xe5,0x4f,0x01,0x01,0xe5,0x06,0x01,
- 0x08,0x04,0xe5,0x06,0xe5,0x01,0x02,0x09,0xe5,0x03,0x01,0x01,0x09,0x01,0x08,0x03,
- 0x06,0x12,0x03,0x05,0x03,0x04,0x01,0x03,0x05,0x0e,0x3b,0x03,0x37,0x1a,0x01,0x01,
- 0xe5,0x02,0x03,0xe5,0x03,0x0f,0x0a,0xe5,0x03,0x2a,0xe5,0x01,0x02,0x20,0x02,0x05,
- 0xe6,0x03,0x44,0xe6,0xe5,0x2e,0x06,0x02,0x15,0x0e,0x0c,0x04,0x0a,0x03,0x01,0x2d,
- 0x01,0x1f,0xe5,0x05,0x09,0x02,0x15,0x32,0xe5,0xe7,0x2c,0xe5,0x28,0xe5,0xe5,0x01,
- 0xe5,0x08,0x05,0x03,0xe7,0x01,0x06,0xe5,0x04,0x05,0x06,0xe5,0x02,0x03,0x09,0x13,
- 0x02,0x01,0x04,0x02,0xe5,0x04,0x13,0x09,0x3c,0xe5,0xe8,0x01,0x01,0x2a,0x2a,0xe5,
- 0xe5,0x08,0xe5,0x01,0x05,0x02,0x02,0xe5,0x02,0xe5,0x02,0xe5,0x05,0xe5,0x03,0xe6,
- 0x03,0xe5,0x02,0x0d,0x05,0x0c,0x02,0xe5,0x08,0x01,0x11,0x01,0x03,0x09,0x3a,0x01,
- 0x03,0x01,0xe5,0x03,0x26,0x09,0x01,0x17,0xe5,0x01,0x01,0x09,0x01,0x07,0x07,0x05,
- 0xe5,0x01,0x01,0x09,0x07,0x01,0x09,0x03,0x0f,0x01,0x09,0x0b,0x09,0x01,0xe5,0x08,
- 0x01,0x48,0x05,0xe5,0xe5,0x01,0x25,0xe5,0xe5,0x04,0xe5,0x01,0x01,0x22,0x04,0x07,
- 0x09,0x0b,0x04,0xe5,0x0a,0x01,0x09,0x10,0xe5,0xe5,0xe5,0x03,0xe5,0xe5,0x18,0xe5,
- 0x08,0xe5,0x4a,0x02,0xe5,0xe6,0x2f,0x06,0x0c,0x0e,0x01,0x02,0xe5,0xe6,0x01,0x09,
- 0x02,0x03,0xe5,0x03,0x04,0x01,0x02,0x04,0x01,0x02,0xe5,0x01,0x02,0x02,0x08,0x06,
- 0x05,0x06,0x06,0x05,0x01,0x01,0x05,0x09,0x07,0x05,0xe5,0x03,0x01,0x01,0x05,0x3d,
- 0xe6,0xe5,0x01,0x2d,0xe5,0x01,0x02,0x01,0x1d,0x04,0xe5,0x07,0xe5,0x02,0x03,0xe6,
- 0x02,0x07,0x01,0x04,0xe5,0xe5,0xe5,0x03,0xe5,0x03,0x03,0x02,0x06,0xe6,0x09,0x03,
- 0x03,0xe5,0x04,0xe5,0x01,0x16,0x04,0xe7,0x03,0x44,0x04,0x01,0xe5,0x29,0x01,0x07,
- 0x01,0x0b,0xe5,0xe5,0x0b,0x01,0x05,0x03,0x05,0x03,0x01,0xe8,0xe5,0x02,0x02,0x06,
- 0x03,0x01,0x01,0x01,0x03,0x03,0x04,0xe5,0x04,0x0d,0xe5,0x01,0x01,0x05,0x03,0x25,
- 0x01,0x02,0x08,0x3d,0x02,0xe6,0x2a,0x04,0x04,0x01,0x0c,0x01,0xe6,0x0d,0x05,0x09,
- 0x04,0x01,0x01,0xe5,0x03,0x01,0xe5,0x05,0x01,0x02,0x01,0x02,0x04,0x04,0x01,0xe5,
- 0x02,0x04,0x08,0xe5,0xe5,0xe6,0xe5,0x06,0x04,0x08,0xe5,0x07,0xe5,0x12,0x09,0x01,
- 0x01,0x39,0xe5,0xe6,0x3a,0x02,0x03,0x13,0x0c,0xe5,0x04,0x0e,0x09,0x13,0x09,0x02,
- 0x03,0x0c,0x10,0x09,0x13,0x09,0x43,0x3c,0x05,0xe5,0x12,0x02,0x06,0x02,0xe5,0x03,
- 0xe5,0x1d,0x09,0x01,0x08,0xe5,0x06,0xe6,0x0a,0xe6,0x06,0x05,0xe6,0x06,0xe6,0x0a,
- 0xe5,0x04,0x02,0xe5,0x03,0xe5,0x3e,0xe8,0x0d,0x09,0x09,0x09,0x06,0x02,0x02,0xe5,
- 0x04,0xe6,0x06,0x04,0x01,0x02,0x01,0x01,0x02,0x02,0x09,0xe6,0x06,0x09,0x02,0x01,
- 0x01,0x02,0x09,0x03,0x07,0x09,0xe5,0x02,0x01,0x02,0x04,0x01,0x02,0x05,0x03,0xe5,
- 0x07,0xe5,0x07,0x02,0x03,0x02,0x01,0x07,0xe6,0x06,0x09,0x09,0x09,0x09,0x0d,0x02,
- 0x01,0x02,0x27,0x06,0x02,0x24,0x02,0x1d,0x04,0x04,0x09,0x04,0x0b,0x09,0x04,0x09,
- 0x0e,0x09,0x0d,0x4b,0x04,0x01,0x29,0x09,0x26,0x1d,0x08,0x0b,0x1b,0x03,0x07,0x11,
- 0x09,0x5e,0xe6,0xe5,0x2a,0x02,0x06,0x0a,0xe6,0x0f,0xe6,0x04,0x01,0x02,0x07,0xe6,
- 0x0a,0x04,0x02,0x0e,0x01,0x02,0x06,0x01,0x02,0x01,0x05,0xe6,0x05,0x06,0xe5,0x0b,
- 0x01,0x07,0xe6,0x06,0x06,0x02,0xe6,0x06,0xe6,0x3a,0x01,0xe5,0xe6,0x2a,0x03,0x05,
- 0x02,0x0a,0x0c,0x01,0x03,0xe5,0x04,0x01,0xe6,0xe5,0x06,0x09,0x09,0x08,0xe5,0x04,
- 0x03,0x07,0x01,0x01,0x01,0x07,0x05,0x01,0xe5,0x04,0x02,0xe6,0x08,0x09,0x0f,0x01,
- 0x01,0x09,0x3f,0xe7,0x2c,0x14,0x13,0x05,0xe5,0xe5,0x02,0x06,0x12,0x13,0x03,0x05,
- 0x0d,0x04,0x02,0x17,0x07,0x01,0x05,0x07,0x01,0x0b,0x01,0x3f,0xe5,0x14,0xe5,0x07,
- 0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,
- 0x05,0xe5,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x07,0xe5,0x07,0xe5,
- 0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe6,0xe6,0x03,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe6,0xe5,0x36,0x0a,
- 0x1a,0x01,0x0a,0xe5,0x07,0xe5,0x06,0x09,0x07,0x01,0x0b,0x0a,0x08,0x07,0x0c,0x09,
- 0x12,0x0a,0x3f,0xe8,0x34,0x01,0x25,0x01,0x0d,0x02,0x1e,0x0d,0x0a,0x06,0x01,0x09,
- 0x0a,0x09,0x5d,0xe6,0xe5,0x36,0x0a,0x1c,0x0e,0xe6,0x0b,0x09,0x09,0x08,0x16,0x3c,
- 0x3f,0xe6,0xe5,0x0b,0x23,0x06,0x0c,0x13,0x09,0x09,0xe5,0x07,0x09,0x09,0x09,0x0b,
- 0x09,0x06,0x0c,0x09,0x09,0x13,0x09,0x3f,0xe6,0x2a,0x02,0x06,0x02,0xe5,0x18,0xe5,
- 0xe5,0x02,0x02,0x02,0x10,0x01,0xe5,0x08,0x06,0x15,0x03,0x09,0x08,0x2e,0xe5,0xe5,
- 0x49,0x01,0xe5,0xe5,0x0e,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0x04,0x02,0x01,
- 0x07,0x01,0x07,0x01,0x01,0x02,0x02,0x01,0x02,0x04,0x01,0xe5,0x05,0x01,0x04,0x02,
- 0x01,0x01,0x05,0x01,0x01,0x02,0x02,0x01,0x07,0x01,0x01,0x02,0x01,0x02,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x08,0x01,0xe5,0x01,0x2b,0x01,
- 0x05,0x01,0x0b,0xe5,0x14,0x04,0xe5,0x01,0x01,0x05,0xe5,0x0f,0x0c,0x02,0x13,0x07,
- 0xe5,0x05,0x15,0x1f,0x07,0xe5,0x3f,0xe5,0xe6,0x14,0x13,0x02,0x06,0x08,0x02,0xe5,
- 0x04,0x0e,0x0d,0x03,0x07,0x15,0x02,0x04,0x17,0x23,0x0f,0x0b,0x02,0x01,0x01,0x3f,
- 0xe5,0x01,0xe5,0x09,0x29,0x0f,0x08,0x13,0x07,0x16,0x08,0x01,0x08,0x04,0x06,0x05,
- 0x1e,0x23,0x0a,0x04,0x03,0x26,0x09,0xe6,0xe5,0x2a,0x01,0x03,0x03,0x01,0xe5,0x03,
- 0x04,0x09,0x06,0x01,0x0a,0x09,0xe5,0x18,0x02,0x09,0x0a,0xe5,0x36,0xe7,0x08,0x24,
- 0x29,0x2a,0x02,0x09,0x1e,0xe5,0x01,0x0b,0x0f,0x0c,0x03,0x05,0x07,0x03,0x25,0x18,
- 0x19,0x3b,0x02,0xe5,0x0b,0x1e,0x06,0x02,0x05,0x04,0xe5,0x04,0x04,0x06,0x01,0x06,
- 0x02,0x02,0x1b,0x0c,0x0d,0x01,0x01,0xe5,0x2b,0x15,0x01,0x08,0xe5,0x08,0x02,0x2b,
- 0x07,0x01,0xe6,0x33,0xe5,0xe6,0x05,0x09,0x09,0xe6,0x06,0xe6,0x13,0xe5,0x0e,0x01,
- 0x0c,0x04,0x01,0xe5,0x07,0x01,0x11,0x20,0x02,0x04,0x12,0x01,0x36,0xe6,0xe5,0x27,
- 0xe5,0x0e,0x07,0x07,0x19,0x08,0x2c,0x03,0x1d,0x3c,0x35,0x02,0xe5,0x08,0x2a,0x01,
- 0x02,0x05,0x08,0xe7,0x0c,0x08,0x05,0x12,0xe5,0x0b,0x08,0x06,0x0c,0x04,0x1a,0x18,
- 0x4f,0xe5,0xe5,0x37,0x02,0x03,0x0a,0x17,0x07,0x05,0x0c,0x1b,0xe5,0x06,0x03,0x0c,
- 0x7a,0xe8,0x31,0x09,0x02,0x01,0x04,0x05,0x0c,0x05,0x09,0x04,0x02,0x01,0x08,0x07,
- 0x02,0x0f,0x2d,0x09,0x0f,0x03,0x09,0x09,0x38,0xe7,0x28,0x03,0x02,0x03,0x01,0x06,
- 0xe5,0xe6,0x09,0xe5,0x08,0x05,0xe5,0x03,0x03,0x03,0x02,0x06,0x04,0x01,0x09,0x02,
- 0xe5,0x1c,0x1a,0xe6,0x06,0xe6,0x10,0xe5,0xe5,0x0e,0x01,0x35,0xe5,0xe5,0xe5,0x2e,
- 0x01,0x2d,0x0b,0x0c,0x01,0x0a,0x01,0x0b,0x31,0x09,0x12,0x02,0x01,0x03,0x03,0x05,
- 0x12,0x25,0xe8,0xe5,0x36,0xe5,0x03,0x02,0xe6,0xe6,0x04,0x05,0x0c,0xe6,0x07,0x01,
- 0xe5,0x05,0xe5,0xe5,0xe6,0x02,0x09,0x09,0x0d,0xe5,0x01,0x03,0x02,0x01,0x04,0x0a,
- 0x0b,0xe5,0x04,0x02,0xe5,0x04,0x05,0x09,0x40,0xe6,0x02,0xe5,0xe5,0xe5,0x26,0x0b,
- 0x06,0xe5,0xe5,0x02,0xe5,0xe5,0x01,0x01,0x04,0xe5,0x0b,0x09,0x01,0xe5,0x05,0x01,
- 0xe5,0x01,0x03,0x05,0x02,0x03,0xe5,0x0c,0x06,0x01,0xe8,0x01,0xe5,0x05,0x0f,0x05,
- 0xe5,0x01,0x06,0x01,0x0a,0x04,0x04,0xe5,0x0c,0x2e,0x01,0x05,0xe5,0x03,0x23,0xe5,
- 0x0c,0x04,0xe5,0xe5,0xe5,0x06,0x09,0x01,0x0d,0xe5,0x01,0x01,0x11,0x05,0xe5,0x01,
- 0x01,0x0b,0x0e,0xe5,0xe5,0x12,0x0b,0x09,0x01,0x09,0x0c,0x01,0xe5,0xe5,0x06,0x01,
- 0x31,0x04,0xe6,0xe5,0x01,0x25,0x09,0x02,0x05,0xe5,0x01,0x01,0x04,0x02,0x09,0x01,
- 0x0e,0x02,0x01,0x11,0x09,0x01,0x13,0x06,0x04,0x0e,0xe5,0xe5,0x04,0xe5,0x01,0x01,
- 0x04,0xe5,0xe5,0xe5,0x0c,0xe5,0x0b,0x01,0x04,0xe5,0xe5,0xe5,0x32,0x02,0xe5,0x01,
- 0xe5,0x0a,0x1c,0x03,0x05,0x01,0x04,0x01,0x01,0xe5,0xe6,0x02,0xe7,0xe5,0x01,0x04,
- 0x01,0xe5,0x0d,0x06,0x09,0x04,0x04,0x0a,0x02,0x05,0x06,0x06,0xe6,0x01,0x02,0x03,
- 0x05,0x06,0x0e,0x01,0x05,0x01,0x01,0x05,0x0e,0x01,0xe5,0x05,0x01,0x36,0x01,0xe6,
- 0x01,0x08,0x23,0x04,0xe5,0x02,0x04,0xe5,0xe6,0x04,0xe5,0xe5,0xe5,0x04,0x01,0xe5,
- 0x04,0xe5,0x02,0x01,0x02,0x04,0x0f,0x03,0x09,0x04,0x0c,0x01,0x06,0x02,0x01,0x02,
- 0xe6,0x0b,0x07,0x05,0x02,0xe5,0x03,0xe5,0x01,0x0e,0x05,0x01,0xe5,0x04,0xe5,0xe5,
- 0xe5,0x2d,0x03,0x05,0xe5,0x30,0xe5,0xe5,0xe5,0x02,0xe6,0xe5,0xe5,0x04,0x01,0x01,
- 0x04,0x02,0x01,0x05,0x03,0x04,0x02,0x01,0x03,0xe5,0x08,0x02,0x03,0x05,0x01,0x05,
- 0x05,0xe7,0x03,0x07,0x07,0xe5,0x08,0x02,0x01,0x04,0x04,0x04,0x04,0x0d,0xe5,0x0b,
- 0x01,0x05,0x01,0x01,0x30,0x06,0xe7,0x31,0xe5,0xe5,0x02,0xe5,0x03,0x01,0xe5,0x05,
- 0x01,0x01,0xe5,0xe6,0xe5,0xe6,0x05,0x01,0x04,0xe5,0xe5,0xe5,0xe6,0xe5,0xe5,0x03,
- 0xe5,0xe8,0x03,0x04,0x01,0x0c,0x06,0x01,0x02,0xe6,0x03,0x01,0xe5,0x07,0xe5,0xe8,
- 0xe5,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x08,0xe5,0xe5,0xe5,0x09,0x01,
- 0xe5,0x05,0x01,0x37,0x01,0xe6,0x03,0x2b,0x01,0xe5,0x02,0x02,0x06,0x02,0xe5,0x04,
- 0x02,0x01,0xe5,0x02,0x0c,0x01,0x04,0x09,0x02,0x02,0x03,0x13,0x15,0x09,0x27,0x13,
- 0x43,0x32,0xe5,0x03,0xe5,0x03,0x0d,0xe5,0x0b,0x09,0x01,0x03,0xe6,0xe5,0x04,0xe6,
- 0x06,0xe5,0x01,0x0f,0xe5,0x0a,0xe5,0xe6,0x03,0xe5,0x07,0xe6,0x07,0xe5,0xe5,0x05,
- 0xe5,0x08,0x01,0x05,0xe6,0x14,0xe5,0x39,0xe9,0x0d,0x09,0x09,0x09,0x02,0x03,0x02,
- 0xe5,0xe5,0xe5,0xe5,0x01,0xe5,0xe5,0x02,0x02,0xe5,0x07,0xe5,0x01,0x05,0x04,0xe6,
- 0x01,0xe5,0x01,0x02,0x02,0xe5,0x04,0x02,0xe8,0x04,0x09,0xe6,0x08,0x09,0xe5,0x07,
- 0xe5,0x07,0x05,0x03,0x09,0x03,0x05,0xe5,0x02,0x01,0x02,0x04,0x01,0x02,0xe5,0x02,
- 0x01,0x02,0x02,0x06,0x09,0x09,0x09,0x06,0x06,0x01,0x01,0xe5,0x01,0x30,0x0a,0x06,
- 0x02,0x1d,0x04,0x01,0x02,0x06,0x02,0x1d,0x06,0x04,0x0e,0x04,0x04,0x09,0x09,0x09,
- 0x04,0x09,0x09,0x30,0x05,0x02,0xe5,0xe6,0x38,0x03,0x08,0x06,0x15,0x07,0x03,0x05,
- 0x02,0x1c,0x0c,0x06,0x09,0x03,0x23,0x03,0x07,0x09,0x3f,0xe5,0x27,0x02,0x01,0x07,
- 0x01,0xe5,0xe5,0x03,0x01,0xe5,0x02,0x02,0x01,0xe7,0x03,0x01,0xe5,0x05,0x0b,0xe7,
- 0x05,0xe7,0xe5,0xe5,0x01,0xe7,0x03,0x01,0x02,0x07,0x01,0x08,0x02,0x01,0x04,0xe7,
- 0x06,0xe6,0xe5,0x01,0x01,0x02,0x06,0x02,0x06,0x02,0x07,0x01,0x0e,0x01,0xe5,0x3c,
- 0x01,0xe8,0x29,0xe5,0xe6,0x05,0x01,0xe6,0x04,0x01,0x07,0x01,0xe6,0x03,0xe5,0xe5,
- 0x03,0x04,0xe5,0x02,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x02,0xe6,0x01,0x06,0x07,
- 0x03,0x01,0x03,0x02,0xe5,0x08,0x05,0x01,0x01,0x01,0xe5,0x03,0x01,0x01,0x05,0x01,
- 0x09,0x05,0x02,0x06,0x01,0x09,0xe5,0x34,0x01,0xe6,0x34,0x01,0x07,0x01,0x06,0x02,
- 0x07,0x01,0x09,0x0a,0x02,0xe5,0xe5,0x0c,0x02,0x03,0x01,0x13,0x01,0x09,0x01,0x09,
- 0x01,0x0f,0x03,0x05,0x03,0x09,0x02,0x0a,0x01,0x44,0x15,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe6,0x01,0x04,0xe6,0xe5,0x04,0xe6,0x06,0xe5,
- 0x01,0x03,0xe5,0xe6,0x01,0x03,0xe6,0x01,0x03,0xe5,0xe5,0x01,0x03,0xe5,0xe5,0x06,
- 0xe6,0x01,0x01,0x05,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x05,
- 0xe5,0x07,0xe6,0x06,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x06,0xe6,0xe5,0x2a,0x01,0xe6,0x06,0xe6,0x04,0x01,0x07,0x01,0xe6,
- 0x04,0x01,0x09,0xe6,0x07,0xe5,0x07,0xe5,0x0e,0x01,0x0a,0xe5,0x08,0x07,0x01,0x13,
- 0x09,0x07,0x01,0x0a,0xe5,0x0e,0x01,0x44,0x2b,0x01,0x09,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x09,0x07,0x06,0x01,0x02,0x06,0xe5,0x04,0x02,0xe5,0xe5,0x05,0x08,0xe5,0x01,
- 0x09,0x01,0x11,0x09,0x09,0x01,0x1b,0x01,0x39,0x05,0xe6,0xe6,0x0b,0x1e,0x01,0x09,
- 0x09,0x1b,0x09,0x05,0x01,0xe6,0x05,0x01,0xe5,0x05,0xe7,0xe5,0x02,0xe7,0x06,0x01,
- 0x01,0x0a,0x01,0x13,0x09,0x27,0x39,0x07,0xe5,0xe5,0x2a,0x01,0xe5,0x05,0x01,0x02,
- 0x04,0x01,0x0c,0x0e,0x02,0x0b,0x01,0x07,0x09,0xe5,0x02,0x01,0x02,0xe6,0x06,0xe5,
- 0x09,0x04,0x01,0x02,0x09,0x04,0x04,0x04,0x04,0x09,0x09,0x0e,0x01,0x3e,0x01,0x01,
- 0x01,0xe5,0x29,0x02,0x06,0x02,0x06,0xe5,0xe5,0x05,0x09,0x09,0x1d,0xe5,0xe5,0x05,
- 0xe5,0xe5,0x09,0x07,0x09,0x16,0x06,0xe5,0xe5,0x08,0x10,0x03,0x05,0xe5,0xe5,0x3e,
- 0x03,0x11,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x01,
- 0x03,0x01,0x04,0x02,0xe6,0x03,0x02,0x01,0x03,0x03,0xe7,0x05,0x01,0xe5,0x05,0x01,
- 0x04,0x02,0x01,0x04,0x01,0xe9,0x04,0x01,0x02,0x01,0xe5,0x02,0x01,0x01,0x01,0x03,
- 0x01,0x07,0x01,0x07,0x01,0x03,0x03,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x02,0x02,
- 0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0xe5,0x05,0x01,0x0a,
- 0xe8,0x2a,0x08,0xe5,0x01,0x14,0x0a,0x02,0x04,0x09,0x08,0x04,0x05,0x01,0x10,0x0d,
- 0x12,0x06,0x04,0x02,0x0b,0x03,0x07,0xe5,0x48,0x09,0x01,0xe7,0x03,0x23,0x0b,0x02,
- 0x0d,0x0a,0xe5,0x06,0xe5,0x01,0x07,0xe5,0x12,0x08,0x03,0x08,0x08,0x13,0x01,0x05,
- 0x12,0x0f,0x15,0x02,0x3a,0xe5,0xe7,0x38,0x18,0x05,0x01,0x06,0x10,0x03,0x22,0x0a,
- 0x13,0x09,0x14,0x06,0x11,0x08,0x35,0x02,0x05,0x25,0x04,0x01,0x02,0x01,0xe5,0x07,
- 0x07,0x09,0x01,0x05,0x01,0x01,0xe5,0x02,0x02,0xe5,0xe5,0x05,0x01,0xe5,0x05,0xe7,
- 0x07,0x0a,0x0a,0x07,0x01,0x04,0x0e,0xe5,0x05,0xe6,0x08,0x11,0x04,0x04,0x01,0x04,
- 0x02,0x01,0x06,0x2e,0xe6,0xe6,0x28,0xe5,0x01,0x03,0x05,0x08,0x07,0x02,0x04,0x02,
- 0x02,0x08,0x11,0x02,0x07,0x06,0x02,0x04,0x08,0x04,0x0b,0x02,0x0e,0x01,0x05,0x04,
- 0x03,0x04,0x11,0x03,0x01,0x07,0x03,0x05,0x03,0x32,0xe6,0xe5,0x23,0x08,0x03,0x03,
- 0x02,0x0f,0x02,0x0a,0x06,0x18,0x0b,0x11,0x02,0x01,0x01,0x03,0x0a,0x15,0x07,0x22,
- 0x01,0x07,0x01,0x1a,0x1a,0x01,0xe5,0xe5,0x2a,0xe5,0x07,0x18,0xe5,0x02,0x09,0x01,
- 0x16,0x0d,0x11,0x01,0xe5,0x08,0x10,0x04,0x07,0x06,0x01,0x07,0x04,0x09,0x01,0x06,
- 0x45,0xe6,0x27,0x04,0x09,0x14,0x06,0x05,0x28,0x12,0x03,0x09,0x17,0x0b,0x09,0x07,
- 0x02,0x08,0x01,0x06,0x09,0x37,0x01,0x2c,0x0f,0x12,0x03,0xe5,0x06,0x11,0x01,0x03,
- 0x05,0x09,0xe6,0xe5,0x04,0xe5,0xe5,0x03,0x02,0x01,0x01,0x0d,0x17,0xe6,0x10,0xe5,
- 0x07,0xe5,0x04,0x0b,0x04,0x01,0x32,0x02,0xe5,0x2d,0x0a,0x04,0x16,0x0b,0x09,0x1c,
- 0x01,0x0a,0x03,0x09,0x05,0x17,0x03,0x06,0x0d,0x09,0x49,0x03,0x2a,0x14,0x01,0x07,
- 0x01,0xe5,0xe5,0x04,0x01,0x0c,0x05,0x06,0x03,0x03,0x06,0x02,0x03,0x04,0x07,0x06,
- 0xe5,0xe6,0xe5,0x17,0x01,0x09,0x06,0x02,0x08,0x06,0x02,0xe5,0x06,0x01,0xe5,0x3d,
- 0xe6,0x01,0xe5,0x35,0x0b,0x07,0x03,0x0f,0x08,0xe5,0x12,0x02,0x11,0x07,0x02,0x03,
- 0x02,0x20,0x04,0x0e,0x09,0x09,0x05,0x01,0x01,0x3a,0x06,0x2b,0x04,0x01,0x11,0x13,
- 0x08,0x0c,0x07,0x0b,0x12,0x04,0x11,0x0f,0xe5,0x04,0x02,0x0b,0x01,0x05,0x01,0x08,
- 0x04,0x3d,0x01,0xe7,0x2c,0x1d,0xe7,0x01,0x03,0x05,0x03,0x0f,0x02,0xe5,0x04,0x09,
- 0x03,0x09,0x02,0x01,0x06,0x02,0x01,0x25,0xe5,0xe5,0x02,0x01,0xe5,0x01,0x03,0xe5,
- 0x07,0xe5,0x07,0x02,0xe5,0x04,0x32,0xea,0x01,0x01,0x27,0x01,0x08,0x07,0xe5,0x0a,
- 0x03,0xe5,0xe6,0x04,0x01,0xe6,0x11,0x03,0x05,0x09,0x02,0x09,0x02,0xe5,0x06,0x03,
- 0xe5,0x1e,0x05,0xe5,0x01,0xe6,0x03,0x01,0x03,0x01,0x07,0x0a,0x02,0xe5,0xe5,0x02,
- 0x2f,0x01,0x02,0xe6,0xe5,0x03,0x28,0x0e,0xe5,0xe5,0xe5,0x0d,0x01,0xe5,0xe5,0xe6,
- 0x03,0x03,0x0f,0x09,0x04,0x04,0x30,0x01,0x0a,0x09,0x03,0x05,0x0e,0xe6,0x07,0xe5,
- 0x35,0x05,0xe7,0x01,0x34,0x04,0x02,0x01,0x11,0x01,0x03,0xe5,0x01,0x13,0x09,0x09,
- 0x3d,0x01,0x04,0xe5,0xe5,0x0f,0xe5,0xe5,0x05,0x08,0xe5,0x01,0x35,0x02,0xe8,0x31,
- 0x01,0x08,0x03,0x09,0x07,0x01,0x02,0x03,0xe5,0xe5,0x10,0x09,0x09,0x04,0x09,0x0b,
- 0x1a,0x06,0xe5,0x03,0xe5,0x01,0xe5,0xe5,0x01,0x09,0xe5,0x01,0x05,0x02,0xe5,0x01,
- 0x0c,0x35,0x01,0x02,0x31,0x04,0x01,0x02,0xe5,0x02,0x04,0xe5,0x04,0x02,0xe5,0xe5,
- 0xe5,0x01,0xe7,0xe5,0xe5,0x01,0x01,0x0a,0x03,0x05,0x03,0x05,0x03,0x2f,0x03,0x02,
- 0xe7,0xe5,0x01,0x01,0x01,0xe5,0xe5,0x01,0x08,0x02,0x01,0x04,0x02,0xe6,0x01,0x07,
- 0x03,0x01,0x02,0x2c,0x02,0x03,0xe5,0x2e,0x02,0x08,0x02,0x01,0x05,0x03,0x07,0x01,
- 0x01,0xe5,0xe5,0xe6,0xe5,0x02,0xe5,0x07,0xe5,0x01,0x09,0x09,0x03,0xe5,0x09,0xe5,
- 0x0a,0x01,0x0f,0x01,0x01,0xe5,0x0f,0x02,0x19,0xe5,0x0b,0x01,0x02,0x32,0xe5,0x01,
- 0xe5,0x2f,0x0b,0xe5,0xe5,0xe5,0x06,0x04,0x04,0x01,0x02,0xe6,0x01,0x01,0x04,0x01,
- 0x0a,0x09,0x09,0x04,0x08,0xe5,0x09,0xe7,0x10,0x01,0x02,0x09,0x04,0x02,0x01,0x04,
- 0x08,0xe5,0x07,0xe5,0xe5,0xe5,0x04,0x04,0x01,0x01,0xe7,0x31,0xe5,0xe5,0x30,0x09,
- 0x01,0xe5,0x05,0x02,0x06,0x06,0x0c,0x02,0x21,0x02,0x02,0x03,0x0b,0x16,0x01,0xe5,
- 0x05,0x02,0x17,0x09,0x02,0x10,0x37,0xe6,0x2e,0x02,0x01,0x11,0xe5,0x04,0x04,0x03,
- 0xe5,0x01,0x06,0x02,0x06,0x1c,0xe5,0x01,0xe5,0x03,0xe6,0x08,0xe6,0x11,0x02,0x13,
- 0xe5,0x05,0x01,0x05,0xe5,0x01,0x05,0xe6,0xe5,0xe5,0x03,0x02,0xe5,0x03,0xe5,0x01,
- 0xe5,0x30,0x01,0xe6,0x0d,0x09,0x09,0x09,0x03,0x05,0x09,0x02,0x03,0x02,0x04,0x01,
- 0x02,0xe6,0x02,0x03,0x03,0x05,0x09,0x09,0x09,0xe6,0x06,0xe5,0x09,0xe5,0x07,0x06,
- 0x02,0x05,0x03,0x02,0x03,0x02,0x04,0x01,0x02,0x03,0x05,0xe5,0x01,0xe5,0xe5,0x01,
- 0xe5,0x01,0x05,0x04,0x01,0x02,0xe5,0x07,0x09,0x09,0x09,0x0d,0x02,0xe6,0x01,0x3b,
- 0x06,0x02,0x09,0x09,0x36,0x0b,0x0d,0x0a,0x06,0x02,0x09,0x04,0x0e,0x04,0x0e,0x36,
- 0x03,0xe5,0xe5,0x3c,0x09,0x09,0x08,0x06,0x09,0x27,0x0b,0x13,0x01,0x0a,0x08,0x11,
- 0x01,0x07,0x0b,0x07,0x34,0xe5,0x01,0x28,0x02,0x01,0x02,0x01,0x02,0x13,0x01,0x02,
- 0x01,0x02,0x01,0xe7,0x02,0xe5,0xe5,0x01,0x06,0x02,0x10,0x06,0x03,0xe6,0xe5,0x04,
- 0xe6,0xe5,0x05,0xe7,0x0d,0x01,0x02,0x0e,0x01,0x04,0x04,0x02,0x07,0xe6,0x03,0x02,
- 0x01,0x06,0x02,0x01,0x04,0xe7,0x30,0x02,0xe7,0x2a,0x01,0x01,0x01,0x03,0x02,0x05,
- 0x03,0x06,0x01,0x01,0x01,0x03,0x01,0xe6,0x04,0x01,0xe6,0x01,0x04,0xe6,0x10,0xe5,
- 0x08,0xe5,0x08,0x09,0xe6,0x0e,0x01,0x01,0x05,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,
- 0x01,0x08,0xe5,0x01,0x05,0xe5,0x06,0x01,0x01,0x02,0xe5,0xe7,0x34,0x01,0xe6,0x26,
- 0x18,0x07,0x01,0x0a,0x06,0x01,0x03,0x05,0x13,0x07,0x01,0x01,0x09,0x04,0x04,0x11,
- 0x01,0x03,0x03,0x09,0x01,0x10,0x06,0x02,0x16,0x39,0xe5,0x14,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x01,
- 0x04,0xe6,0x06,0xe6,0x01,0x04,0xe7,0xe5,0x02,0xe7,0x07,0xe5,0x03,0xe5,0x03,0xe5,
- 0x07,0xe6,0xe5,0x04,0xe6,0x06,0xe6,0xe5,0x03,0xe6,0x01,0x05,0xe5,0x02,0x04,0xe5,
- 0x07,0xe5,0x07,0xe6,0xe6,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,
- 0x02,0xe5,0x37,0xe5,0x10,0x07,0x01,0xe6,0x04,0x01,0xe6,0x06,0xe5,0x02,0x09,0x04,
- 0x04,0x02,0x01,0xe5,0x01,0x06,0x0a,0xe6,0x0e,0x02,0x08,0x09,0xe5,0x02,0x01,0x02,
- 0x07,0x02,0x09,0xe5,0x06,0x07,0x01,0xe6,0x33,0xe5,0xe6,0x48,0x01,0x07,0x01,0x07,
- 0x01,0x09,0x06,0x09,0x02,0x06,0xe5,0xe5,0x03,0x01,0x09,0x04,0x13,0x09,0x07,0x01,
- 0xe5,0x05,0x01,0x07,0x15,0x07,0x01,0x36,0x01,0x01,0x41,0x09,0x09,0x09,0x09,0xe5,
- 0x03,0x0d,0x05,0x01,0x01,0xe5,0x03,0x04,0x07,0x02,0x14,0x06,0x01,0x09,0x14,0x1c,
- 0x37,0xe5,0xe5,0x2f,0x07,0x12,0x02,0x04,0x04,0x04,0x01,0x02,0x06,0x02,0xe8,0x08,
- 0x02,0x03,0xe8,0xe5,0x01,0x01,0xe6,0x04,0x01,0x01,0x04,0x02,0x07,0x0b,0x0e,0x02,
- 0x01,0x01,0x04,0x02,0x09,0x09,0x09,0x04,0x01,0x02,0x33,0x01,0xe6,0x2c,0xe5,0x06,
- 0x01,0x15,0x01,0x02,0xe5,0xe6,0x04,0x04,0x08,0x05,0xe5,0xe5,0x05,0x02,0xe5,0x07,
- 0xe5,0x0c,0x1b,0x05,0xe5,0xe5,0xe5,0x06,0x09,0xe5,0x04,0x02,0x04,0x04,0x06,0x09,
- 0xe5,0xe6,0x34,0xe7,0x10,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x07,
- 0x01,0x07,0x01,0x01,0x01,0x03,0x01,0xe5,0xe6,0x02,0x01,0x01,0x05,0x01,0x07,0x01,
- 0x04,0x02,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x02,0x04,0x01,0x07,0x01,0x07,
- 0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x01,0x02,0x02,0x01,0x07,0xe6,0x01,0x01,
- 0x02,0x01,0x04,0x02,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x08,0x05,0x57,
- 0x11,0xe5,0x06,0xe6,0x05,0x09,0x03,0x07,0x1f,0xe6,0x0e,0x06,0x02,0x09,0x01,0x02,
- 0x03,0xe5,0xe6,0xe5,0x05,0x01,0x07,0x06,0x30,0x01,0xe6,0x14,0x26,0x07,0xe5,0x0a,
- 0x04,0x0e,0x01,0xe5,0x03,0x02,0x10,0x05,0x03,0x04,0xe5,0x02,0x03,0x08,0x07,0x03,
- 0x04,0xe5,0x0b,0x03,0x12,0x06,0x02,0x05,0x03,0xe5,0x02,0x04,0x02,0x32,0xe7,0xe5,
- 0x63,0x0e,0x02,0x22,0x0f,0x04,0x02,0x06,0x09,0x09,0x06,0x0d,0x05,0x02,0x04,0x02,
- 0x3b,0x01,0xe6,0x24,0x05,0xe6,0x06,0xe6,0x10,0xe6,0x08,0xe5,0xe5,0x03,0x01,0x23,
- 0x03,0x20,0x03,0x04,0x07,0xe6,0xe5,0x04,0x0d,0x0b,0x01,0x03,0x04,0x0c,0xe5,0x0b,
- 0x2a,0xe9,0x27,0x02,0x08,0x0d,0x01,0x01,0x02,0x0e,0x06,0x04,0x14,0x1e,0x08,0x14,
- 0x02,0x03,0x06,0x15,0x01,0x02,0xe5,0x0e,0x0b,0x31,0x01,0xe6,0x0f,0x11,0x12,0xe6,
- 0x19,0x09,0xe6,0xe5,0x06,0x04,0x04,0x02,0x06,0x07,0x01,0x03,0x05,0x03,0x03,0xe5,
- 0x01,0x09,0x07,0x06,0x04,0x04,0x03,0xe5,0x07,0xe5,0x08,0x09,0xe5,0x07,0x09,0x09,
- 0x02,0x29,0xe5,0xe7,0x1f,0x01,0x0a,0x29,0x04,0x01,0xe5,0x01,0x03,0x06,0x02,0x08,
- 0xe5,0x08,0x09,0x02,0x03,0x02,0x06,0x03,0xe6,0xe6,0x0a,0x06,0x06,0x09,0x02,0x01,
- 0x01,0x02,0x01,0x07,0xe6,0x06,0xe7,0x02,0x02,0xe6,0x06,0xe6,0x2b,0x01,0x01,0x24,
- 0x2a,0x07,0x11,0xe5,0x07,0xe6,0x01,0x04,0xe5,0x07,0xe5,0xe5,0x05,0xe5,0x02,0x02,
- 0xe5,0x02,0x01,0x03,0xe5,0x0f,0x05,0xe5,0x06,0x05,0x01,0x0c,0x0b,0x12,0x36,0xe7,
- 0x11,0x25,0x05,0xe5,0x0e,0x11,0xe5,0x01,0x1b,0x02,0xe6,0x10,0x02,0x03,0x02,0x0a,
- 0x09,0x04,0x0f,0xe6,0x06,0xe6,0x54,0x02,0x3f,0xe5,0x16,0x02,0x2c,0x10,0x04,0x31,
- 0x08,0x18,0x3e,0xe5,0x20,0x01,0x02,0x03,0x06,0x09,0x06,0x12,0x03,0xe5,0x01,0x01,
- 0xe5,0x01,0xe5,0x01,0x01,0x05,0xe6,0xe5,0x06,0x01,0x07,0x01,0x03,0x03,0x01,0x02,
- 0x06,0x01,0xe5,0x07,0x0c,0x03,0x02,0x10,0xe5,0xe5,0x08,0x09,0x09,0x06,0xe5,0xe5,
- 0x04,0x01,0x01,0x2d,0xe5,0xe5,0x22,0x07,0x01,0xe5,0xe5,0xe5,0x01,0x01,0x06,0x06,
- 0x0b,0x15,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x03,0x05,0x01,0x04,
- 0x01,0x02,0x1e,0x0a,0x06,0xe5,0x02,0x03,0xe6,0x06,0xe6,0x08,0x03,0x05,0x2b,0xe5,
- 0x01,0xe5,0x21,0x07,0x22,0x04,0xe5,0x02,0x09,0x29,0x19,0xe5,0x01,0x0f,0x1c,0x02,
- 0x01,0x02,0x06,0x09,0x07,0x03,0x05,0x2c,0x02,0xe7,0x2c,0x05,0x03,0x02,0xe5,0x04,
- 0x0a,0x08,0x05,0x03,0x09,0x05,0x0d,0x09,0x11,0x03,0x01,0xe5,0x12,0xe5,0xe5,0x08,
- 0x06,0x01,0x04,0x09,0x01,0xe5,0x05,0x0c,0x01,0x04,0x32,0xe5,0x01,0x01,0x02,0x01,
- 0x2a,0x05,0xe5,0x01,0x02,0xe5,0x03,0x06,0x0c,0x06,0xe7,0x09,0x05,0x0d,0x08,0x12,
- 0xe6,0xe5,0xe6,0x01,0xe5,0x0e,0x01,0xe6,0x07,0xe5,0x04,0xe5,0x03,0x09,0x02,0xe5,
- 0x0b,0xe5,0x04,0xe5,0x0c,0x27,0x01,0x03,0x01,0xe5,0x03,0x19,0xe5,0x02,0x04,0xe5,
- 0xe5,0x05,0x01,0x02,0x22,0x01,0xe5,0x12,0x1a,0xe5,0x11,0x01,0xe5,0x02,0x11,0x01,
- 0x07,0x01,0x02,0xe6,0x01,0x01,0x15,0x02,0x01,0xe5,0xe5,0x03,0xe5,0x04,0x2f,0x04,
- 0x02,0xe5,0x01,0x1b,0x02,0x05,0xe5,0x01,0x06,0xe5,0xe5,0x12,0x15,0x11,0x1a,0xe5,
- 0x06,0xe5,0x0a,0x02,0x01,0x0e,0x02,0x01,0x07,0x01,0x04,0xe5,0xe5,0x1c,0x01,0x03,
- 0xe5,0x01,0x0b,0x29,0x03,0x01,0xe5,0x1e,0x01,0x04,0xe5,0x01,0x05,0x06,0xe5,0xe5,
- 0x02,0x05,0x09,0x09,0x06,0x09,0x02,0x10,0x02,0x06,0x02,0x10,0x01,0x02,0xe5,0xe7,
- 0xe5,0x01,0x03,0x05,0x02,0x01,0x01,0x02,0x01,0x01,0xe5,0xe6,0x04,0xe5,0xe5,0x01,
- 0x01,0x01,0x02,0x03,0x02,0xe5,0xe5,0x01,0xe5,0x01,0x02,0x10,0x06,0x02,0x1e,0x06,
- 0xe8,0x01,0x1e,0x03,0x0a,0x04,0x02,0x03,0xe6,0x09,0x04,0x03,0x0c,0x01,0x05,0x04,
- 0xe5,0x01,0x0a,0x04,0x01,0x01,0xe5,0x03,0x10,0x01,0x01,0x02,0x01,0xe5,0xe5,0xe5,
- 0xe5,0xe6,0x09,0x01,0x01,0x04,0xe5,0xe6,0x01,0x01,0xe6,0xe5,0xe5,0x03,0xe5,0x05,
- 0x01,0xe5,0x03,0x01,0x01,0xe5,0x02,0x01,0x02,0x08,0x05,0x02,0x01,0x22,0x02,0xe5,
- 0xe7,0x1f,0x01,0x01,0xe5,0x03,0x0b,0x02,0x16,0x05,0x02,0x09,0x04,0x0e,0x04,0x09,
- 0x07,0x01,0x02,0x01,0x01,0x04,0x01,0x05,0x01,0x01,0x09,0xe5,0xe5,0xe6,0xe5,0x03,
- 0xe7,0xe5,0x06,0x01,0x05,0x03,0x02,0x04,0x01,0x02,0x06,0x07,0x01,0x30,0x04,0xe5,
- 0xe5,0xe5,0x20,0x04,0x01,0x02,0x04,0x04,0x02,0xe6,0x07,0xe5,0x03,0x04,0x01,0x07,
- 0x01,0xe6,0x01,0x02,0x01,0xe7,0x03,0x09,0x01,0xe5,0xe5,0x03,0x04,0x04,0x04,0x01,
- 0x02,0x01,0x01,0x02,0x04,0x04,0x01,0x02,0xe6,0x06,0x01,0x02,0x01,0x01,0xe5,0xe5,
- 0xe6,0xe6,0x05,0x01,0x01,0xe5,0x03,0x04,0x04,0x01,0x02,0x04,0x09,0x01,0x02,0x33,
- 0xe8,0x28,0x0e,0x09,0x02,0x02,0x06,0x01,0xe5,0x19,0x0b,0x31,0x09,0x01,0xe5,0x02,
- 0x09,0x09,0x0c,0x02,0x10,0x09,0x33,0x02,0x28,0x09,0x0f,0xe5,0x01,0x09,0xe5,0x07,
- 0xe5,0x04,0xe5,0x0a,0x01,0x04,0x0c,0x10,0x0b,0x0e,0x07,0x05,0xe5,0x01,0xe5,0x0d,
- 0xe5,0x08,0x02,0x06,0x02,0x09,0x01,0x04,0x02,0x01,0x2f,0x01,0x01,0xe5,0x0d,0x09,
- 0x09,0x03,0x05,0x05,0xe5,0x01,0xe5,0x07,0xe5,0x01,0x05,0x09,0x09,0x09,0x03,0x05,
- 0x09,0x05,0xe5,0x01,0x09,0x04,0x01,0x04,0x09,0x06,0x02,0x05,0x03,0xe5,0x04,0x02,
- 0xe5,0x04,0x02,0xe5,0x07,0x03,0x05,0x03,0x05,0x03,0x05,0x03,0x05,0x09,0x09,0x09,
- 0x06,0x06,0xe5,0xe5,0xe5,0x01,0x2e,0x02,0x09,0x31,0x12,0xe5,0x12,0x0b,0x08,0x05,
- 0x0b,0x09,0x02,0x13,0x09,0x3a,0xe5,0x03,0x02,0x01,0xe6,0x31,0x0a,0x05,0x1d,0x0d,
- 0x13,0x13,0x07,0x01,0x1b,0x0c,0x06,0x0d,0x07,0x3c,0x09,0xe6,0xe5,0xe5,0x1b,0x04,
- 0x02,0x09,0x07,0x03,0x05,0xe6,0x0a,0x04,0x02,0x01,0x04,0x02,0x06,0x02,0x01,0x07,
- 0x06,0x02,0x06,0x02,0x06,0x02,0x03,0x02,0x01,0x02,0x04,0x01,0x09,0x02,0x01,0x02,
- 0x01,0xe5,0xe5,0x03,0x01,0xe5,0x07,0xe7,0x03,0x01,0x02,0x04,0x01,0x02,0x06,0x04,
- 0x04,0x02,0x03,0xe5,0xe5,0x29,0x03,0x01,0x1e,0x04,0x01,0x09,0x05,0x03,0x08,0xe5,
- 0x07,0xe5,0x06,0x01,0x02,0x04,0x01,0x07,0x01,0x05,0x03,0x01,0x05,0x01,0x09,0x07,
- 0x01,0x01,0x07,0xe6,0x03,0xe5,0xe7,0x04,0x03,0x04,0xe5,0xe7,0x04,0x01,0x06,0xe5,
- 0xe7,0x04,0x01,0x01,0x01,0x02,0xe5,0xe7,0xe5,0x05,0x08,0x01,0x01,0x03,0x01,0xe5,
- 0x2a,0xe8,0x26,0x03,0x05,0x09,0xe5,0x03,0x07,0x01,0x03,0xe5,0x03,0x09,0x04,0x22,
- 0x09,0x06,0x02,0x01,0x04,0x02,0x01,0x03,0xe5,0x0b,0x01,0x07,0x01,0x04,0x04,0x09,
- 0x03,0x03,0x01,0x07,0x01,0x11,0x01,0x2d,0x02,0x15,0xe5,0x07,0xe5,0x07,0xe6,0x06,
- 0xe6,0x06,0xe6,0x01,0x04,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x01,0x04,0xe6,0x05,
- 0xe6,0xe5,0x05,0xe5,0x06,0xe6,0x06,0x01,0x03,0x04,0xe5,0x04,0x05,0xe6,0xe5,0x04,
- 0xe5,0x07,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe6,0xe6,0x03,0xe6,0xe5,0x04,0xe6,0xe5,
- 0x04,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x01,0x05,0x02,0x23,0xe5,0x19,0x02,0x10,0x01,0xe6,0x07,0xe5,0x01,0x01,0x02,0x05,
- 0x0d,0x05,0x03,0x05,0x0d,0x01,0xe5,0x05,0x01,0x09,0xe5,0x05,0x0b,0x09,0xe5,0x05,
- 0x01,0x07,0x01,0x09,0x09,0x07,0x2e,0xe6,0xe5,0x22,0x1d,0x11,0x01,0x13,0x03,0x02,
- 0xe5,0x07,0x02,0x03,0x02,0x09,0x07,0x01,0x04,0xe5,0x05,0x01,0x07,0x09,0x09,0x09,
- 0x09,0x01,0x07,0x15,0x07,0x2f,0xe5,0xe5,0x23,0x1a,0x01,0xe5,0x11,0x18,0xe5,0x07,
- 0x09,0xe5,0x02,0x03,0x01,0x0c,0xe5,0xe5,0x08,0x0a,0x12,0x09,0xe5,0x07,0x09,0x09,
- 0x11,0x2e,0x01,0x01,0x26,0x09,0x09,0x04,0x01,0x02,0x09,0x06,0x02,0x09,0x09,0xe5,
- 0x02,0x04,0x01,0x07,0xe5,0x07,0x01,0x07,0x01,0x06,0x02,0x04,0x01,0x02,0x09,0x09,
- 0x04,0x09,0x04,0x04,0x04,0x04,0x04,0x13,0x04,0x2e,0x01,0xe6,0x20,0xe5,0xe6,0x07,
- 0x06,0xe5,0xe5,0xe5,0x07,0x05,0xe5,0xe5,0x0f,0x0d,0xe5,0x03,0x01,0xe6,0x08,0xe5,
- 0x23,0x0d,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0x02,0x10,0x01,0xe5,0x0f,0xe5,0xe5,
- 0x05,0xe5,0xe5,0x0c,0x1c,0xe5,0xe7,0xe5,0x0e,0x01,0x07,0x01,0x04,0x02,0xe6,0x06,
- 0x01,0x04,0x02,0x01,0x01,0x05,0x01,0x04,0x02,0x01,0x07,0x01,0x01,0x02,0x02,0x01,
- 0x07,0x01,0x04,0x02,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,0x04,0x04,0x01,0x01,
- 0x05,0x01,0x07,0x01,0x03,0x03,0x01,0x04,0x02,0x01,0x01,0x05,0x01,0x07,0x01,0x04,
- 0x02,0xe6,0x06,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0b,0xe7,
- 0x22,0xe5,0x05,0x01,0xe5,0x07,0xe5,0x07,0xe5,0x04,0x06,0x13,0x02,0x02,0xe5,0x11,
- 0xe6,0x0d,0x0e,0xe5,0x01,0x02,0x01,0x05,0x04,0xe5,0x07,0xe5,0x0f,0xe5,0xe5,0x04,
- 0x1f,0x05,0x03,0x2e,0xe5,0xe6,0x1f,0x02,0x01,0xe5,0x01,0xe5,0x04,0x03,0x02,0x06,
- 0x11,0x28,0x09,0x0f,0x03,0x03,0x02,0x0e,0xe5,0x01,0x04,0x03,0x11,0x08,0x06,0xe5,
- 0x4d,0x01,0x02,0x23,0x06,0x01,0x07,0x01,0x05,0x04,0x02,0x12,0x0c,0x02,0x01,0x06,
- 0x05,0x03,0xe5,0xe5,0x05,0x04,0x04,0x05,0x04,0x02,0x14,0x07,0x0c,0x1d,0x03,0x01,
- 0x07,0x3b,0xe8,0x2a,0xe7,0x0f,0x01,0xe6,0x06,0x03,0x01,0x01,0x01,0x07,0x01,0x28,
- 0x06,0x01,0x04,0x0e,0x10,0x02,0xe7,0x07,0x07,0x01,0x09,0x07,0xe5,0x01,0x01,0xe5,
- 0x03,0x04,0x0c,0xe6,0x2a,0xe5,0x01,0xe5,0x2b,0x13,0xe5,0x03,0x03,0x07,0x02,0x01,
- 0x07,0x05,0x08,0xe5,0x08,0x08,0xe5,0x08,0x04,0x06,0x0e,0x0c,0x01,0x02,0x02,0x05,
- 0x09,0x02,0x20,0x3c,0x01,0x01,0x1f,0x0d,0x13,0x08,0xe5,0x02,0x03,0x05,0x03,0x01,
- 0x03,0x04,0xe5,0x0c,0x05,0x03,0x0a,0x02,0x01,0x03,0x03,0x02,0xe5,0x01,0x25,0x10,
- 0x01,0x11,0x13,0x2d,0x04,0x35,0x01,0xe5,0x05,0xe7,0x05,0x02,0xe5,0x11,0x1a,0x13,
- 0x05,0x03,0x01,0x19,0x02,0x03,0x13,0x06,0x01,0x07,0x01,0x05,0x0a,0x39,0xe6,0xe5,
- 0x2d,0x0f,0x0a,0x05,0xe5,0x0e,0x01,0xe6,0xe5,0x0d,0x03,0x03,0xe5,0x0a,0x06,0xe7,
- 0x03,0x03,0x0b,0x0a,0x01,0x1e,0x04,0x01,0x12,0x3e,0xe5,0xe6,0x12,0x0d,0xe5,0x10,
- 0x08,0x0f,0x05,0x08,0x11,0x02,0xe5,0x0f,0x01,0xe5,0x0f,0x01,0x09,0x8b,0x02,0x21,
- 0xe5,0x0e,0x09,0x06,0x02,0x0c,0x06,0x18,0x04,0x0e,0x04,0x09,0x02,0x55,0x3e,0xe5,
- 0xe6,0x2a,0x01,0x13,0x02,0x06,0x04,0x02,0x01,0x0a,0x03,0xe5,0x02,0xe5,0x04,0x01,
- 0x04,0x03,0x01,0x03,0x04,0xe5,0x05,0xe5,0xe5,0x12,0x01,0x13,0x03,0x09,0x09,0x05,
- 0x03,0x02,0x02,0x2b,0x09,0x13,0xea,0x22,0x04,0xe5,0x01,0x11,0xe6,0x07,0x0a,0x05,
- 0x0a,0x02,0x01,0x09,0x05,0x01,0x08,0xe6,0x03,0x01,0x01,0x0c,0x08,0x0a,0x07,0xe5,
- 0x0b,0x0e,0x01,0x08,0x01,0x40,0x0c,0x25,0x06,0x02,0x15,0x0f,0x03,0x0d,0xe5,0x1c,
- 0x0c,0x10,0x01,0x11,0x02,0x0c,0x0e,0x03,0x4c,0x06,0x01,0xe7,0x1b,0xe5,0x04,0x05,
- 0x0f,0xe5,0x01,0x03,0x09,0x09,0x02,0xe5,0x04,0xe5,0x07,0x09,0x05,0x03,0x01,0xe5,
- 0x01,0x03,0x05,0x03,0x01,0xe5,0x0a,0xe5,0xe5,0x02,0x13,0x09,0x02,0xe5,0x07,0xe5,
- 0x03,0xe8,0x05,0x09,0x3c,0x02,0x01,0xe5,0x01,0x01,0x19,0xe5,0x03,0x06,0xe5,0x02,
- 0x04,0x09,0xe5,0x0b,0x05,0xe5,0x01,0x01,0xe5,0x05,0xe5,0x07,0x08,0x06,0x03,0x02,
- 0x01,0xe5,0x01,0x06,0x03,0x01,0xe5,0x08,0xe6,0x01,0x03,0xe5,0x11,0x09,0x02,0xe5,
- 0x07,0xe5,0x06,0xe5,0x0f,0x39,0x02,0xe5,0xe6,0xe5,0x03,0x26,0x01,0x03,0xe5,0x01,
- 0x04,0x01,0xe5,0xe5,0xe5,0xe5,0x01,0xe5,0x0c,0x04,0xe5,0xe5,0x05,0xe5,0x14,0x09,
- 0x09,0x0e,0x06,0x35,0x02,0xe5,0xe5,0x02,0x3d,0xe5,0x03,0x04,0xe6,0xe5,0x01,0x25,
- 0xe5,0xe5,0xe5,0x02,0xe5,0x01,0x06,0xe5,0xe5,0xe5,0x03,0x0c,0x0f,0xe5,0x08,0xe5,
- 0x02,0x07,0x09,0x09,0x0c,0x02,0x05,0x38,0x02,0x41,0xe5,0x05,0x02,0x02,0xe5,0x25,
- 0x04,0x01,0xe5,0x04,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x01,0xe5,0xe7,0xe5,0x08,0x06,
- 0xe5,0xe5,0x01,0x01,0x01,0x05,0x03,0x05,0x01,0x01,0x0a,0x04,0x12,0xe5,0x05,0x01,
- 0x02,0x09,0x1d,0x06,0x05,0x03,0x02,0x01,0x01,0x02,0x06,0x38,0x01,0x01,0xe5,0x01,
- 0x28,0x01,0xe5,0x01,0x01,0xe6,0xe5,0xe5,0xe5,0x01,0xe5,0xe5,0xe5,0x04,0x06,0x01,
- 0xe5,0x02,0x01,0x01,0xe6,0xe5,0xe5,0x01,0x01,0x04,0x01,0x01,0xe5,0x03,0x0f,0x03,
- 0x11,0x02,0x05,0xe5,0xe5,0xe5,0x2c,0x08,0xe5,0x02,0x04,0xe5,0x05,0xe6,0x32,0x03,
- 0x02,0xe8,0x26,0x02,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x09,0x02,0x04,0x01,
- 0x01,0x07,0x01,0x01,0xe5,0x05,0x01,0xe5,0x0b,0x03,0xe5,0xe5,0xe5,0x0d,0xe5,0x03,
- 0x01,0x01,0x01,0x09,0x02,0x01,0x05,0x15,0x04,0x05,0x01,0x01,0x01,0xe5,0x01,0x03,
- 0x41,0xe5,0xe5,0x24,0xe5,0x01,0x01,0x01,0xe5,0x05,0x01,0x07,0x01,0x02,0x04,0x01,
- 0x07,0x04,0x04,0x01,0x02,0x09,0x01,0x01,0x02,0x02,0x01,0x01,0x05,0x04,0x04,0x01,
- 0x07,0x06,0x02,0x03,0x02,0x01,0x02,0x09,0x01,0x07,0x12,0xe5,0xe6,0xe5,0x08,0x04,
- 0x04,0x04,0x40,0xe5,0x23,0x09,0x0c,0x09,0xe5,0x07,0xe5,0x11,0xe5,0x04,0x09,0x13,
- 0x04,0x15,0x13,0x07,0x02,0x06,0x02,0x03,0x04,0x07,0x02,0x10,0x02,0x33,0x04,0x02,
- 0x01,0x24,0xe5,0x0b,0x0b,0x05,0x08,0x14,0x01,0x05,0xe6,0xe5,0x04,0xe5,0x08,0x08,
- 0xe5,0x08,0x0b,0x0a,0x15,0x09,0xe5,0x03,0xe5,0x01,0x06,0x02,0xe5,0x07,0xe5,0x04,
- 0x3e,0xe5,0x01,0xe5,0x0d,0x09,0x09,0xe5,0x04,0x02,0xe5,0x03,0xe5,0x01,0x09,0x06,
- 0x02,0x06,0x02,0x06,0x02,0x03,0x02,0x02,0xe6,0xe6,0xe5,0x01,0xe6,0x06,0x09,0xe6,
- 0x06,0x04,0x01,0x04,0xe5,0x07,0x09,0x04,0x01,0x02,0x03,0x02,0x02,0x09,0xe5,0x03,
- 0x03,0x09,0x04,0x01,0x02,0x09,0x09,0x09,0x09,0x09,0x0d,0x01,0x01,0xe5,0x01,0x24,
- 0x02,0x06,0x02,0x12,0xe5,0x07,0xe5,0x07,0xe5,0x05,0x02,0x04,0x04,0x09,0x1d,0x1f,
- 0x08,0xe5,0x08,0x1d,0x43,0x01,0x01,0x25,0x02,0x0a,0x13,0x07,0x09,0x0a,0x08,0x0b,
- 0x1d,0x1f,0x07,0x0b,0x05,0x16,0x45,0xe5,0x01,0x01,0x1c,0x05,0xe6,0x03,0x01,0xe5,
- 0x04,0xe5,0xe5,0x06,0x01,0x02,0x03,0xe5,0xe5,0x01,0x0d,0x07,0x05,0xe6,0x02,0x03,
- 0xe6,0xe5,0x06,0x04,0x02,0xe6,0x08,0x06,0x01,0xe7,0x03,0x01,0x13,0x04,0x07,0x01,
- 0x05,0xe6,0x03,0x04,0x06,0x02,0x09,0x3f,0xe6,0x24,0x05,0x01,0x07,0x01,0xe5,0x05,
- 0x01,0x01,0x05,0x01,0xe6,0xe5,0x06,0x08,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x04,0x03,
- 0x01,0x03,0x02,0xe5,0x01,0x02,0x03,0x01,0x05,0x01,0xe6,0xe5,0x02,0x01,0xe6,0x08,
- 0x08,0xe5,0x08,0x04,0x03,0xe5,0x04,0x02,0xe5,0xe5,0x04,0x01,0x09,0x01,0x35,0x04,
- 0x02,0xe7,0x26,0x03,0x01,0x09,0x04,0x04,0x03,0xe5,0x01,0x01,0x13,0x0a,0x02,0xe5,
- 0x05,0x02,0x08,0x03,0x03,0x11,0x01,0x07,0x01,0x1d,0x09,0x03,0x17,0x42,0x02,0xe5,
- 0x14,0xe5,0x07,0xe5,0x02,0x04,0xe6,0xe5,0x04,0xe6,0x06,0xe5,0x01,0x05,0xe6,0x06,
- 0xe5,0x06,0xe7,0x06,0xe5,0x05,0xe7,0x06,0xe7,0x06,0xe6,0x05,0xe7,0x06,0xe5,0x01,
- 0x01,0xe5,0x03,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe6,0x01,0x04,0xe5,
- 0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe6,0x03,0x04,0xe5,0x23,0xe5,0x04,0x01,0x07,0x01,0x07,0x01,0xe5,0x05,0x01,0x07,
- 0x01,0xe5,0x04,0x0d,0xe5,0x04,0x02,0x10,0x01,0x13,0x0b,0x0a,0x08,0x11,0x02,0x06,
- 0x0b,0xe5,0x49,0x01,0xe5,0x2a,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0a,0x10,0x05,
- 0x02,0x02,0x04,0xe7,0x07,0xe5,0xe5,0x03,0x01,0xe5,0x07,0x04,0x09,0x0a,0x1c,0x07,
- 0x0b,0x43,0x05,0x02,0xe6,0x2c,0x13,0xe5,0x07,0x07,0x01,0x04,0x13,0xe5,0x03,0x0e,
- 0x01,0x01,0x05,0x0c,0xe5,0x0a,0x1b,0x09,0x01,0xe5,0x12,0x42,0x06,0x02,0xe5,0x25,
- 0x04,0x01,0x13,0x02,0x04,0x04,0x07,0x01,0x09,0x09,0xe5,0xe6,0x04,0xe6,0xe6,0x03,
- 0xe9,0xe5,0x01,0xe9,0x03,0x01,0x01,0x04,0x02,0x06,0x02,0x09,0x09,0x06,0x02,0x04,
- 0x01,0x02,0x09,0x09,0x09,0x3b,0x02,0x02,0x2b,0xe5,0xe5,0x05,0x01,0xe5,0x08,0xe5,
- 0x07,0x10,0x02,0x09,0xe5,0x04,0xe5,0xe5,0x05,0x01,0xe5,0x03,0x03,0xe6,0x02,0x01,
- 0x45,0x0e,0x17,0x1d,0x0a,0x0a,0x01,0x01,0x0f,0x01,0x07,0x01,0x07,0x01,0x03,0x03,
- 0x01,0x04,0x02,0x01,0x01,0x05,0x01,0x07,0xe6,0xe5,0x04,0x01,0x07,0x01,0xe6,0x04,
- 0x01,0xe5,0x01,0x03,0x01,0x04,0x02,0xe6,0xe5,0x03,0xe5,0xe5,0x06,0x01,0xe6,0x01,
- 0x04,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x06,0xe5,0xe5,0xe6,
- 0x03,0x01,0xe5,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x03,0x07,0xe7,0x3e,0x02,0x06,0x01,0xe5,0x07,0xe5,0xe5,0x01,0xe7,0xe5,
- 0x01,0x03,0x0b,0x01,0xe5,0x05,0xe5,0x09,0x06,0xe6,0x09,0xe6,0x06,0x14,0x04,0x03,
- 0xe5,0x04,0x02,0xe5,0xe5,0x07,0x05,0x01,0x04,0x04,0xe5,0x41,0xe6,0x14,0x1b,0x0b,
- 0xe5,0x04,0x03,0x14,0x11,0x02,0xe5,0x05,0x08,0x03,0xe5,0x03,0xe5,0x01,0x07,0xe5,
- 0x04,0x09,0x09,0xe5,0x01,0x06,0x0d,0xe5,0x03,0x0b,0x02,0x02,0x04,0x01,0x3f,0x01,
- 0xe7,0x1e,0x05,0x01,0x0c,0x03,0x0a,0xe5,0x04,0x08,0x01,0x04,0x06,0x08,0x0e,0x03,
- 0x04,0x01,0x09,0x02,0x05,0xe6,0x02,0x03,0x05,0x1b,0x01,0x06,0x61,0xe8,0x24,0x05,
- 0xe5,0x01,0x02,0x02,0x08,0x0c,0x07,0xe5,0x09,0x09,0x07,0xe6,0x05,0x0c,0x04,0x10,
- 0x05,0x01,0x01,0x14,0x06,0x01,0x01,0x05,0xe6,0x01,0x09,0x0e,0xe6,0x3a,0x05,0x01,
- 0xe5,0x37,0x10,0x03,0x15,0x03,0x0a,0x06,0x09,0x15,0x05,0x05,0x01,0x03,0x08,0x0d,
- 0x02,0x08,0x1d,0x3d,0x02,0xe6,0x01,0x23,0x0a,0x07,0xe5,0x02,0x01,0x03,0x0d,0x09,
- 0x03,0x01,0x17,0x0d,0x05,0x09,0x02,0xe5,0xe5,0x24,0x01,0x01,0x08,0xe5,0x03,0x0e,
- 0xe5,0x47,0x01,0x02,0x11,0x0c,0x02,0xe5,0x02,0x02,0x07,0x03,0x02,0x06,0x02,0x17,
- 0x02,0xe5,0x0c,0x04,0x01,0x0a,0x0f,0x03,0x06,0x10,0x01,0x07,0x0a,0x03,0x07,0x0b,
- 0x01,0x02,0x04,0xe5,0xe5,0x31,0x15,0x01,0xe5,0xe5,0x20,0x05,0x0d,0x09,0x02,0x16,
- 0x03,0x06,0x1a,0x0e,0x05,0x04,0xe5,0x27,0x02,0x05,0x14,0x4d,0x02,0x47,0x08,0x12,
- 0x03,0xe5,0x01,0x05,0xe6,0x06,0xe6,0x0b,0xe5,0x02,0x07,0x01,0x07,0x07,0x0f,0xe5,
- 0x11,0xe6,0x10,0xe6,0x48,0xe5,0xe5,0xe5,0x13,0x39,0x1a,0x04,0x04,0x09,0x0e,0x02,
- 0x09,0x05,0x19,0xe5,0x01,0x11,0x02,0x01,0x06,0x02,0x04,0x0d,0x3c,0x01,0xe6,0x27,
- 0x09,0x02,0x01,0x02,0x21,0x06,0x04,0x07,0x02,0x09,0x0a,0x1b,0x14,0x01,0x09,0x04,
- 0x02,0x01,0xe5,0x05,0x01,0x01,0x04,0xe5,0xe5,0x48,0xea,0x09,0x19,0x11,0x07,0x01,
- 0xe5,0x03,0x10,0x02,0x06,0x0b,0x03,0x01,0x02,0x04,0xe5,0x17,0x0b,0x08,0x18,0x0a,
- 0x01,0x07,0x09,0x35,0x16,0x01,0x05,0xe5,0x1d,0x11,0x03,0x07,0x13,0x13,0x10,0x11,
- 0x1f,0x18,0x06,0x09,0x04,0x04,0x02,0x09,0x38,0x05,0xe6,0xe7,0x32,0x0d,0xe5,0x25,
- 0x12,0xe5,0x08,0x01,0xe5,0x05,0x01,0xe5,0x11,0x13,0x0c,0xe5,0xe5,0x02,0x05,0x0d,
- 0x46,0x03,0x01,0x02,0x01,0x1d,0x08,0xe5,0x07,0xe6,0x03,0xe5,0x25,0x01,0x11,0x01,
- 0x0b,0x02,0x01,0xe5,0x04,0x02,0xe5,0x10,0x0d,0x01,0x0a,0x06,0xe5,0xe6,0xe5,0x05,
- 0xe5,0x0a,0x44,0x02,0xe6,0x01,0xe5,0x03,0x19,0x01,0x0c,0x04,0x01,0x0a,0x03,0x0f,
- 0x01,0x04,0x01,0xe5,0xe5,0x0a,0x12,0xe6,0x05,0x35,0x01,0xe5,0x03,0x04,0xe5,0xe5,
- 0xe5,0x06,0x01,0x04,0xe5,0xe5,0xe5,0x3f,0x01,0x02,0x05,0x02,0x02,0x28,0x06,0x08,
- 0xe5,0x01,0x13,0x01,0x04,0x02,0x01,0x1c,0x42,0xe5,0x01,0x06,0x02,0x01,0x04,0x02,
- 0x01,0x03,0xe5,0x01,0x01,0x40,0xe5,0x04,0x02,0x01,0xe6,0x23,0x05,0x02,0x05,0xe5,
- 0x06,0x01,0x02,0x02,0xe5,0x01,0x12,0x01,0x06,0x01,0x05,0x06,0x06,0x03,0xe5,0x06,
- 0x06,0x34,0x01,0x05,0xe6,0xe5,0x01,0xe5,0xe7,0xe6,0x02,0x01,0x03,0x05,0x42,0xe7,
- 0xe5,0x01,0x26,0x01,0x03,0x03,0x01,0x03,0x02,0x01,0xe5,0x02,0x02,0x01,0x0e,0x09,
- 0x02,0x01,0x0e,0x01,0x01,0xe5,0x02,0x0d,0xe6,0x33,0x01,0x01,0x03,0x01,0x01,0x01,
- 0x04,0xe5,0xe6,0x01,0x02,0x02,0xe5,0x03,0x3e,0x03,0x01,0x01,0x01,0xe5,0x2b,0x11,
- 0x01,0x01,0x0f,0x01,0x07,0x01,0x02,0xe6,0x05,0x07,0x0a,0x08,0x19,0xe5,0x1f,0x01,
- 0x07,0x01,0x01,0xe5,0x01,0x01,0x01,0x07,0x01,0x4a,0x01,0xe6,0x2a,0x13,0x04,0x0e,
- 0x01,0x07,0x01,0x02,0x09,0x15,0x01,0x05,0x33,0x04,0x01,0x07,0x01,0x02,0x04,0x01,
- 0xe5,0x05,0x01,0xe5,0x4b,0xe5,0x26,0x13,0xe5,0x07,0x02,0x06,0x13,0xe5,0x04,0x0c,
- 0x02,0x26,0x02,0x06,0x13,0x02,0x06,0x02,0x06,0xe5,0x04,0x09,0x02,0xe5,0x43,0x04,
- 0x28,0x01,0x1b,0xe5,0x07,0x01,0x11,0x05,0xe5,0x0b,0xe5,0x03,0x0a,0x02,0x06,0x0b,
- 0x0e,0x0e,0x02,0x11,0x01,0xe5,0x07,0x06,0x02,0x46,0x02,0xe5,0x0d,0x09,0x06,0x02,
- 0x03,0x05,0x09,0x02,0x03,0x02,0x09,0x03,0x05,0x02,0x03,0x02,0x03,0x05,0xe6,0x06,
- 0x02,0x03,0x02,0xe5,0x07,0x05,0x03,0x0b,0x09,0x09,0x09,0x03,0x05,0x09,0x06,0x02,
- 0xe5,0x01,0x05,0xe6,0xe5,0x04,0x09,0x09,0x09,0x09,0x09,0x0d,0x01,0x02,0x02,0x1c,
- 0xe5,0x12,0x08,0xe5,0x08,0x12,0xe5,0x1b,0x3e,0x1c,0x0a,0x4d,0xe5,0x01,0x1f,0x11,
- 0x0a,0x09,0x12,0x39,0x0b,0x17,0x05,0x1f,0x51,0x01,0xe5,0x23,0x12,0x07,0x01,0x09,
- 0x11,0x01,0x0a,0xe6,0x03,0x01,0x04,0x02,0x02,0x0b,0x01,0x07,0x06,0x01,0x02,0x09,
- 0x0e,0x04,0x03,0xe5,0xe5,0x03,0x02,0x01,0x02,0x04,0x01,0xe5,0x02,0x05,0x01,0x47,
- 0xe5,0x01,0x35,0x01,0xe5,0x05,0x01,0xe6,0x04,0x02,0x0d,0x01,0xe5,0xe7,0x08,0x04,
- 0xe5,0xe6,0x05,0x02,0x03,0x06,0x01,0x07,0x07,0x01,0xe6,0x03,0x03,0xe5,0x0e,0x02,
- 0xe5,0x04,0x01,0xe5,0x05,0x01,0x01,0x05,0x01,0x09,0x01,0x41,0x04,0x01,0xe6,0xe6,
- 0x21,0x13,0x07,0x01,0x03,0x03,0x01,0x11,0x0c,0x06,0x09,0x09,0x01,0x1d,0x01,0x0e,
- 0x01,0x06,0x02,0x02,0x04,0x04,0x07,0x01,0x4a,0x09,0x03,0x15,0xe5,0x07,0xe6,0x06,
- 0xe5,0x07,0xe5,0x01,0x05,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x01,0x05,
- 0xe5,0x05,0xe5,0xe6,0x06,0xe6,0x06,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x09,0xe6,0xe5,
- 0x04,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe6,0xe5,0x04,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0x03,0x01,0xe5,
- 0x01,0x37,0x0a,0x06,0x01,0x0a,0x06,0x01,0xe5,0x08,0xe5,0x04,0x01,0xe5,0x05,0x02,
- 0x1c,0x01,0x1e,0x06,0x01,0x07,0x01,0x07,0x01,0x54,0x01,0xe6,0x34,0x01,0x07,0x09,
- 0x01,0x11,0x01,0x0d,0x02,0xe5,0xe6,0x08,0x1c,0x01,0x1b,0x02,0x06,0x01,0x07,0x01,
- 0x07,0x01,0x09,0x43,0x05,0x02,0xe6,0x36,0x0a,0x06,0x01,0x0a,0x06,0x01,0xe5,0x0c,
- 0xe7,0x08,0x1e,0x0a,0x01,0x27,0x09,0x4d,0x06,0x01,0xe6,0x34,0x01,0x0c,0x04,0x01,
- 0x0a,0x06,0x01,0xe5,0xe5,0x08,0xe5,0x02,0x02,0x09,0x0b,0x09,0x0b,0x04,0x01,0x02,
- 0x13,0x10,0x02,0x04,0x01,0x0c,0x45,0x01,0x01,0xe6,0x20,0x01,0xe5,0x11,0xe5,0x05,
- 0xe5,0xe5,0x13,0x05,0x27,0xe5,0xe5,0x39,0xe5,0xe5,0x19,0x4d,0x02,0x11,0x01,0x07,
- 0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,0xe5,0x01,0x03,0x01,0x07,0x01,0x07,0x01,
- 0xe5,0x02,0x02,0x01,0xe5,0x04,0xe5,0xe7,0x04,0x01,0x01,0x05,0x01,0x01,0x01,0x03,
- 0x01,0xe5,0xe5,0x03,0x01,0xe5,0x02,0x03,0xe5,0xe5,0x06,0x01,0x02,0x04,0x01,0x01,
- 0x05,0x01,0x03,0x03,0x01,0x02,0x04,0xe6,0x06,0x01,0x04,0x01,0xe5,0xe5,0x06,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x0a,0x02,0xe5,0x21,
- 0x05,0x19,0x0c,0x05,0x03,0x05,0xe5,0x09,0xe5,0x07,0x01,0xe6,0x06,0x05,0xe5,0x18,
- 0x01,0x31,0x4d,0x09,0xe5,0xe7,0x28,0x15,0x01,0x0a,0x04,0x0a,0x01,0xe5,0x02,0x0a,
- 0x14,0x01,0x11,0x01,0x24,0x09,0x12,0x50,0xe5,0xe5,0xe5,0x25,0x03,0x09,0x19,0x01,
- 0xe5,0x01,0x0b,0x0e,0x05,0x01,0x07,0x07,0x11,0x09,0x09,0x06,0x7a,0x02,0x35,0x01,
- 0x01,0x04,0xe5,0x08,0x01,0x0b,0x03,0x01,0x0c,0x03,0x0c,0x01,0xe5,0x05,0xe5,0xe6,
- 0x07,0x03,0x16,0x0d,0x07,0xe6,0x12,0x4f,0x06,0xe7,0x1e,0x17,0xe5,0x06,0x03,0x03,
- 0x01,0x13,0x18,0x03,0xe5,0x01,0x0c,0x0b,0x2a,0x13,0x51,0x02,0xe6,0xe7,0x12,0x04,
- 0x08,0xe5,0x10,0x07,0xe5,0x0f,0x07,0x08,0x12,0x02,0x02,0x05,0x08,0x08,0x03,0x03,
- 0x03,0xe5,0x0d,0x0b,0x16,0x0c,0x2a,0x24,0x01,0x01,0xe6,0x15,0x06,0x02,0x21,0xe5,
- 0x03,0x13,0x01,0x0c,0x03,0xe5,0x0b,0x09,0x02,0x04,0x01,0x06,0x01,0xe5,0x28,0x0f,
- 0x10,0x07,0x3d,0xe9,0x13,0x02,0x02,0xe5,0x04,0x10,0x11,0x06,0x0b,0x0c,0x0c,0x02,
- 0x17,0x0c,0xe6,0x0f,0x09,0x6e,0x0b,0xe6,0x07,0x21,0x0c,0x07,0x02,0x15,0x08,0x04,
- 0xe7,0x0c,0x03,0x02,0x01,0x06,0x02,0x04,0x01,0x06,0x01,0xe7,0x1f,0x0b,0x0b,0x07,
- 0x04,0x48,0xe9,0x2a,0x0d,0x07,0x04,0x09,0x19,0x03,0x0e,0x0c,0x06,0x07,0x04,0xe5,
- 0xe5,0x31,0x02,0x03,0x53,0x01,0xe5,0x18,0x09,0x0c,0x06,0x10,0x0a,0x01,0x04,0xe5,
- 0xe5,0xe5,0xe5,0x01,0x06,0x02,0x04,0x2b,0x07,0x07,0x01,0x33,0x47,0x02,0xe6,0x09,
- 0x17,0x32,0x09,0x06,0x18,0xe5,0x06,0x1e,0xe5,0x07,0x32,0x04,0x45,0x02,0x17,0x1d,
- 0x1f,0x01,0x07,0x04,0x0c,0x2d,0x05,0x01,0x09,0x17,0x0a,0x59,0x01,0x01,0x01,0x19,
- 0x09,0x09,0xe5,0x03,0x02,0x0a,0x0f,0x02,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x28,
- 0xe5,0x32,0xe5,0x04,0x4e,0x01,0x03,0x01,0x02,0x01,0x16,0x09,0x08,0x13,0x10,0x03,
- 0x09,0x05,0x02,0x01,0x01,0xe5,0x0a,0xe5,0x07,0x18,0x35,0xe5,0x55,0x02,0x01,0xe5,
- 0x03,0x0f,0x01,0x02,0x04,0xe5,0x11,0x01,0xe5,0xe5,0x0d,0x01,0x0a,0x04,0x0a,0xe5,
- 0x0d,0x01,0x07,0x5d,0x53,0xe5,0xe6,0xe5,0x10,0xe5,0xe5,0x05,0x13,0x02,0x01,0x0e,
- 0x0c,0x10,0x0c,0x09,0x09,0xa2,0x02,0x01,0x01,0xe8,0x1a,0x02,0x03,0x02,0x01,0x01,
- 0x08,0x13,0x0a,0xe5,0x08,0x06,0xe6,0x05,0x02,0x09,0x02,0x03,0x02,0x09,0xe5,0xe5,
- 0x0a,0x3e,0x50,0xe5,0xe5,0xe6,0xe5,0x01,0x11,0x04,0x01,0x01,0xe5,0x03,0x03,0x0e,
- 0x02,0x01,0x0e,0x01,0x01,0xe6,0x02,0x09,0x02,0x01,0xe5,0x02,0x04,0x04,0x02,0xe7,
- 0x02,0x02,0x01,0xe5,0x01,0x04,0x01,0x01,0x01,0x09,0x8a,0x03,0xe6,0xe8,0x17,0x04,
- 0x02,0x04,0x02,0x0b,0x01,0x02,0x0e,0x09,0x09,0x11,0x08,0x04,0x0a,0x06,0x01,0x04,
- 0x06,0x3d,0x52,0x01,0xe7,0x1a,0x01,0xe6,0x01,0x02,0x09,0x04,0x01,0x04,0x01,0x0c,
- 0x07,0x1a,0x01,0x07,0xe5,0xe5,0x05,0x02,0x06,0x01,0xe5,0xe5,0x02,0xe6,0x04,0x02,
- 0x3b,0x01,0x01,0x4c,0x02,0x01,0x1a,0x02,0x02,0x1a,0x02,0x06,0xe5,0x07,0x02,0x1a,
- 0x02,0x06,0x01,0xe5,0x07,0x04,0x02,0xe5,0x4c,0x53,0x03,0x1b,0x20,0x09,0x09,0x1d,
- 0x10,0x08,0xe5,0x01,0x06,0x0b,0x3a,0xe5,0x51,0xe9,0x0d,0x06,0x02,0x01,0x07,0x06,
- 0x02,0x06,0x02,0x03,0x05,0x03,0x02,0x02,0x05,0x03,0x04,0x01,0x02,0x02,0x06,0x03,
- 0x05,0x09,0x04,0x01,0x02,0xe5,0x01,0x05,0x02,0x08,0x09,0x09,0x09,0x09,0x09,0x09,
- 0xe6,0x06,0x09,0x09,0x09,0x09,0x09,0x09,0x06,0x06,0x01,0xe5,0xe5,0x01,0x12,0xe5,
- 0x08,0x06,0x02,0x08,0xe5,0x11,0xe5,0x1c,0x1d,0xa0,0x08,0xe5,0xe6,0x14,0x09,0x08,
- 0x0a,0x13,0x1b,0x1b,0x01,0x11,0x9c,0x01,0x1a,0xe6,0xe5,0x06,0x04,0x09,0x0e,0x04,
- 0x01,0x09,0x07,0x01,0x07,0x01,0x07,0x01,0x0c,0x07,0x01,0x03,0xe5,0x03,0x0b,0x06,
- 0x09,0x28,0xe6,0x54,0x17,0x01,0x01,0x07,0x01,0x07,0x01,0x07,0xe5,0x02,0x06,0x05,
- 0x01,0xe5,0x07,0xe5,0x04,0x02,0xe5,0x04,0xe5,0xe6,0x02,0x02,0x01,0xe5,0x09,0x08,
- 0xe5,0xe5,0x04,0xe6,0x01,0x08,0x01,0x05,0xe5,0x07,0xe5,0x27,0x52,0xe5,0xe6,0x13,
- 0x04,0x01,0x02,0x0c,0x09,0x09,0x09,0x0b,0x07,0x01,0x07,0x09,0x13,0x01,0x07,0x11,
- 0x02,0x02,0x06,0x02,0x22,0x06,0x01,0x52,0xe6,0x14,0xe6,0x06,0xe5,0x01,0x05,0xe5,
- 0x01,0x05,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x03,0x01,0xe5,0x01,0x05,0xe5,0x01,
- 0x05,0xe5,0x01,0x03,0xe8,0x05,0xe6,0x05,0x01,0xe6,0xe5,0x02,0xe7,0x01,0x04,0xe6,
- 0x09,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0xe5,0x18,0x11,0x1d,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0xe6,0x04,0x01,0xe6,
- 0x07,0x13,0x0a,0x09,0x09,0x28,0x54,0x02,0x17,0x0b,0x09,0x1b,0x01,0x05,0x01,0x01,
- 0x09,0x07,0x01,0x04,0x01,0xe5,0xe5,0x05,0x03,0x02,0x02,0x09,0x03,0x03,0x01,0x02,
- 0x0b,0x09,0x28,0x4c,0x05,0xe6,0xe6,0x0b,0x0c,0x11,0x13,0x09,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x05,0x01,0x01,0x06,0x0a,0x01,0x05,0xe6,0x0b,0x02,0x09,0x09,0x75,0x06,
- 0x03,0x17,0x04,0x06,0x02,0x06,0x02,0x10,0x02,0x04,0x01,0x07,0x01,0x09,0x09,0xe5,
- 0x02,0xe7,0x01,0x05,0x05,0xe5,0xe6,0x01,0x02,0xe8,0x04,0x01,0x01,0x02,0x04,0x06,
- 0x09,0x2a,0x4f,0x01,0xe5,0x01,0xe5,0x15,0xe5,0xe5,0x19,0x02,0x1a,0xe5,0xe5,0x05,
- 0x09,0x02,0x04,0x15,0x04,0x11,0x01,0x90,0x01,0xe5,0x10,0x01,0x04,0x02,0x01,0x07,
- 0x01,0x07,0x01,0x04,0x02,0x01,0x07,0x01,0x02,0x03,0xe5,0xe5,0x02,0x03,0x01,0xe5,
- 0x05,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x07,0x01,0x06,0xe5,0xe5,0x06,0x01,0x01,
- 0x02,0x04,0x01,0x06,0xe5,0xe5,0x06,0x01,0x07,0x01,0x07,0x01,0x06,0xe5,0xe5,0x06,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0c,
- 0xe6,0x19,0x08,0x10,0xe5,0x18,0x05,0xe5,0x06,0xe6,0x05,0xe5,0x0d,0x0c,0x01,0xe7,
- 0x03,0x04,0x02,0x08,0x8e,0xe5,0xe7,0x14,0xe5,0x0d,0x17,0x0e,0xe5,0x01,0x02,0xe5,
- 0xe5,0x02,0x07,0x10,0xe5,0x03,0x03,0x07,0x1a,0xe5,0x08,0x80,0x01,0x02,0x22,0x11,
- 0x21,0x02,0x03,0x01,0x0a,0x05,0x09,0x06,0x05,0x05,0x0a,0xe5,0x19,0x0c,0x05,0x20,
- 0x46,0x02,0x0a,0x0e,0xe5,0x2f,0x07,0x01,0x18,0x15,0x02,0x09,0x09,0xe6,0x05,0x7f,
- 0x03,0x04,0xe5,0xe7,0x17,0x30,0x0b,0x01,0x03,0x2a,0x12,0x01,0x04,0x0a,0x09,0x72,
- 0x05,0xe5,0x01,0x3b,0x13,0x02,0xe5,0x01,0x1b,0xe5,0x09,0x03,0x08,0xe5,0x01,0x03,
- 0x05,0x0c,0xe5,0x0c,0x07,0x01,0x05,0x02,0x21,0x05,0x13,0x28,0xe5,0xe5,0xe5,0x09,
- 0x19,0x04,0x11,0x08,0x1d,0x02,0x04,0x06,0x01,0xe5,0x02,0x09,0x02,0x02,0x09,0x06,
- 0x04,0x06,0x01,0x06,0x05,0x0e,0x04,0x11,0x0a,0x0a,0x0a,0x2c,0x05,0x02,0xe5,0xe5,
- 0x41,0x01,0x07,0x01,0x01,0x07,0xe5,0x07,0x09,0x16,0x03,0xe5,0x0d,0x06,0x15,0x0e,
- 0xe5,0x66,0xe5,0xe6,0x05,0x2b,0x26,0x0e,0x04,0x03,0x09,0xe5,0x03,0x07,0x01,0x01,
- 0x07,0x03,0xe5,0x0c,0x27,0x10,0x4c,0x01,0xe6,0x38,0x0d,0x13,0x0a,0x03,0x06,0x0c,
- 0x1a,0x47,0x4c,0x02,0xe5,0x04,0x36,0x0f,0x12,0x1c,0x03,0x08,0x01,0x09,0x13,0x17,
- 0x0f,0x5b,0x02,0x01,0xe5,0x04,0x4b,0x16,0x01,0x09,0x09,0x05,0x01,0x19,0x82,0x0a,
- 0xe7,0x04,0x03,0x3c,0x16,0x0b,0x24,0x04,0x10,0x8b,0xe6,0xe5,0x46,0x0d,0x0c,0xe5,
- 0xe5,0x02,0x08,0xe5,0xe6,0x05,0x02,0xe5,0xe5,0x02,0x01,0xe5,0x06,0x14,0x4e,0xe5,
- 0x31,0x01,0x02,0xe6,0xe5,0xe5,0x45,0x0b,0x0f,0x0c,0x02,0xe5,0x07,0xe5,0x01,0xe6,
- 0x03,0xe5,0xe6,0x17,0x48,0x01,0x34,0x02,0x03,0xe6,0x03,0x44,0x06,0xe5,0xe5,0xe5,
- 0x01,0x0e,0x03,0x02,0x01,0x0a,0x01,0x01,0x02,0x01,0xe5,0xe5,0xe5,0x06,0x67,0x29,
- 0xe5,0x03,0x04,0x01,0xe6,0x01,0x48,0x07,0x01,0x04,0x0c,0x06,0x09,0x02,0x01,0x04,
- 0xe5,0xe5,0xe5,0x06,0x93,0xe5,0x05,0x05,0xe6,0x47,0x04,0x0c,0x08,0x01,0xe5,0x03,
- 0x02,0x01,0x07,0x06,0x09,0x03,0x02,0x02,0xe5,0x01,0x0c,0x1d,0x01,0x67,0x02,0x01,
- 0x02,0x06,0x02,0x3e,0x02,0x01,0x01,0x04,0x09,0x02,0x01,0xe5,0x02,0x05,0x03,0x09,
- 0x09,0x03,0x01,0x03,0x02,0x01,0x0c,0x1d,0x01,0x01,0x64,0x02,0xe8,0x47,0x09,0x01,
- 0x07,0x09,0x03,0x0f,0x01,0x01,0x07,0x01,0x02,0x01,0x02,0x01,0x01,0xe5,0x0d,0x1d,
- 0x01,0x6a,0xe6,0x4a,0x07,0x01,0x02,0x06,0x07,0x04,0x0e,0x01,0x02,0x04,0x04,0xe6,
- 0x01,0x05,0xe5,0x0d,0x04,0x18,0x01,0x6a,0xe7,0x57,0xe5,0x07,0xe5,0x11,0x02,0x10,
- 0x06,0x9a,0xe6,0xe6,0x4c,0xe5,0x0a,0x09,0x13,0xe5,0x0e,0x02,0x01,0x03,0xe5,0x14,
- 0x85,0x02,0xe5,0x0d,0x09,0x09,0x09,0x09,0x09,0x06,0x02,0x06,0x02,0x03,0x05,0x03,
- 0x05,0x09,0x09,0x09,0x02,0x02,0x03,0xe6,0x08,0x06,0x02,0x09,0x06,0x02,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x06,0x06,0xe7,0xe5,0x01,0x44,0xe5,0x03,
- 0x01,0x02,0x4e,0x02,0x12,0xe5,0x69,0x02,0x07,0x01,0xe6,0x46,0x08,0x38,0x18,0x13,
- 0x6c,0x0a,0xe6,0xe5,0x3d,0xe5,0xe5,0x03,0x02,0x01,0x09,0x13,0x07,0x01,0x0e,0x02,
- 0x01,0x02,0x04,0x01,0xe6,0x12,0x02,0x10,0x73,0x01,0xe5,0x3e,0x01,0xe5,0x07,0xe6,
- 0xe5,0x02,0x02,0xe5,0x07,0x08,0xe6,0x03,0xe5,0xe6,0x09,0x04,0xe5,0xe7,0x04,0x01,
- 0xe6,0x10,0x03,0x01,0x0d,0x02,0x72,0xe7,0x3e,0x01,0x07,0x01,0x06,0x06,0x05,0x09,
- 0x1b,0x06,0x01,0xe5,0xe5,0x14,0x03,0x0c,0x02,0x3f,0x32,0xe5,0x01,0x15,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x01,
- 0x03,0x01,0xe5,0x01,0x04,0x01,0x07,0xe6,0x05,0x02,0xe5,0x04,0x02,0xe5,0xe6,0x02,
- 0xe6,0x09,0xe6,0x06,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe6,0xe5,
- 0x48,0x01,0x17,0x03,0x01,0xe5,0x05,0x01,0x0a,0x06,0x01,0xe6,0x07,0xe5,0x01,0x24,
- 0x28,0x4b,0x01,0x49,0x01,0x19,0x01,0x01,0xe5,0x04,0xe5,0xe5,0x05,0x03,0x05,0xe5,
- 0xe5,0x05,0x09,0x20,0x2a,0x4c,0xe5,0x48,0x01,0x1b,0x01,0x04,0xe7,0xe5,0x03,0x01,
- 0x06,0x01,0xe6,0x04,0x01,0xe5,0x08,0x01,0x20,0x72,0xe8,0x48,0x01,0x02,0x09,0x0e,
- 0x01,0x02,0xe5,0x02,0x01,0x0c,0x01,0x02,0x04,0xe6,0x06,0x15,0x0e,0x2a,0x49,0x02,
- 0xe5,0x56,0x0f,0x01,0xe5,0x05,0x2e,0x05,0x01,0x17,0x60,0x0d,0xe7,0xe5,0x0e,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x07,
- 0x01,0xe6,0xe5,0x02,0x01,0x04,0x02,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0xe5,0x05,
- 0x01,0x04,0x04,0x01,0x02,0x04,0x01,0x07,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x0a,0xe8,0x0b,0x30,0x11,0x09,0x16,0x06,0x2f,0x0f,0x77,0xe5,0xe6,0x1c,0x0b,0x12,
- 0x0a,0x09,0x07,0x23,0x0e,0x07,0xe5,0x0c,0x09,0x05,0x5c,0x1b,0xe9,0x3c,0x05,0x13,
- 0x2b,0x04,0x10,0x06,0x06,0x35,0x11,0x0c,0x32,0x02,0x0a,0x34,0x01,0xe5,0x01,0x05,
- 0xe5,0x05,0xe7,0x05,0x02,0x06,0x01,0xe5,0x02,0x02,0x02,0x17,0xe5,0xe5,0xe5,0x12,
- 0xe6,0x0b,0x0c,0x10,0x5a,0x01,0xe7,0x3f,0xe5,0xe5,0xe5,0x02,0x0f,0x01,0x03,0x06,
- 0x01,0xe5,0x05,0x02,0x0d,0x01,0x0b,0x02,0x03,0x02,0x0b,0x12,0x04,0x02,0x29,0x0f,
- 0x33,0x01,0xe6,0x3a,0x05,0x0f,0x01,0x06,0x07,0x05,0xe5,0x1b,0xe5,0x08,0x03,0x03,
- 0x03,0x10,0x05,0x3b,0x09,0x03,0x1b,0x06,0x0b,0x01,0x01,0xe5,0x0b,0x23,0x0e,0x04,
- 0x11,0x10,0x02,0x04,0x06,0x09,0x04,0x03,0x05,0x01,0xe5,0x02,0x02,0x02,0x0b,0x0e,
- 0x04,0xe5,0x11,0x0c,0x06,0x4d,0x05,0x39,0x02,0x03,0x07,0x0b,0x0c,0x0d,0x02,0x07,
- 0xe5,0x04,0x02,0x01,0x05,0x01,0x04,0xe5,0x04,0x15,0x31,0xe5,0x36,0x10,0x05,0x47,
- 0x03,0x07,0x04,0x06,0x05,0x01,0x02,0xe6,0xe5,0x04,0x07,0x01,0x04,0x04,0x06,0x03,
- 0x01,0xe6,0x10,0x01,0x3a,0x13,0x0d,0x04,0xe6,0x17,0x01,0xe6,0x04,0x49,0x10,0xe5,
- 0x02,0x08,0x04,0x15,0x0f,0x03,0x4e,0x15,0x13,0x19,0xe6,0x04,0x39,0x01,0x04,0x06,
- 0x04,0x02,0x1a,0xe7,0x12,0x15,0x19,0x1b,0x09,0x26,0x29,0x02,0xe6,0x04,0x3a,0x11,
- 0xe6,0x14,0xe5,0x03,0x01,0x01,0x07,0x08,0xe5,0x01,0x02,0x06,0x07,0xe5,0x01,0x1e,
- 0x24,0x3f,0x09,0x03,0x05,0x3b,0x2b,0x0c,0x01,0x05,0x04,0x0e,0x05,0x0c,0x5c,0x27,
- 0xe6,0xe5,0x01,0x08,0x1a,0x09,0x25,0x06,0x02,0x11,0xe5,0x08,0x08,0xe5,0x0a,0x08,
- 0xe5,0xe5,0x05,0x01,0x07,0x21,0x09,0x22,0x1d,0x03,0x06,0x07,0xe6,0x07,0x01,0x41,
- 0xe5,0x12,0x06,0x01,0x06,0x02,0xe5,0x07,0xe5,0x07,0x07,0x01,0x09,0x09,0x09,0x09,
- 0x01,0xe5,0x04,0x21,0x12,0xe5,0x04,0x03,0x08,0xe5,0x07,0x06,0x05,0x07,0xe5,0xe6,
- 0xe8,0x54,0x02,0xe5,0x04,0x05,0x03,0xe5,0x07,0x01,0xe5,0x0b,0x06,0x01,0x10,0x02,
- 0xe5,0x04,0x02,0xe5,0x0e,0xe7,0x08,0xe5,0x04,0x09,0x02,0xe5,0x04,0x13,0x09,0x02,
- 0x01,0x04,0x09,0x09,0x0a,0xe8,0xe5,0x01,0x01,0x37,0xe5,0x14,0xe5,0x01,0x02,0xe5,
- 0x04,0x02,0x01,0x01,0xe5,0x0a,0x02,0xe5,0x0a,0x06,0x01,0x0c,0xe5,0xe5,0x02,0xe5,
- 0x04,0x11,0x01,0x01,0xe5,0x02,0x05,0xe5,0x01,0x01,0x07,0x01,0x03,0xe5,0x01,0x01,
- 0x03,0xe5,0x01,0x05,0xe5,0x01,0x03,0x01,0xe5,0x01,0x05,0xe5,0x01,0x02,0x06,0x02,
- 0x02,0xe5,0x04,0x07,0x01,0x02,0xe5,0x01,0x04,0x37,0xe5,0xe5,0x14,0x0e,0x01,0xe5,
- 0xe5,0xe5,0xe6,0x01,0x01,0x11,0x0e,0x08,0x22,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x09,0x06,0x02,0x06,0xe5,0xe5,0x06,0x01,0x0c,0x01,0x09,0x04,0xe5,0xe6,0x01,
- 0x38,0xe5,0x01,0x13,0x15,0x03,0xe5,0x01,0x01,0x11,0x05,0xe5,0x0d,0x1f,0x04,0x01,
- 0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,
- 0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0xe5,0xe5,0xe5,0x0a,0x03,0xe5,
- 0xe5,0x54,0x02,0x03,0x05,0x04,0x01,0x02,0x09,0x09,0x09,0x06,0x06,0x08,0x02,0x05,
- 0x09,0x09,0xe5,0x01,0x02,0x02,0x06,0x02,0x03,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,
- 0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x03,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01,
- 0x02,0x02,0x03,0x05,0x0c,0x01,0xe5,0x01,0x40,0x0f,0x03,0x03,0x0d,0x01,0x01,0x02,
- 0x04,0x14,0x08,0x01,0x01,0xe5,0x21,0x02,0x08,0x01,0x02,0x04,0x01,0x01,0xe5,0x03,
- 0x09,0x02,0x01,0x04,0x02,0x01,0x04,0x03,0x05,0x02,0x01,0x04,0x02,0x01,0x04,0x02,
- 0xe6,0x03,0x0a,0x05,0xe5,0x53,0x01,0x09,0x0b,0xe5,0x01,0x01,0x01,0x14,0x01,0x01,
- 0x1d,0x11,0x01,0x06,0x09,0x0b,0xe5,0x19,0x02,0x01,0x0e,0x0c,0x02,0x01,0x01,0x0c,
- 0x03,0x50,0x02,0x04,0x09,0x08,0xe5,0xe5,0xe6,0xe5,0x01,0x01,0x06,0x0a,0x01,0x01,
- 0x11,0x08,0xe5,0xe6,0x04,0xe7,0x03,0x02,0xe7,0x02,0x02,0xe6,0x03,0x02,0x01,0x01,
- 0x02,0x01,0xe5,0xe5,0xe5,0x01,0x01,0xe5,0xe5,0xe5,0x01,0x01,0xe7,0x03,0x02,0xe6,
- 0x03,0x01,0xe5,0xe5,0xe5,0x01,0x02,0x01,0x01,0x02,0x01,0xe5,0xe8,0xe5,0x01,0x0b,
- 0xe5,0xe6,0x08,0x47,0x07,0xe5,0x04,0x09,0x02,0x02,0x03,0x04,0x04,0x29,0x04,0x04,
- 0x06,0x09,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,
- 0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x09,0x0a,0x01,0x01,
- 0x0a,0x01,0x40,0x0c,0xe5,0x03,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x0b,0xe5,
- 0x10,0x08,0xe5,0x07,0xe5,0x08,0x02,0x05,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,
- 0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x03,0x02,0xe6,0x08,0x01,0xe7,0x07,0x05,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x06,0x02,0x09,0xe6,0x02,0xe5,0x01,0xe5,0x07,0xe6,0x06,0xe5,0x07,0x04,0x01,0x02,
- 0x0b,0x09,0xe5,0x07,0xe5,0x07,0x05,0xe6,0xe7,0x03,0xe5,0xe7,0x03,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe7,0x03,0xe5,0xe6,0x02,0x01,0xe5,0xe7,0x01,
- 0x01,0xe5,0xe6,0xe5,0x05,0x06,0x06,0xe5,0xe7,0x01,0x3b,0x10,0x02,0x10,0x02,0x27,
- 0x32,0xe6,0xe5,0x04,0xe6,0xe5,0x02,0x03,0x01,0x03,0x03,0x01,0x03,0x03,0x01,0x03,
- 0x03,0x01,0x03,0x02,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x0a,0x03,0x05,0x02,
- 0xe5,0xe6,0x3b,0x10,0x02,0x12,0x07,0x13,0x0b,0x1d,0x09,0x09,0x01,0x06,0x02,0x06,
- 0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x02,0x06,0xe5,0x02,0x04,0x04,0x04,0xe5,0x15,
- 0xe5,0x01,0x01,0x3d,0x01,0x0c,0x09,0x04,0x01,0xe7,0x02,0xe5,0xe6,0xe5,0x05,0xe7,
- 0x05,0xe5,0x02,0x02,0x04,0x10,0x04,0x07,0xe6,0x06,0xe6,0x03,0x01,0x02,0x07,0xe6,
- 0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,
- 0xe5,0x06,0x09,0x01,0x01,0x01,0x41,0xe5,0x09,0x08,0xe5,0x04,0x01,0xe6,0x01,0x02,
- 0x01,0xe6,0x06,0xe6,0x06,0xe6,0x04,0x03,0x02,0x01,0x03,0x08,0x03,0x01,0x07,0x09,
- 0x05,0x01,0xe6,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x01,0x06,0x0c,0x01,0x01,0x3f,0x01,0x13,0x0a,0x06,0x08,
- 0x02,0x01,0x07,0x03,0x0d,0x01,0x09,0x05,0x10,0x0c,0x02,0xe5,0x07,0xe5,0x07,0xe5,
- 0x02,0x04,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x02,0x04,0xe5,0x01,0x05,0xe5,0x08,0x02,
- 0x03,0x08,0x0a,0x02,0xe5,0x14,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,
- 0x05,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x05,0xe7,0x01,0x03,0xe5,0xe5,0x01,0x03,0x01,
- 0xe5,0x01,0x05,0xe5,0x07,0xe6,0xe5,0x05,0x02,0x08,0x03,0x02,0xe7,0x05,0xe7,0x05,
- 0xe7,0x01,0xe5,0x01,0xe7,0x01,0xe5,0x01,0xe7,0x01,0x03,0xe7,0x01,0x03,0xe7,0x01,
- 0xe5,0x01,0xe7,0x01,0x03,0xe7,0x01,0x03,0xe7,0x01,0xe5,0x01,0xe7,0x01,0x03,0xe7,
- 0x06,0xe6,0x07,0xe7,0x3e,0x01,0x0a,0x10,0x01,0x07,0x01,0xe6,0x06,0xe5,0x07,0x07,
- 0x22,0xe5,0x0e,0x01,0xe6,0x01,0x02,0x02,0x06,0x02,0xe5,0x04,0x02,0x06,0x09,0x02,
- 0x06,0x02,0x06,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x06,0x09,0x03,0x41,
- 0x1b,0x01,0x03,0x02,0xe5,0xe5,0x03,0x01,0x02,0xe5,0x01,0x05,0x07,0x1e,0x06,0x02,
- 0x06,0x02,0xe5,0xe5,0x05,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
- 0x02,0x02,0xe5,0x01,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
- 0x02,0x02,0x06,0x0b,0x3f,0x01,0x0a,0x08,0x0e,0xe5,0xe5,0x04,0x01,0xe5,0x01,0x05,
- 0x03,0x13,0x05,0x02,0x08,0xe5,0x06,0xe5,0x07,0xe5,0x06,0x01,0x04,0x03,0xe5,0x07,
- 0xe5,0x03,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x02,0x05,0x09,0x01,0xe5,0x40,0xe5,0x0a,0x09,0x09,0xe5,0xe6,0x01,0x02,0x01,
- 0x04,0x02,0xe5,0xe5,0x02,0x02,0x09,0x04,0x02,0x0d,0xe6,0x06,0xe5,0xe6,0x04,0xe5,
- 0xe6,0x04,0xe8,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe7,0x03,0xe5,
- 0xe6,0x08,0xe6,0x68,0xe5,0x19,0x09,0x02,0x0c,0x0a,0x08,0x05,0xe5,0xe5,0x03,0x01,
- 0xe5,0xe5,0x05,0xe5,0xe5,0x06,0x01,0xe5,0x04,0xe5,0xe5,0x05,0xe5,0xe5,0x06,0x01,
- 0x08,0xe5,0x02,0x03,0x01,0x04,0x02,0x01,0x18,0xe7,0x10,0x01,0x07,0x01,0x07,0x01,
- 0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0xe5,0xe5,
- 0x03,0x01,0xe5,0x05,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x01,0x01,0x03,0x01,0x04,
- 0x04,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0xe5,0x02,0x02,0x01,0x04,0x02,0xe6,
- 0x06,0x01,0x01,0x02,0x02,0x01,0x04,0x02,0x01,0xe6,0x04,0x01,0x07,0x01,0x07,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0x0a,0xe5,0xe6,0x15,0x2c,0x07,0xe5,0x01,0x05,0x04,
- 0x04,0x13,0xe5,0x07,0xe5,0x06,0x03,0x04,0x05,0x09,0x08,0x12,0xe5,0x07,0x03,0x01,
- 0x0e,0x02,0x09,0x0f,0xe5,0x03,0x07,0x06,0x02,0x05,0x09,0xe5,0x0c,0x03,0xe5,0x3c,
- 0x06,0x04,0xe5,0x02,0x11,0x0e,0x01,0x07,0x01,0x02,0x03,0x06,0x03,0x04,0x01,0xe5,
- 0x08,0x02,0x01,0x06,0x0b,0x01,0x11,0x05,0x04,0x02,0x05,0x05,0x09,0x05,0x0f,0x02,
- 0x07,0x05,0x04,0xe5,0x09,0x04,0xe5,0x02,0x44,0x09,0x05,0x0a,0x05,0x09,0x02,0x0a,
- 0x18,0xe5,0xe6,0x02,0x0a,0x0a,0x06,0x08,0x19,0x0a,0x0c,0x03,0x19,0x0a,0x10,0xe7,
- 0x46,0x0c,0x01,0x03,0x04,0x03,0x05,0x03,0xe5,0x05,0x02,0x06,0x09,0x04,0xe6,0x02,
- 0x07,0x1e,0x03,0x02,0xe7,0x05,0x04,0x06,0x07,0xe7,0x05,0x01,0x07,0x01,0xe5,0x07,
- 0x07,0x01,0x07,0x01,0x07,0xe6,0x0c,0xe6,0xe6,0x51,0x30,0x05,0x02,0xe5,0xe5,0x07,
- 0xe6,0x08,0x10,0x0e,0x05,0x05,0x03,0x03,0x09,0x08,0x01,0x09,0x08,0x08,0x02,0x06,
- 0x02,0x06,0x10,0x03,0xe5,0x43,0x0d,0x05,0x20,0x10,0x08,0xe5,0x02,0x01,0x04,0x0a,
- 0x1c,0x17,0x06,0x01,0x0b,0x01,0x09,0x03,0x08,0x06,0x17,0x02,0xe6,0x3c,0x01,0x16,
- 0x09,0x02,0x03,0x02,0x01,0x04,0x02,0x09,0xe5,0x07,0x10,0xe5,0x2a,0x0b,0xe5,0x05,
- 0x09,0x09,0x06,0xe5,0xe5,0x05,0x04,0x0e,0xe6,0x12,0x08,0x03,0x3d,0x0c,0x08,0x01,
- 0xe5,0x0d,0x06,0x02,0x01,0x13,0x03,0x0b,0x37,0x16,0x0c,0x03,0x05,0x02,0x03,0x06,
- 0x20,0x02,0xe5,0x34,0x10,0x0d,0x02,0x01,0x07,0x08,0x04,0x08,0x03,0x01,0x0b,0xe5,
- 0x07,0x03,0xe6,0x1a,0x0c,0x01,0x07,0xe5,0x05,0x04,0x20,0x03,0xe5,0xe5,0x05,0xe5,
- 0x0f,0x01,0xe5,0x0e,0x01,0xe6,0x34,0x0d,0x0b,0x05,0x0d,0x19,0x02,0x0c,0x0b,0x30,
- 0x02,0xe5,0x31,0x0a,0x13,0x0e,0xe5,0xe6,0x3c,0x07,0xe5,0x09,0x0c,0x1d,0x18,0x10,
- 0x19,0x10,0x15,0x04,0x0c,0x04,0xe6,0x02,0xe5,0x02,0xe5,0x02,0xe5,0x01,0x01,0x03,
- 0x04,0x11,0x01,0x3c,0x0b,0x03,0x02,0x09,0x04,0xe5,0x1c,0xe5,0x01,0x08,0x0a,0x07,
- 0x01,0x07,0x09,0x3e,0x03,0xe5,0xe5,0x08,0x07,0x01,0x07,0x01,0x0f,0x08,0x02,0xe5,
- 0x4c,0x02,0x06,0x07,0x0d,0x0d,0x01,0x03,0x13,0x07,0x07,0xe5,0x08,0x05,0x06,0x1e,
- 0x0b,0x02,0x04,0x10,0x07,0x04,0x09,0x15,0xe5,0x01,0x01,0x3d,0x10,0xe5,0x04,0x09,
- 0x02,0x01,0x07,0x01,0x04,0x05,0x0f,0xe5,0x07,0xe5,0x0a,0xe5,0x04,0x08,0xe5,0x15,
- 0x01,0x04,0x08,0xe5,0x25,0xe5,0x08,0x1e,0x01,0x02,0xe6,0xe5,0xe5,0x39,0xe6,0x06,
- 0x17,0x0c,0x01,0x0a,0x04,0x0a,0xe5,0x07,0xe5,0x03,0xe5,0x03,0xe5,0x0f,0x16,0x01,
- 0x07,0xe5,0x25,0xe5,0x03,0x03,0x01,0x1e,0x01,0x02,0xe8,0xe5,0x03,0x3a,0x01,0x0c,
- 0x08,0x01,0xe5,0x11,0xe5,0x05,0x05,0x06,0xe5,0xe5,0x16,0x0a,0xe5,0x26,0x09,0x16,
- 0xe5,0x06,0xe5,0x0f,0x15,0xe5,0x01,0x01,0x05,0x01,0xe5,0x01,0x3c,0x01,0x07,0x0a,
- 0x04,0xe5,0x11,0xe5,0x0b,0x06,0xe5,0x02,0x13,0x0a,0x55,0x26,0xe5,0x05,0x03,0xe8,
- 0x08,0x01,0x32,0x0e,0x01,0x01,0x03,0x01,0x04,0x01,0x07,0x01,0x02,0x04,0x01,0x07,
- 0x04,0x0b,0x01,0x0e,0x02,0x07,0xe5,0x27,0x27,0x02,0xe5,0x0e,0x04,0x01,0x17,0xe6,
- 0x01,0x02,0x3c,0x09,0x02,0x01,0x07,0x06,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x03,
- 0x1b,0x03,0x01,0x02,0x03,0x54,0x15,0x01,0x01,0x10,0x03,0x04,0xe6,0x3d,0x0c,0x01,
- 0x07,0xe5,0x0e,0x01,0x01,0xe7,0x0b,0x03,0x02,0x02,0x06,0x09,0x06,0x01,0x02,0x05,
- 0x03,0x24,0xe5,0xe5,0x23,0x02,0x09,0x01,0x0a,0x01,0x19,0xe7,0x3e,0x09,0x04,0x01,
- 0x01,0x03,0x01,0x09,0x04,0x01,0x03,0xe5,0x06,0x04,0x04,0xe7,0x02,0x02,0x01,0xe6,
- 0x06,0xe5,0x02,0x04,0x01,0xe6,0x02,0x04,0x24,0x01,0xe5,0x1e,0x07,0x01,0x06,0x01,
- 0x04,0xe5,0x03,0x01,0x19,0x02,0xe5,0x43,0xe5,0x04,0x02,0xe5,0x18,0x2c,0x38,0x04,
- 0x1b,0x13,0x02,0x03,0x1a,0xe5,0x03,0xe9,0x42,0x02,0x05,0x14,0x08,0xe5,0x08,0x13,
- 0x09,0x02,0x12,0x0c,0xe5,0x17,0xe6,0x20,0x04,0x02,0x09,0xe5,0x03,0xe5,0x01,0x17,
- 0x08,0xe6,0x0d,0x09,0x09,0x09,0x09,0x06,0x02,0x04,0xe6,0x01,0xe5,0x04,0x02,0xe5,
- 0x07,0x09,0xe6,0x03,0x02,0x09,0x09,0x09,0x04,0xe6,0x03,0x04,0x01,0x02,0xe5,0x07,
- 0x09,0x09,0x09,0xe6,0x06,0x09,0x09,0x09,0x01,0x01,0x05,0x04,0x01,0x02,0xe5,0x01,
- 0x05,0x09,0x0d,0xe6,0x01,0x02,0x3a,0xe5,0x03,0x04,0x06,0x1d,0x02,0x27,0x38,0x22,
- 0x13,0x26,0xe5,0xe5,0x3c,0x07,0x29,0x23,0x03,0x11,0x47,0x15,0x05,0x21,0xe7,0x4b,
- 0x08,0xe5,0x0a,0x07,0xe5,0x04,0x04,0x06,0x0c,0x04,0x01,0x02,0x06,0x01,0x07,0x01,
- 0xe5,0xe5,0x05,0x02,0x1b,0xe6,0x17,0x0b,0xe6,0x06,0xe6,0x03,0x02,0xe5,0xe5,0x05,
- 0x1c,0x3e,0x03,0xe5,0xe5,0x01,0x03,0xe5,0x04,0x02,0xe5,0x01,0x02,0x03,0x01,0x07,
- 0x07,0x01,0x01,0x05,0xe6,0x08,0x01,0x03,0x01,0xe6,0x01,0x06,0xe6,0x03,0x02,0xe6,
- 0x06,0xe6,0x0b,0x09,0x06,0x19,0x03,0x09,0x04,0x0d,0xe5,0x06,0xe5,0x0f,0x04,0x05,
- 0x32,0x09,0x02,0x09,0x01,0x06,0x02,0x0d,0xe5,0x0b,0x05,0x05,0x07,0x01,0x10,0x02,
- 0x01,0x04,0x02,0x01,0x06,0x06,0x14,0x05,0x17,0x09,0x06,0x09,0x11,0x19,0x02,0x15,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe6,0xe5,0x04,0xe6,0x06,
- 0xe6,0x06,0xe5,0x02,0x02,0xe7,0x01,0x05,0xe5,0x01,0x03,0x01,0xe6,0xe5,0x04,0xe5,
- 0x06,0xe6,0x03,0x05,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x05,0x01,0xe5,0x05,0xe7,0x07,0xe5,0x01,0x03,0xe7,
- 0x07,0xe6,0x03,0x01,0xe6,0xe5,0x37,0x1a,0x01,0xe5,0x12,0xe5,0x01,0x01,0x09,0x02,
- 0xe5,0x04,0x09,0xe5,0xe5,0x05,0x02,0x01,0x07,0x01,0xe5,0x1c,0x09,0xe5,0x18,0x0c,
- 0x05,0x09,0x03,0x05,0x02,0x03,0xe5,0xe5,0x02,0x0d,0xe8,0x37,0x0e,0x0b,0x01,0x07,
- 0x11,0xe5,0x08,0x02,0xe5,0x03,0xe5,0x07,0xe6,0xe5,0x03,0x01,0x04,0x09,0x1e,0x24,
- 0x11,0xe5,0x06,0xe6,0x02,0x05,0x02,0x05,0xe5,0x02,0x11,0x49,0x09,0x01,0xe5,0x15,
- 0x01,0x0d,0x03,0x01,0x09,0x0c,0xe5,0xe5,0x06,0x01,0xe5,0x4e,0x02,0x01,0x07,0x01,
- 0x0d,0x05,0x14,0x01,0x0c,0x2b,0x0b,0xe5,0x04,0x02,0x04,0x01,0x02,0x04,0x04,0x09,
- 0xe5,0x07,0x01,0x04,0x02,0x09,0xe6,0x06,0x01,0x06,0xe5,0xe5,0x05,0x02,0x09,0x11,
- 0x0b,0x1d,0x09,0xe6,0x04,0x03,0x07,0x01,0x04,0x04,0x05,0x0e,0x02,0x3f,0xe5,0xe5,
- 0x02,0x02,0x03,0xe5,0x0b,0x19,0x05,0x02,0x73,0x02,0x02,0x09,0x2b,0xe5,0xe6,0x10,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0x02,0x04,
- 0x01,0x07,0x01,0xe5,0x05,0x01,0x01,0x05,0x01,0x01,0x02,0x02,0x01,0x01,0x05,0x01,
- 0x01,0x05,0x01,0x01,0x02,0x04,0xe6,0x06,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0xe5,0x05,0x01,0xe5,0x05,
- 0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x0a,0x01,0x01,0x40,0x02,0x04,0x02,0xe5,0x07,
- 0xe5,0x04,0x02,0xe5,0x0c,0x06,0x05,0x0f,0x09,0x09,0x07,0xe5,0x07,0x17,0x13,0x09,
- 0x0d,0x01,0xe6,0x04,0x05,0x01,0x04,0x02,0x20,0xe7,0x1e,0x09,0x13,0x03,0x02,0x02,
- 0xe5,0x02,0x06,0x05,0x03,0x07,0x09,0x05,0x09,0x0d,0x04,0x06,0x06,0xe5,0x01,0x0f,
- 0x0a,0x0b,0x13,0x09,0x09,0xe5,0x01,0x05,0x09,0x01,0x07,0x1a,0x01,0xe7,0x0a,0x30,
- 0x0b,0x02,0x06,0x01,0x0a,0x0c,0x17,0x04,0x02,0x0c,0x0c,0x01,0x07,0x03,0x41,0x04,
- 0x33,0x01,0xe5,0x15,0x32,0xe7,0x07,0x02,0x0b,0x01,0x0c,0x13,0xe5,0x25,0x01,0x0e,
- 0x09,0x2c,0x09,0x07,0xe6,0x1c,0x04,0xe5,0xe7,0x43,0x04,0x06,0x02,0x16,0x19,0x13,
- 0xe5,0x13,0x02,0x18,0x29,0x04,0x02,0x02,0x07,0xe5,0x0e,0x09,0x06,0x02,0x01,0xe8,
- 0x2f,0x06,0x07,0xe5,0x01,0x06,0x02,0x0c,0x0c,0xe5,0x06,0xe6,0x02,0xe5,0x03,0x09,
- 0x03,0x05,0x07,0x07,0x13,0x09,0x13,0xe5,0xe5,0x0f,0x09,0x02,0x05,0x0a,0x09,0x1d,
- 0xe5,0xe8,0x3d,0x07,0x01,0xe5,0x14,0x06,0x0c,0x02,0x03,0xe5,0x01,0x05,0xe5,0xe5,
- 0x05,0xe5,0x02,0x04,0x04,0x34,0x11,0x0a,0x02,0x18,0x0b,0x0b,0x08,0x03,0xe5,0x32,
- 0x08,0x04,0x07,0x0f,0x0a,0x04,0x11,0x03,0x07,0x01,0x07,0x07,0x38,0x14,0x1c,0x29,
- 0xe5,0xe7,0x50,0x08,0xe5,0xe5,0x03,0x21,0xe6,0x10,0x01,0x07,0x01,0x0a,0x08,0xe5,
- 0x3a,0x01,0x02,0x04,0x05,0x03,0x08,0x09,0x0f,0x01,0x02,0x43,0x03,0x16,0x07,0x18,
- 0x07,0x03,0x0d,0x01,0x09,0x05,0x01,0x02,0x07,0xe6,0x36,0x03,0x0b,0x09,0x06,0x09,
- 0x11,0xe7,0x40,0x07,0x01,0x06,0x02,0x0d,0x05,0x04,0x04,0x04,0x09,0xe5,0x07,0x04,
- 0x03,0xe5,0x33,0x28,0x13,0x27,0xe6,0x3f,0xe5,0x0c,0x04,0x02,0x10,0xe5,0x02,0x01,
- 0x03,0x22,0x0c,0x0e,0x06,0x01,0x68,0x09,0x01,0x01,0x16,0x2a,0x27,0x07,0xe5,0x15,
- 0x05,0x03,0x20,0x09,0x3b,0x0b,0x01,0x04,0x02,0x0b,0x04,0x01,0x0a,0xe5,0xe8,0x43,
- 0xe5,0xe5,0x02,0xe7,0x04,0xe5,0x08,0x26,0x0d,0xe5,0x08,0xe5,0x05,0x09,0x09,0x09,
- 0x02,0xe5,0x04,0x09,0x02,0xe5,0x04,0x09,0x09,0x09,0x09,0x09,0x02,0xe5,0x04,0x0a,
- 0x02,0xe7,0x01,0x01,0x40,0xe5,0x01,0xe6,0x03,0x01,0x0d,0x3f,0xe6,0x04,0x03,0xe5,
- 0x03,0x03,0xe5,0x07,0x01,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,
- 0xe5,0x04,0x09,0x09,0x09,0x09,0x02,0x01,0x04,0x07,0x02,0xe6,0x01,0xe5,0x03,0x37,
- 0x01,0x0a,0x01,0x01,0x08,0xe5,0x0b,0xe5,0x06,0xe5,0x07,0xe5,0x21,0x01,0x1f,0x64,
- 0x06,0x05,0x02,0x02,0x39,0x0c,0x01,0x08,0x01,0x0d,0xe5,0x06,0xe5,0x07,0xe5,0x1c,
- 0x04,0x01,0x8d,0x04,0xe6,0x3c,0x03,0x06,0x05,0xe5,0x01,0x03,0x0b,0x09,0x09,0x09,
- 0x04,0x06,0x01,0x02,0x02,0x01,0xe6,0x06,0x09,0x09,0x13,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x04,0x01,0x02,0x0a,0xe7,0xe5,0x01,0x3c,0x03,0x03,0x01,0x03,0x1e,
- 0x09,0x09,0x06,0x01,0x02,0x01,0xe5,0x03,0x0a,0x7d,0x01,0x01,0x0a,0x03,0xe7,0x03,
- 0xe5,0x45,0x0a,0x01,0x01,0x04,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x0b,0x02,0x06,
- 0x01,0x01,0x02,0x24,0x09,0x0b,0xe5,0x19,0x02,0x01,0x0e,0x0c,0x02,0x01,0x01,0x10,
- 0x01,0xe5,0x02,0x42,0x04,0x0b,0x07,0x01,0x01,0xe5,0xe5,0x01,0x04,0x01,0x02,0x04,
- 0x01,0x02,0x06,0x03,0xe5,0x01,0x04,0x06,0x01,0x02,0x01,0xe5,0x04,0xe5,0x07,0xe5,
- 0xe5,0xe5,0x04,0x09,0xe6,0x06,0x01,0x01,0x04,0xe5,0xe5,0xe5,0x03,0xe5,0xe5,0xe5,
- 0x03,0xe5,0xe5,0xe5,0x04,0xe6,0x05,0xe5,0xe5,0xe5,0x04,0x01,0x01,0x04,0xe5,0xe6,
- 0xe5,0xe5,0x01,0x0c,0x01,0xe5,0x44,0x13,0xe6,0x03,0x2a,0xe5,0x10,0x04,0x04,0x09,
- 0x0c,0x06,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x04,0x0c,0xe6,0x01,0x46,
- 0x01,0x11,0x05,0xe5,0x29,0x11,0xe5,0x07,0xe5,0x07,0xe5,0x08,0x02,0x01,0x03,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x0b,0xe9,0x0d,0x09,0x09,0x09,0x09,0x06,0x02,0x02,0x02,0x03,0x02,0x01,
- 0x01,0x02,0x05,0x03,0xe6,0x03,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x03,0x05,0x0b,
- 0xe6,0x06,0xe5,0x07,0xe5,0x04,0x02,0x03,0x05,0xe6,0x06,0xe6,0x06,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe6,0x03,0x06,0x02,0x01,
- 0x02,0x3a,0xe5,0x23,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x30,0x6d,0x02,0x08,0x02,
- 0x3d,0x26,0x0a,0x08,0x08,0x27,0x09,0x09,0x1d,0x09,0x09,0x13,0x13,0x0d,0x09,0x01,
- 0xe5,0xe5,0x46,0x01,0x07,0x03,0x08,0xe6,0x05,0x02,0x06,0x02,0x06,0x02,0x10,0x02,
- 0x09,0xe6,0x06,0xe6,0x06,0xe6,0x08,0x07,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,
- 0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x03,0x01,0xe7,0x0a,0xe5,0x01,0x42,
- 0x05,0xe5,0xe7,0x03,0x03,0x0a,0x09,0x09,0x05,0x03,0x08,0x08,0x01,0x0b,0x09,0x09,
- 0x04,0xe5,0x01,0xe5,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x05,0x01,0xe6,
- 0x04,0x04,0x01,0x02,0xe5,0x3d,0xe5,0x08,0x01,0x0b,0x09,0x07,0x03,0x05,0x09,0x09,
- 0x0e,0x07,0x3c,0x09,0x13,0x08,0x09,0x09,0x06,0x01,0x04,0x09,0x01,0x01,0x15,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x05,
- 0xe7,0x05,0xe5,0xe5,0x05,0xe8,0x04,0xe5,0xe6,0x04,0xe5,0xe5,0x06,0xe6,0x07,0xe7,
- 0x02,0x02,0xe7,0x02,0x02,0xe8,0x04,0xe7,0x02,0x02,0xe7,0x02,0x02,0xe7,0x05,0xe7,
- 0x05,0xe7,0x02,0x02,0xe7,0x05,0xe7,0x05,0xe7,0x05,0xe7,0x05,0xe8,0xe6,0x01,0xe8,
- 0x03,0x02,0xe7,0x48,0x02,0x06,0x0c,0x08,0x09,0x14,0x08,0x16,0xe5,0x07,0xe5,0x07,
- 0x09,0xe5,0x07,0xe5,0x1b,0xe5,0x07,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x0d,0xe6,
- 0xe5,0x48,0x02,0x16,0x02,0x06,0x02,0x07,0x01,0x06,0x02,0x03,0x02,0x02,0x02,0x06,
- 0x0b,0x06,0x02,0x06,0x02,0xe5,0x01,0x02,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,
- 0x02,0x06,0x02,0x03,0x02,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x03,0x02,0x02,0x08,
- 0x02,0x3f,0x09,0x16,0x03,0xe5,0x02,0x04,0xe6,0x01,0x03,0x01,0xe5,0x06,0xe7,0xe5,
- 0x03,0xe6,0x06,0xe6,0xe5,0x05,0xe6,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0x03,0x49,0x02,0x01,0x13,0xe5,0xe6,0x04,0xe5,0x07,0xe7,0x05,0xe5,0x02,
- 0x01,0xe5,0x01,0xe5,0x06,0x02,0x08,0x01,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,
- 0x06,0xe5,0xe6,0x42,0x08,0x5d,0x83,0xe8,0xe5,0x0e,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0xe6,0x03,0xe5,0xe5,
- 0xe5,0x03,0xe5,0xe5,0x01,0x03,0xe5,0xe5,0xe5,0x04,0xe6,0x05,0xe5,0xe5,0x03,0x04,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x02,0x04,0x01,0x06,0xe5,0xe5,0x06,0x01,0x07,0x01,0x07,0x01,0x0a,0x01,0xe6,
- 0x48,0x15,0xe5,0x14,0x08,0xe5,0x0c,0x04,0x01,0x22,0x0c,0x03,0x06,0x08,0x03,0x06,
- 0x02,0x05,0x0a,0x08,0x03,0x06,0x02,0x05,0x0a,0x0d,0x03,0xe5,0x3c,0x04,0x13,0x03,
- 0x02,0x11,0x18,0x08,0x02,0xe5,0x09,0x2a,0xe5,0x10,0xe6,0x12,0x13,0x08,0x09,0xe5,
- 0x02,0x0b,0x01,0x02,0x4f,0x07,0x07,0x29,0x01,0x0a,0x01,0xe5,0x1a,0x0e,0x13,0x13,
- 0x13,0x13,0x0e,0x0d,0xe5,0x41,0xe5,0xe5,0x01,0x02,0x18,0x16,0xe5,0x07,0xe6,0x15,
- 0x09,0x10,0x10,0x08,0x49,0x01,0x04,0x08,0xe7,0xe5,0x48,0x3b,0x03,0x0f,0xe5,0x06,
- 0x08,0x10,0x40,0x1e,0x01,0x01,0x0e,0xe7,0x40,0x03,0x0b,0x03,0xe5,0x09,0x0b,0xe5,
- 0x13,0x0c,0xe5,0x06,0x02,0xe6,0x12,0x01,0x14,0x09,0x13,0x13,0x1f,0x11,0xe6,0xe6,
- 0x2f,0x0c,0x01,0x13,0xe5,0x14,0x02,0x10,0x0e,0x01,0x04,0x04,0x01,0x03,0x19,0x0c,
- 0x13,0x13,0x05,0x0d,0x13,0x17,0x01,0xe6,0x3e,0x02,0x10,0x06,0x0a,0x05,0x09,0x19,
- 0x09,0x01,0x04,0x18,0x75,0xe5,0xe5,0x4c,0x22,0x06,0x02,0x09,0xe5,0x04,0x02,0x06,
- 0x01,0x01,0xe8,0x06,0xe5,0x07,0xe5,0x02,0x09,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0x02,0x0b,
- 0xe7,0x42,0xe6,0x1e,0x11,0x0d,0x10,0x02,0x03,0x09,0x02,0x06,0x13,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x08,0x10,0x01,0xe5,0x3b,0x04,0x05,0x0b,0x01,0x0d,0x14,
- 0x09,0x04,0x03,0xe5,0x03,0x0b,0x03,0xe5,0x02,0x09,0x13,0x06,0x02,0x09,0x09,0x09,
- 0x07,0x01,0x09,0x07,0x01,0x09,0x1b,0xe7,0xe5,0x3d,0x0a,0x1d,0x09,0x11,0xe5,0x07,
- 0x01,0x03,0x05,0x0c,0x01,0x82,0x01,0xe6,0x3b,0x02,0x01,0x0b,0x38,0x11,0x65,0x2f,
- 0xe5,0x01,0xe6,0x3c,0x02,0x01,0x0b,0xe5,0x03,0xe5,0x08,0x0f,0x03,0x09,0xe5,0x06,
- 0xe5,0x01,0xe5,0xe5,0x02,0xe5,0x09,0xe5,0xe6,0x04,0x01,0xe5,0x05,0x08,0xe5,0x08,
- 0x02,0xe5,0x04,0x09,0x02,0xe5,0x04,0x09,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x02,0xe5,0x04,0x14,0x02,0x01,0xe5,0x01,0x01,0x3a,0xe6,0x0d,0xe5,0x07,0x01,
- 0x0a,0x06,0x01,0xe5,0x05,0xe5,0xe5,0x05,0x01,0x01,0x05,0xe5,0xe5,0x0d,0x03,0xe5,
- 0x03,0x09,0x03,0x01,0x07,0xe5,0x03,0x09,0x03,0x01,0x03,0x09,0x03,0x01,0x03,0x09,
- 0x09,0x09,0x03,0xe5,0x03,0x03,0xe5,0x0c,0x02,0x04,0xe5,0x03,0x36,0xe5,0x01,0x01,
- 0x0e,0xe5,0x04,0x09,0x0f,0x03,0x09,0x07,0x01,0x05,0x03,0x11,0x01,0x0e,0xe5,0x04,
- 0x6b,0x04,0xe5,0x01,0x02,0x39,0xe5,0xe5,0x0f,0x16,0x09,0x09,0x13,0x11,0xe5,0x01,
- 0x01,0x0e,0xe5,0x6b,0xe5,0x04,0x02,0xe5,0xe6,0x3e,0x01,0x04,0x01,0x08,0x0a,0x05,
- 0x09,0xe5,0x01,0xe5,0x03,0x09,0xe5,0x01,0x02,0x04,0x01,0x05,0x08,0x02,0x01,0x01,
- 0x05,0x09,0x07,0x05,0x05,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x05,
- 0xe5,0x01,0xe5,0x01,0x3c,0x01,0x01,0x02,0x01,0x0e,0x01,0x01,0xe5,0x09,0x04,0x03,
- 0xe5,0x02,0x05,0x04,0x03,0x04,0x0a,0x06,0x04,0xe5,0x01,0x04,0x16,0xe6,0x68,0x01,
- 0xe5,0xe7,0x3d,0x01,0x04,0x0c,0x06,0x01,0x04,0x0c,0xe5,0xe5,0x02,0x0d,0x03,0x15,
- 0x07,0x01,0x0d,0xe5,0x08,0x06,0x09,0x27,0x20,0x06,0x01,0xe5,0x08,0xe5,0x01,0x3f,
- 0x01,0x04,0xe5,0x0c,0x04,0x07,0x04,0x04,0x02,0x01,0x04,0x01,0x02,0x04,0x13,0x06,
- 0x04,0x04,0x01,0x01,0xe5,0x07,0xe5,0xe5,0x03,0x04,0xe5,0x05,0x01,0x01,0x05,0xe6,
- 0x05,0xe5,0x07,0xe5,0x07,0xe5,0x08,0x08,0xe5,0x07,0xe5,0x07,0xe8,0x05,0x01,0x0a,
- 0x02,0x47,0x11,0x01,0xe5,0x02,0x13,0x04,0x07,0x13,0xe5,0x10,0x09,0x04,0x09,0x04,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x07,0x01,0x01,0xe5,0x45,0x19,
- 0xe5,0x11,0xe5,0x01,0x0b,0x23,0xe5,0x07,0xe5,0x01,0x09,0x05,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x0d,
- 0xe7,0x0d,0x09,0x09,0x09,0x09,0x09,0x05,0x03,0x09,0x09,0xe6,0x06,0x09,0xe6,0x02,
- 0x03,0x09,0x09,0x04,0x01,0x04,0x09,0xe5,0x07,0xe5,0x03,0x03,0x03,0x05,0xe6,0x06,
- 0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe6,0x03,0x06,0x01,0x02,0x02,0x63,0x1d,0x13,0x8c,0x08,0x01,0x01,0x63,0x1d,0x15,
- 0x11,0x09,0x27,0x09,0x09,0x13,0x09,0x09,0x16,0x03,0x01,0x3f,0x11,0x01,0x0a,0xe6,
- 0x05,0x02,0x04,0x01,0xe7,0xe5,0x01,0x01,0x02,0x0e,0x04,0x01,0x06,0x02,0x07,0xe6,
- 0x03,0x01,0xe7,0x06,0x09,0xe6,0x06,0xe6,0x06,0x01,0x07,0x01,0x07,0xe6,0x06,0xe6,
- 0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x0b,0xe5,0xe5,0x40,0xe5,0x0f,0x01,0xe5,
- 0x09,0x05,0x03,0x04,0xe5,0xe7,0x04,0x01,0x01,0x08,0x03,0x02,0x03,0x0b,0x09,0x05,
- 0x01,0xe6,0x12,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0x01,0xe5,0x3d,
- 0xe5,0xe5,0x10,0x0c,0x08,0x0b,0x16,0x10,0x71,0x10,0x0f,0x01,0x15,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0xe5,0x02,0x01,0xe5,0x05,
- 0xe8,0x04,0xe6,0x06,0xe6,0x07,0xe5,0x06,0xe6,0x08,0x0a,0xe6,0x02,0x02,0xe7,0x02,
- 0x02,0xe7,0x05,0xe7,0x02,0x02,0xe7,0x02,0x02,0xe7,0x05,0xe7,0x05,0xe7,0x02,0x02,
- 0xe7,0x02,0x02,0xe7,0x02,0x02,0xe7,0x02,0x03,0xe6,0x02,0x02,0xe7,0x05,0xe7,0x01,
- 0x05,0x01,0xe5,0x3e,0x01,0x11,0x01,0xe6,0x07,0x0e,0x01,0x01,0xe5,0x02,0x0c,0x01,
- 0xe5,0x03,0x01,0x0d,0x0a,0x06,0x01,0xe6,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x1b,0x09,
- 0x09,0x09,0x09,0xe5,0x15,0x01,0x01,0x3f,0x01,0x11,0x01,0x05,0x07,0x02,0x06,0x02,
- 0xe5,0xe6,0x01,0x02,0x09,0xe5,0x01,0x05,0xe5,0x07,0x0b,0x06,0x02,0xe5,0xe5,0x02,
- 0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,
- 0x02,0x07,0x01,0x06,0x02,0x06,0x02,0x08,0x02,0x3f,0x01,0x11,0x05,0x06,0x03,0xe5,
- 0x07,0xe5,0x08,0x08,0x02,0x01,0x03,0xe6,0x08,0x02,0x02,0x04,0xe5,0x03,0x03,0xe5,
- 0x07,0xe5,0xe5,0xe5,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x03,
- 0xe5,0x03,0x03,0xe5,0x03,0x03,0xe5,0x03,0x0d,0xe5,0x07,0xe5,0x07,0x01,0xe6,0x3e,
- 0x01,0x11,0x01,0xe5,0x0a,0xe5,0xe6,0x04,0xe5,0x07,0xe5,0xe5,0x05,0x04,0x02,0x02,
- 0x08,0x01,0xe5,0x07,0xe8,0x04,0xe5,0xe6,0x04,0xe5,0xe7,0xe6,0x01,0x01,0xe5,0x04,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x04,0x01,0x01,0x05,0xe5,0xe6,0x04,0xe5,0xe6,0x06,0x02,0xe5,
- 0x3c,0x03,0xe5,0x23,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0xe5,0x04,0x01,0x09,
- 0x16,0x12,0x2b,0x06,0x09,0x03,0x05,0x09,0x22,0x01,0x01,0x0f,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x07,0x01,
- 0xe5,0x02,0x02,0x01,0x04,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x05,0x01,0x07,0x01,
- 0x02,0x01,0x04,0x01,0x07,0x01,0x01,0x04,0xe5,0xe5,0x06,0x01,0x07,0x01,0x07,0x01,
- 0x07,0xe6,0x06,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0xe6,0x06,0x01,0x07,0x01,0x07,
- 0x01,0x0b,0x01,0xe5,0x1f,0x2d,0x08,0x08,0x2e,0x05,0x11,0xe5,0x0f,0x0f,0x02,0x0c,
- 0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x01,0x1c,0x03,
- 0xe5,0x28,0x12,0x0a,0x08,0x05,0x02,0x02,0x08,0x09,0x06,0x02,0x0e,0x02,0x19,0x0c,
- 0x09,0x1a,0x07,0x01,0xe5,0x06,0x08,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x1a,0x01,0xe7,
- 0x32,0x0a,0x04,0x04,0x05,0x1b,0x05,0x09,0x09,0x06,0x02,0x07,0x01,0xe6,0x06,0x04,
- 0x17,0xe5,0x17,0x13,0x09,0x05,0xe5,0x01,0x09,0x22,0x01,0xe6,0x41,0x09,0x04,0x05,
- 0x0c,0x02,0x13,0x05,0x03,0xe6,0x09,0x0b,0x09,0x10,0x10,0x2f,0x11,0x20,0xe6,0x01,
- 0x6a,0x02,0x10,0x03,0x01,0xe5,0x02,0x01,0x01,0x07,0x01,0x01,0xe5,0x05,0x15,0x03,
- 0x0f,0x28,0x26,0x12,0xe8,0x2d,0x15,0x0a,0x0a,0x05,0x14,0x1d,0x05,0x02,0xe5,0x08,
- 0x08,0xe5,0x08,0x03,0x13,0x13,0x09,0x09,0x09,0x09,0x09,0x07,0x0b,0xe5,0xe7,0x42,
- 0x0a,0x1e,0x03,0x04,0x09,0x03,0x12,0x01,0x07,0x03,0xe5,0xe5,0x0a,0x04,0xe5,0x1f,
- 0x50,0x01,0x02,0xe5,0x70,0x1b,0x0b,0x0d,0x13,0x02,0x08,0x13,0x01,0x16,0x39,0xe8,
- 0x3f,0x01,0x0b,0x0b,0x20,0xe5,0x06,0xe6,0x06,0xe6,0x05,0x01,0x06,0x2c,0xe6,0x06,
- 0xe5,0x07,0xe6,0x1a,0xe5,0x07,0x01,0x22,0xe8,0x40,0x02,0x39,0x09,0x09,0x05,0xe5,
- 0x22,0x12,0x06,0xe5,0x09,0x1b,0xe5,0x05,0x26,0x01,0xe6,0x0a,0x3f,0x07,0x01,0x14,
- 0x01,0x0f,0xe6,0x06,0x04,0xe5,0x02,0x03,0xe5,0x18,0x01,0x07,0x01,0x09,0x02,0x06,
- 0x14,0x09,0x08,0x14,0x1c,0x07,0xe6,0x48,0x0a,0x10,0x21,0x28,0x09,0x11,0x01,0x25,
- 0x01,0x03,0x35,0xe5,0x53,0x0f,0x06,0x0f,0x34,0x0a,0x07,0x09,0x04,0x22,0x38,0x01,
- 0x01,0x01,0x6c,0xe5,0x04,0x09,0x09,0x09,0xe5,0x08,0xe5,0x04,0x18,0x0a,0xe5,0x05,
- 0x09,0xe5,0x07,0xe5,0xe5,0xe5,0x03,0x09,0x09,0xe5,0x07,0xe5,0x0a,0xe5,0xe5,0x01,
- 0xe5,0x09,0xe7,0x01,0x02,0x01,0x3b,0x2c,0xe5,0x02,0xe5,0x09,0x06,0x02,0x09,0x0c,
- 0x07,0x08,0x09,0x16,0x09,0x09,0x01,0xe5,0x05,0x09,0x09,0x09,0x05,0xe5,0x04,0x01,
- 0xe5,0x0a,0x01,0x03,0xe7,0x03,0x36,0xe5,0x06,0x04,0x0c,0x17,0xe5,0x02,0x01,0x05,
- 0x10,0x01,0x02,0x03,0xe5,0x09,0xe5,0x08,0x09,0x0c,0x01,0x4f,0x07,0x03,0x07,0x04,
- 0x01,0x01,0xe5,0xe5,0x38,0x09,0x0d,0x19,0x04,0x03,0xe5,0x01,0x09,0x06,0xe5,0xe5,
- 0x16,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0xe5,0xe5,0xe5,0x4c,0x09,0x0d,0x03,0xe5,
- 0xe6,0x3b,0x03,0x04,0xe6,0x05,0x02,0x03,0xe5,0x0e,0x04,0x02,0x03,0x0c,0x09,0x03,
- 0x05,0x03,0x02,0x01,0x0c,0x01,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x0f,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x06,0x07,0x13,0xe6,0xe5,0x3f,0x02,0x01,0x04,0x04,0x03,0x10,
- 0x04,0x06,0x01,0x0a,0x04,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x01,0x01,0x04,0x01,0x05,
- 0x03,0x05,0x01,0x01,0x05,0x08,0x4b,0x03,0x01,0x02,0xe5,0x02,0x09,0x06,0xe5,0x47,
- 0x07,0x04,0x03,0x09,0x01,0xe5,0x05,0x02,0x01,0x07,0x15,0x0b,0x02,0x09,0x02,0x15,
- 0x01,0x0b,0x0c,0x10,0x02,0x06,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0x07,0x07,0x0f,0x01,
- 0xe8,0x58,0xe5,0x07,0x01,0xe5,0x03,0x02,0x01,0x01,0x07,0x04,0x04,0x04,0x04,0x04,
- 0x06,0x01,0x25,0x01,0x03,0xe5,0x06,0x08,0xe8,0x04,0xe5,0xe5,0x06,0xe7,0x05,0xe7,
- 0x05,0xe7,0x05,0x01,0x02,0x09,0x11,0x01,0xe5,0x44,0xe5,0x07,0xe5,0x09,0x2f,0xe5,
- 0x07,0x02,0x0c,0x09,0x05,0x03,0x05,0x09,0x06,0x09,0x09,0x04,0x04,0x09,0x09,0x09,
- 0x04,0x1c,0x02,0xe5,0x45,0x0f,0x0a,0x13,0x16,0xe5,0x07,0xe5,0x06,0x15,0xe5,0x07,
- 0xe5,0x03,0x03,0xe5,0x04,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,
- 0x06,0xe6,0x1e,0x03,0xe5,0x0d,0x09,0x09,0x09,0x09,0x04,0x01,0x02,0x03,0x02,0x02,
- 0x06,0x02,0xe5,0x04,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x02,0x06,0x09,0x06,0x02,
- 0x06,0x04,0x06,0x02,0x04,0x01,0xe5,0xe5,0x06,0x01,0x06,0x02,0x09,0xe6,0x06,0xe5,
- 0x07,0xe5,0x07,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0x04,0x01,0x02,0x02,0x0a,
- 0xe7,0xe5,0x01,0x3b,0x06,0x02,0x06,0x0b,0xe5,0x08,0x09,0x1c,0x09,0x09,0x0c,0xe5,
- 0xe5,0x05,0xe5,0xe5,0x02,0x11,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x09,0x0e,0x03,
- 0xe5,0xe5,0x3b,0x09,0x14,0x05,0x01,0x0b,0x05,0x35,0x06,0x04,0x04,0x1e,0x09,0x29,
- 0x09,0x18,0x49,0x01,0x0a,0x0b,0x06,0x02,0x01,0x01,0x02,0x02,0x06,0x02,0x04,0x01,
- 0x02,0x06,0x02,0x06,0x01,0x09,0x22,0x04,0xe7,0x06,0xe6,0xe5,0x04,0xe6,0x06,0xe6,
- 0xe5,0x03,0xe7,0xe5,0x04,0xe6,0xe5,0x04,0xe6,0xe5,0x03,0x09,0x0c,0x01,0xe6,0xe5,
- 0x41,0x06,0x01,0xe5,0x08,0x09,0xe5,0x04,0x03,0x04,0xe5,0x01,0xe5,0x06,0x01,0x05,
- 0x01,0x01,0x05,0x03,0x07,0x01,0xe6,0xe5,0x02,0x02,0xe5,0x08,0x02,0x06,0x09,0x02,
- 0x04,0xe6,0x08,0x09,0x09,0x02,0x04,0xe6,0x01,0x06,0x09,0x05,0x02,0x06,0x02,0x11,
- 0x3e,0xe5,0x08,0x10,0x01,0x0c,0x09,0x09,0x0d,0x0f,0x01,0x06,0x02,0x07,0x05,0x03,
- 0x15,0x03,0x06,0x02,0xe5,0x05,0x01,0xe5,0x07,0x05,0xe5,0x01,0xe5,0x04,0x02,0xe5,
- 0x05,0x01,0x05,0x09,0x10,0xe6,0x14,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x01,0x05,0xe6,0xe5,0x03,0xe6,0x07,0xe5,0x07,0xe6,0x04,0xe5,0xe6,0x06,0xe5,0x01,
- 0x03,0xe5,0xe5,0x05,0xe5,0xe5,0x06,0xe6,0x01,0x01,0x05,0xe6,0x06,0xe5,0x07,0xe5,
- 0x07,0xe5,0x05,0xe7,0x01,0xe5,0x01,0xe7,0x05,0xe7,0x05,0xe7,0x02,0x02,0xe7,0x01,
- 0x03,0xe7,0x05,0xe7,0x05,0xe8,0x04,0xe8,0x04,0xe7,0x06,0x01,0x01,0x42,0x06,0x01,
- 0x04,0x01,0xe5,0xe5,0x08,0xe5,0x0f,0x01,0xe5,0x1b,0x0b,0x07,0x01,0x07,0x09,0x09,
- 0x02,0xe5,0xe5,0x04,0xe5,0x08,0xe5,0x07,0x09,0xe5,0x06,0xe6,0x07,0xe5,0x07,0x08,
- 0xe5,0x01,0xe5,0x03,0x04,0x0a,0x02,0x42,0x06,0x01,0x09,0x07,0x08,0x06,0x02,0xe5,
- 0xe5,0x05,0x06,0x02,0x09,0xe5,0x07,0x02,0x08,0xe5,0xe5,0x05,0x09,0x09,0x07,0x01,
- 0x02,0xe5,0x01,0x02,0x06,0x02,0x03,0x02,0x02,0x07,0x01,0x02,0x03,0x02,0x07,0x01,
- 0x03,0x02,0x02,0xe5,0x07,0xe5,0x07,0x08,0x01,0xe5,0x0b,0x3c,0x09,0x01,0x09,0xe5,
- 0x03,0x08,0xe7,0xe6,0x04,0x07,0xe6,0x05,0xe7,0x06,0xe6,0xe5,0x01,0x05,0x01,0x01,
- 0x05,0x09,0x09,0x09,0x03,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x06,0x01,0x03,0x04,0xe5,
- 0x06,0x01,0x08,0xe5,0x02,0xe5,0x03,0x03,0x03,0x01,0x08,0xe5,0x01,0x42,0x06,0x01,
- 0x09,0x07,0x04,0x02,0xe5,0x04,0xe5,0x02,0x01,0x02,0x01,0x07,0xe5,0x07,0x01,0x07,
- 0x02,0x03,0x04,0x02,0xe6,0xe5,0x01,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,0x01,
- 0xe5,0xe5,0xe7,0x01,0x02,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0x01,0xe6,
- 0x01,0x02,0xe5,0xe6,0x04,0x01,0xe6,0x04,0xe5,0xe7,0x01,0x03,0xe7,0x05,0xe6,0x06,
- 0xe6,0xe5,0x09,0x36,0xe5,0x03,0x04,0x26,0xe5,0x07,0xe5,0x05,0x03,0x0a,0x08,0xe5,
- 0x08,0x06,0x09,0x01,0xe5,0x0d,0x12,0x14,0x29,0x01,0xe5,0x0f,0xe5,0xe5,0x0e,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0xe5,0x04,0xe5,0xe6,0xe5,0x02,0xe5,0xe5,0xe5,0x04,0x01,0x02,0x04,0x01,0x07,0x01,
- 0xe5,0x02,0x04,0x01,0x01,0x05,0x01,0x04,0x02,0x01,0x01,0xe5,0xe5,0x01,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x02,0x04,0x01,0x08,0x03,0xe6,0x39,0x08,0x05,0x15,0x06,0x04,0x07,0xe5,0x0b,
- 0x04,0x02,0x01,0x07,0x02,0x06,0x04,0x02,0x29,0xe6,0x06,0xe5,0x07,0xe6,0x06,0xe6,
- 0x06,0xe6,0x06,0xe6,0x06,0xe5,0x07,0xe5,0x06,0x0f,0xe5,0x01,0xe5,0x4b,0x02,0x12,
- 0x0e,0x0e,0x0b,0x0a,0x01,0x04,0x09,0x27,0x32,0x28,0xe5,0xe5,0xe5,0x41,0x0b,0x0d,
- 0x02,0x06,0x0c,0x03,0x1a,0x01,0x04,0x03,0x03,0x13,0x17,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x05,0x01,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x18,0x02,0xe5,0x0a,0x33,
- 0x01,0x01,0x0f,0x01,0x04,0x02,0x01,0x07,0x01,0x06,0xe5,0xe5,0xe5,0x04,0xe6,0x03,
- 0x02,0x01,0x04,0xe5,0x0b,0x02,0x09,0xe5,0x07,0x09,0x07,0x05,0xe5,0x2c,0x04,0x30,
- 0x03,0x02,0x27,0x14,0x02,0x11,0x01,0x07,0x01,0x09,0x02,0x03,0x02,0x02,0x0b,0x04,
- 0x03,0x08,0x03,0x01,0x07,0x01,0x09,0x03,0x04,0xe5,0x04,0x05,0x35,0x32,0xe6,0xe5,
- 0x2d,0x1c,0x0a,0x03,0x0c,0x0a,0xe5,0x03,0x02,0x02,0x06,0xe6,0x0e,0x01,0x02,0xe5,
- 0x2a,0x06,0x13,0x2a,0x0b,0x14,0xe6,0x25,0x04,0x13,0x04,0x04,0xe5,0x05,0x10,0x04,
- 0x01,0x03,0xe6,0xe5,0x03,0x0e,0x04,0x0e,0x01,0x01,0xe5,0x01,0x2f,0x60,0x2b,0x13,
- 0x0b,0x0e,0x16,0x0d,0x05,0x06,0x06,0x02,0x02,0x39,0x5a,0x03,0x4e,0x05,0x02,0x05,
- 0xe5,0x08,0x07,0x01,0x07,0xe6,0x02,0x03,0x01,0x07,0x0a,0x16,0x1c,0xe5,0x07,0x02,
- 0x03,0x02,0xe5,0x04,0x02,0xe5,0x07,0xe5,0x01,0x02,0x02,0xe5,0x04,0x02,0x09,0xe6,
- 0x06,0xe6,0x0e,0x02,0x46,0x0e,0x07,0xe5,0x09,0x09,0x07,0xe5,0x0a,0x0c,0x01,0x01,
- 0x06,0x03,0x0c,0x1b,0xe5,0x07,0x09,0xe5,0x02,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x02,
- 0x04,0x04,0x06,0x08,0x0f,0x02,0xe5,0x25,0x06,0x07,0x01,0x07,0x01,0x09,0x15,0x03,
- 0xe5,0x0b,0xe5,0x07,0x0c,0xe6,0x06,0x08,0x03,0x19,0x1f,0x13,0x09,0x13,0x09,0x19,
- 0xe6,0x07,0x22,0x0a,0x02,0x06,0x02,0x06,0x0c,0x07,0x01,0x02,0x01,0x01,0x02,0x05,
- 0x0a,0x06,0x0d,0x01,0x01,0x05,0x0d,0x0f,0x0f,0x62,0x01,0x01,0xe5,0x2f,0x06,0x02,
- 0x06,0x01,0x05,0xe5,0x03,0x2b,0xe5,0x01,0x16,0x03,0x04,0x13,0x09,0x04,0x18,0x0b,
- 0x07,0x01,0x13,0x07,0x01,0x1e,0xe5,0x01,0x01,0x1f,0x09,0x13,0x09,0x06,0xe5,0x04,
- 0x02,0x01,0x04,0x09,0x05,0x02,0xe5,0x08,0x09,0x02,0x01,0x0c,0x02,0xe5,0x01,0xe5,
- 0x04,0x01,0xe5,0x05,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x02,0xe5,0x04,
- 0x09,0x0a,0xe8,0xe5,0x01,0x01,0x1d,0xe5,0x06,0xe5,0x11,0xe6,0x06,0xe5,0x04,0xe5,
- 0x07,0xe5,0x07,0x01,0x0a,0x01,0xe5,0x02,0x01,0x04,0x08,0x02,0xe5,0x06,0x06,0x03,
- 0xe7,0x05,0x09,0x09,0x02,0xe5,0x04,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x02,0xe5,
- 0x04,0x02,0xe5,0x04,0x07,0x01,0x02,0xe5,0x01,0x04,0x19,0x01,0xe5,0x03,0x04,0x01,
- 0x0d,0xe5,0x01,0x01,0x03,0xe5,0x01,0x01,0x0b,0x09,0x08,0xe5,0x01,0xe5,0xe5,0xe5,
- 0x03,0xe5,0xe5,0xe5,0x10,0x01,0x04,0xe5,0x02,0x8d,0x04,0x01,0x01,0xe5,0xe5,0x1d,
- 0x01,0x04,0xe5,0xe5,0xe5,0x0d,0x02,0x06,0x02,0x01,0x1c,0x02,0x02,0xe5,0xe5,0xe5,
- 0x03,0x02,0x01,0x0e,0x02,0x01,0x09,0x8f,0x02,0x03,0xe5,0x03,0x1b,0x01,0x06,0xe5,
- 0xe5,0x0e,0x01,0x01,0x04,0xe7,0xe5,0x02,0x02,0x05,0x09,0x04,0x02,0x06,0x01,0x03,
- 0x01,0xe5,0x04,0x04,0x07,0xe5,0x0b,0x06,0x01,0x05,0x09,0x13,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x0c,0xe8,0xe5,0x1f,0x01,0x03,0x01,0x01,0x04,0x01,0x0a,
- 0x01,0x01,0x02,0x01,0xe5,0xe5,0xe5,0x18,0x02,0x06,0x01,0x01,0x09,0x07,0x05,0x05,
- 0x07,0x01,0x01,0x02,0x01,0x86,0x05,0xe6,0x1f,0x09,0x01,0x11,0x01,0x07,0x01,0x0b,
- 0x09,0x02,0x02,0x02,0x06,0x01,0x07,0x01,0x07,0x09,0x01,0x09,0x06,0x1d,0x06,0x09,
- 0x27,0x13,0x13,0x0b,0x02,0x01,0xe5,0x1f,0x01,0x07,0x01,0x11,0x01,0x07,0x01,0x0c,
- 0x09,0x02,0x01,0x02,0x06,0x01,0x07,0x01,0x01,0xe5,0x05,0x02,0x04,0x01,0x09,0x05,
- 0xe6,0x04,0xe5,0x07,0xe5,0x08,0x01,0xe6,0x04,0x01,0x01,0x05,0xe6,0x05,0xe7,0x05,
- 0xe7,0x05,0xe7,0x06,0xe6,0x05,0xe7,0x06,0xe6,0x05,0xe5,0x08,0x08,0xe5,0xe5,0xe5,
- 0xe5,0x26,0x13,0x02,0x06,0x02,0x17,0x16,0xe5,0x04,0x0c,0x1c,0x09,0x0c,0xe5,0x04,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x11,0x28,0x01,0x04,0x02,0x09,0x23,
- 0xe5,0x08,0x12,0xe5,0x08,0x02,0x01,0x07,0xe5,0x0f,0xe5,0x07,0xe5,0x08,0x02,0x05,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x0b,0xe5,0x01,0xe5,0x0d,0x09,0x09,0x04,0xe6,0x01,0xe6,0x02,0x03,
- 0x03,0x05,0x02,0x06,0x02,0x06,0x09,0xe6,0x06,0xe5,0xe5,0x05,0x02,0x06,0xe5,0xe5,
- 0x05,0x04,0xe6,0x01,0x06,0x04,0x06,0x02,0xe5,0x07,0xe5,0x04,0x02,0x03,0x05,0xe6,
- 0x06,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe6,0x06,0xe5,
- 0x07,0xe6,0x0a,0xe7,0xe5,0x01,0x1d,0x13,0x13,0x3b,0x09,0x08,0xe5,0x07,0x15,0xe5,
- 0x71,0x02,0xe5,0x01,0x1d,0x15,0x13,0x37,0x03,0x09,0x07,0x13,0x09,0x03,0x05,0x1d,
- 0x09,0x09,0x13,0x13,0x17,0xe7,0x20,0x01,0x04,0x04,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x14,0xe6,0x03,0x01,0xe7,0x02,0xe5,0xe5,0x08,0xe7,0xe5,0x06,0x01,0x0e,0x08,0x02,
- 0xe7,0x06,0xe6,0x03,0x04,0x07,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,
- 0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x08,0x01,0xe6,0xe5,0x20,0x01,0xe5,
- 0x05,0x01,0xe6,0x04,0x02,0x06,0x01,0xe5,0x05,0x02,0x0a,0x09,0x02,0x02,0x02,0xe5,
- 0xe5,0x02,0x01,0xe5,0x07,0xe6,0x08,0x01,0x06,0xe5,0x08,0xe5,0x05,0x02,0xe5,0x08,
- 0x04,0x02,0xe6,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0xe7,0x20,
- 0x0b,0x09,0x07,0x09,0x01,0x0d,0x06,0x06,0x01,0xe5,0x05,0x01,0x09,0x09,0x06,0x0c,
- 0x0b,0xe5,0x26,0x0a,0x09,0x08,0x09,0x09,0x09,0x13,0x0d,0xe5,0x01,0x15,0xe5,0x07,
- 0xe5,0x01,0x05,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe6,0x06,0xe5,0x07,0xe5,0x05,0xe8,
- 0x06,0xe6,0xe5,0x04,0xe5,0x01,0xe5,0x01,0x01,0xe6,0x06,0xe5,0x07,0xe5,0x03,0x03,
- 0xe8,0x04,0xe7,0x02,0x02,0xe7,0x01,0x03,0xe7,0x02,0x02,0xe7,0x05,0xe7,0x05,0xe7,
- 0x05,0xe7,0x05,0xe7,0x05,0xe7,0x05,0xe7,0x05,0xe7,0x02,0x02,0xe7,0x05,0xe7,0x06,
- 0x01,0xe6,0x20,0x01,0x09,0x07,0x01,0x07,0x01,0x07,0x01,0x0a,0x09,0xe5,0x04,0x01,
- 0x07,0x01,0x09,0xe5,0x01,0x01,0x0d,0x0c,0xe5,0x06,0x0a,0x09,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0x09,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x1a,0xe5,0x20,0x01,
- 0x09,0x07,0x01,0x07,0x01,0x07,0x01,0x0a,0x0c,0x02,0xe5,0x08,0x01,0x09,0xe5,0x0f,
- 0x0d,0x04,0x01,0xe5,0x04,0x02,0x03,0x02,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x03,
- 0x02,0x02,0x03,0x02,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x03,0x02,0x02,
- 0x06,0x02,0x07,0xe6,0xe5,0x20,0x15,0x07,0x01,0x07,0x01,0x18,0xe5,0xe5,0xe5,0x08,
- 0x05,0x03,0x05,0x03,0x0f,0x02,0x06,0x01,0x03,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe8,0x22,0x0c,0x04,0x01,0x07,0x01,0x07,0x01,0x0c,0x09,0xe5,
- 0xe7,0x03,0x04,0x01,0x03,0x01,0x03,0x02,0x04,0x04,0x07,0x01,0x02,0x05,0xe5,0x02,
- 0xe7,0x03,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,
- 0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x04,
- 0xe5,0xe6,0x04,0xe5,0xe6,0x04,0xe5,0xe6,0x06,0x03,0x21,0x09,0x02,0x04,0x0b,0x02,
- 0x1e,0x05,0x35,0xe5,0x09,0x09,0x09,0x73,0xe5,0xe5,0x0e,0x01,0x07,0x01,0x04,0x02,
- 0x01,0x04,0x02,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x02,
- 0x04,0x01,0x06,0xe5,0xe5,0x06,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x04,0x04,0x01,
- 0x02,0x04,0xe6,0x06,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x08,0x01,0x02,0xe5,0x03,
- 0x26,0x01,0x11,0xe5,0x26,0xe6,0x04,0x07,0x04,0xe5,0x02,0x06,0x01,0x0c,0x04,0x09,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x0c,0xe5,0x01,0xe5,0x1d,0x08,0x04,
- 0x06,0x0e,0x08,0x01,0x0c,0x0c,0xe5,0x09,0x08,0x01,0x02,0x0a,0x11,0x01,0x01,0x03,
- 0x09,0x05,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0x04,0x24,
- 0x13,0xe5,0x08,0x37,0x02,0x0f,0x03,0x01,0x01,0x01,0xe5,0x01,0x08,0x05,0x03,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x10,0xe8,0x2a,0x01,0x06,0xe5,
- 0x01,0x0c,0x05,0x0a,0x03,0x06,0x0f,0x01,0x0f,0x08,0x0d,0xe5,0xe6,0x03,0x15,0x74,
- 0xe5,0xe6,0x28,0x04,0x09,0x04,0x0c,0x23,0x02,0x01,0x25,0x04,0x0a,0x01,0x0a,0xe5,
- 0x03,0x71,0xe8,0x17,0xe5,0x0d,0x02,0x05,0x01,0x21,0x0a,0x0c,0x05,0x02,0x01,0x0d,
- 0xe5,0xe5,0x06,0x07,0x01,0x0d,0x07,0x09,0x16,0x5b,0x01,0xe6,0x1b,0x09,0x04,0x01,
- 0x25,0xe5,0x07,0x01,0x01,0x0f,0x01,0x0e,0xe5,0xe5,0x01,0x06,0x01,0xe5,0x02,0x02,
- 0xe6,0x05,0x02,0x0a,0x04,0x03,0x04,0x6f,0xe6,0xe5,0x25,0x2c,0x1a,0x05,0x0e,0x01,
- 0x04,0x07,0xe5,0x04,0x03,0x09,0x0b,0x04,0xe5,0x01,0x71,0x01,0xe6,0x2f,0x11,0x04,
- 0x05,0x05,0x01,0x12,0x07,0x04,0x04,0x07,0x01,0x06,0xe5,0xe5,0x04,0x01,0x01,0xe5,
- 0x06,0x02,0x06,0x02,0xe7,0x04,0x76,0x03,0x25,0x09,0x09,0x0c,0x13,0x0d,0x02,0x14,
- 0x12,0xe5,0x03,0xe5,0x16,0x7e,0xe5,0x2c,0x25,0x01,0x01,0x03,0x01,0x01,0x13,0x04,
- 0x06,0x04,0x02,0x09,0x1a,0x0a,0x7a,0xe5,0x1f,0x01,0x02,0x06,0x01,0x07,0x0b,0x0a,
- 0x0b,0x13,0x02,0x01,0x02,0x0f,0x02,0xe5,0xe5,0x01,0x01,0x15,0x13,0x0e,0x13,0x4e,
- 0x01,0x02,0x2a,0xe6,0x09,0x0c,0x1f,0x0c,0x0d,0x0f,0x17,0x04,0x0d,0x05,0x6b,0x05,
- 0xe6,0x32,0x24,0xe5,0x04,0x01,0xe5,0x05,0x14,0x04,0x0d,0x0b,0xe5,0x0d,0x03,0xe5,
- 0x06,0xe5,0x6d,0x01,0xe5,0x01,0x02,0x01,0x1c,0x0b,0x08,0xe5,0x0b,0x13,0xe6,0x05,
- 0x02,0x01,0x03,0x06,0xe5,0x1b,0xe5,0x01,0x0b,0x05,0xe5,0x07,0xe5,0xe5,0x09,0x6b,
- 0x02,0x01,0xe5,0x01,0x04,0x18,0xe5,0x01,0x01,0x0e,0xe5,0x06,0xe5,0x01,0x1a,0xe5,
- 0xe5,0x14,0x0e,0x01,0xe5,0xe5,0x08,0x15,0x04,0xe5,0xe5,0xe5,0x01,0x6e,0xe5,0x03,
- 0x04,0x01,0xe6,0x01,0x11,0xe5,0x07,0xe5,0x02,0x04,0x09,0x02,0x06,0x34,0x13,0x01,
- 0x07,0x15,0x06,0x02,0x01,0x71,0xe5,0x05,0x02,0x03,0x29,0xe5,0x07,0x01,0x01,0x05,
- 0x08,0x01,0x0a,0x08,0xe5,0xe5,0x01,0x01,0x01,0x13,0x05,0x0a,0x02,0x0c,0x04,0x0b,
- 0xe7,0xe5,0x02,0x02,0x02,0x06,0x6a,0x03,0xe5,0x01,0x18,0x04,0xe5,0x02,0x03,0x03,
- 0x01,0x04,0x02,0x01,0x04,0x04,0x02,0x01,0x0e,0x01,0x01,0xe6,0xe5,0xe5,0x01,0x01,
- 0x11,0xe6,0x0d,0x0c,0x01,0x04,0x02,0x03,0x07,0x01,0xe5,0xe5,0xe5,0x01,0x01,0xe5,
- 0x06,0x6a,0x03,0x01,0xe5,0x1d,0x01,0x01,0x07,0x07,0x09,0x01,0x13,0x09,0x01,0x01,
- 0x16,0x06,0x02,0x01,0xe5,0xe5,0x12,0x07,0x08,0x02,0x01,0x02,0x06,0x73,0xe7,0x16,
- 0x0b,0x09,0x07,0x27,0x01,0x02,0x13,0x02,0x0b,0x01,0x0c,0x08,0x02,0x09,0x02,0x01,
- 0x01,0x02,0x01,0x01,0xe5,0x73,0x02,0xe5,0x1c,0x02,0x06,0x09,0x02,0x06,0x02,0x06,
- 0xe5,0x1b,0xe5,0x18,0x22,0x02,0x10,0x09,0x6d,0xe6,0xe6,0x1d,0xe5,0x07,0x01,0x07,
- 0x13,0x1a,0xe5,0xe5,0x05,0x09,0x08,0xe5,0x12,0x0e,0xe5,0x04,0x09,0x04,0x04,0x02,
- 0x01,0x6f,0xe5,0x0d,0x04,0x01,0x02,0x02,0x03,0x02,0x02,0x01,0xe6,0x01,0x05,0x03,
- 0x04,0x01,0x02,0x02,0xe5,0x04,0x09,0x06,0x02,0x03,0x05,0x09,0x09,0xe6,0x06,0x06,
- 0x02,0x0b,0x09,0x09,0x09,0x05,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x06,0x06,0xe5,0x02,0x02,0x13,0x06,0x02,0x09,0x13,0x13,0x08,0xe5,0x03,0x2b,0xe5,
- 0x23,0x71,0x08,0xe8,0x12,0x0a,0x0a,0x12,0x14,0x07,0x07,0x09,0x21,0x25,0x7a,0xe6,
- 0xe5,0xe5,0x16,0x07,0x01,0x09,0x07,0x1d,0x01,0x0c,0x09,0x04,0x04,0x07,0xe5,0x04,
- 0x0e,0x0b,0x09,0x04,0x01,0x02,0x09,0x4a,0x01,0x25,0xe5,0x16,0x02,0x06,0x01,0xe5,
- 0x08,0x08,0xe5,0x08,0x10,0x02,0x09,0xe5,0x08,0x05,0x03,0x01,0x07,0x05,0x02,0x06,
- 0x03,0x01,0xe5,0x07,0x02,0x02,0x03,0x01,0x03,0x01,0x01,0x02,0x05,0xe5,0xe5,0x48,
- 0x01,0xe5,0x20,0x01,0xe6,0x22,0x11,0x1d,0x01,0x09,0x04,0x09,0x02,0x05,0xe5,0x05,
- 0x02,0x02,0x06,0x09,0x04,0x01,0x04,0x0c,0x01,0x03,0xe5,0x03,0x4d,0x01,0x22,0xe8,
- 0x14,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0x06,
- 0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe6,0x06,0xe6,0x06,0xe5,0x01,0x01,0x05,
- 0xe6,0x06,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe5,
- 0xe6,0x18,0x07,0x01,0x11,0x1d,0x01,0xe5,0x26,0x09,0xe5,0x24,0x01,0xe6,0x79,0x02,
- 0xe5,0x16,0x09,0x01,0x13,0x1b,0x02,0x38,0x15,0x09,0x01,0x80,0x19,0x09,0x11,0x09,
- 0x13,0x01,0x09,0x1e,0x1b,0x20,0x74,0x01,0x17,0x09,0x15,0x09,0x11,0x02,0x0b,0x09,
- 0x09,0x09,0x07,0x06,0x04,0x0b,0x04,0x04,0x09,0x06,0x02,0x6f,0xe6,0xe5,0x19,0xe5,
- 0x04,0x09,0x02,0x07,0x01,0x06,0x13,0x01,0xe5,0xe5,0x03,0xe5,0xe5,0x20,0x02,0x01,
- 0xe5,0x09,0x1d,0xe6,0x02,0x06,0x15,0x32,0x1c,0x09,0x03,0x01,0x0f,0x01,0x07,0x01,
- 0x01,0xe5,0xe5,0x01,0x01,0x04,0x02,0x01,0x01,0xe5,0x03,0x01,0x03,0x03,0x01,0x07,
- 0x01,0x07,0x01,0x03,0x03,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x01,0x03,
- 0x01,0xe6,0x04,0x01,0xe5,0x02,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x0b,0xe7,0x16,0x13,0x12,0x12,0x02,0x02,0x07,0x15,0x1b,0xe6,0x03,
- 0x04,0xe5,0x04,0x09,0x0c,0xe5,0x66,0x09,0x01,0x01,0xe5,0x13,0x05,0x16,0x13,0x09,
- 0x0e,0x0f,0x09,0x09,0x0c,0xe5,0x03,0x05,0xe5,0x0d,0x05,0x06,0x01,0x0e,0x42,0x1f,
- 0x03,0xe5,0x33,0x04,0x1f,0x2e,0x0b,0x04,0xe5,0x16,0x17,0x10,0x03,0xe5,0x4c,0xe6,
- 0xe5,0x18,0xe5,0x07,0x04,0x0a,0x01,0x07,0x01,0x01,0x31,0x0d,0x03,0x01,0x10,0x02,
- 0x01,0x11,0x01,0x01,0x04,0x03,0xe5,0x0b,0x13,0x2a,0xe6,0x20,0xe5,0xe7,0x16,0x0a,
- 0x04,0x10,0x08,0x15,0x03,0x2a,0xe5,0x02,0x02,0x05,0x04,0x01,0x02,0x10,0x02,0x05,
- 0x75,0x01,0x01,0x2d,0x09,0x07,0x16,0x1a,0x0b,0x04,0x09,0x0c,0x16,0xe5,0x07,0xe5,
- 0x01,0x06,0x2a,0x18,0x05,0x0c,0x04,0x0b,0xe5,0x02,0x0d,0x0c,0x11,0x09,0x0c,0x19,
- 0x0c,0x10,0xe5,0x07,0x06,0x0c,0x07,0x17,0x09,0xe5,0x0b,0x08,0x53,0x02,0xe5,0x04,
- 0x09,0x4f,0x04,0x14,0x03,0x09,0x02,0x0e,0x05,0x0b,0x08,0x04,0x09,0x6d,0xe5,0x04,
- 0x07,0xe6,0x07,0x09,0x02,0x13,0x09,0x03,0x01,0x0f,0x07,0x10,0x09,0x03,0x03,0x06,
- 0x02,0x01,0x07,0xe6,0x02,0x02,0x02,0x09,0x0e,0x68,0x03,0x03,0x03,0x05,0x0a,0x08,
- 0x09,0x06,0x04,0xe5,0x17,0x0d,0x1b,0x05,0x03,0x0b,0x08,0x01,0x04,0x13,0x08,0x01,
- 0x75,0x03,0x0b,0x06,0x04,0x01,0x13,0x06,0x02,0x04,0x05,0x0a,0x0e,0xe5,0xe5,0x23,
- 0x18,0x13,0x07,0x01,0x07,0x01,0x05,0x01,0x01,0x39,0x01,0x23,0xe8,0x0d,0x09,0x02,
- 0x0f,0xe5,0x07,0xe5,0x0b,0x1a,0xe7,0x01,0x06,0x09,0x01,0x0e,0x09,0x01,0x09,0x12,
- 0x03,0x1a,0x03,0x35,0x01,0x10,0x07,0xe5,0x08,0x01,0xe5,0x0e,0x09,0x12,0x09,0x05,
- 0x1a,0x07,0x26,0x0a,0x09,0x01,0x10,0x04,0x0c,0x0d,0x62,0xe7,0x18,0x09,0xe5,0x03,
- 0x0f,0xe5,0x04,0xe5,0x15,0xe5,0x04,0x01,0xe5,0x08,0xe5,0x04,0x02,0x01,0x04,0x02,
- 0xe5,0xe5,0x02,0x09,0x0b,0x13,0x19,0x03,0x13,0x46,0x01,0x02,0xe5,0x01,0x01,0x08,
- 0x0c,0x06,0x02,0x06,0xe5,0x07,0xe5,0x04,0x01,0x1b,0xe5,0x07,0x01,0x07,0x01,0x03,
- 0x03,0x01,0x03,0x02,0xe5,0x01,0xe5,0x01,0x05,0xe5,0xe5,0x0b,0x02,0x01,0x0a,0x02,
- 0x06,0xe5,0x0e,0xe5,0xe7,0x14,0x43,0x02,0x01,0x01,0xe6,0x03,0x05,0xe5,0x14,0x09,
- 0x01,0x03,0xe5,0x03,0x0b,0x16,0xe5,0xe5,0x02,0x1f,0xe5,0x03,0x02,0x06,0x1a,0xe5,
- 0x07,0x01,0x02,0x04,0xe5,0x02,0x04,0x01,0x04,0x51,0xe5,0x03,0x04,0xe8,0x01,0x07,
- 0xe5,0x01,0x0f,0x02,0x09,0x09,0x4b,0xe5,0x01,0x09,0x1c,0xe5,0xe5,0x05,0x02,0x05,
- 0xe5,0x01,0x01,0x04,0xe5,0x07,0x04,0x49,0xe5,0x05,0x02,0xe5,0xe6,0x0e,0xe5,0x0d,
- 0x06,0x01,0x01,0xe5,0xe5,0x08,0x04,0x01,0x1e,0x01,0x04,0x01,0x05,0x09,0x04,0x01,
- 0x02,0x04,0x01,0x06,0x02,0x04,0x01,0x1e,0x01,0x01,0x03,0x02,0xe5,0xe5,0x06,0x01,
- 0x05,0x04,0x52,0xe9,0x01,0x0a,0x02,0xe5,0x03,0x0a,0x04,0xe5,0x01,0x04,0x04,0xe5,
- 0x02,0x23,0x01,0x01,0x02,0x01,0x14,0x01,0x01,0x05,0x01,0x01,0x02,0xe7,0x02,0x01,
- 0x02,0x16,0x03,0x01,0x02,0xe5,0x02,0x04,0xe5,0xe5,0xe5,0x01,0x01,0xe5,0xe5,0x0f,
- 0x4b,0x03,0xe7,0x12,0xe5,0x0a,0x09,0x01,0x05,0x01,0x01,0x25,0x01,0x02,0x08,0x0c,
- 0x01,0xe5,0xe5,0xe5,0x04,0x01,0x09,0x04,0x0b,0x01,0x0a,0x01,0x07,0x01,0x04,0xe7,
- 0xe5,0x18,0x50,0x01,0x13,0xe6,0x05,0xe6,0x01,0x04,0x36,0x01,0x02,0x09,0xe6,0x05,
- 0xe7,0x01,0x01,0x02,0x04,0x01,0x07,0x04,0x01,0xe6,0x06,0x01,0x08,0xe5,0x01,0x01,
- 0x02,0x04,0x01,0x04,0x01,0xe5,0xe5,0x6a,0xe5,0x0f,0x02,0x09,0x02,0x10,0x02,0x2e,
- 0xe5,0x0e,0x09,0x0c,0x02,0x14,0x11,0x09,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x4c,
- 0xe9,0x13,0x01,0x07,0xe5,0x07,0x09,0xe5,0x07,0xe5,0x25,0x0f,0xe6,0x06,0xe6,0x07,
- 0x02,0x06,0x0b,0xe5,0x07,0x0c,0x01,0x04,0x02,0xe5,0x07,0x06,0x02,0xe5,0x58,0xe8,
- 0x08,0x01,0x02,0x02,0x02,0x03,0x06,0x02,0x04,0xe6,0x01,0x02,0x06,0x09,0x09,0x09,
- 0x06,0x02,0x03,0x05,0x09,0xe5,0x07,0xe6,0x03,0x02,0x03,0x02,0x02,0x06,0x04,0x09,
- 0x09,0x03,0x05,0x06,0x02,0x02,0xe5,0x04,0x06,0x02,0x06,0x02,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x06,0x06,0xe9,0x01,0x09,0x09,0x08,0xe5,0x12,0x26,0xe5,0x17,0x09,0x03,
- 0x09,0xe5,0x05,0x02,0x1f,0x06,0x02,0x12,0xe5,0x07,0x45,0x08,0x01,0x01,0x0b,0x09,
- 0x09,0x11,0x27,0x1b,0x13,0x03,0x05,0x03,0x07,0x09,0x0d,0x05,0x02,0x14,0x5c,0x01,
- 0x0e,0xe5,0x01,0x02,0x01,0x0c,0x03,0x02,0x07,0x27,0x01,0x14,0xe6,0x06,0x01,0x04,
- 0x01,0x02,0x06,0x02,0x08,0x02,0x09,0x06,0x04,0x04,0x02,0x03,0xe5,0x08,0x01,0x02,
- 0x07,0x03,0x07,0x24,0x23,0xe7,0x0c,0x01,0x07,0x01,0x01,0x02,0x02,0x01,0x01,0x08,
- 0x05,0x03,0x23,0xe5,0xe7,0x08,0x09,0x09,0x05,0x01,0xe6,0x04,0x03,0x02,0x08,0x02,
- 0x06,0x07,0xe6,0x01,0x01,0xe5,0xe7,0x04,0x02,0x03,0x04,0xe6,0xe5,0x01,0x0e,0x25,
- 0xe5,0x1d,0x02,0xe8,0x0e,0x01,0x07,0x04,0x08,0x03,0x01,0x18,0x16,0x10,0x06,0x01,
- 0x09,0x03,0x01,0x04,0x04,0x03,0x07,0x03,0xe5,0x0a,0x0c,0x07,0x0b,0x06,0x34,0x22,
- 0xe5,0x01,0x0f,0x05,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x05,0xe7,0x06,0xe6,0x05,0x01,0xe6,0xe5,
- 0x02,0x01,0xe6,0x05,0xe6,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,
- 0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x03,0x02,
- 0x08,0xe5,0x07,0xe5,0x06,0x01,0x01,0x0f,0x09,0xe6,0x1a,0x14,0x10,0x01,0x10,0x09,
- 0x06,0x02,0xe5,0xe5,0x05,0x02,0xe6,0x03,0x04,0xe6,0x1a,0xe5,0x05,0x0b,0x09,0x07,
- 0x29,0x03,0x1c,0x01,0xe6,0xe5,0x0e,0x09,0x07,0x01,0x09,0x09,0x14,0x10,0x01,0x0f,
- 0xe5,0x08,0x08,0xe6,0xe5,0x04,0xe6,0xe5,0x05,0x20,0x01,0x13,0x07,0x0b,0x27,0x22,
- 0x03,0x0f,0x09,0x11,0x31,0x0f,0xe6,0x07,0x0a,0x03,0x03,0x01,0x03,0x04,0x03,0x02,
- 0x1d,0xe5,0x05,0x0b,0x11,0x29,0x05,0x1c,0x01,0x01,0x0f,0x09,0xe5,0xe5,0x08,0x06,
- 0x1e,0x10,0x01,0x02,0x09,0xe5,0x07,0x01,0x07,0x04,0x01,0x02,0x01,0x02,0x01,0x02,
- 0x01,0x09,0x09,0x09,0x06,0x02,0x10,0x02,0x10,0x02,0x24,0x03,0x1f,0x02,0x0d,0x02,
- 0x0a,0x05,0x01,0xe5,0x05,0x01,0xe5,0xe5,0x03,0x02,0x24,0x02,0x1e,0x05,0x02,0x21,
- 0x04,0x0a,0x01,0x06,0x01,0xe5,0x02,0x0c,0x01,0xe5,0x09,0x0a,0x3e,0xe7,0xe5,0x06,
- 0x03,0x03,0x01,0x07,0x01,0xe5,0x02,0x02,0xe6,0x03,0x02,0x01,0x07,0x01,0x02,0x04,
- 0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0xe5,
- 0x02,0x02,0x01,0x07,0x01,0x04,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x03,0x03,
- 0x01,0x06,0xe5,0xe5,0x03,0x02,0x01,0x07,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x0a,0xe5,0x01,0x0d,0x17,0x04,0x05,0x04,0xe5,0x25,
- 0xe5,0x1d,0x01,0x05,0x01,0xe5,0x14,0x03,0xe5,0x0b,0x0a,0x20,0x06,0x01,0x44,0x06,
- 0xe6,0x1e,0x13,0x05,0x1f,0x05,0x0c,0x09,0xe5,0x14,0x06,0x05,0x05,0x0a,0x13,0x14,
- 0x07,0x09,0x45,0x03,0xe5,0x14,0x1a,0x25,0xe5,0x24,0x07,0x01,0xe5,0x04,0x09,0xe5,
- 0x10,0x0e,0x27,0x4c,0x01,0xe5,0x0c,0x09,0x01,0x05,0x03,0x01,0x01,0x03,0x01,0x01,
- 0xe5,0x05,0x01,0x21,0x0e,0x09,0x09,0x10,0x01,0x11,0x05,0x05,0x05,0xe5,0x0b,0x01,
- 0x07,0x01,0x07,0x01,0x09,0x49,0x01,0x01,0xe5,0x0a,0x04,0x06,0x02,0xe5,0x02,0x01,
- 0x05,0xe5,0x03,0x02,0x3e,0x20,0x01,0x04,0x01,0x09,0x05,0x07,0x04,0x08,0x05,0x08,
- 0xe5,0x01,0x07,0x53,0xe5,0x01,0x1d,0x04,0xe5,0x06,0xe6,0x06,0xe6,0x1c,0x12,0xe5,
- 0x14,0x11,0xe6,0x03,0xe5,0x02,0x02,0x05,0xe5,0x01,0xe5,0x16,0x0f,0x03,0x06,0x02,
- 0xe6,0x08,0x3f,0x02,0x01,0x17,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,0x03,0x17,
- 0xe6,0x0a,0x05,0x01,0x02,0x04,0x04,0x07,0x10,0xe5,0x04,0x02,0x01,0xe5,0x01,0x12,
- 0x01,0x1b,0x02,0x08,0x04,0x01,0x07,0xe6,0x43,0x12,0x08,0x2b,0x26,0x04,0x15,0xe6,
- 0x04,0x07,0x03,0x36,0x01,0x04,0x40,0x11,0xe5,0xe6,0x10,0x10,0x36,0x0a,0x1b,0x05,
- 0x05,0x0c,0x0a,0x0b,0x0c,0x0e,0x03,0x06,0xe5,0x38,0x1b,0xe6,0xe5,0x08,0x13,0x04,
- 0x0e,0x4e,0x06,0x01,0x0f,0x17,0x0f,0x0f,0x05,0xe5,0x58,0x17,0x01,0x09,0x06,0x26,
- 0x22,0x02,0x09,0x07,0x1d,0xe5,0x19,0x01,0x05,0x05,0x07,0x09,0xe5,0x07,0x44,0xe5,
- 0x10,0x06,0x0a,0x05,0x10,0x19,0x20,0x11,0x1e,0x09,0x02,0x10,0x05,0x14,0x02,0x4b,
- 0x01,0xe5,0x0b,0x0b,0x08,0x08,0x13,0x16,0x20,0x2e,0x01,0x09,0x13,0x11,0x09,0xe5,
- 0x01,0x05,0x45,0xe7,0x10,0xe5,0x05,0xe5,0x49,0x03,0x0f,0x03,0x09,0x1b,0x02,0xe5,
- 0x08,0x02,0xe5,0x07,0x01,0x18,0x02,0xe5,0x04,0xe5,0x24,0x1d,0x01,0x02,0x01,0xe5,
- 0x01,0x01,0x0e,0xe5,0x0b,0xe5,0x2f,0x1d,0x0b,0x0a,0x06,0x0b,0xe5,0x09,0x01,0x08,
- 0x03,0xe5,0x07,0xe5,0x18,0x02,0x01,0x4b,0x01,0x02,0xe5,0x03,0x0f,0xe5,0xe5,0xe5,
- 0xe5,0x06,0xe5,0x02,0x01,0x06,0xe5,0x1c,0xe5,0x02,0x11,0x03,0x0f,0x03,0x1b,0x06,
- 0xe5,0xe5,0xe5,0x2b,0x01,0x0e,0x49,0x02,0x02,0x11,0xe5,0xe5,0x08,0xe5,0x04,0xe5,
- 0x25,0xe5,0xe5,0x1c,0x0b,0x11,0x06,0x04,0x06,0x34,0x10,0xe5,0x02,0x3a,0x02,0x01,
- 0x02,0xe6,0x16,0x01,0x02,0x04,0x01,0xe6,0x01,0x01,0x07,0x01,0x1e,0x13,0x01,0x09,
- 0x02,0x01,0x01,0xe5,0xe5,0x0b,0x04,0x06,0xe6,0x01,0x04,0x01,0xe6,0x01,0x04,0x01,
- 0x0f,0x09,0x10,0x02,0xe5,0x01,0xe5,0xe5,0x01,0xe5,0x01,0xe5,0xe5,0x02,0x02,0x38,
- 0xe5,0xe5,0xe5,0x01,0x02,0x11,0x04,0xe5,0x01,0x03,0xe5,0xe5,0x01,0x04,0x09,0x02,
- 0x01,0x18,0x04,0x0a,0x05,0x02,0xe5,0xe5,0x01,0xe5,0x01,0xe5,0xe5,0x02,0x02,0x0a,
- 0x01,0x03,0x02,0x04,0x02,0x03,0xe5,0x02,0x02,0x01,0x28,0x04,0x03,0x05,0x04,0x01,
- 0x01,0x04,0x37,0xe8,0xe6,0x1a,0x04,0x01,0x2f,0x07,0x0b,0x01,0x09,0x03,0xe5,0x01,
- 0x01,0x0d,0xe5,0x01,0x04,0x01,0x04,0x06,0xe7,0xe5,0x15,0xe6,0x08,0x0e,0x05,0x01,
- 0x01,0x07,0x01,0x05,0x3a,0xe6,0xe5,0x1b,0x0a,0xe5,0x01,0x09,0x1f,0x11,0x04,0x04,
- 0x01,0x02,0x01,0x02,0x01,0x02,0x08,0xe5,0xe5,0x01,0x01,0x02,0x02,0x03,0x04,0x01,
- 0x01,0x06,0xe5,0x06,0x08,0xe5,0x07,0xe5,0xe6,0x0f,0x09,0x04,0x01,0x21,0xe5,0x1b,
- 0xe7,0xe5,0x23,0x16,0x02,0x17,0x16,0x02,0x08,0x07,0x02,0x03,0x04,0x13,0x02,0x10,
- 0x06,0x09,0x04,0x0e,0x02,0x02,0x10,0x02,0x3a,0xe7,0x1d,0x09,0x13,0x1a,0x02,0x10,
- 0xe5,0x08,0x08,0xe5,0x06,0xe6,0x07,0xe5,0xe5,0x0a,0x09,0x09,0xe6,0x02,0xe5,0x07,
- 0xe5,0x12,0x02,0x13,0xe5,0x3b,0xe7,0x0d,0x09,0x03,0x05,0x05,0xe5,0x01,0x04,0x01,
- 0x02,0x03,0x05,0x09,0x06,0x02,0x01,0x03,0x03,0x09,0x06,0x02,0x09,0x09,0xe5,0x07,
- 0x05,0xe5,0x03,0x04,0xe6,0x01,0x04,0xe6,0x01,0x09,0xe5,0x04,0x02,0xe5,0x07,0x06,
- 0x02,0x01,0x03,0x03,0x04,0x01,0x02,0x02,0x06,0x09,0x09,0x09,0x09,0x0d,0xe5,0xe5,
- 0xe5,0x01,0x26,0x27,0xe5,0x12,0x04,0x03,0xe5,0x03,0x09,0x09,0x04,0x04,0x01,0x0e,
- 0x09,0x12,0xe5,0x11,0xe5,0x12,0x43,0x01,0xe6,0x50,0x13,0x09,0x19,0x03,0x13,0x0a,
- 0x10,0x03,0x05,0x0d,0x11,0x46,0x01,0x01,0x01,0x12,0x07,0x01,0x02,0x02,0x08,0x09,
- 0x18,0x04,0xe5,0x0c,0x02,0x01,0x02,0x06,0x02,0x04,0x01,0x02,0x04,0x01,0xe5,0xe5,
- 0xe5,0x01,0x01,0x02,0x06,0x01,0x04,0x04,0x0e,0x05,0xe6,0x03,0x02,0xe6,0x10,0xe6,
- 0xe5,0x06,0x04,0x01,0x40,0xe5,0x01,0x14,0x06,0x05,0x01,0x06,0xe5,0x01,0x06,0x02,
- 0x17,0x05,0xe5,0x0e,0x01,0x01,0x01,0x03,0x03,0x02,0x02,0x01,0x01,0x01,0x03,0x01,
- 0xe6,0x04,0x01,0x01,0x01,0x05,0x01,0xe6,0x03,0x02,0xe5,0x09,0x09,0x08,0xe5,0x0e,
- 0x01,0x01,0x09,0x05,0x01,0xe5,0x42,0x20,0x02,0x09,0x06,0xe5,0x1b,0x16,0x03,0x05,
- 0x09,0x04,0x02,0x01,0x09,0x09,0x01,0x03,0x05,0x07,0x01,0x03,0x09,0xe5,0xe6,0x04,
- 0x0a,0x04,0xe5,0x0e,0xe5,0xe5,0x41,0x01,0x15,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,
- 0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe6,0x06,0xe6,0x06,
- 0xe6,0xe5,0x04,0xe6,0x06,0xe5,0x01,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x02,0x04,
- 0xe5,0x02,0x04,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,
- 0xe5,0x05,0x01,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe5,0x01,0x17,0x01,0x07,0x01,0xe5,
- 0x11,0x3b,0x14,0xe5,0x10,0x01,0x0a,0xe5,0x11,0x06,0x01,0xe5,0x11,0x09,0x09,0x43,
- 0xe5,0x16,0x01,0x07,0x01,0xe5,0x0f,0x3d,0x27,0x01,0x25,0x13,0x0b,0x07,0x01,0x40,
- 0xe5,0xe6,0x18,0x1b,0x33,0x09,0x09,0x13,0x08,0x02,0x09,0x07,0x01,0x0a,0x06,0x01,
- 0xe5,0x11,0x09,0x09,0x21,0x01,0x1c,0xe6,0xe5,0x0b,0x0c,0x02,0x07,0x12,0x20,0x0e,
- 0x04,0x06,0x02,0x04,0x04,0x09,0x04,0x04,0x0b,0x07,0x0b,0x09,0x04,0x04,0x0e,0x04,
- 0x06,0x02,0x04,0x25,0x1c,0xe5,0x01,0xe5,0x22,0x09,0x06,0x01,0xe5,0x19,0x13,0x02,
- 0x06,0x01,0xe5,0x19,0x0b,0xe5,0xe5,0x08,0x04,0x29,0x02,0x06,0x02,0x06,0xe5,0xe5,
- 0x3e,0xe6,0xe5,0x10,0x01,0x07,0x01,0x07,0x01,0x07,0xe6,0x06,0x01,0x07,0x01,0x07,
- 0x01,0x04,0x02,0x01,0x07,0x01,0x03,0x03,0x01,0x04,0x02,0x01,0x07,0x01,0x02,0x03,
- 0xe5,0xe7,0xe5,0x02,0x01,0xe5,0x02,0xe5,0x02,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,
- 0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0a,0xe6,0xe5,0x1a,0x05,0x01,0x07,0x0a,
- 0x11,0x0c,0xe5,0x0f,0x1f,0x02,0x02,0x0a,0x0c,0x01,0xe5,0x01,0x0f,0x06,0x03,0x05,
- 0x07,0x02,0xe5,0xe5,0x05,0xe5,0x01,0x49,0xe5,0xe6,0x1b,0x01,0x07,0xe5,0x09,0x23,
- 0x22,0x0d,0xe5,0x07,0x02,0xe5,0x08,0xe5,0x02,0x01,0x03,0xe5,0x0a,0x05,0x04,0x08,
- 0x03,0x07,0x04,0x0a,0x44,0x03,0xe5,0x21,0x06,0x12,0x16,0x01,0x03,0x08,0x13,0x10,
- 0x10,0xe5,0x1f,0x0c,0x13,0x52,0x01,0xe6,0x18,0x0f,0x03,0x0b,0x19,0x01,0x11,0xe6,
- 0x01,0x04,0x02,0x06,0x01,0xe6,0x04,0x09,0x01,0x09,0x04,0x01,0xe5,0x02,0xe5,0x0a,
- 0x01,0x06,0x05,0xe6,0xe5,0x02,0x0d,0xe5,0x02,0xe5,0x02,0xe6,0x04,0x3c,0xe5,0x04,
- 0x02,0x17,0x3d,0x0c,0x05,0x06,0x04,0x01,0x04,0x01,0x03,0x02,0x03,0x06,0x01,0x01,
- 0x03,0x01,0x03,0x07,0x05,0x0c,0x0b,0x28,0x3a,0x01,0x02,0xe7,0xe5,0x09,0x01,0x17,
- 0x04,0x01,0x03,0x07,0x06,0x02,0x11,0x05,0x19,0x0e,0x16,0x03,0x1d,0xe5,0x06,0xe5,
- 0x05,0x0a,0x01,0x07,0x4b,0x01,0x02,0x09,0x11,0x05,0x01,0x11,0x34,0x10,0x01,0x02,
- 0x04,0x04,0x07,0x06,0x01,0x02,0x06,0x04,0xe5,0x05,0x06,0xe5,0x07,0x03,0x02,0x0c,
- 0xe5,0x07,0x46,0x04,0xe6,0xe6,0x1e,0x17,0xe5,0x08,0x31,0x0b,0x06,0x11,0x01,0x02,
- 0x08,0x0b,0x07,0x09,0x11,0x09,0x4c,0x01,0xe6,0x19,0x03,0x06,0x18,0x0a,0xe5,0x04,
- 0x02,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x02,0x03,0x08,0x01,0xe6,0x06,0x01,
- 0x04,0x02,0x02,0x02,0x05,0xe6,0x16,0x0d,0xe6,0x33,0x28,0x01,0xe5,0xe5,0x2e,0x04,
- 0x17,0x09,0x05,0x03,0x09,0x09,0x02,0x0c,0x01,0x05,0x0a,0xe6,0x02,0x06,0x02,0x28,
- 0x5e,0x01,0xe5,0x1a,0x13,0x19,0xe6,0x07,0x05,0x03,0x05,0x03,0x03,0xe6,0x02,0x06,
- 0x17,0x0b,0x13,0x09,0x47,0x2a,0xe5,0x01,0xe5,0x19,0x07,0x02,0x03,0x09,0x07,0x0c,
- 0x01,0x0e,0x19,0xe5,0x10,0x02,0x05,0x05,0x10,0x09,0x08,0x0a,0xe5,0x11,0x07,0x01,
- 0x4a,0x01,0x01,0x1b,0x07,0x04,0x5e,0x0c,0x05,0xe5,0x0a,0x06,0xe6,0x12,0x07,0x0c,
- 0x0c,0x48,0x01,0xe7,0x1b,0x01,0x2c,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x02,
- 0x01,0xe5,0x02,0x01,0xe5,0x05,0x09,0x07,0x02,0xe5,0x01,0xe5,0x0e,0x05,0x09,0x0d,
- 0xe5,0x03,0x13,0x3e,0x01,0x01,0x01,0x01,0x02,0x01,0x12,0xe5,0x04,0xe5,0xe5,0x17,
- 0x10,0xe5,0x06,0x01,0x07,0x01,0x07,0x01,0x08,0xe5,0x01,0xe5,0x01,0xe5,0xe5,0x01,
- 0xe5,0x05,0x09,0x07,0xe5,0xe5,0x02,0xe5,0xe6,0x02,0xe6,0x0b,0xe5,0x07,0xe5,0x04,
- 0xe5,0x03,0x06,0x14,0xe5,0x3d,0x02,0x01,0xe5,0x03,0x14,0x03,0xe5,0x03,0xe5,0x0c,
- 0xe5,0x07,0x01,0x11,0x09,0x09,0x09,0xe5,0xe5,0x08,0x01,0x04,0x01,0x05,0x0b,0xe5,
- 0x02,0x01,0x02,0x04,0x01,0x04,0xe5,0x04,0x02,0x01,0xe5,0xe5,0x06,0x01,0x0d,0xe5,
- 0x08,0xe5,0x07,0x01,0x02,0x02,0x3d,0xe5,0x01,0x02,0x14,0x06,0x02,0xe5,0x01,0x0b,
- 0xe5,0x01,0x15,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x09,0x02,0x01,
- 0x04,0x13,0xe5,0x02,0x01,0x07,0x06,0xe5,0x0a,0x01,0x03,0xe5,0x01,0x01,0x0e,0xe5,
- 0x07,0xe5,0x0a,0x01,0x3a,0x02,0x01,0x01,0xe5,0xe5,0x18,0x04,0xe6,0x02,0x05,0x0a,
- 0x01,0x10,0x05,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,
- 0xe6,0x01,0x03,0x01,0xe6,0xe5,0x01,0x02,0xe6,0x03,0x03,0x05,0x06,0x01,0xe5,0x05,
- 0x01,0x02,0xe5,0x01,0x0a,0x01,0xe5,0x02,0x01,0xe5,0xe6,0x02,0x01,0x05,0x0b,0x01,
- 0x0a,0x01,0x06,0x38,0xe6,0x01,0x02,0x14,0x03,0x01,0x02,0x03,0xe5,0xe5,0xe6,0x09,
- 0x01,0x01,0x04,0x04,0x01,0x01,0xe5,0x01,0x02,0x09,0x09,0x09,0x08,0x05,0x01,0x01,
- 0x02,0xe6,0x01,0x01,0x02,0xe6,0x0b,0x01,0xe5,0x01,0x02,0xe5,0x02,0x04,0x0a,0x01,
- 0xe5,0x01,0x02,0xe5,0xe6,0x01,0x02,0x0a,0x03,0x01,0x02,0x04,0x07,0x01,0x01,0x01,
- 0xe5,0x35,0x01,0x01,0x02,0xe5,0x17,0x1b,0x01,0x05,0x3d,0x01,0x01,0x09,0x09,0x01,
- 0xe5,0x03,0x01,0x02,0x04,0x01,0x03,0xe6,0xe5,0xe5,0x06,0x01,0x07,0x01,0x0b,0xe7,
- 0x17,0x3f,0x01,0x02,0x17,0x1f,0x07,0x0b,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x04,
- 0x09,0x01,0x02,0x09,0x09,0x01,0x01,0x02,0x01,0xe5,0x05,0x03,0xe5,0x03,0x01,0x02,
- 0x04,0x01,0xe5,0x05,0x01,0xe5,0x0a,0x01,0x0c,0x09,0x01,0x3f,0xe5,0x02,0x24,0x02,
- 0x02,0x10,0x02,0x06,0x03,0x09,0x05,0x03,0x05,0x03,0x05,0x09,0x06,0x02,0x06,0x02,
- 0x06,0x0b,0x09,0x02,0x02,0x06,0xe5,0x04,0x02,0x02,0x03,0x02,0x06,0x04,0x07,0x02,
- 0x06,0x02,0x43,0x03,0x28,0x13,0xe5,0x09,0x10,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x03,
- 0xe5,0x04,0xe5,0x01,0x01,0x03,0xe5,0x01,0x01,0x03,0xe5,0x13,0xe5,0x01,0xe5,0x04,
- 0x02,0xe5,0x07,0x09,0x01,0x03,0xe5,0x15,0x45,0x01,0xe7,0x0d,0x09,0x04,0x01,0x02,
- 0x02,0x02,0x03,0x06,0x02,0x02,0x06,0x02,0x06,0x07,0x01,0x06,0xe5,0xe5,0x06,0x01,
- 0x09,0x06,0x02,0xe6,0xe5,0x01,0x02,0xe6,0xe5,0x04,0xe6,0x08,0xe5,0x07,0xe5,0xe5,
- 0x02,0x02,0x04,0x01,0x02,0xe5,0x03,0x03,0xe5,0x01,0x05,0xe6,0x03,0x02,0x09,0x03,
- 0x05,0x02,0x06,0x09,0x09,0x09,0x09,0x0d,0x01,0x01,0xe5,0x01,0x1d,0x10,0x02,0x09,
- 0x13,0xe5,0xe5,0x02,0x03,0x01,0x06,0xe5,0xe5,0x05,0x08,0xe5,0x07,0xe5,0x27,0xe5,
- 0x08,0x09,0x12,0xe5,0x12,0x43,0x03,0x1e,0x13,0x08,0x15,0x04,0x09,0x04,0x04,0x04,
- 0x09,0x09,0x25,0x03,0x09,0x07,0x15,0x11,0x47,0x02,0x01,0x1f,0x02,0xe5,0x1a,0x09,
- 0x0c,0x09,0x09,0x01,0x07,0x04,0x01,0xe5,0xe5,0x06,0xe6,0x03,0x02,0xe6,0x05,0x01,
- 0xe5,0x02,0x01,0xe5,0xe8,0x03,0x01,0x02,0x04,0x01,0xe5,0x05,0x01,0xe5,0x08,0xe6,
- 0x03,0x08,0x02,0x07,0x01,0x44,0x21,0x01,0x14,0x06,0x02,0x08,0xe6,0x08,0x09,0x09,
- 0x09,0x02,0x02,0x01,0xe6,0x07,0xe5,0x01,0x02,0x01,0xe6,0x06,0x01,0x06,0xe5,0xe7,
- 0x04,0x01,0x01,0x01,0x03,0x01,0x07,0x01,0x0b,0x07,0xe5,0x07,0xe5,0x04,0xe5,0xe6,
- 0x3e,0xe5,0xe6,0x20,0x01,0x1b,0x0b,0x07,0x09,0x05,0x03,0x10,0x01,0xe5,0xe5,0x02,
- 0xe5,0xe5,0x01,0x03,0x03,0x02,0x08,0x01,0x09,0x03,0x03,0x01,0x07,0x01,0x07,0x01,
- 0x0b,0x07,0x07,0x01,0x07,0x01,0x42,0xe6,0x14,0xe5,0x07,0xe6,0xe6,0x01,0x01,0xe5,
- 0x07,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,
- 0xe5,0x01,0x05,0xe5,0x06,0xe7,0xe5,0x02,0xe7,0x02,0x02,0x01,0xe6,0xe5,0x03,0xe6,
- 0x01,0x01,0x05,0xe5,0x01,0xe5,0x03,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe6,0xe5,0x04,
- 0xe5,0x07,0xe6,0x06,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0x01,0xe5,0x22,0x03,0x0f,0x09,0x09,0x07,0x09,0x09,
- 0x09,0x07,0x01,0x0c,0x06,0x02,0xe5,0x08,0x07,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,
- 0x01,0x25,0x44,0xe6,0x28,0x0d,0x07,0x0b,0x09,0x09,0x09,0x06,0x02,0x06,0x02,0x03,
- 0x02,0x03,0x05,0xe5,0xe5,0x05,0x04,0x07,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,
- 0x13,0x13,0x42,0xe6,0x3e,0x0b,0x23,0x03,0x04,0xe5,0x07,0xe5,0x06,0x01,0x01,0x06,
- 0x03,0x02,0x13,0x09,0x09,0x13,0x11,0x46,0x41,0x09,0x02,0x09,0x09,0x09,0xe9,0x03,
- 0x01,0x01,0x05,0xe5,0xe6,0x04,0x01,0xe7,0xe5,0x01,0x03,0x04,0x0c,0x09,0x04,0x01,
- 0x07,0x01,0x0c,0x1a,0x42,0x01,0x24,0x1d,0x06,0x09,0x01,0xe5,0x05,0x09,0x01,0xe5,
- 0xe5,0x03,0x02,0x01,0x04,0xe5,0xe6,0x1a,0x01,0xe5,0x06,0x01,0x13,0x01,0x04,0x02,
- 0x13,0x06,0x0c,0x40,0x01,0xe5,0xe5,0x0e,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x04,0x02,0x01,0x02,0x01,0x02,0x01,0x04,0x02,0x01,0x01,0xe5,0xe5,
- 0x01,0x01,0xe5,0x05,0x01,0xe5,0x01,0x03,0x01,0xe5,0x05,0x01,0x02,0x04,0x01,0xe5,
- 0x02,0x01,0x02,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x04,0x02,0x01,0x07,0xe6,0xe5,0x04,0x01,0x06,0xe5,0xe5,0x06,0x01,0x07,0x01,0x07,
- 0x01,0x08,0x02,0xe5,0xe5,0x20,0x02,0x0e,0x0b,0x12,0x04,0x09,0x0f,0xe5,0x09,0xe5,
- 0x07,0xe5,0x02,0x04,0xe5,0x18,0x08,0x03,0x09,0xe5,0x0b,0x05,0x0e,0x04,0x46,0xe5,
- 0x1f,0x41,0x08,0x0d,0x0c,0x09,0xe5,0x15,0x02,0x01,0x05,0xe5,0x12,0x0a,0x09,0x01,
- 0x09,0x09,0x38,0xe6,0xe6,0x79,0xe5,0xe5,0xe5,0x04,0x05,0xe5,0x01,0x09,0x1c,0x0a,
- 0x08,0x63,0x01,0xe6,0x22,0x0c,0x04,0x01,0x04,0x12,0x05,0x04,0x04,0x09,0x07,0x09,
- 0xe6,0x06,0xe6,0x0d,0x06,0xe5,0x01,0x03,0xe6,0xe5,0x04,0x07,0x01,0x01,0x06,0xe5,
- 0xe5,0x04,0x0d,0x01,0x05,0x08,0x02,0x0b,0x34,0x03,0x21,0x0d,0x01,0x03,0x01,0x2f,
- 0x07,0x03,0x08,0x06,0x02,0x06,0x0b,0x01,0x06,0x02,0x08,0x02,0x07,0x01,0x0a,0x10,
- 0x0b,0x03,0x01,0x01,0x45,0xe5,0x22,0x03,0x05,0x02,0x05,0xe5,0x02,0x09,0x0d,0x09,
- 0x17,0xe5,0x1b,0x05,0x06,0x03,0x06,0x04,0xe5,0x07,0xe5,0xe5,0x04,0x0c,0x01,0x05,
- 0xe5,0x04,0x04,0x03,0x08,0x08,0x33,0xe5,0xe6,0x1b,0x03,0xe5,0x07,0xe6,0x07,0x12,
- 0x0e,0x23,0x02,0x09,0x09,0x06,0x0e,0xe5,0x04,0x01,0x02,0x04,0x13,0x01,0x03,0x02,
- 0x03,0x06,0x4e,0xe6,0x04,0x04,0xe5,0x16,0xe5,0x07,0x09,0x45,0x0e,0x0b,0xe5,0x04,
- 0x03,0x08,0x07,0x04,0x03,0x04,0x04,0x02,0x06,0x11,0x0e,0x3b,0xe8,0x04,0x22,0x1a,
- 0x22,0x01,0x2a,0x01,0x03,0x04,0x04,0x08,0x02,0x01,0x1b,0xe5,0xe5,0x5d,0xe5,0xe5,
- 0x04,0x1f,0x13,0x13,0x0a,0x02,0x0e,0x05,0x12,0x12,0x02,0x14,0x0f,0x01,0x0c,0xe5,
- 0x0b,0x52,0x01,0xe6,0x16,0x01,0x02,0x06,0x01,0x04,0xe5,0xe5,0x03,0x02,0x01,0x02,
- 0x1e,0x0f,0x04,0x08,0x01,0x03,0x03,0x06,0x02,0x06,0x02,0x07,0x13,0x04,0x04,0x07,
- 0x01,0x04,0x05,0x08,0x05,0x01,0x01,0x09,0x09,0x04,0x09,0x27,0xe9,0x17,0x08,0xe5,
- 0x04,0x03,0x09,0x03,0x03,0x01,0x14,0x0b,0x02,0x01,0xe6,0x01,0x04,0x01,0x09,0x0a,
- 0x0b,0x0e,0x0c,0x07,0x0c,0x02,0x03,0x04,0x07,0x09,0x11,0x01,0x35,0xe5,0x01,0xe5,
- 0x17,0x0a,0x09,0x09,0x33,0x04,0x07,0x02,0x01,0x06,0x16,0x17,0x05,0x0a,0x12,0x01,
- 0x08,0x08,0x09,0x05,0x14,0x1d,0x01,0xe8,0x18,0xe5,0x03,0x05,0xe5,0x01,0x3f,0x02,
- 0x01,0x04,0x02,0x01,0x06,0xe5,0x01,0x03,0x01,0xe5,0x05,0x01,0xe5,0x07,0x05,0x0d,
- 0x09,0x0a,0x01,0xe5,0x04,0x0f,0x06,0xe5,0x04,0x3c,0xe6,0xe7,0x01,0x01,0x16,0x05,
- 0x06,0x01,0xe7,0x08,0x02,0x30,0x02,0xe5,0x06,0xe5,0x07,0xe5,0x01,0x03,0x02,0x01,
- 0x06,0xe5,0x07,0x05,0xe5,0x04,0x01,0x0a,0x03,0x0c,0xe5,0xe5,0x08,0x09,0xe5,0x12,
- 0xe5,0x30,0x01,0x02,0x02,0xe5,0x03,0x19,0x01,0xe5,0x05,0x01,0x02,0x02,0x04,0x3f,
- 0x0f,0x0d,0x02,0xe5,0x02,0x05,0xe5,0x03,0x04,0xe5,0xe5,0x02,0xe5,0xe5,0xe6,0x0f,
- 0x01,0x04,0x02,0xe5,0x02,0xe5,0x05,0x01,0x0b,0x02,0x01,0x34,0x04,0x01,0x01,0x02,
- 0x1b,0x02,0x0b,0x03,0xe5,0x03,0x4d,0x10,0x0a,0xe5,0x01,0x06,0xe5,0xe5,0x05,0x02,
- 0x10,0x02,0x05,0xe5,0x01,0xe5,0x01,0x02,0xe5,0xe5,0xe5,0x0d,0x02,0x01,0x33,0x02,
- 0xe8,0x1e,0x01,0x19,0x02,0x2d,0x09,0x04,0x01,0x02,0x04,0x04,0x09,0x02,0x08,0x01,
- 0x01,0xe5,0xe5,0x08,0x02,0xe5,0xe7,0x03,0x03,0xe5,0x06,0x07,0x02,0x03,0x06,0x01,
- 0x0f,0x03,0x03,0x02,0x2f,0x01,0xe6,0x01,0x02,0x1b,0x03,0x09,0x09,0x41,0x01,0x01,
- 0x05,0x03,0x15,0x05,0x03,0x04,0xe5,0x02,0x05,0x04,0xe5,0xe7,0x08,0x03,0x02,0x01,
- 0x03,0xe5,0xe5,0x01,0xe5,0xe5,0x03,0x01,0x0c,0x01,0x02,0x01,0x2c,0x03,0x01,0xe6,
- 0x21,0x04,0x02,0x09,0x37,0xe5,0x05,0xe5,0xe5,0x01,0x01,0x01,0x02,0x01,0xe5,0x1b,
- 0x01,0x02,0x05,0x01,0x01,0x01,0x05,0x09,0x06,0x02,0x01,0x0e,0x02,0x01,0x44,0x04,
- 0x01,0x02,0x1c,0x06,0x04,0xe5,0xe5,0x3e,0xe5,0xe5,0xe5,0x04,0x01,0xe7,0xe5,0x01,
- 0x01,0x02,0x03,0xe5,0x07,0xe5,0x09,0xe5,0xe5,0x01,0x09,0x04,0x01,0x01,0xe5,0x03,
- 0x04,0x04,0x01,0xe5,0xe5,0xe5,0x01,0x0b,0xe5,0xe5,0xe5,0x10,0x01,0x36,0xe6,0xe5,
- 0x08,0x13,0x02,0x06,0x01,0xe5,0x05,0x02,0x10,0x02,0x21,0x09,0x02,0x06,0x04,0x04,
- 0x09,0x0b,0x04,0x07,0x06,0x02,0x02,0x06,0x02,0x08,0x0e,0x02,0x01,0xe5,0x05,0xe5,
- 0x3e,0x07,0xe6,0x09,0xe6,0x10,0xe5,0x1b,0x09,0xe5,0x21,0xe6,0xe5,0x04,0xe5,0x03,
- 0x03,0xe5,0x01,0x05,0xe5,0x07,0xe6,0x08,0xe6,0x0c,0x03,0xe5,0x01,0xe5,0x0e,0x09,
- 0x0c,0x06,0x02,0xe5,0x07,0xe5,0x07,0x31,0x02,0xe6,0x0d,0x04,0x01,0x02,0x06,0x02,
- 0x02,0x06,0x04,0x01,0x02,0x03,0xe5,0xe5,0x01,0x09,0x09,0x09,0x06,0x02,0xe5,0x01,
- 0xe5,0xe5,0x01,0xe6,0x03,0x02,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x09,0xe5,0xe5,0x02,
- 0x02,0x04,0x01,0x02,0xe6,0x03,0x02,0x04,0x01,0x02,0x06,0x02,0x09,0x04,0xe6,0x01,
- 0xe6,0x03,0x02,0x06,0x02,0x03,0x05,0x09,0x09,0x09,0x04,0x01,0x06,0x01,0x02,0x02,
- 0x13,0x08,0xe5,0x08,0x09,0x09,0x24,0x02,0x04,0x09,0x01,0x1b,0x04,0x06,0x01,0x02,
- 0x09,0x06,0x02,0x09,0x08,0xe5,0x08,0x09,0x08,0xe5,0x05,0x02,0x31,0x04,0x02,0x01,
- 0x01,0x13,0x09,0x0b,0x09,0x07,0x29,0x05,0x1d,0x09,0x03,0x07,0x03,0x09,0x08,0x08,
- 0x0b,0x05,0x02,0x0a,0x07,0x0a,0x31,0x0a,0x01,0xe5,0xe5,0x14,0x01,0x07,0x01,0x13,
- 0x09,0x27,0xe7,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x06,0xe6,0x05,0xe7,0xe5,0x03,0x02,
- 0xe6,0x05,0x07,0x01,0xe7,0x05,0x04,0x07,0x06,0x02,0x04,0x02,0xe5,0x06,0x04,0x02,
- 0x01,0x02,0x04,0x36,0x04,0xe5,0x01,0x14,0x01,0x01,0x05,0x01,0xe5,0x08,0x09,0x08,
- 0xe5,0x26,0xe5,0x03,0x03,0xe5,0x07,0xe5,0x08,0x05,0x02,0xe5,0x09,0xe5,0x07,0x03,
- 0x02,0x01,0xe6,0x04,0x01,0xe6,0x01,0x06,0x01,0x03,0x03,0x05,0x01,0x04,0x02,0x01,
- 0xe6,0x04,0x01,0x01,0x07,0xe5,0x35,0x02,0x19,0x03,0xe5,0x03,0x07,0x01,0x06,0x0a,
- 0x01,0x28,0x02,0x0a,0x01,0x11,0x04,0x01,0x04,0x06,0x07,0x09,0x01,0x01,0x05,0x0e,
- 0x04,0x03,0x03,0x01,0x01,0x07,0x09,0x06,0xe5,0x37,0xe8,0x14,0xe5,0x01,0x05,0xe6,
- 0xe5,0x04,0xe6,0x06,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,
- 0x04,0xe8,0x05,0xe7,0x04,0xe7,0x02,0x02,0xe8,0x05,0xe6,0x09,0xe5,0x07,0xe6,0x06,
- 0xe6,0xe5,0x04,0xe5,0x07,0xe6,0x06,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x01,0x05,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x08,0xe6,0xe5,0x14,0x01,
- 0x07,0x01,0xe6,0x1a,0x28,0xe5,0x07,0xe5,0x11,0xe5,0xe5,0x04,0xe5,0x07,0x09,0x01,
- 0x07,0x01,0xe5,0x05,0x01,0x14,0x08,0x09,0x09,0x07,0x38,0x01,0x01,0x17,0x01,0x07,
- 0x01,0x1b,0x01,0x27,0x04,0x01,0x02,0x04,0x01,0x02,0x03,0x02,0x09,0xe5,0x07,0x0c,
- 0x01,0x07,0x01,0xe5,0x05,0x01,0x09,0x0a,0x10,0x09,0x01,0x09,0x36,0x03,0x19,0x09,
- 0x07,0x01,0x13,0x25,0x05,0x01,0x01,0x09,0x06,0xe5,0x07,0xe5,0x02,0xe5,0x02,0x03,
- 0x0c,0x09,0x09,0x31,0x07,0x39,0xe7,0x1b,0x06,0xe5,0x05,0x01,0xe5,0x0f,0x01,0x2a,
- 0x01,0xe6,0x04,0x01,0x01,0x05,0xe5,0xe6,0x04,0x02,0xe6,0x03,0x01,0x01,0x07,0x0e,
- 0x01,0x02,0x04,0x01,0x02,0x06,0x02,0x09,0x13,0x06,0x02,0x06,0x36,0xe5,0x01,0xe5,
- 0x19,0x05,0x09,0x01,0xe5,0x05,0xe5,0xe5,0x32,0x18,0xe5,0xe5,0x11,0xe5,0xe5,0x05,
- 0x09,0x09,0x02,0x06,0x09,0x01,0xe5,0x05,0x01,0xe5,0x08,0x10,0xe5,0xe5,0x33,0x03,
- 0xe5,0x10,0x01,0x07,0x01,0x02,0xe5,0x02,0x01,0x04,0x02,0x01,0x03,0x03,0x01,0x02,
- 0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x06,0xe5,0xe6,0x02,
- 0x02,0x01,0x07,0x01,0x04,0x04,0x01,0x03,0x03,0x01,0xe5,0x02,0x02,0x01,0xe5,0x01,
- 0x03,0x01,0xe5,0x05,0x01,0x02,0xe5,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x05,0x01,
- 0x02,0x04,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0b,0x02,
- 0x03,0x16,0x0f,0x04,0x01,0x0c,0x08,0x10,0x10,0x09,0x09,0xe5,0x04,0x02,0x01,0x07,
- 0xe5,0x04,0x03,0x1c,0x01,0xe5,0x01,0x04,0x14,0xe5,0x05,0x02,0x49,0x01,0x01,0xe5,
- 0x15,0x2b,0x0c,0x12,0x05,0x0a,0x04,0x07,0x05,0xe5,0x02,0x04,0x01,0x18,0xe5,0x0a,
- 0x01,0x04,0x0b,0x0a,0x01,0x01,0x04,0x01,0x07,0x05,0x3c,0x04,0x25,0x29,0x0a,0x18,
- 0xe5,0x04,0xe5,0xe5,0x10,0x09,0x1d,0x05,0x2c,0x04,0x3e,0xe5,0x01,0xe5,0x10,0x06,
- 0xe5,0x07,0xe5,0x05,0x01,0xe5,0x07,0xe5,0x02,0x04,0x18,0x0c,0xe5,0x07,0xe5,0x09,
- 0xe5,0x04,0x11,0x0b,0x02,0x01,0x01,0x07,0x07,0xe5,0x07,0x01,0x03,0x03,0xe6,0xe5,
- 0x01,0x02,0x02,0x05,0xe5,0x01,0x03,0x02,0x01,0x07,0xe6,0x34,0xe5,0xe7,0x17,0x07,
- 0xe5,0x08,0x02,0x06,0x09,0x0d,0x16,0x01,0x12,0x01,0x1d,0x05,0x08,0x04,0x01,0x05,
- 0xe5,0x0c,0xe5,0x01,0x05,0x07,0x03,0x09,0x04,0x01,0x02,0x07,0x38,0x01,0xe6,0x0d,
- 0x09,0x09,0xe5,0x11,0x1e,0x09,0x07,0xe5,0x03,0x03,0xe5,0x24,0xe5,0x01,0xe5,0x05,
- 0x18,0x1a,0x04,0x07,0x06,0x02,0xe5,0x3a,0x02,0x01,0x10,0x06,0xe5,0x07,0x04,0x09,
- 0x04,0xe5,0xe5,0x2d,0x09,0x02,0x0d,0x01,0x0a,0x01,0x07,0x01,0xe6,0x05,0xe5,0xe5,
- 0x06,0x09,0x01,0x02,0x04,0x09,0x01,0x02,0xe5,0x0c,0x09,0x01,0x42,0x01,0x05,0x04,
- 0x05,0x06,0x09,0x02,0x05,0x0c,0x2f,0x07,0x01,0x03,0x09,0x15,0xe5,0x01,0x12,0x01,
- 0xe5,0x03,0x03,0x0a,0x06,0x01,0x0d,0x06,0x03,0x08,0x03,0x3d,0xe6,0x04,0x08,0x07,
- 0xe5,0x07,0x06,0x06,0x0c,0x30,0x02,0x02,0x03,0x04,0xe5,0x02,0x01,0x16,0x07,0x06,
- 0xe5,0x03,0x04,0x03,0x05,0x0f,0xe6,0x05,0xe8,0x04,0x04,0xe5,0x02,0x47,0x05,0x08,
- 0x05,0x02,0x0d,0x09,0x3b,0x08,0x09,0x0b,0x09,0x04,0x1b,0x19,0x05,0x02,0x1b,0x3a,
- 0xe8,0x0e,0x06,0x01,0x04,0x07,0x06,0x04,0x2f,0x10,0x01,0x06,0x0a,0x03,0x0a,0xe5,
- 0x09,0x04,0x04,0x05,0x08,0x16,0x0d,0x03,0x06,0x01,0x09,0x35,0x02,0x01,0x20,0x0c,
- 0x01,0x07,0x32,0x09,0x06,0x01,0x0a,0x0a,0x13,0x13,0x02,0x27,0x06,0x07,0x01,0x36,
- 0x02,0xe5,0x1c,0x09,0x03,0xe5,0x08,0x37,0x02,0x06,0x01,0x07,0x02,0x0e,0x0b,0x04,
- 0x01,0x11,0x01,0x31,0x01,0x05,0x38,0xe5,0x01,0xe6,0x0e,0x09,0xe5,0x17,0x04,0x01,
- 0x01,0x04,0xe5,0x07,0xe5,0x08,0x01,0x01,0x04,0xe5,0xe5,0xe5,0x03,0x01,0xe5,0x05,
- 0x02,0x01,0x07,0x01,0x04,0x09,0x1f,0x05,0x72,0xea,0x01,0x01,0x0b,0x06,0x02,0x03,
- 0x01,0x0a,0xe5,0x07,0xe5,0x04,0x01,0x02,0x08,0x02,0x06,0x05,0x01,0x01,0x05,0x01,
- 0x02,0x04,0x01,0x04,0x01,0xe5,0x08,0xe5,0x05,0x01,0xe5,0x17,0xe5,0x03,0xe5,0x0a,
- 0x0a,0x08,0xe5,0x07,0xe5,0x13,0x3b,0x01,0x02,0x01,0xe6,0x03,0x05,0xe5,0xe5,0xe5,
- 0x10,0x01,0xe5,0x02,0xe5,0xe5,0xe5,0x06,0x01,0x0b,0x02,0x09,0x09,0x06,0x07,0x01,
- 0xe5,0x0d,0x01,0x03,0xe5,0x01,0x01,0x01,0x09,0x0e,0x01,0x07,0x01,0x04,0x01,0xe5,
- 0x06,0x10,0x04,0xe5,0x02,0x02,0x06,0x04,0xe5,0x3e,0x04,0x02,0xe5,0x01,0x07,0xe5,
- 0xe5,0x08,0x06,0xe5,0xe8,0x02,0x04,0x07,0x01,0x09,0x04,0x01,0x02,0x04,0x01,0x02,
- 0x04,0x01,0x02,0x04,0x13,0x02,0x01,0x04,0x02,0x01,0x1a,0xe5,0x10,0xe5,0x08,0xe5,
- 0x0a,0x09,0xe5,0x07,0x06,0xe5,0x40,0x06,0x0d,0x01,0x02,0x01,0x01,0x02,0x02,0x06,
- 0xe5,0x03,0x03,0x04,0x01,0xe5,0xe5,0x01,0x01,0x01,0x05,0xe5,0x01,0x02,0x02,0xe5,
- 0x01,0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0xe7,0x04,0x02,0xe5,0xe5,0x01,0x02,0x06,
- 0x02,0x06,0x04,0x01,0x02,0x06,0x01,0x13,0x04,0x01,0x0a,0x01,0xe5,0x04,0xe5,0xe5,
- 0x05,0x02,0xe5,0x0e,0x06,0x02,0x3c,0xe5,0x01,0x0a,0x04,0x03,0xe5,0x03,0x01,0x01,
- 0xe5,0x01,0xe5,0x04,0x03,0x01,0x02,0xe5,0xe5,0x02,0x02,0x02,0x02,0x09,0x09,0x09,
- 0x01,0x01,0x04,0x05,0x01,0x01,0x09,0x09,0x05,0x01,0x01,0x07,0x01,0x01,0x09,0x05,
- 0x0d,0x05,0x01,0xe5,0x01,0x01,0xe5,0x01,0x01,0x01,0x01,0xe6,0x01,0xe5,0x01,0x01,
- 0x08,0xe5,0x01,0x01,0x02,0x01,0x36,0x02,0xe6,0xe6,0x13,0x03,0x07,0x09,0x01,0x07,
- 0x01,0x03,0xe5,0x1c,0x01,0x14,0x01,0x07,0x01,0x04,0x01,0xe5,0xe5,0xe6,0x03,0x01,
- 0x01,0x01,0xe5,0x03,0x01,0x11,0x01,0x11,0x01,0x04,0x02,0x01,0x07,0x06,0x02,0x01,
- 0x04,0xe5,0x02,0x3f,0x02,0xe6,0x11,0x04,0x04,0x06,0x09,0x07,0x01,0x01,0x07,0x02,
- 0x06,0x02,0x06,0x02,0x01,0x01,0x02,0x02,0x04,0x09,0x01,0x01,0xe5,0x03,0x01,0x01,
- 0xe5,0xe5,0x01,0x01,0x02,0x04,0x01,0x02,0x01,0x01,0x02,0x01,0x11,0x04,0x0e,0x01,
- 0xe5,0x01,0xe6,0x02,0x09,0x03,0xe6,0xe5,0xe5,0x01,0x01,0xe5,0x02,0x40,0xe5,0x01,
- 0x1d,0x02,0x03,0x02,0xe5,0x07,0x02,0x06,0x03,0x09,0x05,0x03,0x05,0x03,0x05,0x09,
- 0x06,0x02,0xe5,0x04,0x02,0x01,0xe5,0x02,0x09,0x22,0x10,0x0c,0x06,0x02,0x02,0x06,
- 0xe6,0x43,0xe8,0x13,0xe5,0x07,0xe5,0x07,0x09,0x0b,0x10,0xe5,0x07,0xe5,0x07,0xe5,
- 0x03,0x03,0xe5,0x04,0xe6,0xe6,0x03,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x1e,0x02,0x01,
- 0x0e,0x02,0xe5,0x07,0xe6,0x06,0x06,0x0c,0x09,0x32,0xe8,0x0d,0x06,0x02,0x04,0x01,
- 0x02,0x03,0xe5,0xe5,0x01,0x04,0xe6,0x01,0xe5,0x07,0x04,0x01,0xe5,0xe5,0x06,0x01,
- 0x06,0xe5,0xe5,0x08,0x09,0xe5,0x04,0x02,0xe5,0xe5,0x05,0xe8,0x01,0x02,0xe6,0x08,
- 0x02,0x03,0x02,0x06,0x02,0x03,0x05,0x02,0x03,0x02,0xe6,0x06,0x09,0x04,0xe6,0x01,
- 0x06,0x02,0x04,0xe6,0x01,0x03,0x05,0x09,0x09,0x09,0x0d,0xe6,0x01,0x02,0x12,0xe5,
- 0x08,0x09,0x09,0x13,0xe5,0xe5,0x05,0xe5,0xe5,0x02,0x03,0x01,0x06,0x09,0x04,0x03,
- 0xe5,0x0d,0x03,0xe5,0x13,0x09,0xe5,0x0f,0x02,0x09,0x13,0x06,0x02,0x09,0x36,0x02,
- 0xe8,0x14,0x07,0x0a,0x08,0x13,0x06,0x04,0x04,0x09,0x04,0x09,0x05,0x03,0x05,0x0b,
- 0x21,0x12,0x0a,0x11,0x09,0x09,0x3c,0x03,0x01,0x0b,0x04,0x04,0x04,0x07,0x08,0x09,
- 0x01,0x14,0x09,0x09,0x01,0x07,0x01,0x04,0xe7,0x05,0xe7,0x02,0x02,0xe7,0x05,0xe5,
- 0xe5,0x16,0x04,0x02,0x03,0xe5,0xe5,0x09,0x01,0x01,0x04,0x06,0x03,0xe5,0x01,0x07,
- 0x03,0x02,0x07,0x01,0x34,0x01,0x01,0x01,0x0a,0x04,0x01,0x07,0x01,0x05,0x01,0x07,
- 0x02,0x06,0x01,0xe6,0x08,0x09,0x09,0x09,0x02,0x06,0x08,0xe5,0x07,0xe5,0x01,0x05,
- 0xe5,0x04,0x02,0xe5,0x10,0x02,0x06,0x03,0x01,0x03,0x01,0xe5,0x09,0x07,0xe5,0x05,
- 0x01,0x04,0x02,0x01,0x01,0x01,0x06,0x06,0x01,0xe5,0x34,0xe8,0x09,0x02,0x06,0x08,
- 0x05,0x07,0x08,0x02,0x01,0x0f,0x05,0x03,0x05,0x03,0x05,0x0c,0x03,0x03,0x01,0x03,
- 0x0a,0x02,0x04,0x03,0x23,0x01,0x04,0x04,0x07,0x0b,0x01,0x0b,0x0d,0x38,0xe5,0xe6,
- 0x0e,0x05,0xe5,0x01,0x05,0xe6,0x06,0xe5,0x01,0x05,0xe6,0x06,0xe5,0x07,0xe5,0x01,
- 0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x06,0x01,0x02,0x04,0xe6,0x01,0x03,0xe5,
- 0xe6,0x04,0xe5,0xe6,0x05,0xe6,0x09,0xe6,0x06,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,
- 0xe6,0x06,0xe6,0x06,0xe6,0xe5,0x04,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x06,0x01,0xe6,0x0c,0x0b,0x09,0x07,0x0b,0x11,0x09,0x09,0x09,
- 0x10,0x0f,0x08,0xe6,0x1c,0x07,0x13,0x02,0x08,0x1b,0x01,0x36,0xe6,0xe5,0x0e,0x07,
- 0x09,0x15,0x13,0x09,0x09,0x09,0x06,0xe5,0x07,0xe5,0x05,0x01,0x02,0x06,0xe5,0x07,
- 0x16,0x09,0x16,0x06,0x09,0x01,0x11,0x01,0x37,0xe7,0x18,0x09,0x07,0x3d,0x04,0xe7,
- 0x07,0xe5,0x04,0x01,0xe6,0x01,0x02,0xe7,0x01,0x04,0x01,0x01,0x1e,0x0b,0x07,0x0b,
- 0x1d,0x37,0xe7,0x11,0x09,0x04,0x18,0x09,0x09,0x09,0x09,0x04,0x04,0xe6,0x06,0x09,
- 0x01,0x07,0x01,0x02,0x04,0x1f,0x04,0x0e,0x07,0x06,0x0e,0x0e,0x38,0x03,0x0d,0xe5,
- 0xe5,0x08,0x11,0x01,0x08,0xe5,0x05,0x01,0xe5,0x05,0x09,0x01,0xe5,0x05,0x47,0x01,
- 0xe5,0x05,0x09,0x09,0x01,0xe5,0x05,0xe5,0xe5,0x09,0x09,0x03,0x01,0x42,0xe5,0xe6,
- 0xe5,0x0a,0x03,0x01,0x07,0x01,0x07,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x04,0x02,
- 0x01,0x02,0x01,0x02,0x01,0xe5,0x02,0x02,0xe6,0xe5,0x01,0x02,0x01,0x01,0x05,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0xe5,0x05,0x01,0x04,0x04,0x01,0x01,0x05,0x01,0xe6,
- 0x04,0x01,0xe6,0x04,0x01,0x01,0x02,0x01,0xe5,0xe5,0xe5,0xe5,0x02,0x01,0x02,0x04,
- 0x01,0x07,0x01,0x01,0x02,0x02,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x08,0x04,0xe5,0x16,0x08,0x03,0x26,0xe5,0xe5,0x0a,0x06,0x0c,0x04,0xe5,0x01,
- 0x10,0x04,0x03,0xe5,0x04,0x0d,0x09,0x09,0x73,0x02,0xe6,0x1f,0x03,0x09,0x1a,0x05,
- 0xe6,0x1a,0x04,0x05,0x0a,0x01,0x03,0x05,0x0d,0x0a,0x0e,0x31,0x07,0x06,0x02,0x30,
- 0x01,0xe5,0xe5,0x4a,0x0c,0x18,0x10,0x0b,0x01,0x07,0xe6,0x06,0x01,0x30,0x11,0x0c,
- 0x04,0x37,0xe5,0x0c,0xe6,0x06,0x01,0x01,0x05,0xe6,0x06,0xe7,0x07,0x01,0x01,0x0d,
- 0xe5,0x09,0x09,0x07,0x09,0x01,0x05,0x03,0xe5,0x04,0xe5,0x0f,0x03,0x0a,0x01,0xe5,
- 0x0f,0x01,0x11,0xe6,0x08,0x04,0x01,0x02,0x07,0x01,0xe5,0x05,0x03,0x36,0xe6,0x0d,
- 0x0a,0x07,0x09,0x0a,0x1c,0x16,0x06,0x02,0x05,0x01,0x0a,0x02,0x0e,0x0c,0x01,0x13,
- 0x11,0x08,0x05,0x04,0x0b,0xe5,0x07,0x02,0x32,0x02,0xe5,0x0f,0x06,0x01,0x09,0x03,
- 0x05,0x14,0x12,0x07,0x02,0x01,0x27,0x0c,0x01,0x11,0x01,0x03,0x01,0x05,0x2c,0x01,
- 0xe5,0xe5,0x0a,0x37,0xe7,0x0f,0x06,0xe5,0xe5,0x05,0xe5,0xe5,0x06,0x08,0x1d,0xe5,
- 0x14,0x09,0x02,0x0a,0x06,0x05,0x04,0x04,0x05,0x03,0x04,0x06,0xe5,0x0a,0x13,0x06,
- 0x05,0x03,0x01,0x02,0x04,0x08,0xe6,0x37,0x01,0xe5,0x13,0x04,0x02,0x04,0x08,0x09,
- 0xe5,0x1e,0x18,0xe5,0x05,0x09,0x0b,0x04,0x07,0x12,0x02,0x04,0x20,0x03,0x0c,0x06,
- 0x09,0x39,0xe5,0x1f,0x03,0xe5,0xe5,0x13,0x16,0xe5,0x10,0x09,0xe7,0x05,0xe7,0x05,
- 0xe5,0x07,0x08,0x01,0x10,0x16,0x04,0x09,0xe5,0x01,0x06,0xe5,0x06,0x06,0xe6,0x3f,
- 0xe5,0x01,0x29,0x0f,0x0a,0xe5,0x0c,0x01,0x1c,0x09,0x08,0x04,0x08,0x05,0x41,0x03,
- 0x0e,0x40,0xe7,0x16,0x01,0x06,0xe5,0xe5,0x08,0x18,0x09,0xe5,0x02,0x0a,0x0b,0xe6,
- 0x01,0x01,0x04,0x02,0x01,0x0d,0x05,0x0b,0x13,0x09,0x0b,0x1c,0x0f,0xe5,0xe5,0x35,
- 0xe6,0xe6,0x14,0x02,0x0c,0x05,0xe5,0x01,0x1b,0x01,0x06,0x01,0xe5,0xe5,0x06,0x04,
- 0x01,0x07,0x01,0xe5,0x07,0x14,0xe6,0x05,0x01,0x02,0x0f,0x28,0x01,0x05,0x01,0xe5,
- 0x03,0x03,0x09,0x35,0x01,0xe7,0x10,0x07,0x12,0x26,0x01,0x01,0x09,0x1b,0x11,0x0a,
- 0xe5,0x0d,0x0e,0x05,0x19,0x06,0x0c,0x09,0x38,0xe8,0x28,0x2d,0xe5,0x04,0xe5,0x01,
- 0x01,0x04,0x09,0x02,0x01,0x04,0x02,0xe5,0xe5,0x02,0x0a,0x1a,0x03,0xe5,0x24,0x13,
- 0xe5,0x3b,0xe5,0x01,0xe6,0x01,0x01,0x17,0x09,0x04,0xe6,0x24,0x06,0x01,0x06,0xe5,
- 0x0f,0x01,0xe5,0x04,0x03,0x01,0xe5,0x25,0x01,0x0a,0xe5,0x2f,0xe5,0xe5,0x05,0xe5,
- 0x31,0x01,0x02,0x03,0x04,0x0f,0x01,0x07,0x01,0x06,0xe5,0x01,0x01,0x22,0xe5,0x02,
- 0x0b,0x09,0x19,0x03,0x01,0xe5,0x21,0x03,0x07,0x22,0xe5,0xe5,0xe5,0x08,0x04,0xe5,
- 0x02,0x31,0x04,0xe5,0xe6,0x01,0x11,0x08,0xe5,0x08,0xe5,0xe5,0xe5,0x21,0x02,0x31,
- 0x33,0x1a,0x09,0x02,0x06,0xe5,0xe5,0x05,0x02,0x35,0x02,0xe5,0x01,0x15,0x08,0x01,
- 0x0c,0x07,0x01,0x19,0x01,0x05,0x02,0x0f,0x09,0x09,0x04,0x04,0x09,0xe5,0x01,0x1f,
- 0xe5,0xe5,0x18,0x09,0x01,0x01,0x02,0xe5,0x01,0x02,0x05,0x03,0x36,0xe8,0x01,0x18,
- 0x01,0x02,0x04,0x04,0x02,0x01,0x05,0x01,0x01,0x1d,0x2d,0x03,0x09,0x23,0x01,0x01,
- 0x01,0x01,0x02,0x18,0x01,0x02,0xe5,0x03,0x04,0x03,0x05,0x03,0x04,0x2c,0x02,0x03,
- 0xe5,0x27,0x01,0x09,0x01,0x1b,0x17,0x01,0xe5,0x05,0xe5,0x07,0x05,0x10,0x01,0x20,
- 0x01,0x22,0x09,0x02,0x01,0x02,0x04,0x07,0x2f,0xe6,0x01,0x17,0x09,0x09,0x09,0x01,
- 0x1d,0x16,0x01,0x01,0x05,0x09,0x04,0x03,0xe5,0x03,0x03,0x02,0x01,0x1b,0x04,0x01,
- 0x1b,0x06,0xe5,0x05,0xe7,0x0c,0x39,0xe5,0x1c,0x02,0x35,0x02,0x10,0x09,0x09,0x09,
- 0x09,0x02,0x02,0x26,0x02,0x1a,0x01,0xe5,0x05,0x09,0x02,0x3a,0xe7,0x1d,0x09,0x2e,
- 0x02,0x01,0x0d,0xe6,0xe5,0x04,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x28,0x34,0xe6,
- 0x43,0xe8,0x0d,0x09,0x05,0x03,0x03,0x02,0x02,0x02,0x06,0x09,0x09,0x04,0x01,0x02,
- 0x01,0x01,0x05,0x09,0xe6,0xe6,0xe5,0x01,0xe6,0xe5,0x01,0x02,0xe6,0xe5,0x04,0xe5,
- 0x07,0x0b,0x09,0x09,0x04,0x01,0x02,0x02,0x06,0x09,0x09,0x09,0x04,0x01,0x02,0x02,
- 0x06,0x09,0x09,0x09,0x09,0x0d,0xe7,0xe5,0x01,0x24,0x02,0x3b,0x04,0x09,0x01,0x16,
- 0x29,0x27,0x09,0x09,0x36,0x03,0x01,0xe5,0x26,0x3d,0x23,0x03,0x29,0x27,0x07,0x0b,
- 0x3d,0xe5,0xe5,0x16,0x09,0x07,0x01,0x22,0x04,0xe6,0x0b,0x02,0x01,0xe5,0xe5,0x05,
- 0xe7,0x02,0x02,0xe5,0xe5,0x06,0xe6,0x05,0xe6,0x08,0x13,0x02,0x24,0x04,0x02,0x04,
- 0x03,0x0a,0x01,0x34,0x04,0xe5,0x15,0x02,0xe5,0x07,0xe5,0x07,0xe5,0x20,0x05,0xe5,
- 0x0d,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x08,0x08,0xe5,0x08,0xe5,0x11,0x01,0x01,0x06,
- 0x1c,0xe5,0x07,0x01,0x08,0x09,0x35,0xe8,0x29,0xe5,0xe5,0x23,0x03,0x16,0xe5,0xe5,
- 0x03,0x0b,0xe5,0x04,0x02,0x02,0x04,0x01,0x07,0x0e,0x04,0x06,0x02,0x31,0x06,0xe5,
- 0xe5,0x35,0x03,0x15,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x05,0xe8,0x05,0xe7,0x04,0xe7,0x05,0xe7,0x06,0xe6,
- 0x03,0x05,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,
- 0xe5,0x01,0x19,0x07,0x01,0x07,0x01,0x3c,0xe5,0x07,0x13,0xe5,0xe5,0x10,0x3b,0x07,
- 0x13,0x01,0x36,0x01,0xe6,0x18,0x07,0x01,0x09,0x3f,0x02,0x02,0xe5,0x02,0x01,0x02,
- 0x03,0x02,0x09,0x09,0x04,0x3b,0x09,0x09,0x40,0xe8,0x2a,0x01,0x39,0x01,0x04,0xe5,
- 0xe5,0x08,0x06,0xe5,0x07,0xe5,0x07,0x03,0x02,0x1d,0x31,0x07,0x01,0x36,0x02,0xe5,
- 0x03,0x28,0x2a,0x13,0xe5,0xe6,0x04,0x01,0x01,0x05,0xe5,0xe6,0x04,0x02,0xe5,0x04,
- 0x01,0x01,0x04,0x16,0x2e,0x02,0x48,0x02,0x04,0x12,0x07,0x01,0xe5,0xe5,0x05,0x02,
- 0x25,0x01,0x2e,0xe5,0xe5,0x08,0x19,0x04,0xe5,0x21,0x01,0x01,0xe5,0x05,0xe5,0xe5,
- 0x05,0x42,0xe8,0xe5,0xe5,0x0c,0x01,0x03,0x03,0x01,0x03,0x03,0x01,0x03,0x03,0x01,
- 0x02,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x06,0xe5,0xe5,
- 0x06,0x01,0x01,0x02,0x02,0x01,0x07,0x01,0x02,0x01,0x04,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0x04,0x02,0x01,0x02,0x04,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x08,0x02,0x02,0x20,0x0a,0x3d,0x06,
- 0x03,0x02,0x05,0xe6,0x0e,0x06,0x41,0x07,0x08,0xe5,0x42,0x02,0xe6,0x23,0x31,0xe5,
- 0x0f,0x08,0x01,0x02,0x22,0x40,0x08,0x48,0x01,0xe7,0x69,0x05,0x0a,0x01,0x1b,0x94,
- 0x01,0x01,0x21,0xe6,0x2e,0x01,0x11,0x01,0x07,0xe6,0x04,0x01,0xe7,0x0f,0x01,0x19,
- 0x05,0x32,0x06,0x46,0x22,0x04,0x11,0x1b,0x12,0x01,0x07,0x09,0x0e,0x03,0x01,0x07,
- 0x15,0x0f,0x1d,0x10,0x0c,0x33,0xe5,0xe5,0x41,0x09,0x06,0x02,0x35,0x04,0x03,0x03,
- 0x98,0x43,0x1c,0x04,0x04,0x0b,0x09,0x0e,0x09,0x4b,0x3d,0x0c,0x01,0x1c,0xe5,0x01,
- 0x37,0x0d,0x05,0x13,0x0c,0x03,0xe5,0x05,0x95,0xe7,0x5b,0x32,0xe5,0x07,0x18,0x7d,
- 0xe6,0x56,0x32,0x04,0x01,0x01,0x05,0xe5,0x03,0x3b,0xe5,0x1b,0x34,0x01,0x01,0x27,
- 0x01,0x44,0x1c,0x59,0x49,0xe8,0x41,0x44,0x0a,0x19,0x7f,0x02,0xe6,0x44,0x32,0x1b,
- 0x9a,0xe5,0xe7,0x24,0xe5,0x39,0xe5,0x05,0xe5,0x07,0x01,0xe5,0x05,0xe5,0x08,0x08,
- 0x98,0xe5,0x02,0xe5,0x01,0x01,0x23,0x01,0x38,0xe5,0x03,0x08,0x02,0x01,0xe5,0x02,
- 0x09,0x0a,0xe5,0x95,0x01,0x05,0xe5,0x03,0x37,0x01,0xe5,0xe5,0x28,0x02,0x09,0x06,
- 0x02,0x09,0x01,0xe5,0x98,0x05,0xe7,0x01,0x3c,0x01,0x27,0x04,0x01,0x02,0x04,0x01,
- 0x02,0x04,0x01,0x02,0x04,0x9e,0x03,0x01,0xe5,0x6b,0xe5,0x01,0x02,0x02,0xe5,0x01,
- 0x02,0x02,0xe5,0x01,0x02,0x02,0xe5,0xe6,0x01,0x03,0x02,0x96,0x02,0x02,0x40,0x25,
- 0x02,0x09,0x01,0x01,0x05,0x09,0x08,0x97,0x02,0x01,0x01,0xe5,0x3d,0x01,0x4a,0x01,
- 0x9e,0xe5,0xe7,0x3e,0x01,0x27,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0x01,0x01,0xe5,
- 0x9f,0xe6,0x66,0x09,0x05,0x03,0x05,0x03,0x05,0x09,0x98,0xe8,0x76,0xe5,0x07,0xe5,
- 0x07,0xe5,0x03,0x03,0xe5,0x98,0x01,0xe5,0x0d,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x04,0x01,0xe5,0xe5,0x05,0xe5,0xe5,0x03,0x01,0xe5,0xe5,0x05,0x02,0x0b,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0xe5,0x01,
- 0xe5,0x01,0x6d,0xe5,0xe5,0x04,0xe6,0xe5,0x05,0xe5,0xe5,0x04,0xe5,0x9b,0x02,0x01,
- 0x01,0x6d,0x06,0x04,0x04,0x02,0x06,0x04,0xa0,0x03,0x01,0x74,0x01,0x07,0x01,0x07,
- 0x09,0x97,0x01,0x02,0xe5,0x27,0x42,0x09,0x09,0x09,0x09,0x9a,0x03,0x71,0x05,0x03,
- 0x09,0x06,0xa1,0xe6,0xe5,0x14,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x01,
- 0x05,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x06,0xe5,0x01,0x71,0x09,0x09,0x09,0x9e,0xe8,0x72,0x09,0x09,0x09,0x9c,0x03,0x91,
- 0x08,0x93,0x02,0xe5,0x2d,0x3d,0x09,0x09,0x09,0x04,0x04,0x9a,0xe5,0xe5,0x66,0x01,
- 0xe5,0x05,0x09,0x01,0xe5,0x05,0x09,0x12,0x8b,0xe5,0xe6,0xe5,0x0e,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x06,0xe5,0xe5,0x06,0x01,0x04,
- 0x02,0x01,0x04,0x02,0xe8,0x01,0x02,0x01,0xe5,0x02,0x02,0x01,0x02,0xe5,0x02,0x01,
- 0x04,0x04,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x08,0x01,0xe6,0xe5,0x3c,0x35,0x01,0x09,0x0e,0x9f,0x01,0xe7,0x36,0xe3,0x12,0xe5,
- 0xe7,0x46,0x13,0x17,0x25,0x8a,0x0a,0xe5,0xe5,0x1c,0x48,0x0c,0x09,0x07,0xe5,0x07,
- 0xa0,0xe6,0x47,0x1b,0x12,0x0c,0x0d,0x06,0x3c,0x5b,0x5c,0x03,0x0f,0xe5,0x08,0x0a,
- 0xe5,0x10,0x16,0xe5,0x05,0x6d,0x07,0xe5,0x01,0x63,0x21,0x13,0x15,0x7e,0x02,0xe5,
- 0x61,0x13,0x01,0x0c,0x13,0x11,0x05,0x7d,0xe5,0xe5,0x91,0x06,0x94,0xe5,0x01,0x8a,
- 0x0d,0xe5,0x93,0x02,0xe5,0x61,0x24,0x12,0x06,0x05,0x27,0x09,0x57,0xe6,0x37,0x32,
- 0x1b,0x1d,0xe5,0x24,0x01,0x08,0x54,0xe5,0x01,0xe5,0x3a,0x49,0x21,0x25,0x60,0xe5,
- 0xe6,0x02,0x09,0xe7,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x03,0xe5,0x01,0xe5,0x07,0xe5,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x05,0xe7,
- 0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x09,0xe5,0x01,
- 0xe5,0x0d,0x01,0x09,0x09,0x09,0x09,0x02,0x06,0x02,0x06,0x07,0x01,0x09,0x07,0x01,
- 0x05,0x03,0x09,0x09,0x07,0x01,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x02,0x0a,0x03,0x0f,0x05,0x03,0x09,0x09,0x09,0x04,0x04,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x0a,0x11,0x02,0xe5,0x11,0xe5,0x03,0x03,0x09,0x1d,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x11,0xe5,0x97,0x8b,0x09,0x01,0xe6,0x0e,0x05,0x03,0x09,
- 0x09,0x09,0x09,0x04,0x04,0x09,0x09,0x04,0x04,0x09,0x06,0x02,0x09,0x09,0x06,0x01,
- 0x02,0x09,0x09,0x05,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0e,
- 0xe5,0x01,0x0d,0xe5,0x05,0x01,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe6,0x07,0xe5,0x09,
- 0xe5,0x07,0xe5,0x07,0xe5,0x05,0x01,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x10,0xe6,0x02,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x08,0xe5,0x08,0x03,0x05,0x09,0x03,0x05,0x09,0x01,
- 0x07,0x0b,0x01,0x07,0x09,0x01,0x07,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x0b,0x05,0xe5,0xe5,0x0d,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,
- 0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,
- 0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0x09,0x02,0x08,0xe5,0x07,0x02,
- 0x06,0xe5,0x07,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0x02,0x06,0x02,0x06,0xe5,0xe5,0x05,
- 0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,
- 0xe5,0x0b,0x01,0x01,0x0e,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x0f,0xe6,0xe5,0x86,0x09,0x15,0x27,0x09,0x4e,0x05,0xe5,0x01,0x0e,0x09,0x09,0x09,
- 0x09,0x13,0x13,0x05,0x03,0x09,0x09,0x09,0x09,0x08,0x02,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x07,0xe6,0x3f,0x13,0x10,0x33,0x1d,
- 0x76,0x03,0x10,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x03,0x05,
- 0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x03,0x05,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x0e,0xe7,0x03,0x37,0x03,0x05,0x0d,0x0f,0xe5,0x33,0x1c,0x72,0x03,0xe6,0xe5,0x37,
- 0x09,0x13,0x42,0xe5,0x8e,0x04,0xe7,0x3f,0x13,0x44,0x90,0x03,0xe6,0xe5,0x8f,0x9d,
- 0x03,0x13,0x09,0x09,0x09,0x1d,0x09,0x0c,0x06,0x09,0x09,0x36,0x06,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x15,0x01,0xe5,0x35,0x05,0x03,0x05,0x0d,0x0f,0x2a,
- 0x97,0x06,0x02,0xe5,0x98,0x8e,0x05,0x03,0xe3,0x50,0x14,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x02,0xe5,0x04,0xe6,0x01,0xe5,0x04,0x09,0xe8,
- 0x04,0x09,0x09,0x09,0x09,0x09,0x03,0x05,0x09,0x09,0x09,0x09,0x09,0x09,0x03,0x0f,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x03,0x05,0x09,0x09,0x08,0xe5,0x06,0xe6,
- 0x05,0xe5,0xe7,0x07,0xe5,0x05,0xe7,0x08,0x09,0x08,0xe5,0x07,0xe5,0x08,0x07,0xe6,
- 0x08,0x09,0x09,0x09,0x09,0x0f,0x01,0xe5,0x38,0x09,0x13,0x0a,0x36,0x95,0x02,0x0d,
- 0x09,0x09,0x09,0x09,0x04,0x04,0x03,0xe5,0x03,0x09,0x03,0x05,0x04,0x04,0x09,0x09,
- 0x11,0x09,0x0b,0x09,0x09,0x01,0x09,0x1d,0x0b,0x07,0x09,0x09,0x09,0x09,0x0f,0x01,
- 0xe7,0x0a,0x02,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x03,0x02,0x02,0x03,0x01,0xe5,
- 0x01,0x01,0x07,0x03,0x05,0x01,0x04,0x02,0x01,0x07,0x01,0x07,0x01,0x07,0x02,0x04,
- 0x15,0x04,0x0e,0x03,0x07,0x01,0x07,0x02,0x06,0x02,0x06,0x01,0x07,0x09,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x05,0xe6,0xe5,0xe5,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
diff --git a/board/esd/cpciiser4/u-boot.lds b/board/esd/cpciiser4/u-boot.lds
deleted file mode 100644
index f7a20d1da2..0000000000
--- a/board/esd/cpciiser4/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/dasa_sim/Makefile b/board/esd/dasa_sim/Makefile
deleted file mode 100644
index 082236593a..0000000000
--- a/board/esd/dasa_sim/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o cmd_dasa_sim.o eeprom.o ../common/pci.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/dasa_sim/cmd_dasa_sim.c b/board/esd/dasa_sim/cmd_dasa_sim.c
deleted file mode 100644
index 89a4aaf80a..0000000000
--- a/board/esd/dasa_sim/cmd_dasa_sim.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- *
- */
-
-#include <common.h>
-#include <command.h>
-#include <pci.h>
-
-#define OK 0
-#define ERROR (-1)
-
-#define TRUE 1
-#define FALSE 0
-
-
-extern u_long pci9054_iobase;
-
-
-/***************************************************************************
- *
- * Routines for PLX PCI9054 eeprom access
- *
- */
-
-static unsigned int PciEepromReadLongVPD (int offs)
-{
- unsigned int value;
- unsigned int ret;
- int count;
-
- pci_write_config_dword (CFG_PCI9054_DEV_FN, 0x4c,
- (offs << 16) | 0x0003);
- count = 0;
-
- for (;;) {
- udelay (10 * 1000);
- pci_read_config_dword (CFG_PCI9054_DEV_FN, 0x4c, &ret);
- if ((ret & 0x80000000) != 0) {
- break;
- } else {
- count++;
- if (count > 10) {
- printf ("\nTimeout: ret=%08x - Please try again!\n", ret);
- break;
- }
- }
- }
-
- pci_read_config_dword (CFG_PCI9054_DEV_FN, 0x50, &value);
-
- return value;
-}
-
-
-static int PciEepromWriteLongVPD (int offs, unsigned int value)
-{
- unsigned int ret;
- int count;
-
- pci_write_config_dword (CFG_PCI9054_DEV_FN, 0x50, value);
- pci_write_config_dword (CFG_PCI9054_DEV_FN, 0x4c,
- (offs << 16) | 0x80000003);
- count = 0;
-
- for (;;) {
- udelay (10 * 1000);
- pci_read_config_dword (CFG_PCI9054_DEV_FN, 0x4c, &ret);
- if ((ret & 0x80000000) == 0) {
- break;
- } else {
- count++;
- if (count > 10) {
- printf ("\nTimeout: ret=%08x - Please try again!\n", ret);
- break;
- }
- }
- }
-
- return TRUE;
-}
-
-
-static void showPci9054 (void)
-{
- int val;
- int l, i;
-
- /* read 9054-values */
- for (l = 0; l < 6; l++) {
- printf ("%02x: ", l * 0x10);
- for (i = 0; i < 4; i++) {
- pci_read_config_dword (CFG_PCI9054_DEV_FN,
- l * 16 + i * 4,
- (unsigned int *)&val);
- printf ("%08x ", val);
- }
- printf ("\n");
- }
- printf ("\n");
-
- for (l = 0; l < 7; l++) {
- printf ("%02x: ", l * 0x10);
- for (i = 0; i < 4; i++)
- printf ("%08x ",
- PciEepromReadLongVPD ((i + l * 4) * 4));
- printf ("\n");
- }
- printf ("\n");
-}
-
-
-static void updatePci9054 (void)
-{
- int val;
-
- /*
- * Set EEPROM write-protect register to 0
- */
- out32 (pci9054_iobase + 0x0c,
- in32 (pci9054_iobase + 0x0c) & 0xffff00ff);
-
- /* Long Serial EEPROM Load Registers... */
- val = PciEepromWriteLongVPD (0x00, 0x905410b5);
- val = PciEepromWriteLongVPD (0x04, 0x09800001); /* other input controller */
- val = PciEepromWriteLongVPD (0x08, 0x28140100);
-
- val = PciEepromWriteLongVPD (0x0c, 0x00000000); /* MBOX0... */
- val = PciEepromWriteLongVPD (0x10, 0x00000000);
-
- /* las0: fpga access (0x0000.0000 ... 0x0003.ffff) */
- val = PciEepromWriteLongVPD (0x14, 0xfffc0000); /* LAS0RR... */
- val = PciEepromWriteLongVPD (0x18, 0x00000001); /* LAS0BA */
-
- val = PciEepromWriteLongVPD (0x1c, 0x00200000); /* MARBR... */
- val = PciEepromWriteLongVPD (0x20, 0x00300500); /* LMISC/BIGEND */
-
- val = PciEepromWriteLongVPD (0x24, 0x00000000); /* EROMRR... */
- val = PciEepromWriteLongVPD (0x28, 0x00000000); /* EROMBA */
-
- val = PciEepromWriteLongVPD (0x2c, 0x43030000); /* LBRD0... */
-
- val = PciEepromWriteLongVPD (0x30, 0x00000000); /* DMRR... */
- val = PciEepromWriteLongVPD (0x34, 0x00000000);
- val = PciEepromWriteLongVPD (0x38, 0x00000000);
-
- val = PciEepromWriteLongVPD (0x3c, 0x00000000); /* DMPBAM... */
- val = PciEepromWriteLongVPD (0x40, 0x00000000);
-
- /* Extra Long Serial EEPROM Load Registers... */
- val = PciEepromWriteLongVPD (0x44, 0x010212fe); /* PCISID... */
-
- /* las1: 505-sram access (0x0004.0000 ... 0x001f.ffff) */
- /* Offset to LAS1: Group 1: 0x00040000 */
- /* Group 2: 0x00080000 */
- /* Group 3: 0x000c0000 */
- val = PciEepromWriteLongVPD (0x48, 0xffe00000); /* LAS1RR */
- val = PciEepromWriteLongVPD (0x4c, 0x00040001); /* LAS1BA */
- val = PciEepromWriteLongVPD (0x50, 0x00000208); /* LBRD1 */ /* so wars bisher */
-
- val = PciEepromWriteLongVPD (0x54, 0x00004c06); /* HotSwap... */
-
- printf ("Finished writing defaults into PLX PCI9054 EEPROM!\n");
-}
-
-
-static void clearPci9054 (void)
-{
- int val;
-
- /*
- * Set EEPROM write-protect register to 0
- */
- out32 (pci9054_iobase + 0x0c,
- in32 (pci9054_iobase + 0x0c) & 0xffff00ff);
-
- /* Long Serial EEPROM Load Registers... */
- val = PciEepromWriteLongVPD (0x00, 0xffffffff);
- val = PciEepromWriteLongVPD (0x04, 0xffffffff); /* other input controller */
-
- printf ("Finished clearing PLX PCI9054 EEPROM!\n");
-}
-
-
-/* ------------------------------------------------------------------------- */
-int do_pci9054 (cmd_tbl_t * cmdtp, int flag, int argc,
- char *argv[])
-{
- if (strcmp (argv[1], "info") == 0) {
- showPci9054 ();
- return 0;
- }
-
- if (strcmp (argv[1], "update") == 0) {
- updatePci9054 ();
- return 0;
- }
-
- if (strcmp (argv[1], "clear") == 0) {
- clearPci9054 ();
- return 0;
- }
-
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
-
-}
-
-U_BOOT_CMD(
- pci9054, 3, 1, do_pci9054,
- "pci9054 - PLX PCI9054 EEPROM access\n",
- "pci9054 info - print EEPROM values\n"
- "pci9054 update - updates EEPROM with default values\n"
-);
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/esd/dasa_sim/config.mk b/board/esd/dasa_sim/config.mk
deleted file mode 100644
index 747f29f77e..0000000000
--- a/board/esd/dasa_sim/config.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# (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
-#
-
-#
-# esd ADCIOP boards
-#
-
-# FLASH:
-#TEXT_BASE = 0xFFFE0000
-TEXT_BASE = 0xFFFD0000
-
-# SDRAM:
-#TEXT_BASE = 0x00FE0000
diff --git a/board/esd/dasa_sim/dasa_sim.c b/board/esd/dasa_sim/dasa_sim.c
deleted file mode 100644
index 2f8ab1a478..0000000000
--- a/board/esd/dasa_sim/dasa_sim.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include "dasa_sim.h"
-
-/* ------------------------------------------------------------------------- */
-
-#undef FPGA_DEBUG
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-/* ------------------------------------------------------------------------- */
-
-/* fpga configuration data - generated by bit2inc */
-static unsigned char fpgadata[] = {
-#include "fpgadata.c"
-};
-
-#define FPGA_PRG_SLEEP 32 /* fpga program sleep-time */
-#define LOAD_LONG(a) a
-
-
-/******************************************************************************
- *
- * sysFpgaBoot - Load fpga-image into fpga
- *
- */
-static int fpgaBoot (void)
-{
- int i, j, index, len;
- unsigned char b;
- int imageSize;
-
- imageSize = sizeof (fpgadata);
-
- /* display infos on fpgaimage */
- index = 15;
- for (i = 0; i < 4; i++) {
- len = fpgadata[index];
- index += len + 3;
- }
-
- /* search for preamble 0xFF2X */
- for (index = 0; index < imageSize - 1; index++) {
- if ((fpgadata[index] == 0xff)
- && ((fpgadata[index + 1] & 0xf0) == 0x20))
- break;
- }
-
- /* enable cs1 instead of user0... */
- *(unsigned long *) 0x50000084 &= ~0x00000002;
-
-#ifdef FPGA_DEBUG
- printf ("%s\n",
- ((in32 (0x50000084) & 0x00010000) == 0) ? "NOT DONE" : "DONE");
-#endif
-
- /* init fpga by asserting and deasserting PROGRAM* (USER2)... */
- *(unsigned long *) 0x50000084 &= ~0x00000400;
- udelay (FPGA_PRG_SLEEP * 1000);
-
- *(unsigned long *) 0x50000084 |= 0x00000400;
- udelay (FPGA_PRG_SLEEP * 1000);
-
-#ifdef FPGA_DEBUG
- printf ("%s\n",
- ((in32 (0x50000084) & 0x00010000) == 0) ? "NOT DONE" : "DONE");
-#endif
-
- /* cs1: disable burst, disable ready */
- *(unsigned long *) 0x50000114 &= ~0x00000300;
-
- /* cs1: set write timing */
- *(unsigned long *) 0x50000118 |= 0x00010900;
-
- /* write configuration-data into fpga... */
- for (i = index; i < imageSize; i++) {
- b = fpgadata[i];
- for (j = 0; j < 8; j++) {
- *(unsigned long *) 0x30000000 =
- ((b & 0x80) == 0x80)
- ? LOAD_LONG (0x03030101)
- : LOAD_LONG (0x02020000);
- b <<= 1;
- }
- }
-
-#ifdef FPGA_DEBUG
- printf ("%s\n",
- ((in32 (0x50000084) & 0x00010000) == 0) ? "NOT DONE" : "DONE");
-#endif
-
- /* set cs1 to 32 bit data-width, disable burst, enable ready */
- *(unsigned long *) 0x50000114 |= 0x00000202;
- *(unsigned long *) 0x50000114 &= ~0x00000100;
-
- /* cs1: set iop access to little endian */
- *(unsigned long *) 0x50000114 &= ~0x00000010;
-
- /* cs1: set read and write timing */
- *(unsigned long *) 0x50000118 = 0x00010000;
- *(unsigned long *) 0x5000011c = 0x00010001;
-
-#ifdef FPGA_DEBUG
- printf ("%s\n",
- ((in32 (0x50000084) & 0x00010000) == 0) ? "NOT DONE" : "DONE");
-#endif
-
- /* wait for 30 ms... */
- udelay (30 * 1000);
- /* check if fpga's DONE signal - correctly booted ? */
- if ((*(unsigned long *) 0x50000084 & 0x00010000) == 0)
- return -1;
-
- return 0;
-}
-
-
-int board_early_init_f (void)
-{
- /*
- * Init pci regs
- */
- *(unsigned long *) 0x50000304 = 0x02900007; /* enable mem/io/master bits */
- *(unsigned long *) 0x500001b4 = 0x00000000; /* disable pci interrupt output enable */
- *(unsigned long *) 0x50000354 = 0x00c05800; /* disable emun interrupt output enable */
- *(unsigned long *) 0x50000344 = 0x00000000; /* disable pme interrupt output enable */
- *(unsigned long *) 0x50000310 = 0x00000000; /* pcibar0 */
- *(unsigned long *) 0x50000314 = 0x00000000; /* pcibar1 */
- *(unsigned long *) 0x50000318 = 0x00000000; /* pcibar2 */
-
- return 0;
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- int index;
- int len;
- char str[64];
- int i = getenv_r ("serial#", str, sizeof (str));
- int fpga;
- unsigned short val;
-
- puts ("Board: ");
-
- /*
- * Boot onboard FPGA
- */
- fpga = fpgaBoot ();
-
- if (!i || strncmp (str, "DASA_SIM", 8)) {
- puts ("### No HW ID - assuming DASA_SIM");
- }
-
- puts (str);
-
- if (fpga == 0) {
- val = *(unsigned short *) 0x30000202;
- printf (" (Id=%d Version=%d Revision=%d)",
- (val & 0x07f8) >> 3, val & 0x0001, (val & 0x0006) >> 1);
-
- puts ("\nFPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i = 0; i < 4; i++) {
- len = fpgadata[index];
- printf ("%s ", &(fpgadata[index + 1]));
- index += len + 3;
- }
- } else {
- puts ("\nFPGA: Booting failed!");
- }
-
- putc ('\n');
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- return (16 * 1024 * 1024);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/esd/dasa_sim/dasa_sim.h b/board/esd/dasa_sim/dasa_sim.h
deleted file mode 100644
index 5fc313a258..0000000000
--- a/board/esd/dasa_sim/dasa_sim.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (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
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- * Start Address Length
- * +-----------------------+ 0x4000_0000 Start of Flash -----------------
- * | MON8xx code | 0x4000_0100 Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused) |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses | 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) | 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address | 0x04
- * +-----------------------+ 0x4001_FFC0 ^
- * | Hardware Information | 0x40 | MON8xx
- * +=======================+ 0x4002_0000 (sector border) -----------------
- * | Autostart Header | | Applications
- * | ... | v
- *
- *****************************************************************************/
diff --git a/board/esd/dasa_sim/eeprom.c b/board/esd/dasa_sim/eeprom.c
deleted file mode 100644
index 1b4c7b34f7..0000000000
--- a/board/esd/dasa_sim/eeprom.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- *
- */
-
-#include <common.h>
-#include <command.h>
-
-
-#define EEPROM_CAP 0x50000358
-#define EEPROM_DATA 0x5000035c
-
-
-unsigned int eepromReadLong(int offs)
-{
- unsigned int value;
- volatile unsigned short ret;
- int count;
-
- *(unsigned short *)EEPROM_CAP = offs;
-
- count = 0;
-
- for (;;)
- {
- count++;
- ret = *(unsigned short *)EEPROM_CAP;
-
- if ((ret & 0x8000) != 0)
- break;
- }
-
- value = *(unsigned long *)EEPROM_DATA;
-
- return value;
-}
-
-
-unsigned char eepromReadByte(int offs)
-{
- unsigned int valueLong;
- unsigned char *ptr;
-
- valueLong = eepromReadLong(offs & ~3);
- ptr = (unsigned char *)&valueLong;
-
- return ptr[offs & 3];
-}
-
-
-void eepromWriteLong(int offs, unsigned int value)
-{
- volatile unsigned short ret;
- int count;
-
- count = 0;
-
- *(unsigned long *)EEPROM_DATA = value;
- *(unsigned short *)EEPROM_CAP = 0x8000 + offs;
-
- for (;;)
- {
- count++;
- ret = *(unsigned short *)EEPROM_CAP;
-
- if ((ret & 0x8000) == 0)
- break;
- }
-}
-
-
-void eepromWriteByte(int offs, unsigned char valueByte)
-{
- unsigned int valueLong;
- unsigned char *ptr;
-
- valueLong = eepromReadLong(offs & ~3);
- ptr = (unsigned char *)&valueLong;
-
- ptr[offs & 3] = valueByte;
-
- eepromWriteLong(offs & ~3, valueLong);
-}
-
-
-void i2c_read (uchar *addr, int alen, uchar *buffer, int len)
-{
- int i;
- int len2, ptr;
-
- /* printf("\naddr=%x alen=%x buffer=%x len=%x", addr[0], addr[1], *(short *)addr, alen, buffer, len); /###* test-only */
-
- ptr = *(short *)addr;
-
- /*
- * Read till lword boundary
- */
- len2 = 4 - (*(short *)addr & 0x0003);
- for (i=0; i<len2; i++)
- {
- *buffer++ = eepromReadByte(ptr++);
- }
-
- /*
- * Read all lwords
- */
- len2 = (len - len2) >> 2;
- for (i=0; i<len2; i++)
- {
- *(unsigned int *)buffer = eepromReadLong(ptr);
- buffer += 4;
- ptr += 4;
- }
-
- /*
- * Read last bytes
- */
- len2 = (*(short *)addr + len) & 0x0003;
- for (i=0; i<len2; i++)
- {
- *buffer++ = eepromReadByte(ptr++);
- }
-}
-
-void i2c_write (uchar *addr, int alen, uchar *buffer, int len)
-{
- int i;
- int len2, ptr;
-
- /* printf("\naddr=%x alen=%x buffer=%x len=%x", addr[0], addr[1], *(short *)addr, alen, buffer, len); /###* test-only */
-
- ptr = *(short *)addr;
-
- /*
- * Write till lword boundary
- */
- len2 = 4 - (*(short *)addr & 0x0003);
- for (i=0; i<len2; i++)
- {
- eepromWriteByte(ptr++, *buffer++);
- }
-
- /*
- * Write all lwords
- */
- len2 = (len - len2) >> 2;
- for (i=0; i<len2; i++)
- {
- eepromWriteLong(ptr, *(unsigned int *)buffer);
- buffer += 4;
- ptr += 4;
- }
-
- /*
- * Write last bytes
- */
- len2 = (*(short *)addr + len) & 0x0003;
- for (i=0; i<len2; i++)
- {
- eepromWriteByte(ptr++, *buffer++);
- }
-}
diff --git a/board/esd/dasa_sim/flash.c b/board/esd/dasa_sim/flash.c
deleted file mode 100644
index d2ac13fcd8..0000000000
--- a/board/esd/dasa_sim/flash.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- unsigned long base_b0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- base_b0 = -size_b0;
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -monitor_flash_len,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/dasa_sim/fpgadata.c b/board/esd/dasa_sim/fpgadata.c
deleted file mode 100644
index 1106d3270e..0000000000
--- a/board/esd/dasa_sim/fpgadata.c
+++ /dev/null
@@ -1,1952 +0,0 @@
- 0x00,0x09,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x00,0x00,0x01,0x61,0x00,0x0d,
- 0x61,0x63,0x6d,0x30,0x30,0x30,0x35,0x64,0x2e,0x6e,0x63,0x64,0x00,0x62,0x00,0x0b,
- 0x73,0x33,0x30,0x78,0x6c,0x74,0x71,0x31,0x34,0x34,0x00,0x63,0x00,0x0b,0x32,0x30,
- 0x30,0x30,0x2f,0x30,0x37,0x2f,0x31,0x30,0x00,0x64,0x00,0x09,0x31,0x39,0x3a,0x32,
- 0x37,0x3a,0x33,0x38,0x00,0x65,0x00,0x00,0x79,0xaa,0xff,0x20,0x3c,0xd4,0x9f,0x5b,
- 0xff,0x7e,0xde,0xee,0xbd,0xaa,0xfe,0xbf,0x9e,0xff,0xfb,0xfe,0x5f,0xbf,0xed,0xab,
- 0xdb,0xbe,0xe5,0xfb,0xfe,0xfb,0x9f,0xeb,0xfa,0xfe,0x5f,0xb6,0xef,0xfb,0xfe,0xfe,
- 0xaf,0xff,0xff,0xff,0xfb,0xfe,0xef,0xbf,0xef,0xff,0xba,0xff,0xbb,0xfe,0xfb,0xbe,
- 0xff,0xee,0xeb,0xff,0xef,0xbb,0xef,0xff,0xbe,0xff,0xbf,0xff,0xfb,0xfe,0xff,0xbb,
- 0xff,0xe1,0xff,0xff,0xff,0xff,0xff,0xbd,0xff,0xff,0xff,0xff,0xbc,0xff,0xbf,0xff,
- 0xfb,0xfd,0xff,0xdf,0xf7,0xff,0xff,0xbf,0xdf,0xff,0xff,0xff,0xff,0xdf,0xf7,0xfd,
- 0xff,0xff,0xfe,0x3f,0xff,0xbf,0xef,0xfb,0xfe,0xff,0xbf,0xef,0xe3,0xf6,0xff,0xbf,
- 0xef,0xfb,0xfe,0xff,0xef,0xdb,0xfe,0xff,0xbf,0xef,0xe3,0xfe,0xff,0xbf,0xef,0xfb,
- 0xfe,0xfe,0x3f,0xff,0xf7,0xff,0xef,0xbb,0xe7,0xf9,0xbe,0x7f,0xbf,0xec,0xf8,0xfe,
- 0xff,0xbb,0xef,0xfb,0xbe,0x7b,0xe3,0xfb,0xbe,0xff,0xbf,0xec,0xfb,0xfe,0xff,0xbb,
- 0xee,0xfb,0xfe,0xcf,0xbf,0xf6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,
- 0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x17,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0x93,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfb,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0x7f,0xff,0xf7,0xff,0xff,0xdf,
- 0xf7,0xf5,0xfd,0xff,0xdf,0xf7,0xff,0xfd,0xff,0xdf,0xf5,0xff,0x7f,0xff,0xdf,0xfd,
- 0xff,0xff,0x7f,0xd7,0xf7,0xfd,0x7f,0xdf,0xd7,0xf7,0xff,0x6f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xbf,0xfd,0xff,0xff,0xff,0xff,0xef,0xff,0xfe,0xdf,0xff,0xcd,0x7f,0xff,0xff,
- 0xff,0xff,0x4f,0xdf,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xdf,0xfd,0xff,
- 0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0x7f,0xff,0xff,0xfb,0x3f,0xff,
- 0xff,0xff,0xff,0xfb,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xdf,0xff,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,
- 0xec,0xff,0xff,0x7f,0xdf,0xf7,0xfd,0xff,0x3f,0xdf,0xf7,0xfd,0x7f,0x7f,0xcf,0xf3,
- 0xfc,0xff,0xdf,0x73,0xdd,0xff,0x7f,0xdf,0xf7,0xfd,0xff,0x7f,0xcf,0xf7,0xfd,0xff,
- 0x7f,0xfc,0x9f,0xff,0xef,0xbb,0xfe,0xbf,0xdf,0xef,0xbb,0xfe,0xfb,0xbf,0xef,0xfa,
- 0xee,0xff,0xff,0xfb,0xfe,0xff,0xbf,0xef,0xfa,0xee,0xff,0xbe,0xef,0xbb,0xfe,0xff,
- 0xbf,0xef,0xf7,0xeb,0xff,0xe7,0xf9,0xfe,0x7a,0x9d,0xe7,0xf9,0x7c,0x7e,0x9e,0xe7,
- 0x59,0xf6,0x7e,0x9f,0xe9,0x22,0x7f,0x9b,0xe6,0xb9,0xfe,0x4f,0x9f,0xe6,0xf9,0xfe,
- 0x7b,0x9d,0xe6,0xfe,0xfe,0x7e,0xff,0xbf,0xef,0xfb,0xee,0xff,0xbf,0xe7,0xf9,0xfe,
- 0xff,0x9f,0xef,0xfb,0xfe,0xfd,0xdf,0xfb,0xee,0xfb,0xbf,0xef,0xfb,0xee,0xf7,0xbf,
- 0xef,0xf7,0xfe,0xff,0x7f,0x5f,0x0f,0x9f,0x9b,0xe7,0xf9,0xfe,0x7f,0x9f,0xe7,0xf9,
- 0xfe,0x7f,0x9f,0x66,0xf9,0xfe,0x7f,0xe7,0xf9,0xee,0x77,0x9f,0xe7,0xf9,0xde,0x7d,
- 0x9d,0xe7,0xf9,0xee,0x7f,0x9f,0xed,0xc9,0xff,0xfd,0xff,0x7f,0xdf,0xfd,0xfd,0xff,
- 0x7f,0xdf,0xf7,0xfd,0xff,0x7f,0xdf,0xfd,0xff,0xdf,0xdf,0xf7,0xfd,0xff,0x7f,0xdf,
- 0xf7,0xfd,0xff,0x7f,0xff,0xf7,0xff,0xff,0xfc,0xb7,0xfe,0xff,0xbf,0xef,0xfa,0xfe,
- 0xff,0xbf,0xef,0xfb,0xfc,0xfd,0xbd,0x6f,0xba,0xee,0xb5,0xef,0xfb,0xfe,0xff,0xbf,
- 0xef,0xfb,0xfa,0xff,0xbf,0xef,0xfb,0xfe,0xff,0xff,0x65,0xaf,0xdb,0xd6,0xfd,0xbf,
- 0x7f,0xdb,0xf6,0xfd,0xbf,0x6f,0xfb,0xf6,0xf9,0xae,0xf7,0xd4,0x79,0xbf,0x6f,0xdb,
- 0xb6,0x7d,0xbf,0x6f,0xdb,0xf6,0xfd,0xbd,0x6f,0xdb,0xf7,0xe8,0xef,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xe7,0xfb,0xf7,0x7c,0xfd,0xff,0xf7,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0x9d,0x9e,0xff,0xff,
- 0xff,0xbf,0x7f,0xff,0xfb,0xff,0xff,0x9f,0xfe,0xff,0xff,0xff,0xfb,0xbb,0xff,0xfd,
- 0xff,0xff,0xfb,0xff,0x7f,0xdb,0xe7,0xff,0xbe,0xff,0xff,0xff,0xfb,0xfe,0xe3,0xff,
- 0xff,0xff,0xdf,0xfb,0xef,0xff,0xf7,0xfd,0xff,0xff,0xef,0xff,0xff,0xff,0xcf,0x77,
- 0xdf,0xff,0xff,0xdf,0xd7,0xff,0xff,0xff,0xff,0xdf,0xf7,0xf4,0x7f,0xff,0xff,0xfd,
- 0x7b,0xff,0xff,0xfc,0xff,0xfb,0xff,0xff,0xff,0xef,0xff,0xf7,0xff,0xbf,0xf7,0xff,
- 0x4f,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0x7f,0xff,0xfe,
- 0xfe,0xad,0xff,0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xfd,0xff,
- 0x79,0xdf,0x5d,0xff,0x7d,0xdf,0xf7,0xfc,0xff,0x7f,0xdf,0xf7,0xfd,0xff,0x7f,0xdf,
- 0xf7,0xff,0xed,0xff,0xbf,0xff,0xff,0x2f,0xd3,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xdb,0xff,0xfb,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,
- 0xff,0xff,0xf7,0xfd,0xbf,0xff,0xff,0xff,0xf7,0xfd,0xbf,0xfe,0xff,0xff,0xef,0xfb,
- 0xff,0xff,0xfe,0xfb,0xdb,0xfb,0xbf,0xef,0xfb,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xf7,0x97,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xef,0xff,0xef,0x7f,0xff,0xcf,0xdb,0xfd,0xff,0xef,0xff,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xea,0xff,0xff,0xf7,0xff,0xfd,0xff,0xff,0xff,0xfe,
- 0xff,0xff,0xff,0xff,0xfd,0xfb,0x7d,0xf5,0xff,0x7f,0xdf,0xff,0xf7,0xfd,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xfd,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xf7,0xdf,0xff,0x7e,0xdf,0x7f,0xfe,0xff,0xdf,0xdf,0xff,0xff,0xff,0xdf,
- 0xff,0xff,0xff,0xff,0xbf,0xef,0xff,0xff,0xff,0xb3,0xff,0xe3,0xf9,0xff,0xff,0xaf,
- 0xff,0xff,0xff,0xfd,0xfd,0xfd,0xfa,0x7f,0xfd,0xab,0xfa,0x7d,0xfe,0x9f,0x7f,0xbf,
- 0xff,0xfe,0xff,0xff,0xfa,0xfe,0xbf,0xff,0xfd,0xff,0xf7,0x7f,0xfe,0xff,0xff,0xff,
- 0xf6,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xdf,0xff,0xf6,0xfe,0xdd,0xff,0xff,0xf7,
- 0xff,0xff,0xff,0x7f,0xbf,0xff,0xee,0xfb,0xff,0xff,0xff,0xfe,0x8f,0xff,0xff,0xff,
- 0xff,0x77,0xef,0xfd,0xff,0xff,0xef,0x3f,0xfe,0xad,0x7f,0xfb,0xff,0xcf,0xf7,0xff,
- 0xff,0xff,0xfd,0x7f,0xff,0xff,0xff,0xef,0x7b,0xfd,0xff,0xff,0xff,0xd1,0xff,0xff,
- 0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xfb,0xfe,0xff,0xff,0xed,0xfb,0xff,0xef,
- 0xef,0xfb,0xfe,0xff,0xdf,0xff,0xfb,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xf9,0x3f,
- 0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xfe,0xff,0xd7,
- 0x7f,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,
- 0x46,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xf8,0x7e,
- 0xbf,0xff,0xff,0xfd,0xfb,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xe2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xf7,0xfd,0xf7,0xf7,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x9f,0xf3,0xfc,0xff,0xfd,0xff,0x7f,0xff,0xff,0xff,0xbf,0xff,0xfd,
- 0xff,0xff,0xbb,0xf1,0xf3,0xbf,0xff,0xff,0xf7,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xbb,0xff,0xff,0xff,0xfe,0x3d,0xcd,0xff,0x7f,0xdf,0xff,0xfd,
- 0xff,0xff,0xef,0xef,0xff,0xfa,0xff,0xf7,0xfb,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xf5,0x7f,0xef,0xff,0xff,0xff,0xfb,0x5f,0xff,0xff,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0x7f,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xfb,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xfc,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xf7,0xfd,0xff,0x3f,0xf9,0xfc,0xff,0xff,0xcc,0xf5,0xff,0xcf,0xe7,
- 0xff,0xff,0x3f,0xff,0x7f,0xff,0xbf,0xff,0x29,0xaf,0xff,0xff,0xdf,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xff,0x9f,0xff,0xff,0xff,0xff,0xfc,0xef,
- 0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0x5f,0x3d,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xaf,0xfb,0xca,0xff,0xfb,0x2b,0xd2,0xbf,0xff,
- 0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xef,0xa6,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0xfd,0xff,0x5f,0xff,0xe5,0x7f,0x5f,
- 0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0x74,0xfb,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xef,0x5f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xbd,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0x5b,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x5f,0xff,0xfd,0xf7,0x7f,0xdf,0xff,
- 0xff,0x7f,0xdf,0xff,0xdd,0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xfd,0x89,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xff,0xd2,0xc7,0xbf,0xaf,
- 0xff,0xfe,0xbf,0xaf,0xff,0xd6,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x7f,0xef,0xff,
- 0xe0,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0xff,0xfb,0x5f,0xdf,
- 0xf5,0xff,0xff,0xd7,0xf5,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfd,
- 0xff,0xf2,0x6f,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xbf,
- 0x9f,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xff,
- 0xff,0xff,0xff,0xed,0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,
- 0xff,0xff,0xff,0xff,0xf8,0x1f,0xff,0xbf,0xef,0xfb,0xfe,0xff,0xbf,0xef,0xfb,0xfe,
- 0xfb,0xbf,0xef,0xfb,0xfe,0xff,0xef,0xfb,0x7e,0xff,0xbf,0xef,0xfb,0xf6,0xff,0xbf,
- 0xee,0xfb,0xfe,0xff,0xb7,0xfe,0xe6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x57,0xff,0xff,0xff,0xfd,0xff,0x7f,
- 0xff,0xff,0xff,0xfd,0x7f,0xff,0xd7,0xe5,0xff,0xff,0xf7,0xf5,0xff,0xfb,0xff,0xd7,
- 0xff,0xef,0x7f,0xff,0xd7,0xff,0xff,0xff,0x5f,0xfe,0x9b,0xff,0xff,0xff,0xff,0x9f,
- 0xe7,0xff,0xff,0xff,0xff,0xa7,0xff,0xfa,0x7e,0x9f,0xff,0xde,0x7e,0x9d,0xff,0xff,
- 0xfa,0x77,0xff,0xb7,0xff,0xfa,0x7f,0xff,0xff,0xe9,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xb7,0xfd,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xd7,0xff,0xef,0xdf,0xff,0xff,
- 0xdf,0xff,0x5f,0xff,0xfd,0xff,0xfb,0xff,0xff,0xff,0xfd,0x7f,0xfe,0x8f,0xff,0xff,
- 0x9f,0xe6,0xe9,0xbc,0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,0xc2,0xf9,0xfe,0x7b,0xe7,
- 0xf9,0xfe,0x7f,0x8b,0xe7,0xf8,0xfe,0x7f,0x9f,0xe7,0xf9,0xfe,0x2f,0x9f,0xe1,0xff,
- 0xff,0xff,0xff,0xdf,0xf7,0xaf,0xff,0xff,0xff,0xd3,0xff,0xfd,0x7a,0xff,0xfb,0xff,
- 0x3f,0x5f,0xfb,0xff,0xff,0xff,0xff,0xf7,0xff,0xfd,0x7f,0xff,0xff,0xff,0xff,0xfd,
- 0x3f,0xff,0xff,0xff,0xfb,0xee,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xaf,0xff,0xff,
- 0x7f,0xef,0xeb,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xaf,0xff,0xff,0xff,0xff,
- 0xff,0xc7,0xff,0xff,0xff,0xff,0x77,0xdf,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,
- 0xff,0xff,0xfc,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xe4,0xff,0xff,0xff,0xff,0xee,0xfb,0xdf,0xff,0xff,0xff,0xfd,0xff,0xff,
- 0xff,0xff,0xfd,0xff,0x9f,0xff,0xfd,0xff,0x7f,0xff,0xf7,0xed,0xff,0xff,0xdf,0xff,
- 0xff,0xff,0xff,0xfe,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xbf,0xff,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0x2f,0xff,0x8b,0xff,0xfe,0xbf,0xaf,0xeb,0xfa,0xfe,0xbf,0xa7,0xe9,
- 0xfa,0xfe,0xbf,0xa7,0xc8,0xfa,0x7f,0xa3,0xe9,0xfa,0xbe,0xbf,0xab,0xea,0xfa,0xbe,
- 0xaf,0xad,0xeb,0xfa,0xfe,0xbf,0xd5,0x7b,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfc,0xff,0xff,0xff,0xff,0x7f,0xfb,0xcd,0xff,0xfc,0xcf,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0x47,0xff,0xff,0xfb,0xf7,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x77,0xff,0xbf,0xff,0xfd,0xff,0xef,0xbf,0xba,0xbf,0xff,0xff,0xff,
- 0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb5,0xff,0xdf,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xaf,0xef,0xfb,0xff,0xf7,0xff,0xf6,0xff,0xef,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xdf,0xef,0xfb,0xff,0xff,0xff,0xff,0xff,0x9f,0xff,0xff,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xdf,0xf7,0x5d,0xff,0x7e,0x76,0xff,0xff,0xff,
- 0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3f,0xff,0x17,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0x5f,0xff,0xfd,
- 0xff,0x7f,0xf7,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xdd,0xff,0xea,0x7f,0xff,
- 0xff,0xef,0xfe,0xff,0xff,0xf7,0xff,0xff,0xfd,0xff,0xfd,0xd7,0xfd,0xff,0xf9,0xfb,
- 0xfe,0xff,0xff,0xff,0xfb,0xff,0xff,0xef,0xfd,0xff,0x7f,0xff,0xbf,0xff,0xfe,0x1f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xbe,0xff,0xff,0xef,0xff,0xbf,0xff,0xbf,
- 0x7b,0xfe,0xfd,0xaf,0xed,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xbb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xdf,0xef,0xff,
- 0x7f,0xe7,0xdf,0xff,0xbd,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xf7,0xff,0xff,0xff,
- 0xff,0xf7,0x7f,0xff,0xff,0xfd,0xff,0xfe,0xff,0xff,0xff,0xff,0xbf,0x7f,0xef,0xff,
- 0xff,0x76,0xfd,0xff,0xc7,0x3f,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xf7,0xc7,0xff,
- 0xff,0xdf,0xfe,0x4f,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,
- 0xfe,0x7f,0xfe,0xff,0x9f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xfe,
- 0xff,0xff,0xff,0xff,0xd5,0xff,0xdf,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xdf,0xfd,
- 0x3f,0x4f,0xff,0xfd,0xff,0xff,0xf7,0xf9,0xf7,0x7f,0xdf,0xdf,0xff,0xff,0xff,0xbf,
- 0xff,0xff,0xff,0xff,0x7f,0xf8,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,
- 0xff,0xff,0xff,0xff,0x9f,0x7f,0x7f,0xff,0xff,0xfe,0xbf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xa7,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,
- 0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6e,0x0f,0xfb,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xc1,0xb3,0xff,0xff,0x3f,0xc7,0xf1,0xfc,0xff,0xfd,0x31,0x5c,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf2,0x5b,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xfe,0x7f,0x97,0x3f,0xff,0xf7,0xfd,0xf3,0x7c,0xaf,0xff,0x97,0xe7,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3b,0xf5,0x9b,0x7f,0xef,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xbe,0xf7,0xff,0x2b,0x4a,0xdf,0xbf,0xef,0x3a,0xfe,0xed,0x6a,
- 0x6b,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfe,0xf4,0x2d,0xfd,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xed,0x73,0x5f,0xdf,0xf7,0xcf,0x5f,0xdf,
- 0xf7,0xfd,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xf7,0x23,0xff,
- 0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xfe,0xff,0xff,0xfe,0xf5,0xbd,0x7f,
- 0xfb,0xfe,0xfb,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0x5f,0xd8,
- 0xbf,0xf7,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0x7f,0xdf,0x77,0x9d,
- 0x6f,0xdf,0x77,0xdd,0xef,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x6b,
- 0xd9,0x37,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xf6,0xb9,0xaf,0xfb,
- 0xc6,0xff,0xaf,0xef,0xfa,0xda,0xb5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xb5,0x7e,0xf3,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xfc,0x57,0xa5,
- 0xfd,0xfb,0x7e,0xb5,0xfd,0xff,0x7f,0xd7,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xdf,0x3f,0xe8,0xff,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,
- 0xff,0xff,0xbf,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x8f,0xff,0xfa,0xff,0xff,0xf9,0xff,0xfb,0xfe,0xff,0xbf,0xef,0xfb,0xfe,0xff,
- 0xbf,0xef,0xfb,0xfe,0xfd,0xbf,0x6f,0xfe,0xd5,0xb7,0xef,0xbb,0xf6,0xff,0xbf,0xef,
- 0xfb,0xfe,0xff,0xbf,0xef,0xbb,0xff,0xee,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xfd,0xbf,0x6f,0xff,0xff,0xff,0xef,0xff,0xf6,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xf7,0xff,0xff,0xff,0xef,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcd,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xde,0xff,0xe5,0xf9,0x7f,0xdf,0xf7,0xfd,0x7b,0xdf,0xd7,0xf5,
- 0xeb,0x7f,0xff,0xff,0xff,0xfd,0x7f,0xff,0xd7,0xff,0xef,0xf9,0x3f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x79,0xf7,0x7e,0x9f,0xa7,0x6d,0xd3,0x77,0xa7,0xed,0xf2,
- 0x7e,0x9f,0xb7,0xff,0xff,0xff,0xff,0xa7,0x7f,0xfa,0x7f,0xff,0xff,0x33,0xfd,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xfe,0xd7,0x75,0xfb,0x7f,0xdd,0xf5,0xff,
- 0x7f,0xdf,0xd7,0x7d,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xc4,0xff,
- 0xff,0xf9,0xfe,0x7f,0x9f,0xe7,0xf9,0xfe,0x6f,0x9f,0xe2,0xf8,0xbe,0x3f,0x8f,0xe6,
- 0xbe,0x3f,0x9f,0xe2,0xf8,0xfe,0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,0xe7,0xf9,0xff,
- 0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0x9f,0xe7,0xff,0xfc,0x7f,
- 0x1f,0xfb,0xfc,0xff,0x3f,0xff,0xf3,0xff,0xff,0xff,0xff,0xd7,0xfe,0xfd,0x7f,0xff,
- 0xff,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xfe,
- 0xff,0xbf,0xff,0x7e,0xdf,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xfa,0xff,0xdf,0xaf,
- 0xff,0xff,0xfd,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,
- 0xff,0xf7,0xfd,0xff,0xff,0xf7,0xfc,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfe,0x4f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x7f,0xdf,
- 0xf7,0xff,0xfb,0x7e,0xdf,0xfd,0xfb,0x7f,0xdf,0xff,0xed,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xe5,0xdf,0xf4,0xff,0xdf,0xff,0xff,0xdf,0xff,0xff,0xef,
- 0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0x2b,0xc9,0xdf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0x3f,0xfe,0xeb,0xfa,0xfe,0xaf,0xaf,0xeb,0xfa,
- 0xfe,0xaf,0x25,0xe8,0xfa,0x3e,0xaf,0x2b,0xfa,0xf6,0xaf,0xab,0xeb,0xfa,0xfe,0xaf,
- 0xaf,0xea,0xfa,0xfe,0xbf,0xaf,0xeb,0xfd,0x87,0xff,0xbf,0xef,0xff,0xff,0xff,0xff,
- 0xff,0xfd,0x3f,0xff,0xf3,0xfd,0xdf,0xb7,0xff,0xff,0xdf,0xff,0x87,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x4f,0x7f,0xff,0xff,0x7f,0xff,
- 0xff,0xf7,0xff,0x6f,0xdf,0xbe,0xff,0xbb,0x56,0xdf,0xb7,0xe9,0xff,0xf3,0xf7,0x37,
- 0xff,0xff,0xdf,0xff,0xfd,0xff,0xff,0xff,0xff,0xfd,0xfa,0x5f,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x76,0xfb,0xec,0x6f,0xff,0x7f,0xff,0xf5,0x7f,0xee,0xdf,0xf7,
- 0xfb,0xbf,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf1,0xff,0xff,0xbf,
- 0xff,0xff,0xff,0xfd,0xdf,0xff,0xed,0xff,0xef,0xde,0xf7,0xfe,0xff,0xea,0x7f,0xde,
- 0x8f,0xab,0xff,0x3f,0xff,0x7f,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xfc,0x7f,0xf7,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xbf,0xbf,0xdf,0xfd,0xdb,
- 0xff,0xa7,0xfa,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xdf,0xfe,0x47,
- 0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xef,0xef,0xff,0xfe,0xfb,0xfc,0xaf,0xbb,
- 0x8b,0xde,0x1f,0xbb,0xee,0xfd,0x7f,0xff,0xaf,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,
- 0xe5,0xff,0xff,0xff,0xfe,0x2f,0xff,0xfe,0xff,0xff,0xff,0xfb,0xf6,0xfc,0xbb,0xef,
- 0xcf,0xf7,0xbf,0xff,0xcb,0xf2,0xff,0xff,0xff,0xcf,0xff,0xfd,0xf7,0xff,0xff,0xff,
- 0x7f,0xf8,0xbf,0xff,0xf7,0xff,0xfb,0xff,0xff,0xff,0xfd,0x7f,0x7f,0xd6,0xf5,0xec,
- 0xfe,0x5e,0xcc,0x75,0x7d,0xdb,0xdf,0xbf,0xff,0xff,0xfe,0xff,0xff,0xef,0x7f,0xff,
- 0xfb,0xff,0xff,0xe7,0x7f,0xff,0xff,0xdc,0xff,0xff,0xff,0xf1,0xfe,0xff,0xf7,0xaf,
- 0xf7,0xca,0xfe,0x7f,0xdb,0xf9,0xff,0xbf,0xdf,0xf1,0xfd,0x7f,0xfd,0xcf,0xff,0xff,
- 0xff,0xff,0x7f,0xff,0xe4,0xef,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xdf,0xf3,0xfe,
- 0xfd,0xfe,0xff,0xdf,0xef,0x59,0x7f,0x3b,0xf7,0xe3,0xef,0xbf,0xff,0xff,0xfe,0xff,
- 0xff,0xff,0xfe,0xff,0xff,0xfd,0x9f,0x7f,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xff,
- 0xeb,0xff,0xcf,0xb3,0xed,0xeb,0x7f,0xff,0xbf,0xfb,0xff,0xef,0xd7,0xff,0xff,0xfd,
- 0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xb9,0xf5,0xff,0xff,0xfe,0xaf,0xff,0xff,0xff,
- 0xff,0xff,0xf9,0xe3,0xf8,0xfe,0x3e,0x8f,0xda,0xda,0x96,0xad,0xeb,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xea,0x7d,0xff,0xef,0xff,0xdf,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xff,0xff,0xbf,0xff,0xff,0xbf,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x41,0xff,0xff,0xfc,0xff,0x3f,
- 0xff,0xff,0xfc,0xfb,0xff,0xcf,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xdf,0xf9,0xff,
- 0xef,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xf9,0xf3,0xff,0x1d,0xaf,0xff,0xff,0xdf,
- 0xef,0xff,0xf3,0xfc,0xcf,0x7f,0xfd,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,
- 0x3f,0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0x3b,0xff,0xaf,0xff,0x5f,0x35,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xbf,0xef,0xef,0xfb,0xf5,0x79,0xdf,0x37,0xcd,0xff,0xdf,0x57,
- 0xd5,0xff,0x7f,0xbf,0xff,0xff,0xff,0xff,0xff,0xfb,0xd2,0xff,0xef,0xef,0x86,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xdf,0xf7,0xfd,0xf3,0x7e,0xff,0x9f,0xe7,0xf9,0xfe,0xff,
- 0xe7,0xf9,0xfe,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0x5f,0xff,0xff,0x60,
- 0x3f,0xb7,0xff,0xff,0xaf,0xff,0xfe,0xff,0xbf,0xbf,0xfb,0xa7,0xed,0xf5,0x7f,0x5f,
- 0xef,0xf7,0xfd,0x5f,0x47,0xfe,0xff,0xff,0xeb,0xff,0xfe,0xbf,0xef,0x5f,0xff,0xff,
- 0xfd,0x5b,0xff,0xff,0xff,0xf5,0x7f,0xff,0x77,0xdd,0xa7,0x7d,0xda,0xff,0xbe,0xff,
- 0xff,0xff,0xfe,0xff,0xbb,0xee,0xff,0xdd,0xff,0xfd,0x5f,0xff,0xd5,0xf7,0x6b,0xdf,
- 0xff,0xfd,0x8b,0x7f,0xff,0xff,0xfe,0xbf,0xff,0xfb,0xfe,0xde,0xff,0xaf,0x77,0xed,
- 0xff,0x7d,0xdc,0x7d,0xff,0x7e,0xdf,0xb7,0xfb,0xff,0xff,0xaf,0xff,0xfa,0xff,0xbf,
- 0xaf,0xff,0x7f,0xec,0x7f,0xff,0xff,0xff,0xd7,0xff,0xfd,0xff,0x7f,0xdf,0xf7,0xc7,
- 0xff,0xff,0xff,0x1f,0xeb,0xfc,0xff,0xff,0xff,0xff,0x7f,0xff,0xf5,0xff,0xff,0x5f,
- 0xdf,0xf5,0xff,0xff,0xfe,0x87,0xfb,0x7f,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xe7,
- 0xfb,0x6f,0xfb,0xbe,0xe7,0xbf,0xfb,0xb6,0xef,0xbb,0xee,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xd1,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,
- 0xfe,0xff,0xff,0x6f,0xfa,0xf6,0xfd,0xff,0xfb,0xfe,0xbf,0x8f,0x63,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0x1f,0xff,0xbf,0xef,0xfb,0xfe,0xff,0xb3,
- 0xef,0xfb,0xb6,0xfd,0xbc,0x6f,0x1b,0xb6,0xfd,0xee,0xdb,0xe6,0xfd,0xbf,0xef,0xfb,
- 0xfe,0xdf,0xbf,0xef,0xfb,0xfe,0xff,0xbf,0xfe,0xa7,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0xff,0x7f,0xef,0xfb,0xf7,0xff,0x7f,0xf3,0xfc,0xfd,0xbf,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x78,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf7,0xbd,0xef,0xfb,0xff,0xbb,0xee,0xfb,0xbe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f,0xff,0xff,0xff,
- 0xfd,0xff,0xff,0x5f,0xd7,0xf5,0xef,0x7f,0xff,0xff,0xff,0xef,0xfb,0xff,0xbf,0xff,
- 0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x8b,0xff,0xff,
- 0xff,0xff,0x9f,0xff,0xe9,0xf2,0x7e,0x9f,0xa7,0xfe,0x9f,0xbf,0xeb,0xfa,0xff,0xbf,
- 0xef,0xfb,0x7e,0xb6,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0x7f,
- 0xff,0xff,0xff,0xf7,0x7f,0xfb,0xff,0x5f,0xff,0xfd,0xdf,0xff,0xff,0xff,0xff,0xff,
- 0xfd,0xff,0xbf,0xff,0xff,0xde,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xf7,0xfe,
- 0x67,0xff,0xff,0x9f,0xe6,0xf1,0xfe,0x7f,0x8b,0xe7,0xf9,0xbe,0x7f,0x9f,0xe7,0xf9,
- 0xfe,0x7f,0xe7,0xf9,0xfe,0x7f,0x9b,0xe7,0xf9,0xfe,0x7f,0x9f,0xc7,0xf9,0xfe,0x7f,
- 0x9f,0xe9,0xff,0xff,0xff,0xff,0xde,0xbf,0xf5,0xff,0xbf,0x4f,0xf1,0xfe,0xff,0xff,
- 0xe7,0xf9,0xff,0x9f,0xef,0xff,0xff,0xff,0x3f,0xef,0xff,0xff,0xff,0xfa,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xfb,0xff,0xfe,0xbf,0xf7,0xe9,0xfb,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xfd,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x57,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xfb,0xff,0xff,0xff,0xff,0xef,0xff,0xbf,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xc4,0xff,0xff,0xff,0xff,0xef,0x7f,0xff,0xff,0xdf,0xf7,
- 0xfd,0xff,0xdf,0xf7,0xfd,0xff,0x7f,0xf7,0xfd,0xff,0x7f,0xdf,0x9f,0xf7,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xdc,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xf7,0xf5,0xef,0x7b,0xdf,0xf2,0xfc,0xbf,0xcb,0xf2,0xfd,0x2f,0x7f,0xf2,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xfe,0xbf,0xaf,0xeb,0xfa,0xfe,
- 0xbf,0xaf,0xea,0xda,0xbc,0x97,0xab,0x6a,0xda,0xb5,0xab,0x69,0xda,0x76,0xaf,0x2f,
- 0xea,0xfa,0xfe,0xb7,0xaf,0xeb,0xfa,0xfe,0xaf,0xf5,0x7f,0xff,0xff,0xcf,0xff,0xff,
- 0xff,0xff,0xcf,0xee,0xfe,0xfa,0x3f,0xbd,0xfd,0x7f,0xff,0xfd,0xf3,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0x07,0xff,0xff,0xeb,0xf7,
- 0xf7,0xff,0xff,0xab,0xff,0xfc,0xcb,0xe6,0xbd,0xf7,0xef,0xfb,0x7f,0xb5,0xe5,0xfd,
- 0xfd,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0x89,0x7f,0xff,0xff,
- 0xff,0xf7,0xbf,0xcf,0xff,0xdf,0xf7,0xbf,0xe7,0xeb,0xf6,0xfb,0xff,0xb7,0xef,0xdf,
- 0xff,0x7e,0x7b,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x1f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0xdf,0xfe,0xf6,0xbf,0xaf,0x49,0xba,0x7b,0xa7,
- 0x89,0xda,0xfd,0xb7,0xf7,0xdf,0xff,0xff,0xfb,0xff,0x7f,0xff,0xff,0xff,0xff,0xe7,
- 0xff,0x7f,0xff,0x7f,0xff,0xfb,0xff,0xfb,0xff,0xff,0x7b,0xd7,0xd5,0xfd,0x7a,0x5b,
- 0x95,0xed,0x5d,0x5f,0xef,0xff,0xff,0xfd,0xff,0x7f,0xff,0xf7,0xff,0xff,0xfe,0xff,
- 0xec,0x7f,0xff,0xff,0xff,0xfe,0xff,0xfe,0xff,0xfc,0xfe,0xf3,0xfc,0xdf,0x3b,0xce,
- 0xf3,0xfb,0x3f,0xce,0xf3,0xff,0xef,0xfb,0xfd,0xfd,0x7f,0xff,0xf7,0xff,0xff,0xbf,
- 0xff,0xfd,0x5f,0xff,0xff,0xff,0xff,0xff,0xcf,0x5b,0xfe,0xef,0xfd,0x7f,0x5f,0xd3,
- 0xf6,0xfd,0xb7,0x5b,0xd6,0xfd,0xbf,0xff,0xfb,0x7f,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xe2,0xff,0xff,0x7f,0xff,0xff,0xff,0xfd,0xff,0xcf,0xff,0xff,0xff,
- 0xdf,0xd6,0xed,0xef,0x46,0xd7,0xb7,0xbf,0xfe,0xff,0xdf,0xfe,0xff,0xff,0xff,0xf7,
- 0xff,0xff,0xff,0xff,0xfe,0x7e,0xff,0xff,0xfd,0xff,0xff,0xde,0xff,0xbf,0xfc,0xff,
- 0xf9,0x7e,0x7f,0xbf,0xee,0xdd,0x3d,0xc7,0xf3,0xfb,0xf6,0x1f,0x3f,0xcf,0xdb,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xae,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xfd,0xd7,
- 0xf9,0xf5,0xff,0xef,0xff,0xff,0xf7,0xbb,0xfd,0xfe,0xdf,0xff,0xfd,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,
- 0xbf,0xec,0xff,0x7f,0xcb,0xf2,0xfc,0xbf,0x3e,0xf3,0xfe,0xbe,0xa5,0xe7,0xff,0xff,
- 0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x1f,0xff,0xff,0xff,0xff,0xdf,0xf7,
- 0xfd,0xff,0xff,0xde,0xf6,0xbf,0xad,0xeb,0x6a,0xff,0x2d,0x6b,0x7a,0xff,0xb7,0xff,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x77,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xaf,0x7f,0xde,0xbf,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xee,0x3f,0xff,0x1f,0xd7,
- 0xff,0xff,0xff,0x3e,0xdf,0xf7,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x3f,0xcf,0xff,0x3c,0x7f,0x3f,0xff,0xff,0xff,0xff,0xff,0xf1,0x5a,0xff,0xf7,
- 0xff,0xff,0xfc,0xef,0xef,0xdf,0xff,0xff,0xff,0xff,0xff,0x9f,0xff,0xff,0xff,0x3f,
- 0xff,0xf9,0xff,0xcb,0xff,0xe7,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xf5,0xe3,0xdf,
- 0xff,0xff,0xf2,0xbf,0xef,0xff,0xfb,0xff,0xf1,0xd6,0x75,0xfd,0x67,0x5f,0xd6,0x7d,
- 0x67,0x5d,0x57,0xfe,0xfe,0xe6,0xbf,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf6,
- 0x6f,0xff,0xff,0xff,0xd7,0xf7,0xff,0xff,0x7f,0xff,0x3f,0x7f,0xd3,0xf4,0xfb,0x3f,
- 0x7f,0xff,0xfb,0xbf,0x7f,0xff,0x7c,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xf6,0xcf,0xff,0xff,0xff,0xff,0xff,0xbb,0x2f,0xef,0xff,0xff,0xfb,0x7c,0xdf,0xff,
- 0xd5,0xfb,0x7e,0xb7,0xf1,0xff,0xff,0xfb,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xcd,0xbf,0xff,0xff,0xff,0xf7,0xdd,0xf5,0x7d,0xdf,0xf7,0xff,0xef,0xbb,
- 0xfa,0xfb,0xff,0xef,0xfe,0xfd,0xbf,0xaf,0x7d,0xdc,0xf7,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xde,0x1f,0xff,0xfd,0xfd,0x4b,0xfe,0xfe,0xb7,0xbe,0x7f,0x55,0xf1,
- 0x76,0xdd,0xf7,0xfd,0xf1,0xde,0x37,0x7d,0xff,0xff,0xed,0x0b,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xfe,0x17,0xff,0xff,0x1f,0xcd,0x7f,0x7f,0xd7,0xf7,0xef,0xfb,
- 0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xf7,0xe9,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,
- 0xff,0xbb,0xfe,0xff,0xbb,0xee,0x7b,0xef,0xbb,0x6e,0xfb,0xbf,0xff,0xff,0xff,0xff,
- 0xff,0xef,0xff,0xff,0xff,0xff,0xff,0x7d,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xdf,0xff,0xfd,0xaf,0xef,0xdf,0xfd,0xbf,0x6b,0xd8,0xff,0xff,0xff,
- 0xff,0xff,0xfe,0xbf,0xff,0xff,0xff,0xff,0xfd,0xc0,0xff,0xfb,0xfe,0xff,0xbf,0xef,
- 0xfb,0x7e,0xff,0xb7,0x6f,0xdb,0xd6,0xf1,0xbb,0xef,0xde,0xed,0xbe,0x6f,0xfb,0xfe,
- 0xdf,0xbf,0x6f,0xfb,0xee,0xff,0xbf,0xef,0xfb,0xf7,0xe5,0x6f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xdf,0xf7,0xfe,0xff,0xbf,0xef,0xf7,0xff,0x3f,0xcf,0xff,
- 0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0xf7,0xcf,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xef,0x7b,0xde,0xef,0xbf,0xfb,0xbe,0xef,
- 0xbf,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xe9,0x7f,0xbf,
- 0xff,0xff,0xff,0xff,0xf5,0xfd,0x7f,0x5f,0xff,0xbf,0xff,0xff,0xff,0xff,0xbf,0xfb,
- 0xff,0xff,0xad,0xf9,0x7f,0x5f,0xf7,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xe8,0x37,
- 0xff,0xff,0xff,0xff,0xff,0xfe,0x9f,0xa7,0xe9,0xff,0xaf,0xef,0xfa,0xfe,0xff,0xaf,
- 0xfa,0xfe,0x9f,0xaf,0x9d,0xa7,0xe9,0xfb,0x7e,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x27,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xf5,0xe9,0x7f,0xff,0xff,0xff,0xef,0xfb,
- 0xfd,0xff,0xdf,0xff,0xff,0xf7,0xf5,0xfd,0x7f,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfe,0xff,0xff,0xf9,0xfe,0x7f,0x9f,0xe2,0xf8,0xbe,0x2f,0x9f,0xe7,0xf9,0xfe,
- 0x7f,0x9f,0xe7,0xfe,0x7f,0x9f,0xe6,0xf8,0xbe,0x2f,0x8f,0xe7,0xf9,0xfe,0x7f,0x9f,
- 0xe7,0xf9,0xfe,0x57,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xfb,0xfe,0xff,0x9f,0xef,
- 0xfb,0xfe,0xff,0x9f,0xfb,0xfe,0xff,0xbf,0xcf,0xf9,0xff,0xff,0x7f,0x5f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xfd,0xff,0x7f,0xff,0xff,0xff,0x7f,0xdf,0xf7,0xfb,0xff,0xff,0xff,0xbf,0xeb,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xfb,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,
- 0xff,0xff,0xff,0xff,0xfb,0xff,0xfe,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xfd,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xaf,0xff,0xf7,0xff,0xff,0xff,0xff,0xf7,0xfd,
- 0xff,0x7f,0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xff,0x7f,0xdf,0xf7,0xe7,0xfd,0xff,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7c,0x8f,0xfb,0xfa,0xf2,0xff,0xbf,0x2f,0xfa,0xfc,0xbf,0xef,0xca,0xff,0xff,0xff,
- 0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xdf,0xef,0xf3,0x2f,0xff,0xeb,0xfa,0xfe,0x9f,
- 0xa7,0xeb,0xfa,0xde,0xbf,0xae,0xca,0xfa,0x6c,0x1f,0xaf,0x38,0xbe,0xbb,0xa3,0xe8,
- 0xfa,0x3e,0x9f,0xaf,0xeb,0x7a,0xbe,0xbf,0xab,0xeb,0xff,0x56,0x7f,0xf3,0xff,0xff,
- 0xfd,0xfb,0xff,0xfb,0xff,0x3e,0x57,0xfb,0xf5,0xdf,0xaf,0x7f,0xff,0xfd,0xff,0xff,
- 0xf7,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x7f,0xff,0xff,
- 0xff,0x7f,0xbf,0xf7,0xed,0xda,0xff,0x7f,0xdb,0xdf,0xff,0x37,0x7f,0xef,0xff,0xff,
- 0xbd,0xff,0xfd,0xf7,0xf8,0xbf,0xeb,0xff,0xff,0xff,0xdf,0xff,0xdd,0xfa,0x9f,0xff,
- 0x5f,0xff,0xff,0xff,0xef,0xfa,0xff,0x35,0xba,0xff,0xff,0xef,0xff,0xfb,0xba,0x7f,
- 0x6e,0xeb,0xbf,0xdb,0xfb,0xef,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b,
- 0xff,0xff,0xff,0xef,0xfd,0xf7,0x69,0xfb,0xfe,0x5f,0xa7,0xcb,0xfa,0xf6,0xb5,0xa7,
- 0xfa,0xfe,0xbf,0xaf,0x3d,0xdf,0xb6,0x3f,0xfe,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,
- 0xac,0x7f,0xf7,0xff,0xff,0xff,0xff,0xff,0x79,0xee,0xff,0x95,0xad,0x7d,0x5d,0xd5,
- 0xdd,0xf5,0xde,0xf6,0xfd,0xbf,0xff,0xff,0x5f,0xdf,0xf7,0xff,0xf7,0x7f,0xff,0xff,
- 0xff,0xfe,0x8f,0xff,0xfd,0xff,0xff,0xef,0xff,0x8e,0xf3,0x6c,0xff,0xb7,0xee,0x7b,
- 0xee,0xee,0xbb,0x8b,0xbb,0xf6,0xbf,0xce,0xff,0xff,0xfd,0xf7,0xfe,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0x99,0xff,0x7f,0xff,0xff,0xff,0xff,0xf5,0xfd,0x7f,0x4f,0x9e,0xf6,
- 0xfd,0xff,0x6f,0xdb,0xf4,0x3f,0x4f,0xaf,0xfe,0xff,0xe7,0xef,0x7f,0xbf,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xfe,0x3f,0xff,0xff,0xff,0xfe,0xff,0xdf,0xfe,0xff,0xff,0x7e,
- 0x3f,0x95,0x65,0xd9,0x7e,0x3e,0xfe,0x7f,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0x25,0xff,0xff,0xff,0xdf,0xff,0xff,0xcc,0xc3,0x38,
- 0xf7,0x38,0x4f,0x73,0xdc,0xff,0xbd,0x9e,0xf8,0x3e,0xff,0xff,0x73,0xdf,0xff,0x3d,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,
- 0xb7,0xef,0xbb,0x76,0xff,0xbf,0x9f,0xfd,0xfb,0xff,0xef,0xff,0xdf,0xfe,0xaf,0xff,
- 0xe6,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xfc,0xd5,0xff,0xff,0xff,0xff,0xff,0xfb,
- 0x9f,0xa7,0xe8,0xde,0x77,0x8c,0xe5,0x9d,0xfb,0x63,0xf7,0xfd,0x1b,0xbe,0xda,0xff,
- 0xbe,0xef,0xff,0xf7,0x7f,0xff,0xff,0xff,0xff,0xff,0x21,0xff,0xff,0xdf,0xff,0xff,
- 0xfb,0xe9,0xea,0xfe,0xb7,0xaf,0xeb,0x72,0x7e,0xbf,0xaf,0xfe,0xe7,0xbf,0xfd,0xfb,
- 0xff,0xdf,0xe7,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xf0,0x7f,0xff,0xff,0xff,
- 0xbf,0xff,0xfd,0xdf,0x77,0xdf,0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xff,0x5e,0xd7,0xff,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xff,
- 0xff,0xff,0x3f,0xd9,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xfc,0x7f,
- 0xff,0xcf,0xff,0xfc,0xfb,0x3f,0xcf,0xff,0x3f,0xff,0xfe,0xff,0xff,0xff,0x31,0xaf,
- 0xff,0xff,0xff,0xf6,0xbf,0x3f,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xbf,0x9f,
- 0xef,0x7e,0xbd,0xff,0xff,0xdf,0x77,0xcb,0xff,0xbf,0xff,0xff,0xdf,0xff,0xff,0x5a,
- 0x3d,0xff,0xff,0xff,0xff,0xff,0xc7,0x79,0xdf,0xf7,0x9d,0xf3,0x7f,0xde,0x75,0xfd,
- 0x75,0xbb,0x3f,0x1f,0xf3,0xf5,0x2f,0xef,0x7e,0xe6,0xbf,0xff,0xff,0xfb,0xff,0xff,
- 0xef,0xa6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xe7,0xf3,0xfe,0x7f,0x3f,0xcf,
- 0xf3,0xef,0xf7,0xcd,0xff,0x7e,0x77,0xb5,0xfd,0xff,0x7e,0x57,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0x6c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xfb,0x7e,0xdf,0xff,0xf5,
- 0xfd,0x7b,0x5f,0x57,0xbf,0xff,0xf9,0xf7,0x71,0xff,0xbf,0xfb,0xff,0xff,0xff,0xff,
- 0xef,0xff,0xff,0x7f,0x9b,0xff,0xff,0xff,0xff,0xff,0xdf,0xfb,0xff,0xef,0xfb,0xff,
- 0xff,0xbf,0xef,0xdb,0xee,0xdd,0xa7,0x6b,0x38,0xef,0xbd,0xf7,0x7d,0xdf,0xf7,0xff,
- 0xff,0xfd,0xdf,0xff,0xfd,0x89,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xfd,0xfb,0x7e,
- 0xdf,0xf7,0xcd,0xfb,0x7d,0xdf,0xba,0xfe,0xbf,0xff,0xff,0xea,0xde,0xff,0xef,0xeb,
- 0xdf,0xff,0xff,0xbf,0xff,0xff,0xe2,0x7f,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0xfc,0xff,0x8f,0xff,0x7e,0xd7,0xff,0xeb,0xff,0x5f,0xdf,0xf7,
- 0xfd,0x79,0xff,0xff,0xf7,0xff,0xff,0xf7,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xee,
- 0x7b,0xfe,0xff,0xbf,0xef,0xfb,0xbe,0xe7,0xbf,0xff,0xaf,0xff,0xdf,0xf7,0xff,0xff,
- 0xff,0xf9,0xff,0xbf,0xff,0xff,0xff,0xff,0xfe,0xed,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xe7,0xdf,0xf6,0xfd,0xff,0x7f,0xda,0xf6,0xff,0xff,0xfe,0xfe,0xff,0xff,0xe7,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x1f,0xff,0xbf,0xef,0xfb,
- 0xfe,0xdd,0xbf,0xef,0xdb,0xee,0xfd,0xbd,0x6f,0x1b,0xbe,0xfd,0xef,0xfb,0xe6,0x5f,
- 0x9f,0xef,0xfb,0xfe,0xdf,0xbf,0xef,0xfb,0xfe,0xdf,0xbf,0xfe,0x66,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xff,0xf7,0xff,0xfd,0xff,0xef,0xfb,0xfe,0xff,0x3f,0xfb,0xf7,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x72,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xfe,0xff,0xbf,0xef,0xfb,0xfe,0xf7,0xbd,0xef,0xbb,0xdf,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,
- 0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,
- 0xf7,0xf5,0xff,0x9f,0xef,0xd7,0xfd,0xed,0x7f,0x5f,0xff,0xff,0xff,0xff,0xff,0xfe,
- 0xcb,0xff,0xff,0xff,0xfe,0x9f,0xff,0x7e,0xff,0xaf,0xeb,0xfa,0xfe,0xbf,0xaf,0xeb,
- 0xfb,0xfa,0x7e,0x9f,0xff,0xff,0xfa,0x7f,0x9f,0x27,0xe9,0xdf,0xff,0xff,0xff,0xff,
- 0xff,0xfc,0x7f,0xff,0xff,0xff,0xd7,0xff,0xdf,0xfb,0xff,0xff,0xff,0xff,0xff,0xfc,
- 0xff,0x7f,0xef,0xde,0xb7,0xbf,0xff,0x7a,0x5f,0xb7,0xff,0xfd,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x6f,0xff,0xff,0x9f,0xe2,0xf9,0xfe,0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,
- 0x9f,0xe7,0xf9,0xfe,0x6f,0xe7,0xf9,0xde,0x6f,0x0b,0xe6,0xe9,0xfe,0x2f,0x9f,0xe7,
- 0xf9,0xfe,0x7f,0x9f,0xd5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,
- 0xfe,0x7f,0x9f,0xef,0xfb,0xff,0x1f,0xcf,0xd9,0xf5,0xfb,0xbf,0xdf,0xd3,0xfe,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xfe,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xfd,0xff,0x7f,0xef,0xfd,0xfe,0xfe,0xbf,0xf7,0xfb,0xaa,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x17,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0x7f,0x7f,0xff,0xbf,0xff,0x7f,
- 0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xee,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,
- 0xdf,0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xf9,0xff,0xf7,0xdf,
- 0xe6,0xfd,0xff,0x7f,0xdf,0xff,0xff,0xff,0xff,0xfc,0xdf,0xff,0xff,0xff,0xff,0xbf,
- 0xef,0xab,0xeb,0xfa,0xfe,0xbf,0xaf,0xe9,0xfa,0xfe,0xaf,0xdb,0xd7,0xf5,0xff,0x2f,
- 0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xfc,0x9f,0xff,0xff,0xba,0xff,0xfe,0xbf,0xaf,
- 0xe9,0xfa,0x7e,0x0f,0xa3,0xe8,0xfa,0xfe,0xb7,0xab,0xeb,0xfa,0xf7,0xaf,0x63,0xfa,
- 0x76,0xaf,0xab,0xea,0xfa,0xbe,0xbf,0xab,0xea,0xfa,0xfe,0xbf,0x5f,0x7f,0xef,0xed,
- 0xff,0xf3,0xef,0x7f,0xff,0xfb,0xfd,0xff,0xdf,0xef,0xf5,0xff,0x6f,0x7f,0x3f,0xff,
- 0xba,0xff,0x33,0xcf,0xf3,0x7d,0xbf,0xdc,0xff,0xff,0xfb,0xff,0xff,0xde,0xa7,0xff,
- 0xff,0xdf,0xb2,0xff,0xfa,0xff,0xff,0xf7,0x7d,0xff,0x7d,0xbf,0x77,0xff,0xf7,0x7e,
- 0xdf,0xf4,0xdf,0x5e,0xcf,0xff,0xfd,0xff,0xff,0x7f,0x7f,0xfd,0xff,0xff,0x7f,0x85,
- 0x5f,0xff,0xff,0xff,0xff,0xfe,0xff,0xbb,0xff,0xff,0xfe,0xef,0xfb,0xfe,0xff,0xbb,
- 0xf3,0xaf,0xff,0xfb,0x6b,0xfa,0xfe,0x5f,0xb7,0xef,0xdb,0xff,0xff,0xff,0xff,0xff,
- 0xfd,0x3f,0xff,0xfd,0xf7,0xf8,0xd7,0x76,0x9d,0xa6,0x4b,0xda,0x76,0x9d,0xa7,0x69,
- 0xda,0xdb,0xbf,0xad,0xfa,0xfe,0xb7,0xa7,0x7d,0xff,0x7e,0x3f,0xff,0x3f,0xff,0xff,
- 0xff,0xff,0xc7,0xff,0x7f,0xff,0xf5,0xdf,0xff,0xa7,0xd9,0xfe,0x7e,0x9f,0x67,0xd9,
- 0xf6,0x7f,0x9f,0xde,0xbf,0x7f,0xeb,0x7b,0x7e,0x57,0xfd,0xff,0x5f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xff,0xfe,0xff,0xfe,0xef,0xab,0xef,0xfa,0xfe,
- 0x3f,0xbf,0xef,0xfe,0xfb,0xb9,0xe9,0xa8,0xfa,0xfe,0xbf,0xee,0xfb,0xfe,0xff,0xfb,
- 0xef,0xff,0x7f,0xff,0xed,0x9f,0xef,0xfd,0xfb,0xde,0x7d,0x3f,0x6f,0xdb,0xe6,0xfd,
- 0xbf,0x7f,0xdb,0xd6,0xf9,0x3d,0x6b,0xfb,0xfe,0xff,0xbb,0xee,0xfa,0xfe,0xbf,0xb7,
- 0xfb,0xf5,0xff,0xff,0xff,0xff,0xbb,0xbf,0xff,0xff,0xfb,0xfb,0xfd,0xf9,0x9e,0x77,
- 0x9f,0xe3,0xf9,0xde,0x57,0x9d,0xfe,0xef,0xef,0xf6,0xff,0x5f,0xdf,0x9f,0xff,0x7f,
- 0x7f,0xff,0xf7,0xdf,0xff,0xff,0xff,0xf3,0x7f,0xff,0xff,0x7c,0xcd,0xff,0xfd,0xf7,
- 0xf8,0xd7,0xf1,0x9f,0xe7,0x1f,0xc7,0xfe,0xf5,0x3f,0xcf,0x71,0xdc,0x36,0x3d,0x8f,
- 0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0xff,0xff,0xef,0xfa,0xff,0xff,
- 0xbd,0xff,0xff,0xd7,0xbf,0xff,0xfd,0xfe,0xfb,0xff,0xbb,0x5e,0xff,0xdf,0xf7,0xfb,
- 0xfe,0xff,0xf7,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,
- 0xf7,0xfd,0x7f,0x36,0xdd,0xf7,0x3c,0xcf,0x7b,0xda,0xff,0xfa,0x7e,0x9c,0xb3,0x3d,
- 0xbe,0x7d,0x9f,0xf7,0xed,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x9f,0xff,0xff,0xff,
- 0xfe,0x7a,0x5e,0xbf,0x2f,0xeb,0xaa,0xdc,0xbf,0xae,0xab,0xff,0xff,0xaf,0xab,0x7a,
- 0xdc,0xbf,0xad,0xeb,0x7a,0xfe,0xb7,0xff,0xff,0xff,0xff,0xff,0xfa,0x67,0xdf,0xff,
- 0xff,0xff,0xff,0x7f,0xdf,0xf7,0xfd,0xf7,0x77,0xdf,0xf7,0xfd,0xff,0xff,0xf7,0xf9,
- 0xdf,0x7f,0xdf,0x77,0xfd,0xff,0x7f,0xdf,0xef,0xbf,0xff,0xff,0xff,0xff,0xe8,0xbf,
- 0xff,0xff,0xff,0xfe,0x7f,0xff,0xdf,0xfc,0xfd,0xff,0xd7,0xff,0xff,0xff,0xed,0x9f,
- 0xf7,0xff,0xff,0xff,0xdf,0xff,0xfd,0xff,0x9f,0xff,0xff,0xff,0xfd,0xff,0xff,0xf1,
- 0xca,0xff,0xff,0xff,0xff,0xab,0xff,0xff,0xff,0x9f,0xff,0xf9,0xfe,0x7f,0xff,0xfd,
- 0xe3,0xff,0xff,0xcf,0xf3,0xff,0xff,0xff,0xff,0xfa,0xff,0xce,0xff,0xff,0xff,0xff,
- 0xf5,0xab,0xdf,0xff,0xff,0xff,0xfc,0xd6,0x75,0x9d,0x7f,0x59,0xd7,0x35,0xfd,0xe7,
- 0x79,0xaf,0x5d,0xf5,0x7c,0xd7,0x55,0xd5,0xff,0x7d,0x57,0xf5,0xfe,0xff,0xff,0xff,
- 0xff,0xfe,0xf0,0x6f,0xff,0xff,0xff,0xff,0x9f,0x7f,0xd3,0xfe,0xfb,0x3f,0xe7,0xf9,
- 0xfc,0xff,0x35,0xe7,0xfe,0x7f,0xbe,0xe7,0xbb,0xfe,0xff,0x3f,0x6f,0xbf,0x7f,0xff,
- 0xff,0xff,0xff,0xf7,0x47,0xff,0xff,0xff,0xff,0xff,0xf5,0x7f,0xde,0xe7,0xd5,0xe3,
- 0x7a,0xdf,0xff,0xfc,0xbf,0x7f,0xff,0xf9,0xff,0x7c,0x9f,0xef,0xcd,0xf6,0x7f,0xfb,
- 0xf2,0xff,0xff,0xff,0xff,0xd1,0xbf,0xff,0xff,0xff,0xf7,0xfe,0xff,0xe3,0xf4,0xfa,
- 0xbe,0xff,0xff,0xfe,0xfd,0x1d,0x4f,0xfa,0xfd,0x3f,0x4f,0xab,0xfa,0xfb,0xbe,0x4f,
- 0xe9,0xdc,0x57,0xff,0xff,0xff,0xd8,0x9f,0xff,0xff,0xff,0xff,0xfd,0xff,0x7f,0xdf,
- 0x77,0xfd,0xf7,0x7d,0xdf,0xb7,0xd2,0xf7,0xdf,0xf7,0x7d,0xff,0x7f,0xdf,0xf7,0xc5,
- 0xf7,0x77,0xef,0xab,0xff,0xf5,0xfd,0x7e,0xe6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xe7,0xff,0xfe,0x7f,0x1f,0xff,0xf3,0x5e,0x7f,0xff,0xfa,0xff,0xff,0xff,0xeb,
- 0xfb,0xfe,0x7f,0xf7,0xfd,0x7f,0xff,0xff,0xff,0xe6,0x5f,0xff,0xff,0xff,0xff,0xfb,
- 0x9e,0xe7,0xbe,0xee,0xdb,0xee,0xff,0xbb,0xee,0x7f,0xef,0xbf,0xee,0xfb,0xbe,0xef,
- 0xb9,0xef,0xbb,0xee,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x1b,0xff,0xff,0xff,0xff,
- 0xff,0xf9,0xf6,0x7d,0xff,0xef,0xff,0xf7,0xfd,0xaf,0x6f,0xf9,0xfd,0xff,0x6b,0xd8,
- 0xfe,0x3d,0xff,0xef,0xff,0xf6,0xff,0xff,0xff,0xff,0xff,0xff,0xb1,0xff,0xfb,0xfe,
- 0xff,0xbf,0x6f,0xdb,0xfe,0xfd,0xbb,0x6f,0xdb,0xd6,0xf1,0xbb,0x6f,0xfe,0xfd,0xbe,
- 0x6f,0xdb,0xf6,0xfd,0xbe,0x6f,0xdb,0xee,0xff,0xbf,0xef,0xfb,0xff,0xe5,0x6f,0xff,
- 0xff,0xff,0xff,0xdf,0xf7,0xff,0xff,0x7f,0x6f,0xdf,0xfe,0xff,0xbf,0x6f,0xff,0xff,
- 0x3f,0xcf,0xdb,0xfd,0xfd,0xff,0xdf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0x8f,
- 0xff,0xff,0xff,0xff,0xff,0xbf,0xef,0xfb,0xfe,0xf7,0xbf,0xef,0x7b,0xde,0xfb,0xff,
- 0xfb,0xbe,0xef,0xbb,0xef,0xfb,0xfe,0xff,0xbf,0xef,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xfd,0xff,0xf5,0xff,0xff,0x5f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,
- 0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,
- 0xff,0xeb,0xbf,0xfc,0x9f,0xff,0xe9,0xff,0xbf,0xeb,0xfa,0x7e,0xff,0xbf,0xeb,0xfa,
- 0x7e,0xba,0x7f,0xfa,0xfe,0x9f,0xaf,0xed,0xfa,0xfe,0xff,0xbf,0xeb,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xb3,0xff,0xd7,0xff,0xfd,0x7f,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xf7,0xdd,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0xf8,0xff,0xfa,0xf9,0xfe,0x2f,0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,
- 0xe7,0xf9,0xfe,0x7f,0x8b,0xc7,0xfe,0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,0xc7,0xf9,
- 0xfe,0x7f,0x1f,0xe7,0xf9,0xff,0x9f,0xff,0xff,0xfb,0xfe,0xff,0xff,0xef,0xfb,0xfe,
- 0xff,0xbf,0xff,0xff,0xfe,0x7d,0x7a,0xff,0xfe,0x7f,0xbf,0xef,0xf9,0xfe,0x7f,0x9e,
- 0xef,0xff,0xff,0xeb,0xff,0xe7,0xff,0x83,0xff,0xff,0xff,0x7f,0xdf,0xff,0xfd,0xff,
- 0xff,0xdf,0xf7,0xff,0xff,0xff,0xff,0xaf,0xff,0xff,0xff,0xf7,0xfd,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x7f,0xbf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xef,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xfd,0xff,0x7f,
- 0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xfd,0xff,0x7f,0xde,0xfd,0xff,0x7f,0xdf,0xf7,0xfd,
- 0xff,0x7f,0xdf,0xf7,0xfd,0xff,0xff,0xff,0xff,0xf7,0xff,0xd1,0xff,0xff,0xff,0xef,
- 0xff,0xd3,0xf4,0xfd,0x1f,0x4f,0xd3,0xf4,0xfd,0x3f,0x4f,0xd8,0xfd,0x3f,0x4f,0xd1,
- 0xf4,0xfd,0x3f,0x47,0x53,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0xaf,0xff,0xe3,
- 0xfa,0xfe,0xbb,0xa4,0xe9,0xba,0xce,0xab,0xae,0xeb,0x3a,0xce,0xb3,0x2b,0x7a,0xfe,
- 0xbf,0xa3,0xeb,0xfa,0x3e,0x9f,0x8f,0xeb,0x7a,0xbe,0xaf,0xad,0xeb,0x7b,0x07,0xff,
- 0xff,0xff,0x7f,0xfe,0xc7,0xf2,0xfd,0x5f,0xff,0xfd,0xff,0x7f,0xdf,0xf7,0x7f,0xfb,
- 0xee,0xef,0xbf,0xef,0x7b,0xae,0xfb,0x9a,0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0xf2,
- 0x7f,0xff,0xff,0xff,0x79,0xf7,0xfa,0x7d,0xff,0xff,0xdf,0x9f,0xeb,0xfb,0xfe,0xff,
- 0xf7,0xfb,0x7d,0xbf,0xbf,0xdb,0xff,0x7e,0xbf,0xda,0xff,0xff,0xff,0xdf,0xff,0xff,
- 0xfa,0x5f,0xff,0xff,0xff,0xfe,0xfb,0x7f,0xf5,0xb7,0x3f,0xef,0xf7,0xff,0xff,0xaf,
- 0x7f,0xbb,0x7e,0xff,0xff,0xff,0xfe,0xfe,0xff,0xfb,0x7f,0xff,0xff,0xbf,0xff,0xff,
- 0xff,0xff,0xfb,0xff,0xeb,0xff,0xee,0x3f,0x8d,0xe3,0xf8,0xfc,0x37,0x0f,0x63,0xc8,
- 0xfe,0x1d,0xa7,0xf8,0x7c,0x3f,0x83,0x23,0xf8,0xdc,0x1f,0x87,0xe3,0xff,0xef,0xff,
- 0xff,0xff,0xfe,0x70,0x7f,0xf6,0x7f,0xff,0xdf,0xf7,0xf5,0xff,0x77,0x9f,0x37,0xf9,
- 0xff,0x7f,0xdf,0xfe,0xed,0x7f,0xdf,0x77,0xdd,0xef,0x7f,0xdf,0x97,0xf5,0xf7,0xff,
- 0xff,0xff,0xff,0xdf,0xf0,0x0f,0xff,0xfe,0xff,0xef,0xef,0xd7,0xf7,0xfb,0xff,0xff,
- 0x1f,0xee,0xf3,0xbe,0xbe,0xf2,0xbb,0xbf,0xf9,0xbf,0xfe,0xbb,0xfc,0x5f,0xff,0xff,
- 0xff,0xbf,0xff,0xff,0xff,0x7f,0x09,0xff,0x7f,0xff,0xdf,0xff,0xdf,0xff,0xff,0xbf,
- 0x7f,0xd7,0xe5,0xfd,0xbf,0x3b,0xdf,0xf4,0x3b,0x5d,0xcf,0xfe,0xfc,0x7f,0x7f,0x3b,
- 0xff,0xff,0x9f,0xff,0xfb,0xff,0xff,0xf0,0xbf,0xff,0xff,0xff,0xff,0xbe,0xdf,0xf5,
- 0x73,0xdb,0x5f,0xbf,0xdd,0xbd,0xef,0x7b,0xee,0x7f,0xff,0x7b,0xff,0xff,0xfb,0xef,
- 0xff,0xff,0xff,0xfd,0x7e,0xff,0xff,0xff,0xff,0xb7,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0xcf,0xf1,0xff,0xff,0xff,0xef,0xfb,0xf3,0xfe,0xfe,0xde,0xfc,0xfa,0xbf,0x3f,0x6f,
- 0xff,0xbf,0x1f,0xd7,0xff,0xfc,0x7f,0xff,0xff,0xff,0xd6,0xef,0xff,0xff,0xf7,0xff,
- 0xf7,0xfb,0x7f,0xd7,0xfe,0xff,0xfd,0xef,0xdf,0xff,0xff,0xf3,0xff,0xb7,0xfb,0xff,
- 0xf7,0xff,0xff,0xfb,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xfd,0xdf,0xff,0xff,0xff,
- 0xff,0xaf,0x7b,0xfc,0xff,0xbf,0xed,0x72,0xff,0xf3,0x7d,0xdf,0xff,0xf7,0xed,0xf9,
- 0x7e,0xdd,0x7b,0xfd,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x11,0x7f,0xff,
- 0xff,0xff,0xef,0xec,0xfd,0x7f,0xfa,0xbf,0xef,0xf9,0xfe,0xff,0xff,0xed,0xf0,0xfb,
- 0xbf,0xed,0xf9,0xff,0xaf,0x6e,0xfb,0xfe,0xff,0xff,0xff,0xff,0xff,0xdf,0xf7,0x7f,
- 0xff,0xff,0xff,0xfc,0xf5,0xff,0xff,0xff,0xff,0xfd,0x7e,0xff,0x5f,0xdf,0xfb,0xef,
- 0xf7,0xcf,0xfb,0xf8,0xef,0xff,0xfd,0x7f,0x9f,0xf7,0xff,0xff,0xff,0xff,0xff,0xf6,
- 0xc3,0xff,0xbf,0xfc,0xff,0xf5,0xcc,0xf7,0x3c,0xff,0xfe,0xcf,0xf2,0x6c,0xcf,0xdf,
- 0xcf,0xec,0x7f,0x3f,0xff,0xbf,0xff,0xfb,0x75,0xcf,0xb3,0xff,0xff,0xe7,0xff,0xff,
- 0xff,0x35,0xaf,0xf7,0xbf,0xdf,0xff,0xff,0xa3,0xe5,0xff,0x3f,0xdd,0xfe,0xa9,0xef,
- 0x7e,0x7f,0xfc,0x5a,0x3b,0xdf,0xf7,0xff,0xff,0xfe,0xbb,0xf6,0xff,0xff,0xfe,0xbf,
- 0xff,0xff,0x58,0xbd,0xfe,0xff,0xff,0x2b,0xff,0x9f,0x9d,0x73,0x2b,0xfa,0xe7,0xbf,
- 0xab,0x5d,0xcb,0x9f,0xac,0x6a,0x9f,0x7e,0x9f,0xf7,0xef,0x7f,0xfe,0xff,0xff,0xfd,
- 0xff,0xff,0xff,0xef,0x86,0xff,0xdf,0xff,0xed,0x7f,0xff,0xcd,0x93,0x65,0x79,0x7e,
- 0xdf,0x37,0xed,0xd3,0x7f,0xf5,0xe5,0x7f,0x76,0xdd,0xff,0x7f,0xff,0xff,0xdf,0xff,
- 0xff,0xdf,0xff,0xff,0xff,0x78,0xff,0xfb,0xff,0xfe,0xff,0xeb,0xfe,0x7d,0xdd,0x2f,
- 0xcb,0xc3,0xfe,0xbe,0x7c,0xdb,0xff,0xff,0x2f,0xff,0x22,0xdf,0xf7,0xff,0xeb,0xfb,
- 0xff,0xff,0xfd,0xff,0xff,0xff,0xfc,0xdb,0xff,0x77,0xff,0xff,0x7d,0x5f,0x77,0x1d,
- 0xf7,0x51,0x5e,0x77,0x95,0x87,0x7d,0xde,0xdd,0x87,0x79,0xdf,0x7b,0xdd,0xff,0x79,
- 0x5f,0x77,0xff,0xff,0xff,0xff,0xff,0xfd,0x99,0xff,0xef,0xff,0xfe,0xbf,0xad,0xfb,
- 0xca,0xfe,0xbf,0xaf,0xab,0x42,0xfe,0xad,0x2f,0x3f,0xfe,0xbe,0xaf,0x4b,0xfe,0xdf,
- 0xfe,0xaf,0xef,0x9f,0xf7,0xed,0xff,0xff,0xff,0xe3,0x7f,0xfd,0xff,0xff,0xd7,0xf5,
- 0xfd,0xb8,0x4f,0xd7,0xf5,0xfd,0xfa,0x5f,0xd6,0xf7,0xc6,0x7f,0xd7,0xf5,0x6d,0xff,
- 0x76,0xff,0x35,0xfd,0xf3,0xfe,0x7f,0x9f,0xff,0xff,0xff,0x4f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xf6,0xfd,0xbf,0xed,0xff,0xfe,0xdf,0xbf,0xcd,0xfb,0x7f,0xbf,0xed,0xd0,
- 0xfc,0xfd,0x27,0xed,0xff,0xff,0xff,0xef,0x5b,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xe3,0xfe,0xfe,0xff,0x9f,0xe7,0xfa,0xfe,0xff,0xfb,0xfa,0xfe,
- 0xf9,0xff,0xfb,0x9b,0xfe,0x7f,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xf9,0x1f,0xff,
- 0xbf,0xef,0xfb,0xfe,0xfd,0x9f,0x67,0xdb,0x36,0xdf,0xbf,0xee,0xdb,0xbe,0xfd,0xee,
- 0xdb,0xee,0x75,0xbf,0x67,0xbb,0xfe,0xff,0xbf,0xef,0xf8,0xfe,0xff,0xbf,0xfe,0x56,
- 0xff,0xff,0xff,0xff,0xff,0xfd,0xbf,0x6f,0xdb,0xfc,0xff,0xff,0xef,0xf3,0xfe,0xfd,
- 0xbf,0xdb,0xff,0xfb,0xbe,0xdf,0xbf,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,
- 0x76,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xf7,0xfd,0xfe,0xff,0xff,0xf7,0xfe,0xff,
- 0xbf,0xbf,0xfb,0xff,0xfe,0xdf,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfd,0x17,0xfe,0x5f,0xff,0xff,0xff,0x7f,0x47,0xd1,0xf5,0xfd,0x7f,0xdf,0xd7,
- 0xf5,0xef,0x7f,0xd7,0xb5,0xfb,0x1b,0x5e,0xf9,0xff,0xff,0xff,0xfe,0xff,0xfe,0x7f,
- 0xff,0xfe,0xff,0x8b,0xff,0xe9,0xff,0xff,0xff,0xe7,0xeb,0xfa,0xfe,0x9f,0xa7,0xe9,
- 0xfa,0x7e,0x8f,0xa7,0xfb,0x76,0x9f,0xe3,0xea,0xd7,0x3f,0xdf,0xff,0xff,0xff,0xff,
- 0xef,0xff,0xff,0xff,0xb0,0x7b,0xfd,0x7f,0xfd,0xff,0xfd,0xfb,0x37,0x4f,0xf7,0xe5,
- 0xef,0x7f,0x5f,0xf7,0xbd,0xef,0x7f,0xf7,0x3e,0xff,0x77,0x5c,0xf7,0xbf,0xdf,0xf7,
- 0xfe,0xfb,0xbf,0xff,0xff,0xfd,0x2f,0xff,0xaf,0x9f,0xe7,0xf9,0xbe,0x3f,0x8b,0xc2,
- 0xf8,0xbe,0x3f,0x8b,0xa7,0xf9,0xbe,0x6f,0xe2,0xf9,0xfe,0x2f,0x89,0xe6,0xf9,0xfe,
- 0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,0xdd,0xff,0xff,0xff,0xff,0xff,0xf3,0xf5,0xff,
- 0x7a,0x5f,0xf7,0xfc,0x7f,0x37,0xdf,0xf1,0xfd,0x1f,0x4f,0xf1,0xf5,0xff,0x1f,0xef,
- 0xff,0xfe,0x7f,0x9f,0xe7,0xff,0xff,0xff,0xeb,0x3f,0xdf,0xff,0xff,0xff,0xfe,0x7e,
- 0xbf,0xbf,0xeb,0xfa,0xff,0xbf,0xa7,0xbf,0xfb,0xff,0xbf,0xe9,0xfe,0xfe,0xbf,0xbf,
- 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x13,0xff,0xff,0xff,0xff,0xff,
- 0xdf,0xff,0xff,0xff,0x7f,0xdf,0xff,0xfd,0xff,0x7f,0xff,0xe7,0xff,0x7f,0xff,0xff,
- 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe6,0xdf,0xff,0xff,0xff,
- 0xff,0xf9,0xff,0x7f,0xff,0xbf,0xef,0xff,0x7e,0xdb,0xfd,0xfd,0xfe,0xdf,0xb7,0xff,
- 0x7f,0xdf,0xb7,0xf7,0xfd,0xff,0x7f,0xdf,0xfd,0xfd,0xff,0xff,0xfd,0x9f,0xf7,0x7f,
- 0xff,0xff,0xff,0xff,0xf7,0xdf,0xf7,0xfd,0xbf,0xee,0xdf,0xf6,0xfd,0xad,0xff,0xff,
- 0xfd,0xaf,0x27,0xde,0xf2,0xff,0xff,0xab,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xff,
- 0xf6,0xbf,0xa7,0xe9,0xfa,0xde,0xbb,0xaf,0xea,0xb8,0xfc,0x33,0xaf,0xe9,0xfa,0xf7,
- 0xaf,0xe3,0xba,0xf6,0xbb,0xa7,0x69,0xfa,0x7e,0xbf,0xaf,0xeb,0xfa,0xfe,0xbb,0xf3,
- 0x7f,0xdf,0xff,0xcd,0xff,0xff,0xdf,0x17,0xcd,0xae,0xf6,0xbd,0xef,0xf5,0xc3,0x73,
- 0xef,0xff,0xfe,0xe4,0x7f,0x3f,0xc7,0xff,0x6f,0xdf,0xfd,0xff,0xb3,0xff,0xff,0xff,
- 0xee,0xa7,0xff,0xff,0xdf,0xef,0xff,0xef,0xbe,0x93,0xdf,0xfd,0x7f,0x7b,0xff,0xff,
- 0xe7,0xef,0xff,0x5f,0xf7,0xfd,0xff,0xdf,0xff,0xe7,0xfb,0xff,0x7f,0xff,0xff,0xfd,
- 0xf7,0xff,0x95,0xef,0xff,0xfc,0xff,0xff,0xff,0xed,0xaf,0xcd,0xf2,0xff,0xbf,0x3f,
- 0xfe,0x3f,0xff,0xe7,0xbb,0xfb,0xcf,0xb3,0xe8,0xf6,0xff,0xfd,0x7f,0xff,0xff,0x3f,
- 0xff,0xff,0xff,0xe9,0xbf,0xfa,0xbf,0xff,0xff,0xff,0x7e,0x9a,0xb7,0xc9,0xf9,0xfd,
- 0x9f,0x6f,0x79,0xce,0xdf,0xff,0xaa,0xff,0xfe,0x9f,0x8f,0xf9,0xef,0x7b,0xdf,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xf7,0xfd,0xd5,0xff,0xff,0xff,0xff,0xe7,0xfd,0xef,0xbb,
- 0xfd,0xdf,0xbb,0xff,0xff,0xfd,0xff,0xad,0x7f,0xfc,0x57,0xbf,0xf6,0xff,0xff,0xfd,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xe8,0xff,0xfe,0xfd,0xff,0xf7,0xff,0xbf,0xff,0xff,
- 0xae,0xff,0xff,0xef,0x3d,0xab,0xee,0xdb,0xfb,0xff,0x73,0xfc,0xfe,0xff,0xcf,0xff,
- 0xf7,0xff,0xfb,0xff,0xfd,0xff,0xff,0xff,0x1f,0xff,0x37,0xfb,0xef,0xf7,0xbf,0xef,
- 0xfb,0xf4,0xed,0x7f,0xff,0x7b,0xf3,0xdf,0xff,0x59,0xff,0xff,0xfa,0xeb,0xdb,0xf5,
- 0xff,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9a,0x7f,0xef,0xff,0xff,0xff,0xff,
- 0xff,0xdf,0xff,0xd7,0xff,0x7f,0xff,0xfe,0xff,0xff,0xab,0xff,0xed,0xff,0xdf,0xfe,
- 0xff,0xfd,0xff,0xff,0xff,0xdf,0xfe,0xff,0xff,0xff,0xd0,0x7f,0xfd,0xff,0xff,0x7b,
- 0xfe,0xff,0xff,0x37,0x7d,0xf3,0xfc,0xfb,0xac,0x87,0xd1,0xd9,0xfe,0xa9,0x6f,0xbf,
- 0xf7,0xff,0x4d,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xff,0xbf,0xff,
- 0xdf,0xff,0xff,0xfe,0xe7,0xff,0xfe,0xbe,0xb6,0xbb,0xde,0xa9,0x7d,0xbe,0xff,0x7f,
- 0xf7,0xff,0xff,0xc1,0xbd,0xfe,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xc5,0xff,0xbf,
- 0xff,0xff,0xfb,0x7f,0xff,0xaf,0x7b,0xf7,0xd7,0x75,0xff,0xf7,0xfb,0xff,0x6f,0xfe,
- 0xfe,0xd5,0x7d,0xef,0xef,0xff,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x9d,
- 0xfb,0xf7,0xfd,0xfe,0xff,0x7b,0xef,0x4f,0xff,0xbf,0xff,0xbf,0xfb,0xfb,0xbe,0xdf,
- 0xef,0xff,0xfe,0x7f,0x75,0xef,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,
- 0x56,0xfb,0xff,0xff,0xdf,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xf7,0xff,0xfe,0xff,
- 0xdf,0xed,0xff,0xff,0xbf,0xff,0xfd,0xbe,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfa,0x1f,0xff,0x35,0xcf,0xf1,0x2f,0x7f,0x33,0xcf,0xf7,0x5c,0x53,0x5e,0xd7,
- 0xb1,0xec,0xcf,0xff,0xf3,0x5f,0xff,0x3f,0xcf,0xf1,0xef,0xff,0xe7,0xc7,0xff,0xff,
- 0xff,0xff,0xf1,0xda,0xff,0xe8,0xff,0x33,0xff,0xf9,0xf4,0xff,0xaf,0xe7,0xaa,0x7c,
- 0xdf,0x97,0xbf,0xfa,0xcf,0xaf,0x65,0xef,0xeb,0xfc,0x97,0xbd,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xf5,0xe3,0x5f,0xff,0xff,0xbf,0xad,0x77,0x4b,0xd2,0x3f,0x9f,0xf7,
- 0xed,0xd2,0x7e,0x8f,0xbb,0x5a,0x7e,0xbf,0xff,0xfb,0xfe,0xfe,0xef,0xbf,0xff,0xff,
- 0xbf,0xff,0xff,0xff,0xfe,0xfa,0x6f,0xff,0xff,0xff,0xdf,0xff,0x7d,0x7b,0x16,0x4b,
- 0xfb,0xfc,0xb9,0x37,0xcd,0xff,0xe7,0x17,0xc7,0xb7,0xe5,0xff,0x7f,0xd7,0xf7,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0x83,0xfb,0x2f,0xff,0xfe,0xfc,0x97,0x7f,0xbd,
- 0xfb,0x6c,0x8f,0xb7,0xe9,0xf2,0x7c,0xfb,0x69,0xff,0x7b,0xff,0x3e,0xcf,0xb3,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd1,0xbf,0xf5,0x7f,0xff,0x77,0x1b,0x8f,
- 0x7f,0xdf,0x77,0xd5,0xf7,0x7d,0x58,0x55,0x3d,0xfd,0xd6,0xf7,0xdd,0x87,0x69,0xdf,
- 0xd7,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0x37,0xfe,0xbf,0xff,0x7b,0x8f,
- 0xfe,0xbf,0xaf,0xeb,0x52,0xf4,0xff,0xaf,0x6b,0x9b,0xff,0x2f,0xeb,0xda,0xfe,0xbf,
- 0xaf,0x4f,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xde,0x97,0xff,0xd7,0xff,0xe5,
- 0xfa,0xf7,0xd7,0xf4,0xcd,0xba,0x4e,0x9b,0xb4,0xc5,0x33,0xff,0xf4,0xfd,0x3d,0x5f,
- 0xdf,0xf7,0xcf,0x7f,0x7e,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0x7f,0xff,0xff,
- 0xfe,0xff,0xfd,0x3f,0xff,0xd9,0xf6,0xdd,0xff,0x7b,0xdb,0xf7,0xff,0xb7,0xdf,0xf7,
- 0xff,0xff,0xff,0xf9,0xfe,0xdf,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xdf,0xfb,
- 0xff,0xff,0xff,0xef,0xfa,0xff,0xff,0xbf,0xef,0xfb,0xff,0xff,0xef,0xef,0xf9,0xff,
- 0xff,0xe7,0xfb,0xfe,0xff,0xff,0xef,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x91,
- 0x7f,0xbb,0xfe,0xff,0xbe,0x66,0xfb,0xfe,0x6d,0x9e,0xe7,0x99,0xf6,0x7f,0x9b,0xed,
- 0xd6,0x7d,0x9f,0x6f,0xbb,0xb6,0xfd,0xbe,0xee,0xfb,0xfe,0xff,0xbf,0xef,0xfb,0xff,
- 0xed,0x7f,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0x3f,0xff,0xdb,0xfc,0xff,0xff,
- 0xff,0xf7,0xff,0x7f,0x6f,0xfb,0xf7,0xfd,0xbf,0xef,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xfe,0xf7,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xfb,0xfe,0xff,
- 0xff,0xff,0xff,0xdf,0xff,0xef,0xfd,0xff,0xff,0xef,0xfb,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfe,0xff,0xd1,0xff,0xff,0xff,0xfe,0x5f,0xf1,0xff,0xed,0x1b,0x47,0xd3,0xfc,
- 0x7d,0x1b,0x46,0xdf,0xff,0x1f,0x47,0xd7,0xfd,0xfd,0x7f,0xdf,0x9f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfb,0xe9,0x3f,0xff,0xff,0xff,0x49,0xfb,0xbf,0xff,0xaf,0xeb,0xfa,
- 0xfe,0xbf,0x2f,0xcb,0xfb,0x7f,0x2f,0xeb,0xfa,0x7e,0x9f,0x27,0xe9,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x33,0xff,0xff,0x7f,0xdf,0xff,0xff,0xff,0xfc,0xdf,
- 0x3f,0xdf,0xf3,0xf4,0xfd,0x3f,0xfd,0xfd,0xff,0x7f,0xde,0xf7,0xfd,0xdf,0xf6,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xff,0xbf,0xf9,0xfe,0x7f,0x9d,0xe7,0xf9,
- 0xbe,0x3f,0x9b,0xe2,0xf8,0xbe,0x2f,0x9f,0xe6,0x9c,0x37,0x9f,0xe3,0xf9,0xfe,0x7f,
- 0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,0xe7,0xf9,0xfd,0x5f,0xff,0xff,0xf9,0xf4,0x7f,0x7f,
- 0xff,0xf1,0xf4,0xfd,0x7f,0xcf,0xf7,0xfc,0x7f,0xbf,0xf7,0xac,0x7f,0x7f,0xcf,0xf1,
- 0xfe,0xfd,0x9f,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xa3,0xfd,0xff,0xff,0xfe,0xbf,
- 0xbf,0xff,0xfe,0xfe,0xbf,0xaf,0xef,0xfb,0xff,0xbf,0xf7,0xfb,0xfe,0xff,0xff,0xfb,
- 0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x3f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xdf,0xfb,0xff,0xff,0x3f,0xff,0xff,0xff,0xfe,0xdf,0xf7,0xfd,
- 0xff,0xbf,0xdf,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xfe,0xae,0xff,0xff,
- 0xfd,0xff,0x7f,0xf7,0xf7,0xf9,0xff,0x7f,0xdf,0xb7,0xfd,0xff,0x7f,0xdf,0xef,0xfb,
- 0x7f,0xdf,0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xe5,0xff,
- 0xdf,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0x7f,0xff,0xf4,0x7d,0xbb,0x7f,0xcb,0xfd,
- 0xff,0xfe,0xcb,0xfe,0xbd,0xbf,0x6f,0xd3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb2,
- 0xbf,0xff,0xeb,0xfa,0xfe,0xaf,0xad,0xe9,0xf2,0xfe,0xbf,0xa6,0xe8,0xba,0x76,0x9d,
- 0xaf,0x7a,0xbe,0xbb,0xa3,0xeb,0xda,0xce,0xbb,0xad,0xe2,0xfa,0xfe,0xb7,0xaf,0xeb,
- 0xff,0xc7,0xff,0xff,0xff,0x5f,0xfb,0xdd,0xf1,0x7c,0xda,0x37,0xcd,0xb3,0xf4,0x37,
- 0x37,0xfc,0xb8,0xdf,0x13,0xf5,0xd3,0x84,0x7d,0xd7,0xfc,0xf5,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x74,0x7f,0xff,0xf7,0xfa,0xff,0x7f,0xff,0x67,0xf9,0xdf,0x77,0xdf,0xdf,
- 0xfd,0xfc,0xdf,0xbf,0xf3,0xcb,0x7f,0xbf,0xff,0x5f,0xfb,0xdf,0x7e,0xff,0xff,0xff,
- 0xff,0xef,0xff,0xf8,0x97,0xff,0xfb,0xff,0x6f,0x7e,0xfa,0x5f,0x94,0xbb,0xfe,0xff,
- 0x3f,0x97,0xe5,0xff,0xef,0x57,0xff,0xbf,0xf7,0x4b,0xef,0xef,0xfb,0xfe,0xfb,0xff,
- 0xff,0xff,0xff,0xff,0xfe,0x99,0xfd,0xfd,0xff,0xb7,0xfe,0xfd,0xfe,0xfa,0x7e,0xbd,
- 0x27,0x6b,0xb9,0xf6,0xff,0x67,0xf3,0xfe,0x1f,0x8f,0xfb,0xdb,0xff,0xbd,0xfb,0xff,
- 0xbf,0xff,0xff,0xff,0xff,0xdf,0xef,0x7f,0xff,0xee,0xff,0x7f,0xff,0xff,0xff,0x9e,
- 0xfb,0xf9,0xfe,0x7d,0xff,0xf7,0xfb,0xf5,0xee,0xfd,0xfb,0xf5,0xff,0xef,0x7f,0xff,
- 0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xa7,0xff,0xfe,0xfd,0x77,0xff,0xbf,0xee,
- 0xfd,0xeb,0xef,0x3a,0xf7,0xff,0xff,0x5f,0xff,0xb3,0xf8,0xf7,0x3b,0xef,0xfb,0xf3,
- 0xed,0x3b,0xfe,0xff,0xbf,0xff,0xff,0xff,0xff,0x89,0xff,0xff,0xff,0xff,0xfb,0xde,
- 0xf6,0xfd,0xff,0xff,0xdf,0xff,0xfd,0xcf,0x7f,0xdf,0xe5,0xff,0x7e,0xdb,0x7a,0xfe,
- 0xaf,0xef,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xfb,0xff,0xbf,
- 0xfb,0x7e,0xd7,0xed,0xfe,0xfe,0x9f,0xff,0x3f,0xef,0xdb,0xff,0xef,0xda,0xee,0xe7,
- 0xff,0xff,0x7f,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0xfd,0xcf,0xf3,
- 0xde,0xff,0xad,0xcf,0xef,0xfb,0xfe,0xfd,0x2d,0xff,0xff,0xff,0xfb,0xbf,0xbf,0xf7,
- 0x33,0xff,0xef,0xff,0xbc,0x1f,0xbf,0xef,0xff,0xff,0xff,0xff,0xff,0xfc,0xef,0xfe,
- 0xff,0x7e,0xf7,0xd7,0xdb,0x7f,0xeb,0xfb,0xfe,0xff,0x7f,0xf7,0xff,0xfe,0x79,0xeb,
- 0xff,0x9b,0x67,0xb7,0xff,0xff,0xfa,0xdf,0xff,0xff,0x7f,0xff,0xff,0xff,0xfc,0x9d,
- 0xef,0xbf,0xef,0x5f,0xdf,0x77,0x5f,0xbd,0xfd,0xdb,0xff,0x5a,0xf7,0xad,0x8b,0x3a,
- 0xf7,0xbf,0xde,0x7f,0xfd,0xb3,0xac,0xd9,0x7f,0xff,0xbf,0xdf,0xfd,0x7f,0xff,0xff,
- 0x19,0xff,0xff,0x7f,0xdf,0xf7,0xdf,0xff,0xbf,0xdf,0xb5,0xed,0x79,0xee,0xd7,0x37,
- 0xce,0xfe,0xf3,0xbf,0xef,0xbb,0x7e,0xdb,0xff,0xf7,0xff,0xff,0xff,0xff,0xaf,0xff,
- 0xff,0xff,0x77,0xff,0xff,0xff,0xff,0xbf,0xef,0xff,0xff,0xcf,0xfb,0x7f,0x7f,0x3f,
- 0xb7,0xfd,0xff,0x5f,0xf7,0xf5,0xff,0x7f,0x5f,0xdf,0xef,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xfe,0x63,0xff,0xf1,0xfc,0xcb,0x3f,0xdd,0x72,0x7d,0xcf,0x1f,0xdf,0xb3,
- 0x3f,0x7f,0xff,0xfd,0x7f,0xff,0xe7,0xf9,0xff,0xff,0x9f,0x3f,0xff,0xf3,0xff,0xcf,
- 0x3f,0xff,0xff,0xff,0x35,0xaf,0xff,0x7c,0xb9,0x6f,0xff,0x3e,0xff,0xfa,0xfb,0xff,
- 0xa7,0xff,0xff,0xff,0xff,0xaf,0xff,0xfc,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xf3,0xff,0xff,0xff,0xff,0x5c,0xbd,0xff,0xff,0xef,0xef,0xd6,0xff,0xff,0xbf,0x4e,
- 0xcb,0xfe,0xe9,0xd6,0x75,0x9d,0x73,0xd7,0x55,0xd5,0x75,0x5d,0x57,0xfe,0xfe,0xff,
- 0xff,0xff,0xfe,0xff,0xff,0xff,0xef,0xa6,0xff,0xff,0xf7,0xfd,0xff,0xff,0xff,0x97,
- 0xed,0xf9,0x7f,0xdf,0x9f,0x4f,0xb3,0xfc,0xfe,0xff,0xf9,0xef,0xff,0x9f,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6a,0xff,0xff,0xff,0xbf,0x3f,0xf9,0xfa,
- 0xfe,0x9e,0xee,0xdb,0xd3,0xff,0xf7,0xfc,0xde,0xb7,0xf5,0x78,0xdf,0x57,0x9d,0xe5,
- 0x7f,0xe9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1b,0xff,0xff,0xdd,0xc7,0x7f,
- 0x3f,0x57,0xd3,0xf7,0x79,0xde,0x77,0xfe,0x6f,0xbf,0xff,0xfe,0xff,0x9b,0xef,0xfb,
- 0x7e,0xef,0xfd,0x36,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xd9,0xff,0xff,0xfe,0xda,
- 0xf7,0xed,0x6b,0x7a,0xe6,0xbe,0xae,0x2f,0xfd,0xff,0x77,0xdf,0x5d,0xdf,0x7f,0xdf,
- 0xf7,0x7d,0xfb,0xff,0xaf,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xe5,0x7f,0xff,0xff,
- 0x7f,0xdf,0xff,0xc5,0x7f,0x5e,0xdf,0xf7,0xcd,0xff,0xff,0xff,0xff,0xeb,0xfe,0xbf,
- 0xff,0xff,0xff,0xff,0xff,0xf5,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,
- 0xff,0xff,0xff,0xef,0xdb,0xff,0xfd,0xa7,0xe7,0xff,0xfe,0xdb,0xbe,0xe7,0xbb,0xfb,
- 0xbe,0xef,0xbb,0xee,0xfb,0xff,0xe7,0xde,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe9,
- 0xff,0xff,0xff,0xff,0xfe,0x3d,0xaf,0xff,0xfb,0xff,0xff,0xbf,0xff,0xfa,0xfe,0xfd,
- 0xef,0xfe,0xfe,0xbf,0x8f,0xe3,0xfb,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xee,0x9f,0xff,0xbf,0xef,0xfb,0xfe,0x39,0xbf,0x67,0x9b,0xf6,0xf9,0xb5,0x6f,0x1b,
- 0xbe,0xfd,0xef,0xdb,0xe6,0xfd,0xbf,0x6f,0x1b,0xfe,0x7d,0xbf,0xef,0xfb,0xfe,0xff,
- 0xbf,0xfe,0x16,0xff,0xff,0xff,0xff,0xff,0xfb,0x3f,0xdf,0xdb,0xfc,0xfd,0xbf,0xef,
- 0xfb,0xfe,0xfd,0xff,0xf3,0xfc,0xfd,0xbf,0xcf,0xfb,0xfe,0xff,0x3f,0xef,0xff,0xff,
- 0xff,0xff,0xff,0x74,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xfd,0xff,0xbf,0xef,
- 0xf7,0xbd,0xee,0xfb,0xff,0xbb,0xee,0xfb,0xbe,0xfb,0xbb,0xfe,0xff,0xbf,0xfb,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x17,0xff,0xff,0xff,0xf5,0xff,0x3f,0xff,0xfb,0xf5,0xff,
- 0x7f,0x5f,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xf5,0xff,0x9f,0xdf,
- 0xf7,0xff,0xff,0x7f,0xff,0xff,0xbb,0xff,0xff,0xff,0xfe,0x9d,0xeb,0xfd,0xd7,0x7e,
- 0x9f,0xa7,0xe9,0xff,0xbf,0xed,0xfa,0xff,0xbf,0xef,0xfb,0xfe,0xff,0xbc,0x9f,0xf7,
- 0xed,0xfb,0x7f,0xff,0xe7,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xef,0xff,
- 0xfd,0xf7,0xad,0xff,0x7b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xf7,
- 0xff,0x7b,0x7f,0xdf,0xff,0x6d,0xff,0xff,0xfe,0xcf,0xf7,0xff,0x9f,0xe7,0xf9,0xfe,
- 0x7f,0x9f,0xe7,0xe9,0xba,0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,0xe7,0xf9,0xfe,0x7f,0x9f,
- 0xe7,0xf9,0xfe,0x3f,0x8f,0xe7,0xf9,0xbc,0x7f,0x9f,0x99,0xff,0xfe,0xff,0xff,0x5f,
- 0xf7,0xff,0xff,0xff,0xcd,0xf3,0x7c,0xff,0xff,0xef,0xfb,0xff,0x9f,0xef,0xfb,0xff,
- 0xff,0xbf,0xdf,0xdb,0xfd,0xff,0x7f,0xff,0xf7,0xef,0xff,0xfd,0x3f,0xdf,0xdf,0xff,
- 0xeb,0xfe,0xff,0xbf,0xff,0xff,0xeb,0xfb,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0x7e,0xff,0xbf,0xff,0xfe,0xff,0xff,0xff,0x27,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0x3f,0xef,0xf7,0xff,0xff,0xbf,0xef,0xef,0xff,
- 0xbf,0xff,0xff,0xfe,0xff,0x7f,0x7f,0xf7,0xfd,0xff,0xff,0xde,0xff,0xff,0xd2,0xff,
- 0xff,0x7f,0xff,0xf7,0xff,0x7e,0x7f,0x9f,0xf6,0xfd,0xff,0x7f,0xf7,0xfd,0xff,0x7f,
- 0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xff,0xfd,0xfb,0xfe,0xff,0xff,0xfb,0xdf,0xff,0xff,
- 0xdb,0xff,0xff,0xff,0xf7,0xfd,0xff,0xff,0xdf,0xf2,0xfd,0xff,0x6f,0xd3,0xf4,0x75,
- 0x3f,0xd1,0xf4,0xfd,0x3f,0x4f,0xd3,0xff,0xff,0xff,0xff,0xfd,0xff,0xe7,0xff,0xff,
- 0xff,0xd2,0xff,0xbe,0xaf,0xad,0xea,0xd8,0x7e,0xbd,0x8e,0xe9,0xba,0x56,0x9b,0x86,
- 0xe1,0xba,0x33,0x8e,0xc0,0xb8,0x2c,0xbb,0x0b,0xe3,0xfa,0xbe,0xbf,0xaf,0xeb,0xfa,
- 0xfe,0xbf,0xf6,0x7f,0xff,0x1f,0xfd,0xef,0x7c,0xfb,0xfa,0xff,0xf7,0xec,0xdd,0xfe,
- 0xcf,0xb1,0xed,0xdf,0xf3,0xb6,0xff,0xbf,0xd6,0xc3,0xff,0xff,0xff,0x3f,0xff,0xff,
- 0xff,0xff,0xfe,0xfe,0x25,0xff,0xcf,0xdf,0xff,0x7c,0xfd,0xff,0x7f,0xf7,0xf6,0xfb,
- 0xfa,0x77,0x54,0xff,0xff,0x7f,0x7f,0xf7,0xdf,0x7f,0xd3,0xff,0xfb,0xff,0x3f,0xfe,
- 0xff,0xff,0xef,0x7f,0xff,0xbd,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0x3b,0xff,0xbf,
- 0xec,0xff,0xfa,0xff,0xfb,0xef,0xf7,0xff,0xbb,0xbf,0xff,0xd7,0xee,0xfd,0xff,0xfd,
- 0xff,0xf7,0xff,0xff,0xff,0xfe,0xdf,0x3f,0xff,0xfb,0xff,0x7f,0xef,0x7c,0x8f,0xa7,
- 0x3b,0x5a,0x7e,0x37,0x8f,0xc3,0xf1,0x77,0x1f,0xdf,0xff,0xf3,0xff,0xbf,0xfb,0xcf,
- 0xfb,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0x15,0xff,0xff,0xdf,0xfb,0xfa,0xfd,0xf7,
- 0x9e,0xfe,0xfe,0xdd,0xef,0xdf,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xee,0xf6,
- 0xf7,0xff,0xff,0xff,0xd7,0xdf,0xff,0xff,0xef,0x64,0xff,0xbf,0xef,0xfb,0xfb,0xf3,
- 0xf3,0xfc,0xf7,0xee,0xef,0xff,0x7e,0xfe,0xb5,0xfd,0x6b,0xfd,0xff,0x7d,0xe7,0xf7,
- 0xff,0xcf,0xff,0xbf,0xdf,0xff,0xff,0xfe,0xff,0xff,0xfc,0x1f,0xff,0xff,0xff,0xbf,
- 0xed,0x7f,0xef,0xff,0xf2,0x7d,0x6b,0x7f,0xd3,0xb7,0xfd,0x7f,0x5b,0xf5,0x3d,0xff,
- 0x4b,0xdb,0xf5,0xf7,0xb7,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0x93,0x7f,0xff,0xff,
- 0xff,0xff,0xfe,0xdf,0x7f,0xcf,0xaf,0xfd,0xfb,0x2f,0xef,0xb7,0xfd,0x6e,0xd7,0xfd,
- 0xef,0xff,0xfb,0xbf,0xff,0x7f,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0xf1,0x7f,0xdf,
- 0xff,0xfd,0xbd,0x6b,0xff,0xff,0xfe,0xaf,0xe7,0xfc,0xf6,0x3b,0x9f,0x33,0xf8,0x3f,
- 0xcf,0xf3,0xb4,0xef,0xbd,0x7f,0xff,0x77,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xaf,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0xfb,0xff,0xfe,0xee,0xff,0xf7,0x4d,0x7b,0xff,0xdf,
- 0x9d,0xf7,0x7f,0xd6,0x77,0xfb,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xfe,
- 0xd1,0xff,0xfe,0xaf,0xbf,0xfd,0xb7,0xff,0xdf,0x3e,0x5e,0x97,0x79,0xff,0xfe,0xdf,
- 0xa3,0x1e,0x7b,0x9c,0xa3,0x78,0xdb,0xa7,0xd9,0xff,0x7f,0xdb,0xf7,0xff,0xff,0xff,
- 0xf7,0xbe,0x9f,0xff,0xef,0xfd,0xf8,0xff,0xf9,0xff,0xef,0xf9,0x7e,0xdd,0xd7,0xaf,
- 0x3f,0x6f,0xdf,0xfd,0xb3,0x7c,0xff,0x3f,0xf9,0xda,0x7f,0xbf,0xff,0xff,0xff,0xff,
- 0xef,0xff,0xfe,0x87,0xef,0xff,0xff,0xff,0x7f,0x7f,0xfd,0xf3,0xff,0x5f,0xbf,0x9f,
- 0xff,0xfd,0xff,0x7f,0xf7,0xff,0x5e,0xdf,0xf7,0xff,0xfc,0xff,0xf7,0xff,0xff,0xdf,
- 0xff,0xff,0xff,0xbe,0xe4,0xbf,0xff,0x35,0xc9,0xf5,0xfd,0x1f,0x35,0xcf,0xf3,0xfd,
- 0xff,0xff,0xfd,0x7f,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0x1f,
- 0xdf,0xff,0xff,0xff,0xff,0xf1,0x0a,0xff,0xf7,0xff,0x3f,0xfe,0xf9,0xfe,0xac,0xfe,
- 0xfd,0xff,0xff,0xff,0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xf7,0xff,0xff,
- 0xf7,0xff,0xff,0xff,0xff,0xff,0xf5,0xcb,0xdf,0x4b,0xd2,0xa6,0xbc,0xff,0x3e,0xd7,
- 0xfe,0xff,0xfe,0x77,0x9d,0x73,0x5f,0xde,0x7d,0xf5,0x7d,0x5f,0x57,0xce,0xf5,0xff,
- 0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf9,0x6f,0xfd,0x79,0x5e,0x57,0x9f,0xcf,
- 0xf9,0xff,0xdf,0x37,0xcf,0xf3,0xfe,0x7b,0x9f,0xcf,0xfe,0x7f,0x9f,0xcf,0xfb,0x3e,
- 0x5f,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xa7,0xff,0xff,0xff,0xff,0xff,
- 0x9f,0xef,0xfd,0xfe,0xed,0xff,0xfe,0xde,0x7f,0xcd,0xfb,0x7f,0xd7,0xdf,0xfd,0x7d,
- 0xad,0xb7,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc5,0xbf,0xff,0x7f,0xdf,
- 0xf7,0xfb,0xfd,0x7f,0xba,0x77,0x9d,0xaf,0xff,0xee,0xfb,0xff,0xff,0xfe,0xfb,0xbf,
- 0xef,0xa9,0xde,0x76,0x3d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0x9f,0xfe,0xbd,
- 0xaf,0xeb,0xfb,0xf5,0xff,0xff,0x4b,0x8a,0xf7,0x7d,0xdd,0x17,0xfd,0xff,0xdf,0xb7,
- 0xed,0xe3,0x7d,0x2f,0x2b,0x9a,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x47,0xff,
- 0xd7,0x85,0xfd,0x73,0xfe,0xbf,0xff,0xed,0xfb,0x5c,0x7f,0x9f,0xeb,0xff,0xff,0xff,
- 0xff,0xff,0xfc,0xff,0xa6,0xe5,0x7a,0x5c,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0x6c,
- 0x7f,0xff,0xff,0xff,0xff,0xfd,0xb7,0xff,0xde,0xff,0xbf,0x9e,0xeb,0xbb,0xee,0x7b,
- 0xbf,0xbb,0xee,0xfb,0xbe,0xef,0xda,0x7e,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xec,0x9f,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xf9,0xf7,0xbf,0xaf,
- 0xef,0xde,0xfd,0xef,0xeb,0xd8,0xfe,0x3f,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfd,0xc9,0xff,0x5b,0xfe,0xdf,0xbf,0xe6,0xdb,0xf6,0x75,0xbd,0x6f,0x5b,0xd6,
- 0xf1,0xbb,0xef,0xde,0xfd,0xbe,0x6f,0xdb,0xd6,0x7f,0xbf,0xef,0xfb,0xfe,0xff,0xbf,
- 0xef,0xfb,0xff,0xea,0x6f,0xff,0xff,0xff,0xff,0xff,0xf3,0xfc,0xff,0xbf,0xef,0xfb,
- 0xfe,0xff,0xbf,0xef,0xf3,0xff,0x3f,0xcf,0xdb,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xf7,0x8f,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0x7f,0xef,0xfb,
- 0xfe,0xef,0x7b,0xde,0xfb,0xbb,0xfb,0xbe,0xef,0xbb,0xef,0xbf,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xc5,0xff,0xfd,0xfd,0x7f,0xdf,0xf9,0xbf,0xfd,0x9f,
- 0xdf,0xf7,0xff,0xff,0xfb,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xfd,0x1b,0xdf,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xee,0x3f,0xfe,0xdf,0xa7,0xd9,0xff,0xf6,0xdf,
- 0xef,0xe9,0xf2,0x7f,0xeb,0xfb,0xfe,0xff,0xa7,0xfa,0x7e,0xff,0xaf,0xef,0xaf,0xe9,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xf7,0xf5,0xff,0x7f,0x6f,
- 0xff,0x77,0xfb,0x7f,0xde,0xff,0x7f,0xff,0xff,0xff,0xef,0xff,0xfb,0xff,0xff,0xbd,
- 0x7f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0xfb,0xf8,0xbe,0x6f,
- 0x8f,0xe3,0xf9,0x9e,0x3f,0x1b,0xc7,0xf9,0xfe,0x7f,0x9f,0xe7,0xfe,0x7f,0x9f,0xe7,
- 0xf8,0xfa,0x6f,0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,0xe7,0xf9,0xff,0xdf,0xff,0xc7,0xff,
- 0xfd,0xff,0xff,0xef,0xf1,0xfc,0x6b,0x3e,0xe7,0xfb,0xfe,0xff,0xbf,0xff,0xfe,0xfb,
- 0x9f,0xe7,0xf7,0x7c,0x7f,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xef,
- 0xef,0xff,0xbf,0xff,0xff,0xff,0xff,0xbf,0xb7,0xff,0xff,0x7f,0xdf,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfb,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf2,0x7f,
- 0xff,0x7f,0xff,0xf7,0xf7,0xff,0xbf,0xdf,0xff,0xff,0xef,0xff,0xff,0xff,0xfe,0xfe,
- 0xff,0xfb,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x6f,0xff,0xb6,0xff,0xfe,0x7e,0xff,0xf7,0xfd,0xff,0x7f,0xdf,0xfd,0xff,0x7f,0xdf,
- 0xf7,0xff,0x7f,0xd7,0xf7,0xfd,0xed,0xbf,0x7f,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfd,0xff,0xff,0xff,0xff,0xfe,0xdd,0xf4,0x7d,0xff,0xcf,0xdb,0xfe,0xfc,0xbf,
- 0xcf,0xf3,0xfe,0xbf,0xaf,0xeb,0xbc,0xfd,0x3f,0x6f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xfe,0xaf,0xff,0xe9,0xfa,0xbe,0xaf,0xa7,0x6b,0xb8,0xfe,0x9b,0xa7,0xe9,
- 0xba,0xfe,0xbf,0xab,0x78,0xfe,0xaf,0xa7,0xe8,0xb8,0xae,0xbf,0xad,0xeb,0xfa,0xfe,
- 0xbf,0xaf,0xeb,0xfd,0x27,0xff,0xf3,0xff,0xf7,0xf7,0xbf,0xf3,0xed,0xfb,0xdf,0x7f,
- 0x9f,0xff,0xf7,0xff,0xe7,0xff,0xbb,0x3f,0xfd,0xff,0x7e,0xbd,0xff,0xf7,0xfb,0xff,
- 0xf7,0xff,0xff,0xff,0xff,0xf2,0x7f,0xee,0xfd,0xff,0x7e,0xfe,0xba,0xef,0xfd,0xff,
- 0x7d,0x9f,0xed,0xf1,0xfe,0xef,0x7d,0xdf,0xff,0xdf,0x57,0xfd,0x7f,0xfa,0xdf,0xfd,
- 0xff,0xff,0xfd,0xdf,0xf7,0xff,0xfb,0x57,0xff,0x7f,0xbb,0xef,0xfb,0xfe,0xfb,0xf7,
- 0xbe,0xff,0xff,0xfb,0xff,0xff,0xbf,0xba,0x7f,0x64,0xbf,0xf5,0xf7,0xfe,0xff,0xbf,
- 0xfe,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0x93,0xff,0xff,0xdb,0xd7,0xf5,0xff,0x6f,
- 0xf2,0xd2,0x9c,0xaf,0xe9,0xea,0xfe,0x9f,0xaf,0xfa,0xfe,0x9e,0xaf,0x6b,0xfe,0xb6,
- 0xbf,0xfe,0x7f,0xff,0xfb,0xff,0xff,0xff,0xdf,0xf7,0x7f,0xfb,0xff,0xef,0x7f,0xff,
- 0xff,0xbf,0xde,0xdb,0x75,0xae,0xbf,0xaf,0x6b,0x9a,0x6f,0xae,0xeb,0xfa,0xfe,0xbe,
- 0xff,0xf7,0xaf,0xff,0xff,0xf7,0x7f,0xff,0xff,0xff,0xfe,0xaf,0xff,0xfe,0xff,0x7e,
- 0xff,0xfb,0x4f,0xad,0x7c,0xff,0xfb,0xef,0xff,0x9f,0xef,0xff,0x9a,0x3f,0xf7,0x3f,
- 0xff,0xe3,0xfb,0xef,0xfb,0xfe,0xff,0xbf,0xef,0xff,0xfb,0xff,0xc1,0xff,0xfe,0xff,
- 0xff,0x2e,0xdb,0xf6,0xfb,0xfe,0x5c,0xd3,0xf5,0xbf,0xfb,0x7f,0xff,0xf4,0xfe,0xfb,
- 0xd6,0xf7,0x7d,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xfc,0xb7,0xff,
- 0xf7,0xf9,0xef,0x7b,0xff,0xb5,0xfe,0xdf,0xff,0xed,0xdf,0xfc,0xfb,0xcf,0xbe,0xbd,
- 0xff,0xff,0xff,0xbd,0xf9,0x7f,0xff,0xdf,0xff,0xff,0xff,0xff,0xfb,0xf7,0xff,0x57,
- 0xfd,0xcf,0xf3,0x48,0xf3,0x2d,0xcd,0xf3,0xff,0xbf,0x4f,0xcf,0xef,0xe8,0xf7,0xff,
- 0x5b,0xff,0xbf,0xaf,0xef,0x7a,0xdf,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xe6,0xef,0x7d,0xbf,0x7f,0xdf,0x97,0xe5,0xfd,0x7f,0xff,0xff,0xff,0x7f,0xff,0xdf,
- 0xff,0xdb,0xbf,0xfe,0xfb,0x8d,0xf9,0xbf,0xff,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x5f,0xfe,0xb7,0xef,0xe1,0xd6,0xf3,0xbe,0xef,0xbd,0xbf,0x2b,0x9e,0xb7,
- 0xe8,0xcb,0x7f,0xd7,0xad,0xeb,0x6f,0xfc,0xff,0x25,0xfe,0xff,0xff,0xbf,0xff,0xff,
- 0xfd,0xff,0xfb,0xd9,0xff,0xfe,0x77,0xff,0xff,0xff,0xff,0x67,0x5b,0x7e,0xe7,0xd7,
- 0x3f,0xfe,0x37,0xde,0xff,0xdf,0xbf,0xeb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xa2,0x7f,0xff,0xd7,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xf5,
- 0xff,0xff,0x73,0xbe,0xbf,0xff,0xff,0xcf,0xf3,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xef,0x41,0xff,0xbf,0x3f,0xd7,0xff,0xfc,0xf3,0xff,0xff,
- 0x7e,0xc9,0xb3,0xfc,0xff,0xf3,0xcc,0xfc,0x4f,0x3f,0xcd,0x7f,0x3c,0xff,0x27,0xc7,
- 0xff,0x2c,0x7f,0xff,0xff,0xf1,0xff,0x65,0xaf,0x97,0xff,0xfa,0xff,0xff,0x97,0x7f,
- 0xff,0xff,0xc3,0x37,0x3e,0xcf,0xff,0xff,0xff,0xf3,0xff,0xf5,0x9f,0xe7,0xda,0x3f,
- 0xff,0xf3,0x8d,0xff,0xff,0xff,0xff,0x7f,0x59,0x35,0xfe,0xff,0xff,0x3f,0xff,0xf3,
- 0xf9,0xef,0xff,0x7a,0xd2,0xbd,0x6f,0x5f,0xcf,0x9f,0xe1,0xfe,0xff,0xf2,0xd9,0xef,
- 0xfe,0x7f,0xbf,0xbf,0xbb,0xff,0xff,0xff,0xf9,0xef,0x36,0xff,0xdf,0xff,0xcf,0xff,
- 0xfe,0xff,0x3d,0xed,0xff,0x5f,0xc7,0xbd,0xcd,0xf9,0xfe,0xf3,0xff,0xff,0xde,0xdb,
- 0xb3,0xef,0xff,0xff,0xdf,0xf7,0xff,0xff,0xff,0xff,0x9f,0x7a,0x3f,0xfb,0xdf,0xf7,
- 0xb6,0xd9,0x26,0x7d,0x9c,0x7f,0x5f,0xf2,0x71,0xfd,0x75,0xff,0xee,0xcf,0xff,0xff,
- 0xea,0x5a,0xda,0x6f,0x5f,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xf9,0x5b,0xfa,0x77,
- 0xff,0xf6,0xff,0xbf,0x4d,0x3b,0xff,0x7d,0xd4,0x75,0xbd,0x66,0xdb,0xdf,0xdd,0x6f,
- 0xff,0xda,0x4f,0xdd,0xf7,0x5b,0xff,0x77,0x9d,0xff,0xff,0xff,0xff,0xfd,0xa3,0x7f,
- 0xef,0xff,0xff,0xbf,0xaf,0x7f,0xfe,0xfe,0xf7,0xff,0xeb,0xd7,0xd5,0xff,0xaf,0x7a,
- 0xf7,0xfd,0x7d,0xea,0xfa,0xfe,0xf7,0xff,0xfb,0xeb,0xff,0xff,0xff,0xff,0xff,0xee,
- 0x7f,0xfd,0xdf,0xf7,0xdf,0xf7,0x77,0xff,0xff,0xdf,0x37,0xfd,0x3a,0xfe,0x99,0xf5,
- 0xf6,0x6e,0x7f,0xff,0xfd,0x7f,0x6e,0xf7,0xff,0xfd,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0x07,0xfb,0x75,0xfd,0x7f,0x7f,0xd3,0xf6,0x7d,0xff,0xed,0xfb,0xf7,0xff,0xb7,
- 0x47,0xfb,0xdd,0xaf,0xe7,0xfb,0x74,0x7d,0xa7,0xff,0xf9,0xff,0xff,0xb7,0xff,0xff,
- 0xff,0xff,0x9d,0xbf,0x9e,0x7f,0x9f,0xf7,0xff,0xaf,0x7f,0xdf,0xfe,0x7f,0xef,0xff,
- 0xf9,0xfe,0x7f,0xaf,0xfa,0xfe,0x7f,0xbf,0x67,0xfb,0xfe,0xff,0x9f,0xff,0xf9,0xff,
- 0xff,0xff,0xff,0xfe,0x1f,0xff,0x9f,0xe7,0xf8,0xfe,0x6f,0x8f,0x63,0xdb,0xf6,0xfd,
- 0x9f,0x6f,0xd9,0xd6,0xe5,0xe7,0xbb,0xfe,0xef,0x9f,0xe6,0xdb,0xee,0xff,0xbf,0xef,
- 0xfb,0xfe,0xff,0xbf,0xfa,0xe7,0xff,0xfe,0xff,0xbb,0xef,0xff,0xfe,0x6f,0xb3,0xfc,
- 0xfd,0xff,0xcf,0xdb,0xfe,0xff,0xbf,0xfb,0xff,0xff,0xfe,0xff,0xdb,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x6a,0xff,0xff,0xbf,0xed,0xff,0xff,0xff,0xf7,0xfd,
- 0xff,0xbf,0xff,0xfb,0xfe,0xfe,0xff,0xef,0xfb,0xff,0xff,0xff,0xbf,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5f,0xff,0xe7,0xfb,0xb6,0x7f,0x9f,0x47,
- 0xf3,0xfd,0xfd,0x7f,0x47,0xd7,0xfc,0xff,0x7f,0xb3,0xfd,0xfd,0xfe,0xe7,0xd1,0xfd,
- 0xf9,0x7e,0x5f,0xd7,0xff,0xff,0xff,0xff,0xff,0xb3,0xfd,0xfe,0xff,0xbf,0xef,0xfb,
- 0xea,0xdb,0xbe,0x9f,0x37,0xeb,0xfb,0x7e,0xaf,0xa7,0xda,0xf6,0x9f,0xb7,0x5c,0xfa,
- 0xfe,0xdf,0xa7,0xe9,0xfa,0x7f,0xff,0xff,0xff,0xff,0xf2,0x3f,0xdf,0xff,0xff,0xdf,
- 0xff,0x6f,0xff,0xdf,0xff,0xf7,0xfd,0x7b,0x7e,0xf7,0xbd,0xfe,0xdf,0xf7,0x6f,0xff,
- 0xb7,0xd7,0xff,0xbf,0xfd,0x7f,0xff,0xff,0xff,0xff,0xff,0xfe,0xaf,0xff,0xf7,0x1f,
- 0xa7,0x79,0xfe,0x77,0x8f,0xe7,0xf8,0xfe,0x27,0x0f,0xe2,0xf9,0xbe,0x6f,0xe6,0xe9,
- 0xfe,0x7f,0x9b,0xc7,0xf1,0xfe,0x2f,0x9f,0xa7,0xf9,0xfe,0x7f,0x9f,0xf9,0xfe,0xfe,
- 0xfb,0xff,0x7f,0xfb,0xff,0xff,0xff,0xff,0xd3,0xfc,0x79,0x1f,0xcf,0xf1,0xff,0x3f,
- 0xc5,0xfb,0xfe,0xff,0x7a,0xde,0x93,0xff,0xfd,0x3f,0xff,0xff,0xff,0xff,0xfd,0xbf,
- 0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xbf,0xeb,0xfb,0xff,
- 0xa7,0xeb,0xef,0x7f,0xff,0xef,0xff,0xfa,0x7f,0xff,0xae,0xbf,0xff,0xff,0xff,0xff,
- 0x77,0xff,0xfb,0xbf,0xdd,0xff,0x4f,0xff,0xff,0xff,0xff,0x6f,0xf7,0xb7,0xff,0x3f,
- 0xff,0xed,0xff,0x7f,0xff,0xf3,0xfd,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xf2,0xd7,0xff,0xdf,0xf3,0xfd,0xe9,0x7f,0xdf,0xf7,0xff,0xed,0xff,0x7e,0xdf,
- 0xb5,0xfd,0xfe,0xdf,0xe6,0xfd,0xfb,0xdf,0x9d,0xff,0x7d,0xff,0xff,0xdb,0xff,0xff,
- 0xff,0xff,0xfc,0x4a,0xff,0x4f,0xff,0xbc,0xfd,0x3f,0xef,0xd1,0xfe,0xfc,0xbf,0x7f,
- 0xd3,0xfc,0xff,0xff,0xc8,0xff,0xff,0x9f,0xcf,0xdb,0xff,0xff,0xdf,0xff,0xd1,0xff,
- 0xff,0xff,0xff,0xff,0xab,0xbf,0xde,0xbf,0xa5,0xe9,0xda,0xfe,0x8d,0xab,0xea,0xfa,
- 0xae,0x8d,0xa3,0xe3,0xfa,0xf7,0xaf,0xe8,0xfa,0xfc,0x8d,0xa7,0xea,0xfa,0xfe,0xad,
- 0xaf,0xeb,0xfa,0xde,0xbf,0xf0,0x7f,0xbe,0x3e,0xcb,0xff,0xed,0xbd,0x3f,0xce,0xdf,
- 0x78,0xcf,0x1f,0xef,0xfb,0xff,0xff,0xbf,0xff,0x74,0xdf,0x3f,0x5f,0xbf,0xdf,0xdb,
- 0xff,0xdf,0xff,0xff,0xff,0x3f,0xff,0x07,0xff,0xde,0xef,0x7f,0xc7,0xff,0x4e,0xcb,
- 0xbf,0xec,0xff,0x4e,0xd6,0xbb,0xf5,0xdf,0x7f,0xf7,0x74,0xad,0xff,0xdd,0xff,0xfd,
- 0xff,0xff,0x7f,0xef,0xff,0xff,0xff,0xff,0xa5,0xff,0xfb,0xea,0xff,0xff,0xef,0xbf,
- 0xbf,0xef,0xfb,0xef,0xff,0x3f,0xee,0xfa,0xbb,0xe7,0xef,0xfd,0xfe,0xe3,0xdb,0x77,
- 0xfd,0xbf,0x7f,0xff,0x7d,0xf7,0x7d,0xd5,0x7f,0xf8,0x9f,0xff,0xfb,0xff,0xbe,0xdb,
- 0xff,0xbf,0xaf,0xf9,0xdf,0x7e,0x9d,0xff,0xe7,0xfa,0xff,0x77,0x3f,0xde,0xde,0x37,
- 0xad,0x67,0xff,0xfc,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0x05,0xff,0xff,0xff,0xff,
- 0xfd,0xee,0xdf,0xfe,0xdd,0xff,0xff,0xb6,0xff,0xff,0xff,0xef,0xff,0xff,0xfe,0x7e,
- 0xef,0xd5,0xff,0xf9,0xff,0xfd,0x7f,0xf7,0xef,0xff,0x7f,0xff,0xd0,0x7f,0xff,0xef,
- 0xd7,0xed,0xf3,0xff,0xfe,0xfd,0xef,0xfb,0xb0,0xdf,0x3b,0xff,0xef,0xff,0xff,0x7e,
- 0xff,0xff,0xef,0xfa,0xee,0xfd,0x7f,0xff,0xfb,0xff,0xff,0xff,0xff,0xfb,0xdf,0xff,
- 0x7f,0xff,0xf3,0xed,0x7f,0xff,0xde,0xe3,0xfc,0xbf,0xf7,0xff,0xff,0xdd,0x3f,0x56,
- 0xe5,0xfd,0xbf,0x4f,0xdb,0xf2,0xfd,0xff,0x56,0xdf,0x7f,0xff,0xff,0xfb,0xff,0x02,
- 0xff,0xfb,0xff,0xde,0xff,0xfe,0x7f,0xfb,0xf6,0xe7,0xeb,0xdf,0xdf,0xdf,0xfb,0xfb,
- 0xaf,0xff,0xff,0xed,0xfe,0x1e,0xea,0xff,0x6f,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0x74,0x7f,0x9f,0xff,0x5d,0xff,0x30,0xfe,0xfe,0xff,0x8f,0xe3,0xee,0xdd,0xff,0xce,
- 0xfa,0x75,0x3f,0x4f,0xf3,0x7c,0xff,0x3f,0xcf,0xf3,0xfc,0xff,0x3f,0xff,0xff,0xff,
- 0xf7,0xf4,0xef,0xff,0xff,0xbf,0xff,0xf9,0xbf,0x5f,0x7f,0xbd,0xbf,0x7f,0xef,0xbf,
- 0xe3,0x7f,0xdd,0xb7,0xde,0xff,0xbf,0xef,0xfb,0xfe,0xe7,0xbf,0xef,0xfa,0xff,0xff,
- 0xff,0xff,0xff,0xd5,0xff,0xed,0xbf,0xb2,0xed,0xff,0xbf,0xd3,0x7b,0x1c,0xa7,0x7f,
- 0xdd,0x77,0xdf,0xbf,0xfe,0x67,0x9f,0xa7,0xe9,0xfa,0x6a,0x8f,0xe7,0x39,0xfa,0x7f,
- 0xff,0xff,0xff,0xf7,0xb8,0x1f,0xff,0x7f,0xfd,0xff,0x7f,0xfb,0xb7,0xcf,0xfb,0xfc,
- 0xfd,0xbf,0xef,0xff,0xff,0xfb,0xef,0x73,0x3c,0x4f,0x37,0xc7,0xf3,0x7c,0xdf,0x37,
- 0xcf,0xff,0xff,0xff,0xff,0xf7,0xa7,0xff,0xfd,0xef,0x7f,0xff,0xf7,0xee,0xfd,0xff,
- 0x7f,0xd5,0xef,0xfb,0x7d,0xff,0xff,0xf3,0x7e,0xf7,0xbf,0xef,0xfb,0xfe,0xfb,0xbf,
- 0xef,0xfb,0xff,0xff,0xff,0xff,0xff,0xea,0xb7,0xff,0xff,0xcd,0x77,0x5c,0xcf,0x27,
- 0xcf,0xff,0xfc,0x7b,0x1f,0xcf,0xf3,0xfd,0xfe,0xcf,0xff,0xff,0xff,0xff,0xf7,0xff,
- 0x3f,0xff,0xdf,0xff,0xbf,0xef,0xfb,0xff,0xf1,0x1b,0xff,0xff,0xfd,0xaf,0xff,0xb3,
- 0xfe,0x7e,0xf3,0xeb,0xff,0x3f,0xfc,0xf9,0x7f,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xcf,0xff,0xff,0xff,0xf7,0xfd,0xff,0x7f,0xf5,0xd3,0xff,0xff,0x52,0xd3,0xfc,
- 0xff,0xfe,0xcf,0xbe,0xbd,0x7b,0x3e,0xce,0xe6,0xb5,0x7d,0xff,0xe7,0x79,0xdf,0x37,
- 0x9d,0xe7,0x7d,0x5f,0x57,0x9d,0xfe,0xff,0xbf,0xef,0xfe,0xfa,0x2d,0xff,0xff,0x5c,
- 0xdf,0xb7,0xff,0xfb,0xfc,0xdf,0x3f,0xef,0xfb,0x7c,0xd7,0xf7,0xcf,0xfc,0xff,0x3f,
- 0xef,0xf3,0xfc,0xff,0x3f,0xef,0xf3,0xff,0xdf,0xf7,0xfd,0xff,0xf6,0x47,0xff,0xaf,
- 0xff,0xff,0xf1,0xdf,0xff,0xbf,0xfa,0xdd,0xde,0x7f,0x8f,0xb6,0xfd,0xff,0x6d,0xff,
- 0xff,0xfc,0x7f,0x5f,0xd7,0xd5,0xf6,0xff,0xff,0x7b,0xfe,0xff,0xbf,0xff,0xc8,0xbf,
- 0xf5,0x7f,0xdf,0xf7,0xff,0xef,0xff,0xdf,0x7b,0x5b,0xdf,0x51,0xda,0x55,0x3d,0x4f,
- 0x3f,0xff,0xbf,0xef,0xfb,0xfe,0xfb,0xbe,0xef,0xfb,0xea,0x77,0xdd,0xf7,0x7f,0xd9,
- 0x1f,0xfe,0xbf,0xaf,0xef,0xff,0xfb,0xff,0xaf,0x6b,0xfb,0xff,0xff,0xaf,0x6b,0xfb,
- 0xf7,0xfd,0xf7,0x6d,0xfb,0x7e,0xdf,0x37,0xed,0xfb,0x7e,0xdf,0xef,0xfb,0xfe,0xff,
- 0xfe,0xf3,0xff,0xd7,0x35,0xfd,0xf3,0xff,0xff,0xf5,0xc5,0xff,0x6f,0xff,0xf7,0xe1,
- 0x7f,0x7f,0x7e,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0xff,0xff,0xfd,0xff,0x7f,
- 0xdf,0xff,0xe4,0xff,0xb7,0xff,0xff,0xff,0xff,0xb7,0xff,0xff,0xfd,0xfd,0xb7,0xff,
- 0xfb,0x7e,0x7f,0xff,0xdf,0xee,0xfb,0xbe,0xef,0xbb,0xee,0x7b,0xfe,0xe7,0xbb,0xff,
- 0xff,0xff,0xff,0xfd,0xdf,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xdb,
- 0xff,0xff,0xbf,0xff,0xfb,0xfd,0xbf,0x6b,0xd8,0xf6,0x3d,0xef,0xe7,0xff,0xf6,0x7f,
- 0xef,0xe7,0xff,0xff,0xff,0xe0,0xff,0xfb,0xfe,0xfd,0xbf,0xef,0x5b,0xfe,0xf5,0xbe,
- 0xe2,0xfb,0xd6,0xf9,0xbd,0x6f,0x1e,0x2d,0xbe,0x6f,0xdb,0xd6,0xff,0xbf,0x6f,0xdb,
- 0xf6,0xff,0xbf,0xef,0xfb,0xff,0xed,0x6f,0xff,0xff,0xff,0x3f,0xff,0xfb,0xfe,0xff,
- 0xbe,0xff,0xbb,0xfe,0xfd,0xbf,0xef,0xff,0xfb,0x3f,0xcf,0xdb,0xfe,0xff,0xbf,0xcf,
- 0xdf,0xf6,0xff,0xff,0xff,0xff,0xff,0xf7,0xcf,0xff,0xff,0xff,0xbf,0xff,0xfe,0xff,
- 0xbf,0xef,0xff,0xfe,0xff,0xbf,0xef,0xfb,0xff,0xff,0xbe,0xef,0xbb,0xee,0xfb,0xee,
- 0xef,0xbf,0xef,0x7b,0xff,0xff,0xff,0xff,0xff,0xcd,0xff,0xfd,0xff,0xfe,0x7f,0xd3,
- 0xfd,0xfd,0x7f,0x5f,0xd3,0xf5,0xed,0x7f,0xdf,0x9f,0xf9,0x3f,0xff,0xff,0xff,0xef,
- 0xff,0xff,0xff,0xff,0xff,0xfe,0x5f,0xff,0xff,0xff,0xef,0xbf,0xff,0x9f,0xff,0xf9,
- 0xfa,0xff,0xdd,0xa7,0x6a,0xfa,0xbf,0x9f,0xa7,0xe9,0xde,0x7f,0xab,0xfe,0x9f,0xaf,
- 0xeb,0xfa,0xfe,0xdf,0xb7,0xeb,0xfb,0xe9,0xff,0xff,0xff,0xff,0x07,0xfe,0xf7,0xff,
- 0xed,0xff,0xfd,0xff,0x75,0xff,0x7f,0xdf,0xd7,0xfd,0xcd,0x77,0x5f,0xed,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xfe,
- 0xf9,0xfe,0x6f,0x9f,0xe7,0xf8,0xbe,0x2f,0x8f,0xe6,0xf9,0xfe,0x2f,0x0b,0xe6,0xfe,
- 0x7f,0x9f,0xa7,0xf9,0xfe,0x7f,0x9f,0xa7,0xf9,0xfe,0x7f,0x9f,0xe7,0xf9,0xfe,0x9f,
- 0xff,0xc7,0xfb,0xf5,0xff,0xff,0xef,0xf1,0xfd,0xfd,0x7f,0x6f,0xf1,0xfc,0xf9,0xbf,
- 0xf7,0xfe,0xff,0xbf,0xe7,0xf9,0xfe,0xff,0xff,0xef,0xfb,0xf5,0xff,0xff,0xff,0xff,
- 0xfb,0xff,0xfb,0xff,0x7e,0xbf,0xff,0xfd,0xff,0xff,0xbf,0xaf,0xf9,0xff,0xfe,0xdf,
- 0xe7,0xfa,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xbf,0xff,0xfe,0xbf,0xff,0xff,
- 0xff,0xf0,0x7f,0xfb,0x7f,0xff,0xd7,0xff,0xff,0xff,0xdf,0xf7,0xfd,0xfd,0xff,0xdf,
- 0xd7,0xb5,0xfe,0xdf,0xfb,0xfe,0xdf,0xff,0xff,0xfb,0xff,0xdf,0xbf,0xef,0xff,0xff,
- 0xff,0xff,0xff,0x4f,0xff,0xe7,0xfd,0xfa,0x7f,0xdf,0xf7,0xfd,0xfe,0xdf,0xf7,0xe7,
- 0xfd,0xfa,0x76,0x9f,0xef,0x7f,0xdf,0xf3,0xfd,0xff,0x7f,0xdf,0xf3,0xfd,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xe5,0xff,0xff,0xff,0xff,0x2f,0xdf,0xff,0xff,0xef,0x27,0xeb,
- 0xf2,0xfd,0xbf,0xa7,0xf3,0xfd,0xff,0x4f,0xd3,0xf4,0xf5,0x3d,0x4f,0xd3,0xf4,0xf5,
- 0x3d,0x6f,0xdb,0xf7,0xff,0xfb,0x37,0xf3,0xeb,0xfa,0x2e,0xb5,0xaf,0xe8,0xfa,0xfe,
- 0xbf,0x8f,0x6b,0xba,0xbe,0xbf,0xa7,0x3a,0xee,0xbb,0xae,0xeb,0xba,0xee,0x8b,0xa6,
- 0xeb,0x3a,0xbe,0xb3,0xad,0xeb,0xfd,0x27,0xff,0xff,0x7f,0xff,0xff,0xf5,0x3f,0xff,
- 0xee,0xf3,0xfb,0xfe,0xf4,0xff,0xb6,0xff,0xbc,0xdf,0x17,0xcd,0x3f,0xff,0xeb,0x15,
- 0xfd,0xff,0x7d,0xfc,0xff,0x7f,0xef,0xdf,0xee,0x6f,0xbf,0xff,0xff,0x7f,0xff,0xaf,
- 0xed,0xff,0x7f,0xdf,0x7f,0xfb,0x7b,0xbe,0xbf,0x9d,0xfd,0x2e,0x6b,0x9f,0xe7,0xff,
- 0xde,0xdf,0xbf,0xcb,0xbb,0x7f,0xff,0xff,0xff,0xf8,0x9f,0xff,0xff,0xff,0xff,0xef,
- 0xd3,0xfb,0x7e,0xff,0xbf,0xff,0xff,0xee,0xef,0xbb,0xf6,0x57,0xef,0xeb,0xfb,0xff,
- 0xff,0xfd,0xf7,0xff,0xff,0x7f,0x7f,0xdf,0xdf,0xf7,0xfe,0xe1,0xff,0xff,0xff,0x9e,
- 0x9e,0xff,0xe4,0xf8,0x7a,0x9f,0xaf,0xf9,0xde,0x7e,0x9f,0xff,0xf8,0xfe,0xbf,0xaf,
- 0xc8,0xfa,0x9e,0xa5,0xad,0xcb,0xfa,0xed,0xff,0xff,0xbf,0x6f,0xf1,0x6f,0xff,0xf9,
- 0xfd,0xfb,0xff,0xcb,0xff,0xbf,0xf7,0xd5,0xbf,0xff,0xb7,0x57,0xdf,0xff,0xbe,0xeb,
- 0xfa,0xee,0xb9,0xad,0x6b,0xfa,0xde,0xbb,0xaf,0xfd,0x7f,0xff,0xfb,0xfe,0x47,0xff,
- 0xff,0xff,0xfa,0x7f,0xff,0xef,0xff,0x98,0x77,0xab,0xbe,0xfb,0xbf,0xff,0xfb,0xbb,
- 0xbe,0xff,0xfb,0xfe,0xfb,0xff,0xef,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xc9,
- 0x7e,0xff,0xff,0xed,0x7f,0xff,0xdf,0xbf,0xfd,0x7d,0xff,0xe7,0xfc,0xff,0x6e,0xdb,
- 0xf5,0xfe,0x5f,0xff,0xfe,0xfe,0xf7,0xef,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0x6f,
- 0xf8,0xbf,0xfb,0xf7,0xfb,0xed,0xdf,0xd7,0xdd,0xff,0x6f,0x7f,0x37,0xbf,0xef,0x7b,
- 0xd6,0xee,0xe7,0xfd,0xff,0xdf,0xfd,0x7b,0x7f,0xf7,0xff,0xff,0x7d,0x7f,0xef,0xff,
- 0xff,0xf7,0x07,0xfb,0xcf,0xf3,0xd5,0x7e,0x17,0xbf,0x72,0x7c,0xff,0x3d,0xce,0xf1,
- 0xfc,0xef,0x2b,0xd3,0x9c,0xef,0x3f,0xae,0x73,0xfd,0xfd,0x3c,0xfe,0x7f,0xff,0xed,
- 0xff,0xff,0xff,0xfc,0xff,0xdd,0xbf,0x75,0xff,0xfd,0xbf,0xbb,0x7b,0xdf,0x97,0x7d,
- 0xbd,0x63,0xd9,0xeb,0xfa,0x73,0xf7,0xed,0xde,0xee,0x7b,0xbf,0xf7,0xf7,0xdf,0xff,
- 0xfe,0xff,0xff,0xff,0xfe,0x99,0xfe,0xbe,0xee,0x7f,0xfb,0x7d,0xff,0xeb,0xf1,0xde,
- 0x7a,0xae,0xd7,0xfb,0xff,0xfa,0xf5,0xe9,0xeb,0xfe,0x5e,0xff,0xae,0xbe,0xdb,0xed,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xc3,0xbf,0x6b,0x7a,0xfd,0xf6,0xce,0xff,0xff,0xff,
- 0xbf,0xe7,0xf9,0xee,0xb9,0xbf,0xef,0xda,0xf3,0x2b,0xff,0xfb,0xff,0xef,0xfb,0xff,
- 0xfa,0xff,0x9b,0xef,0xff,0xff,0xff,0xe4,0x7f,0xbf,0xff,0xf7,0xff,0xfd,0xff,0xdf,
- 0xff,0xf7,0xf3,0xff,0x7f,0xdf,0xf7,0xfb,0xff,0x76,0xef,0xef,0xff,0x5f,0xff,0xff,
- 0xff,0xff,0x6f,0xff,0xff,0xff,0xff,0xf7,0xfe,0x8f,0x8d,0xd5,0xfd,0x7f,0xff,0xff,
- 0xa7,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xdf,0xff,0xff,0xff,0xff,0xbf,0xff,0xef,
- 0xff,0xbf,0xff,0xdf,0xfb,0xfb,0xbf,0xef,0xfd,0xff,0xe9,0xfe,0xde,0xff,0xbf,0x7f,
- 0xfd,0xff,0x7e,0xff,0xef,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xf9,0xfe,
- 0xff,0xff,0xff,0xfd,0xfe,0xfd,0x9f,0xf7,0xd9,0xfe,0xdc,0xee,0x0f,0xff,0xd4,0xff,
- 0xfc,0xfb,0x3f,0xcf,0xbf,0x3f,0xff,0xff,0xfc,0xf3,0x5f,0xff,0x35,0xf1,0xfc,0xff,
- 0xfe,0xff,0xf3,0xfd,0xff,0xdf,0xdf,0xf1,0xff,0xff,0xfe,0xff,0xfc,0x96,0xbf,0xff,
- 0xaf,0xff,0x3f,0xcb,0xfd,0xf3,0xeb,0xef,0x7c,0xff,0xf9,0xcf,0xff,0xfc,0xfe,0xff,
- 0xbf,0xfe,0x9f,0xfe,0xfc,0xff,0x7f,0xfe,0xf3,0xff,0xff,0xff,0xdf,0xfd,0x78,0xf7,
- 0xff,0xe6,0xb9,0xfd,0x5f,0xcb,0xd4,0xbf,0xfe,0x6b,0x9e,0xd3,0xad,0x6f,0x2e,0xcf,
- 0x9f,0xbf,0xfd,0xfb,0xf2,0xbf,0xef,0xfb,0xd2,0xff,0xa9,0xae,0x6b,0xfb,0xff,0xbf,
- 0x9b,0xff,0xfc,0xd7,0xff,0xff,0xf3,0xde,0x57,0xb7,0xcd,0x7b,0x7e,0x57,0xf7,0xcd,
- 0xff,0xcf,0x97,0xfe,0xff,0x3c,0xd7,0xf7,0xef,0x7f,0x5f,0xdf,0xb5,0xe5,0x7f,0x7f,
- 0xfd,0xfb,0xe7,0xfd,0xff,0x5f,0xfd,0x3e,0xcf,0xd2,0xe9,0xf7,0xbf,0x0f,0x52,0xfc,
- 0xf7,0xef,0x5b,0x3f,0x9f,0x73,0xed,0xff,0xff,0xbe,0x7c,0xdf,0xfe,0xf9,0xff,0xff,
- 0xef,0xff,0xf6,0x6f,0xff,0xff,0xf7,0xfd,0xad,0x5b,0x56,0x7f,0xfd,0xe7,0xf9,0xd6,
- 0x56,0x1d,0xa7,0x6b,0x75,0x9b,0xcf,0xfd,0xdf,0xf7,0xdd,0xc7,0x6b,0xdf,0x77,0x3d,
- 0xff,0x7d,0xdf,0xf6,0xc7,0xff,0xfe,0x6b,0xff,0xff,0xf7,0xff,0xeb,0xfe,0xba,0xbe,
- 0xab,0xeb,0xfa,0xbe,0xbf,0xeb,0x5a,0xe3,0xfd,0xbf,0x7f,0xfe,0xf1,0xad,0x2f,0x5b,
- 0xea,0xfe,0xbf,0xbf,0xff,0xb1,0xff,0xfe,0xe9,0x1f,0xff,0xff,0xff,0xfd,0x7f,0x7f,
- 0xd7,0xf7,0xfd,0x7f,0x7f,0xdf,0xfd,0xb9,0x7e,0xbb,0xd6,0xc7,0xff,0x7c,0xf7,0xa5,
- 0xcd,0xff,0x5f,0xd7,0xf7,0xff,0xf9,0xbf,0xed,0xdf,0xf4,0x7f,0x9f,0xe7,0xfb,0xfc,
- 0x7f,0x3f,0xcf,0xd3,0x7e,0x7d,0x37,0xed,0xf6,0xbd,0xbf,0x6f,0xdf,0xff,0xff,0xff,
- 0x47,0xff,0xfe,0x7f,0xff,0xff,0xff,0xff,0xa5,0xfe,0x79,0xbe,0xa7,0xff,0xfe,0xff,
- 0xaf,0x7f,0xf8,0xf6,0xb9,0x9f,0xe7,0x9b,0xfe,0xff,0xe3,0xfa,0xff,0xbf,0xff,0xff,
- 0xff,0xe7,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xee,0x7f,0xd6,0x25,0x9f,0x6f,0x5b,
- 0xee,0xef,0xbf,0xef,0x5b,0xc6,0x35,0xbf,0x62,0xfb,0x37,0x9f,0xe6,0x59,0x76,0x7f,
- 0xbf,0xef,0xd8,0x7e,0xff,0xbb,0xef,0xfb,0xfe,0xff,0xf8,0x9b,0xff,0xf3,0xbf,0xcf,
- 0xfb,0xfe,0xff,0xfc,0xef,0xbf,0xee,0xfb,0xbf,0xcf,0xbb,0xf6,0xff,0xff,0xfb,0xfd,
- 0xff,0xbf,0xff,0xdb,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xf3,0xff,0xff,0xbf,
- 0xfb,0xfe,0xff,0x7f,0xff,0xf7,0xff,0xff,0x7f,0xef,0xf7,0xfb,0xff,0x7f,0xff,0xfe,
- 0xff,0xff,0xdf,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x5f,0xed,
- 0x3f,0xc7,0xff,0xef,0xff,0xff,0x5e,0xff,0xf5,0xff,0x3e,0x5f,0xd3,0xfd,0xfe,0xc7,
- 0xd1,0xf4,0xfd,0x1f,0xff,0xd7,0xfe,0x6b,0x7e,0x5f,0xff,0xff,0xff,0xfb,0xff,0x2f,
- 0xff,0xab,0xea,0xff,0x7f,0xdf,0xf7,0xea,0x9b,0xbe,0xab,0x23,0x69,0xf2,0x3e,0x9f,
- 0xeb,0xfe,0x7e,0xbd,0xaf,0xfd,0xf2,0x7f,0x8f,0xe7,0x69,0xff,0xff,0xff,0xff,0xff,
- 0xfd,0xff,0xf5,0xed,0x7f,0xfd,0xff,0xff,0xdd,0x7f,0xff,0xf7,0xfd,0xfd,0x7f,0xde,
- 0xf7,0xfb,0x7e,0x74,0xd7,0xf5,0xff,0xff,0x5e,0xfd,0xfd,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xf1,0x3d,0xff,0xbe,0x27,0x9f,0xc7,0xf9,0xfc,0x2f,0x9f,0xa2,0xf9,0xba,0x6e,
- 0x9f,0xc6,0xf1,0xb7,0x0b,0xe2,0xf8,0x9e,0x7e,0x8b,0xe6,0xf9,0xbe,0x7f,0x9f,0xe7,
- 0xf9,0xfe,0x7f,0x97,0xfb,0xd7,0xf5,0xff,0xfa,0xef,0xdf,0xe5,0xff,0x7f,0xdf,0xf7,
- 0xf4,0xff,0x7a,0xcf,0xbd,0xe9,0xbf,0xcf,0xf1,0xfc,0xff,0xbf,0x4f,0xf3,0xf4,0xff,
- 0xff,0xff,0xff,0xff,0xf0,0xff,0xfe,0xff,0xbf,0xff,0xff,0xfa,0xfe,0xbf,0xbf,0xaf,
- 0xfb,0xeb,0x9e,0xff,0xed,0xfe,0xbf,0xaf,0xed,0xff,0xfe,0xfa,0xf7,0xeb,0xfe,0xfe,
- 0xbf,0xff,0xff,0xff,0xff,0xfd,0xdf,0xff,0x5f,0xd7,0xf7,0xfd,0xbf,0xfe,0xff,0xff,
- 0xdf,0x7f,0xff,0xd7,0x7d,0xff,0xfb,0xb7,0xf4,0xff,0xff,0xdf,0xf3,0xff,0xff,0x3f,
- 0xcf,0xfb,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xeb,0x7a,0x5f,0xbf,0xf7,0xff,0xdf,
- 0xdf,0xf3,0xbd,0xff,0x3e,0x7f,0xf7,0xf7,0xfb,0xfe,0x9f,0xf7,0xfd,0xfb,0x6f,0xdf,
- 0xbd,0xf9,0xff,0x7f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xf7,0xff,0xfb,0xdb,0xff,0xf7,
- 0xff,0xcf,0xda,0xb7,0xf5,0xab,0xcf,0xfb,0xd7,0xff,0x77,0xd3,0xff,0xf5,0x3d,0xff,
- 0xfe,0xf2,0xff,0xff,0xfe,0xff,0xbf,0xfc,0xbf,0xfe,0x0e,0xfa,0xfa,0xfe,0xad,0xab,
- 0xe1,0xfa,0x7e,0xbb,0xaa,0xeb,0xba,0xfe,0x1f,0x22,0xe9,0x5e,0x3d,0xab,0xeb,0xfa,
- 0xde,0xbf,0xac,0xeb,0xf8,0xde,0xbf,0xab,0xeb,0xfa,0xdf,0x71,0xbe,0xff,0xdf,0xf7,
- 0x7c,0x71,0xfc,0xdb,0xfd,0x7f,0xff,0x64,0xff,0xdf,0x55,0xff,0xfe,0xfb,0xc5,0xff,
- 0x7b,0xff,0x7f,0xf7,0xf9,0x7c,0xff,0x3f,0xff,0xff,0xfb,0xfb,0xfb,0x9f,0xff,0xfa,
- 0x7f,0xff,0xf5,0xfd,0x77,0xf7,0xfd,0xf7,0xe6,0xff,0x7f,0xfb,0xf7,0xeb,0x73,0x97,
- 0xbf,0xed,0xee,0xff,0xff,0x6b,0xae,0xf7,0xcf,0xdf,0x6f,0xff,0xff,0x7e,0x67,0xff,
- 0xff,0xff,0xff,0xf6,0xbf,0xb7,0xfe,0xff,0xfe,0xff,0xb7,0xef,0xef,0xf7,0xfb,0xdf,
- 0xfa,0xfa,0xff,0xbf,0xfb,0xbf,0xbe,0xfb,0xb7,0xef,0xbf,0xff,0xff,0xbe,0xef,0x78,
- 0x5f,0xdf,0xd2,0x5f,0xfb,0xeb,0xdb,0xd5,0xbd,0xbf,0xf9,0xfa,0xbe,0x9e,0xeb,0xe9,
- 0xef,0xff,0xaf,0xfb,0xfe,0xd4,0x3d,0x6f,0x61,0xbf,0xdf,0xde,0xff,0xff,0xff,0xf7,
- 0xfe,0x5f,0xef,0xff,0x7f,0xff,0xff,0x7f,0xdf,0xef,0xfe,0xf7,0xdb,0xdf,0xfb,0xff,
- 0xff,0x7f,0xfe,0xde,0xc7,0xff,0xff,0xdf,0xf7,0xde,0xfd,0xff,0xff,0xff,0xff,0xff,
- 0xf5,0xfd,0xa1,0xff,0xf3,0xbc,0x17,0x9f,0xbe,0xff,0xfe,0xef,0xfb,0x8e,0xeb,0x7a,
- 0xbe,0xfb,0xbf,0xef,0x9e,0xff,0xb5,0xee,0xef,0xeb,0xbf,0xef,0xff,0xff,0xef,0xff,
- 0xff,0xff,0xff,0xfe,0x6f,0xfd,0xff,0xff,0xff,0xf6,0xff,0xef,0xed,0x5f,0xbe,0xfc,
- 0xbe,0x4f,0xd3,0xdf,0x7d,0xef,0xbf,0xff,0xff,0xef,0xfb,0x97,0xf7,0xf7,0x9f,0xfd,
- 0x93,0xdf,0xff,0xfe,0xfe,0xef,0xff,0xef,0xff,0xdf,0x56,0xed,0xff,0xfd,0x7b,0xdf,
- 0xed,0xeb,0x5d,0xff,0xdd,0xff,0x9f,0xff,0xd7,0xef,0xfd,0xff,0xff,0x7b,0x9f,0xff,
- 0xff,0xbf,0xff,0xff,0xff,0xfd,0xe1,0xff,0xdf,0xcf,0xbe,0xf7,0x8d,0xeb,0x48,0xfb,
- 0x3f,0xcf,0xf3,0x9c,0xfd,0xf7,0xcc,0x65,0xfa,0xb7,0xff,0xff,0xf4,0xd7,0x4f,0xaf,
- 0x63,0xfa,0xfe,0x3f,0xff,0xf3,0xff,0xfd,0xbf,0xef,0xff,0xff,0xfe,0xfd,0xdf,0x7f,
- 0xdf,0xb7,0xfd,0xfd,0x7e,0xf7,0xdf,0xbd,0xda,0xbf,0xfb,0xf7,0xdf,0xff,0x77,0x7f,
- 0xfd,0xff,0x77,0xef,0xf7,0x7f,0xff,0x7f,0xff,0x15,0x7f,0xb7,0x75,0x8b,0xfe,0x9f,
- 0xbf,0x78,0xfe,0xba,0x1f,0xe7,0xf1,0xbf,0x3d,0x9d,0xfd,0xfb,0x7e,0xdc,0xbf,0x6b,
- 0xdf,0x77,0xfd,0xaf,0x7f,0xf6,0x3f,0xff,0xe9,0xff,0xea,0xff,0xfd,0xdd,0xbf,0xfe,
- 0xfb,0xff,0xff,0xf3,0xef,0xf9,0xef,0xdf,0xff,0x8f,0xfb,0xff,0x7e,0xaf,0x73,0xff,
- 0xff,0xf7,0x2b,0xff,0xff,0xff,0xff,0xee,0xff,0x77,0xff,0xf8,0x1f,0xee,0xff,0xef,
- 0xff,0xdd,0x7f,0xff,0xdd,0xbd,0xbe,0xf7,0x7b,0xff,0x7f,0xec,0xff,0xfe,0xe7,0xde,
- 0xf7,0xfb,0xff,0xf7,0xfb,0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,0xda,0xff,0xfc,
- 0xff,0xff,0xd7,0xfc,0x7c,0xcf,0xff,0xcf,0xff,0x5f,0xd3,0x3f,0xcf,0xbf,0xff,0x3f,
- 0xcc,0xf7,0xfc,0x9f,0x3f,0xd7,0xf6,0x7f,0xff,0xfe,0xff,0xff,0xff,0xff,0xf6,0x6b,
- 0xe7,0x4f,0xff,0xf7,0xff,0xfd,0xf3,0xf8,0xff,0xff,0xe7,0xf9,0x3f,0xfc,0xff,0xff,
- 0xef,0xda,0xab,0x8e,0xff,0xfb,0xff,0xff,0x8f,0xff,0x3f,0xdf,0xff,0xff,0xff,0xdf,
- 0x4f,0x79,0xff,0x3f,0x1f,0xff,0xf7,0xfb,0x5f,0xcb,0xb5,0xb9,0xbf,0xea,0xcf,0xf5,
- 0xff,0xeb,0x7a,0xff,0xbf,0xe9,0xfe,0xcf,0xff,0xff,0xff,0xfb,0xfb,0xff,0xff,0xff,
- 0xfb,0xd1,0xbf,0xff,0xcf,0xf3,0xff,0xff,0xbf,0xe7,0xf3,0x7e,0xdf,0xb7,0xec,0xf9,
- 0xfe,0x7f,0x3d,0x7f,0x5f,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xfd,0xff,0x7f,0xff,
- 0xff,0xcf,0xd9,0x17,0xed,0xfd,0x7f,0x5f,0xd7,0xfb,0xdb,0x6c,0xdd,0xc3,0xdb,0xb6,
- 0x26,0xdd,0xfb,0x6d,0xff,0xfd,0xd6,0xf5,0xbf,0xf7,0xff,0xfa,0xff,0xf7,0xef,0xcb,
- 0xff,0xff,0xf7,0xfe,0xc6,0xfe,0xbd,0x6d,0x7b,0xdf,0xf5,0x9f,0xe5,0x6b,0xba,0x75,
- 0x9d,0xc7,0x6b,0xdf,0xce,0xbf,0x7d,0xb6,0xf7,0xbd,0xff,0xff,0xda,0x57,0xff,0xf7,
- 0x71,0x7f,0xff,0xff,0xff,0x74,0xdf,0xff,0xdf,0xfc,0x7e,0x7f,0xff,0xdb,0xe7,0xaf,
- 0xea,0x9a,0xba,0xb7,0xef,0xff,0xfe,0xb9,0xaf,0x5b,0xce,0xdf,0xf7,0xff,0x4b,0x57,
- 0x9f,0xbe,0xaf,0xff,0xff,0xff,0xfb,0xdf,0xff,0xff,0xff,0xbf,0xfd,0xff,0xff,0xf7,
- 0xf7,0xfd,0xfa,0x7f,0xd3,0xfe,0xff,0xbf,0x97,0xb5,0xcf,0xf8,0xfc,0xfb,0xf7,0xe9,
- 0x7b,0xfc,0xdf,0xf5,0xff,0xff,0xf7,0xff,0xe9,0xfe,0xff,0xff,0xe9,0xff,0xfd,0xff,
- 0xbf,0x5f,0xdf,0xf4,0xdd,0x7f,0x67,0xdb,0x76,0x7f,0xe9,0xdb,0x7e,0xdf,0xff,0xe7,
- 0xfb,0x7f,0xbd,0x37,0xff,0xf7,0xff,0xfd,0x7f,0xe4,0x5f,0xfb,0xfb,0xfe,0x7f,0xff,
- 0x7f,0xfe,0xe6,0xfd,0xfe,0x6f,0x9b,0xff,0xfb,0xbf,0x67,0xfe,0xff,0xbf,0xef,0xff,
- 0xfe,0x7f,0xbf,0xff,0x9f,0xff,0xfc,0xff,0xff,0x8f,0xfa,0xc7,0xff,0x6f,0x1b,0xd6,
- 0xfd,0xbf,0xef,0xf8,0xb6,0x3d,0x81,0x62,0xf9,0xf6,0x71,0x8f,0xfb,0xbe,0x6f,0xbb,
- 0xef,0xdb,0xfe,0xef,0xbf,0xe3,0xfb,0x7e,0xff,0xbf,0xe7,0xff,0xb9,0xbf,0x6f,0xfb,
- 0xfe,0xfd,0xfe,0xff,0xff,0xec,0xfb,0x3e,0xef,0xbf,0xfc,0xff,0xfe,0xfb,0xff,0xff,
- 0xff,0xff,0xf3,0xfe,0xff,0xff,0xff,0xbb,0xff,0xf3,0xff,0xff,0x3f,0xf9,0xbf,0xfb,
- 0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xbf,0xef,0xf7,0xff,0xff,0xbf,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfe,0xff,0x7f,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xef,0xff,0xc7,
- 0xff,0xd7,0xb5,0xfd,0x7f,0xdf,0xbb,0xf4,0xff,0x3f,0xc7,0xf3,0xf4,0xfd,0x1f,0x4f,
- 0xef,0xff,0x9b,0xff,0xbf,0xff,0x6b,0xff,0xfe,0xd1,0xfd,0xfd,0x7f,0xff,0xfb,0xff,
- 0xe2,0xff,0xfa,0x7e,0x9f,0xa7,0x7c,0xbf,0xf6,0x8f,0x23,0xe8,0xda,0x3e,0xbd,0xaf,
- 0x6a,0xff,0xdf,0xb7,0xdd,0xff,0x77,0xdf,0xe7,0xff,0xfa,0x3e,0xdd,0xaa,0xff,0xff,
- 0xbf,0xff,0x9f,0xff,0xdf,0xd7,0xe5,0xff,0xff,0xfe,0xd7,0xfd,0xff,0x5f,0xdf,0xf7,
- 0xe5,0xff,0x7f,0xb7,0xef,0x5f,0x7b,0xff,0xbb,0xff,0xef,0xff,0xf6,0xb7,0xf5,0xff,
- 0xff,0xff,0xff,0x93,0xff,0xeb,0xe3,0xe8,0xbe,0x7f,0x9f,0xe2,0xf8,0xbe,0x3f,0x0f,
- 0xe6,0xf0,0x9e,0x2f,0x9e,0xf9,0xfe,0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,0xe3,0xf8,
- 0xbe,0x7f,0x9f,0xe7,0xf2,0x7f,0xfd,0x7f,0x45,0xf7,0xff,0xff,0xbf,0xdf,0xff,0xfd,
- 0xeb,0x7f,0x46,0x91,0xf5,0xff,0xe7,0xff,0xff,0xff,0x1f,0x6f,0xfb,0xfe,0xfd,0x7f,
- 0xcf,0xf7,0xff,0xff,0x9f,0xfe,0xaf,0xff,0xaf,0xeb,0xea,0xff,0xff,0xf7,0xfb,0xff,
- 0xff,0xbf,0xef,0xeb,0xfa,0xfe,0xbf,0xff,0xff,0xff,0xff,0xef,0xfb,0xff,0x7b,0xdf,
- 0xaf,0xed,0xfe,0xff,0xff,0xff,0xff,0xf1,0xfe,0xfd,0xfd,0x7f,0xdf,0xff,0xf7,0xfd,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0x5f,0xff,0xfb,0x7f,0xff,0xff,0xff,0xff,0xbf,0xff,
- 0xff,0xff,0xff,0x7f,0xdf,0xff,0xff,0xff,0xf9,0x3f,0xfe,0x9f,0xa7,0xeb,0xff,0xde,
- 0xdf,0xad,0xff,0x7f,0xdf,0xf7,0xf7,0xf9,0xff,0xdf,0xe7,0xff,0xff,0x7f,0xdf,0xf7,
- 0xfd,0xbf,0x7f,0xf7,0xb7,0xfb,0x7f,0xff,0xf7,0xff,0x93,0xff,0xdb,0xf7,0x6d,0x9f,
- 0x2f,0xd1,0xdf,0xff,0x3f,0x27,0xdb,0xfe,0x3f,0xbf,0x6f,0xff,0xbf,0xbf,0xaf,0xeb,
- 0xff,0xfe,0xbf,0xff,0xff,0xff,0xfd,0xbf,0xff,0xfd,0xff,0xe2,0xff,0xfd,0x85,0xe9,
- 0xfa,0xee,0xbf,0xad,0xe8,0xfa,0xee,0x3f,0xad,0xe8,0xfa,0xb6,0xbd,0xeb,0xfa,0xbe,
- 0x1f,0xaf,0xe9,0xf8,0xbe,0xbf,0xab,0xeb,0x5a,0xbe,0xbf,0xaf,0xf4,0x9f,0xfe,0x5f,
- 0xef,0xf3,0xbf,0xff,0xbf,0xfd,0xfc,0xff,0xef,0x0d,0xd3,0xf4,0xbd,0xf6,0xff,0xf7,
- 0xdf,0xef,0xff,0xb3,0x7f,0xbf,0xf7,0xff,0xff,0xf7,0xff,0xff,0xc7,0xff,0x99,0x7d,
- 0x7b,0xff,0x3d,0xfb,0x7a,0xdf,0xaf,0x7c,0xfe,0xf9,0xde,0xfc,0xfd,0xff,0xf7,0x7f,
- 0xf7,0xeb,0xf7,0xdf,0xbd,0xad,0xff,0x7f,0xbf,0xff,0xdf,0xff,0xff,0xef,0xff,0xe6,
- 0x67,0xff,0xff,0xff,0xff,0x5f,0x7f,0xca,0xfd,0xb2,0xff,0x6d,0x7f,0xff,0x8e,0xef,
- 0xfd,0xff,0xff,0xff,0xfb,0xfa,0xbf,0xff,0xff,0xff,0xff,0xfe,0xff,0xef,0xfa,0xff,
- 0xff,0x45,0xfc,0xff,0x2f,0xda,0xfe,0xbf,0x1f,0xeb,0xfe,0xfd,0xb7,0xaf,0xfb,0xfa,
- 0xe7,0xbf,0xfd,0xf0,0xe4,0xad,0x83,0xef,0xe8,0xff,0xff,0xfd,0xff,0xfe,0xff,0xff,
- 0xff,0x7f,0xcd,0xff,0xff,0x7b,0xbf,0xec,0x7b,0xbf,0xff,0xbf,0xbf,0xdf,0xfe,0xff,
- 0xff,0x9f,0xff,0xef,0xff,0x7f,0xe7,0xd7,0xef,0x7f,0x7f,0xff,0xdf,0xff,0xf7,0x77,
- 0xff,0xff,0xff,0xf9,0x9f,0xff,0xbb,0xce,0xe3,0xfb,0xaf,0xef,0xbe,0xff,0xef,0xfe,
- 0x3f,0x8e,0xff,0xfb,0xee,0xfe,0xff,0x7e,0xff,0xaf,0xef,0xff,0xbe,0xef,0xfb,0xff,
- 0xff,0xff,0xdf,0x3f,0xff,0x15,0xfb,0xec,0x36,0xfd,0xee,0x7f,0xdf,0xfe,0xff,0xff,
- 0xfb,0xff,0xd7,0xfd,0xef,0xef,0xff,0x7f,0xfd,0x6d,0xdb,0xf6,0xef,0xbf,0x6f,0xff,
- 0xff,0xff,0xff,0xff,0x57,0xef,0xe0,0xff,0xdf,0xbe,0xf5,0x6e,0xef,0x76,0xff,0xf7,
- 0xfb,0xff,0xff,0xdf,0xbd,0xbb,0xff,0x8b,0xff,0xfd,0x6d,0xf6,0x76,0xde,0xfd,0xed,
- 0x5f,0xf7,0xff,0xfb,0xff,0xff,0xdf,0xfc,0x5f,0xf7,0x23,0x8f,0xf3,0x3b,0xfd,0xff,
- 0xfd,0xd3,0xff,0xff,0x5f,0x8d,0xf1,0xbe,0xff,0x4e,0xe1,0xd9,0xdd,0x2f,0xcf,0xfb,
- 0xf4,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0x7f,0x93,0xb7,0xf7,0xfd,0xff,0x7f,0xff,
- 0xff,0xdf,0xff,0x77,0xfe,0xff,0xba,0xfb,0xba,0x6f,0xe9,0xbf,0x7f,0xbf,0xf7,0xfd,
- 0xff,0x7d,0xdf,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xfa,0x77,0xfa,0x3f,0x1e,0xe3,
- 0x25,0xd5,0x76,0xfd,0xe7,0xed,0xfb,0xbf,0xd7,0xff,0xfe,0xdf,0xdf,0xb7,0xfd,0x38,
- 0x76,0x9f,0xff,0xf9,0xfb,0xff,0xff,0x6f,0xff,0xfb,0xff,0xff,0xc6,0xff,0xf7,0xbf,
- 0xb6,0xff,0xff,0xef,0xff,0x7e,0x7e,0x33,0xae,0xfb,0xff,0xff,0xa7,0x61,0xfe,0xff,
- 0xff,0xa7,0xf3,0xfe,0xff,0xb7,0xaf,0xff,0xff,0xff,0xef,0xff,0x7f,0x89,0xff,0xf7,
- 0xff,0xf7,0x5f,0xfe,0xfd,0x7f,0xff,0x5f,0xfd,0xff,0xfd,0x5f,0xff,0xef,0xff,0xff,
- 0x3f,0xdf,0xef,0xff,0x7f,0xbf,0xce,0xff,0xff,0xff,0xff,0xff,0x7f,0xdf,0xe8,0x0f,
- 0xf2,0xff,0xbf,0x5f,0xfb,0x7e,0xdf,0xbf,0xff,0x57,0x3e,0xdf,0xbd,0xfd,0xd3,0x3f,
- 0xf5,0x5c,0xff,0x3e,0xf7,0xfd,0x5c,0xfb,0xfe,0xff,0xff,0xef,0xfb,0xfe,0xdf,0xfc,
- 0xe6,0xbe,0x97,0xf3,0xe5,0xff,0x1b,0xcf,0xf7,0xff,0xfa,0x7f,0xcf,0xf7,0xfe,0xf9,
- 0x74,0xff,0xab,0xdf,0xaf,0xce,0xf3,0xcf,0xff,0x3f,0xdf,0xff,0xfc,0xff,0x7f,0xc7,
- 0xfd,0x7c,0xf7,0xfb,0xfe,0xbc,0xaf,0x2b,0xfa,0xf2,0xdf,0xfe,0x7a,0xcf,0xc6,0x9f,
- 0xed,0xed,0xff,0xff,0xff,0xfb,0xfa,0xfe,0xbf,0xfb,0xeb,0xca,0x7f,0xff,0xaf,0xef,
- 0xca,0x7f,0xbe,0x9b,0xff,0x5c,0xd7,0x35,0xcd,0x7f,0x7e,0x55,0x9f,0xcf,0x7b,0xfe,
- 0xd5,0xff,0xfc,0xff,0xef,0xfb,0xff,0xff,0x5e,0x57,0xff,0xed,0x7b,0x57,0xff,0xf7,
- 0xfd,0xf3,0x57,0xfd,0x93,0xff,0xed,0x32,0x4c,0x93,0x27,0xcb,0xfb,0x6d,0xff,0xff,
- 0x8b,0xa2,0x5e,0xbf,0x33,0xff,0x7f,0xdf,0xf6,0xcb,0xf7,0xdf,0xde,0xa5,0x0f,0xff,
- 0xfe,0xb7,0xbf,0xeb,0xff,0xf0,0x6f,0xfd,0xfe,0x5f,0xdd,0xec,0xf5,0x5a,0x7e,0xbf,
- 0xe7,0x51,0xdf,0x4f,0xfd,0x87,0x7f,0xf7,0xff,0xfe,0x79,0x58,0x7b,0xff,0xf5,0xf9,
- 0xff,0xff,0xde,0x67,0x7d,0x76,0xf6,0x27,0xff,0xbf,0xab,0xfa,0xda,0xb7,0xae,0x6f,
- 0xd6,0xfb,0xbf,0xbf,0x6a,0xfa,0xe6,0xfd,0xff,0xff,0xf5,0xde,0xad,0xeb,0xff,0xfe,
- 0xbe,0xad,0xff,0xfa,0xde,0xff,0xef,0x5f,0xb9,0xff,0xf7,0x69,0x5f,0x46,0xd3,0x35,
- 0xfd,0x3b,0x7f,0xf7,0xfd,0xe5,0x6a,0xff,0xdb,0xdb,0xb3,0xee,0xfb,0xb5,0xfd,0x7f,
- 0xef,0xd1,0xf5,0xff,0xff,0x7f,0xdf,0xf5,0xcf,0xff,0xbf,0xff,0xd7,0xfc,0xdd,0x2f,
- 0x6d,0xfb,0x76,0x9f,0x1f,0xed,0xf8,0xfd,0xff,0xff,0x6d,0xf7,0xfd,0x8f,0x7b,0xf3,
- 0xfd,0xff,0xb7,0x4f,0xf3,0xff,0xff,0x37,0xff,0xfb,0x7f,0xf7,0xfe,0x79,0xff,0xaf,
- 0x9e,0xff,0xff,0xbe,0x6f,0xdf,0xfe,0xff,0xfe,0x7f,0xff,0xfe,0xef,0xe7,0xff,0xfe,
- 0xfc,0xaf,0xff,0xfb,0xe6,0xbd,0xaf,0xff,0xef,0xff,0xfd,0xff,0xf8,0x5f,0xfe,0x75,
- 0xbb,0x65,0xd9,0xd6,0xef,0x99,0x6f,0xdb,0xb6,0xff,0x8f,0x6f,0xf9,0xbf,0x9f,0xe7,
- 0xfb,0x16,0xe5,0xbf,0x6f,0x99,0xb6,0xef,0xbf,0xef,0xfb,0xfe,0xff,0xf8,0x5b,0xff,
- 0xfb,0xff,0x6f,0xb3,0xff,0xff,0xfe,0xef,0x9b,0xfd,0xff,0xfe,0x7f,0xff,0xff,0xff,
- 0xff,0xfb,0xff,0xf3,0xbf,0x7f,0xf7,0xed,0xfb,0xff,0xff,0x3f,0xff,0xf3,0xfd,0xab,
- 0xff,0xfe,0xff,0xfb,0xed,0xff,0xff,0xff,0xef,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xfe,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xfe,0x5f,0xbf,0x1f,0xcf,0xf1,0xf4,0xf9,0xff,0x47,0xd7,0xf7,0xff,0xff,0xe7,0xdf,
- 0xf4,0x7e,0x47,0xd1,0xf4,0x7d,0x7e,0x5f,0xf5,0xf4,0x7d,0x7f,0xff,0xd7,0xff,0xfb,
- 0xff,0xfa,0xaf,0xfd,0xe3,0x7a,0xfe,0xbe,0xbf,0xb7,0x6a,0xbe,0xad,0x9f,0x77,0xcc,
- 0xfe,0x76,0xbf,0xeb,0xfa,0xf4,0xbf,0xa2,0xec,0xf7,0xfe,0xa9,0xaa,0xff,0xda,0xbf,
- 0xff,0xf2,0xff,0xfd,0xff,0xfd,0xfd,0x7b,0xfd,0xd7,0xff,0xfd,0x5b,0xde,0xff,0xfd,
- 0xeb,0xfb,0x7f,0xd7,0xb9,0x7f,0x55,0xd5,0x75,0xfd,0x7f,0xcd,0xd7,0x75,0xff,0xff,
- 0x5f,0xff,0xbf,0xff,0xf8,0xbf,0xff,0x9e,0x2f,0x9d,0xe2,0xf8,0xfe,0x2f,0x9b,0xe7,
- 0xf8,0xfe,0x37,0x9b,0xe2,0x69,0xa7,0x8b,0xa2,0xf8,0xbe,0x3f,0x8f,0xe2,0x78,0xfe,
- 0x7f,0x8b,0xe7,0xf9,0xfe,0x7f,0xe7,0xff,0xf1,0xfc,0xff,0x1f,0xdf,0xf7,0xf5,0xfd,
- 0x7f,0xcf,0xd3,0xfe,0xfd,0x3f,0xcd,0xfc,0xff,0x77,0x4f,0xd7,0xf5,0xff,0xff,0x5f,
- 0xd7,0xff,0xfd,0x7f,0xff,0xff,0xff,0xe0,0xff,0xfe,0xff,0xbf,0xef,0xeb,0xfe,0xfa,
- 0xbf,0xef,0xe9,0xfa,0x7e,0xdf,0xa7,0xf9,0xef,0xbf,0xef,0xab,0xfa,0xfe,0xff,0xff,
- 0xeb,0xfa,0xff,0xff,0xaf,0xbf,0xff,0xff,0xfd,0x1f,0xff,0xdf,0xf3,0xff,0xfd,0x7f,
- 0xdf,0xf7,0xfd,0xff,0x7f,0xdf,0xff,0xf5,0xff,0xff,0xbb,0xff,0xff,0x3f,0x5f,0xd7,
- 0xff,0xff,0x7f,0xdf,0xff,0xff,0xff,0xff,0x5f,0xff,0x93,0xff,0xfb,0x7a,0x5f,0xb7,
- 0xaf,0xff,0xbb,0xdf,0xb7,0xa7,0xf9,0xff,0xde,0x9f,0xf6,0xff,0x7f,0xdb,0xa7,0xfb,
- 0x7b,0xdf,0xff,0xad,0xef,0x7f,0xff,0xf3,0xff,0xeb,0x7f,0xf8,0x3f,0xbe,0xbf,0xef,
- 0xfd,0xf7,0x7d,0xbf,0x6e,0xff,0xf2,0xfd,0x3f,0x6f,0xfb,0xfc,0xff,0xf7,0xff,0xf4,
- 0xfd,0x3f,0xef,0xff,0xf2,0xec,0xbf,0xff,0xd3,0xf4,0xfd,0x3d,0xfe,0x2f,0xff,0xfa,
- 0x7e,0xbf,0xaf,0x6b,0xfa,0x7e,0x8f,0xae,0xeb,0x5a,0xb6,0xaf,0xa7,0xeb,0x5e,0xbf,
- 0xad,0x6b,0xba,0xbe,0x3f,0xaa,0xe1,0x3a,0xde,0xbd,0xa7,0xeb,0xd2,0xff,0x61,0xff,
- 0xff,0xd9,0x7b,0xff,0xff,0x73,0xfc,0x3f,0xf7,0xff,0x7f,0x7d,0x37,0x7f,0xb3,0x7f,
- 0xfb,0xdd,0xf1,0xff,0x7d,0xff,0xfc,0xfd,0xdc,0xff,0xff,0xff,0x6f,0xbc,0xff,0xfa,
- 0x17,0xf7,0xfe,0xfe,0x7f,0xf7,0xf9,0xf1,0xf6,0xff,0xf7,0xdf,0xfa,0xfc,0xdc,0xbb,
- 0xeb,0xff,0xfb,0xbc,0xbd,0xdb,0xfc,0xff,0xf7,0xdf,0xff,0xff,0xdf,0xff,0xf7,0xed,
- 0xfe,0xb7,0xfb,0xfa,0xfd,0xff,0xfa,0xfb,0xbd,0xf3,0xff,0xef,0xfe,0xfc,0xe3,0xff,
- 0xff,0xdf,0x9e,0xbf,0xf7,0xfd,0xff,0xff,0xff,0xef,0xff,0xcf,0xff,0xff,0xff,0xff,
- 0xcf,0xff,0xe4,0x5f,0x9f,0xbe,0x3f,0xef,0xf9,0xf8,0xff,0xff,0xf7,0x63,0xfe,0xde,
- 0xaf,0xef,0x65,0xff,0x9f,0xaf,0x69,0xfb,0xff,0xf3,0xe3,0xeb,0xda,0xf7,0xff,0x8d,
- 0xff,0xfb,0x7f,0xff,0x5f,0xff,0xff,0xef,0xff,0xd6,0xde,0xff,0xbf,0xdf,0xfe,0xfd,
- 0x7f,0x57,0xf7,0xff,0xe7,0xff,0xdd,0xf7,0xbe,0xdf,0xff,0x7f,0xff,0xbf,0x6e,0xff,
- 0xeb,0x7f,0xff,0xdf,0xfe,0xb9,0xff,0xff,0xbf,0xfa,0xbf,0xff,0xed,0xbf,0xef,0xd6,
- 0xfe,0xff,0x7e,0xe7,0xba,0xff,0xeb,0xde,0xfb,0x3f,0xff,0xbf,0xf6,0x1f,0xbd,0xfb,
- 0x7f,0x7f,0xff,0xff,0xff,0xff,0xfa,0x7f,0xfb,0xff,0x6e,0xef,0xf5,0xfd,0x7f,0xfb,
- 0xff,0xbe,0x7d,0xf7,0x2f,0xdf,0xfe,0xfc,0xff,0xbb,0xfe,0xff,0xbf,0xff,0xdf,0xff,
- 0xfc,0xff,0xff,0x7b,0xff,0xdf,0xbf,0xfe,0xaf,0xfb,0xfd,0x7b,0xbf,0xff,0xf7,0xff,
- 0x5f,0xff,0x9b,0xff,0xbb,0xef,0xfb,0x5f,0xef,0xbe,0xf7,0xff,0xf7,0x7d,0x7f,0xde,
- 0xdd,0xf7,0xbf,0xbf,0xff,0xff,0xfd,0xff,0xed,0xd5,0x7f,0xfb,0x5c,0xfa,0x2e,0xbf,
- 0xef,0xdc,0x9e,0x3f,0xcf,0xa3,0xf3,0xb6,0xbe,0xcf,0x74,0xf5,0x2f,0xff,0xf1,0x58,
- 0xfe,0xff,0x7f,0xd3,0xff,0xef,0xff,0xff,0xff,0xff,0xfe,0xaf,0xfb,0x7f,0x5f,0xf7,
- 0xff,0xbf,0xff,0xdf,0xf7,0x33,0x7f,0x79,0xff,0xfb,0xeb,0x7e,0xdb,0xfd,0xff,0xff,
- 0x7f,0xdf,0xff,0xff,0xfb,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x13,0x7a,0xf7,0xba,
- 0xfe,0x67,0xde,0x7e,0xfb,0xde,0xff,0xdd,0xe7,0xef,0xcd,0x37,0xfe,0xf8,0xde,0xfe,
- 0xff,0xd3,0xeb,0xff,0xf7,0xff,0xeb,0xff,0xf7,0xff,0xfb,0xff,0xff,0xee,0xef,0xff,
- 0x7f,0xf7,0xef,0xff,0x3a,0xbf,0xfd,0xee,0xf7,0x7e,0xee,0xbf,0xfd,0xff,0x7f,0x77,
- 0x2e,0xff,0xff,0xde,0xbf,0xab,0xfe,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xfb,0x1f,
- 0xff,0x7f,0xff,0xf3,0xfd,0xff,0xff,0xff,0xfb,0xff,0xff,0x5f,0xff,0xff,0xff,0xff,
- 0xff,0xef,0x6f,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0x7f,0xff,0xfb,0xff,
- 0x80,0xff,0x5c,0xcb,0xdf,0xf7,0xb3,0xfc,0xfb,0xde,0xfd,0x33,0x2f,0xff,0xff,0xdf,
- 0xb6,0x7f,0x93,0xcc,0xf1,0xec,0xfb,0xfe,0xdf,0xbf,0xef,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xcf,0x6b,0xe7,0xfa,0x1a,0x8f,0xf7,0x7f,0xdf,0x7b,0xdf,0x3f,0xbd,0xff,0xff,
- 0xdf,0xf7,0xeb,0xff,0xff,0xaf,0xbd,0xbf,0xdf,0xdf,0xf7,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xd6,0x4f,0x7f,0xa9,0x5f,0xd2,0xf4,0xfd,0x7f,0x4f,0x9a,0xfe,0xed,0x3f,
- 0x5f,0x9b,0xde,0xff,0xfe,0x7f,0x3e,0xaf,0xbf,0xef,0x1f,0xfe,0xf9,0xef,0xff,0xff,
- 0xff,0xff,0xff,0xfb,0xcd,0xbf,0x95,0xcd,0xff,0x5e,0xdf,0xff,0xe5,0x73,0x5f,0xff,
- 0xf5,0xef,0xff,0x7f,0xdf,0xff,0xff,0xbe,0x57,0xf7,0xff,0x79,0xff,0xdf,0x97,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xdb,0x3f,0xff,0xff,0xac,0xdd,0xe3,0x7d,0xfd,0x35,0x4f,
- 0xfb,0xfe,0x92,0x2f,0xdb,0xfb,0xff,0xff,0xfc,0xff,0xfe,0xff,0xb6,0xcb,0xfb,0xfe,
- 0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0x16,0xff,0xfd,0xf5,0x7f,0xfd,0x6f,0x75,0xe7,
- 0x59,0xff,0xf7,0xd5,0xfd,0x61,0xdf,0x77,0xfe,0xff,0xff,0xf7,0xdd,0xfd,0xe9,0x5f,
- 0x77,0xdc,0xaf,0xff,0xff,0xff,0xff,0xff,0x70,0x7f,0xfa,0xde,0xbf,0xfd,0xef,0xdf,
- 0xd2,0xfd,0x2f,0xef,0xfa,0xfe,0xfd,0xaf,0xef,0xff,0xdf,0xfd,0x6b,0xfb,0xfe,0xff,
- 0xaf,0xef,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0x13,0xff,0x5f,0xd5,0xfb,0xff,
- 0xb8,0xfc,0x51,0xa5,0xff,0xff,0x47,0xf7,0x15,0xcd,0xfa,0xfe,0xfe,0xe1,0x7f,0x7f,
- 0xf3,0xf5,0xfd,0xff,0x5f,0xff,0xff,0xff,0xff,0xff,0xff,0x9b,0xfe,0xdf,0xff,0x47,
- 0xd3,0x77,0xff,0xff,0x47,0xf3,0x7e,0xdd,0x7f,0x6f,0xfb,0x7f,0xff,0xdf,0xdf,0xff,
- 0xff,0xb7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xfd,0x7f,0xef,0xff,
- 0xe7,0xf8,0xbf,0xff,0xf9,0xee,0x7d,0xbf,0xe7,0xbb,0xfe,0xbf,0xbf,0xef,0xfb,0xff,
- 0xff,0xff,0xf9,0xf7,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xff,0xfe,0x87,0xfb,
- 0xef,0x59,0xfe,0x39,0x9f,0x6f,0xd9,0xfe,0xf9,0xbf,0x67,0x9b,0xbe,0xfb,0xb3,0x7b,
- 0xfe,0x7f,0xbf,0xed,0xdb,0xf6,0xff,0xbf,0x6d,0xfb,0xfe,0xff,0xbf,0x6f,0xff,0xa1,
- 0xbf,0xff,0xfb,0xef,0xf1,0xbf,0xcf,0xf7,0xfe,0xf9,0xbf,0x6f,0xf3,0xfe,0xff,0xff,
- 0xcf,0xfe,0xff,0xff,0xef,0xf3,0xe6,0xff,0xff,0x6f,0xbf,0xff,0xff,0xff,0xcf,0xff,
- 0xdc,0x3f,0xff,0xfe,0xfb,0xff,0xdf,0xfb,0xff,0xff,0x7f,0xdf,0xfb,0xfe,0xfe,0xff,
- 0xff,0xfb,0xff,0x7f,0xff,0xf7,0xfe,0xff,0x7f,0xff,0xef,0xff,0xff,0xff,0xff,0xef,
- 0xff,0xff,0xe5,0xff,0xf7,0xfe,0x7f,0x9f,0xcf,0xf7,0xb4,0xed,0x7f,0xdf,0xd1,0xec,
- 0x7f,0x7f,0x5f,0xe5,0x7b,0x1f,0xff,0xd7,0xf7,0xff,0xff,0xfe,0xd7,0xff,0xfd,0x7f,
- 0xff,0xb7,0xff,0xf4,0xff,0xfe,0x77,0xcf,0xfb,0xcb,0xfe,0x7e,0xaf,0xaa,0x49,0xfa,
- 0xbf,0xbf,0xe7,0xc9,0xf6,0x8f,0xaf,0xff,0xfa,0x7d,0xcb,0x67,0xff,0xfa,0x3f,0xff,
- 0xa7,0xff,0xfb,0x7f,0xff,0x1f,0xff,0xdf,0xdf,0xbf,0xff,0x7b,0xdf,0xd7,0xb5,0xff,
- 0x77,0x5e,0xff,0xf5,0xff,0xff,0x95,0xfc,0xff,0xff,0xfe,0xdf,0xff,0xdf,0xff,0x5f,
- 0xff,0xe5,0xff,0xff,0xdf,0xff,0x0b,0xff,0xfb,0xe6,0x71,0xda,0x2f,0x9b,0xe2,0xe8,
- 0xfe,0x2f,0x89,0xe7,0x78,0xbe,0x7f,0x9a,0xe8,0xbe,0x7f,0x9f,0xe7,0xf9,0xbe,0x7f,
- 0x8b,0xe7,0xf8,0xbe,0x7f,0x8f,0xe7,0xf9,0x7f,0xff,0x3f,0xef,0xb3,0xfc,0x7f,0x1f,
- 0x47,0xd7,0xf4,0xfd,0x3f,0xc7,0xd3,0xf4,0xff,0x5d,0xf7,0xfe,0xfd,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0xfe,0x8f,0xff,0xe7,0xff,0xfa,0xfa,0xbf,
- 0xef,0xeb,0xea,0xfe,0x9f,0xaf,0xff,0xfe,0x7e,0x9f,0xef,0xeb,0xff,0xff,0xaf,0xff,
- 0xfe,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xbf,0xff,0xd4,0xff,0xfd,0xff,0xbb,0xed,
- 0xf7,0xff,0xff,0x77,0xdf,0xf7,0xfc,0xff,0xff,0x5f,0xff,0xf9,0x7f,0xdf,0xfb,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xf8,0xbf,0xff,0x9f,0xfd,
- 0xff,0x7a,0x7f,0x9f,0xa4,0xef,0x7e,0x7e,0x97,0xf7,0xe9,0xff,0x7f,0xbd,0xef,0xff,
- 0x7f,0xff,0xfd,0xfb,0xff,0xff,0xf7,0xff,0xff,0xff,0xfe,0xff,0xff,0x47,0xff,0xfe,
- 0xf6,0xbf,0xff,0xcf,0xfc,0xf6,0xfd,0xff,0x76,0xdf,0xf6,0xfd,0xbf,0x2f,0xff,0x7f,
- 0xff,0xff,0xfd,0xbf,0xfd,0xff,0x6f,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,
- 0xef,0xaf,0xea,0xfa,0xbe,0xbf,0xae,0xe9,0xda,0xae,0x8f,0xae,0xeb,0xb2,0xf6,0xbd,
- 0xeb,0xfa,0x7e,0x8f,0xa7,0xeb,0x3a,0xfe,0x9d,0xaf,0xeb,0xfa,0xfe,0xbf,0xaf,0xf6,
- 0x1f,0xef,0xf7,0xc1,0xff,0xfb,0x1f,0xcf,0xdb,0x7f,0xff,0xf7,0x8f,0xdf,0xe7,0x7f,
- 0xf6,0xff,0x6f,0xff,0x9f,0xff,0xf3,0xff,0xdc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xfd,0xc9,0xff,0xdf,0xea,0xfd,0xf2,0xdf,0xcb,0xfd,0xf7,0xff,0xff,0xd3,0xf7,0xdf,
- 0xee,0xff,0xff,0x7f,0xfd,0xbf,0xde,0xff,0xdf,0xfb,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xeb,0x7d,0xff,0xf7,0xff,0x7e,0xfa,0xfb,0xea,0xfd,0xfe,0xff,0xff,0xef,
- 0xef,0xbb,0xef,0x3d,0xff,0xfb,0x6f,0xbf,0xfc,0x4f,0xfe,0xff,0xff,0xef,0xff,0xff,
- 0xff,0xff,0xff,0xfe,0x25,0xbd,0xff,0xab,0xfe,0xbd,0xdf,0xa7,0xeb,0xaa,0xf6,0x27,
- 0xa7,0xe7,0x79,0x97,0xff,0xe3,0xd8,0xf7,0xfe,0xb7,0xeb,0xdf,0xdf,0xdd,0xaf,0x3f,
- 0xf8,0xff,0xfb,0xff,0xff,0xf5,0xff,0x5f,0xf7,0xbd,0xff,0xff,0xf5,0xf7,0x7f,0xeb,
- 0x6f,0xde,0xff,0xff,0xff,0xff,0xfd,0xfe,0xff,0xff,0xed,0xfd,0x97,0xff,0xbf,0xed,
- 0xff,0xff,0xbe,0xff,0xff,0xbf,0xfa,0x9f,0xff,0x37,0x3e,0xef,0x6c,0xef,0xaf,0x87,
- 0xef,0xb6,0x7e,0xf2,0xff,0x7f,0xfc,0xfe,0x7e,0xef,0xfe,0xff,0xfd,0xef,0xff,0xde,
- 0xfe,0x3f,0xfd,0xff,0xff,0xef,0xff,0xff,0x14,0xfb,0x9b,0x77,0xfd,0x3f,0x7f,0xcf,
- 0xa7,0xff,0xff,0x3f,0xdf,0xff,0xff,0xff,0x5f,0xde,0xfb,0xe3,0xe7,0xfb,0xf3,0xbd,
- 0xbf,0x3f,0xfb,0xff,0xff,0xff,0xff,0xfe,0xff,0xf6,0xff,0xfb,0xc7,0xb7,0xff,0xfb,
- 0x7b,0xfe,0xeb,0x7f,0xfb,0xfe,0xdf,0xff,0xff,0xff,0xd9,0xf5,0x7f,0xfd,0xff,0xfb,
- 0xaf,0xbf,0xfb,0xff,0xff,0xf7,0xfb,0xff,0xdf,0xff,0xfc,0x1f,0xff,0x3f,0xff,0x7f,
- 0xf4,0x7f,0x37,0xce,0xd6,0xf7,0xf7,0x3f,0xcf,0x73,0xff,0xf6,0x4f,0x7f,0xbf,0xff,
- 0xfd,0xcf,0xb3,0xfc,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xfd,0xd3,0xff,0xf6,0xe7,
- 0xbf,0xff,0xef,0xf7,0x3d,0xf6,0xf7,0x7f,0xf7,0xfd,0xef,0x7d,0xff,0xed,0xdf,0xfe,
- 0xff,0x7f,0x7d,0xff,0x7f,0xdd,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xf8,0x3b,0xee,
- 0xfb,0xcc,0xd7,0xf5,0xfe,0xbf,0x9f,0xfb,0xfe,0xc8,0x3c,0xbb,0xe5,0xfe,0xeb,0xbe,
- 0xd7,0xff,0xdb,0xff,0x9b,0xab,0xb9,0xef,0x7f,0xff,0xff,0xff,0xff,0xff,0xfe,0xed,
- 0xff,0xff,0xff,0xff,0xff,0xb6,0x6f,0xdf,0xfa,0xee,0xaf,0xee,0xff,0xef,0xf7,0xff,
- 0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xb5,0xff,0xff,0xfd,0xff,0xff,0xaf,0xfb,0xfd,0xff,0xff,0xff,0xfd,0x5f,0xff,0x7f,
- 0xfd,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xef,0xff,0xff,0xff,0xff,
- 0xfe,0xfe,0x8f,0xf5,0xff,0xb3,0xef,0xff,0x3f,0xef,0xbe,0x7c,0xff,0x7e,0xff,0xfd,
- 0xff,0x9b,0x27,0xbf,0xfc,0xff,0xff,0xcf,0xff,0xef,0x7b,0xc7,0xcf,0xff,0xfc,0xff,
- 0xff,0xff,0xfd,0x44,0xac,0xff,0xff,0x7c,0xf9,0xee,0x7f,0xf7,0xcf,0x3f,0x3f,0xde,
- 0x3f,0xfc,0xf9,0xde,0xb7,0xe6,0xcf,0xfe,0xbd,0xff,0xfd,0xff,0xfc,0xcf,0xff,0xff,
- 0xdf,0xff,0xff,0xfd,0x44,0xd5,0xff,0xf3,0xff,0xaf,0xff,0x1f,0xb5,0xfc,0xff,0xfb,
- 0xfb,0xff,0xff,0xef,0xee,0xfe,0xff,0xef,0xff,0xff,0xf5,0xfd,0x2f,0x2b,0x9e,0xbf,
- 0xff,0xff,0xff,0xff,0xe7,0xbc,0x5b,0xf9,0xfe,0x7f,0xf5,0xe7,0xf9,0xff,0xff,0x3f,
- 0xcd,0xf9,0x5f,0xff,0xf7,0xff,0x7f,0xdf,0x37,0xff,0xff,0xfe,0x7f,0x95,0xe5,0x7b,
- 0x7f,0xff,0xff,0xff,0xff,0xfe,0xfd,0xf1,0x7f,0xdf,0x7f,0x6c,0xbd,0x7f,0xff,0x7a,
- 0xff,0xff,0x3f,0xcb,0xb7,0xdf,0x93,0x2f,0xfb,0x5f,0xbb,0x2f,0xff,0xff,0xed,0xff,
- 0xaf,0x8f,0xb7,0xff,0xff,0xff,0xff,0xef,0xea,0x6d,0xe3,0xe6,0xff,0xd5,0xef,0x7b,
- 0xff,0x5f,0xff,0x87,0x61,0xdf,0xff,0xdd,0xe5,0x7b,0x7f,0xfd,0xe7,0x7f,0xff,0xff,
- 0xff,0xf5,0x51,0xda,0xff,0xff,0xff,0xff,0xff,0xf7,0xcd,0xff,0xfd,0xff,0xda,0xfb,
- 0xfe,0xbf,0xeb,0xff,0xf6,0xbd,0x2f,0xfe,0xfe,0xd0,0xbe,0xcf,0xff,0xda,0xbf,0xff,
- 0xfb,0xfa,0xde,0xbf,0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0xb5,0xbf,0xfd,0xff,0xfd,
- 0x5e,0x9f,0xf7,0x7d,0x7f,0xfc,0x57,0xa5,0xff,0xff,0x66,0xd7,0xfd,0xdf,0xff,0xdf,
- 0xff,0xfd,0xff,0x5f,0xd7,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x17,0xe7,0xf3,
- 0x7f,0xff,0xb7,0xed,0xf7,0xfc,0xdf,0x9f,0xe7,0xf1,0xf5,0xfd,0x27,0xed,0xf4,0x7f,
- 0x9f,0xed,0xf9,0xfc,0x7f,0x37,0xcd,0xfb,0xfe,0xff,0xff,0xff,0xff,0xfe,0x77,0xff,
- 0xff,0xff,0xff,0xf9,0xfe,0x7b,0x9f,0x7f,0xff,0xff,0xfd,0xfe,0x7f,0xaf,0xfe,0x7e,
- 0xa7,0xf9,0xfe,0xff,0xbf,0x7f,0xdb,0xfe,0xff,0x8f,0xfb,0xff,0xff,0xff,0xff,0xac,
- 0x7f,0xfe,0xf5,0xb5,0x6f,0xfb,0xfe,0x7d,0xbf,0x6f,0xfb,0xfe,0xff,0x8d,0x67,0xfb,
- 0x57,0x9d,0x6f,0xfb,0x66,0xe5,0xbf,0x6f,0x1b,0x46,0xd5,0xbf,0xef,0xfb,0xfe,0xff,
- 0xfb,0x9f,0xfe,0xff,0xbf,0xff,0xfb,0xff,0xf1,0xbe,0x6f,0xff,0xfe,0xfb,0xfe,0xef,
- 0xff,0xfe,0xbf,0xef,0xff,0xf6,0xff,0xbe,0x6f,0xbb,0xfe,0xff,0xbf,0xff,0xff,0xff,
- 0xff,0xfd,0x8b,0xff,0x7f,0xef,0xff,0xfd,0xff,0xff,0xdf,0xfb,0xff,0xff,0xbf,0xff,
- 0xef,0xff,0xfe,0xff,0xfb,0xff,0xff,0x7f,0xbf,0xef,0xfb,0xfe,0xff,0xef,0xff,0xff,
- 0xff,0xff,0xff,0xf3,0x7f,0xff,0xff,0xef,0xff,0xbd,0xed,0x2f,0x7f,0xf9,0xbf,0xff,
- 0x7f,0xe7,0xd3,0xff,0xfe,0xe7,0xf7,0xff,0xff,0x7f,0xde,0xff,0xf5,0xfb,0x7f,0xdf,
- 0xff,0xff,0xff,0xff,0xff,0x4f,0xff,0xf3,0xfb,0xf7,0x7f,0xdd,0xab,0x7a,0xbf,0xff,
- 0xdd,0xa2,0x7e,0xfa,0xbf,0xdf,0xfe,0xfa,0x7d,0xdd,0x37,0x6e,0xbe,0xae,0xaf,0xa7,
- 0xcd,0xff,0xff,0xff,0xff,0xff,0xd0,0xff,0xff,0xef,0xfb,0x7f,0xff,0x3d,0xfd,0x77,
- 0xf7,0xff,0xf5,0xff,0xff,0x5f,0xd7,0xf9,0x7f,0xfe,0xff,0xf5,0xef,0x77,0xff,0xd7,
- 0xf5,0xff,0x7f,0xff,0xff,0xff,0xff,0xf7,0xbf,0xfe,0xfe,0x6f,0x9f,0xe7,0xe9,0xbe,
- 0x6f,0x9f,0xe7,0xf8,0xbe,0x77,0x8f,0xe2,0xf9,0xa7,0x9f,0xc7,0xf8,0xbe,0x2f,0x9b,
- 0xc2,0xf8,0xba,0x3f,0x9f,0xe7,0xf9,0xfe,0x7f,0x67,0xff,0xff,0xfe,0x7f,0x9f,0xfd,
- 0xd7,0xff,0xff,0xff,0xcf,0xf7,0xfe,0xfd,0x1f,0xef,0xfe,0xff,0x7e,0x6f,0xf7,0xfd,
- 0xfd,0x7e,0x5f,0xf7,0xf5,0xff,0xff,0xff,0xff,0xef,0xf8,0xff,0xbf,0xff,0xbf,0xff,
- 0xff,0xea,0xff,0xff,0xff,0xfb,0xfa,0xff,0xff,0xbf,0xff,0xff,0xff,0xaf,0x6d,0xfb,
- 0xfe,0xff,0xaf,0xeb,0xfa,0xfa,0xbf,0xff,0xff,0xff,0xff,0xfd,0x8f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x5f,0xf7,0xf7,0xff,0xbf,0xdf,0xfb,0xf5,0xfd,0x3f,0xb3,0xff,0xfd,
- 0x7f,0x5f,0xf7,0xff,0xef,0x7f,0xdd,0xf7,0xff,0xff,0xff,0xff,0xff,0x93,0xbf,0xfd,
- 0x7e,0x7f,0xdf,0xf7,0xeb,0x7e,0xdf,0xdf,0xf7,0xfb,0x7f,0xde,0x97,0xa7,0xfb,0x5f,
- 0xdd,0xa7,0xe9,0xfa,0xdf,0xb7,0xad,0xef,0xfb,0xff,0xff,0xff,0xff,0xdf,0xf1,0x7f,
- 0xfd,0xff,0x4f,0x73,0xb6,0x7d,0xaf,0x6f,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x67,0xfd,0xf7,0xff,0xff,0xff,0x5b,0xf7,0x7c,0x9f,0xff,0xff,0xff,0xff,0xff,0xee,
- 0x2f,0xff,0xba,0xf6,0xbf,0xaf,0x6a,0xda,0xfe,0x37,0xa7,0xcb,0x72,0x7e,0xbf,0xab,
- 0xeb,0x56,0xbf,0xae,0xeb,0x7a,0xfe,0xb7,0x8e,0xeb,0xba,0xfc,0xbf,0xaf,0xeb,0xfa,
- 0xff,0x49,0xff,0xff,0xdb,0x3f,0xfb,0xdf,0x74,0xf8,0xdf,0x37,0xfb,0x3f,0xff,0x6e,
- 0xcd,0xf3,0xfd,0x16,0xdd,0xff,0xfc,0xf7,0xff,0x37,0xbf,0xff,0xef,0xff,0xcf,0xff,
- 0xff,0xff,0xfe,0x9f,0xfd,0xff,0xbf,0xfd,0xff,0xef,0x7f,0xff,0xbe,0xed,0xdf,0xff,
- 0x7f,0xef,0xb5,0x3b,0xdf,0x7f,0xff,0x7f,0xff,0x7d,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfd,0xf7,0x7e,0x64,0xff,0xff,0xbc,0xfb,0xcf,0xf7,0x6b,0x6f,0xbb,0xdf,0xff,
- 0xfe,0xfd,0xaf,0x5f,0xc7,0x9b,0xfe,0xfe,0xfb,0x8d,0xff,0xfb,0xfa,0xff,0xfe,0x7f,
- 0xfc,0xff,0xff,0xff,0xff,0xee,0x7f,0x78,0xbf,0xf7,0x8f,0xe5,0xfa,0xfe,0xbf,0xa7,
- 0x6f,0xfe,0xff,0xff,0xad,0xdf,0xfe,0x3c,0xff,0xe3,0xff,0xf7,0xfd,0xa6,0xe9,0xfa,
- 0xfe,0xbf,0xff,0x7f,0xff,0xff,0xef,0x5f,0xfd,0x7f,0xbf,0xd7,0xdf,0xf5,0x6f,0xfb,
- 0x75,0xff,0xbf,0x7f,0xff,0xf6,0x7f,0xfb,0xdf,0xef,0xfe,0xff,0xfb,0xff,0xf5,0xd7,
- 0x7d,0xdf,0xfb,0xbf,0x7f,0xff,0xff,0xff,0xc9,0xff,0xff,0xbc,0x57,0x3f,0xef,0xfd,
- 0x5a,0xf7,0x9a,0xcf,0x7b,0xbe,0x7f,0xdf,0xcb,0xec,0xff,0xff,0xed,0xfb,0xaf,0x5f,
- 0xff,0xbf,0x6f,0x7b,0xff,0xff,0xfd,0xff,0xff,0xfb,0x7f,0xff,0x9f,0x7f,0xdf,0xff,
- 0xbf,0xfe,0xbf,0xcf,0xff,0xbc,0xff,0x7f,0xd7,0xf5,0xe9,0x77,0xfb,0xf3,0xb8,0xbf,
- 0x5f,0xdf,0xfe,0xff,0xff,0xef,0xff,0x7f,0xff,0xff,0xff,0x4e,0xbf,0xfd,0xda,0xde,
- 0xbf,0xd7,0x7f,0xff,0xf6,0xff,0xef,0x6f,0xcc,0xff,0xbf,0xff,0x9b,0xff,0xdd,0xbf,
- 0xbf,0xff,0xfe,0xff,0xef,0xfd,0xff,0xdf,0xff,0xfe,0xff,0xff,0xc1,0x76,0xff,0x7c,
- 0xfb,0x3f,0xfd,0xd3,0xd8,0xfd,0xaf,0xcc,0xf3,0x7c,0xf6,0x3b,0x9f,0xf4,0xbb,0x37,
- 0xff,0xef,0xd0,0x7f,0x3f,0xff,0xb3,0xff,0xef,0xff,0xff,0xff,0xff,0xfc,0x3e,0xff,
- 0xff,0xdc,0xe7,0xdf,0xef,0x7d,0xf7,0x77,0xed,0xf7,0x79,0xdf,0xf7,0xfb,0xff,0xdf,
- 0xf7,0xdf,0xff,0xff,0xde,0x0d,0xff,0xfd,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0xff,0xbb,0xfb,0xff,0xe6,0xdf,0x46,0x6b,0xff,0xfb,0x9f,0xef,0xfb,0xce,0x73,0xcb,
- 0xb9,0xde,0xff,0xfe,0xbf,0xfd,0xf7,0x7e,0xdf,0xef,0xbf,0x7f,0xff,0xff,0xff,0xfe,
- 0xee,0x7f,0xff,0x4e,0xbb,0xef,0x73,0x96,0xfe,0xb2,0xff,0xf3,0xbf,0xd5,0xbf,0xef,
- 0xfd,0xff,0x3f,0x2e,0x7f,0xdf,0xff,0xbf,0xd7,0xf7,0xf2,0xff,0xef,0xff,0xff,0xff,
- 0xff,0xdb,0x97,0xff,0xff,0xff,0xfb,0xfe,0xff,0xd3,0xff,0xff,0xff,0x7f,0xff,0xef,
- 0xf5,0x7d,0xff,0xef,0xff,0xff,0xff,0xff,0xd7,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xa8,0xff,0xfd,0xfb,0xff,0xdd,0x73,0xff,0x1f,0x35,0xcf,0xbf,0xff,
- 0xfb,0xff,0xcc,0xf3,0xff,0xff,0xfc,0xb1,0xff,0xff,0xff,0xc7,0xf7,0xec,0xfb,0xff,
- 0xdf,0xff,0xff,0xff,0xc4,0x4b,0xfc,0xff,0xbf,0xff,0xa7,0xfd,0xff,0xff,0xe7,0xf7,
- 0xfc,0xf3,0x3f,0xf5,0x9e,0xff,0xff,0xff,0x91,0xff,0xff,0x9f,0xfb,0xff,0xff,0x39,
- 0x7f,0xff,0xff,0xff,0xff,0xd7,0x4d,0x7f,0xef,0xeb,0xd7,0xc7,0xef,0xae,0x7e,0x1e,
- 0x32,0xff,0xef,0xeb,0x4f,0xfe,0xff,0xff,0xff,0xff,0xad,0x7f,0x5f,0x7b,0xff,0xf9,
- 0xfd,0xef,0xff,0xff,0xff,0xff,0xfb,0xed,0xbf,0xf7,0xcd,0x7b,0xff,0xff,0xf5,0xff,
- 0xf3,0x96,0x5f,0xf7,0xcd,0x79,0xfe,0x5f,0x3f,0xff,0xfc,0xdf,0x9f,0xe7,0xff,0xff,
- 0xff,0xbf,0xfd,0xff,0xff,0xff,0xff,0xff,0xdf,0x9f,0xff,0xbf,0xad,0x9f,0xff,0xff,
- 0xff,0xbe,0xdd,0xfb,0xfe,0xbf,0xa7,0xfd,0xff,0x7f,0xa5,0xff,0xfa,0xff,0xff,0xff,
- 0xff,0xf7,0xfa,0xfb,0x3f,0xff,0xff,0xff,0xff,0xff,0xb6,0xff,0x9d,0xe5,0x93,0xda,
- 0xf6,0x9f,0xef,0x7f,0x1f,0x7f,0xdf,0xe4,0x7f,0xde,0xff,0xf5,0xbf,0xff,0x56,0xbd,
- 0xef,0x7f,0xf4,0xff,0xf5,0xa7,0x7f,0xff,0xff,0xff,0xff,0x7c,0x7f,0xee,0xf2,0xb7,
- 0xff,0xff,0xda,0xfb,0xff,0xf7,0xeb,0xfa,0xda,0xbd,0xff,0xbf,0xfe,0xbf,0xff,0xeb,
- 0x9f,0xe3,0xff,0xff,0xff,0x9f,0xfe,0xff,0xfd,0x5f,0xff,0xff,0xf9,0x93,0xff,0x7e,
- 0x57,0xf7,0xff,0xfd,0x5f,0xff,0xfe,0xfd,0x7f,0x7f,0xc3,0x1e,0xff,0xff,0xdb,0xaf,
- 0xfd,0x7b,0x7e,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,
- 0xff,0xef,0xdf,0xf9,0xfe,0xff,0x37,0xef,0xd9,0xfd,0xff,0x7f,0x5f,0xdb,0x7e,0xdf,
- 0x47,0xf3,0x7f,0xbf,0xa7,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf6,
- 0x7f,0xff,0xff,0xfb,0xff,0xbf,0xfb,0xdb,0xfe,0xbf,0xff,0x7f,0xc9,0xee,0xf9,0x9f,
- 0xe7,0xe6,0x7d,0xbf,0xef,0xf9,0xfe,0xbf,0xbf,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,
- 0xfe,0xe7,0xff,0xef,0xdb,0xfe,0xf9,0xbd,0x6e,0xdb,0xbe,0xf5,0xbd,0x6f,0x59,0x36,
- 0x3f,0xbf,0x78,0xfe,0xe5,0xb3,0x6d,0xfb,0x96,0xed,0xbd,0x6e,0xfb,0x7e,0xff,0xbf,
- 0xef,0xdf,0x99,0xff,0xff,0xdb,0xfe,0xfd,0xff,0xef,0x9b,0xff,0xff,0xbe,0xef,0xbb,
- 0xf6,0xf3,0xff,0x6f,0xef,0xfb,0xbf,0x7f,0xff,0xfe,0xff,0x3f,0xef,0xff,0xff,0xff,
- 0xff,0xff,0xdb,0xdd,0x3f,0xff,0xfd,0xff,0x7f,0xff,0xf7,0xfd,0xff,0xff,0xbf,0xfb,
- 0xfe,0xff,0x7f,0xff,0xf7,0xff,0xfe,0xef,0xff,0xff,0xfe,0xff,0xef,0xf7,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0xff,0x57,0xfe,0xff,0xfd,0xff,0x7f,0xff,0xdf,0xbf,0xff,0xdf,
- 0x5f,0xd7,0xfe,0x7f,0x1f,0xef,0xe4,0x6f,0x7f,0x5e,0xdf,0xf5,0xff,0xbf,0x5f,0x9f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf4,0xff,0xff,0xff,0xcf,0xf7,0xdd,0xfe,0xad,0xdf,
- 0xff,0x7a,0x9a,0xaf,0xef,0xab,0xff,0xfe,0xaf,0xeb,0xe9,0xfe,0x7c,0x9f,0x7f,0xe9,
- 0xfb,0x7f,0xff,0xff,0xff,0xff,0xff,0xfd,0x4f,0xff,0xff,0xff,0xef,0xff,0xff,0xfc,
- 0xff,0x7e,0xfd,0x77,0x5f,0xff,0xb5,0x6f,0xff,0x9d,0xbd,0xfd,0x7f,0xff,0xf7,0xff,
- 0xed,0x7f,0x7e,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xfe,0xff,0xe7,0xf9,0xfe,0x7f,
- 0x1f,0xe7,0xf9,0xfe,0x6f,0x8b,0xe7,0x78,0xfe,0x7f,0x9f,0xf9,0xbe,0x2f,0x9f,0xe6,
- 0xf9,0xfe,0x2f,0x8f,0xe7,0xf9,0xfe,0x7f,0x9f,0xe7,0xe2,0x7f,0xff,0xbf,0xff,0xfb,
- 0xfe,0x79,0x7f,0x4f,0xff,0xfd,0xff,0x7f,0xe7,0xd7,0xff,0xff,0xff,0xf3,0xf4,0x7d,
- 0x1f,0x4f,0xff,0xfc,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x0f,0xff,0xff,0xff,
- 0xff,0x7f,0xbf,0xef,0xe9,0xff,0xff,0xbf,0xaf,0xfb,0xfa,0xff,0xff,0xff,0xfe,0xfe,
- 0xbf,0xaf,0xe9,0xff,0xfe,0xbf,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xc4,0xff,0xfe,
- 0xff,0xff,0xff,0xff,0xbd,0xff,0x7f,0x7f,0xf7,0xfd,0xff,0xff,0x5f,0xdf,0xfb,0xff,
- 0xcf,0xdf,0xff,0xff,0x7f,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xbf,
- 0xff,0xdf,0xfd,0xfd,0xff,0x77,0xb7,0xa7,0xfb,0xfe,0xde,0xf7,0xfd,0xeb,0x7b,0x7f,
- 0xfd,0xff,0x7e,0x7f,0xdf,0xe7,0xef,0xfa,0x7e,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,
- 0x77,0xff,0xff,0xf4,0xfd,0x3f,0xcf,0xda,0xf7,0xff,0x3d,0x7f,0xdb,0xf2,0x7d,0xff,
- 0xff,0x7a,0xbf,0xff,0xff,0xdf,0xf7,0xbd,0xbb,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,
- 0xff,0xe0,0xff,0xff,0xaf,0x6a,0xda,0xde,0x97,0xaf,0xe2,0xfa,0x6e,0x1f,0xae,0xe8,
- 0xba,0xfe,0xad,0xeb,0xf8,0xfe,0x9b,0xaf,0xeb,0xfa,0xde,0xbf,0x8b,0xcb,0xfa,0xfe,
- 0xbf,0xaf,0xff,0x5d,0xff,0xcd,0xff,0xbf,0xfb,0xff,0x36,0xaf,0xbe,0xbf,0xef,0x36,
- 0xfe,0xdd,0xdf,0xef,0xfd,0xfc,0x7f,0xff,0xfe,0xed,0xb2,0xff,0x3d,0xff,0xef,0xff,
- 0xff,0xff,0xff,0xfd,0xa1,0xef,0xff,0xff,0xfd,0xef,0x7e,0xbf,0xff,0x7d,0x6f,0x7f,
- 0xdf,0x77,0xff,0xba,0xfe,0xdf,0xfc,0xff,0xff,0xff,0xef,0xff,0x7b,0xae,0xbf,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xea,0x5b,0xbd,0x5f,0xff,0xfe,0xff,0xfb,0xff,0xfd,0xff,
- 0xef,0xdf,0xff,0xfb,0xff,0xff,0xed,0xf7,0x37,0xff,0x7f,0xff,0xff,0xfd,0xff,0x7f,
- 0xef,0xff,0xff,0xff,0xff,0xff,0xfe,0xef,0xff,0xff,0xef,0xfb,0x7c,0xd9,0xa7,0xcf,
- 0xf3,0xf6,0x3c,0x8f,0xe2,0xfa,0x7c,0x8f,0x7b,0xde,0xf6,0xbb,0xaf,0x5f,0xda,0xfe,
- 0xbe,0xef,0xfe,0xdf,0xff,0xff,0xff,0xff,0xbd,0xff,0xff,0xf7,0x7f,0xef,0xfb,0xfd,
- 0xff,0xbd,0xed,0x5e,0x7f,0xde,0xdf,0x5f,0xf7,0xff,0xf7,0x77,0xfb,0xfd,0xff,0xf5,
- 0x99,0x67,0x7b,0xff,0xfb,0xff,0xff,0xff,0xff,0xfa,0x3f,0xfb,0xf7,0xfe,0x3b,0xef,
- 0xfe,0xfa,0xc6,0xfb,0xff,0xfe,0xbd,0xeb,0xbf,0xea,0xee,0x3f,0xfb,0xaa,0xfa,0xff,
- 0xcf,0xfb,0xfc,0xf7,0xfb,0xfd,0xff,0xff,0xef,0xff,0xfe,0xc7,0xff,0xbf,0xff,0xfd,
- 0xff,0xff,0xdb,0xf7,0xff,0xef,0x5b,0xce,0xf7,0xdf,0xbf,0xef,0xdf,0xfd,0xff,0xfb,
- 0xf9,0xff,0xfd,0xff,0x7c,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xf6,0xff,0xff,0xff,
- 0xff,0xb1,0xfe,0xbe,0xff,0xbd,0xf5,0xff,0xfb,0xd4,0xdd,0x7d,0xbd,0xdb,0xed,0xb5,
- 0xfd,0xff,0xff,0xff,0xe7,0xfb,0xff,0x9b,0xff,0xff,0xff,0xff,0xff,0xfd,0x9b,0xed,
- 0xff,0xfd,0x41,0xf0,0xfc,0x0d,0xcb,0xf3,0xff,0xed,0x3f,0xcc,0xf1,0xf8,0xfe,0x47,
- 0xf3,0xf7,0xee,0x3f,0xcf,0xde,0xff,0xf7,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,
- 0xff,0xff,0xdf,0xff,0xdd,0xdf,0xfb,0xf9,0xef,0x7f,0xff,0xed,0xfd,0xff,0xbd,0xde,
- 0xef,0x7d,0x7b,0x7a,0x36,0xfd,0xef,0xfb,0xfb,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xf8,0x7f,0xfb,0xff,0xf7,0xbf,0x79,0xf3,0xef,0x5c,0xe1,0x2c,0xff,0x7f,0x8e,0xd7,
- 0xf8,0xfb,0xfd,0xe3,0xff,0xfe,0xf2,0x1b,0xf7,0xaf,0xfc,0x3f,0xdf,0xff,0xff,0xff,
- 0xff,0xfe,0x07,0xff,0xff,0xcb,0xfe,0x7f,0xb7,0xf7,0xfa,0xff,0xde,0x1f,0x8f,0xdb,
- 0xfe,0xbd,0xbf,0xfb,0xfc,0xfe,0x9f,0xff,0xfb,0xba,0xff,0xff,0xef,0xfb,0xff,0xff,
- 0xff,0xff,0xff,0xe5,0x7b,0x7f,0xff,0xff,0xbf,0xcd,0xff,0x7f,0x7f,0x7f,0xff,0xff,
- 0xfd,0x7f,0xbf,0xcf,0xff,0x5f,0xdf,0xff,0xef,0xff,0x7f,0x7e,0xff,0xfb,0xfd,0x7f,
- 0xff,0xff,0xff,0xfe,0xfa,0xaf,0xff,0xff,0xbf,0xfd,0xff,0xde,0xc7,0xbf,0xff,0xff,
- 0x3f,0xfc,0xbf,0xfc,0xcf,0xff,0xf7,0xff,0x9f,0xfe,0xff,0xff,0xff,0xfb,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xfd,0xc2,0xbf,0xcf,0xf3,0xff,0xff,0xff,0xca,0xf3,0xff,
- 0xff,0xd7,0xfe,0xa1,0xfe,0xa3,0xdf,0xfd,0xbc,0xf3,0xff,0xf6,0xf7,0xff,0x73,0x3f,
- 0xcf,0xff,0xff,0xff,0xff,0xff,0xfd,0x44,0xf7,0xfe,0xf4,0xbd,0x7d,0xeb,0xd2,0xfe,
- 0xb9,0xaf,0x3f,0xff,0xf2,0xbf,0xff,0xff,0xcf,0xf9,0xfe,0x7f,0x7f,0xff,0xf9,0xfe,
- 0x6b,0xca,0xff,0xff,0xff,0xff,0xff,0xe7,0xbd,0x5b,0xff,0x7e,0x57,0x9f,0xcd,0x7b,
- 0x5e,0xd7,0xf5,0xe7,0xff,0xfe,0x57,0xff,0xff,0x7b,0xff,0xbf,0xcf,0xfb,0xff,0xdf,
- 0x3f,0xed,0x79,0x7f,0xff,0xff,0xff,0xff,0xfc,0xfd,0xe9,0xff,0xdb,0xfa,0x7e,0xfd,
- 0x3d,0xa9,0xa2,0x7d,0xb5,0x77,0x4b,0xfb,0xcd,0xff,0xfd,0xbf,0xfa,0xb5,0x7f,0xad,
- 0xf2,0xcd,0xdc,0x27,0xfb,0xf7,0x7f,0xff,0xff,0xff,0xff,0xe5,0x6f,0xd1,0xde,0x4d,
- 0xbd,0xe7,0xbd,0x3e,0x4e,0x1e,0x6f,0xd9,0x5f,0x76,0xbd,0xef,0x5b,0xf7,0xd6,0xef,
- 0x6b,0x54,0x5a,0xbf,0xa4,0xf9,0xf8,0xff,0xff,0xff,0xff,0xff,0xf7,0xa7,0xff,0xef,
- 0xab,0xff,0xf2,0xbf,0xaf,0xab,0xfa,0xdf,0xff,0xaf,0xeb,0xff,0xfb,0xed,0xff,0xda,
- 0xdb,0xff,0xf7,0x4b,0xff,0xfe,0xbe,0xad,0xff,0xff,0xff,0xff,0xff,0xff,0x85,0xff,
- 0xf7,0xfd,0x3f,0xfc,0x57,0xf4,0xfd,0x3f,0x5f,0xff,0xf5,0xfd,0xdf,0xff,0xff,0x9f,
- 0xf1,0x5f,0xf7,0xfa,0xe9,0x7f,0xff,0xd3,0xf7,0xff,0xbf,0xff,0xff,0xff,0xff,0xfd,
- 0x9f,0xff,0xf9,0xf6,0xdf,0xff,0xcf,0xdf,0xf6,0x7f,0x7f,0xe7,0xff,0xf4,0xdf,0xff,
- 0x49,0xfe,0xff,0x37,0xed,0xdf,0xfc,0x7f,0xbf,0x7f,0xf7,0xf6,0xdf,0xff,0xff,0xff,
- 0xfe,0xb7,0xfe,0x7f,0x9f,0xef,0xf9,0xfe,0xbf,0xff,0xff,0xfb,0xfe,0x7f,0xfe,0x67,
- 0xf9,0xe7,0xff,0xfb,0xfb,0xfe,0xf9,0xff,0xff,0xfa,0xfe,0xfd,0x9e,0xef,0xff,0xff,
- 0xff,0xff,0xe6,0x7f,0xfe,0xff,0x93,0x6f,0xdb,0x96,0x7f,0x9d,0x6f,0x9b,0xfe,0xff,
- 0x9d,0x6f,0xf8,0x77,0xbf,0x6e,0xdb,0xb6,0x35,0xbd,0x6e,0x59,0xb6,0xff,0x9b,0xef,
- 0xfb,0xfe,0xff,0xfa,0xdb,0xff,0xff,0xff,0xdf,0xf3,0xee,0xff,0xff,0xff,0x9b,0xff,
- 0xff,0xfe,0xef,0xfb,0xec,0xff,0x6f,0xb3,0xf6,0xf3,0xfc,0xef,0xfb,0xf6,0xfb,0xbf,
- 0xff,0xff,0xff,0xff,0xfd,0x83,0xff,0xff,0xff,0xff,0xfe,0xff,0xbf,0xff,0xff,0xfe,
- 0xff,0xff,0xff,0xbb,0xfd,0xff,0xbf,0xfb,0xfe,0xff,0x7f,0xff,0xef,0xfb,0xff,0x7f,
- 0xef,0xff,0xff,0xff,0xff,0xff,0xf1,0x7f,0xfd,0x7f,0x4f,0xff,0xff,0xfd,0x3f,0x4e,
- 0xdf,0xfe,0xfd,0x7f,0xe7,0xd7,0xe4,0x7a,0xff,0xf7,0xbf,0xff,0x1b,0x5f,0xfb,0xb4,
- 0xed,0xff,0x4f,0xff,0xff,0xff,0xff,0xff,0x6f,0xff,0xa7,0xeb,0xf7,0x7f,0xef,0xaf,
- 0x6b,0xfb,0xbf,0xfd,0xa7,0x7c,0xfa,0x76,0x8f,0xfd,0xff,0x3f,0xdf,0xb3,0x6a,0xff,
- 0xfe,0xbd,0xaa,0xeb,0xff,0xff,0xff,0xff,0xff,0xe0,0xff,0xef,0xfd,0x7b,0xfc,0xf7,
- 0xf5,0xfd,0x7f,0x5f,0xbf,0xfd,0xed,0xf7,0x5d,0xf7,0xfb,0xff,0xff,0xff,0xbd,0x6d,
- 0x77,0xff,0xd7,0xf7,0xfd,0x7f,0xff,0xff,0xff,0xff,0xf7,0xbf,0xff,0xfe,0x2f,0x9b,
- 0xe3,0xf8,0xbe,0x2f,0x8f,0xe7,0xf9,0xbe,0x37,0x8f,0xe2,0x79,0xff,0x9f,0xe7,0xf8,
- 0xfe,0x2f,0x9f,0xe2,0xf9,0xbe,0x2f,0x9f,0xe7,0xf9,0xfe,0x7f,0x27,0xff,0xd7,0xf5,
- 0xff,0xbf,0xdf,0xf7,0xf4,0xff,0xff,0xff,0xd3,0xfe,0xfd,0x7f,0xc7,0xfe,0xff,0xff,
- 0x7f,0xf3,0xfd,0xff,0xff,0x5f,0xdf,0xf5,0xff,0xff,0xff,0xff,0xff,0xe6,0xff,0xfa,
- 0xfe,0xbf,0xf7,0xfb,0xfb,0xfe,0x9f,0xff,0xff,0xfa,0x7f,0xff,0xaf,0xeb,0xff,0xdf,
- 0xff,0xff,0xfb,0xfe,0xbf,0xff,0xeb,0xfb,0xfe,0xbf,0xff,0xff,0xff,0xff,0xfd,0xcf,
- 0xf7,0xff,0xf7,0xff,0xff,0x7f,0xdf,0xf7,0xfd,0xff,0xff,0xdf,0xfb,0xf5,0xff,0x7f,
- 0x9f,0xff,0xff,0xff,0xcf,0xf7,0xf7,0xff,0x7f,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,
- 0xc3,0xff,0xff,0xfa,0xff,0xdf,0xad,0xef,0xfe,0x7e,0xf7,0xef,0xf9,0xff,0xde,0xbf,
- 0xed,0xff,0x7f,0xf7,0xf7,0xef,0x7b,0xdf,0xff,0xb7,0xff,0x7a,0xff,0xff,0xff,0xff,
- 0xfe,0xfb,0x77,0xff,0xff,0x7f,0xd3,0xff,0xfd,0xff,0x67,0xff,0xf2,0xff,0xff,0x47,
- 0xff,0xf6,0xff,0x67,0xfe,0xf7,0xff,0xff,0x2e,0xdf,0xff,0xff,0xbf,0xf7,0xff,0xff,
- 0xff,0xff,0xdf,0x6f,0xff,0xfa,0xf6,0x9d,0x8f,0xeb,0xfa,0xf4,0xbf,0x2f,0x6b,0xfa,
- 0xf6,0xb7,0xab,0xe9,0xde,0xbf,0xaf,0xeb,0xf8,0xae,0x3b,0xaf,0xeb,0x7a,0xfe,0xbf,
- 0xaf,0xeb,0xfa,0xfd,0x59,0xbf,0xff,0xff,0xff,0xfb,0xff,0xfb,0xfd,0xf7,0xf4,0xf7,
- 0x7f,0xff,0x7f,0xfd,0xcd,0x6c,0xdf,0xff,0xef,0xfc,0xbf,0xfb,0xff,0xff,0xf7,0xff,
- 0x3f,0xff,0xff,0xff,0xff,0xff,0x1f,0xff,0xff,0x7f,0x7f,0xff,0xe3,0xfb,0x7f,0xfd,
- 0xf7,0xff,0xfe,0xef,0xff,0xf7,0xff,0xff,0xde,0xb7,0xf7,0x2f,0xff,0xff,0x77,0xfb,
- 0xff,0x3f,0xff,0xff,0xfd,0xff,0x7e,0x37,0xbf,0xff,0xff,0x7f,0xdf,0xff,0xfd,0xff,
- 0xff,0xef,0xbf,0xff,0xbf,0xef,0xef,0xff,0xde,0xeb,0xfb,0xe5,0xff,0xff,0xfb,0xdb,
- 0xf7,0xff,0xbd,0xff,0xff,0xff,0xff,0xff,0xe4,0x1f,0xff,0xf7,0xff,0xaf,0xeb,0xb8,
- 0xff,0xbd,0x6f,0xe7,0xdf,0xfe,0x7f,0xef,0x3b,0xde,0xff,0xb6,0xcb,0xff,0x7f,0xa7,
- 0xbf,0xeb,0xfb,0xfe,0xbc,0xff,0xff,0xff,0xff,0xfe,0x9f,0xff,0xff,0xff,0xfa,0xfd,
- 0x77,0xbf,0xdf,0xdf,0xff,0xed,0xff,0xff,0x67,0xff,0xf7,0xfb,0x7e,0xfe,0x77,0xf9,
- 0xef,0xde,0x5f,0x75,0xef,0xb7,0xff,0xff,0xff,0xff,0xbd,0x99,0xfe,0xff,0xbc,0xfb,
- 0x3e,0xef,0xbf,0xfc,0x7e,0xfb,0xff,0xff,0xbf,0xff,0x3b,0xbf,0x8f,0xff,0xfe,0xcf,
- 0xfb,0xfc,0xdf,0xbe,0x3f,0xf3,0xb2,0xdf,0xff,0xfe,0xfe,0xff,0xfd,0x7f,0xfb,0xff,
- 0x7b,0xd7,0xd3,0xff,0xbf,0x5f,0xfd,0xff,0xdf,0xff,0x7e,0xff,0xff,0xfd,0x7f,0xfe,
- 0xe7,0xfd,0xdf,0x6f,0xc7,0xfe,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xfe,0x0d,0xff,
- 0xff,0x5a,0xdf,0xff,0xbf,0xfb,0xff,0xdf,0x9d,0xff,0xfd,0x7a,0x6f,0x97,0xff,0xaf,
- 0xff,0xff,0xbf,0xe7,0xee,0xff,0xff,0xfd,0xfd,0xbb,0xff,0xff,0xff,0xff,0xff,0xc5,
- 0xde,0xef,0xff,0xff,0xff,0xff,0xbf,0xfc,0xf7,0xff,0xcf,0xe3,0x7f,0xff,0x3f,0xcf,
- 0xf4,0xfd,0x3f,0xfd,0xff,0xbc,0xff,0xff,0xef,0x67,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xfa,0xbb,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xdf,0xff,0xfd,0xdf,0x7f,0xfb,0xf6,
- 0xbd,0xfe,0xdf,0xeb,0xef,0xdd,0xfe,0x5f,0x7f,0xfd,0xfc,0xff,0xdf,0xff,0xff,0xff,
- 0xff,0xff,0x33,0xff,0xbf,0xdd,0xff,0x7f,0x5f,0x97,0xf9,0xff,0xff,0xbd,0xeb,0xed,
- 0xdc,0x7b,0x8c,0xa9,0xdf,0x6f,0xdb,0xf7,0xfb,0xdf,0x7a,0x5f,0xd7,0xf1,0xff,0xff,
- 0xff,0xff,0xff,0xea,0xff,0xef,0xff,0x3b,0xff,0xfb,0xfe,0xbf,0xbf,0x76,0xdf,0xff,
- 0xef,0x3f,0xee,0xdf,0xbf,0xf7,0xcd,0xfb,0xbe,0xff,0xff,0x0e,0xdb,0xfe,0xbf,0xbf,
- 0xff,0xff,0xff,0xff,0xfa,0x1f,0xff,0xff,0xf7,0xf7,0xff,0x5b,0xdf,0xd7,0xff,0xff,
- 0xff,0xff,0xf7,0xfd,0xfd,0xdf,0x9f,0xfd,0x7c,0xff,0x57,0xfd,0xff,0xff,0x77,0xbf,
- 0xf7,0xff,0xff,0xff,0xff,0xbf,0xc2,0xff,0xef,0xd7,0x1f,0xff,0xff,0x3c,0xff,0xe7,
- 0xcf,0xff,0xff,0xff,0x3e,0xff,0xb7,0xfb,0xdf,0xff,0xf3,0xef,0xff,0xff,0xff,0xbf,
- 0x3f,0xfb,0xdf,0xff,0xff,0xff,0xff,0xca,0x2e,0xfd,0xf9,0xfb,0xff,0xff,0xbf,0xdf,
- 0xff,0xcd,0xff,0xff,0xff,0xf7,0xcf,0xf7,0xff,0x7f,0xff,0xf7,0x7c,0xff,0xff,0xff,
- 0xf3,0xeb,0xff,0x7f,0xff,0xff,0xff,0xff,0xd7,0x8e,0x5f,0xbf,0x5e,0xff,0xd3,0xff,
- 0xaf,0x5b,0xfe,0xdf,0xff,0xff,0x3f,0xca,0xfe,0xfc,0xff,0xff,0xff,0xbf,0xaf,0xff,
- 0x9f,0xf2,0x9c,0xf7,0xef,0xff,0xff,0xff,0xff,0xfb,0xc4,0xbf,0xf7,0xef,0xf3,0xfe,
- 0xff,0x95,0xfd,0xff,0x7f,0xff,0xff,0xcf,0xfb,0x5f,0xdf,0x3f,0xff,0xff,0xff,0x35,
- 0xe7,0xf3,0xfe,0xc7,0x3a,0xfd,0xff,0xff,0xff,0xff,0xff,0xd8,0x9f,0xfe,0xfe,0xff,
- 0xdf,0xa6,0xf5,0xdf,0xae,0xd9,0xff,0xdf,0xf7,0xf6,0x89,0x73,0x7f,0xbf,0xff,0xfb,
- 0xfe,0x9f,0x75,0xfb,0xa2,0x3e,0xdf,0xac,0xdf,0xff,0xff,0xff,0xff,0x22,0xdf,0xdd,
- 0xff,0x53,0xd6,0xf5,0xbd,0xf5,0xf9,0xdf,0xff,0xff,0xfd,0xe9,0x78,0x7f,0xf7,0xff,
- 0xff,0x77,0xd3,0xde,0x1b,0xd6,0x77,0x9d,0xf7,0xbf,0xff,0xff,0xff,0xff,0x6c,0x7f,
- 0xfb,0xff,0xff,0xff,0xff,0xfa,0xfe,0xbe,0xef,0xff,0xff,0xe7,0xff,0xaf,0xef,0xd6,
- 0xf7,0xff,0xfb,0xfa,0xff,0xff,0xff,0xeb,0xca,0xfe,0xbf,0xff,0xff,0xff,0xff,0xf9,
- 0x4f,0xff,0x7f,0xdf,0xf7,0xff,0xff,0x4f,0xd7,0xf6,0xff,0xdf,0xf7,0xff,0xf5,0x7d,
- 0xff,0xdf,0xff,0xff,0x7f,0x4f,0xdb,0xff,0xfd,0x31,0x4f,0xdf,0xff,0xff,0xff,0xff,
- 0xff,0xb3,0xff,0xff,0xff,0xe7,0xfb,0x7e,0xfd,0xb7,0xcd,0xd9,0xf5,0xfd,0x7f,0xed,
- 0xf3,0x77,0xff,0xcd,0xfb,0xff,0xfd,0xff,0x5f,0xff,0xf6,0xfd,0xb7,0xdf,0xff,0xff,
- 0xff,0xff,0xf3,0x7f,0xff,0xff,0xff,0xff,0xbf,0xeb,0xbf,0xf6,0x7b,0xfe,0x7f,0x9f,
- 0xff,0xfe,0xbe,0x6f,0xf2,0xff,0xaf,0xef,0xfb,0xf6,0x7f,0xbf,0xfb,0xfb,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x67,0xff,0xed,0xfb,0xf6,0xf9,0xbb,0x67,0xfb,0xfe,0x7f,0x9f,
- 0xe7,0xfb,0xd6,0xfb,0x8e,0xfb,0xe6,0xed,0xbe,0x67,0x18,0xf6,0xed,0x9f,0xe6,0xfb,
- 0xfe,0xff,0xbf,0xef,0xfe,0x91,0xbf,0xff,0xfb,0xfc,0xfd,0xbf,0xcf,0xfb,0xef,0xff,
- 0xfe,0xff,0xbf,0xff,0xff,0xfe,0xff,0xe6,0xfd,0xff,0x7f,0xff,0xe6,0xff,0x3f,0xef,
- 0xfb,0xef,0xff,0xff,0xff,0xff,0xdc,0xbf,0xff,0xfd,0xff,0xbf,0xdf,0xfb,0xfb,0xff,
- 0xff,0xff,0xbf,0xef,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xbf,0xef,
- 0xfb,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0xff,0xff,0xed,0xff,0x7f,0xff,0xd1,
- 0xf7,0xfd,0x1f,0xee,0xf9,0xfe,0xff,0x3f,0xcf,0xe7,0xff,0x7f,0x7f,0xd3,0xb4,0xff,
- 0xff,0xc7,0xf1,0xb7,0xff,0xff,0xff,0xff,0xff,0xae,0xff,0xff,0xff,0xdf,0xf7,0xdd,
- 0xf2,0xff,0xab,0xaf,0xfe,0xff,0xbf,0xff,0xeb,0xfa,0xfe,0xe9,0xf7,0xfd,0xfa,0xfc,
- 0x8f,0xf7,0xfb,0xfe,0xfe,0xef,0xff,0xff,0xff,0xff,0xfc,0x9f,0xff,0xff,0xff,0xef,
- 0xff,0xff,0x5f,0xd7,0xf5,0xff,0xf7,0xff,0xf7,0xf5,0xff,0x7b,0xbf,0xff,0xff,0xf7,
- 0x5f,0xf7,0xef,0xff,0x3f,0xcf,0xd7,0xff,0xff,0xff,0xff,0xff,0xd1,0xff,0xff,0xe7,
- 0xf9,0xfe,0x7f,0x89,0xe6,0xf8,0x9e,0x7f,0x9d,0xe6,0xf8,0xbe,0x6f,0x9f,0xf9,0xfe,
- 0x7f,0x8b,0xe2,0xf9,0xfe,0x6f,0x9b,0xe3,0xf9,0xfe,0x7f,0x9f,0xe7,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xfd,0x7f,0xff,0xd7,0xfe,0x7f,0x9f,0xff,0xf7,0xfd,0xff,0xff,
- 0xfb,0xf7,0xfd,0x7f,0x5f,0xff,0xfd,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xfe,0xcf,
- 0xff,0xff,0xff,0xff,0xff,0xbf,0xaf,0xff,0xfa,0xff,0xff,0xff,0xff,0xfe,0xfb,0xbf,
- 0xef,0xff,0x7f,0xbf,0xaf,0xeb,0xfe,0xff,0xbf,0xef,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xcd,0xff,0x7f,0xff,0xff,0xff,0xff,0xfd,0xff,0x7f,0xdf,0xff,0xff,0xff,0x7f,0xdf,
- 0xd7,0xfb,0xff,0xff,0xff,0xfd,0xff,0x7f,0xff,0xf7,0xfd,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xfe,0x3f,0xfd,0xff,0xff,0xff,0xff,0xfe,0xbf,0xed,0xeb,0xff,0xdf,0xf7,0xef,
- 0xeb,0x3a,0xdf,0xfd,0xfd,0xff,0xfe,0xbf,0xad,0xff,0xff,0xff,0xff,0xbd,0xff,0xff,
- 0xff,0xff,0xff,0x77,0xff,0xeb,0xb6,0xff,0xfb,0x77,0xff,0xff,0xff,0xdf,0xff,0xff,
- 0xf2,0xff,0x3f,0x67,0xf2,0xbf,0xff,0x2f,0xcb,0xf6,0xfc,0xbf,0x2f,0xfb,0xfa,0xff,
- 0xff,0xfe,0xff,0xff,0xfe,0xbf,0xff,0xaf,0x69,0xfa,0x3e,0xb7,0xa7,0xe1,0xfa,0xfe,
- 0x3f,0xa4,0xe9,0xfa,0xee,0x3d,0xea,0xfa,0xee,0xbd,0xab,0xeb,0x72,0xae,0xb7,0xa5,
- 0xeb,0xfa,0xfe,0xbf,0xaf,0xf7,0xdf,0xff,0xff,0x9f,0xff,0xfe,0xff,0xdf,0xbc,0xfd,
- 0xff,0x3f,0xff,0xfb,0x7f,0xdd,0x7f,0xed,0xff,0xef,0x3f,0xfb,0xce,0xfb,0xfb,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xd1,0x7d,0xdf,0xff,0xfd,0xff,0xff,0xbf,0xdf,
- 0xfd,0xf3,0xdf,0xff,0xfb,0xfd,0xff,0xff,0xdf,0x7f,0xf5,0xaf,0xbf,0x7f,0xfb,0xdb,
- 0xfa,0xbf,0xbf,0xff,0xff,0xff,0xff,0xff,0xef,0x5f,0xff,0xff,0xf7,0xff,0xff,0xee,
- 0xff,0xfe,0xef,0xfb,0xdf,0xff,0xff,0xfe,0xed,0xe9,0xfb,0xbf,0xef,0xfb,0xde,0xff,
- 0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xfe,0xcf,0xff,0xff,0xeb,0xf9,0xfe,
- 0xbf,0x8d,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xee,0xef,0xba,0xfe,0x3f,0x9f,
- 0xff,0xe8,0xff,0xbf,0xbf,0xe3,0xdf,0xff,0xff,0xff,0xff,0xdd,0xff,0xff,0xf5,0x7f,
- 0xfd,0xfb,0xfb,0xfb,0xf5,0x7f,0xfe,0xdf,0xff,0xfd,0xff,0xff,0xff,0x99,0x6f,0x6e,
- 0xff,0xdf,0xff,0xff,0xdf,0xfe,0xf6,0xff,0xff,0xff,0xff,0xff,0xf8,0xbf,0xff,0xfd,
- 0xfe,0xdb,0xfb,0x5f,0xfb,0xcf,0xfb,0xbf,0xed,0xfb,0xff,0xff,0xbc,0xee,0xce,0xf3,
- 0xbf,0xff,0x2f,0xc3,0xeb,0xbf,0xe3,0x3b,0xce,0xff,0xff,0xef,0xff,0xff,0xd7,0xff,
- 0xfe,0xfe,0xfd,0xef,0x57,0xdf,0xf5,0xbd,0xfb,0xfb,0xff,0xff,0xfd,0xb7,0x5f,0xd6,
- 0x7d,0xbf,0xfb,0xbe,0xf5,0xfc,0xef,0xef,0xdf,0xb5,0xff,0xff,0xff,0xff,0xff,0xe0,
- 0xff,0xff,0xff,0xff,0xe7,0xbf,0xde,0xff,0xf9,0xe3,0xff,0x7f,0xd7,0xfd,0xef,0xff,
- 0xdb,0xbf,0xe9,0x3e,0xdf,0xff,0xfd,0xed,0xff,0xfb,0xdf,0xef,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0xef,0xff,0xbf,0x03,0x7c,0xff,0xff,0xcf,0x73,0xbc,0x7f,0xfd,0xfc,0xff,
- 0xcc,0xef,0x4e,0xff,0xfc,0xdf,0xf1,0xcf,0xf3,0xec,0x77,0xf7,0xcf,0x7f,0xff,0xff,
- 0xff,0xff,0xeb,0xfe,0xbf,0xff,0xbf,0x7f,0xdf,0xff,0xf9,0xff,0x6f,0xf7,0xff,0xff,
- 0xdf,0xf7,0xdf,0xed,0xff,0xef,0xae,0xff,0x7d,0xfb,0x7f,0xf7,0xdf,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0x7f,0xff,0xfe,0x5f,0xeb,0xf9,0xfd,0x7f,0x5f,0xa7,0xff,0xd7,
- 0xf7,0xfd,0xff,0xf9,0xfa,0x15,0xb7,0xfd,0xf7,0xfb,0x9f,0xeb,0xef,0xef,0xff,0x8f,
- 0xff,0xff,0xdf,0xff,0xee,0x27,0xff,0xff,0xfb,0xfe,0xde,0x37,0xed,0xff,0x7c,0xff,
- 0xdf,0xff,0xff,0xfe,0xff,0x8e,0xe9,0xa8,0xdf,0xbf,0xef,0xfa,0x5e,0xdf,0xf7,0xff,
- 0xd7,0xdf,0xff,0xff,0xff,0xbd,0xa1,0xff,0xff,0xfe,0xff,0xdf,0xff,0xfd,0xff,0xff,
- 0xdd,0xff,0xff,0xff,0xff,0xdf,0xcd,0xff,0xff,0xff,0xd7,0xfb,0xfc,0xff,0xdf,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x8f,0xff,0xff,0xff,0xff,0xff,0xfe,0xf9,
- 0xb1,0xff,0xff,0xfe,0xff,0xff,0xff,0xd7,0xdf,0xbd,0x5c,0xcf,0x3e,0xcf,0xff,0xff,
- 0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x36,0xbf,0xff,0xf7,0xff,0xff,0x3f,
- 0xcf,0x93,0xfc,0xff,0xff,0xdf,0xff,0xff,0x69,0xbf,0xf3,0xcd,0xea,0xfb,0xcb,0xff,
- 0xff,0xff,0xfb,0xcf,0xff,0xff,0xff,0xff,0xff,0xfd,0x7c,0xf7,0xff,0xff,0xf9,0xaf,
- 0xfb,0xca,0xde,0xaf,0xef,0xff,0xfb,0xf4,0xbc,0xff,0xfb,0x56,0xb9,0xfa,0x7e,0xd2,
- 0xf3,0xf7,0xef,0xff,0xd2,0xf5,0xbf,0xff,0xff,0xff,0xff,0xbc,0x9b,0xff,0xfe,0x7f,
- 0x95,0xfd,0xf3,0x5f,0xcf,0xf7,0xff,0xff,0x7e,0xd7,0x9f,0xff,0xf9,0xd7,0xff,0xcf,
- 0xf9,0x5e,0x7f,0xb7,0xff,0xf9,0x5e,0xdf,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,
- 0xff,0xf4,0xff,0xac,0xc9,0xd2,0x6c,0xbb,0x7f,0xef,0xef,0xff,0xff,0x7d,0x5b,0xdd,
- 0xff,0xff,0xe9,0xff,0xf0,0xb3,0x77,0xe9,0xe2,0xf5,0xff,0xff,0xff,0xff,0xf7,0x6f,
- 0xff,0xff,0xf5,0x9f,0xf7,0xa9,0x3e,0x47,0x9f,0xff,0xfd,0xdf,0xf7,0xfd,0x4d,0x7f,
- 0x5a,0x3d,0x6f,0x79,0x3e,0xf7,0x96,0xaf,0xfd,0x34,0x5d,0xbf,0xff,0xff,0xff,0xf7,
- 0xe7,0xff,0xff,0xff,0xfa,0xfe,0xb7,0xaf,0xa9,0xea,0xdf,0xff,0xbf,0xeb,0xff,0xff,
- 0xff,0xeb,0xff,0xff,0xfe,0xaf,0xbf,0xea,0xff,0xfd,0x2f,0xeb,0xff,0xff,0xff,0xff,
- 0xfe,0xe9,0xbf,0xff,0xff,0xff,0x5f,0xdf,0xf4,0xfd,0x3b,0x7f,0xff,0xf7,0xfd,0x7f,
- 0xff,0xf5,0xfd,0x7f,0xff,0xdf,0xf4,0xfd,0xff,0x5f,0xfb,0xa4,0xfd,0x7f,0xff,0xff,
- 0xff,0xff,0xf9,0x2e,0xff,0xff,0xff,0xff,0x7f,0xc7,0xdf,0xf7,0xbf,0x7f,0xff,0xfb,
- 0x7f,0xff,0xbf,0x5f,0xfc,0xff,0x9f,0xef,0xdb,0x7e,0xdf,0x7f,0x6f,0xdb,0x7d,0xff,
- 0xff,0xff,0xff,0xdf,0x17,0xfe,0xff,0xff,0xef,0xdb,0xfe,0xff,0xff,0xef,0xdb,0xff,
- 0xff,0xff,0xff,0xfe,0xe7,0xff,0x2b,0xff,0xff,0xbf,0xff,0xff,0xff,0xee,0xbf,0xbf,
- 0x6f,0xff,0xff,0xff,0xff,0xe6,0x7f,0xee,0xfd,0xbc,0x6e,0xdb,0xb6,0x7f,0xb3,0x6f,
- 0xbb,0xfe,0xdf,0xb7,0xed,0xf9,0xd7,0xbb,0xef,0xdb,0xd6,0x7f,0xbf,0x6f,0xf9,0xbe,
- 0x6f,0xbe,0xef,0xfb,0xfe,0xfd,0xfa,0x9b,0xff,0xff,0x7f,0xef,0x9b,0xe6,0xff,0xff,
- 0xdf,0xbf,0xff,0xff,0xff,0xff,0xff,0xef,0xfc,0xef,0xf7,0xfe,0xff,0xff,0x6f,0xbb,
- 0xfe,0xff,0xbe,0xff,0xff,0xff,0xfd,0xbd,0x9b,0xff,0xff,0xff,0xfb,0xfd,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xf7,0xef,0xff,0xff,0xbf,0xff,0xf7,
- 0xfe,0xfe,0xff,0xdf,0xff,0xff,0xff,0xff,0xef,0xfa,0x5f,0xff,0xfb,0x7f,0xdf,0xff,
- 0xfd,0x3f,0xff,0xdf,0xff,0xfd,0x7f,0xff,0xd7,0xb4,0x6f,0xdf,0xf7,0xfd,0xfd,0x3f,
- 0xdf,0xff,0xf4,0x7d,0x3b,0xff,0xff,0xff,0xff,0xfa,0xff,0x6f,0xff,0xff,0xdd,0xfe,
- 0xae,0xef,0xaf,0x7f,0xde,0xaf,0xff,0xa7,0xff,0xfa,0x7e,0x8f,0xfc,0xb3,0x7f,0xdf,
- 0xaf,0xfd,0xfe,0xb6,0xbf,0xaf,0xfe,0xbf,0xff,0xff,0xff,0xff,0xd1,0xff,0xff,0xff,
- 0xff,0xfd,0xd7,0xf5,0xfb,0xff,0x5e,0xff,0xff,0xff,0xfe,0x5e,0xb7,0xfb,0xff,0xde,
- 0xff,0xf5,0xdb,0xfb,0x5d,0xd3,0xf5,0xef,0x7f,0xff,0xff,0xff,0xff,0xf7,0x3f,0xff,
- 0xfe,0x7f,0x9f,0xe2,0xf8,0xbe,0x7f,0x9b,0xe7,0xf9,0xfc,0x7f,0x8b,0xe6,0x79,0xff,
- 0x8b,0xe7,0xf8,0xbe,0x7f,0x8b,0xe2,0xf8,0xbe,0x6f,0x9f,0xe7,0xf9,0xfe,0x7f,0xb7,
- 0xff,0xff,0xfe,0xfd,0x7f,0xff,0xf7,0xfe,0x7f,0xff,0xef,0xd7,0xef,0xfd,0x3f,0x4f,
- 0xff,0xff,0x7f,0xef,0xd7,0xfe,0xff,0xff,0x47,0xd7,0xfd,0xff,0xff,0xff,0xff,0xff,
- 0xea,0xff,0xff,0xff,0xff,0xef,0xef,0xfa,0xff,0xff,0xff,0xfd,0xfa,0xff,0xff,0xa7,
- 0xeb,0xff,0xff,0xbf,0xfd,0xfa,0xff,0xdf,0xef,0xeb,0xfa,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xf6,0xdf,0xfe,0xff,0xfb,0xfd,0xff,0xff,0xdf,0xdf,0xfd,0xff,0xff,0xfe,0xff,
- 0xfd,0xff,0x3f,0xbf,0xfd,0xff,0xff,0xdf,0xff,0xff,0xff,0x7f,0xdf,0xf7,0xff,0xff,
- 0xff,0xff,0xff,0x9b,0xff,0xff,0xff,0x7f,0xb7,0xbd,0xeb,0xfb,0x7f,0xb7,0xf7,0xff,
- 0xdf,0xff,0x9f,0xed,0xff,0xde,0xff,0xf7,0xeb,0xff,0x7f,0xb7,0xa7,0xef,0xfa,0xdf,
- 0xff,0xff,0xff,0xff,0xfb,0x2f,0xff,0xff,0xaf,0xfb,0xff,0xfc,0xbf,0x7f,0xd9,0xff,
- 0x7d,0x1f,0xff,0xdf,0xfc,0xff,0x2f,0xd3,0xf6,0xbc,0xbf,0x6f,0xff,0xff,0xfc,0x9d,
- 0xff,0xff,0xff,0xff,0xff,0xfd,0xef,0xfb,0xfa,0xfe,0xbf,0xaf,0xeb,0xba,0xb6,0xbf,
- 0xaf,0xeb,0xda,0xfe,0xad,0x8b,0xe3,0x4e,0xb7,0xad,0xeb,0x58,0xd6,0xbf,0xab,0xeb,
- 0xba,0xfe,0xbf,0xaf,0xeb,0xfa,0xff,0xc9,0xff,0xff,0xff,0x3f,0x7f,0xff,0xef,0xfb,
- 0x3e,0x37,0xbf,0xff,0xff,0xf7,0xf7,0xf3,0xbf,0xf7,0xbf,0xcf,0xff,0xfd,0xff,0xf7,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xf9,0x1f,0xff,0xfd,0xbf,0x7f,0xff,0x7f,
- 0xff,0xaf,0xff,0x7f,0xff,0xff,0xff,0xfe,0x7a,0xfb,0xfe,0xbf,0xb7,0xaf,0xfe,0xff,
- 0x7f,0xff,0xff,0xff,0x7f,0xff,0xff,0xfd,0xff,0xde,0x85,0xfb,0xff,0xfd,0xff,0xff,
- 0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xdd,0xef,0xbf,0x3f,0xff,0xf3,0xff,
- 0xff,0x2f,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xbf,0xec,0x7f,0xff,0xff,0xbf,
- 0xaf,0xeb,0xfe,0xfe,0x79,0xef,0xff,0xff,0xff,0xff,0xbf,0x7f,0xfe,0x3d,0xaf,0x68,
- 0xcb,0x3a,0x5f,0xee,0xab,0xfb,0xfa,0x7f,0xff,0xff,0xff,0xff,0xf8,0x9f,0xff,0xff,
- 0x5f,0xf5,0xdf,0x77,0xbf,0xff,0xfb,0xff,0xf7,0xff,0xff,0xfd,0xff,0xdf,0x1f,0xdd,
- 0xdf,0x76,0xed,0xff,0xef,0xfd,0x7e,0xdd,0xfe,0xff,0xff,0xff,0xff,0xff,0x91,0xff,
- 0xff,0xbf,0xff,0xdf,0xbf,0xf3,0xfe,0xef,0xbb,0xfb,0xff,0xff,0x7f,0xbf,0xcd,0xee,
- 0xfe,0x3f,0x8f,0xfb,0xfe,0xee,0xbb,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xe3,
- 0x7f,0xff,0xff,0xff,0xff,0xb6,0xfd,0xbf,0x3f,0xcf,0xff,0xff,0xff,0xff,0xdb,0xf7,
- 0xfd,0x7d,0xff,0xf5,0xfc,0xff,0x17,0xce,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x6f,0xbf,0xff,0xff,0xbf,0xff,0xbd,0xef,0xfb,0xf6,0xff,0xf3,0xff,0xff,0x5e,
- 0x6f,0xad,0xb9,0xbf,0xff,0xff,0xef,0xff,0xbb,0xfd,0xbf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xd5,0xf7,0xff,0xfc,0xbf,0xff,0xdf,0xff,0xf8,0xfb,0xff,0xff,0xfe,0x5f,
- 0xff,0xfb,0xfb,0xf7,0xce,0x1f,0xfb,0xe2,0xdf,0xef,0xb9,0xfe,0xfe,0x7f,0xf7,0xff,
- 0xff,0xff,0xff,0xfd,0xbe,0xff,0xff,0xdf,0xff,0xfb,0xf9,0xff,0x9f,0xff,0xff,0xff,
- 0xff,0xff,0xfe,0xff,0xfa,0xff,0xfb,0xff,0xe7,0xdf,0x7f,0x77,0xff,0xfb,0xfb,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x83,0xbf,0xff,0xfb,0xff,0xf7,0xfd,0x33,0xff,0xfd,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0x7f,0xdb,0xc7,0x5d,0x7f,0x1b,0xf7,0xf3,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0xbf,0xff,0xdf,0xff,0xff,0xfe,0xfa,0xff,0xf9,
- 0xeb,0xff,0xff,0xdf,0xf7,0xff,0xfb,0xff,0xf7,0xcd,0x79,0xee,0xf6,0x3f,0xf7,0xff,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x5f,0xef,0xff,0xff,0xff,0x7f,0xd7,0x7f,
- 0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0xfd,0xfd,0xfc,0xdf,0xdd,0xfd,0xf7,
- 0xff,0xff,0x5f,0xff,0xff,0xff,0xff,0xff,0xff,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0xff,0xff,0xdf,0xf3,0xfd,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0xff,0xbf,0x3f,0xfb,0xff,0xff,0xff,0xff,0xff,0xc9,0x6b,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0x9f,0xbf,0xff,0xfe,0xff,0xff,
- 0xff,0xef,0xdf,0xf3,0xfc,0xff,0x7f,0xff,0xff,0xff,0xff,0xd7,0x6f,0x7f,0xff,0xff,
- 0xff,0xff,0xfc,0xb7,0xff,0xff,0xf4,0xbf,0xff,0xff,0xff,0xff,0xef,0xff,0x9f,0xe7,
- 0xff,0xff,0x5b,0xff,0xfe,0xbd,0x27,0xef,0xff,0xff,0xff,0xff,0xfb,0xd1,0xbf,0xff,
- 0xff,0xff,0xff,0xff,0x36,0xff,0xff,0xfe,0xd7,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,
- 0xfc,0xff,0xff,0xef,0xff,0x7e,0xd7,0xb6,0xfd,0xff,0xff,0xff,0xff,0xff,0xd9,0xb7,
- 0xff,0xff,0xff,0xff,0xfa,0xfe,0xb7,0xaf,0xeb,0xef,0xff,0xff,0xff,0xeb,0xff,0x7f,
- 0xaf,0xfb,0xff,0xf5,0xfe,0x7f,0xeb,0x42,0x79,0xbb,0x3f,0xff,0xff,0xff,0xff,0xff,
- 0x46,0xff,0xff,0xff,0xff,0xff,0x57,0xd6,0xf5,0x7d,0x5f,0xf7,0xff,0xff,0xfd,0x5f,
- 0x7e,0xb5,0x7f,0xde,0xf7,0xfd,0x8f,0x69,0x6e,0x4d,0x1f,0xf7,0x7f,0xff,0xff,0xff,
- 0xff,0x7a,0xdf,0xff,0xff,0xff,0xff,0xeb,0xfa,0xfe,0xbf,0xaf,0xeb,0xff,0xf5,0xff,
- 0xaf,0xff,0xde,0xbf,0xff,0xbf,0xff,0xff,0xf7,0xad,0xab,0xfa,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xfa,0x1f,0xff,0xff,0xff,0xff,0xfd,0x7f,0x5f,0xd7,0xf5,0xe9,0x7f,0xff,
- 0xff,0xf5,0xff,0xf1,0xd7,0xff,0xfd,0xff,0x7f,0xff,0xa5,0xfd,0x3f,0x7f,0xdf,0xff,
- 0xff,0xff,0xff,0xff,0xf3,0xfe,0xdf,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xfe,0xdf,0xe7,0xff,0xff,0xff,0xbf,0xef,0xf7,0xf7,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xfd,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfe,0x7f,0xbf,0xff,0xfa,0xff,0xbf,0xbf,0xff,
- 0xdf,0xff,0xff,0xff,0xff,0xff,0xfe,0x87,0xff,0xef,0xfb,0xfe,0xff,0xbf,0x6f,0xfb,
- 0x7e,0xff,0xb7,0xef,0xfb,0xfe,0xff,0xbc,0x7b,0xf6,0xef,0xbf,0xee,0xdb,0xf6,0xf9,
- 0x9f,0xef,0xfb,0x7e,0xff,0xbf,0xef,0xff,0x89,0xbf,0xff,0xff,0xff,0xff,0xff,0xcf,
- 0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfc,0xff,0xbf,0xef,0xf3,0xfc,
- 0xf9,0xff,0xef,0xbf,0xff,0xff,0xff,0xff,0xff,0xda,0xbf,0xff,0xff,0xff,0xff,0xff,
- 0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xbf,0xdf,0xf7,0xfe,
- 0xff,0xbf,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x25,0xff,0xff,0xbf,0xff,
- 0xff,0xfe,0xff,0xff,0xef,0x7f,0xff,0xff,0xff,0xff,0xfe,0xcf,0xef,0xff,0xfb,0xde,
- 0xb7,0xff,0xff,0xff,0x4f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xdb,0xbf,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xfb,0xf7,0xdf,0xf7,
- 0xfd,0xdf,0x7d,0xdf,0xbb,0xeb,0xdf,0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xff,
- 0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,
- 0xaf,0xff,0xfe,0xff,0xff,0xbf,0xfd,0x7b,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xa3,
- 0xff,0xff,0xe7,0xf9,0xfe,0x7f,0x8f,0xe7,0xf9,0xbe,0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,
- 0x9e,0xf9,0xfe,0x7f,0x9f,0xe7,0xf8,0xfe,0x2f,0x1b,0xe7,0xf9,0xfe,0x7f,0x9f,0xe7,
- 0xf5,0x7f,0xff,0xff,0xef,0xff,0xfe,0xfd,0x7f,0xef,0xf3,0xff,0xff,0xff,0xff,0xfb,
- 0xfc,0x7f,0xff,0xfb,0xfe,0x7f,0xbf,0xe7,0xd7,0xfd,0xeb,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xde,0x6f,0xff,0xff,0xfd,0xff,0xff,0xdf,0xaf,0xfd,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xbf,0xff,0xff,0x7f,0xff,0xf7,0xef,0xfa,0xfe,0xff,0xbf,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xcd,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,
- 0xff,0xff,0xef,0xff,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xf7,0xff,0xff,0x7e,0xf7,0xf7,0xf9,0xff,
- 0xff,0xff,0xff,0xfd,0xff,0x7f,0xef,0xed,0xff,0x7f,0xdf,0xf7,0xef,0x7b,0xf6,0xb7,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xfd,0xff,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x6f,0xff,0xfd,0xaf,0x7f,0xdf,0xf6,0x7c,0xbf,0x73,
- 0xdb,0xf4,0xff,0xff,0xff,0xff,0xff,0xec,0xfd,0xff,0xab,0xeb,0xfa,0xbe,0xbf,0xaf,
- 0xeb,0xfa,0xfe,0xbf,0xaf,0xeb,0xfa,0xfe,0xad,0xeb,0x7a,0xde,0xbd,0xae,0xcb,0x32,
- 0xf4,0xb7,0xaf,0xeb,0xfa,0xfe,0xbf,0xaf,0xf5,0x1b,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xfd,0xff,0x3f,0xff,0xff,0xfc,0x78,0xdf,0xff,0xf3,0xfe,0xff,0xff,0x9d,
- 0xff,0xff,0xff,0x3f,0xef,0xff,0xff,0xff,0xff,0xfd,0xc9,0xfd,0xff,0xf7,0xfd,0xff,
- 0xff,0xff,0xf7,0xff,0xaf,0xff,0xff,0xff,0xfe,0xbf,0xf9,0xdf,0x7f,0xff,0xff,0xff,
- 0xff,0xef,0xf9,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe2,0x5f,0xff,0xfd,0xf7,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,0xef,0xff,0xff,0xdc,0xef,0xbf,0xbe,
- 0xbf,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xa7,0xff,0xff,
- 0xff,0xff,0xff,0xdf,0xa7,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xfe,
- 0xfe,0xaf,0xef,0xa7,0xf8,0xfe,0x3f,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xe1,0xff,
- 0xff,0xf7,0xff,0xff,0xff,0xf5,0xdf,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xfd,0x7b,
- 0xf5,0xbd,0xfb,0x7f,0xbf,0xff,0xbf,0xef,0x7f,0xdf,0xff,0xff,0xff,0xff,0xfb,0xfe,
- 0x1f,0xdf,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,
- 0xfa,0xff,0xff,0xfa,0xfe,0xbf,0xef,0x7a,0xff,0xbe,0xef,0xfb,0xff,0xff,0xef,0xff,
- 0xff,0x96,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xfb,
- 0xff,0xfb,0xdf,0x77,0xff,0x6f,0x9e,0xf3,0xfc,0xef,0x5f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xf4,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xab,0xf7,0xff,0xed,0xfb,0x6f,0xbf,0xeb,0xff,0xff,0xdf,0xff,0xff,
- 0xff,0xff,0xf3,0xfd,0x5f,0x7f,0xff,0xff,0xff,0xef,0xff,0x3f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xbf,0x8f,0x7f,0xbf,0xff,0xff,0xfd,0x4f,0xf3,0xfc,0xfd,0x3f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xbb,0xef,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xdf,0xff,0xff,0xef,0xbf,0xff,0xfb,0xff,0xfd,0xff,0x7d,0xdd,0xf7,
- 0xff,0xff,0xff,0xff,0x7f,0xff,0xf0,0x7f,0xff,0xff,0xff,0xff,0xff,0xee,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5d,0xff,0xaf,0xe3,0xff,0x1f,0xc7,0xf9,
- 0xfe,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xbf,0xfb,0xbf,0xef,0xfb,0xfe,
- 0xff,0x3b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb1,0xfb,0xff,0xff,0xff,0xff,0xfd,
- 0xbf,0xff,0xdf,0xff,0xff,0xff,0xff,0xfe,0xf7,0xff,0xff,0xf7,0xff,0xef,0xfb,0xfe,
- 0xdf,0xd7,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfe,0x0b,0xff,0xff,0xbf,0xff,
- 0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xd4,0xff,0xff,0xf7,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xfe,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xe6,0xd7,0xff,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xbf,
- 0xff,0xff,0x9f,0xff,0xbc,0xaf,0x4b,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xbe,0xcb,
- 0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,
- 0xd7,0xff,0xff,0xff,0xfe,0x5f,0xb5,0xfd,0x7f,0xff,0xff,0xff,0xff,0xff,0xfe,0x7d,
- 0xd9,0x7f,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xbf,0x4f,0xd2,0xc9,0xbd,0x3d,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xea,0x2d,0xff,0xff,0x77,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xf7,0xff,0xff,0x7b,0xdf,0x5a,0x9f,0xa7,0xbf,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xf7,0x4d,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0x5f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xfe,0xff,0xeb,0xfa,0xde,0xbf,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x80,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xfd,0x7f,0xff,0xff,0xff,0xfd,0x7f,0x5f,0xd7,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xfc,0xbf,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0x3f,0xc7,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x07,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x7f,0xff,0xfb,0xde,
- 0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xe8,0x7f,0xfe,0xff,0xbf,0xef,0xfb,0xfe,
- 0xff,0xbf,0xef,0xfb,0xfe,0xff,0xbf,0xef,0xfb,0xff,0xbf,0xef,0x5b,0xf6,0xfd,0xbf,
- 0x6f,0xdb,0xfe,0xff,0xbf,0xef,0xfb,0xfe,0xff,0xfb,0xdf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xfd,
- 0xfe,0xdf,0x9b,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,
- 0xff,0xff,0xff,0x7f,0xdf,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xaf,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x9f,0xff,0xff,0xff,0xff,0xff,0xf9,
- 0xff,0xfd,0xdd,0x77,0x6a,0xfb,0xae,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xec,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xff,0xff,0xff,0xff,0xff,
- 0xef,0x7f,0xff,0xff,0xff,0xfd,0xf3,0xfd,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xf3,0x3f,0xff,0xfe,0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,0xe2,0xe9,0xfe,0x7f,0x9f,
- 0xe7,0xf9,0xef,0x9f,0xe6,0xe9,0xbe,0x6f,0x1f,0xe2,0xe9,0xfe,0x7f,0x9f,0xe7,0xf9,
- 0xfe,0x7f,0x67,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xf7,0xf9,0x7f,0xff,0xfb,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xe8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xef,
- 0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xef,0xfe,0xfd,0xbf,0xef,0xef,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xb7,0xff,0xff,0xf7,0xff,0xff,0xfd,0xff,0xf7,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3b,0xfe,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,
- 0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfe,0xfd,0xff,0xd6,0xf7,0xbd,
- 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xf4,0x3f,0xff,0xff,0x4f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfe,0xff,0xf2,0xfd,0xff,0xff,0xff,
- 0xf2,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xee,0x8f,0xff,0xfa,0xfe,0xbf,0xab,0xeb,
- 0xfa,0xbe,0xbf,0xab,0xcb,0xfa,0xbe,0xbf,0xaf,0xeb,0xde,0xaf,0xaf,0xeb,0xda,0xde,
- 0xaf,0xae,0xea,0xfa,0xde,0xbf,0xaf,0xeb,0xfa,0xff,0xc5,0xff,0xff,0xfa,0xfd,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xef,0xef,
- 0xff,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xf8,0x9f,0xff,0xff,0xff,
- 0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7e,0x65,0xff,0xff,
- 0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xdf,0xff,
- 0xff,0xfd,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xf2,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0xfe,0xfd,0xff,0x7f,
- 0xdf,0xf7,0xe3,0xfe,0x7f,0x9f,0xae,0xed,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x9f,0xff,0xfb,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x7f,
- 0xff,0x7d,0xdf,0xdd,0xff,0xbf,0x7f,0xea,0xff,0xbf,0xff,0xff,0xff,0xbf,0xff,0xff,
- 0xff,0xe1,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xe7,0xef,0xff,0xff,0xff,0xff,0xfb,0x7f,0xdf,0xff,0xff,0xff,0xff,0xff,0xfe,
- 0xff,0xff,0xf1,0x7f,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,
- 0xff,0xd7,0xfb,0x7d,0xff,0xfd,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xff,
- 0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xfb,0x9f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,
- 0xff,0xff,0xfe,0xff,0xff,0xd5,0xff,0xbf,0xbf,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf4,0xff,0xff,0xc7,0xdf,0xff,0xfb,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xef,0xfd,0xbf,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfe,0xf7,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb7,0xff,0xff,0xbf,0xf7,0xff,0xff,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xeb,0xff,0xff,0xff,0xfd,0xdf,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xef,0xf7,0xfd,0xff,0x7f,0xdf,
- 0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xfb,0xff,0xff,0xf7,0xfa,0xdf,0xef,0xff,0xff,0xbf,
- 0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xdf,0xdf,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xb0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xf9,0xff,0xff,0xf5,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xc6,0x6b,0xfc,
- 0xff,0x3b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xbf,0xaf,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xd7,0xcf,
- 0x7f,0xef,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xfb,
- 0xfd,0xbf,0xf7,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xdb,0x37,0xff,0xbd,0x6f,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xeb,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xef,0xff,
- 0xff,0xff,0xbf,0xa6,0xff,0xdd,0xa7,0x77,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfd,0x5f,0x57,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0x7d,
- 0xdf,0xff,0xff,0xff,0x7a,0xdf,0xfe,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xaf,0xeb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,
- 0xbf,0xbf,0xff,0xff,0xff,0xf8,0xdf,0xff,0x7f,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xf5,0xfd,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xd7,0xf7,0xff,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x7e,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xf5,0x7f,0xef,0xf9,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xeb,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbe,0x07,0xfe,0xed,0xfb,0xfe,0xff,
- 0xbf,0xef,0xfb,0xfe,0xff,0xbf,0xef,0xfb,0xfe,0xff,0xb7,0xfb,0xfe,0xff,0xbe,0xef,
- 0xfb,0xfe,0xff,0xbf,0xef,0xfb,0xfe,0xff,0xbf,0xef,0xff,0xb1,0xbf,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xde,0xbf,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xff,
- 0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xed,0x7f,0x5f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xff,0xff,0xf4,
- 0xff,0xfa,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xa7,0xe9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe9,0xff,0xff,
- 0xff,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xef,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x7f,
- 0xff,0xff,0xeb,0xff,0xff,0xe7,0xf9,0xfe,0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,0xe7,
- 0xf9,0xfe,0x7f,0x9f,0xf9,0xfe,0x7f,0x1f,0xe7,0xf9,0xfe,0x7f,0x9f,0xe7,0xe9,0xfe,
- 0x2f,0x9f,0xe7,0xe3,0x7f,0xfd,0x7f,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xef,0xd7,0xf4,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,
- 0xff,0xff,0xff,0xff,0xfe,0x4f,0xff,0xaf,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfa,0xfe,0x9d,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xef,0xff,0xff,0xff,0xff,0xed,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x3f,0xfd,0xff,0xff,0xfd,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0x7f,0xf7,0xfd,0xff,0x77,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x83,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xef,0xfb,0xf7,0xff,0xff,0xf9,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,0xc0,0xdd,0xff,0xad,0xeb,0x7a,
- 0xfe,0xbf,0xad,0xeb,0xfa,0xfe,0xbf,0xaf,0xeb,0xfa,0xfe,0x8f,0xe9,0x7a,0xbe,0xaf,
- 0xaf,0xea,0xfa,0xfe,0xbf,0x2b,0xeb,0xda,0xfe,0xbf,0xaf,0xfd,0x5f,0xfd,0xff,0xff,
- 0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,
- 0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xa9,0x5f,
- 0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0x7f,0xf7,0xff,0xff,0xff,0xff,0xfd,
- 0xfb,0xff,0xff,0xdf,0xff,0xf7,0xbf,0xef,0xf3,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,
- 0x47,0xfd,0xf7,0xfd,0xff,0xff,0xf7,0xfe,0xff,0xff,0xff,0xdf,0xff,0xdf,0xff,0xff,
- 0xff,0xbf,0xaf,0xbf,0xff,0xfd,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xfe,0xbf,0xff,
- 0xff,0xc1,0xff,0xff,0xe7,0xf5,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xbf,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,
- 0xff,0xfb,0xdf,0x1f,0xfd,0xdf,0xff,0xf3,0xff,0xff,0xff,0xef,0xf3,0xfc,0xff,0xfb,
- 0xff,0xfb,0xf6,0xfe,0xef,0xff,0xff,0xff,0xfd,0x7f,0x5b,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0x97,0xff,0xd7,0x75,0x7d,0xbf,0x7f,0xfb,0xfb,0xfd,0xff,0xff,
- 0xd3,0xff,0xfd,0xbf,0x2f,0xc4,0xff,0xbf,0xff,0xfb,0x7f,0xbc,0xff,0xef,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xbe,0xff,0xff,0xff,0xff,0xef,0xfb,0xff,0xff,0xff,0xef,
- 0xff,0xff,0xff,0xff,0xe7,0x6f,0xf9,0xdf,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x5f,0xf7,0xf7,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb5,0x7f,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xdf,0xfb,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xef,0xff,0xff,0xfb,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0x7d,0xff,0x5f,0x5f,0xd7,0xff,
- 0xff,0xff,0xff,0xd6,0x75,0x5f,0xf7,0xde,0xff,0xff,0xff,0xdf,0xfd,0x3f,0xdf,0xf7,
- 0x5d,0xf7,0xdd,0xff,0xff,0x5f,0xff,0xff,0x7f,0xff,0xde,0xe7,0xdf,0x8f,0xfb,0xff,
- 0x7f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xeb,0xfe,0xdf,0xbf,0xf7,0xfe,0xff,0xbf,
- 0xff,0xff,0xfc,0xff,0xbf,0xff,0xfb,0xff,0xff,0xbf,0xff,0xff,0x95,0xf7,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xfd,0xfb,0xb3,0xf7,0x6f,0xff,0xbf,
- 0xf7,0xbf,0xff,0xff,0xdf,0xd7,0xff,0xff,0x77,0xff,0xef,0xbf,0xfb,0xfc,0xbb,0xff,
- 0x8f,0xe7,0xf9,0x7e,0x7f,0x9b,0xe7,0xf9,0xfe,0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,0xe7,
- 0xf9,0xf6,0x5f,0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,0xe7,0xf9,0xfe,0x7f,0x9f,0xfc,0x16,
- 0xff,0xf3,0xfa,0xff,0xb7,0xed,0xfb,0x7e,0xff,0xbf,0xcf,0xfb,0x7a,0xfe,0xbf,0xcf,
- 0xfe,0xfe,0xbd,0xcf,0xfb,0xfe,0xff,0xbf,0xcf,0xfb,0xfe,0xff,0xbf,0xef,0xfb,0xff,
- 0xa4,0xcf,0xfe,0x7f,0x9d,0xe7,0xfb,0xfe,0xff,0xbf,0xe7,0xb9,0xfe,0xff,0xbf,0xe7,
- 0x78,0xfd,0x9f,0x67,0xfb,0xf8,0xf5,0xaf,0x67,0xdb,0xfe,0xff,0xbf,0xef,0xeb,0xac,
- 0xff,0xfe,0x9f,0xff,0xdf,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xfe,
- 0xff,0xff,0xef,0xff,0xff,0xbf,0xf7,0x7f,0xff,0xff,0xbf,0xbf,0xff,0xff,0xff,0xfd,
- 0xfd,0xff,0xfd,0xc3,0xff,0xfb,0xde,0xf7,0xbf,0xef,0xfb,0xbe,0xff,0xae,0xe7,0xfb,
- 0xfe,0xff,0xbd,0xe7,0xfe,0xbd,0xbf,0xe7,0xfb,0xfe,0xef,0xbd,0xef,0xfb,0xfe,0xff,
- 0xbf,0xef,0xfb,0xff,0xfa,0x7f,0xfc,0xff,0x37,0xcf,0xf3,0xfc,0xff,0x3f,0xcf,0xd3,
- 0x7c,0xff,0x3f,0xcf,0xf3,0xff,0x3f,0xcf,0xf3,0xfe,0xef,0x3f,0xcf,0xf3,0xfc,0xff,
- 0x3f,0xcf,0xfb,0xf6,0xef,0xfe,0x0f,0xff,0xb7,0xed,0xfb,0x7e,0xff,0xbf,0x6f,0xfb,
- 0x7e,0xdb,0xbf,0xef,0xfb,0x7a,0xdf,0xed,0xeb,0x7e,0xff,0xbe,0xef,0xdb,0x7e,0xff,
- 0xbf,0xcf,0xfb,0xfe,0xff,0xbf,0xfb,0xe5,0xff,0xfb,0xfe,0xff,0xbf,0xe5,0xf9,0x7e,
- 0x5f,0xbf,0xef,0xf9,0x7e,0x5f,0xbf,0xef,0xfa,0xff,0xbf,0xe5,0xf9,0x7e,0xdf,0xbf,
- 0xe5,0xf9,0x7e,0x5f,0x97,0xed,0xf9,0x7f,0xf9,0xbf,0xff,0x5b,0xd7,0xf5,0xfd,0xff,
- 0x7d,0xdf,0xf5,0xfd,0x7f,0x7f,0xdb,0xf5,0xfd,0x37,0xd7,0xf5,0x7d,0xf7,0x7f,0xd7,
- 0xf5,0xfd,0xef,0x7b,0xdf,0xf7,0xfd,0x7f,0x7f,0xff,0x97,0xff,0xf7,0xfd,0xff,0x7f,
- 0xff,0xff,0xbf,0xff,0x7f,0xdf,0xff,0xff,0xff,0x7f,0xdf,0xbd,0xff,0x7f,0xff,0xff,
- 0xfd,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xfb,0xf0,0xff,0xed,0xff,0x6f,
- 0xdb,0xf6,0xfd,0xb7,0xed,0xdf,0xf7,0xfd,0xff,0x7f,0xde,0xf5,0xfb,0x6f,0xdb,0xf7,
- 0xfd,0xbf,0x7d,0xdb,0xf7,0xff,0xff,0x6f,0xfb,0xf7,0xfd,0xff,0x7e,0xdf,0xff,0xf7,
- 0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xdf,0xfb,0xff,0xff,0xff,0xff,0x7f,0xff,
- 0xfb,0xff,0xff,0xbf,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xfd,
- 0xfd,0xff,0x7f,0xdf,0xf7,0xfd,0xff,0x7f,0xd7,0xf7,0xfd,0xff,0x7d,0xdf,0xf7,0xff,
- 0x7f,0xdf,0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xfd,0xff,0x7f,0xdf,0xf7,0xfd,0xff,0xf5,
- 0x7b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xfe,0xff,0xff,0xdf,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xfc,0xff,0xff,0xdf,0xff,0xff,0xff,
- 0xff,0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xf7,
- 0xfb,0xff,0xb7,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xef,0xff,0xff,
- 0xff,0xff,0x7f,0xf4,0xff,0xff,0xef,0xff,0xff,0xfe,0xff,0xef,0xff,0xfe,0xff,0xff,
- 0xcf,0xfb,0xff,0xbe,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x57,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0x7f,0xdf,0xff,0xfd,0xff,
- 0x7f,0xdf,0xf7,0xff,0xff,0xff,0xee,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0x8b,0xdf,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0x7f,0xff,0xfb,0xfe,0xff,
- 0xbf,0xef,0xfb,0xfe,0xff,0xbf,0xef,0xfb,0xfe,0xff,0xbf,0xef,0xfe,0xff,0xbf,0xef,
- 0xfb,0xfe,0xff,0xbf,0xef,0xfb,0xfe,0xff,0xbf,0xef,0xfb,0xfe,0xcf,0xff,0xcf,0xf3,
- 0xfc,0xff,0xbf,0xef,0xfb,0xfc,0xff,0x3f,0xef,0xf3,0xfc,0xff,0x3f,0xb3,0xfc,0xff,
- 0x3f,0xef,0xf3,0xfc,0xff,0x3f,0xef,0xf3,0xfe,0xff,0x3f,0xef,0xff,0xfd,0xff,0xff,
- 0xbf,0xef,0xff,0xff,0xef,0xff,0xfe,0xff,0xff,0xff,0xfb,0xff,0xfb,0xff,0xf7,0xff,
- 0xfb,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x3f,
- 0xfe,0xfe,0xbb,0xaf,0xeb,0xfa,0xff,0xbf,0xae,0xeb,0xba,0xfe,0xfb,0xee,0xeb,0xfb,
- 0xbb,0xae,0xef,0xbe,0xff,0xbb,0xee,0xef,0xbe,0xff,0xfb,0xef,0xfb,0xbe,0xef,0xff,
- 0x17,0xff,0x75,0xad,0xab,0x4a,0xba,0xef,0xeb,0xaf,0x6a,0xda,0xae,0xb5,0xfb,0x7a,
- 0xd2,0xbd,0xab,0x7a,0x5f,0xaf,0xed,0x7b,0x7a,0x5f,0xaf,0xe5,0xfa,0xfe,0xdb,0xbf,
- 0xe2,0xd4,0xff,0xff,
diff --git a/board/esd/dasa_sim/u-boot.lds b/board/esd/dasa_sim/u-boot.lds
deleted file mode 100644
index fef5b52433..0000000000
--- a/board/esd/dasa_sim/u-boot.lds
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/extable.o (.text)
- lib_ppc/board.o (.text)
- lib_generic/zlib.o (.text)
- lib_generic/crc32.o (.text)
-
- common/cmd_boot.o (.text)
- common/cmd_bootm.o (.text)
- common/cmd_flash.o (.text)
- common/cmd_mem.o (.text)
- common/cmd_nvedit.o (.text)
- common/console.o (.text)
- common/lists.o (.text)
- common/main.o (.text)
-
- board/esd/dasa_sim/flash.o (.text)
- common/cmd_nvedit.o (.text)
- board/esd/dasa_sim/cmd_dasa_sim.o (.text)
- net/bootp.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/esd/dp405/Makefile b/board/esd/dp405/Makefile
deleted file mode 100644
index df487662fd..0000000000
--- a/board/esd/dp405/Makefile
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common/xilinx_jtag)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-# Objects for Xilinx JTAG programming (CPLD)
-CPLD = ../common/xilinx_jtag/lenval.o \
- ../common/xilinx_jtag/micro.o \
- ../common/xilinx_jtag/ports.o
-
-COBJS = $(BOARD).o flash.o ../common/misc.o $(CPLD)
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/dp405/config.mk b/board/esd/dp405/config.mk
deleted file mode 100644
index 3041b772d2..0000000000
--- a/board/esd/dp405/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (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
-#
-
-#
-# esd VOH405 boards
-#
-
-TEXT_BASE = 0xFFFC0000
-#TEXT_BASE = 0x00FC0000
diff --git a/board/esd/dp405/dp405.c b/board/esd/dp405/dp405.c
deleted file mode 100644
index 240ab78aa7..0000000000
--- a/board/esd/dp405/dp405.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* fpga configuration data - not compressed, generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-int filesize = sizeof(fpgadata);
-
-
-int board_early_init_f (void)
-{
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-
- /*
- * Reset CPLD via GPIO13 (CS4) pin
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~(0x80000000 >> 13));
- udelay(1000); /* wait 1ms */
- out32(GPIO0_OR, in32(GPIO0_OR) | (0x80000000 >> 13));
- udelay(1000); /* wait 1ms */
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- /* adjust flash start and offset */
- gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
- gd->bd->bi_flashoffset = 0;
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
- unsigned char trans[16] = {0x0,0x8,0x4,0xc,0x2,0xa,0x6,0xe,
- 0x1,0x9,0x5,0xd,0x3,0xb,0x7,0xf};
- unsigned char id1, id2;
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming DP405");
- } else {
- puts(str);
- }
-
- id1 = trans[(~(in32(GPIO0_IR) >> 5)) & 0x0000000f];
- id2 = trans[(~(in32(GPIO0_IR) >> 9)) & 0x0000000f];
- printf(" (ID=0x%1X%1X, PLD=0x%02X)\n", id2, id1, in8(0xf0001000));
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
diff --git a/board/esd/dp405/flash.c b/board/esd/dp405/flash.c
deleted file mode 100644
index 89af1190a8..0000000000
--- a/board/esd/dp405/flash.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- switch (size_b0) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/dp405/fpgadata.c b/board/esd/dp405/fpgadata.c
deleted file mode 100644
index eae8457ca2..0000000000
--- a/board/esd/dp405/fpgadata.c
+++ /dev/null
@@ -1,1812 +0,0 @@
- 0x07,0x20,0x12,0x00,0x12,0x01,0x04,0x00,0x00,0x00,0x00,0x02,0x08,0xff,0x02,0x08,
- 0xfe,0x08,0x00,0x00,0x00,0x20,0x01,0x0f,0xff,0xff,0xff,0x09,0x00,0x00,0x00,0x00,
- 0xf9,0x60,0x40,0x93,0x02,0x08,0xff,0x02,0x08,0xff,0x02,0x08,0xe8,0x08,0x00,0x00,
- 0x00,0x06,0x01,0x00,0x09,0x05,0x00,0x02,0x08,0xed,0x04,0x00,0x03,0x0d,0x40,0x08,
- 0x00,0x00,0x00,0x12,0x01,0x00,0x00,0x00,0x09,0x03,0xff,0xff,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x03,0x09,0x03,0xff,0xfd,0x03,0xff,0xfd,0x04,0x00,0x00,0x00,0x00,0x02,
- 0x08,0xea,0x08,0x00,0x00,0x00,0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x00,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x00,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x00,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x00,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x48,0x00,
- 0x40,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x4c,0x00,0x80,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x00,
- 0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x00,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x00,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x00,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,
- 0xa0,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x00,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x01,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x04,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x08,0x00,
- 0x00,0x01,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x10,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x01,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x01,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x01,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x01,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x01,0x80,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x01,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x01,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x01,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x01,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x01,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x01,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x01,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x02,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x02,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x02,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x02,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x02,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x02,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x02,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x02,0x80,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x02,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x02,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x02,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x02,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x02,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x02,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x03,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x03,0x08,0x00,0x80,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x10,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x20,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x03,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x03,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x03,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x03,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x03,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x03,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,
- 0x48,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x03,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x03,0x80,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x03,0x84,0x00,
- 0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x03,0x88,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x03,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x03,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x03,0xa0,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x03,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x03,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x04,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x04,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x04,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x04,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x04,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x04,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x04,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x04,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x04,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x04,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x04,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x04,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x04,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x04,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x04,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x04,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x05,0x00,0x00,0x00,0xc4,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x05,0x04,
- 0x00,0x00,0xc4,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x05,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x05,0x0c,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x05,0x10,0x00,0x00,0xc4,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x05,0x20,0x00,0x00,0x80,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x05,0x24,0x00,0x00,0x80,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x05,0x28,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,
- 0x2c,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x30,
- 0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x40,0x00,
- 0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x05,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x05,0x80,0x20,
- 0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x05,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x05,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,
- 0x8c,0x00,0x00,0x30,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xa0,0xc0,
- 0x00,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xac,0x00,0x00,0x20,0x41,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xc0,0x08,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x05,0xcc,0x00,0x00,0x20,0x81,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x05,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x06,0x02,0x00,0x03,0x03,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x06,0x04,0x01,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x06,0x09,0x00,0x03,0x03,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x0c,0x00,0x03,0x03,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x12,0x01,0x03,0x03,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x21,0x00,0x03,0x03,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x24,0x02,0x03,0x03,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x2b,0x43,0x0b,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x06,0x2c,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x06,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x06,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x06,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x06,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x06,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x06,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x06,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x06,
- 0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x06,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x06,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x06,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x06,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x06,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x06,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x06,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xc0,
- 0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x06,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x07,0x02,
- 0x00,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x07,0x04,0x01,0x01,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x07,0x09,0x00,0x01,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x07,0x0c,0x00,0x03,0x35,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,
- 0x12,0x01,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x21,
- 0x00,0x03,0x02,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x24,0x02,
- 0x02,0x40,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x2b,0x03,0x03,
- 0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x2c,0x02,0x02,0x20,
- 0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x40,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x4c,0x00,0x00,0x20,0x81,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x07,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x07,0x82,0x00,0x00,0xc6,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x07,0x84,0x01,0x01,0xc4,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x07,0x88,0x00,0x01,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x8c,0x00,0x01,0xc0,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x92,0x01,0x00,0xc0,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xa1,0x00,0x00,0x82,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xa4,0x02,0x00,0x80,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xaa,0x01,0x01,0x82,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xac,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x07,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x07,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x07,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x07,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x07,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x07,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x08,0x02,0x00,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x08,0x04,0x01,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x08,0x08,0x00,0x02,0x0a,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x0c,0x00,0x03,0x02,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x08,0x12,0x01,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x08,0x21,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x08,0x24,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x08,0x2a,0x03,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x08,0x2c,0x00,0x02,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x08,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x08,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x08,
- 0x80,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x08,0x84,0x00,0x02,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x08,0x88,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x08,0x8c,0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x08,0x90,0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,
- 0xa0,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xa4,
- 0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xa8,0x00,
- 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xac,0x00,0x02,
- 0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x08,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x09,0x00,0x00,0x02,0x00,0x21,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x08,0x00,
- 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x0c,0x00,0x02,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x10,0x00,0x02,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x20,0x00,0x02,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x24,0x00,0x03,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x2c,0x02,0x02,0x02,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x09,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x09,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x09,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x09,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x09,0x80,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x09,0x84,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x88,0x00,0x02,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x8c,0x00,0x00,0x02,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x90,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x09,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x09,0xa4,0x00,0x01,0x0a,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x09,0xa8,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x09,0xac,0x02,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x09,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x09,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x0a,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x0a,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0a,0x0c,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0a,0x10,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0a,0x20,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,
- 0x24,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x2c,0x00,
- 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x40,0x00,0x00,0x04,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x44,0x00,0x80,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x0a,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0a,0x80,0x00,0x01,0x00,
- 0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xa4,0x10,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xc0,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0a,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0a,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0a,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x0b,0x02,0x00,0x01,0x02,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x0b,0x04,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0b,0x08,0x00,0x01,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x0c,0x00,0x01,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x12,0x01,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x21,0x02,0x04,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0b,0x24,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0b,0x2a,0x01,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0b,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0b,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0b,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0b,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0b,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x0b,0x80,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0b,0x84,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x0b,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0b,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0b,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0b,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0b,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xc4,0x04,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x0b,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0c,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x24,0x00,0x02,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x2c,0x00,0x02,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x44,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0c,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0c,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x0c,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0c,0x80,0x00,0x01,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x0c,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0c,0xa8,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0c,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0c,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0c,0xc0,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0c,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0c,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x0d,0x02,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0d,0x04,
- 0x01,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x0d,0x09,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0d,0x0c,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0d,0x12,0x01,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0d,0x21,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0d,0x24,0x02,0x03,0x0b,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0d,0x2b,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,
- 0x2c,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x0d,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0d,0x80,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0d,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x0d,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xa0,0x00,
- 0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0d,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x0d,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0e,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x0e,0x04,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0x08,0x00,0x80,0x00,
- 0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x0c,0x00,0x00,0x00,0xc1,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x10,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x20,0x00,0x80,0x00,0x09,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x24,0x00,0x00,0x00,0x15,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x28,0x00,0x9c,0x00,0x81,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0e,0x2c,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0e,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0e,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0e,0x44,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0e,0x48,0x00,0x00,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0e,0x4c,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x0e,0x80,0x20,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,
- 0x84,0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0x88,0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0e,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0e,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0e,0xa0,0xc0,0x1c,0x00,0x85,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0e,0xa4,0xc0,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0e,0xa8,0xc0,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0e,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xc0,
- 0x08,0x00,0x10,0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xc4,0x08,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xc8,0x08,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0f,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0f,0x04,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x0f,0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0f,0x0c,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,
- 0x10,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x20,
- 0x00,0x01,0x01,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x24,0x10,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x29,0x02,0x02,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x2c,0x00,0x01,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x40,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x0f,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0f,0x80,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x0f,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0f,0x88,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x90,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xa0,0x10,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0f,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0f,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0f,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0f,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0f,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0f,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x10,0x02,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x10,0x04,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x10,0x09,0x00,0x01,0x03,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x0c,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x10,0x12,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x10,0x21,0x00,0x01,0x0b,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x10,0x24,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x10,0x2b,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x10,0x2c,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x10,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x10,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x10,
- 0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x10,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x10,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x10,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x10,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,
- 0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x10,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x11,0x00,0x00,0x03,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x08,0x00,
- 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x0c,0x00,0x02,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x10,0x00,0x02,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x20,0x00,0x02,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x24,0x00,0x03,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x2c,0x00,0x02,0x02,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x11,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x11,0x44,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x11,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x11,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x11,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x11,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x11,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x11,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x11,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x11,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x11,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x11,0xc0,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x12,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x12,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x12,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x12,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x12,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x12,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x12,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x12,0x80,0x00,0x02,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x12,0x84,0x00,0x02,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x12,0x88,
- 0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x8c,0x00,
- 0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x90,0x00,0x00,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xa4,0x00,0x01,0x02,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xac,0x00,0x00,0x02,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x12,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x12,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x12,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x12,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x13,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x13,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x13,0x08,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x20,0x00,0x00,0x40,0x11,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x13,0x24,0x00,0x80,0x00,0x11,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x13,0x28,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x13,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x13,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x13,0x40,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x13,0x44,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x13,0x50,0x00,0x00,0x40,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x13,0x80,0x00,0x00,0xc4,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x13,0x84,0x00,
- 0x00,0xc6,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x13,0x88,0x00,0x80,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x13,0x8c,0x00,0x00,0xf4,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x13,0x90,0x00,0x02,0xc4,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x13,0xa0,0x02,0x02,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x13,0xa4,0x00,0x00,0xc1,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,
- 0xa8,0x00,0x1c,0x80,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xac,
- 0x00,0x00,0xe1,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xb0,0x00,
- 0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xc0,0x00,0x00,
- 0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xc4,0x00,0x00,0x80,
- 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xc8,0x00,0x00,0x00,0x61,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xcc,0x00,0x00,0xe0,0x81,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x13,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x14,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x14,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x14,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x40,0x00,0x80,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x14,0x48,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x14,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x14,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x14,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x14,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x14,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x14,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x14,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x14,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x14,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x14,0xc0,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x14,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x14,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x14,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x15,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x15,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x15,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x15,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x15,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x15,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x15,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x15,0x28,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x15,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x15,0x80,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x15,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x15,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x15,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x15,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x16,0x02,0x00,0x00,0x02,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x16,0x04,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x16,0x09,0x00,0x01,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x0c,0x00,0x01,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x12,0x01,0x01,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x21,0x00,0x01,0x03,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x24,0x02,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x2b,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x16,0x2c,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x16,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x16,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x16,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x16,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x16,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x16,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x16,0x82,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x16,
- 0x84,0x01,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x16,0x89,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x16,0x8c,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x16,0x92,0x01,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x16,0xa1,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x16,0xa4,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x16,0xab,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x16,0xac,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x16,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x17,0x02,
- 0x00,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x17,0x04,0x01,0x01,0x05,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x17,0x09,0x00,0x01,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x17,0x0c,0x00,0x03,0xf5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,
- 0x12,0x01,0x03,0xc4,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x21,
- 0x00,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x24,0x02,
- 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x2b,0x03,0x03,
- 0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x2c,0x02,0x02,0xe0,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x40,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x4c,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x17,0x50,0x00,0x00,0x40,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x17,0x82,0x00,0x03,0xce,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x17,0x84,0x01,0x03,0xca,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x17,0x88,0x00,0x02,
- 0x0a,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x8c,0x00,0x03,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x92,0x01,0x02,0x02,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xa1,0x02,0x02,0xd6,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xa4,0x02,0x03,0x57,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xaa,0x03,0x03,0x96,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xac,0x00,0x02,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x17,0xb0,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x17,0xc0,0x00,0x00,0xc4,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x17,0xc4,0x00,0x00,0x44,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x17,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x17,0xcc,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x17,0xd0,0x00,
- 0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x18,0x00,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x18,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x18,0x08,0x00,0x02,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x0c,0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x18,0x10,0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x18,0x20,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x18,0x24,0x00,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x18,0x28,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x18,0x2c,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x18,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x18,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x18,
- 0x80,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x18,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x18,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x18,0x8c,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x18,0x90,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,
- 0xa0,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xa4,
- 0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xac,0x00,0x02,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x18,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x19,0x00,0x02,0x03,0x03,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x0a,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x10,0x01,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x28,0x00,0x00,0x10,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x19,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x19,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x19,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x19,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x19,0x80,0x02,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x19,0x84,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x19,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x19,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x19,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x19,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x19,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x19,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x1a,0x00,0x20,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,0x04,0x20,0x00,
- 0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x1a,0x0a,0x20,0x80,0x08,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1a,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1a,0x10,0x02,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1a,0x20,0xc0,0x00,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,
- 0x24,0xc0,0x00,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x28,
- 0xc0,0x1c,0x14,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x40,0x08,0x00,0x04,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x44,0x08,0x00,0x84,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x48,0x08,0x00,0x00,0x61,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x1a,0x50,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1a,0x81,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,0x85,0x01,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xac,0x00,0x00,0x40,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xc0,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1a,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1a,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1a,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x1b,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x1b,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1b,0x08,0x20,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1b,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1b,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1b,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1b,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1b,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1b,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x4c,
- 0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1b,0x50,0x00,0x00,0x80,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x1b,0x80,0x02,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1b,0x85,0x00,
- 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x1b,0x88,0x00,0x80,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1b,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1b,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1b,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1b,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,
- 0xa8,0x00,0x1c,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xc4,0x00,0x00,0x40,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xc8,0x00,0x00,0x00,0x61,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xcc,0x00,0x00,0x40,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x1b,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1c,0x00,0x01,0x01,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,0x04,0x00,0x02,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,
- 0x09,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x10,0x00,
- 0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x20,0x00,0x10,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1c,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1c,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x1c,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1c,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x1c,0x86,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,0x88,0x02,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1c,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1c,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1c,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1c,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1c,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1c,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x1d,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1d,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x1d,0x08,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1d,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1d,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1d,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1d,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1d,0x28,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x1d,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1d,0x80,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1d,0x86,0x00,0x83,0x01,0x21,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x1d,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x90,
- 0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xa4,0x00,0x1c,
- 0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xc4,0x00,0x00,0x00,0x61,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1d,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x1d,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1e,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x1e,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0x08,0x00,0x01,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x0c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x11,0x01,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x20,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1e,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1e,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1e,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1e,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1e,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x1e,0x80,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,
- 0x85,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0x88,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1e,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1e,0x91,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1e,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1e,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1e,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1e,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1f,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1f,0x04,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x1f,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1f,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,
- 0x10,0x02,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x20,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x24,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x28,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x2c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x40,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x1f,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1f,0x80,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x1f,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1f,0x88,0x00,0x00,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x90,0x00,0x01,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xa0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1f,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1f,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1f,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1f,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1f,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1f,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x20,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x20,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x20,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x20,0x11,0x03,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x20,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x20,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x20,0x28,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x20,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x20,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x20,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x20,
- 0x80,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x20,0x84,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x20,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x20,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x20,0x91,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,
- 0xa0,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x20,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x21,0x00,0x00,0x81,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x04,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x08,0x00,
- 0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x10,0x00,0x00,0x44,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x28,0x00,0x00,0x80,0x21,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x2c,0x00,0x00,0x80,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x30,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x21,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x21,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x21,0x48,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x21,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x21,0x80,0x00,0x00,0xc4,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x21,0x84,0x00,0x02,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x8c,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x91,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x21,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x21,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x21,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x21,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x21,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x21,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x22,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x22,0x04,0x00,0x02,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x22,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x22,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x22,0x10,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x22,0x20,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x22,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x22,0x80,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x22,0x84,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x22,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x90,0x01,0x01,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xa0,0x10,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x22,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x22,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x22,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x22,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x23,0x00,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x23,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x23,0x08,0x00,0x00,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x10,0x01,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x23,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x23,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x23,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x23,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x23,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x23,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x23,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x23,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x23,0x84,0x00,
- 0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x23,0x88,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x23,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x23,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x23,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x23,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x23,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x24,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x24,0x04,0x00,0x00,0x40,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x24,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x10,0x00,
- 0x00,0x44,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x28,0x00,0x00,0x80,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x2c,0x00,0x00,0x80,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x30,0x00,0x00,0x40,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x24,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x24,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x24,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x24,0x80,0x00,0x00,0x40,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x24,0x84,0x00,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x24,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x8c,0x00,0x00,0x40,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x90,0x00,0x01,0x80,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x24,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x24,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x24,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x24,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x24,0xc0,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x24,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x24,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x24,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x25,0x00,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x25,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x25,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x25,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x25,0x10,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x25,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x25,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x25,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x25,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x25,0x80,0x02,
- 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x25,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x25,0x88,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x90,
- 0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x25,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x25,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x26,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x26,0x07,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x26,0x08,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x0c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x12,0x02,0x02,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x20,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x28,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x26,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x26,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x26,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x26,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x26,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x26,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x26,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x26,0x80,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x26,
- 0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x26,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x26,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x26,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x26,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x26,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x26,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x26,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x26,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x27,0x01,
- 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x27,0x04,0x00,0x01,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x27,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x27,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,
- 0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x20,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x25,0x01,
- 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x28,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x2c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x40,0x00,0x80,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x44,0x00,0x80,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x27,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x27,0x80,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x27,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x27,0x88,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x90,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xa0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x27,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x27,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x27,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x27,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x27,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x27,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x28,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x28,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x28,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x28,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x28,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x28,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x28,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x28,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x28,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,
- 0x40,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x28,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x28,
- 0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x28,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x28,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x28,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x28,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,
- 0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x28,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x29,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x08,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x10,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x29,0x40,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x29,0x44,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x29,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x29,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x29,0x80,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x29,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x29,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x29,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x29,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x29,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x29,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x29,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x2a,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x2a,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2a,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2a,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2a,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x2a,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2a,0x80,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2a,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2a,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2a,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x2b,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x2b,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2b,0x08,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2b,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2b,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2b,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2b,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2b,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2b,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2b,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x2b,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2b,0x84,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x2b,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2b,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2b,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2b,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2b,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x2b,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2c,0x00,0x00,0x00,
- 0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,0x04,0x00,0x00,0x80,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x0c,
- 0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x10,0x00,
- 0x00,0x84,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x30,0x00,0x00,0x40,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2c,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2c,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x2c,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2c,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x2c,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2c,0xa8,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2c,0xac,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2c,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2c,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2c,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2c,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x2d,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2d,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x2d,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2d,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2d,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2d,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2d,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2d,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x2d,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2d,0x80,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2d,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x2d,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xc4,0x00,0x00,0x08,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2d,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x2d,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2e,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x2e,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0x08,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x0c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x10,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x20,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2e,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2e,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2e,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2e,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2e,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x2e,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,
- 0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2e,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2e,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2e,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2e,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2e,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2e,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2f,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2f,0x04,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x2f,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2f,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,
- 0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x20,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x24,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x28,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x2c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x40,0x00,0x00,0x00,0x41,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x2f,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2f,0x80,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x2f,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2f,0x88,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x90,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xa0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2f,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2f,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2f,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2f,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2f,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2f,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x30,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x30,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x30,0x08,0x00,0x00,0xf4,0xc1,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x30,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x30,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x30,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x30,0x28,0x00,0x00,0x60,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x30,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x30,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x48,0x00,
- 0x00,0xe0,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x30,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x30,
- 0x80,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x30,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x30,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x30,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x30,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,
- 0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x30,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x31,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x08,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x10,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x31,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x31,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x31,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x31,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x31,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x31,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x31,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x31,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x31,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x31,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x31,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x31,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x32,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x32,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x32,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x32,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x32,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x32,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x32,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x32,0x80,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x32,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x32,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x32,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x32,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x32,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x32,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x33,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x33,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x33,0x08,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x33,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x33,0x28,0x00,0x04,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x33,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x33,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x33,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x33,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x33,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x33,0x80,0x00,0x00,0x20,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x33,0x84,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x33,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x33,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x33,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x33,0xa0,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x33,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xc0,0x00,0x00,
- 0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x33,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x34,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x34,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x34,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x34,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x34,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x34,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x34,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x34,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x34,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x34,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x34,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x34,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x34,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x34,0xc0,0x00,0x80,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x34,0xc4,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x34,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x34,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x35,0x00,0x00,0x80,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x35,0x04,
- 0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x35,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x35,0x0c,0x00,0x00,0xf4,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x35,0x10,0x00,0x00,0xc4,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x35,0x20,0x00,0x1c,0x40,0x99,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x35,0x24,0x00,0x00,0x80,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x35,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,
- 0x2c,0x00,0x00,0xa0,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x40,0x00,
- 0x00,0x00,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x4c,0x00,0x00,0x60,0x81,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x35,0x50,0x00,0x00,0x40,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x35,0x80,0x20,
- 0x00,0xcc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x35,0x84,0x20,0x00,0xc8,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x35,0x88,0x20,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xa0,0xc0,
- 0x80,0x14,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xa4,0xc0,0x80,
- 0x54,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xa8,0xc0,0x00,0x94,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xac,0x00,0x00,0x40,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xb0,0x00,0x00,0x40,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xc0,0x08,0x00,0xc4,0x09,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xc4,0x08,0x00,0xc4,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xc8,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x35,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x35,0xd0,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x35,0xd0,0x00,0x00,0x80,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x02,0x08,0xff,0x04,0x00,0x00,
- 0x00,0x64,0x02,0x08,0xf0,0x04,0x00,0x00,0x00,0x00,0x02,0x08,0xff,0x02,0x08,0xff,
- 0x08,0x00,0x00,0x00,0x01,0x01,0x00,0x09,0x00,0x00,0x00,
diff --git a/board/esd/dp405/u-boot.lds b/board/esd/dp405/u-boot.lds
deleted file mode 100644
index 43f776579e..0000000000
--- a/board/esd/dp405/u-boot.lds
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/4xx_enet.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/du405/Makefile b/board/esd/du405/Makefile
deleted file mode 100644
index 4d75868ea8..0000000000
--- a/board/esd/du405/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/du405/config.mk b/board/esd/du405/config.mk
deleted file mode 100644
index d091d96ecd..0000000000
--- a/board/esd/du405/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (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
-#
-
-#
-# esd CPCIISER4 boards
-#
-
-#TEXT_BASE = 0xFFFE0000
-TEXT_BASE = 0xFFFD0000
-#TEXT_BASE = 0xFFFC0000
diff --git a/board/esd/du405/du405.c b/board/esd/du405/du405.c
deleted file mode 100644
index a019ce4215..0000000000
--- a/board/esd/du405/du405.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * (C) Copyright 2000, 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include "du405.h"
-#include <asm/processor.h>
-#include <ppc4xx.h>
-#include <405gp_i2c.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*cmd_boot.c*/
-
-extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-extern void lxt971_no_sleep(void);
-
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-#if 0
-#define FPGA_DEBUG2
-#endif
-
-/* fpga configuration data - generated by bin2cc */
-const unsigned char fpgadata[] = {
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int board_early_init_f (void)
-{
- int index, len, i;
- int status;
-
-#ifdef FPGA_DEBUG
- /* set up serial port with default baudrate */
- (void) get_clocks ();
- gd->baudrate = CONFIG_BAUDRATE;
- serial_init ();
- console_init_f ();
-#endif
-
- /*
- * Boot onboard FPGA
- */
- status = fpga_boot ((unsigned char *) fpgadata, sizeof (fpgadata));
- if (status != 0) {
- /* booting FPGA failed */
-#ifndef FPGA_DEBUG
- /* set up serial port with default baudrate */
- (void) get_clocks ();
- gd->baudrate = CONFIG_BAUDRATE;
- serial_init ();
- console_init_f ();
-#endif
- printf ("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf ("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf ("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf ("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i = 0; i < 4; i++) {
- len = fpgadata[index];
- printf ("FPGA: %s\n", &(fpgadata[index + 1]));
- index += len + 3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i = 20; i > 0; i--) {
- printf ("Rebooting in %2d seconds \r", i);
- for (index = 0; index < 1000; index++)
- udelay (1000);
- }
- putc ('\n');
- do_reset (NULL, 0, 0, NULL);
- }
-
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) DUART_A; active high; level sensitive
- * IRQ 27 (EXT IRQ 2) DUART_B; active high; level sensitive
- * IRQ 28 (EXT IRQ 3) unused; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) unused; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) unused; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
- mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
- mtdcr (uicpr, 0xFFFFFFB1); /* set int polarities */
- mtdcr (uictr, 0x10000000); /* set int trigger levels */
- mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 100 us
- */
- mtebc (epcr, 0xb8400000);
-
- return 0;
-}
-
-
-int misc_init_r (void)
-{
- unsigned long cntrl0Reg;
-
- /*
- * Setup UART1 handshaking: use CTS instead of DSR
- */
- cntrl0Reg = mfdcr(cntrl0);
- mtdcr(cntrl0, cntrl0Reg | 0x00001000);
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
- int index;
- int len;
- char str[64];
- int i = getenv_r ("serial#", str, sizeof (str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming DU405");
- } else {
- puts (str);
- }
-
- puts ("\nFPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i = 0; i < 4; i++) {
- len = fpgadata[index];
- printf ("%s ", &(fpgadata[index + 1]));
- index += len + 3;
- }
-
- putc ('\n');
-
- /*
- * Reset external DUART via FPGA
- */
- *(volatile unsigned char *) FPGA_MODE_REG = 0xff; /* reset high active */
- *(volatile unsigned char *) FPGA_MODE_REG = 0x00; /* low again */
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-
- return 0;
-}
-
-
-long int initdram (int board_type)
-{
- return (16 * 1024 * 1024);
-}
-
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
diff --git a/board/esd/du405/du405.h b/board/esd/du405/du405.h
deleted file mode 100644
index 768e84380c..0000000000
--- a/board/esd/du405/du405.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (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
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- * Start Address Length
- * +-----------------------+ 0x4000_0000 Start of Flash -----------------
- * | MON8xx code | 0x4000_0100 Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused) |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses | 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) | 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address | 0x04
- * +-----------------------+ 0x4001_FFC0 ^
- * | Hardware Information | 0x40 | MON8xx
- * +=======================+ 0x4002_0000 (sector border) -----------------
- * | Autostart Header | | Applications
- * | ... | v
- *
- *****************************************************************************/
diff --git a/board/esd/du405/flash.c b/board/esd/du405/flash.c
deleted file mode 100644
index 14549c0147..0000000000
--- a/board/esd/du405/flash.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
- uint pbcr;
- unsigned long base_b0, base_b1;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- base_b0 = FLASH_BASE0_PRELIM;
- size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 << 20);
- }
-
- base_b1 = FLASH_BASE1_PRELIM;
- size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
- /* Re-do sizing to get full correct info */
-
- if (size_b1) {
- mtdcr (ebccfga, pb0cr);
- pbcr = mfdcr (ebccfgd);
- mtdcr (ebccfga, pb0cr);
- base_b1 = -size_b1;
- pbcr = (pbcr & 0x0001ffff) | base_b1 |
- (((size_b1 / 1024 / 1024) - 1) << 17);
- mtdcr (ebccfgd, pbcr);
- /* printf("pb1cr = %x\n", pbcr); */
- }
-
- if (size_b0) {
- mtdcr (ebccfga, pb1cr);
- pbcr = mfdcr (ebccfgd);
- mtdcr (ebccfga, pb1cr);
- base_b0 = base_b1 - size_b0;
- pbcr = (pbcr & 0x0001ffff) | base_b0 |
- (((size_b0 / 1024 / 1024) - 1) << 17);
- mtdcr (ebccfgd, pbcr);
- /* printf("pb0cr = %x\n", pbcr); */
- }
-
- size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
- flash_get_offsets (base_b0, &flash_info[0]);
-
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- base_b0 + size_b0 - monitor_flash_len,
- base_b0 + size_b0 - 1, &flash_info[0]);
-
- if (size_b1) {
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
- flash_get_offsets (base_b1, &flash_info[1]);
-
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- base_b1 + size_b1 - monitor_flash_len,
- base_b1 + size_b1 - 1, &flash_info[1]);
- /* monitor protection OFF by default (one is enough) */
- flash_protect (FLAG_PROTECT_CLEAR,
- base_b0 + size_b0 - monitor_flash_len,
- base_b0 + size_b0 - 1, &flash_info[0]);
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
diff --git a/board/esd/du405/fpgadata.c b/board/esd/du405/fpgadata.c
deleted file mode 100644
index fd80d2cd86..0000000000
--- a/board/esd/du405/fpgadata.c
+++ /dev/null
@@ -1,703 +0,0 @@
- 0x00,0x09,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x0f,0xf0,0x00,0x00,0x01,0x61,0x00,0x0d,
- 0x64,0x75,0x72,0x61,0x67,0x34,0x30,0x35,0x2e,0x6e,0x63,0x64,0x00,0x62,0x00,0x0b,
- 0x73,0x32,0x30,0x78,0x6c,0x74,0x71,0x31,0x34,0x34,0x00,0x63,0x00,0x0b,0x32,0x30,
- 0x30,0x32,0x2f,0x30,0x32,0x2f,0x32,0x31,0x00,0x64,0x00,0x09,0x31,0x32,0x3a,0x35,
- 0x31,0x3a,0x30,0x38,0x00,0x65,0xe2,0x01,0x00,0x00,0x2b,0x98,0xff,0x30,0xe6,0xe5,
- 0xe5,0x02,0x04,0x01,0xe6,0x04,0x01,0x0d,0x04,0x04,0x02,0x01,0x04,0x04,0x03,0x07,
- 0x01,0x03,0x01,0x04,0x11,0x01,0x06,0x02,0x15,0x09,0x02,0x05,0x07,0x02,0x02,0x01,
- 0x09,0x03,0x07,0x01,0x03,0x01,0x0b,0x05,0x03,0x01,0x07,0x08,0xe5,0xe5,0x24,0x05,
- 0x09,0x11,0x01,0x03,0x03,0x05,0x0d,0x09,0x0b,0x09,0x01,0x1d,0x09,0x13,0x03,0x05,
- 0x12,0xe6,0x11,0x01,0x03,0x02,0x02,0x03,0x03,0x01,0x15,0x01,0x02,0x28,0x01,0x05,
- 0x02,0xe5,0xe5,0x02,0x02,0x02,0x0d,0x02,0x02,0x03,0x02,0xe5,0xe5,0x14,0x01,0x02,
- 0xe5,0x12,0x0b,0x03,0x0f,0x09,0x09,0x09,0x09,0x09,0x04,0x01,0x02,0x06,0x02,0x09,
- 0x06,0xe7,0x05,0x04,0x06,0x02,0x06,0x02,0x09,0x07,0xe6,0x08,0x09,0x07,0xe6,0x08,
- 0x09,0x0e,0xe5,0xe6,0x0d,0x05,0xe5,0x01,0x05,0xe5,0x01,0x05,0xe5,0x07,0x09,0xe5,
- 0x01,0x05,0xe5,0x07,0xe6,0xe5,0x04,0x03,0x05,0xe8,0x04,0xe6,0x02,0x05,0xe6,0xe5,
- 0x04,0xe6,0x06,0x03,0x05,0xe5,0xe6,0x04,0xe5,0x07,0x09,0xe5,0xe6,0x04,0x09,0x09,
- 0x09,0xe8,0x46,0x09,0x14,0xe5,0x06,0x0b,0x09,0x15,0x1d,0x24,0x02,0xe5,0xe5,0x45,
- 0x08,0x15,0x33,0x1d,0x28,0x70,0xe5,0x09,0x09,0x14,0x42,0x02,0xe5,0x30,0x27,0x01,
- 0x15,0x1b,0x1d,0x32,0x01,0x01,0x5b,0x0c,0x51,0x24,0x01,0xe5,0xe5,0x28,0xe5,0x1c,
- 0x25,0x53,0x19,0xe5,0x01,0x2b,0x45,0x6c,0xe5,0xe6,0x35,0x09,0x07,0x01,0x09,0x09,
- 0x12,0x63,0x09,0x02,0x03,0x0c,0x09,0x09,0x09,0x09,0x09,0x09,0x07,0x01,0x09,0x01,
- 0x07,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0x02,0xe5,0x02,0x0c,
- 0x09,0x09,0x09,0x06,0x02,0x05,0xe5,0x01,0x07,0x01,0x05,0x03,0x07,0x01,0x09,0x0b,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0xe5,0x01,0x05,0x07,0xe5,0x05,
- 0x01,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x03,0x05,0xe5,0x07,0x09,0xe5,0x07,0x09,0xe5,
- 0x07,0x01,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x04,0x02,0xe5,0x12,0x04,0x0b,0x05,0x02,0xe5,0x07,0xe5,0x08,0x09,
- 0x08,0xe5,0x08,0x09,0x09,0x09,0x06,0x03,0xe5,0x07,0xe5,0x08,0x08,0xe5,0x07,0xe5,
- 0x08,0x09,0x04,0x03,0xe5,0x08,0x09,0x0d,0x01,0xe6,0x05,0x06,0xe5,0x07,0xe5,0xe5,
- 0x05,0xe5,0xe5,0x01,0x03,0xe5,0x14,0x06,0x09,0x13,0xe5,0x09,0xe5,0xe5,0x05,0xe5,
- 0xe5,0x05,0xe5,0x07,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0x07,0xe5,0x07,0xe5,0xe5,
- 0x05,0xe5,0x07,0xe5,0x07,0x02,0x03,0xe8,0x0e,0x01,0x09,0x09,0x07,0x08,0xe5,0x07,
- 0x09,0xe5,0x07,0xe5,0x07,0xe5,0x08,0x01,0x0b,0x09,0x07,0x0b,0x09,0x07,0x09,0x13,
- 0x09,0x0e,0x02,0xe5,0x0c,0x09,0x03,0x05,0x09,0x12,0x09,0xe5,0x08,0x13,0x09,0x01,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x07,0x01,0x09,0x09,0x10,0xe8,0x03,0x08,0x02,0x03,
- 0x02,0x02,0x06,0x02,0x03,0x02,0x02,0x06,0x02,0x09,0x06,0x02,0x06,0x02,0x06,0x02,
- 0x06,0x02,0x04,0x01,0x01,0x02,0x06,0x02,0x06,0x02,0x06,0x02,0xe5,0x04,0x02,0x06,
- 0x02,0x06,0x02,0x06,0x02,0x03,0x02,0x02,0x06,0x02,0x0d,0x01,0x01,0x03,0xe5,0x09,
- 0x09,0x09,0xe5,0x0f,0xe5,0x25,0x0b,0x04,0xe5,0x01,0x02,0x06,0x02,0x13,0x09,0x36,
- 0x0d,0x23,0x35,0x82,0x01,0x03,0x10,0x09,0x02,0x06,0x11,0x09,0x1c,0xe5,0x0a,0x03,
- 0xe6,0xe5,0x02,0x03,0x05,0x0d,0x05,0x03,0x05,0x17,0x27,0x02,0xe5,0x29,0x50,0x27,
- 0x11,0x28,0xe5,0x01,0x10,0x09,0x09,0x09,0x09,0x04,0x04,0xe5,0x07,0xe5,0x07,0x09,
- 0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0e,0xe7,0x0e,0xe5,0x02,
- 0x02,0x02,0x06,0x02,0x10,0xe5,0xe5,0x38,0x1e,0x06,0x02,0x13,0x01,0xe5,0x2c,0xe6,
- 0x17,0x09,0x06,0x09,0x01,0x10,0x19,0x24,0x13,0x13,0x02,0x11,0x16,0x05,0x02,0x03,
- 0x01,0x10,0xe5,0x08,0x70,0x09,0x3f,0x01,0x02,0xe5,0x02,0x26,0x11,0x09,0x28,0x02,
- 0x6c,0xe5,0xe5,0x13,0xca,0x02,0x0d,0x01,0x07,0x01,0x07,0x1d,0x01,0x04,0x0e,0x07,
- 0x01,0x13,0x01,0x07,0xe6,0x10,0xe5,0x03,0x46,0x01,0x01,0x0d,0x01,0x07,0x02,0x03,
- 0x05,0x1d,0x10,0x09,0x02,0x0e,0x02,0xe5,0x01,0x07,0x35,0x29,0xe6,0xe5,0x18,0x12,
- 0xe5,0x10,0x08,0x1a,0x2c,0x09,0x43,0xe5,0xe6,0x14,0x01,0xe6,0x04,0x04,0x23,0x04,
- 0x12,0x0b,0x09,0x63,0x03,0x02,0xe5,0x71,0x30,0x3c,0x01,0x17,0xe5,0xe5,0x29,0x35,
- 0x5e,0x03,0x03,0x09,0x0f,0x0b,0x20,0x27,0x71,0x01,0x0f,0x04,0x03,0x05,0x02,0x01,
- 0x04,0x09,0x09,0x32,0x02,0x65,0x01,0x03,0x01,0xe6,0x0d,0xe5,0x10,0x01,0x27,0x02,
- 0x09,0x89,0x0e,0x03,0x33,0x03,0x03,0x29,0x03,0x04,0x2c,0x2f,0xe6,0xe7,0xd9,0xe7,
- 0xe6,0x01,0x01,0x23,0xe5,0xae,0x01,0x03,0x02,0x04,0xd4,0x08,0x02,0xd8,0x03,0x01,
- 0xe5,0x16,0x01,0x11,0x01,0xb2,0x01,0x01,0x15,0x01,0x01,0x0f,0x01,0x01,0xab,0x06,
- 0x17,0x01,0x11,0x01,0xaf,0xe5,0xe5,0xe5,0x16,0x01,0x11,0x01,0xb1,0x02,0x4f,0xe5,
- 0x86,0x06,0x01,0xe5,0x4f,0xe5,0x8b,0x03,0xe5,0x0d,0x09,0x09,0x09,0x09,0x09,0x06,
- 0x02,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0x02,
- 0xe6,0x01,0x44,0xe5,0x91,0x03,0x01,0xe5,0x44,0x9a,0x01,0x0f,0x13,0x24,0xe5,0xe5,
- 0x91,0xe5,0x01,0x0f,0xe5,0x11,0xe5,0x23,0x01,0xe5,0x92,0xe7,0x0d,0x13,0x25,0x01,
- 0x91,0xe6,0x01,0x09,0x05,0x03,0xe7,0x05,0xe7,0x01,0x04,0xe6,0x05,0xe7,0x07,0xe5,
- 0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0x01,0xe5,0x0e,0x04,0x05,0x03,0x04,0x04,0x08,0x17,0x01,0x92,0x02,0xe5,0x0e,0x06,
- 0x03,0x02,0x02,0x02,0x06,0x07,0x01,0x16,0x8b,0x05,0xe5,0x01,0xe6,0x0d,0x03,0x01,
- 0x09,0x03,0x05,0x09,0x15,0x28,0x64,0x04,0xe7,0x01,0x03,0x0b,0x03,0xe7,0x02,0x02,
- 0x01,0xe5,0x01,0x03,0xe7,0x02,0x03,0xe6,0x13,0x01,0x90,0x04,0xe5,0xd9,0x03,0xe5,
- 0xe6,0x10,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x04,0x04,0x01,0x01,0x05,0x01,0x07,0x01,0x01,
- 0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,
- 0x0b,0xe7,0x4e,0x8e,0xe6,0xe6,0x12,0x3c,0x1e,0x0b,0x13,0x09,0x19,0x16,0x11,0xe9,
- 0x03,0x19,0x32,0x0a,0x09,0x09,0xe5,0x4f,0x09,0x08,0xe5,0x01,0x08,0xe6,0x46,0x01,
- 0x26,0x08,0x5d,0x08,0x4a,0xe5,0x01,0x22,0x37,0x03,0x0a,0x21,0x04,0xe5,0xe6,0x08,
- 0x0b,0x03,0x15,0x40,0x3f,0x2d,0x02,0x0c,0x36,0x2d,0xe5,0x08,0x32,0xe5,0x2f,0xe5,
- 0x45,0x28,0x01,0x3d,0x30,0xe6,0x04,0x04,0x66,0x01,0xe5,0x05,0x62,0xe8,0x70,0x03,
- 0x68,0x03,0x72,0x01,0x3a,0x01,0x2c,0x01,0x01,0xb3,0x20,0x08,0xe5,0x02,0x05,0x6c,
- 0x06,0x0c,0x2e,0x28,0x01,0xe6,0xe5,0xd9,0xe6,0xe5,0xe5,0xe5,0x01,0xd4,0x01,0x02,
- 0x01,0x01,0x04,0xa7,0xe5,0x2a,0x04,0xe5,0xe6,0x01,0xa9,0xe5,0xe5,0x2a,0x02,0x02,
- 0xe6,0x0a,0xa2,0x01,0x25,0x06,0x02,0xe5,0xe5,0x07,0xe6,0xa1,0x01,0x01,0x02,0x01,
- 0x23,0x04,0xe5,0x4f,0x01,0x5c,0x01,0x2c,0x01,0x01,0xaf,0x01,0x2d,0xe8,0xe0,0xe0,
- 0x01,0xe5,0x0d,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x06,0x06,0xe5,0xe5,0xe5,0xd2,0x02,0x04,0x05,0xe5,
- 0xd4,0x09,0x02,0x46,0x6a,0x2c,0x02,0xe5,0xae,0x01,0xe5,0x2a,0x01,0x01,0xe5,0xaf,
- 0x2d,0xe5,0xe5,0x08,0x0b,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x05,0xe5,0xe7,
- 0x4b,0xe5,0x27,0x3a,0x2c,0xe8,0x75,0x38,0x01,0x2d,0x01,0xe6,0xaf,0x2c,0x02,0xe5,
- 0x02,0x48,0x29,0x38,0x01,0x2c,0xe5,0x01,0xaf,0x2d,0xe6,0xe6,0x09,0x06,0x01,0x01,
- 0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,
- 0x01,0x05,0x01,0x07,0x01,0x02,0x06,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x03,0x07,0x02,0x4f,0x8f,
- 0xe5,0xe6,0x12,0x15,0x13,0x08,0x08,0x57,0x0a,0x24,0x04,0x02,0x01,0x04,0xe5,0x04,
- 0xe5,0x40,0x22,0x09,0x66,0x02,0xe6,0x02,0x68,0x13,0x4e,0x08,0xe7,0xe6,0xe5,0x6d,
- 0x6f,0xe6,0x0a,0x23,0x32,0x09,0x03,0x10,0x5a,0x02,0xe7,0x08,0x0f,0x56,0x62,0x04,
- 0x04,0xe5,0xe6,0x45,0x2a,0x6d,0x01,0xe6,0x6f,0x61,0x0a,0xe5,0x01,0x71,0x46,0x11,
- 0x15,0x01,0x51,0x8c,0x03,0xe1,0xe5,0x0b,0x6a,0x67,0xe7,0xe5,0x4c,0xe5,0x8a,0x02,
- 0x02,0x01,0x02,0x4b,0xe5,0x61,0x24,0x02,0x03,0xe6,0x03,0xa6,0xe5,0x01,0x01,0x22,
- 0x01,0x02,0x06,0x01,0x02,0xa9,0xe5,0xe5,0xe5,0x21,0x06,0x06,0xe5,0x03,0xcf,0x02,
- 0x04,0x01,0x01,0xe5,0xe5,0x02,0x04,0x01,0xa6,0x28,0x02,0xe5,0xe5,0x4f,0x5e,0x01,
- 0x2f,0xe5,0x4f,0xe5,0x5c,0x01,0x2c,0x01,0xe7,0x03,0x4b,0x8b,0xe9,0xdd,0x01,0xe7,
- 0x0d,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x06,0x06,0x01,0xe7,0xd4,0x08,0x01,0x01,0xdf,0x02,0xdf,0x01,
- 0xe5,0x4f,0x8a,0x02,0x01,0xe7,0xdd,0x01,0xe5,0x08,0x0b,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x05,0xe7,0xe5,0x4b,0xe5,0x8d,0x02,0xe7,0xdd,0x02,0xe6,0xdb,0x01,0xe7,
- 0x02,0x48,0x09,0x87,0x01,0xe7,0x26,0xb6,0xe5,0xe5,0x10,0x01,0x01,0x05,0x01,0x07,
- 0x01,0x06,0xe5,0xe5,0x06,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x02,0x06,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x06,0xe5,0xe5,0x0d,0x04,0x21,0x28,0x8a,0x03,
- 0x02,0xe6,0x14,0x11,0x32,0x09,0x09,0x0b,0x50,0x10,0xe5,0xe7,0xe5,0x38,0x12,0x22,
- 0xe5,0x64,0x06,0x02,0x04,0x03,0x68,0x6b,0x01,0xe8,0x01,0x6d,0x6e,0x01,0xe5,0x1a,
- 0x14,0x3f,0x5d,0x0d,0xe5,0x01,0xe6,0x19,0x0b,0x49,0x32,0x0e,0x19,0x01,0x0f,0x02,
- 0x0a,0x12,0x28,0x2a,0x30,0x27,0x05,0x01,0x0c,0xe8,0x33,0x01,0x39,0xe5,0x5f,0x0b,
- 0x01,0xe5,0x2f,0x14,0x2b,0x6c,0x02,0xe5,0x2c,0x0b,0x38,0x45,0x26,0xe5,0xe5,0xe5,
- 0x2a,0x1e,0x84,0x0c,0x01,0x01,0x2b,0xe5,0xa5,0x0b,0xe9,0x5a,0x7e,0x01,0x01,0x01,
- 0x02,0x01,0x49,0x0e,0x7b,0x01,0x03,0xe5,0xe5,0x03,0x33,0x0b,0x18,0x01,0x74,0x01,
- 0x02,0x04,0x02,0xe5,0x01,0x36,0x20,0xe5,0xe5,0xe5,0x73,0x06,0x02,0x03,0x5d,0x6f,
- 0x01,0x05,0x07,0xe5,0x02,0x02,0x3f,0x09,0x10,0x03,0x6b,0x01,0x01,0x09,0x03,0xe5,
- 0xe6,0x3a,0x01,0x03,0x09,0x10,0x01,0x6d,0x01,0x0d,0xe6,0xe6,0x3b,0x01,0x1e,0x01,
- 0x6d,0x01,0x0f,0xe7,0x44,0x09,0x09,0x83,0xe5,0x02,0x39,0x08,0x03,0x01,0x03,0x03,
- 0x01,0x09,0x81,0x02,0xe6,0x0d,0x09,0x09,0x04,0x01,0x02,0x09,0x09,0xe5,0x01,0x05,
- 0xe5,0x01,0x02,0x02,0x04,0x01,0x02,0x02,0x06,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x0d,0x01,0xe5,0xe5,0x01,0x27,0x0e,0xe5,0x13,0x0c,0x7e,0x02,0xe5,
- 0x01,0x27,0x11,0x1f,0x86,0xe6,0xe5,0x27,0x02,0x0c,0x03,0x16,0x07,0x01,0x7e,0x02,
- 0xe5,0x2c,0xe5,0x09,0x08,0x09,0x05,0xe5,0x01,0x06,0x01,0xe5,0x7c,0x02,0xe5,0x2c,
- 0x1a,0x0a,0x01,0x07,0x01,0x7e,0xe8,0x14,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x09,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x06,0xe6,0xe5,0x2c,0x0a,0x06,0x01,0x07,0x01,0x07,0x01,0x07,0x82,0x01,
- 0x2b,0x0c,0x06,0x01,0x07,0x01,0x07,0x01,0x09,0x7e,0x03,0x2d,0x27,0x07,0x14,0x6b,
- 0x02,0xe5,0x2a,0x0e,0x18,0x0b,0x12,0x6b,0x01,0xe6,0x2e,0x27,0x08,0x04,0x7a,0xe6,
- 0xe5,0x0e,0x01,0x01,0x05,0x01,0x07,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0xe6,0xe5,
- 0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x09,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x08,0x02,0x02,0x27,
- 0x02,0x0c,0xe5,0x0c,0x07,0x01,0x0c,0x82,0x01,0xe5,0x14,0x08,0x08,0x0c,0x01,0x02,
- 0x03,0x09,0x09,0x0e,0x7b,0xe5,0x01,0xe5,0x08,0x20,0x06,0x1a,0x24,0x6f,0xe5,0x04,
- 0x0a,0x09,0x09,0x06,0x01,0xe5,0x04,0x20,0x09,0xe5,0x0f,0x6d,0x01,0xe5,0x04,0x28,
- 0x0b,0x03,0x09,0x14,0x13,0x6d,0x01,0xe5,0x01,0x06,0x21,0x05,0x08,0x18,0x19,0x15,
- 0x5a,0x01,0xe6,0x04,0x0d,0x0d,0x2e,0x07,0x18,0x5a,0x11,0xe6,0xe5,0x09,0xe5,0x16,
- 0x01,0x1d,0x02,0x06,0x0c,0x16,0x30,0x2f,0x0b,0xe5,0xe6,0x0c,0xe6,0x06,0xe6,0x05,
- 0xe6,0x07,0x09,0x01,0x07,0xe5,0x03,0x2b,0xe5,0x5f,0xe5,0x04,0x04,0xe7,0x0e,0x0a,
- 0x02,0x03,0x02,0x02,0x02,0xe5,0x12,0xe5,0x2f,0x6d,0x02,0x09,0x19,0x0d,0x05,0x1a,
- 0x1f,0x45,0x26,0xe8,0x13,0xe5,0x0a,0x06,0x0d,0xe5,0x15,0x84,0x08,0xe9,0x34,0x01,
- 0x17,0x8e,0x01,0x01,0xe6,0x07,0x01,0x04,0x02,0xe5,0x04,0x02,0xe5,0x04,0x02,0xe5,
- 0x04,0x09,0x09,0x09,0x08,0xe5,0x11,0xe5,0x6f,0xe5,0x01,0x01,0x02,0x01,0x05,0xe5,
- 0x03,0x02,0xe5,0x04,0x03,0xe5,0x06,0xe5,0x05,0x09,0x08,0x09,0x0a,0x13,0x06,0x66,
- 0x01,0x02,0xe5,0xe6,0x03,0x0b,0x09,0x02,0xe5,0x03,0x01,0x08,0x06,0x01,0xe5,0x02,
- 0xe5,0xe5,0xe6,0x02,0xe5,0xe5,0xe6,0x8b,0x04,0xe5,0xe6,0x01,0x17,0x02,0xe5,0x01,
- 0x0c,0x03,0x02,0x01,0x04,0xe5,0xe5,0xe5,0x03,0xe5,0xe5,0xe5,0x8e,0x03,0x02,0x11,
- 0xe5,0x08,0x04,0x04,0x09,0x02,0x05,0x05,0x01,0x01,0xe5,0x03,0x01,0x01,0xe5,0x22,
- 0x6c,0x02,0x02,0x1e,0x01,0x01,0x02,0x01,0x0e,0x05,0x01,0x02,0x04,0x01,0x02,0x8c,
- 0x03,0xe5,0xe6,0x0f,0x02,0x0c,0x06,0x08,0xe5,0x01,0x01,0x0e,0x01,0x11,0x09,0x78,
- 0xe5,0xe5,0xe5,0x11,0x02,0x05,0xe7,0x01,0x01,0x01,0xe5,0xe6,0x04,0xe5,0xe5,0xe6,
- 0xe5,0x02,0xe5,0x06,0x01,0x01,0x05,0xe6,0x08,0xe5,0x07,0xe5,0x77,0xe5,0x01,0x05,
- 0x03,0x02,0x03,0x01,0x07,0x01,0xe5,0x05,0x01,0x02,0x04,0x01,0x13,0x09,0x0c,0x09,
- 0x7a,0xe6,0x09,0xe5,0x03,0xe5,0x07,0xe5,0x01,0x01,0x03,0xe5,0x07,0xe5,0x08,0xa4,
- 0x03,0xe5,0x0d,0xe6,0x06,0xe5,0x01,0xe5,0xe5,0x01,0xe5,0xe5,0x05,0xe5,0x07,0x09,
- 0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x06,0x05,
- 0xe6,0x02,0x02,0x0f,0x09,0x03,0x05,0x09,0x08,0xe5,0x08,0x09,0x86,0x05,0x04,0xe6,
- 0xe5,0x18,0x01,0x07,0x09,0x09,0xa7,0xe5,0x0f,0xe6,0x02,0xe5,0x01,0x01,0x03,0x03,
- 0x01,0x07,0xe6,0x05,0x02,0x04,0x04,0x04,0x04,0x04,0x01,0x07,0x01,0x7c,0x01,0xe6,
- 0xe5,0x10,0x02,0x04,0xe6,0x01,0x02,0x02,0xe5,0x01,0x06,0x02,0x04,0xe6,0x01,0x04,
- 0x01,0x02,0x04,0x01,0x05,0x01,0xe5,0x05,0x01,0xe5,0x7d,0xe5,0xe6,0x07,0x09,0x09,
- 0x10,0x08,0x07,0x09,0x09,0x01,0x07,0x01,0x0d,0x70,0x01,0xe6,0x0f,0x02,0xe5,0xe5,
- 0x05,0xe5,0xe6,0x04,0xe5,0xe5,0x05,0xe5,0xe5,0x01,0x03,0xe5,0xe5,0x01,0x04,0x01,
- 0x02,0x04,0xe7,0xe5,0x03,0xe7,0xe5,0x02,0xe5,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x06,0x01,0x01,0x10,0x06,0x01,0xe6,0x04,0x02,0xe5,0x07,0xe5,0x06,0xe5,0x01,0xe5,
- 0x01,0x09,0x0c,0xe5,0x01,0x05,0xe5,0xe5,0x7a,0xe5,0xe5,0x12,0x02,0xe5,0xe5,0x02,
- 0x02,0x02,0x04,0x01,0x06,0x02,0x02,0xe5,0x04,0x02,0x06,0x02,0x06,0x09,0x07,0x01,
- 0x77,0xe5,0xe6,0x0f,0xe5,0x01,0xe6,0x01,0x01,0x02,0xe7,0xe5,0xe5,0xe5,0xe6,0x03,
- 0x02,0xe6,0x01,0x05,0xe6,0x05,0xe7,0x05,0x01,0x09,0x08,0xe5,0x0a,0x6b,0x01,0xe6,
- 0x12,0x03,0x05,0x03,0x01,0x04,0x08,0x05,0x02,0x01,0x04,0x02,0xe6,0x03,0x02,0x01,
- 0x05,0x03,0x05,0x02,0xe5,0x0c,0x6c,0xe8,0x1f,0x02,0x0a,0xa5,0x07,0x02,0x01,0x0b,
- 0x05,0x01,0x07,0x01,0x04,0x02,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x02,0x04,0x01,
- 0xe5,0x05,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0xe5,0xe5,0x05,0x01,0x02,0x04,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x03,0x08,0x01,0x0f,0xe5,0xe5,0x05,0xe5,0x04,0xe5,0xe5,0x02,0x05,0x09,0xe5,0x15,
- 0x05,0xe5,0x03,0x0d,0xe5,0x72,0xe5,0xe7,0x0b,0x01,0x06,0xe5,0xe5,0x02,0x0a,0x0c,
- 0x01,0x04,0x17,0x05,0x71,0x10,0xe5,0x02,0x22,0x07,0x01,0x03,0x09,0x02,0x05,0x02,
- 0x06,0x07,0x11,0x01,0x07,0x6d,0x02,0xe5,0xe5,0x13,0x01,0x07,0xe5,0x0b,0x03,0x0e,
- 0x09,0x05,0xe5,0x01,0x06,0x14,0x65,0x04,0x01,0x02,0x17,0x01,0x02,0x02,0x09,0x25,
- 0x06,0x09,0x10,0x08,0x65,0xe7,0x1b,0x04,0xe5,0x0b,0x07,0x08,0x09,0x03,0x06,0x01,
- 0x12,0xe5,0x32,0x30,0x0b,0x01,0xe7,0x10,0xe5,0x0d,0x01,0x1b,0xe5,0x06,0xe5,0x11,
- 0x05,0x0e,0xe5,0x02,0x13,0x55,0x01,0x3f,0x03,0x02,0x04,0xe5,0x23,0x30,0x2f,0x0b,
- 0xe5,0x01,0x05,0x10,0x09,0x05,0x03,0x13,0x09,0x07,0x01,0x09,0x10,0x03,0x6c,0x02,
- 0xe5,0x33,0x1c,0x1f,0x6c,0xe6,0xe6,0x14,0x23,0x04,0x01,0x01,0x0b,0x03,0x01,0x05,
- 0x5c,0x21,0x02,0xe5,0x01,0xe5,0x16,0x01,0x01,0xe5,0x06,0x20,0x05,0x09,0xe6,0x15,
- 0x71,0xe6,0x4a,0x09,0x84,0x05,0x01,0x01,0x15,0x09,0x0c,0x0a,0xe5,0xe6,0xe5,0x01,
- 0xe5,0x01,0xe5,0x0a,0x02,0x01,0x1a,0x06,0x01,0x03,0xe5,0x59,0x05,0x01,0x1f,0x09,
- 0xe5,0x0b,0x02,0xe5,0xe7,0x03,0xe5,0x01,0xe5,0x06,0xe6,0x1c,0x05,0xe5,0x5d,0x02,
- 0x03,0xe6,0x02,0xe5,0x11,0x01,0x04,0xe5,0x05,0x06,0x0a,0x02,0xe5,0x01,0x03,0x02,
- 0xe5,0x02,0x03,0xe5,0x01,0x01,0x1d,0x0d,0x52,0x01,0x02,0x05,0x02,0xe5,0xe5,0x13,
- 0x06,0x0c,0x13,0x09,0x01,0x07,0x1f,0x60,0x06,0x03,0xe8,0x15,0x02,0x04,0x01,0x02,
- 0x08,0x04,0x01,0x04,0xe5,0x03,0x01,0x09,0x03,0x02,0xe5,0xe5,0x1c,0x61,0x07,0x04,
- 0xe6,0x1b,0x01,0xe5,0x08,0x03,0x01,0x02,0x0a,0x01,0x01,0x07,0x01,0x04,0xe5,0xe5,
- 0xe5,0xe5,0x01,0x16,0x03,0x64,0x02,0x01,0xe5,0x16,0x01,0x07,0x01,0x04,0x04,0x0b,
- 0x05,0x01,0x07,0x01,0x05,0x01,0x01,0x03,0xe5,0x07,0xe5,0x0d,0x64,0x05,0x01,0xe7,
- 0x15,0x02,0x02,0xe5,0x01,0x01,0xe5,0x02,0xe7,0x05,0x01,0x05,0x01,0x01,0xe5,0xe5,
- 0x08,0x07,0x05,0xe5,0x07,0xe5,0x0d,0x6b,0xe7,0x04,0x17,0x02,0x06,0xe5,0x10,0x0a,
- 0x13,0x02,0x06,0x02,0x76,0xe5,0x02,0x1e,0x1b,0x0b,0xe6,0x06,0xe5,0x11,0xe5,0x1d,
- 0x59,0x01,0xe7,0x0d,0x09,0xe5,0x01,0x05,0xe5,0x07,0x09,0x06,0x02,0x09,0x06,0x02,
- 0x09,0x09,0x0b,0x09,0x05,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x01,0x06,
- 0x04,0x20,0x1a,0x13,0x86,0x07,0xe8,0x1e,0xb5,0x08,0xe8,0x16,0x01,0xe6,0x04,0x01,
- 0xe6,0x18,0x01,0x07,0x01,0x09,0x26,0x61,0x01,0xe6,0x16,0x01,0x07,0x01,0x15,0x04,
- 0xe5,0xe6,0x05,0x01,0xe5,0x08,0x03,0x05,0x1f,0x5d,0xe5,0x01,0xe5,0x17,0x01,0x07,
- 0x01,0x19,0x01,0x07,0x09,0x08,0x20,0x01,0x5d,0xe9,0x08,0x0b,0xe5,0x01,0x05,0xe6,
- 0x06,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe6,0x06,0xe6,0x04,0x01,0xe5,0x07,0xe5,
- 0x05,0xe6,0x09,0xe5,0xe5,0xe5,0x03,0xe5,0x08,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0x02,0xe5,0x20,0x1d,0x01,
- 0x07,0x01,0x05,0x01,0x01,0x05,0x04,0xe5,0x0c,0x0a,0x02,0x01,0x19,0x09,0x3a,0x01,
- 0x01,0x23,0x1b,0x01,0x07,0x01,0x07,0x01,0x1a,0x0b,0xe5,0xe5,0x05,0x57,0xe8,0x18,
- 0x25,0x01,0x09,0x05,0x07,0x01,0x01,0x01,0x0d,0xe6,0x01,0x0a,0x01,0x04,0x12,0x01,
- 0x07,0x01,0x3b,0xe7,0x18,0x20,0x04,0x0b,0xe5,0x01,0x09,0x03,0x01,0xe5,0x0b,0xe5,
- 0x02,0x0a,0x01,0x17,0x09,0x3c,0x03,0xe5,0x01,0x15,0xe5,0x02,0x04,0xe5,0x19,0x09,
- 0x01,0xe5,0x08,0x1c,0x69,0x01,0xe7,0x0b,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x04,0x02,0x01,0xe5,0xe6,0x02,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,
- 0x06,0x02,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x0b,0xe5,0xe5,0x12,0x08,0x0d,0x0c,0xe5,0x15,0x01,0xe6,
- 0x8d,0xe5,0x14,0x06,0x15,0x02,0x05,0x1d,0x01,0x31,0x28,0x25,0x03,0xe5,0x1b,0x1a,
- 0x0b,0x0a,0x03,0x09,0x09,0x09,0xe5,0x09,0x09,0x09,0x09,0x44,0xe7,0x03,0xe5,0x12,
- 0x09,0x1b,0x04,0x04,0x02,0x04,0x03,0x03,0x03,0x01,0x0e,0x02,0x0b,0x3f,0x1f,0x01,
- 0xe8,0x03,0x2a,0x09,0x03,0x02,0x0a,0x01,0x04,0x05,0x05,0x11,0x0e,0x5d,0x01,0xe7,
- 0x01,0x05,0x06,0x06,0x09,0x01,0x01,0xe5,0x0a,0x08,0x0e,0xe5,0x10,0x0b,0x08,0x0d,
- 0x1b,0xe5,0x1c,0x21,0xe5,0xe8,0x03,0x1b,0x1d,0x01,0x07,0x1d,0x09,0x22,0x24,0x25,
- 0x02,0x23,0xe5,0xe5,0x16,0x04,0x02,0x04,0x15,0x07,0xe5,0x05,0x47,0x02,0x23,0x01,
- 0xe5,0x1a,0x0a,0x25,0x23,0x31,0x31,0x02,0x05,0x03,0x15,0x1d,0x23,0x09,0x0f,0xe5,
- 0x1a,0x27,0x13,0x13,0xe8,0x19,0x26,0x09,0x01,0x11,0xe5,0x39,0x01,0x1a,0x07,0x21,
- 0x1c,0x02,0x08,0x18,0x08,0xe6,0x1f,0x2f,0x41,0x02,0x3f,0x01,0x09,0x0e,0x02,0x10,
- 0x2d,0x2d,0x13,0xea,0x17,0xe5,0x0b,0x01,0x14,0x02,0xe5,0x01,0x01,0x05,0x0e,0x3d,
- 0x19,0xe5,0x24,0x01,0x02,0xe5,0x01,0x01,0x16,0x0b,0xe5,0x10,0x01,0x01,0x01,0xe5,
- 0x02,0xe5,0x02,0xe5,0x11,0x03,0x09,0x2e,0xe6,0x17,0x01,0x20,0x02,0x03,0xe6,0x03,
- 0x36,0xe5,0x01,0x01,0x01,0x07,0xe5,0x12,0x3a,0x01,0x1e,0x17,0x01,0x02,0x04,0x01,
- 0x01,0x02,0x3c,0x01,0x09,0x01,0x0c,0xe5,0x3e,0x01,0x1f,0x16,0x06,0x02,0x01,0xe6,
- 0x20,0x01,0x1b,0x01,0x06,0xe5,0xe6,0xe5,0x0d,0x01,0xe8,0x01,0xe5,0xe5,0x32,0x1b,
- 0x1b,0x07,0x01,0x01,0xe5,0xe5,0x1e,0x01,0x01,0x12,0x06,0x01,0x01,0x03,0xe6,0xe6,
- 0xe5,0x11,0xe5,0xe5,0xe6,0xe5,0xe5,0x30,0x01,0x19,0x03,0x1a,0x03,0x01,0x01,0xe6,
- 0x20,0x01,0x14,0x06,0x01,0x05,0x01,0x01,0xe5,0x16,0x01,0xe5,0xe5,0x32,0x1b,0x06,
- 0x01,0x1c,0x02,0x21,0x01,0x1b,0x01,0x07,0x01,0xe5,0x12,0x03,0x01,0xe5,0xe5,0x32,
- 0x1b,0xe5,0x03,0xe5,0x1e,0xe6,0x04,0x17,0x02,0x2d,0x13,0xe5,0x01,0x57,0x1e,0x01,
- 0x02,0x38,0x0d,0xe5,0x03,0xe6,0x11,0x02,0x59,0x1f,0xe5,0x01,0xe5,0x0d,0x09,0x09,
- 0x02,0x06,0x09,0xe5,0x04,0x02,0x09,0xe5,0xe5,0x05,0x09,0x01,0x03,0x03,0x0b,0x09,
- 0x09,0x09,0x09,0x02,0x06,0x09,0x09,0x09,0x09,0x0d,0x02,0x01,0x02,0x3a,0xe5,0x0d,
- 0xe5,0x0c,0x05,0x73,0x08,0xe7,0x3a,0x11,0x0b,0x79,0x0a,0x01,0x01,0x21,0x01,0x07,
- 0x01,0x06,0xe5,0x08,0x09,0x01,0x01,0x0f,0x3c,0xe5,0x1c,0x01,0xe6,0x1f,0xe5,0x01,
- 0x1a,0x06,0x01,0xe5,0x05,0x01,0xe5,0x07,0xe5,0x08,0x06,0x01,0xe6,0x0b,0x04,0x01,
- 0x39,0x02,0x19,0xe5,0xe5,0xe5,0x20,0x01,0xe5,0x16,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x08,0x09,0xe5,0xe5,0x16,0x37,0x1d,0x01,0x03,0x1d,0xe5,0xe8,0x13,0x01,0x01,0x03,
- 0xe6,0xe5,0xe5,0x02,0x01,0x01,0x01,0x03,0xe6,0x02,0x05,0xe5,0x07,0xe6,0xe6,0x03,
- 0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe6,
- 0x06,0xe5,0x07,0xe5,0x07,0xe6,0xe6,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x06,0x02,0xe5,
- 0x14,0x07,0x01,0x07,0x01,0x07,0x01,0x17,0xe5,0x0f,0x3d,0x1f,0xe6,0x20,0xe7,0x08,
- 0x0c,0x09,0x09,0x07,0x01,0x16,0xe5,0x11,0x3b,0x1d,0x28,0xe5,0x13,0x01,0x01,0x04,
- 0xe5,0x08,0x09,0x17,0x11,0x14,0x28,0x1f,0x23,0x02,0x03,0x0f,0x03,0x01,0x03,0xe5,
- 0x07,0x06,0x02,0xe5,0x17,0x02,0x0e,0x01,0x02,0x38,0x1d,0x04,0x1f,0x01,0x01,0xe5,
- 0x3d,0xe5,0xe5,0x05,0x02,0x10,0x02,0xe5,0x38,0x01,0xe5,0x19,0x01,0xe5,0x1f,0x04,
- 0x0a,0x06,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x07,0x01,0x04,0x02,
- 0x01,0x07,0x01,0x07,0x01,0x03,0x03,0x01,0x02,0x04,0x01,0x04,0x04,0x01,0x07,0x01,
- 0x07,0x01,0xe5,0x05,0x01,0x04,0x02,0x01,0x07,0x01,0x01,0x05,0x01,0x04,0x02,0x01,
- 0x07,0x01,0x02,0x04,0x01,0x0a,0x02,0xe5,0x12,0x05,0xe5,0x01,0x20,0x0a,0xe8,0xe5,
- 0x0a,0x01,0x01,0xe6,0x35,0x1b,0x06,0xe5,0x21,0xe5,0xe6,0x09,0x0a,0x09,0x3c,0x14,
- 0x4c,0xe5,0x1b,0x04,0x03,0x12,0xe5,0xe5,0x01,0x03,0x09,0x05,0x03,0x14,0x01,0x02,
- 0x0d,0x01,0x12,0x41,0x05,0x01,0x22,0xe5,0x01,0x04,0x1c,0xe6,0x03,0x02,0x09,0x01,
- 0x05,0x01,0x02,0x08,0xe5,0x08,0x0d,0x09,0x03,0x44,0x01,0x1e,0x04,0xe5,0xe8,0x01,
- 0x0f,0x0e,0x0a,0x05,0x04,0x02,0x06,0x07,0x10,0x07,0x0d,0x4a,0x1b,0x05,0xe5,0x01,
- 0xe5,0x07,0x13,0x09,0x06,0x06,0x02,0x1d,0x08,0x0d,0x03,0x12,0x2b,0xe5,0x0b,0x05,
- 0xe5,0x15,0xeb,0x10,0x08,0x22,0x0d,0x04,0x0a,0x05,0x0e,0x04,0x0c,0x06,0x05,0x0d,
- 0x13,0x10,0x01,0xe5,0x04,0x0b,0x05,0xe5,0x01,0x1c,0x09,0x12,0x0c,0x19,0x05,0x0a,
- 0x44,0x1d,0x0d,0xe5,0x0b,0xe5,0x07,0xe5,0x07,0xe5,0x03,0x0e,0x04,0x01,0x1c,0x02,
- 0xe5,0x03,0x09,0x03,0xe5,0x4f,0xe5,0x19,0xe7,0x0f,0x02,0x06,0x09,0x11,0x0c,0x0a,
- 0x11,0x10,0xe5,0x52,0x18,0xe5,0xe5,0x01,0x0b,0x09,0x09,0x0a,0x29,0x06,0x01,0x14,
- 0x2d,0x0b,0x01,0x12,0x1a,0x02,0x2b,0xe6,0x21,0x0f,0x03,0x0d,0xe5,0xe5,0x2b,0x0e,
- 0x09,0x23,0xe5,0xe5,0x3a,0x25,0x01,0x02,0x0c,0x3c,0x0a,0x22,0x01,0x01,0xe6,0x07,
- 0xe5,0x05,0x09,0x04,0x04,0x04,0x24,0xe5,0x89,0xe6,0x01,0xe5,0x01,0x01,0x04,0xe5,
- 0x0b,0xe5,0x07,0x09,0x46,0x3c,0xe6,0x10,0xe5,0x11,0x01,0x01,0x02,0xe8,0x03,0x0f,
- 0x02,0x06,0x04,0x07,0x06,0xe5,0xe5,0xe5,0x21,0xe5,0x02,0x02,0x4c,0x04,0x06,0x02,
- 0x06,0x11,0x01,0x07,0xe5,0x01,0x11,0x01,0x02,0x04,0x01,0x02,0x07,0x06,0xe5,0xe5,
- 0xe5,0x21,0xe5,0x4f,0x02,0x06,0x0c,0x17,0x02,0x02,0xe5,0x11,0x01,0x01,0x02,0x02,
- 0xe5,0x01,0xe5,0x03,0x04,0x09,0x01,0x02,0x24,0x02,0x01,0x01,0x0b,0x3a,0x08,0xe6,
- 0x05,0x02,0xe5,0xe5,0x01,0x01,0x01,0x12,0x01,0xe5,0x01,0x13,0xe5,0x03,0x04,0x04,
- 0x04,0x03,0x05,0x01,0x02,0x24,0x01,0xe6,0x01,0x48,0x01,0x01,0x01,0x02,0x04,0x05,
- 0x01,0x02,0x01,0x01,0x0b,0x02,0x03,0xe8,0x03,0x0b,0xe5,0x01,0x01,0x0b,0x07,0x0f,
- 0xe5,0x71,0x01,0x09,0x07,0x01,0x17,0xe6,0xe6,0x18,0x09,0x07,0x0e,0x24,0x4f,0x13,
- 0x01,0x18,0x02,0xe5,0x0c,0x04,0x04,0x04,0xe5,0x07,0xe5,0x11,0x27,0x65,0xe6,0x0c,
- 0x07,0xe6,0x09,0x12,0xe5,0x07,0xe5,0x3a,0x51,0x09,0x07,0x01,0x14,0xe5,0xe6,0x09,
- 0x03,0x07,0x01,0x07,0x01,0x09,0x09,0x09,0x09,0x09,0x09,0x05,0x03,0x0b,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x05,0xe5,0x01,0x03,0x05,0x03,0x05,0x06,0x06,0x02,0x01,0x02,
- 0x14,0x01,0x02,0x04,0x01,0x02,0x13,0x27,0x54,0xe5,0x1b,0xe5,0x03,0x02,0x01,0xe6,
- 0x19,0x09,0x92,0x1c,0x0a,0x01,0xe5,0xe5,0x2a,0x07,0x04,0x04,0x01,0x07,0x01,0x0e,
- 0x1a,0x39,0x01,0x06,0x0a,0x01,0x16,0x03,0x01,0x0c,0x03,0xe5,0x08,0x09,0x07,0xe5,
- 0x02,0x04,0x01,0x05,0x01,0xe5,0x05,0x01,0xe5,0x12,0xe5,0x12,0xe5,0x37,0x01,0xe5,
- 0x08,0x06,0x01,0xe6,0x17,0x01,0x17,0x01,0x07,0x01,0x09,0x07,0x09,0x01,0x07,0x01,
- 0x10,0xe5,0x11,0x04,0x38,0x02,0x09,0x07,0x01,0x03,0x14,0xe5,0x01,0x13,0x01,0x01,
- 0x01,0x03,0x01,0x01,0x01,0x04,0xe5,0x02,0x03,0xe6,0x02,0x04,0x01,0xe5,0xe5,0x02,
- 0xe5,0xe6,0xe5,0x03,0xe6,0x06,0xe6,0x08,0x08,0xe5,0x03,0x05,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,
- 0xe5,0x06,0xe5,0xe6,0x0c,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,0x03,0x03,0xe6,
- 0xe5,0x0f,0x09,0x0e,0x15,0x39,0x01,0x11,0x01,0x18,0xe5,0xe6,0x0c,0x01,0x06,0xe5,
- 0xe5,0x05,0xe5,0xe5,0x05,0x02,0x06,0x02,0x06,0x09,0x09,0x07,0x01,0x09,0x0e,0x39,
- 0x01,0x11,0x01,0x1b,0xe5,0x0c,0x01,0x03,0x01,0x07,0x01,0x08,0xe5,0x02,0x05,0x01,
- 0x06,0xe6,0x05,0x01,0xe5,0x08,0x09,0x04,0x03,0xe5,0x0a,0x02,0x3b,0x15,0x18,0x01,
- 0x04,0x08,0x01,0x02,0xe6,0x06,0xe6,0x06,0xe6,0x03,0x03,0x05,0x02,0xe6,0x07,0xe5,
- 0x08,0x05,0x03,0x08,0xe5,0x0c,0x02,0x3b,0x29,0x03,0x02,0xe5,0x02,0x1e,0xe5,0x06,
- 0x01,0x2e,0x02,0x4e,0x01,0xe5,0x05,0x03,0x1f,0xe5,0x02,0x03,0x05,0x07,0x01,0x01,
- 0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x01,0x05,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,
- 0x05,0x01,0x07,0x01,0x04,0x02,0x01,0x02,0xe5,0x02,0xe6,0x06,0x01,0x07,0x01,0x0e,
- 0x08,0x12,0x09,0x02,0x26,0x01,0x0b,0xe5,0x01,0x01,0x72,0x07,0x03,0xe5,0x14,0x05,
- 0x02,0x09,0x0a,0x13,0x47,0x1b,0x0a,0x25,0x01,0xe5,0xe5,0xe5,0x0d,0xe5,0x03,0x03,
- 0x05,0x09,0x05,0x1c,0xe5,0x21,0x27,0x05,0x3f,0xe5,0xe6,0x0b,0x01,0x07,0xe5,0x09,
- 0x1b,0x02,0x06,0x02,0x03,0x01,0x05,0xe5,0x04,0x0e,0x33,0x13,0x02,0x09,0xe6,0x16,
- 0xe5,0x02,0x0a,0x02,0x02,0x01,0x08,0x25,0x09,0x0c,0x0b,0xe5,0x0a,0x31,0x18,0x21,
- 0xe9,0x07,0x17,0x02,0x16,0x05,0x09,0x02,0x07,0x06,0x1a,0x32,0x09,0x06,0x06,0x0e,
- 0x0a,0x02,0x01,0x04,0x07,0x2b,0x06,0xe5,0x03,0x03,0x13,0x02,0x10,0x3d,0x01,0x30,
- 0x39,0x05,0x09,0x02,0x0b,0x06,0x11,0xe5,0x4a,0x15,0x09,0x02,0xe5,0x07,0x01,0x05,
- 0x02,0x10,0x19,0x07,0x01,0x01,0x07,0x09,0x0a,0xe5,0x03,0x03,0x3d,0xe6,0x14,0xe5,
- 0x15,0x01,0xe5,0x13,0x13,0x08,0x1a,0x0c,0x0f,0x07,0x40,0x2c,0xe8,0x0d,0x22,0x09,
- 0x02,0x01,0x1b,0x01,0x08,0x03,0x0a,0x39,0x09,0xe5,0x1f,0x03,0xe5,0x0e,0x0a,0x0c,
- 0x2a,0x0c,0x03,0x0e,0x3e,0x06,0x02,0x22,0x02,0xe5,0x0c,0x01,0x4f,0x01,0x4d,0x01,
- 0x07,0xe5,0x1c,0x08,0xe5,0xe5,0x0a,0x10,0xe5,0x0d,0x03,0x01,0x03,0xe5,0x07,0xe5,
- 0x01,0xe5,0xe5,0x01,0xe6,0x1a,0xe6,0xe5,0xe5,0x44,0x01,0x04,0x1e,0x01,0x03,0x01,
- 0x02,0x08,0x22,0x01,0xe5,0x0a,0xe6,0xe5,0x04,0xe6,0x17,0x01,0x03,0x03,0x01,0x45,
- 0xe5,0x20,0x02,0x02,0xe7,0x03,0x08,0x1d,0x01,0x0b,0x02,0x01,0x06,0xe5,0x01,0x01,
- 0x01,0x0c,0xe5,0x3b,0x01,0xe5,0xe5,0x03,0x01,0x07,0xe5,0xe5,0xe5,0x09,0xe5,0x1a,
- 0x07,0xe5,0x01,0x0a,0x1a,0xe5,0xe5,0xe5,0x10,0x01,0x09,0x0e,0x3d,0xe5,0xe5,0xe5,
- 0x08,0x04,0x02,0x0d,0x15,0xe5,0x05,0x02,0xe5,0xe7,0x08,0x01,0xe5,0x30,0x01,0x07,
- 0x01,0x04,0x01,0x08,0x03,0xe5,0x46,0x02,0x01,0xe6,0xe6,0x04,0x24,0x01,0x02,0x02,
- 0x0a,0x03,0x1d,0x0f,0x01,0x01,0x01,0x02,0x02,0x01,0x04,0x13,0x38,0x0c,0x01,0xe5,
- 0x05,0xe6,0x21,0x02,0xe9,0x0b,0x05,0xe5,0x15,0x01,0x04,0x01,0x0a,0x01,0x02,0x04,
- 0x01,0x05,0x08,0x01,0x08,0x35,0x01,0x11,0x01,0x2b,0xe7,0xe5,0x0c,0x06,0x16,0x01,
- 0x11,0x01,0x07,0x01,0x4f,0x01,0x09,0xe5,0x05,0x02,0x0b,0x1f,0xe5,0x01,0xe5,0x13,
- 0x39,0x13,0x02,0x41,0x09,0x02,0x02,0x05,0x18,0xe5,0x03,0x02,0x01,0x50,0x01,0x11,
- 0x47,0x09,0x21,0x05,0x03,0xe5,0x0d,0x09,0x09,0x09,0x09,0x09,0x02,0x06,0x05,0x03,
- 0x06,0x02,0x03,0x05,0x0b,0x09,0x09,0x09,0x09,0x09,0xe5,0x03,0x03,0xe5,0x01,0xe5,
- 0xe5,0x01,0x09,0x09,0x0b,0x01,0x01,0x01,0xe5,0x58,0x02,0x47,0x09,0x0f,0x1f,0xe5,
- 0x01,0x5b,0x45,0x0b,0x30,0xe5,0x01,0x0f,0x07,0x01,0x25,0x01,0x06,0xe5,0xe5,0x13,
- 0x05,0xe5,0xe5,0x30,0x01,0x07,0x02,0x09,0xe5,0x01,0x02,0x01,0x02,0x22,0xe5,0x0e,
- 0xe5,0x05,0x01,0xe5,0x22,0xe5,0xe6,0x05,0x01,0xe5,0x19,0x01,0xe5,0x2f,0x01,0xe5,
- 0x07,0x0e,0x02,0x01,0x01,0x21,0x01,0xe5,0x0e,0x07,0x01,0x17,0x0d,0x01,0x25,0x01,
- 0x31,0x01,0x14,0x06,0x01,0x03,0x1d,0x03,0xe6,0x0d,0x03,0xe8,0xe5,0x02,0xe5,0xe5,
- 0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x05,0x01,0xe5,0x07,0xe5,
- 0x01,0x05,0xe6,0xe5,0x02,0xe6,0x09,0xe5,0x07,0xe5,0x08,0xe5,0x06,0xe7,0xe5,0x02,
- 0x01,0xe5,0x07,0xe5,0x07,0xe6,0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x07,0x02,0x0f,
- 0xe6,0x01,0x09,0x13,0x0c,0x09,0x01,0xe5,0x03,0x04,0xe5,0x02,0x13,0x29,0xe5,0x05,
- 0x01,0x15,0x01,0x23,0x02,0x0f,0x03,0x02,0x09,0x07,0x01,0x09,0x0a,0x09,0x01,0xe5,
- 0x1f,0x02,0x09,0x01,0x09,0x34,0x22,0xe8,0x0e,0x05,0x07,0x01,0xe5,0x05,0x01,0xe5,
- 0x05,0x01,0xe5,0x09,0x09,0x01,0x03,0x01,0x09,0x12,0xe5,0x01,0x11,0x13,0xe5,0x08,
- 0x0b,0x09,0x01,0x23,0x01,0xe5,0x0b,0x02,0xe5,0x01,0xe7,0x05,0xe5,0x04,0x02,0xe5,
- 0x07,0x0d,0x09,0x01,0xe5,0x01,0x06,0x02,0x10,0x02,0x08,0x03,0x09,0x12,0xe5,0x07,
- 0x19,0x02,0x1f,0x03,0xe5,0x0b,0xe5,0xe5,0x27,0x05,0x06,0x02,0x13,0x02,0x44,0x01,
- 0xe5,0x06,0x01,0x04,0x05,0x21,0x01,0xe5,0x10,0x01,0x02,0x04,0x01,0x07,0x01,0x07,
- 0x01,0x01,0x05,0x01,0x03,0x03,0x01,0x01,0x05,0x01,0x02,0x04,0x01,0x01,0x05,0xe6,
- 0x06,0x01,0x01,0x02,0x04,0x01,0xe6,0x04,0x01,0xe5,0x05,0x01,0xe6,0x04,0x01,0x07,
- 0x01,0xe5,0x02,0x02,0x01,0xe6,0x04,0x01,0xe5,0xe5,0x03,0x01,0x07,0x01,0x07,0x01,
- 0x0a,0xe5,0x01,0x0e,0x11,0x20,0x08,0x04,0x0d,0xe5,0x38,0x09,0x04,0xe5,0x0b,0x05,
- 0xe5,0x20,0x02,0xe6,0x0a,0x1c,0x04,0x0e,0x05,0x04,0x27,0x01,0x11,0x14,0x05,0x0d,
- 0x0a,0x01,0x07,0x1a,0x01,0xe7,0x01,0x19,0x23,0x02,0x0e,0x09,0x09,0x09,0xe5,0x09,
- 0x09,0x09,0x09,0x0a,0x01,0x01,0x11,0x22,0x01,0x01,0x0a,0x0c,0xe6,0x1f,0x09,0x06,
- 0x04,0xe5,0x0c,0x07,0xe6,0xe5,0x2e,0x02,0x06,0x02,0x06,0xe7,0x05,0x01,0x0d,0x15,
- 0x01,0xe5,0x07,0x0e,0x21,0x10,0x12,0x09,0x09,0x2b,0x0a,0x06,0x0b,0x21,0x01,0x01,
- 0xe5,0x08,0x09,0x09,0x09,0x1d,0x0e,0xe5,0x0c,0x09,0xe5,0x01,0x06,0x23,0xe5,0x03,
- 0xe5,0x03,0x08,0x04,0x02,0x04,0xe5,0x08,0x13,0xe7,0xe5,0x08,0x0c,0x03,0x13,0x0b,
- 0x07,0x09,0xe5,0x09,0x07,0x10,0x24,0x04,0x04,0x04,0x0e,0x04,0x01,0x0a,0x16,0x01,
- 0xe7,0x3d,0x0e,0xe6,0x06,0x15,0x03,0xe5,0x29,0x09,0x0a,0x05,0x05,0x13,0x01,0x03,
- 0x09,0x06,0x01,0x0a,0x0c,0x08,0xe5,0x07,0xe5,0x1e,0x0c,0x0f,0x29,0xe5,0x07,0xe5,
- 0x07,0xe5,0x05,0x20,0x04,0x02,0xe6,0x02,0x1a,0x09,0x09,0x15,0x0b,0x03,0x0b,0x0c,
- 0x29,0x01,0x07,0x01,0x01,0x02,0x02,0x01,0x01,0x24,0x06,0x02,0x35,0x01,0x1a,0xe5,
- 0xe5,0x04,0x1d,0x09,0x09,0x0b,0x03,0x02,0xe5,0x06,0x01,0x09,0x05,0x1e,0x06,0xe6,
- 0x19,0x1d,0x0d,0x04,0xe5,0x02,0x03,0xe5,0x16,0x2d,0xe5,0x08,0x10,0x02,0xe5,0x22,
- 0xe6,0x53,0x18,0x2f,0x09,0x11,0x01,0x1e,0x03,0xe5,0x01,0x01,0x26,0xe5,0x03,0xe5,
- 0x01,0xe5,0x03,0x03,0x01,0x0a,0x02,0x09,0xe5,0x0e,0x37,0xe5,0x03,0x09,0x06,0x01,
- 0x04,0xe5,0x19,0x02,0x03,0xe7,0xe5,0xe5,0x22,0x01,0x07,0xe5,0xe5,0x05,0x01,0xe7,
- 0x06,0x06,0x01,0xe5,0x12,0x33,0x03,0xe5,0x04,0x08,0xe6,0x03,0x01,0x02,0x01,0x1d,
- 0x02,0x01,0xe6,0x03,0x0f,0x01,0xe5,0xe5,0x14,0x0c,0xe5,0xe5,0x08,0x0d,0x0f,0x30,
- 0x01,0x02,0x18,0x01,0xe5,0x01,0x24,0xe5,0x01,0x14,0x01,0x1b,0x06,0x02,0x01,0x07,
- 0x05,0xe5,0x01,0x13,0x44,0x02,0x06,0x04,0xe5,0x1a,0x02,0x01,0xe5,0xe5,0xe6,0x07,
- 0x02,0x2b,0x02,0x01,0xe5,0x01,0x07,0x10,0x01,0x0a,0x40,0x01,0x02,0x01,0x01,0x02,
- 0x02,0xe6,0xe5,0x03,0x01,0x1a,0xe6,0xe6,0xe5,0x02,0x15,0x19,0x06,0x01,0xe5,0xe5,
- 0xe5,0x03,0xe5,0x02,0x05,0x03,0x04,0x0a,0x03,0x2f,0x02,0xe5,0xe5,0x01,0x04,0xe5,
- 0x02,0xe5,0xe5,0x01,0xe5,0xe6,0x01,0x03,0x02,0x18,0x01,0x01,0xe7,0x16,0x01,0x04,
- 0x13,0x09,0x01,0xe5,0x06,0x01,0x06,0x02,0x07,0x0b,0x36,0x0e,0x01,0x01,0x0c,0x1e,
- 0xe6,0xe6,0x16,0x01,0x03,0xe6,0x10,0xe6,0xe5,0x01,0x06,0x01,0x07,0x05,0xe6,0xe5,
- 0x12,0x40,0x06,0x01,0x0c,0x1e,0xe6,0x01,0xe5,0x36,0x0c,0x02,0x57,0xe5,0x01,0x05,
- 0xe5,0x01,0x05,0xe5,0x07,0x1f,0x02,0xe5,0x3b,0x09,0xe5,0x55,0xe6,0x0a,0xe5,0x05,
- 0x03,0x04,0x02,0x20,0xe6,0x0d,0x09,0x09,0x09,0x06,0x02,0xe5,0x01,0x05,0x02,0x06,
- 0x09,0x02,0x06,0x09,0x0b,0x09,0x09,0x09,0x09,0xe6,0x01,0x01,0x02,0x06,0x02,0x09,
- 0x05,0x03,0x09,0x0d,0x03,0xe5,0x01,0x2e,0x0c,0x5b,0x05,0x0a,0x02,0x0f,0x1c,0x03,
- 0x01,0xe5,0x3c,0x59,0x14,0x32,0xe7,0x16,0x01,0x1d,0xe6,0x18,0x01,0x42,0x04,0x02,
- 0x10,0x04,0x07,0x23,0x17,0x01,0xe5,0x18,0xe5,0xe5,0x05,0x03,0x0f,0xe5,0xe6,0x40,
- 0x04,0xe6,0x08,0x05,0x02,0xe5,0x01,0x06,0x01,0x1e,0xe5,0x01,0x17,0x01,0x1d,0x1b,
- 0x01,0x47,0x06,0xe5,0x04,0x09,0xe5,0x01,0x05,0x16,0x07,0x03,0x13,0x01,0xe6,0xe5,
- 0x02,0xe5,0xe5,0x05,0x02,0x06,0xe5,0xe5,0x01,0xe5,0x03,0xe5,0x07,0xe5,0x07,0xe6,
- 0xe5,0x04,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,
- 0x05,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,0x06,0x02,0xe5,0x15,
- 0x03,0xe5,0x01,0x0f,0xe5,0x06,0x07,0x15,0xe5,0x43,0x1d,0x24,0x03,0x15,0xe5,0x05,
- 0x02,0x09,0x06,0x02,0xe5,0x0a,0x13,0xe5,0x43,0x01,0x41,0x02,0x13,0x01,0x09,0xe5,
- 0x05,0x01,0xe5,0x06,0xe6,0x01,0x1d,0x1c,0x28,0x01,0x41,0x02,0x0c,0x06,0xe5,0x04,
- 0x02,0xe5,0x07,0xe5,0x04,0x02,0x10,0x12,0xe5,0x43,0x01,0x02,0x09,0x04,0x04,0x04,
- 0x04,0x1f,0xe5,0xe7,0x30,0x05,0x03,0x02,0x09,0x04,0x02,0x01,0xe5,0xe5,0xe5,0x0d,
- 0xe5,0xe5,0x2f,0x02,0xe5,0x04,0x01,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x1f,0xe6,
- 0x01,0x11,0x01,0xe5,0x05,0x01,0xe5,0xe5,0x03,0x01,0x02,0x04,0x01,0x07,0x01,0x01,
- 0x05,0x01,0xe5,0x02,0x02,0x01,0x03,0x03,0x01,0x07,0x01,0x07,0x01,0x04,0x04,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x03,0x03,0xe6,0x03,0x02,0x01,0x04,0x02,0x01,0x02,
- 0xe5,0x02,0x01,0x07,0x01,0x07,0x01,0x0d,0xe5,0x34,0x0a,0x02,0x04,0x0e,0x10,0x27,
- 0x09,0xe5,0xe7,0x03,0x02,0xe5,0x04,0x06,0x07,0x23,0xe6,0x03,0x10,0x12,0x14,0x06,
- 0x10,0x03,0x0b,0x07,0x2d,0xe5,0x0d,0x08,0x02,0x05,0x1e,0xe6,0xe6,0x08,0x0b,0x06,
- 0x02,0x05,0x01,0x08,0x13,0x07,0x0c,0x09,0x0d,0x32,0xe5,0xe5,0x05,0x0f,0x1f,0x01,
- 0x01,0xe5,0x03,0x0b,0x05,0x01,0x01,0x04,0x16,0x04,0x02,0x01,0x0e,0x02,0x01,0x18,
- 0x2c,0x06,0x02,0x0b,0xe6,0x01,0x01,0xe7,0x0f,0x12,0x02,0x02,0x02,0x11,0x02,0x0e,
- 0x07,0x03,0x04,0x03,0x03,0x01,0xe5,0x0d,0xe5,0x04,0x06,0x0e,0x2c,0x09,0x02,0x04,
- 0x09,0x23,0xe5,0xe7,0x07,0xe5,0x14,0x06,0xe5,0xe5,0x0b,0x03,0x03,0x02,0x09,0x0c,
- 0x09,0x05,0x07,0x04,0x22,0x0c,0xe5,0x07,0xe6,0x07,0x03,0x13,0x0c,0x01,0x04,0xe5,
- 0x0d,0x07,0x18,0xe6,0x03,0xe5,0x04,0x1c,0x06,0x09,0x18,0x1d,0x0b,0x04,0xe5,0x05,
- 0x1e,0x01,0x1e,0x09,0x0a,0xe5,0x17,0x16,0x02,0x02,0x06,0x2f,0x16,0x02,0x16,0x01,
- 0x03,0x07,0xe6,0x12,0x08,0x03,0x09,0x18,0x0b,0x12,0x0e,0x02,0x38,0x01,0xe5,0x07,
- 0xe5,0xe5,0x1a,0x07,0x01,0x47,0x29,0x02,0x2a,0x04,0x06,0xe5,0x01,0xe5,0x01,0x05,
- 0xe5,0x1c,0x05,0x03,0x09,0x07,0x01,0x09,0x08,0xe6,0x05,0x02,0x04,0x06,0x02,0x0a,
- 0x01,0x1f,0x06,0x31,0x09,0x03,0xe5,0x13,0x12,0xe6,0xe5,0x07,0x2d,0xe5,0x0a,0xe5,
- 0x03,0x01,0x07,0x01,0x02,0x06,0x14,0xe5,0x27,0x07,0xe5,0xe5,0x03,0xe5,0xe5,0x06,
- 0x01,0x01,0x1f,0xe5,0x02,0x37,0x07,0x05,0x19,0x14,0x05,0x24,0x07,0x07,0x0d,0x20,
- 0xe8,0x35,0x01,0x09,0x10,0x02,0x07,0x6f,0xe5,0xe5,0x0c,0x01,0xe5,0x01,0x01,0xe5,
- 0x03,0xe5,0x29,0x1d,0x89,0x03,0xe6,0x25,0xe5,0x0d,0xe5,0x01,0x01,0xe5,0x01,0xe5,
- 0x18,0x09,0x36,0x1a,0x05,0xe5,0x1a,0xe6,0xe7,0x01,0x01,0x05,0x01,0x14,0xe5,0x15,
- 0x02,0x01,0xe7,0x11,0xe5,0x06,0x09,0xe6,0x37,0xe5,0xe5,0x03,0x04,0xe6,0x0d,0x01,
- 0x16,0x01,0x03,0x02,0x04,0x04,0xe5,0x01,0x01,0x03,0xe5,0x01,0x01,0x09,0x07,0x01,
- 0x0e,0x01,0xe5,0xe5,0xe5,0x07,0x02,0xe5,0x01,0x01,0x07,0x01,0x07,0x01,0xe5,0x36,
- 0xe5,0xe5,0x05,0xe5,0x03,0x01,0x24,0x04,0x01,0xe6,0x01,0x07,0x02,0x01,0x04,0x02,
- 0x01,0x07,0x06,0x02,0x01,0x13,0x11,0x01,0x07,0x01,0x07,0x01,0x38,0x02,0x06,0x02,
- 0x01,0x04,0xe5,0xe5,0x20,0x05,0xe5,0x0a,0x09,0x0d,0x05,0x0b,0x01,0x07,0x05,0x02,
- 0x04,0x07,0x07,0x02,0x06,0x03,0xe5,0x35,0x01,0x02,0x04,0xe6,0xe5,0xe5,0x07,0x02,
- 0x02,0x1b,0x01,0x01,0x01,0x03,0x0b,0x09,0x05,0x03,0x04,0x04,0x05,0x01,0x01,0x05,
- 0x01,0x01,0x11,0x01,0x05,0x02,0x06,0x04,0x38,0x02,0x02,0x01,0xe6,0xe5,0xe5,0x03,
- 0x04,0x02,0x01,0x18,0x02,0xe8,0x0c,0x01,0x07,0x01,0x03,0xe5,0x03,0x03,0xe6,0xe5,
- 0xe5,0x06,0x01,0x04,0x01,0xe5,0x05,0x01,0x05,0x01,0x01,0xe5,0xe5,0x06,0x01,0x07,
- 0x06,0x1f,0x01,0x10,0xe5,0x01,0x09,0x01,0x04,0xe6,0x1e,0x04,0x01,0xe7,0x01,0x0a,
- 0x01,0x07,0x01,0x04,0x01,0xe5,0x05,0x01,0xe5,0xe5,0x06,0x01,0x03,0xe5,0x01,0x01,
- 0x03,0xe5,0x08,0x01,0xe5,0xe5,0x06,0x01,0xe5,0x05,0x06,0xe5,0x1c,0xe5,0x12,0x01,
- 0xe5,0x01,0x06,0x01,0x04,0x01,0x03,0x23,0xe6,0x01,0x02,0x03,0x3b,0x02,0x05,0xe6,
- 0x0e,0x02,0xe5,0x06,0x02,0x38,0x02,0xe5,0x04,0x02,0x02,0x26,0x01,0xe5,0x09,0x01,
- 0x39,0xe5,0x07,0xe5,0x19,0x3b,0x0a,0x0c,0x1e,0xe5,0xe6,0x07,0x05,0x09,0x09,0x09,
- 0x09,0x09,0x06,0x02,0x09,0x02,0x01,0x01,0x02,0x02,0x03,0x02,0x0b,0x09,0x09,0x09,
- 0x09,0x04,0x01,0x02,0xe5,0x07,0x09,0x03,0x05,0x09,0x0d,0xe7,0xe5,0x01,0x3b,0x06,
- 0x08,0x03,0x10,0x40,0x09,0x04,0xe5,0x25,0x03,0xe7,0x3a,0x13,0x51,0x09,0x32,0x03,
- 0x17,0x01,0x04,0x13,0x04,0x06,0x0a,0x01,0x09,0x07,0x01,0xe6,0x04,0x01,0x0b,0x0e,
- 0x22,0xe6,0x07,0xe5,0x04,0x01,0x01,0x02,0x1b,0x01,0x03,0x17,0x01,0xe5,0x1b,0xe5,
- 0x08,0x03,0x02,0x01,0x01,0x08,0x06,0x01,0x07,0x01,0xe6,0x08,0xe5,0x2c,0xe5,0x07,
- 0x04,0x01,0x05,0x24,0x01,0x14,0x02,0x01,0x1a,0x02,0x04,0x08,0x03,0x01,0x09,0x09,
- 0x07,0x01,0x03,0x02,0x04,0x31,0x0a,0x08,0xe5,0x20,0x02,0xe6,0x12,0xe7,0xe5,0x02,
- 0x01,0xe5,0x07,0xe5,0x05,0xe7,0x01,0x03,0xe7,0x01,0x05,0xe6,0xe5,0x04,0xe5,0x07,
- 0xe6,0x01,0x03,0xe7,0xe5,0x04,0xe5,0x03,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe6,0x01,0x04,0xe5,0x01,0x05,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe5,
- 0x01,0x1a,0xe5,0xe5,0x05,0xe5,0x0a,0x05,0xe6,0x01,0x05,0xe5,0x04,0x01,0x13,0x07,
- 0x0d,0xe5,0x12,0xe5,0x1a,0x36,0x03,0x14,0x01,0x1b,0x01,0x02,0x06,0x0a,0x01,0x09,
- 0x09,0x06,0x02,0x0b,0xe5,0x2d,0x38,0x02,0xe6,0x1d,0x13,0x03,0x03,0x01,0x0d,0x13,
- 0x04,0xe5,0xe5,0x09,0x02,0x31,0x07,0x2e,0x01,0x01,0x10,0x03,0x01,0x03,0x02,0x01,
- 0x04,0x09,0x03,0xe6,0x01,0xe5,0x03,0xe5,0x02,0x0b,0x06,0x0d,0xe7,0x01,0x02,0x08,
- 0xe5,0x12,0x26,0x02,0x11,0x1b,0xe5,0x3d,0x03,0x09,0x03,0x01,0x07,0x01,0x01,0xe5,
- 0x08,0x3a,0x09,0x09,0xe5,0xe5,0x1f,0xe5,0x01,0xe5,0x10,0x01,0x01,0x05,0x01,0x07,
- 0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,0x02,0x04,0x01,0x03,0x02,0xe5,0xe5,0xe5,
- 0xe5,0x02,0x01,0xe5,0x05,0x01,0x04,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x04,0x02,0x01,0x02,0x01,0x02,0x01,0x01,0x05,0x01,0x07,0x01,0x02,
- 0x09,0xe6,0x07,0x02,0x09,0x13,0x0d,0x08,0x03,0x08,0x19,0x06,0x37,0x0f,0x27,0x01,
- 0x01,0xe5,0x0a,0x09,0x05,0x07,0x19,0x05,0x02,0x0a,0x03,0xe5,0x12,0x52,0x1e,0x04,
- 0x05,0x2a,0x05,0x03,0x28,0x09,0x03,0x43,0x28,0x01,0x01,0xe5,0x06,0x0e,0xe6,0x0d,
- 0xe5,0x14,0x09,0x01,0x01,0x02,0x02,0x01,0x07,0x0b,0x38,0x02,0xe7,0x05,0x01,0x07,
- 0x24,0x03,0x18,0x06,0x1d,0x03,0x05,0x04,0x02,0x05,0x0a,0x06,0x03,0x01,0x03,0x07,
- 0x2c,0x0a,0x04,0x04,0x24,0x01,0xe5,0x0f,0x01,0x09,0x1d,0xe5,0x03,0x03,0xe5,0x01,
- 0xe6,0x06,0x07,0x03,0x11,0xe5,0x0e,0x11,0x16,0x03,0x19,0x08,0x0b,0x01,0xe6,0x1e,
- 0x06,0xe5,0x07,0x07,0x06,0xe5,0xe5,0x04,0xe5,0x0d,0x02,0x02,0x07,0x0a,0x4a,0x19,
- 0x09,0x01,0x26,0x18,0x03,0x07,0x02,0x09,0x18,0x37,0x31,0x02,0xe5,0x01,0x08,0x16,
- 0x09,0x15,0xe6,0x03,0x01,0x06,0x02,0x18,0x05,0xe5,0x3a,0xe6,0x0b,0x22,0x01,0x01,
- 0x1a,0x1e,0x06,0x01,0x0b,0x06,0x0a,0x0e,0x38,0x04,0x01,0x20,0xe5,0x0c,0xe5,0x3d,
- 0x03,0x02,0x05,0x59,0x01,0xe5,0x2f,0x04,0x02,0xe5,0xe5,0x07,0x1b,0x09,0x09,0x0f,
- 0xe6,0x17,0x4e,0x28,0x01,0xe5,0xe5,0xe5,0x02,0x18,0x09,0x1b,0x06,0x02,0xe5,0x08,
- 0x1d,0x3b,0x2a,0x03,0x01,0x01,0x3b,0x04,0x04,0x02,0x55,0x01,0x0f,0x27,0x01,0xe5,
- 0xe6,0xe5,0x3c,0xe5,0x07,0xe6,0x15,0x3f,0x01,0x0a,0xe5,0x27,0x01,0x02,0x01,0xe6,
- 0x03,0x37,0xe5,0xe5,0xe5,0x06,0x01,0x56,0xe5,0x03,0x03,0x01,0xe5,0x28,0x04,0xe9,
- 0xe5,0x37,0xe5,0x01,0x01,0x03,0xe5,0x01,0x01,0x56,0x04,0xe5,0x02,0x04,0x22,0xe5,
- 0x04,0x02,0xe6,0xe6,0x3d,0x01,0x02,0x01,0x01,0x02,0x11,0x01,0x43,0x06,0x02,0xe5,
- 0x01,0x02,0x01,0x01,0x24,0x02,0xe8,0x02,0x39,0x04,0xe5,0x01,0x02,0x01,0x0f,0x01,
- 0x01,0x48,0xe5,0xe7,0x03,0x03,0x22,0x03,0x02,0x05,0x39,0x01,0x02,0x04,0x01,0x04,
- 0x01,0x0a,0x01,0x4f,0x04,0x02,0x25,0xe7,0xe6,0x26,0x01,0x14,0x09,0x01,0x04,0x01,
- 0x0a,0x01,0x47,0x09,0x2c,0xe8,0x04,0x03,0x3a,0xe5,0x01,0x06,0x02,0x57,0xe5,0x07,
- 0xe6,0x25,0xe5,0xe7,0x09,0x01,0xa1,0x2f,0x01,0x01,0xe5,0x07,0x05,0x09,0x09,0x09,
- 0x09,0x06,0x02,0x04,0x01,0x02,0x02,0x06,0x09,0x02,0x06,0x0b,0x09,0x09,0x09,0x09,
- 0x09,0x06,0x02,0x09,0x09,0x09,0x06,0x06,0x02,0x01,0x3b,0x02,0x05,0x03,0x61,0x02,
- 0xe5,0x04,0x1e,0x02,0x04,0x03,0x01,0xe5,0x3c,0x09,0x65,0x26,0x0d,0x3c,0x0b,0x66,
- 0x2e,0x01,0xe6,0x1d,0x24,0x05,0x01,0xe5,0x5b,0x07,0x01,0x2a,0x02,0xe6,0xaa,0x33,
- 0xe6,0x14,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x05,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0x01,0x01,0x09,0x1a,0xe5,
- 0x7e,0x09,0x32,0x41,0x07,0x01,0x59,0x0b,0x2e,0xe6,0x3e,0x32,0x3c,0x2e,0xe6,0xe5,
- 0x23,0x1c,0x02,0x65,0x06,0x02,0x2b,0x01,0xe5,0x3d,0x09,0xe5,0xe5,0x57,0xe5,0xe5,
- 0x09,0x2a,0x01,0x01,0x11,0x01,0x07,0x01,0x01,0x04,0xe5,0xe5,0x06,0x01,0x02,0x04,
- 0x01,0x07,0xe6,0x02,0x03,0x01,0x02,0x04,0x01,0x01,0x05,0x01,0x07,0x01,0x02,0x01,
- 0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x04,0x02,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x0a,0x02,0xe5,0x3d,0x01,0x24,0x3e,0x39,0x01,0x01,0xe5,
- 0x09,0x0a,0x13,0x1c,0xe5,0x12,0x03,0x05,0x4d,0x28,0xe5,0x01,0xe5,0x2f,0x09,0x09,
- 0x2c,0x6d,0x02,0xe5,0x3a,0x02,0xe5,0x09,0x59,0x02,0x06,0x01,0x04,0x26,0x02,0x01,
- 0x1d,0x09,0x08,0x0a,0x01,0x08,0xe5,0xe5,0x16,0x0f,0x36,0x08,0x2d,0x02,0xe5,0x3e,
- 0xe5,0x0c,0x06,0x16,0x03,0x2c,0x0b,0x04,0xe6,0x03,0x1a,0x0b,0x01,0xe7,0x07,0x09,
- 0x13,0x13,0x03,0xe5,0xe5,0x01,0x03,0x09,0x17,0x06,0xe5,0x0c,0x13,0x49,0x02,0xe5,
- 0x3b,0x07,0x09,0x09,0x18,0x42,0x2a,0xe7,0x46,0x07,0x21,0x47,0xe5,0x22,0xe6,0xe5,
- 0x70,0x47,0x01,0x23,0xe7,0x3e,0x01,0x6d,0x01,0xe5,0x05,0x01,0x22,0xe5,0xe6,0x40,
- 0xe5,0x6d,0x09,0x23,0xe7,0x3f,0x02,0x01,0x63,0x06,0x02,0x07,0x23,0x01,0xe7,0x10,
- 0xe5,0x29,0x7d,0x1e,0xe6,0xe5,0xe5,0x01,0x01,0x0f,0x01,0x2a,0x02,0x71,0xe5,0x20,
- 0x01,0x02,0xe6,0xe5,0x03,0x19,0xe5,0xe5,0xe5,0x1a,0x6c,0x01,0x02,0xe5,0x09,0x1b,
- 0x04,0xe8,0x01,0x1e,0x01,0x18,0xe5,0x02,0x6a,0x02,0x2b,0x02,0x01,0x01,0x46,0x01,
- 0x64,0x03,0x01,0xe6,0x01,0x05,0x1f,0x01,0x01,0x02,0x22,0x1d,0x04,0x66,0x04,0x26,
- 0x03,0xe5,0xe6,0x1f,0x01,0x1d,0x05,0x1c,0x01,0x48,0x04,0x01,0x01,0x04,0x1f,0x01,
- 0x01,0xe5,0x20,0x01,0x1b,0x23,0xe5,0x4b,0x04,0x01,0x29,0x45,0x02,0x6b,0x09,0x20,
- 0xe7,0x45,0x6c,0x0a,0x1f,0x03,0xe5,0x0d,0x09,0x09,0x09,0x09,0x06,0x02,0x03,0x05,
- 0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x06,0x02,0x06,0x02,0x09,0x09,0x0d,
- 0xe6,0xe6,0x01,0x3a,0x6f,0xe5,0x04,0xe5,0x07,0x1c,0x02,0x02,0xe5,0xac,0x31,0x02,
- 0x01,0x1f,0x01,0x11,0x01,0x07,0x01,0x11,0x01,0x07,0x01,0x4f,0x0e,0x1d,0x01,0x01,
- 0x01,0x21,0x01,0xe5,0x0f,0x01,0xe5,0x07,0xe5,0x0f,0x01,0xe5,0x05,0x01,0xe5,0x50,
- 0xe5,0xe5,0x06,0x1d,0x02,0xe5,0x01,0x21,0x01,0x11,0x01,0x06,0xe5,0xe5,0x10,0x01,
- 0x07,0x01,0x4c,0x02,0x0f,0x21,0xe5,0x14,0xe5,0x05,0xe8,0xe5,0x02,0xe7,0x05,0x01,
- 0xe6,0xe5,0x03,0xe7,0xe5,0x02,0x01,0xe5,0x07,0xe6,0xe5,0x02,0x01,0xe6,0xe5,0x02,
- 0xe7,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x06,0xe5,0x01,0x16,0x09,0x06,0xe5,0xe5,0x08,
- 0x07,0x01,0xe5,0xe6,0x04,0x10,0x06,0xe5,0x03,0x48,0x09,0x02,0x1f,0x03,0xe6,0x14,
- 0xe5,0x05,0xe7,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x01,0x03,0x01,0xe5,0x07,0x09,0x08,
- 0xe6,0x76,0x02,0xe5,0x14,0x09,0x09,0x07,0x01,0x09,0x01,0x01,0xe5,0x03,0x09,0x09,
- 0x07,0x01,0x0c,0x3c,0x09,0x02,0x25,0x1a,0x02,0xe5,0x08,0x08,0xe5,0x07,0xe5,0x01,
- 0x01,0xe5,0x01,0xe5,0x07,0x09,0x06,0x02,0xe5,0x4e,0x09,0x23,0xde,0x02,0xe5,0xe5,
- 0x0e,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0xe5,0xe5,0x03,0x01,0x02,
- 0x04,0x01,0xe5,0xe5,0x03,0x01,0x07,0x01,0x07,0x01,0x04,0x04,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x08,
- 0x01,0xe6,0xe5,0x15,0x1c,0x0d,0xe5,0x21,0x55,0xe6,0x1b,0x04,0x01,0xe6,0x0a,0x08,
- 0x29,0x01,0x0e,0x0f,0xe5,0x01,0x54,0x23,0xe5,0xe5,0xe5,0x39,0x36,0x48,0x23,0x03,
- 0x05,0x1b,0x01,0x0a,0x08,0x0a,0x03,0x05,0x06,0x02,0x06,0x01,0x59,0x01,0x22,0xe8,
- 0x04,0x02,0x18,0x01,0x03,0x09,0x03,0x07,0x06,0x02,0x0e,0x02,0xe5,0x01,0x01,0x11,
- 0x43,0x03,0x02,0x21,0xe8,0x12,0x09,0x1d,0x09,0x2b,0x0e,0x27,0x01,0x1b,0x18,0x02,
- 0x02,0x02,0x0a,0x09,0x27,0xe5,0x04,0x27,0xe5,0x20,0x27,0x13,0x0f,0xe6,0x02,0x02,
- 0x35,0x06,0x05,0x04,0x02,0x06,0x18,0x6c,0x01,0x01,0x3f,0xe6,0xe6,0x09,0x01,0x1f,
- 0x6c,0xe6,0xe5,0x02,0x3e,0x01,0x12,0x19,0x41,0xe5,0x28,0xe5,0x01,0x28,0x18,0x22,
- 0x09,0x6c,0x02,0x03,0xe5,0x3f,0x07,0x01,0x01,0x8f,0xe7,0xe5,0x31,0x0c,0x01,0x38,
- 0x63,0x02,0xe5,0xe5,0x35,0x06,0x02,0xe5,0x14,0xe5,0x04,0xe5,0x76,0x02,0x05,0x01,
- 0x02,0x3c,0xe5,0x06,0xe5,0x0c,0xe5,0x7f,0x02,0x01,0xe6,0x03,0x26,0x01,0x0d,0xe5,
- 0x08,0xe5,0xe5,0xe5,0x01,0x12,0x7c,0x01,0xe6,0x01,0x25,0x02,0x01,0x18,0xe5,0xe5,
- 0xe5,0x8b,0x02,0x01,0x02,0xe7,0x08,0x01,0x1c,0x15,0x09,0x93,0x02,0xe6,0xe5,0x06,
- 0x02,0x22,0x11,0x01,0x01,0x02,0xe5,0x02,0x8d,0x01,0x01,0xe5,0xe5,0x2a,0x01,0x0d,
- 0xe5,0x07,0xe5,0x01,0x01,0x91,0xe7,0xe5,0xe6,0x27,0x01,0x0e,0x01,0x07,0x02,0x01,
- 0x91,0x01,0xe8,0x07,0x02,0x38,0x01,0xe5,0x19,0x7b,0xe7,0x63,0x01,0x77,0xe9,0x0d,
- 0x09,0x09,0x09,0x09,0x09,0x02,0x06,0x09,0x09,0x05,0x03,0x0b,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x06,0x06,0xe6,0xe6,0x3d,0x94,0x02,0x04,0x04,0x01,0x3d,
- 0x96,0x09,0xe5,0xe6,0x3e,0x01,0x06,0xe5,0x11,0xe5,0xe5,0x7f,0xe6,0x3e,0x01,0xe5,
- 0x05,0x02,0x10,0x01,0xe5,0x7d,0xe8,0x3f,0x07,0x94,0xe6,0xe5,0x13,0xe6,0x07,0xe5,
- 0x07,0xe5,0x06,0xe6,0x05,0xe7,0x07,0xe6,0x06,0xe5,0x07,0xe5,0x05,0xe7,0x07,0xe5,
- 0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x09,0xe5,0x31,0x0c,0x01,0xe6,0x18,0x01,0x7f,0xe7,0x15,0x1d,
- 0x09,0xe5,0xe5,0x1a,0x01,0x06,0x77,0x03,0xe5,0x12,0x0a,0x13,0x07,0xe6,0xe5,0xe5,
- 0x20,0xe6,0x77,0x03,0x03,0x10,0x01,0x06,0x01,0x11,0x01,0xe5,0x05,0x01,0xe6,0xe6,
- 0x1f,0x01,0xe5,0x71,0x05,0xe7,0x48,0xe5,0xe5,0x8b,0x04,0xe5,0xe6,0x10,0x01,0xe6,
- 0x04,0x01,0x07,0x01,0xe5,0xe5,0x03,0x01,0x07,0x01,0x07,0x01,0x03,0x03,0x01,0x07,
- 0x01,0x07,0x01,0x02,0x04,0x01,0x09,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x06,0x04,0xe5,0xe5,0x4e,0x8f,
- 0xe8,0x14,0x2c,0x18,0x80,0xe5,0x01,0xe5,0x44,0x06,0x24,0x6c,0xe5,0xe7,0x3d,0xe5,
- 0x06,0xe7,0x0a,0x19,0x6b,0x01,0xe7,0x26,0x1b,0x06,0x22,0x03,0x61,0x02,0x08,0x01,
- 0xe6,0xe5,0x0f,0x23,0xe5,0x03,0x0c,0xe5,0x02,0x04,0xe5,0x1a,0x39,0x10,0x20,0xe6,
- 0xe6,0x0f,0x25,0x12,0x09,0x01,0x02,0x18,0x63,0x0b,0xe5,0x05,0x0a,0x13,0x25,0x02,
- 0x22,0x6c,0xe5,0x01,0x05,0x37,0x14,0x1e,0x6d,0x02,0x44,0x2c,0x6c,0x03,0x09,0x68,
- 0x62,0x09,0xe7,0x01,0x1b,0x23,0x05,0xe5,0xe5,0x02,0x22,0x6b,0xe8,0xe5,0x09,0x57,
- 0x79,0xe8,0xe5,0x07,0x01,0x03,0xe5,0x01,0xe5,0x03,0xe5,0x07,0xe5,0xb5,0x04,0xe5,
- 0xe5,0x01,0x04,0xe5,0x12,0xe5,0x2d,0x8a,0x01,0x03,0xe7,0x03,0x0c,0x09,0x09,0x15,
- 0xe5,0x01,0x01,0x04,0xe5,0x90,0x04,0x03,0x02,0x39,0x02,0x01,0x04,0xe5,0xe5,0x05,
- 0xe5,0x88,0x01,0x02,0x01,0xe5,0x07,0x02,0x28,0x01,0x05,0x11,0x02,0x06,0x02,0x80,
- 0xe5,0xe5,0xe5,0x01,0x06,0x02,0x28,0x01,0x01,0x09,0x09,0x02,0x01,0x04,0x02,0x01,
- 0x7e,0x02,0xe9,0x33,0x01,0x07,0x01,0x09,0x91,0x03,0xe5,0x34,0x01,0x07,0x01,0x07,
- 0x09,0x87,0x01,0xea,0x03,0xe5,0x01,0x02,0xcf,0x01,0x01,0xe6,0x04,0x04,0x45,0x8c,
- 0xe6,0xe7,0x07,0x05,0x09,0x09,0x09,0x09,0x02,0x06,0x09,0x03,0xe5,0xe5,0x01,0x09,
- 0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0x04,0xdb,0x02,0xe5,
- 0xe6,0xdd,0xe8,0x4a,0x09,0x88,0xe5,0x01,0x48,0x03,0x09,0x87,0x01,0x01,0xe5,0x50,
- 0x02,0x88,0xe5,0x01,0x13,0x01,0xe5,0x06,0xe6,0x06,0xe6,0x07,0xe5,0x07,0xe5,0x05,
- 0xe7,0x05,0x01,0xe5,0x05,0x01,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x0a,
- 0x46,0x0e,0x88,0x01,0x01,0x20,0x09,0x1d,0x95,0xe8,0x12,0x01,0x08,0x09,0xe5,0x1a,
- 0x01,0x07,0x01,0x03,0x03,0x01,0x82,0x01,0xe6,0x12,0x01,0x0a,0x06,0x01,0xe5,0x19,
- 0x01,0xe5,0x05,0x01,0x07,0x01,0x84,0xe6,0x4a,0xe5,0x07,0xe5,0x87,0xe5,0xe5,0x10,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x09,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0a,0xe6,0xe5,0x51,0x13,0x78,0x02,0xe5,0x0a,
- 0x09,0x36,0x16,0x15,0x62,0x01,0xe7,0x1d,0x52,0x6b,0xe5,0x01,0xe6,0x42,0x04,0x01,
- 0x25,0x6e,0x01,0x43,0x05,0x02,0x24,0x6b,0x01,0x02,0xe5,0x11,0x31,0x2b,0x36,0x15,
- 0x12,0x0b,0xe6,0xe6,0x4c,0x0e,0x14,0xe5,0x68,0xe6,0xe5,0xe5,0x70,0x61,0x0a,0x03,
- 0x4c,0x0e,0x15,0x6d,0x02,0x01,0x6f,0x70,0x0a,0xd6,0xe5,0xde,0x02,0x46,0x09,0x07,
- 0x82,0x03,0xe9,0xd9,0xe5,0x01,0xe6,0x01,0x01,0xd4,0x01,0x02,0x03,0x04,0xd4,0x07,
- 0xe5,0x01,0xd8,0x02,0x01,0x01,0xe1,0xe5,0x01,0xd8,0x02,0x03,0xe5,0xdb,0xe5,0x02,
- 0x02,0xdb,0xe5,0xe6,0xe5,0x4c,0x02,0x8d,0x01,0x50,0xe5,0x8c,0x01,0xe6,0x0d,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x0d,0xe6,0xe6,0x01,0xd8,0x03,0xe7,0xdd,0xe6,0xe5,0xe5,0x46,0x01,0x90,
- 0x01,0x02,0xe5,0x48,0x01,0xe5,0x92,0x01,0xe3,0xe5,0x14,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x08,0x01,0x49,0x01,0x92,0xe8,0x48,0x01,0x94,0x01,0xde,0xe5,0xe6,0xda,
- 0x03,0xe7,0xdd,0xe5,0xe6,0xe5,0x0e,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x08,
- 0x01,0xe6,0xe5,0x5b,0x81,0x02,0xe6,0x50,0x31,0x50,0x07,0xe5,0x01,0xe5,0xe5,0x6e,
- 0x6e,0xe6,0x70,0x6c,0x01,0xe6,0x70,0x6c,0xe6,0xe5,0x12,0x5d,0x36,0x15,0x21,0xe6,
- 0x70,0x6c,0x02,0xe5,0x70,0x6c,0x01,0xe6,0x4c,0x23,0x6e,0xe6,0x02,0x6d,0x6c,0x03,
- 0x4d,0x91,0x02,0xe5,0xdb,0xe9,0x01,0xdb,0xe5,0x01,0xe6,0xd9,0xe6,0x01,0xe5,0x01,
- 0x01,0xd4,0x01,0x05,0xe5,0x03,0xd4,0x04,0xe8,0x01,0xd8,0x02,0xe6,0xe5,0xdf,0xe6,
- 0x01,0xd8,0x05,0xe6,0xdb,0x03,0xe5,0xdd,0xe5,0x01,0xde,0x01,0xe6,0xdd,0xe6,0xe6,
- 0x0d,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x0d,0xe6,0x01,0x02,0xd8,0x03,0x01,0xe5,0xde,0xe5,0xe5,0xe5,
- 0xd9,0x01,0xe6,0xe5,0xdd,0x01,0xe6,0xde,0xe5,0xe5,0x14,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x08,0x01,0xdf,0x02,0xe1,0xe5,0xdd,0xe8,0xdd,0x01,0xe6,0x02,0xdb,0xe7,
- 0xe5,0x09,0x04,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x09,0x01,0x01,0x05,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x08,0x01,0xe6,0xe5,0x51,
- 0x13,0x79,0x01,0xe5,0x14,0x4d,0x17,0x11,0x4e,0xe6,0x01,0x71,0x6c,0x01,0xe6,0x70,
- 0x6c,0x01,0xe6,0x70,0x6c,0xe6,0xe5,0x12,0x31,0x2b,0x4a,0x15,0x0f,0x31,0x3f,0x6d,
- 0xe7,0x70,0x68,0x03,0xe5,0xe6,0xe5,0x6e,0x6c,0xe8,0x70,0x6e,0x01,0x02,0xdf,0xe5,
- 0x08,0xd2,0x01,0x01,0xe5,0xdf,0x01,0xe6,0xd9,0x01,0xe6,0xe5,0x01,0x01,0xd4,0x01,
- 0x03,0x02,0x04,0xce,0xe5,0x03,0x05,0xe7,0xd3,0x06,0x02,0x03,0xd5,0x07,0xe5,0xe7,
- 0xda,0x03,0x01,0xe5,0xdc,0xe9,0xdd,0x02,0xe5,0x08,0xd3,0x04,0x0a,0x01,0xd1,0xe5,
- 0xe7,0x07,0x05,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0xe6,0xe6,0x01,0xd3,0x04,0x02,0x03,0xd5,0x08,
- 0x01,0x01,0xe0,0x01,0xde,0xe5,0xe6,0xdf,0x01,0xe5,0x13,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x09,0xe5,0xdd,0x03,0xe0,0x01,0xe5,0xdc,0xe8,0xdf,0x01,0xdf,0xe5,0xe5,
- 0x10,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x09,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,
- 0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x0c,0xe6,0xdd,0xe9,0x50,
- 0x33,0x56,0x01,0x02,0x01,0x03,0x2c,0x3e,0x6c,0xe5,0xe7,0x6f,0x6b,0x01,0xe5,0xe5,
- 0x12,0x5d,0x6e,0xe7,0x08,0x1f,0x09,0x3c,0x4a,0x15,0x0a,0xe9,0x70,0x6c,0x02,0xe5,
- 0x05,0x6a,0x6c,0xe6,0xe5,0x70,0x6e,0xe6,0x70,0x6d,0xe7,0x09,0x09,0x09,0xbf,0x01,
- 0x01,0xde,0xe5,0xe6,0x26,0xba,0xdc,0x01,0x01,0xe6,0x01,0x01,0xd4,0x01,0x03,0xe7,
- 0x03,0xcf,0xe5,0x02,0x04,0x02,0xe5,0xe6,0xd7,0x03,0x01,0xe6,0xe5,0x06,0x01,0xd0,
- 0x02,0xe6,0xda,0x02,0xe5,0x01,0xdd,0xe6,0xe6,0xda,0xe5,0x02,0xe7,0x07,0xd3,0x01,
- 0xe7,0x09,0x01,0xd5,0xe5,0x07,0x05,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x01,0x06,0xe9,0xd5,0x04,
- 0x05,0xe5,0xd2,0x0a,0x02,0xe5,0xdf,0x01,0xdf,0xe8,0xdd,0x01,0xe5,0x14,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0x01,0xe5,0xd8,0x05,0xe7,0xde,0xe5,0xe6,0xdc,0x02,
- 0xe5,0x02,0x08,0xd3,0x01,0x32,0xab,0xe6,0xe5,0x10,0x01,0x02,0x04,0x01,0x07,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x09,0x01,
- 0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x07,0x01,0x0a,0x02,0xe5,0xde,0x02,0xe5,0x64,0x15,0x13,0x4c,0x02,0xe6,0x70,0x6d,
- 0xe5,0xe6,0x6f,0x6b,0x02,0x01,0x13,0x5d,0x64,0x07,0xe5,0xe7,0x43,0x2b,0x61,0x09,
- 0xe5,0x02,0x25,0x4b,0x6e,0x01,0x06,0x20,0x49,0x6d,0xe5,0xe5,0x70,0x6c,0x03,0x03,
- 0x6d,0x6e,0xe6,0xe1,0xdc,0x01,0xe5,0x01,0xe3,0xe7,0xd9,0x03,0xe6,0x01,0x01,0xd4,
- 0x01,0x02,0x01,0x01,0x04,0xd4,0x06,0x01,0xd4,0xe5,0x04,0x02,0x01,0xe6,0xdc,0x01,
- 0x02,0x02,0xd8,0x03,0x02,0x01,0xdb,0x01,0xe5,0xe5,0xdd,0xe5,0x01,0xdd,0x01,0xe7,
- 0xdf,0xe7,0x0d,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x09,0x09,0x0d,0x02,0x01,0x02,0xd8,0x04,0xe6,0xdd,0x02,0xe5,
- 0xdd,0x01,0xe6,0xdd,0xe5,0x01,0xe5,0xde,0x01,0x15,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x09,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x06,0x01,0x01,0xde,0x01,0x01,0xe3,0xe6,0xdc,0xe5,0x01,0xdf,0xe7,0x3b,0x10,
- 0x92,0xe6,0x10,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x07,0x01,0x01,0x05,0x01,0x07,
- 0x01,0xe5,0x05,0x01,0x07,0x01,0x07,0x01,0x09,0x01,0x07,0x01,0x07,0x01,0x07,0x01,
- 0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x01,0x05,0x01,0x07,0x01,0x0d,
- 0xe5,0x50,0x34,0x58,0x02,0xe5,0x50,0x8a,0xe9,0xe5,0x02,0x5f,0x0a,0xe5,0x09,0x12,
- 0x51,0xe5,0x03,0x49,0x22,0x14,0x13,0x42,0xe5,0x01,0xe6,0x01,0x6d,0x6f,0xe6,0x2b,
- 0x24,0x1e,0x52,0xe5,0x0b,0x0a,0xe5,0x01,0xe6,0x23,0x05,0x01,0x3f,0x03,0x6c,0xe5,
- 0xe6,0x26,0x06,0x42,0x6c,0x01,0xe7,0x6f,0x6d,0xe7,0x70,0x6d,0x01,0xe5,0x30,0x3d,
- 0x5f,0x0e,0x01,0x01,0x2d,0x97,0x08,0xe5,0x0d,0xe5,0x01,0x09,0x23,0x44,0x52,0x08,
- 0x11,0xe6,0x02,0x0b,0xe5,0x01,0x06,0x06,0xe7,0x07,0xe5,0x05,0xe7,0x05,0xe7,0x05,
- 0xe7,0xe5,0x05,0xe5,0x08,0x08,0xe5,0x09,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,
- 0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x0b,0x02,0xe6,0x0d,0x01,
- 0x02,0x04,0x01,0x02,0x04,0x01,0x02,0x04,0x01,0x07,0x01,0x07,0x01,0x02,0x02,0x01,
- 0x01,0x08,0xe5,0x0d,0x02,0x01,0x0b,0x09,0x09,0x09,0x07,0x01,0x01,0xe5,0x05,0x09,
- 0x09,0x02,0x06,0x09,0x0d,0x02,0xe5,0x0f,0x08,0x13,0x09,0x1d,0x09,0x04,0x04,0x08,
- 0x02,0x04,0x04,0x09,0x04,0x04,0x09,0x09,0x09,0x09,0x09,0x09,0x0f,0x02,0x14,0x41,
- 0x87,0x01,0xe6,0x18,0x03,0x05,0x09,0x09,0x09,0x09,0x09,0x13,0x0b,0x09,0x04,0x04,
- 0x09,0x04,0x04,0x02,0x06,0x09,0x09,0x09,0x09,0x0e,0x01,0x01,0x0d,0xe5,0x07,0xe6,
- 0x06,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe6,0x06,0xe6,0x06,0xe5,0x07,0xe5,0x07,0xe5,
- 0x01,0x03,0x03,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,0x07,0xe5,
- 0x07,0xe5,0x07,0xe5,0x07,0xe5,0x0e,0xe8,0x02,0x05,0x03,0x09,0x01,0x04,0x02,0x01,
- 0x07,0x09,0x09,0x01,0x07,0x01,0x07,0x09,0x07,0x01,0x0b,0x09,0x09,0x09,0x09,0x09,
- 0x09,0x09,0x09,0x09,0x14,0x0e,0x09,0x09,0x09,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0x09,
- 0x09,0xe5,0xe5,0x05,0x09,0xe5,0xe5,0x07,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,
- 0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,0xe5,0xe5,0x05,
- 0xe5,0xe5,0x05,0xe5,0xe5,0x0f,0x0e,0x09,0x01,0x07,0x09,0x09,0x09,0x09,0x09,0x09,
- 0x01,0x07,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0f,0x01,0xe6,0x47,
- 0x11,0x76,0x0c,0x01,0x01,0x0e,0x05,0x03,0x05,0x03,0x09,0x05,0x03,0x09,0x09,0x09,
- 0x09,0x09,0x06,0x01,0x02,0x05,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0f,
- 0xe8,0x0f,0x13,0x1d,0x09,0x24,0x70,0x10,0x09,0x09,0x09,0x09,0x09,0x09,0x05,0x03,
- 0x09,0x09,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x0e,0x01,0xe5,0x46,
- 0x96,0x02,0xe5,0x70,0x6e,0x01,0x22,0x1d,0x09,0x13,0x11,0xe5,0x67,0x06,0xe5,0x06,
- 0x06,0x06,0x02,0x06,0x02,0x06,0x16,0x06,0x02,0x13,0x06,0x79,0xe5,0xe5,0x3a,0x1d,
- 0x33,0x1d,0x09,0x2a,0xe6,0x06,0x05,0x08,0xe5,0x07,0xe5,0x07,0x14,0x08,0xe5,0x12,
- 0x08,0x0a,0x65,0x06,0x03,0x71,0x66,0x05,0xe5,0xe6,0xdd,0xe5,0xe6,0x0c,0xe5,0x04,
- 0xe8,0x04,0xe8,0x04,0xe6,0x06,0x09,0x02,0xe5,0x04,0xe8,0x04,0x09,0x02,0xe5,0x04,
- 0xe6,0x06,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x01,0xe6,0x0c,
- 0xe6,0x05,0xe7,0x05,0xe7,0x05,0x01,0xe5,0x08,0x07,0xe6,0x05,0xe7,0x08,0x07,0xe6,
- 0x05,0x02,0x07,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x08,0xe5,0x07,0xe5,0x0e,
- 0xe5,0xe5,0x33,0x2d,0x0e,0x10,0x13,0x48,0x02,0x11,0x03,0x05,0x03,0x05,0x03,0x05,
- 0x03,0x01,0x0d,0x03,0x05,0x03,0x01,0x0d,0x03,0x01,0x03,0x07,0x09,0x09,0x09,0x09,
- 0x03,0x05,0x09,0x09,0x11,0x13,0x01,0xe5,0x0a,0x06,0x09,0x09,0x04,0x01,0x02,0x01,
- 0x03,0x07,0x05,0x09,0x01,0x03,0x07,0x0e,0xe5,0x02,0x06,0xe5,0x02,0x04,0x04,0x01,
- 0x07,0x04,0x04,0x05,0x03,0x01,0x07,0x01,0x07,0x01,0x03,0x03,0x02,0x04,0x04,0x06,
- 0x01,0x03,0xe5,0xe5,0xe6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,
diff --git a/board/esd/du405/u-boot.lds b/board/esd/du405/u-boot.lds
deleted file mode 100644
index 1cf375fef5..0000000000
--- a/board/esd/du405/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/hh405/Makefile b/board/esd/hh405/Makefile
deleted file mode 100644
index ce7876c414..0000000000
--- a/board/esd/hh405/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o ../common/auto_update.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/hh405/config.mk b/board/esd/hh405/config.mk
deleted file mode 100644
index 7129ad568b..0000000000
--- a/board/esd/hh405/config.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# (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
-#
-
-#
-# esd VOH405 boards
-#
-
-#TEXT_BASE = 0xFFF00000
-TEXT_BASE = 0xFFF80000
-#TEXT_BASE = 0xFFFC0000
-#TEXT_BASE = 0x00FC0000
diff --git a/board/esd/hh405/flash.c b/board/esd/hh405/flash.c
deleted file mode 100644
index 89af1190a8..0000000000
--- a/board/esd/hh405/flash.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- switch (size_b0) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/hh405/fpgadata.c b/board/esd/hh405/fpgadata.c
deleted file mode 100644
index 64bca46085..0000000000
--- a/board/esd/hh405/fpgadata.c
+++ /dev/null
@@ -1,2517 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x7a,0x8e,0xc6,0x43,0x00,0x03,0x68,0x68,0x34,0x30,0x35,0x5f,
- 0x31,0x5f,0x30,0x36,0x2e,0x62,0x69,0x74,0x00,0xec,0xfd,0x7f,0x7c,0x14,0x55,0x9a,
- 0x2f,0x8e,0x3f,0x75,0xaa,0x12,0x4e,0xba,0x3a,0xe9,0x22,0x09,0x4e,0x54,0xc4,0x4a,
- 0x27,0x30,0x4d,0xec,0x84,0xa6,0x83,0x21,0x42,0x48,0x2a,0x9d,0xe8,0x44,0x40,0xe9,
- 0x71,0xdc,0x59,0x76,0xae,0x77,0xb6,0x65,0x98,0xbd,0x99,0xb9,0xe8,0x46,0xc7,0xbb,
- 0x97,0xf1,0xce,0x8f,0x93,0x4e,0x80,0x4e,0x82,0xd0,0x20,0x33,0x46,0x87,0x71,0x9b,
- 0x10,0x35,0x2a,0x33,0xdb,0x04,0x94,0xf0,0x63,0xb0,0x12,0xa3,0x36,0x10,0x20,0x32,
- 0xdc,0x19,0x54,0x46,0x1b,0x8c,0x4c,0xd4,0xe8,0x04,0x44,0x4d,0xf8,0xf9,0x7d,0x4e,
- 0x75,0xa7,0xbb,0x1a,0x77,0xf7,0xce,0xfd,0xdc,0xd7,0xf7,0xf3,0xda,0xd7,0xeb,0x73,
- 0xb3,0x7f,0xec,0x99,0xea,0x43,0x59,0x75,0xea,0x9c,0xe7,0x79,0x3f,0xbf,0xde,0x0f,
- 0x64,0xd8,0x46,0x63,0xff,0x07,0x20,0xdc,0x0f,0xb6,0xfa,0xfa,0x39,0xae,0x5b,0xff,
- 0x7e,0xf6,0xdf,0xbb,0xca,0x4a,0x1e,0xfc,0xde,0x72,0x58,0x06,0xb2,0xfb,0x47,0xb7,
- 0xba,0xbe,0xff,0xc8,0x43,0xb3,0xe7,0xcc,0x81,0xef,0xe1,0xff,0x72,0xb9,0xca,0x66,
- 0xb9,0x66,0xcf,0x9a,0xed,0x86,0xe5,0x90,0x31,0xbb,0x7c,0xde,0xec,0x39,0xf3,0x4a,
- 0x6f,0x85,0xef,0x83,0x50,0xda,0x79,0x15,0xff,0x5e,0x78,0xf2,0x6f,0xfe,0xc1,0x05,
- 0x4c,0x00,0x80,0x49,0x2e,0xc1,0xc7,0xff,0xbf,0xec,0x12,0x54,0x01,0x58,0x55,0xb1,
- 0x0b,0x74,0xfe,0xbf,0x21,0xfe,0x7b,0x86,0x0b,0x54,0xf3,0xff,0x16,0x5c,0xa0,0x81,
- 0x17,0xb4,0xb5,0x6a,0x36,0xfc,0x15,0x7f,0x92,0xc4,0x26,0x86,0x7f,0xd5,0x7c,0x48,
- 0xcc,0xbf,0x7a,0x90,0xfd,0x9b,0x93,0x92,0x7f,0x55,0xe7,0x42,0xf1,0x91,0x4a,0x5c,
- 0xff,0xeb,0xe9,0x42,0x2d,0x4c,0xdc,0xf5,0xbd,0xb7,0xff,0x9a,0xfb,0xcf,0xff,0x62,
- 0xe2,0xfe,0xff,0xbb,0xf3,0x41,0xf9,0x2b,0xa6,0xe3,0xfb,0x4e,0x0c,0xde,0x53,0x04,
- 0x1f,0xe4,0xc1,0x75,0x90,0xc6,0x80,0x0f,0xd2,0x41,0xf8,0x57,0x06,0xf3,0xfb,0x27,
- 0xe6,0xeb,0x8d,0xfb,0xe0,0x08,0x2b,0x55,0xad,0x11,0xd1,0x0d,0xef,0xe5,0x57,0x45,
- 0x96,0x9c,0xcb,0xd9,0xd7,0x7c,0xf5,0x7b,0x73,0x23,0xb6,0x73,0x62,0x39,0x3b,0x09,
- 0x3f,0x1a,0xb5,0x8e,0xe5,0x8c,0x4a,0x0d,0x13,0xf3,0xe9,0x08,0x6d,0x65,0xee,0x7c,
- 0x1a,0x90,0xed,0x70,0x48,0x29,0x19,0x92,0x1b,0x49,0xd1,0xd2,0x3d,0xd9,0x25,0x47,
- 0x6c,0xfb,0x48,0x97,0x16,0x90,0xca,0x22,0x96,0x1e,0x31,0x2c,0x4d,0xac,0x62,0x44,
- 0x5a,0xbb,0xa5,0x55,0x98,0xa1,0x65,0x30,0xbb,0x0f,0x1e,0x17,0x9c,0xda,0x8d,0x2e,
- 0xb2,0x56,0xda,0xa1,0x3a,0x41,0xce,0x25,0x54,0xd9,0x20,0x86,0x74,0xea,0x22,0xe7,
- 0x84,0xc4,0xfd,0xa5,0x6d,0xe9,0xad,0xcc,0xae,0x65,0x04,0x48,0x3e,0x6b,0xcb,0x2b,
- 0xd1,0x64,0xd6,0xba,0x0d,0xf6,0x92,0x12,0x62,0x09,0xf6,0x75,0x41,0x06,0xfb,0x07,
- 0xdd,0x12,0xf6,0x8c,0x4a,0xbe,0xf8,0xfc,0xea,0x29,0x2b,0x20,0xd2,0x38,0x67,0x4e,
- 0x71,0xab,0x28,0xc2,0xdb,0x5a,0xa5,0xbe,0x64,0x8e,0xfc,0x5b,0xed,0x62,0xb0,0x64,
- 0xb0,0x26,0x5c,0x9a,0x05,0xdf,0x09,0xd9,0x7b,0xad,0xe1,0x82,0x41,0x98,0xb8,0x7f,
- 0x48,0xd8,0x0c,0x97,0x68,0x15,0xcb,0xd2,0x73,0xba,0xe1,0x8a,0x50,0xa5,0x2f,0x89,
- 0x36,0xd5,0xc3,0x05,0xa8,0xd4,0xd7,0x87,0x0b,0x46,0xd8,0x85,0x8c,0xaa,0xb3,0xb6,
- 0x51,0xb1,0x0b,0x26,0xee,0xdf,0xaf,0x6c,0x83,0x71,0xbf,0xdb,0x63,0x63,0xe2,0x29,
- 0x38,0xa8,0xb9,0xf5,0x69,0x3b,0x73,0xb6,0xd1,0x43,0xe0,0xde,0x60,0xdd,0x29,0x3a,
- 0xe1,0x10,0x2b,0xd3,0x97,0x84,0x6b,0x46,0x41,0x8d,0xcf,0x3f,0x91,0x56,0x21,0x6c,
- 0xd7,0xec,0x63,0x8b,0x24,0x32,0xcc,0x5a,0xc1,0x1d,0x99,0xda,0x49,0x9c,0xd0,0x26,
- 0xd9,0x19,0x2d,0xc7,0xc1,0x3b,0x7e,0xbb,0x2e,0x87,0xc9,0x17,0xb8,0xfb,0x27,0xde,
- 0x77,0xb1,0xb5,0x5b,0xdb,0x16,0x92,0x67,0xa4,0xbf,0xaa,0x36,0x0a,0x85,0xa1,0x0c,
- 0x17,0x59,0x0d,0x1b,0x24,0x9f,0x6e,0x71,0x10,0x02,0xcf,0xd7,0xe2,0x7c,0x17,0x19,
- 0xc3,0xb3,0x12,0xfb,0x1b,0x85,0xef,0xb2,0x97,0x59,0xf1,0x29,0xd9,0x97,0x7e,0x4c,
- 0x12,0x98,0x1a,0xa5,0x27,0x48,0xb6,0xba,0x69,0x63,0x7e,0xd4,0x52,0x8f,0x83,0x5d,
- 0x41,0x21,0x2a,0xaf,0xd4,0xae,0x24,0xee,0x5f,0x07,0x8b,0xb5,0x6e,0xa8,0x60,0xb6,
- 0x7c,0x51,0xef,0xeb,0x85,0x39,0x8a,0x1c,0x16,0x9b,0xc9,0x9b,0x10,0xd6,0x4a,0x94,
- 0x36,0x20,0xef,0x87,0x82,0xba,0xcd,0x25,0x1e,0x23,0x13,0xfb,0x41,0xbb,0x69,0xdf,
- 0xd0,0x17,0x50,0xaa,0xdb,0xb6,0x88,0x83,0xda,0x65,0xe5,0x95,0xda,0x59,0x1b,0xc4,
- 0xf3,0xf0,0x3c,0x54,0xd5,0x66,0x0e,0x0a,0xe7,0x16,0x1f,0x82,0xf9,0xfd,0xeb,0xc3,
- 0xe2,0x60,0xfa,0xc4,0xfa,0x50,0x69,0x1b,0xf4,0x41,0xf7,0x54,0x1b,0x2b,0x50,0xe1,
- 0x22,0x71,0x33,0x67,0x38,0xc7,0x09,0x17,0xc1,0xad,0x5b,0x43,0xe2,0xc8,0xe4,0xcf,
- 0x04,0x1c,0x84,0xc5,0x8f,0x94,0x89,0xf5,0x8f,0xe4,0x6d,0x66,0xab,0xe1,0xd6,0x81,
- 0x2c,0x8d,0x04,0x95,0x1d,0xe9,0x2a,0xff,0xfa,0x79,0xb0,0x1f,0x1c,0x3a,0xf5,0x91,
- 0x93,0xf0,0x12,0xb9,0x55,0xa7,0x0d,0xe4,0x5c,0xe2,0xfb,0xaa,0x30,0x0d,0x1e,0x63,
- 0xf9,0x2e,0x39,0x42,0x1e,0xa7,0xcf,0xb1,0xfc,0x10,0x5d,0x49,0x9e,0x86,0x57,0x58,
- 0x7e,0x14,0x07,0xef,0xc2,0xef,0x9a,0xbf,0x7e,0x9a,0xae,0xcc,0x8e,0x26,0xd6,0xbf,
- 0x5e,0x5a,0x0b,0x4d,0x9a,0x53,0xb7,0xe4,0x2d,0x4b,0x63,0x3b,0x74,0x5c,0x9f,0x72,
- 0x92,0xa5,0xed,0x08,0x3a,0x86,0xe8,0x6d,0xf0,0xa9,0xb6,0x7d,0xe3,0x0c,0x1f,0xfe,
- 0x17,0x8f,0x25,0xf6,0xe7,0xf0,0x94,0x7a,0xfa,0x3a,0xb8,0x99,0x6d,0x79,0xd3,0x1e,
- 0xeb,0x47,0x1d,0xdd,0x5d,0xd6,0x17,0xe4,0x2e,0xdc,0x0f,0x6e,0xd6,0x15,0x12,0x87,
- 0xe1,0x0a,0xcc,0x60,0xce,0x50,0xc1,0x85,0xc4,0xf3,0xd4,0x55,0x87,0xc8,0x98,0x5a,
- 0xa6,0xd8,0x98,0xff,0x14,0x8c,0x41,0x25,0xe0,0xc6,0x88,0xc2,0xa8,0x50,0x81,0x83,
- 0x9c,0x51,0x35,0x76,0xa5,0xe6,0x18,0x4c,0xdc,0x9f,0x2a,0xcf,0x06,0x0e,0x40,0x91,
- 0x36,0x29,0x98,0xf3,0x0c,0x6c,0xa7,0x2e,0xcd,0xaa,0x88,0x85,0x30,0x0e,0x6e,0xcd,
- 0x1a,0x14,0x87,0xf2,0x7a,0x83,0xc6,0xa0,0x2f,0xf1,0x3c,0x4c,0xfa,0x07,0x68,0xd1,
- 0x7e,0x78,0x42,0xde,0x44,0x9e,0x81,0xdd,0x60,0xd7,0xe8,0x26,0x9c,0xbf,0x1b,0x88,
- 0x46,0xdb,0xed,0x1f,0x40,0x8b,0x5e,0xa4,0xd1,0x20,0x89,0x26,0xc4,0x42,0x79,0x9a,
- 0x04,0x2d,0xaf,0xe3,0x26,0x09,0x6a,0xcb,0xa5,0x27,0xe1,0x96,0x5a,0x3a,0xe8,0x9f,
- 0xa3,0xfd,0x0e,0x44,0x6d,0xe6,0x31,0x72,0x3e,0xd4,0xa2,0xd9,0xb5,0xfa,0xa0,0xfd,
- 0xf5,0xc4,0x7e,0x50,0x73,0x25,0xad,0x05,0x1c,0xda,0x8d,0x0a,0xe9,0x87,0x5b,0xb5,
- 0x7c,0x8d,0xde,0x4b,0x72,0xe1,0x25,0x2d,0xdf,0x4b,0xbd,0xe4,0x7f,0x42,0xa3,0xe6,
- 0xf0,0x52,0x85,0xf4,0x4d,0x9e,0xd8,0x0f,0x2b,0xad,0x42,0x47,0x44,0xb0,0x83,0x2d,
- 0x54,0x33,0x0c,0x4b,0xa1,0x1b,0x9c,0x4c,0x56,0xf1,0xc5,0xbb,0x21,0x93,0x89,0xa3,
- 0x24,0x22,0xb9,0xf1,0x8a,0x78,0x44,0x9c,0xd8,0x9f,0xed,0x69,0x43,0xec,0xa7,0x50,
- 0xa9,0x2d,0x69,0xc8,0xd9,0x09,0xbb,0x3d,0x95,0x5e,0xdb,0x26,0xf9,0x19,0x18,0xd7,
- 0xf8,0x40,0xfc,0x00,0xae,0xd6,0xfe,0x4e,0xb3,0x05,0xc5,0x33,0xe9,0x13,0xfb,0x21,
- 0x6f,0xca,0xe7,0xec,0x28,0xae,0x86,0x6d,0x50,0xcc,0x85,0x71,0x5f,0xa9,0x66,0x1d,
- 0x6c,0xda,0xe9,0x38,0x30,0x7b,0xde,0x3d,0xeb,0x8f,0x89,0x73,0xd8,0x61,0xcd,0x5d,
- 0x6b,0xf5,0x8a,0xe9,0x89,0xf3,0x5b,0xae,0x9c,0x62,0x01,0xb0,0x83,0xcc,0xec,0x21,
- 0x29,0x90,0x66,0x57,0xa8,0xbf,0x49,0x85,0x80,0xd6,0xd1,0xee,0x58,0x65,0x51,0x03,
- 0x01,0x4f,0x99,0x40,0x99,0x65,0x5d,0x62,0x3d,0xeb,0x60,0x15,0xb4,0x08,0x21,0x4d,
- 0x0e,0xa6,0x17,0xc2,0x86,0xfb,0x43,0xde,0x3c,0x85,0x34,0x4b,0x8d,0x3e,0x47,0x1d,
- 0x55,0xb2,0xd3,0xd4,0x36,0x9f,0xaf,0xce,0xa1,0xcc,0xc8,0x4e,0xc8,0x9f,0x76,0xa9,
- 0x33,0xab,0x45,0xb1,0x57,0x2f,0x0a,0xe2,0xfa,0x37,0xe2,0xfa,0x3b,0x82,0x96,0x4e,
- 0xa1,0x85,0xd8,0x35,0x08,0x92,0x42,0xc8,0x50,0x0a,0xf9,0xfa,0xaf,0x4e,0xec,0x87,
- 0x50,0xda,0x10,0x3d,0x50,0xe7,0xbe,0x47,0xde,0x64,0xff,0xba,0x77,0x1c,0xba,0xf1,
- 0xfb,0xe6,0x74,0xfa,0x0f,0xe4,0xcf,0xf3,0x91,0x8d,0x62,0x21,0x39,0xa0,0xbb,0x35,
- 0xa7,0x52,0xe3,0x48,0xc8,0xcf,0x88,0xd0,0x09,0xe3,0xac,0x92,0x2f,0xc2,0x90,0x3a,
- 0x0e,0x95,0xcb,0xe5,0x60,0x8d,0x84,0xfb,0xa1,0xe2,0x07,0xd3,0xb2,0xc5,0x7e,0x8a,
- 0x3f,0xd5,0xe3,0x4f,0x17,0x12,0xf2,0x87,0x42,0x08,0x22,0x3e,0xb7,0x62,0x6b,0x2e,
- 0xb8,0x1f,0x4e,0x80,0x1b,0xd6,0xb2,0xa6,0x7c,0x88,0x68,0x6e,0xc8,0x6c,0x16,0x55,
- 0x75,0x8c,0xcc,0x03,0x2b,0x13,0x2d,0xd2,0xc4,0xfe,0x77,0x4c,0xe9,0x82,0xd5,0x5a,
- 0x47,0xb0,0x6d,0x88,0x5c,0xef,0x68,0x25,0x6a,0x23,0x1d,0xf1,0x38,0xa0,0x55,0x2a,
- 0x62,0x96,0xae,0xec,0x72,0x78,0x19,0x05,0x51,0x20,0x5a,0xb3,0x30,0xb1,0x1f,0x1c,
- 0xd2,0x83,0x10,0x64,0x8e,0x63,0xf2,0x3f,0x7b,0x96,0xc0,0xe3,0x50,0x18,0xbd,0x7e,
- 0x0e,0x59,0x47,0x7f,0x05,0x85,0xba,0xa5,0x9c,0x58,0xaa,0x51,0x50,0xeb,0x54,0x25,
- 0x0b,0x13,0xf2,0x87,0x29,0x7f,0xa2,0x4f,0x6b,0x33,0x75,0x79,0xd0,0x52,0x01,0x6b,
- 0xa0,0xd0,0x9b,0xf1,0x08,0xd9,0xac,0x3e,0xe1,0x2e,0xd6,0x2d,0x0d,0xfe,0x3c,0x78,
- 0x45,0x7c,0x20,0x42,0x7d,0x30,0x3c,0xb1,0x7d,0x20,0x10,0xf8,0x27,0x72,0x9c,0xdd,
- 0x76,0xda,0xb6,0xb4,0xe6,0xbb,0xf0,0xde,0xf0,0x2f,0xa2,0xc5,0xe5,0xf2,0x3a,0xf2,
- 0x7b,0xf6,0x5c,0x64,0x4d,0xb9,0x3c,0x0d,0xae,0xb2,0xaa,0x31,0x67,0x3d,0xfc,0x30,
- 0x21,0x7f,0x68,0xda,0x33,0xf8,0xee,0x65,0xed,0x36,0xc5,0xb6,0x4d,0xba,0xa8,0xcd,
- 0xd3,0xd7,0x85,0xc5,0x15,0xf0,0x31,0xb8,0xfb,0x32,0xc3,0xe2,0x08,0xdd,0x0b,0xee,
- 0xc1,0x25,0x21,0xd1,0x33,0x69,0xe2,0x7d,0x41,0x7a,0x4e,0x3b,0xc8,0xaa,0x42,0xb6,
- 0x88,0xfc,0x36,0xfd,0x4b,0x70,0x7e,0x74,0xc9,0xd8,0x8d,0x95,0xd2,0xd1,0xbe,0xaa,
- 0xd3,0x4b,0x7a,0xc4,0x32,0xed,0xa7,0x6c,0xc7,0xa8,0xb5,0x3e,0x87,0xe3,0x8d,0xd8,
- 0x5f,0x6b,0xde,0x2f,0x61,0x75,0xb8,0x58,0x97,0xbf,0x23,0xde,0xe7,0x59,0xe3,0xca,
- 0x8f,0xc8,0x63,0xe2,0x66,0xeb,0x9a,0x50,0x81,0x9e,0xf1,0x28,0xe4,0xc2,0x0e,0x96,
- 0xaf,0xd3,0x1f,0x0a,0x2f,0x24,0xd6,0x13,0xe0,0xe9,0x60,0xb3,0x5a,0xcc,0xe4,0x6f,
- 0x92,0x7d,0xf0,0x9c,0x30,0x53,0xbf,0xf1,0x11,0xb2,0x18,0xd6,0xa8,0xf8,0xbe,0x6e,
- 0xa2,0x08,0x2f,0xc1,0x74,0x9d,0x2e,0x4b,0xd7,0x12,0xf2,0x47,0x95,0xd6,0x4a,0x8d,
- 0xe0,0xec,0x94,0x15,0xff,0x61,0xad,0x0d,0xd4,0x08,0x4a,0xef,0xc7,0xa0,0xa9,0x96,
- 0x72,0x41,0x27,0xab,0x3b,0xa0,0xb0,0xdf,0xa1,0x5a,0x22,0xd2,0xc4,0xf9,0xed,0x9a,
- 0x32,0x42,0x0e,0x36,0x57,0x8e,0xda,0x94,0x82,0xd5,0xf0,0x2f,0x30,0x6f,0xd0,0xb6,
- 0x4f,0xbc,0x0b,0x8e,0xde,0xfe,0xf7,0xa8,0x8f,0x64,0x07,0xdb,0xc1,0xe6,0x72,0x41,
- 0xfa,0xc3,0xc4,0x7e,0x63,0xc2,0x36,0xe5,0x82,0x77,0x9a,0xb6,0x7e,0x93,0xbc,0x02,
- 0xc5,0x6c,0xa5,0x8e,0xf3,0x47,0xe8,0x45,0x69,0x86,0x6e,0x0b,0xa3,0xbc,0xba,0xd8,
- 0x38,0x4f,0xb7,0x85,0xc4,0x50,0x42,0xfe,0xe4,0x2b,0x3b,0xe1,0x12,0xec,0x3d,0x6d,
- 0x7b,0xb3,0xe0,0x27,0xea,0x21,0xd8,0x11,0x91,0x47,0xc5,0x9f,0x84,0xd6,0xd0,0xb9,
- 0xbd,0xd6,0x73,0xe2,0x15,0xf8,0x29,0x94,0xf6,0x66,0x45,0x45,0xbd,0x76,0x62,0xfe,
- 0x16,0x69,0xb9,0x12,0xd6,0xf1,0x7c,0x3d,0x45,0xfe,0x25,0x70,0x08,0xec,0xa7,0x6c,
- 0xa8,0xb6,0x50,0x53,0xd8,0xf5,0xcc,0x1e,0x72,0x46,0xda,0x3d,0x50,0xa4,0xd3,0x10,
- 0x89,0x2a,0x4a,0xe2,0x79,0x0a,0x61,0x4f,0xc0,0x1e,0xb8,0x31,0x7c,0x5d,0x09,0xf0,
- 0x69,0x8b,0x36,0x93,0x6d,0xf0,0x22,0xa8,0x7a,0x46,0xd8,0x3e,0xc4,0x76,0x37,0x3a,
- 0x7a,0x2d,0x21,0x35,0x9a,0xd8,0x6f,0x54,0x92,0xe8,0x1e,0xb5,0x5e,0xbb,0x31,0x4c,
- 0xd6,0x92,0xc7,0x71,0xda,0x8d,0xc4,0xb2,0x16,0xb6,0x42,0x48,0xbf,0xd3,0x8d,0x12,
- 0x69,0xaf,0xaf,0x5e,0xaf,0x53,0xb5,0x3e,0x21,0xb1,0xfc,0xd6,0xa9,0x52,0x8f,0x1d,
- 0xe5,0x73,0x58,0x74,0xd2,0xf5,0x82,0xbb,0xd7,0xb6,0xb1,0xad,0x93,0xfc,0x19,0x35,
- 0x94,0x14,0x46,0xc1,0x3b,0x5e,0x77,0x9b,0x9e,0x15,0x22,0x7a,0x42,0xfe,0x3c,0x7b,
- 0xd3,0x25,0xed,0x92,0x32,0x17,0x6c,0xb3,0x73,0x2e,0xc1,0x5f,0xa0,0x4a,0xcf,0x0a,
- 0x8a,0x3f,0x81,0x77,0xb4,0xf9,0xba,0xed,0xb8,0x38,0x8a,0x62,0xa4,0x0a,0x55,0xdb,
- 0xd7,0xea,0x13,0xf2,0x47,0x9f,0x72,0x49,0xbf,0x42,0x4b,0x07,0x6c,0xdb,0xc5,0x4b,
- 0x7e,0x04,0x42,0x51,0xdb,0x58,0xc1,0x15,0xb8,0xaa,0xe2,0xa0,0x4b,0xfc,0xae,0x77,
- 0x40,0xd9,0xa5,0x5b,0xe7,0x7c,0xaf,0x21,0xb1,0x7f,0x58,0xde,0x27,0xf0,0x91,0x66,
- 0x3f,0x2c,0x7f,0x41,0xae,0x68,0xad,0x60,0x8f,0xca,0x3d,0xe4,0x53,0x78,0x25,0x58,
- 0x14,0x95,0x43,0x7e,0x27,0x8b,0xa8,0xf6,0x68,0x66,0x30,0x5b,0x4d,0xca,0xff,0xb4,
- 0xc3,0x28,0x2b,0x55,0x5d,0x9e,0x6d,0x1f,0x00,0x3f,0x1f,0xb8,0xc8,0x00,0xec,0x40,
- 0x7d,0x27,0xdb,0xc9,0x62,0xf6,0x94,0x5a,0xa2,0xd7,0xd9,0x09,0x49,0xdc,0x5f,0x4f,
- 0xdb,0x46,0x5f,0xc0,0x65,0x6c,0x0b,0x93,0x11,0xf0,0x07,0x0c,0xb4,0x30,0x02,0x7b,
- 0xa1,0x48,0x97,0x1d,0xab,0x8b,0xa1,0x9d,0xbd,0x10,0xba,0x93,0x59,0x5c,0x89,0xfd,
- 0x00,0xb9,0xdb,0xe0,0x5c,0x5e,0x37,0xff,0xfa,0x23,0x88,0x4f,0xe2,0x83,0x8b,0x80,
- 0xdb,0x60,0x9b,0xf8,0x5f,0x73,0x23,0xac,0xd2,0x65,0xdd,0xd9,0xa4,0x24,0xe4,0xcf,
- 0x29,0xc4,0x7b,0x57,0x48,0xa5,0x7e,0xf3,0x68,0xc1,0x25,0xd4,0x6e,0x55,0xfa,0xfa,
- 0x51,0xf1,0x92,0x72,0x95,0x2f,0x4b,0x54,0xbe,0xe0,0xfd,0x98,0xe2,0xd2,0x0d,0x89,
- 0x63,0x09,0xf9,0xa3,0x23,0xfe,0xb9,0x40,0xf7,0xa0,0x12,0x97,0x9d,0x70,0x10,0xd5,
- 0xba,0x71,0xff,0xcf,0xf8,0xc6,0xeb,0x14,0xdf,0x87,0xb7,0x01,0xe5,0xcf,0x46,0xd1,
- 0x95,0x38,0x2f,0x07,0xd3,0x2a,0x60,0x0f,0x14,0xf4,0xd2,0x51,0x32,0x15,0xf8,0x8b,
- 0x18,0xcf,0xff,0x0a,0x94,0xe8,0xf2,0x8b,0x64,0x0b,0x34,0xf9,0x10,0x41,0xfa,0x6b,
- 0x1e,0x4e,0xec,0x87,0xd3,0x69,0x8b,0x71,0x7d,0xba,0x74,0x84,0x3d,0x56,0x5c,0x9f,
- 0xd0,0xc4,0xfa,0x38,0x75,0x19,0x2c,0x5d,0x69,0x41,0xdd,0xd1,0x49,0xc3,0x9e,0xf2,
- 0x84,0xfc,0xf1,0x09,0xd3,0x60,0x7f,0x28,0x7f,0x24,0x63,0x25,0xb1,0xea,0xcf,0xb2,
- 0xfc,0x61,0x99,0xc3,0x80,0x5d,0xac,0x38,0x2a,0xd7,0x59,0xf6,0x6a,0xcd,0xac,0x20,
- 0x4a,0x7f,0x68,0x5f,0x9a,0xc4,0x3f,0xd4,0xaa,0x9d,0x0b,0x95,0x0f,0x67,0xee,0x11,
- 0xb3,0xf0,0xf9,0x5d,0x51,0x44,0x3b,0x03,0xf8,0xfc,0x78,0xff,0x2e,0x31,0xa0,0x0d,
- 0x42,0x39,0xb3,0xde,0x20,0x27,0x8d,0x0a,0xc4,0x3f,0xea,0x79,0xa8,0xea,0x5f,0x77,
- 0x4e,0xbc,0x3c,0x9b,0xaf,0xcf,0x24,0x5c,0x1f,0xed,0x2a,0xc5,0xf5,0x79,0x7f,0x51,
- 0x8f,0x36,0x06,0x0b,0xd8,0x2c,0x5d,0x0c,0x26,0xf0,0x4f,0x57,0xda,0x25,0x8e,0x16,
- 0xfa,0xad,0x2f,0xb7,0x39,0xd9,0x85,0x89,0xf5,0xb9,0xe8,0xc0,0xf5,0x61,0xa2,0x43,
- 0x42,0x68,0xc4,0xf1,0x4f,0x51,0x42,0x7f,0x45,0x26,0x6f,0x46,0xb4,0x93,0x3f,0x4c,
- 0x1f,0x21,0x53,0xd9,0xcb,0x30,0x53,0xcf,0x6a,0x40,0xd8,0xb3,0x0b,0xe5,0x89,0xac,
- 0x89,0x2b,0xe1,0x8f,0xb0,0x85,0x65,0x46,0x89,0x3b,0xf1,0x7d,0x75,0x78,0x9a,0xed,
- 0x62,0xd1,0x28,0x7d,0xd4,0x33,0x2d,0xc0,0x61,0x4f,0xf2,0x7d,0xeb,0x2d,0x37,0xc0,
- 0xba,0x80,0x7a,0x9a,0x2e,0x45,0x9b,0x65,0x62,0xfd,0xeb,0x72,0x47,0x70,0x3d,0x7d,
- 0x3a,0x0d,0x5f,0x67,0x85,0xed,0xb8,0xcd,0x2c,0x89,0xf5,0x74,0xf9,0xeb,0xb4,0x5f,
- 0x1d,0x50,0x07,0x33,0xac,0xad,0xd9,0x26,0xfc,0x33,0x0c,0x2f,0xbb,0xba,0x99,0x35,
- 0x64,0x71,0xc0,0x15,0x0d,0x0f,0x1a,0x87,0x3d,0x88,0x87,0x99,0x6d,0x48,0x9e,0x9f,
- 0x7d,0x44,0x9f,0x1d,0xb2,0x7e,0x4a,0xe6,0x25,0xf1,0x0f,0xea,0x23,0x0e,0x72,0x66,
- 0xb1,0x49,0x51,0x18,0xb3,0x54,0x42,0x96,0x31,0x10,0x38,0xec,0x91,0x4f,0xa9,0x63,
- 0xda,0x7e,0x82,0x2f,0x6e,0xc6,0x3f,0x43,0x70,0x00,0x2a,0x38,0xc8,0x91,0xc8,0x01,
- 0xae,0xe8,0x51,0xf1,0xc1,0x5b,0x88,0x10,0x6c,0xed,0x08,0x6c,0x3e,0xd4,0xbf,0xd0,
- 0xac,0x93,0x45,0x92,0x78,0x9e,0x90,0xb4,0x1c,0x41,0x0e,0xc2,0x9e,0xa0,0xa5,0x90,
- 0x72,0xfd,0x2b,0x07,0xc9,0x10,0xe2,0x1f,0x34,0x04,0x14,0x32,0x89,0x19,0x3f,0x6d,
- 0x12,0x7d,0x26,0xfc,0x53,0x08,0x2d,0xf7,0x96,0xe0,0x7c,0x4f,0x21,0x3c,0x29,0xf0,
- 0xf9,0xf6,0xce,0xd8,0xfc,0x0d,0x96,0x42,0xed,0x79,0xcd,0xae,0x3b,0x82,0xfe,0x74,
- 0x93,0xfc,0x41,0x3c,0xc0,0x41,0x4e,0x2e,0x91,0xe0,0x7a,0x4d,0xd5,0x32,0x38,0x10,
- 0xda,0x0e,0x4e,0x0d,0x11,0xd7,0x74,0xc4,0x3f,0x78,0xff,0x5c,0xe2,0x49,0xc8,0x9f,
- 0x76,0xaa,0x42,0x04,0xdf,0xd7,0x0a,0x35,0x2a,0xea,0xdf,0xee,0x18,0xde,0x3b,0x01,
- 0x25,0x60,0x03,0x51,0x45,0x45,0x57,0x26,0x2c,0x66,0x62,0x49,0x12,0xff,0xdc,0xf4,
- 0xc1,0xa4,0xcb,0x5a,0x99,0xf7,0x39,0x8e,0x76,0x3e,0xe0,0xaf,0x19,0x2c,0x18,0xe2,
- 0xf8,0x87,0x23,0x9c,0xf3,0x70,0x59,0xab,0xf2,0xce,0x3a,0x3e,0x29,0x89,0x7f,0x38,
- 0x5e,0xfa,0xdc,0xe1,0x5e,0x6c,0x0d,0xe6,0xcc,0xa1,0x17,0xb5,0xf8,0xfa,0x8c,0xd3,
- 0x9f,0x69,0xb6,0x37,0x27,0xcd,0x81,0x4f,0x1c,0xbb,0xea,0xac,0xc7,0x9e,0x98,0x91,
- 0x38,0xbf,0x79,0x4a,0x34,0x14,0x29,0xec,0xb0,0x52,0xa9,0xed,0x7e,0x3c,0x68,0x1d,
- 0x08,0x84,0x50,0x1a,0xf7,0xe0,0x13,0xca,0x4c,0xf0,0x85,0x02,0xaa,0x5b,0xb2,0x3e,
- 0x4b,0xb2,0xd2,0x13,0x56,0x6c,0x5a,0x7f,0x64,0x8b,0x23,0x5a,0x67,0xc9,0x29,0x4a,
- 0x83,0xdd,0xaa,0xaa,0x59,0x12,0xef,0x8b,0x78,0x86,0x3d,0xef,0x98,0xa1,0x51,0xc5,
- 0x4f,0x84,0x89,0xe7,0xcf,0x9b,0xd2,0x09,0x6d,0x94,0xaf,0x3f,0x59,0x6e,0xe0,0xcf,
- 0xf8,0xfa,0x17,0xf1,0xc1,0x72,0x68,0x53,0xed,0xb5,0x75,0x41,0xcf,0x1d,0x09,0xf9,
- 0xd0,0xa1,0x74,0x0a,0x1f,0x22,0x88,0x75,0x06,0x51,0x11,0x6c,0xd7,0x89,0x96,0x65,
- 0x3c,0x3f,0xae,0xbf,0xed,0x29,0x5c,0xe1,0xe7,0xa1,0xcc,0xe3,0xfc,0x75,0x86,0x23,
- 0x21,0x1f,0x02,0xd0,0x09,0xa7,0xd8,0x3e,0xc4,0xc3,0x22,0x02,0x21,0xb5,0x32,0xfe,
- 0xbe,0x7c,0xa1,0x36,0x35,0xfd,0x19,0xc6,0x03,0xf3,0xee,0xcf,0x0a,0x36,0xbd,0x90,
- 0xd8,0xcf,0x45,0x4a,0x88,0x8e,0xe9,0x6e,0xbe,0xcd,0x70,0xe3,0x69,0xf1,0xf5,0xe7,
- 0x3b,0xf0,0xee,0x66,0xd1,0xd7,0x3c,0x0c,0x6e,0xc5,0xca,0x72,0x0e,0x26,0xf1,0x4f,
- 0xad,0x03,0x3e,0x0d,0xd8,0x59,0x5d,0x48,0xac,0xc7,0xf5,0xb1,0x33,0x39,0x44,0x86,
- 0x71,0xf0,0x33,0x26,0xaf,0xf0,0xf4,0xc0,0xea,0x5a,0x95,0x59,0x86,0xc4,0x83,0x89,
- 0xf3,0xee,0x48,0x5b,0x21,0xec,0xe0,0x68,0x07,0xf5,0x91,0x62,0x88,0x65,0xe3,0xbc,
- 0x88,0x4e,0x7e,0x70,0xee,0xd2,0xb6,0xb2,0x68,0x3f,0xdd,0x77,0xcf,0xc1,0x84,0xfc,
- 0xc9,0x17,0xa6,0x0a,0x2f,0x93,0xe9,0x11,0x34,0x52,0x36,0xe3,0xb1,0x45,0x3c,0x60,
- 0x9c,0x5f,0x3c,0xc8,0x72,0x83,0x7f,0x13,0xac,0xd1,0x0a,0xb4,0xa7,0x1a,0xfc,0x91,
- 0x24,0xbe,0xa2,0x37,0x07,0xbe,0x64,0xbb,0x3e,0xcc,0xfa,0x19,0x9a,0x2d,0x57,0xdf,
- 0xbc,0x2d,0xba,0x7e,0xa5,0xf8,0x2e,0x7c,0x89,0xe7,0x37,0x6b,0x4c,0x7c,0x94,0xfc,
- 0x85,0xcd,0x8e,0x3a,0xeb,0xc5,0x83,0x49,0xfc,0x73,0xe7,0x6f,0xe1,0x23,0x98,0xd7,
- 0x6f,0xeb,0x7e,0x15,0xf5,0xbb,0x56,0x66,0xc8,0x13,0x6a,0x28,0xfa,0xb0,0x38,0x44,
- 0x2e,0xe0,0x51,0xc2,0x13,0xea,0x4f,0xc8,0x1f,0x6d,0xca,0x15,0xf8,0x04,0xd5,0x96,
- 0x75,0x4c,0xac,0x60,0x57,0x71,0x90,0x39,0x86,0x6a,0xfd,0xa2,0xa1,0xc8,0xc4,0xfd,
- 0x70,0xb4,0x71,0x76,0xd4,0xda,0x83,0x5f,0x77,0x62,0xff,0x74,0xa1,0xfc,0x61,0x79,
- 0xaa,0xee,0x68,0x58,0x68,0xc5,0xc7,0x56,0x87,0x65,0x7c,0x7e,0xba,0x8b,0xdd,0xaa,
- 0xcb,0xfa,0xe4,0x47,0x1a,0xdf,0xa3,0xb7,0xd6,0x65,0xd6,0xdf,0xf2,0x42,0xe2,0xfb,
- 0x06,0x61,0x33,0x3c,0x07,0xf9,0xfd,0x28,0x9f,0xa7,0x6a,0xbb,0x00,0xf1,0x52,0xec,
- 0x7d,0xf3,0xf1,0x7d,0xc9,0x26,0xba,0x09,0xf1,0xcf,0xf5,0x2e,0x7b,0x33,0x9b,0x58,
- 0x7f,0x9f,0x34,0x00,0xad,0xb5,0x45,0x31,0x79,0xbe,0x23,0x98,0xd0,0x77,0x85,0xfa,
- 0xa2,0x19,0x44,0xa5,0x7e,0xad,0xd0,0x77,0x7d,0x21,0x69,0x4f,0x9c,0x77,0x47,0xda,
- 0x3e,0xf8,0xa8,0xbf,0x54,0xcf,0x1c,0x45,0xeb,0x78,0x2e,0x74,0x4c,0xe8,0x2f,0x2e,
- 0x48,0x49,0x17,0xd9,0xe8,0x9d,0x73,0x36,0xb3,0x67,0x92,0x45,0x4a,0x3e,0xcf,0x08,
- 0x5c,0xc0,0x65,0xc9,0x0a,0xe7,0x8c,0xc4,0xf0,0x4f,0x58,0x48,0xae,0x8f,0x84,0x83,
- 0xd7,0x8f,0x36,0xe1,0x56,0x9c,0xb8,0xff,0x06,0xb6,0x82,0x5e,0xa4,0xdd,0x68,0x54,
- 0x7a,0x2a,0x50,0x0d,0xa1,0x61,0x8b,0xf2,0x1c,0xff,0xe1,0xcd,0xba,0xed,0xbc,0x5c,
- 0x9e,0xf6,0x29,0xda,0xb3,0x74,0x54,0x8c,0xd6,0x4e,0xc8,0x93,0xde,0xdc,0x15,0x7c,
- 0xdb,0xe8,0x8e,0x30,0xc2,0x98,0xbd,0x90,0xd0,0xbf,0x0f,0xea,0x72,0x8f,0xfd,0x39,
- 0xb5,0x95,0xbd,0xa0,0x77,0xb1,0x82,0x21,0x2d,0x81,0x7f,0xd2,0x9c,0xfc,0x98,0xf4,
- 0xde,0x70,0xcd,0x7c,0xd4,0x77,0x0a,0xf9,0x07,0x61,0x6f,0xe3,0x0b,0xda,0x0d,0xdb,
- 0x57,0x47,0x13,0xfb,0x87,0x4a,0x56,0x08,0x23,0x0c,0xb0,0x70,0x58,0xb8,0x17,0x42,
- 0x6f,0xc5,0xd6,0x07,0x61,0xb6,0x2c,0x10,0x26,0xb5,0xe0,0x41,0xb3,0xa8,0xa4,0x2f,
- 0x6d,0x62,0x3f,0xb0,0x0c,0xbe,0x0d,0xdc,0xfa,0xdd,0x67,0x0b,0x7e,0x43,0xbf,0x04,
- 0xf7,0xdb,0x71,0xfd,0x82,0xf7,0x0f,0x8a,0xcb,0xa5,0x31,0x98,0xa7,0x65,0x3d,0xd1,
- 0x94,0xb4,0x07,0x43,0x99,0xa8,0xd6,0x9d,0xaf,0xf4,0xdd,0x85,0xaf,0xc9,0xae,0x42,
- 0x65,0xc4,0x78,0x5f,0x43,0xbf,0xa3,0x2a,0x23,0x97,0xa0,0xaa,0xfa,0xae,0x3e,0xb1,
- 0x2b,0x2d,0x89,0x37,0x46,0xd8,0x21,0x1f,0x82,0xcc,0x73,0xe2,0xc9,0x8e,0xa3,0xf6,
- 0xf9,0xf8,0x21,0xc4,0x8a,0xd0,0x51,0x75,0x7e,0x24,0xb3,0xbb,0x60,0x5f,0x33,0x02,
- 0x21,0x7d,0xed,0x69,0x03,0x38,0xc5,0xe7,0x2b,0xa7,0xb4,0xd6,0x06,0xfb,0x1c,0xba,
- 0x2f,0x67,0x16,0xb4,0x29,0x68,0x7f,0xfd,0xda,0xf3,0x75,0xe8,0xca,0xb5,0x0f,0xd2,
- 0xed,0x24,0xa4,0x7d,0x18,0xb4,0x9f,0xb5,0x6c,0x23,0xa3,0x89,0xf5,0x8f,0xa4,0x0d,
- 0x90,0x46,0xfc,0xfa,0x01,0x89,0x04,0x50,0x5a,0x39,0x06,0xf1,0x7d,0xad,0x92,0x48,
- 0x0a,0x07,0xa9,0xb1,0x43,0x88,0xaa,0xd4,0x4d,0x4e,0x37,0xf9,0x7f,0x26,0x77,0x49,
- 0x68,0xdf,0x11,0xca,0xfa,0xba,0xd4,0x17,0xa8,0x9d,0x58,0x82,0x7e,0x14,0xe3,0x60,
- 0xef,0xa3,0xe1,0xec,0x90,0xf0,0x3c,0xb5,0x03,0x09,0x92,0xa4,0xff,0xa7,0x76,0xca,
- 0x27,0x70,0x08,0x5e,0x1e,0x74,0xce,0x11,0x7f,0x23,0xbd,0xef,0x41,0xfc,0xbc,0x53,
- 0x2e,0x92,0x0e,0xc1,0x05,0x65,0xed,0xf6,0xad,0xbf,0x65,0x17,0xab,0xdd,0xbd,0xd6,
- 0xd0,0xa4,0xc1,0x84,0xfc,0x0c,0x09,0x61,0xbe,0x6d,0xd8,0x92,0xb0,0xf8,0x5d,0xff,
- 0x3b,0xa1,0x4a,0x76,0x57,0x58,0xec,0x53,0x2e,0xc0,0x65,0x98,0x15,0x2e,0x38,0x5d,
- 0xfb,0xb1,0x54,0xd1,0x67,0x0b,0xe1,0xd6,0x9a,0xb8,0xff,0xa0,0xf2,0x18,0xbc,0x2f,
- 0x95,0x9d,0xb0,0x76,0x4e,0x9a,0x89,0xf8,0xca,0x35,0x68,0x9d,0x23,0x3e,0x48,0x0e,
- 0x41,0x59,0x30,0xd3,0xd5,0xe4,0x94,0x3e,0xbe,0xdf,0xad,0xaf,0x0d,0x17,0x84,0x13,
- 0xf2,0x27,0x92,0xe6,0x60,0x6d,0x01,0x35,0x80,0x20,0xd9,0x01,0x6f,0x7b,0xed,0x3d,
- 0x81,0x30,0x9a,0x8d,0x2f,0x7e,0xd3,0xce,0x68,0x98,0xe4,0x4b,0x4d,0xba,0xbd,0x97,
- 0x76,0x93,0xb2,0x84,0x7c,0x88,0x22,0xfe,0xd9,0xaa,0xaa,0x83,0x68,0x6d,0x49,0x6a,
- 0x23,0x38,0x22,0xf8,0xf5,0x17,0xc3,0x8b,0x4c,0xd5,0x5b,0x80,0x64,0x0d,0x76,0xf7,
- 0xab,0x9f,0x5b,0x54,0xbf,0xc9,0xff,0x23,0xa4,0x6b,0xab,0x9f,0xb9,0xbf,0x3e,0xb0,
- 0x92,0x7c,0x1b,0x7e,0xc1,0xf2,0x7d,0x96,0x85,0xf6,0x69,0xd0,0xd9,0xae,0x46,0x69,
- 0x9d,0x65,0x1a,0xec,0x6c,0x37,0x1c,0x41,0x3f,0x31,0xe1,0x9f,0xac,0xe0,0xa9,0x50,
- 0x58,0x2f,0xc9,0x6b,0xb3,0xb2,0x5e,0xe8,0xd1,0x4b,0x1c,0xe2,0x62,0x78,0x35,0xbc,
- 0x53,0xcf,0xcc,0x93,0xad,0xec,0xb3,0x70,0x18,0x4a,0xf2,0x84,0x63,0x13,0xdb,0x0d,
- 0xb4,0xcc,0x7d,0xb9,0x97,0x94,0xf9,0x75,0xb6,0x37,0x6b,0xf6,0xc1,0x65,0xa5,0xaa,
- 0x36,0x53,0xc7,0xfd,0xf3,0x27,0xf8,0x79,0xbf,0xed,0x4d,0x1c,0x1c,0x86,0x2a,0x29,
- 0xf3,0x44,0x0a,0xfe,0x19,0x81,0x8f,0x05,0xbe,0x08,0x39,0x85,0xca,0x21,0xee,0xf6,
- 0x09,0x17,0xfc,0x10,0xbf,0x88,0x5b,0xcb,0x0c,0x89,0x88,0x18,0x99,0x5b,0xc7,0xc1,
- 0x47,0x26,0xfc,0x83,0x42,0x12,0xb8,0xdb,0x87,0x4a,0xd0,0x44,0x0c,0xff,0x4f,0x00,
- 0x9e,0x05,0x87,0x96,0xe9,0x43,0xc4,0xe8,0x17,0x0c,0x47,0xd0,0xb9,0xc4,0xfa,0x33,
- 0xf8,0x2d,0x3c,0xc7,0x1a,0xb9,0xb7,0x67,0x1a,0x3c,0xc1,0xa6,0xc7,0x06,0x5b,0x63,
- 0xfe,0x9f,0xbb,0x61,0x0d,0x0a,0x52,0x84,0x82,0x51,0x13,0xfe,0x19,0x80,0xb6,0xa0,
- 0x3a,0x44,0x6f,0xf3,0x58,0xe1,0x57,0xc1,0xc2,0x21,0x5a,0x4e,0x1e,0x53,0xb7,0x06,
- 0x1d,0x7d,0x19,0xbb,0x71,0x61,0x9b,0x82,0xce,0x4b,0x79,0xa9,0xfe,0x9f,0x2e,0xc4,
- 0xf3,0x6e,0xb6,0x4d,0x95,0x29,0x79,0x1b,0x5e,0x66,0x8e,0xdf,0x8a,0x33,0x51,0x02,
- 0xbb,0xc3,0xce,0x90,0x5c,0x4f,0x0e,0xc2,0x83,0xc1,0xcc,0x17,0x44,0x93,0xff,0x07,
- 0x7c,0xca,0xd8,0xc2,0x0a,0xb4,0xc7,0x6b,0x4e,0x29,0xc3,0x88,0x7e,0x6d,0xac,0x29,
- 0x04,0xa8,0x7f,0xa5,0x2c,0x26,0x32,0x18,0xab,0xa6,0xca,0xcd,0xfd,0x29,0xf8,0xa7,
- 0x1f,0x0e,0xe8,0x95,0xbe,0xcc,0x76,0xf1,0x59,0x18,0xd7,0xc3,0xdc,0xff,0xb3,0x1c,
- 0xc6,0x37,0xba,0xb4,0xcc,0x20,0xe2,0x9f,0x03,0x50,0xf9,0x90,0x75,0x43,0x8a,0xff,
- 0xe7,0xfb,0xd0,0x02,0x1d,0xb5,0x74,0x13,0x99,0xd1,0xd7,0xa2,0x77,0x78,0x2d,0xdc,
- 0xed,0xb0,0x9b,0x75,0x78,0x69,0xd0,0x5e,0x28,0xb5,0x68,0x25,0xdf,0xc4,0x9f,0x92,
- 0xe7,0x3d,0x2f,0x6d,0x01,0x3c,0x06,0x05,0x1e,0xf9,0x4d,0xb2,0x13,0x7e,0xa7,0x15,
- 0x78,0xe9,0x20,0xd9,0x29,0x3d,0x23,0x18,0x83,0x39,0xf0,0x98,0xef,0x1f,0x35,0x7a,
- 0x9c,0xbc,0x6e,0xc2,0x3f,0xb9,0x9e,0x55,0xb5,0xf9,0x5a,0x5d,0x03,0xc9,0x85,0x34,
- 0x2d,0xdf,0x4b,0xbc,0xe9,0x31,0xff,0x8f,0xe3,0x5e,0x32,0x05,0x56,0xc1,0x03,0x3a,
- 0xf5,0x92,0xa4,0xfd,0x55,0x9e,0x79,0x3f,0x87,0xfd,0x5c,0xed,0x86,0x60,0x25,0x0e,
- 0xac,0x4c,0xe6,0xfa,0xd7,0x0d,0x77,0x81,0xac,0x12,0x0e,0x8d,0x9c,0x7a,0xc1,0x11,
- 0xc1,0x84,0x7f,0xd8,0x59,0xed,0x65,0xee,0xed,0xf9,0x3e,0xc2,0x9e,0xfd,0xde,0xf5,
- 0x1c,0x08,0x4d,0xf8,0x7f,0x68,0x7c,0x60,0xf2,0xff,0xa4,0x7d,0x1e,0x3a,0x5c,0x58,
- 0x5a,0x67,0x1d,0x6c,0x3a,0x2f,0x1d,0x56,0x4a,0xb5,0xcc,0x8d,0xe2,0x79,0x76,0x58,
- 0xa9,0xf4,0x5a,0x7f,0x29,0x4e,0x67,0x87,0x0d,0xc4,0xe8,0x37,0xfb,0x7f,0x7a,0x37,
- 0x06,0x1c,0x76,0xa0,0xcd,0xe2,0x16,0x4d,0xf5,0x86,0xf2,0x1c,0xcc,0x73,0x0a,0x02,
- 0xdf,0x2c,0x9a,0x5a,0xb4,0x9a,0xcc,0x6e,0x0e,0x40,0x99,0x22,0xf7,0x5b,0xb2,0x12,
- 0xf6,0x75,0x5d,0x5a,0x3f,0x82,0x3a,0xd5,0x1b,0xe0,0xb0,0xa7,0x51,0x55,0xef,0x41,
- 0x74,0xd7,0xaf,0x35,0xaa,0xd3,0xb5,0x3a,0x7c,0x5f,0x65,0xcb,0xed,0x33,0xbd,0x8b,
- 0xbc,0x64,0x63,0x42,0xfe,0x20,0xfe,0x61,0x2d,0x6a,0x87,0x86,0xa7,0xb5,0x93,0x6e,
- 0x05,0x1f,0x07,0x42,0x43,0xf8,0x45,0x66,0x72,0x47,0xd9,0x1c,0x61,0x26,0xcc,0xf2,
- 0xdc,0x38,0x68,0xf6,0xff,0x4c,0x19,0x22,0x07,0x98,0x4b,0x73,0x3e,0x7d,0xcf,0x99,
- 0xe0,0x01,0x35,0xe6,0xd6,0x6b,0x3a,0xa0,0x96,0xf9,0x16,0x07,0xe5,0x42,0xf2,0xa1,
- 0x7d,0x5e,0x83,0xed,0x09,0xb1,0x2b,0x21,0x7f,0x86,0x85,0x4e,0x38,0x4b,0x11,0xed,
- 0x3c,0x55,0x30,0xd4,0x81,0xb0,0xc7,0x63,0xe0,0x9f,0x1f,0x43,0x65,0xdd,0xcd,0x7c,
- 0xf0,0x26,0x94,0xd5,0xda,0x94,0xa6,0x47,0x13,0xfb,0xdf,0xa1,0x84,0x10,0x7f,0xce,
- 0x83,0xc7,0x56,0x15,0x44,0x35,0xee,0x76,0xcb,0xe2,0x8e,0xe8,0xc8,0x20,0x7e,0x88,
- 0x66,0x51,0x31,0x1c,0x41,0xb6,0x55,0x05,0x26,0xfc,0x93,0x56,0x0e,0xeb,0xd4,0x02,
- 0x46,0x87,0x71,0x37,0xaf,0xd3,0x70,0x10,0x22,0x11,0xb5,0xb5,0xba,0x8c,0x39,0x42,
- 0x76,0x07,0x94,0xac,0xb5,0x37,0x23,0x22,0x3a,0x98,0xc4,0x27,0x69,0xcb,0x09,0xae,
- 0x4f,0x6d,0x86,0x4a,0x5e,0x83,0x1d,0x2d,0x85,0x67,0xf1,0x3c,0xbe,0x0e,0x2d,0x04,
- 0x0c,0xc7,0x69,0x7e,0xf7,0x16,0x90,0x64,0x0a,0x49,0xfc,0x13,0x12,0xa6,0x52,0x3c,
- 0xbf,0x1a,0x1e,0xd2,0x41,0xb2,0x46,0x9b,0x3e,0x88,0x40,0xe8,0xb8,0xb4,0x1a,0x70,
- 0xb0,0xdc,0x7e,0x13,0xbc,0x14,0x03,0x06,0xc3,0x89,0xfb,0x77,0xd1,0x6c,0x78,0xad,
- 0x79,0x76,0x34,0x73,0x25,0x39,0x06,0x9f,0xb3,0x97,0xa2,0xce,0x95,0xe2,0xeb,0xe4,
- 0x55,0xb6,0x23,0xe4,0x1c,0x93,0x2b,0xc9,0x67,0x6c,0x7b,0xd4,0xb6,0x52,0xfc,0x28,
- 0x89,0x7f,0x6e,0xea,0x52,0x3e,0x4b,0xff,0xad,0xbe,0x3e,0x2c,0xea,0xca,0x38,0xcc,
- 0xe3,0x86,0xff,0x10,0x5c,0x10,0x2b,0xb9,0x61,0x32,0x82,0x82,0x65,0x1a,0xbf,0xd2,
- 0x97,0x90,0x3f,0x90,0xf6,0x05,0x9c,0x64,0x93,0x7c,0x4b,0x3e,0x14,0xbb,0xe1,0xa4,
- 0x3e,0xdf,0x97,0xc5,0xf1,0xcf,0x97,0xac,0x6a,0x85,0xf5,0x84,0xe8,0x66,0xff,0x23,
- 0x58,0x35,0x64,0x1b,0x17,0xf5,0xc4,0xfa,0x77,0x09,0x53,0x61,0x35,0xdc,0xba,0x54,
- 0xce,0x27,0x5e,0xed,0xb8,0x82,0xeb,0xe3,0x22,0xc7,0xb5,0x1d,0xca,0xad,0xb5,0x54,
- 0x23,0x8a,0xb4,0x7d,0x7b,0x31,0x57,0xc4,0x1f,0x25,0xed,0x6b,0x25,0x08,0xbf,0x54,
- 0xa6,0xe3,0x4b,0x79,0x06,0x51,0x71,0xcf,0xd4,0x66,0xc6,0xf1,0x0f,0xcd,0x98,0x4c,
- 0xb2,0x57,0xed,0xca,0x2f,0xd6,0xe4,0x86,0x74,0x3d,0xe9,0xff,0xc9,0x8d,0xd4,0xb5,
- 0xfa,0x0a,0xcf,0xa1,0xf6,0xd7,0x70,0xbe,0xbd,0x19,0x81,0x50,0x3f,0xec,0x28,0x9c,
- 0x01,0x19,0x40,0x54,0x6d,0x87,0x84,0x8a,0xbe,0x1c,0x8f,0xcd,0xc4,0x79,0xdf,0x36,
- 0x65,0x1b,0xbc,0xa5,0x95,0x55,0xe3,0xf9,0xea,0x44,0xb3,0x6b,0x9e,0x9e,0xd9,0x23,
- 0x9e,0x81,0xcf,0xa2,0x38,0x08,0x5b,0x9c,0x08,0xe4,0x0c,0x0f,0xcf,0x47,0x26,0x79,
- 0x38,0xe2,0xb8,0x58,0x5d,0x59,0x6b,0x6b,0x16,0x99,0xf2,0x8e,0x56,0xd5,0x77,0xf7,
- 0x76,0x71,0x48,0xbb,0x00,0x7b,0xf4,0xac,0xd0,0xa4,0x11,0xc7,0xb8,0x82,0x5b,0x6b,
- 0x07,0x22,0xe4,0x89,0xfb,0x0b,0xca,0x88,0x78,0x18,0x61,0xcf,0xfa,0x80,0xd8,0x23,
- 0xbc,0x11,0x42,0x45,0x3f,0x8a,0x66,0xc8,0xcf,0xd5,0xb9,0xfd,0x38,0xb8,0x24,0xad,
- 0x27,0x55,0x11,0xab,0x5e,0xa3,0x6b,0x49,0xf9,0xf3,0xa0,0xb7,0xd5,0x83,0x9b,0x64,
- 0x2d,0x2e,0xc2,0x8b,0x9a,0x9d,0xad,0x0d,0xe3,0xfe,0xdf,0xc3,0xec,0xc7,0x96,0x84,
- 0xec,0x23,0xd2,0x3b,0xcd,0xf3,0x74,0x54,0xf4,0x49,0xf9,0xc3,0xd2,0xac,0x6a,0x40,
- 0x2b,0xea,0x95,0xfd,0xe9,0x51,0x16,0x80,0x19,0x1a,0x02,0xa1,0x21,0x8d,0xe3,0x1f,
- 0x1a,0xcc,0x8e,0x4a,0xcf,0xeb,0xce,0x20,0xdd,0x49,0xa2,0xd2,0xc4,0x7e,0x40,0xfc,
- 0x43,0xfc,0x92,0x43,0xc3,0x45,0xd6,0x71,0x6b,0xab,0x6c,0xe1,0xec,0xf4,0x7e,0x69,
- 0x87,0xf2,0x43,0xdd,0x22,0x65,0xeb,0xc2,0x76,0x5f,0x91,0xee,0x98,0x63,0x92,0x3f,
- 0x90,0xf6,0x80,0xa7,0xf5,0x9b,0xf3,0x74,0x43,0xfe,0x58,0x85,0x32,0xad,0x28,0xec,
- 0x19,0x42,0x0d,0x5e,0x81,0xf7,0x2f,0x88,0x4a,0x1f,0xd6,0x57,0xea,0xd6,0x9d,0xa2,
- 0x2e,0x4e,0x4c,0x0f,0x4d,0xb9,0x04,0x5f,0xe4,0xef,0x12,0x6c,0x7d,0xe2,0x20,0x20,
- 0xda,0x69,0x44,0x60,0x73,0x1e,0xae,0xaa,0xbb,0x74,0x5b,0xdf,0xa4,0x51,0xf8,0x93,
- 0x3a,0x1f,0xd6,0xeb,0xe2,0xf0,0xa4,0x04,0xde,0x48,0xbb,0x02,0xaf,0xb3,0xb9,0xfd,
- 0x8b,0x1b,0x6a,0x7e,0x4a,0x8e,0x82,0x9b,0xc3,0x66,0xc4,0x4b,0x52,0x15,0x1f,0x8c,
- 0xfe,0x62,0xc4,0x55,0x9a,0x6e,0xed,0x15,0x5d,0x09,0xf9,0xc3,0x94,0x4f,0xa1,0x15,
- 0x61,0x1e,0x0d,0x7b,0x16,0x68,0xeb,0xa1,0xa3,0x4f,0xee,0x21,0x57,0xb5,0x57,0x06,
- 0x4b,0xa2,0x88,0x0f,0xcf,0x68,0xbb,0x5d,0x88,0x88,0xd6,0x10,0x35,0x21,0xcf,0x69,
- 0xda,0x30,0xc2,0x1e,0x3b,0xc7,0x7b,0x6b,0x59,0x13,0xea,0x77,0x8e,0xf7,0xd0,0xd0,
- 0x58,0x61,0x00,0x63,0xbe,0x02,0xa8,0x31,0x3c,0xfe,0x24,0xfe,0x99,0xd2,0x15,0x7a,
- 0xa1,0xc5,0xee,0xb3,0xb4,0x23,0x3e,0x6f,0x83,0x22,0x5d,0x4c,0xe0,0xc9,0x30,0xf9,
- 0x14,0xf6,0xf4,0x77,0x6c,0xa7,0x9b,0x49,0x38,0xb1,0x3f,0xb5,0x29,0x9f,0x4a,0x1f,
- 0x37,0x97,0x8d,0x96,0x94,0xd7,0xac,0x80,0x43,0x64,0xde,0x04,0x7e,0x36,0xf0,0xf0,
- 0xa7,0xc2,0x30,0x73,0xab,0xd6,0x80,0x1c,0x4c,0xec,0xff,0xa8,0xb0,0x8f,0xbc,0x47,
- 0x5e,0x41,0x98,0x67,0xc1,0xd5,0x81,0xb9,0xdc,0xbf,0x31,0x42,0x0d,0x7c,0xc8,0xf7,
- 0xc3,0x38,0xad,0xf4,0xcc,0x6a,0x10,0x57,0x9a,0xfc,0x3f,0x5d,0xea,0xc7,0x93,0xcb,
- 0x06,0xb3,0x7a,0x26,0x39,0xe1,0x7d,0xe8,0x46,0xe0,0x6d,0x1c,0xc3,0xb8,0xa3,0xe3,
- 0xad,0xbf,0x75,0x7b,0xad,0xcd,0x35,0xa3,0x26,0xfc,0x63,0x61,0x6d,0x83,0xa8,0xd6,
- 0x7f,0x43,0x2a,0x60,0x7d,0x0c,0x0f,0x5f,0x82,0xf7,0xa0,0x0c,0x07,0xf6,0x11,0x34,
- 0xbd,0xed,0xf7,0xd0,0x5f,0xa3,0x7e,0x9f,0xd8,0x0f,0xd1,0xb4,0x3b,0xe1,0x05,0x44,
- 0x3b,0x84,0xa3,0xc1,0xad,0x13,0xfe,0xb1,0x26,0x44,0x8c,0x38,0x88,0x40,0x6b,0x23,
- 0x02,0x27,0x35,0xbd,0xc7,0xe4,0xff,0xb9,0x01,0x56,0x1b,0x61,0x20,0x4b,0x56,0x5d,
- 0x53,0x63,0xdc,0x1f,0xf2,0x78,0xf3,0xf7,0xf9,0xe0,0xca,0x3d,0xc6,0x4f,0xdf,0xd9,
- 0x78,0x42,0x99,0xb8,0x7f,0x1d,0xa5,0x10,0x55,0xdd,0x11,0x8b,0x1b,0xef,0xff,0xbe,
- 0xe0,0xfa,0x24,0x8b,0xfb,0x7f,0x5e,0x65,0xb9,0xba,0x6d,0xb6,0x38,0x40,0xf8,0x99,
- 0x76,0x5a,0xc4,0x8d,0xa6,0xf8,0x57,0x3b,0x1e,0xc3,0xbd,0x6c,0xc9,0xe8,0xa4,0x4b,
- 0xea,0x55,0xad,0xd2,0x58,0x16,0x5f,0x6c,0x7d,0x6a,0x4e,0x2a,0x57,0xe0,0x15,0x86,
- 0x40,0x68,0xd0,0x84,0x7f,0x86,0xe1,0x6d,0x5c,0x8d,0xc5,0x61,0xd1,0xc9,0x0e,0x55,
- 0x77,0xf7,0xde,0x1c,0x16,0x3f,0x51,0xdf,0x71,0xf1,0x78,0x22,0xae,0xcf,0x9f,0xfc,
- 0xa5,0xd5,0xb6,0x68,0x8a,0xff,0xa7,0x1d,0xd6,0x91,0xad,0x3c,0xc8,0x55,0x61,0x5f,
- 0xaf,0x1a,0xd2,0xf2,0x24,0xdb,0xe5,0x28,0xd6,0x17,0x71,0xc1,0xf2,0x98,0x90,0xaf,
- 0xb5,0x8d,0x16,0x99,0xfd,0x3f,0xdd,0xf0,0x4b,0xee,0xf6,0x29,0xf7,0x3c,0xcd,0x9e,
- 0x0b,0x26,0xfd,0x3f,0xa7,0x70,0x70,0x04,0x11,0xe0,0xfd,0x3e,0xb9,0x8e,0x34,0x98,
- 0xf0,0x4f,0x44,0xf3,0x07,0xd4,0x51,0x4b,0x97,0x79,0x3d,0x63,0xfe,0x1f,0xfb,0x80,
- 0xd6,0xa8,0x75,0x34,0xc8,0xbf,0xb0,0x98,0xfd,0x3f,0x7b,0xe0,0x5d,0xa9,0x74,0xe7,
- 0xac,0x11,0xb9,0x0b,0x5e,0x80,0xb8,0xff,0xe7,0x6d,0x30,0xe4,0xed,0xdb,0xf0,0x2e,
- 0x2d,0xed,0xb0,0x0d,0x8b,0x8f,0x9a,0xf0,0x0f,0x6a,0x7f,0x65,0xbf,0x94,0xb9,0xca,
- 0x70,0x83,0x70,0xb7,0x0f,0x9e,0xee,0x98,0xff,0x47,0x3c,0x2d,0x8d,0xd1,0xca,0x6c,
- 0xdb,0xea,0x14,0xfc,0x73,0x86,0x1d,0xc8,0xee,0xae,0xce,0x0a,0x6e,0x95,0xc8,0x87,
- 0xd0,0x6d,0xd8,0xfb,0x92,0x61,0xef,0x73,0x7d,0x77,0x40,0xad,0xd4,0x9c,0x1b,0x44,
- 0x8f,0x09,0xff,0xdc,0x01,0x8d,0xcc,0xae,0xd1,0x8d,0xa4,0x90,0xb6,0x4c,0xf8,0x1f,
- 0x6e,0xe3,0xfe,0x1c,0x43,0x11,0x7b,0x4a,0x1e,0xa1,0x4f,0x5b,0x54,0x13,0xfe,0x29,
- 0x44,0xed,0x8c,0xf6,0xd4,0x06,0xb2,0x1c,0xb6,0xa4,0x9b,0xfd,0x45,0xc6,0xfc,0x0c,
- 0xee,0x1a,0x22,0x66,0xff,0x8f,0x84,0x9b,0x50,0xf5,0xd2,0x5c,0xcb,0xed,0x06,0x30,
- 0x90,0x15,0x77,0xdc,0x1f,0xa2,0xe0,0xfc,0x46,0xcd,0x39,0x08,0xb9,0xd9,0xc4,0x84,
- 0x7f,0x7c,0xb8,0x0d,0xdd,0xc2,0xdd,0xac,0xc6,0x47,0x87,0x05,0x37,0xac,0x9f,0xf0,
- 0x3f,0x18,0x8e,0x08,0x8e,0x7f,0x16,0x33,0x31,0xcb,0xe4,0xff,0x39,0x49,0x7f,0x07,
- 0x55,0x5e,0xdb,0x79,0xf1,0x99,0x98,0xdb,0x27,0x18,0xc3,0x3f,0x7c,0xf0,0x39,0xb9,
- 0x5c,0x8b,0x3f,0x1d,0xaf,0x79,0xd6,0x84,0x7f,0x8e,0xa3,0xed,0xe1,0xae,0xcd,0xf2,
- 0xca,0x08,0x0b,0x35,0xb7,0xd7,0x16,0xac,0x19,0x32,0xe2,0x83,0x7c,0x7d,0xd8,0x9f,
- 0x7c,0xa5,0x8b,0xac,0xc7,0x9a,0x5e,0x37,0xe1,0x9f,0x28,0x84,0x55,0xfb,0x94,0xba,
- 0x55,0x44,0x45,0x79,0x5b,0xc6,0xfd,0x3f,0xa7,0xa0,0xc7,0x1b,0x1f,0x04,0x7c,0xf6,
- 0x3c,0xfa,0x2c,0x39,0x62,0x92,0x3f,0xfd,0xb0,0x3b,0xd3,0x59,0x67,0x51,0xfc,0xb7,
- 0xbb,0x36,0x68,0x6a,0x35,0xbe,0xe6,0x6b,0xf8,0xbe,0x2a,0x7f,0xdf,0x37,0x60,0x83,
- 0xae,0x7a,0xea,0x14,0x7f,0x9f,0x19,0xff,0x18,0xab,0x47,0x37,0x66,0xe1,0x42,0xa1,
- 0x3c,0x8f,0xaf,0x67,0x7c,0xd0,0x22,0xd8,0x3d,0x34,0xe8,0x79,0xdd,0x84,0x7f,0xce,
- 0xc0,0x59,0xa8,0xac,0xbe,0x7b,0x73,0xc1,0x72,0x78,0x2b,0xfe,0xd8,0xd2,0x38,0x79,
- 0x38,0xee,0xe8,0x63,0x28,0x1f,0x36,0x8b,0xc3,0x26,0xfd,0xdb,0xc9,0xc6,0x83,0xe1,
- 0x7a,0x9b,0x92,0x13,0x77,0x03,0xf2,0x69,0x67,0x63,0x83,0x7e,0xed,0xac,0xba,0x6f,
- 0xe1,0xac,0xcd,0x26,0x7d,0x87,0xf8,0x87,0x0d,0x53,0x03,0xed,0xf8,0x70,0xb5,0x39,
- 0xfe,0x14,0x63,0xf8,0x33,0xe6,0x88,0x63,0x6e,0x65,0x31,0xdb,0xda,0x6a,0xc2,0x3f,
- 0xb7,0xb9,0xd6,0x69,0x7e,0x46,0xa3,0x68,0x7f,0xbd,0x00,0x76,0x96,0x16,0xf3,0xff,
- 0xcc,0x8b,0x39,0x82,0xd6,0xa5,0xa1,0xc6,0x1f,0x21,0xad,0x26,0xfc,0x73,0x97,0x71,
- 0x4c,0x68,0x79,0xba,0x95,0xb4,0xf1,0xb0,0xc5,0x84,0xbf,0x82,0x1f,0x1c,0xb2,0x81,
- 0xa9,0x0d,0x54,0x49,0x6f,0x35,0xe1,0x9f,0x4a,0x58,0xad,0xe1,0xfc,0x06,0xff,0x54,
- 0xb6,0x55,0x99,0x39,0x7c,0x7d,0xd2,0xff,0x83,0x82,0x6e,0x0d,0x0f,0xa4,0x5a,0x49,
- 0x57,0xe2,0xfe,0xdb,0xe8,0x34,0xb4,0x5f,0x66,0x23,0xec,0xb1,0x64,0xa9,0x6f,0x84,
- 0x76,0x8c,0x64,0x72,0xff,0xcf,0x67,0xec,0x56,0x0e,0x7b,0xde,0x55,0x4e,0x72,0x20,
- 0xb4,0xb4,0xe6,0x05,0x13,0xfe,0xd9,0xc6,0xbd,0xaf,0x7f,0xc0,0xd3,0xb7,0x4d,0x7f,
- 0xa7,0xbe,0xcc,0xe4,0xcf,0x0f,0x8b,0x03,0x93,0xae,0x40,0x15,0xb3,0xe9,0xa2,0xc7,
- 0x84,0x7f,0xae,0x48,0x3f,0x67,0xf3,0xa3,0xb6,0xdd,0xa5,0x3f,0xa3,0x47,0x59,0xe9,
- 0x69,0x1b,0xc7,0x3f,0x57,0xf9,0x95,0x1e,0x1c,0xfc,0x69,0x53,0xd5,0x72,0x5b,0x4f,
- 0x8d,0x6e,0xf2,0xff,0xe4,0xb1,0x57,0x82,0xf9,0x43,0x6d,0x17,0x3c,0x95,0x6c,0x0d,
- 0xe4,0x1b,0xfe,0x1f,0x6d,0x07,0x7f,0xfe,0x47,0x71,0xb0,0xaa,0xbc,0xf8,0x6e,0x79,
- 0x66,0x8e,0x09,0xff,0xc0,0xe6,0xb4,0x5d,0xf0,0xbc,0xde,0xd6,0x40,0xee,0xf3,0xaf,
- 0x49,0xfa,0x7f,0x70,0xfe,0xc3,0xf8,0xbe,0xcd,0x88,0x88,0x65,0xaf,0x3d,0x05,0xff,
- 0x20,0x9a,0x42,0xb1,0xa3,0xfa,0xad,0x28,0xc6,0x93,0xf1,0x8e,0x5e,0x1c,0x1c,0x66,
- 0x7e,0xea,0x6c,0x91,0xe7,0x90,0x48,0x62,0x7f,0x76,0x4d,0xf9,0x2d,0x82,0x9c,0xf9,
- 0xba,0x6d,0x4f,0xc1,0x4f,0xe0,0xa8,0x50,0x1a,0x13,0x9b,0xb1,0xf7,0x15,0x06,0xa0,
- 0x85,0x55,0x36,0xd8,0x7e,0xbd,0x35,0xf9,0x3c,0x8c,0xfb,0x7f,0xa0,0xf2,0xb4,0x2d,
- 0x5c,0x33,0x20,0xc5,0xd5,0xdc,0x40,0x2c,0x1e,0xc1,0x1d,0x65,0x1f,0xf3,0x83,0xc6,
- 0x4c,0xf1,0x2f,0x01,0x45,0xf6,0x55,0x68,0xd2,0x9d,0x0d,0xe2,0x3e,0xcb,0x22,0x04,
- 0x42,0x1c,0xf6,0xa0,0xfe,0x9a,0x8b,0xf2,0xbc,0xe0,0x12,0x0c,0xf0,0xf5,0xf4,0x8a,
- 0x90,0x88,0x7f,0x35,0x4a,0x0f,0x42,0xb8,0x19,0xf5,0x3b,0x23,0x4e,0x90,0xb9,0xe2,
- 0xe6,0xfa,0xf7,0x45,0xc9,0x1d,0x73,0xec,0x74,0xbd,0x5e,0xe2,0x96,0x03,0x08,0xe4,
- 0x4c,0xfe,0x1f,0xb6,0x97,0x39,0xf4,0xba,0x6e,0xcf,0x36,0x5a,0x80,0xef,0x9b,0xc7,
- 0xa7,0xb5,0xc1,0x8c,0xd8,0xfc,0xdd,0xbd,0x25,0x3e,0xb9,0xa7,0x43,0x35,0xc9,0x1f,
- 0x0a,0x7b,0xa9,0x1a,0xe1,0xde,0x0f,0x86,0x1b,0x6f,0x90,0xfb,0xe7,0x25,0x43,0x50,
- 0xbb,0x71,0x7e,0x08,0xf0,0xbf,0x9a,0x9e,0x9e,0x94,0x3f,0x90,0xb9,0x1c,0x57,0x63,
- 0xbe,0xbe,0xb8,0xdb,0xb3,0x4f,0xfd,0x0b,0x94,0x0e,0x5a,0x0d,0xfd,0xab,0xe0,0xc6,
- 0xe8,0x6e,0x1a,0x99,0x8c,0x82,0xb4,0xda,0xb6,0xba,0x0d,0x12,0xf2,0x27,0x94,0x39,
- 0x86,0xf3,0xf7,0x0f,0xda,0x86,0x70,0xda,0x7b,0x50,0xd9,0x2f,0x4f,0xf8,0x7f,0x96,
- 0x8c,0x8a,0x27,0x15,0xae,0xf3,0x71,0xff,0x0c,0x27,0xe3,0x5f,0x69,0xfc,0xd7,0x52,
- 0xbd,0x78,0x54,0xae,0xe4,0xdb,0x26,0x92,0xf9,0xd9,0xab,0x3f,0x83,0xab,0xae,0xb9,
- 0x3e,0x9b,0x2e,0x8c,0xe2,0x89,0x2b,0x05,0x6b,0x5f,0x93,0x19,0xff,0x7c,0xa2,0xed,
- 0x69,0x42,0xf9,0x3c,0x46,0x4a,0x60,0xaf,0x5a,0xf4,0x7b,0x7a,0x1e,0x07,0xaf,0xf8,
- 0xe6,0x68,0xf2,0x6a,0x32,0x4b,0x0b,0xe8,0xf6,0xa0,0xe5,0x59,0xbb,0x19,0xff,0x0c,
- 0x48,0x3b,0x04,0x55,0x6f,0x51,0xb8,0xb7,0x87,0x3a,0x06,0x32,0xdc,0x68,0x86,0xef,
- 0x50,0x0a,0x35,0x39,0xd7,0xaf,0x01,0xab,0x56,0x95,0x3c,0x78,0x99,0x98,0xf0,0xcf,
- 0x36,0xd8,0xdb,0xbc,0xac,0x16,0x85,0xb6,0xd3,0x08,0x7b,0xa1,0x21,0xe6,0xa4,0x37,
- 0xc2,0x0c,0x9f,0xbc,0x89,0x94,0x08,0xad,0xcd,0xcb,0x1a,0xb3,0xbb,0x56,0xa7,0xc4,
- 0xbf,0xa4,0x8b,0x2c,0xac,0x65,0xf6,0xc8,0x4e,0x63,0xdb,0x64,0xf2,0x78,0xf1,0x45,
- 0x28,0xd3,0x6c,0x9b,0xe4,0xef,0x91,0x43,0xba,0x7b,0xbb,0xb5,0x5d,0x84,0x64,0xfc,
- 0x0b,0xf6,0xc5,0xd0,0xd1,0x6e,0x63,0x59,0xf6,0xf7,0xc6,0xfd,0x81,0x55,0x1a,0x22,
- 0x46,0xbe,0x91,0xf6,0x6f,0xb0,0x35,0xc8,0xa9,0xf1,0xaf,0x8f,0x89,0x9b,0x9b,0xed,
- 0xfc,0xfe,0x65,0xfa,0x5d,0xae,0x1a,0x1e,0xff,0x9a,0xa7,0x65,0xb9,0x26,0x7d,0x08,
- 0xef,0xf8,0xf6,0x04,0x9d,0x3b,0x45,0x13,0xfe,0x91,0x2a,0x59,0x93,0xb7,0xe3,0x34,
- 0x5a,0xeb,0x4e,0xdc,0xf6,0x05,0xbd,0x75,0xa3,0x46,0xfc,0x0b,0x57,0xac,0x3b,0xfb,
- 0x53,0xd6,0xba,0xd0,0x1e,0xa0,0x7b,0x6a,0xba,0x4d,0xf8,0xe7,0x2e,0xb6,0x95,0x15,
- 0x7a,0x8a,0x14,0xbe,0x2c,0xec,0x59,0x3d,0x2f,0x7e,0x5e,0x34,0x44,0x2c,0x01,0xc1,
- 0xdf,0x5b,0x42,0x64,0xbb,0x29,0xff,0xc7,0x87,0xf2,0xe7,0x97,0xa1,0xe9,0xcb,0xe9,
- 0x52,0xcf,0x34,0xd8,0x15,0x88,0xa7,0xc1,0xec,0x62,0xf9,0x3e,0x5a,0xef,0x79,0x97,
- 0x6e,0x0a,0x4d,0xbf,0xff,0xc6,0x1f,0xa4,0xb7,0x27,0xfd,0x3f,0x75,0xce,0xe6,0xf7,
- 0x2d,0x73,0x6a,0x71,0xdb,0x5a,0xe9,0x67,0x30,0x47,0x2f,0x46,0xfc,0xa3,0x7d,0x86,
- 0xe7,0x31,0xcb,0x25,0xf4,0x92,0x63,0x7a,0x45,0x70,0x3d,0xa4,0xe4,0xff,0xe0,0xfb,
- 0xaa,0xf3,0x6b,0x27,0x8d,0xe5,0x5c,0x82,0x2f,0xf9,0x42,0x9d,0xe5,0xf1,0x2f,0x8e,
- 0x7f,0x76,0x8a,0x63,0xf0,0x17,0xdc,0x8a,0x78,0x82,0x4c,0xf8,0x67,0xca,0xa7,0xda,
- 0xef,0x71,0x59,0xd6,0x05,0xd7,0xac,0xc0,0x65,0x71,0xf3,0x83,0x8c,0x0b,0x85,0x86,
- 0x30,0xce,0xaf,0xe7,0x8e,0x5c,0x6e,0xaf,0x99,0xf1,0xcf,0x3e,0xb6,0x0a,0x0a,0xf4,
- 0x3a,0x6f,0xf6,0x54,0x09,0x05,0x4b,0x44,0x3e,0xbf,0x71,0x2a,0xec,0x72,0xdc,0x5a,
- 0x2d,0x47,0xc5,0xfb,0x94,0x5d,0xb0,0x45,0x97,0x7d,0xa9,0xf1,0x2f,0x54,0xb9,0xd3,
- 0x11,0xff,0x90,0x69,0x14,0x5f,0x73,0xe8,0xc9,0x47,0xc9,0x34,0xd8,0xf1,0xcb,0x7c,
- 0x9f,0xbc,0x72,0xf5,0x34,0xfe,0xe2,0xef,0x2f,0x2a,0x4f,0x77,0xa5,0xf8,0x7f,0x9a,
- 0x34,0xfb,0x50,0xcc,0xff,0x6c,0xf8,0xf3,0x2d,0x56,0xdc,0x48,0xcb,0x7d,0x72,0x37,
- 0xb9,0xab,0x7a,0x87,0x57,0x1d,0x95,0xe7,0x98,0xe3,0x5f,0x88,0xdf,0x5e,0xa7,0x65,
- 0x88,0x76,0x6c,0x75,0x70,0x0e,0xdc,0x8d,0x99,0x21,0xd1,0xc1,0x23,0x7a,0x5d,0xeb,
- 0x43,0xe2,0x3c,0xf8,0x82,0x95,0x06,0x6d,0x23,0x93,0x52,0xe2,0x5f,0x64,0xf8,0xce,
- 0x4a,0xc8,0x02,0x31,0x94,0x84,0x01,0x7c,0xb0,0xa4,0x59,0x8c,0xaa,0x88,0x7f,0xc0,
- 0xd6,0x68,0xc6,0x3f,0x70,0x26,0x63,0xbc,0xba,0xc3,0xdb,0x15,0x94,0xb9,0xb7,0xc7,
- 0x8e,0x6a,0xee,0x5b,0x43,0x78,0x6c,0xcb,0x34,0x67,0x58,0x9c,0xc1,0xc6,0x25,0xf7,
- 0x42,0x5b,0x9e,0x29,0xfe,0xc5,0x6a,0xff,0x2c,0xec,0xf6,0xd9,0x1f,0xc6,0xfd,0x5f,
- 0xa8,0x3c,0xaf,0xd9,0xb5,0x2c,0x43,0xff,0x0a,0x68,0x71,0x6f,0xcc,0xee,0xa4,0xbb,
- 0x49,0xc7,0x43,0x59,0x9b,0x89,0x09,0xff,0x48,0xcf,0x34,0xf3,0xe8,0x8c,0x25,0x98,
- 0x5e,0xa8,0xb5,0x68,0x2f,0x24,0xf1,0x0f,0xe5,0x19,0x2f,0xbb,0xab,0x11,0x11,0xfd,
- 0x32,0x05,0xff,0xa4,0xe1,0xaf,0x0e,0xef,0x0d,0x4a,0xba,0x04,0x5b,0x34,0xea,0xb5,
- 0xe4,0xf2,0x78,0x50,0x6d,0x11,0x22,0xa2,0xf4,0xe6,0x8c,0xed,0x82,0xca,0xaf,0x98,
- 0xf0,0x4f,0x86,0x0f,0x7a,0x60,0x9e,0x25,0x8b,0xa7,0xd9,0x70,0x47,0x84,0x81,0x7f,
- 0x78,0xbc,0x09,0x15,0xb1,0x4a,0x57,0x42,0x37,0x5b,0xc2,0xe4,0x94,0xf8,0x97,0x74,
- 0xb9,0x7a,0xae,0x96,0x36,0x68,0x84,0x75,0xca,0xbc,0xeb,0x36,0xf1,0x81,0x36,0x17,
- 0xcf,0xa3,0xf8,0x39,0xfd,0x5c,0xab,0xf2,0x66,0x1d,0x37,0xfb,0x7f,0x84,0xf3,0x70,
- 0xd8,0x31,0xf7,0xef,0x96,0x6c,0xac,0x39,0x9f,0x7b,0xb9,0x16,0xb7,0xcd,0x2f,0x79,
- 0x60,0xc8,0x37,0x4f,0xb3,0xfd,0x41,0xd8,0x09,0x87,0xd5,0xd2,0xc5,0xf0,0x7b,0x71,
- 0x86,0x39,0xff,0xc7,0x1e,0x20,0x76,0x2a,0xaf,0x42,0x23,0x74,0xa7,0xda,0x41,0x65,
- 0x3f,0xae,0x46,0x8f,0xcf,0x6e,0xb1,0x3d,0x6b,0xc9,0xc7,0x27,0xec,0xd8,0x5c,0xb7,
- 0xc6,0x92,0x95,0x58,0x4f,0xb8,0xbd,0xbf,0xbf,0x05,0x9c,0x4b,0x65,0xc5,0xc3,0x61,
- 0x9e,0xea,0x91,0x73,0x49,0x33,0x6c,0xd7,0xd0,0x02,0xcd,0x4d,0x4f,0x83,0xc6,0x5a,
- 0x5c,0x58,0x85,0x10,0x33,0xfe,0x11,0x5a,0xaa,0xf9,0x32,0xa2,0x99,0xb9,0x1d,0xec,
- 0xd5,0x3c,0x4c,0x06,0xdb,0x85,0x65,0xda,0x22,0x1e,0x61,0xcc,0xc0,0x2f,0xa8,0x6c,
- 0x20,0xe9,0x49,0xfc,0xa3,0x74,0xe6,0x1e,0x60,0x3f,0xd3,0x96,0x24,0x61,0x5b,0x01,
- 0x3e,0xbf,0x34,0xef,0xf6,0x45,0x9b,0xc5,0x19,0xfa,0x81,0x90,0xbb,0xa1,0xf0,0x69,
- 0x31,0x99,0xff,0xf3,0x02,0xe0,0xaf,0xed,0x28,0x9d,0x9e,0x2a,0x8d,0x87,0xbd,0x94,
- 0x9a,0xd8,0x20,0xeb,0x49,0x71,0xc8,0xf2,0xa1,0xbd,0xa2,0x76,0x52,0x7b,0x4e,0x0a,
- 0xfe,0x51,0x23,0x9a,0x1b,0x8d,0x47,0x91,0xc7,0x1f,0xdd,0x42,0x7c,0xbf,0x95,0x41,
- 0x66,0xba,0x98,0x2f,0x8d,0x79,0xdc,0xd4,0xda,0x68,0xf6,0xff,0x48,0xb7,0xb9,0x5e,
- 0xd7,0x9a,0x98,0x25,0x54,0x5a,0x04,0xad,0xac,0xac,0x51,0x0e,0xb9,0x87,0x63,0x81,
- 0xb0,0x21,0xd2,0x1a,0x7c,0x19,0xb6,0x32,0x3a,0x64,0xf6,0xff,0x34,0xaf,0x90,0x1e,
- 0xd7,0x0d,0x37,0xec,0x1d,0xf0,0x78,0x48,0x35,0xcc,0x04,0x69,0x87,0x84,0xf8,0x47,
- 0xc5,0x2b,0x3b,0xd4,0xc2,0x7b,0x17,0xed,0xf4,0x9b,0xe2,0x5f,0xd5,0x14,0x9a,0x68,
- 0xfe,0x69,0xcb,0x4a,0x72,0x9d,0xba,0x8a,0x4e,0xe7,0x30,0x00,0xf1,0x00,0x99,0x8e,
- 0xc0,0xc0,0xcf,0x81,0x01,0xfe,0xc3,0x06,0x18,0x36,0xc5,0xbf,0xee,0x81,0x3f,0x22,
- 0xc8,0xb1,0x96,0xcb,0xdf,0x85,0x3f,0x04,0x66,0x47,0x6d,0x3f,0x46,0xfc,0x73,0x35,
- 0x70,0xeb,0x70,0xe6,0xb0,0xf8,0x5d,0xe9,0x4b,0x36,0xc5,0x37,0xab,0xde,0xec,0xff,
- 0xb9,0x3e,0x9c,0x77,0x51,0xd8,0xcf,0xfd,0xf3,0x03,0x30,0xa6,0x55,0xf6,0xdb,0x5e,
- 0xe2,0x78,0xc0,0x3b,0xef,0x24,0x47,0x44,0x5c,0xf0,0xf6,0x6e,0x36,0xfb,0x7f,0xb4,
- 0xb4,0x0b,0xda,0x55,0x56,0x15,0xb5,0xf6,0x88,0xd7,0xc1,0x07,0x71,0xd8,0xa3,0x5d,
- 0x64,0xa5,0xa3,0xd6,0x61,0x52,0xa9,0x1d,0xda,0x38,0xb9,0xf0,0xbe,0x1e,0x53,0xfe,
- 0x67,0xd7,0xe4,0xa7,0x60,0x57,0xa8,0x38,0x80,0x30,0x2c,0x17,0xfe,0xa7,0x92,0xdf,
- 0xdf,0xb6,0xd2,0x8e,0x8f,0x1d,0x9e,0xdb,0x9f,0xb9,0x10,0xa6,0xde,0xb3,0xa6,0x33,
- 0x7f,0x60,0xe9,0x22,0x62,0xc6,0x1b,0x41,0x6d,0x97,0x5a,0xec,0x47,0x7b,0xed,0x5e,
- 0x78,0xc6,0x80,0x79,0xd9,0x27,0x15,0x1e,0xff,0xa2,0xf6,0xac,0xa9,0xda,0x13,0xe4,
- 0x7d,0xed,0xb6,0xef,0xe1,0x09,0x9a,0x58,0x7f,0x5f,0xae,0x8f,0xe7,0x56,0x36,0x66,
- 0xb8,0xdc,0x12,0xcf,0x1f,0x8b,0xe3,0x1f,0xa1,0x50,0xcf,0x90,0xd2,0x6d,0xbe,0xc7,
- 0xeb,0xd4,0xc1,0xeb,0xb7,0x5d,0xf7,0x76,0xc2,0x3f,0xc9,0xf3,0xb5,0xc6,0xa5,0x4a,
- 0xcd,0x1a,0xbe,0x65,0x39,0x02,0xd1,0xf9,0xdc,0xde,0x1c,0x31,0x34,0xb2,0xb5,0x53,
- 0x2c,0x81,0xdf,0xab,0x6e,0x5f,0x46,0x8f,0x78,0xd0,0xf4,0x3c,0x51,0x18,0xf7,0x56,
- 0x2a,0x86,0x5b,0x0c,0xb7,0x4d,0x2f,0x87,0x3d,0x4a,0x1c,0x08,0x8d,0x28,0x1f,0x42,
- 0x65,0xf4,0xee,0x5d,0xf8,0x53,0x12,0xff,0x8c,0xc2,0x6b,0x74,0x7e,0x48,0x0a,0x4f,
- 0x3a,0xaf,0x5d,0xd1,0x0d,0xfc,0xb3,0x0f,0x7e,0x6e,0xe4,0x7b,0x34,0x3d,0x20,0x5c,
- 0x15,0x4a,0xfb,0x6c,0xa3,0x72,0x28,0x71,0x5e,0x7a,0x61,0x19,0x69,0x61,0x76,0xd5,
- 0xc1,0xa3,0x69,0x3d,0xd0,0x81,0xfa,0xd4,0x50,0xc4,0x3f,0xc3,0xfd,0x60,0x71,0xd2,
- 0xdd,0x8d,0xf6,0x21,0x79,0x8f,0x18,0x32,0xe1,0x1f,0xbb,0xd0,0xa2,0xff,0xf0,0x84,
- 0x25,0x9c,0x3d,0x64,0xc4,0xbf,0x22,0x2e,0xb2,0x4d,0xda,0x9b,0x56,0xa2,0x23,0xde,
- 0x76,0x66,0xbc,0xd8,0x6b,0x57,0x6e,0xec,0x9a,0x11,0x32,0xc9,0x1f,0x42,0x1b,0x55,
- 0x95,0xa1,0x76,0x6b,0xe6,0xe7,0x51,0xbf,0xde,0x85,0x40,0x71,0x87,0xea,0xd0,0x45,
- 0x42,0xac,0xc2,0x76,0x97,0x0a,0xbf,0x22,0x66,0xfc,0x63,0x55,0x03,0x2d,0xea,0x3c,
- 0x96,0x15,0xf6,0x73,0xb7,0x4f,0x37,0x7f,0xfe,0x6d,0xf0,0xa5,0x63,0x16,0x4f,0x73,
- 0x72,0xc2,0xc7,0x3c,0x22,0xec,0x6f,0x0a,0x25,0xf1,0xcf,0x4d,0xd1,0xda,0x71,0x65,
- 0x01,0x7b,0x60,0xb4,0xe0,0xbc,0x74,0x19,0xaa,0x7a,0x93,0xf1,0xaf,0x46,0xf1,0x92,
- 0x74,0x5e,0xe3,0xf8,0xb9,0xa0,0xcb,0x84,0x7f,0x2e,0xc0,0x09,0xa9,0x72,0xd0,0x79,
- 0x3e,0x67,0x85,0xf4,0xde,0x86,0xb2,0x53,0xeb,0x7f,0x2c,0xba,0xc9,0xd1,0x6c,0x23,
- 0x7e,0x7a,0x3e,0x34,0xe0,0x2e,0xc8,0x5f,0xfc,0x6a,0x8e,0xcb,0x14,0xff,0xfa,0x08,
- 0x41,0xe9,0xac,0x41,0xfa,0x85,0x7d,0x41,0xf3,0x8b,0x50,0x14,0xcd,0xea,0x26,0x33,
- 0x60,0x7d,0x03,0x4f,0x04,0xf2,0x7c,0x10,0x6e,0x7f,0xc4,0x1e,0xa2,0xab,0x89,0x2b,
- 0x11,0x7f,0x8f,0xa0,0xfd,0xc5,0xc0,0x79,0x82,0xce,0x21,0x77,0xa9,0x4d,0xaa,0x11,
- 0x5f,0x1e,0xca,0x6d,0x52,0x63,0xf6,0x45,0x63,0x50,0xb0,0x03,0x15,0x88,0xdb,0x14,
- 0xff,0xfa,0x17,0xd2,0xe2,0x2f,0x41,0xd8,0x63,0x5f,0x81,0xfb,0xa1,0xa8,0x17,0xf1,
- 0xe7,0x19,0x04,0xd2,0x06,0x9e,0xfc,0x94,0x3c,0xc5,0xec,0x8c,0xb6,0x13,0x57,0x32,
- 0x3f,0x79,0xf2,0x47,0x10,0x89,0x54,0xea,0x8b,0xc3,0xf2,0x0a,0x84,0xb5,0x65,0xb8,
- 0x1f,0x6a,0x1e,0xe4,0x03,0x7d,0x52,0x58,0xfc,0xb3,0xe3,0x40,0x9f,0x2b,0x7b,0xf1,
- 0x66,0x51,0x31,0xc5,0xbf,0x7a,0xd4,0x71,0xbe,0x2c,0x61,0xdc,0x06,0x7c,0x59,0xe4,
- 0xf3,0xa4,0x02,0x07,0x7b,0x39,0x3e,0x1c,0xc2,0xcd,0xf5,0x4a,0x64,0x89,0x26,0x0f,
- 0x9b,0xe2,0x5f,0xdb,0xb8,0x76,0xd3,0xd7,0x86,0xc5,0xb5,0xf4,0x1d,0x63,0x9b,0xdd,
- 0xe8,0x94,0x0e,0x49,0x71,0xff,0xcf,0x30,0x5f,0xff,0xb0,0x19,0xff,0xa4,0x65,0xb1,
- 0xdd,0x6a,0x81,0x4e,0x47,0xc5,0x9f,0xe0,0x7c,0xdc,0x06,0x3d,0xa8,0x88,0xd7,0x4b,
- 0x86,0x23,0xe8,0xe3,0xbe,0xc0,0x52,0x1c,0xfc,0xda,0x94,0xff,0x8c,0xf8,0x07,0xc2,
- 0x43,0x33,0x38,0xcc,0x5b,0x8b,0xaf,0xe9,0xd4,0x33,0xb6,0x27,0x1d,0x17,0x51,0xd4,
- 0x2e,0x68,0x98,0x3b,0x96,0x9d,0x4d,0xe8,0xbb,0x51,0x01,0x95,0xbe,0xdf,0x37,0x44,
- 0x1f,0x25,0xdf,0x5d,0xf5,0x04,0x4f,0x83,0x59,0x49,0x2a,0xd1,0xc2,0x9a,0xce,0x07,
- 0x6f,0x6b,0xbf,0x60,0xd3,0x55,0xb9,0x8e,0x5c,0x49,0x9c,0xaf,0x3b,0xa9,0x55,0x1a,
- 0x0d,0x3f,0x32,0xb2,0xb8,0x5c,0xfe,0x2d,0xbc,0x2a,0x54,0x8c,0xac,0x77,0x89,0x56,
- 0xf8,0x18,0xc2,0xba,0x6d,0xbe,0x18,0x81,0xcf,0xb4,0x39,0x77,0xd8,0x2a,0x9a,0x7e,
- 0x4f,0x26,0xe6,0x6b,0x37,0xf1,0x65,0xb1,0x45,0xe4,0xd1,0xa6,0xd8,0xfa,0xe0,0xfe,
- 0x39,0x49,0xde,0xa1,0xf3,0x0c,0x47,0x10,0x41,0xfc,0x03,0xb6,0x0d,0xe2,0x60,0xe2,
- 0x3c,0xf2,0xf8,0xd7,0x25,0xa8,0x7c,0x0b,0x61,0xf9,0x8a,0xc8,0xa1,0xd8,0x31,0x74,
- 0xc2,0xa1,0xe5,0x95,0xb1,0x7c,0xbc,0xdf,0x08,0x25,0x7f,0xc4,0xfd,0x46,0x92,0xf9,
- 0x9f,0x1b,0x36,0xa3,0xb4,0x2c,0x3e,0x1e,0x98,0x5d,0x64,0x55,0xd7,0x40,0x31,0xca,
- 0x13,0x71,0x2a,0x59,0xe3,0xb8,0x8d,0xfb,0x7f,0x4e,0xc0,0x2a,0x7e,0x45,0xb7,0xb8,
- 0x4d,0xfe,0xde,0xa7,0x1d,0xbb,0xf4,0x99,0xc3,0x1c,0xe6,0x65,0x3c,0x67,0xbc,0xaf,
- 0xe5,0x0a,0xc4,0x5f,0xfc,0xa0,0xb2,0x6a,0x75,0x71,0xb4,0x6d,0x25,0xc9,0x33,0xe1,
- 0x9f,0x23,0x46,0xf6,0x42,0x1d,0x1e,0x43,0x61,0x2f,0x77,0xfb,0xb4,0x13,0x5b,0xe1,
- 0xe3,0xb1,0xc4,0x86,0x61,0x7f,0x8b,0xb6,0x62,0x50,0xde,0x40,0x6e,0x48,0xf1,0xff,
- 0x5c,0x61,0xf3,0x78,0x92,0xf3,0x30,0xf9,0x28,0xe6,0xf6,0x59,0xa9,0xc6,0xfd,0x3f,
- 0xe3,0xec,0xc8,0xd2,0xca,0x6e,0xdb,0x08,0x02,0xa1,0x89,0xe7,0x37,0xfc,0x3f,0xbd,
- 0x3c,0xdb,0x59,0xf0,0x49,0xdc,0xfb,0xb1,0xa4,0x11,0x81,0x50,0x2c,0x10,0x26,0x46,
- 0x09,0x4a,0x6c,0x6a,0xf8,0x7f,0x26,0x9e,0x9f,0x2a,0x67,0xb4,0x03,0xfe,0x79,0x5a,
- 0x49,0xf0,0xc6,0xc2,0xb8,0x7e,0x34,0x80,0x90,0x1b,0x35,0xac,0xf8,0x67,0x38,0xc0,
- 0xdc,0xb5,0xb6,0x8d,0x84,0x24,0x9e,0x9f,0xfb,0x7f,0x5a,0xee,0xcc,0xd2,0x78,0xb4,
- 0x0b,0x5a,0x24,0x44,0x2f,0x9b,0xb2,0x25,0x69,0xc2,0x11,0x64,0x6f,0xf1,0x76,0xe8,
- 0xf2,0x53,0x29,0xfe,0x9f,0xe9,0xd0,0xa2,0x20,0xfe,0x51,0xee,0x29,0x84,0xe7,0xb9,
- 0x9b,0x62,0x23,0xca,0x2b,0x9e,0x38,0x64,0x09,0x92,0x4e,0xee,0xc1,0xf0,0xe0,0x3f,
- 0x5c,0x97,0xd8,0x6f,0x20,0x15,0xe2,0xaf,0xce,0x6f,0xd2,0x5c,0x82,0xda,0x5f,0x0b,
- 0x55,0xcb,0x53,0xef,0x28,0xe4,0x8e,0x20,0xcd,0x70,0x8c,0x34,0xd6,0x2c,0xd7,0x0e,
- 0xe5,0x66,0xb7,0x26,0xe2,0xef,0xe5,0x99,0x3e,0x88,0x08,0xe5,0x50,0xc2,0x64,0x55,
- 0x19,0x8e,0xb9,0x1d,0x78,0xd8,0xcb,0x08,0xc4,0x44,0xe1,0xa0,0x54,0xc6,0xaf,0xac,
- 0x4b,0xc4,0xbf,0x4e,0xdc,0x74,0xde,0x72,0xb9,0xba,0xd2,0xbb,0xc4,0x08,0x7b,0x71,
- 0xfd,0xee,0x15,0x8f,0x73,0xff,0x4f,0xb5,0x2d,0x28,0x5e,0x86,0xcb,0x1a,0x02,0x9b,
- 0xe3,0xe2,0x3f,0x24,0xf3,0x79,0xd2,0x76,0xc2,0x65,0x07,0x0f,0x1b,0xb5,0x15,0xaa,
- 0x07,0xf8,0xfc,0x41,0x59,0x82,0xb7,0xc0,0xf0,0x9f,0xec,0xd4,0x0e,0xf3,0x2b,0xbf,
- 0x8f,0xa6,0x27,0xe6,0xaf,0x54,0x10,0x7d,0x79,0xec,0x53,0xeb,0x9a,0x49,0x3e,0x04,
- 0xa0,0x44,0x90,0x99,0x47,0xcd,0x38,0x11,0xf7,0xff,0x68,0x01,0x5f,0x09,0xc8,0xcd,
- 0x24,0x2b,0x71,0x1e,0xa9,0x84,0xb0,0x87,0xa9,0x9e,0xfa,0xec,0x3e,0x29,0xd4,0xe8,
- 0xc0,0xd3,0x94,0xbd,0x11,0xdf,0xb7,0xc8,0x78,0xdf,0x7e,0xd6,0x78,0xa7,0xb3,0x5a,
- 0xce,0x26,0xd9,0xc2,0xc4,0xfc,0xbc,0x29,0xcf,0x48,0xbb,0x55,0x23,0xff,0x87,0x3b,
- 0xd6,0x4a,0x34,0x3c,0xb6,0xcb,0xe1,0x49,0x5c,0xd8,0x1b,0x71,0xfd,0x2d,0x6d,0x86,
- 0x63,0xad,0x23,0x3d,0x71,0xff,0xd0,0x64,0xee,0xdd,0x72,0x57,0x5b,0x83,0x62,0x21,
- 0x35,0x9e,0x3f,0x4f,0x4c,0x6b,0x8a,0x01,0xdd,0x9c,0x3f,0xd7,0xb6,0x6c,0xc1,0x2b,
- 0x9b,0xff,0x8b,0xc3,0x14,0xff,0x7a,0x56,0x3b,0x0b,0xfb,0xf8,0x36,0x18,0x22,0xc6,
- 0xfa,0x6c,0x24,0x9d,0x19,0xa7,0x62,0xfe,0x9f,0xd7,0xe9,0xb8,0x13,0x07,0xd9,0xf2,
- 0x39,0x13,0xfe,0xd9,0xa2,0x8d,0x4d,0x9e,0x07,0x25,0x50,0x83,0xeb,0x2f,0x54,0x0a,
- 0x7f,0xcf,0x81,0x10,0x5a,0x59,0xb0,0x8e,0x89,0xa7,0xd4,0x08,0xb8,0x33,0x70,0xfd,
- 0x89,0x39,0xfe,0xa5,0xed,0xf7,0xdb,0x1b,0x29,0xcf,0xff,0x69,0xc5,0xcf,0xb6,0x84,
- 0x3b,0x82,0x5a,0x63,0x89,0x40,0x63,0x70,0x44,0xb3,0x07,0xdb,0x3e,0x20,0x16,0x93,
- 0xff,0xe7,0x1b,0xc2,0x76,0x9f,0x43,0x2f,0x72,0xa5,0x3b,0x63,0xf6,0x42,0x39,0xb1,
- 0x8a,0x4d,0xb1,0xc4,0xb9,0x37,0xa0,0x91,0xf9,0x74,0x39,0x0f,0xe7,0x27,0xfd,0x3f,
- 0x79,0xc2,0x76,0x92,0xff,0x1a,0x37,0x63,0xf5,0x27,0xf8,0x69,0xbd,0x97,0x54,0xd0,
- 0xa6,0x98,0x23,0xf7,0x2d,0xd8,0xd4,0x97,0xaf,0xc9,0xb5,0x44,0x4d,0xc4,0x3b,0xba,
- 0x02,0xd7,0xa5,0xbd,0xc4,0xe6,0x8f,0x94,0xfc,0x4c,0x9c,0x06,0x5f,0x86,0x17,0x44,
- 0xe5,0x31,0x79,0x1a,0xbc,0x31,0xbc,0x20,0x9a,0xb5,0x52,0xfc,0x82,0x1c,0x65,0xdb,
- 0x4f,0xdb,0xc6,0xd0,0xc2,0x9b,0xd8,0x6f,0xf4,0xa6,0x2e,0xbe,0x6d,0x06,0xb3,0x76,
- 0xa2,0x74,0xfd,0x18,0xe5,0x49,0x96,0xc9,0x9f,0x3f,0xa6,0x7c,0xca,0x07,0x51,0xb1,
- 0x2f,0x69,0xff,0xfe,0xe2,0x0b,0xe5,0x32,0xab,0x3a,0x65,0xbd,0x64,0xab,0xd4,0x8e,
- 0x06,0x2a,0xb9,0xda,0xaa,0x84,0xa3,0xec,0x96,0x21,0x1c,0x7c,0x01,0xbf,0xe1,0x89,
- 0x40,0x6f,0x89,0x90,0x38,0x5f,0x3c,0xff,0xe7,0x25,0xa5,0x98,0xe3,0xbd,0xcd,0xfa,
- 0x73,0x80,0x62,0xe4,0x9b,0x6d,0x28,0x7f,0x82,0x5b,0xb8,0x7c,0x18,0xd4,0x8e,0xab,
- 0xf9,0x5a,0x5b,0xc6,0x3d,0x45,0xe9,0x13,0xf3,0x11,0xd1,0x23,0xa8,0x2b,0xee,0x77,
- 0xcc,0x26,0x3c,0xf0,0x37,0x5d,0x6f,0xf5,0x5a,0x2a,0xe0,0x71,0xb8,0x9f,0x7b,0x84,
- 0xee,0x25,0xab,0xa4,0x7c,0x26,0xdf,0x63,0x49,0xe6,0x3f,0x17,0x4a,0x07,0xa5,0xed,
- 0x28,0x76,0xf0,0xfe,0x6b,0x95,0xad,0x5c,0xfe,0xe4,0x91,0x4c,0xf8,0x55,0x4c,0x9e,
- 0x1f,0x80,0xa7,0x42,0x2a,0x93,0x0b,0x49,0x5d,0xf2,0x79,0xd2,0x3a,0x83,0xe3,0xbd,
- 0x55,0xfa,0xe2,0xd1,0x9c,0x0a,0x38,0x1a,0x7b,0xcd,0x62,0x78,0x2f,0x16,0x5f,0xf8,
- 0x00,0x0e,0x44,0xdd,0x41,0xb9,0xbd,0xe9,0x87,0x66,0xfc,0xa3,0x8c,0x77,0xc6,0xdd,
- 0x3e,0xb8,0x2c,0xbd,0x4b,0x76,0x8a,0xdb,0xa4,0x8f,0x63,0xff,0xf0,0x23,0x36,0x06,
- 0xfb,0xed,0x72,0xf3,0xf7,0x4c,0xfe,0x1f,0x78,0x04,0x0f,0xdd,0x02,0xae,0x8f,0x46,
- 0x28,0xb7,0x5e,0x6d,0x51,0xb9,0x42,0x3d,0x1a,0x4b,0x04,0xaa,0x45,0x69,0x5e,0x5a,
- 0x2b,0x87,0xb7,0x44,0x4c,0xfe,0x9f,0x65,0xb0,0x3b,0xc0,0xf5,0xaf,0x36,0x02,0x32,
- 0xd7,0x5f,0x4e,0xd4,0x47,0xef,0xf0,0xfc,0x5b,0x54,0xc4,0xca,0xf3,0xfd,0xf6,0x7b,
- 0x50,0xa2,0x0e,0x27,0xf1,0xcf,0x94,0x19,0xd0,0x23,0xcc,0xd0,0x49,0x98,0xac,0x80,
- 0x17,0xa1,0xa4,0xb7,0xad,0x3d,0x7b,0x85,0x10,0x4f,0x04,0x3a,0x83,0x50,0x61,0x06,
- 0xb3,0x6c,0x26,0xa1,0x14,0xff,0x33,0x5f,0x9f,0xa2,0x58,0x98,0xc3,0xfa,0x16,0x1e,
- 0xc3,0x15,0x62,0x3c,0xf1,0xac,0x0f,0x8d,0x4b,0x15,0x64,0x21,0xbd,0x6f,0x55,0x62,
- 0xf9,0x51,0xfe,0x8c,0x57,0xdf,0x3a,0x58,0x74,0x56,0xfc,0x04,0xad,0xef,0x79,0x11,
- 0xdc,0xed,0x2b,0xe0,0x2f,0xd4,0x58,0x1f,0x9e,0x68,0xcf,0x25,0x52,0x23,0x4b,0xe0,
- 0x9f,0x2d,0x37,0x8d,0xc2,0x02,0x87,0xed,0xe0,0x5d,0xe7,0x0a,0x2e,0x85,0x50,0x7f,
- 0x9d,0xb0,0x69,0xe2,0x66,0x38,0x24,0xa1,0x22,0x3b,0xd7,0x34,0x8a,0xaa,0xea,0x15,
- 0xe1,0x66,0x26,0x0e,0xd7,0x26,0xfd,0x2d,0xa3,0xf0,0x27,0x69,0x2e,0x58,0x41,0xdc,
- 0x08,0x87,0xd9,0x5c,0x75,0x5a,0x40,0xac,0x94,0x06,0x89,0x81,0x7f,0x2e,0xb1,0x0b,
- 0x4a,0xa9,0x86,0xd0,0x7a,0xd4,0xe4,0xff,0xf9,0x02,0xbf,0x81,0xc8,0x1c,0x8c,0xd8,
- 0x11,0x28,0x16,0xe5,0xd3,0x00,0x31,0x22,0x62,0x3c,0x11,0xfa,0x92,0x8e,0x2f,0xfe,
- 0x2d,0x6b,0x98,0x44,0x4d,0xfe,0x1f,0x9d,0x34,0x82,0x84,0x76,0x70,0x3a,0x43,0xc1,
- 0x3b,0x03,0xbe,0x03,0xcb,0xd6,0x5a,0x37,0x4a,0xaa,0xbe,0xc8,0xe5,0x19,0x50,0xc3,
- 0x6a,0xe1,0xc0,0x22,0x97,0x3d,0xe9,0x7f,0xd6,0xd3,0x50,0x68,0x07,0x10,0x44,0x35,
- 0x72,0x7b,0x16,0x8a,0xa8,0x25,0x40,0xb6,0x41,0xab,0xd2,0xa1,0xdf,0x18,0x26,0x23,
- 0xca,0x0e,0xa9,0x23,0x8a,0x88,0x28,0x99,0xff,0xa3,0x09,0x9f,0xc2,0xab,0x7a,0x99,
- 0xdd,0x5a,0xd8,0xd4,0x84,0xda,0xa4,0x8c,0x5a,0xac,0x05,0xdb,0xe0,0x1d,0xe6,0xd6,
- 0x6f,0x0e,0xe7,0x8c,0x48,0x17,0xde,0x76,0x8f,0xe2,0x42,0x0d,0x9a,0xe2,0x5f,0xeb,
- 0x5a,0x0d,0x27,0x6a,0x54,0x1c,0x83,0xcb,0xc1,0xaa,0xd0,0x63,0xfa,0xa4,0x4b,0xea,
- 0x95,0x40,0x3c,0xfe,0x75,0x89,0x55,0xfa,0x8b,0x47,0xcd,0xf9,0xcf,0xb0,0x0d,0x0e,
- 0xdd,0x13,0x96,0xac,0x21,0x31,0x9f,0x46,0x94,0x79,0x92,0xb5,0x39,0x67,0x04,0x0e,
- 0x22,0x10,0x35,0x1c,0x95,0x28,0xd8,0x83,0xce,0x54,0xfc,0xe3,0x94,0xda,0x98,0x7d,
- 0x93,0x23,0x24,0x3e,0xa0,0x37,0x82,0xfa,0x0b,0xf1,0x31,0xb0,0xc1,0x0b,0x01,0xbe,
- 0x7f,0xe0,0x12,0x45,0xc3,0x7c,0x23,0x84,0xcd,0xf1,0xaf,0x29,0x1a,0x2e,0x8b,0x0a,
- 0xd4,0xe2,0xc1,0xc1,0x16,0x07,0x64,0x58,0xa5,0x23,0x5a,0x2b,0xab,0x8f,0x25,0xee,
- 0x76,0xc3,0x83,0x0d,0xe0,0x4a,0xf1,0xff,0x5c,0x07,0xab,0x98,0xda,0xe9,0xf8,0x8e,
- 0xff,0x1e,0xf2,0x6b,0x96,0xaf,0x2e,0xfa,0x3b,0x32,0x0d,0x9e,0x65,0x3f,0x30,0x02,
- 0x43,0xd6,0x97,0x43,0xc5,0x68,0x94,0x13,0x73,0xfc,0x8b,0x40,0x6f,0xc8,0x05,0x56,
- 0x8b,0x58,0x8d,0xe0,0xbe,0xbc,0xf6,0xa6,0xcc,0xa6,0x01,0xad,0xcf,0x5f,0xae,0xdb,
- 0xca,0xc5,0x81,0xdc,0xcf,0x42,0x15,0x41,0xeb,0xfc,0x14,0xff,0xcf,0x4e,0xed,0x32,
- 0xec,0x65,0x69,0x83,0x05,0xa3,0xda,0x9f,0x95,0x2a,0xcd,0xa6,0x15,0x9c,0x54,0x2e,
- 0xc0,0xdc,0x7e,0xdb,0x59,0xf1,0x32,0xbd,0xa8,0x54,0x81,0x2d,0xc5,0xff,0x83,0xf8,
- 0x67,0x9c,0xd8,0x17,0x5a,0x55,0xbb,0xce,0xfd,0xff,0x5c,0x1b,0x6e,0x83,0x8b,0xcc,
- 0x48,0x44,0xff,0x54,0x8f,0xe0,0x41,0x58,0x12,0xae,0x31,0xe5,0xff,0x08,0x9b,0xd4,
- 0x57,0x10,0xdf,0xd1,0x06,0xc8,0x23,0xab,0x20,0x1f,0xda,0x78,0x22,0xe5,0xcb,0xb1,
- 0xb4,0x81,0x4b,0xd0,0x0c,0x33,0x41,0x6e,0xf0,0x24,0xeb,0xbf,0x74,0xe5,0x9f,0xb9,
- 0x93,0x47,0xa5,0x11,0xf7,0x31,0xb5,0x93,0xa3,0x3b,0xdd,0xff,0xb4,0xd4,0xcd,0x66,
- 0x1a,0xef,0xbb,0x61,0x83,0xff,0xfe,0xd0,0xa1,0x95,0xf6,0x64,0xfd,0x5d,0x9d,0x72,
- 0x18,0x76,0x04,0x7d,0x5d,0xb4,0x1c,0x41,0xc5,0xd6,0x85,0x85,0x85,0x32,0x2d,0x5a,
- 0x4b,0xbb,0xb5,0x98,0x23,0x5a,0x78,0xb2,0xdd,0xa1,0xc8,0xa9,0xf9,0x3f,0xbb,0xb5,
- 0x2f,0xd8,0x8f,0x98,0xf5,0xa3,0xef,0x8d,0xe1,0x46,0x9e,0xcb,0x96,0x0c,0x93,0x2e,
- 0xeb,0x15,0x57,0x51,0x2c,0x10,0xf6,0x2e,0x2b,0xdd,0x88,0x83,0x0b,0x09,0x79,0x6e,
- 0xe0,0x1f,0xad,0x42,0x9a,0xc5,0x26,0x9f,0x02,0xaa,0xed,0xc9,0xb6,0x35,0x73,0x7b,
- 0x1c,0x51,0xa9,0x81,0x7f,0x86,0x63,0x1e,0xa1,0xd4,0xfc,0xe7,0xf1,0x90,0x9b,0xa7,
- 0xb5,0x0c,0xc1,0x81,0x66,0x77,0x9d,0x75,0x93,0xd8,0xa9,0x8d,0x37,0xfe,0x4c,0x5b,
- 0x1f,0x4b,0x7c,0x75,0xff,0xd0,0xd6,0x9e,0x92,0xff,0xb3,0x9c,0xee,0xa6,0xff,0xa4,
- 0xd1,0x1b,0x48,0xb3,0xd6,0xa8,0xab,0x3e,0x7a,0x9d,0xb8,0x1c,0x76,0xb7,0xcf,0xd3,
- 0x32,0x0c,0xc7,0x8e,0x54,0xb4,0x4c,0x6e,0x47,0xc4,0x65,0x8e,0x7f,0xed,0x26,0x45,
- 0xdf,0xb8,0xd3,0x40,0x3b,0xca,0xe9,0x18,0xec,0x49,0xc4,0xbf,0x76,0x73,0x0f,0xc6,
- 0xc6,0x94,0xfc,0x1f,0x09,0x76,0x6b,0x2a,0xe2,0x1f,0x7b,0xb3,0xd0,0x04,0xaa,0x56,
- 0xa4,0x78,0x6a,0xe9,0x76,0xcd,0xa9,0x65,0x28,0xf6,0xd7,0x84,0xed,0x1a,0xf5,0xca,
- 0xb9,0xc4,0x9f,0xf4,0xff,0xa4,0xf9,0x10,0xff,0x17,0x09,0x99,0x8c,0x74,0x21,0xde,
- 0xeb,0x66,0x77,0x33,0xc3,0xf1,0x55,0x12,0x77,0x7c,0x09,0xd9,0x7c,0x60,0xaa,0xff,
- 0x9a,0xf2,0xb9,0xf4,0x53,0xed,0x15,0x2f,0x82,0x9c,0x9d,0xe4,0x8f,0x50,0xa5,0xad,
- 0xf2,0x8a,0x9d,0x0a,0x87,0x3d,0x93,0x78,0x20,0xec,0xb2,0x76,0xb3,0x97,0xd7,0x7f,
- 0x91,0x24,0xfe,0x19,0x0a,0xfd,0x49,0xab,0xf2,0x5a,0x8f,0xcb,0x9b,0xe0,0x03,0x98,
- 0xab,0x4d,0xf3,0x8a,0x73,0xe0,0xb2,0x52,0xc2,0xe7,0xe3,0xfa,0xf8,0xe6,0xd7,0xd9,
- 0x06,0xc5,0xd5,0x66,0xff,0x0f,0x04,0x08,0x1a,0x4d,0x6b,0xec,0x2a,0xc4,0x0a,0xc1,
- 0xbe,0xa7,0x42,0x8f,0xf7,0x41,0x03,0xff,0x84,0x7a,0xf2,0x4b,0xa8,0xec,0xf7,0x9b,
- 0xe2,0x5f,0xb7,0x0f,0xc1,0x06,0xad,0xcb,0x4b,0xb3,0x4b,0xfa,0x11,0x1f,0x2e,0x47,
- 0xa0,0x68,0xa9,0x85,0xed,0xaa,0x33,0x1e,0x08,0xf3,0xad,0xb8,0x67,0x91,0x92,0x9d,
- 0x1a,0xff,0x6a,0xa9,0xe1,0xf1,0xc7,0x2c,0x2e,0x7f,0x96,0xd5,0xe0,0xea,0x15,0x26,
- 0xd6,0x53,0xd9,0xad,0x3c,0xe8,0xc5,0x81,0x29,0xfe,0x35,0xf9,0x0c,0xbc,0xa5,0xcd,
- 0x7b,0xd8,0x19,0x2c,0xe8,0x6f,0xbe,0x9f,0x95,0x79,0xd3,0x6f,0x98,0x8e,0xdf,0x4b,
- 0x2d,0x89,0x27,0x36,0xd7,0xcd,0xf3,0xad,0x0f,0x4e,0xea,0x4a,0x8d,0x7f,0x75,0xcd,
- 0x5b,0x6e,0x53,0x6a,0x9e,0x85,0xf1,0xcd,0x3c,0x0d,0xfe,0x55,0x9c,0xa6,0xfe,0x2c,
- 0x3e,0x5f,0xfa,0x59,0x1d,0x02,0xa7,0x8f,0x52,0xf3,0x7f,0x48,0x19,0x38,0xd9,0xab,
- 0x3e,0x38,0x51,0x5b,0xa6,0x64,0x35,0x17,0xc4,0xc2,0x8e,0x36,0x56,0xc0,0xb7,0x62,
- 0x59,0x9e,0xb5,0x51,0x34,0xe7,0xff,0x50,0x44,0x46,0x05,0x9b,0xe8,0x69,0x71,0x65,
- 0x60,0x5d,0x60,0x2b,0x93,0x47,0x48,0x79,0x60,0x9d,0xab,0xa4,0x91,0xc7,0xbf,0xe8,
- 0x9e,0xb4,0x5b,0x3a,0x68,0x57,0xb6,0x39,0xff,0x67,0x31,0xb4,0x09,0x33,0x36,0xd1,
- 0x0a,0xcb,0x42,0xd8,0xa1,0xab,0xf5,0xb2,0x74,0x87,0xae,0x36,0x49,0xf5,0x13,0x81,
- 0x1b,0x55,0x41,0x55,0x9e,0x92,0xff,0x23,0x20,0x6c,0x66,0x01,0x8d,0xdc,0x27,0x3c,
- 0x07,0xf9,0xe4,0x46,0x8d,0x1d,0x23,0x6b,0x84,0x62,0xfd,0xc6,0x06,0xcf,0xc9,0xc6,
- 0x5d,0x9b,0x66,0xaa,0xd4,0x9c,0xff,0xb3,0x8d,0x66,0xc1,0x1b,0xc1,0x5b,0x55,0xeb,
- 0x98,0xfc,0x5d,0xeb,0x97,0x4d,0xb3,0x43,0x77,0xd7,0xe1,0xe9,0x78,0x83,0x2d,0x88,
- 0x4e,0x5a,0x29,0xbe,0x07,0x9f,0x85,0x4a,0x55,0x67,0x6a,0xfe,0xcf,0xb6,0xec,0x8b,
- 0xf9,0x95,0x60,0x48,0xd7,0x77,0x0c,0xb3,0x42,0x06,0x03,0xff,0x18,0xf5,0x5f,0x17,
- 0xef,0xc0,0x2b,0xe1,0x82,0x3e,0x32,0xb1,0x3e,0x90,0x76,0x85,0xbc,0xde,0x58,0xaa,
- 0x5a,0x97,0xc2,0xa3,0xf0,0x65,0xb0,0xb4,0xf0,0xa6,0x3a,0xf1,0x29,0xfa,0x06,0xc2,
- 0x9e,0x25,0x63,0xe2,0x15,0xe9,0xe8,0xe8,0xac,0xce,0xf5,0x63,0x44,0x33,0xf9,0x7f,
- 0xd6,0x6a,0x7e,0x4f,0x7e,0x00,0xee,0xe9,0xf8,0xcf,0xc1,0x35,0xae,0x5b,0x21,0xef,
- 0x0e,0x4b,0x10,0xbe,0x80,0x05,0xfc,0x7d,0x4f,0xc2,0x9a,0x40,0xf1,0x51,0xf9,0x2c,
- 0x29,0x32,0xc5,0xbf,0xd6,0xc2,0xba,0x3c,0x94,0xcf,0x83,0xb4,0x62,0xce,0xbf,0x64,
- 0x14,0xe0,0x99,0x3f,0x18,0x84,0xf5,0x1a,0xca,0xab,0x87,0x70,0x7d,0xd6,0xa8,0x0f,
- 0xb0,0x36,0x2f,0x31,0xc7,0xbf,0x8e,0xd2,0x56,0x4d,0x9d,0x5a,0x97,0x97,0xbe,0x84,
- 0xf9,0xf5,0x42,0xa0,0xb9,0xcf,0xb2,0x78,0xfc,0x9d,0x0c,0x48,0x4d,0xcc,0xe9,0xc1,
- 0x8d,0x17,0x30,0xc5,0xbf,0x66,0xb1,0x03,0x7d,0xee,0x51,0xe7,0x4e,0xd9,0x06,0xef,
- 0x33,0xd7,0x70,0xa6,0x44,0x98,0xf4,0xaa,0x6e,0xe8,0xf7,0x4b,0xc4,0xd6,0x5b,0x19,
- 0xe6,0xc0,0xc6,0x1c,0xff,0x52,0xc6,0x7d,0x15,0x41,0xdb,0xce,0xa6,0xdf,0x70,0x7c,
- 0x08,0x59,0x9d,0xb8,0x0d,0x2e,0x7a,0x2b,0xe3,0x81,0x42,0x5a,0x19,0x34,0x80,0x41,
- 0xd2,0xff,0x73,0x32,0x7f,0x40,0xcf,0x01,0xeb,0x98,0xf8,0x13,0xf8,0x4b,0xa4,0x34,
- 0x60,0x3d,0x28,0x36,0x40,0x1c,0xff,0x9c,0xc4,0xc1,0x02,0xee,0x51,0xd1,0x4d,0xf8,
- 0x67,0x85,0x25,0xc0,0x3a,0xca,0xe9,0x6c,0x54,0xbb,0x6d,0x60,0x57,0xf1,0x74,0x2f,
- 0x63,0x2f,0xb2,0xa2,0x58,0x3c,0x0b,0xf1,0x7f,0xbd,0x23,0xec,0x89,0xa6,0xe4,0x3f,
- 0x07,0xa0,0x28,0x54,0xb4,0x33,0x7d,0x1b,0xc3,0xf9,0x50,0xc7,0x3c,0x67,0xa4,0x36,
- 0xdd,0xc8,0x57,0x19,0x21,0x88,0x88,0x42,0x74,0x23,0x31,0xd7,0x7f,0x59,0x81,0x09,
- 0x21,0x66,0x99,0x83,0xf7,0x47,0xf9,0x03,0xbf,0x12,0x50,0x71,0xbc,0x08,0x9d,0xfa,
- 0xa2,0x39,0x1c,0x11,0xe5,0x59,0x75,0x5e,0x7f,0x6a,0x8a,0x7f,0x3d,0xa0,0xad,0xbd,
- 0xb7,0x08,0x10,0x06,0x77,0xf2,0xb4,0x13,0xee,0x76,0x1e,0x82,0x43,0xf1,0xc4,0x78,
- 0x03,0x31,0x5a,0x7f,0x51,0xa0,0x9b,0xe2,0x5f,0x97,0xe0,0x12,0x99,0x0b,0x8f,0x71,
- 0xb3,0xfd,0x12,0xfc,0x0e,0xee,0xee,0xc3,0xf7,0xbd,0xec,0x40,0xe0,0x77,0x4e,0xbc,
- 0x44,0x2f,0xda,0x51,0xa3,0x1d,0x4b,0x89,0x7f,0x7d,0x01,0xaf,0xb3,0xd9,0xbe,0xc7,
- 0xa2,0x62,0x8f,0x76,0x94,0x55,0x45,0x33,0x23,0xe2,0x39,0x1e,0x91,0x8c,0xa2,0xbe,
- 0x73,0x85,0x06,0xd4,0x52,0x6a,0x6b,0x4a,0xc1,0x3f,0x67,0xa0,0x95,0xd9,0x7d,0xb4,
- 0x8b,0x38,0x68,0x1b,0x73,0x1e,0xa0,0x3d,0xea,0xa7,0x74,0xaf,0x03,0xf1,0xcf,0x17,
- 0x24,0x9f,0xb5,0xe4,0xd9,0x97,0xcb,0x6b,0x52,0xf0,0x4f,0x14,0x5a,0x89,0x43,0xcb,
- 0x50,0x89,0x93,0x3d,0x0e,0xce,0x3e,0x6a,0xd4,0xbf,0x23,0xfe,0x91,0xcb,0x88,0xee,
- 0x62,0x6a,0x3d,0xc8,0x8a,0x19,0xff,0x4c,0x79,0x96,0xb6,0x42,0x91,0x2f,0xb0,0xa5,
- 0xb5,0x18,0x61,0x73,0x89,0x5e,0x1f,0x44,0xd8,0xb3,0x57,0xe1,0x78,0x32,0x7d,0x86,
- 0xda,0xc2,0x96,0xd9,0xe5,0xf6,0x74,0x13,0xfe,0x99,0x72,0x06,0x0e,0xb1,0xf2,0xb1,
- 0xcc,0x2e,0xb1,0x88,0xbc,0x23,0xe1,0x31,0xd9,0x2d,0x8e,0xd4,0x7e,0xc6,0xe6,0x71,
- 0x0f,0xcf,0x19,0x1a,0x89,0xcc,0x9b,0xfd,0x8d,0x40,0x0a,0xfe,0xd9,0x07,0x57,0x36,
- 0xed,0xd2,0x27,0xf5,0x88,0x17,0x8d,0xfa,0x38,0x04,0x42,0xa3,0x70,0x95,0xcd,0xea,
- 0x5d,0x34,0x2a,0x2f,0x57,0x46,0xc9,0x7e,0x1d,0x05,0x91,0x39,0xfe,0xf5,0x2c,0x5c,
- 0x94,0xdc,0x91,0xb5,0x8d,0xe2,0x6f,0xfc,0xdc,0xbf,0x61,0x0d,0x17,0xcc,0x82,0x8b,
- 0x19,0x95,0xfa,0x92,0xed,0x72,0xbd,0x8a,0x5f,0xc4,0x6b,0xdd,0x62,0xaa,0xff,0x8a,
- 0xa4,0xa5,0xd3,0xee,0x41,0x7b,0x1f,0xa5,0xc4,0xa6,0xb6,0xf1,0x34,0xb0,0x1d,0x76,
- 0x27,0xe2,0x09,0xdc,0x0f,0x9f,0x93,0xe9,0xac,0xa5,0xdd,0xee,0xab,0x0b,0x12,0xb7,
- 0xc9,0xff,0x53,0x0b,0x1b,0x05,0xd5,0x15,0xa8,0xd8,0xd8,0x82,0xfb,0xa1,0x44,0xb7,
- 0x54,0x10,0xab,0xb4,0x83,0x39,0xb9,0xe3,0xe8,0x87,0xd0,0x01,0x85,0x21,0x4b,0x11,
- 0x59,0x69,0xae,0xff,0xf2,0xbe,0xdc,0x51,0x30,0x54,0xbf,0x32,0x7b,0x9a,0x91,0xfd,
- 0x6b,0x59,0x79,0xc3,0x34,0xd8,0xd5,0x53,0xcc,0x23,0x44,0xd7,0x01,0x22,0x84,0xf2,
- 0xef,0xfc,0x5d,0xb6,0xb9,0xfe,0x0b,0xe0,0x1c,0x75,0xf5,0x5b,0x5d,0xe2,0x36,0xf6,
- 0x2a,0x54,0x0c,0x67,0x4d,0x17,0x41,0xfa,0x2c,0x7c,0x1f,0x2f,0x7b,0xd7,0xe0,0x14,
- 0xec,0x24,0xce,0x12,0xf1,0x1e,0x73,0xfd,0xbb,0x74,0xa9,0xb0,0xaa,0xdf,0xb6,0x25,
- 0xe6,0x36,0xec,0x2f,0x6e,0xa8,0xb9,0x54,0x7b,0x55,0xc1,0x2b,0xdb,0x1f,0xdf,0x09,
- 0x7f,0x9a,0x3c,0x9f,0x66,0x06,0x53,0xf2,0x9f,0xfb,0x71,0xfd,0xdd,0x4c,0x2a,0x2f,
- 0x28,0x04,0xee,0x1f,0x43,0x45,0x70,0xc4,0xf0,0xbf,0x2d,0x09,0xe7,0x94,0x93,0x23,
- 0x50,0x1a,0xb5,0xea,0xdf,0x4b,0xad,0xff,0x5a,0x2d,0x6d,0xd1,0xeb,0xbc,0x84,0xd7,
- 0xcf,0xce,0xe2,0x89,0x40,0x27,0xa5,0xf5,0x88,0x7f,0xda,0xdc,0xfe,0x4d,0xb0,0x56,
- 0xc8,0xd7,0xe9,0xa0,0xc5,0x1c,0xff,0x7a,0x02,0xfe,0xd9,0x7f,0x4b,0x88,0x9e,0x58,
- 0x3d,0xcd,0x70,0xfb,0x64,0x20,0xec,0xc9,0x5d,0xb3,0x7a,0x7a,0x54,0x7e,0x94,0x58,
- 0x84,0x27,0x98,0xea,0xfb,0x41,0x7d,0x4a,0xfd,0xd7,0x11,0xd8,0xa8,0x3b,0xde,0xa2,
- 0x84,0x14,0x33,0xc3,0x9f,0x26,0x2c,0xeb,0xa5,0xcf,0x73,0xfb,0x2b,0xcc,0x81,0x41,
- 0x30,0xe4,0x45,0x20,0x71,0x4d,0xfe,0x8f,0x3e,0xbf,0xdb,0x1a,0xfd,0xda,0x3c,0xc2,
- 0xdd,0x3e,0x99,0x5d,0x05,0xc3,0x9e,0x83,0x21,0x1e,0x11,0xb3,0xcc,0x67,0xef,0x0a,
- 0xa5,0x2c,0xf3,0x8c,0x68,0x8e,0x7f,0x9d,0xb2,0x0f,0xcf,0x2e,0x83,0x7f,0x69,0x96,
- 0x4f,0x69,0x3c,0xec,0x95,0x15,0xe0,0x69,0x18,0x1e,0x03,0xf6,0x9c,0x92,0x02,0xac,
- 0x32,0x3d,0xab,0xf9,0xf1,0x6b,0xf2,0x7f,0x82,0x95,0xda,0xe2,0x0d,0x05,0x67,0xd8,
- 0x87,0x68,0xe6,0x5b,0x6f,0xe0,0xf5,0xef,0xd5,0x8f,0x6a,0x4b,0x36,0x8a,0x33,0x7c,
- 0x07,0x1a,0xdd,0x5e,0xdb,0x53,0x82,0x29,0xfe,0x05,0x77,0xa0,0xd1,0xe4,0x6c,0xa0,
- 0x4f,0x7f,0xe3,0x0c,0xe1,0xfe,0x07,0xda,0xee,0x41,0xfd,0x8b,0x88,0x48,0xde,0xdc,
- 0x8a,0xfb,0x67,0xb0,0xc3,0x2b,0x6f,0x16,0x53,0xf2,0x7f,0x14,0x9c,0x56,0xeb,0x08,
- 0xba,0x87,0xf0,0x35,0x9d,0x5a,0xde,0x20,0xa9,0x84,0xdd,0xa2,0x51,0xaf,0x34,0x24,
- 0xb4,0x50,0x3b,0xf7,0xff,0xac,0x36,0xcb,0x1f,0xb4,0x47,0x4a,0xb8,0x90,0x79,0xcc,
- 0x70,0x04,0xe5,0x9d,0x20,0xb9,0xb0,0x9d,0xfb,0x7f,0x72,0xc9,0x2a,0x85,0x3b,0x82,
- 0x6e,0x9c,0x63,0xc6,0x3f,0x99,0x3e,0x1a,0x11,0x78,0xb4,0x0b,0x85,0xd8,0xb0,0x11,
- 0xf6,0x92,0x5d,0x1c,0x11,0xc5,0xf0,0x5e,0xc4,0x40,0xbc,0xf2,0x3a,0x53,0xfc,0xeb,
- 0x3c,0xfd,0x5c,0x58,0xc0,0x9d,0x3c,0x9f,0x1b,0xfe,0x9f,0x59,0x5c,0xad,0xff,0x94,
- 0x87,0xe9,0x37,0x89,0xff,0xcd,0xa8,0xff,0xc2,0x9f,0x66,0x5c,0x93,0xff,0x53,0xaa,
- 0xdd,0x75,0xac,0xe0,0x7c,0xd7,0x01,0x7c,0x11,0x3a,0x58,0x73,0x09,0xa7,0xb9,0x35,
- 0xdb,0xef,0xc5,0x39,0xda,0x61,0xab,0xdb,0xb3,0xe2,0x4d,0x30,0xe7,0x3f,0x0f,0x43,
- 0x0f,0x8a,0x59,0x8a,0xda,0x9c,0x75,0x21,0x0c,0xa3,0xcc,0x1e,0x85,0x1e,0xbb,0x1d,
- 0x6c,0xab,0xc9,0x16,0x0f,0x47,0x44,0x74,0xd5,0x3d,0x59,0xe6,0xfc,0x9f,0x8c,0xdd,
- 0x92,0xea,0x93,0x27,0x93,0xe6,0x50,0x23,0xac,0xa8,0x2b,0xcf,0x23,0xfd,0x12,0x5e,
- 0xc1,0xf7,0xb5,0x4b,0x6c,0x0b,0x55,0x35,0x9a,0x6d,0x49,0x89,0x7f,0x29,0xbb,0x05,
- 0x7b,0x5d,0x2b,0x8a,0x1d,0xc4,0x4b,0x3c,0x11,0xc8,0xf3,0x81,0xb6,0x9b,0xd9,0x35,
- 0x94,0x3f,0xdb,0xb4,0xe7,0x61,0x99,0x97,0x06,0x67,0x98,0xe2,0x5f,0x53,0xfe,0xac,
- 0x9d,0x6d,0x74,0x35,0xcc,0xda,0x2c,0x3e,0xc7,0xb3,0xd9,0x79,0xfe,0xf3,0x07,0xd2,
- 0x59,0xe8,0xd6,0x96,0x04,0xe5,0xe9,0x8e,0x0f,0xa3,0x6e,0x6d,0xf1,0x53,0x93,0x1c,
- 0x66,0xfc,0x83,0x68,0x67,0xbf,0x76,0xd7,0xa6,0x9a,0x21,0x3f,0xcf,0x5e,0x58,0x82,
- 0x68,0xd0,0xc8,0x07,0xbb,0x4e,0x11,0x5f,0x87,0xb7,0x42,0xfb,0x86,0x6d,0x93,0x53,
- 0xf2,0x7f,0xb6,0x48,0x91,0x8c,0xca,0xfc,0xb5,0xcd,0x62,0xbe,0x91,0x6d,0x6e,0xe3,
- 0xfb,0x6d,0x2c,0xc8,0x97,0xdd,0x88,0x48,0x56,0xce,0x41,0xf9,0x6c,0x31,0xfb,0x7f,
- 0x94,0x75,0x74,0x16,0x0b,0x9c,0x22,0xe5,0xd0,0x2a,0x94,0xb0,0xef,0x9e,0xb6,0x0f,
- 0xab,0xfb,0x63,0xf1,0xaf,0xdb,0xb4,0xbb,0xbf,0x59,0xc2,0xe4,0x68,0xba,0xd9,0xff,
- 0x53,0xab,0x6d,0x00,0x67,0x14,0x66,0x93,0x19,0x4a,0x93,0x80,0x62,0xca,0x81,0x68,
- 0xd9,0x90,0xcf,0x53,0xc9,0x37,0xd2,0x9e,0x6c,0x76,0x46,0x17,0xe5,0xa6,0xf8,0x7f,
- 0xca,0xa4,0x4d,0xc2,0x2c,0xaf,0xa3,0x3c,0x6b,0x32,0x1e,0xcd,0xe2,0xde,0x85,0xde,
- 0xec,0x93,0xc0,0xcb,0xc0,0xe5,0xe5,0xe4,0x3f,0xd3,0x55,0x5a,0x71,0xa3,0xec,0x25,
- 0xf5,0xa6,0xfc,0xe7,0xeb,0xf0,0xd8,0x2e,0x88,0x5a,0x97,0x8a,0x65,0x06,0xec,0x91,
- 0x57,0x8a,0xef,0x4a,0x57,0x79,0xda,0xf3,0x09,0xf9,0x61,0x72,0xbc,0x69,0xc1,0x69,
- 0x1c,0x14,0x99,0xf1,0x4f,0xfa,0x47,0x78,0x6c,0x51,0x08,0x0f,0x73,0xfd,0xde,0x67,
- 0xa8,0xb9,0xdd,0x3c,0x1f,0x26,0x5a,0xd0,0xc3,0x5d,0xcd,0x75,0x4b,0x06,0x4d,0xf5,
- 0x5f,0x90,0xf6,0x07,0x38,0xd1,0x5c,0x31,0x64,0xfd,0x50,0x3c,0x03,0x47,0x83,0x95,
- 0xa7,0x9d,0x46,0xfd,0x72,0x33,0xda,0xef,0x27,0xc4,0x32,0x76,0x95,0x55,0xf9,0xac,
- 0x1f,0x0a,0x66,0xfc,0xb3,0xb9,0xa3,0xf9,0x5c,0xf1,0x30,0xfd,0x0e,0x39,0x16,0xf9,
- 0x23,0x38,0x87,0x2c,0x5e,0x5e,0xff,0x25,0xe4,0xf7,0xcb,0x77,0x92,0x5c,0xf5,0x25,
- 0xa1,0x18,0x32,0x7f,0x90,0x6d,0xc6,0x3f,0x3b,0xa5,0xd5,0x6e,0x14,0x53,0x5a,0xfa,
- 0xf1,0xc6,0x35,0xf0,0xc0,0x6b,0x34,0x16,0xe6,0x43,0xfc,0x73,0x0f,0x51,0x9e,0x7c,
- 0x59,0x29,0x5e,0x4d,0x3d,0x59,0x60,0xc2,0x3f,0xb5,0xe0,0xf7,0x38,0x75,0x9a,0x99,
- 0x1e,0x0d,0xa2,0xbe,0xe3,0x34,0x02,0x87,0xd5,0x1d,0x5c,0xfe,0xa8,0xc4,0xb2,0xa1,
- 0xdb,0xe5,0x74,0x65,0x38,0x08,0x4d,0xec,0xcf,0x6d,0x53,0x56,0x41,0x9f,0xaf,0xc2,
- 0x6f,0x0d,0xda,0x3f,0x60,0x87,0x50,0x1e,0x5a,0x7b,0x0c,0x7f,0x17,0xda,0x8f,0xc1,
- 0x82,0xaf,0x4b,0xe3,0xac,0xf2,0xbc,0xb5,0xbd,0xa0,0xc8,0x84,0x7f,0x3e,0x81,0x61,
- 0x5a,0xd9,0x37,0x2b,0x38,0x29,0x1a,0xcb,0xff,0x09,0x8a,0x23,0xda,0x38,0x33,0xea,
- 0x91,0x3f,0xc9,0xdd,0x5d,0x9d,0xc5,0x6c,0xbf,0xd8,0x6a,0xce,0xff,0x19,0x55,0x3f,
- 0x15,0x4a,0xf5,0x80,0x17,0x2f,0x1a,0xfa,0x6e,0x74,0x2b,0x9e,0x2f,0xf8,0xb9,0x6e,
- 0x53,0x44,0x17,0x9c,0x97,0x4a,0xf9,0x7f,0xc8,0x84,0x7f,0xe0,0x7b,0x52,0xab,0xd7,
- 0xae,0xd3,0xcd,0x4d,0x45,0xc0,0xe3,0x17,0x8b,0xf6,0xf9,0x71,0xfd,0x1b,0x1f,0xd4,
- 0xe5,0xcd,0xd9,0x05,0xd0,0xb3,0x05,0x0f,0xc2,0xda,0x26,0x53,0xfc,0x4b,0x28,0xf4,
- 0x75,0xc1,0x32,0xee,0xfd,0x78,0x96,0xfb,0x7f,0xb8,0xbf,0x7d,0x44,0xdb,0xdb,0x68,
- 0x0c,0xfe,0x21,0xe3,0x45,0x3c,0x38,0x37,0x76,0xa5,0x9b,0xf1,0x8f,0x13,0x98,0xba,
- 0x6c,0x78,0xa1,0xe2,0xaf,0x03,0x5c,0x9f,0x08,0xa2,0x41,0x84,0xd9,0x5c,0xdf,0x81,
- 0x1f,0x84,0x30,0x84,0xe0,0x46,0x65,0xb5,0x3f,0xc1,0xbf,0xc1,0xfd,0x3f,0x1f,0x11,
- 0xb7,0x9e,0xe5,0x47,0xb3,0xeb,0x63,0x58,0x30,0xc0,0xdf,0x17,0xc6,0xef,0x29,0xd1,
- 0x97,0xf8,0xe5,0x42,0xf8,0x90,0xe7,0x57,0xac,0x31,0xe3,0x9f,0x9b,0x46,0xe1,0x4a,
- 0x35,0xaa,0x2d,0x26,0xec,0xe6,0xfa,0xeb,0x04,0xee,0x96,0x4b,0xf4,0xbc,0x5a,0xc5,
- 0x33,0xa8,0xb9,0xff,0x67,0x01,0x2c,0xf1,0x8b,0x0e,0x13,0xfe,0xb9,0x42,0x0e,0xc3,
- 0xdc,0xa8,0x6d,0x18,0x61,0xd2,0x5f,0xf8,0x6e,0x19,0x45,0xf9,0xc3,0x81,0x90,0x6d,
- 0x0c,0x81,0xd0,0x49,0x4e,0x0d,0x74,0x02,0x7f,0x4a,0xe2,0x9f,0x91,0x50,0x0b,0x8a,
- 0x1c,0xb9,0x0b,0x8d,0xb0,0x36,0x56,0xe2,0x0b,0xf4,0x20,0xcc,0x42,0x45,0xcf,0x57,
- 0x20,0x8a,0x50,0x10,0xa1,0x72,0x30,0x25,0xff,0x79,0x80,0xf9,0xfd,0x2a,0x8f,0x06,
- 0xd6,0xa1,0xd9,0xef,0xd4,0x1c,0xdc,0xac,0xd8,0x4a,0x0c,0x3c,0xac,0x43,0x90,0xcf,
- 0x57,0x88,0xc7,0x14,0xff,0x42,0xd8,0xc9,0x66,0xe8,0x72,0x07,0x71,0x6a,0xdc,0xdb,
- 0x1c,0x08,0xc3,0x08,0x69,0x83,0x07,0x7b,0x51,0x7f,0x45,0x0d,0x8b,0x0f,0xef,0x9f,
- 0xcc,0xff,0xd1,0x26,0xc7,0xb3,0x91,0x9d,0xe2,0xf7,0x70,0x7d,0x2a,0xfa,0x79,0x7e,
- 0x94,0xf4,0xb1,0x60,0x04,0x46,0xd1,0x34,0x63,0xdd,0xb5,0x4e,0x41,0xf4,0xa6,0xe0,
- 0x1f,0x1e,0xed,0xb2,0xe9,0x1c,0xf6,0x00,0xbe,0x26,0xcf,0x4f,0x8e,0xe7,0x47,0x7d,
- 0xa1,0x5d,0x0e,0x56,0xf9,0x6c,0x91,0xd4,0xfa,0x77,0xe1,0x9c,0x8a,0xbb,0x6b,0x6b,
- 0xec,0x3c,0x9e,0xb6,0x85,0x73,0xac,0x4a,0x3c,0x1f,0xef,0x8c,0x8a,0x1b,0xcf,0x67,
- 0x6d,0x6c,0x72,0xa5,0xf8,0x7f,0xf6,0xd6,0x72,0xf4,0x2b,0x2e,0xd1,0x70,0xff,0x0c,
- 0x66,0x8e,0xa2,0xa2,0x8f,0xe7,0x6f,0x9f,0x81,0xdd,0xac,0x64,0x39,0x0d,0xa4,0xe0,
- 0x9f,0x15,0xb0,0x43,0x73,0xf6,0xca,0x4e,0xd2,0x17,0x5f,0x16,0xcb,0xda,0x78,0xe2,
- 0x0a,0xf9,0x10,0x5e,0x28,0x2c,0x09,0x3a,0x5c,0x96,0xd4,0xfa,0xf7,0x5d,0x41,0x5e,
- 0xfd,0x4d,0xbc,0x1c,0x0f,0x0c,0x5d,0xcf,0xf9,0x70,0x76,0xc5,0xe2,0x41,0x6f,0x0b,
- 0x2f,0x37,0x17,0x87,0xe8,0xca,0xf4,0x3c,0x93,0xff,0x87,0xa7,0xc1,0x54,0xbc,0x66,
- 0x2b,0x14,0x7b,0x7d,0xef,0xf3,0xea,0x51,0x97,0xb8,0x16,0x3e,0x0b,0x97,0x23,0xfe,
- 0x29,0x88,0xb0,0x73,0xac,0xa2,0x45,0x0a,0x8b,0xd9,0x66,0xfc,0x03,0x57,0x85,0xaa,
- 0x5e,0x9b,0x2a,0x0e,0xe2,0xb2,0x2c,0xa8,0xc6,0xd7,0xfc,0x29,0x5c,0x24,0x86,0x7f,
- 0x6c,0x0c,0x2e,0xb8,0xaa,0x98,0x6d,0xf7,0x35,0xfe,0x1f,0x9e,0x16,0x85,0xf3,0x83,
- 0xf8,0x21,0x2a,0xb4,0x8c,0x1e,0xb9,0x78,0xc2,0x5f,0x1d,0xfb,0x34,0x0f,0x74,0x5d,
- 0x53,0xff,0xbe,0x4b,0xda,0xc0,0x93,0x7c,0x14,0xfa,0xb7,0x50,0xcc,0xf1,0xcf,0xaf,
- 0xd9,0x2e,0xb4,0x1f,0x33,0x78,0x21,0xea,0x1a,0x1e,0x58,0x8f,0xa6,0xe4,0x3f,0x4f,
- 0x83,0x1d,0xcd,0xf9,0xd1,0x45,0xf5,0xe9,0x1b,0x11,0xef,0x4d,0x5f,0x96,0x71,0x5b,
- 0x36,0x4f,0x04,0x9a,0x7e,0xaa,0x8d,0x27,0x3e,0xad,0x61,0x33,0xa3,0x19,0xa9,0xf8,
- 0x87,0x9f,0x26,0x95,0x8b,0x71,0x50,0xf0,0x7c,0x45,0x39,0xde,0x36,0xec,0xaf,0xeb,
- 0x5d,0xe4,0x93,0xb5,0x4d,0x50,0xaf,0xd3,0x42,0xbf,0x19,0xff,0x74,0xc1,0x15,0x2b,
- 0x1e,0x22,0x9f,0xd8,0x0e,0x07,0xa1,0x32,0x14,0xcf,0xff,0xa9,0x6c,0xb4,0x85,0xc4,
- 0x0f,0xc9,0x41,0x6d,0x4f,0x10,0xaf,0x98,0xf1,0x4f,0x14,0x46,0x11,0x61,0xd8,0x9a,
- 0x0a,0x0c,0xfe,0x1f,0xc5,0xc6,0x6a,0x26,0xea,0xdf,0xc5,0xa8,0x34,0x46,0x67,0x10,
- 0xdc,0x5a,0xd7,0xf8,0x7f,0x78,0xda,0x73,0x7b,0xac,0xda,0xcb,0x8b,0xfa,0xb1,0xdf,
- 0x50,0x94,0xdc,0x0d,0xa2,0xb5,0xb0,0x79,0xf7,0x5f,0xc3,0xff,0xb3,0x1c,0x76,0xfb,
- 0xec,0xd5,0xf2,0x66,0x52,0xa8,0xbe,0x85,0xf8,0xc4,0xc2,0xdd,0x0e,0xcf,0xc7,0xfc,
- 0x0f,0x1f,0x40,0x8b,0xd7,0xde,0x40,0x37,0x9b,0xeb,0xbf,0x04,0x5e,0x1d,0x66,0xd7,
- 0x16,0x6d,0x68,0x2d,0x54,0x9e,0xc4,0x69,0x0b,0x83,0x9e,0x21,0xda,0x02,0x59,0x31,
- 0xff,0xcf,0x33,0x30,0xb3,0x96,0x9e,0x4c,0xf1,0xff,0xa4,0xc5,0xb2,0x7f,0x79,0x7c,
- 0x67,0x03,0xc7,0xdb,0xdc,0x0d,0xb2,0x45,0xe3,0xf9,0xcf,0xd9,0x7f,0x84,0x67,0xf4,
- 0xfc,0x06,0x7a,0x6f,0x4a,0xfd,0x97,0x6f,0x22,0xdb,0x96,0xe7,0x9f,0x4c,0x8b,0x85,
- 0xbd,0x62,0xfe,0x07,0x51,0xc7,0x07,0x29,0x07,0xab,0x6e,0xf6,0xff,0xdc,0x34,0x84,
- 0xe8,0xc5,0xa8,0x76,0xff,0x1c,0x7e,0xcc,0xd3,0xea,0x12,0x81,0xb0,0x89,0xc2,0xff,
- 0x7f,0x4c,0xe1,0xff,0x49,0x1b,0x82,0xc3,0xd4,0x08,0x93,0xcd,0x81,0x4f,0xa4,0x05,
- 0x88,0x1f,0x5e,0x1d,0x92,0xc6,0x73,0x8d,0xf9,0xe7,0xb5,0x07,0xa4,0x52,0x2d,0x73,
- 0x30,0x85,0xff,0x27,0x1a,0x38,0xa1,0x95,0x80,0x1c,0x12,0x7f,0x00,0x11,0x52,0x02,
- 0x99,0xcd,0xd9,0xa7,0xb4,0x1e,0x04,0x42,0x32,0x43,0x79,0xd2,0xa3,0xda,0x29,0xf5,
- 0x5b,0x52,0xf0,0x8f,0xda,0x18,0xab,0x76,0x4f,0x83,0x2d,0x46,0x9a,0xb7,0xa7,0x3f,
- 0xb4,0x5d,0x75,0xc6,0xe2,0x5f,0x5b,0x2c,0x3e,0x4f,0x06,0xaf,0x7f,0x4f,0xe2,0x9f,
- 0xe6,0xdc,0x5f,0xf9,0x8c,0xd5,0x5e,0xae,0xb5,0x90,0x12,0x6d,0x51,0x10,0x92,0xf9,
- 0xe4,0x94,0x67,0x04,0xf1,0x7c,0x72,0x73,0xfd,0x17,0x1c,0x90,0x78,0x1a,0x8f,0xf8,
- 0x75,0x94,0xc6,0x25,0x3e,0x5b,0xa2,0xfe,0x9d,0x0f,0x78,0xc6,0x3b,0xda,0x0b,0xd7,
- 0xe0,0x1f,0xce,0xff,0xb3,0xa1,0xe9,0x75,0x15,0xf1,0xf0,0xc3,0x19,0x89,0xfa,0xf7,
- 0x98,0xff,0x87,0x0f,0x9a,0x52,0xfd,0x3f,0x63,0x3e,0x23,0xc8,0x98,0x0f,0x0e,0x5c,
- 0xf6,0x4c,0x5c,0x7f,0x25,0x02,0xc6,0x95,0xa8,0xce,0x03,0xaf,0x68,0x11,0x9b,0xf3,
- 0x9f,0x1d,0xb0,0x5f,0x42,0xb4,0x33,0xec,0x2f,0x87,0x3d,0x50,0x1c,0xe6,0xf9,0x6a,
- 0x84,0x07,0xc2,0x16,0x85,0xc8,0x05,0x58,0x17,0x28,0x68,0x76,0x0c,0xa7,0xc4,0xbf,
- 0x38,0xff,0x46,0xa1,0xbe,0xa8,0x70,0x61,0x06,0x97,0xcf,0xb5,0x8d,0xae,0x74,0x1e,
- 0x98,0x30,0xea,0x53,0x0e,0xc3,0x56,0xb5,0xe4,0x38,0xdd,0x46,0xcc,0xf9,0xcf,0x53,
- 0xb5,0x5d,0x2c,0x9f,0x47,0xab,0xbd,0x3c,0x30,0x04,0x79,0x0d,0xe4,0x5d,0x6d,0x8d,
- 0xc2,0x03,0xd9,0xe4,0x0f,0xb0,0x4a,0x9a,0xae,0x21,0x42,0x70,0x98,0xf0,0xcf,0xb4,
- 0xd0,0x97,0xb1,0x6c,0xe7,0x69,0xf0,0x67,0xb6,0xc0,0x97,0xb9,0x52,0xbc,0xa2,0xbe,
- 0x11,0xbb,0xf2,0x36,0xf9,0x94,0x55,0x85,0x50,0xbf,0xa4,0xe4,0x3f,0xb3,0xcf,0x24,
- 0x43,0x7a,0x84,0xb8,0x18,0xd1,0x0c,0x31,0x72,0x95,0xc5,0xe4,0x49,0xee,0x05,0x61,
- 0x1e,0x5f,0x28,0x73,0xfd,0xd7,0xa7,0xda,0x55,0x36,0x97,0xa7,0x15,0xed,0x21,0x6f,
- 0xa0,0x21,0x5f,0x1c,0xcb,0x7f,0xae,0x8a,0xe5,0x3f,0xbf,0x87,0x86,0xfc,0x92,0x71,
- 0xd1,0x9c,0xff,0xfc,0x74,0xf3,0xae,0xc9,0x88,0x5e,0x7e,0xda,0xad,0xa0,0xfd,0x75,
- 0xab,0x27,0xe3,0x7f,0x88,0x9b,0x61,0x07,0x67,0x04,0x7a,0x94,0x9c,0x00,0x7f,0xf0,
- 0xb6,0x88,0xbc,0x94,0xa4,0xe4,0x3f,0x33,0x03,0xed,0x3c,0x4c,0xda,0x79,0x21,0xbc,
- 0x46,0x63,0xf9,0x4e,0x0f,0xf0,0x2b,0x27,0x10,0x01,0xce,0xd4,0x70,0x60,0xf6,0xff,
- 0xf0,0x6c,0x1f,0xe0,0xd5,0xdf,0x80,0xf6,0x57,0xa1,0x4f,0xe0,0xf2,0x67,0x6f,0xcc,
- 0xff,0x33,0x0c,0xad,0x9c,0x48,0x61,0xaa,0xdf,0x9c,0xff,0xbc,0x0f,0xbf,0x7e,0x36,
- 0x2f,0xf2,0x62,0x9c,0xe6,0x48,0x43,0xfd,0xc5,0xf9,0x58,0xf8,0xfb,0x7e,0x6b,0x44,
- 0x7a,0x87,0x2b,0x9a,0xee,0x94,0x7c,0xa4,0x11,0x3a,0x5e,0xcd,0x2f,0x72,0xb7,0x0f,
- 0x4f,0x1b,0x4b,0x16,0xc2,0xe3,0x41,0x1b,0xd3,0x2a,0x19,0xae,0x8f,0xb9,0xfe,0xeb,
- 0x12,0x7c,0x49,0x11,0xe4,0x8c,0xd9,0x54,0xae,0xe6,0x34,0x2b,0x2f,0x02,0xe7,0xfe,
- 0x9f,0xac,0x51,0x3c,0x5f,0x87,0x95,0x52,0xc5,0x3a,0x96,0xea,0xff,0x51,0xf6,0xf6,
- 0xdb,0x75,0x79,0x81,0xc5,0xce,0xde,0xc1,0xfd,0xe0,0x30,0xf2,0x9f,0x8d,0xfa,0x1d,
- 0xf2,0x81,0x1a,0xa8,0xb3,0x4f,0xa6,0xed,0xc4,0xe4,0xff,0x11,0x9c,0x88,0x8e,0xec,
- 0x5c,0x3b,0xdb,0xb9,0x9a,0xf3,0x5a,0xc2,0xd9,0x03,0xb4,0x2d,0x96,0x38,0x1d,0x85,
- 0x16,0xb0,0x07,0x69,0xb7,0x3f,0xd5,0xff,0xb3,0x5d,0xf0,0xf5,0xca,0x2e,0xbf,0x4a,
- 0x1e,0x47,0x1d,0x6f,0x71,0xdb,0x07,0x94,0xad,0x79,0xb8,0x03,0xdd,0x44,0x27,0x2c,
- 0x23,0xc4,0xae,0xf1,0xff,0xfc,0x24,0xc6,0x06,0xd0,0x4d,0x54,0xe3,0x35,0xb3,0xc2,
- 0x3c,0x7f,0x5b,0x75,0xf3,0x81,0x0e,0x07,0x34,0x37,0x58,0xbb,0x9b,0xcc,0xf8,0xe7,
- 0x52,0xed,0x97,0x1c,0xe6,0x85,0x63,0xfa,0x5d,0x2b,0xde,0xc9,0xf3,0x7b,0x39,0xfe,
- 0x39,0x8f,0x57,0xc6,0x1c,0x55,0x80,0xf2,0xc7,0xe4,0xff,0x99,0x72,0x05,0x61,0xf9,
- 0xdc,0x83,0x59,0x67,0xc5,0x8a,0xf0,0x49,0xa8,0x2a,0xb4,0x1e,0x10,0xdd,0xd2,0x61,
- 0x8e,0x9f,0x7b,0x6a,0xce,0xc1,0x97,0x6c,0xae,0x8a,0x78,0xc0,0xec,0xff,0xf9,0x94,
- 0xb4,0xb1,0x82,0xb3,0xf4,0x2c,0x59,0x20,0x05,0x06,0x9d,0x94,0x6e,0xc4,0x07,0x6b,
- 0x34,0xe2,0x5f,0xf6,0xd3,0xbc,0x50,0x4e,0x45,0xe0,0x67,0xf6,0xff,0x8c,0xd0,0x17,
- 0x49,0x21,0x8f,0x87,0xe2,0x41,0x33,0xc0,0x1f,0x81,0xae,0x46,0x87,0x11,0x8f,0x78,
- 0x3d,0x63,0x2f,0x14,0x82,0x0c,0xc4,0x1c,0xff,0xfa,0xad,0xf4,0x22,0x2c,0xc3,0xf9,
- 0xca,0x0a,0x78,0x9e,0xa2,0x7d,0x17,0xc6,0xfb,0xb7,0x18,0xf1,0xc4,0xec,0x68,0xf5,
- 0x5e,0xb0,0xe7,0xa3,0xa0,0x33,0xf9,0x7f,0xd2,0xfe,0xa2,0xbe,0x8a,0x5f,0x67,0x71,
- 0x98,0xac,0xc8,0xc5,0xaf,0x5f,0xeb,0x64,0x93,0x66,0x90,0x88,0x62,0xc4,0x5f,0x3e,
- 0x82,0xf1,0xf4,0xb2,0x3a,0xdb,0xf3,0xd7,0xf8,0x7f,0xde,0x0d,0x2d,0xd0,0x8b,0x47,
- 0x17,0xe1,0x00,0x66,0xf9,0x6c,0x83,0xb7,0x7c,0xa1,0x5d,0x62,0x06,0x11,0xd0,0x18,
- 0xbc,0x17,0x42,0x89,0x3d,0x66,0xae,0xff,0x82,0x90,0xf6,0xb1,0x64,0xac,0xf6,0x00,
- 0x6a,0x43,0x44,0x3b,0x21,0x71,0x06,0xd7,0x08,0xb1,0x7c,0xfb,0x0f,0xa1,0x8c,0x5d,
- 0x93,0xff,0x63,0x85,0x36,0xbd,0xe0,0x04,0x8c,0xda,0x2b,0x78,0xfc,0xf4,0x11,0xda,
- 0xd3,0xfa,0x75,0xad,0xa7,0xc1,0x88,0x87,0x7e,0x08,0x3b,0xa6,0x76,0xf8,0xe5,0xb0,
- 0xdf,0x1c,0xff,0xba,0xdb,0x55,0xc0,0xd4,0x13,0x16,0x0e,0x7b,0xd0,0x30,0xe7,0x81,
- 0x45,0x07,0x27,0x46,0x30,0xf0,0xa1,0xba,0x15,0x0a,0x43,0x87,0xe8,0x75,0x63,0x29,
- 0xfe,0x9f,0xf5,0x83,0xea,0x70,0xdd,0x4a,0xfb,0x3a,0xd6,0xcc,0x10,0xed,0x9c,0x20,
- 0x37,0x70,0x89,0xc4,0xeb,0xa1,0xfe,0xa0,0xbd,0xcc,0xf2,0x43,0xf2,0xdf,0xa5,0x9f,
- 0x30,0xf3,0xff,0xc0,0xfb,0x81,0xf0,0x70,0x56,0x58,0x5e,0x07,0xaf,0xaa,0x15,0x9d,
- 0xd6,0x7c,0x91,0x6a,0x9f,0x81,0x4b,0xff,0xfb,0xf9,0x35,0x03,0xf0,0x3e,0xcc,0xd1,
- 0x6c,0xf9,0x29,0xf1,0xaf,0xcd,0x70,0x59,0x99,0xdf,0x6f,0x1b,0x2d,0x58,0x80,0x66,
- 0x02,0xc2,0x80,0x87,0xc4,0x31,0x9e,0x61,0x68,0xc4,0x07,0xd5,0xbd,0xbc,0xb4,0xe7,
- 0x54,0x4e,0x2a,0xfe,0xf9,0xbd,0xdf,0x75,0x6c,0x6d,0x58,0x7c,0x40,0x7f,0x12,0xf7,
- 0xe7,0xcd,0x8c,0x13,0x31,0x19,0xe7,0x31,0xe7,0xfd,0x19,0x87,0xa0,0x2c,0x72,0xf3,
- 0xda,0xa6,0x6b,0xfc,0x3f,0x90,0x7f,0xc2,0x31,0xc7,0x3f,0x15,0x9e,0x45,0xfc,0x93,
- 0x85,0xf6,0x17,0x5e,0x31,0xe4,0xe7,0x71,0x58,0x23,0xbd,0xa4,0xa3,0xfd,0x68,0xc6,
- 0x3f,0xfb,0xe1,0x9f,0xd9,0x96,0x61,0xcb,0x4a,0x72,0x77,0x23,0x87,0x79,0x87,0xea,
- 0x11,0xf6,0xac,0x66,0x46,0xda,0xcf,0x15,0x8e,0x88,0x46,0xe4,0x8b,0xd9,0x29,0xf8,
- 0x47,0x6a,0xd2,0x54,0x7d,0x21,0xdf,0x6f,0x3c,0xfe,0x6e,0x84,0x11,0xfd,0x71,0xff,
- 0xb3,0xd6,0xa4,0x17,0x9e,0x90,0xcb,0xaf,0x33,0xe3,0x9f,0x1e,0x78,0x57,0x73,0x31,
- 0x6b,0xa8,0xa6,0x1e,0xde,0x55,0x2b,0x83,0x71,0xd8,0x63,0xe4,0xff,0x7c,0x04,0xaf,
- 0x9f,0x78,0xb9,0xcb,0xf6,0x82,0x9c,0xe2,0xff,0x61,0x63,0xae,0x4a,0x25,0x2d,0x56,
- 0x0f,0x5e,0x49,0xf0,0x7d,0xa3,0xea,0x25,0x1a,0xf3,0xff,0xc0,0x58,0xad,0x61,0xa1,
- 0xa7,0xe0,0x1f,0x72,0x80,0x55,0x36,0x58,0x15,0xb9,0xd9,0x72,0x00,0xa6,0x69,0x8b,
- 0x83,0xc2,0x19,0x76,0x40,0x99,0x20,0xba,0xd1,0x63,0xf2,0xdc,0x84,0x7f,0x6e,0x57,
- 0x5a,0x58,0x49,0xfd,0x44,0xfe,0x49,0x43,0x71,0xbb,0xfd,0xcf,0xa4,0x45,0x7f,0x19,
- 0x15,0x31,0xf9,0x24,0xf0,0xa1,0x6e,0xd7,0xdb,0x7a,0x4c,0xfc,0x63,0x79,0x69,0x85,
- 0xa4,0x65,0xf2,0x0c,0xcd,0xc1,0x69,0x7f,0x5a,0x24,0x67,0x1d,0xee,0x87,0xe3,0xb0,
- 0x0a,0x96,0xf1,0x0c,0xde,0x33,0x9c,0xb8,0xa6,0xfa,0xd0,0x46,0x4f,0x6a,0xfc,0x8b,
- 0xe3,0x81,0x58,0xfe,0x0f,0x14,0x37,0x5c,0x7f,0x2f,0xf9,0x23,0xac,0xd2,0x0b,0x0d,
- 0x60,0xc0,0x13,0xcf,0x7c,0x6d,0xae,0x14,0xfc,0x53,0x0f,0xbc,0xcc,0xca,0xca,0x08,
- 0x0f,0xc4,0x54,0x02,0x45,0xd8,0x03,0x03,0x88,0x88,0x26,0xb1,0x1c,0x9e,0x88,0xbb,
- 0xe7,0x9a,0xf8,0xd7,0x4d,0xc7,0xc9,0x65,0x14,0x83,0xb6,0x4d,0x05,0x1f,0x50,0x0e,
- 0x84,0xe2,0x7c,0x38,0xc6,0x6b,0xf6,0x53,0xce,0x08,0xb4,0x5e,0x29,0x30,0xe3,0x9f,
- 0x93,0xf0,0x27,0x61,0xee,0x9d,0xce,0xc7,0xc5,0xe5,0x08,0x0b,0x67,0x79,0xad,0x6f,
- 0x22,0x70,0x3a,0xac,0x95,0x6a,0x03,0xfc,0x1f,0x5e,0x36,0x1c,0x29,0x62,0x6a,0xfd,
- 0x57,0x80,0x27,0x0d,0xae,0x11,0xf3,0x23,0x5d,0x50,0x82,0x68,0x07,0xc5,0x2c,0xe3,
- 0x66,0x11,0x5b,0x16,0xcd,0xeb,0x21,0x3c,0x22,0x46,0x8e,0x98,0xf8,0xc7,0x06,0x60,
- 0xbb,0xa4,0x7e,0x13,0x85,0x6a,0x6d,0x7e,0x23,0xc2,0x3c,0x07,0xc2,0x1e,0x7f,0x93,
- 0x6a,0xa4,0x3d,0x0f,0xa0,0x8d,0xc8,0x13,0x81,0x3c,0xa6,0xf8,0xd7,0xe4,0x67,0xc8,
- 0xf3,0xbe,0x8e,0x58,0xf6,0xf8,0xf3,0x3c,0x91,0x23,0x48,0xfa,0xb9,0xfc,0xe1,0x19,
- 0x41,0x1f,0xc0,0x6e,0xcd,0xae,0x1f,0x4a,0x89,0x7f,0x4d,0x79,0x43,0x1b,0xd7,0xdd,
- 0xda,0xda,0xa0,0xb8,0x3c,0xef,0x40,0x61,0xa5,0x66,0x6d,0xe7,0x81,0x4e,0x7c,0x6c,
- 0x67,0x50,0xfc,0xa0,0xf6,0xac,0xd6,0x5d,0x67,0x6b,0x6f,0x4a,0xa9,0xff,0x22,0x6f,
- 0x19,0xfc,0x87,0xf2,0x10,0xfc,0x58,0xe7,0xf9,0x3f,0xa9,0xf8,0x67,0xff,0x42,0xbc,
- 0x72,0x4d,0xfe,0xb3,0x54,0x4e,0xb2,0x40,0xd4,0x29,0xe2,0x6d,0x62,0x35,0xf2,0x7f,
- 0x54,0x77,0x7c,0xbf,0x79,0x8d,0x81,0x39,0xfe,0x75,0x1b,0xa4,0x6b,0x05,0x41,0x1a,
- 0xca,0xe6,0x34,0x56,0x36,0x1c,0x90,0xdb,0x60,0x9d,0xb6,0x85,0xc9,0xd1,0xec,0x61,
- 0xba,0xbf,0xb9,0x23,0x2c,0x87,0x3c,0x29,0xf1,0x2f,0xd2,0x74,0x50,0x0d,0xc7,0x68,
- 0xb2,0x24,0x2b,0x2f,0x7b,0xb7,0xb1,0x16,0x50,0x99,0xac,0x1a,0xf1,0xaf,0xd0,0xa8,
- 0xec,0x4e,0xa9,0x7f,0xaf,0xe0,0xd1,0x1f,0x3f,0x87,0x01,0x08,0x0c,0x8a,0xbd,0xf4,
- 0x27,0xf6,0x29,0xb0,0x86,0xe4,0x37,0xa2,0x45,0x73,0x02,0x5e,0x81,0xfc,0x3e,0x5e,
- 0xff,0x9e,0xcc,0xff,0xa1,0xd3,0xd2,0xdf,0x60,0xae,0x50,0xd6,0xca,0xa6,0x77,0x03,
- 0x5f,0x22,0xda,0x71,0x9e,0x90,0xe7,0x91,0xd7,0xd9,0xf6,0x90,0xad,0x5e,0xfc,0x83,
- 0xfa,0xa5,0x7f,0x76,0xa7,0xed,0x07,0xf8,0xbe,0x13,0x7f,0xbc,0xfe,0xeb,0x2c,0xec,
- 0x67,0xeb,0x5f,0x16,0x47,0x34,0xb4,0x37,0xd9,0x2c,0x9e,0x46,0x38,0x06,0x3f,0xc3,
- 0xf3,0x58,0xf0,0x01,0xfb,0x0c,0x7f,0xc2,0xf7,0x35,0xe5,0xff,0xa4,0xbd,0x6d,0xa4,
- 0x6d,0x3c,0x36,0xde,0x54,0xc9,0xd1,0xce,0x90,0x95,0xfb,0x7f,0x0e,0xac,0x72,0x77,
- 0x5a,0x87,0x73,0xae,0xd4,0x7e,0xce,0x76,0x9c,0xb2,0xf6,0xa4,0xe0,0x9f,0xcd,0xb5,
- 0x8d,0x4a,0x88,0x39,0xce,0x5a,0xac,0xd9,0x6b,0xc0,0xee,0xa0,0x5e,0x32,0x08,0xeb,
- 0xba,0xf2,0x3b,0xa9,0x4f,0x3c,0x81,0x88,0x6e,0x4b,0x2d,0xfd,0x1f,0xa9,0xf8,0x87,
- 0x87,0xe9,0x59,0xc6,0x43,0xe9,0x9b,0xb5,0x26,0x4e,0x83,0xe0,0xc5,0xf3,0xf5,0x84,
- 0x3a,0x3d,0x90,0xe1,0x23,0xf7,0x0a,0xbb,0x94,0x02,0x9d,0xa6,0xe2,0x9f,0xc3,0x7a,
- 0xa3,0x56,0xc8,0xa8,0x2b,0x7d,0x1b,0x3c,0xae,0xa9,0xe0,0x08,0xfa,0xa3,0xb4,0x1d,
- 0x0a,0x59,0x86,0x4a,0xfa,0xd3,0x76,0x68,0x21,0x8d,0x66,0xa7,0xd4,0x7f,0x3d,0x06,
- 0x07,0x6a,0xe7,0x30,0x34,0x93,0xf7,0xd1,0x77,0xd4,0x79,0xba,0x75,0xe7,0x37,0x46,
- 0xe0,0x2d,0x14,0xe4,0xc5,0x21,0xf1,0x13,0xb8,0x18,0xc5,0xad,0xb5,0x29,0x25,0xfe,
- 0xf5,0x09,0x8c,0x1f,0xe4,0xb4,0x00,0x84,0xd3,0x42,0xa2,0x7c,0x0e,0x8b,0x1f,0xd2,
- 0x8f,0xb4,0x79,0x2c,0x2b,0x24,0x76,0xa9,0x17,0x39,0xbf,0x44,0xf8,0x1a,0xfc,0x73,
- 0x18,0xba,0x19,0x4f,0x1b,0xce,0x7d,0xc3,0xca,0xeb,0xdf,0x0b,0x2a,0xe0,0x28,0x2d,
- 0xe5,0x19,0x20,0x7b,0xd8,0x15,0xcb,0x5c,0x90,0xf5,0x14,0xfc,0xf3,0x8f,0xb0,0x85,
- 0xd9,0x43,0x34,0x6c,0x77,0xc2,0x3b,0xc4,0x1e,0x76,0xf4,0x90,0x5b,0x68,0x60,0xd0,
- 0xce,0xf7,0x83,0x83,0xee,0xa8,0x76,0xcf,0xe1,0x8c,0x5b,0x26,0xfc,0x53,0x62,0x6f,
- 0xd1,0xff,0x61,0x2b,0x75,0x79,0x78,0xbc,0xac,0xb0,0x2e,0x63,0x03,0x99,0xce,0x5e,
- 0xa4,0x46,0xbe,0x59,0x27,0x3c,0xaf,0xe1,0xc0,0x9f,0xe2,0xff,0x29,0x84,0x10,0xf8,
- 0x82,0x06,0xfb,0xcd,0xe3,0xa0,0x0a,0x78,0x0c,0x71,0x57,0x41,0xc8,0xbf,0xa8,0xd0,
- 0x43,0xa4,0xbd,0xb8,0x90,0x68,0xba,0x9a,0xf1,0xcf,0x0a,0x38,0xe0,0x75,0x0f,0x5a,
- 0x47,0x73,0x7e,0xc3,0x69,0x67,0x16,0x5b,0x83,0x44,0xe2,0x40,0x91,0x19,0x34,0x8f,
- 0x17,0xf0,0xd5,0xb8,0x21,0x96,0x90,0x3f,0x9d,0x37,0x9d,0x87,0xf3,0x50,0x15,0x98,
- 0x85,0xda,0x2a,0x84,0x30,0x32,0x13,0x0d,0xb1,0x51,0x7a,0x52,0x59,0xc0,0x6c,0xa7,
- 0x51,0x4d,0x5f,0x15,0x6e,0x03,0x5b,0x7f,0x0a,0xfe,0xf9,0x14,0xd1,0xf2,0xdc,0x50,
- 0xd6,0x58,0xcd,0xdb,0x30,0x80,0x6a,0x0e,0x17,0x6a,0x4c,0xc5,0x8d,0xdf,0x9f,0xd5,
- 0x23,0x5e,0x62,0x97,0xdd,0x55,0x0b,0xad,0x63,0xb2,0x2b,0x21,0x1f,0x18,0x7c,0x0a,
- 0x7b,0x79,0x12,0x72,0x37,0xf9,0x14,0xde,0xf6,0xcf,0x3a,0x41,0xbf,0xf4,0x9f,0x22,
- 0x81,0xfa,0x82,0x13,0xb8,0x50,0x57,0xb4,0xbd,0xca,0x83,0x75,0xb8,0xdf,0x5c,0x89,
- 0xf5,0x77,0xa4,0x71,0xf4,0x1b,0x62,0x16,0x57,0xc7,0x41,0xd8,0x20,0x38,0x8f,0x19,
- 0xf5,0x4d,0xad,0x4a,0xac,0xf0,0x0d,0x76,0xd8,0x1d,0x07,0x71,0x29,0xdc,0x89,0xf9,
- 0x3a,0xea,0x53,0xbc,0x7f,0x3b,0x0d,0x67,0x7f,0x04,0x4f,0xa2,0xfc,0x09,0x84,0xc9,
- 0x90,0xda,0x4a,0x79,0xc5,0x3d,0x2f,0x84,0x67,0x25,0xe1,0x8c,0xb0,0xc9,0xff,0x03,
- 0xd2,0x36,0xeb,0xf6,0xba,0xb2,0xd1,0x2c,0x8e,0x76,0x22,0x81,0x4a,0xdd,0xc9,0xbf,
- 0xfe,0x41,0xcd,0xdd,0x6b,0x24,0xce,0xed,0x0e,0x4d,0x8b,0x3a,0xc2,0xa2,0x92,0xd8,
- 0xff,0x5b,0xc0,0x48,0xeb,0x0d,0x71,0xb4,0x23,0x5d,0xd1,0xb8,0x5a,0x47,0xb0,0x72,
- 0x85,0xeb,0xeb,0xd1,0x82,0x11,0xb8,0x42,0x2b,0x39,0x30,0x1e,0x36,0xe9,0xdf,0x6d,
- 0xca,0x78,0x34,0x96,0xcd,0xab,0xdd,0xa9,0xf2,0xf8,0x57,0x4d,0x3e,0x1c,0x24,0x2e,
- 0xdd,0x28,0xc4,0x3b,0xe8,0x9d,0xd7,0x8e,0x83,0xb3,0x49,0xfc,0x73,0xbb,0x13,0xf6,
- 0x6a,0x25,0x51,0x44,0x3b,0x07,0xe1,0xf9,0xc0,0x2c,0xfd,0xae,0x51,0xd2,0x85,0xfa,
- 0xf7,0xbf,0xf6,0x1a,0x8e,0xa6,0x56,0x36,0x23,0x40,0x5d,0xe2,0xcb,0x49,0xfe,0xe7,
- 0x5c,0xee,0x9f,0x29,0xe9,0x96,0x5d,0xe9,0x11,0x95,0xe9,0x4e,0x5e,0x7f,0x9a,0xc1,
- 0x18,0x14,0xf6,0x52,0xbe,0x3e,0x8d,0x8d,0x25,0x0d,0x38,0x18,0x4d,0xd8,0xfb,0x3e,
- 0x98,0xc6,0x10,0x06,0x84,0xd0,0x5a,0xb9,0x00,0xcf,0xb2,0xe2,0xa1,0x8c,0x47,0xd3,
- 0x37,0x6a,0xcd,0xc1,0xe2,0xa8,0xe5,0x51,0xf2,0x2e,0x59,0x1d,0x9e,0xae,0xd2,0x47,
- 0xf1,0x3f,0x34,0xf1,0x57,0x97,0x97,0x25,0xed,0x10,0x2a,0xfc,0xeb,0x6f,0x13,0x23,
- 0xb5,0x7e,0x52,0xf9,0x5a,0xe6,0x9e,0x1a,0x07,0x59,0x18,0x44,0x44,0x3a,0x4f,0x1c,
- 0x90,0xfa,0xfc,0x3f,0x89,0x38,0xe7,0x89,0xc7,0xd2,0x27,0xe6,0x6b,0x8b,0x0d,0xff,
- 0x0f,0x4f,0xf2,0x19,0xc5,0xd5,0xa8,0x7a,0xcd,0x36,0xda,0x84,0x03,0x32,0x7f,0x70,
- 0xfd,0x59,0x04,0xd2,0x57,0xa4,0x9f,0xf3,0x9f,0x82,0x64,0xe2,0x7d,0x11,0xdf,0xc2,
- 0x67,0xcc,0x28,0xf2,0xaa,0x87,0x71,0xb5,0xec,0xb2,0xf5,0x65,0x31,0x4a,0x0f,0xc1,
- 0x9e,0xf3,0xd6,0x30,0xf9,0x0b,0x3b,0x10,0xfb,0xa9,0x2f,0xb1,0xfe,0xc3,0xc2,0x66,
- 0xee,0x3d,0x66,0x32,0xcf,0x76,0xde,0x65,0x29,0xee,0x43,0x6b,0x71,0x8c,0x3e,0x07,
- 0x6a,0x24,0xb3,0x81,0x1c,0xee,0xe8,0x87,0x7c,0x90,0xcd,0xfc,0xcf,0x00,0x9c,0xed,
- 0x79,0x7a,0x48,0x5e,0x79,0xc7,0xdb,0xf0,0x04,0x73,0x0e,0x67,0x3c,0x4a,0xfe,0x40,
- 0xfc,0xac,0x78,0x98,0xae,0x4c,0x7f,0x97,0x06,0xf5,0xfc,0xd0,0x8d,0x2b,0xd1,0x34,
- 0x9b,0x78,0x1e,0xee,0xff,0xe9,0x66,0x85,0x5d,0x72,0xf8,0xba,0x83,0xea,0x8e,0x3a,
- 0xa7,0xde,0xe2,0x22,0x47,0x7c,0x1d,0x11,0x5e,0xd8,0x6b,0x1f,0x40,0xf4,0x1d,0xe2,
- 0xf9,0x3f,0x6f,0x9b,0xea,0xbf,0xba,0xf0,0x35,0xe7,0x76,0xa1,0x74,0xfd,0x4f,0x8d,
- 0x17,0x84,0x32,0x36,0x33,0x84,0x30,0xf8,0x48,0xff,0xcf,0x10,0x11,0xa1,0xbd,0xf6,
- 0xb4,0x56,0xea,0x97,0x43,0xe2,0x1e,0x61,0xe2,0x79,0xea,0x14,0x15,0xc6,0x7a,0xb9,
- 0xd2,0xcf,0x89,0x95,0x7d,0x19,0xfe,0x90,0xb1,0xc9,0xfb,0xe3,0xfe,0x1f,0xad,0x92,
- 0x4c,0x62,0xe2,0xb1,0x64,0xfe,0xad,0xd2,0xa9,0xa0,0xbd,0xdf,0x30,0x29,0x28,0x4e,
- 0x07,0xce,0x06,0x6c,0x53,0x20,0x1d,0xee,0xe4,0xf5,0x89,0x86,0xbe,0xd3,0x2a,0xeb,
- 0x96,0x04,0x73,0x4c,0xf8,0xa7,0xb6,0x13,0x76,0xaf,0x2d,0xe1,0x41,0xab,0x42,0x69,
- 0x2b,0x23,0x5a,0x5b,0xd0,0x33,0x03,0x15,0x31,0xcf,0x7f,0xce,0x1e,0x82,0x27,0xfb,
- 0x1e,0xf4,0xb6,0x71,0xfe,0xe7,0x89,0x3f,0x23,0xff,0x27,0xbf,0x44,0xab,0x09,0xc2,
- 0xf2,0xc2,0x16,0x6a,0xd4,0x2b,0x75,0xd6,0x6d,0xc7,0xf9,0x6d,0x38,0x9f,0xee,0x16,
- 0x4a,0x8c,0x7c,0x95,0xd4,0xfc,0x43,0xc9,0xe9,0x95,0x73,0x8b,0x24,0x3a,0x13,0x42,
- 0x3c,0xdb,0x67,0x15,0x6c,0xd7,0xc0,0x2b,0x2b,0x4a,0x3f,0x6c,0xd0,0xf0,0x27,0xb3,
- 0xfd,0x55,0x3e,0xd5,0x37,0x51,0xe6,0xa6,0x2a,0x11,0x92,0x1d,0x23,0x02,0xe2,0x1e,
- 0xa1,0x35,0xac,0x34,0x0a,0x17,0x84,0x12,0x58,0xc2,0x26,0x7d,0x9a,0x90,0x3f,0x3d,
- 0x99,0x9d,0x08,0x5a,0xaa,0x0c,0xef,0x0d,0xda,0x6b,0x1c,0x08,0x2d,0xfa,0x6f,0xd2,
- 0x27,0xda,0x7e,0xaf,0x51,0x08,0x7f,0xd9,0x33,0x17,0x07,0x93,0x3e,0x4d,0xc8,0x9f,
- 0xf2,0xbf,0xe9,0xa4,0x9f,0xc3,0xfc,0x5a,0xba,0xa9,0xe6,0x3c,0x87,0x01,0x0b,0x79,
- 0xda,0x33,0xc7,0x87,0x8b,0xac,0xdc,0x7f,0x75,0x19,0x4a,0xbf,0x63,0x1d,0x14,0x3f,
- 0x4d,0xec,0x9f,0x3c,0x9e,0xff,0x0c,0x76,0xea,0x60,0xd9,0x51,0xda,0x23,0xcd,0xcb,
- 0x93,0xfd,0x1b,0x01,0x02,0xde,0x8e,0xbc,0x4c,0x46,0x4e,0x79,0x7b,0xd4,0x0e,0x05,
- 0x2d,0x88,0xd7,0x13,0xf2,0x44,0xe3,0xf9,0x4e,0xe0,0xe0,0x4a,0xa7,0x9f,0xbb,0x01,
- 0x3d,0x72,0xae,0xe5,0x19,0x4e,0x04,0xe4,0xc9,0x33,0x88,0x10,0x23,0xaa,0x76,0x83,
- 0x42,0x8e,0x25,0xf6,0x4f,0x9e,0xc4,0xb3,0xa7,0x78,0x91,0xbb,0x7d,0xc8,0x17,0xa7,
- 0x3d,0x2c,0xa4,0x8d,0x3e,0x7b,0x3c,0xff,0x0a,0xec,0xd5,0x16,0x5e,0xff,0x3e,0x31,
- 0x3f,0xc4,0xe7,0xd3,0x72,0x0d,0x9f,0xf6,0x8c,0x32,0x3e,0x58,0xc9,0xd1,0x5a,0xa7,
- 0x7a,0x00,0x3a,0x34,0x89,0xcf,0x1f,0x97,0xec,0xf5,0x16,0x1e,0xca,0x99,0x98,0xff,
- 0x11,0xaf,0xff,0x82,0xfd,0x75,0xeb,0x11,0x06,0x73,0x7e,0x1b,0x44,0x83,0x39,0x43,
- 0x64,0x9c,0x55,0xc4,0xf2,0xc1,0xce,0x7a,0x2a,0x97,0x67,0x06,0xc5,0x0b,0x49,0x3c,
- 0xc3,0xf9,0x36,0x95,0x79,0x0a,0xa7,0xfd,0x51,0xe2,0x6e,0xb7,0x7c,0x3d,0x52,0xed,
- 0x16,0x16,0x1b,0xf9,0x3f,0xe0,0x56,0xad,0x66,0xfc,0x43,0x25,0x07,0x9c,0x01,0x83,
- 0xf6,0xe7,0xa2,0x91,0xff,0x8c,0x6a,0xe8,0x57,0xf0,0xb6,0x60,0x67,0x16,0xbe,0x9f,
- 0xf7,0xeb,0x5b,0x99,0x35,0x4a,0xfa,0x12,0xfb,0x87,0xfe,0x82,0x97,0x9d,0x3a,0x74,
- 0x87,0x8b,0x1c,0x62,0x5b,0x63,0x66,0x82,0x8d,0x26,0x0a,0xb7,0xc3,0xd1,0x19,0xaa,
- 0xa0,0xe2,0xfc,0x89,0xef,0x9b,0x3f,0x79,0x2a,0x5a,0x24,0x05,0xcc,0xd2,0x60,0xbf,
- 0x10,0xab,0x5f,0x70,0x5b,0x36,0x2b,0x4f,0x28,0x31,0x22,0x0b,0xd8,0xa9,0xa9,0x0a,
- 0xe5,0x8c,0x09,0x13,0xfb,0xcd,0x51,0x37,0x4d,0xf9,0x9c,0xdd,0x16,0xb5,0xfc,0x44,
- 0x7c,0x17,0xfe,0x1c,0xb8,0x69,0x74,0xc9,0x4f,0xda,0xa6,0xc1,0x7a,0xb6,0xc3,0xa8,
- 0x7f,0x87,0x2b,0xec,0xd6,0x10,0xe7,0x3f,0x4c,0xc8,0x1f,0x3a,0x79,0x1b,0x7c,0x08,
- 0x15,0x2c,0xb3,0x47,0x8c,0xa0,0x84,0xab,0x3c,0xc1,0xcd,0x4c,0xe9,0x62,0x5d,0x65,
- 0xdf,0x44,0x22,0x34,0x2a,0x7a,0x53,0xfe,0x8f,0x4f,0xda,0x8f,0xfa,0xab,0x34,0x62,
- 0x1d,0xff,0xde,0xdb,0xca,0xd1,0xe6,0xaa,0x51,0xeb,0x98,0xe8,0xe6,0x57,0x4e,0x5b,
- 0xb9,0x23,0x68,0x2c,0x58,0xa5,0xae,0x1f,0x36,0xd5,0x47,0x04,0x60,0xaa,0xf6,0x72,
- 0xde,0xad,0x7e,0x3a,0xdb,0x3d,0x28,0xad,0xc9,0x2b,0xd6,0xeb,0x66,0x67,0x2b,0xf0,
- 0xb1,0x5a,0x10,0xcd,0xe4,0xfe,0xe7,0x70,0xe8,0x01,0x2a,0xe7,0x93,0xa2,0xc4,0x7a,
- 0x32,0xd8,0x0c,0x2f,0x01,0x82,0x9c,0x87,0xd2,0xc7,0xd4,0x55,0x1c,0x0f,0x37,0x90,
- 0x3c,0x6d,0x97,0x50,0x60,0x04,0xee,0xe1,0x65,0xb5,0xf8,0xd8,0x8d,0x3e,0x8b,0x94,
- 0xe0,0x3f,0xd4,0x72,0xd7,0xe2,0x69,0x2a,0xec,0xa2,0x2e,0xfb,0x41,0xc2,0x8c,0x44,
- 0x68,0x0b,0xe5,0x69,0x54,0x31,0x62,0x81,0xdd,0xed,0x4e,0xdf,0x8d,0x2a,0xc9,0x36,
- 0xe1,0xd5,0x6d,0x5c,0x7e,0x8e,0x5a,0x47,0x85,0x03,0x70,0x20,0xa6,0x7f,0x4b,0x50,
- 0x43,0x15,0xa0,0x7e,0x41,0x7d,0xb7,0x47,0x2b,0x09,0xe1,0x17,0xa4,0x09,0x3c,0x1c,
- 0x52,0x46,0x60,0xdc,0x6e,0xd4,0x7f,0x0d,0xab,0xdc,0x1f,0xb2,0xde,0x25,0x7e,0xa8,
- 0x7d,0x3c,0xe1,0x6f,0xbf,0x40,0x2a,0x79,0x61,0xd4,0xb0,0x64,0xc6,0x3f,0x57,0x59,
- 0x41,0xad,0x51,0xf6,0x7e,0x54,0x37,0xcc,0xd8,0x39,0xec,0xe8,0x44,0x21,0xfc,0x15,
- 0x28,0x65,0x59,0x51,0x31,0x9a,0xc0,0x3f,0xbd,0xd2,0x0a,0x69,0xf7,0xdb,0x8e,0x41,
- 0xd4,0xb6,0x1f,0x71,0xb7,0x61,0x6f,0x5b,0x98,0x14,0xf0,0xc4,0x1e,0xce,0x88,0x38,
- 0x42,0xf7,0xf2,0xd0,0x4f,0xc8,0x6e,0xc2,0x3f,0x92,0x51,0xa6,0xdd,0x87,0x4a,0xf9,
- 0x23,0x6e,0xaf,0x71,0x37,0x85,0x64,0x14,0xfe,0xc7,0xf4,0xb5,0x6e,0xef,0xc0,0x8d,
- 0x67,0xe2,0x3f,0x84,0x4c,0x4e,0xb3,0x09,0x19,0x73,0x70,0x93,0x34,0x09,0xb8,0xdf,
- 0xe6,0x10,0x48,0xc7,0xf9,0x11,0x3a,0x1b,0xd7,0x67,0xbb,0x1a,0xd2,0x10,0x68,0xf5,
- 0x25,0xfa,0x59,0x40,0xde,0x03,0xbc,0xac,0x5b,0x2b,0xde,0x59,0x30,0x0c,0x07,0x78,
- 0x18,0xe2,0x11,0xb9,0x10,0x8e,0x4e,0xfe,0x91,0xbe,0x38,0x5c,0x83,0xfb,0x21,0xd7,
- 0xad,0x67,0x6d,0x11,0xa3,0x89,0xfa,0x9d,0x50,0xe6,0x25,0xf6,0x25,0x2c,0xd0,0xb3,
- 0xce,0x15,0x8c,0x71,0xfe,0x1f,0x7d,0xfd,0xb9,0x9a,0x51,0x8a,0x40,0xa8,0x9f,0xe7,
- 0xff,0xc0,0x65,0x17,0x8a,0xa6,0x65,0xe2,0x70,0x73,0x02,0xff,0x08,0xc7,0xa0,0x9f,
- 0xcd,0x8e,0x2e,0x1e,0xcd,0xf9,0x29,0x9c,0x64,0x06,0xff,0x0f,0xe7,0x8f,0x2a,0x1d,
- 0x28,0x79,0x5d,0x74,0xb1,0xf7,0x58,0xa9,0x68,0xed,0x37,0xf3,0xff,0xc0,0x19,0x25,
- 0x03,0xf1,0x61,0xdd,0xcb,0xd9,0xc5,0x7d,0x01,0xd5,0x1e,0xcd,0xe0,0xfc,0xcf,0x7b,
- 0x0b,0xdd,0x4a,0x71,0x30,0x5b,0x0d,0xb5,0x51,0x37,0xe7,0x9f,0x4f,0xd6,0x7f,0xd1,
- 0xb4,0x21,0x34,0x33,0x1d,0x3a,0x9d,0xf3,0xec,0x00,0x04,0x68,0xfc,0x58,0xed,0xa5,
- 0xea,0xa0,0x9c,0x4e,0x40,0x7f,0x11,0xba,0x08,0x95,0xcc,0xf5,0x5f,0x53,0x9e,0x81,
- 0x16,0x56,0x84,0xf8,0x13,0xf1,0x24,0x77,0xfb,0x64,0xc4,0x60,0xcf,0x0c,0x2d,0xa3,
- 0xdd,0x6f,0x87,0x36,0xc5,0xa2,0xd2,0xcd,0x5a,0xb2,0xfe,0x0b,0xd2,0xce,0xc0,0x81,
- 0xd0,0x9e,0x90,0x35,0x8c,0xe8,0x65,0x10,0xba,0x7b,0xe3,0xfc,0xcc,0x6e,0x32,0x8b,
- 0xca,0x5f,0x27,0x1f,0xea,0x37,0x34,0x38,0x37,0x9b,0xea,0xdf,0x43,0x93,0x77,0x91,
- 0xcb,0x64,0x2e,0xc3,0x6d,0x70,0x9f,0xc1,0xff,0xcc,0xf9,0xc0,0xe1,0xaa,0x34,0xef,
- 0x03,0xdc,0x36,0xba,0xf2,0x27,0xdc,0x38,0x36,0x9f,0x38,0x6c,0x8a,0x7f,0x3d,0xc3,
- 0xd3,0x7a,0xd7,0x3e,0xc6,0x6f,0x3b,0xa6,0x4d,0xa4,0x99,0xb1,0x0a,0x4e,0xe3,0x36,
- 0x93,0x1c,0xa2,0xdd,0x9b,0x9c,0xbf,0x14,0x1b,0x4c,0xfe,0x1f,0x89,0x4b,0x57,0x46,
- 0x47,0x55,0x1e,0xf6,0x9a,0x37,0xc1,0x87,0x69,0x8f,0xa0,0xfd,0x58,0xa0,0x89,0x5a,
- 0x11,0xd0,0xa7,0x97,0x99,0xfb,0x5f,0x48,0xd2,0xe3,0x8c,0x8d,0xce,0x0c,0x5b,0xac,
- 0x10,0xc4,0xf3,0x22,0xc6,0xf9,0x6a,0xd8,0x7f,0x55,0x09,0x62,0xe3,0x60,0xb4,0x85,
- 0xaa,0xe4,0x9c,0x09,0xff,0x94,0x49,0x4f,0xa0,0xd2,0xa7,0x3f,0xbe,0x6e,0x9a,0xb4,
- 0x33,0x9e,0xf6,0x0c,0xbb,0x42,0x5b,0x42,0xb4,0x9e,0x5c,0x87,0x82,0xe5,0x07,0x3e,
- 0x7a,0x27,0xb9,0x94,0xe4,0x7f,0x03,0x09,0x7e,0x0f,0x2e,0x3d,0x73,0xbb,0x68,0x15,
- 0x06,0xd5,0x8a,0x11,0x9b,0xab,0x60,0x00,0x4f,0x5c,0x45,0xd4,0xa6,0x88,0x69,0x6a,
- 0x9f,0xe6,0xf2,0x5a,0x6f,0x10,0xef,0x49,0xd6,0x7f,0x4d,0xdd,0x49,0x3e,0xe4,0xd5,
- 0x4f,0x67,0xc5,0x6d,0xc2,0x65,0x88,0xf1,0xff,0x18,0xf5,0xef,0xb3,0x06,0xe5,0xf3,
- 0xf0,0x25,0x57,0x6d,0x83,0xa6,0xfa,0x2f,0x3a,0x65,0x08,0xde,0x49,0xab,0x60,0x88,
- 0x96,0x4b,0xb4,0x13,0x6c,0x82,0xff,0x19,0x5f,0xbc,0x58,0x2f,0xa8,0xa0,0x9f,0xc1,
- 0xdc,0xa8,0x35,0x2a,0x93,0xa4,0xff,0x27,0x83,0xf3,0x1f,0x16,0xb3,0x00,0x2f,0xbb,
- 0x5b,0x23,0xc5,0xc5,0x26,0x2f,0x7b,0x47,0x04,0x97,0x0b,0xbb,0x48,0xa9,0x46,0xa3,
- 0xa4,0x34,0xe1,0x5f,0x52,0xe1,0x97,0x3c,0xcd,0xc9,0xee,0x78,0x34,0xeb,0x67,0xb0,
- 0x2f,0x9e,0xf6,0x0c,0xbb,0x98,0x23,0x9a,0xb1,0x94,0x4c,0xe3,0xd0,0x28,0x4a,0x97,
- 0x92,0x3c,0x65,0x62,0xfd,0xeb,0xa5,0xc3,0xd0,0x74,0xc8,0x19,0x42,0xf9,0xb3,0x18,
- 0x78,0x61,0xaf,0xb1,0xdf,0x50,0x6d,0x0d,0xe1,0xfe,0x99,0xee,0xdb,0xa1,0xab,0xb5,
- 0x8e,0x5c,0x72,0x63,0x42,0x3f,0x0e,0xe7,0xee,0x51,0x8f,0x84,0x8a,0x43,0xbc,0x5e,
- 0x86,0x5e,0x09,0x77,0xc7,0xf9,0x9f,0xd9,0xfc,0x70,0xe6,0x90,0x38,0x0f,0xae,0xe4,
- 0xcd,0x0d,0x59,0x3f,0x16,0xe7,0x25,0xf6,0x4f,0x1d,0x6c,0xf1,0x0f,0x8b,0x95,0x54,
- 0xe0,0x30,0x60,0xd8,0x08,0x7b,0x4d,0x42,0x35,0xe4,0xad,0x24,0xb3,0x38,0x23,0xd0,
- 0x98,0xb6,0x7f,0xb2,0xad,0xf9,0x5b,0xc7,0x4c,0xf6,0x7b,0xa7,0x11,0xf4,0x29,0x36,
- 0x87,0x39,0xa4,0xb7,0x04,0xb7,0x96,0xb9,0x59,0x2e,0x64,0x77,0x42,0xf7,0x1d,0xb6,
- 0x1b,0x4c,0xf5,0x3b,0x21,0x48,0x1f,0x6c,0xd1,0x4b,0xbc,0x14,0xd5,0x28,0x4d,0xa6,
- 0x31,0x6b,0xbc,0x11,0x83,0xe7,0x39,0xd2,0x38,0x58,0xd4,0x20,0xa7,0xd4,0xbf,0xa7,
- 0x15,0x0a,0x4f,0xaa,0x45,0xdf,0xa0,0x41,0x69,0x88,0xe7,0xcb,0xc5,0xe6,0x3f,0x89,
- 0x6a,0x3a,0x23,0x98,0x5d,0xe8,0x68,0xe1,0x8e,0xa0,0x4d,0x37,0x64,0x99,0xed,0x2f,
- 0xa1,0x71,0xb5,0xe1,0xff,0xe1,0xb0,0x27,0x16,0x06,0xc2,0x41,0xc8,0x4b,0xe7,0x10,
- 0x4e,0x0d,0x5d,0xcf,0x11,0x91,0x25,0x51,0xff,0x95,0x77,0x93,0x0f,0x4e,0xc0,0x3c,
- 0x61,0xaa,0x99,0xf6,0x27,0xf7,0x6d,0xc4,0x3f,0x99,0x2c,0x47,0xa5,0x07,0xd1,0x10,
- 0x5b,0x82,0x36,0xa0,0xd9,0xff,0x83,0xa0,0xe5,0x1f,0xb5,0xbb,0x37,0xd5,0x3c,0x23,
- 0x7d,0x3e,0xe1,0xd6,0xf8,0x1c,0xaa,0xbc,0xb3,0xce,0x8b,0x9f,0xe3,0x4f,0xaf,0x70,
- 0x6a,0xa0,0x33,0x89,0xf5,0x2c,0x9f,0x72,0x1e,0x3e,0x91,0x6e,0xd5,0xac,0xbf,0x14,
- 0x6f,0x5d,0xfb,0x56,0x9c,0x1f,0x09,0x2e,0x6b,0x3b,0xbc,0xff,0x78,0x8f,0x78,0x6b,
- 0x10,0xf1,0x52,0xb5,0xf5,0x58,0x4d,0xb2,0xfe,0x3d,0x0f,0x42,0xd6,0x00,0x94,0x80,
- 0x75,0x75,0x4e,0x3e,0xeb,0x32,0xf2,0x9f,0x89,0x81,0x88,0xa6,0x16,0x37,0x93,0x7c,
- 0xd6,0xa3,0x16,0xdd,0x54,0xb7,0xba,0x35,0xc9,0xff,0x5c,0x27,0x3d,0x0b,0x5b,0x61,
- 0x86,0x76,0x4b,0x2e,0xb9,0x1d,0x9e,0xa7,0xdc,0xdb,0x93,0xce,0x0b,0xe1,0xeb,0xf9,
- 0x15,0x4e,0x05,0xd0,0xe9,0xa1,0x93,0xd5,0xec,0x24,0xfe,0xc9,0xe5,0x69,0xe4,0x25,
- 0xb7,0xc7,0x68,0x27,0x35,0x7b,0x8c,0xf6,0x79,0xb7,0xdd,0xc1,0xf1,0x4f,0x21,0xec,
- 0xcd,0x2d,0x8a,0xd0,0x8d,0x24,0x3d,0x31,0x3f,0x94,0xbb,0x1a,0x3e,0xb4,0xce,0xf1,
- 0xdd,0x1d,0xcc,0x58,0x0e,0x0f,0x69,0x46,0x59,0x9f,0xe1,0xef,0xaa,0x9b,0x75,0x5c,
- 0x9c,0xee,0x3b,0x0b,0xd7,0xd5,0x39,0x82,0xe6,0xfe,0x17,0xd0,0xd9,0xcc,0x83,0x5c,
- 0xc5,0x8a,0x11,0x1d,0x4b,0xb8,0x7d,0xca,0xb4,0x59,0xd9,0x6d,0x67,0x60,0x5c,0x2c,
- 0xe3,0x15,0x64,0xe6,0xfa,0xaf,0x0e,0x88,0xe8,0x31,0xb6,0x81,0x44,0x99,0x21,0x7e,
- 0x88,0x79,0x9c,0xff,0x39,0x1f,0x22,0xab,0xdd,0x24,0xa5,0xfe,0x8b,0x4a,0xe5,0xb0,
- 0x8e,0xcc,0xe2,0xf8,0x67,0x3e,0xe3,0x65,0x5f,0x8b,0x42,0x62,0x17,0xf0,0xfc,0x1f,
- 0x3a,0x44,0xca,0xb5,0x75,0xb0,0xb5,0x43,0x8e,0x7a,0x92,0xfc,0x3f,0x34,0x6d,0xb1,
- 0x51,0x76,0xaa,0xba,0x6e,0xf8,0x17,0xbf,0x88,0x82,0xba,0x8d,0x9f,0x97,0x3d,0xdc,
- 0x71,0x0a,0x64,0x12,0x6c,0x98,0x8c,0x08,0xf0,0x06,0x53,0xfe,0x8f,0x2a,0x54,0xa8,
- 0xcd,0xe9,0xc5,0x0c,0xb5,0xd5,0xda,0x8c,0xe7,0x5c,0x46,0x20,0x8c,0xd7,0x2f,0x4c,
- 0xd7,0xa9,0x87,0x7c,0x0b,0x9e,0x90,0x66,0x82,0xfc,0x08,0x09,0x25,0xfc,0x3f,0x8e,
- 0xbc,0xeb,0x50,0xbf,0x14,0x6f,0xb1,0x3e,0x9a,0xf3,0xb4,0x70,0x14,0x81,0xd0,0xa4,
- 0x18,0xec,0xa9,0x8a,0xae,0xfb,0x89,0x5c,0x49,0x4e,0xb2,0xdb,0x7c,0xb6,0x13,0x29,
- 0xf5,0x5f,0xcd,0x64,0x0c,0xa6,0xf1,0xa2,0xda,0x15,0xc2,0x3b,0x6c,0x42,0xad,0xc3,
- 0x9e,0xb7,0x67,0xf5,0x88,0x3d,0xa8,0xfc,0xe7,0x72,0xfb,0xcb,0x93,0x90,0x3f,0x3e,
- 0xe9,0x65,0xb8,0x1c,0x5c,0x30,0x64,0xa8,0xad,0x25,0xf1,0xb4,0x67,0xbc,0xff,0xfc,
- 0x53,0x59,0x2d,0x05,0x65,0xc2,0xe1,0xe0,0xdc,0xa1,0xb5,0x27,0xc4,0x41,0x13,0xfe,
- 0xd9,0x54,0xb7,0xf3,0x77,0xc5,0x5d,0x75,0x0d,0xd9,0xdf,0x95,0xfe,0x18,0xe7,0xff,
- 0x81,0x6e,0xa9,0x43,0xa7,0x75,0xfe,0xc9,0xe1,0x3f,0xce,0xce,0x6f,0xa6,0xd9,0xf0,
- 0x91,0xa9,0xfe,0x6b,0x13,0xec,0x54,0x67,0xae,0xbe,0xe5,0x21,0x44,0x47,0xaf,0x4c,
- 0xf0,0xff,0xbc,0x4c,0x67,0xf6,0x5b,0x7e,0x44,0x36,0x29,0xfb,0x60,0xfa,0x1d,0x75,
- 0x5e,0x4f,0x73,0xe2,0xfe,0x5a,0xee,0x2a,0x25,0xac,0x3b,0x55,0x34,0xdb,0x39,0xcd,
- 0x4b,0x9c,0xcf,0xbf,0x9b,0x21,0x1e,0x70,0x5b,0x7e,0xcb,0x5e,0x04,0x7b,0x37,0xdd,
- 0xe6,0x3f,0x61,0xf6,0x0f,0x68,0xb8,0x5b,0x3a,0x6d,0xa3,0x68,0x4f,0x7d,0xa9,0x71,
- 0xf9,0x39,0x89,0xeb,0x97,0xf2,0xfa,0xbb,0x03,0xe2,0xb3,0xb0,0xdb,0x5b,0xe6,0xb5,
- 0xae,0xdd,0x15,0x31,0xf1,0x2d,0x8c,0x68,0x63,0xc2,0x34,0xc4,0x3f,0x35,0x51,0xf8,
- 0x4f,0x34,0xbe,0x3e,0x88,0xa8,0xfb,0x6c,0xcd,0xc2,0xfd,0xca,0x3b,0x50,0x29,0xa0,
- 0x04,0x3b,0x65,0xf2,0xff,0x9c,0x87,0x81,0xc0,0x7c,0xe6,0x1c,0xcd,0xe9,0x46,0x18,
- 0x90,0x13,0xe3,0x7f,0xbe,0xa2,0xcd,0xd5,0xac,0x4f,0xe6,0x8c,0x28,0x56,0x34,0x94,
- 0xac,0x3a,0xee,0xcf,0xa4,0xff,0x67,0x39,0x0b,0x44,0x9d,0xae,0x3a,0x84,0x3d,0xea,
- 0x5e,0xe8,0x30,0xf4,0x97,0x14,0xce,0x78,0x41,0x77,0x6c,0x26,0xa7,0xa1,0x4b,0xef,
- 0x68,0xa8,0x5b,0x8b,0xa7,0x21,0x99,0xff,0xbc,0x1c,0x02,0x6a,0x56,0x07,0xa2,0x9d,
- 0x6d,0xcd,0x7b,0xa1,0x68,0x42,0xdf,0xcd,0xb8,0x33,0xc0,0x36,0x9e,0x49,0x7b,0xbe,
- 0xf1,0x85,0x28,0x5d,0x7b,0x8f,0x89,0xff,0x07,0xf5,0x11,0xa3,0x4e,0x12,0x70,0x11,
- 0x2b,0xde,0x3f,0xc6,0x07,0x68,0x10,0xf5,0x53,0x42,0x74,0x81,0x21,0x34,0xa2,0xe0,
- 0x21,0x09,0xf9,0x03,0x79,0x9c,0xf6,0xaa,0x32,0x60,0x0d,0xe7,0xac,0xe5,0x6a,0xe5,
- 0xf5,0xd8,0x7e,0x50,0x76,0x79,0xad,0x7e,0x31,0x9a,0x61,0xc4,0x7f,0x37,0x08,0x6a,
- 0x4a,0xfe,0xcf,0x4a,0xbe,0x08,0x9c,0x46,0xe0,0x4b,0x28,0x8b,0xf1,0x3f,0x9f,0x57,
- 0x5f,0x39,0x68,0xeb,0x45,0x8b,0xfe,0x3c,0xdf,0x3f,0xfa,0xa4,0x24,0xfe,0x01,0x20,
- 0xcd,0xb0,0x85,0xd3,0xcd,0x28,0xff,0xce,0x00,0xcc,0x7f,0x12,0xa0,0x75,0xa8,0xa1,
- 0x04,0xfe,0x77,0x06,0xe6,0xbf,0x66,0xb4,0xe9,0x39,0xb9,0xe6,0xbf,0x37,0xf8,0x3f,
- 0xb9,0x3f,0xe3,0x39,0x44,0x40,0xfe,0xdd,0x81,0xe9,0xef,0xdf,0x9f,0x18,0x1b,0xfc,
- 0x9f,0xdc,0xff,0x7f,0xf7,0xef,0x3f,0xd8,0xfa,0x2b,0xbc,0x97,0xdf,0x00,0xfc,0x08,
- 0xa6,0xea,0xff,0xce,0x40,0xfa,0x7f,0x7c,0xff,0xff,0x3f,0xaf,0xbf,0xa4,0xb0,0xbf,
- 0x62,0xcd,0x05,0x53,0x7f,0x9f,0xff,0xbd,0xbf,0x8a,0x8a,0xbf,0x66,0x96,0xcd,0xf6,
- 0xff,0xf0,0xf6,0xff,0x2f,0xfc,0x55,0x5d,0xbd,0x7a,0x55,0xff,0x5f,0x0c,0xfe,0xbf,
- 0x3c,0xff,0x3f,0xd8,0x79,0xfc,0xbf,0xf2,0xf0,0xff,0xca,0xc3,0xff,0x83,0xf5,0xff,
- 0xbf,0xf2,0xf0,0x7f,0xf5,0xf7,0x1f,0x4d,0xfe,0xfc,0xc7,0x9a,0xcf,0xf9,0x21,0x8f,
- 0x2a,0xb3,0xf5,0xac,0x51,0xb9,0x0c,0xfe,0x02,0xa5,0xaa,0x4d,0x17,0xcb,0xc9,0x7a,
- 0xb5,0xca,0x67,0x5b,0x29,0x56,0xc0,0x81,0xfe,0xd9,0x43,0xd6,0xb1,0x49,0xe6,0xfc,
- 0xa8,0xa8,0xda,0xa2,0xd9,0xcf,0xd3,0xcd,0xd9,0x85,0x6c,0x7d,0x6f,0x91,0x2a,0x8b,
- 0x7d,0xbf,0x91,0xd6,0x07,0x4b,0x7c,0x8b,0x7a,0xb2,0x7f,0xa7,0xb6,0xa9,0x65,0x11,
- 0xca,0xf9,0x04,0x92,0xfe,0xb1,0x6d,0x5a,0xe3,0xe4,0x90,0x6e,0x99,0x4d,0x9e,0x55,
- 0xb7,0x56,0xab,0xea,0x0d,0x1b,0xd3,0x1d,0x5a,0x53,0x7a,0x21,0x27,0x1e,0xc9,0x64,
- 0x4d,0x85,0xf6,0x6b,0xfa,0xc3,0x4e,0x19,0x22,0x9c,0x56,0x8b,0xf3,0x03,0xb3,0x36,
- 0x20,0x5a,0x4e,0xc0,0xce,0x03,0xaf,0x25,0x20,0xf7,0x90,0x6d,0xa4,0x89,0xf1,0x40,
- 0x61,0x76,0x32,0x3f,0x4a,0xc8,0x7d,0x96,0x1d,0xd4,0xed,0x7a,0x96,0xd1,0x86,0x03,
- 0x1e,0x66,0xb6,0xb5,0x4d,0xf9,0x81,0x43,0xe4,0x9f,0x34,0xb9,0x47,0x74,0xc2,0x9d,
- 0x21,0x35,0x6a,0x0d,0x93,0x41,0x53,0x7c,0xf0,0x59,0xed,0x72,0xf0,0x77,0xba,0xed,
- 0x84,0xf0,0x05,0xa7,0xc5,0x4e,0xb7,0xe9,0x35,0x97,0x94,0x8b,0xf0,0x73,0x2f,0x07,
- 0xd2,0xf4,0x15,0xa1,0x6a,0xd4,0x36,0x5a,0xd0,0x65,0xaa,0x4f,0xef,0x14,0x0e,0x68,
- 0xee,0x88,0x75,0xbb,0xd8,0x09,0xef,0xd1,0xca,0xe6,0xcc,0xa0,0xa8,0xa6,0x1d,0x62,
- 0x2f,0x6b,0x06,0x43,0xc5,0x21,0xcd,0x48,0x9d,0x32,0xe5,0x47,0x41,0xba,0xda,0x42,
- 0x6f,0x39,0x96,0xc9,0x69,0xf7,0xd6,0xf4,0x96,0x34,0xa4,0x03,0xc9,0xda,0xb0,0x9e,
- 0xa7,0x6d,0x4c,0x23,0x15,0xf8,0x22,0x2f,0x9c,0xb4,0x86,0x53,0xf8,0x91,0x6a,0xa1,
- 0x31,0xa2,0x0e,0xd2,0x6c,0x14,0x7e,0x8f,0x6b,0x4e,0x6f,0x0e,0x90,0x03,0x81,0x26,
- 0x5e,0xbf,0x53,0x6e,0x19,0x10,0xb6,0xf2,0xfc,0x0d,0x1e,0x1f,0x9c,0xf8,0xe3,0xf9,
- 0xe1,0xeb,0x79,0x52,0xf4,0xca,0xeb,0xce,0x19,0xf5,0x71,0x37,0xfc,0xc0,0xf3,0xb6,
- 0xb4,0x26,0x28,0x0c,0x8b,0x3f,0xb1,0x4c,0x2b,0xfc,0x97,0xc6,0x5b,0x7c,0x94,0x27,
- 0x0e,0x4d,0xfc,0xd5,0xf1,0x36,0x1c,0xe0,0xea,0xb5,0x2a,0xe2,0x5a,0xf8,0x3d,0xad,
- 0xa0,0x37,0x09,0x72,0xbd,0xd4,0x24,0xe4,0xd6,0xaf,0x9f,0x23,0x8e,0x90,0xf7,0x83,
- 0xae,0x08,0xef,0x0f,0x9b,0x8c,0x0f,0xde,0xb4,0xcd,0xf3,0x99,0xc2,0xdd,0x86,0x93,
- 0x8e,0x6b,0x7f,0xaf,0x55,0xe9,0x37,0xf7,0xe2,0x7e,0xf8,0x79,0x6d,0x15,0xe3,0x1d,
- 0xf4,0xe0,0x8f,0x02,0x27,0x56,0x15,0x07,0x13,0xf1,0x41,0x87,0xb4,0x0d,0x0e,0x08,
- 0xbc,0xc8,0xa2,0xa6,0x13,0xde,0x71,0x55,0x9e,0xc0,0xfd,0x13,0x52,0x7e,0xcf,0xdc,
- 0x5a,0x5b,0x58,0x74,0x7a,0x0e,0x91,0x69,0x3c,0x90,0x9a,0x8c,0x0f,0x46,0x94,0xcd,
- 0xb0,0x06,0xf2,0xa3,0x4d,0x0d,0xf6,0x5c,0xfa,0x47,0xa1,0xf8,0xd8,0x22,0xdd,0x33,
- 0x95,0x3e,0xa7,0x19,0xfc,0xba,0x53,0xb5,0x35,0xb1,0x8c,0x71,0x73,0x7c,0x30,0x0b,
- 0xb6,0xb2,0xe7,0xa3,0x8b,0xf2,0xbc,0xbf,0x74,0xad,0x09,0x15,0x77,0xc8,0x75,0x64,
- 0x23,0xac,0x09,0xe5,0xfb,0xe4,0xfa,0xec,0x69,0xb0,0x9a,0xcd,0xf2,0x05,0x56,0x92,
- 0x13,0xa6,0xf8,0xe0,0x6f,0xa0,0x29,0xc3,0x30,0x4b,0x57,0xb1,0xc7,0x89,0x33,0x2a,
- 0x0b,0x64,0x16,0x6c,0x85,0x2e,0x26,0x3b,0x8a,0x9c,0xb0,0x11,0x4a,0x78,0x7f,0x58,
- 0x53,0x7c,0x70,0xca,0xde,0xbe,0x23,0x42,0x07,0x93,0x43,0x39,0x7b,0xe9,0x41,0xa8,
- 0x64,0x47,0x87,0x6f,0xd9,0xcb,0x0e,0xc2,0x43,0xcc,0x76,0xe6,0x1b,0x0e,0xfa,0x3a,
- 0x94,0x74,0x39,0x43,0xe2,0x85,0xe4,0xfd,0x61,0xc2,0x4d,0x04,0x3e,0x83,0x1f,0x7b,
- 0x12,0xa7,0xa9,0x19,0x8e,0xe7,0xeb,0xc2,0xb0,0x1a,0xe3,0x07,0x30,0xc5,0x07,0x87,
- 0x0c,0x36,0xa4,0x9b,0x83,0xe2,0x72,0x7a,0x00,0xca,0x7c,0x4b,0x94,0x58,0xa2,0xb8,
- 0x66,0x6d,0x6f,0x8a,0x11,0x25,0x19,0xf9,0xe1,0x13,0xf3,0x99,0xb4,0x9c,0x34,0x56,
- 0x93,0x6a,0xf9,0x3a,0xbb,0xd1,0x1f,0x4d,0x6f,0xe1,0x81,0xc5,0xb7,0xa4,0x2c,0xcd,
- 0x92,0x6b,0x9f,0x4e,0x5b,0x88,0xbd,0xc1,0xc1,0xf3,0x3f,0x27,0xfe,0xf2,0xa4,0x42,
- 0xd2,0x96,0x61,0xaf,0x95,0x83,0xa4,0x5f,0x68,0x01,0x7b,0x9d,0x11,0xcf,0x6a,0x61,
- 0x33,0x34,0xcb,0x06,0xcb,0xf4,0x34,0x7e,0x85,0x9a,0xe3,0x83,0x20,0xa5,0x91,0x38,
- 0x1b,0x52,0x9a,0x75,0x0b,0x7e,0xef,0x0c,0xee,0x26,0xda,0x20,0x65,0x55,0x2f,0x74,
- 0x91,0x34,0xa1,0x45,0x63,0x0d,0x29,0xf9,0x99,0x2b,0x33,0xb8,0x7d,0xda,0xd1,0x78,
- 0x23,0x4f,0x8b,0x8a,0xa7,0x25,0x53,0x12,0xc1,0xf3,0x98,0x15,0x23,0x4a,0x32,0x2a,
- 0x76,0x3f,0x35,0xf9,0xc7,0x3e,0x27,0x57,0xb5,0x12,0x5e,0x04,0xf7,0x08,0x79,0xab,
- 0xfa,0x69,0x4d,0x38,0x2e,0xbf,0x04,0xe3,0x5a,0x95,0x76,0xb4,0x41,0x7c,0x2d,0xed,
- 0x32,0x2f,0x9d,0x0b,0x8a,0xbf,0x35,0xe5,0x47,0x7d,0x11,0x3a,0xdc,0x3f,0x77,0x99,
- 0xed,0x98,0x38,0x24,0x1d,0xe6,0xf5,0x0b,0x9b,0x26,0xed,0x84,0xc3,0x24,0xd6,0x4f,
- 0x4d,0x1b,0xf7,0x14,0x70,0x62,0xa5,0x4f,0x4d,0xf9,0x51,0xa7,0xfd,0x01,0x56,0xa6,
- 0x88,0x8c,0x0c,0x33,0x7c,0x1e,0x26,0x83,0x78,0xbf,0xb7,0xeb,0xde,0x12,0x66,0xf0,
- 0x23,0xf5,0x48,0x65,0x54,0x4e,0x89,0x0f,0xa6,0xf5,0x77,0x34,0xc6,0xaa,0xff,0x3a,
- 0xd5,0x0d,0x38,0xf8,0xd5,0x26,0xde,0x1f,0x36,0xc6,0x07,0xde,0xdf,0xb8,0x1b,0x54,
- 0xcf,0x22,0x73,0x7c,0xb0,0x7d,0xca,0x2a,0x83,0x16,0x7b,0x51,0xac,0x2d,0xc8,0x8c,
- 0x5e,0x5c,0xcf,0x5a,0x2b,0xcf,0xcf,0x17,0x63,0x8e,0xca,0x19,0xb7,0x1b,0xfc,0x00,
- 0x13,0xf3,0x3b,0x50,0x5e,0xf5,0xea,0x46,0xb6,0xdb,0xeb,0x9e,0xb7,0x78,0x1a,0xd8,
- 0x66,0x7f,0x27,0x9e,0x88,0x9f,0xf1,0x7a,0x40,0x1e,0xff,0xed,0xd0,0x6c,0xe6,0xf8,
- 0xe0,0xb0,0x50,0x98,0x68,0x8b,0xa6,0x8c,0xd3,0x58,0x7e,0x54,0x2e,0x77,0x9c,0xae,
- 0x37,0x12,0xa5,0x72,0x8c,0x44,0x32,0x53,0x7c,0x50,0x51,0x8d,0x26,0x20,0x95,0xac,
- 0xc9,0x07,0x83,0xb8,0xda,0x59,0xcd,0xa2,0x8f,0x8e,0x15,0x96,0x29,0xab,0x9b,0x45,
- 0xa3,0x3e,0x8e,0xa6,0xe6,0x47,0x09,0x0e,0x58,0xa7,0x14,0xb0,0xcc,0x11,0x82,0x03,
- 0x56,0xc4,0xa8,0x9a,0x53,0xae,0xee,0x67,0xcb,0x58,0xc6,0xb0,0xf8,0x63,0xf0,0x93,
- 0x59,0x41,0x39,0x64,0x8a,0x0f,0x3a,0x24,0x2b,0x69,0xd2,0xba,0x4e,0x65,0xcc,0x21,
- 0x8b,0x33,0x1e,0xd7,0xd5,0xa8,0xec,0x4a,0x5f,0x2c,0xec,0x18,0x2c,0xd4,0x2d,0xf3,
- 0x88,0xcc,0x1e,0x87,0x15,0x85,0x3c,0x5f,0x2e,0x19,0x1f,0x84,0x5c,0x58,0x05,0xcf,
- 0x9f,0xce,0xc8,0xf3,0x57,0x80,0x48,0xff,0xeb,0xb2,0x8c,0x87,0xc8,0x54,0xd8,0xd5,
- 0x9c,0xaf,0x67,0xac,0xf4,0xff,0x27,0x78,0xc2,0xf5,0x00,0x8f,0xef,0xd7,0x25,0xe3,
- 0x83,0x01,0xce,0x56,0x34,0xf3,0x94,0x75,0xe5,0xdc,0xef,0xce,0xf9,0x63,0xa3,0xc0,
- 0xc3,0x82,0xdf,0x81,0xcf,0xd8,0x4b,0xd1,0x75,0x2b,0x85,0x4a,0xf2,0x47,0xff,0x4f,
- 0x43,0xb6,0x95,0x5f,0x37,0xc5,0x07,0xad,0xcf,0xc0,0x98,0x36,0x47,0xcf,0x0c,0x7e,
- 0xe3,0x30,0xbb,0x08,0x95,0x6f,0x67,0xbd,0xcc,0xdb,0x9e,0x72,0x47,0xbd,0xca,0x19,
- 0x93,0x28,0x27,0x0a,0xf8,0x86,0x89,0x1f,0x72,0xd5,0xd5,0xc0,0x51,0xbd,0x34,0x6a,
- 0x7b,0xd2,0x56,0x19,0xba,0xcc,0x4a,0x4f,0x2d,0xde,0x57,0xb3,0x1f,0x3e,0xf6,0x7f,
- 0x2d,0x7a,0xf7,0x78,0x41,0x99,0x72,0xc8,0x3f,0x57,0xb5,0xee,0x16,0x93,0xf2,0xa1,
- 0x6b,0xf2,0x2f,0xa3,0xab,0xe8,0x96,0x7e,0xf9,0xd1,0xd5,0x53,0xd5,0x33,0x70,0x4b,
- 0x5d,0xe6,0xff,0x20,0xb9,0xca,0x9a,0x90,0xa3,0x8f,0x8e,0x91,0x4d,0x64,0x4d,0x30,
- 0x5f,0x72,0xac,0x14,0x3f,0x32,0xc5,0x07,0x9f,0xae,0x5b,0xc3,0xf2,0x35,0xb9,0x9a,
- 0x4c,0x6d,0x7f,0x09,0x0a,0x7a,0xaf,0x6f,0xf0,0xb7,0xe3,0x6b,0xde,0xa2,0x5b,0xce,
- 0x91,0x5c,0xf8,0x67,0xf2,0x75,0x96,0xf1,0x30,0x79,0x5d,0x9b,0x98,0xef,0xcb,0x7d,
- 0x03,0x02,0x3a,0x70,0xa1,0x3d,0x0b,0x3a,0x40,0x3d,0x96,0x31,0xc7,0x4e,0xc8,0xe3,
- 0x50,0x3f,0x4a,0x15,0x4f,0x33,0xfc,0x8a,0xd9,0xb5,0x0c,0x17,0x09,0x26,0xbf,0x57,
- 0xee,0xb3,0xe4,0x80,0xbf,0x9b,0xd9,0xda,0x49,0x25,0xcf,0xf6,0x39,0x97,0x79,0x9e,
- 0x3c,0xc7,0x4e,0x80,0x7b,0x28,0xeb,0x29,0xd1,0x81,0x1a,0xa7,0x8c,0x65,0x86,0xc9,
- 0x11,0xe6,0x4b,0x3c,0xcf,0x36,0xf5,0xe2,0x22,0x23,0x09,0x7c,0x45,0xf3,0x29,0xa8,
- 0x0c,0xda,0xba,0xc5,0x0f,0xe1,0x23,0xcf,0x31,0x7d,0x09,0x8a,0x05,0x81,0x67,0x94,
- 0x65,0x85,0x27,0x99,0xe3,0x83,0xbf,0xd4,0x0e,0x43,0x69,0x08,0x4f,0xd3,0x4f,0xe0,
- 0xa0,0x32,0x97,0x97,0x45,0xa7,0x87,0x0e,0x0a,0x55,0x3a,0x5e,0x59,0xc1,0xae,0x42,
- 0x01,0x4f,0x9d,0x52,0x4d,0xf1,0xc1,0x12,0x68,0x6d,0xef,0xe8,0x47,0x6d,0xe5,0x54,
- 0x9e,0xaf,0xb3,0x87,0xe4,0xb0,0xa5,0x08,0x5e,0x60,0x0f,0xea,0x87,0xa6,0xa6,0x3f,
- 0xcb,0x03,0x3d,0x51,0xd4,0xbf,0x66,0x7e,0x00,0x9e,0xc6,0x69,0x6f,0x5a,0xd4,0xee,
- 0x59,0xc1,0xab,0xb7,0x6a,0x2d,0x61,0x32,0x1d,0xda,0xfa,0x7e,0x18,0x6b,0x14,0xbb,
- 0x17,0x8a,0x4e,0xd3,0xb0,0x39,0x3e,0x28,0x59,0xed,0x22,0x84,0x98,0x9c,0xed,0xb1,
- 0x42,0x08,0x54,0x41,0x76,0x3d,0x05,0x74,0xab,0xea,0xec,0xc7,0x63,0xd5,0x0c,0x3b,
- 0x7c,0x54,0xa3,0x6e,0xd2,0xd7,0x9c,0xd8,0xa0,0x99,0xf7,0xc2,0x6b,0xbc,0x2d,0xe3,
- 0xc6,0xa6,0x9f,0x28,0x11,0xe8,0xd6,0xb2,0xce,0x7d,0xa3,0x10,0x0e,0x39,0xe6,0x0d,
- 0x1a,0x85,0x72,0x57,0x79,0x46,0x59,0x58,0xf4,0x25,0xe3,0x83,0x37,0x8d,0xc4,0xd8,
- 0x2f,0xbd,0x39,0x97,0x88,0xc1,0x86,0x3d,0x6a,0x24,0x8a,0x2f,0x88,0xac,0xdf,0x20,
- 0x9e,0xa7,0x5f,0xfa,0x5e,0xd2,0x6c,0xe7,0x73,0x4c,0xfc,0x48,0x69,0x5f,0xc0,0x38,
- 0x73,0x83,0x6d,0x4c,0x5c,0xa6,0x1d,0xe5,0xcb,0x3e,0x26,0x8e,0x86,0x2e,0x3b,0xe6,
- 0x46,0x33,0x07,0xc5,0x2b,0x70,0xd2,0x35,0x37,0xcf,0xaa,0xdf,0xe8,0x4a,0xf0,0x99,
- 0xe8,0x01,0x5e,0xe4,0x65,0x77,0xf1,0x6a,0xb8,0x60,0x9b,0x6e,0x47,0xb4,0x43,0xde,
- 0x87,0xdd,0x7c,0xb0,0x8f,0x8c,0xb0,0x40,0x83,0x5d,0xa1,0xab,0xd3,0x93,0xf9,0x51,
- 0x11,0xb4,0x09,0xb6,0x0b,0x0e,0x09,0x6f,0xa1,0x41,0x53,0xb5,0x1a,0x69,0xe5,0x6d,
- 0x2f,0x76,0x40,0x61,0x1f,0x0a,0xde,0x11,0x15,0x37,0x82,0xd5,0x22,0xf9,0x93,0xf1,
- 0xc1,0xa8,0xd4,0xa9,0xe0,0xfd,0x19,0xa2,0xa3,0x57,0x2d,0x32,0xd8,0x7b,0x71,0xf5,
- 0x3e,0x81,0xbd,0x0c,0x70,0x90,0x3e,0x62,0x69,0xd1,0x79,0xeb,0x10,0x53,0x7e,0x94,
- 0x90,0x76,0x46,0x39,0x1b,0xea,0xce,0x46,0x34,0xf2,0x3d,0xa3,0x1a,0x2b,0xcb,0xc8,
- 0x27,0xec,0x2d,0xd3,0xef,0x0a,0x8b,0x07,0xf2,0xde,0xd2,0x5f,0x6e,0xc8,0x6a,0x6f,
- 0x4a,0xe6,0x47,0x85,0x26,0xef,0xd4,0x2e,0x93,0xca,0xe5,0x4b,0x2e,0xe5,0x8c,0x25,
- 0xcb,0xbe,0x2e,0x73,0xfe,0xa8,0x28,0x19,0xeb,0xf8,0x5c,0x58,0xc0,0x32,0xf5,0x9a,
- 0x24,0xfe,0x39,0xae,0x74,0x6a,0xe3,0x3e,0xb7,0x62,0xe5,0x69,0x57,0x3c,0x51,0x1c,
- 0x07,0x1f,0xc2,0x21,0x56,0xd9,0x87,0x83,0x4f,0xe0,0xed,0x3b,0x2b,0x97,0xda,0x76,
- 0x9a,0xf3,0xa3,0xd2,0x66,0xf0,0x68,0x54,0x07,0x0d,0x7b,0xa2,0xa8,0xe8,0x63,0x69,
- 0x5d,0xac,0x09,0x1e,0x3c,0x41,0x43,0x64,0xc4,0xde,0xb2,0xb8,0xc4,0x27,0x6e,0x10,
- 0xcd,0xf1,0xc1,0x74,0x36,0x5b,0x57,0x59,0xc6,0x1c,0xbf,0x0e,0x5b,0x25,0xbb,0x9e,
- 0xe1,0xca,0x7e,0x9d,0x67,0xf0,0x0e,0xd6,0x29,0xe4,0x48,0xce,0x46,0xe6,0x0c,0xb6,
- 0x3d,0x6f,0x4f,0xe2,0x9f,0x51,0xe5,0x3a,0xfa,0xbb,0x70,0x7e,0xe8,0xce,0x95,0xe4,
- 0x61,0xed,0x39,0x96,0x3f,0x74,0xcb,0x4a,0x94,0xf6,0xab,0x9a,0x8b,0xa3,0xf4,0xd1,
- 0xec,0x2b,0x91,0xb4,0x8e,0xe2,0x90,0x7c,0x67,0x7a,0x32,0x3f,0xaa,0x3e,0xcf,0x0a,
- 0xa3,0x3d,0x2e,0x5f,0xa6,0x0b,0x41,0xc8,0xfb,0x92,0x7b,0x38,0xd3,0xe8,0x0f,0x22,
- 0x94,0xe8,0xce,0x1b,0x26,0x0d,0xb0,0xc1,0xc9,0x15,0xf7,0xa0,0x46,0x36,0xf5,0x47,
- 0x9b,0xb2,0x0f,0x3e,0xc7,0xd5,0x28,0x41,0x90,0xa3,0xbd,0x87,0x40,0xc8,0xc9,0x69,
- 0x21,0x0d,0xf9,0x73,0xb6,0xe0,0x64,0xe0,0xf2,0xad,0x3f,0x47,0xf9,0xfc,0x8d,0x60,
- 0x62,0x7d,0x1c,0x52,0x27,0x9c,0x65,0xf3,0x98,0xb5,0x3c,0x27,0x0b,0xde,0x31,0xfa,
- 0xa3,0xe5,0x8c,0x28,0x47,0x25,0xa3,0x3f,0xc8,0x90,0x74,0x04,0x4a,0xc1,0x19,0x15,
- 0x3d,0x89,0xf5,0x1f,0xa1,0x9b,0xe0,0x73,0x1e,0x3d,0x6f,0x10,0xef,0x83,0x35,0x7a,
- 0x2c,0xcd,0x80,0xae,0xf1,0x17,0xeb,0xb2,0x2f,0x9b,0x27,0x36,0x6f,0x61,0x54,0x13,
- 0x93,0xfc,0x90,0x3c,0x3f,0x6a,0x17,0x9b,0xe9,0xcb,0x58,0x69,0x9f,0x0b,0x3b,0x42,
- 0x06,0x1f,0xf8,0x11,0x58,0xc3,0x2b,0x04,0x57,0xce,0xb8,0x02,0xdd,0x7e,0xd5,0x77,
- 0x67,0xb9,0x29,0xff,0x61,0xb1,0xb4,0x16,0x76,0x44,0xd4,0x37,0x33,0x14,0xcf,0x1d,
- 0x88,0x1e,0x3b,0x38,0xba,0x3e,0x82,0x12,0xde,0xa9,0xcb,0xd3,0xc9,0xe1,0xc5,0x19,
- 0x5e,0x7b,0x43,0xc6,0x54,0x8b,0x89,0x1f,0x52,0xea,0x82,0x2b,0xda,0x6d,0xcd,0x99,
- 0x5d,0x8f,0x97,0x73,0x5a,0x6c,0x66,0x45,0xb4,0xc3,0x8e,0xf0,0x08,0x69,0x54,0xbc,
- 0x48,0xee,0x66,0xa5,0xa1,0xcc,0x8f,0xc4,0x79,0x26,0xfe,0xa5,0x90,0x30,0xac,0x54,
- 0x42,0x09,0xcb,0x39,0x05,0x4b,0x8d,0x46,0xb1,0x08,0x0c,0x0c,0x7e,0x6c,0xd6,0x14,
- 0x2d,0x1c,0x93,0x2b,0xd3,0xb3,0x58,0xd3,0x46,0x73,0x7e,0x14,0x8c,0x4f,0xae,0xf4,
- 0xf1,0xb6,0x59,0xea,0x43,0xc4,0xcd,0xab,0xa5,0x86,0xb4,0x03,0x01,0xa3,0x90,0xfc,
- 0x8c,0x72,0xa0,0xc3,0x5d,0x6f,0x9d,0x4a,0x88,0x09,0xff,0xfc,0x17,0x3c,0x4d,0x25,
- 0x1e,0xcb,0x66,0xf2,0x01,0xdb,0x0d,0x65,0x9c,0xef,0xe8,0x0c,0x3c,0xe6,0x77,0x6a,
- 0x8e,0x20,0x79,0xc3,0xd7,0xc2,0xec,0xf5,0x46,0x45,0xc6,0xc4,0x79,0x2f,0x4f,0xfb,
- 0x3a,0x2a,0xe5,0xac,0xda,0xbc,0xcd,0x64,0x48,0xe3,0xfd,0x4c,0x8d,0x34,0x9e,0xb6,
- 0xfc,0x07,0xef,0x47,0xd8,0xb3,0x0d,0x78,0xc6,0x14,0x35,0xf3,0x03,0xa8,0xb9,0x12,
- 0x6c,0x27,0xce,0x6a,0x8b,0x72,0x0f,0x6f,0x93,0x51,0xe8,0x35,0xe2,0x83,0x8d,0xf0,
- 0x20,0x87,0x3d,0x1f,0x18,0x1d,0x43,0xf2,0xcc,0xfc,0x48,0x2b,0x6f,0x8a,0xe5,0x47,
- 0x59,0x63,0xf9,0x60,0x46,0x58,0xd0,0xa8,0x8f,0x13,0xac,0x3c,0x42,0xca,0x89,0x22,
- 0x9d,0x4c,0xfe,0xed,0xa4,0x44,0x7e,0xd4,0xe4,0xf3,0x3c,0x3f,0xea,0x9b,0x1c,0xbd,
- 0x48,0xe3,0xb1,0xfc,0xf0,0xcf,0xc9,0x65,0xc4,0x3f,0xb6,0xe3,0x39,0xc7,0x49,0x8c,
- 0x1f,0xe0,0x6b,0x0f,0x26,0xf3,0xa3,0xa6,0xf0,0xf9,0xf3,0xeb,0xac,0x83,0x93,0x70,
- 0xa0,0x1a,0x40,0xe2,0xbc,0x7a,0x94,0x17,0xf2,0x04,0xc5,0x5b,0x39,0x3f,0xb6,0xc7,
- 0x7a,0xec,0xf5,0x4f,0x93,0xf9,0xdb,0x88,0x3f,0x7b,0x24,0xbb,0x54,0xc7,0x48,0x54,
- 0x1d,0x53,0xca,0x2c,0x94,0xc7,0x07,0x03,0xd2,0x3c,0x52,0xd7,0x28,0xd6,0xb3,0x88,
- 0xda,0x01,0x8e,0x66,0x13,0xfe,0xa9,0x43,0xf9,0xb3,0x1b,0x1c,0x3e,0xaa,0x64,0xf7,
- 0x2b,0xdb,0x41,0xad,0xb3,0xf0,0x34,0xf8,0x46,0xe6,0xac,0xc6,0xf7,0x2d,0x64,0xdb,
- 0x7f,0xa0,0x2e,0x8c,0x64,0xfb,0x8f,0x25,0xf2,0xdf,0xda,0x73,0x8d,0xfc,0x28,0x4e,
- 0xe2,0x31,0x42,0x39,0xdf,0x26,0x2e,0xfb,0x10,0x69,0x91,0x68,0x35,0x0e,0x56,0x68,
- 0x6d,0xd5,0xf6,0x85,0xf4,0x17,0x8a,0x29,0x3f,0x4a,0x79,0x96,0x9e,0xf5,0x95,0x6b,
- 0xce,0x60,0xf6,0x19,0xef,0x6d,0x88,0x66,0x79,0x3e,0xbc,0x7e,0x00,0xf1,0x12,0x3e,
- 0xff,0x8c,0xc9,0xe3,0x9c,0x3f,0xa4,0x5d,0x4d,0xe2,0x9f,0x08,0x74,0x06,0x38,0xfe,
- 0x59,0xb2,0xc1,0x7e,0x46,0xe2,0x6d,0x41,0x62,0xf9,0xf3,0xfa,0xa3,0x1e,0x9b,0x22,
- 0x0e,0xc9,0xbb,0x95,0x4a,0x5f,0x0a,0xfe,0xa1,0xbc,0x3e,0x4e,0x43,0x50,0xed,0xc7,
- 0x65,0x1f,0x26,0x7c,0xfd,0x0b,0x4e,0x41,0x24,0xe3,0x67,0xb8,0xec,0x46,0xc5,0xa2,
- 0x9b,0x2e,0x5e,0x95,0xd3,0x6a,0x8a,0x0f,0xce,0xaf,0xde,0xaf,0xcf,0x0a,0xb6,0x45,
- 0x27,0xf5,0xb0,0x56,0x7f,0x51,0x63,0x16,0xef,0x86,0xb6,0x2e,0xfa,0x73,0x96,0x19,
- 0x22,0x79,0x64,0x9d,0xaf,0x20,0x44,0x87,0x26,0x79,0x12,0xa7,0x8b,0x4a,0x77,0xe1,
- 0xb1,0x72,0x6e,0x93,0x55,0xf7,0x80,0xb2,0x05,0xad,0xcb,0xeb,0x5d,0x33,0xfa,0x01,
- 0xcf,0x0b,0xef,0x5f,0x99,0xd6,0xfb,0xbc,0xaf,0xa3,0x81,0x4e,0x4b,0x4f,0xe2,0x1f,
- 0x50,0xbe,0x09,0xbb,0x68,0x31,0x3b,0xd4,0x40,0xf6,0xc3,0x16,0x3a,0x93,0xc7,0xcb,
- 0x0e,0xe3,0xb1,0x9d,0xa9,0xd3,0x51,0x54,0x42,0xab,0x20,0xdf,0x53,0xe7,0x4d,0x4f,
- 0xe2,0x1f,0xda,0xfe,0x6d,0x78,0x99,0x2d,0x40,0xd8,0x83,0x20,0xf3,0x19,0x56,0x7a,
- 0xfa,0xa6,0x95,0xe2,0xbb,0xe4,0xb5,0xe6,0x59,0xd1,0xba,0x95,0x72,0x25,0xfc,0x89,
- 0xfd,0xc8,0xe7,0x5c,0x2a,0xb6,0x26,0xf1,0xcf,0x94,0x90,0x70,0x21,0x96,0xed,0xc3,
- 0xf9,0xd6,0x2a,0x23,0x3c,0x0d,0x95,0x18,0x44,0xd0,0x2e,0x71,0x94,0x5c,0x86,0x9f,
- 0x6b,0xeb,0xcd,0xfc,0x00,0xbe,0xdc,0x97,0xe1,0x8f,0x46,0x37,0xd8,0x9a,0xfd,0xf4,
- 0x28,0x73,0x9f,0x36,0xfa,0xa3,0x0d,0x18,0x8d,0x62,0x49,0x99,0x7e,0x94,0x55,0x85,
- 0xe8,0x98,0xb8,0x34,0xb1,0xfe,0xcf,0xd3,0x0d,0xb0,0x2b,0x3b,0xbf,0x5f,0x6e,0x10,
- 0x37,0xc3,0x1f,0xd5,0x5b,0x87,0xbb,0x78,0xbc,0xaf,0x79,0x72,0x7e,0x33,0x75,0x89,
- 0x0d,0x1e,0xb4,0xc8,0x02,0xf4,0x3b,0xa4,0x28,0x31,0x9f,0x77,0x64,0xdd,0x17,0xcb,
- 0xe7,0x1c,0xd5,0x9e,0x83,0xfb,0x79,0x63,0xdc,0x01,0xdc,0x53,0xd3,0xb9,0xe0,0x9a,
- 0xca,0x56,0x41,0xb1,0xd0,0xf5,0xf0,0x31,0x29,0x19,0x1f,0x94,0x18,0x74,0xab,0x6a,
- 0x50,0x2e,0x27,0x1d,0xb0,0x43,0x98,0xc1,0xe5,0xcf,0x61,0x3f,0xd3,0x50,0x11,0x54,
- 0x90,0xc5,0x74,0xa3,0x8e,0x0b,0xbb,0xcd,0x63,0xca,0x8f,0x9a,0xa2,0x4b,0x9f,0x69,
- 0xee,0xe7,0x11,0xc6,0x8c,0xb0,0x8f,0x85,0x02,0xae,0xbf,0x3e,0x81,0x48,0x75,0x99,
- 0x6e,0xdd,0xd7,0x24,0x09,0x91,0x87,0x2a,0xeb,0x07,0x02,0x45,0xb6,0x64,0x7e,0x94,
- 0xb0,0x05,0xe6,0x7b,0x2a,0x79,0x7e,0xf8,0x27,0x70,0xe3,0x44,0x7f,0x90,0xb1,0xea,
- 0x79,0x7a,0x49,0x58,0x3c,0x95,0x31,0x0c,0x95,0x75,0x36,0xbf,0xd8,0x95,0x90,0x6f,
- 0xf9,0x4a,0x18,0xde,0x85,0xd2,0xd7,0xf1,0x3c,0x5e,0xa5,0xaf,0x2a,0xbc,0x11,0xad,
- 0x78,0x15,0x22,0xb4,0x6a,0xd8,0x1a,0x6e,0xba,0x44,0x8e,0x4f,0x72,0xf3,0x7e,0x22,
- 0xf9,0xcb,0x27,0xe6,0x6f,0x91,0x96,0x41,0x6b,0xc8,0xde,0x2b,0x6f,0xf6,0xfc,0x05,
- 0x5e,0x94,0x62,0xfa,0x4b,0x09,0xf4,0x97,0xf0,0x8e,0x81,0xa7,0x15,0x34,0x3d,0xca,
- 0xe5,0xcd,0x7f,0x36,0xf3,0x63,0x2f,0x53,0x9e,0x52,0x3a,0x74,0xb9,0xc7,0x3f,0xc4,
- 0xf9,0x94,0x8c,0x7c,0x1e,0x12,0xd0,0x4b,0xf4,0xf6,0x30,0x39,0x23,0xec,0x69,0x26,
- 0x21,0xb9,0xeb,0x3a,0x35,0x89,0x7f,0xf0,0x1f,0xfe,0xca,0x30,0xea,0x3d,0xfd,0x8b,
- 0xb7,0x42,0x28,0x02,0x3c,0x3e,0xc8,0x60,0x05,0xcb,0xe3,0x7c,0xc8,0x1b,0x78,0xbd,
- 0x18,0x31,0xe1,0x73,0x1e,0x1f,0x3c,0xa1,0xb8,0x9b,0x8d,0x30,0xfa,0x21,0x98,0x3d,
- 0x98,0xc9,0xe3,0x8f,0x11,0xb2,0x42,0x77,0x6e,0x37,0x3a,0x34,0x71,0x7e,0xec,0x36,
- 0x35,0x3d,0x81,0x7f,0x7e,0x31,0x0a,0x23,0x85,0x55,0x8d,0xf8,0xbe,0xc7,0x11,0xdd,
- 0x55,0xbd,0x6d,0xc4,0x07,0x2f,0xf1,0xb4,0x16,0x0e,0x84,0x46,0x38,0xbf,0x31,0xcb,
- 0xe9,0x5a,0x9d,0xc4,0x3f,0xf1,0x6a,0xca,0x80,0xf8,0x85,0x72,0x84,0x55,0x45,0xd6,
- 0x76,0x17,0xb8,0x39,0x3f,0x92,0x7a,0x77,0x44,0x1c,0x27,0x07,0x58,0x29,0x35,0xf2,
- 0xbd,0x13,0xf3,0xdb,0x79,0x7e,0x78,0x8c,0x0d,0x80,0xb5,0xb1,0x59,0x43,0xf4,0x12,
- 0xb1,0x2b,0x78,0x45,0xa5,0xed,0xe4,0xc3,0x46,0x94,0xcf,0x85,0xb4,0x87,0x03,0xbb,
- 0x89,0xf3,0x9e,0xb6,0x36,0xde,0xed,0x9d,0x0c,0xa1,0x6c,0x72,0xea,0x96,0xd9,0x37,
- 0x30,0x69,0x07,0x94,0x34,0x2e,0x84,0xec,0x68,0x6d,0x8b,0xa4,0x6e,0xc1,0x1d,0x42,
- 0x84,0x89,0xf9,0xba,0xb4,0x2d,0x5e,0x4d,0xef,0x1f,0x51,0xdb,0x7c,0x25,0x7a,0x7d,
- 0x98,0x84,0xf8,0x7f,0xf1,0x0e,0x5e,0x96,0xc8,0x5b,0x67,0xaa,0xf8,0x21,0xc2,0x89,
- 0x7c,0x83,0xea,0x29,0x71,0x76,0xf4,0xb5,0x64,0x80,0xf3,0x1b,0xf7,0x2e,0x0e,0x17,
- 0xbc,0xa0,0x5e,0xd4,0xf3,0xd4,0xac,0x9e,0xff,0x32,0xcc,0x5a,0xb2,0xdd,0x3e,0x67,
- 0x58,0x54,0x12,0x78,0x2f,0x24,0xc4,0x69,0x9f,0x4f,0x89,0x97,0x24,0x5e,0xf6,0xd5,
- 0x36,0x2a,0xfe,0x44,0xbb,0x4a,0x7e,0x0e,0xb8,0x31,0x3e,0x62,0x57,0xfd,0x15,0x7c,
- 0xa1,0x52,0xf8,0xb1,0x63,0xf7,0x5f,0x25,0x3e,0x03,0x17,0xb4,0x0a,0xdd,0xea,0xca,
- 0x99,0xa9,0x5d,0xe4,0x8d,0x0b,0x11,0x6f,0x6b,0x11,0xde,0x5a,0xbd,0x7b,0x52,0x0a,
- 0x3f,0x64,0xec,0xf9,0xbb,0x78,0x98,0x38,0x30,0x2b,0x92,0x39,0x8a,0x86,0xc0,0x6e,
- 0x6f,0x49,0x35,0xbe,0xd1,0x21,0xed,0x4d,0x86,0xfa,0xa8,0xcc,0xc4,0x0f,0xa9,0x4b,
- 0x8b,0x63,0xeb,0x43,0xd3,0xfb,0xa5,0xb0,0xe4,0xe0,0xf5,0xec,0xcd,0xea,0x8e,0x6a,
- 0xa7,0x26,0x3a,0x10,0x28,0x36,0xea,0x0e,0x8d,0xba,0xec,0xc9,0xfe,0x68,0x63,0xca,
- 0x77,0x99,0xc1,0x06,0xb0,0x94,0xfc,0x01,0x76,0x32,0x67,0xb4,0x7e,0xfe,0x0d,0x4f,
- 0x4d,0x36,0x32,0xc6,0xff,0x87,0xe7,0x5d,0xe9,0x17,0xe1,0x99,0x3e,0xca,0x0b,0x5d,
- 0x27,0xee,0x5f,0x47,0xef,0xe6,0xfc,0x00,0xfd,0x36,0x59,0xec,0x87,0x73,0x50,0x11,
- 0xa1,0xf3,0xe5,0x66,0xf8,0x4c,0xaf,0xe8,0x9f,0x54,0x24,0xea,0xe4,0xd5,0x50,0x39,
- 0x73,0xce,0x37,0xfb,0x7f,0xa6,0xc4,0xd7,0xe7,0x18,0x0f,0xa3,0xd3,0xaa,0x41,0xdb,
- 0xf6,0x9a,0x7a,0xb8,0xc8,0xf9,0x91,0xce,0x8a,0xe7,0x61,0xbb,0x34,0x97,0x77,0x0c,
- 0x49,0xd6,0xc7,0x51,0xfc,0x5e,0xc6,0xfa,0xec,0x79,0x6e,0x31,0xef,0xf6,0x35,0x60,
- 0xdb,0x25,0x76,0x06,0x1e,0x66,0xee,0x7b,0x6c,0xe5,0x39,0xe5,0x70,0x96,0x27,0x42,
- 0x87,0xc5,0x83,0xc9,0xfd,0x90,0xc7,0xf3,0xc3,0x11,0xed,0xfc,0x93,0x7b,0xaa,0xb4,
- 0x2a,0xab,0x58,0xcf,0x98,0x2d,0x4e,0x0d,0xbd,0x0c,0xb7,0xb6,0x2f,0xe2,0x88,0xe8,
- 0x25,0xc8,0xaf,0x36,0xf2,0xc3,0x27,0xe6,0xab,0xf0,0x34,0x9d,0xcb,0x1e,0x88,0xca,
- 0x57,0xc8,0x3f,0x49,0x4f,0x6c,0x29,0x9e,0x28,0x03,0x9c,0x39,0x2c,0xff,0x84,0xdc,
- 0x00,0xfb,0x74,0x9e,0x3a,0x6e,0xaa,0x4f,0xa9,0x97,0x8c,0xfd,0xd6,0x2b,0xcf,0xf1,
- 0x97,0xb0,0xc7,0x11,0xf6,0xdc,0xe9,0x22,0x6b,0xb5,0xee,0x66,0x5c,0xe1,0x0a,0xff,
- 0xdd,0xda,0x76,0x9e,0x98,0xc7,0xf9,0x21,0x27,0xe6,0x0f,0x4f,0xe1,0x65,0x44,0x28,
- 0x4f,0xb6,0x89,0x8f,0xb2,0xb7,0x8d,0xb2,0x38,0x79,0x18,0xae,0xe8,0xf3,0x58,0xdb,
- 0x70,0x41,0xb9,0xf4,0x45,0xed,0x7f,0x67,0x06,0x3f,0xe4,0xc4,0xfb,0xd6,0x09,0xc9,
- 0xb6,0x20,0x64,0x98,0x56,0x2a,0x99,0xcd,0xa8,0x3b,0xc7,0xf2,0x66,0x20,0xfe,0x89,
- 0x65,0x10,0x11,0x5b,0x73,0x4a,0x7d,0x5c,0x67,0x2c,0x2d,0xea,0x29,0x5e,0x1d,0x8f,
- 0xfa,0x7d,0xf1,0x0d,0xe2,0x72,0x75,0x5c,0xa8,0xf4,0xa6,0x3d,0xc9,0x15,0x1f,0xdb,
- 0xc3,0x2b,0xe8,0xaf,0xe1,0x07,0x00,0xdc,0x2d,0x3d,0x08,0x63,0x9a,0x54,0xd5,0x1b,
- 0xd8,0x2c,0xae,0x80,0xdd,0xd5,0x25,0xfa,0x9d,0x86,0xff,0x21,0xdb,0xe8,0xf7,0x11,
- 0x35,0xe1,0x9f,0x42,0xd8,0x2d,0xf0,0x32,0xf6,0xec,0x21,0x4e,0xa3,0xed,0xa1,0xc1,
- 0x8d,0xc6,0x1d,0x38,0x0d,0xd4,0x10,0x22,0xa8,0x22,0x5f,0x4a,0x7e,0xb8,0x81,0x7f,
- 0x62,0xde,0x8f,0xd7,0x84,0x16,0x08,0x71,0x18,0x50,0x0b,0xdb,0x19,0xe7,0x87,0x24,
- 0xaf,0xd1,0xdd,0xa0,0xfa,0xf0,0x27,0x3d,0x89,0x7f,0x0c,0x7e,0x80,0x12,0x83,0x8d,
- 0x90,0x44,0x24,0xc3,0xdb,0xe3,0xe3,0x85,0x5a,0x70,0x93,0x41,0x8c,0x00,0xf3,0xf8,
- 0x8b,0xbf,0x6b,0xe2,0x87,0x8c,0xa5,0x81,0x21,0xa8,0x36,0xf2,0xbd,0xbd,0xff,0xb2,
- 0xc9,0x28,0x73,0x8b,0x33,0x06,0xa0,0xa1,0xe1,0xc5,0x41,0x2a,0x3f,0x40,0x3c,0x6d,
- 0x6c,0xb9,0x36,0x1e,0xcb,0xbe,0x93,0xe8,0x65,0x04,0x8a,0x1c,0x41,0xa9,0x08,0xa5,
- 0x38,0x3f,0xa4,0x89,0x1f,0x20,0x8f,0x67,0x43,0x19,0x6c,0x00,0x51,0x12,0x80,0x92,
- 0x5c,0x79,0x15,0xef,0x0f,0x02,0xa4,0x51,0xe6,0x8d,0x62,0x7b,0x48,0x89,0xb2,0x88,
- 0x59,0xd6,0x99,0xf1,0x4f,0xc6,0x44,0xf7,0x37,0xc6,0x89,0x79,0x71,0xc0,0x57,0xa0,
- 0xcb,0xf0,0xff,0x74,0xe2,0x8b,0xf3,0xfc,0xf9,0xec,0x04,0xbe,0x6a,0x97,0x12,0xec,
- 0x9a,0x1f,0x68,0x2d,0x86,0xdb,0xc7,0x82,0x2b,0xac,0x16,0xc5,0x13,0xd5,0x9a,0x4b,
- 0xf8,0x7a,0x3e,0x6b,0xe2,0x87,0x9c,0x78,0xfe,0x7b,0xbe,0xcf,0xd9,0x6c,0xb4,0xa3,
- 0x4a,0x4e,0x21,0x6e,0x7b,0xc3,0x8d,0x33,0x24,0x8c,0x43,0x49,0x3d,0x2e,0x85,0x29,
- 0x3f,0x4a,0x88,0xef,0x07,0x4e,0x3b,0x90,0x74,0x04,0x05,0xca,0x78,0xbe,0xe5,0x9f,
- 0x05,0x9e,0x3a,0xb5,0x1e,0xf1,0x8f,0x89,0x5f,0x3d,0xb9,0xdf,0xa4,0x13,0x42,0x25,
- 0x59,0xcc,0xda,0x78,0xa2,0x54,0x25,0xb5,0x35,0x8a,0x51,0x65,0xac,0x19,0xbf,0x48,
- 0x20,0xa5,0x3e,0xce,0x01,0x7b,0x78,0x5a,0x78,0xa7,0x18,0x80,0x56,0x36,0x2b,0x68,
- 0x1d,0x26,0xcf,0xc3,0x3a,0x7f,0x56,0x40,0xee,0xb2,0x8f,0xa9,0xfb,0x59,0x01,0x0b,
- 0x9c,0x36,0xf7,0x07,0x91,0x16,0x0b,0x86,0xfc,0x71,0x73,0x76,0xbe,0x51,0xe7,0xa0,
- 0xe3,0x56,0xb2,0x9e,0x6d,0x55,0x8c,0x85,0x42,0x43,0x55,0x08,0x45,0x03,0x9c,0x1f,
- 0x32,0xa1,0xef,0x94,0xfb,0x62,0xe7,0xf7,0x91,0x3b,0x36,0xa3,0xf6,0x77,0x46,0x2d,
- 0x08,0x84,0xd4,0x35,0xf0,0x80,0x2e,0x22,0x90,0x50,0x5e,0x09,0xa8,0xa3,0x11,0x8d,
- 0x0c,0x27,0xe6,0x07,0x02,0xdf,0x45,0xfb,0x05,0xf1,0xcf,0xd2,0x9c,0xab,0x9e,0x37,
- 0xd8,0x02,0xde,0x28,0xe4,0x69,0xf8,0xb3,0xff,0x26,0xbc,0x52,0x70,0x0c,0xbe,0x34,
- 0x5a,0xa7,0x89,0x1f,0xcd,0x98,0x98,0x4f,0xa7,0xc4,0xe5,0xc9,0x2f,0x39,0x1e,0xf0,
- 0x55,0x32,0x4e,0x0b,0xc9,0x2e,0x0a,0x86,0xa2,0x3f,0x1f,0x6b,0x04,0x16,0xcc,0x31,
- 0xf1,0x03,0x48,0xfb,0x8d,0xfe,0x20,0xb6,0x4b,0xdf,0xb8,0x92,0x7b,0x55,0xc7,0xc1,
- 0x52,0xf1,0x15,0xb8,0x1a,0xfc,0xf9,0xf9,0x25,0x27,0x6a,0xe6,0xc1,0x1b,0x7e,0x83,
- 0x28,0x09,0x12,0xfb,0xe7,0x85,0xbc,0xb5,0xda,0x2e,0xce,0x06,0x89,0xf8,0x27,0x80,
- 0x2f,0xc2,0xeb,0xdd,0x14,0xf5,0x89,0x1e,0xbc,0xa2,0x88,0x8f,0x78,0x57,0x6f,0xcf,
- 0xef,0x5f,0xe4,0x25,0x45,0xcd,0x89,0xfb,0xc3,0xe6,0x3a,0xe3,0x7d,0xff,0x1b,0x9a,
- 0x69,0x2f,0xe3,0xc0,0xa2,0x11,0x94,0x60,0x85,0xc5,0x20,0x0f,0xfa,0x15,0x58,0xef,
- 0xb9,0x9f,0xd7,0xf3,0x9a,0xf8,0x91,0xa4,0x18,0xbb,0x4b,0x9b,0x8b,0x3c,0xa6,0x76,
- 0x6b,0x4e,0x8d,0x02,0x5a,0x37,0x8f,0x83,0x73,0xb2,0xac,0xf8,0xbf,0x0f,0x7e,0x09,
- 0xe5,0x8f,0x62,0xe2,0x47,0xea,0x9a,0xc2,0xb3,0x49,0x4b,0x74,0x5b,0x8f,0x78,0x99,
- 0xee,0x85,0x0a,0x2d,0x2b,0x54,0xf0,0x9c,0x36,0xc6,0x4a,0x1c,0x6b,0xda,0xc5,0x62,
- 0xcf,0x21,0xf6,0xf0,0x25,0xdc,0x21,0x45,0x89,0xfd,0xc3,0x84,0xf8,0xfa,0x6c,0x10,
- 0x7f,0xcb,0x37,0x92,0x9e,0xa5,0xd6,0x8c,0xd0,0xb7,0xc8,0xbc,0xbc,0xf5,0xc1,0x9c,
- 0x0f,0xb4,0x71,0x65,0x3f,0x6f,0xe4,0x14,0x4d,0xec,0x9f,0x7c,0x25,0x2e,0xcf,0x2f,
- 0x88,0xfb,0xa4,0xa3,0x28,0xaf,0xac,0x83,0xe2,0x3f,0x29,0x97,0x60,0x16,0x6f,0x1c,
- 0x76,0x1e,0x0e,0xf3,0xfe,0x5f,0x83,0x22,0xd4,0x4e,0x3c,0xff,0x16,0x69,0x85,0xa1,
- 0xbf,0xda,0x36,0x93,0x91,0xbc,0x43,0xc1,0x12,0x46,0x7f,0x75,0xdd,0x36,0xe8,0x61,
- 0x25,0xfa,0xa2,0x1e,0xf2,0x67,0xd2,0xc8,0x54,0xa0,0xb9,0xe6,0xfe,0x68,0x42,0x5c,
- 0xdf,0x75,0xe2,0xfe,0xc1,0xf3,0x02,0x8e,0x90,0xbd,0xb0,0x79,0x0f,0x2b,0x51,0xe4,
- 0x0d,0xe4,0x53,0xb5,0xad,0xd1,0xee,0xa3,0x9b,0x3d,0xe6,0xfe,0x68,0xd6,0x38,0x1e,
- 0xf0,0x0c,0x20,0xda,0x71,0xaa,0x54,0x25,0x8c,0xb7,0x81,0x00,0xc3,0x10,0x0b,0xdc,
- 0xaf,0xfa,0x1c,0xe6,0xfe,0x44,0x24,0x73,0xc5,0x52,0xe3,0x7d,0x9f,0x11,0xf7,0xc5,
- 0xba,0x31,0xae,0x92,0x0b,0xa5,0x0b,0x0f,0xe3,0x89,0x78,0x49,0x1c,0xa2,0x87,0x7c,
- 0x68,0xb1,0x6e,0x12,0x93,0xfd,0xd1,0xb6,0xdc,0x74,0xc9,0x6a,0xbc,0x6f,0x9f,0x78,
- 0x89,0x8e,0xc0,0xcd,0x60,0xd3,0x73,0x46,0xe9,0x05,0xad,0x0a,0x6c,0x0f,0xe3,0xfb,
- 0x5e,0x50,0x8c,0x7e,0x70,0xc3,0x49,0x7f,0x8e,0x70,0x05,0xfe,0xb4,0xaa,0x34,0xc3,
- 0xa6,0x17,0x9c,0xd7,0xbf,0x64,0xb1,0xb6,0x20,0xea,0x51,0x1c,0xf0,0xfa,0x02,0x7a,
- 0x72,0x66,0x69,0xbe,0x55,0x4f,0xed,0x0f,0x2b,0xf5,0xb0,0x19,0x0b,0xe5,0x76,0xcf,
- 0x29,0xcd,0xc8,0x96,0xef,0x41,0x43,0x95,0x27,0x8a,0xd3,0x1e,0x32,0xd2,0x1c,0xf0,
- 0xd9,0x55,0xda,0x64,0x49,0xe1,0x47,0x42,0x04,0xbd,0xdc,0xba,0x48,0xe0,0xde,0xad,
- 0x58,0xd9,0x7b,0x24,0x56,0xef,0xe6,0x22,0x23,0xea,0x06,0x8b,0x9d,0x51,0x33,0x3f,
- 0x09,0xe7,0x47,0xda,0x4d,0xce,0xf8,0xe4,0x76,0x78,0x1f,0xe2,0x34,0xe3,0x9f,0x92,
- 0xd6,0xec,0x8e,0x5e,0x23,0xdf,0xbe,0xc5,0x7f,0xda,0xe8,0x0f,0x92,0x8c,0x8f,0xe0,
- 0xfe,0x41,0x23,0xe8,0x21,0xdb,0xda,0xad,0x23,0xd2,0xc5,0x58,0xd9,0xfe,0xfb,0xfe,
- 0x48,0xc4,0x7d,0x0c,0x61,0xcf,0x80,0xef,0x44,0x28,0xfc,0xed,0xc5,0x6b,0x0b,0x94,
- 0x14,0x7e,0x80,0x9f,0x06,0xe7,0x73,0xb1,0x33,0x3a,0xd1,0xff,0xa2,0x5f,0xba,0xcc,
- 0xaa,0x8e,0xd9,0x46,0x6b,0xae,0xd0,0xcf,0xb9,0xc7,0xcc,0xdb,0x94,0xda,0x1f,0xed,
- 0x00,0x45,0x6d,0xfe,0x78,0xc1,0x03,0x08,0x03,0x8c,0xfb,0x7f,0x02,0x07,0x95,0x6e,
- 0xdd,0xf0,0xff,0x7c,0x04,0xee,0xde,0x25,0xcf,0xa4,0xf0,0x43,0x3a,0x81,0x44,0xec,
- 0xdf,0x14,0x37,0x93,0x7c,0xed,0xfd,0x18,0xad,0xc4,0xa7,0xcc,0xcf,0xe6,0x9c,0xa3,
- 0xdd,0xe4,0x2f,0xb5,0x2d,0x5e,0xfb,0x26,0x79,0x73,0xcd,0xc3,0xa6,0xf8,0xd7,0x62,
- 0x60,0xba,0x1a,0x5c,0xe4,0x82,0x66,0x61,0xc7,0x80,0x91,0xcf,0xdc,0xcb,0x18,0x53,
- 0x83,0x94,0xd7,0x73,0x75,0x28,0x85,0xb0,0x48,0x25,0xa9,0xfc,0x48,0x8f,0x05,0xbf,
- 0xef,0x93,0x97,0x5a,0x9e,0x16,0xe2,0x6d,0x41,0xde,0xd5,0x9a,0x07,0xb7,0x86,0x78,
- 0xd8,0x4b,0x5a,0x15,0xc4,0x2b,0x6f,0x11,0x33,0x3f,0xa4,0x15,0x7a,0xc1,0x35,0xb8,
- 0xc4,0x9d,0xdd,0xcc,0x3e,0x03,0x57,0x14,0xcd,0xa8,0x08,0x39,0x34,0x59,0xd5,0x9d,
- 0x2e,0xb1,0x5f,0x1d,0x56,0xe6,0x08,0xa8,0xaf,0xcd,0xfc,0x48,0x9b,0xc9,0x79,0x98,
- 0xaf,0x2f,0x19,0x14,0x2b,0x62,0xeb,0x63,0x94,0xc5,0x29,0x0b,0xfa,0xf1,0xc5,0x4f,
- 0x48,0x97,0x95,0xbd,0xaf,0xe3,0xd2,0xa5,0xf0,0x03,0x08,0xe3,0x7e,0xce,0x46,0x2e,
- 0x6e,0x83,0x43,0x13,0x65,0x1a,0x3a,0xb8,0x86,0x8d,0xfa,0xc1,0x23,0x68,0xff,0x5e,
- 0xd3,0x1f,0x76,0x73,0xda,0xcb,0x52,0xbe,0x66,0xa4,0x59,0x7e,0x19,0xa3,0x05,0x38,
- 0xc9,0xf3,0x06,0x6a,0x51,0x90,0x9e,0x24,0x8f,0xa5,0xe5,0x0f,0xc8,0x5e,0x4b,0x6a,
- 0x7f,0xb4,0x7d,0xfe,0x99,0x1c,0xef,0x1d,0x31,0xe2,0x7d,0x46,0x5b,0xd8,0x75,0xac,
- 0x80,0xbf,0xef,0x17,0xb0,0x9a,0xfd,0xc0,0x27,0x5f,0xc3,0x8f,0x24,0xec,0x18,0x74,
- 0x9c,0x90,0xa7,0xa4,0x8f,0x68,0x8f,0xc7,0xea,0x7d,0x0e,0x6b,0x6d,0x4c,0xb5,0x52,
- 0xce,0x4f,0xd2,0xe2,0xad,0x1f,0x94,0x37,0x91,0x6b,0xf8,0x91,0x94,0xf9,0xc1,0x25,
- 0xc3,0xe2,0x18,0xa7,0x35,0x30,0xd0,0x0e,0x1c,0x19,0x75,0x07,0x9d,0x46,0xa1,0x9c,
- 0xbe,0xa7,0xd9,0xf6,0x61,0x53,0x2a,0x3f,0xd2,0x98,0xf0,0x4b,0x58,0xbf,0x1a,0x4e,
- 0xc5,0x15,0x53,0x41,0xd4,0x3e,0x26,0xec,0x57,0xb8,0x86,0xa2,0x63,0xf6,0x19,0xc2,
- 0x35,0xf8,0xc7,0xd0,0x8f,0xcb,0x6d,0x1b,0x72,0x86,0xb4,0x03,0x8c,0xd7,0x4f,0x15,
- 0xbc,0x46,0x0e,0x4c,0x76,0x47,0x71,0x19,0x9f,0xe5,0xfd,0x41,0xaa,0x11,0x1a,0x11,
- 0x33,0xfe,0x91,0x38,0x7a,0x91,0x37,0x93,0x33,0xec,0xf9,0xc0,0x44,0x9b,0x57,0x66,
- 0x5f,0x89,0xf2,0x61,0x86,0xbd,0x85,0x9b,0x5a,0x4f,0xa5,0xe6,0x87,0xc3,0x5e,0xca,
- 0x8b,0xe0,0x3c,0x38,0x4d,0x9d,0x98,0x0f,0x46,0x44,0xac,0x53,0x8b,0x0f,0x52,0xfb,
- 0xc3,0x1a,0xf5,0x71,0x88,0x76,0xa4,0x2d,0x71,0x20,0x04,0x8d,0xb5,0x21,0x23,0x22,
- 0x86,0x86,0x3f,0xe2,0x9f,0x5c,0x7b,0xd2,0x1e,0x31,0xf8,0x91,0x38,0x1f,0x54,0x08,
- 0xdf,0x2e,0x92,0x6c,0x0b,0xeb,0x8e,0x15,0xca,0xc5,0xf9,0x21,0xcd,0xf9,0xe1,0x43,
- 0xf8,0x59,0x67,0x79,0x97,0x4c,0xf0,0x43,0xda,0x82,0xc2,0xe7,0xbc,0x11,0x21,0x0e,
- 0x6a,0x8e,0xc7,0xa8,0x93,0x1e,0x49,0xc1,0x3f,0xe7,0xe1,0xf3,0xf4,0x4a,0x4f,0xd6,
- 0x60,0x13,0x0e,0x62,0x40,0xe8,0x73,0xc6,0x19,0x23,0x51,0x2c,0xff,0x37,0xf8,0x93,
- 0x03,0x81,0xd0,0xb1,0xa6,0x19,0x29,0xfc,0x00,0x3d,0x42,0x49,0x3b,0x6d,0x26,0x28,
- 0x71,0x62,0x40,0xe8,0x14,0x84,0xa1,0x43,0xa0,0x8c,0xa8,0x81,0x56,0x9f,0x1d,0xe4,
- 0xd5,0x24,0x85,0x1f,0x89,0xe3,0x3d,0xcf,0x42,0x25,0xfd,0xb5,0xd0,0x8e,0x78,0xd8,
- 0x4b,0x47,0x18,0xac,0xd5,0xf1,0xc4,0xef,0x0d,0x46,0xc6,0xb8,0x3f,0xb5,0x3f,0xda,
- 0x6e,0xc5,0xa9,0x59,0xda,0x3d,0x43,0xd2,0x04,0x10,0x0a,0x6c,0x57,0x3b,0xbc,0x34,
- 0x98,0x3d,0xbd,0xf9,0xc9,0x6c,0x94,0x78,0x1b,0xcd,0xfc,0x48,0xb9,0xbc,0x1b,0x5a,
- 0xa5,0x2f,0xeb,0xa9,0x94,0x32,0x7f,0xdd,0xcd,0xf9,0x01,0xfe,0x0b,0xbc,0xa5,0xb9,
- 0x11,0xcf,0xc8,0x8e,0x84,0x7c,0xe8,0x02,0x83,0x1f,0x29,0xf2,0x58,0x0a,0x8d,0x12,
- 0xe2,0xe1,0xd8,0xe0,0x14,0xdd,0xcf,0xa9,0x96,0x3e,0x4a,0xec,0x67,0x83,0x1f,0x09,
- 0x8d,0xdc,0x25,0x2c,0x27,0x2a,0x45,0x48,0x9c,0x16,0x20,0xa2,0x75,0x23,0x10,0x6d,
- 0xc2,0x2f,0xa2,0x55,0xc2,0x12,0x7f,0x8d,0x89,0x1f,0x52,0x72,0xc0,0xfe,0x46,0xe2,
- 0x37,0xba,0x8f,0xac,0x53,0x62,0x6d,0x41,0xf4,0x75,0x90,0x1f,0xa4,0x51,0xf2,0xce,
- 0x0f,0xd7,0x31,0x84,0x46,0x1f,0x11,0xcb,0xc4,0x71,0x07,0x27,0xca,0x9f,0x1d,0x42,
- 0x61,0x44,0x94,0xc9,0x51,0xe6,0xd7,0x0c,0x5a,0xb6,0x23,0xd0,0x14,0x50,0x23,0xb8,
- 0x9e,0xaf,0x91,0x46,0xdd,0x19,0x95,0xa7,0xa6,0xe4,0x87,0x4f,0x85,0x97,0x02,0xd3,
- 0xf5,0x36,0x1f,0x79,0x87,0x36,0x33,0xa3,0xbe,0xe3,0x5d,0xb2,0x86,0xe6,0x33,0x5a,
- 0x4b,0x4e,0xd0,0x66,0x4b,0x71,0x1f,0xe2,0x01,0x9a,0xc4,0x57,0x74,0x1a,0x7c,0xd1,
- 0x78,0x6b,0xa7,0xad,0xae,0xe0,0x20,0xbc,0xc6,0x76,0xf3,0xf8,0xd7,0x15,0x78,0xa3,
- 0x71,0xb6,0xea,0xac,0x13,0xbf,0xc0,0x2b,0x0b,0x78,0x7e,0xb8,0xc5,0xcc,0x8f,0x94,
- 0x87,0xa0,0x3a,0x60,0x94,0x69,0x8c,0x4d,0xc8,0x93,0x8b,0x02,0xef,0xc8,0x63,0xf0,
- 0xfb,0x55,0x2a,0x88,0x87,0x4d,0xf1,0xaf,0x29,0x57,0xf8,0x7a,0x0e,0xad,0x39,0x31,
- 0xe9,0x8c,0xf6,0x09,0xcb,0x8e,0x25,0x8a,0x1f,0xf5,0xcf,0x0e,0x59,0xc7,0xf1,0xfe,
- 0xef,0xb1,0xaa,0xd1,0x25,0x11,0x53,0x7d,0x74,0xd7,0xf5,0x9b,0xe1,0xa5,0x9d,0xc5,
- 0xfb,0xf0,0xb1,0x8f,0xa9,0x3b,0xc1,0x11,0x5d,0xd4,0x40,0xc6,0x60,0xb5,0x94,0x1f,
- 0xa1,0xdf,0x24,0x6f,0x41,0xbf,0xc4,0xfb,0x13,0xa5,0xf0,0x63,0x6f,0x86,0x9d,0xf0,
- 0x00,0xc5,0x97,0x3a,0x41,0x9f,0x89,0xe7,0x87,0xab,0x6b,0x94,0x7c,0xa8,0x6b,0x20,
- 0xe7,0xb5,0x27,0xf2,0x8a,0x5f,0x97,0x35,0x53,0xbd,0x80,0x4f,0x1a,0x90,0xc2,0xb0,
- 0x82,0xde,0x98,0x9d,0x1e,0xc1,0x6d,0xe9,0x88,0xb5,0x79,0x62,0x83,0x06,0x0d,0xe0,
- 0xd1,0xa0,0x9f,0x39,0x83,0x72,0xda,0x3d,0x79,0x89,0xfd,0xe9,0x40,0xbc,0x87,0xdb,
- 0x46,0x59,0xb2,0x96,0x77,0x77,0x8d,0xe9,0xaf,0x4f,0xc8,0x21,0x70,0x0f,0x3b,0x15,
- 0x71,0x88,0xbd,0xa5,0x57,0x86,0x6c,0x3d,0xb2,0x25,0xa5,0x3f,0xec,0x18,0xab,0xcc,
- 0xb5,0x75,0x09,0xc3,0x2c,0xbe,0x3e,0xc3,0xdc,0x3f,0x0f,0x47,0x37,0x89,0xc3,0x74,
- 0xf8,0xfe,0xca,0x41,0x5b,0xf8,0x71,0x73,0x7f,0xb4,0x4b,0x70,0x89,0xfe,0x58,0xb5,
- 0x72,0x92,0x9f,0xcb,0x31,0x5a,0xec,0xf3,0xf6,0xc3,0x33,0x0d,0xd8,0x33,0x87,0x1c,
- 0x86,0x2a,0x8b,0xed,0xef,0x44,0x35,0xe1,0xff,0x69,0x44,0xfc,0x83,0xc7,0xaa,0xd0,
- 0xb1,0x4d,0x7b,0x5f,0x0a,0x1b,0xb4,0xcc,0xe4,0x34,0x20,0xec,0xe1,0xfe,0x8d,0x26,
- 0xa5,0x45,0x2f,0x71,0xc9,0x6b,0xfd,0xe6,0xfe,0xb0,0x2b,0xb8,0xbf,0x9a,0xd1,0x5f,
- 0xc2,0x69,0x75,0x42,0x5f,0xab,0x6d,0x60,0x0f,0xd1,0x5f,0x7a,0x66,0x40,0x9b,0xce,
- 0xa9,0xcc,0x88,0xc9,0xff,0x03,0x56,0x08,0x17,0x3a,0x5b,0x28,0x78,0xf4,0xe6,0xb0,
- 0x5f,0x35,0xf2,0xc3,0x49,0x2b,0x18,0x7c,0x1d,0x21,0xde,0x4a,0x0c,0xcf,0x63,0x91,
- 0x29,0xc3,0x8b,0xae,0x80,0x31,0xc7,0x3c,0x6a,0xb4,0x45,0x1e,0x87,0xee,0xb7,0x8d,
- 0xc6,0x70,0xaf,0x72,0x43,0x2c,0x18,0x8b,0xff,0xa2,0x68,0x2a,0x50,0x4d,0xf1,0x2f,
- 0xc3,0xdb,0x23,0x4d,0xd2,0xc5,0x51,0xed,0x3c,0x54,0x1d,0xe4,0xef,0x1b,0x0b,0x84,
- 0x0d,0x8a,0x83,0xf4,0x12,0xe1,0xfd,0x61,0xbf,0x65,0xe6,0xc7,0x8e,0xfb,0x7f,0xc6,
- 0x73,0x2a,0xc8,0xd3,0xbe,0xd2,0xc8,0x4d,0x11,0xe1,0x3e,0x6d,0x80,0xdd,0xac,0x4e,
- 0x3a,0x27,0x56,0x44,0xae,0x2a,0xf9,0xaa,0xf5,0x64,0x0a,0xfe,0x19,0x09,0x19,0x6c,
- 0xcf,0x61,0xb2,0xc0,0x1b,0xa8,0x2e,0x88,0x5a,0xba,0xec,0x97,0xf5,0x00,0x7b,0x30,
- 0x24,0xff,0xc9,0x52,0x51,0xbb,0xf7,0x9b,0x76,0x4a,0xb3,0x53,0xf9,0x21,0x63,0x78,
- 0x2f,0x48,0xac,0xc0,0x5c,0xa1,0x41,0x4e,0x4b,0xa2,0xe0,0x6b,0x56,0x1f,0x52,0x97,
- 0x59,0x9b,0xbb,0xd5,0x65,0x96,0xba,0xec,0xf4,0x6b,0xfa,0xc3,0x42,0x49,0xaf,0x1c,
- 0xb6,0x38,0xa1,0xd5,0x6a,0xd7,0x2d,0xdd,0xfe,0x11,0x12,0x60,0x25,0xfd,0x62,0x17,
- 0x71,0x22,0x10,0xb5,0x2b,0x88,0x3f,0xcd,0xf8,0x67,0x45,0x0c,0x0f,0x97,0x8b,0x56,
- 0x23,0x1b,0x07,0xad,0xa1,0x91,0x8c,0x43,0x7a,0x89,0xdb,0x66,0x74,0x8c,0x0d,0xb9,
- 0x14,0xe7,0x06,0x53,0x7d,0x5c,0x34,0xee,0xff,0x59,0x7f,0x8e,0x77,0x37,0x83,0x05,
- 0xbd,0xb6,0x48,0x13,0xe7,0x87,0xfc,0xb9,0x6a,0xf3,0x71,0xfe,0x79,0x5a,0x95,0x8d,
- 0xf6,0x42,0x2a,0xfe,0x89,0xb3,0xd3,0x3b,0xd9,0x01,0xad,0x2c,0x82,0x68,0x73,0x84,
- 0xff,0x87,0x34,0x23,0x03,0xff,0xa0,0x72,0x4e,0x75,0x6e,0x4a,0xc5,0x3f,0x0a,0xc7,
- 0xc3,0x88,0xd6,0x2a,0xa0,0x15,0x0a,0x06,0xeb,0x36,0xfb,0x2f,0x6b,0x2f,0x0e,0xda,
- 0xff,0x49,0x0e,0xa5,0x5f,0x92,0x5a,0xf5,0x32,0x17,0x6e,0x24,0x33,0x3f,0xe4,0x62,
- 0xca,0xd7,0x27,0xc3,0x45,0xee,0x92,0x5a,0xa1,0x70,0x90,0x52,0xcf,0xa7,0xd0,0xa8,
- 0xab,0x2e,0xdc,0x18,0x8f,0x31,0x54,0xdc,0x6f,0xde,0xe9,0x58,0x68,0xe2,0xc7,0xae,
- 0x9e,0x66,0xb0,0x41,0xd2,0x1f,0x93,0x69,0x34,0x97,0xa9,0xa7,0xf2,0x7e,0x48,0xde,
- 0x3d,0xf5,0x4c,0x20,0xbf,0xf3,0xc6,0xbf,0xf3,0xbc,0xab,0xad,0x09,0x3f,0x13,0xcd,
- 0x58,0x71,0x0d,0xfe,0x41,0xa3,0xa9,0x1f,0x9f,0xdf,0xca,0x74,0x61,0x4e,0xc4,0x6a,
- 0x21,0x47,0x58,0x6f,0xb6,0x0b,0x6c,0x20,0x0e,0x80,0xde,0xe9,0xd2,0xff,0xb3,0xfa,
- 0x6a,0x0a,0x3f,0x36,0x5f,0x9f,0x5e,0xdb,0xa8,0xe7,0x32,0x7c,0xa4,0x54,0x71,0xe0,
- 0x3d,0x02,0x9f,0x2b,0x95,0x8d,0xb6,0xfe,0x9c,0x4b,0x64,0x6c,0xce,0x2b,0xfd,0x59,
- 0x1f,0xa6,0xf0,0x63,0x7f,0x8a,0xa7,0xb5,0xb2,0xd7,0xd6,0x63,0xfb,0x49,0xa4,0x95,
- 0x97,0x61,0xee,0x28,0x18,0xd1,0x5b,0xa0,0xf2,0x9c,0xf5,0x92,0xb8,0xc2,0xb7,0x90,
- 0xd8,0xf5,0xbb,0x42,0x35,0x66,0xfc,0xc3,0x69,0xb1,0x39,0xec,0x99,0x61,0x85,0xd7,
- 0x84,0xe2,0x7e,0xf9,0x61,0x32,0xe0,0x58,0x03,0xb3,0x7a,0x33,0x7d,0xb8,0x43,0x9e,
- 0x85,0x02,0xdd,0x71,0x6d,0x7f,0x58,0x03,0xf6,0x8c,0x91,0xa7,0xdb,0x9b,0xfd,0xc5,
- 0xa7,0xc4,0x47,0xc9,0xbb,0xfe,0x27,0x1a,0x67,0x9d,0xa7,0x79,0xfe,0x69,0xcd,0xcd,
- 0xbd,0xf9,0x5f,0xe5,0x87,0xe4,0xf5,0x3e,0x8b,0x6e,0x23,0x6b,0x49,0x1b,0x0e,0x6e,
- 0xbc,0x8d,0x8c,0xa4,0x23,0x10,0x1a,0xce,0xa0,0xad,0x4e,0xa1,0x8b,0x17,0xaa,0xa8,
- 0xd7,0xe0,0x9f,0x38,0xec,0x19,0x96,0xee,0xe6,0xfe,0x9f,0x4e,0x1c,0xfc,0xa1,0xb3,
- 0x24,0xb4,0x36,0x9a,0xee,0x80,0x23,0xac,0x9b,0x65,0x86,0xe4,0x6b,0xf0,0x8f,0x01,
- 0x03,0x2c,0x9a,0x32,0x4c,0xb3,0x62,0xfa,0x88,0xa7,0xfd,0x2c,0x31,0x0a,0xe7,0x9b,
- 0xf7,0x73,0xfe,0x8d,0xaf,0xe0,0x9f,0x58,0x59,0xdc,0x01,0x28,0x5b,0xbe,0x24,0xf8,
- 0xea,0x07,0xf0,0x96,0xdf,0x08,0xf4,0x7c,0x00,0x07,0x54,0x77,0xfd,0xdd,0x41,0x99,
- 0x5c,0xeb,0xff,0x89,0xc3,0x18,0xc9,0xee,0xe3,0xb4,0x6c,0xd0,0x12,0xb4,0xf3,0x13,
- 0x34,0x64,0x7d,0x8b,0xa9,0x3e,0xfa,0xcb,0x6b,0xf0,0x4f,0x7c,0xfe,0x19,0xee,0x1d,
- 0xd5,0x10,0xdd,0xf1,0x42,0x39,0x5e,0xd8,0x95,0xfe,0x01,0xbf,0xe2,0xfd,0xe1,0xd2,
- 0x6b,0xfa,0xc3,0x22,0x1e,0xe0,0x45,0x70,0x6f,0x10,0x61,0xa2,0x2d,0x5a,0x1b,0x44,
- 0x71,0x60,0x7f,0x0d,0x36,0xe8,0xf9,0x5e,0x7a,0xaf,0x25,0x69,0x7f,0xf5,0x58,0x13,
- 0xfc,0x00,0x51,0xa5,0x0e,0xca,0xa0,0x8d,0xa1,0x98,0x3d,0x61,0x28,0xe2,0x1c,0x8e,
- 0x88,0xba,0xe1,0x6e,0x4d,0x34,0xe1,0x9f,0xcc,0xce,0x89,0xb6,0x68,0xbc,0x1b,0x48,
- 0x65,0x9c,0x16,0x80,0x5f,0x39,0x2e,0x7e,0x20,0x7d,0x5e,0x1d,0x23,0xc6,0x4c,0xc8,
- 0x9f,0xf6,0xb4,0x4e,0x85,0xbb,0x89,0xb2,0x36,0x89,0x9f,0x4b,0x07,0xd4,0x2a,0xde,
- 0x88,0xf9,0x73,0xf5,0x70,0xac,0x7f,0xdc,0xad,0xf0,0xb9,0x6b,0x47,0x6d,0x66,0x30,
- 0xa5,0x3f,0x6c,0x94,0xf5,0x70,0x5a,0x24,0x0e,0x7b,0xba,0x1c,0x31,0x7e,0x6c,0xa9,
- 0x0b,0x3a,0x0c,0x31,0x2b,0xf4,0x3c,0x82,0xf2,0x87,0x90,0x75,0x49,0xf9,0x23,0xf5,
- 0xab,0xf8,0xbe,0x75,0x96,0x6c,0xf2,0x1a,0x6b,0xd4,0x56,0xa0,0xfc,0xf1,0xd4,0xf2,
- 0x8e,0x3c,0xb8,0x50,0x96,0x18,0x55,0xe6,0x35,0xfc,0x90,0xdc,0xff,0x83,0xf8,0x67,
- 0x43,0x36,0xa7,0xe5,0x7c,0x90,0x87,0xbd,0x86,0x0c,0x7e,0x86,0x1b,0x79,0x62,0xd5,
- 0x6e,0xb5,0x83,0x0b,0xea,0xd5,0x29,0xfc,0x90,0x46,0x77,0xd7,0x18,0x2d,0x52,0x85,
- 0x66,0x0d,0x36,0x2d,0x87,0xde,0x46,0x77,0x5d,0x8d,0x52,0x5a,0x28,0xed,0xa6,0x6e,
- 0xed,0x3f,0x73,0xfc,0x93,0xd0,0xbf,0x71,0xff,0x0f,0x0f,0x83,0xaa,0xdc,0xff,0x73,
- 0x94,0xf3,0x85,0x8e,0xeb,0x95,0xd5,0x31,0xa2,0x24,0xb6,0xdf,0xf3,0x4a,0x58,0xbc,
- 0x86,0x1f,0x72,0x62,0xfd,0x71,0x20,0xac,0x6f,0x6e,0x52,0xa5,0x13,0xf1,0xfe,0x74,
- 0xca,0xd8,0x9d,0x6e,0x1e,0x81,0xb5,0x7c,0xc5,0xff,0x23,0x86,0xb4,0x0b,0x38,0x98,
- 0xc5,0xd0,0x30,0x9f,0xc7,0xd6,0x4d,0xb6,0xaf,0x31,0x80,0xd0,0xfe,0xc5,0x05,0xc1,
- 0xbc,0x90,0xb8,0x30,0x85,0x1f,0x92,0xcb,0x9f,0x1b,0x5d,0xe4,0x2f,0xdc,0x71,0x71,
- 0x4c,0x9e,0x43,0x32,0xfd,0x1b,0xfa,0xd4,0x68,0xab,0x2b,0xfd,0x88,0xb0,0x47,0x5a,
- 0xa6,0x17,0xcd,0x4f,0xe1,0xc7,0x9e,0xaa,0xf1,0x7e,0x61,0x6d,0x1c,0x06,0x18,0x8e,
- 0x91,0xb1,0x8d,0x53,0x85,0xc7,0x68,0xac,0xd0,0x55,0x30,0x1a,0xa7,0xfa,0x52,0xf8,
- 0xb1,0xa7,0xb1,0x2f,0xd9,0x82,0xd3,0x9c,0x0d,0x40,0xf9,0xb2,0x8b,0x07,0xc2,0x9a,
- 0xb2,0xa4,0xbf,0x61,0xf9,0xa7,0xb3,0x78,0xa1,0xdc,0x97,0x8d,0xa5,0xa1,0x59,0x4b,
- 0xc5,0x14,0x7e,0x6c,0xee,0x0f,0x89,0xd8,0x8c,0xb4,0x1f,0x4f,0x89,0x51,0xed,0xce,
- 0x25,0xd8,0x09,0xa3,0x63,0xc8,0x5e,0xb2,0x9f,0xa1,0x7d,0x61,0xee,0x0f,0xfb,0x69,
- 0xdc,0xff,0xd3,0xe4,0x86,0xa3,0xed,0xff,0x7d,0xc8,0x7a,0x40,0xbc,0x62,0xfd,0x4b,
- 0x68,0xee,0x72,0xdb,0x6e,0xb1,0x12,0x7f,0x2a,0xdd,0x76,0xd7,0xe5,0x02,0x13,0xfe,
- 0x99,0xfc,0x34,0xa7,0x75,0xd2,0x6d,0x0d,0xf6,0x5c,0x6d,0x4d,0xe0,0x56,0x66,0x29,
- 0x27,0x07,0xd9,0xea,0x40,0x7e,0x48,0x5e,0x29,0xde,0xa4,0x84,0x83,0x5b,0x9a,0x1d,
- 0xdf,0xf3,0x27,0xf1,0x8f,0x62,0xf0,0x43,0x1a,0x66,0x9a,0x02,0x6b,0x54,0xdc,0x2d,
- 0x1a,0x39,0xa9,0xff,0x76,0xf2,0x96,0x3a,0xd1,0x9d,0x7d,0xaf,0x84,0xef,0x1b,0xb8,
- 0x73,0x30,0x3b,0x19,0xff,0xf2,0xe5,0xc6,0xf4,0x9d,0xc5,0x85,0x87,0xb4,0x49,0x2b,
- 0x04,0x19,0x95,0x34,0xf5,0x73,0xbe,0xa9,0x72,0x3f,0xa7,0xaa,0x40,0x7b,0x3f,0x9d,
- 0x98,0xf1,0x0f,0xef,0x57,0x5e,0x85,0xcb,0x88,0xda,0x6d,0x8d,0xe6,0x82,0xcc,0xae,
- 0xd9,0x23,0xe4,0xe3,0x46,0x7b,0xa3,0xbc,0xbf,0x66,0x39,0x5c,0x58,0xdb,0xcd,0x6e,
- 0xea,0x42,0xfc,0x33,0xb1,0x9e,0x41,0x88,0xb1,0x41,0xae,0xdf,0x2e,0xf3,0x36,0xb2,
- 0xfb,0xe1,0xee,0x5f,0x18,0xf9,0x51,0xf3,0x1a,0x6e,0xe6,0xfc,0x90,0xf8,0x93,0x32,
- 0x2b,0x84,0x83,0x84,0x3c,0x51,0x62,0xec,0xc7,0x59,0xa3,0xe2,0x72,0x38,0x4a,0x77,
- 0xb0,0xcc,0xa8,0x78,0x92,0xbe,0x97,0x56,0xca,0x16,0xf3,0x78,0xd0,0x45,0x44,0x44,
- 0xce,0x13,0x62,0x52,0x5f,0x6f,0x88,0xfb,0x7f,0x64,0xfe,0xfc,0x08,0x63,0xc2,0x74,
- 0x35,0xf9,0x0b,0x6b,0xf2,0xab,0xcb,0x1d,0x61,0xcf,0x3f,0x70,0xea,0x9e,0x10,0x6d,
- 0x4e,0xc1,0x3f,0x71,0xff,0x4f,0x38,0xbb,0x9e,0xa1,0xd8,0xb9,0xe3,0xfa,0x46,0x32,
- 0xa2,0xb5,0xae,0xfe,0x07,0x85,0xf2,0x7e,0x6a,0x38,0x3f,0x4c,0xed,0x24,0xc5,0xff,
- 0xc3,0x0c,0x3c,0x10,0x26,0x56,0xd2,0xa6,0xaa,0x50,0x97,0x4d,0x22,0x7e,0x7f,0x00,
- 0x8f,0xad,0xcb,0x5f,0x2b,0x74,0xe7,0x85,0x10,0x22,0x99,0xe4,0x0f,0xcb,0x5c,0x11,
- 0xe2,0xeb,0x63,0x6b,0x10,0x7d,0xca,0x1f,0xf1,0x34,0xdd,0xd5,0x5c,0xf3,0x49,0xf3,
- 0xdb,0xea,0xcb,0x60,0xed,0xe6,0xe7,0x45,0x75,0x33,0x5e,0x3a,0x6a,0xe6,0x87,0xe4,
- 0xfe,0x9f,0xde,0x9b,0x47,0xf3,0x47,0x95,0x8b,0x1c,0xf6,0x34,0x35,0xe9,0xd1,0x73,
- 0x50,0x29,0xdd,0xcc,0xfd,0x5d,0xe3,0xea,0x02,0x66,0xd3,0xcc,0xfc,0x48,0xab,0xae,
- 0xc0,0x25,0x75,0x3e,0x0b,0xd4,0xd5,0x9c,0x0d,0x19,0x1b,0x69,0x14,0xf7,0xcf,0x25,
- 0x69,0x6e,0xf4,0xae,0x57,0x73,0x5c,0xfe,0x81,0xa6,0x52,0xd7,0x92,0xfe,0x9a,0x24,
- 0xfe,0xe9,0xcb,0xfb,0x14,0x76,0xd7,0xdb,0x7d,0x34,0x80,0xf2,0x27,0x1e,0x08,0xfb,
- 0x94,0xd3,0x20,0x44,0xe5,0x26,0xbb,0xaa,0x07,0x1a,0xed,0x54,0x6e,0x36,0xf5,0x87,
- 0x3d,0x08,0x03,0xd0,0xad,0x38,0x42,0xf5,0x90,0xae,0xb3,0x38,0xed,0xf3,0x00,0x67,
- 0x4f,0xd3,0x33,0xb2,0x09,0x14,0x06,0xc0,0x51,0x27,0xa7,0x93,0xee,0x64,0xfe,0x4f,
- 0xda,0x36,0xe8,0xc9,0xb3,0x47,0xe9,0x36,0x14,0x3b,0xf3,0x63,0xb4,0xd2,0x9c,0x1f,
- 0xa0,0xa8,0x57,0x0e,0x58,0x66,0xa0,0x3c,0x6f,0xd5,0xe4,0x76,0xd2,0x93,0x90,0x0f,
- 0xd5,0x53,0x78,0x7f,0xd2,0x79,0xdc,0x09,0x7c,0xfa,0xef,0x12,0xb4,0xcc,0x17,0x19,
- 0x22,0x96,0x56,0xd1,0xbe,0xb6,0x6f,0xc3,0x0d,0x4e,0xdb,0x66,0x79,0x93,0xa9,0x3f,
- 0xec,0x3e,0x8e,0x9f,0x61,0xfd,0x20,0x82,0x1c,0xbe,0x31,0x32,0xc3,0x05,0x97,0xe8,
- 0x55,0x98,0x6b,0xf4,0x1f,0x44,0x41,0xf3,0x35,0xbe,0x3e,0xf5,0xc9,0xfe,0xb3,0xbc,
- 0x3f,0xac,0xe2,0x6e,0xb1,0x36,0x8b,0x21,0x76,0x71,0xa2,0xff,0xa9,0x31,0xd8,0x24,
- 0x16,0xb2,0x61,0x09,0x45,0xd3,0x2e,0xf1,0x7c,0x42,0xfe,0xe8,0xb8,0x1f,0x7a,0x26,
- 0xab,0x7d,0xf4,0x77,0x1b,0xbf,0xce,0x8c,0x8d,0x31,0x4a,0x78,0xe3,0xc5,0x2c,0x5d,
- 0x6e,0x6f,0x9d,0xce,0x55,0xd5,0x26,0x54,0x55,0xa9,0xf1,0xaf,0x1e,0x2d,0x14,0xa6,
- 0x79,0x44,0x9b,0x68,0xa3,0x63,0xc5,0x15,0xb3,0xea,0x72,0xa7,0xbf,0xa4,0x76,0xcb,
- 0xaf,0xad,0x9d,0x72,0xa1,0x96,0xe4,0x47,0x1a,0x55,0xb8,0x3f,0x39,0x3f,0xea,0x88,
- 0x58,0xee,0x61,0x71,0x5a,0x6c,0xce,0x17,0x8d,0x83,0x3b,0x49,0xb6,0xf2,0x12,0x0f,
- 0x84,0xd5,0x99,0xf9,0x01,0xe8,0xe2,0x8c,0xcf,0xc0,0xb5,0xcd,0xa9,0xe4,0x2c,0x6c,
- 0xfc,0x0c,0x38,0x3f,0x00,0x02,0xc5,0x73,0x50,0xa1,0xdb,0xa0,0x46,0xd2,0x4f,0xf3,
- 0x81,0x22,0x1e,0x4b,0xf2,0x03,0xc4,0xe2,0x5f,0xec,0x1f,0x7b,0x79,0xff,0x5c,0x05,
- 0x81,0xcd,0xa8,0x8c,0x27,0x88,0x03,0x21,0x5d,0x3c,0x5f,0x6b,0x04,0xc2,0x10,0x48,
- 0x27,0xe5,0x73,0x2c,0xfe,0xc5,0x6c,0x79,0x62,0x61,0x6c,0x59,0x46,0x8d,0x7e,0xcd,
- 0xdd,0x7c,0x50,0x0e,0x17,0xf3,0x2b,0x17,0xda,0xa2,0xe2,0xc1,0x24,0xfe,0x89,0xc5,
- 0xbf,0x98,0xec,0xcd,0x9e,0x2a,0xc4,0x02,0x61,0x24,0xce,0xb7,0xdf,0xe0,0xc9,0x93,
- 0x76,0x29,0xc5,0xbd,0x68,0x4f,0x9d,0x4b,0xf0,0x9f,0xc4,0xf2,0x7f,0xf0,0xa5,0x96,
- 0x92,0x1b,0x27,0x68,0xc0,0xdf,0x85,0x1d,0xb8,0x02,0x72,0x1e,0xb9,0x0e,0x5e,0x0e,
- 0x3f,0xe0,0xc3,0x2b,0x83,0xa6,0xf8,0xd7,0x80,0xb4,0x63,0x33,0x1a,0x59,0xd9,0x64,
- 0x56,0xa2,0x2d,0x11,0xec,0x08,0xa8,0xfa,0x8d,0x9b,0x88,0xa4,0xee,0xe0,0x3b,0x76,
- 0x8a,0xff,0xed,0x24,0x3f,0xc0,0x94,0x61,0x4e,0x13,0xd1,0x25,0x47,0x6f,0x28,0x8f,
- 0x05,0xc2,0xb8,0xbc,0xbd,0xa2,0xbb,0xd9,0xfa,0x4f,0xc5,0x79,0xec,0x42,0xa8,0x32,
- 0x6c,0x1b,0x16,0x2f,0x24,0xf9,0x01,0x62,0xf1,0x2f,0x5e,0x94,0xcd,0x15,0x71,0xdc,
- 0x1f,0xd2,0xa3,0xe0,0x60,0xb5,0x6c,0x34,0x8e,0xbf,0xce,0xf0,0xff,0x4c,0x3c,0x3f,
- 0x8f,0x7f,0x9d,0x55,0xdc,0xf5,0x3c,0xff,0xa7,0xf6,0xad,0x09,0xff,0xc0,0x59,0xa3,
- 0x51,0xac,0x98,0x26,0x1d,0x10,0x2a,0x7b,0xad,0xd9,0xa2,0x39,0xff,0x07,0xf1,0x8f,
- 0x47,0xfd,0x11,0x82,0x1c,0xae,0x4f,0x93,0x6d,0xce,0xb8,0xbe,0x2e,0xe4,0x1d,0x67,
- 0x6a,0x1d,0x66,0xff,0x4f,0xb9,0xc0,0xbb,0x87,0xd8,0xb5,0xfa,0x0d,0x9e,0x11,0xf5,
- 0xc9,0xe4,0xfc,0x0e,0x7e,0x4c,0x0a,0x09,0x67,0x98,0x47,0x41,0x94,0x95,0x1a,0xff,
- 0xd2,0x0c,0x6b,0xeb,0x35,0x88,0xa5,0x01,0x1b,0xf5,0xf2,0x46,0x86,0x30,0x67,0x8c,
- 0x74,0x7a,0x69,0xae,0x25,0xc9,0x0f,0xb0,0x32,0xce,0x8f,0x6d,0xd8,0x5f,0x27,0x26,
- 0xde,0xd7,0x60,0xcc,0x0e,0xa1,0xd8,0x44,0xfb,0x8b,0xcb,0x9f,0xac,0x44,0x7f,0x58,
- 0x1e,0xff,0xba,0xac,0xbd,0xe2,0xfd,0xfb,0xc1,0xaf,0x7d,0x4e,0x8d,0xfa,0x77,0x23,
- 0xfe,0xc5,0xdd,0x3e,0xc7,0x73,0x3e,0x37,0x1a,0x61,0xd8,0x8e,0xd7,0x9c,0xc9,0x35,
- 0xc7,0xbf,0x2e,0x53,0xee,0xed,0xa9,0x99,0x13,0x4a,0xf8,0x4f,0x2e,0x5b,0xdc,0x5a,
- 0xe6,0x1f,0xc4,0x39,0xda,0x01,0xa8,0xaa,0xb5,0x1d,0xbb,0x36,0xfe,0xa5,0xd9,0x39,
- 0x09,0x52,0x3e,0x33,0xfc,0x3f,0xcd,0x1e,0xee,0x11,0x2a,0x03,0xf9,0x59,0x4b,0xbe,
- 0x27,0x22,0x95,0x40,0xdb,0x6a,0x7f,0x56,0xa2,0xbe,0x9b,0xe7,0xff,0x6c,0x77,0x14,
- 0x7a,0xdb,0x15,0x52,0xab,0x1a,0x81,0x30,0x5e,0x98,0xc0,0x07,0x19,0xb9,0x44,0x62,
- 0x1b,0xc0,0x51,0x7f,0xe3,0x64,0x53,0x7f,0xd8,0x76,0x89,0xd3,0x32,0xcc,0xe0,0xf6,
- 0x8b,0x09,0x88,0xf2,0xc1,0x8d,0x1b,0x49,0xb1,0xd7,0x20,0x1e,0xdf,0x64,0xe6,0x07,
- 0xe0,0xf8,0x27,0xea,0xfe,0x27,0x6b,0x9e,0xbc,0x9c,0x25,0x80,0xae,0x81,0x70,0xda,
- 0x6b,0x66,0x28,0x6f,0x45,0x6f,0xd0,0x6c,0xed,0xf2,0x35,0xf1,0xaf,0x50,0x8f,0x66,
- 0x7b,0x2a,0xe7,0xd9,0xc4,0x7c,0xe5,0xac,0x32,0x83,0xbb,0x7d,0x5e,0xa7,0xe3,0x21,
- 0xbc,0xf2,0x64,0xcd,0xb9,0x94,0xf8,0xd7,0x28,0xb8,0xa9,0x8d,0x35,0xe5,0xab,0x27,
- 0x12,0x7c,0x5c,0xb1,0x44,0xe8,0xfc,0xba,0x13,0x9c,0x1f,0xd8,0x9f,0xd2,0x1f,0xd6,
- 0x01,0xfb,0xeb,0x4a,0x39,0x1b,0x64,0xb9,0x12,0xe7,0x47,0x1a,0x86,0x3d,0x6a,0x07,
- 0x5b,0xf4,0x91,0x65,0xbe,0xd4,0x1a,0x2a,0xe5,0x44,0x01,0x26,0x7e,0x6c,0x40,0xfc,
- 0x53,0xa7,0x9e,0x97,0x6f,0x25,0x56,0xe9,0x71,0xb0,0x4e,0xb4,0x45,0x03,0xdd,0xa2,
- 0xf8,0x25,0x7f,0x53,0xa8,0x70,0x59,0x46,0x7b,0x76,0x12,0xff,0xf0,0xf8,0x57,0x37,
- 0x3f,0xad,0xa3,0x64,0x1a,0x18,0xfd,0x61,0x1b,0xd2,0x4f,0xe2,0x7a,0xe6,0xeb,0x37,
- 0x7a,0x49,0xae,0xf5,0x31,0xf6,0x83,0x70,0xc6,0x23,0xe9,0xc9,0xfe,0xb0,0x3c,0xfe,
- 0xf5,0x05,0x9b,0x8d,0xb0,0x27,0xa7,0x12,0xfe,0xc8,0x78,0x5b,0xd8,0xf4,0x77,0x8d,
- 0xb0,0x57,0x56,0x44,0x2c,0x83,0xf7,0x5a,0x4b,0x7d,0xc5,0x29,0xfc,0x00,0x46,0xfc,
- 0x6b,0x8f,0xb6,0xc4,0x75,0xcb,0x18,0x24,0x68,0x7f,0xc6,0x79,0xfc,0x0b,0xe5,0x8f,
- 0x32,0xae,0xce,0x65,0xa8,0xca,0x4d,0xfc,0x90,0xd2,0x7e,0xed,0x12,0xde,0xf6,0xee,
- 0xb1,0x1a,0xce,0x0f,0x59,0x15,0xe3,0xb7,0xb9,0xc8,0x4a,0x63,0x8e,0xa0,0x2c,0x69,
- 0x81,0xcf,0x7a,0xc2,0xd4,0x1f,0xf6,0x05,0x94,0x3f,0x2f,0x4d,0x76,0xfa,0xe9,0x32,
- 0x32,0xc0,0xd6,0xa0,0x59,0xc4,0x61,0x9b,0xb6,0x6b,0x67,0x3e,0x0f,0x63,0x1d,0x87,
- 0x35,0xae,0xe2,0x8c,0xcc,0x7b,0x88,0xb9,0x3f,0xec,0x66,0xe5,0x25,0x98,0xa5,0x5b,
- 0x1a,0xfc,0xbc,0x70,0xa3,0x38,0x12,0xe7,0x33,0xc9,0xef,0x95,0x7d,0xfe,0x93,0xf0,
- 0xec,0xe4,0x59,0x9e,0x3a,0x73,0xfc,0xab,0x50,0x5a,0xab,0x74,0xdb,0x9d,0x90,0x37,
- 0x87,0x1c,0x30,0x0c,0x31,0x83,0x6f,0x61,0x07,0xef,0xcf,0x58,0x41,0x86,0x1f,0x6a,
- 0xd2,0x4a,0x42,0x19,0x9d,0x33,0x68,0x32,0x1f,0x7b,0xca,0x88,0xc2,0xd3,0x2a,0xb2,
- 0x42,0xe2,0xac,0xb8,0xff,0x9c,0x8c,0xc4,0x18,0xa1,0xdb,0xc5,0xf7,0xc9,0x21,0xce,
- 0x48,0xec,0x97,0x4d,0xfd,0x41,0x84,0x6d,0xf0,0x99,0x82,0xd3,0x9e,0x15,0xde,0x30,
- 0xad,0x0f,0xea,0xbb,0xf5,0xc1,0x26,0x83,0xa8,0x3f,0x68,0xeb,0x30,0xf1,0x43,0xf2,
- 0xf8,0xd7,0x5f,0x60,0xee,0xb3,0x08,0x7b,0x3e,0x55,0x8f,0xc2,0x2d,0xbd,0x69,0x3c,
- 0x1f,0xe6,0x62,0xc0,0x90,0xe7,0x51,0x44,0x44,0x68,0x71,0x30,0xb1,0x2e,0x91,0xff,
- 0xcc,0xe3,0x5f,0xfb,0x58,0x87,0x82,0xfa,0xfd,0x23,0xc6,0xfb,0x7d,0x2c,0x0a,0xdb,
- 0x47,0x60,0x77,0x10,0x15,0xd9,0x3a,0xb4,0xb0,0x02,0x3c,0xd1,0x25,0x40,0x1c,0x29,
- 0xf8,0x87,0xf3,0xf3,0x67,0x04,0x48,0x3d,0xe3,0xfd,0xb0,0x32,0xc2,0x64,0x1b,0x3f,
- 0x2f,0xbd,0x08,0x0c,0x3e,0xa2,0x01,0x47,0xd1,0x32,0x1a,0xf0,0x9b,0xf0,0x4f,0xae,
- 0x15,0xc2,0x6c,0x06,0x50,0xd5,0xde,0x0b,0x5b,0x61,0x85,0xe1,0xff,0x49,0xdb,0x2e,
- 0x58,0x79,0x86,0x8c,0x2e,0x31,0xc1,0xa9,0x05,0xc0,0xe2,0x37,0xf5,0x87,0x5d,0x61,
- 0x34,0x81,0xcd,0x44,0xb3,0x0b,0xd7,0x67,0xde,0xc9,0xbb,0x38,0x5f,0xd6,0xb8,0x3a,
- 0x4d,0x8f,0x3b,0xa2,0x2b,0xb9,0x23,0xc8,0x14,0xff,0x9a,0xc2,0xbb,0x9f,0xcc,0xe7,
- 0x4d,0x0a,0xc6,0xd8,0x55,0x52,0x39,0x60,0x1b,0x9d,0x84,0x57,0x62,0xfa,0x6b,0xd4,
- 0x70,0x04,0xad,0xd7,0xc5,0x7a,0x53,0xfe,0x33,0xe7,0x87,0x2c,0x8e,0x5a,0xf5,0x49,
- 0x2e,0x58,0xab,0xcc,0xd7,0xad,0x1f,0x8a,0x15,0xbe,0xa3,0x50,0x15,0x58,0x1b,0x10,
- 0xe7,0x04,0x0e,0xb3,0x02,0xe0,0xfc,0x90,0xe6,0xf8,0x17,0xec,0xe5,0xfd,0xeb,0x03,
- 0xbc,0x3f,0xa3,0x7a,0xcb,0xc9,0x4c,0x95,0x2c,0x80,0xb6,0xc7,0x4b,0x3a,0x1d,0x2a,
- 0x29,0xd2,0x9e,0xb7,0xdb,0x97,0x5a,0x7a,0xfe,0x15,0xff,0x0f,0x85,0x74,0x89,0x30,
- 0x70,0xbc,0x6a,0xe9,0xb0,0x5b,0x59,0x93,0xe4,0x64,0x14,0x6e,0xb0,0x0a,0x3b,0xa8,
- 0x7a,0x8f,0x83,0xe7,0xff,0x98,0xfc,0x3f,0xb9,0x08,0x1b,0xfa,0x21,0x7c,0xc7,0x24,
- 0xf0,0x43,0x91,0x3e,0xb9,0xab,0x75,0x71,0x76,0x9b,0x54,0x12,0xa2,0x15,0xf6,0x99,
- 0xda,0x5e,0x62,0xd7,0x2c,0xe1,0x6b,0xfa,0x83,0x70,0xb5,0xeb,0x0c,0xdb,0x54,0x8a,
- 0xeb,0xa3,0x67,0x39,0x10,0x9f,0x2c,0x82,0x69,0x5d,0x8b,0xb7,0xd5,0x14,0xc3,0x59,
- 0xda,0x1d,0xa2,0xae,0xd4,0xf8,0x17,0x35,0xc2,0x3a,0x83,0x08,0xea,0x0c,0x47,0x47,
- 0x34,0x87,0x6b,0x7c,0x9e,0xef,0x9a,0x73,0x02,0xfe,0xb2,0xb5,0xaa,0x73,0x49,0x4a,
- 0x7f,0x58,0x05,0xd1,0x0e,0x9e,0x3e,0x29,0x5f,0x7e,0xa0,0x79,0xac,0x76,0x81,0x9e,
- 0xb9,0xf3,0x6f,0x9d,0xd2,0xc7,0x90,0x1d,0xb4,0x6e,0x13,0x9d,0xca,0xa1,0xba,0x0a,
- 0xfd,0xda,0xfe,0xb0,0x1c,0x0f,0x9f,0xa1,0xe1,0x9a,0x12,0x6e,0x7f,0xf5,0x66,0x71,
- 0x47,0xd0,0x7a,0xc4,0xff,0x75,0x21,0x52,0xd4,0xd7,0xa6,0xcf,0xeb,0xb3,0xa4,0xf4,
- 0x87,0x35,0xec,0xaf,0x12,0xdd,0x42,0xaf,0x93,0x21,0xcc,0x1d,0x41,0x2a,0xe2,0x9f,
- 0x26,0xc9,0x51,0x47,0x01,0xd5,0x56,0xf6,0x31,0x27,0xd0,0xd4,0xfe,0xb0,0xd3,0x0c,
- 0x9a,0xe8,0xa2,0xba,0xec,0x69,0xd2,0xce,0x4e,0xc4,0x03,0x3f,0xc8,0x9e,0xb6,0x7a,
- 0x0d,0x9b,0x69,0xa7,0x0f,0x90,0x79,0xda,0x2f,0x43,0x33,0x7d,0x96,0x95,0x29,0xf9,
- 0x3f,0x59,0x08,0x3b,0xf1,0x7c,0x81,0x48,0x43,0x67,0xa3,0x15,0xfa,0xaf,0x67,0x5a,
- 0x9c,0xf0,0x6a,0x63,0x79,0xbf,0x53,0x96,0xad,0xf0,0xfb,0x70,0xa5,0xd7,0xea,0x32,
- 0xf3,0x63,0x67,0xc6,0xfc,0x63,0x3f,0x68,0x10,0x0c,0xc3,0xa1,0x2f,0x2b,0x2a,0x5e,
- 0x0a,0xff,0x11,0xbe,0xd6,0x6c,0xd3,0x2d,0x27,0x94,0xbf,0xa0,0x3e,0xca,0xbc,0xb6,
- 0x3f,0x2c,0x5f,0xff,0x92,0x70,0x8e,0x8a,0xfb,0xb3,0xea,0x84,0xd4,0x25,0xae,0x50,
- 0x3f,0x36,0xdc,0x92,0xb2,0x53,0x3a,0x40,0x0d,0xc6,0xce,0x8f,0xcc,0xf1,0x2f,0x23,
- 0x7f,0x80,0x7a,0x49,0xb3,0x84,0xf2,0xe4,0x20,0xd5,0x2c,0x53,0xfd,0x6b,0x7c,0xd3,
- 0x41,0xf6,0x71,0x06,0x7e,0x32,0x2b,0xb5,0xfe,0x4b,0x8f,0xe1,0x9f,0xa8,0xc5,0x31,
- 0x78,0x83,0xb2,0x8a,0x39,0xa3,0x74,0xd8,0x3e,0x8d,0xad,0x61,0xc5,0xaa,0x5c,0x67,
- 0xff,0x2e,0x59,0x13,0x28,0xe6,0x19,0xd1,0xa3,0x29,0xfe,0x1f,0xdc,0x6f,0xb7,0xd7,
- 0xcd,0x59,0x58,0x42,0x9a,0x98,0x53,0xaf,0xc7,0xf5,0x94,0x9a,0xa0,0xb0,0x03,0xcf,
- 0xd7,0x61,0x78,0x91,0x39,0xef,0xa5,0xa9,0xfd,0x61,0xbb,0x38,0xec,0x09,0x65,0x45,
- 0x73,0xe6,0x91,0x23,0x37,0xa0,0x36,0x3f,0x23,0x3a,0xe0,0x23,0xa8,0xea,0xb1,0x0d,
- 0x6f,0xfd,0x71,0xe1,0xc1,0x37,0xab,0x76,0x5a,0x53,0xf2,0x7f,0x12,0xfe,0x9f,0xa6,
- 0x28,0xc2,0xd2,0x4a,0x81,0x0f,0x8c,0x2b,0x32,0x6b,0xda,0xe2,0x30,0x42,0x45,0x5f,
- 0xe9,0x0f,0xcb,0xab,0xbd,0x26,0x1b,0x65,0x5f,0xf3,0xb4,0x69,0xc1,0x9c,0x7e,0x89,
- 0x37,0x0a,0x59,0xdf,0xae,0x49,0x70,0xa8,0xd3,0x55,0xf7,0xd5,0xfe,0x20,0x1c,0x84,
- 0xb4,0x5b,0xa6,0xc3,0x01,0x81,0x13,0x35,0x93,0x21,0xa9,0xc5,0xa0,0x79,0xb4,0x7c,
- 0x1d,0xde,0x62,0x76,0x5f,0x66,0xf0,0xda,0xfe,0x20,0xa8,0x9d,0x39,0x3f,0x36,0x69,
- 0xe1,0x6e,0x64,0x4e,0x23,0xd9,0xc2,0x23,0x68,0x93,0x5b,0x3b,0x7d,0x2d,0x82,0x41,
- 0xec,0x7c,0x0d,0x3f,0x24,0xac,0xe0,0xd9,0xce,0x99,0x46,0xb6,0x33,0xcd,0x25,0xaf,
- 0x11,0x41,0xe0,0xc0,0x20,0xbd,0x19,0x36,0xe0,0x95,0x7c,0xe5,0x2b,0xfd,0x41,0x2a,
- 0xc0,0x3a,0x11,0xed,0x72,0xf0,0x7c,0xef,0x00,0x7f,0x4d,0xc0,0x2b,0x07,0x81,0x07,
- 0x62,0xae,0xe9,0x0f,0xc2,0xdb,0x82,0xcc,0x3a,0x2e,0x5e,0x86,0x4f,0x6a,0xcb,0xbc,
- 0x93,0xbc,0x05,0x1f,0x28,0x3f,0xe6,0x6d,0x61,0x07,0x6b,0xfe,0x86,0x8e,0x93,0x2a,
- 0xaf,0xed,0xda,0xfe,0x20,0xe3,0xb0,0xa0,0x36,0x6b,0x10,0xad,0xb3,0x03,0xb4,0x68,
- 0xe1,0x02,0xee,0x18,0x39,0x8c,0x62,0x39,0x3d,0x98,0x33,0x87,0xbd,0x06,0x55,0x8b,
- 0xe9,0xb5,0xfc,0xd8,0x86,0xff,0xa7,0x99,0xdc,0x4f,0x02,0x0e,0x7b,0x1e,0x0d,0x11,
- 0xde,0x2f,0xa3,0x84,0xa7,0x4d,0x86,0x68,0x97,0x5a,0xb2,0xb6,0x28,0x95,0x1f,0xbb,
- 0xdf,0x8a,0xef,0xab,0x59,0xf0,0x35,0xd5,0x46,0xa8,0xf7,0xa0,0x5a,0x37,0x3a,0x86,
- 0xdc,0xbe,0x08,0xf5,0xbb,0x67,0x43,0xd7,0x8a,0x48,0x06,0xbe,0x6f,0x9a,0xc9,0xff,
- 0xa3,0xe0,0xfa,0xfb,0xe8,0xe6,0xf4,0xd7,0x85,0x16,0x2f,0xd1,0x2c,0xc1,0xf4,0x21,
- 0xe9,0x7a,0x09,0x81,0xd0,0xe4,0x8e,0x67,0xe1,0x79,0x56,0x52,0x27,0x07,0xd3,0x5f,
- 0xff,0xaa,0xff,0x87,0xc3,0x98,0x03,0xd5,0xf3,0xb4,0xac,0xcd,0x1c,0xb8,0x8a,0x95,
- 0xda,0xb4,0xcd,0xe2,0x8c,0x99,0x88,0x6f,0xb5,0xe2,0xe0,0xb7,0x86,0xbf,0xe2,0xff,
- 0xe1,0xf9,0x4e,0x12,0xa7,0x85,0xcc,0x7c,0xb2,0x60,0x88,0x7c,0x08,0x3f,0xf3,0xae,
- 0xef,0xe1,0x8d,0x62,0xa9,0x71,0xab,0xaf,0xfa,0x7f,0x50,0xfe,0x6f,0x81,0x88,0x86,
- 0x86,0x5e,0x73,0x8d,0x1e,0x8b,0x48,0x36,0xe7,0xa8,0x6a,0xbc,0xfe,0x2e,0x25,0xff,
- 0x47,0x41,0xb1,0xb3,0x9a,0x76,0x90,0x0b,0xd0,0x0a,0x2f,0xf0,0xb4,0x67,0xc4,0x3f,
- 0x85,0xff,0xc8,0xfb,0x83,0x5c,0x4f,0xd6,0xe9,0x76,0x46,0xa3,0x62,0xeb,0xb5,0xfe,
- 0x9f,0x68,0x46,0x1e,0xf7,0x97,0x0a,0xcb,0x7b,0x05,0x57,0xfa,0x40,0xee,0x8e,0x26,
- 0xc3,0x70,0x10,0xa0,0xa9,0x77,0x06,0xf7,0x97,0xa6,0xf4,0x87,0x35,0xda,0x82,0x04,
- 0x1a,0xd2,0x0f,0xc0,0x13,0xea,0x03,0x91,0x8c,0x1f,0xd9,0x4f,0xf2,0xfe,0x3e,0x9a,
- 0xfc,0x48,0x76,0x5e,0xce,0x1a,0x7d,0x3a,0xf7,0xff,0x74,0x99,0xfd,0x3f,0xb0,0xab,
- 0x71,0x41,0xf4,0xae,0x95,0xe2,0xd3,0xf0,0x6a,0x68,0xee,0x98,0xf5,0xd1,0x57,0xdf,
- 0x0b,0x7d,0x89,0x16,0xcd,0xfa,0x95,0x6d,0x37,0x40,0x3f,0xdb,0x15,0x75,0xd6,0x5f,
- 0xc3,0x8f,0xbd,0x97,0x9f,0x2f,0x5e,0xc6,0xf2,0xb1,0xd7,0x3d,0x68,0xeb,0xce,0x19,
- 0x11,0xf6,0x4a,0x59,0xc2,0x92,0x67,0x49,0x84,0xe7,0x9b,0x71,0x8f,0x90,0x99,0x1f,
- 0x3b,0x16,0xbf,0xc8,0x1a,0xcb,0xf9,0x27,0x58,0xa2,0xff,0x68,0xf4,0xe9,0x71,0xf1,
- 0x8a,0xf6,0xd8,0x86,0xd2,0xe8,0x63,0x63,0x19,0xd9,0x10,0xf1,0x97,0x46,0x9d,0xc3,
- 0x66,0x7e,0x6c,0x83,0x9f,0xb6,0x18,0x78,0x7f,0x6a,0xd6,0xa6,0xde,0x1a,0x91,0x67,
- 0xfb,0x2f,0x69,0x8d,0xca,0x4c,0xaf,0xec,0xf1,0xe4,0x41,0x20,0x94,0x5f,0x83,0xcf,
- 0x6f,0xe2,0xc7,0x56,0x62,0xf2,0xca,0x32,0x87,0x4c,0x91,0xd6,0x08,0x31,0x37,0x97,
- 0xf4,0x0b,0xc8,0xf7,0xa3,0xbc,0xba,0x4f,0x5b,0xa3,0x1a,0xfe,0x2e,0x33,0x3f,0xb6,
- 0xe1,0xcf,0x57,0xe9,0x6d,0x16,0x87,0xd0,0x24,0x15,0x22,0x7e,0x30,0x12,0x5d,0x1c,
- 0xd0,0xa6,0x5a,0xee,0xa4,0x4d,0x7e,0xb5,0x01,0x15,0xa5,0x99,0x1f,0x1b,0xf1,0x9e,
- 0x54,0x19,0x4d,0x47,0xb3,0x9a,0x1c,0x85,0x02,0x7d,0x1a,0xc7,0x27,0x4f,0x12,0x7b,
- 0xa7,0x2d,0xfc,0x8d,0x3a,0xa2,0x0b,0xdd,0x83,0x8b,0x43,0xa9,0xfd,0x61,0xb9,0xbc,
- 0xdd,0x34,0x8b,0xf7,0x4b,0xbd,0x88,0x40,0xe8,0x66,0x9e,0x1f,0x8e,0x86,0x86,0xd7,
- 0xf6,0x6e,0xcd,0xb3,0x8e,0x8b,0xf7,0x54,0x44,0x78,0xa8,0x3a,0x25,0xfe,0xc5,0xe5,
- 0xb9,0x75,0x6c,0xd2,0x30,0x7b,0x03,0xef,0xbf,0x7e,0x54,0xae,0x80,0x5e,0x98,0x8d,
- 0xdf,0x3c,0xa7,0x1c,0x0e,0xb3,0x6c,0xdd,0x1a,0x4d,0xed,0x0f,0xc2,0xbb,0x99,0x70,
- 0x5a,0xec,0x28,0x69,0x8b,0xc5,0xb3,0x9c,0x28,0x4f,0xca,0x5c,0x01,0xe7,0xc6,0x99,
- 0xac,0x15,0x0d,0x2b,0x7e,0xe2,0x52,0xf0,0x0f,0xc2,0xa4,0x65,0x96,0xed,0xd9,0x43,
- 0x46,0x3f,0xd0,0x36,0xee,0xd8,0x79,0x92,0x33,0x1c,0xfa,0x89,0x63,0x63,0xe0,0x9b,
- 0x45,0x11,0x3e,0xdf,0xec,0xff,0xe1,0xeb,0x03,0x16,0x17,0x9a,0x21,0x4d,0x31,0x7f,
- 0x88,0x55,0x68,0x84,0x42,0x2d,0xc0,0x50,0x09,0xb5,0x51,0x87,0x8e,0xeb,0x63,0xe2,
- 0xc7,0x4e,0x5b,0xa1,0x19,0x6d,0x70,0x79,0x3d,0xd1,0x51,0xef,0xcf,0x75,0xdb,0xe7,
- 0x62,0x05,0xbc,0x75,0x0f,0x6e,0x7b,0x90,0x1d,0xf4,0x80,0x30,0x4f,0x77,0x86,0x4c,
- 0xfc,0xd8,0xa1,0x29,0x97,0xd8,0x55,0x58,0x00,0xc5,0xa3,0x9c,0x0d,0x5b,0xdd,0xc5,
- 0xdb,0x5e,0x70,0x44,0x84,0xb0,0xa7,0xaf,0x69,0x8c,0x53,0x01,0x6b,0x68,0x8f,0xa7,
- 0xc6,0xbf,0x3e,0xe7,0xfc,0xa2,0x67,0xc5,0x13,0xec,0xaa,0x56,0x5a,0x6b,0x1d,0x13,
- 0x1f,0x81,0xf7,0x54,0x1e,0x11,0xbb,0xc5,0xd5,0x3f,0xe0,0xaf,0x92,0x96,0xf4,0xa5,
- 0xe6,0xff,0xc0,0xee,0xa2,0x82,0x41,0xfa,0xdf,0xc8,0x27,0xec,0x57,0x12,0x4a,0xd7,
- 0x1e,0x52,0x08,0xeb,0x83,0x68,0x56,0x77,0x93,0xe9,0x3a,0xe2,0xc3,0xa5,0x72,0x8b,
- 0x3d,0x15,0xff,0xec,0x56,0xd5,0x7e,0x54,0x3a,0x75,0xbe,0xbd,0x21,0xf5,0x4e,0x8b,
- 0x2b,0xbb,0x56,0x79,0x3c,0xe6,0x01,0x03,0xa9,0xb1,0x79,0xc5,0xf5,0x32,0xa4,0x93,
- 0xc9,0x29,0xf9,0x3f,0x31,0x36,0xce,0x0f,0x78,0xa2,0x78,0x5d,0x11,0x2f,0x6c,0x6f,
- 0x8b,0x39,0x82,0x8a,0xf2,0x03,0xea,0x83,0xaa,0xdc,0x93,0x6e,0xc2,0x3f,0x53,0x10,
- 0xfd,0xea,0xb3,0xf5,0xc5,0xa3,0x39,0x0f,0xc3,0x15,0x56,0x5a,0x97,0x15,0x16,0xef,
- 0x30,0x1a,0x95,0xe2,0x09,0x2a,0x10,0x0e,0xb2,0xca,0xd9,0x4b,0x5a,0x6b,0x52,0xf3,
- 0x7f,0x2e,0x57,0x57,0xe9,0xb3,0x46,0xe1,0x61,0xed,0x42,0xb0,0x2a,0x8a,0xda,0xfc,
- 0x0b,0xaf,0x81,0x88,0xc6,0x5f,0xed,0x4f,0xbf,0xc4,0x2a,0xfd,0xeb,0x35,0x39,0x35,
- 0xfe,0x35,0xe6,0x75,0xf7,0x2d,0x0e,0xcb,0xd3,0x21,0xc2,0xd0,0x2c,0x0d,0x8b,0x43,
- 0x9a,0xd1,0x28,0x96,0xa1,0x46,0xc3,0x81,0xe2,0xdc,0x74,0x0d,0xfe,0xd9,0xae,0x17,
- 0xe8,0xf5,0x9f,0xf7,0x15,0xc2,0x20,0x18,0x69,0x4e,0x67,0xe0,0xbd,0x58,0x47,0xce,
- 0xaf,0x73,0x6a,0x3b,0x07,0x6a,0xa8,0x6b,0xf0,0x4f,0x44,0x1d,0xa5,0xe5,0x68,0x94,
- 0x89,0xa0,0x72,0xf6,0x81,0xd7,0xfc,0xbc,0x3f,0x51,0xc6,0xad,0x24,0x43,0x0d,0x82,
- 0x93,0x05,0xae,0xc1,0x3f,0xf0,0x3b,0x96,0x3f,0x44,0x57,0x7a,0x6e,0x24,0x4f,0x34,
- 0x7f,0x2f,0x6a,0x59,0xe9,0x7f,0x57,0x7b,0x62,0x8b,0xd1,0x38,0x35,0xdb,0xe8,0xa0,
- 0x4a,0x17,0x92,0xd4,0xfe,0x20,0x67,0xc1,0xdd,0x47,0xdd,0xa2,0x35,0xf4,0xaa,0x1a,
- 0xee,0xb7,0xb9,0xc4,0x21,0xcf,0xab,0x6c,0xaa,0x9e,0xd9,0x2d,0xd2,0x65,0x6f,0x4e,
- 0xaa,0xf0,0x2e,0x2e,0x4f,0xe9,0x0f,0xb2,0x0f,0x7e,0x07,0x25,0x7d,0x46,0x74,0xef,
- 0x2a,0x54,0xf4,0xde,0x64,0xf0,0x43,0x5a,0x16,0xe8,0x25,0xa3,0xf2,0x98,0xc6,0xf1,
- 0x8f,0xed,0xab,0xf8,0xc7,0x7d,0x2c,0xeb,0x65,0x34,0x72,0x0f,0x05,0x8d,0xf8,0x35,
- 0x4f,0xd4,0x7f,0x54,0xb7,0xf5,0xd4,0xcc,0x91,0xf6,0x04,0xd0,0xb4,0xd7,0xaf,0xc1,
- 0x3f,0x2f,0xc1,0x16,0xdd,0xe1,0x6e,0xa5,0xbc,0xdf,0x10,0x2f,0xac,0x38,0x49,0x9a,
- 0x1c,0x5c,0xb0,0x88,0x86,0x3f,0x59,0xa7,0xda,0x35,0xf8,0xe7,0x25,0x56,0x38,0xcc,
- 0xe3,0x7d,0xc2,0xe3,0xb1,0x7c,0xa7,0xd7,0x61,0x4d,0x68,0x66,0x54,0x1e,0x26,0xd7,
- 0x09,0xff,0xbc,0x41,0xbd,0x3f,0xb0,0x34,0x15,0xff,0x48,0xbb,0xc1,0xe8,0x47,0x63,
- 0x53,0x77,0x44,0x0a,0x43,0xb2,0x2b,0x7b,0xc4,0xe0,0x6b,0x95,0x6f,0x23,0xb7,0xa7,
- 0xed,0x60,0x1d,0x3e,0x7a,0xfd,0x35,0xf8,0xe7,0x8a,0x56,0xd6,0x88,0x20,0x67,0x3e,
- 0x79,0x57,0x7f,0x29,0x6c,0xf8,0x7f,0x0e,0x42,0x39,0xb3,0x7d,0x22,0x96,0xb3,0xa7,
- 0x58,0xe9,0x46,0xe7,0xd0,0xb5,0xf8,0x47,0x2a,0x47,0xed,0x23,0x9e,0xd2,0x86,0x95,
- 0x79,0xe9,0x71,0x7f,0x48,0xac,0x3f,0x48,0xe1,0x98,0xb7,0x32,0x7b,0x3d,0x6b,0xba,
- 0x06,0xff,0x74,0x95,0xf9,0xac,0x9b,0x6f,0x94,0x08,0x2f,0x7b,0x77,0x6e,0x10,0x3f,
- 0x40,0xf9,0x63,0x94,0xbd,0x7f,0xc0,0xed,0x7d,0x9f,0x35,0x08,0xd7,0xe2,0x1f,0xbb,
- 0xcf,0xb1,0x99,0x4c,0x87,0xc3,0x46,0x7f,0x58,0x3c,0x08,0x6f,0x01,0xd1,0xe8,0x3f,
- 0x93,0x0f,0xd8,0xde,0x42,0x4e,0x1d,0x39,0x29,0x94,0x82,0x7f,0xf6,0xd2,0x33,0xb5,
- 0x08,0x63,0xa6,0x57,0xb7,0x4c,0x7e,0xb0,0xda,0x68,0x63,0x11,0xef,0x67,0x31,0x24,
- 0x3c,0x0f,0x25,0xf7,0xd2,0xd4,0xfe,0xb0,0xdc,0xff,0xe3,0xf3,0x3a,0x0c,0x6f,0x8f,
- 0x86,0x77,0xe3,0x8e,0xa0,0xc9,0x08,0x9c,0xf0,0xca,0x6b,0x46,0x68,0xcc,0xa1,0x5c,
- 0x97,0xd2,0x1f,0x16,0x46,0xa1,0x8c,0xb7,0x05,0x89,0x45,0xdb,0xb9,0x23,0x48,0x8a,
- 0x40,0x87,0x31,0x10,0x62,0x1d,0x63,0x85,0x75,0x29,0xf8,0xe7,0x32,0x4c,0xf3,0x2e,
- 0xd9,0x24,0x5e,0xce,0xfe,0x84,0x57,0x7b,0x05,0x0b,0x3e,0xe7,0x34,0xe0,0xda,0x7a,
- 0x6f,0xc1,0xe7,0xc2,0x67,0x60,0xf4,0x87,0x7d,0x36,0x05,0xff,0x5c,0x86,0x1d,0xb5,
- 0xb6,0x63,0x72,0x6e,0xe8,0xb0,0xcb,0xed,0xb5,0x0e,0xd6,0x9c,0xd7,0x0f,0xa8,0xa5,
- 0x9a,0xed,0x4d,0x4e,0x94,0x8d,0xf8,0xc7,0x7a,0x4d,0x7f,0x34,0xe8,0x91,0xed,0x92,
- 0xec,0xf7,0xab,0x78,0x32,0xec,0x37,0x51,0x46,0xde,0xf7,0x07,0x34,0x83,0x28,0x52,
- 0x0d,0xe1,0xf9,0xda,0x4c,0x9f,0xf9,0x4a,0xfe,0x8f,0xaa,0xc9,0x39,0x44,0x0a,0x71,
- 0xf6,0x5d,0xaa,0x64,0xf3,0x40,0x98,0xd1,0x21,0xae,0xf9,0x20,0xf7,0x80,0xd5,0x2b,
- 0x77,0x98,0xe2,0x5f,0x93,0x3b,0x71,0x7d,0x8c,0xe8,0x61,0x21,0x6e,0xa4,0x90,0x56,
- 0x1e,0xcf,0xa7,0xd2,0xe4,0x97,0x16,0x16,0xc2,0xf3,0xa4,0xa4,0x0e,0x52,0xfa,0xa3,
- 0xf1,0xfc,0x67,0xaf,0x9b,0x17,0xe9,0xcf,0x90,0xc6,0xa5,0x52,0xcd,0x19,0xac,0x89,
- 0xf5,0x07,0xb9,0x39,0x57,0x7c,0x4e,0x3d,0xa0,0x55,0x7a,0x6b,0x37,0xa7,0xc6,0xbf,
- 0xa4,0xf1,0x00,0xc7,0x3f,0x39,0x43,0xfe,0x5e,0xdd,0x00,0x42,0xfd,0x70,0x36,0x9e,
- 0xff,0xc3,0xde,0x82,0x8a,0x65,0xb6,0xec,0x54,0xfc,0x23,0x8c,0x81,0x5b,0xba,0x8f,
- 0xd9,0xf2,0xb5,0x48,0x0c,0x6d,0x72,0xb3,0xf7,0xe1,0x58,0xc7,0xba,0x88,0x54,0xa9,
- 0x58,0x9b,0xe5,0xd4,0xf8,0xd7,0x7e,0xb6,0x95,0x39,0x4e,0xd5,0xfc,0x18,0xbe,0x03,
- 0x76,0x4e,0xf3,0x3e,0x06,0x6f,0x83,0x9b,0xc9,0x1f,0x90,0xf9,0x5a,0xeb,0x37,0x67,
- 0xa1,0x21,0x56,0x93,0xda,0x1f,0x6d,0x07,0xf3,0x45,0xe9,0x4e,0xb2,0xc2,0xd1,0xa4,
- 0xa8,0xfa,0xf5,0x3c,0xed,0x19,0xed,0x05,0x5d,0x9e,0x6a,0xf9,0x3a,0x6d,0xd2,0x9c,
- 0x0d,0x16,0x57,0x2a,0xfe,0x11,0x76,0xd1,0xfc,0x28,0x5d,0x4e,0x96,0xc2,0xe3,0xf0,
- 0x3d,0x5e,0x0f,0xc5,0xdb,0x84,0xe1,0xf9,0xbd,0x97,0x58,0xf3,0xd7,0xd0,0xe2,0x37,
- 0x71,0x7e,0x4a,0x7f,0x34,0x78,0x85,0x95,0xfa,0xea,0x4e,0x58,0xbe,0xcb,0xfb,0x97,
- 0x8d,0x66,0x2e,0x15,0xaf,0xc0,0xab,0xec,0x99,0xa8,0x6d,0x4c,0xbe,0x0e,0xde,0x08,
- 0x54,0xf9,0x4a,0x56,0x8a,0x1f,0x25,0xfd,0x3f,0x99,0xdb,0x0c,0x7b,0xf3,0x66,0x96,
- 0x33,0x8c,0x40,0x71,0x9f,0x3e,0xcb,0x20,0x5a,0x27,0x31,0xa2,0x5a,0xc2,0x1b,0x5d,
- 0x3d,0x16,0x4e,0xe9,0x8f,0x76,0x05,0x78,0xd9,0xfb,0x63,0x63,0xa2,0x5b,0x3b,0x1c,
- 0x2e,0x1d,0xb2,0x9e,0xf8,0xd6,0x05,0xe5,0x28,0xab,0x1a,0xb2,0xdd,0x20,0xbe,0xcc,
- 0x3b,0x3e,0xa8,0x37,0xaf,0x14,0xc0,0x14,0xff,0x32,0xf8,0xae,0x23,0x8e,0x65,0x35,
- 0x6e,0xed,0x25,0xe5,0xd6,0x61,0x7c,0xfe,0x31,0xd2,0xc4,0xfb,0xbb,0xfd,0x1d,0x99,
- 0x03,0xcd,0x50,0x2c,0xc9,0xee,0xd6,0xd4,0xfc,0x9f,0x97,0x94,0x7c,0xad,0xce,0x5b,
- 0xa6,0x84,0x7e,0xa1,0xde,0x1f,0x45,0xc3,0xed,0xa4,0x41,0x0c,0xbe,0x68,0x90,0x6c,
- 0x32,0xa0,0x14,0x4a,0x30,0x73,0x7f,0xd8,0x01,0xfc,0x48,0x2a,0xda,0xfb,0xa4,0x1a,
- 0x0f,0x72,0xe1,0x71,0x3c,0x5f,0x67,0x0c,0x47,0x90,0x5c,0x48,0x8a,0x60,0x87,0x52,
- 0xd2,0x2c,0x97,0x5f,0x67,0xee,0x0f,0xbb,0x0d,0x2e,0x68,0x3c,0x9b,0x54,0x76,0xa2,
- 0x5a,0x71,0x8d,0xa2,0xb5,0xf8,0x69,0xcc,0x11,0x94,0x26,0x76,0xbc,0x7a,0x91,0x03,
- 0x9b,0xdf,0x89,0x45,0x29,0xf8,0xe7,0x82,0x5e,0x19,0xcc,0xea,0x14,0xbb,0xb8,0xff,
- 0xa7,0xd7,0x16,0x9e,0x14,0xe7,0x07,0xe0,0x1e,0x12,0xd9,0x52,0x19,0xf9,0x4a,0x7f,
- 0x90,0x2b,0x74,0x87,0xb6,0x62,0xa9,0x5c,0xee,0x3f,0x10,0x74,0xf7,0x65,0x5e,0xc8,
- 0xb9,0x44,0xde,0x80,0x1f,0xf1,0xc6,0xe8,0x2e,0x18,0x68,0xac,0xaa,0x5e,0x3b,0x7a,
- 0x0d,0xfe,0xd9,0xf7,0x50,0xfe,0x36,0xfa,0xa6,0x5f,0xf1,0x3f,0xc6,0xe6,0xea,0x68,
- 0x7d,0x9c,0x65,0x6d,0x70,0xba,0xb7,0x2d,0x40,0xb6,0xaa,0x81,0xd3,0x25,0x6a,0x5d,
- 0x58,0x0c,0xa5,0xe0,0x9f,0x30,0x6f,0x1a,0x38,0xd1,0xc6,0x2b,0x23,0x9c,0x3d,0x22,
- 0xb5,0x09,0x08,0x9c,0x02,0xc4,0xae,0x04,0xd4,0x12,0xbb,0xd1,0x28,0x6d,0x62,0x3f,
- 0x18,0xfd,0xd1,0x70,0xb7,0x96,0x03,0x01,0xd6,0x08,0x33,0x5e,0x45,0x41,0x1d,0x91,
- 0x9a,0x04,0x94,0xcf,0x7e,0xd2,0x2c,0x30,0x30,0xec,0xfd,0xa4,0xfc,0xe1,0xfe,0x9f,
- 0x51,0x4e,0x62,0xa9,0x8a,0x8e,0xd0,0x01,0x28,0xe5,0x89,0x28,0x23,0x70,0xc8,0x6b,
- 0xe7,0x8d,0x71,0x39,0xff,0x46,0xa5,0x56,0xb2,0xdd,0xdc,0x1f,0xf6,0x7a,0x9e,0xff,
- 0x63,0x63,0x86,0x77,0xcb,0xe0,0x37,0x1e,0x14,0xc3,0xb1,0x44,0xd6,0x5e,0x79,0x94,
- 0x1a,0x89,0x40,0xe7,0xc4,0x2e,0x13,0xfe,0x79,0xd7,0xc0,0xcf,0xd6,0x95,0xe2,0xcd,
- 0x60,0xa4,0x3d,0x0f,0x8b,0x15,0xf4,0xb0,0x63,0x07,0xb3,0x72,0xff,0xe4,0x40,0xf3,
- 0x6c,0xd7,0xe2,0xa5,0x05,0x49,0xfe,0x1f,0x5d,0x39,0xcd,0xb3,0xc1,0x81,0x67,0x1b,
- 0x2a,0x01,0xc6,0xdb,0x12,0xf9,0xab,0x48,0x8b,0x6e,0x0f,0x5b,0xda,0xc9,0x6f,0xa1,
- 0xad,0xd1,0x2e,0xa0,0xc4,0x1e,0x4d,0xc4,0xbf,0x22,0x13,0xfe,0x9f,0xb0,0xdd,0x89,
- 0xcb,0xa8,0xf2,0xc6,0xaf,0x56,0x4f,0x23,0x51,0x9b,0xeb,0x18,0xb1,0x22,0x30,0xb6,
- 0x53,0xdc,0x21,0xe7,0x12,0xf5,0xa7,0xfa,0x94,0x90,0xd2,0xc3,0x17,0x01,0xef,0xcf,
- 0xf9,0x04,0x84,0x5b,0xd8,0x32,0x27,0xcf,0xff,0x0c,0x59,0x82,0xfe,0xdf,0xaa,0xbf,
- 0x62,0x46,0x7f,0xd8,0x51,0x93,0xbf,0x28,0xe6,0x7f,0xb0,0xf2,0xb0,0xd4,0x21,0x1e,
- 0x76,0xe9,0x6c,0x73,0xd2,0x03,0xcc,0xd5,0x65,0xcd,0x10,0xbf,0x0e,0x6f,0x32,0x97,
- 0xc3,0xda,0x62,0xea,0x8f,0x16,0x12,0xc2,0x60,0x2c,0x82,0x6e,0x64,0xd3,0x55,0x81,
- 0x55,0xff,0x16,0xe2,0xc3,0x8c,0x4a,0xb6,0x7e,0x50,0x1c,0xb5,0xfc,0x25,0xa3,0x4a,
- 0xc2,0x9f,0x86,0x53,0xf0,0x0f,0x47,0x53,0xd6,0xed,0x4d,0xfc,0xfe,0x95,0xfd,0xa8,
- 0x28,0xd7,0x2a,0xe3,0xe0,0x6e,0xcf,0x6a,0x9e,0x34,0x9d,0xf7,0xa7,0x53,0xd7,0x32,
- 0x71,0xb6,0x09,0xff,0xf0,0xc7,0x46,0x90,0x83,0xdf,0x57,0x62,0xde,0x12,0x15,0x07,
- 0x15,0xb0,0xdd,0x83,0x66,0xd7,0x1e,0x8f,0x14,0x6c,0x0b,0xd9,0x55,0x7c,0x71,0x57,
- 0x0a,0xfe,0xe1,0x68,0x90,0xce,0xc9,0x5e,0x0c,0x4d,0x7a,0xc9,0x58,0xac,0x9f,0xa9,
- 0xa6,0x2a,0x16,0xf0,0x58,0x0d,0xc5,0xed,0x70,0x59,0x5c,0x09,0x7d,0x17,0x15,0xdc,
- 0xd0,0xcc,0x8a,0x55,0x1a,0x49,0x7f,0x18,0x9a,0x03,0xb3,0x54,0xba,0x94,0x4c,0x93,
- 0x76,0xf8,0xf3,0x55,0x5a,0x87,0x46,0xe1,0x9a,0xe0,0x96,0x51,0x3a,0x46,0x2a,0x12,
- 0xf1,0xaf,0x3b,0x11,0xff,0xfc,0x5e,0xaa,0xd4,0x9d,0xb3,0xc5,0xc5,0xf0,0x2a,0x54,
- 0xf0,0xb2,0xc1,0xb5,0x70,0xd6,0xe5,0xa2,0xeb,0x88,0xc7,0x4a,0x5f,0xd5,0x5c,0xba,
- 0xd5,0x25,0x66,0x27,0xe3,0x5f,0x37,0x25,0xd6,0x27,0xac,0x5d,0x52,0x16,0x80,0xed,
- 0x4d,0xe1,0x32,0xfc,0x44,0xc1,0x2b,0x9a,0x78,0x52,0xfb,0x52,0xaa,0xea,0xb7,0x8d,
- 0x99,0xf8,0xb1,0xe3,0xfe,0x9f,0xa8,0x91,0xed,0xfc,0x31,0x8b,0xe7,0x87,0x5f,0x84,
- 0x8a,0x53,0xd6,0x80,0xe8,0x94,0x3e,0x23,0x6e,0xdd,0xda,0x65,0xe6,0xc7,0xde,0x10,
- 0x84,0x9d,0x28,0x34,0x22,0x1a,0x19,0x44,0x55,0x9c,0x0f,0x32,0xca,0x93,0xdc,0x5d,
- 0x90,0xc9,0x79,0xd3,0xa6,0x1a,0x44,0xd9,0x68,0x4f,0x75,0x27,0xe4,0x1b,0x83,0xa7,
- 0x95,0x5d,0x6c,0x16,0x77,0xf2,0xbc,0x0b,0xff,0xc2,0xc3,0x5e,0x3c,0xdf,0xfb,0x25,
- 0x56,0xdc,0x91,0x11,0xf1,0x4f,0x33,0x42,0x81,0x19,0xf5,0x84,0x9a,0xf0,0x8f,0x0e,
- 0xf1,0xfd,0x13,0x05,0x26,0xa8,0x20,0x2b,0xe9,0x03,0xb0,0xdd,0xb7,0xa2,0xf1,0x4e,
- 0xb8,0x27,0x53,0xdd,0xa1,0xd9,0xb9,0x87,0xed,0x29,0x53,0xfc,0x2b,0x00,0x17,0xa0,
- 0x84,0x97,0xbd,0x0f,0x4b,0x2f,0x90,0x38,0x3f,0xf6,0x15,0xa8,0xe2,0xa1,0xb6,0xdb,
- 0xe0,0x0b,0xcd,0xcd,0x8a,0x3b,0x53,0xf8,0xb1,0x63,0xdb,0x66,0x56,0x3f,0x19,0x9d,
- 0x58,0xa8,0x28,0xaf,0x87,0xca,0x5e,0xcb,0x33,0x54,0xc7,0x6e,0x47,0x53,0x45,0x6f,
- 0x32,0xc7,0xbf,0x62,0xfc,0x3f,0x78,0x5a,0x0b,0xf3,0x0e,0x28,0xbc,0xec,0xdd,0xd3,
- 0x09,0xe3,0x8d,0x65,0xf1,0xc6,0x58,0xed,0x5f,0xe5,0xff,0x89,0xa5,0xf1,0x3c,0x6d,
- 0xff,0xba,0xef,0x00,0x2b,0xd1,0x8c,0x46,0x69,0xbb,0x83,0x25,0xf7,0xb4,0x6d,0xbe,
- 0xe7,0x0c,0xdd,0xad,0x95,0x69,0x81,0x6b,0xfd,0x3f,0x8f,0x09,0xdf,0xbb,0x5f,0x7e,
- 0xd3,0x32,0x07,0x1e,0x8b,0xd5,0xb3,0x74,0x72,0x0f,0xa4,0x76,0x63,0xd0,0xf3,0xac,
- 0xc4,0x03,0x67,0x74,0x90,0x1c,0x31,0xf1,0xff,0xf0,0x69,0xf9,0x0d,0xa8,0xad,0xa6,
- 0xc0,0x2f,0x58,0xb1,0x97,0xde,0x4b,0x9a,0x73,0x79,0x3c,0xe8,0xc6,0xbc,0xec,0x7e,
- 0x94,0xd8,0xcf,0x34,0x38,0xbc,0xe4,0x60,0x22,0xfe,0xc5,0xf1,0x4f,0x3c,0xdb,0xd9,
- 0x90,0x36,0xb8,0x55,0x09,0xf7,0x48,0x70,0x22,0xa0,0x9a,0x10,0xbd,0x20,0xb8,0x05,
- 0xab,0x5e,0x90,0xf4,0xff,0x9c,0xb8,0x89,0x27,0xde,0x56,0x18,0x6a,0x5d,0x3a,0xc5,
- 0x0b,0xc1,0x82,0xe4,0xfb,0xd2,0x65,0xad,0xea,0x4d,0x9b,0x37,0xe7,0x3c,0x5c,0x16,
- 0x2a,0x78,0xa0,0x27,0xc9,0x8f,0x9d,0x27,0x18,0x4d,0x40,0x6a,0x11,0xe4,0xe4,0x0a,
- 0x87,0x79,0xd9,0xbb,0x22,0x0c,0xb1,0xcf,0x11,0xff,0x38,0x07,0x6b,0x2a,0x38,0xb1,
- 0xb6,0x66,0x1d,0x2c,0x48,0xe2,0x9f,0x95,0xf1,0xfe,0x20,0xd4,0xc0,0x3f,0xf1,0x44,
- 0x20,0xad,0x87,0xd3,0xce,0x33,0x34,0xbb,0x7a,0x88,0x71,0x25,0xc9,0x8f,0x8d,0xf8,
- 0x47,0xda,0x2d,0x15,0xf2,0x78,0x9f,0xe4,0x6a,0x14,0x9c,0x9e,0x40,0xb6,0x9f,0xf3,
- 0x81,0xab,0xb7,0x53,0x9e,0x91,0xc8,0x3b,0x86,0x38,0x14,0x62,0xe2,0xc7,0x9e,0xd2,
- 0x39,0x75,0x37,0x74,0xf2,0xf9,0xdc,0x9f,0xe6,0xac,0xae,0xe7,0xfd,0x79,0x77,0x6b,
- 0x45,0xdc,0xb1,0x36,0x1d,0x76,0xd7,0x94,0xf0,0x8e,0x69,0x29,0xf1,0xaf,0xbc,0xed,
- 0x50,0x86,0xb0,0xc7,0x22,0xe1,0x87,0xab,0xc4,0x69,0x46,0x62,0xb3,0xdb,0x67,0xdd,
- 0x20,0xce,0xd0,0x38,0xf0,0x73,0x9a,0xfb,0xc3,0x0e,0x73,0xff,0x8f,0x64,0x54,0x87,
- 0x2d,0xe7,0xde,0x1e,0x4f,0x2c,0xff,0xb9,0xbd,0x62,0xb9,0x2d,0x28,0x9f,0xe1,0xae,
- 0xa1,0x1a,0x1c,0x9c,0xbb,0xc6,0xff,0xc3,0x9d,0x3c,0x3c,0x91,0x04,0x0f,0xff,0x7a,
- 0xfc,0x10,0x92,0x0e,0xf3,0x14,0x5b,0xc0,0xc8,0x48,0x77,0x0b,0x46,0xbf,0xb0,0x89,
- 0xe7,0x41,0xfc,0x23,0xec,0xe1,0xfd,0x41,0xa2,0x64,0x1e,0x59,0xc7,0xe6,0x06,0xb3,
- 0x42,0x77,0x38,0x60,0x9d,0x56,0x10,0x90,0xeb,0xc9,0x30,0xbc,0xab,0xcc,0x65,0xb2,
- 0x2f,0xd5,0xff,0xa3,0xec,0xe0,0xdd,0x19,0x5c,0xf8,0x52,0x7e,0xa6,0x0e,0xb6,0xb8,
- 0xec,0x28,0x76,0x14,0xc7,0xc3,0xf2,0x64,0xd2,0xaf,0x34,0x49,0xf6,0xe3,0xf2,0xb5,
- 0xfe,0x9f,0x57,0xa0,0x40,0xcf,0x6b,0x20,0xb9,0xae,0x35,0x81,0xe9,0x44,0xbe,0x40,
- 0xb2,0x60,0x0d,0xdc,0x5f,0x7d,0xa3,0x97,0x7c,0x01,0xff,0xdc,0x38,0x1d,0xef,0x6f,
- 0xe2,0xc7,0x36,0xfc,0x3f,0x6c,0x36,0x57,0x2b,0x88,0x76,0x70,0x90,0xf1,0x63,0xcb,
- 0x34,0xf2,0x1a,0xcb,0xf0,0x2d,0x59,0x9a,0xf3,0x07,0x8a,0x57,0x78,0xa3,0xb4,0xd3,
- 0xe6,0xfc,0x1f,0xfa,0x19,0xec,0xd3,0x66,0x31,0x5c,0x96,0xcf,0x84,0x4a,0xb8,0x7b,
- 0x47,0x2c,0xfe,0xc5,0xcb,0x48,0xfb,0xa5,0x8b,0xb1,0x08,0xb5,0xc9,0xff,0xb3,0xea,
- 0x8a,0x37,0x5e,0xb6,0x53,0xc6,0xdb,0x9a,0x0f,0xdd,0xbc,0x9b,0x5c,0xc9,0x43,0x8d,
- 0xf6,0xc1,0xda,0xb7,0x72,0xca,0xea,0x2e,0x06,0x4b,0x3b,0xd7,0xd6,0xcb,0x49,0x7c,
- 0x62,0xe4,0xff,0x38,0x78,0x13,0x37,0x7b,0x2e,0xac,0x91,0x8a,0x3d,0x59,0x8f,0x92,
- 0x93,0xc1,0x97,0x97,0x67,0x1e,0x7f,0xe1,0x9b,0x1b,0x73,0x23,0xbb,0x42,0xb7,0x34,
- 0xd3,0xfb,0xfd,0x2f,0x98,0xe3,0x5f,0x28,0x94,0xee,0xe7,0x2f,0x35,0xd5,0xf7,0x04,
- 0x14,0xf7,0xca,0x0d,0x7d,0x27,0xa5,0x5d,0x5a,0xb1,0x9f,0xea,0xf6,0xbf,0x51,0x5e,
- 0xa9,0xce,0x6f,0xce,0xf0,0x5d,0x83,0x7f,0x76,0x80,0x3d,0x4f,0xb6,0x12,0x1b,0x79,
- 0xdc,0xeb,0xf4,0x59,0xca,0xb3,0x07,0x94,0x6e,0xe2,0x1c,0xb6,0x48,0x9e,0x3b,0xb4,
- 0xed,0xcd,0x45,0x6c,0xa6,0x9d,0x04,0x4c,0xf1,0xaf,0xdf,0x96,0x7f,0x06,0xdd,0x8a,
- 0xed,0x49,0xd4,0x56,0x6f,0x1d,0x2f,0x39,0x6f,0xbb,0x64,0x1f,0x51,0x2e,0x70,0x8f,
- 0x71,0x8f,0xb8,0x02,0x3e,0x0b,0xd9,0x59,0xe6,0x36,0xb9,0xe8,0x5a,0xff,0x8f,0x62,
- 0xdb,0x22,0x7f,0xc0,0x3e,0xae,0xad,0x0c,0x1a,0x7c,0xda,0x17,0x08,0x6f,0x8b,0xf6,
- 0x9f,0xb6,0x49,0x08,0x1d,0x95,0xac,0x6b,0xfc,0x3f,0xea,0x55,0x3a,0x37,0x6a,0x3d,
- 0x11,0xab,0xf7,0xe9,0xb7,0x8e,0x36,0x71,0x84,0x80,0xf6,0x45,0xb4,0xe9,0x11,0xbc,
- 0xf2,0x23,0x7d,0x71,0x54,0x8c,0x24,0xf0,0x0f,0x33,0xfc,0x3f,0x76,0x5f,0xdd,0x5a,
- 0x7f,0xb4,0x79,0xef,0x01,0xe7,0xc6,0x3a,0x1e,0xff,0x0a,0x43,0xc7,0xfd,0xb2,0x13,
- 0xb1,0xff,0x6e,0xcd,0xee,0xe2,0x1e,0xc5,0x6b,0xf2,0x7f,0x66,0xe4,0xd1,0x8d,0x9e,
- 0x4e,0xb6,0x97,0x19,0xfd,0x4c,0x47,0x60,0xb7,0x6a,0xf7,0xc9,0xed,0x7e,0xfc,0x29,
- 0x30,0x63,0xcb,0xb5,0xfe,0x1f,0xb6,0x83,0xb3,0x58,0xaa,0x1e,0xde,0xaf,0xa7,0x44,
- 0xa0,0x6e,0xfb,0x80,0xd4,0x83,0x16,0xca,0xa2,0x60,0x3a,0x9e,0x47,0x55,0xe5,0x8d,
- 0xe4,0xfa,0x92,0xfc,0xd8,0x99,0x3c,0xbf,0xb7,0x8c,0x59,0x15,0x31,0x44,0x79,0x9a,
- 0xb7,0x73,0xf4,0x71,0xbc,0x3f,0x4a,0xd4,0x25,0x8c,0xe7,0xf7,0xe6,0x1b,0xa6,0xab,
- 0xde,0x94,0xcc,0xff,0xf9,0x84,0xbf,0x26,0xcc,0xd2,0x73,0x06,0xe9,0x55,0x81,0x77,
- 0xb3,0xaa,0xe6,0xef,0xbb,0xa0,0x7a,0x92,0x26,0x5e,0x82,0x2f,0x94,0x57,0x38,0xb1,
- 0x89,0x99,0xff,0xe7,0x2a,0x77,0x9b,0xf0,0xfc,0xf0,0x15,0x70,0x14,0xdc,0x51,0xeb,
- 0x69,0x84,0x85,0xb8,0x3e,0x14,0xcd,0xf6,0x39,0xd5,0x03,0xb7,0x23,0x42,0xe8,0x25,
- 0x29,0xf9,0xcf,0x6c,0x0f,0xb3,0xd3,0xba,0xf6,0xfc,0x4f,0x69,0x2b,0xf8,0xa3,0x34,
- 0xe4,0xb1,0x43,0x4f,0xb0,0xc8,0x45,0x1f,0x23,0xcf,0xe8,0x81,0xea,0x92,0xa9,0x74,
- 0xf5,0x35,0xf1,0xaf,0x3d,0xa0,0x12,0xca,0x2c,0x5c,0x9b,0xdb,0x75,0x9a,0x4f,0x40,
- 0xc3,0xf7,0x6d,0xa6,0x90,0x2d,0x01,0x82,0x1b,0x91,0x0a,0xa9,0xf1,0x2f,0xd8,0x13,
- 0xb0,0x8b,0x68,0x8f,0x8c,0xb0,0x56,0x84,0x91,0x34,0xe4,0x57,0xd5,0x1e,0x5a,0xe4,
- 0x77,0xb0,0xbe,0xce,0x82,0x17,0x59,0xc9,0x29,0xda,0x05,0x49,0xff,0x8f,0x3a,0x79,
- 0x04,0xce,0xe9,0xdd,0x5e,0x6b,0x9a,0x78,0x2b,0x0c,0x84,0xc2,0xba,0x75,0x48,0x9c,
- 0x5d,0x77,0xc9,0x5b,0xaa,0x58,0x5f,0x13,0x17,0x40,0x40,0xaf,0xac,0xb7,0x6e,0x16,
- 0xf2,0x52,0xfc,0x3f,0xa8,0xdd,0x1c,0xb6,0x13,0x4d,0x73,0xc8,0x15,0xbd,0xaa,0x6f,
- 0x56,0x54,0x3c,0x0d,0x63,0xac,0x8a,0xb7,0xf5,0x1c,0x51,0xfe,0x44,0x2b,0x61,0x16,
- 0x5c,0xe3,0xff,0xb9,0xc0,0xd3,0x38,0x9b,0x51,0x2d,0x1e,0xa0,0xa8,0xdf,0x3b,0x39,
- 0x2d,0xbf,0xe6,0x0e,0x5a,0x9b,0xc5,0x62,0xfd,0x84,0x56,0xe9,0x41,0xfb,0x2b,0xb5,
- 0xfe,0x6b,0x0f,0xf7,0xc6,0xef,0x13,0x03,0xd0,0xd6,0x6c,0x1f,0x44,0xbc,0x97,0xaf,
- 0xe1,0x7e,0x67,0x99,0x94,0x14,0x2b,0x19,0x91,0x92,0x06,0x5c,0xa8,0x64,0xfe,0xb3,
- 0xce,0xed,0x2f,0x1f,0xce,0xbf,0x95,0x1c,0xd1,0x5a,0xfc,0x6a,0xbf,0x1c,0x26,0x59,
- 0xa4,0x0d,0x42,0x3e,0x5a,0x6e,0xb1,0xe3,0x8a,0x95,0x84,0xa9,0x83,0x84,0x53,0xfc,
- 0x3f,0x3b,0x1b,0x8d,0xfa,0xf7,0x75,0xad,0xab,0x59,0xfe,0x70,0xdb,0x4a,0x32,0x4d,
- 0x5d,0xe3,0xcf,0x5f,0x96,0xf1,0x63,0x14,0xe3,0xab,0xb6,0x14,0x87,0x10,0x11,0xb5,
- 0x27,0xee,0x5f,0x8f,0xf8,0xe7,0x9c,0x5a,0x01,0x36,0xd7,0x37,0x8e,0x40,0xcb,0xcc,
- 0xf0,0x90,0x2d,0x2c,0x5b,0xe1,0x55,0xd5,0x15,0xb1,0xce,0x6f,0x02,0xd2,0xe7,0xad,
- 0xf0,0x58,0xcb,0x9a,0x9e,0x4a,0xf1,0xff,0xec,0xe7,0x4e,0x9e,0xb3,0xe2,0x25,0x3a,
- 0x51,0xff,0xa5,0x5d,0x84,0x05,0xdc,0xfe,0x3a,0x57,0xfb,0x97,0xd9,0x46,0xeb,0x61,
- 0x6f,0x8a,0xff,0xc7,0x38,0xad,0xe1,0x49,0x03,0x42,0x44,0xe8,0xee,0xb5,0xf5,0x18,
- 0x40,0xd4,0x68,0xf4,0x5c,0x04,0x03,0xb1,0xfa,0xca,0xd4,0xfe,0xb0,0x2f,0xa3,0x9a,
- 0x8e,0x78,0xb3,0x4f,0x12,0xc6,0xcd,0x46,0x9e,0xef,0xd4,0xc4,0x03,0x37,0x2e,0x42,
- 0x95,0xc7,0xa0,0x00,0xa8,0xf7,0x9a,0xfc,0xe7,0x97,0xf5,0x62,0x4e,0xea,0xf8,0x2e,
- 0x5d,0xa5,0x1b,0xf8,0x67,0x1a,0x3c,0xc1,0x0c,0x22,0xa0,0x1b,0xf2,0x9a,0x59,0xfe,
- 0xb2,0xc0,0x54,0x73,0xfe,0xb3,0x82,0xf6,0x97,0xea,0x5c,0x46,0x8d,0x6e,0xb0,0x88,
- 0x1e,0x17,0xc5,0x1b,0x11,0x72,0x8f,0x50,0xab,0xb7,0x51,0x08,0x35,0x38,0x36,0x5f,
- 0x5b,0xff,0xa5,0xfd,0x9c,0x39,0x7d,0xe2,0x45,0x38,0xa2,0xf3,0xb6,0x83,0xb2,0x83,
- 0x1c,0xe3,0x15,0x99,0xaa,0x5c,0x4e,0x8e,0x44,0x4a,0x43,0xd6,0xa1,0x6b,0xf3,0x9f,
- 0xb5,0x4a,0x09,0xf7,0x43,0x54,0x1d,0x8d,0xb1,0x1d,0xea,0xa8,0xd5,0x8c,0xfa,0x94,
- 0x87,0x60,0x8c,0xf2,0xfa,0xf7,0xc7,0xaf,0xf1,0xff,0x30,0x54,0x82,0x9b,0x0b,0x24,
- 0x38,0x90,0xeb,0xae,0xe5,0xb4,0x3f,0x2c,0x4e,0x7b,0x58,0x08,0x67,0xed,0x2e,0x9f,
- 0x14,0x14,0xaf,0xc9,0x7f,0xc6,0xf9,0x68,0x44,0x14,0x42,0x8b,0xae,0x1a,0xfe,0x1c,
- 0x3f,0xe2,0x7f,0xbc,0x22,0xfe,0x03,0xef,0x58,0xe1,0xa5,0x4f,0x5f,0x9b,0xff,0x9c,
- 0xe7,0xe4,0x30,0xc9,0x49,0x5a,0xaa,0x8d,0x78,0xd9,0x79,0x78,0x4c,0x2d,0xd0,0x1c,
- 0xc7,0xc8,0x1c,0x6d,0x37,0x25,0x0b,0x2d,0x1b,0xfe,0x95,0xfc,0x67,0x8e,0x07,0xa0,
- 0x51,0xb3,0x73,0xb7,0xcf,0x71,0x61,0x15,0x6f,0xfc,0xed,0x25,0xff,0x19,0x81,0x7a,
- 0xc8,0xfb,0x91,0xb9,0xfe,0x34,0x11,0xff,0x0a,0xdd,0x82,0xfa,0x97,0xd8,0x27,0xfc,
- 0x0f,0xdc,0x11,0x21,0xbb,0x10,0x6a,0xbb,0x61,0xdd,0x35,0xf5,0x5f,0xf4,0x32,0xcc,
- 0x8f,0x55,0xbb,0x5f,0xf5,0x54,0x69,0xb3,0x36,0xd5,0x7c,0x00,0xe3,0xbc,0x3f,0xda,
- 0x26,0xf1,0x03,0x7a,0x55,0xab,0xf2,0xde,0x75,0xbc,0x26,0x25,0xfe,0xa5,0x5d,0x86,
- 0x0a,0xaf,0x6d,0x30,0x67,0x8e,0x83,0x27,0x02,0xd9,0xde,0x16,0xcb,0xd4,0xc3,0x81,
- 0xd2,0x7a,0xeb,0x89,0xa6,0xb9,0x80,0x88,0xc8,0x6b,0x7d,0xb3,0xe9,0x8c,0x92,0xf4,
- 0xff,0x9c,0x66,0x7b,0x84,0x12,0x4e,0x72,0x98,0xaf,0xf4,0xa8,0x1d,0x80,0x66,0x63,
- 0x3e,0x04,0xb4,0x0e,0xa0,0xcd,0x16,0x1c,0xa8,0x28,0x81,0x3b,0xc9,0x11,0xb3,0xff,
- 0x87,0x19,0x69,0x3f,0x41,0x5e,0xe6,0xcf,0xab,0xbd,0x72,0xfd,0xbc,0x43,0xae,0xca,
- 0x57,0x20,0x0d,0x1a,0xeb,0x70,0x29,0xb2,0x4d,0xfd,0xa9,0x8d,0xfc,0xe7,0xe6,0x92,
- 0x3a,0x79,0xa3,0x7d,0x79,0xe7,0x6e,0x81,0x3b,0x82,0xec,0x85,0x34,0xee,0x4f,0x2b,
- 0x14,0xda,0xd4,0x92,0x41,0x9a,0xd2,0x1f,0x36,0xd7,0x88,0x67,0xf9,0x6c,0xfc,0xeb,
- 0x8c,0x73,0xa0,0x3b,0x88,0x86,0x3e,0x7e,0x5f,0x1f,0xc2,0x1e,0x1c,0xdc,0x5e,0xb9,
- 0xdc,0xda,0x8e,0xd0,0x7a,0x62,0x7f,0x1a,0xf5,0x5f,0x50,0x59,0xbd,0xa4,0x5d,0xee,
- 0x84,0xb3,0xfa,0xfe,0x89,0x7c,0xb0,0x8a,0x06,0x84,0x85,0xfd,0xf8,0x53,0x85,0x6f,
- 0xd6,0xc6,0x82,0x6b,0xea,0xbf,0xa8,0x11,0xe4,0x3a,0x05,0x63,0x8d,0x0f,0x1b,0xb4,
- 0x3f,0x2c,0x16,0xf6,0xca,0x51,0x03,0x11,0x1f,0xff,0x10,0x05,0xd7,0xd4,0x7f,0x05,
- 0xca,0x1a,0x69,0xbd,0x7f,0x98,0x37,0x32,0xf3,0xa3,0xf6,0xb9,0x01,0x5a,0x25,0xb4,
- 0xbf,0x42,0xe2,0x3c,0x78,0x57,0x2f,0x08,0xd2,0xa8,0x27,0xc9,0x30,0xed,0x10,0x16,
- 0xa3,0x76,0x53,0x63,0xdd,0x18,0x51,0x31,0x9d,0x0e,0x84,0x49,0x26,0x6d,0xf2,0xfb,
- 0x50,0xfe,0x90,0x3b,0xd0,0x3e,0x55,0x1f,0xa6,0x79,0xfe,0xd4,0xfa,0xaf,0x9d,0xfe,
- 0xaf,0x0f,0x53,0xce,0xd6,0xf5,0x12,0xe0,0x31,0xf4,0xfa,0x33,0x61,0x8d,0x96,0xef,
- 0xa1,0x8f,0x90,0x5c,0xf5,0x89,0x40,0xbe,0x97,0xde,0x77,0x6d,0xfd,0x17,0x7b,0x68,
- 0xcc,0xc9,0xb3,0x9d,0xaf,0xb2,0x2d,0x51,0x5a,0x21,0x4e,0x23,0xaf,0xb2,0xed,0x3e,
- 0x67,0xb9,0x7c,0x37,0x9c,0x6c,0x2e,0x0d,0x39,0x87,0x53,0xeb,0xbf,0xe0,0x1c,0x54,
- 0x46,0xf0,0x34,0x0d,0xa1,0xb5,0x5e,0x81,0x66,0xbe,0xcc,0x35,0x7e,0x85,0xb6,0x3e,
- 0x6c,0xf4,0xf3,0xaa,0xe2,0xfa,0xcb,0x9c,0xff,0x7c,0x05,0x2e,0x07,0x77,0x8d,0x4e,
- 0x7d,0x4b,0xac,0xac,0x3e,0x12,0x2c,0xf5,0x65,0x1a,0xf5,0x5f,0xc1,0x2a,0x9f,0xf5,
- 0x82,0xf8,0x05,0x1c,0xc6,0x2b,0x36,0xde,0x1f,0xc4,0xec,0xff,0xd9,0xe9,0x2a,0xd0,
- 0x03,0xf7,0xe7,0xdc,0x0b,0x6b,0xcb,0xf3,0xbd,0x75,0x0d,0x9e,0x93,0xd2,0x9a,0x50,
- 0x31,0x97,0x3f,0xe7,0xd9,0x2a,0x57,0xfe,0x1d,0xf2,0x77,0x52,0xfb,0xc3,0xc2,0xcb,
- 0x24,0x5f,0x77,0x78,0xed,0xd6,0x8c,0xd5,0xfc,0x98,0xf0,0xfc,0x9f,0x55,0xdc,0xd0,
- 0x78,0xd8,0x7e,0x7c,0x3a,0x27,0xbc,0x96,0x3d,0xa4,0x9f,0x4d,0xac,0xbf,0x2f,0x77,
- 0xc4,0xda,0xad,0x15,0x0e,0x52,0x2b,0xa9,0x55,0xda,0x21,0xa4,0x39,0xc2,0xbc,0xcd,
- 0x25,0xee,0x40,0x87,0x8b,0x7c,0x28,0xf8,0x75,0xb5,0x5d,0xfe,0xad,0x89,0x7f,0x95,
- 0xe7,0x3f,0x8f,0x45,0x6f,0xed,0xb7,0x86,0x9b,0x0a,0xe1,0x10,0x33,0xf8,0xe5,0x46,
- 0xc8,0xab,0x3c,0x91,0x3e,0x8c,0xb0,0x10,0x35,0x8e,0xcf,0xf6,0x94,0x78,0x30,0xb5,
- 0xfe,0x8b,0xce,0x7b,0xcd,0xb6,0x13,0x77,0xcb,0x30,0xad,0x7c,0x33,0x2b,0x68,0xd8,
- 0x9b,0x06,0x3e,0x8c,0x36,0x5e,0xbc,0xb3,0x32,0xd6,0x68,0xcf,0x84,0x7f,0xd0,0xfa,
- 0x29,0xd5,0xad,0xd1,0xa6,0xf3,0xda,0x9f,0xb8,0xff,0x64,0x34,0xa7,0x02,0x8e,0xaa,
- 0xee,0xda,0x15,0xe7,0xc4,0x31,0x18,0x04,0xa3,0x51,0xac,0x6a,0xf2,0xff,0xfc,0x04,
- 0xfc,0x8d,0x5b,0x75,0x4b,0xf3,0xc6,0x21,0xe5,0xa4,0xee,0x68,0xa0,0x27,0x88,0x0d,
- 0xda,0x58,0x19,0x0f,0xf4,0x9c,0x91,0x02,0xba,0xbd,0xa1,0x6d,0xed,0x46,0x73,0xfd,
- 0xfb,0x0a,0x08,0xb0,0x19,0x68,0x14,0xc0,0x10,0xb4,0xea,0x76,0x5f,0xc6,0x76,0x32,
- 0x0b,0xda,0xf0,0xe0,0xd0,0x30,0x9c,0x56,0x51,0x70,0x21,0x10,0xba,0xa6,0xfe,0x8b,
- 0xb1,0x65,0xba,0xc5,0xe5,0xe9,0x9f,0x14,0x84,0x22,0x25,0x4f,0xe1,0xc0,0x40,0x35,
- 0x3c,0xf6,0x3a,0x6a,0x84,0x10,0xc8,0xa8,0x00,0x13,0xab,0xcf,0xeb,0xbf,0x22,0x30,
- 0x57,0x5f,0xcb,0xc8,0x50,0x75,0x84,0x18,0xf1,0x17,0xd4,0x2f,0x0e,0x94,0x9f,0x1b,
- 0x50,0x10,0x1d,0xe0,0x16,0xc1,0x46,0x31,0xa5,0xfe,0x4b,0x39,0xcf,0xd5,0x96,0x26,
- 0x9e,0x67,0x23,0xb0,0xc0,0x28,0xfb,0x22,0x3c,0x83,0x7a,0xc9,0xb9,0xb8,0xc7,0xc3,
- 0xd6,0xf8,0x3d,0x53,0xfc,0x2b,0x93,0xc7,0x4f,0xe7,0x46,0x6d,0x0d,0xe2,0x20,0x1d,
- 0x81,0x2a,0x8a,0x62,0xf9,0x13,0xb6,0xbe,0xbf,0x52,0xb4,0xae,0x2c,0xa8,0x84,0x48,
- 0x6f,0xe9,0xd9,0xcd,0x63,0x66,0xfe,0x9f,0xc0,0x6f,0xf3,0xe2,0x69,0xcf,0x1f,0xe7,
- 0x06,0x06,0x4b,0x6e,0x40,0x43,0xec,0x92,0xde,0xaa,0x3a,0x07,0x2d,0x68,0x7b,0x19,
- 0x08,0x27,0x2f,0x4c,0x4c,0xfc,0x87,0xd2,0x00,0xc4,0xd3,0x9e,0x5f,0x95,0x3a,0xc0,
- 0x29,0xdd,0x09,0xd9,0x8b,0xa5,0x46,0xe2,0x5c,0xe8,0x70,0x79,0xac,0xb0,0x31,0xbf,
- 0xf0,0x80,0xc5,0xbd,0xda,0xd4,0x1f,0x2d,0x6d,0x82,0xff,0x87,0x7c,0x0a,0xad,0x7d,
- 0x25,0xae,0x3b,0x03,0x88,0x27,0x79,0xfc,0xcb,0xc2,0x03,0x61,0xbf,0x62,0x2a,0x0e,
- 0xec,0x26,0xfe,0x43,0x89,0xf3,0xf3,0xcc,0xd3,0x8d,0x26,0xa4,0x5d,0xac,0x32,0x54,
- 0xbc,0x0f,0xf7,0xcf,0x21,0xa1,0xf2,0x36,0x09,0x17,0x4a,0x7d,0x0b,0x77,0x54,0x51,
- 0x98,0x24,0xf3,0xff,0x37,0x40,0x9c,0x0f,0x61,0xb4,0xe0,0x92,0x51,0x5f,0x99,0x15,
- 0xce,0x19,0xa1,0x57,0xab,0xab,0x46,0x79,0xa0,0xd0,0xfb,0x89,0xf4,0x0a,0xee,0x10,
- 0x39,0xd9,0x1f,0x76,0x14,0xe2,0x7c,0x0b,0x61,0x51,0x55,0x3f,0xf2,0x3d,0xdc,0xbe,
- 0x36,0x54,0xb0,0x18,0xf5,0xbb,0xeb,0x38,0xae,0xff,0x4c,0x0d,0x15,0x7d,0x24,0x33,
- 0x5c,0xf3,0x48,0x92,0x4f,0x46,0x8a,0xe7,0xc3,0x8f,0x66,0x3b,0xa0,0x15,0x96,0x05,
- 0x69,0x07,0xcf,0x8f,0xaa,0xb3,0x47,0x33,0x15,0xf1,0x6e,0xa5,0x89,0x75,0x0c,0xd2,
- 0x9d,0x1d,0x26,0xfc,0x33,0xc1,0x87,0xe0,0xba,0x87,0x82,0x7f,0xd0,0x8e,0x68,0x27,
- 0x7d,0xc0,0xde,0x14,0x50,0x0f,0xe0,0x0e,0xc9,0x64,0x8d,0x93,0x43,0x83,0xd0,0xe3,
- 0x9f,0x58,0x4d,0xc0,0x0d,0x1b,0xab,0xff,0x92,0x7f,0x8c,0x62,0x6d,0x55,0x30,0x5f,
- 0xa5,0x8f,0x66,0x3f,0x0d,0xab,0x83,0xf9,0x51,0x71,0x8c,0xfc,0x8c,0xae,0x09,0x1a,
- 0xc0,0xa0,0x32,0x31,0xbf,0x0e,0xb2,0xf4,0xcf,0xb8,0x18,0x71,0x89,0xc0,0xfc,0x4a,
- 0xc8,0xe2,0xac,0x10,0x8f,0xf0,0xe7,0x8f,0x66,0xb9,0x44,0x2b,0x7b,0x75,0xb0,0x5b,
- 0x77,0x6e,0x97,0xb3,0x93,0xfc,0x3f,0x13,0x7c,0x3e,0xe1,0x45,0xc3,0xe4,0x6d,0x9e,
- 0xd6,0x1b,0xce,0x46,0x04,0x9e,0x6e,0x54,0xc0,0x0d,0xc0,0x45,0x95,0xaf,0x98,0x18,
- 0x4c,0xd8,0x47,0x71,0xfe,0x9f,0x28,0x5e,0x0c,0x81,0x2e,0x18,0xfc,0x93,0xc5,0xec,
- 0x10,0xcc,0xd3,0xa6,0x72,0x20,0xd4,0x1b,0xab,0xe8,0x4c,0xe5,0x7f,0xe6,0xf1,0xf4,
- 0x48,0x03,0xc9,0x83,0x66,0xc9,0x88,0x7f,0xdd,0xe4,0x59,0x8f,0x40,0xa8,0xb8,0x81,
- 0x6c,0x26,0x6b,0xe0,0x79,0x1e,0x61,0x4f,0xda,0xbf,0xf1,0xfc,0x67,0x0e,0x7b,0xfc,
- 0xb0,0x1a,0xe1,0x8b,0x65,0x65,0xeb,0x34,0xb6,0x9e,0x15,0x9f,0xca,0x38,0xc1,0xfd,
- 0x5d,0xb1,0x88,0x98,0x99,0xff,0x39,0xc6,0x37,0x95,0xe1,0x22,0x16,0xb4,0x67,0xed,
- 0x21,0x79,0x3f,0xc7,0x57,0x5e,0x3c,0xa1,0x4a,0xf6,0x3a,0xad,0x69,0xb0,0x84,0x23,
- 0xa2,0xa4,0xfc,0x89,0x48,0x5d,0x13,0x69,0xcf,0x7b,0xc8,0xeb,0xfa,0x8e,0x9e,0xac,
- 0x21,0xd1,0x01,0xaf,0x6b,0x3f,0x7f,0x3e,0xa3,0xa3,0xe0,0x06,0x58,0x27,0xfd,0x53,
- 0xac,0x22,0x3e,0x71,0x7f,0x88,0xe5,0x63,0x64,0x21,0xfe,0xf1,0x8d,0xe5,0x5d,0x21,
- 0x36,0x56,0xd0,0xcb,0x25,0x92,0x62,0x63,0x35,0x51,0x36,0x26,0xcd,0xe3,0x16,0xba,
- 0x89,0xff,0x19,0xe2,0xf5,0x3e,0x8a,0x51,0x1f,0x64,0xd7,0xaa,0x83,0x39,0xcb,0xc9,
- 0x01,0xd6,0xbd,0x3c,0xf3,0x29,0xf1,0xcc,0xda,0x03,0x8e,0xaf,0xf8,0x7f,0x12,0xf5,
- 0x5c,0xdc,0x9f,0x60,0xaf,0xab,0x33,0x80,0x90,0x66,0xbf,0x3f,0xb0,0x99,0x9c,0x81,
- 0x46,0x66,0x28,0xe2,0x68,0x62,0x75,0xf2,0xa4,0x42,0x69,0xb7,0x54,0xa2,0x65,0x04,
- 0xfd,0x9d,0xd0,0x22,0xbc,0x50,0x2b,0x6f,0x20,0xcb,0xd5,0x16,0xf5,0xb4,0x07,0x82,
- 0x9e,0x21,0xf5,0x79,0x1e,0xaf,0x0f,0xda,0xcd,0xfc,0xcf,0x09,0xfe,0x9f,0x18,0x0c,
- 0xb0,0x6c,0x22,0x69,0xd6,0x36,0xcd,0xc0,0x03,0xfd,0x96,0x17,0x8d,0xd0,0x18,0x24,
- 0xe3,0xef,0x4b,0x33,0xa2,0x13,0xf9,0x27,0xf1,0x6a,0x77,0x10,0x35,0x88,0x08,0x2e,
- 0x70,0x86,0x38,0x23,0x5f,0x9c,0xff,0x79,0x92,0x09,0xff,0x80,0xe1,0xff,0xc9,0x35,
- 0x68,0x0f,0xe7,0x7a,0x33,0x8f,0x8b,0x1f,0xc0,0xef,0x48,0x95,0xf7,0x46,0xaf,0x78,
- 0x12,0xfe,0x14,0x4b,0x7d,0x49,0xf6,0x87,0xcd,0xcb,0x4c,0xf2,0xff,0xb0,0x0f,0xd5,
- 0xb9,0x8b,0xad,0xbf,0xaf,0x29,0x1c,0x1c,0xd7,0xaa,0xfe,0x6e,0xea,0xa0,0x38,0x07,
- 0x0e,0x6b,0x88,0x18,0x37,0x88,0xd7,0xf0,0x1f,0xc6,0xca,0xde,0xf3,0x61,0xad,0x17,
- 0xad,0xad,0x49,0xa8,0x9d,0xf6,0xa9,0x25,0x79,0x79,0xcc,0xc3,0x33,0x12,0x55,0x4a,
- 0xfb,0x10,0x9f,0x4c,0x7c,0x5f,0x1f,0xcf,0x7f,0x26,0xc6,0xfb,0x7e,0x5b,0x7b,0x86,
- 0x19,0x8e,0xa0,0x5c,0xe5,0x25,0x70,0x7e,0x93,0xf3,0x1f,0x42,0x8b,0xca,0x43,0x1b,
- 0x24,0xc9,0x7f,0xd8,0x93,0xdb,0x69,0x8d,0xaf,0xff,0x1c,0xfa,0x18,0x94,0xd4,0xd1,
- 0xa0,0x65,0x0e,0x2c,0x10,0x4a,0xbc,0x74,0x03,0x4f,0x84,0x68,0xdc,0xa2,0xd3,0x41,
- 0x92,0xda,0x1f,0x36,0xfe,0xfc,0xff,0x05,0x3e,0xd4,0x66,0x78,0x9c,0x1b,0x63,0x0c,
- 0xcf,0x8f,0x38,0xda,0xc5,0x19,0x9e,0x5e,0xc6,0xbf,0x6f,0x4e,0x0a,0xff,0x61,0x6c,
- 0xbe,0x82,0xcb,0x62,0x64,0x3b,0x1b,0xfc,0x3f,0x3a,0xae,0x58,0xfb,0xa2,0xd8,0x52,
- 0xcc,0x0a,0x12,0x13,0xff,0x21,0x84,0x92,0xeb,0xbf,0x96,0x94,0x11,0xa7,0x5f,0x54,
- 0xbd,0x03,0x86,0xdb,0x27,0xe7,0x14,0x44,0x18,0xf7,0xc8,0x99,0xea,0xbf,0x68,0xb3,
- 0x83,0x1a,0x65,0x5f,0xbc,0xa9,0x68,0x2b,0x14,0x84,0xa8,0x4a,0x8a,0x24,0x1c,0xf4,
- 0xd8,0x56,0xe0,0xb6,0x6f,0xd5,0x4a,0x10,0x08,0x79,0x92,0xfa,0x25,0xce,0xc7,0xc2,
- 0x32,0xb8,0xdb,0xd9,0x0f,0x33,0x7c,0x34,0x97,0xac,0x25,0x5b,0x99,0x1a,0x91,0x15,
- 0xff,0x00,0x6b,0x14,0x9c,0xa7,0x10,0x08,0x91,0x84,0xfe,0x12,0xc0,0xc8,0xff,0x61,
- 0x6d,0x2e,0x3c,0xbf,0x68,0x7f,0x79,0xa8,0xf7,0x8e,0xa7,0x26,0x3f,0xa7,0xe7,0xeb,
- 0x16,0xaf,0xff,0x92,0xba,0x86,0x16,0xf7,0xd1,0x9f,0x78,0x68,0xc2,0xff,0x43,0xd9,
- 0xd3,0xf0,0x25,0x5b,0x10,0xca,0xac,0x17,0x9f,0x4e,0x5f,0xcd,0xe6,0xfa,0xac,0x4b,
- 0xf1,0x44,0x7e,0x8a,0xf8,0x47,0x5e,0x99,0xf3,0x07,0xf2,0x7a,0xf3,0x82,0xa8,0x75,
- 0xcc,0x84,0x7f,0x12,0xf5,0x14,0x21,0x31,0x22,0x9d,0x8b,0x2d,0xec,0x0a,0x78,0x3b,
- 0xa6,0xdf,0xfb,0x21,0x4e,0x8d,0x98,0xf4,0xff,0x68,0xd2,0x7e,0xef,0x55,0x56,0x15,
- 0xb2,0x8d,0x15,0x4c,0x83,0x77,0x79,0x20,0x23,0x22,0xee,0xcf,0x38,0xec,0xaf,0x8a,
- 0x66,0x9e,0x10,0xde,0x85,0x37,0x58,0x29,0xcf,0x7f,0x4e,0xca,0x87,0x17,0x60,0x6d,
- 0xac,0xfe,0xa2,0xc1,0x82,0xcf,0xef,0x98,0x15,0xa1,0x0b,0xc9,0x0d,0x7d,0xff,0x53,
- 0x9d,0x05,0x16,0x2f,0x39,0xe9,0x59,0xa3,0xe4,0x6b,0x8e,0x6f,0x92,0x24,0xfe,0x0c,
- 0x29,0x9b,0x15,0x63,0xbe,0x8f,0x4c,0x45,0xf9,0x53,0xac,0xd3,0x6a,0xc4,0x3f,0xab,
- 0x5b,0x71,0xf0,0x10,0x1a,0x1a,0xab,0xe9,0x33,0xb5,0x19,0x4b,0x49,0x7f,0x92,0xff,
- 0x30,0x26,0x7f,0x78,0x37,0x79,0x94,0xe7,0xcc,0xb9,0x9d,0x12,0xb2,0x02,0xfc,0x21,
- 0x67,0xde,0x42,0x17,0x39,0xaa,0xf8,0x99,0xc1,0x50,0x3a,0x68,0xfa,0xbe,0x46,0xbd,
- 0x1b,0x6f,0xa2,0x3d,0x89,0xa7,0x05,0x7e,0xdb,0xc9,0xd1,0x4b,0x1b,0xab,0x3c,0x46,
- 0xc3,0xe2,0xc1,0x3b,0x5e,0x65,0x6e,0x96,0x19,0x42,0x89,0x3d,0xf1,0xbe,0x0c,0xe2,
- 0xeb,0xc3,0xd1,0xd1,0x87,0x3e,0xbe,0x3e,0x93,0x42,0x70,0x51,0xac,0xf4,0x66,0x05,
- 0x6b,0x3e,0xd1,0x2e,0x6a,0x95,0x83,0xd3,0x3a,0x0b,0x3e,0x4c,0xf2,0x3f,0x1b,0xfa,
- 0x6e,0x3e,0x07,0x39,0x73,0xd5,0xc3,0xbd,0x55,0x9a,0xed,0x06,0xf1,0xfb,0xf4,0x5d,
- 0x98,0xdd,0x25,0x45,0x11,0x4f,0x1e,0xa1,0x3b,0x42,0xd6,0xe1,0x02,0x33,0xff,0xb3,
- 0x51,0xbf,0xcc,0xb2,0x54,0x1e,0xcf,0xf2,0x95,0x9c,0x5a,0xd4,0xe3,0x2f,0x04,0x3f,
- 0xb1,0x97,0x67,0x76,0xf9,0xff,0xa2,0xb4,0xe6,0xdb,0x07,0x11,0x51,0xab,0xbe,0x04,
- 0xfe,0x89,0xcf,0xb7,0x84,0x2d,0x78,0x9a,0x84,0x92,0xd3,0x72,0x30,0x7d,0x85,0xf4,
- 0x24,0xc2,0x80,0x85,0x46,0x3c,0x48,0xb1,0x07,0xea,0x9e,0x4d,0xc1,0x3f,0x99,0xc6,
- 0xfa,0x58,0x5c,0xf8,0xc9,0x1b,0xf9,0x42,0x4d,0x26,0x0e,0xd6,0xc2,0x61,0x8f,0xcb,
- 0x33,0x92,0xde,0x56,0xcd,0xeb,0x73,0x6f,0x30,0x77,0x38,0x59,0x11,0x6f,0x0a,0x2c,
- 0xf2,0xfb,0xf3,0xb2,0xa3,0x9c,0x07,0xaa,0xdf,0x06,0xf7,0xf1,0x69,0x3c,0x03,0x0a,
- 0x15,0x19,0x73,0x86,0xc4,0x24,0xff,0x21,0xfb,0x05,0xcf,0xff,0xa9,0x62,0x59,0x3e,
- 0x83,0x2d,0x13,0x15,0xfd,0x0e,0x32,0xa2,0x21,0x6c,0x06,0x04,0x7e,0x97,0xe2,0x19,
- 0xbf,0xe2,0xf0,0x8c,0x04,0xde,0x10,0x8c,0xfc,0xb1,0x08,0x8f,0xfe,0x04,0xfe,0xc4,
- 0xe7,0xfb,0x44,0x17,0x8b,0x38,0x4a,0x79,0x7d,0xf7,0x97,0xc2,0x80,0xef,0xe7,0x2a,
- 0x9a,0xba,0xd7,0xe4,0x3f,0xab,0xb3,0x3e,0x90,0x7b,0xee,0x89,0x6a,0x2d,0x3a,0x2a,
- 0xfa,0x10,0xb7,0xbf,0x74,0xfb,0x23,0xbc,0x50,0xab,0x31,0x80,0x2b,0x26,0xaf,0x36,
- 0xe1,0x1f,0x23,0xff,0x39,0xc3,0xd9,0x8b,0xf8,0x47,0x4f,0x67,0xda,0x0a,0x5d,0xce,
- 0x27,0x19,0x92,0x1f,0x1c,0xf8,0xbe,0x08,0x6c,0x98,0x07,0x07,0x42,0x4a,0x7f,0xd8,
- 0x38,0xfe,0xd9,0xc7,0x69,0x5d,0x01,0x81,0x56,0xa8,0xd5,0xa1,0xb6,0xd2,0xd3,0xc0,
- 0xef,0x4f,0xda,0x78,0xe9,0xfd,0xbe,0x85,0xa6,0xfa,0xf7,0x5c,0xee,0xf4,0xab,0xea,
- 0x5d,0x72,0xa2,0x66,0x54,0x3f,0x0a,0x55,0xf5,0xb6,0xa1,0x9c,0xd9,0x68,0xfa,0xef,
- 0xd0,0x97,0xec,0xac,0x19,0x81,0x8c,0x96,0x79,0x74,0xc9,0xda,0x6f,0x25,0xf1,0xcf,
- 0x29,0x16,0xc7,0x3f,0x83,0x1b,0x4f,0xc3,0x8b,0xfc,0x34,0x45,0x63,0xb4,0x12,0xb1,
- 0xc6,0x79,0x97,0xe9,0xcd,0x11,0x9b,0x97,0x24,0xf1,0x8f,0x51,0xff,0x3e,0xa9,0xf2,
- 0xd5,0xc5,0xc1,0x9a,0xa8,0x74,0x10,0xba,0xfb,0xad,0x85,0xe2,0x4c,0x38,0x58,0xed,
- 0x66,0xce,0x55,0xb2,0x93,0x45,0x3c,0x06,0xff,0xbc,0x89,0xff,0x59,0x72,0x4a,0x7b,
- 0x61,0xd6,0xa8,0x65,0x63,0xf6,0xfb,0x5a,0x2b,0xb8,0xcf,0xd3,0x17,0x48,0x11,0xf1,
- 0x9f,0x28,0x63,0x74,0x95,0x25,0x83,0xb4,0x0c,0xe0,0xf3,0xff,0xda,0xf3,0x45,0xaa,
- 0xff,0x07,0x50,0xc8,0x80,0x32,0x92,0xdd,0x08,0x85,0x51,0x5a,0x99,0xfd,0x75,0xd6,
- 0x88,0x82,0x3a,0xa3,0x1c,0xcd,0xf6,0x0e,0xb6,0x42,0x91,0xcb,0x53,0xfb,0x5f,0x28,
- 0xbb,0x1a,0x8b,0xa3,0xdf,0xf9,0x71,0xf6,0xbb,0xb0,0xaa,0x31,0xbf,0xcb,0xb1,0x92,
- 0x5c,0xe7,0x5b,0x15,0x9a,0xee,0xa3,0xb7,0x91,0x4a,0xdf,0x33,0x9b,0x1e,0x50,0xe5,
- 0xbf,0x23,0x97,0x12,0xf6,0x5d,0xbd,0x51,0xff,0x5e,0xd1,0x37,0x30,0x7b,0xc6,0x80,
- 0xaa,0xc3,0xce,0x11,0xab,0x4b,0x74,0x6a,0xaf,0xb2,0x39,0xe0,0x9c,0x2e,0x5a,0xe1,
- 0x74,0x2e,0x1a,0x56,0x45,0x4d,0xe6,0xfe,0x17,0x7c,0x7d,0x16,0x1c,0xb3,0x9d,0xfd,
- 0xc6,0x25,0xb8,0xc4,0xaa,0x9a,0x6d,0x67,0xe5,0x4b,0xda,0x97,0x50,0x55,0x68,0xdb,
- 0x22,0x9e,0x94,0xde,0xcb,0xae,0xf2,0xd8,0x46,0x6b,0x06,0x13,0xf8,0xa7,0x2b,0x0d,
- 0xd1,0x94,0xe0,0x1e,0x5e,0x1c,0xcc,0x71,0x4a,0x87,0x84,0x6e,0x01,0x0f,0xa6,0xd1,
- 0xd6,0x41,0xaf,0x08,0x8b,0xdb,0xc8,0x00,0x7b,0x38,0xb0,0x44,0x37,0xc7,0xbf,0x26,
- 0x23,0xc8,0x91,0x6e,0x8d,0xdc,0xd5,0x90,0x3d,0x95,0xae,0xe1,0xd6,0x93,0xcb,0x50,
- 0xc4,0xf9,0x3c,0xed,0xb9,0x02,0x0d,0xab,0xfb,0x9b,0x65,0x2f,0x49,0xf2,0x3f,0xeb,
- 0xf0,0x34,0x59,0x6f,0x78,0x7b,0xfc,0xd3,0xe0,0x59,0x96,0xaf,0x22,0xda,0xf9,0x2e,
- 0x87,0x3d,0x21,0xba,0x14,0x81,0x5f,0x88,0x47,0xc4,0x28,0x49,0xf2,0xbb,0xd6,0xe7,
- 0x0e,0x20,0x5a,0x2e,0xec,0x6d,0x29,0xf7,0x5b,0xc1,0x1f,0x54,0xcb,0xf1,0xfe,0xbc,
- 0x03,0x66,0x61,0x27,0xfd,0x25,0x1e,0xb4,0xc6,0x7c,0x35,0x2a,0x07,0x3d,0xdf,0xb9,
- 0xa6,0xfe,0xdd,0xcd,0xac,0x43,0xb2,0xc3,0x7a,0x84,0x94,0x76,0xdb,0x42,0x72,0x3d,
- 0x39,0x88,0x98,0x8b,0x7e,0x24,0xf6,0xb0,0x23,0x01,0x77,0x17,0xee,0x90,0x47,0xff,
- 0x95,0xfe,0x17,0x05,0x3a,0xb9,0x64,0x0c,0x6e,0xd9,0x42,0x46,0xab,0x6f,0x83,0x9b,
- 0x59,0xac,0x3f,0x2c,0xd8,0x56,0x35,0x6d,0x4c,0xfa,0x1f,0x94,0x58,0x34,0xc4,0xc6,
- 0xdb,0x5e,0xf4,0x72,0x36,0xa4,0x20,0x99,0x6e,0x44,0xc4,0x16,0x6f,0x12,0x67,0xb0,
- 0x03,0x52,0xa5,0x36,0x29,0x68,0xe2,0x7f,0x0e,0xc5,0xf2,0x7f,0x38,0x69,0x4f,0x21,
- 0x31,0xd2,0x4e,0x14,0x92,0xc6,0x5a,0x96,0x75,0x68,0x81,0xa0,0x65,0x86,0xf0,0x96,
- 0xb7,0xa4,0x7f,0x51,0xbb,0x45,0x15,0x26,0x3e,0x70,0xb9,0x81,0x97,0x78,0xd9,0xbb,
- 0x65,0xba,0xf4,0x6b,0xb0,0x73,0x36,0xbf,0x9d,0x86,0xff,0xa7,0x2e,0x98,0x6d,0x48,
- 0x24,0x4d,0xde,0xe0,0xbf,0x36,0xff,0xc7,0x28,0x7b,0x9f,0x82,0xab,0x1d,0xe2,0x85,
- 0xf0,0xbf,0x20,0x86,0xff,0x27,0xdb,0x3f,0x09,0x1a,0x35,0xa7,0xd6,0x66,0xe6,0x7f,
- 0xee,0xa1,0x6a,0xac,0xda,0x8b,0xc7,0xbf,0x06,0xd0,0xda,0x92,0x51,0xb5,0xa2,0x16,
- 0x2f,0x05,0xa7,0xbf,0x46,0x25,0xad,0xbc,0xfe,0x91,0xd5,0xfc,0x36,0x05,0xff,0x7c,
- 0x0e,0x15,0xde,0xf5,0xf7,0xd6,0xbc,0x06,0x67,0x79,0xfe,0xcf,0x26,0xf1,0xfb,0x30,
- 0xee,0xa9,0xf0,0xde,0x7c,0x4f,0xd3,0xf9,0xf4,0x58,0x21,0x58,0x41,0x92,0xff,0xb9,
- 0x3d,0xed,0x3c,0x39,0x00,0x55,0x1e,0xa7,0xb7,0xa9,0x2c,0x74,0xb8,0xab,0x74,0xa1,
- 0x75,0xa9,0x58,0xc6,0x5e,0x63,0x55,0xf5,0xd6,0xe3,0x4d,0xb7,0xe2,0x79,0x44,0xfc,
- 0xf0,0xa6,0x58,0x92,0x92,0xff,0x13,0x20,0x3c,0xfe,0x9e,0x9d,0xaf,0xb4,0x6a,0x45,
- 0x79,0x56,0x46,0x42,0x10,0x50,0x50,0xad,0x77,0x58,0x54,0xd6,0xa3,0xd9,0x21,0xf3,
- 0x19,0x3c,0x38,0x09,0x8b,0x21,0xad,0x5f,0x6a,0xcc,0xe0,0x6c,0xcf,0x45,0x92,0x8a,
- 0x78,0xcf,0x43,0xaf,0xf3,0xa7,0xf1,0xfc,0xe7,0xda,0x99,0x8a,0x05,0x97,0xc2,0xf1,
- 0x02,0xbe,0x78,0x6a,0xfc,0x0b,0x5a,0x48,0x89,0xee,0x08,0xfa,0x79,0xda,0x67,0x51,
- 0xf5,0x9d,0x41,0xd2,0xc9,0x38,0x11,0x62,0x46,0xd0,0x52,0x58,0xb8,0xdb,0xf7,0x43,
- 0x6f,0x46,0xd0,0x93,0x9e,0xfc,0x5e,0xb9,0x9d,0xb1,0x6e,0x26,0x41,0x79,0x0e,0x39,
- 0xe0,0x31,0x68,0x7f,0x0a,0x11,0xdf,0x56,0x7a,0x33,0x37,0x89,0x5f,0x87,0x71,0xad,
- 0x5c,0xb3,0xfe,0x5a,0x76,0x24,0xee,0xdf,0x6a,0xe0,0x1f,0x3c,0x74,0xd9,0x22,0x4f,
- 0x14,0xdf,0xb7,0x1c,0xed,0xf7,0x33,0xbc,0xfe,0x5d,0xcb,0xba,0x41,0x3c,0xa3,0x9d,
- 0x45,0x43,0xfb,0x9a,0xfe,0x17,0x06,0xfe,0x51,0x17,0x37,0xcb,0xc0,0x22,0x5a,0x37,
- 0xb1,0x05,0x44,0x1f,0x44,0xa8,0x5b,0x71,0xae,0x96,0xf3,0x61,0x4c,0x35,0x3e,0x8d,
- 0xc9,0xff,0xd3,0x4c,0x8d,0xb2,0x77,0xfa,0xa1,0x7f,0x3e,0xac,0x86,0x82,0xa0,0xfc,
- 0x11,0x6f,0x0b,0x1b,0xca,0x37,0xfa,0xc3,0xc2,0x7e,0xcd,0x1f,0x90,0xa3,0x24,0xa9,
- 0x5f,0x26,0xf2,0x9f,0x03,0x4a,0xb6,0xa5,0xd6,0x0f,0xaa,0x2a,0x77,0x91,0x07,0x35,
- 0x56,0xab,0x32,0xb4,0xc7,0x25,0xc7,0x76,0x56,0x18,0x91,0xdb,0x37,0x26,0xf1,0x4f,
- 0xbe,0x30,0x95,0xee,0x52,0x8b,0x07,0x03,0xde,0xec,0x3c,0xb6,0x1a,0xf2,0x15,0xde,
- 0xb6,0x86,0x03,0xa1,0x46,0x3c,0xbf,0xb9,0x85,0x2f,0x69,0xd3,0x75,0xb9,0xf6,0x1a,
- 0xff,0xcf,0x97,0xd1,0x8a,0xa8,0x73,0xa9,0x38,0x0f,0xfa,0xd8,0x6c,0x9f,0xad,0x5e,
- 0x7c,0x98,0xf4,0xb3,0x70,0xc8,0xca,0xf3,0x7f,0xae,0xb0,0x97,0x78,0x22,0x90,0x25,
- 0xc9,0xff,0x7c,0x53,0xcc,0xfe,0x9a,0x14,0x14,0x87,0x3d,0x7b,0x50,0xf1,0xdd,0xcc,
- 0xf3,0x09,0x71,0x05,0xd8,0xdf,0x73,0xfe,0xc3,0x2b,0x30,0x6f,0xd0,0x16,0x2d,0x48,
- 0xf5,0xff,0x5c,0x65,0x95,0x85,0xd6,0x95,0x35,0x2f,0x2c,0x3c,0xd2,0x58,0xb9,0xdc,
- 0x39,0x26,0xfe,0x0c,0x06,0x98,0xa1,0xd6,0xa7,0x69,0x9f,0xb0,0x1f,0x9d,0xb7,0x9d,
- 0x98,0x94,0x67,0x8a,0x7f,0x19,0xf6,0x97,0xc3,0xe1,0xf5,0xdc,0xc0,0x56,0xe7,0x95,
- 0xd4,0xd3,0x51,0xf2,0x0b,0xce,0x3f,0xd6,0x4c,0x1f,0xc5,0x17,0xf9,0x9f,0x90,0xdf,
- 0x28,0x6b,0xe9,0x49,0xfe,0xe7,0x0d,0x46,0xfc,0xcb,0x49,0x11,0xed,0xb4,0x6b,0xab,
- 0xa1,0x38,0x92,0x81,0xaf,0x89,0xf3,0x55,0x96,0x61,0xcf,0x9e,0xa3,0x36,0xc3,0x74,
- 0xad,0xcd,0x4b,0xfa,0x4d,0xfd,0x2f,0x06,0x14,0x5c,0x4f,0x81,0x0a,0xa4,0x8b,0xf8,
- 0xf3,0x9d,0xbc,0x91,0x41,0x33,0xa2,0x96,0xd0,0xda,0x8c,0xb0,0x85,0xc2,0x53,0xac,
- 0x10,0xe4,0x22,0x13,0xfe,0x71,0x4c,0xd9,0xa6,0x5c,0xc5,0xf7,0x5d,0xbc,0x29,0xa7,
- 0x8b,0x1c,0xec,0xaf,0x1c,0xcc,0x0c,0x15,0x38,0x89,0x0e,0xee,0x60,0x31,0x5a,0xdc,
- 0xf0,0x61,0xe0,0x65,0xc5,0xb6,0x59,0x4e,0xe2,0x9f,0xe0,0x44,0xfc,0x2b,0x28,0xfc,
- 0x80,0x3b,0xca,0xd2,0xd1,0xcc,0xff,0x0d,0x19,0x33,0xda,0x5e,0x88,0x51,0x65,0xbc,
- 0x6e,0x9e,0xba,0xa4,0x91,0x24,0xfb,0xbd,0x6e,0x88,0xe5,0x3f,0x37,0xd8,0x06,0xb7,
- 0xd6,0xc3,0x11,0x69,0xb6,0x4e,0x4f,0x8b,0xcb,0xd1,0x7e,0x99,0xcd,0xa6,0xbe,0x25,
- 0xba,0xd4,0xb7,0x61,0x6e,0xba,0x2d,0x4c,0xa2,0x26,0xfc,0xb3,0x02,0x5e,0x41,0xfb,
- 0xa2,0x6d,0x9a,0x67,0x9e,0xd2,0xca,0x69,0x7c,0xc6,0xc8,0xd7,0x20,0x10,0xe9,0x60,
- 0xb4,0xa7,0x48,0x24,0x5d,0xcc,0x9e,0xd7,0xb6,0xd6,0x3f,0xa4,0x99,0xf0,0x4f,0x4c,
- 0x5f,0xb7,0x93,0x92,0xf4,0xa7,0xc0,0xbe,0xcc,0x12,0xc6,0xd3,0x19,0xe0,0x8d,0x57,
- 0x42,0xe4,0x16,0xe9,0xc9,0x80,0x1d,0x7f,0x4a,0x8f,0xa6,0xf8,0x7f,0x70,0x7d,0x08,
- 0xca,0x1f,0x28,0xf4,0x43,0xc8,0x52,0xc4,0x8f,0x21,0x53,0x1c,0xcc,0xe1,0x46,0x7b,
- 0x24,0xc4,0x89,0x02,0x72,0x3d,0x49,0xfb,0x8b,0x51,0x03,0xff,0xd4,0xd9,0x82,0xb2,
- 0xc3,0x7f,0x90,0xb8,0x4f,0x64,0x85,0x73,0x9c,0x24,0xa2,0xcd,0x63,0x14,0x0d,0x01,
- 0xe9,0x2d,0xce,0xaf,0x8b,0x82,0x37,0x3d,0x19,0xff,0xba,0xa4,0xf0,0xf8,0xd7,0x12,
- 0xc4,0x33,0x28,0x9d,0xab,0x5a,0x33,0x79,0x61,0xc5,0x65,0x75,0x2e,0xb3,0xed,0xe4,
- 0x8a,0x9e,0xbc,0x02,0x36,0xbd,0x60,0xf8,0x1b,0x13,0xf2,0xc4,0xdc,0x8f,0x6f,0x8d,
- 0xeb,0x3f,0x40,0x3f,0x3e,0xd3,0xfd,0x27,0xb9,0xfe,0x9a,0xfb,0x4f,0x64,0x0a,0x59,
- 0x23,0xc6,0xa0,0xd4,0x9e,0xb8,0x02,0xb4,0xc9,0xad,0x0e,0xf0,0x9f,0x74,0xd3,0xfc,
- 0xff,0xb7,0xfa,0x21,0xc6,0xff,0xa3,0xa5,0xe6,0x6b,0x3c,0xe3,0xec,0xda,0x79,0xff,
- 0x4a,0x1b,0xc4,0xaf,0x7c,0x88,0xff,0x17,0xd7,0xff,0xdf,0xe8,0x87,0x08,0xc9,0x2b,
- 0xda,0x57,0xfb,0x21,0x0e,0xf0,0xe4,0x1d,0x7d,0x8d,0x2b,0x3e,0x30,0xdf,0x3f,0x76,
- 0x25,0x75,0xfd,0x1b,0xc1,0xa0,0x03,0x93,0x26,0x06,0xa6,0x85,0x8c,0x5d,0xb9,0x66,
- 0xfd,0xf3,0xf9,0x6f,0xf1,0xa7,0xe5,0x03,0xd3,0xfa,0xc7,0xaf,0x24,0x17,0xc7,0xe8,
- 0x87,0x38,0x60,0xac,0x7f,0x7c,0xb5,0x53,0xbe,0x7e,0xec,0xef,0xff,0xf6,0x43,0xfc,
- 0xf7,0x07,0xff,0x5f,0x9e,0x4f,0x9a,0xa5,0xd8,0xa1,0xf3,0xa4,0x1e,0xcc,0x1f,0xfd,
- 0x5b,0xe7,0x31,0x0d,0x0f,0x5d,0x5a,0x35,0x28,0xec,0xaf,0x3c,0x8f,0xab,0xf9,0xa6,
- 0xf5,0x88,0x5f,0x39,0x86,0xf6,0x7f,0x4b,0x1e,0x5a,0x05,0x20,0x78,0x13,0x2d,0xf5,
- 0xb6,0x3f,0xfa,0x37,0xe5,0xa1,0x85,0x97,0x28,0xdb,0x51,0x09,0x4d,0x88,0xc1,0xaf,
- 0x0c,0x52,0xde,0xd7,0x70,0x3a,0x0a,0x54,0xf3,0x7f,0x55,0xb0,0x11,0x85,0x35,0x7f,
- 0x55,0x1e,0x4a,0x2a,0xa5,0x44,0x04,0xfd,0xab,0x62,0xd0,0xaf,0xf0,0xbc,0x86,0xaf,
- 0xca,0xc3,0xf8,0xac,0xaf,0xfc,0xfd,0x6b,0xf2,0x30,0x7b,0x8d,0x73,0x0b,0x0f,0x87,
- 0x4f,0xed,0xc3,0xd5,0x1e,0x98,0x58,0xff,0x01,0xb3,0x3c,0x4c,0x91,0x27,0x30,0x49,
- 0xc1,0xf5,0xf7,0xfc,0xf5,0xf2,0x70,0x8d,0x9a,0x0f,0xd6,0xea,0x49,0x7f,0xbd,0x3c,
- 0x74,0x26,0x84,0xde,0x5f,0xd3,0x1f,0x56,0x45,0x63,0x02,0xac,0x35,0xa2,0x97,0xfd,
- 0x75,0xfa,0x2e,0x9b,0xf0,0xf5,0x23,0x19,0xe0,0xf9,0xeb,0xf4,0x91,0xc2,0x45,0xa4,
- 0x55,0x14,0x81,0xfd,0x95,0xfd,0x61,0x05,0xfe,0x70,0xe2,0xbf,0xba,0xfe,0x13,0x7f,
- 0x66,0x79,0xc8,0x73,0x09,0xb4,0x7f,0x7b,0xea,0x35,0x7f,0x15,0x15,0x28,0x70,0x19,
- 0x5c,0xb3,0xc4,0xd7,0xfe,0x99,0xe5,0x21,0x59,0x4a,0xfe,0xfa,0xdb,0xf3,0x3f,0x7c,
- 0x21,0xf6,0xbf,0x31,0x3d,0x57,0xc8,0xce,0x77,0xfd,0xaf,0xa7,0x25,0xfe,0xfe,0xa3,
- 0xc9,0x9f,0xff,0x60,0xf3,0x5f,0xab,0x16,0x1b,0xb4,0x93,0xca,0x5c,0xc8,0xec,0x35,
- 0x06,0xff,0x3d,0x37,0xf3,0x35,0xf1,0xa1,0xea,0xfb,0xbc,0x73,0x8d,0x81,0x36,0xb5,
- 0xe1,0x6b,0xd2,0x64,0x7d,0x76,0x62,0xfe,0xed,0xb5,0x69,0x0f,0x09,0xf7,0x69,0x7f,
- 0xab,0x40,0xbf,0x31,0xf0,0x2a,0x53,0x8c,0x81,0xef,0x6f,0x71,0x20,0xe4,0x1b,0x3f,
- 0xa5,0xe9,0xb3,0x27,0xf0,0x2a,0x34,0x7b,0x04,0x95,0xd5,0xa9,0xd9,0x14,0xfa,0x62,
- 0x83,0x3c,0xc9,0x1f,0xbf,0x22,0xad,0x16,0xf2,0x63,0x03,0x96,0xfc,0xa0,0x0c,0x04,
- 0x1f,0x2c,0x85,0xeb,0xe0,0x7f,0x32,0x63,0x70,0x2f,0x4d,0x5b,0x2d,0xdc,0xcf,0x96,
- 0x6a,0xd7,0x29,0x69,0x78,0x45,0x58,0xaa,0x7d,0x1b,0xd2,0x12,0xe1,0x68,0x7c,0xfe,
- 0xa5,0x69,0x65,0xc2,0x5d,0xec,0x5b,0xd5,0x52,0x20,0xed,0x61,0xe1,0x3e,0xfd,0x6f,
- 0xd5,0x29,0x91,0xb4,0x87,0xe1,0x3e,0xf6,0xb7,0xce,0x29,0x07,0x85,0x7b,0x84,0xfb,
- 0xd8,0xb7,0xd4,0x5c,0xd3,0xf3,0xbc,0xa6,0x69,0xaa,0x42,0x25,0x22,0x00,0xef,0xf0,
- 0x99,0x07,0xe9,0x20,0x30,0x25,0x3e,0x58,0x25,0xf9,0x58,0xec,0x4a,0xf2,0x7d,0x5f,
- 0xab,0x93,0x96,0x09,0x79,0xec,0x0e,0x80,0x80,0x64,0x17,0x28,0xf3,0xa8,0x4a,0x40,
- 0xc2,0x53,0xce,0x07,0xcd,0x92,0x2a,0x50,0x3c,0xd7,0x8a,0x79,0xfe,0xc2,0xb4,0x7b,
- 0x1a,0xef,0x0d,0xfd,0x0d,0x95,0x68,0x9a,0xa7,0xd1,0x3b,0x2a,0x39,0xa6,0x58,0xd2,
- 0xb4,0x46,0x6f,0xe8,0xde,0xf2,0x29,0x62,0x9a,0xc6,0xbc,0xea,0x94,0xa9,0x53,0xb4,
- 0xe4,0xf3,0xb0,0xa9,0xc2,0xdf,0xc2,0xdf,0xe8,0x53,0xbc,0xa8,0x06,0xf8,0x60,0x72,
- 0x43,0xda,0x7d,0xc2,0xb7,0xd8,0xbd,0xfa,0x14,0x17,0x0e,0x44,0xc0,0x41,0xb9,0x94,
- 0x30,0xbf,0x70,0x3e,0xae,0x1d,0x64,0x83,0x14,0x02,0xee,0xf4,0x50,0x34,0x81,0x8b,
- 0xc0,0x1a,0x2e,0x0b,0x15,0x41,0x42,0xa8,0x85,0x6a,0x4a,0x81,0x6a,0xd3,0xfa,0xf8,
- 0xb8,0xa3,0x1a,0xcd,0x0e,0x30,0x3c,0xd6,0x80,0x86,0xb2,0x1a,0xbf,0x42,0xd5,0xf4,
- 0xf8,0x4f,0xd5,0xa6,0xf5,0xf1,0x66,0x2c,0x17,0xfe,0x0e,0xbe,0xad,0x15,0xb2,0xb4,
- 0xe5,0x69,0x7c,0x30,0x25,0x98,0xe6,0x23,0x27,0xe0,0xdb,0x80,0x03,0x55,0x38,0x01,
- 0xff,0x04,0x0b,0xcc,0xef,0xab,0x89,0xbc,0x51,0x6a,0x99,0x2a,0xb1,0xd8,0x80,0x87,
- 0x32,0x96,0xe1,0x60,0x86,0x31,0x10,0x96,0xb2,0xeb,0xf0,0x7b,0x99,0xf6,0x8f,0x47,
- 0x72,0xf5,0x5a,0xd5,0x1a,0x9a,0xe7,0x97,0x5c,0x8d,0x7c,0xa0,0xf4,0x49,0x2e,0xdd,
- 0xaa,0x56,0x53,0xe5,0x55,0x88,0x5d,0xc9,0xd3,0x27,0x27,0x9e,0x07,0xb8,0xc4,0xb2,
- 0xc6,0xe4,0x5b,0x7c,0xa0,0x4f,0x0c,0x22,0xb1,0x81,0xaa,0x99,0x36,0x35,0x23,0x82,
- 0x4b,0x5f,0xac,0xe6,0x50,0xdc,0x66,0x2e,0xc6,0x07,0xb5,0x7d,0x82,0xab,0xd1,0xb8,
- 0x72,0x90,0xff,0xe4,0xfa,0x96,0x53,0xd2,0x4d,0xeb,0xe3,0x49,0xf3,0x35,0x2e,0x55,
- 0xbf,0x8d,0xf3,0xe3,0x83,0x29,0x38,0xe8,0x35,0x06,0x4d,0x82,0xda,0xbb,0xd4,0xf5,
- 0x6d,0xeb,0x14,0xf3,0xfe,0xf1,0x18,0x2b,0x97,0x58,0xc2,0xf8,0x40,0x32,0x06,0x92,
- 0xca,0xac,0xaa,0x48,0x85,0xd4,0xf7,0xf5,0x35,0xe6,0xa9,0x77,0xe0,0x47,0xc3,0xc1,
- 0xf5,0xea,0x1d,0x74,0xb2,0x5f,0x5a,0x8e,0xaf,0x79,0x47,0xdd,0xe4,0x8d,0x92,0xca,
- 0xdf,0xb7,0x2e,0x65,0xff,0xf8,0xd2,0x96,0x0a,0xdf,0x86,0xbf,0x61,0x69,0x3e,0x29,
- 0x36,0x98,0x82,0x57,0xa4,0x3b,0xe0,0x76,0x3e,0xa0,0xc2,0x1d,0x30,0x99,0x49,0xa6,
- 0xfd,0xd3,0x9b,0x2e,0x3c,0xc4,0xee,0xf5,0x4d,0x69,0x4f,0xbb,0x43,0xa8,0x66,0x5e,
- 0x5f,0x6e,0x9e,0x90,0x8e,0x03,0x65,0x62,0xc0,0xaf,0xa4,0x25,0xcc,0x7d,0x3c,0x8f,
- 0x5c,0x8d,0x50,0x54,0x01,0x4a,0x36,0x1e,0x81,0xea,0xd8,0x59,0x90,0x18,0x1e,0x8a,
- 0x3a,0x89,0x5f,0xe1,0x83,0xdc,0xa4,0x7b,0x09,0x5e,0xbb,0x83,0x4c,0x66,0xcd,0xbe,
- 0x7c,0x85,0xde,0x21,0x7e,0x93,0x1d,0xf7,0xdd,0x9a,0x97,0xc9,0x07,0xf7,0x1a,0x83,
- 0x49,0xf1,0x2b,0xa6,0xe7,0x79,0x2d,0x3d,0xed,0xa1,0x46,0x94,0x06,0x79,0x53,0x5e,
- 0x97,0x62,0x83,0xb4,0xd7,0x13,0x57,0x70,0x70,0xd2,0xf7,0xdf,0xf3,0xa6,0x98,0xe5,
- 0xc9,0x1d,0xe2,0x43,0x6c,0xb3,0x6f,0x2e,0x4e,0x23,0x7c,0xf0,0xdf,0xf3,0x32,0x5e,
- 0xc7,0x2b,0xf7,0xe1,0x95,0xcc,0xd7,0x27,0x3d,0xc4,0xa6,0xfa,0xbe,0x86,0xf3,0x27,
- 0x9b,0xe6,0xc7,0xee,0xb6,0x94,0xa6,0xdc,0xd6,0x6a,0x0c,0x94,0xd9,0x38,0xa8,0xe1,
- 0xf3,0x4d,0xfb,0x47,0x50,0x81,0x9f,0x98,0xb4,0x84,0xd8,0xe1,0x83,0xfb,0x8c,0x01,
- 0xf0,0xc1,0xd7,0x50,0xfe,0x98,0x76,0x5b,0xfa,0x64,0x94,0x36,0xbe,0xeb,0xf2,0x62,
- 0x62,0xc7,0xf7,0x6d,0x63,0xd0,0x18,0xbb,0x92,0x96,0xdf,0xc8,0xaf,0x4c,0x31,0xcd,
- 0xbf,0x5d,0x4b,0x73,0x09,0x8b,0xc9,0xb7,0x40,0x62,0x69,0x0d,0xc2,0x7d,0xf0,0x35,
- 0xc8,0xd5,0x8d,0xc1,0xdf,0xc2,0x14,0x1d,0x7f,0x8a,0x0d,0x92,0xcf,0x73,0xbb,0x69,
- 0xff,0xa0,0xb4,0x51,0xa5,0x89,0x41,0x3a,0x15,0xf8,0xf3,0x18,0x03,0x66,0x7a,0xdf,
- 0xf8,0xfe,0x31,0x76,0x57,0x23,0xff,0x87,0x93,0x63,0x03,0x0f,0x55,0xfc,0xf8,0x13,
- 0x1f,0x78,0xcd,0xf3,0x6b,0xd2,0xbc,0xbd,0xf7,0xba,0xfe,0x86,0xae,0x22,0x5c,0xec,
- 0xa8,0xb9,0xd6,0x29,0x1e,0x49,0x6b,0xf6,0xaa,0xf7,0xd2,0x29,0xa2,0xe0,0x45,0xf9,
- 0x93,0x4b,0xd3,0xc0,0xb4,0x3e,0x62,0xbe,0x37,0x72,0xaf,0x6b,0x0a,0x95,0xf0,0x57,
- 0xfd,0x5e,0x75,0x8a,0x35,0xad,0x86,0x0f,0x5c,0x38,0xf0,0xc4,0x06,0x34,0x4d,0x33,
- 0xad,0x0f,0x68,0x9a,0xa2,0x48,0x92,0xa0,0xc4,0x24,0x1f,0x82,0xa6,0xf8,0x40,0x45,
- 0x41,0x14,0x1b,0x4c,0x36,0xcd,0xbe,0x7d,0x21,0x21,0x8c,0x85,0xd4,0xba,0x76,0x3f,
- 0x02,0x21,0xa6,0xaa,0x0e,0x4a,0x62,0x03,0x04,0x99,0xe9,0xf1,0x81,0xe9,0x79,0x6e,
- 0xd7,0xb8,0x90,0x47,0x69,0x93,0x8b,0x27,0x40,0xe0,0x8a,0x60,0x0a,0x0e,0xc0,0x90,
- 0x3f,0xfc,0x0a,0x97,0x3f,0x53,0x4c,0xef,0xbb,0x4a,0x13,0xf9,0xaf,0xd7,0xc1,0x49,
- 0x26,0xc6,0xe4,0x4f,0x1a,0xcb,0xf6,0x49,0xf7,0xc5,0x04,0x91,0x0f,0x8c,0x2f,0x62,
- 0xfe,0xbe,0x90,0xeb,0x12,0xb8,0xf4,0x60,0x4c,0xe2,0x03,0x14,0x9d,0x3a,0x0e,0xf2,
- 0x8c,0x81,0xa2,0xe2,0xe0,0x8e,0x54,0x28,0x25,0xc5,0x84,0x8c,0x86,0x17,0x67,0x83,
- 0x55,0xc3,0xc1,0x71,0x98,0x03,0x19,0x60,0x0c,0x0a,0x71,0x40,0xb4,0x94,0xf9,0x69,
- 0xc2,0x6c,0x6d,0xb1,0x37,0x27,0xb8,0x69,0x15,0x1f,0x68,0x62,0xae,0xf4,0x9a,0x30,
- 0xfb,0x76,0xbc,0x92,0x2b,0xbd,0x2e,0xcc,0xae,0x5e,0xec,0xfd,0x96,0x52,0x6b,0x9e,
- 0xff,0xf5,0xb4,0xfa,0xde,0xef,0xb8,0xbe,0x1d,0x48,0xdb,0x8a,0x83,0x1b,0x5c,0xf7,
- 0xac,0x9d,0xf2,0x5c,0xec,0xca,0xda,0x29,0x5b,0x85,0xf8,0xc0,0x3c,0x3f,0x23,0x06,
- 0xf4,0xf9,0x7f,0xd4,0x48,0x6a,0xf4,0x19,0x4d,0xc5,0x8c,0xc7,0xd8,0x24,0xfd,0x2b,
- 0xcf,0x03,0xcb,0x7d,0x93,0xf3,0xa4,0x3b,0x04,0x08,0xd4,0x72,0x45,0xe6,0x11,0x26,
- 0x07,0xa4,0x65,0x93,0xf3,0x9a,0xef,0xc8,0x9f,0xcc,0x6a,0x27,0x06,0xe6,0xf9,0xb7,
- 0x7b,0x27,0xdf,0x2b,0xdd,0x8e,0xa8,0x32,0xcd,0x3b,0x39,0x57,0xfa,0x1b,0x61,0x8a,
- 0x76,0xbb,0x17,0xee,0x95,0xfe,0x06,0x26,0x6b,0x1f,0x78,0x5d,0xf7,0x4a,0x53,0xf0,
- 0x8a,0x69,0x3a,0xcd,0xe7,0x7b,0x59,0xc1,0x2d,0xc9,0x83,0xc5,0xfe,0x5c,0x35,0xad,
- 0x4e,0xf0,0x38,0x14,0x96,0x8b,0xba,0x31,0xff,0x1e,0xea,0x6d,0xcd,0x55,0x57,0x99,
- 0x6f,0x6f,0x11,0x78,0x16,0x94,0xd7,0x21,0xf1,0x81,0x16,0x52,0x1c,0xca,0xc4,0x60,
- 0xe2,0x8a,0xd3,0xec,0x7d,0x00,0x2b,0x9e,0xad,0x66,0xfd,0xfb,0xae,0xeb,0x17,0x8b,
- 0xdf,0x82,0xe3,0x7d,0xb7,0xba,0xa8,0x31,0xd0,0x6f,0x75,0x65,0x2e,0x4e,0xcf,0x31,
- 0x06,0x29,0xfb,0x33,0x23,0xed,0xe1,0xea,0xfb,0x82,0x1c,0x06,0x48,0x88,0x07,0xd8,
- 0x37,0x62,0x78,0xe0,0x24,0xe3,0x57,0xa6,0x2f,0x13,0x4e,0xb2,0xff,0x5e,0xf8,0xa4,
- 0x6e,0x9a,0x2f,0x7f,0xc7,0xf3,0x87,0xe0,0x4b,0x9d,0xc5,0x19,0xb7,0x2c,0xc4,0xc1,
- 0xce,0xce,0xe2,0x3b,0xe5,0x7b,0x16,0x0e,0x6e,0x7c,0xa9,0xf0,0x37,0x19,0xb2,0x67,
- 0xe1,0x71,0x63,0x60,0x7e,0x9e,0xf9,0x57,0xef,0xbe,0xfa,0xfb,0x57,0xce,0x7f,0x32,
- 0x5e,0xf5,0x73,0x1c,0xec,0x3a,0xff,0x97,0xf1,0xf9,0x57,0x96,0xbc,0xf7,0xf8,0xd5,
- 0xa1,0xcb,0xe3,0xf3,0x7f,0xb6,0xe4,0xaa,0x31,0x80,0xff,0x83,0xbf,0xca,0x27,0x33,
- 0x66,0x78,0xee,0x0c,0x6e,0x5c,0x3e,0x7d,0xdc,0xf6,0x6c,0xcd,0xd5,0xe0,0xc6,0x9f,
- 0x56,0xfe,0xf3,0x9d,0x3f,0x3f,0x76,0xe7,0xf9,0x27,0x2e,0x57,0x5d,0xbd,0xf3,0xeb,
- 0x7c,0x30,0x64,0x9e,0x5f,0xf5,0xb3,0xbb,0xdf,0x7b,0x7c,0xd7,0xd0,0x27,0x13,0x8f,
- 0xf1,0xc9,0xe5,0x89,0x07,0xc3,0xf9,0x77,0xbf,0x67,0x3c,0xa1,0x79,0x7e,0xc1,0xcf,
- 0xea,0xde,0xdb,0x38,0x77,0x68,0xed,0xfd,0xf3,0xf9,0x3f,0xdc,0x3e,0xf4,0x18,0x3e,
- 0xf6,0xdd,0xef,0xe6,0xf0,0x3b,0x14,0xe4,0xf1,0x41,0xf3,0xc8,0xfd,0xe6,0xf9,0x82,
- 0xa7,0x41,0xdb,0xac,0x7c,0x3d,0x3b,0x43,0x8f,0x0d,0x72,0x33,0x5e,0x4b,0x6f,0xd0,
- 0xa7,0x2a,0x93,0xa4,0x8c,0xd7,0x08,0xe2,0x43,0xbc,0x22,0x98,0xd7,0x53,0x8a,0xe1,
- 0xc3,0xa9,0x71,0x7c,0xc8,0x61,0xe1,0xa4,0x87,0xe0,0x3e,0xed,0x6b,0x0a,0x17,0xd4,
- 0x38,0xa8,0x41,0x7c,0x68,0x9a,0x2f,0x4e,0xe0,0x43,0x43,0x3e,0xbb,0x10,0xda,0xb0,
- 0x24,0x3e,0xe4,0x83,0xaf,0x95,0xa7,0x9e,0xdf,0x18,0x6c,0x53,0x58,0x1c,0xbf,0x71,
- 0xb1,0x79,0xbf,0x71,0x45,0x60,0x70,0xbf,0x94,0x47,0xd2,0x55,0xc1,0x3c,0x9b,0xfe,
- 0xff,0xda,0x39,0xbf,0xd8,0x28,0x8a,0x38,0x8e,0xff,0xe6,0x6e,0xef,0xd8,0x2b,0x77,
- 0x65,0xb7,0xbd,0xc2,0x15,0x9b,0x66,0x8f,0x2b,0x47,0xfd,0x13,0xdc,0x22,0xc5,0x1a,
- 0x4c,0x3b,0xed,0xed,0xb5,0x47,0xd3,0xc2,0x81,0x80,0x40,0x8c,0xb9,0x2a,0x21,0xc6,
- 0x27,0xd0,0x17,0xa3,0x41,0xf6,0xca,0x41,0x8c,0xd1,0xa4,0xa9,0x35,0x96,0x04,0xf5,
- 0x30,0x6a,0x8c,0x81,0xf8,0xe0,0x9f,0x90,0x18,0x93,0x05,0x8d,0x48,0x34,0x29,0x0f,
- 0xf0,0xa2,0x26,0x42,0xe4,0xc5,0xc4,0x84,0x3e,0x90,0x18,0x1f,0xea,0xf9,0x9b,0x99,
- 0xbd,0xee,0x1e,0x44,0x88,0xc8,0xbe,0x98,0xf9,0x3e,0x7d,0xbb,0x37,0x37,0x3b,0x37,
- 0xf3,0xbb,0xdf,0x7c,0x7e,0xdb,0xdd,0xb3,0x9e,0x23,0xf1,0xc9,0x5c,0x18,0xce,0x5b,
- 0xeb,0x48,0x47,0x65,0xc4,0xd0,0xd9,0x43,0x35,0x1d,0x18,0x18,0xfa,0x0f,0x18,0x21,
- 0x68,0x54,0xdd,0x69,0xec,0x3f,0xa5,0x56,0x42,0x7c,0x2b,0x84,0x94,0xc6,0x68,0xd0,
- 0x32,0xc4,0x89,0xca,0xee,0xa9,0x89,0x7f,0x3c,0x2a,0x62,0x21,0x26,0x0d,0x0b,0xf9,
- 0xf0,0x29,0xc6,0x87,0x25,0x6d,0x56,0xd9,0x27,0xcc,0x71,0x25,0x5b,0x8e,0x31,0xe3,
- 0x6f,0xff,0xa0,0x32,0x5a,0x5e,0x5e,0xcd,0xdb,0xda,0x5a,0x65,0x4f,0xb9,0xa5,0x6a,
- 0x7d,0xa4,0xdf,0x07,0x7b,0xce,0xa0,0x39,0xad,0xdf,0x8f,0x2f,0xa1,0x99,0xf5,0xe5,
- 0x4f,0xd5,0x49,0x40,0x2b,0xdb,0x52,0x3e,0x83,0x31,0x4c,0x5a,0xc9,0x0b,0xb0,0x9e,
- 0x8c,0x01,0xee,0x36,0x4e,0xa4,0x8f,0x8c,0x91,0x56,0x58,0xce,0x36,0x19,0xea,0xbd,
- 0xc1,0x89,0x22,0x0b,0x22,0x0d,0x6e,0x85,0x0a,0x05,0xf6,0x98,0x20,0x25,0x1a,0x58,
- 0x98,0xc5,0x94,0x22,0xd1,0xb4,0xa4,0xa2,0x33,0xe3,0xed,0xef,0xaa,0xc3,0xca,0x55,
- 0xcc,0xc2,0x5d,0xe2,0x4a,0x81,0xc6,0x36,0xa4,0x10,0xcb,0x7a,0xac,0x30,0x6b,0x61,
- 0x65,0x9f,0x01,0xd0,0xd0,0x5e,0x29,0x11,0x06,0xc9,0x3c,0xe3,0xa7,0xc8,0x10,0xe3,
- 0x91,0x12,0x99,0x85,0x7d,0x68,0x22,0xcc,0x0c,0x43,0x8f,0xc7,0xf3,0x1a,0xa1,0x98,
- 0xa1,0x66,0x21,0x6b,0x20,0x99,0x71,0x03,0x31,0x61,0xd6,0xa1,0x01,0x66,0xd6,0x00,
- 0xae,0x60,0x5d,0x94,0xf1,0x21,0x87,0x22,0x38,0xec,0xe3,0x43,0xd7,0x70,0x3e,0x1c,
- 0x56,0x1d,0x47,0x5f,0x7c,0x9e,0x11,0xfe,0x89,0x0f,0x43,0x7e,0xa3,0xd5,0x67,0x88,
- 0x2a,0x43,0x60,0x72,0x48,0x83,0xaf,0xeb,0xe6,0xec,0xa2,0xd1,0x84,0xa1,0x1e,0x6f,
- 0xd0,0xfa,0xfe,0x1b,0x87,0x49,0x77,0x23,0xd6,0x3d,0x13,0xe1,0x06,0x3f,0xf8,0xe2,
- 0xfe,0x45,0x09,0xdf,0xdf,0xd3,0x37,0xf2,0xe1,0xe2,0x8e,0xcf,0x8d,0x17,0x0f,0x45,
- 0x72,0xab,0xfe,0x71,0xa3,0xe7,0xc6,0x6b,0x4f,0xf3,0x14,0xd7,0x2f,0x09,0x79,0x28,
- 0xd6,0x8d,0x7e,0xb3,0x19,0x5a,0x1c,0x4f,0x01,0x57,0x6a,0xd0,0x4e,0x96,0x96,0xb0,
- 0x25,0xdb,0x8a,0x58,0xa8,0x20,0x16,0x7a,0x66,0x50,0x18,0x2f,0x7c,0x0a,0xec,0x96,
- 0x12,0xbb,0xce,0x8b,0x36,0x56,0x18,0xa2,0x56,0x72,0x8b,0x26,0x43,0x18,0xf0,0x8d,
- 0x67,0x27,0xd2,0x20,0xf2,0x61,0x11,0x76,0x22,0x28,0x5e,0xe2,0x58,0x18,0x22,0x2e,
- 0x28,0x12,0xe4,0x43,0xda,0x9b,0x8a,0x50,0x6f,0x7f,0x27,0xc3,0x88,0x85,0x1d,0xa5,
- 0x91,0x54,0xfb,0xb7,0xae,0xd1,0x3d,0x13,0xe5,0x66,0x57,0xbb,0xe3,0xf5,0x4f,0x86,
- 0x39,0x16,0xae,0x41,0xba,0x23,0xc2,0xc4,0x58,0xb3,0x9f,0x27,0x98,0x01,0x71,0x24,
- 0xe9,0x2c,0x5e,0x9e,0x28,0xd6,0xf9,0x30,0x05,0x47,0x49,0x4f,0xf9,0x89,0x09,0x86,
- 0x85,0x4b,0x0e,0x94,0xc7,0x38,0x1f,0xb6,0x09,0x74,0xb4,0xce,0x7a,0xeb,0x05,0xec,
- 0xb7,0x31,0x91,0x0f,0xa9,0x32,0x45,0x4a,0xf6,0x26,0x5e,0x8d,0x92,0x2e,0x7b,0x97,
- 0xd1,0x52,0x50,0xa6,0x45,0x22,0x2a,0xe0,0x91,0xc5,0xf8,0xc1,0x00,0x9e,0xb0,0x53,
- 0xa5,0xe8,0x6c,0xf1,0x43,0x34,0x2b,0x4b,0xd1,0x14,0x39,0x2a,0x8e,0xb8,0x66,0x22,
- 0x9a,0xc2,0xf5,0xaa,0xb7,0x87,0x7c,0x49,0x79,0x21,0xdd,0xac,0xe6,0x70,0xcf,0x53,
- 0xfa,0x48,0x27,0xe4,0x6c,0xed,0xb2,0xd2,0x07,0x9d,0x30,0x62,0xeb,0x97,0xf9,0x91,
- 0x11,0x9b,0x38,0xbe,0xf8,0xd9,0x06,0xa5,0xcb,0x6a,0x5f,0x68,0x0c,0xde,0xc0,0x52,
- 0xaf,0x5d,0x84,0x4d,0x17,0xc3,0xc2,0x02,0x99,0x16,0x7c,0x58,0xf0,0xe5,0x1f,0x1a,
- 0x09,0x29,0xc6,0x09,0xce,0x87,0xaf,0x56,0x90,0x06,0xab,0x22,0x7e,0xec,0x06,0x3e,
- 0xf4,0xc5,0x1b,0xcd,0x87,0x14,0x5a,0x4e,0x1a,0x79,0xfc,0x5e,0x28,0xc5,0xb2,0x86,
- 0x46,0xcf,0x41,0xf1,0x88,0x66,0x58,0xaa,0x1e,0xe6,0x47,0x2c,0x95,0x80,0x6f,0x7e,
- 0xb0,0xa4,0x74,0x92,0x66,0x24,0x6e,0x8f,0x1a,0xe0,0x24,0xab,0x24,0x4e,0xb0,0xbd,
- 0xcd,0x8e,0x30,0xc3,0x5f,0x22,0xd4,0xfb,0xbe,0x60,0xd6,0x30,0x05,0x1f,0x02,0x0d,
- 0x61,0xfe,0xe1,0xf5,0xa9,0xcb,0x87,0x6a,0x52,0x98,0x41,0x7f,0xfc,0x0c,0xad,0x6a,
- 0x61,0x7c,0x98,0xb0,0x43,0x59,0xcc,0x43,0xab,0xd2,0xdd,0x6a,0x53,0x9d,0x0f,0xeb,
- 0xc6,0xf6,0x8d,0x87,0xd0,0x0a,0xcf,0x3f,0x24,0x6d,0x1f,0x45,0xa3,0xf2,0x7a,0x88,
- 0xa5,0x65,0x61,0xd8,0x4b,0xa1,0xdd,0xbe,0xcf,0x4b,0xe8,0x7b,0x7b,0xe1,0x18,0x64,
- 0x07,0x63,0x53,0x93,0x25,0x38,0xd6,0x94,0x65,0xf7,0x67,0xb9,0x89,0xc8,0x35,0xa1,
- 0x98,0xb7,0x5e,0x14,0xd7,0xab,0x8f,0x34,0xe3,0x32,0xd9,0x55,0xd7,0xb0,0xf5,0x6a,
- 0x30,0x65,0xcd,0x5b,0xaf,0x22,0x7e,0xbc,0x47,0x9c,0xe6,0xfd,0xe1,0xe3,0xf6,0x07,
- 0x86,0xc9,0x7e,0xdd,0x5e,0x81,0x2b,0xe0,0x9a,0x33,0x75,0xe3,0xcb,0x3f,0x98,0x59,
- 0x7b,0x69,0xa2,0x18,0x2e,0x22,0x3d,0xf6,0xd0,0x04,0x0d,0x6f,0x87,0x4b,0x0c,0x2c,
- 0x8b,0xe1,0x24,0x33,0x94,0x9b,0xb3,0xbe,0xf9,0xc9,0x29,0xa5,0xc1,0xd4,0x7e,0x5c,
- 0xdf,0xc3,0x4a,0xe9,0x4c,0xca,0x1c,0x8e,0xeb,0x37,0x9b,0x86,0xf9,0x11,0x7c,0xc8,
- 0x2e,0x46,0xf2,0x8b,0x85,0xec,0x8a,0x70,0xc3,0xe5,0xc3,0x86,0x4b,0x85,0x94,0x14,
- 0x2c,0xc1,0x87,0x36,0xa7,0x41,0x34,0x3e,0x2c,0x64,0x66,0x26,0x97,0x6e,0xcc,0x3f,
- 0xd6,0xf6,0xf6,0xb6,0x68,0x3e,0xa7,0x25,0xf7,0x32,0x3e,0xcc,0x63,0xc6,0xb1,0xb8,
- 0xe1,0xf9,0x07,0xcd,0x20,0x1a,0x5f,0xfc,0xf0,0x48,0x0c,0xb9,0x29,0x50,0x9b,0x8c,
- 0x18,0xa4,0xc0,0x62,0x6a,0x92,0x5f,0x3b,0xd9,0x26,0x0c,0xf8,0x84,0x10,0xe8,0x40,
- 0x15,0xba,0xa1,0x09,0xf8,0xed,0xf2,0xc2,0xf8,0xf9,0xb0,0xbb,0x21,0xff,0x8c,0x87,
- 0x1f,0xa3,0x95,0x0b,0xe9,0xf5,0xf6,0xf8,0xaa,0x56,0xfa,0x0d,0x1a,0x75,0x3c,0xd4,
- 0x4a,0x2f,0x5e,0xe8,0x5d,0x9f,0x18,0x0f,0x85,0xb9,0x89,0xfb,0xc6,0x43,0x0a,0x15,
- 0xdc,0xf4,0xa7,0x70,0xf7,0x3f,0xcf,0xf8,0x10,0x5c,0xc3,0x79,0xe0,0x3b,0xd7,0x24,
- 0x1d,0xdf,0x78,0x38,0x16,0x32,0x3e,0x5c,0x3a,0x3a,0xea,0xe7,0xc3,0xf7,0xeb,0x7c,
- 0xb8,0xb7,0x91,0x0f,0x39,0x7d,0x31,0x3e,0xdc,0x78,0x68,0x8b,0x9f,0x0f,0xaf,0xdf,
- 0x25,0x3e,0xe4,0x58,0xf8,0xdb,0x54,0x6d,0x61,0xe0,0x4f,0x01,0x8a,0x07,0xbb,0xde,
- 0x65,0x58,0x38,0xf5,0xd6,0xc2,0xea,0x9a,0x6b,0xfc,0xed,0xf9,0xd9,0xff,0xb8,0x8a,
- 0xed,0xff,0x12,0xa0,0xb8,0xb0,0xf1,0x10,0xc3,0xc2,0xab,0xd7,0x16,0x36,0xd6,0x5c,
- 0xd3,0xd0,0xbe,0xd3,0xe5,0xc3,0x4c,0xe7,0xe6,0x5f,0xa6,0x7b,0x90,0x0f,0x33,0x2f,
- 0x6f,0x3e,0xc7,0x09,0x33,0xc3,0x51,0xb3,0x72,0xed,0x3f,0x8c,0xdf,0x04,0x83,0xb0,
- 0xdb,0x33,0x4c,0xc8,0xc5,0xef,0xbc,0x17,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
- 0x29,0x29,0xa9,0xff,0xbb,0x78,0xed,0xa0,0xc8,0xda,0x41,0x4a,0x4a,0x4a,0x4a,0x4a,
- 0x4a,0x4a,0x4a,0x4a,0x4a,0xea,0xd6,0xe2,0xb5,0x43,0x54,0xd6,0x0e,0x52,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0xb7,0x16,0xaf,0x1d,0x54,0x5e,0x3b,0xe0,
- 0x5f,0x91,0xbe,0x27,0x77,0xd3,0x81,0xfe,0x97,0x76,0x07,0x74,0xb6,0xee,0x73,0xf0,
- 0x00,0xcd,0x58,0xd0,0x70,0x13,0xda,0x5d,0x94,0xd2,0xf4,0xcc,0x31,0x7b,0x69,0xdb,
- 0x97,0x85,0x60,0xba,0x87,0x81,0x39,0x36,0x7e,0x0a,0x03,0x4e,0x30,0xfd,0x2b,0xc6,
- 0xcc,0x09,0x67,0xe5,0xc5,0xd7,0x5f,0x09,0xa6,0x7b,0x30,0xe7,0xcc,0xdf,0x69,0x66,
- 0xbf,0x63,0x3a,0xc1,0xf4,0x9f,0x78,0xf8,0xe0,0x11,0xa7,0xe3,0x93,0xa7,0xb7,0x04,
- 0xd3,0x3d,0xce,0xbf,0x18,0x7f,0x50,0xf3,0x1f,0x5f,0x73,0xdc,0x86,0x47,0x57,0x54,
- 0x83,0x9b,0xff,0x65,0x18,0x3f,0x5b,0x20,0xa8,0xf9,0x6f,0xce,0x9e,0x9e,0x87,0x7b,
- 0x76,0x7c,0xbe,0x29,0x98,0xee,0x71,0xfe,0xc5,0xf8,0x03,0x8b,0xff,0xb5,0x6d,0x1f,
- 0xd3,0xa5,0xcf,0xcf,0xa8,0xb7,0x6f,0x7a,0x47,0x32,0xe7,0x06,0x30,0x7e,0x0e,0x05,
- 0x17,0xff,0x1a,0xd9,0x00,0xab,0x63,0xf7,0x06,0x17,0xff,0x62,0xfc,0x41,0xcd,0x7f,
- 0x22,0x6d,0x0d,0xc3,0xba,0xeb,0xd9,0xa0,0xe2,0xc7,0xac,0x39,0x2c,0x7f,0x9a,0xf3,
- 0x4e,0x30,0xfd,0x2b,0xea,0x81,0x37,0x9d,0x0d,0x9f,0xce,0x04,0x96,0xff,0xdd,0xf1,
- 0xdf,0xfc,0xcb,0x04,0x77,0x47,0x4a,0x66,0xe6,0x94,0x93,0x59,0x31,0x1d,0x58,0xfe,
- 0xa9,0xcd,0xb3,0xfc,0x39,0x1f,0xd4,0xfc,0x2f,0xeb,0xff,0xf5,0x9a,0xd3,0xfb,0xe3,
- 0xe3,0x73,0xc1,0x74,0x8f,0xf3,0x2f,0xc6,0x1f,0xd8,0xfc,0xf7,0xbf,0xf6,0x8e,0xfd,
- 0xd0,0x8a,0x93,0xb1,0xdb,0x37,0xbd,0x23,0x99,0xb5,0x39,0x96,0x3f,0x03,0x8b,0xff,
- 0x68,0xe7,0xa9,0x67,0xed,0xec,0x57,0x3f,0x59,0xc1,0x74,0x8f,0xf3,0x2f,0xc6,0x1f,
- 0xd8,0xfc,0xaf,0xde,0xf1,0x05,0x18,0x6d,0x6f,0x07,0x97,0x7f,0x6a,0x2c,0x7f,0x06,
- 0x17,0xff,0x2b,0x23,0x69,0xda,0x7f,0x32,0xf1,0x7d,0x30,0xdd,0xb3,0x1f,0x39,0xe1,
- 0xe3,0x0f,0x66,0xfe,0x4d,0xf6,0x7c,0x1c,0xbc,0xd8,0x6a,0x82,0xcd,0x9e,0x5a,0x09,
- 0x9b,0x40,0xff,0xf5,0xff,0x13,0xdc,0xf7,0x46,0x4c,0xa8,0x12,0xaf,0xcf,0x2b,0x7b,
- 0x6e,0x6c,0xf7,0x37,0xea,0xe7,0xba,0x8f,0xf0,0x33,0x01,0x00,
diff --git a/board/esd/hh405/hh405.c b/board/esd/hh405/hh405.c
deleted file mode 100644
index ea344c0f26..0000000000
--- a/board/esd/hh405/hh405.c
+++ /dev/null
@@ -1,916 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * (C) Copyright 2005
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * (C) Copyright 2006
- * Matthias Fuchs, esd GmbH, matthias.fuchs@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-#include <pci.h>
-#include <sm501.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_VIDEO_SM501
-
-#define SWAP32(x) ((((x) & 0x000000ff) << 24) | (((x) & 0x0000ff00) << 8)|\
- (((x) & 0x00ff0000) >> 8) | (((x) & 0xff000000) >> 24) )
-
-#ifdef CONFIG_VIDEO_SM501_8BPP
-#error CONFIG_VIDEO_SM501_8BPP not supported.
-#endif /* CONFIG_VIDEO_SM501_8BPP */
-
-#ifdef CONFIG_VIDEO_SM501_16BPP
-#define BPP 16
-
-/*
- * 800x600 display B084SN03: PCLK = 40MHz
- * => 2*PCLK = 80MHz
- * 336/4 = 84MHz
- * => PCLK = 84MHz
- */
-static const SMI_REGS init_regs_800x600 [] =
-{
-#if 1 /* test-only */
- {0x0005c, SWAP32(0xffffffff)}, /* set endianess to big endian */
-#else
- {0x0005c, SWAP32(0x00000000)}, /* set endianess to little endian */
-#endif
- {0x00004, SWAP32(0x00000000)},
- /* clocks for pm1... */
- {0x00048, SWAP32(0x00021807)},
- {0x0004C, SWAP32(0x221a0a01)},
- {0x00054, SWAP32(0x00000001)},
- /* clocks for pm0... */
- {0x00040, SWAP32(0x00021807)},
- {0x00044, SWAP32(0x221a0a01)},
- {0x00054, SWAP32(0x00000000)},
- /* GPIO */
- {0x1000c, SWAP32(0xfffffff0)}, /* GPIO32..63 direction */
- /* panel control regs... */
- {0x80000, SWAP32(0x0f013105)}, /* panel display control: 16-bit RGB 5:6:5 mode */
- {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
- {0x8000C, SWAP32(0x00010000)}, /* panel fb address */
- {0x80010, SWAP32(0x06400640)}, /* panel fb offset/window width */
- {0x80014, SWAP32(0x03200000)}, /* panel fb width (0x320=800) */
- {0x80018, SWAP32(0x02580000)}, /* panel fb height (0x258=600) */
- {0x8001C, SWAP32(0x00000000)}, /* panel plane tl location */
- {0x80020, SWAP32(0x02580320)}, /* panel plane br location */
- {0x80024, SWAP32(0x041f031f)}, /* panel horizontal total */
- {0x80028, SWAP32(0x00800347)}, /* panel horizontal sync */
- {0x8002C, SWAP32(0x02730257)}, /* panel vertical total */
- {0x80030, SWAP32(0x00040258)}, /* panel vertical sync */
- {0x80200, SWAP32(0x00010000)}, /* crt display control */
- {0, 0}
-};
-
-/*
- * 1024x768 display G150XG02: PCLK = 65MHz
- * => 2*PCLK = 130MHz
- * 288/2 = 144MHz
- * => PCLK = 72MHz
- */
-static const SMI_REGS init_regs_1024x768 [] =
-{
- {0x00004, SWAP32(0x00000000)},
- /* clocks for pm1... */
- {0x00048, SWAP32(0x00021807)},
- {0x0004C, SWAP32(0x011a0a01)},
- {0x00054, SWAP32(0x00000001)},
- /* clocks for pm0... */
- {0x00040, SWAP32(0x00021807)},
- {0x00044, SWAP32(0x011a0a01)},
- {0x00054, SWAP32(0x00000000)},
- /* GPIO */
- {0x1000c, SWAP32(0xfffffff0)}, /* GPIO32..63 direction */
- /* panel control regs... */
- {0x80000, SWAP32(0x0f013105)}, /* panel display control: 16-bit RGB 5:6:5 mode */
- {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
- {0x8000C, SWAP32(0x00010000)}, /* panel fb address */
- {0x80010, SWAP32(0x08000800)}, /* panel fb offset/window width */
- {0x80014, SWAP32(0x04000000)}, /* panel fb width (0x400=1024) */
- {0x80018, SWAP32(0x03000000)}, /* panel fb height (0x300=768) */
- {0x8001C, SWAP32(0x00000000)}, /* panel plane tl location */
- {0x80020, SWAP32(0x03000400)}, /* panel plane br location */
- {0x80024, SWAP32(0x053f03ff)}, /* panel horizontal total */
- {0x80028, SWAP32(0x0140040f)}, /* panel horizontal sync */
- {0x8002C, SWAP32(0x032502ff)}, /* panel vertical total */
- {0x80030, SWAP32(0x00260301)}, /* panel vertical sync */
- {0x80200, SWAP32(0x00010000)}, /* crt display control */
- {0, 0}
-};
-
-#endif /* CONFIG_VIDEO_SM501_16BPP */
-
-#ifdef CONFIG_VIDEO_SM501_32BPP
-#define BPP 32
-
-/*
- * 800x600 display B084SN03: PCLK = 40MHz
- * => 2*PCLK = 80MHz
- * 336/4 = 84MHz
- * => PCLK = 84MHz
- */
-static const SMI_REGS init_regs_800x600 [] =
-{
-#if 0 /* test-only */
- {0x0005c, SWAP32(0xffffffff)}, /* set endianess to big endian */
-#else
- {0x0005c, SWAP32(0x00000000)}, /* set endianess to little endian */
-#endif
- {0x00004, SWAP32(0x00000000)},
- /* clocks for pm1... */
- {0x00048, SWAP32(0x00021807)},
- {0x0004C, SWAP32(0x221a0a01)},
- {0x00054, SWAP32(0x00000001)},
- /* clocks for pm0... */
- {0x00040, SWAP32(0x00021807)},
- {0x00044, SWAP32(0x221a0a01)},
- {0x00054, SWAP32(0x00000000)},
- /* GPIO */
- {0x1000c, SWAP32(0xfffffff0)}, /* GPIO32..63 direction */
- /* panel control regs... */
- {0x80000, SWAP32(0x0f013106)}, /* panel display control: 32-bit RGB 8:8:8 mode */
- {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
- {0x8000C, SWAP32(0x00010000)}, /* panel fb address */
- {0x80010, SWAP32(0x0c800c80)}, /* panel fb offset/window width */
- {0x80014, SWAP32(0x03200000)}, /* panel fb width (0x320=800) */
- {0x80018, SWAP32(0x02580000)}, /* panel fb height (0x258=600) */
- {0x8001C, SWAP32(0x00000000)}, /* panel plane tl location */
- {0x80020, SWAP32(0x02580320)}, /* panel plane br location */
- {0x80024, SWAP32(0x041f031f)}, /* panel horizontal total */
- {0x80028, SWAP32(0x00800347)}, /* panel horizontal sync */
- {0x8002C, SWAP32(0x02730257)}, /* panel vertical total */
- {0x80030, SWAP32(0x00040258)}, /* panel vertical sync */
- {0x80200, SWAP32(0x00010000)}, /* crt display control */
- {0, 0}
-};
-
-/*
- * 1024x768 display G150XG02: PCLK = 65MHz
- * => 2*PCLK = 130MHz
- * 288/2 = 144MHz
- * => PCLK = 72MHz
- */
-static const SMI_REGS init_regs_1024x768 [] =
-{
- {0x00004, SWAP32(0x00000000)},
- /* clocks for pm1... */
- {0x00048, SWAP32(0x00021807)},
- {0x0004C, SWAP32(0x011a0a01)},
- {0x00054, SWAP32(0x00000001)},
- /* clocks for pm0... */
- {0x00040, SWAP32(0x00021807)},
- {0x00044, SWAP32(0x011a0a01)},
- {0x00054, SWAP32(0x00000000)},
- /* GPIO */
- {0x1000c, SWAP32(0xfffffff0)}, /* GPIO32..63 direction */
- /* panel control regs... */
- {0x80000, SWAP32(0x0f013106)}, /* panel display control: 32-bit RGB 8:8:8 mode */
- {0x80004, SWAP32(0xc428bb17)}, /* panel panning control ??? */
- {0x8000C, SWAP32(0x00010000)}, /* panel fb address */
- {0x80010, SWAP32(0x10001000)}, /* panel fb offset/window width */
- {0x80014, SWAP32(0x04000000)}, /* panel fb width (0x400=1024) */
- {0x80018, SWAP32(0x03000000)}, /* panel fb height (0x300=768) */
- {0x8001C, SWAP32(0x00000000)}, /* panel plane tl location */
- {0x80020, SWAP32(0x03000400)}, /* panel plane br location */
- {0x80024, SWAP32(0x053f03ff)}, /* panel horizontal total */
- {0x80028, SWAP32(0x0140040f)}, /* panel horizontal sync */
- {0x8002C, SWAP32(0x032502ff)}, /* panel vertical total */
- {0x80030, SWAP32(0x00260301)}, /* panel vertical sync */
- {0x80200, SWAP32(0x00010000)}, /* crt display control */
- {0, 0}
-};
-
-#endif /* CONFIG_VIDEO_SM501_32BPP */
-
-#endif /* CONFIG_VIDEO_SM501 */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-extern void lxt971_no_sleep(void);
-
-/* fpga configuration data - gzip compressed and generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-/* Prototypes */
-int gunzip(void *, int, unsigned char *, unsigned long *);
-
-
-/* logo bitmap data - gzip compressed and generated by bin2c */
-unsigned char logo_bmp_320[] =
-{
-#include "logo_320_240_4bpp.c"
-};
-
-unsigned char logo_bmp_320_8bpp[] =
-{
-#include "logo_320_240_8bpp.c"
-};
-
-unsigned char logo_bmp_640[] =
-{
-#include "logo_640_480_24bpp.c"
-};
-
-unsigned char logo_bmp_1024[] =
-{
-#include "logo_1024_768_8bpp.c"
-};
-
-
-/*
- * include common lcd code (for esd boards)
- */
-#include "../common/lcd.c"
-
-#include "../common/s1d13704_320_240_4bpp.h"
-#include "../common/s1d13705_320_240_8bpp.h"
-#include "../common/s1d13806_640_480_16bpp.h"
-#include "../common/s1d13806_1024_768_8bpp.h"
-
-
-/*
- * include common auto-update code (for esd boards)
- */
-#include "../common/auto_update.h"
-
-au_image_t au_image[] = {
- {"hh405/preinst.img", 0, -1, AU_SCRIPT},
- {"hh405/u-boot.img", 0xfff80000, 0x00080000, AU_FIRMWARE},
- {"hh405/pImage_${bd_type}", 0x00000000, 0x00100000, AU_NAND},
- {"hh405/pImage.initrd", 0x00100000, 0x00200000, AU_NAND},
- {"hh405/yaffsmt2.img", 0x00300000, 0x01c00000, AU_NAND},
- {"hh405/postinst.img", 0, 0, AU_SCRIPT},
-};
-
-int N_AU_IMAGES = (sizeof(au_image) / sizeof(au_image[0]));
-
-
-/*
- * Get version of HH405 board from GPIO's
- */
-int board_revision(void)
-{
- unsigned long osrh_reg;
- unsigned long isr1h_reg;
- unsigned long tcr_reg;
- unsigned long value;
-
- /*
- * Setup GPIO pins (BLAST/GPIO0 and GPIO9 as GPIO)
- */
- osrh_reg = in32(GPIO0_OSRH);
- isr1h_reg = in32(GPIO0_ISR1H);
- tcr_reg = in32(GPIO0_TCR);
- out32(GPIO0_OSRH, osrh_reg & ~0xC0003000); /* output select */
- out32(GPIO0_ISR1H, isr1h_reg | 0xC0003000); /* input select */
- out32(GPIO0_TCR, tcr_reg & ~0x80400000); /* select input */
-
- udelay(1000); /* wait some time before reading input */
- value = in32(GPIO0_IR) & 0x80400000; /* get config bits */
-
- /*
- * Restore GPIO settings
- */
- out32(GPIO0_OSRH, osrh_reg); /* output select */
- out32(GPIO0_ISR1H, isr1h_reg); /* input select */
- out32(GPIO0_TCR, tcr_reg); /* enable output driver for outputs */
-
- if (value & 0x80000000) {
- /* Revision 1.0 or 1.1 detected */
- return 1;
- } else {
- if (value & 0x00400000) {
- /* unused */
- return 3;
- } else {
- return 2;
- }
- }
-}
-
-
-int board_early_init_f (void)
-{
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, CFG_UIC0_POLARITY);/* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-
- return 0;
-}
-
-int cf_enable(void)
-{
- int i;
-
- volatile unsigned short *fpga_ctrl =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL);
- volatile unsigned short *fpga_status =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL + 2);
-
- if (gd->board_type >= 2) {
- if (*fpga_status & CFG_FPGA_STATUS_CF_DETECT) {
- if (!(*fpga_ctrl & CFG_FPGA_CTRL_CF_BUS_EN)) {
- *fpga_ctrl &= ~CFG_FPGA_CTRL_CF_PWRN;
-
- for (i=0; i<300; i++)
- udelay(1000);
-
- *fpga_ctrl |= CFG_FPGA_CTRL_CF_BUS_EN;
-
- for (i=0; i<20; i++)
- udelay(1000);
- }
- } else {
- *fpga_ctrl &= ~CFG_FPGA_CTRL_CF_BUS_EN;
- *fpga_ctrl |= CFG_FPGA_CTRL_CF_PWRN;
- }
- }
-
- return 0;
-}
-
-int misc_init_r (void)
-{
- volatile unsigned short *fpga_ctrl =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL);
- volatile unsigned short *lcd_contrast =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL + 4);
- volatile unsigned short *lcd_backlight =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL + 6);
- unsigned char *dst;
- ulong len = sizeof(fpgadata);
- int status;
- int index;
- int i;
- char *str;
- unsigned long contrast0 = 0xffffffff;
-
- dst = malloc(CFG_FPGA_MAX_SIZE);
- if (gunzip (dst, CFG_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
- printf ("GUNZIP ERROR - must RESET board to recover\n");
- do_reset (NULL, 0, 0, NULL);
- }
-
- status = fpga_boot(dst, len);
- if (status != 0) {
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("FPGA: %s\n", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=20; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc ('\n');
- do_reset(NULL, 0, 0, NULL);
- }
-
- puts("FPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("%s ", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
-
- free(dst);
-
- /*
- * Reset FPGA via FPGA_INIT pin
- */
- out32(GPIO0_TCR, in32(GPIO0_TCR) | FPGA_INIT); /* setup FPGA_INIT as output */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~FPGA_INIT); /* reset low */
- udelay(1000); /* wait 1ms */
- out32(GPIO0_OR, in32(GPIO0_OR) | FPGA_INIT); /* reset high */
- udelay(1000); /* wait 1ms */
-
- /*
- * Write Board revision into FPGA
- */
- *fpga_ctrl |= gd->board_type & 0x0003;
-
- /*
- * Setup and enable EEPROM write protection
- */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_EEPROM_WP);
-
- /*
- * Set NAND-FLASH GPIO signals to default
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~(CFG_NAND_CLE | CFG_NAND_ALE));
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_NAND_CE);
-
- /*
- * Reset touch-screen controller
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_TOUCH_RST);
- udelay(1000);
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_TOUCH_RST);
-
- /*
- * Enable power on PS/2 interface (with reset)
- */
- *fpga_ctrl &= ~(CFG_FPGA_CTRL_PS2_PWR);
- for (i=0;i<500;i++)
- udelay(1000);
- *fpga_ctrl |= (CFG_FPGA_CTRL_PS2_PWR);
-
- /*
- * Get contrast value from environment variable
- */
- str = getenv("contrast0");
- if (str) {
- contrast0 = simple_strtol(str, NULL, 16);
- if (contrast0 > 255) {
- printf("ERROR: contrast0 value too high (0x%lx)!\n", contrast0);
- contrast0 = 0xffffffff;
- }
- }
-
- /*
- * Init lcd interface and display logo
- */
-
- str = getenv("bd_type");
- if (strcmp(str, "ppc230") == 0) {
- /*
- * Switch backlight on
- */
- *fpga_ctrl |= CFG_FPGA_CTRL_VGA0_BL;
- *lcd_backlight = 0x0000;
-
- lcd_setup(1, 0);
- lcd_init((uchar *)CFG_LCD_BIG_REG, (uchar *)CFG_LCD_BIG_MEM,
- regs_13806_1024_768_8bpp,
- sizeof(regs_13806_1024_768_8bpp)/sizeof(regs_13806_1024_768_8bpp[0]),
- logo_bmp_1024, sizeof(logo_bmp_1024));
- } else if (strcmp(str, "ppc220") == 0) {
- /*
- * Switch backlight on
- */
- *fpga_ctrl &= ~CFG_FPGA_CTRL_VGA0_BL;
- *lcd_backlight = 0x0000;
-
- lcd_setup(1, 0);
- lcd_init((uchar *)CFG_LCD_BIG_REG, (uchar *)CFG_LCD_BIG_MEM,
- regs_13806_640_480_16bpp,
- sizeof(regs_13806_640_480_16bpp)/sizeof(regs_13806_640_480_16bpp[0]),
- logo_bmp_640, sizeof(logo_bmp_640));
- } else if (strcmp(str, "ppc215") == 0) {
- /*
- * Set default display contrast voltage
- */
- if (contrast0 == 0xffffffff) {
- *lcd_contrast = 0x0082;
- } else {
- *lcd_contrast = contrast0;
- }
- *lcd_backlight = 0xffff;
- /*
- * Switch backlight on
- */
- *fpga_ctrl |= CFG_FPGA_CTRL_VGA0_BL | CFG_FPGA_CTRL_VGA0_BL_MODE;
- /*
- * Set lcd clock (small epson)
- */
- *fpga_ctrl |= LCD_CLK_06250;
- udelay(100); /* wait for 100 us */
-
- lcd_setup(0, 1);
- lcd_init((uchar *)CFG_LCD_SMALL_REG, (uchar *)CFG_LCD_SMALL_MEM,
- regs_13705_320_240_8bpp,
- sizeof(regs_13705_320_240_8bpp)/sizeof(regs_13705_320_240_8bpp[0]),
- logo_bmp_320_8bpp, sizeof(logo_bmp_320_8bpp));
- } else if (strcmp(str, "ppc210") == 0) {
- /*
- * Set default display contrast voltage
- */
- if (contrast0 == 0xffffffff) {
- *lcd_contrast = 0x0060;
- } else {
- *lcd_contrast = contrast0;
- }
- *lcd_backlight = 0xffff;
- /*
- * Switch backlight on
- */
- *fpga_ctrl |= CFG_FPGA_CTRL_VGA0_BL | CFG_FPGA_CTRL_VGA0_BL_MODE;
- /*
- * Set lcd clock (small epson), enable 1-wire interface
- */
- *fpga_ctrl |= LCD_CLK_08330 | CFG_FPGA_CTRL_OW_ENABLE;
-
- lcd_setup(0, 1);
- lcd_init((uchar *)CFG_LCD_SMALL_REG, (uchar *)CFG_LCD_SMALL_MEM,
- regs_13704_320_240_4bpp,
- sizeof(regs_13704_320_240_4bpp)/sizeof(regs_13704_320_240_4bpp[0]),
- logo_bmp_320, sizeof(logo_bmp_320));
-#ifdef CONFIG_VIDEO_SM501
- } else {
- pci_dev_t devbusfn;
-
- /*
- * Is SM501 connected (ppc221/ppc231)?
- */
- devbusfn = pci_find_device(PCI_VENDOR_SM, PCI_DEVICE_SM501, 0);
- if (devbusfn != -1) {
- puts("VGA: SM501 with 8 MB ");
- if (strcmp(str, "ppc221") == 0) {
- printf("(800*600, %dbpp)\n", BPP);
- *lcd_backlight = 0x002d; /* max. allowed brightness */
- } else if (strcmp(str, "ppc231") == 0) {
- printf("(1024*768, %dbpp)\n", BPP);
- *lcd_backlight = 0x0000;
- } else {
- printf("Unsupported bd_type defined (%s) -> No display configured!\n", str);
- return 0;
- }
- } else {
- printf("Unsupported bd_type defined (%s) -> No display configured!\n", str);
- return 0;
- }
-#endif /* CONFIG_VIDEO_SM501 */
- }
-
- cf_enable();
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming HH405");
- } else {
- puts(str);
- }
-
- if (getenv_r("bd_type", str, sizeof(str)) != -1) {
- printf(" (%s", str);
- } else {
- puts(" (Missing bd_type!");
- }
-
- gd->board_type = board_revision();
- printf(", Rev %ld.x)\n", gd->board_type);
-
- return 0;
-}
-
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-
-#ifdef CONFIG_IDE_RESET
-void ide_set_reset(int on)
-{
- volatile unsigned short *fpga_mode =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL);
- volatile unsigned short *fpga_status =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL + 2);
-
- if (((gd->board_type >= 2) && (*fpga_status & CFG_FPGA_STATUS_CF_DETECT)) ||
- (gd->board_type < 2)) {
- /*
- * Assert or deassert CompactFlash Reset Pin
- */
- if (on) { /* assert RESET */
- cf_enable();
- *fpga_mode &= ~(CFG_FPGA_CTRL_CF_RESET);
- } else { /* release RESET */
- *fpga_mode |= CFG_FPGA_CTRL_CF_RESET;
- }
- }
-}
-#endif /* CONFIG_IDE_RESET */
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand_legacy.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- nand_probe(CFG_NAND_BASE);
- if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
- print_size(nand_dev_desc[0].totlen, "\n");
- }
-}
-#endif
-
-
-#if defined(CFG_EEPROM_WREN)
-/* Input: <dev_addr> I2C address of EEPROM device to enable.
- * <state> -1: deliver current state
- * 0: disable write
- * 1: enable write
- * Returns: -1: wrong device address
- * 0: dis-/en- able done
- * 0/1: current state if <state> was -1.
- */
-int eeprom_write_enable (unsigned dev_addr, int state)
-{
- if (CFG_I2C_EEPROM_ADDR != dev_addr) {
- return -1;
- } else {
- switch (state) {
- case 1:
- /* Enable write access, clear bit GPIO_SINT2. */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_EEPROM_WP);
- state = 0;
- break;
- case 0:
- /* Disable write access, set bit GPIO_SINT2. */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_EEPROM_WP);
- state = 0;
- break;
- default:
- /* Read current status back. */
- state = (0 == (in32(GPIO0_OR) & CFG_EEPROM_WP));
- break;
- }
- }
- return state;
-}
-
-int do_eep_wren (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int query = argc == 1;
- int state = 0;
-
- if (query) {
- /* Query write access state. */
- state = eeprom_write_enable (CFG_I2C_EEPROM_ADDR, -1);
- if (state < 0) {
- puts ("Query of write access state failed.\n");
- } else {
- printf ("Write access for device 0x%0x is %sabled.\n",
- CFG_I2C_EEPROM_ADDR, state ? "en" : "dis");
- state = 0;
- }
- } else {
- if ('0' == argv[1][0]) {
- /* Disable write access. */
- state = eeprom_write_enable (CFG_I2C_EEPROM_ADDR, 0);
- } else {
- /* Enable write access. */
- state = eeprom_write_enable (CFG_I2C_EEPROM_ADDR, 1);
- }
- if (state < 0) {
- puts ("Setup of write access state failed.\n");
- }
- }
-
- return state;
-}
-
-U_BOOT_CMD(eepwren, 2, 0, do_eep_wren,
- "eepwren - Enable / disable / query EEPROM write access\n",
- NULL);
-#endif /* #if defined(CFG_EEPROM_WREN) */
-
-
-#ifdef CONFIG_VIDEO_SM501
-#ifdef CONFIG_CONSOLE_EXTRA_INFO
-/*
- * Return text to be printed besides the logo.
- */
-void video_get_info_str (int line_number, char *info)
-{
- char str[64];
- char str2[64];
- int i = getenv_r("serial#", str2, sizeof(str));
-
- if (line_number == 1) {
- sprintf(str, " Board: ");
-
- if (i == -1) {
- strcat(str, "### No HW ID - assuming HH405");
- } else {
- strcat(str, str2);
- }
-
- if (getenv_r("bd_type", str2, sizeof(str2)) != -1) {
- strcat(str, " (");
- strcat(str, str2);
- } else {
- strcat(str, " (Missing bd_type!");
- }
-
- sprintf(str2, ", Rev %ld.x)", gd->board_type);
- strcat(str, str2);
- strcpy(info, str);
- } else {
- info [0] = '\0';
- }
-}
-#endif /* CONFIG_CONSOLE_EXTRA_INFO */
-
-/*
- * Returns SM501 register base address. First thing called in the driver.
- */
-unsigned int board_video_init (void)
-{
- pci_dev_t devbusfn;
- u32 addr;
-
- /*
- * Is SM501 connected (ppc221/ppc231)?
- */
- devbusfn = pci_find_device(PCI_VENDOR_SM, PCI_DEVICE_SM501, 0);
- if (devbusfn != -1) {
- pci_read_config_dword(devbusfn, PCI_BASE_ADDRESS_1, (u32 *)&addr);
- return (addr & 0xfffffffe);
- }
-
- return 0;
-}
-
-/*
- * Returns SM501 framebuffer address
- */
-unsigned int board_video_get_fb (void)
-{
- pci_dev_t devbusfn;
- u32 addr;
-
- /*
- * Is SM501 connected (ppc221/ppc231)?
- */
- devbusfn = pci_find_device(PCI_VENDOR_SM, PCI_DEVICE_SM501, 0);
- if (devbusfn != -1) {
- pci_read_config_dword(devbusfn, PCI_BASE_ADDRESS_0, (u32 *)&addr);
- addr &= 0xfffffffe;
-#ifdef CONFIG_VIDEO_SM501_FBMEM_OFFSET
- addr += CONFIG_VIDEO_SM501_FBMEM_OFFSET;
-#endif
- return addr;
- }
-
- return 0;
-}
-
-/*
- * Called after initializing the SM501 and before clearing the screen.
- */
-void board_validate_screen (unsigned int base)
-{
-}
-
-/*
- * Return a pointer to the initialization sequence.
- */
-const SMI_REGS *board_get_regs (void)
-{
- char *str;
-
- str = getenv("bd_type");
- if (strcmp(str, "ppc221") == 0) {
- return init_regs_800x600;
- } else {
- return init_regs_1024x768;
- }
-}
-
-int board_get_width (void)
-{
- char *str;
-
- str = getenv("bd_type");
- if (strcmp(str, "ppc221") == 0) {
- return 800;
- } else {
- return 1024;
- }
-}
-
-int board_get_height (void)
-{
- char *str;
-
- str = getenv("bd_type");
- if (strcmp(str, "ppc221") == 0) {
- return 600;
- } else {
- return 768;
- }
-}
-
-#endif /* CONFIG_VIDEO_SM501 */
-
-
-void reset_phy(void)
-{
-#ifdef CONFIG_LXT971_NO_SLEEP
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-#endif
-}
diff --git a/board/esd/hh405/logo_1024_768_8bpp.c b/board/esd/hh405/logo_1024_768_8bpp.c
deleted file mode 100644
index 2195547db0..0000000000
--- a/board/esd/hh405/logo_1024_768_8bpp.c
+++ /dev/null
@@ -1,2544 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x20,0xb5,0x06,0x40,0x00,0x03,0x48,0x6f,0x6c,0x7a,0x2d,0x48,
- 0x65,0x72,0x5f,0x64,0x74,0x5f,0x33,0x43,0x5f,0x31,0x30,0x32,0x34,0x78,0x37,0x36,
- 0x38,0x5f,0x32,0x35,0x36,0x2e,0x62,0x6d,0x70,0x00,0xec,0xbd,0x0b,0x74,0x23,0xd7,
- 0x79,0xa0,0x59,0x14,0x0d,0x1d,0x71,0xb6,0xc9,0x43,0x37,0xe4,0xe4,0xa8,0xa2,0x0c,
- 0x80,0x58,0xeb,0x14,0x48,0x77,0x7a,0xe2,0xb4,0x2c,0xcb,0x56,0x4b,0xed,0xb6,0x8e,
- 0xc2,0x84,0x4e,0x6d,0x83,0x05,0x80,0x8b,0x09,0x0c,0xec,0x28,0x1c,0xc3,0x69,0x39,
- 0x41,0x4f,0xec,0xc4,0xde,0x44,0xc1,0x60,0x6d,0xb5,0xdb,0x8c,0x9b,0x09,0x99,0x75,
- 0xbc,0xd3,0xed,0xce,0x64,0xc6,0x36,0xd0,0x72,0xa4,0x90,0x9d,0x50,0x4b,0xb5,0x12,
- 0xef,0x78,0x26,0xb6,0x3c,0x93,0x2c,0x8f,0x93,0x33,0x50,0x9e,0x92,0x10,0xc2,0xe3,
- 0xcd,0x61,0x98,0xd6,0x63,0x77,0x04,0xd2,0x40,0x09,0x38,0x7b,0xef,0xad,0xd7,0x7d,
- 0x15,0x50,0x20,0xd9,0x0f,0xa9,0xff,0x0f,0x20,0x88,0x47,0xbd,0xeb,0xfe,0x8f,0xfb,
- 0xdf,0xff,0xde,0x7b,0xfc,0xa7,0xde,0xfd,0x96,0x03,0x0a,0xe6,0xdd,0x6f,0x51,0x14,
- 0x0d,0xbf,0x41,0xff,0x95,0x61,0x45,0x19,0x52,0x6e,0x53,0x1c,0xde,0xfe,0x23,0xd6,
- 0x9f,0xc3,0x5b,0x6e,0x79,0x8b,0xf2,0xe8,0xa7,0x1e,0x55,0xee,0x3c,0xfe,0x98,0xf2,
- 0xf5,0x3f,0xfe,0x9a,0xf2,0x53,0x8f,0xfd,0x89,0xf2,0xfe,0x0f,0x3c,0xa8,0xdc,0x35,
- 0xf7,0x5f,0x94,0xf2,0x97,0xd6,0x95,0xb7,0xfe,0xd0,0x43,0xca,0x0b,0xdf,0x79,0x41,
- 0x79,0xf0,0xe1,0xc7,0x94,0x7f,0xf7,0xcd,0x2d,0x25,0xfb,0xf0,0x9c,0x72,0xe1,0x4b,
- 0x17,0x94,0x3b,0x7f,0xe8,0x4e,0xe5,0xe4,0x57,0xbe,0xab,0x1c,0xf9,0xd4,0x15,0xe5,
- 0x87,0x3e,0x50,0x50,0xde,0xf6,0xae,0x82,0xf2,0x8e,0x5f,0xfc,0xae,0x72,0xd7,0xcc,
- 0x57,0x94,0x8f,0x3e,0xf6,0xb8,0xf2,0xcd,0x3f,0xfb,0x7b,0xe5,0x9f,0xcd,0x3d,0xae,
- 0xfc,0x6f,0xab,0xff,0xa0,0xdc,0xfa,0xd6,0xbb,0x94,0xff,0xfe,0xda,0x6b,0xca,0x4f,
- 0xfe,0xef,0x57,0x94,0x77,0x7f,0xec,0x4f,0x94,0xd8,0xcc,0xbc,0x72,0xd7,0x91,0x1f,
- 0x57,0xfe,0xbc,0xf6,0x9c,0xf2,0x63,0x3f,0x76,0x44,0x39,0xfb,0x9b,0x9f,0x57,0x7e,
- 0x74,0xe6,0x51,0xe5,0xc4,0xa3,0x8f,0x2b,0x3f,0xfb,0x85,0xff,0xac,0xac,0xd4,0xfe,
- 0xbb,0x72,0xe1,0xc9,0xff,0xa2,0x7c,0xf3,0x3b,0xaf,0x2b,0x2b,0xab,0x4f,0x29,0xb7,
- 0xdf,0x7e,0xbb,0x72,0xc2,0x48,0x2a,0x1f,0xfd,0x85,0x8f,0x2b,0xbf,0xfa,0xd4,0x6b,
- 0xca,0x0f,0xff,0xc2,0xf3,0xca,0xcf,0x7c,0xe5,0x35,0xe5,0x07,0x3f,0xf0,0xcb,0xca,
- 0xe3,0x7f,0xfc,0x82,0xb2,0xf4,0xc7,0x3b,0x4a,0xf8,0xed,0xef,0x51,0xee,0xfb,0xb5,
- 0x2b,0xca,0x1d,0xef,0xfb,0x59,0xe5,0xae,0x87,0xff,0x48,0x31,0xce,0x5f,0x51,0x3e,
- 0x79,0xfa,0x8b,0x4a,0xed,0x85,0x4d,0xe5,0x6d,0x93,0x3f,0xa9,0x9c,0xf9,0xc2,0x13,
- 0x4a,0xf6,0xc3,0x8f,0x29,0x5f,0xf8,0xf2,0x53,0xca,0xdb,0x67,0xce,0x2b,0xb1,0xe9,
- 0x79,0xe5,0x03,0x9f,0xfe,0x1b,0xe5,0x7f,0xfc,0xe9,0x27,0x94,0xb1,0x1f,0xd0,0xd0,
- 0xf1,0xff,0xb4,0xf2,0xc2,0xdf,0xb7,0x94,0xd0,0xc8,0xdb,0x94,0x7b,0x7e,0x3c,0xa3,
- 0xdc,0x75,0xf2,0x39,0x25,0xf9,0x2f,0x7f,0x59,0x79,0xbd,0xfb,0xba,0x72,0x71,0xed,
- 0x4f,0x94,0x5f,0xfc,0xea,0xa6,0xf2,0xc3,0xbf,0x7c,0x45,0xf9,0xd0,0xe7,0xff,0x5a,
- 0xf9,0xfc,0xa5,0x3f,0x57,0xfe,0xe6,0xf9,0x17,0x94,0x7f,0xbf,0xfe,0xba,0x72,0xe7,
- 0x7d,0x9f,0x54,0x7e,0xed,0x73,0x67,0x95,0x6f,0xfe,0xe9,0xba,0xf2,0x8f,0x57,0xae,
- 0x28,0xef,0x7c,0xe7,0x3b,0x95,0x7b,0xdf,0x77,0x9f,0xf2,0x03,0x77,0xde,0xa9,0x1c,
- 0xf9,0x95,0xbf,0x55,0xfe,0xd3,0x8b,0xaf,0x2b,0x5f,0x7d,0xe2,0x49,0xe5,0xc7,0x3e,
- 0xfd,0x9a,0x72,0xf6,0xff,0xdc,0x52,0xbe,0xf0,0xc5,0x0b,0xca,0x8f,0x4e,0xfd,0x92,
- 0x92,0xf9,0xe9,0xac,0xf2,0xf1,0x5f,0xfc,0xa4,0xf2,0xe9,0x3f,0x7a,0x4d,0x29,0x7d,
- 0xfe,0x19,0xe5,0xae,0xec,0x65,0xe5,0x77,0x9e,0xf9,0x2b,0x65,0xee,0x67,0xfe,0xa5,
- 0x72,0xef,0x47,0x9f,0x50,0xde,0xf7,0xf1,0x3f,0x54,0x9e,0xf9,0xa3,0xaf,0x29,0x3f,
- 0xf6,0xc8,0x33,0x4a,0xfa,0xc2,0x6b,0xca,0xdb,0xde,0xf9,0x3f,0x2b,0x6f,0xff,0xe0,
- 0xbf,0x51,0xa6,0x3f,0xf7,0x37,0x8a,0xfa,0xbe,0xac,0xf2,0x33,0x5f,0xfc,0x1b,0x65,
- 0x7a,0xfa,0x83,0x8a,0xf6,0xc8,0x9f,0x2a,0xef,0xf9,0xa9,0x93,0xca,0x07,0x7f,0xeb,
- 0x35,0xe5,0x81,0x5f,0xf9,0x13,0xe5,0x83,0xa9,0x39,0xe5,0xa9,0xbf,0x7d,0x5d,0x39,
- 0x92,0xfe,0xbc,0x32,0xf6,0x83,0xf7,0x28,0x87,0x4b,0xaf,0x29,0xbf,0xf0,0x95,0xe7,
- 0x95,0xcd,0xff,0xef,0x75,0xe5,0x03,0x9f,0x7b,0x4d,0x99,0xfb,0xa5,0xc7,0x94,0xfa,
- 0x95,0xd7,0x95,0x03,0xff,0xc3,0x01,0xe5,0x7f,0x2a,0x9e,0x53,0x9e,0xfb,0xcb,0x17,
- 0x94,0x1f,0xfd,0x99,0x0b,0x8a,0xfe,0xa1,0x47,0x95,0xe2,0xaf,0xfe,0x1b,0xe5,0xc7,
- 0x3f,0x74,0x46,0xf9,0xbf,0xff,0xf4,0x39,0xe5,0x17,0x3e,0xf7,0xbb,0xca,0xd1,0xfb,
- 0x1f,0x54,0x0e,0xff,0xc8,0x11,0xe5,0xa3,0x3f,0xff,0x71,0xe5,0x6b,0x7f,0xd1,0x56,
- 0x2e,0xfc,0xc1,0x5f,0x2b,0x9f,0xfa,0xdc,0x17,0x94,0x27,0x97,0x9f,0x52,0x96,0x7e,
- 0xfb,0x19,0xe5,0x27,0x1f,0xfd,0x43,0xe5,0x8b,0x17,0xbe,0xa2,0x7c,0xed,0xff,0xfa,
- 0xa6,0xf2,0x2f,0x7e,0x7e,0x5e,0x29,0x7c,0xee,0x29,0xc5,0xf8,0xb5,0x75,0xe5,0xf7,
- 0xd6,0xff,0x51,0x39,0x92,0x9d,0x57,0x1e,0xf8,0xe9,0xff,0x55,0xf9,0xf9,0x27,0x5f,
- 0x53,0xb2,0xb9,0x39,0x25,0xfc,0x8e,0xa4,0x52,0xfa,0xed,0x6f,0x29,0x1f,0xd4,0x93,
- 0xca,0x67,0x2e,0xbd,0xa0,0x5c,0xfe,0x0f,0x7f,0xad,0x9c,0xbe,0xf8,0x57,0xca,0x07,
- 0x3f,0xfc,0x79,0xe5,0x67,0x9f,0xb8,0xa2,0xdc,0xf9,0x23,0xf7,0x29,0xf1,0xec,0x17,
- 0x95,0xa5,0xaf,0x6d,0x29,0x9f,0xfc,0x95,0x47,0x95,0x47,0x1e,0xf9,0xa8,0xf2,0xb5,
- 0x3f,0x5e,0x57,0x9e,0xff,0x6f,0xe8,0x9e,0xbe,0xfd,0x9d,0x4a,0xf2,0x17,0x1e,0x55,
- 0xa2,0x0f,0x7d,0x5e,0xb9,0xf3,0xdd,0x1f,0x57,0x6e,0xfb,0xbe,0x23,0xca,0xa3,0xa5,
- 0xc7,0x94,0xc7,0x3e,0x73,0x56,0x79,0xf0,0xa1,0x0f,0x2a,0x27,0x7e,0xe6,0x33,0xca,
- 0x07,0x1f,0xfe,0xa8,0xf2,0xe5,0xca,0x93,0xca,0x3d,0xef,0xbe,0x4f,0xf9,0xfd,0xbf,
- 0x78,0x5d,0x79,0x6a,0xed,0x6b,0xca,0xdb,0xbe,0xef,0x4e,0x25,0x95,0xce,0x2a,0xff,
- 0xf4,0x9f,0xde,0xa5,0x2c,0xfe,0xee,0xba,0xf2,0xdc,0xd6,0xeb,0xca,0xd7,0xfe,0xf4,
- 0x05,0xe5,0x7f,0x39,0xf5,0x79,0xe5,0xa3,0x9f,0x79,0x0a,0x1d,0xd3,0x07,0x95,0x3f,
- 0xfe,0xcb,0x4d,0xe5,0xb1,0x3f,0xbc,0xa2,0xdc,0xf5,0xde,0x0f,0x2a,0x8f,0xff,0xc1,
- 0x37,0x95,0xd8,0x4f,0x3e,0xaa,0xbc,0x75,0xec,0x76,0xe5,0x41,0x3d,0xab,0xfc,0xca,
- 0xf2,0xa6,0xf2,0xa3,0xfa,0x27,0x94,0xc7,0xd1,0xb1,0xde,0x9b,0x3b,0xaf,0x3c,0xfa,
- 0xbb,0x2f,0x28,0xeb,0xdf,0x7e,0x4e,0x59,0xfe,0xd6,0x77,0x95,0xfb,0x3e,0x73,0x45,
- 0xf9,0xd1,0x07,0x0b,0xca,0xb1,0x0f,0x3f,0xae,0xa4,0x7e,0xeb,0x1f,0x94,0x43,0xc6,
- 0x19,0xe5,0xf3,0xbf,0x75,0x4e,0x39,0x66,0xfc,0xa2,0x92,0x7b,0xb4,0xaa,0x7c,0xfb,
- 0xff,0x79,0x5d,0xf9,0xc3,0x6f,0xfc,0xa5,0x72,0xe1,0x5b,0x6d,0xe5,0xc1,0xb3,0x57,
- 0x94,0x1f,0x3e,0xfa,0xb3,0xca,0xa1,0xb9,0xcb,0x4a,0xee,0xb7,0xb7,0x94,0xb3,0x9f,
- 0xf9,0xbc,0xf2,0x42,0xfd,0xbb,0xca,0x7b,0x72,0x5f,0x51,0x8e,0x94,0xfe,0x51,0x59,
- 0x5f,0x5f,0x57,0x8e,0xfe,0xea,0xdf,0x2a,0x0b,0x5f,0x6b,0x2a,0x53,0x3f,0xff,0x15,
- 0x25,0xf5,0xeb,0x7f,0xad,0x68,0xef,0xfb,0x69,0xe5,0xe7,0xfe,0xed,0x0b,0xca,0x4b,
- 0x2f,0xbf,0xa6,0xfc,0xeb,0x5f,0xff,0xaa,0x72,0xf6,0xd7,0x3f,0xaf,0xcc,0x2d,0xfc,
- 0x67,0xe5,0xce,0x87,0x3e,0xa7,0xfc,0xc0,0xbb,0x1f,0x51,0xee,0x4a,0x3f,0xa1,0xfc,
- 0x93,0xef,0xfb,0x61,0xe5,0xae,0x9f,0xff,0x6b,0x65,0xf1,0x4b,0xdf,0x54,0xee,0x3b,
- 0x79,0x41,0x59,0x5c,0x7b,0x41,0x39,0x7a,0xfa,0x35,0x65,0x67,0xfb,0x75,0xe5,0x9b,
- 0xdf,0x5a,0x57,0xbe,0xfb,0xf7,0x57,0x94,0x77,0xbc,0xe3,0x9d,0xca,0xa7,0x3e,0xfd,
- 0x98,0xf2,0x9f,0xbe,0xf1,0x4d,0xa5,0xf1,0xdf,0xd0,0x71,0xcf,0x9d,0x55,0xfe,0xfd,
- 0x97,0xbf,0xa2,0xbc,0xfd,0xed,0x77,0x29,0x73,0x5f,0xbe,0xa2,0x4c,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x34,0x85,
- 0x09,0x8f,0xec,0x54,0xf3,0x7a,0x1f,0x0e,0x00,0x00,0xd7,0x90,0x9a,0xe2,0x31,0x77,
- 0xbd,0x0f,0x06,0x00,0x80,0x6b,0x0a,0x2d,0xff,0xd5,0xeb,0x7d,0x30,0x00,0x00,0x5c,
- 0x53,0xc0,0xfe,0x03,0xc0,0xcd,0x4b,0x8c,0xb6,0xff,0xea,0xf5,0x3e,0x1a,0x00,0x00,
- 0xae,0x25,0x60,0xff,0x01,0xe0,0xe6,0x05,0xe4,0x1f,0x00,0x6e,0x5e,0x40,0xfe,0x01,
- 0xe0,0xe6,0x85,0xa9,0xff,0x5f,0xef,0x83,0x01,0x00,0xe0,0x9a,0x02,0xf6,0x1f,0x00,
- 0x6e,0x5e,0x40,0xfe,0x01,0xe0,0xe6,0x05,0xf2,0x7f,0x00,0xe0,0xe6,0x05,0xec,0x3f,
- 0x00,0xdc,0xbc,0x40,0xfe,0x0f,0x00,0xdc,0xbc,0x80,0xfd,0x07,0x80,0x9b,0x97,0x18,
- 0xc8,0x3f,0x00,0xdc,0xb4,0x80,0xfc,0x03,0xc0,0x9b,0x10,0x55,0x35,0x4c,0x53,0xd7,
- 0x4d,0xc3,0xe8,0x59,0xab,0x97,0xc7,0xff,0x55,0x63,0x07,0xaf,0x1a,0x3c,0x1e,0x40,
- 0x76,0x36,0xd2,0x6f,0x67,0xfb,0x86,0x8a,0xf6,0x66,0x1a,0xd7,0x64,0x57,0x03,0xa1,
- 0x1a,0x86,0x3e,0x12,0xf8,0x1a,0xb8,0x77,0x28,0xe8,0xf2,0x2a,0x59,0x1e,0xdd,0x97,
- 0x37,0x40,0xa0,0x06,0x5d,0x8a,0x00,0xc5,0x0f,0xb8,0x0a,0x18,0xba,0x96,0xa8,0x4e,
- 0xa4,0x92,0xdd,0x6e,0x3a,0x9d,0xee,0x26,0x53,0x13,0xd5,0xec,0xb0,0xe9,0xb3,0xac,
- 0xa4,0xfe,0x6f,0x66,0xf2,0xc5,0xe8,0x18,0x5e,0x33,0x34,0x97,0x6d,0xf4,0xbd,0x7d,
- 0xaa,0xae,0xb5,0x72,0xc5,0x28,0xd9,0x57,0x37,0x55,0x3c,0xd0,0xd2,0x74,0x7e,0x9d,
- 0x1d,0x13,0x95,0xf4,0x9e,0x18,0xb4,0x14,0x18,0xde,0xe2,0x92,0xd2,0xa3,0x46,0xb2,
- 0x73,0xa1,0xe4,0x18,0x3a,0xbc,0x62,0x45,0x73,0x4f,0xcb,0x40,0xc5,0xcd,0x5a,0x8d,
- 0x96,0x26,0x73,0xc7,0xdd,0x03,0xb3,0x21,0x6a,0x07,0xbc,0xf0,0xa9,0xf8,0xb7,0x1d,
- 0x72,0x44,0x26,0xbf,0x73,0x63,0xc7,0x3b,0x5e,0xf1,0x42,0xe8,0x5a,0x85,0x5c,0x86,
- 0x64,0x6a,0x6e,0x34,0xe2,0x6e,0xce,0x3e,0x2c,0xc3,0xdc,0x61,0x76,0x32,0xdc,0xa9,
- 0xe4,0x42,0xd1,0xe4,0x98,0x75,0x83,0x2a,0x99,0x48,0x9f,0xeb,0xac,0x46,0x3a,0xf9,
- 0x89,0x54,0x17,0x2f,0x3f,0xd6,0x8d,0x16,0x73,0xad,0x4c,0xc3,0x3d,0xf2,0x3e,0xd7,
- 0x6b,0xc7,0x3d,0x66,0xe6,0x64,0x55,0xeb,0x3b,0xf1,0x22,0x18,0xf6,0x0f,0x86,0x29,
- 0x53,0xb1,0x86,0xfb,0xa3,0xbf,0x02,0xd6,0x0b,0xb1,0x39,0x74,0x29,0xba,0xb8,0x44,
- 0x44,0x43,0x39,0xf9,0xd9,0xb9,0x17,0xc6,0x67,0x37,0xce,0x39,0xed,0xf8,0x15,0x5d,
- 0x40,0xc2,0x4e,0x23,0x3b,0x97,0x8a,0x97,0x14,0x8e,0x52,0x37,0x37,0xaa,0xcb,0x96,
- 0x17,0xe4,0x5f,0x6f,0x25,0xe9,0xb5,0xe3,0xa1,0x6c,0xcf,0xeb,0x5f,0x8e,0x15,0xc7,
- 0xf8,0x9d,0xa5,0x43,0x2d,0x46,0x6d,0x44,0x92,0xa8,0xcc,0xf6,0x79,0xa6,0xbb,0x29,
- 0xb7,0x14,0xe4,0xbc,0xaf,0xbb,0xc3,0xdc,0xfe,0x8c,0x4c,0x31,0x4d,0x9d,0x56,0xb4,
- 0x62,0x9d,0x95,0x3a,0xd7,0xc5,0x82,0x81,0x57,0x2a,0x7a,0xbb,0x6e,0x50,0x3b,0x9e,
- 0xa0,0x8e,0xc8,0xef,0x7b,0x4c,0xcc,0x3d,0xa0,0xb1,0xee,0x28,0xfb,0x93,0x5a,0xf4,
- 0x8e,0xf8,0xb3,0x11,0xee,0xb7,0x46,0x35,0x49,0x5f,0x82,0x5c,0xc1,0xda,0x6e,0xa7,
- 0x6b,0x6d,0xaa,0x3b,0x96,0x74,0x4e,0xa5,0xde,0xa9,0x86,0xc6,0xf8,0x3b,0x14,0x0f,
- 0x25,0xb8,0x2d,0xd2,0xe8,0x89,0x50,0x5a,0xe1,0xd7,0x48,0x25,0xec,0x5f,0x27,0xa9,
- 0xeb,0x95,0x11,0xd6,0x6d,0x91,0xef,0xad,0x53,0xca,0x52,0xdf,0x2f,0x74,0xc9,0xa1,
- 0x91,0x15,0xe7,0xa9,0xef,0xd7,0xf1,0xc5,0x19,0x7b,0x86,0xac,0x70,0x40,0xd8,0x9a,
- 0x19,0x25,0xab,0x91,0xbd,0x85,0xa4,0x0a,0xc0,0xec,0xe4,0xba,0xc2,0xd9,0x45,0x27,
- 0x0b,0xdc,0xc2,0xe6,0x99,0x31,0xeb,0xc2,0x60,0xab,0x21,0x14,0x31,0xb5,0x68,0x5f,
- 0x35,0xf4,0x8c,0xf6,0xb8,0x30,0x00,0xcb,0x68,0x34,0xce,0x97,0x13,0x97,0xee,0xa4,
- 0xe4,0x42,0x72,0xf2,0xaf,0x8e,0x26,0x85,0xf5,0x52,0x19,0x5f,0xdb,0xd4,0xa8,0x0a,
- 0xc2,0x6f,0xdf,0xf0,0x62,0xc7,0xbb,0xdf,0x6d,0xff,0x63,0xa2,0x48,0x3b,0x85,0x40,
- 0x0d,0x79,0x5f,0x96,0x0a,0xcc,0xfe,0xd4,0x42,0x88,0x5f,0xad,0x9b,0xc0,0x3b,0x32,
- 0xa2,0xde,0xe1,0x7a,0x47,0x5b,0xa0,0xca,0x61,0x88,0x3a,0x89,0x36,0xf5,0x7d,0x8a,
- 0x3b,0xb9,0x21,0x6a,0xdb,0x31,0xf6,0x27,0x83,0xba,0x36,0xf1,0x06,0xf3,0x53,0xa4,
- 0xca,0x9f,0x63,0x3c,0x47,0xae,0x76,0xc5,0x3b,0x95,0xb6,0x64,0x0f,0x34,0x63,0xb2,
- 0xfb,0x43,0x36,0x9e,0x97,0x5f,0x65,0x47,0xd3,0x4d,0x50,0xdf,0x75,0x84,0xb5,0x27,
- 0xa9,0x5f,0x13,0xd4,0xf7,0xa3,0xd4,0xf7,0x39,0xea,0xfb,0x61,0xea,0xe2,0x14,0x85,
- 0x3b,0x1f,0xa1,0xce,0x33,0x29,0x73,0x82,0x5a,0x62,0x01,0xb2,0x4e,0x3f,0x15,0x63,
- 0x0c,0x90,0x4e,0x9d,0x53,0x5a,0x30,0x4d,0xcc,0xa5,0x06,0xf9,0x0f,0x4c,0xcb,0xa7,
- 0x6c,0xd9,0xd7,0x39,0x2f,0x5c,0x68,0xb6,0xfe,0x6f,0xe4,0x05,0xcf,0x01,0xdf,0xba,
- 0xaa,0xdc,0x05,0x30,0x87,0x04,0xa3,0x44,0x11,0x72,0xca,0xfb,0x54,0x23,0x90,0xfc,
- 0x8f,0xc9,0xe4,0x5f,0x61,0xe4,0xdf,0x68,0xc9,0xb6,0x54,0x44,0xa2,0x68,0x76,0xbd,
- 0xfd,0x7a,0x65,0x96,0x2e,0xca,0x29,0xca,0xfe,0xb4,0x7d,0xbe,0xe7,0xaf,0x60,0x82,
- 0xfd,0x89,0x52,0x32,0x4a,0x89,0x91,0x7f,0x8d,0xfa,0xc5,0xa5,0x8b,0x65,0x71,0xce,
- 0xfd,0xe8,0x6a,0x8c,0x84,0xef,0x25,0xe8,0xd6,0x24,0x16,0x55,0xcd,0xfa,0x48,0x94,
- 0x32,0x61,0x2f,0x91,0xa3,0xbe,0x1b,0x15,0xd6,0xcf,0x53,0xbf,0xb6,0xa8,0xef,0x3b,
- 0x92,0x2d,0x61,0xb6,0xa9,0x6b,0x1c,0x12,0xe5,0x9f,0xba,0xe5,0x5d,0xd1,0x6c,0xfb,
- 0x1e,0x2b,0x26,0x49,0x1f,0x9c,0xee,0xdd,0x31,0x99,0xfc,0x47,0xbd,0x5f,0xd9,0x4b,
- 0x0d,0xf4,0x22,0xdb,0xe3,0xf2,0x63,0x52,0x05,0x6e,0x05,0xc6,0xfe,0x9b,0x55,0x9f,
- 0xd5,0x8a,0xb2,0xba,0x43,0x3b,0xd5,0x7b,0x5f,0xae,0xf4,0x34,0x64,0x4a,0x45,0x20,
- 0xed,0x54,0x90,0x9b,0x7e,0xf2,0x6f,0xcc,0xc9,0xd7,0x8c,0x16,0xa6,0x74,0xaf,0x58,
- 0x52,0x65,0x79,0xc9,0xc7,0xce,0xd3,0xf2,0x1f,0xe5,0x8a,0xf8,0xb2,0xec,0x0c,0xec,
- 0xfd,0x47,0xbd,0x9f,0xe2,0x33,0xde,0xf7,0xcd,0xac,0x5c,0xc1,0xc5,0x13,0x2a,0x65,
- 0x9b,0xd3,0x8e,0x19,0xeb,0x71,0x8f,0x4a,0x55,0x41,0x01,0x98,0x73,0xbe,0x57,0xcf,
- 0x69,0xaf,0xd9,0x5f,0xf9,0x6f,0xfb,0x38,0x4d,0x16,0x3a,0x75,0xaa,0x82,0xfc,0xeb,
- 0xf4,0x91,0x48,0xc8,0x51,0xe3,0x4b,0x07,0x97,0xff,0x38,0xc8,0x7f,0x60,0xb4,0x7e,
- 0xa2,0x16,0x1f,0x65,0x6f,0x29,0x2d,0xff,0x39,0x1f,0xf9,0x42,0x14,0x47,0x84,0x5d,
- 0xad,0xf6,0x32,0xfe,0x18,0xd7,0x7b,0x0e,0xe6,0xff,0x4b,0xed,0x3f,0xed,0xff,0xab,
- 0x7e,0xda,0x49,0x89,0x46,0x28,0x17,0x83,0xaa,0xb3,0x0e,0x07,0x90,0xff,0x7d,0xf0,
- 0xff,0x33,0x7e,0xe7,0x17,0xcf,0x1a,0x45,0xf7,0x43,0xd7,0x29,0xe4,0x1d,0x9f,0xa5,
- 0xad,0xa3,0xe7,0x14,0x80,0x5e,0xf4,0x5f,0xd6,0x6e,0xaf,0x69,0xd2,0x52,0x27,0xfa,
- 0xff,0xf3,0xd4,0xaf,0xb4,0x42,0x5b,0xa4,0xbe,0xa7,0xfd,0xff,0xf6,0xae,0xfd,0xff,
- 0x7e,0x06,0x81,0xd9,0x0d,0x2d,0xff,0x63,0xbd,0xfd,0x7f,0x90,0xff,0xc0,0xb4,0xfb,
- 0x9a,0xda,0x78,0x96,0x59,0x81,0x6e,0xff,0xef,0x25,0xa6,0x7c,0xb9,0x54,0x33,0xfd,
- 0xc4,0x9f,0xb2,0xff,0x81,0xe4,0xff,0x99,0x7e,0xfe,0x7f,0xcd,0xff,0xdc,0x42,0x9a,
- 0xb7,0x0b,0xaa,0x17,0x93,0x9f,0x9c,0xd3,0x0a,0x69,0xef,0xfe,0x7f,0xc4,0xdf,0xe7,
- 0x8d,0x6b,0xde,0xb9,0xb8,0xd2,0xb2,0xd6,0xf3,0x1e,0x55,0xd8,0x86,0x8a,0x1e,0xe2,
- 0xaf,0x54,0xec,0x85,0x68,0xf9,0x67,0xef,0x2e,0x26,0x88,0xfd,0xa7,0x05,0x33,0xb8,
- 0xff,0xcf,0xc9,0x7f,0xa3,0x97,0xef,0x2f,0xec,0xa6,0xde,0xdb,0xfe,0x53,0xdb,0x02,
- 0xff,0x3f,0x38,0x91,0xbe,0x52,0xa9,0xa4,0x99,0x2a,0x40,0xad,0xef,0xf2,0xf6,0x4d,
- 0xa8,0xb1,0x3b,0x2a,0xf4,0xdf,0x91,0x67,0xff,0x03,0xf9,0xff,0xfd,0xec,0x3f,0x6d,
- 0x30,0x04,0x8a,0xde,0x2e,0x2a,0xde,0x41,0x06,0xf1,0xff,0x79,0xfb,0xdf,0xcb,0xff,
- 0x97,0x1a,0x25,0xd5,0xdf,0x6b,0x42,0x9e,0x89,0x77,0xd0,0x51,0x47,0xd1,0xf4,0x76,
- 0x87,0xe2,0x74,0x04,0xdf,0xe8,0xe9,0x50,0x3b,0x87,0x17,0xdc,0xfe,0x07,0x91,0x7f,
- 0xc6,0xff,0x17,0xb6,0x16,0xf1,0xf5,0xff,0x23,0xd1,0x5e,0xc7,0x2a,0xec,0x86,0x8e,
- 0xff,0x75,0xc1,0xfe,0xef,0x13,0x66,0x2f,0x21,0xb1,0x89,0xd2,0x57,0x3b,0xa8,0xfc,
- 0x2b,0x5d,0x26,0x0a,0xab,0xf3,0x37,0xbb,0x94,0x4e,0xa6,0x52,0x4f,0x25,0xd3,0x54,
- 0xe1,0x19,0xd0,0xfe,0xa7,0x5d,0x43,0x2c,0xb7,0xff,0x5c,0x68,0x33,0xde,0x8d,0xa6,
- 0xa2,0x42,0x33,0x9a,0xc2,0x94,0xf1,0x40,0xfe,0x3f,0x67,0xff,0x7b,0xf9,0xff,0xd4,
- 0x49,0x7b,0x85,0xb2,0xcd,0x6a,0xc2,0x12,0x3a,0xae,0x54,0x57,0x72,0xc6,0xae,0xfc,
- 0x3b,0x97,0xa3,0x14,0x4f,0xa2,0x45,0x93,0xfc,0xa2,0x74,0xab,0x9a,0x7f,0xa8,0x90,
- 0x3e,0xbc,0xde,0xf1,0x7f,0xda,0xfe,0xd3,0x0a,0x6d,0x77,0xf5,0xff,0xb2,0x9f,0xfd,
- 0x37,0xe8,0xa3,0x20,0xa7,0x87,0x4b,0x44,0x2a,0x49,0xb7,0x05,0xe6,0xa8,0xcd,0xf5,
- 0xa9,0xff,0x83,0xfc,0xef,0x0a,0xaa,0x88,0x96,0xe2,0x63,0xc9,0x68,0xf2,0x19,0x89,
- 0x84,0x50,0x16,0x92,0xf1,0xff,0x9d,0xbb,0x31,0xd1,0x1a,0x5d,0x4c,0xe4,0x78,0x4d,
- 0x32,0x49,0xad,0xc5,0xd9,0xbc,0x52,0xaa,0x35,0x5c,0x36,0x54,0xd5,0xd8,0x29,0x17,
- 0x62,0x39,0x27,0x7f,0xc0,0x2d,0x6c,0xc1,0xec,0x7f,0xb7,0xb7,0xff,0x4f,0x0b,0x1f,
- 0x12,0xa6,0x44,0xdb,0x54,0x37,0x8d,0xba,0x56,0x15,0xfc,0x10,0xaa,0x8c,0x07,0xb2,
- 0xff,0x9c,0xfc,0xf7,0xb2,0xff,0x9f,0xa5,0x4e,0xd9,0x2d,0x94,0x15,0x6a,0x05,0x25,
- 0x3d,0xa7,0xe9,0x86,0xba,0x69,0x36,0x12,0x42,0x5d,0xd8,0x95,0x25,0x52,0xf2,0xd3,
- 0xc5,0x56,0x26,0x62,0xe2,0x45,0x23,0xa3,0x45,0xe6,0xfa,0x94,0x34,0x77,0x87,0xdb,
- 0x7c,0xbb,0x5f,0x3c,0x54,0xdd,0xea,0x2c,0xc6,0xf2,0x45,0x72,0x8d,0x1d,0x59,0xbf,
- 0x4c,0x2d,0x21,0xc6,0xff,0xe8,0xf6,0xbf,0xab,0x68,0xff,0x13,0xec,0x4d,0x8e,0xe6,
- 0x33,0x65,0x53,0x45,0xa7,0xa7,0xb7,0x47,0xab,0x4e,0x89,0x80,0xfa,0xff,0xd5,0xc6,
- 0x96,0x9d,0x52,0x32,0x97,0x28,0x44,0xea,0xc6,0x8e,0xa9,0x37,0x6a,0x13,0xbc,0x88,
- 0xd0,0xa6,0x5c,0x90,0xff,0xf8,0x64,0xc3,0x8a,0xd2,0x96,0x2b,0xec,0x7a,0x69,0x6a,
- 0x2d,0x36,0xcc,0x18,0xca,0x6c,0x52,0x87,0xd0,0x34,0x33,0xe7,0xc8,0x9a,0xae,0xf5,
- 0x5c,0x67,0x37,0xd4,0x8d,0x65,0x6b,0xb5,0x6c,0x2d,0xcb,0xd1,0x71,0xe4,0xa3,0x29,
- 0xf5,0xff,0x19,0x25,0x32,0xe7,0x15,0x98,0x46,0x8e,0xd3,0x2e,0x54,0x0d,0x78,0xaf,
- 0xf1,0xbf,0x20,0xfe,0x3f,0xa3,0xad,0xa2,0x9e,0xbb,0x62,0x26,0xb8,0xcb,0xee,0xca,
- 0x7f,0xbd,0xfb,0x6c,0x28,0x41,0x67,0xc4,0x6d,0x76,0x18,0x5d,0xeb,0x76,0xc3,0x50,
- 0x39,0xef,0x3f,0x5d,0xdd,0x36,0x9c,0x6b,0x3c,0xdc,0x4a,0xb9,0x35,0x85,0xde,0xfe,
- 0xbf,0x5f,0xfb,0x7f,0x10,0xf9,0x97,0xc4,0xff,0x7c,0xda,0xff,0xca,0xcc,0x29,0x24,
- 0x6b,0xb4,0x6a,0x68,0x1a,0x85,0x49,0xe2,0x06,0xec,0xce,0xfe,0x43,0xfd,0x7f,0x00,
- 0x70,0x59,0x88,0xe6,0x0b,0xcc,0xe5,0x6f,0xe4,0x39,0x1f,0x93,0x2a,0x06,0xbc,0xff,
- 0xdf,0xed,0x78,0x6d,0x34,0x19,0xd6,0x05,0x18,0x72,0x7f,0x50,0xe9,0xa8,0x54,0xa9,
- 0x22,0x36,0x5a,0xaf,0xe3,0x2c,0x10,0x77,0x2f,0x5c,0xe0,0xbe,0x94,0x10,0x96,0x67,
- 0x90,0xdb,0x7f,0xba,0xb8,0x16,0x99,0x3c,0xd6,0x21,0x56,0x01,0x50,0xf2,0xbf,0xdf,
- 0xf6,0x3f,0xea,0xfd,0xe4,0xca,0x3f,0x53,0x8e,0x99,0xd0,0x8a,0xf6,0x3d,0xe6,0xb8,
- 0x5c,0x59,0xda,0x1c,0xd2,0x36,0xb9,0x53,0x66,0x5a,0x10,0xdc,0x8a,0xc2,0x30,0x7b,
- 0xdb,0xbc,0x84,0x0a,0xeb,0x68,0x96,0x9c,0x9b,0x4c,0x7b,0xde,0xbb,0x6b,0xff,0xf3,
- 0xb5,0xff,0x81,0xe3,0x7f,0xb4,0x96,0x51,0x72,0x62,0x73,0x71,0x3d,0x9b,0x2a,0xf9,
- 0xda,0x7f,0xa8,0xff,0xef,0x1b,0x93,0xa5,0x50,0x47,0xcc,0xd6,0x59,0x8b,0xd2,0xb7,
- 0x87,0xae,0x62,0x72,0xf2,0xcf,0x44,0x9f,0xa6,0x16,0x98,0x02,0xe8,0x65,0x69,0xd2,
- 0xe6,0xbf,0x94,0x90,0x66,0x07,0xd6,0x13,0x49,0xaf,0xf6,0xbc,0xc3,0xd6,0x0d,0xe3,
- 0xab,0x3d,0x4f,0x41,0x2e,0xff,0x74,0xf5,0x5f,0x63,0x97,0xcf,0x33,0x5b,0xa7,0x24,
- 0x60,0xbf,0xeb,0xff,0x32,0xa3,0x44,0x07,0x37,0xe6,0xd8,0x4b,0xb1,0xc0,0x78,0x00,
- 0x13,0x53,0xfe,0x30,0x4d,0x78,0x8e,0xa3,0xc5,0x99,0xff,0x09,0x69,0xfe,0x36,0x86,
- 0xf6,0xff,0xf7,0xd7,0xfe,0x07,0xf6,0xff,0xe9,0x68,0x9e,0x32,0x27,0xcd,0x0b,0xde,
- 0xe9,0xa4,0xe8,0x0e,0xa6,0xf4,0x1a,0x7d,0xfc,0x7f,0xc8,0xff,0x0b,0xce,0xda,0x82,
- 0x54,0x1c,0x1b,0x51,0xba,0x28,0x51,0x57,0x94,0x93,0xff,0x16,0xb3,0x96,0xca,0xa4,
- 0xaa,0x7a,0xbe,0x38,0x5d,0xfb,0x9f,0xf4,0x4b,0x0e,0xd6,0xa9,0x9b,0xaa,0xb3,0x69,
- 0xbb,0x63,0x6d,0x9f,0x75,0xac,0xbd,0x4a,0xe5,0x9f,0xb2,0xcb,0xbc,0xbb,0x68,0x30,
- 0x5b,0xa7,0x34,0xd8,0x7e,0xc7,0xff,0xa9,0x8b,0xe8,0x1a,0x25,0x7a,0x5b,0x7c,0xe3,
- 0x1b,0x13,0xbe,0xe3,0x3b,0x1a,0x30,0x30,0x39,0x41,0xf6,0xd5,0x61,0x64,0x4a,0x49,
- 0xf9,0x8a,0x7f,0x1f,0xff,0x7f,0xe0,0xfc,0x9f,0xdd,0xb4,0xff,0xd1,0xc5,0x48,0xde,
- 0x2d,0x60,0x0a,0xf7,0x4d,0xa1,0x3e,0x80,0xff,0x7f,0x4d,0xe9,0x30,0x4e,0xb2,0x57,
- 0x4a,0xd8,0xfa,0x3f,0xdf,0x11,0xc3,0x8c,0xd2,0xbf,0x3a,0xa5,0x47,0xa7,0x6e,0x4e,
- 0x8f,0x62,0x49,0xc3,0xb5,0x0d,0xf7,0xec,0xd2,0x21,0x97,0x7f,0x4a,0x15,0x09,0x79,
- 0xe7,0x4c,0x38,0x42,0xf3,0xbe,0xdf,0xab,0xfd,0xef,0x51,0xff,0x2f,0x49,0xe4,0xbf,
- 0xc4,0x0b,0x1f,0x73,0xf9,0x72,0x53,0x3d,0xa0,0x85,0xd1,0xe9,0x28,0xc0,0xa8,0xe6,
- 0x38,0x9f,0xb8,0x49,0x11,0xdc,0xff,0x1f,0xb8,0xfe,0x2f,0x6c,0x4d,0x6e,0xff,0xe9,
- 0x5b,0x16,0xd0,0x5d,0xa7,0xe5,0xff,0x19,0xf0,0xff,0xaf,0x36,0x9b,0x8c,0x8d,0xf4,
- 0xaa,0xf2,0xac,0xfd,0x17,0xb2,0x47,0x98,0x46,0x37,0xa7,0x06,0xab,0xf5,0x30,0x79,
- 0x7e,0x70,0xf9,0x02,0x92,0x7c,0x42,0x17,0x79,0xfe,0x2f,0x65,0x4b,0x05,0x73,0xc1,
- 0x68,0x0c,0xcd,0xfb,0x7e,0x37,0xf5,0xff,0x80,0xf9,0x3f,0x6e,0xa1,0x6c,0x50,0x27,
- 0xc6,0xe5,0x48,0xb0,0x0e,0x40,0xae,0x97,0xfd,0xa7,0x17,0xb4,0xfd,0x2c,0x95,0xa9,
- 0x34,0xf5,0x1a,0x9b,0x31,0xb8,0xff,0xbf,0xf7,0xfa,0xbf,0x2e,0x8d,0xff,0xd1,0x5e,
- 0x41,0xc0,0x51,0xa4,0xfb,0xc4,0xff,0xa9,0x4b,0x0d,0xf6,0x7f,0x3f,0x60,0x9a,0xa9,
- 0xbc,0xd2,0xc4,0xc8,0xbf,0x18,0x87,0x61,0x42,0xf7,0x8e,0xdd,0xad,0xf4,0x5a,0xc3,
- 0x8f,0x0e,0x1b,0xcc,0x9a,0xf3,0x2f,0xcf,0xf2,0xfc,0x9f,0x55,0x6a,0x65,0xc1,0x16,
- 0xd2,0xe2,0xa3,0x79,0x5f,0xef,0xb7,0xfd,0x97,0xb5,0xff,0x99,0x94,0xa5,0x12,0x8a,
- 0x3e,0xad,0x1c,0x7a,0x8d,0xae,0x64,0xd2,0x0a,0xcc,0xb6,0xff,0xf4,0x86,0x95,0x78,
- 0xaf,0x1a,0x53,0xf0,0xfc,0xff,0x40,0xf6,0x9f,0xba,0x51,0x41,0xf3,0x7f,0x33,0xc2,
- 0xd1,0xf7,0x05,0xda,0xff,0xaf,0x2d,0x74,0x77,0x4f,0xaa,0xbe,0xc7,0xc8,0xbf,0x58,
- 0x44,0xd5,0x4b,0x62,0x21,0xa4,0xa3,0xff,0x3d,0x9d,0x5a,0x76,0x4b,0x5c,0x03,0xf1,
- 0x90,0xbf,0x02,0x90,0xda,0xff,0x1e,0x71,0x36,0x56,0xd0,0x29,0xe5,0x70,0x2d,0xe2,
- 0xff,0xb4,0x63,0x95,0xe4,0xab,0x35,0x06,0x95,0x05,0xd0,0xc3,0x2e,0x1a,0x4c,0x04,
- 0xd3,0x8e,0xce,0x30,0x69,0x82,0xa2,0x20,0x52,0xec,0xdd,0xfe,0x0f,0xd0,0xff,0x47,
- 0x6a,0xff,0x29,0x8b,0x10,0xf5,0xab,0xfd,0xf3,0x1b,0x82,0xf6,0xff,0x6b,0x0a,0x13,
- 0x61,0x2a,0xca,0xed,0xbf,0x58,0x78,0xd8,0xce,0xea,0x1a,0xf9,0x8a,0xbe,0x37,0x31,
- 0x71,0x0d,0x3f,0x54,0xa6,0x89,0x48,0x29,0xf9,0xd6,0x1c,0x7c,0xf2,0x7f,0xe8,0x12,
- 0xc1,0x8f,0x72,0x51,0xf7,0x4a,0x25,0xdd,0x63,0xe8,0x2a,0xd6,0xff,0xbd,0x42,0x49,
- 0xcb,0x2e,0xdf,0x7d,0x8f,0x8e,0xeb,0xfb,0xca,0xbf,0x5a,0x60,0x93,0xfc,0xa3,0x96,
- 0x58,0xd1,0xfd,0x73,0x94,0x15,0xbf,0x95,0x31,0x7b,0xef,0xff,0xb7,0xc7,0xf8,0x7f,
- 0x93,0xaa,0xaa,0xf4,0x70,0xec,0x18,0xc0,0xfe,0x5f,0x5b,0x18,0xe9,0x93,0xcb,0xbf,
- 0xec,0x42,0x67,0xe8,0xd5,0x2c,0x69,0xa7,0x2a,0x7b,0x38,0x57,0x4d,0x45,0x0f,0xf2,
- 0xc2,0x3f,0xac,0x17,0x0f,0x2e,0x99,0x3d,0xad,0xf9,0x1c,0xa9,0x3c,0xff,0x87,0xc9,
- 0x63,0xef,0x6a,0x6c,0x29,0xa3,0xd3,0x1e,0x29,0xff,0xf3,0x2a,0xda,0x7f,0xaf,0x52,
- 0x4a,0x0f,0x32,0x22,0xe4,0x42,0x50,0x86,0x51,0x2e,0xff,0x6a,0x24,0x5b,0xe4,0xb2,
- 0x33,0x6c,0x2f,0x8c,0x56,0x44,0x25,0x7e,0x18,0x24,0x86,0xab,0xd7,0xfe,0xd7,0x3b,
- 0xff,0xc7,0xf5,0xff,0x55,0xea,0xc2,0xb4,0xa6,0xc8,0xad,0x97,0x15,0x08,0xa6,0x3c,
- 0x40,0xfb,0xff,0x35,0xa5,0x4e,0xdd,0x22,0xfa,0x7e,0xd3,0xf2,0x2f,0x8e,0xe7,0xc0,
- 0xe5,0xee,0x5b,0x89,0xc3,0x4c,0x03,0x51,0x6e,0x22,0x97,0x23,0x7f,0x3c,0xe4,0x3b,
- 0xb6,0x33,0x5b,0x9d,0x6d,0x05,0xec,0xfa,0xdc,0x57,0x9f,0xfe,0x7f,0xcc,0x91,0xc4,
- 0xab,0xcc,0x08,0x63,0xd4,0x2a,0x03,0xdb,0x7f,0xae,0x88,0xf7,0x8a,0xff,0x49,0x0b,
- 0xe5,0x26,0x63,0xbd,0x8b,0x19,0x46,0x03,0x50,0x81,0x09,0x89,0xfc,0x1b,0xed,0x84,
- 0x90,0x9c,0xe9,0xb6,0x22,0xd0,0x8d,0xac,0xa2,0x81,0xa4,0xb9,0x8a,0xf6,0xbf,0x67,
- 0xfe,0xbf,0x5b,0x5e,0xe8,0x5e,0x27,0xa9,0x09,0x79,0x79,0xb0,0x99,0x74,0x2e,0x0f,
- 0xb4,0xff,0x5d,0x4b,0xd8,0x96,0x7c,0x2a,0x97,0x9f,0x6e,0xff,0xe3,0x45,0x01,0x43,
- 0xd7,0xf7,0xec,0x22,0xdc,0x77,0x8c,0x01,0xdf,0xf2,0xc3,0x75,0x11,0xf3,0x69,0x3b,
- 0xf4,0xb1,0xff,0x4d,0xb6,0xcf,0x41,0xba,0x18,0x1b,0xd6,0x0d,0x43,0x25,0x50,0xdd,
- 0xec,0x69,0x53,0x79,0x2d,0xea,0xff,0x7c,0xf7,0xff,0x52,0xaa,0xa2,0xe1,0xc4,0x7e,
- 0x8b,0x1e,0xf2,0xaf,0xb6,0x2b,0x29,0x59,0xc7,0x28,0xbb,0xf9,0x9c,0xc9,0xb1,0xec,
- 0x5d,0xa9,0xbe,0xa6,0xf6,0x5f,0x16,0xff,0xd3,0xfb,0x77,0x06,0x75,0x70,0x75,0x06,
- 0xd4,0xff,0xaf,0x25,0xdc,0x08,0x35,0x5e,0xb5,0x9d,0xb6,0xff,0xb2,0x20,0x13,0x13,
- 0x85,0xb6,0x3c,0xd3,0xdd,0xcb,0xff,0xd4,0x12,0xdb,0xa1,0x65,0x42,0x3a,0xae,0x98,
- 0x5f,0xff,0x7f,0x9d,0xef,0x5f,0x8e,0x7b,0x98,0x15,0x09,0x21,0xef,0xf4,0x68,0xfb,
- 0x5f,0xb8,0x7a,0xf5,0x7f,0xca,0x28,0x89,0xe3,0x92,0xc4,0x93,0xa9,0x90,0x75,0x60,
- 0xbe,0x8d,0x03,0x86,0xc6,0xbb,0xfd,0xce,0xba,0x0b,0x92,0xab,0x20,0xda,0x61,0x9a,
- 0x6b,0x5a,0xff,0x97,0xd9,0xff,0x72,0x70,0xf9,0x77,0x4d,0x3d,0xd4,0xff,0xaf,0x1d,
- 0x66,0x85,0x2d,0x6b,0x94,0x8c,0xd0,0xf6,0x5f,0x96,0xa1,0xca,0x74,0xbb,0xb3,0x8a,
- 0x49,0xcf,0xf1,0x6b,0x58,0x84,0x72,0xbb,0xca,0x1e,0x88,0xbc,0x55,0xdb,0x6f,0xfc,
- 0xcf,0xb5,0x20,0xc5,0x6c,0xaf,0xf1,0xbf,0x41,0xdb,0xff,0xf1,0xe5,0xbd,0x10,0xe4,
- 0x5a,0x30,0xf2,0xdf,0x98,0xf0,0x51,0xa2,0x25,0x47,0x44,0x19,0xf9,0xef,0x19,0xfe,
- 0xdf,0x07,0xfb,0x1f,0x3c,0xfe,0x2f,0xad,0xff,0x07,0xeb,0xe0,0x6d,0xad,0x23,0x93,
- 0x7f,0x49,0xfd,0x3f,0xea,0xfd,0x0a,0xf2,0xbf,0x37,0xd4,0x4c,0x8a,0x2b,0x6c,0x3e,
- 0x89,0x9b,0xb2,0x0c,0x55,0x89,0xfc,0x67,0x82,0xdb,0x7f,0x71,0x8b,0x5b,0x6c,0x5f,
- 0xd7,0x96,0xb0,0xc3,0x5e,0xe3,0x7f,0x6a,0x01,0x46,0x37,0x28,0xed,0xb1,0xfd,0x8f,
- 0xb6,0xff,0x15,0xf6,0x27,0x5f,0xa3,0xa4,0xf3,0x7d,0xdf,0x65,0x54,0xa9,0xc1,0xef,
- 0x56,0xfd,0x86,0xca,0x29,0xb9,0xcd,0xa2,0x03,0xc8,0xff,0xde,0xf3,0x7f,0xfd,0xec,
- 0xbf,0x58,0x23,0x94,0xda,0xff,0x41,0xe4,0x5f,0xe6,0xff,0x83,0xfd,0xbf,0x7a,0x98,
- 0x99,0x90,0x70,0x77,0x28,0x53,0xc4,0xd8,0x7f,0x99,0xff,0x1f,0xa5,0x16,0xb0,0x86,
- 0xd6,0x5b,0x08,0x7c,0xb3,0x25,0xe9,0x01,0x4d,0x76,0x84,0xe1,0xb8,0xe8,0xaf,0xfa,
- 0x8f,0xff,0x39,0x35,0xb5,0x5d,0xec,0xab,0x7b,0xe8,0xf8,0x7f,0x10,0xfb,0xdf,0x6b,
- 0xfc,0x4f,0x5e,0xfe,0xa9,0x6b,0xc1,0x16,0xca,0x1d,0xbe,0x87,0xa5,0x04,0xea,0xa2,
- 0x77,0xfc,0x1c,0x99,0xee,0xa8,0xab,0x24,0x76,0x69,0xff,0xc5,0x56,0xd5,0xbd,0xd8,
- 0x7f,0x31,0xee,0x20,0x8d,0xff,0x95,0x83,0xcb,0xbf,0x7b,0xb9,0x69,0xf9,0x8f,0x43,
- 0xfc,0xef,0xea,0xa0,0x46,0x86,0xa2,0xa2,0xc4,0xd0,0xc9,0x64,0x4c,0xc7,0x0d,0x99,
- 0xfc,0xd3,0x26,0xd7,0xaa,0xff,0x17,0x82,0xdb,0xff,0x49,0x71,0x83,0x9b,0x5c,0x18,
- 0x4f,0xcc,0x6b,0xf7,0xb7,0xff,0xa8,0x5c,0xd4,0xa2,0x7d,0x76,0x39,0xa8,0xfd,0xe7,
- 0x3b,0x13,0xd0,0xf6,0x9f,0x0b,0xd9,0xf5,0x28,0x94,0x6a,0xc1,0xcf,0xa1,0x97,0x6c,
- 0xcc,0x6f,0xc0,0xc0,0x74,0x95,0xca,0x1f,0x62,0x32,0xaf,0x64,0x91,0x59,0x0f,0xda,
- 0xfe,0x0f,0x09,0xbf,0xee,0xc5,0xfe,0x8b,0x2d,0x42,0xf2,0xf8,0x9f,0xcf,0x2c,0x10,
- 0x12,0x42,0x52,0xf9,0x17,0x72,0x06,0xc1,0xfe,0xef,0x03,0xa6,0x96,0x93,0x1a,0x1a,
- 0x3a,0x45,0x83,0xb6,0xff,0xb2,0xf9,0x1c,0x18,0xd7,0x2e,0x2f,0x7e,0xd5,0x1b,0x59,
- 0x4f,0x7f,0x6e,0x48,0x4b,0xb1,0x2b,0x90,0x4f,0xfc,0xdf,0x59,0xbd,0x53,0xec,0x59,
- 0x0b,0xa0,0xe3,0xff,0x41,0xec,0x3f,0xef,0x7b,0xd2,0xf5,0x7f,0x2e,0x65,0xbf,0x67,
- 0xa5,0x74,0x73,0xb8,0x9a,0xec,0xa9,0x02,0x5c,0xf9,0x97,0x0f,0x18,0x58,0x4a,0xe6,
- 0x1b,0x4d,0x7a,0x83,0xb4,0x54,0xf7,0x4e,0xb3,0xa6,0xed,0xbf,0x98,0xc2,0xb9,0x97,
- 0xf8,0xbf,0xd8,0xf5,0x56,0xea,0xff,0xef,0xf4,0x1d,0xf9,0x53,0xdc,0x13,0x33,0x9c,
- 0xa3,0xc6,0xef,0x06,0xec,0xff,0x9e,0x89,0x24,0x24,0xa6,0x1f,0xc3,0x64,0xa9,0xf6,
- 0xcb,0xff,0x61,0x06,0xab,0xb5,0x8a,0x0f,0xad,0xed,0x8b,0xd5,0x39,0xf2,0xb0,0xff,
- 0x91,0x37,0xd4,0xcf,0xe2,0x6c,0x54,0xf8,0xc0,0x9e,0x62,0x0e,0x27,0xc4,0x77,0x05,
- 0xea,0x65,0xff,0x31,0xcd,0x48,0x67,0x32,0x94,0x4c,0x97,0xe4,0x67,0x37,0xa8,0xfd,
- 0xe7,0x4f,0x9a,0x96,0x7f,0xce,0x21,0xea,0x53,0x28,0x9b,0x66,0xa1,0x35,0x11,0x4d,
- 0x8b,0x93,0xaf,0x59,0xb8,0xf2,0xbf,0x2d,0x2a,0xe5,0x52,0x72,0x2e,0xc3,0x2b,0x5f,
- 0xda,0x6e,0xf7,0x36,0x81,0xb4,0xa6,0x10,0x7d,0xb8,0xbd,0x8c,0xff,0x29,0x5e,0xfe,
- 0x86,0x2c,0xff,0x4f,0xa5,0xd2,0x9c,0x53,0xb8,0x18,0xcc,0x79,0xe5,0x01,0x97,0x88,
- 0xa8,0xf7,0xb3,0x5b,0xa5,0x62,0xe4,0x5f,0xb0,0x13,0xd0,0xff,0x7f,0x8f,0x34,0x26,
- 0xfd,0x7c,0xb2,0x34,0x13,0x22,0x62,0xfa,0xff,0x4a,0x52,0x72,0x99,0x2e,0xec,0xd6,
- 0x9a,0x3b,0xd4,0xed,0x14,0x04,0xbc,0x49,0xe7,0xc3,0xf8,0xf4,0x05,0x69,0xb3,0x06,
- 0x9c,0x1f,0x5a,0xdc,0x67,0xfc,0x4f,0x76,0x37,0x66,0x64,0x38,0xb3,0x18,0x4b,0x24,
- 0x2a,0xf9,0x4a,0xa5,0x92,0xcf,0x7b,0x5b,0x1c,0xd4,0xfe,0x97,0xb8,0x53,0xa0,0xc5,
- 0x2e,0xc9,0xaa,0xa6,0x00,0x41,0xe9,0xa6,0xa1,0xb7,0xb5,0x4e,0x2d,0x91,0x18,0xc2,
- 0x87,0x55,0xa9,0x50,0xbe,0x8e,0x5b,0x17,0xe2,0x07,0xf5,0x2c,0x45,0xf3,0x9a,0xd9,
- 0x14,0x36,0xc5,0x64,0x66,0xf7,0xec,0x66,0x49,0xcb,0x7f,0x52,0xf0,0x14,0xe8,0x5f,
- 0x07,0xb5,0xff,0xa2,0x60,0xb6,0xa5,0xfd,0x7f,0xa8,0x7d,0x54,0xa6,0xb8,0x53,0x69,
- 0x4e,0x35,0xa9,0x6b,0xea,0x9e,0x08,0x23,0xff,0x42,0x9c,0x88,0x1e,0x1d,0x1c,0xec,
- 0xff,0xc0,0xe8,0x15,0xdf,0xa6,0xb2,0x67,0xd9,0x94,0x7d,0xa6,0x94,0x1d,0x10,0xab,
- 0x99,0x74,0xe9,0x71,0x44,0x8b,0x8a,0x76,0x4b,0x1c,0x7c,0x4a,0x4a,0xc6,0xea,0xf2,
- 0xc3,0xe3,0xe6,0x0e,0x60,0xb3,0x04,0xfb,0xda,0x7f,0x09,0xaa,0x5c,0xe7,0xf8,0xda,
- 0x7f,0xba,0x06,0xc3,0x35,0x41,0xd0,0xee,0x32,0x27,0xe4,0xbb,0x70,0x4a,0x29,0xf5,
- 0xea,0x58,0xbe,0x26,0x37,0x18,0x52,0x4e,0xdb,0x91,0xae,0xca,0x84,0x59,0x7a,0x0e,
- 0x1e,0xc2,0x6c,0x50,0xb8,0x60,0x74,0x75,0x2b,0x90,0xfd,0xa7,0x2f,0x8e,0xb0,0xdf,
- 0x35,0xea,0x47,0x2f,0x3a,0xb0,0x22,0xdf,0x94,0x83,0x57,0x88,0xbc,0xc1,0x4d,0x19,
- 0xf9,0x17,0x6a,0x9e,0x74,0x46,0x11,0xd4,0xff,0x07,0x44,0xed,0xf8,0xd7,0xc7,0xd2,
- 0xa3,0xac,0x7a,0xee,0xd3,0xff,0x97,0xb9,0x4b,0x4e,0x55,0x99,0xba,0xdb,0x92,0x94,
- 0x01,0xaa,0x86,0xe8,0x1b,0xb6,0x62,0xa7,0xf2,0xe0,0xe6,0x16,0xe8,0x5d,0xff,0x97,
- 0xb2,0x19,0x95,0x96,0x96,0x20,0xf6,0x9f,0x3f,0x05,0xa6,0x72,0xce,0x9a,0x5d,0x73,
- 0x70,0xf9,0xa7,0x6a,0x13,0x4e,0x64,0x8e,0x1b,0xc8,0x58,0xf3,0x5b,0x95,0xbd,0xf4,
- 0xbd,0x76,0xc7,0xf4,0xab,0xe0,0x43,0xae,0x9b,0xf4,0xee,0x06,0x8d,0xff,0x33,0x83,
- 0xbe,0x12,0xe8,0x6e,0xa4,0x9e,0xd4,0x52,0x29,0x61,0x51,0x31,0x88,0x44,0x9d,0xb1,
- 0x17,0x6d,0x61,0x4e,0x8f,0x1a,0xf3,0xd8,0x3e,0x08,0x4a,0x09,0x81,0xfc,0x0f,0x86,
- 0x39,0xe9,0x1f,0xa0,0x4b,0x69,0xdc,0xc2,0xec,0xf8,0x1f,0x42,0x77,0x3e,0x66,0xd8,
- 0x20,0xa7,0xa9,0x9c,0xb2,0x4c,0x62,0xe6,0x26,0x5d,0xae,0x24,0xe1,0x7f,0x8b,0x26,
- 0x3b,0x66,0x27,0xdb,0x9f,0x6f,0x17,0xf6,0xdf,0xf4,0x2a,0x3b,0x74,0x3c,0x2f,0x48,
- 0xfd,0x5f,0x19,0x63,0x8a,0x38,0x3b,0xea,0x06,0x1b,0x00,0xa4,0x63,0x5f,0x82,0x60,
- 0xc8,0xa1,0xb4,0x89,0xa3,0xe4,0x46,0x18,0xb9,0xf6,0xef,0x2d,0xcf,0x1e,0x49,0xbe,
- 0xc7,0x4e,0xe8,0xf8,0x1f,0x5f,0x67,0x61,0x63,0xf3,0xb4,0x3e,0x0b,0xe4,0xff,0x0b,
- 0x25,0x82,0x76,0x8f,0xbc,0xd6,0x41,0x4a,0x98,0x25,0x1a,0x9b,0x8a,0x19,0x78,0xe1,
- 0x09,0x76,0x3a,0x17,0x3e,0x6c,0x49,0xab,0x99,0x80,0x97,0x1a,0xb0,0xe8,0x31,0x09,
- 0x63,0xba,0x22,0x28,0x67,0x76,0xfc,0xaf,0x28,0x57,0x78,0xd8,0x91,0xf5,0x1c,0x71,
- 0xa6,0xed,0xa0,0x30,0xe4,0x0d,0x5d,0x6c,0xa5,0xe1,0x3f,0x6b,0x29,0x36,0x06,0xde,
- 0xa5,0xc5,0xa0,0x47,0xfb,0xbf,0x1f,0x94,0x46,0x4a,0x52,0xd1,0x84,0x40,0xf6,0x9f,
- 0x35,0xf2,0x06,0xe3,0x3a,0xb1,0xba,0x81,0xf6,0xc8,0x83,0x0d,0x7c,0x42,0xf7,0xff,
- 0xd7,0xec,0xef,0xe8,0xaa,0x2d,0x3d,0x59,0xa1,0x00,0x73,0x6b,0x7a,0x28,0x0a,0xd6,
- 0xfe,0xf3,0x12,0xcb,0x74,0xe0,0xd4,0xa8,0x1f,0x82,0xc9,0x3f,0x97,0x01,0xb0,0x49,
- 0x4f,0x6b,0xe0,0x65,0x25,0xd0,0x75,0x1a,0x31,0xa7,0x93,0x72,0x82,0xbc,0x8c,0x0a,
- 0x56,0xfe,0x79,0xff,0x86,0x2e,0x1e,0xb2,0x66,0x29,0xc0,0x0f,0xff,0x29,0xa3,0xe2,
- 0x73,0xed,0x3e,0x51,0x26,0x64,0x66,0xd8,0x9b,0x97,0x65,0xca,0x82,0x1b,0x38,0xa4,
- 0x42,0xca,0x51,0x5e,0x0e,0x28,0xcf,0x6d,0xac,0xec,0x7f,0x98,0x26,0x5b,0x0b,0xa6,
- 0x5b,0x01,0xfd,0xe6,0xff,0x44,0xe8,0x9a,0x7c,0x6b,0x54,0x37,0x5b,0x5a,0xce,0x03,
- 0xd9,0x7f,0x76,0xd0,0x43,0xae,0x71,0x93,0xc9,0x00,0xa2,0x9b,0x06,0xd8,0x42,0xa9,
- 0x4a,0xc6,0x5c,0xe6,0x2e,0x86,0xdb,0xc6,0xcd,0x14,0x7c,0x5f,0x0f,0x69,0x8a,0x9f,
- 0xcb,0x4d,0x68,0x26,0xf1,0x60,0xec,0x3f,0x37,0x51,0x13,0x23,0x49,0x4c,0xa5,0x25,
- 0x90,0xff,0xcf,0x87,0x47,0x98,0xe0,0x00,0xa5,0x35,0x28,0x7b,0x1d,0xe7,0xfb,0x2a,
- 0x53,0x29,0x64,0x94,0x9f,0xcf,0x4d,0xe7,0xc6,0x7a,0x5a,0x4c,0x57,0x8f,0xa0,0x23,
- 0x8a,0x00,0x53,0x53,0x4c,0xac,0x95,0x21,0x5d,0x6d,0xcb,0x6a,0xe3,0xdc,0xfc,0x1f,
- 0xec,0xec,0xa0,0xec,0xa8,0x9d,0x9e,0xc9,0xa3,0x0d,0x21,0xa7,0x31,0xe8,0x69,0xa0,
- 0x7a,0x0e,0x0e,0xa4,0xb3,0x13,0xe4,0xd0,0x5d,0x81,0xfc,0xed,0x7f,0x21,0x5d,0x95,
- 0xd9,0x5d,0xdd,0xa7,0x9b,0x4d,0x30,0xfb,0x4f,0xd7,0x8a,0xf9,0xcb,0x97,0xa6,0x0a,
- 0xb3,0x49,0x1f,0x31,0xdb,0xce,0x66,0xa4,0x8a,0x05,0xc9,0xd5,0xa5,0xbd,0x1c,0x57,
- 0x61,0x30,0x3d,0xaa,0x7a,0x0d,0x0a,0xd8,0x64,0x35,0xb9,0xd0,0x4c,0xe2,0xc2,0x69,
- 0xfc,0x1c,0xbd,0x20,0x23,0xb0,0x4c,0x3a,0x4f,0xa0,0xf8,0x1f,0x37,0xf0,0x28,0x3b,
- 0x24,0x39,0x75,0xdd,0x68,0x69,0x2e,0xb2,0x07,0xaa,0xd2,0x83,0x03,0x99,0xd2,0x35,
- 0x10,0xa5,0x18,0x7d,0x25,0x98,0x26,0x92,0x5e,0x03,0xa7,0x01,0x1c,0xf2,0xb9,0xa8,
- 0x4b,0xa9,0xc4,0xba,0xbc,0xa4,0xf1,0xf3,0x7f,0xc4,0xb3,0xde,0x72,0x0d,0xb6,0xbf,
- 0xbe,0x77,0x1f,0xa8,0xee,0xb6,0xdc,0xf8,0xff,0x6a,0xc5,0x13,0x2d,0xbe,0x65,0x8d,
- 0xa3,0xcd,0x06,0x29,0x3d,0xb7,0xb1,0x47,0xfd,0x5f,0x2b,0x29,0xc9,0x84,0x60,0x08,
- 0x19,0x97,0x87,0x4e,0x28,0x0e,0x66,0xff,0x95,0xb8,0xd7,0x22,0x3a,0xcc,0xb7,0x9b,
- 0xa4,0x5c,0x6b,0xaa,0x32,0x63,0xa1,0xb2,0x85,0xd2,0xe8,0xe2,0x11,0x09,0xf8,0xe3,
- 0x52,0x47,0xa9,0x9b,0xe1,0x46,0xd2,0xe9,0xc6,0x72,0x25,0x3e,0xd3,0xe3,0x0a,0xad,
- 0xb1,0xf7,0x72,0x82,0x4b,0x39,0x74,0xdf,0xb1,0xf6,0x1f,0x5d,0x4a,0x4f,0xca,0x46,
- 0x98,0x64,0x2b,0x46,0x69,0x05,0xf3,0xff,0xf1,0x58,0x2b,0xde,0x6f,0xac,0x3f,0x48,
- 0xdf,0x1b,0x3a,0x2e,0xc0,0x8e,0x82,0x44,0x0f,0xfc,0x48,0x65,0x27,0xf2,0xd3,0xb9,
- 0xc6,0x29,0x05,0xc0,0x0e,0x16,0xdb,0x67,0xba,0x18,0x80,0x82,0xad,0xb0,0x3b,0x77,
- 0x70,0x4e,0xf3,0xb5,0x1d,0xc2,0xfc,0x9f,0xa5,0xaa,0x3d,0x35,0x95,0x31,0xca,0x0a,
- 0x68,0x5c,0xf3,0xd6,0x5a,0xa5,0x1b,0xd0,0x27,0x3d,0x93,0x3c,0x42,0x67,0xf7,0x7b,
- 0x7e,0x9b,0xa1,0x65,0x6c,0xe8,0x37,0xdc,0x1c,0x82,0x6e,0x05,0xb7,0x47,0xfd,0x9f,
- 0x54,0x66,0xa3,0x43,0x0d,0x36,0x2c,0x47,0x8b,0x3f,0x93,0x2c,0x12,0xd0,0xfe,0x2b,
- 0xf1,0x84,0x69,0x1f,0xa7,0xd8,0x70,0x12,0xb5,0x87,0x1a,0x32,0x13,0x8c,0x34,0xb2,
- 0x71,0x0f,0x62,0xd3,0xd3,0xdc,0x65,0x36,0x62,0x74,0x31,0xf6,0x4a,0x31,0x33,0x12,
- 0x53,0x88,0xf1,0xd6,0x8d,0x46,0x82,0xae,0x08,0x71,0x86,0x3d,0xd9,0xd2,0x5d,0x25,
- 0x12,0xc9,0xce,0xc9,0x5a,0xdf,0xed,0x8d,0xda,0xc7,0xac,0x36,0xd8,0x5c,0xcb,0x65,
- 0x7a,0x5f,0x01,0xfd,0x7f,0x74,0x75,0x5a,0xf6,0x0d,0x1e,0x61,0x2f,0x01,0x93,0x6a,
- 0x10,0x79,0x86,0xde,0x9c,0xa7,0xa9,0x8c,0x1a,0xb5,0x0e,0x1d,0xc9,0x13,0xa6,0x73,
- 0x2e,0x39,0x0a,0x54,0xcd,0x30,0x77,0x41,0xa8,0x4f,0x00,0xfe,0x88,0x7d,0xf3,0x4a,
- 0xa1,0x58,0x8f,0x6a,0xb8,0x74,0xfe,0xcf,0x5c,0x2c,0x53,0x18,0xad,0xf0,0x9d,0x06,
- 0xe9,0x3e,0x28,0x6c,0x6c,0x3a,0xda,0x9a,0x31,0xf1,0x20,0x1c,0x91,0x1a,0x6d,0xda,
- 0xa8,0x01,0xfe,0x1a,0x38,0x27,0xce,0x7a,0xe2,0x97,0x92,0xfb,0x9e,0x5e,0xdc,0x95,
- 0xf4,0x1e,0xf6,0xdf,0x0e,0x66,0xc5,0x8b,0xad,0x82,0x6e,0x0d,0xb1,0xa1,0x17,0xf2,
- 0x4c,0x69,0x61,0x7a,0xca,0x04,0xb4,0xff,0xf8,0x14,0x26,0x47,0x0b,0x99,0xd8,0x84,
- 0xcc,0x79,0x8a,0x17,0x13,0x99,0x42,0xa7,0xc2,0x56,0x57,0xb8,0x8c,0x75,0xbb,0x97,
- 0x44,0x29,0x35,0x99,0x89,0x18,0xc6,0x14,0x3a,0xae,0x91,0x46,0x8d,0x51,0xc5,0xf4,
- 0x78,0x21,0xcc,0xde,0x93,0xad,0x06,0x39,0x13,0xc3,0x6c,0x64,0x26,0x53,0xf1,0x12,
- 0xed,0xbf,0xb4,0x79,0x19,0x19,0xcb,0xb5,0x32,0x85,0x42,0xa6,0x36,0x59,0x4c,0x53,
- 0xc2,0xc4,0xdb,0x7f,0x7c,0xd3,0x2b,0x9d,0x82,0x16,0xe3,0xd2,0xbf,0x59,0x49,0x0a,
- 0xe8,0xff,0x93,0x63,0x3c,0x50,0xd3,0x84,0x4b,0xc0,0x56,0xef,0x9a,0xcc,0x00,0x33,
- 0x63,0x93,0x05,0x93,0xdc,0x9d,0x0e,0xd3,0x61,0x6b,0x92,0x8a,0x3f,0x49,0xa6,0x73,
- 0x4f,0x4f,0xa0,0x82,0x97,0x69,0x85,0xd8,0xbb,0xc3,0x77,0xd0,0x04,0x7a,0xc0,0x9b,
- 0x82,0xd2,0x44,0xa6,0xf7,0xe5,0xf3,0x99,0xff,0x5b,0xd2,0x69,0x48,0xa3,0x57,0x6b,
- 0x3f,0xc3,0xfe,0x98,0x2c,0x4e,0x14,0xb9,0xd1,0x6c,0xa8,0x6a,0xe0,0x76,0x80,0x1e,
- 0x03,0x54,0xa4,0x8f,0x2e,0x67,0xac,0xfc,0x7b,0x63,0x62,0x96,0xd2,0xd1,0xd0,0xc4,
- 0x44,0x31,0xca,0xe5,0xdc,0xb3,0x53,0x70,0x04,0xb5,0xff,0x3e,0xa7,0xdc,0xe3,0x37,
- 0x6e,0x8e,0x1b,0xdd,0xbd,0x1c,0xa5,0x78,0x32,0x84,0xaf,0x05,0x3f,0xad,0x37,0x55,
- 0xd1,0x37,0x39,0x39,0x8a,0x47,0x8b,0x13,0x13,0x21,0x67,0xce,0x70,0x26,0x7c,0x2f,
- 0x9b,0xff,0xdb,0x39,0x16,0x2f,0xd1,0x51,0x1e,0xf1,0x15,0xcf,0x27,0xb4,0x49,0x6f,
- 0x3b,0xa8,0xff,0xef,0xb7,0x35,0xae,0xcd,0x9e,0x3b,0xab,0x78,0x37,0x84,0xae,0x02,
- 0x9b,0x83,0xfa,0x3d,0xda,0xd7,0x91,0xc8,0xbf,0x7c,0x3f,0xb2,0x2e,0xe2,0x80,0x1c,
- 0x7e,0x88,0x9c,0xd4,0x6a,0xbf,0xd1,0x58,0x29,0xfb,0x5f,0xea,0x39,0xbc,0x46,0x95,
- 0xcb,0x1b,0xea,0xd7,0xdd,0x8d,0x6e,0xb0,0x92,0x98,0x14,0x11,0xa9,0xfd,0xe7,0xe2,
- 0xff,0x3e,0xda,0xca,0x83,0x35,0x16,0x01,0xec,0x7f,0xc9,0xff,0xd0,0xd2,0x3d,0x7a,
- 0xf5,0x73,0x75,0xd2,0x48,0xbf,0x0e,0x70,0x4c,0x14,0x2d,0xdb,0xeb,0xda,0x31,0x2d,
- 0x0e,0xfe,0x8d,0x39,0x0a,0xd5,0x98,0x47,0xdb,0xff,0x1e,0x9b,0xe6,0xa6,0x27,0x0a,
- 0x22,0xff,0xbd,0x0e,0x94,0x9f,0xe6,0x6b,0xad,0xdf,0x4d,0x66,0x5c,0x1b,0x26,0x2f,
- 0xa1,0xd7,0x6e,0x82,0xcf,0x30,0x01,0x30,0x05,0x1e,0x71,0xa0,0xff,0xb5,0xa3,0x24,
- 0x2a,0xdd,0xea,0x71,0x07,0xf9,0xb1,0xfa,0xb8,0xd1,0xbc,0xc5,0x9b,0x4d,0x57,0x90,
- 0x83,0xf4,0x18,0x0c,0xe4,0xff,0x4b,0x6a,0x2b,0x0c,0xac,0x93,0x12,0xc4,0xfe,0xa7,
- 0x13,0xbe,0xc7,0x96,0xe7,0x9a,0x28,0x28,0xf8,0x42,0x19,0xe9,0x77,0x82,0xcc,0x2c,
- 0x89,0x46,0xaf,0xe1,0x42,0xd8,0xc0,0x62,0x5d,0x16,0xcf,0xb1,0x71,0x75,0x10,0xad,
- 0x24,0xaa,0x72,0xb3,0x8a,0xe1,0xe2,0xf2,0x01,0xea,0xff,0xa5,0x8a,0xff,0x79,0x09,
- 0x29,0x7b,0xbd,0xd5,0x9a,0xc2,0x27,0x06,0xd0,0xf6,0x7f,0xd2,0x3f,0x5f,0x55,0x3a,
- 0x42,0x0c,0xe0,0x03,0x33,0xc8,0xbf,0xcf,0xf0,0x7a,0x2c,0x94,0xfc,0x8f,0xad,0x0f,
- 0xf9,0xde,0xc1,0x6e,0x9b,0x5f,0xd1,0x98,0xeb,0xe9,0x30,0x33,0x39,0xfd,0x8d,0x7e,
- 0xce,0x82,0xe2,0x27,0xff,0x9c,0xfd,0x5f,0xf6,0x5f,0x9f,0xd0,0x62,0x9d,0x94,0x00,
- 0xf6,0x7f,0x2c,0xd2,0xf2,0x39,0xb8,0xa8,0x3e,0x55,0xf0,0x13,0x26,0x3e,0x2b,0xae,
- 0x9f,0x82,0x0b,0xb1,0x77,0x62,0x3d,0xea,0xbf,0x28,0xd7,0x68,0x5a,0x2e,0xfa,0x2e,
- 0xe9,0x7a,0x0a,0xcc,0xf8,0x1f,0x1d,0xbf,0x43,0xe1,0x33,0x88,0x02,0xd8,0xff,0x52,
- 0x3b,0xe6,0x7b,0xe7,0xc4,0x79,0x5f,0x9b,0x7e,0x57,0xd2,0xde,0x07,0x57,0x65,0xa2,
- 0xbc,0xcd,0x8e,0xe6,0xeb,0x7a,0x16,0xa1,0xf6,0x3f,0x00,0x4c,0x13,0x55,0xaf,0x94,
- 0x31,0x17,0xda,0xfe,0xeb,0x86,0x5f,0xf2,0x40,0x52,0x13,0xd7,0x34,0xf2,0xfe,0xb7,
- 0x3b,0xde,0x62,0x4a,0xc7,0x76,0x00,0xf9,0x57,0xdc,0xea,0x6c,0x0f,0xfb,0x3f,0xe4,
- 0xbb,0x36,0xa6,0xc4,0xa7,0x9e,0x05,0xb0,0xff,0x5d,0x9d,0x6e,0xb2,0xa4,0x48,0xaf,
- 0xa1,0x05,0x57,0xe5,0xe5,0x32,0xc7,0x17,0xca,0x3e,0x01,0x8e,0x14,0x9f,0xc1,0xda,
- 0x88,0xfa,0x2e,0xcb,0x77,0xe0,0xad,0xe7,0xfc,0x2e,0x9e,0x2b,0xb4,0xb4,0xfd,0xef,
- 0x34,0x47,0xe5,0xc7,0x2c,0x8c,0xb4,0x14,0x40,0xfe,0xe3,0x6d,0xd5,0xcf,0x3d,0x2a,
- 0x4a,0x6c,0x8b,0x5a,0xf3,0xaf,0x41,0x96,0xe6,0xb8,0x15,0x68,0xfb,0x3f,0x3a,0xb5,
- 0xea,0x53,0x81,0xfa,0x2c,0xe4,0xfe,0x0f,0x02,0x33,0xc9,0x5f,0xcf,0x3e,0x63,0x0e,
- 0x8c,0xfc,0x4f,0x19,0x72,0x87,0x2f,0x24,0xd5,0x24,0x6a,0xd6,0xcf,0x3c,0x26,0x3b,
- 0xac,0x1d,0x1e,0xcc,0xff,0x9f,0x3a,0x43,0x7d,0xcd,0xca,0x7f,0xb6,0x57,0x88,0x22,
- 0xdd,0xe2,0x4f,0x38,0x88,0xfd,0xd7,0xa7,0xd4,0x84,0x64,0xab,0xe9,0x55,0xb2,0xa4,
- 0xa4,0x41,0x10,0x95,0x7d,0xa1,0x5a,0x15,0x89,0xf6,0x3a,0xb3,0x09,0xb1,0x01,0xa6,
- 0xec,0x2b,0xd5,0x42,0xb6,0x9b,0xb1,0xe5,0x73,0x99,0xdd,0xa6,0x0e,0x2e,0xfd,0x41,
- 0x93,0x1d,0x4c,0x3a,0xc6,0xe7,0x7e,0x06,0xf1,0xff,0xdb,0x53,0xea,0xa2,0x74,0xef,
- 0x13,0xf2,0x9a,0xe5,0x9a,0x5f,0x8d,0x29,0xdd,0xda,0xe4,0x16,0xa5,0xe5,0xbf,0x83,
- 0xd6,0x94,0x1d,0xb4,0x12,0x0d,0x62,0xc2,0x00,0x17,0xc6,0x7e,0xf7,0xea,0x32,0xe2,
- 0x42,0xd5,0xa8,0x71,0x5f,0x9e,0x66,0x46,0xbc,0x0f,0x92,0x5e,0x03,0x36,0x91,0x39,
- 0x99,0x60,0xa7,0xab,0x7c,0x79,0x0f,0x12,0xff,0x0b,0x54,0xff,0x6f,0x36,0x96,0xf9,
- 0x66,0x49,0x77,0xfd,0xa2,0xd8,0x55,0xc0,0xd7,0xfe,0x53,0x39,0xca,0x75,0xb4,0xd5,
- 0xc2,0x19,0x7e,0xa3,0x29,0x67,0x63,0xe2,0x29,0x96,0xe6,0x24,0x65,0xbf,0x3e,0x7a,
- 0xc1,0x6f,0xdc,0x8f,0x68,0x4c,0xe6,0xc2,0x1a,0x8b,0x3e,0x27,0x22,0xc9,0x76,0x6f,
- 0x54,0xa5,0x6a,0xcf,0xd5,0x14,0xfc,0xfc,0xdf,0xe5,0xaa,0x70,0xbd,0x25,0xdd,0x0c,
- 0x03,0xb4,0xff,0x91,0x9c,0x8c,0x6d,0x71,0x64,0xb3,0xf8,0xa4,0x5f,0x89,0xa8,0x0f,
- 0x3d,0xc3,0x2f,0x8c,0x97,0xcf,0x89,0x72,0xcc,0xc9,0xff,0x94,0x2e,0x1e,0x74,0x29,
- 0x07,0x3d,0x7f,0x06,0x83,0xb1,0xff,0x81,0xe4,0xbf,0x93,0x76,0xb1,0x52,0xf9,0x75,
- 0x76,0xd8,0xa0,0x52,0x72,0xb2,0x21,0xf6,0x1a,0x70,0x50,0xb7,0xe9,0xb1,0x5d,0xc8,
- 0xad,0x8e,0x0e,0x89,0x2e,0xdb,0x7a,0x32,0xdd,0x17,0x2a,0xc2,0x30,0x41,0x7d,0x2b,
- 0x24,0x7f,0x18,0x4b,0xad,0x62,0x57,0x48,0x1e,0x48,0x9e,0xd3,0x24,0xde,0x8e,0x9f,
- 0xfd,0x6f,0x74,0xdd,0x1d,0xa4,0x48,0x36,0xe1,0x4e,0xed,0x29,0x7a,0x93,0x9f,0x6d,
- 0x79,0x03,0x17,0xa8,0x6b,0x4c,0x2b,0x7a,0x29,0xd4,0x91,0xbb,0x55,0x6a,0xa4,0x96,
- 0x8b,0x0a,0xba,0x22,0x1d,0xaa,0xf9,0x8c,0x81,0x30,0x65,0x2e,0x16,0xd3,0x42,0xaa,
- 0x4d,0xb7,0xd8,0x92,0x68,0x0b,0xb5,0x91,0xff,0xac,0x70,0xca,0xdd,0x39,0x67,0x49,
- 0x21,0xfd,0x51,0x6d,0xcf,0x31,0x1a,0x23,0xda,0x92,0x1c,0x44,0x86,0xba,0xf8,0x74,
- 0xd2,0x34,0x75,0x71,0xac,0x19,0x9a,0xd4,0x0c,0x3b,0x49,0x51,0x7a,0x62,0xd8,0xbf,
- 0x44,0x4c,0x45,0x5a,0xdc,0x55,0x28,0x25,0xab,0xb2,0xdc,0x68,0x33,0xea,0xed,0x9e,
- 0x24,0x8a,0xaa,0x4b,0x73,0x4c,0x25,0x20,0x1e,0xea,0xdb,0x78,0x05,0x70,0xf4,0x48,
- 0x51,0xf5,0xc1,0x28,0x47,0x30,0xf8,0x55,0xb7,0xef,0xaa,0xa9,0xe5,0x2f,0x25,0xc7,
- 0xe2,0xa5,0x74,0x3a,0x59,0xac,0x66,0xfa,0x35,0x21,0xd4,0xb5,0xa1,0x62,0xb4,0x9b,
- 0x8e,0x3f,0x8b,0x16,0x4f,0xcd,0x25,0xda,0xb2,0xc1,0x2c,0x54,0x6b,0x27,0xbd,0x28,
- 0x47,0xbc,0x9b,0xad,0x97,0xad,0x03,0xc2,0x7f,0xb2,0x92,0xa6,0xea,0x6b,0x89,0xea,
- 0x25,0xbc,0xd3,0x52,0x1c,0xef,0x35,0xd7,0xd2,0xe4,0x47,0xe9,0x67,0xff,0xa9,0xe3,
- 0x71,0x56,0x34,0xb4,0x7c,0xe8,0x7b,0xe9,0x78,0x1c,0x6d,0xae,0xca,0x0d,0xc5,0xd5,
- 0x6c,0x20,0xc9,0xee,0x92,0xdf,0x8a,0xf9,0x42,0x8f,0x78,0x54,0xd3,0x6c,0x2f,0xe6,
- 0x27,0x52,0xdd,0xb1,0x34,0x3e,0xae,0x6e,0xaa,0x98,0xef,0x34,0x7a,0x15,0x61,0x35,
- 0xb2,0x58,0x2d,0x26,0xf1,0x69,0xa0,0xa5,0xa3,0xa9,0xcb,0x95,0xd1,0xed,0xba,0xdf,
- 0xf2,0xe6,0xf0,0x0a,0xda,0x32,0x3a,0x08,0x7c,0xc6,0xd1,0xd0,0x5c,0x42,0xf3,0x16,
- 0x95,0x8c,0xff,0xdf,0x8c,0x74,0xce,0xa5,0x92,0xf8,0x98,0xbb,0x21,0xfe,0x7c,0x9c,
- 0x33,0x2e,0x3b,0x37,0x3e,0x52,0xa6,0x17,0x50,0xa9,0x12,0x61,0xef,0x42,0x6d,0xd4,
- 0xe6,0xc8,0xd6,0xe2,0xdd,0xe8,0xc4,0x56,0xcf,0x73,0x42,0xec,0xe0,0x43,0x4d,0x92,
- 0xb3,0xfa,0x5e,0x6a,0xa2,0xa5,0xf9,0xf8,0x0a,0xde,0x3d,0x28,0xdb,0xd7,0xb4,0xa9,
- 0x77,0xaa,0x67,0xc8,0x6e,0xc6,0x92,0xc5,0xa1,0x25,0x88,0xfc,0x0d,0x0c,0x13,0xff,
- 0xdf,0x43,0xe2,0x94,0x6a,0x96,0x23,0x8d,0x75,0xdd,0xd8,0x0c,0xb4,0x74,0xd3,0xd0,
- 0x23,0x8d,0x06,0x2a,0x45,0xea,0x35,0x54,0xd8,0x2a,0xda,0xe9,0x7a,0x03,0x95,0x51,
- 0xd3,0x7f,0xa7,0x7e,0xf6,0xdf,0x67,0x8b,0x26,0x3a,0xe7,0x88,0x7c,0x73,0x46,0x3d,
- 0x42,0x4e,0xb0,0xff,0x71,0x35,0xc9,0xb5,0xc3,0x0b,0x1b,0x41,0xae,0x86,0xba,0x43,
- 0xae,0x5d,0xa4,0x1e,0x60,0xdb,0xe8,0x20,0xf0,0xb2,0x7a,0x9d,0xdb,0x32,0x6d,0xff,
- 0xa9,0xfe,0x5b,0x9b,0x78,0xcb,0xbd,0x2e,0xcf,0x20,0x34,0x0d,0xb3,0x8c,0xf7,0x1d,
- 0xe8,0xa4,0x48,0x89,0xc0,0x37,0xc7,0x54,0x7b,0x78,0x0a,0x52,0xec,0x92,0x27,0x19,
- 0x0f,0x0d,0xe8,0x0f,0x6d,0xf0,0xd8,0x9c,0x93,0x9b,0x12,0x3f,0xfb,0xff,0x26,0xa3,
- 0xf7,0xfc,0x3f,0xc0,0xcd,0x03,0x3b,0x11,0x5b,0xaf,0xce,0xa5,0x37,0x05,0x83,0xd9,
- 0xff,0x37,0x2c,0x39,0x90,0x7f,0x80,0xc0,0x4c,0x1a,0xcb,0x75,0xcd,0xb5,0x97,0xb8,
- 0x99,0x6a,0x55,0x37,0x89,0xfd,0xf7,0xeb,0xfe,0x0c,0xdc,0x74,0xb0,0x1d,0x46,0xe2,
- 0x7c,0x30,0x79,0x44,0xab,0x8a,0x8d,0xd7,0x6f,0x5e,0x6e,0x12,0xfb,0x4f,0xb7,0xff,
- 0x81,0xfd,0xbf,0xa9,0x59,0xe7,0xf2,0xa8,0x42,0xa3,0x6e,0x0c,0xb7,0xde,0xc8,0x56,
- 0xa3,0xa5,0x9b,0x6a,0x34,0xd5,0x9b,0xd0,0xfe,0x83,0xfc,0xdf,0xdc,0x08,0x73,0x4b,
- 0x8d,0x15,0xab,0x43,0xad,0xa1,0xc9,0x5c,0xc8,0xee,0x91,0x1a,0x70,0x44,0xed,0xeb,
- 0x8a,0x3a,0xa5,0x5a,0x4c,0xed,0x4d,0x68,0x6f,0x12,0xfb,0x4f,0xc7,0xff,0x06,0xf1,
- 0xff,0xc9,0x05,0xc6,0xd7,0xf8,0xcd,0x7b,0x69,0x6e,0x3a,0xd6,0xfd,0xfb,0x7f,0xbd,
- 0x51,0x2c,0x44,0xb3,0x95,0xf3,0xd8,0x53,0x06,0x18,0xd8,0xff,0x1e,0xb4,0x9d,0x4b,
- 0x3c,0x91,0xcb,0x09,0xa3,0x38,0x03,0x6f,0x54,0xfc,0x7b,0x6c,0xd9,0xdc,0xf0,0xc3,
- 0xa9,0xed,0x62,0xfc,0x7f,0x1f,0x6e,0x42,0xfb,0x1f,0x5c,0xfe,0x17,0xa9,0xb5,0x7a,
- 0x8e,0xd4,0x0a,0xbc,0x91,0x50,0xab,0x7d,0xe4,0xbf,0xd7,0x90,0xd3,0x37,0x06,0x54,
- 0x27,0x92,0xbd,0xd5,0x56,0xc0,0xfe,0xf7,0xc0,0x2f,0xff,0x1f,0x78,0x63,0x63,0xf6,
- 0x1a,0x33,0x46,0x91,0x4e,0xd9,0x75,0x63,0x01,0xf6,0x7f,0x40,0x76,0x57,0xff,0xf7,
- 0xeb,0xff,0x07,0xbc,0xc1,0xd9,0x11,0x7b,0x52,0xd1,0x88,0x33,0x44,0xdf,0x60,0xec,
- 0x62,0xfe,0x1f,0x1f,0xc0,0xfe,0xf7,0x00,0xec,0xff,0x9b,0x15,0xb5,0xd6,0x2b,0x08,
- 0x98,0xbc,0xe1,0x33,0x80,0xc0,0xfe,0x0f,0xc6,0xde,0xed,0x3f,0xc8,0xff,0x9b,0x8b,
- 0x75,0x79,0x8f,0x71,0xc2,0x0d,0x3f,0xa0,0xe2,0xfe,0xf9,0xff,0x60,0xff,0x7b,0x00,
- 0xf2,0xff,0x26,0xa6,0xd9,0xc8,0x47,0x65,0x0d,0x01,0xa5,0x6e,0x6e,0xf4,0x46,0x17,
- 0x04,0x66,0xfc,0x3f,0x6d,0x2f,0x5b,0xba,0x49,0xec,0xff,0xee,0xf2,0x7f,0xa1,0xfe,
- 0xff,0xe6,0xc6,0x5c,0xab,0x14,0x93,0xce,0xa0,0x34,0xa5,0x52,0x29,0x9d,0x3c,0x33,
- 0x17,0x2b,0xec,0x53,0x77,0xd0,0xab,0x0a,0xd8,0xff,0xc1,0xd8,0x5d,0xfe,0x2f,0xd8,
- 0xff,0x37,0x3d,0x4d,0xb3,0x51,0x58,0xad,0x25,0x12,0xb1,0x6c,0x47,0x6b,0xfb,0xf4,
- 0x6c,0xbf,0xf1,0xe8,0x31,0xfe,0xef,0x80,0xd0,0xf2,0xcf,0x0f,0x57,0xff,0xe6,0xa1,
- 0x09,0xfe,0x3f,0xf0,0x26,0x62,0xff,0xea,0xff,0xed,0x9b,0xc3,0xfe,0x83,0xff,0x0f,
- 0xbc,0x89,0x68,0x56,0xa3,0x2e,0xa9,0xed,0xbd,0x6c,0x89,0xae,0xff,0xdf,0xf0,0xcd,
- 0x9e,0xbb,0x67,0x77,0xf6,0x5f,0xf3,0xae,0x72,0x74,0xa8,0xff,0xe2,0x00,0x70,0x8d,
- 0x50,0x37,0x55,0x43,0xdd,0x34,0x54,0xfc,0xd8,0xd3,0x86,0xda,0xc9,0x6e,0x3a,0x3d,
- 0x86,0x9f,0x63,0xe9,0x40,0xa3,0xa1,0xbf,0x31,0x99,0x4f,0x8f,0x3d,0x83,0x4f,0x33,
- 0xdd,0x4d,0x77,0x7b,0xcf,0xb9,0xce,0x60,0xe0,0xeb,0x4c,0x2e,0xf3,0xe6,0x9b,0xf7,
- 0xda,0x00,0x37,0x31,0x4d,0x3d,0xa2,0xeb,0x65,0xfc,0x2c,0x97,0x03,0xcc,0x85,0xf4,
- 0x46,0x65,0xc7,0x3e,0x4d,0xfc,0x02,0x92,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x4d,
- 0x85,0xaa,0x1a,0x23,0x91,0x76,0x41,0xc3,0x14,0xe0,0x79,0xd3,0x5f,0x87,0x5d,0x9c,
- 0xbf,0xfd,0x1f,0xb1,0xd4,0xbe,0xd8,0xbe,0x48,0xb0,0xff,0x79,0xfc,0x95,0xe4,0x9d,
- 0x0f,0x7d,0x17,0xb8,0x86,0xac,0xbf,0xe7,0x71,0xa3,0xd9,0x6c,0x5e,0x6f,0x29,0xdd,
- 0x77,0x88,0xd4,0x6b,0xd9,0x44,0x35,0x17,0x8a,0x76,0xd3,0x25,0x00,0xd8,0x3b,0xf1,
- 0x67,0x9f,0x7e,0xe5,0x13,0xef,0xba,0xed,0xde,0x93,0x27,0x4f,0x1e,0x27,0x0f,0xeb,
- 0xc5,0x1f,0xb2,0x04,0xf5,0x9f,0xfd,0xc9,0xfe,0x9a,0xfe,0x51,0xfa,0xd1,0x5d,0x9e,
- 0xdd,0xce,0xf1,0x93,0xec,0x92,0xf4,0xcf,0xb2,0xbd,0x49,0xd6,0x42,0x6f,0x7f,0xee,
- 0xcf,0x9e,0xfb,0xd4,0x6f,0xde,0xf3,0xde,0x77,0x14,0x4e,0xbf,0xc7,0xdc,0x7c,0x93,
- 0xcc,0x80,0x6e,0x14,0x86,0x90,0xd4,0xc7,0x4b,0x0a,0x00,0x5c,0x05,0x9e,0xbd,0xe3,
- 0xf7,0x3e,0x71,0xdb,0xd7,0xcf,0x9f,0x47,0xcf,0xdb,0xd0,0x83,0xbc,0x7c,0x1d,0x3d,
- 0xbf,0x8e,0x9e,0xe8,0x05,0xbd,0xb3,0xdf,0x5b,0x9f,0xbd,0xff,0xf7,0x9e,0x77,0xff,
- 0x39,0xdf,0x93,0xb7,0xee,0xc2,0xee,0x4a,0x5f,0xc7,0xdb,0xb0,0x36,0x69,0x3d,0x98,
- 0xed,0xd8,0xdf,0xdf,0x4b,0x76,0x46,0x7d,0x6f,0xaf,0xe7,0x7c,0xbe,0xd7,0x5a,0x84,
- 0xfa,0xfd,0xfc,0xbd,0xe8,0x89,0xbf,0xb0,0x0e,0xfc,0xeb,0xd6,0x4e,0xf0,0x89,0x60,
- 0x4d,0xf0,0xaf,0x7e,0xff,0x1f,0x2e,0x1a,0x6f,0x74,0x5f,0x40,0xcf,0x54,0xa3,0x20,
- 0xf9,0xc0,0x55,0xe6,0xc1,0x3b,0x5e,0xb9,0x0d,0xc9,0xce,0xf9,0x93,0x44,0xe4,0x4e,
- 0x7e,0x9d,0xbc,0xb1,0x44,0xe9,0xde,0xf3,0x44,0x35,0xa0,0xef,0x2c,0x9c,0xff,0xec,
- 0x5b,0x11,0xe6,0xc7,0x7b,0xed,0xbf,0xf3,0xde,0xff,0x7b,0xe9,0xe5,0xa8,0xdf,0xee,
- 0x3d,0xcf,0xc2,0xef,0x44,0xd8,0xa9,0xb5,0x0e,0xd6,0x43,0xf6,0xb1,0x92,0xc3,0xc6,
- 0x8a,0xe1,0xfc,0xf1,0x0f,0x7d,0xfa,0x27,0xcc,0x37,0xac,0x0a,0x30,0x22,0xd9,0x5c,
- 0xf7,0x7a,0x97,0x0c,0xe0,0x66,0xe1,0x41,0xe2,0x05,0x60,0x41,0xc7,0x56,0xf5,0xfc,
- 0x49,0xf4,0xc0,0x4f,0xcc,0x49,0x4f,0xda,0x4e,0x52,0xff,0x99,0x5f,0xa9,0x65,0x24,
- 0x1f,0x99,0xf5,0x7a,0x2d,0xe7,0xb7,0xbc,0xdf,0x7f,0xe7,0x93,0xf3,0xf9,0xde,0xf3,
- 0xb6,0x06,0x23,0x9e,0xc2,0xbd,0xe7,0x4f,0xbe,0xf5,0x37,0xef,0x7b,0xcf,0x1b,0xb0,
- 0x26,0x60,0xb4,0x13,0xa1,0xf4,0xf5,0x2e,0x12,0xc0,0xcd,0xc5,0x1d,0x9f,0xb8,0xed,
- 0xa4,0x25,0x4c,0xae,0xf4,0x9f,0xdc,0x8f,0x87,0xbd,0xb5,0x93,0xf4,0x16,0xed,0xaf,
- 0xa9,0x5f,0xa9,0xa5,0x82,0x3f,0x5c,0x2d,0x45,0x7f,0xa4,0x74,0x17,0x76,0x09,0x7e,
- 0xee,0xc7,0xdf,0xfb,0x57,0x6f,0x2c,0x15,0x10,0xc9,0xa7,0xc0,0xeb,0x07,0xae,0x3d,
- 0x0f,0xbe,0x72,0x9b,0x17,0x4e,0x3b,0x7f,0xb0,0x57,0x38,0x70,0x60,0xce,0xe3,0x17,
- 0x9f,0x4d,0x1e,0x64,0xfe,0x0d,0xc0,0xc1,0xf3,0xf8,0x79,0xd2,0xd2,0x25,0xee,0x9e,
- 0x78,0xe5,0x70,0xfe,0xe7,0x9e,0xbb,0xa7,0x7c,0xbd,0x85,0x3a,0x30,0x7a,0x65,0xec,
- 0x7a,0x97,0x03,0xe0,0x66,0xa5,0x74,0xc7,0x6d,0xbe,0xc2,0xb6,0x07,0x0e,0xee,0x46,
- 0xb8,0x07,0xdd,0xbe,0xf5,0xa0,0xf6,0x84,0x9d,0x0a,0xa7,0xb2,0xf0,0xd6,0x7b,0xea,
- 0xd7,0x5b,0xb0,0x03,0x31,0x92,0x48,0x5e,0xef,0x32,0x00,0xdc,0xd4,0x20,0x0d,0x70,
- 0x10,0xcb,0xd3,0x71,0x22,0x4d,0x07,0x8f,0x1f,0x1f,0xfc,0x69,0x3f,0xac,0x95,0xf1,
- 0x2b,0x81,0xbc,0xb1,0x17,0x39,0x69,0xff,0x80,0x97,0x71,0x9f,0xcc,0x12,0x81,0x9e,
- 0x94,0xd4,0xf3,0xfa,0xc0,0x53,0x02,0xb6,0x23,0xf0,0xaf,0xfe,0xc1,0xbc,0xde,0xc2,
- 0xdd,0x17,0xa3,0x16,0xbd,0xde,0xb7,0x1f,0xb8,0xe9,0x79,0xe5,0xeb,0x58,0x03,0x1c,
- 0x44,0x12,0x7c,0x4d,0x78,0x69,0x9f,0xb7,0x67,0xe9,0x05,0x41,0x09,0x9c,0x3f,0xff,
- 0xdc,0xe2,0xce,0xf5,0x16,0xf0,0x9e,0x18,0xa3,0x50,0xef,0x07,0x6e,0x00,0x4a,0xbf,
- 0x77,0x12,0x4b,0xe5,0x4b,0x7b,0x15,0xcd,0x97,0xdc,0x57,0xbf,0x3f,0xd9,0x37,0x83,
- 0xf0,0xa4,0xbb,0x15,0xf6,0x3f,0x86,0x71,0x0d,0xac,0x98,0xc0,0x73,0xef,0xb8,0x71,
- 0x73,0x02,0x8c,0x4c,0x11,0xa4,0x1f,0xb8,0x31,0x28,0xdd,0x76,0xf0,0xc4,0x91,0x97,
- 0x9e,0x7c,0xe9,0xa5,0x27,0x91,0x88,0x3d,0xf9,0xd2,0xc1,0x27,0x07,0x7c,0xbc,0x84,
- 0x56,0x21,0x7f,0xfd,0x56,0x7e,0xc9,0xfe,0xdb,0xdd,0xe3,0xa5,0x83,0x47,0x5e,0xb2,
- 0x0e,0xf0,0x04,0x3a,0x52,0xfc,0x87,0x3e,0x1d,0xc1,0x7b,0xb7,0xf5,0xc0,0x71,0xc7,
- 0x15,0x20,0x79,0x82,0xe7,0xcf,0x1f,0xff,0xd4,0x37,0x36,0x6f,0x48,0x0d,0xa0,0x16,
- 0x26,0xe2,0xd7,0xfb,0xa6,0x03,0x80,0xcb,0x1d,0x27,0x9f,0x3c,0xb1,0x4f,0x3c,0x49,
- 0xbf,0xdd,0xb7,0xad,0xb2,0x1b,0x7f,0xd2,0x7d,0x12,0xb0,0x0a,0x78,0xe9,0xa5,0x97,
- 0x5e,0x72,0x1c,0x01,0xaf,0x16,0x70,0xfc,0x7d,0x17,0x6f,0x40,0x05,0x60,0x4c,0x82,
- 0xf4,0x03,0x37,0x14,0xa5,0xdb,0x90,0x34,0x1d,0x46,0xcf,0xc3,0xe8,0xf5,0xf0,0x80,
- 0xcf,0x5b,0xf0,0x8b,0xf5,0x06,0xbd,0x92,0x2d,0x58,0x8f,0xc3,0xe4,0xfb,0x13,0xee,
- 0x57,0xc2,0xef,0x03,0xef,0x87,0x3c,0xbc,0xa7,0x07,0xf6,0x06,0x90,0x0b,0x63,0x57,
- 0x06,0x9c,0xba,0xc0,0xf9,0xf3,0x2f,0x3d,0xfa,0x81,0xeb,0x2d,0xee,0x3c,0x91,0xe2,
- 0xf5,0xbe,0xdb,0x00,0xc0,0xf3,0xca,0x4b,0xb7,0xdc,0x72,0xe5,0x96,0xdd,0xb3,0x97,
- 0x75,0x07,0xe6,0xb0,0xf5,0x77,0x18,0x3d,0x4e,0x58,0x2a,0x01,0x7b,0x05,0x4f,0x3a,
- 0x6e,0xc0,0x4b,0x07,0x8f,0x7b,0x11,0xc1,0x4f,0x7d,0xdf,0xf5,0x16,0x78,0x96,0x42,
- 0x54,0x81,0xaa,0x3f,0x70,0xc3,0xf1,0xec,0xf1,0x2b,0xb7,0x5c,0xb9,0xff,0xca,0xd5,
- 0xe0,0x96,0xab,0xb2,0xd5,0x2b,0x57,0xee,0xbf,0x05,0x6f,0xdb,0x52,0x08,0x27,0xb0,
- 0x77,0x81,0x95,0xc0,0xc1,0x83,0x47,0x6c,0x27,0x00,0xab,0x80,0xf3,0xe7,0x4f,0xfe,
- 0xd9,0x4f,0x5c,0x6f,0x91,0xa7,0x50,0x6b,0xe9,0x92,0x52,0x02,0x0d,0x00,0xdc,0x78,
- 0xdc,0x7b,0xe5,0x91,0x27,0xd0,0xe3,0x11,0xf2,0x3a,0xe8,0x03,0xad,0xe5,0xac,0x4c,
- 0xfe,0x59,0xff,0x9d,0xdf,0x9c,0x4f,0xde,0xc7,0xdd,0x3d,0xbc,0xcd,0x5a,0x5c,0x79,
- 0xc2,0xd5,0x31,0x96,0x12,0xb0,0x55,0x80,0xd5,0x34,0x60,0xab,0x80,0xbf,0x7d,0xef,
- 0x0d,0x93,0x12,0xbc,0x53,0x89,0x83,0xec,0x03,0x37,0x28,0x9f,0xb8,0x72,0x14,0x0b,
- 0xe7,0x23,0xb7,0xef,0xe2,0x71,0xf4,0x91,0xa3,0xce,0x1b,0xf7,0xcb,0xa3,0xd2,0x05,
- 0x77,0xb3,0x75,0x6f,0x2f,0x64,0x4f,0x8f,0xb8,0x58,0x8a,0xe7,0x09,0xe2,0xb8,0xdc,
- 0x8f,0x75,0xc0,0x61,0x5b,0x05,0x3c,0x49,0x69,0x80,0x83,0x9f,0xbe,0x41,0x5a,0x02,
- 0xcb,0xb9,0x12,0x48,0x3f,0x70,0xc3,0xf2,0xca,0x2d,0x2f,0xbf,0x7c,0xfb,0xd5,0x67,
- 0xbf,0xf6,0xf1,0x08,0xfe,0x3b,0x7a,0xd4,0xf1,0x27,0x1c,0x37,0x80,0x68,0x80,0x23,
- 0x76,0x8a,0x81,0xd5,0x16,0xf0,0xfb,0xe5,0xa9,0x1b,0x40,0x03,0x0c,0x87,0x4a,0x25,
- 0xf0,0xfe,0x81,0x1b,0x97,0x3b,0x4e,0x1c,0x3b,0xf6,0x30,0x92,0xcf,0x97,0x6f,0x3f,
- 0x86,0x5e,0x5e,0x26,0x6f,0x6e,0x47,0xcf,0x63,0xf8,0x3f,0xfe,0xa3,0xde,0xba,0xff,
- 0xf0,0xc2,0xf6,0x0a,0xb7,0x93,0x17,0xfc,0x03,0xfe,0x85,0xbc,0x7f,0xf9,0x65,0x67,
- 0x1b,0xe4,0xf1,0xb2,0x25,0xfd,0xc7,0x6e,0xf7,0xb6,0x60,0xbd,0xbe,0xcc,0x6c,0x93,
- 0x7a,0x58,0xdf,0x91,0x05,0xad,0xed,0x59,0x4f,0xeb,0x4b,0x57,0x15,0x20,0x2d,0x70,
- 0x14,0x79,0x02,0xf7,0x13,0x15,0x40,0x62,0x01,0x4e,0x6b,0x00,0x51,0x01,0x1f,0xba,
- 0x78,0xbd,0x85,0x7f,0x4a,0xcd,0x74,0x2d,0xf1,0x47,0x80,0x06,0x00,0x6e,0x48,0xee,
- 0x38,0x7c,0xec,0x61,0x82,0xfd,0x2f,0x08,0xc7,0x84,0x37,0xb2,0x1f,0xf7,0x8f,0x63,
- 0xce,0x66,0x8f,0xe1,0xe7,0xcb,0x0f,0x5b,0xfa,0x06,0xe9,0x00,0xe2,0x08,0x5c,0x79,
- 0x02,0x57,0x04,0x0e,0x5b,0xf9,0x07,0x24,0x16,0x78,0xf2,0xf8,0xc9,0x83,0xe7,0xff,
- 0xf6,0xbe,0xeb,0x1c,0x04,0x50,0x13,0xe9,0x38,0x19,0x8d,0xed,0x7a,0xdf,0x62,0x00,
- 0xf0,0xe7,0xc1,0x5b,0xee,0x7e,0xf8,0x6e,0x24,0x5b,0xb7,0x92,0x57,0xcc,0xdd,0xbe,
- 0x82,0x78,0x9d,0xb8,0x55,0xfc,0x0a,0xa9,0x01,0xcb,0xb1,0x78,0xe4,0x76,0x12,0x0e,
- 0xc0,0x5e,0xc0,0x61,0xab,0x49,0xd0,0x49,0x08,0x38,0xfe,0xb6,0xeb,0x9a,0x09,0xa0,
- 0xe6,0xe3,0x96,0xf8,0x63,0xf9,0x07,0x1d,0x00,0xdc,0xa8,0x3c,0x7b,0xcb,0xad,0x98,
- 0x87,0xd1,0xdf,0xdd,0xe4,0xdd,0xdd,0xe4,0xef,0x6e,0xf7,0x9d,0xfd,0xf5,0xad,0xd4,
- 0x1b,0xea,0x1d,0xff,0xc1,0xfd,0x78,0xb7,0xf8,0x8b,0xfb,0xeb,0xdd,0xec,0x62,0xe2,
- 0xd2,0x77,0xf3,0x6b,0x90,0xff,0x0f,0xdf,0x7a,0x37,0xad,0x9c,0x48,0xad,0xe0,0xf6,
- 0xdb,0x8f,0x12,0x2f,0xc0,0xd6,0x00,0x27,0x9e,0xb4,0xf2,0x02,0x71,0x1d,0xe0,0x51,
- 0xe3,0xfa,0x89,0x7f,0x33,0x86,0xc4,0x3f,0x6e,0x89,0x3f,0x48,0x3f,0x70,0x03,0xf3,
- 0xec,0xfd,0xb7,0xde,0x7a,0xea,0xd6,0x87,0x44,0x51,0xc5,0x9c,0x72,0x5f,0x7a,0xd0,
- 0xef,0x77,0xd9,0x0a,0x3d,0xd6,0x39,0xc5,0x2e,0x46,0x9e,0xec,0xe2,0xae,0x1a,0x38,
- 0x66,0x85,0x04,0xb0,0x0a,0x78,0x02,0x6b,0x00,0x92,0x1a,0x78,0xf0,0x84,0xed,0x03,
- 0xdc,0x73,0xfd,0xaa,0x00,0x99,0x6e,0xdc,0xb6,0xff,0x0a,0x38,0x00,0xc0,0x0d,0xcd,
- 0x1d,0x8f,0x9c,0x7a,0x08,0xc9,0xff,0x43,0x84,0x5b,0xed,0x3f,0xfa,0xed,0xad,0xce,
- 0x53,0xf6,0xce,0x7a,0x9e,0x22,0x4f,0xe6,0x37,0xd9,0x62,0x92,0xaf,0xa4,0x4b,0x3b,
- 0x1f,0xc9,0x66,0xc9,0x57,0xf8,0x41,0xb4,0xd4,0x29,0x5e,0x09,0x10,0x27,0x00,0xc7,
- 0x02,0xae,0xd8,0x1a,0xc0,0x8e,0x02,0x1c,0x3c,0xf9,0xd2,0xaf,0x5f,0x2f,0x05,0xd0,
- 0x8e,0xc6,0xe3,0xae,0x03,0x00,0xc2,0x0f,0xdc,0xd0,0xbc,0xf2,0xf2,0xab,0xaf,0x3e,
- 0xf4,0xd0,0xab,0xf8,0x85,0xf0,0x2a,0x79,0x50,0xbc,0x4a,0x7e,0xf4,0x9e,0xd6,0xe3,
- 0xd5,0x57,0xb9,0x05,0x5f,0x75,0xb7,0x41,0x7e,0xb1,0x9e,0xec,0x9a,0xaf,0xca,0xb7,
- 0xe9,0xec,0xd2,0xde,0x1c,0xb3,0x2c,0x77,0x2c,0x96,0x2e,0x70,0x74,0x80,0xe5,0x05,
- 0xe0,0x36,0x07,0x1c,0x0c,0x74,0x35,0x00,0xc9,0x07,0x3a,0x79,0xf2,0xad,0xd7,0x29,
- 0x15,0x50,0x0f,0xa5,0xe3,0x4f,0x5b,0x0a,0x00,0xa4,0x1f,0xb8,0xe1,0x79,0xff,0xc3,
- 0xaf,0x86,0x5f,0x25,0xd8,0xff,0xdc,0xf7,0x61,0xf6,0x2b,0x29,0x61,0x67,0x49,0x6a,
- 0xbd,0x9e,0x8b,0xf7,0x5e,0x24,0x2c,0x7d,0xeb,0x62,0xeb,0x85,0x53,0x8e,0x1f,0x40,
- 0x69,0x80,0xdb,0x71,0x1c,0x00,0x87,0x01,0x9e,0x7c,0xf2,0x88,0xa5,0x00,0x3e,0xf4,
- 0x57,0xd7,0x43,0xfc,0xcd,0x1c,0x92,0xfd,0xb4,0xe3,0x00,0x80,0x06,0x00,0x6e,0x74,
- 0xee,0x3d,0xf5,0xea,0xab,0x87,0x0e,0xd9,0xa2,0x19,0x76,0xc5,0xde,0x53,0x0a,0xec,
- 0x93,0xfb,0x82,0xd1,0x15,0xee,0xbb,0xb0,0xb8,0x20,0xb5,0x59,0xf9,0x06,0xc9,0xbb,
- 0x43,0xaf,0x7a,0xfb,0xa6,0x37,0xc8,0x68,0x01,0xdb,0x13,0x38,0xe5,0x38,0x01,0x2f,
- 0x63,0x0d,0x80,0xe3,0x00,0x57,0x48,0x62,0x30,0x19,0x37,0xe0,0xe0,0xf1,0x83,0xcf,
- 0x5d,0x87,0x91,0x01,0x8d,0x4a,0x1a,0x61,0x39,0x00,0x90,0x00,0x04,0xbc,0x11,0x38,
- 0x78,0x28,0x1c,0x46,0x1a,0x20,0xfc,0x2a,0xf5,0xb0,0x3e,0xa1,0x7f,0xec,0xd7,0xec,
- 0x83,0x2c,0x77,0x88,0xff,0x6a,0xf0,0x07,0xbd,0xde,0x21,0x67,0xa7,0xce,0x57,0xf6,
- 0x5e,0x0e,0x61,0xe5,0x10,0x66,0x74,0x00,0x12,0xff,0x87,0x6c,0x27,0xc0,0x6e,0x0c,
- 0x78,0xe2,0x91,0xfb,0x89,0x06,0xb0,0x9a,0x01,0x0e,0xbe,0xef,0x9a,0x0f,0x0b,0xa6,
- 0x6e,0x75,0x9f,0x7e,0x3a,0x9d,0x7e,0x3a,0x1d,0xb7,0x14,0xc0,0xf5,0xbe,0xb5,0x00,
- 0xd0,0x9f,0xfb,0x91,0xd0,0x85,0x2d,0xb9,0xbb,0x31,0x71,0x8e,0xeb,0x55,0x5b,0xd9,
- 0xb8,0x4a,0xc0,0x8e,0x06,0x60,0x15,0x70,0xbb,0x13,0x06,0xb0,0x9a,0x02,0x0f,0x3e,
- 0x89,0x3c,0x80,0x4f,0x6f,0x5e,0x63,0xf9,0x5f,0x4d,0x62,0xf3,0xff,0x34,0xf1,0x00,
- 0x4a,0xa0,0x00,0x80,0x37,0x04,0x77,0x3c,0x7c,0x5d,0xa5,0x7b,0x30,0x88,0x77,0xe0,
- 0x78,0x02,0x96,0x17,0x60,0x35,0x07,0x1c,0x23,0x95,0x00,0xa2,0x00,0x0e,0xe3,0x96,
- 0x40,0x5c,0x07,0x78,0xef,0xb5,0xed,0x09,0xd0,0x4e,0xa5,0x9f,0x49,0x77,0x49,0x0d,
- 0xc0,0xab,0x00,0xdc,0xe0,0xc4,0xd3,0xd1,0xe2,0x5c,0xa5,0xb5,0xb2,0x95,0x68,0xe5,
- 0xe7,0x8a,0x4f,0x8d,0xc1,0x78,0x45,0x37,0x1f,0x9f,0x78,0x28,0x3c,0x8d,0x44,0x0b,
- 0xff,0xa1,0x17,0xf2,0xcf,0x7e,0xb5,0xbf,0x98,0x66,0x7f,0x9f,0xf6,0x16,0x98,0x76,
- 0x57,0xa1,0xbf,0x76,0x5e,0xa6,0xc3,0xee,0x8a,0xce,0xa7,0x69,0xe6,0x17,0x77,0x77,
- 0xde,0x1e,0xb9,0xcf,0xee,0x47,0x4e,0x0b,0xbc,0x7a,0xc8,0xd5,0x00,0x0f,0xe1,0x14,
- 0x26,0xa2,0x01,0x6e,0x77,0x34,0x00,0xf6,0x00,0x90,0x02,0x38,0xb2,0x70,0x2d,0xc5,
- 0x5f,0xbf,0x14,0x1f,0x1b,0x1b,0xeb,0x76,0xbf,0x6a,0xd7,0x00,0x6c,0xf9,0xbf,0x71,
- 0x55,0x40,0xa9,0x7b,0x39,0xb1,0xa4,0x1b,0xaa,0xa3,0x25,0x9b,0xaa,0xa1,0x2f,0xc5,
- 0x2e,0x77,0x6f,0xdc,0x23,0x06,0xae,0x0a,0x47,0xb0,0xa0,0x4d,0x53,0xd2,0xc8,0x0b,
- 0xa5,0x27,0xea,0xf2,0xef,0x99,0xf5,0x28,0xe9,0x17,0xde,0x49,0x56,0x65,0x75,0xca,
- 0x34,0xa5,0x71,0xa6,0x25,0xd2,0x3f,0xed,0x28,0x80,0x43,0x76,0x4d,0xc0,0xd6,0x00,
- 0x77,0xdb,0x61,0x00,0x4f,0x01,0xe0,0x28,0xc0,0x5b,0xff,0xed,0xb5,0x13,0x7f,0xb5,
- 0x8a,0x44,0xbf,0xfb,0xd5,0xb1,0xee,0x58,0x37,0xed,0xb4,0x00,0x58,0x97,0xf7,0xc6,
- 0x94,0xa7,0xe4,0x5c,0x47,0x17,0x92,0x24,0x90,0x2a,0x50,0xeb,0x99,0x2a,0x4c,0x56,
- 0x72,0x53,0xf1,0xe0,0xcb,0x8e,0x59,0x9e,0xa5,0xe4,0x6c,0x9a,0x12,0xce,0x69,0x1f,
- 0x59,0x95,0x6a,0x00,0x66,0x61,0x46,0xe2,0xa7,0xd9,0x6d,0xb0,0x4a,0x85,0x11,0xf6,
- 0x69,0xc9,0xc2,0x9c,0x76,0x42,0x3a,0xc0,0x89,0x03,0x38,0x6d,0x01,0x24,0x1f,0x88,
- 0xe4,0x02,0xd8,0x1e,0xc0,0xff,0xf1,0xf8,0x35,0x93,0xff,0x42,0x12,0xd9,0xfe,0x6e,
- 0x37,0x89,0x55,0x40,0x3a,0xcd,0xe4,0x00,0x06,0xa0,0x74,0x20,0x91,0x68,0xa1,0xc7,
- 0xca,0x4a,0xc2,0x7a,0x38,0x9c,0xf3,0x59,0x21,0xd9,0x22,0x3f,0xaf,0xe0,0x55,0xdc,
- 0xe5,0xd1,0xbf,0x95,0x54,0x90,0xdd,0xc5,0x43,0x59,0xdd,0xbf,0x72,0xd4,0x34,0x3b,
- 0x17,0xfa,0x57,0x04,0x8a,0x78,0x8f,0x2d,0xee,0x70,0xe9,0xb7,0x3c,0x15,0x67,0xee,
- 0xd3,0x68,0xc2,0x5a,0xa7,0xb5,0xe2,0xad,0xc1,0xaf,0xb7,0xc2,0x7d,0xf0,0xce,0x30,
- 0x91,0x1f,0xb8,0x92,0x12,0x6d,0xe1,0x35,0xf1,0x15,0x5b,0x61,0xb6,0xdb,0x8a,0xfa,
- 0xac,0x90,0x23,0x37,0x43,0x64,0x4e,0xbc,0x9d,0xe9,0x8a,0xb5,0xa9,0x44,0x62,0x65,
- 0x45,0x7a,0xf6,0x2b,0xd4,0x3b,0xea,0x7d,0x4b,0xb8,0x51,0xb9,0x96,0x64,0x1d,0x44,
- 0xd5,0xa7,0x0c,0x15,0x49,0x91,0x59,0x61,0xce,0x09,0x95,0x87,0x44,0x65,0xe0,0xeb,
- 0xf3,0xae,0x57,0xa7,0x89,0x9c,0xb9,0xcc,0x62,0x7f,0xc0,0x7e,0xe3,0x3c,0x66,0xbd,
- 0x8f,0xd4,0x02,0xe8,0x6b,0xe7,0xb3,0xfd,0x7e,0xd6,0x5a,0x64,0x76,0x9a,0x5a,0x94,
- 0x5a,0xd2,0xdb,0x86,0xfd,0x93,0xb3,0xaa,0xb5,0xb0,0xfd,0x9c,0x0d,0x7b,0xeb,0x61,
- 0xc8,0x1a,0xbc,0x33,0xe0,0xf9,0x00,0xa7,0xec,0x38,0xe0,0x31,0x92,0x11,0x8c,0xbb,
- 0x05,0xda,0xfd,0x01,0xee,0xbb,0x56,0xe2,0xaf,0xe6,0x88,0xf0,0x27,0xf1,0xcb,0x18,
- 0x09,0x01,0x0c,0xd4,0x03,0x30,0xdd,0x30,0x75,0xdd,0x34,0x54,0xc1,0x22,0x47,0x7c,
- 0x66,0x0b,0xaf,0x1a,0xba,0x5e,0x37,0x55,0x55,0x90,0xe2,0x5a,0xff,0x9d,0xc5,0x27,
- 0xb4,0xcd,0x7e,0xa7,0x53,0x98,0xeb,0x53,0x8a,0x4a,0x9a,0x51,0x46,0x47,0x6c,0x04,
- 0x4f,0xb4,0x6c,0xe6,0xec,0x55,0x5b,0xf8,0xd8,0x07,0x59,0x93,0x65,0xf3,0x52,0xe0,
- 0xcb,0x6a,0x53,0x51,0x23,0x65,0x73,0xc7,0x68,0x0a,0x7b,0x5c,0xf6,0xb9,0x40,0x05,
- 0x13,0x9f,0xdb,0xa6,0xb0,0xbc,0x2e,0x7a,0x46,0x45,0x43,0x47,0xcb,0x6e,0x8a,0x37,
- 0xa2,0x1f,0x09,0x61,0xa7,0x3b,0x11,0x6b,0xa7,0xdc,0xa6,0xcc,0xa8,0xf4,0x20,0xd3,
- 0x11,0x43,0x52,0x5e,0xd0,0xca,0x6a,0x68,0xd0,0xeb,0xa3,0x9c,0x38,0x34,0xed,0x0a,
- 0x34,0xcf,0xac,0xfb,0x32,0xcd,0xbe,0xe3,0xbe,0x12,0x17,0xe1,0xff,0x4b,0xde,0x30,
- 0x1f,0x85,0x4d,0x5b,0x5a,0xc6,0x39,0xb2,0xb0,0xa5,0x07,0x68,0x05,0x40,0xda,0x05,
- 0xdd,0x40,0xe0,0xc3,0x96,0x0b,0x80,0xf3,0x81,0x6f,0x39,0x7c,0x0b,0xe9,0x12,0xf8,
- 0xdc,0x7f,0x1c,0xf4,0xb6,0xec,0x92,0x4c,0xb2,0xfb,0xbd,0xef,0x75,0x93,0x08,0xa4,
- 0x07,0xc6,0xe8,0x00,0x60,0x20,0x25,0x10,0x6f,0x17,0x5a,0x5b,0xab,0x85,0x88,0xc9,
- 0x97,0x23,0x49,0x89,0x23,0x1c,0x30,0x13,0x2b,0xd9,0x85,0xb6,0x2e,0x48,0xd1,0x68,
- 0xbf,0x5d,0x95,0x8a,0x0b,0x41,0xba,0x47,0xa9,0x4b,0xb9,0x9e,0x47,0x5e,0xca,0xb4,
- 0x5b,0x89,0x8e,0xe4,0x88,0xfd,0xa9,0xda,0xab,0x56,0xf4,0x56,0x62,0x71,0xa1,0x51,
- 0x17,0xe5,0x2b,0x10,0xea,0x44,0x90,0x2b,0x4a,0x53,0x19,0x49,0x24,0xb2,0x5a,0xa3,
- 0x2e,0x5c,0x2c,0x5e,0x06,0x6d,0xe2,0xc3,0x1a,0xba,0x1b,0x4b,0x91,0x1d,0xfe,0x42,
- 0x99,0x12,0xf9,0x37,0x6b,0x2b,0xb5,0x85,0x6d,0xf1,0x46,0xf4,0x23,0xcb,0x5f,0xd0,
- 0xf6,0xd2,0xd0,0x59,0x72,0x41,0xb9,0x05,0x37,0xe5,0x2e,0xdd,0x84,0xda,0x46,0x47,
- 0xb8,0xc9,0x2e,0xdb,0x9c,0x32,0x54,0x7d,0xf0,0x39,0xe6,0x9f,0xbd,0xdb,0x15,0xaf,
- 0x69,0xfb,0x39,0x6b,0x5b,0x6a,0x4f,0x2e,0xc3,0xac,0xc5,0x77,0x2d,0xfd,0x34,0x25,
- 0x9c,0x8e,0x1d,0x9f,0x76,0xcd,0xb9,0x2d,0xba,0xee,0xb6,0xdc,0x5f,0xad,0x6f,0x1c,
- 0x11,0x0f,0x3b,0x0b,0x7a,0xde,0x81,0x77,0x20,0x5e,0x3d,0xc2,0xde,0x83,0x57,0x11,
- 0xc0,0xb5,0x80,0xb0,0x5b,0x09,0xb0,0xda,0x01,0x70,0x97,0x20,0xd2,0x0e,0x88,0xaa,
- 0x00,0xff,0x70,0x6d,0xda,0x00,0xcc,0x62,0x97,0x08,0xbf,0xa5,0x00,0xbe,0x3a,0x96,
- 0x1e,0xb0,0x05,0x20,0x5e,0x28,0x2c,0x27,0x16,0x0b,0xeb,0x26,0xaf,0xd1,0x7d,0x94,
- 0xbf,0x32,0x61,0x6e,0x2d,0xc7,0x32,0x17,0xa9,0xf0,0x9d,0x4d,0xa6,0xcf,0x1e,0x93,
- 0xd9,0xa0,0x9d,0x23,0x37,0x33,0xbd,0xea,0x12,0xa5,0x4c,0xa3,0xf2,0xe2,0xa2,0xb6,
- 0x5e,0x97,0xd8,0x20,0x1f,0xe6,0xed,0x55,0xab,0x23,0x2b,0x2d,0x22,0x32,0xbb,0xbb,
- 0x37,0xcd,0x03,0xc1,0xae,0xa9,0xc7,0x7c,0xbd,0x85,0x76,0x78,0x51,0xdc,0xe1,0x96,
- 0xcf,0xb9,0x0d,0x6b,0xcb,0x52,0xdd,0x26,0x11,0xc5,0x90,0x11,0x5b,0xae,0xad,0x4a,
- 0x14,0x71,0x3f,0x16,0xf9,0x2d,0x0d,0xb7,0x2b,0x67,0x3b,0x6b,0x62,0x11,0x68,0xca,
- 0x87,0x91,0xcf,0x18,0xda,0x76,0x59,0xb8,0xfd,0xaa,0x11,0xc4,0x03,0x14,0x38,0x79,
- 0x28,0xec,0x48,0xac,0x2b,0x89,0xd3,0xb4,0x14,0x7a,0x4e,0x7a,0x78,0xda,0xfb,0x79,
- 0xd6,0x15,0xd9,0x69,0x6a,0x71,0x47,0xca,0x69,0xc3,0x4d,0xfd,0xc8,0x2e,0x4f,0x43,
- 0x2f,0x18,0xf6,0xfe,0xcd,0xf2,0x55,0x11,0xc6,0x0d,0xb0,0xe3,0x00,0x96,0x06,0xf0,
- 0x82,0x00,0x76,0x15,0xe0,0x70,0xf9,0x9a,0x28,0x80,0x2c,0x76,0xfd,0x93,0x9f,0x8d,
- 0x7e,0xc9,0x56,0x00,0x71,0x77,0x08,0x90,0x60,0x2a,0xa0,0x54,0x28,0x54,0x2c,0xf9,
- 0xe7,0x36,0xbc,0xe3,0x23,0x83,0x45,0x3d,0xd6,0xaa,0x65,0x24,0xc5,0x4e,0xeb,0xbd,
- 0xbb,0xb9,0xc6,0x54,0xf0,0x01,0xd2,0xea,0xbd,0xaa,0xda,0xa3,0xeb,0x43,0x2b,0xc8,
- 0x8a,0x9b,0xc1,0xad,0x78,0xc5,0x39,0x86,0x91,0x04,0x12,0xc7,0x36,0x16,0xc7,0x5d,
- 0xdd,0x9c,0xaa,0xff,0x41,0xf9,0x9c,0x74,0x3d,0x81,0x6c,0x74,0x5b,0xb4,0xff,0x3e,
- 0xce,0x52,0x49,0x2b,0xc8,0x45,0x51,0x22,0xff,0x29,0xb3,0x36,0x14,0x43,0x37,0x62,
- 0x67,0x50,0xf9,0xe7,0x15,0x75,0x49,0x6b,0x54,0x56,0x16,0xd7,0x1a,0xc2,0x4e,0xa7,
- 0xa4,0xf2,0xdf,0xad,0x47,0xd6,0xd6,0x85,0x33,0x6a,0xaa,0xea,0xe6,0x6e,0x66,0x9d,
- 0x78,0xf0,0xe8,0x74,0x98,0xd2,0x00,0x9e,0x39,0x77,0x45,0x72,0x36,0xec,0x49,0x3d,
- 0x25,0x9b,0xae,0x1e,0xa0,0x3e,0xb2,0xb5,0x7e,0x6f,0xe1,0x30,0xa5,0x13,0x6c,0xdb,
- 0xef,0xca,0x33,0x13,0x57,0x70,0xa3,0x08,0xb3,0xd3,0xd3,0x8c,0x0e,0x99,0xf5,0x8e,
- 0x8c,0x52,0x01,0x87,0xec,0x28,0x80,0xdd,0x2f,0x88,0x54,0x01,0x1e,0x21,0x1e,0xc0,
- 0x91,0x83,0x2f,0x7d,0x7a,0xf0,0x9a,0xd9,0xe0,0xe8,0x21,0x64,0xfd,0xbf,0x14,0xc5,
- 0x7c,0x29,0x4a,0x6a,0x00,0x4f,0x33,0xf6,0xbf,0xaf,0x0a,0x20,0x37,0x3f,0x2b,0xb9,
- 0xf9,0x7e,0x95,0xb9,0x94,0x5e,0x5b,0x8e,0xad,0xb6,0x23,0x82,0x01,0x58,0xea,0x55,
- 0x6f,0x1f,0xab,0x19,0x53,0xcd,0x01,0xae,0x47,0x33,0xe3,0xdf,0x14,0x90,0x8d,0x2c,
- 0xa3,0x23,0xde,0xae,0x07,0x75,0x27,0x9a,0x53,0x2d,0x7b,0xcd,0x9c,0x99,0x58,0xae,
- 0x11,0xdf,0x25,0xf8,0x91,0xd0,0xe4,0xfb,0x5d,0x4d,0x9e,0x09,0xa2,0x70,0x2e,0x8a,
- 0x0a,0x67,0x55,0x7e,0x63,0x4a,0x9d,0xe1,0x65,0x24,0x8a,0xeb,0x82,0xfd,0x97,0xdc,
- 0x8d,0xa8,0x99,0x5d,0xc6,0x75,0x05,0xe1,0x46,0xf4,0x63,0x8d,0xdf,0xf7,0x28,0x2e,
- 0x02,0xda,0x69,0x93,0xbf,0xa0,0x6e,0xdc,0x84,0xa1,0xaa,0x0e,0x2f,0x95,0x05,0x73,
- 0xa1,0x1a,0x6a,0x63,0x57,0x39,0x1c,0xef,0x3a,0x34,0xcd,0x8a,0xba,0x23,0x7d,0xe4,
- 0x93,0x6b,0xcf,0x67,0x29,0x6f,0xc0,0x5e,0x86,0x96,0x58,0x46,0x4f,0xb8,0xda,0x63,
- 0xd6,0xae,0x0a,0x50,0x51,0x42,0x4f,0x75,0x38,0x72,0x2d,0x84,0x0f,0xbc,0xbd,0xbb,
- 0x1a,0x80,0xab,0x24,0x78,0x2a,0xe0,0x50,0xd8,0x4d,0x0a,0xc6,0xed,0x00,0x58,0x01,
- 0xe0,0xc1,0xc1,0x0e,0x9f,0x78,0xf2,0xe0,0x35,0x19,0x0f,0x30,0xd1,0xfd,0x5e,0x32,
- 0x6a,0x43,0x1c,0x80,0xb1,0x78,0x3a,0x3e,0x48,0x17,0xa0,0x52,0xa7,0x81,0xfc,0x7f,
- 0x6d,0x5d,0xb0,0xa6,0xaa,0x8f,0x36,0x4f,0x59,0xc5,0xae,0x2c,0xc8,0x50,0xaf,0xdb,
- 0x1f,0x2d,0xa8,0x53,0x03,0xca,0xdc,0xba,0xaf,0x35,0x49,0x44,0x5a,0x2b,0x59,0x54,
- 0x8b,0x0f,0xee,0xc5,0x3b,0x8e,0xe9,0x84,0x91,0x68,0xc5,0x16,0xda,0xe2,0xb1,0x07,
- 0xa2,0x39,0x35,0x14,0xec,0x9a,0x7a,0x14,0xcd,0x04,0x76,0x96,0xc4,0x1d,0xfa,0x39,
- 0x4b,0xd9,0x06,0xf2,0xc6,0x90,0x28,0x0a,0x77,0x43,0x0c,0x3d,0x24,0xeb,0xa3,0xe8,
- 0x46,0x14,0x06,0x3f,0x99,0x36,0xbf,0xef,0x5a,0x04,0xdb,0xff,0x19,0xd1,0xa1,0x9a,
- 0x93,0x1c,0x61,0x49,0x33,0xd7,0x24,0x41,0x07,0x75,0xb3,0xd9,0x92,0x2c,0x1d,0x80,
- 0xa3,0x61,0xda,0xe0,0x0b,0x0e,0xbc,0x6b,0x8d,0x5d,0x15,0xe1,0x85,0x03,0x1c,0x7b,
- 0xee,0x48,0xf4,0xec,0x34,0xad,0x21,0xc2,0xd3,0xb4,0xec,0x3a,0xba,0x40,0xf0,0xe9,
- 0xc3,0x94,0x3b,0x30,0x4b,0xad,0x45,0x1d,0x8e,0xa7,0x8e,0x9c,0x8d,0x7b,0x2e,0x00,
- 0x69,0x09,0x20,0x83,0x04,0xdc,0x8d,0x83,0x00,0x76,0x7f,0x20,0x5c,0x05,0xf8,0xd7,
- 0x57,0x7f,0x28,0x80,0x46,0x0a,0x09,0x7d,0x34,0x9a,0xc2,0x20,0x0f,0x00,0x57,0x00,
- 0xdc,0x3e,0x00,0x01,0x23,0x80,0xd9,0xc6,0x72,0x6b,0x14,0x4b,0x13,0x7f,0x43,0x7d,
- 0x82,0x5d,0x51,0xdd,0x2a,0x76,0x82,0xc3,0x10,0xf1,0x8f,0xfe,0x14,0x1b,0x53,0x92,
- 0x06,0x83,0x29,0xec,0x35,0xe2,0x07,0x7a,0x4e,0x35,0xa7,0x78,0x13,0x69,0xfa,0x35,
- 0x3f,0x55,0x74,0x5c,0xa9,0x6e,0xe8,0x72,0xff,0x5f,0xb6,0x9b,0x8e,0xbd,0xa6,0x57,
- 0x65,0x1e,0xdc,0x35,0xc3,0x6b,0xf8,0x44,0xed,0xfc,0x09,0x99,0xc8,0x59,0xca,0x2c,
- 0xe9,0x82,0xb9,0x6c,0xfb,0x28,0xcb,0x44,0x03,0xdb,0xff,0x86,0x10,0xdb,0x90,0x98,
- 0xe2,0xb1,0x48,0x67,0x79,0xab,0xb3,0x14,0xd9,0x19,0xf4,0x64,0x04,0x45,0x9d,0xd0,
- 0x97,0x57,0x6a,0xda,0xb6,0xa8,0x50,0x65,0xfe,0x4e,0x74,0x27,0x82,0xac,0x05,0xbf,
- 0x68,0x53,0xdd,0x34,0x02,0x35,0x00,0x8b,0x7c,0xe2,0x55,0x56,0x64,0xd9,0x00,0x9e,
- 0xf7,0x8b,0x2b,0xf8,0xb3,0xfc,0x37,0xb3,0x9c,0x08,0x33,0x91,0x40,0xea,0x0d,0x5d,
- 0x05,0x90,0x35,0x27,0xb8,0xbf,0xda,0x7b,0x98,0xf5,0x5c,0x7e,0x26,0x1a,0xc1,0xb6,
- 0x09,0x1e,0x3a,0xe4,0xd4,0x01,0x88,0x02,0xb0,0x5b,0x01,0x4e,0x9c,0x78,0xe9,0xc4,
- 0x37,0x06,0xbb,0x2f,0x83,0xd3,0xac,0xb8,0xe2,0x7f,0x06,0xfd,0x11,0x07,0x20,0xfd,
- 0xf4,0x60,0x19,0x00,0x09,0xe4,0x4d,0xbf,0x57,0x9b,0xd1,0x05,0xff,0x5f,0xea,0xfc,
- 0x29,0xca,0xf7,0xf4,0x4e,0xc5,0x2a,0x76,0xdc,0xc1,0x94,0xc7,0xfc,0x76,0x91,0xd3,
- 0xa7,0x24,0x12,0xd7,0x44,0x3a,0x41,0x55,0x0d,0x1b,0x55,0x94,0x66,0xa3,0xf2,0xac,
- 0x74,0x73,0x93,0x7a,0xcb,0x0a,0x7c,0xfb,0x5c,0x14,0xe4,0x69,0x60,0x8d,0x62,0xfd,
- 0xe1,0x0f,0x6e,0x8d,0x17,0x55,0x99,0x91,0xee,0xea,0x61,0xff,0x55,0x6b,0x5d,0x55,
- 0xb5,0xf4,0x92,0x6a,0x29,0x27,0x02,0x3a,0xda,0xc1,0x03,0x5c,0x78,0x87,0x31,0xd9,
- 0x0e,0xfd,0x9c,0xa5,0xa1,0x08,0xae,0x8d,0x6d,0x0b,0xae,0xb8,0x24,0xf4,0x90,0x8e,
- 0x64,0xe4,0x37,0xc2,0xbe,0x0c,0xaa,0x7d,0x3a,0xce,0xa3,0x49,0xce,0x0c,0xbd,0x13,
- 0x14,0x35,0x52,0xa8,0xd6,0x4e,0xf9,0x7b,0x24,0x6b,0xa5,0xac,0xa8,0x05,0x51,0xe7,
- 0x34,0x91,0xfb,0x3f,0xbc,0xdb,0x74,0xb3,0x47,0x68,0x33,0x4f,0x07,0x01,0x9d,0x0a,
- 0x00,0x6d,0xee,0x3d,0x19,0xa7,0x7d,0x00,0x46,0x84,0x5d,0xb1,0x9d,0xa6,0xb4,0x01,
- 0x15,0xdb,0xa7,0x43,0x0c,0x61,0xf7,0x2d,0xd3,0x4c,0x40,0x2d,0x3d,0xeb,0x56,0x30,
- 0x5c,0xd3,0x3f,0xcd,0x06,0x02,0x3d,0x05,0x70,0x2b,0xc9,0x05,0xc4,0xa9,0x80,0x44,
- 0x01,0xfc,0x93,0xab,0xdd,0x11,0xb0,0xfd,0xd4,0xf7,0xbe,0x94,0x24,0xc2,0x1f,0x3a,
- 0x43,0x3c,0x00,0x2c,0xff,0xe9,0xb8,0x3b,0x08,0x70,0x10,0x17,0xa0,0x85,0xa5,0x09,
- 0x2b,0x7f,0xde,0xe2,0xf8,0x04,0xbb,0xc6,0x22,0x19,0x6c,0x76,0xd6,0x85,0x26,0x2a,
- 0xbf,0x06,0x43,0x65,0x4e,0x6f,0x4a,0x04,0x0e,0x95,0xc4,0x4d,0x63,0xc7,0xac,0xd7,
- 0x75,0xbd,0xac,0xd7,0xeb,0xb8,0x41,0xdf,0x52,0x41,0x5e,0xc9,0x52,0x87,0xa4,0x47,
- 0x3f,0x67,0xae,0x58,0x95,0x6a,0x89,0xe1,0xc3,0xc2,0xba,0xb9,0x69,0xe0,0x07,0x52,
- 0x2d,0xa8,0x54,0xe2,0xff,0xcd,0x82,0xbd,0x1d,0x5c,0x65,0x8e,0xe1,0xe6,0x35,0x69,
- 0xd3,0x01,0x11,0x79,0xa2,0x8c,0x36,0x0d,0xfa,0x9f,0xa3,0xa1,0x8c,0x66,0x47,0x76,
- 0x38,0xbd,0xc0,0xce,0x12,0xda,0x61,0x59,0xb0,0xd1,0x0d,0x1f,0x67,0xa9,0xa2,0x57,
- 0xac,0xba,0x0d,0x7f,0x80,0xa2,0x29,0x8e,0x37,0xb4,0x8a,0xd5,0x6c,0x27,0xc9,0xa6,
- 0x54,0xad,0xeb,0xe0,0x5d,0x03,0xfc,0x44,0x7f,0xe8,0xad,0x1a,0x79,0x86,0xdb,0x52,
- 0xde,0xb4,0x15,0x2a,0x7f,0x3d,0x63,0xe2,0x01,0xc6,0xdb,0x75,0x59,0x7b,0x26,0xba,
- 0x38,0x03,0x07,0x47,0x1c,0xde,0xf5,0x2a,0x65,0xaf,0x67,0xa7,0x69,0x01,0xf6,0x6c,
- 0x39,0x1b,0x13,0xa4,0x65,0x97,0x8e,0xe4,0x51,0x3f,0xcf,0x7a,0x6b,0xb2,0x75,0x0b,
- 0xc6,0xa9,0xe7,0x32,0x03,0x3c,0xff,0x62,0x96,0x51,0x45,0xb3,0x9e,0xba,0xa0,0xdc,
- 0x0f,0xfc,0x24,0x1d,0x87,0xc3,0xac,0x02,0x40,0x55,0x00,0x5c,0x03,0x38,0x72,0xe2,
- 0xd7,0x25,0xa5,0x6c,0x1f,0x51,0xab,0xdd,0x64,0xf4,0xa9,0x54,0x2a,0x44,0x20,0xf2,
- 0x8f,0x15,0x80,0xeb,0xff,0x07,0x52,0xc8,0xf9,0x11,0xeb,0xe6,0x0b,0xa5,0xc8,0xe7,
- 0x7e,0xa6,0x1b,0x99,0xe5,0x17,0x3b,0x85,0x75,0xc1,0xec,0x48,0x9a,0xa8,0x09,0x39,
- 0x1d,0x15,0x3b,0x51,0x52,0x51,0x79,0x34,0xeb,0x91,0xf5,0xc6,0xf6,0xc5,0xf6,0xc5,
- 0xed,0xed,0x46,0xa4,0x5c,0x7f,0xdc,0xe0,0x93,0x59,0x36,0xa5,0x19,0x65,0x38,0x8a,
- 0x17,0xb3,0xa2,0xf8,0xc2,0x46,0xd1,0x56,0x77,0x4c,0xd3,0x1c,0x31,0xeb,0x23,0x75,
- 0xac,0x5b,0xea,0xba,0x89,0x54,0x8b,0x23,0xff,0x49,0x7d,0xb4,0x82,0x8f,0xbd,0xbe,
- 0x29,0x56,0x13,0x9a,0x58,0x1f,0xa1,0x55,0xb1,0x42,0xaa,0x63,0xd0,0xba,0x75,0x07,
- 0xfc,0x4e,0xd7,0xd5,0x85,0x41,0x4d,0x5c,0xd2,0xad,0x2c,0x71,0x7b,0xf3,0xab,0x2c,
- 0xe5,0x75,0x12,0xdb,0xd0,0x85,0x0b,0x26,0x9a,0xe2,0xf8,0x8c,0x36,0xb4,0xd2,0x59,
- 0x93,0xc9,0x3f,0x3e,0x15,0xeb,0x5c,0xd0,0x45,0xd0,0x4d,0xdd,0x7a,0x43,0xde,0xd7,
- 0xeb,0x86,0xce,0x67,0x76,0x55,0xcd,0x56,0x2b,0x8b,0x8a,0x80,0xe0,0x82,0x49,0xfc,
- 0x9d,0x90,0xd1,0x40,0xbb,0xe4,0xe5,0x1f,0x69,0x1b,0xbf,0xdb,0x1f,0x80,0x63,0x61,
- 0x4e,0xd8,0x59,0x7b,0x4e,0x09,0xac,0x63,0x7a,0xe9,0x25,0xa9,0xa8,0xdd,0x2c,0xa3,
- 0x25,0xc2,0x94,0x1d,0xa7,0xf4,0x05,0xb5,0x29,0xa6,0xfa,0x4f,0xbb,0xfb,0x9e,0xa8,
- 0xd3,0xaa,0xc8,0xab,0x0a,0xb8,0x4b,0xda,0x6e,0x80,0x13,0x04,0x20,0x55,0x00,0xdc,
- 0x0a,0x78,0x3f,0xce,0x04,0x3e,0xf1,0x5f,0x47,0x84,0x3b,0xb3,0x9f,0x14,0xa2,0xc4,
- 0xf9,0x0f,0x85,0x2e,0x5d,0xba,0x84,0x14,0xc0,0x99,0x14,0x92,0x7f,0x2f,0x03,0x20,
- 0xe0,0x2c,0x20,0xe8,0xe6,0xaf,0xc4,0x2c,0xe5,0xcf,0x96,0x39,0x9f,0x70,0x4e,0xbc,
- 0xad,0x0d,0x25,0x16,0x91,0xd9,0xe1,0x4b,0x8b,0x4f,0x83,0x61,0x11,0x89,0xbf,0xc1,
- 0x8b,0x1b,0x36,0xb4,0x66,0x7d,0x7d,0x66,0xa9,0xb0,0xb6,0x90,0x41,0x8f,0x85,0xb5,
- 0x42,0xfb,0x74,0xa4,0x6e,0xe7,0x21,0x52,0x1e,0x40,0x5e,0x72,0x02,0x13,0x46,0x02,
- 0x1d,0xf1,0x92,0x24,0x8a,0xaf,0x36,0x8d,0x1d,0xbd,0xbc,0xde,0x68,0x9c,0x9e,0x99,
- 0x39,0xbd,0xdd,0xd8,0x6e,0x9c,0x6e,0xe0,0xff,0xa6,0x53,0xdb,0x1e,0xd3,0x3b,0xa8,
- 0x7a,0xad,0x9d,0x96,0x36,0x00,0xe0,0x43,0x2a,0x97,0xd7,0xf1,0x9a,0x48,0x1f,0x6d,
- 0xcf,0x34,0xf0,0xff,0x19,0xe7,0x89,0xd9,0x19,0xd8,0xc5,0x7d,0xc6,0xf6,0xd1,0x85,
- 0x7c,0x39,0x41,0x06,0x6d,0xe6,0x48,0x6c,0x43,0xf4,0xc6,0x24,0xa1,0x87,0x52,0x7b,
- 0x98,0xb4,0x15,0x3e,0xbe,0x29,0x3b,0x95,0x11,0x3d,0xb2,0xbe,0x8e,0x4e,0x03,0x1d,
- 0x3c,0xba,0x18,0xe8,0x6c,0x66,0xf0,0x39,0x9d,0x46,0x57,0x46,0xdf,0x89,0x72,0x5b,
- 0xca,0x19,0x2b,0x56,0xb3,0x28,0xbf,0x53,0x89,0xbf,0x93,0x50,0xd7,0x24,0xd5,0x99,
- 0xa6,0xd1,0x37,0xfd,0xa3,0x07,0xf7,0x86,0x05,0xb9,0xa4,0x7c,0x78,0xc7,0x85,0x0f,
- 0xbb,0x96,0x98,0x56,0x0b,0x64,0x71,0x2a,0x28,0x48,0x6f,0xc3,0x5d,0x9d,0x72,0x0c,
- 0x3c,0x01,0xef,0x4b,0x98,0xf6,0x1d,0xbc,0x30,0x64,0xd8,0x0b,0x33,0x7a,0x95,0x00,
- 0x41,0x01,0x90,0x18,0xe0,0x91,0x7f,0x21,0x16,0xb3,0x7d,0x04,0xd5,0xfe,0x2d,0xf1,
- 0x2f,0x16,0x2f,0x14,0x2f,0x5d,0x3a,0x83,0x23,0x00,0x5d,0xb7,0x0f,0x80,0x12,0x6c,
- 0x1c,0xe0,0x39,0x1c,0xa2,0x5e,0x95,0x44,0x74,0xfd,0x52,0xd4,0x0a,0x05,0x64,0x43,
- 0x25,0x4d,0x54,0x86,0xb4,0xc1,0x30,0x1a,0x51,0x4d,0xd1,0x51,0x47,0xf6,0x49,0x2f,
- 0x37,0x96,0x16,0x56,0x3b,0x8b,0x35,0xc2,0x62,0x67,0x41,0x5b,0xda,0x2e,0xd7,0x91,
- 0xaa,0x60,0x8e,0xc3,0x90,0x84,0xa0,0x8b,0x23,0xb1,0xe5,0x98,0x2c,0x03,0x01,0xf9,
- 0x14,0x3b,0xfa,0x7a,0xbb,0xb0,0xa6,0x69,0x6b,0x0b,0xe4,0x6f,0x81,0xfc,0x45,0x1c,
- 0x6f,0x3b,0xad,0x77,0x2a,0xe8,0x64,0xdb,0x65,0x49,0xee,0x40,0x53,0xdd,0x34,0xcb,
- 0x78,0x65,0xb4,0x86,0xb6,0x40,0xd0,0xd0,0xff,0x35,0xf2,0x24,0x9f,0x16,0x74,0x21,
- 0x72,0xde,0x0f,0xe4,0x2c,0x55,0x62,0xa8,0xb2,0x24,0xd8,0x7f,0x7f,0x67,0x09,0x7b,
- 0x63,0x92,0x16,0x4a,0xd1,0x14,0x97,0xb4,0x36,0xce,0x83,0x12,0x15,0x31,0xe9,0x4f,
- 0x59,0xde,0x5e,0xc2,0x97,0x01,0x3f,0xc8,0xa5,0x40,0x0f,0xf2,0xaa,0xad,0xb5,0x85,
- 0xcc,0xae,0x09,0x73,0xab,0x55,0xcb,0x5c,0x7c,0x8f,0xb0,0xd3,0x8c,0xe4,0x84,0xf4,
- 0x35,0xa4,0x3e,0xf9,0xa6,0xdc,0x4d,0x55,0x95,0xb5,0x15,0x04,0xe4,0xc1,0xbb,0x3d,
- 0x01,0x77,0x83,0xfd,0x54,0x62,0xbf,0xf3,0xe5,0xac,0x53,0x43,0xa0,0xd5,0x02,0x23,
- 0xb0,0xac,0x89,0x67,0x72,0x02,0xdd,0x60,0xe1,0xb4,0xd3,0x0c,0x40,0xfb,0x04,0x52,
- 0x17,0x80,0x51,0x34,0xee,0x0e,0xec,0x2f,0xbc,0x16,0x04,0x4b,0x01,0x38,0xdd,0x01,
- 0x48,0x1e,0x00,0xee,0x0b,0x80,0x15,0xc0,0x63,0x9b,0x7c,0x31,0xdb,0x47,0x8c,0x22,
- 0x36,0xff,0x44,0xfa,0x11,0x45,0xe4,0x02,0x20,0x07,0xe0,0x7b,0x56,0x00,0x20,0x78,
- 0x0d,0x20,0xa7,0x93,0x9c,0x18,0x51,0xa7,0xfb,0x04,0xbb,0x4a,0x85,0x76,0x85,0x34,
- 0x51,0xf3,0xee,0xb7,0xb4,0xc1,0x70,0xac,0xa0,0xea,0x82,0xf1,0x6b,0x12,0x39,0x5d,
- 0xd2,0x56,0x17,0x6b,0x67,0x13,0x2b,0x2b,0xcb,0xad,0x95,0x95,0x95,0xad,0xd8,0x62,
- 0x66,0xad,0xbd,0xae,0xf3,0xae,0x65,0x5d,0xdc,0x6a,0xca,0xac,0xb5,0x62,0x19,0x49,
- 0x1b,0x34,0x2e,0xf7,0xeb,0x85,0x85,0xd5,0xc5,0xc5,0xc5,0x6c,0x36,0x8b,0xff,0x30,
- 0x8b,0xb5,0x25,0xc7,0xdb,0x8e,0x47,0x32,0xf9,0xe5,0xad,0x8e,0xd6,0xb0,0x8e,0x89,
- 0x3d,0x01,0xd5,0xa8,0x97,0xdb,0x6b,0x99,0x55,0xb4,0x42,0xb6,0x96,0x45,0xcf,0x9a,
- 0x0b,0xf9,0x5c,0xcb,0x36,0xfc,0xa2,0xf6,0xbe,0x90,0x3a,0x3a,0x72,0x96,0x1e,0xe7,
- 0xfd,0x79,0xc1,0x06,0xdb,0x14,0xf5,0xc4,0x32,0xbe,0x1b,0x42,0x5a,0xbf,0x90,0xb4,
- 0x87,0x5b,0x6e,0xad,0xb4,0x9d,0x4d,0xbe,0x60,0x34,0x55,0x13,0x9d,0x09,0xd2,0xad,
- 0xce,0x25,0x60,0x58,0x10,0x02,0xf5,0xb8,0x95,0xd2,0x6a,0x16,0xe5,0x76,0x2a,0xb6,
- 0x52,0x4e,0xa8,0x6d,0x49,0xc4,0x41,0x35,0x54,0xdd,0x37,0xfa,0x1b,0x80,0x23,0x61,
- 0x2f,0x2e,0xef,0xb9,0xdb,0x8e,0xe5,0x0e,0xd3,0x5f,0x92,0x77,0xae,0x5f,0x3e,0x4b,
- 0xfb,0xe5,0x7c,0x74,0xc0,0x75,0xe2,0xa9,0xf8,0x21,0xab,0x22,0xe8,0xaa,0x83,0x67,
- 0xf1,0xa9,0x0c,0x00,0xcf,0xd7,0x70,0x74,0x13,0xa5,0x75,0xc2,0x82,0x07,0x80,0x47,
- 0x0e,0xbf,0xd5,0x6e,0x04,0x20,0x35,0x80,0xc3,0xa7,0xf9,0x7b,0xb3,0x8f,0xb4,0x91,
- 0xfb,0x8f,0xad,0xff,0x85,0x09,0xcc,0x85,0x22,0x91,0x7f,0xdc,0x09,0x88,0xee,0x03,
- 0xd8,0x57,0x03,0xd8,0xd6,0x54,0xbc,0xf9,0x1d,0x9f,0x14,0x15,0xad,0x3d,0xb4,0x42,
- 0x12,0x06,0xf8,0xe3,0x91,0x34,0x18,0x96,0x62,0xaa,0x29,0x36,0x2b,0x21,0x4b,0xab,
- 0x6f,0x17,0x32,0x8b,0xb1,0x44,0x6b,0x39,0x4f,0xa8,0x54,0x96,0x57,0x56,0x6a,0x8b,
- 0x99,0x42,0x03,0xb7,0x2b,0x32,0xa5,0xab,0xf1,0x3d,0x7e,0xa3,0x51,0x12,0x54,0xc7,
- 0x19,0x08,0x42,0xc2,0x3a,0x2a,0xf7,0x0b,0x8b,0x35,0xdc,0x23,0x8e,0x46,0x33,0x6d,
- 0x6f,0x3b,0xbe,0xad,0x4d,0xe6,0x57,0x6a,0xab,0x05,0x31,0x7f,0x0d,0x2b,0x0f,0x73,
- 0x7d,0x69,0xa1,0x53,0xdb,0x4a,0xac,0x60,0x85,0xd4,0xb2,0x57,0x6e,0x79,0x9f,0xb4,
- 0x1e,0x4d,0x9c,0x72,0xe2,0xed,0xb5,0x4a,0x82,0xd4,0xd1,0xb9,0xbd,0xc9,0x9d,0x25,
- 0x54,0xbd,0xd6,0x13,0x72,0x57,0x5c,0xe2,0x5e,0x93,0x3c,0xa8,0x85,0xd3,0x42,0x65,
- 0x1c,0x9d,0x49,0xbd,0xb1,0xb6,0x9a,0xdd,0x5a,0xa1,0xae,0x83,0xf7,0x36,0x2b,0x28,
- 0xea,0x94,0x11,0x6b,0x91,0x22,0xc0,0xdf,0xd2,0x25,0x61,0xa7,0xa3,0x86,0xcc,0xfd,
- 0x57,0x0d,0xa1,0x53,0xc1,0x40,0xbc,0xff,0x10,0x25,0x5d,0x5e,0xa4,0x9f,0x16,0x36,
- 0x4a,0xb2,0xa7,0x3d,0xf1,0x73,0x7f,0x9d,0x9d,0xf6,0x7c,0x7b,0x5a,0xb4,0x6d,0x8f,
- 0x21,0xcc,0xaf,0xec,0x1a,0x79,0xaf,0xa2,0x41,0x39,0x1c,0x61,0xaa,0xd6,0xe0,0x55,
- 0x44,0xa6,0xdd,0xdf,0xdd,0x1d,0x91,0x3f,0xba,0x0a,0x60,0x75,0x08,0xb6,0x5a,0x01,
- 0xb1,0x03,0x70,0x35,0x2b,0x00,0x2d,0x62,0xfe,0x8b,0xc5,0x89,0x6f,0xe5,0x72,0x97,
- 0x2f,0x63,0x05,0x60,0xb7,0x00,0x3c,0x3d,0x48,0x1f,0x80,0x10,0xb6,0xa6,0xb2,0x7c,
- 0x1e,0xbf,0x0a,0xdd,0x68,0x03,0xa7,0xdf,0x89,0x9d,0x68,0x64,0x0d,0x86,0x07,0x50,
- 0x95,0x9a,0x17,0x53,0x54,0xf7,0x37,0xcb,0xdb,0xa8,0x7c,0x9e,0x45,0xd2,0x3f,0x39,
- 0x39,0x59,0xad,0xce,0x23,0xf2,0xf9,0xe5,0x95,0xb3,0xd9,0xd5,0xb5,0x8b,0xc4,0xba,
- 0xd0,0x1a,0xa3,0xc3,0x1b,0x5d,0x12,0x54,0x93,0x35,0x7c,0x21,0xbb,0x17,0x59,0x5a,
- 0xad,0x25,0x96,0x2b,0xf9,0x4a,0xde,0x7a,0x56,0xf0,0xdb,0x8e,0xd3,0x34,0x51,0x1a,
- 0x5e,0x9b,0xcc,0x57,0x12,0xd9,0x85,0xa5,0x88,0x24,0x81,0xd5,0x30,0x23,0x48,0x7b,
- 0xc4,0x56,0x5a,0x68,0x25,0x01,0xfc,0x55,0x26,0x32,0xa8,0x91,0x2b,0x0d,0x93,0x7c,
- 0x3e,0x49,0x76,0xa5,0x4f,0x57,0xc2,0x14,0x49,0x18,0xba,0x18,0x11,0xee,0x86,0x24,
- 0xf4,0x90,0x88,0x0c,0x91,0x1b,0x21,0x56,0x83,0x76,0xf4,0xed,0x85,0x45,0xa2,0x5c,
- 0x2b,0xf6,0xc3,0x3e,0x07,0xfc,0x48,0x98,0xbc,0xa2,0xb6,0x14,0x6a,0x5b,0xdc,0xa9,
- 0xd0,0x4a,0xd9,0xd5,0x75,0x49,0xe3,0xff,0x14,0xba,0xc5,0xbb,0xc9,0xfd,0xf5,0x38,
- 0x3a,0x3d,0xed,0xba,0x00,0x9c,0xc0,0xb1,0xf9,0xf7,0x94,0xec,0x3a,0xd2,0xef,0x75,
- 0xe4,0x71,0x7b,0xf0,0x52,0x71,0x3d,0x4f,0x03,0xd0,0x61,0x04,0x46,0xa9,0x84,0xd9,
- 0xf7,0x54,0x5a,0x11,0x95,0x82,0x38,0x4b,0x39,0x14,0x54,0x4c,0x91,0xaa,0x3d,0x84,
- 0xc9,0xd8,0x40,0xa7,0x48,0x5f,0x00,0x3b,0x04,0x70,0xf8,0xc4,0xbf,0xdb,0xe4,0x6f,
- 0xce,0xbe,0x61,0x4c,0x58,0xde,0xff,0xc4,0xe5,0xcb,0xe7,0x2c,0x05,0x40,0x22,0x80,
- 0x76,0x06,0x40,0xdc,0x69,0x01,0xec,0xe7,0x03,0x44,0x47,0x6a,0x2d,0x69,0x9b,0xb8,
- 0x5f,0x8a,0x1a,0xce,0x16,0x93,0x66,0x8b,0x8a,0x35,0xc0,0xcf,0x46,0x0c,0x49,0xac,
- 0x78,0x13,0x15,0xcf,0xb5,0x4e,0x6d,0x65,0x19,0x4b,0x28,0x96,0x7f,0xa4,0x01,0xb0,
- 0x0e,0x40,0x1a,0xa0,0xd6,0x59,0xbb,0xc8,0x67,0x16,0xa9,0x7c,0x43,0x64,0x57,0xef,
- 0x2c,0x27,0x56,0x65,0xf2,0x8f,0x2c,0xb8,0xd6,0xd9,0x42,0xc5,0xbe,0x3a,0x39,0x6f,
- 0x31,0x89,0x37,0x5c,0x73,0x6a,0xbc,0x25,0x6d,0xb8,0x8a,0x76,0x73,0x76,0x51,0x6b,
- 0x47,0x1e,0x17,0x15,0x00,0x3e,0xae,0xd5,0xda,0x4a,0x05,0x1d,0x14,0x5e,0xb7,0x3a,
- 0xef,0x32,0x49,0x3e,0x75,0x7c,0x9b,0x38,0xfd,0x28,0x65,0xda,0xcb,0xc4,0x59,0xe2,
- 0x23,0xa0,0x7e,0xf2,0x12,0x1d,0x41,0xa6,0x58,0x96,0xa1,0x24,0x09,0x3d,0x24,0xf4,
- 0x21,0x79,0x5b,0x21,0xaa,0x06,0x5d,0x5c,0x40,0xe7,0x91,0x9f,0x97,0xb1,0x6c,0xf2,
- 0x8a,0x3a,0x69,0x35,0x8b,0x96,0x85,0x66,0x1a,0xc1,0xdf,0x99,0xc3,0x8d,0xff,0xbc,
- 0x32,0x6b,0xaa,0x9b,0xea,0xc0,0x9e,0x11,0xcb,0xc9,0xb0,0x6b,0xa1,0x67,0xbd,0xea,
- 0xbe,0x17,0x7d,0x9b,0xa5,0xdc,0x77,0xe7,0x9b,0x30,0x25,0x83,0x94,0x62,0x60,0x71,
- 0xd3,0x09,0xbd,0x58,0x80,0x97,0xde,0xeb,0x55,0x05,0xbc,0xf4,0x21,0x5a,0x3f,0x84,
- 0xe9,0xad,0x78,0xe1,0x3f,0xc7,0x3f,0x70,0xf7,0x68,0xb7,0x02,0x90,0x4e,0xc1,0x76,
- 0x08,0xe0,0xd8,0xed,0x47,0x49,0x1a,0xd0,0x37,0xd7,0xa7,0xae,0x16,0x8d,0x68,0x32,
- 0x85,0xcc,0xff,0xc4,0xe5,0xdc,0xb9,0x73,0x73,0x07,0xce,0xe5,0x26,0x8a,0x97,0xac,
- 0x0a,0x80,0x37,0x0a,0x50,0x10,0xfb,0x1f,0x1d,0x59,0x24,0xf9,0xbc,0x26,0xdf,0xfd,
- 0x7b,0xdb,0x2f,0x45,0x8d,0xa4,0xdf,0x6e,0x8b,0x29,0x6a,0x42,0x83,0x61,0x69,0x74,
- 0x33,0x52,0xe6,0xe3,0x84,0xb8,0x92,0xbe,0x5d,0x40,0x6e,0x76,0x2c,0x33,0xdc,0xd0,
- 0x75,0x3d,0xd2,0xd0,0x62,0x15,0xa2,0x03,0xe6,0xf3,0x95,0x95,0xd8,0xaa,0xb6,0xcd,
- 0x37,0xcf,0x97,0xa3,0xec,0x66,0xd3,0xba,0x93,0xf8,0x22,0xb4,0x2a,0xd4,0xd7,0xd7,
- 0x16,0x13,0x95,0xc9,0xf9,0xaa,0x07,0x7a,0xbf,0x55,0x77,0x6a,0xbc,0x99,0x36,0xfa,
- 0x22,0xdf,0xda,0x5a,0xd4,0x2e,0x0a,0x8a,0xc9,0x72,0x00,0x34,0x64,0x37,0xf3,0x93,
- 0x78,0xad,0x79,0x67,0xfd,0x79,0x67,0x3b,0x35,0xbf,0x3e,0x91,0xbe,0x94,0x46,0x1b,
- 0xc8,0xdd,0xc0,0xc1,0x12,0xee,0xe6,0xa9,0x97,0xe5,0x2b,0x24,0xf5,0xac,0xdc,0x14,
- 0x4b,0x42,0x0f,0x43,0xf5,0x65,0x54,0x57,0x98,0xd1,0x85,0xd6,0x15,0xd5,0x88,0xb4,
- 0x57,0x6b,0xf8,0x34,0xbc,0x6b,0xe0,0x51,0x31,0x79,0x45,0x9d,0x34,0x3b,0x15,0xdc,
- 0x07,0x5c,0xd8,0x29,0xdf,0xa1,0xd7,0xce,0xfd,0x15,0xea,0x73,0x86,0x5f,0x63,0x51,
- 0x50,0xde,0x7f,0x8a,0xe4,0xd5,0x78,0x52,0x47,0x39,0xff,0x52,0xbb,0x4b,0x35,0xf4,
- 0xb9,0xe1,0x01,0xcf,0x81,0x60,0xea,0xff,0x5e,0xf8,0xc0,0x11,0x7a,0x77,0x43,0xd3,
- 0xb4,0x5e,0xf0,0x92,0x83,0xbd,0x1a,0x03,0x5b,0x01,0x61,0xe2,0x01,0xd3,0xee,0xca,
- 0x61,0x37,0x0c,0x70,0xc8,0x76,0x00,0x6e,0xc5,0x35,0x00,0xac,0x00,0x4e,0xdc,0xf2,
- 0xff,0x4e,0x5d,0x2d,0x62,0xc4,0xfc,0x4f,0x4c,0xe4,0xce,0xfd,0xc1,0xdc,0x1f,0x1c,
- 0x98,0x3b,0x77,0x19,0x29,0x00,0x52,0x01,0x48,0xa7,0x07,0x99,0x06,0x20,0xe9,0x97,
- 0xcf,0xe7,0x9b,0xa2,0x46,0x42,0xd4,0x12,0xb3,0x23,0x64,0xc7,0x4f,0x18,0x65,0x71,
- 0x31,0x2c,0x65,0x4b,0x9d,0xce,0x42,0xc4,0x30,0x1b,0x99,0xc4,0x50,0xab,0xa6,0x45,
- 0x8c,0x91,0xe1,0xc4,0xfc,0x1c,0x2a,0x9a,0xbf,0x89,0xa3,0xf3,0xa8,0x84,0x71,0x0a,
- 0x60,0x91,0x3d,0x8b,0xf4,0x7a,0xa6,0x92,0x58,0x5d,0x93,0x0c,0x00,0x40,0x24,0x78,
- 0x2d,0x93,0xe9,0xb0,0x68,0x6e,0xc4,0x6b,0xb4,0x81,0xab,0x1b,0x95,0x95,0x84,0xc4,
- 0xcf,0xb0,0xd6,0xd7,0xd7,0x1b,0x85,0xc2,0x5a,0x46,0x5b,0xc0,0xad,0x92,0xe4,0x05,
- 0xb7,0x4f,0x66,0x32,0x5a,0x66,0x41,0x1b,0x36,0xa2,0x83,0x16,0xec,0x2c,0xe9,0x5d,
- 0x71,0x5a,0x94,0x19,0x9f,0x70,0x79,0x57,0xcf,0x5a,0x03,0x00,0xf0,0xe7,0x26,0x31,
- 0xb0,0x93,0x5e,0x6f,0x66,0x5e,0x01,0x98,0x7a,0xa3,0xa0,0x65,0x3a,0xab,0xdc,0x85,
- 0xe8,0x8c,0xa2,0x67,0xc6,0xe0,0x15,0x75,0xb7,0x8c,0x1d,0xaa,0x82,0xa0,0xaa,0x85,
- 0x56,0xca,0xe4,0x88,0xbc,0xeb,0x9f,0xb1,0x8b,0x91,0x3f,0x58,0x8e,0xba,0x22,0x46,
- 0x49,0x18,0x67,0xdb,0x59,0xd1,0xa3,0x24,0x92,0xce,0xcc,0xa7,0xa0,0x43,0x00,0xee,
- 0x3f,0xb6,0x23,0x9f,0xa7,0x23,0x98,0x0a,0x3f,0x5b,0x63,0xf0,0x16,0x75,0xfb,0x06,
- 0x86,0x3d,0xcf,0xc2,0xaa,0x67,0x38,0x83,0x02,0xbc,0x4a,0x62,0x00,0xcf,0x5b,0x35,
- 0x00,0xdc,0x15,0xf0,0x5f,0x5f,0xad,0x4e,0x80,0x6a,0x0e,0x99,0xff,0x4b,0xc5,0x6f,
- 0xe5,0xce,0x1d,0x98,0xab,0xce,0xcd,0xff,0x01,0x52,0x00,0x56,0x04,0xb0,0xeb,0xb5,
- 0x00,0x04,0x69,0xff,0xeb,0x46,0x56,0x97,0x5f,0xec,0x2c,0x89,0x21,0x2a,0xdf,0x14,
- 0x95,0x11,0x9f,0x6c,0x11,0x3e,0x5b,0x2c,0x5d,0xd8,0x69,0x0b,0x42,0x8a,0x2b,0xff,
- 0x4b,0xda,0x9a,0x6e,0xb4,0x2b,0x29,0x4b,0xc1,0x94,0xd2,0xc5,0x58,0xc4,0x68,0x27,
- 0x88,0x0b,0xb0,0x8c,0x3c,0x00,0x21,0x3a,0x67,0xb0,0x15,0xd6,0x78,0xbb,0x80,0x83,
- 0xea,0xeb,0x62,0x16,0x9f,0x19,0x89,0xe8,0xe2,0x43,0x8f,0x0c,0x3b,0x7e,0xfb,0xf2,
- 0x4e,0x0d,0xef,0x05,0xf9,0x19,0x9d,0xc2,0xb6,0xce,0x28,0x00,0xb3,0xbd,0xdd,0x6e,
- 0x37,0xda,0x3d,0xc9,0xf8,0xb4,0xda,0xfb,0x83,0xeb,0xe8,0xb5,0xb5,0x99,0xfa,0x26,
- 0x77,0xa4,0xcd,0x79,0xf9,0xf2,0xe9,0x06,0x31,0xc5,0x62,0xdb,0x46,0x59,0xbc,0x1b,
- 0x73,0xa6,0x4f,0x5b,0xe1,0xa6,0x7d,0xda,0xcc,0x35,0x70,0x5f,0xf4,0x06,0x5f,0xff,
- 0x8f,0xfb,0x65,0x12,0x9b,0x5c,0xec,0xb5,0xa2,0xae,0x2d,0x49,0x7a,0xfe,0x6f,0xaa,
- 0x03,0x37,0x8c,0xf2,0x1c,0x77,0x7d,0x71,0xa6,0x99,0xdf,0x92,0xae,0x59,0xef,0x17,
- 0xde,0x51,0xa7,0xcd,0xb7,0x27,0xd3,0x54,0x58,0x8f,0x1a,0xe9,0xcb,0xab,0x1f,0xf4,
- 0x88,0x29,0x7a,0xdb,0xb4,0x1b,0x09,0x29,0xef,0xc0,0x79,0x75,0xf4,0x02,0xdd,0x5a,
- 0x68,0x57,0x01,0xc2,0x76,0x2b,0xa0,0xd5,0x08,0x78,0xff,0x95,0x5b,0xfe,0x6b,0x79,
- 0xea,0xea,0x10,0x49,0xe1,0xe0,0xdf,0x85,0xcb,0xe7,0xe6,0x48,0x45,0x15,0xd5,0x00,
- 0x90,0x03,0x80,0xe5,0xff,0xab,0x48,0xfe,0x9f,0x8e,0x3f,0x6b,0xb7,0x00,0xf4,0xcd,
- 0x02,0x4a,0x37,0x16,0x96,0xb1,0x35,0x15,0xa4,0x49,0x52,0xe2,0x08,0x55,0xbf,0x6c,
- 0x51,0xbe,0xc1,0x30,0xa7,0x36,0xf8,0x71,0x22,0x9a,0xb8,0x95,0xad,0x31,0xdc,0x30,
- 0x1a,0x55,0x66,0xeb,0xdd,0x8a,0x6e,0x66,0xe6,0x2d,0xd1,0xac,0x2d,0x2c,0xa1,0xca,
- 0x39,0xb3,0xf1,0x02,0xe3,0x8a,0x90,0x21,0x0b,0x48,0x06,0x02,0x77,0x00,0xc6,0x04,
- 0xd2,0x7c,0xe8,0x41,0x5e,0xe2,0xee,0x5b,0xf4,0x74,0x56,0x8d,0x67,0x8c,0x98,0xad,
- 0x00,0x78,0x3f,0x43,0x2f,0x92,0x5a,0x13,0x7a,0x3e,0x5b,0xb2,0x66,0x52,0x7d,0xd6,
- 0xfe,0xc3,0xba,0x14,0xbd,0x21,0x53,0x2b,0x0e,0x4a,0x02,0x39,0x4b,0x8b,0x92,0xec,
- 0x6a,0xbf,0xae,0x84,0x38,0xbb,0x72,0xab,0x53,0x28,0x0b,0x77,0x43,0x92,0x30,0x94,
- 0xf3,0xcb,0xdc,0xc8,0x74,0x85,0xeb,0x40,0x7f,0x14,0xfc,0xba,0x78,0x43,0x5b,0x3e,
- 0x4b,0xb2,0x14,0x7a,0xb7,0x52,0xc6,0x0b,0xe6,0x9a,0x98,0x76,0x89,0xcc,0xbf,0x3b,
- 0xc0,0xc2,0xae,0xf9,0xbd,0x57,0xc3,0xb6,0x3d,0x75,0x24,0x8c,0x1e,0xe3,0x87,0xb3,
- 0xf1,0x54,0x37,0x3f,0xd7,0x25,0x77,0x8c,0xbb,0xe7,0x07,0x84,0xa9,0x35,0xb9,0xfa,
- 0x01,0x9b,0x3e,0x4c,0x8b,0x34,0x93,0x36,0xec,0xec,0x8d,0x5e,0x38,0xcc,0x6e,0xdc,
- 0x0d,0x5b,0xb8,0xad,0x00,0x56,0x08,0xe0,0x79,0x52,0x03,0x40,0xf2,0x7f,0xcb,0x3b,
- 0xa6,0xae,0x0e,0x8b,0x24,0xf8,0x3f,0x81,0xac,0x3f,0xaa,0x38,0xe3,0x68,0xd5,0xb9,
- 0xdc,0xe5,0x22,0x15,0x00,0x78,0x36,0xa0,0xff,0x9f,0x1e,0xc6,0x37,0x5f,0x32,0x00,
- 0x88,0xef,0x00,0x60,0x23,0x2f,0x92,0x26,0x2a,0xc1,0xfe,0xf3,0x6e,0xfa,0xf0,0x4e,
- 0x41,0xe8,0xa4,0x8b,0x43,0xf4,0xa8,0xc4,0xd6,0x84,0x40,0x7a,0x32,0x8b,0x3c,0x82,
- 0x2a,0x89,0xce,0x65,0x49,0xfb,0x3c,0xbd,0x16,0xdb,0xb4,0x50,0xd2,0x48,0x50,0x5d,
- 0xd2,0x49,0xb6,0x7f,0x10,0x7a,0x6c,0xcd,0x6c,0xa1,0xbd,0x4c,0x56,0x12,0xb5,0xcc,
- 0xd2,0x69,0x46,0x01,0x2c,0x0d,0x6c,0xdc,0x03,0x50,0x31,0xed,0xca,0x12,0x7f,0xfb,
- 0xfc,0xb2,0xab,0xda,0x99,0xe5,0x18,0xf1,0xc6,0xfa,0x27,0x0c,0x14,0x0d,0x27,0x73,
- 0xa3,0x6f,0xb3,0x7d,0x6f,0x4a,0x6d,0x67,0x0c,0x18,0xfe,0x82,0xb2,0x99,0x02,0x29,
- 0xa3,0x81,0x73,0xa7,0x79,0xf7,0x7f,0xd3,0xf0,0xcb,0x66,0x18,0xe0,0x10,0xee,0xa6,
- 0x42,0x7b,0xae,0x7d,0xa5,0x05,0xd3,0x91,0x5d,0xaa,0xf6,0x4f,0xa5,0xe6,0xb9,0x4b,
- 0x52,0x95,0x7f,0x26,0x83,0x80,0xef,0xc6,0xe3,0x56,0xfe,0x3d,0xbf,0x83,0x0b,0x39,
- 0xd0,0x6e,0x3f,0x0d,0xb5,0x6d,0x4a,0x45,0xb9,0x11,0x00,0x1c,0x02,0xb8,0xf5,0x94,
- 0xdd,0x06,0xf0,0xc8,0x2d,0xb7,0xfc,0xc5,0xd5,0xa9,0x00,0xa8,0xd5,0x64,0x34,0x74,
- 0xe9,0x42,0x0e,0x99,0xff,0x49,0xdc,0xb2,0x33,0x89,0x14,0xc0,0xe5,0x62,0x31,0x95,
- 0x22,0x01,0x80,0xa7,0xbd,0x0a,0x40,0x3f,0x1d,0x10,0x2f,0x14,0x86,0xc8,0xcd,0xe7,
- 0xef,0xab,0x5f,0x8a,0xda,0x84,0x19,0x4b,0x64,0x65,0x29,0xaa,0x5c,0x83,0xe1,0x39,
- 0x63,0x5b,0x2c,0x52,0xc8,0xfc,0xaf,0x1b,0xe6,0xa4,0xe4,0x90,0xe2,0x55,0xbd,0x51,
- 0xa9,0x4e,0x56,0x49,0xfb,0x7c,0x84,0x0b,0x98,0x33,0x0e,0x00,0x1e,0x00,0x8c,0x0c,
- 0x59,0xc2,0x87,0xab,0xe5,0xe3,0x55,0xb0,0x24,0x67,0xf4,0x65,0x54,0xd3,0xc0,0x6d,
- 0x0d,0x0b,0x05,0xdc,0x0a,0xe8,0x6d,0x43,0xdb,0x5b,0x0c,0x5b,0x4a,0xd5,0x4c,0x6c,
- 0x2d,0xca,0x82,0x25,0x92,0xae,0x35,0x98,0x92,0x35,0x1c,0xa3,0xe8,0xff,0x4b,0x42,
- 0x0f,0x21,0xd3,0x6e,0xb6,0xe7,0x97,0x2d,0x0c,0x2a,0xff,0xc3,0x6d,0xf9,0x18,0x50,
- 0x9c,0x42,0x6d,0x59,0xee,0x3f,0xbf,0x90,0x31,0xb0,0xc2,0x91,0x70,0x8b,0x5b,0xa7,
- 0xa6,0x4d,0x2b,0x5b,0x03,0xe7,0x84,0xd7,0x5d,0x4a,0xd0,0x13,0xb4,0x1d,0xf7,0xec,
- 0x79,0xd8,0xa9,0xbf,0xd3,0xed,0x89,0x5e,0xd7,0xa0,0xd9,0x30,0xbb,0x19,0x37,0x13,
- 0x91,0x8f,0x28,0x7a,0x2d,0x09,0x4e,0xd5,0xc4,0xa9,0x03,0x84,0x9d,0x46,0x40,0xec,
- 0x00,0x3c,0x7c,0x3b,0x09,0x01,0x7e,0xe1,0x3d,0x53,0x57,0x03,0xfd,0x0c,0x31,0xff,
- 0xb9,0x03,0x48,0xfc,0x2b,0x95,0x47,0x91,0x02,0xa8,0x1e,0x38,0x77,0xc1,0x75,0x00,
- 0xdc,0x51,0x80,0xfa,0x0e,0x03,0x54,0x2a,0x38,0x4d,0xd4,0xdc,0x1e,0xfc,0xfa,0x73,
- 0x17,0x47,0x16,0xb7,0x16,0x65,0x7d,0xc0,0xd8,0x52,0x10,0xd7,0x4c,0x4d,0xb0,0x4d,
- 0x4d,0x75,0xa7,0x6c,0xd4,0x7d,0xc4,0x74,0x22,0x82,0x14,0x40,0x35,0x8f,0x8a,0xe2,
- 0xc2,0x36,0x37,0xaa,0xd5,0x26,0x53,0x65,0xed,0xa0,0x4a,0xf5,0x22,0xaa,0x54,0x07,
- 0xe8,0x24,0x2f,0x92,0x8a,0x44,0x2a,0x44,0x01,0x20,0x25,0x66,0x45,0x1a,0xdc,0x69,
- 0x48,0x46,0xf7,0x7f,0x12,0xa2,0x39,0xb3,0x16,0x43,0x55,0x95,0x91,0x4d,0xfe,0xfe,
- 0xf9,0x0d,0x00,0x56,0x68,0x9f,0xcd,0x2e,0x48,0x46,0x57,0x52,0x25,0x03,0x80,0x19,
- 0x31,0x9f,0xce,0xc5,0x83,0xca,0xbf,0x66,0xb7,0x52,0xf6,0x1e,0x00,0x10,0xe7,0xfe,
- 0x8a,0xb7,0x1d,0x47,0xff,0x06,0x1e,0x17,0x4d,0xe4,0x38,0x95,0x02,0x18,0x76,0x83,
- 0x6b,0x6c,0xb8,0x9e,0xd2,0x04,0x9c,0x00,0xb3,0xce,0x00,0x15,0xd6,0x63,0x84,0x9c,
- 0x92,0x69,0x5a,0x45,0x78,0x9e,0xbe,0x53,0x05,0xa1,0x0e,0x40,0xba,0x2a,0xdd,0xdf,
- 0xc0,0x89,0x0b,0x38,0x31,0x00,0xa7,0x11,0xf0,0x79,0xd2,0x06,0x88,0x6a,0x00,0x3f,
- 0xc1,0xdf,0xfa,0x7d,0x21,0x83,0xdc,0xff,0x4b,0xa8,0xf6,0x8f,0x3c,0xe6,0x47,0x97,
- 0x5b,0xcb,0xcb,0xf9,0xdf,0xad,0xce,0xe5,0xac,0x00,0x40,0xd7,0x6b,0x01,0x0c,0x50,
- 0x05,0xb0,0xbc,0x69,0xed,0xb4,0x38,0xe4,0x9c,0x5f,0x8a,0x9a,0x99,0x59,0x44,0xbe,
- 0xb3,0xd8,0x45,0x9d,0x35,0x3b,0x21,0x73,0x5b,0x0c,0x12,0x34,0x0d,0xd3,0x30,0x7c,
- 0x4b,0x4b,0x11,0x2b,0x00,0x54,0x03,0xa8,0xad,0x2e,0x45,0xb8,0xcd,0x33,0xc9,0x88,
- 0x24,0xf1,0x4d,0x13,0x07,0xc9,0x08,0x36,0x3e,0x5f,0x71,0xa4,0x9d,0xc7,0x75,0xa6,
- 0xe5,0xc4,0x62,0xa6,0xbd,0x4e,0xb7,0x02,0xaa,0x89,0x7d,0x9f,0x31,0x65,0xc2,0xe8,
- 0x2c,0x2e,0x2c,0x89,0xce,0x95,0xef,0x00,0x60,0x99,0x46,0xb6,0x43,0xc6,0xd7,0x09,
- 0x30,0x00,0x98,0x91,0x45,0x75,0x85,0x76,0x79,0x87,0x6f,0xb9,0x8d,0x0c,0xaa,0xc7,
- 0xb0,0x43,0x25,0x1b,0x03,0x8a,0x55,0xa8,0x45,0x6b,0xdc,0x5f,0xc1,0xfd,0x57,0xcd,
- 0x7d,0xa8,0x39,0xbd,0xff,0x90,0x63,0xcc,0xa9,0x9a,0xbd,0xd0,0x61,0x37,0xcc,0xfa,
- 0xe2,0xb3,0xac,0x00,0x3b,0x99,0x3a,0x5e,0xfa,0x00,0xdb,0x06,0x40,0x47,0xec,0x3d,
- 0x15,0xc1,0xb4,0xfe,0xb3,0x29,0x82,0xb4,0xef,0xc0,0x19,0x7c,0xca,0x25,0xf1,0xf4,
- 0x92,0x5b,0x05,0xb0,0xf3,0x80,0x89,0x02,0x78,0xdb,0x55,0xa9,0x00,0x54,0x3e,0x9b,
- 0x3a,0x83,0xcc,0xff,0xdc,0x7c,0xbe,0xd2,0xc2,0x2c,0xe7,0x49,0x05,0x20,0x74,0xc6,
- 0x6a,0x01,0xa4,0x73,0x80,0x7b,0x87,0x00,0x49,0x1a,0x79,0x76,0xed,0xb4,0x38,0x00,
- 0x90,0xef,0x00,0x60,0xc3,0x0b,0x6b,0x8d,0xb2,0x50,0x10,0xb8,0x06,0xc3,0x84,0xa1,
- 0x89,0xe3,0x58,0xe0,0x7e,0xe8,0x3d,0x84,0x2c,0x67,0x6a,0x93,0xd5,0xc9,0x65,0x49,
- 0xc4,0x8c,0x69,0x79,0x5f,0x41,0xf2,0x8f,0x7c,0x84,0x91,0x40,0xe3,0xd5,0x88,0x1c,
- 0x30,0x0b,0x93,0x24,0xd2,0xb0,0x85,0xf3,0x80,0xe8,0x42,0xbf,0x59,0xd9,0x6f,0x05,
- 0x50,0x34,0xd7,0x16,0x0a,0x0d,0xb1,0x0b,0x84,0x9f,0xcb,0x5c,0xea,0xe8,0xb8,0x1b,
- 0x84,0x24,0xa7,0x47,0x32,0x00,0x98,0xbe,0x58,0xb1,0x06,0x00,0xe4,0x96,0x1d,0x38,
- 0x19,0x27,0x8b,0x1d,0x2a,0x6d,0x46,0xa8,0x50,0xb1,0xad,0x94,0x59,0x63,0xa9,0x51,
- 0x17,0x14,0x53,0xd3,0xf0,0xcb,0x14,0x1f,0x88,0xd2,0xdd,0x94,0x24,0x7b,0xb5,0x6e,
- 0xb7,0xd3,0xbd,0x2b,0x6e,0xb4,0x81,0xa7,0x84,0x9a,0xaa,0xb8,0xbb,0xf5,0xff,0xf0,
- 0xb4,0xe7,0xed,0xf3,0xb6,0xde,0x4d,0xfa,0xa7,0x25,0x9e,0xdb,0x03,0x25,0xfb,0xd4,
- 0x00,0xc4,0xb4,0x42,0xb0,0xfe,0x8d,0xbb,0x9d,0x8f,0x5d,0xf9,0x77,0x42,0x80,0x48,
- 0xfe,0xff,0xf4,0x6a,0x8c,0x02,0xa2,0xce,0x25,0x91,0xfb,0x7f,0xf9,0xdc,0xdc,0x64,
- 0x7e,0xb9,0x95,0xb8,0x27,0x41,0x14,0xc0,0x81,0x8f,0x5f,0xb8,0x74,0xe6,0x29,0xd7,
- 0x01,0x08,0x38,0x0a,0x18,0xbe,0xf9,0x32,0x6b,0xda,0xf4,0x1b,0x00,0xcc,0x8c,0x2c,
- 0x35,0x22,0x75,0x71,0xe2,0x09,0xa6,0xd8,0xa5,0x1b,0x11,0xdc,0x44,0xcf,0x29,0x09,
- 0x24,0xfe,0xc3,0x3d,0x8c,0x45,0xa9,0x62,0x64,0x71,0x7e,0x0e,0xee,0xa2,0xc7,0x35,
- 0x46,0xd1,0xa2,0x3d,0x54,0x1e,0xc2,0x03,0x80,0xd5,0x37,0xf9,0x6e,0x68,0x3e,0xb3,
- 0x6a,0xf0,0xe4,0x8d,0x0c,0x49,0x37,0x5a,0x41,0x0a,0x60,0x9b,0x49,0x03,0x90,0x75,
- 0x37,0xdc,0x13,0x21,0xa3,0xd1,0x3e,0x5d,0xde,0x11,0xbb,0x2a,0xfa,0x75,0x25,0xce,
- 0x9a,0xed,0xed,0x88,0x28,0x65,0xb2,0xba,0x4d,0xd7,0xce,0xdc,0x10,0xdb,0x0a,0x07,
- 0x4d,0x53,0xb6,0x32,0x89,0x67,0x46,0x7a,0x3a,0x54,0x63,0x11,0x13,0x1f,0x99,0xd8,
- 0x93,0x7b,0xf0,0x69,0x11,0x64,0x1c,0xb5,0xbd,0xed,0xf0,0x74,0xd8,0x0b,0xcb,0xd1,
- 0x32,0xee,0x39,0xec,0xb3,0x9e,0x91,0x0f,0x3b,0x2d,0x03,0x5e,0x98,0x8f,0x91,0x65,
- 0x57,0xd8,0x3d,0xe3,0x1e,0xe6,0x1e,0x8e,0x47,0xc0,0x37,0x0e,0x3a,0xb5,0x00,0x6f,
- 0xa0,0xd1,0xe9,0x69,0x7b,0xba,0xc2,0x69,0xae,0x27,0x90,0xab,0x13,0x58,0x05,0x70,
- 0xec,0xd8,0x51,0xe4,0x00,0x1c,0xad,0xf3,0xf7,0x7e,0x1f,0x50,0x27,0x90,0xfb,0x5f,
- 0x44,0xb5,0x7f,0x24,0xfe,0xf7,0x24,0xb6,0xb6,0x48,0x2e,0xfd,0xdc,0x39,0xa7,0x02,
- 0xd0,0xb5,0x5b,0x00,0x82,0x54,0x00,0xf0,0x00,0x60,0x48,0xf9,0xd3,0x35,0x61,0x6b,
- 0x17,0x3e,0xb5,0xe9,0xa4,0x6e,0xba,0x3d,0xf5,0x19,0xca,0xb4,0x64,0x17,0x0d,0x8d,
- 0x8c,0x7b,0xc3,0x17,0x16,0xa3,0x67,0x61,0x49,0x6b,0x7a,0x6b,0x7e,0x72,0xf9,0xac,
- 0x38,0xac,0x05,0x1d,0x01,0x9c,0x1c,0xf1,0x69,0xf8,0x0e,0x38,0x3e,0x5f,0xa9,0x65,
- 0x74,0x70,0xb6,0x41,0x7e,0xe5,0xc5,0x55,0xa4,0x00,0x68,0xe9,0x34,0xf7,0x96,0xc7,
- 0x2e,0x90,0x32,0x74,0x5d,0x7f,0x5c,0x32,0x52,0x91,0x5f,0x76,0x55,0x4d,0x8d,0xc8,
- 0xa7,0x28,0x12,0x35,0x53,0xda,0x19,0x89,0x49,0x98,0xba,0x61,0xd0,0x34,0xe5,0xa1,
- 0xfa,0xb2,0x74,0x0c,0x28,0x46,0xa1,0xe6,0x54,0x5d,0xa6,0x98,0xd4,0xbd,0xe6,0xfe,
- 0xda,0x1c,0x0e,0x87,0x69,0x59,0x62,0xec,0xb4,0x13,0x12,0x70,0x84,0x98,0x6a,0xe7,
- 0x77,0x17,0x67,0xf2,0x71,0xbc,0x66,0x7f,0xb7,0x0a,0x4f,0x8d,0x29,0x3c,0x2d,0x67,
- 0x76,0x9a,0x56,0x26,0xdc,0x0f,0xde,0xd7,0x54,0x2f,0xa5,0xf0,0x38,0xbd,0x80,0xf5,
- 0x95,0xa7,0x00,0x9e,0x27,0x4d,0x00,0xf7,0xff,0xd2,0xf7,0x09,0xf7,0x72,0xef,0xec,
- 0x14,0xa3,0x67,0x2e,0x5d,0xc8,0xcd,0xfd,0x6e,0xbe,0xb5,0xb2,0xb5,0x15,0x8b,0x9d,
- 0x45,0x0a,0x60,0x12,0x55,0x00,0x2e,0x84,0xbc,0x51,0xc0,0xa8,0x08,0x40,0xaf,0x2a,
- 0x40,0x2b,0x82,0x07,0x00,0x9b,0x11,0x87,0x9c,0xf1,0xa9,0x4d,0x77,0x23,0x9b,0x78,
- 0xb0,0x2e,0x71,0x34,0x6f,0xa6,0x89,0x3a,0xb1,0xb3,0xda,0x59,0xd2,0xb9,0x34,0x36,
- 0x54,0x50,0x85,0xde,0x3c,0x2c,0xa1,0x11,0x6d,0x72,0x3e,0x9f,0x58,0x5c,0x38,0xcd,
- 0x59,0x1a,0x7a,0x74,0x11,0x77,0x00,0xb0,0x7e,0x19,0x08,0x7e,0xc4,0xb3,0xc8,0xcf,
- 0x20,0x69,0x00,0x5b,0x9d,0xb5,0x19,0xa6,0x15,0xb0,0x7c,0x26,0xe0,0x36,0x82,0x11,
- 0x35,0x0d,0xac,0x2a,0x45,0xf9,0xf7,0x13,0x9a,0x98,0x4a,0x46,0x42,0x13,0xeb,0x8c,
- 0xfe,0x03,0x80,0x3d,0xce,0x4b,0xed,0xc0,0xcd,0x71,0x76,0x4a,0x97,0xd8,0x4a,0x49,
- 0x4f,0x53,0x92,0x51,0x91,0x62,0x12,0x0a,0x49,0x73,0x17,0xa3,0x22,0x4a,0x39,0x19,
- 0xa6,0x0c,0xbe,0x37,0x92,0x0f,0x1d,0x82,0xe3,0xad,0xba,0x23,0xf0,0xd3,0xde,0x4a,
- 0xf4,0x42,0xae,0xdf,0xee,0x55,0x0a,0xc2,0xec,0x47,0xda,0x03,0x60,0xaa,0x15,0x4c,
- 0x2e,0x11,0xbd,0xc2,0xac,0xb7,0x51,0xc4,0x78,0x98,0x96,0xfd,0xf0,0x34,0x1d,0x01,
- 0x38,0xe5,0x46,0x00,0xae,0xc6,0x5c,0xc0,0x7a,0x0a,0x57,0xff,0xcf,0xe1,0x76,0xac,
- 0xb3,0x5b,0xb5,0x5a,0x2d,0xb6,0x95,0x40,0x15,0x80,0x73,0xb9,0x0b,0x5e,0x04,0x10,
- 0xe7,0x00,0x05,0xe9,0x06,0x98,0xb7,0x86,0xd3,0x0c,0x32,0xe4,0x1c,0x21,0xdd,0x50,
- 0x65,0x05,0x9a,0x35,0x3b,0xf1,0xe1,0x48,0x56,0xb4,0xd0,0x4d,0xd5,0xe8,0x67,0x5f,
- 0x13,0x46,0x02,0x57,0x00,0xc4,0x2e,0xb0,0x94,0x36,0x22,0x89,0x2f,0xd2,0x4e,0xb2,
- 0xc1,0x8a,0x1a,0xce,0x03,0x32,0x13,0xf3,0x56,0xb6,0xd1,0xea,0xda,0x4c,0xdd,0xa4,
- 0x86,0x1d,0x6a,0x44,0x83,0x6e,0x24,0x08,0x49,0xdd,0xe7,0x62,0xf9,0x4d,0xaf,0xd8,
- 0x9a,0xda,0x54,0xc5,0xe9,0x02,0xa7,0xa4,0x03,0x80,0x35,0x48,0x1e,0x14,0x92,0xff,
- 0xde,0xcd,0xf6,0xfd,0xc1,0x03,0x80,0xf5,0x4b,0xe9,0x4a,0x9a,0x9b,0xa8,0x36,0x27,
- 0x1b,0x37,0x69,0xaf,0xb9,0xbf,0x16,0x9f,0x38,0xe4,0xb5,0xaf,0x31,0x42,0xee,0xd5,
- 0xed,0xd9,0x66,0x01,0xce,0x63,0x67,0xeb,0xeb,0x7c,0xa2,0x0e,0x15,0x13,0x70,0x27,
- 0xff,0xa5,0xe4,0xdd,0xfd,0xc8,0xbc,0x9d,0xa6,0xdd,0x0b,0x6f,0x93,0xd3,0x9c,0x0b,
- 0x41,0x1d,0x2f,0x56,0x10,0xb3,0x96,0x02,0xb8,0x13,0x55,0x00,0x9e,0x27,0xf2,0x7f,
- 0x35,0x1a,0x00,0x1a,0xa9,0x54,0xe8,0xc2,0xe5,0x39,0x24,0x2a,0x89,0x58,0x6d,0x31,
- 0xbb,0x58,0x8b,0x9d,0x5d,0xa9,0xcc,0x57,0xad,0x16,0x80,0xcf,0x92,0x08,0xe0,0xd3,
- 0x5e,0x0d,0xa0,0x67,0x25,0x60,0xd2,0x6f,0x52,0x2c,0xbf,0x01,0xc0,0x1a,0x3e,0x13,
- 0x79,0xd0,0x66,0x27,0xaa,0xaf,0x49,0x2c,0xb4,0x3a,0xa5,0xf5,0x0b,0x4d,0x47,0x23,
- 0xc3,0x93,0x79,0xd2,0x1b,0x8d,0xab,0xd6,0x52,0x01,0x73,0x6b,0x18,0x7f,0xc9,0x00,
- 0x60,0xc1,0xdb,0xa1,0xbb,0x05,0x92,0x07,0x94,0x47,0x0a,0x20,0xc3,0x45,0xb5,0x0a,
- 0xfb,0x99,0x07,0x34,0xa6,0xfb,0x4c,0x7b,0x52,0xf6,0xd9,0x4b,0x5e,0xf5,0x59,0x41,
- 0x36,0x00,0x58,0x01,0xd5,0xdc,0x64,0xcd,0xf6,0x83,0x4a,0xe4,0x01,0xc3,0x9e,0xa6,
- 0x8c,0x6f,0x49,0xa0,0x06,0x00,0xab,0xe2,0x3c,0x5f,0xc9,0xe8,0xea,0xcd,0x81,0x07,
- 0x45,0x91,0xf3,0xca,0x43,0x61,0x46,0x6c,0x5d,0x0f,0x80,0xd1,0x00,0x4c,0x3c,0xc0,
- 0x8b,0xdf,0xd1,0x06,0xdc,0x5e,0xdd,0xf3,0x07,0x66,0x29,0xcd,0xe1,0xba,0xee,0x8e,
- 0xe0,0xd2,0x3b,0x65,0xf5,0x85,0xf5,0xbd,0x1b,0xef,0xf7,0x76,0x49,0x8d,0x1a,0x12,
- 0xa6,0xbe,0x76,0xf6,0x1a,0xde,0x38,0x64,0x3b,0x00,0x77,0x3f,0x7c,0x0c,0x29,0x80,
- 0xa3,0x5f,0x94,0xdd,0xce,0x3d,0x52,0x88,0x22,0xf9,0xcf,0x1d,0x98,0xac,0xac,0x9c,
- 0xad,0x65,0x17,0x47,0x17,0xb3,0xb5,0xd8,0x0a,0x76,0x00,0x70,0x05,0xc0,0x1b,0x05,
- 0x2c,0x5e,0x0a,0x30,0x17,0xd0,0x9c,0x89,0x87,0xd3,0x93,0xd4,0xa6,0x63,0xf2,0x15,
- 0xd2,0x6d,0x9f,0x63,0xa2,0xc7,0xb4,0x98,0x30,0x3a,0xd9,0x85,0x99,0x3a,0x9b,0xc5,
- 0xd3,0x6c,0x06,0x68,0x29,0x8e,0x99,0xad,0xbc,0xed,0xd6,0x32,0x07,0x44,0x39,0xcc,
- 0x21,0xd3,0x19,0xb2,0x84,0x3b,0x82,0x01,0xf2,0x50,0xa2,0x8d,0xf2,0x10,0x4e,0x04,
- 0x5c,0xc6,0x89,0x80,0xeb,0x4c,0x7b,0x5b,0x66,0xd7,0xf5,0xd9,0x92,0x30,0xe4,0x72,
- 0x37,0xe2,0x73,0xb1,0x48,0x83,0x86,0x70,0xb8,0x25,0x65,0xd2,0xef,0x8e,0x8b,0x09,
- 0x43,0x78,0x00,0xb0,0x04,0x19,0x00,0x28,0x78,0x1e,0xa4,0x3c,0x1c,0x3c,0x61,0x8d,
- 0x3a,0xd0,0x6b,0xd4,0x91,0x78,0xa1,0x29,0x93,0xfe,0xa9,0xa9,0xbd,0xe7,0xfe,0x5a,
- 0x3c,0xf8,0x11,0xaf,0x1a,0xcf,0x39,0xfc,0xd4,0xac,0xdc,0xb3,0x6e,0xf5,0xde,0x4b,
- 0xf3,0xb3,0xeb,0xf4,0xae,0xb0,0xd3,0xb2,0xee,0x05,0x10,0xc3,0x5e,0x1d,0x21,0xec,
- 0xfd,0xa3,0x5e,0xc3,0xae,0xc0,0xdb,0xff,0xe8,0x74,0xe3,0x69,0x4e,0x4d,0xb8,0xbd,
- 0x01,0x3c,0x0d,0xe0,0x84,0x2d,0xa9,0x8e,0x80,0x77,0x93,0x0a,0xc0,0xd5,0x18,0x03,
- 0x24,0x13,0x4d,0x5d,0x9a,0xc8,0xe1,0xb6,0xb2,0x58,0x76,0xb1,0x73,0x5f,0xa7,0x93,
- 0x8d,0x6d,0xb5,0x2a,0xf3,0x07,0xce,0x5d,0xb8,0x64,0x0d,0x02,0xf0,0x4c,0x9a,0x0e,
- 0x01,0xf6,0x72,0x00,0x7c,0xbd,0x69,0x3d,0x93,0xc9,0xac,0xb2,0x4f,0xf2,0xe7,0x37,
- 0xef,0x16,0x5d,0xec,0x5a,0x66,0xad,0xb6,0x26,0xd6,0x29,0xea,0xfd,0x23,0x53,0x29,
- 0x33,0x33,0x69,0x17,0x6b,0xa6,0xb8,0x51,0xe9,0x48,0x21,0x77,0x54,0xfd,0x41,0xa6,
- 0x20,0xe3,0xf7,0x13,0x59,0xcf,0xdb,0xf9,0xc6,0x19,0x76,0x38,0x90,0x66,0x6d,0x37,
- 0x16,0x2d,0xde,0xc2,0xfd,0x0e,0x33,0x9d,0xd5,0x4c,0x07,0x5d,0x25,0xf7,0x8a,0xc9,
- 0x5c,0x79,0xb2,0x93,0x42,0x86,0x5e,0xcc,0x79,0x76,0x1a,0x7e,0x77,0x7c,0x51,0x54,
- 0x16,0x99,0xed,0xe5,0xc4,0xa2,0xa4,0x73,0xf1,0x54,0x5b,0xd8,0xae,0xf3,0xc4,0xc7,
- 0xd6,0xc9,0xf2,0x0a,0xae,0x88,0x14,0xaa,0x74,0x0c,0x38,0x4f,0xa1,0x46,0x7d,0xef,
- 0xfa,0x2e,0xa7,0xfd,0x10,0xce,0xe6,0x61,0xc7,0xce,0xba,0x63,0x77,0xd3,0x75,0xfb,
- 0x69,0xf6,0x9d,0xf7,0xc9,0x79,0x15,0xcd,0x31,0x63,0xcc,0xa9,0x6f,0x19,0xa8,0x6e,
- 0x3d,0xb3,0xdc,0x97,0xcc,0x9b,0x30,0x6d,0xfa,0x85,0xd5,0x99,0xe6,0xc2,0x0d,0x3c,
- 0x33,0xa8,0xe5,0x00,0xe0,0x0a,0xc0,0xd1,0xff,0x70,0x15,0x12,0x00,0x6a,0xd1,0x33,
- 0xa1,0xcb,0xe7,0x90,0xfb,0x7f,0xb6,0xb6,0xd8,0x59,0x45,0xf7,0x74,0x31,0xbb,0xb5,
- 0x52,0x99,0xac,0x9e,0x9b,0xb8,0x60,0xa5,0x00,0x5a,0x5d,0x40,0x6c,0x07,0xa0,0x67,
- 0x00,0xb0,0x48,0xac,0xe9,0xc5,0xb2,0xe0,0xfc,0x0d,0x0a,0xd5,0x0e,0x54,0xca,0x44,
- 0x70,0xdb,0x1a,0x3f,0xec,0x45,0x33,0x80,0x81,0x2e,0x69,0x91,0x4a,0x85,0x24,0x24,
- 0xb1,0xa5,0x91,0x1a,0x5e,0xc4,0x1e,0xc6,0x5f,0x9c,0x55,0xc7,0x6f,0xc8,0x02,0x29,
- 0x13,0x23,0x6d,0x27,0x0d,0x60,0x81,0xcd,0x03,0x6a,0xb6,0x76,0xd1,0xa0,0x9d,0x34,
- 0xf5,0xf5,0xb2,0x69,0xe0,0x1a,0xcf,0x55,0x49,0xf8,0x90,0xc4,0x36,0xb2,0x78,0xde,
- 0x2e,0x6d,0x46,0x1c,0x8f,0xa7,0x0f,0x42,0xfd,0x80,0x64,0x12,0xcb,0x14,0x6a,0x63,
- 0xa2,0x58,0x2c,0x5e,0x42,0x8f,0x62,0xcd,0x6f,0x63,0xfb,0x90,0xfb,0x6b,0x41,0x77,
- 0x01,0xf6,0x9c,0x00,0xd7,0x96,0x7b,0xf5,0x7a,0xaa,0x7d,0x9e,0xf6,0xea,0xc3,0x8e,
- 0x20,0x52,0x4b,0xcc,0x3a,0xff,0x68,0x39,0x67,0x5e,0x7d,0x34,0x00,0x2f,0xe1,0xec,
- 0x17,0xcc,0xc2,0x4c,0x8a,0x91,0xd5,0x02,0x40,0x6a,0x00,0xa7,0x4e,0x9d,0x42,0xf2,
- 0x7f,0xec,0xd8,0xd1,0xab,0xd1,0x03,0xa0,0x15,0x3d,0x53,0xfc,0x16,0xaa,0xfe,0x63,
- 0xf3,0xbf,0x9a,0x59,0x58,0x5d,0xbd,0x2f,0x5b,0x3b,0xbb,0x8c,0x1c,0x80,0xcb,0x4e,
- 0x0a,0xc0,0x33,0x6e,0x0d,0x40,0xa1,0xda,0x00,0x3c,0xdc,0x8f,0xa1,0x11,0xcb,0x9a,
- 0x0a,0xd2,0x34,0x30,0x5e,0x83,0x61,0xbc,0xdd,0x4e,0xc8,0xda,0x14,0x83,0x4c,0xa0,
- 0x57,0x35,0x12,0x95,0x56,0x4d,0x9c,0xdf,0x73,0xc5,0x5d,0x22,0x89,0x3b,0xc9,0x77,
- 0x24,0xb3,0x6a,0x44,0x9e,0x1e,0xa4,0xc0,0xcd,0x99,0x85,0xaa,0x33,0x1c,0x48,0x9b,
- 0x19,0x77,0x50,0x9d,0x1f,0xbc,0x50,0xe3,0x51,0x89,0x6a,0x1d,0x49,0xe6,0xfe,0x3e,
- 0x21,0x49,0xea,0xf7,0x46,0x62,0x1a,0xac,0x84,0x09,0x99,0x1d,0x51,0xb3,0xd6,0xda,
- 0x92,0x55,0xa8,0xec,0xb9,0x8f,0x36,0xe5,0xb3,0xb7,0x11,0x7c,0x3a,0x32,0x0f,0xce,
- 0xfd,0xd3,0xb4,0x8f,0x3d,0x1b,0xf6,0x9e,0xb4,0x11,0xa6,0x05,0xcf,0xa9,0xd7,0xdb,
- 0xa6,0x7f,0x96,0x75,0x0f,0x9c,0x6f,0x39,0x41,0xa6,0x64,0x57,0x3e,0x66,0xc0,0x2c,
- 0xfb,0x46,0xbe,0x20,0xed,0x59,0xd8,0x87,0x30,0x4b,0x1a,0x03,0x37,0xec,0x34,0x20,
- 0x24,0xff,0x87,0xac,0x26,0xc0,0xa3,0xdf,0xdd,0xdc,0xc5,0xed,0xee,0xc3,0x64,0x2a,
- 0x54,0x3c,0x77,0x60,0x7e,0xf9,0x9e,0x18,0x12,0x7f,0x3c,0x5a,0xc5,0x6a,0xa7,0x86,
- 0x23,0x80,0x73,0xe7,0x26,0x2e,0xb9,0x0e,0x80,0x55,0x03,0x70,0x67,0x03,0xe5,0xeb,
- 0x7e,0xce,0xa4,0x58,0x7a,0x16,0x4f,0x8a,0xb7,0xcb,0x49,0x31,0x29,0x28,0x0b,0xdd,
- 0x8d,0x68,0x78,0xd8,0x8b,0x3a,0xdf,0xf9,0xdf,0x67,0xd4,0x1b,0x86,0x94,0xd9,0xc1,
- 0xc5,0x7a,0x9b,0xef,0x68,0xe6,0x19,0x40,0x2c,0x6a,0x67,0x65,0xa2,0x36,0xe0,0x20,
- 0xb4,0x15,0x83,0xf4,0x39,0xce,0x7b,0xc3,0x81,0x38,0x87,0x6b,0x04,0xe9,0x49,0xc0,
- 0x92,0x8e,0xac,0x0e,0xbd,0xb8,0x9b,0xe9,0xf8,0x02,0x22,0xe9,0x62,0xdf,0xd2,0xf1,
- 0x00,0xa0,0x33,0x03,0x4c,0x84,0x6a,0x21,0xe4,0x12,0x45,0x8d,0x6c,0x05,0xcf,0x8b,
- 0x24,0x9b,0xa7,0xa5,0x0f,0xea,0xe4,0x7e,0x75,0x9a,0x38,0x1c,0x1e,0x77,0x84,0x99,
- 0x97,0xb7,0x59,0x4e,0x8c,0xf9,0xcf,0xd3,0x8c,0x35,0xe6,0x4d,0xb9,0x5f,0x7b,0x3f,
- 0xaf,0x07,0x7a,0xc9,0xbb,0xbb,0x61,0x4a,0xc7,0x6c,0x50,0x31,0xc6,0x0d,0x7a,0x73,
- 0x48,0xfc,0x67,0x67,0x89,0x03,0x80,0x73,0x80,0x6e,0xff,0xf3,0xfd,0x4f,0x00,0x6c,
- 0xce,0x45,0x43,0xc5,0xdc,0x5c,0x7e,0x39,0x51,0x5b,0x44,0xe2,0x8f,0x58,0xe8,0x2c,
- 0xd6,0x12,0xcb,0x79,0x2b,0x05,0x80,0x44,0x00,0xc6,0x48,0x1b,0xa0,0xa7,0x00,0xfc,
- 0x4c,0x5a,0x6a,0x64,0xd4,0x8e,0xb7,0xef,0xb1,0xe0,0x52,0x03,0x80,0x45,0x47,0x3a,
- 0xd6,0x8c,0x72,0x5c,0xfa,0x5f,0x34,0x40,0x39,0x88,0x6f,0xb7,0x2b,0xb2,0xe9,0x28,
- 0xbd,0x0c,0x20,0x32,0x00,0xd8,0xaa,0x38,0x10,0xdd,0xa0,0x89,0x2f,0xa5,0x84,0x31,
- 0x8a,0x63,0x80,0x79,0x9c,0x06,0x80,0xf3,0x80,0xbc,0x2d,0x49,0x86,0x1d,0xef,0x43,
- 0xba,0xa1,0x55,0xb6,0x16,0x0b,0x91,0x9d,0x41,0xad,0x71,0x40,0x24,0x09,0x43,0x43,
- 0x26,0xee,0xc5,0x38,0x23,0xb6,0xdc,0xf6,0x41,0x18,0xa9,0xb1,0x6b,0x76,0x96,0xa5,
- 0x99,0xc4,0x01,0x50,0x97,0x72,0xfb,0x53,0x03,0x60,0x12,0x80,0x7c,0x65,0x35,0xd0,
- 0x22,0x9e,0x40,0x5b,0xef,0xc6,0xd9,0xc0,0xc0,0xac,0xb0,0xa8,0xcf,0xb6,0x25,0x95,
- 0x02,0x67,0x5d,0x3a,0xf8,0x60,0x2f,0xb2,0x81,0x9f,0xe8,0xed,0x06,0xf2,0xff,0xc3,
- 0x56,0x05,0xe0,0xf9,0xbb,0xbf,0xff,0xd8,0xed,0x7f,0xb7,0xff,0x3d,0x00,0x8d,0x09,
- 0x1c,0xfe,0xaf,0x4e,0x2e,0x6f,0xd5,0x3a,0x99,0x85,0x6f,0x68,0x6b,0xda,0x42,0xa6,
- 0x53,0xdb,0x5a,0x21,0x29,0x00,0x9e,0x03,0x80,0x07,0x02,0xb6,0x47,0x02,0xf1,0xe4,
- 0x9f,0xbf,0x5b,0x49,0x64,0x4d,0x63,0xbb,0xbc,0xf9,0x2c,0x9e,0x77,0x9f,0x32,0xb3,
- 0x96,0x08,0xb3,0xb2,0xe0,0x37,0xeb,0x0d,0xcb,0x68,0xd9,0x1e,0xd7,0x92,0x5d,0x79,
- 0xdd,0x8d,0x5a,0xe1,0xc4,0x37,0x6b,0xc8,0x12,0xee,0x00,0x76,0x06,0x4c,0x7c,0x8b,
- 0x67,0x8d,0x1a,0x19,0x0d,0xc0,0x1a,0x0f,0x88,0xc9,0x03,0x1a,0x34,0xac,0x85,0x07,
- 0xd1,0x48,0xc8,0xc6,0x51,0xd8,0x27,0xd6,0x65,0x03,0x80,0xd9,0x99,0x1b,0x83,0x2a,
- 0x1c,0x3e,0xb3,0x63,0x8c,0x64,0x12,0x17,0xc4,0x0a,0x55,0x20,0xd4,0xcc,0x53,0x03,
- 0x5e,0x2b,0x29,0x07,0x39,0xa1,0xa3,0x9f,0x32,0x61,0xe5,0x5d,0xf5,0x5e,0xfa,0x81,
- 0xdf,0x90,0x5c,0xae,0x59,0xf5,0xc0,0x56,0x14,0x58,0x55,0x40,0x27,0x23,0xda,0xc2,
- 0x3f,0x8b,0xfb,0x01,0x90,0x3f,0x1c,0x02,0x9c,0x3d,0x44,0x1c,0x00,0x1c,0x01,0xfc,
- 0xf2,0xdf,0xed,0x7f,0x02,0xa0,0x59,0x8c,0x5e,0xba,0x90,0xc3,0x19,0xec,0xd9,0xd5,
- 0xcc,0x5a,0xa1,0x50,0x40,0x0a,0x60,0x75,0x31,0x96,0x58,0xb6,0x22,0x80,0xa4,0x13,
- 0x50,0xd7,0x4e,0x02,0xa0,0x1a,0x01,0xa5,0x4e,0x40,0xd7,0x1e,0x4e,0x53,0x36,0x8f,
- 0x9c,0x43,0x93,0xfd,0xf3,0x29,0x25,0x5e,0xb6,0xd8,0x84,0x19,0x93,0x25,0x94,0x4a,
- 0xca,0xb0,0x84,0xbc,0xb9,0x82,0xb3,0xd1,0xf9,0x95,0x3d,0xe5,0x81,0x07,0x00,0xb3,
- 0x44,0x8d,0x9f,0x82,0x68,0xd0,0x82,0x98,0xd6,0x8c,0x44,0x75,0x7e,0x7e,0x72,0x19,
- 0x0f,0x3a,0xd0,0x60,0x14,0xc0,0xf6,0x67,0x07,0xdb,0x14,0x19,0x95,0x8c,0x8c,0x4a,
- 0xa4,0x3a,0xd7,0x6c,0x5f,0xfd,0x00,0xc9,0xd8,0xe3,0x56,0x1e,0xa4,0x24,0x73,0xc3,
- 0xa3,0xe9,0xdc,0x2e,0xe7,0x68,0xc8,0x2b,0x1f,0x86,0x41,0xbe,0xcb,0xf2,0x56,0xe7,
- 0x27,0xc4,0x9e,0x04,0xfc,0xc6,0x7c,0x4e,0x49,0xf7,0x9b,0xaa,0x7d,0x10,0x8e,0x4f,
- 0x87,0xc7,0xd9,0x0a,0xbe,0x44,0x56,0xf9,0xa0,0x9b,0x4f,0x40,0x9e,0x16,0xf7,0x59,
- 0xc9,0x02,0x4c,0xfb,0xc0,0xac,0xe4,0x97,0x40,0xe0,0x65,0x37,0x88,0xeb,0x3f,0x4e,
- 0xed,0x72,0xc3,0xea,0x0b,0x8c,0x1c,0x80,0x3b,0x4f,0x7d,0x04,0x47,0x00,0xbf,0xbc,
- 0xff,0x09,0x80,0x7a,0x28,0x75,0xe9,0xc2,0x39,0x3c,0x56,0xc6,0xe2,0xaa,0xa6,0x15,
- 0x96,0x0a,0x4b,0x6b,0xc8,0x01,0xc8,0x6e,0xb5,0xf2,0xf3,0x73,0x97,0x89,0x03,0x10,
- 0x75,0x23,0x00,0x8e,0x03,0xe0,0x57,0x03,0x18,0x23,0xd6,0x74,0x49,0x9c,0xd0,0x93,
- 0xbf,0xf7,0xee,0x9f,0x1f,0x5e,0xb6,0x18,0x69,0x50,0x16,0x73,0x0a,0x82,0xa5,0x8a,
- 0xe4,0x8c,0x58,0x62,0x51,0x6b,0xf0,0xd2,0xed,0x75,0x01,0x2c,0x15,0x0a,0xcb,0x09,
- 0x5a,0xd4,0x1c,0x06,0x9f,0x82,0xbe,0x3b,0xac,0xb7,0xec,0xe1,0x40,0xd0,0x25,0xa8,
- 0xd3,0x69,0xcd,0xda,0x60,0x79,0x40,0x78,0x1c,0x85,0x84,0x3b,0x2f,0x92,0xab,0x03,
- 0x54,0xe7,0xea,0xf9,0x5e,0xb8,0x26,0x59,0xba,0x69,0xbf,0xf1,0xbd,0x09,0x75,0x9f,
- 0x01,0xc0,0x32,0xdb,0x62,0xda,0x8e,0xb7,0x65,0xf6,0x9d,0xa3,0x02,0xf8,0x5c,0x82,
- 0xf8,0x8c,0x86,0xed,0x7f,0xe4,0x71,0xbf,0x46,0x3e,0x6a,0x63,0x4d,0xe6,0x93,0x8d,
- 0x9a,0xd8,0x7b,0x14,0x80,0x8c,0x00,0xe0,0x2b,0x7e,0x81,0xe4,0x52,0x74,0xe6,0x65,
- 0xc2,0x3f,0xc8,0x36,0xd9,0xac,0x42,0x37,0xd6,0x47,0xe2,0xfc,0xde,0x52,0x1b,0x61,
- 0x5b,0x05,0xb8,0x81,0x80,0xb0,0xe3,0x00,0xe0,0x16,0x80,0xfd,0x4f,0x00,0x8c,0x9c,
- 0x49,0x85,0x26,0xce,0x91,0x71,0x2c,0x33,0xdf,0x28,0x2c,0x2d,0xb5,0xf1,0x44,0x9a,
- 0xc8,0x01,0x58,0x59,0x9e,0xb7,0x9b,0x00,0xf1,0x4c,0x60,0x9e,0x02,0xa0,0x67,0x04,
- 0xe7,0x49,0xb7,0xb5,0x21,0x9f,0x79,0xa4,0xc9,0xad,0x75,0x1e,0xde,0x0b,0x79,0x48,
- 0x4a,0xdc,0xa8,0xbb,0xf5,0x1c,0xc9,0x29,0x12,0x72,0x0a,0x82,0xb5,0xcf,0x87,0x46,
- 0x16,0x65,0xcd,0xda,0x94,0xfc,0x5b,0x89,0x2f,0x92,0x51,0xb5,0x07,0xef,0xbd,0x93,
- 0x6a,0x44,0x2a,0x64,0xee,0x81,0xb3,0xd9,0x4c,0x21,0xc2,0xe4,0x01,0x75,0x06,0xcb,
- 0x03,0xb2,0x86,0xfa,0x47,0xd2,0x48,0xd2,0xf7,0x55,0x72,0xb1,0xec,0x6b,0xe5,0x8f,
- 0x73,0x2d,0x55,0x7b,0x05,0xdf,0x6b,0x2b,0xab,0xdb,0x20,0x2d,0xbb,0x52,0xbb,0x4f,
- 0x36,0x11,0xa2,0xb7,0xed,0x26,0x75,0xe7,0xf0,0x93,0x1c,0x0e,0x9f,0xb1,0x1f,0x1f,
- 0x2e,0x60,0xf9,0x17,0x15,0xaa,0xbb,0x21,0x6b,0x13,0x4d,0xef,0x10,0x39,0x9a,0x03,
- 0x5e,0x2c,0x09,0xc7,0x37,0x38,0x21,0xf6,0xf5,0xfe,0x05,0xb7,0x9f,0xf7,0xed,0x45,
- 0xa9,0x67,0x72,0x03,0xbd,0x57,0x7a,0x16,0x01,0x26,0x57,0x88,0x6e,0x4f,0xa0,0x16,
- 0xa2,0x46,0x09,0x22,0xe1,0xfe,0x71,0xbc,0xa7,0x71,0xdc,0x0f,0x08,0xd7,0xfb,0xd1,
- 0x3b,0xec,0x0e,0xa0,0x2f,0x91,0x2a,0x9b,0x25,0x11,0x00,0xe4,0x00,0xfc,0xdd,0xb1,
- 0x3f,0xec,0x51,0x00,0x76,0x87,0x1e,0x3a,0x73,0x69,0xe2,0x5c,0xb5,0x82,0x6e,0x7f,
- 0x46,0x2b,0xb4,0x2f,0xb6,0x91,0x02,0xd0,0x70,0x04,0xc0,0xca,0x01,0x74,0x1c,0x00,
- 0xa7,0x11,0xd0,0x0d,0x01,0xc8,0xea,0x00,0xe8,0xe6,0x2f,0x4b,0xbd,0xe9,0xa9,0x29,
- 0x6b,0x1a,0x79,0xc3,0x20,0x4f,0x6b,0x2e,0x79,0xc3,0x20,0xf3,0xc8,0xab,0xb2,0x42,
- 0xea,0xa5,0xe8,0x56,0xf1,0x8c,0x72,0xa4,0x4d,0x91,0x59,0x2a,0x98,0xfd,0x8f,0xea,
- 0x19,0x6b,0x7a,0x0f,0xb6,0x94,0x79,0x3d,0x80,0xf0,0x00,0x60,0x44,0xfe,0x85,0xb1,
- 0x28,0x76,0xd1,0x13,0xb5,0xa8,0x37,0xf2,0xd5,0xea,0x64,0xa5,0x75,0x76,0x71,0x61,
- 0x29,0x32,0xb2,0xa9,0x7a,0xd6,0xb2,0xf6,0xec,0x00,0xdb,0xc1,0x43,0xfd,0xaf,0xd4,
- 0x32,0x6d,0x3c,0x87,0xa9,0x7b,0xb9,0xf0,0x9b,0x4d,0x55,0x9a,0x36,0x4f,0xd2,0x21,
- 0xc9,0xd5,0xa5,0x2f,0x2e,0xb9,0xbe,0xaa,0x6c,0x79,0xd9,0x00,0x60,0x78,0x00,0x40,
- 0x59,0xb3,0xdd,0x94,0xd5,0x72,0xb7,0xb9,0x69,0x58,0xdb,0xdc,0x74,0x8f,0x07,0xbf,
- 0x37,0x54,0x7e,0x5e,0x5f,0xec,0xbb,0xe0,0x11,0x95,0xc5,0x4c,0x22,0xab,0x0c,0x6c,
- 0xaa,0xf6,0x31,0x3a,0xe7,0xa4,0x8a,0xf7,0x7f,0x71,0xaf,0x0a,0xe0,0xb8,0x6f,0xfc,
- 0x4f,0xf0,0xfe,0xfd,0x9a,0xee,0xb8,0x65,0xdd,0xf7,0x61,0xcf,0x66,0x87,0x9d,0x4a,
- 0xfb,0xac,0x97,0xd7,0xef,0xa9,0x00,0xbb,0x0a,0xe0,0xfc,0x1a,0x96,0x56,0x11,0x1c,
- 0x23,0x4f,0xfe,0x8f,0x5b,0x95,0x00,0xf7,0x2b,0xcb,0x0d,0xd8,0xc0,0x0e,0xc0,0xa1,
- 0x3b,0xef,0x44,0x0a,0xe0,0xf9,0x63,0x7f,0xf7,0x39,0xd9,0xdd,0xdf,0x13,0x66,0x31,
- 0x75,0x69,0x62,0x6e,0x7e,0x39,0x51,0xeb,0x2c,0xac,0x2d,0xb5,0xb7,0xdb,0x8d,0x8b,
- 0x4b,0xd8,0x01,0xa8,0xe1,0x4e,0x00,0xc4,0x01,0xb0,0x42,0x80,0x63,0x69,0x3a,0x0f,
- 0x58,0xee,0x00,0xc4,0x5d,0xc7,0x55,0x28,0x43,0x78,0x22,0xe9,0x1d,0x3c,0x8d,0xbc,
- 0xee,0x3c,0x74,0xfc,0xbe,0x5e,0x37,0x65,0xfd,0x7f,0xa7,0x34,0x57,0x5e,0x72,0x23,
- 0x89,0x4a,0x4c,0x1c,0xc6,0x2e,0x58,0x4f,0xd1,0xa8,0xbe,0x6a,0xe7,0x23,0x31,0x07,
- 0xe3,0x39,0xf7,0xa5,0x4e,0xc3,0x1a,0xaf,0x42,0x38,0x86,0x73,0x83,0x17,0xbb,0x92,
- 0x95,0x07,0x34,0x89,0xd3,0x00,0x16,0xda,0xcc,0xac,0x20,0xea,0x40,0x79,0x40,0xd9,
- 0x48,0xa5,0x85,0x47,0x15,0x8e,0x94,0xeb,0xf8,0x3a,0x59,0x97,0x4b,0xaf,0x8f,0xd4,
- 0x4d,0x24,0x31,0x32,0x05,0x80,0xe4,0x8a,0x5c,0x5c,0xef,0xea,0x92,0xf5,0x4c,0xf3,
- 0x71,0x43,0xe2,0xd1,0x4b,0x92,0xfa,0x53,0x46,0x6d,0x88,0xb4,0xdc,0x8a,0x1d,0x86,
- 0x90,0x80,0xe2,0x6d,0xeb,0xe2,0xc3,0xd4,0xeb,0x2a,0x9f,0x4b,0x54,0xd2,0x6c,0x85,
- 0x2a,0x6a,0x12,0x32,0x53,0xfb,0x8e,0x8e,0x57,0xd3,0xed,0x23,0x35,0x31,0xe2,0xfd,
- 0xaf,0xed,0x31,0x06,0x70,0x3c,0xbc,0xc1,0x8d,0xd9,0x23,0xd1,0x00,0x3d,0xd5,0x83,
- 0xe8,0xff,0x0b,0x5d,0x79,0x65,0xb5,0x03,0xff,0xfa,0xff,0xac,0xf5,0x71,0x43,0x58,
- 0x2c,0x6c,0x7d,0xc7,0xfc,0x80,0x8c,0xff,0x86,0x15,0x0f,0xc0,0xe7,0x61,0x47,0x00,
- 0x3f,0xf2,0x91,0xe7,0x9f,0xff,0xfe,0x7f,0x26,0xb9,0xf9,0x7b,0x43,0xcd,0xa5,0x2e,
- 0x5d,0x9e,0x9b,0xaf,0x9c,0xcd,0xae,0x22,0xf9,0xdf,0x9e,0x69,0x6c,0x23,0x0f,0x40,
- 0xcb,0x2c,0x5a,0x4d,0x00,0x38,0x07,0x28,0xf5,0x54,0xd2,0x76,0x00,0x9e,0xc6,0x8d,
- 0x80,0x4e,0x0c,0x80,0xcb,0x50,0x27,0x1a,0x41,0x6b,0xb7,0xce,0xca,0x6a,0xd3,0xd6,
- 0x34,0xdd,0xfa,0xfa,0x7a,0xa3,0x7d,0xba,0x81,0xa7,0x92,0x27,0x2f,0xdb,0x8d,0xc6,
- 0xf6,0x0c,0x2a,0xe3,0x92,0xc5,0xbd,0x16,0xba,0x9c,0xd9,0x5a,0xde,0x12,0xb7,0x19,
- 0x2c,0xfe,0x8f,0xec,0x3f,0x9e,0x5f,0xa0,0x87,0xfc,0x93,0x01,0xc0,0xf0,0x3c,0xd4,
- 0xfc,0x11,0xec,0x66,0x20,0xba,0x52,0xd5,0xd0,0x26,0x71,0x23,0x00,0x92,0xde,0x85,
- 0x8b,0xb8,0xfd,0xce,0xdd,0xf1,0xe6,0x20,0x71,0xad,0x58,0x64,0x19,0x57,0x22,0xb0,
- 0x3a,0x9e,0x69,0x9c,0x26,0x17,0x0b,0x5f,0xb3,0xd3,0xeb,0xb8,0x43,0xbf,0x44,0x01,
- 0xe0,0xf9,0x86,0xca,0xe5,0xf5,0x19,0x44,0xc3,0x59,0x1a,0xaf,0xb6,0xbe,0x5e,0xd6,
- 0x85,0xc9,0xc9,0x38,0xf9,0xb7,0x0e,0x2b,0x6a,0x2e,0xb6,0xe4,0x99,0x5b,0x78,0x86,
- 0xe5,0x7a,0xf9,0x34,0x3a,0x8c,0x19,0xfb,0xbe,0x59,0xff,0x4e,0x6f,0xe3,0x1b,0xb8,
- 0xc3,0xf7,0xc2,0x42,0x0a,0x75,0x19,0x4f,0x53,0xa4,0x8b,0x2e,0x20,0xd2,0x23,0x75,
- 0x3d,0x72,0xfa,0xf4,0xb6,0xb5,0x05,0xfc,0x77,0x7a,0x66,0x3d,0x52,0xc6,0xd5,0x1c,
- 0x2e,0xb9,0x23,0xd8,0xe8,0x4b,0xf2,0x7b,0x80,0xfe,0x8e,0x58,0x62,0xe4,0x64,0xd3,
- 0x58,0x4f,0x2f,0x24,0x60,0x3b,0xde,0x6c,0x54,0xde,0x9b,0x2d,0x5c,0x9a,0x1b,0xec,
- 0xac,0xe7,0xd5,0x13,0xc6,0xa7,0xed,0x46,0x3a,0x4b,0x62,0xed,0xd7,0x59,0xf7,0x03,
- 0x85,0xb5,0x28,0xa5,0x01,0xb0,0x7f,0x1f,0xde,0x20,0xc3,0xfd,0x6c,0x38,0x3f,0xb9,
- 0x51,0xff,0x71,0xcb,0x0b,0xb0,0xc4,0x1f,0x37,0x01,0x62,0x0f,0xe0,0x4e,0xe4,0x01,
- 0x7c,0xe4,0xfb,0xbf,0xff,0x3f,0x0a,0xf7,0x7e,0xaf,0xa8,0x73,0xa9,0x22,0xaa,0xff,
- 0xb7,0x90,0xfc,0x6b,0x85,0x8b,0xdb,0x33,0xeb,0x48,0x28,0x97,0x0a,0x0b,0xab,0xd9,
- 0xad,0x44,0x85,0x0c,0x03,0x70,0x29,0x95,0xa2,0xda,0x00,0xac,0x44,0xe0,0x67,0xa9,
- 0xc1,0x00,0xa8,0x72,0x8d,0xbc,0x69,0xc7,0xfe,0x8b,0x23,0xbb,0xd7,0x23,0xdb,0x85,
- 0xb5,0xb5,0x85,0x85,0x05,0x6d,0xc1,0x42,0xd3,0x16,0x70,0xc0,0x51,0x3a,0x46,0xcd,
- 0xb6,0x6b,0xde,0x27,0xf4,0xad,0x0a,0x19,0xa2,0x93,0xeb,0xc4,0x1f,0x0d,0x52,0x18,
- 0x52,0xba,0xb6,0x28,0x19,0x68,0x92,0x1a,0x02,0x2c,0x51,0x5e,0x26,0x2d,0x04,0x82,
- 0x0a,0xda,0x55,0x11,0x2c,0x91,0x3c,0x20,0xa2,0x00,0x70,0x1a,0x00,0x5d,0xab,0xd8,
- 0x19,0xa0,0x6d,0x3b,0xa1,0x57,0x2a,0xa4,0x3d,0x66,0xc1,0x41,0xc3,0x4f,0x7c,0xb1,
- 0xca,0xa6,0x64,0x04,0x10,0x3c,0x0b,0xf2,0x0c,0x8e,0xdb,0x2c,0xb8,0x97,0x57,0xc3,
- 0x8f,0x35,0x3c,0x0d,0xba,0x98,0x45,0xc0,0xd5,0x6d,0xf0,0x71,0x25,0x47,0x16,0xe5,
- 0x03,0x80,0x22,0x65,0xb9,0xa3,0x37,0xda,0x68,0xdb,0x9a,0xb7,0x75,0xfb,0x0e,0xa2,
- 0xef,0xca,0x7c,0x2e,0x11,0x56,0xa8,0xa8,0x08,0x48,0x1c,0x2a,0xbb,0x08,0x14,0x34,
- 0xfa,0x9c,0xb4,0x42,0xe1,0x62,0x43,0x1f,0xe1,0x2b,0x68,0x7e,0x73,0x1a,0x07,0xe4,
- 0x70,0x98,0x88,0xce,0x38,0x2d,0x80,0xe3,0xec,0x7b,0x52,0xe7,0x76,0x85,0x7f,0xdc,
- 0x4e,0xb9,0xb3,0xc4,0x7a,0x9c,0x89,0x19,0x8c,0xcf,0xba,0x52,0x3d,0xee,0x1a,0x6a,
- 0xd7,0x49,0xa7,0xcc,0xf6,0xac,0xf8,0xc1,0x8b,0x3b,0x58,0x62,0x8f,0x95,0xcc,0xc6,
- 0xac,0xbb,0xa3,0x0d,0xa7,0xa6,0x30,0xee,0x38,0xfb,0x8e,0xd5,0xdf,0xc0,0xf2,0x3f,
- 0x8e,0x75,0xc0,0xc6,0x2c,0x09,0x01,0xde,0x89,0x1c,0x80,0xe7,0x9f,0xff,0xc8,0x55,
- 0x18,0x00,0x28,0x9f,0x0a,0x5d,0xc6,0xfe,0x3f,0xb2,0xff,0x85,0xf6,0x4c,0x03,0xd9,
- 0xe8,0x06,0x76,0x00,0x3a,0xb5,0x17,0x71,0x13,0x80,0xd5,0x0d,0xd8,0x52,0x00,0x63,
- 0xe9,0xa7,0xdd,0x2a,0x80,0xa8,0x01,0x4a,0xe4,0xe6,0xb7,0x70,0xbc,0x5d,0x18,0xd8,
- 0x1d,0x8f,0xd6,0x19,0xc1,0xf3,0xc8,0x67,0x17,0xb3,0xe8,0x49,0x1e,0x35,0xf4,0x40,
- 0x64,0xd6,0xda,0xe2,0xc4,0x9e,0x94,0x7b,0x1f,0x32,0x63,0x15,0x6b,0x92,0x10,0x66,
- 0x19,0xbf,0x21,0x85,0x58,0x42,0x46,0x26,0x23,0x8c,0x6a,0xd5,0xa4,0x93,0x7b,0x86,
- 0xf4,0x15,0x3c,0xf3,0xb5,0x38,0x05,0x41,0xc0,0x01,0xc0,0x38,0xe2,0x31,0x63,0xd1,
- 0xee,0x0c,0x4c,0x66,0x05,0xa1,0x64,0x4f,0x0f,0x1e,0x51,0xac,0xe8,0xcb,0x93,0xcb,
- 0xcb,0x89,0xad,0x5a,0xcd,0xbe,0x5a,0x8b,0xe4,0xba,0x2d,0x76,0x70,0x9d,0x40,0x2a,
- 0x59,0xfa,0xe9,0xc2,0x42,0xa7,0x63,0x5f,0x57,0xbc,0x42,0x0d,0xaf,0xd0,0x41,0xb7,
- 0xf4,0xb4,0x18,0xd3,0x93,0x5c,0xbb,0xae,0xde,0xc1,0x53,0x37,0x8b,0x53,0xb7,0x90,
- 0x59,0x56,0x96,0x50,0x7d,0xd0,0xbb,0x71,0x78,0x17,0xe4,0x78,0xd0,0x1d,0x6c,0x08,
- 0xb9,0x44,0xd6,0x34,0x25,0x33,0xe2,0x00,0x20,0x4d,0x32,0x57,0x73,0xa6,0xb3,0x38,
- 0xea,0x6c,0x29,0x8b,0xcf,0x69,0x35,0x53,0xb8,0xb8,0x2e,0x58,0x80,0xf6,0x9e,0x42,
- 0x00,0x87,0x5d,0x09,0x1c,0x0f,0xd3,0x4a,0x40,0x68,0xb8,0x67,0x35,0xc3,0x34,0x35,
- 0x06,0xcf,0x06,0xab,0x31,0xd8,0xc6,0xc0,0x0d,0xdb,0x0b,0x40,0xff,0xb1,0x07,0xb0,
- 0xd1,0xe3,0xd5,0x7a,0x71,0x96,0xb5,0xd5,0xc6,0x86,0xe3,0x05,0x90,0x18,0x9f,0xad,
- 0x1d,0xc8,0x91,0xd8,0x7a,0x6b,0xdc,0x0a,0x00,0x8e,0x63,0xeb,0x3f,0x6d,0x2b,0x00,
- 0x6c,0xff,0x7f,0xe3,0x03,0xfc,0x55,0xdd,0x3b,0x2b,0x56,0xfd,0x7f,0x6b,0x31,0xa3,
- 0x15,0x90,0xf9,0x5f,0x8f,0xac,0xaf,0x6f,0xe3,0x08,0x40,0xb6,0xb6,0x62,0xe5,0x00,
- 0x58,0x93,0x81,0x27,0xbb,0x63,0x5d,0xab,0x06,0x80,0x83,0x80,0x74,0x26,0x90,0x57,
- 0x0b,0x28,0x25,0x88,0xfc,0x9f,0x96,0xcd,0x23,0x5b,0x6f,0x14,0x90,0x4f,0x71,0x76,
- 0x25,0xf1,0xe2,0x0a,0x45,0xa2,0x86,0xe5,0x44,0x74,0x00,0x3c,0xf7,0x3e,0x3a,0x92,
- 0xb5,0x46,0xf1,0xe3,0xa4,0x38,0x90,0x7c,0xe6,0x8c,0x8c,0x26,0x8e,0x80,0xab,0x8e,
- 0x78,0x95,0x87,0x49,0xbd,0x95,0x90,0x54,0x11,0x02,0x0f,0x00,0xc6,0x13,0xef,0x18,
- 0xb1,0x79,0xac,0x00,0x12,0xb5,0xd5,0x82,0x35,0x2b,0x88,0xb3,0xf3,0x48,0xe0,0x26,
- 0xc5,0xaa,0x3e,0x84,0x7c,0x88,0xe5,0xd6,0x0a,0x4b,0x02,0xb9,0x04,0x85,0xd3,0x92,
- 0x49,0xfa,0x36,0xcd,0x72,0x7b,0x01,0x67,0x6d,0xf3,0x2b,0xd4,0xf0,0xec,0xa4,0xa2,
- 0x4c,0x8b,0x75,0x1b,0xdc,0x72,0x6b,0x4f,0x16,0xc0,0x5d,0x2b,0xd5,0x28,0xb7,0xd7,
- 0x3a,0xb5,0x2d,0xf6,0xbe,0x59,0x9b,0x5f,0x59,0x29,0x08,0x71,0x98,0x21,0x1d,0x17,
- 0x01,0x21,0x5f,0x93,0x14,0x81,0xd3,0x56,0x11,0x78,0x11,0xaf,0xb9,0xb2,0x82,0x0f,
- 0x37,0x81,0xcf,0x09,0x77,0x99,0xe0,0xf4,0x6f,0x73,0x72,0x77,0x97,0xdf,0xe2,0x07,
- 0x37,0xc2,0xe3,0xae,0xf5,0x65,0x82,0xff,0x1b,0x9e,0x35,0x1e,0x9f,0x9d,0x66,0x6c,
- 0xb6,0x25,0xd9,0x74,0x35,0xdd,0x15,0x5f,0x5b,0x9e,0xa9,0x56,0x7a,0x5b,0x76,0xdd,
- 0x85,0x5c,0xd9,0xb6,0xff,0x5b,0xea,0xc3,0x59,0xdf,0xd9,0x88,0xf7,0x9e,0x71,0x20,
- 0x36,0xdc,0xbf,0x0d,0x4b,0xf6,0x37,0x1c,0x55,0x80,0xd4,0xd7,0xc6,0x06,0xf6,0xff,
- 0x49,0x05,0xe0,0x23,0x1f,0xf9,0x8d,0xcd,0xa9,0x7d,0x27,0x8b,0xe4,0xff,0x1c,0xb1,
- 0xff,0xa8,0xfa,0x8f,0xaa,0x63,0x91,0xc8,0x3a,0xaa,0x01,0x68,0x0b,0x38,0x07,0xc0,
- 0x0e,0x01,0xe2,0x7e,0xc0,0x6e,0x0c,0x10,0xc7,0x00,0xe2,0x25,0x2f,0x11,0x80,0x1e,
- 0x11,0x20,0xa1,0x5b,0xf6,0x5f,0x98,0xd0,0x1b,0xcf,0xd4,0xbb,0xb0,0xb8,0xd5,0x5a,
- 0x26,0x33,0xc8,0x2f,0xe7,0x2b,0x95,0x0a,0x7a,0xcd,0x2f,0x23,0x2b,0xb7,0xb8,0x20,
- 0x8c,0xd0,0x49,0xcf,0x18,0x94,0x8c,0x64,0xf2,0x38,0x00,0x10,0x31,0x37,0x99,0xb6,
- 0xa2,0x40,0x9d,0xc5,0x2a,0xc6,0x42,0x61,0x7d,0x87,0x1f,0x39,0x9c,0xb6,0x2e,0x55,
- 0x2b,0xf1,0xe5,0x3d,0x42,0xe2,0x4b,0x76,0x97,0x65,0x6f,0x4c,0x1b,0xd9,0xc2,0x0a,
- 0x00,0x55,0x2b,0x56,0x97,0x1a,0x75,0x3a,0x13,0x78,0x29,0x68,0x4e,0xe1,0x81,0x91,
- 0xd6,0xfc,0xe4,0x64,0x1e,0x4f,0xc6,0x52,0xb1,0x9e,0xe4,0xdd,0x32,0xaa,0xa4,0xe1,
- 0x49,0x7a,0x25,0xce,0xd5,0x7a,0x61,0x35,0xb6,0xd2,0xb2,0x2f,0x2b,0xf9,0xab,0xe0,
- 0x8b,0xbb,0x12,0xcb,0xe0,0x09,0x50,0xfa,0x0f,0x6e,0x1c,0x27,0x69,0x3b,0x92,0xc9,
- 0x82,0xb0,0xd5,0x5e,0xca,0xd4,0xce,0xe2,0x3b,0xb7,0x4c,0x8e,0x63,0xd9,0x7e,0x90,
- 0xf7,0x19,0x21,0x97,0x08,0x4f,0x53,0xb4,0x28,0xe9,0x49,0x80,0xdd,0xff,0x86,0x86,
- 0x8b,0x80,0x73,0x7c,0x64,0x53,0x48,0xc9,0xd5,0xf0,0xc0,0x69,0xfc,0x49,0xf9,0x0d,
- 0x6a,0x14,0x88,0x2f,0x4f,0x0b,0x02,0x49,0x9c,0xed,0x0d,0x4a,0x03,0x84,0x3d,0xc3,
- 0x3e,0x4e,0x2f,0xe6,0xfa,0xea,0xcc,0x9a,0x94,0x84,0x4e,0xd3,0x1e,0x03,0x53,0x0d,
- 0x10,0x3e,0xd2,0x8c,0x7b,0x5a,0xc0,0x5e,0x6c,0xdc,0xd6,0x11,0xd8,0xc9,0x1f,0x77,
- 0x9d,0x01,0xdb,0xfe,0x5b,0x15,0x00,0xe2,0xb3,0xcc,0x6e,0xcc,0x22,0xf9,0x9f,0xc5,
- 0xf2,0xff,0x8f,0x57,0x21,0x1f,0x3c,0x63,0xcb,0x3f,0xb2,0xff,0x4b,0xed,0x48,0x24,
- 0x52,0x2e,0x23,0x05,0xd0,0x5e,0xd3,0x56,0x71,0x2f,0x00,0x1c,0x01,0xc0,0x35,0x00,
- 0x3b,0x04,0x60,0xc5,0x00,0xbc,0x4c,0x40,0x47,0x01,0x38,0xf6,0xbf,0xa2,0x27,0x48,
- 0xc3,0xb5,0xe0,0x4d,0xab,0x3b,0x48,0xfe,0x91,0x43,0x91,0xcf,0x4f,0x5a,0xcc,0x93,
- 0x67,0x1e,0x8f,0x3a,0x40,0xdc,0x4e,0xce,0xec,0xe8,0x51,0xb7,0x64,0xce,0x14,0x48,
- 0x27,0xfe,0x19,0x2e,0x37,0x2d,0x50,0x00,0x70,0x74,0x67,0xad,0xcd,0x8f,0x1c,0x38,
- 0xa5,0x36,0xa9,0x0e,0x70,0x07,0x46,0x12,0x2b,0xf2,0x01,0xc0,0x76,0x1b,0x83,0x8e,
- 0x0e,0x23,0xeb,0x3d,0x3f,0x99,0x5f,0x7e,0xd1,0x9e,0x15,0xc4,0xcb,0xd8,0x09,0x9a,
- 0x07,0x34,0x61,0xb6,0xf0,0x64,0xe1,0x93,0x14,0xf9,0x79,0x74,0xe5,0x96,0x71,0xab,
- 0xa0,0xd8,0x57,0x19,0xc9,0xe8,0x7a,0xa1,0xb3,0xd5,0xca,0xbb,0x57,0xd7,0x5e,0x87,
- 0xf4,0x47,0x94,0xb4,0xc6,0x88,0xc3,0x31,0xe1,0x01,0xc0,0xa4,0x69,0x7b,0x58,0xfe,
- 0xb1,0x6e,0x41,0x9b,0x66,0x37,0x3e,0x49,0x3e,0x2f,0x0a,0xb7,0x81,0xcc,0xe9,0xa8,
- 0x49,0x7a,0x12,0x20,0x47,0x62,0x7b,0x21,0x7b,0x16,0x15,0x81,0x79,0xf6,0x18,0xf1,
- 0xb8,0x49,0xa2,0x93,0xb2,0x87,0xce,0x80,0xa5,0xbb,0x69,0x49,0x73,0xe5,0xd6,0x0a,
- 0xa6,0x39,0x1a,0x60,0xc3,0xd1,0x08,0x58,0xba,0x39,0xf3,0x8c,0x7f,0x70,0xdb,0xef,
- 0xdd,0x3a,0x39,0x5d,0xf5,0x1f,0x77,0x6b,0x0e,0xce,0x3b,0xf7,0xe3,0xb8,0xfb,0x81,
- 0xf9,0x4f,0x29,0x08,0x2c,0xf5,0x1b,0x6e,0x38,0xc1,0xaa,0x01,0x58,0x31,0x7f,0xe2,
- 0xf4,0x6f,0x7c,0xd2,0xfe,0x4f,0xfe,0xb0,0xfd,0x1f,0x47,0x0a,0x80,0xd8,0xff,0xbb,
- 0xf8,0x3b,0xb9,0x0f,0xb4,0x89,0xfc,0x57,0x90,0xfd,0xd7,0x88,0xfd,0xd7,0x91,0x02,
- 0x38,0x8d,0x6b,0x00,0x1d,0xac,0xac,0xe7,0xab,0x56,0x12,0xc0,0x53,0x51,0xab,0x23,
- 0xc0,0x33,0x4e,0x22,0x10,0x35,0x1e,0x80,0xa7,0x04,0xf2,0x23,0x89,0x44,0x76,0x41,
- 0xec,0xac,0x8b,0xe5,0xbf,0x8d,0xe4,0xbf,0x32,0x89,0x8b,0xf5,0x3c,0xa6,0x3a,0x89,
- 0xff,0x26,0xf3,0x2d,0xd2,0xb8,0xc7,0x2b,0x0c,0xba,0x85,0x3e,0x82,0xac,0x04,0x6e,
- 0x9b,0x66,0xe5,0x58,0x0d,0x30,0xbe,0x76,0xba,0xa1,0x0f,0xaf,0x8f,0x08,0x23,0x07,
- 0xd2,0x33,0xe6,0xe4,0x0c,0x22,0xff,0x65,0x61,0x0c,0xf2,0xdd,0x77,0x46,0x0f,0x45,
- 0x22,0x43,0x38,0x06,0x88,0x47,0x03,0x58,0x5a,0x67,0xe2,0x75,0x7d,0x86,0x2c,0x75,
- 0x28,0x5a,0x43,0x0a,0xce,0xcf,0x4f,0x5a,0xd7,0xc9,0xfe,0x9f,0xb7,0x2e,0x96,0xd0,
- 0x5e,0x86,0x64,0xf4,0xf4,0x5a,0x67,0x6b,0x19,0x09,0xe4,0xbc,0x0b,0xe9,0x8d,0x54,
- 0xb1,0xba,0x4e,0xf3,0x56,0x43,0xac,0xdb,0xc4,0x87,0x0b,0x2d,0x79,0xda,0xce,0xa6,
- 0x19,0x59,0x5a,0x8d,0xb5,0x98,0x6d,0x5b,0xf7,0x0f,0x1f,0x61,0x56,0xe8,0x27,0x75,
- 0x00,0x5d,0x50,0xe9,0x9c,0x6e,0x4d,0xec,0x02,0x66,0x57,0x90,0xfb,0x47,0xce,0xac,
- 0x6a,0x95,0x01,0x54,0x02,0xb0,0x77,0xc7,0x8f,0xd1,0x1a,0x34,0xc1,0x43,0xca,0xb3,
- 0xa7,0xc2,0x94,0x71,0x75,0x23,0x6a,0x76,0x8d,0xda,0xf7,0xc1,0xfe,0xc3,0x06,0x98,
- 0xc0,0x6f,0xc4,0xd9,0x32,0xed,0xf6,0x6f,0x78,0x6a,0x81,0xfd,0xc2,0xb5,0xf6,0xce,
- 0xee,0xa7,0xbd,0xc8,0xa4,0x65,0xe9,0xad,0xad,0x62,0x7d,0x60,0x45,0xfe,0xed,0xaf,
- 0x36,0xec,0x20,0xc0,0xf8,0xc6,0x2c,0x52,0x00,0x1b,0x44,0x01,0x7c,0xec,0x23,0xbf,
- 0x73,0x15,0xec,0x7f,0x23,0x14,0x22,0xf6,0xbf,0x46,0xfc,0xff,0x72,0x04,0xc9,0x7f,
- 0x39,0xd2,0xd8,0x2e,0x68,0xb8,0x1f,0x30,0x09,0x01,0x5e,0x2e,0xe2,0x91,0x80,0xa2,
- 0x4e,0x2b,0x20,0x51,0x00,0x4f,0x13,0xf1,0xa7,0xc2,0x00,0xe4,0x59,0x35,0x63,0x64,
- 0x42,0x6f,0x31,0x8d,0xbc,0xb9,0x53,0x8f,0x6c,0x2f,0xd9,0x61,0x64,0x8d,0x74,0x33,
- 0xd4,0xd0,0x07,0x6d,0xcb,0xca,0x16,0xdd,0xe4,0x16,0xa7,0xd2,0x6f,0x5b,0x23,0xad,
- 0x3c,0x9e,0xca,0x9b,0x0f,0x7c,0x05,0x98,0x2a,0x22,0x64,0x34,0xf8,0xe9,0xbf,0x48,
- 0x7b,0x36,0x35,0xce,0x14,0xe9,0x5e,0xb0,0xd0,0x7e,0xcf,0x5e,0x06,0x00,0xe3,0x29,
- 0xea,0x0d,0x54,0x71,0x9a,0xac,0x90,0x49,0x01,0x98,0xe0,0x66,0x33,0x16,0x2c,0x6d,
- 0xd1,0x18,0x5e,0x20,0x57,0xc8,0x8e,0xb5,0x93,0x60,0x3e,0xfa,0x9c,0x20,0x13,0xfa,
- 0x09,0x95,0xa5,0xa6,0x8a,0xd4,0x6b,0xa4,0x5d,0x58,0xd3,0xac,0x05,0xad,0xeb,0x8b,
- 0x58,0x24,0x93,0x9b,0x88,0xbe,0x8d,0x38,0xcc,0x6e,0xa9,0xd0,0x46,0xea,0x0a,0x4f,
- 0xdd,0x28,0x0e,0xca,0xbd,0xa3,0xaf,0xb7,0x97,0xd6,0xec,0xcd,0xae,0x59,0x07,0xb3,
- 0x60,0xef,0xa4,0xcd,0xcc,0xa6,0x82,0xb1,0x14,0xaa,0x64,0xa7,0x2a,0x8e,0xff,0x37,
- 0x96,0xec,0x43,0x23,0x85,0x60,0x35,0x86,0xae,0x13,0xce,0x97,0x94,0xb4,0xd1,0xec,
- 0xa1,0x09,0xe0,0xfd,0x87,0xac,0xba,0x33,0x91,0xce,0x0d,0x1c,0x0b,0x60,0xed,0x7b,
- 0xd0,0x87,0x6b,0xb3,0xe9,0xfa,0xfb,0x74,0xcf,0xcd,0xf8,0x7f,0x69,0x2b,0x88,0x0d,
- 0x4b,0x15,0x58,0xb2,0x6d,0xeb,0x04,0xfc,0xfa,0x49,0xf2,0xdb,0xf8,0xc6,0x3f,0xc7,
- 0x2a,0x60,0x63,0x7c,0xfc,0x93,0x64,0x21,0xcb,0x07,0x18,0x9f,0x7d,0x60,0x76,0xf6,
- 0x63,0xb3,0x77,0x7e,0xf8,0x23,0xfb,0x9f,0xfe,0x83,0x13,0x00,0x43,0xb8,0xff,0x0f,
- 0x8e,0xc3,0x2c,0x35,0x70,0x0b,0xb3,0xae,0xa3,0x1a,0x00,0x72,0x00,0x34,0xd2,0x0d,
- 0x88,0xb4,0x01,0x5c,0x08,0x59,0x31,0x40,0x32,0x18,0xc8,0x18,0x89,0x02,0x3e,0x6d,
- 0x45,0x01,0xe2,0x94,0x0f,0x80,0x1b,0xeb,0x63,0x2b,0xd2,0x68,0x9a,0x39,0xdc,0x1e,
- 0x1e,0x76,0xfe,0xda,0xc3,0xed,0x36,0x7e,0x41,0xef,0x8c,0x42,0x4b,0x32,0x42,0x3f,
- 0x33,0x00,0x50,0xce,0x88,0x4d,0x2e,0x6f,0x65,0xd7,0xf8,0xad,0xd6,0xf9,0x92,0x27,
- 0x52,0xd9,0x8c,0x44,0xf8,0xda,0xff,0x14,0x3b,0xcb,0x44,0xc8,0xac,0xa1,0xfa,0xff,
- 0x92,0x38,0x4b,0xd6,0x1e,0xec,0x4f,0xe9,0x80,0x59,0xa8,0xe0,0xb9,0x54,0x57,0xb6,
- 0x3a,0x58,0x01,0x50,0xce,0x8d,0xba,0x1c,0x44,0xad,0x24,0x33,0xc3,0xec,0xf5,0xc2,
- 0x57,0xab,0x30,0x6c,0x68,0xcb,0x56,0x5f,0x65,0x5e,0x46,0x1b,0xee,0x72,0xc3,0xce,
- 0xd5,0x45,0x7f,0xc3,0x11,0x33,0x91,0x88,0x2d,0xcc,0x88,0xba,0x4d,0x54,0x9d,0xa5,
- 0x4c,0xa3,0x25,0xed,0x07,0x31,0x15,0xc1,0x9b,0xb4,0x8e,0xc0,0x7e,0xd8,0xef,0xd1,
- 0x01,0xa1,0xf7,0xa3,0xe2,0x00,0x60,0x35,0x6b,0x0c,0x38,0x7e,0xec,0x51,0xa3,0x6d,
- 0x1d,0xdf,0x70,0xc1,0xd9,0x0e,0x5a,0x48,0x1f,0xad,0x10,0x27,0xe5,0xb4,0x2e,0xec,
- 0x78,0x85,0x3f,0xc6,0xc0,0xbc,0xcb,0xaa,0xd3,0x6f,0x8c,0xdb,0x8d,0xe8,0x96,0x85,
- 0x75,0x85,0x6d,0x7c,0xda,0x8a,0xb1,0xb9,0xe2,0xe7,0xbc,0x30,0x82,0x69,0x89,0x1f,
- 0x79,0x10,0xdf,0x7c,0xc3,0x5a,0x60,0xdc,0xb1,0xd0,0xe3,0x8c,0x4f,0xe1,0xfe,0x6d,
- 0x50,0x32,0x6d,0x7f,0x61,0x6f,0xd1,0x6e,0xcf,0x9b,0xf6,0x0e,0xc9,0x72,0x25,0xb0,
- 0xc4,0x7f,0x12,0x3d,0xad,0x1d,0x20,0xc3,0x4f,0xaa,0xff,0xe3,0x88,0x0d,0xeb,0x6f,
- 0xf6,0xdb,0x1b,0x48,0x01,0x7c,0xe7,0x63,0x77,0x7e,0xec,0xc3,0xfb,0x9f,0xfe,0x83,
- 0x5c,0xed,0x89,0x10,0xee,0xff,0x73,0x4f,0x0d,0xc9,0xff,0xcc,0x7a,0xa4,0x6e,0x29,
- 0x00,0xe4,0x00,0xac,0x91,0x6e,0x40,0x43,0xf3,0xd5,0xdc,0xe5,0x0b,0x76,0x08,0x20,
- 0xd9,0xb5,0xfa,0x02,0x59,0xdd,0x81,0xa9,0x38,0xa0,0x9d,0x0e,0x3c,0x61,0xd6,0xc8,
- 0x74,0x1a,0x82,0x89,0xca,0x8c,0xc5,0x49,0xb5,0xc1,0x7e,0x8d,0xdb,0xef,0xc7,0x0a,
- 0x33,0x2d,0x92,0xdc,0xb3,0xc9,0x2d,0xef,0x88,0x68,0x89,0xe4,0xf0,0x20,0x49,0xc2,
- 0x15,0x00,0xae,0x70,0x26,0xec,0x05,0xe8,0x04,0x04,0xf7,0x3f,0x7e,0x17,0x6f,0x1b,
- 0x65,0xa1,0x69,0x01,0x19,0x4b,0xdb,0x66,0x91,0x85,0x52,0x23,0x59,0xdc,0x5f,0x47,
- 0xd4,0x58,0x8d,0xa7,0xb9,0x8d,0x97,0x64,0x4f,0x6f,0xb7,0x25,0x7a,0xa1,0x49,0x43,
- 0x43,0x15,0xe6,0xca,0xf2,0x4a,0x0c,0xc7,0xb6,0x98,0xe1,0x40,0xaa,0x25,0xf7,0xf8,
- 0x58,0x09,0xa4,0x37,0x19,0x67,0xae,0x92,0x7d,0xd1,0x92,0xed,0xc2,0x32,0x76,0x96,
- 0x84,0xae,0xb5,0x6a,0x31,0xed,0x2d,0x4b,0x61,0xbb,0xe2,0xd2,0xd8,0x06,0x93,0xb9,
- 0x51,0xb2,0x9a,0xed,0x3b,0x92,0xcc,0xcd,0x66,0x95,0xdd,0x26,0xb5,0x13,0xfc,0x3f,
- 0x4d,0xcd,0x0a,0x6b,0x1d,0x7e,0x71,0xc4,0xa7,0x08,0xb4,0xbb,0xf6,0xa9,0xb8,0x1b,
- 0x4c,0x27,0x73,0x9a,0xa1,0x55,0x90,0x53,0xb3,0xd6,0x10,0xdb,0x0b,0x0a,0x25,0x7a,
- 0xb3,0x72,0xb5,0xc9,0xfd,0x60,0xbf,0x3f,0x1e,0xc6,0xf2,0x35,0xee,0x54,0xc6,0x37,
- 0x88,0x49,0xa5,0x64,0x72,0xc3,0x09,0xbb,0x09,0x41,0x39,0x2f,0x0a,0x4f,0xd9,0x7f,
- 0xc7,0x79,0xb7,0x1d,0x74,0x4a,0x41,0xd0,0x72,0x3e,0xed,0x68,0x1b,0x5e,0x37,0xd8,
- 0x1f,0x9d,0x03,0xd8,0xa0,0x35,0xc4,0x86,0xe3,0xfc,0x6f,0x58,0x0e,0x3f,0x11,0x78,
- 0xfc,0x1b,0x31,0xfd,0xe3,0x0e,0x0f,0x8c,0x7f,0xe7,0x3b,0xdf,0xf9,0xd8,0xc7,0x3e,
- 0xf6,0xe1,0xab,0x31,0xff,0xc7,0xe6,0x81,0x54,0x31,0x47,0xe6,0xca,0x5e,0x28,0x6c,
- 0xa3,0xea,0x7f,0xbd,0x6e,0xd6,0xb1,0x02,0x68,0x17,0x70,0x08,0xf0,0x2c,0x69,0x03,
- 0xc0,0x0a,0x20,0xe4,0x54,0x01,0x48,0x33,0x00,0x19,0x12,0x10,0x27,0x03,0x32,0x71,
- 0xc0,0xa2,0x99,0x4d,0x58,0xd1,0x34,0xae,0x88,0xd2,0xd1,0x34,0xfa,0xed,0x28,0x32,
- 0x3b,0x24,0xfd,0x9e,0x8f,0x16,0x1f,0x70,0x17,0x89,0x0f,0xb7,0x2b,0x56,0x20,0x8b,
- 0x2b,0xc8,0xe5,0x28,0xbb,0xc9,0x12,0xbf,0xf5,0x09,0xc3,0x94,0xcc,0x7e,0x69,0xa8,
- 0xc3,0x94,0xcd,0x8a,0xe2,0x86,0xef,0x05,0x49,0xe2,0x9b,0x1b,0xd8,0xf6,0x2d,0x7c,
- 0x8a,0xff,0x0f,0xf1,0x21,0x03,0x29,0xad,0x4a,0x65,0x05,0xf7,0x04,0x60,0x23,0x10,
- 0x3b,0x13,0xa5,0x3e,0x6b,0xd3,0xbf,0xd3,0xea,0x27,0x3e,0x3c,0x8c,0xc7,0x2a,0x13,
- 0x6d,0x34,0xdd,0x57,0x89,0xde,0x66,0xd1,0xc0,0x75,0x9b,0x6d,0x71,0x2c,0xbe,0x82,
- 0x70,0x37,0x4a,0xb5,0xc8,0x4a,0x82,0xc4,0x0a,0x79,0xdf,0x62,0x5e,0x61,0x75,0x05,
- 0xb7,0x13,0xe1,0xea,0xa4,0x8c,0xac,0xdd,0x93,0x80,0x3b,0x4a,0xe9,0x34,0x45,0xe9,
- 0x96,0xa1,0xe1,0x61,0x93,0xcb,0x82,0x05,0x98,0xaa,0x73,0x2d,0x0b,0xbd,0x6e,0x02,
- 0x7b,0x40,0x87,0xc7,0x6d,0x41,0xb4,0xa4,0x16,0x0b,0x19,0x19,0x44,0xeb,0xd0,0x2c,
- 0x7a,0x33,0xee,0x35,0xb0,0x3b,0xe6,0x5f,0x78,0x88,0xdf,0x4f,0x8f,0x5b,0x5b,0xdb,
- 0xf0,0xc4,0x5b,0x0c,0x2b,0xb0,0x3a,0x81,0x0e,0x37,0xb8,0xff,0xdd,0x8f,0xae,0xde,
- 0xb0,0x57,0xb1,0x7c,0x0b,0xeb,0xb0,0x88,0x36,0x70,0xf8,0xf6,0x03,0xdf,0x7e,0x00,
- 0x29,0x80,0x07,0x1e,0x40,0xf2,0xff,0x1b,0x57,0x63,0x02,0x70,0xb5,0x7a,0xa6,0x78,
- 0x19,0xc9,0x7f,0xac,0x83,0xe4,0x1f,0xd9,0xff,0x3a,0xce,0x23,0xc7,0x6d,0x00,0x24,
- 0x0b,0x10,0x27,0x01,0xcc,0xcf,0xe1,0xa1,0x80,0xb0,0x07,0xf0,0x59,0xa2,0x00,0xc6,
- 0x9c,0x20,0x80,0xdd,0x21,0x30,0xee,0x36,0x06,0x86,0xf4,0xc5,0x15,0xf9,0xe8,0xaf,
- 0x71,0xe1,0x16,0x92,0x52,0x95,0x8d,0xd8,0x21,0x6a,0x7e,0x85,0x39,0xf7,0xbe,0x96,
- 0xc8,0x30,0xde,0x89,0xf7,0x66,0x2e,0xf2,0x53,0x59,0xd3,0x95,0x69,0x51,0xbf,0x94,
- 0x4a,0x19,0xd5,0x14,0xb2,0x65,0x9b,0xaa,0xc1,0xa4,0x97,0x27,0xf5,0x4c,0xab,0x46,
- 0x86,0x2c,0xe1,0x16,0x64,0x03,0xdb,0xfd,0x0a,0x5f,0x89,0x7d,0x8b,0x87,0x03,0xe9,
- 0xe0,0xf6,0xb7,0x04,0xf2,0xaa,0x1a,0x65,0x26,0xb8,0xad,0x17,0xf9,0xb5,0xe5,0x1a,
- 0x46,0xf8,0x2a,0xae,0xb5,0x71,0x8c,0x2e,0x22,0x73,0x96,0x28,0x11,0xf5,0xb6,0x16,
- 0x32,0x6a,0xf2,0xb6,0x8d,0xb6,0x38,0x8e,0x7b,0x42,0x6f,0x9d,0xc5,0xa9,0x92,0x82,
- 0x1b,0xee,0x76,0xf0,0x67,0x0e,0x54,0x18,0x05,0xca,0xfd,0x10,0x35,0xb2,0xd8,0xfe,
- 0x8b,0x4a,0xc7,0xcb,0x14,0x70,0x37,0x53,0xc2,0xd3,0xa7,0x18,0x9d,0xce,0x9a,0x64,
- 0x32,0xd0,0xa9,0xcd,0x14,0x7f,0x19,0xfc,0xdc,0x2f,0x67,0x31,0xe7,0xd8,0xbe,0x6c,
- 0x3b,0xec,0x96,0xdb,0xbd,0x71,0xe8,0xd4,0xd1,0x23,0x5f,0xff,0xc4,0x2b,0x77,0xbc,
- 0x72,0xdb,0xc9,0xc3,0x2f,0x1f,0xb2,0x7c,0xf4,0xf0,0x38,0x15,0xaa,0x97,0x35,0xd6,
- 0xf1,0x5f,0x6f,0x4c,0xdb,0xf9,0x39,0x8e,0x43,0xcf,0xd4,0x17,0xdc,0x76,0x7b,0x89,
- 0x07,0xb0,0xc1,0x54,0x30,0x48,0x7d,0xde,0xaa,0x49,0x38,0x9a,0x85,0xc8,0xbb,0xe5,
- 0x05,0x8c,0xb3,0xfc,0xf3,0xf1,0x6f,0x63,0x0d,0x80,0x55,0xc0,0x03,0x0f,0xbc,0x05,
- 0xc9,0xff,0xe3,0x53,0x57,0x81,0x56,0xaa,0x78,0x79,0x6e,0x92,0xc8,0xff,0xc5,0x75,
- 0xcb,0xfe,0x63,0x05,0x80,0xdb,0x00,0x32,0xab,0xd9,0x2d,0x9c,0x05,0x84,0x43,0x00,
- 0x97,0xec,0x2a,0x40,0x72,0xac,0x6b,0xd7,0x01,0x9e,0x76,0x7c,0x80,0x92,0xa3,0x02,
- 0x52,0x66,0x87,0xc8,0xbf,0x60,0x4d,0x9d,0x16,0x77,0x2e,0x69,0xb8,0x14,0xc3,0x09,
- 0x43,0xe8,0xf6,0x6f,0x72,0xed,0x05,0xcd,0xbc,0x77,0x77,0x27,0x8c,0x6c,0x1e,0x27,
- 0xd4,0x16,0xf8,0xbc,0x22,0xb3,0x28,0xfa,0xb1,0x54,0x69,0x9c,0x30,0x0c,0x59,0x16,
- 0x8a,0xe1,0xa4,0xbf,0x91,0x85,0x2c,0xf9,0x97,0x64,0x20,0x98,0x49,0xca,0xa9,0xa0,
- 0x8b,0xad,0xf7,0xe7,0xa7,0x14,0xf0,0x82,0x69,0xcd,0xe8,0x24,0xb6,0x12,0xb5,0xc5,
- 0xd5,0xb5,0x8b,0x24,0x06,0xe1,0x9d,0x5f,0x23,0xa5,0x48,0x57,0xa7,0x1a,0x52,0x4a,
- 0xe2,0x97,0x56,0x1d,0x5d,0xda,0xbb,0xc2,0xcb,0xe7,0x63,0x6a,0x2b,0xd8,0x14,0xa3,
- 0x7a,0x93,0xd0,0xfd,0x09,0x1d,0x41,0x9a,0xd9,0x09,0xde,0xe5,0x90,0xb9,0x42,0x32,
- 0xb7,0x84,0x96,0xdb,0x15,0xb9,0xac,0xd1,0xef,0x98,0x2a,0x40,0xd2,0x5c,0xc5,0xf6,
- 0x5f,0x68,0x75,0xc5,0x23,0x2a,0xb2,0x57,0xd4,0xfa,0x54,0x34,0xb6,0xd1,0x15,0x12,
- 0x67,0x35,0x9f,0x9a,0x62,0x1c,0x25,0x5f,0xff,0x9f,0xf3,0x4e,0xb0,0x4a,0x39,0x45,
- 0x24,0xc9,0x12,0xb4,0xe9,0x43,0xc7,0x8e,0xdf,0xe1,0xad,0xf0,0xe0,0x2b,0x27,0xee,
- 0x26,0x06,0x16,0x8b,0x97,0x6d,0x7c,0x65,0x48,0xbe,0xb5,0x6a,0xe6,0x96,0x97,0xbe,
- 0xb1,0x61,0x59,0xec,0x0d,0xf6,0x85,0xfc,0x64,0x3d,0x37,0xdc,0xf7,0x4e,0x26,0xaf,
- 0x67,0xe2,0x2d,0x23,0xef,0x46,0x19,0x36,0x78,0xb1,0xc7,0x82,0x8f,0x9f,0x48,0xf4,
- 0x91,0xf0,0x7f,0x7b,0xfc,0x81,0x1f,0x7b,0xe0,0x81,0x8f,0x62,0x07,0xe0,0x1f,0x37,
- 0x85,0x8b,0xb4,0x0f,0x68,0x56,0x07,0x80,0x2d,0x9c,0x8a,0x8b,0xe3,0x7f,0xa6,0xb9,
- 0x63,0x62,0x05,0xd0,0xd8,0x5e,0x23,0x1d,0x81,0x57,0x2a,0xf9,0xea,0x39,0xab,0x11,
- 0xc0,0x0e,0x02,0x22,0x15,0x40,0xb9,0x00,0xf1,0x67,0xf1,0xfc,0xc0,0x24,0x27,0x38,
- 0x6a,0x66,0x56,0xa4,0xd1,0x34,0x54,0xe2,0xa8,0x9b,0xe8,0xa9,0xf0,0x96,0x9e,0x38,
- 0x9b,0x5d,0x9b,0x11,0xe5,0xb4,0xe5,0x2c,0x56,0x52,0xc6,0x1a,0xed,0x7c,0x05,0xe7,
- 0x27,0xb4,0xcb,0xdc,0x44,0x1e,0x4b,0x5d,0xef,0xfe,0x53,0x26,0xcd,0xfa,0x26,0xbd,
- 0xd6,0x14,0x7b,0x96,0xa9,0x48,0xfe,0xf5,0x24,0xa5,0x84,0xd2,0x11,0x6d,0x65,0x4b,
- 0x96,0xf8,0xea,0xce,0xaa,0xe1,0xb5,0x6e,0xb2,0xd2,0x4f,0x9f,0x88,0xf7,0xe2,0x7e,
- 0x18,0x1b,0x36,0xb4,0x6c,0x67,0x71,0x55,0x2b,0x34,0x70,0xf3,0x26,0x7d,0x3d,0x96,
- 0x92,0xa5,0x92,0x22,0xae,0xcf,0x95,0x6a,0xfc,0x1d,0x55,0xae,0x71,0x1d,0xbd,0x91,
- 0xb0,0xea,0xe8,0x7c,0x65,0xa9,0xca,0x1d,0x81,0xb5,0x85,0x12,0x1e,0x3a,0xb1,0x26,
- 0x9b,0xdc,0xc8,0x35,0xc5,0xde,0x7e,0x2b,0x66,0x82,0xb4,0x15,0x0a,0x72,0x58,0xe3,
- 0x4e,0x95,0xba,0x26,0xde,0x55,0xf7,0xae,0x67,0xa9,0xab,0x67,0x56,0x62,0xc8,0xa1,
- 0x17,0xae,0xbd,0xd9,0x65,0x16,0x77,0x6e,0x5b,0xbc,0x61,0x92,0x36,0x12,0xde,0xfc,
- 0x37,0x2d,0x17,0xd0,0xbb,0xec,0xd2,0xa7,0x77,0x2f,0xbc,0x8b,0xf8,0x89,0x59,0x22,
- 0x68,0xdf,0x26,0x42,0x76,0xec,0x5e,0x5e,0x73,0xdc,0x71,0xe4,0xd4,0xb4,0x55,0xcd,
- 0xb6,0xa5,0x7c,0x5a,0xf2,0xa0,0x05,0xd4,0xfd,0xce,0xf1,0xd6,0xc7,0x9d,0xf5,0xd9,
- 0x97,0x0d,0xda,0xc8,0x8f,0xbb,0xee,0xfc,0xb7,0x3d,0x65,0x34,0x4e,0xef,0x74,0x83,
- 0x11,0x77,0xee,0x8d,0x2b,0xfc,0x98,0xbf,0xf9,0xf6,0x47,0x91,0x06,0x78,0xcb,0x03,
- 0xbf,0xf1,0x3b,0xbf,0x3c,0x75,0x15,0xd0,0x8b,0x64,0x00,0x10,0xdc,0xe1,0xac,0xdd,
- 0x40,0xf6,0xdf,0x7c,0xdc,0x34,0x49,0x08,0x60,0xbb,0x5d,0xc0,0x1d,0x81,0xb7,0x56,
- 0xf2,0x58,0x01,0x50,0x1e,0x40,0xd7,0x69,0x08,0x24,0xd9,0x80,0xd8,0x05,0x78,0x96,
- 0xf4,0x09,0x2a,0x45,0xcb,0x19,0x54,0xff,0x17,0x26,0xeb,0x45,0x25,0xee,0x19,0x6f,
- 0xc8,0x00,0xaf,0xe8,0x94,0x4a,0xa4,0xd8,0xe1,0xd1,0x3d,0xf9,0xdb,0xbf,0xe5,0x2d,
- 0x5a,0xaa,0x8d,0x24,0xf2,0x95,0x95,0xd8,0x2a,0x49,0x13,0x63,0xb6,0x8c,0x6a,0x00,
- 0xec,0x16,0xa9,0x37,0x43,0x4d,0x71,0xba,0x3c,0xdc,0x51,0x6e,0x6a,0xd4,0x6b,0xb0,
- 0x28,0x95,0xd2,0x33,0x05,0x92,0xf8,0x2e,0xcc,0x7c,0x69,0xa4,0xa4,0x62,0xed,0xf3,
- 0xa0,0x7f,0xb7,0x0b,0x65,0xb4,0x61,0x16,0xd6,0xb4,0x25,0x54,0xa7,0xd2,0x77,0xb8,
- 0x94,0xdd,0x85,0xae,0xe2,0xbb,0xb6,0x75,0xca,0x5e,0xa1,0xa7,0xba,0x59,0xd4,0xf4,
- 0x56,0x0c,0x77,0xad,0xd9,0xe4,0xef,0xe0,0x3c,0x23,0x51,0xee,0x4b,0x72,0xc4,0xf2,
- 0xc6,0x04,0xdd,0x56,0xee,0xb2,0x7b,0x42,0x2f,0xd5,0x91,0x2d,0x67,0x98,0x75,0x96,
- 0xd1,0x12,0x7f,0x74,0x8e,0xbc,0x89,0xa7,0x40,0xb4,0x75,0x64,0x81,0xd4,0xff,0x77,
- 0xf8,0x48,0x22,0x52,0xa8,0xac,0xa0,0xda,0x17,0x56,0x33,0xca,0xa6,0x6c,0xb4,0x60,
- 0xb5,0xc2,0x5c,0x54,0xff,0x6b,0x4f,0x2f,0x83,0xff,0x1f,0x1f,0x1f,0x77,0xe4,0xfb,
- 0x63,0x27,0xac,0x7e,0xe4,0xcf,0xbe,0xff,0xb6,0x7b,0xef,0xbd,0xf7,0x13,0xaf,0x58,
- 0x1a,0xe0,0xfd,0xb7,0xff,0xff,0xb4,0x5d,0x5d,0x6c,0x1b,0x57,0x76,0xd6,0x56,0x21,
- 0xb0,0x46,0x77,0x1d,0xba,0x7d,0x48,0x32,0x74,0x3a,0xe4,0x3e,0x71,0x28,0xaf,0x03,
- 0x84,0xae,0x90,0x05,0xd6,0xf6,0x26,0x70,0x01,0xd6,0x09,0x06,0x25,0x87,0xa4,0x4a,
- 0x86,0x90,0xf2,0xa0,0x84,0xf1,0xc2,0x09,0x5d,0x06,0xd8,0x20,0x25,0xca,0x32,0x0f,
- 0x42,0xe2,0xc2,0x02,0x48,0x20,0x05,0x6c,0x40,0x41,0x81,0x75,0x49,0x79,0x1f,0x2a,
- 0x19,0xa0,0x41,0xd9,0x4f,0x8b,0x05,0x96,0x30,0xd0,0xaa,0x04,0x0c,0x3e,0x11,0xf1,
- 0xb2,0x61,0x0d,0xd7,0x06,0xf7,0x61,0x1f,0x1a,0x89,0x16,0x07,0xa4,0x7b,0xce,0xb9,
- 0x77,0x7e,0x38,0x73,0x65,0xd1,0x8b,0xea,0xcc,0x90,0x73,0x67,0xe6,0xfe,0xcd,0xbd,
- 0xf7,0x3b,0xe7,0xdc,0x7f,0x52,0xba,0x59,0x1b,0x9b,0x50,0xfe,0x33,0xd5,0x5c,0xa0,
- 0x13,0x70,0x6d,0x9d,0xc9,0xf7,0xc9,0x63,0x3f,0x1f,0xde,0xf6,0x8a,0x54,0x7b,0xaf,
- 0x57,0xf4,0xc8,0xe4,0x00,0x80,0x7d,0x6f,0x1a,0xb1,0x1f,0x06,0xea,0x5c,0xf4,0x5d,
- 0xbc,0x78,0xf1,0xec,0x0b,0x2f,0xfc,0xa7,0x2b,0x91,0xfe,0x3f,0x48,0x9a,0xf3,0xac,
- 0x5d,0xbb,0xbc,0xb4,0x99,0x19,0x35,0x2a,0x34,0x1d,0x77,0x30,0x00,0x15,0xe0,0x08,
- 0xeb,0x04,0x5c,0x1d,0x61,0x27,0x20,0xb6,0x01,0xda,0x19,0x00,0x28,0x00,0x47,0xd9,
- 0x58,0x20,0xac,0x03,0xf0,0xc5,0xc1,0xe1,0x8c,0xcb,0x8d,0x4d,0xd6,0xf8,0xe3,0xc8,
- 0xcf,0x52,0x9c,0x0b,0x91,0xe2,0x64,0x7e,0x2d,0x91,0xd8,0x01,0xfd,0xdf,0x35,0xfc,
- 0xd6,0x66,0x31,0xa4,0xa7,0x96,0xaa,0xd5,0x28,0x8d,0xa6,0x99,0x94,0xa4,0x52,0x55,
- 0xb1,0x95,0x0c,0xe3,0xc2,0x1d,0x09,0x56,0x9a,0xdf,0x91,0x74,0x5d,0x5a,0xb4,0x39,
- 0x98,0x51,0x66,0x2b,0xa0,0xff,0x67,0xdd,0xf2,0x5f,0xf3,0xb8,0x3d,0x16,0x95,0x77,
- 0xce,0x47,0x5c,0xe1,0x17,0x8b,0x1e,0x55,0xeb,0xf5,0x56,0x64,0xb9,0xeb,0xde,0xec,
- 0xb2,0x9c,0xb4,0x00,0x5b,0x9c,0x74,0x3d,0xe9,0xfb,0x04,0x53,0x88,0xaa,0x51,0x6a,
- 0xa3,0x73,0xc9,0xe8,0xbd,0xa2,0xe5,0x91,0x0d,0xd5,0x71,0x79,0x75,0x13,0xea,0x36,
- 0xee,0xd1,0x95,0xdd,0xb8,0x15,0x00,0xbf,0x2e,0xeb,0x81,0x4d,0xa1,0xfc,0xaf,0xdb,
- 0xbe,0x69,0x22,0x10,0x11,0x2c,0x11,0xff,0xbd,0x2c,0xc9,0x7f,0x57,0x15,0x50,0xf3,
- 0x9b,0xd1,0xb3,0xfb,0xa4,0xcc,0xee,0x0c,0x44,0x2b,0x40,0x48,0x91,0xaa,0x19,0xbd,
- 0x29,0xc1,0xcf,0xfd,0x3f,0xd3,0x32,0xf0,0x75,0xe9,0xd7,0xa4,0xf3,0x7f,0xff,0xb5,
- 0x6f,0x2e,0x2d,0x78,0x17,0xde,0x5e,0xb8,0xf4,0xb3,0x53,0xc4,0x02,0xce,0xbd,0xf6,
- 0xe7,0x22,0xec,0x4d,0x4b,0x69,0x87,0xa0,0x9e,0xce,0x89,0x9b,0x44,0x1a,0x80,0xed,
- 0x01,0xa0,0x3f,0x1d,0x2e,0x00,0xfc,0x3b,0x9d,0x8b,0x17,0xef,0x9d,0xfd,0xea,0x85,
- 0xdf,0x1f,0xc2,0xec,0x1f,0xa4,0x11,0x6b,0x00,0x6c,0xff,0x34,0x55,0xd9,0x25,0xfd,
- 0x1f,0x57,0xea,0x18,0x50,0x0d,0xa0,0x42,0x8b,0x81,0x5e,0xd9,0x58,0xb2,0x18,0xc0,
- 0x2d,0x62,0x00,0xd8,0x11,0x68,0x6b,0x07,0xa4,0x49,0x01,0xcd,0xe6,0x18,0x32,0x1f,
- 0xe4,0xbf,0x7b,0x39,0x5d,0xd5,0x6f,0xf6,0x12,0x58,0x08,0x99,0xc1,0x01,0x43,0x28,
- 0x76,0x04,0xa3,0xc5,0x46,0xca,0x8c,0xb9,0xd2,0x90,0x92,0x55,0xab,0xac,0x2f,0x6d,
- 0x97,0x55,0x2b,0xad,0xd2,0xac,0x5d,0x56,0xcc,0xf2,0x49,0x38,0x34,0x4a,0x96,0x47,
- 0x16,0xac,0x9a,0x89,0x43,0x50,0x1e,0xf7,0xc6,0x2c,0x0a,0x86,0xdf,0xc3,0x28,0xc8,
- 0x7f,0xf7,0x92,0x45,0x52,0xce,0x8e,0xa6,0xa2,0xed,0xc2,0x5d,0xdb,0xa1,0xeb,0x2c,
- 0xd8,0x06,0xdf,0xd2,0x40,0x91,0xa2,0x4d,0xb8,0x1d,0x11,0xd9,0x89,0x6e,0x39,0x1d,
- 0x1a,0x71,0xda,0x87,0xd0,0xc2,0x9e,0x1e,0xc5,0x4d,0xc6,0xdd,0xca,0x52,0xb4,0x58,
- 0x2c,0xda,0x7d,0xe3,0xe7,0x1d,0xa8,0xdb,0xb4,0x49,0x15,0x77,0x38,0x18,0xf8,0x27,
- 0xbe,0x04,0x29,0x34,0x68,0x47,0x69,0xac,0x90,0x33,0xd1,0x82,0x8a,0xe0,0xcb,0x26,
- 0xbf,0xdc,0xfe,0x57,0x54,0x62,0xd9,0x4d,0xe1,0x4c,0x42,0xc9,0xe3,0x60,0x67,0xcc,
- 0x07,0xbf,0x2a,0xde,0xd5,0x58,0x8a,0x2c,0x59,0xb9,0x34,0x0d,0x19,0xfe,0x2a,0xdf,
- 0xb4,0x38,0x80,0x2e,0x7d,0x8a,0x60,0x7f,0xfd,0xfa,0xc2,0xdb,0xd8,0x8e,0xc6,0x20,
- 0x76,0xfc,0x4f,0x90,0x03,0x14,0x8f,0x2d,0x88,0xc5,0xef,0xb3,0x10,0xdc,0x72,0x21,
- 0xd4,0x7e,0x1e,0x84,0xfd,0x74,0x8b,0xfd,0xa5,0x5b,0x22,0x1b,0xfc,0x39,0x58,0x0d,
- 0xc3,0x01,0xd0,0x87,0x33,0xcc,0x84,0x7f,0xa7,0xe3,0xeb,0xbc,0xd3,0x79,0xf8,0xf0,
- 0xe2,0x57,0x87,0x31,0xfa,0x0f,0x49,0xbe,0x99,0xbb,0xbd,0xbc,0xb4,0xd7,0xe7,0x1d,
- 0x00,0x28,0xff,0xe1,0xe8,0x76,0x4b,0xd8,0x07,0xd0,0xc0,0x89,0x40,0x57,0x2c,0x0d,
- 0xe0,0x0b,0x5b,0x1d,0x80,0x31,0x00,0xde,0x17,0x88,0x34,0x1e,0x56,0x58,0x6f,0x8e,
- 0x33,0xf3,0xbb,0x09,0x71,0xa6,0x5d,0xd3,0xdb,0x0c,0xff,0xce,0xd1,0x22,0x29,0xdb,
- 0xd0,0x82,0x62,0x4d,0x2b,0x57,0x97,0x70,0x86,0x52,0x76,0xdb,0x59,0x03,0xd0,0x36,
- 0x92,0x22,0xac,0xe4,0x7a,0x3b,0xee,0x95,0x6c,0x50,0xfb,0x57,0xa5,0xbd,0x09,0xbb,
- 0x4a,0xaa,0x87,0x53,0x75,0x05,0x03,0xdf,0x17,0x0f,0x2a,0x6e,0x07,0x92,0x52,0xa3,
- 0xe5,0xcd,0x24,0xc9,0xbd,0x0d,0x2f,0x28,0x2e,0x07,0xbb,0x77,0xd2,0xd2,0x91,0x7e,
- 0xbf,0x2c,0xc2,0x7f,0x5b,0x6c,0x3f,0xc9,0xb5,0x31,0xd7,0xb7,0x3d,0x76,0xe7,0x46,
- 0x88,0x65,0x84,0xbb,0xad,0xa0,0x72,0x70,0x44,0x27,0x92,0x42,0x19,0xee,0x1a,0x53,
- 0x3a,0x26,0x59,0x09,0x32,0x54,0x81,0xb3,0x8d,0x88,0x7b,0x09,0x40,0xb4,0x2d,0x45,
- 0x6a,0x4e,0xaf,0xa7,0xa3,0xd7,0x17,0x5a,0x04,0xed,0xd6,0xf1,0xef,0x93,0xa8,0xff,
- 0x71,0xeb,0xdb,0x96,0x97,0x35,0xa4,0x13,0xd8,0x3e,0xfc,0x39,0x72,0x85,0xd7,0x18,
- 0xf2,0x5a,0x5e,0x31,0x78,0xdd,0x20,0x7d,0x5e,0x89,0xbf,0x0f,0x23,0xb0,0xaa,0xfa,
- 0x14,0xa9,0x74,0x2b,0xed,0x35,0x23,0x17,0xc6,0xb3,0xe5,0x65,0xd5,0xfe,0x02,0xa0,
- 0xbf,0x10,0x06,0xec,0xfb,0x7c,0x9d,0x7b,0xf7,0xde,0x79,0xf8,0xf0,0xe1,0x57,0x87,
- 0xa3,0xfe,0x63,0x0f,0x20,0xcd,0x00,0xc2,0x06,0xc0,0xf5,0xed,0x52,0xb7,0x3b,0xd0,
- 0x06,0x9a,0x8e,0x6b,0x3e,0x95,0x56,0x70,0x14,0x00,0xeb,0x04,0x58,0x9a,0xa3,0x46,
- 0xc0,0x1c,0xf5,0x03,0x62,0x47,0x20,0x70,0x00,0x3e,0x25,0xd0,0xe2,0x00,0xe3,0xd9,
- 0xe1,0x15,0xc4,0xbf,0x4b,0xe3,0xd4,0x3c,0x94,0x37,0x4d,0x73,0xc8,0x30,0xa7,0xdb,
- 0x47,0x32,0x57,0x32,0xa2,0x62,0x17,0xb4,0xc3,0x3a,0xde,0xeb,0x6d,0x2c,0x6d,0x50,
- 0x67,0xba,0xab,0xa9,0x48,0x1a,0xdd,0x72,0x96,0x50,0x45,0x59,0x2e,0x09,0xbf,0x53,
- 0xd2,0x4b,0x83,0x23,0x93,0x65,0x5f,0x49,0xc9,0x38,0xb8,0xd8,0xdd,0xa8,0xbe,0x53,
- 0x33,0x6c,0x88,0x8b,0xd9,0x34,0xf8,0x55,0xaa,0x84,0x7e,0xd1,0x22,0x9c,0x5a,0xcd,
- 0xe6,0xc1,0x94,0xbc,0x60,0x4e,0x0f,0xf4,0x47,0xa2,0xa1,0x72,0x65,0xbb,0x07,0x96,
- 0x39,0xd9,0xab,0x6c,0x52,0xdf,0xa6,0x6b,0x57,0x5f,0x8f,0xcb,0xef,0x9c,0x96,0x89,
- 0x0a,0xc7,0x0a,0xf7,0x92,0x4d,0x97,0x65,0xe7,0x67,0x4e,0xdc,0x64,0xb7,0x71,0x05,
- 0x74,0xf7,0x94,0x0e,0x21,0x43,0x6d,0x86,0xba,0xc2,0x25,0x4a,0xb1,0xed,0x26,0xf4,
- 0x7c,0x2c,0x92,0xdb,0x56,0x4e,0x71,0x34,0x2d,0xbc,0x85,0x8d,0x7d,0xd7,0xb9,0x98,
- 0x0f,0x33,0xe8,0x61,0xbd,0x7a,0xe1,0x6f,0x90,0x2f,0x9c,0x6e,0x71,0x9c,0xb7,0x0c,
- 0xb1,0x3c,0x71,0xf2,0x57,0xec,0xe0,0x00,0x45,0xa1,0xec,0xe5,0xa2,0x3a,0x6d,0x3c,
- 0xe7,0x27,0xf3,0xdc,0x10,0xf2,0xad,0xb4,0xe1,0x71,0xcb,0x16,0x06,0x37,0x18,0x66,
- 0x66,0x9f,0x6c,0xa4,0xcd,0x70,0xf0,0x2f,0xdc,0xe2,0xc2,0xbf,0x03,0xd2,0xdf,0xe7,
- 0xbb,0x07,0xf4,0xce,0xbd,0x87,0xbf,0x7f,0xe7,0x90,0xd4,0x7f,0x90,0x1f,0x34,0x02,
- 0xf8,0x0a,0x8d,0x00,0x86,0x0a,0xc0,0x00,0x08,0xeb,0x00,0x5d,0xb5,0xb4,0xbd,0x3b,
- 0x6c,0xac,0xa6,0xca,0xc4,0x00,0x50,0x03,0x60,0x03,0x81,0x68,0x41,0x90,0x38,0x2e,
- 0x0b,0xcc,0xe7,0x04,0x12,0x03,0x00,0x16,0x30,0xce,0xf6,0x50,0xfe,0xbb,0x87,0xa8,
- 0x22,0xf3,0x57,0xec,0x59,0xc5,0x4e,0x10,0x3b,0x65,0xb1,0xd8,0x19,0xde,0xb1,0xac,
- 0x29,0xca,0x9c,0x36,0xaa,0xe2,0xc2,0xda,0xb4,0xa8,0x8e,0xb3,0xf8,0xcb,0xb5,0x31,
- 0x1f,0x89,0x4c,0x25,0x55,0x51,0x6e,0xb5,0x35,0xf7,0x22,0xd9,0x3b,0x34,0x92,0x5d,
- 0x95,0xda,0xc9,0x89,0x88,0x28,0x23,0x39,0xda,0xaf,0x0b,0x16,0x00,0x8d,0x2c,0x59,
- 0xf6,0xac,0xf8,0x5a,0x17,0xeb,0x7b,0x14,0xeb,0xbd,0x19,0x63,0x6e,0x2b,0x19,0xd8,
- 0x37,0xcd,0xf5,0x45,0xa5,0xa8,0x58,0x5d,0xa7,0x07,0x95,0x75,0x6c,0x5f,0xfd,0x81,
- 0x9e,0x89,0x96,0xdd,0xbb,0x19,0x90,0xb2,0x64,0x8f,0x98,0x61,0x4a,0xce,0x0e,0x37,
- 0xdb,0xee,0xf5,0x4f,0x20,0x37,0xd6,0x8a,0x4e,0x07,0x9e,0xc1,0xe8,0x0a,0x1b,0x2b,
- 0xe8,0xec,0xb6,0x1f,0x63,0x92,0xd2,0x29,0x3c,0x9c,0xe9,0xc1,0x18,0xaa,0x20,0xd0,
- 0xc8,0x35,0xb7,0xeb,0xf1,0x65,0x55,0x9c,0x3a,0xb8,0x4e,0x68,0x02,0x33,0xd4,0x3e,
- 0xbe,0xe4,0x59,0xb0,0x37,0xa7,0xa3,0x28,0xff,0xd5,0x22,0xed,0xd9,0x7b,0x06,0xaa,
- 0x1b,0xaf,0x7c,0xfe,0xad,0xf7,0xf8,0xab,0xa7,0x7f,0xf1,0x0d,0x13,0xaa,0xde,0x85,
- 0xd3,0xa7,0x4f,0xbf,0xfa,0xe1,0xc2,0x6b,0xc0,0x00,0xfe,0x70,0xa9,0xc5,0xd4,0x6c,
- 0xaf,0xe8,0x08,0xd3,0x73,0xd4,0xc4,0x51,0x24,0xf3,0x67,0xc4,0x18,0x40,0x3f,0x47,
- 0xa3,0xf9,0x67,0x9e,0xde,0x82,0x97,0xfe,0xc2,0x4c,0x87,0x0f,0x33,0x9b,0x69,0xf6,
- 0x96,0xbc,0xb1,0x3c,0x32,0x7d,0x68,0x71,0x7b,0x2c,0xce,0x9c,0xd2,0xf0,0x8c,0x49,
- 0xff,0x8e,0x2f,0xcf,0xf1,0xff,0xf1,0x3b,0x0f,0x0f,0x4b,0xfd,0x07,0x1e,0x9f,0xcb,
- 0xd1,0x0e,0x00,0xf5,0x60,0x36,0x26,0x97,0xd4,0xc1,0x00,0x97,0x76,0x1d,0x20,0x03,
- 0xa0,0x61,0x40,0xc1,0x3a,0x54,0x01,0x36,0xf7,0x88,0x01,0x2c,0xae,0xe5,0xb0,0x11,
- 0x80,0x37,0x03,0x8e,0xe3,0x16,0x07,0xd8,0x02,0x0e,0x90,0x0c,0xca,0xd1,0xb6,0x68,
- 0x88,0xba,0x74,0xbb,0xd9,0x34,0x73,0xd3,0x40,0x09,0xdc,0x79,0xf4,0x3a,0x17,0x3b,
- 0xce,0x0e,0xc3,0x31,0x5a,0xa0,0x13,0xfe,0xe2,0x31,0x79,0xaf,0x5a,0xdd,0xdc,0xcc,
- 0xd4,0x1b,0xb1,0xd2,0xc0,0xb5,0x9e,0x47,0xa5,0xe6,0x4f,0xd2,0x48,0x44,0xa5,0xa9,
- 0x24,0x13,0x7b,0xb2,0xf0,0x23,0x77,0x1e,0x6b,0xaa,0xac,0xab,0x1e,0x5b,0x34,0xd0,
- 0xfb,0x80,0x8a,0x33,0x9f,0x04,0x03,0xdf,0xab,0x64,0xab,0x59,0x74,0x17,0x77,0x8a,
- 0xb9,0x52,0xbc,0xb3,0x58,0x23,0x5a,0x86,0x83,0xfe,0x26,0x0f,0x7c,0x56,0xab,0xee,
- 0x53,0xbe,0x23,0xd8,0xed,0xd2,0xe4,0xb8,0x66,0xc1,0x3c,0xfb,0xc4,0x58,0x2f,0x02,
- 0xfe,0x47,0x41,0xc1,0xec,0xaa,0x46,0x92,0xfb,0xa2,0x58,0xff,0x80,0x06,0x25,0x1b,
- 0x8b,0x92,0x28,0x76,0x75,0x83,0x2c,0x2a,0x66,0x1a,0x90,0xf7,0xc5,0x66,0x02,0x32,
- 0x22,0x23,0x1a,0x2b,0x34,0xd8,0xc3,0x15,0x1b,0xf6,0xa1,0xea,0x52,0x35,0x44,0x79,
- 0x64,0xa5,0x10,0x32,0x54,0xc2,0xbf,0xbb,0x25,0xd1,0xe9,0x7a,0xa3,0xdd,0x13,0xa9,
- 0xfe,0x40,0x7f,0x2f,0x69,0x8f,0xd5,0x78,0x93,0x25,0x8f,0x2d,0x19,0x9a,0x93,0x86,
- 0x26,0xcb,0xca,0xa6,0xf1,0x21,0xc8,0xa9,0xde,0x5c,0x20,0x98,0xa5,0x8f,0xbf,0x02,
- 0xd5,0xfc,0x33,0x00,0xb1,0x33,0x00,0xf6,0x3f,0x6b,0x21,0xd0,0x18,0x4f,0x38,0xf7,
- 0xb3,0x16,0xa9,0x06,0x6f,0xa1,0xbd,0x30,0x80,0xad,0xd5,0x6a,0x4d,0x22,0xb9,0xc5,
- 0x60,0x89,0x52,0xb9,0x80,0xb2,0xb9,0x65,0x81,0x98,0x1e,0x85,0x5b,0x84,0x75,0xf6,
- 0x82,0xec,0xe1,0xd9,0xe2,0x30,0x66,0x3c,0x00,0x19,0x48,0x81,0x9e,0xf0,0x0b,0xe2,
- 0x3b,0x6d,0xb0,0x8a,0x30,0xf7,0x8b,0x18,0x05,0x5a,0xa0,0x58,0x80,0x27,0xcc,0x40,
- 0xe0,0x07,0xe9,0x8f,0xe8,0x9f,0x9f,0x9f,0xbf,0x0f,0x04,0x0c,0xe0,0xb0,0xd4,0x7f,
- 0x9c,0x4b,0x7b,0x33,0xb4,0x3c,0xb7,0x11,0x28,0xd3,0x08,0xa0,0xae,0x0e,0xf8,0x1f,
- 0x3c,0x06,0x06,0xd0,0xed,0x96,0x4a,0x2b,0x96,0x06,0xb0,0x71,0xb9,0xb6,0xbc,0x78,
- 0x1b,0x1b,0x01,0x4c,0x15,0x80,0xe1,0x7f,0x4c,0x6b,0x03,0x21,0xa5,0xe4,0x40,0x3b,
- 0x95,0x75,0x8f,0xe6,0x94,0x96,0xa9,0x81,0x50,0xe1,0x65,0x1d,0x87,0x0c,0x60,0x9f,
- 0xa1,0xf2,0x05,0xc7,0xbf,0xbb,0xc3,0x30,0xde,0x6c,0xb2,0x7e,0x45,0x12,0x3e,0x35,
- 0x2d,0x85,0x4d,0x80,0x7d,0x9c,0x52,0xaf,0x0a,0x16,0xa9,0x2a,0x8d,0x6a,0x6b,0xb7,
- 0xbe,0xf4,0x27,0x42,0x4b,0xab,0xfb,0x2c,0x91,0x86,0x6d,0x7f,0xdb,0xb2,0x14,0x50,
- 0x78,0xf8,0x45,0x1a,0xbc,0xac,0x28,0x51,0xb5,0x1f,0x18,0x35,0xb6,0xdd,0xeb,0x55,
- 0xed,0x51,0xf0,0xcd,0x49,0x52,0xf8,0x89,0x9e,0xe4,0x70,0x7c,0x11,0x35,0xee,0xed,
- 0x60,0x0d,0xdf,0x79,0x60,0x15,0xc8,0xdd,0x06,0x61,0xa3,0xa8,0x62,0xf3,0x5e,0x39,
- 0xe8,0x80,0x08,0x83,0xb2,0x14,0x00,0x65,0xe9,0x0d,0x17,0xb3,0xac,0x8c,0x5d,0x11,
- 0x45,0x27,0x5b,0x20,0x8a,0xdb,0x75,0xd1,0x80,0xe1,0x65,0x7b,0xc0,0x98,0x12,0x8a,
- 0x5f,0x0d,0x82,0xfc,0x5f,0x17,0xee,0xdb,0xb5,0xff,0x96,0x23,0xf0,0x85,0xbd,0x24,
- 0xf9,0x60,0x7a,0xa8,0x64,0x90,0xa1,0x8a,0xd7,0x80,0x9f,0x5a,0x80,0x49,0x9a,0x2e,
- 0x05,0xb7,0x8a,0x46,0x6a,0xbb,0xd3,0xc8,0xba,0x70,0x53,0x91,0x0a,0x14,0xfc,0x8e,
- 0x01,0xe0,0x10,0x6d,0xa7,0x00,0xe2,0xa7,0x10,0x79,0xbf,0x05,0xc3,0x47,0xa4,0x53,
- 0xb7,0x8e,0xbf,0x09,0xe6,0x9f,0x83,0x82,0x7d,0x09,0x0c,0xc5,0xbf,0xe4,0x32,0x97,
- 0x41,0xce,0x41,0x5e,0x2e,0x95,0x6d,0x0f,0x00,0x96,0xec,0x99,0xd0,0x01,0xb1,0x80,
- 0x34,0x86,0x13,0x36,0xd8,0x86,0x69,0x93,0xf1,0x08,0x06,0xf1,0xb0,0xd7,0xf2,0x10,
- 0x0f,0x23,0x18,0xcb,0x6b,0xd6,0xe6,0x0f,0x2c,0xc0,0x07,0x74,0x81,0xe0,0xff,0xf4,
- 0x11,0x30,0x80,0xc3,0x18,0xfc,0xcb,0xa9,0xef,0x09,0x5d,0xab,0xd1,0x12,0x40,0xc3,
- 0x58,0x49,0xd5,0x41,0x01,0x40,0x42,0x0d,0x00,0x3b,0x01,0x70,0x26,0x40,0x3d,0x83,
- 0xeb,0xcb,0xd0,0x50,0x60,0x5c,0x11,0x8c,0x35,0x03,0x32,0x0e,0xc0,0xaa,0x01,0x47,
- 0xb1,0x25,0xe0,0x4e,0xa6,0x14,0x68,0x8b,0x98,0xbf,0x54,0x73,0xce,0x22,0x61,0x94,
- 0x38,0x92,0xea,0x0b,0xc5,0x8e,0xea,0x6f,0x9a,0x83,0x8b,0x80,0x9e,0x04,0x8f,0x04,
- 0xaa,0x1b,0xb4,0x47,0x69,0x05,0xfb,0xd3,0xd1,0xba,0x73,0x7e,0x99,0xae,0xaa,0xee,
- 0xae,0x71,0x4e,0x3b,0x6c,0xf6,0xa9,0xd6,0xf3,0x5b,0x63,0x96,0x98,0xcf,0x55,0xbd,
- 0x8d,0xfa,0xbf,0x73,0x7f,0x61,0xa8,0x14,0x59,0xa1,0x8b,0x29,0xa4,0xa7,0x32,0xa9,
- 0x8a,0x68,0xa5,0xeb,0xe9,0xa8,0xbc,0xf5,0x0c,0xcf,0x45,0x94,0xd3,0x46,0xe2,0xca,
- 0x52,0x6f,0x2c,0x8e,0xe8,0x88,0xa0,0x58,0xea,0x3a,0x53,0x65,0x67,0xc9,0x6e,0x8b,
- 0x9c,0xfa,0x71,0x9b,0x65,0x51,0x46,0x1c,0x44,0xf2,0x13,0x5b,0x36,0x21,0x45,0xf5,
- 0x7e,0xa0,0x9e,0x5d,0x79,0xd6,0x1e,0x70,0xcf,0x26,0xc8,0xab,0xc7,0x7a,0x37,0x52,
- 0x7d,0xce,0xd4,0x61,0xd1,0xb8,0xf3,0x12,0xa1,0x29,0x8c,0xe2,0xff,0x95,0xe3,0x20,
- 0xa5,0x5b,0x5c,0xfe,0x23,0xee,0x50,0xef,0x6f,0x7e,0x88,0x92,0xf7,0x34,0x32,0x85,
- 0x6f,0xc3,0xac,0xae,0xcd,0x40,0x3b,0x71,0x32,0x9a,0xb8,0x65,0xaa,0x81,0x71,0x9f,
- 0xb6,0xdb,0x33,0x4c,0xe1,0x96,0xa1,0x0b,0xd8,0xd8,0x82,0x69,0x2b,0x6d,0x59,0xb6,
- 0x33,0x90,0xf0,0xa4,0x81,0x49,0xfe,0x02,0xd4,0xfb,0x41,0xfa,0xcf,0xcf,0x5f,0xb8,
- 0x7f,0xe1,0xe9,0xfd,0x47,0xf7,0x1f,0x7d,0xfc,0xf1,0x7f,0x1c,0xca,0xe0,0x1f,0x46,
- 0xc3,0x1c,0xeb,0x01,0xac,0xe3,0x12,0x40,0x6a,0xf7,0x06,0xdf,0xa7,0x03,0xbb,0xaf,
- 0x64,0x1c,0x06,0x10,0xc4,0xc5,0x00,0x70,0x2e,0xd0,0xd2,0xe5,0xe5,0x65,0x6c,0x04,
- 0xa0,0x3a,0xc0,0xad,0x49,0x0e,0x30,0x4e,0x8e,0xc7,0x81,0x6e,0x3b,0x83,0x53,0xf5,
- 0x9d,0xdd,0x48,0x54,0xe2,0xa0,0xbc,0xd3,0xc4,0x41,0xfe,0xc3,0x4b,0x82,0x15,0x3b,
- 0xf7,0x68,0xb1,0x6e,0x82,0x65,0xa8,0x61,0x3f,0xa4,0xc6,0xf6,0xaa,0x7b,0x7b,0x9b,
- 0x26,0x03,0x78,0xae,0xca,0x10,0x4e,0xfa,0xd3,0xe5,0xf5,0x92,0x36,0x97,0xb4,0xf9,
- 0x89,0x71,0xd8,0x9a,0xd3,0xdb,0xed,0x91,0x68,0xfe,0x59,0x39,0xa9,0x58,0xf1,0xe4,
- 0xd7,0x2d,0xeb,0x81,0x82,0x75,0x97,0x7e,0x39,0xf8,0x47,0x40,0x86,0x53,0x2a,0x89,
- 0xe1,0x4f,0x5d,0xb4,0xb7,0x14,0x8f,0x36,0xea,0x0b,0xf1,0x2f,0xc7,0x15,0x91,0x3f,
- 0x5b,0x19,0xb5,0xdf,0xa6,0x85,0x13,0x9c,0x89,0xb5,0x61,0xda,0xdf,0xe2,0xf3,0xf1,
- 0xe2,0x72,0x16,0xe4,0xbf,0x60,0xac,0xd0,0x41,0xa4,0x7e,0x49,0x7e,0x19,0x89,0xa5,
- 0x28,0x7b,0x7a,0xa0,0xfd,0xd3,0xac,0xa0,0x41,0x65,0x6a,0x82,0xcc,0x02,0x19,0xe4,
- 0x21,0x0f,0xa7,0x48,0x1f,0x23,0x3b,0xc9,0xfc,0xcb,0x05,0xc0,0xd0,0x77,0x2d,0x42,
- 0xfd,0x6b,0xd8,0x8a,0x4e,0xa6,0x8f,0xbc,0xdf,0x01,0xbc,0x90,0x27,0xcc,0x9c,0x42,
- 0xa9,0xeb,0x5d,0x78,0x1d,0xd9,0x83,0x01,0xcf,0xb4,0xeb,0x34,0x11,0xcb,0xcf,0xb0,
- 0x01,0xd3,0xef,0xcc,0xd7,0x96,0xfa,0x1f,0x36,0xe5,0xbc,0x43,0x1f,0x48,0x0b,0x38,
- 0x00,0xab,0x06,0xa4,0xbf,0x6b,0xb1,0x7a,0x3e,0x36,0xf3,0xe3,0xf9,0x1d,0xeb,0xed,
- 0x43,0xf4,0x17,0x3a,0xd8,0xe7,0x07,0xf0,0x9f,0xbf,0x70,0xe1,0xc2,0xc9,0xfb,0x4f,
- 0x81,0x5e,0xfc,0xec,0xd1,0xc7,0x87,0x31,0xf7,0xd7,0x20,0xed,0x5a,0xee,0xf6,0x0f,
- 0xa8,0x07,0x00,0x2a,0x00,0xd4,0x03,0xa8,0xd1,0x6e,0x32,0xd4,0x09,0x20,0x63,0x23,
- 0x20,0xf6,0x02,0x04,0x90,0x01,0xcc,0xd5,0xae,0x91,0x0a,0xc0,0x7b,0x02,0x19,0x07,
- 0xe0,0x0c,0x60,0x3c,0x8e,0x02,0x9a,0xea,0x15,0x41,0xe6,0x6f,0xe0,0xba,0x61,0x40,
- 0x54,0xe2,0xb7,0x78,0xa9,0xdb,0x02,0xb1,0x93,0x05,0xf9,0x8f,0x53,0xd4,0x1c,0x0c,
- 0x43,0xf7,0x60,0xde,0xb3,0x05,0xc7,0xd1,0x80,0x13,0xc5,0x40,0x01,0xd8,0xbc,0xd2,
- 0xae,0xaf,0x56,0x7a,0xb8,0x64,0xfc,0xf4,0x5f,0xb7,0x83,0xbb,0x0f,0x74,0xb7,0x87,
- 0xbb,0x52,0x2a,0xce,0xc2,0x57,0x58,0x7b,0x25,0x06,0x51,0xd3,0xda,0xed,0xb2,0x60,
- 0xfd,0x99,0xc8,0x2a,0x0b,0x7c,0x4b,0x7c,0x82,0x37,0x1e,0x3d,0x85,0x70,0x74,0xf3,
- 0xae,0x29,0x29,0x38,0xa6,0x08,0x4c,0x79,0x40,0xa8,0x1e,0x75,0x15,0x13,0xcb,0x3d,
- 0x9f,0xbf,0xe4,0x57,0x84,0x8e,0x02,0x7a,0x5f,0x9c,0x1b,0x51,0xcb,0x4e,0x92,0xf2,
- 0x62,0x6b,0x2c,0x57,0xa0,0xfe,0x2f,0x18,0x2b,0x70,0x10,0x11,0xa3,0xde,0xe2,0x58,
- 0xc5,0xfc,0xad,0x6a,0x01,0x60,0xa8,0xb2,0xbb,0x42,0x35,0x1d,0x41,0x66,0x69,0x83,
- 0x92,0x2c,0x65,0xc7,0x2c,0x7e,0x82,0xcf,0x4a,0xda,0xfe,0x9d,0xc7,0x8f,0x00,0x46,
- 0xe9,0x70,0xc7,0xfb,0x4b,0x5c,0x06,0x08,0x51,0x9b,0x46,0xfd,0xff,0x2d,0x04,0x99,
- 0x97,0x9a,0xfd,0x3e,0x69,0x11,0xe6,0x90,0x2b,0xfc,0xa2,0xc5,0x54,0xf0,0xb0,0x9b,
- 0x38,0x2c,0x2d,0x4a,0x17,0x5a,0x05,0xb2,0xcb,0x14,0xf9,0x70,0x78,0x42,0x86,0x03,
- 0x96,0x0b,0x4c,0x84,0xb3,0xb6,0xfb,0x34,0x73,0x84,0xf7,0x05,0x8a,0x10,0x56,0xec,
- 0x0d,0x9f,0x99,0xa8,0x2f,0xf0,0xa0,0xd9,0x7b,0xb8,0x16,0x08,0xfb,0xd8,0xdf,0xdf,
- 0x29,0x74,0xf2,0xbe,0x7c,0x1e,0x85,0xff,0xd3,0xa7,0x27,0x4f,0x9e,0xbf,0xfa,0xf4,
- 0xc5,0x17,0x1f,0x3d,0x3a,0xb4,0xd6,0x7f,0xa4,0x4d,0xec,0x01,0xa8,0x52,0x0f,0x40,
- 0x0c,0x7b,0x00,0x70,0x6b,0x26,0x89,0x18,0x00,0xcd,0x05,0xc4,0x1d,0x01,0x52,0xa3,
- 0x72,0xfb,0x77,0xd4,0x0d,0x00,0x75,0x80,0xdb,0x6b,0x6b,0x37,0x71,0x3e,0x80,0xc9,
- 0x01,0x40,0x09,0xc0,0xb6,0x80,0x4d,0x3d,0x03,0xf5,0x7f,0xc1,0x92,0x73,0x7d,0xde,
- 0x46,0x68,0x10,0x33,0x6d,0xf9,0x7b,0x95,0x7e,0x39,0x25,0x98,0x7e,0x33,0xc8,0xa1,
- 0x1d,0xb0,0xf5,0x26,0xb7,0x1d,0x0f,0xea,0x19,0x54,0x00,0x70,0x9f,0xa2,0xca,0x4a,
- 0x49,0xb8,0x6b,0xd0,0x7e,0xf4,0xf8,0xf1,0x40,0x95,0xd7,0x2b,0x7a,0xc9,0x63,0x06,
- 0xaf,0x18,0x51,0xa8,0x0d,0x32,0x38,0xb2,0xd8,0x3d,0xf0,0xad,0x71,0x94,0xac,0x4c,
- 0x9e,0xd6,0x91,0x4c,0x26,0xf4,0xd5,0xfe,0x48,0x24,0x8e,0xa7,0xa4,0xca,0xd8,0x4c,
- 0x90,0xad,0xa9,0x8e,0x84,0x1a,0x24,0xf9,0xef,0xaa,0xa3,0x77,0x13,0x49,0x51,0x44,
- 0x93,0xc4,0x8d,0x45,0xb9,0xd1,0xb6,0xe5,0x03,0x1c,0x5b,0x5b,0xc9,0x78,0x6c,0x57,
- 0xac,0x88,0x1d,0x44,0x37,0x3c,0xec,0x2b,0xcc,0xac,0x5d,0xd2,0x70,0x4d,0xe7,0x9e,
- 0x63,0xb9,0xd6,0x69,0x49,0x8a,0x68,0xb8,0xe1,0x80,0x2a,0xd5,0xec,0xe5,0x64,0x32,
- 0x91,0xec,0xa7,0xf5,0x98,0xe8,0x57,0x1f,0x20,0x8a,0xc2,0xe1,0x1f,0xff,0x61,0x66,
- 0xe6,0x27,0x67,0x09,0x50,0x67,0x08,0xff,0x80,0xde,0x0f,0xce,0x81,0xe9,0x55,0x14,
- 0xb9,0x00,0xb5,0x4b,0x4d,0xe2,0x0a,0x4c,0xe0,0x0a,0x18,0x40,0xb8,0x20,0x7a,0x5c,
- 0x98,0xb8,0xb8,0xde,0x15,0x1c,0x76,0x0a,0xb6,0x77,0xec,0x7d,0x61,0xc2,0x63,0x66,
- 0x48,0xdb,0x1c,0x81,0xe6,0xef,0x2b,0xa0,0xe6,0x4f,0xc2,0xff,0xfe,0xc9,0xa7,0x57,
- 0x9f,0x9e,0xbf,0x7a,0xfe,0xfc,0xf9,0x17,0x1f,0x1d,0xce,0xd8,0x7f,0x83,0x86,0xd8,
- 0x03,0x70,0x99,0xcf,0x01,0x56,0xb1,0x05,0x90,0x76,0x69,0xc3,0x6e,0x00,0x9c,0x09,
- 0xb0,0xc2,0x34,0x80,0x1f,0xb6,0xfb,0xd1,0x0d,0xea,0x08,0x64,0x2a,0xc0,0xcd,0x2f,
- 0x0c,0x1d,0xe0,0x4b,0xde,0x1b,0xf0,0x3d,0xbd,0x8c,0xa3,0x74,0xdc,0x12,0x27,0x33,
- 0x4e,0x8a,0x28,0xbe,0x3b,0xc4,0xbd,0xb2,0xdc,0x9d,0x7a,0x5a,0xc8,0x61,0x73,0xec,
- 0x91,0x55,0x08,0x7c,0x73,0xb3,0x8f,0x0c,0x00,0xf7,0xc1,0x98,0x46,0x54,0xa1,0x0d,
- 0xa8,0xfa,0xdf,0x50,0xb7,0x87,0x59,0x55,0xaf,0x61,0x24,0x68,0xcc,0xd2,0x1d,0xd3,
- 0xdf,0x65,0xad,0xdc,0x1e,0x09,0xd6,0x9f,0x8a,0x0c,0x9f,0x4c,0x5a,0x74,0x51,0x42,
- 0x6d,0x04,0xca,0x82,0xe5,0xc5,0xa7,0xa5,0x5e,0x7c,0x7f,0xbf,0xc5,0x01,0xca,0x59,
- 0xc8,0x20,0x41,0x85,0xa3,0x7b,0x53,0xec,0xa0,0xca,0xf1,0xef,0xca,0x8d,0xb2,0x95,
- 0x1b,0xfc,0x03,0xc7,0xb3,0xb1,0x3e,0xc9,0x7f,0x2d,0xf2,0xec,0x3d,0x86,0x9d,0xa4,
- 0xe5,0xd0,0xb9,0x0d,0xa6,0x35,0x2d,0xd3,0x1e,0xe1,0xc2,0xa7,0xcf,0x99,0x2a,0x94,
- 0x55,0xa4,0xa9,0xc9,0xbd,0x75,0x2d,0x36,0x65,0xe2,0x98,0x01,0xbf,0x49,0xdf,0x72,
- 0x8c,0x35,0x9d,0x87,0x3f,0x44,0xf5,0x9f,0x44,0x6a,0xe7,0x0c,0x29,0xfd,0x85,0x30,
- 0xb5,0x08,0x7e,0xff,0x2c,0xd6,0xae,0xc3,0x9d,0xc2,0xd9,0x7f,0x9b,0x99,0xf9,0xb4,
- 0x05,0x70,0x2b,0x74,0xc0,0x96,0x80,0xc2,0xae,0xc7,0x61,0xfe,0x14,0x9d,0xd3,0xdb,
- 0xc9,0xd3,0xe4,0x01,0x78,0xd3,0x29,0x98,0x60,0x67,0xa6,0x8e,0x93,0x1f,0xf0,0x87,
- 0x1d,0xce,0x37,0xf0,0xbd,0x0f,0x6e,0xf3,0x1d,0x42,0xff,0xbd,0x0b,0xf3,0xf3,0x4f,
- 0x4f,0x82,0xf0,0xbf,0x0a,0x74,0xf7,0xfc,0xf9,0x7f,0x79,0x74,0x78,0xad,0xff,0x48,
- 0x52,0xd5,0x13,0xba,0x36,0xb7,0x61,0x28,0x00,0xd4,0x02,0x48,0xf0,0xd7,0x06,0x37,
- 0x78,0x15,0x80,0x86,0x02,0x67,0xfa,0x51,0x6c,0x04,0x00,0x06,0xb0,0x68,0x71,0x00,
- 0x6c,0x07,0xe0,0x5a,0xc0,0x92,0x56,0x2e,0xd7,0x69,0xd5,0xdb,0x89,0x12,0xb4,0x13,
- 0x19,0x19,0x2d,0x04,0xe3,0x3b,0x47,0xe1,0x72,0x94,0xfe,0xc7,0xc9,0xf8,0xb0,0x17,
- 0xc0,0x6a,0xa7,0x63,0xfa,0x0d,0x28,0x81,0xd7,0xd0,0x22,0xfe,0xd0,0x22,0x3a,0x18,
- 0x2f,0x1f,0xe9,0x45,0x71,0x4d,0xfc,0x7e,0xa6,0x8c,0x2b,0x95,0x74,0x07,0x9a,0x60,
- 0x60,0x9d,0x93,0x76,0x68,0xfb,0x3a,0x75,0xa5,0x12,0xec,0x69,0xed,0x78,0x92,0xfc,
- 0x42,0xef,0x78,0x7d,0xe5,0xce,0xd1,0x45,0xbd,0x4e,0xf2,0xdf,0xdd,0x03,0x49,0x4b,
- 0x1d,0x8c,0xf7,0xa3,0xe4,0xd8,0xaf,0x56,0x68,0x81,0xbf,0x3f,0x56,0xfe,0xf7,0xfc,
- 0x18,0x97,0x3b,0xfb,0x86,0xe0,0x0a,0xf1,0x16,0xe0,0x1f,0x19,0x8e,0x9b,0x59,0xe6,
- 0x04,0xd6,0x21,0xea,0x4b,0x00,0x45,0xc8,0x0d,0xe7,0x0a,0xa8,0x91,0x48,0xdd,0x08,
- 0xf7,0x28,0xff,0x25,0x9f,0x64,0xe5,0x00,0x6e,0x5a,0x28,0x6a,0xff,0x7f,0x06,0x41,
- 0x46,0x2d,0x52,0x1e,0x99,0x27,0x31,0x54,0x61,0x82,0x4e,0xe1,0x1b,0x4e,0xcf,0xec,
- 0x96,0x76,0xb3,0xb2,0x54,0xc3,0x14,0x4e,0x26,0xa7,0x48,0x16,0x23,0x60,0x28,0x52,
- 0x77,0x7e,0xf5,0x3e,0x87,0xd5,0x75,0xc0,0xfa,0x4b,0x0c,0x68,0xaf,0xa2,0xfc,0x5f,
- 0x38,0xfb,0xed,0xfb,0x20,0xfe,0x8b,0xd7,0x5b,0x34,0xaa,0x06,0xde,0xbc,0x85,0x0d,
- 0x00,0x85,0x0e,0x47,0x65,0x87,0xc6,0xda,0x84,0x59,0xc3,0x3b,0x5e,0x09,0x90,0xcc,
- 0x40,0x0c,0xa3,0xc3,0x9d,0x75,0x38,0xf8,0x99,0x0b,0xfb,0x81,0xe1,0x1a,0x2f,0x0a,
- 0xdc,0x41,0x81,0xdc,0xa2,0x4e,0x4f,0xa2,0x1d,0x1e,0xf8,0x38,0x47,0xe8,0x30,0x16,
- 0x01,0xa7,0x0f,0x71,0x1f,0x46,0xf4,0x77,0x68,0xb4,0x1f,0xc0,0xff,0x02,0x08,0xff,
- 0x93,0x27,0x39,0xf8,0xaf,0xde,0xbd,0x7b,0xfe,0xee,0x67,0x77,0x0f,0x55,0xfd,0x8f,
- 0x44,0x76,0x73,0x21,0x63,0x11,0x20,0xde,0x05,0x48,0x0a,0x00,0xd6,0x01,0x74,0x63,
- 0x39,0x10,0xea,0x07,0x6c,0xf7,0x37,0x37,0x4c,0x0e,0x90,0xcb,0xb1,0xae,0x80,0x84,
- 0xc1,0x01,0xe6,0xb0,0x4d,0xfc,0xaf,0x51,0x9a,0x4a,0xb4,0xd2,0xae,0x44,0x5d,0x60,
- 0x50,0x10,0x52,0x71,0x61,0xe6,0xc5,0x67,0x7b,0x6d,0x3e,0xaa,0x8f,0xed,0x56,0xbd,
- 0xc3,0x87,0x83,0x62,0x01,0x70,0xda,0xad,0x6a,0xb3,0xd1,0xcd,0xcd,0xe8,0x95,0x00,
- 0x6e,0x55,0x3a,0x8c,0xa9,0x5d,0xb6,0x3f,0x36,0x95,0x1c,0x77,0x59,0xa2,0x53,0xc2,
- 0x3d,0x27,0x55,0x79,0x37,0x1b,0x1c,0x3e,0x4e,0xf9,0x45,0x31,0x08,0xe9,0xa9,0x76,
- 0x9d,0xa4,0xb8,0xb4,0x13,0x31,0xe2,0x80,0xd7,0x6d,0xa1,0x75,0x1b,0xf9,0xe5,0x21,
- 0xc0,0x71,0x9d,0x46,0xba,0xd1,0x3e,0xd6,0x6c,0xf7,0x6d,0x6b,0x9b,0x73,0x63,0x3b,
- 0x6e,0xfe,0x2f,0x39,0xcc,0x72,0x62,0x8a,0xd2,0x3d,0x11,0x60,0x6f,0x68,0x6e,0xe8,
- 0x61,0xdb,0x3c,0x5b,0x8a,0x3c,0x0e,0x09,0xed,0x1f,0xad,0x69,0xa0,0x8d,0x61,0xdb,
- 0x86,0x24,0x49,0xf6,0xd8,0x45,0x82,0xae,0xdc,0x78,0x92,0x92,0xdb,0x99,0x54,0x45,
- 0x66,0x39,0xe7,0xfc,0x8c,0xc9,0xc8,0x5b,0x06,0xb4,0xb9,0xe8,0xf0,0x69,0x51,0x1b,
- 0xb5,0x8d,0xa9,0x9a,0x3b,0x96,0x0b,0xee,0x68,0xc7,0x91,0x50,0x11,0xea,0x3c,0x65,
- 0x7b,0x82,0x63,0x83,0x73,0x57,0x96,0x87,0x0d,0xc8,0x2b,0x71,0x71,0x79,0x16,0x21,
- 0x1b,0xfb,0xab,0xb3,0x88,0x36,0x5f,0x07,0x85,0x7e,0xf1,0xc3,0xb0,0x0f,0xa1,0x87,
- 0xf2,0xbf,0xf9,0xe9,0xeb,0x6c,0xf2,0xdf,0x4f,0x8e,0xbd,0xe4,0x45,0x88,0xfb,0xc2,
- 0xc7,0x66,0x66,0xce,0x1d,0xa7,0x01,0x76,0xe0,0xc0,0x40,0xb9,0x8f,0x80,0x88,0xa7,
- 0x0f,0xbb,0xdf,0xf1,0x81,0x0f,0xa1,0xec,0x0b,0xb3,0x46,0xf9,0x4e,0xc7,0x40,0xb6,
- 0x71,0x74,0xf8,0xbd,0x79,0xe5,0xaf,0x39,0xf7,0x30,0xd8,0x06,0x31,0x92,0x4e,0x87,
- 0xb3,0x03,0xae,0x09,0xf0,0x1b,0x1c,0xe5,0x1b,0xce,0x63,0x98,0x28,0xf9,0x7d,0xa0,
- 0xf7,0x43,0xc5,0x9f,0xc3,0xff,0xe5,0xab,0x27,0x4e,0xdc,0x3d,0x71,0xf7,0xfc,0x67,
- 0xff,0x7c,0xb8,0xf0,0x8f,0x44,0xf6,0x72,0xb4,0x0b,0x90,0xd9,0x05,0x48,0x0d,0x00,
- 0x6c,0x8f,0x6e,0x6c,0x04,0x2c,0x6d,0xe3,0xbe,0xc0,0x41,0x6c,0x04,0x08,0x44,0xf7,
- 0x36,0x96,0xe6,0x0c,0x0e,0xb0,0x76,0xd3,0x43,0xe3,0x01,0x12,0x7e,0x54,0x03,0x6a,
- 0x83,0x14,0xc8,0xff,0x18,0x62,0x82,0x46,0xbe,0x9b,0x94,0x75,0xa2,0x89,0x65,0xb0,
- 0x3f,0x08,0x62,0x27,0x55,0xd9,0xc6,0x3d,0x40,0x69,0x87,0x70,0xd3,0xc1,0x92,0xa0,
- 0xfc,0x47,0xb5,0x6c,0x14,0x15,0x80,0x40,0xbb,0x5e,0x6f,0x54,0x30,0x9a,0xc8,0xa2,
- 0xf6,0xef,0x9c,0x26,0xf4,0xeb,0xa5,0xed,0x61,0x63,0xb5,0xa2,0xcd,0x7e,0x01,0x41,
- 0x52,0x43,0xe5,0x93,0xf1,0xd8,0x6c,0xb0,0x1c,0x87,0xba,0xab,0x6d,0xda,0x81,0x46,
- 0x9b,0x8c,0xf1,0xce,0x81,0xf0,0xf4,0xf7,0x76,0x03,0xc8,0xbb,0x70,0x4b,0xce,0xe7,
- 0x26,0xe0,0x19,0xaa,0x67,0x6c,0x8f,0xc8,0xc1,0x74,0xab,0x87,0xcc,0x72,0xb8,0xdd,
- 0xd5,0x9c,0xbe,0x2d,0x8b,0x1d,0xd4,0x08,0x8a,0x3d,0x6a,0x2c,0xb1,0xa7,0x6f,0x64,
- 0x18,0x77,0xe2,0x2b,0x9e,0x52,0xa9,0x6b,0x85,0x78,0xea,0x54,0xf1,0x47,0x42,0x8c,
- 0x2f,0x3b,0xbc,0x0a,0x69,0x75,0xd0,0x22,0x77,0x6d,0x81,0x3e,0x93,0x34,0xe3,0x82,
- 0x8d,0x4d,0x2a,0xb0,0xea,0x4a,0x30,0xa8,0xab,0xa4,0xd0,0x18,0xc3,0xcb,0xa6,0x23,
- 0x1c,0x8f,0xfe,0x12,0xa2,0x19,0x65,0xeb,0x6f,0x19,0xba,0xb9,0xd1,0x4e,0xc5,0x8f,
- 0xfe,0x1b,0x65,0x2f,0xb2,0x85,0x73,0x1f,0xc0,0xb5,0x43,0xa8,0x46,0x00,0x76,0xf2,
- 0x28,0x9f,0x41,0x03,0x2f,0xf8,0x8c,0xc7,0xfc,0x2c,0xe0,0x73,0x78,0x8d,0xef,0xc3,
- 0x93,0xcf,0xad,0x1b,0x46,0x86,0x91,0x14,0x08,0x88,0x0d,0x3a,0xe0,0x21,0x58,0x3c,
- 0x80,0x98,0x0b,0x3c,0xc5,0x40,0x59,0xd8,0x06,0xf8,0xb1,0xde,0x3f,0x7f,0xe1,0x29,
- 0x97,0xfd,0x27,0x80,0xde,0x3d,0xf1,0xf2,0xcb,0x77,0xcf,0xff,0xef,0x3f,0x1c,0x36,
- 0xfe,0xe5,0xd0,0xda,0x35,0x63,0x15,0x40,0xea,0x02,0x60,0x9b,0xb3,0x33,0x0d,0x00,
- 0x47,0x02,0xe2,0x6c,0xc0,0x2c,0xd5,0x01,0x40,0x05,0x30,0x38,0xc0,0x6d,0xa8,0x05,
- 0xe0,0x78,0x20,0xae,0x05,0x24,0x6a,0x7a,0x30,0x93,0x6a,0xac,0xcb,0x6c,0x12,0xa1,
- 0x86,0x33,0x09,0x34,0xbc,0x48,0x43,0x56,0x3f,0xc0,0x46,0x82,0x89,0x2b,0x16,0xbb,
- 0x7a,0x76,0xa5,0x64,0x39,0xa0,0xa1,0xc7,0xda,0xce,0xf7,0xe2,0x6e,0xf2,0xb7,0xb5,
- 0xd9,0x3e,0x28,0x00,0xd1,0x00,0x38,0x5a,0xa5,0xd5,0x4a,0x74,0x4d,0xb4,0x83,0x7c,
- 0x84,0x84,0x0b,0xa1,0x1f,0x85,0x7f,0x23,0x95,0xd5,0x86,0x39,0x33,0xcc,0x27,0x76,
- 0x3f,0x73,0x7a,0x03,0x1b,0x14,0xb6,0x55,0x5d,0x1f,0x50,0xf0,0x74,0x82,0x59,0xf7,
- 0x08,0x62,0x30,0x11,0x9b,0xe1,0x36,0x40,0x06,0x98,0x5d,0x17,0x62,0x8c,0x73,0xa6,
- 0xe8,0x03,0x28,0xfe,0xe8,0x09,0xbb,0xb5,0x9f,0xe4,0x35,0x37,0x62,0xba,0xe4,0x0e,
- 0x08,0xc0,0x15,0xe0,0x2c,0x05,0xc8,0x13,0x8b,0x05,0x81,0xc1,0x6a,0x52,0x4d,0xec,
- 0x60,0x59,0xab,0xb7,0x47,0xc1,0xf5,0x6d,0x95,0x5b,0xd5,0xd8,0x17,0xea,0x52,0x2f,
- 0x31,0x76,0xda,0xcd,0xe8,0x98,0x11,0xbb,0x25,0x55,0xbb,0x31,0x60,0xa4,0xd9,0xbe,
- 0xc4,0x1e,0xf3,0x81,0x99,0xb5,0x78,0x23,0x55,0xe3,0x56,0xa6,0x22,0x85,0x34,0x64,
- 0xa8,0x15,0x6a,0x45,0xd6,0x79,0x24,0xd1,0x8d,0x3e,0xe0,0xf7,0x46,0x6a,0x98,0x19,
- 0x0e,0xb9,0x84,0xd3,0x4d,0x54,0x1c,0x6e,0x0e,0xb5,0xcc,0x94,0xaa,0xcd,0x91,0x4f,
- 0xae,0x38,0x3e,0x8b,0x90,0x5b,0xfc,0xcf,0x59,0x6a,0x3c,0x03,0x05,0x80,0xd0,0x4d,
- 0x26,0xdf,0x19,0x63,0xe6,0xf9,0xcc,0x39,0xc6,0x01,0x8e,0x61,0x2d,0xbb,0xf3,0x23,
- 0xd4,0x10,0x18,0xd8,0xf1,0xe8,0x98,0x3f,0x3a,0xf8,0xc3,0x3c,0x36,0xc5,0xd3,0x41,
- 0xb8,0xce,0x23,0x5a,0xf1,0x04,0x6e,0xe0,0xe3,0x17,0xeb,0xcf,0x78,0x80,0x76,0xf3,
- 0x78,0x63,0xd9,0x60,0x46,0x84,0x39,0xfc,0x00,0xf0,0x05,0x54,0x2c,0x38,0x53,0xe1,
- 0x3a,0xbf,0x6f,0xde,0x77,0x81,0x64,0xff,0xfd,0x93,0x17,0x2c,0xf4,0x9f,0x78,0x00,
- 0x1c,0xe0,0xe5,0xaf,0xbf,0xfe,0xa7,0xc3,0x86,0x7f,0x24,0xd2,0x06,0x05,0x60,0xc9,
- 0x6a,0x01,0xd0,0x09,0x59,0x08,0x7f,0x89,0x0f,0x05,0xc6,0x6e,0x00,0xdc,0x18,0x10,
- 0x54,0x80,0x7e,0x94,0x2a,0x01,0x97,0x97,0x91,0x03,0xac,0x85,0xd6,0x72,0xb9,0x9b,
- 0xc8,0x01,0x3c,0x89,0x65,0x3d,0x58,0x1e,0xe1,0x3e,0x22,0xa5,0x92,0xfa,0x06,0xee,
- 0x59,0xaf,0xca,0x2a,0x92,0x26,0x27,0x38,0x03,0xf0,0xd3,0x69,0x16,0xe9,0x91,0x9a,
- 0x21,0x07,0x32,0x38,0x28,0xbd,0x81,0x9b,0x8f,0xa0,0xbb,0x92,0x2e,0x45,0x27,0x4a,
- 0x3e,0xbf,0x26,0xda,0x5a,0x2c,0x10,0xbd,0xd2,0xc7,0x9d,0x31,0xa1,0x0e,0x40,0xeb,
- 0x95,0xe2,0x68,0x45,0x10,0xd7,0x5c,0xdb,0x8c,0x30,0x8d,0x13,0xab,0xfd,0xc8,0xb7,
- 0x4a,0x25,0xea,0xba,0x18,0x6a,0xc3,0x90,0xdf,0x1e,0xae,0x45,0x39,0x75,0xb6,0x8d,
- 0xe3,0x1e,0x7b,0x2c,0xa2,0x10,0x83,0x2e,0x1c,0x38,0x0b,0xfa,0x20,0x78,0x12,0x1c,
- 0x57,0x71,0xca,0x04,0xc6,0x9d,0x1c,0x33,0xa7,0x25,0x95,0x6e,0xc9,0x64,0x3b,0xd9,
- 0x63,0xb4,0x01,0xdf,0xd9,0x05,0xce,0x15,0x7a,0x9e,0xf2,0x8d,0x01,0x66,0x65,0x4c,
- 0x2c,0xd0,0xcf,0xb8,0x5f,0xfc,0xaf,0x4b,0x18,0x14,0xd0,0xa2,0x96,0x2a,0x97,0x83,
- 0xc8,0xcf,0x29,0x86,0x14,0x31,0x19,0xd2,0xd7,0xca,0x0d,0x33,0x75,0xbf,0x6c,0x03,
- 0xfe,0x47,0xb4,0x02,0x34,0xff,0x12,0xd5,0xfe,0x25,0x3c,0xe2,0x5d,0x16,0x1e,0x19,
- 0xc8,0x08,0x61,0xef,0xc5,0x27,0x72,0x34,0x1e,0x1a,0x04,0x31,0x41,0x87,0x58,0x04,
- 0x54,0xd3,0x0b,0xc3,0xb1,0x65,0x2e,0x19,0xde,0xb0,0xc7,0xb8,0xed,0xe4,0x10,0x8a,
- 0x57,0x2a,0x15,0xd3,0xa2,0xc2,0x9c,0x3a,0x30,0x79,0xfc,0xff,0x98,0x67,0x98,0xea,
- 0x74,0x5e,0x45,0x74,0x13,0xe6,0x48,0xfe,0xbf,0xfe,0xf9,0xbf,0x5f,0xff,0xfc,0xfa,
- 0xf5,0xeb,0xc7,0xb0,0x12,0xf0,0xca,0x27,0xc0,0x17,0xf2,0xa7,0x80,0x43,0x7c,0x02,
- 0xc8,0xc3,0xf9,0x75,0x04,0xc1,0x09,0xca,0x77,0xf8,0x1b,0x1f,0x7b,0xcd,0x2d,0xe0,
- 0x78,0x7c,0xe6,0x80,0x58,0x0b,0xfe,0x17,0xf8,0x3f,0xb3,0x54,0xc8,0x9b,0x36,0xe9,
- 0x71,0x1e,0xf9,0x11,0x59,0x61,0x3c,0xa0,0x80,0x82,0x1e,0x19,0x0a,0xf1,0x11,0x1e,
- 0x16,0xb6,0xf6,0xe7,0x7d,0xf3,0x88,0x7d,0x5e,0xef,0x3f,0xc9,0xc0,0xff,0xde,0x7b,
- 0x0f,0xde,0xfb,0xcd,0x6f,0xde,0x7d,0xf9,0xee,0xbf,0x1e,0x6a,0xe3,0x3f,0xa3,0xee,
- 0x22,0xb6,0x00,0x44,0x03,0xb8,0x0d,0xf0,0x4a,0x49,0xbd,0x61,0x29,0x00,0xc4,0x00,
- 0xa8,0x15,0xb0,0xb7,0x9b,0xcd,0x36,0x98,0x0a,0x10,0xc5,0xcd,0xbc,0xa8,0x33,0xf0,
- 0xda,0xed,0x50,0x88,0x58,0xc0,0xcd,0x2f,0x3c,0xcb,0x5a,0x36,0x53,0x4f,0x05,0xb3,
- 0x43,0xdc,0x80,0x3e,0x06,0x27,0xfd,0x62,0x31,0x5d,0xf6,0xf8,0xdd,0x04,0x59,0xf6,
- 0xc3,0x2e,0x14,0x69,0x40,0xf2,0x3a,0x5a,0xdb,0x85,0x63,0x85,0xfe,0xb7,0xb5,0x8c,
- 0xc0,0xbe,0xdf,0x9f,0x68,0xeb,0x72,0x39,0xda,0xbf,0x02,0x0c,0x00,0x77,0xb7,0x6d,
- 0x54,0xa0,0x98,0x91,0xe4,0xd6,0x26,0x2a,0x1c,0xd4,0x70,0x89,0xcd,0x16,0xb1,0x61,
- 0xa3,0x51,0x4f,0xed,0x22,0xfc,0x19,0x7d,0xe9,0xf4,0x31,0xa7,0x56,0x48,0x99,0xa8,
- 0xac,0xef,0x62,0xc0,0x10,0x89,0xde,0x2e,0xfe,0x54,0x6d,0x51,0x18,0x03,0x1b,0x05,
- 0x41,0x77,0x19,0x61,0x1c,0xd6,0xc1,0x09,0x45,0xdb,0x3c,0x56,0xe8,0x7f,0xf2,0x5c,
- 0xc1,0x34,0xb1,0xee,0xe5,0x83,0x03,0x70,0x7e,0x7c,0xaa,0x84,0x51,0xcd,0x42,0x80,
- 0xcc,0xfb,0x15,0x16,0xd2,0xb6,0xb4,0x27,0x76,0xb0,0x88,0x50,0xc4,0x6d,0xdd,0xd7,
- 0xe1,0x83,0x7a,0x2c,0x62,0x2b,0x10,0xd3,0x6e,0xc9,0x9d,0x1b,0x6d,0x7d,0x04,0x2c,
- 0x35,0xc8,0xfc,0x06,0x4b,0xb1,0x15,0x7b,0x18,0x2b,0xae,0xcf,0xe1,0x79,0xbb,0x2d,
- 0x45,0x1d,0x1e,0x85,0x8e,0x64,0x79,0x2c,0x8d,0x64,0x88,0xd9,0x5d,0x99,0x66,0x96,
- 0x62,0x90,0xdf,0xe8,0xf7,0x70,0xb7,0x42,0xfb,0x97,0xa4,0xea,0x75,0x59,0xca,0x24,
- 0x9e,0x33,0x61,0x38,0xfd,0x1d,0x4d,0x97,0x41,0x3d,0x3a,0xff,0x39,0xe0,0xfc,0x7a,
- 0x9e,0xcc,0xd8,0xfe,0x77,0x8a,0x50,0x06,0x77,0xef,0x37,0x81,0x31,0xbc,0x0f,0x37,
- 0x9d,0xbf,0x98,0x99,0x79,0xf3,0x6c,0x9e,0x3f,0xcf,0xfb,0x8c,0x83,0xdb,0x63,0xda,
- 0x38,0x37,0xb3,0xe7,0x82,0xd3,0x79,0x47,0xee,0xf2,0x79,0xcb,0xbd,0x79,0xcd,0x1b,
- 0x61,0xb0,0xab,0xcf,0x0a,0x04,0x80,0xef,0x9b,0xc7,0xde,0x3e,0xec,0xef,0x37,0x5a,
- 0xfd,0x18,0xf8,0xdf,0x7b,0xf0,0xe0,0xc1,0x9f,0x3e,0x78,0xf0,0xee,0xbb,0x5f,0xff,
- 0xed,0xe1,0xc3,0x3f,0x12,0x19,0xe5,0x6e,0xd7,0x2e,0x33,0x05,0x80,0xcb,0x55,0xc4,
- 0x3e,0x0d,0x03,0x78,0x0c,0xda,0x5b,0xf7,0x08,0x36,0x02,0x50,0x1d,0x80,0x73,0x80,
- 0x3d,0xdc,0xce,0xef,0x72,0x0d,0xaa,0x01,0xc8,0x02,0xd6,0xd6,0x72,0x6b,0x37,0x97,
- 0xf5,0x0a,0xe2,0x32,0xd8,0x68,0x64,0x91,0xf0,0xbf,0x92,0x85,0x9b,0x92,0xba,0x76,
- 0x0b,0x47,0x0c,0x62,0x1d,0x01,0x4f,0x32,0x22,0x65,0xf4,0x72,0xa6,0x5c,0x4f,0x35,
- 0xd0,0x05,0x1e,0x74,0x56,0x1a,0x59,0x6d,0x94,0xe0,0x16,0xfd,0xec,0xc7,0x9c,0xfb,
- 0x3d,0x51,0xfd,0xc8,0x6a,0xa0,0xdd,0x86,0x1a,0x40,0x66,0x54,0x4f,0x21,0xfa,0x62,
- 0x20,0x69,0xba,0xc4,0x03,0x34,0x8a,0x2a,0x1b,0xb6,0xc4,0x36,0x31,0x01,0xd5,0x3f,
- 0x95,0xda,0xd6,0x82,0x21,0xc3,0x27,0x46,0x7e,0xf3,0xe7,0xcf,0xc9,0xbb,0x99,0xcc,
- 0x28,0xb5,0xba,0x8a,0x11,0x30,0x62,0x00,0xbf,0x15,0x6d,0x39,0xe1,0x20,0xbf,0xe3,
- 0x26,0xd8,0xcd,0x60,0xdc,0x21,0xea,0xec,0x3b,0x27,0xa8,0xe2,0x7a,0xe2,0x78,0x1f,
- 0xd3,0x6a,0xf6,0xa8,0x98,0x09,0x33,0x19,0x8c,0x49,0xf0,0xed,0x8e,0x00,0x4d,0x9f,
- 0x2a,0xda,0xef,0xdc,0x31,0x44,0x63,0x68,0xd0,0x00,0x0e,0x95,0x5a,0x9d,0x74,0x80,
- 0xb9,0x11,0xb2,0x25,0x01,0xfb,0x45,0xb5,0x72,0x19,0xb8,0x19,0x5a,0xa5,0x54,0xb0,
- 0xdb,0xff,0xbf,0xf6,0xce,0x2e,0x34,0xae,0x24,0xbb,0xe3,0x6b,0x14,0x13,0x36,0x9e,
- 0x61,0xc9,0x4b,0x18,0xda,0xb0,0x8d,0x92,0x6d,0xd4,0x2b,0x1b,0x13,0xed,0x83,0x76,
- 0x13,0xe6,0x65,0x50,0x96,0xf5,0x86,0xa4,0x45,0xeb,0xb2,0x41,0xcd,0x2a,0x2d,0x2d,
- 0x51,0xd2,0x08,0x26,0x63,0xd6,0x44,0x84,0x35,0xd1,0xae,0x48,0xf0,0x4e,0xa4,0xb8,
- 0x33,0xea,0x64,0xbc,0xb1,0x89,0x97,0x30,0x61,0x24,0x7b,0xf2,0xd0,0x3d,0x44,0xa8,
- 0xc7,0xac,0x5e,0xf2,0x01,0xf9,0x20,0xca,0x43,0xd2,0xc4,0xe8,0xc1,0x16,0x34,0x7a,
- 0xd8,0x8e,0x5e,0x16,0x12,0x46,0xa2,0xbb,0xd3,0x71,0xea,0x9c,0xfa,0xae,0x7b,0x5b,
- 0x1f,0x1e,0x4b,0xf6,0x86,0xff,0xef,0xde,0xbe,0xb7,0x6e,0xd5,0xa9,0x53,0xa7,0xea,
- 0x76,0xd5,0xad,0xfb,0x55,0x57,0x2f,0xe2,0x99,0x28,0x95,0xa2,0x57,0xe9,0xea,0xaf,
- 0x63,0xe7,0xb5,0x5c,0x47,0xd4,0x7f,0xfb,0x1f,0x88,0x47,0x89,0x21,0x92,0xe4,0x0f,
- 0x0b,0xad,0xaf,0xaf,0x88,0xce,0x7f,0x23,0x31,0xff,0xe1,0xae,0xb3,0xe5,0xa2,0xcb,
- 0xee,0xfc,0x3b,0x17,0x2f,0xce,0x51,0xf5,0x13,0x1d,0xe9,0xdf,0xfa,0xf6,0xa7,0x3e,
- 0xf5,0xeb,0xa2,0x5e,0x99,0xfa,0x7f,0x9d,0xba,0xd7,0xd7,0x2f,0xbe,0x49,0x63,0x02,
- 0xfc,0xe6,0xf5,0xeb,0xa3,0x6f,0xbe,0x21,0x7a,0x05,0x17,0x59,0xf6,0xe2,0xf5,0x39,
- 0x55,0x3f,0xaf,0x73,0xed,0x55,0x55,0x75,0xd4,0xd4,0xdb,0xd1,0xeb,0xb6,0x82,0x3b,
- 0x0e,0xcf,0xe9,0x54,0xf3,0x8b,0x36,0xd4,0xb4,0x01,0xa4,0x63,0x94,0x8c,0x90,0xdb,
- 0xa3,0x2a,0x85,0x51,0x32,0x6b,0x74,0xee,0xfa,0x9c,0x3a,0xe9,0x57,0xb5,0xff,0x8e,
- 0x3c,0xf4,0x8f,0x8c,0x8c,0x50,0xf5,0x7f,0xff,0xeb,0x17,0x4e,0xed,0xcd,0x3f,0x97,
- 0x83,0x35,0xfe,0x0e,0xc0,0x60,0xaf,0x50,0xef,0x4c,0xa4,0xbf,0x94,0x7b,0x40,0xe7,
- 0xed,0xea,0x70,0xda,0x92,0xe7,0x00,0xfc,0x24,0x00,0xb5,0x00,0x05,0xdd,0x07,0xa0,
- 0xcf,0xb9,0xad,0x51,0x27,0x80,0x2e,0x05,0x0c,0xdf,0x9b,0xed,0xde,0x5f,0xe9,0x51,
- 0xbd,0x14,0xa8,0x45,0x81,0xd6,0xcd,0x5c,0xf1,0xfc,0xdb,0x3c,0x9d,0xff,0x1a,0xcd,
- 0x66,0x6a,0x44,0xbd,0x29,0x8e,0x21,0x20,0xd1,0x82,0x8c,0x51,0x38,0xc8,0x6a,0xc1,
- 0xb7,0xdd,0x18,0x82,0xe9,0x74,0xd4,0x59,0x11,0xd5,0xbf,0x21,0xfe,0xae,0xeb,0x54,
- 0x19,0x44,0x67,0xa3,0xc9,0x3d,0xdc,0x1d,0xf9,0xed,0x02,0xea,0x4e,0x0a,0x43,0x9b,
- 0x1d,0xba,0x63,0xb1,0xbe,0x5e,0xef,0x46,0xbd,0x61,0x19,0xf9,0x6b,0x9e,0x4e,0xa9,
- 0xee,0x5a,0x73,0xab,0x21,0x2c,0x58,0x57,0xc9,0x2b,0x0b,0xca,0x85,0x4a,0xb4,0xe4,
- 0xa6,0xab,0x16,0xae,0x45,0xe7,0x0b,0xd4,0x76,0x91,0x0d,0x6c,0xb3,0x8d,0xaa,0x36,
- 0x43,0x2f,0xa5,0x5c,0x2f,0x4a,0xd1,0xaa,0x56,0x29,0xb5,0xbf,0x7d,0xde,0xaa,0xf7,
- 0x0b,0x49,0x79,0x9f,0xef,0xc9,0x04,0x1d,0xbd,0x9c,0x52,0x36,0x7a,0xd5,0x35,0xd3,
- 0xaa,0x1c,0xee,0x56,0x1a,0x3a,0x42,0xd9,0xc9,0x5f,0xb3,0x5b,0x3c,0xef,0x25,0x2d,
- 0x16,0xed,0x68,0xbd,0xc1,0x99,0x31,0xc6,0x97,0x8f,0x9c,0x48,0x28,0x2a,0x70,0x31,
- 0x4a,0xb3,0xe9,0x37,0xbc,0x48,0x0d,0x2a,0x6b,0x8a,0x67,0xbe,0x9c,0xa0,0x57,0x79,
- 0xae,0xaf,0xf7,0x7a,0xbd,0x52,0xd4,0xcd,0xf3,0x1b,0xe6,0x09,0xd9,0xd7,0xff,0x80,
- 0xaf,0x9d,0x77,0x0b,0xe7,0xfc,0xdb,0x6f,0xab,0x8c,0xfc,0xbe,0x38,0x7d,0xa6,0xda,
- 0x44,0x47,0x53,0xae,0xde,0x6f,0x52,0xb5,0x1a,0xfd,0x77,0x7a,0xfe,0x97,0xae,0xaa,
- 0x51,0xd8,0xc5,0x5f,0xa0,0xe3,0xff,0xbf,0xc9,0x06,0xe2,0xa7,0x2f,0x4a,0x61,0xfe,
- 0xc9,0xa8,0x73,0xe4,0x45,0x35,0x92,0xe7,0x51,0xa9,0xf0,0xa2,0xf6,0x1a,0xe5,0x33,
- 0x74,0x25,0xa8,0x43,0x47,0x9d,0xa5,0x74,0x71,0x44,0x0e,0xbd,0x4e,0x5e,0x9c,0x8a,
- 0x4c,0x46,0xeb,0xe0,0xb5,0xdc,0x1a,0xe5,0xab,0xfd,0x8f,0x4d,0xe5,0xe7,0x83,0xbf,
- 0xa8,0xfd,0x23,0x92,0xed,0xf7,0xc5,0xf1,0xff,0x94,0xef,0xfd,0x69,0xb2,0xf7,0x1e,
- 0xde,0x5d,0xaa,0xf2,0x25,0x40,0x1e,0x08,0x58,0x9d,0x01,0xa8,0x8b,0x80,0xd4,0x00,
- 0xa8,0x2e,0x40,0xa5,0x9e,0xe5,0xcb,0x00,0xb2,0x05,0xa0,0x0b,0x01,0x6b,0x6b,0xaf,
- 0x70,0x1b,0xb0,0x96,0x6b,0xae,0xf7,0xd6,0x7b,0x85,0xc2,0x3a,0xcd,0x62,0x92,0x73,
- 0x6f,0xbf,0x3b,0x7b,0xed,0xfc,0xb5,0xf3,0x1f,0x7e,0xf8,0xe1,0xf9,0x6b,0xce,0x74,
- 0xfe,0xda,0x60,0xb4,0x2e,0xfe,0xa1,0xe2,0x8f,0xd7,0x63,0xd1,0x5e,0x41,0xce,0x85,
- 0x6e,0xe9,0xda,0xb5,0xf3,0xd7,0x02,0x61,0x5a,0x7c,0x78,0x6d,0xad,0x14,0xe5,0xca,
- 0x2b,0x0d,0x71,0x28,0xa4,0x16,0x80,0x8f,0xdc,0x15,0xd1,0x7b,0x6f,0x36,0xb7,0xb6,
- 0xd2,0x5b,0x69,0x71,0x1e,0xb9,0xd5,0x6c,0xde,0xef,0xb0,0x91,0xe2,0x7f,0xd5,0x6c,
- 0xe5,0xf2,0x1c,0xf7,0x7c,0x82,0x3e,0x31,0x0f,0x37,0xd3,0xa4,0x87,0x0d,0x60,0x7a,
- 0x3c,0xad,0x97,0xa2,0x73,0x1f,0x9e,0xf7,0xd3,0x76,0x27,0xca,0x47,0xa1,0x2b,0xdb,
- 0x2e,0x1d,0x53,0x45,0x75,0x3c,0xa4,0x97,0xe3,0xdb,0x5b,0x37,0x8b,0x7a,0xd4,0x96,
- 0x6a,0x92,0xa7,0x04,0xaf,0x0f,0x7b,0x51,0x4f,0xd8,0xba,0xbe,0xe2,0x98,0x49,0xa5,
- 0x56,0x88,0xd6,0x63,0x71,0x59,0x71,0xb1,0xdb,0xe1,0x32,0xd2,0x76,0xb0,0xb4,0x28,
- 0xdf,0x4e,0x34,0xab,0x13,0x36,0x06,0xb4,0xa3,0xf2,0x14,0xcb,0xf6,0x1c,0xdb,0x79,
- 0x2e,0xac,0xbb,0x79,0x30,0x79,0x51,0x89,0x47,0x59,0xba,0x07,0xec,0x24,0x3e,0x9c,
- 0xde,0x9a,0x52,0x89,0xae,0x9b,0x98,0x56,0x83,0x53,0x4c,0x72,0x55,0x50,0x5e,0x82,
- 0x72,0xae,0x95,0x9e,0x66,0x6d,0xfd,0x4a,0xa5,0xdf,0x24,0xb2,0xf1,0xf0,0x4d,0x7a,
- 0x59,0x66,0x8e,0x7e,0x8f,0xe7,0x46,0x7f,0x5b,0x9c,0xde,0xbf,0x33,0x3a,0xfa,0x78,
- 0x74,0xee,0x67,0xe9,0x92,0xdf,0x63,0x7e,0x9c,0x6e,0x6e,0xf4,0x27,0x3e,0xa2,0xd3,
- 0xfe,0xb9,0xc7,0xa3,0xbf,0x4e,0xed,0xc0,0xe8,0x63,0x2d,0x2e,0x7e,0x8f,0x65,0xbd,
- 0x95,0x2e,0xe5,0x3b,0x2a,0x83,0xd5,0x82,0xb6,0x84,0x4a,0x19,0x22,0x9d,0xde,0x6c,
- 0x84,0xe7,0xf4,0xa6,0xf2,0x14,0x8b,0xc7,0xba,0x55,0x18,0x9d,0x53,0xc2,0x32,0xfc,
- 0xf1,0xdc,0x53,0xe7,0xc8,0xaf,0x7b,0xfe,0xbb,0x54,0xfd,0x2f,0x6c,0x6f,0x8b,0xe3,
- 0xff,0xc8,0xfb,0x5f,0x3f,0xf5,0x7b,0x7f,0x8a,0xd6,0xb4,0xe8,0x00,0x2c,0xb5,0xf7,
- 0xe4,0x97,0x80,0xed,0x4d,0x40,0xdb,0x02,0xec,0x70,0xb7,0x9a,0x4e,0x02,0xea,0x74,
- 0x68,0x15,0x7d,0x80,0xc1,0x5b,0xb5,0x5a,0x95,0x7b,0x01,0xd4,0x0d,0x98,0x5d,0xca,
- 0x6d,0xad,0x3b,0xc8,0x1d,0x2c,0xf6,0x74,0xe5,0xe0,0xd2,0xb5,0xe1,0x7b,0xc3,0xf4,
- 0x13,0x8b,0x6b,0x74,0xbd,0x60,0x98,0x57,0x7b,0x51,0x99,0xaa,0x7f,0x4f,0xfd,0x03,
- 0xcc,0x9f,0x25,0xd7,0x29,0x0a,0xd1,0x7b,0x2c,0x7c,0x8f,0xa3,0xc9,0x88,0xf7,0x84,
- 0xd7,0xec,0x54,0x37,0x6a,0x16,0x74,0xa5,0xa5,0x63,0x88,0xe8,0x04,0x88,0x6e,0xb0,
- 0x38,0x77,0x15,0xd3,0x7e,0x47,0x1c,0xf8,0x85,0x7d,0xe2,0x34,0xa5,0x50,0xa8,0x74,
- 0xa3,0xca,0x25,0x19,0x97,0x74,0x49,0x15,0xfc,0x13,0x8a,0x68,0xba,0x56,0xec,0xe4,
- 0x28,0xfd,0x15,0xf5,0xa7,0xec,0xe9,0x75,0xb6,0x95,0x57,0x62,0xd7,0xa4,0xa0,0x36,
- 0x86,0x97,0xac,0x6a,0x25,0x5a,0xa7,0x88,0x14,0xc5,0xb1,0x5e,0x67,0x45,0xb2,0x2e,
- 0x03,0xad,0x72,0xb3,0xc8,0x46,0x7b,0x52,0xcd,0x3d,0x47,0xab,0xdd,0x0a,0x7f,0xb4,
- 0x7c,0xf5,0x60,0x9d,0xd3,0xf3,0x12,0x12,0x05,0xdc,0xcd,0x0e,0xcb,0x42,0xba,0xa6,
- 0xed,0xa5,0xa2,0xbd,0x77,0xaf,0x98,0x6b,0x8a,0xc2,0x5d,0x5f,0xf1,0x8d,0x5a,0x17,
- 0x47,0xd9,0x69,0xca,0x99,0x14,0x53,0xd1,0x44,0xfd,0xf7,0x75,0xeb,0x6c,0x19,0x97,
- 0x3f,0x29,0xbf,0xf5,0x4f,0x97,0xec,0xce,0x61,0x2b,0x8b,0xe9,0x34,0xed,0xd1,0x15,
- 0x47,0xc1,0xba,0xa3,0xc1,0x4d,0xc1,0xd5,0x25,0x8e,0xfd,0xe9,0x54,0xb7,0x30,0xab,
- 0x76,0x4b,0x72,0x01,0xf0,0x7f,0xe1,0xda,0xb0,0xb3,0x63,0xb4,0xff,0xf0,0xf0,0x77,
- 0xae,0x5c,0x11,0x35,0x49,0x1c,0x4a,0xe9,0xa5,0x99,0x2b,0xff,0x45,0xb5,0x7e,0xf4,
- 0xca,0xdc,0x95,0xb9,0xef,0xd1,0xf3,0x3f,0xef,0xbe,0xf9,0xee,0xbb,0xef,0xbe,0xf9,
- 0x5b,0xff,0xf5,0x0b,0x74,0x31,0xf0,0x57,0xe6,0x1e,0x53,0xff,0xe0,0x8d,0x37,0x45,
- 0x30,0xd5,0xbf,0xb9,0x2b,0x4f,0xb9,0x16,0xd2,0x61,0xf8,0xa9,0x88,0x21,0x9c,0xa4,
- 0x82,0xea,0xa5,0x58,0x3e,0x56,0x42,0x14,0x42,0xd7,0xe6,0x85,0x38,0xbb,0x95,0xd3,
- 0x99,0x59,0x92,0xd7,0x4f,0xd5,0xe6,0x9c,0x8c,0x28,0xa2,0x89,0x6d,0xd1,0xc5,0x1f,
- 0xbd,0xc2,0x2f,0xf4,0xcd,0x49,0x55,0xaa,0xde,0xcb,0x0b,0x7e,0xfa,0x82,0xff,0x0c,
- 0x1f,0xfb,0xb7,0x05,0xe3,0xdb,0x17,0xc6,0xb7,0x47,0xde,0x7f,0xff,0xeb,0xa7,0x7e,
- 0xef,0x4f,0xd3,0x19,0x1e,0xbe,0x2b,0xbf,0x04,0x54,0xa7,0xab,0xda,0x3b,0xdd,0x83,
- 0x96,0xb9,0xb7,0x2d,0xdf,0x08,0xee,0xaa,0x16,0x80,0xfa,0xd6,0x59,0xd9,0x02,0x50,
- 0x27,0xa0,0x4d,0xbd,0x80,0x4b,0xe2,0x4c,0x60,0x7a,0x31,0x57,0x28,0x73,0x67,0x5e,
- 0x1d,0xfe,0x55,0x3b,0x30,0x10,0xb5,0x8b,0x0f,0x69,0xfa,0x9d,0x87,0x82,0x62,0x91,
- 0x66,0xb1,0x1e,0x2e,0xe6,0xa3,0xba,0x3d,0x4e,0xd2,0x8a,0x5a,0x8b,0x42,0xaf,0xb0,
- 0xd8,0x9c,0x25,0x01,0x31,0xe9,0x85,0x8a,0x47,0xeb,0xbb,0xab,0xa5,0x56,0xb4,0x5f,
- 0xa0,0x3f,0x0e,0x1d,0x82,0xe8,0x4c,0x23,0x2b,0x4f,0x5c,0xe9,0x54,0x92,0xc8,0x66,
- 0xc9,0xb3,0xd4,0x4d,0xe5,0xa6,0x66,0x8b,0x32,0xae,0x52,0xa4,0x94,0x15,0xd5,0xf4,
- 0xb0,0xb8,0xbf,0xa3,0x8e,0xcc,0xde,0xd1,0x49,0x54,0xcf,0xa9,0x87,0x0f,0x8d,0x50,
- 0x18,0x4d,0x38,0x87,0x8b,0xaf,0x46,0x05,0x7d,0xb8,0xec,0x05,0xc7,0xc8,0xe0,0xf8,
- 0x5f,0x88,0x1f,0xff,0xd7,0xcb,0xa9,0x57,0x13,0x54,0xfb,0x59,0xb6,0xc9,0x71,0xd6,
- 0xa7,0xa2,0xac,0x31,0xd2,0x4d,0xa8,0xdb,0x29,0xda,0xd8,0x45,0x53,0x4c,0xc5,0xd9,
- 0x9d,0xb4,0x96,0x2a,0xb8,0x56,0x95,0x52,0x55,0x99,0xb7,0x61,0x1b,0xad,0x9d,0xca,
- 0xda,0x12,0x70,0xb3,0x14,0xcb,0x9b,0x3f,0xe5,0x9a,0x77,0x79,0x47,0x2a,0x0b,0x8a,
- 0xc3,0xaf,0xa4,0x73,0xa6,0x7b,0xe0,0x76,0x81,0xfa,0x1c,0xff,0x65,0x2f,0xa2,0x4c,
- 0x2f,0x0c,0x74,0x4b,0xab,0x45,0x95,0xef,0x62,0x42,0x09,0xf8,0x7b,0xc3,0xf1,0xe4,
- 0x7f,0xd2,0x9f,0x8c,0x9a,0xea,0x24,0x6a,0xdf,0xd3,0x5f,0xf9,0xdd,0x4f,0x7d,0xea,
- 0xf3,0xef,0xd0,0x06,0xd5,0xff,0x6f,0xff,0xe8,0xa3,0x1f,0xbd,0xf1,0xc6,0x47,0x3c,
- 0x18,0xf8,0xb7,0xbf,0xf7,0xf4,0xca,0x53,0xea,0x14,0xfc,0x93,0x13,0xc1,0xc2,0x4f,
- 0xdd,0x3e,0x95,0x2b,0x2f,0x40,0x6d,0x78,0x5e,0x49,0x3c,0xbd,0x62,0xa2,0xfa,0x7a,
- 0xe3,0x72,0xa6,0xe6,0xfb,0x95,0x7f,0x64,0x7b,0x64,0x7c,0x7b,0x9c,0xe7,0x0b,0xe2,
- 0xf0,0x9f,0x39,0xab,0xea,0x7f,0x35,0x55,0xe3,0x87,0x80,0x6a,0x8d,0x5e,0xb6,0xde,
- 0xb9,0x99,0x36,0xef,0x01,0x98,0x16,0xa0,0xa5,0xae,0xac,0xf1,0xf3,0xc0,0xb2,0x05,
- 0x10,0x5d,0xe0,0xc6,0xa0,0xe8,0x05,0xb4,0xdb,0xd5,0xea,0xf4,0x74,0x35,0xdd,0x6d,
- 0xd2,0x11,0x98,0xb9,0xcf,0xdf,0xa1,0xed,0x54,0xc4,0x2f,0x9d,0x6a,0xcf,0x4a,0xc4,
- 0x79,0x02,0x4d,0x02,0xb1,0x7a,0x65,0xf6,0x56,0xd4,0x1c,0xa8,0x74,0x2a,0x2c,0xa4,
- 0x21,0xf7,0x4e,0x7a,0x4d,0x84,0xcf,0x4a,0x31,0x9a,0x8a,0x14,0xb9,0xa8,0x22,0xcf,
- 0x2e,0xed,0x35,0x53,0xd1,0xcd,0x92,0x3a,0xa1,0x2c,0xab,0x6f,0x8a,0xd3,0x55,0xc4,
- 0x6c,0xbd,0xcc,0xdf,0xa8,0x2e,0x94,0x3a,0xb9,0x54,0xb7,0x3c,0x3d,0xfb,0xca,0x5d,
- 0x95,0xa0,0x56,0xa6,0x66,0x65,0xc4,0x6c,0x27,0x52,0x49,0xfa,0x34,0x53,0x3d,0x13,
- 0x4d,0x99,0xe0,0x29,0x12,0xb6,0xaf,0xa4,0xf6,0x4d,0x44,0x4f,0x41,0x4c,0x9b,0xf2,
- 0x18,0x70,0x16,0x03,0xfb,0xa9,0xf5,0x59,0x5d,0x0e,0x4e,0x91,0x98,0xf4,0xe4,0x7c,
- 0x57,0xc1,0x69,0x4e,0x45,0xcd,0xca,0x80,0xd5,0x5e,0x91,0x8a,0x3a,0x9d,0x83,0xce,
- 0x9a,0xb1,0x52,0x8b,0x93,0xee,0xb5,0x74,0x57,0x48,0x54,0x94,0x6c,0x85,0xa4,0x39,
- 0xfe,0x56,0x2a,0x4f,0xf6,0x7b,0x05,0xdc,0x4e,0xa5,0x79,0x47,0x28,0xf3,0x2a,0xa1,
- 0xed,0x7d,0xb2,0xd4,0xe9,0xa6,0xd7,0xdc,0x54,0x85,0xca,0x66,0xd7,0xa6,0x79,0x34,
- 0x03,0x03,0x9d,0x66,0x3a,0x27,0xfe,0x65,0x8b,0x85,0xea,0x1a,0x17,0xec,0x5d,0x5b,
- 0x2c,0x5e,0xfe,0x9d,0x7d,0x37,0x7b,0xf7,0x15,0x31,0xd1,0x82,0xb8,0xfb,0xca,0xec,
- 0x2b,0x5f,0xf9,0xdc,0x9d,0x2b,0x3c,0xbd,0xc7,0xcb,0x3b,0x57,0xfe,0x47,0xd4,0xf0,
- 0xcf,0xbe,0x25,0xdc,0xdf,0xf3,0x9f,0xff,0xf9,0xfc,0x37,0x1f,0x5f,0xb9,0xf3,0x8e,
- 0x38,0x0d,0xf8,0xd1,0xbb,0x4f,0xa9,0xde,0x91,0xec,0x9d,0xf7,0xae,0xdc,0x79,0xaa,
- 0x26,0xda,0x7e,0x8f,0x7f,0xe4,0x27,0xd6,0x57,0x94,0x42,0xde,0x96,0x4b,0x39,0xbd,
- 0x27,0x64,0xe2,0x4b,0x11,0x4f,0x49,0xab,0x88,0x4f,0xb5,0x53,0x2b,0x72,0x2a,0xfd,
- 0x1d,0x75,0xb5,0x4f,0x76,0xfb,0x77,0x65,0xdd,0x17,0x07,0xfe,0xf1,0xcc,0xb8,0x98,
- 0x6f,0x73,0xfd,0xbf,0x70,0x06,0xf7,0xfe,0x34,0xb9,0xb5,0x7b,0xe2,0x0c,0xa0,0x46,
- 0xf7,0x00,0xf8,0x8e,0xb8,0x7a,0x11,0xd0,0x3c,0xab,0x45,0x37,0x02,0xf8,0x69,0x40,
- 0xd1,0x05,0x50,0x67,0x01,0x74,0x14,0xe6,0x5e,0x80,0xe8,0x06,0x88,0x53,0x81,0x7d,
- 0xba,0x65,0xd0,0x12,0x33,0x9f,0x31,0xa4,0xe4,0x38,0x02,0x62,0xea,0xe6,0x97,0xd6,
- 0x96,0xc4,0x39,0x02,0x2f,0x1d,0x6a,0x5d,0x7e,0xc2,0x20,0x4a,0xc9,0x2b,0xf7,0x6a,
- 0xdc,0x01,0x11,0xbb,0x79,0x49,0x4b,0xae,0x39,0x4b,0xb9,0x5e,0x13,0x8b,0xd5,0xa9,
- 0x66,0xaa,0x95,0x6b,0xd6,0x65,0xdd,0x17,0x86,0xc8,0xea,0x2f,0x7e,0xf4,0x75,0xf9,
- 0x3a,0x7d,0xd1,0xaf,0x5b,0xaa,0x4d,0x7b,0x3a,0x94,0x73,0x4d,0x69,0x91,0x9b,0x65,
- 0x4a,0x96,0x2e,0x71,0xb6,0xa4,0x05,0xea,0x1e,0x42,0x14,0xf5,0x9c,0xb4,0x55,0x14,
- 0x47,0x8f,0x70,0x0d,0x72,0xd6,0xf4,0x42,0x47,0x34,0x1b,0x8e,0xb2,0x94,0x74,0xb4,
- 0xdc,0x45,0x2a,0xea,0x69,0x95,0x6b,0x4b,0x7e,0x5e,0xe3,0xc5,0x24,0xc5,0x06,0x23,
- 0xcf,0x44,0xf9,0xa3,0x92,0x1b,0x30,0x22,0x46,0x9c,0x37,0x3a,0xa6,0xfc,0x75,0xb9,
- 0xaa,0x82,0xce,0xab,0x24,0xac,0x05,0xd5,0x9c,0x2c,0x85,0x48,0x16,0x44,0xcb,0xb1,
- 0xdf,0xe6,0xaa,0xe5,0xa5,0x2c,0xa7,0x66,0x68,0x67,0x29,0xe5,0x14,0x89,0x96,0x76,
- 0xca,0xd5,0x57,0x43,0x06,0x75,0x73,0x9d,0x42,0x7e,0xd5,0xec,0x95,0x35,0x27,0xcf,
- 0x61,0x11,0x04,0xe5,0x23,0x1c,0x32,0xa7,0xdf,0x7d,0xef,0x8e,0xcf,0x5b,0x5f,0xa0,
- 0x43,0xbc,0xa8,0x8f,0xdf,0xf9,0x82,0xe0,0x83,0x2f,0x7c,0xf0,0x01,0x2d,0x3f,0xfb,
- 0xcd,0x9f,0x13,0x95,0xfa,0x73,0x7f,0x29,0xc2,0xfe,0xec,0xca,0x9d,0x24,0x42,0x3d,
- 0xa7,0x89,0xad,0xfa,0x33,0x54,0xfb,0xa9,0xfa,0x8f,0x8f,0x8c,0x4b,0x32,0xe3,0x1b,
- 0x5c,0xfd,0xff,0xfb,0x4c,0xee,0xfd,0x69,0xf6,0x8b,0x7c,0x06,0xb0,0xb7,0x52,0x28,
- 0x57,0xe8,0x1a,0x20,0x3d,0x5f,0xe7,0xf4,0x00,0x5a,0xf2,0x3a,0x20,0xb5,0x00,0x8b,
- 0xdc,0x02,0x0c,0xd0,0x79,0xb6,0xe8,0x05,0xaf,0x70,0x13,0x30,0xb8,0xb7,0xd7,0x10,
- 0xae,0x29,0xe1,0x9e,0x12,0x93,0x60,0x70,0x50,0xcc,0xcc,0x2a,0x0f,0x23,0xb7,0xaa,
- 0x07,0x93,0x33,0x9b,0x4f,0x28,0xb0,0x21,0xc5,0x1a,0x4a,0x98,0x54,0xd5,0x58,0x62,
- 0x95,0x7e,0x4e,0x84,0x69,0xe3,0x3b,0xbd,0x5a,0x9d,0xea,0x88,0xc6,0xa3,0x9b,0xee,
- 0x0c,0x94,0xe4,0x4d,0xab,0xba,0xba,0x87,0x58,0x69,0x2e,0x8a,0xbf,0x72,0x3a,0x9b,
- 0x37,0xc3,0xd4,0xad,0x6a,0x1d,0x62,0xae,0xb2,0x0e,0xe1,0xac,0x4a,0xd5,0xf4,0x38,
- 0x71,0x23,0x2f,0x2c,0xd8,0x13,0xa9,0xef,0x49,0x53,0xf6,0x84,0x0d,0x7b,0x24,0x58,
- 0x95,0x56,0xea,0x38,0xab,0xc6,0x6e,0x36,0x60,0xcf,0x58,0x3e,0x68,0xb3,0xca,0x0e,
- 0xa1,0xcc,0x4c,0x83,0x7b,0xac,0x4f,0x06,0x52,0x22,0x62,0xc9,0x11,0xaa,0x46,0x77,
- 0x55,0x9a,0x46,0x8e,0x69,0xb7,0x94,0x94,0x5b,0x26,0x27,0x42,0xf7,0x54,0x5c,0x9b,
- 0xcc,0x20,0x2b,0xac,0xad,0x4e,0xbb,0xf6,0xa9,0x42,0x5b,0x5d,0xa5,0xbc,0xed,0xa9,
- 0x1d,0x20,0x92,0x6e,0x0c,0x2a,0x05,0xf9,0xea,0xb4,0x91,0x53,0xd3,0x6a,0x9e,0x43,
- 0xa5,0x7e,0xf1,0x23,0xbd,0x0d,0x55,0x2a,0x7a,0x0f,0x35,0x54,0x0e,0x1a,0x52,0x90,
- 0x33,0xd7,0x68,0x3b,0x5a,0x98,0x5a,0xbe,0xa1,0x22,0x88,0x83,0x82,0x13,0x51,0x2a,
- 0x6f,0xe8,0x02,0x50,0x1a,0xc4,0x76,0x3e,0x5f,0x5d,0x5d,0x9d,0x76,0x4c,0xd7,0x3b,
- 0xbd,0xea,0xe4,0x7f,0x55,0xfe,0x17,0xec,0x9f,0xc0,0xfa,0x8a,0xe9,0x8b,0xef,0x5d,
- 0x96,0xdc,0x31,0xf3,0x3b,0x74,0xab,0xff,0x7f,0x7e,0xf9,0xf2,0x2f,0xff,0xf0,0x87,
- 0x6f,0x7d,0xe6,0xad,0x1f,0x3e,0x16,0xab,0x1f,0x7e,0xe6,0x33,0x54,0xdd,0xde,0xfa,
- 0x6d,0xee,0x1b,0xb0,0xf4,0x9d,0xcb,0x47,0xcc,0x97,0xad,0x62,0x82,0x1e,0xc8,0x97,
- 0xee,0x64,0xe9,0x3b,0x8e,0x6c,0xe0,0xbc,0xac,0x13,0xf4,0x98,0x91,0xf7,0xf9,0xf9,
- 0x5a,0x3f,0x75,0xf9,0x05,0x1b,0x99,0x0d,0x31,0x8b,0x26,0x60,0x7b,0xfb,0xc2,0xee,
- 0x99,0x56,0xff,0xab,0x57,0xb3,0x0f,0xc5,0x19,0xc0,0x6a,0x6d,0x70,0x45,0x1c,0x42,
- 0xe9,0x1a,0xe0,0x0e,0x37,0x00,0xba,0x0b,0xd0,0x32,0x77,0x02,0x72,0xd4,0x02,0xdc,
- 0xdc,0xdf,0xe7,0xeb,0xec,0x74,0xa1,0x5d,0x75,0x03,0xa8,0x23,0xb0,0x77,0x2b,0x9f,
- 0xa7,0xce,0x80,0xa4,0xdd,0x6e,0xd3,0xcf,0x2c,0x6a,0x3c,0xc9,0x8d,0x9a,0xf2,0xd1,
- 0xc1,0xee,0xba,0xea,0x47,0xf3,0x02,0x55,0x78,0xad,0x51,0x6e,0x1e,0xf0,0x68,0x51,
- 0xf4,0x74,0xf2,0x7e,0x53,0x40,0x4f,0x04,0x0b,0x9f,0xdc,0xc0,0xca,0x9e,0x14,0x57,
- 0x51,0x6a,0xb5,0x20,0xbe,0x9b,0x4c,0xad,0xea,0x24,0xa0,0x23,0x05,0xb2,0x35,0x2f,
- 0x92,0x6f,0x50,0xad,0x1d,0xdb,0xac,0x39,0x3a,0x6a,0x6e,0xb6,0x3d,0xb5,0xb5,0xb8,
- 0x5b,0x47,0xd6,0x45,0x63,0x8b,0x4d,0xfb,0xdb,0xd0,0x43,0xcc,0x65,0x99,0x6a,0x10,
- 0xdf,0x4a,0x56,0xdd,0xa2,0x77,0xa2,0x54,0x13,0x8a,0xc8,0xec,0xaf,0x24,0x4c,0xb1,
- 0x3a,0xe9,0x78,0x76,0x27,0xe4,0xd5,0x0f,0x72,0xf2,0x11,0xb7,0xd3,0x13,0xb6,0x26,
- 0xd7,0x82,0xd0,0x5b,0xff,0x32,0x73,0x39,0xe4,0xb5,0x9f,0xa2,0x93,0xfd,0x3f,0xfb,
- 0x8c,0xaa,0x63,0x7c,0x8c,0xe5,0xe9,0x73,0x9f,0x15,0x01,0x1f,0xfd,0x29,0x6f,0xc4,
- 0xa3,0xf5,0x25,0x14,0x9d,0x49,0x9a,0xe5,0x6a,0xc6,0x4a,0xcf,0x84,0x91,0x9c,0x49,
- 0xa4,0xbe,0x4b,0x75,0x9f,0xbb,0xfd,0x74,0xc1,0x8f,0x0e,0xfb,0x1b,0x1b,0xb2,0xfa,
- 0x67,0xc6,0x33,0xb7,0xb7,0x2f,0xbc,0x9f,0x39,0x93,0x5b,0xff,0x96,0x8f,0xa7,0x86,
- 0x8b,0xb3,0x3c,0xd4,0x76,0xa1,0x5e,0xda,0x6f,0x2e,0x2e,0xca,0x53,0x00,0xe7,0x1c,
- 0x80,0xfb,0xb2,0x0f,0xf8,0x42,0xa0,0x38,0x0d,0xa0,0xdb,0xec,0x15,0xbe,0xda,0x4e,
- 0x97,0xfc,0xe8,0xf2,0xb4,0x38,0xfe,0x37,0x56,0xa8,0x59,0xe7,0x03,0x07,0x1f,0xfd,
- 0x08,0xeb,0x32,0xe4,0xf7,0xf6,0x9e,0xb0,0xe3,0x89,0xf6,0x79,0xe2,0x86,0x1d,0x83,
- 0x27,0x7b,0x83,0x53,0xeb,0xe6,0x0d,0x1c,0xb9,0x38,0xc8,0xed,0xd7,0x57,0x1a,0xa1,
- 0x64,0x7e,0x30,0x29,0x7e,0xa2,0xca,0x44,0x7b,0xfa,0x0b,0xc7,0xb6,0x93,0x23,0x29,
- 0xbd,0x4f,0x62,0xbe,0x49,0x89,0x25,0xe5,0xfe,0x09,0xe7,0x60,0xd0,0x4b,0xe6,0xf0,
- 0xf2,0x8a,0x65,0x39,0x48,0xdc,0x8f,0xf3,0x24,0x3f,0xd8,0xa7,0x8c,0xac,0xdc,0x2d,
- 0x67,0x19,0xb7,0xcd,0x13,0xf6,0xb2,0x75,0xcb,0xf1,0x92,0xb2,0x56,0xe7,0x93,0x3c,
- 0x05,0x1c,0x67,0x7f,0xe7,0x63,0x36,0xdf,0xe2,0xcd,0xc1,0xc1,0x1f,0x50,0x35,0xe2,
- 0xaa,0x64,0x99,0xf9,0xc7,0xdf,0xa1,0xf3,0xfd,0x2f,0x7f,0x8e,0x0e,0xb0,0x33,0x2a,
- 0x70,0xe6,0xf2,0x6b,0xdf,0xa1,0xce,0xff,0x47,0xff,0x31,0x13,0x8b,0xd0,0x8f,0x50,
- 0xaf,0x5e,0xce,0xb8,0xce,0x5d,0xab,0xcf,0xac,0x66,0xd4,0xd2,0x4e,0xbe,0x36,0x7d,
- 0x8b,0x5f,0x5e,0xec,0x17,0x55,0x7f,0x9c,0x2a,0x7f,0x66,0x79,0x7e,0x39,0x33,0x2f,
- 0xd6,0xd4,0xfd,0xbf,0x7d,0x86,0x27,0xff,0x92,0x54,0x7e,0x98,0x2e,0x01,0xd4,0xe8,
- 0xf9,0xfa,0x0a,0xbd,0x09,0xa4,0x07,0x03,0xb2,0x17,0x01,0xd4,0x4b,0x81,0xea,0x4a,
- 0xe0,0x96,0x38,0xf2,0x56,0x54,0x1b,0x50,0xa6,0x73,0x01,0xbe,0xac,0xbb,0x42,0x77,
- 0xaa,0xc5,0xb9,0x80,0x98,0x78,0xa1,0x1c,0xb4,0x66,0xb4,0xe7,0x14,0xdd,0xc8,0x57,
- 0xae,0x29,0x19,0xb8,0xa2,0xb6,0xcd,0x52,0xfb,0xe9,0x10,0x8e,0xa5,0x82,0xe8,0x74,
- 0x63,0xa5,0xd7,0x2b,0x67,0x4b,0xa5,0x81,0x81,0x52,0x29,0x5b,0x28,0xf4,0x56,0x5e,
- 0xd5,0x51,0x8d,0x16,0xa3,0xc9,0xd1,0x60,0xbc,0xa7,0x6c,0x02,0x76,0x8b,0x5b,0x31,
- 0xad,0xc4,0x11,0x77,0x32,0xe0,0x84,0xba,0x86,0x9a,0x84,0x9d,0x85,0x93,0x8a,0x6b,
- 0xc6,0xd4,0x94,0x67,0x88,0xcc,0x94,0xab,0x63,0x65,0xca,0xd7,0x3e,0x15,0x2a,0xd3,
- 0x45,0xe8,0x18,0x67,0xb3,0xd8,0x50,0xc5,0xbb,0x12,0xa4,0x4e,0x8b,0xc6,0x54,0x58,
- 0x0e,0x2b,0x3a,0xfd,0x84,0x62,0xb2,0x16,0xab,0xdd,0xe5,0xef,0x90,0x70,0x27,0x79,
- 0x65,0x6a,0xa3,0xd9,0xe2,0x8b,0xed,0xef,0x86,0x36,0xe3,0x55,0x27,0x41,0x27,0x71,
- 0x6f,0x0f,0x78,0x7b,0x83,0x16,0x3f,0x18,0x19,0xd1,0x95,0xc9,0xb0,0xbb,0x3d,0xf2,
- 0xfd,0x6f,0xd2,0x07,0x04,0x3f,0xfa,0xeb,0x3f,0x9f,0x61,0x0f,0x9a,0x5f,0xfb,0xee,
- 0x97,0x7f,0x49,0x56,0x7f,0xe5,0x75,0x0c,0xb6,0x77,0x8f,0x2d,0x7a,0x02,0xb6,0x69,
- 0xe2,0x9a,0x7f,0x5b,0x9e,0xed,0xf3,0x81,0x7f,0x79,0x7e,0x9e,0x67,0x3a,0xfe,0x8b,
- 0xc3,0xff,0xf6,0x99,0x57,0x7f,0xfa,0xa2,0xd6,0xf0,0xdd,0xb5,0x4b,0xed,0x5b,0xf4,
- 0x92,0x7d,0x65,0x82,0x7a,0x00,0xfc,0x2a,0x80,0xf7,0xce,0xa6,0xbc,0x17,0xc8,0x77,
- 0x03,0xb9,0x0d,0x68,0x36,0xf9,0x4c,0x60,0x40,0x3e,0xc8,0x59,0x2e,0xeb,0x1b,0x80,
- 0x9f,0x8c,0xde,0x31,0x7c,0xfb,0xa5,0x91,0x1c,0xf7,0x39,0xd0,0x4b,0x74,0x3e,0x27,
- 0x8d,0x9f,0x58,0xca,0xc8,0x3e,0x93,0x6d,0xa7,0x56,0x68,0x9f,0x20,0xed,0x5e,0x62,
- 0xa0,0xb9,0x45,0x49,0xbf,0xbf,0x1f,0x19,0x17,0x95,0x85,0x8f,0xa1,0xde,0xb4,0xfd,
- 0xfe,0x57,0xf8,0x8e,0xdf,0x47,0x5f,0xfe,0x93,0x6f,0x7c,0xeb,0xbf,0xbf,0xff,0xfd,
- 0x9f,0xfc,0xd3,0xaf,0xfc,0xe5,0xe7,0xc9,0xe3,0x83,0xef,0x52,0x28,0x8b,0x48,0xd1,
- 0x30,0xa6,0xa3,0xc3,0x48,0x6c,0x5b,0x41,0x76,0x6f,0x4b,0x1d,0x76,0xad,0x7f,0x4a,
- 0xf7,0xf8,0xb8,0xeb,0x39,0x2e,0x2b,0xbb,0x42,0xea,0xd1,0xc8,0x1e,0xff,0xb2,0xa8,
- 0xfc,0x93,0x93,0x62,0x9e,0xa4,0x16,0x40,0x74,0xff,0x45,0xfb,0x70,0x46,0x0f,0xfe,
- 0xf9,0xe4,0xd6,0x86,0x67,0xd7,0xa6,0xdb,0xb7,0xa6,0xd6,0x0b,0xa2,0x07,0x20,0x9f,
- 0x03,0x70,0x2e,0x02,0x9a,0x93,0x00,0xba,0x19,0x48,0x6f,0x6d,0xf2,0x79,0x00,0xf5,
- 0x02,0xe8,0xbe,0x9f,0x68,0x04,0x2a,0xf2,0x5a,0x5c,0x56,0x5e,0x92,0x2f,0x8b,0x5e,
- 0x01,0xb5,0x09,0xb4,0x12,0x1e,0xe5,0xac,0x72,0xd1,0x8a,0xb7,0x79,0x6d,0xdc,0x75,
- 0xe9,0x2e,0x93,0xab,0x6e,0x5c,0x1c,0x85,0xb6,0xe5,0xdd,0x3d,0xbe,0xc1,0x57,0xd7,
- 0xf1,0xca,0xf2,0x86,0x9f,0x54,0x4b,0xbe,0xf2,0xc7,0x4e,0xa5,0x57,0x2b,0x95,0x0e,
- 0xed,0xd4,0xa9,0xd6,0xb3,0x3a,0xba,0x4c,0x81,0x6e,0x25,0x2a,0x47,0xd9,0x58,0xae,
- 0x75,0xd5,0xcb,0x3a,0x29,0x65,0x97,0x34,0x4c,0x7b,0xb0,0x09,0xd2,0xc0,0xb2,0x2b,
- 0x56,0x37,0xfa,0x74,0xfe,0xb2,0x32,0x9d,0xba,0x4d,0x42,0x9a,0xa7,0xe2,0xd6,0x95,
- 0x89,0xca,0x47,0xfe,0xca,0xda,0x48,0xb3,0x50,0xc5,0x9b,0x75,0xf3,0x5a,0x77,0xec,
- 0x55,0x92,0xb2,0xb4,0xf4,0x0e,0x90,0xdb,0x59,0x5d,0x2c,0x65,0x9d,0xc1,0xba,0x63,
- 0x88,0x0a,0x52,0x06,0x94,0xb5,0xc1,0x75,0x93,0x6b,0x93,0x4d,0xbb,0x37,0xcb,0xaa,
- 0x10,0xeb,0xd6,0x4f,0xe5,0x57,0xa6,0x67,0x0b,0x39,0xab,0xf7,0x5d,0xdd,0x96,0x83,
- 0xab,0x46,0x97,0x19,0x4b,0x1b,0xb3,0xf4,0x5c,0x2f,0x9b,0xb2,0x14,0xbf,0xaf,0xde,
- 0x56,0x17,0xcc,0xe3,0x5c,0xf8,0xee,0x1f,0xaa,0xbb,0x7e,0xbf,0xf6,0xc6,0x07,0xff,
- 0xfb,0xd1,0xb7,0xe5,0xc7,0xc0,0xbf,0xfc,0x03,0xbe,0xc1,0x66,0x7e,0x87,0x92,0x09,
- 0x1c,0x4e,0xc4,0xcc,0xb8,0x5d,0x67,0x62,0x02,0x41,0x64,0x72,0xde,0x76,0xbc,0x45,
- 0x67,0x9f,0x4f,0xf6,0x09,0x51,0xe1,0x27,0x2d,0xf3,0x54,0xfd,0x37,0x32,0xdb,0x17,
- 0x2e,0x3c,0x7a,0x11,0xd5,0xff,0xea,0xd5,0x9b,0xb3,0x0f,0xef,0x2e,0xad,0xb6,0xf7,
- 0xf8,0x14,0x80,0x9f,0x04,0xee,0x3e,0x88,0x82,0x16,0xa0,0x95,0xd2,0x9f,0x08,0xa0,
- 0xf3,0x00,0x6a,0x02,0xb8,0x11,0xe0,0x56,0x80,0x9e,0xc0,0x13,0x0d,0x81,0x68,0x09,
- 0x4a,0xa5,0xca,0x80,0x98,0xed,0x82,0x66,0xc7,0xa5,0xc2,0xe9,0xad,0x10,0x21,0x5c,
- 0xe1,0x9f,0x11,0x75,0x5e,0xa3,0xa1,0x10,0x9a,0xad,0x1f,0x39,0x49,0xac,0xc4,0xf2,
- 0xe4,0x57,0xe1,0x57,0x61,0x64,0x10,0xfd,0x06,0xd8,0x63,0x40,0x29,0x60,0xfd,0xa5,
- 0x8a,0x4a,0x5f,0xb9,0x59,0x66,0xa0,0x2e,0x23,0x0e,0x68,0xbd,0x52,0x95,0x8c,0xae,
- 0x6c,0xb2,0xf1,0xb4,0x58,0x45,0x5b,0x32,0xe0,0x98,0xa0,0x23,0x57,0xb4,0x6d,0x15,
- 0x6d,0xa8,0xb6,0x42,0x65,0x4f,0x59,0x4b,0xc9,0xc8,0x5f,0xc5,0xa6,0x67,0xf2,0xac,
- 0xed,0xb5,0x6f,0xcc,0xa8,0x72,0x19,0xa8,0xe8,0xf0,0x01,0x55,0x76,0xf5,0xd0,0x3e,
- 0xb3,0x5d,0x1f,0x90,0xc9,0xeb,0x04,0x28,0xa4,0xae,0x82,0x4b,0x7a,0x47,0x68,0x63,
- 0x75,0x99,0x56,0xb8,0x20,0x07,0x6c,0xb1,0x57,0x6c,0x2e,0xb5,0xa8,0x7a,0xbf,0x49,
- 0xca,0xeb,0xcc,0x4a,0x83,0x8c,0x0d,0x32,0xf2,0x80,0xde,0xaf,0x32,0xbf,0x03,0xa6,
- 0x4c,0x4d,0x31,0xe8,0xc2,0xac,0xa8,0x02,0xad,0x38,0x89,0x18,0x5d,0xee,0xda,0x7d,
- 0x97,0xa8,0x72,0x7b,0x23,0x09,0x55,0xb7,0xfe,0xe8,0xaf,0x3e,0x08,0xc6,0xff,0xf8,
- 0xbb,0x2f,0xea,0x08,0xcb,0x99,0xc4,0x98,0xfd,0x59,0x3e,0xa1,0x7c,0x8c,0xf1,0x65,
- 0x6d,0x17,0xf5,0xf5,0x37,0x44,0x47,0x9f,0xab,0xbe,0xae,0xfd,0x8f,0xe4,0x6a,0x59,
- 0x1c,0xfd,0x37,0xc4,0xc9,0xff,0x19,0x5f,0xfa,0xb7,0x94,0x8a,0xa2,0x01,0x98,0xae,
- 0x71,0x03,0x50,0xba,0x7f,0x33,0xad,0x3e,0x09,0xe2,0x8f,0xe9,0x23,0x6f,0x3d,0xab,
- 0xb1,0x1b,0xe8,0x44,0x80,0x6f,0x09,0x2c,0x36,0xc5,0xd9,0xc0,0xcd,0xe6,0xfe,0xcd,
- 0x26,0xbd,0x71,0x2a,0xe6,0x0e,0x3f,0x0f,0xc4,0x7d,0x03,0xbd,0x26,0x97,0xdc,0x6e,
- 0xaa,0x2d,0x29,0xd3,0x71,0x7e,0x2c,0xdb,0xec,0x34,0xf7,0x95,0xb0,0x5a,0x93,0x20,
- 0xb7,0x30,0x1c,0x57,0xba,0x45,0x90,0x7c,0xe6,0xa8,0xa9,0x34,0x9a,0x74,0x38,0x66,
- 0xd3,0x68,0x50,0xfe,0x4a,0xbf,0x9e,0xb4,0xdb,0x11,0xd4,0xf6,0x68,0xcf,0xc0,0x2e,
- 0x19,0xd8,0xd4,0x76,0xab,0xdf,0xbe,0x13,0xd1,0x78,0x39,0x32,0xfb,0xd6,0xbf,0x63,
- 0xf3,0xe0,0xe8,0xb1,0x89,0xdb,0x4c,0xea,0xa8,0x6e,0x39,0x72,0x86,0x6d,0xb8,0x13,
- 0xdf,0xda,0x67,0xe5,0x3a,0xa6,0x48,0x94,0xb7,0x8c,0xe1,0xc9,0xeb,0x75,0xd3,0xc8,
- 0x37,0x3b,0x5e,0xde,0x3a,0x89,0xfa,0x9d,0xe2,0x30,0x65,0x27,0x7f,0x5e,0x7e,0x9c,
- 0xe8,0xde,0x7e,0x76,0xec,0x6e,0x1a,0x9b,0x92,0xf6,0x8f,0xc9,0x7f,0x53,0xea,0xa6,
- 0xd5,0x3e,0x17,0xc1,0x84,0x70,0x64,0xe6,0x97,0x45,0x8f,0x99,0x3a,0xcd,0xc1,0x6f,
- 0x79,0x79,0x52,0x04,0x65,0x7e,0xe3,0x0f,0xde,0x7e,0xc3,0x3c,0xfc,0xf3,0xc1,0xc3,
- 0xff,0xbc,0x2d,0x42,0x39,0x58,0x2c,0xe7,0x13,0x23,0x7a,0xbf,0x65,0x29,0x43,0x4e,
- 0x3a,0x30,0x4f,0xea,0x2d,0x15,0xee,0x6c,0xc8,0x69,0x59,0xea,0xa6,0xca,0xad,0xb6,
- 0x85,0x21,0xac,0x84,0x27,0x0d,0x6f,0xb9,0x3c,0xe2,0xda,0xcf,0x2d,0x80,0x68,0x66,
- 0x32,0x54,0xfd,0xcf,0xf8,0xd2,0xbf,0x43,0x61,0xb8,0x38,0x2b,0x1a,0x80,0x5b,0x0d,
- 0x3a,0x05,0xe8,0xd0,0x37,0x01,0x77,0x78,0x74,0x9c,0x60,0xa0,0x2b,0x7e,0x86,0xa3,
- 0xc5,0x97,0x02,0x76,0xa8,0x09,0xd8,0xa1,0xd1,0x1c,0xa8,0x27,0xb0,0x48,0x6f,0xe2,
- 0xf0,0xeb,0x38,0xf4,0x52,0x4e,0x93,0x5e,0xc9,0xd9,0x3a,0x9c,0xa3,0xc2,0xfb,0xcb,
- 0x9e,0x24,0xe6,0xf3,0x49,0xff,0x74,0x14,0x9c,0x40,0x5f,0x93,0xa7,0x67,0x51,0x71,
- 0x64,0xac,0xe3,0x64,0xa3,0x99,0xe8,0x7c,0x36,0x9a,0x87,0x6e,0xfa,0xfe,0x4e,0xb6,
- 0xf9,0x2f,0xd5,0xa4,0xbf,0xd8,0xe4,0xd1,0xfc,0xcc,0x6f,0xfc,0xe2,0xef,0xfd,0xf5,
- 0x3f,0xdc,0xfb,0x87,0xaf,0xfc,0xc1,0x1f,0xff,0xfc,0xf2,0x31,0xe4,0x9f,0x0b,0x8f,
- 0x0e,0x0f,0x1e,0xe2,0x89,0xab,0xbd,0x64,0xf2,0x91,0x6a,0x02,0xe6,0xe7,0x37,0x32,
- 0xb7,0xc7,0xb7,0x47,0xce,0xfa,0xce,0x9f,0xcb,0x8d,0xa9,0xe1,0xe2,0x5d,0x6e,0x00,
- 0xe8,0xca,0x3a,0x0d,0x0a,0xb3,0x43,0x63,0x4e,0x45,0xc1,0x75,0x40,0x7d,0x16,0xa0,
- 0x3e,0x17,0x2a,0x1a,0x01,0xd1,0x0a,0xe8,0x66,0x40,0xb6,0x05,0xdc,0x1e,0x88,0x5f,
- 0x7a,0xf1,0xf0,0x69,0xf1,0x88,0xf0,0xfe,0xb2,0x27,0x89,0xf9,0x7c,0xd2,0x3f,0x2d,
- 0x0d,0xc7,0xd7,0x27,0x79,0x16,0x0d,0x47,0xc5,0x3a,0x4e,0x2e,0x16,0x4f,0x28,0x7f,
- 0x92,0xf4,0xfa,0xe9,0x5b,0x74,0x72,0xad,0x66,0x76,0x7f,0x69,0x88,0x78,0x34,0x39,
- 0xd4,0x8f,0x47,0x4a,0x40,0xf0,0x60,0x48,0x56,0xb2,0xbe,0xb2,0xcf,0xc6,0x24,0xa7,
- 0x3f,0x39,0x64,0x67,0xf2,0x24,0xaf,0x47,0x93,0x32,0xc0,0xb3,0xef,0x91,0x5e,0x8a,
- 0x4a,0x4f,0x3f,0xb9,0xd0,0x6d,0x80,0x3c,0xfa,0x8f,0x8f,0x8c,0xdc,0x7e,0x81,0xd5,
- 0xff,0xea,0xd5,0xd4,0x4a,0xb1,0x48,0xcf,0x01,0xd1,0x07,0xf7,0xb2,0xf2,0x1c,0x60,
- 0x67,0x47,0x7e,0x17,0x30,0x36,0xd8,0xa5,0xbc,0x18,0xa8,0xee,0x09,0x10,0xd4,0x17,
- 0xe0,0x76,0x40,0x2f,0xa5,0xeb,0x50,0x8e,0x21,0xd2,0x47,0xf6,0x24,0x31,0x9f,0x4f,
- 0xfa,0xa7,0xa7,0xe2,0xd8,0xfa,0x72,0xc7,0x49,0x2e,0x51,0xe2,0x88,0x68,0xc7,0xc9,
- 0x44,0xae,0xef,0xc6,0xc9,0x89,0x45,0xef,0xa7,0x4f,0xfd,0x8f,0x74,0xc6,0x69,0xb0,
- 0x87,0x5c,0xae,0x3b,0xf6,0xe8,0xf8,0x0c,0xc5,0xea,0xdb,0xf3,0x60,0xf3,0xd0,0x04,
- 0x13,0x85,0x37,0xd5,0xa4,0x3c,0x16,0x8c,0x12,0x3a,0xfa,0x2f,0xd3,0xd1,0x7f,0xe4,
- 0x42,0xe6,0xcc,0x5e,0xfa,0x4b,0xe6,0xe3,0xfa,0x6c,0x71,0x76,0x6d,0xba,0x56,0x93,
- 0x83,0x63,0xd1,0x20,0x3b,0x39,0xdd,0x00,0x84,0x03,0xbb,0x46,0x29,0xf7,0x29,0x6f,
- 0x39,0x28,0x25,0xcf,0x0f,0x44,0x53,0xf0,0x40,0xb4,0x07,0xb2,0x59,0x38,0x94,0x63,
- 0x88,0xf4,0x91,0x3d,0x49,0xcc,0xe7,0x93,0xfe,0xe9,0xa9,0x38,0xb6,0x3e,0xd1,0xd5,
- 0xa2,0xde,0xd6,0x11,0x0a,0x92,0x24,0x8e,0xb0,0x32,0x29,0x4e,0xe8,0xe5,0xc9,0x1c,
- 0x6d,0xc6,0xe1,0xe9,0x1d,0xc7,0x00,0x2d,0xf8,0x80,0x67,0xcd,0x83,0xee,0x83,0xb1,
- 0x05,0xc1,0x26,0x2d,0xd8,0x95,0xc8,0x66,0xdf,0x90,0x67,0x61,0x93,0xf4,0x6d,0xba,
- 0xdb,0x0b,0xca,0xc7,0xf7,0x74,0x3c,0x28,0xca,0xa6,0xc5,0x73,0x3f,0x12,0x5b,0x8f,
- 0x36,0xc7,0x36,0x75,0xf5,0x9f,0x5c,0xce,0x64,0xc4,0xd1,0x7f,0xfb,0x05,0x9e,0xfb,
- 0x6b,0x9a,0xd3,0xd4,0x00,0x54,0xf3,0x7b,0x3c,0x2a,0x54,0x87,0x6e,0x04,0x1e,0xd2,
- 0x02,0xa8,0xaf,0x85,0x58,0x78,0x60,0xd7,0x48,0x8e,0xfe,0x7b,0x00,0xc0,0x73,0x44,
- 0x8e,0x22,0x7c,0x70,0xf0,0x5c,0x6b,0xf6,0xf1,0xb8,0x21,0x26,0x9a,0xed,0xf6,0x09,
- 0x88,0x35,0x45,0x9b,0xb2,0x75,0x10,0xc7,0xff,0x31,0x59,0xfd,0xe9,0x1e,0xc1,0xed,
- 0x91,0xed,0x07,0x2f,0xbe,0xfa,0x5f,0xbd,0xda,0x6d,0x8b,0x06,0xe0,0x52,0x95,0x6e,
- 0x03,0xf0,0x39,0xc0,0xc4,0x16,0xb5,0x00,0x0f,0x64,0xb5,0xa6,0x77,0xfc,0x54,0xd5,
- 0xd7,0x4d,0x40,0x2a,0xd2,0x1f,0x0c,0x08,0xdf,0xfb,0x72,0x5e,0x7b,0xd3,0x93,0xf7,
- 0x3a,0x59,0xec,0x45,0xb3,0x96,0x8d,0xa2,0xa3,0xb9,0xaf,0x07,0x7a,0xeb,0xd0,0x33,
- 0x31,0x0d,0xf3,0x7a,0x9e,0x11,0xf0,0x12,0x38,0x4e,0xfa,0xfe,0x2b,0x70,0xad,0xd0,
- 0x1d,0xaa,0x88,0xa2,0xd0,0x80,0x96,0x93,0x92,0xb3,0x65,0xac,0x0d,0xf2,0xe9,0xd9,
- 0xeb,0xe4,0x29,0x7c,0x9d,0xce,0x8b,0x9f,0x94,0x25,0x27,0x69,0x3f,0x7e,0x60,0x8a,
- 0xf3,0x76,0x9e,0x5b,0x82,0x6e,0x3e,0xfd,0x8c,0xfa,0xb9,0x76,0x4d,0xf4,0x33,0x1c,
- 0xec,0x7c,0xaf,0xf8,0xbc,0x7d,0xe8,0x67,0xc8,0xdb,0x8d,0xae,0x7d,0x72,0xa4,0xc7,
- 0x56,0x4b,0xd4,0x3e,0xaa,0x8e,0x37,0x0e,0x63,0x41,0xfe,0x62,0x42,0x87,0xc7,0x4a,
- 0x56,0xb4,0x70,0xc3,0x54,0xff,0x1b,0x66,0x5a,0x58,0xd0,0x89,0xf8,0x01,0x2a,0x52,
- 0x6c,0x52,0x8d,0x86,0x69,0x37,0x36,0xc7,0x16,0xb8,0xfb,0x3f,0x34,0x44,0x0f,0xfe,
- 0x6c,0x64,0xe8,0x49,0xa1,0x17,0xdc,0xf7,0xd7,0xb4,0x5e,0xbd,0x5b,0x5c,0xbb,0xb4,
- 0x5a,0xbb,0x45,0xc3,0xdc,0xd2,0x98,0xbe,0x13,0x3c,0xca,0x5e,0xf7,0x81,0xda,0x01,
- 0x51,0x42,0x27,0x40,0x2f,0xe4,0xee,0xd5,0x4d,0x02,0xef,0x48,0xf3,0xa2,0xaf,0x16,
- 0x90,0xef,0x89,0xa6,0x28,0xa4,0xa5,0x3d,0x64,0xb0,0x0d,0x57,0xb7,0x19,0x53,0x52,
- 0x41,0x4b,0x46,0x96,0x52,0x6a,0xa9,0x13,0x35,0xfa,0x65,0x7c,0xeb,0x63,0xa4,0xb5,
- 0x3e,0xcf,0xcc,0x94,0x36,0xee,0xa8,0xf4,0xad,0xe1,0x8e,0xfd,0xa1,0xd3,0x28,0xd6,
- 0x93,0x8a,0xa0,0xdf,0x70,0xd6,0x59,0x6d,0x85,0x46,0xb7,0x6c,0x92,0x8e,0xa5,0xae,
- 0x7e,0x9b,0x29,0x25,0xa2,0x0b,0x2e,0x2c,0x52,0xed,0x6f,0x2c,0x69,0x59,0xb5,0x4e,
- 0x76,0x53,0xc6,0xc7,0x14,0xae,0x55,0xeb,0xe6,0xd9,0x7a,0xb5,0xa2,0x40,0xb1,0xd9,
- 0x6c,0x79,0x91,0x74,0xbc,0xc8,0x4d,0xc3,0xdf,0xfd,0xd6,0x10,0xfd,0x1f,0xb1,0xe2,
- 0x36,0xb3,0x66,0x4f,0xe9,0xfd,0xe3,0xe6,0xe1,0xa4,0x35,0xf8,0x6c,0x59,0x48,0xda,
- 0x74,0x1a,0x11,0x53,0xff,0xf9,0xd8,0x2f,0x2f,0xfc,0xd3,0x53,0x42,0x17,0x46,0x32,
- 0x2f,0xe0,0xa1,0xdf,0x64,0x3e,0xce,0xce,0xde,0xe5,0x73,0x80,0xc1,0x95,0x15,0xbe,
- 0x13,0xd8,0xd9,0x4a,0xa7,0x73,0x39,0x7d,0x2f,0x80,0xfe,0x0f,0xfa,0x99,0x80,0x16,
- 0x0f,0x15,0xec,0x76,0x04,0xe4,0x7e,0xe3,0x46,0xdb,0xfe,0x1d,0xdc,0x7d,0xea,0x54,
- 0x11,0x5f,0x22,0x15,0x6e,0x7a,0x51,0xf8,0xcf,0x62,0xfe,0xd7,0x81,0x96,0x20,0xaa,
- 0x17,0xd6,0x0a,0x43,0xe3,0xe6,0x1c,0x9a,0xbe,0x0d,0x74,0xea,0x85,0x53,0x19,0x3c,
- 0x53,0x12,0xcc,0x4b,0x85,0x3a,0xfd,0x76,0x25,0x15,0x57,0x95,0x60,0x9b,0x2b,0xd2,
- 0xaf,0x48,0x6d,0x76,0xfd,0xb8,0x47,0xfa,0xc4,0xd5,0xb6,0x4c,0xcd,0xb4,0xba,0x83,
- 0x48,0x2d,0x5f,0x65,0xac,0xac,0xe2,0x7a,0xbd,0x12,0x69,0x45,0x4e,0x29,0x26,0xab,
- 0xf3,0xf2,0xa6,0x7c,0x5a,0xa9,0xb3,0xaf,0xd2,0xcf,0xc2,0xc7,0x71,0x2f,0xbf,0x05,
- 0x10,0xbd,0x7f,0x71,0xf0,0x9f,0x1c,0xa2,0x2b,0x7f,0xe3,0x74,0xe1,0x7f,0xfe,0x65,
- 0xe8,0xfb,0x6b,0x9a,0x97,0xf8,0x1c,0xa0,0xbd,0xd7,0xe0,0x71,0xa7,0x2b,0x9d,0x89,
- 0x9b,0x69,0xbe,0x15,0xd0,0x95,0x4f,0x04,0x45,0x72,0xb4,0x88,0x94,0x19,0x28,0x98,
- 0x1a,0x81,0xc8,0x99,0x38,0x44,0x35,0x09,0xee,0x1c,0xf9,0x62,0xce,0x66,0xcb,0x6e,
- 0x86,0xeb,0x20,0x58,0x6f,0x44,0xc1,0x56,0x2b,0x14,0x70,0xc5,0x62,0xd6,0x85,0xe6,
- 0x24,0xa7,0x1f,0x9a,0x91,0x64,0x7b,0xdf,0xf4,0xe3,0xa6,0x7a,0x0a,0x82,0x90,0xd0,
- 0xbc,0x84,0x42,0x38,0x2a,0x0f,0x09,0x0a,0x12,0xf2,0xe0,0x9b,0x95,0xa4,0x50,0xee,
- 0x58,0x57,0xae,0x8f,0x9a,0x84,0xe2,0x39,0x34,0x3c,0x9c,0x5a,0xf1,0x40,0x3b,0x87,
- 0xde,0x34,0xc2,0xcc,0xd9,0xd7,0xe4,0xe7,0x89,0xa9,0xfe,0x9b,0xa6,0xeb,0x2f,0xce,
- 0xfc,0x6f,0x8f,0x6f,0xef,0x6e,0x8f,0xbd,0x4c,0xd5,0xff,0xea,0xd5,0x9d,0x76,0xf1,
- 0xee,0xda,0x12,0x5d,0x06,0xe4,0x61,0xfa,0xf9,0x43,0x1d,0xa2,0x05,0xc8,0xd1,0x07,
- 0x72,0xba,0xea,0x12,0x5f,0x64,0x47,0x98,0x49,0x99,0x2e,0x5c,0xca,0x74,0xad,0xc3,
- 0x13,0xd9,0xf8,0x6c,0x4f,0x35,0xc3,0x13,0xe1,0xe0,0x7c,0xd1,0x39,0x1d,0x4f,0x56,
- 0xe9,0x68,0x48,0x39,0x91,0xc2,0x53,0xcf,0xf0,0x0a,0x41,0x28,0x74,0x1a,0xe9,0xfb,
- 0x09,0x87,0xd1,0x93,0xd4,0x84,0x25,0xd4,0xd2,0x43,0xf3,0xc4,0xdc,0x09,0xd1,0x93,
- 0x13,0x71,0xb2,0xa0,0x34,0xf8,0x99,0x76,0x4f,0xf6,0x53,0x6e,0x8e,0x3d,0xb9,0x98,
- 0x59,0x8e,0x6f,0x2a,0xc9,0x00,0x2f,0xef,0x89,0x81,0x3a,0x72,0x4c,0x4c,0x4f,0x29,
- 0xa9,0x59,0x7a,0xa7,0x5e,0x74,0x05,0xfe,0x04,0xd8,0x43,0xff,0xa3,0x05,0xd1,0xf5,
- 0xa7,0x67,0x05,0x44,0xdf,0x3f,0xc3,0xcf,0xfc,0xec,0x66,0x5e,0xb2,0xea,0x7f,0xf5,
- 0x6a,0x34,0x35,0x2b,0x2f,0x03,0xe6,0x1b,0xa2,0x05,0x28,0x53,0x1f,0x60,0x7f,0x62,
- 0x4b,0x7d,0xdc,0x49,0x75,0x03,0x6c,0x2b,0xe0,0xd3,0x52,0xd7,0x6b,0x5a,0xea,0xc7,
- 0x32,0x07,0xce,0xcf,0xfc,0x23,0x79,0x33,0x72,0x9d,0x32,0xe8,0xc0,0xc4,0x77,0xea,
- 0x63,0xe4,0x44,0x8e,0x02,0x45,0x56,0xc3,0x81,0x0a,0x8d,0x7c,0x7f,0xe3,0xe1,0x59,
- 0x13,0x05,0x52,0xb1,0xf4,0x6d,0x8c,0x67,0x49,0x5f,0xbb,0x3c,0x43,0xbc,0xf8,0x61,
- 0xbb,0xa4,0x17,0xd6,0x40,0x2f,0x7e,0x14,0x25,0xc8,0x78,0x5a,0x83,0xb8,0xb1,0x2c,
- 0xd8,0x7d,0xa4,0x2c,0x8a,0x42,0x65,0x91,0x31,0x2f,0x0a,0xcd,0x72,0x4b,0xad,0xe5,
- 0xfb,0x1d,0x98,0x62,0x0b,0x72,0xe4,0xee,0x89,0x58,0x73,0x60,0x92,0xb4,0x49,0x18,
- 0x6b,0x4c,0x76,0x23,0xdd,0x3a,0xdd,0x78,0x86,0xeb,0x77,0x9f,0xac,0xca,0x7e,0x12,
- 0xec,0x29,0x80,0x77,0xc3,0x80,0xee,0xfb,0xd3,0x73,0x41,0xa2,0xf2,0x6f,0xf0,0xeb,
- 0x41,0xdb,0x23,0xef,0xbf,0xe8,0xbb,0xfe,0x89,0x6c,0xd5,0x66,0xb9,0x0b,0xc0,0x2d,
- 0x00,0x8d,0xb5,0x5d,0x11,0xa7,0x01,0x13,0xfc,0xc5,0x0d,0x7e,0x14,0x43,0xde,0xec,
- 0x97,0x5f,0x89,0xd4,0x6d,0x81,0xc2,0xdb,0xb0,0xfb,0x31,0x46,0x2b,0xfe,0xd7,0x3e,
- 0xf0,0x82,0x9c,0xea,0xe9,0xab,0xf1,0x55,0xaa,0x7f,0x8d,0x17,0xc1,0xd6,0xca,0x28,
- 0x1e,0xe0,0xc5,0x3c,0xbd,0xf4,0x8d,0xab,0x15,0xc6,0x69,0xb9,0x31,0x43,0x45,0x07,
- 0xbe,0x9c,0x1b,0xdf,0xb8,0x83,0x22,0x4e,0xb4,0xca,0xd5,0x71,0x10,0x99,0xd8,0xad,
- 0xd0,0xd6,0x78,0x66,0x5a,0x9e,0x02,0x2f,0x7f,0x7e,0x40,0xe8,0x15,0xda,0xe5,0xb5,
- 0x00,0x31,0x9b,0xc3,0x52,0x90,0xf6,0xf8,0x62,0x07,0x72,0xfb,0x80,0xae,0xfb,0x3b,
- 0x57,0xe2,0xcf,0x82,0x1b,0x0b,0x0b,0xe1,0x55,0xfc,0xf0,0x36,0x40,0x10,0x18,0x33,
- 0xcc,0xf7,0xe2,0x6e,0x3f,0xf5,0xfb,0xa9,0xe7,0x4f,0xef,0xfa,0x8f,0x8f,0xd3,0x90,
- 0x00,0x43,0x2f,0xba,0xaa,0x27,0x93,0xda,0x6f,0xcf,0xce,0xae,0x2d,0xad,0x56,0x6b,
- 0x7b,0x83,0x74,0x16,0x50,0xae,0x97,0x2a,0x95,0x7d,0xd1,0x0b,0x48,0xcb,0x36,0x80,
- 0x5a,0x01,0xf9,0x74,0x86,0x68,0x08,0x1e,0xd0,0xb8,0x00,0xdc,0x24,0xc8,0x2d,0xfd,
- 0x2c,0x90,0xf6,0x51,0xab,0xc4,0xa9,0x1b,0xca,0xf4,0x13,0xe8,0x3f,0x9d,0x30,0xe2,
- 0x59,0xa5,0x6f,0xa2,0x1f,0x19,0xd3,0xdb,0x0c,0xbc,0xdd,0xf8,0xc6,0x7d,0x10,0x14,
- 0x70,0xa0,0xe4,0x30,0x4b,0x7c,0x7b,0xd4,0x56,0x52,0xb4,0xbe,0xf9,0x3b,0x56,0x56,
- 0x12,0x05,0x1e,0x24,0x5b,0x2a,0x30,0x21,0x07,0xae,0x22,0x89,0x48,0xb0,0xf5,0xe8,
- 0x6c,0x2a,0xfd,0x69,0x21,0xfa,0xfc,0x63,0xba,0xf2,0xcf,0xcf,0xcf,0x67,0xe6,0x33,
- 0x34,0x7a,0xc1,0xc8,0x85,0xed,0xa1,0x97,0xad,0xeb,0x6f,0x49,0x55,0xce,0xcd,0xce,
- 0x2e,0x2d,0x4d,0xb7,0x6b,0x7b,0x8d,0x06,0x7d,0x72,0x23,0x5b,0x97,0x5f,0xa1,0x6c,
- 0x8a,0x36,0x80,0x1e,0xc5,0xce,0xed,0x2c,0xca,0x47,0x32,0x77,0x3e,0x4d,0x8d,0x01,
- 0x3d,0x01,0x4c,0xb3,0x71,0xa8,0xd9,0xae,0x13,0xfc,0x0f,0x0b,0x39,0xd4,0xa7,0xaf,
- 0xda,0x30,0x62,0x77,0x27,0xb0,0xc2,0x8b,0x76,0x94,0x76,0x57,0xcb,0xb3,0xa5,0x9f,
- 0x98,0x8d,0xe4,0x28,0x7d,0x8a,0xab,0x5f,0x92,0xf1,0x2c,0x1d,0xd7,0xc0,0x3e,0x19,
- 0x3f,0xb2,0x1c,0xe2,0x16,0x74,0xe5,0xfe,0x3e,0x34,0x33,0x87,0x5b,0x18,0xfb,0xbf,
- 0x78,0x19,0xfc,0xb4,0x98,0x1e,0x8c,0x8d,0x89,0xea,0xff,0x68,0x93,0x9e,0x9a,0x3b,
- 0x4d,0xc4,0x11,0x7a,0x8c,0x1e,0xcb,0xa3,0x07,0xf4,0xa8,0xa7,0x2e,0x16,0x63,0x63,
- 0xe2,0x27,0x66,0xf6,0x1e,0xa3,0xdb,0xf6,0x0b,0xb4,0x16,0x95,0x79,0xc1,0xfb,0x91,
- 0x34,0x4d,0x6c,0xe1,0xd8,0x26,0xe9,0xd8,0x54,0xcf,0xfb,0xaa,0xc7,0x7c,0xe5,0x29,
- 0x3f,0xbd,0x7c,0x28,0x4e,0xfb,0x79,0x98,0x90,0xdd,0x97,0xe2,0x89,0xbf,0xc3,0x68,
- 0xd5,0x57,0x67,0xd7,0xd6,0x96,0xaa,0xe2,0x2c,0x60,0xaf,0xc1,0x9f,0xdd,0xca,0xd2,
- 0x67,0xb7,0x2a,0xf7,0xe9,0x93,0xb2,0xcd,0x74,0x3a,0xad,0x5f,0x4b,0xc9,0xd1,0x2b,
- 0x3f,0xb4,0xa6,0x39,0x9d,0x53,0x0e,0xf9,0x9d,0x67,0xbd,0xca,0x2d,0x26,0xf9,0x3b,
- 0xde,0x9e,0x98,0x23,0xeb,0x2a,0x71,0x25,0x93,0x74,0x86,0x21,0xb9,0xc5,0xc5,0xc5,
- 0x20,0x11,0x37,0x20,0x6e,0x44,0x3c,0x0d,0x16,0x4d,0xb2,0xf4,0x98,0xe9,0xf7,0xcd,
- 0xb2,0x9f,0x23,0xb3,0x61,0x43,0x62,0x32,0xa1,0x55,0x89,0x3a,0x92,0xc4,0x42,0xaf,
- 0x30,0xf7,0x81,0x5f,0x62,0xc2,0x09,0xaa,0x83,0xc2,0x89,0x67,0x26,0x56,0x42,0x09,
- 0xfa,0x17,0x43,0x2b,0x5c,0x69,0xfa,0x4e,0xf8,0x97,0xc6,0x86,0x9e,0xf7,0xf3,0xfb,
- 0xc7,0x65,0xc8,0xbc,0x40,0x30,0xf4,0xc8,0x73,0x1e,0x5f,0x83,0x7c,0x59,0x88,0x5f,
- 0xff,0x9b,0x9f,0xdf,0x98,0xdf,0xd8,0x90,0x95,0x7f,0x64,0x77,0x77,0x64,0xf2,0xa5,
- 0xb9,0xe7,0xdf,0x97,0x28,0x3b,0x4d,0x2d,0xc0,0x74,0xb5,0x56,0xdb,0x6b,0xc8,0x2f,
- 0xef,0x65,0xb3,0x34,0x94,0x44,0xa7,0x73,0xff,0xfe,0xfe,0x7e,0x73,0x42,0xb4,0x03,
- 0xfa,0x75,0xcd,0x34,0xbf,0xfe,0x4b,0x7d,0x03,0xf9,0x49,0x3e,0xb9,0xe6,0x17,0x82,
- 0xbd,0x95,0x72,0xa5,0xdd,0x85,0xf6,0x73,0x42,0x7c,0x71,0xa5,0x3b,0x41,0xaa,0x6f,
- 0x7c,0xe5,0xf6,0x94,0x39,0x86,0x79,0xe9,0x7b,0xea,0x1c,0x03,0xd4,0xec,0x67,0xe5,
- 0x98,0xe9,0xbb,0xe5,0xe0,0x05,0x6f,0x05,0x4e,0xdf,0xcb,0x3a,0x02,0x2b,0xb6,0x82,
- 0xed,0xb4,0xa3,0xe3,0x30,0xd5,0xe9,0x78,0x4c,0x2f,0xf7,0xbe,0x95,0xae,0x77,0xb2,
- 0x5d,0xb1,0x88,0xfd,0x83,0xb6,0xb6,0x7c,0xe5,0x89,0xc5,0x98,0x56,0xf6,0x84,0xb9,
- 0x4d,0x37,0xd3,0xcd,0xe6,0xe2,0xdf,0x4c,0x4e,0xda,0x1a,0x34,0xf4,0xfc,0x5f,0xd9,
- 0x4d,0x7e,0x43,0xd7,0xbc,0xd2,0xa7,0xeb,0xef,0x90,0x7a,0xd9,0x4f,0x86,0x0f,0x25,
- 0x4f,0x43,0xea,0x5d,0xc0,0x98,0xa5,0xd4,0xe5,0xdf,0x90,0xe3,0x7b,0x66,0xa8,0xf2,
- 0xd3,0xd0,0x82,0x3f,0x06,0xb5,0x9f,0x38,0x28,0x2c,0xdd,0x9d,0x15,0x2d,0xc0,0xaa,
- 0xe8,0x04,0xe4,0x1b,0xa2,0x0d,0xe0,0xaf,0xc5,0x66,0xf9,0xe3,0x7b,0xa5,0x0a,0x7f,
- 0x61,0x66,0x5f,0x9c,0x14,0x08,0xee,0xd3,0x08,0x11,0xfb,0x3c,0x22,0x18,0x7d,0xdc,
- 0x7d,0xc2,0x6c,0x9b,0xf5,0x3e,0x7f,0x05,0x7e,0x9f,0x02,0xf7,0xd5,0x40,0x0e,0x36,
- 0xbc,0xa3,0x42,0x1d,0x6f,0xe3,0xa2,0x40,0xbb,0xe1,0xea,0x63,0x77,0x27,0x90,0x31,
- 0xe1,0xf7,0x79,0x63,0x62,0xc2,0x28,0x97,0x5a,0x3b,0x81,0xfa,0x8e,0x1b,0xfd,0xf9,
- 0xa5,0xdf,0x49,0x8e,0xc1,0x62,0x13,0xd6,0x73,0xc2,0x8a,0x4f,0xb8,0xf6,0xb9,0xe9,
- 0xc7,0x92,0x24,0x59,0x0a,0xf7,0x32,0x31,0xb1,0x2f,0x7d,0x8c,0xe7,0x7d,0x99,0xb3,
- 0x09,0x47,0x51,0x42,0xe6,0x4c,0xfe,0x3b,0x61,0xf9,0xa9,0xad,0x89,0x30,0x82,0xca,
- 0x84,0xb7,0x7f,0x9d,0x22,0x0e,0xb4,0x38,0xc5,0x3d,0x91,0x18,0xde,0x99,0xe8,0xc8,
- 0x8d,0xfb,0x26,0x84,0xa4,0x27,0x26,0x6e,0xfe,0xcc,0xdf,0xcc,0x4f,0xda,0xf1,0x33,
- 0xce,0x94,0xd8,0xc0,0x1d,0xd6,0x11,0x9f,0x28,0xc4,0x19,0xec,0xc3,0xc4,0xdc,0x98,
- 0xcf,0xd8,0x41,0x84,0xe4,0xe8,0x80,0x54,0xf9,0x77,0x77,0x37,0x5e,0xc6,0x8b,0xfe,
- 0xc9,0x3c,0x28,0x9f,0x5b,0x13,0x9d,0x80,0x69,0xea,0x04,0x88,0xf3,0x00,0xf5,0x09,
- 0x6e,0xfa,0x00,0x97,0xfc,0xf8,0x8e,0xfa,0xe4,0x3b,0x0d,0xd2,0x54,0x57,0xc3,0x48,
- 0x55,0x4a,0x5f,0x2d,0x69,0x17,0x0f,0xcf,0xa5,0xc7,0xde,0x92,0xd3,0x57,0x4b,0xfe,
- 0xb6,0x95,0x2b,0xd9,0xd1,0xa1,0xe2,0x02,0xfd,0x27,0x3f,0x7e,0x2c,0x50,0xc7,0x97,
- 0xdb,0xb1,0xd4,0x4f,0x39,0xfd,0x78,0xfc,0x58,0xd8,0x91,0xf1,0x8f,0x33,0x25,0xc5,
- 0x0f,0x12,0x7f,0x26,0xfb,0xbd,0x72,0x39,0x5e,0xfc,0xe4,0xcc,0x97,0xc2,0x50,0x99,
- 0x77,0xfe,0xa9,0xd8,0x4a,0x48,0x6e,0xde,0xff,0xd7,0x4c,0x26,0x43,0xa3,0xe2,0x7f,
- 0xd2,0x11,0xb8,0x4e,0x80,0x1a,0x8a,0x3f,0xd1,0xff,0x28,0x43,0x32,0x74,0x5d,0x6f,
- 0xde,0x0a,0x6a,0x71,0x35,0x22,0x20,0x8d,0x07,0xca,0x75,0x7f,0x77,0xe4,0xc7,0xa8,
- 0xf6,0x13,0xa9,0x5c,0x36,0x3f,0x4d,0xa7,0x01,0xd3,0xf4,0xfd,0x8d,0xfc,0xde,0x60,
- 0x43,0x7e,0x86,0xdb,0x7c,0xef,0x3d,0x11,0x33,0x48,0x64,0xd6,0x19,0xe5,0xd1,0x8c,
- 0x3e,0x99,0xf5,0xc4,0xcc,0xa8,0x93,0x59,0x3d,0x34,0xa5,0xe3,0x63,0x06,0xba,0x74,
- 0xc7,0x9d,0x2c,0x7b,0xc1,0x59,0x47,0x77,0xd6,0x55,0x6a,0x13,0xf1,0x2d,0x0a,0xcc,
- 0xf4,0x2c,0x2e,0x07,0x91,0xad,0xe4,0x71,0xd3,0x0f,0x92,0x8f,0x67,0xc5,0x37,0x31,
- 0x96,0x5b,0xcf,0x20,0x5f,0xd8,0x2d,0xbb,0x20,0x2c,0x30,0xdf,0x19,0xc2,0xd4,0x75,
- 0x79,0x39,0x8f,0xe7,0x20,0x29,0x53,0x59,0x37,0xe5,0x6c,0x98,0x7e,0x90,0xb6,0x27,
- 0xe7,0x8c,0x11,0xaa,0x2d,0x73,0x06,0x49,0x75,0x34,0x14,0xd8,0xbb,0x90,0xd5,0x83,
- 0x84,0x96,0xeb,0xff,0xfc,0xaf,0xb7,0xf9,0x7b,0x58,0x6a,0x20,0xcd,0xb3,0x99,0xa8,
- 0xae,0x66,0x36,0xd4,0xc8,0x9d,0xbc,0xb5,0xa1,0x8c,0x38,0x7c,0xdc,0xd0,0x8c,0x36,
- 0x75,0xdc,0x8e,0x10,0xaa,0x90,0xc3,0x03,0xcb,0x91,0xc7,0xe9,0x6b,0x7f,0xdb,0xf3,
- 0x0b,0x2f,0xf7,0x55,0xbf,0x44,0x3e,0xee,0x76,0xa6,0x56,0xd7,0x96,0xd6,0x2e,0x89,
- 0x13,0x01,0x3a,0x13,0xa0,0x46,0xa0,0x41,0x03,0xb8,0x53,0x43,0x40,0x1f,0x00,0xd1,
- 0x9f,0xf3,0xb6,0x5f,0x78,0x5e,0x31,0xdf,0x8b,0xf5,0xbe,0xfd,0xea,0x7e,0x06,0xb6,
- 0x97,0xb0,0x72,0xc3,0xfa,0xc4,0xf3,0x57,0x61,0x58,0xbf,0x38,0x7d,0xd2,0x38,0xcd,
- 0xf4,0xfb,0xe7,0xdb,0x93,0xed,0xf5,0x89,0xd9,0x4f,0x55,0xbf,0x8c,0xf6,0x13,0x89,
- 0x25,0xdb,0xc7,0xb8,0x23,0xca,0xef,0xf5,0xbe,0x85,0x15,0xfb,0x52,0x78,0xa2,0xe6,
- 0xd7,0xe3,0x5f,0x01,0x37,0x2b,0x11,0xf6,0x7a,0x6f,0xe5,0xf5,0xf5,0x95,0xd7,0x29,
- 0x99,0xf2,0xdf,0xff,0xb3,0x1a,0x3a,0x7b,0x64,0x44,0x1e,0x38,0xb7,0xcf,0x04,0x99,
- 0xce,0x08,0x8d,0xde,0x4d,0x1f,0xe5,0xa3,0x6f,0xf2,0x8e,0x48,0x97,0x72,0x5b,0x46,
- 0xdc,0xc5,0x38,0x8f,0xeb,0x2f,0x05,0x59,0x8f,0x5c,0x8c,0xd3,0x88,0xff,0xf2,0xc3,
- 0x04,0x23,0xf2,0x23,0x20,0xe3,0x93,0x3f,0x5e,0x47,0x7e,0x8f,0x68,0xab,0xd0,0x5e,
- 0xe2,0x36,0x40,0x34,0x02,0xf4,0x75,0xad,0x7c,0x8d,0xbe,0xc5,0x22,0xbf,0x9f,0xd7,
- 0xe0,0x6f,0xc4,0x81,0x97,0x93,0x97,0x7c,0xcf,0x38,0xe6,0x4d,0xad,0xbc,0xfe,0x83,
- 0x5f,0xfd,0x5b,0xea,0x24,0xef,0xea,0x9a,0xf3,0xfc,0xbf,0xc3,0xd1,0x87,0x5d,0xf3,
- 0xc9,0x8f,0x5d,0xb3,0x18,0x09,0x5c,0xbb,0x7e,0xb0,0x2f,0xa8,0x14,0x28,0x21,0xce,
- 0x03,0x7d,0x86,0x88,0x3e,0xfa,0x75,0x79,0x66,0x24,0xf3,0x92,0xdf,0xee,0x3b,0x06,
- 0xa9,0x5c,0x7d,0xb0,0x4d,0x5f,0x68,0xbc,0x24,0x3f,0x63,0x29,0xda,0x01,0x31,0xd1,
- 0xa7,0xf1,0x78,0x62,0xe8,0x2b,0x80,0x6d,0xfb,0x29,0xc0,0x38,0x22,0x4c,0x8a,0xba,
- 0x4b,0xbb,0xe6,0xc8,0x71,0x81,0xbc,0x27,0x9b,0x3f,0x56,0x7c,0x47,0x36,0x31,0xbe,
- 0xef,0x97,0x90,0xbe,0x23,0x70,0x82,0xf4,0x6b,0x49,0xf1,0xad,0x4c,0xde,0xf7,0x0b,
- 0xe1,0xe4,0x63,0xfa,0xbd,0xa5,0x5b,0xba,0x31,0x4d,0xed,0xb8,0x7e,0x93,0xdb,0x78,
- 0xbe,0x13,0x0c,0x69,0xd7,0xe2,0x36,0x93,0x0e,0xb7,0x5c,0xdb,0xb5,0xbc,0x93,0x9a,
- 0x15,0xcc,0xc7,0x8c,0xb5,0x36,0xc4,0xfe,0x14,0xc6,0x0c,0x55,0xc2,0xb7,0x06,0xbf,
- 0xf1,0xc7,0x7f,0xf1,0x8f,0xaf,0xe9,0x6f,0xf4,0x9d,0xe0,0x3b,0x7d,0xa7,0xc2,0x4c,
- 0x82,0xeb,0xf2,0x6e,0xc2,0xc2,0x95,0x9b,0xb1,0xbe,0xc2,0xf9,0x75,0xfe,0xfa,0x9f,
- 0x38,0xf2,0x6f,0x6f,0xfc,0x38,0xf6,0xfa,0x13,0xa1,0xaf,0xed,0xa5,0xf7,0x4b,0x85,
- 0x5e,0x63,0x2f,0xdf,0xa6,0x2f,0xb1,0x12,0xd5,0xea,0xea,0xb9,0xaa,0x58,0xb7,0x69,
- 0x12,0xcd,0x42,0xb5,0x2d,0xb6,0xab,0xe7,0xc4,0x44,0xdb,0xf4,0x23,0xb7,0x58,0x55,
- 0xcf,0x59,0x8f,0xf6,0x39,0x13,0x22,0xd7,0x9e,0xb8,0xb7,0x14,0x61,0xa4,0x97,0xc3,
- 0xce,0x55,0x7d,0xf1,0xfe,0xf1,0xcf,0xc9,0x75,0x75,0x35,0x39,0xbe,0x95,0xd3,0xa6,
- 0x48,0x8f,0x78,0xe2,0x27,0x4c,0x3f,0x6e,0xbc,0x51,0x4f,0xf9,0x57,0x92,0xe7,0xaa,
- 0xee,0x64,0x93,0x0f,0x4b,0x20,0x49,0x8f,0x1f,0x2f,0x8c,0xaf,0xc5,0x0f,0xd7,0x6b,
- 0x97,0x81,0xfa,0x23,0xf7,0x0b,0xaf,0x57,0xdb,0x26,0xbe,0x0a,0xa8,0xea,0x94,0x7d,
- 0x7f,0x37,0xbe,0xa7,0xe1,0x1c,0xfd,0x47,0xaa,0x74,0x4d,0xa9,0xf6,0xc5,0xff,0xfc,
- 0xc6,0x9f,0x7f,0xeb,0x5b,0xa2,0xee,0xbb,0x1f,0xcb,0x0d,0x3f,0x9b,0xfb,0xc2,0x78,
- 0xcd,0x3a,0xef,0x24,0x2c,0x3c,0xf8,0x9b,0xc0,0x14,0x61,0x46,0x9c,0xeb,0x8f,0x6f,
- 0x2c,0x0f,0x8d,0x2d,0x7c,0x7c,0xe3,0xff,0x4b,0xdd,0xf7,0xf9,0x38,0x8a,0xe8,0x13,
- 0x00,0x06,0x6f,0xe3,0x25,0xe2,0x65,0xb5,0x4b,0xf3,0xac,0xf6,0xbd,0xec,0xf9,0x3a,
- 0x1e,0x3b,0x3b,0xf4,0x84,0xdf,0x18,0x0d,0xe7,0x47,0x4f,0xd8,0x09,0xc6,0x36,0x79,
- 0x83,0xde,0x93,0x97,0x7e,0x67,0x35,0x6d,0x06,0x3f,0x3d,0xf1,0x53,0x7f,0xbc,0x1e,
- 0xdb,0x4c,0x5a,0x6c,0xca,0x30,0xf9,0x90,0xa0,0x7c,0x78,0x70,0x61,0xe1,0xc6,0xc7,
- 0xff,0x3f,0x6b,0x3d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x4e,0xc4,0xff,0x01,0x76,0x49,0x09,0x1b,0x36,0x04,
- 0x0c,0x00,
diff --git a/board/esd/hh405/logo_320_240_4bpp.c b/board/esd/hh405/logo_320_240_4bpp.c
deleted file mode 100644
index ddf0d0bec5..0000000000
--- a/board/esd/hh405/logo_320_240_4bpp.c
+++ /dev/null
@@ -1,227 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x9c,0x03,0x94,0x3f,0x00,0x03,0x48,0x6f,0x6c,0x7a,0x48,0x65,
- 0x72,0x5f,0x4c,0x6f,0x67,0x6f,0x5f,0x33,0x32,0x30,0x78,0x32,0x34,0x30,0x5f,0x6d,
- 0x69,0x74,0x74,0x65,0x5f,0x31,0x36,0x67,0x2e,0x62,0x6d,0x70,0x00,0xed,0x9c,0xfd,
- 0x6b,0x1b,0x47,0x1a,0xc7,0x9f,0xae,0xa2,0xe8,0x8c,0x4b,0x42,0xff,0x03,0xb1,0x26,
- 0x2f,0x26,0xa5,0x67,0x2c,0x52,0xd7,0xf8,0xb8,0x1e,0xb1,0xfb,0x62,0xc2,0x81,0xa9,
- 0xa3,0xe6,0x42,0x43,0x02,0x21,0xf1,0x35,0x57,0x38,0x4c,0x8a,0xbd,0x71,0x1d,0xe2,
- 0xa3,0x70,0x89,0x4c,0x8f,0x62,0xdc,0x4b,0xed,0x8d,0x84,0xfd,0xd3,0x71,0x77,0x0e,
- 0x94,0x90,0x50,0x7c,0x3a,0x09,0x29,0xb4,0xe4,0x87,0x9c,0x85,0xfc,0x17,0x14,0x42,
- 0x8a,0x31,0xc5,0x62,0xd7,0xb4,0x04,0x63,0x24,0x76,0xee,0x79,0x66,0x66,0x57,0x2b,
- 0xeb,0xd5,0x24,0x75,0x0b,0x9d,0x2f,0x28,0xfb,0x36,0x3b,0xf3,0xd9,0x67,0xe6,0x79,
- 0x66,0x76,0x66,0x9d,0x13,0xbf,0x1f,0xff,0x1c,0xb8,0xc6,0xf1,0x77,0x14,0x7f,0xbf,
- 0x7b,0x01,0x60,0x13,0xb7,0x2f,0xc0,0x3e,0x70,0x15,0x6b,0x17,0x3f,0xbf,0x5e,0x7a,
- 0xe9,0x25,0xd0,0x75,0x1d,0x22,0x91,0x08,0x0c,0x0c,0x0c,0x40,0x34,0x1a,0x85,0x91,
- 0x91,0x11,0x30,0x0c,0x03,0x62,0xb1,0x18,0x98,0xa6,0x09,0x4b,0x4b,0x4b,0x90,0x4a,
- 0xa5,0x20,0x97,0xcb,0xc1,0x37,0xdf,0x7c,0x03,0x96,0x65,0x01,0x63,0x8c,0x7e,0x4a,
- 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,
- 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,
- 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0xbf,0x6c,0x95,0x72,
- 0xf9,0x9f,0x1a,0xa1,0xa1,0xbe,0x87,0xd0,0x4f,0x8d,0xd0,0x50,0x9b,0x8a,0xef,0x99,
- 0xa4,0xf8,0xb8,0x9c,0xdd,0xdf,0xe1,0xd8,0xb4,0x21,0x3e,0xb1,0x87,0xb2,0xaa,0x53,
- 0xd9,0x55,0xa7,0x76,0xc8,0xb2,0x5b,0x48,0xe9,0xd8,0x56,0xd3,0x8c,0x2a,0xf5,0x34,
- 0x0c,0x10,0xc8,0x72,0xbe,0xfb,0x00,0xbf,0xa1,0x3c,0x70,0x0b,0x93,0xec,0x07,0x9d,
- 0x6b,0x75,0x5b,0x3f,0xc6,0x9c,0xaf,0x00,0x12,0xf7,0xf4,0x29,0xa7,0x5b,0xb7,0xd9,
- 0x6c,0x47,0x96,0x6d,0x77,0x77,0x32,0xf6,0xad,0x7e,0x8e,0x15,0xaf,0x80,0xb6,0x3a,
- 0x7b,0x88,0x3d,0x04,0x71,0xf3,0xc6,0x10,0x40,0x90,0xe9,0x3a,0xe6,0xf8,0x8e,0x3e,
- 0xc5,0x66,0x71,0xe7,0x89,0xfe,0x3a,0x63,0x9f,0xe9,0xbf,0xc6,0x47,0xc0,0x8b,0x81,
- 0x38,0x2b,0xe9,0x47,0xb0,0x14,0xbd,0xa3,0x25,0x52,0xfa,0x93,0x1d,0x02,0xdc,0x84,
- 0x20,0xee,0x68,0x98,0xef,0x53,0xfe,0x67,0x3a,0x18,0x70,0xb8,0xec,0x2d,0x68,0x67,
- 0x5b,0xf4,0x10,0x33,0x30,0xe5,0xe0,0x31,0x9b,0xd1,0x16,0xd9,0x76,0xb8,0x8d,0xb1,
- 0x27,0x70,0x0e,0x7f,0x00,0x47,0x46,0x83,0xec,0x01,0xdd,0x7c,0x9d,0xb1,0x2e,0x20,
- 0x3e,0x00,0xcc,0x67,0x08,0xce,0xb3,0x19,0x58,0xc4,0x9c,0x11,0x6d,0x16,0x0e,0x32,
- 0xe7,0x0a,0x2f,0x8b,0x95,0x20,0x68,0x33,0x07,0xb4,0x16,0xf9,0x0e,0x75,0x03,0x1c,
- 0x20,0x4e,0x2d,0x1a,0xc6,0xbc,0xb1,0x88,0x4e,0x73,0x8c,0xf3,0x91,0xfd,0xec,0x6d,
- 0xe4,0xdb,0x84,0x80,0x89,0x25,0x2f,0x56,0xf1,0x39,0x43,0xd0,0x33,0x07,0xd8,0x34,
- 0x1e,0xf7,0x24,0x47,0xf1,0x66,0x7c,0xb6,0xd0,0x87,0x15,0x7c,0x59,0xf6,0xd8,0xe5,
- 0x2b,0x02,0x4c,0xcc,0x0d,0x69,0xc4,0xc7,0x5a,0xe7,0xeb,0x4d,0x27,0xc3,0xf0,0x22,
- 0xf1,0xf5,0x59,0x33,0xa0,0x61,0x2e,0x58,0x7e,0x61,0x88,0xfd,0x80,0xb9,0x99,0xa6,
- 0xc9,0xf9,0x1e,0x40,0x1f,0xbb,0x5f,0x93,0xaf,0x0b,0x32,0xf8,0x0b,0xb1,0xb5,0x3c,
- 0xde,0xa0,0xb1,0xaf,0x20,0x30,0x55,0x34,0xed,0xda,0x7c,0x6b,0x64,0xb7,0xf5,0x8e,
- 0xdd,0xf1,0x15,0x31,0xd5,0xd7,0x10,0xb2,0x91,0x8f,0x8a,0x00,0xcc,0xa5,0x1d,0xef,
- 0x2e,0xb0,0x62,0x17,0xbc,0x4c,0x09,0x88,0xef,0x2e,0x16,0x83,0x6c,0x8b,0xac,0x8a,
- 0x2f,0x0c,0x96,0xbd,0x4e,0xae,0x45,0x09,0xc1,0x19,0xc5,0x27,0x45,0x27,0xa8,0xcd,
- 0x77,0x17,0xae,0x3b,0xcc,0xd9,0xd8,0x1d,0x9f,0x40,0x08,0xac,0x6e,0xe2,0xd3,0xb3,
- 0x52,0x17,0xac,0x8e,0x52,0x76,0xa4,0xef,0x09,0x46,0xf0,0x3d,0x80,0x29,0xaa,0xf7,
- 0x6c,0x2d,0xfb,0x61,0x53,0xea,0xe2,0xa1,0x89,0x1e,0x2e,0x8c,0x4c,0xa8,0x1d,0x7c,
- 0x07,0x05,0xdf,0x90,0xfc,0xfb,0xb1,0x12,0x85,0xb2,0xdd,0xf0,0x6d,0x71,0xbe,0x00,
- 0xde,0x34,0x04,0xd9,0x51,0x78,0xdd,0xe2,0x61,0x60,0x9b,0x0c,0x26,0xf8,0x1e,0x63,
- 0xfd,0x62,0xf6,0xd5,0x7c,0x74,0x12,0xc9,0x89,0xaf,0x70,0x17,0x9f,0x10,0xe8,0x41,
- 0xea,0xf0,0x61,0x85,0x60,0xbe,0x8e,0x6d,0xef,0x9a,0x0f,0x5b,0xb6,0x2d,0xe2,0x33,
- 0xfa,0xdb,0x90,0xf0,0xdb,0x73,0x0c,0x63,0x86,0x26,0xf9,0xc8,0x7f,0x23,0xc0,0xf9,
- 0x58,0x25,0xdf,0x63,0x74,0xab,0x48,0x18,0xeb,0xf7,0x1d,0xbc,0xe7,0x98,0x00,0xab,
- 0xe2,0x13,0xf5,0xbb,0x1d,0x16,0x39,0x4f,0xb9,0xf5,0xdb,0x2a,0xde,0x32,0x70,0x17,
- 0xad,0xe2,0x73,0x78,0x31,0xc4,0xe7,0xdc,0xe5,0xe7,0x6a,0xd8,0xaf,0xc8,0x93,0x87,
- 0xc8,0xd8,0x10,0xca,0xd4,0xe1,0x93,0xf6,0x93,0x7c,0x8b,0xbb,0x6b,0x7f,0x5b,0x14,
- 0xb2,0xce,0x33,0x5e,0xbf,0x16,0xaf,0xdf,0xdf,0x5a,0xd6,0x77,0xbc,0x9e,0xbe,0x86,
- 0xe0,0x2a,0xe7,0x63,0x8e,0x95,0x5b,0xa1,0xaa,0xe4,0x7c,0x78,0x6d,0x1b,0x2d,0x6e,
- 0x7d,0x4b,0x0f,0xc1,0xac,0x95,0xd4,0x50,0x08,0xdb,0x7e,0xe0,0xba,0xcd,0xca,0xf5,
- 0x3b,0x45,0xed,0xd5,0xc7,0x37,0x03,0x07,0x4b,0x43,0xf4,0x77,0x8c,0x8f,0x21,0x5b,
- 0x22,0xb4,0x96,0xf9,0xee,0x8a,0xb0,0xbc,0x49,0x55,0x87,0x4d,0x64,0x75,0x06,0x5e,
- 0xa1,0x16,0xb9,0xc8,0xab,0x96,0xa3,0xb4,0x8b,0x84,0x5e,0xfb,0x43,0x2c,0xf2,0x28,
- 0x6e,0x3f,0x92,0xc3,0xf9,0x8e,0x51,0x71,0x5d,0xf0,0xba,0xe0,0x3b,0xcf,0xb8,0xaf,
- 0x08,0xbe,0x03,0xd4,0x84,0x0e,0xa2,0x73,0xe3,0xa5,0x07,0x80,0xed,0x0f,0x56,0x5b,
- 0x8f,0x2f,0x64,0xf5,0x04,0xef,0x47,0x6c,0x8c,0x2d,0x60,0x3f,0xa4,0xec,0xee,0x63,
- 0x0e,0xbc,0x9c,0x03,0x82,0x8f,0xb2,0x0a,0xc3,0xaa,0xe4,0x7b,0x19,0xf9,0xb1,0x92,
- 0xc9,0xab,0xa9,0xb7,0x75,0xb0,0xb2,0x67,0x84,0xe1,0x46,0xe9,0x66,0x7e,0x9f,0xcd,
- 0x8d,0x48,0x7c,0x9b,0xd0,0x46,0x0f,0x47,0xf1,0x25,0xc3,0x9c,0x19,0x40,0xff,0xc5,
- 0x2b,0x25,0x08,0xb4,0xda,0xbf,0xf5,0xd8,0x62,0x1b,0x9c,0x18,0xc2,0x46,0xeb,0x74,
- 0x69,0xd7,0x1e,0xe1,0x76,0x3b,0x1a,0x1d,0xee,0xc2,0x6a,0xe4,0x7c,0x57,0x4e,0xe7,
- 0x6e,0xe1,0xbe,0xe4,0x03,0xea,0x4c,0x42,0x26,0xc0,0x02,0xdb,0xd2,0x26,0xb1,0xe2,
- 0x0f,0x60,0x60,0x0e,0x26,0x96,0xcf,0xb2,0x6f,0x01,0x7a,0xe7,0xce,0x22,0x9a,0x76,
- 0x66,0x8c,0xac,0x24,0xec,0x07,0x3d,0xb7,0x00,0x0d,0xbb,0x05,0xc1,0xdc,0x3d,0xde,
- 0xbf,0x61,0x51,0x5d,0x44,0xdd,0x82,0x1e,0x43,0x20,0x23,0x38,0x35,0xd1,0xd2,0xc9,
- 0x9b,0xbb,0xb1,0x05,0x6f,0xf1,0xc6,0x1c,0x14,0xf6,0x1b,0x85,0xe3,0x80,0x19,0x4a,
- 0xbe,0x30,0x26,0xd5,0x00,0x0d,0x9f,0x21,0x43,0x0e,0x03,0xda,0x06,0x83,0xdf,0xa1,
- 0xae,0x17,0xb9,0x9b,0x84,0xdb,0x91,0x8f,0x92,0x04,0x6c,0x97,0x8f,0xbb,0x2d,0x71,
- 0x1d,0xc7,0xce,0x13,0xb7,0x1a,0x15,0xd6,0xd7,0x12,0xdf,0x03,0x19,0x8e,0x37,0xa1,
- 0x13,0x8d,0x82,0x1d,0x10,0x0f,0x26,0x98,0xad,0xe4,0xe3,0xf6,0xc3,0x5a,0x41,0xa2,
- 0xf3,0x92,0x2f,0xb4,0x8e,0x07,0x0b,0x33,0x3c,0x35,0x0f,0x1a,0x21,0x6c,0x0c,0x14,
- 0x5f,0xf0,0x41,0x3e,0x03,0x7a,0x0e,0x00,0x1a,0x03,0x65,0xe8,0xb9,0x16,0x91,0xef,
- 0x74,0x58,0xd0,0x7c,0x49,0x69,0x2d,0xe4,0x6b,0xc3,0x9b,0x5b,0x74,0x0f,0x97,0x6f,
- 0xcb,0xb8,0xf6,0xdd,0x3b,0x87,0xa6,0x70,0xcf,0x59,0xeb,0xee,0x98,0xb4,0xd8,0xb6,
- 0x41,0x9a,0x60,0x45,0x63,0x12,0x87,0x4d,0x63,0xdd,0x91,0x04,0xf7,0x4f,0x9b,0x2d,
- 0x4f,0xd8,0x63,0x1d,0x7d,0xf6,0xf6,0x70,0x07,0x02,0x38,0x1b,0x51,0xfd,0x38,0x8e,
- 0x5b,0x58,0x61,0x58,0xef,0xa1,0xed,0x97,0xdd,0xc7,0x27,0x31,0x59,0xe6,0xbe,0x7e,
- 0x1a,0x8f,0x96,0x8d,0x55,0xb6,0x6e,0x2c,0x2c,0x77,0x1f,0xa7,0x21,0xa5,0x3d,0xa6,
- 0x1f,0x5f,0xc0,0xad,0x31,0x59,0xfc,0x50,0xbf,0xd6,0x1a,0x1f,0xf7,0x7e,0xa9,0x62,
- 0x5a,0x6c,0x93,0xa9,0xea,0x74,0xfc,0x9c,0x23,0xba,0x3c,0x56,0x8a,0x67,0x91,0x59,
- 0xa4,0x2e,0xa5,0x56,0xc5,0xcd,0xa9,0x2c,0x3f,0x4c,0x66,0xc9,0x35,0xb2,0xee,0x69,
- 0xc6,0x47,0xac,0xa9,0x2c,0x1f,0xb6,0xf2,0xfb,0x48,0x76,0xb1,0x46,0x11,0x75,0xf8,
- 0xda,0x1c,0x7b,0x25,0xdb,0x5a,0x62,0xde,0x7f,0xb4,0x20,0x19,0xa6,0x9f,0x87,0x70,
- 0x14,0xd0,0x31,0x2c,0x7a,0xf5,0xda,0x2a,0x9a,0x09,0x6f,0xdf,0xb5,0x5f,0x33,0x79,
- 0x7c,0x49,0x73,0xb5,0x61,0xc2,0xe6,0xc2,0xa8,0x09,0x20,0xa2,0x6a,0x6d,0x79,0xf1,
- 0x59,0x14,0xbc,0x3b,0xbe,0x51,0x1e,0xe7,0x9f,0x49,0x3f,0x70,0xbe,0xfa,0xc5,0x6e,
- 0xf9,0xf8,0x76,0x6d,0xbf,0x99,0x67,0xe7,0x73,0x96,0x87,0x8f,0x4f,0x34,0xa8,0x05,
- 0xbf,0xfd,0x70,0x38,0xba,0xe7,0xf6,0x6b,0x2a,0x9f,0xf3,0x38,0x63,0xd1,0x96,0xf8,
- 0xa2,0x51,0xf9,0xc0,0x85,0xdc,0x2e,0x5f,0x27,0x9f,0x51,0xcd,0x5f,0x83,0xb9,0xac,
- 0xea,0x17,0x68,0x25,0x25,0x25,0xa5,0x5f,0x9e,0xf6,0x36,0x42,0x3f,0x77,0xd5,0x9e,
- 0x51,0x75,0x0a,0x49,0xe3,0x47,0xd7,0x55,0xb3,0xb9,0xe2,0x59,0xab,0xba,0x53,0x2a,
- 0xde,0x82,0x3d,0x92,0x3e,0x10,0x69,0xa6,0xee,0x23,0xf1,0x1d,0x80,0xc5,0xa1,0xbd,
- 0xc2,0x23,0xc0,0xa6,0x8a,0x44,0xae,0x55,0xe0,0xf1,0x19,0x8d,0x3d,0x93,0xf6,0xe6,
- 0x48,0x63,0x5d,0x42,0xc2,0x41,0xff,0xb4,0xf9,0x95,0xbd,0xc4,0x03,0x38,0x6c,0x18,
- 0x7f,0x6c,0xd0,0x48,0x47,0x46,0x2e,0x0e,0xf4,0xeb,0x9f,0x96,0xf9,0xd6,0xf7,0x16,
- 0x0f,0xb4,0xf7,0x63,0x8d,0x74,0x13,0x09,0x07,0x22,0x9d,0xde,0x88,0xac,0xa8,0xef,
- 0x31,0x1f,0xec,0x6f,0xc8,0x87,0x32,0x46,0x06,0xfa,0x5f,0x76,0x0d,0xf8,0xf5,0x9e,
- 0xf3,0x35,0x31,0x20,0x6a,0xfc,0x52,0xff,0xab,0x72,0xc4,0xed,0xe8,0xe1,0xbd,0xe6,
- 0x6b,0x6e,0xc0,0x98,0x71,0xb1,0x5f,0xce,0x7a,0xaf,0x77,0xef,0x3d,0x9f,0x76,0xb9,
- 0x19,0xdf,0xcd,0xf1,0x8b,0xaf,0xf1,0x16,0xb8,0x1d,0xe9,0x6e,0x94,0x53,0xcf,0x84,
- 0x11,0xfe,0x31,0x00,0xe7,0x9b,0x03,0xf6,0x0f,0x12,0xdf,0x53,0x1f,0x1f,0xfd,0x2f,
- 0x73,0x74,0x33,0x6e,0x25,0x54,0x67,0x96,0xb1,0xe5,0x2e,0xef,0xaa,0xce,0xaf,0x68,
- 0xba,0xee,0xed,0xbb,0xe5,0xc9,0x03,0xff,0xd6,0x4d,0xe1,0x65,0xe7,0xbf,0xa1,0x69,
- 0x05,0xc7,0xc6,0xfb,0x5f,0x25,0x0f,0x59,0x1b,0xf6,0xf8,0xda,0x32,0x16,0x2d,0xd8,
- 0x41,0x5b,0x9a,0x66,0x85,0x49,0x21,0xee,0x43,0xeb,0x3c,0xd7,0x5e,0xbc,0x4a,0x7a,
- 0x02,0x67,0xf2,0x96,0xd4,0x9a,0x7b,0x6b,0x2f,0x9e,0x7a,0x40,0xcf,0xb3,0x60,0x59,
- 0x5b,0x88,0x34,0xe9,0xa6,0x98,0x11,0xd9,0xd2,0x74,0x5c,0x27,0x1e,0x6e,0xba,0x37,
- 0x34,0xad,0xe0,0xd8,0x8d,0x8b,0x27,0xc8,0x3b,0x6e,0x95,0xf9,0xda,0xb3,0xf4,0xfe,
- 0x4c,0x19,0xca,0x55,0xc2,0x3e,0xe9,0xe2,0x7c,0xca,0xb7,0x37,0x2b,0x0e,0xbe,0x87,
- 0x5e,0x2f,0x74,0x3e,0x2d,0xf3,0x31,0x3e,0xed,0x18,0x5a,0xa0,0xf9,0x05,0xd0,0xbc,
- 0xb9,0x32,0xe2,0xcb,0x8a,0x39,0xed,0x84,0x38,0x14,0x6a,0xee,0x21,0xb1,0xf1,0x81,
- 0x4f,0xb1,0xe8,0xb1,0x53,0x7a,0x5d,0xbe,0x45,0x46,0x6f,0xae,0xb6,0xc8,0xb6,0x37,
- 0xe3,0xf1,0x49,0xc7,0xb7,0xec,0x2d,0xf7,0xd6,0xd7,0x7c,0x7c,0xdb,0x64,0xbf,0x6a,
- 0x3e,0x2d,0xed,0xce,0xed,0x90,0xf6,0xb5,0xc0,0x77,0xea,0x24,0x3e,0xec,0x78,0x99,
- 0x8f,0x32,0x9a,0xf1,0xf1,0x75,0x62,0x21,0x85,0x54,0x3c,0xed,0xf0,0x49,0x51,0xce,
- 0xb7,0x92,0x4a,0xdd,0x13,0x7b,0x56,0x0a,0xf5,0xa5,0x7b,0xeb,0x91,0x4a,0x3e,0x78,
- 0x8f,0x66,0xc9,0x31,0x71,0xaa,0xcc,0x17,0xca,0x33,0xe6,0x3d,0x4f,0x2b,0x0d,0xf0,
- 0xc6,0xc8,0x80,0x5d,0x9b,0x2f,0xcd,0x67,0xd9,0x00,0xcb,0x72,0xb6,0x71,0x44,0x96,
- 0xe1,0xcb,0x31,0x3d,0x44,0x95,0x34,0xcd,0x59,0xe8,0xa1,0x79,0x48,0x8b,0xc6,0x6a,
- 0xb7,0x1a,0xf1,0x95,0x30,0xb1,0x39,0x2a,0xb2,0xc5,0xb6,0xd9,0x6e,0x33,0x77,0x09,
- 0xb9,0x35,0xbe,0x9b,0x23,0xfd,0xd8,0xf6,0x8d,0x53,0xe1,0x7a,0x7c,0x18,0x7f,0x9c,
- 0xa4,0x11,0x33,0x13,0xb6,0xb3,0x56,0xc1,0xc7,0x87,0x67,0x54,0xfa,0x5f,0x77,0xf2,
- 0xed,0xf7,0xf1,0x15,0x2a,0xf9,0x5e,0xb4,0x65,0xab,0x11,0x6a,0xee,0x20,0xe8,0xc1,
- 0x36,0x4b,0xce,0xf9,0xf8,0x32,0xb4,0xec,0x84,0x46,0x48,0xf3,0x49,0xb6,0x10,0xf2,
- 0xad,0x63,0x6c,0x39,0x1d,0xe7,0x6b,0xa9,0x47,0xf0,0xaa,0xf0,0xd7,0x80,0x99,0xb1,
- 0x7d,0x35,0xc5,0x9b,0x7b,0x46,0xf0,0x05,0x91,0xaf,0x88,0xdb,0x93,0x7c,0x6a,0xba,
- 0xfc,0xd8,0x78,0xed,0x15,0xc6,0x31,0xbd,0x27,0x6a,0xc1,0x80,0x17,0x17,0x1c,0x73,
- 0x07,0x1f,0x4d,0xb3,0xff,0x4a,0xf0,0xd1,0xfa,0x0f,0x95,0x19,0x98,0xc8,0xd0,0x5a,
- 0x0c,0xf1,0x49,0x7f,0x9d,0x88,0x5b,0x4e,0xe5,0x98,0x2c,0x98,0x17,0xc6,0x09,0x66,
- 0x04,0x5f,0x5f,0x35,0xdf,0x39,0xbf,0xfb,0xe2,0x13,0x4d,0xb7,0xc0,0xf7,0xe7,0x9a,
- 0x7c,0xed,0x16,0x27,0xc1,0x31,0xac,0xc3,0x43,0x73,0x5b,0x82,0xec,0x7a,0xe4,0x0b,
- 0xaf,0x7d,0x07,0xd1,0x80,0x4e,0x05,0x5f,0x48,0x56,0x1e,0xd9,0xbc,0x24,0xf9,0xdc,
- 0x7c,0x89,0xef,0x09,0x2d,0xdc,0x95,0x4f,0xa1,0xb4,0xe6,0xf6,0x8b,0x8d,0x9c,0x2c,
- 0x99,0x73,0xd1,0xb2,0x7f,0x64,0x68,0x05,0x50,0xb4,0xe4,0xa7,0x10,0x48,0x08,0x53,
- 0x60,0xa1,0x09,0x9b,0x3d,0xe4,0x55,0x27,0xf9,0x34,0x03,0xcf,0x54,0xbc,0x12,0xd0,
- 0x52,0xe7,0xa6,0xe4,0x74,0x6a,0xf2,0xb5,0xd9,0x6e,0x76,0xbb,0xe0,0xeb,0x2b,0xc5,
- 0xe7,0x2e,0xf9,0xfa,0x0f,0xc6,0x36,0xb0,0x4d,0xd3,0x8a,0xc4,0x16,0x04,0xd3,0x72,
- 0xaa,0x17,0x02,0x9f,0xd0,0xda,0x74,0x50,0x36,0x7d,0x52,0x0f,0x56,0xf9,0xb6,0x57,
- 0xd2,0x19,0x93,0xcf,0x98,0x93,0xab,0xc7,0x25,0xdf,0x31,0x4b,0x38,0x90,0xf9,0x19,
- 0x5f,0x65,0x65,0x6b,0x3a,0x35,0xbf,0xfb,0xfe,0x47,0x6a,0x81,0x6f,0x7c,0xb0,0x94,
- 0xfa,0xcf,0x58,0x05,0x9f,0xf7,0x4a,0xc2,0xbd,0x44,0xc4,0x03,0x8a,0xb6,0xa5,0x0a,
- 0x3e,0x6d,0x22,0x61,0x39,0xae,0x7d,0xb4,0x1d,0x0b,0x2b,0x2e,0x1f,0xd7,0x9a,0xe0,
- 0x73,0x28,0xca,0x3b,0xbb,0xe7,0x2b,0xa6,0x92,0x8d,0xf8,0x64,0x3c,0x78,0x8f,0x56,
- 0x67,0xfd,0x7c,0xd0,0x1b,0x77,0xec,0x2b,0xbb,0xe0,0x13,0x17,0x36,0x86,0x76,0xc9,
- 0x77,0x79,0x23,0x95,0x34,0x3c,0xbe,0xd0,0x17,0x8c,0x7f,0x70,0xe4,0x58,0x44,0x12,
- 0x8a,0x7b,0x7c,0x7d,0xc4,0x17,0xf0,0xf3,0x05,0x27,0xd2,0x9e,0x87,0x68,0x93,0xf2,
- 0x23,0x25,0xc7,0xe2,0x9d,0x21,0x9d,0x6f,0xcb,0xcb,0xe3,0x2d,0x11,0x73,0x28,0x5b,
- 0xca,0xb5,0x6b,0x57,0x7c,0xc6,0xe5,0x52,0x2a,0x79,0x33,0xe2,0xf1,0x51,0x46,0x05,
- 0xec,0x94,0xf2,0x3b,0xf8,0xce,0x52,0xb4,0x08,0x2c,0xd8,0xbe,0x06,0xde,0x63,0x5a,
- 0x6c,0xd4,0xe5,0x13,0xb7,0xf0,0x2e,0x2f,0x63,0x7b,0x7c,0x4e,0x11,0x8f,0x1f,0x4a,
- 0x3e,0xca,0xd6,0x12,0xe3,0x84,0xd6,0xf9,0x6e,0x5e,0x2e,0xa5,0x57,0xe6,0x87,0xc3,
- 0x7e,0xbe,0x47,0xa2,0x95,0x17,0xc3,0xc1,0xdb,0xb6,0x1b,0xef,0xae,0x93,0xeb,0x55,
- 0xf2,0x05,0xe7,0xd2,0x76,0x49,0x56,0xd7,0x1f,0xa8,0x0f,0x24,0xf7,0x94,0x0e,0xe2,
- 0xf2,0x3d,0x12,0x3d,0x20,0xe7,0x23,0xbf,0x4b,0xf8,0x06,0x3c,0xad,0xf1,0x7d,0xe0,
- 0xa4,0x57,0xcc,0x61,0xdd,0xc7,0xe7,0xd0,0x2c,0x0c,0xf1,0x75,0x05,0x4d,0x5b,0xc6,
- 0x13,0x8d,0x77,0x0a,0x5a,0x05,0x9f,0x46,0x89,0xa4,0x35,0x4e,0xe3,0x2d,0x69,0x5b,
- 0xdc,0xfa,0x49,0x99,0xaf,0xb0,0x8c,0xc7,0x63,0x82,0xcf,0x79,0x64,0x18,0x57,0xe3,
- 0xbe,0x06,0xd2,0x52,0x7c,0xe1,0x7c,0xc9,0x31,0x3f,0x1f,0x11,0x04,0x38,0x5f,0xc0,
- 0xcc,0xb3,0x12,0x37,0x2d,0x85,0xd6,0x2d,0xd0,0x12,0x36,0x0f,0xbd,0x52,0x87,0xcc,
- 0xbc,0x0c,0x3f,0xbc,0xb4,0xb4,0x7c,0x98,0xf7,0xca,0x7c,0xb3,0xf2,0xda,0x3e,0x6a,
- 0xb8,0x98,0x51,0x47,0xc2,0x1f,0x01,0x91,0x6f,0x7a,0xde,0x6c,0x02,0xf8,0x01,0x4b,
- 0x17,0x52,0x63,0x11,0x59,0xc1,0x6e,0xe7,0xa9,0x21,0x1f,0xd6,0xdd,0x60,0x5a,0xb6,
- 0x17,0xfa,0x82,0x60,0x96,0xf3,0xf9,0x3b,0x8d,0x78,0xde,0xdf,0x5f,0x25,0xaa,0xf9,
- 0xdc,0x8b,0x01,0xc9,0x07,0x79,0xbe,0xde,0xe4,0x52,0xc7,0x3e,0xd7,0xbb,0xb5,0xcb,
- 0x8d,0xdf,0x43,0xae,0xb3,0x5c,0x21,0x35,0xe7,0xe7,0x2b,0x49,0x3e,0x67,0x08,0x63,
- 0x08,0xe3,0x5f,0xcb,0xd1,0x7a,0x35,0x1e,0xc2,0x0e,0xbe,0xb3,0x16,0x73,0x57,0xea,
- 0x7d,0x7c,0xb2,0xe3,0xa5,0x50,0xe5,0xfa,0x02,0x6f,0xb8,0x54,0x84,0xed,0xe7,0xdb,
- 0x3f,0x3d,0x7b,0x24,0x76,0xe1,0x68,0x63,0xfb,0x7d,0xca,0x0a,0x56,0xce,0x8c,0xca,
- 0x37,0x4c,0xde,0x50,0xb8,0x69,0x6c,0x1a,0xe9,0x06,0xb1,0x06,0x69,0xe0,0x77,0x86,
- 0x5c,0x13,0xcf,0x5e,0xf3,0xf5,0xf9,0x20,0x96,0xe3,0x4b,0x5e,0x40,0x4b,0xd8,0xa2,
- 0x6d,0xc9,0x8e,0x8d,0xf8,0xee,0xf9,0xf9,0x30,0xb0,0x1c,0x62,0xcc,0xd7,0x40,0xde,
- 0xbe,0x81,0x6c,0x23,0x17,0x1a,0xc0,0x99,0xf3,0xb1,0x3c,0xf2,0x15,0x92,0x6e,0x05,
- 0x7b,0x7c,0xe8,0xb9,0x14,0x3c,0xae,0x62,0xa3,0x2a,0x1a,0xa7,0xe9,0xb1,0xbf,0xab,
- 0xe0,0x8b,0xe7,0x50,0x2b,0x14,0x72,0x3d,0x03,0xde,0xa9,0xe6,0x2b,0xe0,0x3b,0x53,
- 0x6e,0x05,0xb8,0x63,0x61,0x28,0xcc,0x53,0xc8,0x2e,0xfb,0xc7,0xd5,0x8f,0x8f,0xbe,
- 0x39,0xaf,0xff,0xbd,0xfe,0x30,0x70,0xda,0x34,0x63,0xd8,0xce,0x2c,0x2b,0x65,0x48,
- 0x0f,0xa6,0x11,0x01,0xe7,0xfb,0x48,0xf2,0xc5,0x99,0x5c,0x60,0x73,0x1e,0x56,0xf0,
- 0xa5,0xbd,0xbe,0xc2,0xe3,0x8b,0x57,0xf3,0xb9,0x9d,0x09,0xf1,0xb9,0xf2,0x5e,0xf8,
- 0x20,0x76,0xe1,0xed,0x37,0xcd,0x7d,0x9f,0xbf,0x5d,0xdf,0x7c,0xa6,0x79,0x13,0x0d,
- 0x9e,0xb7,0x56,0x4c,0x69,0xc0,0x80,0xdb,0xc2,0x3e,0x12,0xaf,0x44,0xc1,0xe9,0x84,
- 0xc8,0xd9,0x79,0x44,0x71,0x7f,0xd2,0xe3,0x4b,0xd4,0xe4,0xe3,0xbe,0x79,0x6c,0x95,
- 0x7f,0xd2,0xd9,0x96,0x2e,0xf3,0x41,0xc2,0xe5,0x73,0x0a,0x5e,0x7c,0xd6,0x62,0x27,
- 0x62,0x03,0x17,0xde,0x32,0x0f,0xd7,0x73,0x10,0xd3,0xbc,0xbd,0x34,0x8d,0xb7,0xe4,
- 0xb1,0x82,0x0d,0xf1,0x8e,0x19,0xc0,0x61,0xa7,0x4d,0x3b,0x13,0x79,0xc7,0x26,0xef,
- 0x9b,0x30,0x33,0x54,0x29,0x4e,0x91,0x37,0xa5,0xc9,0xbc,0xb8,0x4a,0x30,0xf4,0xc1,
- 0x1d,0xfd,0xbc,0x01,0x7b,0x7c,0xd5,0xda,0xa0,0x6d,0x27,0x26,0x22,0xbe,0x94,0x4d,
- 0x9d,0x9d,0xc8,0xef,0x6f,0x16,0xef,0x34,0x2d,0xab,0x94,0xf4,0xda,0xeb,0xfe,0xf9,
- 0xfe,0xd8,0x89,0xee,0xf0,0x74,0x3d,0x3e,0xb4,0xde,0xd2,0x12,0x05,0x76,0xac,0x60,
- 0x34,0x20,0x07,0xd4,0xe8,0xf3,0x4d,0xce,0x87,0xfd,0x00,0x75,0x5e,0x01,0xc3,0xa4,
- 0xa6,0x96,0xfa,0x07,0x37,0xef,0x19,0x79,0x15,0xa0,0x3c,0x99,0xed,0x05,0x18,0x53,
- 0x5e,0x6c,0xc3,0x2d,0xff,0x96,0xc8,0x95,0xc8,0x4e,0xea,0x2f,0x5e,0xf5,0x0e,0xc6,
- 0x2e,0xbc,0xff,0x96,0xf9,0x71,0xec,0xe8,0x7c,0x6c,0xc7,0xfc,0xb8,0x68,0x7a,0xe6,
- 0xed,0x3b,0xa9,0xa4,0x2d,0xf8,0x72,0xc9,0xb9,0xe1,0x88,0xee,0xe3,0x3b,0x23,0x5e,
- 0x6c,0x00,0x8e,0x4e,0x9b,0xd8,0x6f,0x9a,0x62,0xa4,0xf2,0xec,0x7c,0x63,0xe5,0xe1,
- 0xc1,0xc4,0xf4,0xc7,0x83,0x51,0xe3,0xc4,0x8d,0xc1,0xf9,0xe9,0xda,0xd3,0xf8,0x4b,
- 0xa9,0x54,0x92,0x37,0x0a,0xb4,0xfb,0x4a,0x72,0x2e,0x1a,0xd1,0xc3,0xf4,0x81,0x12,
- 0xff,0xa6,0x09,0xff,0x91,0x7d,0x4a,0x10,0xf3,0x36,0x64,0xae,0x9a,0xbc,0x0a,0x10,
- 0xf6,0x8a,0x09,0x97,0x77,0x34,0x37,0x91,0xd8,0x96,0xd3,0xf8,0x92,0x7b,0xda,0x67,
- 0x9a,0xff,0xc4,0xf8,0x32,0x7d,0xe1,0xdf,0x75,0xe9,0x52,0xff,0xcd,0xb8,0x7c,0x85,
- 0x95,0x79,0x23,0x1a,0xe9,0xf6,0xa6,0x7d,0x08,0x4e,0xcc,0xea,0x84,0x03,0x11,0xf4,
- 0x1d,0xbd,0x4a,0x6e,0x91,0xd5,0x57,0xe4,0x75,0x7f,0x0a,0x77,0xb7,0x3c,0xaf,0x04,
- 0x97,0x6f,0x9b,0x4b,0x57,0xfe,0x74,0xe7,0x5f,0x87,0x97,0xb0,0x99,0xd5,0x10,0xbd,
- 0xfc,0xa7,0xa4,0x73,0x0a,0x03,0x8e,0x9d,0x8a,0x44,0xea,0x95,0xf6,0xdc,0xd5,0x11,
- 0x5f,0x4a,0xdd,0xb9,0x7f,0xd8,0x38,0x31,0x78,0xa7,0x1e,0x5c,0x7a,0x25,0x23,0xdd,
- 0x9e,0xa6,0x99,0x56,0x52,0xa6,0x71,0x29,0x1a,0x8d,0x9e,0xda,0xb1,0x12,0xf1,0xc6,
- 0x40,0x74,0x20,0xfa,0x46,0xf3,0x15,0x8b,0x5d,0xea,0x24,0x47,0x48,0xc6,0x52,0x75,
- 0x94,0xcb,0x61,0x64,0x77,0x3f,0x21,0x71,0x78,0x0d,0x23,0xa0,0x61,0x8c,0x10,0x23,
- 0xca,0x5b,0x8a,0x88,0xbe,0x1b,0x8d,0x5e,0x92,0x27,0xbd,0x2b,0xb8,0x79,0x57,0xae,
- 0x54,0xb8,0x2b,0x16,0xd1,0x2a,0xbd,0xeb,0xe6,0x50,0xb1,0x2b,0xee,0x7f,0x3f,0x4d,
- 0x1d,0xd0,0xff,0x72,0xf5,0x85,0xdd,0x5a,0xda,0x8b,0xea,0x18,0xa8,0x1c,0x22,0x4c,
- 0xd6,0x6e,0xab,0xcf,0x5f,0x19,0xab,0xb9,0x7c,0xdf,0xa1,0x38,0xc4,0x67,0xe5,0xea,
- 0x19,0xfb,0xf9,0xab,0x05,0xbc,0x42,0xa6,0xcc,0xc7,0x24,0x31,0x75,0xfa,0x3f,0x3e,
- 0x5c,0x2e,0x97,0x6f,0x48,0x56,0x65,0x3e,0xd9,0x04,0x7f,0x4e,0x2a,0xec,0xfc,0xd3,
- 0xb6,0x9f,0x1b,0x60,0xf5,0x12,0x3b,0x75,0xf8,0x96,0xe8,0xc8,0x6d,0xb7,0x3f,0x77,
- 0xc4,0x38,0xc0,0xf2,0x6f,0x7c,0xe7,0x9d,0xca,0xf3,0x4d,0x2f,0x57,0xca,0xa9,0x95,
- 0xab,0xd8,0x54,0xc1,0xb9,0x88,0x75,0x2e,0x3c,0x2f,0x59,0xf4,0xed,0x01,0xfe,0x53,
- 0x63,0x81,0x5c,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
- 0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
- 0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
- 0xe9,0x67,0xac,0xff,0x03,0xdc,0x41,0xd4,0x19,0x76,0x96,0x00,0x00,
diff --git a/board/esd/hh405/logo_320_240_8bpp.c b/board/esd/hh405/logo_320_240_8bpp.c
deleted file mode 100644
index c2c59c6eb2..0000000000
--- a/board/esd/hh405/logo_320_240_8bpp.c
+++ /dev/null
@@ -1,521 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x72,0xd1,0xe2,0x40,0x00,0x03,0x48,0x6f,0x6c,0x7a,0x2d,0x48,
- 0x65,0x72,0x5f,0x64,0x74,0x5f,0x33,0x43,0x5f,0x33,0x32,0x30,0x78,0x32,0x34,0x30,
- 0x5f,0x38,0x62,0x70,0x70,0x2e,0x62,0x6d,0x70,0x00,0xec,0x5d,0x0f,0x6c,0x1b,0xd7,
- 0x79,0xff,0x12,0x09,0xc5,0xc4,0xd2,0x01,0x26,0x0a,0x03,0x56,0x88,0x1e,0x59,0xa9,
- 0x14,0x43,0xa8,0xb6,0x10,0x08,0x72,0x4d,0x10,0xf4,0xe6,0x28,0x09,0x90,0x2a,0x02,
- 0x1c,0x69,0xe2,0x98,0x6a,0xbc,0xcd,0xa3,0x38,0x33,0x64,0x4c,0xd7,0x54,0xe4,0x36,
- 0xd3,0x6c,0xd4,0x70,0x9a,0xc0,0xf0,0xcc,0xce,0x73,0xb3,0x2d,0xd1,0x42,0x25,0xd0,
- 0x1c,0x29,0x11,0x27,0x42,0x15,0x25,0x81,0xf3,0x5a,0x36,0x54,0x77,0x66,0xa8,0x0e,
- 0x72,0xed,0x25,0x59,0x24,0xb4,0x69,0xfe,0xac,0x68,0xa7,0x85,0x4a,0x42,0xbb,0x89,
- 0x77,0x20,0xf6,0xbd,0x3f,0x47,0x1e,0x29,0xc9,0x8a,0x5d,0x2b,0x8e,0x8b,0xf7,0x3b,
- 0xfe,0xb9,0xf7,0xee,0xbd,0xef,0xde,0xfb,0xbd,0xdf,0xfb,0xbe,0x77,0xf4,0x9d,0xbc,
- 0xfb,0x81,0xb6,0x96,0xdb,0x80,0xa0,0xad,0x1a,0xc0,0x8a,0xdf,0x7f,0x88,0xc9,0x15,
- 0xfc,0xbe,0x0d,0x7e,0x87,0xe6,0x43,0xf3,0x6d,0xd0,0xb0,0x0d,0xe8,0x1b,0x58,0x51,
- 0xa8,0xbe,0xbd,0x1a,0x5a,0x8f,0x2e,0x43,0xfd,0xee,0x41,0x18,0x7a,0xfa,0x9f,0xa0,
- 0xfb,0xc1,0x6e,0x18,0xf9,0x8f,0x2b,0xd0,0xbc,0x77,0x04,0xbc,0x67,0x3e,0x84,0xba,
- 0x2f,0xee,0x84,0xc1,0xa3,0xc7,0xe0,0xe2,0xc5,0x57,0x61,0x64,0x7a,0x1e,0x9a,0xef,
- 0x6c,0x86,0xfa,0x7b,0x9e,0x84,0xc6,0xbd,0x73,0xd0,0xf1,0xd4,0x7b,0x70,0xf1,0x57,
- 0x0a,0x34,0x1e,0xbc,0x08,0x75,0x4d,0x3d,0x70,0xf6,0xdf,0x52,0xa0,0xaf,0x33,0x43,
- 0xf7,0xc1,0x13,0xd0,0xdc,0xf5,0x04,0x1c,0x4b,0xe6,0xa1,0xfd,0x1b,0x67,0xa1,0xfb,
- 0xe8,0x1c,0xcc,0x2d,0x2c,0x41,0xf0,0xd9,0x25,0x70,0xdc,0x7d,0x2f,0x34,0x3e,0xfa,
- 0x36,0xd4,0x7f,0xc5,0x0b,0x43,0x2f,0x9e,0x85,0xe5,0xf7,0x72,0x50,0xff,0x85,0x7a,
- 0x38,0x36,0x7a,0x11,0x96,0x7e,0xfe,0x36,0x0c,0xfd,0xeb,0xcf,0xa0,0xe3,0xe4,0x12,
- 0x9c,0xf8,0x9b,0x53,0xd0,0xfb,0xe7,0x7b,0xa1,0xb5,0x6d,0x07,0xe8,0x7f,0x7f,0x3b,
- 0x04,0x1f,0x09,0xc1,0xd9,0x9f,0x2a,0xd0,0xf1,0xe0,0x1f,0x43,0xfd,0x17,0x9b,0xe0,
- 0xec,0xbf,0x5f,0x84,0xc6,0x9e,0x97,0xa0,0xf1,0xb1,0x65,0xe8,0x9f,0xcc,0x43,0xfd,
- 0xfd,0x27,0xa0,0xf7,0x1f,0xde,0x84,0xe5,0xcb,0x1f,0x43,0xfb,0xe3,0xff,0x05,0x8d,
- 0x0f,0xcf,0x43,0xf5,0xe7,0x6b,0xa1,0xdd,0x77,0x02,0xea,0xda,0x82,0xf0,0xce,0xbb,
- 0xef,0xc2,0xd0,0xb9,0x8f,0xa1,0xff,0xd0,0x37,0xe1,0xec,0x1b,0x0a,0x8c,0xbf,0x14,
- 0x83,0xa1,0xe7,0x47,0xa0,0x7f,0xf4,0x2d,0xe8,0x3f,0x79,0x16,0xea,0xb6,0xf5,0x42,
- 0xfb,0xfd,0x5f,0x85,0xba,0x2f,0x98,0xe0,0xc4,0xcb,0x79,0xe8,0xf6,0x61,0x1f,0xbf,
- 0x36,0x0e,0xcd,0x9d,0xc7,0xc0,0x71,0x7c,0x19,0xa6,0x5e,0x55,0xa0,0x75,0xff,0x14,
- 0x9c,0x7d,0x79,0x0e,0x2e,0xbe,0xfb,0x31,0x38,0xec,0x0e,0xa8,0xb7,0x39,0xa0,0xf5,
- 0xaf,0xdf,0xc4,0x73,0x9f,0x06,0xef,0xb3,0x6f,0x42,0xdd,0x1d,0x75,0x30,0xfe,0xca,
- 0x0a,0xb4,0x3e,0x18,0x84,0xee,0x1e,0x17,0x34,0x6f,0xdb,0x06,0xad,0x07,0xd1,0xb6,
- 0xa1,0x0e,0xbc,0x78,0x8e,0xf9,0x57,0xb1,0x5f,0xa7,0xfe,0x0e,0x7a,0x7d,0x41,0x50,
- 0x0a,0x0a,0xe8,0xf5,0x7a,0x70,0x1c,0xfd,0x29,0x4c,0xfd,0xe4,0x23,0x70,0x3c,0x3c,
- 0x0e,0x75,0xb6,0x76,0x38,0xf6,0xed,0xe3,0x70,0xf1,0x8d,0x45,0x98,0x9a,0x49,0x42,
- 0x73,0xdf,0x59,0x78,0xe7,0x57,0xbf,0x84,0xf9,0x85,0xf3,0x70,0xec,0x29,0x6c,0xcb,
- 0xc0,0xcf,0x61,0xf9,0x83,0x0f,0x40,0xbf,0x75,0x07,0x34,0xda,0xb6,0xc1,0xfc,0x2b,
- 0x3f,0x86,0xc6,0x47,0xfe,0x13,0xea,0x9d,0x21,0x18,0x79,0xe5,0xff,0x60,0xf0,0xf0,
- 0xb7,0x60,0x7c,0x72,0x0a,0x86,0xce,0x4c,0x41,0xdd,0x5d,0x5e,0x68,0xfc,0xd3,0x59,
- 0xe8,0x8d,0x7e,0x08,0xcd,0xbb,0xbd,0xd0,0x8a,0xf6,0x83,0xff,0x92,0x07,0xbd,0xa5,
- 0x1d,0xba,0x9f,0xcd,0x43,0x63,0xd7,0x3f,0x42,0xc7,0xbd,0x1d,0xd0,0xe8,0xfc,0x13,
- 0xe8,0xde,0x3f,0x04,0xed,0x78,0xfc,0xd8,0x74,0x1e,0x8e,0x3d,0x3f,0x0f,0x8e,0x07,
- 0x07,0xa1,0xfb,0x3b,0x6f,0x82,0xf7,0xe1,0x20,0x78,0x8f,0x4e,0xc1,0xe0,0x53,0x67,
- 0xa1,0xfd,0xa1,0x7e,0x70,0x1c,0x5e,0x82,0x66,0x67,0x37,0xb4,0x23,0x1f,0xc7,0xbe,
- 0x33,0x0a,0xa7,0xff,0xfe,0x69,0x98,0x7f,0x5b,0x81,0xd3,0x67,0xe6,0x60,0xf0,0xf8,
- 0x10,0x0c,0x4d,0xce,0x41,0xeb,0xfd,0xdf,0x80,0xd3,0x49,0x1c,0x13,0x3c,0x57,0xeb,
- 0x63,0x17,0xe1,0x9d,0x0f,0x14,0xac,0x37,0x0f,0x43,0x2f,0x2f,0x43,0xf0,0x60,0x3f,
- 0x74,0x1c,0x47,0x1b,0x7d,0x53,0xd0,0x7e,0x12,0x35,0xb7,0xf5,0x0f,0xc0,0xe1,0x74,
- 0x42,0xff,0xd1,0x21,0xe8,0x3e,0x7e,0x11,0xba,0x07,0xc6,0xe1,0x9d,0xf7,0x50,0x4f,
- 0xbb,0x83,0x30,0x3e,0x3d,0x07,0x8d,0xf7,0x9e,0x00,0xef,0x5e,0x2f,0xcc,0x9d,0x7b,
- 0x05,0x3a,0x8e,0xa2,0xf6,0x02,0x3f,0x80,0x8e,0xbd,0x83,0xd0,0xd1,0xf1,0x00,0x9c,
- 0x4e,0x7f,0x08,0xbd,0x0f,0xf5,0x42,0xeb,0x5d,0xad,0xd0,0x7b,0xea,0x22,0x1c,0x3b,
- 0x7e,0x02,0xda,0x0f,0x4e,0xc1,0xc8,0x8b,0xe3,0x30,0xf7,0xf2,0x8f,0xe0,0xf4,0xa9,
- 0xef,0xc2,0xd2,0x1b,0x4b,0x90,0xff,0x20,0x0f,0x75,0x5b,0xb7,0x83,0xfe,0x73,0x7a,
- 0x18,0x3f,0x7f,0x05,0x82,0x2f,0xe2,0xd8,0x3e,0x8d,0x9c,0x84,0xcf,0xe3,0xf8,0x61,
- 0x5f,0xee,0xb9,0x07,0x1a,0xed,0x7f,0x06,0x23,0xc9,0x25,0x68,0xfc,0xd2,0x97,0xa0,
- 0xf9,0xaf,0x96,0x61,0xf0,0x7b,0x39,0x68,0x7c,0xe0,0x49,0xc8,0x7f,0x74,0x19,0x75,
- 0x7a,0x00,0x06,0x1f,0x1b,0x84,0xb9,0x37,0xf2,0x30,0x32,0x32,0x02,0xf5,0x77,0xf5,
- 0x42,0xb3,0x67,0x14,0x1c,0x07,0xc7,0x61,0xe9,0xbf,0x91,0xc7,0xaf,0x7e,0x17,0x46,
- 0xce,0x8c,0x83,0xf7,0xb9,0xf7,0xa1,0xae,0xf1,0x7e,0xe8,0xf0,0x0c,0x42,0xab,0x6f,
- 0x1c,0x3a,0x4e,0xfd,0x2f,0xd4,0xdf,0x7b,0x1a,0x1a,0x7d,0xf3,0xb0,0x84,0x73,0xe4,
- 0xc4,0x59,0x2c,0x3b,0xb0,0x0c,0x4b,0x6f,0x2d,0xc3,0xdc,0xcf,0x14,0xe8,0x7f,0x11,
- 0xfb,0xbf,0xad,0x03,0x5a,0x0f,0x2f,0x43,0x6b,0x0f,0xf2,0xfd,0x90,0x17,0xf5,0x82,
- 0x7a,0x7a,0x74,0x1e,0xea,0x7e,0xaf,0x11,0xbc,0xa7,0xe6,0x41,0x7f,0x47,0x3d,0x38,
- 0xbe,0xbd,0x0c,0xf3,0x3f,0x59,0x82,0x63,0xa7,0xa6,0x90,0x8f,0x41,0x68,0xde,0x3f,
- 0x0f,0xa7,0x7f,0x84,0x5a,0xdc,0x3b,0x04,0x5e,0x9f,0x0f,0xa6,0x26,0x13,0xd8,0xa6,
- 0x20,0x9c,0x98,0x5e,0x86,0xf6,0x07,0xfb,0xa1,0x1f,0x39,0x6e,0xdc,0xda,0x08,0xed,
- 0xce,0x76,0xd4,0xea,0x3c,0x6a,0xe9,0x1d,0xd4,0x8c,0x82,0x1a,0x19,0x84,0x11,0x1c,
- 0x9f,0xea,0xcf,0xe1,0x7c,0x47,0x9b,0x43,0xcf,0x3e,0x0f,0x5e,0xe4,0xc2,0x23,0x20,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xf0,0x19,0xc2,0x58,0x2c,0x16,0x73,0xde,0xec,
- 0x46,0xdc,0xc2,0x70,0x02,0x40,0xef,0xcd,0x6e,0xc4,0x2d,0x0c,0xc2,0xdf,0xf4,0xcd,
- 0x6e,0xc4,0x2d,0x8c,0x7e,0xe4,0xcf,0x72,0xb3,0x1b,0x71,0x0b,0x43,0xcc,0xdf,0x6b,
- 0x46,0x70,0xc6,0xef,0xd7,0xed,0xe3,0x09,0x36,0x7f,0xe5,0x86,0x90,0xce,0x54,0x2a,
- 0x21,0x37,0x60,0x09,0x9e,0x96,0x65,0xf5,0x45,0x53,0xec,0x0b,0x77,0xfa,0x42,0x0d,
- 0x6c,0x47,0x9b,0x2d,0xab,0x47,0x3d,0x95,0x3b,0x26,0x9d,0xdf,0x54,0x2c,0x8e,0xa9,
- 0x90,0xdf,0xae,0x39,0x5f,0x5f,0xc8,0x3f,0x63,0xd2,0x16,0x57,0x2d,0x69,0x0c,0x55,
- 0x18,0xf4,0x78,0x66,0x49,0xad,0x75,0x4f,0xb8,0x59,0xc8,0xa6,0x2e,0x49,0xa0,0x48,
- 0xee,0x54,0x81,0x9e,0x88,0xce,0x5f,0x43,0xa7,0xa4,0x48,0xd1,0x3c,0xe7,0x74,0x9f,
- 0x57,0xdf,0x95,0x04,0xc9,0x1c,0x9b,0xc2,0x36,0x5a,0xf5,0x69,0x75,0x1b,0x96,0x3d,
- 0x3a,0x57,0x5a,0xef,0x25,0xad,0xac,0xd2,0x4b,0x49,0x69,0xd8,0x20,0xc7,0xf5,0x69,
- 0xa7,0xc7,0xa3,0xd3,0xb3,0x6c,0x9b,0x3e,0x1d,0x27,0xb4,0x98,0xac,0x7a,0x7d,0x8e,
- 0x98,0x72,0x62,0xb5,0x15,0xfc,0xb6,0x8f,0xba,0x93,0x8a,0x39,0x67,0x5f,0x49,0xeb,
- 0xad,0x41,0x8f,0xc1,0xea,0xc6,0xf3,0x75,0x75,0xb2,0x16,0x78,0xec,0xf9,0xb4,0xa4,
- 0x28,0x92,0xb9,0xe0,0x99,0x71,0xe9,0xd3,0x19,0x9a,0xd7,0xa4,0xd7,0x5b,0x4d,0xc4,
- 0xb0,0x3e,0x4d,0x0c,0x67,0xd2,0x7a,0x17,0x1d,0x2e,0xbf,0x5e,0xaf,0x9f,0xa4,0x25,
- 0xfc,0xa3,0x51,0x29,0xa9,0x48,0xe9,0xd1,0x10,0x39,0x0f,0x36,0xc0,0x49,0xb3,0xe3,
- 0x69,0x7d,0xcf,0xa6,0xf2,0x67,0x03,0x15,0x29,0xd2,0x55,0xa2,0xbf,0x94,0xc4,0x32,
- 0xe2,0x54,0x21,0xa1,0xb4,0x5a,0x40,0xb2,0x7b,0x82,0xee,0x62,0x71,0x30,0xcb,0x1e,
- 0x7f,0x12,0xc0,0x46,0x8c,0x28,0xac,0x40,0x04,0x6b,0x62,0xbb,0xfd,0x0a,0xcb,0xae,
- 0xc6,0x2c,0xd2,0x4d,0x3b,0xd6,0x8a,0x11,0x5b,0x11,0x2c,0x94,0xc5,0xf4,0x7e,0x66,
- 0xc1,0x95,0xa1,0x56,0xb2,0xaa,0xc5,0x51,0x59,0x7b,0xbe,0x69,0x8f,0x0e,0xcd,0x8f,
- 0xd2,0x56,0xa6,0x00,0xdc,0xd8,0x3c,0x3f,0x30,0xc3,0xa3,0x68,0x78,0x86,0xe4,0x8f,
- 0xe1,0x99,0xf2,0x64,0xa7,0x4a,0x52,0x8d,0x0c,0x63,0x6a,0x17,0x7e,0x17,0x48,0xb6,
- 0x8c,0x67,0xee,0xdc,0x54,0xfe,0xbc,0xd8,0x14,0xb3,0x39,0x49,0xce,0x1c,0xc3,0xe6,
- 0x3b,0x29,0x13,0xee,0xcb,0x7a,0xf2,0x3d,0x41,0xfa,0x6e,0xc6,0x9d,0x74,0x93,0xad,
- 0x3a,0x4d,0xb8,0x30,0x11,0xfe,0x14,0xe9,0x17,0x12,0x22,0x2d,0x7b,0x42,0x8c,0xa8,
- 0x04,0x56,0x97,0xaa,0x6d,0xc3,0x49,0x62,0xc6,0x87,0x14,0x00,0xeb,0x15,0xf2,0xd7,
- 0x55,0xc6,0x5f,0x15,0xe3,0x6f,0x94,0x98,0x1c,0x1d,0x45,0x8b,0xf8,0x2d,0x7b,0x7c,
- 0x49,0x7d,0x93,0x8d,0x0e,0x5a,0x15,0x96,0x25,0xf4,0x25,0xf5,0x29,0xbd,0x54,0xf0,
- 0xe8,0xd0,0x7c,0xae,0xc8,0x1f,0x4e,0x07,0x1d,0xe7,0xaf,0x09,0xcf,0xa7,0xa3,0xfc,
- 0xf1,0x33,0x91,0x66,0x27,0xad,0x39,0x5b,0xca,0x4d,0xf9,0x2b,0x14,0xf9,0xeb,0x42,
- 0xfe,0x36,0x75,0x06,0x67,0x63,0x59,0xbb,0x2c,0xeb,0x72,0x84,0xb6,0x04,0xd3,0x1f,
- 0x51,0xa2,0x6c,0x49,0xb2,0x36,0xa2,0x3e,0x95,0xcc,0x2c,0x69,0x8a,0xa1,0xda,0x4e,
- 0x29,0x01,0xf3,0x98,0x9d,0x02,0x89,0x62,0xfa,0xab,0xc1,0x4c,0x32,0x2d,0x0b,0x84,
- 0x83,0x0e,0x8f,0x4a,0xab,0xa7,0x99,0x6a,0x76,0x95,0xfe,0x64,0x3d,0x80,0x1e,0xb5,
- 0x6d,0x22,0xc6,0xf4,0x78,0x38,0xe1,0xe1,0x7d,0xc6,0x42,0x0e,0x72,0x02,0x03,0x76,
- 0x79,0xa6,0xc1,0xe3,0x97,0xb4,0xfc,0xad,0xa5,0x3f,0x32,0x72,0xc8,0x9f,0x8c,0xa4,
- 0xbb,0xfb,0x49,0x86,0xa9,0x2a,0xa7,0xe5,0xcf,0x23,0x6d,0xb6,0xfe,0xd4,0xc1,0x39,
- 0x82,0xa7,0xac,0x61,0x03,0xe9,0xd6,0xa9,0x19,0x16,0x8f,0xc9,0xcc,0x74,0xa9,0x16,
- 0x35,0xc5,0x31,0xfb,0x72,0x90,0x57,0xe2,0x13,0x35,0xc3,0xe7,0xa9,0x67,0x02,0x0f,
- 0x8e,0xb1,0x6e,0x72,0xfd,0x49,0x6b,0xe8,0x4f,0xbe,0x04,0xd0,0x4c,0x92,0x0d,0x6e,
- 0xca,0x1f,0x03,0xd1,0x56,0x5c,0x9e,0x4d,0xf3,0xb1,0xa0,0x59,0x65,0xf3,0x57,0xa3,
- 0x3f,0xc2,0x5f,0x1f,0xc9,0xe7,0xf3,0xd7,0xc7,0xb4,0x5b,0x44,0x99,0xfe,0xac,0x37,
- 0x92,0xae,0x75,0x11,0x06,0x3a,0xd6,0x4e,0xe0,0x5d,0xa5,0x6d,0x68,0xa2,0x0d,0xcc,
- 0x6a,0xcb,0xcd,0xa4,0xf9,0xc4,0x26,0xe0,0xfa,0xcb,0xaa,0x8b,0x6e,0xb2,0xe3,0x2f,
- 0x66,0xaf,0x9e,0xbf,0xdc,0xff,0x21,0x1b,0x66,0x2a,0x9f,0x18,0x52,0xc6,0x2c,0xc9,
- 0xba,0x18,0x3d,0x33,0x61,0x28,0xad,0x8e,0x69,0xf9,0xfc,0x35,0x95,0xf4,0xd7,0xa4,
- 0xf5,0x7f,0x0e,0xda,0x78,0x77,0x83,0xa6,0x91,0xbb,0xe0,0x53,0x9b,0xbf,0x1c,0xb3,
- 0x2e,0xa6,0x19,0x12,0x7f,0x59,0xc8,0x4b,0x60,0xd3,0x52,0x94,0x4f,0x0c,0x76,0x2e,
- 0x3d,0xd9,0xe2,0xa4,0x8d,0x63,0xc4,0x05,0x86,0x59,0x2d,0xae,0x3f,0x13,0x0a,0x2a,
- 0xd9,0x93,0x35,0x24,0x08,0x3f,0xa1,0x52,0x37,0x9b,0xd7,0xd6,0x9f,0x27,0x8b,0xd5,
- 0xa2,0x19,0x67,0xa2,0xe3,0x08,0xe7,0x6f,0x26,0x6c,0xa5,0xfe,0xbf,0x8a,0x2a,0x49,
- 0x1d,0x1d,0x8f,0x4e,0xaa,0x88,0x1f,0x5a,0xfd,0x31,0xff,0xc7,0xe6,0xef,0x28,0x71,
- 0x99,0x2e,0xde,0xcc,0x89,0x4a,0xff,0xf7,0x29,0xb0,0x67,0xb0,0x92,0x78,0xe1,0x64,
- 0xfa,0x9b,0x2c,0x36,0x7e,0xb8,0x14,0x1b,0x69,0x7c,0xa5,0x63,0xee,0xc4,0x03,0x49,
- 0xda,0xba,0xa2,0xd0,0x12,0xe9,0x52,0x21,0x3f,0xf3,0x7f,0xea,0xfc,0x5d,0xc3,0xff,
- 0xa1,0x5e,0x08,0x5b,0x2c,0x66,0x13,0xfe,0x22,0x2c,0x78,0x4a,0x36,0xd9,0x43,0xfe,
- 0x77,0xbc,0xd1,0x22,0x7f,0x4a,0xc5,0xfc,0xd5,0xea,0x8f,0xf2,0x97,0x60,0xa3,0xde,
- 0xa3,0x6d,0x65,0x67,0xa5,0xff,0xdb,0x6c,0xfd,0xd9,0x2d,0x71,0x7a,0x62,0x57,0x90,
- 0xf1,0x47,0x17,0x04,0x1e,0x03,0xee,0x1d,0xf1,0xf8,0xb0,0x0b,0xf1,0xcb,0x29,0xdc,
- 0xd2,0xac,0x0b,0x88,0x5e,0x64,0xcd,0x6d,0x20,0x7b,0xea,0x42,0xc5,0xb3,0xcf,0x12,
- 0x4b,0xbb,0xdd,0x6e,0x6c,0xad,0x12,0x2a,0xc5,0x0f,0xe4,0x4f,0x21,0xdd,0xdc,0xa7,
- 0xae,0x22,0xb8,0xfe,0xb0,0x84,0xcd,0x1a,0xc5,0xf2,0x49,0xca,0xdf,0x18,0xa5,0xcf,
- 0xdc,0x64,0xe0,0x67,0x8d,0x15,0xf9,0x93,0xd4,0xc4,0x6a,0xfd,0x91,0x38,0xc5,0x26,
- 0x49,0x9e,0x06,0xb9,0xe4,0x30,0x36,0x32,0x75,0xb9,0x8b,0xd6,0x28,0x30,0x67,0xfe,
- 0xa9,0xe8,0x6f,0xd6,0x62,0x66,0xe3,0x96,0x46,0xe5,0x50,0xfe,0xe2,0x74,0xc0,0x2c,
- 0xb8,0xf7,0x84,0x67,0x46,0x52,0x47,0x12,0xdb,0xe8,0x62,0x35,0xe4,0x3c,0x1e,0x8a,
- 0x12,0x62,0x54,0xfd,0xd1,0x5c,0x93,0xdd,0x8e,0xb5,0x93,0xfe,0x92,0x4c,0xaa,0x99,
- 0xa6,0x3d,0x0d,0x68,0xc4,0x4c,0x16,0x93,0xaa,0xfe,0x08,0x4c,0x58,0xbe,0x99,0xf6,
- 0x8e,0x84,0x6f,0xbd,0x93,0x5d,0xdf,0x60,0x51,0xc5,0xad,0x5e,0xfa,0x10,0xfd,0x45,
- 0x69,0x22,0x5e,0xee,0xff,0x08,0x7f,0x64,0x1d,0x4d,0xa7,0x3b,0xfa,0xbf,0x69,0xee,
- 0x68,0x3d,0x9e,0x34,0x4d,0x17,0xd4,0x51,0x30,0x6d,0xba,0xfe,0xe4,0x1e,0x36,0x8f,
- 0xdc,0x36,0x7a,0x01,0x45,0xe2,0xaf,0x42,0xfa,0x6c,0x72,0xb1,0x39,0x80,0x5f,0x29,
- 0xd2,0x80,0xa0,0x5e,0xf5,0xe5,0xa4,0x0e,0x51,0xab,0x49,0xa3,0x3f,0x1d,0x3b,0x30,
- 0xc9,0x26,0xac,0x3a,0x7f,0x91,0x1e,0x20,0xab,0xff,0x84,0x6a,0x94,0x2c,0xd6,0x71,
- 0x7d,0xe8,0xb1,0xb3,0x8b,0x35,0x19,0x69,0xa9,0xf6,0x78,0xc8,0x70,0x44,0x54,0xd3,
- 0x9d,0x25,0xef,0x4a,0xe3,0x2f,0x3d,0x42,0x02,0xf5,0xa5,0x60,0xd9,0xfa,0x8f,0xae,
- 0x80,0xe8,0x6a,0xc7,0xc2,0x88,0xa6,0xbf,0x7a,0x24,0x24,0x7a,0x82,0x02,0x56,0x4c,
- 0x92,0x0b,0x11,0x9f,0x56,0xce,0x9b,0x82,0x08,0xa5,0x4f,0xef,0xe5,0xe1,0x8b,0xae,
- 0xff,0xdc,0x91,0x19,0x3f,0x5d,0xe8,0xd9,0xe9,0xd0,0x02,0x52,0x6b,0xc7,0x26,0x27,
- 0x71,0x9d,0xe6,0x8b,0x44,0x22,0x55,0x11,0xaf,0xc4,0xa2,0xb5,0xaa,0xbf,0xa0,0xbe,
- 0xc7,0x30,0x2b,0xcb,0x2b,0x66,0x26,0x5e,0xad,0xfe,0x94,0xf0,0x8c,0xff,0x32,0x31,
- 0x1a,0x75,0xda,0x9d,0x24,0xf4,0x90,0x75,0xc7,0x4a,0xd4,0x8b,0x57,0xaa,0xf6,0x3c,
- 0xeb,0x3d,0x39,0x05,0x59,0x72,0xce,0x38,0x65,0x16,0xc2,0x93,0x39,0xbf,0xdd,0x5f,
- 0x25,0x53,0x5a,0xc0,0x3d,0xdd,0x40,0x63,0xf3,0x11,0x4f,0xb9,0xfe,0x20,0x95,0xb0,
- 0x67,0xd1,0xa0,0x42,0xa6,0x3d,0x16,0xe8,0x2a,0xcc,0xca,0x21,0x17,0xe3,0xb5,0x40,
- 0xe7,0x93,0xd3,0x9e,0xd0,0xab,0x42,0xdd,0x2c,0xd0,0xf1,0x8e,0x3a,0x8b,0x12,0x27,
- 0xfa,0x8b,0xaa,0xbe,0x9d,0x9e,0x99,0x74,0x3e,0xd9,0x9e,0xe4,0x7e,0x5d,0xe3,0xa9,
- 0x63,0x25,0xfd,0xcd,0x46,0xc9,0x55,0x0c,0x75,0x63,0x64,0x1d,0xa3,0x89,0x1f,0xee,
- 0x2e,0x66,0x2b,0x39,0xcc,0x6b,0xd1,0xd5,0xd8,0x14,0xe1,0x85,0x5e,0xf4,0x10,0xaf,
- 0xd6,0x40,0x1c,0x88,0x62,0xee,0x52,0xc8,0x1c,0x97,0x27,0xd4,0x60,0xb5,0x8f,0xfa,
- 0x3f,0x37,0x6b,0x0a,0xd3,0xaf,0x36,0xfe,0x76,0xf1,0x72,0xd4,0xdb,0xe8,0xc8,0xc8,
- 0x48,0xc4,0x4e,0x12,0xaf,0xd2,0x29,0x7f,0xdc,0x2b,0x41,0x97,0x6e,0x33,0xf9,0x23,
- 0xeb,0xe3,0xa4,0xaf,0x94,0x26,0xfa,0xcb,0xb2,0xbe,0x26,0xd9,0x74,0xdd,0x17,0x63,
- 0x3d,0x48,0x4e,0x04,0x19,0x25,0x1a,0xfe,0x8a,0xfa,0x73,0xf1,0xbc,0x64,0x8e,0x5e,
- 0xc2,0x26,0x8b,0xeb,0x97,0x78,0x96,0x5e,0x31,0x2b,0x36,0x13,0x33,0xe3,0xa6,0xd7,
- 0x1a,0x2b,0xea,0xd5,0x6a,0x3b,0x5d,0x2a,0x1b,0xa2,0x9c,0x32,0x32,0xad,0x83,0xa3,
- 0x3c,0x1a,0xeb,0xa8,0xfe,0x9a,0x32,0x2c,0x49,0x0d,0x6b,0xe2,0x6f,0xd4,0xc9,0x08,
- 0x32,0x53,0x83,0x9e,0xc4,0x7e,0xd6,0xca,0x2e,0xba,0x0e,0x25,0xfc,0xf5,0xb3,0xa0,
- 0x28,0x45,0x3c,0x9b,0x09,0xca,0x9f,0x66,0x84,0x74,0xe1,0x4c,0xb8,0x6f,0x76,0x3a,
- 0xe6,0xea,0xa4,0xe1,0x90,0x40,0x5e,0x69,0xea,0x74,0x75,0xda,0x18,0xc9,0xd9,0x4c,
- 0x26,0xe3,0x08,0x67,0x08,0x30,0x10,0x34,0xe0,0x1e,0x65,0xc0,0xe4,0xcc,0xa7,0xe2,
- 0xae,0x94,0x8d,0xd5,0x51,0xf5,0x97,0xcd,0x38,0x22,0x1e,0xbf,0xad,0x33,0x1e,0xc3,
- 0xb2,0x72,0xb6,0x3a,0x6e,0xcd,0x85,0xf8,0x69,0x22,0x13,0x9d,0x2e,0x6b,0xcc,0x3b,
- 0xc3,0x92,0x76,0x4b,0x2c,0xee,0x1a,0x9e,0xb0,0xb0,0xc0,0x31,0x66,0x1b,0x8e,0xc7,
- 0x53,0x79,0x3b,0x5f,0xff,0x19,0x46,0xad,0xf1,0x6a,0x16,0x75,0xec,0xe1,0x8c,0x83,
- 0x9c,0xcf,0x99,0xc9,0x4c,0xca,0x0d,0xe1,0x94,0xab,0x33,0xdf,0xa7,0x76,0x64,0x3a,
- 0x86,0x95,0x6a,0x58,0x57,0xfc,0xd8,0x3c,0xbb,0x29,0x82,0x39,0xc5,0x5e,0x6c,0x12,
- 0x88,0x0b,0x57,0xd6,0xf8,0xc1,0x59,0x2e,0x0f,0x5a,0x9f,0x24,0x84,0x95,0xaa,0xa8,
- 0x32,0xa9,0xac,0x5d,0x6e,0xb4,0xc2,0x66,0xf9,0x31,0x9a,0x2a,0xae,0xff,0xd6,0x3b,
- 0x7d,0x45,0x23,0x57,0x15,0xfb,0x14,0xae,0x3c,0x32,0x44,0xe3,0xe1,0x90,0xce,0x60,
- 0x49,0x5d,0x8f,0xa3,0x58,0xb3,0x85,0xaa,0xfe,0x7e,0x53,0x94,0xae,0x7f,0x3f,0xbb,
- 0xb0,0x97,0x2e,0x1d,0xae,0x5d,0xea,0xfe,0x74,0x34,0x1a,0x5e,0x23,0xbb,0x42,0x7f,
- 0xd7,0x8b,0xd2,0xf5,0x87,0x9a,0x11,0x5d,0xf3,0x7c,0x37,0x15,0x7e,0xab,0xca,0x5f,
- 0xd5,0xc6,0x85,0x2b,0xeb,0x26,0xd7,0x24,0xea,0x86,0xe9,0x4f,0xaa,0xe4,0xef,0x06,
- 0x0d,0xcc,0x0d,0xc5,0x6c,0xb6,0xda,0x15,0xbd,0xe4,0x4a,0x65,0xfa,0x36,0x2e,0x5b,
- 0x01,0xf5,0x42,0xad,0x02,0x37,0x52,0x7f,0x39,0x6d,0xc6,0x8d,0x32,0x7c,0xa3,0x21,
- 0x9b,0x82,0xd7,0xe5,0x6a,0x67,0xaa,0x63,0xb1,0x35,0xd6,0x07,0x7e,0x49,0x92,0x6e,
- 0x8c,0xfe,0x24,0xa9,0x8c,0xbf,0x99,0xd8,0x9a,0xe7,0xfb,0x6d,0x83,0x6c,0xb7,0xdb,
- 0x4d,0x1b,0x17,0xfb,0xd4,0xec,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
- 0x5c,0x37,0x82,0xf6,0x90,0xcf,0xe9,0x9c,0x2a,0x7f,0xa9,0xd0,0x66,0x4c,0xad,0xca,
- 0x9c,0x52,0x13,0xb8,0x4d,0xb1,0x2f,0x6d,0x4d,0x35,0x67,0xbd,0x97,0x73,0x8d,0x9c,
- 0xf5,0x8a,0xac,0x55,0xbd,0x7f,0xe5,0x8c,0xef,0x8c,0x8a,0xd2,0x5e,0x65,0xce,0xea,
- 0x23,0xc5,0x12,0xdb,0x3e,0xda,0xf7,0x1b,0xfd,0xa4,0x15,0x5c,0xc9,0xa5,0xdd,0x92,
- 0xa2,0xd0,0x1f,0xe8,0x8b,0x2f,0x2d,0x2a,0x92,0xab,0xa1,0x68,0xb6,0x0d,0x4a,0xf3,
- 0x42,0x1b,0x64,0x5c,0xc5,0x48,0x45,0x69,0x50,0x94,0xba,0x3b,0x2f,0x5c,0xa8,0xfd,
- 0x0b,0xba,0xd5,0x5e,0xa8,0x25,0xfb,0x17,0x6a,0xd9,0x86,0x19,0xf8,0xbe,0xc0,0xde,
- 0x9a,0xd7,0x05,0x56,0xb4,0x96,0x16,0xa8,0xfd,0xc1,0xfc,0x0f,0x1f,0x3f,0xf9,0xcb,
- 0xeb,0x64,0xcf,0x17,0x73,0xaf,0xd3,0xd0,0x5b,0x09,0x75,0x8f,0xd4,0xee,0x26,0x1b,
- 0xa2,0x76,0xf7,0x7c,0x71,0x4f,0xcd,0xac,0xad,0x48,0x14,0xf7,0x6a,0xe9,0x17,0x25,
- 0xf2,0x9b,0xcf,0x5d,0xfb,0x4f,0x25,0x9e,0x44,0x6a,0x43,0x6d,0xdd,0x22,0xa8,0xbb,
- 0x30,0xf0,0xfe,0xc0,0xc0,0xfc,0xc0,0xc0,0xd6,0x01,0xc4,0xce,0x79,0xdc,0xdd,0x49,
- 0xf6,0x71,0x6f,0x60,0x7e,0x27,0x49,0xe1,0x8b,0x95,0xa0,0xaf,0xad,0xb4,0xe4,0xb9,
- 0x81,0x81,0xdd,0x58,0x6e,0x9e,0xb2,0x38,0xff,0xdc,0xd2,0xb5,0xb1,0xd7,0xd0,0x23,
- 0x6d,0xdc,0xb0,0x5b,0x06,0x77,0x9e,0xbb,0x82,0xa0,0x1f,0x57,0xbe,0x4e,0xdf,0x6c,
- 0xbf,0x98,0x49,0x73,0xaf,0x68,0xf2,0x68,0x89,0x73,0x57,0xce,0x91,0x17,0x92,0xbe,
- 0xbb,0xf6,0x87,0x27,0xaf,0xc5,0x13,0x1a,0xf4,0x37,0xbb,0xcb,0x37,0x14,0xca,0x8e,
- 0x73,0x0b,0x5b,0x16,0xf6,0xec,0x79,0x61,0xcf,0x0b,0x0b,0xaf,0xd1,0x6d,0x0f,0x49,
- 0x63,0x72,0x0f,0xfb,0xc4,0xed,0x2e,0x9a,0xfd,0x1a,0x49,0xd3,0x4c,0x5a,0x60,0x61,
- 0xcb,0x96,0x2d,0x84,0x50,0x54,0x65,0xed,0xbd,0xf6,0x8d,0x79,0xe3,0xd8,0x65,0xde,
- 0xb8,0x4d,0xb7,0x16,0x76,0x7c,0x7d,0xfb,0x75,0xe1,0xf0,0xf6,0x05,0xa4,0xf1,0xf6,
- 0x2b,0x57,0x50,0x83,0xa7,0x3f,0x69,0x20,0xf1,0x76,0x49,0xbf,0x2d,0xbe,0xaf,0x08,
- 0x65,0xcb,0x1d,0xd7,0x85,0x43,0x77,0x1c,0xba,0x6f,0xfb,0xc2,0x0b,0x5b,0x6e,0xc7,
- 0x79,0xbc,0xf5,0xd7,0x9f,0x88,0xbe,0x6c,0x7b,0x97,0x04,0xc9,0x9b,0xdd,0xe1,0x1b,
- 0x8d,0x1d,0x7b,0x0e,0x70,0xb4,0xe1,0x76,0x55,0xb4,0x95,0x76,0xda,0x5e,0x7f,0xfd,
- 0x75,0x24,0x71,0xfb,0xf6,0x17,0x5e,0xc3,0x59,0xfc,0xcf,0x9f,0xe4,0x9f,0x1c,0x3b,
- 0xd2,0x66,0xf7,0x6f,0x9f,0xfe,0x00,0x7e,0x71,0x87,0xf1,0x77,0x8d,0x15,0x08,0x94,
- 0x27,0xbf,0x6f,0xac,0x2c,0xb2,0x78,0xc0,0x88,0x34,0xbe,0x8e,0x0c,0x1e,0x7e,0xed,
- 0xf6,0x73,0x3b,0x1f,0xdf,0xd8,0x07,0x36,0x74,0x46,0xa3,0xf4,0x4e,0xbb,0x6b,0x83,
- 0x3b,0x66,0x71,0xfa,0x7c,0x85,0x7c,0xfc,0xb3,0xcb,0xfc,0x23,0xc6,0xc0,0x62,0x00,
- 0x29,0xc3,0xcf,0x45,0xfa,0x69,0x5c,0x34,0x92,0xdd,0x45,0x9e,0x63,0x5c,0xe4,0x7b,
- 0xa5,0xcd,0x48,0x8a,0x20,0x83,0x07,0x08,0x83,0x0b,0x5b,0xae,0xbc,0xff,0x95,0x0d,
- 0xa3,0xb0,0x2d,0xad,0xff,0xb2,0x59,0x2a,0x13,0x60,0x57,0x76,0x2a,0x11,0x1a,0x0b,
- 0x85,0xa6,0x59,0x52,0x9a,0xce,0x76,0x8c,0x8d,0x85,0xc6,0x7c,0xa5,0x25,0x4e,0xd4,
- 0xa2,0x0e,0x8c,0x1c,0x6a,0x2a,0x72,0x9f,0xda,0xb5,0x42,0xaa,0xe1,0x8b,0xa1,0x13,
- 0xd2,0x59,0x67,0xc2,0x8f,0x55,0xfd,0xc5,0xbc,0x50,0x28,0x52,0xd1,0x4d,0x62,0x1d,
- 0xb3,0x55,0xeb,0xf9,0x82,0x81,0x24,0xd9,0x2d,0xab,0x5d,0x05,0x67,0x82,0x55,0x25,
- 0x16,0x88,0x19,0xda,0x26,0x73,0x81,0x9a,0x55,0x1b,0x98,0xee,0xa7,0x85,0xc6,0x2c,
- 0x15,0x96,0xb7,0x2c,0xb6,0xcc,0x2d,0xb6,0x04,0x16,0xe7,0x8c,0x73,0x8b,0xb8,0x05,
- 0x5a,0x02,0x01,0x7c,0x2f,0x06,0xe6,0x16,0x49,0xb2,0x25,0x30,0x47,0x3e,0xf9,0x41,
- 0xfc,0xa4,0xc7,0x28,0xd3,0x28,0xc3,0x36,0x46,0xe0,0xb9,0x47,0x37,0xa0,0x6f,0x8c,
- 0xdc,0x15,0xfc,0x65,0xb7,0xa4,0x15,0xa0,0x7b,0x17,0xbb,0x5b,0x71,0x8c,0x91,0xaa,
- 0x44,0x0a,0x94,0x2d,0x93,0x7a,0x4b,0x93,0x94,0x2b,0xfb,0x57,0x9b,0xb1,0x38,0xcf,
- 0x8f,0x45,0x12,0x65,0xc3,0xd5,0x03,0x97,0x76,0xf9,0x56,0xfd,0x03,0x8f,0xbf,0xa2,
- 0x97,0xaa,0x75,0xbe,0x06,0x08,0x4f,0xb3,0xc5,0x7f,0x5c,0xdb,0x12,0xcd,0xc9,0x38,
- 0x7f,0x34,0x3b,0xc1,0x29,0x0f,0xcd,0xd2,0xa1,0xb4,0x55,0x58,0x96,0xda,0x16,0x91,
- 0xa2,0x16,0xca,0x8e,0x71,0xae,0xa5,0x05,0xc9,0x6a,0x09,0xb4,0x50,0xe2,0x8c,0xc8,
- 0x26,0x39,0x64,0x2c,0x52,0x48,0x8f,0x52,0x2a,0x17,0x89,0x0e,0x8d,0x28,0xc1,0xfb,
- 0x16,0x5e,0xbb,0x72,0x7a,0xe4,0xea,0xfc,0x35,0xb9,0x3a,0xad,0xae,0x74,0xbb,0x94,
- 0xd4,0x10,0x28,0x15,0xce,0xd3,0x2e,0xe9,0x58,0x5e,0xb2,0xb7,0x8a,0xde,0xfd,0x37,
- 0xdb,0xae,0xea,0x91,0xb3,0x34,0x1b,0x9c,0xa5,0x7b,0x26,0x7e,0xd7,0x5a,0x2a,0x62,
- 0x98,0xe5,0x66,0xe9,0x03,0x70,0x39,0xc5,0x9d,0xed,0x2f,0xf6,0x5f,0xe6,0x98,0xa9,
- 0xd4,0x5f,0x84,0xde,0x25,0x34,0xcb,0x6f,0xb2,0x72,0x58,0x74,0xd4,0xe8,0x30,0x6b,
- 0xc9,0x14,0x17,0xba,0xcc,0x5f,0x7e,0x7a,0x57,0x5b,0x61,0x8a,0xde,0x2a,0xac,0x63,
- 0xed,0x71,0xf6,0xb1,0x66,0x5c,0xaa,0xb0,0x0c,0x3b,0xe7,0x5a,0x8c,0x84,0xab,0x16,
- 0x26,0xb7,0x45,0xc2,0x18,0x61,0xd0,0x48,0xb8,0x63,0x94,0x19,0x8b,0x6f,0xb6,0x51,
- 0x0a,0x71,0xa6,0x07,0x08,0x81,0x87,0x50,0x81,0x27,0xaf,0x4a,0x9f,0xc1,0x35,0x9c,
- 0x4a,0x59,0xf7,0x63,0x04,0xd1,0x5c,0x8b,0x4b,0x55,0xbb,0x68,0xab,0x67,0xf8,0x94,
- 0xb2,0xb0,0x1e,0xca,0x69,0x7e,0x94,0x91,0x64,0xea,0x4b,0xf8,0x0c,0x63,0x0d,0xf4,
- 0xd9,0x19,0x46,0x60,0x67,0x95,0xa1,0x95,0x1d,0x9a,0xd1,0x7d,0x4d,0xa7,0xd3,0xd9,
- 0xa0,0x6b,0x2a,0xcb,0xfb,0x6f,0xea,0xd3,0xf9,0xd9,0xe6,0xaf,0xf0,0x98,0x96,0x48,
- 0x83,0x5c,0xb2,0x0e,0x79,0xce,0x1f,0xb9,0x27,0x12,0x94,0x02,0xaf,0x2f,0xdb,0x69,
- 0x65,0x9d,0x8e,0xdc,0x41,0x5a,0x1c,0xe0,0x06,0x5a,0x23,0xce,0x9e,0x2d,0x94,0x9d,
- 0xab,0x5c,0xb1,0xd4,0x46,0xb9,0xe2,0x1c,0x51,0x95,0x2d,0x32,0x32,0x71,0xe3,0x74,
- 0xd1,0xcf,0x40,0x0b,0xd7,0x1f,0x27,0x31,0x40,0xdd,0x60,0x1b,0x2a,0x70,0xcb,0xff,
- 0x5c,0x35,0x84,0xe4,0xad,0xb1,0xe6,0x58,0xca,0x15,0xc5,0x08,0x5c,0x12,0x60,0x92,
- 0x4f,0x29,0x3b,0xe7,0xcf,0x1b,0x61,0x71,0x9c,0x5d,0xa4,0x64,0x98,0xc1,0x7d,0x89,
- 0x2a,0x6f,0x26,0xec,0xcd,0xfa,0x09,0x81,0x26,0x72,0x9b,0x25,0xb8,0x0a,0x3e,0xfa,
- 0xe4,0x8c,0xac,0xcb,0xf6,0x5a,0x2c,0x96,0xde,0x3c,0x24,0x77,0x59,0xc6,0xf8,0x8d,
- 0xcb,0x2b,0x11,0x0b,0x83,0xb3,0xe2,0x4a,0xd1,0xdb,0xcb,0xac,0x73,0x2f,0x90,0xb3,
- 0xf8,0x29,0x7f,0x6c,0x48,0xaa,0x76,0xb1,0x1b,0x5f,0xed,0xfd,0xd3,0xac,0xf6,0x14,
- 0xe5,0xaf,0x8a,0xd1,0x6a,0xa2,0x8c,0xd5,0x84,0xd8,0x43,0x9d,0x13,0xb0,0x0a,0x5b,
- 0x02,0x8c,0x3d,0x42,0x10,0x9b,0xa8,0xb8,0x17,0x50,0x69,0x22,0x07,0x56,0xeb,0x8f,
- 0x6d,0xc4,0x0d,0x22,0x81,0xdb,0x17,0x6e,0xff,0xdb,0xab,0xd0,0x67,0x4a,0xa5,0x7a,
- 0x9a,0xde,0x4a,0xc5,0xd3,0x65,0x0e,0x50,0x99,0x66,0x13,0x56,0x7d,0x1a,0x10,0x5d,
- 0x92,0x5c,0xec,0xa1,0xb5,0x8f,0xca,0xcf,0x94,0x38,0x3f,0x15,0xd9,0x65,0xb1,0x39,
- 0x22,0x21,0xc2,0x99,0x9f,0xf8,0xc6,0x74,0x61,0x85,0x91,0xe5,0x8f,0xd4,0x84,0xc3,
- 0x61,0xaf,0x03,0xa0,0x90,0xaf,0xf2,0xb3,0xf2,0x63,0x11,0x6f,0x4d,0x8d,0x37,0x5c,
- 0xe3,0x75,0x56,0xfc,0xca,0x13,0xe6,0xfc,0x75,0xb2,0x64,0x93,0x85,0xd1,0x41,0x9f,
- 0x18,0x83,0x08,0x6b,0x89,0xa7,0xc1,0x59,0x43,0x4c,0x86,0xc3,0xf4,0x52,0x49,0x1d,
- 0xe0,0x20,0x21,0x33,0x69,0xe0,0x45,0xd6,0xb8,0x88,0x7a,0xc4,0x48,0xb9,0x33,0x6a,
- 0x94,0x85,0x19,0x8c,0xc1,0x16,0x23,0xe1,0x72,0x4e,0xa5,0x93,0xd2,0xd6,0xc2,0x4a,
- 0x2d,0x92,0x32,0x18,0x9c,0x0f,0xb4,0x1d,0xda,0xbe,0xe5,0x5b,0x57,0xe1,0xcf,0xd0,
- 0xd9,0x3c,0x6a,0xcb,0xf5,0x58,0xd3,0x18,0x81,0x93,0x45,0xf9,0x2b,0x7c,0xc2,0xce,
- 0xf2,0x16,0x65,0x78,0x0f,0x53,0xe4,0x98,0x93,0x3e,0x43,0x2b,0xf7,0xf9,0x7a,0x70,
- 0xd1,0x9d,0xaa,0x0a,0x3b,0x0a,0xf4,0x20,0xb9,0x53,0x3b,0xca,0xbd,0xbd,0x2e,0xc6,
- 0x80,0x7a,0xcd,0x84,0x1d,0xbb,0xc8,0x7c,0x6c,0xa8,0x4e,0x11,0x5c,0x26,0xef,0x8a,
- 0x69,0x86,0xd6,0x65,0xd5,0x3a,0xa2,0x7a,0x7a,0x8c,0x26,0xf3,0x34,0xa5,0xba,0x8e,
- 0x1c,0x37,0x19,0xa3,0xbf,0x12,0x29,0xdc,0x23,0x93,0xc7,0x27,0x21,0x15,0x62,0x4f,
- 0x0a,0x57,0xad,0xa6,0x0f,0x94,0xb6,0x80,0x51,0x9d,0xaa,0x34,0x82,0x90,0x8f,0x40,
- 0x31,0x8a,0x68,0xf4,0x47,0x75,0xc9,0xb2,0xb0,0xc8,0x22,0x0d,0x2f,0x24,0x88,0xdc,
- 0x77,0x78,0xe1,0x2a,0x13,0x38,0x9c,0x6a,0x7a,0x26,0xf3,0xcc,0x44,0xbd,0xde,0x5c,
- 0x36,0x81,0x2d,0x11,0x1a,0x03,0x55,0x97,0xf4,0x4c,0x96,0xf1,0x47,0x5c,0xd2,0x70,
- 0x82,0x7a,0xee,0x59,0x1f,0xe3,0x56,0xca,0x84,0x6b,0x0c,0xa4,0xfd,0x33,0xee,0x52,
- 0x58,0x0c,0x95,0x3a,0x20,0x4d,0x66,0x1c,0xe7,0x09,0xe3,0xd9,0x75,0x57,0x98,0x36,
- 0x6e,0x9d,0x07,0xa1,0xbb,0xb3,0x6c,0xfe,0x86,0xcb,0x5a,0x52,0xf1,0xfb,0x46,0x6f,
- 0x84,0x69,0x8e,0x34,0x62,0x9a,0x95,0x9f,0x3d,0xb2,0x96,0xf1,0x3d,0x45,0xfd,0x51,
- 0x95,0xb5,0xd0,0x65,0x8c,0xaa,0xbf,0xa2,0x22,0x55,0xfd,0x19,0x79,0x1e,0x9d,0xe3,
- 0x64,0x2d,0x73,0x60,0x19,0x67,0xf0,0xe7,0xd7,0xe7,0xef,0xad,0x98,0xad,0x66,0x32,
- 0x9c,0xbb,0x3b,0x8e,0x2b,0x18,0xcd,0x0c,0x0e,0x47,0x98,0x24,0xf8,0x6d,0xcb,0x79,
- 0xf6,0x2c,0x38,0x7d,0xfc,0xcf,0x6b,0xa0,0x2e,0xce,0xae,0xae,0x59,0x92,0x11,0x47,
- 0xd5,0x0c,0xef,0x7e,0x17,0x8f,0x96,0x3a,0x4d,0x07,0xdc,0xd3,0x8e,0xb0,0x93,0x04,
- 0x88,0xca,0xc5,0x59,0x89,0x3f,0xfe,0x70,0xfb,0x28,0x4b,0xa6,0x74,0x6c,0xbc,0x59,
- 0x79,0xd5,0x75,0x58,0xcb,0xeb,0xa8,0x1e,0x99,0x3c,0xb4,0xc3,0x9f,0x4c,0xd7,0xad,
- 0xf9,0x03,0xdc,0x4e,0xad,0x77,0x6b,0x99,0x53,0x43,0x09,0xe5,0x4c,0x13,0x7b,0x35,
- 0x25,0xd4,0xa0,0xdc,0x42,0xa3,0x08,0xce,0xe0,0x85,0x3f,0x5a,0x97,0x3e,0x39,0x56,
- 0xed,0xb0,0x44,0x2c,0xcf,0x54,0x5b,0xd3,0x18,0x41,0xa4,0xe2,0xef,0xe1,0x99,0x72,
- 0x97,0x94,0xe3,0xeb,0x95,0x27,0x50,0x4f,0xd9,0x0e,0x9a,0x28,0x2d,0x82,0xf5,0x85,
- 0x49,0x2a,0x80,0x42,0xc9,0xad,0xdb,0xb5,0x33,0xd4,0x5c,0xf5,0x8c,0x77,0xc5,0x2e,
- 0xb3,0xa7,0x6a,0xd6,0x42,0x13,0xb7,0xce,0x1f,0xb2,0xb6,0xf2,0x24,0x9b,0x8e,0x61,
- 0x4b,0xc9,0x75,0x68,0x50,0x33,0x5d,0x8c,0x39,0x13,0x7c,0x81,0xb4,0xf6,0xf8,0x5c,
- 0xd0,0x04,0x57,0x1e,0x39,0x5a,0x68,0x28,0x61,0x81,0x39,0xc0,0xdf,0xc6,0x62,0x58,
- 0x69,0x09,0x18,0x35,0x14,0x06,0x02,0x6d,0x7f,0xb9,0xfd,0xc9,0x75,0xf9,0x33,0xa5,
- 0x9a,0x6a,0x0a,0xe7,0x23,0xe1,0x89,0x94,0x8b,0x0a,0x50,0x55,0x60,0xbe,0x97,0xcd,
- 0x89,0x19,0x1d,0x85,0xea,0x00,0x32,0xe4,0xa1,0x89,0x31,0x1a,0x0e,0x2e,0x17,0x5b,
- 0xa8,0x58,0xbc,0x09,0x92,0x85,0x8b,0x45,0x29,0xc2,0xd6,0x3d,0xa6,0xb2,0xb9,0x9a,
- 0x2e,0xd8,0xbc,0x06,0xfb,0x1a,0xf1,0xb1,0x33,0x6b,0xf0,0x6b,0xac,0xdb,0xd9,0xc9,
- 0xf8,0x2d,0xe3,0xfc,0xc9,0x3a,0x07,0x8f,0xc6,0x0d,0x3a,0x15,0x74,0x4c,0x1d,0x7c,
- 0x82,0x78,0x73,0xa3,0x09,0x5e,0xbe,0x42,0xa1,0x1c,0x77,0x2e,0xf2,0x90,0x1b,0x60,
- 0x34,0x1a,0xf9,0x64,0xe5,0xe1,0x57,0x15,0x5c,0xf1,0x7b,0xae,0x18,0x80,0x89,0x33,
- 0x9c,0x23,0x21,0xe4,0xc7,0xdf,0x5b,0x97,0xbf,0x99,0x54,0xce,0x72,0xfe,0xcc,0x79,
- 0x4b,0xee,0x6e,0x8c,0x20,0xee,0x2e,0x45,0x0d,0x21,0x36,0xde,0xea,0x0a,0xd4,0x60,
- 0x9f,0x0b,0xd4,0xbb,0xcb,0x9a,0x18,0x3a,0xd1,0x4b,0x25,0x69,0x72,0x93,0x0b,0x15,
- 0xe6,0xd6,0xcb,0xa7,0x92,0xb5,0xca,0x36,0x49,0x7c,0xa4,0xa9,0x42,0x44,0xc3,0xa5,
- 0xe5,0xf6,0x1a,0xf0,0xad,0xd3,0x12,0xba,0x2e,0xcc,0x5b,0xfc,0x15,0xc5,0xe5,0xe9,
- 0x35,0x7f,0xc3,0xac,0x0b,0xb4,0xa8,0xdc,0xb4,0x14,0x99,0x2a,0xb1,0x56,0xcc,0x53,
- 0xbf,0xf0,0x13,0x6b,0xb0,0x17,0xa5,0x33,0xb0,0x7c,0xe8,0xe8,0xba,0xd7,0xc0,0xfe,
- 0xd4,0x13,0xd3,0xfd,0x06,0x5f,0xc4,0x31,0x31,0xec,0xba,0xd4,0x4e,0x66,0x30,0x53,
- 0x4e,0xd3,0x74,0x48,0xf3,0x07,0x2c,0x8a,0x7f,0xa3,0x02,0x2f,0x37,0x8f,0x44,0x7e,
- 0x4d,0xd7,0x7b,0x1a,0x85,0x75,0x66,0xa9,0x24,0x65,0xbc,0x7e,0xb0,0xf0,0xb0,0x58,
- 0xd1,0x95,0x58,0x24,0xdf,0x9b,0x30,0x69,0x9c,0x26,0x43,0x3c,0xb2,0x62,0x22,0xe6,
- 0x4b,0xcd,0xd3,0x9e,0xcc,0x40,0xcb,0x8c,0x5a,0xd4,0x96,0xd0,0xbf,0xea,0x81,0x1f,
- 0xe4,0xd9,0x2c,0xc8,0x45,0x8a,0xd9,0xac,0x92,0x87,0xfc,0x10,0xb2,0x06,0x7f,0x3b,
- 0xbe,0xaf,0xa5,0x2e,0xc0,0xc3,0xeb,0x9c,0x3a,0xa1,0x99,0x36,0xcb,0x3c,0xa0,0xb1,
- 0x85,0xd1,0xca,0x60,0x0c,0x2c,0xbf,0xb4,0x37,0xe8,0x59,0x07,0x7d,0x29,0x5b,0xc4,
- 0x37,0x96,0x40,0x01,0xc6,0xd0,0x03,0x9a,0xdd,0xea,0x22,0xa6,0x27,0x32,0xc6,0xff,
- 0xd6,0x85,0x0e,0xaf,0x17,0xc8,0x1f,0x27,0xa1,0x49,0x74,0x71,0xa9,0x69,0xdf,0xff,
- 0xb7,0x73,0xfe,0x31,0x6d,0x5c,0x77,0x00,0x2f,0x23,0x2c,0xcd,0x0d,0x29,0x6c,0x66,
- 0x4d,0xd5,0x45,0xaa,0xa9,0x5b,0x9b,0x90,0x46,0x4a,0x9b,0x55,0x48,0x07,0x9c,0xab,
- 0x35,0x5b,0x07,0x0d,0x14,0x95,0x0e,0xea,0x0a,0xe1,0x4c,0xb3,0xbc,0x5a,0x49,0x6b,
- 0x05,0x7b,0x5a,0xb4,0x2d,0xd5,0xa4,0xfc,0x31,0x6d,0x19,0x71,0xb4,0x69,0x6b,0x94,
- 0x36,0x26,0xaa,0x32,0xc9,0x57,0x8d,0x06,0x31,0x1b,0xbb,0x06,0x2a,0x36,0xa0,0x56,
- 0x7a,0xaa,0x2a,0x57,0x1b,0x12,0x95,0xe9,0xb6,0x2e,0x51,0x40,0x5a,0x16,0xab,0x62,
- 0x33,0xd1,0xc0,0xdb,0xf7,0xfb,0x7e,0x9c,0xcf,0x10,0x08,0x99,0xba,0xfe,0xf5,0xfd,
- 0xbc,0x77,0xef,0xee,0x7d,0xdf,0xf7,0x7d,0xef,0xf9,0xeb,0xf7,0xee,0xde,0x3b,0xff,
- 0x60,0xfe,0xb3,0xf4,0xb0,0x6a,0x8d,0xf5,0x05,0xbc,0x59,0x8b,0xd9,0x46,0xdf,0xda,
- 0x85,0x94,0xcb,0x09,0xd3,0xc4,0x94,0xf8,0x71,0xb5,0xc9,0x4b,0x95,0x6e,0x1d,0x6c,
- 0x07,0x92,0x72,0x89,0x92,0x0c,0xb0,0x93,0xa9,0xec,0x64,0x6c,0xa1,0x76,0xd7,0x25,
- 0x27,0xbf,0x5e,0xf4,0xa9,0x58,0x08,0xad,0x51,0x62,0xfc,0x0d,0xd6,0xe5,0x3f,0x9b,
- 0xa0,0x38,0xc9,0xaa,0xa8,0xb7,0xf8,0x10,0xa2,0x56,0xdc,0x26,0xe4,0x3c,0x1a,0x73,
- 0x3c,0xc3,0xaf,0x6f,0xd3,0x72,0xd0,0x4e,0x97,0x7c,0x86,0xd2,0x69,0x51,0x30,0x7d,
- 0xe4,0xed,0xbf,0xff,0xee,0xe6,0x46,0xfe,0x53,0x1f,0x6e,0xa8,0x2c,0x2c,0x06,0xfd,
- 0x95,0xcd,0xdd,0x30,0x87,0x1e,0xf4,0xf0,0x6b,0x60,0x7a,0x65,0x28,0xc2,0x2e,0x69,
- 0x7d,0xa9,0x40,0x11,0xe7,0xfc,0xa3,0x95,0xfc,0x45,0x68,0x30,0xe6,0x7a,0xf9,0xca,
- 0xc9,0xd2,0xd4,0x0e,0x3e,0x7f,0xc5,0xc9,0xa2,0xbc,0x2d,0xf6,0xac,0x7d,0x19,0x0d,
- 0xbe,0xe6,0x22,0xce,0xa3,0x75,0xeb,0xdc,0x79,0x30,0x12,0x62,0x4b,0x8a,0x88,0x70,
- 0x91,0x62,0xc0,0x1a,0x63,0xd4,0x59,0x69,0xe3,0x93,0x48,0xfe,0x9f,0x15,0xe2,0x91,
- 0x44,0x06,0x5a,0xc2,0x56,0x20,0x11,0xf6,0x90,0x60,0x9b,0x78,0x83,0x53,0x41,0x26,
- 0x8e,0xf8,0x59,0xa3,0x6c,0xeb,0x9f,0xa5,0xed,0x39,0xb2,0x7f,0xba,0xe4,0x18,0xcb,
- 0xe8,0x45,0x2f,0x09,0xef,0x1d,0xd9,0x2f,0x9d,0xc6,0xae,0x79,0xa5,0x0a,0x15,0xd3,
- 0xd3,0x9d,0x9d,0x47,0x9e,0x7b,0x63,0x23,0xf7,0xf5,0xa5,0xba,0x1b,0x22,0x05,0x45,
- 0xd1,0xef,0x77,0x36,0x0c,0x5d,0xe8,0x81,0x4b,0x20,0x38,0xd0,0xbb,0xb2,0x92,0x9e,
- 0x2c,0xda,0x78,0xab,0x83,0x11,0x1f,0x83,0xaf,0x2b,0xe0,0x92,0x54,0x1d,0xe1,0x13,
- 0xb2,0x1b,0xa5,0x26,0xc6,0xf8,0x02,0x03,0x7f,0x84,0x2a,0xe7,0x3d,0xeb,0x46,0x92,
- 0xd7,0x17,0xba,0x9c,0xc5,0x99,0x88,0xe5,0x19,0xd8,0x5d,0x75,0xc6,0x0e,0xab,0xf5,
- 0x8c,0xe2,0xe6,0x59,0xb1,0xb6,0x65,0x9a,0xf2,0x91,0x44,0x4a,0xb6,0x04,0x17,0x35,
- 0xcc,0xad,0x5c,0x0c,0xab,0x1a,0xdf,0x8e,0xd0,0x92,0x18,0xe5,0x17,0xd6,0xf9,0xef,
- 0xc5,0xe9,0x4d,0xd8,0x5f,0xb1,0x7f,0xbd,0x4c,0x38,0xae,0xa2,0x02,0x52,0x4c,0x3a,
- 0xaf,0x6c,0x32,0x7f,0x71,0xdd,0xa8,0xb4,0x2d,0x27,0x95,0x44,0x71,0xc7,0x8d,0xa1,
- 0x8e,0x1e,0x1c,0xc2,0x5d,0xe0,0x41,0xb8,0x4b,0xf0,0x56,0x87,0xd9,0xa2,0x61,0xb2,
- 0x3b,0xcb,0x9f,0xa2,0xe8,0xb8,0x72,0xf7,0xe1,0x95,0xac,0x2f,0x68,0xfa,0x61,0x25,
- 0xce,0x06,0x4f,0xc6,0x96,0x66,0xb7,0x45,0x66,0x77,0x68,0xdd,0xeb,0xf0,0xf6,0x86,
- 0x7c,0x1a,0xf6,0xd3,0xa2,0xac,0x08,0x93,0xa5,0x0b,0xcc,0xfa,0xb6,0x38,0x9f,0x75,
- 0x27,0x87,0xf8,0xd9,0x0c,0xb1,0xb6,0x65,0x5d,0xb5,0xde,0xcd,0x5b,0xe2,0x9f,0x94,
- 0xb0,0x4b,0xc0,0x64,0x65,0x81,0x8f,0x08,0x26,0x72,0xb9,0x7b,0xb9,0xff,0x46,0xd7,
- 0x9e,0x76,0xe5,0x6b,0x7f,0x01,0x77,0xbc,0x72,0xe4,0x8b,0x47,0x3a,0x65,0x97,0xea,
- 0x14,0xfe,0x61,0x61,0x83,0x23,0xb9,0x03,0x0e,0x9f,0x3a,0xf5,0xc0,0x86,0xfe,0xeb,
- 0x6b,0x8e,0xf5,0xda,0x94,0x5c,0x32,0xe8,0x8f,0x5c,0x76,0x4d,0x82,0x03,0xf7,0x41,
- 0x17,0x04,0x0f,0x0e,0x67,0xd9,0x55,0x0e,0xe6,0x10,0x6c,0x44,0xc8,0x75,0x85,0x02,
- 0xb7,0x17,0x5f,0xc8,0x60,0xc3,0x35,0x06,0xc7,0x2c,0x76,0xf0,0x6b,0x63,0x2a,0x04,
- 0xba,0x4b,0x11,0xb9,0xf6,0x4f,0x63,0x19,0x06,0x54,0xc1,0xbb,0x92,0xc7,0x88,0x64,
- 0x15,0x34,0xea,0x83,0xec,0x0a,0x93,0xa5,0xb9,0x75,0x8f,0xa1,0xf1,0x87,0x51,0xdc,
- 0xb3,0x69,0x39,0x09,0xaa,0x43,0x23,0xd5,0x59,0xfe,0x48,0x42,0xe3,0x73,0xd3,0x15,
- 0xfc,0x9c,0x06,0xae,0xd1,0xf2,0x0d,0x76,0xa3,0x30,0x7d,0xd7,0xa4,0xce,0x2f,0xa1,
- 0x7e,0x2c,0xe3,0x01,0xcf,0x01,0xbb,0x77,0xc0,0x05,0x4f,0xfe,0xa8,0xd6,0x5b,0xfb,
- 0xa5,0xf3,0xe8,0x0d,0xe6,0x92,0x8a,0x0a,0xd1,0xbb,0xa6,0x6f,0x71,0xc4,0x54,0xa6,
- 0x57,0x2b,0x2a,0x56,0x51,0x71,0x61,0x61,0xe1,0xb1,0xc7,0x36,0x59,0x7f,0x64,0x2f,
- 0xf9,0xfc,0x8a,0xaa,0x2e,0xeb,0x5a,0xef,0x92,0xeb,0x89,0xfa,0xe1,0x29,0xe8,0x82,
- 0x57,0x3d,0x9e,0x9e,0x2c,0xbf,0x06,0x69,0xde,0x34,0x06,0x8f,0x11,0x16,0x43,0x2a,
- 0xed,0x9d,0x8c,0xc0,0x5c,0x24,0x83,0x93,0x91,0x34,0xfe,0x1f,0x52,0x7a,0x90,0xff,
- 0xe2,0x2f,0xa3,0xd6,0x43,0x21,0xdc,0x16,0x59,0x2e,0x06,0x37,0xf2,0x34,0xaf,0x0b,
- 0x2a,0x69,0x4c,0xbc,0x53,0x87,0xf8,0x8d,0x21,0xb3,0x04,0x6e,0x49,0xb3,0x72,0xae,
- 0xd2,0xe5,0x16,0xd6,0xbb,0x78,0x5e,0x4e,0x82,0xa6,0x40,0x27,0x3d,0xa5,0xf1,0x77,
- 0xd2,0xef,0xe5,0xfa,0x60,0x0a,0xab,0x0e,0xbb,0xf9,0x32,0x48,0x43,0x99,0xf9,0x1e,
- 0xf6,0x1d,0x82,0x42,0x50,0xe4,0x67,0x66,0xf1,0x7c,0xc5,0xf4,0xb1,0x6b,0x9f,0xfb,
- 0xee,0xdb,0xdf,0x3f,0xd6,0xf8,0x68,0x45,0x39,0xab,0xb7,0x38,0x2e,0x97,0xad,0x2e,
- 0xb4,0xb6,0x46,0x5f,0x7f,0xed,0xcc,0xc6,0xfe,0x73,0x74,0x87,0xee,0x0f,0xa8,0xe0,
- 0xc0,0x44,0xdc,0xb9,0xe4,0x1a,0xea,0x18,0xae,0x9e,0xda,0x07,0x83,0xb8,0x47,0xe3,
- 0x8f,0x8d,0x13,0x5e,0xc6,0x55,0xb1,0x2e,0xb3,0x43,0xd7,0xf4,0x14,0x43,0x95,0x8b,
- 0xec,0x16,0xdc,0x5c,0xe7,0xf5,0x76,0x4d,0x8a,0x79,0x98,0xaa,0xe1,0xc0,0x8f,0x15,
- 0xf9,0x38,0x6a,0xf6,0x76,0xf1,0x9a,0xde,0xae,0x29,0x93,0x6d,0xf2,0x1f,0xc6,0x2e,
- 0x79,0xcb,0xf0,0xb8,0xb9,0x75,0x15,0xec,0x5d,0x83,0xd8,0xcb,0xfd,0xd7,0x57,0x8d,
- 0x36,0x06,0x45,0x4b,0x82,0xd5,0x60,0xe1,0xa5,0xa9,0x29,0xd8,0x61,0x1d,0xf9,0x06,
- 0x1f,0x42,0x41,0x75,0x87,0xf8,0x65,0x59,0x46,0xf3,0xf2,0xbf,0x3e,0x32,0x79,0xab,
- 0x73,0xe1,0x9d,0xda,0xf3,0x4f,0x5e,0x59,0x7d,0xe5,0xe5,0x97,0x1b,0x3f,0xbf,0xba,
- 0xba,0x5a,0xc1,0x7a,0x16,0xee,0xf9,0xb6,0xb0,0x6a,0x61,0xa1,0x62,0x81,0xc9,0x17,
- 0x40,0xbc,0x80,0xb4,0x46,0x67,0x27,0x0e,0x7c,0x65,0x63,0xf7,0xc1,0xa2,0xa9,0xc1,
- 0x48,0xe4,0xec,0x76,0x55,0x29,0xc4,0x9d,0xcd,0xb1,0xa1,0xdd,0xf5,0x3d,0xd0,0xa0,
- 0x7f,0xf6,0xc4,0x79,0xab,0x03,0x1e,0x06,0x8c,0x5f,0xfe,0xb8,0x08,0x46,0xb7,0x67,
- 0x5b,0xd1,0x17,0x67,0x03,0xb1,0x4f,0xf5,0x1b,0x72,0x72,0xab,0x2a,0x93,0x50,0xd4,
- 0xe5,0x12,0xfe,0xf3,0x79,0x24,0x3d,0x36,0xdd,0x7e,0x34,0x95,0x4a,0xe1,0x26,0xe7,
- 0x79,0x01,0x4f,0x19,0x57,0xc5,0xc3,0xd0,0xa3,0x53,0x2c,0xdb,0x35,0x5a,0xe4,0xff,
- 0x92,0x76,0x01,0x73,0x83,0x61,0xf1,0x01,0x40,0x26,0x95,0xc1,0x98,0xc9,0xd8,0x50,
- 0x0c,0xc3,0xba,0x24,0x36,0x27,0x90,0xea,0x65,0xcf,0x1a,0x7e,0xb3,0xd0,0x79,0xed,
- 0xc9,0x57,0xbc,0xe7,0x17,0x8e,0xed,0x39,0xfc,0xe8,0x8b,0x87,0x17,0xee,0x04,0xe8,
- 0x7b,0xd1,0x9d,0x13,0xcf,0x3c,0xf3,0xe0,0x66,0xfe,0x33,0x5c,0x4e,0xff,0xb2,0x6a,
- 0xb7,0xe7,0x94,0x82,0xd6,0x7b,0xf9,0x27,0xdd,0x43,0x17,0xea,0xa1,0x0f,0x0e,0x8b,
- 0x77,0x3d,0x59,0x77,0xb0,0x0e,0xa3,0xe8,0x7f,0x99,0xea,0x83,0x90,0xc3,0x87,0x98,
- 0x4a,0xd9,0xa7,0x12,0x29,0x55,0x77,0xc2,0xb8,0xaf,0xab,0xfb,0xd8,0xe0,0xd3,0x8a,
- 0x48,0xdd,0x41,0x11,0x86,0x35,0xdb,0xba,0x0f,0x40,0x1c,0x75,0x75,0xac,0x4c,0x24,
- 0x83,0xd2,0xfa,0xf0,0x55,0x26,0x19,0x29,0xf2,0x49,0xe4,0x36,0xcc,0x0c,0x86,0xf3,
- 0x6b,0xea,0x2b,0x83,0x50,0x47,0x0e,0x90,0xb2,0x56,0xe4,0x94,0xfa,0x3a,0x8e,0x3c,
- 0xfb,0xe0,0x73,0xad,0xef,0xed,0x69,0x3d,0xd5,0x78,0xfe,0x4a,0xe3,0x7b,0xad,0x87,
- 0x1b,0xaf,0xb4,0x72,0x06,0x2c,0x29,0xee,0xc4,0x51,0x39,0x03,0xd1,0xd9,0x9d,0x13,
- 0x1f,0x8c,0x7f,0xf4,0x78,0xfb,0x66,0xfe,0xb3,0x5f,0x6a,0x36,0x82,0xd0,0x01,0xa1,
- 0x07,0x26,0xc2,0x11,0xdf,0x92,0x6b,0xdb,0xe4,0xee,0xfa,0xfa,0xfa,0x70,0x58,0xc5,
- 0x37,0xd6,0x21,0x86,0x9e,0x11,0x4f,0xb2,0xf7,0xb9,0x03,0x33,0x3d,0x06,0x38,0x50,
- 0x57,0xcd,0xee,0x94,0xb1,0x27,0x0b,0x5a,0x35,0xd3,0xeb,0xce,0x26,0xec,0xa0,0x96,
- 0x32,0xcc,0x41,0x3b,0x9c,0xf7,0xab,0x99,0x12,0xcc,0x8a,0xa3,0x7a,0xaa,0x8c,0x62,
- 0x96,0x5b,0xff,0x17,0xcf,0x8e,0x18,0x0a,0xcb,0xc6,0x58,0x2e,0xcf,0x5b,0x52,0x22,
- 0xd9,0x83,0x6d,0xd0,0x84,0xd9,0x94,0x48,0x52,0x29,0x55,0xd1,0x9d,0x53,0x6b,0xf8,
- 0xf9,0x40,0xf4,0x9d,0xef,0x44,0x4f,0x79,0xef,0xde,0x93,0x3e,0x76,0x38,0x5a,0xfb,
- 0xa7,0x81,0x81,0xe8,0x40,0x14,0x18,0x60,0x1b,0x0b,0x48,0x94,0x6d,0x66,0xca,0x75,
- 0xc0,0x7b,0xc7,0xc7,0x7f,0x3d,0x33,0xf3,0xc9,0x66,0xee,0xeb,0xeb,0x8b,0xdf,0x38,
- 0x0d,0x77,0x10,0x7b,0xca,0x9e,0x5b,0x0e,0xfa,0xb3,0xce,0x50,0x43,0xac,0x1b,0xe6,
- 0x11,0x79,0x4d,0x5f,0xc4,0x95,0x41,0xfd,0x70,0x0f,0x86,0xa2,0x51,0xc0,0x95,0x41,
- 0x72,0x88,0x65,0x77,0x1b,0x95,0xa3,0x86,0x3f,0x00,0x95,0xb0,0xed,0x6a,0x52,0xf7,
- 0xe7,0x77,0xb3,0x82,0xe1,0x6e,0x2d,0xaf,0xe3,0xe7,0x14,0x1a,0xcb,0x61,0xbc,0x10,
- 0xd6,0xf4,0x00,0x47,0x11,0x5b,0x40,0xe9,0x60,0x85,0x32,0x19,0xae,0x74,0x27,0x98,
- 0xf5,0x6e,0x2e,0xf2,0x15,0x6d,0x4c,0xab,0x99,0x15,0x6b,0xf1,0xc4,0x62,0xc0,0x82,
- 0x12,0xe8,0x00,0x69,0x7d,0x38,0xab,0x2b,0x8b,0x01,0xfe,0x89,0xca,0x22,0x46,0xdd,
- 0xe6,0x8f,0x77,0xf0,0xd6,0x4a,0xcb,0x3d,0xc3,0xf7,0x46,0x67,0xef,0xf9,0x73,0xf4,
- 0xb1,0xc6,0x7b,0x7e,0xf0,0x8f,0xda,0x6f,0xce,0xd6,0x3e,0x35,0x3b,0x1b,0xdd,0x39,
- 0x1b,0xc5,0x84,0xa5,0x6c,0xdb,0x69,0xee,0x67,0x4b,0xdb,0xce,0x89,0x89,0x13,0x1f,
- 0x8c,0x3f,0x32,0xb3,0xeb,0xc3,0x4f,0x36,0xed,0x7e,0xd0,0xeb,0x1b,0x9a,0x0d,0x3d,
- 0x69,0x07,0x07,0xaa,0xc9,0xc5,0x42,0xd8,0xed,0xdc,0xb1,0xd4,0xe0,0xfa,0x38,0x9f,
- 0x65,0x5f,0x96,0xd5,0xe5,0x94,0xac,0x98,0xcd,0x42,0xd6,0xd6,0xc0,0xb3,0x0f,0xbb,
- 0xfd,0x91,0xac,0xe6,0xd7,0x71,0x3d,0x15,0x2c,0xf8,0x6d,0x59,0xa1,0x36,0x19,0x0b,
- 0x1b,0xf1,0xac,0x06,0x75,0xcd,0xd9,0xda,0x90,0xdf,0x9d,0x15,0xdf,0xe0,0xcd,0x62,
- 0xc4,0xcc,0xa1,0xee,0xc9,0x32,0xdc,0xe5,0xd6,0x9d,0x06,0xcb,0xe6,0x7d,0x2c,0x97,
- 0x2f,0xf2,0x4a,0x26,0x36,0x7c,0x92,0xfd,0x84,0x10,0x67,0x35,0xb1,0x8b,0x67,0x4b,
- 0xad,0x30,0xf9,0xe3,0xc4,0x89,0x13,0xf7,0x36,0x1e,0x78,0xe8,0xda,0x53,0x07,0x1e,
- 0x7a,0xeb,0x9e,0x37,0xae,0xbd,0x36,0x31,0x71,0x1c,0xe2,0x89,0x13,0x13,0x98,0x4e,
- 0x40,0x80,0x23,0xcc,0xc0,0xfe,0x38,0x66,0x27,0x58,0x72,0xe2,0x38,0x30,0xfe,0xc3,
- 0x47,0x66,0x3e,0xbc,0x7e,0xfd,0x57,0xcf,0x6e,0xee,0x3e,0x58,0xf4,0xb8,0x7c,0xda,
- 0x7d,0x0e,0x7b,0x2a,0x05,0x17,0xc1,0x64,0xb0,0xa0,0x19,0x11,0x58,0x2b,0xe8,0x40,
- 0x42,0x4f,0x28,0x0d,0x31,0x57,0xcc,0xe5,0x72,0x69,0x98,0x49,0xe8,0x01,0x9f,0x0b,
- 0xf3,0xb1,0x58,0xcc,0x59,0x38,0xa4,0x85,0xc3,0x79,0xbf,0x3f,0x9f,0x4f,0xe8,0x4e,
- 0xa6,0x84,0xf1,0xd5,0xc5,0x84,0xce,0x02,0xd4,0xe1,0xb2,0x1b,0xac,0x66,0x81,0xc5,
- 0x04,0x33,0x92,0x00,0xab,0x52,0x9f,0x19,0x77,0x69,0x4c,0x45,0x0f,0x8e,0xb0,0x6c,
- 0x6c,0x14,0xaa,0x80,0xb6,0xee,0x66,0xc5,0x36,0x66,0xa0,0x84,0x1e,0x78,0x15,0xeb,
- 0x09,0x53,0x52,0xa8,0x27,0xfc,0x3e,0xb3,0x15,0xfc,0xdc,0xc0,0x33,0xe3,0xe3,0xdb,
- 0xb7,0xdf,0xfd,0xd7,0x03,0xb5,0x07,0xf7,0xd4,0x3e,0xfd,0xfc,0x8f,0x7f,0x3f,0xfe,
- 0x9f,0xf1,0xed,0x2c,0xa0,0x7c,0x9c,0xb3,0x7d,0x9c,0xe7,0x2d,0x61,0x1c,0x7d,0x07,
- 0xce,0x6b,0xaa,0xaa,0xea,0x7f,0xf3,0xec,0xed,0xfc,0xd7,0x17,0x69,0x70,0xe6,0x83,
- 0x49,0xfb,0x4d,0xb8,0x43,0xaa,0x0e,0x65,0xb1,0x90,0x0f,0x67,0x23,0x95,0x91,0xd1,
- 0xd3,0xbd,0x4e,0xe7,0x88,0x58,0x33,0xf9,0xd8,0x3a,0x75,0xc4,0x29,0x72,0xb8,0xec,
- 0x32,0x0a,0x4a,0x00,0x07,0x8e,0xee,0xf6,0xed,0xf0,0xf9,0xca,0xf4,0x2c,0xf5,0x4c,
- 0x09,0x70,0x1a,0x2d,0x58,0xcd,0xf8,0x42,0xa6,0x0e,0x2b,0x30,0xab,0x8c,0x58,0xb4,
- 0x30,0x33,0xc2,0x2a,0x4b,0x03,0x25,0x1d,0x96,0x9c,0x2e,0x09,0xd7,0xf0,0xc0,0x49,
- 0xe4,0xf9,0xda,0x6f,0x7c,0x34,0x33,0x33,0xf3,0xf8,0xb7,0x0e,0x3e,0x3e,0x73,0x52,
- 0x30,0x73,0x72,0x17,0x26,0x10,0x67,0xc4,0x9e,0xb1,0x0b,0xf7,0xbb,0x4e,0xee,0xda,
- 0xf5,0xe1,0x9b,0xe0,0xbc,0xb1,0xb6,0xb1,0xb1,0x73,0xb7,0x19,0xbd,0x48,0xc6,0xb7,
- 0x14,0xf1,0x2f,0x3a,0x60,0x08,0x43,0x1f,0x54,0x61,0x14,0x07,0x0b,0x05,0x7f,0x3e,
- 0xac,0x69,0xf1,0xfb,0xb5,0x78,0x3c,0x1b,0x8f,0xe3,0x18,0x89,0x23,0xb0,0x63,0x41,
- 0x63,0x49,0x56,0x03,0x25,0x5e,0xc8,0x02,0x26,0x71,0xbe,0x69,0x59,0x8c,0x9c,0x38,
- 0xaf,0xcb,0x6a,0x6b,0x62,0xcf,0x07,0x39,0xd3,0x81,0x2d,0xce,0xe5,0x68,0xa2,0x94,
- 0xc3,0x53,0xb3,0xb3,0xf0,0x63,0x8d,0xcb,0x85,0xd4,0x34,0x19,0xe7,0xdf,0xf3,0x67,
- 0x8a,0xbc,0x09,0xdc,0x24,0x6e,0x5f,0x68,0x42,0xaa,0x9a,0x7e,0xba,0xef,0xe9,0xdf,
- 0x7e,0xf9,0x67,0xfb,0xfe,0xf6,0x00,0x1c,0x5b,0xc0,0x4c,0x3f,0xa4,0x18,0x44,0x14,
- 0x0a,0x55,0x55,0x63,0x63,0x6d,0x2d,0x40,0x5b,0xff,0xfc,0xed,0xdd,0x87,0x33,0xe1,
- 0xa5,0x08,0xf4,0xc0,0x17,0xe0,0x7e,0x80,0xa3,0x18,0x5c,0xb8,0xac,0x2c,0x2e,0xe2,
- 0x97,0x4e,0x74,0x19,0xe4,0xce,0x14,0x94,0x95,0x95,0x44,0x96,0x02,0xab,0x8a,0x69,
- 0x44,0x96,0x94,0xb2,0x42,0x8d,0x7f,0x69,0x46,0x2f,0xb3,0x2c,0x4f,0x1c,0x2c,0x55,
- 0xb4,0x9c,0xbb,0xd4,0x9e,0xf2,0x56,0xc9,0xfd,0x7d,0x2d,0x7b,0x31,0xec,0x6d,0x69,
- 0x79,0xf6,0x17,0x0f,0xef,0xfe,0xf8,0xf4,0xb7,0x5b,0x78,0x76,0x2f,0xd0,0x32,0x0f,
- 0xc7,0x2c,0xd3,0x22,0xa5,0x98,0xe5,0x85,0x50,0x3a,0x3f,0x7f,0x06,0xb6,0xb6,0xaa,
- 0xb6,0xad,0xb8,0x0f,0xff,0x36,0x65,0xa9,0x37,0xac,0x2f,0xab,0x2f,0xe0,0x34,0xf7,
- 0x28,0x73,0xa1,0x9a,0x53,0x73,0x39,0x47,0x4e,0xa2,0xb2,0xd4,0xa1,0x62,0x44,0xb1,
- 0x03,0x82,0xa9,0xa0,0x8a,0xd4,0x54,0xe7,0x4a,0x0e,0x2e,0xc2,0x52,0x5e,0x43,0x15,
- 0xaa,0x2a,0x2b,0x74,0x70,0x3d,0x59,0x0b,0x04,0x0e,0x07,0x2f,0xc9,0x99,0x12,0xeb,
- 0x69,0x1d,0xaa,0x45,0xb5,0x74,0x6a,0x69,0xd7,0x61,0x36,0x43,0x18,0x7d,0xbf,0xa6,
- 0x7d,0xae,0x66,0xae,0xa6,0xbd,0x46,0x32,0x27,0xe2,0xfb,0xb8,0x13,0x39,0xa4,0x9d,
- 0xeb,0xb4,0xf3,0x80,0xc7,0xed,0xed,0xed,0x67,0xce,0xcc,0xb7,0x8d,0xb5,0x6c,0xf5,
- 0x2b,0xd0,0x19,0xb8,0x06,0x1a,0xfe,0x20,0x4e,0xa4,0x99,0x07,0x53,0x70,0x3b,0xde,
- 0x9c,0xdb,0x95,0xdf,0x46,0xef,0x16,0xe2,0xad,0x5a,0xdc,0x22,0x67,0xcf,0xde,0x84,
- 0xc0,0x92,0xa3,0x17,0x59,0x6a,0x4a,0xf8,0xc1,0xcd,0x8b,0x67,0x21,0xf0,0x1c,0x66,
- 0x70,0x8f,0xe9,0xc5,0x8b,0x73,0x73,0x73,0x35,0x67,0xf6,0xb6,0x55,0xbd,0xbb,0x45,
- 0xef,0x21,0xf9,0x86,0x50,0x24,0x6c,0x0b,0x2e,0x3b,0xd4,0xff,0xcb,0xab,0xf9,0xac,
- 0xb9,0x69,0x3a,0x8f,0x7b,0x4c,0x64,0xce,0x96,0x49,0x85,0xd2,0xcd,0xb3,0xd6,0x80,
- 0xee,0x43,0xef,0x8d,0x35,0xbd,0x70,0x7b,0xaf,0x59,0xc7,0x70,0x64,0xc9,0x17,0x81,
- 0x39,0x5d,0x50,0x59,0x4e,0xb2,0x41,0xe1,0x60,0x83,0x18,0x70,0xb0,0xc1,0x2c,0xf2,
- 0xa5,0xc0,0x4a,0x73,0xa6,0xd0,0xc4,0xac,0x67,0x26,0x0e,0xa1,0x9a,0x53,0x73,0x52,
- 0xd7,0x61,0x4a,0xf0,0x00,0xab,0x38,0x2c,0xd6,0xb8,0x80,0x1f,0x9a,0x96,0x73,0x66,
- 0x2b,0x54,0x8b,0x75,0xa6,0x21,0x54,0x1d,0x66,0x4b,0xde,0xc7,0x2e,0xc4,0x37,0x33,
- 0xe2,0x60,0x9e,0x9b,0x2b,0x15,0x48,0x6a,0x4a,0x7b,0x8c,0xed,0x35,0x30,0x72,0xdb,
- 0xaa,0x9a,0xe6,0xef,0xf8,0x87,0x5c,0xc9,0xde,0xa5,0x1d,0xce,0xa2,0x96,0xb7,0x15,
- 0x12,0x41,0xcb,0x97,0x20,0xb7,0x8c,0xbe,0xbe,0xd2,0x46,0x46,0xee,0xd0,0xf8,0x1d,
- 0xa9,0xeb,0xf7,0xbd,0x6b,0xde,0x27,0x24,0x2d,0xb7,0x08,0x82,0x79,0x79,0x34,0xcf,
- 0xf4,0xda,0xda,0xda,0xc6,0xaa,0x9a,0xae,0xb7,0x7c,0xf5,0x4e,0xbd,0xc7,0xfa,0x60,
- 0x21,0x12,0x0a,0x8d,0x38,0x2b,0x8b,0x45,0xb7,0x81,0x13,0x01,0x43,0xce,0x06,0x3e,
- 0x2d,0x8c,0x72,0x63,0x9f,0xa6,0x69,0xc1,0xbf,0xff,0xd0,0xdf,0xcf,0x26,0x21,0xfd,
- 0xa5,0xd8,0x6f,0x39,0x6a,0x12,0xbb,0xd2,0x6c,0x45,0x6a,0x0b,0xae,0x7f,0xfd,0xfa,
- 0x58,0xfb,0xff,0xfe,0x23,0xc2,0xd4,0x62,0xc2,0xaf,0xb9,0xc1,0x83,0x88,0xbb,0x28,
- 0x30,0x64,0x14,0x9b,0x9b,0x97,0xb9,0x65,0x21,0x1e,0x72,0x05,0x77,0x49,0xc0,0x0f,
- 0x4c,0x1b,0x5c,0x2c,0x8d,0x18,0x56,0xa9,0xd0,0x75,0x5b,0xaa,0x95,0xb4,0xdc,0xb2,
- 0xcc,0xd2,0x02,0xf7,0x9a,0x16,0x71,0xfd,0xef,0xfd,0xf2,0xc1,0x73,0x4d,0xe7,0x9a,
- 0xca,0x58,0x93,0x5d,0xc7,0x39,0x8c,0xe7,0xb8,0xde,0xb9,0xa6,0xfe,0xb6,0x96,0x33,
- 0x73,0x9f,0xc5,0xdf,0x19,0x13,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,
- 0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,
- 0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,
- 0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,
- 0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,0x10,0x04,0x41,
- 0x10,0x04,0x41,0x10,0x5b,0xe6,0xbf,0x9f,0xe5,0x54,0xe2,0x36,0x30,0x01,0x00,
diff --git a/board/esd/hh405/logo_640_480_24bpp.c b/board/esd/hh405/logo_640_480_24bpp.c
deleted file mode 100644
index c042b6b7de..0000000000
--- a/board/esd/hh405/logo_640_480_24bpp.c
+++ /dev/null
@@ -1,4209 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0xc2,0xbb,0x0b,0x40,0x00,0x03,0x48,0x6f,0x6c,0x7a,0x2d,0x48,
- 0x65,0x72,0x5f,0x64,0x74,0x5f,0x33,0x43,0x5f,0x36,0x34,0x30,0x5f,0x34,0x38,0x30,
- 0x5f,0x32,0x34,0x62,0x70,0x70,0x2e,0x62,0x6d,0x70,0x32,0x00,0xec,0xdd,0x09,0x58,
- 0x56,0x55,0xfe,0xc0,0x71,0x67,0x46,0x4d,0x51,0x01,0xd9,0x71,0x21,0x0b,0x5c,0x73,
- 0xdf,0xcd,0xdd,0x4c,0x4d,0x65,0xb1,0x5c,0x13,0x97,0xd2,0x6a,0xfe,0x93,0xa2,0xa9,
- 0xa5,0x36,0x35,0x8d,0xe5,0x56,0xa9,0x65,0x8b,0xb2,0xa9,0x28,0x8b,0x0a,0x4e,0x69,
- 0x8a,0x1b,0x6e,0xa0,0xa0,0x36,0xb9,0x2f,0x61,0x66,0xa9,0x60,0x08,0x2e,0xec,0x28,
- 0x4b,0xff,0xe7,0xff,0x7b,0xa1,0xa1,0xd7,0x7b,0xee,0x7d,0x79,0xe1,0xdf,0xf2,0x3c,
- 0xcd,0xd7,0xe7,0x23,0x4f,0xca,0xb9,0xe7,0x9e,0x7b,0xee,0x39,0xf7,0x77,0x7e,0xe7,
- 0xbd,0xd8,0x00,0xef,0xae,0xf6,0xb6,0xd5,0x4c,0xbf,0xba,0xca,0xef,0x16,0xf2,0xfb,
- 0x9f,0x7f,0xae,0x56,0xed,0xea,0x9f,0xaa,0x55,0xfb,0x53,0x35,0xb7,0xd2,0xbf,0xaf,
- 0x26,0xdf,0xf7,0x6c,0x5b,0xad,0xf4,0xf7,0x7f,0x7e,0x95,0xfc,0x6f,0x09,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x54,0x7b,0xf7,0xed,0x5b,0xf9,0xf1,0xc7,0x1a,0x1b,0xa3,0xa3,0x73,0xf3,0xf3,0x8b,
- 0x4b,0x7e,0xff,0xe6,0x01,0x00,0xf0,0x87,0x34,0x71,0xe2,0x73,0xd5,0xff,0x5c,0x5d,
- 0xa3,0x6b,0xe7,0xae,0xe9,0xb7,0x32,0x7e,0xf7,0xb6,0x01,0x00,0xf0,0x47,0x35,0xc1,
- 0x28,0xfe,0x66,0xa4,0xff,0xee,0x6d,0x03,0x00,0xe0,0x8f,0xca,0x7f,0xc2,0x64,0x9d,
- 0xf8,0xdb,0xa5,0x5b,0xda,0xcd,0xb4,0xdf,0xbd,0x6d,0x00,0x00,0xfc,0x51,0xe9,0xee,
- 0x3f,0x77,0xee,0xd4,0x25,0xfd,0x16,0xf9,0x2f,0x00,0x00,0xbf,0x96,0xf1,0x13,0x26,
- 0xe9,0xe6,0xbf,0x19,0x7c,0xfe,0x0b,0x00,0xc0,0xaf,0x86,0xfc,0x17,0x00,0x80,0xdf,
- 0x9e,0xfe,0xfb,0xcf,0xe4,0xbf,0x00,0x00,0xfc,0x9a,0x78,0xff,0x0a,0x00,0x80,0xdf,
- 0x9e,0x6e,0xfc,0xed,0xd2,0xa9,0x0b,0x3f,0x7f,0x04,0x00,0xc0,0xaf,0x67,0x9c,0xff,
- 0x44,0x3e,0xff,0x05,0x00,0xc0,0x82,0xc2,0xe2,0xc2,0xdb,0x77,0xef,0x5c,0xbc,0x94,
- 0x7c,0x28,0x3e,0xfe,0xb3,0xad,0x5b,0xd7,0x85,0x85,0x05,0x06,0x05,0x7f,0xf4,0xf1,
- 0x27,0xc1,0x21,0xa1,0x11,0x91,0x91,0xb1,0xbb,0x76,0x1e,0xff,0xf2,0xf8,0xf7,0xd7,
- 0xaf,0x16,0xdc,0x2f,0xb0,0xbe,0xce,0x0a,0x3f,0xff,0x2d,0xfe,0xb1,0xf8,0x66,0x46,
- 0x7a,0xd2,0xb1,0x63,0x31,0x5b,0xb6,0xac,0x0a,0x0a,0xfe,0xf8,0x93,0x4f,0xe5,0xbc,
- 0xdb,0x63,0x63,0x4f,0x9d,0x39,0x9d,0x95,0x9d,0x25,0xdf,0xad,0xfa,0xe5,0x14,0x15,
- 0xa6,0x65,0xa4,0x7f,0x75,0xea,0xe4,0xee,0xbd,0x7b,0x36,0x84,0x87,0xaf,0x0e,0x0c,
- 0xfa,0x78,0xd5,0x27,0x21,0xa1,0xa1,0x91,0x1b,0x37,0xee,0x89,0xdb,0x7b,0xe2,0xd4,
- 0x49,0xf9,0xae,0x94,0xb1,0x50,0x43,0x5e,0x41,0x41,0x7e,0x41,0x7e,0x4e,0x5e,0x6e,
- 0xd5,0xc8,0xb1,0x79,0xf9,0x79,0xf7,0xee,0xdf,0x53,0xfb,0x59,0xfe,0x5e,0x68,0x0a,
- 0x17,0x95,0x14,0x59,0xbe,0xa2,0xfb,0x45,0xf7,0xaf,0xa5,0xa6,0xc4,0x27,0xc4,0x47,
- 0x44,0x45,0x7d,0x1a,0xb8,0x3a,0x28,0x38,0xe4,0xf3,0xad,0x9f,0x9f,0x3c,0x7d,0xea,
- 0xd6,0x9d,0xdb,0x9a,0x92,0x05,0xf7,0x0a,0x44,0x59,0xb5,0x65,0xf5,0xcb,0x1f,0xd5,
- 0x0a,0xe5,0x8c,0xb9,0xf9,0xda,0x0b,0x94,0x43,0x74,0xbb,0x5d,0x0a,0xab,0xbd,0x21,
- 0xd5,0x16,0x97,0x18,0xde,0x23,0xa9,0x27,0x4f,0x3a,0xc1,0x74,0x94,0x5c,0x6c,0x5e,
- 0xd9,0x55,0xcb,0x1f,0x2d,0x77,0x7b,0xc1,0xbd,0x7b,0xa5,0xe5,0x1f,0x68,0x52,0x85,
- 0xa3,0xae,0xa8,0xa4,0x58,0x6e,0xe8,0xb1,0x2f,0x8f,0xcb,0x40,0x92,0xbb,0xfc,0x69,
- 0xe0,0xaa,0x4d,0xd1,0xd1,0x49,0x47,0x93,0x6e,0xa4,0xdd,0xd0,0x76,0x63,0xe1,0xfd,
- 0xdc,0xd2,0x66,0xe4,0x96,0xdf,0xa6,0x02,0x9d,0xca,0xa5,0xf1,0xf2,0xad,0x6b,0xa9,
- 0xd7,0x4e,0x94,0x0e,0xa1,0xc8,0xa8,0xa8,0xa0,0xd0,0x10,0x99,0x0e,0xd2,0xed,0x51,
- 0x1b,0x37,0xee,0x3f,0x78,0xe0,0x62,0xf2,0xd7,0xd9,0xb9,0x39,0x55,0x1e,0xa2,0xd2,
- 0x80,0x6f,0xbf,0xfb,0xee,0x50,0x42,0xc2,0xe6,0x98,0x98,0xc0,0x10,0xd3,0x44,0x93,
- 0xe9,0x16,0xba,0x76,0xcd,0x96,0x7f,0xfd,0x2b,0x6e,0xff,0xbe,0xf3,0x17,0x2f,0xc8,
- 0xbc,0x90,0xa1,0xf2,0x8b,0x8c,0x1c,0xe9,0x70,0xf3,0x1b,0x2d,0x17,0x2e,0x67,0x97,
- 0x7b,0x57,0x54,0xac,0x73,0xa0,0x14,0x2e,0xaf,0xd9,0xfc,0x46,0xeb,0x16,0x2e,0xbb,
- 0xc5,0xe5,0xe5,0xcb,0x6a,0x96,0xee,0xd5,0x2d,0xfc,0xc0,0xfd,0x2a,0x96,0xb1,0x97,
- 0x57,0x7e,0x96,0xb2,0xaf,0x79,0x06,0x63,0xcf,0xc8,0xdd,0xac,0xcc,0xe4,0x6f,0x2f,
- 0xef,0x3f,0x70,0x60,0x73,0x74,0xf4,0x9a,0xb5,0xeb,0xe4,0xe9,0x21,0xd3,0x5c,0x26,
- 0xfb,0xe7,0xdb,0xb6,0x25,0x1e,0x4d,0xfa,0xfe,0xda,0x55,0xa9,0xb0,0xc2,0x4a,0x64,
- 0x86,0xfe,0xdc,0x80,0xfc,0xbc,0xb2,0x56,0xa9,0xd3,0x56,0x25,0x87,0x68,0x66,0x84,
- 0x74,0xf2,0xbd,0xc2,0xfb,0x55,0x1b,0x0f,0xf8,0xef,0x94,0x7f,0x2f,0xff,0xc4,0xa9,
- 0xd3,0x1b,0x22,0x23,0x67,0xcc,0x98,0xf9,0xc4,0xc0,0x81,0x8f,0xb5,0x6a,0xdd,0xb0,
- 0x41,0x23,0x87,0xfa,0x8e,0xf5,0xea,0xd6,0xab,0x6b,0x53,0xd7,0xa6,0xb6,0x4d,0x9d,
- 0xda,0x75,0x6c,0xeb,0xd9,0x3a,0x39,0x3a,0x37,0xf1,0x68,0xd2,0xb1,0x63,0xc7,0x89,
- 0x93,0x26,0x85,0xae,0x5b,0x73,0xf9,0xca,0xb7,0xf7,0x0a,0x2b,0x1e,0xa2,0x16,0xde,
- 0x7f,0x96,0x89,0x96,0x72,0x23,0x25,0x30,0x28,0x48,0x4e,0xda,0xe4,0xe1,0x47,0x1c,
- 0xec,0x1d,0x6c,0xe4,0x57,0x6d,0x1b,0x39,0xaf,0xb3,0xa3,0xb3,0x97,0x67,0x53,0x1f,
- 0x5f,0xdf,0x55,0x41,0x41,0x29,0x37,0x52,0x2b,0x7c,0xbc,0x98,0x93,0x6a,0x33,0xb3,
- 0x33,0x63,0x77,0xef,0x9d,0x35,0x67,0x4e,0xaf,0xde,0xbd,0x3d,0x1f,0xf1,0x74,0x75,
- 0x71,0xb3,0xab,0x67,0x27,0x57,0x21,0x95,0xcb,0x15,0xd9,0xd9,0xda,0xbb,0xb9,0xb8,
- 0x79,0x3e,0xea,0xd5,0xab,0x57,0xef,0xe9,0x01,0x33,0x24,0x84,0xfd,0x70,0x33,0x4d,
- 0x42,0x9b,0xa6,0x1e,0x09,0x6a,0x2f,0xbc,0xf8,0x92,0x8f,0x9f,0xb4,0xc2,0x6f,0xb8,
- 0x8f,0xb7,0xf9,0x57,0xf9,0x2b,0x6f,0x5f,0x9f,0xb2,0xaf,0xe5,0xff,0x21,0x5f,0x35,
- 0xc5,0xfc,0xfc,0x46,0x78,0x7b,0xfb,0xcc,0x98,0xf9,0x4a,0xfe,0x83,0xb1,0x4f,0x9e,
- 0xae,0x23,0x47,0x8d,0xf2,0xf1,0xf3,0x35,0x3f,0x76,0xc4,0x88,0xa7,0xaf,0x5c,0xbd,
- 0x62,0x74,0x51,0xd2,0xd5,0xc7,0x8e,0x1f,0x7f,0x6d,0xee,0xbc,0x6e,0xdd,0x7b,0xc8,
- 0xdd,0xb1,0xb7,0xb3,0x97,0xae,0x92,0x6b,0x71,0xa8,0xef,0xe0,0xe5,0xd5,0x74,0xd8,
- 0xb0,0xe1,0xe1,0x91,0x91,0x69,0xe9,0x69,0x65,0xcf,0x2e,0x79,0x02,0x04,0x04,0xcc,
- 0x90,0x4a,0x4d,0x35,0xfb,0xfd,0xd4,0xc8,0x79,0xf3,0xe7,0x6b,0x1e,0xe6,0xa6,0x96,
- 0xc4,0xc5,0x8d,0x78,0x7a,0xa4,0xe6,0x8a,0x26,0x4e,0x9a,0x7c,0x31,0x39,0x59,0x6d,
- 0x43,0xdc,0xbe,0xb8,0x67,0x9e,0xd1,0x2d,0xfc,0xb5,0x51,0xb3,0x2f,0x7f,0x77,0x65,
- 0xea,0x8b,0x2f,0x4a,0x1b,0xa4,0xb0,0x89,0x4f,0xe9,0x57,0x3f,0xdf,0x5d,0x71,0xbb,
- 0x8d,0x0e,0xb9,0x5f,0x54,0x38,0x77,0xde,0x3c,0xf3,0x53,0x94,0x1e,0xe2,0xf3,0xee,
- 0x7b,0xcb,0xf2,0x0a,0xf2,0x74,0x0f,0x91,0xeb,0xfa,0x3a,0x39,0x79,0xd9,0xf2,0xe5,
- 0xfd,0xfb,0x0f,0x28,0x1b,0x48,0x75,0x6c,0xea,0x08,0xe9,0x25,0x8f,0xc6,0x1e,0x3d,
- 0x7b,0xf5,0x5a,0xf1,0xe1,0x87,0x97,0x2e,0x5f,0x2e,0x1f,0x45,0xcb,0x56,0x7c,0x20,
- 0xb7,0xa6,0xac,0x7f,0xca,0xba,0xe8,0xf9,0x29,0x53,0x7e,0xb8,0x79,0xc3,0xac,0x0d,
- 0xf7,0x0f,0xc4,0x27,0xbc,0xf5,0xcf,0x05,0xa3,0xc6,0x8c,0xee,0xd4,0xa9,0x93,0x0c,
- 0x15,0x17,0x67,0x57,0x7b,0x5b,0xfb,0xba,0x75,0xea,0x96,0x0d,0x21,0xa9,0xd9,0xdd,
- 0xad,0x41,0xcb,0x16,0xad,0x7c,0xfd,0xfc,0x3e,0x5c,0xb9,0x32,0xf9,0xf2,0x25,0x6b,
- 0xe6,0x42,0x19,0x69,0x46,0x6a,0xda,0x8d,0xe8,0x98,0x98,0x67,0xc7,0xfb,0xb7,0x6f,
- 0xdf,0xa1,0x51,0xc3,0xc6,0xf5,0xed,0xea,0x4b,0x6b,0x4d,0x13,0xad,0xb4,0xd9,0xf2,
- 0x47,0x37,0x57,0xf7,0xe6,0xcd,0x5a,0xf4,0xed,0xdb,0x4f,0xda,0x90,0x95,0x93,0x55,
- 0x7e,0x6c,0x42,0x52,0xe2,0xe8,0x31,0x63,0x34,0x23,0x47,0xae,0xe5,0xdc,0x85,0x0b,
- 0x96,0x4f,0x1a,0xbd,0x65,0x8b,0x77,0xe9,0x2d,0x90,0xe2,0x3f,0x75,0xa9,0x8f,0xef,
- 0x8b,0x2f,0xfd,0xf5,0xca,0xd5,0xef,0xd5,0xc2,0x07,0x0e,0x25,0x48,0x31,0x53,0x49,
- 0x9f,0x9f,0x07,0xbf,0xff,0xa4,0x89,0x67,0xce,0x9d,0x53,0x0b,0x9f,0x3e,0x7b,0x6e,
- 0xe4,0x48,0xd3,0xa8,0x30,0x0d,0x0c,0x9f,0x11,0xc3,0x7d,0x4d,0xc3,0x7e,0xec,0xb8,
- 0x67,0x65,0xdd,0x6b,0xb9,0x49,0xdb,0x77,0xec,0x90,0xe1,0x54,0x76,0xa2,0xa1,0xde,
- 0xc3,0xe4,0x28,0xa9,0xc1,0x7f,0xc2,0xc4,0x6b,0xd7,0xaf,0x57,0xd8,0x87,0x32,0x12,
- 0xce,0x9e,0x3f,0x2f,0xb7,0x55,0xe6,0x57,0xeb,0xd6,0x6d,0x1b,0xb8,0x35,0x90,0x4e,
- 0xfb,0xe9,0x61,0x65,0x53,0xc7,0xb6,0xae,0xad,0xa3,0x83,0x53,0xe3,0x46,0x1e,0x1d,
- 0xda,0x77,0x94,0x53,0x7c,0x1a,0x14,0x24,0x85,0x73,0x0d,0x06,0x8f,0x04,0xe8,0xb7,
- 0x17,0x2e,0x32,0x8d,0x04,0x1f,0x9f,0xb2,0x39,0x3b,0xdc,0xdb,0x74,0xbd,0x0b,0xde,
- 0x7e,0xc7,0x72,0xec,0x96,0x59,0x36,0x65,0xca,0x54,0x39,0xca,0x7c,0xee,0xfb,0x8c,
- 0xf0,0x0b,0x59,0xb3,0x46,0x7d,0x98,0x00,0x46,0x76,0xc7,0xed,0x71,0x71,0x76,0xa9,
- 0x59,0xbd,0xa6,0x1a,0x28,0x8d,0x48,0xe1,0x66,0xcd,0x5b,0xbc,0xb5,0x60,0x41,0xf2,
- 0x37,0x97,0x2c,0x57,0x6e,0x94,0xff,0xde,0x4c,0xbf,0xf9,0xd5,0x89,0x13,0x7d,0xfa,
- 0xf6,0xa9,0xfd,0x50,0x6d,0x0b,0x27,0x7a,0xa8,0x66,0xad,0xde,0xbd,0xfb,0xc4,0xee,
- 0xdc,0x69,0xe5,0xaa,0x52,0xb2,0xa4,0xad,0xdb,0xb7,0xc9,0x83,0xa6,0x6e,0xdd,0xba,
- 0x56,0x5e,0x4b,0xed,0x5a,0xb5,0xbb,0x77,0xef,0x21,0x73,0xf9,0x6e,0xd6,0x5d,0xf3,
- 0xaa,0xae,0xa7,0x5c,0x6f,0xd6,0xac,0xb9,0xf5,0x7d,0x62,0xa4,0x5d,0xfb,0x76,0x99,
- 0xd9,0x3f,0x3f,0x42,0x25,0x44,0x06,0x87,0x86,0xca,0xb3,0x42,0x7b,0xa5,0x35,0x1e,
- 0x92,0xa7,0x84,0xee,0x45,0xa5,0xdd,0x4c,0x5b,0xb2,0x74,0xa9,0xab,0xab,0x9b,0x85,
- 0xb3,0xd8,0xd4,0xb2,0x79,0xf2,0xc9,0x41,0x87,0xe2,0x0f,0x49,0x30,0xba,0x9b,0x95,
- 0xd5,0xa8,0x51,0x63,0x4d,0x81,0x41,0x83,0x86,0xdc,0x57,0xfa,0x30,0x30,0x38,0x50,
- 0xce,0xab,0x29,0xe9,0xee,0xde,0xf0,0x48,0x52,0x92,0xda,0x8c,0x90,0xd0,0x35,0x6a,
- 0x61,0x89,0x14,0x87,0x13,0x13,0x8d,0x6e,0xc7,0x89,0xd3,0x27,0x3d,0x1f,0xf5,0x54,
- 0x5b,0xbb,0x2a,0x28,0xd8,0xe8,0x10,0x49,0x40,0x64,0x5d,0xa4,0x1e,0x32,0x66,0xcc,
- 0x18,0xf3,0x48,0x54,0x2e,0x37,0x3f,0x77,0x43,0x78,0x44,0x8b,0xe6,0x2d,0x2c,0x0c,
- 0x60,0x69,0xb6,0x44,0x3a,0x49,0x60,0x0b,0x4a,0x93,0x1a,0xe9,0x0a,0x4d,0x01,0x2f,
- 0x2f,0x2f,0xb9,0xdd,0xe5,0x75,0xde,0xc9,0xbc,0x33,0xf0,0xc9,0x81,0xd6,0xcf,0x05,
- 0xaf,0x66,0xcd,0x16,0x2d,0x59,0x9a,0x7a,0x43,0x9b,0x68,0xeb,0xb5,0x36,0x2f,0x62,
- 0x63,0x54,0x8f,0xc7,0x7b,0xca,0xa8,0xb3,0xa6,0xf2,0x96,0x2d,0x5b,0xa5,0xde,0x48,
- 0x2d,0x3f,0x7c,0x73,0x4c,0xb4,0x6d,0x3d,0x3b,0xb5,0x58,0x42,0xe2,0x61,0xcb,0xe7,
- 0x5d,0xbc,0xf4,0x5d,0xf5,0xa8,0xa6,0x9e,0x4d,0x4f,0x9f,0x39,0xa3,0x16,0x0e,0x8f,
- 0x8a,0x50,0x0b,0xcb,0x8d,0xde,0x7f,0xf0,0xa0,0x5a,0x78,0xef,0xbe,0x7d,0x12,0xf5,
- 0x34,0x85,0x65,0xfd,0xfc,0xc5,0xf6,0x1d,0x96,0x9b,0xf4,0xfe,0xf2,0x15,0x6a,0x27,
- 0xc8,0x83,0xe8,0xcc,0x59,0x9d,0x28,0x6f,0x3e,0x7d,0x64,0x51,0xf7,0xf2,0xb4,0x69,
- 0xb2,0xd0,0xb2,0xfe,0x06,0x79,0x78,0x34,0x91,0xc5,0xc6,0xa9,0xb3,0xa7,0xd4,0x0a,
- 0x65,0x6e,0x0e,0xf3,0x1e,0xae,0x1e,0x35,0xe4,0xa9,0xa7,0xcc,0xa7,0xad,0x2a,0x3b,
- 0x37,0xa7,0xc9,0xc3,0x4d,0xd4,0x73,0xcd,0x98,0x39,0xb3,0xc0,0x8a,0xdc,0x19,0x28,
- 0x73,0x30,0x21,0xa1,0xc6,0x5f,0x6a,0x58,0x39,0x98,0xcd,0xd5,0x7e,0xc8,0xa6,0x5d,
- 0xbb,0xf6,0xb1,0xbb,0x76,0x4a,0x06,0x6d,0x54,0xb9,0x6e,0xfc,0xed,0xd4,0xb1,0x73,
- 0x58,0xd8,0xfa,0xf6,0x6d,0x3b,0x58,0x73,0x5e,0x29,0xe3,0xd1,0xf8,0xe1,0x95,0x2b,
- 0x3f,0xba,0x57,0x54,0xc1,0xa8,0x4e,0xb9,0x91,0x3a,0x73,0xd6,0x2c,0x99,0xc2,0x55,
- 0xb8,0x9c,0x86,0xee,0x0d,0x8f,0x1e,0x3f,0xfe,0x40,0x6d,0xa9,0x29,0x5e,0x9e,0x5e,
- 0x55,0xe8,0x16,0x8d,0xb6,0xed,0xdb,0x67,0xe5,0xe4,0x96,0x57,0x5b,0xfc,0x63,0x49,
- 0x68,0xe8,0x3a,0x35,0xfe,0x4a,0x9b,0x75,0xe3,0xaf,0x3c,0x7e,0xc7,0x8d,0x7d,0x56,
- 0x92,0x77,0x6b,0x3a,0x4a,0x1a,0xbc,0x69,0xf3,0x66,0xc9,0x20,0x1c,0x1c,0x1c,0x34,
- 0xdf,0x7d,0x66,0xd4,0x68,0xb5,0xf2,0xa0,0xe0,0x10,0xdd,0x90,0x9a,0x68,0x75,0xfc,
- 0x75,0x71,0x71,0x3d,0x62,0x1c,0x7f,0x25,0x09,0x7a,0xf4,0x51,0x9d,0x3e,0x5c,0x15,
- 0x18,0x68,0x74,0x88,0xc4,0x5f,0x59,0x71,0xa9,0x87,0x8c,0x19,0x3b,0x56,0x7d,0x1e,
- 0x66,0x65,0xe7,0xcc,0x9d,0xff,0xba,0x24,0x3b,0xd6,0x74,0x8e,0xb3,0x93,0xf3,0xd2,
- 0x77,0xdf,0xbb,0x9b,0x95,0xd9,0xb9,0x4b,0x57,0xcd,0x77,0xdb,0xb4,0x69,0x9b,0x96,
- 0xfe,0xf3,0x0b,0x09,0x99,0x39,0x59,0x3e,0xbe,0x7e,0x95,0xba,0xcb,0x75,0xeb,0xd4,
- 0x1b,0x3c,0x68,0xc8,0xe5,0x2b,0x57,0x2c,0x6c,0x9f,0x5e,0xbd,0x76,0x2d,0x20,0x60,
- 0x86,0x43,0x7d,0x47,0xeb,0xc7,0xa7,0xe6,0x4d,0x09,0x49,0x63,0xed,0xf4,0xe2,0x6f,
- 0x7c,0x62,0xbc,0xe5,0xa9,0xb1,0x64,0xe9,0x7b,0xea,0x51,0x5e,0x9e,0x4d,0x4f,0x9d,
- 0x39,0xad,0x16,0x8e,0x88,0x88,0x52,0x0b,0xcb,0xa8,0xd8,0x77,0xf0,0x80,0x5a,0x78,
- 0x4f,0xdc,0x3e,0x75,0x09,0xed,0xe4,0xe8,0xbc,0xed,0x8b,0xed,0x96,0x9b,0xb4,0xe2,
- 0x83,0x0f,0x6b,0x3d,0x54,0x4b,0x73,0xa0,0xdc,0xa3,0xd3,0x67,0xcf,0x1a,0x1d,0x22,
- 0xcf,0x99,0xc8,0xa8,0x8d,0x6d,0xdb,0xb6,0x57,0xc7,0x61,0x85,0xe4,0x90,0x37,0xfe,
- 0xf1,0x96,0xfa,0xff,0x5c,0x93,0x41,0x25,0x49,0xb4,0x5a,0x7e,0xc8,0x50,0x6b,0xe2,
- 0xaf,0x76,0x0d,0x20,0xf1,0x77,0xa6,0x29,0xfe,0x56,0xe2,0x13,0x3a,0xfc,0x97,0x3b,
- 0x77,0xe1,0x82,0x95,0xab,0x71,0x5d,0x8f,0x3c,0xf2,0x48,0xe4,0xa6,0x8d,0x46,0x95,
- 0xeb,0xfe,0xfb,0x57,0xee,0xee,0x0d,0x9a,0x78,0x68,0x97,0x8e,0x96,0x99,0x56,0xd4,
- 0x3b,0x63,0x0b,0x8d,0x3f,0x54,0xba,0x91,0xf6,0xc3,0xd4,0x17,0x5e,0xb2,0x9c,0x4d,
- 0x5b,0xaa,0xdf,0xc9,0x59,0x93,0xf4,0x5d,0x4f,0x4d,0x69,0xfe,0x8b,0xe4,0xbf,0x1d,
- 0x3a,0x5a,0x93,0xff,0xca,0xcc,0x55,0xe3,0xaf,0x04,0xa3,0x39,0x73,0x5e,0x93,0xdc,
- 0xd6,0xfa,0xd3,0xb5,0x7e,0xac,0xcd,0xfa,0xf0,0x08,0xdb,0x7a,0xb6,0x9a,0xbf,0x9f,
- 0xfc,0xdc,0xf3,0x6a,0xa7,0x85,0x84,0xea,0xc7,0xdf,0xa4,0xa3,0x47,0xd5,0xc2,0xa1,
- 0x6b,0xd7,0xaa,0xe3,0xc4,0x94,0xff,0x1e,0x39,0x62,0x74,0x53,0x4e,0x1a,0xe6,0xbf,
- 0x41,0x46,0x87,0x18,0xe5,0xbf,0xa3,0x47,0x8d,0xd6,0xe4,0xbf,0x92,0xe9,0xaf,0x0d,
- 0x0b,0x73,0x74,0x70,0xb4,0xbe,0x73,0xdc,0xdc,0xdc,0x25,0xf4,0x4b,0xb4,0xd5,0xfc,
- 0x7d,0xd7,0xae,0xdd,0xee,0x64,0x66,0x96,0xd7,0x9c,0x93,0x97,0x3b,0xde,0x7f,0x62,
- 0x15,0x56,0x71,0x23,0x47,0x8f,0x91,0x61,0xa3,0x7b,0x5d,0xd9,0xb9,0xb9,0xfe,0xfe,
- 0x13,0xac,0x59,0x47,0x99,0x93,0xae,0xb8,0x75,0xe7,0x56,0x79,0x25,0xd1,0x31,0xfa,
- 0xf1,0x57,0x96,0xd0,0x96,0xe7,0xf8,0xe2,0x25,0x95,0x88,0xbf,0xe1,0x7a,0xf1,0xd7,
- 0xdd,0xad,0xc1,0xc1,0xf8,0x43,0x6a,0xe1,0xb8,0xfd,0x07,0xeb,0xd8,0x68,0x2f,0xca,
- 0xc9,0x94,0xff,0x56,0x10,0x7f,0x75,0xf3,0x5f,0x37,0x57,0x37,0xdd,0x5d,0xee,0x92,
- 0xd2,0x0f,0x05,0xd6,0x6f,0xd8,0xd0,0x58,0xd9,0xd8,0xb1,0xde,0xdc,0xf9,0xf3,0xd5,
- 0x6a,0xb3,0x72,0x72,0xbc,0xbd,0x7d,0xd5,0xc2,0xd6,0xc4,0x5f,0xb5,0x31,0x35,0xaa,
- 0xd7,0x08,0x98,0x1e,0x40,0xfc,0x85,0xf5,0x52,0xd3,0xd2,0x9c,0x9c,0x9c,0xab,0x3c,
- 0xaa,0x45,0xe3,0xc6,0x1e,0x71,0xfb,0xf7,0x17,0xe9,0xbd,0x87,0xa3,0x9b,0xff,0x56,
- 0x4d,0x9b,0x36,0xed,0x4e,0x9e,0xd2,0xd9,0x41,0x2a,0x29,0xfd,0x10,0x67,0xbc,0xff,
- 0x84,0x5a,0x35,0xb5,0xcb,0xe9,0x72,0x32,0xd3,0x1d,0xea,0x3b,0x48,0xb0,0x70,0x71,
- 0x76,0xb3,0xb3,0xb5,0x53,0xf7,0x2a,0x9d,0x9d,0x5c,0x8e,0x3c,0x18,0x74,0x24,0x8b,
- 0xd4,0x8d,0x1d,0x95,0xd5,0xae,0x43,0xbb,0xec,0x9c,0x9c,0xf2,0x6a,0x25,0xfe,0x4a,
- 0x20,0xd3,0xd9,0x7f,0xae,0xa9,0xb3,0xff,0x1c,0xbb,0x6b,0x97,0x1a,0x49,0xcb,0xd4,
- 0xac,0x51,0x53,0x2e,0xc4,0xd5,0xc5,0xcd,0xc9,0xd1,0x49,0xf3,0x1c,0x6b,0xf2,0x70,
- 0x13,0xa9,0x4d,0x53,0x3e,0x60,0xc6,0x4c,0xb5,0xdf,0x8c,0xf2,0x5f,0xdd,0xf8,0x6b,
- 0xb4,0xff,0x5c,0x51,0xfe,0x5b,0xf9,0xf8,0xdb,0xb3,0x97,0x7a,0xc8,0xb8,0x71,0xe3,
- 0x34,0xf1,0xf7,0xfc,0xc5,0x8b,0xcd,0x9b,0xea,0x2f,0x90,0x24,0x74,0x4a,0x9c,0x92,
- 0xce,0x71,0x71,0x76,0xad,0x5b,0xe7,0x81,0xae,0x36,0x7d,0x92,0x6b,0x57,0x5f,0x53,
- 0xbe,0x4f,0x9f,0xbe,0x72,0xde,0xf2,0x9a,0x25,0xcf,0x9a,0x3e,0x3d,0xc0,0x7c,0x90,
- 0xc8,0xba,0xce,0xb1,0xbe,0xe3,0x4f,0x15,0x2a,0xf7,0xae,0x9c,0x8c,0xc0,0x39,0xaf,
- 0xbe,0xaa,0x7e,0xce,0x9e,0x99,0x9d,0x29,0xfd,0x5f,0x85,0xc1,0x33,0x64,0xc8,0x50,
- 0xf3,0x8f,0x45,0x36,0xc7,0xc4,0xe8,0xee,0x3f,0x5b,0xf8,0x08,0xa0,0xcc,0xa2,0xc5,
- 0x3a,0xfb,0xcf,0x86,0xf9,0x6f,0x94,0x6e,0xfc,0x75,0x3f,0x70,0x48,0x67,0xff,0x79,
- 0x4f,0x5c,0x9c,0x9a,0xc6,0x3a,0x3a,0x38,0xed,0x88,0x8d,0xb5,0xdc,0xa4,0x65,0xcb,
- 0x3f,0x50,0x57,0xcb,0x32,0x0d,0x75,0xf3,0xdf,0xa2,0xe2,0xa2,0xa8,0x4d,0x9b,0x2c,
- 0xac,0xb5,0x64,0x64,0xda,0xdb,0xd9,0xcb,0x0d,0x92,0x01,0x29,0x33,0x5d,0x77,0x1d,
- 0xfe,0xda,0xbc,0x79,0xea,0xee,0x84,0x04,0xd9,0xa1,0xc3,0x87,0xa9,0x85,0x87,0x0d,
- 0x1b,0x5e,0x85,0xf8,0x4b,0xfe,0x8b,0xca,0xca,0xce,0xc9,0x36,0xdf,0x48,0x91,0x67,
- 0x48,0x7d,0xbb,0xfa,0x1e,0x8d,0x3d,0x1e,0x6b,0xd3,0xba,0xc7,0xe3,0x8f,0xf7,0x7c,
- 0xbc,0x67,0xab,0x56,0x6d,0xdc,0x5c,0xdc,0x2d,0x2c,0xdd,0x65,0xd4,0x0d,0x1b,0xe6,
- 0x9d,0x71,0xfb,0x96,0x5a,0xf9,0xb3,0x7a,0xf9,0xaf,0xf9,0x73,0x52,0x26,0x4b,0xdf,
- 0x7e,0xfd,0x67,0xcd,0x9e,0xbd,0x60,0xe1,0xa2,0x97,0xa7,0x4d,0xef,0xd6,0xad,0x47,
- 0xbd,0x3a,0xf5,0x8c,0xa6,0xd8,0x8c,0x59,0xb3,0xd5,0x77,0xb1,0xee,0x17,0x15,0x86,
- 0x87,0x47,0xe8,0x3e,0x15,0xe5,0x5a,0x9a,0x7a,0x35,0x9b,0x3c,0xf9,0xf9,0xb0,0x0d,
- 0xeb,0xf7,0xc6,0xed,0x93,0xb0,0x72,0xf0,0x50,0xc2,0xd6,0x2f,0x62,0x65,0xed,0xed,
- 0x3f,0x61,0x52,0xeb,0xc7,0x5a,0xdb,0xd9,0xda,0x97,0xa5,0x39,0x92,0x5f,0x6b,0x1e,
- 0x62,0xd7,0x52,0xae,0x1b,0xed,0x3f,0x97,0x3d,0xde,0xe5,0x51,0xec,0xe2,0xe4,0x6a,
- 0xfa,0x6a,0x51,0xff,0xfe,0x03,0x64,0xaa,0x96,0x57,0x6b,0x8a,0xbf,0x6b,0x74,0xe2,
- 0xaf,0xba,0xff,0x9c,0x7f,0xaf,0x60,0xea,0xd4,0x17,0x74,0xfb,0x41,0x5a,0xbe,0x68,
- 0xf1,0x92,0x6d,0x5f,0x6c,0x3f,0x7c,0x24,0x69,0xdf,0xfe,0x03,0xa1,0x6b,0xc3,0x7c,
- 0x7c,0x7c,0x25,0x85,0xb7,0x90,0xb2,0xcd,0x9d,0x3b,0x4f,0xbd,0x3b,0xbf,0x48,0xfc,
- 0x8d,0x3f,0x6c,0xf8,0xe1,0xa3,0x61,0xfc,0xb5,0xb8,0xff,0xdc,0xab,0xa7,0xce,0xfe,
- 0xb3,0x9a,0xff,0x7e,0xf4,0xc9,0x27,0xea,0x32,0x43,0x86,0xa2,0xac,0x06,0x5f,0x99,
- 0x35,0x5b,0x52,0x45,0x49,0xcc,0x0f,0x1e,0x3a,0x1c,0x1d,0x13,0x33,0x65,0xca,0x54,
- 0x8f,0xc6,0x0f,0x5b,0xf8,0x80,0x78,0xd0,0xa0,0xc1,0xe6,0xef,0xbb,0xde,0x2b,0xbc,
- 0xff,0xf7,0x37,0xde,0x94,0x01,0xef,0x60,0xef,0xd0,0xa3,0xc7,0xe3,0xd3,0xa6,0x4d,
- 0x0f,0x0e,0x09,0xdd,0xb5,0x67,0x8f,0x54,0x78,0xe0,0x60,0x42,0xd4,0xe6,0x4d,0x7f,
- 0xfd,0xdb,0xff,0xc8,0x04,0xd1,0xad,0xb0,0x79,0xb3,0x16,0x97,0x2e,0x7f,0xa3,0xb9,
- 0xa8,0x4d,0xd1,0x31,0x2e,0x2e,0x2e,0x46,0x73,0x47,0x6e,0x5c,0xcf,0x9e,0xbd,0x5e,
- 0x7e,0x79,0xfa,0x82,0xb7,0x17,0xbd,0xf9,0xd6,0xdb,0x53,0x5f,0x78,0xa9,0x7f,0xbf,
- 0x01,0x8d,0x1a,0x36,0x92,0x89,0xf0,0xf4,0xd3,0x23,0xb3,0x72,0xb2,0xcd,0xeb,0xd1,
- 0x8d,0xbf,0xf1,0x89,0x15,0xe4,0xbf,0x0b,0xf5,0x3e,0xff,0xad,0x64,0xfc,0x6d,0x60,
- 0x7d,0xfc,0x95,0x35,0xe1,0x8e,0x9d,0x3b,0x2d,0x37,0xc9,0x94,0xff,0xea,0xc4,0x5f,
- 0xfd,0xfd,0x67,0x99,0x1a,0xdd,0xba,0x75,0xd7,0x9d,0x89,0xf5,0xed,0x1c,0x64,0xf0,
- 0x2f,0x59,0xfa,0xde,0xb6,0xed,0xb1,0xb2,0x14,0x3c,0x92,0x78,0x54,0x4e,0xbd,0x66,
- 0xdd,0xba,0xd9,0x73,0x66,0xf7,0xe8,0xde,0xc3,0xd5,0xc5,0xb5,0x7c,0xd0,0x1a,0xc5,
- 0x5f,0xfd,0xfd,0xe7,0x61,0x55,0xc9,0x7f,0x89,0xbf,0xa8,0x2c,0x59,0x5b,0x76,0xec,
- 0xd8,0x59,0x06,0x8f,0x2c,0x20,0x07,0x0c,0x78,0xe2,0xf5,0xd7,0xff,0xbe,0x63,0x67,
- 0xec,0xc5,0x4b,0xc9,0xe9,0xb7,0x6f,0xe7,0xe4,0xe6,0x65,0x66,0xe7,0xdc,0xcc,0x48,
- 0xff,0xf7,0x57,0x27,0x96,0x2d,0x5f,0x21,0x53,0xc0,0xe8,0x93,0x17,0xc9,0x32,0x3e,
- 0xfb,0x7c,0xab,0x5a,0xb9,0xee,0xbf,0xbf,0x51,0xae,0x5d,0xdb,0x76,0xe1,0x11,0x1b,
- 0x33,0xb3,0x7e,0x1e,0xe7,0x69,0xe9,0x19,0x2b,0x56,0x7e,0xd8,0xc0,0xbd,0x81,0x6e,
- 0x79,0xc9,0xec,0xce,0x5c,0xd0,0x4e,0xcf,0x6f,0x2e,0x5f,0xee,0xdc,0xb9,0x8b,0x5a,
- 0x58,0x32,0xc7,0xbf,0x4d,0x9b,0x26,0x59,0x52,0x61,0xb1,0x4e,0x62,0x5e,0x58,0x54,
- 0x2c,0x11,0x36,0x3c,0x72,0xe3,0xa8,0xd1,0x63,0x65,0xbd,0x51,0x9a,0xff,0x3e,0xb0,
- 0xff,0x7c,0x37,0x2b,0x6b,0xf0,0x60,0xed,0x8b,0x3a,0xd5,0xff,0x13,0x01,0x9f,0x7e,
- 0x66,0x64,0x7c,0xe2,0x91,0x63,0x5f,0xfe,0xfb,0xf8,0x57,0x5f,0x99,0x9c,0x30,0x74,
- 0xee,0xc2,0x79,0xf3,0x35,0x43,0xf1,0x8f,0x12,0xc8,0xf4,0xf2,0x5f,0xe5,0xfd,0xab,
- 0xab,0xd7,0xaf,0x75,0xec,0xd0,0x49,0x3d,0xfb,0xc0,0x27,0x06,0x9e,0x55,0xf6,0xe8,
- 0x72,0xf3,0x73,0x25,0x39,0x6a,0xd6,0xbc,0x99,0x51,0x08,0xfe,0xc7,0x82,0xb7,0xd5,
- 0x4e,0x08,0x0a,0xf9,0x05,0xe2,0xaf,0x85,0xe4,0xcb,0x30,0xfe,0xae,0x5e,0x6d,0x74,
- 0x88,0xd1,0xfe,0xb3,0x26,0xff,0xcd,0x2b,0xc8,0x1f,0xf7,0xec,0x78,0xb5,0x58,0x8b,
- 0xe6,0x2d,0x63,0x77,0xed,0xd2,0xd4,0x29,0xf1,0x34,0xe1,0xc8,0x91,0xde,0x7d,0xfa,
- 0xd5,0xac,0xae,0x3f,0x7a,0x65,0xf5,0x68,0xfe,0x72,0x5a,0x61,0x71,0x51,0xc8,0x9a,
- 0xb5,0xd3,0xa6,0xcf,0xdc,0x1e,0x1b,0x7b,0x27,0xf3,0xae,0xfa,0xd0,0x2e,0x2c,0x2a,
- 0xda,0x1b,0x17,0xd7,0xb6,0x6d,0x3b,0xb5,0x2a,0x09,0x9a,0x61,0x61,0xeb,0xcd,0x0f,
- 0xb9,0x75,0x27,0xa3,0x6f,0xdf,0xbe,0xba,0xe7,0x95,0xf5,0xe1,0x53,0x43,0x87,0xee,
- 0xdc,0xbd,0xfb,0xce,0x5d,0xb3,0x77,0xff,0x7e,0x2c,0xc9,0xcd,0xcb,0x3f,0x7b,0xfe,
- 0x6c,0x60,0x70,0xf0,0xea,0xc0,0x60,0xf3,0x97,0xe7,0x7f,0x9b,0xf7,0xaf,0x8c,0xe2,
- 0xaf,0xee,0xfe,0xb3,0x6e,0xfc,0xb5,0xe6,0xfd,0xab,0x65,0x2b,0x3e,0x50,0x5f,0xdc,
- 0x32,0x7a,0xff,0x6a,0x5a,0xc0,0x2b,0xba,0xbb,0x5b,0x7d,0xfb,0xf6,0xfb,0x6c,0xeb,
- 0x56,0xdd,0x17,0x95,0x8b,0x4b,0x4a,0x32,0xb3,0x32,0x0f,0x27,0x25,0x05,0xcc,0x9c,
- 0xd5,0xb2,0x65,0xab,0x9a,0x35,0x6a,0xbe,0x36,0x77,0x9e,0xfa,0xb3,0x72,0x46,0xf1,
- 0x77,0x68,0x55,0xf3,0xdf,0x80,0x00,0xf6,0x9f,0x51,0x39,0xcf,0x4d,0x79,0xf1,0xb9,
- 0xe7,0xa7,0xc4,0xed,0xdf,0x2f,0x39,0xac,0xd1,0x4f,0x52,0x14,0x16,0x17,0x7e,0x77,
- 0xf5,0xea,0xdc,0xb9,0xf3,0x8d,0xf6,0xdf,0xa4,0x06,0x75,0x22,0x58,0xd8,0x7f,0xf6,
- 0xf0,0xf0,0x38,0x7a,0xfc,0x98,0xba,0x59,0x27,0x0d,0xf8,0x74,0x75,0x90,0xee,0x5e,
- 0x93,0x4d,0xed,0x3a,0x4b,0xdf,0x7b,0x5f,0xf3,0x7a,0xff,0xfb,0xcb,0x96,0xab,0x1f,
- 0x24,0xc9,0x5a,0xe2,0x9d,0x77,0x16,0x9a,0xe7,0x0e,0xba,0xe4,0x39,0x29,0x65,0xf6,
- 0xc4,0xed,0x9f,0x1e,0x10,0x70,0x52,0x79,0x16,0x1d,0x4e,0x4c,0xea,0xd4,0x49,0x27,
- 0xb2,0x0b,0x49,0xdb,0x57,0x07,0x85,0x54,0xe1,0x45,0x47,0xa3,0xcf,0x7f,0x85,0x26,
- 0xfe,0x9e,0x3a,0x73,0x46,0x32,0x14,0x4d,0x19,0xc9,0xf8,0xb6,0x7c,0xf6,0x99,0xee,
- 0x4b,0x3e,0xd2,0x93,0x3b,0x77,0xed,0x96,0x44,0x4f,0xb7,0xc1,0x0b,0x17,0x2f,0x52,
- 0x0f,0x09,0x0a,0x09,0xfe,0xff,0xc7,0xdf,0x04,0x4b,0xf9,0xef,0x09,0x83,0xfd,0x67,
- 0x8b,0xef,0x3f,0xeb,0xed,0x3f,0x6b,0xf2,0xdf,0x8c,0x5b,0x19,0xfd,0xfa,0xf5,0x53,
- 0x8b,0xbd,0xf1,0xe6,0x5b,0xba,0x3f,0xb9,0x29,0x3d,0x76,0xe6,0xdc,0xf9,0x6e,0xdd,
- 0x7b,0xe8,0x76,0x8e,0xac,0xa6,0x34,0x4f,0xe6,0xdc,0x82,0x3c,0x21,0x8b,0x25,0xa3,
- 0x76,0x4a,0x08,0x5e,0xb5,0x3a,0x48,0xad,0x4a,0xba,0x68,0xce,0xab,0xaf,0x95,0x4f,
- 0x22,0x59,0x7a,0x85,0x47,0x46,0xd8,0xdb,0xda,0xab,0x25,0x25,0xfb,0x9b,0xfc,0xdc,
- 0xf3,0xd7,0x53,0x53,0x8c,0x5e,0xd9,0x92,0x63,0x35,0x93,0x71,0x73,0xcc,0x16,0x83,
- 0xfd,0x67,0xc3,0x8f,0xe0,0xcb,0x2c,0xd2,0x8d,0xbf,0x5e,0x4d,0x4f,0x9f,0xad,0x44,
- 0xfc,0x35,0xca,0x7f,0xd5,0xd9,0x67,0xcd,0xfe,0xf3,0xfb,0xcb,0x97,0x5b,0xb9,0xff,
- 0x2c,0x8f,0x1d,0x17,0x57,0xed,0xee,0x81,0x44,0xba,0xc1,0x83,0x86,0x7c,0x9d,0x9c,
- 0x5c,0xe1,0xcf,0x0b,0xcb,0x02,0xe6,0x62,0xf2,0xa5,0x05,0xef,0x2c,0x0c,0xd2,0x1b,
- 0x75,0x46,0xfb,0xcf,0x4f,0x0d,0x1f,0x5a,0xb5,0xf8,0xfb,0xca,0x2b,0xb3,0x78,0xff,
- 0x19,0x95,0x72,0xf5,0x7a,0x4a,0x6e,0x5e,0xae,0x35,0x25,0xb3,0x73,0xb2,0x7d,0x7c,
- 0xfd,0x6a,0x54,0xd7,0x49,0xb2,0x3a,0x77,0xea,0x7c,0x2d,0x45,0xfb,0xb3,0x7b,0xba,
- 0xef,0x5f,0x55,0x2f,0x7d,0x5f,0x74,0xe1,0xe2,0x25,0x46,0x67,0xc9,0xb8,0x9d,0x31,
- 0xde,0xdf,0x5f,0xf7,0x40,0x5f,0x5f,0x3f,0xf3,0x79,0x21,0xb3,0x60,0xd0,0xa0,0xc1,
- 0x6a,0xb1,0x71,0xe3,0xfd,0xd3,0xd2,0x6f,0x5a,0xdf,0x03,0xa6,0x7f,0x61,0x40,0x59,
- 0xb5,0x4a,0x44,0xdb,0xb3,0x77,0xaf,0x93,0xc1,0xeb,0xb5,0x9e,0x9e,0x9e,0x3b,0x62,
- 0x2b,0xd8,0x64,0x53,0x59,0x1f,0x7f,0x75,0x83,0x97,0xb3,0x93,0xf3,0xa9,0xd3,0x3a,
- 0x7b,0x86,0xe5,0x0d,0x7e,0x75,0xee,0x5c,0xdd,0x7d,0xd1,0xe5,0x2b,0x3e,0x50,0xcb,
- 0xff,0x22,0xf1,0xd7,0xc2,0xfb,0x57,0x86,0xf1,0xd7,0x72,0xfe,0x6b,0x45,0xfc,0xfd,
- 0xe1,0x66,0x5a,0x77,0x25,0x98,0x4a,0xf3,0x36,0x44,0x46,0x5a,0xe8,0xfc,0xb0,0xf5,
- 0x1b,0xec,0x6c,0x75,0xe2,0xd7,0xe8,0x31,0x63,0x2d,0xfc,0x2b,0x22,0x46,0xe2,0x0f,
- 0x1f,0x56,0xab,0xaa,0xf1,0x97,0xff,0x63,0xef,0xba,0x83,0xa2,0x4a,0xb6,0xfe,0x3f,
- 0xc6,0x05,0x95,0x8c,0x84,0x25,0x09,0x0a,0x98,0x40,0x17,0x30,0xad,0x88,0x04,0x73,
- 0x76,0x15,0x31,0x3e,0x15,0x10,0x94,0xa4,0xae,0x6b,0x40,0x05,0xc3,0xaa,0x80,0xa8,
- 0xa0,0xa2,0x6b,0x06,0x23,0x62,0xc2,0x8c,0xa8,0xeb,0x02,0x4a,0x0e,0x2a,0xa0,0x32,
- 0x60,0x24,0x07,0x45,0xb2,0xb0,0x55,0xdf,0x19,0x46,0xe7,0x0d,0xb7,0x4f,0xdf,0x49,
- 0xb8,0xaf,0xde,0xf7,0xa6,0xea,0x57,0x16,0x33,0xf6,0xed,0xb9,0xb7,0x6f,0x77,0xff,
- 0xce,0x39,0x7d,0x42,0x47,0x67,0x17,0x57,0x7e,0x44,0x00,0xcc,0xab,0x05,0x0b,0x17,
- 0xa1,0xeb,0x05,0xd4,0xfc,0xdc,0x97,0x42,0xc2,0xf7,0x18,0x38,0x1f,0x19,0x89,0xfa,
- 0x03,0x08,0xb5,0x3f,0xef,0xdc,0x15,0x48,0x5e,0x25,0x26,0xff,0xe2,0xe7,0xbf,0x31,
- 0xf7,0xee,0x91,0xfe,0x81,0x30,0x4b,0x6f,0x11,0x56,0x08,0x06,0x44,0xe4,0x5f,0x58,
- 0x2f,0x87,0xfe,0x38,0x42,0xde,0x0f,0x70,0xdf,0x93,0xc4,0x44,0xd1,0x93,0x75,0x34,
- 0x7e,0x69,0xfa,0x84,0xf1,0x29,0x4d,0xff,0x1d,0x37,0x4e,0x42,0xfd,0xd7,0xcb,0xcb,
- 0x4b,0xa6,0xff,0xca,0xf0,0xfd,0x70,0x27,0x26,0x16,0x16,0x23,0x39,0x63,0xf5,0xf5,
- 0xf4,0x13,0x93,0x13,0x19,0x8d,0x69,0xfa,0xaf,0xa5,0xe5,0x90,0xd7,0xef,0xde,0xb2,
- 0xfc,0xca,0xa3,0xb8,0x78,0xd4,0xef,0xd7,0x40,0xdf,0xe0,0x15,0x87,0xc3,0x6f,0x96,
- 0x92,0x9e,0xae,0xa9,0xa1,0xc5,0x68,0x03,0xec,0x96,0x4a,0xf1,0xd4,0x92,0x00,0x27,
- 0xc3,0xc3,0x35,0x35,0x99,0x3f,0xc1,0x83,0x9e,0xae,0x5e,0x4a,0x5a,0x8a,0x58,0x19,
- 0x7b,0x68,0xf1,0x47,0xa4,0xff,0x73,0x76,0x6e,0xae,0x71,0x1f,0x13,0x46,0x33,0xb9,
- 0x1f,0xe4,0x59,0xce,0x5b,0x5b,0xb8,0xf9,0x10,0x9e,0x1a,0x19,0xf5,0x26,0x6f,0x35,
- 0x78,0xef,0x3e,0xb2,0x71,0xfb,0x9c,0xff,0xd2,0x9d,0x6f,0xa9,0xfe,0xcf,0xac,0xfc,
- 0x3b,0xf2,0x67,0xc4,0x5a,0xcb,0x88,0xff,0xad,0xfc,0x58,0x39,0x7e,0x02,0xa2,0xb6,
- 0x84,0x86,0x1e,0x60,0x19,0x9c,0xa2,0xe2,0x22,0x7b,0x7b,0x07,0xf2,0x2a,0x27,0xa7,
- 0xb9,0x2c,0xae,0xf5,0x28,0x40,0x39,0x85,0x89,0x41,0x76,0x05,0xfc,0xbb,0xd4,0xd9,
- 0x85,0x9f,0x2a,0x24,0x2f,0x9f,0x43,0x1a,0x31,0x3a,0xb4,0x5a,0x9e,0xaf,0xdf,0xbc,
- 0x29,0x6e,0xee,0xac,0x48,0x8a,0xfe,0x2b,0xd4,0xfe,0x8c,0xea,0xbf,0xe2,0x9e,0xff,
- 0xa2,0xf6,0x67,0x94,0x7f,0x45,0xf1,0x7f,0xde,0xb3,0x77,0x1f,0xa9,0x38,0x93,0xfc,
- 0x5b,0xf9,0xa9,0x6a,0xe6,0x2f,0xb3,0xc8,0x41,0x5e,0x8b,0x39,0x33,0x4b,0x00,0x69,
- 0xce,0x7f,0xc9,0xf8,0x5f,0x99,0xff,0xb3,0x0c,0xdf,0x1b,0xcf,0x73,0xb3,0x8d,0xfb,
- 0x18,0x63,0x2b,0x54,0x23,0xf6,0xfe,0x7d,0x46,0x63,0x1a,0xff,0xae,0x59,0xb3,0x96,
- 0xb4,0x3c,0x0b,0xa2,0xba,0xa6,0xc6,0xb4,0x6f,0x7f,0xf2,0x42,0x90,0xff,0x1f,0xfc,
- 0xf9,0x75,0x1f,0x80,0xed,0x2b,0xe2,0xcc,0x99,0xee,0xf2,0x4c,0x8d,0xc0,0xc2,0xc2,
- 0xaa,0x1d,0x4d,0x40,0x9f,0x6b,0x3e,0xef,0xd8,0xb1,0xb3,0x1b,0xf1,0x2b,0x3c,0x38,
- 0x38,0x38,0x64,0xe7,0x0a,0xc9,0x3e,0xc4,0xc0,0xb1,0x13,0x22,0xc5,0xff,0x96,0x94,
- 0x96,0x8e,0x1c,0x89,0x78,0x22,0xf9,0xfb,0x6f,0x61,0x59,0xe0,0x65,0x95,0x65,0x13,
- 0x30,0x7b,0x5a,0xe8,0x7e,0x84,0x98,0xbe,0x37,0xff,0x4a,0x76,0xfe,0x8b,0xc6,0xff,
- 0x3a,0x3a,0x3a,0x0a,0xf2,0x6f,0x7d,0x63,0xa3,0xb3,0xcb,0x32,0xb2,0xd9,0xac,0xd9,
- 0xb3,0x51,0x3f,0xc0,0x6f,0x57,0x35,0xac,0x5d,0xbb,0x8e,0xbc,0x6a,0xf1,0xe2,0x25,
- 0x62,0xbd,0xc1,0xc6,0x2f,0x8d,0x89,0x49,0x49,0x23,0x46,0x20,0xf7,0xd9,0xa9,0x63,
- 0xa7,0x95,0xab,0x57,0xf3,0xa7,0xdf,0xfd,0x07,0x0f,0x51,0x8d,0xb5,0x5f,0xbf,0xfe,
- 0xa8,0x3a,0xc6,0x8e,0xff,0x20,0xff,0xb6,0xe6,0xdf,0x40,0xe3,0x7f,0x11,0xfb,0xb3,
- 0x14,0xfc,0xcb,0xf4,0xbf,0xe2,0x14,0x14,0xf0,0xbc,0x53,0x18,0xfd,0xdf,0xbd,0x7b,
- 0x57,0xdc,0xd1,0x43,0x21,0xf3,0xbf,0x92,0xe1,0xbf,0x0b,0xe9,0x59,0x59,0xbd,0x30,
- 0x91,0x5e,0x4d,0x45,0x8d,0x3c,0xf4,0x41,0xf9,0xb7,0x4b,0xe7,0x2e,0xd7,0x6f,0x08,
- 0x71,0xcf,0x00,0xcc,0x5f,0x88,0xd4,0x6e,0x00,0x84,0x9f,0x3d,0xcb,0x6b,0xd0,0xf8,
- 0xa5,0xc9,0x7f,0xcb,0x16,0x86,0x63,0x06,0x10,0x99,0x8b,0x9b,0x7b,0x4b,0xab,0x5f,
- 0x19,0xd7,0xf1,0xe9,0x6f,0xee,0x1f,0xcd,0x2d,0xcd,0x00,0xf8,0xc8,0xfd,0x12,0xfd,
- 0xf8,0x37,0xf7,0x23,0xef,0x7b,0xf2,0x4e,0x60,0xab,0xf4,0xf4,0xf2,0xee,0x8a,0xe9,
- 0xe3,0xb0,0xe2,0x66,0xce,0x9a,0x5d,0x5a,0x21,0x6a,0x39,0x63,0xd1,0xfd,0xaf,0x40,
- 0x3e,0xf1,0xf0,0x44,0x82,0x56,0x0c,0xf4,0x0d,0xa2,0x2e,0x5f,0xa6,0xe5,0xd7,0x85,
- 0x9d,0x9f,0x0c,0x75,0x81,0xce,0x81,0x6a,0xc9,0xc6,0xed,0xe2,0x7f,0xd5,0xee,0xfc,
- 0x2b,0x62,0xfe,0xab,0xe3,0x27,0x4e,0x02,0xd9,0x31,0x9a,0x29,0x29,0x28,0xfd,0xbe,
- 0x63,0x07,0x35,0x79,0xef,0xdf,0x2d,0x27,0x4e,0x21,0x4a,0xeb,0x92,0x25,0x4b,0x45,
- 0x7c,0x7d,0xb0,0xeb,0xa6,0xa4,0xa7,0x6f,0xdd,0xb6,0x8d,0x16,0x1b,0xde,0x4d,0xae,
- 0xdb,0xf1,0xe3,0x27,0xf8,0xb1,0x78,0x61,0x87,0xff,0x20,0xdb,0xc0,0x14,0x5d,0xd6,
- 0x3a,0x45,0xc5,0x45,0x64,0x94,0x84,0xfc,0xfb,0xcf,0xfb,0x5f,0xdd,0x14,0xc5,0xff,
- 0x59,0x84,0xfc,0x57,0x49,0xc9,0xa9,0x5a,0x9a,0xda,0x8c,0x66,0x03,0xfa,0x0d,0xc8,
- 0x7d,0xf1,0x82,0xbf,0xba,0xbf,0xe2,0xdb,0xfa,0x65,0xff,0xc8,0xb8,0x8d,0x76,0xf7,
- 0xbf,0x92,0xf1,0xaf,0x0c,0xdf,0x0f,0xc0,0x53,0xc1,0xfb,0x42,0xd0,0x24,0x00,0x9a,
- 0x1a,0x5a,0x0f,0xff,0x62,0xe6,0xe1,0x99,0x3f,0x1f,0xe1,0x5f,0x58,0x65,0xa4,0x07,
- 0x2f,0x09,0xd8,0x48,0xc9,0xa5,0x0d,0x08,0x08,0x0a,0xe2,0x35,0xa8,0xad,0xaf,0x73,
- 0x73,0x5f,0x4e,0x1e,0x77,0x9a,0x9a,0xf6,0x9d,0x35,0xdb,0x11,0xe0,0x38,0xc7,0xe9,
- 0x17,0xd0,0x88,0x1c,0xe7,0xc0,0x1f,0x3c,0xc0,0xdf,0xe4,0xc7,0x5f,0xa0,0x71,0xeb,
- 0x97,0x8b,0x16,0x2f,0x79,0x9c,0xc8,0x34,0xa1,0xf3,0x50,0x5c,0x5a,0x36,0xc7,0x69,
- 0x2e,0x1a,0x57,0x28,0xd7,0x55,0xce,0xc3,0xd3,0xb3,0xb2,0xaa,0x52,0xc4,0x01,0x44,
- 0xf9,0x17,0xcd,0xbf,0x11,0x17,0x17,0xaf,0x4a,0x84,0x66,0xc3,0xee,0x0d,0x9b,0xa1,
- 0xaf,0xaf,0x6f,0x7c,0x42,0x42,0x71,0x69,0x71,0x6d,0x7d,0x2d,0xa8,0x63,0x5c,0x59,
- 0xa2,0x15,0x8d,0x4d,0x8d,0x5b,0xb7,0x6d,0x67,0x5c,0x02,0xbc,0x79,0x08,0x0b,0xb9,
- 0x6d,0x97,0xf3,0x5f,0x96,0xf8,0xdf,0xf4,0x8c,0x8c,0x5e,0x68,0xfe,0x2b,0xf1,0xcf,
- 0x7f,0x19,0xfa,0x2f,0x20,0xbf,0xe0,0xcd,0x20,0xf3,0x41,0xa4,0xbf,0x77,0x77,0xf9,
- 0xee,0xce,0xce,0x2e,0xb7,0xef,0xdc,0x79,0xf7,0xe1,0x3d,0x6c,0x92,0x0d,0x4d,0x0d,
- 0xfc,0xc1,0x01,0x80,0xe0,0x47,0x76,0xce,0xce,0xbf,0x20,0x08,0x7d,0x28,0x2a,0xbc,
- 0x77,0xff,0xfe,0xf6,0xdf,0x77,0xd8,0xda,0xd9,0x6b,0x6a,0x6a,0xb1,0x64,0x44,0xe9,
- 0x6d,0xd4,0xfb,0x79,0x4e,0x36,0xff,0x5d,0xc3,0x6b,0x42,0x26,0xcc,0x0f,0x72,0xfb,
- 0x0f,0x1e,0x94,0x60,0xf5,0xd1,0xf3,0x5f,0x09,0xcb,0xbf,0x21,0x56,0xfe,0x2b,0xa9,
- 0xf9,0x57,0x14,0xfd,0x77,0xf7,0x9e,0x7d,0xa4,0x40,0x4b,0xda,0x9f,0x6f,0xde,0xba,
- 0x4d,0x7a,0xaf,0xa9,0xa9,0xa9,0x4f,0x9c,0x34,0x99,0xbf,0xba,0xd1,0x45,0x4d,0xfb,
- 0x78,0xf4,0xc4,0x09,0x41,0x07,0x4e,0x7a,0xfe,0x2b,0x49,0xfc,0xaf,0x64,0xf6,0x67,
- 0x19,0xbe,0x2b,0x9e,0x66,0x67,0xf7,0xee,0x83,0x1c,0x2f,0x76,0xe0,0xfa,0x23,0x19,
- 0x91,0x2e,0xc4,0x68,0xfc,0x91,0xa1,0xa1,0xd1,0xeb,0xb7,0x6f,0x84,0xfe,0x16,0xa8,
- 0x6c,0x68,0x2c,0xb0,0x9f,0x9f,0x3f,0xaf,0xc1,0xe7,0xba,0x56,0xe7,0x16,0x89,0x92,
- 0x67,0xa2,0x50,0x56,0x52,0xb9,0x1a,0x1d,0x4d,0xbb,0x9f,0xec,0xdc,0x5c,0x6b,0x1b,
- 0x1b,0xf4,0x42,0xd0,0x4a,0xf6,0x86,0x84,0x8a,0xb2,0xee,0xc4,0xe2,0xdf,0xea,0xcf,
- 0x9f,0x81,0x4a,0xd0,0x98,0xaf,0xce,0x9d,0x3a,0xeb,0x68,0xeb,0xd8,0xda,0xd9,0x2d,
- 0x75,0x71,0x5e,0xb7,0x7e,0x7d,0x40,0x40,0x20,0x0f,0x3b,0x77,0xee,0x1a,0x3f,0x9e,
- 0x69,0x7f,0x86,0x1e,0xc2,0x0e,0x23,0x21,0xb7,0x61,0x87,0xda,0x81,0x7f,0x59,0xf5,
- 0xdf,0xef,0xe5,0x7f,0xd5,0xd2,0x1a,0x55,0xb4,0x2f,0x24,0x04,0x9d,0x21,0x30,0x25,
- 0xd4,0xd5,0x7a,0x0e,0x1b,0x36,0x62,0xfe,0x82,0x85,0x6b,0xd7,0xad,0xfb,0x7d,0xc7,
- 0x4e,0xfe,0xf8,0x38,0xbb,0xb8,0x90,0xed,0x59,0xf8,0xf7,0x7d,0x51,0xe1,0xfe,0x03,
- 0x07,0x6c,0x6d,0xed,0x7a,0xaa,0xf7,0x24,0xd5,0x6d,0x06,0xba,0x74,0xea,0xf2,0xeb,
- 0x9a,0x7f,0xd7,0xb9,0x68,0xfa,0xd2,0x04,0x7a,0x2e,0xd9,0x4c,0x49,0x51,0xf9,0xd2,
- 0xe5,0xcb,0x12,0xac,0xbe,0xff,0x22,0xfe,0xbd,0x75,0x5b,0x12,0xfd,0x97,0xe4,0xdf,
- 0xa8,0xcb,0x57,0xbb,0xc9,0xe3,0x09,0x01,0x24,0x83,0xb3,0xab,0xab,0x60,0x98,0x86,
- 0x34,0xf9,0x27,0x65,0xfa,0xaf,0x0c,0xff,0x18,0xca,0x2b,0x2b,0x0e,0x84,0x85,0xf5,
- 0xc1,0x4e,0x7e,0x79,0x18,0x6d,0x33,0xba,0xb4,0x9c,0x69,0x86,0x45,0xfd,0x9f,0x4d,
- 0xfb,0xf6,0x2b,0x2c,0x12,0x9e,0xac,0xfe,0xec,0xb9,0x73,0x68,0xe0,0x06,0x3f,0x8f,
- 0x5c,0x75,0x4d,0xf5,0xac,0x59,0xb3,0xdb,0x71,0x6d,0xc2,0xf2,0x67,0x37,0x8c,0xbf,
- 0xcc,0xcb,0xef,0xdb,0xb7,0x3f,0xca,0xf8,0xaa,0xca,0xaa,0xa8,0x8e,0x49,0x02,0x3d,
- 0xff,0x45,0xf3,0x5f,0xb5,0x70,0x1d,0x7d,0x4b,0xa6,0xcf,0x98,0x29,0x71,0x5e,0xcd,
- 0xaf,0x9d,0x77,0xec,0x7c,0x30,0x0c,0xe1,0xdf,0x76,0xd1,0x7f,0x25,0xf0,0xbf,0xda,
- 0x17,0x1a,0x4a,0xbb,0x44,0xc4,0xf8,0xdf,0xaf,0x8d,0xeb,0xeb,0xd6,0xac,0xdd,0x80,
- 0x52,0x92,0x58,0x00,0xfe,0x25,0x43,0x8d,0xa0,0xf3,0xa8,0x4b,0x97,0x40,0x56,0x44,
- 0xbd,0x97,0x49,0xc0,0xde,0xbb,0x78,0xe9,0x92,0x92,0xb2,0x7f,0xa7,0x6b,0x06,0xfe,
- 0x75,0x71,0x45,0x0e,0xa9,0xd1,0x93,0x1a,0x51,0x40,0x3b,0xff,0x15,0x9e,0xff,0x4a,
- 0xea,0xf8,0x23,0x96,0xf3,0x5f,0x2c,0xff,0x95,0xf2,0x95,0x6b,0xd7,0xd8,0x6f,0x09,
- 0x8d,0xff,0x55,0x57,0x53,0x67,0xe4,0x9f,0x3c,0x7d,0xfa,0x34,0xd9,0x4c,0x1a,0x78,
- 0x7a,0x79,0x89,0xc2,0xbf,0xa2,0xe4,0xbf,0x42,0xeb,0x2f,0xc8,0xf8,0x57,0x86,0x76,
- 0x04,0x08,0xf3,0xef,0x0a,0xdf,0x47,0x5d,0xba,0x3c,0x65,0xea,0x54,0x50,0x0f,0x69,
- 0xca,0x26,0x7c,0xbf,0x69,0xd3,0x66,0xd2,0x89,0x14,0xe5,0x5f,0x13,0xd3,0xbe,0xa2,
- 0x54,0x19,0x3b,0x15,0x1e,0xd1,0x03,0xe3,0xdf,0x75,0xbe,0x1b,0x79,0x0d,0x3e,0xd7,
- 0xd6,0x38,0x39,0xcd,0x6f,0xc7,0xb5,0xa9,0xa1,0x81,0x07,0x39,0x0a,0x22,0x3a,0xfa,
- 0x16,0xe9,0x96,0xcc,0x1b,0x01,0x5d,0x1d,0xdd,0xbf,0x12,0xfe,0x62,0xaf,0x96,0x48,
- 0xf3,0x7f,0xee,0x40,0xc4,0x1f,0xf1,0xf1,0x8a,0xc3,0xf1,0xf0,0xf4,0x06,0x7e,0x17,
- 0xab,0x46,0x95,0x20,0xb8,0xe7,0xbf,0x47,0xd0,0xf3,0x5f,0x69,0xf9,0x57,0x4d,0x55,
- 0x8d,0x35,0xfe,0x17,0x3f,0xff,0xdd,0x15,0x18,0x44,0xbb,0x84,0xc6,0xbf,0xa4,0xfd,
- 0x99,0x87,0x92,0xb2,0xb2,0x80,0xc0,0x60,0x6d,0x2d,0x6d,0x09,0x72,0xf2,0xf3,0xc1,
- 0xd5,0x7f,0xdb,0xf2,0x2f,0xbc,0xc4,0xb0,0xc3,0x87,0x75,0x45,0xcb,0x52,0x0e,0xef,
- 0xa5,0xa7,0x5a,0x4f,0x67,0x57,0xe7,0xc2,0xe2,0xe2,0x36,0x6b,0x87,0xcb,0xbf,0x6e,
- 0x64,0x7b,0xa1,0x62,0x1e,0x0d,0x34,0xfe,0x8d,0x15,0x36,0x69,0xff,0x61,0xfe,0x05,
- 0xb1,0xf9,0xdc,0xb9,0xf3,0xec,0xb7,0x14,0xbc,0x27,0x04,0x75,0x9c,0x66,0xe8,0xbf,
- 0x17,0x22,0xa3,0x7e,0xf8,0xa1,0x3d,0xf9,0x77,0xfd,0xfa,0x0d,0x82,0x9e,0x9f,0x34,
- 0xfe,0xb5,0xb3,0xb3,0xaf,0xfa,0xf4,0x91,0xe5,0xfe,0x65,0xf6,0x67,0x19,0xbe,0x2b,
- 0x60,0x16,0xa5,0x65,0x66,0xec,0x0c,0x08,0x18,0x3c,0x78,0x30,0x2d,0x27,0x24,0x1f,
- 0x7a,0xba,0xfa,0xa8,0x2d,0x0b,0xb5,0x3f,0xeb,0xfc,0xa8,0xf3,0xe2,0x15,0x33,0x47,
- 0x1f,0x89,0x7d,0x21,0x21,0xa8,0xe8,0xbb,0x75,0xeb,0xd7,0x54,0x12,0x75,0x0d,0x75,
- 0xee,0xee,0xee,0x12,0xb3,0x12,0x09,0x03,0xfd,0x5e,0xa9,0xe9,0x42,0xea,0x96,0x36,
- 0x35,0x37,0x9f,0x3f,0x1f,0x09,0xbc,0x83,0xf6,0x60,0x69,0x69,0x95,0xc6,0x1a,0xfa,
- 0x24,0xba,0xff,0x95,0x20,0x1a,0x1a,0x1b,0xae,0x45,0x5f,0x9f,0x3b,0x6f,0x3e,0x2d,
- 0xed,0x21,0x3b,0xb8,0xe7,0xbf,0x7f,0xa0,0xfa,0xaf,0xb4,0xfe,0x57,0x0a,0x3d,0x14,
- 0xae,0xdf,0xa0,0xaa,0x72,0xb4,0xfa,0x83,0xbe,0xbe,0x1b,0x69,0xf1,0xb6,0xe2,0xd6,
- 0x1f,0x6c,0x69,0x75,0xb4,0x4b,0x78,0xf2,0xc4,0xcb,0xdb,0xcb,0xb8,0x8f,0xb1,0x64,
- 0x95,0x44,0x98,0xf6,0xe7,0xbf,0x5b,0x92,0x92,0x53,0xd0,0x93,0x6b,0x06,0xe0,0x5d,
- 0x68,0xf4,0xd4,0x70,0x74,0x9c,0x73,0xfb,0xf6,0x5d,0x32,0xf9,0x0c,0x3c,0xa3,0xb7,
- 0xcf,0x2a,0xf2,0x2a,0x50,0xd8,0x4f,0x45,0x44,0x48,0xb0,0x24,0x69,0xfe,0x57,0x67,
- 0xce,0xb1,0x45,0x3d,0xb7,0xfc,0xe3,0xfe,0x57,0xb0,0x6c,0x43,0x42,0xf7,0xb3,0xdf,
- 0x92,0x88,0xfe,0x57,0x37,0x6e,0xdd,0x56,0x50,0x40,0x84,0x70,0x89,0xb1,0x7b,0xcf,
- 0x1e,0xc1,0xb0,0x2f,0x1a,0xff,0xc2,0x42,0x7e,0x2f,0x50,0xf9,0x91,0x84,0x2c,0xff,
- 0x95,0x0c,0xdf,0x09,0xc5,0xa5,0x25,0x57,0xae,0x5d,0x75,0x72,0x9a,0xab,0xa3,0xa3,
- 0x2b,0x4a,0xf1,0x1d,0xd8,0x84,0x77,0x05,0x06,0xa2,0xb3,0x0e,0xe5,0x5f,0x79,0x39,
- 0xf9,0x98,0xd8,0x7b,0x42,0x6f,0x03,0xf6,0x2e,0x94,0x6b,0x0e,0x7d,0xcb,0x63,0xd3,
- 0xf8,0xa5,0x71,0x93,0xbf,0x1f,0x99,0x98,0x6e,0xd8,0xd0,0x61,0xfe,0xfe,0x5b,0x00,
- 0x7e,0xfe,0xfe,0x7e,0x7e,0xfe,0x5b,0xb6,0x6e,0x85,0x7f,0xb9,0xf0,0xf7,0xff,0xfa,
- 0xbd,0xdf,0x96,0xd5,0xab,0x7f,0x55,0x55,0x65,0xba,0x36,0x0d,0x1c,0x60,0x56,0x80,
- 0x55,0x24,0x67,0xa0,0xb6,0xbe,0x76,0xcf,0xde,0x10,0x65,0x45,0x24,0x43,0x17,0xdc,
- 0xb0,0xbd,0xc3,0x18,0xce,0x9b,0x7c,0xda,0xb5,0xa2,0xe7,0x7f,0x26,0x2f,0x84,0x25,
- 0xff,0x3c,0x27,0xf7,0x64,0x44,0xc4,0xca,0xd5,0xbf,0x4e,0x9e,0x3a,0x75,0xf8,0xf0,
- 0xe1,0x03,0x06,0x98,0xf5,0xe9,0x6d,0xdc,0xdb,0xb0,0xb7,0xbe,0x9e,0x01,0x0f,0x20,
- 0x08,0x91,0x09,0x43,0x68,0xe7,0xbf,0xd2,0xc7,0x1f,0xc1,0xf4,0x38,0x71,0xf2,0x24,
- 0xed,0x9e,0xd3,0x32,0x70,0xfe,0x5d,0xb2,0xd4,0xb9,0x9e,0x92,0x66,0x4d,0xf4,0xf3,
- 0xdf,0xb6,0x83,0xc3,0x35,0x17,0x73,0xf2,0x5f,0x5f,0xb9,0x76,0xcd,0x77,0xd3,0xe6,
- 0x99,0x33,0x7f,0xb1,0x1e,0x35,0xca,0x6c,0xa0,0xb9,0x71,0x1f,0x13,0x18,0x1c,0x03,
- 0x7d,0x03,0xfe,0xf8,0x90,0xd1,0xe2,0xbc,0xfb,0x69,0xfb,0x7e,0xeb,0x3c,0x3c,0xbd,
- 0xc9,0xe4,0xd2,0x7c,0xc8,0x75,0x95,0x03,0x76,0x1e,0x3b,0x6e,0x5c,0x70,0xf0,0xde,
- 0x94,0xb4,0xd4,0xea,0x9a,0x6a,0x5a,0x24,0x6f,0x60,0x50,0x30,0x79,0x39,0xcc,0xd8,
- 0xcd,0x7e,0x7e,0x12,0x2c,0xcc,0x8b,0x94,0xf3,0x5f,0x98,0xe2,0xa0,0x6b,0xb3,0x5c,
- 0xe8,0xb7,0x65,0x1b,0x79,0xd5,0xf7,0x3b,0xff,0x85,0xc9,0xec,0xed,0xb3,0x92,0xfd,
- 0x59,0x50,0xef,0x4a,0x32,0xfe,0xe8,0x49,0x52,0x12,0x19,0x7d,0xaf,0xa5,0xa5,0xed,
- 0xb3,0x72,0x15,0xac,0xe8,0xcd,0x9b,0xfd,0x5a,0x97,0x73,0x9b,0xd5,0x0d,0xeb,0xdd,
- 0xdf,0x9f,0xbb,0xe4,0xad,0xac,0x90,0x74,0x67,0x51,0x57,0xae,0x08,0xf6,0x4f,0xe3,
- 0x5f,0xc3,0x5e,0x86,0xe9,0x99,0x6c,0x82,0xf4,0xc7,0xea,0x6a,0x6d,0x2d,0xa6,0x63,
- 0x36,0xd7,0xfe,0xec,0xe3,0x23,0xcb,0x7f,0x25,0x83,0x64,0x68,0x68,0x6a,0x78,0x14,
- 0x17,0x37,0x7e,0xc2,0x44,0x65,0x15,0xe1,0x35,0x55,0xbf,0xed,0xed,0x5d,0xe6,0x2d,
- 0x58,0x58,0x5e,0x59,0x81,0x76,0x48,0xcb,0xff,0xbc,0x7d,0x57,0x00,0xbb,0x9d,0x16,
- 0x60,0x87,0xa5,0x4a,0x00,0x0a,0xb8,0x16,0xfd,0x35,0xd1,0x74,0x6b,0x2d,0xa1,0x13,
- 0xf2,0x84,0x6e,0xbe,0x70,0xe1,0xbf,0xd8,0x7b,0x6e,0x6e,0x69,0x79,0x95,0xc7,0x21,
- 0xcb,0x77,0xda,0xda,0xdb,0x55,0x54,0xb1,0x19,0x9d,0xf8,0x00,0x2a,0x5c,0xe1,0xe1,
- 0x81,0x46,0x24,0x75,0xe9,0xdc,0x75,0xa9,0x8b,0x6b,0xe5,0xc7,0x2a,0xfc,0xa7,0x29,
- 0xf5,0x8f,0x3a,0xd0,0xed,0xcf,0xe8,0xfd,0x7f,0xfa,0x5c,0x5d,0x54,0x52,0x94,0xc7,
- 0xc9,0x7f,0x96,0x93,0x9d,0xf5,0xec,0x69,0x72,0x6a,0x2a,0x10,0x01,0x20,0x31,0x39,
- 0xd9,0x0b,0x8b,0x3f,0x3a,0x72,0x14,0xb3,0x3f,0x8b,0xc3,0xbf,0x68,0xfd,0x41,0xd8,
- 0x69,0x7d,0xbf,0x1d,0x07,0x90,0x78,0x92,0x9c,0xac,0xab,0x83,0xd4,0x49,0x1f,0x33,
- 0x66,0x4c,0x45,0x15,0x3e,0x61,0x24,0xe3,0x5f,0xc6,0xe0,0xd4,0xd4,0xd5,0x16,0x97,
- 0x95,0xe6,0xbf,0x2e,0xc8,0xce,0xcd,0x81,0xc1,0x49,0xcd,0xe0,0x8e,0x0c,0x6f,0x88,
- 0x0e,0x84,0x1d,0x22,0x3b,0x77,0x5b,0xbe,0x42,0xb0,0x87,0xe2,0x92,0x32,0x0b,0x0b,
- 0x2b,0x74,0xde,0x02,0x75,0x5a,0x58,0x5a,0x05,0x04,0x05,0x43,0x6f,0x30,0xe7,0xc9,
- 0x7a,0xb2,0x0c,0x5c,0xbc,0x74,0x19,0x35,0x8c,0xdb,0x39,0x8c,0x69,0x64,0x65,0x4c,
- 0x14,0xb4,0xfc,0x57,0xb3,0x66,0xcd,0x66,0x37,0x96,0xae,0x5c,0x89,0xa8,0xe1,0xed,
- 0x93,0x7f,0x23,0x36,0x96,0xac,0x3f,0x08,0xb0,0x19,0x6d,0xcb,0xfe,0x80,0xbf,0xad,
- 0xdd,0x80,0x96,0x21,0x63,0xf0,0xef,0x2b,0x0e,0x07,0x84,0x4c,0x46,0x33,0x63,0x63,
- 0xd3,0x9c,0x17,0xb9,0x2c,0xd9,0x41,0xe1,0xbd,0xc0,0xff,0x2e,0x58,0xc8,0x0c,0xbe,
- 0x00,0x99,0xea,0x71,0x72,0x9b,0x32,0xdf,0x34,0xfe,0x55,0x52,0x54,0x8e,0xbc,0x78,
- 0x91,0xe5,0xfe,0x8b,0x4b,0xcb,0xc8,0xb2,0x71,0xb2,0xfc,0x57,0x32,0x48,0x06,0xe0,
- 0x85,0x97,0x1c,0x0e,0x28,0x02,0x62,0x79,0x1b,0x2a,0xf6,0x50,0xf4,0xdd,0xbc,0xb1,
- 0xbc,0x92,0x1a,0x7a,0x43,0xcb,0xbf,0x31,0xd2,0x7a,0xd4,0x87,0xe2,0x22,0x96,0xfb,
- 0x79,0x99,0x97,0xa7,0xa4,0xc8,0x2c,0x22,0xcf,0x5d,0xa1,0xaa,0x6a,0x82,0x46,0xb3,
- 0xe4,0xd4,0x34,0xe0,0x0b,0xe6,0xf2,0x34,0x31,0x41,0x53,0xb2,0x0b,0xe2,0x4e,0xcc,
- 0x3d,0x39,0x82,0x04,0x3d,0xbd,0x7d,0x84,0x4a,0x05,0x7c,0xc0,0x53,0xbb,0x2e,0x73,
- 0x43,0x35,0x74,0xd8,0x72,0x7f,0x5b,0xbb,0x0e,0xcd,0x3e,0x4d,0x3b,0xff,0xa5,0xf9,
- 0x5f,0x89,0x8b,0x86,0xa6,0xa6,0x95,0xab,0x57,0x33,0x3a,0x87,0x1d,0xf2,0xfc,0x85,
- 0x0b,0x64,0x63,0xe9,0xcf,0x7f,0x01,0xf6,0x63,0x1c,0x68,0xa3,0xfd,0xf0,0xe1,0x43,
- 0x54,0xdf,0x04,0xe5,0x31,0x25,0x2d,0x0d,0xbd,0xa4,0xa2,0xaa,0x12,0xad,0xa6,0x31,
- 0xc7,0x71,0x4e,0xb5,0xb0,0x6c,0xde,0xa2,0xe0,0x42,0x64,0x24,0xd9,0xf9,0xea,0x35,
- 0xbf,0x0a,0xb6,0x79,0x9e,0x93,0x8d,0x66,0x78,0x03,0x65,0x3f,0x78,0xcf,0x5e,0xa1,
- 0x49,0xc5,0x05,0xf1,0x2c,0x3b,0x5b,0x1b,0x2b,0x59,0x0b,0xab,0x2c,0x29,0x39,0x45,
- 0xdc,0x9b,0xa7,0xf9,0x3f,0x1b,0xc0,0x78,0xa6,0xa7,0xd2,0xae,0xaa,0xad,0xab,0x9f,
- 0x39,0x8b,0x99,0x42,0xaa,0x43,0x6b,0xa9,0xa6,0x67,0xd9,0xc8,0x94,0x93,0xfe,0xfc,
- 0x97,0xf7,0x80,0x59,0xac,0xf3,0xd9,0x71,0xae,0x13,0x79,0x95,0xa6,0x86,0xe6,0xf3,
- 0xec,0x36,0xd9,0x6c,0x40,0x8e,0xfd,0x85,0xc8,0x7f,0xa5,0xd0,0x43,0x21,0xea,0x92,
- 0x10,0x07,0xf2,0xaa,0x8f,0x55,0x16,0x16,0x96,0x8c,0x0b,0xb5,0xb4,0xb5,0x2b,0xaa,
- 0xda,0x08,0xc6,0x34,0xfe,0xed,0xd8,0xa1,0xe3,0xc2,0x45,0x6c,0x62,0x7c,0xfa,0xd3,
- 0x4c,0xf2,0x74,0xac,0x53,0xc7,0x4e,0xab,0x56,0xad,0x92,0xf1,0xaf,0x0c,0x62,0x01,
- 0xc8,0x37,0xf3,0x69,0xd6,0x98,0xb1,0xe3,0x45,0x77,0x35,0x94,0xeb,0x2a,0x67,0x65,
- 0x35,0x04,0xd4,0x4f,0xf6,0xed,0x88,0x96,0xff,0x59,0x45,0x59,0xf5,0x64,0xc4,0x29,
- 0x9a,0xd5,0xae,0xbe,0xb1,0x61,0x57,0x60,0x20,0xea,0xeb,0x65,0x61,0x39,0x44,0x30,
- 0xb1,0x33,0x90,0x20,0x99,0x07,0x18,0x36,0x84,0xfb,0x0f,0x1e,0xb2,0x24,0xf7,0x6b,
- 0x68,0x6a,0x5c,0x43,0xe4,0x41,0x02,0x26,0x8d,0xf8,0x96,0xd9,0x43,0x44,0x7c,0x28,
- 0x2a,0x1c,0x65,0x6d,0x83,0xb2,0x92,0x9a,0xaa,0xda,0x9e,0xbd,0xfb,0xc8,0x1c,0x5f,
- 0x34,0xfe,0x65,0xb1,0x3f,0xc3,0x83,0xd4,0x36,0x08,0x11,0x27,0xf8,0x00,0xfe,0x9a,
- 0x3a,0x6d,0x1a,0xa3,0x73,0x90,0x64,0xee,0xc5,0xc6,0x92,0x8d,0xdb,0x85,0x7f,0x35,
- 0x35,0xb5,0x92,0x52,0xf1,0xcd,0xff,0xf4,0x99,0x33,0xa8,0x07,0x7b,0xb7,0x6e,0xdd,
- 0xf6,0x86,0x86,0xa0,0x97,0x80,0xbe,0xa3,0xaf,0x6f,0x40,0x5e,0xe2,0xe2,0xba,0xac,
- 0x46,0xa0,0x44,0xaf,0x20,0xea,0x1a,0xea,0x44,0x94,0x9a,0x1a,0x9b,0x1a,0x37,0xfb,
- 0xf9,0x93,0x23,0x1f,0x14,0x1c,0x2c,0xd8,0x2c,0x2d,0x23,0x53,0x45,0x19,0xb1,0xff,
- 0x0c,0xb2,0xb0,0xac,0xa9,0x13,0x29,0x4d,0xba,0xe0,0xeb,0x80,0x65,0x85,0x2e,0x01,
- 0x67,0x17,0xd7,0xf2,0x4a,0x6a,0xaa,0x2e,0x14,0x34,0xfe,0x05,0xad,0x7c,0x93,0xbf,
- 0x3f,0x6d,0x10,0x0a,0xde,0xbc,0x1e,0x34,0x08,0x29,0xa4,0xc5,0x3d,0x6d,0xc1,0xc2,
- 0x00,0xa5,0xb7,0x3f,0xf3,0x00,0x43,0x5d,0xdf,0x80,0x33,0x51,0x75,0x4d,0x1d,0x9a,
- 0xdd,0xae,0xb7,0x51,0xef,0xd7,0x6f,0xda,0xdc,0x52,0x53,0xf3,0x97,0xc0,0xdd,0x4c,
- 0x1b,0x3e,0x37,0x81,0xc9,0x32,0x37,0x5a,0xe7,0x3c,0xfc,0x15,0x17,0xa7,0xae,0xd6,
- 0x93,0x71,0xe1,0xb8,0xf1,0x13,0x18,0xdb,0x02,0x8d,0x7f,0x01,0xda,0xda,0xda,0x9c,
- 0x7c,0x0e,0xda,0x39,0x74,0x72,0xf2,0xd4,0x29,0xf2,0x92,0xae,0x9d,0xbb,0x6e,0xdb,
- 0xbe,0x5d,0x02,0xcb,0x86,0x0c,0xff,0xcb,0x28,0x78,0xfd,0x86,0x0c,0x1a,0xa5,0x01,
- 0xe6,0x18,0x68,0x28,0x41,0x41,0xbb,0x5f,0xbf,0x7d,0xcb,0x62,0x02,0xe2,0x81,0xa5,
- 0xfe,0x60,0xbf,0x7e,0xfd,0x05,0x33,0x39,0x0b,0xe2,0x71,0xe2,0x13,0x13,0xd3,0xbe,
- 0xe4,0x25,0x40,0x91,0x6e,0x6e,0xee,0x0c,0x6d,0x6b,0xe3,0x66,0x7f,0x52,0x09,0x9d,
- 0x3a,0x75,0xda,0x87,0x42,0x6a,0x88,0x53,0x6a,0x5a,0x9a,0x29,0xd1,0xbf,0x9e,0xbe,
- 0x5e,0xae,0x08,0x5e,0x61,0x0c,0xa4,0x65,0x64,0x0c,0x1d,0x3a,0x1c,0x7d,0x40,0x65,
- 0x25,0xe5,0x1b,0xb7,0x6e,0x33,0x29,0xf8,0xef,0x96,0x63,0x98,0xfd,0x99,0xc5,0xff,
- 0x0a,0xb6,0x08,0xd8,0x82,0x92,0x92,0x93,0x18,0x85,0x9f,0x50,0x3c,0x49,0x4a,0x24,
- 0xf9,0x4b,0x5f,0xcf,0x00,0xad,0xda,0x20,0xbd,0xff,0x15,0xf7,0xce,0x3b,0x75,0x59,
- 0xbe,0x7c,0x05,0x49,0x8e,0xcd,0x2d,0x2d,0xf0,0xb2,0x68,0xde,0x62,0x66,0x66,0xe6,
- 0xa5,0xe5,0xcc,0x02,0x19,0x5f,0x5a,0x9a,0xcf,0x9d,0x3f,0x8f,0x3a,0xbd,0xaf,0xf7,
- 0xf5,0x45,0x1f,0x1f,0x86,0xf7,0xf8,0x89,0x93,0x57,0xaf,0x45,0x0b,0x16,0x59,0xa6,
- 0x01,0xf6,0x76,0xeb,0x91,0xcc,0xe4,0xd2,0xc0,0x68,0xc0,0x6b,0x82,0xcd,0xd2,0x33,
- 0x33,0x51,0xff,0x3a,0x6b,0x1b,0x5b,0x5a,0xda,0x31,0x1a,0x80,0x3e,0xf6,0xec,0x0b,
- 0x41,0x6b,0x67,0x83,0x64,0xb2,0x6b,0x77,0x90,0x28,0xef,0x94,0x0f,0x9a,0xff,0x55,
- 0x87,0x56,0x07,0xc8,0x84,0xc7,0x8f,0x51,0x99,0x33,0x3c,0x22,0x02,0x35,0x25,0xd9,
- 0xdb,0x3b,0xa0,0x56,0x6b,0xba,0xfe,0x8b,0xd6,0x5f,0x88,0xa5,0x09,0xed,0xba,0x3a,
- 0xba,0xf7,0xee,0xc7,0x92,0x97,0xc0,0x4d,0xde,0xbc,0x7d,0x1b,0xf5,0x94,0x1b,0x3e,
- 0x7c,0x04,0x29,0x93,0x3c,0xcb,0x7d,0x4e,0x5a,0xdd,0x35,0x7a,0x6a,0xdc,0x7f,0x10,
- 0x4b,0x93,0xb1,0x3f,0x55,0x7f,0x22,0x03,0xe7,0xe1,0x2d,0x90,0x8e,0xf7,0x2c,0xfc,
- 0x0b,0x58,0xe6,0xe6,0x5e,0x5e,0x81,0x1c,0x94,0x94,0x95,0x97,0x4d,0x9f,0x3e,0x83,
- 0x6c,0x4f,0x56,0x9f,0x94,0x41,0x06,0x76,0x80,0xd8,0xec,0xbe,0x7c,0x85,0x50,0xcd,
- 0x17,0x64,0x6c,0x3d,0x5d,0xbd,0x29,0x53,0xa7,0x9d,0x3b,0x7f,0x01,0xf8,0x5a,0xc4,
- 0x7d,0x63,0x3e,0xbd,0xfe,0x20,0x08,0xb1,0x76,0xf6,0x0e,0x8f,0xe2,0xe2,0x04,0xcd,
- 0x35,0x0d,0x4d,0x0d,0x4f,0x92,0x9e,0xd8,0x8c,0xb6,0x45,0xf7,0x6d,0x6e,0x5d,0x6f,
- 0x22,0x70,0xf2,0x49,0x52,0x92,0x91,0x21,0x33,0x25,0x88,0xdc,0x0f,0xf2,0x40,0x0a,
- 0xef,0x0b,0x0b,0x19,0x6b,0x01,0x1e,0xf6,0xcd,0xbb,0xb7,0xe3,0x27,0x4c,0x64,0x78,
- 0x6d,0xc1,0xcf,0x2d,0x59,0xb2,0x94,0x51,0x04,0x0a,0x14,0xab,0x92,0xb2,0x52,0x50,
- 0xb7,0xf9,0x60,0x7c,0xe4,0x21,0xf2,0x62,0x14,0xe9,0x09,0xc9,0xc3,0x80,0x7e,0x03,
- 0x92,0x92,0x93,0x05,0xfb,0xe4,0xe6,0xdf,0xc0,0xfc,0xaf,0x3a,0xd0,0xcf,0x7f,0x4b,
- 0xcb,0xcb,0x40,0x6e,0xd7,0xd3,0xd1,0xf3,0xf2,0xf2,0x4e,0x4a,0x4b,0xfa,0xf4,0xf9,
- 0x13,0xba,0xc0,0xe1,0xcb,0xfc,0xd7,0x05,0x20,0x78,0x90,0x43,0x37,0xda,0xd6,0xb6,
- 0xa8,0x04,0xb1,0xf6,0x4b,0xef,0x7f,0xc5,0x83,0x92,0x82,0x52,0x48,0x68,0xa8,0xe0,
- 0x91,0x37,0x0c,0x5d,0xec,0x83,0x58,0x35,0x55,0x75,0xda,0xdb,0x87,0x9b,0x74,0x75,
- 0x73,0xe3,0x14,0x14,0xf0,0x9f,0x05,0xa8,0xea,0x79,0x76,0xb6,0xf5,0xc8,0x51,0xa8,
- 0xdd,0x23,0x3c,0x1c,0x77,0x18,0x6e,0x68,0x6a,0xf4,0xf6,0xf1,0x51,0x53,0x51,0x9b,
- 0x3b,0x77,0xde,0x83,0x87,0x0f,0xca,0x2a,0xca,0x69,0xbb,0x5f,0x69,0x45,0xf9,0x9a,
- 0x75,0xbf,0xc9,0xcb,0x31,0x47,0xde,0xd0,0xd0,0x28,0xbd,0xad,0xcb,0x3a,0x08,0x96,
- 0x86,0x58,0x0d,0x0b,0x45,0x05,0xc5,0xf8,0xc4,0x44,0xb4,0x52,0x03,0xfc,0x28,0xa8,
- 0xc6,0x45,0x25,0xc5,0xe4,0xff,0xbe,0xe2,0xe4,0xa3,0x95,0x82,0xb9,0xf3,0x59,0x45,
- 0x75,0xe3,0xa6,0xcd,0xf9,0x05,0xf9,0x0d,0x4d,0x8d,0x8c,0xde,0x40,0x71,0x7e,0x99,
- 0xf7,0x8a,0x21,0xbc,0xd1,0xe2,0x8f,0x78,0xab,0x69,0x88,0xd5,0xd0,0xd8,0x07,0x0f,
- 0xf8,0xa5,0x1f,0x5a,0x5a,0x1d,0x14,0x33,0x9f,0x65,0x0e,0x1c,0x68,0x86,0x0e,0xa9,
- 0x87,0xa7,0x37,0xea,0xb5,0x25,0x76,0xfd,0x41,0x4a,0x70,0x3a,0xfc,0xa8,0xb9,0xd9,
- 0xa0,0x3b,0x31,0x31,0x82,0x46,0x83,0xc6,0xe6,0xc6,0x94,0xb4,0x54,0x34,0xc5,0x37,
- 0xb7,0x74,0x94,0x40,0xe9,0x0a,0xc1,0x35,0x3b,0x7d,0xc6,0x2c,0xc6,0xac,0x86,0xc6,
- 0x56,0x96,0x43,0xe2,0x1f,0x27,0x90,0x1b,0x11,0x2c,0x90,0x7d,0x21,0xa1,0x8a,0x3d,
- 0x14,0x19,0xfd,0x9b,0x98,0x98,0x64,0x64,0x31,0x5d,0xaa,0xd8,0xf9,0xb7,0x47,0xf7,
- 0x1e,0x9e,0xde,0x3e,0x6f,0xdf,0xbf,0x13,0x9c,0x54,0xd5,0x35,0xd5,0x3b,0x03,0x02,
- 0x50,0xc3,0x4e,0x4f,0xf5,0x9e,0x89,0x49,0x78,0x02,0x3d,0x19,0x64,0x40,0xf1,0xe2,
- 0xe5,0x4b,0x5a,0x34,0x0d,0x7f,0xab,0x34,0x36,0x36,0x5d,0xb3,0x76,0x43,0x7c,0x42,
- 0x02,0xcd,0xad,0x88,0x06,0x9a,0xfd,0x99,0xbf,0x88,0x4c,0xfa,0x98,0xac,0xdb,0xb0,
- 0xe1,0x56,0x4c,0x0c,0x28,0x1d,0x77,0x62,0xef,0xfa,0x6d,0xd9,0xd2,0xb7,0x6f,0x5f,
- 0x9a,0xd2,0x34,0x72,0xa4,0x35,0xe9,0xe8,0xf5,0xb9,0xb6,0x66,0xe5,0xaa,0x5f,0xc9,
- 0xc6,0x20,0xee,0x4e,0x9e,0x32,0x2d,0xfa,0xc6,0xcd,0x0f,0xc5,0xc5,0xf5,0x8d,0x0d,
- 0x75,0x0d,0xf5,0xa5,0xe5,0xe5,0x57,0xae,0x5e,0x03,0x2e,0xc3,0x1c,0x3f,0x54,0x6f,
- 0xdc,0xba,0xc5,0xd8,0xba,0x63,0xee,0xdd,0x1b,0x3f,0x7e,0xc2,0x68,0x1b,0x5b,0xd0,
- 0x14,0x78,0xff,0xda,0xda,0xda,0xf3,0xfe,0xb0,0xb7,0x73,0xb0,0xb3,0xb5,0x07,0xd8,
- 0xdb,0x8f,0x19,0x65,0x6d,0x03,0xfb,0x3f,0x7a,0xc3,0xad,0x89,0x1f,0xdb,0x54,0x1d,
- 0xa5,0xe5,0xbf,0xea,0x40,0xe7,0x5f,0xa0,0x78,0xf8,0x51,0xde,0x8b,0x30,0xec,0x65,
- 0xb8,0x68,0xd1,0xbf,0x80,0x8c,0x5e,0x71,0x38,0xb0,0x75,0xc0,0x73,0xf1,0x00,0x94,
- 0x11,0x79,0xf1,0xd2,0x98,0x31,0x63,0xd1,0x32,0xe5,0x6b,0xd7,0xad,0x43,0xcb,0x3a,
- 0xb7,0x17,0xff,0x76,0x68,0x3d,0x50,0x98,0x3f,0x7f,0xc1,0xa5,0xe8,0xab,0xa9,0x19,
- 0xe9,0x0f,0xe3,0xe2,0xfc,0xb7,0x6e,0x33,0x31,0x31,0x65,0x79,0xf5,0xbc,0x17,0x34,
- 0x76,0xec,0x38,0xd0,0x17,0x12,0x93,0x93,0x93,0x52,0x52,0xc2,0x0e,0xff,0x61,0x63,
- 0x33,0x1a,0xf5,0x3a,0x06,0xe1,0x90,0x16,0xd5,0x05,0xaf,0x75,0x85,0x87,0x27,0x6f,
- 0x2e,0x69,0x69,0x68,0x81,0x56,0xb2,0x3f,0xec,0x50,0xd6,0xb3,0x67,0x30,0x51,0xe1,
- 0x91,0x81,0xd7,0x60,0x70,0x3e,0x94,0x7c,0xb8,0xff,0xe0,0xe1,0xbc,0xf9,0x0b,0x15,
- 0x7a,0x20,0x7b,0xe6,0xc4,0x89,0x13,0xcb,0xda,0xa6,0xef,0xfe,0x58,0xfd,0x91,0x5b,
- 0x64,0x13,0xe3,0xac,0xa1,0x43,0x86,0x9d,0x3e,0x73,0xa6,0xa4,0xb4,0x04,0x7e,0x17,
- 0x7a,0xae,0xad,0xaf,0x83,0x09,0xf9,0x2c,0xfb,0xf9,0xb1,0x53,0xa7,0x5c,0x5c,0x5d,
- 0x5d,0x97,0x2d,0x2b,0xad,0x28,0x65,0xdc,0x61,0x73,0x4b,0xf3,0xf6,0x1d,0x3b,0x48,
- 0x67,0x03,0x1e,0x60,0x26,0x80,0xd2,0xe7,0xbf,0x75,0xeb,0xdd,0x98,0x98,0xcc,0xa7,
- 0x4f,0xe1,0x31,0x6f,0xdd,0x8d,0x09,0x3d,0x70,0x70,0xfa,0x8c,0x99,0x13,0x26,0x4e,
- 0x2a,0x6d,0x5b,0x4b,0x82,0x85,0x7f,0x79,0x30,0xec,0x65,0xe4,0xe9,0xe5,0x7d,0xfd,
- 0xe6,0x4d,0x58,0x4d,0x8f,0x12,0x12,0x02,0x02,0x83,0x2c,0x29,0x8e,0x64,0xa0,0x7e,
- 0x5e,0xb8,0x88,0xb8,0x04,0xb4,0x88,0x5b,0x7f,0x90,0xe2,0x7f,0xc5,0x5f,0xe0,0xa0,
- 0x05,0xfb,0xac,0x5c,0x75,0xf9,0x6a,0x74,0x7a,0x56,0x56,0xfc,0xe3,0xc7,0x7b,0x43,
- 0x43,0x06,0x0f,0xfe,0x09,0xcd,0x24,0x06,0xca,0xe3,0xd1,0x63,0xc7,0xbe,0x60,0x81,
- 0x69,0xd1,0x37,0x6f,0x69,0x68,0x68,0x92,0x97,0xf4,0xef,0xdf,0x7f,0xd7,0xee,0xa0,
- 0xbc,0xfc,0xfc,0x9a,0xba,0x3a,0x78,0x1d,0xb0,0x15,0xc0,0x18,0xae,0x58,0xe1,0xa1,
- 0xae,0x86,0x08,0x7e,0xcb,0x3d,0xbd,0xeb,0xea,0x99,0x26,0x6b,0x76,0xfe,0xe5,0xcd,
- 0x52,0x3b,0x3b,0xfb,0xfd,0x07,0x0f,0x3e,0x8a,0x8f,0x87,0x51,0xbd,0x16,0x1d,0xed,
- 0xe2,0xe2,0x4a,0xdb,0x30,0xad,0x86,0x0c,0xa9,0x10,0xf3,0x4c,0x41,0x86,0xff,0x65,
- 0x80,0x80,0xbd,0x63,0xe7,0x4e,0xda,0xdc,0x6b,0x35,0x35,0x5b,0x46,0x9c,0x39,0x2b,
- 0x98,0xd5,0x47,0x2c,0xa0,0xf6,0x67,0xd8,0x4e,0xc9,0xcd,0x8d,0x25,0xdc,0x83,0x07,
- 0x98,0xf3,0x17,0x29,0x4e,0x17,0x85,0xc5,0x45,0xe6,0xe6,0x16,0xe8,0x86,0x09,0x94,
- 0x01,0x8b,0x71,0xd0,0xa0,0xc1,0x66,0x66,0xe6,0x9a,0x9a,0x5a,0x78,0x9b,0x4e,0x9d,
- 0x61,0xcd,0x92,0x0c,0x75,0xfc,0x64,0xb8,0x94,0xb9,0x77,0x80,0x31,0x0f,0x10,0xb9,
- 0x16,0x8f,0x1c,0x3d,0x4a,0x6e,0x59,0x68,0xfe,0x49,0x1e,0x40,0x8b,0x1f,0x31,0x9c,
- 0x69,0x35,0x95,0x97,0xef,0xa6,0xa3,0xab,0x37,0xd0,0xcc,0x7c,0xf0,0x4f,0x16,0x7d,
- 0xfa,0x18,0xc3,0xe0,0xd0,0xd2,0x34,0xa9,0x28,0xab,0x64,0xe7,0xe4,0xa0,0x3d,0x4b,
- 0x7f,0xfe,0xdb,0xa5,0x73,0x17,0x86,0x30,0xc3,0xfe,0x1e,0x79,0x99,0x21,0x99,0x25,
- 0x33,0x3a,0x74,0x64,0x0f,0x6a,0x1e,0x3e,0xe2,0xe7,0x3a,0xca,0x61,0x1f,0xe8,0x56,
- 0x8b,0x9d,0x99,0x29,0x25,0x61,0x78,0xb5,0x34,0xb5,0xfa,0x0f,0x18,0x08,0x5b,0xbd,
- 0x89,0x69,0x5f,0x98,0x00,0x34,0xc9,0x01,0xee,0x24,0x32,0xea,0x12,0x69,0x24,0x39,
- 0x7d,0xf6,0x1c,0x68,0xbb,0xb4,0x47,0x00,0x35,0x07,0x94,0xca,0x9f,0x2c,0x2c,0x8d,
- 0x4d,0x4c,0x35,0x34,0xb5,0xf8,0xa6,0xd4,0x9f,0x2c,0xac,0xd0,0x13,0xd5,0xd2,0xb2,
- 0x52,0x47,0xc7,0x39,0x42,0x67,0x0b,0x63,0xe8,0x74,0x7e,0xd4,0xc9,0xcb,0xcf,0x13,
- 0xec,0x87,0x76,0xfe,0x4b,0x8e,0x9e,0xd0,0xd5,0x64,0x69,0x39,0xe4,0x43,0x21,0xee,
- 0x00,0xd9,0x2e,0xf1,0x47,0x12,0x2c,0xf0,0x01,0x03,0x06,0xbe,0x7d,0xff,0x1e,0xbd,
- 0xa5,0xfa,0xc6,0x7a,0xdf,0x4d,0x7e,0xb4,0x1e,0x14,0x15,0x95,0x60,0x09,0x0c,0x1a,
- 0xfc,0x93,0x41,0xaf,0x5e,0xb4,0x64,0x1d,0xfd,0xfb,0x0f,0xcc,0x79,0xf1,0x82,0xec,
- 0x19,0xf8,0x77,0xc2,0xa4,0x89,0xa2,0x0c,0xa9,0xd0,0x47,0x80,0xdd,0x72,0x57,0x40,
- 0x60,0xfb,0xee,0xcf,0x32,0xfc,0xff,0x06,0xa8,0x09,0x33,0x67,0x20,0xbe,0x91,0xbc,
- 0xe9,0xe4,0xbc,0xcc,0xed,0x79,0x4e,0x8e,0x34,0xc7,0x19,0x64,0xfd,0x85,0x4e,0x1d,
- 0x3b,0xdb,0x3b,0x38,0x18,0x60,0x3e,0x36,0x6c,0x5b,0x53,0xc7,0xce,0x5e,0xde,0x3e,
- 0x95,0x55,0x54,0xed,0xfb,0x4a,0x74,0x34,0x08,0xff,0x12,0xe4,0x82,0x86,0x4b,0x46,
- 0x8d,0xb2,0x79,0x8e,0x31,0x54,0x78,0x44,0x84,0x28,0xe1,0xcf,0x2c,0x00,0x39,0x9f,
- 0x91,0xf8,0x11,0x06,0xf3,0x8f,0xa3,0x47,0x45,0xcc,0xff,0xcc,0xc3,0x9b,0xf7,0xef,
- 0xac,0xac,0x86,0x49,0x76,0x03,0x20,0xbd,0xaf,0xf0,0xf0,0xa2,0x79,0xe6,0x48,0xcf,
- 0xbf,0xc3,0x46,0x8c,0x30,0x37,0x33,0x17,0x7d,0xd8,0x55,0x95,0x55,0x41,0xb9,0xb3,
- 0xb6,0xb6,0x11,0x3d,0x8b,0x48,0x37,0xf9,0xee,0xbb,0x83,0xf7,0xd0,0xde,0x7b,0x75,
- 0xcd,0xe7,0x79,0x0b,0x24,0xcc,0x81,0x06,0xf7,0x60,0x67,0x3f,0x06,0x3d,0x03,0x2d,
- 0xab,0x28,0x9f,0x32,0x05,0xb1,0xe4,0xb3,0xc3,0xd4,0xd8,0x34,0xf7,0x25,0xb2,0xc9,
- 0xc3,0x4b,0x7f,0x9e,0xf3,0x62,0xe0,0x40,0x73,0xb1,0x3a,0x54,0x53,0x51,0x7b,0xd2,
- 0xd6,0x98,0x49,0xe3,0xdf,0xb1,0x63,0xc7,0xf5,0xe8,0x2e,0x46,0x12,0x4e,0xe8,0x24,
- 0x34,0x74,0x3f,0xed,0x08,0x49,0x7a,0xff,0x67,0x3d,0x3d,0xfd,0x61,0xc3,0x86,0x8b,
- 0xb5,0x18,0x41,0x64,0xfa,0x7d,0xe7,0x2e,0x16,0x3f,0xba,0x77,0x1f,0xde,0x4f,0x9e,
- 0x32,0x55,0xb2,0x2c,0x67,0xea,0xaa,0xea,0xa7,0xc2,0xc3,0xd1,0xe7,0xe5,0xf2,0xef,
- 0x44,0x84,0x7f,0x1d,0xc6,0x8e,0x23,0xdd,0xb7,0xd8,0x31,0x64,0xc8,0xd0,0xec,0x5c,
- 0x5c,0xd0,0x95,0x41,0x06,0x14,0x6f,0xde,0xbd,0x45,0xa3,0xd4,0x61,0xa3,0x98,0x34,
- 0x69,0x72,0x51,0x49,0xb1,0x94,0xfd,0x93,0xf1,0x47,0x20,0x43,0xae,0x5d,0xbf,0xfe,
- 0xc8,0xb1,0xa3,0x5a,0x58,0x64,0x0a,0x0a,0x90,0x04,0x26,0x4c,0x9c,0xc4,0x52,0xd7,
- 0xb5,0xa5,0x55,0x91,0xbf,0x7c,0xf9,0x0a,0x37,0x5b,0xaf,0x38,0xab,0x1e,0x1e,0xd3,
- 0xdc,0x7c,0x50,0x46,0x66,0x26,0x2a,0x63,0x9c,0x3c,0x19,0x2e,0x4d,0x56,0x43,0x5e,
- 0xff,0x61,0x87,0xdb,0xe8,0xbf,0x34,0xfe,0x65,0xf1,0xbf,0xe2,0xbc,0xce,0x37,0x37,
- 0x47,0xfc,0x57,0x85,0xff,0x7a,0xc7,0x4e,0x33,0xa6,0xcf,0x78,0xf7,0x9e,0x9a,0xc6,
- 0x47,0x7a,0xff,0xab,0xa5,0xae,0xce,0xd1,0x37,0x6e,0x18,0x19,0xf5,0x16,0x65,0xd8,
- 0xe1,0x3d,0xba,0x2f,0xf7,0xa8,0xad,0xaf,0x7d,0x14,0x17,0x07,0x64,0x24,0xe2,0x53,
- 0x4c,0x9a,0x34,0xe5,0x43,0x11,0x35,0x54,0x0d,0xf6,0x4f,0x51,0x54,0x4b,0x14,0xa0,
- 0x03,0x26,0xa5,0x50,0x83,0x80,0xd2,0x33,0xb3,0x46,0xdb,0x8c,0x16,0xab,0x43,0x5d,
- 0x5d,0xfd,0x74,0x7a,0xf6,0xb3,0xa4,0xe4,0x34,0x5b,0x3b,0x7b,0xa1,0x45,0x1c,0xf8,
- 0x50,0xec,0xa1,0x78,0xfd,0x66,0x9b,0x34,0x95,0x34,0xff,0xab,0xcb,0x57,0xa3,0x57,
- 0x78,0x7a,0x88,0x68,0xab,0x81,0x97,0xe8,0xe8,0x34,0xa7,0xea,0x13,0x55,0x94,0x95,
- 0x5e,0xff,0x1d,0x3e,0x7c,0xc4,0x9f,0x71,0xf1,0x5c,0x3b,0xb3,0xc8,0xf2,0x86,0xe3,
- 0x1c,0x27,0x96,0xb7,0xcc,0x43,0x5e,0x1e,0x07,0x26,0x83,0xb8,0xb9,0xd0,0x35,0x7a,
- 0x6a,0x04,0xef,0xd9,0x4b,0x13,0x36,0x60,0xfe,0x8c,0x9f,0x80,0xf0,0xef,0xe1,0xa3,
- 0x47,0x82,0x82,0xf7,0xca,0xcb,0xe3,0xa7,0x06,0x24,0x94,0x14,0x94,0xaf,0x5f,0xbf,
- 0x2e,0x7a,0xf4,0xa2,0x0c,0x32,0x00,0xf2,0xf2,0x39,0x66,0xd8,0x4e,0xd8,0x5d,0xbe,
- 0xfb,0xa9,0x88,0x08,0xf4,0x2c,0x46,0x2c,0x90,0xfa,0x2f,0xf0,0xef,0xfa,0x8d,0xbe,
- 0x30,0xed,0x23,0xa3,0x2e,0x19,0x1b,0x9b,0xb0,0x13,0x1c,0xec,0xea,0x6a,0xaa,0x6a,
- 0xde,0x2b,0x57,0xa1,0x66,0x3d,0x06,0x60,0x89,0xfd,0x95,0x90,0x30,0x6e,0xfc,0x04,
- 0xd4,0x35,0x82,0xec,0x59,0x45,0x59,0x65,0xd1,0xa2,0xc5,0x59,0x59,0xcf,0x68,0x0a,
- 0xfe,0xa9,0x70,0x69,0xf5,0x5f,0x6e,0xe2,0xa9,0x43,0xcc,0xc4,0x53,0x47,0x8f,0x9d,
- 0x40,0x4f,0x03,0x69,0xfc,0x5b,0x52,0x56,0xba,0xdc,0xc3,0x43,0x5b,0xeb,0x47,0xd1,
- 0x77,0x9e,0x56,0x33,0xaf,0xba,0x9b,0xbb,0xfb,0x1b,0xd6,0x71,0x13,0x2f,0xff,0xc6,
- 0xb1,0xe3,0xe4,0xe1,0xf2,0xd2,0x65,0xce,0x9f,0x3e,0x57,0x3f,0x78,0xf8,0xa7,0xf5,
- 0x28,0x1b,0xd4,0xcb,0x97,0x0f,0x79,0xb9,0x6e,0xae,0xcb,0xdc,0xdf,0xb6,0x0a,0x03,
- 0x4d,0xcd,0x5f,0x12,0x53,0x52,0x7e,0x1e,0xf1,0x33,0x7b,0x5e,0x53,0xf8,0x39,0x9b,
- 0x51,0xa3,0x69,0xd2,0x11,0x0f,0xc0,0xe6,0xbb,0x02,0x83,0x7a,0x19,0xf4,0x82,0x21,
- 0x15,0x5d,0xf4,0x52,0xe8,0xa1,0x38,0x71,0xf2,0x94,0xe4,0xd4,0x74,0x96,0x0d,0x13,
- 0x7e,0x34,0x2f,0xbf,0xc0,0xc9,0x69,0x1e,0xe8,0x41,0x22,0xf6,0x0c,0x1a,0xeb,0x43,
- 0xcc,0x49,0x58,0xa0,0xc3,0x7c,0x9f,0x95,0xab,0x75,0x7e,0xd4,0x15,0x85,0x85,0x61,
- 0xc4,0x8e,0x1d,0x3b,0x2e,0xf8,0xec,0x91,0x51,0x17,0x51,0xfe,0xfd,0x33,0xfe,0x51,
- 0x79,0x55,0xf9,0xd6,0xed,0xbf,0xeb,0xea,0xe8,0xb1,0x53,0x1e,0x08,0x7e,0x8b,0x16,
- 0x2f,0x79,0xc5,0xa1,0xe6,0x67,0x6b,0x11,0x5f,0xff,0x25,0x3d,0x99,0x87,0x0e,0x1d,
- 0x56,0x58,0x5c,0x94,0x9e,0x91,0xe5,0x38,0x67,0xae,0xd0,0xea,0x18,0xdd,0xe4,0xbb,
- 0x4f,0x9e,0x32,0xad,0x35,0x98,0x42,0xf8,0x6e,0x03,0x5a,0xb0,0xef,0x26,0x3f,0x0d,
- 0x0d,0x4d,0x51,0x98,0x5d,0x5e,0x4e,0x1e,0x64,0x80,0x2b,0x57,0xaf,0xd1,0x22,0xd7,
- 0x5a,0xe8,0xe7,0xbf,0xa7,0xcf,0x9e,0xa9,0x6b,0xa8,0xdf,0x17,0xb2,0xdf,0xd4,0xd8,
- 0x94,0xfd,0x65,0xc1,0xdc,0x30,0x32,0xea,0x73,0x30,0xec,0x90,0x58,0xae,0xec,0x32,
- 0xc8,0xd0,0xd2,0xca,0xbf,0xa8,0x26,0x02,0xe2,0xdc,0x9d,0x98,0x18,0xe9,0xfb,0x77,
- 0x71,0x73,0x57,0x52,0x52,0x16,0x84,0xaa,0xaa,0xda,0x96,0x6d,0xdb,0x60,0xae,0x36,
- 0xb7,0xb4,0xc4,0x3f,0x7e,0xbc,0x78,0xf1,0x92,0xff,0x63,0xef,0x3c,0xa0,0xa2,0x3a,
- 0xba,0x07,0x7e,0xce,0x5f,0x41,0x84,0x28,0x20,0xbb,0x2c,0x65,0x17,0x0b,0x6f,0x05,
- 0x2c,0x08,0x28,0x0a,0x24,0x46,0xc5,0x5e,0x40,0x50,0x54,0x96,0x2a,0xbd,0xaa,0x08,
- 0x46,0x45,0xfd,0x54,0x94,0x58,0x62,0x12,0x03,0x6a,0xa2,0x11,0x6b,0xc4,0x12,0x5b,
- 0x34,0xc6,0x12,0xfb,0x17,0x35,0x08,0x96,0x88,0x62,0x49,0xfc,0x8c,0x05,0x6c,0xa0,
- 0x91,0x26,0xb8,0xe8,0x39,0xff,0x3b,0xf3,0x76,0x97,0xc7,0x16,0x14,0x05,0x57,0xc8,
- 0xdd,0xf3,0x3b,0x73,0x66,0xee,0xdc,0x99,0xb9,0x33,0xaf,0xdc,0x37,0x6f,0xdf,0x9b,
- 0x07,0x12,0xb5,0xe7,0x37,0x63,0x23,0xe3,0x01,0x03,0x07,0x6f,0xdb,0xb6,0xbd,0xf6,
- 0x0f,0x91,0x28,0x01,0x47,0xe8,0xca,0x55,0x19,0xbd,0x7a,0xb9,0x68,0x7a,0xe2,0xa5,
- 0x39,0x5d,0xc4,0x63,0xb8,0xc7,0xf0,0xad,0xdb,0xb6,0x16,0x69,0xbe,0xa1,0x0d,0x64,
- 0x6e,0xd9,0x66,0x66,0x66,0xae,0x64,0x7f,0x9d,0x80,0x86,0xd6,0xac,0x5d,0xa7,0x54,
- 0xed,0xc6,0x4d,0x9b,0xe0,0x04,0xa2,0xaa,0x99,0x77,0x4d,0xc3,0x7a,0x05,0xaf,0x5e,
- 0x3e,0x2b,0x2e,0x3e,0x7e,0xf2,0x64,0x4a,0x4a,0xaa,0xbb,0x7b,0x7f,0x70,0xac,0xb5,
- 0x9c,0x7c,0x74,0x9a,0x93,0x2b,0x16,0x2f,0x6f,0x9f,0x6d,0xdb,0xb7,0xbf,0x76,0xc1,
- 0xa8,0x3a,0xf9,0xdf,0x4d,0x99,0x99,0xa6,0xa6,0x02,0x25,0xb3,0x27,0x4d,0x49,0x2c,
- 0xab,0x28,0xaf,0x7a,0xf5,0xf2,0xea,0xf5,0x1b,0x33,0x67,0xce,0xb1,0x30,0x17,0xaa,
- 0xfd,0x1b,0xda,0xce,0xb6,0xf3,0xfc,0xd4,0x85,0x45,0x35,0x3f,0x91,0xfc,0xe7,0xcd,
- 0xbf,0x52,0xe6,0x7d,0xde,0xb1,0xa3,0x8d,0xda,0xee,0xc0,0x80,0x84,0x47,0x44,0x5e,
- 0xbd,0x7e,0xed,0xb5,0x17,0x81,0x70,0x9e,0xcc,0xb9,0x70,0x6e,0x69,0x5a,0xba,0x87,
- 0xa7,0x57,0xdb,0xb6,0xed,0xd4,0x3e,0x81,0xa6,0x18,0x1c,0xc3,0xd6,0x86,0x9f,0x7e,
- 0xda,0x77,0xf9,0x8a,0x95,0xf9,0x0f,0xee,0xbf,0xc9,0x09,0xbf,0xb0,0xa8,0x68,0xeb,
- 0x8f,0xdb,0x87,0x0f,0xf7,0x84,0xab,0xb5,0x5a,0x86,0x1d,0x86,0x11,0x14,0xfa,0xf7,
- 0x1f,0x90,0x55,0xf3,0x71,0x77,0x55,0x4a,0xcb,0x4b,0x0f,0x1e,0x3a,0x18,0x1a,0x1a,
- 0x2e,0x30,0x35,0xaf,0xe5,0xcb,0x4a,0xd0,0x96,0xa5,0xa5,0x70,0xdd,0xba,0xf5,0xdc,
- 0x2b,0x04,0xd8,0xa6,0xea,0xfd,0xef,0xe9,0x13,0xec,0x38,0xec,0x3f,0x70,0xc0,0xd7,
- 0x57,0xa2,0x69,0x09,0x9d,0x4e,0x9d,0x3a,0xc3,0x80,0x3f,0x7e,0xdd,0x03,0x42,0xd0,
- 0x8a,0xea,0x9e,0x6c,0x63,0x63,0xfb,0xdb,0xe9,0x53,0xaa,0xca,0x27,0x4e,0x9e,0x50,
- 0x3d,0x46,0x06,0x0e,0x1c,0xf4,0x88,0x3e,0x31,0x72,0xff,0xe1,0xc3,0xf4,0xe5,0xcb,
- 0xbb,0xf7,0x70,0x56,0xbb,0x52,0x1c,0xf4,0xd1,0x9a,0x11,0x2f,0x5c,0xbc,0xf0,0xf6,
- 0x5d,0xf5,0x7f,0xfb,0x6a,0xda,0xdc,0xfb,0x0e,0xee,0xf7,0x0f,0x08,0x34,0x13,0x68,
- 0xbc,0x2e,0xd2,0x6f,0xa9,0xef,0xe8,0xe0,0x98,0xfa,0xf9,0x82,0xbc,0x6b,0xd7,0x6a,
- 0xaf,0xad,0xb8,0xb4,0x64,0xec,0xd8,0x71,0xaa,0xfd,0xdd,0x46,0x17,0xbf,0xaa,0x78,
- 0x51,0xf9,0xdb,0xe9,0xd3,0xc1,0xc1,0xa1,0x7c,0x53,0xe5,0xa5,0xae,0x58,0x60,0x77,
- 0x1a,0x36,0xdc,0xf3,0xc8,0xb1,0x63,0xb8,0xe6,0x06,0xf2,0x16,0xdc,0xbe,0x7b,0xbb,
- 0x67,0x4f,0x35,0x4f,0x48,0xc2,0xfc,0x37,0x73,0xf3,0xe6,0x77,0x7f,0x91,0x0d,0x1c,
- 0xdc,0xdd,0xfc,0xfc,0x3b,0xf7,0xee,0x01,0x77,0xf3,0xef,0xd3,0x30,0xff,0x59,0x71,
- 0x89,0xe2,0x73,0x33,0x70,0x7a,0xb9,0x79,0xeb,0xd6,0x0f,0x99,0x5b,0xa6,0x27,0xcf,
- 0x0c,0x0e,0x0d,0x19,0x37,0xce,0x17,0xae,0xcf,0xa7,0x4d,0x9b,0xbe,0x72,0xe5,0xaa,
- 0xcb,0x79,0x79,0x6a,0x9f,0xda,0x7d,0x13,0xe0,0x20,0xbd,0x98,0x9b,0x9b,0xb1,0x76,
- 0xcd,0xd4,0xa9,0xd3,0x43,0xc3,0xc3,0xe1,0xa4,0x14,0x18,0x14,0x1c,0x1d,0x1b,0x97,
- 0x9a,0xba,0x60,0xfb,0xf6,0x1d,0x7f,0xdf,0xb9,0x5b,0x29,0x7d,0xfd,0x9d,0xa2,0x92,
- 0xb2,0xb2,0xbb,0xf9,0x05,0xac,0xf1,0x6f,0x07,0x74,0xb9,0xa4,0x4c,0x79,0xc5,0x06,
- 0x38,0xe4,0xef,0x15,0x3c,0xe0,0x0c,0x08,0x84,0x64,0x88,0xa4,0x55,0xaf,0xef,0x17,
- 0xcc,0x1c,0xc1,0xa4,0xe3,0x27,0x4e,0x7e,0xb7,0x72,0x55,0xf2,0x8c,0x59,0x61,0x11,
- 0x11,0x12,0x89,0xbf,0xaf,0x44,0x32,0x3e,0x34,0x74,0x62,0x42,0xc2,0x92,0x2f,0xbf,
- 0xda,0xf7,0xcb,0x2f,0x37,0xff,0x7e,0xfd,0x12,0xd6,0x2c,0x75,0xfa,0xff,0x57,0xed,
- 0x68,0x3c,0x7d,0x56,0xc3,0xc5,0xdf,0xbb,0x5f,0xb0,0x63,0xe7,0xee,0xe9,0xc9,0xb3,
- 0x82,0x43,0x42,0x24,0x7e,0xfe,0x11,0x51,0x51,0x73,0x53,0x52,0x7e,0xd9,0xbf,0x5f,
- 0xd3,0xf2,0xa4,0xb0,0x1b,0x14,0x15,0x3d,0xd9,0x7f,0xe0,0xd0,0xfc,0xd4,0xcf,0x23,
- 0x22,0xa3,0xfd,0xfd,0xfd,0x83,0x82,0xc7,0x7f,0xf6,0xd9,0x54,0x98,0x6b,0xdf,0xba,
- 0xfd,0xb7,0xda,0x37,0x7d,0x6a,0x01,0xc6,0xef,0xe1,0xe3,0xc7,0x59,0xd9,0xe7,0xd7,
- 0xae,0xdb,0x30,0x37,0x65,0x7e,0x64,0x4c,0x74,0x60,0x50,0xd0,0xb8,0x71,0xe3,0x82,
- 0x43,0x42,0x63,0xe3,0xe2,0xa1,0x89,0x1f,0x77,0xec,0xbc,0x92,0x97,0xf7,0x16,0xcb,
- 0x23,0x80,0x25,0x30,0x17,0xde,0xb1,0x6b,0x77,0x4a,0xca,0xbc,0x98,0xd8,0xb8,0x80,
- 0xc0,0x40,0xd8,0x51,0xa1,0x8f,0x13,0x26,0x26,0xcc,0x99,0x9b,0xb2,0x6e,0xc3,0xc6,
- 0x53,0xbf,0x9f,0xbe,0x9b,0xff,0xa0,0x4e,0x35,0xdf,0xbb,0x9f,0xbf,0xff,0xd0,0xa1,
- 0x85,0x8b,0x16,0x47,0xc7,0xc6,0x83,0x9d,0x12,0x89,0x24,0x28,0x98,0xec,0xa2,0x33,
- 0x66,0xcc,0x5c,0xbe,0x7c,0xc5,0xb1,0xe3,0xc7,0x61,0x27,0x51,0x1a,0x01,0x4d,0xcf,
- 0x3f,0x9f,0xe4,0x7c,0x82,0x0a,0xf6,0xa2,0xab,0xd7,0xaf,0xaf,0xdb,0xb0,0xe9,0xb3,
- 0xa9,0xd3,0xc9,0x56,0x90,0x48,0x60,0x2b,0xa4,0xcc,0x9b,0x5f,0xdb,0x56,0x50,0xde,
- 0xd0,0xa5,0xec,0x9e,0xa9,0xd8,0x45,0x81,0x82,0x07,0x8f,0xd4,0xba,0x18,0x38,0xd0,
- 0x38,0xca,0x05,0xec,0xc1,0xfe,0xa8,0xb0,0x90,0x7b,0xd9,0x50,0x5c,0x5a,0x9c,0x75,
- 0x36,0x7b,0xe9,0xd2,0xf4,0xc9,0x89,0x49,0x70,0x18,0xfa,0xf9,0xf9,0x85,0x85,0x87,
- 0xcf,0x4d,0x99,0xb7,0xe7,0xe7,0x5f,0x6a,0x79,0x5f,0xac,0x76,0xe0,0xaa,0x0c,0xae,
- 0xb4,0x77,0xee,0xde,0x33,0x3f,0x75,0x41,0x74,0x4c,0x8c,0x9f,0x7f,0x80,0x9f,0x9f,
- 0x7f,0x68,0x78,0x04,0x9c,0x46,0x56,0x67,0xac,0x3d,0x9b,0x93,0xf3,0xda,0x15,0xf0,
- 0x14,0x3c,0x2a,0x2c,0xaa,0xfd,0xb0,0x85,0xfd,0xea,0xf6,0x9d,0xbb,0xbb,0x76,0xef,
- 0x9e,0x39,0x6b,0x76,0x58,0x44,0xa4,0x9f,0x3f,0x38,0xff,0xa0,0xb8,0x09,0xf1,0x2b,
- 0x57,0xad,0xba,0xf0,0xc7,0xa5,0xb7,0x3e,0x47,0x21,0x48,0xe1,0x93,0xc2,0x11,0x1e,
- 0x1e,0x6a,0xaf,0xe7,0xe3,0xe2,0xe3,0xeb,0xba,0xda,0xcf,0xbb,0x00,0x97,0x9a,0xb0,
- 0xcf,0x3f,0x2b,0x29,0x86,0x10,0xe2,0xf5,0xf3,0x0e,0xfb,0x2b,0x45,0xb5,0xcf,0xc0,
- 0xeb,0xc1,0x21,0x09,0x27,0xb4,0xa6,0xf1,0x76,0x3c,0xf4,0xa2,0x52,0xca,0x76,0xad,
- 0x04,0xce,0x6f,0x10,0x81,0x33,0x61,0x5d,0xbb,0x56,0x27,0xff,0xfb,0xe6,0x80,0x61,
- 0x30,0xda,0xb0,0x29,0x4b,0xcb,0xcb,0x54,0x57,0x00,0x53,0x0b,0x9c,0xae,0x4b,0xcb,
- 0xcb,0xd9,0xad,0xff,0xbc,0xb2,0xe2,0x5d,0xb7,0xd1,0x2b,0xf2,0x51,0x24,0xd8,0xdc,
- 0xd4,0x0c,0xd8,0xf4,0x64,0x70,0xde,0xd0,0x92,0xda,0x81,0x4a,0x68,0xb5,0xc5,0x60,
- 0x2a,0xdd,0xa3,0xde,0xb5,0x5a,0xe8,0x38,0xc7,0x4e,0xb2,0x8b,0x92,0x5b,0x43,0x1a,
- 0xba,0xaf,0xd1,0xff,0x9e,0x52,0x33,0x33,0x85,0x61,0x64,0xab,0xa5,0xbb,0xbd,0xf6,
- 0x57,0x64,0x92,0x56,0x55,0xc1,0x56,0x60,0x77,0x0c,0xd8,0xca,0xf5,0x65,0x12,0x1c,
- 0xd1,0xdc,0xa3,0x00,0x2e,0x81,0x5e,0xbb,0x28,0xd0,0x5b,0x03,0x95,0xc3,0x2e,0x0d,
- 0x0d,0xb1,0x5b,0xaa,0xe1,0x1a,0x42,0xfe,0x25,0xc0,0x41,0x0a,0xd7,0xc9,0x6a,0x6f,
- 0xad,0x08,0x2d,0x85,0x47,0x8e,0x1e,0xd5,0xf4,0x9d,0x38,0x05,0x15,0x95,0x15,0xf8,
- 0xd4,0x41,0x23,0xa5,0x4e,0xcf,0x5f,0x21,0x5a,0x67,0xfb,0x4e,0xf5,0xcf,0x3f,0xff,
- 0xf7,0xb4,0xc6,0x4f,0x30,0x23,0x08,0xf2,0x21,0xf3,0xeb,0xe1,0x23,0x6a,0x57,0x70,
- 0xd5,0x69,0xa6,0xe3,0xd0,0xcd,0x71,0x53,0x66,0xe6,0xe3,0xa2,0xc7,0xdc,0x8b,0x55,
- 0xb8,0x38,0x87,0xeb,0x58,0x10,0x5e,0xba,0x7c,0x69,0xed,0x86,0xf5,0x01,0x01,0x81,
- 0x47,0x8e,0xa9,0x79,0x30,0x03,0xf9,0xf0,0xa9,0xd3,0xff,0xbf,0x88,0xd6,0xd1,0xf4,
- 0xfd,0x23,0xb5,0xff,0xcc,0x22,0x08,0xf2,0xe1,0x53,0x5c,0x5a,0xda,0xcd,0x41,0xf9,
- 0x0b,0x5f,0x0a,0xda,0x18,0x9b,0x0c,0xf7,0x18,0x31,0x3f,0x35,0x75,0xcb,0x8f,0x5b,
- 0x76,0xef,0xd9,0xbd,0x79,0xfb,0xb6,0xa5,0x69,0x69,0x93,0x13,0x93,0x86,0x0d,0x1b,
- 0x6e,0xdb,0xd1,0xb6,0x95,0x41,0x2b,0xf0,0xdd,0xab,0x33,0xd6,0x68,0xbd,0x17,0x8d,
- 0x8b,0x4a,0xe9,0x0b,0x40,0xb1,0x7a,0x55,0xa5,0xb4,0x52,0x2b,0x6b,0xb6,0xa3,0xff,
- 0x6d,0x5c,0x68,0xbc,0xff,0x7c,0xfa,0xbf,0xf5,0xdb,0xd0,0x8b,0x2a,0xe9,0x73,0x7a,
- 0x5f,0x8b,0x0d,0x21,0x89,0xdf,0x14,0x40,0x90,0x06,0x62,0xcb,0xb6,0xed,0x02,0x41,
- 0xdd,0x5e,0x36,0xe7,0x32,0x37,0x25,0x45,0xeb,0x5d,0x68,0x2c,0x54,0xbd,0x7a,0xf9,
- 0xd3,0x4f,0x3f,0xf7,0xe9,0xdb,0xcf,0xd5,0xed,0x63,0x25,0xfe,0xba,0x55,0xdb,0x5b,
- 0x21,0x0d,0x41,0x03,0xfd,0xff,0x8b,0x34,0x10,0x9a,0xd6,0xdf,0xf8,0xed,0xf4,0xe9,
- 0x7a,0x6c,0x65,0xff,0x81,0x43,0xdc,0xdd,0xd2,0xc5,0xd5,0xad,0x97,0x8b,0xeb,0xb0,
- 0xe1,0x1e,0xe7,0x2f,0x5c,0xd0,0xfa,0x08,0x20,0x48,0xd3,0xe3,0x9f,0x92,0x67,0x53,
- 0xa7,0x4e,0x7b,0xeb,0x77,0x5d,0xa3,0x62,0x62,0xb5,0xde,0x85,0x46,0x84,0xda,0xf5,
- 0x27,0xeb,0xeb,0xfb,0xbf,0x75,0x02,0xfd,0x6f,0xe3,0x42,0xb3,0xff,0xad,0xcf,0xfb,
- 0xcf,0x9b,0x36,0xd5,0x61,0xfd,0x0d,0x04,0x41,0xde,0x9d,0x87,0x8f,0x1f,0xc7,0xc7,
- 0x4f,0x7c,0x93,0x95,0x2b,0x54,0xf1,0x1c,0xe9,0x85,0x8f,0x60,0xbd,0x21,0x30,0xff,
- 0xad,0xeb,0xf7,0x17,0x1a,0x0e,0x7c,0xfe,0xaa,0x71,0xa1,0x69,0xfd,0xab,0xfa,0x7d,
- 0xfe,0xaa,0x4e,0xdf,0x1f,0x44,0x10,0xa4,0x5e,0xf8,0xe7,0xd9,0xb3,0xf4,0x65,0xcb,
- 0xed,0xbb,0x76,0xab,0x65,0x05,0x03,0xb5,0xb8,0xb9,0xb9,0xa9,0xbe,0xe5,0x8a,0x68,
- 0x62,0xcd,0xba,0x75,0x1f,0x8a,0xff,0xc5,0xff,0x7f,0x1b,0x15,0xef,0xe7,0xff,0xdf,
- 0x3a,0xad,0x3f,0x89,0x20,0x48,0x7d,0x51,0x29,0xad,0xcc,0xcd,0xcd,0x4b,0x4c,0x4c,
- 0xb2,0xb5,0xed,0xf4,0x26,0x4b,0x1f,0xb7,0xd0,0x6d,0xc1,0x30,0xe2,0xc9,0x49,0x89,
- 0xb5,0xac,0xf0,0x86,0x70,0xd1,0xb8,0xfe,0xb3,0x6e,0x8b,0x0b,0x97,0x2e,0xbd,0x67,
- 0x63,0xd0,0xff,0x36,0x2e,0x34,0xbd,0x7f,0xf4,0x1e,0xfc,0xaf,0xa6,0xf5,0x27,0x11,
- 0x04,0xa9,0x77,0x8a,0x9e,0x3e,0x3d,0x7a,0xfc,0xc4,0xe2,0xc5,0x4b,0x42,0x43,0x43,
- 0x87,0x0c,0x19,0xf6,0xb1,0x5b,0xef,0x9e,0xce,0xbd,0x5c,0x5c,0xdc,0xfa,0xf5,0x73,
- 0x1f,0x31,0xc2,0x23,0x30,0x38,0x38,0x79,0xc6,0xac,0xf5,0x1b,0x36,0x66,0xe5,0xe4,
- 0xfc,0x53,0x5c,0xdc,0x34,0x56,0xb4,0x78,0x6f,0xa8,0x9d,0xff,0xd6,0xf2,0xfd,0xa3,
- 0x86,0xe3,0xfb,0x8c,0x95,0xaa,0xfe,0xd7,0xdc,0xdc,0xe2,0xf4,0x99,0x33,0x5a,0x1f,
- 0x25,0x44,0x95,0x2d,0xdb,0x34,0xbd,0x7f,0x54,0x9f,0xcf,0x5f,0xe1,0xfc,0x17,0x41,
- 0x3e,0x04,0xa4,0x55,0x55,0x25,0x65,0x25,0x8f,0x0a,0x0b,0xef,0x15,0xe4,0xdf,0xbe,
- 0x73,0xfb,0x0e,0x59,0x98,0xad,0xa0,0xf0,0x49,0x51,0x71,0x69,0x09,0x2e,0x36,0xfe,
- 0x76,0xc0,0xb5,0xca,0x9a,0xb5,0xeb,0xda,0x18,0xb5,0xd1,0xd7,0xd3,0xe7,0x02,0x1e,
- 0xf9,0x72,0x5e,0xde,0x7b,0x36,0x66,0x75,0x46,0x86,0x7a,0xff,0x8b,0xf3,0xdf,0x0f,
- 0x12,0x4d,0xcf,0x5f,0xd5,0xef,0xfc,0x77,0xf3,0xd6,0xad,0x4a,0x3b,0x27,0x60,0x25,
- 0xb2,0x42,0xff,0x8b,0x20,0x48,0x63,0x27,0x2f,0xef,0xea,0x8a,0x6f,0x57,0xa6,0xa5,
- 0xa7,0xa7,0x2f,0x5b,0xfe,0x4d,0x5a,0x3a,0x8d,0x2c,0x5b,0xb6,0x62,0x45,0xe1,0x93,
- 0x27,0x0d,0xdd,0xb4,0x12,0x6b,0xd7,0x6d,0x10,0x98,0x0a,0x8c,0x0c,0x8d,0x8c,0x8c,
- 0x8d,0x64,0xa1,0xb1,0x91,0xb8,0xa3,0x4d,0xb6,0xe6,0xaf,0xf2,0x21,0x5a,0xe4,0xa7,
- 0xbd,0x7b,0x2d,0x2c,0x2d,0x8d,0x8d,0x4d,0x8c,0xd8,0x9f,0xa1,0x91,0x49,0x1b,0x13,
- 0xe0,0x4c,0x56,0x56,0x3d,0xb6,0x72,0xed,0xc6,0x75,0xd8,0x27,0xd3,0xd2,0x97,0x43,
- 0xf8,0x4d,0xda,0x32,0xd8,0x39,0x21,0xf2,0x7d,0xc6,0x9a,0x7b,0x05,0x75,0xf8,0x4a,
- 0x02,0x82,0x20,0xc8,0x87,0x89,0xf4,0x65,0x95,0xf4,0x25,0x59,0x89,0x9a,0x0d,0x59,
- 0xde,0xbf,0x19,0x8f,0x0b,0x8b,0xb2,0xb2,0xb3,0xb3,0xcf,0x9d,0xcb,0xca,0x39,0xc7,
- 0x86,0xc0,0xf9,0x8b,0x97,0x4a,0xca,0x4a,0xb4,0x3e,0x44,0x88,0x2a,0x45,0x4f,0xff,
- 0xc9,0x39,0x7f,0x3e,0x2b,0x27,0xe7,0x6c,0xce,0xb9,0xb3,0xe7,0xc8,0x26,0xcb,0x3e,
- 0x77,0x1e,0x28,0x29,0xad,0xe7,0xa7,0x1f,0xe9,0x9e,0x49,0x76,0x4e,0x08,0xd9,0x9d,
- 0xf3,0xdd,0x3f,0x45,0x8a,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,
- 0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,
- 0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,
- 0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,
- 0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,
- 0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,0x08,0x82,0x20,
- 0x08,0x82,0x20,0x08,0x82,0xd4,0x17,0x55,0xaf,0xaa,0xa4,0x2f,0xa5,0x95,0xd2,0xca,
- 0xf2,0x8a,0xf2,0xd2,0xe7,0x65,0x25,0xe5,0xa5,0x40,0x29,0x0b,0x4d,0xd6,0x12,0x96,
- 0x2a,0x34,0x51,0xb9,0x71,0x2a,0xe3,0xe6,0x6e,0xda,0xca,0x0d,0xbe,0x7d,0x39,0xc9,
- 0xb2,0xe7,0x65,0x94,0xf2,0xf2,0x8a,0xe7,0x70,0x32,0x29,0xab,0x78,0xce,0x52,0x2e,
- 0x8f,0x68,0xa6,0xe2,0x0d,0x24,0x75,0xe2,0x1d,0x8b,0x37,0x05,0xca,0x2b,0x2b,0x2a,
- 0xa4,0xd2,0x17,0x2f,0xa5,0x55,0xaf,0xe0,0x24,0xaf,0x7d,0x47,0x83,0x00,0xe0,0x6a,
- 0x4b,0xcb,0x4a,0x1f,0x16,0x3d,0xbe,0x79,0xeb,0x7f,0xe7,0x2e,0x5e,0x38,0x72,0xf4,
- 0x48,0xe6,0x96,0x2d,0xcb,0x56,0xac,0x98,0x35,0xe7,0x3f,0xb1,0x71,0xf1,0x21,0x21,
- 0xa1,0x41,0xc1,0xe3,0x81,0xf1,0x21,0xa1,0xc1,0xe3,0x43,0x42,0xd8,0x30,0x34,0x0c,
- 0x24,0x4a,0xa1,0x22,0x17,0x12,0xa8,0xdc,0x78,0x95,0x71,0x73,0x37,0x6d,0xe5,0x86,
- 0xde,0xbe,0xdc,0x64,0x58,0x58,0x78,0x44,0x44,0x64,0x74,0x54,0x7c,0xd4,0x84,0xcf,
- 0xa2,0x12,0xe6,0x44,0x25,0x2e,0x88,0x99,0xf6,0x75,0xcc,0xb4,0xf4,0xd8,0xe4,0xb4,
- 0x98,0xe9,0xe9,0x31,0xd3,0x97,0xc5,0x24,0x2f,0x83,0x24,0x09,0xd9,0x88,0x9c,0xe8,
- 0xe9,0x2b,0xb8,0x49,0xb5,0x12,0x59,0x41,0x45,0xa8,0x9a,0x54,0x5b,0x9c,0xcd,0x85,
- 0xa6,0xb9,0xad,0xab,0x2d,0x95,0xbc,0x4c,0xa6,0xc6,0x52,0x4b,0xbb,0x5c,0x61,0xed,
- 0x15,0x2a,0x45,0x94,0x92,0x5c,0xab,0x54,0x73,0xd5,0xa2,0xa9,0x15,0x55,0x9b,0xa7,
- 0xa5,0x4f,0x98,0xb5,0x62,0xc6,0x57,0x3f,0x7c,0x93,0xb1,0x6b,0xf3,0xce,0xe3,0xfb,
- 0x8f,0xe6,0xfc,0xfe,0xc7,0x5f,0x7f,0xdd,0xba,0xfd,0xe0,0xf1,0xd3,0xe2,0xd2,0xd2,
- 0xca,0x17,0x2f,0xb4,0xee,0x89,0xfe,0x3d,0x80,0xcf,0x2d,0x7a,0xfa,0xe4,0xe2,0x1f,
- 0x17,0x57,0xaf,0x59,0xe3,0x1f,0x14,0xf0,0x49,0xef,0xde,0x5d,0xba,0x74,0xb1,0x12,
- 0x59,0x09,0x4c,0xcd,0x4c,0x8c,0x4d,0x0c,0x5b,0x19,0x1a,0xb4,0x34,0xd0,0xd3,0xd5,
- 0xd3,0x6d,0xae,0xab,0xd3,0x4c,0x07,0x41,0x10,0xe4,0xad,0x81,0xd3,0x88,0xae,0x8e,
- 0x9e,0x8e,0x8e,0xbe,0xae,0xee,0x47,0x2d,0xf5,0xdb,0xb4,0x34,0xee,0x60,0x20,0xb0,
- 0x37,0xb4,0xfa,0xc4,0xd8,0x7a,0xb0,0x89,0x8d,0x97,0x89,0x8d,0xb7,0x49,0x47,0x6f,
- 0x13,0x9b,0x51,0x26,0x1d,0xbd,0x48,0x84,0xc4,0xbd,0x64,0x72,0x9b,0x91,0x26,0x36,
- 0xa3,0x69,0x48,0x23,0x1d,0x3d,0x89,0x1a,0xc1,0x9b,0x67,0x4b,0xe5,0x24,0xf4,0x32,
- 0xb1,0xf5,0x92,0xa9,0xd5,0x48,0x7a,0xf1,0xec,0x46,0xb2,0xca,0x10,0xf2,0x6c,0x47,
- 0xf2,0x6a,0xe6,0x92,0xd0,0x56,0x11,0x82,0xdc,0xbb,0x5a,0x4e,0x9a,0xf3,0x96,0xd5,
- 0x26,0x13,0x12,0x78,0x32,0x1d,0x0f,0x5a,0xa7,0x17,0x55,0x18,0x4d,0xe3,0xde,0x8a,
- 0xda,0x78,0xb6,0x9e,0xca,0x56,0xb1,0xc6,0xd8,0x92,0x0a,0xa9,0x19,0xb4,0x20,0xe9,
- 0xcb,0x18,0xa2,0xac,0x30,0x40,0xd1,0x90,0xac,0xa0,0xbc,0xac,0x3c,0x97,0xed,0x02,
- 0xed,0x94,0x97,0x6a,0x2e,0x3b,0x62,0x3c,0xbb,0x51,0xd0,0x11,0x9e,0x1d,0xb4,0x05,
- 0x11,0x68,0xd4,0xc7,0x44,0x3c,0xb2,0x8d,0xd8,0x93,0xb5,0x13,0x6c,0xe0,0xdb,0x79,
- 0x99,0x75,0xf2,0xb1,0xb4,0x1f,0xd3,0xce,0xc9,0xd7,0xba,0xe7,0x78,0xbb,0xde,0x11,
- 0xf6,0x83,0xe3,0xdc,0x7d,0x12,0xc7,0x44,0xa6,0x2e,0x5c,0xfe,0xe3,0x89,0x33,0xb9,
- 0x77,0x0a,0x0a,0x2b,0x5e,0x54,0x6a,0xdd,0x43,0x35,0x55,0x4a,0xca,0x4a,0x2f,0xe6,
- 0xe6,0x2e,0x4d,0x4b,0xf3,0xf2,0xf2,0xb6,0x6e,0x6f,0xad,0xaf,0xa7,0xdf,0xfc,0xff,
- 0x9a,0x23,0x08,0x82,0xbc,0x57,0x74,0x0c,0x74,0x5b,0x1a,0xb7,0x34,0xea,0xd0,0x5a,
- 0xe4,0x66,0x22,0xf6,0xe0,0xd9,0xf8,0x80,0xe7,0xe5,0xd9,0x81,0x63,0x1a,0xc5,0x23,
- 0x9e,0x82,0x7a,0x1c,0x3b,0x1f,0x9e,0xdd,0x58,0x93,0x8e,0x24,0x62,0xd2,0xd1,0x87,
- 0x47,0x7c,0xb4,0x0f,0xf1,0x29,0x36,0x10,0x1f,0x03,0x9a,0x90,0x64,0xa1,0x6a,0x4a,
- 0x49,0xaa,0x66,0xeb,0xa3,0x2c,0x54,0x89,0x2b,0xa1,0x54,0x55,0x8d,0x2c,0xf0,0xe3,
- 0x90,0xcb,0x3a,0x47,0x85,0x32,0x27,0xa9,0x30,0x52,0xb5,0x2a,0xae,0xbc,0xba,0x2f,
- 0xca,0xca,0x1a,0xcd,0xa8,0x53,0x2e,0xed,0x3b,0xb1,0x8a,0x1a,0x3c,0x86,0x8c,0x1e,
- 0xbd,0x42,0x90,0x0f,0xa0,0x17,0xbd,0xd4,0x21,0xd0,0x81,0x85,0x01,0xf7,0x84,0xeb,
- 0x01,0x18,0x7c,0xc6,0x35,0x78,0xc0,0xb8,0x99,0xb3,0xbe,0xdc,0x70,0xf0,0xe4,0xb9,
- 0xa2,0xe2,0xb2,0xaa,0x57,0x55,0x5a,0x77,0x58,0x4d,0x83,0x82,0x07,0xf7,0xf7,0xed,
- 0xdf,0x3f,0x29,0x61,0x72,0xf7,0xee,0x3d,0x0c,0xf4,0x3f,0xd2,0xfe,0xd1,0x87,0x20,
- 0x08,0x42,0xd1,0x69,0xd1,0x5a,0x9f,0x67,0x63,0xd4,0xae,0x0f,0xf8,0x02,0x7e,0xe7,
- 0x71,0xfc,0x4e,0xe3,0x78,0x14,0x88,0xf3,0x6c,0xc7,0xf2,0x3a,0x4b,0x78,0xb6,0x34,
- 0xce,0x0a,0xa9,0x5c,0x0b,0xc9,0x2e,0xbe,0x3c,0xb9,0x61,0x60,0x15,0x9b,0xcb,0xeb,
- 0x24,0x51,0x52,0xa6,0xf8,0x72,0xcb,0x42,0x41,0xd2,0x23,0x3b,0x5f,0x7e,0x17,0x49,
- 0x75,0xb2,0x93,0xa4,0xe1,0x6c,0x26,0x56,0xd9,0xc9,0x43,0x18,0x40,0x00,0x22,0x76,
- 0x74,0x60,0xed,0xc6,0xb2,0xa3,0x4a,0x42,0x92,0x3b,0x86,0xe6,0x12,0x1d,0x7a,0x3d,
- 0x00,0x49,0x2f,0x1a,0x8e,0xe9,0xd4,0x37,0x2c,0x64,0xf2,0xd7,0x6b,0xb6,0xfd,0x7a,
- 0xfd,0xe6,0x9d,0x4a,0x29,0xde,0x9d,0x7e,0x1b,0xe0,0x02,0xa6,0xe8,0x9f,0x27,0x3b,
- 0x76,0xed,0x1a,0x38,0x64,0x90,0xc0,0xd4,0x4c,0xa7,0x99,0x8e,0xd6,0x8f,0x35,0x04,
- 0x41,0x10,0x65,0x9a,0xe9,0xe8,0xe8,0x1a,0x18,0xb4,0x69,0x6f,0xd8,0xb6,0x0f,0xaf,
- 0x93,0x0f,0x71,0x52,0x5d,0xfd,0x68,0x28,0xe1,0x77,0xf5,0x27,0x61,0x17,0x4a,0x57,
- 0x16,0xdf,0x5a,0x43,0x25,0xea,0xa4,0x5c,0x93,0x2e,0x2a,0x55,0x39,0x04,0x91,0xd0,
- 0x3e,0x48,0x56,0xdc,0xde,0x5f,0xb9,0xa1,0x2e,0x6a,0x9b,0xa0,0xdd,0x21,0x48,0x6a,
- 0x74,0x8a,0xc8,0xdf,0xdd,0x66,0x15,0x05,0xb0,0xaa,0x33,0xc4,0x03,0x64,0x83,0xd6,
- 0x2d,0x88,0xf8,0xe8,0xae,0x81,0x7c,0xfb,0x40,0x92,0x05,0x80,0x84,0x98,0x11,0x40,
- 0xc2,0xce,0xd4,0x24,0x12,0xa9,0xf6,0xce,0xec,0x9c,0x1a,0xbc,0xb0,0x65,0x37,0x3f,
- 0x17,0x8f,0xc9,0x9f,0xa7,0x6f,0xbe,0x75,0xf7,0x01,0x7a,0xe1,0x3a,0x51,0x51,0x59,
- 0xf1,0xd3,0xde,0xbd,0xde,0xa3,0x46,0xb5,0x6e,0xd5,0x5a,0xfb,0xc7,0x17,0x82,0x20,
- 0xc8,0x6b,0x69,0xa6,0xab,0xd7,0x5a,0x64,0xd4,0xa1,0x3f,0xf1,0x71,0xdd,0xc6,0x13,
- 0x9c,0xc2,0xf9,0x0e,0xc1,0x7c,0x87,0x30,0x82,0x53,0x18,0x49,0x3a,0x85,0xf2,0x9d,
- 0x22,0xf8,0x4e,0x21,0x2a,0x61,0x28,0xcd,0x0d,0xe3,0x50,0x57,0x65,0x36,0x12,0x41,
- 0x09,0x97,0xb7,0x18,0x46,0x94,0x1d,0xd9,0xaa,0x42,0x64,0x38,0x2a,0xaa,0xaa,0xd9,
- 0x90,0xc3,0x78,0x12,0x2a,0x72,0xa1,0x94,0x63,0x84,0x80,0x9b,0xe5,0x10,0x42,0x94,
- 0x1d,0x69,0x16,0x29,0xfe,0xee,0x36,0xab,0x28,0x43,0x43,0xa4,0x5d,0x0a,0x3b,0x6e,
- 0xec,0x48,0x2a,0x13,0x48,0x1c,0x31,0x00,0x7e,0x19,0xfc,0xaf,0x3d,0xeb,0xaf,0x7d,
- 0xd9,0x99,0xbe,0x6c,0x4e,0x4d,0x67,0xc7,0xa6,0x76,0x63,0x5d,0x86,0x4d,0xfa,0x6e,
- 0xdd,0x4f,0xf7,0xf2,0x1f,0x68,0xdd,0xaf,0x7d,0xf8,0x3c,0x2b,0x79,0x76,0xe8,0xf0,
- 0xaf,0xfe,0x81,0x01,0x7c,0x13,0xbe,0x6e,0x73,0x5d,0xed,0x1f,0x53,0x08,0x82,0x20,
- 0x6f,0x8c,0xae,0xae,0xbe,0xbe,0xb1,0xb5,0x89,0xad,0x97,0x59,0xf7,0x48,0x81,0x73,
- 0xac,0xb9,0x73,0x8c,0xb9,0x73,0x9c,0xa0,0x7b,0x8c,0xa9,0x53,0xb4,0x69,0xf7,0x18,
- 0x1a,0x89,0x82,0x88,0x0c,0x10,0x52,0x79,0x7d,0x25,0x05,0xdd,0xd9,0x30,0xc6,0xac,
- 0x07,0x10,0x6b,0xda,0x5d,0x16,0x17,0x50,0x1d,0x22,0x71,0x8a,0x86,0xf0,0x4d,0x92,
- 0x60,0x27,0x1b,0x17,0xf4,0xa8,0xce,0xa2,0x5d,0x88,0x65,0x93,0xf5,0x6b,0xb9,0x3c,
- 0x19,0x6d,0xe6,0x1c,0x6f,0xe6,0x1c,0xcb,0xca,0x89,0xf1,0x64,0x0c,0xe3,0x48,0xbb,
- 0xd4,0x18,0xe8,0x0b,0x4d,0xc2,0x18,0x46,0x09,0x9c,0x22,0xf9,0x4e,0x91,0xa6,0x10,
- 0x3a,0x84,0xca,0xe8,0x16,0x40,0xe7,0xf5,0x7e,0xb2,0xbb,0x10,0xf4,0x1f,0x01,0x40,
- 0xe8,0xe0,0xff,0x89,0x67,0xe2,0xda,0xed,0xc7,0xff,0xbe,0xfb,0x48,0x5a,0x85,0x7f,
- 0x0d,0xab,0x41,0xfa,0x52,0x9a,0x7b,0xe5,0x4a,0xdc,0x84,0x09,0x6d,0x45,0x6d,0xf1,
- 0x6e,0x33,0x82,0x20,0x8d,0x17,0x3d,0x3d,0xc3,0x56,0x42,0x37,0x0b,0xe7,0x58,0xa1,
- 0xdb,0x14,0xa1,0xdb,0x67,0x80,0x85,0xeb,0x14,0x4b,0x57,0x36,0x92,0x08,0x11,0x16,
- 0x10,0xb2,0xf2,0xfa,0x4a,0x0a,0xdd,0x92,0x2c,0x5c,0x93,0xa0,0x15,0x4b,0xb7,0x24,
- 0x2a,0x4f,0xb2,0x74,0xa3,0x61,0xaf,0x24,0x35,0x45,0x7a,0x25,0x02,0x9a,0x2b,0x4c,
- 0x84,0xaa,0x64,0x95,0x34,0x80,0xa9,0x1a,0x92,0x49,0x16,0x6e,0x89,0x96,0x2e,0x93,
- 0x59,0x39,0x19,0x2e,0x17,0x08,0xa7,0x58,0xba,0x24,0x09,0x3f,0x9e,0x2a,0x74,0x99,
- 0x62,0xee,0x92,0x68,0xd9,0x33,0xc9,0xa2,0x57,0x82,0x45,0xcf,0x04,0x61,0xcf,0xc9,
- 0x70,0xbd,0x01,0x83,0x2c,0x20,0x4e,0x19,0xdc,0x74,0x2c,0x99,0x56,0x3b,0xd2,0xf9,
- 0x3e,0xb9,0x53,0x1d,0x2c,0xbb,0x49,0x0e,0x93,0x62,0xbb,0x71,0x26,0xb6,0x63,0x84,
- 0x8e,0x01,0x23,0x82,0xe7,0xee,0x3d,0x78,0xa6,0xfc,0x39,0x3e,0x26,0x5d,0x83,0x92,
- 0xb2,0xd2,0x85,0x8b,0xbf,0xb0,0xb4,0x10,0x6a,0xfd,0xc0,0x41,0x10,0x04,0x79,0x77,
- 0x60,0x12,0x61,0x60,0x68,0x69,0xda,0x45,0x22,0xec,0x9d,0x2c,0x72,0x9f,0x2d,0xec,
- 0x33,0x5b,0xd4,0x7f,0xb6,0xb0,0xef,0x7f,0x00,0x36,0x52,0x23,0x74,0x9f,0x2d,0xea,
- 0x37,0x5b,0x16,0x2a,0x22,0xee,0x2a,0x6a,0xaf,0x53,0x16,0xf6,0x4b,0x61,0x93,0xc2,
- 0x7e,0x73,0xa8,0xf2,0x5c,0x61,0x9f,0x39,0x24,0x97,0x2d,0xd8,0x4f,0x56,0x44,0x61,
- 0x06,0x01,0x92,0x7d,0x38,0x56,0x55,0xeb,0xbc,0xa6,0x6c,0x03,0x76,0x81,0xd3,0x10,
- 0x65,0x26,0x35,0x72,0x96,0xc8,0x7d,0x96,0xf0,0x53,0x4a,0x9f,0x99,0xc2,0x4f,0x92,
- 0x85,0x9f,0x26,0x0b,0x7b,0x4f,0x27,0x50,0x07,0x0d,0x13,0x67,0xcb,0x9e,0x93,0x2c,
- 0x9c,0xe3,0xc1,0x1d,0x03,0x30,0x95,0x36,0x75,0x0c,0x37,0x05,0x2f,0x4c,0xee,0x54,
- 0x07,0xb3,0x93,0x62,0x70,0xc4,0x82,0xae,0x81,0x92,0xb8,0x45,0x17,0xaf,0xe5,0x6b,
- 0xdd,0xeb,0x7d,0x20,0xdc,0xcd,0xbf,0x97,0x3c,0x73,0x66,0x1b,0xa3,0x36,0xec,0x4b,
- 0xbb,0x5a,0x3f,0x70,0x10,0x04,0x41,0xea,0x85,0x96,0xfa,0x26,0x3c,0x9b,0xc1,0x96,
- 0xfd,0xe7,0x8b,0x06,0x7d,0xd1,0x76,0xf0,0x17,0xa2,0x81,0x5f,0x88,0x06,0x2d,0xa9,
- 0x66,0x60,0x4d,0x49,0x3d,0x26,0x07,0x7f,0x29,0x93,0x28,0xb5,0xa8,0x16,0x85,0xa6,
- 0x42,0xb9,0x96,0x52,0x0d,0x67,0xb3,0x6a,0x52,0x26,0x5c,0xac,0x88,0x58,0x0d,0x5a,
- 0x6c,0x35,0x70,0x01,0x44,0x84,0xee,0xa9,0xc2,0xfe,0xa9,0x42,0xf7,0x79,0x42,0x77,
- 0xb8,0xe4,0x98,0x23,0xfc,0x74,0xa6,0xf0,0xd3,0xd9,0xc2,0x8f,0xa7,0xc1,0x7c,0x5f,
- 0x08,0xb3,0xe9,0x9e,0x09,0xe4,0x8e,0x7a,0x4f,0x7a,0xb7,0xdf,0x29,0xdc,0xd4,0x21,
- 0x94,0x3c,0xb2,0x65,0x1f,0x48,0x6f,0x4a,0xfb,0x9a,0x75,0x91,0xf4,0x1d,0x3d,0xed,
- 0xd4,0x85,0x1b,0xff,0xf2,0xe7,0xb2,0xaa,0x5e,0x55,0x5d,0xce,0xbb,0x3a,0xd2,0xcb,
- 0xbb,0x75,0xab,0xd6,0xe4,0x55,0x77,0xf2,0xb6,0x3b,0xfe,0xe7,0x8b,0x20,0x48,0x93,
- 0xc2,0xa8,0x7d,0x6f,0xab,0x01,0x0b,0xac,0x47,0xac,0xec,0x30,0xec,0x3b,0x08,0xad,
- 0x47,0x7c,0xcf,0xd2,0x61,0xc4,0x6a,0xa0,0x21,0x92,0xd6,0x9e,0xab,0x3a,0x8c,0xf8,
- 0x8e,0x15,0x32,0x9e,0x20,0x5f,0x45,0xda,0xf5,0x58,0x0d,0xd0,0x24,0xab,0xb3,0xda,
- 0x9a,0x8d,0x0f,0x5f,0x05,0x30,0x9e,0x19,0x00,0x49,0x7a,0x50,0x09,0x55,0xa6,0x9a,
- 0x2b,0x89,0x9a,0x07,0x95,0x37,0xa4,0xcd,0x9c,0xe4,0x2a,0x6a,0xff,0x6a,0x12,0x0e,
- 0xff,0x0e,0xb0,0x86,0x70,0xe8,0xb7,0x0a,0xda,0x0d,0x59,0xd6,0x6e,0x68,0x3a,0x60,
- 0x35,0xe8,0x1b,0xab,0x41,0x4b,0xad,0x86,0x2c,0x11,0x0e,0x5c,0x24,0x1c,0xb0,0xc8,
- 0x6a,0xe0,0x7c,0x98,0xb6,0x8b,0xfa,0xce,0x12,0xf5,0x49,0x16,0xba,0x4d,0xb3,0x74,
- 0x99,0x62,0xee,0x3c,0xc9,0xbc,0x47,0xbc,0xb9,0xf3,0x04,0x41,0xf7,0x68,0x72,0x5f,
- 0x1a,0x26,0xc2,0xf6,0x01,0xfc,0xae,0xfe,0xbc,0xce,0x7e,0x0e,0x83,0x13,0x36,0x6c,
- 0x3f,0x5a,0x51,0xf9,0x2f,0xbd,0x17,0xfd,0xbc,0xf2,0xf9,0x81,0x43,0x87,0x5d,0x5d,
- 0xdd,0x3e,0x32,0xf8,0x48,0xb1,0x5c,0x95,0xd6,0x8f,0x14,0x04,0x41,0x90,0x7a,0xa6,
- 0x99,0xae,0x81,0xa0,0xb3,0xa8,0xff,0x02,0x66,0xcc,0x66,0xc6,0x67,0x0b,0x33,0x6a,
- 0x13,0x25,0x93,0x19,0x9d,0x29,0x8b,0x8c,0xa2,0x91,0xd1,0x14,0x36,0x17,0xb2,0x14,
- 0xc9,0xd1,0x0a,0x32,0x95,0xcb,0x2a,0x14,0x46,0x6d,0xaa,0x96,0x90,0xb2,0x3f,0xc8,
- 0x93,0xf2,0xca,0x95,0xea,0x1f,0xc5,0x29,0xe2,0x93,0x29,0xb3,0x61,0x74,0x66,0xcd,
- 0xe6,0x38,0x35,0xd7,0x68,0x2e,0x93,0xf1,0xfe,0x41,0xd9,0x36,0x25,0x33,0x46,0x71,
- 0xfb,0xc2,0xa9,0xa4,0x3a,0x57,0xa5,0x0b,0xd5,0x92,0xcc,0x6a,0x05,0x9f,0x9a,0x66,
- 0x7b,0x6f,0x60,0xbc,0x37,0x42,0xeb,0xd6,0x23,0x33,0xac,0xbd,0x33,0xd8,0x8b,0x04,
- 0x70,0xd0,0xed,0x87,0xad,0x68,0x3f,0x74,0x85,0xd5,0xd0,0xaf,0x45,0x83,0x60,0xe2,
- 0xbf,0x48,0xd8,0xff,0x73,0xd9,0xa4,0xf8,0x13,0xe2,0x88,0xcd,0x5d,0x27,0x9a,0xf5,
- 0x88,0x33,0xa3,0x37,0xa5,0xf9,0x8e,0x11,0xe4,0x01,0x75,0x98,0x0b,0x77,0xf6,0x65,
- 0x5c,0xc3,0xe6,0x2f,0xdd,0xf2,0xb0,0xf0,0x69,0xd5,0x4b,0xed,0x3b,0xc4,0xf7,0x09,
- 0x4c,0xfc,0xd7,0x6f,0xdc,0xd0,0xb5,0x6b,0x57,0x70,0xbe,0x7a,0x2d,0xf4,0xf4,0x74,
- 0xf5,0x88,0xff,0x6d,0xae,0xd3,0x42,0xa7,0x85,0xf6,0x0f,0x16,0x04,0x41,0x90,0xfa,
- 0xa5,0x99,0xae,0x3e,0xbf,0x53,0xdb,0x61,0x4b,0x98,0x80,0x9f,0x19,0xc9,0x5e,0x16,
- 0xb1,0xdf,0x2e,0x12,0xf1,0xfb,0x99,0xc0,0x0a,0xfd,0xe4,0xf8,0xff,0x2c,0x4b,0x42,
- 0xe8,0xcf,0x11,0xfa,0xc9,0xca,0x12,0xa1,0xef,0x1e,0x12,0xca,0xd4,0x48,0x5c,0x2c,
- 0xd9,0x49,0x75,0x68,0x59,0x88,0xf8,0xee,0x66,0xfc,0xf6,0xc8,0x6b,0xe6,0x94,0x65,
- 0x8b,0x40,0x71,0xaa,0x49,0xcc,0x90,0x15,0x91,0xd7,0xe9,0xcf,0xb1,0x84,0xd5,0x07,
- 0x39,0xd1,0x97,0x35,0x54,0xdd,0x34,0x5b,0x55,0xb5,0x19,0x9c,0x86,0xb8,0xa6,0x4a,
- 0xf6,0xc8,0xd4,0xb8,0x35,0x2b,0x75,0x01,0x0a,0xfa,0x73,0xfa,0x4e,0x3b,0x22,0xf6,
- 0xdf,0x45,0xc3,0xdd,0x72,0xcb,0x49,0x8f,0xc4,0xbe,0x3b,0x99,0x71,0xbb,0x08,0x3e,
- 0x9b,0x09,0xe0,0x9d,0xbd,0xd7,0x33,0x5e,0xeb,0xad,0x3d,0xc8,0x7c,0xb9,0xfd,0xd0,
- 0xe5,0x6d,0x87,0xa6,0x59,0x0d,0xfc,0x4a,0x34,0x68,0x91,0xc8,0x7d,0x9e,0xa8,0xdf,
- 0x1c,0xf2,0x1f,0xf1,0xc7,0xd3,0x2c,0x7b,0x4d,0x86,0xe9,0xb0,0xc0,0x39,0x9a,0xdf,
- 0x3d,0x8a,0xef,0x14,0xc5,0xb7,0x97,0xf0,0xed,0xfd,0x2c,0x9c,0x42,0x26,0xfe,0x67,
- 0xd5,0xed,0x82,0x87,0x5a,0xf7,0x89,0xef,0x8d,0xa2,0x27,0x4f,0x52,0x53,0x17,0xf0,
- 0x4d,0x4d,0x5b,0xb5,0x6a,0x05,0xfe,0x17,0x60,0xdd,0x2e,0xbe,0x70,0x84,0x20,0x48,
- 0x13,0x46,0xdf,0xa8,0x9d,0xd5,0xe0,0x2f,0x98,0x90,0xe3,0xcc,0xf8,0xe3,0x4c,0xf0,
- 0x31,0x66,0xfc,0x49,0x26,0x14,0x22,0x47,0x98,0xe0,0xa3,0x24,0x09,0x84,0x1c,0xa1,
- 0x91,0xa3,0x44,0x18,0x74,0x98,0xc6,0xe5,0xb9,0x6c,0x52,0x26,0x54,0xc0,0x29,0x2b,
- 0x83,0x96,0xad,0x21,0x91,0xa3,0x5c,0x56,0x53,0x96,0xbc,0x86,0x5a,0xf4,0x55,0x0b,
- 0xca,0x22,0x35,0x5b,0xaf,0x51,0x43,0xcd,0x8e,0xbc,0x89,0xcd,0xa0,0x19,0x7a,0xaa,
- 0x46,0x32,0xe8,0x08,0xe5,0x10,0x13,0x70,0x50,0xce,0x01,0x71,0xc0,0x3e,0xe2,0xdf,
- 0xc1,0x1d,0x8f,0xfd,0x91,0xdc,0x5e,0x20,0x13,0xe4,0x0d,0x1d,0x46,0xac,0x6a,0x3f,
- 0xe4,0xdb,0xb6,0x83,0xbf,0xb1,0x1a,0xfc,0xb5,0x70,0xc0,0x22,0x51,0xff,0x14,0xf2,
- 0xe0,0x96,0xdb,0x34,0x21,0x7d,0x52,0x4b,0xd0,0x23,0x86,0xb8,0x60,0xf6,0x6d,0x62,
- 0x7b,0xbf,0x5e,0x5e,0xd3,0xb3,0x73,0x6f,0x56,0xbd,0x6c,0xfa,0xaf,0x26,0x3d,0xaf,
- 0xa8,0x58,0xbc,0xe4,0x4b,0x91,0x48,0x64,0x64,0x68,0xc4,0xfa,0x5f,0x83,0x96,0x06,
- 0x30,0xf9,0x6d,0xa1,0xdb,0x02,0x6f,0x41,0x23,0x08,0xd2,0x84,0x81,0xf3,0x5b,0xeb,
- 0x36,0xed,0xda,0x8d,0x5e,0x2f,0x8e,0xf8,0xbd,0x63,0x54,0x36,0x13,0x99,0xc3,0x44,
- 0x9c,0x95,0x93,0xcd,0x84,0x9f,0x65,0xc2,0xb3,0xe4,0xc9,0x2c,0x1a,0x07,0xe1,0xef,
- 0x90,0x24,0xca,0x11,0x10,0xc9,0x16,0x47,0xfe,0x2e,0x8e,0xcc,0xae,0xd6,0xe7,0x16,
- 0xaf,0x8e,0x67,0xd1,0xac,0x6c,0x59,0x28,0xcf,0x65,0xcb,0x8a,0x69,0x52,0x1c,0xc1,
- 0x51,0xa8,0x6e,0x97,0x53,0x09,0x57,0x18,0xae,0x21,0x8c,0xa0,0x3a,0x34,0xde,0x31,
- 0x2a,0x4b,0x1e,0x9e,0x55,0xcd,0xa5,0xa1,0xbc,0x6b,0x35,0x84,0x50,0x84,0x55,0x96,
- 0x09,0x89,0x85,0x91,0x20,0xa4,0x61,0x34,0x11,0x42,0x9c,0x76,0xff,0x2c,0x19,0x0a,
- 0x52,0x16,0xc2,0x33,0x4c,0xd8,0x29,0xe2,0x9a,0x81,0x10,0x70,0xcd,0x87,0x99,0xc0,
- 0x5f,0x99,0xc0,0x43,0x8c,0xff,0x2f,0x8c,0xff,0x3e,0xb1,0xdf,0x0e,0xe2,0x88,0xc9,
- 0xa4,0x78,0xa3,0xf5,0xc8,0x8c,0x0e,0x23,0x56,0xb6,0x1d,0x92,0x6e,0x35,0x08,0xbc,
- 0xf0,0x02,0x61,0xbf,0x14,0x61,0xef,0x19,0x64,0x2e,0xec,0x9a,0x20,0x20,0x5e,0x38,
- 0x56,0xb6,0xe8,0x47,0x57,0x89,0x47,0xc8,0xfc,0xcb,0xd7,0xff,0xd6,0xba,0x7f,0x6c,
- 0x50,0x2a,0xa5,0x2f,0xb6,0x6c,0xdd,0xca,0x30,0x62,0x1e,0x8f,0x67,0x6c,0x6c,0x6c,
- 0xd8,0xda,0x90,0xf8,0x5f,0x7d,0x03,0xbd,0x16,0x7a,0x30,0x05,0x26,0x1f,0x1c,0xc1,
- 0xe7,0xaf,0x10,0x04,0x69,0xd2,0x7c,0x64,0xee,0xd8,0x61,0xec,0x56,0x26,0xee,0x32,
- 0x13,0x93,0xcb,0xc4,0x5e,0x66,0xe2,0xaf,0x32,0x71,0x79,0x4c,0xec,0x15,0x26,0xfa,
- 0x0f,0x12,0x82,0x04,0x00,0x09,0x57,0x18,0x73,0x89,0xca,0xaf,0x90,0x22,0x71,0xa0,
- 0x93,0xcb,0xc4,0xe7,0x11,0x21,0x94,0x05,0x61,0x1c,0x5b,0x84,0x53,0x96,0xa8,0xe5,
- 0x11,0x35,0x36,0x64,0xe5,0x20,0x8c,0xb9,0x2c,0x8e,0x23,0x49,0x71,0xdc,0x25,0xaa,
- 0xc6,0xd6,0x90,0x2b,0xab,0x99,0x94,0xa5,0xad,0xb0,0x59,0xb2,0xb2,0x57,0xaa,0xeb,
- 0xa9,0x51,0xe7,0x15,0x99,0x32,0x6b,0xa1,0xc2,0x4e,0xae,0x0e,0x54,0xce,0x5a,0x22,
- 0xb3,0x47,0x6e,0x5e,0xf4,0x25,0x99,0x90,0x2d,0x28,0xeb,0xac,0x5c,0x27,0x26,0x17,
- 0x8c,0x14,0x83,0x91,0xf1,0x97,0x69,0xc7,0x69,0xb5,0xa0,0x16,0xfd,0x87,0x38,0x36,
- 0x57,0x1c,0x7d,0x11,0x92,0xe2,0xe8,0x0b,0xe2,0xa8,0x1c,0x26,0xf2,0x1c,0x21,0x9c,
- 0x5e,0xab,0x10,0x8f,0x7c,0x92,0xdc,0x58,0x60,0x67,0xc7,0x7e,0xfb,0x18,0xdf,0x5d,
- 0xcc,0x98,0xad,0xe4,0x4f,0xe4,0x91,0x6b,0xac,0x89,0x17,0x4e,0x13,0x0d,0xfa,0x12,
- 0xe6,0xc2,0xc2,0xbe,0x73,0xc0,0x0b,0x5b,0xba,0x4c,0xb1,0x70,0x99,0x24,0x20,0x4b,
- 0x94,0x44,0xf1,0x1d,0xc3,0x4d,0xed,0x03,0x7c,0x27,0x7c,0x5d,0xf0,0xf8,0xa9,0xd6,
- 0xbd,0x64,0x03,0xf1,0xa2,0x4a,0x7a,0xe4,0xd8,0x71,0x47,0xa7,0xee,0xa6,0xa6,0x02,
- 0x3e,0x5f,0x00,0x2e,0xd8,0xd0,0xd0,0x10,0x66,0xc1,0x2d,0x5b,0xb4,0x04,0xe7,0x8b,
- 0x37,0x9f,0x11,0x04,0xf9,0x57,0xd0,0x4c,0xb7,0xb5,0xa8,0x87,0xf5,0xf8,0xc3,0xe2,
- 0x84,0x9b,0xe2,0x49,0x37,0x28,0x7f,0x42,0x9c,0x99,0xf4,0x27,0x33,0x91,0xc4,0x99,
- 0x89,0xd7,0x69,0x78,0x83,0x24,0x27,0xdf,0x94,0xe7,0x92,0xb8,0x4c,0x58,0xad,0xa3,
- 0x1c,0xaa,0xcf,0x9a,0x74,0x83,0x2d,0xce,0xd6,0x46,0x1a,0x4a,0xf8,0x4b,0x6d,0x43,
- 0xd5,0x95,0xb0,0x45,0xe4,0x91,0x5a,0xda,0xfd,0x7f,0xf6,0xae,0x04,0x28,0xaa,0x63,
- 0x6b,0x57,0xfd,0x7f,0xa2,0x68,0x54,0x04,0x15,0x95,0x1d,0x66,0x98,0x61,0x53,0x14,
- 0x17,0x10,0x71,0x21,0x8a,0x46,0x5f,0xf4,0x99,0xc4,0xbc,0x3f,0x31,0x9a,0xf8,0x34,
- 0x89,0xbe,0x24,0x3e,0x05,0x44,0x86,0x31,0xc6,0x0d,0x17,0x16,0x41,0x56,0x51,0x54,
- 0x44,0x11,0x10,0x45,0x40,0x01,0x51,0x41,0x10,0x14,0x35,0x88,0xca,0xa2,0x6c,0x82,
- 0x6c,0xb3,0x30,0x0c,0xfb,0x3a,0xa0,0x55,0xff,0xe9,0xee,0x3b,0x97,0x11,0x99,0x71,
- 0xa2,0x12,0x2b,0x29,0xca,0x53,0x63,0xdf,0xbe,0xdd,0xa7,0x4f,0x77,0xdf,0xdb,0x5f,
- 0x7f,0x7d,0xfa,0x36,0x94,0x55,0xd8,0xc8,0x57,0x12,0x14,0xd3,0xf2,0x92,0x2a,0x52,
- 0x65,0x9c,0xd7,0x68,0x33,0x95,0x5e,0x9a,0xb2,0x48,0xd6,0x12,0x1c,0x2f,0xab,0xaa,
- 0x88,0x92,0x4d,0x85,0x08,0xdc,0xe1,0x17,0xcf,0x52,0xd8,0x3f,0xe5,0x18,0x6d,0xcc,
- 0xc6,0x3c,0x1a,0xa8,0xfd,0x1d,0xc4,0x8b,0xbf,0x4d,0x61,0xae,0x49,0x06,0x46,0x8c,
- 0xbc,0xdb,0x88,0x0e,0x47,0x30,0x56,0x84,0x1a,0xfc,0x23,0x58,0x7f,0xa9,0x9f,0xce,
- 0x22,0x4f,0xed,0x8f,0xdd,0x74,0xec,0xb6,0x6b,0xdb,0x70,0x80,0x08,0xa3,0x23,0xb6,
- 0x80,0x08,0x4f,0x59,0xa7,0x35,0x7d,0xed,0xe6,0x9d,0xa7,0xc4,0x8d,0xcd,0xef,0x1d,
- 0x2b,0x07,0x42,0xf2,0x1e,0x17,0x2c,0xfd,0xf4,0xd3,0x09,0x13,0x27,0x82,0x68,0x68,
- 0x4c,0x00,0xfc,0x55,0x57,0x53,0x1f,0x35,0x72,0x14,0xf1,0xff,0x0e,0x53,0x19,0x36,
- 0x74,0xc8,0xe0,0xe6,0xab,0x41,0x19,0x94,0x41,0xf9,0xfb,0xcb,0x87,0x1f,0x0c,0x1d,
- 0x63,0xfe,0xa5,0xd1,0x2f,0x79,0x2c,0xa7,0x4a,0xa3,0x2d,0xc5,0x6c,0xc7,0x32,0x04,
- 0x5e,0x0e,0xe5,0x46,0x8e,0xcf,0xd0,0x2f,0x84,0x1d,0xcb,0xc9,0x25,0xcb,0xe1,0xa9,
- 0x34,0x06,0x85,0x59,0x90,0x00,0x49,0x39,0x95,0xde,0xa1,0xcc,0xc8,0xb1,0x82,0x84,
- 0x11,0xa4,0x42,0xb8,0xcf,0x25,0xd1,0x89,0x05,0x65,0x77,0x78,0x4a,0x15,0x01,0x19,
- 0x5f,0x2e,0x48,0x56,0x95,0x6c,0x2e,0x1c,0x53,0x46,0xe5,0x92,0x5b,0xae,0xd4,0xec,
- 0x3e,0xe5,0xd2,0x79,0xfb,0x15,0x9c,0x98,0xe5,0x54,0xce,0xda,0x5a,0xc9,0x72,0x2c,
- 0x83,0xaa,0x81,0x48,0x6b,0x41,0x8a,0xab,0xc0,0x97,0x95,0xa8,0x5c,0x7c,0x97,0xe5,
- 0x50,0x82,0x72,0xfd,0xb7,0x88,0xe5,0x50,0x0a,0xb7,0x5e,0x82,0x63,0x90,0xff,0xe4,
- 0x23,0x82,0xbf,0x31,0x07,0xd1,0xe1,0x0d,0x39,0xcc,0x75,0x99,0xc8,0xc3,0x2e,0xcb,
- 0x85,0x3f,0x0f,0x63,0xae,0x38,0x61,0xb0,0x34,0x48,0x7f,0xb1,0xaf,0xee,0x22,0xf4,
- 0xf9,0xb0,0xce,0xbc,0x5f,0x35,0xad,0x9d,0x26,0xce,0xf8,0x19,0xb9,0x83,0x2d,0xd7,
- 0xeb,0xcc,0xfc,0xe1,0x48,0xe8,0xe5,0x8e,0xbf,0xdd,0x47,0x49,0x35,0x3c,0xfe,0xb2,
- 0xe5,0x9f,0x4d,0xd4,0xd4,0x99,0xa8,0xa9,0x0d,0xa2,0xa9,0xa5,0x3d,0x76,0xec,0x38,
- 0x80,0xe0,0xd1,0xa3,0x47,0x03,0xfe,0x02,0x05,0x7e,0xef,0x6f,0xc4,0xa0,0x0c,0xca,
- 0xa0,0x0c,0xca,0x9f,0x29,0x13,0x6c,0x1d,0x11,0x26,0x3a,0xd7,0x80,0xb0,0x01,0x83,
- 0xb6,0x56,0x21,0xc1,0x97,0x83,0xf2,0x8a,0x54,0xbf,0xd4,0x38,0x10,0x76,0xc4,0xc0,
- 0xed,0x54,0xc1,0x72,0x7a,0x86,0x29,0x73,0xb1,0x11,0x8d,0xc8,0x40,0x8d,0x37,0x3e,
- 0x42,0xab,0xd6,0xc4,0xdd,0xbc,0xfe,0x16,0xb5,0x28,0xfd,0x55,0x2c,0xf3,0x5f,0xe7,
- 0x18,0x2b,0x4e,0x31,0x96,0x87,0xe8,0x2f,0xf6,0x47,0xc7,0x7a,0x2c,0xdc,0xab,0x3d,
- 0x9f,0xab,0x3d,0x87,0xa3,0x69,0xe5,0x30,0x61,0xc6,0x26,0x8d,0x69,0x3f,0x30,0xe6,
- 0x6e,0x3a,0x7a,0x36,0xf9,0xef,0xf4,0x45,0x52,0x5d,0x7d,0x9d,0xeb,0xf6,0x1d,0xba,
- 0xfa,0xfa,0xda,0xba,0xba,0x7a,0x7a,0xfa,0x9a,0xda,0x3a,0x5a,0xda,0xda,0x63,0xc7,
- 0x69,0x00,0x04,0xab,0x8d,0x56,0x23,0x5b,0xa0,0x87,0x7c,0x38,0x64,0xf0,0xfc,0x2b,
- 0x65,0x64,0xe8,0x87,0x43,0xd5,0x54,0xd5,0x0c,0x0d,0x19,0x33,0x67,0x5a,0xad,0x58,
- 0xf1,0xd9,0x86,0x0d,0xff,0x71,0x74,0x72,0x76,0xe1,0x6c,0x77,0x76,0xde,0xb6,0x61,
- 0xc3,0x4f,0x2b,0x57,0x7e,0x69,0x63,0x63,0x6b,0xc4,0x62,0xa9,0xab,0x8d,0x51,0x19,
- 0xa2,0xf2,0xde,0xad,0x1d,0x94,0x41,0x19,0x14,0x79,0xa2,0x32,0x4a,0x5b,0x67,0xc5,
- 0x09,0xd6,0x36,0x3e,0x6b,0x1b,0x0f,0x84,0xed,0x22,0x40,0x01,0xc0,0x62,0x17,0x01,
- 0x0a,0x3b,0xa3,0x30,0x15,0x2f,0x8b,0x44,0x38,0x86,0x4a,0x23,0x9b,0x57,0xe6,0x16,
- 0x8e,0xe7,0xf7,0xcd,0x2e,0x93,0xb8,0x6f,0x7a,0xd9,0x94,0x7d,0x02,0xd2,0x4b,0xca,
- 0x3c,0x10,0xfa,0x52,0xe6,0xb7,0xf7,0x2e,0x29,0x9a,0xca,0xd5,0x1b,0x23,0x63,0x06,
- 0xef,0xa5,0xbb,0x32,0x05,0x51,0x97,0x74,0x59,0xfd,0x56,0xff,0x55,0x5c,0x46,0xd0,
- 0x8c,0xd0,0x99,0xed,0x84,0x19,0xf7,0x96,0x12,0x6a,0xa5,0x1a,0xb9,0xb6,0xf3,0x99,
- 0x1b,0x1e,0x20,0x2e,0xfc,0x7d,0x16,0xb5,0x83,0x7a,0x75,0x22,0xfa,0x4a,0x6b,0xe5,
- 0x59,0xc6,0x8a,0x93,0x06,0x9f,0x06,0xa1,0x7d,0x59,0xf6,0xfb,0xd1,0xd1,0x97,0xb6,
- 0x2e,0x9a,0xe8,0x03,0xa5,0x9f,0x34,0x2c,0x37,0x18,0xdb,0x3b,0xdc,0xbd,0x9f,0xdf,
- 0xfd,0xb7,0xd8,0x0e,0xdd,0xfd,0xbc,0xdb,0xd7,0x2f,0xc0,0xc8,0x88,0xad,0xc3,0x60,
- 0x80,0x18,0x32,0x0c,0x75,0x0c,0x19,0x3a,0xba,0xba,0x13,0x26,0x6a,0x8d,0x1b,0x37,
- 0x4e,0x5d,0x5d,0x5d,0x55,0x55,0x95,0x3e,0x82,0x83,0xa0,0xf0,0xa0,0x2f,0xb8,0x5f,
- 0x19,0x35,0x72,0xd4,0xac,0x59,0x36,0x9b,0xb7,0x38,0xc4,0xc5,0x5f,0x2e,0x2a,0x29,
- 0x6d,0x6a,0x6e,0xea,0x92,0x48,0x7a,0x5e,0xc8,0xb4,0xf6,0x8b,0xe7,0x12,0x49,0x77,
- 0x53,0x73,0xf3,0xd3,0xf2,0x8a,0x84,0x2b,0xc9,0xdb,0x7f,0xdd,0x69,0x6f,0xbf,0x08,
- 0xc0,0xfa,0xbd,0x5b,0x3e,0x28,0x83,0x32,0x28,0xfd,0xca,0x47,0x1a,0x26,0xac,0x4d,
- 0x05,0x08,0x9e,0x38,0x42,0x82,0x62,0xa6,0xae,0x7c,0x63,0x97,0x5e,0x7c,0xa1,0xf1,
- 0x51,0x8a,0x89,0x04,0xcb,0xf8,0xb2,0x38,0x0b,0x79,0x09,0x58,0x4b,0x71,0x99,0x2f,
- 0x05,0x41,0x2a,0x31,0x05,0x82,0x94,0xc2,0x57,0xee,0xf6,0x29,0x08,0xb4,0x6d,0xe3,
- 0xcb,0x96,0x4b,0x03,0x3d,0xc9,0x8b,0x8b,0xab,0x91,0x01,0x53,0xbe,0x34,0x25,0xad,
- 0x53,0x40,0x83,0x66,0xef,0x24,0x41,0x9e,0xe6,0xbe,0x20,0x4e,0x9a,0x82,0x4f,0x27,
- 0x86,0xaa,0xf5,0xd6,0xd7,0xf9,0xa5,0x96,0x91,0x69,0x16,0x52,0x41,0x84,0xc5,0x6c,
- 0x67,0x4c,0x8d,0x1d,0xcb,0x7b,0xb9,0x30,0x46,0x61,0xa3,0x0d,0xf7,0x98,0xeb,0x33,
- 0x99,0x6b,0x53,0x99,0xab,0xaf,0xa0,0x4f,0x89,0xbf,0x88,0x64,0x7e,0x7e,0x8a,0xf1,
- 0xe9,0x31,0xdd,0x45,0x87,0xb5,0xed,0xdd,0xd1,0x07,0x4a,0xb6,0xae,0xda,0xd6,0x4e,
- 0xf8,0xcf,0x3f,0x6d,0x9c,0xbf,0x6a,0x57,0x5e,0x49,0xd5,0x7b,0x47,0xcf,0xb7,0x97,
- 0xdc,0xfc,0x7c,0xdb,0x39,0xb6,0x00,0xbb,0x4c,0x26,0x8b,0x09,0xc4,0x8c,0xc5,0xd2,
- 0x63,0xb2,0xf5,0x0d,0xf5,0x81,0x02,0x8f,0x1f,0x8f,0x76,0x61,0x11,0x17,0xf0,0xf0,
- 0x61,0xc3,0x01,0x76,0xdf,0xd5,0xf9,0x1b,0x13,0xc6,0x4f,0xfc,0x6d,0xf7,0x1e,0xaf,
- 0x43,0xde,0x20,0x87,0x0f,0xfb,0xfa,0xfa,0x05,0x06,0x04,0x1d,0x09,0x08,0x44,0x12,
- 0x18,0x84,0x24,0xe8,0x48,0xaf,0xf8,0xfa,0xf9,0xcf,0x99,0x33,0x5f,0x49,0xea,0x0d,
- 0x76,0xae,0x5b,0xb7,0xfe,0x90,0xb7,0x8f,0xb7,0xcf,0x61,0xc8,0x08,0x9a,0xfd,0x03,
- 0x40,0x8e,0xf8,0x05,0xf4,0xd5,0x0c,0x65,0xc1,0xef,0x7f,0x37,0x3b,0x8e,0xfc,0x68,
- 0xe4,0xdb,0xd4,0x05,0xda,0x84,0xc9,0x34,0x5a,0xbb,0xee,0xfb,0xc4,0xe4,0x64,0x3e,
- 0x5f,0xd8,0xde,0xd9,0xde,0xf3,0x42,0xa9,0x89,0x59,0xa7,0xa4,0xab,0x4e,0x5c,0x9f,
- 0x9e,0x91,0xe1,0xbc,0x8d,0x63,0x6e,0x66,0x3e,0x5c,0x65,0xf8,0x9b,0x19,0x00,0x2d,
- 0xf3,0xed,0x77,0x6b,0xbd,0x7d,0x7c,0xa1,0xca,0xde,0xf0,0x9f,0x5f,0x40,0x00,0xae,
- 0x29,0xa9,0x60,0x1f,0x09,0x08,0xea,0x27,0x52,0x81,0x40,0xeb,0x7d,0xba,0xfc,0x9f,
- 0xb2,0xc5,0x99,0x9a,0x98,0x41,0xcb,0x7a,0x7a,0x41,0x0b,0xfb,0xf9,0xf9,0x05,0xf8,
- 0xf9,0xfb,0xd3,0x05,0xc9,0x96,0xa8,0xb8,0x20,0x79,0x77,0x89,0x86,0x80,0x57,0xba,
- 0xc9,0xcf,0x3f,0x60,0xa1,0xfd,0xe2,0x81,0x1b,0x66,0x57,0xaf,0xf9,0x16,0x3f,0x8d,
- 0x87,0x7d,0x0e,0xa3,0x4a,0x05,0x06,0x06,0xf9,0x07,0xca,0x35,0xd2,0xd1,0x69,0xeb,
- 0x18,0xf5,0xb1,0x4a,0x6a,0x36,0x33,0x33,0x77,0xdb,0xb7,0xdf,0xc3,0xf3,0x10,0xe8,
- 0x87,0x5a,0x80,0x66,0x05,0xcd,0xe2,0xe1,0xe1,0x69,0x6a,0x62,0xaa,0x58,0xe1,0xd8,
- 0xb1,0xe3,0x7e,0xdd,0xf1,0x9b,0xd7,0x21,0xea,0x09,0x47,0xd6,0x06,0xf5,0xf3,0x78,
- 0xcb,0x6d,0xf9,0x57,0x9e,0x8a,0x7e,0x5f,0x3a,0xdc,0xe6,0x81,0xf3,0xe7,0xdb,0x29,
- 0xb0,0x44,0x4f,0x4f,0x7f,0xc7,0xce,0x5d,0x50,0x2f,0x6c,0x48,0x00,0xd8,0x41,0xf4,
- 0xf4,0x6b,0x06,0xbc,0xe6,0xb6,0xb3,0x6d,0x95,0x6c,0x34,0x7d,0x3d,0xfd,0x5d,0xbb,
- 0xf7,0xc0,0xb8,0x00,0x4f,0x17,0x98,0x41,0x2a,0xd8,0xcf,0xc3,0x09,0xdd,0x14,0x10,
- 0x08,0xcf,0xbb,0xfd,0xe2,0x01,0x7b,0x36,0xfe,0xf7,0xc3,0xf1,0x36,0x9b,0x58,0x8e,
- 0xcf,0xd8,0x2e,0x42,0x36,0x47,0x04,0xbf,0xc6,0xdc,0x3a,0x63,0xd7,0x3a,0xb6,0x54,
- 0x4c,0x5d,0x05,0xc6,0x1c,0x3e,0x04,0x58,0x9c,0x5a,0x12,0x63,0xee,0x0a,0x40,0x56,
- 0x6b,0xc2,0xe1,0xa3,0x18,0x8e,0xc8,0xc4,0x55,0x00,0x97,0xe6,0xdc,0x1a,0x3a,0xb1,
- 0x09,0x07,0xc5,0x20,0x6d,0xd2,0xc4,0x6c,0x57,0x11,0xb9,0x04,0x31,0xe3,0xf2,0x8d,
- 0x5d,0x6b,0x51,0x2e,0x5a,0x15,0x17,0x69,0x06,0x0d,0xa4,0x08,0x08,0x98,0xa0,0x12,
- 0x51,0x16,0x9c,0x58,0x84,0x2e,0x51,0x76,0xa2,0xb0,0x9a,0xe4,0x25,0x62,0xe2,0x2a,
- 0x84,0x42,0x71,0x7a,0x62,0x5b,0x35,0xa4,0x34,0x46,0x06,0x08,0xe9,0x34,0x28,0x92,
- 0xe4,0xe5,0x52,0xc5,0x81,0x4e,0xd0,0x0c,0x91,0x94,0x19,0xd8,0x78,0xfa,0x97,0x24,
- 0xa3,0x12,0xbb,0xf6,0xea,0xc1,0x22,0x02,0xf6,0x4d,0x6a,0xc7,0x72,0x11,0x62,0xcc,
- 0xed,0x65,0xcd,0xb2,0xa4,0x98,0xbd,0xb5,0x82,0xf8,0x94,0xf1,0xf6,0x2d,0x84,0xc2,
- 0xac,0x9f,0x1e,0xa1,0x2d,0xd3,0xdf,0xe3,0xdd,0x59,0x6b,0xae,0xa1,0xf3,0x3d,0xfe,
- 0x15,0xcd,0xfc,0x3c,0x8c,0xb1,0xec,0x98,0xfe,0x12,0x5f,0xdd,0xc5,0xee,0xda,0x76,
- 0x7b,0xb5,0xe7,0x72,0xb5,0xac,0x1c,0x35,0x67,0xfe,0x32,0x7e,0xfa,0x46,0xae,0x67,
- 0x78,0xbb,0xa4,0xfb,0xbd,0x03,0xe8,0xdb,0x08,0x80,0xc5,0xee,0x3d,0x7b,0xd9,0x6c,
- 0x13,0x23,0x23,0x13,0x36,0xdb,0xd8,0xcc,0xcc,0xcc,0xc4,0xc4,0x84,0xc5,0x62,0x1b,
- 0x30,0x0c,0x35,0x75,0x34,0x09,0xfe,0x8e,0x1c,0x81,0xbe,0x02,0xa6,0xf7,0x5f,0xbd,
- 0x93,0x5d,0x58,0xc6,0xc6,0xc6,0x77,0xee,0xde,0x3b,0x77,0xfe,0x42,0x42,0xd2,0xb5,
- 0xbc,0x82,0xc7,0x02,0x61,0x6d,0x17,0xb4,0xe4,0x8b,0xfe,0x8d,0x04,0x9c,0xda,0xb5,
- 0x7b,0xb7,0x92,0x3e,0xe8,0xd1,0xa3,0x46,0x87,0x47,0x44,0xc6,0xc6,0x5d,0xba,0x10,
- 0x7b,0xe9,0xee,0xbd,0xfb,0x95,0x55,0xd5,0xad,0x6d,0x8a,0x00,0x31,0xfb,0xc1,0xfd,
- 0xf1,0xe3,0xc6,0xbf,0x71,0x45,0xd4,0xd5,0xd4,0x57,0x7d,0xb3,0x26,0xe3,0xf6,0xad,
- 0xe6,0xd6,0xd6,0x37,0xee,0x85,0xce,0xae,0xce,0x47,0x79,0xb9,0x5b,0x9d,0x39,0x5a,
- 0x5a,0x6f,0xf2,0x17,0xa6,0x54,0x86,0xaa,0x84,0x9d,0x09,0xbf,0x9c,0x90,0x74,0x31,
- 0x2e,0xfe,0xde,0xef,0xd9,0x95,0xd5,0x35,0xed,0x1d,0x9d,0xef,0xcc,0x3f,0xf2,0xe2,
- 0xf9,0xf1,0x13,0x27,0x65,0x8b,0xfb,0xe7,0x8a,0xcf,0xa0,0x94,0xa8,0x73,0xe7,0x53,
- 0x52,0x33,0x8b,0x8b,0x4b,0x1b,0x1a,0x5b,0xfe,0x84,0x63,0xd2,0x25,0x3d,0xdd,0x1e,
- 0x5e,0xde,0x03,0x35,0xc6,0xfe,0xcf,0x07,0x61,0xe1,0x67,0x12,0xaf,0x5c,0xb9,0x10,
- 0x1b,0x9f,0x75,0x2f,0xbb,0xb2,0x92,0xd7,0xdc,0xd2,0xa2,0xe0,0x99,0x79,0x98,0x9b,
- 0xcb,0x64,0x18,0x29,0xa9,0xf9,0x8b,0x95,0x5f,0xa4,0xa6,0xa5,0x9d,0x8d,0x8c,0x4e,
- 0x4d,0xcb,0x7c,0x52,0x54,0x5a,0xdf,0xd0,0x04,0x75,0x91,0xa7,0xb9,0xb9,0xb5,0x65,
- 0xe5,0xca,0x95,0xaf,0x79,0x77,0xd8,0xc6,0xb7,0x6e,0x67,0x45,0x46,0xc5,0x24,0x26,
- 0x5d,0x7b,0x94,0x57,0x28,0x12,0x89,0xe1,0x05,0x19,0xa0,0x66,0x07,0xa0,0x57,0x60,
- 0xc9,0xac,0x59,0x36,0x59,0x77,0xef,0x87,0x9e,0x09,0x4f,0xba,0x7a,0xbd,0xe0,0x71,
- 0xa1,0xa8,0x4e,0x2c,0xe9,0x96,0x5b,0xb5,0x4e,0x89,0x84,0xbb,0x7d,0x87,0x92,0x8d,
- 0xb6,0xf6,0xdf,0xeb,0x8a,0x4b,0x4a,0x0b,0x1e,0x17,0x09,0x6b,0xc5,0x5d,0xf2,0xc7,
- 0xd8,0xee,0x1e,0x74,0x5e,0x01,0x74,0xd6,0xe6,0x2d,0x0e,0x03,0xf7,0x6c,0x0c,0x1f,
- 0x39,0xc1,0xe0,0xab,0x28,0x29,0xc2,0x8a,0x64,0xa4,0x8e,0x0e,0x98,0x6d,0x17,0x00,
- 0x2e,0x9b,0x6f,0xe7,0x41,0x1a,0x94,0x8c,0x2b,0x36,0xe5,0x0a,0xe1,0x92,0x04,0xe0,
- 0x97,0xc2,0x26,0xea,0x56,0x2d,0x44,0x82,0x90,0x4b,0x3a,0x6f,0xaf,0x66,0x3a,0x17,
- 0x17,0xe5,0xa2,0x52,0xba,0x8a,0x00,0x97,0x21,0x31,0xc6,0x71,0x3e,0xbe,0x8b,0x04,
- 0x6e,0x11,0x6d,0x18,0xa6,0x21,0x6f,0x1d,0xca,0x4b,0x12,0x03,0x7c,0x63,0x85,0x10,
- 0x03,0x45,0xa0,0x4b,0x50,0xc8,0x15,0x23,0x84,0xe5,0xa2,0x78,0x0c,0xa9,0xc8,0x2a,
- 0xfa,0x2e,0xd2,0xe6,0xca,0x27,0xb9,0x88,0x66,0x52,0x04,0x6d,0x1b,0xb1,0xb9,0xb7,
- 0x68,0x57,0x01,0x0b,0x43,0x39,0x41,0x67,0x84,0xb9,0x48,0x04,0x74,0x00,0x01,0x3d,
- 0x47,0x68,0xee,0x5a,0x05,0xa0,0xdc,0x97,0x1d,0x13,0x97,0x3a,0xa0,0xb0,0x43,0xa9,
- 0x91,0x43,0x19,0xde,0x2c,0x5d,0xc0,0xfc,0xf1,0x3e,0xfa,0xe2,0x98,0x1c,0xeb,0xb1,
- 0x3a,0xc9,0xe8,0xff,0xa2,0x99,0x2b,0x23,0x18,0xcb,0x43,0xf4,0x16,0xf9,0xa2,0x3f,
- 0xf4,0xb0,0x60,0xa7,0xf6,0x6c,0x8e,0xb6,0x8d,0xf3,0xf8,0x69,0x1b,0xa7,0x2c,0xd9,
- 0x76,0x2f,0xf7,0x99,0x3c,0xd4,0xf8,0x4b,0x48,0xc6,0xad,0xdb,0x53,0xa7,0x5a,0x02,
- 0xe0,0x02,0xf2,0x4e,0x9e,0x6c,0x61,0x32,0x69,0xaa,0xb9,0xb9,0x39,0x84,0x81,0xd0,
- 0x69,0x33,0x58,0x13,0xb5,0xb4,0x34,0x34,0x34,0xc8,0x16,0x2c,0xb2,0x0b,0x1a,0x86,
- 0xfa,0x77,0x72,0x0a,0x07,0x83,0xc1,0xb8,0x7a,0x3d,0xe5,0xc0,0x41,0xcf,0xc0,0xa0,
- 0x90,0xf4,0x8c,0xdb,0xe5,0x15,0x55,0xed,0x1d,0x1d,0xf2,0x46,0x3c,0x49,0x8f,0x04,
- 0x66,0xfb,0x40,0x6c,0x95,0xd1,0x3c,0x72,0xc4,0xa8,0xa0,0xe0,0xa3,0xfe,0x41,0xc7,
- 0xdc,0xbd,0x7c,0xe2,0x13,0xae,0x3c,0x2e,0x2c,0x6e,0x6c,0x6a,0x92,0x74,0xcb,0x1d,
- 0x4b,0x0b,0x9e,0x3c,0xd1,0xd5,0xd1,0x7d,0x83,0x2a,0xc0,0x7c,0xe0,0x93,0xc5,0x9f,
- 0xa4,0x65,0x64,0xbc,0xab,0x13,0xc2,0xbb,0x9f,0xf7,0x14,0x95,0x94,0x7e,0xb3,0xfa,
- 0x3b,0x75,0xb5,0x31,0x7f,0xc8,0x12,0xe8,0x97,0x90,0x13,0x27,0x8e,0x1e,0x0f,0x39,
- 0xec,0x1d,0x1c,0x13,0x9b,0xf0,0xb8,0xb0,0xb4,0xb1,0xa9,0x45,0xf2,0xee,0x30,0xf1,
- 0x6c,0xe4,0x39,0xd9,0xe2,0x16,0x7c,0xbc,0x20,0x25,0xfd,0xc6,0xbe,0x03,0xee,0xa7,
- 0x4e,0x47,0x66,0xdd,0xcd,0xae,0xe1,0xf3,0x25,0x92,0xe7,0x03,0xbd,0x1d,0xa2,0xe7,
- 0xc5,0xf3,0x90,0x13,0xa1,0x03,0x37,0xc6,0x06,0x04,0x1d,0x0b,0x39,0x7e,0x12,0xf8,
- 0xef,0xc5,0xb8,0x24,0x00,0xb5,0xc6,0xc6,0x66,0x05,0x87,0xed,0x14,0x14,0x3e,0x31,
- 0x66,0x9b,0x28,0xa9,0x79,0xd9,0xb2,0x65,0x30,0x2f,0xda,0xed,0xe6,0x7e,0x26,0x22,
- 0x0a,0x9a,0x4b,0x58,0x2b,0xea,0x90,0xff,0xe7,0x4d,0x3b,0xba,0x24,0xdf,0xfd,0x7b,
- 0xbd,0x62,0x85,0x06,0x06,0x8c,0x94,0x1b,0x69,0x7b,0x0f,0xb8,0x1f,0x0d,0x09,0x4d,
- 0x4d,0xbb,0x09,0xd3,0xad,0xb6,0xf6,0xf6,0x01,0x6a,0x76,0x20,0xee,0x0a,0x5e,0xf6,
- 0x69,0x96,0xd3,0x6e,0x66,0x64,0xfc,0xba,0xcb,0x2d,0xe4,0xc4,0x99,0xf4,0x8c,0x3b,
- 0xd5,0x3c,0x7e,0x6b,0x5b,0x9b,0x82,0x1e,0xf4,0x52,0x6e,0x06,0x35,0x5c,0x65,0x78,
- 0x5c,0xfc,0xe5,0xcc,0xac,0xbb,0x39,0x0f,0x61,0x66,0x2e,0xea,0xe8,0xec,0x92,0x37,
- 0xc6,0x76,0xf7,0xf4,0x00,0xf8,0x3e,0x29,0x2c,0x9e,0x62,0x31,0x75,0xe0,0x9e,0x0d,
- 0x10,0x55,0x03,0x3b,0xd6,0xe6,0xc7,0x08,0x41,0x5c,0x10,0xd6,0x00,0x78,0x01,0x0e,
- 0x9a,0x72,0x90,0xa7,0x15,0x63,0x2b,0x0d,0xc7,0x04,0x2e,0x05,0x14,0x58,0x13,0xe4,
- 0xe2,0x02,0x09,0x45,0x94,0x16,0x2e,0x09,0x48,0xf5,0x42,0x1b,0x86,0x4b,0x1a,0xda,
- 0xa4,0x18,0x5a,0x47,0x40,0x1c,0xa8,0x25,0xca,0x45,0x53,0x4b,0xba,0x20,0x29,0x28,
- 0x9b,0x70,0x78,0x00,0x7f,0xd2,0x52,0x08,0x10,0x03,0x75,0xa5,0x26,0x00,0x94,0x49,
- 0xbd,0xe6,0x91,0xcb,0x3a,0x5c,0x05,0x11,0xad,0x93,0x32,0xa3,0xd7,0x7e,0x12,0xdf,
- 0x1b,0xc6,0x6a,0x05,0x32,0x91,0xc0,0xbb,0x85,0x50,0x23,0xc2,0xb8,0xb1,0x91,0x54,
- 0x45,0x28,0x86,0x8e,0x27,0x1b,0x04,0xd9,0x81,0xec,0x4b,0xb9,0xb6,0x88,0x64,0x24,
- 0xab,0xd6,0xf4,0x62,0x3b,0x85,0xc5,0x5b,0x2b,0xd8,0x4e,0xe5,0xd4,0xee,0x2c,0xbc,
- 0x4d,0x9a,0x85,0x88,0xf0,0x5d,0xe6,0xda,0x74,0x74,0x6a,0xc7,0x57,0xb1,0xe8,0x1b,
- 0xe1,0x15,0xa7,0x0c,0x96,0x04,0xe9,0x2e,0xf2,0x42,0x7f,0x53,0x69,0x0e,0x47,0xcb,
- 0xda,0x51,0xd3,0xea,0xe7,0x1f,0xb8,0xc7,0x1b,0x1a,0x5b,0x7b,0xfe,0x9a,0x10,0xdc,
- 0xd8,0xdc,0x08,0xf3,0x46,0x63,0x63,0x13,0x53,0x73,0x0b,0x33,0x8b,0x69,0x96,0x96,
- 0xd3,0x2d,0x2c,0x67,0x98,0x4e,0x99,0x31,0xc9,0x62,0x2a,0x70,0x61,0x43,0x86,0x91,
- 0x96,0x9e,0x8e,0x86,0xc6,0x04,0x35,0x35,0xb5,0x57,0xf1,0x17,0xb9,0x83,0x3f,0x78,
- 0x73,0x14,0xd6,0xd3,0xd5,0x4b,0xb9,0x71,0x63,0xff,0x41,0x0f,0xdf,0x80,0xe0,0x1b,
- 0x69,0x99,0xe5,0x15,0x95,0x30,0x86,0xc8,0xc3,0x5f,0x00,0xa6,0xe0,0x63,0x21,0x23,
- 0x86,0x8f,0x50,0x46,0xf3,0x47,0xc3,0x47,0x78,0x79,0xfb,0x04,0x05,0x1f,0x3f,0xe8,
- 0xe9,0x13,0x1b,0x9f,0x98,0x9b,0xff,0x58,0x31,0xfe,0x3e,0x2d,0x7b,0xc6,0x64,0x30,
- 0xff,0xa8,0xfd,0x30,0x2d,0x71,0x70,0x74,0x2a,0x2b,0x2f,0xef,0xea,0xea,0x06,0xdd,
- 0xef,0xb0,0x53,0x6a,0x45,0xe2,0xc0,0x23,0xc1,0x86,0x06,0x86,0x7f,0x68,0x92,0xe3,
- 0x17,0x14,0x74,0x3c,0x34,0xcc,0xd3,0xdb,0x3f,0x26,0x2e,0x31,0xaf,0xa0,0xa8,0xbe,
- 0xb1,0x49,0xc9,0x35,0xf0,0xd7,0x0a,0xd4,0x2e,0x2e,0xfe,0x92,0x6c,0x59,0x36,0x36,
- 0xb6,0xe9,0x99,0x19,0x6e,0xfb,0xdc,0x43,0xc3,0xc2,0x33,0x6e,0x67,0xd7,0xf0,0xf8,
- 0x30,0x03,0x19,0xe8,0x57,0x00,0xf4,0x47,0x44,0x45,0x0d,0xdc,0x00,0x7b,0xc0,0xc3,
- 0xe3,0xe4,0xa9,0x53,0x18,0x7f,0x13,0x1f,0xe6,0x3d,0x01,0xfc,0x85,0xb1,0x5d,0xde,
- 0xa4,0xa2,0xb4,0xac,0x4c,0xf9,0x01,0x7f,0xa1,0xfd,0xa2,0xb8,0x4b,0xf1,0xbb,0xf6,
- 0x1e,0x0c,0x0d,0x8b,0xcc,0xbc,0x9d,0x2d,0x50,0x88,0xbf,0x5d,0xdd,0x92,0x1f,0x37,
- 0x6c,0x54,0xac,0x50,0x5b,0x4b,0x27,0xf9,0x5a,0xca,0x7e,0x77,0xcf,0xc0,0xe0,0x13,
- 0xd7,0xae,0xa7,0xc3,0xdc,0x15,0xad,0xf0,0x0c,0xcc,0xfc,0xc7,0x2f,0x20,0x48,0x81,
- 0xcb,0xc9,0xdc,0x7c,0x52,0xca,0x8d,0xd4,0x1d,0x3b,0xf7,0x04,0x1d,0x3d,0x71,0x23,
- 0xfd,0x16,0x5e,0x78,0x91,0x3b,0x13,0x80,0x1e,0x0c,0x08,0x08,0x52,0xa6,0xc5,0xa6,
- 0x4f,0x9b,0xfe,0x28,0x37,0x0f,0x86,0x85,0xa2,0x92,0xf2,0x86,0x26,0x45,0x4f,0x72,
- 0x7b,0x47,0x67,0x73,0x73,0xcb,0xd9,0xb3,0x91,0xaa,0x23,0x55,0x07,0xee,0xd9,0x00,
- 0x19,0xa2,0xa2,0xaa,0xbb,0xdc,0x17,0x3b,0x3d,0x6b,0x09,0x12,0x01,0x61,0x04,0xac,
- 0x34,0x77,0x45,0x88,0x43,0xb0,0x15,0x68,0x20,0x01,0x1d,0x7a,0xb9,0x98,0x60,0x31,
- 0x5a,0x70,0xc6,0x64,0xd3,0x18,0xd0,0x87,0x4b,0xc5,0x93,0x95,0x61,0xb6,0x34,0x2f,
- 0x0d,0x91,0x88,0xb4,0x72,0xf9,0x38,0xa5,0x98,0x5e,0x25,0xc6,0xb8,0x46,0x2d,0xf3,
- 0x22,0xfe,0xcb,0x01,0xc8,0xa3,0xd2,0x93,0xb2,0x30,0x93,0xad,0x46,0x3a,0x09,0xab,
- 0xc5,0x34,0x1c,0x2f,0x65,0xf3,0xa4,0x3c,0xb7,0x1a,0x2b,0x47,0xe9,0xb1,0x49,0xa4,
- 0x68,0x1a,0x40,0x45,0xc6,0x32,0xf8,0x8b,0xd6,0xab,0x5d,0x85,0x38,0x2f,0x21,0xd4,
- 0x62,0x52,0x0a,0x5a,0xca,0x86,0xbc,0xae,0x78,0x46,0xc1,0x15,0x99,0x63,0x72,0x4d,
- 0xda,0x01,0x13,0x6d,0x0c,0xd0,0xc8,0xb6,0x3a,0xc2,0xa3,0xe9,0x2a,0x60,0x1b,0x70,
- 0x0c,0x2e,0x17,0x4d,0x63,0x38,0x98,0x1a,0xcb,0xfa,0x8b,0xd1,0x06,0xad,0x4a,0xe4,
- 0x14,0xde,0x5c,0xdc,0xbb,0x2f,0xeb,0xfb,0xbb,0x46,0xeb,0x6f,0xa2,0xcf,0x84,0x57,
- 0x25,0x30,0x3f,0x0f,0x07,0x16,0x6c,0xb0,0x34,0x50,0x77,0x91,0x07,0xda,0x14,0x3d,
- 0x0f,0xed,0x88,0x36,0x5b,0xb8,0x35,0xe5,0xd6,0xa3,0xbf,0x28,0xfe,0x5e,0x4e,0x48,
- 0xb0,0xb2,0xb2,0x36,0x33,0x33,0xb7,0xb4,0x9c,0x36,0x63,0xa6,0xd5,0x4c,0x2b,0x6b,
- 0x90,0x19,0x33,0x66,0x4e,0x9a,0x62,0x69,0x62,0x6e,0xc1,0x60,0x30,0x75,0x0c,0x19,
- 0x13,0x26,0x4c,0x20,0xbb,0xb0,0xc8,0x12,0x34,0xc1,0xdf,0xb7,0xf7,0x02,0x6b,0x4e,
- 0xd4,0x4c,0x48,0x4a,0x72,0xf7,0xf0,0x0e,0x08,0x3a,0x72,0x35,0x25,0xed,0x69,0x79,
- 0x65,0x4b,0x6b,0x9b,0xbc,0x59,0x2e,0xbc,0x80,0x61,0xa7,0x4f,0x03,0xb1,0x55,0x46,
- 0xf3,0xf0,0x61,0x1f,0x79,0x78,0x7a,0x1d,0x0b,0x0d,0xdd,0x7f,0xd0,0xfb,0xc2,0xc5,
- 0x04,0xe0,0x32,0xf5,0x0d,0x0d,0x0a,0x16,0x48,0x79,0x02,0xbe,0xa9,0xe9,0x6b,0x3c,
- 0x6e,0x7d,0x44,0x6b,0xa2,0xd6,0xe9,0x33,0x67,0x1a,0x1a,0x1b,0x3b,0x3b,0x95,0xc2,
- 0x1d,0x40,0x7f,0x2c,0xdd,0x5d,0x12,0x09,0x04,0xd0,0xbf,0xe7,0x88,0x30,0x42,0xde,
- 0x7e,0xb3,0x4b,0x7a,0xba,0x53,0xd3,0xd2,0xad,0xad,0xac,0x95,0xdf,0xe7,0xb6,0xff,
- 0xa0,0x7b,0xd8,0x99,0x70,0x0f,0x2f,0x9f,0xe8,0x0b,0xf1,0x05,0x8f,0x9f,0x88,0xeb,
- 0x9b,0x24,0x3d,0x4a,0xe1,0xaf,0x32,0xe3,0x76,0xda,0xcd,0x0c,0xd9,0xb2,0x2c,0xa6,
- 0x4c,0xbd,0x73,0xef,0x77,0xb7,0x03,0xee,0xc7,0x43,0xc3,0x33,0x6f,0xdf,0x05,0xfc,
- 0xed,0xe8,0xe8,0x1c,0xd0,0x55,0x20,0xd2,0x5c,0x71,0x09,0xf1,0x03,0x37,0xc0,0xee,
- 0xda,0xb3,0xf7,0xf4,0x99,0xb3,0x07,0x3d,0xbd,0xcf,0xc7,0xc4,0x3e,0x78,0x94,0x5f,
- 0x57,0x5f,0xdf,0xfd,0x5c,0xee,0xb2,0x67,0x35,0xaf,0x66,0xd6,0x2c,0x1b,0x25,0x35,
- 0xcf,0xb2,0xb6,0xb9,0x9c,0x90,0xb8,0x7b,0xef,0xfe,0x93,0xa7,0x22,0x32,0x32,0xef,
- 0xf0,0x04,0xa2,0x56,0xf9,0x74,0x15,0x7a,0xcd,0x69,0xeb,0x36,0xc5,0x0a,0xc7,0x8e,
- 0x1b,0x7b,0x29,0x31,0xc9,0xdd,0xcb,0x27,0x20,0xe8,0x78,0xf2,0xd5,0xd4,0xb2,0x67,
- 0x18,0x7f,0x07,0xa6,0xfd,0x4f,0x85,0x85,0x29,0xf0,0xfb,0xb0,0x59,0xc6,0xd7,0x53,
- 0x6e,0xfc,0xb6,0x6b,0x5f,0x50,0xf0,0x89,0xeb,0x69,0x19,0xcf,0x2a,0x6b,0x5a,0x5a,
- 0x14,0x31,0xf1,0xd3,0x67,0xc2,0x5f,0xdb,0x5c,0x2a,0x43,0x54,0x9c,0xb7,0x71,0x72,
- 0x1e,0xe5,0x01,0xa1,0xae,0xaa,0xe1,0xb5,0xb6,0x75,0xc8,0x7d,0x2a,0x5e,0x3c,0x6f,
- 0x6b,0xef,0x68,0x6c,0x6a,0x5b,0xb5,0x6a,0xf5,0xc0,0x3d,0x18,0xb4,0xa8,0xea,0x58,
- 0x31,0x7f,0xc9,0x23,0x80,0x88,0xf8,0x2f,0x97,0x4f,0x13,0x5e,0xe2,0x2a,0xa5,0xe9,
- 0x21,0x75,0x89,0x91,0xab,0xf7,0x17,0xe2,0xb7,0xf3,0xd9,0xb2,0x54,0x54,0x26,0x31,
- 0xb5,0x50,0x4c,0xa7,0xe4,0xf2,0x64,0x16,0xb7,0x31,0x68,0xba,0xf2,0x41,0xb0,0x37,
- 0x56,0x44,0x80,0x15,0x63,0x9f,0xc8,0x94,0x53,0x43,0xad,0x06,0xcb,0x64,0xa7,0xa9,
- 0xae,0x6c,0x41,0x68,0x85,0x59,0x6a,0x33,0xc1,0x65,0x74,0x89,0xb3,0x98,0x62,0xfd,
- 0xb2,0x35,0x92,0x2d,0xb7,0x4f,0xa4,0xac,0x6d,0x78,0xc9,0x5a,0xfc,0x92,0x91,0xdc,
- 0x5a,0xa9,0x91,0xd2,0x16,0xe0,0x8a,0xf1,0x8c,0x42,0x40,0x99,0x8d,0x17,0xc0,0x49,
- 0x5b,0xf5,0xdd,0x2a,0x46,0x3e,0xf2,0x72,0x7a,0xc6,0xda,0x82,0x8f,0xf5,0x40,0x10,
- 0x9c,0x63,0xf4,0xe3,0x3d,0x74,0x6a,0xd6,0x9a,0xab,0xe8,0x4f,0x3c,0x7c,0x19,0xce,
- 0x04,0x08,0x5e,0x12,0xa0,0x6d,0xef,0xae,0x6d,0xb7,0x0b,0xfd,0xd5,0x06,0x6b,0x87,
- 0xaf,0x1d,0x8e,0xd5,0x35,0x34,0x0d,0xdc,0xe0,0x33,0x40,0xd2,0xdc,0xd2,0xfa,0xd5,
- 0xd7,0xdf,0x98,0x4e,0xb2,0x98,0x32,0x65,0xea,0xcc,0x99,0x56,0xb3,0x66,0xcf,0xb1,
- 0xb1,0x9d,0x63,0x3b,0xc7,0x6e,0xd6,0x6c,0xdb,0x19,0x56,0xd6,0x93,0x26,0x5b,0x18,
- 0x1b,0x1b,0x1b,0x18,0x32,0x27,0x6a,0xa2,0x0f,0x81,0x47,0xab,0x52,0x4b,0xd0,0xe8,
- 0x20,0xca,0x21,0xd4,0x59,0x58,0x6f,0xb3,0x0a,0x3d,0x6e,0xcc,0xb8,0x8b,0x71,0xf1,
- 0x1e,0x9e,0x87,0x3d,0x7c,0x43,0xae,0x5c,0x4f,0x2d,0x2a,0x29,0x6b,0x69,0x6d,0x95,
- 0x37,0xd1,0x85,0xf8,0xa8,0xe8,0xf3,0xaa,0xa3,0x94,0x9a,0xe2,0xaa,0x0c,0x1d,0xf6,
- 0xdb,0xae,0x3d,0xa1,0x61,0xa7,0xf7,0x1d,0xf0,0x3a,0x1f,0x13,0xf7,0xe0,0x61,0x7e,
- 0x9d,0xb8,0x51,0xc1,0x58,0x5a,0x5b,0x27,0x9e,0x62,0x39,0x45,0x79,0xcb,0x27,0x4f,
- 0x9a,0x7c,0xfe,0xc2,0xc5,0xe6,0x96,0x66,0x20,0xec,0x8a,0x99,0x2f,0x10,0x28,0xc0,
- 0x7d,0x98,0x57,0x34,0x35,0xb7,0x88,0xc4,0xf5,0x42,0x51,0x9d,0xb0,0xb6,0x16,0xe8,
- 0x0f,0x04,0x80,0x9f,0x36,0x35,0xb7,0x4a,0x00,0x93,0x69,0xc3,0x5e,0xf4,0xad,0x72,
- 0xce,0x83,0x07,0xcb,0x97,0xaf,0x50,0xb2,0x91,0xb7,0xef,0xd8,0x19,0x7e,0x36,0xd2,
- 0xdd,0xd3,0xe7,0xdc,0xf9,0xb8,0x07,0xb9,0x05,0xe2,0xfa,0x86,0xee,0xd7,0xe2,0xef,
- 0x0b,0xb4,0xb0,0xd0,0x25,0xe9,0xee,0xec,0x92,0x74,0x74,0x75,0xb6,0xb5,0x75,0xc0,
- 0x68,0x86,0x02,0x40,0x2a,0x24,0xf8,0x17,0xc7,0x43,0xdc,0xef,0xd9,0xf7,0xa1,0xdf,
- 0xe9,0xb2,0x8c,0x8c,0x58,0xb7,0xef,0xdc,0x73,0xdb,0xef,0x19,0x1c,0x12,0x76,0x33,
- 0xf3,0x4e,0x65,0x35,0xaf,0xbd,0xb3,0x43,0x99,0xf1,0x1f,0xc3,0x68,0x0f,0xd6,0xd9,
- 0x0e,0x59,0xa0,0xc4,0xd6,0xb6,0x36,0xe8,0x77,0x54,0x34,0x15,0x6e,0x03,0x28,0x81,
- 0x00,0x5c,0x42,0x18,0x6e,0x81,0xa0,0xdb,0x9d,0xc8,0x8c,0x94,0xd4,0xb4,0x81,0x1b,
- 0x5d,0x5d,0x5c,0xb9,0x67,0x23,0xcf,0xb9,0x1d,0xf4,0x8a,0x8a,0x8e,0xcd,0x79,0x98,
- 0x0f,0x0d,0xa8,0xc0,0x95,0x29,0xaa,0x13,0xd9,0xd9,0x29,0xda,0x98,0x24,0x2b,0x53,
- 0x2d,0x2d,0x2f,0x25,0x24,0xec,0xdc,0xbd,0x2f,0x24,0xf4,0x74,0xda,0xcd,0xdb,0x35,
- 0x7c,0x41,0x47,0xa7,0x5c,0x4c,0x01,0xd9,0xb3,0xd7,0xed,0x35,0x40,0xa0,0xaa,0x1a,
- 0x1b,0x7f,0xc9,0xf3,0x90,0x8f,0x7f,0x60,0xc8,0x95,0xab,0xa9,0x25,0x4f,0x9f,0x41,
- 0x13,0x29,0x5e,0xee,0xc0,0x33,0x3d,0x34,0xf1,0x83,0x0e,0x86,0x49,0x60,0x5b,0x07,
- 0xea,0xe2,0x8e,0x2e,0xd4,0xdd,0xd0,0xb6,0xf4,0x25,0xea,0x15,0xd4,0x3b,0x9d,0xd0,
- 0xf8,0x10,0xe8,0x94,0x74,0x45,0x45,0x47,0x8f,0x1c,0x21,0x77,0x77,0xa2,0x81,0x81,
- 0x61,0xd2,0xd5,0x6b,0x7b,0xdc,0x0e,0x04,0x04,0x87,0x5c,0x4f,0xcd,0x44,0x4c,0xbc,
- 0x45,0x51,0xd5,0x2e,0xc6,0x5f,0x7e,0x6d,0x73,0x69,0x8c,0x1b,0x7f,0xe5,0xea,0xb5,
- 0x9b,0x99,0xb7,0xb3,0x73,0x72,0x45,0xe2,0x86,0xce,0x2e,0xf9,0x0e,0xe5,0x4e,0x09,
- 0xbc,0x46,0xf9,0x05,0x05,0x06,0xfa,0x06,0x03,0xf7,0x60,0xd0,0xf2,0xe1,0x07,0x43,
- 0x75,0x97,0x1e,0x46,0xac,0x4d,0xea,0x08,0x36,0xe1,0x0a,0x09,0x3c,0x91,0xdd,0x50,
- 0x80,0x68,0x78,0xb9,0x58,0x44,0x31,0x44,0xc4,0x22,0x79,0x98,0xbd,0xf2,0x28,0xd6,
- 0x2c,0x75,0x19,0x03,0x0c,0xe1,0x3d,0x4e,0xb5,0xb4,0x2a,0xc8,0x0b,0xa4,0x15,0x40,
- 0xaa,0x97,0x0e,0x73,0xc5,0x14,0xe0,0x72,0x29,0x24,0xc5,0x2c,0x55,0x76,0xa7,0x53,
- 0x1d,0x1b,0xfb,0x6d,0xa5,0xa4,0x5b,0x88,0xb9,0x27,0x45,0x93,0x91,0xc3,0x17,0xac,
- 0xe2,0x52,0x5b,0xb0,0x28,0xbf,0x2d,0x6d,0xa4,0xd4,0x1f,0x8d,0xb3,0xd4,0xd2,0xd4,
- 0x5b,0xca,0xcd,0x45,0x24,0x0b,0x11,0xc2,0x9d,0x21,0xa6,0x77,0x83,0x19,0x46,0x7f,
- 0xec,0x44,0x46,0xf6,0xa3,0xea,0x03,0xd5,0x75,0xed,0xad,0x3e,0xae,0x20,0x22,0xcb,
- 0x64,0xdf,0x17,0x61,0xe5,0xf4,0x92,0xb8,0xb1,0x0b,0x0f,0xc1,0x2e,0x87,0x54,0x5f,
- 0xc8,0x76,0x11,0x52,0x1b,0xa4,0x09,0x0b,0x06,0x14,0x76,0x2c,0xc3,0x67,0x76,0x91,
- 0xcf,0x84,0x1f,0xe2,0x0f,0x84,0xb3,0xd0,0x8e,0xac,0xaf,0xe3,0x98,0x2b,0x23,0x19,
- 0x2b,0x8e,0x1b,0x2c,0x09,0x44,0xbe,0x60,0xbb,0x1d,0xda,0xb6,0x2e,0xac,0x05,0xce,
- 0x27,0x2f,0xa4,0xff,0x39,0xa0,0xf9,0xae,0x04,0x5e,0xc6,0xcb,0x89,0x89,0x66,0xa6,
- 0x93,0xcc,0x2c,0xa6,0x03,0xf6,0x02,0xf2,0xce,0xb3,0x5b,0x30,0xcf,0xee,0xe3,0xf9,
- 0x76,0x0b,0x6d,0xe7,0xce,0xb3,0x9e,0x65,0x33,0x6d,0xda,0x74,0xe2,0x05,0xd6,0xd5,
- 0xd5,0xa3,0xf9,0x2f,0x39,0x08,0x1a,0xc0,0x97,0x7c,0xb8,0xfa,0x36,0x5f,0x21,0x8d,
- 0x51,0x1b,0x13,0x1d,0x13,0x83,0xb7,0xec,0x06,0x24,0x25,0xa7,0x16,0x16,0x2b,0xc2,
- 0x5f,0x90,0xa4,0xa4,0x64,0xf5,0xd1,0xea,0xca,0x68,0x86,0xe9,0x81,0xb3,0xcb,0xb6,
- 0xd3,0xe1,0x11,0xfb,0xf7,0x79,0x47,0x5f,0xb8,0x98,0x9d,0x93,0x27,0x12,0x37,0x2a,
- 0xf0,0xe5,0xd5,0x37,0x36,0x5a,0x5b,0xcf,0x52,0xd2,0x6c,0x3d,0x5d,0xfd,0x8b,0xb1,
- 0x71,0xf5,0x0d,0xf0,0xde,0xb7,0x29,0xfe,0x63,0x1c,0x50,0x97,0x96,0xb6,0x56,0x71,
- 0x43,0x43,0x0d,0x4f,0x58,0x58,0xfc,0x34,0x2f,0xff,0xc9,0xef,0x39,0x05,0x77,0xb3,
- 0x1f,0xde,0xcb,0xc9,0x7b,0x98,0xfb,0xf8,0x49,0x51,0x49,0x45,0x25,0x8f,0x2f,0x02,
- 0x45,0x2d,0x00,0x73,0xfd,0x12,0x61,0xd0,0x50,0x58,0x52,0x62,0x65,0x3d,0x4b,0x99,
- 0xd5,0x06,0xa7,0xad,0xce,0xe7,0xce,0xc7,0xb8,0x1d,0xf0,0x8c,0x8c,0x8e,0xbd,0xff,
- 0x30,0x4f,0x2c,0xae,0x97,0x48,0x5e,0x83,0xbf,0x30,0xf0,0x36,0x35,0x37,0x8b,0xeb,
- 0x1b,0x05,0xc2,0x3a,0x1e,0x5f,0x58,0x2d,0xe0,0x57,0xf3,0x84,0x35,0x7c,0x7e,0x0d,
- 0x4f,0x50,0xc3,0xab,0xad,0xaa,0xe6,0x55,0xd7,0x08,0x78,0xfc,0x5a,0x61,0xad,0xe8,
- 0xc1,0xc3,0x47,0xc3,0x54,0x86,0xc9,0x34,0x82,0x5e,0x66,0x56,0x16,0xf0,0xdf,0x23,
- 0xc1,0x27,0x53,0x6e,0xdc,0x2c,0x2e,0xad,0x80,0xd1,0x5a,0xc1,0x0a,0x3f,0x92,0x17,
- 0x08,0x7c,0xdb,0xda,0x3b,0x9b,0x9a,0x5a,0x41,0x21,0x14,0x57,0x55,0x2d,0xa8,0xa8,
- 0xac,0xae,0xac,0x16,0x54,0x61,0xa9,0xac,0xe2,0x55,0x55,0xf3,0xb1,0x08,0x64,0xa5,
- 0xb2,0xaa,0x06,0x7e,0xab,0xc1,0x2c,0xbe,0xf0,0x76,0xd6,0xbd,0x81,0x3b,0x81,0x6d,
- 0xf3,0x96,0x2d,0x91,0x17,0xce,0xb9,0x1d,0xf0,0x8a,0x88,0xba,0xf8,0xfb,0xfd,0x5c,
- 0xa1,0x48,0xd1,0x56,0xa2,0xba,0x7a,0xb1,0xfd,0xa2,0x45,0x4a,0x6a,0xb6,0x98,0x3c,
- 0x25,0xf1,0x4a,0xf2,0xee,0xbd,0x07,0x8e,0x9e,0x38,0x95,0x7e,0x33,0xb3,0xb2,0x8a,
- 0xdf,0xd6,0xd6,0xa9,0xa0,0xad,0x3c,0x0f,0x1d,0x56,0xac,0x10,0xde,0xc4,0xf3,0x17,
- 0x63,0x7d,0xfc,0x7d,0xbd,0xfd,0x82,0x13,0x92,0xae,0x16,0x97,0x3e,0x6d,0x6e,0x79,
- 0x8d,0xbb,0x1f,0x1a,0xbf,0xb5,0xbd,0x03,0x9e,0xb6,0x3a,0x71,0x3d,0x5f,0x20,0x82,
- 0x67,0x12,0xba,0x18,0x3a,0x1a,0x1a,0x16,0xfa,0xa2,0x86,0x07,0x9d,0x5e,0x4b,0xba,
- 0x9b,0xfc,0xe2,0xde,0x47,0xf3,0xc4,0x0b,0x31,0xb1,0xaa,0xa3,0x46,0xcb,0x7d,0x1d,
- 0x74,0xf4,0x92,0x92,0xaf,0xee,0xd9,0xbb,0xcf,0x3f,0xe8,0x68,0xf2,0xb5,0xf4,0xd2,
- 0xb2,0x67,0x8a,0xf9,0xef,0xd5,0x94,0xd4,0xd7,0x36,0x97,0xcd,0x6c,0xdb,0xc2,0xa2,
- 0xe2,0xd4,0xf4,0xcc,0xe2,0xd2,0xb2,0x86,0x46,0x45,0x33,0x67,0x98,0x2c,0xc0,0x03,
- 0x1c,0x7c,0x34,0x64,0xc4,0xdb,0x7d,0xbf,0xa0,0xbc,0x8c,0x36,0x9c,0xc7,0xda,0x5c,
- 0x88,0x36,0x17,0xd1,0xbe,0x5d,0xe2,0xb7,0xc5,0xbb,0xa1,0x00,0xda,0x10,0x6c,0x51,
- 0x6c,0xb4,0x8e,0x46,0x1c,0x0a,0xb6,0xb8,0x62,0xe9,0xb2,0xb0,0x88,0x30,0x68,0x82,
- 0x68,0xb4,0x2a,0x16,0xd9,0x78,0x4c,0xbb,0x4a,0x65,0xb8,0xb0,0x74,0x71,0x58,0x84,
- 0x49,0x2b,0x8f,0xf6,0xb4,0x82,0x90,0xe5,0x68,0x0c,0xd6,0x02,0x44,0x87,0xb9,0xb5,
- 0x64,0xa5,0x9a,0xd2,0x2c,0xf5,0xf0,0xa2,0x6f,0xa6,0x08,0x4a,0x72,0x04,0xb2,0xe5,
- 0xca,0xd8,0x4c,0x79,0xa5,0x89,0x85,0x64,0x0b,0x16,0xbd,0x3b,0x0b,0x8a,0x00,0xcd,
- 0x34,0x3a,0xcb,0xa6,0x91,0x7a,0x87,0x31,0x52,0xbb,0x56,0x4b,0x9b,0x85,0x22,0xc8,
- 0xa6,0x1c,0x1e,0xde,0x01,0xce,0x27,0x2e,0x60,0xd2,0x74,0xa6,0x5c,0xaa,0xdd,0x88,
- 0x33,0x1d,0x7f,0xcd,0x24,0x24,0xbb,0xb3,0xd8,0x14,0x0a,0xa3,0x73,0x3c,0xd0,0xf1,
- 0x59,0x9b,0x4b,0x90,0x3b,0x98,0x82,0xe0,0x4c,0xe6,0x9a,0x64,0xa3,0x55,0xb1,0x64,
- 0x21,0x5a,0x7f,0xb1,0x8f,0x8e,0xfd,0x01,0xed,0xb9,0xbf,0x6a,0xd9,0x6e,0x9d,0xbb,
- 0xfa,0x50,0x53,0xeb,0x5f,0x89,0x02,0xf3,0x04,0xfc,0x55,0xdf,0xac,0xb6,0xb0,0xb0,
- 0x98,0x31,0xd3,0x6a,0xf6,0x9c,0xb9,0x76,0x0b,0x16,0xda,0x2f,0x5e,0xba,0xf8,0x93,
- 0x65,0xf6,0x8b,0x97,0x7c,0xbc,0x70,0xf1,0x9c,0xb9,0x1f,0xc3,0xb0,0x6f,0x6e,0x6e,
- 0x6e,0x60,0x64,0xa2,0xa3,0xa7,0x2b,0xfb,0x15,0x12,0x40,0x30,0x39,0x0b,0x9a,0x96,
- 0x37,0x7b,0x92,0xd5,0x54,0xd5,0xce,0x46,0x44,0x1e,0xf6,0xf5,0xf7,0xf4,0xf6,0xbd,
- 0x9c,0x78,0x1d,0xf0,0xa8,0xb9,0xb9,0x95,0x2c,0x33,0xf6,0x6b,0xf0,0xcd,0x8c,0x8c,
- 0xb1,0x63,0x94,0xfa,0xe2,0x03,0x4c,0xfa,0xcf,0x4f,0x3f,0x47,0x44,0x47,0xef,0xdb,
- 0x77,0x30,0xf2,0x5c,0x4c,0x76,0xce,0x23,0x18,0x4b,0xd1,0x16,0x0e,0x39,0x4d,0x01,
- 0x53,0xfd,0x05,0x0b,0x95,0x1a,0x4b,0x75,0x75,0xf4,0xe2,0xe2,0x2f,0xd5,0x01,0xb6,
- 0x35,0x34,0xc0,0xd8,0xac,0x80,0xf1,0xc1,0x00,0x0b,0x08,0x5d,0x51,0x55,0x93,0x5f,
- 0x50,0x9c,0x96,0x79,0xe7,0xd2,0xe5,0xe4,0xf3,0x31,0x97,0x4e,0x87,0x47,0x11,0x89,
- 0x88,0x8a,0x89,0xbb,0x94,0x90,0x7a,0x23,0x33,0xfb,0x7e,0x6e,0x71,0xe9,0x33,0x20,
- 0xe0,0x2d,0xad,0x2d,0x80,0xe6,0xfd,0x56,0xff,0x49,0x51,0x91,0xbd,0x12,0xe6,0xfd,
- 0xfc,0xcb,0xa6,0x98,0xb8,0xb8,0x7d,0xee,0x87,0x22,0xce,0x5d,0xb8,0x9f,0xf3,0x08,
- 0x8c,0x54,0x3c,0x20,0x03,0xbb,0x69,0x6c,0x6c,0xa9,0xac,0xe6,0xe7,0xe6,0x3f,0xc9,
- 0xba,0x93,0x9d,0x91,0x79,0x2b,0x3d,0xe3,0x4e,0xea,0xcd,0x5b,0x69,0xe9,0x59,0xff,
- 0xcf,0xdc,0x75,0x87,0x45,0x71,0x6e,0xfd,0x3f,0xbe,0x2f,0xc6,0x98,0x28,0x12,0xa3,
- 0xb1,0x80,0x1a,0xa5,0x69,0xe2,0x0d,0x26,0x96,0xe4,0xea,0x35,0xd6,0x60,0x01,0xb1,
- 0xd7,0xa8,0xd8,0xaf,0x0a,0xb8,0x34,0x69,0xd2,0x61,0xe9,0x4b,0x97,0xde,0x7b,0xef,
- 0xbd,0x2e,0x6d,0x01,0xe9,0x45,0xa4,0x08,0x48,0xef,0x4d,0x51,0x24,0xb9,0xdf,0xf3,
- 0x9d,0x77,0x66,0x76,0x76,0x21,0xcc,0x40,0x92,0x6b,0x12,0x9e,0xf3,0xf0,0xcc,0xcc,
- 0xee,0xbe,0xf3,0x4e,0x7b,0x7f,0xe7,0x77,0xde,0xdf,0x39,0x93,0x93,0x5b,0x90,0xcd,
- 0xce,0x63,0xe7,0x72,0xb2,0xd8,0xf9,0x59,0xd9,0x85,0x45,0xc5,0xa5,0x65,0x15,0x95,
- 0x4b,0x05,0x78,0x83,0xf0,0xb2,0xe5,0xcb,0xf2,0x0b,0x39,0x4c,0x33,0x4b,0x96,0x8d,
- 0x53,0x4c,0x5c,0x52,0x55,0x75,0x3d,0x8c,0xea,0x73,0x4a,0x70,0xdf,0x4e,0x4e,0x8e,
- 0x8c,0x8e,0xc1,0x39,0xa9,0xac,0xae,0x2f,0x2c,0x2e,0xcd,0x84,0xbd,0xe4,0x14,0x66,
- 0x64,0xe5,0x65,0x66,0xe7,0xc1,0xff,0x2c,0x76,0x5e,0x16,0xac,0x66,0xe7,0xa5,0xc3,
- 0x96,0x9c,0x82,0xf4,0x6c,0xd8,0x8e,0xfe,0x03,0xab,0x02,0x83,0x2f,0xe4,0x73,0x4a,
- 0x4b,0xcb,0xcb,0xf9,0xdd,0x80,0xff,0xae,0xc9,0xc9,0xdd,0x8c,0x88,0x8a,0x36,0x64,
- 0x9a,0x05,0x06,0x87,0x15,0x95,0x94,0x0f,0x0e,0x0d,0xc1,0x29,0xa2,0x3a,0x96,0xd1,
- 0xf1,0x31,0xd9,0x13,0x27,0xe7,0xd9,0xb2,0xb8,0xa8,0x78,0x4c,0x6c,0xbc,0x91,0x31,
- 0xd3,0xc5,0xd5,0x2b,0x35,0x23,0xef,0x65,0x47,0xd7,0x38,0xad,0x54,0xde,0xc5,0xd5,
- 0x8d,0xbe,0x41,0xf0,0x81,0x83,0x42,0x42,0x1c,0x9e,0x38,0xd9,0xd8,0xbb,0xc7,0xc6,
- 0x27,0x3f,0x6b,0x6c,0x1d,0x1e,0xa5,0xe5,0xbf,0xff,0x41,0xbe,0x16,0x1c,0x51,0x53,
- 0x6b,0x4b,0x59,0x45,0x75,0x5e,0xe1,0xd3,0x2c,0x76,0x01,0x5c,0x65,0x38,0xcf,0x99,
- 0xec,0x82,0x2c,0x36,0x27,0x83,0x8d,0xce,0x79,0x4e,0x1e,0xda,0x92,0x93,0x9b,0x9f,
- 0x91,0x93,0xcf,0xce,0x2d,0xca,0x61,0x73,0x38,0x4f,0xcb,0x12,0x93,0x52,0x57,0x7c,
- 0xb6,0x82,0xaa,0x27,0xab,0x56,0xae,0x8a,0x8d,0x8f,0x37,0x31,0xb5,0xb4,0x77,0x74,
- 0x4e,0x4c,0xc9,0x68,0x68,0x7e,0x09,0x80,0x48,0x73,0x68,0x05,0x1c,0x0e,0xfd,0xa1,
- 0x81,0x7f,0xc5,0x64,0x9a,0x56,0x54,0xd5,0x72,0x8a,0xcb,0x3a,0xba,0xba,0x81,0xe1,
- 0xd2,0xcc,0x6b,0x8c,0x8d,0x4f,0xf4,0xf5,0xf7,0x4b,0x4b,0xcb,0xfc,0x69,0x45,0x81,
- 0x3e,0xfc,0x48,0x50,0xf8,0x84,0x2b,0x02,0x29,0x7e,0xd9,0x15,0x2c,0x70,0x21,0x06,
- 0x57,0x55,0x11,0xb2,0x28,0x9c,0x54,0x6a,0x74,0x13,0xa0,0x89,0x01,0x10,0x57,0x52,
- 0x05,0x24,0xb1,0x17,0xcf,0xdc,0x41,0xc9,0x44,0x00,0x8e,0xfc,0x2a,0x2c,0x20,0xce,
- 0x28,0x8a,0xdb,0x45,0x22,0x1d,0x4e,0x42,0x49,0x70,0xe4,0x05,0x84,0xf9,0x65,0xd5,
- 0x24,0x5d,0xd5,0xee,0x42,0xa8,0x87,0x08,0x69,0x1f,0x29,0x69,0xe6,0xcf,0x0f,0xc2,
- 0x02,0xce,0x98,0x5e,0x5a,0x13,0x65,0x48,0xa1,0x2f,0x13,0x60,0x3a,0x40,0xe8,0xac,
- 0xa6,0xeb,0xaf,0xa6,0xfd,0x16,0x03,0x7a,0x22,0x86,0x3c,0x5d,0xb5,0x45,0x3a,0x12,
- 0xe4,0x7e,0x71,0x65,0x17,0x37,0x56,0xc0,0x0d,0x65,0x63,0x47,0xba,0x09,0x57,0x80,
- 0xa3,0xcc,0xac,0x1e,0xec,0x5c,0x61,0xaa,0x30,0x24,0xcd,0xe2,0xe5,0x41,0x8b,0xa9,
- 0xbe,0xc4,0x4b,0x59,0x62,0x10,0x5c,0x89,0x02,0xd1,0x37,0xb1,0x40,0xf4,0x45,0x24,
- 0xc7,0xc2,0xde,0x9a,0x64,0x2b,0x74,0x80,0x29,0xb4,0x47,0x67,0xcd,0x2e,0x65,0xaf,
- 0x88,0x82,0xff,0x96,0xe2,0xe5,0x4f,0x30,0x4e,0x51,0xd1,0xae,0x5d,0xbb,0xbe,0xf9,
- 0xe6,0xdb,0xef,0x77,0xed,0xde,0x77,0xe0,0xc7,0x23,0x47,0x8e,0x1d,0x93,0x39,0x21,
- 0x7d,0xfc,0xb4,0xf4,0xf1,0x53,0x52,0x47,0x64,0xf6,0xee,0x3f,0x04,0xa0,0xfc,0xf5,
- 0xd7,0x92,0xe2,0xe2,0x9b,0xd7,0xad,0x5f,0xbf,0x6a,0xf5,0x6a,0x54,0x88,0x12,0x7b,
- 0x1d,0x21,0xa2,0xc0,0x0b,0x16,0x82,0xfd,0xc1,0xd7,0x11,0x0a,0x2c,0x16,0x70,0xf7,
- 0xf4,0xb4,0x77,0x74,0xb2,0x62,0xd9,0xc5,0x25,0xa4,0xd6,0xd4,0x21,0x95,0x32,0x4d,
- 0x3d,0x93,0xa2,0xe2,0x92,0x79,0x66,0x09,0x41,0x97,0x6e,0xde,0xba,0x1d,0x19,0x1d,
- 0x63,0x60,0x68,0x1a,0x18,0x1c,0x59,0xf4,0xb4,0xb2,0xa7,0xaf,0x7f,0x92,0x26,0x8a,
- 0xf5,0x6e,0x52,0x46,0xe6,0xf8,0x9c,0xcd,0x0a,0x0a,0x0a,0x9a,0x5b,0x5a,0x76,0x02,
- 0x79,0x18,0x18,0xc0,0xc2,0x7d,0xb3,0xb7,0xf6,0x33,0x1a,0xeb,0x26,0xfb,0x06,0x86,
- 0x9a,0x5b,0xda,0x38,0x45,0x65,0x71,0x09,0x29,0x3e,0x7e,0xa1,0x76,0x8e,0x6e,0x96,
- 0xd6,0x76,0x4c,0x33,0x6b,0x23,0x63,0x73,0xa6,0xa9,0xa5,0xa9,0x39,0x8b,0x65,0xeb,
- 0xe4,0xe2,0xe1,0x13,0x11,0x15,0x97,0x95,0x93,0x57,0x53,0xf7,0xbc,0xbd,0x13,0x25,
- 0xbc,0xcc,0xea,0xea,0xc3,0x4d,0x05,0x43,0xe2,0x26,0x89,0xcd,0xf4,0xa7,0xfa,0x9a,
- 0x9c,0x5c,0x74,0x5c,0x82,0x89,0xa9,0x45,0x40,0x70,0x68,0x31,0x1c,0x72,0x6f,0xdf,
- 0xe4,0x14,0x25,0x20,0x42,0x27,0x27,0x26,0xde,0xc2,0xb1,0x00,0x13,0x4f,0x4a,0xc9,
- 0x00,0x7f,0xc0,0xcb,0x27,0xc8,0xc3,0x3b,0xc0,0xcd,0xcb,0xd7,0xc3,0xdb,0xdf,0xdd,
- 0xdb,0xcf,0xcd,0xcb,0x07,0x96,0xc1,0xdc,0xbd,0xfc,0x03,0x02,0xc3,0x4a,0x4a,0x2b,
- 0x96,0xf1,0x39,0x3f,0x02,0x02,0x02,0xb9,0xf9,0x05,0x86,0xc6,0xa6,0x26,0xa6,0x56,
- 0x7e,0x01,0xc1,0xb9,0x79,0x05,0xad,0x2f,0x3b,0x46,0x81,0x82,0xfd,0x8c,0x11,0x79,
- 0x0a,0x0f,0x0a,0xf0,0x17,0x3c,0x8d,0xfa,0x86,0x96,0xac,0x9c,0xfc,0xa8,0x98,0x38,
- 0x1f,0xff,0x10,0x0f,0x2f,0x7f,0x57,0x0f,0x6f,0x17,0x77,0x6f,0x20,0x86,0xae,0xee,
- 0xde,0x2e,0x6e,0x5e,0xae,0xee,0x5e,0x00,0x52,0xae,0x6e,0xde,0xf8,0x7f,0xec,0x53,
- 0x2f,0xf4,0xa9,0x9b,0x57,0x50,0x68,0x38,0xb8,0x02,0x70,0x07,0xbe,0xa7,0xa1,0xf5,
- 0xd2,0xa5,0x4b,0xd1,0xb1,0x71,0x7a,0xc6,0x66,0xbe,0x01,0xa1,0x9c,0xe2,0xd2,0xce,
- 0xde,0xa1,0xb7,0x6f,0x29,0xef,0x99,0x57,0x13,0x13,0x17,0xe7,0x3d,0xe7,0xb8,0x6e,
- 0xdd,0x7a,0x40,0x76,0x63,0x13,0x33,0x67,0x57,0xcf,0xd4,0xf4,0xec,0x96,0xb6,0x4e,
- 0x70,0xf9,0x68,0xa6,0xdd,0x7d,0x7d,0x03,0xe9,0xaf,0x35,0x3c,0x7d,0x6e,0x1e,0x9e,
- 0xce,0xae,0x6e,0x2c,0xd6,0x93,0xe8,0xd8,0xa4,0xfa,0x86,0xc6,0x91,0x51,0xba,0xd8,
- 0xd1,0xd4,0xcf,0xe0,0x10,0xbe,0x79,0xd1,0xda,0x5e,0x58,0x54,0x1a,0x1d,0x9b,0x0c,
- 0x1e,0xa0,0x97,0x4f,0xa0,0xbb,0xb7,0x2f,0x6e,0xd8,0xb5,0x46,0x97,0x1b,0x5b,0xe6,
- 0x37,0x9f,0xc0,0x90,0x88,0xe4,0x94,0xd4,0x95,0x9f,0xaf,0xa2,0xea,0x09,0x40,0x73,
- 0x68,0x78,0x84,0x99,0xb9,0xa5,0x8d,0xbd,0x23,0xdc,0x48,0xf5,0x8d,0xad,0xe0,0x62,
- 0xd1,0x4c,0xca,0x94,0x56,0x54,0xd0,0xd7,0x7c,0x83,0x73,0x95,0x99,0x95,0x0d,0xee,
- 0x1f,0xb8,0x85,0xe0,0x43,0xbe,0x9d,0xa4,0xf4,0x21,0xe1,0xf6,0x86,0x7d,0x15,0x3f,
- 0x7d,0xba,0x72,0xe5,0xca,0xf7,0x74,0x4b,0xcc,0x62,0xff,0xf3,0xc1,0xa7,0x9b,0xa5,
- 0x51,0x99,0x0b,0x9c,0x3c,0xa2,0xf8,0x2d,0x01,0x58,0x28,0xc4,0x8a,0x89,0x7b,0x31,
- 0x38,0x06,0x68,0xc3,0xd3,0x63,0x51,0x30,0x96,0x2f,0xce,0x8c,0x54,0x5b,0x38,0x10,
- 0xa3,0x38,0xb0,0x46,0x0f,0x01,0x46,0x58,0xb0,0xf7,0x2b,0x8d,0x76,0xf2,0xb7,0x5c,
- 0x3a,0xd9,0xc9,0x1f,0xb5,0x26,0xdb,0x97,0x20,0x76,0x4a,0xce,0x38,0x13,0x79,0x4f,
- 0xb8,0xd4,0x0a,0xe3,0xd1,0xfd,0x5c,0xfd,0x15,0xa6,0xbb,0xd6,0x24,0x34,0x63,0xb0,
- 0xca,0x8d,0x7b,0x93,0x41,0xe6,0x01,0x9c,0x0e,0x73,0x15,0x56,0x44,0x9e,0x32,0xae,
- 0x98,0xc2,0x40,0x93,0xc8,0xff,0xe5,0x6b,0xbc,0x0f,0xeb,0x39,0x26,0x72,0x46,0x84,
- 0x97,0xe8,0x09,0x9e,0x44,0x4c,0x92,0x6e,0x6e,0x9b,0xfd,0xbc,0x43,0xc0,0x52,0x86,
- 0xc9,0xdf,0x12,0x31,0x73,0xd4,0x0d,0x8c,0xb3,0xe3,0x67,0x06,0x7c,0x0c,0x7e,0x69,
- 0xb4,0xca,0x4b,0x94,0x97,0x04,0x2c,0x58,0xfe,0x99,0xf8,0xfd,0x72,0xf4,0xfa,0x86,
- 0xeb,0x39,0x22,0x3f,0x25,0x89,0x5c,0x08,0x17,0x39,0xe9,0xbd,0x51,0xda,0x79,0xed,
- 0x61,0x0b,0xa1,0x7d,0x86,0x42,0xbb,0x35,0x6f,0x69,0xf9,0x8c,0x8e,0xff,0xfe,0x0c,
- 0xd0,0x3f,0xd9,0xec,0xec,0xed,0x25,0x25,0x25,0x81,0xfc,0xee,0xdd,0x7f,0x40,0xea,
- 0xf0,0x51,0xe9,0x13,0x67,0x4e,0x9e,0xbd,0x70,0xe6,0xdc,0x85,0x53,0x67,0x2f,0xc8,
- 0xc8,0x9e,0xfa,0x51,0xea,0xf0,0xee,0x3d,0x3f,0x00,0x3a,0x03,0x05,0xde,0xb0,0x71,
- 0x03,0x56,0x0b,0x7a,0xc5,0xb2,0x65,0xcb,0xf0,0x44,0xe0,0x45,0x1f,0x2d,0xc2,0x69,
- 0xc8,0x1f,0x51,0x61,0x7d,0xf2,0xf1,0x62,0x07,0x27,0xc7,0x27,0xae,0xee,0xa6,0x56,
- 0xac,0xe8,0xd8,0xc4,0xea,0x9a,0xe7,0x08,0x7f,0xa9,0x63,0x98,0x55,0x35,0xd5,0xc2,
- 0x42,0xf3,0xca,0x12,0x82,0xb1,0xeb,0xfc,0xc5,0x0b,0x31,0x71,0x71,0x06,0xc6,0x66,
- 0x7e,0x81,0xa1,0x45,0x25,0x65,0xdd,0xbd,0x83,0x93,0xef,0x28,0x1f,0x64,0x40,0xbd,
- 0xb3,0xe7,0xce,0xcf,0xd9,0xec,0xdd,0xfb,0x0f,0x5e,0xb4,0xb6,0xb5,0xbd,0xec,0x84,
- 0xa7,0x9e,0x4a,0xda,0x04,0x03,0x0f,0xa0,0xcc,0xe0,0xd0,0x48,0x7d,0x43,0x73,0x36,
- 0xbb,0x30,0x38,0x2c,0xc2,0xc6,0xd1,0x0d,0x30,0x51,0x43,0x5b,0x47,0x49,0x4d,0x83,
- 0xa1,0xac,0xca,0x50,0x52,0x61,0x28,0x3f,0x52,0x56,0xd3,0x50,0xd7,0xd4,0xd1,0xd5,
- 0x37,0xb1,0x64,0x39,0xba,0x79,0xfa,0x26,0x26,0xa5,0x15,0x3d,0xad,0x6a,0xef,0x84,
- 0x61,0xf9,0x15,0x90,0xd6,0x5f,0x8f,0xcc,0x80,0x6b,0x01,0x81,0x41,0xcb,0xa9,0x69,
- 0x08,0xd8,0xb9,0x73,0xe7,0xe3,0x12,0x13,0x0d,0x4d,0x2c,0x7c,0xfc,0x82,0x39,0xc5,
- 0xe5,0xbd,0x7d,0x40,0xf9,0xa9,0x83,0x9c,0xff,0x41,0x0c,0xbd,0xa9,0xa5,0x8d,0x9d,
- 0xc7,0xf1,0xf1,0x0b,0xb1,0x66,0xd9,0x1b,0x1a,0x33,0x75,0xf4,0x8c,0x90,0xe9,0x1b,
- 0x3d,0xd6,0x35,0x84,0xff,0xb0,0xac,0x6b,0x60,0x0c,0x0b,0xa6,0x16,0xd6,0xc0,0x80,
- 0xd7,0xac,0x5e,0xc3,0x77,0xed,0x3e,0xc9,0xc8,0xca,0xd1,0x33,0x62,0x6a,0x6a,0xeb,
- 0xda,0xda,0x3b,0x85,0x47,0xc6,0x3e,0x2d,0xab,0x6e,0xef,0xe8,0x7e,0x3d,0x41,0xa3,
- 0xa0,0x03,0xc4,0x9f,0x04,0xd7,0xa5,0xee,0x79,0x63,0x4a,0x6a,0x96,0x8f,0x5f,0x90,
- 0x95,0x8d,0xa3,0x31,0xd3,0x4c,0x47,0xdf,0x10,0x76,0x87,0x4c,0x47,0x9f,0x58,0xe0,
- 0xae,0x6a,0xe3,0x5b,0x74,0x0c,0x74,0xf4,0xd0,0x16,0x33,0x0b,0x56,0x5e,0x21,0x67,
- 0xd9,0x67,0xbf,0x2d,0x33,0x6b,0xfe,0x76,0xea,0xf4,0xa9,0x84,0xa4,0x24,0x03,0x23,
- 0xa6,0xaf,0x7f,0x70,0x7e,0x61,0x71,0x6f,0x5f,0x3f,0x4d,0x5a,0x19,0xf8,0x6c,0x77,
- 0xee,0xde,0x9f,0x67,0xcb,0xab,0x56,0xad,0x09,0x8f,0x8c,0x62,0x9a,0x9a,0xb9,0xb8,
- 0x7a,0xa4,0xa4,0x67,0xc3,0x5d,0x44,0xcf,0x7f,0x63,0xe3,0x63,0xf9,0x67,0xdb,0x67,
- 0x35,0x1b,0x3b,0x7b,0x0f,0x6f,0x1f,0x4b,0x96,0x7d,0x64,0x74,0xc2,0xb3,0x67,0x80,
- 0xbf,0x74,0xd9,0x52,0xef,0xde,0x4d,0xc1,0x3d,0x59,0xfb,0xac,0x21,0x21,0x29,0x1d,
- 0x9c,0x1c,0xa6,0xb9,0x95,0x1e,0x5c,0x59,0xee,0xe5,0xc6,0x0d,0xce,0xb0,0x2e,0x76,
- 0x9e,0xf9,0xb7,0x33,0xcd,0x2d,0x53,0xd2,0xd2,0xd6,0xaf,0xa3,0x9c,0x5d,0x15,0x14,
- 0x10,0x0c,0x08,0x0a,0xb2,0xb0,0xb6,0xb5,0xb2,0x73,0x48,0x48,0x4a,0x79,0x86,0x92,
- 0xc1,0xe9,0xf8,0x6f,0x43,0x63,0x33,0xdc,0x3c,0x34,0xc7,0x75,0xfa,0xcc,0xe9,0xea,
- 0xba,0xba,0xcc,0xec,0xdc,0x17,0x2d,0x2f,0xc7,0xc6,0x29,0x53,0x99,0xc0,0x5e,0x4f,
- 0x4c,0xc0,0x69,0x34,0x61,0x9a,0xbe,0xa7,0xfb,0x81,0xca,0x3e,0x5c,0x24,0x20,0x76,
- 0xbf,0x14,0xc1,0x87,0x7a,0x37,0x46,0xe2,0x78,0xc4,0x73,0xc6,0x2a,0x4f,0x13,0x85,
- 0x2d,0xcc,0x90,0x54,0x71,0x67,0x69,0x31,0xb5,0x12,0x57,0x8f,0x34,0xf3,0xb7,0x38,
- 0x68,0x6a,0x63,0xb3,0xba,0xe4,0x74,0x30,0x26,0xd9,0xc2,0xf5,0xc6,0xd0,0x26,0x86,
- 0xb0,0x44,0x3e,0x11,0x2e,0xca,0xe2,0xed,0x08,0x6b,0x04,0x7e,0xb2,0x59,0x8b,0x97,
- 0x08,0xcc,0xe5,0xa1,0xfd,0xd3,0xf8,0x3b,0x85,0x2a,0x8c,0xb7,0x91,0xaf,0x1b,0xf8,
- 0x8e,0x50,0x40,0x5b,0x0b,0xa7,0xd2,0x7c,0x82,0x2b,0x24,0xb5,0xea,0xe2,0xe2,0xfe,
- 0xb4,0x5e,0x91,0x34,0x79,0x66,0x27,0x7f,0xad,0x37,0xe3,0xe6,0x28,0x11,0x05,0xb5,
- 0x80,0x05,0xab,0xb4,0xa1,0xda,0xd1,0x8a,0x75,0x62,0xf7,0x9e,0x22,0x16,0x7c,0x3d,
- 0x47,0xf4,0xa7,0x04,0xd1,0x73,0x21,0x22,0xb2,0xde,0x48,0x8b,0x75,0xd0,0x4c,0x78,
- 0x9f,0xce,0xce,0x33,0x16,0xd5,0x0d,0x9d,0x7f,0x2d,0xaa,0xce,0xd3,0xc6,0xc6,0xc7,
- 0x2e,0x5d,0xfe,0xe9,0xdb,0x6f,0xb7,0x01,0xc9,0x3d,0x24,0x75,0x44,0xf6,0xc4,0xa9,
- 0xb3,0xe7,0x2f,0x5f,0xbc,0x7c,0xfd,0xf2,0x95,0xab,0xe7,0x2f,0x5e,0x3d,0x7d,0xf6,
- 0xc2,0xd1,0x63,0xb2,0x7b,0xf7,0x1d,0xdc,0xb1,0xf3,0xbb,0x2d,0x5b,0xb6,0x88,0x88,
- 0x88,0xae,0x11,0x12,0x5e,0xbe,0xe2,0xf3,0x4f,0x3f,0xfd,0x74,0xe9,0xd2,0xa5,0x00,
- 0xc1,0x78,0x21,0x2c,0xdc,0xd0,0x4b,0x81,0xff,0xf7,0x83,0xdf,0x11,0x85,0x5e,0xb4,
- 0x70,0x91,0xb9,0x95,0x85,0x9b,0xbb,0x17,0x8c,0xab,0x51,0x31,0x89,0x55,0x35,0xcf,
- 0x87,0x47,0xb0,0x59,0x5a,0x8a,0x01,0xfc,0x79,0x53,0xd3,0xfa,0x79,0xab,0x2c,0xa4,
- 0x8f,0xc9,0xc4,0x27,0xc2,0x58,0x6a,0xea,0x1d,0x10,0x58,0x50,0x58,0xda,0xdd,0xdb,
- 0x4f,0xa3,0x7f,0x9e,0x9a,0xfa,0x45,0x4e,0xee,0x06,0x4d,0x6b,0x00,0xe8,0x5b,0xb6,
- 0x7c,0x5d,0xf3,0xac,0xbe,0xa1,0xe9,0x45,0x77,0x6f,0xdf,0xc4,0x1b,0x4a,0x85,0xc9,
- 0xe4,0xe4,0xbb,0x81,0xa1,0xd1,0xc6,0xe6,0xd6,0x8c,0xac,0x3c,0xff,0xc0,0x10,0x96,
- 0x9d,0x93,0xb9,0x95,0x8d,0xa5,0x35,0xb0,0x5d,0x7b,0x73,0x6b,0x1b,0x63,0x53,0x33,
- 0xed,0xc7,0x3a,0x00,0xc1,0xf2,0xf2,0x0c,0x05,0x05,0x65,0xc5,0x87,0x6a,0x6a,0x8f,
- 0x1e,0x03,0xbe,0x39,0xbb,0x78,0x44,0xc5,0x24,0x71,0x4a,0x2a,0x51,0x64,0xf2,0xf5,
- 0xeb,0x59,0x83,0x00,0x00,0x6d,0x8a,0x8a,0x0c,0x1a,0x25,0xaa,0xb4,0xb4,0x4c,0x72,
- 0x6a,0x1a,0x1c,0xb2,0x8f,0x6f,0x10,0xd0,0x9c,0xae,0x9e,0x01,0x1a,0x97,0x03,0x20,
- 0x1e,0x06,0xb7,0x86,0xa6,0x96,0xe4,0xd4,0x4c,0xd8,0xbb,0x8e,0xae,0x91,0x8a,0xaa,
- 0x86,0xbc,0x22,0x43,0xe1,0xa1,0x0a,0x32,0x45,0x15,0xee,0x02,0x6c,0x51,0x55,0xd7,
- 0xd0,0xc9,0x2b,0xe0,0x6c,0xf8,0x62,0x23,0xb9,0x2f,0xa0,0x30,0x89,0x29,0xc9,0xfa,
- 0x86,0x86,0x0c,0xa5,0x47,0x3a,0x7a,0x26,0xf6,0x4e,0x1e,0xf1,0x49,0x29,0x4f,0xcb,
- 0xab,0xdb,0xbb,0xfb,0x68,0x84,0x40,0xef,0xa6,0x7e,0x19,0x19,0x1d,0x6f,0x69,0x6b,
- 0x07,0xd0,0x0f,0x0e,0x8d,0x66,0xd9,0x38,0x3e,0xd6,0xd5,0x57,0x7a,0xa4,0xae,0xc0,
- 0x50,0x55,0x50,0x54,0x85,0x1d,0xc9,0x2b,0x30,0xd0,0xae,0x71,0x7b,0x88,0xb6,0xa0,
- 0x05,0x06,0xde,0x13,0x65,0x2d,0x6d,0xbd,0xfc,0x42,0x8e,0xb0,0xb0,0xf0,0x7b,0x1a,
- 0x57,0xa5,0xa4,0xa4,0x10,0xfe,0x1a,0x9a,0x7a,0x7a,0x07,0xe6,0xe6,0x17,0x77,0xf5,
- 0xf4,0x00,0xc8,0x52,0xb1,0x54,0x70,0x93,0x14,0x14,0x18,0xf3,0x6c,0x19,0x1c,0xa7,
- 0x90,0xf0,0x30,0x33,0x4b,0x6b,0x3b,0x27,0x57,0x20,0x89,0x2d,0x6d,0x08,0x7f,0x69,
- 0xf8,0x6f,0x6a,0x7a,0xfa,0x9c,0x61,0x76,0x4b,0x6b,0x6b,0x6f,0x7f,0x3f,0x4b,0x6b,
- 0x5b,0x70,0x7e,0x6a,0xea,0xea,0x07,0x87,0x87,0x69,0x6a,0x7a,0x80,0x87,0x39,0x34,
- 0x3c,0x52,0x5e,0x55,0x1b,0x11,0x9d,0x08,0xbe,0x16,0x78,0x83,0x0f,0x95,0xd4,0xb8,
- 0xe7,0x19,0x99,0x22,0x7e,0xaa,0xf9,0x0d,0xdb,0xae,0xa6,0xae,0x0d,0xcf,0x91,0xa8,
- 0x08,0x65,0xa5,0x91,0x25,0x8b,0x97,0x78,0x79,0x7b,0xb3,0x6c,0x1d,0x2d,0x6d,0x1c,
- 0x62,0x62,0x93,0x9f,0x3d,0x47,0xf8,0x4b,0xc3,0x7f,0xc1,0xc9,0x84,0x61,0x84,0xe6,
- 0x41,0xf3,0xf2,0xf2,0x29,0x2a,0x29,0xe5,0x14,0x97,0x75,0xf7,0xf4,0xd2,0x3d,0x68,
- 0xef,0xa6,0x80,0xf2,0xb7,0x77,0x76,0xec,0xdf,0x7f,0xe0,0x3d,0xdd,0x0f,0x34,0x26,
- 0x24,0x65,0x46,0x50,0x60,0x0c,0x71,0xbe,0xd2,0xea,0xc0,0x15,0x47,0xdc,0x40,0x31,
- 0x91,0x89,0xc3,0x9f,0x7f,0x84,0xf2,0x95,0x34,0x89,0x02,0x53,0x78,0x69,0xa9,0x4d,
- 0x5c,0x52,0x4c,0x84,0x67,0xb9,0xba,0x29,0xfe,0xa2,0x52,0xb8,0x86,0x0a,0x87,0x39,
- 0x7e,0x08,0x43,0xfc,0x54,0x83,0xa8,0xb0,0x81,0x7f,0x4a,0x56,0xde,0x40,0x1f,0x61,
- 0xf2,0x2a,0xee,0x84,0x2f,0x11,0x19,0xc6,0x65,0x57,0x5f,0x62,0x7a,0x30,0x42,0x5b,
- 0x85,0x61,0x25,0x29,0x03,0xc3,0x25,0x55,0xa4,0x86,0x8a,0xd7,0x25,0x74,0x20,0x1d,
- 0xc4,0x16,0xac,0xa2,0x17,0xbe,0x1d,0x7d,0x0d,0x0b,0x02,0x10,0x95,0xb5,0xb8,0x94,
- 0x16,0xdf,0x3b,0x4e,0x9f,0x79,0xac,0x9c,0x5b,0xfe,0x8b,0xa4,0xc3,0x78,0x92,0x32,
- 0x57,0x24,0x36,0x28,0x81,0x57,0x05,0xd1,0xc4,0xb3,0x93,0xa0,0xfd,0x3e,0x4c,0x1a,
- 0xdd,0x47,0x54,0xc5,0x54,0x69,0x15,0xc3,0x21,0x58,0xbe,0x56,0xfc,0x5e,0x09,0xaa,
- 0x14,0x2d,0x97,0x29,0x72,0x39,0x4e,0xe4,0x6c,0xd0,0x46,0x59,0xb7,0xb5,0x87,0x59,
- 0x42,0x07,0x4d,0xd7,0x1f,0x7a,0xec,0x1b,0x9d,0xff,0x97,0x63,0xeb,0x7c,0xac,0xb2,
- 0xa6,0x66,0xef,0xbe,0xfd,0x00,0xaf,0x7b,0xf7,0x1f,0x94,0x3e,0x2e,0x0b,0xb4,0xf7,
- 0xc2,0xd5,0x1b,0x97,0xaf,0xdf,0xbd,0x70,0xe3,0xee,0xb5,0xeb,0xb7,0xce,0x5f,0xbc,
- 0x22,0x23,0x7b,0xf2,0x90,0xd4,0xd1,0x9d,0xdf,0x7d,0x2f,0x29,0xb9,0x55,0x42,0x42,
- 0x42,0x48,0x58,0x98,0x98,0x02,0x86,0xbf,0xc5,0x4b,0x70,0xfe,0xfb,0x07,0xf3,0x7f,
- 0xa1,0x05,0x13,0x53,0xa6,0xa7,0x37,0x52,0x29,0x47,0x44,0xc6,0x55,0x54,0xd6,0x0d,
- 0x0c,0x8d,0x00,0xf4,0x50,0xc5,0x75,0x3b,0x3a,0x3b,0xc5,0xc5,0xc4,0xe7,0xd9,0xf8,
- 0x81,0x83,0x07,0x92,0x52,0x52,0x8d,0x4c,0xcc,0xbd,0x7c,0x02,0x80,0xcb,0x74,0xf5,
- 0xf4,0xd3,0xa7,0x25,0xca,0x2b,0x2a,0xd0,0xb4,0x26,0xb8,0x54,0xd0,0xc9,0xf9,0x49,
- 0x7d,0xc3,0x8b,0xe7,0x8d,0x2d,0x43,0x23,0x23,0x54,0xba,0x62,0x24,0xb8,0x1a,0x7f,
- 0xd5,0xde,0xd1,0xc9,0x29,0x2a,0x0b,0x0e,0x0d,0x0b,0x0c,0x0e,0xcf,0xce,0xcd,0x2f,
- 0x29,0x2d,0xcd,0xc8,0xcc,0x0c,0x0c,0x0e,0xf2,0x0f,0x0c,0x8c,0x4f,0x48,0x02,0x04,
- 0xc9,0x64,0x67,0x3b,0x38,0x3a,0x30,0x94,0x54,0xef,0xdd,0x93,0x07,0xc4,0x91,0x57,
- 0x06,0x9e,0x61,0x02,0x20,0x18,0x1b,0x9f,0x5a,0x5a,0x5e,0x0d,0x5d,0x7d,0xfd,0x66,
- 0xf6,0x3c,0xe8,0xaa,0xea,0xda,0xad,0x5b,0xbf,0xa5,0xea,0xe4,0x8f,0x52,0x87,0x53,
- 0xd2,0x32,0xf4,0x0c,0x8c,0xbc,0x7d,0x03,0xf3,0x0b,0x4b,0x3a,0xbb,0x7b,0xdf,0x4c,
- 0x50,0xcf,0xff,0x62,0x13,0x82,0x00,0xf7,0x45,0x25,0x65,0x11,0x91,0xb1,0xce,0x6e,
- 0xee,0x36,0xf6,0x8e,0xd6,0x2c,0x9b,0x59,0x0c,0x15,0xb3,0x74,0x2a,0x2d,0xaf,0x12,
- 0x9d,0x7e,0xf2,0x63,0xe2,0x63,0x8d,0x4c,0x98,0x0f,0xe4,0x15,0x95,0x55,0xd5,0xe1,
- 0x3c,0xbb,0xb8,0x79,0x26,0xa4,0x64,0x55,0x54,0xd7,0xf7,0x80,0x7f,0x42,0x21,0xee,
- 0x85,0xf3,0x0c,0x2e,0xc1,0xe8,0xd8,0xd8,0x8b,0xd6,0xd6,0x92,0xb2,0xf2,0xe4,0x94,
- 0xf4,0xc0,0xe0,0x10,0x77,0x6f,0x3f,0xac,0xf8,0xa1,0x9b,0x83,0x93,0x8b,0xa3,0x93,
- 0x2b,0x98,0x83,0xa3,0xb3,0xa3,0x93,0x8b,0x03,0x32,0xb4,0x8c,0x0a,0x36,0x3e,0x41,
- 0xab,0x1e,0x5e,0xde,0xd5,0xb5,0x35,0x5f,0x7c,0xb1,0xe1,0x3d,0x0d,0xaa,0xff,0xda,
- 0xf3,0x43,0x62,0x72,0xb2,0x91,0xb1,0xa9,0xa7,0x4f,0x00,0x3b,0xaf,0x18,0xae,0x23,
- 0x4d,0x96,0x2e,0x5c,0x20,0x2d,0xad,0xc7,0xf3,0x6c,0x19,0xee,0x9f,0x80,0xa0,0x60,
- 0x4b,0x96,0xad,0xad,0x83,0x4b,0x42,0x62,0x3a,0x78,0x71,0x63,0xe3,0x74,0xf8,0x9b,
- 0x93,0x97,0xb7,0x64,0x2e,0xa9,0xbf,0x9e,0xb1,0x91,0x7f,0x50,0xa8,0xb9,0x85,0x55,
- 0x68,0x78,0x4c,0x45,0x35,0x26,0x77,0x9f,0xfa,0x85,0x0a,0xf8,0xa0,0xb7,0xe0,0x17,
- 0xd5,0x37,0x34,0xe6,0xe4,0xe4,0x05,0x06,0x87,0x3a,0x3a,0xbb,0xb0,0x6c,0x1d,0x66,
- 0x5c,0xe5,0x19,0xd7,0x1d,0x2b,0x96,0xc9,0xb2,0x73,0xb0,0xcf,0xce,0x61,0x7f,0xf5,
- 0xe5,0x16,0xaa,0x6e,0x2c,0xfe,0x78,0xf1,0x13,0x67,0xb8,0x76,0xce,0x16,0x96,0x36,
- 0x51,0x31,0x09,0x40,0xb1,0x91,0x62,0x8a,0x1a,0x7f,0xbb,0x7b,0x7b,0x57,0x2c,0xa7,
- 0x0c,0xe3,0xc0,0x47,0x15,0x35,0xd5,0xd9,0xec,0xc2,0xea,0xda,0x06,0x24,0x20,0xa4,
- 0xf6,0x28,0x26,0x27,0xa7,0x60,0x47,0xe9,0x99,0x99,0xab,0x56,0xae,0x7e,0x4f,0xf7,
- 0x03,0x8d,0x2d,0xdb,0x24,0x2d,0xae,0xdc,0x4c,0xe2,0x2f,0x0f,0x19,0x49,0xe9,0xd1,
- 0x74,0x32,0x3b,0x7d,0xfa,0x75,0x96,0x1a,0x1d,0x98,0x44,0xaa,0x87,0xff,0x0b,0xe4,
- 0xa7,0xf8,0x6f,0xb9,0xd3,0xc1,0x03,0x3c,0x14,0xe3,0x56,0xa0,0xe2,0xb6,0xd6,0x4b,
- 0x4e,0x07,0xe3,0x22,0x28,0xfe,0xd9,0xe1,0x19,0xb3,0xb4,0xf8,0x97,0x31,0xc0,0x1d,
- 0xc0,0xe5,0x58,0x64,0x57,0x91,0x00,0x5b,0xa3,0x9b,0x8b,0xbf,0xdd,0xe4,0x4f,0x70,
- 0x74,0xc6,0x89,0x33,0x31,0xff,0x8b,0xc1,0x3d,0xde,0x1a,0xb7,0x7c,0xe5,0x8c,0xe3,
- 0x25,0x96,0xc9,0x39,0x6b,0xcc,0xb5,0xe8,0xe5,0x86,0xd6,0x09,0xa5,0x16,0x7f,0x55,
- 0x2e,0x82,0x98,0xe3,0xc5,0xb2,0xe0,0xb7,0xfc,0xaf,0x81,0x50,0x6d,0x17,0x53,0x6a,
- 0x14,0x51,0xac,0x17,0x53,0xa8,0x11,0xfb,0x77,0x89,0xc4,0xad,0x5c,0x54,0x1a,0xeb,
- 0x62,0x84,0xc8,0x29,0xbf,0x0d,0xd2,0x2e,0x08,0x82,0xf7,0xe9,0xdd,0x35,0x08,0xfd,
- 0xfb,0xbf,0x14,0x09,0xee,0x6a,0x37,0x0f,0x8f,0xed,0x3b,0x76,0x00,0xf9,0x3d,0x72,
- 0x54,0x46,0xfa,0xe4,0xc5,0x2b,0x57,0x6f,0xdc,0xbc,0x73,0xef,0xfe,0x7d,0xf9,0x7b,
- 0xf7,0x15,0x7f,0xba,0xfd,0xe0,0xda,0xf5,0xdb,0x67,0xce,0x5e,0x3a,0x7c,0xe4,0xe8,
- 0x9e,0xbd,0xfb,0xb6,0x6d,0xdb,0x2e,0x26,0xb1,0x19,0x06,0x3d,0xfc,0x75,0x48,0x4b,
- 0x05,0x04,0x05,0x96,0x08,0xe0,0x89,0x48,0x78,0x16,0x30,0x1e,0x82,0xfe,0x1d,0xfc,
- 0x17,0x38,0x94,0x86,0x86,0xa6,0xaf,0x7f,0xa8,0x89,0xb1,0x55,0x78,0x44,0x6c,0x59,
- 0x45,0xf5,0xc0,0xe0,0x30,0x8d,0x64,0xa8,0xa7,0xaf,0xff,0xab,0x2d,0x94,0xe3,0xc0,
- 0x0c,0xdb,0xf5,0xcf,0xdd,0xa9,0x19,0xe9,0x46,0xc6,0x4c,0x2f,0x5f,0x18,0x4b,0x8b,
- 0x3a,0x3a,0x7b,0x68,0xc6,0x52,0x30,0xad,0xc7,0x74,0x45,0xf6,0xce,0x9c,0x3d,0x5b,
- 0xff,0xbc,0x11,0xa0,0xaa,0xbd,0xa3,0x6b,0x62,0x62,0xf6,0x84,0x5f,0xb8,0xee,0xe0,
- 0xae,0xf7,0xf6,0x0d,0x94,0x57,0xd4,0xa4,0x67,0x66,0x97,0x95,0x57,0xa5,0xa5,0x67,
- 0xfc,0xfb,0xde,0x7d,0x11,0x51,0x31,0x72,0xc2,0x0b,0xce,0xd5,0xca,0x95,0xab,0x8e,
- 0x4a,0xcb,0xf8,0xfa,0x83,0x57,0x50,0xe8,0xec,0xe2,0xaa,0xf8,0x50,0x49,0x5e,0xfe,
- 0x21,0x43,0x59,0x43,0xcf,0xc0,0xc4,0xc1,0xd9,0x1d,0xc8,0x51,0x55,0xcd,0xf3,0xbe,
- 0xc1,0xe1,0x59,0xa9,0x2b,0x5c,0x38,0x00,0x2c,0xaa,0xe9,0xb3,0x5d,0xbb,0x76,0xa5,
- 0x67,0x66,0xe9,0x18,0x18,0xbb,0x79,0xfa,0xe7,0xe6,0x17,0x75,0x76,0x53,0xe2,0x20,
- 0xd6,0xdb,0x9f,0x39,0xc5,0xc5,0x56,0x58,0x89,0x6c,0x64,0xb6,0x68,0xf8,0xb5,0xb1,
- 0xb5,0x03,0x83,0x55,0x7c,0x04,0xb6,0xb5,0xb3,0x27,0x3f,0x35,0x66,0x1a,0x7f,0x36,
- 0xbd,0xdc,0xb1,0xa1,0xb1,0x59,0x42,0x62,0xb2,0x92,0x0a,0x90,0x56,0x25,0x25,0x15,
- 0x75,0x23,0x53,0x0b,0x00,0xc8,0x94,0xb4,0xac,0xea,0xda,0xfa,0x9e,0xbe,0x81,0x5f,
- 0x97,0x32,0x9b,0x9c,0x7a,0x07,0x27,0xc4,0xd8,0xc4,0x4c,0xdf,0xc0,0xd0,0xc8,0xc8,
- 0x08,0xfe,0xeb,0xe9,0x1b,0xe8,0xe9,0x19,0xc0,0x7f,0x58,0x26,0x56,0xf5,0x0d,0x75,
- 0xf5,0xf4,0xf5,0xf5,0x61,0x19,0x5f,0x45,0x06,0x5b,0x60,0x15,0xbe,0x00,0x0b,0x6a,
- 0x8f,0xd4,0x97,0xbe,0xb7,0x77,0x55,0xec,0xd8,0xbe,0x33,0x29,0x35,0xd5,0xc0,0x98,
- 0xe9,0xee,0xe9,0x97,0x99,0x5b,0xd0,0xde,0xd9,0x47,0x13,0xc0,0x87,0xcb,0xcd,0x34,
- 0xb3,0x98,0x67,0xcb,0x8b,0x3f,0x59,0xec,0xee,0xee,0x6e,0x63,0xe7,0x60,0x63,0xe7,
- 0x1c,0x13,0x97,0xd8,0xd0,0xd4,0x06,0x4e,0x08,0x4d,0xb8,0xb8,0xb8,0xa4,0x54,0x50,
- 0x70,0x0e,0xa9,0xbf,0x9a,0x9a,0x7a,0x48,0x68,0x98,0xb9,0xa5,0x4d,0x70,0x68,0x54,
- 0x69,0x65,0x2d,0xbd,0xdc,0x6e,0xfc,0xf5,0xab,0xc8,0xa8,0x18,0xfc,0x2a,0xdb,0xd9,
- 0x3b,0xcc,0x7a,0xb9,0x61,0xbb,0x35,0x76,0xb9,0xc9,0x05,0x1b,0x54,0x95,0xdd,0x41,
- 0x45,0x55,0x75,0x05,0xb5,0xee,0x62,0xe1,0x87,0x0b,0xcd,0x2d,0x2c,0x5c,0xdd,0x3d,
- 0xcd,0xac,0xec,0xa2,0x63,0x12,0xe0,0xea,0x0f,0x0d,0x8f,0xd2,0x8c,0x81,0x83,0xc3,
- 0x23,0x42,0x42,0xeb,0x66,0x6d,0x0a,0xc6,0x90,0xab,0xd7,0xe4,0xea,0x1b,0x9a,0xb2,
- 0x73,0x0a,0x5e,0xb6,0x77,0x4e,0x4c,0x50,0x16,0x50,0x85,0x07,0x10,0xe5,0xa6,0xbd,
- 0x9e,0x78,0x20,0xaf,0xf0,0x47,0x28,0xc0,0xef,0xb6,0x8f,0x96,0xae,0x5b,0x2f,0x97,
- 0x81,0x15,0x91,0x20,0xf0,0x51,0x02,0x43,0x2b,0xa2,0xb6,0x24,0xca,0x81,0xc5,0xca,
- 0x43,0x91,0xa0,0x86,0xe9,0x91,0x48,0x49,0x15,0x2e,0x43,0xc2,0x91,0x8e,0x20,0x80,
- 0x5c,0x39,0xd6,0xaf,0xeb,0x5b,0x12,0x45,0x1d,0x79,0xf5,0xac,0xfa,0x71,0xc1,0x33,
- 0x9f,0x68,0x8a,0xc0,0x38,0x6e,0x53,0x3c,0xe0,0x03,0xd0,0xc4,0xeb,0x6e,0x21,0x1e,
- 0xaa,0x4e,0x56,0x69,0xe6,0x17,0x6b,0x71,0x2b,0x71,0x11,0x90,0x3a,0x30,0xcd,0x9d,
- 0xd0,0xe4,0x95,0x0a,0xe1,0x09,0xae,0xf0,0x2a,0x5b,0x98,0xbe,0x0b,0x8b,0x6c,0xf7,
- 0x92,0x01,0x64,0xb2,0xfc,0x26,0xfc,0xc7,0xf6,0x4b,0xb4,0x43,0xc8,0xcf,0x88,0xca,
- 0x1e,0xdd,0x44,0xbc,0x9d,0xcb,0x85,0xb1,0x99,0xdf,0x41,0xd2,0xc1,0xe0,0x75,0x49,
- 0xa3,0x0b,0x97,0x63,0xf1,0xde,0x13,0xa1,0xda,0x86,0x0a,0x64,0x29,0xd4,0x8b,0x3e,
- 0xa8,0x16,0xbb,0x5b,0x2c,0x7a,0x23,0x57,0xf4,0xa7,0x24,0xf4,0xb2,0xc2,0x93,0x5e,
- 0x1b,0xa4,0x6d,0x84,0x0e,0x99,0xed,0xbc,0x68,0xd3,0xd2,0xde,0xf7,0x97,0x23,0x2c,
- 0xbd,0x8d,0x8e,0x8f,0x3d,0x90,0x7f,0xb8,0x7d,0xfb,0x8e,0x3d,0x7b,0xf7,0xcb,0x1c,
- 0x3f,0x71,0xe1,0xd2,0xb5,0xeb,0x37,0xef,0x3c,0x50,0x50,0x66,0x28,0x3d,0x52,0x64,
- 0xa8,0xdd,0x97,0x57,0xba,0x79,0xfb,0xdf,0x17,0x2e,0x5d,0x39,0x2e,0x7b,0xf2,0x87,
- 0x7d,0xfb,0xb7,0x6d,0xdf,0xb1,0xf9,0xab,0x2d,0x1b,0x36,0x6c,0xc4,0xf1,0x77,0xd9,
- 0xb2,0xcf,0x96,0x2c,0x16,0xf8,0x78,0xd1,0xc7,0x40,0x81,0x3f,0x5c,0x80,0xc0,0x17,
- 0x97,0x60,0xfd,0x0e,0x15,0x16,0xfc,0x56,0x91,0xa1,0x18,0x18,0x12,0x66,0x68,0x6a,
- 0x15,0x16,0x11,0x55,0x52,0x5a,0xd9,0x0f,0x1e,0x2f,0xf5,0x18,0x32,0x30,0x34,0x04,
- 0x7d,0x9e,0x67,0xe3,0x5b,0xbf,0xd9,0x96,0x9a,0x9e,0xc1,0x64,0x5a,0x78,0x7a,0xfb,
- 0x67,0xb3,0x0b,0x00,0x7f,0x27,0xde,0xd0,0x65,0x7c,0x00,0xeb,0x59,0xf0,0xc1,0xec,
- 0x2e,0x84,0xe0,0xd2,0x4f,0x43,0xc2,0x42,0x4b,0xcb,0x2b,0x2b,0xab,0xeb,0xfa,0xfa,
- 0x07,0xa9,0x92,0x7a,0xc0,0xe7,0x1f,0x7f,0xf5,0xaa,0xe9,0x45,0x6b,0x79,0x65,0x75,
- 0x4d,0x5d,0x9d,0xd6,0x63,0x6d,0x51,0x51,0x51,0xaa,0x64,0x19,0xc0,0x32,0x59,0xd9,
- 0x13,0x71,0x09,0x89,0xc1,0x21,0x61,0xaa,0x6a,0x8f,0x1e,0x28,0x30,0x54,0xd4,0x34,
- 0x0d,0x99,0x2c,0x2f,0xbf,0x20,0x76,0x5e,0x7e,0x6b,0x7b,0x27,0xd5,0xfc,0xe0,0xf0,
- 0xe8,0xc8,0xce,0x9d,0xdf,0xcd,0x7a,0xb6,0xc1,0x53,0x4a,0xcb,0x4c,0x07,0x1c,0x77,
- 0x73,0xf7,0xc9,0x61,0x17,0xb5,0x77,0x74,0xd3,0x14,0x2e,0x98,0xfa,0x79,0xca,0xca,
- 0xca,0x1a,0x8f,0x63,0x80,0x91,0x0b,0xfc,0x36,0x63,0xe3,0x8c,0xdd,0x09,0x09,0x09,
- 0x39,0xbb,0xba,0x87,0x84,0x85,0x33,0x18,0xca,0x00,0xc1,0xaa,0xea,0x9a,0xa6,0xe6,
- 0x56,0x3e,0xbe,0x81,0x59,0xd9,0x05,0x75,0xf5,0x4d,0x03,0x43,0x23,0x33,0xd0,0x1f,
- 0xe0,0xb8,0xbc,0xa2,0x6a,0xc7,0x8e,0xef,0x50,0x15,0x71,0xac,0x8a,0x1a,0x76,0xff,
- 0xa0,0xff,0xb0,0x4c,0xac,0x2e,0x58,0x88,0x3e,0xe2,0xaa,0xfb,0xf0,0xff,0xc8,0xc7,
- 0x5b,0x80,0x7d,0x81,0xeb,0xec,0xbd,0x27,0xdb,0x2a,0xf9,0x4d,0x7a,0x46,0xa6,0x31,
- 0xd3,0xdc,0xcd,0xc3,0x37,0x9b,0x9d,0xd7,0xde,0x31,0x47,0x96,0xae,0xe3,0x13,0xa7,
- 0x79,0xb6,0x0c,0x67,0x12,0xbd,0x0b,0xe3,0x89,0xab,0x8d,0xc3,0x93,0xd8,0xf8,0xe4,
- 0xe7,0x8d,0x2f,0x30,0x91,0x12,0x25,0xfe,0x56,0xd7,0x3e,0x5b,0xbd,0x6a,0x0e,0x5a,
- 0x77,0xff,0x81,0x7c,0x64,0x74,0x8c,0x99,0x85,0x55,0x70,0x68,0x64,0x69,0x79,0x55,
- 0xff,0xc0,0x20,0x92,0x0a,0x53,0x34,0xd8,0x37,0xd0,0x2f,0x23,0x73,0x9c,0xfe,0x72,
- 0x53,0x5d,0x77,0xfa,0x84,0x2f,0xb8,0x22,0xe0,0x30,0xf9,0xf8,0x07,0x98,0x5a,0x58,
- 0x47,0x44,0xc6,0x56,0x54,0xd5,0x0d,0x0e,0xcf,0xee,0x3d,0xe2,0xf6,0xfa,0xcd,0x1b,
- 0x31,0x8a,0x28,0x16,0x3c,0x68,0xbe,0x7e,0xfe,0x85,0x9c,0xe2,0xa2,0x92,0xf2,0xae,
- 0x9e,0x01,0x9a,0x84,0x85,0x29,0x34,0x91,0xf1,0x0a,0xdc,0xbc,0x4d,0x73,0xbd,0xa8,
- 0xe2,0x3d,0xd9,0x82,0x05,0x8b,0x84,0x65,0x9d,0xc5,0xb1,0x54,0x1a,0x09,0x0d,0x22,
- 0x48,0x8b,0xea,0x41,0x91,0x68,0xa5,0xd1,0x0b,0xab,0x78,0x02,0x2c,0x1f,0x7a,0x12,
- 0x88,0x83,0x2b,0x9d,0xd0,0x4b,0x1c,0x90,0x8c,0x8a,0x40,0x67,0x5c,0x8e,0x85,0x89,
- 0xb5,0x7a,0x79,0x60,0xad,0xc5,0x95,0x22,0xe3,0xca,0x2b,0x3e,0x32,0xbb,0x49,0xab,
- 0x0f,0x4f,0xbc,0x25,0xf3,0x8f,0x88,0xce,0x68,0xf1,0xe4,0x58,0x58,0xd0,0x9b,0xab,
- 0x40,0xd6,0xe2,0xbe,0x3d,0x41,0xb3,0x03,0x2f,0xae,0xc5,0x1f,0xac,0x86,0xae,0x4a,
- 0x68,0x12,0x99,0x4d,0x78,0x08,0x9d,0xac,0x58,0x85,0xff,0x56,0x9c,0x1b,0x97,0xc6,
- 0x8f,0x85,0x54,0x88,0x4d,0xd3,0x63,0x13,0x9d,0xec,0x27,0xdd,0x09,0x7e,0xa6,0xcc,
- 0xcf,0xfd,0xc5,0x79,0x51,0x6e,0x0c,0x9d,0x31,0xfe,0x8b,0x52,0x9b,0x35,0xb0,0x97,
- 0x43,0x61,0xbc,0x1e,0x8f,0xa8,0x4f,0xab,0x91,0x85,0x2a,0x45,0x37,0x8b,0x32,0x1a,
- 0x44,0x15,0x6a,0xc5,0xee,0x96,0x88,0xdf,0xe5,0x88,0x5e,0x4b,0x17,0xbd,0x1c,0x2b,
- 0x72,0x3a,0x70,0xa3,0xac,0xdb,0xba,0xc3,0x36,0x62,0xc7,0x2c,0xa2,0x32,0x6b,0xfe,
- 0xe6,0xb5,0xb0,0x1a,0x9a,0x9a,0xf6,0x1f,0x38,0xf8,0xdd,0xf7,0xff,0x3c,0x24,0x75,
- 0xe4,0xd4,0xd9,0xf3,0x57,0xe4,0x6e,0xde,0x07,0x0a,0xa3,0xa6,0xfe,0x48,0x43,0x4b,
- 0x49,0x53,0x17,0x16,0xe4,0x15,0x19,0x57,0xe4,0x6e,0x9d,0x3c,0x75,0xee,0x47,0xa9,
- 0xc3,0xdf,0xef,0xda,0x2d,0x29,0x29,0x29,0x26,0x2e,0x2e,0xbc,0x76,0xed,0xe7,0x2b,
- 0xd7,0xa0,0x42,0x1c,0xd8,0x14,0x30,0x5e,0x88,0x03,0xe5,0x02,0x7f,0x40,0xbc,0x11,
- 0xe9,0xb7,0x8e,0x8d,0xe0,0xee,0xde,0xbe,0x73,0x27,0x22,0x3a,0xd2,0x88,0x69,0x16,
- 0x14,0x1c,0x59,0xfc,0xb4,0x1c,0xd0,0x8d,0xe6,0xc9,0x1d,0x7b,0x35,0xbe,0x67,0xcf,
- 0x0f,0xf3,0x6c,0x1c,0x1e,0xcc,0xb4,0xac,0x4c,0x96,0x9d,0x93,0x6f,0x40,0x48,0x7e,
- 0x61,0x71,0x67,0x57,0xef,0x6b,0xea,0xf8,0x33,0x18,0x30,0x82,0x59,0xfb,0x0f,0x48,
- 0x77,0xe4,0xa8,0x74,0x45,0x55,0x4d,0x46,0x56,0xce,0xf3,0xc6,0x96,0xd1,0xb1,0x71,
- 0xaa,0x9c,0xd0,0xb7,0x93,0xef,0xfa,0xfa,0x87,0x1a,0x9b,0xdb,0xaa,0x6a,0xea,0xae,
- 0xca,0xdd,0x98,0xf3,0x6c,0x40,0xcb,0x1b,0xbe,0xd8,0xe0,0xe2,0xea,0x16,0x9f,0x98,
- 0xc8,0x50,0x56,0x91,0x57,0x78,0xa8,0xa9,0xad,0x6b,0x67,0xff,0x24,0x22,0x2a,0xae,
- 0xaa,0xf6,0x19,0x8c,0x2d,0x54,0x3b,0x02,0xd4,0xe3,0x4f,0x05,0x22,0xed,0xeb,0x7f,
- 0x48,0x66,0xb3,0xd9,0xba,0x86,0x86,0xce,0x6e,0xde,0x59,0xec,0xfc,0xb6,0xf6,0xae,
- 0x57,0xd4,0x49,0xa6,0xc0,0x2c,0x1c,0x9d,0x5c,0xfe,0xe0,0x28,0xb4,0x7e,0xdd,0x17,
- 0x61,0x91,0x51,0xde,0xbe,0x01,0x8a,0x8a,0x0f,0x15,0x14,0x14,0xd5,0x35,0x1f,0x9b,
- 0x99,0xb3,0xfc,0x83,0x42,0xb3,0x72,0x72,0x1b,0x9b,0x5f,0x0e,0x0d,0x8f,0xbc,0xc3,
- 0x0a,0x73,0xf2,0xef,0x37,0x2d,0x33,0x6b,0xf3,0x97,0x7f,0xcd,0x98,0x39,0xa7,0x6d,
- 0x96,0xd8,0x9c,0x9a,0x96,0xce,0xb2,0x75,0xf4,0xf1,0x0f,0xce,0xcd,0xe3,0xb4,0x77,
- 0x75,0xd3,0x09,0xd8,0xfe,0xef,0x17,0x0f,0x9f,0xf9,0x16,0xa3,0x86,0x9b,0x01,0x88,
- 0x24,0x34,0xeb,0xe4,0xea,0x99,0x98,0x9c,0xd6,0xd8,0xdc,0x82,0x5e,0xee,0x40,0x4d,
- 0x12,0x9b,0x9a,0x9b,0x85,0xe7,0x2a,0x48,0x2e,0x77,0xe3,0x66,0x54,0x5c,0x82,0xb1,
- 0xa9,0x05,0x9c,0xf0,0xa7,0x65,0x95,0xd8,0x8b,0x0f,0x28,0x9f,0x9d,0xe1,0xd1,0xe1,
- 0x93,0xf3,0xce,0x96,0xfa,0x4d,0x06,0x4f,0xb1,0xba,0xa6,0x46,0x50,0x68,0x38,0x13,
- 0xd5,0x2d,0x89,0x2a,0xaf,0x44,0xf8,0x3b,0x45,0x1b,0x37,0x96,0x94,0x9c,0xbd,0x6e,
- 0x27,0x38,0x90,0xe0,0xe4,0xa6,0x65,0xb0,0xeb,0xea,0x9b,0x47,0x68,0x6b,0x4e,0xbe,
- 0x7d,0x3b,0x09,0x5f,0x48,0x4c,0x4e,0x7e,0xaf,0xfe,0x18,0xbd,0xad,0xd8,0x76,0x0b,
- 0xd5,0xa2,0x44,0xd5,0x20,0x67,0x96,0xb4,0x22,0x51,0x8c,0x1f,0x6e,0x28,0x15,0x47,
- 0xd3,0xb3,0x78,0x66,0x6a,0xb4,0x90,0xc4,0xba,0x17,0x17,0x2d,0x23,0x0d,0x95,0x16,
- 0x2a,0xd0,0xc1,0xab,0x52,0xf5,0xab,0xba,0xd3,0x33,0x45,0x53,0x64,0x95,0x2a,0xed,
- 0x69,0x82,0x2b,0xb4,0xaa,0xd1,0x4b,0xaf,0x83,0xe2,0x2f,0xe1,0x85,0x2b,0xac,0xbe,
- 0xd4,0xee,0xc5,0x6b,0x70,0x71,0x03,0xec,0x98,0xb2,0x8b,0xaf,0xe0,0x15,0xa1,0xec,
- 0xc2,0xaa,0x5d,0x91,0x0d,0x92,0x9f,0x4e,0x2b,0xf0,0x85,0x5e,0x39,0x01,0x9e,0x43,
- 0x37,0x56,0xcc,0x84,0xa7,0x0a,0xe3,0x95,0xe1,0xe2,0x2a,0xc7,0x90,0xff,0xc0,0xcf,
- 0x82,0x55,0x3b,0xc4,0x95,0x5f,0x88,0xa0,0x89,0xe0,0x6a,0xd1,0xbb,0xc5,0x12,0xb7,
- 0xd8,0xe2,0x57,0x53,0x44,0x81,0x02,0x9f,0xf2,0xda,0x70,0xcc,0x61,0xed,0x61,0x0b,
- 0x15,0xab,0x98,0xd7,0xd4,0x9e,0xdb,0xdf,0xc1,0xc2,0x23,0xa3,0xb6,0x6d,0xdb,0xb1,
- 0x7b,0xcf,0xde,0xa3,0xd2,0x40,0x7e,0xaf,0xde,0xbd,0x27,0xaf,0xa4,0xa2,0xae,0xa2,
- 0x65,0xa8,0x6f,0x60,0xf4,0x58,0xd7,0x58,0x4d,0x53,0xe7,0x36,0x43,0xf5,0xe6,0xad,
- 0x3b,0x67,0xce,0x5d,0x94,0x3a,0x7c,0x64,0xd7,0xbf,0xf6,0x6c,0xdd,0xba,0x15,0x5c,
- 0xd6,0xb5,0xeb,0xd6,0xad,0x5a,0xbd,0x7a,0xf9,0xf2,0xe5,0x82,0x82,0x82,0xf8,0xeb,
- 0x80,0x17,0x2d,0x5c,0xf4,0xd1,0x87,0x1f,0x01,0x49,0x21,0x6b,0x61,0xfd,0x26,0x16,
- 0x0c,0x5f,0xbe,0x72,0xf5,0x5a,0x54,0xcc,0xff,0x33,0x77,0xdd,0x51,0x51,0x5c,0x5d,
- 0xfc,0x9f,0x2f,0x45,0x4d,0x62,0x47,0x9a,0x25,0xd4,0x05,0x14,0xa3,0x31,0x92,0xc4,
- 0x44,0x8c,0x1a,0x5b,0x62,0x10,0xe5,0x4b,0xfc,0x10,0x35,0x46,0x63,0x01,0x14,0x69,
- 0xd2,0x7b,0xef,0x45,0x7a,0x51,0x90,0xde,0xdb,0xb2,0x2c,0x48,0xef,0x28,0x76,0x50,
- 0x94,0x5e,0x64,0x97,0xa5,0x85,0x2a,0x96,0x9c,0xf3,0xbd,0x37,0x6f,0x76,0x18,0x16,
- 0x76,0x58,0x8d,0x68,0x38,0xf7,0xec,0x99,0x9d,0x9d,0x79,0xf3,0x66,0x98,0x99,0xdf,
- 0xfb,0xdd,0x77,0xef,0xef,0xa6,0xd9,0xd8,0x39,0x47,0xc5,0x24,0x56,0x55,0x03,0xfc,
- 0xed,0xa5,0xc8,0x21,0x1d,0x7b,0x36,0xb1,0x77,0xef,0x4f,0x02,0x36,0x2e,0x21,0x21,
- 0x55,0x54,0x5a,0x1a,0x15,0x93,0x90,0x49,0xcf,0xa9,0xbd,0xf5,0x80,0xc5,0xe6,0x4c,
- 0x50,0x66,0xa7,0x06,0x87,0x84,0xcc,0xe8,0xd7,0x85,0xa5,0x1c,0x02,0x83,0x8a,0xcb,
- 0xaa,0xf2,0x0b,0xcb,0xda,0x3a,0x3a,0x29,0x48,0xf4,0xf0,0xc8,0x18,0x8b,0xdd,0xd3,
- 0xda,0xd6,0x76,0x44,0x5d,0x83,0x3a,0xc3,0x82,0x6c,0xe2,0xa2,0xe2,0x6e,0xee,0x1e,
- 0xa9,0xe9,0xe9,0x7a,0x06,0x86,0x17,0xf5,0x2e,0x81,0x4b,0x11,0x16,0x1e,0x5d,0x5a,
- 0x5e,0x0d,0x15,0x05,0xc7,0x66,0x0e,0xfe,0x6c,0x6c,0x6e,0x06,0x14,0x78,0x7a,0x53,
- 0x34,0x59,0xb9,0xdc,0x82,0x42,0x2b,0x5b,0xc7,0x80,0xe0,0xf0,0xfc,0xc2,0x92,0xd6,
- 0x76,0x58,0xf5,0x89,0xe2,0x94,0x01,0xd7,0xf8,0x87,0xaf,0x20,0xf0,0x1f,0x54,0x90,
- 0x57,0x48,0xcd,0x4c,0x0f,0x0d,0xbb,0x72,0x4e,0xf3,0xfc,0x05,0x1d,0x7d,0x63,0x13,
- 0x4b,0x37,0x0f,0xef,0x6b,0xd1,0xf1,0x65,0x15,0xd5,0x8d,0xcd,0xad,0x50,0x76,0x7b,
- 0xea,0xab,0x18,0xfc,0x7f,0xe9,0x8c,0x1c,0x51,0x11,0xb1,0x77,0x96,0xb0,0x29,0xb8,
- 0x7d,0xbe,0x46,0x22,0xf7,0x7a,0x7e,0x64,0x54,0x7c,0x7a,0x66,0x4e,0xcd,0xcd,0xbb,
- 0xec,0x9e,0xde,0xd1,0x31,0x2a,0xfe,0x1b,0x9f,0x98,0x2c,0xe0,0x3f,0x1a,0xc0,0x84,
- 0xa3,0xb3,0x73,0x16,0x23,0x27,0x2e,0x31,0xa5,0xb8,0xb4,0xaa,0xad,0xbd,0x73,0x78,
- 0x64,0x84,0x62,0x92,0xb4,0xb5,0xbd,0x4d,0x4a,0x4a,0x86,0xba,0x4d,0x75,0x75,0x75,
- 0x7a,0x4e,0xae,0x8d,0x83,0x4b,0x44,0x54,0xec,0x8d,0xda,0x3b,0xec,0x1e,0x88,0xbf,
- 0xfc,0xda,0x04,0x63,0xd7,0x23,0x1a,0x73,0xa5,0xd0,0x78,0x4e,0x13,0x30,0xf1,0x34,
- 0x7b,0x27,0xb7,0x98,0xf8,0xe4,0xda,0x3b,0x0f,0x7a,0x7a,0x07,0x28,0xe2,0xc6,0xc1,
- 0xa0,0xf2,0xdb,0x6f,0xb7,0xcc,0xd8,0x8e,0xbe,0xbe,0xc1,0xfd,0xba,0xfa,0xaa,0xea,
- 0xda,0x8e,0x2e,0xd6,0xd0,0x30,0x5f,0x29,0x78,0xe8,0x7c,0x1e,0x7e,0xd6,0xdb,0xdf,
- 0x7f,0xe6,0xec,0xb9,0xf7,0x78,0xb7,0x2c,0x5c,0xbd,0x09,0x96,0x0c,0xe0,0x4e,0xf8,
- 0xe2,0x24,0x0e,0x8f,0x2c,0xc2,0x68,0x1d,0x06,0x1c,0x6b,0x4d,0x27,0x25,0xad,0x30,
- 0x75,0x29,0xf4,0x95,0x43,0x84,0x63,0xc9,0x4c,0x09,0x4c,0x9a,0x12,0x61,0x45,0x4c,
- 0xaa,0x4e,0x8a,0x6f,0xe0,0xed,0x70,0x48,0xde,0x5a,0x54,0x7f,0x10,0x9f,0x9f,0x45,
- 0x81,0xc7,0x28,0x25,0x0a,0x6a,0x4f,0xa1,0x6a,0x0e,0xa6,0xbd,0x44,0xea,0x10,0x69,
- 0x62,0x1a,0x75,0x80,0x83,0xdc,0xc5,0xdc,0x22,0x11,0x6c,0x1a,0x11,0x76,0x05,0x29,
- 0x7c,0x0f,0x6c,0xc1,0x84,0x54,0x95,0x09,0xd3,0x76,0xe6,0x46,0x94,0x71,0x05,0xaf,
- 0x48,0x73,0xc1,0x93,0xfd,0xe4,0x4e,0x1c,0x63,0x8c,0x1e,0xe7,0xb9,0x48,0x33,0x04,
- 0x75,0x15,0xcd,0xfc,0x62,0xd5,0x91,0x38,0x93,0x9e,0x7c,0x53,0x5c,0x58,0x7b,0x1d,
- 0x46,0xc0,0x61,0x30,0x39,0xe8,0x06,0x24,0xc5,0x6c,0xa2,0x82,0x21,0xbc,0xec,0x7a,
- 0x8d,0x80,0x05,0xcb,0x6a,0xd5,0x4a,0x9d,0xbe,0x21,0x73,0xa2,0x48,0x5a,0x23,0x4b,
- 0xea,0xd7,0x38,0x40,0x81,0xd7,0xec,0x73,0xdf,0x7e,0x2a,0xa4,0x8b,0x3d,0xf8,0xde,
- 0x41,0x96,0xef,0xfd,0xff,0xea,0x85,0x93,0x93,0xf3,0x97,0x9b,0x36,0x6f,0xdf,0xf1,
- 0xe3,0x01,0x55,0xb5,0x63,0xc7,0x4f,0x6a,0x5d,0xd0,0x35,0x36,0xb1,0xb0,0xb5,0x77,
- 0xb0,0x76,0xf4,0x72,0x70,0x74,0xb2,0xb6,0xb1,0x37,0x34,0x32,0x3f,0xa7,0xa5,0xa3,
- 0xa6,0xfe,0xc7,0xde,0x7d,0xbf,0x6c,0x55,0xde,0xf9,0xd5,0x26,0x25,0x05,0x05,0x05,
- 0x34,0x05,0x2c,0x24,0x24,0x04,0x13,0x81,0xb1,0x72,0x48,0xf3,0xe7,0xcd,0x47,0x5a,
- 0x58,0x84,0x73,0xf2,0x75,0x67,0x81,0x55,0x0f,0x1e,0xca,0xc2,0x32,0x3e,0x22,0xa2,
- 0x63,0xc1,0x73,0xd7,0xcd,0xa6,0xc2,0x5f,0xf0,0x72,0x51,0x55,0x3d,0x24,0x60,0xcb,
- 0x2b,0xc5,0x57,0x55,0x56,0x57,0x17,0x16,0x95,0x55,0xd7,0xdc,0x78,0xfc,0xa4,0x75,
- 0x60,0x70,0x84,0xc2,0x3b,0x07,0x2c,0x2e,0x3e,0x7e,0xc6,0xb4,0x08,0x49,0x09,0xc9,
- 0xaa,0xea,0x9a,0x8c,0x2c,0x66,0x59,0x45,0xcd,0x53,0x56,0xcf,0x28,0xff,0x80,0xcc,
- 0xfe,0x81,0x81,0xde,0xbe,0x3e,0x2f,0x6f,0xcf,0xd7,0xd5,0x81,0x17,0x13,0x15,0x07,
- 0x6f,0xe6,0x80,0xd0,0x50,0xed,0x0b,0x17,0x4d,0x4c,0x2d,0xbd,0x7d,0xfc,0x33,0xe9,
- 0xcc,0xba,0x87,0xb0,0x4a,0xdd,0x8c,0xaf,0xa0,0x89,0x17,0xcf,0x8d,0x8c,0x4c,0x66,
- 0xe8,0xaa,0xa4,0x14,0x3d,0x87,0x69,0x65,0x6b,0xeb,0x1f,0x10,0x72,0x3d,0xbf,0xb8,
- 0xa5,0xbd,0x63,0x64,0x64,0x82,0xe2,0x25,0x9f,0x98,0x9c,0xf6,0x56,0x5e,0x44,0xca,
- 0xdb,0xb6,0x97,0x96,0x57,0xd8,0x39,0x3a,0x69,0x69,0x9d,0xbf,0x70,0xd1,0xd0,0xd4,
- 0xcc,0xc6,0xd3,0x2b,0x20,0x31,0x25,0xbd,0xb2,0xa6,0xb6,0xad,0xfd,0xe9,0xf0,0xc8,
- 0x28,0x4f,0x52,0xf3,0xc4,0x8b,0x17,0x80,0x0c,0x2e,0x13,0xb8,0x78,0xee,0x3b,0x33,
- 0x71,0xf1,0x95,0x79,0xf9,0xf9,0x80,0xbc,0x57,0x56,0xd6,0x3e,0x69,0x6a,0x1b,0x18,
- 0x1c,0xa4,0x1e,0xb3,0xd1,0x19,0xf4,0x59,0xb3,0x84,0x90,0x81,0xc1,0x86,0xa5,0xb5,
- 0xcd,0xcd,0x5b,0xb7,0xc1,0x40,0xee,0x7e,0x5d,0x43,0x4f,0x6f,0xdf,0xd8,0x18,0x15,
- 0xb3,0xee,0xea,0xea,0x5e,0xb7,0x6e,0x3d,0x75,0x9b,0x2a,0x2a,0x07,0xb2,0x19,0xb9,
- 0xd6,0xb6,0x0e,0x11,0xd7,0x60,0xb8,0x7b,0x37,0x8b,0x4d,0x3d,0xff,0x7b,0xe2,0xd4,
- 0x2c,0x35,0x95,0xde,0xd8,0x8e,0x1c,0x39,0x9a,0x91,0x9d,0xe5,0xe0,0xec,0x0a,0xf0,
- 0xb7,0xfa,0xd6,0x6d,0x4e,0x5f,0xdf,0x04,0xff,0xa4,0x5d,0x60,0x3b,0x66,0x8a,0x58,
- 0xfe,0xe4,0x93,0x4f,0xd2,0xb3,0xe8,0x77,0xee,0xd6,0xd5,0xd5,0x37,0x40,0x3f,0xd8,
- 0x04,0xff,0x5c,0xaa,0x17,0x2f,0x47,0x46,0x46,0x1f,0xd4,0xd7,0x2b,0x2a,0xce,0x72,
- 0x89,0xe6,0xd4,0xe6,0x2f,0x14,0x95,0x3e,0x57,0x83,0x9c,0xb1,0x6b,0x8d,0xdb,0x27,
- 0xa7,0x5c,0x21,0x68,0xf6,0xa2,0x82,0x47,0xb2,0x48,0x67,0xc3,0xb8,0x9b,0x90,0xb4,
- 0xc2,0x93,0x67,0x51,0xd6,0x2d,0xee,0x9d,0xe6,0xfa,0x93,0x71,0x2e,0x09,0x95,0x37,
- 0x88,0xa2,0x09,0x93,0x9c,0x14,0xf3,0x18,0x83,0xc6,0xa7,0x48,0x4b,0x4d,0xce,0xa5,
- 0xce,0x98,0x43,0x04,0x21,0x4f,0x9e,0x5b,0x08,0x98,0xd8,0x77,0x12,0xbb,0x49,0x8a,
- 0x1f,0x48,0xe1,0x4a,0x0e,0x0f,0xaf,0xea,0xc6,0x05,0xaf,0x60,0x61,0x41,0xf2,0xcc,
- 0x32,0x69,0x62,0x1a,0x1d,0xce,0x78,0xf2,0x70,0xa8,0x93,0x5c,0x28,0xef,0xc3,0xa8,
- 0x3a,0xa1,0x37,0x42,0x38,0xcf,0x7b,0x91,0x7a,0x27,0x76,0x44,0xcc,0x67,0x6e,0xc4,
- 0xc2,0x87,0x19,0xd8,0xfc,0x32,0x9c,0xa4,0xc6,0x16,0x68,0x66,0x7d,0x72,0x66,0x78,
- 0x05,0x46,0x4c,0xd8,0x84,0x45,0x92,0x89,0x06,0x14,0xb8,0x49,0x46,0xf7,0x89,0xac,
- 0xf6,0x5d,0xd9,0xb3,0x35,0x32,0xa7,0x2a,0x68,0xbf,0x33,0xa4,0xd5,0x93,0x24,0x55,
- 0xc3,0x24,0xf6,0x5f,0x96,0x3e,0xe0,0x7b,0xf7,0x51,0xe7,0xfb,0x05,0x59,0x0a,0x1b,
- 0x9f,0x98,0x00,0x54,0x4b,0xe9,0xeb,0x6f,0x7f,0xdc,0xf5,0x93,0xda,0x7f,0x7f,0x3b,
- 0x71,0x46,0x4b,0xd7,0xd0,0xc4,0xc6,0xd6,0xd1,0xce,0xc5,0xcf,0xdd,0xcb,0xd7,0xd9,
- 0xd3,0xdf,0xd6,0xc9,0xc3,0xcc,0xdc,0x46,0xfb,0xa2,0xde,0xef,0x27,0x4e,0xab,0xa8,
- 0xaa,0xed,0xd8,0xb9,0x0b,0xcb,0x42,0x52,0x94,0x92,0x92,0x5e,0xb3,0xe6,0x73,0x61,
- 0x61,0x61,0x80,0xbf,0x8b,0x17,0x2e,0x41,0x5a,0x58,0x90,0xff,0x62,0x5e,0x68,0x54,
- 0x0e,0x09,0xdd,0x99,0x82,0xa3,0xf0,0xae,0x1f,0x77,0x67,0x66,0xe7,0xd8,0xda,0xbb,
- 0x00,0xd2,0x51,0x5a,0x05,0xbd,0xc4,0xe3,0xe3,0xcf,0xf8,0x41,0x06,0x60,0x52,0x1a,
- 0x1a,0x47,0x05,0x6c,0x79,0x85,0xd0,0x8a,0xf2,0xca,0xaa,0xa6,0x96,0xb6,0xce,0x2e,
- 0x16,0x40,0x46,0x18,0xcb,0x41,0x29,0x8d,0x92,0x9a,0x9e,0xb9,0x68,0x26,0x91,0x3d,
- 0x70,0x44,0x40,0x2e,0x12,0x93,0x33,0x6a,0x6f,0x3f,0xe0,0xf4,0x0e,0xf2,0xf3,0x09,
- 0x4f,0x4c,0xbc,0x18,0x1d,0x1f,0x03,0x88,0xbf,0x7a,0xf5,0x9a,0x37,0x78,0x96,0xb7,
- 0x2a,0x6f,0xcb,0x2f,0x2e,0xb2,0xb6,0x73,0xd0,0xd1,0x37,0xb2,0x71,0x70,0x8b,0x8d,
- 0x4b,0xae,0xb9,0x09,0x18,0x0d,0xdf,0x29,0xb0,0x92,0xb2,0xf2,0xa5,0xd3,0xa4,0xc0,
- 0x56,0xae,0x5c,0x9d,0xc9,0xc8,0xb6,0xb3,0x77,0xbe,0xec,0x17,0x44,0x67,0x16,0x63,
- 0x4e,0x4e,0xaa,0x24,0xd3,0x9c,0xdc,0xdc,0xb7,0xf2,0x22,0xfa,0xe0,0x3f,0x1f,0x6c,
- 0xd9,0xf2,0x1d,0x38,0x77,0x57,0x37,0x77,0x2d,0x2d,0xed,0xf3,0x3a,0x06,0xa6,0xe6,
- 0xd6,0x5e,0x9e,0x41,0x09,0x49,0xa9,0x95,0x35,0xb7,0xdb,0x3a,0xba,0xe1,0x5c,0xe7,
- 0x54,0x08,0x1e,0x9f,0x18,0xf7,0xf0,0xf4,0xa6,0x50,0x35,0x7c,0x2f,0xb6,0x42,0x48,
- 0x18,0xe0,0x6f,0x4b,0x5b,0x7b,0x7b,0xe7,0x53,0x4e,0xff,0x20,0x45,0xfc,0x0f,0xb2,
- 0xb2,0xf2,0x32,0xf0,0x14,0x08,0xd8,0xb8,0xa9,0xb9,0xe5,0x53,0x16,0xab,0xb5,0xbd,
- 0x83,0xd3,0xdb,0x37,0x34,0x34,0x4c,0xa1,0x33,0x03,0x8c,0xd3,0xc7,0x51,0xda,0x3c,
- 0x83,0x8b,0x83,0x6c,0x3b,0x76,0xee,0x04,0x6c,0xdd,0xda,0xce,0xe5,0x4a,0x64,0x74,
- 0x45,0xe5,0xcd,0xce,0xee,0x5e,0x8a,0x70,0xbb,0xf1,0x89,0x67,0x7a,0xfa,0x06,0x73,
- 0x74,0xdd,0xf6,0xab,0xfc,0x92,0x9b,0x5f,0x68,0xef,0xe8,0x7a,0x2d,0x3a,0xae,0xaa,
- 0xe6,0x0e,0x18,0xa6,0x52,0x17,0x83,0x3e,0x74,0xe8,0xf0,0xf4,0x46,0xb6,0x6e,0x55,
- 0x6e,0x6e,0x69,0x7d,0xf4,0xb8,0xb1,0x9b,0xc5,0x19,0x19,0x1d,0xa7,0xb8,0xf2,0x2f,
- 0x5e,0xbe,0x1c,0x1b,0x1f,0x0f,0x0a,0x0e,0x99,0xf7,0xb1,0x40,0xd5,0x48,0xe7,0xc8,
- 0x3e,0x9a,0xb7,0x78,0xcd,0xe1,0x04,0x98,0x23,0x43,0x84,0x27,0x21,0x87,0x30,0x14,
- 0xc7,0x40,0xa9,0xaf,0xbd,0x84,0xb4,0x23,0x2a,0xda,0xcb,0x8d,0x70,0xe6,0x4c,0x91,
- 0xa5,0xe2,0x55,0xa9,0x9a,0x04,0x44,0x5c,0x4a,0x0b,0x01,0xe8,0x54,0xa2,0x8d,0xb7,
- 0xcc,0xdd,0x18,0xc5,0x15,0x13,0xb9,0x3c,0x48,0x77,0x1a,0x57,0xc9,0x20,0xa2,0x8e,
- 0xb9,0xdd,0x20,0xb0,0x1b,0x05,0x6b,0x71,0xd9,0x77,0xef,0xf4,0x29,0xda,0x29,0xe1,
- 0x58,0xa6,0x44,0x38,0x56,0x2f,0x79,0x5f,0x80,0x98,0x04,0xc4,0xf3,0xa0,0x3f,0xe1,
- 0x8e,0xc6,0x3c,0xde,0xa8,0xe2,0x12,0x1b,0x0d,0x3f,0xc0,0x57,0x39,0xae,0xfc,0x17,
- 0x96,0x59,0x0c,0xcb,0x1f,0x43,0x7d,0x4b,0x73,0x0e,0x5a,0x40,0x5a,0x9d,0x28,0x2f,
- 0x09,0xa5,0x54,0xc3,0xaf,0xdc,0x74,0x24,0x19,0x83,0x0e,0x40,0x81,0x31,0x08,0xbe,
- 0x2d,0x73,0xb6,0x86,0xf6,0x47,0xa1,0xf4,0x91,0x2c,0x58,0x23,0x58,0x25,0x94,0xa6,
- 0xe2,0x5d,0x50,0xd5,0xf2,0x7e,0x41,0x96,0xc2,0x06,0x87,0x86,0x4e,0x9d,0x3e,0xb3,
- 0xe5,0x3b,0xe5,0xbd,0x3f,0xfd,0x72,0x58,0xfd,0xa8,0xe6,0xf9,0x8b,0xc6,0x66,0xd6,
- 0xf6,0x2e,0x5e,0x1e,0xde,0x01,0xbe,0xfe,0x41,0xde,0x7e,0x41,0xae,0x9e,0x7e,0xb6,
- 0xf6,0xce,0xfa,0x06,0xc6,0x27,0xff,0xd4,0x54,0xfb,0xf5,0x7f,0x7b,0xf7,0xfd,0xfc,
- 0xdd,0xf7,0x5b,0x37,0x6e,0xfc,0x52,0x56,0x96,0x06,0xf0,0x57,0x54,0x4c,0x6c,0xb9,
- 0x90,0x30,0x78,0xf9,0x83,0x97,0x27,0xf2,0x42,0x43,0x39,0x4a,0x2c,0x48,0x06,0xa6,
- 0x23,0x61,0x4e,0x45,0xc1,0x5d,0x8b,0x5b,0xbf,0xdf,0x86,0xb2,0x84,0xc2,0xaf,0x46,
- 0x95,0x94,0xe3,0xf8,0x4b,0xd1,0xf9,0x73,0xe7,0xb4,0x04,0x6c,0x79,0xd1,0xa2,0xc5,
- 0xc5,0x25,0xa5,0x7f,0x0d,0x41,0xf5,0xfe,0xf1,0x67,0x33,0x28,0x5a,0xf0,0x18,0x23,
- 0x87,0xb9,0x74,0x5a,0xc9,0xdd,0xf9,0x1f,0xcf,0xf7,0xf6,0xf5,0x66,0xe4,0xe6,0x27,
- 0xa7,0x65,0xdf,0xbe,0x57,0x8f,0x26,0x34,0x67,0xdc,0x1d,0xe0,0xef,0x5f,0x43,0x43,
- 0xfa,0xfa,0x06,0xfc,0x82,0xb8,0xa8,0x0d,0x1c,0xc8,0xdc,0xd2,0x32,0x83,0x4e,0xd7,
- 0x33,0x30,0xb6,0xb0,0xb4,0x09,0xbf,0x1a,0x5d,0x5c,0x52,0x09,0x63,0xad,0xf9,0xd0,
- 0xed,0x6e,0x16,0x6b,0xf3,0x57,0x4a,0x3c,0x8d,0x88,0x8a,0x88,0xa6,0x65,0x64,0x3a,
- 0x3a,0xb9,0xf8,0xfa,0x05,0x32,0x98,0x05,0x4f,0x9a,0x9a,0x87,0x86,0x87,0x29,0x4e,
- 0x19,0x20,0xe6,0xdb,0x72,0x02,0x83,0xff,0xfe,0xf1,0xdf,0x4f,0xe4,0xe5,0x17,0x58,
- 0x5a,0xd9,0x6a,0x9f,0xbf,0x08,0x58,0x30,0x0c,0xe7,0xf6,0x0f,0x4e,0xcd,0x60,0xdc,
- 0xbc,0x73,0xbf,0xa3,0xab,0x7b,0x64,0x0c,0x4f,0x6a,0x26,0x06,0x57,0x7d,0x03,0x03,
- 0xfa,0x06,0x86,0x9f,0xbe,0x2b,0xd9,0x5e,0x41,0x6c,0xe9,0x92,0xa5,0x99,0x74,0x3a,
- 0xb8,0x68,0xf0,0x9e,0x19,0x9f,0xa0,0x86,0x48,0x74,0x01,0xc1,0x2e,0x02,0x36,0xae,
- 0xa7,0x6f,0x38,0x32,0x3a,0x36,0x3c,0x3c,0x3a,0x3a,0x36,0x3e,0x6b,0xcb,0x7d,0x03,
- 0xfd,0xdb,0xb6,0xcd,0x92,0xd6,0xaa,0xac,0xac,0x5c,0x54,0x5c,0x6c,0x69,0x63,0x1f,
- 0x7e,0xf5,0x5a,0x59,0x45,0x75,0xdb,0x53,0x0e,0x05,0xfe,0x82,0xb1,0xab,0x85,0x95,
- 0xf5,0x1c,0x5d,0xb7,0x9d,0x3b,0x77,0x15,0x14,0x17,0xd9,0x3b,0x3a,0x45,0x46,0xc5,
- 0x81,0x11,0xd7,0xd3,0x6e,0xd6,0x8b,0x17,0x7c,0xb3,0x08,0x81,0x1d,0x3b,0x76,0x82,
- 0xa7,0x05,0x30,0x8c,0xb7,0xb6,0xb1,0x65,0x73,0xfa,0x59,0xec,0xbe,0xe1,0x91,0x51,
- 0x0a,0xd9,0xed,0x57,0x58,0xe8,0x02,0x18,0xeb,0xaa,0x1e,0x14,0xd4,0x15,0x36,0x47,
- 0xf6,0xc1,0x87,0x0b,0xc4,0xf6,0x7a,0x40,0x38,0x40,0x62,0xcb,0x18,0x71,0x23,0xd2,
- 0x5d,0x91,0xd3,0x15,0x5f,0x30,0xc5,0xbd,0xc7,0x08,0x6e,0x48,0x04,0x16,0xa6,0xdc,
- 0x92,0xd5,0xa2,0x88,0xf5,0x44,0x84,0x12,0x11,0x5c,0x4d,0x82,0x36,0xdc,0x23,0x4d,
- 0xae,0xa1,0x80,0xef,0x6b,0x4c,0x94,0x3f,0x80,0x65,0x1a,0x70,0xa1,0x2d,0xae,0xf3,
- 0x19,0x92,0x71,0x44,0xc3,0xf1,0x04,0x5b,0x8c,0x81,0x62,0x75,0x00,0x01,0x4c,0xcb,
- 0x18,0x61,0x71,0xd4,0x46,0x88,0xb3,0xf7,0x10,0x6e,0x61,0xe4,0x73,0x96,0xc1,0x0c,
- 0x2f,0x1a,0xc8,0x2d,0x20,0x28,0x8b,0x44,0x38,0x4d,0x7a,0xe4,0x8c,0x9e,0x72,0x57,
- 0xe2,0x83,0x01,0xe2,0x94,0x51,0xd5,0x09,0x54,0xa6,0x10,0xed,0x02,0xa3,0xce,0xf0,
- 0x88,0x2f,0x0e,0x5e,0x39,0x82,0x48,0xfe,0x35,0xc3,0x89,0xbc,0x9c,0x29,0x87,0x7b,
- 0x25,0x51,0x91,0x47,0x7c,0x24,0x40,0x33,0xea,0x06,0x64,0x59,0xc1,0xb8,0x83,0x76,
- 0xa9,0x53,0x56,0xbf,0x19,0x40,0xb0,0xec,0x85,0x7a,0x05,0x2d,0x40,0x81,0xcb,0xe5,
- 0x4f,0x30,0xa5,0x0f,0x27,0x48,0x1e,0x0c,0x97,0xd8,0xef,0x9b,0x94,0x77,0xf7,0xdd,
- 0x03,0xab,0x80,0xc6,0x62,0xb3,0xd4,0x8f,0x68,0x7c,0xaf,0xbc,0x6d,0xbf,0x8a,0xda,
- 0xd1,0xe3,0x7f,0x5c,0xd4,0xbf,0x64,0x6d,0xe7,0xe8,0xe6,0xed,0x17,0x10,0x1c,0x1e,
- 0x72,0xe5,0x6a,0x70,0x68,0x24,0x80,0x60,0x47,0x37,0x1f,0x13,0x33,0xab,0x0b,0x3a,
- 0x7a,0x00,0xa0,0x7f,0xfe,0x45,0x15,0x6c,0xbc,0xe9,0x2b,0xa5,0x75,0x6b,0x15,0x25,
- 0x24,0x24,0xc5,0x57,0xae,0x14,0x16,0x11,0x5d,0xb6,0x6c,0xf9,0xd2,0x25,0x50,0x0e,
- 0x1a,0x69,0x71,0x00,0xf8,0x40,0xb1,0xa9,0xaf,0x1b,0x88,0xb5,0x59,0xe9,0x9b,0xbc,
- 0xc2,0x02,0x07,0x27,0xd7,0xd0,0x2b,0xd7,0x0a,0x4b,0xaa,0x3b,0xba,0xa8,0x32,0x2e,
- 0x81,0x5d,0x32,0x36,0x11,0x90,0x5c,0x83,0xbe,0x15,0x16,0x15,0x81,0xe7,0x58,0xc0,
- 0xcb,0x52,0x54,0x5c,0x3a,0x5d,0x64,0x0f,0x7a,0x86,0xb3,0x19,0x11,0x51,0xb1,0xa9,
- 0x19,0x39,0xf7,0xea,0x1e,0x43,0xda,0x32,0x23,0x37,0xff,0xfb,0xd5,0xb3,0x67,0x2f,
- 0xee,0xde,0xbb,0xa7,0xa0,0xb0,0xf6,0x8d,0x1f,0x67,0x1a,0x4d,0xae,0xa8,0xac,0xd4,
- 0xc6,0xc1,0xd1,0xd8,0xd4,0xc2,0x27,0x10,0x16,0x95,0x6b,0x68,0x6a,0xc3,0x54,0x0a,
- 0x67,0xd2,0xe2,0x18,0x1f,0x3b,0x73,0x56,0x93,0xe7,0x52,0x2c,0x5f,0x26,0x94,0x94,
- 0x92,0xea,0xe4,0xea,0xee,0xe1,0xe3,0x97,0x9d,0x93,0xf7,0xb8,0xb1,0x99,0x5a,0x89,
- 0xb7,0xf6,0xce,0x9d,0xb7,0xa8,0xa5,0x0c,0xee,0x01,0x4d,0x4d,0x2d,0x40,0xcc,0x4d,
- 0xcc,0x4c,0xb5,0xb5,0x75,0x74,0x0d,0x8c,0x2c,0x6d,0x1c,0x02,0x83,0x42,0xb3,0x19,
- 0xb9,0xb7,0xef,0xd6,0xb3,0x7a,0x7a,0x46,0x47,0x79,0xe9,0x64,0xdf,0x40,0x1f,0x40,
- 0x6d,0x0a,0x45,0x91,0xb7,0x6b,0xe4,0x9b,0x73,0xc6,0x5b,0x74,0xe1,0x67,0x0b,0x53,
- 0xd2,0xd2,0xa0,0x04,0xb7,0x60,0xd5,0x9c,0x6f,0xdd,0xb9,0x27,0xbc,0x42,0x58,0x90,
- 0x1b,0x1e,0x6c,0x70,0xfa,0xac,0xe6,0x8b,0x57,0x30,0x1c,0x4d,0x90,0xe0,0xcc,0x81,
- 0xbf,0x06,0xf7,0xec,0xdd,0x37,0xcb,0xb3,0xb3,0x59,0xe9,0x7a,0x61,0x91,0x95,0xad,
- 0x43,0x48,0x68,0x64,0x69,0x59,0x25,0x18,0xe4,0x50,0x04,0x27,0xc0,0x59,0x27,0x67,
- 0x97,0xd7,0xba,0x5c,0x68,0x38,0x0d,0xc6,0x93,0xb3,0x0e,0xd2,0x94,0xbe,0xdd,0x52,
- 0x5a,0x5e,0xee,0xe0,0xe8,0x1c,0x11,0x19,0x53,0x52,0x79,0xab,0xab,0xbb,0x1b,0xd0,
- 0x6d,0x8a,0x11,0xaf,0xa6,0x96,0x36,0x4f,0x9b,0x62,0xa2,0x62,0x95,0x55,0xd5,0xa3,
- 0xb0,0x26,0x16,0x96,0xdc,0x37,0xdb,0x25,0xaa,0xbd,0x75,0x5b,0x5c,0x6c,0xae,0x64,
- 0x58,0x04,0xb4,0x0f,0xfe,0xf3,0x91,0xe8,0x56,0x7d,0xda,0x25,0x7c,0xea,0x56,0x01,
- 0x77,0xa2,0x72,0xeb,0xfb,0x90,0xaa,0x13,0x12,0x11,0x4d,0x72,0x28,0x8a,0x69,0x6a,
- 0x0c,0x15,0x1e,0xda,0xc4,0x55,0x8b,0x22,0x97,0x05,0x44,0x13,0xca,0xe8,0x2b,0x6a,
- 0x84,0x54,0x7f,0xb0,0x87,0x3b,0xdb,0x3b,0x25,0x86,0x0a,0x05,0x3e,0x21,0x57,0x36,
- 0xe1,0x61,0x9e,0xb6,0x2f,0x87,0xbc,0x2f,0x26,0x4a,0xf9,0x94,0x90,0xe1,0x22,0x89,
- 0x65,0xf5,0x4c,0x6f,0x8a,0xe0,0xb9,0x28,0x2a,0x8c,0x38,0x5f,0xbc,0x1b,0xdc,0x08,
- 0xab,0xc9,0x8a,0x8a,0x53,0x7c,0xe3,0xb8,0x8b,0x00,0x46,0x7f,0x71,0x3f,0xe1,0x71,
- 0xc1,0x09,0x9a,0xb1,0x61,0x16,0xb0,0xd9,0x64,0xc4,0x17,0x37,0x27,0x1a,0x45,0x9d,
- 0x75,0x63,0x64,0x99,0x85,0x76,0x91,0x35,0xea,0x56,0x00,0xec,0x1b,0xcd,0x02,0xeb,
- 0x34,0x40,0x0a,0x7c,0xa6,0x4a,0xea,0x44,0x81,0xb4,0x46,0x9a,0x94,0x5a,0x8c,0xa4,
- 0x6a,0x88,0x6f,0xc2,0x8d,0xb9,0x86,0xd1,0x37,0xb6,0xa6,0x96,0x66,0x55,0xd5,0x43,
- 0xca,0x3f,0xec,0x3c,0xa8,0xf6,0xeb,0xc9,0x3f,0xcf,0x18,0x18,0x9b,0xda,0x39,0x7a,
- 0xf8,0x06,0x86,0x00,0x06,0x1a,0x1e,0x95,0x1c,0x19,0x15,0x13,0x14,0x76,0xc5,0xc3,
- 0xc7,0xdf,0xc6,0xd6,0x41,0x57,0xdf,0xe8,0xd8,0x89,0x3f,0x0f,0x1c,0xfc,0x6d,0xfb,
- 0xce,0x3d,0x5f,0x7f,0xb3,0x45,0x51,0x71,0x3d,0xe6,0x82,0x86,0xb3,0xc0,0xcb,0xb1,
- 0xbf,0x45,0x9f,0x2d,0x26,0xbc,0xd0,0xc0,0x20,0x05,0xc6,0x62,0xa1,0x05,0x0f,0xc4,
- 0x52,0x5c,0xb7,0x1e,0x90,0x26,0xf0,0xe4,0x86,0x86,0x47,0x16,0x14,0x97,0x77,0x74,
- 0x76,0x61,0xd2,0x13,0x7c,0x3b,0x7f,0xaf,0xee,0x41,0x42,0x52,0x52,0x7c,0x22,0xb4,
- 0xb8,0x84,0x24,0xb0,0x3c,0xfd,0x13,0xfd,0x9a,0x94,0x92,0xc2,0x62,0xb3,0x05,0xbf,
- 0x2c,0x37,0x6e,0xde,0x5c,0xbd,0x8a,0x37,0x2d,0x11,0x70,0x4c,0x80,0xcb,0xfe,0x81,
- 0xa1,0x59,0xd9,0x79,0x75,0x0f,0x1b,0x07,0x87,0xf8,0x56,0xd4,0x05,0x38,0xef,0x1f,
- 0x10,0x2c,0xb8,0x37,0x72,0xba,0x2d,0x98,0xb7,0xc0,0xc9,0xc5,0x35,0x2a,0x36,0xce,
- 0xd0,0xc4,0xd4,0xdb,0x27,0x20,0x3d,0x2b,0xe7,0x61,0xc3,0x93,0x81,0x81,0xe1,0x19,
- 0xb3,0x54,0xc0,0xeb,0x34,0x20,0x20,0xe8,0x93,0xf9,0x53,0x26,0xac,0x01,0x7f,0x87,
- 0x22,0x0f,0x1e,0x3e,0x6e,0xde,0x97,0x33,0xe9,0xcc,0x47,0x8f,0x9b,0xa1,0x9e,0x27,
- 0x7f,0x28,0xa9,0x7b,0xf8,0xf8,0xed,0x6a,0x29,0x2f,0xfc,0x74,0xa1,0xb1,0x89,0x59,
- 0x16,0x83,0x69,0x68,0x64,0xa2,0xa5,0xad,0x03,0xb8,0xbc,0xb5,0x9d,0x6b,0x50,0xd8,
- 0x55,0x70,0xf5,0xee,0xd7,0x3f,0x62,0xb1,0x39,0xd3,0xc3,0x89,0x9b,0x9a,0x5b,0x0f,
- 0x1f,0x56,0x9f,0xd3,0x58,0x2c,0x70,0x43,0xaa,0x1e,0x3c,0x18,0x7e,0x25,0x22,0xec,
- 0x4a,0x44,0xc4,0xb5,0xa8,0x6b,0x51,0x31,0x71,0xf1,0x49,0xb1,0xf1,0x09,0xb1,0xf1,
- 0xbc,0x37,0x12,0xb8,0x67,0xda,0x3b,0x5f,0x63,0xe6,0xe8,0xaf,0xa1,0xe1,0x8c,0xac,
- 0x2c,0xac,0x91,0x64,0xa2,0x11,0xd4,0x26,0x4f,0xcb,0xf1,0x89,0x89,0xd5,0x35,0x35,
- 0xaf,0xd1,0xf2,0xf0,0xd0,0x21,0xb5,0xdf,0xa8,0x2f,0xcb,0x17,0x5f,0x6c,0xc8,0x2b,
- 0x28,0xb6,0xc6,0xf0,0xb7,0xa8,0xa4,0xb2,0x1d,0x3c,0x3b,0x94,0xd1,0x62,0x8f,0x1e,
- 0x37,0x50,0x77,0x92,0xe7,0x33,0x26,0x2e,0x11,0x74,0x1b,0x9c,0x5a,0x54,0x4c,0x8c,
- 0x8a,0xea,0x41,0x8a,0x9e,0xac,0x5f,0xff,0x45,0x49,0x79,0xa5,0xbd,0x93,0xeb,0x95,
- 0x88,0x98,0xd2,0x8a,0xea,0xce,0xae,0x59,0xe2,0xc6,0x2d,0x2c,0xad,0x84,0x85,0x84,
- 0x85,0x96,0x09,0x2d,0x5f,0x0a,0x0d,0x2c,0xa8,0xa8,0x1c,0x18,0x1e,0x85,0xfa,0xd5,
- 0x02,0x95,0xd2,0x7e,0xf9,0xdc,0xc3,0xd3,0x6b,0xfe,0xbc,0x05,0x73,0x77,0xcf,0x08,
- 0x62,0xe0,0xbf,0x23,0xbc,0xf1,0x98,0x8c,0x41,0x3b,0x21,0x22,0x21,0x3b,0xa9,0x53,
- 0xd1,0x4b,0x8e,0x74,0x22,0x18,0x2e,0x16,0xbc,0x44,0x44,0x67,0x71,0x48,0x9b,0x71,
- 0xb8,0x14,0xb5,0x97,0xf8,0x95,0x87,0x0e,0x73,0xb3,0x75,0x7a,0x70,0xa1,0x2d,0xae,
- 0xba,0x32,0x62,0x9a,0xe8,0x57,0x8c,0x4b,0x4e,0x1e,0x14,0x65,0x39,0x91,0xa9,0x37,
- 0x16,0x8b,0xd5,0x87,0x0a,0x1f,0x20,0xfa,0x89,0xb8,0x27,0x0d,0x5b,0xa6,0x99,0x90,
- 0x98,0x26,0xc6,0xe5,0xd1,0x36,0x18,0x4b,0x7d,0x8a,0xf6,0xc5,0x17,0xb8,0xdb,0xa0,
- 0x35,0xc4,0x32,0xbe,0x06,0xf3,0x1b,0x13,0xed,0x13,0x5e,0x71,0xb4,0x25,0xf1,0x2b,
- 0xb1,0x0d,0x8d,0xfb,0x15,0x73,0x35,0xa3,0xa0,0x2f,0x8e,0x2c,0x51,0x2b,0x0a,0xa7,
- 0xcc,0x78,0x4f,0x50,0xa5,0xa4,0xb5,0x26,0x2c,0x39,0xc3,0x0e,0x19,0xfd,0x56,0x48,
- 0x81,0xcf,0xdf,0x97,0xd5,0xbc,0x21,0x75,0xaa,0x58,0xee,0xf7,0x2c,0xa9,0x5f,0x63,
- 0xa5,0x0e,0x85,0x39,0x84,0x96,0x08,0x38,0x84,0x7e,0xf7,0x76,0xef,0xc1,0xfd,0x7d,
- 0xfb,0x7e,0xde,0xbe,0x63,0xb7,0x8a,0x9a,0xc6,0xd9,0x73,0x17,0x4c,0xcd,0x2c,0x9d,
- 0x3d,0x2f,0x07,0x85,0x46,0x5c,0x8b,0x4e,0x88,0x4f,0x4c,0x8b,0x8e,0x4d,0x0a,0x89,
- 0x48,0xf2,0x0b,0x0c,0xb1,0x73,0xf2,0x34,0x32,0x35,0x3f,0x7d,0x4e,0x5b,0xed,0xb7,
- 0x23,0x7b,0xf6,0xa9,0x6c,0xf9,0x6e,0xdb,0xc6,0x8d,0x9b,0xe4,0xe4,0xe4,0x24,0x24,
- 0xa4,0xc4,0x57,0xae,0x16,0x16,0x11,0x01,0xf8,0xbb,0x74,0xe9,0xd2,0x45,0x0b,0x17,
- 0x01,0xd6,0x80,0xf0,0x17,0xcf,0xe2,0xc4,0xe4,0x28,0x67,0x7c,0x75,0x20,0xbd,0x0e,
- 0xf2,0x1a,0x69,0x29,0x19,0xe6,0xf5,0x3c,0x7b,0x47,0x37,0xff,0x90,0xf0,0xeb,0x85,
- 0x65,0xcd,0x2d,0x1d,0xa3,0x63,0x54,0xba,0xf4,0x73,0x78,0x59,0xee,0xdf,0x93,0x94,
- 0x90,0xe2,0xe9,0xf0,0x81,0x03,0xaa,0xf9,0x85,0x45,0x97,0xfd,0x42,0x32,0x19,0xcc,
- 0xba,0x47,0x18,0xfe,0x42,0x38,0x9c,0x61,0x77,0xb0,0x52,0xe3,0xd8,0xd1,0x7f,0x88,
- 0x23,0xbb,0x76,0xed,0x2e,0x2c,0x2e,0x36,0xb7,0xb2,0x76,0x73,0xf7,0x4a,0x4d,0xcf,
- 0x7e,0x50,0xf7,0xa4,0x7f,0x60,0x80,0xdf,0xb4,0x75,0x6e,0x5e,0x01,0x8f,0xc3,0x1c,
- 0xd6,0xb3,0x08,0x0b,0xf7,0xf4,0xb9,0xec,0xee,0xe5,0x9b,0x96,0xc1,0x78,0xd8,0xd0,
- 0xd4,0x3f,0x40,0x85,0xbf,0x2d,0x6d,0xed,0x0b,0x3f,0x7b,0xcb,0x5a,0x16,0xa0,0x4b,
- 0x7e,0x01,0x01,0x19,0xd9,0x0c,0x2d,0x2d,0x6d,0xc0,0x82,0xf5,0x0d,0x4d,0x9d,0x9c,
- 0xdd,0x43,0xc3,0xa3,0xf3,0x0b,0x8b,0x1f,0x3e,0x6a,0xec,0xeb,0x1f,0x00,0xcc,0x68,
- 0xca,0x5c,0xf0,0xdf,0xaf,0x1a,0x9b,0x9a,0xbf,0xd8,0xb0,0x69,0xee,0x54,0x14,0xc0,
- 0x3d,0x69,0x63,0x6b,0x47,0x67,0x30,0x63,0xe2,0x92,0x8b,0x4b,0xcb,0x9e,0x34,0xc2,
- 0x24,0x32,0x01,0x5f,0xf5,0xef,0xcb,0x46,0xc6,0x46,0x8e,0x1d,0xff,0x9d,0xfa,0x76,
- 0xa2,0xc9,0xca,0xe7,0x15,0x14,0x5a,0x58,0xd9,0xc2,0x70,0xf7,0xa2,0xb2,0xb6,0x0e,
- 0x88,0xbf,0xd4,0xd5,0xa8,0xdf,0xcc,0x00,0x65,0x77,0x73,0xf7,0xa4,0xe8,0x09,0x78,
- 0x8a,0xcb,0x2a,0xaa,0x9c,0x5c,0xdc,0x42,0xc2,0x23,0xc0,0x42,0x07,0xc2,0x5f,0xfe,
- 0x97,0xb7,0xbe,0xfe,0x51,0x36,0x83,0x41,0xcf,0xce,0xce,0xa4,0x67,0xa7,0x67,0x64,
- 0x83,0x85,0xbb,0x77,0x1f,0x08,0xde,0x9f,0xfe,0xc1,0x81,0x5d,0xbb,0x67,0x71,0x0e,
- 0xbc,0x1b,0x5b,0x4a,0xdb,0x27,0x63,0x88,0x87,0x40,0x4f,0x82,0x2c,0xc6,0xf5,0xd6,
- 0xa2,0x60,0x24,0x2c,0x1d,0x18,0xaa,0x53,0x1a,0xb3,0x71,0x89,0x27,0xf2,0xf4,0x28,
- 0xb7,0x3a,0xf0,0xd4,0x68,0xe7,0x29,0xc2,0x17,0x44,0xd1,0x40,0x9c,0x87,0x72,0xdd,
- 0xd4,0xdc,0x5f,0x67,0x98,0x78,0xc5,0x8a,0x15,0x62,0x32,0x20,0xc6,0x4f,0x09,0xb0,
- 0x46,0x81,0x4c,0xe0,0x13,0xcd,0xb4,0xe2,0xb0,0x88,0x4f,0xbc,0x42,0x62,0x8e,0x60,
- 0x51,0x1e,0xd5,0x24,0x32,0x65,0x13,0xf4,0x13,0x6d,0x4c,0xb4,0x80,0x16,0x10,0x4a,
- 0x12,0x4d,0x11,0xa8,0x8a,0x3e,0x27,0x27,0x6d,0x49,0x6b,0x78,0x0c,0xb5,0xcc,0xd5,
- 0xee,0xe8,0x25,0x0e,0x84,0x0b,0x98,0x60,0x61,0xcf,0xe8,0x58,0xe8,0x40,0xeb,0xcc,
- 0xf1,0x91,0x83,0xa2,0x39,0x5b,0xc1,0xb8,0x53,0xd6,0x88,0x25,0x67,0xd4,0x0d,0x07,
- 0x3f,0xfa,0xcd,0x34,0x9d,0x07,0xb2,0x17,0xee,0xc9,0x9c,0xae,0x94,0x3f,0xc1,0x90,
- 0x3e,0x92,0x22,0xa5,0x16,0xa9,0xef,0xc9,0x9c,0x78,0x4e,0x35,0x85,0xf1,0x1e,0xad,
- 0xbc,0xa2,0xea,0xc7,0x5d,0x7b,0x76,0xed,0xde,0xa3,0xae,0x71,0xfc,0x9c,0x96,0x8e,
- 0x85,0x8d,0xab,0x87,0x4f,0x50,0xc4,0xb5,0xf8,0x84,0xa4,0x94,0xd4,0x8c,0xcc,0x94,
- 0x74,0x7a,0x5c,0x42,0x5a,0xd8,0x95,0x48,0x57,0x4f,0x7f,0x2b,0x1b,0x7b,0xed,0xf3,
- 0xba,0xc7,0x8e,0x9f,0xdc,0xaf,0x72,0x68,0xdb,0xf6,0x1d,0x4a,0x5f,0x7f,0xa3,0xa8,
- 0xa8,0x28,0x2d,0x2d,0xb3,0xfa,0xf3,0x35,0x80,0x02,0x43,0x39,0xca,0xe5,0x42,0x4b,
- 0x16,0xe3,0x10,0x0c,0xd3,0x81,0x31,0xf1,0x04,0xa2,0x34,0x30,0xbf,0xb4,0x7d,0xf2,
- 0xfa,0xd5,0xab,0xd7,0x64,0xe7,0x31,0x9d,0x5c,0x3d,0x82,0x42,0xae,0x5e,0x2f,0x28,
- 0x69,0x69,0x83,0x29,0x33,0xef,0xe5,0xc5,0x58,0x57,0xd7,0x20,0x2f,0xa7,0xc0,0xd3,
- 0x55,0x4d,0x2d,0xad,0x0c,0x3a,0xdd,0xe7,0x72,0x20,0x9d,0x71,0xfd,0xe1,0xa3,0x66,
- 0x7e,0xde,0x60,0x60,0x63,0xe3,0x63,0xeb,0x15,0x37,0xfe,0xc3,0xc7,0x59,0x78,0x85,
- 0x08,0x83,0x79,0xdd,0xdd,0xcb,0xdb,0xd5,0xc3,0x37,0x29,0x2d,0xe3,0xee,0xfd,0x86,
- 0xbe,0xfe,0x21,0x7e,0x12,0x7c,0x0f,0x1b,0x1e,0xf1,0x54,0xa3,0x58,0x30,0x7f,0x81,
- 0x9f,0x7f,0x80,0x7f,0x60,0xb0,0x93,0x9b,0x6f,0x6a,0x7a,0xd6,0x83,0xfa,0xc7,0x30,
- 0x13,0x93,0x7f,0xed,0x54,0x36,0x87,0xb3,0x42,0x44,0xa0,0x7a,0x52,0xaf,0x65,0x2b,
- 0x84,0x84,0x43,0x42,0xc3,0x12,0x92,0x92,0x2f,0xea,0xea,0x69,0x9f,0xbf,0x68,0x70,
- 0xc9,0xd4,0xde,0xd1,0x25,0x32,0x2a,0x36,0xb7,0xa0,0xac,0xfe,0x51,0x53,0x5f,0x3f,
- 0x0c,0x2a,0xe6,0x81,0x89,0x1b,0xb5,0xb7,0x36,0x7f,0x35,0x4b,0xb8,0xd1,0x1b,0x1b,
- 0xb8,0x27,0x0d,0x2f,0x19,0x5d,0x8b,0x8e,0x73,0x74,0x70,0x4b,0x4c,0x4a,0xbb,0x75,
- 0x17,0x16,0x83,0x9e,0x78,0xfe,0xaf,0xc6,0xdf,0xb1,0x67,0x63,0x9a,0x9a,0x5a,0xd4,
- 0x63,0x12,0x49,0x09,0xc9,0xbc,0xfc,0x7c,0x2b,0x1b,0x27,0x30,0x5a,0x66,0xe6,0x17,
- 0x37,0xb7,0x76,0x0e,0x53,0x56,0x2b,0x78,0x63,0x03,0xff,0xab,0xc0,0x40,0xaa,0x7a,
- 0x88,0xab,0x56,0xae,0xba,0x71,0xeb,0x16,0xe0,0xbf,0x60,0x18,0x5f,0x58,0x5c,0xd1,
- 0xde,0xd9,0x39,0x32,0xf2,0x6c,0xee,0x2e,0x2f,0xc0,0x5f,0x13,0x33,0x0b,0x30,0x5a,
- 0x7e,0xef,0x29,0x6c,0x8b,0x25,0x95,0x65,0x75,0x1b,0xf0,0x08,0x2b,0x0c,0xcb,0x28,
- 0x10,0x87,0x07,0xa7,0xc8,0xd0,0xc6,0xb3,0x2f,0x4f,0x0b,0xc4,0xaf,0xe4,0x16,0x08,
- 0x40,0x24,0x35,0x38,0xf9,0x15,0x41,0x2a,0xce,0x8e,0xd1,0xaf,0xe6,0x7d,0x64,0xbf,
- 0x2e,0xc2,0x32,0x1a,0xce,0x3a,0x39,0x88,0xdb,0x12,0x08,0x4b,0x6e,0x50,0x6e,0x2a,
- 0x22,0x4f,0x3f,0x3b,0x9e,0x35,0x33,0x62,0x37,0x3a,0x05,0xd4,0x14,0x1a,0x18,0x90,
- 0x8f,0x8b,0x3a,0xa6,0x68,0x4e,0x56,0xc5,0xe4,0xe0,0x40,0x8f,0x45,0x41,0xc3,0x65,
- 0x33,0xac,0x4b,0xdc,0x88,0xe8,0xf5,0xa6,0x9d,0x00,0x7f,0xe5,0x2e,0xb5,0x29,0x1a,
- 0x37,0x02,0x0a,0x4c,0xd3,0xae,0xa5,0x69,0xdd,0xa0,0x9d,0x2a,0x92,0x3b,0x9e,0x2a,
- 0xfd,0x5b,0xfc,0x1f,0x36,0xcc,0x21,0xfe,0xd2,0x43,0xef,0xd7,0xe8,0x74,0xc6,0xb6,
- 0x1f,0xb6,0xef,0xde,0xf3,0xf3,0x91,0xa3,0xc7,0xcf,0xeb,0xe8,0xd9,0xd9,0xbb,0xfa,
- 0xf9,0x07,0xc7,0xc4,0x25,0x24,0xa7,0x65,0xa7,0xd1,0x73,0x33,0xb3,0x99,0xc9,0x69,
- 0x59,0xd1,0xb1,0xf1,0x7e,0x01,0xc1,0x8e,0xce,0x1e,0x7a,0xfa,0x46,0x27,0x4e,0x9e,
- 0x39,0xf4,0xdf,0xff,0xed,0xdc,0xb5,0xef,0xbb,0xef,0x95,0x37,0x6c,0xd8,0x20,0x2f,
- 0x2f,0x2f,0x21,0x29,0x29,0xbe,0x6a,0xa5,0xb0,0xb0,0xd8,0xf2,0xe5,0x30,0x17,0x09,
- 0x40,0x30,0x51,0x17,0x78,0xc1,0xbc,0x05,0x28,0x16,0x9a,0x78,0x34,0x90,0x3b,0x9a,
- 0xdf,0x0d,0x2c,0x22,0x22,0xca,0xc8,0x65,0xba,0xba,0x7b,0xf9,0x07,0x87,0x33,0xf3,
- 0x8a,0x9b,0x5a,0xdb,0x28,0xea,0xfa,0xf1,0x7d,0x3f,0xfc,0xcd,0xf7,0xab,0xe0,0x4d,
- 0x35,0x36,0x37,0x6f,0xd8,0xc0,0x0b,0xa0,0xc6,0x66,0x66,0xf1,0x49,0xc9,0x1e,0x5e,
- 0x97,0xc1,0x65,0xa9,0x7b,0xd8,0xf8,0xd7,0xd0,0x10,0xbf,0x12,0xf3,0x00,0xcb,0x44,
- 0x66,0x13,0x2c,0x9a,0xd5,0x3e,0xfc,0xe0,0xc3,0x90,0xf0,0xf0,0xb0,0x88,0xab,0x6e,
- 0x9e,0xbe,0x49,0xa9,0x19,0x0f,0xea,0x1a,0xb0,0x88,0xaf,0x99,0x3b,0xdc,0xf9,0xb4,
- 0x5b,0x7e,0xea,0x74,0xf3,0xfc,0x8f,0xe7,0xbb,0x7b,0x7a,0x05,0x87,0x86,0xbb,0xba,
- 0x79,0xa6,0xa4,0x65,0x23,0x25,0x40,0x8a,0x50,0x9f,0xfe,0xc1,0xa1,0x55,0xb3,0x89,
- 0x3c,0xbc,0x81,0x81,0x7f,0xf7,0x9a,0x35,0x6b,0xd2,0x33,0x33,0xaf,0x46,0x44,0x9e,
- 0xbf,0xa0,0xa3,0xad,0x63,0x70,0xc9,0xc4,0xcc,0xc5,0xdd,0x07,0x20,0x60,0x71,0x69,
- 0xe5,0x93,0xa6,0x56,0x70,0x5c,0x9e,0x2c,0x33,0x30,0xc6,0xc8,0x61,0x5e,0x97,0x94,
- 0x94,0x9e,0x8b,0x37,0x2a,0xb8,0xaa,0xba,0xba,0xba,0xb1,0x09,0x49,0xf6,0x8e,0xae,
- 0x09,0x89,0x29,0x50,0x66,0xad,0xb7,0x0f,0x0a,0x44,0xfc,0x8b,0xf1,0x77,0x7c,0xe2,
- 0x99,0xbe,0xe1,0x25,0xea,0x69,0x65,0x30,0x76,0xa5,0xe7,0xe6,0xd8,0xda,0x3b,0x5d,
- 0xf6,0x0b,0x66,0x5e,0x07,0xf8,0xdb,0x41,0x5d,0xf8,0xfe,0x9f,0x3c,0x4a,0x31,0xb1,
- 0x71,0x14,0x3d,0x59,0x26,0xb4,0xac,0xa2,0xaa,0x1a,0xf0,0xdf,0x40,0x8c,0x89,0xb7,
- 0xb4,0x75,0x8d,0x8d,0xcf,0x21,0xfe,0xbe,0x82,0xfe,0x81,0xd1,0x92,0xd2,0x32,0x0d,
- 0x8d,0xe3,0xef,0x37,0x7e,0xef,0x33,0x71,0x25,0xe9,0x8b,0x4f,0x68,0xa6,0xc4,0xb4,
- 0x26,0x0b,0x39,0x54,0xc9,0xf4,0x90,0x0c,0xa9,0x44,0x40,0x2f,0xe1,0x80,0x05,0x6b,
- 0x90,0x03,0x96,0xfc,0x2b,0x0d,0x6b,0x0a,0xed,0xcb,0xf3,0x2b,0xfa,0x44,0xbf,0x12,
- 0x3e,0x5b,0x2e,0x9e,0x72,0xc8,0x8d,0x23,0x6f,0x2d,0xee,0xb3,0xc5,0x42,0x9b,0xd6,
- 0xc2,0xa8,0xe9,0x49,0x1c,0x24,0x6f,0x40,0x84,0x39,0xe1,0x94,0xd6,0xa4,0x77,0x7a,
- 0x83,0xe4,0xce,0xa3,0x8e,0x11,0xfd,0x21,0x9f,0xaf,0x1c,0x4c,0xda,0x9d,0xe2,0x43,
- 0x26,0x63,0x34,0xd9,0xf9,0xcc,0xf5,0x6c,0x73,0x85,0xa3,0xd1,0x57,0xe3,0x0e,0xec,
- 0xc4,0xf1,0xa6,0x68,0x66,0x7d,0xeb,0xcc,0x61,0xaf,0xd6,0x9a,0xf7,0x82,0x21,0x84,
- 0xbc,0x59,0xaf,0xa2,0x05,0x5c,0x09,0xeb,0x23,0x1b,0xb3,0xd7,0x9b,0x76,0xc9,0x1b,
- 0x36,0x29,0x18,0x36,0xd2,0x74,0xea,0xe4,0xb4,0x6e,0xc8,0x9e,0x2a,0x92,0xff,0x23,
- 0x5b,0x46,0x3d,0xe6,0xb0,0x69,0x16,0xbb,0xff,0x5f,0x5a,0x88,0x30,0x3a,0x36,0x0e,
- 0x20,0xe9,0x9e,0x7d,0x07,0x8e,0x1e,0x3f,0xa9,0xab,0x67,0xe8,0xe2,0xe6,0x1d,0x14,
- 0x7a,0x35,0x3e,0x31,0x35,0x8b,0xc1,0xcc,0xcb,0x2f,0xca,0xbd,0x5e,0x98,0x95,0x9d,
- 0x97,0x90,0x94,0x1e,0x76,0xf5,0x9a,0x87,0xcf,0x65,0x13,0x73,0x2b,0x40,0x61,0xd4,
- 0x8f,0x1c,0xff,0x69,0xff,0xc1,0x1f,0x76,0xec,0xfa,0x6a,0xb3,0x12,0xd4,0xc2,0x92,
- 0x91,0x41,0xb9,0xc0,0x22,0x22,0x50,0x0e,0x0b,0xab,0x0b,0x8c,0x4f,0x04,0xa3,0xa4,
- 0x60,0x48,0x81,0xb1,0xbc,0xe0,0x59,0x5f,0xa7,0x4b,0x96,0x2e,0xc9,0x62,0x30,0xdc,
- 0x3d,0x7d,0x00,0xdc,0x33,0x73,0x8b,0x1e,0x37,0xb6,0x50,0x70,0x4c,0xbe,0x2f,0x8d,
- 0x57,0x5c,0xfb,0xfb,0x15,0x2a,0x3e,0x4b,0x54,0xb1,0x17,0xdc,0x95,0x0d,0x06,0xed,
- 0xdf,0x7c,0xcd,0x2b,0x0b,0xe0,0xe8,0xe2,0x1a,0x11,0x15,0xed,0xee,0xe1,0x93,0x96,
- 0x09,0xe3,0xaf,0xa0,0xb0,0x3c,0x1f,0x3a,0xd9,0xd8,0xdc,0xb2,0x78,0xd1,0x5b,0xf0,
- 0xe5,0x9a,0x9a,0x59,0x00,0xe6,0xeb,0xe9,0xed,0x97,0x96,0x99,0x5d,0xf7,0xb0,0x61,
- 0x70,0x90,0x6f,0xa1,0x43,0xc0,0x02,0xbe,0x56,0xfa,0x86,0xbc,0xef,0x47,0x1f,0x7e,
- 0x64,0x6e,0x61,0x19,0x19,0x1d,0xeb,0xe2,0xe6,0x9e,0x9c,0x9a,0x8e,0x2b,0x01,0xf2,
- 0xaf,0x7a,0x3c,0x34,0x32,0x2c,0x2d,0x25,0x68,0x3d,0x8b,0xd7,0xb5,0x0d,0x1b,0xbf,
- 0x64,0x30,0x19,0xfe,0xfe,0x01,0xe7,0x2f,0xe8,0x6a,0x5f,0xb8,0x68,0x66,0x61,0xeb,
- 0xe6,0xe1,0x1b,0x13,0x97,0x5c,0x51,0x79,0xa3,0xb1,0xb9,0x63,0x68,0x78,0x78,0xe2,
- 0xf9,0x14,0x69,0xac,0xe7,0x2f,0x9f,0xc7,0x27,0x26,0x8b,0x89,0x89,0xbf,0xf5,0x9e,
- 0x80,0xfb,0xf0,0xcc,0xd9,0xb3,0xc9,0x69,0xa9,0xb6,0x8e,0x6e,0xb1,0xf1,0x29,0x50,
- 0x58,0x83,0xc3,0x41,0x89,0x5d,0x2f,0x61,0xb1,0x8f,0x97,0xe4,0x3b,0x87,0x2c,0xdc,
- 0xf4,0xba,0xb7,0x10,0xb1,0x31,0x6a,0x84,0xbc,0x3b,0x58,0x43,0x21,0x09,0x35,0xdd,
- 0xc0,0xf8,0xc4,0xcc,0xd2,0x92,0x5a,0xdc,0x43,0x4c,0x44,0x2c,0x3d,0x33,0xcb,0x01,
- 0x0b,0x77,0x67,0xe6,0x15,0x82,0x3b,0x70,0x68,0x78,0x54,0x90,0xe0,0x25,0x68,0x7f,
- 0x73,0x4f,0x19,0x15,0x6b,0xe6,0xf3,0xe0,0x10,0x9f,0x19,0x0c,0x3a,0x45,0x4f,0xc0,
- 0x9d,0x5f,0x54,0x5a,0xe6,0xea,0xe1,0x1d,0x18,0x1c,0xc6,0x28,0x28,0x7b,0xdc,0xdc,
- 0x3e,0x3a,0xf6,0xda,0x23,0x81,0xc9,0x6e,0x10,0xbd,0x42,0xeb,0xf9,0x9f,0x11,0xb8,
- 0x81,0x5d,0x5d,0xdd,0xc8,0x65,0x31,0xdf,0xb1,0x7d,0x2a,0xfa,0x85,0xb4,0x4e,0xbd,
- 0x82,0x19,0xcc,0xb2,0x21,0x26,0x34,0x91,0xdf,0x95,0xc2,0x90,0xee,0x13,0xd9,0x13,
- 0x8b,0xf6,0x15,0xe4,0x2b,0x4f,0x3b,0x3c,0x9f,0xb2,0xfc,0x43,0x9b,0x66,0xdc,0x1d,
- 0x83,0x63,0x36,0x79,0x47,0xfc,0x14,0x4c,0xba,0x79,0x8e,0x32,0xfd,0x2b,0xcf,0xfa,
- 0x29,0x46,0x88,0x45,0xff,0x9f,0xb9,0xeb,0x8e,0x8a,0xea,0xd8,0xff,0xff,0xc4,0xbc,
- 0xf7,0xce,0xcf,0x34,0x35,0x46,0x23,0x79,0xb1,0x25,0x20,0x6d,0x45,0xd0,0x24,0x26,
- 0xcf,0x18,0x93,0x98,0x68,0x62,0x34,0x9a,0x44,0x93,0x97,0x97,0x58,0xd2,0x5e,0x0c,
- 0x28,0xbd,0x6c,0x01,0xa4,0x77,0x56,0xfa,0xc2,0xd2,0x11,0x29,0x02,0x22,0xd2,0x61,
- 0xc1,0x65,0x97,0x2e,0x20,0x45,0x10,0xa5,0xee,0x2e,0x2c,0x4b,0x57,0x9a,0x9a,0x73,
- 0x7e,0xdf,0x99,0xb9,0x7b,0x25,0xab,0xbb,0x26,0xb1,0xe4,0x9d,0xf3,0x3d,0xf7,0xdc,
- 0x32,0x77,0x66,0xee,0xdc,0xef,0xcc,0x67,0x3e,0x33,0xdf,0xf9,0xce,0x9d,0xed,0x21,
- 0xe6,0x6d,0x18,0xa1,0x7c,0x3a,0x3f,0x93,0xda,0xf4,0xd6,0x8d,0xe8,0x3e,0x12,0x1d,
- 0xea,0x04,0xa1,0xad,0x1e,0xeb,0xce,0x77,0x91,0xa7,0xfa,0x4c,0x62,0xdf,0xd5,0xaf,
- 0x67,0xdb,0x03,0xf8,0xab,0x6b,0xd9,0xa1,0x67,0x56,0xaf,0xfb,0xd3,0x05,0xdd,0x23,
- 0x05,0xaf,0xfc,0x3b,0x6d,0x87,0x65,0x56,0x8f,0x74,0xf8,0x8f,0x6a,0xe0,0xe3,0x91,
- 0xa8,0xe8,0xd8,0xb7,0xb6,0xbc,0xb3,0xe3,0xa3,0x4f,0xbe,0x3d,0xf8,0xbd,0x95,0xb5,
- 0x9d,0xa7,0x4f,0x60,0x54,0x4c,0x62,0x6a,0xc6,0xf9,0xfc,0xc2,0x92,0xe2,0x52,0x91,
- 0xa0,0x5c,0x58,0x50,0x24,0xc8,0x3a,0x97,0x97,0x90,0x94,0x1a,0x14,0xc6,0x3b,0xe1,
- 0xea,0x65,0x6e,0x69,0x77,0xe4,0xbb,0x9f,0x3e,0xdd,0xb7,0xff,0xfd,0x0f,0x3e,0x7a,
- 0x63,0xf3,0x9b,0xc6,0xc6,0x26,0x7a,0x7a,0x06,0x40,0x55,0x5e,0x5e,0xb9,0x72,0x85,
- 0x16,0xb5,0x29,0xd2,0xe2,0x45,0x4b,0x9e,0x79,0x8a,0x5a,0x8e,0x44,0xfc,0x62,0xa1,
- 0x7d,0x09,0x9f,0xa4,0x56,0x24,0x69,0x40,0x61,0x78,0x25,0x25,0x3d,0x2d,0x30,0x38,
- 0x28,0x30,0x38,0x02,0xf0,0xbf,0xfd,0x0a,0xda,0x17,0x46,0xc3,0xa6,0x27,0x44,0x00,
- 0x04,0xa1,0xb9,0x9e,0x9e,0x9d,0xbd,0x31,0x3d,0x35,0x35,0x3d,0x3d,0x3d,0x03,0x32,
- 0x03,0xc4,0x19,0x4e,0x66,0x66,0xc9,0xc9,0xcc,0xd4,0xcc,0x34,0x3c,0x25,0x77,0x66,
- 0xd5,0xfb,0x05,0xa2,0x45,0x32,0x20,0xdd,0xf6,0xae,0xea,0x8a,0x0f,0xff,0x40,0x6e,
- 0x4c,0x6c,0xbc,0xa7,0x6f,0x40,0x7a,0xe6,0xb9,0x86,0xa6,0xe6,0x91,0xd1,0x51,0x75,
- 0x2b,0x23,0x5a,0x2f,0x77,0x3c,0x88,0xf1,0x15,0x2d,0x07,0x0f,0x1f,0x86,0x3f,0xc1,
- 0x3d,0x19,0x9a,0x9d,0x83,0x4a,0x63,0x6c,0x62,0x42,0xdd,0xfc,0x2f,0x3c,0xda,0xb2,
- 0x65,0xab,0x0a,0xd0,0x58,0x58,0x5a,0x25,0xa7,0xa4,0x7a,0x7a,0xf9,0x9c,0x4e,0xcd,
- 0xba,0xd8,0xd8,0x2a,0x1f,0x52,0x68,0x18,0x7f,0x86,0x02,0x54,0xe7,0x09,0xf0,0xa1,
- 0xa0,0xde,0x96,0x2d,0x6f,0x17,0x95,0x94,0xf8,0xfa,0x05,0x98,0x9a,0x59,0x1c,0x33,
- 0xb7,0x06,0x08,0xf6,0xe5,0x86,0xa7,0xa4,0x67,0x8a,0x2a,0x6b,0xba,0x7b,0x7b,0xc7,
- 0x27,0xae,0x53,0x83,0x09,0xca,0xd6,0x75,0xe6,0xe6,0x6c,0x70,0x48,0xd8,0xa3,0xd8,
- 0xce,0xe6,0xc0,0x81,0x2f,0x33,0xb2,0xce,0x3a,0xbb,0x78,0xc6,0x25,0x9c,0x2e,0x17,
- 0x56,0xf6,0xf4,0x49,0x46,0x47,0xc7,0xf0,0xc2,0xb4,0x59,0x40,0x8a,0x69,0xac,0x33,
- 0xa0,0x27,0xa0,0x33,0x53,0x48,0x73,0x40,0x69,0x66,0x40,0x09,0xef,0xbb,0x4a,0x88,
- 0x06,0x0e,0x08,0x39,0x3b,0x37,0x0b,0xe5,0x09,0xda,0x88,0xb4,0x6e,0x7a,0x0e,0x62,
- 0xa3,0x74,0x92,0x52,0x48,0xa4,0xa5,0x28,0xfe,0xe9,0x29,0xd4,0xf1,0xd0,0xb8,0x14,
- 0xfd,0x36,0x1e,0x10,0xf0,0xf2,0xf6,0xd5,0x6c,0x19,0xbe,0x74,0xe9,0x0b,0xc8,0xdc,
- 0xdd,0xcb,0x87,0x1b,0x14,0x9e,0x79,0xbe,0xe8,0xca,0xd5,0xfb,0x98,0xbb,0xdf,0x56,
- 0xc2,0x19,0xa8,0x04,0xaa,0x20,0xa8,0x6e,0xa0,0x1a,0x82,0x6a,0x0a,0x14,0xc2,0xcc,
- 0xcc,0x8d,0xa9,0x69,0xba,0x34,0xc8,0x11,0x04,0x4a,0x03,0x3a,0x03,0xc5,0xa5,0x02,
- 0x4d,0x30,0xb4,0xf0,0xa9,0x62,0x41,0x89,0x8f,0x7f,0x60,0x48,0x18,0xbf,0xa8,0x44,
- 0xd0,0x71,0xb5,0x9b,0x18,0x53,0xdd,0x2f,0x27,0xb7,0xe6,0x6e,0x42,0x41,0xcd,0x92,
- 0xf2,0x99,0x42,0x19,0x98,0x82,0xd3,0x69,0x9c,0x1f,0x54,0xaf,0xa1,0x0c,0x71,0x31,
- 0x22,0x1d,0x56,0x03,0xc1,0x10,0x2c,0x35,0x2d,0x7d,0xd5,0xaa,0x35,0x7f,0xc9,0x58,
- 0x34,0xe0,0xaf,0xae,0xf9,0x65,0x6d,0xe2,0xc9,0x59,0x49,0x4b,0xe7,0x13,0x3d,0xfa,
- 0xa8,0x9c,0x69,0x55,0xa8,0xd8,0x29,0xd1,0x4c,0x50,0x85,0x96,0xce,0xe7,0xce,0x77,
- 0x8f,0x4e,0xab,0x30,0x53,0x6d,0xa5,0xb9,0x14,0x0d,0xa0,0xf3,0x58,0x2d,0x35,0xd4,
- 0x8c,0x3c,0x56,0xd9,0x93,0x7d,0x06,0xd1,0x1e,0x82,0xda,0xd8,0x75,0xd5,0x1d,0xd3,
- 0x2c,0x07,0xca,0x19,0x35,0x8e,0x4d,0x41,0x16,0x52,0xad,0x23,0x7b,0x17,0x2a,0xed,
- 0xa0,0x88,0x1f,0xad,0x57,0xe9,0x0d,0x07,0x89,0x7f,0x48,0x07,0xe4,0x80,0x9a,0x5e,
- 0xe8,0x44,0x76,0x4e,0x54,0x82,0xec,0xfc,0x17,0xb1,0x45,0x34,0xd9,0x67,0xc1,0x4e,
- 0x46,0x26,0xaf,0x11,0xc3,0x45,0x8b,0xb3,0x10,0xcf,0x65,0xb0,0x65,0xc4,0xe1,0x06,
- 0x83,0x33,0xa8,0xc7,0x42,0x88,0xac,0xcf,0x06,0x92,0x2b,0xd7,0x67,0x2b,0x0c,0xa1,
- 0xf4,0x00,0x70,0x59,0x0a,0x74,0x07,0xe8,0x30,0x1b,0xc1,0xb1,0x21,0x1b,0x95,0x95,
- 0x9e,0x9d,0x44,0xd7,0x5e,0x6a,0x68,0xdb,0xa9,0x63,0x71,0x45,0xff,0x58,0x83,0xee,
- 0x51,0xb1,0xde,0x0f,0x45,0x8c,0x83,0x99,0xdb,0xcd,0xb3,0xdb,0x7a,0x14,0x8f,0x01,
- 0x4c,0xff,0x84,0x24,0x25,0x9f,0x7e,0x7b,0xeb,0xbb,0x3b,0x77,0xed,0x39,0x7c,0xf8,
- 0x07,0x6b,0x5b,0xa6,0x9f,0x3f,0x97,0x1f,0x97,0x9c,0x79,0xf6,0x7c,0x51,0x49,0x79,
- 0x79,0x45,0x75,0x85,0x48,0x2c,0xb8,0x50,0x95,0x57,0x50,0x92,0x9a,0x9e,0x15,0xc5,
- 0x4f,0xf0,0xf1,0x3d,0x69,0xe7,0xc0,0xf9,0xef,0xcf,0xc7,0x0e,0x7c,0x85,0x28,0xf0,
- 0x96,0xad,0xef,0xe0,0x1d,0x09,0xd7,0xeb,0xe8,0xe8,0xac,0x59,0xb3,0x56,0xeb,0xe5,
- 0x7f,0x22,0x8f,0x58,0x04,0x82,0x17,0xe3,0xe5,0x48,0x4f,0x3d,0x45,0x06,0xa2,0x89,
- 0x53,0x4a,0x72,0xd4,0xb0,0x62,0x08,0x02,0x27,0xa7,0x24,0x03,0xf9,0xe5,0x06,0x85,
- 0x9c,0x3b,0x5f,0x70,0xb9,0xe3,0x2a,0x46,0x1c,0x4d,0xad,0x07,0x34,0x77,0x50,0x61,
- 0xc7,0xc6,0xc7,0x07,0xe5,0x23,0x12,0xe9,0x40,0x9f,0x44,0xde,0xdb,0x27,0xe9,0xed,
- 0x93,0xf5,0x4b,0x64,0x7d,0xfd,0x70,0x1c,0xe8,0xed,0xeb,0xef,0xeb,0x87,0xa3,0x14,
- 0x2e,0x25,0x52,0xb9,0x6c,0x60,0x10,0x78,0x2b,0xd4,0x62,0xcd,0x0d,0xc2,0xe0,0x90,
- 0x7c,0xe7,0x8e,0x5d,0x2a,0xd9,0x0b,0xe0,0x72,0xf9,0x31,0x31,0xae,0x9e,0xde,0xa7,
- 0x52,0x32,0x6a,0xeb,0x9b,0x06,0xe5,0x43,0xea,0xf0,0xf7,0x5a,0x77,0xf7,0x43,0xe1,
- 0xbf,0xfb,0xf7,0x1f,0x28,0x28,0x2a,0x0d,0x8d,0x88,0x2c,0x2c,0xa9,0xc0,0xb3,0xe1,
- 0x6a,0xf6,0xd2,0xfd,0x15,0xed,0xde,0xbb,0xed,0xdd,0xf7,0x54,0x20,0xef,0xe8,0x2f,
- 0xa6,0x19,0x99,0x19,0xee,0x9e,0x40,0xf4,0x32,0x6a,0x1b,0x9a,0x14,0xc3,0xc8,0xde,
- 0x49,0x03,0x70,0xbc,0xf1,0xc6,0x5b,0x8f,0xae,0x75,0x82,0xbf,0xff,0xd9,0xe7,0x5f,
- 0x08,0x84,0xe5,0xce,0xae,0xee,0x47,0xd1,0x0e,0x0d,0x36,0x1c,0x27,0xd7,0xe0,0x90,
- 0xa8,0xf4,0x8c,0x9c,0xba,0x86,0x86,0x7e,0xa9,0xec,0x6e,0x93,0xd7,0xf1,0x89,0x49,
- 0x37,0x57,0x0f,0xcd,0x0e,0xff,0xff,0x84,0xec,0xd9,0xbb,0x37,0xfb,0xfc,0x79,0x47,
- 0x67,0x97,0xb0,0xc8,0xe8,0xdc,0xfc,0x92,0xc6,0x4b,0x6d,0xd7,0xba,0xfa,0x40,0x49,
- 0x7a,0x7a,0xfb,0xb1,0xce,0x80,0xe6,0x80,0xb6,0x48,0x7b,0x7a,0xfb,0xfa,0x24,0x03,
- 0x7d,0x52,0xd9,0xa0,0x5c,0x31,0x82,0x00,0x5a,0xad,0x0b,0xc4,0xf9,0x02,0x38,0x31,
- 0x31,0x39,0x25,0x1f,0x1a,0x91,0x0d,0x0c,0x41,0x9c,0x10,0x61,0x2f,0x3a,0xa2,0x08,
- 0x89,0x4e,0xa2,0x3b,0x7d,0x24,0x21,0xa9,0x74,0x00,0x02,0x8e,0x01,0xfd,0xbf,0x79,
- 0xfb,0xde,0x86,0x7c,0xca,0x5f,0x73,0x2b,0x34,0x2c,0xfc,0xff,0x34,0x9a,0xf8,0x2e,
- 0x7a,0x6e,0x71,0x4a,0x5a,0x9a,0x97,0x8f,0x2f,0xae,0x3b,0xc8,0xdc,0x7d,0x72,0xf2,
- 0x86,0x66,0xc7,0x17,0x00,0x64,0x00,0xb4,0x63,0xe3,0x93,0xf0,0x81,0x12,0xe9,0x10,
- 0x54,0x1c,0xc8,0x21,0xd4,0x14,0x54,0x6b,0x70,0x95,0xc1,0xe7,0x54,0x9e,0xe9,0x4f,
- 0x80,0xef,0x12,0x8a,0x44,0x1a,0x72,0xf2,0x8f,0xbf,0xff,0x03,0x3a,0x5a,0x01,0xdc,
- 0x20,0x6e,0x30,0x2f,0xbf,0x10,0x8d,0x62,0x8d,0x4d,0x68,0xf2,0xde,0x7c,0x1b,0xfb,
- 0xb0,0x02,0xe8,0x84,0x0e,0xed,0x80,0x7c,0xa4,0xaf,0x5f,0xa2,0xac,0xbc,0x32,0x5c,
- 0x73,0xa9,0x5c,0x49,0x65,0x03,0xf0,0x2b,0xa0,0xd2,0x69,0xae,0xbf,0xd0,0xf3,0x89,
- 0x8d,0x4b,0x58,0x72,0x97,0x3b,0x9a,0xc7,0x20,0x80,0xbf,0xaf,0x9a,0xb5,0xe8,0x52,
- 0x83,0xa8,0x77,0xc6,0x63,0xd5,0xc9,0x7c,0x4b,0x27,0x25,0xbd,0x1d,0x54,0x09,0x43,
- 0x4f,0xcb,0xaa,0xc8,0x6f,0xdf,0x92,0xd3,0x80,0x3b,0x7f,0xda,0x57,0x5b,0x69,0xf8,
- 0x44,0x27,0x44,0x6f,0x6e,0x48,0xb0,0x92,0xc4,0x4c,0x25,0x4a,0xdc,0x80,0x28,0xbd,
- 0x82,0x90,0xf9,0x62,0xcc,0x40,0xa9,0x35,0xb9,0x78,0x36,0x56,0x41,0x8c,0x96,0xb5,
- 0x95,0xdb,0x23,0xd2,0x89,0xd2,0x27,0x64,0xb4,0x59,0x47,0x69,0x38,0xad,0x6f,0xdf,
- 0x4f,0xf9,0x0c,0xc1,0x83,0xde,0xf4,0x8c,0xed,0x7c,0xbb,0x2f,0xfa,0x12,0x9e,0x22,
- 0x8b,0x71,0x16,0xd5,0x69,0x61,0xb0,0x31,0x2f,0x66,0x61,0x47,0x1c,0x78,0xb6,0x57,
- 0x1b,0xcf,0xfc,0xea,0x61,0xe4,0x25,0x4f,0x19,0x1c,0x85,0x1e,0x0b,0x47,0xcb,0x1c,
- 0x36,0x72,0xe8,0x61,0x38,0x48,0x00,0x7f,0x0d,0x6d,0x3a,0x0c,0x2c,0x5a,0xf4,0x8e,
- 0x8a,0x8d,0x7e,0x2e,0xd4,0x3f,0x92,0xfb,0x89,0x5d,0x6e,0xa7,0x74,0xfc,0x2f,0x87,
- 0xda,0x7b,0x4a,0x51,0x71,0xf1,0x7b,0xef,0x7f,0xb0,0x6b,0xf7,0xbe,0xc3,0x47,0x7e,
- 0xb4,0xb1,0x63,0x7a,0x73,0xc3,0xe3,0x12,0x53,0xb2,0x73,0xf2,0x4b,0xca,0x2a,0x2b,
- 0xaa,0xeb,0x6a,0x6a,0x2f,0x8a,0xc4,0x55,0x82,0x72,0x71,0x76,0x4e,0x5e,0x42,0x62,
- 0xea,0xc9,0xe0,0x70,0x77,0x0f,0x5f,0x73,0x2b,0xdb,0x43,0x87,0x7f,0xdc,0xfb,0xd9,
- 0x57,0xef,0x6d,0xff,0xf8,0xcd,0xb7,0xde,0x36,0x31,0xd9,0x64,0x60,0x60,0xb0,0x76,
- 0xed,0x2b,0xd8,0x16,0xfa,0x9f,0xcb,0x5f,0xd4,0x7a,0x7e,0xe9,0x8b,0x4b,0x97,0x2e,
- 0x5d,0xf4,0x2c,0x82,0x60,0xbc,0x28,0xf8,0x69,0x6a,0x20,0x7a,0xc1,0x93,0xd4,0xb6,
- 0x35,0x4f,0xaa,0x2e,0x4a,0x22,0x6d,0x2c,0x3c,0x8d,0x89,0x8b,0xe7,0x45,0xf2,0x03,
- 0x82,0x22,0xb2,0x73,0x10,0xfe,0xe2,0x39,0x56,0xf5,0xfc,0x17,0xef,0x5a,0x2b,0x57,
- 0x8c,0x76,0x74,0x5e,0x03,0x40,0x14,0x8a,0x6a,0x4a,0x4a,0xcb,0x05,0x65,0xe2,0xd2,
- 0x32,0x61,0xa9,0x40,0x58,0x5c,0x2a,0x2c,0x11,0x08,0xe1,0xbc,0x18,0x1f,0xcb,0x2e,
- 0x08,0x05,0x17,0x44,0x10,0xac,0xad,0xfd,0x1a,0xf1,0xe5,0xab,0x01,0xd9,0x87,0x47,
- 0x47,0x3f,0xff,0x62,0xbf,0x4a,0xfd,0x82,0xc6,0x2d,0x32,0x2a,0xe6,0x84,0xab,0x57,
- 0x3c,0xf0,0x26,0xb4,0x21,0xbb,0x7c,0x4a,0xcd,0x12,0x0f,0xb9,0x62,0x78,0xc5,0x8b,
- 0x0f,0x61,0xec,0xf4,0xc0,0x97,0x5f,0x15,0x0b,0xca,0x80,0xa6,0x09,0x45,0xd5,0xd0,
- 0x0a,0xa9,0xdd,0x33,0xe2,0x57,0x80,0xaa,0xeb,0x5b,0xdf,0xd9,0x36,0xff,0xdd,0x05,
- 0x4f,0x2c,0xf8,0xf6,0xe0,0x21,0xf8,0x95,0xae,0x1e,0xbe,0x49,0x29,0xe9,0x35,0x75,
- 0x97,0x06,0x06,0xe5,0x1a,0xf8,0x2f,0xc8,0xf6,0xed,0x1f,0x3e,0xd2,0x06,0x0a,0x7e,
- 0xfd,0x37,0xdf,0x7c,0x5b,0x21,0x16,0x3b,0xb0,0x1d,0x01,0x81,0x8f,0x5b,0xdb,0x3a,
- 0x9e,0x70,0x09,0x0a,0x8b,0xcc,0xc8,0xce,0xab,0xa9,0x6b,0xea,0x97,0x0e,0x5e,0x9f,
- 0x9a,0x56,0xf1,0x9a,0x38,0x3d,0x3b,0x67,0x76,0xcc,0xfc,0x99,0xfb,0xed,0x7e,0xfb,
- 0x87,0xe4,0xc3,0x1d,0x1f,0xe5,0xe4,0x15,0x30,0xd9,0xce,0x5e,0xfe,0x21,0xb1,0x09,
- 0x49,0xd9,0xe7,0x0a,0x0a,0x8a,0x04,0x45,0x02,0x61,0x59,0xb9,0xa8,0xa4,0xb4,0xa2,
- 0x14,0x6b,0x8b,0xa0,0x4c,0x58,0x54,0x2a,0x14,0x94,0x57,0x08,0x2b,0x6a,0x6a,0xeb,
- 0x1b,0x41,0x67,0xe0,0x9f,0xa2,0xd9,0x10,0x8d,0xc3,0xb9,0x80,0x23,0x00,0x67,0xbd,
- 0xfd,0x92,0xfa,0xc6,0x56,0x71,0x55,0x5d,0xc9,0x05,0x51,0x11,0xa8,0x62,0x39,0xd2,
- 0x43,0xa4,0x8a,0x44,0x1b,0x4b,0xe1,0x28,0x16,0x20,0x85,0xac,0x14,0x57,0xd5,0x37,
- 0x35,0x5f,0xee,0x96,0x0c,0x8e,0xdf,0xa7,0x9f,0x79,0x2b,0x3a,0x26,0x6e,0xe1,0xbd,
- 0x26,0x37,0xc9,0xb0,0xd2,0x13,0x78,0xb5,0x32,0x3f,0x36,0x86,0x7b,0x32,0xdc,0x17,
- 0x2f,0x37,0x6b,0x6b,0xbf,0x0a,0x38,0xa5,0xb9,0xee,0xdf,0xb8,0x31,0x0b,0x3d,0x8b,
- 0xce,0x6b,0xbd,0x75,0xf5,0x97,0x84,0x15,0x55,0x90,0xab,0x62,0x65,0xc5,0x41,0x35,
- 0xa8,0x8c,0xce,0x2d,0x16,0x81,0xb8,0xa8,0x04,0xbe,0x42,0x54,0x55,0x53,0x27,0xaa,
- 0xaa,0xbd,0xa7,0x77,0x56,0x22,0x80,0xbf,0x99,0xd9,0xd9,0xd0,0x56,0x70,0x83,0x42,
- 0x73,0xf3,0x4b,0x5b,0xdb,0xaf,0xdc,0x40,0x0e,0xac,0xd4,0xe2,0x2f,0x7c,0x38,0x54,
- 0x46,0xe8,0x88,0x40,0x9f,0xa1,0xb6,0xbe,0x41,0x28,0xac,0x21,0x7f,0x81,0x24,0x0d,
- 0x89,0x16,0xe3,0xa2,0x83,0x56,0xe8,0x82,0xa8,0xaa,0xba,0xae,0xa1,0xa5,0xad,0x5d,
- 0x3a,0x20,0x1b,0x1d,0x9f,0x54,0xe7,0xd6,0x72,0xee,0xd6,0x4d,0x6f,0x1f,0xdf,0xc7,
- 0x39,0x17,0x4c,0x9a,0xaf,0x67,0x57,0x6e,0xd6,0xb6,0xe8,0x24,0x28,0x43,0x4f,0xc8,
- 0xce,0x67,0xbe,0x0c,0x36,0x3e,0x32,0x11,0x3a,0xd3,0x00,0xb4,0x0e,0x11,0x3d,0x85,
- 0x01,0x53,0x42,0x66,0x8a,0x29,0xac,0xb9,0x0b,0x52,0xe1,0x5d,0xfa,0x29,0x8d,0xdd,
- 0x06,0xac,0x41,0x32,0x60,0x3b,0xdf,0xc2,0x8a,0xb6,0x25,0x5e,0xa7,0x5c,0x38,0x4c,
- 0x99,0x4e,0xcd,0x4b,0x88,0xc0,0x19,0x4d,0xa5,0x19,0xd8,0x22,0x8b,0x98,0x36,0x21,
- 0x6a,0x79,0xc7,0xa6,0x4b,0xae,0xcb,0x44,0x33,0xad,0x24,0x12,0x00,0x3e,0x1d,0x26,
- 0x61,0xdc,0xf2,0x75,0xcc,0x21,0xb8,0x54,0xe9,0x33,0xd0,0x66,0xd5,0x10,0x33,0x70,
- 0x52,0x1d,0x5c,0x14,0x10,0x21,0xba,0x64,0x21,0x37,0xd7,0xf0,0xc8,0x90,0x4d,0x8d,
- 0x72,0xc3,0x7d,0x06,0x1b,0x65,0xd2,0x80,0x35,0xa4,0x8b,0x27,0x76,0x21,0x66,0xb8,
- 0xa9,0x07,0x09,0xb1,0xe0,0x29,0xf9,0x3a,0x3c,0x95,0x8c,0x49,0x2e,0x46,0x5b,0x24,
- 0x10,0x18,0x22,0x81,0xdc,0x9a,0x70,0x14,0xfa,0xac,0xe1,0xf5,0x9c,0xe1,0xf5,0x6c,
- 0x84,0xdd,0x46,0xcc,0x01,0x06,0x53,0x66,0x60,0xd7,0xcd,0xb0,0xbb,0xba,0xde,0xb2,
- 0x71,0xbd,0x45,0xbd,0xe1,0x2f,0x15,0xeb,0x7f,0xc8,0x39,0xe0,0x52,0x3c,0x34,0xfe,
- 0x48,0x6c,0x11,0x1f,0x5c,0x2a,0xab,0xab,0x77,0xec,0xfc,0xf8,0xe3,0x5d,0x7b,0x8e,
- 0x1c,0xf9,0xd1,0xd6,0x9e,0xe3,0xcf,0x0d,0x89,0x4f,0x4a,0x39,0x97,0x9b,0x5f,0x56,
- 0x51,0x59,0x55,0x5b,0x5f,0x77,0xb1,0xb9,0xae,0xee,0xa2,0xa8,0xb2,0x1a,0x1a,0xa8,
- 0xb4,0x33,0x59,0xbc,0xa8,0x18,0x3f,0x9f,0x93,0x0e,0x4c,0xce,0xd1,0x5f,0x8e,0x7f,
- 0xfd,0x9f,0x83,0xbb,0x76,0x7f,0xba,0xed,0xdd,0xf7,0x81,0x02,0x1b,0x1b,0x9b,0x10,
- 0x08,0x5e,0xb9,0x7a,0x95,0xd6,0xcb,0x2f,0xbd,0xb0,0x4c,0xeb,0x85,0x17,0x90,0x5f,
- 0xca,0x45,0x8b,0x16,0x01,0x0d,0x7c,0x7a,0xe1,0xd3,0x4f,0x2f,0x7c,0x96,0xb0,0x60,
- 0x6a,0x69,0xd2,0x93,0x94,0x83,0x4a,0xda,0x1c,0x0b,0x0d,0x4d,0x3f,0xb1,0x00,0xf0,
- 0x37,0x24,0x3c,0x22,0x3a,0x36,0x2e,0x90,0x1b,0x92,0x71,0xf6,0x7c,0x6b,0xdb,0x95,
- 0xe1,0x51,0x4d,0xf8,0x0b,0x94,0x61,0x62,0xe2,0xfa,0xb5,0xee,0x1e,0x71,0x55,0x4d,
- 0xe6,0xd9,0xdc,0xf8,0xc4,0xd3,0x51,0x31,0x89,0x3c,0xb4,0xb4,0x33,0x21,0x32,0x3a,
- 0x81,0xc7,0x8f,0x07,0x89,0x8c,0x8a,0x8f,0xe4,0x23,0xe1,0xc7,0x24,0xc5,0xc5,0x9f,
- 0x06,0x6a,0x7f,0xa1,0xa2,0xb2,0xf3,0x5a,0x37,0x72,0xe7,0xab,0x3e,0xe6,0x89,0xeb,
- 0x93,0xdf,0x1e,0x52,0x75,0xcb,0xc3,0x76,0x72,0x8a,0x49,0x48,0x02,0xd6,0xc6,0x8b,
- 0x8c,0x85,0xc6,0x19,0xef,0x68,0x70,0xef,0xdf,0x3a,0x35,0x33,0xbd,0xe9,0x7e,0x0e,
- 0x03,0x7f,0x8f,0x7c,0xf7,0xfd,0x0f,0x17,0x84,0x15,0x19,0x59,0x39,0xf5,0x0d,0x4d,
- 0xd0,0xfe,0xab,0x1b,0x8a,0xbf,0x79,0x0b,0xb9,0x68,0x78,0xe3,0x8d,0xcd,0x2a,0xaf,
- 0xef,0xd9,0xfb,0x69,0x7e,0x61,0x89,0xbb,0x97,0x5f,0xfc,0xa9,0x94,0xea,0xda,0xa6,
- 0x81,0x41,0x85,0x06,0xfe,0x0b,0xb2,0x7b,0xf7,0x23,0x77,0x22,0x04,0x30,0x61,0x7a,
- 0xdc,0xbc,0xb8,0xb4,0xcc,0xde,0x81,0xfd,0x8b,0x99,0xb9,0xb5,0xad,0x83,0xb3,0xab,
- 0x47,0x14,0x3f,0x3e,0x27,0xb7,0x18,0x78,0xa8,0x74,0x00,0x79,0x4d,0x54,0x71,0x97,
- 0xd4,0xdb,0xdf,0x7f,0xf0,0xe0,0xe1,0xdf,0xbf,0x87,0xc5,0x7d,0x65,0xeb,0xd6,0x77,
- 0x72,0xf3,0x0b,0xad,0xec,0x1c,0x38,0x4e,0x6e,0x5e,0x3e,0xfe,0xc1,0xa1,0xbc,0x70,
- 0x5e,0x74,0x04,0x3f,0x36,0x12,0xab,0x0d,0x48,0x54,0x74,0x22,0x1c,0xe1,0x0e,0x9c,
- 0xc4,0x25,0x24,0xa7,0x9d,0x39,0x57,0x2e,0xac,0xba,0xd2,0x89,0x16,0x50,0xa3,0x2d,
- 0x9c,0xd4,0x01,0xe5,0xaf,0x88,0xfc,0x0e,0x0c,0x0e,0x5d,0x6a,0x6e,0xcf,0xcd,0x2f,
- 0x4e,0x4e,0x49,0x8f,0x89,0x4f,0xa6,0x94,0x10,0x09,0x15,0x33,0x2f,0x2a,0x0e,0x29,
- 0x67,0x74,0x5c,0x6c,0xfc,0xa9,0xe4,0x94,0x4c,0xf8,0x41,0x97,0x9a,0x3b,0x80,0xd6,
- 0x69,0xd8,0xea,0x0b,0xf0,0x37,0x39,0x25,0x55,0x9d,0x23,0x71,0x52,0x83,0x00,0x10,
- 0x43,0xc2,0xc2,0x42,0x42,0x23,0x00,0x7f,0xb3,0xb2,0xf3,0x5b,0xda,0xae,0x8c,0x8e,
- 0x4d,0x68,0xe0,0xbf,0x10,0x27,0xf0,0xee,0xee,0x1e,0x49,0x65,0x55,0x4d,0x56,0x36,
- 0xd4,0x9d,0x54,0x94,0x37,0x7e,0x9c,0xb2,0x04,0x12,0x54,0x72,0x4e,0xca,0x27,0x8a,
- 0x9f,0x70,0xea,0x74,0x5a,0x6d,0x6d,0x9d,0x86,0xa5,0xe2,0x90,0x9f,0xd3,0xa9,0x69,
- 0x61,0x11,0x91,0xd0,0x19,0xc8,0xce,0x2b,0x68,0x69,0xef,0x9c,0xbc,0x3e,0xa9,0x81,
- 0xff,0x82,0xf6,0x4e,0x4c,0x5e,0xbf,0xda,0xd5,0x57,0x21,0xae,0xcd,0x3c,0x9b,0x13,
- 0x97,0x98,0xcc,0x87,0x4e,0x38,0x3f,0xee,0x4e,0x2d,0x8e,0x89,0xc7,0xa9,0xc7,0xc5,
- 0xc4,0x41,0xe2,0x99,0xf9,0x45,0x25,0xd5,0x75,0x4d,0xdd,0xbd,0x52,0xe8,0xb4,0xdc,
- 0x54,0x63,0x00,0x29,0x95,0x49,0xf7,0xee,0xfb,0xfc,0x51,0x2b,0xb3,0x8a,0x3c,0xb7,
- 0x76,0xab,0xb6,0xe5,0x35,0x64,0xda,0xc4,0x1c,0xd4,0x65,0x62,0xe4,0xc2,0x74,0x4f,
- 0x9f,0x4d,0x0d,0x0e,0xc3,0x1d,0x72,0x84,0x3b,0x78,0x84,0x19,0xd0,0x50,0x0a,0x98,
- 0x48,0xc6,0x5a,0x91,0x00,0x7a,0x02,0x0e,0x12,0x5b,0x23,0x78,0x8a,0x29,0x9e,0x21,
- 0x7b,0x88,0xbc,0x85,0x9e,0x32,0xd1,0x18,0xb2,0x3e,0x82,0x1b,0xfa,0x52,0x61,0xc0,
- 0x1a,0x40,0xc0,0xca,0xa2,0x5e,0xd1,0x65,0x62,0xa3,0x2f,0x26,0x40,0x24,0x9a,0x30,
- 0xc5,0x6c,0x51,0x4e,0x27,0x44,0xc5,0x80,0xf1,0x17,0x6e,0x02,0xae,0x19,0xe0,0x73,
- 0x3d,0x02,0xee,0xf8,0x92,0x02,0x41,0xa6,0xdc,0x10,0x81,0xa0,0x82,0x04,0x30,0x60,
- 0xc9,0x11,0x2c,0x32,0xa5,0x70,0x07,0xa2,0x05,0x7c,0xc4,0xeb,0x80,0x14,0x0c,0x74,
- 0x82,0x02,0xc3,0xbb,0x10,0x1e,0x92,0x60,0xe0,0xb7,0x20,0x1b,0xe4,0x45,0x06,0x6b,
- 0x00,0x9e,0x1a,0x00,0x4b,0x45,0xb8,0x4f,0x72,0x25,0x27,0xa4,0x95,0x5c,0xae,0x43,
- 0x91,0xc3,0xf9,0x10,0xb1,0xaa,0x22,0x93,0xbc,0x80,0xb0,0xc8,0xc2,0x0a,0xf7,0x0a,
- 0xa0,0xb8,0xc8,0x38,0x33,0x70,0x5e,0x94,0x0a,0x46,0x61,0x84,0xbc,0x8e,0x28,0x18,
- 0x03,0x1d,0x87,0x0d,0x1c,0x06,0x8d,0xd8,0x43,0xd0,0xb7,0x31,0x74,0xe8,0x33,0xb0,
- 0xeb,0x32,0xb0,0x6e,0xdf,0x60,0x51,0xc7,0x30,0x15,0x19,0xfd,0x98,0xf3,0x13,0xb7,
- 0x72,0x62,0x4a,0xd3,0x40,0xd0,0x5f,0x28,0x97,0x5a,0x5b,0x77,0xef,0xfd,0x6c,0xe7,
- 0xae,0x3d,0x87,0x10,0xff,0xe5,0x04,0x06,0x85,0x26,0x26,0xa7,0xe5,0x15,0x14,0x57,
- 0x88,0xeb,0xea,0x1a,0x9a,0x1b,0x2f,0x5d,0xbe,0xd8,0xd4,0x52,0x53,0xd7,0x28,0x28,
- 0xaf,0x04,0x42,0x9a,0x78,0x2a,0x35,0x24,0x3c,0xd2,0xd5,0xdd,0xdb,0xc2,0xc6,0xee,
- 0xc7,0x9f,0x8e,0xee,0xfb,0xe2,0xcb,0x8f,0x76,0xed,0xd9,0xb2,0x75,0xdb,0xa6,0xd7,
- 0x5e,0x67,0x30,0x18,0x7a,0x7a,0x7a,0xab,0xd7,0xae,0x59,0xb9,0x6a,0xe5,0x8b,0x5a,
- 0x5a,0xcb,0x96,0x6b,0x2d,0x59,0xb2,0x14,0xf9,0xc5,0x7a,0x0e,0x99,0x63,0x11,0x0a,
- 0x4c,0x04,0xba,0xc7,0xc4,0x1c,0x8b,0x5a,0x97,0x34,0x6f,0x17,0x57,0x20,0xc8,0x7e,
- 0xfe,0x01,0x71,0x09,0x89,0x08,0x7f,0xb3,0x72,0x5a,0x5a,0x01,0x7f,0x47,0x35,0xf4,
- 0x9c,0xe7,0xe6,0x6e,0x02,0x8c,0xb6,0xb4,0x75,0xe4,0xe6,0x17,0x85,0x47,0xc6,0xba,
- 0x7b,0xfb,0x73,0x5c,0x3c,0x9c,0x9c,0x5c,0x39,0x8e,0xae,0xd0,0xb4,0xb2,0x1d,0x5d,
- 0x38,0xce,0xae,0x6c,0x27,0x17,0x47,0x67,0x77,0x16,0xe7,0x84,0xd3,0x09,0x0f,0x77,
- 0x4f,0xdf,0x90,0xd0,0xc8,0x8c,0xac,0xdc,0x8b,0x8d,0x2d,0xd0,0xdf,0x9e,0x51,0xef,
- 0x16,0xfe,0xfa,0xd4,0x8d,0x9f,0x8f,0xfe,0xa2,0x52,0xbf,0xcc,0x8e,0x1f,0x3b,0x9d,
- 0x96,0x0e,0xdd,0x8f,0x93,0xc1,0x40,0xcf,0xd1,0xb6,0xad,0xd0,0xc4,0xa9,0x9b,0x8d,
- 0x3a,0x74,0xf8,0xfb,0x07,0x9f,0x84,0x62,0x73,0x1c,0x85,0xa2,0xca,0xe2,0xd2,0xf2,
- 0xce,0x6b,0x3d,0xe3,0x13,0x93,0xea,0xfc,0x77,0x41,0x23,0x24,0x91,0x49,0x0c,0x19,
- 0xaa,0xfe,0xe7,0xdf,0xdf,0xfe,0x61,0x51,0x89,0xc0,0xc3,0xcb,0x1b,0x18,0xb4,0xb8,
- 0xba,0xa1,0x5f,0x36,0xa8,0xc1,0xfe,0x0a,0xe4,0xeb,0xff,0x7c,0xf3,0x18,0x9a,0x29,
- 0x50,0x00,0x4f,0x5f,0xef,0x73,0xf9,0xf9,0x56,0x36,0x0e,0xa6,0x66,0x16,0x56,0x36,
- 0xf6,0xf0,0x5f,0x22,0xa3,0xe3,0x0b,0x0a,0xcb,0x80,0xda,0x0c,0xca,0x47,0x6e,0x4c,
- 0x4d,0xa9,0x0c,0xc6,0x76,0xf5,0xf6,0xec,0xdc,0xf9,0xf1,0xc3,0xda,0x5d,0xce,0x64,
- 0xe3,0xa6,0xf3,0x05,0x79,0x96,0x36,0xf6,0x66,0x56,0x36,0xb6,0x0e,0x6c,0x16,0xdb,
- 0x09,0x94,0x84,0x08,0x74,0xae,0xe8,0x73,0xd0,0x1f,0xc7,0x13,0x6e,0x6e,0x1e,0xde,
- 0x81,0x21,0xbc,0xb4,0x33,0x67,0x2f,0x36,0xb6,0x92,0x19,0x07,0x0d,0x03,0xc5,0xd7,
- 0x6f,0x4c,0x77,0xf5,0xf4,0x57,0x88,0xab,0xe3,0x13,0x53,0xfc,0x03,0x43,0x1c,0x5d,
- 0x3c,0x41,0x03,0x91,0x40,0xb4,0x8e,0x94,0x2a,0x92,0xc8,0x1d,0x9d,0x3d,0x4e,0xb8,
- 0x7a,0xfa,0x05,0x04,0x27,0x9c,0x4a,0x11,0x56,0xd6,0xf4,0xa0,0x2d,0x9e,0x35,0x91,
- 0xeb,0xdc,0xbc,0xbc,0x45,0xcf,0x2e,0xd2,0x5c,0xaa,0xde,0xbe,0x68,0xc9,0xad,0x8f,
- 0x5f,0x50,0x66,0x56,0x4e,0x73,0x6b,0x3b,0x5a,0x6e,0x76,0x53,0xad,0xb5,0x12,0x68,
- 0xc2,0xe8,0xf8,0x38,0xd0,0x64,0xa8,0xec,0xbc,0xa8,0x58,0x2f,0x5f,0xae,0x8b,0xab,
- 0x27,0x55,0x71,0x94,0x45,0x81,0xc5,0x0d,0xf2,0x8c,0xb2,0xed,0x88,0x0b,0xc4,0xd9,
- 0xc5,0xd7,0xff,0x24,0xf4,0xcd,0x17,0x2f,0xd1,0xe4,0x69,0x33,0x26,0x21,0x3e,0x22,
- 0x32,0x8a,0x1b,0x14,0x7e,0x36,0x27,0xbf,0xb5,0xbd,0x73,0x0c,0x55,0x13,0xf5,0xbb,
- 0x07,0xce,0xce,0x29,0x86,0x47,0xa0,0xb2,0x43,0x9d,0x0a,0xe5,0x45,0xbb,0x7a,0xfa,
- 0x72,0x9c,0xdc,0x1d,0x9d,0xdc,0x9c,0x4e,0x50,0x65,0xc5,0x76,0x76,0x87,0x6c,0x40,
- 0x66,0x5c,0xdc,0x3c,0xbd,0x7c,0x03,0x20,0xb7,0xd9,0x39,0xb9,0x17,0x9b,0x5a,0x65,
- 0x83,0x43,0x6a,0xfb,0x93,0xbf,0xde,0x2e,0xaf,0x10,0x3d,0x14,0x1b,0x8c,0xdf,0x2f,
- 0xcf,0x1b,0x7c,0xa4,0x67,0xd3,0xa3,0x87,0xe0,0x09,0x61,0xa8,0x21,0x6b,0x90,0xd8,
- 0x5f,0x11,0x03,0x21,0x6c,0x29,0x84,0xd8,0xa8,0x21,0x53,0xb6,0x0e,0x39,0x40,0xa6,
- 0x46,0x4d,0xf1,0x42,0x1b,0x02,0x61,0xc8,0x94,0x48,0x17,0xf1,0x41,0x19,0x86,0x27,
- 0xf2,0xae,0x8c,0xb6,0x38,0xc2,0x4f,0xe5,0xd8,0x00,0x78,0x90,0x80,0x3b,0x36,0x9a,
- 0xa2,0x2c,0x94,0x68,0x53,0x25,0x94,0x1c,0x6b,0x98,0x8e,0x5f,0x0f,0xd9,0x5c,0x11,
- 0x23,0x25,0xe8,0x12,0xa0,0x77,0xf5,0x99,0x0a,0x3a,0x24,0xc4,0xac,0xc3,0x9c,0x17,
- 0x98,0xa9,0x1c,0x25,0xc6,0x27,0xb4,0xe1,0x93,0xb6,0xc3,0x6f,0x92,0xa0,0x2f,0xa9,
- 0xc0,0xac,0xdf,0x04,0xa6,0xdf,0xa5,0xe2,0x64,0x23,0xdc,0x24,0xb9,0x22,0xa3,0xca,
- 0xb4,0x49,0x15,0x15,0x21,0xe6,0xd1,0xd4,0x11,0x07,0x33,0x44,0x53,0xba,0x48,0x7e,
- 0x73,0xc9,0xa1,0x6e,0x12,0xd9,0xe0,0x88,0x21,0x98,0x5c,0x72,0x80,0x6e,0x2b,0x36,
- 0xb0,0x65,0xc6,0x6c,0xa9,0x11,0xb3,0xd7,0x98,0xd9,0xa9,0x6f,0xdd,0xb9,0xd1,0xa6,
- 0x61,0x93,0x45,0xa5,0xf1,0xd1,0x02,0x7b,0xfe,0xc5,0x59,0x35,0xfd,0xb4,0xbf,0x5c,
- 0xba,0x7a,0x7a,0xf6,0x7f,0xf9,0x6f,0xc0,0xdf,0x6f,0x0f,0xfd,0x60,0x6d,0xcb,0x0e,
- 0xe4,0x06,0x27,0x25,0xa7,0xe6,0xe6,0x97,0x88,0xc4,0x35,0x8d,0x97,0x5a,0x9a,0x5b,
- 0x3b,0xa0,0x23,0xdd,0xd0,0xd4,0x5a,0x5d,0x53,0x5f,0x58,0x5c,0x96,0x9e,0x79,0x0e,
- 0x58,0x24,0x84,0x61,0x72,0x4e,0x98,0x1e,0xb3,0xf8,0xfa,0x9b,0x23,0x9f,0xee,0xdb,
- 0xbf,0xfd,0x83,0x9d,0x6f,0xfe,0x6b,0xcb,0xc6,0x4d,0xaf,0x19,0x19,0x19,0x69,0x6b,
- 0xeb,0x20,0x16,0xbc,0x6a,0x95,0xd6,0x4b,0x2f,0x2d,0x7f,0x71,0xc5,0xd2,0xa5,0xcb,
- 0x9e,0x5f,0x82,0xa6,0x83,0x9f,0x79,0xe6,0x59,0x7a,0x9b,0x60,0x95,0x6d,0x1a,0x08,
- 0x16,0x3f,0xa1,0x74,0xc7,0xe1,0xe2,0xee,0x9e,0x9c,0x02,0x6d,0x57,0x30,0xa4,0x05,
- 0x84,0x68,0x78,0x64,0x7c,0xee,0xd6,0x9c,0xba,0x76,0x09,0xf8,0xe0,0xd0,0xf0,0x58,
- 0x53,0x73,0x2b,0x90,0x5f,0x68,0xca,0x98,0x6c,0x67,0x4b,0x2b,0x3b,0x53,0x73,0x2b,
- 0x53,0x0b,0x6b,0x33,0x0b,0x1b,0x74,0x34,0xb7,0x86,0x4b,0x33,0x73,0x1b,0x38,0x9a,
- 0x5b,0xd9,0xd9,0xd8,0xb3,0x3d,0x7d,0x02,0xa0,0xab,0x5f,0x59,0x5d,0x2f,0x95,0x0d,
- 0xcd,0xdc,0xb5,0xf2,0x94,0x96,0x1b,0xd3,0x53,0x96,0x56,0xd6,0x2a,0xf5,0xeb,0xf3,
- 0x2f,0xf6,0xe7,0xe4,0xe5,0x5b,0xdb,0x31,0xbd,0x7d,0x02,0x4e,0xa7,0xa2,0xa5,0xa3,
- 0x68,0x5b,0xde,0xb9,0x7b,0xff,0x59,0x5e,0x14,0xff,0x01,0x47,0x4d,0xff,0xf6,0xe4,
- 0xdf,0x62,0x13,0xe2,0x2b,0xab,0xeb,0x6a,0xeb,0x1b,0x24,0x32,0xf9,0xd4,0xf4,0xec,
- 0xbd,0xdb,0x52,0x34,0x08,0x3f,0xdb,0xd6,0xde,0x71,0xb7,0xc3,0xae,0xb7,0xfe,0xf5,
- 0xb6,0x40,0x58,0xee,0xe1,0xe5,0x17,0x1b,0x9f,0x8c,0x76,0x3d,0x96,0x0d,0xce,0x68,
- 0xdc,0x0a,0xd3,0xf4,0xd8,0xf1,0x3f,0xba,0x65,0xd5,0x9f,0x93,0xe5,0xcb,0x96,0xfb,
- 0x05,0xf8,0x65,0x64,0x9f,0xb5,0xb4,0xb1,0x43,0x6b,0x82,0xed,0xd8,0x1e,0x1e,0x01,
- 0x90,0xc9,0xa2,0x92,0xb2,0xe6,0xd6,0xce,0xe1,0x91,0x91,0xe9,0x99,0x39,0xf8,0x2e,
- 0xfa,0xef,0x00,0x7b,0x6a,0x6e,0x6b,0x05,0xde,0xfa,0x50,0xb2,0xa7,0xab,0xa7,0x9f,
- 0x57,0x58,0x68,0x65,0x6d,0x07,0x04,0xdc,0xf4,0x98,0x95,0xa9,0x39,0x68,0x0b,0x12,
- 0xa4,0x2a,0x16,0xd4,0xb9,0xb9,0xa5,0xed,0x31,0x73,0xeb,0xe3,0x96,0x36,0x36,0x76,
- 0x2c,0x77,0x54,0x80,0x49,0x55,0xb5,0x75,0x12,0xa9,0x6c,0x46,0xc3,0x04,0xfa,0xaf,
- 0xb7,0xa7,0xa6,0x66,0xbb,0x7a,0xfa,0xca,0xca,0x45,0x11,0x68,0x9e,0xc2,0x03,0xba,
- 0x16,0x16,0x56,0xb6,0x28,0x66,0x2c,0x38,0x66,0x1b,0x9c,0x90,0xa5,0x99,0xa5,0x0d,
- 0x74,0x3f,0x4e,0xb8,0xb8,0x87,0x85,0x47,0x17,0x96,0x96,0x5d,0xed,0xea,0x55,0x37,
- 0x96,0x42,0x44,0x50,0x5e,0xae,0x79,0x8b,0x28,0xa8,0x47,0x6e,0xee,0x6e,0x71,0x09,
- 0x49,0xde,0xbe,0xdc,0xd3,0x19,0xe7,0x1b,0x9a,0xdb,0xf0,0x72,0x6f,0xf5,0xac,0xf3,
- 0xe6,0xed,0xe1,0x91,0x51,0xa8,0xe0,0xa8,0xee,0x9c,0x0c,0x61,0xb2,0x9d,0xa0,0x82,
- 0x98,0x5b,0xda,0x90,0x1c,0xce,0xcb,0x33,0xb9,0x03,0xb5,0xc9,0xca,0xdc,0x12,0xdd,
- 0xb7,0xe7,0x38,0x43,0x9f,0x70,0xd9,0x32,0x55,0xef,0xac,0xf3,0x25,0x2c,0x02,0xd4,
- 0x3f,0x06,0xaa,0x64,0x56,0x4e,0x5e,0x73,0x5b,0xa7,0x86,0x95,0x02,0xb7,0xf1,0x06,
- 0x58,0x80,0xbf,0xd0,0xbd,0x49,0x3d,0x73,0xd6,0x27,0x30,0xcc,0x9e,0xe9,0x08,0xbf,
- 0xc6,0xcc,0x9c,0x2e,0x2b,0x2b,0x3a,0x3f,0x90,0x43,0x3b,0x07,0x96,0x9b,0xbb,0x4f,
- 0x74,0x6c,0x42,0x69,0x99,0x08,0x28,0x33,0x14,0x9a,0xba,0x6f,0x84,0x76,0xe3,0x93,
- 0xdd,0x7b,0x1f,0x9b,0x21,0x16,0x24,0xb4,0xfc,0xf5,0xef,0xd6,0xd9,0x4a,0xf4,0x31,
- 0xa2,0x01,0x1c,0xe8,0xd0,0x50,0x88,0x05,0x53,0x48,0x05,0x26,0x86,0x98,0xdc,0xe1,
- 0x11,0x57,0x32,0xf4,0x8a,0x2f,0x09,0x17,0x06,0xac,0xc1,0x8f,0x30,0x7d,0x46,0xe4,
- 0x14,0xd0,0x16,0x0d,0x02,0xa3,0x77,0xd7,0x29,0x63,0x33,0x60,0x0d,0xd3,0x91,0x60,
- 0xeb,0xa3,0xe1,0x75,0xf6,0x98,0x72,0xa2,0x09,0x5c,0x84,0xe0,0x7a,0x4c,0x74,0x4e,
- 0x02,0x93,0x08,0x11,0x8a,0x51,0x89,0x52,0x88,0x89,0xd7,0xf2,0x50,0x1c,0x13,0xd9,
- 0x32,0x61,0x0c,0x05,0x9a,0x49,0x11,0x52,0x0e,0xc6,0x50,0xcc,0x3a,0xe1,0x11,0x7d,
- 0x49,0x07,0x46,0x14,0x1e,0xd3,0x52,0xcc,0xc7,0x29,0x9c,0x55,0xb9,0xd4,0x57,0xc6,
- 0x46,0x60,0x9a,0x9e,0xa8,0xd5,0xc5,0x94,0x96,0xe2,0xb3,0xf8,0x84,0xc4,0x6c,0x88,
- 0xe9,0x2d,0x61,0xb8,0x78,0x88,0x60,0x18,0xb8,0xed,0x7a,0x84,0xad,0x28,0x03,0x10,
- 0x18,0x8e,0x46,0x00,0xbb,0xec,0x31,0xe0,0xbf,0x46,0xf8,0xd2,0xd8,0x11,0x3d,0x35,
- 0x72,0x02,0x38,0x56,0x18,0x73,0x06,0x4d,0x38,0x03,0x26,0x9c,0x7e,0x13,0x56,0x97,
- 0xb1,0xc3,0x95,0x8d,0xd6,0xf5,0x9b,0x2c,0xab,0x36,0x9a,0x16,0x79,0xa7,0xb7,0xfe,
- 0xcf,0xae,0xee,0x97,0x0f,0xc9,0x0f,0x1d,0xf9,0x6e,0xc7,0xc7,0x9f,0x60,0xfc,0x65,
- 0xf9,0x07,0x72,0xe3,0x12,0x53,0xf2,0x0a,0x04,0xa2,0x4a,0x80,0x97,0xcb,0xad,0x97,
- 0x3b,0x5a,0x2f,0x5f,0x6d,0x69,0xeb,0xac,0x6f,0x68,0xae,0x10,0xd7,0xe4,0xe4,0x16,
- 0x24,0x25,0xa7,0x85,0x47,0x44,0xbb,0x78,0xfa,0xd9,0xda,0xb1,0x7e,0xfa,0xaf,0xe9,
- 0x57,0x5f,0x7d,0xb3,0xeb,0x93,0x7d,0xdb,0xde,0xfb,0x60,0xf3,0x9b,0x5b,0x8c,0x8d,
- 0x4d,0x0c,0x0d,0x0d,0x75,0x74,0x74,0x56,0xaf,0x5e,0xf3,0xf2,0xcb,0x6b,0x56,0x68,
- 0x69,0xd1,0xe6,0x58,0x4b,0x16,0xbf,0x40,0xfb,0xe5,0x78,0x7a,0xe1,0x33,0x64,0x3a,
- 0x98,0xec,0x57,0x08,0xfd,0x76,0x62,0x1d,0x4d,0x88,0x30,0x30,0xbe,0xb4,0xcc,0x4c,
- 0x1f,0xff,0x00,0xa8,0x8c,0x0d,0x80,0xbf,0xc3,0xa3,0x37,0x6f,0xa9,0x35,0x4d,0x81,
- 0x66,0xf9,0xfa,0x8d,0x99,0xce,0x6b,0xbd,0xa2,0xca,0x9a,0x33,0x19,0x39,0xd0,0x48,
- 0x86,0x46,0x44,0x87,0x84,0xf1,0x82,0xc3,0xa2,0x42,0xc2,0xa3,0x42,0x23,0x90,0x84,
- 0x84,0xf3,0x42,0x23,0xf8,0x61,0xe1,0xfc,0x50,0x5e,0x94,0xb7,0x1f,0xf7,0x84,0x9b,
- 0x47,0x4c,0x7c,0x92,0xb8,0xaa,0xa6,0x47,0x32,0xa4,0xc1,0x41,0x2e,0x5a,0xf1,0xc1,
- 0xe6,0xa8,0x54,0xb1,0x37,0x37,0xbf,0x55,0x54,0x5a,0xec,0xc0,0x74,0x74,0x71,0xf7,
- 0xe1,0xc7,0x26,0x56,0x88,0xab,0x7a,0xfa,0xa4,0x78,0x1e,0xf9,0x1e,0x2d,0x40,0x43,
- 0x63,0xe3,0x3a,0x9d,0x75,0x0f,0x52,0xa3,0xb5,0x56,0xbc,0x24,0xae,0xac,0xac,0xaa,
- 0xa9,0xed,0xb8,0xda,0x35,0x32,0x36,0xa6,0x6e,0x1c,0x00,0x3a,0x21,0x40,0x18,0x4b,
- 0xcb,0xcb,0x96,0x2c,0x7e,0x5e,0x25,0x86,0x8d,0xaf,0xbd,0x0e,0x4d,0xa5,0xa7,0x37,
- 0x82,0x36,0xa1,0xb8,0xa6,0x5f,0xa6,0xd0,0xec,0x89,0xc8,0xc2,0xca,0xfa,0xf1,0xe0,
- 0x2f,0xc8,0xea,0x55,0xab,0x53,0xd3,0xd2,0x13,0x4f,0x25,0x1d,0x43,0x7d,0x24,0x0b,
- 0x7b,0x96,0xa3,0x9f,0x7f,0x48,0xe2,0xa9,0xf4,0xb2,0x0b,0x95,0x57,0xbb,0xba,0xef,
- 0x69,0x5b,0x5e,0x2a,0x28,0xd7,0x37,0x30,0x7c,0xf0,0xa4,0x5f,0x59,0xfb,0x6a,0x85,
- 0x58,0xc4,0x8f,0x89,0x0b,0x45,0xba,0x81,0x54,0x25,0x18,0x24,0x14,0xa9,0x0a,0xd1,
- 0x1c,0x24,0x61,0xa0,0x3c,0x3c,0xd0,0x19,0x3f,0xff,0x93,0x6e,0xee,0x9e,0x3c,0x7e,
- 0x82,0x50,0x54,0x25,0x91,0xca,0x35,0xb8,0x52,0x24,0xf8,0x2b,0x1f,0x1a,0x6e,0x6a,
- 0xbe,0x9c,0x5f,0x58,0x9c,0x78,0x2a,0x25,0x82,0x1f,0x0b,0x31,0x28,0x63,0xbb,0xa3,
- 0x93,0xa1,0xe1,0x11,0xa1,0x11,0x91,0xdc,0xe0,0x70,0xa0,0x78,0x41,0x21,0x91,0xb9,
- 0x05,0x25,0xd8,0xd4,0x41,0xd3,0x20,0xad,0xb8,0xaa,0x6a,0xe9,0x92,0xa5,0x1a,0x3e,
- 0x0a,0xea,0x0e,0x93,0xc5,0x3c,0x75,0x3a,0xd5,0xc7,0xef,0x64,0xda,0x19,0xb4,0xdc,
- 0x6c,0x48,0xa1,0x69,0xb9,0xd9,0x6d,0x64,0x33,0x3f,0xd9,0xdd,0x2b,0x11,0x57,0xd5,
- 0x9d,0xc9,0x3a,0x17,0x1b,0x77,0x2a,0x34,0xf2,0x4e,0x0e,0xc3,0x79,0x31,0x90,0xe7,
- 0x10,0xba,0x34,0xd0,0x27,0xf0,0x50,0x81,0x44,0x44,0xf1,0x63,0xe3,0x1b,0x9a,0x2e,
- 0xad,0xd4,0xb8,0xb1,0x57,0x60,0x50,0x70,0x7c,0x42,0xa2,0x5f,0x40,0x50,0xe6,0xd9,
- 0xbc,0x4b,0x2d,0xed,0x9a,0xf1,0x17,0x14,0x78,0x7c,0x62,0x02,0x7a,0x20,0x17,0x2a,
- 0x2a,0xcf,0x64,0x9e,0xe3,0xf1,0x63,0x22,0xa2,0xa2,0x95,0x95,0x97,0xa4,0x1b,0x75,
- 0x32,0x38,0x1c,0x6a,0xdd,0x31,0x40,0x64,0x73,0x0b,0x26,0xc7,0x25,0x30,0x84,0x97,
- 0x97,0x5f,0xd2,0x76,0xf9,0xea,0xd8,0x98,0xa6,0x25,0xed,0x91,0x7c,0xfe,0x63,0xdb,
- 0x54,0x6b,0xc1,0x82,0xbf,0xaf,0x78,0x97,0xa9,0x6f,0x3f,0xc0,0xe0,0x20,0x50,0xd3,
- 0xc7,0x43,0xac,0x04,0x62,0x10,0x70,0x38,0xc8,0x31,0x7d,0x53,0x50,0x63,0xad,0x6c,
- 0xc4,0xe9,0x08,0x86,0x1a,0x60,0x3c,0xc5,0x9c,0x4e,0xf1,0x7b,0x2e,0xf5,0x10,0x46,
- 0x53,0xd1,0x12,0x3c,0x55,0x09,0xac,0xaf,0x14,0x62,0xa4,0x64,0x88,0x5f,0x31,0xc0,
- 0xf0,0x4a,0x20,0x98,0x81,0x87,0x76,0x09,0x2c,0x1a,0x12,0x2b,0x62,0x14,0x1e,0xf5,
- 0x0d,0xee,0x50,0x4e,0x14,0x9b,0x62,0x3e,0xd6,0x93,0x4b,0x3c,0x33,0x4b,0xa5,0x8b,
- 0x9f,0x2a,0x68,0x58,0x9f,0x7f,0xa9,0x7f,0xa7,0xcb,0x71,0x27,0x5d,0xf8,0x6a,0x54,
- 0x38,0x38,0x03,0x7a,0x04,0x52,0x71,0x59,0x19,0x60,0x28,0x07,0xa8,0x85,0x4b,0x7d,
- 0x8c,0xda,0x50,0x56,0x00,0xbb,0x0c,0xf6,0x98,0x2e,0x35,0xc8,0x8c,0x06,0x9c,0x37,
- 0x38,0xe1,0x4b,0x8e,0x02,0x98,0x2f,0xa0,0xf0,0x06,0xc7,0x31,0x88,0x01,0x42,0xc2,
- 0xe5,0x06,0x8c,0xbf,0x0c,0xb6,0xdc,0xc4,0x71,0x08,0xf0,0x77,0xb3,0x63,0x97,0x09,
- 0xf3,0xca,0xff,0x33,0x77,0xe5,0x61,0x51,0xde,0x5a,0xff,0x8f,0xab,0x40,0x15,0x14,
- 0x10,0x14,0x2b,0x2e,0xe0,0x2e,0x9b,0xc8,0x6a,0x15,0xdc,0xb5,0xa8,0xb5,0x2e,0x55,
- 0x5b,0x6d,0xaf,0x5a,0xef,0x75,0x6f,0x2d,0x55,0xac,0x45,0x18,0x66,0x98,0x61,0xdf,
- 0x11,0x41,0x45,0x51,0x44,0x10,0x15,0x17,0x44,0x40,0x10,0x64,0x11,0x64,0x17,0x54,
- 0x14,0x41,0x16,0xd9,0xb7,0x19,0x86,0x45,0x5c,0xaa,0xf7,0x7b,0xbe,0x93,0xe4,0x9d,
- 0xf0,0x3a,0xc3,0x8c,0xbd,0xf7,0x9f,0x76,0x9e,0x3c,0x79,0x92,0x4c,0x72,0x72,0x92,
- 0x9c,0xe4,0x97,0x93,0x37,0xcb,0x5c,0xc7,0x47,0x56,0x0e,0x45,0xd6,0xf6,0xe9,0x91,
- 0x29,0x35,0x7f,0x5b,0xfc,0xed,0xee,0xed,0x3d,0xf0,0xf3,0xc1,0x15,0x76,0xab,0x7f,
- 0xd8,0xf6,0xa3,0xfd,0xaf,0x0e,0x3e,0x81,0xa7,0x00,0x7f,0x93,0xee,0xa4,0xe5,0x17,
- 0x96,0x94,0x3e,0x2a,0xaf,0xaa,0x7e,0x59,0x55,0x5d,0xf7,0xbc,0xaa,0xfa,0x71,0x79,
- 0x45,0x61,0x51,0x69,0x5a,0xfa,0xfd,0xf8,0x84,0xe4,0xc8,0xa8,0xd8,0xc0,0x90,0x30,
- 0xbe,0x9b,0x27,0x28,0x2f,0xbb,0x77,0xef,0xdb,0xf4,0xed,0x96,0x55,0x5f,0xad,0x5b,
- 0xb2,0x74,0x99,0xf5,0xdc,0x2f,0x08,0x04,0xcf,0x9a,0x35,0x0b,0xdd,0x8b,0x35,0x49,
- 0x5f,0x77,0x22,0x68,0xc1,0x00,0xc1,0xe8,0x5c,0xb0,0xb6,0xf6,0x98,0x51,0x9a,0x5a,
- 0x1a,0xea,0xe8,0xa5,0x42,0xf6,0xd1,0x24,0x02,0xc4,0xe4,0x5b,0x30,0xd8,0x07,0x7f,
- 0xf9,0xf5,0x7a,0x7c,0x82,0xb7,0x5f,0xf0,0xe5,0xb8,0xf8,0x92,0xb2,0x72,0xf4,0xd1,
- 0x53,0xfe,0x37,0xac,0xee,0xde,0x9e,0x88,0xc8,0x08,0x9e,0x2b,0x8f,0xeb,0xca,0xe1,
- 0xf2,0xb8,0x2e,0x3c,0x0e,0x8f,0xef,0x42,0x1c,0x60,0x73,0x79,0x3c,0x17,0x9e,0x0b,
- 0x71,0x40,0xf8,0xc9,0xf0,0x53,0x79,0x85,0x45,0x02,0x77,0xef,0xb3,0xe7,0xa3,0xb2,
- 0x73,0xf2,0x1b,0x9b,0x5b,0x14,0xbc,0xde,0x0b,0xc3,0x85,0x5f,0x40,0xe0,0x40,0xe7,
- 0xc2,0xbb,0xc5,0x40,0xc1,0xbc,0x9d,0x94,0xcc,0xf7,0xf0,0x76,0xe2,0xf0,0x83,0x42,
- 0xc2,0x92,0x53,0xd2,0xcb,0x9f,0x55,0x02,0x32,0x0e,0xca,0x61,0xff,0x9b,0xd7,0x07,
- 0x0f,0xda,0x93,0xe4,0x04,0xd4,0x06,0x85,0x36,0xa9,0x40,0xba,0x3f,0x1c,0xb2,0xfb,
- 0x7a,0xed,0x3a,0xa8,0x7c,0xc8,0xa2,0xa3,0x53,0xd4,0x2f,0xff,0xfb,0xc5,0x9b,0xb7,
- 0xef,0x7a,0xfb,0xfa,0x4e,0x85,0x87,0xd3,0xfd,0x39,0x94,0xc8,0x8c,0x99,0xb3,0xee,
- 0xe7,0x3d,0xf0,0xf6,0xf1,0x3f,0x77,0x3e,0x3a,0x2b,0x3b,0xbf,0xa9,0xa5,0x45,0xf1,
- 0x4d,0x08,0x7c,0x81,0x9b,0x8a,0xf2,0x67,0xf2,0xb8,0x25,0x95,0xc0,0xfe,0x57,0x9e,
- 0x2d,0x5b,0x3a,0xea,0x20,0x44,0x90,0x19,0x32,0x74,0xca,0xd4,0x69,0x71,0x37,0x6e,
- 0x46,0x5f,0x8a,0x85,0x71,0xd5,0xfe,0xf0,0x6f,0x4e,0xce,0xae,0xbe,0x01,0xc7,0x2f,
- 0x5e,0x8a,0xbd,0x8f,0x0e,0x05,0xd7,0x75,0x89,0x7b,0xa0,0x62,0xd9,0x53,0x2f,0x80,
- 0xa7,0x9c,0xdc,0x7c,0xbd,0x89,0x7a,0x74,0xcf,0xc0,0x27,0x67,0x0b,0x94,0x2b,0xf6,
- 0x7e,0x3f,0x8d,0x91,0x1a,0xfb,0xf6,0xef,0x77,0xe1,0x39,0x63,0x51,0x21,0x36,0x07,
- 0x1c,0x44,0x90,0x78,0x7c,0x1e,0x97,0xe7,0x02,0x92,0xc3,0x71,0xe1,0x06,0x04,0x05,
- 0xe4,0x15,0x16,0x7a,0x78,0xf9,0x9f,0x3e,0x13,0x89,0x1e,0x15,0x6a,0x68,0x62,0x5e,
- 0x04,0x90,0x53,0x81,0x45,0x45,0x45,0x6e,0xee,0x7c,0x4a,0x13,0x6c,0x10,0x3c,0xf0,
- 0xba,0x60,0x82,0x5c,0x9e,0x2b,0xb1,0x21,0x5c,0xe0,0xce,0xcf,0xcd,0x2f,0x38,0x11,
- 0x1a,0xe6,0x17,0x74,0x3c,0xf1,0x4e,0x7a,0x79,0x65,0x9d,0xb8,0x5b,0xd1,0x26,0xe1,
- 0xb2,0xc7,0x8f,0xc7,0xeb,0x8e,0x97,0xf7,0xa6,0x27,0xaa,0x8a,0xa1,0x4a,0xfb,0xf6,
- 0x1f,0x88,0xbf,0x95,0xe0,0xed,0xeb,0x07,0xf8,0x0b,0xea,0x24,0x7a,0x78,0x57,0xc1,
- 0xf7,0xdf,0x0f,0x00,0x4f,0x67,0x48,0xc7,0xc1,0x3d,0xc5,0x19,0x3b,0xb8,0x98,0x73,
- 0xc2,0x2d,0x57,0xd2,0x9b,0x24,0xcc,0x73,0x71,0x04,0x57,0x8e,0xfd,0xa1,0x5f,0xa0,
- 0x0b,0xb3,0x1b,0x54,0x4a,0x00,0xf8,0x02,0x41,0x74,0xcc,0x65,0x5f,0xbf,0xc0,0xeb,
- 0x37,0x13,0x4b,0x1f,0x97,0x8b,0xba,0x7a,0xe4,0x2d,0x13,0xe1,0x5e,0xdc,0x1d,0x7e,
- 0xe6,0x2c,0x54,0x3b,0x6a,0x02,0x5c,0x5d,0x1c,0x2e,0x3b,0x5f,0xc8,0x94,0xe3,0x1f,
- 0x10,0x98,0x74,0xe7,0x4e,0xe6,0xfd,0x2c,0x81,0x87,0xa7,0x13,0x87,0x7b,0x22,0x34,
- 0x3c,0x31,0x39,0xed,0x59,0x45,0x15,0xde,0x3a,0x2e,0x17,0xd9,0x2b,0x2a,0x2b,0x0d,
- 0x66,0x19,0x52,0xae,0x64,0x05,0xf8,0xcf,0x98,0x3f,0xd9,0x79,0x95,0x94,0x55,0xf5,
- 0xd7,0x05,0x1b,0x3a,0x75,0x18,0x73,0x18,0xfc,0x22,0x20,0x02,0x6e,0x80,0x95,0xd9,
- 0xce,0x08,0xbc,0xc0,0x06,0x4d,0x8d,0xfc,0x65,0x8c,0xb5,0x45,0x82,0x20,0x44,0xdd,
- 0x03,0x88,0x31,0x92,0x24,0x04,0x83,0xfe,0x75,0x62,0xfe,0x45,0x38,0x8e,0xe3,0x90,
- 0x7f,0xa5,0xbc,0x28,0x32,0x8e,0x4f,0xdc,0x78,0x93,0x52,0x27,0x36,0x12,0xe2,0x4e,
- 0x42,0x53,0x80,0x2d,0xbc,0x55,0x18,0xa0,0x0a,0x01,0x1f,0x80,0x9d,0x33,0x86,0x36,
- 0x92,0x11,0xb3,0xba,0xcb,0x68,0x9a,0x46,0x1c,0x19,0x26,0x49,0x71,0x9c,0x31,0x29,
- 0x97,0x4e,0x26,0x89,0x24,0x47,0x23,0x27,0x16,0x05,0xac,0x99,0x12,0x07,0x89,0x86,
- 0x72,0xc4,0xb6,0x09,0x0e,0x37,0x71,0x26,0xf5,0x83,0x15,0x58,0x56,0x11,0x88,0xda,
- 0x6b,0xc4,0xe9,0x32,0xe2,0x88,0x66,0x23,0xde,0xc4,0x10,0x01,0x40,0x16,0xea,0x70,
- 0x36,0x42,0xdb,0x4e,0xc8,0xd7,0x9c,0xdb,0x39,0x9b,0x8b,0xa2,0x99,0x71,0x3b,0xcd,
- 0x79,0x42,0x73,0x57,0x21,0xb2,0x19,0x47,0x27,0xd8,0x16,0xdc,0xe6,0x2f,0xf8,0x6d,
- 0xd6,0x2e,0x75,0xf3,0x38,0x55,0xb6,0x4e,0xe5,0xf3,0x8e,0x16,0xd8,0x1c,0xcd,0x4e,
- 0x2a,0x6c,0xf8,0xcb,0x71,0x56,0x9e,0x79,0xfd,0xf6,0xed,0x31,0x0e,0x6f,0xe9,0xb2,
- 0x15,0xdf,0xff,0xb0,0xdd,0xde,0xfe,0xb0,0xa7,0xef,0x71,0xd0,0x95,0x40,0xcf,0x85,
- 0x59,0x31,0x60,0x2e,0xe0,0x6f,0x4d,0x5d,0x63,0x4d,0x5d,0x43,0x45,0x65,0xcd,0xa3,
- 0x27,0x4f,0x1f,0xe4,0x17,0xa4,0xdc,0x4d,0xbf,0x12,0x77,0x03,0x86,0x23,0x2f,0xff,
- 0x10,0x67,0x17,0xee,0xcf,0xbf,0x1c,0xda,0xf1,0xe3,0xae,0x0d,0xdf,0x6c,0x59,0xb5,
- 0x6a,0xcd,0x82,0x45,0x8b,0xc9,0x89,0x60,0x43,0x43,0x23,0x72,0x22,0x49,0x4f,0x1f,
- 0x41,0x30,0xba,0x9a,0xe3,0xf3,0x71,0xa0,0x08,0x03,0x06,0xa3,0x4d,0x59,0xea,0x5a,
- 0xa0,0x02,0x83,0x3a,0x0c,0xf8,0x4b,0x56,0xa4,0xc9,0x72,0x34,0x51,0x84,0xf7,0xec,
- 0xdd,0x77,0x2b,0x31,0xd9,0xcf,0x3f,0xe8,0xf2,0x95,0x9b,0xc5,0x78,0xd3,0xd1,0x9b,
- 0x37,0x72,0xc7,0x90,0xb6,0x8e,0xb6,0x95,0xab,0x57,0x43,0x42,0x62,0x08,0x11,0xb0,
- 0xd1,0x5e,0x2f,0xbc,0xbe,0x4d,0x0c,0xf9,0xd7,0xdc,0xc2,0x3c,0xed,0xde,0x3d,0xfc,
- 0xb8,0xc3,0x85,0xcc,0xec,0xfc,0xfa,0xc6,0x96,0x57,0xaf,0xe4,0x2e,0xc6,0xc2,0xe8,
- 0x74,0x02,0x5f,0xb2,0x47,0x9f,0x50,0x04,0x03,0x3c,0x87,0x9e,0x0c,0x3d,0x13,0x71,
- 0xee,0xe8,0xef,0x4e,0x5e,0x3e,0xfe,0xd1,0xb1,0xd7,0xf2,0x0b,0x4b,0x9b,0x9a,0xe5,
- 0x6e,0x4b,0xce,0xbe,0x9f,0xab,0xab,0x3b,0x9e,0x4d,0x64,0x08,0x5e,0x55,0xa6,0x0e,
- 0xd9,0x40,0x3a,0x9a,0x8d,0x50,0x1d,0x11,0x76,0xea,0x54,0x3d,0x3e,0x8b,0xd1,0xf7,
- 0xaa,0x5f,0xde,0x3a,0xf9,0x7b,0x74,0xf2,0xa8,0x4f,0x28,0x12,0xd9,0x1f,0xb2,0x57,
- 0x96,0xec,0x50,0xa2,0x44,0xf4,0xf5,0x26,0xe7,0xe4,0xe5,0xf9,0xfa,0x05,0x9c,0x39,
- 0x77,0x11,0x94,0x8b,0xba,0x97,0x8d,0x8a,0x6f,0xc2,0xf7,0x0d,0x08,0x80,0xb9,0x10,
- 0xe5,0x84,0x6c,0x8a,0xa3,0x7b,0xe4,0x28,0x74,0x4a,0x95,0x48,0xca,0x96,0x2a,0x8b,
- 0x54,0xb9,0x06,0xf0,0x17,0x1b,0x1b,0x5b,0xdb,0xe4,0xd4,0x94,0x90,0xd0,0x93,0x47,
- 0x7e,0x3b,0xe6,0x08,0xd3,0x1a,0x0f,0xdf,0x90,0xb0,0xb3,0x09,0x89,0x77,0x8b,0x4b,
- 0x1f,0x37,0xb5,0xb6,0xc8,0x7e,0x08,0x86,0xc1,0x16,0x14,0xb0,0x49,0x13,0xf5,0xa4,
- 0x68,0xb2,0x99,0xa4,0xb6,0x54,0xf3,0xb1,0xab,0x5d,0x45,0x69,0x40,0x36,0x40,0x5a,
- 0xc0,0x86,0x82,0xb3,0x05,0x89,0x48,0x11,0xcc,0x24,0xef,0x65,0xa6,0xfb,0xf8,0x05,
- 0x9c,0x0a,0x8f,0x80,0x39,0x5b,0x5d,0x7d,0xa3,0xbc,0xe5,0x0e,0xdc,0x16,0xef,0xcf,
- 0x9f,0x8f,0xd4,0xd4,0xd0,0xa4,0x94,0x29,0x7d,0x76,0x08,0x31,0x1a,0xea,0x1a,0x67,
- 0x23,0xce,0x85,0x9d,0x3e,0x13,0x10,0x74,0x22,0x31,0x19,0x26,0x72,0x55,0x78,0x73,
- 0x97,0x5c,0x90,0xaa,0x7c,0xf1,0x62,0xe2,0x84,0x49,0x52,0xd3,0x18,0xb6,0x14,0xc1,
- 0x5f,0xdb,0x77,0xec,0x4c,0x48,0x4a,0xf1,0xf6,0x0d,0xb8,0x74,0xf9,0xfa,0xc3,0xb2,
- 0xf2,0xb6,0xf6,0x0e,0x79,0xdb,0x93,0x88,0xe4,0xd8,0xd9,0xad,0xa6,0xec,0x49,0x31,
- 0xc9,0x66,0x9e,0xba,0xe9,0x82,0x15,0x04,0x92,0x86,0x96,0x6a,0x05,0x6a,0x3b,0xbb,
- 0x70,0x62,0xaf,0xc6,0x01,0xfe,0x5e,0xbb,0x71,0x0b,0x66,0xd1,0xa2,0x2e,0xb1,0x02,
- 0xc1,0x6b,0xef,0xec,0x58,0xb2,0x64,0x89,0x54,0xbe,0xec,0xba,0x02,0x03,0x03,0x85,
- 0x9e,0x9e,0xfe,0x2f,0xf6,0xbf,0xe6,0x3c,0xc8,0x0b,0x39,0x11,0x76,0xee,0xfc,0xc5,
- 0x8c,0xac,0x07,0xa0,0x32,0xe3,0x43,0x61,0x72,0xe5,0x59,0x24,0xee,0x5e,0x61,0x67,
- 0x37,0xa8,0x18,0x50,0xf1,0x96,0x5a,0xa0,0x56,0x2c,0xd8,0xec,0xae,0xca,0xc6,0x5f,
- 0x08,0x54,0x19,0x3e,0x6a,0xda,0xf6,0x9b,0x00,0x73,0xc6,0x68,0x5b,0x2f,0x82,0x24,
- 0x40,0x1c,0xaa,0xcd,0x99,0x72,0x3a,0x0c,0x8e,0x36,0x1b,0x1d,0x46,0x0f,0xd4,0x4e,
- 0xdd,0x93,0x3b,0x75,0x6f,0x9e,0xc1,0xc1,0x87,0x06,0x0e,0x35,0x86,0x47,0x9b,0x4c,
- 0xf1,0x77,0x4c,0x13,0xb4,0xac,0x8a,0x50,0xc6,0xc0,0x89,0x49,0x42,0x00,0x14,0xdc,
- 0xb3,0xb1,0xc3,0x14,0xa9,0x87,0xc8,0x2d,0xeb,0x35,0x72,0x66,0x22,0x1b,0x38,0x31,
- 0x91,0x4d,0x58,0x28,0x6c,0x8a,0x41,0xd6,0xd8,0x05,0xb1,0x64,0x22,0x81,0xd4,0xd9,
- 0x14,0x07,0x25,0xd1,0x0c,0x25,0x90,0x4a,0xbd,0x86,0xc4,0x4b,0xd4,0x52,0x8c,0xb0,
- 0x14,0xd0,0x3f,0x82,0x6c,0x0e,0xc5,0x68,0x26,0x84,0x50,0x66,0x78,0xc0,0x0a,0x38,
- 0x49,0x0b,0x30,0x2a,0xc9,0x9a,0x01,0x77,0x02,0xcd,0xe4,0x5f,0xa8,0x3a,0x13,0x52,
- 0x28,0x2e,0x8a,0x09,0x6e,0x33,0x2e,0x0a,0x24,0x5e,0x33,0x1e,0x8e,0xc3,0x45,0xff,
- 0x42,0xb8,0x39,0x1b,0x7f,0x5d,0x45,0xc8,0xe1,0x2a,0x9c,0x27,0x68,0x03,0x33,0x9f,
- 0xdf,0x38,0xdf,0xb5,0xc1,0xd6,0xb5,0x76,0x31,0xf7,0xc9,0xc2,0x63,0x05,0x4b,0x8e,
- 0x65,0x17,0x56,0xb4,0xfe,0xe5,0x38,0x2b,0x1f,0x68,0xde,0x07,0x06,0x06,0x2d,0x59,
- 0xba,0xfc,0xbb,0xef,0x7e,0xf8,0xe9,0xa0,0xbd,0x87,0x4f,0xc0,0xd9,0xf3,0x17,0x12,
- 0x12,0xef,0x64,0xe7,0x16,0x97,0x3d,0xae,0x78,0x51,0xd3,0x50,0xfb,0xb2,0x09,0xcc,
- 0x8b,0x9a,0xc6,0xf2,0x0a,0xb4,0x0a,0x9d,0x9d,0x53,0x90,0x94,0x9c,0x16,0x7d,0x29,
- 0xee,0x64,0x78,0x84,0x9b,0x87,0xdf,0x11,0x47,0xce,0xbe,0x03,0x07,0xb7,0x6d,0xdf,
- 0xb9,0xee,0x9b,0xcd,0xcb,0xbf,0x5c,0x65,0xbb,0x70,0x31,0x68,0xc1,0xa6,0x73,0x24,
- 0x0b,0xd1,0x53,0xf4,0x01,0x82,0x27,0x4c,0x44,0x17,0x44,0x7f,0x3e,0x0e,0x7f,0x0e,
- 0xd6,0x06,0x1c,0x66,0x14,0x61,0xf4,0x5e,0xd2,0x08,0xf4,0x64,0x21,0xfb,0xb2,0xac,
- 0x6d,0x3b,0x7e,0x4c,0xba,0x73,0xd7,0xdb,0x17,0xf0,0xf7,0x46,0x51,0x49,0x59,0x2b,
- 0xda,0xf1,0x22,0x17,0x7f,0x3b,0x45,0xc2,0x6f,0x36,0x6e,0x62,0xfa,0xc2,0x50,0x25,
- 0xa2,0x10,0xd1,0x0d,0x5d,0xa4,0x8b,0xd1,0x7b,0xb7,0x0c,0x8d,0x8c,0xef,0xa4,0xdf,
- 0x73,0xf3,0xf0,0x3a,0x1d,0x7e,0x21,0x23,0x2b,0x07,0x2f,0x1d,0x4b,0x0f,0xef,0x03,
- 0xe6,0x3f,0x1f,0x22,0x23,0x2f,0x4a,0x3d,0xa1,0x08,0xa4,0xfe,0xb5,0x7b,0x4f,0x4a,
- 0x5a,0xda,0x51,0x47,0x27,0x1e,0x5f,0x10,0x12,0x1e,0x75,0xe7,0x6e,0x46,0x65,0x55,
- 0xad,0xb8,0x7b,0xf0,0x6b,0xa9,0xfa,0x5e,0xbf,0x3a,0x7c,0xe4,0x08,0x94,0x6b,0x80,
- 0x1f,0xfc,0x1c,0x30,0x7b,0xbf,0x19,0x55,0xe2,0xa4,0x32,0x82,0x6a,0xac,0xa9,0xad,
- 0x6d,0x46,0xa7,0x95,0x7b,0x14,0xdc,0x95,0x84,0x76,0xd1,0x88,0xc5,0xcd,0x2d,0xcd,
- 0x0b,0x17,0x2e,0x66,0x5f,0xf2,0x49,0x1c,0xa0,0x31,0xe5,0x15,0x14,0xfa,0x07,0x04,
- 0x9d,0x39,0x1b,0x95,0x99,0xfd,0x00,0x8a,0xdc,0xff,0x5a,0x2e,0x7c,0x80,0x39,0x75,
- 0x3a,0x1c,0xe6,0x18,0x52,0x44,0x68,0x4d,0xca,0x32,0xc9,0x40,0x80,0xc4,0x4b,0xb4,
- 0x30,0xa9,0x68,0xf2,0xd2,0x92,0xc8,0x30,0x70,0xd9,0x2e,0x5c,0x58,0x58,0x52,0x12,
- 0x7e,0xf6,0xbc,0xc0,0xdd,0xdb,0xcb,0xdb,0x1f,0x54,0x9b,0xcb,0x57,0xe3,0xb3,0x72,
- 0x0a,0x5e,0xd4,0x36,0x88,0xbb,0x7b,0xdf,0xc9,0x7c,0x7d,0x78,0xfd,0xf6,0x75,0x68,
- 0x58,0x18,0xc0,0x1c,0xe5,0x53,0xea,0x25,0x41,0xfa,0x4c,0x1e,0xcd,0x97,0x2d,0x1b,
- 0xe4,0x5f,0xa9,0x22,0x30,0xd1,0x28,0x57,0x92,0xb2,0xeb,0x4d,0xd2,0x4b,0x4d,0x4b,
- 0xf3,0xf5,0x0f,0x0a,0x0b,0x8f,0xc8,0xcc,0xce,0xad,0x7d,0xd9,0x80,0x1e,0x15,0x92,
- 0x33,0xe0,0x43,0xc5,0x5e,0x8c,0x89,0x19,0x39,0x42,0x5d,0x5e,0x5d,0x11,0xae,0x48,
- 0xc8,0xf0,0x61,0xaa,0x21,0xa1,0x30,0x97,0x8b,0xf4,0x0f,0x08,0x49,0x48,0x4c,0x29,
- 0x7f,0x56,0xa9,0x58,0xff,0x6d,0x68,0x6c,0x98,0x36,0x6d,0xfa,0xa0,0xcf,0x7a,0x52,
- 0xca,0x1b,0x37,0x6f,0xba,0x9b,0x9e,0xe1,0xe9,0x1b,0x04,0xf8,0x5b,0x52,0xf2,0xb8,
- 0xbd,0x43,0xd1,0x71,0x6f,0x30,0xeb,0x37,0x7c,0xc3,0xae,0x2b,0x59,0x26,0xd9,0xff,
- 0xca,0xcb,0x97,0x56,0x1d,0x5b,0x18,0x0e,0x3b,0x38,0xc4,0xdd,0xb8,0xe5,0xeb,0x17,
- 0x74,0xed,0x66,0xc2,0xc3,0x47,0x4f,0x85,0x22,0x31,0xba,0x36,0x43,0x2e,0x4a,0x8a,
- 0x57,0xd8,0x7d,0x49,0x5f,0x36,0xa4,0xad,0x20,0xd5,0x82,0xe0,0x85,0xae,0x74,0x31,
- 0x3a,0x26,0x33,0x3b,0xe7,0x56,0x62,0x6a,0xd9,0xe3,0xf2,0xd6,0x76,0x21,0x7a,0x1f,
- 0x5c,0x3e,0xfe,0x82,0xf0,0xec,0xdd,0x7f,0x80,0xbe,0xc1,0xcd,0xb4,0x85,0x9c,0x02,
- 0xca,0x16,0x5f,0x9e,0xb4,0x0f,0xda,0x9d,0xd5,0xc7,0xe8,0x19,0xfe,0x52,0x86,0x17,
- 0x42,0x91,0x31,0xc3,0x6b,0xa4,0x04,0xad,0x8c,0x0f,0x57,0xe9,0x6d,0x8a,0x1a,0x6d,
- 0xbe,0x73,0xe4,0x04,0xcb,0x61,0x9a,0xfa,0x4a,0xc3,0xb5,0x95,0x55,0xc7,0xa8,0x6a,
- 0xcf,0xd2,0x9c,0xba,0x4c,0xc7,0xc6,0x61,0xfa,0xce,0x0c,0x23,0xc7,0x16,0xb4,0xa0,
- 0x8a,0xb0,0x12,0xeb,0x8f,0x58,0xc5,0x33,0xa1,0xc9,0xff,0x84,0x01,0x54,0x52,0x1c,
- 0x1f,0x58,0x02,0x14,0x9b,0x8d,0x3f,0x95,0x1a,0x62,0xcd,0x17,0x19,0x0e,0x59,0xc8,
- 0x65,0xb6,0x33,0xc9,0x3a,0x4c,0xb1,0x9a,0x3c,0x90,0x16,0x27,0x99,0x8d,0x59,0x45,
- 0xff,0x72,0x18,0x22,0x24,0x89,0xa9,0x84,0x26,0x56,0x75,0xf1,0xbf,0x1c,0x26,0xfe,
- 0x6c,0x56,0x64,0x62,0x93,0x8f,0xb6,0x28,0x17,0x1e,0x2b,0x2d,0x36,0xe6,0x5c,0xc6,
- 0x20,0x37,0x0f,0xbb,0x09,0xd4,0xb2,0x0d,0x5f,0xcc,0xb2,0xbb,0xac,0x05,0x22,0x6b,
- 0x81,0x10,0xcc,0x5c,0x41,0xe7,0x42,0xf7,0xc6,0x45,0x6e,0xf5,0xcb,0xdd,0x2b,0x97,
- 0xf1,0x9f,0x2d,0x72,0x2e,0x5a,0xc5,0xcd,0x7d,0xde,0x20,0xfa,0xcb,0x71,0x56,0x81,
- 0x49,0x4e,0x4d,0x5d,0xba,0x74,0xd9,0x86,0x8d,0x9b,0x77,0xed,0xfd,0x19,0xc6,0xc0,
- 0x53,0xe1,0xe7,0xc9,0x21,0x9d,0xb2,0xc7,0x4f,0xab,0xaa,0xeb,0xea,0xea,0x9b,0xea,
- 0x9b,0xda,0x60,0xe8,0xae,0xae,0x6d,0x7c,0xf2,0xac,0xb2,0xf8,0x61,0x59,0x7a,0x46,
- 0xee,0xcd,0x5b,0xb7,0xa3,0x62,0x62,0x83,0x8f,0x9f,0x74,0xf7,0xf4,0xfb,0xed,0xf7,
- 0x63,0xfb,0xf6,0xff,0xb4,0xf5,0x87,0xed,0xeb,0xd6,0x6f,0x5a,0xfe,0xe5,0x6a,0x9b,
- 0x05,0x8b,0xc9,0x42,0xb4,0x91,0x91,0xd1,0x2c,0x83,0x59,0xd3,0xa7,0xcf,0xd0,0x9b,
- 0xac,0x37,0x69,0x12,0x7a,0x29,0xf8,0xf3,0x71,0xba,0x3a,0x63,0xc7,0x8e,0x1e,0x3d,
- 0x5a,0x0b,0x2b,0xc2,0x5a,0xa3,0x40,0x17,0x1e,0x45,0x56,0xa4,0x61,0xd8,0x47,0x40,
- 0xac,0x3a,0x72,0xcb,0x96,0xad,0x69,0xf7,0x32,0x7d,0x7c,0x83,0x62,0xaf,0xdc,0x28,
- 0x2c,0x2e,0x6b,0xef,0xe8,0x54,0xa0,0xff,0x76,0xf7,0x76,0xff,0x73,0xdb,0x76,0xf2,
- 0xed,0x18,0x9d,0x69,0x1a,0x32,0x94,0x76,0x25,0xe6,0xc6,0x0f,0xd6,0x16,0xaf,0x99,
- 0x33,0x66,0xa6,0xdc,0x4d,0xf3,0xf4,0xf6,0x0f,0x3b,0x7d,0x2e,0x3d,0x33,0x07,0x74,
- 0x19,0xd0,0x1c,0x15,0x4c,0x9e,0x6f,0xc6,0x27,0x90,0x65,0x52,0xf2,0x90,0x04,0x9a,
- 0xe2,0x2a,0xab,0x18,0x99,0x18,0x65,0xe7,0xe4,0xb8,0x0a,0xdc,0x1d,0x9d,0x5d,0x02,
- 0x82,0x42,0x62,0xaf,0x5c,0xcb,0x2f,0x2a,0xad,0x6f,0x6a,0x97,0x77,0x33,0x46,0x75,
- 0x4d,0xad,0xed,0x82,0x45,0x04,0x68,0x98,0xd7,0x28,0x24,0x2c,0x91,0x93,0x9b,0x0c,
- 0xb7,0x24,0x50,0x89,0xf9,0x6b,0xb4,0xf6,0xe8,0x88,0x73,0x51,0x3d,0x3d,0x7d,0xe8,
- 0x62,0x46,0xf9,0xd3,0x8f,0x77,0xef,0xff,0xe8,0xed,0xeb,0x83,0x49,0x48,0x56,0xce,
- 0x7d,0x9d,0x31,0x3a,0x74,0x4b,0x1b,0x19,0x22,0x80,0xac,0x96,0x96,0xf6,0xfd,0xbc,
- 0xfc,0xc0,0xe0,0xd0,0x93,0xe1,0x91,0x19,0x68,0xbf,0x4a,0x23,0x7e,0xcf,0x51,0xee,
- 0x20,0x7f,0x21,0xea,0xa2,0xa6,0xba,0x26,0x99,0xea,0x33,0x5f,0x04,0x86,0xa2,0x9a,
- 0x24,0x73,0x7e,0xba,0x6b,0x9d,0xba,0x65,0xbd,0x52,0x75,0xce,0x4e,0x4b,0x63,0xb2,
- 0x8b,0x8f,0x8e,0xa4,0xa9,0x7c,0xb6,0x79,0xcb,0xe6,0xfc,0x82,0xfc,0xab,0xd7,0x6f,
- 0x44,0x5e,0xbc,0x14,0x7d,0xe9,0xda,0xed,0xe4,0x94,0xfc,0x82,0x62,0xd0,0x6e,0x44,
- 0x5d,0x3d,0x6f,0xdf,0x0e,0xb2,0xdf,0xb8,0xbb,0xb7,0xc7,0xd5,0xd5,0x0d,0x6a,0x89,
- 0x66,0xca,0xa6,0x4c,0x38,0x67,0xaa,0x42,0x52,0xc9,0x74,0xed,0x91,0xde,0x86,0xca,
- 0x2e,0x02,0x89,0x2c,0x45,0x0d,0xd2,0xea,0x8e,0xd3,0xbd,0x9d,0x94,0x1c,0x04,0x82,
- 0x7e,0xfa,0x4c,0x5a,0x46,0x4e,0x4d,0x5d,0x7d,0x5f,0x5f,0xbf,0xdc,0x01,0xff,0x3f,
- 0x1f,0xe2,0xe3,0x6f,0x6b,0x8d,0xd2,0x1e,0x28,0xe3,0xc7,0x2d,0x4e,0x9b,0x18,0x28,
- 0x83,0xcc,0x7b,0xfa,0x78,0x45,0x46,0x45,0x03,0xfe,0xde,0xba,0x9d,0xfa,0xe4,0xe9,
- 0xf3,0xae,0xee,0x6e,0x05,0x4b,0xa9,0xad,0xed,0xed,0xc6,0xc6,0x26,0x6c,0xa4,0xa0,
- 0xa5,0x60,0x54,0xb9,0x7f,0x0c,0x5d,0xfd,0xd5,0x9a,0xcc,0xec,0xfb,0xa0,0x75,0x46,
- 0xc7,0xc6,0xe5,0x17,0x97,0xb5,0xb6,0x89,0x14,0xe3,0xef,0xb6,0x6d,0x3b,0x68,0x25,
- 0x0c,0xc1,0x3b,0xb8,0x68,0xc7,0x21,0x02,0xcf,0x4c,0x5a,0x94,0x94,0x89,0x61,0x84,
- 0x41,0xd2,0x17,0x48,0xbe,0x6c,0x49,0xa6,0x4d,0xbc,0x6b,0xcf,0x9e,0x9b,0xb7,0x12,
- 0xbd,0x7c,0x03,0xaf,0x5e,0xbb,0x51,0xfc,0xf0,0x49,0xa7,0xa8,0xeb,0xf5,0x1b,0xb9,
- 0xdf,0x7a,0x7a,0x5f,0xf5,0xad,0x5d,0xb7,0x9e,0x2d,0x2d,0xa4,0xa2,0xc8,0x44,0x68,
- 0x40,0x14,0x71,0x84,0xad,0x5b,0xb7,0x56,0x54,0x56,0x15,0x97,0x3e,0xa9,0x6f,0x6c,
- 0xee,0xee,0xe9,0x53,0xa0,0xe0,0x7f,0xc0,0xc7,0xb1,0xb9,0x5c,0x1e,0x61,0x52,0x4a,
- 0x3c,0x08,0x65,0x3a,0x6e,0x7c,0xd4,0x46,0x1f,0x0b,0x30,0x5b,0xbc,0xe9,0x4c,0x83,
- 0xca,0x33,0xbd,0xd6,0x6f,0xd4,0xd4,0x25,0xe6,0xce,0x4d,0x26,0x18,0x32,0x4c,0x88,
- 0xbe,0x06,0xb0,0xe2,0x58,0xa7,0xff,0x6d,0x8c,0x86,0xde,0x17,0x2a,0xc3,0x34,0x87,
- 0xfc,0x03,0x92,0x7f,0xa6,0xfc,0x99,0xa6,0x8a,0xea,0x68,0x15,0x55,0x6d,0x65,0x95,
- 0x91,0x10,0x32,0x74,0x88,0xb2,0xca,0x88,0x09,0x5a,0x73,0x7e,0x98,0xb6,0x2b,0xd3,
- 0xd4,0xa5,0xc3,0x9c,0x87,0x16,0xa8,0xe7,0x70,0x19,0xed,0x0f,0x88,0x98,0x62,0x37,
- 0xc0,0xab,0x29,0x97,0x71,0x0f,0xea,0x85,0x98,0x00,0xb2,0x00,0x46,0x8a,0x23,0x03,
- 0xd8,0x21,0x28,0xe4,0x32,0x90,0x3d,0x47,0xa2,0x5a,0x9a,0xb9,0x30,0xf9,0x9a,0x61,
- 0xdb,0x94,0xcb,0xe4,0x3e,0x1b,0xb3,0xc1,0x94,0x08,0xaf,0xfd,0x12,0x3d,0xd4,0x9c,
- 0xda,0xac,0xf2,0x22,0x5c,0xe6,0x76,0x92,0x8c,0x80,0x13,0x16,0x29,0xa4,0xd8,0x9a,
- 0xb9,0xe2,0xdc,0x25,0xcc,0x80,0x17,0x8c,0x31,0xc9,0x9d,0x87,0xbd,0xd8,0xc1,0x82,
- 0x57,0x11,0x1b,0x70,0xcd,0x3e,0x0e,0xb1,0x70,0x15,0x59,0x80,0xcd,0x17,0x59,0x09,
- 0x44,0x73,0xdd,0x84,0xf3,0xdd,0x85,0xf3,0x3d,0xb0,0xf1,0x14,0x2e,0xf6,0x6e,0x5f,
- 0xe1,0x53,0xbf,0xd4,0xa3,0x76,0x85,0xdb,0xd3,0x15,0xae,0x65,0xfb,0x4e,0x14,0x37,
- 0x77,0x29,0xea,0x05,0x7f,0xb9,0xa9,0xa9,0xab,0x5b,0xb7,0x61,0xe3,0xda,0xf5,0x9b,
- 0x76,0xed,0xf9,0xf9,0x98,0xb3,0x2b,0x8c,0x35,0x71,0xd7,0x6f,0x65,0x64,0xe5,0x3e,
- 0x7c,0xf4,0xe4,0x79,0x55,0x1d,0x20,0x6f,0x43,0x73,0x27,0x48,0x7b,0x7d,0x63,0xeb,
- 0xf3,0xea,0xea,0xb2,0x27,0xcf,0x1e,0xe4,0x97,0xa4,0xde,0xcd,0x8c,0xbb,0x7e,0x1b,
- 0xb4,0xaa,0x80,0xe0,0x50,0x9e,0xab,0xbb,0xc3,0x91,0xdf,0xf7,0xec,0x3d,0xf0,0xdd,
- 0xd6,0x7f,0xae,0x5d,0xbf,0x71,0xf9,0x97,0x5f,0xd9,0x2c,0x58,0x04,0x10,0x3c,0x67,
- 0x8e,0x19,0x40,0xb0,0x81,0x81,0xc1,0xf4,0xe9,0xd3,0xf5,0x27,0xeb,0x4f,0xd0,0x9b,
- 0x34,0x7e,0xfc,0x04,0xdd,0xf1,0x13,0x91,0x22,0x3c,0x06,0x74,0x61,0xf2,0x43,0xba,
- 0xb0,0xa6,0x86,0xd6,0xc8,0x11,0x23,0x41,0x1d,0x06,0xfb,0x9b,0x8d,0x1b,0xd3,0x33,
- 0xb2,0x7d,0xfc,0x60,0x0e,0x1f,0x07,0xf8,0xdb,0xd6,0xa1,0x68,0xfd,0x19,0x7a,0xee,
- 0x9e,0x3d,0xfb,0xd9,0x23,0x3f,0x5d,0xbc,0xa2,0x5e,0x02,0x22,0xc3,0x54,0x86,0x4d,
- 0xd6,0x9f,0x02,0xf8,0xeb,0xed,0xe3,0x7b,0x3a,0xfc,0x3c,0x64,0x01,0xf3,0x8a,0xbe,
- 0x3e,0x45,0x9b,0x81,0x53,0xd3,0xef,0x81,0x3e,0x4e,0x46,0x72,0xd2,0x4f,0xc1,0x31,
- 0x66,0xf4,0x98,0xe8,0xd8,0xd8,0xf0,0xb3,0x11,0x30,0xeb,0x70,0x75,0xf3,0x08,0x3f,
- 0x1b,0x95,0x9c,0x9a,0x01,0xca,0x4b,0xa7,0x50,0x2c,0xef,0xd3,0x2a,0x0c,0xe0,0x33,
- 0x66,0xcc,0x04,0x7e,0xc8,0x92,0x1a,0xe9,0xfb,0x74,0x79,0x8d,0x70,0x0b,0x21,0x64,
- 0x71,0x8f,0x98,0xbd,0xfb,0xf7,0xb7,0xb4,0xb6,0xf5,0xf7,0xbf,0x51,0x74,0xda,0xf4,
- 0xff,0x3e,0x80,0x4e,0xd1,0xd1,0x29,0x6c,0xef,0xec,0x74,0xf7,0xf2,0x84,0x02,0x32,
- 0xc9,0x95,0x54,0x08,0xa8,0x01,0x4d,0x7c,0x13,0x6f,0x76,0xf0,0xf1,0xd0,0xd3,0x67,
- 0x2f,0x40,0x91,0x5f,0x7c,0x0a,0x7f,0xaf,0xc4,0xc5,0x69,0x6b,0x8d,0x26,0x44,0x08,
- 0x05,0x30,0xc3,0x87,0x0d,0x27,0x03,0x2f,0xe2,0x56,0x99,0xb5,0x2a,0x88,0x33,0xa2,
- 0x23,0x1b,0x5d,0x33,0xa4,0x05,0x24,0xad,0x80,0x02,0x07,0x4b,0xcb,0xd4,0x00,0x1e,
- 0x72,0x41,0x99,0xdd,0x7f,0xe0,0xa7,0xaa,0xea,0x9a,0xdc,0xbc,0xfc,0x9c,0x9c,0xc2,
- 0x82,0xe2,0x92,0xa7,0x15,0x2f,0x9a,0x5a,0xda,0x61,0x06,0x02,0x73,0x8c,0x41,0xd7,
- 0x28,0x40,0x69,0xfa,0xf7,0xae,0xbd,0xaa,0xaa,0x6a,0x94,0x0d,0x3a,0x2a,0x32,0xc4,
- 0xd9,0x0e,0x59,0x9e,0x95,0x98,0xac,0x99,0xb4,0x43,0x86,0x4a,0x95,0x88,0x0c,0xb9,
- 0x08,0x7f,0x13,0x93,0x83,0x43,0x4e,0x9c,0x08,0x3b,0x93,0x9a,0x9e,0x05,0xf8,0xdb,
- 0xdb,0xa7,0x68,0x01,0xe1,0x6e,0x7a,0x3a,0x48,0x08,0xad,0x0d,0x54,0x0f,0xca,0x1f,
- 0xad,0xa3,0x12,0x2f,0x50,0x06,0x55,0x8e,0xc7,0x77,0x8d,0xbe,0x74,0x15,0xf0,0xf7,
- 0xe6,0xad,0x64,0x98,0xeb,0x0a,0x45,0xdd,0x6f,0xdf,0xbd,0x93,0xb7,0x20,0xd3,0x29,
- 0x12,0x5b,0x59,0x5a,0x4b,0x31,0x49,0xd5,0x61,0xe2,0x5d,0xb2,0x78,0x69,0x66,0x4e,
- 0x8e,0xb7,0x5f,0x10,0xe0,0x6f,0x5e,0x71,0x69,0x4b,0xab,0x50,0x31,0xfe,0x82,0x6e,
- 0x48,0xd2,0x92,0xb5,0x77,0xa9,0xe2,0x0f,0xb4,0x11,0x6b,0xb2,0x44,0x32,0xa5,0xb2,
- 0x41,0x04,0x98,0xa9,0x46,0xfc,0x2f,0x01,0xcd,0x6d,0x3b,0xb7,0xdd,0x4e,0x4a,0x61,
- 0xf0,0xb7,0xe4,0x09,0x3a,0x26,0xf0,0x5e,0x6e,0x2f,0x06,0x99,0xdc,0xba,0xf5,0x7b,
- 0x22,0x66,0x6c,0xca,0xb4,0x15,0x68,0x3b,0x82,0xbd,0x76,0xdd,0xda,0x86,0x86,0xe6,
- 0xc6,0xe6,0x36,0x71,0x77,0x8f,0x82,0xf3,0x83,0x4c,0x07,0x79,0xf7,0xd6,0xdb,0xd7,
- 0x57,0x45,0x72,0xf9,0x3c,0x25,0x28,0xc5,0xb3,0xac,0x3c,0x0f,0x2a,0x0c,0x84,0x37,
- 0x46,0x72,0x58,0x5d,0x03,0x6c,0x70,0xeb,0xda,0x1c,0xb0,0x12,0x30,0x2b,0xa2,0x00,
- 0x34,0x00,0x3a,0xc6,0x8e,0x0d,0x13,0x17,0x1e,0x1e,0xae,0xa6,0x83,0xd4,0x67,0x65,
- 0x75,0x75,0x3d,0xdb,0x49,0x4b,0x1c,0xa7,0x6c,0x0c,0x9f,0xb1,0xfd,0xea,0xe4,0xef,
- 0xaf,0xe8,0xaf,0x3f,0xa1,0x63,0xb5,0x6b,0xb8,0xce,0x4c,0xac,0x4a,0x2b,0xa9,0xe9,
- 0x98,0xe8,0x6f,0xb9,0x82,0x20,0x98,0x82,0x0e,0x06,0x23,0x80,0x2a,0x69,0xd5,0x6f,
- 0x50,0xc3,0x1b,0x4c,0x49,0x94,0x31,0x84,0x9a,0x19,0xe6,0x10,0xa7,0x12,0x99,0xf3,
- 0x30,0xae,0xf1,0xba,0xe4,0x92,0xfa,0x24,0x65,0x99,0x7f,0xe7,0x0c,0x20,0x29,0x20,
- 0x66,0x97,0xa2,0xb4,0x8a,0xb2,0x90,0x4d,0x3b,0xe0,0xb5,0xe0,0x83,0x11,0x5b,0xf2,
- 0x41,0xe7,0xed,0x02,0xf0,0xb5,0x76,0x17,0x2f,0xf0,0x16,0xcf,0xf7,0x16,0x2e,0xf4,
- 0x11,0x2e,0xf7,0x6d,0x5f,0xe5,0x57,0xf7,0x75,0x40,0x9d,0x9d,0xfb,0xb3,0xaf,0xdd,
- 0x8b,0x8e,0xdf,0xaa,0x79,0xfd,0x77,0x3d,0x7c,0x44,0x4c,0x5f,0x7f,0x9f,0xe3,0x31,
- 0x97,0xd5,0x5f,0x7d,0xbd,0x63,0xc7,0xbf,0x1c,0x8f,0x71,0x02,0x82,0x42,0x2f,0xc4,
- 0xde,0xb8,0x9b,0x9e,0x5d,0x54,0xf2,0xe8,0x79,0x55,0xcd,0xcb,0x86,0xa6,0xe6,0xd6,
- 0x8e,0xc6,0xe6,0x76,0x0c,0xc1,0xed,0x80,0xc8,0xa5,0x8f,0x9e,0xe4,0x3e,0x28,0x4c,
- 0x4a,0x49,0x03,0x08,0x8e,0x38,0x1f,0xed,0x13,0x14,0xea,0xcc,0xf3,0x3a,0xe4,0x80,
- 0x20,0x18,0x69,0xc1,0x1b,0x36,0xad,0xb0,0x5b,0x63,0xbb,0x70,0xf1,0x17,0xf3,0xd0,
- 0xa1,0x24,0x13,0x13,0x13,0x43,0x43,0x43,0x00,0x20,0x40,0xe1,0xc9,0x93,0x27,0x03,
- 0x0a,0x03,0x04,0xa3,0xe5,0xe8,0xcf,0x3f,0x1f,0x33,0x66,0x0c,0x81,0x60,0x2d,0xad,
- 0xd1,0xa3,0x46,0xa1,0x2b,0x2b,0x35,0xd5,0xb5,0x56,0xae,0x5c,0x95,0x91,0x75,0x1f,
- 0xe3,0xef,0xb5,0xbc,0x82,0x87,0x90,0xb5,0x82,0x13,0x1f,0xf8,0x94,0xd0,0x91,0x81,
- 0x93,0xc5,0xf8,0x72,0x0f,0xe2,0x20,0xf7,0x5e,0xa2,0x81,0x45,0x19,0x7d,0xae,0x02,
- 0x78,0x9a,0x38,0x61,0x52,0xc2,0xed,0x24,0xbf,0x80,0x60,0x50,0xf0,0x53,0xd3,0xd1,
- 0x03,0x6d,0x48,0xff,0x95,0x7f,0x96,0x33,0x37,0x2f,0x0f,0xe6,0x03,0x90,0x96,0x4d,
- 0x1f,0x94,0xf4,0xcd,0x9b,0xbf,0xcd,0xca,0xce,0x71,0xe6,0xba,0x3a,0x71,0xf8,0x3e,
- 0xfe,0x41,0x31,0xb1,0x71,0xf7,0x73,0x0b,0xf0,0xa7,0xa8,0x57,0xef,0xc8,0xf8,0xf9,
- 0x31,0x62,0x02,0x82,0xa4,0xa5,0x67,0x18,0x1a,0x1a,0xa3,0x9d,0x66,0x2a,0xc3,0x08,
- 0x41,0xc2,0x15,0xe9,0xc2,0x94,0x73,0x15,0xfc,0x59,0x10,0xe8,0xb7,0x77,0x08,0x19,
- 0xbd,0x4f,0x01,0xf8,0xbe,0x7d,0xdb,0x25,0x16,0x43,0xeb,0x54,0x3c,0x7f,0x61,0x6b,
- 0xbb,0x80,0x96,0x9a,0x6e,0x6c,0x03,0xca,0x1a,0x1a,0x1a,0xa9,0x77,0xd3,0x40,0x77,
- 0x3b,0x75,0x26,0x32,0x2d,0xfd,0x7e,0x55,0x75,0xad,0xe2,0xfd,0x57,0xc9,0x77,0x52,
- 0x60,0x8e,0x44,0xd2,0x02,0x35,0x60,0x98,0x54,0x1d,0x9b,0x67,0xf0,0x7e,0x54,0xc3,
- 0xd8,0x8b,0x9e,0x9b,0xc4,0xc3,0x38,0x78,0x69,0x13,0xb0,0x5b,0x81,0x31,0xf8,0x5f,
- 0x42,0x59,0xca,0x0b,0x05,0x3f,0xfa,0xbb,0x63,0x13,0xba,0x65,0xb0,0xad,0xa5,0xb5,
- 0x43,0xd4,0xd5,0xd5,0xdb,0xdb,0xa7,0xf8,0xb4,0x54,0x6b,0x5b,0xc7,0xee,0x3d,0xfb,
- 0x99,0xbd,0xf4,0x2c,0xae,0x10,0x41,0xc9,0xbe,0x3e,0x52,0x04,0x5a,0x2d,0x7f,0xde,
- 0x10,0x52,0x00,0xa6,0xd7,0xe3,0xe3,0x43,0xc3,0xc2,0x4f,0x9e,0x8a,0x48,0xbd,0x07,
- 0x13,0x98,0xba,0x9e,0x1e,0x45,0xa7,0x74,0x41,0x66,0x74,0x75,0xc7,0x13,0x96,0x68,
- 0xa5,0xc9,0x4a,0x26,0xd8,0x23,0xd4,0x46,0xfe,0x76,0xf4,0xd8,0x95,0xb8,0x9b,0x80,
- 0xbf,0xf1,0x09,0x89,0x30,0xd5,0xc5,0x1b,0xf9,0xe4,0x0e,0x14,0xbd,0xaf,0x5e,0x2f,
- 0x5a,0xbc,0x44,0x96,0x32,0xdb,0x58,0x59,0xcf,0xcd,0xcd,0x2b,0x0a,0x08,0x0c,0xbe,
- 0x18,0x13,0xf7,0xa0,0xa0,0xa4,0xa9,0xa5,0x45,0xf1,0xfc,0xed,0xa8,0xa3,0x93,0x9a,
- 0x9a,0x9a,0x82,0x46,0x61,0x7b,0x69,0xc5,0xb2,0x73,0x27,0x72,0xc2,0xae,0x31,0x62,
- 0x36,0x6d,0xfe,0x36,0x39,0x35,0xdd,0xd3,0x37,0x30,0xe6,0xf2,0x8d,0x82,0xa2,0x87,
- 0x1d,0x9d,0x62,0x98,0x09,0xc8,0x3d,0x45,0xf8,0xc7,0xbb,0xbd,0xfb,0xf6,0x93,0x09,
- 0xe4,0xa0,0xf9,0x12,0x2f,0x09,0xf7,0xf0,0xf4,0x86,0x59,0x37,0xba,0x53,0xfb,0x53,
- 0x83,0x2a,0xba,0xd7,0xfa,0xed,0x1b,0x0f,0x0f,0x4f,0xc2,0xb3,0xbc,0x4a,0xfb,0xdf,
- 0x8c,0x14,0x93,0x23,0x35,0xb4,0x0c,0xb6,0x46,0x5a,0x0b,0x28,0x3a,0x88,0xcd,0x7e,
- 0xaf,0xd2,0x9e,0xb3,0x6d,0xe8,0x10,0x95,0x21,0x43,0x54,0x34,0x67,0xae,0x34,0xd8,
- 0x79,0x6d,0x0e,0xa7,0x05,0x54,0x36,0x1c,0xa7,0xcb,0x9c,0x2f,0x02,0xec,0x40,0x31,
- 0x9d,0x6a,0xf5,0xbe,0xf2,0x57,0x1b,0x8b,0x4e,0xee,0xab,0xaa,0x8f,0x99,0xb2,0xd6,
- 0x87,0x22,0x11,0x86,0x18,0x69,0xdc,0x91,0x67,0x58,0x91,0xe5,0x1a,0x33,0x7e,0x8f,
- 0x95,0x40,0x41,0x84,0x2e,0x04,0x79,0x58,0xcd,0xc4,0xca,0xa6,0x90,0x6d,0xff,0xb7,
- 0x86,0x9d,0xca,0x42,0x20,0xc6,0xbc,0x75,0x61,0xc4,0xec,0x92,0x78,0x29,0xe7,0x10,
- 0x2e,0xc4,0xb5,0x01,0x75,0xc2,0x60,0x2e,0x8e,0x89,0xaa,0xc8,0x4a,0x80,0x40,0xd6,
- 0x52,0x80,0x34,0x62,0x88,0x36,0x17,0xa0,0xd6,0x0d,0x02,0x85,0xf3,0xdc,0x85,0xa0,
- 0xf6,0xda,0x7a,0x74,0xcd,0xf7,0x12,0xda,0x7a,0x75,0xd9,0x00,0xf2,0xfa,0x0a,0x97,
- 0xf9,0x09,0x97,0x07,0x08,0xed,0x02,0x85,0x1b,0x83,0xeb,0xd7,0xfb,0xd7,0x6c,0xf0,
- 0x7b,0xbe,0x25,0xf0,0x51,0xde,0x33,0xe1,0xdf,0xf9,0x69,0x33,0x22,0xa8,0x97,0xaf,
- 0xc4,0xad,0x5e,0xb3,0x1e,0x14,0xd8,0xc3,0x0e,0x8e,0xde,0xbe,0xc1,0x51,0xd1,0x97,
- 0x93,0xee,0xa4,0xe7,0x15,0xa2,0x6b,0xf7,0x6a,0x5f,0x36,0xb7,0xb4,0x09,0x9b,0x5b,
- 0x3b,0x9b,0x5a,0x5a,0x01,0x85,0x41,0x6d,0xac,0xa8,0xac,0x2d,0x2e,0x7e,0x9c,0x9d,
- 0xf3,0x20,0xf1,0x4e,0x6a,0xec,0xd5,0x6b,0xe1,0x11,0x17,0xbc,0xfd,0x43,0x5c,0x78,
- 0xee,0xf6,0x87,0x7e,0xdb,0xbd,0xf7,0xc0,0x96,0xef,0xb7,0xad,0xdf,0xb0,0x79,0xe5,
- 0xca,0xd5,0x0b,0x17,0x2f,0x9d,0x67,0x63,0x6b,0x69,0x65,0x6d,0x6a,0x3a,0xc7,0xd8,
- 0xc8,0x84,0x6c,0x8a,0x9e,0x3a,0x6d,0x9a,0xfe,0xe4,0x29,0x13,0xf5,0x26,0xea,0x8e,
- 0x1f,0x4f,0x3e,0x0a,0x8f,0x05,0x20,0xd6,0xd1,0xd1,0xc6,0x3f,0x2d,0x2d,0xad,0x2f,
- 0xed,0xec,0x32,0xb3,0xb3,0x7d,0x02,0x4e,0xc4,0xc4,0x5e,0xc9,0x2f,0x2c,0xc3,0xf8,
- 0x2b,0xf7,0x94,0x2e,0xcc,0x6f,0x5d,0x78,0xae,0x74,0x1f,0x17,0x39,0xd9,0x44,0x6c,
- 0x12,0xc2,0xb6,0x01,0x7f,0xaf,0x5e,0xbf,0x1e,0x18,0x72,0x32,0xf4,0x74,0x04,0xe0,
- 0x6f,0x75,0x4d,0x5d,0x4f,0x6f,0xaf,0x82,0xd1,0xa9,0xa4,0xb4,0x54,0x5b,0x4b,0x9b,
- 0x26,0xa7,0x06,0x66,0x11,0x89,0x49,0x49,0xa7,0xc3,0x41,0x05,0x76,0xe6,0xbb,0x79,
- 0x07,0x87,0x46,0xdc,0x44,0xd7,0x27,0x96,0x01,0x70,0xf4,0xf6,0xf5,0x0d,0xca,0x2a,
- 0xd4,0x70,0x6a,0x5a,0xfa,0x9a,0x35,0xeb,0x60,0xb6,0xc1,0xa6,0xa6,0x36,0x7c,0xc0,
- 0x3d,0x42,0x6d,0xc4,0xb8,0x71,0xba,0x3f,0xfd,0x74,0xf0,0x45,0x75,0xcd,0x1f,0xe8,
- 0xac,0x91,0xa2,0x9d,0x33,0x7f,0x7c,0x78,0xdf,0xf7,0xaa,0xbf,0xa1,0xb1,0xb9,0xae,
- 0xbe,0x39,0x2a,0xe6,0x22,0x24,0x94,0x62,0x92,0xb0,0x0d,0xf8,0x9b,0x9c,0x92,0x7a,
- 0x2a,0xfc,0x1c,0xe0,0x6f,0x6a,0x5a,0x26,0xe0,0x6f,0x5f,0x7f,0xbf,0x82,0xf3,0x1a,
- 0xd9,0x59,0xb9,0x93,0xf5,0xa7,0x50,0x52,0xe4,0x06,0x6f,0xd9,0x9a,0x94,0xcd,0x88,
- 0x89,0xfc,0xf1,0xbf,0xe0,0x95,0x4d,0x2b,0x65,0xd3,0x38,0x60,0x74,0x75,0x75,0x43,
- 0x42,0xc3,0x60,0x52,0xf1,0x0a,0x34,0xff,0x37,0xef,0x60,0x80,0xfd,0xe4,0x63,0x43,
- 0x2f,0x1b,0xea,0xed,0xec,0xec,0xc8,0xd1,0x72,0x76,0x65,0xc2,0xc4,0x89,0x4d,0xf9,
- 0x7f,0x30,0x24,0xad,0x8e,0xce,0xd8,0x98,0x2b,0x57,0xc3,0xc2,0x23,0x10,0xfe,0xa6,
- 0x65,0x31,0x0f,0x72,0xc9,0xd7,0x7f,0x8b,0x4b,0x4a,0xf5,0xf5,0x27,0xcb,0xd6,0x15,
- 0xbb,0x26,0xc9,0x5f,0x10,0x72,0xc8,0xe1,0xf0,0x8d,0xf8,0x24,0xc0,0x5f,0xb4,0x49,
- 0xf8,0x51,0x39,0x68,0xb8,0x52,0xef,0x30,0x4a,0x89,0xba,0xdd,0xca,0xd5,0x83,0x56,
- 0x23,0xa5,0x69,0x66,0x6e,0x51,0x58,0x5c,0x12,0x10,0x14,0x82,0xf0,0x37,0x1f,0xe1,
- 0xaf,0xe2,0xed,0x76,0x1e,0x9e,0x5e,0x1a,0xea,0xa3,0x68,0x2b,0x48,0x35,0x87,0x62,
- 0x2f,0x2d,0x05,0x3b,0x02,0xfd,0x6b,0xfd,0x86,0x0d,0xf7,0x32,0x73,0x7c,0xfc,0x82,
- 0x2f,0x5d,0xbe,0x5e,0x58,0x5c,0x0a,0xfa,0x6f,0xbf,0xfc,0x83,0x6f,0xd0,0xce,0x0e,
- 0x47,0x8e,0x2a,0xc8,0x17,0xa0,0x13,0x6c,0x4d,0x8d,0x51,0xf3,0x6d,0x16,0x54,0xd7,
- 0xbe,0x44,0xbd,0xe3,0xd3,0xaf,0x39,0x7c,0x78,0xd5,0xff,0xa6,0xaf,0xff,0xd5,0x61,
- 0x87,0x23,0xe4,0xd8,0xa3,0xea,0x30,0x55,0x59,0x3e,0xff,0x5b,0x79,0xf8,0x48,0xc0,
- 0xd4,0x06,0x44,0x4e,0x5b,0xcf,0x74,0x8e,0x7d,0xbe,0x25,0xc6,0x11,0x84,0x71,0x9c,
- 0xc6,0x89,0xcb,0x9c,0x94,0x94,0xd4,0x94,0x3e,0x53,0x1f,0x3b,0x77,0xa7,0x89,0x43,
- 0x85,0x99,0x73,0xbd,0xb9,0x73,0x83,0xb9,0x4b,0xab,0xb5,0xfb,0x80,0xee,0x66,0xc1,
- 0x6b,0x83,0x40,0x0b,0xa7,0x6a,0x83,0x9d,0x09,0xea,0x93,0x6c,0x86,0xfc,0x43,0x49,
- 0x65,0xe4,0x78,0xc3,0xdd,0x77,0x2d,0xf9,0x9d,0x16,0x98,0x0e,0x31,0x08,0x95,0xf8,
- 0x62,0x2b,0x01,0xb2,0x01,0xbe,0x2d,0x90,0x1b,0x81,0x1a,0x06,0x26,0xb1,0xa5,0x40,
- 0x64,0x85,0x10,0x4d,0x64,0x21,0xe8,0xc2,0x91,0x85,0xd4,0x26,0x9f,0x44,0x2d,0xf8,
- 0x04,0xf4,0x21,0x44,0x84,0x09,0xa2,0x05,0x5b,0x4b,0xb4,0x72,0x2b,0x94,0xa4,0x15,
- 0x12,0xca,0x00,0x6d,0x24,0x32,0xb5,0x09,0x29,0x4b,0x1c,0x87,0x24,0x81,0x7c,0x11,
- 0x27,0x78,0x89,0x18,0x51,0x73,0x13,0x59,0xb9,0x21,0x00,0x25,0x69,0xe1,0xdf,0xb9,
- 0x6e,0x22,0x36,0x11,0x88,0x69,0x29,0x10,0x93,0x7c,0x2d,0xb1,0x4d,0x81,0x1e,0x7d,
- 0xb4,0x45,0xa9,0x50,0x38,0x72,0x08,0xba,0x21,0xe4,0x0b,0xf7,0x2e,0x4b,0x3e,0x01,
- 0x59,0x94,0x0a,0x58,0xb5,0x46,0x7c,0x22,0x07,0x62,0x1b,0x3b,0xe6,0x7b,0x8a,0xe6,
- 0xb9,0x8b,0xe6,0x7b,0x0a,0x6d,0x3c,0x45,0x36,0xde,0xff,0xcf,0xdc,0x75,0xc7,0x45,
- 0x75,0x7c,0xfb,0x3f,0xde,0x4b,0xf2,0xcb,0xcf,0x42,0xef,0xbd,0x59,0x7e,0x1a,0x63,
- 0x07,0x96,0xb6,0x54,0x15,0x51,0xec,0x85,0x98,0xe8,0x4b,0x4c,0xd1,0xa8,0x3f,0x4d,
- 0x62,0x30,0x1a,0x4b,0x50,0xea,0x02,0x16,0xea,0xd2,0x51,0xa9,0x22,0x1a,0x0b,0x6a,
- 0x54,0x7a,0x13,0x3b,0x88,0x74,0x11,0xa4,0xed,0x72,0xb7,0x01,0x2a,0x3f,0xd0,0xcf,
- 0xe7,0x9d,0x33,0xb3,0xbb,0x20,0xca,0xa6,0x99,0xf7,0xb2,0x9f,0xc3,0x30,0x33,0xf7,
- 0xdc,0x33,0x67,0xce,0xcc,0x9d,0xef,0x9c,0x7b,0xe7,0xce,0x15,0xb0,0x39,0x02,0x74,
- 0x7b,0x43,0x05,0x0b,0x8e,0x31,0x4b,0xc2,0xbb,0x97,0x87,0xf3,0x57,0x47,0xb4,0xaf,
- 0x0d,0x6f,0x5e,0x1b,0xfa,0x60,0x5b,0x5c,0x4d,0x97,0x48,0xd1,0x1c,0xfe,0x6f,0x42,
- 0x0f,0x6b,0x6b,0x57,0xae,0x5a,0xbd,0x72,0xb5,0xd7,0xbf,0xb7,0x7f,0xeb,0xe3,0x17,
- 0x1c,0x97,0x78,0xf2,0xe7,0x0b,0x39,0x45,0x25,0xe5,0x55,0xd5,0x35,0x0d,0x4d,0x2d,
- 0x6d,0x1d,0x4c,0x17,0x4f,0x00,0x17,0x51,0x17,0x9f,0x01,0x08,0x6e,0x6a,0x6e,0xad,
- 0xae,0x6d,0xa8,0xb8,0x5d,0x59,0x50,0x54,0x72,0x3e,0xe7,0x0a,0x38,0x80,0x31,0xf1,
- 0x89,0x9c,0xd0,0xb0,0x7d,0x07,0x0e,0x7d,0xf3,0x9d,0x37,0xf5,0x82,0x41,0x94,0xfb,
- 0xc2,0x45,0xce,0xae,0xf3,0x10,0x82,0xad,0xac,0x67,0xcf,0x99,0x4b,0x1d,0xe1,0xc9,
- 0x93,0x09,0x0a,0x5b,0x4c,0x30,0x33,0x33,0x37,0x36,0x31,0x31,0x30,0x34,0x24,0xab,
- 0xa3,0x75,0x75,0x74,0xf4,0x74,0x74,0x70,0xd7,0x68,0x67,0x57,0xd7,0xe2,0xb2,0xb2,
- 0xd0,0xc3,0x47,0x4f,0xa6,0x66,0x96,0x96,0xdf,0x7a,0xd2,0xde,0xf1,0x6c,0xf4,0x57,
- 0x6f,0xf0,0x2d,0xa1,0xd0,0x23,0x4a,0xe3,0x94,0x95,0x95,0x94,0xc9,0x2e,0x97,0x4a,
- 0x70,0x5d,0xd0,0x4d,0xa7,0x61,0x4c,0x7e,0x25,0x1c,0x3b,0xde,0xd0,0xd0,0x88,0x6c,
- 0x8b,0x97,0xc0,0x8d,0x49,0xba,0x72,0x2d,0xbf,0xa1,0xe9,0x11,0x6e,0xba,0x3b,0xfa,
- 0x08,0xdf,0xd0,0xd8,0x08,0x5a,0x29,0x29,0xe1,0x52,0x6d,0xf8,0x29,0xa1,0x18,0xfc,
- 0xa9,0xaa,0xa8,0x7e,0xb5,0x79,0x4b,0x49,0x59,0xf9,0xee,0x1f,0xf7,0xed,0xde,0x7b,
- 0x20,0x20,0xe8,0x48,0x42,0xf2,0x89,0x9c,0xcb,0xb9,0x95,0xd5,0x75,0x5d,0x3c,0xa6,
- 0xef,0x69,0xdf,0x68,0xb3,0x85,0xf6,0xce,0x8e,0x23,0x47,0x8e,0x81,0xaf,0xaa,0xa3,
- 0xad,0x83,0xd2,0x88,0xce,0x28,0x5c,0x49,0x19,0x8c,0xb0,0xc0,0x7d,0x21,0x4c,0x39,
- 0x24,0x3d,0xf8,0xcd,0x1a,0xc5,0xb8,0x33,0x30,0xf0,0xa2,0xa7,0xf7,0x59,0x27,0x8f,
- 0x5f,0x5b,0xdf,0xf8,0xa4,0xbd,0x1d,0xec,0xac,0xac,0xa4,0x82,0x0f,0xd0,0x49,0xc5,
- 0xc1,0x02,0x68,0x84,0xf1,0x28,0x19,0x86,0xac,0xec,0x73,0xe7,0x13,0x12,0x93,0x62,
- 0xe2,0x8e,0x5f,0xfe,0x25,0x1f,0xe0,0x43,0xd2,0xd3,0xa7,0xe0,0x21,0x63,0xc5,0xad,
- 0x9b,0x93,0x27,0x4d,0xa1,0x46,0x03,0x0d,0xe5,0x96,0x04,0x23,0x00,0x94,0x4b,0x2d,
- 0x49,0x24,0xcb,0x6d,0x4b,0x92,0x2a,0xb4,0x50,0x30,0x97,0x95,0xa5,0x95,0xad,0x8d,
- 0xad,0x94,0x6c,0xed,0x90,0x48,0xc4,0x86,0x65,0x63,0x67,0x67,0xc7,0xb2,0x86,0x04,
- 0x84,0x2c,0x88,0x43,0x8e,0x94,0x81,0xf2,0x10,0xb6,0x65,0x2b,0x56,0x40,0xeb,0xff,
- 0xae,0xae,0x7b,0xf7,0xfe,0x7d,0x37,0xb7,0x79,0x44,0x25,0xd4,0x41,0x69,0x1c,0x74,
- 0x00,0xac,0xbe,0x12,0x31,0x2c,0x59,0x57,0x30,0x9e,0x1a,0x87,0xd6,0x08,0x43,0x5c,
- 0xf6,0x47,0xac,0x44,0x3b,0xcc,0x58,0x64,0x96,0xb2,0xc9,0x98,0xb1,0xd6,0xe3,0x94,
- 0x75,0xb4,0x74,0x13,0x92,0x8f,0xc7,0x25,0x25,0x47,0x45,0xc7,0x42,0x9f,0xa9,0xa9,
- 0x6f,0x22,0x6f,0xe9,0x2a,0xba,0x8e,0x26,0x4d,0x9a,0x4c,0xbf,0xbf,0x49,0x3a,0x8d,
- 0xb4,0xcf,0xd0,0x72,0xa9,0x25,0xa9,0xad,0x20,0xb9,0x79,0xcb,0xe6,0xf3,0x97,0x2e,
- 0x03,0x5c,0x66,0x9f,0xbd,0x70,0xe7,0xfe,0x03,0x3e,0xc3,0x28,0x78,0x9a,0x09,0x9e,
- 0xec,0xea,0x35,0x5e,0x64,0xa5,0x84,0x8a,0x12,0xd9,0xce,0x46,0xd6,0xb1,0x87,0xaa,
- 0x30,0x75,0xea,0xb4,0x9b,0xb7,0xef,0x1d,0x0e,0x8b,0x4e,0x4e,0x49,0x2f,0x2d,0xbf,
- 0x89,0xf8,0xab,0x70,0x79,0x52,0x5a,0x46,0x96,0xab,0xeb,0x3c,0x67,0x17,0x57,0x24,
- 0x67,0x29,0x39,0x39,0xbb,0x38,0x39,0x21,0x8d,0x96,0xa4,0xfc,0xe6,0x16,0x13,0xc0,
- 0xc6,0xf8,0x52,0xbf,0x92,0xf4,0xa2,0xa3,0x7d,0x83,0xd6,0xce,0x7d,0xa1,0xc7,0xb5,
- 0xbc,0xfc,0xa0,0x50,0xa9,0xff,0xdb,0xd9,0x85,0xb3,0x68,0x05,0x8d,0x18,0xc5,0x8d,
- 0x53,0x54,0xae,0x8b,0xab,0xc7,0xa2,0x25,0x3e,0x3e,0x07,0xab,0x6b,0x6a,0x7e,0x63,
- 0xaf,0xe8,0xeb,0x1f,0x10,0x89,0x7b,0xba,0x19,0xa1,0xd7,0x47,0xeb,0xd0,0x38,0xe3,
- 0x95,0xe5,0x44,0x4c,0xf7,0x6a,0xeb,0x8f,0x7b,0xb5,0xf5,0x49,0x8e,0xb4,0xab,0x8c,
- 0xc5,0xae,0x82,0xef,0x6b,0x28,0x93,0xeb,0x6b,0xac,0xb4,0x82,0x23,0xba,0x8a,0x91,
- 0x95,0x97,0xd5,0xfe,0x16,0x5b,0x3f,0x04,0x2c,0x96,0xaf,0x68,0xf2,0x27,0x99,0x63,
- 0x94,0xf5,0xde,0x7d,0xe7,0x5d,0x5d,0xd6,0x57,0x73,0xf7,0x35,0xcd,0xd8,0x59,0xa5,
- 0x63,0xf9,0x3f,0xda,0x53,0x16,0x4f,0x58,0x99,0x08,0x68,0xc2,0xf2,0x03,0x42,0xbc,
- 0x9b,0xe8,0x75,0x5c,0x73,0xea,0x52,0xf5,0xa9,0x9e,0x13,0xbd,0x12,0x67,0x6c,0x2f,
- 0x1b,0x6f,0x30,0x1b,0xd7,0x71,0x59,0xb8,0xce,0xf4,0x7e,0xc8,0x22,0x70,0x63,0x83,
- 0xee,0x9e,0x08,0x42,0x16,0x71,0xfa,0x58,0xc4,0xfb,0xa3,0x21,0x02,0x13,0x09,0x31,
- 0x49,0xf0,0xcb,0xc6,0x1f,0x99,0x59,0x7e,0x02,0x2b,0x3f,0x00,0x62,0x01,0xcb,0x57,
- 0x68,0xe5,0x2b,0x04,0x34,0x04,0x44,0xb3,0xf6,0x43,0xe8,0x24,0x0c,0x00,0x61,0x90,
- 0x04,0x06,0x31,0xe4,0xb3,0xfc,0xe1,0x28,0x38,0x95,0xc8,0x03,0x87,0xac,0xfc,0x44,
- 0x24,0x29,0xa2,0xa2,0x6c,0xfc,0x01,0x1f,0x85,0x18,0x1e,0x82,0x10,0x94,0x11,0xd1,
- 0x52,0xec,0xfc,0x45,0x96,0xbe,0x88,0xbc,0x2c,0x7f,0xa1,0x15,0xde,0xfb,0x85,0x4c,
- 0x94,0x09,0x49,0xd9,0x89,0xc8,0xcc,0xf2,0x47,0xb5,0xb1,0x22,0x44,0x7f,0x99,0x28,
- 0x54,0x18,0xe7,0x06,0x58,0x10,0x92,0x25,0x32,0x88,0x48,0xe9,0x0c,0x09,0xe5,0xa2,
- 0x04,0x20,0xd6,0x06,0x4a,0x24,0x55,0xb0,0xf5,0x47,0xa3,0xe1,0x13,0x5e,0x3f,0x2c,
- 0x97,0x15,0x20,0x72,0x08,0xc4,0x1b,0xce,0x8e,0x1c,0x91,0x53,0x08,0x33,0xff,0xa8,
- 0x68,0x61,0xb8,0xc8,0x33,0x8a,0x59,0x11,0xdd,0xed,0xc5,0xe5,0x7f,0xc4,0xed,0x5a,
- 0x1f,0xdd,0xf8,0x71,0x44,0x5d,0x64,0xce,0xe3,0xdf,0xf5,0xc1,0xd0,0xff,0x2f,0x7a,
- 0xd6,0xff,0xfc,0x9b,0x6f,0x77,0x2e,0xf2,0x5c,0xf6,0xe5,0x57,0x5f,0xef,0xd9,0xe7,
- 0x13,0x1e,0x15,0x9b,0x95,0x7d,0xfe,0x5a,0x7e,0xc9,0x9d,0xfb,0x0f,0xeb,0x1b,0x1f,
- 0x03,0xe6,0xf2,0xba,0x85,0x3c,0xbe,0xb0,0x9b,0x11,0x75,0xf2,0x98,0x96,0x27,0xbc,
- 0x86,0xa6,0xd6,0x07,0x0f,0x1b,0x6f,0x54,0xdc,0x2b,0x28,0x2a,0x3d,0x7f,0xf1,0x0a,
- 0x5c,0xc8,0x31,0xf1,0xc9,0x30,0xdd,0xdd,0xff,0x93,0xff,0xce,0xef,0xf7,0x6c,0xda,
- 0xbc,0x75,0xfd,0x86,0x4f,0x57,0xac,0xf2,0x5a,0xe4,0xb9,0xdc,0xd5,0x6d,0x81,0x83,
- 0xa3,0x13,0xcb,0xd6,0x6e,0xce,0x9c,0xb9,0x33,0x67,0xce,0x9a,0x36,0x6d,0x1a,0xb9,
- 0x1d,0x8d,0xdb,0x64,0x01,0xd1,0x77,0x94,0x4c,0x4c,0x4d,0xf4,0x0c,0xf5,0xe9,0x7e,
- 0x1d,0xf6,0x6c,0xc7,0x82,0xe2,0x92,0xc3,0x61,0x11,0x29,0xa9,0x99,0x65,0x37,0x6e,
- 0x3d,0x69,0xeb,0x7c,0x3a,0xfa,0x4d,0x48,0x80,0x92,0x18,0x6e,0x2c,0xae,0xe3,0x52,
- 0x51,0x53,0x53,0x81,0x50,0x15,0x08,0x21,0x52,0x59,0x0d,0xf0,0x42,0x4d,0x55,0x8d,
- 0x12,0x59,0xe5,0xa5,0x02,0xf8,0x7b,0x22,0x25,0x35,0x36,0x3e,0x99,0x1b,0x93,0x78,
- 0xf9,0x97,0x3c,0x70,0x06,0x45,0x62,0x45,0x9b,0xde,0xb7,0xb6,0xb5,0x99,0x9a,0x98,
- 0xa9,0x2a,0xe3,0xe7,0x14,0x69,0x08,0x43,0x9f,0x9a,0x1a,0x8a,0xfa,0xd7,0xbf,0xa6,
- 0x64,0x9f,0x39,0x9b,0x90,0x9c,0xbc,0x7b,0xef,0xfe,0x03,0x3e,0x01,0xa1,0x47,0xc3,
- 0x8f,0xa7,0x64,0x5e,0xcf,0x2f,0x82,0xd9,0x0a,0xaf,0x5b,0xd0,0xd7,0x27,0x7d,0xc6,
- 0xfa,0xba,0xf0,0xfe,0x81,0xfe,0xc7,0x2d,0xad,0x17,0x72,0x2e,0xed,0xd9,0xb3,0x6f,
- 0xc3,0x86,0x8d,0xab,0x57,0xaf,0xfd,0xf4,0xb3,0xcf,0x0f,0xfc,0x74,0xe8,0xea,0xf5,
- 0xfc,0x4e,0x5e,0x97,0xe2,0x8f,0x23,0xc8,0xaa,0x0c,0x9e,0x6f,0x1f,0x8f,0xcf,0x54,
- 0x3f,0xac,0xaf,0x6f,0x6c,0x4a,0xcd,0xc8,0xd4,0xd2,0xd2,0xa2,0x15,0xc4,0x9a,0xaa,
- 0x60,0x04,0xb4,0x45,0x55,0x55,0xd5,0xd4,0xd5,0xd5,0x53,0xd3,0x33,0x92,0x4f,0xa4,
- 0x45,0xc7,0x26,0x40,0x95,0x6b,0xea,0x1e,0xe1,0x26,0x4b,0xa3,0x57,0x19,0xb0,0x6c,
- 0xfa,0xf4,0x19,0x70,0x3a,0x08,0x54,0x55,0x51,0x57,0x51,0x52,0x03,0x22,0x49,0xa4,
- 0xa1,0x24,0x9a,0x1a,0x19,0x80,0x8d,0x3e,0xbe,0x47,0x66,0x65,0x15,0x0f,0x8f,0x45,
- 0xf7,0x2b,0x2b,0x8b,0x4b,0x4b,0xef,0xdc,0xbd,0x57,0x53,0x5b,0xf7,0xb8,0xa5,0xa5,
- 0xb3,0x8b,0xd7,0xde,0xd1,0xd9,0xd1,0xc1,0xe3,0xf1,0xf9,0x40,0x5d,0x3c,0x7e,0x57,
- 0x17,0x0f,0x68,0x44,0x12,0x03,0x3e,0x84,0x7c,0xe0,0x97,0xf4,0xf6,0xfc,0xae,0xae,
- 0x0b,0xa6,0x0e,0x8f,0x88,0x52,0x53,0xd5,0x50,0xc5,0x86,0x7e,0x45,0x67,0x6c,0x7d,
- 0xa2,0x2a,0x28,0x49,0x7a,0x82,0xb4,0x9f,0x90,0xa4,0x3a,0xd5,0x5c,0x8d,0x92,0xea,
- 0xeb,0xcc,0x50,0x41,0x55,0x5d,0x1d,0xdd,0x98,0xb8,0x78,0x30,0x60,0x64,0x74,0xfc,
- 0xa5,0x5f,0xf0,0x2d,0x5d,0xb1,0x58,0xa2,0xe0,0xce,0xe7,0xa3,0xe6,0x96,0x19,0x33,
- 0x66,0xbd,0xd1,0x74,0xf2,0x38,0x12,0x51,0x66,0xfd,0x86,0xcf,0xae,0x5c,0xcb,0x3d,
- 0x7c,0x24,0x1c,0xbf,0x00,0x75,0xa7,0x0a,0x5f,0xb5,0x1b,0x1d,0xa4,0x00,0x7f,0x37,
- 0x6e,0xfc,0x02,0xcd,0xfe,0x6a,0x73,0x60,0xb7,0x1c,0xaf,0xa2,0x46,0xda,0x02,0xa0,
- 0xbf,0xfc,0xe6,0xad,0x63,0x51,0x71,0xc7,0x53,0x32,0x0a,0x4b,0x6e,0xb6,0xb4,0xfe,
- 0xca,0xeb,0xde,0x4f,0x9f,0x3f,0xed,0x16,0x30,0xfc,0x6e,0x06,0xa0,0x1f,0x42,0x88,
- 0xff,0x16,0xe2,0xe1,0x92,0x03,0xc6,0xe7,0xe0,0x41,0x0d,0x0d,0x4d,0x15,0x25,0x55,
- 0x54,0x49,0x75,0x64,0x7d,0x5d,0xdc,0xdc,0xf2,0x0a,0x0a,0x43,0x8f,0x84,0xa5,0xa6,
- 0x67,0x97,0x94,0xdd,0x84,0xb9,0xe2,0xb3,0x67,0x8a,0xf0,0x17,0x1c,0x55,0x54,0x80,
- 0x19,0xb5,0x50,0xa1,0x58,0xa4,0xf8,0x59,0xf6,0xb0,0xfe,0x80,0xc3,0x82,0xb8,0xa7,
- 0xb7,0xad,0xa3,0xb3,0xb6,0xbe,0xde,0xc6,0xc6,0x1e,0x86,0x02,0xd2,0x51,0xd5,0xe4,
- 0xd7,0xf2,0x70,0x7a,0x43,0xeb,0xab,0xd1,0x4e,0x42,0xe2,0x43,0xbd,0x45,0x4d,0xd6,
- 0x85,0xb0,0xab,0x03,0x0b,0xed,0xfc,0x78,0x95,0xa9,0x6a,0x4d,0xfd,0x24,0xde,0xfa,
- 0x10,0x63,0x1f,0x80,0x58,0x69,0xf9,0x53,0xa7,0x8a,0x85,0x13,0x38,0xb3,0xaa,0x16,
- 0x8e,0x33,0xbc,0x1f,0xda,0x04,0x30,0x33,0xb6,0x17,0x8f,0x51,0x37,0x03,0x6c,0x35,
- 0x72,0xdd,0x05,0x5e,0x1b,0x81,0x27,0xc1,0xdc,0x5d,0x55,0xca,0x46,0xb3,0x20,0x53,
- 0x49,0x7b,0xea,0xb4,0xad,0xa5,0x90,0x39,0xf1,0xe3,0x8c,0xf7,0x95,0xf5,0xde,0x7b,
- 0xef,0x9f,0x26,0x8b,0x83,0x6d,0x08,0x48,0xd9,0x12,0x4e,0x40,0x34,0x3c,0xcb,0x8f,
- 0x26,0x65,0x0b,0x8d,0x46,0x10,0xb9,0x1f,0xcb,0x42,0xcc,0x82,0xa4,0x40,0xba,0x1e,
- 0x49,0x1a,0x0a,0xe8,0x89,0x04,0x28,0x09,0x0a,0xcb,0x8e,0x02,0xc6,0x59,0xfb,0x8b,
- 0xc8,0x51,0x8a,0xb0,0x94,0x13,0x4f,0xa7,0x21,0x3d,0xd7,0x16,0x01,0x54,0xc8,0x22,
- 0x71,0x8a,0xcb,0x38,0x25,0x00,0xec,0xf6,0x85,0x1c,0x11,0x99,0x0f,0x88,0x48,0x59,
- 0x00,0xfd,0x22,0x02,0x94,0x90,0x2f,0x40,0x1c,0x0f,0x10,0xd0,0x43,0x36,0xa8,0x12,
- 0xc0,0x28,0xb8,0xde,0x42,0xc4,0x65,0xbf,0x21,0xb5,0x59,0x44,0x6d,0x79,0x45,0xa4,
- 0xba,0xc9,0x72,0xac,0x65,0x55,0x00,0x7d,0x40,0x55,0x74,0x78,0x03,0x05,0x0e,0x41,
- 0x22,0x7b,0x8e,0xc0,0x25,0x58,0xc0,0x0e,0x66,0x5c,0x42,0x44,0xee,0x61,0x02,0x8f,
- 0x08,0xc1,0x32,0xae,0x78,0x65,0xac,0x60,0x5d,0x3c,0xb3,0x21,0x9e,0xb7,0x31,0xa9,
- 0x73,0x63,0x5c,0xeb,0x67,0x31,0x75,0xb9,0x55,0xfc,0xb7,0x8e,0x95,0x7f,0x11,0xc5,
- 0x27,0x26,0x2f,0xf4,0x58,0xb4,0x7e,0xc3,0xc6,0xef,0xbd,0xf7,0xc0,0x85,0x93,0x92,
- 0x76,0xfa,0xca,0xd5,0xbc,0xf2,0x9b,0xb7,0xc1,0xc9,0x7a,0xd4,0x0a,0xc3,0x23,0xc3,
- 0x08,0x44,0x78,0x81,0x30,0x22,0x88,0xb7,0x3c,0x69,0x07,0x08,0xbe,0x57,0x59,0x45,
- 0xb6,0x86,0x2e,0x39,0x7b,0xfe,0x22,0x5c,0x68,0xdc,0xb8,0xf8,0x90,0xc3,0xe1,0x07,
- 0x0e,0x06,0x7c,0xe7,0xfd,0xc3,0x96,0xad,0x3b,0x00,0x5f,0xd6,0xac,0xfd,0xc8,0x73,
- 0xc9,0xca,0x79,0xf3,0xdd,0x1d,0x9d,0xdd,0xc0,0xf5,0xb1,0xb4,0x62,0xcd,0x99,0x6d,
- 0x09,0x23,0x3c,0xa0,0xf0,0x94,0x29,0x53,0xc0,0x17,0x36,0x37,0x9f,0x68,0x66,0x86,
- 0x28,0x6c,0x6c,0x66,0x62,0x64,0x6c,0x0c,0x10,0x69,0x67,0xcf,0xce,0x2d,0x28,0x09,
- 0x8b,0xe4,0x02,0xa2,0x95,0x94,0x57,0xb4,0xb6,0xe1,0x5b,0x42,0xa3,0xbe,0xfd,0xfa,
- 0x62,0xf0,0xc4,0x89,0x54,0x5c,0x4a,0x4d,0xf6,0xf7,0xd0,0xc0,0xb7,0x9b,0x74,0xe4,
- 0x49,0xf2,0x6f,0x28,0x04,0x5f,0x3b,0x36,0x21,0x3e,0xe9,0xc4,0xc9,0xe8,0x98,0xc4,
- 0x4b,0x57,0xae,0xd5,0xa1,0x2f,0xa3,0x68,0x83,0x7a,0xf0,0xf7,0x01,0x67,0xd5,0x65,
- 0x3f,0xdc,0x3f,0x44,0x4d,0x2a,0x19,0xfc,0xf4,0xe5,0x2b,0x57,0x55,0xdc,0xbd,0x13,
- 0x14,0x12,0xba,0x77,0xbf,0x8f,0x1f,0x7e,0xf4,0x9c,0x9b,0x9a,0x9e,0x95,0x57,0x50,
- 0x5a,0x53,0xd7,0x04,0x5e,0x70,0x2f,0xf1,0x82,0x15,0x4c,0xbd,0x06,0x06,0x07,0x7a,
- 0xfb,0x7a,0x45,0x12,0x31,0x72,0xfe,0xb6,0x0f,0xcb,0xbe,0xc0,0x6f,0xab,0x0d,0x02,
- 0xb8,0x03,0x48,0xd5,0xd4,0x35,0xde,0xbc,0x5d,0x75,0xbf,0xea,0xc1,0x22,0x4f,0xcf,
- 0xe1,0xf5,0x55,0x57,0xa3,0x21,0x4d,0x42,0xa8,0x13,0x9b,0x90,0x94,0x96,0x9e,0x15,
- 0x13,0x0b,0x53,0x8e,0x5c,0x68,0x4a,0x89,0xa4,0x47,0x41,0x71,0x35,0xb5,0xf5,0x56,
- 0x56,0x2c,0x59,0x8d,0x87,0x4c,0x37,0xc2,0x92,0xc3,0x42,0x0d,0x39,0x03,0xfc,0x16,
- 0x7b,0x2e,0x29,0x2a,0x29,0x8f,0xe2,0x26,0x9c,0x3e,0x73,0xfe,0xce,0xbd,0xca,0x2e,
- 0x3e,0xbf,0x7f,0xf4,0x1b,0xaa,0x6f,0x91,0x32,0x32,0xb3,0xc8,0xf7,0x3e,0xb0,0xbe,
- 0xea,0x6f,0xf3,0xa7,0xa9,0xab,0xa7,0x1f,0xcd,0x8d,0x49,0x49,0x4b,0x8f,0x88,0x44,
- 0xfc,0x7d,0x58,0x5b,0xaf,0xf8,0x2d,0xa1,0x8e,0xce,0x4e,0x6b,0x6b,0x6b,0x69,0x2b,
- 0xfc,0xca,0x4f,0x63,0x8d,0xd7,0xba,0xdc,0xfc,0xc2,0xa3,0xc7,0x22,0x4f,0x9d,0x3e,
- 0x77,0xfb,0x2e,0x98,0x8b,0x51,0xb0,0x49,0x05,0xc0,0xca,0xf6,0x1d,0x3b,0x87,0x5b,
- 0x5b,0xde,0x10,0x64,0x05,0x05,0xfe,0x2c,0x2c,0x2c,0x4a,0x6f,0x54,0x84,0x45,0xc7,
- 0xc3,0xb5,0x53,0x5c,0x5a,0x0e,0xf8,0xab,0x78,0xb9,0xdd,0x9f,0xa1,0xc8,0xa8,0x18,
- 0x5d,0x5d,0xfd,0x11,0x0a,0xd0,0x2e,0x01,0x11,0x7b,0x07,0x87,0xbc,0xc2,0xa2,0xc3,
- 0x61,0x91,0xc9,0xe9,0x3f,0x97,0x94,0xde,0xec,0xe8,0xe2,0xf7,0xf6,0x8d,0xf2,0xe9,
- 0xae,0xb7,0x4d,0x03,0x83,0x38,0x41,0x6d,0xef,0xe0,0x3d,0x7a,0x0c,0x13,0xdd,0x2b,
- 0x60,0x13,0xaa,0xd8,0x08,0xd3,0xfd,0x81,0x9f,0x4c,0x82,0x06,0xd9,0xd9,0x7e,0x28,
- 0x5b,0xd7,0x78,0xf2,0xdc,0xdd,0xd5,0x00,0x25,0x76,0x80,0x3e,0x7e,0x82,0xe9,0x5f,
- 0x5f,0x7f,0xe7,0xdd,0xb1,0xef,0xfe,0x43,0x69,0xe2,0x9a,0x78,0x16,0xde,0x2c,0x15,
- 0xce,0xdc,0x5e,0x36,0x46,0xdd,0x02,0xdf,0x07,0x74,0xd9,0x65,0x03,0xf8,0x05,0x60,
- 0xea,0xcb,0x33,0xf7,0x0c,0x01,0x36,0xc8,0x34,0x5b,0xb0,0xdf,0xfa,0x50,0xa7,0x4d,
- 0x80,0x70,0xce,0xbe,0x56,0x1d,0xcb,0x0d,0xe8,0x02,0x9b,0x3b,0x58,0x1f,0x68,0x61,
- 0x91,0x65,0x45,0x80,0xbc,0xb6,0xd4,0x27,0xf5,0x23,0xe8,0x46,0x33,0x87,0x85,0x08,
- 0x4c,0x24,0x2e,0xa7,0x37,0x33,0x03,0xb0,0x4a,0xa1,0x1f,0x11,0x0d,0x7c,0x58,0xf9,
- 0x51,0x29,0xbc,0x82,0xb3,0xe9,0x37,0x0c,0x34,0x03,0x18,0x69,0xe8,0x2f,0x92,0x42,
- 0xb9,0x4c,0x32,0x30,0xd3,0x53,0xe4,0x25,0x42,0x1c,0xcf,0x45,0x57,0x1d,0x51,0x1b,
- 0xbd,0x69,0x99,0xe6,0x72,0x06,0xf9,0x51,0xf4,0xeb,0x09,0xee,0xdb,0x20,0x82,0x4b,
- 0x28,0xd6,0x43,0x12,0xd7,0x50,0x05,0x92,0xb3,0x02,0x71,0x19,0x33,0xde,0x5e,0xf6,
- 0x95,0x25,0x09,0xc1,0x51,0x72,0xb7,0x59,0xec,0x1c,0xcc,0x38,0x71,0x04,0xf3,0x0e,
- 0x0b,0xdc,0xc3,0x98,0x85,0xe1,0xe2,0xa5,0x88,0xbc,0x92,0x8f,0x12,0x7b,0x3f,0x49,
- 0x60,0x3e,0x3b,0x2e,0xf8,0x3c,0x99,0xb7,0x29,0xf9,0xc9,0x96,0xc4,0x06,0xef,0xd4,
- 0xfa,0x66,0xfe,0xdf,0xf4,0xb3,0x47,0xaf,0x13,0x0c,0xe6,0x2b,0x57,0xad,0x5d,0xb9,
- 0x66,0xdd,0xe6,0x2d,0x3b,0x7c,0x7c,0x39,0x31,0xf1,0xc7,0xcf,0x9e,0xbb,0x50,0x50,
- 0x72,0xeb,0x5e,0x55,0x75,0x53,0xf3,0x93,0xb6,0x8e,0x6e,0x98,0xa0,0x32,0x02,0xb1,
- 0x40,0x88,0x28,0xdc,0xd1,0x85,0x2b,0xa2,0xeb,0x1b,0x5b,0xab,0xaa,0xeb,0x6e,0xde,
- 0xae,0xcc,0x2f,0x2c,0xbd,0x78,0xe9,0x97,0xf4,0xcc,0xec,0xb8,0xc4,0xe3,0xa1,0x61,
- 0xdc,0x43,0x87,0x82,0x7e,0xd8,0xb3,0x7f,0xdb,0xf6,0x6f,0x37,0x7e,0xbe,0x69,0xdd,
- 0xc7,0x9f,0x2e,0x5b,0xb1,0x66,0xd1,0xe2,0x65,0xae,0xf3,0x3c,0xd8,0x8e,0x6e,0x2c,
- 0x5b,0x7c,0x22,0x3c,0x7b,0xf6,0x9c,0x99,0x33,0x67,0xca,0x96,0x66,0x4d,0x99,0x30,
- 0x01,0x51,0xd8,0xc2,0x02,0x42,0x73,0x5b,0x3b,0xfb,0xfc,0x82,0xa2,0x88,0xc8,0x98,
- 0x93,0x30,0x86,0xc0,0x1c,0xfe,0x49,0x7b,0x8f,0xc2,0x2b,0xf7,0xec,0xb9,0x8b,0x30,
- 0x48,0x6a,0x69,0xe9,0x68,0x69,0xeb,0x6b,0x6a,0x49,0x23,0x30,0x1a,0x6b,0x69,0xeb,
- 0x6a,0x69,0xeb,0x01,0x1e,0xd3,0x85,0x5e,0x90,0xd4,0x37,0x30,0x8a,0x88,0x88,0xcc,
- 0x38,0x75,0x26,0x0a,0xf1,0xf7,0x3a,0x38,0x83,0xe8,0xff,0xbe,0x78,0x83,0x97,0x4a,
- 0x89,0x11,0x8a,0x66,0xcf,0xb1,0x04,0x81,0x20,0x43,0x5b,0x47,0x0f,0x23,0xba,0x06,
- 0x54,0x14,0xa0,0x3c,0xb8,0xea,0x21,0xa1,0x87,0x61,0x90,0xd9,0xef,0xe3,0xbb,0xff,
- 0x27,0xdf,0x83,0x01,0x87,0x41,0xe7,0xb4,0x8c,0xec,0xdc,0xbc,0xe2,0x87,0x35,0xf5,
- 0xed,0x9d,0x5d,0x30,0x08,0x28,0x58,0xf3,0xf9,0xbb,0xe9,0x25,0x82,0xaf,0x58,0xd2,
- 0x07,0x43,0xd9,0xfd,0x07,0x75,0x45,0x25,0x37,0x1a,0x9a,0x1e,0xef,0xfa,0x61,0xb7,
- 0x81,0x81,0x81,0xbc,0xbe,0xda,0xda,0x3a,0x9a,0xa4,0xbe,0xda,0x3a,0xba,0x58,0x7d,
- 0x30,0x85,0x96,0x4e,0x4c,0x6c,0x5c,0xc6,0xa9,0x6c,0x98,0x72,0xe4,0x5c,0xce,0xab,
- 0xae,0x69,0x12,0x8b,0x7b,0x15,0x3c,0x59,0x6e,0x6e,0x69,0x65,0x3b,0x39,0xa3,0x28,
- 0x1d,0xba,0x3a,0x0e,0x42,0x6d,0x10,0x49,0x42,0xb0,0x83,0x0e,0x4d,0x6a,0x6a,0x62,
- 0x08,0xb6,0xd5,0xc4,0x0f,0x4d,0x6a,0x61,0x8e,0x16,0x96,0xb8,0xc0,0x7d,0x61,0x69,
- 0x79,0x45,0x78,0x64,0x6c,0x7a,0x56,0x36,0xf4,0x0a,0x98,0x27,0x28,0x7e,0xdd,0xf8,
- 0x6d,0xd1,0x85,0x9c,0xcb,0x06,0x06,0x86,0x52,0x35,0x48,0xad,0xb1,0x8d,0x34,0x09,
- 0x11,0xb5,0x89,0xce,0x7f,0x20,0x09,0x3d,0x4b,0x3f,0x98,0x6c,0x85,0x0a,0x95,0xca,
- 0xb9,0x7c,0xbd,0xaa,0xb6,0x59,0x28,0x12,0x0f,0xbc,0xe9,0x5d,0x6f,0x4a,0x7c,0x46,
- 0xe8,0xe4,0xec,0x82,0xa6,0x23,0xca,0x50,0x7d,0x34,0x34,0xa5,0xfa,0x40,0x08,0x71,
- 0x20,0x7a,0x68,0xe9,0xf2,0x15,0x85,0xc5,0xa5,0xc7,0xc2,0xa3,0xc1,0xff,0xad,0xb8,
- 0x45,0xbf,0x4e,0xa5,0x68,0xba,0xb2,0x6f,0xff,0x4f,0xb4,0x6a,0x52,0x22,0x92,0xc9,
- 0xfe,0x72,0xda,0x54,0xb2,0xb1,0x89,0x59,0x59,0xc5,0x6d,0x6e,0x0c,0xe2,0x6f,0x41,
- 0x51,0x79,0x6b,0x5b,0x87,0xe2,0x0f,0xff,0xfd,0x19,0x4a,0x3a,0x91,0x6e,0x6c,0x62,
- 0xa2,0x89,0x6f,0xf3,0x63,0x57,0xc1,0x3a,0x4a,0x75,0xc3,0x2b,0xc5,0xc6,0x96,0x5d,
- 0x54,0x5c,0x02,0x55,0x4b,0x49,0x3b,0x55,0x52,0x7a,0xe3,0x49,0x7b,0x17,0xcc,0xc4,
- 0xfe,0x22,0x4d,0xe4,0x04,0x6e,0x6f,0x7f,0xff,0x80,0xa4,0xa7,0xa7,0xad,0x83,0x57,
- 0x55,0x5d,0xdb,0xc9,0xe3,0x6d,0xdb,0xf6,0x6f,0x1d,0xb8,0x66,0x65,0xb6,0x92,0xf7,
- 0x8d,0xe1,0x06,0x94,0xb7,0x14,0x6d,0x1a,0xe8,0xf9,0x1a,0x9a,0x34,0x07,0x38,0x75,
- 0x64,0xf1,0x91,0x7d,0x63,0x98,0x28,0xfd,0xc9,0xae,0x5f,0x82,0x53,0x66,0x1b,0x24,
- 0xb0,0x0e,0x00,0xa8,0xea,0x36,0x72,0xf3,0x06,0x0c,0x55,0x33,0x9a,0x6d,0xbd,0xff,
- 0x31,0x5d,0x1d,0x34,0x0d,0xf1,0x17,0xfd,0x5f,0x03,0xa7,0xef,0x68,0xce,0xec,0xef,
- 0x6f,0x8f,0xd5,0xc6,0x8d,0xb9,0xc6,0x19,0xcc,0xb0,0xf1,0x79,0x6c,0x1f,0x28,0x62,
- 0x07,0x8a,0x01,0x5c,0xa6,0x6d,0xce,0x7d,0xef,0x9d,0x7f,0xbc,0x3f,0x46,0x6d,0xe6,
- 0xa6,0x1c,0x0a,0x3a,0xc0,0x8c,0x61,0x90,0xd0,0x36,0x88,0x51,0x40,0x70,0x2e,0x70,
- 0x02,0x1b,0xf2,0xbf,0x89,0xc1,0x2a,0x00,0x57,0x08,0xe3,0x22,0x61,0x99,0x4c,0x04,
- 0xd6,0x00,0x69,0x1c,0x79,0x02,0x87,0x80,0x6f,0x04,0x01,0x27,0x3b,0x48,0x0c,0xbe,
- 0xa7,0x7d,0x80,0x90,0xb2,0xa1,0x1f,0x1a,0x20,0x90,0x0a,0x09,0x92,0xaa,0x27,0x15,
- 0x05,0x40,0x49,0x96,0x22,0x83,0x35,0xec,0x02,0xb1,0x38,0xeb,0x00,0xac,0x1a,0xf0,
- 0x40,0x88,0x00,0x3a,0x5c,0x54,0x00,0x33,0x5c,0x25,0x38,0x0b,0x92,0xac,0x00,0x21,
- 0x5a,0x92,0x32,0x73,0x24,0x58,0x29,0x0e,0x28,0x00,0xca,0x0b,0x5d,0x43,0x90,0xdc,
- 0x0e,0x8b,0xe6,0x1f,0x11,0x03,0xf2,0x7a,0x46,0xf5,0x2c,0x8f,0x11,0xaf,0x8e,0x13,
- 0x6f,0x48,0x12,0x7e,0x99,0x22,0xfc,0x22,0x45,0xb2,0x3d,0x43,0xb8,0x2d,0x5d,0xb8,
- 0x35,0xa5,0x63,0x4b,0x52,0x73,0xc2,0xf5,0x8e,0xa7,0xff,0xf9,0x6b,0x47,0x9e,0xb7,
- 0x48,0xdd,0x02,0xe6,0x7b,0xef,0x1f,0x96,0x2c,0x5d,0xf1,0xc5,0x57,0x5f,0xff,0xf0,
- 0xa3,0xcf,0xd1,0x08,0x2e,0xe0,0xe9,0xf5,0xbc,0xc2,0x9b,0x77,0x2a,0xeb,0x1b,0x9b,
- 0x5b,0xdb,0x3a,0x79,0xc4,0x05,0x86,0xf1,0x47,0x28,0x02,0x08,0x16,0xf1,0xf8,0xdd,
- 0x8f,0x5b,0xbb,0xea,0x1a,0x9a,0x2b,0x1f,0xd4,0xde,0xa8,0xb8,0x5f,0x50,0x54,0x7a,
- 0xee,0xe2,0xe5,0x8c,0x53,0xa7,0x13,0x8f,0x9f,0x3c,0x16,0x16,0x1d,0x18,0x14,0xba,
- 0xe7,0x47,0xfc,0x1a,0xc2,0xa6,0xcd,0xdb,0x3e,0x5e,0xbf,0x71,0xd5,0x9a,0x4f,0x16,
- 0x2f,0x5d,0xb1,0x60,0xe1,0x62,0x67,0x57,0x77,0x7b,0x07,0x17,0x96,0x8d,0xbd,0xa5,
- 0xa5,0x35,0x41,0xe1,0x59,0xd3,0xa6,0x7d,0x38,0xed,0x03,0xfc,0x76,0x12,0x79,0x53,
- 0x69,0x92,0x8d,0xad,0xed,0xb5,0xbc,0x3c,0x6e,0x6c,0xd2,0xc9,0xd4,0x4c,0x70,0xa6,
- 0x5a,0x5a,0xdb,0x7b,0x7a,0x47,0x9d,0xc3,0x00,0x74,0x02,0x33,0x38,0xce,0xfa,0x06,
- 0x06,0x74,0x41,0x97,0x34,0x62,0x20,0x8d,0x00,0xe8,0x42,0x9c,0xe6,0x1b,0x19,0x9b,
- 0x84,0x84,0x1e,0x39,0x7d,0xf6,0x3c,0x37,0x36,0x39,0xe7,0xf2,0xd5,0xea,0x9a,0x46,
- 0x40,0xd8,0xd1,0xfc,0x5f,0xdc,0x57,0xaa,0xb7,0xd7,0xce,0xde,0x41,0x0f,0x24,0x50,
- 0x32,0xd0,0xd7,0x35,0x30,0x92,0x17,0x04,0x49,0x6b,0x6b,0x56,0x56,0xf6,0x99,0xac,
- 0xec,0xec,0x9f,0x7c,0xfc,0x7c,0x0e,0x06,0x04,0x06,0x1d,0x8e,0x88,0x8a,0x4d,0x3f,
- 0x75,0x26,0x37,0xaf,0xf4,0x5e,0x65,0x4d,0x7b,0x47,0x27,0xd9,0xf6,0xa7,0xff,0xcf,
- 0x3c,0x80,0x20,0x37,0xd3,0xf0,0x16,0xeb,0xb3,0xfe,0xe7,0x30,0x5b,0x68,0x6e,0xe3,
- 0x81,0xb5,0xf3,0x8b,0xf0,0xd5,0xb0,0xcc,0xac,0xec,0x19,0x33,0x66,0x92,0xaa,0x81,
- 0x56,0x86,0x44,0x31,0x43,0xd0,0x93,0xa8,0x67,0x20,0xb7,0x43,0x64,0x64,0xf4,0xe9,
- 0x33,0x17,0x62,0xe2,0x70,0xca,0x51,0x5d,0xd3,0x80,0x9b,0x2c,0x8d,0xbe,0x9b,0x47,
- 0x7b,0x67,0xa7,0xbb,0xc7,0x22,0x2a,0xc1,0xc0,0xd0,0x58,0x2a,0x47,0x1e,0x0e,0x8f,
- 0xc8,0xcc,0x32,0x2c,0xa9,0xef,0x3a,0x6f,0x7e,0xd9,0x8d,0xdb,0x11,0xdc,0xf8,0xf4,
- 0x53,0xd9,0xb7,0xee,0x54,0xc2,0x00,0x08,0xd5,0xff,0x3f,0x58,0x7c,0x58,0x50,0x58,
- 0x64,0x6e,0x6e,0x8e,0xa6,0xd0,0x1f,0x56,0xf7,0x91,0xea,0xfd,0x91,0x24,0x74,0x2d,
- 0xbf,0x80,0xc0,0xb3,0xe7,0x2f,0x44,0xc7,0x24,0x5c,0xc4,0x3e,0x53,0x47,0xf0,0x57,
- 0xc1,0x56,0x12,0x12,0x8f,0xc5,0x4b,0x5f,0x31,0x9a,0xac,0x39,0xe4,0xa1,0x9e,0x4c,
- 0x49,0x8f,0xc5,0x9e,0x85,0xc5,0x25,0xe1,0x11,0x5c,0xf0,0x7f,0x71,0xfd,0x9e,0x82,
- 0xaf,0xf9,0x10,0x0a,0x08,0x0c,0x31,0x34,0x32,0x92,0x57,0x50,0xda,0x4c,0x06,0xb8,
- 0xb9,0x8d,0x9e,0x9e,0x01,0x90,0xa9,0xa9,0x59,0x61,0x69,0x09,0xcc,0x81,0xa5,0xf8,
- 0xfb,0xa4,0xa3,0xa7,0x0f,0xdf,0x70,0xa7,0x0b,0xe9,0x47,0xbb,0x89,0xf4,0xc7,0xe8,
- 0xf4,0x99,0x9f,0x27,0x4e,0x9a,0x0c,0x0a,0xe8,0xe2,0x63,0xa3,0xa1,0x4b,0x8f,0x92,
- 0x35,0xcb,0x06,0x1a,0x25,0x22,0x3a,0x36,0x35,0xed,0x54,0x31,0xe0,0x6f,0x5b,0xd7,
- 0xd3,0x67,0xfd,0x7f,0xc5,0x4c,0x4c,0x3e,0x7f,0x7e,0xfe,0x9f,0xfe,0xa7,0xcf,0x9f,
- 0x09,0x45,0x92,0xc7,0xad,0xed,0xf7,0x2b,0x1f,0xdc,0xb9,0xf7,0xa0,0xb2,0xfa,0xe1,
- 0x87,0xd3,0xa7,0x53,0xc5,0xc8,0xb3,0x2d,0x83,0xe1,0x1a,0xca,0x0d,0xf8,0x7a,0xa3,
- 0xeb,0xe9,0x8d,0x0c,0x01,0xc4,0x87,0xc6,0x01,0x52,0x59,0x2d,0x7d,0x53,0x64,0x36,
- 0x34,0x32,0x98,0xf0,0xe1,0xac,0x4d,0x3f,0x03,0x52,0x38,0x70,0x10,0x65,0xac,0x7d,
- 0x5a,0x34,0x3e,0xf0,0x04,0x60,0xd5,0x63,0x7d,0xe9,0x14,0x24,0x06,0xec,0x70,0x08,
- 0x12,0xcf,0xf9,0xb6,0x6c,0x8c,0x06,0xfa,0xbf,0x86,0xae,0xbb,0x1d,0x70,0xed,0x10,
- 0xdf,0x74,0xa1,0x0f,0xae,0xb6,0xfa,0xa7,0xfa,0x94,0xd5,0xe1,0x36,0x81,0x02,0x47,
- 0x0e,0xc0,0x13,0x84,0x42,0xfb,0x83,0xad,0xef,0x2b,0x1b,0xbf,0xf3,0xee,0x18,0x8b,
- 0xe5,0x61,0x6c,0x00,0x23,0x8e,0xc8,0x89,0x23,0x76,0xe4,0x88,0x41,0x38,0x20,0x11,
- 0x90,0xa3,0x8c,0xd8,0xaf,0x46,0xd8,0x52,0x12,0x03,0x7e,0x0d,0x4b,0x0e,0x1d,0xa5,
- 0x21,0xe8,0x43,0x23,0x20,0x19,0x71,0x2d,0x48,0xc8,0xe6,0x08,0xd9,0x44,0x3e,0x89,
- 0x43,0x44,0xe4,0x20,0x0d,0x45,0x34,0xc9,0x96,0x1d,0xa2,0x18,0x4a,0x23,0x6c,0xd4,
- 0x47,0x7a,0xd4,0x91,0x30,0xd3,0x43,0x32,0x99,0x58,0x10,0x64,0x3a,0x22,0x1b,0x03,
- 0x49,0x7a,0x0a,0x41,0x52,0x01,0x95,0x43,0x18,0xc4,0xb8,0x6e,0x59,0x5a,0x3b,0x21,
- 0x91,0x29,0xb0,0xe7,0x08,0x01,0xb5,0xd9,0x1c,0xea,0xea,0x0a,0x50,0x32,0x47,0xe0,
- 0x12,0x0a,0xa2,0x84,0xf3,0x8e,0x88,0xd0,0xe7,0x3d,0x26,0xf2,0x08,0x17,0x2d,0x8e,
- 0x14,0x2f,0x8f,0x96,0xac,0x8c,0x15,0x7e,0x92,0x24,0xfe,0xf4,0x84,0x64,0x63,0x4a,
- 0xef,0xd7,0x19,0xbd,0xdb,0x32,0x25,0x3b,0xb2,0x24,0xbb,0x4e,0x75,0x79,0x67,0xb4,
- 0x7f,0x77,0xbc,0xa9,0xac,0x86,0xf9,0xdb,0x6e,0xfb,0xfc,0x86,0x9e,0xfc,0x72,0x30,
- 0xbf,0xb0,0x18,0x86,0x5f,0xaf,0x8f,0xd7,0x7f,0xb3,0xd3,0xdb,0x8f,0x73,0x34,0x21,
- 0x29,0xf5,0xfc,0xc5,0x2b,0x05,0x25,0x15,0x30,0x99,0x6c,0x6e,0x69,0x03,0x17,0x18,
- 0x3c,0x5f,0xe8,0xe1,0x30,0x04,0x09,0x84,0x42,0xa0,0x0e,0x1e,0xd3,0xd2,0xd6,0x01,
- 0x5e,0x70,0x65,0x75,0x6d,0x05,0x7e,0xc2,0xbb,0x0c,0x70,0x0d,0x26,0xf3,0xc9,0x27,
- 0xd2,0xc2,0xa3,0x63,0x83,0x43,0x8e,0x1c,0xf0,0xf1,0xdd,0xb9,0x6b,0xcf,0xd6,0x6d,
- 0x3b,0x36,0x7e,0xbe,0xd9,0x6b,0xdd,0x86,0x55,0xab,0xbd,0x00,0xdf,0x17,0xb8,0x2f,
- 0x72,0x9b,0xe7,0x6e,0xcf,0x76,0xb6,0xb1,0x63,0xe3,0x1d,0xe9,0xb9,0x96,0xb3,0x66,
- 0xcd,0x06,0x20,0x9e,0x3e,0x7d,0x3a,0xb8,0xc3,0x00,0x79,0xbf,0x5c,0xbf,0x9e,0x98,
- 0x9c,0x72,0x32,0x2d,0x2b,0xb7,0xa8,0xe2,0x51,0x73,0x9b,0x58,0x22,0xc1,0xb5,0xb0,
- 0x2f,0x5f,0x90,0x4f,0xbf,0x81,0xef,0x31,0x88,0x2b,0x63,0x5f,0xe2,0xe2,0x58,0xf8,
- 0x2b,0x2d,0x2f,0x27,0xee,0xb3,0x39,0x3e,0x4a,0x36,0x31,0x85,0xd0,0xd4,0xd4,0xdc,
- 0xc4,0x0c,0xf7,0xdd,0x82,0x04,0x64,0x60,0x9c,0xe4,0x03,0x05,0x06,0x05,0xe6,0x5c,
- 0xba,0xcc,0x8d,0x4b,0xca,0xb9,0x74,0xad,0xea,0x61,0x3d,0xaf,0x5b,0x40,0xa7,0xe5,
- 0x03,0x64,0x70,0xa2,0x40,0x49,0x47,0x57,0x88,0xc3,0x60,0xe8,0xe1,0xe1,0x69,0x62,
- 0x6a,0x6e,0x6a,0x86,0xa7,0x1b,0x13,0x81,0x44,0x26,0x0a,0x04,0xb1,0x50,0xd0,0x42,
- 0x0f,0x8f,0xa2,0xd2,0xe2,0x13,0x29,0x27,0x0f,0xfa,0x06,0xf8,0xfa,0x07,0x07,0x84,
- 0x84,0x45,0x44,0xc7,0xa5,0x67,0x9e,0xbe,0x72,0x35,0xff,0xd6,0x9d,0xfb,0x8d,0x8f,
- 0x5a,0xf9,0xdd,0x4c,0x4f,0xcf,0xd3,0xe7,0xfd,0xc3,0x50,0xf8,0xe5,0xa8,0x1e,0xf7,
- 0xf0,0x51,0x45,0x36,0xb6,0x0c,0x02,0x84,0xf5,0xf4,0xf6,0xc2,0xdc,0xa7,0xf1,0xd1,
- 0xe3,0xdb,0x77,0x2b,0xaf,0x5e,0x2b,0x00,0x1f,0xb3,0xb0,0xa8,0xd8,0xcd,0x6d,0x3e,
- 0xd5,0x04,0xd4,0x02,0x32,0x91,0xa9,0x47,0x6b,0x4a,0x09,0x74,0x0e,0x0a,0x0e,0x39,
- 0x77,0xe1,0x12,0xb8,0x44,0x17,0x2f,0x5f,0xab,0xac,0x06,0xf8,0x10,0xe1,0x0e,0xc6,
- 0x2f,0xb0,0x9a,0x40,0x83,0x44,0x19,0x79,0x12,0x4a,0x59,0xb9,0x6a,0x35,0xda,0xf0,
- 0x35,0x51,0xbf,0x4a,0xa0,0x89,0xb3,0x8b,0x6b,0xc5,0xad,0x3b,0x91,0xdc,0x04,0x98,
- 0xb9,0x95,0x55,0xdc,0x47,0xff,0xeb,0xe9,0x33,0xda,0x64,0x68,0x55,0xf2,0x60,0x8e,
- 0x96,0x45,0xed,0x4c,0x92,0xd2,0xa3,0xb2,0x24,0x99,0x72,0x50,0xdd,0xb0,0x45,0x46,
- 0x1c,0x1d,0x24,0x34,0xf2,0xdc,0xb2,0xf2,0xf2,0x0f,0x3e,0x98,0x26,0x6f,0xfd,0xdf,
- 0xa5,0xf6,0xaf,0x92,0xcf,0xc1,0x43,0xe0,0x5f,0x47,0x71,0x13,0x2f,0x5e,0xb9,0x5e,
- 0xf9,0xa0,0xa6,0x5b,0x20,0xc4,0x2f,0x14,0x0f,0xca,0x4a,0x7f,0x31,0x20,0x87,0x63,
- 0x88,0xf4,0x3d,0x7b,0xb6,0x7a,0xcd,0xda,0x5f,0x95,0x49,0xcd,0x3b,0xdf,0x7d,0x41,
- 0xd9,0x8d,0x8a,0xa8,0x98,0x78,0xc0,0xdf,0x1b,0x15,0xf7,0xda,0x3a,0x3a,0x7a,0xfb,
- 0xfa,0x68,0x87,0x94,0x57,0x53,0x6a,0x28,0x12,0x81,0xbe,0x65,0x61,0x31,0x41,0x5e,
- 0x41,0x79,0x1b,0x99,0x98,0xd1,0x8a,0x43,0x30,0xe9,0x7a,0x5e,0x7e,0x72,0x4a,0xda,
- 0xf1,0x94,0xf4,0x82,0xc2,0xd2,0xfa,0xc6,0x16,0x49,0x4f,0x2f,0xfd,0xac,0x30,0xb9,
- 0x5e,0x06,0x87,0xeb,0x3c,0xa2,0x0a,0xc3,0x93,0xb4,0x68,0x4c,0xbe,0x1c,0x1c,0xd1,
- 0x28,0xf2,0x0e,0x7c,0xe5,0xea,0xd5,0x0f,0xa7,0xcf,0x84,0xae,0x47,0x4b,0x97,0xea,
- 0x60,0x26,0xed,0x84,0x96,0x56,0x56,0xb9,0x79,0xf9,0xdc,0xd8,0xc4,0x94,0xb4,0xec,
- 0xdc,0xa2,0xd2,0x96,0x27,0xed,0xa0,0x09,0xfd,0x74,0xe3,0x50,0xb3,0x82,0xc8,0x61,
- 0x5a,0xc9,0x0a,0x7d,0xf1,0x7a,0xb9,0xb4,0xe7,0x48,0x2f,0xcc,0x97,0xf8,0xd5,0x51,
- 0x68,0x7e,0x0c,0x88,0x92,0x60,0xb1,0xde,0x3e,0x40,0x5e,0x31,0x4c,0x60,0x1a,0x9a,
- 0x9a,0x61,0xe2,0x07,0x5e,0x43,0x4d,0x5d,0xc3,0xde,0x7d,0xfb,0x68,0xb7,0x84,0x4b,
- 0x03,0x5c,0xf5,0x3f,0xd9,0x0d,0x68,0xbd,0x4c,0x65,0x95,0x35,0x36,0x33,0x31,0xc6,
- 0x85,0x2b,0xa6,0x1f,0x38,0xaf,0x77,0x38,0xd4,0x0c,0xf0,0xe1,0x18,0x2c,0x70,0x0b,
- 0x15,0xb2,0xf6,0x3e,0x54,0x36,0xb1,0xc6,0xdd,0x7e,0x56,0x84,0xb2,0x43,0x18,0x76,
- 0x30,0x80,0x88,0x70,0xf6,0x4e,0x29,0xfe,0x6a,0x4c,0x74,0x9b,0xb8,0x24,0xd0,0x64,
- 0x81,0xcf,0x58,0xe2,0x0e,0x8f,0xd3,0x34,0x9d,0xbc,0x36,0xc2,0x72,0x6f,0x8d,0x23,
- 0x79,0x71,0xd5,0x9e,0xc3,0x38,0x04,0x33,0x6a,0x13,0xec,0xff,0xfb,0xbf,0xde,0x33,
- 0x64,0x7f,0xeb,0x18,0xc8,0x87,0x4c,0xc7,0x10,0xc6,0x31,0x18,0x97,0x18,0xd9,0x23,
- 0x90,0x0d,0x11,0xe4,0x3b,0x70,0x90,0x1c,0xe9,0xa1,0x10,0x24,0x27,0x0e,0x80,0x9a,
- 0xc0,0x09,0x4f,0x41,0x51,0x4e,0xa1,0x8c,0xa3,0x8c,0x99,0xcd,0xa1,0xfc,0x02,0xa7,
- 0x60,0x40,0x3a,0xc6,0x39,0x18,0x40,0x13,0x43,0x36,0x9e,0x82,0x04,0x9c,0x94,0x19,
- 0xf2,0x9d,0x48,0xc4,0x29,0x78,0x28,0xe9,0x84,0x0c,0x78,0x2e,0xa0,0x2d,0x9c,0xe5,
- 0x44,0xf2,0x51,0x32,0x82,0x2c,0x8a,0x72,0xe4,0x50,0x0d,0x45,0xf4,0x14,0x59,0x12,
- 0x5c,0x63,0xcc,0x94,0x9d,0x2b,0x70,0x0e,0x15,0x92,0xa4,0x48,0x06,0xb8,0x42,0x72,
- 0x0a,0x26,0xed,0x11,0x70,0x45,0x58,0xdf,0x10,0x91,0x4b,0xa8,0xd0,0x31,0x44,0xe0,
- 0x18,0x8a,0x49,0xe7,0x50,0xd1,0xbc,0x23,0x8c,0x7b,0x98,0x08,0xc8,0x23,0x42,0xb8,
- 0x94,0xdb,0x0b,0x3e,0xef,0xaa,0x38,0xf1,0xba,0xc4,0x9e,0xcf,0x4e,0xf6,0x6d,0x4c,
- 0xe9,0xdb,0x92,0xd9,0xb7,0xe3,0x74,0xef,0x37,0xd9,0x3d,0xbb,0x7f,0x16,0xef,0x3e,
- 0xc3,0xec,0x3e,0xd3,0xed,0x9d,0xd9,0xee,0x7f,0xa1,0xad,0xe7,0xf9,0xdf,0xfa,0xb5,
- 0xdf,0xd7,0xa9,0x7f,0xa0,0xff,0x7b,0xef,0x5d,0xcb,0x56,0xac,0xfa,0x6a,0xd3,0xd6,
- 0xbd,0xfb,0x0f,0x85,0x45,0x72,0x33,0xb3,0xce,0x5d,0xcb,0x2b,0xbc,0x75,0xf7,0x41,
- 0x5d,0x43,0x53,0x6b,0x5b,0x17,0xa0,0x89,0x40,0x28,0xf9,0x5f,0xf6,0xbe,0x03,0xba,
- 0xad,0xe3,0x4a,0xf4,0x9c,0xbf,0xb6,0x9c,0xea,0x6c,0x36,0xbb,0xc9,0xa6,0x6f,0x49,
- 0xbc,0xb1,0x1d,0xa7,0x6c,0x62,0x27,0x9b,0x38,0x2e,0x92,0x2d,0xd9,0x6a,0xee,0x56,
- 0xb3,0x64,0x5b,0xb6,0x7a,0xb1,0x2d,0xc9,0xea,0x14,0x29,0x51,0xec,0x9d,0x94,0x28,
- 0xf6,0xde,0x2b,0x40,0x90,0x00,0x3b,0x89,0xca,0xde,0x7b,0x27,0xd8,0x2b,0x0a,0x09,
- 0x56,0xe0,0x9f,0xf3,0xef,0x9d,0x79,0xef,0xe1,0xa1,0x50,0x96,0x5c,0xe2,0x55,0x7e,
- 0x74,0xae,0xc7,0x77,0x66,0xee,0xdc,0x3e,0xb8,0x6f,0xc0,0x87,0xf7,0xe0,0x0c,0x05,
- 0x35,0x71,0x66,0x76,0x16,0x60,0x72,0x7a,0x7a,0x68,0x04,0xff,0x16,0x0c,0xc7,0x49,
- 0xa8,0x38,0x32,0x65,0x75,0x41,0x91,0x54,0x90,0x93,0x9b,0x98,0x9c,0x1a,0x1a,0x16,
- 0xeb,0x17,0x14,0xec,0xe6,0xe1,0x75,0xf9,0x8a,0xf3,0xe9,0xb3,0x17,0x8e,0x9d,0xf8,
- 0x68,0xff,0xfb,0x87,0xdf,0xda,0xf7,0xee,0x1b,0x3b,0x76,0xbf,0xf4,0xf2,0xab,0x9b,
- 0xb7,0xbe,0xfc,0xdc,0xc6,0xcd,0xeb,0x9f,0xdb,0x44,0xef,0xce,0xfa,0xe3,0xff,0xfc,
- 0xe9,0x89,0x27,0xfe,0x07,0x0a,0xf1,0xfa,0xf5,0x1b,0xa0,0x88,0x27,0x24,0xa7,0x42,
- 0xfd,0x2d,0x91,0x2a,0xdb,0x3a,0x7b,0xc7,0x27,0xa1,0xe8,0x6b,0xb5,0xfa,0x39,0x1d,
- 0xc0,0xdc,0x3c,0xc0,0xdc,0x1c,0x3e,0x18,0x0a,0x76,0x34,0x1c,0x8d,0x1b,0x9a,0x9a,
- 0xe0,0xb3,0x97,0xde,0x53,0x4d,0xe1,0x67,0x3f,0xfb,0x39,0xbf,0xfb,0x8b,0x5f,0xfc,
- 0x82,0x45,0x1e,0x76,0xba,0x76,0xad,0xa0,0xb8,0x24,0x2c,0x22,0x2e,0x27,0x37,0xbf,
- 0xbe,0xb1,0x0d,0x2e,0x2a,0xc0,0x16,0x60,0x05,0xff,0xe9,0xf5,0xf3,0x3a,0x3d,0x32,
- 0x07,0xd3,0xe0,0xe4,0x0b,0x83,0xf3,0x86,0x05,0xf8,0x2c,0xe5,0xb3,0xb2,0x05,0xe0,
- 0xb9,0x77,0xdf,0xdb,0x32,0xb9,0x3c,0x29,0x39,0xc5,0xc5,0xd5,0xd3,0xd5,0xc3,0xd7,
- 0xdb,0xff,0x46,0x70,0x48,0x44,0x5c,0x42,0x7a,0xae,0xb8,0x58,0xa6,0xac,0x6a,0x6d,
- 0xef,0x1e,0x1c,0x1a,0x02,0x47,0x69,0xb5,0x3a,0xf8,0xa0,0xa0,0xbf,0xc7,0xfc,0xc4,
- 0xfa,0xbb,0x0a,0xd7,0x18,0x2b,0x46,0xa8,0xda,0x50,0x79,0x61,0xed,0xe0,0xd0,0x30,
- 0xf0,0x51,0x56,0x54,0xe7,0x8a,0x8b,0x4a,0xcb,0x15,0x95,0xd5,0x55,0x7b,0xf6,0xee,
- 0x03,0xd1,0x3f,0xff,0xf9,0x7f,0x3d,0xf4,0x10,0xb5,0x0e,0x90,0x87,0xe1,0x3a,0x84,
- 0xed,0x9a,0xc1,0xc5,0xcd,0x03,0x4e,0xbe,0x11,0x91,0x71,0xc2,0x5c,0x09,0x7c,0x34,
- 0x8d,0x8c,0x8e,0xc1,0xa9,0x1c,0x8e,0xd2,0x3a,0xb0,0x9a,0xf8,0x90,0x02,0x78,0x00,
- 0x3c,0x3c,0x39,0x39,0xb3,0xef,0x9d,0x77,0x6f,0x6f,0xf2,0x6d,0x60,0xfd,0x86,0x0d,
- 0x95,0xd5,0xb5,0x21,0x11,0x31,0x49,0xc9,0x99,0x60,0x7b,0x57,0xef,0xc0,0xd4,0xb4,
- 0x86,0x08,0x9a,0xc7,0xf0,0x11,0x71,0x24,0x88,0x73,0x8c,0x9f,0x49,0x34,0xe9,0x2c,
- 0x13,0x05,0x42,0x40,0x70,0x3d,0x4b,0x8c,0x94,0xcc,0x5a,0x56,0x55,0xd2,0xc5,0x29,
- 0x8d,0x16,0xa2,0x84,0x39,0xf0,0xfb,0xc7,0x9f,0x00,0x05,0xc0,0x09,0x9f,0x5a,0x79,
- 0xbb,0xf0,0x5f,0xff,0xf5,0x0b,0x27,0xa7,0xab,0x25,0x25,0x65,0x21,0xa1,0x31,0xa2,
- 0xbc,0x7c,0xb8,0xc8,0x1c,0x1a,0x19,0xd7,0xd0,0x9c,0x61,0x95,0x67,0x70,0xa2,0x36,
- 0x24,0xcd,0x81,0x83,0x87,0xee,0x90,0xf9,0xa6,0x4d,0x2f,0x54,0x56,0x55,0x87,0x86,
- 0x47,0xa5,0xa6,0x0b,0x14,0xaa,0xea,0x6e,0x70,0xd7,0xcc,0xac,0x56,0xcf,0x59,0x8a,
- 0x11,0xd1,0xea,0x19,0x04,0x8a,0x7e,0x42,0x62,0xd2,0xa3,0xbf,0xfc,0xe5,0x6d,0x18,
- 0x3e,0xfc,0xf0,0x23,0xf9,0x45,0xc5,0x49,0x29,0xe9,0xb1,0xf1,0x29,0x25,0x65,0xf2,
- 0xd6,0xf6,0xde,0xc9,0xa9,0xa9,0x59,0x8c,0xf5,0x3c,0x4f,0x5b,0x46,0x55,0x9e,0xa0,
- 0x79,0x9a,0x0c,0xe6,0xa0,0x70,0x31,0x62,0xac,0x9b,0x83,0x28,0x32,0x09,0x33,0x3f,
- 0x3f,0x0b,0x7b,0x66,0x6e,0x5e,0x2e,0x97,0xff,0xe9,0x4f,0x7f,0xb2,0xdd,0x6e,0x14,
- 0x9e,0xf8,0xc3,0x1f,0x8b,0x4b,0x4a,0x23,0x63,0x12,0x12,0x93,0x33,0x8a,0x4a,0x65,
- 0xf0,0xe9,0x31,0x3e,0x39,0xc5,0x8a,0xe6,0x84,0xb2,0xdb,0xcd,0x1c,0x7a,0x73,0x4a,
- 0xe8,0x99,0xfc,0x9c,0xa3,0x1b,0x9f,0x9b,0xd5,0x90,0x1d,0x0b,0x18,0xfc,0x1f,0x3e,
- 0x17,0x20,0x97,0x27,0x26,0xa7,0xd4,0xc3,0x63,0x9d,0xdd,0xbd,0x8d,0xcd,0x6d,0xa5,
- 0xe5,0xca,0x5c,0x49,0x41,0x5d,0x43,0x53,0x4a,0x5a,0xfa,0xe3,0x4c,0x4a,0x60,0x10,
- 0x1f,0x7e,0xf8,0x73,0x4e,0x0c,0xf8,0x87,0xdb,0xff,0x91,0x5f,0xff,0xf1,0x68,0xc6,
- 0x46,0xbf,0xd9,0x0d,0x50,0x26,0x7c,0x66,0x9f,0xf7,0xd1,0xfe,0xf9,0x72,0xf3,0xb7,
- 0x7e,0xfc,0xbb,0xfb,0xef,0xff,0xda,0x63,0x7b,0x22,0x9e,0xf3,0x9d,0x85,0x3a,0xf8,
- 0x9c,0xb7,0xf6,0x8f,0x1f,0x33,0xf7,0x5f,0xad,0xbb,0xef,0x81,0x07,0x1e,0xf8,0xc6,
- 0xba,0x75,0x5f,0xbb,0x1f,0xd0,0x7f,0x58,0x77,0xff,0x3f,0xac,0x7b,0xe0,0xab,0xdf,
- 0xfa,0xa7,0x7f,0xff,0xfd,0x6f,0x0f,0x64,0xac,0xf7,0xd6,0x3e,0xe7,0x03,0xa5,0x4d,
- 0xf3,0xfd,0xdf,0xbc,0x06,0x53,0xff,0xf6,0xd4,0xe1,0x0d,0x1e,0x13,0xb0,0x16,0x78,
- 0xc2,0xf8,0x46,0xdf,0xd9,0xe7,0x7d,0x75,0xeb,0x41,0x84,0xbf,0x6e,0x83,0x8f,0xe6,
- 0x39,0x5f,0x1d,0x54,0xa8,0xe7,0x7d,0xb5,0x2c,0xe8,0x80,0xec,0x79,0x9f,0xd9,0xe7,
- 0x7c,0x74,0xd8,0x7a,0x43,0xab,0xd9,0xe0,0xcd,0xe0,0x38,0x48,0xc8,0x36,0x78,0xcf,
- 0x6c,0xf4,0xd3,0x3f,0xe3,0x0d,0x53,0x9a,0x8d,0xc0,0x0d,0x75,0x83,0x25,0xb8,0x70,
- 0x83,0x17,0xb3,0x9c,0xea,0x00,0xcb,0x9f,0xf3,0xd6,0xd0,0xd9,0xe7,0x90,0x09,0xb4,
- 0x33,0xcf,0xa3,0x81,0xf8,0x1b,0x5b,0x42,0x8c,0x2d,0x21,0x00,0x1b,0xb5,0xd4,0xcc,
- 0xf5,0xde,0xb3,0xcf,0xfb,0x41,0xd5,0xd6,0x42,0xbb,0x81,0x5b,0x0b,0x3c,0xfd,0xf0,
- 0xc7,0xb9,0x4f,0x33,0xb7,0x4b,0xa1,0x4f,0x80,0x72,0x03,0x0c,0x7a,0x69,0x40,0x87,
- 0xe7,0xfd,0x50,0x1f,0xb2,0x56,0x0b,0x3e,0x44,0xdd,0xfc,0x34,0x1b,0xfd,0xb5,0xcf,
- 0xf9,0x81,0xb1,0xf4,0x2f,0xbc,0x50,0x76,0x75,0xdb,0x82,0xe1,0xcc,0x3b,0xf7,0x7a,
- 0x98,0x66,0x47,0x24,0x54,0x5e,0xfd,0xfe,0xf8,0xf9,0x83,0x49,0x86,0x13,0xe9,0x86,
- 0x0f,0x33,0x0d,0xe7,0x84,0x86,0xcb,0x22,0x83,0x63,0x9e,0xc1,0x39,0x4f,0x77,0x55,
- 0x34,0xe3,0x24,0x9c,0xb8,0x2a,0x18,0x55,0xf4,0xe8,0xbf,0xf4,0x7a,0xfa,0x29,0x00,
- 0x0e,0x56,0x3b,0x77,0xbd,0xb5,0xef,0xed,0x77,0x3f,0x3e,0x7b,0xd1,0xc5,0x33,0x20,
- 0x3a,0x2e,0x19,0x3e,0xb7,0xe5,0xaa,0x9a,0xa6,0xd6,0xf6,0x7e,0x28,0x03,0xa3,0xe3,
- 0x53,0xd3,0xd3,0xb0,0x05,0x70,0x5f,0xe8,0xf0,0x14,0x0c,0xf9,0x3f,0x3e,0x09,0x25,
- 0x78,0xa2,0x6f,0x60,0xa8,0xb5,0xbd,0xa3,0xa1,0xb1,0x59,0x59,0x51,0x07,0x67,0x34,
- 0x51,0x5e,0x51,0x52,0x4a,0x56,0x64,0x4c,0xfc,0xcd,0xe0,0x08,0x4f,0x2f,0x7f,0x67,
- 0x17,0x8f,0x73,0x17,0x1d,0x3e,0x3a,0x7d,0xee,0xc8,0xb1,0x0f,0xdf,0x79,0xe7,0xc0,
- 0xae,0x3d,0xef,0xbe,0xf6,0xfa,0xae,0xed,0x2f,0xbd,0x01,0x55,0x78,0xd3,0x0b,0x9b,
- 0xc9,0x3d,0xd2,0x1b,0x9e,0x7c,0xea,0x99,0x3f,0x3f,0xf9,0x97,0xe7,0x37,0x6e,0x12,
- 0xe5,0x8a,0x93,0xd3,0x32,0xe3,0x13,0x53,0x24,0x85,0x65,0xd5,0xb5,0x4d,0xed,0x9d,
- 0x7d,0xbd,0x7d,0x83,0x3d,0x83,0xe3,0xfd,0x83,0xea,0x81,0xc1,0x61,0x28,0x9a,0xbd,
- 0xfd,0x03,0xfd,0x03,0x83,0x03,0xa0,0xcf,0xc8,0x68,0x67,0x77,0x37,0x7c,0xf6,0x3e,
- 0xf6,0xd8,0x63,0xbf,0x64,0xff,0x3d,0x46,0xfe,0xfd,0xea,0x57,0xbf,0xa6,0xdd,0x47,
- 0x1e,0x79,0x84,0x1b,0xbf,0x70,0xf1,0x12,0x9c,0xf1,0xa1,0xfe,0xa6,0x67,0x66,0xcb,
- 0xe4,0xd5,0x4d,0x2d,0x70,0x99,0x0c,0xac,0xd4,0x5d,0xfd,0xf8,0x74,0xcd,0xbe,0xfe,
- 0x21,0xb8,0x90,0xe8,0x1e,0x18,0x05,0xce,0x7d,0xfd,0x6a,0x28,0xf9,0xef,0x1f,0x7c,
- 0xff,0x97,0xf6,0xfe,0xd1,0xbf,0x5c,0xd3,0x7f,0xbf,0xfa,0xd5,0xaf,0x8e,0x9f,0xfc,
- 0xa0,0xae,0xbe,0x2e,0x36,0x29,0xd5,0xc3,0xdb,0xcf,0xcd,0xfb,0x86,0x6f,0xc0,0xcd,
- 0xe0,0x5b,0x11,0xd1,0x71,0x89,0x59,0x82,0x3c,0xb8,0x14,0xaf,0xae,0x6b,0xec,0xe8,
- 0xea,0x05,0x5d,0x27,0xa7,0xe0,0xa3,0x6b,0x6e,0x61,0x11,0x7f,0xd0,0x0c,0x87,0xeb,
- 0x55,0xe6,0x9a,0x9f,0x3d,0xea,0x42,0xcd,0x35,0xae,0xc2,0x69,0x65,0x69,0x79,0xc5,
- 0xb0,0xb8,0x00,0x9f,0x36,0x70,0xb1,0x03,0xd7,0x36,0xa0,0x61,0x55,0x4d,0x03,0x7c,
- 0x9c,0x66,0x0b,0xf3,0xca,0xa4,0xb2,0xd6,0xb6,0xf6,0xf7,0x0e,0x1c,0xfc,0xed,0x6f,
- 0x7f,0xcb,0x37,0x19,0xfe,0x3d,0xfa,0xa8,0x5d,0x4d,0x7f,0x79,0xf5,0x9a,0x73,0xa9,
- 0xb4,0x3c,0x34,0x2c,0x1a,0x94,0x29,0x93,0x57,0xb5,0xb4,0xb5,0xf5,0xf4,0x81,0xf3,
- 0x86,0x20,0x9a,0x70,0x3c,0x87,0xa8,0xf5,0x0f,0x8e,0x02,0xf4,0x92,0x07,0x7d,0x43,
- 0x75,0x3e,0x7a,0xec,0xb8,0x7d,0x46,0x77,0xf0,0x6f,0xc3,0x86,0x0d,0x70,0x36,0x8f,
- 0x8c,0x8a,0x87,0x4f,0xdd,0xfc,0xa2,0x92,0x5a,0x34,0xbc,0x8f,0x7a,0xb5,0x6f,0x40,
- 0x4d,0x00,0x90,0x61,0x10,0x47,0x9e,0x2b,0x3e,0x4c,0xba,0x2c,0xf4,0x33,0x23,0xd8,
- 0x72,0xf8,0x00,0xd3,0x02,0x3d,0xe8,0xdc,0x4b,0xdb,0x7e,0x80,0xe1,0x5e,0x60,0xd2,
- 0x8f,0xac,0xc0,0xb1,0x2d,0x6d,0xed,0x7f,0x79,0xea,0xe9,0x4f,0xad,0xf6,0x6d,0xfe,
- 0x81,0x93,0xcf,0x5d,0x38,0x5f,0x2a,0x95,0x87,0x86,0xc7,0xa6,0x65,0x64,0x4a,0xe5,
- 0xaa,0xa6,0xd6,0x2e,0x88,0x08,0x6b,0x0b,0x75,0x20,0x55,0x69,0x70,0x50,0x3d,0x3c,
- 0x3d,0xa3,0xf9,0xe8,0xf4,0xe9,0x3b,0x64,0xfe,0xfc,0xf3,0x1b,0x2b,0xab,0xab,0xa3,
- 0xa2,0x13,0x13,0x92,0xd3,0x0a,0x4a,0xca,0x6b,0xeb,0x5b,0x3a,0xbb,0xfb,0xbb,0x7b,
- 0xc1,0x5e,0x64,0x08,0x56,0x53,0x04,0xce,0x74,0xdd,0x83,0xe3,0xa3,0xe3,0xe3,0x99,
- 0xd9,0x82,0xff,0xfe,0xef,0xdf,0xd9,0x55,0x92,0x66,0xfb,0x63,0x8f,0xfd,0x3a,0x27,
- 0x57,0x9c,0x92,0x9a,0x19,0x1d,0x93,0x84,0xaf,0x50,0xa9,0xaa,0x6f,0x6d,0xef,0xea,
- 0xee,0x47,0x55,0x49,0xac,0xd1,0xed,0x9c,0x6f,0xa9,0xcf,0x2d,0x42,0xc0,0x73,0xb8,
- 0xe5,0x08,0x05,0xec,0xe2,0xd6,0x20,0x39,0x53,0x51,0x55,0xf5,0xec,0xb3,0xcf,0x52,
- 0xe9,0xb6,0x2a,0xfd,0xe9,0xcf,0x7f,0x2e,0x2c,0x2e,0x8b,0x8d,0x4f,0x8e,0x8d,0x4b,
- 0xcd,0xcb,0x2f,0xaa,0xa9,0x6b,0x80,0x5d,0x4c,0xb8,0x0d,0x0e,0xa8,0x47,0x7b,0xd8,
- 0x38,0xb2,0xe1,0x56,0x43,0xee,0xd1,0xd9,0xde,0x7e,0x6b,0xb9,0x64,0x84,0xa7,0x55,
- 0xff,0x10,0xc9,0x55,0x35,0xb8,0xa5,0xb7,0x5f,0xdd,0xd6,0xd9,0x0d,0xbb,0xb8,0xba,
- 0xb6,0x51,0x2a,0xab,0xcc,0x93,0x94,0xc0,0xbe,0x2e,0x2a,0x93,0x56,0xd5,0xd4,0x6c,
- 0x7f,0xf9,0x15,0x4e,0x99,0x47,0xd7,0xda,0x1b,0x9f,0xe1,0x1f,0x7c,0xaa,0x80,0xd7,
- 0xff,0xb8,0x71,0xf7,0x26,0xf7,0xfe,0xe7,0x7c,0xf4,0x2f,0x06,0xce,0x6c,0xf2,0xd3,
- 0xbe,0x10,0xa0,0x7d,0xd2,0xa1,0xe5,0x5b,0x3f,0x7d,0x62,0xdd,0xfd,0x5f,0x79,0x6c,
- 0xf7,0xcd,0x17,0x03,0x34,0x70,0x70,0x83,0x41,0xae,0xfe,0x7e,0xfb,0x27,0xbf,0xf9,
- 0xf9,0xd3,0xef,0xff,0xe4,0x2f,0xef,0xff,0xf8,0xc9,0xf7,0x7f,0xf4,0xe4,0xc1,0x7f,
- 0x7e,0xe8,0xc9,0x75,0x0f,0xe0,0x2d,0x58,0xdf,0xf9,0xaf,0xf5,0xcf,0x79,0x8e,0xbc,
- 0xe0,0xaf,0x7d,0x31,0x40,0xfb,0xbd,0x47,0x5f,0x80,0xba,0xfc,0x1f,0xcf,0x1c,0xdb,
- 0xe4,0x3b,0xf1,0x62,0xe0,0x2c,0x14,0xa3,0x17,0x90,0x0f,0x54,0xa5,0xd9,0x17,0xfc,
- 0x67,0x01,0x47,0xf0,0xd7,0xc0,0x14,0x74,0x61,0x1c,0x00,0xbb,0x40,0xe3,0xa7,0x23,
- 0xf4,0x30,0x0e,0x38,0x8e,0x43,0x77,0x13,0xe9,0xc2,0x12,0xe4,0xe3,0x3f,0x03,0x83,
- 0x9b,0x03,0xa1,0xf8,0xce,0xbc,0x18,0xa0,0xc7,0xae,0x1f,0xd1,0x10,0xc7,0xb5,0xb0,
- 0x10,0x88,0x37,0x11,0x1c,0x46,0x36,0xfa,0xe2,0x08,0x28,0x8f,0x83,0x84,0x8c,0xc8,
- 0x02,0x73,0xa0,0xab,0xdf,0xe4,0x87,0xab,0x88,0xdc,0x59,0x34,0x1c,0xc7,0x75,0xa8,
- 0xa4,0xaf,0x6e,0xa3,0xaf,0xfe,0xc5,0x80,0x99,0x17,0x03,0x75,0x30,0x4e,0x96,0x00,
- 0x9f,0x19,0x1c,0x87,0x59,0x50,0x38,0x40,0xf7,0x2c,0xfe,0x5c,0x08,0x2b,0x2c,0x0c,
- 0x6e,0xf2,0xd7,0x3f,0xef,0x0f,0x45,0x19,0x34,0x47,0xf5,0x36,0x07,0x69,0x36,0x05,
- 0x40,0xab,0x63,0x6b,0x2e,0xc0,0x0c,0x9c,0x76,0x01,0x76,0x46,0x68,0xdf,0x8c,0x30,
- 0xbc,0x1d,0x83,0x95,0x17,0xce,0xbc,0x87,0x92,0x0d,0x67,0xb2,0xd9,0xca,0x2b,0x36,
- 0x38,0xe7,0x1b,0xdc,0x0a,0x0d,0x57,0xf3,0xb5,0xee,0xe2,0x69,0x27,0xe1,0x78,0x94,
- 0x7c,0x4a,0xbb,0xf0,0xe5,0x17,0xd3,0x4f,0x01,0x70,0x99,0xed,0xed,0xeb,0xff,0xda,
- 0x1b,0x3b,0x8e,0x1e,0x3b,0x71,0xc5,0xf1,0x9a,0x7f,0x70,0x78,0x4a,0x5a,0x76,0x61,
- 0x49,0x59,0x75,0x0d,0xd4,0x41,0xd8,0x37,0xe3,0x50,0x6d,0xe9,0x5f,0x81,0xe1,0x68,
- 0x06,0x75,0x18,0xea,0x2f,0xb9,0x04,0xd5,0x40,0x69,0x1e,0x1c,0x1a,0x03,0x12,0xd8,
- 0x0e,0x35,0xb5,0x0d,0x52,0x99,0xaa,0xa0,0xa8,0x34,0x4b,0x98,0x97,0x90,0x84,0x0f,
- 0xe8,0x08,0xba,0x19,0xea,0xe5,0xe3,0x7f,0xcd,0xd9,0xfd,0xfc,0x05,0x87,0xd3,0x67,
- 0xce,0x9f,0xf8,0xe0,0xd4,0x81,0x83,0x47,0xdf,0xdd,0x7f,0x70,0xc7,0xce,0xbd,0xaf,
- 0xbf,0xb9,0xeb,0xe5,0x57,0xdf,0xd8,0xba,0xed,0xa5,0x17,0x36,0xbf,0xf4,0xfc,0xc6,
- 0x2d,0x5b,0xb6,0xbe,0x24,0x96,0xe4,0xe3,0x0b,0x49,0xe3,0x92,0xd3,0x33,0x05,0xe2,
- 0x02,0x10,0xae,0x90,0xc9,0x2b,0xa5,0xf2,0x0a,0x99,0xa2,0xaa,0x4c,0x56,0x51,0xae,
- 0x50,0xc9,0x15,0xd5,0xe5,0x8a,0x8a,0x52,0xb9,0xaa,0xa2,0xba,0xae,0xbd,0xab,0xe7,
- 0xe9,0x67,0x36,0x3c,0xfe,0xc4,0x1f,0x10,0x1e,0xc7,0xf6,0xf7,0xbf,0x7f,0x1c,0xdb,
- 0xc7,0x9f,0xe0,0x0f,0xfe,0x0e,0x07,0x9f,0x38,0x73,0xfe,0x2c,0x1c,0x34,0xc2,0x22,
- 0x62,0x13,0x92,0xd2,0x85,0x22,0x89,0xa4,0xa8,0xbc,0x54,0xaa,0x2a,0x53,0xa8,0xca,
- 0xe4,0x08,0xe5,0x72,0x95,0x54,0x5e,0x55,0x8e,0x48,0x25,0x9c,0x32,0xfb,0xfa,0x07,
- 0xcf,0x9c,0x3b,0xcf,0x67,0x85,0x08,0xc1,0xa9,0x08,0xca,0x19,0xda,0x27,0x9e,0xf8,
- 0x23,0x5c,0xb1,0x54,0xd6,0xd4,0xe6,0x17,0x95,0x06,0xde,0x08,0xf1,0xf2,0x0f,0xf6,
- 0x0f,0xba,0x75,0x2b,0x24,0x12,0x2e,0x3f,0x92,0x52,0x32,0x85,0x39,0x92,0xc2,0xa2,
- 0xf2,0xaa,0x9a,0x46,0xb8,0x86,0xe9,0xe9,0x1b,0x04,0x2f,0x8d,0x4d,0x80,0x13,0xb5,
- 0x33,0xb3,0x1a,0x3c,0xd9,0x11,0xa0,0x97,0xf7,0xe0,0x4f,0xa8,0xd1,0x30,0x3b,0x34,
- 0x32,0xd6,0xd5,0x33,0xd8,0xdc,0xda,0x0d,0x06,0x96,0x96,0xcb,0x05,0x39,0xe2,0xb4,
- 0x0c,0x81,0x52,0x55,0xad,0xac,0xa8,0x3c,0x70,0xf8,0x88,0x59,0x19,0xd4,0xe4,0x0f,
- 0x8c,0x99,0x7c,0xc3,0x59,0x25,0x01,0x1c,0x9d,0xae,0x96,0x4b,0x55,0xb7,0xc2,0xa0,
- 0x28,0xa6,0x65,0x0b,0xc5,0x92,0x42,0x69,0x49,0x39,0xb1,0x57,0xca,0x98,0x2c,0x63,
- 0x0c,0x47,0x00,0x93,0x2f,0x3b,0x38,0x70,0x0c,0xed,0x82,0xd9,0xb1,0x56,0xe3,0xbf,
- 0x7f,0xfc,0xb9,0x8d,0x9b,0x94,0x95,0xd5,0xd1,0xb1,0x09,0x91,0xd1,0xf1,0x19,0x59,
- 0x22,0x71,0x7e,0x71,0x51,0xa9,0x42,0x4a,0xf8,0x43,0xbc,0x10,0x28,0xce,0x03,0x0c,
- 0x2b,0x04,0x57,0x51,0x49,0x70,0x6c,0xcb,0x65,0x2a,0x73,0xcb,0x82,0x5c,0x51,0x05,
- 0x23,0x72,0x79,0x95,0xed,0xac,0x12,0x5f,0xd4,0xd5,0xba,0x65,0xeb,0x36,0x6b,0x27,
- 0xf0,0x42,0xc6,0xd7,0x99,0x89,0xdd,0x9d,0xc0,0xe3,0xb8,0xfc,0xd4,0xc7,0x67,0x41,
- 0xb1,0x10,0x74,0x60,0x86,0x50,0x24,0x2e,0x2c,0x2e,0x2f,0x2a,0x53,0x96,0xb1,0xd2,
- 0x65,0xf2,0x2a,0x30,0x01,0x35,0x04,0x84,0xdc,0x14,0xe7,0x78,0xe5,0x9a,0x95,0x5b,
- 0xec,0xfa,0x0a,0xda,0x8d,0x9b,0x5e,0x50,0x55,0xd6,0x82,0xbb,0xa2,0xa2,0x93,0xd2,
- 0xb3,0x20,0xd5,0x4b,0x0b,0x4b,0x31,0x0a,0x32,0x85,0x4a,0xca,0x19,0x2e,0xaf,0x02,
- 0xdb,0x41,0x5c,0x5d,0x43,0x2b,0x1c,0xc0,0x9f,0xfc,0xcb,0x53,0xd6,0x06,0x5a,0x76,
- 0x05,0x42,0x91,0x40,0x98,0x1b,0x11,0x15,0x97,0x92,0x9e,0x95,0x2b,0x2e,0x2c,0x2a,
- 0x95,0xd3,0x70,0x63,0x62,0x2b,0x80,0x73,0x25,0xd5,0x96,0xfa,0x10,0x98,0x97,0x11,
- 0x13,0x64,0xe8,0xf9,0x4a,0xb3,0xc3,0x65,0x76,0x5a,0x39,0xc3,0x01,0xec,0xad,0x92,
- 0xab,0xaa,0x6a,0xeb,0xeb,0xb6,0x6e,0xdf,0x0e,0x72,0xed,0x1a,0xf8,0xd4,0xd3,0xcf,
- 0xe6,0x4a,0xc4,0x29,0x69,0x19,0x11,0x91,0x89,0xc9,0xa9,0xd9,0x79,0x92,0xa2,0xa2,
- 0x12,0x69,0x19,0x31,0xc7,0x3a,0x07,0x78,0x52,0x98,0x64,0xe0,0x34,0xe1,0xa2,0xac,
- 0x30,0x23,0xe0,0x0d,0x74,0x88,0x4c,0x55,0x2a,0x55,0x16,0x97,0xc9,0x0a,0x0a,0xcb,
- 0xc5,0xf9,0x85,0xf0,0x39,0x93,0x9a,0x91,0x9d,0x98,0x94,0x0e,0xbb,0x1b,0xae,0x00,
- 0xdf,0xdc,0xb5,0x1b,0x0e,0xe0,0x77,0x1a,0x65,0xdb,0xed,0xb3,0x46,0x32,0x58,0x90,
- 0xfd,0xfe,0xf1,0x3f,0xfe,0x65,0xc3,0x86,0x73,0x85,0x5b,0x6e,0x68,0xb6,0x05,0xeb,
- 0xa1,0x5e,0x6c,0xb9,0x81,0xf5,0x62,0xa3,0xe7,0xc0,0xbf,0x3e,0xba,0x01,0x4a,0xea,
- 0x43,0x2f,0x9c,0xdb,0x7a,0x13,0x8b,0x08,0x4c,0x3d,0x79,0xb9,0xf6,0xeb,0xdf,0xc5,
- 0xef,0x9f,0xff,0x73,0xb3,0x03,0xd0,0x6f,0x0f,0xd6,0x6f,0xbb,0x89,0xf4,0x2f,0xf8,
- 0xa8,0xff,0xf3,0xcf,0x6f,0xc3,0xf8,0x83,0xdf,0xf9,0xd1,0x7a,0xa7,0xba,0x6d,0x37,
- 0xe7,0x37,0xfb,0x4f,0x7d,0xe7,0x47,0x0f,0xad,0x5b,0xf7,0xd5,0x47,0x5f,0x77,0xdb,
- 0x12,0xa4,0x83,0xd3,0xdf,0xf6,0x5b,0xf3,0x50,0x95,0xe0,0xe8,0xb7,0xf5,0x26,0x48,
- 0x01,0x6e,0x7a,0x52,0x9b,0xe6,0x08,0x0e,0x08,0xce,0x92,0xae,0x86,0xfc,0x0c,0x47,
- 0xcf,0x91,0x91,0x2e,0x8c,0xcf,0x82,0x56,0x30,0x02,0x5d,0x32,0xae,0xa1,0x0b,0xc9,
- 0x88,0x86,0x22,0xec,0xa0,0x86,0x32,0x27,0xa0,0xe7,0xd1,0xeb,0x59,0x02,0x1d,0xbb,
- 0x16,0x24,0xce,0xb3,0x5d,0x0d,0xa1,0xa4,0x42,0x51,0x0a,0xdb,0x65,0x38,0x6f,0xbd,
- 0x89,0xc4,0xd0,0x52,0xff,0x80,0x45,0x54,0x67,0xd2,0xe5,0x14,0xc0,0x2f,0x96,0xb7,
- 0x07,0xeb,0x00,0xb6,0xdd,0xd4,0xbd,0x1a,0x3a,0xfb,0xf2,0x2d,0xed,0x2b,0xa1,0x73,
- 0x6f,0x84,0xeb,0xde,0x0c,0x9f,0xdf,0x19,0xa9,0xdb,0x1d,0x3d,0xb7,0x37,0xc6,0xf0,
- 0x5e,0x02,0x96,0x5d,0x38,0xf3,0x7e,0x94,0x65,0xb8,0x24,0x32,0x5c,0x11,0x1b,0xae,
- 0x15,0x18,0x5c,0x8a,0x0c,0xde,0xa5,0x8b,0xfe,0xa5,0x0b,0xb7,0xca,0xb5,0x3e,0x45,
- 0x06,0xdf,0xfc,0x19,0x5f,0xc9,0x58,0xfb,0xd8,0xe7,0x77,0xe3,0xeb,0x5f,0x1d,0x9a,
- 0x5b,0xdb,0xf7,0xee,0x7d,0x1b,0x0a,0xca,0x47,0xa7,0xce,0xba,0x79,0x05,0x44,0xc6,
- 0xc4,0xc1,0xe7,0xbf,0x54,0xa1,0xaa,0x6b,0x6c,0xe9,0xe8,0x55,0xf7,0x0f,0x4f,0x4c,
- 0x4e,0x41,0xe9,0xd0,0xd2,0xaf,0x7f,0x49,0x15,0x9e,0x83,0x4a,0x32,0x35,0x3d,0x3b,
- 0x32,0x36,0x3d,0x88,0x37,0x45,0x0f,0x92,0xd7,0x34,0xb4,0xc0,0x66,0x87,0x4d,0x27,
- 0x12,0x17,0xa4,0x65,0x0a,0xe3,0x93,0xd2,0x42,0xc2,0xa2,0x03,0x6f,0xdc,0xf2,0xf4,
- 0xf2,0xbb,0x7a,0xcd,0xed,0xc2,0xa5,0x2b,0x50,0x85,0x4f,0x7e,0x70,0xfa,0xf0,0x91,
- 0xe3,0xfb,0xf7,0x1f,0xda,0xb3,0x77,0xff,0xce,0xdd,0xfb,0x5e,0x7f,0x63,0xf7,0x2b,
- 0xaf,0xbd,0xf1,0xea,0xeb,0x3b,0x73,0x44,0xb9,0xc2,0xdc,0xe2,0x98,0xb8,0xc4,0x84,
- 0xa4,0x34,0x28,0xc1,0x99,0xd9,0x79,0x70,0xf4,0xcb,0xcc,0xce,0x81,0x16,0x0e,0x71,
- 0x80,0x64,0x09,0x72,0x33,0xb3,0x85,0x80,0x8b,0x25,0x45,0x6d,0x1d,0x9d,0xdb,0x5f,
- 0x7e,0xf5,0xa9,0xa7,0xd7,0x43,0x15,0x7e,0xea,0xe9,0x0d,0x4f,0x3d,0xb3,0x01,0x8e,
- 0x42,0x4f,0x3d,0xf3,0x2c,0x6d,0x01,0x9e,0x7c,0xea,0x69,0x80,0xbf,0x3c,0xfd,0x0c,
- 0xc0,0xe9,0x8f,0xcf,0xd5,0x37,0x34,0x86,0x46,0x46,0x47,0xc7,0x24,0xc2,0xf9,0x3a,
- 0x35,0x3d,0x0b,0x2e,0x98,0x33,0xb2,0x84,0x99,0xd9,0x22,0xd2,0xe6,0x00,0x92,0x25,
- 0x40,0x1c,0xda,0xc6,0xe6,0xb6,0xeb,0x6e,0xee,0xb0,0xea,0xe9,0x67,0xd7,0x53,0x26,
- 0x4f,0x3d,0xb3,0x1e,0x00,0x46,0x9e,0x02,0x40,0x11,0xcf,0x50,0xce,0x4f,0x3f,0xb3,
- 0xfe,0x99,0xf5,0x1b,0xc0,0x96,0x82,0xe2,0xe2,0x8a,0xaa,0x1a,0xb8,0x72,0x80,0xeb,
- 0x8d,0x5b,0xa1,0xd1,0xa1,0xe1,0x31,0xf8,0x87,0xec,0xc4,0xf4,0xd4,0xf4,0xec,0x5c,
- 0xbc,0x92,0x80,0xcf,0x8f,0x9a,0xda,0xba,0x26,0xb8,0x44,0x81,0xe3,0x40,0x4f,0xef,
- 0x00,0xbd,0xfe,0x1f,0x1c,0x1a,0x81,0x16,0x0e,0xf5,0x70,0x49,0xdf,0xde,0xd9,0xdb,
- 0xdc,0xd6,0x59,0x57,0xd7,0xac,0x54,0x55,0x15,0x97,0xca,0x73,0xc5,0x45,0xe9,0x99,
- 0x22,0xa8,0x9b,0xb5,0xf5,0x8d,0xe5,0x52,0xf9,0xc1,0x23,0x47,0x41,0x99,0xbf,0x30,
- 0xd2,0x19,0x03,0x29,0xa0,0x81,0x4f,0xa1,0xb1,0x40,0x40,0xbb,0x4f,0x3f,0xf3,0x2c,
- 0x00,0xd4,0x53,0x65,0x45,0x75,0x70,0x68,0x44,0x54,0x74,0x02,0xf8,0x33,0x2d,0x23,
- 0x0b,0x2a,0x63,0x46,0x16,0x78,0x55,0x44,0x7c,0x2b,0x22,0x00,0x86,0x0b,0x33,0xb2,
- 0x72,0x1a,0x9b,0xda,0x5c,0xdd,0x3c,0x28,0x7f,0x86,0x27,0x01,0x4e,0x28,0x95,0xcb,
- 0xef,0x82,0xdb,0x09,0xc1,0x06,0x28,0x0d,0xdb,0x5e,0x7a,0x59,0x55,0x59,0x15,0x97,
- 0x98,0x1a,0x1a,0x11,0x0b,0xee,0x4d,0x4a,0xcd,0x04,0x9e,0x00,0xc0,0x9f,0xb8,0x97,
- 0xf1,0x30,0x01,0x73,0x97,0x28,0x23,0xa4,0x2d,0x0b,0x9c,0x56,0x39,0xdc,0x12,0xaa,
- 0x33,0x0f,0xa1,0x3c,0x45,0x39,0x79,0x92,0xc6,0xe6,0x96,0x5d,0x7b,0xde,0xa2,0x61,
- 0x7a,0x9a,0xda,0xce,0x86,0x0c,0xbd,0x01,0xb9,0x41,0x7c,0xc2,0x5a,0xf4,0x2c,0xa7,
- 0xbc,0x95,0x99,0xd6,0x56,0x43,0xb8,0x9f,0x7e,0xf6,0xd4,0x99,0xb3,0x95,0xd5,0x75,
- 0xa1,0x11,0xd1,0x91,0xd1,0x89,0x89,0xc9,0xe9,0x69,0x19,0x98,0x30,0xc4,0x28,0x11,
- 0x5f,0x0d,0xd0,0x2a,0x4b,0x90,0xd3,0xd0,0xd4,0xec,0xe3,0xe7,0xff,0x24,0x1b,0x1a,
- 0x73,0xaa,0xf0,0xdc,0x48,0x7d,0x05,0x34,0x2f,0x6e,0xd9,0xaa,0xaa,0xac,0x89,0x4f,
- 0x48,0x85,0x0b,0xc2,0xb8,0x84,0xe4,0x94,0x34,0xc8,0x46,0x01,0x44,0xc7,0xd2,0x4c,
- 0xc6,0xea,0x92,0xd2,0xf2,0xe2,0x92,0xb2,0x17,0x36,0x6f,0x7d,0xfa,0x19,0x26,0xca,
- 0xa4,0x65,0x58,0xd1,0x2e,0x30,0x4f,0xcf,0xc8,0x10,0xe5,0x15,0x84,0x86,0xc5,0xc4,
- 0xc6,0x27,0x25,0xa5,0x30,0x0c,0x81,0x15,0x41,0x04,0x9c,0xeb,0xf8,0x8e,0xa5,0xe1,
- 0xe0,0x5b,0x64,0x39,0x6b,0x1b,0x05,0xdc,0x1d,0xcd,0x2d,0x2d,0x3b,0x76,0xed,0xe2,
- 0x25,0x1b,0xbb,0x35,0x48,0x3e,0x3c,0xbf,0xf1,0x05,0xb8,0xbe,0x85,0xab,0xe8,0x30,
- 0xf8,0xf8,0x48,0x48,0x4a,0x4c,0xc9,0x82,0x0b,0x48,0x2e,0x82,0x34,0xdf,0x6c,0x22,
- 0xcb,0x09,0x12,0xf2,0x68,0xac,0x93,0x01,0x44,0xd3,0x41,0x62,0x51,0x0e,0x6c,0xe1,
- 0xa4,0x94,0x8c,0x04,0xf8,0x2f,0x4b,0x00,0xa7,0xec,0xe2,0xd2,0xf2,0xc3,0x64,0x8f,
- 0xd0,0x10,0xac,0x15,0x59,0x36,0xf4,0x1b,0xf8,0x5d,0x2e,0x73,0xec,0x12,0x63,0x9e,
- 0x3f,0xb5,0x9e,0x1d,0x7c,0x16,0x12,0x63,0xd3,0x9e,0xf3,0x2f,0xdd,0x98,0x7c,0x2d,
- 0x54,0xff,0x6a,0xe8,0x1c,0x69,0xb5,0xaf,0x84,0xe8,0x5e,0xb9,0x39,0xf5,0xb3,0xe7,
- 0x8e,0x40,0x49,0xfd,0xc1,0x2f,0x37,0xbe,0x1c,0x34,0xf6,0x5a,0x18,0xde,0xa0,0xbb,
- 0xc1,0xb1,0xf2,0x41,0x52,0x7f,0x1f,0xda,0x7a,0x9e,0x9c,0xe6,0x90,0x12,0x90,0x57,
- 0x6e,0xcd,0x3e,0xbc,0xcd,0x11,0xeb,0xef,0x3f,0xff,0x64,0xd3,0xb5,0x7a,0x60,0xf2,
- 0xdc,0xd5,0xda,0xaf,0x7e,0xed,0x9b,0x5f,0xf9,0xda,0xb7,0x9f,0x38,0x9a,0x02,0x0c,
- 0x09,0x4f,0x3d,0x50,0xbe,0x4a,0xf8,0xbf,0x86,0xdd,0xb9,0x57,0x42,0x61,0x04,0xbb,
- 0x2f,0xdd,0xd2,0xbf,0x16,0x0a,0x53,0xda,0xd7,0xb1,0xab,0x7f,0x39,0x04,0x08,0xe6,
- 0x5f,0x0d,0xd5,0x11,0x11,0x73,0x2f,0x07,0x6b,0x51,0x3a,0x10,0x84,0xe8,0x70,0x30,
- 0x14,0x2b,0xda,0x2b,0x21,0xda,0x57,0x81,0x5b,0x08,0x10,0x23,0x93,0x97,0x6e,0x51,
- 0x62,0x04,0xc0,0x29,0x2b,0x1c,0x04,0xd1,0xc8,0x53,0xf7,0x72,0x08,0xc1,0x43,0x75,
- 0x68,0x5a,0x28,0x43,0xf6,0x1a,0x22,0x7a,0xb2,0x4a,0x4f,0x96,0xcc,0xbd,0x8a,0x6a,
- 0x00,0x4f,0xdd,0xcb,0xb7,0xf4,0x94,0xe6,0xa5,0x60,0x0d,0x08,0x02,0x71,0xa0,0x24,
- 0x99,0x05,0x04,0xb9,0x11,0x1c,0x67,0x5f,0x0b,0x9b,0x67,0x4d,0xd3,0x51,0xfe,0x50,
- 0x6d,0x01,0x5e,0x0f,0xd7,0xbe,0x11,0xae,0xdd,0x15,0xa9,0x7f,0x3b,0x66,0x6e,0x5f,
- 0xac,0xfe,0x5d,0x72,0xda,0x05,0x38,0x9a,0x6a,0x38,0xce,0x7d,0xdb,0x9c,0x6b,0xb8,
- 0x96,0x6f,0x70,0x2f,0x5e,0xf0,0x2b,0x5f,0xf4,0x97,0x2e,0x06,0xca,0x97,0x82,0x64,
- 0x8b,0xc1,0xb2,0x45,0xbf,0x62,0xad,0x4f,0xfe,0x8c,0xb0,0x4e,0xb7,0xb8,0xf6,0xef,
- 0xf8,0xfe,0xf7,0xc3,0xe2,0xf2,0xd2,0xad,0xb0,0xc8,0x37,0xde,0xdc,0x75,0xf0,0xd0,
- 0xd1,0x8b,0x97,0xaf,0xfa,0x06,0xdc,0x84,0xa3,0x53,0x5e,0x7e,0xa1,0x52,0x55,0xdb,
- 0xd4,0xda,0x01,0x57,0xf8,0x63,0xe3,0xf8,0x77,0xe0,0x99,0x59,0x3c,0x02,0xcf,0xcd,
- 0xd3,0x3f,0xc5,0xce,0xc1,0x29,0x18,0x46,0xc7,0x27,0x67,0x86,0x46,0x26,0x7a,0x07,
- 0xd4,0x1d,0x5d,0xfd,0x0d,0x4d,0x6d,0x55,0x35,0x0d,0x50,0x85,0xf3,0x0b,0xcb,0x72,
- 0x72,0xf3,0xd3,0x32,0x84,0xb1,0xf1,0x29,0x61,0xe1,0xb1,0x01,0x70,0x42,0xf4,0x0d,
- 0x70,0xbc,0xee,0xe9,0xe0,0xe4,0x7c,0xf6,0xbc,0xc3,0xa9,0x33,0xe7,0x3e,0xfc,0xf0,
- 0xd4,0xc1,0xc3,0xc7,0x0f,0x1c,0x3c,0xb2,0xff,0xbd,0x43,0xef,0xee,0x3f,0x20,0xc8,
- 0xc9,0x2d,0x29,0x95,0xc7,0x25,0xa4,0x81,0x5c,0xb2,0xb9,0x32,0x68,0x9b,0x98,0x0c,
- 0x6d,0x1a,0x8c,0xc3,0xc7,0x20,0x00,0xa9,0x26,0x42,0x28,0x58,0x7b,0xdf,0x7e,0x77,
- 0xf3,0x96,0x6d,0x5b,0xb6,0x6e,0x7f,0x71,0xf3,0xb6,0x17,0xb7,0xbc,0xbc,0x65,0x1b,
- 0x20,0x5b,0x36,0x6f,0xd9,0xba,0x75,0xdb,0x76,0x38,0x4d,0x03,0x0e,0x87,0x23,0xe8,
- 0x6e,0xde,0xba,0xed,0xcc,0xb9,0x4b,0xcd,0x2d,0xed,0x91,0x31,0x89,0x51,0x31,0x09,
- 0x70,0xee,0x88,0x4b,0x48,0x85,0xcf,0xbd,0xf8,0xc4,0x54,0xd8,0xbf,0x71,0x09,0x29,
- 0xa4,0x4d,0x25,0x22,0x52,0x80,0x3f,0x7c,0xea,0xde,0xbc,0x15,0xb2,0x6d,0xfb,0x2b,
- 0xc0,0x67,0xf3,0x96,0xed,0x94,0x0f,0x91,0x82,0xac,0x36,0x6f,0xdd,0xbe,0x75,0xfb,
- 0x4b,0xf0,0x11,0xba,0x99,0xc0,0x0b,0x38,0xf8,0xf2,0xbe,0xb7,0xdf,0x49,0x49,0x4b,
- 0x6f,0xeb,0xe8,0x2a,0x29,0x91,0x46,0x46,0xc7,0x85,0x45,0xc6,0x12,0x41,0xc9,0xc0,
- 0x16,0x3e,0x5d,0xe1,0x93,0x10,0xae,0x64,0xc4,0xf9,0x25,0x85,0x25,0x72,0x38,0xe0,
- 0x28,0x94,0x55,0x70,0xfc,0x51,0x55,0x37,0x00,0x54,0xd5,0xd4,0x57,0x54,0xd5,0xc1,
- 0x79,0x5e,0x2a,0x57,0x16,0x95,0xca,0x24,0x05,0x65,0x42,0x51,0x01,0xf9,0x6c,0x17,
- 0x94,0x4b,0x95,0x5d,0xdd,0xbd,0xa9,0x19,0x59,0xc0,0x7c,0x33,0x31,0x04,0x64,0x6d,
- 0x41,0x95,0xb6,0xd2,0x2e,0x00,0x98,0xc9,0x74,0xb7,0x6e,0xdf,0x0c,0x26,0x53,0x6f,
- 0x6c,0xd9,0x06,0x3a,0x3b,0x5d,0xbd,0x56,0x53,0x5b,0x1f,0x19,0x95,0xc0,0x9a,0x8c,
- 0x36,0x82,0x63,0xe3,0x13,0xd3,0x09,0x6e,0x01,0x55,0x35,0x75,0xc1,0xa1,0x21,0x60,
- 0x20,0xac,0x05,0x93,0x29,0x5b,0xca,0x6a,0xcb,0xb6,0x97,0x88,0x57,0xb7,0x93,0x91,
- 0x6d,0xc4,0xa5,0x8c,0x9f,0x01,0x27,0xf4,0x5b,0xdf,0x78,0x73,0xa7,0x42,0x55,0x09,
- 0x1f,0x89,0x70,0xf0,0x27,0xb2,0x92,0x59,0x71,0x76,0x64,0x7d,0x5e,0x00,0x8e,0x85,
- 0xfa,0x7b,0xec,0xf8,0xc9,0x17,0x36,0x6f,0x79,0x71,0xeb,0x76,0x6b,0x6f,0xb0,0x01,
- 0xe2,0x3b,0x6a,0x0b,0x8e,0x53,0xd7,0xd1,0xb0,0x6e,0x27,0xb0,0xcd,0xaa,0x0b,0xf8,
- 0x8b,0x5b,0xb6,0x7f,0x7c,0xfe,0x7c,0x5d,0x43,0x73,0x4c,0x5c,0x52,0x44,0x54,0x42,
- 0x6c,0x7c,0x32,0x20,0x60,0x0e,0xb1,0x28,0x99,0x1a,0x08,0xce,0x24,0xc9,0x93,0x06,
- 0x50,0x59,0x5d,0x1d,0x16,0x11,0x4d,0xa2,0xb3,0x8d,0xf2,0xa1,0x4e,0xa3,0x72,0x31,
- 0x70,0xc4,0x99,0x9b,0xb1,0xdd,0xfe,0xda,0xeb,0x6f,0x56,0x54,0x55,0x67,0x64,0xe6,
- 0x44,0x46,0x27,0xc0,0x35,0x1b,0xec,0x0e,0x5b,0x47,0x91,0x9c,0x4c,0x06,0xce,0xb0,
- 0x29,0x54,0xaa,0x8a,0x37,0x77,0xbc,0x45,0xd7,0x6e,0xa1,0xa6,0x21,0xdb,0xed,0x4c,
- 0x50,0xb6,0x61,0xe8,0x53,0xd3,0xd2,0xe1,0x84,0x0e,0xe7,0x5f,0x08,0x37,0xcf,0xff,
- 0x69,0xac,0xce,0xd6,0xde,0xa3,0x99,0x7f,0xe7,0x40,0x58,0x81,0xa5,0x19,0xcd,0x6d,
- 0xad,0x87,0x8e,0x1c,0x25,0xe6,0x6c,0xc5,0x8d,0x00,0xbe,0x62,0x93,0x01,0x60,0xeb,
- 0xf6,0x57,0x84,0xb9,0x79,0xb9,0x92,0x42,0x30,0x2d,0x3a,0x06,0xac,0x4b,0x61,0x1d,
- 0x95,0xfa,0x19,0xc3,0x0d,0xd7,0x75,0xac,0x21,0xc0,0x0d,0x9c,0x96,0x90,0x91,0x95,
- 0xad,0x54,0x55,0x76,0x74,0xf5,0xc0,0x66,0xd9,0xb5,0x67,0x1f,0xb8,0x17,0xfc,0x8c,
- 0xdf,0xa7,0x81,0x42,0xdb,0x5e,0x62,0x76,0x0a,0x8d,0xac,0x55,0x77,0xab,0x45,0x8c,
- 0xcc,0x79,0xc2,0xee,0x23,0xbb,0xc4,0x34,0xcd,0x5e,0xde,0xf1,0xce,0x9b,0xde,0x75,
- 0xbb,0xa2,0xe6,0xde,0x8e,0xd1,0xec,0x89,0xd2,0xef,0x8d,0xd6,0xed,0x8c,0x98,0x7b,
- 0x2b,0x7a,0x6e,0x4f,0x94,0xf6,0x2f,0x1f,0xa6,0xe0,0xfb,0x25,0xff,0xf1,0x87,0xcf,
- 0x3b,0x94,0xed,0x8e,0xd2,0xee,0x89,0xd2,0xbd,0x78,0xad,0xfa,0x1f,0xbf,0xf7,0x33,
- 0x18,0xfc,0xc5,0xe6,0x33,0xaf,0x05,0x0d,0xbe,0x41,0xe0,0x25,0xdf,0xbe,0xf5,0xe7,
- 0xf3,0x7f,0xf8,0xf0,0x53,0x30,0xfe,0x4f,0x3f,0xfd,0xfd,0xab,0x81,0xc3,0xbb,0xc2,
- 0xa6,0xfe,0xfb,0x4d,0x37,0xfc,0x9a,0xfa,0x47,0x8f,0xbc,0xe4,0xdb,0x05,0x0b,0x81,
- 0x33,0x30,0xdc,0x19,0xc9,0x70,0xde,0x1b,0xad,0xd9,0x1d,0xa5,0xdf,0x17,0xa3,0x27,
- 0x53,0x9a,0xbd,0x31,0x73,0xbb,0xa3,0xe6,0x76,0xe1,0xac,0x6e,0x4f,0x34,0xde,0x8f,
- 0xb4,0x37,0x5a,0x0b,0x23,0x7b,0x63,0xb0,0xbb,0x2f,0x46,0x0b,0x2a,0xed,0x8e,0xd4,
- 0xed,0x8b,0x86,0x72,0x86,0xcb,0x61,0x2d,0xd4,0x35,0xd0,0x79,0x6f,0x94,0x66,0x27,
- 0x8e,0xe8,0x28,0x67,0x50,0x12,0x06,0x41,0xd6,0xce,0x48,0x3d,0x1d,0xdc,0x8d,0x42,
- 0xe7,0x61,0xed,0x2e,0xe4,0x4f,0x5b,0x3d,0x2c,0xdf,0x1d,0xa9,0x45,0xfa,0x48,0x2d,
- 0x35,0x96,0x2c,0xd7,0x33,0xc4,0x51,0x38,0x45,0xc8,0x70,0x76,0x0f,0x3a,0x44,0xc7,
- 0x10,0x47,0xce,0xef,0x88,0x00,0x26,0xc0,0x59,0xb7,0x23,0x12,0x7f,0x2e,0x04,0x83,
- 0xd0,0xdd,0xcd,0xca,0x02,0xf5,0xde,0x8e,0xd1,0xbd,0x13,0xab,0x47,0x88,0x9b,0x07,
- 0x78,0x3f,0x61,0x0e,0x8e,0xba,0x00,0x47,0x52,0x0c,0x27,0x33,0x0c,0x67,0x05,0x08,
- 0x17,0x45,0x06,0xa7,0x7c,0xc3,0xd5,0x02,0x83,0x07,0x1c,0x78,0xcb,0x97,0x82,0xe5,
- 0x2b,0xb7,0x14,0x2b,0x51,0x15,0x0b,0x91,0xaa,0xc5,0x70,0xd5,0xd2,0x4d,0xe9,0x42,
- 0x40,0xa9,0xe6,0x66,0xf1,0xb4,0x7a,0xf6,0x1e,0x78,0xe0,0xe4,0xed,0x61,0x40,0xad,
- 0x86,0xa3,0xd6,0x8e,0x5d,0x6f,0x9d,0x38,0xf9,0xa1,0xd3,0x35,0xf7,0x9b,0x21,0xe1,
- 0xe9,0x99,0xc2,0xfc,0xc2,0x72,0xb8,0xc2,0x6c,0x6d,0xef,0xee,0x1f,0x1c,0x19,0x1d,
- 0x9f,0x9e,0x9e,0xd1,0xc2,0xc9,0x17,0x4e,0xc1,0xf3,0x06,0x03,0x85,0x59,0x8d,0x06,
- 0xea,0x32,0x54,0x61,0x98,0x1d,0x50,0x8f,0xf4,0xf4,0xa9,0xdb,0x3a,0x7a,0x1a,0x9a,
- 0x5a,0xab,0x6a,0x6a,0xcb,0xa4,0xaa,0xfc,0xc2,0x52,0x61,0xae,0x24,0x35,0x5d,0x08,
- 0x1b,0x07,0x2e,0xf8,0x6f,0x04,0x87,0xf9,0x07,0x04,0xbb,0x7b,0xfa,0x5e,0x73,0x71,
- 0xbf,0x7c,0xc5,0xf9,0xfc,0xc5,0xcb,0xa7,0x3e,0x3e,0xff,0xd1,0xa9,0x73,0x27,0x3f,
- 0x38,0x05,0x45,0xaa,0xba,0xb6,0x1e,0x5a,0x72,0x1a,0x85,0x2b,0x5e,0xe6,0xd2,0x17,
- 0xea,0x17,0x5c,0xf4,0x42,0xcd,0x4d,0xcf,0xcc,0x49,0xcb,0xc8,0x81,0x56,0x90,0x23,
- 0xea,0xeb,0xef,0xff,0xe8,0xf4,0x99,0x5d,0xbb,0xf7,0x12,0x78,0xeb,0xf5,0x9d,0xef,
- 0xec,0xd8,0xb5,0x77,0xc7,0xce,0xb7,0x76,0x42,0x77,0xcf,0x5e,0xc4,0x77,0xbd,0x05,
- 0x2d,0xcc,0xbe,0xb9,0x6b,0xf7,0xb9,0x0b,0x0e,0x9d,0xdd,0x3d,0xc0,0x36,0x2d,0x5d,
- 0x98,0x8a,0x90,0x0d,0x97,0xe5,0x04,0x84,0x14,0x81,0x2d,0x0c,0x38,0x5c,0x57,0xc3,
- 0xb9,0xb8,0xb2,0xba,0x3e,0x31,0x29,0x69,0xcf,0x9e,0xb7,0xe9,0x72,0xe4,0xb3,0x13,
- 0x91,0x9d,0xbb,0x10,0x90,0x21,0x48,0xd9,0xb5,0x77,0x37,0x8e,0xec,0x01,0x71,0x30,
- 0xbb,0x73,0xe7,0xde,0x7d,0xef,0x1c,0x70,0xf3,0xf4,0x92,0x2b,0x2b,0xdb,0xda,0x3b,
- 0x8b,0x8a,0xcb,0x81,0x27,0x7c,0x78,0x26,0x26,0x67,0x26,0xa7,0x66,0x90,0x03,0x8e,
- 0x30,0x23,0x3b,0x37,0x3b,0x27,0x0f,0x4e,0x6d,0x70,0xb6,0xcd,0x93,0x14,0x4b,0x0a,
- 0x8b,0x25,0x05,0xa5,0x80,0x50,0xc8,0xc9,0x2b,0x10,0x88,0xf0,0x8c,0x0f,0xc7,0x87,
- 0xb2,0x72,0x79,0x67,0x57,0x0f,0xb8,0xc2,0xc5,0xdd,0xe3,0x9d,0xfd,0x07,0x76,0x11,
- 0x11,0xd4,0xb4,0x9d,0x68,0xd7,0x5e,0x46,0x28,0x51,0x8c,0xe2,0xbb,0x98,0x11,0x6a,
- 0x38,0x12,0x3b,0x5f,0x77,0x6d,0x6a,0xe9,0x64,0x2c,0x4d,0x07,0x33,0xb3,0x08,0x64,
- 0x83,0x26,0x9c,0xd5,0xd0,0x25,0x04,0xc2,0x9a,0xba,0xfa,0xc4,0xe4,0x54,0x8e,0x03,
- 0x0a,0xda,0xfd,0x16,0xc7,0x16,0xdc,0xbb,0x73,0x27,0x63,0x3e,0x43,0xb0,0x0b,0x95,
- 0x21,0x08,0x78,0x63,0xcf,0xbb,0xef,0xbd,0xaf,0xac,0xa8,0x10,0x4b,0x8a,0x88,0x6f,
- 0xb3,0xd8,0x48,0x09,0x52,0xd3,0x51,0x04,0x15,0x44,0x25,0x82,0x38,0x0a,0x44,0x07,
- 0x0b,0xe0,0x05,0x25,0x9b,0x84,0x43,0xc0,0x52,0x0a,0x2c,0x81,0xae,0x85,0xa3,0x53,
- 0x6e,0x47,0x57,0xf7,0x45,0x87,0x2b,0xa0,0xde,0x9b,0x3b,0x31,0x4c,0x3b,0xa9,0xc2,
- 0x8c,0x9e,0x6f,0xe1,0xc8,0x2e,0xd6,0x33,0x3c,0x8b,0x30,0x94,0x38,0xc2,0xcc,0xd2,
- 0x25,0x94,0x78,0x27,0xd3,0x45,0xfc,0xfc,0x25,0x87,0xe6,0xd6,0x36,0x38,0x73,0x81,
- 0x45,0xc4,0x10,0x21,0x5f,0x0d,0x9e,0x6e,0xa8,0x7c,0x45,0x55,0x6d,0x7a,0x66,0xd6,
- 0x9e,0xbd,0xfb,0xa8,0x0f,0x49,0xa4,0x18,0x86,0xc0,0x8d,0x26,0x24,0xe3,0x3d,0x48,
- 0x95,0xb7,0xf7,0xc3,0x75,0x57,0x41,0x51,0x31,0xe1,0x8c,0x7c,0xc0,0x5d,0x90,0x7b,
- 0x10,0x20,0xea,0x3d,0xc2,0x9f,0xb6,0x39,0xb9,0xe2,0xc2,0x86,0xc6,0xa6,0x43,0x87,
- 0x8e,0xef,0x60,0xb5,0x7d,0x73,0xe7,0x2e,0xea,0x7c,0x36,0x3a,0xc8,0x36,0x23,0x33,
- 0x4b,0x51,0x51,0xc9,0x31,0x64,0x15,0xcb,0xa6,0x4c,0x78,0x51,0xa0,0x99,0xc0,0x84,
- 0x89,0x06,0x82,0x5d,0x92,0x6d,0x69,0x1a,0xd7,0x65,0x32,0x87,0x76,0xdb,0x3a,0x3a,
- 0xce,0x5f,0x74,0xc0,0x84,0x04,0x7f,0x62,0xfe,0xa3,0x9f,0xd9,0x6d,0x88,0x5e,0xcd,
- 0x15,0xe7,0xcb,0x14,0x15,0xa9,0xe9,0x99,0x5c,0x32,0xc0,0x9e,0x65,0x53,0x42,0xc8,
- 0x72,0x36,0x8b,0xe6,0x38,0xb3,0x99,0x90,0x6d,0x19,0x77,0x73,0x02,0x40,0xea,0xc2,
- 0xd5,0x88,0x28,0xaf,0xb0,0xb4,0x5c,0xd1,0xd4,0xdc,0xd2,0xda,0xd6,0x55,0x58,0x54,
- 0xe2,0xe0,0x74,0x6d,0xdf,0x3b,0xfb,0x77,0xd2,0x10,0xef,0x62,0x74,0xa0,0x59,0xca,
- 0x86,0xfe,0xad,0x1d,0xdc,0xbe,0xc0,0xc1,0xb7,0x76,0xb0,0x1b,0x99,0x06,0x9a,0x64,
- 0xce,0x5b,0x5c,0x6e,0xb3,0xf9,0x4f,0x70,0x20,0x26,0xc8,0x9b,0x64,0xbb,0xbd,0xbe,
- 0x7b,0xdf,0x3e,0x67,0xe1,0xfe,0xd8,0x59,0x38,0x97,0x1d,0x48,0x84,0x03,0xda,0xfc,
- 0x81,0xa4,0xb9,0xf7,0x12,0xb0,0x6a,0xbc,0x13,0x37,0xf7,0x76,0x98,0xfa,0xdb,0x3f,
- 0x7a,0x6c,0xdd,0x7d,0x0f,0x3c,0xb2,0xfe,0xed,0x7d,0x11,0x63,0x40,0xf3,0x8a,0x7b,
- 0xd5,0x3f,0x7e,0x1f,0xcf,0xbf,0xdf,0xf8,0xf6,0x0f,0xbe,0xfb,0x6f,0xbf,0xf9,0xce,
- 0xbf,0xff,0xee,0x5f,0xfe,0xf3,0x77,0xdf,0xfd,0xd1,0x23,0x5f,0x7f,0xf0,0xbb,0xf7,
- 0xdf,0xf7,0xc0,0x37,0x1f,0xfc,0xa7,0x27,0x76,0xbb,0xbc,0x1f,0xaf,0x7b,0xd5,0x4d,
- 0xf5,0xcf,0x3f,0xfd,0x0d,0x8c,0xfc,0x7a,0xeb,0xa9,0xf7,0xe3,0xb5,0x07,0x08,0x73,
- 0x7a,0x8b,0x2f,0x70,0x7e,0x3f,0x11,0x60,0xde,0x8c,0x80,0x50,0xec,0xea,0x0f,0x24,
- 0xe8,0xdf,0x43,0x5c,0x8f,0x78,0xa2,0x0e,0xd4,0x38,0x80,0x5d,0xdd,0xfb,0x09,0x86,
- 0xf7,0x12,0x98,0x3b,0x84,0xa1,0x3d,0x40,0x5a,0xa0,0xa1,0x6b,0x09,0x4f,0x3d,0xea,
- 0x9c,0x48,0xe9,0x81,0x15,0xe2,0xef,0x31,0xb3,0x88,0x98,0xf1,0x04,0x82,0x27,0x30,
- 0x38,0x19,0x24,0x6b,0x51,0x22,0x8f,0x55,0xc2,0xdc,0x7b,0x3c,0x1a,0x22,0xce,0xb0,
- 0x9f,0x08,0xdd,0x9f,0x40,0x8f,0xb1,0xcc,0xf8,0xfe,0x78,0xb3,0x56,0x07,0x12,0xe7,
- 0x80,0xc9,0xc1,0x24,0x03,0x00,0x1c,0x72,0x01,0xa0,0xe0,0xc2,0x39,0xf7,0x83,0x0c,
- 0xe6,0x7b,0x66,0x87,0x3c,0xc3,0x55,0xb1,0xc1,0xa5,0x68,0xc1,0xb5,0x78,0xc1,0xbf,
- 0x6c,0x31,0x50,0xb6,0x14,0xa2,0x5c,0x09,0xab,0x58,0x89,0xa9,0x36,0xc6,0xd5,0x1a,
- 0x63,0xaa,0x57,0xe3,0x6a,0xa0,0x0a,0x2f,0xdd,0x92,0xcf,0x07,0x14,0x4d,0x49,0x5a,
- 0xe7,0x57,0xef,0x9d,0xdf,0x1c,0xad,0x05,0x46,0x93,0x31,0x3d,0x23,0xeb,0xf5,0x37,
- 0xf1,0xe9,0x88,0xa7,0xcf,0x5c,0x74,0xf3,0x0a,0x0c,0x8f,0x8e,0xcb,0x12,0xe4,0x96,
- 0x4a,0x95,0xe4,0xa6,0x9a,0x9e,0x01,0xf5,0xe8,0xc4,0xd4,0x0c,0x54,0xdb,0x59,0x8d,
- 0x9e,0xab,0xbf,0x00,0xf4,0x20,0x4c,0x9f,0x91,0x45,0xbe,0x56,0x1d,0x6a,0xef,0xec,
- 0x6b,0x6e,0xed,0xac,0xa9,0x6b,0xae,0xa8,0xac,0x92,0xca,0x54,0x92,0x82,0x12,0xa1,
- 0x28,0x3f,0x3d,0x53,0x04,0xd7,0xb1,0x70,0x89,0x1e,0x1a,0x1e,0x1d,0x10,0x1c,0xea,
- 0xeb,0x8f,0x85,0xd8,0xc5,0xcd,0xd3,0xe9,0x9a,0xdb,0x15,0x27,0x17,0xa8,0xb3,0xe3,
- 0x93,0x93,0x83,0xea,0xa1,0xfe,0x81,0x91,0x01,0x35,0xbd,0x4b,0x64,0xa0,0xb7,0x7f,
- 0xa0,0xbb,0x6f,0xa0,0x7f,0xb0,0xbf,0xb7,0x7f,0xb0,0xa7,0xaf,0xaf,0xa7,0x77,0x10,
- 0x90,0xbe,0x01,0x38,0x8c,0x4f,0x5e,0x76,0x70,0x3c,0x7c,0xe4,0xd8,0x91,0xa3,0x27,
- 0x8f,0x1c,0x3d,0x71,0xe4,0xc8,0xf1,0x43,0x47,0x8e,0x1d,0x3a,0x72,0xf2,0x30,0x81,
- 0x83,0x87,0x11,0x28,0x7e,0xe8,0xe8,0xc9,0x0b,0x0e,0xce,0xa3,0x63,0x63,0x7d,0xfd,
- 0x7d,0x7d,0xfd,0x83,0xdd,0xbd,0xfd,0x7d,0x84,0x15,0xc3,0x90,0x45,0x7a,0xfb,0x60,
- 0x0a,0xf1,0x91,0xb1,0x89,0xd4,0xf4,0x8c,0x23,0x47,0x8f,0xe3,0xf2,0xa3,0xc8,0x07,
- 0xd8,0x1e,0x3a,0x7c,0xec,0x30,0xc7,0xfc,0xd0,0x11,0x22,0x14,0x06,0x8f,0x73,0x53,
- 0x07,0x0f,0x1d,0x07,0x1d,0xce,0x9c,0xbd,0x9c,0x90,0x94,0xdc,0xdc,0xd2,0x32,0x30,
- 0x38,0x52,0x59,0x5d,0x2b,0xce,0x2f,0x86,0x0f,0x0d,0x80,0x4c,0x01,0x16,0x5f,0x38,
- 0xdb,0x66,0x09,0x73,0xb3,0x45,0x50,0x85,0xf3,0x73,0xf2,0x0a,0x73,0xc5,0xc5,0x70,
- 0x65,0x22,0x10,0x89,0x01,0xb2,0x84,0x79,0x50,0x85,0xab,0x6b,0xeb,0xfa,0x07,0x07,
- 0x3b,0x3a,0xbb,0x12,0x93,0xd2,0x2e,0x5c,0x74,0x44,0xe9,0xd4,0x84,0xc3,0x27,0x40,
- 0x16,0xb5,0x88,0xd1,0x07,0xc7,0x61,0xe4,0x38,0xea,0xc0,0xce,0x82,0x26,0x9c,0xe1,
- 0x2e,0x2e,0x6e,0x3d,0x7d,0xfd,0xc4,0xba,0x7e,0x72,0xef,0xca,0x40,0x5f,0xbf,0x9a,
- 0x58,0xda,0x4f,0xad,0x66,0x0d,0xc7,0x2e,0x38,0x27,0x33,0x5b,0x40,0xac,0x3b,0x01,
- 0x86,0x50,0xfe,0x87,0x18,0xe6,0xe0,0x87,0xe3,0x38,0x8e,0x6c,0x4f,0x10,0xa1,0x27,
- 0x39,0x4d,0x50,0xb7,0x23,0xc7,0x4e,0x7c,0x78,0xa6,0x5c,0xae,0xc4,0x4b,0xaf,0x5e,
- 0xc6,0xb1,0x0c,0xe7,0xde,0x41,0x4b,0x59,0xe0,0xe4,0x81,0x5e,0x94,0x68,0xa1,0x86,
- 0x99,0x86,0x99,0xed,0xeb,0xe3,0x85,0x06,0xf4,0xe7,0xa9,0x8a,0x69,0x40,0x68,0xfa,
- 0x21,0x29,0xd4,0xc3,0x23,0x2e,0xae,0xee,0x54,0x37,0x50,0x1b,0x10,0x9e,0xce,0x5c,
- 0x0e,0xa0,0xce,0xac,0xc7,0xd0,0x45,0x00,0x18,0xbb,0x23,0x27,0x69,0x7b,0x88,0xa5,
- 0xe4,0xec,0x3a,0x70,0x08,0xdc,0x78,0xe2,0xb2,0xa3,0x53,0x1f,0xba,0x4e,0xdd,0xd3,
- 0xdb,0xd3,0xdd,0x63,0x61,0x45,0x0f,0x63,0x02,0xf1,0xed,0x00,0xa8,0xd4,0x3f,0x3c,
- 0x32,0x2e,0xc8,0xc9,0x39,0x7a,0xec,0x03,0x2a,0x91,0x1f,0x14,0x0a,0x6c,0x9e,0x80,
- 0xf4,0x13,0x90,0xae,0x0a,0x55,0x85,0x7a,0x68,0xb4,0xa7,0xaf,0xb7,0xa7,0x77,0x80,
- 0x58,0x04,0x86,0x0f,0xd1,0xf4,0xa6,0x6c,0x41,0x22,0xe4,0x7c,0x77,0x4f,0x7f,0xff,
- 0xe0,0x30,0x54,0x9a,0x8f,0xcf,0x5e,0x00,0x3f,0x1f,0x3e,0x42,0x93,0x90,0x4b,0x06,
- 0xb3,0x20,0x38,0xcf,0xaa,0x87,0x60,0xcb,0xf4,0xf7,0xf6,0xa9,0xf1,0xae,0xc5,0xde,
- 0x1e,0x1a,0x6e,0xf4,0x1e,0x2f,0x0a,0x2c,0x0c,0x90,0xbb,0x98,0xcc,0xbb,0xc0,0xa2,
- 0x65,0xa3,0xc0,0xee,0xb8,0x81,0x5e,0x42,0x4c,0xa1,0x7f,0x60,0xe0,0xba,0x8b,0xfb,
- 0x61,0x1b,0xa7,0xb1,0x1e,0x3e,0x26,0x10,0x8a,0x46,0xc6,0xc6,0x30,0x52,0x7d,0xe6,
- 0x6d,0xc5,0x77,0x1d,0xb7,0xef,0xac,0x92,0xd0,0xaa,0xcb,0x53,0x89,0xa6,0x44,0x2f,
- 0x86,0x63,0x60,0x00,0x2e,0xba,0x2a,0xab,0x6a,0x93,0x53,0xd2,0xdc,0x3c,0x7c,0x3e,
- 0xf8,0xf0,0xf4,0x21,0x46,0x01,0xd8,0xfb,0xf8,0x21,0x60,0xf6,0x36,0x93,0xc0,0x27,
- 0x6c,0xe3,0xcb,0xb9,0x0e,0xa2,0x4c,0xf3,0x99,0xd9,0x56,0x87,0x8f,0x1d,0x80,0x1d,
- 0x74,0xe4,0x24,0x03,0x87,0x4f,0x1c,0x3c,0x72,0xfc,0xc0,0xe1,0x23,0x07,0x0e,0x1f,
- 0x3d,0x48,0xf2,0xfc,0xd0,0x59,0xf7,0x63,0x49,0x63,0xc7,0xd3,0xf0,0x1b,0xd1,0x13,
- 0x14,0x32,0xe6,0x68,0x17,0x6a,0x07,0x20,0xff,0xf3,0x96,0xf3,0xba,0x07,0xbe,0xf1,
- 0xb5,0x6f,0x7c,0x7b,0xe3,0x87,0xb1,0xc7,0xd2,0xe7,0x76,0xfb,0xd7,0xfd,0xf0,0xd1,
- 0x67,0xbf,0xf9,0xbd,0x9f,0x3f,0xf8,0xbd,0xff,0xfc,0xd6,0xf7,0xfe,0xe3,0xdb,0xdf,
- 0xfb,0x31,0x41,0xfe,0xfd,0x1f,0x7f,0xf0,0xd0,0xbf,0x3d,0xfa,0xe4,0x73,0x07,0x7d,
- 0xde,0x8b,0x1a,0x3e,0x96,0x30,0xf6,0xcb,0xe7,0xdf,0x5d,0x77,0xff,0x03,0xdf,0xf9,
- 0xc1,0xcf,0x5e,0x75,0x55,0x1c,0x4f,0x9f,0x07,0x56,0x94,0x1b,0xb6,0xe9,0x00,0x73,
- 0x20,0xe8,0x78,0xda,0x1c,0x42,0xfa,0xfc,0x09,0x02,0x47,0xd3,0xf4,0x30,0x7b,0x8c,
- 0x10,0x03,0x25,0xab,0x06,0xd3,0x3d,0x46,0x97,0xa4,0xb3,0x4c,0xd2,0x0c,0x74,0x96,
- 0xea,0x4c,0xba,0x66,0x56,0x88,0x67,0xcc,0x1d,0x63,0xbb,0xb0,0xf6,0x78,0x3a,0x99,
- 0xcd,0x98,0x3f,0x96,0x36,0x4f,0x38,0xcf,0xb1,0x38,0x76,0x8f,0xf1,0xcc,0x67,0x39,
- 0xb3,0xde,0xa0,0x0c,0xd9,0x71,0x18,0x39,0x96,0xca,0x9f,0x65,0xbe,0x4c,0xa6,0x5a,
- 0x51,0x38,0x9d,0x8d,0xd5,0xf6,0x9c,0x10,0xef,0xaa,0xba,0x90,0x63,0x70,0xc8,0x35,
- 0x38,0x88,0x99,0x1b,0xab,0x3c,0x8a,0x16,0xfc,0x4a,0x17,0x03,0x64,0x4b,0xb7,0x54,
- 0x2b,0x00,0x51,0xd5,0xc6,0x98,0x1a,0x53,0x5c,0x9d,0x31,0xbe,0xce,0x98,0xda,0xb8,
- 0x94,0xda,0x64,0x8c,0xab,0x5e,0x89,0x54,0xce,0x05,0x95,0xeb,0xa2,0xe4,0x93,0x63,
- 0xfa,0x4f,0x7e,0x84,0xef,0x3d,0x01,0xf3,0x0b,0x0b,0x91,0x31,0xb1,0xaf,0xbf,0xb9,
- 0xfb,0xc0,0xc1,0xc3,0x50,0x02,0xbc,0x7c,0x82,0xa2,0x62,0x12,0xa1,0x70,0x94,0x41,
- 0x09,0xae,0xc7,0xfb,0x86,0xfb,0x06,0xd4,0x93,0x53,0xcc,0x17,0xd1,0xfc,0x53,0x30,
- 0x94,0x60,0x28,0xca,0x70,0x16,0x86,0xb9,0xb1,0x89,0xe9,0xa1,0x91,0xf1,0xbe,0x81,
- 0x61,0x52,0x85,0xbb,0x1b,0x1a,0x5b,0xaa,0x6b,0x1a,0xa4,0xb2,0x8a,0xe2,0xd2,0x72,
- 0x71,0x7e,0x89,0x20,0x47,0x02,0x97,0xb5,0x70,0x36,0x8c,0x89,0x4b,0x0e,0x8b,0x8c,
- 0x09,0x09,0x8d,0x0c,0xb8,0x11,0xea,0x17,0x18,0x1c,0x78,0x23,0xe4,0x56,0x48,0x74,
- 0x50,0x70,0x58,0x00,0x9c,0x91,0x03,0x6f,0x06,0xdc,0xb8,0xe9,0x1b,0x70,0xd3,0xd7,
- 0xff,0xa6,0xaf,0xdf,0x0d,0x1f,0xbf,0x20,0x0f,0xdf,0x00,0x6f,0xdf,0x40,0x77,0x6f,
- 0x5f,0x0f,0x1f,0x7f,0x68,0x01,0x2e,0x39,0x38,0x02,0x5c,0xb8,0xe8,0x70,0xf1,0xd2,
- 0x95,0x4b,0x97,0x29,0x7e,0xe5,0xe2,0x25,0x47,0x80,0x4b,0x0e,0x57,0xf0,0x2d,0x09,
- 0x97,0xb0,0x7b,0xd9,0xc1,0x09,0xba,0x1e,0xee,0xfe,0x74,0xad,0x17,0x01,0xca,0x04,
- 0x10,0x6f,0x5f,0x7f,0x8e,0x27,0x76,0x01,0xf1,0xf2,0x85,0xeb,0x01,0xe4,0xe9,0xe0,
- 0x04,0xed,0xe5,0x2b,0x0c,0x43,0x22,0x08,0xc5,0x01,0xce,0x75,0x39,0x41,0x97,0x2e,
- 0x5f,0x61,0x95,0x71,0x72,0xbc,0xea,0x12,0x19,0x13,0xaf,0xaa,0xac,0xee,0xc5,0x3b,
- 0x8e,0x47,0xda,0x3b,0x3a,0x6b,0x1b,0xea,0xe5,0xca,0x6a,0xf0,0x61,0x49,0xa9,0xac,
- 0xa8,0x44,0x06,0x6d,0x69,0x99,0xac,0x4c,0xaa,0x50,0x56,0x54,0xd5,0xd4,0xd6,0xb7,
- 0x77,0x74,0x41,0xbd,0x1e,0x1a,0x1e,0x52,0x56,0xd4,0xc6,0x26,0x24,0x5e,0xbd,0xe6,
- 0x02,0x7c,0xcc,0xe2,0x2e,0xa3,0x0e,0x97,0x2e,0x3b,0x71,0x5d,0x2a,0x17,0x46,0xd0,
- 0x6a,0x94,0xcb,0xe8,0x73,0xf9,0xca,0x55,0xaa,0x1e,0xb1,0xfa,0x9a,0x9b,0xa7,0x9f,
- 0x97,0x6f,0x80,0x97,0xb7,0xbf,0x97,0xb7,0x9f,0xa7,0x8f,0x9f,0xa7,0xb7,0x9f,0x17,
- 0x9a,0xe9,0x07,0xe0,0x0d,0xe3,0xbe,0x01,0x68,0xb8,0x17,0x1a,0xee,0xed,0x13,0xe0,
- 0x74,0xcd,0x15,0x59,0x5d,0x76,0x74,0x70,0x44,0x26,0x17,0x2e,0x51,0xb9,0x57,0xa9,
- 0xa0,0x8b,0x97,0xaf,0x70,0x82,0x38,0xc7,0x5e,0xbc,0x8c,0x0e,0x47,0xb9,0x0e,0x8e,
- 0xce,0x2e,0x1e,0x94,0x2d,0x08,0xf2,0x40,0x60,0xfc,0x89,0xae,0x26,0x08,0x1d,0xa1,
- 0xb3,0x5e,0x84,0xcc,0xcb,0x3b,0x00,0xe4,0x7a,0xf9,0x50,0x0d,0x03,0x18,0xf5,0xbc,
- 0x7c,0x3d,0xbc,0xfd,0x19,0xad,0x7c,0x03,0x3d,0xc8,0x42,0x0f,0xa2,0x3c,0x8d,0x3e,
- 0xb2,0xf2,0xc2,0xe8,0xfb,0x80,0xfe,0x5e,0xbe,0x97,0x1d,0xae,0x5a,0x79,0x83,0xea,
- 0x0c,0x8a,0x61,0x7a,0x10,0x8b,0xcc,0xae,0x73,0xa0,0x34,0x8e,0xb4,0x4b,0x5a,0xa4,
- 0xa4,0x19,0x42,0x1d,0x4b,0x3c,0xec,0x04,0x0e,0xbf,0x7c,0x05,0x1c,0xe8,0xeb,0xee,
- 0xe3,0xe7,0xed,0x83,0x6a,0x80,0xce,0x68,0x82,0x0f,0xda,0x88,0x26,0x60,0xaa,0x04,
- 0x82,0x02,0xa0,0x39,0xb5,0xf7,0xda,0x75,0x77,0xe2,0x25,0x3b,0xbe,0x82,0x2e,0xfa,
- 0xd3,0x81,0x4b,0x4e,0x70,0x97,0x27,0xba,0xcb,0x27,0x90,0x66,0x32,0xe3,0x2e,0x5f,
- 0x74,0x02,0xd8,0xe5,0x41,0x62,0x44,0x42,0x86,0x31,0xba,0xee,0x0a,0x9c,0x9d,0x88,
- 0x15,0x4c,0x4e,0x02,0x07,0xe4,0xcc,0x13,0xe4,0x74,0xcd,0xd9,0x0b,0xd4,0xf0,0x06,
- 0x0d,0xfd,0xdd,0x30,0xa0,0x16,0xbe,0x02,0xb6,0x8c,0xce,0xbe,0x18,0x11,0xda,0xa5,
- 0xbe,0xc5,0xae,0x0f,0x33,0xeb,0x41,0x94,0xf1,0xe2,0xf6,0x08,0x5d,0x4b,0x33,0xc7,
- 0x9b,0xd9,0x35,0x1e,0x9e,0xde,0x0e,0x8e,0x4e,0xd4,0x0a,0x7e,0x6e,0x70,0x2e,0xbd,
- 0xea,0xec,0xea,0x45,0xf8,0x13,0x5f,0x05,0xb2,0xac,0x30,0xb2,0x14,0xa7,0x22,0x08,
- 0x67,0x10,0xcd,0x76,0xbd,0x30,0xa0,0x54,0x2b,0x26,0x0d,0x68,0xe6,0x78,0x33,0xca,
- 0xf8,0x40,0x32,0x78,0xfb,0xb9,0xb9,0x7b,0xc0,0xe6,0xe2,0xb6,0x24,0xb7,0x17,0x78,
- 0x5d,0x6e,0x1b,0x3a,0x92,0xdc,0xa0,0xf9,0x69,0x19,0x5f,0x07,0x92,0x1b,0xcc,0xee,
- 0x76,0xa2,0x39,0x70,0x89,0x8d,0x1d,0x6f,0xb3,0x63,0xf2,0xa0,0x2c,0x74,0xb2,0xd3,
- 0x25,0x17,0xff,0xb3,0x49,0x5d,0x58,0x20,0x58,0x80,0xaa,0x61,0xd5,0x1e,0x4f,0x18,
- 0xfd,0xf5,0xb3,0xbb,0xf1,0x9b,0xe4,0xef,0xfe,0x78,0xeb,0x47,0xa1,0xe7,0xb2,0x34,
- 0x67,0x52,0xc6,0x3f,0x4a,0x1e,0x39,0x95,0x3e,0x7e,0x3a,0x65,0xe4,0x64,0xf2,0xf4,
- 0x99,0x94,0x51,0xd2,0x9d,0x3c,0x93,0xa5,0xbb,0x22,0x36,0x9c,0x4a,0x1c,0xf8,0xf5,
- 0xb6,0x0f,0xd6,0x3d,0xf0,0xf5,0xaf,0x3c,0xf0,0xb5,0x97,0xcf,0x84,0x5f,0x14,0xe2,
- 0xe0,0x85,0x5c,0xc3,0xf9,0x1c,0x3b,0xfc,0x2f,0x8b,0xb0,0x42,0xc1,0xc1,0xf0,0x62,
- 0x0e,0xc2,0x25,0xd2,0x85,0x41,0x5b,0x35,0xac,0x00,0xb8,0x5d,0xc9,0x63,0x70,0x47,
- 0x91,0x8e,0xd2,0xd0,0xb5,0x80,0x5c,0x14,0x19,0x2e,0x91,0xf6,0x32,0x0c,0x92,0x11,
- 0xab,0xf6,0x32,0x99,0xe5,0x46,0x40,0x43,0x4a,0x0c,0x08,0x5f,0x0a,0x9d,0xb5,0x0b,
- 0x94,0xff,0x05,0x72,0xeb,0x14,0x42,0x1e,0x01,0x52,0x67,0x1d,0x25,0xf8,0x03,0xa2,
- 0xab,0x12,0x83,0x5b,0x11,0x82,0x57,0x09,0xd6,0xdc,0x20,0xd9,0xd2,0x4d,0xc5,0x72,
- 0xb0,0x72,0x39,0xa6,0xda,0x14,0x5d,0x6d,0x4c,0xa8,0x5f,0x4d,0x6e,0x30,0xa5,0x34,
- 0x9a,0x04,0xad,0xcb,0xc2,0x36,0xa3,0xa0,0x75,0x29,0xad,0x69,0x35,0xa9,0x7e,0x25,
- 0xb1,0x66,0x21,0x52,0x31,0x17,0xa6,0xd0,0x8d,0x68,0xbf,0xfc,0xba,0xf9,0x39,0x82,
- 0x46,0xab,0x87,0x6d,0xb4,0x67,0xef,0xbe,0x13,0x27,0x3e,0x84,0x63,0xa9,0x5f,0x40,
- 0x70,0x62,0x4a,0x9a,0x28,0xaf,0xb0,0x5c,0x56,0x51,0xdf,0xd0,0xdc,0xd6,0xd1,0x3b,
- 0x38,0x44,0x1f,0x8a,0x05,0xa7,0x60,0xe6,0x5e,0x2c,0x5a,0x82,0x29,0x0e,0x07,0x61,
- 0xf2,0x03,0x61,0xa8,0xc2,0x53,0x03,0x43,0x70,0x25,0x3c,0xd4,0xd5,0xd3,0xdf,0xd2,
- 0xd6,0x53,0xdf,0xd8,0x5a,0x5d,0xd3,0x04,0x15,0xa7,0xa4,0x54,0x51,0x50,0x54,0x26,
- 0xca,0x2b,0x82,0x73,0x5f,0x5a,0x86,0x20,0x25,0x0d,0xff,0xbc,0x0b,0xb5,0x38,0x32,
- 0x2a,0x2e,0x22,0x2a,0x2e,0x38,0x34,0x32,0xe8,0x56,0x78,0x70,0x48,0x44,0xe0,0x8d,
- 0x5b,0xfe,0x81,0xc1,0x20,0xdd,0xdb,0xff,0x06,0x82,0xdf,0x0d,0x2f,0xbf,0x20,0x2f,
- 0xbf,0x40,0x6f,0xdf,0x20,0x2f,0x9f,0x40,0xfc,0xdc,0xf6,0x0b,0x44,0xf0,0x25,0xe0,
- 0xc3,0x82,0xb9,0x4b,0x3e,0xdb,0xe1,0x33,0xc7,0x3b,0xc8,0xcb,0x0b,0x3e,0xea,0x83,
- 0xb0,0xeb,0x15,0xe8,0xe5,0xcd,0x92,0x51,0x1a,0x4f,0xd2,0x9a,0x97,0x04,0x7a,0xe2,
- 0x47,0x1f,0xe2,0x66,0x41,0xbe,0x41,0x0c,0x37,0x0e,0x21,0x94,0x96,0x82,0x08,0xe2,
- 0x0d,0x48,0x10,0x59,0x7b,0xc3,0xdf,0x2f,0x24,0x3c,0x2a,0x36,0x2b,0x27,0x4f,0x8e,
- 0x3f,0x07,0xee,0x82,0xf3,0x88,0x7a,0x68,0x44,0x3d,0x34,0x4c,0x61,0x68,0x78,0x58,
- 0x3d,0x3c,0x0c,0xa7,0xed,0xf6,0x8e,0x6e,0x55,0x65,0x4d,0xb6,0x40,0x1c,0x1d,0x9b,
- 0xe0,0x1f,0x18,0xe2,0xcd,0xd7,0x9f,0x11,0x47,0xba,0xf0,0x41,0xe4,0x17,0xc8,0xca,
- 0xb5,0x54,0x83,0xd5,0xdc,0x8c,0xfb,0x06,0xc1,0x47,0x37,0x75,0x85,0xa7,0x05,0x01,
- 0x4b,0xe6,0x49,0x5a,0xc6,0x2d,0x3c,0xef,0x79,0x06,0xda,0x61,0xcb,0x57,0x83,0xb3,
- 0xd7,0xcc,0x99,0x25,0xf3,0xb4,0x8c,0x82,0x95,0x67,0xbc,0x78,0x0e,0xf7,0xe5,0xac,
- 0xe3,0xd3,0xb3,0x94,0xbe,0x6c,0xd7,0x8b,0x20,0x74,0xa1,0xa7,0x45,0x8c,0x2c,0x34,
- 0x24,0xf1,0x45,0xf0,0x0e,0xb0,0xb1,0x25,0xd0,0xcc,0x93,0x71,0x8b,0x9f,0x59,0x3d,
- 0x36,0x6d,0xbc,0x39,0x03,0x09,0x19,0x26,0x0c,0x97,0x12,0x5c,0x82,0x79,0xb1,0xdc,
- 0xbc,0x69,0x0a,0x81,0xc4,0x20,0x36,0x49,0x68,0xd0,0x21,0x73,0x7c,0xbd,0xcd,0x46,
- 0x05,0x78,0x59,0xc4,0x28,0x80,0x21,0xb6,0x4a,0x57,0x9e,0x5c,0xb3,0xd5,0x36,0x6e,
- 0x21,0xd1,0xa4,0x82,0xfc,0x2d,0x6c,0xe4,0x04,0xa1,0x07,0xfc,0xbc,0xfd,0x83,0xd0,
- 0x46,0x9f,0xb5,0x7c,0xc5,0x1f,0x21,0xac,0x2c,0xc8,0x02,0xdd,0xe8,0xd6,0x80,0x6b,
- 0x21,0x1f,0xa8,0xfb,0x56,0xcb,0xf9,0x09,0xcf,0x3a,0xc4,0x37,0xc0,0x1c,0x38,0xa2,
- 0x9e,0xa7,0xb7,0xbf,0x05,0x99,0x97,0x65,0x0a,0xb1,0x31,0x42,0x41,0x5c,0xb0,0xbc,
- 0x38,0x13,0xcc,0x3b,0x11,0xc3,0x64,0x65,0x82,0x77,0xa0,0xa7,0x97,0x1f,0xcd,0x58,
- 0x44,0xd8,0x90,0x81,0x4b,0xbd,0x7d,0x03,0xbc,0x7d,0x83,0xac,0xdd,0xc2,0xcb,0x40,
- 0x5e,0x7c,0xf9,0x1b,0xc7,0x9f,0x11,0xc4,0x7a,0x86,0x61,0xc2,0x12,0xbb,0x99,0x3d,
- 0x10,0xe8,0x15,0x70,0xd3,0x33,0xb9,0xca,0xbd,0x68,0xce,0xb3,0x68,0xc1,0xb5,0xd0,
- 0x00,0xad,0x5d,0x70,0x2f,0x34,0x7c,0x18,0x5e,0xf3,0xd0,0x2f,0x9f,0x58,0x77,0xdf,
- 0x03,0x0f,0x7e,0xfb,0x7b,0x5b,0x8f,0xf9,0x9e,0x4d,0xee,0xb9,0x56,0xa0,0xf7,0x28,
- 0x59,0x70,0x29,0xc6,0x55,0x50,0x5f,0xbc,0x8a,0x17,0xdc,0x8b,0x16,0x1c,0x45,0x9a,
- 0x23,0x37,0x15,0xbf,0x7d,0xf1,0xdd,0xaf,0x7c,0xf5,0x9b,0x5f,0xff,0xfa,0xb7,0x9e,
- 0xdc,0x7e,0xc8,0x39,0x6f,0xca,0xb3,0x78,0xc1,0x8d,0xd0,0x00,0xb2,0x96,0x88,0x3b,
- 0x04,0x37,0x16,0xf1,0x28,0x24,0xdc,0x8a,0x2d,0xa6,0xdc,0x59,0x1c,0x6d,0x29,0x5e,
- 0x70,0x2d,0xc2,0x9b,0x9a,0xe0,0xbc,0xe9,0x45,0xc8,0xdc,0x88,0xaa,0x5c,0x0b,0xe3,
- 0xee,0x64,0x9c,0x9b,0xf5,0x62,0xbb,0x6e,0x45,0x0c,0xd0,0x71,0xae,0x0b,0x6c,0x01,
- 0xcc,0xb3,0x44,0x01,0xba,0xd0,0xab,0x98,0xe9,0x02,0xe2,0x0d,0xd5,0x56,0xba,0xe4,
- 0x5b,0xbe,0xe4,0x2f,0x5d,0x0a,0x90,0x2e,0x85,0x28,0x96,0xc2,0x94,0xab,0xe1,0xaa,
- 0x55,0xa8,0xb9,0x31,0xd5,0xc6,0xd4,0x86,0x65,0xa8,0xb9,0x19,0xcd,0x50,0x76,0xa1,
- 0xe6,0x2e,0x8a,0xdb,0x57,0xc5,0x1d,0xc6,0x9c,0xb6,0x25,0x61,0xbb,0x31,0xb3,0xd9,
- 0x90,0x54,0xbf,0x14,0x53,0x31,0x17,0xa9,0x9a,0xab,0x1e,0x5c,0xb8,0x87,0x9e,0x76,
- 0x75,0x87,0xa0,0x1e,0x1a,0xba,0x70,0xf9,0xca,0xde,0x7d,0xef,0x9c,0xfc,0xf0,0xb4,
- 0xe3,0x35,0x97,0xc0,0xe0,0xf0,0xc4,0xe4,0xb4,0x5c,0x71,0xb1,0x54,0x51,0x55,0xdb,
- 0xd0,0xd8,0xd9,0x3d,0xd8,0xaf,0x1e,0x1f,0x9b,0xc4,0x2f,0xa2,0xb5,0x3a,0xfa,0xcc,
- 0x0a,0xf3,0x77,0xd1,0xe4,0xd6,0x68,0x1d,0xf9,0xa3,0x30,0xbe,0xd9,0x64,0x74,0x7c,
- 0x42,0x3d,0x3c,0x36,0xa0,0x1e,0xe9,0xec,0x1e,0x68,0xeb,0xec,0x6e,0x6e,0xed,0xac,
- 0x6f,0x6c,0xae,0xaa,0x6d,0x54,0xaa,0xf0,0xe7,0x0f,0xa5,0xe5,0xf2,0x82,0x22,0xfc,
- 0x29,0x81,0x50,0x94,0x9f,0x2d,0x14,0xa7,0x65,0xe6,0xa4,0xa6,0x0b,0x53,0xd2,0xb2,
- 0x92,0x52,0xd2,0xc8,0x9d,0x2d,0x29,0x31,0x71,0x29,0xb1,0xf1,0x29,0xd1,0xb1,0xc9,
- 0x51,0x00,0x31,0x49,0xd1,0xb1,0x29,0x51,0xb1,0x49,0x80,0x20,0xc4,0x26,0x93,0x71,
- 0x32,0x48,0xba,0x91,0x31,0x09,0x14,0x28,0x31,0x19,0x64,0xc6,0x01,0x8f,0x8c,0x66,
- 0xa7,0xe8,0x08,0xaf,0xe5,0x77,0xcd,0x23,0xdc,0x20,0xb2,0x4a,0x24,0x48,0x22,0xc3,
- 0x16,0x90,0xd8,0x24,0xbc,0xa1,0x8b,0x21,0x48,0x24,0x5a,0x25,0x46,0x46,0xb3,0x23,
- 0x64,0x36,0x26,0x9e,0x72,0x4b,0x04,0x13,0xc0,0x9c,0xd4,0x74,0x41,0x96,0x20,0x57,
- 0x20,0xca,0x15,0xe4,0xe4,0x66,0x66,0x8b,0x92,0xd3,0xb2,0x12,0x93,0xd3,0xc1,0xc0,
- 0xe8,0xb8,0x04,0xc2,0x3f,0xde,0x5a,0x19,0x9e,0x09,0xec,0x14,0x23,0x88,0x55,0x83,
- 0x67,0x20,0x75,0x11,0xeb,0x1c,0xce,0x15,0xb6,0x96,0x5a,0x4d,0x31,0xe3,0x51,0x09,
- 0x1c,0x2b,0x76,0x9c,0x31,0xd0,0x46,0x8d,0x78,0xea,0x0d,0x4b,0x55,0xad,0x19,0x52,
- 0x25,0xad,0x3c,0x6c,0xe5,0x49,0xce,0x22,0x3e,0x2b,0xbb,0x4a,0xda,0x1a,0x62,0x25,
- 0x88,0x70,0x8b,0xb7,0xf6,0x55,0x34,0xdf,0x15,0x89,0x56,0x06,0xda,0xb4,0x68,0x2f,
- 0xdf,0x96,0xb5,0xc0,0x42,0x2e,0x89,0x2f,0x08,0x8a,0x64,0xbb,0xfc,0x28,0x30,0xa9,
- 0x12,0x63,0x11,0x5f,0x86,0x38,0x36,0x39,0x22,0x2a,0x9e,0x6f,0xfe,0x5a,0xde,0xa0,
- 0x94,0xb7,0x0f,0x37,0xe3,0x81,0xe8,0x04,0xce,0x5e,0x5b,0x5f,0xd9,0x06,0xd4,0x92,
- 0x80,0xaf,0x55,0x82,0x45,0x7a,0xaf,0xed,0x76,0x7b,0x39,0x99,0x68,0xe9,0x2e,0x7b,
- 0x19,0x4b,0x76,0x0a,0xab,0xa7,0x79,0x3b,0x5b,0xa7,0x90,0xdd,0x1d,0xca,0xc5,0x9a,
- 0xf5,0x46,0x74,0xbc,0x85,0x81,0xfc,0x80,0xb2,0x42,0x13,0x58,0x8b,0xe2,0xa3,0x2c,
- 0x37,0x8e,0x65,0x4e,0xf2,0xf5,0x64,0xb6,0x03,0xde,0xbe,0x18,0x97,0x12,0x92,0x5d,
- 0x15,0xa2,0x5c,0x8a,0x50,0x1a,0x6e,0x29,0xf0,0xe6,0x9f,0x10,0xd5,0x2a,0x03,0xca,
- 0x15,0x04,0xb6,0x1b,0x0a,0x53,0x8a,0xe5,0x4b,0x31,0x35,0x8f,0x3d,0xb1,0xfe,0x81,
- 0xfb,0x1e,0x78,0x60,0xdd,0x57,0x1f,0xfa,0xd5,0xe3,0xaf,0x9f,0xf4,0xbe,0x10,0x26,
- 0xbf,0x2e,0x18,0xf6,0x2d,0x9c,0xf2,0x92,0x4c,0x5e,0x4b,0xef,0x3d,0xe6,0x23,0x7a,
- 0xe1,0xad,0xd3,0xff,0xf2,0xfd,0xff,0xb8,0xef,0x1f,0xd6,0x7d,0xed,0xeb,0x0f,0x6e,
- 0xdd,0xfb,0xb1,0xa7,0x64,0x92,0xb2,0xa5,0xfc,0xf9,0x22,0x42,0xed,0x09,0xba,0x4d,
- 0x97,0x2e,0x8f,0xa8,0x40,0x84,0x8e,0x73,0x0c,0x43,0x2b,0x56,0xad,0xc8,0xf8,0x88,
- 0x15,0x31,0xd7,0xa5,0x34,0x76,0x67,0x81,0x21,0xf2,0xa4,0x04,0x96,0x3c,0xa1,0x0d,
- 0x92,0x2f,0x73,0xe6,0xf0,0x81,0xaa,0x01,0x1a,0x46,0x54,0x02,0x18,0xa3,0xab,0x10,
- 0xa0,0xe0,0x26,0xd5,0x2d,0xa5,0x36,0x99,0xd2,0x9a,0x56,0x32,0x9a,0x8d,0xa2,0xd6,
- 0x15,0x51,0x9b,0x29,0xaf,0x7d,0xb5,0xb0,0xcb,0x98,0xdf,0x6d,0x2a,0xe9,0x31,0x15,
- 0xf7,0x98,0xf2,0x3b,0x8d,0x79,0x9d,0xc6,0x9c,0x56,0xa8,0xcb,0xcb,0x09,0xd5,0x0b,
- 0xe1,0xca,0x45,0x55,0xef,0xea,0xf2,0xbd,0xf0,0x9e,0xc1,0xbb,0x05,0xe3,0xff,0x35,
- 0xb6,0xb6,0x77,0x1c,0x3f,0xfe,0xc1,0xbb,0xfb,0x0f,0x7c,0xf0,0xd1,0x99,0x6b,0x2e,
- 0x1e,0x81,0xb7,0xa0,0x04,0xa7,0xe7,0x8a,0x8b,0xe0,0x14,0x5c,0x5b,0xdf,0xd0,0xda,
- 0xde,0x83,0xcf,0x6d,0x18,0x9f,0x9a,0x9a,0x86,0x53,0x30,0x79,0x30,0xd0,0xfc,0x3c,
- 0xbf,0x0a,0x03,0x40,0x15,0xd6,0x68,0x75,0x70,0x16,0x9e,0x9a,0xd6,0x8e,0x8e,0x4f,
- 0x0e,0x8f,0x8e,0x91,0xd7,0x27,0xf5,0x77,0xf7,0xf6,0xc1,0x21,0xba,0xa9,0xa5,0xbd,
- 0xae,0xa1,0xad,0xa6,0xb6,0x5e,0x55,0x59,0xaf,0xac,0xa8,0x96,0x29,0x94,0x65,0xe5,
- 0xca,0x92,0x72,0x79,0x71,0xa9,0x54,0x52,0x50,0x9a,0x5f,0x50,0x2c,0x96,0x14,0xe7,
- 0x8a,0x0b,0xe1,0xdc,0x2d,0xcc,0x15,0x0b,0x73,0x25,0x39,0xb9,0xf9,0x82,0x9c,0xbc,
- 0xec,0x1c,0xb1,0x50,0x24,0x16,0xe5,0x61,0xb1,0x86,0x71,0x41,0x0e,0x82,0x30,0x97,
- 0x8e,0xe7,0x01,0xb0,0x23,0xe2,0x6c,0x82,0x64,0x0b,0xf3,0x04,0x22,0x32,0x4b,0x68,
- 0xb0,0x9b,0x23,0xce,0x12,0x88,0xe9,0x5f,0x5d,0x85,0xa4,0xcd,0xc9,0x2d,0xa0,0x9c,
- 0x05,0x84,0x09,0x19,0x97,0x08,0x72,0x24,0xd0,0x66,0x09,0xb0,0x4b,0x56,0x41,0x37,
- 0x9f,0xe0,0xb0,0x04,0xbb,0xa0,0x0f,0x8c,0x13,0xad,0x80,0x58,0x9c,0x93,0x57,0x80,
- 0x1c,0x44,0xa8,0x6a,0xb6,0x50,0x22,0x60,0xa4,0x8b,0x29,0x67,0x10,0x81,0xd2,0x09,
- 0x01,0x0c,0x66,0xe7,0x10,0x0e,0x79,0x05,0xa8,0x09,0x0a,0x45,0x73,0xa8,0x81,0x22,
- 0x1c,0xcc,0xa3,0xe3,0x84,0x3e,0x8f,0xf2,0xa1,0xea,0x31,0x20,0xa2,0x7c,0xf2,0xa8,
- 0x39,0xb4,0xcb,0x20,0x66,0x1a,0x9c,0x42,0x9e,0x38,0x2b,0x41,0x27,0x10,0x62,0xa1,
- 0xa8,0x80,0xf8,0x07,0x34,0xcc,0x47,0x07,0xd2,0x71,0x11,0xd5,0x30,0x8f,0xf5,0x86,
- 0x7d,0x41,0xe8,0x55,0x62,0x32,0x75,0x02,0x8d,0x05,0x99,0x25,0x1e,0x13,0x81,0x63,
- 0xf3,0x72,0xf2,0xc4,0xac,0x2d,0x12,0xc6,0x52,0xe4,0x99,0x9f,0xcd,0x06,0x85,0xf2,
- 0x67,0x14,0xa3,0x6e,0x27,0xac,0xd8,0x08,0xe6,0x53,0xd1,0xd4,0x63,0x8c,0x32,0x18,
- 0xf1,0x82,0x6c,0x7b,0x5a,0x51,0x13,0x04,0xf8,0xb7,0xf5,0x7c,0xe2,0x46,0x26,0xbe,
- 0x64,0x9c,0xcf,0x59,0x42,0xc3,0xc4,0x31,0xe7,0x3c,0x46,0xe5,0x42,0xc8,0x70,0x39,
- 0xe1,0x93,0x2d,0xcc,0x25,0x16,0x15,0xb0,0xa6,0x59,0x68,0xc5,0x86,0x8c,0xf1,0x12,
- 0x2c,0x01,0x1a,0x9a,0x90,0x34,0xc1,0xf8,0xbe,0x22,0x6b,0x25,0xd4,0x39,0xd6,0x9e,
- 0x44,0x59,0x12,0x22,0x17,0xf9,0xa0,0x81,0x42,0xd6,0x1b,0x42,0x92,0x45,0x9c,0xa5,
- 0x39,0xe2,0x5c,0x71,0x01,0xe1,0xc6,0xa4,0x28,0x97,0x57,0x44,0x07,0xde,0x2a,0x91,
- 0x84,0x4d,0x15,0x9a,0xf3,0x94,0x83,0x84,0x28,0x99,0xc7,0x0f,0x2b,0x3f,0x46,0xe8,
- 0x40,0xd4,0x13,0xe9,0x61,0x90,0xf8,0x2a,0x9f,0xba,0x4e,0xc0,0xd8,0x8e,0xb9,0x4a,
- 0x39,0xb3,0xd2,0x99,0x9d,0xc2,0xe8,0x6c,0x56,0x00,0xe9,0x99,0x0c,0x21,0x9e,0xcf,
- 0xe6,0xfb,0x1c,0xd3,0x9e,0x31,0x9f,0xda,0x0b,0xba,0x91,0x5d,0x4c,0x93,0x90,0xee,
- 0x26,0x76,0xf3,0xd2,0xbd,0xc6,0x25,0x83,0x90,0xb3,0x88,0xc4,0x5d,0x44,0xf3,0x87,
- 0x11,0x41,0x73,0x98,0x68,0x45,0xf7,0x29,0x7f,0xc3,0xd2,0x8c,0x35,0xef,0x5f,0x9a,
- 0x93,0x6c,0xcb,0x24,0x09,0xbb,0x91,0x25,0xac,0x21,0x6c,0x32,0xe4,0xe4,0xa5,0x17,
- 0xd6,0xa6,0xd4,0xce,0x27,0xd6,0x9b,0x92,0xea,0x8d,0xc9,0x8d,0xab,0x49,0x0d,0x46,
- 0xc0,0x29,0x24,0x10,0x30,0x77,0xeb,0x8c,0x09,0xa4,0x0d,0x12,0x75,0xec,0x78,0xff,
- 0xdc,0x3f,0x7d,0xef,0x87,0x70,0x10,0xfe,0xca,0x57,0xbe,0xfe,0x9d,0xef,0xfc,0xeb,
- 0x4f,0x7f,0xf6,0xe8,0x4f,0x1e,0xf9,0xc3,0xcf,0x1f,0xfd,0xdd,0x0f,0x7e,0xf2,0xd0,
- 0x37,0x1f,0xfc,0xce,0xba,0x75,0x5f,0xf9,0xca,0x57,0xbf,0xf1,0xd0,0x23,0xbf,0x3f,
- 0x7e,0x2d,0x22,0x42,0xaa,0x49,0x6b,0x5a,0x86,0x85,0xc0,0x39,0xbd,0x11,0x11,0xe8,
- 0x26,0xf2,0xd8,0xda,0x11,0xb4,0x76,0x97,0xbf,0x9c,0x0e,0x52,0x9d,0x93,0x2c,0x67,
- 0x53,0x1b,0x57,0x12,0x89,0x21,0xd8,0x6d,0x30,0xa6,0x36,0xad,0x24,0x70,0xb3,0x6c,
- 0x97,0x6a,0x45,0x5b,0x0a,0x9c,0xf9,0x74,0x90,0x53,0x80,0xf2,0xe4,0xd4,0x00,0x9a,
- 0x94,0xc6,0xd5,0x54,0x62,0x4b,0x4a,0xfd,0x52,0x7c,0xed,0x2a,0xe7,0x1c,0x90,0x0b,
- 0xb3,0x80,0xa4,0x37,0xc1,0x31,0x16,0xab,0xad,0xb0,0xd5,0x28,0x6c,0x35,0x09,0xda,
- 0x4c,0xa2,0x76,0x93,0xa4,0xc3,0x24,0xe9,0x36,0x42,0xa9,0x2d,0xeb,0x35,0x96,0xf5,
- 0x9a,0x64,0xfd,0x26,0x69,0x9f,0xa9,0xbc,0x0f,0xdb,0xa2,0x1e,0x93,0xa4,0xcb,0x94,
- 0xd7,0xb6,0x22,0x68,0x5d,0x49,0xac,0x5d,0x8c,0x52,0xe9,0x4b,0xba,0x16,0x0d,0xf7,
- 0xce,0x7b,0x16,0xee,0x16,0x56,0x4d,0xab,0x32,0xb9,0xe2,0x9d,0x77,0x0f,0xec,0x7b,
- 0xe7,0xe0,0x99,0xb3,0x17,0x5c,0xdc,0xbc,0x6f,0x86,0x86,0x27,0xa5,0x64,0xc0,0x29,
- 0xb8,0x54,0xaa,0xac,0xa9,0x6b,0x69,0xeb,0xec,0xe9,0x85,0x63,0xed,0xd8,0x14,0x7d,
- 0x41,0x03,0x3e,0xc5,0x51,0xaf,0xb7,0x2a,0xc1,0x70,0x30,0x26,0x8f,0xac,0xd4,0x92,
- 0xbb,0xb3,0x66,0xc9,0x1b,0x0c,0x47,0xa0,0x0a,0x0f,0x0e,0x8d,0xf6,0x0d,0xa8,0xbb,
- 0x7a,0xd4,0xed,0x9d,0xdd,0xed,0xf8,0x28,0x9b,0xae,0xc6,0xa6,0xb6,0xba,0x86,0xd6,
- 0xea,0xda,0xfa,0xaa,0x9a,0x86,0x4a,0xf2,0x93,0x1c,0xa5,0xaa,0x56,0xa5,0xc2,0x1f,
- 0xdd,0x2b,0x54,0x95,0x52,0x7c,0x14,0x43,0xa5,0x4c,0x21,0x97,0xca,0x95,0x00,0xe5,
- 0x72,0x39,0xfe,0x5a,0x5f,0x26,0x23,0xc0,0x74,0xcb,0x64,0x52,0x80,0x72,0x99,0x1c,
- 0x46,0xa4,0x0a,0x65,0x69,0x39,0x99,0x95,0x2b,0xe4,0x0a,0x45,0x99,0x54,0x8e,0xb3,
- 0x52,0x05,0xe9,0x2a,0x71,0x09,0x5d,0x28,0x83,0x71,0x98,0x55,0x92,0x85,0x2a,0x5c,
- 0xcb,0xb2,0x82,0x59,0xb9,0x42,0x25,0x95,0xc9,0x41,0x6e,0x69,0x39,0xce,0xc2,0x72,
- 0x20,0x96,0xe2,0x23,0x2c,0xa4,0xe4,0xb1,0x00,0x0a,0xa0,0x07,0x02,0x64,0x2b,0xa3,
- 0x3c,0x51,0xae,0x14,0x15,0x40,0x3d,0xc9,0x78,0x05,0x61,0x58,0x51,0x8e,0x7c,0x80,
- 0x40,0x05,0x5a,0x95,0x49,0x65,0x32,0x5c,0x5b,0x21,0x67,0x95,0x24,0x94,0x0c,0x67,
- 0x54,0x15,0x04,0x11,0x55,0xd1,0x52,0x62,0x0e,0x37,0x42,0x65,0x41,0x4b,0x95,0xa4,
- 0x04,0x44,0xab,0x4a,0x86,0x46,0x46,0xfc,0x83,0x34,0x52,0xb4,0x8b,0xd1,0xad,0xa2,
- 0x0c,0x69,0xa1,0xcb,0x39,0x87,0x5a,0x84,0x5a,0x11,0x1a,0x19,0x27,0x05,0xac,0xb6,
- 0x75,0x0e,0x27,0x08,0x57,0xc9,0x2c,0xbc,0x41,0xed,0xa5,0x0b,0x29,0x2b,0x30,0x90,
- 0xa8,0x2a,0x27,0x16,0xc1,0x94,0x92,0xf8,0x4a,0xc6,0x2a,0x46,0x65,0xc9,0xcd,0x6e,
- 0x67,0xec,0x52,0x41,0x7c,0xa9,0xbd,0x7c,0x7d,0x28,0x31,0xd0,0x80,0xaf,0xa4,0x0a,
- 0xbe,0xbd,0x72,0x6a,0x8e,0x4c,0x01,0x5d,0x05,0x55,0xc3,0x2a,0xbe,0x2c,0x07,0xd4,
- 0x99,0x58,0x2a,0xe7,0x22,0x45,0x81,0xb8,0x48,0xc9,0x59,0x04,0x1c,0x64,0x0a,0xc6,
- 0x22,0x7e,0x5e,0xb1,0x5e,0x85,0xd9,0x0a,0xf3,0x72,0x39,0x89,0x11,0xe6,0x80,0x92,
- 0x04,0x8b,0x11,0x64,0xdf,0x57,0x52,0x25,0x13,0x32,0x85,0x92,0xe4,0x30,0x2c,0x64,
- 0xb4,0xe2,0xfc,0xcc,0xc5,0x9a,0xa4,0x22,0xa6,0x4a,0xb9,0x9c,0x71,0x9a,0x14,0x95,
- 0xc7,0xac,0x23,0xae,0xe0,0xb4,0xe2,0x65,0x2c,0x99,0x95,0x11,0x7d,0x20,0x63,0x09,
- 0x67,0x42,0x0c,0x3a,0x93,0x18,0x49,0x15,0x66,0xc7,0xda,0xc4,0x48,0xca,0x85,0x9b,
- 0xd3,0x99,0x84,0x4c,0x49,0x93,0x84,0x78,0x89,0xea,0x86,0x3e,0x21,0xaa,0x82,0x4a,
- 0x72,0x2e,0x3f,0x69,0x8c,0xa4,0x0a,0xc6,0x57,0x5c,0x14,0x48,0x7a,0xf3,0xc2,0xc1,
- 0x73,0x0e,0xc7,0x0a,0x16,0xd2,0x08,0xf2,0xd5,0x20,0x22,0x50,0x49,0xa0,0x67,0x59,
- 0x99,0x33,0x56,0x46,0x77,0xb4,0x94,0x91,0x4b,0xd3,0x9b,0xef,0x1c,0xbe,0x27,0x49,
- 0xa2,0x32,0x51,0x90,0xe2,0xa6,0xae,0xa4,0x21,0x23,0x79,0x8e,0x41,0x91,0x92,0xdd,
- 0x2a,0x63,0xed,0x25,0x5d,0x15,0xb1,0x02,0xa3,0x50,0xac,0x6c,0x14,0xb5,0xe8,0x0b,
- 0x3b,0x4d,0x92,0x76,0x63,0x7e,0x97,0x49,0xdc,0x6e,0xcc,0xed,0x34,0x41,0x17,0x5a,
- 0x7b,0xdd,0x15,0x20,0x83,0x6e,0x1e,0x40,0xa3,0xe1,0x6a,0x54,0xee,0xb6,0x1d,0x87,
- 0xbf,0xff,0xe3,0x9f,0xdd,0x7f,0xdf,0x03,0xf7,0xfd,0x9f,0xfb,0x38,0x78,0xf0,0xc1,
- 0x6f,0x3f,0xfc,0xe8,0x6f,0xf6,0x9f,0x72,0x0d,0xcf,0x69,0xcc,0xe9,0x58,0xc9,0xeb,
- 0x32,0x15,0x74,0x18,0xf3,0x3a,0x4c,0x00,0x05,0x5d,0xab,0x79,0x04,0x47,0x9e,0x1d,
- 0x58,0x71,0x80,0xa1,0xa8,0xf3,0xee,0xba,0xa0,0x15,0x00,0xed,0x52,0x25,0x45,0x54,
- 0x25,0xc2,0x16,0xba,0x05,0x30,0x88,0xb2,0x4c,0x56,0x82,0x28,0x31,0x7f,0x56,0xdc,
- 0x85,0x00,0xb3,0xf9,0x5d,0x26,0xfe,0x2c,0x15,0x91,0xd3,0x8e,0xab,0xf8,0xb3,0xe8,
- 0x87,0x36,0xa3,0x84,0xcc,0x72,0x6b,0xd1,0xb4,0x4e,0x53,0x4e,0xc7,0x2a,0xa8,0x41,
- 0x01,0x88,0xf3,0x3a,0x57,0x0b,0xba,0xb0,0xd4,0x96,0xf6,0x18,0x01,0x8a,0x7b,0xb1,
- 0xce,0x96,0xb1,0xd5,0x56,0x35,0x88,0xa0,0x18,0x60,0x00,0xab,0x70,0xaf,0xa9,0xa0,
- 0xcd,0x98,0xdd,0xb2,0x92,0x54,0xbf,0x12,0xa1,0xd0,0x0b,0x9a,0x97,0x75,0x8b,0x5f,
- 0x7e,0x95,0xfc,0xa2,0x41,0x24,0x29,0xdc,0xf7,0xce,0xbb,0xfb,0xdf,0x3b,0xf4,0xe1,
- 0x47,0xe7,0xae,0xba,0x78,0xfb,0xdf,0x08,0x8f,0x4f,0x4c,0x11,0xe5,0x15,0x95,0x94,
- 0x49,0x2b,0x6a,0xea,0x9a,0x5b,0x3b,0xbb,0x7b,0x07,0xd5,0xc3,0xf8,0x64,0x27,0xf2,
- 0x74,0x0e,0x8b,0x3b,0xb2,0x2c,0x6f,0x90,0x36,0xc0,0x2c,0x79,0x76,0x34,0x3e,0x5f,
- 0x11,0x88,0xc7,0xc6,0xa7,0x47,0x46,0x27,0xd5,0xc3,0xe3,0xfd,0x83,0x50,0x8b,0x87,
- 0x7b,0xf0,0x3e,0xc9,0x81,0x8e,0xae,0x81,0xb6,0x8e,0x6e,0xa8,0xec,0x2d,0x6d,0xdd,
- 0xcd,0xad,0x1d,0x4d,0x2d,0x1d,0x8d,0x2d,0x1d,0x80,0x34,0x36,0xb7,0x37,0x35,0xb7,
- 0x34,0x34,0x01,0xd2,0xd6,0xd0,0x04,0xd0,0x5e,0xdf,0xd0,0x04,0x2d,0x85,0xfa,0xc6,
- 0x36,0x80,0x3b,0xef,0x36,0x34,0xb6,0x7e,0xea,0xb5,0x6b,0x77,0xdb,0xd6,0x98,0x65,
- 0x15,0xfe,0xdc,0x04,0xfd,0x2f,0xb1,0xf7,0xce,0xba,0x28,0xba,0xe3,0xcb,0x35,0xff,
- 0xf3,0xd1,0xaa,0xb1,0x85,0x09,0xe5,0xe7,0x60,0xd1,0x5a,0xa9,0xc2,0x75,0x5b,0x69,
- 0xce,0x7c,0xa9,0xe1,0xb6,0x55,0xf2,0x33,0x69,0xf5,0x85,0x25,0xf0,0x5d,0x69,0xc5,
- 0x27,0x26,0x6c,0x79,0x9c,0x89,0xc9,0xf8,0x21,0x03,0xb1,0x6e,0x22,0x9f,0x33,0x8d,
- 0xad,0xdd,0xb2,0x01,0x13,0x05,0xa8,0x02,0x70,0x1c,0xe3,0xba,0x77,0x02,0xca,0x41,
- 0x58,0xb2,0x5a,0xd0,0x30,0x15,0x2e,0xac,0x70,0x0a,0x4e,0xf9,0xf8,0x7a,0xf0,0x39,
- 0xd7,0x10,0xaf,0x88,0x9c,0xc4,0x82,0xb6,0xa2,0x36,0x03,0xad,0x2c,0x77,0xc5,0xf0,
- 0xaf,0x03,0xd2,0x7e,0xb3,0xbd,0x14,0x97,0x71,0x6d,0xbf,0x05,0x59,0xd5,0x10,0x8e,
- 0x00,0xa5,0xbc,0x1f,0x81,0x9b,0xb5,0xeb,0x2b,0x24,0x63,0x71,0xd5,0x90,0x49,0x0e,
- 0x15,0x56,0x6d,0xaa,0x18,0xc2,0xf1,0x9a,0x61,0x64,0x55,0x3b,0x62,0xaa,0x1f,0x65,
- 0x00,0xba,0x00,0x95,0x6a,0x6c,0xa1,0xf8,0x96,0xf4,0xe0,0x15,0x8e,0xa0,0x75,0x39,
- 0xa9,0xd6,0x10,0xaa,0x5a,0xc9,0x6c,0x34,0x68,0xe6,0xef,0xe1,0x47,0x6d,0xdc,0x39,
- 0xe8,0x0d,0x0b,0xd9,0xc2,0xbc,0x77,0xdf,0x3b,0xf0,0xfe,0xfb,0x87,0x4e,0x7f,0x7c,
- 0xc1,0xd9,0xd5,0x2b,0x30,0x28,0x38,0x2e,0x21,0x35,0x3b,0x27,0x37,0xbf,0xa8,0x4c,
- 0xa6,0xac,0x83,0x2c,0xed,0xec,0x1e,0xe8,0x1f,0x1c,0x1e,0x19,0x9b,0x1c,0x9f,0xa4,
- 0x3f,0x4d,0x82,0x2a,0x6c,0xa7,0x04,0xd3,0xbb,0xb3,0xe8,0x2f,0x95,0xc8,0x3d,0x5a,
- 0x1a,0x38,0x17,0x4f,0x4e,0xcf,0x4c,0x4e,0x4d,0x4f,0x4c,0x4d,0xc3,0x72,0x38,0x17,
- 0x93,0xa3,0xf1,0x48,0xff,0xe0,0x08,0x79,0xfe,0x2d,0x3e,0xfe,0x17,0xea,0x7b,0x4f,
- 0xff,0x70,0x37,0xfe,0x3a,0x43,0xdd,0xd5,0x0b,0x35,0x5a,0x8d,0x23,0x7d,0x4c,0x4b,
- 0x81,0x0c,0xaa,0xef,0xa6,0xfb,0x59,0xd6,0xda,0xef,0x76,0x33,0xba,0x59,0xcf,0x72,
- 0x83,0x9f,0x97,0xa0,0xff,0x25,0xf6,0xde,0x71,0x17,0x22,0x38,0xf0,0x65,0x9b,0xff,
- 0xf9,0x68,0xc5,0x8f,0xe9,0x17,0x91,0x2a,0xfc,0x2e,0xb9,0x6b,0x71,0xe0,0x53,0x87,
- 0x9b,0x27,0xeb,0x36,0x6a,0xdc,0xb5,0x92,0x54,0xab,0x2f,0x23,0x9f,0x6f,0x97,0xc0,
- 0x77,0xa5,0x15,0xeb,0x58,0xf2,0xc1,0x02,0x38,0xf3,0x61,0xd2,0x4f,0x08,0xf0,0x4e,
- 0x51,0x6a,0x38,0x20,0x3d,0x83,0x63,0xad,0x23,0x0b,0x50,0x0b,0xea,0x48,0x45,0x68,
- 0x00,0x84,0x57,0x20,0xee,0x04,0x1a,0xc6,0x58,0x84,0xb4,0xb0,0xbc,0x7a,0xd8,0xd4,
- 0x34,0xba,0x0a,0x2d,0x1d,0xac,0xb9,0x4b,0x86,0x9f,0x1d,0xea,0x58,0x73,0xea,0xd6,
- 0x98,0x6d,0x1c,0x47,0x3d,0xeb,0xa8,0xbd,0xa3,0x0c,0x6e,0x4b,0x46,0xcd,0x01,0x1a,
- 0x28,0x9a,0xfc,0xba,0x49,0xf9,0xe3,0x38,0x0f,0x1a,0xc6,0xb1,0x45,0x02,0x70,0xc8,
- 0x38,0x76,0x1b,0x27,0x10,0x07,0x04,0x5c,0x04,0xd0,0x44,0x90,0x96,0x09,0x53,0x23,
- 0xe0,0x13,0x66,0x6e,0x15,0x6a,0x2c,0xeb,0x45,0x3d,0xa6,0x82,0xf6,0x55,0x61,0xeb,
- 0x62,0x4a,0xfd,0x42,0x58,0xc5,0x52,0x7a,0xc3,0xfc,0x88,0xe6,0x6f,0xe4,0xd7,0x46,
- 0x77,0x02,0x46,0x93,0xa9,0x5c,0x2a,0x3f,0x75,0xfa,0xe3,0xf7,0xdf,0x3b,0x70,0xea,
- 0xd4,0xc7,0x8e,0x57,0x5d,0x03,0x02,0x83,0x23,0xa3,0x93,0x32,0xb2,0x72,0x24,0x05,
- 0x25,0xe5,0x72,0x25,0x9e,0x83,0xf1,0x21,0xd1,0x83,0x83,0x43,0xe3,0x63,0x13,0xd3,
- 0xdc,0xfb,0x82,0xf1,0x30,0x6c,0xef,0x2c,0xcc,0xfe,0x5e,0x58,0x4f,0xde,0xe3,0x00,
- 0x87,0x62,0x1d,0xbd,0x53,0x0b,0x60,0x6a,0x1a,0x61,0x62,0x72,0x66,0x7c,0x62,0x0a,
- 0xda,0xd1,0xf1,0xa9,0xd1,0xf1,0x99,0x61,0x6c,0x27,0xf1,0x3e,0xae,0xd1,0x89,0x91,
- 0x31,0x80,0xa9,0xe1,0xd1,0xc9,0xe1,0xd1,0x89,0x4f,0x0d,0x23,0x63,0xd3,0x9f,0x65,
- 0xb9,0x3d,0x98,0x24,0x5a,0xd9,0x9d,0xfa,0xac,0xda,0x7e,0x76,0xf8,0x02,0xec,0xbd,
- 0x67,0xa4,0x7f,0xae,0x5a,0x4d,0x0e,0x8d,0x40,0x34,0xa7,0xd4,0xc3,0x9f,0x25,0xa0,
- 0x94,0xc9,0x17,0xe8,0x37,0x58,0xa8,0x1e,0xfe,0x64,0xb2,0xa1,0x91,0x4f,0xa7,0xe4,
- 0xf4,0x6d,0x17,0x7e,0x59,0xc1,0xba,0x0b,0xad,0x28,0xb7,0x21,0xb2,0x31,0xd5,0xa3,
- 0x0c,0x67,0xf8,0x78,0x61,0xdd,0x32,0xae,0x1e,0x9d,0x1a,0x1c,0xd7,0xf4,0x4d,0xad,
- 0xf6,0xcf,0x98,0x00,0x7a,0xa6,0x4d,0x14,0xe9,0x9b,0x32,0x52,0xe4,0x0e,0xa1,0x17,
- 0x96,0xdc,0x0d,0xfd,0x5f,0x03,0x66,0x79,0x60,0x77,0x96,0xe8,0xdc,0xcb,0xb6,0x76,
- 0x4d,0xa0,0x83,0xd4,0x2d,0x9c,0x73,0x38,0x5f,0xd1,0x55,0x5d,0xd3,0x0c,0x74,0x4c,
- 0x9b,0x3a,0x09,0x02,0x53,0xdd,0xd3,0xe6,0x71,0x0e,0x3a,0xc9,0x54,0xfb,0x94,0xa9,
- 0x75,0xd2,0xd4,0x31,0x89,0x55,0xb8,0x79,0xcc,0x48,0x8f,0xc0,0x70,0xf2,0x2d,0xeb,
- 0x35,0xe5,0x77,0x18,0x33,0x5b,0x96,0xd3,0x1a,0xe6,0x43,0x54,0xab,0x65,0x9d,0x8b,
- 0x5a,0xc3,0x97,0x5f,0x13,0xff,0xca,0xb0,0x6a,0x5a,0xed,0xea,0xe9,0xb9,0x76,0xfd,
- 0xfa,0x81,0x83,0x87,0x8f,0x9f,0xfc,0xd0,0xc1,0xe9,0xba,0xa7,0x4f,0x60,0x68,0x64,
- 0x4c,0x72,0x6a,0x86,0x50,0x24,0x29,0x2c,0x91,0x2a,0x2a,0x6b,0xea,0x1a,0x5b,0xda,
- 0x3a,0x7a,0xe0,0xd2,0x71,0x60,0x18,0x8b,0xd1,0xe4,0xf4,0x2c,0xd4,0x53,0x38,0x0b,
- 0x6b,0x75,0x73,0x5a,0xdd,0x3c,0x77,0x77,0x16,0xf7,0x37,0x62,0xfa,0x10,0x4b,0xf2,
- 0x1a,0x82,0x39,0x72,0xa7,0x96,0x16,0xca,0x31,0x7d,0xb9,0x21,0x2c,0x24,0x88,0x0e,
- 0x6a,0xf1,0xf4,0x8c,0x66,0x7a,0x56,0xcb,0x8d,0xc3,0xf9,0x9a,0xb4,0xf8,0xac,0x8f,
- 0xe9,0x59,0xa8,0xdd,0x1a,0x7c,0xa3,0x81,0x46,0x47,0xde,0x6b,0x00,0x83,0x1a,0xac,
- 0xe6,0x58,0xd0,0x67,0x09,0x0d,0xe9,0xce,0xe0,0xe3,0xb9,0xe8,0x20,0xa1,0xc7,0x76,
- 0x6a,0x7a,0x96,0x2c,0xe7,0x06,0x81,0x1b,0x6d,0xad,0xd6,0x22,0x5b,0x1e,0x31,0x2a,
- 0xc3,0x48,0x27,0x64,0x53,0x48,0x46,0x89,0x11,0x61,0xbb,0x74,0x96,0x12,0xcf,0x52,
- 0xce,0x33,0xb3,0x0c,0xab,0x19,0xb6,0x4b,0x89,0x19,0x7a,0xaa,0x36,0xcb,0x8a,0x59,
- 0xc8,0x37,0x81,0x4c,0xd1,0x9f,0x5d,0xe3,0x20,0x79,0xf2,0x36,0xa7,0xd5,0x0c,0x23,
- 0x88,0xb1,0x88,0xb5,0x02,0x56,0xe9,0xa8,0xc4,0xcf,0x66,0xaf,0x86,0x21,0x63,0xa5,
- 0xb0,0x6a,0x50,0xdc,0x8e,0x9f,0xa7,0x67,0x74,0x66,0x1d,0xb0,0x9d,0x9d,0xe6,0xdc,
- 0xc2,0xf3,0x06,0x8f,0x9b,0xa5,0xeb,0xb8,0x20,0xb2,0x2d,0x35,0x81,0x68,0x6e,0x61,
- 0x02,0x67,0x11,0xb7,0x9c,0x24,0x83,0x8e,0xc7,0xc4,0x22,0x64,0xbc,0xe8,0xcc,0xb2,
- 0xb3,0x3a,0x1b,0x89,0x56,0x89,0xa4,0xb1,0xb1,0x45,0x33,0xcd,0xda,0x6b,0x91,0x75,
- 0x76,0x58,0xcd,0x12,0x7d,0x2c,0xe5,0x12,0x6f,0xd0,0x71,0x3e,0x0d,0x9b,0xcf,0x8c,
- 0x9f,0x69,0x14,0x78,0x72,0x35,0x5c,0x02,0xb3,0xe3,0x34,0x0a,0x1c,0x67,0x2b,0x25,
- 0x75,0x34,0x91,0x30,0x55,0xa8,0x73,0x18,0x9d,0x19,0xe7,0x5b,0x27,0x83,0x65,0x9a,
- 0x99,0x83,0x02,0xba,0xf1,0xec,0xa5,0xe6,0x53,0x7b,0x51,0x43,0xe2,0x1c,0x73,0x12,
- 0xb2,0x26,0x58,0xac,0x9d,0xd1,0xce,0x58,0x45,0x5f,0x63,0x76,0x14,0x2f,0x81,0xb5,
- 0xd3,0xfc,0xad,0xa1,0xd1,0xf1,0x13,0x98,0x6f,0x35,0x97,0x24,0x3c,0x13,0xb8,0x2e,
- 0x27,0x57,0x6b,0x4e,0x60,0x36,0x63,0xa7,0x78,0x7b,0xdf,0x1c,0x0b,0x70,0xf5,0x0c,
- 0xc9,0x79,0xa6,0xab,0x99,0xd2,0x2c,0xa8,0x35,0xc6,0x31,0xbd,0x69,0x58,0x6b,0x1a,
- 0xd5,0x99,0xc6,0x74,0xa6,0x71,0xfd,0x5d,0x03,0xac,0x85,0x16,0x98,0x8c,0x10,0x0e,
- 0xa3,0xb7,0x65,0x42,0x89,0xbf,0x20,0x00,0xe6,0x54,0x0d,0x40,0x46,0x88,0x45,0x43,
- 0x1a,0x6c,0xa1,0x4b,0x0d,0x04,0xe0,0x66,0xd5,0x1a,0xd4,0x16,0x75,0x66,0xd7,0xe2,
- 0xb8,0xe5,0x92,0x11,0x1d,0xb3,0x8a,0x33,0xca,0x96,0x95,0x5a,0x63,0xee,0x02,0x0e,
- 0x23,0x03,0xb3,0x08,0x74,0x6a,0x48,0x6b,0x2e,0xd9,0xb4,0xbe,0xb7,0x4f,0x1a,0xbb,
- 0x26,0x8d,0x2d,0xe4,0x20,0x0c,0x27,0x6b,0xa5,0x1a,0xff,0x10,0x5c,0xdc,0x65,0xcc,
- 0x69,0x37,0x66,0xb5,0x2c,0x47,0x57,0x2e,0x47,0x57,0x2f,0xa9,0x06,0x8c,0x0b,0xab,
- 0xff,0x5f,0x7c,0xed,0x6c,0x0b,0xc6,0xff,0x6b,0x1a,0x9b,0x98,0xf4,0xf1,0x0b,0x78,
- 0x77,0xff,0x81,0xa3,0xc7,0x4f,0x9e,0xbf,0x78,0xc5,0xd5,0xc3,0xf7,0xc6,0xad,0xf0,
- 0x98,0xb8,0x94,0xf4,0x4c,0x01,0x1c,0x84,0xa5,0xf2,0x0a,0x28,0xc2,0xe4,0x15,0x03,
- 0xdd,0xf8,0x9c,0x1c,0xf5,0xf8,0x08,0x9c,0x5a,0xf1,0x49,0x1d,0x58,0x86,0x49,0x21,
- 0xd6,0xeb,0xe7,0x0c,0xe4,0x65,0xa9,0xf3,0xdc,0x1f,0x85,0xc9,0x0b,0x0d,0xa1,0x04,
- 0x73,0xb5,0x58,0x4f,0xbf,0xa0,0xa6,0x6f,0x05,0xa2,0x07,0x64,0x52,0x9a,0xe1,0x40,
- 0x3d,0x4f,0xab,0x30,0xf9,0xee,0x5a,0x4b,0x66,0xb5,0x74,0x96,0xc2,0x2c,0xd2,0xea,
- 0x68,0x8b,0x2f,0x09,0x9d,0x65,0x10,0x42,0xa3,0xa3,0x53,0x50,0xeb,0x09,0x01,0xae,
- 0x25,0xef,0xc3,0xd5,0xb1,0x5d,0x0d,0xbd,0x06,0x20,0x0b,0xf1,0x66,0x32,0xab,0x29,
- 0x8e,0x33,0x3b,0x4b,0xc7,0xf5,0x3c,0xb9,0x5a,0xfa,0x5a,0x46,0x82,0xeb,0x88,0xbd,
- 0x0c,0x31,0xd8,0x42,0xc7,0x29,0x19,0xd5,0x99,0xd5,0x87,0x79,0x93,0x14,0x4b,0xcc,
- 0x57,0x92,0x92,0xe9,0x39,0xb9,0x64,0x9c,0xb1,0x88,0x95,0xc8,0x99,0xa0,0xe3,0xf8,
- 0x40,0x97,0x1d,0x47,0x59,0xf4,0xb5,0xbf,0x9f,0xc5,0x5e,0x90,0xcb,0xe9,0x46,0xa7,
- 0xa8,0x8d,0x40,0xcc,0xad,0x25,0x23,0x7a,0x2a,0x82,0xef,0x7c,0xfe,0x20,0x15,0x67,
- 0x13,0x2f,0x1d,0x5f,0x79,0x6a,0x1a,0xe7,0x0d,0x3a,0xc2,0x99,0x40,0x43,0xc9,0x76,
- 0xf9,0x7a,0x82,0x1b,0xf5,0x1c,0x67,0xee,0xfd,0x5c,0x94,0x1b,0x2f,0x64,0xe6,0x64,
- 0xa0,0x4a,0x72,0xa6,0xf1,0x75,0xa6,0x88,0xa5,0xdb,0x35,0xf4,0xfb,0x1c,0x9e,0xb6,
- 0x16,0xd1,0xe1,0xe5,0x86,0x6d,0xee,0xf1,0x89,0xcd,0xa9,0xc8,0x73,0x05,0x43,0xc3,
- 0xda,0xc5,0x77,0x3e,0x23,0x97,0x53,0x83,0xd3,0x81,0x17,0x11,0x7e,0x36,0x52,0xff,
- 0x58,0x65,0x3b,0xf3,0xc2,0x50,0xd6,0x76,0x3d,0x2f,0x51,0xf9,0xc9,0xa0,0xb3,0x49,
- 0x33,0x26,0x4c,0x24,0x4b,0xed,0x98,0x30,0x4b,0xde,0x48,0xca,0xcf,0x0d,0x2e,0x46,
- 0x96,0x6b,0xb5,0xac,0x2b,0xf4,0x6c,0xc2,0xeb,0x6c,0xac,0x30,0xfb,0x84,0xd2,0x70,
- 0x16,0x59,0xba,0x85,0x1a,0xa8,0xb1,0xf2,0x00,0xcf,0x69,0xfc,0x2d,0x69,0x26,0x63,
- 0x89,0x2d,0xf6,0x02,0x1d,0xe7,0x88,0xe9,0x87,0x8c,0x46,0x6f,0x98,0x9c,0x33,0x4e,
- 0xcc,0x99,0xfe,0x0e,0x9f,0x08,0x50,0xa3,0x39,0x5c,0x63,0x58,0x73,0x8a,0xe2,0xd0,
- 0x0e,0x69,0xd8,0x6a,0xae,0xb5,0x3e,0x53,0xc3,0xf9,0xb7,0x79,0xdc,0xd4,0x34,0x6a,
- 0xaa,0x1c,0x36,0x29,0x06,0x4d,0xa5,0xbd,0xf8,0x6b,0xa3,0x8c,0x16,0x7c,0xd4,0x55,
- 0x64,0xd5,0x4a,0x64,0xe5,0x42,0xf3,0xe8,0xea,0xca,0xdf,0xe2,0x4f,0x8d,0xee,0x0a,
- 0x16,0x16,0x17,0x84,0x79,0x62,0x38,0x05,0x03,0x7c,0x74,0xe6,0xfc,0x15,0x27,0x67,
- 0x6f,0xdf,0xc0,0x90,0xf0,0xd8,0xf8,0xc4,0xd4,0x2c,0x41,0x6e,0x41,0x61,0x79,0x99,
- 0x4c,0x51,0x59,0xdd,0x54,0xd7,0xd8,0xdc,0xde,0xd9,0x0b,0x67,0xe1,0xfe,0x41,0xb5,
- 0x7a,0x78,0x6c,0x64,0x6c,0x72,0x72,0x7a,0x7a,0x6a,0x1a,0xdf,0xd4,0x40,0xee,0xbf,
- 0xc2,0xeb,0x67,0x9a,0xff,0x50,0x82,0xe9,0x5b,0xb6,0xe1,0x83,0x9a,0x54,0xde,0x39,
- 0xfa,0xf3,0x61,0xba,0x7f,0xe9,0xd1,0x98,0x6e,0x5e,0x42,0x83,0xff,0xa3,0xe3,0xec,
- 0x27,0x8f,0x8e,0xfd,0x60,0xd4,0x10,0x02,0xda,0x6a,0x29,0x25,0xf7,0x69,0xc0,0x2b,
- 0xe5,0x3a,0x5e,0x2d,0x60,0x76,0x37,0xd9,0x8c,0xf3,0xdc,0xc7,0x17,0xe5,0x43,0xd8,
- 0xea,0x59,0x89,0x3a,0x8e,0x33,0xd7,0xa5,0x6c,0x89,0x9e,0x8c,0x20,0x4e,0x2b,0xf6,
- 0x23,0x68,0x8e,0xee,0x77,0xae,0x6a,0xb0,0xbb,0x1e,0xd4,0x9e,0x67,0xbb,0x80,0xcf,
- 0x91,0xda,0xa1,0x23,0x2f,0x19,0xe7,0xaa,0xc6,0x1c,0x8f,0x8f,0x9e,0x76,0xe9,0x12,
- 0xbe,0x15,0xdc,0xd5,0x05,0xcf,0x2e,0x8a,0xd0,0x0f,0xbd,0x39,0x6a,0x26,0xdb,0xfd,
- 0x34,0xf6,0xb2,0x4a,0xea,0x78,0x06,0x9a,0xe5,0xd2,0x4f,0x66,0xbe,0x6f,0x6d,0xd6,
- 0x7e,0x0a,0x7b,0x39,0x9d,0xf5,0x56,0xa6,0xf1,0x8c,0xe5,0x2c,0xd2,0xf2,0x56,0x99,
- 0xed,0xe5,0xae,0xdc,0x38,0x1a,0x2e,0x64,0x9c,0x27,0xb9,0x80,0xf2,0xbb,0x2c,0xa2,
- 0x21,0xea,0xe9,0x59,0x9d,0xf5,0x3c,0x0e,0x3a,0x22,0x48,0x67,0x45,0x6c,0xc3,0x8a,
- 0xaf,0x80,0x39,0xfa,0x3c,0x8b,0xcc,0x41,0xb1,0xea,0x72,0x51,0xe0,0x2e,0x3f,0xc8,
- 0x5a,0xba,0x17,0x68,0xb2,0xcd,0xf1,0x7d,0xc2,0x6a,0x6b,0xf6,0x15,0xe1,0x60,0x91,
- 0x03,0x5c,0xe1,0xa3,0x51,0x63,0x4b,0x2a,0xcd,0x2e,0xeb,0x80,0x52,0xcd,0xf9,0xdb,
- 0x8a,0xe7,0x3a,0xab,0x7d,0xc4,0x2c,0xe1,0x5d,0x86,0x31,0xd7,0x0c,0x3c,0x6e,0xd6,
- 0x51,0xe0,0x4c,0x63,0xcd,0xd4,0xdb,0xc6,0x77,0xed,0x08,0x32,0xa9,0xc2,0xca,0xb5,
- 0x93,0x21,0x34,0x10,0xfc,0x0d,0x4b,0xfd,0xc3,0xed,0x1a,0xde,0x27,0x80,0x79,0x83,
- 0x68,0x74,0x86,0x49,0xfd,0xea,0x97,0x5e,0xd4,0xfe,0x56,0x81,0x9e,0x94,0xa1,0xf8,
- 0x0e,0x6a,0x10,0xfa,0xd9,0x2f,0xb1,0xbb,0x26,0x4d,0xad,0x13,0xa6,0xea,0x11,0x53,
- 0xd5,0x08,0xde,0x94,0x05,0xc7,0xde,0x82,0x8e,0x15,0x41,0xcb,0x72,0x46,0xd3,0x4a,
- 0x6c,0xd5,0x62,0x88,0x62,0x29,0xad,0x6e,0x79,0x56,0x6f,0xfc,0xdb,0x7b,0xc8,0xc6,
- 0xa7,0x83,0xa5,0x95,0xe5,0xa2,0x92,0xd2,0x73,0xe7,0x2f,0x1d,0x38,0x70,0xf8,0xf8,
- 0x89,0x0f,0x2f,0x5c,0x72,0x74,0xf3,0xf0,0x09,0xbc,0x11,0x12,0x1e,0x15,0x97,0x9c,
- 0x92,0x95,0x9d,0x93,0x97,0x5f,0x88,0x77,0xfb,0xab,0xaa,0xeb,0x6a,0x1b,0x5a,0x9a,
- 0x5a,0x3b,0x3b,0xba,0xfa,0xf0,0x91,0xcb,0x03,0x43,0xea,0xe1,0xd1,0xa1,0x91,0xb1,
- 0xd1,0xf1,0x69,0x72,0xc3,0xd5,0x2c,0xf9,0x53,0xef,0x2c,0xad,0xc5,0xf4,0x7b,0x24,
- 0xfa,0x1e,0x07,0xee,0x5b,0x68,0x7a,0x69,0x4a,0x5a,0xfa,0x0d,0x15,0xfd,0x76,0x48,
- 0x07,0x75,0x1c,0x6f,0xdc,0x9a,0x62,0xbe,0x2f,0x9d,0x9c,0x66,0xbe,0x01,0x26,0xdf,
- 0xbf,0xe1,0x97,0x4e,0x64,0x4a,0x3b,0x85,0x5d,0x1d,0x61,0xae,0xe1,0xbe,0x70,0xa3,
- 0x4c,0x38,0x9a,0x19,0xde,0x17,0x98,0xf8,0xcd,0xd5,0x34,0x25,0xd6,0x4c,0x9b,0xbf,
- 0x19,0xe6,0xbe,0xfe,0x62,0x66,0x27,0xa7,0xb4,0x2c,0x43,0x8d,0xf9,0xbb,0x47,0x86,
- 0x03,0xa3,0x1b,0x65,0xcb,0x8e,0x33,0xaa,0xb2,0xc0,0x17,0x4a,0x6f,0x08,0xa7,0xf7,
- 0xa1,0xd1,0xaf,0xdd,0x38,0x87,0x68,0xd8,0x85,0x16,0x7a,0xf2,0x95,0x9f,0x62,0x74,
- 0x63,0x74,0xe6,0xba,0xc0,0x61,0x92,0x51,0x83,0xea,0xc3,0xb7,0xe8,0xae,0xed,0xa5,
- 0xab,0xf8,0x7e,0xfe,0xab,0xd8,0x4b,0xbf,0xc6,0x64,0xbc,0xcd,0x19,0x4e,0x97,0x93,
- 0xaf,0x1f,0x75,0x9c,0xce,0x66,0xe2,0x69,0x8b,0x2e,0x6f,0x96,0xaf,0xa4,0x86,0x33,
- 0x81,0xcb,0x3d,0x2a,0x05,0xec,0x9d,0xb6,0x30,0x41,0xc3,0x7e,0x95,0x6a,0x56,0x9b,
- 0xfb,0xfb,0x05,0x97,0x4b,0xf4,0x85,0xce,0xb8,0x76,0xc6,0x92,0xd5,0x8c,0x96,0xfb,
- 0x66,0x95,0x67,0xbe,0xc5,0x2c,0x97,0x84,0x96,0x16,0x51,0xc7,0xf2,0xff,0x28,0x30,
- 0xcb,0x7e,0x83,0xcd,0xb4,0x2c,0x37,0x9e,0x3f,0x59,0x85,0xd9,0xbf,0x83,0x50,0x7d,
- 0xd0,0xcf,0xec,0xd6,0xa0,0x5f,0xed,0x92,0x54,0x99,0xd6,0xb2,0xb8,0x96,0x73,0x02,
- 0x31,0x87,0xd2,0x98,0x63,0xc4,0xdb,0x56,0xb3,0x6c,0x1c,0xcd,0x16,0xb1,0x5f,0x7a,
- 0xf3,0x36,0xdd,0x34,0x33,0x4b,0xf5,0x59,0x3b,0x0a,0x9c,0x9f,0xf9,0x19,0xc5,0xfd,
- 0x09,0x89,0xef,0x3a,0x3b,0x11,0x64,0xf3,0x47,0x43,0x53,0xd4,0x2a,0x3d,0x88,0x74,
- 0x6e,0x84,0xa6,0x10,0x9d,0xe2,0xb6,0x3f,0xfd,0x63,0x16,0xdf,0x03,0xda,0x29,0xed,
- 0xe2,0xe4,0xdc,0x2a,0x54,0x07,0xae,0x58,0x70,0x25,0xe3,0x1e,0x85,0x51,0xf6,0x3b,
- 0x64,0xab,0x0a,0xc8,0xef,0x5a,0xb5,0x76,0x69,0xec,0x76,0xd7,0x12,0x3a,0x3b,0x6f,
- 0x4d,0x43,0xbf,0x7f,0x06,0x18,0xd1,0x9a,0x06,0xb9,0xbf,0x2f,0x4f,0x9b,0x3a,0xa7,
- 0x4c,0x9d,0x93,0xf8,0x6d,0x73,0xed,0x30,0xb9,0xcf,0x6a,0xd0,0x54,0xd6,0x87,0x3f,
- 0x59,0xca,0x6e,0x5d,0x4e,0x6b,0x5a,0x8a,0xaf,0x5d,0x8e,0xac,0x5c,0x09,0x96,0x1b,
- 0xc4,0xed,0x10,0x97,0xbf,0x17,0x5f,0x6b,0x18,0x1d,0x9f,0x48,0x49,0xcd,0x3c,0x75,
- 0xfa,0xec,0xe1,0xc3,0xc7,0x4f,0x9d,0x3a,0x7b,0xd9,0xd1,0xd9,0xdd,0xd3,0x37,0xe0,
- 0x66,0x48,0x44,0x74,0x6c,0x52,0x4a,0x16,0x9c,0x85,0xc5,0xf9,0xa5,0x25,0xe5,0xb2,
- 0x72,0x45,0x65,0x55,0x4d,0x63,0x6d,0x63,0x6b,0x4b,0x5b,0x67,0x7b,0x67,0x77,0x67,
- 0xf7,0x60,0x4f,0xdf,0x20,0x79,0xf5,0xed,0xd8,0x80,0x7a,0x8c,0xb9,0x65,0x62,0x7c,
- 0x1a,0xb8,0x41,0x5d,0x1e,0x9f,0x9c,0x1e,0x1e,0xc7,0x3b,0xaf,0xc6,0x27,0xa7,0xc6,
- 0x27,0x26,0xe9,0x5d,0x58,0xb4,0x3b,0x32,0x3e,0x33,0x06,0xdd,0xc9,0xe9,0x89,0x49,
- 0x20,0x9b,0xe2,0x6e,0xd0,0x62,0x5a,0x1c,0xe4,0x60,0x8a,0x5d,0xb5,0x46,0x97,0xb2,
- 0x35,0x77,0x29,0x62,0x66,0x38,0x8e,0xf7,0x7d,0x31,0xb3,0x13,0xbc,0x59,0xfb,0xc4,
- 0x2c,0x2b,0xab,0x2e,0x23,0xd7,0xac,0x9b,0xb5,0x1a,0x63,0x13,0x40,0x3f,0xc3,0xd2,
- 0x98,0x6d,0x21,0xe6,0x4c,0x8d,0x5b,0x77,0xc9,0x2a,0x96,0xd8,0xaa,0xcb,0x90,0x59,
- 0xb2,0xb2,0x52,0x83,0xb3,0xe8,0xde,0xb0,0xd7,0x92,0x15,0x0c,0x8e,0xdd,0x95,0x5c,
- 0xa0,0x1f,0xb7,0x34,0x81,0x4d,0x24,0x72,0x53,0x1f,0x43,0x4c,0x54,0xb2,0xc9,0x9c,
- 0xdb,0xcb,0xe5,0xf9,0x99,0x2f,0xc8,0x26,0x21,0x3f,0x21,0xeb,0x26,0xcc,0x42,0xad,
- 0x2d,0xb2,0x0d,0x8a,0x55,0x7a,0xf3,0xb5,0xe2,0xbb,0x8e,0x1f,0x23,0x6b,0x7d,0x18,
- 0x86,0xbc,0x54,0xb1,0x09,0xe8,0x5a,0x31,0xb2,0xde,0x29,0x3c,0x4f,0xf2,0x77,0xe8,
- 0xed,0xf3,0xea,0x36,0x21,0x03,0xa1,0x63,0x96,0x5d,0x1a,0x94,0x91,0x89,0x35,0xf7,
- 0x2f,0xdf,0xcf,0x54,0x67,0x0c,0xeb,0x84,0x45,0x22,0x61,0x68,0x70,0xdc,0x42,0x67,
- 0xd6,0x04,0x5c,0x42,0x67,0xc7,0x26,0x26,0xc6,0x27,0xb5,0x43,0xd3,0xcb,0x50,0x17,
- 0x06,0x66,0xb1,0x40,0xd0,0x62,0x01,0x5d,0xda,0xde,0xbb,0x00,0xfa,0x0f,0xb0,0x08,
- 0x85,0x41,0x9e,0x81,0x74,0x96,0x6f,0xa9,0x5d,0x1a,0xdb,0xee,0xc0,0xac,0x79,0xfc,
- 0xf6,0xd2,0x29,0x31,0xff,0xd6,0xac,0xee,0x49,0x63,0x37,0xb9,0xc3,0x0a,0xca,0x2e,
- 0x9c,0x76,0x2b,0x87,0x4c,0x0a,0xb5,0xa9,0xb8,0xcf,0x54,0xd4,0x67,0xca,0xef,0x5c,
- 0x11,0xb6,0x2e,0xa6,0x36,0xad,0x26,0xd6,0x2e,0x86,0x57,0xae,0x86,0xc8,0x0d,0x69,
- 0x8d,0xab,0x6d,0xe3,0xa6,0xbf,0x7f,0xe7,0xbc,0x16,0x2c,0xaf,0xae,0x0c,0x0c,0xaa,
- 0x93,0x52,0x52,0x4f,0x9f,0x3e,0x0b,0x07,0xe1,0x8f,0x4e,0x9d,0xbd,0xe2,0xe4,0xec,
- 0xe6,0xe9,0x17,0x18,0x74,0x2b,0x22,0x2a,0x3e,0x21,0x29,0x2d,0x3d,0x4b,0x28,0x14,
- 0x49,0xf2,0x0b,0xa1,0x10,0xcb,0xcb,0xe5,0xd5,0xca,0xca,0x1a,0xa8,0xc5,0xf5,0xcd,
- 0x2d,0x8d,0xcd,0xed,0x2d,0x6d,0xdd,0x6d,0x1d,0x3d,0x5d,0x3d,0xfd,0x1d,0x5d,0xfd,
- 0xdc,0x3d,0xff,0xf8,0xeb,0x80,0x01,0xfc,0x69,0x40,0xdf,0xc0,0x70,0x6f,0xff,0x50,
- 0x6f,0xff,0x30,0x9c,0x9a,0x7b,0xf1,0x2d,0x48,0x88,0x90,0xdf,0x08,0x0f,0x93,0x29,
- 0xda,0x0e,0x71,0x2d,0x9d,0x22,0xef,0xb2,0x1f,0x66,0x89,0x87,0x78,0xc4,0x43,0x2c,
- 0x31,0x33,0x0b,0x22,0x80,0x98,0x2e,0xa7,0x08,0x8f,0x06,0x46,0xcc,0x6b,0x79,0x64,
- 0x8c,0x20,0x4b,0x86,0x43,0x54,0x31,0xbe,0x5c,0x4b,0x0d,0xad,0xbb,0x1c,0x4f,0x8a,
- 0xf3,0x75,0xb3,0x94,0x6b,0x26,0x66,0xc9,0xcc,0xfc,0x39,0x35,0x38,0xfe,0x36,0x5d,
- 0x86,0x6c,0x2d,0x7b,0x79,0x16,0x59,0x38,0x87,0xb6,0x24,0x04,0x56,0xd2,0xb9,0xa0,
- 0x20,0xc2,0x99,0xf0,0x45,0xda,0xcb,0x59,0x3a,0xc4,0x6b,0xed,0x08,0xb2,0x55,0x83,
- 0xe5,0x3c,0xc4,0x33,0x6a,0x88,0xeb,0x72,0x89,0xc4,0x85,0x98,0xd7,0xe5,0xb3,0xb2,
- 0x23,0x97,0x70,0xe6,0x54,0x1d,0xb2,0xa4,0x19,0xe2,0x99,0x69,0x27,0xeb,0x6c,0xfd,
- 0x6c,0xcf,0xc3,0x76,0x12,0x18,0x04,0xf1,0x73,0x80,0x8b,0xaf,0x8d,0x37,0x86,0x2c,
- 0xd7,0x0e,0xf1,0xad,0xb8,0x4d,0x02,0xf3,0x77,0x0a,0xd9,0x47,0x7c,0x65,0xac,0xcc,
- 0xb7,0xe3,0x7c,0x8e,0x33,0x9d,0x5d,0x8b,0x33,0xd7,0x5d,0x2b,0x55,0xac,0x9d,0xc3,
- 0x9b,0xb5,0xb1,0x97,0xa6,0x28,0xa7,0xc0,0xf0,0x5a,0x9b,0x9d,0x6e,0x0d,0x7e,0x76,
- 0xd1,0xc1,0x9e,0x81,0xc1,0xde,0x41,0x75,0x8f,0x7a,0xbc,0x6b,0xd4,0xd0,0x31,0xb6,
- 0xd2,0x3e,0x61,0x6a,0x9b,0xc0,0xfb,0x6f,0x01,0x9a,0xc7,0x19,0xe4,0x9e,0x80,0x76,
- 0x0a,0x13,0x46,0x80,0x8e,0x09,0xbc,0x7f,0xa9,0x75,0x02,0x8f,0x96,0x1d,0x93,0x68,
- 0x11,0xd8,0x02,0x78,0xf3,0x98,0xb1,0x6b,0x7c,0x15,0xc7,0x81,0x60,0xc2,0x04,0x64,
- 0x6d,0xe3,0xc6,0xe6,0x09,0x3c,0x7e,0xb6,0x4d,0x18,0xbb,0xc8,0x20,0x10,0x77,0x10,
- 0x3e,0x2d,0x63,0xc6,0xd6,0x71,0xec,0xb6,0x8f,0x1b,0x81,0xb3,0x55,0xb7,0x71,0x0c,
- 0xc5,0x35,0x13,0xce,0xd4,0x51,0xb4,0x6d,0xa3,0x6b,0x27,0x98,0xd9,0x16,0x02,0x30,
- 0x05,0xf4,0x8d,0xe3,0xcc,0x8f,0x95,0x00,0xe0,0xa8,0xab,0x52,0xe3,0x9f,0x77,0xcb,
- 0xfa,0x4c,0x25,0xbd,0xa6,0xfc,0x6e,0x93,0xa4,0xd3,0x98,0xdd,0xbe,0x9a,0xd1,0xbc,
- 0x18,0x57,0x63,0x8c,0xae,0xc6,0x07,0x78,0x06,0xcb,0x17,0x53,0xea,0x57,0x41,0xd5,
- 0xbf,0xe1,0x67,0x5b,0x7d,0xae,0x55,0x78,0xb5,0xad,0xa3,0x23,0x2c,0x22,0xf2,0xf8,
- 0xf1,0x93,0x50,0x85,0x4f,0x9d,0x3e,0xef,0x70,0xc5,0xd9,0xd5,0xdd,0xc7,0xd7,0x3f,
- 0x38,0x34,0x2c,0x3a,0x3a,0x36,0x39,0x29,0x25,0x23,0x23,0x2b,0x27,0x27,0xb7,0x20,
- 0x2f,0xbf,0xa8,0xb0,0x44,0x51,0x2a,0x55,0x28,0x94,0x55,0x0a,0x55,0x8d,0xb2,0xaa,
- 0xa1,0xaa,0xa6,0xa1,0xae,0xa1,0xb1,0xb6,0xbe,0xb5,0x81,0xf9,0x8d,0x3c,0x3e,0x67,
- 0x03,0x00,0x10,0xf2,0xcc,0x0d,0x6c,0x29,0xde,0xd4,0xda,0xd6,0x44,0x1e,0xc4,0xc1,
- 0x01,0xd7,0x05,0x32,0x8a,0x43,0x8b,0xc0,0x22,0x1c,0x07,0x8e,0xc0,0xee,0x72,0x8e,
- 0x92,0xcf,0xc4,0x8a,0x8c,0xe1,0xcc,0xe2,0x94,0x98,0xbf,0x84,0x23,0xb6,0x56,0xc6,
- 0x9e,0x5c,0xfe,0xaa,0x3b,0x91,0x6b,0x6b,0x02,0x15,0xc4,0x67,0x68,0xa5,0xe1,0x5a,
- 0x0c,0x6d,0x67,0x39,0x56,0x4d,0xad,0x8c,0xeb,0x6e,0xa3,0x2d,0x9f,0x89,0x5d,0xfd,
- 0x3f,0x2f,0x7b,0x9b,0xed,0x69,0x62,0x35,0xc8,0x0f,0x37,0x63,0x82,0x8d,0xd3,0xac,
- 0x42,0x6c,0xe1,0x40,0x7b,0x6a,0xd8,0x8a,0xb0,0x6b,0xf5,0x6d,0x54,0xb2,0x52,0x8f,
- 0x6f,0x2f,0x5f,0xc9,0xdb,0xbb,0x71,0x2d,0x32,0xbb,0xb1,0xb0,0x82,0x46,0x4a,0xdc,
- 0x86,0x48,0x4b,0x9b,0x59,0xa8,0x55,0x86,0xf0,0xb7,0x8f,0xad,0x73,0xd6,0x8a,0x91,
- 0xfd,0xe5,0x6d,0x4c,0x97,0x8a,0xb3,0x4e,0x54,0xa2,0x86,0xdd,0xdc,0xe0,0x13,0xdb,
- 0xa6,0xae,0x15,0x6e,0xab,0x4c,0x23,0xdb,0xa5,0xfc,0x41,0x0d,0x8e,0xa7,0x99,0x5b,
- 0x9b,0x05,0xe7,0xe6,0xd6,0xf6,0xa6,0x96,0xb6,0xa6,0xe6,0xe6,0xe6,0xb6,0x9e,0x9a,
- 0xee,0xa9,0xea,0x81,0xc5,0x8a,0x61,0x7c,0x04,0x84,0x52,0xcd,0x3c,0x70,0x09,0x00,
- 0xba,0x1c,0x7e,0xaf,0x40,0x85,0x9a,0xc0,0x90,0x59,0xf9,0x4a,0x82,0x57,0x0e,0x23,
- 0xa8,0x08,0xa2,0x02,0x4b,0x87,0xd1,0x52,0x6a,0x2f,0x52,0xaa,0x99,0x11,0x95,0xda,
- 0xec,0x04,0xca,0x04,0x81,0xc7,0xd3,0x6e,0x97,0x32,0xa7,0x08,0x9d,0xb5,0xf5,0x9e,
- 0x9c,0xf7,0xb0,0x8e,0xc2,0x5e,0x53,0x41,0x8f,0x51,0xd2,0xb9,0x22,0xee,0x5c,0x16,
- 0x75,0x9a,0x04,0x6d,0x8b,0xe9,0x4d,0xab,0xe9,0xcd,0xcb,0xd1,0x55,0xc6,0xb0,0x8a,
- 0xd5,0x9b,0x8a,0xe5,0x80,0xf2,0xa5,0xe8,0xaa,0xe5,0xda,0xe1,0x55,0xed,0xd2,0x97,
- 0x5f,0xd7,0xee,0x2d,0x58,0x35,0x19,0x7b,0xfa,0xfa,0x6f,0x86,0x46,0x9d,0x3a,0x73,
- 0xf6,0xe8,0xb1,0x13,0x1f,0x7c,0x78,0xfa,0xec,0xf9,0x4b,0x8e,0x57,0x5d,0xdc,0xdc,
- 0xbd,0xfc,0xfc,0x6f,0xdc,0x08,0x8e,0x08,0x8f,0x88,0x8f,0x8d,0x4b,0x4d,0x4c,0x4e,
- 0x4d,0xcb,0x10,0x66,0x0a,0xa0,0x1c,0xe7,0xe7,0x89,0x0b,0xa1,0x22,0xe7,0x17,0x96,
- 0x17,0x95,0x94,0x17,0x15,0x4b,0x8b,0x4b,0x65,0xa5,0xe5,0xf2,0x92,0x72,0x7c,0xe6,
- 0x9b,0x54,0x5e,0x09,0x08,0x79,0x36,0x5d,0x45,0xb9,0xac,0x82,0x3c,0x50,0xae,0x82,
- 0x3c,0x7e,0xb0,0xb2,0x48,0x56,0x55,0x26,0x83,0x22,0x5e,0x49,0x1f,0xe8,0xc7,0x01,
- 0x79,0x92,0x5e,0x15,0x25,0xa6,0x80,0xcf,0x7e,0x54,0x30,0xdd,0x62,0x39,0xae,0x2a,
- 0x97,0x57,0x90,0x07,0xf7,0x29,0x99,0x59,0x96,0x98,0x63,0x55,0xce,0x4c,0xa9,0x40,
- 0x10,0xed,0xd2,0x67,0xd0,0xf1,0x78,0xaa,0xca,0xe5,0x4a,0x0b,0x11,0x0c,0x30,0x4b,
- 0x6c,0x39,0xf3,0xbb,0xbc,0x25,0x4a,0xbe,0x5c,0x46,0x96,0x25,0x13,0xfa,0x90,0x49,
- 0xfe,0x2a,0xb0,0xda,0xac,0x24,0x3e,0x3d,0xaf,0x82,0xd1,0x4d,0x51,0xc9,0x29,0x09,
- 0xb3,0x68,0x2c,0x4f,0xee,0x27,0xdb,0x2b,0x37,0xaf,0xfd,0x5f,0x63,0x2f,0xfb,0x6c,
- 0x40,0x5b,0xb9,0x72,0x3b,0x72,0x19,0x13,0x14,0xf6,0xd6,0x2a,0xac,0x56,0x29,0x2d,
- 0xe3,0x6b,0x23,0xd7,0xc6,0x5e,0x4e,0x73,0x1b,0xd3,0x78,0x82,0x14,0xe6,0xb5,0xe8,
- 0x70,0x85,0xa5,0x7a,0x76,0xfc,0x4c,0xe4,0x5a,0xfa,0xb0,0xa4,0x9c,0x51,0x95,0x3c,
- 0xb6,0x54,0x69,0x35,0x6b,0xdf,0xb1,0x72,0xa5,0xd4,0xc6,0x1b,0x56,0xf1,0xa5,0x4f,
- 0x86,0xbc,0x4d,0x5e,0x59,0x38,0xc7,0x5e,0x32,0xd8,0x71,0xbb,0xc2,0x4e,0xb8,0xd7,
- 0xda,0x47,0xb6,0x26,0x58,0xf9,0x93,0xcb,0x90,0xb5,0x92,0xd0,0x2a,0x16,0x64,0x84,
- 0x6e,0xf6,0x2a,0x62,0x91,0x1c,0xa2,0xcc,0xe7,0x59,0x2a,0xad,0xe2,0xb2,0x85,0x8c,
- 0x57,0x91,0xe8,0x80,0x3e,0x55,0xa5,0x95,0xcd,0x65,0x0d,0x23,0x85,0xad,0x1a,0x49,
- 0x97,0xb1,0xa0,0xcb,0x28,0xea,0x34,0x72,0x0f,0x45,0xbc,0xa7,0x81,0x7d,0xba,0xa3,
- 0xd9,0x22,0x49,0x17,0xf3,0xf4,0x48,0x2b,0xca,0x7c,0x7c,0x26,0xe4,0x2a,0xcc,0xe6,
- 0x92,0x55,0xd6,0x4f,0x98,0xbc,0x6d,0x57,0x44,0x9e,0xb4,0x89,0x8f,0x94,0xec,0x34,
- 0x8a,0xbb,0x8d,0xf9,0x5d,0xab,0x00,0xb9,0xac,0x08,0x60,0xcb,0x4a,0x41,0x35,0x72,
- 0x3a,0x80,0xbf,0x51,0x88,0x4f,0x6c,0x36,0x65,0xb5,0xac,0x66,0x35,0x9b,0x32,0x9b,
- 0x4d,0xe9,0xcd,0xa6,0xe4,0x7a,0x7c,0x93,0x6f,0x78,0xe5,0x6a,0xa8,0x72,0x25,0x48,
- 0xba,0xe4,0x5f,0xbe,0xe8,0x57,0xb6,0x18,0x5b,0xb9,0x5c,0x39,0x68,0x9c,0xff,0xfb,
- 0x99,0xf7,0x33,0xc0,0xdc,0xc2,0x42,0xdf,0x40,0x7f,0x7e,0x41,0x61,0xd0,0x8d,0xe0,
- 0xcb,0x0e,0x8e,0xa7,0x3f,0x3e,0xf7,0xf1,0xb9,0x4b,0x17,0xc8,0x2b,0x41,0xdd,0xdc,
- 0x7d,0x7c,0x7c,0x03,0xfd,0x82,0x6e,0xdd,0x0a,0x8b,0x0c,0x8f,0x8a,0x8b,0x8c,0x4e,
- 0x8c,0x4b,0x48,0x89,0x4f,0x4c,0x4d,0x4c,0xc9,0x4a,0x4d,0xcf,0x4a,0xcb,0xc8,0x86,
- 0x33,0x72,0x66,0x36,0x40,0x2e,0x00,0x79,0x01,0x41,0x5e,0xb6,0x40,0x9c,0x95,0x4d,
- 0x10,0xa1,0x18,0x71,0x82,0x64,0x64,0xe3,0x3b,0x11,0xe8,0x43,0xef,0xcd,0xef,0x1d,
- 0xc0,0x07,0xb0,0xe7,0xe2,0x5b,0x06,0xc8,0xd3,0xdd,0x81,0x98,0x79,0x40,0xbd,0x90,
- 0x79,0x79,0x41,0xa6,0x50,0x42,0x97,0x73,0xb3,0x54,0x04,0xf3,0x8a,0x04,0x91,0x65,
- 0x9b,0x83,0xa2,0x29,0xe7,0x2c,0x21,0x90,0xe5,0x66,0x33,0x6f,0x52,0xa0,0x2f,0x62,
- 0xc8,0xb3,0xec,0x9a,0x75,0x33,0x3f,0xfa,0x5e,0x68,0x7e,0x4d,0x40,0x96,0x9d,0x59,
- 0xf3,0x2b,0x15,0xe8,0x38,0xdb,0xcd,0xe5,0xba,0x40,0x46,0xcc,0xb4,0x94,0x2b,0x10,
- 0x33,0x80,0xfa,0xe7,0x92,0x87,0xe7,0xb3,0x83,0x64,0x2d,0xd5,0x39,0x43,0x28,0xc9,
- 0x66,0x38,0xf0,0xe9,0xad,0xed,0x35,0xc3,0x6d,0xed,0x35,0x2b,0xcf,0x30,0xf9,0x02,
- 0xed,0xe5,0x1e,0xb9,0x4f,0x1e,0xb6,0x6f,0x21,0x97,0xfa,0x99,0x89,0xaf,0x90,0x0a,
- 0x62,0x63,0x4d,0x25,0x0a,0x2c,0x7d,0xc5,0x99,0x29,0xb0,0x8d,0x6f,0xae,0xb9,0x9b,
- 0x23,0xe6,0xe4,0x72,0x06,0x62,0x57,0x40,0xa7,0xc4,0xf6,0xa3,0xc0,0x2d,0x64,0x15,
- 0xa0,0x3a,0x98,0x63,0x24,0xb4,0xb5,0x08,0x53,0x94,0x7b,0x1f,0x01,0xe5,0xcc,0x7b,
- 0xc5,0x00,0x25,0x96,0x70,0x1c,0x98,0x74,0x15,0x31,0x6b,0xa9,0x62,0x36,0xb1,0x60,
- 0x94,0xc9,0xce,0x61,0xa5,0x0b,0x59,0xe5,0xd7,0x90,0x7b,0x1b,0x3f,0x9b,0x83,0xc2,
- 0x86,0x29,0xdb,0x9c,0x84,0x16,0x6e,0xe7,0xf2,0xca,0xdc,0x15,0xb2,0xbe,0xe5,0x98,
- 0x8b,0xcc,0xf1,0xe5,0xbc,0x61,0xc5,0x0a,0x45,0xe7,0x98,0x23,0x6b,0x2d,0x57,0xc0,
- 0x99,0x9f,0xc7,0x4f,0x24,0x22,0x94,0x4d,0x7e,0xa1,0x84,0xe5,0x2f,0xc9,0x84,0x4f,
- 0x00,0x58,0x48,0xe8,0x33,0x61,0x4a,0x04,0x78,0x5e,0x16,0xb3,0x17,0x0a,0x04,0xb9,
- 0x25,0x59,0xc5,0xb5,0xd9,0xca,0x81,0x94,0x6a,0x5d,0x5a,0xe3,0x62,0x5a,0xe3,0x6a,
- 0x42,0xbd,0x31,0xb1,0xde,0x98,0xd6,0xb8,0x9c,0xd2,0xb0,0x9a,0xdc,0xb0,0x9a,0xda,
- 0xb8,0x92,0xd6,0xb4,0x0c,0x90,0xdc,0xb8,0x9a,0xdc,0x78,0x8f,0x75,0x53,0x1a,0x4d,
- 0xd4,0x84,0x8c,0x66,0x98,0x32,0xe2,0x20,0x79,0xf7,0x41,0x42,0x1d,0xe0,0x46,0x98,
- 0x02,0x1b,0x53,0x9b,0x4c,0xa9,0x8d,0x40,0x6c,0x24,0xaf,0x48,0x58,0x4d,0x69,0x5c,
- 0x49,0x20,0x2f,0xb2,0xe7,0xde,0xad,0x60,0x17,0xe2,0xe9,0x1b,0x25,0x58,0x84,0xfa,
- 0x2a,0x05,0xe5,0x1a,0x13,0xf1,0x35,0x0a,0xe0,0xc6,0xd5,0xc4,0x06,0xee,0x75,0x0c,
- 0x46,0xde,0x7b,0x19,0x8c,0x74,0x49,0x5c,0x8d,0x31,0xb6,0xc6,0x18,0x55,0x49,0x5e,
- 0xc9,0xa4,0x5c,0x81,0x73,0x6e,0xa0,0x6c,0xe9,0x86,0x6c,0xc9,0xab,0x74,0xe1,0xa6,
- 0x6c,0x11,0x0e,0xbc,0xf9,0x9d,0xab,0x9d,0xe3,0x46,0xcd,0xa2,0x69,0xf5,0xef,0x37,
- 0x59,0x7d,0x4e,0xb0,0xb2,0x6a,0x1c,0x9f,0x9c,0x50,0x55,0x55,0x25,0x24,0xa5,0x5c,
- 0x77,0x71,0xfb,0xe0,0xd4,0xc7,0x1f,0x9d,0xfe,0xf8,0xcc,0xd9,0x0b,0x17,0x2e,0x3b,
- 0x39,0x5d,0x75,0x76,0x76,0x71,0x77,0xf3,0xf4,0xf6,0xf2,0x0d,0xf4,0xf5,0x0b,0xf2,
- 0x0b,0x0c,0x09,0xb8,0x11,0x7a,0xe3,0x66,0xc4,0xcd,0x5b,0x11,0xb7,0xc2,0x22,0x42,
- 0xc2,0xa2,0x00,0xc2,0xc2,0xa3,0x43,0xc3,0xa2,0x42,0x23,0xa2,0x23,0x22,0xe3,0xc2,
- 0x23,0x62,0x22,0x22,0x63,0xa1,0x0d,0x8f,0x88,0x85,0x2e,0x81,0xd8,0xd0,0xb0,0x18,
- 0x32,0x15,0x4b,0x06,0x63,0x09,0x1e,0xcd,0xcd,0x92,0xc1,0x78,0xfe,0x2c,0x25,0x86,
- 0x41,0x7b,0xb3,0xf1,0x7c,0xce,0x1c,0xf1,0x6d,0x66,0xef,0x5c,0x10,0x47,0x60,0xbb,
- 0xf6,0xf6,0x82,0xd8,0xf1,0xbb,0x22,0x8e,0xff,0x1b,0xb3,0xf7,0x6e,0x03,0x6a,0xa9,
- 0x86,0x7d,0xce,0x6b,0x39,0xf6,0xae,0x7c,0xb5,0x06,0x31,0xdf,0xc0,0xf8,0xbb,0x95,
- 0x6b,0x4b,0x1c,0x1e,0x19,0x17,0x46,0x92,0x9f,0xb3,0xee,0x0e,0x1c,0xfb,0x09,0x72,
- 0xef,0x2a,0xaf,0xc2,0x22,0xe2,0x42,0x23,0xec,0x08,0xb2,0xab,0x33,0x3b,0x1b,0x7d,
- 0x5b,0xb9,0xf1,0x76,0x05,0x59,0x11,0x53,0xb9,0x36,0x8e,0x8d,0x5e,0x83,0x15,0xce,
- 0x86,0x46,0xc4,0xdc,0x8a,0x48,0x00,0x1a,0x68,0x43,0xc3,0xa2,0x43,0x22,0x92,0x42,
- 0xc3,0x63,0xc3,0x62,0x92,0x42,0x12,0x44,0xe1,0x69,0xc5,0xa1,0x79,0x6d,0x61,0xc5,
- 0x63,0x41,0xb2,0xe5,0x60,0x19,0xf3,0x46,0x3c,0x2c,0x01,0xe4,0xed,0x78,0x30,0x12,
- 0xac,0x5c,0x09,0xb6,0xf7,0x9a,0xbc,0x7b,0x05,0xa8,0x09,0x37,0x88,0x69,0x60,0xc8,
- 0x4d,0x39,0x8b,0xc0,0xa0,0x7c,0x39,0x48,0xbe,0x0c,0x23,0xc1,0x04,0xbf,0xa1,0x40,
- 0xb0,0xea,0x32,0x1c,0xe4,0x3c,0x6e,0x0a,0x9c,0xa5,0xbe,0x0a,0xb2,0x44,0x60,0x21,
- 0x2c,0xc7,0x59,0xa0,0x84,0xd3,0xab,0x8c,0xe1,0x40,0x17,0x9a,0xb5,0x92,0xaf,0x00,
- 0x43,0x7f,0xe9,0x12,0x10,0xf8,0x94,0x2d,0x7a,0x95,0x2d,0x7a,0x96,0x2d,0x7a,0x94,
- 0x2e,0xba,0x15,0x2d,0xba,0x15,0x2e,0xf8,0x49,0x17,0x12,0x6a,0x96,0x2a,0xfa,0x57,
- 0xfb,0x66,0x4d,0x0b,0xab,0x5f,0x7e,0xb5,0xfa,0x1b,0x86,0xe5,0xd5,0x65,0x8d,0x4e,
- 0xd3,0xde,0xd9,0x25,0xcc,0x15,0x87,0x47,0x46,0x07,0xde,0x08,0xf1,0xf1,0x0d,0x70,
- 0xf5,0xf4,0x71,0x71,0xf5,0x80,0x43,0xb1,0xa3,0x93,0xb3,0xe3,0x55,0x17,0x07,0x47,
- 0x67,0x47,0xa7,0xeb,0x8e,0x57,0xaf,0x3b,0x39,0xbb,0x39,0x5d,0x73,0x83,0xea,0xec,
- 0xec,0xe2,0x01,0xed,0x35,0x44,0x3c,0x5d,0x5c,0xbd,0x00,0xdc,0xdc,0xa1,0xf5,0x86,
- 0x71,0x82,0x78,0x5d,0x77,0xf3,0xba,0xee,0xea,0x8d,0xad,0x9b,0x97,0x8b,0x9b,0xf7,
- 0x75,0xa4,0xf1,0x26,0x94,0x64,0xd0,0x95,0x01,0xda,0x75,0x25,0x70,0xdd,0xd5,0xf3,
- 0x3a,0x70,0x73,0x23,0x04,0x2e,0x1e,0x74,0x21,0xb2,0x72,0x71,0xbf,0xee,0xea,0x65,
- 0xdd,0x45,0xf0,0x66,0x45,0x7b,0x62,0x97,0x2e,0x21,0x83,0xce,0x48,0xc3,0xcc,0x5e,
- 0x77,0xf5,0xc0,0x41,0x10,0xe1,0xce,0xa8,0x01,0x4a,0x12,0x04,0x18,0x52,0x3e,0x9e,
- 0xae,0x6e,0x8c,0x5c,0xe7,0xcf,0x26,0xd7,0xc5,0x8d,0xb1,0xc8,0xc5,0xd5,0x9d,0x32,
- 0xbf,0x43,0xb9,0xd7,0x19,0xbf,0x51,0xdc,0xdd,0x85,0x95,0x6b,0xee,0xf2,0x5c,0x87,
- 0x72,0xc9,0x12,0x32,0x4e,0x99,0xbb,0xbb,0xba,0x71,0x8e,0xfd,0xa2,0xec,0x75,0x71,
- 0xfd,0x04,0xb9,0x34,0xe2,0x5c,0xb8,0xa9,0x5c,0x1a,0x5f,0x17,0x92,0x09,0x9c,0x38,
- 0x3a,0xce,0x00,0x95,0x62,0x99,0x2a,0x9c,0xbd,0x44,0x84,0xb5,0xaf,0x78,0xde,0x70,
- 0x67,0x4c,0xe3,0x19,0x0e,0x59,0x04,0xf4,0x8c,0x14,0xea,0x58,0x1b,0x41,0x98,0x6c,
- 0x40,0x63,0x93,0xa2,0x36,0x72,0xcd,0xa9,0x68,0xab,0xa4,0x2b,0x26,0xc0,0x9a,0x4a,
- 0x5a,0x07,0xd4,0x95,0xe1,0xe6,0xc2,0x7a,0xcc,0x85,0xe7,0xae,0xdb,0xfb,0xd9,0x6e,
- 0x50,0xe8,0x46,0xb3,0x4d,0x42,0xda,0x75,0x75,0x47,0xc4,0x95,0x65,0xee,0xea,0xe6,
- 0x41,0x23,0x65,0xb9,0x07,0x3d,0xaf,0xd3,0x9d,0xeb,0xc6,0x68,0x62,0xb3,0x71,0xac,
- 0x37,0xac,0xb5,0x5c,0x57,0xf3,0x5a,0x7e,0xd7,0xcd,0xc3,0xcb,0xd9,0x95,0x38,0x07,
- 0x63,0x01,0xa9,0xe8,0xe3,0xe2,0xe6,0x79,0xdd,0x3d,0xc0,0xc5,0xeb,0x96,0x8b,0x5f,
- 0xe4,0xb5,0xa0,0x44,0xd7,0x30,0x91,0x7b,0xac,0xea,0x6a,0x5a,0x9f,0xa3,0x60,0xfc,
- 0x9a,0x58,0xe7,0x24,0x99,0x77,0x2e,0x30,0x38,0x89,0x11,0x1c,0xc5,0x0c,0x82,0x78,
- 0x1e,0x82,0x93,0xf8,0xde,0x06,0x6a,0x82,0x5d,0x43,0xae,0x4a,0x10,0xac,0x06,0x9d,
- 0xf3,0xe7,0x6c,0x29,0x9d,0x25,0x0b,0x9f,0x88,0xd8,0x8a,0xb8,0x96,0x4f,0x10,0x22,
- 0xc2,0x21,0xd7,0xe0,0x5a,0x60,0x1e,0x77,0x29,0x5c,0xf0,0x2a,0x32,0xf8,0x96,0x2c,
- 0x04,0x4a,0x17,0x6f,0xc9,0x17,0xa2,0xaa,0x16,0x13,0xaa,0x96,0xb2,0x9b,0x56,0x6a,
- 0x87,0x8d,0xd3,0xf3,0x46,0xc3,0xaa,0xe9,0xef,0x3f,0x29,0xfa,0x2b,0xc3,0xca,0xea,
- 0x8a,0x61,0x71,0x49,0xa3,0xd3,0x4e,0x4c,0x4d,0x0d,0x0e,0xa9,0xbb,0x7a,0xba,0x9b,
- 0x9a,0xdb,0x55,0x15,0x15,0x85,0xc5,0xa5,0xb9,0xe2,0xfc,0x3c,0x09,0x03,0xe2,0xfc,
- 0x42,0x84,0x82,0x02,0x49,0x41,0x31,0x74,0x25,0x05,0x85,0x00,0xe2,0x7c,0xe8,0x16,
- 0xe5,0x49,0x0a,0xfe,0x5f,0x7b,0x75,0xd0,0xda,0x36,0x0c,0x05,0x00,0xf8,0xff,0xff,
- 0x9d,0xb6,0x89,0x65,0x99,0x30,0x56,0x76,0x18,0x8c,0x41,0x21,0xb1,0xc7,0x0e,0xa3,
- 0xb0,0xc3,0x60,0x3b,0xb4,0x30,0x36,0x12,0xb7,0x39,0x4c,0xb6,0xec,0xd4,0x49,0x9b,
- 0xac,0x2b,0xec,0xb0,0xf1,0xc1,0x87,0x78,0xcf,0x96,0xf4,0x9e,0x8c,0x42,0xe6,0xa1,
- 0xea,0xd2,0xb2,0x0b,0xba,0xb1,0x9b,0x56,0xe5,0xb7,0xc3,0xcc,0x9d,0xfe,0xe1,0xbc,
- 0x7f,0xd8,0xab,0xc6,0x27,0x0f,0xe3,0x64,0xfe,0x41,0x1a,0xc7,0x85,0xd5,0x64,0x61,
- 0x9c,0x96,0x18,0xf6,0xcc,0x0b,0x63,0xdf,0x4f,0xd8,0x6f,0x26,0xe6,0x69,0x0f,0x75,
- 0x73,0xcf,0x2f,0xae,0x9b,0xaa,0x4c,0xd2,0x45,0xf7,0xf6,0x79,0x75,0x9f,0x3a,0x42,
- 0x5a,0x3b,0x49,0xc3,0x70,0xae,0xa1,0xee,0x7e,0x57,0xbb,0x53,0xe7,0x93,0xfe,0xc5,
- 0xf3,0x9e,0xac,0xbb,0xdb,0x6d,0x5a,0x77,0x3e,0xf6,0x3f,0x96,0x1b,0xda,0xc8,0x77,
- 0x63,0xd8,0x27,0x2e,0x0e,0xae,0xca,0x6f,0xee,0xc6,0xee,0x6d,0x7c,0x5e,0x1b,0xf1,
- 0x78,0xa1,0x93,0x75,0x0f,0x0a,0xbd,0xb0,0xc9,0xa7,0xee,0xe4,0xa3,0x9d,0x4f,0x7d,
- 0xe7,0x3f,0xbb,0xfc,0x63,0x9a,0x82,0xd0,0x5f,0xa1,0xfd,0xdf,0xc2,0xfe,0x45,0x0a,
- 0xe5,0x5e,0xcf,0x47,0x26,0x1f,0xab,0x7b,0x70,0xde,0xe9,0x27,0x9d,0x85,0xd0,0xf7,
- 0x50,0x85,0xf8,0xaa,0x5a,0x5c,0xc6,0xd7,0xef,0xc2,0x65,0x1d,0xdf,0x5e,0x97,0xef,
- 0xbf,0xce,0xae,0x6e,0x8b,0xe5,0x8f,0x62,0xb5,0x2e,0x9a,0x76,0x5e,0xb7,0x65,0xbd,
- 0x99,0x37,0x6d,0xfc,0xd0,0x05,0x5d,0x5c,0xb7,0x29,0xcd,0xf1,0x2c,0x8d,0xcd,0x26,
- 0xc7,0x65,0x8e,0xff,0xcd,0x34,0x9f,0xa8,0x48,0x67,0x4c,0xc1,0xa3,0xf4,0x60,0xf2,
- 0xc5,0x6a,0x7d,0xd1,0x7f,0x96,0x21,0xad,0xdb,0x62,0xd5,0x8d,0xf9,0xe1,0xf9,0x18,
- 0x9c,0xad,0xfa,0xa0,0xe9,0x82,0x59,0xdd,0x86,0x26,0x8d,0xc3,0xce,0x39,0x0d,0xcb,
- 0xf5,0x59,0x5a,0xdb,0xb4,0xe7,0xcb,0x4d,0x1a,0xfb,0x1d,0xd2,0x3e,0x9b,0xf4,0xa9,
- 0xdf,0x7c,0x6a,0xaf,0x3e,0xdf,0x7d,0xfc,0x76,0x7f,0x7d,0xb3,0xfd,0xf2,0x7d,0x7b,
- 0xfb,0xf3,0x7e,0x7d,0xb7,0x4d,0xb6,0xfe,0x73,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0x6b,0xbf,0x00,0xff,0xcf,0xfd,0x4c,0x36,0x10,0x0e,
- 0x00,
diff --git a/board/esd/hh405/u-boot.lds b/board/esd/hh405/u-boot.lds
deleted file mode 100644
index f7a20d1da2..0000000000
--- a/board/esd/hh405/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/hub405/Makefile b/board/esd/hub405/Makefile
deleted file mode 100644
index 4d75868ea8..0000000000
--- a/board/esd/hub405/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/hub405/config.mk b/board/esd/hub405/config.mk
deleted file mode 100644
index a6d31aad2b..0000000000
--- a/board/esd/hub405/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# esd HUB405 boards
-#
-
-TEXT_BASE = 0xFFFC0000
diff --git a/board/esd/hub405/flash.c b/board/esd/hub405/flash.c
deleted file mode 100644
index 89af1190a8..0000000000
--- a/board/esd/hub405/flash.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- switch (size_b0) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/hub405/hub405.c b/board/esd/hub405/hub405.c
deleted file mode 100644
index 1e0accbe0e..0000000000
--- a/board/esd/hub405/hub405.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern void lxt971_no_sleep(void);
-
-int board_revision(void)
-{
- unsigned long osrl_reg;
- unsigned long isr1l_reg;
- unsigned long tcr_reg;
- unsigned long value;
-
- /*
- * Get version of HUB405 board from GPIO's
- */
-
- /*
- * Setup GPIO pin(s) (IRQ6/GPIO23)
- */
- osrl_reg = in32(GPIO0_OSRH);
- isr1l_reg = in32(GPIO0_ISR1H);
- tcr_reg = in32(GPIO0_TCR);
- out32(GPIO0_OSRH, osrl_reg & ~0x00030000); /* output select */
- out32(GPIO0_ISR1H, isr1l_reg | 0x00030000); /* input select */
- out32(GPIO0_TCR, tcr_reg & ~0x00000100); /* select input */
-
- udelay(1000); /* wait some time before reading input */
- value = in32(GPIO0_IR) & 0x00000100; /* get config bits */
-
- /*
- * Restore GPIO settings
- */
- out32(GPIO0_OSRH, osrl_reg); /* output select */
- out32(GPIO0_ISR1H, isr1l_reg); /* input select */
- out32(GPIO0_TCR, tcr_reg); /* enable output driver for outputs */
-
- if (value & 0x00000100) {
- /* Revision 1.1 or 1.2 detected */
- return 1;
- }
-
- /* Revision 1.0 */
- return 0;
-}
-
-
-int board_early_init_f (void)
-{
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF9F); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-
- return 0;
-}
-
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- volatile unsigned char *duart0_mcr = (unsigned char *)((ulong)DUART0_BA + 4);
- volatile unsigned char *duart1_mcr = (unsigned char *)((ulong)DUART1_BA + 4);
- volatile unsigned char *duart2_mcr = (unsigned char *)((ulong)DUART2_BA + 4);
- volatile unsigned char *duart3_mcr = (unsigned char *)((ulong)DUART3_BA + 4);
- volatile unsigned char *led_reg = (unsigned char *)((ulong)DUART0_BA + 0x20);
- unsigned long val;
- int delay, flashcnt;
- char *str;
- char hw_rev[4];
-
- /*
- * Enable interrupts in exar duart mcr[3]
- */
- *duart0_mcr = 0x08;
- *duart1_mcr = 0x08;
- *duart2_mcr = 0x08;
- *duart3_mcr = 0x08;
-
- /*
- * Set RS232/RS422 control (RS232 = high on GPIO)
- */
- val = in32(GPIO0_OR);
- val &= ~(CFG_UART2_RS232 | CFG_UART3_RS232 | CFG_UART4_RS232 | CFG_UART5_RS232);
-
- str = getenv("phys0");
- if (!str || (str && (str[0] == '0')))
- val |= CFG_UART2_RS232;
-
- str = getenv("phys1");
- if (!str || (str && (str[0] == '0')))
- val |= CFG_UART3_RS232;
-
- str = getenv("phys2");
- if (!str || (str && (str[0] == '0')))
- val |= CFG_UART4_RS232;
-
- str = getenv("phys3");
- if (!str || (str && (str[0] == '0')))
- val |= CFG_UART5_RS232;
-
- out32(GPIO0_OR, val);
-
- /*
- * Set NAND-FLASH GPIO signals to default
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~(CFG_NAND_CLE | CFG_NAND_ALE));
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_NAND_CE);
-
- /*
- * check board type and setup AP power
- */
- str = getenv("bd_type"); /* this is only set on non prototype hardware */
- if (str != NULL) {
- if ((strcmp(str, "swch405") == 0) || ((!strcmp(str, "hub405") && (gd->board_type >= 1)))) {
- unsigned char led_reg_default = 0;
- str = getenv("ap_pwr");
- if (!str || (str && (str[0] == '1')))
- led_reg_default = 0x04 | 0x02 ; /* U2_LED | AP_PWR */
-
- /*
- * Flash LEDs
- */
- for (flashcnt = 0; flashcnt < 3; flashcnt++) {
- *led_reg = led_reg_default; /* LED_A..D off */
- for (delay = 0; delay < 100; delay++)
- udelay(1000);
- *led_reg = led_reg_default | 0xf0; /* LED_A..D on */
- for (delay = 0; delay < 50; delay++)
- udelay(1000);
- }
- *led_reg = led_reg_default;
- }
- }
-
- /*
- * Reset external DUARTs
- */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_DUART_RST); /* set reset to high */
- udelay(10); /* wait 10us */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_DUART_RST); /* set reset to low */
- udelay(1000); /* wait 1ms */
-
- /*
- * Store hardware revision in environment for further processing
- */
- sprintf(hw_rev, "1.%ld", gd->board_type);
- setenv("hw_rev", hw_rev);
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming HUB405");
- } else {
- puts(str);
- }
-
- if (getenv_r("bd_type", str, sizeof(str)) != -1) {
- printf(" (%s", str);
- } else {
- puts(" (Missing bd_type!");
- }
-
- gd->board_type = board_revision();
- printf(", Rev 1.%ld)\n", gd->board_type);
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-
- return 0;
-}
-
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand_legacy.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- nand_probe(CFG_NAND_BASE);
- if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
- print_size(nand_dev_desc[0].totlen, "\n");
- }
-}
-#endif
diff --git a/board/esd/hub405/u-boot.lds b/board/esd/hub405/u-boot.lds
deleted file mode 100644
index 98338e9351..0000000000
--- a/board/esd/hub405/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/4xx_enet.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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/esd/ocrtc/Makefile b/board/esd/ocrtc/Makefile
deleted file mode 100644
index 99d87c44ff..0000000000
--- a/board/esd/ocrtc/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o cmd_ocrtc.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/ocrtc/cmd_ocrtc.c b/board/esd/ocrtc/cmd_ocrtc.c
deleted file mode 100644
index ffbb4adddc..0000000000
--- a/board/esd/ocrtc/cmd_ocrtc.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * (C) Copyright 2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <command.h>
-#include <pci.h>
-#include <pci_ids.h>
-#include <405gp_pci.h>
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-
-/*
- * Set device number on pci board
- */
-int do_setdevice(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int idx = 1; /* start at 1 (skip device 0) */
- pci_dev_t bdf = 0;
- u32 addr;
-
- while (bdf >= 0) {
- if ((bdf = pci_find_device(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_405GP, idx++)) < 0) {
- break;
- }
- printf("Found device nr %d at %x!\n", idx-1, bdf);
- pci_read_config_dword(bdf, PCI_BASE_ADDRESS_1, &addr);
- addr &= ~0xf;
- *(u32 *)addr = (bdf & 0x0000f800) >> 11;
- printf("Wrote %x at %x!\n", (bdf & 0x0000f800) >> 11, addr);
- }
-
- return 0;
-}
-U_BOOT_CMD(
- setdevice, 1, 1, do_setdevice,
- "setdevice - Set device number on pci adapter boards\n",
- NULL
-);
-
-
-/*
- * Get device number on pci board
- */
-int do_getdevice(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- u32 device;
- char str[32];
-
- device = *(u32 *)0x0;
- device = 0x16 - device; /* calculate vxworks bp slot id */
- sprintf(str, "%d", device);
- setenv("slot", str);
- printf("Variabel slot set to %x\n", device);
-
- return 0;
-}
-U_BOOT_CMD(
- getdevice, 1, 1, do_getdevice,
- "getdevice - Get device number and set slot env variable\n",
- NULL
-);
-
-#endif
diff --git a/board/esd/ocrtc/config.mk b/board/esd/ocrtc/config.mk
deleted file mode 100644
index f123319943..0000000000
--- a/board/esd/ocrtc/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (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
-#
-
-#
-# esd ADCIOP boards
-#
-
-#TEXT_BASE = 0xFFFE0000
-TEXT_BASE = 0xFFFD0000
diff --git a/board/esd/ocrtc/flash.c b/board/esd/ocrtc/flash.c
deleted file mode 100644
index c3d8bec913..0000000000
--- a/board/esd/ocrtc/flash.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
- uint pbcr;
- unsigned long base_b0, base_b1;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- base_b0 = FLASH_BASE0_PRELIM;
- size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 << 20);
- }
-
- base_b1 = FLASH_BASE1_PRELIM;
- size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
- /* Re-do sizing to get full correct info */
-
- if (size_b1) {
- mtdcr (ebccfga, pb0cr);
- pbcr = mfdcr (ebccfgd);
- mtdcr (ebccfga, pb0cr);
- base_b1 = -size_b1;
- switch (size_b1) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b1 | (size_val << 17);
- mtdcr (ebccfgd, pbcr);
- /* printf("pb1cr = %x\n", pbcr); */
- }
-
- if (size_b0) {
- mtdcr (ebccfga, pb1cr);
- pbcr = mfdcr (ebccfgd);
- mtdcr (ebccfga, pb1cr);
- base_b0 = base_b1 - size_b0;
- switch (size_b1) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr (ebccfgd, pbcr);
- /* printf("pb0cr = %x\n", pbcr); */
- }
-
- size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
- flash_get_offsets (base_b0, &flash_info[0]);
-
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- base_b0 + size_b0 - monitor_flash_len,
- base_b0 + size_b0 - 1, &flash_info[0]);
-
- if (size_b1) {
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
- flash_get_offsets (base_b1, &flash_info[1]);
-
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- base_b1 + size_b1 - monitor_flash_len,
- base_b1 + size_b1 - 1, &flash_info[1]);
- /* monitor protection OFF by default (one is enough) */
- flash_protect (FLAG_PROTECT_CLEAR,
- base_b0 + size_b0 - monitor_flash_len,
- base_b0 + size_b0 - 1, &flash_info[0]);
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
diff --git a/board/esd/ocrtc/ocrtc.c b/board/esd/ocrtc/ocrtc.c
deleted file mode 100644
index 261b8a54d0..0000000000
--- a/board/esd/ocrtc/ocrtc.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include "ocrtc.h"
-#include <asm/processor.h>
-#include <i2c.h>
-#include <command.h>
-
-
-extern void lxt971_no_sleep(void);
-
-
-int board_early_init_f (void)
-{
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) PCI SLOT 0; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) PCI SLOT 1; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
- mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
- mtdcr (uicpr, 0xFFFFFF81); /* set int polarities */
- mtdcr (uictr, 0x10000000); /* set int trigger levels */
- mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: clear EBTC -> high-Z ebc signals between
- * transfers, set device-paced timeout to 256 cycles
- */
- mtebc (epcr, 0x20400000);
-
- return 0;
-}
-
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof (str));
-
- puts ("Board: ");
-
- if (i == -1) {
-#ifdef CONFIG_OCRTC
- puts ("### No HW ID - assuming OCRTC");
-#endif
-#ifdef CONFIG_ORSG
- puts ("### No HW ID - assuming ORSG");
-#endif
- } else {
- puts (str);
- }
-
- putc ('\n');
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-
- return (0);
-}
-
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr (memcfga, mem_mb0cf);
- val = mfdcr (memcfgd);
-
-#if 0
- printf ("\nmb0cf=%x\n", val); /* test-only */
- printf ("strap=%x\n", mfdcr (strap)); /* test-only */
-#endif
-
- return (4 * 1024 * 1024 << ((val & 0x000e0000) >> 17));
-}
-
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
diff --git a/board/esd/ocrtc/ocrtc.h b/board/esd/ocrtc/ocrtc.h
deleted file mode 100644
index b50d521d95..0000000000
--- a/board/esd/ocrtc/ocrtc.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (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
- */
-
-/****************************************************************************
- * FLASH Memory Map as used by TQ Monitor:
- *
- * Start Address Length
- * +-----------------------+ 0x4000_0000 Start of Flash -----------------
- * | MON8xx code | 0x4000_0100 Reset Vector
- * +-----------------------+ 0x400?_????
- * | (unused) |
- * +-----------------------+ 0x4001_FF00
- * | Ethernet Addresses | 0x78
- * +-----------------------+ 0x4001_FF78
- * | (Reserved for MON8xx) | 0x44
- * +-----------------------+ 0x4001_FFBC
- * | Lock Address | 0x04
- * +-----------------------+ 0x4001_FFC0 ^
- * | Hardware Information | 0x40 | MON8xx
- * +=======================+ 0x4002_0000 (sector border) -----------------
- * | Autostart Header | | Applications
- * | ... | v
- *
- *****************************************************************************/
diff --git a/board/esd/ocrtc/u-boot.lds b/board/esd/ocrtc/u-boot.lds
deleted file mode 100644
index 476b4a0550..0000000000
--- a/board/esd/ocrtc/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/pci405/Makefile b/board/esd/pci405/Makefile
deleted file mode 100644
index 53f217fb2a..0000000000
--- a/board/esd/pci405/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o cmd_pci405.o
-SOBJS = writeibm.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
-# $(AR) $(ARFLAGS) $@ $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/pci405/cmd_pci405.c b/board/esd/pci405/cmd_pci405.c
deleted file mode 100644
index 0315c3d97b..0000000000
--- a/board/esd/pci405/cmd_pci405.c
+++ /dev/null
@@ -1,985 +0,0 @@
-/*
- * (C) Copyright 2002-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <net.h>
-#include <asm/io.h>
-#include <pci.h>
-#include <405gp_pci.h>
-#include <asm/processor.h>
-
-#include "pci405.h"
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-
-extern int do_bootm (cmd_tbl_t *, int, int, char *[]);
-extern int do_bootvx (cmd_tbl_t *, int, int, char *[]);
-unsigned long get_dcr(unsigned short);
-
-
-/*
- * Command loadpci: wait for signal from host and boot image.
- */
-int do_loadpci(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int *ptr = 0;
- int count = 0;
- int count2 = 0;
- int status;
- int i;
- char addr[16];
- char str[] = "\\|/-";
- char *local_args[2];
-
- /*
- * Mark sync address
- */
- ptr = 0;
- *ptr = 0xffffffff;
- puts("\nWaiting for image from pci host -");
-
- /*
- * Wait for host to write the start address
- */
- while (*ptr == 0xffffffff) {
- count++;
- if (!(count % 100)) {
- count2++;
- putc(0x08); /* backspace */
- putc(str[count2 % 4]);
- }
-
- /* Abort if ctrl-c was pressed */
- if (ctrlc()) {
- puts("\nAbort\n");
- return 0;
- }
-
- udelay(1000);
- }
-
- if (*ptr == PCI_RECONFIG_MAGIC) {
- /*
- * Save own pci configuration in PRAM
- */
- memset((char *)PCI_REGS_ADDR, 0, PCI_REGS_LEN);
- ptr = (unsigned int *)PCI_REGS_ADDR + 1;
- for (i=0; i<0x40; i+=4) {
- pci_read_config_dword(PCIDEVID_405GP, i, ptr++);
- }
- ptr = (unsigned int *)PCI_REGS_ADDR;
- *ptr = crc32(0, (uchar *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4);
-
- printf("\nStoring PCI Configuration Regs...\n");
- } else {
- sprintf(addr, "%08x", *ptr);
-
-#if 0
- /*
- * Boot image
- */
- if (*ptr & 0x00000001) {
- /*
- * Boot VxWorks image via bootvx
- */
- addr[strlen(addr)-1] = '0';
- printf("\nBooting VxWorks-Image at addr 0x%s ...\n", addr);
- setenv("loadaddr", addr);
-
- local_args[0] = argv[0];
- local_args[1] = NULL;
- status = do_bootvx (cmdtp, 0, 1, local_args);
- } else {
- /*
- * Boot image via bootm (normally Linux)
- */
- printf("\nBooting Image at addr 0x%s ...\n", addr);
- setenv("loadaddr", addr);
-
- local_args[0] = argv[0];
- local_args[1] = NULL;
- status = do_bootm (cmdtp, 0, 1, local_args);
- }
-#else
- /*
- * Boot image via bootm
- */
- printf("\nBooting Image at addr 0x%s ...\n", addr);
- setenv("loadaddr", addr);
-
- local_args[0] = argv[0];
- local_args[1] = NULL;
- status = do_bootm (cmdtp, 0, 1, local_args);
-#endif
- }
-
- return 0;
-}
-U_BOOT_CMD(
- loadpci, 1, 1, do_loadpci,
- "loadpci - Wait for pci-image and boot it\n",
- NULL
-);
-
-#endif
-
-#if 1 /* test-only */
-int do_getpci(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int val;
- int i;
-
- printf("\nPCI Configuration Regs for PPC405GP:");
- for (i=0; i<0x64; i+=4) {
- pci_read_config_dword(PCIDEVID_405GP, i, &val);
- if (!(i % 0x10)) {
- printf("\n%02x: ", i);
- }
- printf("%08x ", val);
- }
- printf("\n");
-
- return 0;
-}
-U_BOOT_CMD(
- getpci, 1, 1, do_getpci,
- "getpci - Print own pci configuration registers\n",
- NULL
-);
-
-int do_setpci(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int addr;
- unsigned int val;
-
- addr = simple_strtol (argv[1], NULL, 16);
- val = simple_strtol (argv[2], NULL, 16);
-
- printf("\nWriting %08x to PCI reg %08x.\n", val, addr);
- pci_write_config_dword(PCIDEVID_405GP, addr, val);
-
- return 0;
-}
-U_BOOT_CMD(
- setpci, 3, 1, do_setpci,
- "setpci - Set one pci configuration lword\n",
- "<addr> <val>\n"
- " - Write pci configuration lword <val> to <addr>.\n"
-);
-
-int do_dumpdcr(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int i;
-
- printf("\nDevice Configuration Registers (DCR's) for PPC405GP:");
- for (i=0; i<=0x1e0; i++) {
- if (!(i % 0x8)) {
- printf("\n%04x ", i);
- }
- printf("%08lx ", get_dcr(i));
- }
- printf("\n");
-
- return 0;
-}
-U_BOOT_CMD(
- dumpdcr, 1, 1, do_dumpdcr,
- "dumpdcr - Dump all DCR registers\n",
- NULL
-);
-
-
-int do_dumpspr(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- printf("\nSpecial Purpose Registers (SPR's) for PPC405GP:");
- printf("\n%04x %08x ", 947, mfspr(947));
- printf("\n%04x %08x ", 9, mfspr(9));
- printf("\n%04x %08x ", 1014, mfspr(1014));
- printf("\n%04x %08x ", 1015, mfspr(1015));
- printf("\n%04x %08x ", 1010, mfspr(1010));
- printf("\n%04x %08x ", 957, mfspr(957));
- printf("\n%04x %08x ", 1008, mfspr(1008));
- printf("\n%04x %08x ", 1018, mfspr(1018));
- printf("\n%04x %08x ", 954, mfspr(954));
- printf("\n%04x %08x ", 950, mfspr(950));
- printf("\n%04x %08x ", 951, mfspr(951));
- printf("\n%04x %08x ", 981, mfspr(981));
- printf("\n%04x %08x ", 980, mfspr(980));
- printf("\n%04x %08x ", 982, mfspr(982));
- printf("\n%04x %08x ", 1012, mfspr(1012));
- printf("\n%04x %08x ", 1013, mfspr(1013));
- printf("\n%04x %08x ", 948, mfspr(948));
- printf("\n%04x %08x ", 949, mfspr(949));
- printf("\n%04x %08x ", 1019, mfspr(1019));
- printf("\n%04x %08x ", 979, mfspr(979));
- printf("\n%04x %08x ", 8, mfspr(8));
- printf("\n%04x %08x ", 945, mfspr(945));
- printf("\n%04x %08x ", 987, mfspr(987));
- printf("\n%04x %08x ", 287, mfspr(287));
- printf("\n%04x %08x ", 953, mfspr(953));
- printf("\n%04x %08x ", 955, mfspr(955));
- printf("\n%04x %08x ", 272, mfspr(272));
- printf("\n%04x %08x ", 273, mfspr(273));
- printf("\n%04x %08x ", 274, mfspr(274));
- printf("\n%04x %08x ", 275, mfspr(275));
- printf("\n%04x %08x ", 260, mfspr(260));
- printf("\n%04x %08x ", 276, mfspr(276));
- printf("\n%04x %08x ", 261, mfspr(261));
- printf("\n%04x %08x ", 277, mfspr(277));
- printf("\n%04x %08x ", 262, mfspr(262));
- printf("\n%04x %08x ", 278, mfspr(278));
- printf("\n%04x %08x ", 263, mfspr(263));
- printf("\n%04x %08x ", 279, mfspr(279));
- printf("\n%04x %08x ", 26, mfspr(26));
- printf("\n%04x %08x ", 27, mfspr(27));
- printf("\n%04x %08x ", 990, mfspr(990));
- printf("\n%04x %08x ", 991, mfspr(991));
- printf("\n%04x %08x ", 956, mfspr(956));
- printf("\n%04x %08x ", 284, mfspr(284));
- printf("\n%04x %08x ", 285, mfspr(285));
- printf("\n%04x %08x ", 986, mfspr(986));
- printf("\n%04x %08x ", 984, mfspr(984));
- printf("\n%04x %08x ", 256, mfspr(256));
- printf("\n%04x %08x ", 1, mfspr(1));
- printf("\n%04x %08x ", 944, mfspr(944));
- printf("\n");
-
- return 0;
-}
-U_BOOT_CMD(
- dumpspr, 1, 1, do_dumpspr,
- "dumpspr - Dump all SPR registers\n",
- NULL
-);
-
-
-#define PCI0_BRDGOPT1 0x4a
-#define plb0_acr 0x87
-
-int do_getplb(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned short val;
-
- printf("PLB0_ACR=%08lx\n", get_dcr(0x87));
- pci_read_config_word(PCIDEVID_405GP, PCI0_BRDGOPT1, &val);
- printf("PCI0_BRDGOPT1=%04x\n", val);
- printf("CCR0=%08x\n", mfspr(ccr0));
-
- return 0;
-}
-U_BOOT_CMD(
- getplb, 1, 1, do_getplb,
- "getplb - Dump all plb arbiter registers\n",
- NULL
-);
-
-int do_setplb(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int my_acr;
- unsigned int my_brdgopt1;
- unsigned int my_ccr0;
-
- my_acr = simple_strtol (argv[1], NULL, 16);
- my_brdgopt1 = simple_strtol (argv[2], NULL, 16);
- my_ccr0 = simple_strtol (argv[3], NULL, 16);
-
- mtdcr(plb0_acr, my_acr);
- pci_write_config_word(PCIDEVID_405GP, PCI0_BRDGOPT1, my_brdgopt1);
- mtspr(ccr0, my_ccr0);
-
- return 0;
-}
-U_BOOT_CMD(
- setplb, 4, 1, do_setplb,
- "setplb - Set all plb arbiter registers\n",
- "PLB0_ACR PCI0_BRDGOPT1 CCR0\n"
- " - Set all plb arbiter registers\n"
-);
-
-
-/***********************************************************************
- *
- * The following code is only for test purposes!!!!
- * Please ignore this ugly stuff!!!!!!!!!!!!!!!!!!!
- *
- ***********************************************************************/
-
-#define PCI_ADDR 0xc0000000
-
-int do_writepci(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int addr;
- unsigned int size;
- unsigned int countmax;
- int i;
- int max;
- volatile unsigned long *ptr;
- volatile unsigned long val;
- int loopcount = 0;
- int test_pci_read = 0;
- int test_pci_cfg_write = 0;
- int test_sync = 0;
- int test_pci_pre_read = 0;
-
- addr = simple_strtol (argv[1], NULL, 16);
- size = simple_strtol (argv[2], NULL, 16);
- countmax = simple_strtol (argv[3], NULL, 16);
- if (countmax == 0)
- countmax = 1000;
-
- do_getplb(NULL, 0, 0, NULL);
-
-#if 0
- out32r(PMM0LA, 0);
- out32r(PMM0PCILA, 0);
- out32r(PMM0PCIHA, 0);
- out32r(PMM0MA, 0);
- out32r(PMM1LA, PCI_ADDR);
- out32r(PMM1PCILA, addr & 0xff000000);
- out32r(PMM1PCIHA, 0x00000000);
- out32r(PMM1MA, 0xff000001);
-#endif
-
- printf("PMM1LA =%08lx\n", in32r(PMM1LA));
- printf("PMM1MA =%08lx\n", in32r(PMM1MA));
- printf("PMM1PCILA =%08lx\n", in32r(PMM1PCILA));
- printf("PMM1PCIHA =%08lx\n", in32r(PMM1PCIHA));
-
- addr = PCI_ADDR | (addr & 0x00ffffff);
- printf("\nWriting at addr %08x, size %08x (countmax=%x)\n", addr, size, countmax);
-
- max = size >> 2;
-
- pci_write_config_word(PCIDEVID_405GP, 0x04, 0x0106); /* write command reg */
-
- val = *(ulong *)0x00000000;
- if (val & 0x00000008) {
- test_pci_pre_read = 1;
- printf("Running test with pre pci-memory-read access!\n");
- }
- if (val & 0x00000004) {
- test_sync = 1;
- printf("Running test with sync instruction!\n");
- }
- if (val & 0x00000001) {
- test_pci_read = 1;
- printf("Running test with pci-memory-read access!\n");
- }
- if (val & 0x00000002) {
- test_pci_cfg_write = 1;
- printf("Running test with pci-config-write access!\n");
- }
-
- while (1) {
-
- if (test_pci_pre_read) {
- /*
- * Read one value back
- */
- ptr = (volatile unsigned long *)addr;
- val = *ptr;
- }
-
- /*
- * Write some values to host via pci busmastering
- */
- ptr = (volatile unsigned long *)addr;
- for (i=0; i<max; i++) {
- *ptr++ = i;
- }
-
- if (test_sync) {
- /*
- * Sync previous writes
- */
- ppcSync();
- }
-
- if (test_pci_read) {
- /*
- * Read one value back
- */
- ptr = (volatile unsigned long *)addr;
- val = *ptr;
- }
-
- if (test_pci_cfg_write) {
- /*
- * Generate IRQ to host via config regs
- */
- pci_write_config_byte(PCIDEVID_405GP, 0x44, 0x00);
- }
-
- if (loopcount++ > countmax) {
- /* Abort if ctrl-c was pressed */
- if (ctrlc()) {
- puts("\nAbort\n");
- return 0;
- }
-
- putc('.');
-
- loopcount = 0;
- }
- }
-
- return 0;
-}
-U_BOOT_CMD(
- writepci, 4, 1, do_writepci,
- "writepci - Write some data to pcibus\n",
- "<addr> <size>\n"
- " - Write some data to pcibus.\n"
-);
-
-#define PCI_CFGADDR 0xeec00000
-#define PCI_CFGDATA 0xeec00004
-
-int ibmPciConfigWrite
-(
- int offset, /* offset into the configuration space */
- int width, /* data width */
- unsigned int data /* data to be written */
- )
-{
- /*
- * Write config register address to the PCI config address register
- * bit 31 must be 1 and bits 1:0 must be 0 (note LE bit notation)
- */
- out32r(PCI_CFGADDR, 0x80000000 | (offset & 0xFFFFFFFC));
-
-#if 0 /* test-only */
- ppcSync();
-#endif
-
- /*
- * Write value to be written to the PCI config data register
- */
- switch ( width ) {
- case 1: out32r(PCI_CFGDATA | (offset & 0x3), (unsigned char)(data & 0xFF));
- break;
- case 2: out32r(PCI_CFGDATA | (offset & 0x3), (unsigned short)(data & 0xFFFF));
- break;
- case 4: out32r(PCI_CFGDATA | (offset & 0x3), data);
- break;
- }
-
- return (0);
-}
-
-int do_writepci2(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int addr;
- unsigned int size;
- unsigned int countmax;
- int max;
- volatile unsigned long *ptr;
- volatile unsigned long val;
- int loopcount = 0;
-
- addr = simple_strtol (argv[1], NULL, 16);
- size = simple_strtol (argv[2], NULL, 16);
- countmax = simple_strtol (argv[3], NULL, 16);
- if (countmax == 0)
- countmax = 1000;
-
- do_getplb(NULL, 0, 0, NULL);
-
-#if 0
- out32r(PMM0LA, 0);
- out32r(PMM0PCILA, 0);
- out32r(PMM0PCIHA, 0);
- out32r(PMM0MA, 0);
- out32r(PMM1LA, PCI_ADDR);
- out32r(PMM1PCILA, addr & 0xff000000);
- out32r(PMM1PCIHA, 0x00000000);
- out32r(PMM1MA, 0xff000001);
-#endif
-
- printf("PMM1LA =%08lx\n", in32r(PMM1LA));
- printf("PMM1MA =%08lx\n", in32r(PMM1MA));
- printf("PMM1PCILA =%08lx\n", in32r(PMM1PCILA));
- printf("PMM1PCIHA =%08lx\n", in32r(PMM1PCIHA));
-
- addr = PCI_ADDR | (addr & 0x00ffffff);
- printf("\nWriting at addr %08x, size %08x (countmax=%x)\n", addr, size, countmax);
-
- max = size >> 2;
-
- pci_write_config_word(PCIDEVID_405GP, 0x04, 0x0106); /* write command reg */
-
- while (1) {
-
- /*
- * Write one values to host via pci busmastering
- */
- ptr = (volatile unsigned long *)addr;
- *ptr = 0x01234567;
-
- /*
- * Read one value back
- */
- ptr = (volatile unsigned long *)addr;
- val = *ptr;
-
- /*
- * One pci config write
- */
-/* pci_write_config_byte(PCIDEVID_405GP, 0x44, 0x00); */
-/* ibmPciConfigWrite(0x44, 1, 0x00); */
- ibmPciConfigWrite(0x2e, 2, 0x1234); /* subsystem id */
-
- if (loopcount++ > countmax) {
- /* Abort if ctrl-c was pressed */
- if (ctrlc()) {
- puts("\nAbort\n");
- return 0;
- }
-
- putc('.');
-
- loopcount = 0;
- }
- }
-
- return 0;
-}
-U_BOOT_CMD(
- writepci2, 4, 1, do_writepci2,
- "writepci2- Write some data to pcibus\n",
- "<addr> <size>\n"
- " - Write some data to pcibus.\n"
-);
-
-int do_writepci22(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int addr;
- unsigned int size;
- unsigned int countmax = 0;
- volatile unsigned long *ptr;
- volatile unsigned long val;
-
- addr = simple_strtol (argv[1], NULL, 16);
- size = simple_strtol (argv[2], NULL, 16);
-
- addr = PCI_ADDR | (addr & 0x00ffffff);
- printf("\nWriting at addr %08x, size %08x (countmax=%x)\n", addr, size, countmax);
- pci_write_config_word(PCIDEVID_405GP, 0x04, 0x0106); /* write command reg */
-
- while (1) {
-
- /*
- * Write one values to host via pci busmastering
- */
- ptr = (volatile unsigned long *)addr;
- *ptr = 0x01234567;
-
- /*
- * Read one value back
- */
- ptr = (volatile unsigned long *)addr;
- val = *ptr;
-
- /*
- * One pci config write
- */
- ibmPciConfigWrite(0x2e, 2, 0x1234); /* subsystem id */
- }
-
- return 0;
-}
-U_BOOT_CMD(
- writepci22, 4, 1, do_writepci22,
- "writepci22- Write some data to pcibus\n",
- "<addr> <size>\n"
- " - Write some data to pcibus.\n"
-);
-
-int ibmPciConfigWrite3
-(
- int offset, /* offset into the configuration space */
- int width, /* data width */
- unsigned int data /* data to be written */
- )
-{
- /*
- * Write config register address to the PCI config address register
- * bit 31 must be 1 and bits 1:0 must be 0 (note LE bit notation)
- */
- out32r(PCI_CFGADDR, 0x80000000 | (offset & 0xFFFFFFFC));
-
-#if 1 /* test-only */
- ppcSync();
-#endif
-
- /*
- * Write value to be written to the PCI config data register
- */
- switch ( width ) {
- case 1: out32r(PCI_CFGDATA | (offset & 0x3), (unsigned char)(data & 0xFF));
- break;
- case 2: out32r(PCI_CFGDATA | (offset & 0x3), (unsigned short)(data & 0xFFFF));
- break;
- case 4: out32r(PCI_CFGDATA | (offset & 0x3), data);
- break;
- }
-
- return (0);
-}
-
-int do_writepci3(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int addr;
- unsigned int size;
- unsigned int countmax;
- int max;
- volatile unsigned long *ptr;
- volatile unsigned long val;
- int loopcount = 0;
-
- addr = simple_strtol (argv[1], NULL, 16);
- size = simple_strtol (argv[2], NULL, 16);
- countmax = simple_strtol (argv[3], NULL, 16);
- if (countmax == 0)
- countmax = 1000;
-
- do_getplb(NULL, 0, 0, NULL);
-
-#if 0
- out32r(PMM0LA, 0);
- out32r(PMM0PCILA, 0);
- out32r(PMM0PCIHA, 0);
- out32r(PMM0MA, 0);
- out32r(PMM1LA, PCI_ADDR);
- out32r(PMM1PCILA, addr & 0xff000000);
- out32r(PMM1PCIHA, 0x00000000);
- out32r(PMM1MA, 0xff000001);
-#endif
-
- printf("PMM1LA =%08lx\n", in32r(PMM1LA));
- printf("PMM1MA =%08lx\n", in32r(PMM1MA));
- printf("PMM1PCILA =%08lx\n", in32r(PMM1PCILA));
- printf("PMM1PCIHA =%08lx\n", in32r(PMM1PCIHA));
-
- addr = PCI_ADDR | (addr & 0x00ffffff);
- printf("\nWriting at addr %08x, size %08x (countmax=%x)\n", addr, size, countmax);
-
- max = size >> 2;
-
- pci_write_config_word(PCIDEVID_405GP, 0x04, 0x0106); /* write command reg */
-
- while (1) {
-
- /*
- * Write one values to host via pci busmastering
- */
- ptr = (volatile unsigned long *)addr;
- *ptr = 0x01234567;
-
- /*
- * Read one value back
- */
- ptr = (volatile unsigned long *)addr;
- val = *ptr;
-
- /*
- * One pci config write
- */
-/* pci_write_config_byte(PCIDEVID_405GP, 0x44, 0x00); */
-/* ibmPciConfigWrite(0x44, 1, 0x00); */
- ibmPciConfigWrite3(0x2e, 2, 0x1234); /* subsystem id */
-
- if (loopcount++ > countmax) {
- /* Abort if ctrl-c was pressed */
- if (ctrlc()) {
- puts("\nAbort\n");
- return 0;
- }
-
- putc('.');
-
- loopcount = 0;
- }
- }
-
- return 0;
-}
-U_BOOT_CMD(
- writepci3, 4, 1, do_writepci3,
- "writepci3- Write some data to pcibus\n",
- "<addr> <size>\n"
- " - Write some data to pcibus.\n"
-);
-
-
-#define SECTOR_SIZE 32 /* 32 byte cache line */
-#define SECTOR_MASK 0x1F
-
-void my_flush_dcache(ulong lcl_addr, ulong count)
-{
- unsigned int lcl_target;
-
- /* promote to nearest cache sector */
- lcl_target = (lcl_addr + count + SECTOR_SIZE - 1) & ~SECTOR_MASK;
- lcl_addr &= ~SECTOR_MASK;
- while (lcl_addr != lcl_target)
- {
- /* ppcDcbf((void *)lcl_addr);*/
- __asm__("dcbf 0,%0": :"r" (lcl_addr));
- lcl_addr += SECTOR_SIZE;
- }
- __asm__("sync"); /* Always flush prefetch queue in any case */
-}
-
-int do_writepci_cache(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int addr;
- unsigned int size;
- unsigned int countmax;
- int i;
- volatile unsigned long *ptr;
- volatile unsigned long val;
- int loopcount = 0;
-
- addr = simple_strtol (argv[1], NULL, 16);
- size = simple_strtol (argv[2], NULL, 16);
- countmax = simple_strtol (argv[3], NULL, 16);
- if (countmax == 0)
- countmax = 1000;
-
- do_getplb(NULL, 0, 0, NULL);
-
-#if 0
- out32r(PMM0LA, 0);
- out32r(PMM0PCILA, 0);
- out32r(PMM0PCIHA, 0);
- out32r(PMM0MA, 0);
- out32r(PMM1LA, PCI_ADDR);
- out32r(PMM1PCILA, addr & 0xff000000);
- out32r(PMM1PCIHA, 0x00000000);
- out32r(PMM1MA, 0xff000001);
-#endif
-
- printf("PMM1LA =%08lx\n", in32r(PMM1LA));
- printf("PMM1MA =%08lx\n", in32r(PMM1MA));
- printf("PMM1PCILA =%08lx\n", in32r(PMM1PCILA));
- printf("PMM1PCIHA =%08lx\n", in32r(PMM1PCIHA));
-
- addr = PCI_ADDR | (addr & 0x00ffffff);
- printf("\nWriting at addr %08x, size %08x (countmax=%x)\n", addr, size, countmax);
-
- pci_write_config_word(PCIDEVID_405GP, 0x04, 0x0106); /* write command reg */
-
- i = 0;
-
- /*
- * Set pci region as cachable
- */
- ppcSync();
- __asm__ volatile (" addis 4,0,0x0000 ");
- __asm__ volatile (" addi 4,4,0x0080 ");
- __asm__ volatile (" mtdccr 4 ");
- ppcSync();
-
- while (1) {
-
- /*
- * Write one values to host via pci busmastering
- */
- ptr = (volatile unsigned long *)addr;
- printf("A\n"); /* test-only */
- *ptr++ = i++;
- *ptr++ = i++;
- *ptr++ = i++;
- *ptr++ = i++;
- *ptr++ = i++;
- *ptr++ = i++;
- *ptr++ = i++;
- *ptr++ = i++;
- printf("B\n"); /* test-only */
- my_flush_dcache(addr, 32);
- printf("C\n"); /* test-only */
-
- /*
- * Read one value back
- */
- ptr = (volatile unsigned long *)addr;
- val = *ptr;
- printf("D\n"); /* test-only */
-
- /*
- * One pci config write
- */
-/* pci_write_config_byte(PCIDEVID_405GP, 0x44, 0x00); */
-/* ibmPciConfigWrite(0x44, 1, 0x00); */
- ibmPciConfigWrite3(0x2e, 2, 0x1234); /* subsystem id */
- printf("E\n"); /* test-only */
-
- if (loopcount++ > countmax) {
- /* Abort if ctrl-c was pressed */
- if (ctrlc()) {
- puts("\nAbort\n");
- return 0;
- }
-
- putc('.');
-
- loopcount = 0;
- }
- }
-
- return 0;
-}
-U_BOOT_CMD(
- writepci_cache, 4, 1, do_writepci_cache,
- "writepci_cache - Write some data to pcibus\n",
- "<addr> <size>\n"
- " - Write some data to pcibus.\n"
-);
-
-int do_savepci(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int *ptr;
- int i;
-
- /*
- * Save own pci configuration in PRAM
- */
- memset((char *)PCI_REGS_ADDR, 0, PCI_REGS_LEN);
- ptr = (unsigned int *)PCI_REGS_ADDR + 1;
- for (i=0; i<0x40; i+=4) {
- pci_read_config_dword(PCIDEVID_405GP, i, ptr++);
- }
- ptr = (unsigned int *)PCI_REGS_ADDR;
- *ptr = crc32(0, (uchar *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4);
-
- printf("\nStoring PCI Configuration Regs...\n");
-
- return 0;
-}
-U_BOOT_CMD(
- savepci, 4, 1, do_savepci,
- "savepci - Save all pci regs\n",
- "<addr> <size>\n"
- " - Write some data to pcibus.\n"
-);
-
-int do_restorepci(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int *ptr;
- int i;
-
- /*
- * Rewrite pci config regs (only after soft-reset with magic set)
- */
- ptr = (unsigned int *)PCI_REGS_ADDR;
- if (crc32(0, (uchar *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4) == *ptr) {
- puts("Restoring PCI Configurations Regs!\n");
- ptr = (unsigned int *)PCI_REGS_ADDR + 1;
- for (i=0; i<0x40; i+=4) {
- pci_write_config_dword(PCIDEVID_405GP, i, *ptr++);
- }
- }
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- return 0;
-}
-U_BOOT_CMD(
- restorepci, 4, 1, do_restorepci,
- "restorepci - Restore all pci regs\n",
- "<addr> <size>\n"
- " - Write some data to pcibus.\n"
-);
-
-
-extern void write_without_sync(void);
-extern void write_with_sync(void);
-extern void write_with_less_sync(void);
-extern void write_with_more_sync(void);
-
-/*
- * code from IBM-PPCSUPP
- */
-int do_writeibm1(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- pci_write_config_word(PCIDEVID_405GP, 0x04, 0x0106); /* write command reg */
-
- write_without_sync();
-
- return 0;
-}
-U_BOOT_CMD(
- writeibm1, 4, 1, do_writeibm1,
- "writeibm1- Write some data to pcibus (without sync)\n",
- "<addr> <size>\n"
- " - Write some data to pcibus.\n"
-);
-
-int do_writeibm2(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- pci_write_config_word(PCIDEVID_405GP, 0x04, 0x0106); /* write command reg */
-
- write_with_sync();
-
- return 0;
-}
-U_BOOT_CMD(
- writeibm2, 4, 1, do_writeibm2,
- "writeibm2- Write some data to pcibus (with sync)\n",
- "<addr> <size>\n"
- " - Write some data to pcibus.\n"
-);
-
-int do_writeibm22(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- pci_write_config_word(PCIDEVID_405GP, 0x04, 0x0106); /* write command reg */
-
- write_with_less_sync();
-
- return 0;
-}
-U_BOOT_CMD(
- writeibm22, 4, 1, do_writeibm22,
- "writeibm22- Write some data to pcibus (with less sync)\n",
- "<addr> <size>\n"
- " - Write some data to pcibus.\n"
-);
-
-int do_writeibm3(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- pci_write_config_word(PCIDEVID_405GP, 0x04, 0x0106); /* write command reg */
-
- write_with_more_sync();
-
- return 0;
-}
-U_BOOT_CMD(
- writeibm3, 4, 1, do_writeibm3,
- "writeibm3- Write some data to pcibus (with more sync)\n",
- "<addr> <size>\n"
- " - Write some data to pcibus.\n"
-);
-#endif
diff --git a/board/esd/pci405/config.mk b/board/esd/pci405/config.mk
deleted file mode 100644
index 83f07fe79e..0000000000
--- a/board/esd/pci405/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (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
-#
-
-#
-# esd ADCIOP boards
-#
-
-#TEXT_BASE = 0xFFFE0000
-TEXT_BASE = 0xFFFD0000
diff --git a/board/esd/pci405/flash.c b/board/esd/pci405/flash.c
deleted file mode 100644
index 3b21781d7d..0000000000
--- a/board/esd/pci405/flash.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- switch (size_b0) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -monitor_flash_len,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/pci405/fpgadata.c b/board/esd/pci405/fpgadata.c
deleted file mode 100644
index c64ad95ece..0000000000
--- a/board/esd/pci405/fpgadata.c
+++ /dev/null
@@ -1,746 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0xcd,0x78,0x61,0x3f,0x00,0x03,0x70,0x63,0x69,0x34,0x30,0x35,
- 0x5f,0x31,0x5f,0x30,0x34,0x2e,0x62,0x69,0x74,0x00,0xed,0x9c,0x7f,0x78,0x14,0xc7,
- 0x99,0xe7,0xdf,0xae,0xee,0x11,0x2d,0xcd,0x88,0x69,0x89,0x11,0x1e,0x3b,0x32,0xdb,
- 0x1a,0x09,0x3c,0xc1,0x23,0x69,0x18,0x61,0x85,0x60,0x79,0xd4,0x8c,0x04,0x19,0x1b,
- 0xd9,0x4c,0x6c,0x27,0x61,0xf3,0xf8,0xc9,0x8e,0x1d,0x92,0x23,0x59,0x92,0x47,0x90,
- 0xdc,0x2e,0x49,0x9c,0x6c,0x8d,0x24,0xd0,0x00,0xb2,0x19,0x30,0x97,0xb0,0x59,0xce,
- 0x3b,0x60,0x12,0x0b,0x9b,0x64,0x07,0x61,0x1b,0x61,0x88,0xdd,0x92,0x85,0x23,0x40,
- 0x06,0x85,0xf5,0x79,0xb1,0xcd,0xe2,0xc1,0x91,0xbd,0xb2,0x23,0x63,0x19,0xb3,0x8e,
- 0x00,0x19,0xdd,0x5b,0xdd,0x3d,0xdd,0x2d,0xe1,0xfd,0x71,0xb7,0xf7,0xdc,0xde,0xf3,
- 0x9c,0xdb,0x7f,0xb8,0x50,0xa9,0xba,0xab,0xab,0xde,0xfa,0xd4,0xf7,0x7d,0xdf,0x6a,
- 0x41,0xbe,0x7b,0x54,0xff,0x0f,0x80,0xbb,0x1f,0xa4,0xe6,0xaf,0x7f,0x6b,0x7e,0xf0,
- 0x96,0x3f,0x9b,0xf7,0x67,0xc1,0xf9,0x55,0xdf,0xfd,0xfa,0x0a,0x78,0x00,0x0a,0x42,
- 0xdf,0x9b,0x77,0xcb,0xf7,0x57,0xcf,0x9b,0x3f,0x1f,0xbe,0x0e,0xce,0x50,0x30,0x58,
- 0x53,0x1d,0x5c,0x50,0x1d,0xba,0x05,0x56,0x40,0xfe,0xbc,0x05,0x0b,0x83,0xb7,0x2c,
- 0x9c,0x57,0x03,0xdf,0x00,0x88,0x27,0x27,0xf0,0x7a,0xe2,0xaf,0xbf,0xf4,0xcd,0x20,
- 0x50,0x0e,0x00,0xa6,0x05,0xb9,0x38,0xfb,0x7f,0x5e,0x90,0x93,0x39,0xa0,0xf5,0x95,
- 0x41,0x50,0xd9,0xbf,0xc1,0xa8,0xcf,0x0f,0x82,0x6c,0xff,0x37,0x17,0x04,0x05,0x62,
- 0xe0,0xf9,0x0e,0x14,0x4b,0x30,0xe5,0xe2,0x14,0x81,0xea,0xa5,0x7f,0xad,0x8e,0x4c,
- 0xad,0x62,0xd7,0xbf,0xa3,0xae,0xf8,0x13,0xaa,0x84,0xff,0x58,0xdd,0x84,0x04,0x71,
- 0xf0,0x42,0x1e,0x70,0xd4,0x2c,0xd4,0xf7,0xe9,0x75,0xaa,0x63,0x5c,0x7e,0xbd,0x68,
- 0x46,0x9f,0xbb,0x9f,0x8c,0xd3,0x93,0x05,0x3e,0xa5,0x70,0x8c,0x0f,0x42,0xb3,0xde,
- 0x23,0xe9,0x3d,0xba,0x59,0x29,0xff,0x47,0x67,0x92,0x5c,0x8d,0x6c,0x96,0x7d,0x59,
- 0x31,0x58,0x20,0x0b,0x41,0xad,0x2e,0xe9,0x18,0x96,0x1f,0x89,0x77,0xf6,0x3b,0x81,
- 0x74,0xc0,0x63,0xa2,0x4f,0xc9,0x0f,0x92,0x5d,0x9c,0xde,0x4e,0x2d,0xe9,0x74,0x3c,
- 0x29,0xcc,0x55,0x9d,0x69,0x18,0x11,0x9e,0x04,0xd6,0x8e,0x64,0x84,0xb8,0xde,0xa7,
- 0x92,0x63,0xf0,0xba,0xb0,0x50,0x75,0xb7,0xf1,0x7b,0xe1,0x0f,0x10,0x6a,0x2e,0xcc,
- 0xf0,0x54,0xd0,0xdb,0x65,0xb9,0x27,0x94,0xd7,0xe1,0x73,0x3d,0xee,0x97,0x1b,0x46,
- 0xe0,0x1f,0xe0,0x79,0xd5,0x3d,0xca,0xaf,0x05,0xbd,0x9d,0x22,0xed,0x26,0xc7,0x21,
- 0xa4,0xba,0x93,0xfc,0x00,0x1c,0x87,0xae,0xd8,0xf4,0x0c,0x2f,0x09,0xb2,0x56,0xd7,
- 0xef,0xa8,0xfb,0xb6,0x9b,0x94,0xab,0xce,0xa7,0xc8,0x55,0x79,0x33,0xc8,0xaa,0x98,
- 0x21,0x21,0x9c,0x3f,0xed,0x9e,0x8e,0x3b,0xc9,0x26,0xfc,0x91,0x33,0xd8,0x32,0x00,
- 0x8f,0x80,0x4c,0x0b,0x82,0x64,0x01,0xce,0x2c,0xbb,0xe2,0xdc,0xac,0xb6,0x76,0x5a,
- 0x96,0x75,0xfe,0x29,0x39,0x0b,0x3f,0xa3,0xe5,0x9d,0xe2,0x5a,0xe2,0x35,0xda,0x45,
- 0x45,0x11,0x5e,0x68,0x09,0x1e,0x75,0xcf,0xe7,0x07,0x92,0xaf,0xd3,0xe0,0xf0,0x5d,
- 0x41,0x67,0xb1,0x31,0x6f,0xca,0x8d,0xdd,0xf4,0x7d,0x8e,0x75,0xaf,0x61,0x5c,0x7e,
- 0x1f,0x6e,0xa3,0xee,0x0f,0xf8,0xc1,0x3c,0xbd,0x9f,0x9d,0xdc,0xb0,0xe0,0xfc,0x76,
- 0x78,0x60,0x73,0x95,0x33,0x90,0xbe,0x22,0x97,0x52,0x57,0x86,0x7f,0xd7,0x18,0xcf,
- 0x68,0xd1,0xc6,0x64,0xbb,0x5c,0x39,0xe0,0x8c,0xb5,0x94,0xc2,0x81,0x95,0x95,0x54,
- 0x6c,0x26,0xa7,0x8c,0x71,0xa1,0xf0,0xa8,0xf2,0xf8,0xb6,0xca,0xec,0xa6,0xe1,0xbc,
- 0x59,0x70,0x80,0x56,0xa7,0xb1,0x2f,0x59,0x30,0xde,0x4f,0x3a,0x91,0x78,0x0c,0x56,
- 0xa9,0xce,0xd0,0xcc,0x26,0xd8,0x0f,0x81,0x14,0x8e,0xe7,0x05,0x63,0x1e,0x86,0x4b,
- 0x0e,0xb5,0xbc,0x0b,0x61,0xea,0x4e,0xf3,0x7e,0xb8,0x0c,0xf5,0x89,0x1d,0x69,0xfe,
- 0xb2,0x71,0xcf,0x28,0x8e,0xe8,0x69,0x78,0x10,0x70,0xac,0xd3,0x30,0x06,0x61,0x52,
- 0xdf,0xc6,0x9f,0x02,0xbd,0x9d,0x28,0x1d,0x81,0xa3,0x10,0x52,0x2a,0xbb,0xf8,0x21,
- 0xe1,0x28,0xd4,0xad,0x3c,0x91,0x2a,0xef,0x35,0xee,0x49,0x85,0x6f,0x8a,0xac,0x4e,
- 0xdc,0xe6,0xeb,0x53,0x36,0x40,0x55,0x5c,0xfc,0x29,0xf6,0x45,0xb7,0x75,0xaf,0xa3,
- 0x02,0xb6,0x80,0x6f,0x91,0xb8,0x2d,0x6f,0x08,0x36,0xc0,0x77,0x55,0x48,0x91,0x17,
- 0x8d,0x31,0x13,0x85,0x42,0x92,0x50,0xe4,0x2f,0x8a,0x52,0xde,0x8b,0x90,0x50,0x56,
- 0x2d,0x12,0x3d,0xa4,0x97,0xd3,0xc7,0xac,0xbb,0x30,0x4e,0xfa,0xb9,0x10,0xb8,0x28,
- 0x9f,0x25,0xfd,0x10,0x86,0x2a,0xca,0x9f,0xe7,0xf5,0x79,0xd8,0x7e,0xe3,0x3f,0xc3,
- 0x3b,0xca,0xb3,0x31,0x77,0x6a,0xc6,0x5b,0x70,0x49,0xa9,0xc7,0x02,0xff,0x76,0x9e,
- 0x3e,0x66,0xdb,0x1d,0xaf,0xc0,0xab,0x10,0x56,0x02,0x29,0x7e,0x08,0x2e,0x49,0xf5,
- 0x77,0xb8,0x07,0xf9,0x39,0xc6,0x78,0x2e,0x90,0x7e,0xff,0x66,0x52,0xae,0x12,0x45,
- 0x8a,0xdd,0xeb,0xf6,0x54,0x49,0xce,0x16,0x32,0xdd,0x78,0x07,0xd1,0xd1,0xe7,0xdc,
- 0x19,0x0d,0xdc,0x1d,0x95,0x48,0x9f,0xb2,0x8f,0x0b,0x64,0x9d,0x52,0x4b,0x8b,0x61,
- 0x9f,0xde,0x92,0x5f,0x90,0x3d,0x10,0x50,0xc4,0x54,0xde,0x08,0x77,0x10,0xaa,0x14,
- 0x67,0x8a,0xac,0x37,0xc6,0x2c,0x5d,0xf4,0xb6,0xe7,0x92,0x10,0x56,0x5c,0xf8,0x3c,
- 0xe9,0x12,0x84,0xb1,0x2f,0xce,0x4e,0xc3,0xce,0xfc,0xdc,0xe3,0x70,0x3d,0x84,0x17,
- 0xb9,0xbb,0xf8,0x11,0xc0,0x3a,0x65,0x5a,0x8a,0xbf,0xc3,0x98,0x23,0xbf,0x44,0xd9,
- 0x10,0x83,0xbb,0x85,0x97,0xe5,0x31,0xe8,0x02,0x57,0x92,0x3f,0x96,0x6b,0xe7,0x58,
- 0xa8,0x6c,0xe4,0xaa,0xa8,0x73,0x37,0xff,0x2d,0xcf,0xb3,0xe0,0xa3,0xe2,0x30,0x39,
- 0x66,0x2c,0x51,0xbf,0x63,0x19,0xd7,0x0a,0x01,0xb4,0x4f,0x52,0x88,0x73,0x2b,0x2b,
- 0x62,0x37,0xd6,0xe9,0xe3,0x92,0xe6,0x4a,0xe5,0xf6,0xda,0xca,0x7e,0xe7,0x18,0xb9,
- 0x0f,0x6d,0xa2,0x3c,0xee,0x6f,0x6e,0xe9,0x37,0xc6,0xba,0x53,0x9c,0x05,0xff,0x44,
- 0x7f,0x7c,0xd9,0x3d,0x7c,0xdd,0x2c,0xf8,0x50,0x9d,0x17,0x77,0xad,0xe5,0x8f,0x19,
- 0xf6,0x29,0x16,0xee,0x26,0x7f,0xa8,0x08,0x9f,0x76,0xaf,0xff,0xc2,0x5b,0xe9,0x2b,
- 0x2b,0xeb,0x14,0x77,0x86,0xef,0x35,0xec,0x53,0x71,0x5c,0x90,0x4e,0xaa,0x37,0x0f,
- 0x09,0xe3,0x0d,0x0b,0x61,0x82,0xd6,0xc7,0x5d,0x63,0xbc,0x64,0x8c,0x67,0x67,0x51,
- 0x86,0x6c,0xce,0x94,0xab,0xe2,0xb7,0xf8,0xe5,0xd8,0x97,0xca,0x95,0xe2,0xa8,0x6f,
- 0xae,0x31,0x2e,0xc5,0x90,0x8a,0xff,0x5d,0xf1,0xfd,0x6a,0xb4,0xb9,0xc5,0x0b,0x07,
- 0xa0,0xb2,0x49,0x8c,0x13,0x81,0xea,0xef,0x17,0x97,0xfa,0x0b,0x1e,0x83,0xb4,0xda,
- 0x29,0x10,0x45,0x44,0xfb,0x8c,0x8b,0x69,0xe2,0x6d,0xd3,0xe7,0xa1,0xb3,0xe4,0xd7,
- 0xe4,0x7d,0xa8,0x51,0x5d,0xdb,0xf8,0x0a,0x98,0xe0,0xea,0xd4,0x8e,0x94,0xb3,0xaa,
- 0x4d,0xbf,0x67,0x0a,0xde,0x83,0xbf,0x87,0x9f,0xa8,0x38,0xdd,0x23,0x70,0x05,0x66,
- 0x0d,0x60,0x21,0x6b,0xd8,0x67,0x42,0x1a,0x87,0x93,0x30,0x4f,0xed,0x18,0x69,0xbd,
- 0x40,0xeb,0xd1,0x18,0x5d,0x83,0xbc,0xdc,0xa8,0xd7,0xad,0x13,0x16,0x93,0x4d,0x42,
- 0x48,0xf5,0x27,0x23,0xbf,0x87,0x43,0xe0,0x8b,0x8b,0x29,0x52,0xa1,0xe8,0xf6,0x49,
- 0x1d,0x15,0xf2,0x26,0xf0,0xa9,0xf8,0xa3,0x21,0x7c,0x07,0x5f,0xa3,0xd8,0x45,0x64,
- 0x63,0x3c,0x45,0x01,0xa0,0x35,0x88,0x78,0x20,0x64,0x00,0xeb,0x1e,0x68,0xc2,0x75,
- 0x44,0x0c,0xfb,0xa4,0x85,0x71,0xf1,0xa4,0xbf,0x46,0x15,0xbb,0x5a,0xb3,0x30,0xa1,
- 0x74,0x29,0xae,0x34,0x2f,0x13,0x63,0x1e,0x6e,0x1c,0x13,0xae,0xc8,0xb7,0xaa,0x6e,
- 0xe0,0x47,0x61,0xc2,0x1f,0x5e,0xee,0xce,0xf2,0xc3,0xd3,0x0c,0xd6,0x39,0xc6,0xc9,
- 0x49,0x39,0x2c,0xbb,0x2f,0xf0,0x21,0xe5,0x64,0x4b,0x38,0x1b,0x18,0xc3,0x5f,0xca,
- 0xf1,0x73,0x42,0xd8,0x1c,0xac,0x2a,0x70,0x7e,0x44,0xfc,0x74,0x13,0xad,0xca,0xe2,
- 0xdc,0x66,0x4d,0x7e,0xbe,0x84,0xd8,0x5c,0x45,0x9d,0xf3,0x5a,0x28,0x7d,0x0c,0x0d,
- 0x00,0xfb,0xf2,0xa6,0xc9,0xcf,0xbd,0xf0,0x24,0x54,0x25,0x9d,0x19,0x5f,0x27,0x2b,
- 0x30,0x9e,0x8d,0x9a,0xfc,0x1c,0x41,0x6c,0xe2,0xf3,0x32,0xce,0x5f,0xf8,0xb0,0xa0,
- 0x22,0x5f,0x54,0x93,0x9f,0x87,0xe1,0x0d,0xa8,0x97,0x91,0x4b,0x3f,0x66,0x05,0xc6,
- 0xcf,0x31,0x93,0x9f,0x7b,0x71,0x88,0x71,0x18,0x33,0xb8,0x8e,0xae,0x40,0xb8,0x67,
- 0x73,0x86,0x1f,0x34,0xf9,0x59,0x2a,0xd4,0xc3,0x2e,0x05,0xa7,0x7b,0x04,0xc7,0x13,
- 0x8d,0x31,0x43,0x2e,0x98,0xfc,0x6c,0x12,0xf7,0x0b,0x15,0x8a,0x98,0x51,0xb2,0x8c,
- 0x3d,0xcc,0x50,0xc7,0x8c,0xf1,0x94,0x39,0x44,0xd5,0xb6,0x9b,0x56,0x46,0x7f,0x40,
- 0x5e,0x81,0x03,0xe9,0xca,0xac,0x73,0x2d,0xe9,0x37,0xf9,0x39,0x1d,0x1f,0x33,0x7f,
- 0xcc,0x15,0xe4,0x55,0xf8,0x30,0x5d,0x97,0x75,0x07,0xf9,0x53,0x26,0x3f,0x0f,0xc3,
- 0x44,0xf4,0xf3,0x7d,0xd5,0xa3,0x5a,0x5f,0xb4,0x7e,0x9a,0xfc,0x74,0x0c,0xc8,0xc7,
- 0x69,0xed,0x76,0xf7,0xf3,0x4b,0xfd,0xf4,0x0a,0xd4,0x65,0x27,0xf1,0x73,0x07,0xb4,
- 0x42,0x59,0xeb,0xd2,0xd5,0xa4,0x54,0xf9,0x19,0x54,0xa2,0x31,0xda,0xf9,0xa9,0x3e,
- 0x4e,0x59,0x17,0x8a,0xbf,0x5a,0x76,0x00,0x0b,0x76,0x7e,0x7a,0x06,0xb0,0x9d,0xff,
- 0x02,0x76,0xfd,0x2e,0xdc,0x03,0x02,0xaa,0xd7,0xce,0xcf,0x4e,0x62,0xf0,0xf3,0xcf,
- 0x91,0x9f,0x61,0x1a,0x98,0xc4,0x4f,0x61,0x0c,0x6a,0x05,0x37,0x9d,0x91,0x96,0xb5,
- 0xc5,0x4d,0x4d,0x7e,0x26,0xa5,0x3e,0xc6,0x25,0xb4,0x5d,0xa2,0xb3,0x00,0x6d,0xf7,
- 0x4d,0x93,0x9f,0x2b,0xc4,0x0d,0xa4,0x6a,0x91,0x33,0x55,0x3c,0x04,0x06,0x5f,0xec,
- 0xfc,0xfc,0x6b,0xfd,0x47,0x66,0x9d,0xc5,0x4f,0x01,0xb1,0x19,0x88,0x2d,0xf5,0x2c,
- 0x39,0x02,0xfb,0x10,0x50,0x4e,0xc9,0xce,0x4f,0x38,0xcd,0xba,0x00,0xb8,0x44,0x8c,
- 0xbe,0x58,0xfc,0x64,0xd8,0xac,0x52,0xdc,0xdb,0x18,0x23,0xf5,0xbe,0xe4,0xf8,0xe9,
- 0x75,0x5c,0x4c,0x5f,0x82,0xda,0x98,0x6b,0x8b,0x56,0x57,0xcf,0xea,0x5e,0x34,0xf9,
- 0x79,0xce,0x95,0x91,0x11,0x47,0xeb,0x8a,0xb3,0xb4,0x1b,0xef,0xb9,0x94,0x92,0x13,
- 0x16,0x3f,0x61,0x5f,0x14,0x6d,0xa2,0x98,0xf4,0x95,0x99,0x7d,0x31,0xee,0x59,0xb4,
- 0x5b,0x3a,0x88,0x7b,0x40,0x32,0x15,0x62,0xef,0x30,0x57,0x7b,0x87,0x1c,0x3f,0x4b,
- 0xf0,0x31,0x42,0x28,0xe6,0xd2,0x78,0x8d,0xef,0x87,0xcf,0x1b,0x36,0xec,0xd3,0xcf,
- 0xed,0x86,0x0f,0x20,0xbc,0xa2,0x3a,0x65,0xf5,0xf3,0x98,0x61,0x9f,0x7e,0x29,0x0d,
- 0xfd,0x10,0x92,0x02,0x74,0x46,0x16,0xfa,0xf5,0xf7,0xb3,0xf8,0xe9,0x27,0x4f,0xc0,
- 0xae,0x84,0x98,0x2e,0x1e,0x86,0xd7,0x70,0xe7,0x70,0xa6,0x91,0x91,0x8a,0x51,0xd7,
- 0x84,0x73,0xeb,0x63,0xcb,0x67,0x00,0x66,0xe8,0xf6,0x69,0xf1,0x33,0x0c,0xed,0xc1,
- 0xb2,0x01,0x71,0x0d,0xb9,0x4a,0x99,0xbd,0x38,0x9b,0xc9,0xb0,0xc9,0xcf,0x30,0xfc,
- 0xb6,0xf3,0x7b,0xef,0xba,0x7e,0xc0,0x5f,0x95,0xff,0x81,0xde,0x96,0x75,0xaf,0xe5,
- 0xdf,0xcd,0xf1,0xf3,0x46,0x5c,0x2b,0xf1,0x70,0xbf,0x7b,0x1f,0xff,0x9e,0x7a,0x85,
- 0x4d,0xb2,0xc5,0x4f,0x70,0x5c,0xa5,0x88,0xcd,0x21,0xd7,0x25,0x7e,0x16,0x9c,0xa4,
- 0xf5,0x59,0xf7,0x18,0x1a,0x78,0x8e,0x9f,0x0f,0x2b,0xed,0x50,0x39,0x2c,0xfe,0x30,
- 0x52,0x8a,0x9d,0xaa,0xec,0xc3,0xe7,0xbd,0x9b,0x5b,0xb7,0xd0,0xb1,0x08,0xbb,0xd0,
- 0x27,0xd6,0x90,0x3a,0x78,0x5c,0xef,0x8b,0x6a,0xd8,0xa7,0xec,0x19,0x10,0xd9,0x1e,
- 0xe0,0xc7,0x3d,0x80,0x1a,0x9b,0x41,0xbf,0x90,0xe3,0xe7,0x5e,0x6d,0x29,0xbb,0x46,
- 0xf9,0x3a,0xf2,0x07,0xbd,0x2f,0xef,0x9a,0x36,0x3f,0x02,0x7f,0xa3,0xff,0xe8,0x3c,
- 0xae,0x5b,0xad,0x90,0xe3,0x27,0x87,0xfc,0x9c,0xe0,0xea,0x7b,0xdc,0xcd,0x33,0xea,
- 0xe0,0x0d,0x4e,0x5b,0x63,0xaa,0xc1,0xcf,0x84,0xb0,0x4a,0x3c,0x04,0x55,0x3d,0xb8,
- 0xcc,0x03,0xa8,0xa5,0xaa,0xd8,0x7a,0xcf,0xe6,0xf8,0xc9,0x05,0xf0,0x56,0x73,0xd8,
- 0x8f,0x5c,0xb0,0xc9,0xa8,0xb3,0xf6,0x77,0xd8,0xcf,0xad,0xea,0xc7,0xee,0xb9,0xa0,
- 0x55,0x0a,0xf4,0x61,0x21,0x67,0x9f,0x50,0xb8,0x0a,0x26,0x84,0x5b,0x06,0xdc,0xa3,
- 0xce,0x3a,0xbc,0x67,0x78,0x10,0xfb,0xa2,0xf2,0x39,0x7e,0xbe,0x07,0x13,0xec,0x47,
- 0xfb,0xf8,0x71,0x78,0x5f,0xef,0xcb,0x70,0x5e,0x8e,0x9f,0x57,0x61,0x9c,0xd6,0xa8,
- 0x9b,0xc6,0xf8,0xab,0xf0,0x47,0x24,0xbd,0x6b,0xd8,0xd4,0x9f,0xaa,0x74,0x1e,0xba,
- 0xc5,0xf2,0x51,0x67,0x26,0x82,0xef,0x97,0xa8,0x92,0xc5,0x4e,0x12,0x34,0xde,0xaf,
- 0xdf,0x31,0x00,0x87,0x7c,0xfe,0x41,0x67,0x30,0xaf,0x83,0x71,0x89,0x8a,0x32,0x09,
- 0xd9,0xf8,0x89,0xdb,0x02,0x76,0x3d,0x8f,0xf1,0xac,0x2a,0x85,0xfb,0x51,0xd0,0xe2,
- 0xa7,0x30,0x46,0xbb,0x7a,0xb0,0x7b,0x7b,0xa5,0x1f,0x31,0x7e,0xa6,0x79,0x00,0x93,
- 0x9f,0xc2,0x78,0x8a,0x75,0xaf,0x15,0x07,0x0f,0x6e,0x53,0x91,0xf3,0x63,0x46,0xbb,
- 0x18,0xf2,0xf3,0x55,0x65,0x21,0x1b,0x62,0xb6,0x57,0x85,0x06,0x5d,0xbb,0xf8,0x12,
- 0x93,0x9f,0x01,0x61,0x83,0x50,0x3d,0x88,0xfa,0x93,0x3d,0xcf,0xd7,0x23,0xfa,0x5b,
- 0x72,0xfa,0x73,0x18,0xed,0x73,0x3b,0x17,0xe8,0x75,0xde,0x42,0x06,0x38,0xb6,0xbf,
- 0xe7,0xcb,0xc5,0x41,0x63,0xc8,0x46,0x91,0x9f,0x6d,0x88,0xcd,0x4d,0x6b,0x51,0x7f,
- 0x1e,0xa0,0x8f,0xad,0xfd,0xec,0x30,0x1a,0x87,0x7e,0x45,0x45,0x17,0x9c,0xca,0x2e,
- 0x50,0xdd,0x0b,0x50,0xef,0x7e,0x08,0xa1,0x6c,0xa1,0xcc,0x17,0xe7,0xe9,0x75,0xca,
- 0x8d,0x3b,0xe0,0x6a,0x10,0xa7,0xfb,0x83,0x69,0xe3,0x1a,0x3f,0xa7,0xcb,0xce,0xc1,
- 0x3c,0xbd,0x2f,0xc8,0x4f,0x38,0x4e,0xd7,0x5c,0x78,0x30,0xd3,0x10,0x60,0x9c,0xcf,
- 0xe2,0xfb,0xf5,0x1a,0xef,0xd7,0x5f,0xb4,0xc3,0xd3,0x2e,0x96,0xfd,0x4e,0x6c,0x2e,
- 0x46,0xfd,0xc9,0xf6,0x9c,0x38,0x72,0x3e,0x67,0x4b,0x8f,0x92,0xf6,0x64,0xd9,0x3b,
- 0xc9,0xb5,0xa1,0x59,0x22,0xe3,0xa7,0x7f,0x25,0xb2,0x5c,0xbf,0x67,0x94,0xf1,0x53,
- 0xd0,0x64,0xb5,0x4b,0xdb,0x03,0x70,0xac,0x5f,0x33,0xf9,0x99,0x84,0x63,0xd0,0x45,
- 0x5d,0x69,0xa7,0xa6,0x3f,0xa9,0x2b,0xcb,0x5f,0xce,0xb5,0x03,0x44,0x15,0x0d,0x4b,
- 0xb8,0x94,0x35,0x66,0xc9,0x8c,0x9f,0x39,0xbe,0x48,0x43,0xa8,0xe7,0xc3,0xcd,0xee,
- 0x9f,0xa3,0x2e,0x30,0x58,0x40,0x8c,0xf1,0x44,0x7e,0x02,0xf2,0x53,0xd9,0x84,0xdb,
- 0xba,0xce,0x48,0xa9,0x40,0xe6,0x2c,0x7e,0x6e,0xd0,0xb1,0x89,0x75,0x0a,0x2b,0xf8,
- 0xf2,0x72,0xf6,0xd9,0x88,0xfc,0x6c,0x44,0x54,0x79,0x88,0xa0,0xf3,0x73,0x7b,0x1e,
- 0xb1,0xf1,0x53,0x65,0x9c,0xa7,0x4e,0x19,0xba,0x75,0xbe,0x54,0x4d,0xcb,0xf1,0x93,
- 0xe1,0xa8,0x2e,0xe6,0x96,0x74,0x46,0xc6,0x50,0x63,0x9e,0x37,0xf5,0xe7,0x45,0xbd,
- 0x7b,0x83,0x3a,0xb3,0x98,0x58,0x39,0x6f,0xf2,0x13,0x65,0xa7,0x5c,0x05,0x4e,0x4d,
- 0x7f,0x72,0x55,0x9e,0xa5,0x2a,0xb2,0x5c,0x7f,0xbf,0x28,0xe3,0xa7,0x18,0x88,0x39,
- 0x8b,0xd3,0x7d,0xae,0x7d,0xf0,0x1d,0xc5,0x19,0x23,0xa7,0x8c,0x71,0xf1,0x96,0xec,
- 0xce,0xa1,0x9f,0xf1,0xb3,0x3a,0xee,0x1c,0x44,0x7e,0xea,0x75,0x69,0xcf,0xee,0xd2,
- 0x4b,0x85,0xa8,0x31,0x91,0x91,0x22,0x3e,0x2f,0xce,0xf8,0x69,0xb4,0x5b,0x09,0xd8,
- 0x2e,0xa5,0x75,0x81,0xb5,0x9b,0xc5,0xc6,0xec,0xb5,0x1c,0x23,0xa5,0xb4,0x38,0x06,
- 0x21,0x7c,0xad,0x06,0x36,0xd6,0xb5,0x38,0x4b,0xc8,0x4f,0xfd,0xdd,0xfd,0x82,0x1f,
- 0x9e,0x15,0x7c,0x4f,0x39,0xb3,0x91,0x61,0x09,0xf5,0x67,0xba,0x3f,0x4d,0x7a,0x0d,
- 0x3b,0xf3,0x3b,0xee,0x62,0xb2,0x73,0xd4,0x39,0x0f,0x98,0x26,0xaa,0x60,0x73,0xdb,
- 0x6b,0xee,0xef,0xa5,0x15,0xcf,0xa7,0xcb,0x5a,0x9c,0x71,0x72,0x06,0x9e,0xa7,0x15,
- 0xbb,0xc4,0x15,0xe6,0xfe,0xee,0x47,0xfd,0xf9,0xc7,0xd4,0x3c,0x86,0xcd,0xb3,0x70,
- 0x95,0xde,0x92,0x65,0xfa,0xd3,0xb0,0x4f,0xe4,0xa7,0xf4,0x61,0x71,0x78,0x2b,0xee,
- 0xa9,0x23,0x68,0x13,0x0b,0xe9,0x24,0xfd,0xf9,0x0a,0x4c,0xa4,0x34,0x7e,0x86,0xe1,
- 0x4a,0x1a,0xf5,0x67,0x3f,0xef,0x35,0xde,0xaf,0xb3,0x68,0x1b,0xb4,0xd2,0x4a,0x15,
- 0x97,0x2b,0xda,0x67,0x22,0x10,0x10,0xd5,0x82,0xb9,0x46,0x9d,0x04,0xdb,0x14,0x94,
- 0x9d,0x70,0x7b,0x73,0xde,0x0e,0x78,0x06,0xc7,0xd3,0x7f,0x1a,0x27,0x59,0xaf,0x8b,
- 0x7b,0xfa,0x60,0x93,0x10,0x80,0x7c,0x19,0x7d,0xd1,0x2e,0x08,0xa0,0x71,0x91,0xe2,
- 0x36,0xbd,0xae,0xbb,0xa4,0x43,0x98,0x40,0x3d,0x5f,0x89,0xeb,0x9d,0xad,0x07,0xb6,
- 0xde,0xfd,0x34,0x67,0xf3,0xb8,0x94,0xb9,0x3a,0xb8,0x2b,0x73,0xf3,0x2a,0xac,0x7b,
- 0x90,0x89,0x80,0x61,0xc3,0x3e,0x13,0xa9,0xf1,0xc6,0x93,0x10,0x1a,0x2e,0x1d,0xc5,
- 0x5f,0xb8,0x8a,0x6b,0xac,0x63,0x94,0xcf,0x9a,0xfa,0x73,0x15,0xa2,0xd1,0x97,0x10,
- 0x67,0x22,0x3f,0x9f,0xc5,0xfd,0x08,0x17,0x46,0x36,0x9e,0xd3,0x9f,0x58,0x27,0xe0,
- 0xbe,0xd9,0x45,0xf6,0x0a,0x87,0x84,0x2a,0x45,0x73,0x4e,0x0c,0xfd,0xd9,0x88,0xd8,
- 0x94,0x65,0xc5,0x2b,0x61,0x3f,0xf7,0xcf,0x0e,0x80,0x1f,0x48,0x6f,0x42,0x1f,0x33,
- 0x9a,0xbf,0x0a,0x4e,0x06,0x43,0xe0,0xdf,0xc7,0xef,0x15,0x2e,0x97,0x85,0xff,0x14,
- 0x37,0xd0,0xec,0x7a,0xbd,0xdd,0xce,0x1b,0xc7,0xf3,0xae,0x04,0xeb,0xc1,0x7d,0x8a,
- 0x7f,0x10,0xae,0x4a,0x75,0x37,0xa0,0x31,0x0e,0xdf,0x94,0xe3,0xe7,0x08,0x9c,0x9c,
- 0x8f,0x36,0x71,0x10,0xf9,0x39,0xae,0xd6,0xf7,0xe3,0x7e,0x14,0x14,0x72,0xfc,0x9c,
- 0x88,0x6c,0x2e,0xaa,0xbe,0xe8,0xec,0x22,0x08,0x52,0xa8,0xce,0x3a,0xbb,0x49,0x90,
- 0x98,0xfc,0x94,0x5a,0x67,0x6b,0x5b,0xcd,0x00,0xec,0x93,0x91,0xe5,0x19,0x3b,0x3f,
- 0x05,0x86,0xfe,0x4d,0x19,0xc6,0x33,0x89,0xed,0x01,0x05,0x41,0x83,0x13,0x12,0xea,
- 0xcf,0xe3,0xda,0x56,0x83,0x75,0x63,0x69,0x6d,0xcf,0x01,0x53,0x7f,0xea,0x43,0xbc,
- 0x6c,0x14,0x39,0x3f,0x4e,0x27,0xe9,0x4f,0xc6,0xcf,0xe3,0x24,0x84,0x72,0xd5,0x19,
- 0x40,0xb1,0xd2,0xc5,0xda,0xd9,0xf4,0x27,0x6c,0x16,0xca,0x5f,0x2e,0xc8,0x44,0xd8,
- 0xe6,0x53,0xce,0xf6,0x9c,0x8f,0x2c,0xfd,0x79,0x43,0x2b,0xc8,0x7d,0xb8,0xbf,0xbb,
- 0x84,0x2e,0xe6,0xc8,0x67,0x22,0x17,0x0c,0xdb,0x65,0xfc,0x6c,0xdf,0x57,0x36,0x52,
- 0xb0,0xd6,0x37,0x0b,0x9e,0x62,0x8e,0xfc,0x5a,0x32,0x6e,0xd4,0x31,0xfd,0xf9,0x82,
- 0x1c,0x1c,0x69,0x3a,0x34,0xcd,0x85,0x36,0x18,0x54,0xff,0x0c,0xf5,0xa7,0xc9,0xcf,
- 0xc3,0x70,0x65,0x85,0x16,0x5e,0x38,0x8c,0x73,0xab,0xbd,0x83,0xc5,0xcf,0x97,0x94,
- 0xe3,0x50,0x3b,0xd2,0x91,0x99,0x36,0x22,0x7d,0x48,0xbb,0x8e,0xa1,0x4e,0xb6,0xf1,
- 0x33,0xdd,0x0e,0xf2,0x31,0xb1,0xf9,0xcb,0x67,0xe0,0x69,0xb1,0x8c,0xed,0xe1,0x36,
- 0x7e,0x42,0xfb,0xd6,0xd9,0x4c,0x76,0x9e,0x15,0x9e,0x6f,0x29,0x1b,0xd1,0xb4,0xb0,
- 0x7e,0xcf,0xa8,0x67,0x04,0xfd,0x15,0x59,0x4d,0x06,0x35,0xbf,0x83,0x05,0x23,0x6c,
- 0xfc,0xec,0x44,0x7e,0xd6,0xa2,0xec,0x44,0x69,0x72,0x19,0x42,0xcc,0x06,0x27,0xf1,
- 0x53,0x47,0x95,0x06,0x52,0x4d,0x7f,0x1a,0x63,0x86,0xfc,0x14,0x98,0x8f,0xee,0x4e,
- 0x95,0x6b,0x7a,0x9e,0xb1,0xa0,0xd7,0xe4,0xe7,0x37,0x85,0x0d,0xc4,0x87,0x7c,0x89,
- 0xd8,0xf4,0xa7,0x7e,0x21,0x3f,0xe9,0x06,0xf0,0x45,0x36,0x7d,0xa2,0xfe,0xac,0x40,
- 0xfd,0x29,0x33,0x7e,0x22,0xbc,0x94,0xa9,0xfa,0x93,0xa8,0x24,0x04,0x39,0x96,0x6b,
- 0xfa,0xd3,0xe4,0xe7,0x5b,0xc2,0x25,0xe5,0x39,0x74,0x95,0x1b,0x34,0x46,0x32,0xff,
- 0xdd,0xc6,0xcf,0xdd,0x97,0x3e,0x3b,0x5f,0xd9,0x9c,0x9a,0x81,0x9c,0x57,0xc2,0x91,
- 0xbd,0x58,0xc7,0x99,0xfa,0x13,0xba,0x57,0xf8,0x90,0x9f,0x05,0x32,0x64,0xe4,0x85,
- 0x52,0x94,0x4e,0xe2,0xe7,0x41,0xb1,0x22,0xe6,0x94,0xb6,0x0a,0x12,0x63,0x39,0xae,
- 0xe9,0x53,0x9c,0x3e,0xd6,0x1a,0x3f,0x05,0x1f,0xeb,0xde,0x0a,0xfc,0xa5,0xb9,0xe8,
- 0xc8,0x5b,0xfc,0x64,0xfa,0x13,0x6a,0xd9,0x70,0xe8,0xfb,0x8a,0xcb,0xc6,0x4f,0xd4,
- 0x9f,0x3a,0xc2,0xcb,0xb1,0xa0,0x2e,0x9c,0xc2,0x4f,0x18,0x86,0x85,0x5a,0x7c,0x02,
- 0xc6,0x94,0x20,0x37,0x49,0x7f,0xce,0x95,0x37,0x82,0x6f,0x4f,0x12,0xe7,0x88,0xf1,
- 0x93,0xe9,0x4f,0x8b,0x9f,0x8d,0xe8,0xa2,0xf9,0x75,0xfd,0xb9,0x1f,0x9d,0x60,0xa6,
- 0x89,0x4c,0xfd,0x39,0x13,0xda,0xe5,0xb2,0x38,0xee,0xb7,0x67,0xd0,0x3f,0xd2,0xec,
- 0xc5,0xf2,0xdf,0x67,0xc2,0xef,0x33,0x9f,0xcf,0x8a,0x3f,0xe2,0xcf,0x4a,0x7f,0x4c,
- 0x6a,0x20,0xb5,0xf8,0xd9,0x06,0x57,0xe4,0xb0,0xb8,0x6c,0x5f,0x03,0x02,0xaa,0x79,
- 0x92,0xfe,0x54,0x1c,0x1f,0x29,0x27,0x93,0xe1,0x8b,0xee,0x4b,0xfc,0x55,0x65,0x22,
- 0x15,0x1e,0x42,0xff,0xfd,0xb4,0xc9,0xcf,0x9f,0x42,0x7b,0x51,0x65,0xdc,0xd9,0xdc,
- 0xb0,0x43,0x39,0x90,0xae,0x1e,0x12,0x51,0x7f,0x1a,0x75,0xc5,0xd0,0xd1,0xd2,0xae,
- 0xc9,0xce,0xe2,0x33,0xe2,0x01,0xb9,0xba,0x1f,0xeb,0x5e,0x34,0xf9,0xc9,0xf6,0xf7,
- 0x00,0x38,0x83,0xbe,0x0e,0x7d,0x7f,0x0f,0x92,0xdc,0xda,0xec,0xc4,0xb1,0x3e,0xc9,
- 0xf6,0xcd,0x51,0x64,0xf9,0x84,0xac,0xf9,0x9b,0xe7,0x0d,0x9b,0x4f,0x81,0x66,0x7a,
- 0x0c,0xef,0x9a,0xd6,0x50,0xab,0x33,0x16,0x3f,0xa5,0x8b,0x28,0xa1,0xea,0x47,0xb1,
- 0xdd,0xb8,0xc4,0xb4,0x14,0x0a,0xd8,0xec,0x0a,0xbd,0x6e,0x0b,0xee,0xef,0x28,0xcb,
- 0xb6,0x38,0x35,0xbe,0xe8,0xfe,0x6d,0x36,0x66,0xfa,0xef,0xcc,0xe5,0x25,0xa8,0xdd,
- 0x56,0x69,0x75,0xc9,0x8c,0xc5,0x4f,0xf4,0x8f,0xf6,0x93,0x00,0x71,0xce,0xcb,0xc3,
- 0xb1,0x96,0x03,0xfd,0x62,0xd0,0x9c,0x07,0x5a,0xb8,0x2a,0xfa,0x3e,0x84,0xa3,0xac,
- 0x9f,0x12,0xf6,0xb3,0x37,0x90,0x99,0x91,0x9d,0xa3,0xdf,0x73,0xd7,0x8d,0x23,0xca,
- 0xf3,0x50,0x4f,0xdc,0x17,0xca,0x51,0x2f,0x49,0x53,0xf4,0xe7,0xbb,0xae,0xe3,0xf7,
- 0x3f,0x5d,0xe6,0x4a,0xf2,0x3e,0xd4,0xf3,0xe8,0xa7,0x2e,0x37,0xfd,0x77,0x55,0x7a,
- 0x1b,0x1e,0x6a,0x08,0xa5,0x45,0x28,0xf0,0xc1,0x93,0x89,0xaa,0xac,0x73,0x3b,0x19,
- 0xcd,0xcb,0xf1,0x73,0x48,0x68,0x9d,0xef,0x03,0xc4,0x3b,0x00,0xd3,0xec,0x05,0x12,
- 0xb9,0x90,0xe3,0x67,0xd1,0x2f,0x51,0xa3,0xa0,0x5f,0xd5,0xd2,0x52,0x2e,0x3e,0xc9,
- 0x84,0xf6,0x56,0x32,0x6a,0x8c,0x19,0x94,0xf4,0xb2,0xf0,0x65,0x28,0xd0,0xc6,0x13,
- 0x0d,0xa4,0x0f,0xa7,0x6c,0xfe,0xfb,0x53,0x79,0x1f,0x7b,0x6f,0x3d,0xea,0x56,0xf9,
- 0x51,0x32,0xc1,0xfc,0xe2,0xd3,0x36,0xff,0x7d,0x37,0xfc,0x1e,0x9e,0x15,0xa7,0xb7,
- 0xf1,0xe7,0xe4,0x3f,0xcc,0xd7,0xe6,0x21,0x65,0xcc,0xd1,0x69,0xa6,0x89,0x16,0xc9,
- 0x59,0x51,0x24,0xb2,0x7c,0x85,0x6a,0xe3,0x19,0x34,0xf5,0x67,0x14,0x76,0x12,0xb9,
- 0xb9,0xc0,0x89,0x6b,0xfa,0x31,0x35,0x70,0x2a,0x2a,0x91,0x2e,0xc3,0x17,0x45,0x7e,
- 0x0e,0xb6,0x67,0xca,0xe4,0xe4,0x1d,0x64,0x26,0xda,0x4b,0xe5,0x88,0xf7,0x34,0xa9,
- 0x13,0xf4,0x3a,0xe4,0x27,0x7d,0x87,0x06,0xcf,0x4f,0x2f,0xe0,0x7b,0x07,0x7f,0x9f,
- 0xae,0x1b,0x09,0x78,0xf9,0xad,0x44,0xaf,0x53,0x6e,0xec,0x50,0xae,0xa4,0xff,0x8a,
- 0xba,0x53,0xce,0x41,0x98,0x90,0xea,0xfb,0x70,0x1d,0x0d,0x1a,0x3a,0xb9,0xd3,0xd1,
- 0x0f,0x47,0xe5,0x50,0xc4,0x4d,0xcb,0x2b,0xf2,0x5f,0x67,0xfa,0x33,0x65,0xe7,0x27,
- 0xd9,0x2c,0x96,0x29,0x4b,0xb3,0x3e,0x0f,0xd7,0x4e,0x70,0xa3,0x8f,0x91,0x0b,0x86,
- 0x5d,0x53,0xf8,0x5b,0xf8,0x6f,0x0c,0xe1,0x51,0x12,0x92,0x7e,0xc6,0xfc,0xf7,0xe5,
- 0x36,0x7e,0x9e,0x60,0xa1,0x5b,0xd5,0xe9,0x9d,0x5b,0x40,0x36,0xe1,0x58,0xef,0xb9,
- 0x9e,0xbc,0x06,0x39,0x7e,0xfe,0x1c,0x5e,0x13,0xba,0xda,0xdc,0x2b,0xf9,0x05,0xe8,
- 0x1b,0x86,0x51,0x88,0xa2,0xff,0x6e,0xc4,0x0b,0x90,0x9f,0xc3,0x80,0xfa,0x33,0xc1,
- 0x9f,0x53,0xc6,0xe0,0x27,0x30,0x9d,0xf9,0xef,0xfa,0xf3,0x90,0x9f,0x70,0x94,0x2e,
- 0x64,0x5a,0x6a,0x05,0xbc,0x23,0xd7,0x2a,0xcb,0x6c,0xfc,0x84,0x15,0x90,0x50,0x7d,
- 0xb7,0x3b,0x53,0xfc,0x62,0xd8,0x90,0xf5,0x4d,0xf1,0xdf,0xc9,0x86,0xf8,0xdc,0x45,
- 0x9f,0xd9,0x8e,0xec,0xd9,0x03,0x73,0x58,0xdd,0x09,0xcb,0x7f,0xe7,0x12,0x11,0xe4,
- 0xe7,0x0e,0xb2,0x4a,0xda,0xc0,0x3a,0x2c,0x91,0x63,0x0e,0x7d,0xda,0xbb,0x5d,0x32,
- 0xba,0xb5,0x0b,0x19,0x36,0xe3,0xd2,0x30,0xea,0x33,0xbb,0xff,0x5e,0x38,0x0e,0x1f,
- 0x2b,0x61,0x65,0xd9,0xe0,0x8c,0x97,0x99,0x10,0x65,0x62,0xf3,0x6d,0x21,0xc7,0xcf,
- 0x97,0xe1,0xe3,0x2c,0x72,0xfe,0x5e,0xde,0x23,0xfe,0x23,0xfa,0xef,0x1d,0xe8,0xdb,
- 0x9b,0xfc,0xc4,0xf7,0x4b,0xef,0xe2,0x9c,0x2c,0xa6,0xda,0x49,0xaa,0x98,0x31,0x9e,
- 0x30,0xec,0x33,0xba,0xb8,0x0f,0xb6,0xc4,0xe3,0x0a,0x9a,0x9e,0x20,0x3e,0x82,0xfc,
- 0xf4,0xdb,0xf8,0x59,0xb4,0x9b,0xee,0x11,0x7c,0x8b,0xb0,0xee,0x3d,0x7c,0x87,0xef,
- 0x2a,0xe2,0x76,0x93,0x05,0xe9,0xa2,0x7f,0x82,0x57,0xa1,0x2b,0xee,0x7e,0x94,0x73,
- 0x60,0xa1,0x4e,0xe3,0xa7,0xd1,0x97,0x95,0xdc,0x2f,0xe1,0x1d,0x40,0xbf,0x38,0xc5,
- 0xff,0x42,0x34,0x34,0xfb,0x29,0x9b,0xff,0x9e,0x95,0xbb,0xc0,0xdd,0x76,0xb3,0x0c,
- 0xc3,0x72,0x2d,0xd3,0xfa,0xbd,0x96,0xff,0x0e,0x0f,0x53,0x1f,0xfd,0xcc,0xf9,0x19,
- 0xb8,0x3b,0x2e,0x2e,0xef,0xdc,0x34,0xc9,0x7f,0x57,0x1e,0xeb,0xa9,0x50,0x9d,0xcf,
- 0x90,0x24,0xde,0xa2,0x82,0x6e,0x9a,0xec,0xbf,0xb7,0xe6,0x7f,0x43,0x75,0x8e,0x16,
- 0x5c,0x84,0x9f,0xd2,0xd9,0x09,0xe4,0x67,0x56,0xd0,0xdb,0xe9,0xf1,0xcf,0xa7,0x87,
- 0x96,0xae,0x75,0xfe,0x1c,0xde,0x46,0xfd,0x39,0x6d,0x2d,0xff,0xa6,0xe5,0xbf,0x0b,
- 0x87,0x60,0x2e,0xe3,0x52,0x1c,0x46,0x0d,0xfd,0x69,0xd8,0xa7,0x82,0xfe,0xe6,0xc7,
- 0xb4,0x26,0xeb,0xfe,0x01,0x3f,0x57,0x39,0x43,0xeb,0x57,0x04,0xc6,0xf8,0x41,0x93,
- 0x9f,0x8f,0x76,0xfe,0x86,0xca,0xc3,0xce,0x1f,0x92,0x99,0x74,0xd7,0xce,0xca,0x0a,
- 0xe4,0xcb,0xbb,0x86,0x2e,0x90,0x94,0x1d,0xf4,0x69,0x98,0xdd,0xef,0xbc,0x40,0x96,
- 0xd3,0x9f,0x49,0x95,0xa2,0xbf,0x19,0x17,0x94,0x5e,0xb7,0x52,0x3a,0x99,0xda,0xd7,
- 0x32,0x67,0x97,0x13,0x0a,0x14,0x48,0xa3,0xfe,0x44,0x47,0xfe,0x35,0xa3,0xee,0x89,
- 0x92,0x76,0x38,0x94,0xfc,0x28,0xe3,0x0e,0xb6,0xc6,0x0b,0x5e,0x83,0x3a,0x08,0x30,
- 0x46,0xea,0x7d,0x61,0xfc,0xbc,0x1c,0x59,0xe8,0x71,0x67,0x5a,0xd3,0xca,0x65,0xb6,
- 0xa7,0x5a,0xfe,0x7b,0x22,0xf5,0x91,0xf4,0xcf,0x52,0x0d,0xc3,0x66,0x08,0xde,0x97,
- 0x6b,0x04,0x2c,0x98,0x6c,0x45,0x7e,0x26,0x49,0x6d,0x45,0xc1,0xe1,0x02,0x50,0x06,
- 0x1d,0xbe,0x20,0xae,0xf7,0x61,0xcb,0x7f,0xa7,0x07,0x15,0x5f,0x4b,0xf4,0x99,0xe9,
- 0x32,0x74,0x82,0xaf,0x25,0x69,0xf9,0xef,0x05,0x82,0x8b,0x52,0xf9,0x97,0xde,0x82,
- 0xae,0x02,0x59,0x4e,0x65,0xe4,0x94,0x38,0x9f,0xf4,0x1a,0xf6,0x49,0x1f,0x5a,0x95,
- 0xbd,0x1c,0xec,0xea,0x77,0x75,0xf1,0x38,0x7f,0x62,0x68,0xbb,0xeb,0x29,0x3e,0xdb,
- 0x9a,0xf3,0xdf,0x47,0xe8,0xe5,0xe0,0x5c,0xaf,0x7b,0xdf,0x23,0x83,0xf2,0x58,0xd9,
- 0xe1,0x36,0xc6,0xcf,0x0a,0xdd,0x26,0x7a,0x8b,0x26,0xa4,0x37,0x3a,0x6b,0xc6,0x02,
- 0x97,0x51,0xcf,0x9f,0x84,0x9a,0x81,0x55,0xef,0x58,0xfe,0x3b,0xbc,0x4f,0x5a,0xd3,
- 0xe9,0x61,0x71,0x61,0x6f,0x55,0xf0,0xef,0xfa,0xca,0x87,0xc5,0x27,0xd0,0x0f,0x37,
- 0xf8,0x09,0x0f,0xb5,0x3c,0x36,0x37,0xbd,0x5c,0xac,0x61,0xb1,0x84,0xa8,0xfc,0x52,
- 0x81,0xaf,0xc0,0xd4,0x9f,0x9e,0xbd,0x79,0x9b,0x38,0x59,0x11,0x33,0x92,0x0b,0x1e,
- 0x83,0x5d,0x6a,0x81,0xe5,0xbf,0x73,0xc2,0x5e,0xe1,0x34,0x84,0xd2,0xae,0xc3,0x5c,
- 0x00,0x1d,0xc8,0x2e,0xb5,0x2a,0xdd,0x90,0xd3,0x9f,0x3d,0xd2,0xe1,0xbc,0x8b,0x72,
- 0xf5,0xee,0xea,0x71,0xe7,0x38,0x79,0x03,0x9e,0x57,0x0b,0xb3,0x24,0xc7,0xcf,0x66,
- 0xa9,0x03,0x5e,0x25,0x0b,0x23,0x81,0x67,0xf8,0x40,0x23,0xb6,0xeb,0xb5,0xf9,0xef,
- 0xc3,0x42,0x80,0xdb,0xa0,0xa0,0x8c,0x38,0x5c,0xf0,0xab,0xc8,0xe6,0x58,0xfd,0xef,
- 0x84,0x27,0xcc,0xfc,0x51,0xbf,0x20,0x42,0x6b,0x81,0x3c,0x88,0x4b,0x6b,0xba,0xc0,
- 0x02,0x4d,0xb7,0xa7,0x8b,0x73,0xf9,0xa3,0x53,0x52,0x01,0x69,0x4f,0x7d,0x36,0xeb,
- 0xfd,0x16,0x39,0xab,0xb4,0xd3,0x00,0xae,0x46,0x74,0x08,0xf4,0x76,0x51,0xc0,0x76,
- 0x5c,0xb0,0xdf,0x25,0xb5,0xb2,0x18,0x4b,0xb0,0x9f,0xf9,0xef,0xb9,0xf8,0xa7,0xa7,
- 0x5b,0x78,0x1f,0xaa,0x99,0x4e,0x3e,0x8c,0x9b,0xe4,0xe7,0xd4,0x65,0xe8,0x01,0x1a,
- 0x1c,0x14,0x3d,0x7b,0x51,0x0f,0x86,0x12,0x55,0x2d,0xac,0x9d,0x1c,0xea,0x0f,0xa4,
- 0xcd,0xf8,0x67,0x3f,0xec,0x80,0x57,0xe0,0x69,0x5a,0x28,0xdf,0x71,0x18,0x36,0x07,
- 0x76,0x1e,0xf3,0xa3,0xff,0x6e,0xc6,0x97,0x1e,0x85,0xc7,0x13,0x72,0x76,0xe3,0xf2,
- 0x99,0xb3,0xa4,0xf6,0xcc,0xec,0x11,0xe7,0x4a,0x33,0xfe,0x19,0xf5,0x74,0x08,0x8f,
- 0x0c,0xee,0x1e,0xcc,0x0f,0x92,0x0e,0xd2,0x8a,0x3e,0x1e,0xea,0x97,0x9c,0x1f,0xde,
- 0xef,0xd9,0x13,0xc3,0xe7,0x51,0x1c,0x46,0x3f,0x1c,0x73,0xd4,0x26,0xaa,0xb3,0xb6,
- 0xf8,0x67,0x1a,0x46,0xc5,0xc3,0xbc,0xae,0xf9,0x22,0x0b,0x39,0x81,0xda,0xf2,0x47,
- 0xbb,0xe1,0xa8,0x14,0x52,0x6e,0x4c,0x91,0x15,0xe4,0x28,0xcd,0x30,0x4e,0xf8,0xcc,
- 0xf8,0xe7,0x4d,0x64,0x0f,0xf8,0x50,0x96,0x15,0x20,0x2c,0x59,0x60,0x79,0x2b,0x91,
- 0x73,0xfc,0x14,0x5c,0xca,0x43,0x62,0xb9,0x72,0x73,0x73,0x71,0x1b,0x8a,0x84,0xb9,
- 0x8a,0x37,0x05,0x39,0xff,0x1d,0x04,0x07,0xfc,0x42,0xd9,0x19,0x9b,0xfb,0x7d,0xb2,
- 0x8e,0x25,0x92,0x62,0x0b,0x3c,0x91,0x9c,0xff,0x7e,0x1a,0x92,0x68,0x4f,0x21,0xd8,
- 0xac,0xf2,0x69,0x1c,0xa0,0x05,0xd0,0x48,0x9d,0x55,0x56,0xfc,0x53,0x3a,0xa8,0x84,
- 0x63,0x85,0xdb,0x1a,0x56,0xc0,0xa5,0x48,0x98,0xf9,0xef,0x66,0xfe,0x08,0xf5,0xe0,
- 0x51,0x12,0x8a,0xba,0x52,0x9b,0x56,0xc0,0x51,0x31,0xa4,0xb8,0xb6,0x98,0xf1,0x4f,
- 0xaf,0xb8,0x53,0x3e,0xbd,0xa6,0x16,0xc4,0x36,0x92,0xc6,0xcd,0xc6,0xe7,0x89,0xaa,
- 0x66,0xfc,0x53,0x69,0xdc,0x76,0x6c,0x9d,0x6b,0xe7,0x57,0xf3,0xef,0x6e,0xb9,0x57,
- 0x5e,0x27,0x96,0x45,0xc4,0xbb,0x23,0xa7,0x0c,0xfb,0xdc,0x2e,0x6c,0x83,0x5f,0x35,
- 0xce,0xbe,0x57,0x1c,0x94,0x9f,0x82,0x87,0x48,0xd9,0x22,0x71,0xd0,0x8a,0x7f,0xa2,
- 0x8f,0xbe,0x01,0xba,0x16,0x15,0x6e,0xe5,0xf0,0x79,0x5c,0x48,0x09,0xa4,0x1a,0x72,
- 0xfc,0xfc,0xb6,0xb4,0xbb,0x68,0x0b,0x62,0xb3,0x3a,0xe5,0x1c,0x92,0xdf,0xe1,0x9e,
- 0x43,0x7e,0x22,0x27,0xf4,0x76,0xc8,0x4f,0xbe,0x1f,0x6a,0x85,0xa6,0xb6,0x06,0x99,
- 0xa8,0xb8,0x51,0x34,0xa9,0xce,0x82,0x9c,0xd6,0x17,0xe6,0xc2,0x1d,0xd4,0x97,0xf1,
- 0x77,0xf2,0x7f,0x2e,0x6d,0xa4,0xbe,0x74,0xb4,0x93,0x14,0xe4,0xf6,0x9c,0x36,0x17,
- 0x3c,0x42,0x2b,0x2e,0x88,0xdd,0xd3,0x7f,0xa5,0xb4,0x26,0xfc,0xe7,0x56,0x2e,0xc0,
- 0x3a,0x7d,0x5c,0x38,0x28,0x2d,0x5b,0x2f,0xca,0x54,0x6c,0x6e,0x19,0xe4,0xd6,0x8b,
- 0x65,0xbd,0xb0,0xb6,0xc5,0x9f,0x6b,0x87,0xee,0xc4,0x0b,0xcc,0x6d,0xf7,0x3b,0x9f,
- 0x43,0xdd,0x73,0x6b,0xb6,0x69,0xd8,0x39,0xd7,0xb0,0x4f,0xbf,0x77,0x2f,0xf9,0x91,
- 0xa6,0xeb,0xa6,0xc5,0x05,0x2d,0xfe,0x99,0x36,0xf5,0x67,0xc4,0xf5,0x0c,0xf7,0x5e,
- 0xe2,0xc0,0x39,0xd7,0x69,0x3e,0x4c,0x5e,0xca,0xd4,0xac,0xc2,0x42,0x2e,0x7e,0xd6,
- 0x09,0xdb,0xa0,0x43,0xbe,0x45,0xf5,0x8f,0x92,0x3a,0xe8,0x90,0xca,0x1b,0x71,0x5c,
- 0x72,0xf9,0xa3,0x0c,0x3d,0x0c,0x8f,0x93,0x9d,0x7d,0xfe,0x45,0xe8,0xdb,0xb7,0x97,
- 0x95,0xdd,0x2e,0x46,0xf1,0x69,0xfa,0xfb,0x29,0xc2,0x5e,0xa9,0x55,0x98,0xa3,0x8a,
- 0x9f,0xc7,0xe5,0xd3,0x4a,0x70,0xe1,0x03,0x11,0x8d,0x79,0xd8,0x2e,0x74,0xba,0xfe,
- 0x40,0xba,0x14,0xcd,0x6f,0xc4,0x75,0x4b,0x03,0x19,0x67,0xee,0x9e,0x6d,0xb8,0x79,
- 0x5d,0x80,0x30,0xe7,0xce,0x94,0x67,0x59,0xec,0xde,0x1e,0xff,0x4c,0xd0,0xc3,0x05,
- 0x88,0x23,0xc5,0x15,0xcf,0x3f,0x0c,0xbf,0x85,0x9a,0xb4,0x6b,0xd8,0x09,0x86,0xff,
- 0xde,0xe3,0xa9,0x44,0x19,0x31,0xb7,0x62,0x6e,0x86,0xc8,0xe4,0x75,0xce,0x77,0xd1,
- 0xff,0x59,0xd3,0x3e,0x29,0xc8,0x72,0xbe,0xa0,0xe5,0x8f,0xf6,0xb2,0x3d,0x3c,0x85,
- 0x6c,0x95,0x73,0x63,0xa6,0xd5,0xfb,0xd5,0x82,0x60,0x41,0x07,0xc2,0x5b,0x0b,0x88,
- 0xe5,0xec,0xb3,0x05,0x9a,0xd8,0x32,0x57,0x03,0x94,0x47,0x47,0x17,0x17,0x54,0x47,
- 0x9a,0x07,0xc3,0x3e,0x13,0x25,0xe3,0xc5,0x9a,0x9c,0x1b,0x2d,0x7f,0x10,0xde,0x67,
- 0x85,0xac,0x4d,0x7f,0x9e,0x85,0x37,0xd4,0x7d,0x2b,0x5c,0x1f,0xa2,0xfe,0x7c,0x83,
- 0xab,0xc9,0xba,0xa2,0xe5,0xf6,0xf8,0xe7,0x26,0xa6,0x23,0xf7,0x11,0x99,0x6e,0x6a,
- 0xf3,0xb1,0x7d,0xda,0x1e,0xff,0xdc,0x2a,0xfb,0x92,0x2b,0xbb,0x50,0xf3,0xa1,0xdf,
- 0x81,0x9d,0x9b,0x14,0xff,0xdc,0x84,0xfb,0x6d,0x32,0x53,0x20,0xd3,0x3d,0xc5,0x3e,
- 0x19,0xe1,0x65,0xc6,0x3f,0x3d,0xbb,0x71,0x2d,0x85,0x4e,0xa1,0x7c,0x94,0x59,0x1c,
- 0x33,0x1b,0x00,0x5e,0x30,0x9e,0x77,0x0e,0x9e,0x62,0x9a,0x3d,0xb9,0x79,0x94,0xbf,
- 0x00,0x6f,0xd0,0xfa,0x9e,0x65,0xbd,0x66,0xfc,0x93,0xe5,0x8f,0xd0,0x3f,0xa2,0xae,
- 0x0c,0x37,0x0c,0xbf,0x17,0xbb,0x7a,0xf1,0x45,0xb7,0x19,0xf6,0xa9,0x0a,0x2e,0xd8,
- 0x44,0xe4,0x6d,0xe2,0x1a,0x72,0x3c,0x9e,0xaf,0xf8,0x62,0xe2,0x3a,0x5b,0xfe,0xbd,
- 0x29,0xb2,0x87,0xf8,0x15,0x71,0x7e,0x4b,0x2f,0x94,0xc7,0x7c,0x83,0x49,0x20,0x19,
- 0xbd,0x27,0xd0,0x8d,0xfb,0xfb,0xe6,0x54,0xf9,0x88,0xf8,0x43,0xf2,0x11,0x6d,0x4d,
- 0x97,0x0d,0x47,0x5f,0xb3,0xc5,0x3f,0xa7,0xa3,0xb6,0x59,0x30,0xec,0x5a,0xd0,0x70,
- 0x82,0x9e,0xcb,0x86,0xf6,0xb8,0x44,0x7e,0x6b,0xce,0x7f,0x2f,0xdc,0x3b,0x78,0xc5,
- 0x51,0xdf,0x53,0x3d,0xca,0x0f,0x28,0x57,0x83,0xcf,0x53,0x1c,0x4f,0xcb,0x7f,0x1f,
- 0xc2,0xa5,0xac,0xe5,0xb9,0x1a,0x91,0x9f,0x17,0x7a,0x06,0xa8,0x4d,0x7f,0x6e,0x83,
- 0x76,0x28,0x53,0xc5,0xe6,0x3c,0x8f,0x70,0x4a,0xfa,0xba,0x2a,0x2a,0x93,0xfc,0xf7,
- 0x6d,0xb4,0x3c,0xcb,0x2d,0x58,0x12,0x96,0x7f,0x91,0x2c,0x1f,0xbd,0x23,0x3a,0x29,
- 0xfe,0xf9,0x08,0xa4,0x87,0xf6,0x64,0x48,0x25,0xec,0x4b,0xec,0x1a,0x2b,0xf0,0xd9,
- 0xfc,0xf7,0x8d,0xf0,0x68,0xac,0x3c,0x9d,0x9f,0x75,0xfe,0x40,0x7a,0x97,0x7e,0x2f,
- 0x35,0x3d,0x6e,0xf7,0xdf,0x15,0x26,0xf5,0xa6,0xa3,0xde,0x10,0xbc,0xe2,0x73,0x50,
- 0x49,0x39,0xd3,0x7f,0x8f,0xa1,0xec,0x84,0x2e,0x25,0x2f,0xc5,0xcf,0x49,0x1f,0x57,
- 0xbb,0x94,0x8e,0xad,0x7c,0x8b,0x5d,0x7f,0x2a,0x3e,0xc5,0x9f,0xe2,0xff,0x0b,0x1a,
- 0xb2,0x96,0xdf,0x94,0x8d,0x71,0xf1,0xa2,0x8f,0xbe,0x47,0x94,0x99,0xcb,0x5b,0x09,
- 0x7b,0x14,0xad,0x6e,0xbd,0xa5,0x3f,0x85,0x0d,0x88,0x4d,0x71,0x1b,0x59,0x0c,0x3b,
- 0x41,0x5e,0x8d,0x3e,0x33,0xe1,0xf4,0x96,0xdd,0xa2,0x8c,0x6a,0x58,0xcb,0xbf,0xcb,
- 0x64,0x18,0x0b,0x1d,0xe9,0xa2,0x5f,0xe7,0xfc,0xf7,0x42,0xd4,0x98,0x70,0x9b,0x72,
- 0xe7,0x36,0xfe,0x22,0xbc,0xde,0x58,0xaf,0x54,0x5b,0xf1,0x4f,0xaf,0xe3,0x22,0x8f,
- 0x6e,0x4a,0xa3,0xfb,0xe7,0x0d,0x8d,0xf0,0x92,0x7c,0xeb,0xa2,0xa6,0x41,0x9b,0xff,
- 0x9e,0x85,0xa4,0xb8,0x90,0xc5,0x3f,0x83,0xa8,0xde,0x7c,0x2d,0xa2,0xe5,0xbf,0x2b,
- 0x8e,0x3e,0x71,0x1d,0x87,0xbe,0xe8,0x97,0x5b,0x3c,0x3b,0x13,0x5c,0xfa,0xf6,0x02,
- 0x9b,0xfe,0xfc,0xe2,0x6e,0x6e,0x03,0xdc,0x1c,0x75,0x0e,0x2e,0xf1,0xc8,0x1b,0xa6,
- 0x3d,0x70,0x7f,0x81,0xcd,0x7f,0xdf,0xb6,0x1e,0x36,0x7c,0xa3,0x2a,0xee,0x4e,0xe5,
- 0xdf,0x24,0x6d,0x50,0x42,0xb1,0xaf,0x6d,0xb5,0xc5,0x3f,0x1f,0x97,0x5e,0x85,0x85,
- 0x71,0xfd,0x9c,0x40,0xaa,0x56,0xa9,0xdc,0xda,0x3a,0xc9,0x7f,0x5f,0x1c,0x42,0xb7,
- 0xfd,0x9e,0x0f,0xe0,0xb4,0x58,0xeb,0x45,0xfb,0xdc,0x98,0xab,0x13,0x16,0x0a,0x1b,
- 0x13,0xa8,0x3f,0xd3,0xc5,0x63,0xf0,0x4a,0x23,0x4f,0xa3,0x6f,0x92,0xdc,0x11,0x1c,
- 0x16,0xff,0x2c,0xa7,0x15,0x2c,0xe4,0xd4,0x5f,0x4c,0xa5,0x39,0x83,0x20,0x90,0x16,
- 0x83,0x9f,0x65,0xdc,0xfc,0x8a,0xcd,0x1b,0xef,0xa7,0x4e,0x85,0x8c,0x71,0x8f,0xc2,
- 0x6c,0x35,0x7a,0x9a,0x88,0x66,0xfc,0x33,0x2c,0xbd,0x4d,0xff,0x6b,0xd6,0xb9,0x96,
- 0x7f,0x05,0x5e,0xa2,0x9f,0x8b,0xbb,0x96,0xf3,0x1b,0x73,0xfe,0xfb,0x9d,0xbb,0xe1,
- 0x4d,0x78,0x96,0xe2,0xbe,0x39,0xc4,0xe2,0x9f,0x8a,0x5b,0xb2,0xf9,0xef,0x57,0xe1,
- 0x1f,0xe9,0xfc,0x2c,0xba,0xed,0x0b,0x95,0xfe,0x74,0xcd,0x90,0xeb,0xa0,0xcd,0x7f,
- 0x7f,0x98,0x6e,0xd8,0x25,0xa7,0xc5,0x02,0xdf,0x0d,0x0a,0xed,0xf2,0x65,0xa3,0x0b,
- 0x4c,0xff,0x9d,0xc2,0x61,0x65,0x5b,0xb0,0x5c,0x8d,0xae,0xc9,0xab,0x6d,0xa3,0xc1,
- 0x77,0x9a,0xc4,0x25,0xa6,0xfe,0x44,0xff,0x5d,0xa4,0x51,0x1c,0x7e,0x20,0x0e,0xa0,
- 0x89,0xb9,0x8c,0x9f,0xa7,0x4c,0xff,0xbd,0x03,0x5e,0x5f,0xb7,0x6b,0x6d,0x20,0xb3,
- 0xf4,0xb3,0xa4,0x27,0xbe,0x70,0x91,0x6b,0x07,0x8e,0x67,0xce,0xe6,0xd1,0x7f,0x2f,
- 0x62,0x3e,0xc9,0x8c,0x61,0x72,0x59,0x9e,0x13,0xdf,0x9c,0x34,0x35,0x26,0x17,0x1b,
- 0x87,0xf3,0xb0,0xbf,0xb1,0x63,0x94,0x9f,0x2f,0x0f,0xa4,0xea,0xa1,0x63,0x70,0x46,
- 0x2e,0xfe,0xd9,0x83,0xfa,0xb3,0x05,0x98,0xef,0x7b,0x83,0x00,0xaf,0x29,0xbe,0xfb,
- 0xc5,0x0e,0x2b,0xfe,0x89,0xf2,0x57,0xdb,0xfb,0x83,0xc4,0x0f,0xc9,0xc6,0x5f,0x3f,
- 0x20,0x76,0x14,0x9b,0xfe,0x3b,0x5a,0xdf,0x06,0xbf,0x4c,0xfc,0x04,0xeb,0xb6,0x06,
- 0xd3,0x31,0x7f,0x9e,0xe9,0xbf,0x2b,0xe2,0xaa,0xce,0xe1,0xb2,0x35,0x5f,0x74,0xd5,
- 0xb6,0xce,0x56,0xfb,0x85,0xf0,0x72,0x9c,0x3f,0xcb,0x7f,0x1f,0x08,0x8e,0xf9,0xeb,
- 0x0b,0x96,0xb5,0x3c,0x72,0x84,0x8e,0xc7,0xc3,0xcb,0x37,0xf7,0xd9,0xf8,0x79,0x01,
- 0x50,0xc6,0xf7,0x3f,0x74,0x61,0x46,0x80,0x0e,0xd0,0x9a,0xa0,0x6b,0xcc,0xe6,0xbf,
- 0x67,0xdb,0x0e,0xfa,0xab,0x47,0x9d,0x1f,0x9e,0x3a,0xac,0x26,0x65,0xec,0x70,0x37,
- 0x19,0xcd,0xe9,0x1e,0x47,0x3f,0x7a,0x2b,0x81,0x41,0x96,0xcb,0xc2,0x1d,0x52,0x66,
- 0xb1,0x84,0x0b,0xd6,0xf9,0x25,0x38,0x28,0x68,0xa9,0xaf,0x0e,0x42,0x25,0xd9,0x9e,
- 0x7f,0x97,0x4a,0xb2,0xf4,0x34,0x6e,0x35,0x85,0x99,0xb2,0x00,0x1c,0x8b,0x6e,0x15,
- 0x03,0x99,0x06,0x5b,0xfe,0x5d,0x1c,0xdf,0xf6,0x27,0xaa,0xbb,0x19,0x39,0x7f,0x1b,
- 0xd4,0x53,0xf7,0x28,0xb1,0xe2,0x9f,0x69,0x0d,0xb7,0xae,0xcc,0xd7,0x03,0x70,0x19,
- 0xf1,0xd8,0x91,0xe1,0xff,0x87,0x95,0x3f,0x82,0x83,0x50,0xde,0x23,0xb2,0x7d,0xf3,
- 0x20,0x02,0xbf,0xd0,0x9e,0x7f,0x6f,0x84,0x0c,0xdb,0x6a,0x50,0xbb,0x89,0x5b,0xd8,
- 0x98,0x5a,0xf9,0xf7,0x51,0x6e,0x26,0x3c,0x4f,0xe5,0x6c,0x74,0x2d,0x79,0xb4,0xed,
- 0x99,0xf4,0xcd,0x7e,0x8e,0xc5,0x3f,0xf5,0x76,0xc8,0x4f,0xb5,0x8b,0x0b,0xf6,0xa1,
- 0xbb,0xf1,0x30,0xbd,0x94,0x5e,0x38,0x72,0x26,0x58,0x6e,0xcb,0xbf,0x0b,0x07,0xe0,
- 0x6a,0xaf,0x7b,0xb4,0xf5,0xc1,0xf8,0x55,0xa9,0xb6,0xe7,0x4f,0x6c,0xf9,0xf7,0x92,
- 0x73,0x28,0xff,0xc3,0x3d,0xee,0xa7,0xca,0xdf,0x73,0x1c,0xf7,0x85,0xa3,0x6e,0x2b,
- 0xff,0xde,0x7f,0xfd,0x0e,0xf9,0x19,0xa8,0x3c,0xe6,0x5c,0x4d,0x06,0x7a,0xda,0xa5,
- 0xca,0xbe,0xa5,0xcd,0xbe,0x0b,0x66,0x2e,0xf2,0x11,0x38,0x40,0xbf,0x33,0xec,0x5c,
- 0x5b,0x7c,0xb6,0xad,0x3d,0x51,0x19,0x5f,0x6a,0xe5,0xdf,0xa3,0xc2,0x00,0x1c,0x12,
- 0x8d,0x58,0x73,0xeb,0x9a,0x00,0x4b,0x20,0x9e,0x32,0xf9,0xf9,0xa4,0x96,0x76,0x67,
- 0xa1,0x77,0x38,0xa6,0x86,0xbb,0xdd,0x93,0xf2,0xef,0x34,0x17,0xff,0x24,0x53,0xf2,
- 0xef,0xa2,0xa4,0xa5,0xe1,0x98,0x0b,0xda,0xa7,0x07,0xa4,0x99,0xff,0x6e,0xe6,0xdf,
- 0x05,0x1c,0xc6,0x98,0x96,0x5f,0x61,0x89,0xa4,0x29,0xf9,0xf7,0x83,0x40,0xe2,0x7a,
- 0x9d,0x30,0x25,0xfe,0xe9,0x10,0xf6,0x35,0xa6,0x59,0xfc,0xf3,0x88,0x96,0x88,0x9f,
- 0x1c,0xff,0x94,0xc6,0x84,0x10,0xd5,0xb4,0x30,0xcb,0x4f,0x6f,0xb6,0xe7,0xdf,0x8d,
- 0xb0,0xe7,0xb6,0x86,0xb7,0xc8,0x94,0xfc,0xfb,0x76,0x07,0xea,0x4f,0x21,0x7c,0xc7,
- 0xe6,0xd4,0x63,0x43,0xe4,0xa8,0x1e,0x1b,0x7d,0xdb,0x96,0x3f,0x4a,0xca,0x55,0x92,
- 0x13,0xc8,0x39,0x48,0xfa,0xaa,0xec,0xf9,0xf7,0xa8,0xa3,0x6f,0x77,0x42,0x5c,0xa5,
- 0x38,0xa5,0xad,0x47,0xb0,0xa0,0xc5,0x62,0x4f,0x99,0xf9,0xf7,0x36,0xd8,0x10,0x60,
- 0x5d,0x7f,0x80,0x9d,0xc1,0xaa,0xc2,0x17,0x8d,0x98,0xfa,0xd3,0xb3,0x9b,0x3d,0x46,
- 0x59,0xc6,0xe2,0xc2,0xc6,0xf3,0x4c,0xff,0x1d,0x7e,0x19,0xfd,0x81,0x80,0x73,0x9b,
- 0xe2,0x87,0xb8,0x4b,0x04,0xe7,0x36,0xc5,0xdb,0xf4,0xa7,0xd4,0xaf,0x84,0x89,0x96,
- 0x1f,0x1b,0x9b,0x92,0x7f,0x17,0xfc,0xd2,0x46,0xa8,0x4a,0x2d,0x4d,0x13,0xbf,0x70,
- 0xf9,0x93,0xf2,0xef,0x6c,0x1d,0x3d,0x10,0xc8,0x9d,0x0f,0x39,0x66,0xe5,0x8f,0x8e,
- 0xb5,0x57,0x7c,0x47,0x59,0xfa,0x43,0x96,0xcf,0x81,0xca,0x7e,0x5b,0xfe,0x1d,0xf9,
- 0x29,0xff,0x36,0x7b,0xdb,0x39,0xf7,0x83,0xfc,0xac,0xc4,0x1f,0x53,0xb7,0x8d,0x4e,
- 0xca,0xbf,0xff,0x2a,0x75,0x85,0x84,0xbf,0x8a,0x7e,0xf1,0x48,0xd9,0x1f,0x82,0xe1,
- 0xde,0x49,0xf1,0xcf,0xb3,0xf4,0xa4,0x1a,0x4e,0x77,0x1c,0xe4,0xaf,0xca,0x2c,0x01,
- 0xe5,0x62,0xfe,0x7b,0x2e,0xff,0xde,0x41,0xff,0x01,0x2a,0x2b,0xfc,0x6b,0x23,0x67,
- 0x8a,0xf6,0x77,0xa6,0xfb,0xfc,0x56,0xfe,0x5d,0x82,0xc3,0xbf,0x63,0x26,0x8b,0x1a,
- 0xe5,0x0c,0x3c,0x0f,0xe5,0xaa,0x3d,0xfe,0x29,0x9d,0x80,0x47,0xd4,0xc0,0x22,0x31,
- 0xe8,0x1b,0x80,0xfd,0xaa,0x76,0x98,0xe0,0xb4,0x99,0x7f,0x3f,0x2c,0x9c,0x14,0xc3,
- 0xcc,0x0f,0x1f,0x87,0x89,0x96,0x1a,0x2d,0xfe,0x69,0xfa,0xef,0x23,0xca,0x15,0x61,
- 0xfa,0xa0,0x3b,0xc8,0x72,0xc2,0x42,0x38,0x6b,0xd3,0x9f,0x5b,0x52,0xe3,0xfe,0x89,
- 0xfc,0x79,0x32,0xcb,0xdb,0xc3,0x84,0xa8,0xe7,0x8f,0x4c,0xff,0x7d,0x95,0x74,0x2b,
- 0xd4,0xd6,0x89,0x2c,0xff,0x7e,0xab,0x16,0xff,0xf4,0xe5,0xec,0x93,0xe5,0x8f,0xf6,
- 0x83,0x2f,0x11,0xcd,0xf8,0x02,0x66,0x6c,0x34,0xe7,0xbf,0x03,0x4b,0xbf,0x56,0x50,
- 0x96,0x0b,0x61,0xe7,0xac,0xd8,0x81,0x81,0x9c,0x7d,0xd2,0xe4,0x8f,0x51,0xbb,0x21,
- 0xd1,0x46,0x9d,0x75,0x0a,0x8b,0xc9,0x61,0x3f,0xb3,0x66,0xfe,0x7d,0x7c,0xf7,0x04,
- 0xf7,0x79,0x61,0xf3,0x07,0x0d,0xd7,0xc6,0x3f,0x0b,0x47,0xe1,0xb7,0xf2,0x3c,0xb5,
- 0x29,0x8a,0x7a,0xbe,0x8f,0xd6,0xa8,0x85,0xb6,0xf3,0x4b,0xb8,0x8b,0x6d,0x5e,0x59,
- 0x7e,0x4a,0x4c,0x3a,0xbf,0x0b,0x49,0x8a,0xe3,0x62,0xf1,0x33,0x09,0xb4,0x38,0x51,
- 0xec,0x5f,0x2e,0xd2,0x3c,0x17,0x6c,0x04,0xb9,0xc7,0xce,0xcf,0xc6,0xb4,0xb8,0x07,
- 0x70,0x1b,0x4a,0xe6,0xad,0x82,0x64,0x4f,0x3a,0x2e,0x66,0x22,0xa3,0x96,0xff,0x4e,
- 0x8e,0xd3,0x85,0x4a,0x40,0xe4,0x03,0xa0,0xd2,0x90,0xfd,0xfc,0x52,0x0f,0xec,0x10,
- 0xde,0x48,0x3d,0xad,0xb8,0x55,0x7e,0x1c,0x41,0xa6,0xf5,0x73,0xdc,0xb0,0xcf,0x38,
- 0xec,0x45,0x7f,0xb3,0xab,0x0f,0xf5,0xcb,0x2a,0xb8,0x9c,0x0c,0xb5,0x05,0xac,0xfc,
- 0xd1,0xb0,0x27,0x50,0xb1,0x61,0x90,0x64,0xc5,0x87,0x88,0x0b,0xba,0x15,0x5f,0x5a,
- 0xb4,0xf2,0x47,0xaa,0xc0,0x53,0x94,0xf1,0x47,0xfd,0x37,0x22,0x7b,0x10,0xa4,0x3d,
- 0x7e,0x8b,0x9f,0x00,0xc5,0xea,0xba,0x44,0x59,0x56,0x3c,0x4d,0x1e,0xa5,0x87,0xdb,
- 0xd2,0xa3,0xe2,0xda,0x88,0xc9,0x4f,0x20,0xf4,0x05,0x1a,0x54,0x5c,0x25,0xfc,0x09,
- 0xfa,0x21,0x3a,0xf2,0x8d,0xb6,0xf3,0x4b,0x9e,0x14,0x99,0xc8,0xd4,0xc7,0xd1,0xcd,
- 0xac,0x43,0xe1,0xc4,0x38,0xcf,0x0f,0x12,0xbd,0x9f,0xa2,0xf0,0x50,0xe6,0x68,0x3c,
- 0xb4,0x1c,0xfb,0x79,0x9e,0x71,0xa9,0x7f,0x95,0xed,0xfc,0x92,0xb2,0x03,0x5d,0xde,
- 0x9d,0x11,0xbf,0x82,0x36,0xd8,0x0e,0x81,0x3e,0xb4,0x41,0xbb,0xff,0xde,0x8e,0x2c,
- 0x17,0x9b,0xc8,0xa3,0xb0,0x9e,0x56,0xda,0xcf,0x7f,0x46,0x3d,0x0f,0xa9,0xad,0xc2,
- 0xae,0x3e,0x7f,0x05,0x19,0xe0,0x5a,0x06,0x03,0xcc,0x00,0x4c,0xff,0x5d,0x78,0x12,
- 0x4e,0x40,0x57,0xda,0x35,0xc4,0x77,0xc2,0x09,0x29,0xdc,0x39,0xe9,0xfc,0x12,0xc5,
- 0x77,0x7d,0x8e,0x9d,0x49,0xd4,0xf8,0x29,0x57,0xdb,0xf8,0x89,0x7e,0x6a,0x0f,0xf2,
- 0x33,0xb0,0x95,0xe5,0xb5,0x53,0xb5,0x6a,0xc0,0xe2,0xa7,0x2a,0x54,0x44,0x36,0x28,
- 0xbb,0x62,0xe8,0x6e,0x0c,0x09,0xfb,0x34,0x47,0xde,0xe2,0xa7,0x30,0x1b,0x36,0x88,
- 0xbe,0x88,0x76,0xbe,0xee,0xa0,0x52,0xf1,0xa6,0x88,0xec,0xc9,0xf9,0xef,0xe0,0x41,
- 0x6c,0xa6,0x63,0x28,0x3b,0xfb,0x70,0x03,0x95,0x63,0x51,0x8b,0x9f,0xa7,0xbd,0x2c,
- 0xf7,0x11,0x32,0xf2,0x2b,0x2c,0x3f,0x4d,0x1b,0xec,0xe7,0x97,0x3e,0x56,0xb4,0xb4,
- 0x7b,0x1f,0x7c,0xcc,0x85,0x63,0xd5,0xb6,0xf3,0x4b,0x85,0x17,0xe1,0x63,0x75,0xff,
- 0x37,0x5c,0x31,0xe7,0x7c,0x38,0x02,0xe1,0x48,0xc0,0xe2,0xa7,0x17,0x3d,0x96,0xee,
- 0xf4,0xae,0xf9,0x28,0x3b,0x65,0x92,0x64,0x79,0x5f,0x8b,0x9f,0x71,0x68,0x8b,0x1d,
- 0x8c,0xcb,0xd1,0xe5,0x12,0x11,0xa4,0x9d,0x10,0x88,0x88,0x16,0x3f,0xbb,0x95,0xdd,
- 0x70,0x50,0xf6,0x35,0xb2,0x63,0x83,0xb0,0x47,0xae,0x6a,0x14,0x6d,0xe7,0x97,0xda,
- 0x58,0x8e,0x28,0x14,0x0f,0x78,0xf9,0x0a,0x78,0x27,0x59,0x15,0x0d,0x58,0xfc,0x8c,
- 0xc2,0x6e,0xe9,0x12,0x3c,0x17,0x77,0xff,0x35,0x8e,0xd9,0xab,0x22,0xae,0x77,0x8b,
- 0x9f,0x22,0xba,0x60,0x63,0x34,0x48,0x02,0x2d,0x3c,0x3b,0xc8,0x34,0x5f,0x0a,0x58,
- 0xfc,0x14,0x3d,0x0b,0x83,0x1f,0x41,0x79,0xda,0xff,0x6e,0xb1,0x57,0x3c,0x2b,0xa2,
- 0x7d,0x5a,0xfc,0x14,0xd1,0x77,0xaa,0xa1,0xd9,0xd1,0xfc,0x8a,0x82,0x24,0xfe,0xb3,
- 0xa2,0x4b,0xb4,0xf8,0x59,0x06,0xa5,0xb0,0x5f,0x29,0xeb,0xcd,0x6f,0x26,0x0b,0xe0,
- 0xa7,0xb4,0xac,0x45,0xb4,0xf1,0x93,0xce,0x82,0x3f,0xd2,0x4c,0xb6,0x70,0x25,0xff,
- 0x2c,0xbc,0x48,0x6f,0x91,0x03,0x36,0x7e,0x4a,0x9d,0xec,0x8c,0xa0,0x3a,0x3d,0x83,
- 0x7b,0x2a,0xce,0xfb,0x6b,0x76,0x7e,0x0a,0x0f,0x47,0x5e,0xa0,0xdf,0xcb,0xba,0x0e,
- 0x3a,0x6f,0x20,0x27,0xe8,0xad,0x69,0x57,0xb7,0xc9,0xcf,0x3d,0xd2,0xc3,0x89,0x44,
- 0xba,0x2c,0x8a,0xfe,0x58,0x81,0xba,0x1e,0x2a,0x7b,0xb0,0xf0,0xae,0xa9,0x15,0x77,
- 0xc0,0xdf,0xa2,0x14,0xba,0x7d,0xb4,0xc5,0x4b,0xdb,0x44,0x3f,0x45,0x90,0xe6,0xf4,
- 0xa7,0xe2,0x49,0xa2,0x9f,0xee,0x83,0x0d,0x0b,0x0a,0x44,0xa0,0x34,0x30,0x24,0x5a,
- 0xf9,0xcd,0xa4,0xb0,0x9b,0xc5,0x93,0x95,0x4a,0x3f,0xca,0xbe,0x5e,0xba,0x50,0xb5,
- 0xc5,0x3f,0x29,0xda,0xe0,0x3b,0xb8,0x57,0x4d,0x4f,0x39,0x87,0xe1,0xb2,0xa0,0xe5,
- 0x8f,0xcc,0xf3,0x4b,0xca,0x53,0xd2,0xc7,0x52,0x4d,0x63,0x65,0x96,0xef,0x86,0xf1,
- 0x74,0xcd,0x9b,0x01,0x8b,0x9f,0x3d,0xa8,0x3d,0x0f,0x46,0x7d,0x77,0x27,0xbb,0xf9,
- 0x95,0x52,0xf7,0xb9,0xda,0xc1,0x68,0xc6,0xb4,0x4f,0x2a,0xcc,0x81,0x6e,0xd0,0xa4,
- 0x1e,0x8a,0x38,0x90,0x5f,0xb6,0xf1,0x53,0x04,0x61,0x67,0x57,0x34,0x4d,0x17,0x04,
- 0x49,0x54,0xc9,0x40,0x05,0xb2,0xa0,0x25,0x17,0xff,0x54,0xc4,0x15,0x74,0x4c,0x41,
- 0x7e,0x76,0x39,0x3b,0x51,0x74,0x84,0xd4,0x40,0x17,0x9f,0xe5,0xf4,0x79,0xa0,0xd7,
- 0x8f,0xc9,0x57,0x65,0x5c,0xe6,0xdf,0xe7,0x3b,0xd5,0x71,0xe3,0xfc,0x52,0x2e,0xc7,
- 0xee,0xb8,0xea,0x99,0x98,0x59,0xa3,0x36,0x1d,0x2d,0x0f,0x7b,0xaf,0xe8,0xe7,0xc1,
- 0x46,0x6d,0xfe,0xfb,0xf3,0xf1,0xf2,0xd3,0x62,0x31,0xa9,0xf2,0x1e,0xa2,0x55,0x2c,
- 0xff,0x6e,0xe9,0x4f,0xdc,0x6a,0x24,0xf9,0x54,0x94,0xf1,0xd3,0xd8,0x37,0x2d,0xfd,
- 0xb9,0x57,0xda,0x4f,0xf4,0x18,0x84,0xb6,0x07,0x38,0x2d,0xfd,0x49,0x8b,0x98,0xee,
- 0x09,0xaa,0xae,0xb6,0x56,0x3d,0xe7,0x86,0x73,0xdb,0x67,0xe9,0x4f,0x89,0xc5,0x19,
- 0xaa,0x2f,0x2e,0x7d,0x10,0x26,0x3e,0xe1,0xfc,0xa7,0x23,0xd4,0x83,0xdb,0xba,0xde,
- 0x0e,0xb9,0xfb,0xb2,0x4d,0x7f,0x3e,0xcf,0x97,0xab,0xc7,0x59,0x1e,0xef,0x50,0xac,
- 0x4a,0x9d,0xa4,0x3f,0x9b,0x38,0x2d,0x65,0x9d,0x2e,0x6e,0x12,0x8d,0xdc,0x60,0x8e,
- 0x9f,0x59,0x6e,0x96,0xba,0x7f,0x27,0xcb,0xd9,0xe8,0x67,0xd6,0xb3,0xf9,0x93,0xf4,
- 0x67,0x72,0x7f,0x2a,0x38,0xec,0x5e,0xc8,0xdf,0xe5,0xf9,0x30,0x1d,0xee,0x73,0xd9,
- 0xf8,0xf9,0xdf,0x0f,0x2b,0xcf,0x37,0xd4,0xf7,0x6f,0xde,0x32,0x6d,0x9c,0xe5,0x8f,
- 0x26,0x9f,0xff,0x3c,0x5f,0x7c,0x5c,0x0e,0x0f,0xba,0xe6,0xb2,0x7e,0xe2,0xfe,0x60,
- 0xd7,0x9f,0x5b,0x0e,0x43,0xfb,0x0a,0xdc,0xc3,0xe3,0x2d,0xa5,0x28,0x60,0xf5,0xfc,
- 0xbb,0x31,0x2e,0x09,0xe4,0x5c,0x7b,0x7a,0xd5,0x50,0x74,0x6c,0x09,0xeb,0x8b,0x76,
- 0x16,0xc0,0xe4,0xe7,0xb6,0x01,0xa9,0x95,0x6d,0xa5,0x0b,0xb4,0xb1,0xd6,0xf2,0xef,
- 0x96,0xfe,0x64,0xf9,0xf7,0x30,0x75,0x3d,0xa1,0x9d,0x9f,0xd7,0xf3,0xef,0x96,0xfe,
- 0xd4,0xa4,0x50,0xb5,0x9e,0x13,0x9e,0xa2,0x3f,0x87,0x28,0x93,0x7a,0x4d,0x99,0x72,
- 0x76,0x2e,0xdd,0xc8,0xbf,0xe7,0xf4,0xe7,0x37,0xb5,0xd4,0x3a,0x63,0xa4,0x78,0x30,
- 0xae,0x9d,0x51,0x9a,0xac,0x3f,0xab,0x94,0xce,0x4f,0xc8,0xbf,0x03,0xb2,0x60,0x1f,
- 0xca,0x4e,0x51,0xcb,0xbf,0x5f,0x7b,0xfe,0x93,0xf5,0xc5,0x65,0xcf,0xbf,0x1b,0xfc,
- 0x3c,0x7d,0xe3,0x90,0x74,0x49,0x61,0x52,0x0f,0xfb,0xf2,0xc1,0x35,0xfa,0x53,0xba,
- 0x34,0x37,0x74,0x87,0x71,0x1e,0xb3,0x4b,0xd9,0x6c,0xf1,0x73,0xad,0x94,0xf5,0x74,
- 0xc7,0x7d,0xde,0xa4,0x76,0x7e,0x09,0x58,0x22,0xde,0xe4,0x27,0x68,0xe7,0x97,0xfc,
- 0x11,0xd1,0xfb,0x62,0x9f,0x0b,0xd7,0xd1,0x24,0xfd,0xc9,0xf2,0xef,0xdc,0xb7,0x17,
- 0x89,0xa9,0x3c,0xf6,0x0e,0xbe,0x49,0xe7,0x3f,0xb7,0xe0,0x63,0xb8,0x05,0x8a,0x2b,
- 0xd5,0x30,0x54,0x7a,0x89,0x84,0xec,0xe7,0x3f,0x57,0x72,0x7b,0xa5,0x0f,0xe0,0x19,
- 0xa5,0x3a,0x35,0xc3,0x3c,0xb3,0x60,0xd3,0x9f,0x2c,0x57,0xc7,0x64,0x75,0xf6,0x1a,
- 0xfd,0xe9,0xb8,0x19,0x9e,0x75,0x54,0xd3,0xa5,0x69,0xbe,0x53,0x7a,0x36,0x31,0x45,
- 0x7f,0xde,0xd9,0x53,0x03,0x2e,0x9c,0xd2,0x25,0xe8,0x64,0x78,0xa6,0x9c,0xff,0xd4,
- 0x64,0xe7,0xc0,0xa6,0x35,0x84,0x9d,0x19,0x9a,0x72,0xfe,0xf3,0x86,0xe0,0x3f,0x0d,
- 0xdf,0x36,0xe2,0xfe,0x49,0xeb,0x59,0x40,0xfd,0x39,0xf9,0xfc,0x67,0xa7,0xf7,0x8a,
- 0x1c,0xee,0xd7,0xce,0xf9,0x5f,0x8e,0x4f,0xca,0xbf,0xe3,0x7a,0x5f,0x74,0x32,0x15,
- 0x66,0xb2,0x93,0x25,0x92,0xb4,0xf5,0x6e,0xe9,0xcf,0x87,0x23,0xad,0xa9,0xc0,0x48,
- 0x32,0x18,0x19,0x70,0x3d,0x95,0xae,0x1c,0xb6,0x9f,0xff,0xa4,0x29,0xda,0x2e,0xe3,
- 0xf2,0xf9,0x7e,0xcb,0x19,0x38,0x20,0x6b,0x5a,0x38,0xa7,0x3f,0x65,0x8f,0x0a,0x2c,
- 0xad,0x89,0xcc,0x1a,0x60,0x12,0x8e,0xbd,0xc3,0x69,0xd3,0x3e,0x59,0xfe,0xbd,0x5e,
- 0xc5,0xe7,0x8d,0x88,0xc6,0x7a,0x3f,0x6f,0xf2,0x73,0x48,0x0f,0xcf,0x66,0x66,0x8c,
- 0xe4,0x58,0x90,0xe3,0xa7,0x2a,0x7d,0x84,0x08,0xd8,0x8f,0xba,0xd5,0x59,0x07,0x86,
- 0x96,0xca,0x9a,0xf6,0xf9,0x8d,0x18,0x3b,0x1f,0xa9,0xe9,0xcf,0xee,0x32,0xc6,0x17,
- 0x9b,0xfe,0xf4,0xcb,0x87,0xf4,0xd0,0x26,0x3a,0xa5,0x74,0xca,0xf9,0x4f,0x91,0xee,
- 0x97,0xe5,0x01,0xa6,0x3f,0xa5,0x7d,0xb2,0xe6,0xc7,0x99,0xfa,0xb3,0x30,0xae,0x4c,
- 0x04,0x51,0x1e,0x7f,0xc0,0x57,0xb2,0xb5,0xa2,0x6e,0xb6,0xeb,0x4f,0x55,0xbd,0x12,
- 0xac,0x3f,0xed,0xbe,0xc0,0x8f,0xa7,0xc7,0x56,0x86,0x07,0x27,0xe5,0xdf,0xdf,0xc6,
- 0xe9,0xae,0x89,0xbb,0xbb,0xf9,0x5a,0x54,0x52,0x28,0xaa,0xec,0xe7,0x3f,0x07,0x44,
- 0xc6,0x41,0xed,0x9c,0xea,0xdf,0x30,0x0e,0xa6,0x89,0x6c,0xe7,0xa7,0xbe,0x94,0x0d,
- 0x7e,0xca,0xc4,0x67,0x3f,0xff,0xd9,0xe2,0xeb,0x33,0xdb,0x7d,0x46,0xb6,0xc5,0x3f,
- 0x7f,0x0d,0x57,0x8e,0x22,0x07,0x33,0xce,0x2a,0x7d,0xcc,0xac,0xfc,0xd1,0x39,0xf8,
- 0x0d,0xfc,0x51,0x1b,0xaa,0x86,0xab,0x54,0x3b,0x3f,0x9f,0x75,0xda,0xf9,0x79,0x1c,
- 0xba,0x7a,0x10,0x9b,0x23,0x1e,0xe6,0x6f,0xba,0x76,0x59,0xdf,0x1f,0x09,0x81,0xb6,
- 0x4d,0x12,0x1b,0x4f,0xdf,0x08,0x3b,0x33,0xdb,0x2f,0x3e,0x61,0x8f,0x7f,0x92,0x56,
- 0xd8,0xcd,0xc6,0x93,0x1d,0x42,0x0f,0x28,0xf9,0xb2,0xf9,0xfd,0x51,0x86,0x0b,0xab,
- 0xed,0x99,0x9b,0xb2,0xe2,0x0f,0x7d,0x67,0x51,0xfc,0x55,0x66,0xf3,0x87,0xad,0xef,
- 0x8f,0xa2,0xd3,0x53,0x2f,0xd0,0xda,0xfe,0xa6,0xcf,0x37,0x9c,0x27,0x2f,0xc8,0x61,
- 0xb5,0xd2,0x96,0x3f,0xba,0x71,0xaf,0x74,0x05,0x6e,0x50,0xab,0xbb,0x1a,0xf4,0x79,
- 0xd7,0xce,0x7f,0xea,0xfd,0x44,0x7e,0xba,0xd8,0x77,0x52,0xae,0xee,0x72,0x16,0x2f,
- 0x0f,0xb1,0xd8,0xbd,0xc9,0xcf,0xa2,0xc3,0x9c,0x1e,0xff,0x44,0x7f,0xec,0xef,0x18,
- 0x3f,0xe3,0xf6,0xf3,0xf3,0xa4,0x95,0x3e,0xc6,0xce,0x2f,0x85,0xe1,0x67,0x8c,0x9f,
- 0xf6,0xfc,0x11,0x76,0x3d,0x2b,0xb3,0x6d,0x7d,0xba,0x82,0x83,0x3e,0x84,0x63,0x6d,
- 0x9d,0x9f,0xef,0x86,0x13,0xca,0xbc,0x74,0x20,0xed,0xf4,0xc2,0x6b,0xd0,0xc5,0x62,
- 0xb1,0x36,0x7e,0x2a,0x63,0x92,0x71,0x7e,0x69,0x78,0xaa,0xff,0xce,0x50,0xd5,0xa5,
- 0x7d,0x67,0xa3,0x7d,0x6c,0xe4,0x62,0xe7,0x3f,0xed,0xfe,0xfb,0x03,0x1a,0x3f,0xd9,
- 0x41,0x0a,0x2c,0xf0,0x71,0x53,0x7f,0x56,0x68,0xc8,0xd1,0xea,0x12,0xec,0x7b,0x19,
- 0x89,0x98,0xe7,0x3f,0xc1,0x81,0xfc,0xf4,0xc5,0xfc,0x1e,0xf2,0x16,0x61,0x42,0x14,
- 0x0b,0x91,0x1c,0x3f,0x45,0xc6,0x4f,0x1f,0x7a,0x50,0xcc,0x7f,0xe7,0x42,0x30,0x40,
- 0x79,0x2b,0x7f,0x84,0x1a,0x53,0xa9,0x64,0x38,0x7a,0x59,0x3f,0x23,0x3f,0x68,0x3b,
- 0x3f,0xff,0x16,0x1c,0x95,0x6b,0x95,0xc0,0x16,0x9e,0x1d,0xb2,0x7f,0x30,0xe6,0xda,
- 0x66,0xf9,0xef,0x90,0xa5,0x49,0xa6,0x35,0x5a,0x88,0x4a,0xbb,0xa1,0x0a,0x44,0x5b,
- 0xfe,0xc8,0xf1,0xf2,0xba,0x75,0x2b,0x67,0x47,0xc4,0xd8,0xcc,0x97,0xdb,0x9e,0x86,
- 0x4a,0x45,0x8c,0x59,0xe7,0xe7,0x4b,0x9e,0x12,0x1f,0x52,0xca,0x14,0x71,0x30,0x72,
- 0x11,0x7e,0x23,0x54,0x47,0xed,0xf9,0x23,0xcf,0xee,0xc8,0x51,0x5a,0x1b,0x77,0x31,
- 0x4c,0xb3,0xf3,0xf3,0x36,0xfd,0xf9,0x6d,0xf8,0x25,0x7c,0xa0,0x84,0xef,0x76,0xa7,
- 0x5a,0xdf,0x92,0x2f,0x89,0xe1,0xc8,0xb5,0xe7,0xe7,0xb5,0xf8,0x2e,0x2b,0x70,0xae,
- 0x5e,0x33,0x7f,0x84,0xfe,0xbb,0xe3,0x35,0xf0,0xa5,0xc4,0xdd,0xe4,0xb3,0xc2,0x46,
- 0xc5,0x97,0x2a,0x1c,0x36,0xf3,0x47,0xfe,0x75,0xab,0x84,0x47,0x40,0x1e,0xf4,0xd7,
- 0xf9,0xee,0x24,0xad,0xaa,0x6f,0x50,0xf4,0x9b,0xf9,0xa3,0xb2,0xa2,0xf9,0xf0,0x53,
- 0x0e,0xed,0xe5,0x41,0xf2,0x35,0x68,0x57,0xcb,0x17,0xe5,0xaf,0x34,0xf3,0x47,0x7e,
- 0xef,0x2c,0xf8,0x5b,0xba,0x1f,0x39,0xe8,0xfc,0x1a,0x9c,0xa4,0xfb,0xb2,0xae,0xe1,
- 0xf2,0x5c,0xfe,0x48,0x2c,0x6a,0x83,0x77,0x75,0x1c,0xed,0xd5,0x39,0x9f,0xb6,0xf9,
- 0xef,0xe7,0x95,0xe3,0x28,0x3b,0xc5,0x7e,0x7e,0x2e,0x8b,0xd7,0xa5,0x5d,0xa7,0xcb,
- 0xad,0xef,0x8f,0x7e,0x2a,0xac,0x4f,0xa3,0xcc,0x8d,0x90,0x82,0x6c,0x1b,0xca,0x5f,
- 0x71,0x30,0x6f,0xae,0x69,0x9f,0xb8,0xf7,0x4b,0x7b,0xa8,0xa8,0xa0,0x86,0xc6,0xba,
- 0x36,0x71,0xb9,0x99,0x3f,0x8a,0x7b,0x5e,0x54,0x36,0xaa,0x28,0xab,0x81,0xcc,0x95,
- 0x58,0x02,0x07,0xfd,0x0e,0xaf,0xe9,0xbf,0x77,0xc2,0xd1,0xe4,0xc2,0x78,0x20,0xe3,
- 0x9c,0xc3,0xf2,0xc5,0xc3,0x68,0xa8,0xd6,0x3d,0x99,0x5b,0xf4,0x1c,0xfb,0x3c,0x6a,
- 0x28,0xd7,0x4f,0xeb,0xfc,0xfc,0x18,0x1c,0xf5,0xd6,0x34,0xa2,0xff,0x7e,0x11,0x96,
- 0xe9,0x2c,0x90,0x4d,0xff,0xe8,0x7e,0x39,0xc9,0x6c,0x30,0x43,0xde,0x56,0x36,0xb1,
- 0x3d,0x5c,0x26,0x72,0x2e,0xff,0x2e,0x88,0xcc,0x64,0x41,0x3b,0xf6,0xd9,0xc9,0x62,
- 0x25,0x29,0x2b,0x7f,0x24,0x71,0x2d,0x34,0x98,0xc6,0xf9,0xb8,0xbb,0xa7,0x82,0x9d,
- 0x13,0xc0,0xba,0x5c,0xfe,0x48,0x11,0xbf,0x45,0x8e,0x46,0x83,0x9c,0x4b,0xe0,0x7b,
- 0x5a,0xb2,0x50,0x47,0x71,0x6e,0xe5,0x1c,0x3f,0x4b,0x06,0x15,0x44,0x38,0xe7,0xee,
- 0x45,0x69,0x79,0x06,0xea,0x81,0x9d,0xff,0x34,0xf9,0x39,0x9e,0x1d,0x4b,0xe0,0x36,
- 0x74,0x94,0xaf,0xa3,0x7f,0x35,0x59,0x7f,0x52,0xe9,0x63,0x86,0xf0,0xac,0x93,0xfa,
- 0xc2,0xca,0x21,0x59,0xd3,0x9f,0xd6,0xf7,0x47,0x03,0x29,0x6d,0xab,0x21,0xec,0xcc,
- 0x97,0x1e,0x9c,0xb3,0x7d,0x7f,0xc4,0x3d,0xcb,0xe2,0x9f,0xc2,0xb5,0xfa,0x13,0x50,
- 0x7f,0x8e,0xe5,0xe1,0xdc,0x6e,0x77,0x32,0x08,0x69,0x93,0xac,0x4e,0xd1,0x9f,0xee,
- 0xcb,0xfc,0x2a,0x61,0x82,0xbb,0x46,0x7f,0x8e,0x21,0xc6,0x98,0xfe,0x24,0xc7,0x85,
- 0xf0,0xe4,0xf3,0x9f,0x75,0xae,0x67,0x95,0xe9,0x88,0xf7,0x45,0x3f,0xc9,0x7d,0x73,
- 0x60,0xd7,0x9f,0x99,0x56,0x0d,0xef,0x2e,0xa1,0x55,0x98,0xfa,0xfd,0xd1,0xf2,0xa7,
- 0x77,0xe0,0x36,0x3b,0x7c,0xc7,0xd7,0xe4,0x76,0x3a,0xe5,0xfb,0x23,0x17,0x7c,0x98,
- 0xa9,0x1b,0x76,0xef,0x6b,0x98,0x0e,0x2f,0x40,0x9d,0x3a,0xe9,0xfb,0xa3,0xdf,0xcc,
- 0x9b,0x90,0xc2,0x7d,0xd8,0x85,0xc3,0xb9,0x78,0x88,0xc5,0xcf,0x91,0x36,0x55,0xc5,
- 0xfd,0x61,0xdb,0xb4,0x91,0xa4,0xf1,0x7e,0xd6,0xf7,0x47,0x87,0x93,0xd3,0x24,0x26,
- 0x3b,0xd7,0x9f,0x91,0x0f,0xe8,0x7a,0xc2,0xe2,0xe7,0x73,0xc9,0x42,0x15,0xb1,0xb9,
- 0x9c,0x9c,0xbd,0xf7,0x40,0x5b,0xa5,0x5d,0x7f,0x6a,0xdf,0x1f,0x51,0x59,0x8f,0x7f,
- 0xe6,0xb4,0xbe,0x5d,0x7f,0x52,0x94,0x9d,0x7b,0xf9,0xe1,0x5c,0x20,0xd4,0xc6,0xcf,
- 0x3c,0x4d,0x0a,0x25,0x5a,0x55,0x4d,0x13,0x15,0x4e,0xe6,0xe7,0x71,0x12,0xd6,0x6d,
- 0xf7,0xa8,0xae,0xb3,0x6c,0xdf,0x1f,0xc1,0x06,0xaa,0x9d,0x9f,0x1f,0x92,0x19,0x3f,
- 0x79,0x7b,0xfc,0x53,0x20,0x9b,0x64,0xe3,0xec,0x79,0xc2,0xd0,0x6e,0x56,0xfc,0x13,
- 0x7f,0xa4,0x9d,0x9f,0xef,0x23,0xda,0x41,0xd0,0xc9,0xfa,0xb3,0x5f,0x60,0xfa,0xac,
- 0x21,0x2b,0xf4,0xa3,0x4a,0x99,0xfa,0xfd,0x91,0x26,0xe7,0xe4,0xb7,0x84,0xa9,0xdf,
- 0x1f,0x95,0xbc,0x45,0x7b,0xd8,0x8f,0xb6,0xf1,0x43,0xc2,0xa5,0xc6,0xf0,0xa4,0xef,
- 0x8f,0xbc,0xe7,0x90,0x9f,0x55,0x80,0xdb,0x3a,0x3a,0xf2,0x30,0x87,0x73,0x4e,0xfa,
- 0xfe,0x48,0xdd,0xa9,0x4b,0xe0,0x23,0xec,0x7c,0xf2,0x22,0xfb,0xf7,0x47,0xdc,0x6e,
- 0xb2,0x61,0x63,0x95,0xf2,0x19,0x76,0x80,0xe6,0xa0,0x7e,0x06,0xcb,0xe4,0x27,0x3b,
- 0x97,0xa0,0x75,0x61,0x06,0x13,0xa2,0x2c,0x10,0x6a,0x7d,0x7f,0x04,0x6d,0xf0,0x23,
- 0x91,0xd5,0x35,0x8c,0x7c,0xd2,0xf7,0x47,0x63,0x4a,0x88,0x9b,0x8e,0x7b,0x95,0x3c,
- 0xf5,0xfb,0x23,0x76,0x7e,0x5e,0x65,0xc7,0x3e,0xf9,0x27,0xe9,0x6b,0x64,0x6a,0xfc,
- 0x93,0xdb,0x1f,0x93,0xd5,0x82,0x20,0x79,0x09,0xf7,0xf7,0x55,0x53,0xe2,0x9f,0x83,
- 0x07,0xe8,0xfd,0xaa,0x73,0x8d,0xef,0x39,0xf8,0x99,0x3c,0x49,0x7f,0xb2,0xf3,0xf3,
- 0xff,0x9c,0x9a,0x97,0x9d,0xbe,0x16,0x75,0xe4,0x6f,0x07,0xa7,0x7e,0x7f,0x44,0xaf,
- 0x54,0x84,0x55,0xe7,0x3e,0x16,0x57,0x54,0xa6,0x9c,0xff,0x9c,0xf0,0x9c,0x48,0xe1,
- 0x32,0x7f,0x90,0xbf,0xf5,0xda,0xef,0x8f,0x9e,0xa3,0xeb,0x68,0x80,0x3d,0xa6,0x45,
- 0xd0,0x0f,0x7b,0xda,0xbe,0x3f,0xda,0xa1,0xb6,0xb1,0x1f,0x8d,0x92,0x1d,0xb4,0x7d,
- 0xf2,0xf7,0x47,0xec,0xfc,0x67,0x42,0xd1,0x3e,0xfb,0x6b,0xd3,0x84,0xe8,0xa4,0xef,
- 0x8f,0x0e,0x13,0x2d,0xbc,0x3e,0xca,0x6b,0x07,0x41,0x27,0x7f,0x7f,0x34,0x20,0x5c,
- 0xee,0xc7,0x1f,0x75,0x17,0xbf,0xe5,0x9a,0xa2,0x3f,0x39,0x69,0x5c,0x78,0x09,0x59,
- 0xb0,0x6c,0xb4,0x21,0x24,0x4c,0x40,0xcd,0x94,0xef,0x8f,0x60,0xa3,0xbe,0xcc,0x7d,
- 0x54,0xff,0x50,0xc7,0xfa,0xfe,0xc8,0x81,0x75,0x8a,0x76,0xe4,0xdc,0x4f,0x0f,0x09,
- 0xbe,0x49,0xfa,0x13,0x77,0x37,0x5a,0x16,0xe8,0x5b,0x1a,0x2c,0x06,0xc5,0x10,0x7f,
- 0xe6,0xf7,0x47,0xe2,0x83,0xb4,0x3f,0x18,0x1e,0xdc,0x3c,0xca,0xfb,0x53,0x13,0xa0,
- 0x9d,0x2f,0xb7,0xbe,0x3f,0x1a,0x89,0xac,0x9d,0xc7,0x96,0xf9,0x0c,0xf5,0xb4,0xe1,
- 0x17,0xe7,0xf8,0x09,0x47,0x16,0x73,0xcd,0xca,0x7d,0xd2,0xe7,0x3c,0x8e,0x1e,0x2c,
- 0x9c,0x91,0xae,0x13,0x0a,0xd5,0x79,0xc6,0x3d,0x8f,0x28,0x79,0xf3,0xb8,0xfb,0x94,
- 0xaf,0x48,0x45,0x7d,0xd3,0x56,0x03,0x2b,0x94,0xa8,0xf3,0x8c,0xd8,0x21,0x25,0x5c,
- 0x33,0x8d,0xca,0xc5,0xa2,0xd0,0xc2,0xc9,0x7a,0xc1,0xf8,0x1c,0x96,0x0d,0xcc,0xce,
- 0x38,0xb7,0x1c,0x66,0x4a,0x0e,0x95,0x8b,0xc3,0x72,0xf8,0x32,0x38,0xcc,0xba,0x23,
- 0x51,0xc7,0x5f,0x2c,0x12,0xe9,0x75,0x72,0x49,0xbf,0x63,0x0d,0xdc,0x47,0xef,0x91,
- 0xad,0x7b,0x1e,0xb9,0x1b,0xe2,0x92,0x08,0x4b,0x44,0xf6,0xa1,0x3e,0xa7,0x7f,0xa8,
- 0x6f,0xf5,0x45,0x28,0xe3,0x44,0x88,0xc8,0x12,0x15,0x64,0xa3,0x60,0xd6,0xdd,0xc3,
- 0x29,0x54,0x91,0xef,0xf5,0x97,0xf0,0x9c,0x92,0x88,0xc9,0x25,0xfe,0x12,0x30,0xfb,
- 0xe9,0xe2,0xae,0x83,0x2f,0xa9,0xd2,0xf7,0xa1,0x14,0x0b,0x8a,0x5a,0xd2,0x2c,0xe0,
- 0xce,0x9a,0xeb,0x27,0x7c,0x46,0x66,0xe3,0x1e,0x03,0x36,0xdd,0x54,0xc0,0x79,0x33,
- 0xfb,0x19,0x47,0x9d,0xba,0x11,0xe4,0xb6,0xa8,0x4c,0xbc,0x5c,0x0b,0xc8,0x54,0xe4,
- 0xcc,0x7e,0xc6,0xa6,0xad,0xe0,0x5e,0x85,0xbb,0x15,0x4f,0xca,0xb1,0x82,0x8b,0xc2,
- 0x5f,0x28,0x1e,0x5b,0x3f,0xf3,0xd7,0xe0,0x2b,0xd7,0x22,0xac,0xf0,0xdd,0x4f,0xd3,
- 0x99,0x58,0x30,0xeb,0x22,0x79,0x72,0xc2,0x25,0xf3,0x62,0xac,0x37,0x4f,0xa2,0x2e,
- 0x79,0x91,0x28,0x59,0xe3,0x29,0x2a,0x41,0xa6,0x5e,0x40,0x97,0x31,0x80,0x05,0xd5,
- 0xec,0xa7,0x93,0x0b,0x26,0x9a,0x32,0x33,0x44,0xe1,0x38,0x17,0x52,0x9b,0x82,0xf7,
- 0x88,0x82,0x6a,0xf6,0xb3,0x61,0x76,0x73,0x62,0x79,0xb0,0x58,0x2c,0x69,0x15,0xe2,
- 0xea,0xf2,0xe0,0x97,0xc5,0x12,0x6a,0xf6,0x33,0x02,0x71,0x7c,0x4c,0x44,0xc4,0xfe,
- 0x37,0x27,0x44,0x7c,0x30,0x58,0x7d,0xb9,0x5b,0xa8,0x48,0x14,0xca,0x91,0xa8,0xb4,
- 0x15,0x0b,0x5e,0xb9,0x21,0x5a,0x64,0xd5,0xb1,0xc1,0x5f,0x02,0x31,0x5a,0x82,0x05,
- 0x2e,0x02,0x45,0xb4,0x44,0x31,0xfb,0x99,0xc7,0x2d,0xa2,0xf7,0xc6,0x4b,0xbc,0x8e,
- 0x3c,0xee,0x8b,0x34,0x16,0xf7,0x78,0x1d,0x60,0xce,0x7b,0x31,0x27,0xd0,0x7c,0x59,
- 0x8a,0x0a,0xc5,0x0e,0x01,0x27,0x04,0x0b,0xd6,0xbc,0x37,0xf2,0x5f,0xa4,0x6d,0xf1,
- 0x6f,0x78,0x5d,0x4b,0xc8,0x17,0x13,0x2f,0xc7,0x6f,0xf1,0x16,0x9a,0xf7,0x3c,0xb2,
- 0x64,0xda,0xea,0xc4,0x99,0xf8,0x57,0xbc,0x25,0xeb,0x1d,0xab,0x13,0xf7,0xc5,0xff,
- 0xd2,0x5b,0x62,0xda,0xe0,0xe2,0x25,0xdc,0x6a,0xba,0x3c,0x7e,0x9d,0xb7,0xf0,0x45,
- 0x2c,0x9c,0x61,0x05,0xb5,0xc8,0xac,0xcb,0x9b,0x47,0x5d,0xf1,0x7b,0xbc,0x9e,0x17,
- 0x67,0xce,0xa3,0xa5,0xf1,0x06,0x6c,0x57,0x94,0x8b,0x6d,0x03,0x0e,0x7f,0x93,0x4c,
- 0xc4,0xc5,0x2d,0x5c,0x1c,0x27,0xf1,0x3a,0xb4,0xcf,0x5c,0x8d,0x90,0xc7,0x95,0x25,
- 0x96,0xc7,0x67,0x7a,0x1d,0xeb,0xb9,0x32,0x1a,0x8d,0x7f,0xd9,0xeb,0xa0,0xb9,0x75,
- 0xb4,0x58,0x11,0x9a,0xb9,0x26,0x98,0x01,0x92,0xea,0x68,0x86,0x26,0xf8,0x0a,0x78,
- 0xcc,0x7b,0x2e,0x26,0x10,0x4f,0x8b,0x38,0x9e,0xd0,0x02,0x71,0x1c,0x4f,0xd4,0x3a,
- 0xd4,0xec,0x4b,0x44,0x90,0x77,0x7a,0xe5,0x25,0xfe,0xa2,0x16,0x41,0x4e,0x48,0x72,
- 0xc4,0x5f,0x64,0xab,0x2b,0x53,0x54,0x4f,0xf0,0x4b,0xae,0x92,0x08,0xa7,0xf4,0xdc,
- 0x5b,0xe6,0x71,0x95,0x28,0x66,0x3f,0x09,0x17,0xeb,0xbf,0x17,0x4d,0xd6,0x11,0xe1,
- 0x62,0xf4,0xde,0x20,0x16,0x94,0x5c,0x5f,0x70,0xc5,0xc7,0x8b,0x24,0x10,0x60,0x91,
- 0x28,0x28,0xe0,0x45,0xfb,0x34,0x6b,0x60,0xf1,0xdd,0x11,0x5f,0x82,0xca,0xb2,0x28,
- 0x12,0x22,0xeb,0x05,0x30,0xfb,0xa9,0x2c,0x63,0xeb,0xef,0x2f,0xa0,0x84,0x3a,0x72,
- 0x85,0x5c,0x5f,0x8e,0x28,0x8b,0x9a,0xd9,0x09,0x18,0x5c,0x92,0x0e,0xa6,0x94,0xaf,
- 0x83,0x3b,0xcd,0x71,0x01,0x98,0x13,0xe7,0x4a,0x81,0xe0,0xbb,0xcf,0x94,0xf1,0xe1,
- 0x4b,0xa0,0x48,0x35,0xab,0x24,0x98,0x0d,0xf9,0x40,0x14,0x78,0x05,0x2a,0x58,0xc1,
- 0xfc,0x8b,0x1d,0x78,0x55,0x70,0xf3,0xee,0x6f,0x52,0x8a,0x25,0xa1,0x8f,0x2b,0x83,
- 0x68,0xec,0x1e,0x49,0xb0,0xda,0xf9,0x1c,0xdf,0x3a,0xf7,0xd5,0xe0,0xcc,0x8e,0x92,
- 0xc7,0xb9,0x95,0xea,0xdd,0xc1,0x2f,0x77,0x94,0x50,0xdb,0x3d,0x6b,0xf1,0x56,0x11,
- 0x05,0x52,0x78,0x8b,0x29,0xf7,0x14,0x85,0x60,0x91,0x57,0x58,0xc2,0x15,0x25,0x95,
- 0x78,0x91,0xb7,0x0d,0x0b,0xb6,0x7e,0xf6,0x14,0x89,0xf7,0x0a,0x5f,0xe2,0x4b,0x94,
- 0xfb,0x63,0x45,0xf7,0x0a,0x25,0xdc,0x97,0x14,0xab,0x5d,0x59,0x44,0x54,0x5a,0x3c,
- 0xf2,0xba,0x28,0x16,0xee,0x65,0x05,0xab,0xae,0x60,0x31,0xa1,0xc0,0x04,0x68,0x81,
- 0x83,0x50,0x25,0x2d,0xf9,0xad,0x3b,0x82,0x8b,0xbf,0x07,0xda,0x7a,0x56,0x07,0x45,
- 0x2c,0x70,0xdb,0xd4,0x5b,0x82,0xa2,0xed,0x9e,0x8e,0x35,0xdc,0x7d,0xf4,0x2b,0xf2,
- 0xf5,0xfd,0x5a,0xe1,0x2f,0x91,0x59,0x66,0x1d,0x8f,0x50,0x91,0x82,0x82,0x8b,0x63,
- 0x85,0xa2,0x90,0xe0,0x2a,0xb2,0xee,0x59,0x3f,0xb1,0x6c,0xe2,0xef,0x27,0x2e,0x4e,
- 0x7c,0x6c,0x16,0xe0,0xdf,0x75,0x85,0xdf,0x58,0x76,0xb5,0xf7,0xa5,0xcc,0xfe,0x1f,
- 0x87,0x5f,0x77,0xd6,0xb2,0xc2,0x2a,0xdb,0x3d,0xeb,0x97,0x4d,0xcc,0xa8,0xe9,0x1b,
- 0xf8,0xb8,0xbe,0xae,0xe9,0x24,0x2b,0x7c,0x60,0xab,0xf3,0x46,0xcf,0x16,0xcf,0x6b,
- 0xeb,0xf8,0xc1,0xad,0xde,0xe8,0x8b,0x33,0x0e,0x60,0xc1,0xaa,0x9b,0x06,0xab,0x95,
- 0x1d,0xb1,0x9b,0x3c,0xf9,0x47,0x48,0xb3,0x52,0x2a,0xdd,0x24,0xe4,0x5b,0xef,0x20,
- 0x98,0x9c,0x77,0xac,0xe6,0x74,0xce,0x9b,0x75,0x1a,0xe7,0xe3,0xc5,0x5e,0x61,0xbd,
- 0xc9,0x79,0xab,0x5d,0xfc,0x7e,0xed,0xef,0xa9,0x08,0x16,0xaf,0xad,0x31,0x13,0xd6,
- 0x24,0x4a,0xd5,0x2f,0xc8,0x45,0xfd,0xc2,0x1a,0xae,0x94,0x62,0xc1,0xba,0x27,0x00,
- 0xb6,0x93,0xf3,0x44,0xdb,0x1f,0x64,0x31,0x6b,0x24,0x61,0x0e,0x97,0x4f,0x23,0xcd,
- 0xd2,0xcf,0x85,0xd9,0x9c,0x48,0x19,0xe7,0xcd,0xba,0x32,0x58,0x9a,0x28,0x4e,0x37,
- 0x76,0x16,0x55,0x09,0x51,0xaa,0x15,0xcc,0xa7,0xa9,0x55,0xb8,0x66,0x3d,0xd4,0x11,
- 0xe4,0xee,0x82,0x7b,0x70,0xcd,0x62,0xc1,0xd8,0x52,0xd9,0x81,0x5a,0xe1,0x16,0x28,
- 0x52,0x84,0xe5,0x9c,0x07,0xbe,0x40,0xd9,0x82,0xe2,0x8c,0x6d,0x1a,0xdb,0x29,0x44,
- 0x62,0xa7,0xde,0xd8,0x01,0x32,0x30,0x0a,0x56,0x9d,0xc0,0x00,0x88,0xcb,0x80,0x62,
- 0x61,0x3b,0x5b,0x0f,0xd4,0xa8,0x93,0x38,0x05,0x55,0xc7,0x76,0x98,0x03,0xf9,0x94,
- 0x3c,0x80,0xef,0x80,0x85,0x16,0xe3,0x71,0xca,0xe2,0xbb,0xf3,0xe2,0xc8,0xf9,0x06,
- 0x51,0xea,0x15,0x82,0x7a,0x21,0xc7,0x10,0x05,0x6f,0x2f,0x1b,0x78,0xc7,0xe7,0x18,
- 0x05,0xa3,0x1d,0x38,0x21,0x48,0xd9,0xfe,0x00,0xbd,0x10,0xec,0xd1,0x0a,0x66,0xdd,
- 0xe2,0x06,0xa1,0x19,0x31,0xbd,0x44,0x44,0xbe,0xc4,0x7b,0xb4,0x02,0xcd,0xdd,0x93,
- 0x63,0x9c,0x17,0x91,0x75,0xc0,0xf6,0x29,0x17,0x2b,0xe4,0xc6,0x2c,0xc6,0x21,0x97,
- 0xcc,0x76,0xd8,0x17,0xd6,0xce,0xbc,0xa7,0x82,0xef,0xe1,0x81,0xc5,0x6c,0x6c,0x70,
- 0x0b,0x64,0x85,0x88,0x71,0xcf,0x28,0x4e,0xca,0x22,0x2a,0xc5,0x05,0xaf,0x90,0x2b,
- 0x98,0xec,0x89,0x6a,0xe7,0x6c,0x10,0xef,0xa2,0x80,0xee,0x9b,0x5e,0x00,0xf3,0x9e,
- 0x8c,0xf3,0x0c,0xef,0xf9,0x4b,0x8c,0x42,0xa1,0xc9,0x3a,0x6e,0x89,0xb0,0x3a,0x51,
- 0x1a,0xff,0x82,0xb7,0xe8,0x45,0x61,0xf5,0xba,0x1d,0xac,0x60,0xbe,0x1f,0x8e,0xf2,
- 0x6a,0xba,0x23,0x7e,0x93,0x37,0xff,0x45,0xb2,0x9a,0xde,0xc7,0x0a,0xb9,0xba,0x18,
- 0xe3,0x3c,0x6e,0x0b,0xb8,0x3f,0xbc,0xe8,0x60,0x37,0xc0,0x42,0xaf,0x39,0x9e,0xc5,
- 0x50,0x41,0x6f,0x97,0x8b,0xa3,0xc2,0x56,0xae,0x82,0x36,0xd9,0xed,0x53,0xc1,0x77,
- 0x28,0xa3,0xde,0x78,0x9e,0x97,0x5b,0x0f,0xf7,0x27,0xb4,0x82,0x69,0x4b,0x8b,0xe3,
- 0x8e,0x05,0xdc,0x2c,0x34,0x87,0xa2,0xac,0xb0,0x56,0x2f,0x98,0x73,0xc4,0xdd,0x0d,
- 0x2b,0xe8,0xf5,0x72,0x5e,0x94,0xdb,0x8a,0x05,0xc3,0x50,0x73,0xfd,0x64,0xe3,0xc9,
- 0xf6,0x00,0xa9,0x25,0x57,0xb0,0xc6,0x33,0x02,0x31,0x44,0x7f,0xa3,0x58,0x44,0x04,
- 0x85,0x6a,0x05,0x30,0xfb,0x49,0x20,0x86,0x7b,0x80,0xc3,0xc5,0x35,0xe4,0x0a,0x8a,
- 0xd9,0x4f,0x51,0x78,0x00,0x72,0xba,0x46,0x2f,0x58,0xe3,0x19,0x21,0x40,0x0d,0xce,
- 0x1b,0x05,0xf3,0x9e,0x9c,0x52,0x11,0x77,0x78,0x61,0x92,0x7d,0x9a,0xfd,0x54,0x80,
- 0xfd,0xa5,0x85,0x39,0x4a,0x7e,0x8a,0xac,0x80,0x52,0xcd,0x50,0xcd,0x7b,0xc6,0xe7,
- 0xf8,0xb9,0xe9,0xd0,0x40,0xa5,0xac,0xb0,0x80,0xbb,0x81,0x15,0x72,0xef,0x1e,0xc3,
- 0xa5,0x51,0xa6,0xb8,0x62,0xbc,0x07,0x8e,0xd0,0x79,0x8a,0x28,0xf1,0x82,0xcd,0x3e,
- 0x05,0x98,0xad,0x14,0x4a,0xfc,0xbd,0xf0,0x3b,0x98,0xbf,0x48,0xfb,0xa5,0x5e,0xab,
- 0x9f,0xc2,0xfd,0x3d,0xde,0xe0,0x92,0xd2,0xa2,0x56,0x66,0x9f,0xc1,0x25,0x2e,0x9b,
- 0x7d,0x2a,0x68,0xea,0xb6,0xf5,0x65,0xe3,0xbc,0xc2,0x45,0x1b,0x43,0x0c,0xef,0x65,
- 0x45,0x1d,0x8d,0x0f,0x5c,0xaf,0x15,0x6c,0xf6,0xa9,0x4a,0x3f,0xf0,0xcc,0x5a,0x5c,
- 0xb4,0x45,0x69,0x8c,0xc5,0x3c,0xc2,0x62,0xae,0x48,0xb1,0xd6,0x11,0x1b,0x7a,0x22,
- 0x94,0x25,0xc4,0xb8,0xa2,0x4f,0x06,0x98,0x57,0x0e,0xef,0x42,0x01,0x67,0x14,0xac,
- 0xf1,0xbc,0x93,0xbf,0x47,0x79,0x79,0xf0,0x96,0xf9,0x85,0x66,0xc1,0xbc,0x27,0x17,
- 0xad,0x58,0x53,0x58,0x4a,0xbe,0x50,0x56,0xa4,0x36,0xae,0xc9,0xdf,0x31,0x99,0x59,
- 0x33,0x6c,0x9c,0xef,0x29,0x0a,0x35,0x36,0x6d,0xb1,0x9e,0xf7,0xbf,0xcb,0xf9,0x4a,
- 0x5b,0xbb,0xab,0x53,0x38,0x5f,0x63,0xbf,0xe7,0x14,0xce,0xdf,0xea,0xbd,0xeb,0x8d,
- 0x47,0x0e,0x0c,0xbd,0x77,0xe9,0xd6,0x9f,0xdc,0x75,0x76,0x06,0x2b,0x58,0x75,0xe8,
- 0xc3,0xec,0x04,0xbf,0x52,0x50,0xda,0x6b,0x14,0x24,0xab,0x4e,0x23,0x1f,0x8e,0x9d,
- 0x64,0x15,0xac,0x4b,0x8b,0x38,0x31,0x1a,0x9a,0x85,0x6b,0xda,0x95,0xaa,0xd7,0xb6,
- 0x63,0xd9,0x67,0x48,0xea,0x21,0x1f,0xbd,0x60,0xd6,0x4c,0x99,0x71,0xa3,0x60,0xd4,
- 0x5d,0xdb,0xce,0x56,0x77,0x4d,0x4b,0xeb,0x4f,0x86,0x15,0xb4,0x87,0x76,0x42,0xa7,
- 0x32,0x57,0x2a,0x68,0x23,0x5a,0xa1,0xb4,0xd7,0x6c,0xa7,0xf5,0x73,0x12,0x99,0xac,
- 0x7b,0x5e,0xfb,0x7e,0x66,0x9d,0xc4,0xfe,0x3e,0xda,0x40,0xee,0xfd,0x06,0xe0,0x7b,
- 0x50,0xda,0x6b,0x5a,0x8c,0xfe,0x27,0x34,0x14,0x52,0xaa,0x1a,0x05,0xc9,0xea,0x0b,
- 0x11,0x58,0x0c,0x96,0x7d,0x6f,0x6d,0x14,0xec,0x93,0xab,0x3d,0x06,0x72,0xcf,0xb3,
- 0xff,0xd1,0x33,0x89,0xf2,0x41,0x18,0xc8,0xfd,0x4b,0x2f,0x18,0xbe,0xf6,0xbf,0x76,
- 0xd5,0xd5,0x5d,0xfb,0x33,0xb7,0xfb,0xdf,0x6c,0xf6,0x1f,0xb8,0xea,0x27,0x26,0x26,
- 0xd4,0x49,0x85,0xff,0x37,0xeb,0x72,0x36,0x2f,0x91,0xff,0xf3,0x36,0xff,0x49,0xed,
- 0xa6,0xda,0xae,0x35,0xb7,0xff,0x97,0x6c,0xde,0x6e,0xd7,0xd6,0x26,0xfc,0xbf,0x6c,
- 0xf3,0x80,0xa6,0xae,0xbd,0xdf,0x54,0x9b,0xff,0x17,0xdb,0xc1,0x27,0xbc,0x9f,0xed,
- 0xfa,0x17,0xde,0x1c,0x98,0xcd,0xc3,0x35,0xd7,0xa7,0x36,0xff,0x1f,0xa8,0xfb,0x97,
- 0x2f,0xf6,0xb7,0x1c,0x89,0xf6,0xff,0x45,0xbf,0xfd,0xf7,0xb6,0xf9,0xf4,0xfa,0xf4,
- 0xfa,0xf4,0xfa,0xf4,0xfa,0xf4,0xfa,0xf4,0xfa,0xff,0xe5,0xd2,0xf6,0x49,0xa2,0xed,
- 0x93,0xea,0x7f,0x76,0x5f,0x3e,0xbd,0x3e,0xbd,0x3e,0xbd,0x3e,0xbd,0x3e,0xbd,0x3e,
- 0xbd,0xfe,0x33,0xae,0x20,0xfb,0x73,0x09,0x50,0xf9,0x6b,0xe3,0xef,0xff,0xf3,0x41,
- 0x50,0xa6,0xfd,0xeb,0xbf,0xaf,0xfd,0x9e,0x23,0x08,0x69,0xce,0x6a,0xbf,0x3b,0x35,
- 0xb5,0xaf,0xff,0x13,0x87,0x7b,0xf6,0xdd,0xd4,0x60,0x00,0x00,
diff --git a/board/esd/pci405/pci405.c b/board/esd/pci405/pci405.c
deleted file mode 100644
index e5d2273f07..0000000000
--- a/board/esd/pci405/pci405.c
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-#include <pci.h>
-#include <405gp_pci.h>
-
-#include "pci405.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* Prototypes */
-int gunzip(void *, int, unsigned char *, unsigned long *);
-int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);/*cmd_boot.c*/
-unsigned long fpga_done_state(void);
-unsigned long fpga_init_state(void);
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* predefine these here */
-#define FPGA_DONE_STATE (fpga_done_state())
-#define FPGA_INIT_STATE (fpga_init_state())
-
-/* fpga configuration data - generated by bin2cc */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-#define FPGA_DONE_STATE_V11 (in32(GPIO0_IR) & CFG_FPGA_DONE)
-#define FPGA_DONE_STATE_V12 (in32(GPIO0_IR) & CFG_FPGA_DONE_V12)
-
-#define FPGA_INIT_STATE_V11 (in32(GPIO0_IR) & CFG_FPGA_INIT)
-#define FPGA_INIT_STATE_V12 (in32(GPIO0_IR) & CFG_FPGA_INIT_V12)
-
-
-int board_revision(void)
-{
- unsigned long cntrl0Reg;
- unsigned long value;
-
- /*
- * Get version of PCI405 board from GPIO's
- */
-
- /*
- * Setup GPIO pins (CS2/GPIO11 and CS3/GPIO12 as GPIO)
- */
- cntrl0Reg = mfdcr(cntrl0);
- mtdcr(cntrl0, cntrl0Reg | 0x03000000);
- out32(GPIO0_ODR, in32(GPIO0_ODR) & ~0x00100200);
- out32(GPIO0_TCR, in32(GPIO0_TCR) & ~0x00100200);
- udelay(1000); /* wait some time before reading input */
- value = in32(GPIO0_IR) & 0x00100200; /* get config bits */
-
- /*
- * Restore GPIO settings
- */
- mtdcr(cntrl0, cntrl0Reg);
-
- switch (value) {
- case 0x00100200:
- /* CS2==1 && IRQ5==1 -> version 1.0 and 1.1 */
- return 1;
- case 0x00000200:
- /* CS2==0 && IRQ5==1 -> version 1.2 */
- return 2;
- case 0x00000000:
- /* CS2==0 && IRQ5==0 -> version 1.3 */
- return 3;
-#if 0 /* not yet manufactured ! */
- case 0x00100000:
- /* CS2==1 && IRQ5==0 -> version 1.4 */
- return 4;
-#endif
- default:
- /* should not be reached! */
- return 0;
- }
-}
-
-
-unsigned long fpga_done_state(void)
-{
- if (gd->board_type < 2) {
- return FPGA_DONE_STATE_V11;
- } else {
- return FPGA_DONE_STATE_V12;
- }
-}
-
-
-unsigned long fpga_init_state(void)
-{
- if (gd->board_type < 2) {
- return FPGA_INIT_STATE_V11;
- } else {
- return FPGA_INIT_STATE_V12;
- }
-}
-
-
-int board_early_init_f (void)
-{
- unsigned long cntrl0Reg;
-
- /*
- * First pull fpga-prg pin low, to disable fpga logic (on version 1.2 board)
- */
- out32(GPIO0_ODR, 0x00000000); /* no open drain pins */
- out32(GPIO0_TCR, CFG_FPGA_PRG); /* setup for output */
- out32(GPIO0_OR, CFG_FPGA_PRG); /* set output pins to high */
- out32(GPIO0_OR, 0); /* pull prg low */
-
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) CAN2; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) CAN3; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) unused; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) FPGA Timestamp; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) PCI Reset; active low; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * Setup GPIO pins (IRQ4/GPIO21 as GPIO)
- */
- cntrl0Reg = mfdcr(cntrl0);
- mtdcr(cntrl0, cntrl0Reg | 0x00008000);
-
- /*
- * Setup GPIO pins (CS6+CS7 as GPIO)
- */
- mtdcr(cntrl0, cntrl0Reg | 0x00300000);
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 25 us
- */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- unsigned char *dst;
- ulong len = sizeof(fpgadata);
- int status;
- int index;
- int i;
- unsigned int *ptr;
- unsigned int *magic;
-
- /*
- * On PCI-405 the environment is saved in eeprom!
- * FPGA can be gzip compressed (malloc) and booted this late.
- */
-
- dst = malloc(CFG_FPGA_MAX_SIZE);
- if (gunzip (dst, CFG_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
- printf ("GUNZIP ERROR - must RESET board to recover\n");
- do_reset (NULL, 0, 0, NULL);
- }
-
- status = fpga_boot(dst, len);
- if (status != 0) {
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("FPGA: %s\n", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=20; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc ('\n');
- do_reset(NULL, 0, 0, NULL);
- }
-
- puts("FPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("%s ", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
-
- /*
- * Reset FPGA via FPGA_DATA pin
- */
- SET_FPGA(FPGA_PRG | FPGA_CLK);
- udelay(1000); /* wait 1ms */
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);
- udelay(1000); /* wait 1ms */
-
- /*
- * Check if magic for pci reconfig is written
- */
- magic = (unsigned int *)0x00000004;
- if (*magic == PCI_RECONFIG_MAGIC) {
- /*
- * Rewrite pci config regs (only after soft-reset with magic set)
- */
- ptr = (unsigned int *)PCI_REGS_ADDR;
- if (crc32(0, (uchar *)PCI_REGS_ADDR+4, PCI_REGS_LEN-4) == *ptr) {
- puts("Restoring PCI Configurations Regs!\n");
- ptr = (unsigned int *)PCI_REGS_ADDR + 1;
- for (i=0; i<0x40; i+=4) {
- pci_write_config_dword(PCIDEVID_405GP, i, *ptr++);
- }
- }
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- *magic = 0; /* clear pci reconfig magic again */
- }
-
-#if 1 /* test-only */
- /*
- * Decrease PLB latency timeout and reduce priority of the PCI bridge master
- */
-#define PCI0_BRDGOPT1 0x4a
- pci_write_config_word(PCIDEVID_405GP, PCI0_BRDGOPT1, 0x3f20);
-/* pci_write_config_word(PCIDEVID_405GP, PCI0_BRDGOPT1, 0x3f60); */
-
-#define plb0_acr 0x87
- /*
- * Enable fairness and high bus utilization
- */
- mtdcr(plb0_acr, 0x98000000);
-
-#if 0 /* test-only */
- printf("CCR0=%08x\n", mfspr(ccr0)); /* test-only */
-/* mtspr(ccr0, (mfspr(ccr0) & 0xff8fffff) | 0x00100000); */
- mtspr(ccr0, (mfspr(ccr0) & 0xff8fffff) | 0x00000000);
-#endif
-/* printf("CCR0=%08x\n", mfspr(ccr0)); */ /* test-only */
-#endif
-
- free(dst);
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming PCI405");
- } else {
- puts (str);
- }
-
- gd->board_type = board_revision();
- printf(" (Rev 1.%ld", gd->board_type);
-
- if (gd->board_type >= 2) {
- unsigned long cntrl0Reg;
- unsigned long value;
-
- /*
- * Setup GPIO pins (Trace/GPIO1 to GPIO)
- */
- cntrl0Reg = mfdcr(cntrl0);
- mtdcr(cntrl0, cntrl0Reg & ~0x08000000);
- out32(GPIO0_ODR, in32(GPIO0_ODR) & ~0x40000000);
- out32(GPIO0_TCR, in32(GPIO0_TCR) & ~0x40000000);
- udelay(1000); /* wait some time before reading input */
- value = in32(GPIO0_IR) & 0x40000000; /* get config bits */
- if (value) {
- puts(", 33 MHz PCI");
- } else {
- puts(", 66 Mhz PCI");
- }
- }
-
- puts(")\n");
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
-#if 0 /* test-only: all PCI405 version must report 16mb */
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-#else
- return (16*1024*1024);
-#endif
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-int wpeeprom(int wp)
-{
- int wp_state = wp;
- volatile unsigned char *uart1_mcr = (volatile unsigned char *)0xef600404;
-
- if (wp == 1) {
- *uart1_mcr &= ~0x02;
- } else if (wp == 0) {
- *uart1_mcr |= 0x02;
- } else {
- if (*uart1_mcr & 0x02) {
- wp_state = 0;
- } else {
- wp_state = 1;
- }
- }
- return wp_state;
-}
-
-int do_wpeeprom(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int wp = -1;
- if (argc >= 2) {
- if (argv[1][0] == '1') {
- wp = 1;
- } else if (argv[1][0] == '0') {
- wp = 0;
- }
- }
-
- wp = wpeeprom(wp);
- printf("EEPROM write protection %s\n", wp ? "ENABLED" : "DISABLED");
- return 0;
-}
-
-U_BOOT_CMD(
- wpeeprom, 2, 1, do_wpeeprom,
- "wpeeprom - Check/Enable/Disable I2C EEPROM write protection\n",
- "wpeeprom\n"
- " - check I2C EEPROM write protection state\n"
- "wpeeprom 1\n"
- " - enable I2C EEPROM write protection\n"
- "wpeeprom 0\n"
- " - disable I2C EEPROM write protection\n"
- );
diff --git a/board/esd/pci405/pci405.h b/board/esd/pci405/pci405.h
deleted file mode 100644
index c11a20f6ee..0000000000
--- a/board/esd/pci405/pci405.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * (C) Copyright 2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#ifndef _PCI405_H_
-#define _PCI405_H_
-
-#define PCI_REGS_LEN 0x100
-#define PCI_REGS_ADDR ((unsigned long)0x01000000 - PCI_REGS_LEN)
-
-#define PCI_RECONFIG_MAGIC 0x07081967
-
-#endif /* _PCI405_H_ */
diff --git a/board/esd/pci405/u-boot.lds b/board/esd/pci405/u-boot.lds
deleted file mode 100644
index f7a20d1da2..0000000000
--- a/board/esd/pci405/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/pci405/writeibm.S b/board/esd/pci405/writeibm.S
deleted file mode 100644
index 9f5c35b587..0000000000
--- a/board/esd/pci405/writeibm.S
+++ /dev/null
@@ -1,223 +0,0 @@
-/*------------------------------------------------------------------------------+ */
-/* */
-/* This source code has been made available to you by IBM on an AS-IS */
-/* basis. Anyone receiving this source is licensed under IBM */
-/* copyrights to use it in any way he or she deems fit, including */
-/* copying it, modifying it, compiling it, and redistributing it either */
-/* with or without modifications. No license under IBM patents or */
-/* patent applications is to be implied by the copyright license. */
-/* */
-/* Any user of this software should understand that IBM cannot provide */
-/* technical support for this software and will not be responsible for */
-/* any consequences resulting from the use of this software. */
-/* */
-/* Any person who transfers this source code or any derivative work */
-/* must include the IBM copyright notice, this paragraph, and the */
-/* preceding two paragraphs in the transferred software. */
-/* */
-/* COPYRIGHT I B M CORPORATION 1995 */
-/* LICENSED MATERIAL - PROGRAM PROPERTY OF I B M */
-/*------------------------------------------------------------------------------- */
-
-/*----------------------------------------------------------------------------- */
-/* Function: ext_bus_cntlr_init */
-/* Description: Initializes the External Bus Controller for the external */
-/* peripherals. IMPORTANT: For pass1 this code must run from */
-/* cache since you can not reliably change a peripheral banks */
-/* timing register (pbxap) while running code from that bank. */
-/* For ex., since we are running from ROM on bank 0, we can NOT */
-/* execute the code that modifies bank 0 timings from ROM, so */
-/* we run it from cache. */
-/* Bank 0 - Flash and SRAM */
-/* Bank 1 - NVRAM/RTC */
-/* Bank 2 - Keyboard/Mouse controller */
-/* Bank 3 - IR controller */
-/* Bank 4 - not used */
-/* Bank 5 - not used */
-/* Bank 6 - not used */
-/* Bank 7 - FPGA registers */
-/*----------------------------------------------------------------------------- */
-#include <ppc4xx.h>
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-
- .globl write_without_sync
-write_without_sync:
- /*
- * Write one values to host via pci busmastering
- * ptr = 0xc0000000 -> 0x01000000 (PCI)
- * *ptr = 0x01234567;
- */
- addi r31,0,0
- lis r31,0xc000
-
-start1:
- lis r0,0x0123
- ori r0,r0,0x4567
- stw r0,0(r31)
-
- /*
- * Read one value back
- * ptr = (volatile unsigned long *)addr;
- * val = *ptr;
- */
-
- lwz r0,0(r31)
-
- /*
- * One pci config write
- * ibmPciConfigWrite(0x2e, 2, 0x1234);
- */
- /* subsystem id */
-
- li r4,0x002C
- oris r4,r4,0x8000
- lis r3,0xEEC0
- stwbrx r4,0,r3
-
- li r5,0x1234
- ori r3,r3,0x4
- stwbrx r5,0,r3
-
- b start1
-
- blr /* never reached !!!! */
-
- .globl write_with_sync
-write_with_sync:
- /*
- * Write one values to host via pci busmastering
- * ptr = 0xc0000000 -> 0x01000000 (PCI)
- * *ptr = 0x01234567;
- */
- addi r31,0,0
- lis r31,0xc000
-
-start2:
- lis r0,0x0123
- ori r0,r0,0x4567
- stw r0,0(r31)
-
- /*
- * Read one value back
- * ptr = (volatile unsigned long *)addr;
- * val = *ptr;
- */
-
- lwz r0,0(r31)
-
- /*
- * One pci config write
- * ibmPciConfigWrite(0x2e, 2, 0x1234);
- */
- /* subsystem id */
-
- li r4,0x002C
- oris r4,r4,0x8000
- lis r3,0xEEC0
- stwbrx r4,0,r3
- sync
-
- li r5,0x1234
- ori r3,r3,0x4
- stwbrx r5,0,r3
- sync
-
- b start2
-
- blr /* never reached !!!! */
-
- .globl write_with_less_sync
-write_with_less_sync:
- /*
- * Write one values to host via pci busmastering
- * ptr = 0xc0000000 -> 0x01000000 (PCI)
- * *ptr = 0x01234567;
- */
- addi r31,0,0
- lis r31,0xc000
-
-start2b:
- lis r0,0x0123
- ori r0,r0,0x4567
- stw r0,0(r31)
-
- /*
- * Read one value back
- * ptr = (volatile unsigned long *)addr;
- * val = *ptr;
- */
-
- lwz r0,0(r31)
-
- /*
- * One pci config write
- * ibmPciConfigWrite(0x2e, 2, 0x1234);
- */
- /* subsystem id */
-
- li r4,0x002C
- oris r4,r4,0x8000
- lis r3,0xEEC0
- stwbrx r4,0,r3
- sync
-
- li r5,0x1234
- ori r3,r3,0x4
- stwbrx r5,0,r3
-/* sync */
-
- b start2b
-
- blr /* never reached !!!! */
-
- .globl write_with_more_sync
-write_with_more_sync:
- /*
- * Write one values to host via pci busmastering
- * ptr = 0xc0000000 -> 0x01000000 (PCI)
- * *ptr = 0x01234567;
- */
- addi r31,0,0
- lis r31,0xc000
-
-start3:
- lis r0,0x0123
- ori r0,r0,0x4567
- stw r0,0(r31)
- sync
-
- /*
- * Read one value back
- * ptr = (volatile unsigned long *)addr;
- * val = *ptr;
- */
-
- lwz r0,0(r31)
- sync
-
- /*
- * One pci config write
- * ibmPciConfigWrite(0x2e, 2, 0x1234);
- */
- /* subsystem id (PCIC0_SBSYSVID)*/
-
- li r4,0x002C
- oris r4,r4,0x8000
- lis r3,0xEEC0
- stwbrx r4,0,r3
- sync
-
- li r5,0x1234
- ori r3,r3,0x4
- stwbrx r5,0,r3
- sync
-
- b start3
-
- blr /* never reached !!!! */
diff --git a/board/esd/pf5200/Makefile b/board/esd/pf5200/Makefile
deleted file mode 100644
index a47cd3d73a..0000000000
--- a/board/esd/pf5200/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-
-#
-# (C) Copyright 2003-2006
-# 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
-# ifneq ($(OBJTREE),$(SRCTREE))
-# $(shell mkdir -p $(obj)../common/xilinx_jtag)
-# endif
-
-LIB = $(obj)lib$(BOARD).a
-
-# Objects for Xilinx JTAG programming (CPLD)
-# CPLD = ../common/xilinx_jtag/lenval.o \
-# ../common/xilinx_jtag/micro.o \
-# ../common/xilinx_jtag/ports.o
-
-# COBJS = $(BOARD).o flash.o $(CPLD)
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/pf5200/config.mk b/board/esd/pf5200/config.mk
deleted file mode 100644
index 170779d6c1..0000000000
--- a/board/esd/pf5200/config.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2003
-# 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
-#
-
-#
-# IceCube board:
-#
-# Valid values for TEXT_BASE are:
-#
-# 0xFFF00000 boot high (standard configuration)
-# 0xFF000000 boot low for 16 MiB boards
-# 0xFF800000 boot low for 8 MiB boards
-# 0x00100000 boot from RAM (for testing only)
-#
-
-sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
-
-ifndef TEXT_BASE
-## Standard: boot high
-TEXT_BASE = 0xFFF00000
-## For testing: boot from RAM
-# TEXT_BASE = 0x00100000
-endif
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/esd/pf5200/flash.c b/board/esd/pf5200/flash.c
deleted file mode 100644
index 53afbc0b92..0000000000
--- a/board/esd/pf5200/flash.c
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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 <common.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-typedef unsigned short FLASH_PORT_WIDTH;
-typedef volatile unsigned short FLASH_PORT_WIDTHV;
-
-#define FLASH_ID_MASK 0x00FF
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define FLASH_CYCLE1 0x0555
-#define FLASH_CYCLE2 0x0aaa
-#define FLASH_ID1 0x00
-#define FLASH_ID2 0x01
-#define FLASH_ID3 0x0E
-#define FLASH_ID4 0x0F
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(FPWV * addr, flash_info_t * info);
-static void flash_reset(flash_info_t * info);
-static int write_word_amd(flash_info_t * info, FPWV * dest, FPW data);
-static flash_info_t *flash_get_info(ulong base);
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init(void)
-{
- unsigned long size = 0;
- int i = 0;
- extern void flash_preinit(void);
- extern void flash_afterinit(uint, ulong, ulong);
-
- ulong flashbase = CFG_FLASH_BASE;
-
- flash_preinit();
-
- /* There is only ONE FLASH device */
- memset(&flash_info[i], 0, sizeof(flash_info_t));
- flash_info[i].size = flash_get_size((FPW *) flashbase, &flash_info[i]);
- size += flash_info[i].size;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET, CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- flash_get_info(CFG_MONITOR_BASE));
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- flash_get_info(CFG_ENV_ADDR));
-#endif
-
- flash_afterinit(i, flash_info[i].start[0], flash_info[i].size);
- return size ? size : 1;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset(flash_info_t * info) {
- FPWV *base = (FPWV *) (info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- *base = (FPW) 0x00FF00FF; /* Intel Read Mode */
- } else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD) {
- *base = (FPW) 0x00F000F0; /* AMD Read Mode */
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static flash_info_t *flash_get_info(ulong base) {
- int i;
- flash_info_t *info;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- info = &flash_info[i];
- if ((info->size) && (info->start[0] <= base)
- && (base <= info->start[0] + info->size - 1)) {
- break;
- }
- }
- return (i == CFG_MAX_FLASH_BANKS ? 0 : info);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info(flash_info_t * info) {
- int i;
- char *fmt;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf("AMD ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMLV256U:
- fmt = "29LV256M (256 Mbit)\n";
- break;
- default:
- fmt = "Unknown Chip Type\n";
- break;
- }
-
- printf(fmt);
- printf(" Size: %ld MB in %d Sectors\n", info->size >> 20,
- info->sector_count);
- printf(" Sector Start Addresses:");
-
- for (i = 0; i < info->sector_count; ++i) {
- ulong size;
- int erased;
- ulong *flash = (unsigned long *)info->start[i];
-
- if ((i % 5) == 0) {
- printf("\n ");
- }
-
- /*
- * Check if whole sector is erased
- */
- size =
- (i !=
- (info->sector_count - 1)) ? (info->start[i + 1] -
- info->start[i]) >> 2 : (info->
- start
- [0] +
- info->
- size -
- info->
- start
- [i])
- >> 2;
-
- for (flash = (unsigned long *)info->start[i], erased = 1;
- (flash != (unsigned long *)info->start[i] + size)
- && erased; flash++) {
- erased = *flash == ~0x0UL;
- }
- printf(" %08lX %s %s", info->start[i], erased ? "E" : " ",
- info->protect[i] ? "(RO)" : " ");
- }
-
- printf("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size(FPWV * addr, flash_info_t * info) {
- int i;
-
- /* Write auto select command: read Manufacturer ID */
- /* Write auto select command sequence and test FLASH answer */
- addr[FLASH_CYCLE1] = (FPW) 0x00AA00AA; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE2] = (FPW) 0x00550055; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE1] = (FPW) 0x00900090; /* selects Intel or AMD */
-
- /* The manufacturer codes are only 1 byte, so just use 1 byte. */
- /* This works for any bus width and any FLASH device width. */
- udelay(100);
- switch (addr[FLASH_ID1] & 0x00ff) {
- case (uchar) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- default:
- printf("unknown vendor=%x ", addr[FLASH_ID1] & 0xff);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- /* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */
- if (info->flash_id != FLASH_UNKNOWN) {
- switch ((FPW) addr[FLASH_ID2]) {
- case (FPW) AMD_ID_MIRROR:
- /* MIRROR BIT FLASH, read more ID bytes */
- if ((FPW) addr[FLASH_ID3] == (FPW) AMD_ID_LV256U_2
- && (FPW) addr[FLASH_ID4] == (FPW) AMD_ID_LV256U_3) {
- /* attention: only the first 16 MB will be used in u-boot */
- info->flash_id += FLASH_AMLV256U;
- info->sector_count = 512;
- info->size = 0x02000000;
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] =
- (ulong) addr + 0x10000 * i;
- }
- break;
- }
- /* fall thru to here ! */
- default:
- printf("unknown AMD device=%x %x %x",
- (FPW) addr[FLASH_ID2], (FPW) addr[FLASH_ID3],
- (FPW) addr[FLASH_ID4]);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0x800000;
- break;
- }
-
- /* Put FLASH back in read mode */
- flash_reset(info);
- }
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase(flash_info_t * info, int s_first, int s_last) {
- FPWV *addr;
- int flag, prot, sect;
- int intel = (info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("- missing\n");
- } else {
- printf("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMLV256U:
- break;
- case FLASH_UNKNOWN:
- default:
- printf("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf("\n");
- }
-
- last = get_timer(0);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && rcode == 0; sect++) {
- if (info->protect[sect] != 0) { /* protected, skip it */
- continue;
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr = (FPWV *) (info->start[sect]);
- if (intel) {
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
- } else {
- /* must be AMD style if not Intel */
- FPWV *base; /* first address in bank */
-
- base = (FPWV *) (info->start[0]);
- base[FLASH_CYCLE1] = (FPW) 0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW) 0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW) 0x00800080; /* erase mode */
- base[FLASH_CYCLE1] = (FPW) 0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW) 0x00550055; /* unlock */
- *addr = (FPW) 0x00300030; /* erase sector */
- }
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
- start = get_timer(0);
-
- /* wait at least 50us for AMD, 80us for Intel. */
- /* Let's wait 1 ms. */
- udelay(1000);
-
- while ((*addr & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- if (intel) {
- /* suspend erase */
- *addr = (FPW) 0x00B000B0;
- }
- flash_reset(info); /* reset to read mode */
- rcode = 1; /* failed */
- break;
- }
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) {
- /* every second */
- putc('.');
- last = get_timer(0);
- }
- }
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) {
- /* every second */
- putc('.');
- last = get_timer(0);
- }
- flash_reset(info); /* reset to read mode */
- }
- printf(" done\n");
- return (rcode);
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof(data), left -= sizeof(data) - bytes) {
-
- bytes = addr & (sizeof(data) - 1);
- addr &= ~(sizeof(data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits
- */
- for (i = 0; i < sizeof(data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left)
- data += *((uchar *) addr + i);
- else
- data += *src++;
- }
-
- /* write one word to the flash */
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- res = write_word_amd(info, (FPWV *) addr, data);
- break;
- default:
- /* unknown flash type, error! */
- printf("missing or unknown FLASH type\n");
- res = 1; /* not really a timeout, but gives error */
- break;
- }
- }
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd(flash_info_t * info, FPWV * dest, FPW data) {
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
- FPWV *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- base = (FPWV *) (info->start[0]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- base[FLASH_CYCLE1] = (FPW) 0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW) 0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW) 0x00A000A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
- start = get_timer(0);
-
- /* data polling for D7 */
- while (res == 0
- && (*dest & (FPW) 0x00800080) != (data & (FPW) 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW) 0x00F000F0; /* reset bank */
- res = 1;
- }
- }
- return (res);
-}
diff --git a/board/esd/pf5200/mt46v16m16-75.h b/board/esd/pf5200/mt46v16m16-75.h
deleted file mode 100644
index 22d0a55444..0000000000
--- a/board/esd/pf5200/mt46v16m16-75.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#define SDRAM_DDR 1 /* is DDR */
-
-#if defined(CONFIG_MPC5200)
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE 0x018D0000
-#define SDRAM_EMODE 0x40090000
-#define SDRAM_CONTROL 0x705f0f00
-#define SDRAM_CONFIG1 0x73722930
-#define SDRAM_CONFIG2 0x47770000
-#define SDRAM_TAPDELAY 0x10000000
-
-#else
-#error CONFIG_MPC5200 not defined
-#endif
diff --git a/board/esd/pf5200/pf5200.c b/board/esd/pf5200/pf5200.c
deleted file mode 100644
index 77e164bd18..0000000000
--- a/board/esd/pf5200/pf5200.c
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-/*
- * pf5200.c - main board support/init for the esd pf5200.
- */
-
-#include <common.h>
-#include <mpc5xxx.h>
-#include <pci.h>
-#include <command.h>
-
-#include "mt46v16m16-75.h"
-
-void init_power_switch(void);
-
-static void sdram_start(int hi_addr)
-{
- long hi_addr_bit = hi_addr ? 0x01000000 : 0;
-
- /* unlock mode register */
- *(vu_long *) MPC5XXX_SDRAM_CTRL =
- SDRAM_CONTROL | 0x80000000 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* precharge all banks */
- *(vu_long *) MPC5XXX_SDRAM_CTRL =
- SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* set mode register: extended mode */
- *(vu_long *) MPC5XXX_SDRAM_MODE = SDRAM_EMODE;
- __asm__ volatile ("sync");
-
- /* set mode register: reset DLL */
- *(vu_long *) MPC5XXX_SDRAM_MODE = SDRAM_MODE | 0x04000000;
- __asm__ volatile ("sync");
-
- /* precharge all banks */
- *(vu_long *) MPC5XXX_SDRAM_CTRL =
- SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* auto refresh */
- *(vu_long *) MPC5XXX_SDRAM_CTRL =
- SDRAM_CONTROL | 0x80000004 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* set mode register */
- *(vu_long *) MPC5XXX_SDRAM_MODE = SDRAM_MODE;
- __asm__ volatile ("sync");
-
- /* normal operation */
- *(vu_long *) MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
- __asm__ volatile ("sync");
-}
-
-/*
- * ATTENTION: Although partially referenced initdram does NOT make real use
- * use of CFG_SDRAM_BASE. The code does not work if CFG_SDRAM_BASE
- * is something else than 0x00000000.
- */
-
-long int initdram(int board_type)
-{
- ulong dramsize = 0;
- ulong test1, test2;
-
- /* setup SDRAM chip selects */
- *(vu_long *) MPC5XXX_SDRAM_CS0CFG = 0x0000001e; /* 2G at 0x0 */
- *(vu_long *) MPC5XXX_SDRAM_CS1CFG = 0x80000000; /* disabled */
- __asm__ volatile ("sync");
-
- /* setup config registers */
- *(vu_long *) MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
- *(vu_long *) MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
- __asm__ volatile ("sync");
-
- /* set tap delay */
- *(vu_long *) MPC5XXX_CDM_PORCFG = SDRAM_TAPDELAY;
- __asm__ volatile ("sync");
-
- /* find RAM size using SDRAM CS0 only */
- sdram_start(0);
- test1 = get_ram_size((long *) CFG_SDRAM_BASE, 0x80000000);
- sdram_start(1);
- test2 = get_ram_size((long *) CFG_SDRAM_BASE, 0x80000000);
-
- if (test1 > test2) {
- sdram_start(0);
- dramsize = test1;
- } else {
- dramsize = test2;
- }
-
- /* memory smaller than 1MB is impossible */
- if (dramsize < (1 << 20)) {
- dramsize = 0;
- }
-
- /* set SDRAM CS0 size according to the amount of RAM found */
- if (dramsize > 0) {
- *(vu_long *) MPC5XXX_SDRAM_CS0CFG =
- 0x13 + __builtin_ffs(dramsize >> 20) - 1;
- /* let SDRAM CS1 start right after CS0 */
- *(vu_long *) MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e; /* 2G */
- } else {
-#if 0
- *(vu_long *) MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
- /* let SDRAM CS1 start right after CS0 */
- *(vu_long *) MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e; /* 2G */
-#else
- *(vu_long *) MPC5XXX_SDRAM_CS0CFG =
- 0x13 + __builtin_ffs(0x08000000 >> 20) - 1;
- /* let SDRAM CS1 start right after CS0 */
- *(vu_long *) MPC5XXX_SDRAM_CS1CFG = 0x08000000 + 0x0000001e; /* 2G */
-#endif
- }
-
-#if 0
- /* find RAM size using SDRAM CS1 only */
- sdram_start(0);
- get_ram_size((ulong *) (CFG_SDRAM_BASE + dramsize), 0x80000000);
- sdram_start(1);
- get_ram_size((ulong *) (CFG_SDRAM_BASE + dramsize), 0x80000000);
- sdram_start(0);
-#endif
- /* set SDRAM CS1 size according to the amount of RAM found */
-
- *(vu_long *) MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
-
- init_power_switch();
- return (dramsize);
-}
-
-int checkboard(void)
-{
- puts("Board: esd ParaFinder (pf5200)\n");
- return 0;
-}
-
-void flash_preinit(void)
-{
- /*
- * Now, when we are in RAM, enable flash write
- * access for detection process.
- * Note that CS_BOOT cannot be cleared when
- * executing in flash.
- */
- *(vu_long *) MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
-}
-
-void flash_afterinit(ulong size)
-{
- if (size == 0x02000000) {
- /* adjust mapping */
- *(vu_long *) MPC5XXX_BOOTCS_START =
- *(vu_long *) MPC5XXX_CS0_START =
- START_REG(CFG_BOOTCS_START | size);
- *(vu_long *) MPC5XXX_BOOTCS_STOP =
- *(vu_long *) MPC5XXX_CS0_STOP =
- STOP_REG(CFG_BOOTCS_START | size, size);
- }
-}
-
-#ifdef CONFIG_PCI
-static struct pci_controller hose;
-
-extern void pci_mpc5xxx_init(struct pci_controller *);
-
-void pci_init_board(void) {
- pci_mpc5xxx_init(&hose);
-}
-#endif
-
-#if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
-
-void init_ide_reset(void)
-{
- debug("init_ide_reset\n");
-
- /* Configure PSC1_4 as GPIO output for ATA reset */
- *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC1_4;
- *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC1_4;
-}
-
-void ide_set_reset(int idereset)
-{
- debug("ide_reset(%d)\n", idereset);
-
- if (idereset) {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
- } else {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
- }
-}
-#endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
-
-#define MPC5XXX_SIMPLEIO_GPIO_ENABLE (MPC5XXX_GPIO + 0x0004)
-#define MPC5XXX_SIMPLEIO_GPIO_DIR (MPC5XXX_GPIO + 0x000C)
-#define MPC5XXX_SIMPLEIO_GPIO_DATA_OUTPUT (MPC5XXX_GPIO + 0x0010)
-#define MPC5XXX_SIMPLEIO_GPIO_DATA_INPUT (MPC5XXX_GPIO + 0x0014)
-
-#define MPC5XXX_INTERRUPT_GPIO_ENABLE (MPC5XXX_GPIO + 0x0020)
-#define MPC5XXX_INTERRUPT_GPIO_DIR (MPC5XXX_GPIO + 0x0028)
-#define MPC5XXX_INTERRUPT_GPIO_DATA_OUTPUT (MPC5XXX_GPIO + 0x002C)
-#define MPC5XXX_INTERRUPT_GPIO_STATUS (MPC5XXX_GPIO + 0x003C)
-
-#define GPIO_WU6 0x40000000UL
-#define GPIO_USB0 0x00010000UL
-#define GPIO_USB9 0x08000000UL
-#define GPIO_USB9S 0x00080000UL
-
-void init_power_switch(void)
-{
- debug("init_power_switch\n");
-
- /* Configure GPIO_WU6 as GPIO output for ATA reset */
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_WU6;
- *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_WU6;
- *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_WU6;
- __asm__ volatile ("sync");
-
- *(vu_long *) MPC5XXX_SIMPLEIO_GPIO_DATA_OUTPUT &= ~GPIO_USB0;
- *(vu_long *) MPC5XXX_SIMPLEIO_GPIO_ENABLE |= GPIO_USB0;
- *(vu_long *) MPC5XXX_SIMPLEIO_GPIO_DIR |= GPIO_USB0;
- __asm__ volatile ("sync");
-
- *(vu_long *) MPC5XXX_INTERRUPT_GPIO_DATA_OUTPUT &= ~GPIO_USB9;
- *(vu_long *) MPC5XXX_INTERRUPT_GPIO_ENABLE &= ~GPIO_USB9;
- __asm__ volatile ("sync");
-
- if ((*(vu_long *) MPC5XXX_INTERRUPT_GPIO_STATUS & GPIO_USB9S) == 0) {
- *(vu_long *) MPC5XXX_SIMPLEIO_GPIO_DATA_OUTPUT |= GPIO_USB0;
- __asm__ volatile ("sync");
- }
- *(vu_char *) CFG_CS1_START = 0x02; /* Red Power LED on */
- __asm__ volatile ("sync");
-
- *(vu_char *) (CFG_CS1_START + 1) = 0x02; /* Disable driver for KB11 */
- __asm__ volatile ("sync");
-}
-
-void power_set_reset(int power)
-{
- debug("ide_set_reset(%d)\n", power);
-
- if (power) {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_WU6;
- *(vu_long *) MPC5XXX_INTERRUPT_GPIO_DATA_OUTPUT &= ~GPIO_USB9;
- } else {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_WU6;
- if ((*(vu_long *) MPC5XXX_INTERRUPT_GPIO_STATUS & GPIO_USB9S) ==
- 0) {
- *(vu_long *) MPC5XXX_SIMPLEIO_GPIO_DATA_OUTPUT |=
- GPIO_USB0;
- }
-
- }
-}
-
-int do_poweroff(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- power_set_reset(1);
- return (0);
-}
-
-U_BOOT_CMD(poweroff, 1, 1, do_poweroff, "poweroff- Switch off power\n", NULL);
-
-int phypower(int flag)
-{
- u32 addr;
- vu_long *reg;
- int status;
- pci_dev_t dev;
-
- dev = PCI_BDF(0, 0x18, 0);
- status = pci_read_config_dword(dev, PCI_BASE_ADDRESS_1, &addr);
- if (status == 0) {
- reg = (vu_long *) (addr + 0x00000040);
- *reg |= 0x40000000;
- __asm__ volatile ("sync");
-
- reg = (vu_long *) (addr + 0x001000c);
- *reg |= 0x20000000;
- __asm__ volatile ("sync");
-
- reg = (vu_long *) (addr + 0x0010004);
- if (flag != 0) {
- *reg &= ~0x20000000;
- } else {
- *reg |= 0x20000000;
- }
- __asm__ volatile ("sync");
- }
- return (status);
-}
-
-int do_phypower(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- int status;
-
- if (argv[1][0] == '0') {
- status = phypower(0);
- } else {
- status = phypower(1);
- }
- return (0);
-}
-
-U_BOOT_CMD(phypower, 2, 2, do_phypower,
- "phypower- Switch power of ethernet phy\n", NULL);
-
-int do_writepci(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- unsigned int addr;
- unsigned int size;
- int i;
- volatile unsigned long *ptr;
-
- addr = simple_strtol(argv[1], NULL, 16);
- size = simple_strtol(argv[2], NULL, 16);
-
- printf("\nWriting at addr %08x, size %08x.\n", addr, size);
-
- while (1) {
- ptr = (volatile unsigned long *)addr;
- for (i = 0; i < (size >> 2); i++) {
- *ptr++ = i;
- }
-
- /* Abort if ctrl-c was pressed */
- if (ctrlc()) {
- puts("\nAbort\n");
- return 0;
- }
- putc('.');
- }
- return 0;
-}
-
-U_BOOT_CMD(writepci, 3, 1, do_writepci,
- "writepci- Write some data to pcibus\n",
- "<addr> <size>\n" " - Write some data to pcibus.\n");
diff --git a/board/esd/pf5200/u-boot.lds b/board/esd/pf5200/u-boot.lds
deleted file mode 100644
index f23432ecfa..0000000000
--- a/board/esd/pf5200/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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/mpc5xxx/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/esd/plu405/Makefile b/board/esd/plu405/Makefile
deleted file mode 100644
index ce7876c414..0000000000
--- a/board/esd/plu405/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o ../common/auto_update.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/plu405/config.mk b/board/esd/plu405/config.mk
deleted file mode 100644
index 25b2105799..0000000000
--- a/board/esd/plu405/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (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
-#
-
-#
-# esd PLU405 boards
-#
-
-TEXT_BASE = 0xFFFC0000
-#TEXT_BASE = 0x00FC0000
diff --git a/board/esd/plu405/flash.c b/board/esd/plu405/flash.c
deleted file mode 100644
index 89af1190a8..0000000000
--- a/board/esd/plu405/flash.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- switch (size_b0) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/plu405/fpgadata.c b/board/esd/plu405/fpgadata.c
deleted file mode 100644
index f6656c1504..0000000000
--- a/board/esd/plu405/fpgadata.c
+++ /dev/null
@@ -1,1160 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x9d,0x76,0x5c,0x3f,0x00,0x03,0x70,0x6c,0x75,0x34,0x30,0x35,
- 0x5f,0x31,0x5f,0x30,0x30,0x2e,0x62,0x69,0x74,0x00,0x94,0x9b,0x7f,0x6c,0x1d,0x55,
- 0x76,0xc7,0xcf,0xfc,0xb0,0x3d,0xf6,0x7b,0xf1,0x9b,0x24,0x76,0xeb,0x6e,0x82,0x33,
- 0xfe,0x41,0xf4,0x48,0x9f,0x5f,0x5e,0x9c,0x1f,0x18,0x63,0xec,0x89,0x13,0xed,0x5a,
- 0x4b,0xda,0x58,0x2a,0xad,0x56,0x15,0x62,0x0d,0x9b,0xad,0xa2,0xca,0x44,0xa6,0xdb,
- 0x56,0x51,0xba,0x0d,0xd7,0x71,0x20,0x06,0x7b,0x89,0xa1,0x48,0x04,0x9a,0xd2,0x17,
- 0x88,0x84,0x05,0xd6,0xea,0xe5,0x47,0x89,0x21,0x29,0x4c,0x8c,0x81,0x07,0x4d,0x83,
- 0x9b,0xa0,0x2a,0x1b,0x68,0x78,0x50,0x2f,0x98,0x10,0xb2,0xce,0x8f,0x06,0x93,0x38,
- 0x71,0xef,0x9d,0x99,0x7b,0xe7,0xce,0xaf,0x67,0xaf,0xf7,0x8f,0x3d,0x99,0x77,0x35,
- 0xdc,0x73,0xde,0x9d,0x73,0x3e,0xf3,0x3d,0xe7,0x41,0x71,0x6c,0xd2,0xfa,0x1f,0x80,
- 0xf0,0x20,0xa8,0x5d,0x9d,0x7f,0xb7,0x2a,0xb5,0xfa,0xa7,0x2b,0x7e,0x9a,0x4a,0x25,
- 0xb7,0xfc,0x6c,0x13,0x3c,0x04,0x91,0xfa,0x5f,0xac,0x4e,0xfd,0xfc,0x6f,0x1f,0x59,
- 0xb1,0x6a,0x15,0xfc,0x0c,0xff,0x2b,0x95,0x5a,0xb9,0x3c,0x75,0xd7,0xf2,0x54,0x03,
- 0x6c,0x82,0xe2,0x15,0xab,0x1a,0x57,0xae,0x68,0xac,0x5f,0x05,0x3f,0x07,0x61,0xe5,
- 0xfe,0x19,0xfc,0xf7,0xea,0xf3,0x7f,0xfe,0x57,0x29,0x40,0x02,0x00,0x14,0xa5,0x84,
- 0x0e,0xf2,0xff,0x91,0x94,0xa0,0x09,0x80,0x5a,0xea,0x52,0x60,0x90,0x7f,0x83,0xfd,
- 0x79,0x71,0x0a,0x34,0xfe,0xdf,0x42,0x0a,0x74,0x68,0x07,0xbd,0x1f,0x16,0xa8,0x30,
- 0xeb,0x9f,0xa0,0xcb,0x88,0xda,0xbf,0xe7,0xfa,0x99,0x0f,0x51,0xe8,0x32,0xe7,0xaf,
- 0xe5,0x72,0x9a,0x9a,0x62,0x6a,0x2e,0xf7,0x07,0x76,0xff,0xb3,0x73,0xba,0xff,0x35,
- 0x7a,0xff,0xdf,0x77,0x3d,0x2c,0x98,0xc3,0x72,0x00,0x99,0xed,0xc7,0x0a,0x8f,0x0c,
- 0x78,0x87,0x1d,0xa0,0x42,0x21,0x08,0xc4,0xa8,0x00,0xd1,0x75,0xff,0x51,0xba,0xfe,
- 0x78,0xc1,0x2d,0x98,0x41,0x2d,0xe3,0xa5,0x5b,0xa5,0x2d,0xea,0x0d,0xf4,0x07,0xb9,
- 0xd8,0x94,0x84,0xaf,0xec,0x6c,0xb1,0x8c,0xcf,0x90,0x69,0x4c,0xca,0x5d,0xf6,0xfa,
- 0x91,0x8a,0x8b,0x70,0x14,0x25,0x0d,0x65,0x8f,0x98,0x94,0xb1,0xf1,0x79,0xdf,0xb0,
- 0x68,0x5e,0xc9,0x45,0x1c,0x43,0xca,0xc8,0x34,0x8a,0x59,0xe8,0x87,0x43,0x10,0xcf,
- 0xfe,0x20,0x25,0x9e,0xc0,0x46,0xad,0xb1,0xc8,0x32,0x12,0x46,0x84,0x18,0xff,0x64,
- 0x19,0x97,0x05,0x7a,0x7f,0x03,0x86,0xe0,0x28,0xbe,0xa8,0x0c,0x8b,0xc4,0x48,0x1a,
- 0x91,0x8c,0x78,0xc1,0x6d,0xf4,0x65,0x60,0x12,0xbb,0x64,0xfd,0xad,0x2d,0xbf,0x00,
- 0x37,0xa0,0xd1,0x28,0xcd,0x48,0xc4,0x58,0x63,0xc4,0x2c,0xa3,0xd9,0x32,0x3e,0xb1,
- 0x8c,0x31,0xa0,0xf7,0x4f,0x0b,0xc7,0x60,0x06,0x5a,0x8c,0xd8,0xa4,0xf4,0x4b,0x6a,
- 0x4c,0xfb,0x8c,0x41,0x76,0x7f,0x43,0x1d,0x32,0xef,0x16,0x7d,0x53,0x4a,0x10,0xe3,
- 0x38,0x7f,0x5b,0xfa,0x1f,0x5a,0x78,0x15,0x34,0xba,0xbe,0x20,0x61,0x6e,0x52,0x59,
- 0x05,0x09,0xf8,0x46,0xb4,0xb7,0x7d,0xb7,0xc7,0x91,0xcb,0xf8,0xf4,0xdb,0xeb,0xe5,
- 0x0d,0x66,0x34,0x8a,0xcb,0xc4,0xa8,0x2f,0x2c,0x2c,0x50,0x53,0x72,0xbb,0xbd,0x7e,
- 0x4a,0x7d,0x00,0x8e,0xa0,0xba,0x5c,0xf1,0x4f,0xc4,0x4a,0x78,0x05,0xd5,0x4d,0x44,
- 0xb6,0x8a,0xe7,0x10,0xb9,0x42,0x0c,0xb0,0x8d,0x5b,0xec,0xfe,0x6d,0xca,0x06,0xb8,
- 0x82,0x37,0x39,0x4f,0x95,0x4a,0x8d,0x2b,0xdd,0x4d,0x13,0xb1,0x54,0xcd,0x49,0x38,
- 0x0d,0x4d,0x46,0x2c,0x25,0x9d,0xc0,0x1f,0x35,0x8d,0x62,0xe3,0x14,0x3b,0x1d,0x7a,
- 0xf9,0x31,0x99,0x04,0x21,0x99,0x21,0xd1,0x50,0x5b,0x46,0x63,0x97,0x2c,0xc3,0x15,
- 0x9f,0xb1,0x42,0x1a,0x1f,0x45,0xb6,0xe2,0x13,0x1b,0xa8,0x21,0xd1,0x48,0x7a,0xe2,
- 0x6f,0x1b,0xe7,0x59,0xfc,0x4f,0x54,0xec,0x85,0x23,0x50,0x67,0x44,0xba,0xc4,0x4f,
- 0x4d,0xa3,0x94,0x1a,0x11,0xce,0xb8,0x2c,0xd3,0xfb,0x6b,0xf0,0x22,0x76,0xea,0xe1,
- 0x5c,0xe4,0x27,0xe2,0x39,0x81,0x78,0xd7,0xc7,0xb9,0xc9,0x8c,0x1c,0x8b,0x7f,0xa7,
- 0xdc,0x6f,0x05,0x6d,0x58,0x3c,0x21,0x10,0xe3,0x07,0xae,0xf3,0x66,0x1b,0xa7,0xd8,
- 0xf9,0x9c,0x28,0x9f,0x80,0xeb,0xd0,0x8c,0x62,0x83,0x3d,0xb6,0x91,0x96,0x88,0xb1,
- 0x9d,0x1a,0xe6,0x95,0xeb,0x6c,0x3f,0x6d,0x42,0x1a,0xa6,0xa0,0x19,0x62,0x48,0xca,
- 0x99,0x46,0x29,0x31,0x86,0xf9,0x2b,0xd8,0x38,0x05,0xf4,0xfe,0x8a,0xba,0x1f,0xbe,
- 0x87,0x66,0x3d,0x36,0x20,0x6d,0xb2,0x8d,0x75,0xe3,0xf4,0x0a,0x33,0x46,0xd8,0x7e,
- 0x10,0x4e,0xb5,0x6f,0x40,0x52,0x8f,0xec,0x91,0x6c,0x63,0x40,0x1c,0x17,0xa8,0x61,
- 0x5e,0x29,0x1d,0xc0,0xfe,0xd2,0x2c,0xd8,0x50,0x50,0x6b,0x2d,0x7b,0x46,0xac,0x65,
- 0xeb,0x65,0xd7,0x7a,0x6c,0xbc,0xc7,0xce,0x83,0x56,0x26,0xc3,0x01,0x48,0xb4,0xf7,
- 0x0d,0x2c,0x58,0x4f,0x0c,0x3d,0xa2,0x8a,0xa3,0x6e,0xa3,0x44,0x15,0x47,0x04,0x7a,
- 0x1e,0xb6,0xce,0xeb,0xa0,0x4e,0x69,0x8e,0xe3,0x5e,0x7f,0x4f,0x4a,0xf4,0x7c,0xee,
- 0x29,0xb7,0x9d,0x1a,0xb3,0xbd,0xdb,0x8d,0xdd,0x94,0x5d,0xfe,0x96,0x0e,0x48,0x5f,
- 0x16,0xd2,0xf3,0x50,0x51,0x60,0x5d,0x5c,0x32,0x56,0x53,0xeb,0x0b,0x0b,0x33,0xde,
- 0x63,0xe7,0xa7,0x41,0xc9,0xc9,0xc3,0x90,0x54,0x22,0x48,0xd4,0xcc,0x6d,0x60,0x83,
- 0xec,0x27,0xe9,0x32,0x4e,0xb2,0x78,0xb6,0x95,0xef,0x24,0x4e,0xb5,0x46,0xd4,0xc2,
- 0x9d,0xca,0x01,0xa1,0xd3,0x76,0x53,0x20,0xfe,0x16,0x32,0xc7,0x4f,0xb1,0xfc,0xb3,
- 0x47,0xde,0x6f,0x06,0x6d,0xd1,0x40,0x09,0x31,0x96,0xb9,0xc2,0xe8,0xc4,0x93,0x9d,
- 0x87,0xb4,0xed,0x6f,0x44,0x95,0xc8,0x17,0x9d,0x0c,0xde,0xff,0x04,0xcb,0x9f,0x59,
- 0xc1,0x3a,0x0f,0xbb,0x9f,0xe9,0xc1,0xe7,0x41,0x60,0xcb,0xb6,0xbb,0xd6,0x5f,0x67,
- 0xf9,0x47,0x51,0xed,0xf3,0xd6,0x2d,0x79,0x0e,0x1e,0x6f,0x7c,0x28,0xd3,0xf3,0x1f,
- 0x2f,0x88,0xc3,0x9b,0x90,0x44,0xf7,0x8e,0x8b,0x13,0xc4,0xe8,0x8e,0xa4,0xc5,0x09,
- 0xf9,0x4d,0xd8,0x82,0xee,0x4d,0x5b,0x57,0x50,0x24,0x2d,0x3d,0xc9,0xce,0x43,0xdc,
- 0xce,0x3f,0x8b,0x34,0xb5,0x5f,0xf5,0x3e,0x26,0xcc,0xf8,0x10,0xe8,0xf7,0x8b,0xe0,
- 0x7e,0xf2,0x90,0x9e,0x88,0x74,0x04,0x3c,0xb6,0xcc,0x18,0x64,0xf7,0xef,0x45,0x0f,
- 0xa8,0xdf,0xa1,0x7b,0x72,0xb1,0xcd,0xd2,0x8b,0x60,0x1a,0x5b,0xa5,0x73,0xd8,0xa8,
- 0xa3,0x86,0x79,0xe5,0x3c,0xcb,0x3f,0x4a,0xb9,0x9d,0x4f,0xd2,0x5c,0x1a,0x91,0xbd,
- 0xf9,0x64,0x84,0xe5,0x1f,0x90,0xdf,0x22,0xf5,0xeb,0x6a,0xec,0x6b,0x69,0x3b,0x31,
- 0x72,0xa5,0x66,0xfd,0x1a,0xb0,0xeb,0xd7,0x8c,0x55,0xbf,0x0c,0x76,0x7e,0x06,0x2b,
- 0xf6,0xea,0x78,0x93,0x13,0x91,0x6d,0xe2,0x62,0xba,0xdb,0x93,0xbd,0xde,0xfd,0x9f,
- 0x67,0xdf,0x2f,0x20,0x3b,0x5f,0xe9,0xa2,0xe9,0xb8,0x51,0x82,0x97,0xa1,0x23,0xf0,
- 0xb0,0x6b,0xbd,0xc1,0xf2,0x8f,0x46,0xf3,0x8f,0xca,0xe7,0x73,0xaf,0x91,0x65,0xe7,
- 0x73,0xd0,0xf4,0x17,0x27,0xd5,0x5e,0xa9,0xd3,0xf4,0xae,0x34,0x30,0x7f,0xb2,0xfd,
- 0x20,0xc1,0xbe,0x38,0x58,0x94,0xf0,0x2d,0x63,0x46,0x8e,0xe5,0x9f,0x2a,0xf5,0x98,
- 0x62,0x26,0x6d,0x63,0xdd,0x2f,0xe1,0x77,0xb4,0xcc,0x7d,0xe6,0xa9,0x77,0x68,0x3d,
- 0x5d,0xbf,0x4f,0xee,0xb4,0x8a,0x54,0x5c,0x4c,0xd8,0xf9,0xdc,0x5b,0x7f,0xb1,0xe1,
- 0xe4,0x1f,0x24,0x58,0xf5,0x2e,0xd2,0xdb,0x9a,0x08,0xa9,0xd7,0xd8,0x48,0xb3,0xf3,
- 0xa0,0x94,0x99,0x61,0xc9,0x46,0x32,0x49,0x6c,0xa8,0x89,0xb1,0x7b,0x53,0xe2,0x7f,
- 0x22,0x6f,0x7c,0x9c,0xfc,0x03,0xbf,0x22,0xfb,0x69,0xc9,0xe2,0x43,0xfe,0x30,0x7c,
- 0xa3,0x37,0x8f,0x11,0x37,0x91,0xa7,0xfe,0x4a,0x88,0xe5,0x9f,0x74,0xf9,0x34,0x3c,
- 0x0a,0x78,0xd9,0x7c,0xe9,0x98,0x46,0xfc,0x2d,0x9d,0x94,0xbe,0x45,0xde,0xfa,0x3e,
- 0x21,0x32,0xde,0x30,0xf9,0xa7,0x39,0x17,0xfb,0xa2,0xa7,0x99,0x9e,0x96,0x21,0xf4,
- 0x11,0x72,0x9f,0x9f,0x49,0x76,0x7e,0x90,0x6a,0x43,0xce,0x90,0x98,0x2c,0x30,0x8d,
- 0xcc,0x43,0x33,0x7a,0x9f,0x9b,0x7f,0xc4,0x1c,0xfb,0x7e,0x95,0x82,0x13,0x8a,0xe9,
- 0x14,0xf0,0xe7,0xa1,0x47,0xf4,0xfa,0xcb,0xf6,0x53,0x6e,0x61,0x8f,0x94,0x16,0x69,
- 0x3c,0x5b,0x2f,0x88,0x7d,0x9e,0x78,0x4e,0x3a,0xe7,0xf3,0xd9,0x21,0x1a,0x04,0xb2,
- 0xde,0x34,0x86,0xe0,0x3f,0xdc,0xf1,0x11,0x0d,0x96,0x7f,0x3e,0x07,0x9b,0x7f,0xb4,
- 0x08,0x8b,0xc6,0xa7,0x3e,0xfe,0x99,0xe2,0xf8,0xc7,0x3e,0x66,0x03,0x52,0x82,0x7b,
- 0x1e,0x45,0x77,0xfc,0x27,0x59,0xfe,0xc9,0xca,0xf6,0xb6,0x9d,0xfd,0x8b,0xd3,0xbe,
- 0xf3,0xe0,0xf0,0x4f,0xae,0x80,0xe4,0x9f,0xb8,0x11,0xb9,0x23,0x2f,0xff,0xb0,0xfc,
- 0xd3,0x21,0x54,0x5a,0x45,0x7f,0x33,0xe6,0x9f,0x23,0x3b,0xb1,0xb1,0xad,0xda,0xcf,
- 0x03,0x67,0x38,0xfe,0x89,0xea,0x57,0xa0,0x21,0x17,0x83,0x48,0x14,0xd3,0xce,0x62,
- 0x23,0xd6,0x28,0x9d,0x84,0x2b,0x99,0xa6,0x1c,0xe5,0x1f,0xc3,0xcd,0x3f,0xb7,0x99,
- 0xf1,0x19,0x8d,0xe5,0x38,0xfe,0xd1,0xcd,0x2b,0x81,0xfc,0x33,0x58,0xe0,0x7f,0xfa,
- 0x2e,0xa0,0x6f,0x42,0xf9,0x27,0x3b,0xdf,0xce,0x27,0x7c,0xfe,0x4c,0x87,0xf3,0x8f,
- 0x61,0xf2,0x4f,0x9d,0xc9,0x3f,0xcc,0x4d,0xfd,0x15,0x8f,0xbf,0x93,0x2c,0xff,0xb4,
- 0x95,0xd9,0x41,0xab,0x0d,0x48,0x3b,0x81,0xfc,0x33,0x68,0x41,0x4e,0x87,0xc4,0xf1,
- 0xcf,0x79,0x07,0x84,0xbc,0xfc,0x03,0xb4,0xe8,0xf4,0xe4,0x60,0x2b,0x6c,0x0f,0xae,
- 0x47,0x3c,0xff,0xd8,0x45,0x6d,0x8f,0x84,0xeb,0xbb,0xe4,0xaf,0xef,0x8d,0x21,0xfc,
- 0xf3,0x34,0xc7,0x3f,0x3e,0xc3,0xc9,0x3f,0x15,0x72,0x2d,0xa5,0xa3,0xda,0xc0,0x7a,
- 0xbd,0xcc,0xcd,0x3f,0x8a,0x2c,0x5b,0x45,0x9f,0xf1,0x4f,0x99,0x97,0x7f,0x22,0x3c,
- 0xff,0x0c,0x17,0x7b,0xf8,0xe7,0x23,0x8f,0xbf,0x8d,0xc4,0xb8,0xe8,0xf0,0xcf,0x6d,
- 0xb6,0x77,0x1f,0x3b,0x6e,0xfe,0xd6,0xc7,0x03,0x0e,0xff,0xec,0x31,0xf9,0xa7,0x45,
- 0x4f,0x8c,0xf5,0x8c,0xc3,0x4d,0xf2,0xe9,0xb3,0xd2,0xd5,0x1d,0x1f,0x58,0x98,0xe4,
- 0xac,0x67,0xf9,0xa1,0x41,0x35,0xf9,0x07,0x94,0x9d,0x8c,0x76,0x5a,0x73,0xd0,0x1b,
- 0xca,0x3f,0x00,0x96,0x53,0x0a,0xe7,0xdd,0xbb,0x4a,0xb7,0x85,0x79,0x8e,0xbf,0xec,
- 0xfb,0xaa,0x28,0xb7,0xf8,0x47,0x71,0x85,0xf1,0x89,0x70,0xfe,0x29,0xb3,0x78,0x26,
- 0xba,0xc7,0xc6,0x98,0x08,0xd9,0x36,0xde,0xff,0xda,0xa7,0x02,0xf9,0x67,0x10,0x6c,
- 0x1e,0x7e,0x86,0x7c,0x2a,0x58,0xd8,0x23,0x92,0x2b,0x1b,0xb9,0xf5,0xe7,0x59,0xfe,
- 0x89,0x53,0xfe,0x41,0xeb,0x3c,0xc7,0x6c,0x49,0x30,0xff,0xc8,0x84,0x7f,0x12,0x28,
- 0x32,0x48,0x68,0x47,0x48,0xe2,0xd3,0x2b,0x66,0x6d,0xec,0x61,0xfc,0x83,0x79,0x86,
- 0x9e,0x87,0xf8,0x63,0x16,0xff,0x44,0x1a,0x0a,0xf3,0x3c,0x2f,0x0e,0xff,0x54,0x09,
- 0x36,0x36,0xdc,0x47,0x9f,0xd6,0x5f,0x04,0xf0,0xcf,0x84,0x73,0x7f,0xa5,0x52,0x3d,
- 0xe2,0x60,0x0f,0x36,0xb6,0xf5,0x58,0x46,0x24,0x98,0x7f,0xe6,0xd1,0xf7,0x29,0x3b,
- 0x7b,0x94,0xbe,0x9e,0x97,0x7f,0xf4,0x02,0xf6,0x92,0x9e,0xd4,0xbf,0x43,0x2b,0x89,
- 0x81,0x0f,0xe9,0x40,0xcb,0x38,0x5f,0xbf,0x9c,0xf7,0xdf,0xc1,0xf9,0x26,0xff,0xe0,
- 0x4d,0x4a,0x0f,0x60,0x8c,0xa9,0xc2,0xd9,0x58,0x7a,0xc0,0x38,0x4d,0xdc,0xe4,0xf9,
- 0x87,0xc5,0x7f,0x00,0xf6,0x52,0x7f,0x89,0xe3,0x55,0xe4,0xd3,0x0d,0xb0,0x4b,0xa8,
- 0x33,0x24,0x6e,0xfd,0x7b,0x2c,0xff,0xfc,0x35,0xcd,0x3f,0x16,0xff,0x68,0x86,0x94,
- 0xc2,0xeb,0x49,0x3e,0x2f,0xe6,0xe2,0x79,0x86,0x9d,0xcf,0x84,0xcd,0x7b,0xf8,0x22,
- 0xa9,0x2f,0x07,0x71,0x76,0x2d,0xea,0xf4,0xd6,0x2f,0xfc,0xfd,0xea,0x6c,0x3f,0xf6,
- 0xc5,0x3d,0x01,0xd8,0xc3,0x8c,0x71,0x76,0x9e,0x1f,0x53,0xa7,0x55,0x33,0x69,0x67,
- 0x84,0xa6,0xf0,0x17,0x7f,0xa7,0x5e,0x1f,0xdf,0x69,0xf3,0xcf,0x00,0xd3,0x1f,0x24,
- 0xcb,0xe0,0x41,0x28,0xa7,0x33,0xfe,0x91,0x59,0x99,0xb3,0xd7,0xa7,0x0a,0xad,0x2b,
- 0x8b,0x5c,0xbc,0x44,0xf7,0xaf,0x80,0x59,0xe6,0x46,0xb1,0xbf,0xfd,0x04,0x7b,0x8e,
- 0x13,0xc3,0x20,0x57,0x4a,0x9c,0xf8,0x54,0x8f,0x14,0xd0,0xf3,0x80,0x94,0x4e,0x0b,
- 0xc3,0x06,0xa4,0xa1,0xb4,0x59,0xdf,0xaf,0x92,0x42,0xac,0x36,0x93,0x8d,0x39,0xbc,
- 0xc7,0xf2,0x55,0xfa,0x36,0xd3,0xa9,0x2c,0x7e,0xff,0xb2,0x1d,0xbf,0xdc,0x8d,0xf9,
- 0x47,0xc3,0x57,0x78,0xfe,0x29,0x70,0xf3,0x0f,0xa3,0x9d,0xbb,0x89,0xf1,0x16,0x7f,
- 0x85,0x18,0x0b,0x1d,0xfe,0x31,0x30,0xff,0x7c,0x43,0x69,0xe7,0x1b,0xa4,0x11,0xef,
- 0x12,0x5e,0xfd,0x07,0xd7,0x23,0xa6,0xff,0x14,0xb8,0x9e,0xa6,0x38,0x31,0xfa,0xe9,
- 0x95,0x0d,0xd4,0xb8,0x5c,0xc0,0xf3,0xcf,0x6b,0x94,0x16,0x5e,0x83,0x6a,0x62,0x24,
- 0x7d,0xfc,0xe0,0xf0,0x8f,0x5e,0xce,0x7d,0xfb,0x57,0xa0,0x91,0x18,0xaf,0xb8,0xcf,
- 0x43,0x51,0x46,0x1a,0x63,0xf9,0x27,0xe3,0xe8,0x3f,0x2c,0x1a,0x57,0xdd,0x57,0x76,
- 0xe3,0xf8,0xf8,0xf4,0x1f,0xfb,0x6e,0x8d,0x46,0x34,0xd3,0x73,0xbb,0xe8,0x3d,0x9f,
- 0x0e,0xff,0x9c,0x29,0x70,0x61,0x70,0xf5,0x74,0x49,0x23,0x2e,0x4c,0x5e,0x7e,0xbb,
- 0xe6,0xe1,0x1f,0x27,0x3e,0x39,0x25,0x85,0x1f,0x9c,0x97,0x43,0xf9,0x67,0x92,0xf2,
- 0xcf,0x36,0xf1,0x1c,0x4e,0x2c,0x55,0xb9,0x92,0xad,0x96,0x10,0x14,0xaa,0xff,0x44,
- 0x2d,0xc8,0x69,0x34,0x69,0xa7,0x01,0xef,0x5f,0xaa,0x83,0xff,0x75,0xf4,0x9f,0xc5,
- 0x26,0xff,0xd0,0xe3,0x43,0xf9,0xc7,0x8c,0x86,0x4c,0x84,0xa3,0xd8,0xa5,0xc8,0xb4,
- 0xfe,0x99,0x97,0x7f,0x58,0xfc,0x31,0xff,0xe0,0xec,0x54,0x69,0xc7,0xbf,0xbb,0xde,
- 0xd8,0x9d,0x91,0xa2,0xae,0xe7,0xf7,0x78,0x30,0xff,0x58,0xd9,0x63,0xb5,0x11,0x99,
- 0x14,0x2b,0xe0,0x95,0x50,0xfe,0x41,0x94,0x7f,0x4c,0xef,0xba,0xab,0x88,0xfe,0xd3,
- 0x0c,0xbb,0x42,0xf5,0x1f,0xc6,0x3f,0x56,0xf4,0x96,0x62,0xa3,0xa4,0x14,0x79,0xe3,
- 0x19,0xc0,0x3f,0x16,0xed,0xd4,0x13,0xe3,0x6e,0x9c,0xef,0x67,0xe7,0x1f,0xab,0xfa,
- 0xa8,0xc4,0xd0,0xa7,0x3c,0x20,0x14,0xc0,0x3f,0x76,0x75,0xeb,0x58,0x4c,0x40,0xe8,
- 0x83,0x70,0xfd,0x47,0xe6,0xb1,0xc7,0x48,0xea,0xf1,0xbd,0xd5,0xb2,0x53,0x7f,0xbf,
- 0xf6,0xf1,0x4f,0x01,0x93,0x7d,0x70,0xe1,0x56,0x93,0xeb,0x4b,0xe6,0xef,0xa8,0xf5,
- 0xd7,0x6b,0x3f,0xff,0xd8,0xd5,0xbf,0x5d,0x29,0x2b,0xb9,0x1d,0xba,0xe9,0x95,0x7d,
- 0x5e,0xfe,0x69,0x70,0xf4,0x9f,0xb4,0x19,0x8d,0x2c,0x06,0x21,0x5c,0x51,0x43,0xf5,
- 0x9f,0xdb,0x5c,0xfe,0x56,0x92,0xb2,0x7e,0x15,0xbe,0x17,0xed,0x2b,0x5f,0x7b,0xf9,
- 0xa7,0x42,0x18,0x87,0xdf,0xd8,0xeb,0x95,0x9b,0xd0,0xd2,0x5e,0xfa,0xb1,0x24,0xfb,
- 0xe2,0xf3,0x5e,0x39,0x8d,0x7f,0x03,0x78,0xd4,0x9e,0x38,0x12,0x35,0x31,0x9c,0x7f,
- 0xda,0x0a,0x3c,0x74,0x87,0x41,0xa8,0x30,0xed,0xf5,0xf7,0x94,0xe0,0xe5,0x1f,0x3b,
- 0x7a,0x78,0x7d,0x4a,0x24,0xf1,0x2f,0x0d,0xd7,0x7f,0xa2,0xcf,0x0b,0xcd,0x6b,0x8b,
- 0x06,0x04,0xa6,0x6e,0x91,0xef,0xb7,0xd2,0xad,0xff,0xb0,0xf3,0x3f,0x21,0xec,0x87,
- 0xbb,0xdc,0xde,0x45,0x7c,0x7a,0x51,0xcd,0x75,0x8e,0x7f,0x34,0x4a,0x3b,0xe4,0x8b,
- 0xa8,0x87,0x28,0x8e,0xbf,0x9c,0x95,0x3d,0xfa,0x0f,0x3b,0xff,0x54,0xff,0xc1,0x90,
- 0xb3,0x19,0xde,0xd2,0xef,0xec,0x56,0xbe,0x58,0x16,0x87,0xb3,0x60,0x82,0x50,0x10,
- 0xff,0x38,0xf9,0x67,0x03,0x64,0x52,0x9a,0x11,0x6f,0x68,0x8d,0x42,0x4f,0x28,0xff,
- 0xa4,0x05,0x26,0x9b,0xdc,0x0f,0xc7,0xd0,0xed,0x08,0xba,0x0a,0x9b,0xf4,0xe7,0x6c,
- 0x61,0xc4,0xcf,0x3f,0x83,0x50,0x49,0x69,0xe7,0x01,0xf8,0x77,0xcc,0x27,0xd1,0xf3,
- 0x52,0xa5,0xf1,0x7e,0x38,0xff,0xdc,0xe6,0xe4,0x5b,0x99,0x80,0x71,0x6c,0x1f,0x7e,
- 0x7f,0xf7,0xd4,0xf7,0x1f,0x71,0xfa,0x0f,0x5f,0xbf,0x6e,0x0d,0xb4,0xe4,0xa2,0x67,
- 0x22,0x04,0xd2,0x43,0xf5,0x1f,0xc1,0xe6,0x9f,0x15,0x78,0xb7,0xaf,0xa3,0xba,0xc1,
- 0xde,0x47,0xc4,0x26,0xd8,0x15,0xae,0xff,0x00,0x97,0xaf,0x0e,0x6b,0x75,0x59,0xa5,
- 0x43,0xbc,0x5f,0xf4,0xae,0xe7,0xf4,0x1f,0x3e,0xff,0x64,0xc8,0xf9,0xd1,0xc4,0x3f,
- 0xf1,0xc5,0xd3,0xab,0xff,0xd8,0xde,0x65,0x48,0xa3,0xc1,0x10,0xff,0xd1,0xc7,0x3f,
- 0x9c,0xfe,0x03,0x5c,0xbd,0x9b,0x22,0xd9,0xe9,0x59,0x69,0xc8,0xc7,0x3f,0x8e,0xfe,
- 0x23,0xa8,0x5c,0x77,0xe3,0x5b,0x7d,0x65,0x7b,0x2c,0x1b,0x69,0xd2,0x3e,0xf2,0x54,
- 0x40,0x63,0xbd,0x93,0x7f,0x3a,0x9d,0xfa,0xf5,0x86,0xb8,0x46,0x8f,0xfc,0x0a,0xd7,
- 0x77,0x6f,0xfd,0xe2,0xf4,0x1f,0xbe,0xde,0x0d,0x93,0x7a,0x4d,0x84,0x0e,0xb2,0xbe,
- 0x24,0x98,0x7f,0x64,0xee,0x35,0x3f,0xa3,0xd5,0xf6,0x9a,0xa0,0xe8,0x8d,0x0f,0xa7,
- 0xff,0x14,0x74,0x3a,0xde,0x4d,0x68,0x29,0x7d,0x23,0x14,0x35,0xf9,0xea,0xaf,0xe1,
- 0xe8,0x3f,0x7f,0x44,0x9d,0xea,0x99,0x86,0x29,0xb5,0x79,0x7d,0xcc,0x08,0xe8,0xef,
- 0x70,0xfa,0x4f,0x39,0x3b,0x24,0xd7,0xe0,0x77,0x96,0x71,0xd1,0xcb,0x3f,0x41,0xfa,
- 0xcf,0xb0,0xf8,0x25,0x1c,0xed,0x76,0x63,0x4f,0xb0,0xfe,0x43,0x9d,0x1a,0xf5,0x95,
- 0xf5,0x20,0xfd,0xa7,0x80,0xb5,0xbd,0xc6,0xc3,0xf5,0x34,0x8e,0x7f,0x1c,0xfd,0x61,
- 0x5c,0xf7,0xca,0x0e,0xcc,0x70,0xf8,0x27,0xe7,0xf0,0xcf,0xad,0xf0,0xfe,0x17,0xa7,
- 0xff,0xc0,0x90,0x03,0xd5,0xfc,0xfd,0x73,0xd1,0x60,0xfd,0xa7,0x20,0x4c,0x06,0x54,
- 0x82,0xf5,0x9f,0xf2,0x0d,0xbe,0x68,0x58,0x46,0x3c,0xbf,0xfe,0xe3,0xb4,0xbd,0x0a,
- 0x2d,0x0c,0x50,0xc2,0xf4,0x1f,0x2a,0xf2,0x9c,0x44,0xd4,0x30,0xaf,0x44,0xf3,0xe9,
- 0x3f,0x66,0x34,0x74,0x16,0x96,0x1b,0x70,0x4f,0x48,0xff,0x8b,0xd3,0x7f,0xbe,0x14,
- 0xbc,0xc7,0x32,0x9f,0xfe,0xd3,0x25,0xed,0xf5,0x61,0xcf,0xa7,0xf0,0x15,0xe5,0x1f,
- 0xba,0x7f,0xc3,0xe1,0x9f,0x6b,0x3e,0xec,0xc9,0xa7,0xff,0x10,0xcc,0x76,0x9d,0x37,
- 0xf3,0xfd,0xeb,0xe5,0xbc,0xfc,0xe3,0xc5,0x9e,0x60,0xfe,0x91,0x19,0x0f,0x10,0xa3,
- 0x08,0x2d,0xe4,0x88,0x68,0x62,0x36,0xfe,0x09,0x36,0xbc,0xfc,0xb3,0x34,0x58,0xf6,
- 0x09,0xd2,0x7f,0x1c,0xfe,0x71,0x2f,0xeb,0xc8,0xc7,0x3f,0xb5,0x36,0x0f,0xc8,0x41,
- 0xfd,0xaf,0x30,0xfe,0xf1,0xcb,0x5c,0xa1,0xfc,0xb3,0x86,0x38,0xf5,0xb1,0xed,0xdd,
- 0x02,0xbf,0xbf,0xfe,0xfe,0x17,0xbe,0xd8,0xc9,0x2f,0x6b,0xd1,0x13,0xc1,0xfd,0x2f,
- 0xd5,0xdf,0xed,0xb2,0x0c,0x25,0x90,0x7f,0x14,0x87,0x7f,0x68,0xbf,0xaf,0xd5,0xaf,
- 0x08,0x39,0xf9,0xc7,0xc3,0x3f,0xd4,0x10,0xdc,0x8a,0x90,0xbf,0xff,0xc5,0xf5,0x37,
- 0xed,0x6d,0x47,0x83,0xf5,0x1f,0x61,0x3f,0xb7,0x4c,0x68,0xd6,0x97,0x04,0x9d,0x07,
- 0xb7,0xfe,0x33,0x11,0x18,0xf6,0x44,0xde,0xfe,0x97,0xa5,0xf6,0xc8,0xc4,0x68,0x25,
- 0x42,0x50,0x22,0xad,0x84,0xf1,0x8f,0x12,0x9c,0x96,0x95,0x60,0xfe,0x59,0xbb,0x98,
- 0x7b,0x7f,0x91,0xd9,0xf3,0x3b,0x6f,0x4c,0x09,0xe6,0x1f,0xa5,0x12,0xbe,0x72,0xe9,
- 0x3f,0xd4,0x88,0xce,0xca,0x3f,0xcc,0x50,0x6f,0x40,0x93,0x1e,0xd2,0xff,0xb2,0xfa,
- 0x17,0x8e,0xda,0xb3,0xfb,0x7b,0xe9,0xa2,0xee,0xad,0x5f,0x8e,0xfe,0x3f,0x68,0xe5,
- 0x9f,0x09,0xbc,0xc9,0x13,0x70,0x44,0xad,0x1b,0x2d,0x36,0x13,0x29,0xd4,0x8d,0xe7,
- 0xe5,0x9f,0xac,0xf3,0xe9,0xdf,0x98,0xfd,0xaf,0x3a,0xa3,0x6f,0x76,0xfe,0x61,0x69,
- 0xe7,0x10,0x39,0x66,0x3c,0xff,0x80,0x9f,0x7f,0x5a,0x2f,0x68,0xc4,0xd8,0x68,0xb9,
- 0xb9,0xdd,0x93,0x3f,0xe9,0x7e,0x5c,0xfc,0x43,0x8c,0x79,0xf9,0xfb,0x5f,0x1c,0xff,
- 0xb8,0x5f,0xfc,0x73,0x4b,0x78,0xfe,0xd1,0xe9,0xfa,0x6e,0x9e,0x7f,0x78,0x43,0x8f,
- 0x04,0xeb,0x3f,0xee,0x7a,0xb7,0x94,0xad,0xcf,0xba,0xd6,0xb3,0x7c,0x6e,0xf3,0x4f,
- 0xb6,0xcf,0x8c,0x86,0x4c,0xa2,0x31,0x72,0x42,0xf3,0xf1,0x00,0x8b,0x3e,0xcc,0x33,
- 0xf9,0x27,0x4b,0xbc,0xd3,0x4d,0xef,0x0e,0x5a,0x3c,0x9c,0x8d,0xb8,0xf8,0x87,0xee,
- 0xc7,0xd6,0x7f,0xde,0x8d,0x4d,0x0a,0xd3,0x56,0xdb,0x2b,0x23,0x4d,0xa7,0x67,0x48,
- 0x47,0x8c,0xe7,0x9f,0xa2,0x60,0xfd,0xe7,0xf1,0x96,0xdc,0xbc,0x29,0xbc,0x6c,0x0e,
- 0xfd,0x2f,0x93,0x76,0x20,0x99,0xc3,0x65,0xfd,0x16,0xe1,0xbd,0xd9,0xf9,0xc7,0x5f,
- 0x86,0xf2,0xf4,0xbf,0xdc,0xd8,0xf0,0x5a,0x28,0xff,0x40,0xd9,0x50,0xc0,0x79,0xf0,
- 0x82,0x50,0x40,0xff,0xcb,0x85,0x3d,0xde,0x7e,0xe8,0x54,0x98,0xfe,0x63,0x19,0xba,
- 0xf7,0x4a,0x40,0xff,0xcb,0xda,0x6d,0x22,0x87,0x8d,0x73,0xb3,0xf6,0xbf,0x9c,0x68,
- 0xe4,0xfa,0x82,0xf8,0x30,0x98,0x7f,0x88,0x71,0xdd,0xcf,0x03,0x7d,0x21,0xfc,0x73,
- 0x42,0xb9,0x82,0xc8,0xfc,0x0f,0xc1,0x1e,0xd5,0x99,0xff,0x99,0x0b,0xff,0x78,0x8d,
- 0x59,0xfa,0x5f,0x86,0x07,0x84,0x16,0x86,0xea,0x3f,0xa6,0x71,0xa2,0xda,0xfb,0x3e,
- 0xc5,0xf7,0xbf,0x2a,0x7d,0xb4,0x73,0x0e,0x79,0x41,0x68,0x52,0xa7,0xf1,0x6f,0xf3,
- 0xe6,0x1f,0xab,0xdf,0xea,0xd5,0x7f,0x6a,0x43,0xf4,0x9f,0x10,0x10,0x0a,0xd7,0x7f,
- 0x88,0x61,0xcc,0xa5,0xff,0x85,0xab,0x5b,0xd4,0x36,0x96,0x8a,0x73,0xd5,0x7f,0x20,
- 0xd9,0x8a,0x8d,0xa5,0x3e,0x3d,0x87,0xef,0x7f,0x71,0xf5,0xfa,0x79,0x62,0xa8,0x25,
- 0xb5,0x7a,0x1e,0xfd,0x47,0xe5,0xf4,0x9f,0x15,0x7a,0x94,0xf4,0xbf,0x64,0xe8,0xd6,
- 0x43,0xf9,0x47,0xf1,0xf3,0x8f,0x06,0x5e,0xfd,0xe7,0xa2,0x7f,0xfe,0x87,0xf3,0x2e,
- 0x5f,0xff,0xab,0xa2,0x80,0xe7,0x01,0xbc,0x23,0x6c,0x5c,0xd5,0xbc,0xf1,0xf9,0x32,
- 0x80,0x7f,0x30,0x7f,0x0e,0xc3,0x4b,0x10,0x11,0xc5,0xcf,0xf3,0xf5,0xbf,0x64,0x9e,
- 0xee,0x14,0x0d,0x1b,0x3b,0x46,0xa1,0x5b,0x71,0xfb,0x6b,0x04,0xf1,0x0f,0x31,0xaa,
- 0xb1,0x51,0x9d,0xaf,0xff,0xf5,0x52,0x19,0xb7,0xff,0x4b,0x50,0x6f,0xce,0x77,0xf9,
- 0xbe,0xdf,0x89,0x9d,0xbe,0xfe,0x17,0xd1,0xbb,0xec,0xb1,0x9f,0xd1,0x59,0xf8,0x87,
- 0x8b,0x7f,0xbd,0x18,0x45,0x35,0x56,0xfc,0x77,0xe7,0xe9,0x7f,0xd9,0xfc,0xd3,0x2c,
- 0xfc,0xf1,0x00,0xc6,0x9e,0xb8,0xf8,0x64,0x78,0xff,0xcb,0x9d,0x7f,0xb4,0x47,0x4c,
- 0xbd,0x2b,0x5c,0xff,0x61,0xfd,0x2f,0xfc,0xb4,0xaa,0x47,0xb4,0x3b,0x1e,0x51,0xb6,
- 0x95,0x44,0x61,0x97,0xe6,0xe9,0x7f,0xe9,0xec,0xfe,0x4a,0x25,0xc3,0x1e,0x79,0x26,
- 0xbd,0xa2,0x23,0xb1,0x5d,0xaa,0x84,0xf7,0x7b,0xef,0x09,0x9b,0xff,0x71,0xf1,0xcf,
- 0x66,0x1c,0x8d,0xc3,0xc4,0xe8,0x70,0xe7,0x93,0x11,0x91,0xc6,0x47,0x2f,0xb8,0x65,
- 0xd1,0xce,0x30,0xa9,0x56,0x4f,0xb6,0x74,0x44,0xa7,0xa5,0xbf,0x87,0x99,0xde,0x95,
- 0x21,0xf5,0x6b,0x90,0xe6,0x9f,0x6d,0xe2,0xa7,0x3a,0xc1,0x12,0x65,0x52,0x5c,0xac,
- 0x1f,0xd9,0xbf,0x9a,0xdf,0x7f,0x2b,0xaf,0xb7,0xec,0x55,0x29,0xf6,0x90,0x4f,0x65,
- 0xa5,0xab,0x04,0x47,0x40,0xab,0x72,0xf9,0x3b,0xca,0xf8,0xa7,0x83,0xe5,0x1f,0xab,
- 0x9f,0x08,0xa6,0x9e,0x7f,0x14,0x6a,0x5d,0xf1,0x74,0xfa,0x5f,0x71,0x5e,0xff,0x99,
- 0x11,0x9b,0x51,0x74,0x32,0x92,0xc0,0x69,0xb6,0xde,0x95,0x51,0xcf,0x05,0xeb,0x3f,
- 0x37,0xc8,0x69,0x99,0x33,0xff,0x10,0x63,0xe5,0x20,0x35,0x5c,0xf9,0x7c,0xd2,0xe9,
- 0x7f,0xb9,0xf8,0x47,0x5c,0xb6,0xd5,0x2e,0x5b,0xcb,0x5c,0xf5,0x6b,0x3c,0xa8,0xff,
- 0x75,0x01,0x7b,0x57,0x6d,0x62,0x12,0x3a,0x6a,0x35,0x6e,0xf2,0xe9,0x3f,0xf5,0x56,
- 0xbf,0xc3,0xc6,0x42,0x2d,0x1e,0xa6,0xff,0x28,0x74,0xec,0xa4,0x07,0xc7,0x47,0xaf,
- 0x2f,0x8b,0x4d,0xae,0xbb,0x00,0xdf,0xc5,0xdd,0xf1,0xc9,0x39,0xfa,0xcf,0x6d,0xbc,
- 0xbf,0xf1,0x7b,0x14,0xfb,0xfd,0xdd,0xa3,0xff,0x14,0xfa,0xf8,0x67,0x42,0xda,0xae,
- 0x5f,0x45,0xcb,0xf1,0x69,0x29,0x9a,0x81,0x1b,0x5a,0xcb,0x48,0x34,0xf0,0xfc,0x18,
- 0xea,0x16,0x0b,0x72,0x06,0xc5,0x04,0xbc,0x81,0x8d,0xd2,0x61,0xe2,0xa6,0x91,0x18,
- 0x53,0xf8,0xfe,0x57,0xa1,0xaf,0xff,0x95,0x16,0x37,0xf4,0x66,0xec,0x17,0x73,0x74,
- 0x48,0x4f,0xfe,0x98,0xef,0x87,0x5e,0xf6,0xf3,0xcf,0x4b,0x62,0x27,0xc9,0x66,0x4c,
- 0x46,0x6b,0xe5,0xf5,0x13,0x67,0xfe,0x79,0x74,0xbe,0x1d,0x84,0x57,0xf1,0xfb,0xe3,
- 0x14,0x9d,0xff,0xc1,0x57,0xda,0x13,0x5c,0x7c,0x3e,0x66,0xfc,0xc3,0xe6,0x9f,0x73,
- 0xc2,0x31,0xe5,0xa6,0xba,0x84,0x85,0xa5,0x8d,0xe7,0xe1,0x80,0xfe,0x17,0x99,0xc7,
- 0x9b,0xb0,0xfa,0x6b,0xf8,0x7d,0x04,0xd5,0xb7,0x07,0xeb,0x3f,0xac,0xff,0xa5,0x49,
- 0x43,0xea,0x30,0x3d,0x36,0x6f,0x83,0xf6,0x17,0x9b,0xf3,0xf7,0xbf,0x34,0xa2,0x07,
- 0x66,0x34,0xeb,0x18,0xac,0x84,0x34,0xf0,0xfa,0xcf,0x25,0x56,0xef,0x58,0xff,0x6b,
- 0xb3,0xf8,0x22,0xdc,0x83,0xee,0xa0,0xfa,0x4f,0xd5,0xa6,0x5e,0x8e,0x07,0xa6,0x65,
- 0xba,0xde,0xe6,0x9f,0x5c,0xac,0x7a,0xdd,0xc9,0xf6,0x9c,0xd6,0x60,0x0b,0x41,0x28,
- 0x35,0x9a,0xe0,0xf8,0xe7,0xb4,0x48,0xd7,0xeb,0xff,0xc2,0xf8,0xe7,0xc2,0xfc,0x69,
- 0x78,0xd4,0x02,0xa1,0xef,0xa0,0x65,0x74,0xb9,0x13,0x9f,0x85,0x4e,0xff,0xeb,0x55,
- 0xca,0x3f,0x38,0x3e,0x05,0x93,0xa2,0x79,0x2c,0x2f,0x62,0x7e,0xae,0x37,0xf8,0xf8,
- 0x8c,0x38,0xfc,0xf3,0x34,0x9d,0xff,0x91,0xf6,0xc2,0xbf,0xc1,0x6a,0x32,0xff,0x3c,
- 0x0d,0xbb,0x50,0x95,0xc1,0xde,0x1f,0xf1,0x95,0xcb,0x8c,0xaf,0x58,0xff,0xab,0x0d,
- 0x7b,0x77,0x78,0x67,0x95,0x85,0x3d,0xcf,0x21,0x6d,0x92,0xd7,0xbb,0xb2,0x8e,0xfe,
- 0xa3,0xda,0x41,0xbb,0x4b,0xec,0x87,0x83,0xa8,0xd6,0x28,0xb1,0xe6,0xa9,0xaa,0x27,
- 0xd9,0xfb,0x2c,0xbe,0x72,0x16,0x38,0xfe,0x51,0x4c,0xc8,0x99,0xc0,0x5f,0xfa,0xad,
- 0xf4,0x41,0x32,0x1d,0x3a,0x01,0x67,0xe1,0x50,0x3a,0xe1,0xe2,0x1f,0xba,0x7f,0x8b,
- 0x7f,0xb6,0x3b,0xfa,0x4f,0xa9,0x2d,0xfb,0x88,0xfc,0x44,0xf4,0x29,0x6e,0x7e,0xd5,
- 0x2a,0x6a,0x1b,0x07,0x16,0x62,0x63,0xa0,0x3e,0x58,0x1f,0x18,0x61,0xe7,0xc7,0xe2,
- 0x9f,0x46,0xab,0xda,0x1e,0x50,0x96,0xe9,0x7d,0xd8,0x50,0x70,0xd9,0x6d,0x8f,0xcf,
- 0x45,0xff,0x59,0x6a,0xcf,0x4b,0xa3,0x64,0x3b,0xaf,0x57,0x9c,0x64,0xe7,0x0d,0x4c,
- 0xfd,0x27,0x6e,0x8e,0xc1,0xf0,0x46,0xa2,0x3d,0xce,0xf1,0xc0,0x87,0xac,0xff,0xee,
- 0xd6,0x7f,0xc4,0x7a,0x6c,0xd4,0x10,0xa3,0x99,0x34,0x62,0x02,0xf4,0x9f,0x33,0xb4,
- 0xff,0x35,0x66,0xf6,0xb3,0x6c,0x7d,0xe3,0x92,0xde,0xd2,0xee,0xe2,0x19,0xd9,0xe1,
- 0x1f,0x0e,0x93,0xfe,0x4f,0x58,0xa3,0xff,0x2b,0x59,0x76,0x73,0xf0,0xc0,0xb6,0x68,
- 0xa0,0xfe,0xb3,0x95,0xf2,0x4f,0x5a,0xcc,0xa1,0x37,0x31,0xff,0x2c,0x42,0xa2,0x81,
- 0x86,0xf5,0xea,0x54,0xdc,0x1a,0xcc,0x36,0xd1,0xe8,0x29,0x96,0x7f,0x38,0xfd,0x67,
- 0x14,0xbd,0x61,0x0b,0x5f,0xa9,0x7d,0xa0,0xb5,0xf1,0xfa,0xcf,0x29,0x76,0x7e,0x28,
- 0xff,0xfc,0xf3,0x33,0x44,0x7f,0x16,0xaa,0x69,0x60,0xab,0x7f,0xcc,0xc7,0xf3,0x71,
- 0xb6,0xde,0xd1,0x7f,0xfe,0x6c,0x5c,0xbe,0xa4,0xaf,0xb1,0xe6,0x7f,0xbe,0x86,0xfa,
- 0xf6,0x44,0xa0,0xfe,0x33,0x41,0xf5,0x1f,0x73,0x5e,0x48,0x6b,0xd6,0x8b,0xac,0x65,
- 0x4d,0x64,0x19,0x43,0xa3,0xcb,0x7e,0xfe,0xd9,0xb9,0x30,0x27,0x66,0xd7,0x36,0xc3,
- 0x46,0xe2,0x66,0x76,0x41,0xe3,0x02,0x3e,0xfe,0x23,0xc1,0xfa,0xcf,0x53,0xb9,0x65,
- 0xa8,0x94,0x18,0x8f,0xa3,0x1a,0x14,0xaa,0xff,0x38,0xfc,0xd3,0xdd,0xcb,0xde,0x17,
- 0xe2,0x61,0xfa,0x0f,0xe3,0x9f,0xc2,0x73,0xa8,0x1f,0xaa,0x8e,0xe3,0xea,0x7f,0x0e,
- 0xf5,0x40,0x95,0xce,0xeb,0x3f,0xce,0xfb,0xfe,0x60,0x2f,0xc9,0x57,0x04,0x72,0x16,
- 0xce,0x08,0xa3,0x16,0xed,0x7c,0xa6,0xbd,0x8f,0xee,0x1a,0xe7,0xf5,0x9f,0x2f,0x18,
- 0xff,0x94,0xd0,0xf9,0x9f,0x4c,0xd1,0x05,0x61,0xca,0xfa,0x61,0xcb,0xb7,0x44,0x28,
- 0x6b,0x5b,0xce,0xe7,0x13,0x96,0x7f,0xc4,0xc7,0x6e,0xd1,0xb1,0xe7,0x66,0xfd,0x1a,
- 0x7a,0x1b,0x57,0xab,0x1a,0x53,0xff,0x49,0x47,0xb9,0x41,0x0e,0x47,0x9f,0xb1,0xf8,
- 0x87,0x4c,0xfb,0x48,0x7f,0x8a,0x0e,0xc3,0xea,0xd1,0x45,0x5d,0xf8,0xe9,0x38,0x02,
- 0x0f,0x2b,0x4a,0x97,0xe4,0xe8,0x3f,0x85,0x74,0x3d,0xed,0x7f,0x95,0x60,0x4c,0x82,
- 0xc3,0xba,0x83,0x79,0x69,0x25,0xaf,0xfe,0xd3,0xd7,0x80,0xeb,0x57,0x86,0x62,0xcf,
- 0x01,0xfc,0xfc,0xf2,0xf1,0x74,0xf2,0x15,0xd5,0x7f,0x4a,0x53,0x52,0x13,0x4c,0x1a,
- 0xa6,0x77,0xd3,0x26,0xd8,0x44,0x33,0x4e,0x63,0x2b,0xa0,0xff,0x75,0x80,0xf4,0xbf,
- 0x90,0x8d,0x3d,0xff,0x00,0xcd,0x23,0xbb,0xb9,0xf5,0x41,0xfc,0xd3,0xd3,0x04,0x27,
- 0xe0,0x4e,0xbb,0xde,0x0d,0x34,0xeb,0xa5,0x5c,0xbd,0xcb,0x3a,0xfd,0x2f,0xa0,0xfc,
- 0x83,0xef,0xd6,0x8b,0xd6,0xd8,0x8d,0x30,0x94,0x1c,0xe7,0xeb,0xef,0x84,0x4f,0xff,
- 0x59,0x44,0xc6,0x60,0x7a,0x91,0xa3,0xff,0x80,0x92,0x59,0x90,0xf0,0xf3,0x4f,0x89,
- 0x6c,0xcf,0xff,0x64,0xc4,0x7e,0xbd,0xd7,0x8c,0x4f,0xab,0x39,0xff,0x8c,0xf8,0x7a,
- 0xe7,0xcc,0xff,0xd8,0xfa,0xcf,0x98,0x39,0xdf,0x9b,0xb5,0x7e,0xdf,0x74,0x13,0x6e,
- 0xdc,0xd7,0x02,0xc9,0x8c,0xc0,0xce,0x83,0xd1,0xc3,0xce,0xe7,0xf3,0x96,0x53,0x1b,
- 0xbb,0x16,0x0e,0x65,0xa7,0xe1,0x6e,0xec,0x5d,0xcd,0x4d,0x98,0xd1,0x3c,0xfc,0xb3,
- 0x9e,0xf1,0x86,0x60,0x43,0xce,0xb0,0xf4,0xba,0x3a,0x53,0xd5,0x02,0x7b,0x39,0xec,
- 0xc9,0xab,0xff,0x48,0x5b,0xa0,0x6f,0xb4,0x26,0xfd,0x97,0x73,0xeb,0x7f,0x95,0x90,
- 0xb1,0xa8,0x43,0x6a,0x12,0x71,0x63,0x4e,0xf9,0xf5,0x9f,0xc2,0x2d,0xf1,0x3e,0xb9,
- 0x1a,0x95,0xf8,0x1a,0x49,0x81,0xf3,0x3f,0xf8,0x31,0x29,0x25,0x3f,0x74,0xaa,0x5d,
- 0x36,0xe7,0xfe,0x17,0x19,0x03,0x7b,0x0b,0xcd,0xd6,0xff,0x72,0xf4,0x9f,0x6f,0xc5,
- 0x4f,0x94,0xca,0x2f,0x4c,0x7d,0x89,0xcd,0x9f,0x7f,0x12,0xda,0xff,0x5a,0x0d,0xdf,
- 0xc2,0x6e,0x71,0x95,0x11,0x0f,0xda,0x7f,0x80,0xfe,0xb3,0x4a,0xdc,0xa0,0xf7,0xa8,
- 0x09,0xa4,0x59,0xf5,0xda,0xee,0xe0,0x98,0x3f,0xcd,0x08,0xd1,0x7f,0x3e,0x33,0x76,
- 0xa1,0xdb,0xf7,0x2b,0x3e,0xfd,0xe7,0xde,0x40,0xfd,0xa7,0x41,0xda,0x80,0xde,0x81,
- 0xa6,0x9d,0xd1,0x7a,0x8c,0x3d,0xa7,0x33,0xb6,0xfe,0x73,0x3a,0x8f,0xfe,0x73,0xa6,
- 0xf7,0xab,0x05,0x2d,0x3b,0xad,0xc7,0xa4,0x20,0xbf,0xfe,0x83,0xb1,0x70,0x18,0x9f,
- 0xcf,0xd3,0xa8,0xe1,0x85,0xe0,0xdf,0x2f,0x78,0xf4,0x9f,0xbb,0x48,0xd2,0x58,0x0c,
- 0xbb,0x1e,0xaa,0x42,0x7c,0x1a,0x09,0x9d,0x7f,0xc6,0x98,0x37,0x25,0xbe,0xa8,0x3d,
- 0xd7,0x7d,0x47,0xee,0x05,0xea,0xe6,0xa2,0x3c,0xfd,0x2f,0xf3,0x6d,0xe2,0x29,0xad,
- 0x07,0xb4,0x31,0x25,0xe8,0xbc,0x79,0xfb,0x5f,0x8d,0x18,0x72,0x4a,0x8e,0xca,0x67,
- 0x71,0xed,0x2c,0xf1,0xf5,0xbf,0x22,0x81,0xfa,0xcf,0x4e,0xf1,0x41,0x65,0x4a,0x2f,
- 0x14,0x03,0xfb,0x41,0x81,0xfa,0xcf,0x97,0xd1,0x0f,0x50,0xf3,0xda,0xfe,0x81,0x1a,
- 0x67,0xe2,0x25,0xaf,0xfe,0xf3,0xae,0xfc,0x1b,0x31,0xb1,0x49,0x99,0xa5,0xff,0x25,
- 0x30,0xfe,0xf9,0xad,0xfe,0xc4,0x83,0x76,0x9b,0xe6,0xf9,0xd9,0xe7,0x7f,0x52,0xe2,
- 0xb8,0xfc,0xb4,0x90,0xd0,0x79,0xec,0x99,0xad,0xff,0x95,0xc5,0xe0,0xd7,0x4f,0x8c,
- 0x33,0xb3,0xcf,0xff,0xb4,0x93,0xfe,0x17,0xc6,0x9e,0xdd,0x41,0xfd,0x1d,0x7f,0xff,
- 0xab,0x74,0x4c,0xba,0x4f,0xfd,0x9f,0x65,0x77,0xba,0xb0,0xd0,0xe1,0x1f,0x81,0xc6,
- 0x9f,0xd3,0x7f,0x34,0xe8,0xd5,0xab,0xc9,0xfc,0x4f,0xbe,0xdf,0x7f,0x51,0xfe,0x29,
- 0x51,0x4b,0x46,0xe1,0x69,0x61,0x7f,0x7b,0x71,0xb0,0xbf,0x01,0xf3,0x3f,0xfb,0x1f,
- 0x7f,0x02,0xbf,0xcf,0x16,0x0f,0xb4,0xce,0xe5,0xf7,0x5f,0xa5,0x78,0x93,0xe8,0xbf,
- 0x60,0xcd,0x0f,0xe7,0x39,0xdb,0x16,0x99,0x11,0xd8,0xff,0xda,0xa4,0x92,0x79,0xb0,
- 0xd2,0x20,0x7f,0x03,0xf4,0x9f,0x1d,0x98,0xb7,0xb3,0x4a,0x99,0x3a,0xc7,0xdf,0x7f,
- 0x45,0x36,0xa1,0x86,0xaa,0x5f,0xa3,0x97,0x07,0x19,0xf6,0x2c,0xc9,0xcf,0x3f,0xb5,
- 0x62,0x0f,0xda,0x81,0x34,0x34,0xcb,0xfc,0x33,0xe3,0x9f,0x0e,0xfc,0xca,0xf4,0x92,
- 0x52,0x43,0xb1,0xe7,0xe1,0xb0,0xf9,0x1f,0xaa,0xff,0x6c,0x96,0x5e,0xc0,0x18,0xb6,
- 0x42,0x63,0xb2,0xcf,0x2c,0xf3,0x3f,0x9a,0x94,0x53,0xae,0x8b,0x0d,0x7a,0x2c,0xb3,
- 0xce,0x9f,0x4f,0x02,0xe6,0x7f,0xb2,0x18,0x1a,0xcf,0xa6,0x53,0xb5,0x51,0x6e,0x90,
- 0x35,0x68,0xfe,0x87,0xea,0x3f,0x7a,0xfd,0x18,0xfa,0xef,0xf4,0xbe,0xae,0x62,0xb2,
- 0xed,0x43,0x92,0xd9,0x91,0xcf,0x37,0xff,0xa3,0x8b,0x93,0xea,0xe3,0x6a,0x8d,0x52,
- 0x11,0x94,0xaf,0x02,0xfa,0x5f,0x20,0xbe,0x03,0xcf,0x40,0x5a,0xbf,0xc3,0x0e,0xe3,
- 0x71,0x7e,0xf0,0x35,0x60,0xfe,0x47,0x15,0xdf,0xd1,0x46,0x40,0xc3,0xaf,0x8d,0x3f,
- 0xc2,0x6e,0x0a,0xe4,0x45,0x5b,0xcc,0x37,0xff,0x83,0x8a,0x72,0x08,0x67,0xa7,0xae,
- 0x52,0x0c,0x8a,0x74,0xcc,0x35,0x9f,0xfe,0x63,0x48,0x5d,0xf2,0xc9,0xf4,0x21,0xbd,
- 0x7f,0x72,0xa1,0x75,0x65,0x1e,0x37,0x08,0xed,0xcc,0xff,0x74,0x53,0xfe,0xe9,0xef,
- 0xd9,0x57,0xfd,0x64,0x5b,0x75,0x7b,0x60,0xfd,0xf2,0xf6,0xbf,0xf0,0x6b,0x7e,0xaf,
- 0xd8,0xb1,0xae,0x0f,0x3f,0x2f,0x4a,0xe0,0x7a,0xbf,0xfe,0x23,0x88,0x9b,0x60,0x07,
- 0x54,0xb7,0x55,0x04,0xf3,0x00,0x0b,0xbf,0xc9,0x3f,0x38,0x1a,0xe8,0x0f,0x3b,0xe4,
- 0x2c,0xd4,0xeb,0xd6,0x6b,0xb5,0x6e,0x36,0x7a,0xd8,0x68,0x90,0xe1,0xd7,0x7f,0x46,
- 0xa4,0x01,0xb8,0xd6,0xfa,0x68,0xbb,0x2d,0x04,0xcd,0xaa,0xff,0x4c,0x49,0xbf,0x26,
- 0xc6,0xe7,0xb8,0x90,0x35,0xc3,0x8c,0x12,0xa6,0x1f,0xf2,0xfd,0x2f,0xc5,0x9e,0xff,
- 0x49,0xc2,0xdb,0x7a,0xf5,0xec,0xfd,0xaf,0xfe,0xb2,0x43,0x22,0x01,0xa1,0x1f,0x6e,
- 0x80,0x4c,0x3c,0xcd,0xfb,0xbb,0x34,0xac,0xff,0x55,0x68,0x1a,0x9d,0xd6,0x60,0xd5,
- 0x6c,0xf3,0xcf,0xf8,0x20,0xc9,0xa6,0x81,0xc3,0x62,0xb8,0xf5,0xb1,0x40,0xfe,0xc1,
- 0xd1,0x10,0x89,0x11,0x39,0x06,0x57,0x06,0xde,0x9e,0x9d,0x7f,0x86,0xe8,0x34,0xef,
- 0x05,0xf8,0xbe,0xeb,0x60,0x58,0xff,0xcb,0x37,0xff,0x93,0x22,0xfc,0x6c,0x54,0x1f,
- 0x9f,0x5b,0xff,0xcb,0xb0,0x07,0xe7,0xb4,0x39,0xf6,0xbf,0x2c,0x0c,0x38,0x8c,0xaa,
- 0xc2,0x7f,0xff,0xc5,0xe6,0x7f,0xf4,0x2b,0x6a,0x53,0x0e,0x83,0xd0,0x49,0xb8,0xdc,
- 0x91,0xe2,0xfa,0x5f,0x2b,0x7c,0xfc,0xd3,0xec,0xea,0x7f,0x5d,0xd0,0x6f,0xa1,0x59,
- 0x7e,0xff,0x95,0xb3,0xdb,0xd0,0x4d,0xb9,0x68,0x03,0x06,0xa1,0xef,0x3b,0xdc,0xf1,
- 0xf1,0xf2,0xcf,0x72,0x47,0xed,0x51,0x08,0x08,0x1d,0x50,0xf7,0xe5,0xe5,0x9f,0xe5,
- 0xb9,0x62,0xea,0x9d,0x42,0xe6,0xbd,0x8f,0x78,0xfc,0xf5,0xcf,0xff,0x30,0xec,0xb1,
- 0xf5,0x67,0x77,0x3c,0xfd,0xf3,0x3f,0xf3,0x48,0x75,0x20,0x46,0x22,0x1d,0x89,0xc3,
- 0x2d,0xfd,0xe0,0xef,0xd1,0xff,0xc2,0x86,0xfe,0xd6,0x1c,0xe7,0x9f,0x6d,0x63,0xb0,
- 0x7e,0x76,0xfe,0xe1,0xcb,0xae,0x51,0x1d,0xc6,0x3f,0x21,0xf3,0x3f,0xd5,0xb3,0xf1,
- 0xcf,0xff,0xb3,0x77,0xfd,0xc1,0x51,0x94,0x69,0xfa,0x9d,0x9e,0x06,0x3a,0xc9,0x24,
- 0x69,0x02,0xdc,0x61,0x89,0xda,0x4c,0x58,0x1d,0xdc,0xc9,0x0f,0x03,0x22,0xc5,0x85,
- 0xa4,0x09,0xfc,0xc1,0x09,0x77,0xe4,0xb6,0xf6,0x8f,0xfb,0x63,0xcb,0xcd,0x79,0x96,
- 0xe5,0xd5,0xe1,0x16,0xe7,0x5d,0xd5,0xb1,0xee,0x95,0xdb,0x09,0xc1,0x4d,0x0c,0x4a,
- 0x5c,0xbd,0x5d,0xbc,0xb2,0x76,0x27,0x91,0xb3,0xb0,0x8a,0xad,0x0a,0xc1,0x55,0x64,
- 0xf7,0x70,0xc2,0x06,0x6f,0x80,0x08,0x51,0xd9,0x2d,0xd6,0x73,0xdd,0x81,0x4b,0x69,
- 0xd0,0xc8,0x05,0x44,0x0d,0x10,0xe0,0xfa,0xfb,0xba,0xfb,0xfb,0xd1,0xfd,0x76,0xcf,
- 0xa0,0xe5,0x95,0x55,0xe7,0xfc,0xf5,0x55,0xd2,0x35,0xd5,0xdf,0x3b,0x5f,0x7f,0xdf,
- 0xd3,0xcf,0xfb,0xbc,0xcf,0x2b,0xc3,0x00,0x33,0x73,0x5d,0xfa,0x9f,0x4b,0x30,0x58,
- 0x9c,0xfe,0xd9,0x1d,0x5c,0x59,0x5d,0x84,0xfe,0x87,0xd4,0x7f,0x35,0x3b,0x85,0xf3,
- 0x57,0xac,0x2a,0x5e,0x41,0x4f,0xf0,0x0f,0x7b,0x7e,0x43,0xf4,0x3f,0xf9,0x64,0x18,
- 0xfe,0x01,0x1b,0xf6,0xd0,0x49,0x35,0x38,0xb3,0xbb,0x91,0x4e,0x73,0x6d,0xc6,0x1d,
- 0x14,0xa5,0xff,0x51,0x5f,0x59,0xe3,0x8f,0xa7,0xb7,0x1e,0x08,0xfe,0x11,0xd0,0xac,
- 0x5b,0xc6,0x7e,0xce,0x92,0x7f,0xdf,0x71,0x40,0xf0,0x8f,0x18,0x28,0xa3,0xc8,0xfc,
- 0x97,0x37,0x58,0x98,0x2c,0xac,0x7f,0xb6,0xd1,0x8e,0x52,0xeb,0xf0,0x3f,0x07,0x5a,
- 0x92,0x05,0xf3,0x5f,0xac,0xfe,0xab,0x85,0x26,0xc2,0xb2,0xeb,0x9c,0x81,0x83,0x7f,
- 0xd4,0x00,0xfe,0x71,0x9f,0xd6,0x21,0x0a,0x7b,0x5e,0x05,0x39,0x1f,0x24,0xe3,0x1f,
- 0xa9,0xfe,0x6b,0x16,0x19,0x7c,0x62,0xdd,0x51,0x44,0xfe,0x4b,0x67,0xb0,0xe7,0x1c,
- 0x1c,0x28,0x84,0x7f,0xec,0xd3,0xca,0xa9,0xff,0x22,0x89,0xb0,0xcb,0x56,0xc3,0x98,
- 0xfd,0xb5,0x4d,0xa1,0xf8,0x27,0x4f,0x69,0xab,0x97,0xc1,0x18,0x3e,0xfa,0x83,0xaa,
- 0x63,0xf0,0xea,0xde,0x85,0xe3,0x65,0x34,0xb1,0x15,0x86,0x7f,0x6e,0x74,0x66,0x47,
- 0xa6,0xf9,0xad,0x77,0xe0,0x97,0xce,0x7c,0x17,0x44,0xe0,0x9f,0xfa,0x5b,0x9d,0x30,
- 0xba,0xfc,0x0f,0x3d,0xef,0x12,0xe1,0xf8,0x67,0xbb,0x33,0x3b,0xb6,0x6d,0x92,0xf3,
- 0xab,0x2c,0x1d,0x81,0x7f,0xa4,0xd7,0xcc,0x8b,0x11,0xf9,0x2f,0x07,0xe4,0x94,0x49,
- 0xaf,0xf9,0x9f,0xf8,0xf2,0x5f,0x02,0xfe,0x41,0xf5,0x3f,0xfb,0x47,0x93,0x91,0xf8,
- 0x27,0xa0,0x17,0x32,0x0b,0xe4,0xbf,0x0e,0x96,0xb9,0x65,0xef,0x04,0x16,0x8e,0x68,
- 0x7b,0x12,0xc6,0xc1,0x28,0xfc,0x43,0xf5,0x3f,0x1f,0x91,0xc1,0x6f,0x2b,0x5f,0x5a,
- 0xf2,0x51,0xf6,0xa2,0x31,0x98,0x0b,0xd1,0x3f,0x53,0xfc,0x43,0xcf,0x2f,0x5a,0xf6,
- 0x9e,0xab,0xfc,0x78,0xcb,0x44,0x36,0xa0,0x7f,0xc6,0xf0,0xcf,0x24,0x1c,0x6d,0x6f,
- 0xca,0x6e,0x2b,0x96,0xff,0xb1,0x27,0xd5,0x63,0x1f,0x4c,0x5a,0xd1,0xfa,0xe7,0x2c,
- 0xb4,0xc7,0x68,0x3e,0x34,0x9a,0xff,0xe1,0xa4,0x99,0xd2,0x63,0xd5,0x66,0x50,0x3c,
- 0x89,0xe2,0x9f,0xff,0x86,0xa3,0x56,0xd3,0x43,0x69,0x69,0x61,0x44,0xe1,0x9f,0x4f,
- 0xed,0xf8,0xac,0x34,0x8b,0xe7,0x7f,0x26,0x95,0x1c,0xa9,0xbf,0xc0,0xbe,0x3f,0x04,
- 0xff,0xf4,0x58,0xfd,0x06,0x7a,0xff,0x28,0xfe,0x19,0x87,0xa7,0x3a,0x8c,0x61,0x34,
- 0x3e,0x28,0xfe,0x79,0x5b,0xfb,0xf9,0x3e,0x18,0x0f,0xf2,0x3f,0x61,0xf8,0xe7,0x0c,
- 0xbc,0xd5,0x57,0x3f,0x2e,0xa6,0xbd,0x30,0xfd,0x4f,0x39,0x8b,0xcf,0x94,0xfa,0x3e,
- 0x34,0x8f,0xa2,0xf1,0xc1,0xf5,0x3f,0xd6,0xc7,0xb1,0x86,0x51,0x34,0x3e,0xb8,0xfe,
- 0xc7,0x24,0xf5,0x5f,0xa9,0x62,0xf8,0x1f,0x67,0x76,0x8b,0x9e,0xb7,0x61,0x0f,0x3a,
- 0x5f,0x54,0xff,0x7c,0x5c,0xdb,0xbb,0x66,0x51,0xbe,0x28,0xfe,0x87,0x80,0x1c,0xe5,
- 0x03,0xb8,0x0a,0x4b,0xac,0x84,0xc4,0xff,0xec,0x0f,0xe2,0x1f,0x86,0x07,0xb2,0xd6,
- 0x54,0x5b,0xa3,0x5a,0x3c,0xff,0x73,0xd6,0x3a,0x6c,0x1f,0x8b,0x28,0xbf,0x81,0xe3,
- 0x1f,0xad,0xbd,0x35,0xb9,0xaa,0xf4,0x3a,0xf4,0xcf,0xdd,0xb1,0xe4,0x9a,0x2e,0xd4,
- 0xaf,0x06,0xc3,0x3f,0x87,0x94,0x12,0x30,0xcc,0x52,0x9c,0x0f,0xf1,0xd6,0x83,0x84,
- 0x7f,0xee,0xb6,0x61,0xcf,0xb6,0x62,0xf4,0xcf,0x6e,0x3e,0xeb,0x0a,0xac,0x6c,0xad,
- 0xc4,0xe6,0x2b,0xe3,0x1f,0x07,0x3f,0xc4,0x2e,0x18,0x87,0x62,0x4b,0xfc,0xc0,0x20,
- 0x5c,0xff,0x1c,0xef,0xd3,0xba,0x62,0xc9,0x42,0xfe,0x3f,0x84,0xff,0x79,0xd2,0x9d,
- 0x5d,0xe6,0x19,0x30,0x5a,0x43,0xf4,0xde,0x98,0xfe,0xa7,0xe3,0x99,0x64,0xb2,0xb5,
- 0x08,0xff,0x1f,0x86,0x7f,0xde,0x30,0x06,0xf1,0xfb,0x97,0xf8,0x1f,0xcd,0xfb,0xaf,
- 0x7e,0x26,0xd6,0xb4,0x16,0xbd,0x3e,0x04,0xff,0xe4,0x9c,0xfa,0xaf,0x42,0xfc,0xcf,
- 0x0a,0x96,0xff,0xea,0xab,0xee,0xbb,0x5d,0x80,0x3d,0xd1,0xf9,0xaf,0xb3,0xd0,0x61,
- 0x64,0x4c,0xf4,0x79,0x41,0xeb,0xbf,0xfe,0x00,0x9d,0xb0,0xf0,0x74,0x07,0xf6,0xfc,
- 0x22,0xfc,0xcf,0xe6,0xf8,0x31,0xe5,0x50,0xfb,0x1d,0xa7,0xd4,0x80,0x10,0x3a,0x5c,
- 0xff,0x73,0x91,0xec,0x4e,0xd8,0x7e,0x22,0xe0,0x1f,0xb1,0x7e,0x67,0xaa,0xb7,0x29,
- 0x9f,0x98,0x5a,0x1d,0x3c,0xbf,0x10,0xfe,0xe7,0x61,0xe5,0x04,0x8c,0x0d,0xd4,0x4c,
- 0x94,0x63,0xf7,0x8f,0xf0,0x3f,0x44,0xff,0xb3,0x33,0x55,0x93,0x43,0xf9,0x6a,0xd1,
- 0xff,0x87,0x05,0xed,0x23,0x2d,0x93,0x4d,0xe7,0x4b,0xb0,0x78,0x0a,0xf8,0x67,0x06,
- 0x9f,0xaf,0x79,0xaa,0xb7,0xe9,0x20,0xdb,0x3f,0x6f,0x11,0xf7,0x4f,0x0c,0xff,0x9c,
- 0x85,0x33,0x2d,0x8d,0x9e,0x5e,0x3a,0x14,0xff,0x80,0xb0,0x7b,0xbf,0x0e,0x0d,0x93,
- 0x09,0x6c,0x3f,0x0f,0xc1,0x3f,0xdd,0x56,0x32,0x5f,0x88,0xff,0xe1,0xe7,0xf5,0x18,
- 0xec,0x78,0xec,0xf6,0xa1,0x62,0xf9,0x1f,0x52,0x0f,0xd5,0xa5,0x1b,0xb9,0x10,0x3c,
- 0xc0,0xc2,0x5f,0x2e,0xd4,0x7f,0x9d,0x34,0x1a,0x4e,0xa0,0xe7,0x0b,0xc2,0xff,0xec,
- 0x89,0x4f,0x2b,0xd3,0x6d,0x21,0xe7,0x97,0xdf,0xff,0xa7,0xd9,0x2d,0xfb,0xda,0xd2,
- 0x3c,0xb6,0xe1,0xa2,0xbd,0x6c,0x8e,0xf7,0x16,0x81,0x7f,0x1c,0x23,0xc4,0xb2,0x41,
- 0x65,0xc4,0xe8,0x31,0x8a,0xd5,0x3f,0x1f,0x26,0xc2,0x27,0x6b,0x4b,0x2c,0x9d,0xed,
- 0x09,0xc1,0x3f,0x41,0xdb,0xc3,0x91,0x99,0xe1,0xfe,0x3f,0x52,0xfd,0x3b,0x1b,0xf8,
- 0x0b,0x91,0xc2,0xf8,0x1f,0x96,0x0f,0xbd,0x3e,0xfd,0x33,0x1c,0x55,0x8b,0xc2,0x3f,
- 0x1c,0x08,0x15,0xc4,0x3f,0xf2,0x63,0xe2,0xd7,0x1f,0xca,0xf8,0xe7,0x2e,0xe9,0xf4,
- 0x7f,0xd8,0x1e,0xf8,0xf5,0xc0,0x41,0xfc,0x53,0xde,0xe0,0x96,0x7d,0xd1,0x42,0xf8,
- 0xdf,0x40,0xe3,0x44,0x61,0xfd,0xb3,0x33,0x38,0x67,0x4f,0xf3,0x7a,0xf4,0xcf,0xfb,
- 0x04,0xa3,0xa4,0x68,0xfc,0xe3,0x0d,0x82,0x7f,0xc1,0xf1,0x8f,0x37,0x08,0x2a,0xa2,
- 0x51,0xfc,0x23,0x14,0x82,0x15,0x83,0x7f,0x38,0xec,0x49,0x45,0xd7,0x7f,0x15,0x51,
- 0x0f,0x85,0xe1,0x9f,0x39,0xd7,0x51,0xff,0x25,0x94,0x1d,0x7d,0xde,0xfa,0xaf,0x62,
- 0xeb,0xdf,0xcb,0xe6,0x12,0xfd,0x4f,0xb8,0xfe,0x39,0xc0,0xff,0x40,0x51,0xf8,0x87,
- 0xba,0xd9,0x7c,0x3f,0x6c,0xbe,0x21,0xfc,0x8f,0x3d,0x68,0x9d,0xe5,0xfa,0xe7,0x44,
- 0xe0,0x9f,0x71,0xa8,0x8d,0x79,0x68,0xc7,0x58,0x67,0xef,0xd1,0xd0,0xd5,0x57,0x28,
- 0xff,0x45,0x66,0xa7,0xd1,0x41,0x55,0xc7,0x70,0x86,0xe9,0x9f,0xfb,0x30,0xfc,0xf3,
- 0x42,0x20,0x8c,0x11,0xfe,0x3f,0x4c,0xff,0xb3,0x9a,0x4f,0x24,0xa8,0x7f,0x46,0xf2,
- 0x5f,0x10,0xb1,0x30,0x42,0xf0,0x8f,0x53,0x08,0x36,0xa7,0xa8,0xfc,0x17,0x06,0x7b,
- 0x0a,0xd5,0xbf,0xbb,0x44,0xd0,0x44,0x71,0xf8,0xc7,0x7b,0x5a,0x93,0x4e,0x3d,0x54,
- 0x41,0xfc,0xf3,0xae,0x53,0x08,0xf6,0xfd,0xf8,0x1f,0xad,0x22,0xf1,0xcf,0x65,0xb0,
- 0x4f,0x9f,0x3d,0xf6,0x8b,0xff,0x35,0x2b,0x14,0xff,0xcc,0xf0,0xa3,0x9d,0x7d,0xf1,
- 0x66,0xe0,0x8a,0x68,0x17,0xff,0xb0,0xf8,0x77,0x79,0xfb,0xcf,0x3f,0x38,0xd5,0xa6,
- 0xe3,0x65,0xfb,0xe3,0xdf,0x81,0x97,0xf5,0x34,0x55,0x44,0x17,0xa8,0x7f,0xb7,0x07,
- 0xc3,0x36,0x10,0x5a,0xc0,0x11,0x51,0x74,0xfd,0xd7,0x73,0x0e,0xff,0xbf,0x9e,0x3a,
- 0xfa,0x16,0xaa,0xff,0xa2,0xb3,0xab,0x23,0xbb,0x6b,0xa3,0xc3,0x60,0x48,0xfb,0xa7,
- 0x77,0x3f,0x12,0xff,0x13,0x5a,0xef,0x1c,0xaa,0x7f,0x6e,0xce,0x26,0x9c,0xfc,0x97,
- 0x8f,0xff,0x09,0xaf,0xff,0x22,0xfa,0x13,0x35,0xa0,0x67,0x0e,0xe7,0x7f,0x5c,0xfc,
- 0xe3,0xbb,0xde,0x5f,0xff,0x45,0x82,0xf0,0x3a,0x19,0xe4,0x1e,0xbb,0xa3,0xc3,0x25,
- 0xca,0x1a,0x0a,0xe0,0x1f,0xca,0xff,0xe4,0x12,0xe7,0xa9,0x3e,0x6a,0xf0,0xc4,0xf6,
- 0xc1,0x2d,0x51,0xf8,0xc7,0x99,0xdd,0x23,0xc3,0xdb,0xcf,0xc7,0x5d,0x47,0xa0,0x82,
- 0xfc,0x8f,0x3e,0x64,0xad,0x30,0x12,0x45,0xf3,0x3f,0x39,0x82,0x0f,0x21,0x85,0xf1,
- 0x3f,0xdc,0xff,0x27,0x25,0xf2,0x3f,0xdd,0xb1,0x14,0xce,0xff,0x20,0xfa,0xe7,0x01,
- 0x65,0x3c,0xd9,0x6d,0x19,0x38,0x7f,0x22,0xd4,0x7f,0xa9,0x6c,0xfd,0x9c,0x86,0x6c,
- 0x6e,0x45,0x03,0xca,0xff,0x70,0xfc,0xdf,0xa7,0xb3,0xf3,0xfd,0xb2,0x0d,0x8d,0x9b,
- 0xcd,0x3a,0x0c,0xff,0x4c,0xf0,0xf3,0x97,0xe3,0x9f,0x21,0xc8,0xe9,0x0d,0x90,0x96,
- 0xf4,0x3f,0xee,0xbf,0x2e,0x60,0xf5,0x5f,0x1f,0x18,0x5d,0xa3,0xc9,0xb6,0x02,0xfc,
- 0x4f,0x96,0xaf,0x87,0xac,0xd1,0xde,0x61,0xf4,0x6b,0x82,0xfe,0x87,0xc5,0x67,0x92,
- 0x2d,0x87,0x36,0x9d,0x9d,0xfe,0xbf,0x53,0x3a,0xad,0xbe,0x7e,0x94,0x0f,0x99,0x66,
- 0xd7,0x0b,0xfc,0xcf,0x30,0x0c,0x59,0x0d,0xe9,0xb4,0x20,0xfb,0xe1,0xf8,0x67,0xa6,
- 0x77,0xbd,0x39,0x97,0xc5,0xe7,0x02,0x5c,0x89,0x85,0xd6,0x7f,0x79,0xf3,0xd5,0x66,
- 0x08,0x0f,0x5d,0x8e,0xf8,0xe7,0xa0,0xef,0x6b,0xdc,0xff,0x84,0xe3,0x9f,0x69,0xf2,
- 0xfe,0x28,0x6d,0x9b,0x08,0xfe,0x01,0x8e,0x7f,0x7e,0x07,0xcf,0x5b,0x7d,0x06,0x5a,
- 0xff,0x9e,0xc3,0xf0,0xcf,0x31,0xb3,0x5f,0x31,0x72,0xa8,0x9e,0xe1,0x6d,0x8e,0x7f,
- 0x54,0x86,0x7f,0x2e,0xc1,0x7b,0xd6,0x92,0x90,0xfa,0x77,0x41,0x5f,0xcd,0xce,0xa3,
- 0x6c,0xe9,0xc9,0x13,0x38,0xfe,0xa9,0x7e,0x93,0xad,0x07,0xc1,0xff,0xf9,0x3d,0xe5,
- 0x70,0x7f,0x28,0xff,0xe3,0x5d,0x6f,0x09,0xf5,0x5c,0x4a,0x77,0x26,0xd5,0x12,0xc2,
- 0xff,0x78,0x9f,0xf9,0x2a,0xc7,0x3f,0x66,0x37,0x24,0xff,0x06,0xd5,0x0b,0xe1,0xfc,
- 0x8f,0xfd,0x3c,0x96,0xb6,0xe2,0xfc,0x0f,0xd7,0x3f,0x8b,0xf5,0x5f,0x39,0xa8,0xc2,
- 0xf9,0x07,0x5e,0xff,0xb5,0xef,0x26,0x36,0xdf,0x4f,0xf4,0x4f,0xc8,0x6a,0xc1,0xe6,
- 0x7b,0x96,0xe7,0xb3,0x38,0xfe,0xb9,0x60,0xbc,0x0e,0x4b,0x5a,0xd1,0xf8,0x9c,0x65,
- 0xeb,0x67,0x3e,0x64,0x3c,0x90,0x73,0x4a,0xe9,0x82,0x7e,0x4d,0xc3,0xf8,0x9f,0xd7,
- 0xd8,0xef,0x6b,0xaa,0x9d,0x6c,0x76,0x99,0xf6,0x76,0x63,0xd5,0x62,0x6c,0xbe,0x82,
- 0xfe,0x79,0x2e,0x8f,0x7f,0xb2,0xa7,0x9a,0xe8,0x7f,0x50,0xfe,0xc7,0xbb,0xbe,0x5f,
- 0x15,0xf2,0x59,0x43,0xd0,0xd0,0x56,0x8e,0xdd,0xff,0x38,0xfb,0xfe,0x71,0xbe,0x1e,
- 0x86,0x89,0xac,0xf7,0x6e,0x4c,0xff,0x33,0xeb,0x12,0xc7,0x33,0x7c,0xbd,0xf5,0x75,
- 0xe5,0xa0,0x49,0x4f,0x47,0xf3,0x3f,0x1a,0xaf,0xff,0xba,0x04,0x4f,0x24,0xea,0x06,
- 0x34,0x0c,0xff,0xf0,0xfa,0x62,0x8d,0xe3,0x9f,0xed,0xf4,0xbc,0x76,0xf7,0x67,0x5f,
- 0x3d,0x0e,0x56,0xff,0x75,0x22,0xb9,0x15,0x6a,0x46,0x51,0x3e,0x24,0xc7,0xf1,0xd5,
- 0x7c,0x86,0x7f,0x0e,0x28,0x87,0xac,0x66,0x23,0x81,0xf1,0x3f,0x47,0x30,0xfc,0x33,
- 0x66,0xbf,0xf6,0xb9,0x7a,0x83,0x70,0xfe,0xa7,0x4d,0x3d,0x60,0xba,0x87,0xd4,0x25,
- 0xe5,0xf5,0xce,0x25,0x99,0x1a,0xec,0xfc,0x3a,0xc9,0xf5,0xc6,0x1c,0xcf,0x8c,0xc2,
- 0x56,0x20,0xfa,0xc3,0x38,0xc2,0xff,0xb0,0xeb,0x2d,0xdd,0xad,0xff,0xb2,0xaf,0x37,
- 0xb7,0xea,0x21,0x7a,0x45,0x5e,0xff,0x65,0xce,0xdd,0xc6,0xcf,0x3b,0xcb,0x4c,0xf6,
- 0x6a,0xd8,0xfb,0xd7,0xa8,0x80,0x57,0xbd,0xf9,0x2a,0x67,0xb4,0xdf,0xc0,0xa0,0x99,
- 0x76,0x8e,0x09,0x79,0xbe,0x47,0x78,0xbe,0x55,0x67,0x78,0xe0,0x3d,0xeb,0xb2,0xd9,
- 0xf4,0xb7,0xc1,0xf8,0x90,0x54,0x9a,0x2a,0xe0,0x9f,0x98,0xbb,0x69,0x7f,0x00,0xc7,
- 0xb5,0x25,0x06,0xca,0xff,0x8c,0x31,0xfe,0x47,0xa8,0xff,0x7a,0x4f,0xe9,0xc9,0x26,
- 0x57,0x95,0xa3,0x7c,0x4e,0x1b,0xc3,0x3f,0xfc,0xbc,0xcb,0xb5,0xf5,0x58,0x49,0x0d,
- 0x3b,0xef,0xaa,0xf2,0x6c,0xfd,0xb8,0xfe,0x87,0x76,0x10,0x5a,0x4c,0x65,0xcb,0xaa,
- 0xa4,0x5e,0x22,0xd8,0x00,0x62,0xf5,0xef,0x54,0x8f,0x44,0x67,0x37,0x0e,0x47,0x5b,
- 0xea,0x67,0xaf,0x1f,0x98,0x33,0x11,0x0b,0xe0,0xbd,0x99,0xde,0xfd,0x10,0xff,0x67,
- 0x67,0x52,0xd5,0x93,0xf0,0xd9,0xc2,0x57,0x35,0x9c,0xff,0xb9,0x15,0xc1,0x3f,0x57,
- 0xe1,0xaa,0x35,0x98,0x4b,0x9c,0x8c,0x1f,0xf0,0x8c,0x80,0x38,0xfe,0x61,0xfa,0x43,
- 0x6b,0xbe,0x80,0x76,0xf6,0x5b,0xd5,0x27,0x53,0x3b,0x94,0x5a,0xf0,0xfb,0x3f,0x73,
- 0xfc,0xe3,0xf0,0x3f,0xee,0xd3,0x34,0x08,0xc6,0xa3,0xa9,0x01,0xbf,0x31,0x0b,0xc5,
- 0x3f,0xf5,0xec,0x7e,0x04,0xfe,0x67,0x3f,0x24,0xad,0xb5,0xbd,0x4a,0x1a,0xca,0x8a,
- 0xe3,0x7f,0xce,0x43,0x43,0x7d,0x5a,0x8f,0xef,0x0e,0xd6,0xbf,0x63,0xfd,0x2f,0xa6,
- 0xe1,0x2a,0x34,0xd5,0xa3,0xf8,0x67,0x1c,0xc3,0x3f,0x13,0xf6,0x69,0x58,0x6f,0xe3,
- 0x9f,0xd5,0x13,0x26,0x17,0x1a,0x39,0xff,0x3a,0x27,0xf2,0x3f,0x3a,0xbf,0x7f,0xe3,
- 0x76,0xb0,0xd7,0xc3,0x48,0xc0,0x3f,0xf3,0x53,0x01,0xff,0x08,0xbf,0xbe,0x1d,0x9f,
- 0x16,0x4d,0x9f,0x79,0xcc,0xff,0x46,0x26,0xe1,0x9f,0x7b,0xf8,0xe9,0x7f,0xc0,0x5a,
- 0xdc,0xa6,0xfd,0x75,0x95,0x03,0x03,0x4a,0x1f,0xc6,0xf1,0xcf,0x7a,0x9e,0xed,0x1a,
- 0x84,0xfa,0x4d,0xe9,0xe5,0xd5,0x0e,0xec,0x29,0x5b,0x11,0x5f,0x8f,0xe0,0x9f,0x19,
- 0x4e,0x7c,0x66,0xd9,0xd1,0x50,0x3f,0x85,0xbb,0x36,0xd9,0xdb,0xf2,0xb4,0x33,0x4d,
- 0x81,0x11,0x42,0xf1,0x0f,0x8d,0xff,0x68,0xba,0x37,0x12,0xff,0xe4,0x4a,0x84,0xf7,
- 0xa9,0x97,0x40,0x28,0xfb,0x12,0xf7,0x93,0x8f,0xd9,0xf3,0x6e,0xe8,0x9c,0xff,0x51,
- 0x97,0x59,0x46,0x3e,0xf5,0x2f,0x91,0xf8,0xe7,0x01,0x75,0x44,0x8c,0x67,0x72,0x8c,
- 0xe9,0xeb,0x44,0x86,0xed,0xbf,0x82,0xfd,0x2f,0x08,0xda,0xf9,0x14,0x96,0xf4,0x26,
- 0x0a,0xe0,0x1f,0xb7,0xff,0xc5,0x06,0xe7,0xf4,0x39,0xa0,0xe1,0xfc,0x8f,0x80,0x7f,
- 0x16,0xd1,0x43,0x8d,0x96,0x05,0x5d,0xb4,0x1a,0xcc,0x34,0xd2,0xff,0x62,0x8e,0xbf,
- 0xfe,0xcb,0x3b,0x6d,0x7b,0xfb,0xef,0x0d,0xd1,0x3f,0x7b,0x1f,0xd6,0xff,0xc2,0x95,
- 0xfd,0xac,0x29,0x80,0x7f,0x52,0x32,0xff,0x63,0x48,0x65,0x5f,0x02,0xff,0x63,0xb0,
- 0xef,0x97,0xf8,0x9f,0x90,0xfc,0xcb,0xd9,0x59,0x8c,0xff,0x91,0xea,0xdf,0x95,0xe6,
- 0x56,0x51,0xc6,0xc3,0xa8,0xa1,0xb3,0xa1,0xfa,0x9f,0x4d,0x09,0xea,0x97,0x18,0x8a,
- 0x7f,0x96,0xcf,0x77,0x40,0x4e,0x05,0xa1,0x7d,0xf6,0xc1,0x0a,0xc3,0xc1,0x3f,0x31,
- 0x1f,0xfe,0x61,0xfb,0xcf,0xda,0x19,0x9d,0xe2,0xec,0x36,0x52,0xfd,0x73,0x2c,0x02,
- 0xff,0xb8,0xf8,0xb3,0xd4,0x91,0x3d,0xdf,0x5e,0x08,0xff,0x08,0xfe,0x3f,0x63,0x73,
- 0x2f,0xaa,0x4d,0x6b,0x6b,0x76,0x44,0xe2,0x1f,0xaf,0xff,0x85,0x0b,0x7b,0x56,0xb4,
- 0xd4,0x3e,0x83,0xf0,0x3f,0x97,0x84,0xf5,0x23,0xeb,0x7f,0xf4,0x22,0xf2,0x5f,0x1e,
- 0xda,0x51,0x0f,0x24,0xea,0x2c,0x2d,0x53,0x35,0x6e,0x7c,0x10,0x8a,0x7f,0xe4,0xfa,
- 0xf7,0x58,0xc5,0x1b,0xe4,0x31,0x51,0xf7,0x42,0x22,0x04,0xff,0x58,0xb3,0x25,0xfe,
- 0x67,0xe3,0x68,0x89,0x0d,0x84,0x02,0x46,0x5e,0x1c,0xff,0x74,0x69,0x37,0xcb,0x6a,
- 0xe7,0x1a,0x14,0xff,0xb0,0xfd,0x47,0x9b,0xb1,0x5b,0xde,0x3d,0x2a,0x6c,0x20,0x14,
- 0xd8,0xcf,0x03,0xfd,0x2f,0xf8,0x69,0xb5,0xe0,0x22,0x86,0x7f,0x58,0x7c,0x76,0xf9,
- 0xfa,0xef,0x1c,0xb2,0xf1,0xc9,0x3b,0xc4,0x08,0x88,0x4c,0x13,0xc1,0x3f,0x7e,0xfe,
- 0xc7,0xd4,0x36,0x75,0x04,0xf7,0xab,0xd7,0x98,0xff,0x06,0xeb,0x7f,0xe1,0x46,0xcf,
- 0x4c,0x2d,0x47,0xde,0xbf,0x46,0xad,0x10,0xfe,0xa7,0xd1,0xd4,0x10,0xbc,0xa7,0x1c,
- 0x0b,0xf5,0xff,0x31,0x09,0x50,0x04,0x47,0xff,0xcc,0xb7,0xe2,0x71,0xa1,0xff,0x85,
- 0x78,0xba,0x19,0xcd,0x9b,0xd2,0xbe,0xf3,0x8e,0x66,0x40,0xf2,0x8c,0xff,0xe9,0x93,
- 0xf8,0x1f,0xab,0xb6,0x3e,0xe5,0x19,0xf1,0x55,0x16,0xe6,0x7f,0xec,0xe7,0xa5,0xd5,
- 0x3e,0xef,0xde,0xf3,0xfe,0xb2,0xdb,0x2b,0x0d,0xcb,0x33,0xfd,0x98,0xdb,0xff,0x22,
- 0xeb,0x95,0xc5,0xad,0xd1,0x96,0xde,0x3f,0x0c,0x8e,0x30,0xb8,0x60,0xfe,0xeb,0x15,
- 0x20,0xfe,0xc3,0xee,0x7c,0xcb,0x5e,0xa4,0x8a,0x5c,0x52,0x11,0xf6,0xa7,0xf9,0x47,
- 0x83,0xf8,0x87,0xce,0x6e,0xa5,0xf3,0x22,0xef,0x18,0x41,0x3f,0xc5,0xcf,0xf7,0xd5,
- 0x6c,0xfd,0x80,0xd2,0x09,0x7d,0x90,0x32,0xed,0xf7,0xc0,0xf0,0x01,0x88,0x1f,0x15,
- 0xec,0xbb,0x33,0x41,0x8f,0x1a,0x88,0x1f,0xfb,0x2d,0x1f,0x34,0x53,0xd1,0xa3,0x06,
- 0x5f,0xe4,0xfb,0x2d,0x7b,0xb1,0x6a,0xa4,0xbf,0x59,0xc4,0x40,0xf8,0x44,0x5f,0xe8,
- 0x0c,0xbe,0xc8,0xf7,0x5f,0xef,0xe7,0x2b,0x16,0x7f,0x9d,0xf4,0xf2,0x1b,0x81,0x7f,
- 0x84,0x05,0xd9,0x88,0x81,0xfa,0xb9,0xbf,0xff,0x4b,0x8e,0xbf,0xaa,0x5b,0x45,0xc4,
- 0x3c,0xc6,0xf6,0xc3,0xeb,0xfd,0x34,0x36,0x16,0x73,0x55,0x65,0xe5,0xe7,0xfc,0xfa,
- 0xff,0x83,0x4f,0xf3,0xb5,0x6b,0xd7,0xb2,0x05,0x06,0xff,0x9f,0xaf,0xff,0x8a,0x3d,
- 0x8f,0x5f,0xef,0x87,0x5f,0xef,0x87,0x5f,0x20,0xfe,0x5f,0xef,0x87,0x85,0x3e,0x5f,
- 0xb5,0xfd,0xe7,0xab,0x75,0xbd,0xc4,0x8f,0x5d,0xb1,0xee,0x20,0xfe,0x90,0x81,0xf7,
- 0x8b,0x59,0x58,0x7e,0xb0,0x65,0x84,0xea,0xc7,0xb4,0x7d,0x0e,0x90,0x0e,0xe5,0xc7,
- 0xd8,0xfb,0xc2,0x36,0xd8,0x13,0x33,0x86,0x6e,0x88,0xce,0x0f,0xe6,0xe7,0x09,0xec,
- 0x62,0xb7,0x91,0xcc,0x17,0xc8,0x0f,0xc6,0xb8,0x3f,0xe4,0x36,0xed,0x1c,0x3c,0x94,
- 0xc5,0xfc,0x42,0x15,0xce,0x8f,0xb5,0x8b,0xfe,0x90,0xd3,0x6a,0x48,0xfe,0x2b,0x84,
- 0x1f,0x3b,0xec,0x1a,0x75,0x06,0xf8,0x1f,0x34,0x3f,0x38,0xd1,0xd9,0x15,0x4b,0x4f,
- 0x26,0x8a,0xd6,0x87,0xff,0x25,0x69,0xd3,0x70,0x01,0xcd,0x9f,0x9e,0x63,0xbf,0x17,
- 0xd7,0x87,0xcf,0x7c,0x17,0xb6,0x5a,0x35,0x63,0x68,0x7e,0xf0,0x2a,0xbb,0x9e,0xe4,
- 0x07,0xf7,0x7a,0xfc,0xd8,0x10,0x34,0x0e,0x57,0x60,0xfa,0xf0,0xb7,0xd8,0xfb,0x69,
- 0x9b,0xa0,0x8f,0x52,0xec,0xd9,0x0d,0x6f,0x38,0x87,0xe5,0x07,0x15,0x6f,0xbe,0x5e,
- 0x7f,0x58,0x1a,0xf6,0xa1,0x58,0x03,0xb1,0x0d,0x3f,0x4b,0xfd,0xdb,0x2b,0x70,0x7e,
- 0x4c,0x17,0xde,0x37,0x3b,0xe1,0xce,0x2c,0xd5,0x67,0x06,0xfc,0x21,0xd9,0xfb,0x20,
- 0x88,0xfa,0xa8,0xad,0xd9,0xea,0x36,0x6d,0x73,0xd5,0xbb,0xea,0x8f,0xda,0x6b,0xf2,
- 0x4a,0x48,0x7e,0x90,0xad,0xb7,0x09,0xb0,0x72,0x8b,0x1c,0x5a,0xcc,0xaf,0x37,0x7b,
- 0x3b,0xa0,0x8f,0x2a,0x27,0x6c,0xd8,0x6b,0xd0,0xd0,0xa1,0x79,0xfe,0x90,0x15,0x38,
- 0x3f,0xc6,0xf5,0x51,0xa7,0x94,0x29,0x15,0xef,0x8f,0x36,0xe7,0x4d,0x76,0x5e,0x88,
- 0xfe,0x00,0x70,0x38,0xd3,0xd0,0xba,0x81,0xf8,0x03,0x44,0xe5,0x07,0x39,0x3f,0x66,
- 0x95,0x9c,0x52,0x02,0x7a,0xa7,0xa6,0xd0,0xfc,0xe0,0x7d,0x66,0x37,0xf4,0x17,0xd2,
- 0x47,0x81,0x9c,0x1f,0x4c,0x99,0x9e,0x3f,0x52,0x88,0x3e,0x6a,0x33,0xef,0x8f,0x96,
- 0xa5,0xf9,0xdf,0x5b,0x2c,0x25,0xe8,0x87,0x29,0xf0,0x63,0x42,0x7d,0x9c,0x72,0x05,
- 0xee,0x0c,0xe8,0xa3,0x56,0x50,0xbe,0x4b,0xe4,0xc7,0x3c,0xbd,0xf4,0x6f,0xe1,0x2f,
- 0xe0,0x87,0x8e,0xb0,0x3c,0x82,0x1f,0x73,0xfb,0xa3,0x51,0x36,0xcc,0xb3,0x85,0xb4,
- 0x02,0xf9,0x41,0xb6,0xff,0x98,0xa2,0x3f,0x52,0x7b,0xcc,0xfe,0xf5,0xa3,0xf3,0x83,
- 0x3b,0xe6,0x89,0xf9,0xd9,0x58,0xed,0xda,0x10,0x7d,0xb8,0x77,0xbd,0xc8,0x8f,0xc1,
- 0x61,0xdd,0xeb,0x0f,0xab,0x3c,0x12,0x96,0x1f,0xc4,0xeb,0xe3,0x8a,0xc9,0x0f,0x66,
- 0x20,0x57,0xda,0x50,0x6c,0x7f,0xd8,0xb2,0x8c,0x72,0xb9,0xed,0x09,0xf3,0x9b,0x4f,
- 0xa3,0xfa,0xa8,0x83,0x9c,0x2f,0xed,0x64,0xfb,0x4f,0x1d,0x74,0x0c,0x1b,0x43,0x65,
- 0x05,0xf2,0x83,0xc0,0xf9,0xb1,0xaa,0x47,0xbb,0x16,0xe3,0xf9,0x7d,0x21,0x3f,0xd8,
- 0x75,0xb3,0xee,0x92,0x60,0xff,0x06,0xff,0xd9,0x49,0xcb,0xe2,0xfe,0x18,0xc5,0x8f,
- 0x2d,0x60,0xfb,0xed,0x29,0xda,0xd8,0x9a,0x6c,0xb3,0x46,0x78,0x7e,0xd0,0xe4,0xe7,
- 0xd7,0x0f,0xe0,0xb8,0x25,0x97,0x75,0x63,0xf9,0x41,0xd6,0x1f,0x4d,0xd9,0x6c,0xfe,
- 0x68,0xfe,0x9d,0x16,0x7a,0xff,0x1f,0xf0,0xe7,0xd1,0x22,0xfb,0x15,0x9d,0xe6,0x49,
- 0xf8,0x39,0x2c,0x94,0x6c,0x10,0x78,0x7e,0x90,0xf1,0x63,0xdc,0x1f,0x52,0x59,0x0b,
- 0x4f,0x65,0x17,0x39,0x1b,0x51,0x80,0x1f,0xeb,0x64,0xbf,0x17,0x3f,0xbf,0x36,0x56,
- 0xfd,0xde,0x6a,0x68,0xab,0x18,0xf0,0xf2,0x11,0x68,0x7e,0xd0,0xe2,0xfd,0x1a,0x36,
- 0xc2,0x99,0xb6,0xa6,0x49,0xf4,0x3c,0x12,0xf3,0x83,0xbc,0xde,0x07,0x58,0x5b,0x90,
- 0xe3,0x8e,0x3f,0x00,0x9a,0x1f,0xf4,0xce,0x2f,0xc8,0xaa,0x1f,0x66,0x49,0xff,0xd3,
- 0xf8,0xee,0x80,0x3f,0xb3,0xc0,0x8f,0xc5,0xd8,0xf5,0xe3,0xb1,0x9e,0x6c,0xed,0xa4,
- 0xa3,0x07,0x56,0x7c,0xfc,0x18,0xcf,0x0f,0x52,0x3d,0xcc,0x46,0x12,0x84,0x9c,0xfe,
- 0x9c,0x07,0x0c,0x9e,0x13,0xf9,0xd8,0x1b,0xed,0xf5,0xc6,0xf1,0x36,0xe5,0xc7,0x68,
- 0xdb,0xf1,0x29,0x38,0xaa,0xd0,0x7c,0xf1,0x34,0xd5,0x3f,0x97,0x8b,0x7e,0x50,0x1d,
- 0x8c,0x1f,0xbb,0x69,0x5a,0xff,0xa1,0x37,0xdf,0xf7,0xc3,0xfc,0x8d,0x05,0x7f,0x24,
- 0xc7,0x5f,0x2b,0x9b,0x58,0x1b,0x6f,0x80,0xd7,0xed,0xd5,0x72,0x0b,0xd6,0x5f,0x58,
- 0xf0,0x87,0xd4,0x1c,0x90,0xa3,0x59,0x4a,0x0a,0x4e,0x31,0x5b,0x6c,0x59,0x1f,0x1e,
- 0x1f,0xe0,0xfd,0xd1,0x60,0x9b,0xba,0x37,0x96,0x36,0xbb,0x08,0x6a,0x6f,0x67,0xcb,
- 0xc0,0x08,0xd5,0x47,0x01,0x0d,0x5a,0x4b,0xaa,0xb3,0x34,0x45,0x84,0x9a,0xfe,0xc2,
- 0xc3,0x00,0xfe,0x71,0x48,0xd1,0xc9,0x44,0xb7,0xb2,0xd0,0xe8,0xae,0xf7,0xda,0xc6,
- 0xc5,0x1f,0x91,0x12,0xeb,0x42,0x7e,0x70,0x36,0xad,0x7f,0x1f,0xaf,0xcb,0xda,0xf1,
- 0xf9,0xc8,0x72,0xc2,0xa2,0xfb,0xe3,0xb3,0xcb,0x87,0x7f,0x1a,0x5b,0x13,0x9d,0x65,
- 0x86,0xbd,0xbf,0x35,0x0c,0xb9,0xf5,0x08,0xb2,0xff,0x00,0xcf,0x0f,0x66,0x9d,0xfc,
- 0xa0,0xa9,0x3d,0xa6,0xfc,0x3d,0xfc,0x9e,0xcb,0xe4,0x64,0xbd,0x1c,0xcf,0x0f,0xe6,
- 0xe8,0x7a,0x30,0x2c,0x1b,0x46,0xde,0xaf,0xfc,0x18,0x5c,0xdb,0x84,0xa7,0x7c,0xf5,
- 0xec,0x1c,0xff,0x4c,0x52,0x7d,0xd4,0x83,0x3b,0x53,0x53,0xca,0x77,0xcd,0x9f,0xd0,
- 0x32,0x79,0xc7,0x1f,0x32,0x4c,0x1f,0x35,0x9f,0xe8,0xa3,0xea,0x87,0x13,0xf5,0xf1,
- 0xfb,0xf3,0x6f,0x82,0x6b,0x0b,0x70,0x19,0xea,0x43,0xf0,0x8f,0xab,0x8f,0x22,0x6d,
- 0x61,0x77,0xc3,0x55,0xcb,0xf1,0x57,0xb7,0xff,0xf2,0xaa,0x37,0xf0,0xe9,0xc3,0x5d,
- 0xfc,0x63,0xd9,0xb0,0x67,0x11,0x81,0x0d,0x3c,0x2c,0x1b,0x06,0xaa,0x11,0xfc,0x33,
- 0xa2,0x51,0x7f,0x36,0x22,0x33,0x68,0x84,0xe7,0x03,0xfd,0x41,0x02,0xf8,0xc7,0x70,
- 0xf1,0x8f,0x36,0xa5,0xfc,0x09,0x3c,0x6a,0x7d,0xc3,0x99,0xa6,0xdb,0x0f,0xee,0x9e,
- 0x20,0xfe,0xd9,0xe8,0xea,0xcd,0xa8,0x2d,0x40,0xbf,0x6f,0xdb,0xc1,0xf0,0x0f,0x10,
- 0xfc,0xd3,0x6c,0xa5,0x8c,0x39,0x1a,0x6b,0x8b,0x16,0x2b,0xa4,0x8f,0x6a,0x84,0x0d,
- 0x56,0x59,0x1e,0xa6,0x43,0xf5,0xe1,0x01,0x7d,0x54,0xa2,0x77,0xce,0xfd,0x96,0x5f,
- 0x36,0x3c,0xe6,0xa5,0x0e,0x83,0xf8,0x27,0xd1,0xab,0xdc,0x06,0xdd,0x66,0xa8,0x3e,
- 0xdc,0xfb,0x78,0xf9,0xc1,0x6f,0x3e,0xad,0x2c,0x85,0xc7,0x0b,0xeb,0xc3,0x8d,0xb9,
- 0x0e,0xfe,0x29,0x3d,0x51,0xfa,0xcf,0xca,0xd6,0xac,0x57,0x2f,0x1f,0xaa,0x0f,0xdf,
- 0x7c,0x93,0xd0,0x1f,0x76,0x24,0x6c,0xbe,0x1c,0xff,0xec,0xa3,0x78,0xa0,0xae,0x75,
- 0xbd,0x1e,0x0f,0x3f,0xe8,0xe7,0x70,0xfc,0xb3,0x9c,0x5e,0xbf,0xcc,0xac,0x18,0x8d,
- 0x2f,0x85,0x3f,0x80,0x57,0x56,0x6f,0xca,0x78,0x40,0xd4,0x47,0x51,0x90,0x33,0x57,
- 0xeb,0x50,0x0c,0xab,0xcb,0x20,0x65,0xf2,0x04,0xf6,0x2c,0x0c,0xcd,0x0f,0x42,0xa7,
- 0xeb,0x8f,0xd4,0xd1,0x69,0x38,0xfe,0xd8,0xca,0x9a,0x28,0xfc,0x03,0x6e,0x7f,0x58,
- 0xbd,0x94,0xb4,0x99,0x53,0x4c,0x85,0x08,0xb9,0x23,0xf0,0x8f,0x4a,0x6f,0xf2,0xde,
- 0x0a,0xc7,0xdd,0xf1,0xc7,0x6e,0x22,0x58,0x9e,0xaf,0x22,0xe4,0x07,0x1d,0x7f,0x6c,
- 0xbc,0x2c,0x0e,0xcb,0x0f,0x02,0x5d,0x6f,0x34,0x2d,0x68,0x90,0xfa,0x38,0x16,0xf6,
- 0x72,0x1e,0xff,0x59,0x41,0x7d,0x94,0x96,0x57,0x2e,0xc2,0xbb,0x66,0x12,0xd7,0x87,
- 0x73,0xfc,0xa3,0xcd,0x5d,0xef,0x3d,0x2f,0xbf,0x30,0x5f,0xc8,0x0b,0xb0,0xa7,0x04,
- 0xc5,0x3f,0xa0,0x7f,0x07,0x7e,0x0a,0x0f,0x66,0xb5,0x56,0xe5,0x02,0xbc,0x6c,0x7a,
- 0xf8,0x47,0xf5,0xe3,0x1f,0xef,0x93,0xd8,0x71,0x8f,0x0d,0x72,0x1a,0xf3,0x89,0x07,
- 0xe2,0x07,0x60,0xc2,0x7a,0xc5,0x85,0x3d,0x03,0x37,0xe5,0xcb,0x39,0xfe,0x51,0x38,
- 0xfe,0x29,0x75,0xf3,0x65,0x75,0x96,0xfd,0x9a,0xf0,0xb6,0xe3,0x07,0x68,0x6f,0x23,
- 0x9b,0x96,0x49,0xfb,0xed,0xc1,0x59,0xde,0x7c,0xef,0xe5,0xf9,0xc1,0x47,0xec,0x41,
- 0x83,0xd7,0x28,0xc4,0x06,0x42,0x42,0xa2,0xf0,0x24,0xf3,0xd3,0xde,0xa5,0x39,0xef,
- 0x5f,0x95,0xad,0xf1,0xad,0xd6,0xab,0xb0,0x30,0xef,0xc8,0xc2,0xf5,0xc5,0xb2,0x3e,
- 0x9c,0xe7,0x07,0x2d,0xcf,0xcf,0x56,0x79,0xc7,0x78,0xd9,0x5c,0x98,0x73,0x65,0xe1,
- 0x0b,0x25,0x7d,0xb8,0xa0,0x8f,0xf2,0xf4,0x09,0x60,0x2f,0xc2,0xbd,0x16,0xdb,0xc6,
- 0x65,0x3c,0x29,0xea,0xa3,0xdc,0x49,0xd5,0xc7,0x4f,0xc3,0x45,0xc3,0xf5,0x07,0xb8,
- 0x66,0xbf,0xc8,0x8b,0xfd,0x2f,0x8e,0x09,0xfa,0x28,0x7a,0x1e,0x65,0x2b,0x5e,0x8c,
- 0xff,0x3b,0xf0,0x36,0x22,0x62,0xbd,0xd2,0xf6,0x01,0xfb,0xfd,0xdd,0x9f,0x1f,0x4c,
- 0x5c,0x8a,0x13,0x7f,0xc8,0x25,0x38,0x1e,0xc8,0x30,0xfc,0xe3,0xe5,0x07,0xb5,0x17,
- 0x4b,0x67,0x11,0xff,0xa2,0x6c,0x89,0x73,0x6c,0xad,0x90,0xf2,0x83,0xa7,0xb8,0x3e,
- 0x6a,0x86,0x73,0x7d,0xea,0x45,0xe5,0x7b,0xd0,0xe3,0x3b,0xe6,0x98,0x3e,0x2a,0xc3,
- 0xf1,0x8f,0x9b,0x1f,0xd4,0x06,0x94,0xfb,0x5a,0x7a,0xc0,0xc8,0x95,0x34,0xcc,0x24,
- 0xf9,0x68,0x2d,0x5b,0x8a,0xeb,0xc3,0x6f,0xd8,0xa8,0x91,0x49,0x25,0x88,0x4d,0x50,
- 0x0f,0x0c,0x1e,0xa9,0x24,0xb2,0xf0,0xcf,0xec,0xbf,0xdc,0x38,0xc8,0xe3,0xc3,0xbf,
- 0xbf,0x9f,0xe7,0x07,0x5f,0xb4,0x88,0xff,0x4f,0x39,0x3b,0xb6,0xf6,0x08,0xf8,0xe7,
- 0x1b,0xde,0x7e,0x32,0x34,0xe3,0xaa,0x2e,0xa0,0xe5,0x95,0x79,0x4c,0x1f,0xbe,0x5a,
- 0xc0,0x3f,0xf3,0x7d,0x6a,0x70,0x5c,0x1f,0x3e,0x53,0xc0,0x3f,0xf2,0xe9,0xa3,0xd5,
- 0x57,0x8d,0xe8,0x11,0xfc,0x8f,0xba,0x5b,0x97,0xa2,0x87,0xf3,0x3f,0x6c,0x3d,0xac,
- 0x9a,0x27,0xa8,0xe9,0x7e,0x45,0xda,0x7e,0x61,0x78,0x78,0x34,0xe8,0x8f,0xed,0xfd,
- 0xfa,0xb7,0xf8,0xd7,0xc3,0x50,0xa5,0xcf,0x1f,0x5b,0xfd,0x50,0x5c,0x5d,0x58,0xfe,
- 0x5a,0xc0,0x3f,0x72,0x7f,0xd8,0x58,0xed,0x69,0xd4,0xdf,0x32,0x44,0x1f,0x65,0x0f,
- 0xf2,0x5d,0xd8,0x79,0x3d,0xc5,0x28,0xee,0x29,0x51,0x1f,0x65,0x0f,0xc6,0x4a,0x51,
- 0x7d,0xb8,0xe0,0x8f,0x2d,0xe8,0xa3,0x3e,0xb6,0xe4,0xb6,0x68,0x6c,0xf0,0x36,0xf7,
- 0xc7,0x9e,0x27,0xc5,0xa7,0x69,0x08,0xd7,0x87,0x33,0x7c,0x98,0x92,0xf5,0x0c,0x8d,
- 0x59,0x35,0x5a,0x1f,0x9e,0xd3,0x16,0x78,0x26,0xd8,0xce,0xb6,0x49,0xf8,0x1f,0x35,
- 0x80,0x7f,0xb8,0xfe,0xc1,0x5f,0x1f,0x87,0xf2,0x5d,0xa2,0x3e,0xca,0x59,0x6f,0xa5,
- 0xd8,0x36,0xce,0xeb,0xe3,0x04,0x7f,0x6c,0x49,0x0d,0x55,0x6b,0xe1,0xfa,0x28,0x5e,
- 0x1f,0x17,0x43,0xfd,0x6a,0x02,0xf5,0x71,0xde,0xf5,0x82,0x3e,0x7c,0xcc,0x05,0x42,
- 0x05,0xf4,0xe1,0x82,0x3e,0xea,0x22,0x2c,0x37,0x53,0x28,0xfe,0xe1,0xf5,0x6b,0x31,
- 0x5f,0x7d,0x1c,0xaa,0xe7,0xe1,0xfe,0xd8,0x06,0xe5,0x7f,0x36,0xd2,0xd3,0x5f,0xbd,
- 0xc3,0x3e,0xfd,0x51,0xbf,0x44,0xee,0x8f,0x2d,0xe0,0x1f,0x3a,0x3b,0xab,0x5c,0x9a,
- 0xef,0xbe,0x40,0x7d,0xdc,0x0d,0x7c,0x76,0xda,0x19,0x58,0xe1,0x09,0x81,0xa4,0xf9,
- 0x56,0xa3,0xfe,0xd8,0x64,0xb0,0xd2,0xd4,0xa4,0xeb,0xdd,0x7e,0xb2,0xaf,0xcd,0x15,
- 0xf4,0x51,0x9c,0xff,0x19,0xb7,0x07,0xe5,0x88,0x3e,0xbc,0x45,0xe8,0x0f,0x0b,0x9d,
- 0xf2,0xec,0x50,0x3d,0xd8,0x8f,0x39,0xfe,0x11,0xfb,0xad,0xbc,0x40,0xe3,0x89,0xfa,
- 0x43,0x7a,0xd7,0x67,0xe4,0x7e,0x28,0x8d,0xf8,0xef,0xbb,0x8b,0xaf,0xff,0xd8,0xce,
- 0xf0,0xb2,0x41,0x6f,0x70,0xdb,0x79,0x9d,0xaf,0x1f,0x81,0xff,0xb1,0x07,0x0a,0xaa,
- 0x8f,0x3a,0x18,0xe2,0x8f,0x04,0x75,0x5d,0x98,0x3e,0xfc,0x5b,0x42,0x7d,0x9c,0xba,
- 0x5e,0x76,0xa3,0x95,0xf5,0xe1,0xee,0x1b,0x3a,0xaf,0x8f,0xb3,0x6c,0xfc,0x23,0x3d,
- 0xad,0xa8,0xbe,0x91,0xd7,0x43,0x75,0x75,0xdd,0xe3,0xf1,0x3f,0x3f,0x23,0x68,0x27,
- 0x23,0xeb,0xc3,0xdf,0xf7,0xfb,0x63,0x6b,0xb2,0x5e,0xa8,0xc9,0xaa,0xc3,0xf7,0x13,
- 0xb6,0x3f,0xa8,0xbf,0x96,0x4e,0x2b,0x23,0x3d,0x55,0x8d,0xf9,0x03,0x78,0xf1,0x91,
- 0xf4,0x51,0x7b,0xa1,0xa6,0x0b,0xf7,0x07,0xe0,0xfe,0xd8,0xd6,0xb3,0xd2,0x7f,0xa1,
- 0x90,0x3f,0xa4,0x4f,0x1f,0x65,0x2d,0xc6,0xf6,0x1f,0xd1,0x1f,0x5b,0x9c,0x9d,0x1a,
- 0x72,0x7e,0x09,0xfe,0x00,0x31,0xac,0x5e,0x3b,0xbc,0x3e,0x6e,0xa1,0xfe,0x6b,0x4d,
- 0xdc,0xbd,0x2d,0x54,0x1f,0x9e,0x0b,0xe0,0x1f,0xef,0xb4,0xca,0xa0,0xe7,0x57,0xd0,
- 0x1f,0xbb,0xcc,0x6d,0xe3,0xc5,0xfd,0x7c,0x42,0xfa,0xc3,0x8a,0xfa,0x28,0x12,0x1f,
- 0xdc,0x2f,0x9a,0xfb,0x63,0x3f,0x2e,0xe8,0xa3,0x3e,0x34,0xe9,0x8b,0x36,0x52,0xff,
- 0x55,0xcd,0xea,0xe3,0x24,0x7d,0x54,0x6a,0xa5,0x85,0x9d,0x5f,0x73,0x78,0xbd,0xaa,
- 0x9b,0xff,0x1a,0xa9,0x70,0x57,0xcb,0xa6,0xf2,0x7d,0x08,0x7f,0x18,0xc8,0x7f,0x9d,
- 0x74,0x6c,0x91,0x3a,0xed,0x17,0xa5,0x7d,0x2d,0xf6,0x40,0x93,0xf1,0xcf,0xb8,0x50,
- 0x9f,0x4b,0x27,0x35,0xe9,0x4e,0xb3,0x76,0x6d,0x09,0xc6,0xff,0x04,0xfc,0x01,0x86,
- 0xdd,0xe8,0x55,0x98,0xda,0x40,0x32,0x18,0xff,0x29,0xb6,0x1e,0x0c,0x67,0xfd,0xb4,
- 0x55,0x0c,0xcc,0x99,0xb0,0x81,0x62,0xe3,0x18,0x49,0xc4,0xe8,0x81,0xf8,0xf8,0xfc,
- 0x01,0x9a,0x4c,0x8f,0xfd,0xcb,0x17,0xe5,0x0f,0xd0,0xd8,0x26,0xa5,0xd5,0x34,0xff,
- 0xf7,0x4b,0xfe,0x00,0x0e,0xff,0x83,0x2d,0x1b,0xac,0x3e,0xce,0xc9,0x7f,0x59,0xde,
- 0x31,0x6d,0xa2,0x7c,0x45,0xc0,0x1f,0xc9,0xeb,0x8e,0xf1,0x60,0x1b,0x5a,0x2f,0xc6,
- 0xfd,0x01,0x1e,0x20,0xf5,0x71,0x5a,0xa3,0x55,0xee,0xa2,0x9d,0xf1,0xca,0x3f,0x8b,
- 0xf6,0x47,0xe2,0xf9,0xaf,0x09,0x87,0x08,0x72,0x07,0x32,0xfe,0xf1,0xfb,0x03,0xb4,
- 0x7b,0xcb,0xb2,0x0d,0x5d,0x9f,0xa7,0x43,0xfc,0x21,0xd5,0x3a,0xb3,0x28,0x7f,0xec,
- 0x9a,0x8c,0x16,0x89,0x7f,0xfc,0xfe,0x00,0xac,0xcc,0x27,0x8d,0xfb,0x4d,0xc9,0xfe,
- 0x00,0xe7,0xc9,0xb6,0xe0,0xa2,0x9d,0x4c,0x21,0xfc,0xe3,0xe6,0xbf,0xea,0x0a,0xe0,
- 0x1f,0xb6,0xfe,0x49,0xfe,0xab,0x77,0x50,0xea,0x76,0x5a,0xd8,0x1f,0x20,0x69,0xa2,
- 0x32,0xef,0x50,0x7f,0x80,0x42,0xd7,0xfb,0xeb,0xe3,0x8c,0x56,0xaf,0x3b,0x86,0xeb,
- 0x17,0x54,0xc0,0x1f,0x80,0xc8,0xc2,0x57,0x47,0xcc,0xf7,0xac,0xec,0x0f,0xa0,0xb2,
- 0x6e,0x20,0xcd,0xe8,0x7c,0x57,0xcb,0xfe,0x00,0x57,0xa0,0xf9,0x60,0x42,0xee,0xaf,
- 0xaa,0xfb,0xfc,0x04,0x02,0xfe,0x48,0xbe,0xb2,0x38,0xab,0x80,0x3f,0x40,0x8b,0xe6,
- 0xd2,0x3e,0x77,0x3b,0xd3,0x34,0x0a,0xf9,0x23,0x79,0xf1,0x5c,0x53,0xc8,0x1f,0xc9,
- 0xed,0x8f,0x96,0xf6,0xee,0x7f,0x16,0x5a,0x1f,0xc7,0xf5,0xc9,0x0e,0xff,0xd3,0xe2,
- 0xfd,0xb7,0x0d,0x8b,0x4f,0x35,0xe7,0x1f,0x52,0x2e,0xdf,0xe8,0x45,0x3b,0xc6,0x84,
- 0xfa,0x21,0xf9,0x2f,0xc2,0xff,0x74,0xd6,0x71,0xb4,0x53,0xe2,0x0c,0x96,0xf9,0xfc,
- 0x01,0xbc,0x0f,0xd5,0x87,0xf7,0x92,0x87,0xc2,0x94,0x1e,0x13,0x99,0x7f,0xe6,0xf8,
- 0xc7,0xf0,0xfb,0x03,0xdc,0x40,0x07,0x1d,0x33,0xc2,0xf2,0x5f,0xcc,0x1f,0x40,0xa1,
- 0xb0,0x67,0x9c,0xc2,0x9e,0x6b,0xd6,0xec,0xc2,0xf5,0x71,0x74,0xf7,0x78,0xd3,0xe1,
- 0x43,0x2c,0xf2,0x97,0xd5,0xe1,0xf9,0x2f,0xd2,0x0d,0xe4,0xaa,0x69,0x0f,0x4e,0x27,
- 0x5e,0x89,0xfb,0x3a,0xc6,0xda,0x83,0x51,0xbf,0x3f,0xd2,0x70,0x6a,0x53,0xfc,0x67,
- 0x16,0x69,0x14,0xa2,0xb9,0xb4,0x4f,0x3e,0xd2,0x1f,0x89,0x97,0xc5,0x79,0x83,0x9c,
- 0x78,0x3d,0xe7,0x7f,0xee,0x9b,0x4b,0x64,0xcf,0x14,0x46,0x4a,0x78,0x52,0xde,0x7f,
- 0x02,0xfd,0xd1,0xbe,0xed,0x6e,0x9b,0xcd,0xd9,0xb4,0xc3,0xff,0xf8,0xf2,0x5f,0x01,
- 0x7f,0xa4,0x3a,0x21,0xfb,0x23,0xef,0xb7,0x43,0x54,0x31,0x2e,0xf9,0x03,0x18,0x2b,
- 0x37,0x39,0xb0,0x27,0xac,0xde,0x39,0x2f,0xfa,0x23,0xa9,0x34,0xbf,0x33,0x50,0x45,
- 0xcf,0x5f,0xfc,0xfc,0x1a,0xf3,0xf3,0x3f,0x10,0x79,0xde,0x21,0xf5,0x71,0x4e,0x58,
- 0x54,0x1e,0x16,0xa9,0x90,0x59,0xa8,0x8f,0xd3,0x6c,0xfc,0xa3,0x34,0xd2,0xb2,0x2c,
- 0xeb,0x32,0xac,0x1c,0xad,0x7c,0x19,0xc3,0x7b,0xec,0xfd,0x5d,0xf0,0x07,0x98,0x20,
- 0xfe,0xc6,0x47,0x2a,0x2f,0x54,0x4f,0x7b,0x07,0x59,0xb4,0x3f,0x00,0xf3,0x97,0x38,
- 0x5b,0x18,0xff,0x70,0xb4,0xb3,0xae,0x68,0x7f,0xc8,0x88,0x41,0xb4,0x3f,0x52,0xa4,
- 0x3f,0x00,0xea,0x8f,0xe4,0x1f,0xe4,0xc2,0xfc,0x91,0x42,0x06,0x85,0xfc,0x91,0x22,
- 0xf1,0x4f,0x11,0xf7,0x5f,0xc8,0x1f,0xdb,0x3f,0x98,0x0c,0xf7,0xc7,0xa6,0xfd,0x52,
- 0x23,0xfd,0x21,0x35,0x11,0xed,0x50,0x7f,0x6c,0x2b,0xc8,0xff,0x78,0xe1,0x94,0xfd,
- 0x91,0x14,0x5a,0x0d,0x57,0xac,0x3f,0xa4,0x97,0xa8,0x45,0xde,0x5f,0x22,0xfd,0x91,
- 0xa2,0xf0,0xcf,0x10,0xe2,0x8f,0x54,0xa4,0x3f,0x64,0xc4,0x40,0xc0,0x3f,0xff,0x8a,
- 0xf5,0x87,0xfd,0x32,0xfc,0x91,0xe2,0xd4,0x48,0x70,0xd5,0x75,0xf9,0x23,0xd9,0x83,
- 0x75,0x5f,0xae,0x3f,0x12,0x3e,0xe0,0xf8,0x67,0x9f,0xe8,0x8f,0xe4,0xb4,0x05,0xa9,
- 0x2e,0x88,0x7f,0x0a,0xf1,0x1b,0x82,0x3f,0xd2,0x0e,0x99,0xff,0xc1,0xf1,0x12,0xda,
- 0x1f,0xd6,0x45,0x3b,0xeb,0xa2,0xfd,0x21,0x61,0x46,0xc4,0x34,0x8b,0xf5,0xc7,0x2e,
- 0xa2,0x3f,0x88,0xd0,0x0d,0x24,0x1a,0xff,0xc4,0x16,0x15,0x11,0x1f,0x09,0xff,0xa8,
- 0x53,0x2a,0x8b,0x76,0xed,0x75,0xe8,0x7f,0x28,0xda,0x69,0x5f,0x87,0xfb,0x23,0x79,
- 0x9f,0xd4,0xd6,0x62,0xf6,0x1f,0x8e,0x7f,0xfa,0x44,0xfc,0x73,0x17,0xc8,0x6d,0xe2,
- 0x11,0xfc,0xb3,0x4b,0x63,0xfa,0x1f,0x8a,0x76,0x4e,0x55,0x16,0xed,0x0f,0x80,0xef,
- 0xb7,0xcb,0x64,0xfc,0x23,0x9d,0x5f,0x97,0x7b,0x1b,0xf3,0xe9,0xa9,0xd8,0x81,0xc0,
- 0xf9,0x25,0xe1,0x1f,0x93,0xdf,0x6d,0x26,0x3d,0xa1,0x4d,0x55,0x05,0x1c,0x9f,0x84,
- 0xfe,0xb0,0xba,0xaf,0x3e,0x2e,0xa7,0x4d,0xce,0x0c,0xee,0x60,0x58,0x7f,0x58,0x96,
- 0xef,0xa0,0xb6,0xd8,0x72,0xbd,0x21,0xc7,0x3f,0x9b,0x65,0xbe,0xeb,0x66,0x1b,0xff,
- 0x2c,0xd9,0x1d,0xd8,0x48,0x8f,0x85,0xfb,0x63,0x6f,0x08,0x04,0x6a,0xbb,0xc8,0xff,
- 0x64,0xfd,0xfe,0x48,0x05,0xf0,0xcf,0x56,0xd4,0x1f,0x3b,0x0a,0xff,0x14,0x71,0xde,
- 0x55,0xf9,0xf5,0x3f,0x4e,0x7c,0xb4,0xbd,0x5a,0xfa,0x8d,0xb2,0xa5,0x1d,0x08,0x1e,
- 0x60,0xeb,0xd3,0x12,0xeb,0xe3,0x2e,0x1b,0x4d,0x27,0xb7,0xbf,0xe4,0x18,0x25,0x15,
- 0xc6,0x3f,0x74,0x30,0x61,0xe3,0x99,0xe9,0xcc,0x35,0xb7,0xd1,0x27,0x86,0x7f,0xa6,
- 0x33,0xc7,0x8d,0x66,0x6e,0x8b,0x94,0x18,0xa7,0x42,0xe8,0xbd,0x63,0x21,0xfa,0x9f,
- 0x1d,0xff,0x03,0x65,0xa3,0xb5,0xdc,0x16,0xbb,0x74,0x97,0x3d,0x78,0x45,0x4b,0x66,
- 0x05,0xfc,0xd3,0xc2,0xf3,0x5f,0x47,0xa0,0x93,0xca,0x7e,0x5c,0x3c,0x6c,0xbf,0x98,
- 0x93,0x46,0xa8,0xfb,0x0d,0xd9,0xb8,0x46,0xd0,0xff,0xa8,0x69,0xe2,0xa6,0x98,0xd7,
- 0x06,0x3d,0x1a,0x2d,0x43,0x07,0xfd,0x21,0xf9,0xaf,0xbf,0x9a,0xf7,0x77,0xd6,0x51,
- 0x73,0xc1,0x79,0x27,0xed,0xa2,0x34,0x65,0x13,0xa4,0x91,0xeb,0xe5,0x4c,0x58,0x7f,
- 0x90,0x4c,0x6c,0x17,0x85,0xc1,0x1b,0xa6,0x68,0x34,0xea,0xb2,0x95,0x79,0x7b,0x70,
- 0x65,0x97,0x4f,0x1f,0xc5,0xbe,0x7f,0x54,0x6f,0x87,0xc3,0xd0,0x70,0x3a,0xe1,0xc6,
- 0x3f,0x5b,0x99,0xb1,0x5f,0x43,0x8e,0xa8,0x4d,0x59,0xd1,0x88,0x49,0xd0,0x3f,0xdb,
- 0xfb,0x4f,0x4f,0xac,0x61,0xd4,0xc1,0xc3,0xa6,0x7d,0xb7,0xbb,0xed,0xc1,0x5b,0x39,
- 0x39,0x91,0x27,0xf0,0x3f,0xb0,0x1e,0x3a,0xec,0x20,0xdc,0xed,0x44,0xe3,0xd6,0x6c,
- 0x59,0xca,0x1e,0x74,0xf8,0x5e,0x1c,0xce,0xf3,0xfe,0xb0,0xfa,0x77,0xa1,0xa3,0xe3,
- 0x85,0xb1,0xc7,0xd8,0xe9,0xbf,0x51,0xb9,0x0a,0x3f,0xf5,0x11,0x23,0x62,0xfe,0x6b,
- 0x0d,0x95,0x3d,0x97,0x32,0xb4,0x63,0x6c,0x99,0x80,0x83,0x24,0xa3,0x2a,0xf1,0x3f,
- 0x72,0xfe,0xeb,0xce,0x43,0x2e,0x3f,0xd6,0x44,0xe2,0x33,0x11,0xc0,0xcf,0x3c,0xff,
- 0x45,0xf4,0x3f,0x97,0xa4,0x6e,0xb0,0x24,0xfe,0x97,0xc0,0xd7,0x1f,0x96,0xf9,0x3f,
- 0x8c,0xcc,0x7f,0xd6,0xb1,0x05,0x68,0x75,0x77,0x8f,0x8a,0x36,0x3a,0xa8,0x96,0x88,
- 0xf4,0xf3,0x8c,0x7f,0x36,0xcc,0x9f,0xe8,0x7b,0xac,0xdb,0xf2,0x8b,0xd9,0xec,0x1e,
- 0xa0,0xc6,0x08,0xb2,0x51,0xb6,0xa8,0xff,0x79,0xdc,0x0e,0xda,0xce,0xbc,0xe6,0x95,
- 0xe5,0x96,0x92,0xf5,0xf6,0x2b,0xab,0x5f,0x8a,0xa7,0xd8,0x1f,0x76,0x0a,0xae,0xc2,
- 0x5d,0x99,0x9a,0x54,0x3c,0xe7,0xa0,0x9d,0x3c,0x6d,0x14,0x9b,0xb4,0x42,0xfa,0xc3,
- 0xd2,0xfc,0xd7,0x8a,0x45,0x4f,0xb4,0xcb,0xc7,0x90,0xbf,0x3f,0x08,0x8b,0x8f,0xbe,
- 0x33,0x79,0xd8,0x49,0x7b,0x2d,0x22,0x0b,0xc9,0x4c,0x3c,0x1b,0x77,0x14,0x2f,0x42,
- 0xa2,0x64,0x96,0x98,0xff,0x5a,0x03,0xdd,0xab,0xd2,0x84,0x7f,0x58,0x04,0x6f,0xc0,
- 0x52,0x8f,0x88,0x18,0x94,0x18,0x1e,0x8e,0x7f,0x48,0xfe,0xab,0xa7,0xb4,0xd6,0xb9,
- 0x9e,0xf4,0xf3,0x72,0xf2,0x65,0x66,0xbf,0x89,0xf7,0x87,0x25,0xfa,0x9f,0x76,0xf8,
- 0x9e,0x39,0x5f,0x2f,0x55,0xe1,0x49,0xb8,0xd5,0x74,0x88,0x20,0x33,0x13,0xd2,0x1f,
- 0x76,0x73,0x79,0x9b,0x9a,0x53,0x9a,0x20,0x6d,0x29,0x86,0xe8,0xcf,0xfc,0x90,0x68,
- 0x14,0xa0,0x08,0xf9,0xaf,0xd9,0x9f,0xc0,0x95,0x55,0x2b,0xbd,0xee,0x1e,0x2e,0x9e,
- 0xf9,0xcc,0x8f,0x67,0x78,0xfe,0x6b,0xde,0x98,0x71,0x11,0xea,0xcd,0x84,0x4e,0xe3,
- 0xb3,0xd4,0x09,0xcb,0x27,0x3e,0xa3,0x24,0xc9,0x1f,0x52,0x5f,0x6e,0x26,0xa1,0xcb,
- 0x52,0xda,0x60,0x17,0x31,0x0a,0xc8,0x52,0xfe,0xc7,0x30,0x44,0x46,0xe8,0x18,0xdb,
- 0x7f,0x48,0xfe,0xeb,0x97,0xd9,0x6a,0xf3,0xcf,0x5b,0x95,0x6f,0xc3,0x56,0xa8,0x31,
- 0x4b,0x5a,0xc9,0x34,0x53,0x86,0x3d,0x71,0x03,0xd3,0xff,0xcc,0xdd,0x09,0xff,0xa1,
- 0x3e,0xd7,0x52,0x32,0xaa,0xfc,0x13,0xfc,0x02,0xea,0xcc,0xd2,0x51,0x12,0x46,0xc3,
- 0x20,0xf1,0xbc,0x8f,0xe3,0x49,0xef,0xfa,0x0c,0xc1,0x6f,0xab,0xea,0x5b,0x6b,0xf4,
- 0x32,0xd5,0xbe,0xff,0x65,0xa6,0xe3,0x8f,0x64,0xca,0x8c,0x1f,0xe7,0xdb,0x73,0xb3,
- 0x9f,0x37,0xcf,0x3d,0xdd,0xb4,0xb6,0xe2,0xc9,0x08,0x7d,0x94,0xd0,0x1f,0x56,0xd3,
- 0x33,0xb1,0x29,0xe5,0x21,0x3d,0x61,0x95,0x19,0x30,0xa5,0x37,0xd9,0x07,0xe9,0x6a,
- 0x43,0x9f,0x32,0x06,0xed,0x5f,0x24,0xce,0x52,0x63,0x62,0x7f,0xd8,0x5d,0xd4,0x56,
- 0x45,0xcb,0xb4,0x10,0x20,0xb4,0xa8,0xa3,0x3c,0x13,0x7f,0x00,0x0e,0xac,0x4f,0x86,
- 0xf5,0x87,0xfd,0x5f,0xf6,0xae,0x3e,0x36,0xae,0xea,0xca,0x9f,0x3b,0x73,0x9f,0xf3,
- 0xec,0x8c,0x9d,0x37,0xf6,0x4c,0x18,0xc0,0x89,0x9e,0xed,0x10,0x4c,0x30,0x66,0x92,
- 0x90,0x90,0x26,0x10,0x3f,0x8f,0x3f,0x70,0x42,0x80,0x69,0x3e,0xbd,0x95,0x57,0x7a,
- 0x64,0xbd,0xbb,0x41,0x62,0x91,0x93,0x4a,0x4b,0x76,0xa9,0xda,0x3b,0x66,0x48,0x4d,
- 0x48,0xc5,0x28,0x44,0x10,0xb4,0xd1,0xd6,0xd0,0xb4,0x65,0x51,0xda,0x0d,0x9f,0x81,
- 0xa6,0x4b,0xc6,0x51,0x1c,0x4c,0x1b,0xba,0x11,0x9b,0x56,0xd1,0x2a,0x02,0x47,0xf2,
- 0x4a,0xd9,0x12,0x08,0x6c,0x61,0x9b,0x90,0x26,0xd9,0x7b,0xdf,0xe7,0xbd,0xef,0x63,
- 0x3c,0x66,0xcb,0x2e,0x95,0x98,0xbf,0x7e,0xba,0x73,0xfd,0x7c,0xdf,0x9d,0xfb,0xce,
- 0xfd,0xbd,0xdf,0x39,0xf7,0x1c,0xbc,0x0a,0xb3,0x30,0x95,0x79,0x76,0xf5,0x0a,0x6a,
- 0x9f,0x63,0xd4,0x70,0xa9,0x6e,0x62,0xf9,0x6b,0x05,0xff,0x57,0xb6,0x17,0x0e,0x68,
- 0x4d,0x60,0xd4,0x4b,0x7d,0x95,0x3e,0xad,0x95,0x9b,0x22,0x7d,0xf0,0x2f,0xd0,0x70,
- 0x5c,0x1e,0x00,0xf3,0xf9,0xbd,0xd3,0xe3,0xff,0x82,0x17,0xc9,0x33,0xe3,0xad,0x5b,
- 0xa3,0x4c,0x08,0x9a,0x35,0x1e,0xeb,0x31,0xc0,0xfc,0xf1,0x16,0xcb,0x23,0x66,0xfa,
- 0xbf,0xec,0xf1,0x57,0xb1,0xf3,0x08,0xa8,0x15,0xaa,0x59,0xf4,0xe0,0x67,0x8c,0xed,
- 0x40,0xd4,0xa8,0x7f,0x71,0x5c,0xf0,0x7f,0xb9,0xf5,0x61,0xf3,0x6f,0xb0,0x30,0xce,
- 0x89,0x7a,0xa6,0xff,0x5c,0x22,0x6d,0xfa,0xe3,0x67,0x0c,0x21,0x68,0xe1,0x40,0x8c,
- 0xcf,0x0f,0xc9,0xf9,0xbf,0x76,0xb3,0x65,0x10,0x1b,0x62,0xd1,0x3b,0x2f,0x43,0x75,
- 0x0f,0x0b,0xec,0x61,0xf5,0x3e,0x3a,0xe5,0x87,0x02,0xfd,0x5f,0x94,0xff,0xec,0xa5,
- 0xdb,0xc4,0x0d,0x03,0x3b,0x59,0xb7,0x9b,0xb4,0x7f,0xe8,0x89,0x9c,0x52,0x0e,0x40,
- 0x83,0x2e,0x73,0x89,0x6d,0x79,0xff,0xd7,0x76,0xca,0x51,0x5a,0xd4,0x4a,0x66,0x7f,
- 0xf6,0xb3,0xd5,0x05,0x14,0xbc,0xa0,0x34,0x0a,0x89,0xc7,0x5d,0x7b,0xb5,0x2f,0xf9,
- 0x21,0x79,0x9f,0x2c,0x3f,0x5f,0x3d,0x44,0x9f,0xa6,0xdf,0x31,0x6b,0x63,0xdc,0x66,
- 0x96,0x25,0x4a,0x0a,0xf6,0x7f,0x0d,0xc1,0x45,0xb2,0x5c,0x36,0xca,0x52,0x53,0xeb,
- 0x54,0x98,0xf1,0xb2,0x39,0x3f,0xda,0x0c,0x2b,0x5f,0xcd,0x88,0xc7,0xff,0xb5,0x0f,
- 0xde,0x65,0xb2,0x52,0x11,0xfd,0x17,0xb9,0x02,0x0b,0x09,0x7d,0x30,0xa9,0x19,0x7f,
- 0xb6,0xad,0x33,0xb8,0x3e,0xec,0x33,0x78,0x13,0x6c,0x87,0x16,0x90,0xf3,0xb5,0xa7,
- 0xd5,0x9f,0xc1,0xe2,0xdd,0xd3,0x9f,0xa4,0xdb,0xd6,0x6b,0xe3,0xad,0x5a,0xf5,0x7e,
- 0x08,0xf1,0x7f,0x3d,0x8d,0xe8,0xee,0xb6,0x8d,0x3e,0x7d,0xaf,0x43,0x23,0x58,0x89,
- 0x02,0x5a,0xed,0xc0,0x21,0x8b,0xff,0xd8,0xeb,0x41,0x4e,0xc8,0xd4,0xfe,0xb4,0xc2,
- 0x12,0xba,0xd5,0xb1,0xfa,0xb9,0xe0,0x14,0xa6,0xb9,0x2f,0xd8,0xff,0x55,0x7d,0xbf,
- 0x7c,0x12,0xd1,0xdd,0x96,0xdd,0xef,0xeb,0x4c,0xf6,0x2c,0x18,0xf7,0x7b,0x7b,0xb1,
- 0x66,0xff,0xc3,0xae,0x7f,0xc7,0xb1,0x3f,0xcf,0xc6,0xcf,0xc3,0x1f,0xe0,0x76,0x98,
- 0x51,0xa4,0xa4,0xe5,0x0f,0xd0,0x06,0xc6,0xfd,0x3e,0x48,0x6f,0x93,0xbf,0xdf,0x33,
- 0x73,0xfc,0xfa,0xcf,0x34,0x46,0x7b,0x8c,0x42,0xc3,0x1f,0xc2,0xfb,0xe5,0xe9,0x3f,
- 0xaf,0xdb,0x85,0xd2,0x1e,0xdb,0x56,0x96,0xfe,0xf3,0x82,0x19,0x98,0x71,0xd6,0x97,
- 0x1f,0xa9,0xa4,0xfe,0x53,0x71,0x56,0x29,0x27,0x3f,0x36,0xfd,0xf6,0x02,0x31,0x8f,
- 0x1d,0x29,0x66,0xc4,0x0e,0x0a,0xe0,0x3f,0x82,0xfe,0x73,0xa9,0x30,0x15,0xfd,0x67,
- 0x1f,0xab,0xe7,0xf8,0x85,0xea,0x3f,0x2f,0x80,0x75,0x70,0x69,0x52,0xff,0x97,0xa9,
- 0x7e,0xbc,0x42,0xcc,0xfa,0x68,0xe4,0xc0,0x70,0x09,0xfd,0xc7,0xf5,0x76,0x7d,0x0c,
- 0xb7,0x8d,0x98,0xfa,0xcf,0x70,0x19,0xfe,0x2f,0x3a,0x3f,0x8a,0x49,0x7b,0xb4,0x8b,
- 0x4a,0x59,0xfa,0x4f,0xe8,0xfc,0x84,0xe8,0x3f,0xaf,0x4c,0xae,0xff,0x08,0xf9,0xb1,
- 0x5f,0x99,0xa2,0xfe,0xf3,0x42,0x19,0xfa,0x8f,0x71,0xfe,0xab,0xf5,0xf3,0xe9,0x3f,
- 0xaf,0x85,0xbd,0x8f,0x97,0xa8,0x8f,0x76,0xcf,0xa4,0xfa,0x0f,0x9e,0x5c,0x7f,0xf8,
- 0xbf,0xd3,0x7f,0x4c,0xff,0x57,0xf0,0x31,0x37,0x17,0x84,0xd4,0x47,0xbb,0x34,0xb9,
- 0xfe,0xe3,0x89,0xff,0x99,0x1d,0xdc,0x3f,0xa8,0x3e,0x48,0x80,0xec,0x33,0x49,0x7e,
- 0xec,0x2f,0x5e,0xff,0x21,0xa1,0xfa,0x8f,0xa3,0x3f,0x08,0xe7,0xbf,0xb4,0x50,0xfd,
- 0xc7,0xbe,0xbe,0x90,0x1f,0x9b,0x45,0x5b,0x3d,0xce,0x02,0xd1,0xa7,0x90,0x1f,0xfb,
- 0xce,0xe1,0x6b,0xfc,0x19,0xb3,0x03,0xf3,0x63,0x3b,0x4f,0x47,0xcc,0xd7,0x52,0x2a,
- 0x3f,0xf6,0xf9,0x88,0x4f,0x3f,0x09,0xcb,0x8f,0x6d,0x80,0xf3,0x51,0x6f,0x4b,0x78,
- 0x7e,0x6c,0x14,0x62,0x4f,0x42,0xf2,0x63,0x5f,0x2c,0x2c,0x30,0x0b,0xa5,0x1d,0xf2,
- 0xc5,0xff,0x78,0xfc,0x5f,0xe6,0x68,0x7f,0x3f,0xdc,0x70,0x76,0xfa,0x12,0xd3,0x8c,
- 0x14,0x4b,0xfa,0xbf,0xcc,0x6f,0x59,0x19,0x38,0xca,0xee,0xfc,0xf9,0xc0,0xc3,0xf2,
- 0x63,0x13,0xeb,0x3c,0x8b,0x2f,0x3f,0xb6,0xbf,0x3e,0x2c,0xbb,0xbb,0x83,0xb2,0xfd,
- 0xda,0x1e,0xb1,0x76,0x34,0x3f,0xff,0x09,0xac,0x8f,0x16,0x1e,0xff,0xe3,0xcd,0x8f,
- 0x6d,0xc7,0x73,0x1a,0x69,0x91,0x1c,0x53,0x3f,0x59,0x7d,0xb4,0x29,0xe4,0xc7,0xb6,
- 0xc0,0x5c,0xb7,0xe5,0xda,0x90,0xfa,0x20,0x56,0x18,0xcc,0x2d,0x99,0xb7,0xd5,0x83,
- 0x29,0xd3,0xdf,0x8a,0x4a,0xe7,0x47,0xba,0x28,0x2f,0x1f,0x9b,0xf1,0x6a,0xf4,0x1c,
- 0xb9,0xa8,0x8a,0xf1,0xf0,0x21,0xf9,0xb1,0x7f,0xcf,0xea,0x5b,0xfd,0xdc,0x10,0x2e,
- 0xc2,0xeb,0xa3,0xd1,0xc6,0xe2,0xc2,0x63,0xb1,0xe3,0x7c,0xd8,0xcf,0xa7,0x85,0xa6,
- 0x23,0xb1,0x10,0xfe,0x73,0x8e,0xcd,0xc6,0x0e,0x79,0x37,0xef,0xf6,0x7a,0x0d,0x9a,
- 0x4e,0x54,0x85,0xf0,0x9f,0xb7,0xe9,0x6d,0x3e,0x37,0x46,0x5f,0x33,0x8f,0xc1,0x42,
- 0xfb,0xc6,0xe9,0x15,0x84,0xc2,0x28,0x02,0xff,0x51,0x58,0xbd,0x5d,0xfa,0xb6,0x25,
- 0xcc,0xe7,0xb3,0x42,0x3c,0x15,0xcf,0x7f,0x58,0xb6,0xa8,0xa5,0xc5,0x96,0xd7,0x85,
- 0x65,0xa0,0x2f,0x10,0x02,0x51,0xbc,0xfc,0x67,0x91,0x27,0x2c,0xea,0x72,0x61,0x79,
- 0x7f,0x18,0xff,0xd9,0xcb,0x2e,0xa2,0x79,0xc2,0x5a,0xb4,0x05,0x02,0x3f,0x17,0xf8,
- 0x0f,0x39,0x98,0xad,0xd1,0x9e,0x13,0xc2,0x96,0x5e,0x82,0xc6,0x6f,0x05,0xeb,0x3f,
- 0x94,0xff,0xe0,0x83,0x24,0xe6,0x71,0x13,0xbf,0x08,0xe2,0xfb,0x82,0x8f,0xff,0xec,
- 0x15,0xc3,0x60,0x7e,0x4e,0xe8,0xfb,0x48,0x38,0xff,0x91,0x97,0x7b,0xc3,0x9e,0x71,
- 0x5a,0x6b,0x99,0x9c,0xff,0x18,0xc0,0x3c,0x8f,0xf9,0x46,0x7f,0x18,0xff,0xa1,0xf3,
- 0x4f,0x96,0x16,0x2b,0x58,0x59,0x10,0x27,0x8d,0xdb,0x67,0xb0,0xe0,0x24,0x3f,0x63,
- 0x22,0xff,0x39,0x64,0xa6,0xa5,0xe5,0x02,0x29,0x5f,0x05,0xf5,0x88,0x1c,0xc2,0x7f,
- 0x9e,0xa4,0x37,0xd5,0xac,0x57,0x2d,0x89,0xcc,0xb6,0x8f,0x7d,0xbd,0x0b,0x87,0x86,
- 0x44,0xfd,0xc7,0xcb,0x7f,0xd4,0x4e,0x79,0x49,0xc6,0x32,0xec,0xfb,0xd9,0x63,0x45,
- 0x1a,0x27,0xe4,0x10,0xfe,0xb3,0x9d,0x8e,0x76,0xd9,0x70,0xcd,0xb3,0xd1,0x66,0xf8,
- 0xad,0x4d,0x7b,0x2e,0xc3,0x02,0x8f,0xfe,0x63,0x8f,0x87,0xf2,0x1f,0xed,0xbc,0xe6,
- 0xa7,0x01,0x6f,0x08,0x11,0x41,0x22,0xff,0x79,0xcb,0x13,0xf6,0xcc,0x3c,0x20,0x62,
- 0xa2,0x6c,0x81,0xff,0xc8,0x8f,0x6e,0x6c,0xe5,0xd5,0x9b,0x68,0x3f,0xdd,0xa6,0x1b,
- 0xb3,0xcd,0xa1,0xfc,0xe7,0xd1,0x48,0x8b,0xa0,0xf6,0x18,0x11,0x41,0x59,0x39,0x94,
- 0xff,0xe4,0xb4,0x16,0x27,0xfe,0x87,0x7e,0x0b,0x9d,0xf0,0x35,0x4d,0x4c,0x14,0x29,
- 0xf2,0x9f,0x31,0x4a,0x2a,0x5a,0x38,0xb7,0x17,0xdb,0x7f,0x5f,0x14,0x12,0x45,0xf2,
- 0xfc,0xe7,0xd3,0xc8,0x05,0x68,0xcb,0xce,0x38,0xc1,0x6f,0xeb,0x9f,0x42,0x5b,0x36,
- 0x8c,0xff,0x7c,0x02,0x6f,0x6b,0x6d,0xbd,0x9e,0xb0,0x61,0xed,0xf6,0xad,0x31,0x2e,
- 0x51,0x00,0xcf,0x7f,0x4e,0xd3,0x3d,0xa0,0x15,0x9a,0x05,0xda,0xf3,0x33,0xd2,0xaa,
- 0x36,0x87,0xf0,0x9f,0xb7,0x21,0xa7,0xb6,0x9c,0x94,0x13,0x9e,0xb4,0x90,0xd9,0x79,
- 0xa1,0xfc,0xe7,0x51,0x68,0xed,0xf1,0xc7,0x53,0x55,0x85,0xf1,0x1f,0x56,0x0d,0x64,
- 0x93,0x30,0x7e,0x74,0x21,0xbb,0x5c,0x6b,0x0d,0xe1,0x3f,0x79,0xf9,0x42,0xc4,0x17,
- 0xf6,0x43,0x6e,0xd3,0xaa,0x4b,0xf0,0x9f,0x34,0x54,0x93,0x69,0xc2,0x7a,0x5b,0x20,
- 0xc7,0x42,0xf9,0xcf,0x1b,0xea,0x0f,0x0a,0xde,0xb0,0xe7,0xb6,0xfd,0x30,0x9c,0x09,
- 0xe5,0x3f,0xea,0x49,0xef,0x31,0x01,0x95,0x6e,0xa1,0xc1,0xfc,0x27,0x41,0x1f,0x3a,
- 0x6f,0x5a,0xd7,0x43,0xe4,0xa6,0x8c,0x1c,0xca,0x7f,0xfe,0x9b,0xa4,0xc7,0xab,0xad,
- 0xf8,0x9f,0x71,0x2b,0xfe,0xc7,0xd0,0x7f,0x02,0xf9,0xcf,0xde,0x80,0x6d,0xfd,0x0a,
- 0x59,0xac,0x85,0xf3,0x9f,0xb7,0xc9,0x32,0x9d,0xee,0x56,0x82,0xdb,0x6b,0xa1,0x79,
- 0x90,0xe7,0x5c,0x10,0xff,0xf9,0x2e,0x34,0x68,0xf2,0x00,0x4f,0xdb,0x0e,0xe1,0x06,
- 0x21,0x10,0x51,0xe4,0x3f,0x79,0xb8,0x41,0x93,0x3d,0x65,0x8c,0xf6,0x0a,0x33,0x20,
- 0xf2,0x9f,0x87,0x59,0x9a,0x5f,0x91,0x46,0x2a,0x73,0xb5,0xe6,0x10,0xfe,0xf3,0x53,
- 0xf8,0x25,0x2c,0x65,0x61,0xbd,0x1c,0x11,0xba,0x02,0x8b,0x8b,0x2d,0x4c,0x01,0x7b,
- 0x3f,0x80,0xff,0x68,0x17,0x1d,0x99,0xc8,0x75,0x0c,0x2d,0xcd,0x72,0x2d,0x4d,0x3c,
- 0xff,0x39,0x4b,0xad,0xd9,0xed,0xc3,0x31,0xfb,0x18,0x94,0x2d,0x83,0x4c,0xf0,0x89,
- 0x22,0x7d,0xfc,0x87,0xf8,0xe2,0x79,0x36,0xc9,0x21,0xfc,0xa7,0x95,0x3d,0x14,0x47,
- 0x7c,0xfd,0x85,0x08,0x58,0x1f,0xff,0xe1,0xcb,0x56,0x02,0x05,0x91,0x58,0xf1,0x39,
- 0x9e,0x0f,0xc4,0x9d,0xe9,0xa7,0xfc,0xe7,0x23,0xfe,0x58,0x93,0x9d,0x56,0x45,0x28,
- 0x54,0xea,0xf2,0x9f,0xbd,0xb3,0xfc,0x6a,0x46,0xc0,0xf9,0xf7,0xb0,0xf8,0x9f,0x85,
- 0xe3,0xd3,0x4b,0xd7,0x07,0x29,0x8a,0xf1,0x3f,0xf3,0x04,0xd9,0xc7,0xe5,0x3f,0xee,
- 0xf9,0x2f,0xe9,0x98,0xfc,0x92,0x4b,0x7b,0xc4,0xb0,0xba,0xc9,0xf5,0x9f,0x79,0x21,
- 0xf1,0x3f,0x8e,0x7d,0xf0,0xd4,0x47,0x5b,0x50,0x0c,0xe4,0xc3,0x61,0xe7,0xbf,0x42,
- 0xf3,0xff,0x7c,0xee,0xf8,0x1f,0xf1,0xfc,0xd7,0xe4,0xfa,0xcf,0x19,0xfe,0xfd,0x8b,
- 0x7b,0x4d,0x88,0x59,0x1e,0x52,0xb3,0xe5,0x63,0xd7,0xff,0x15,0x14,0xff,0xe3,0x8f,
- 0x7f,0xe6,0xfc,0x5f,0x31,0xcd,0x1b,0xed,0x13,0x90,0xff,0xc7,0xf5,0x7f,0x59,0xfc,
- 0x67,0x7a,0xc9,0xf5,0xe3,0xfa,0xbf,0x04,0xfd,0x27,0xb4,0x5e,0xcf,0xe1,0xd2,0xf1,
- 0x3f,0xb2,0xe5,0x76,0x0f,0x38,0xff,0x45,0x78,0xfd,0xe7,0xc7,0x61,0xf7,0x1b,0x58,
- 0x1f,0xa4,0x04,0xe0,0xfc,0x5f,0x71,0x2e,0xfe,0xe7,0xb7,0x61,0x42,0x10,0xe7,0xff,
- 0x2a,0x33,0xfe,0xc7,0x1e,0xbf,0xa9,0xff,0x2c,0xb5,0xdf,0xee,0x97,0x06,0xbf,0xef,
- 0xfb,0xcf,0x7f,0xd5,0x4c,0x49,0xff,0x99,0x17,0xbc,0x4d,0x4f,0x58,0xa5,0xbe,0x2a,
- 0x7e,0xe5,0xd3,0x7f,0xaa,0x78,0x19,0xc4,0x97,0x2f,0xda,0xf5,0x7f,0x99,0xfa,0xcf,
- 0x52,0xf7,0xee,0x6a,0xca,0xd3,0x7f,0x82,0x8e,0x7d,0x05,0xfa,0xbf,0xa4,0x12,0xdd,
- 0xa6,0xae,0xff,0x9c,0x31,0xc0,0x46,0xce,0xff,0x55,0x8e,0xfe,0xb3,0x91,0xcb,0x8f,
- 0x5d,0x9e,0xfe,0xe3,0xfa,0xbf,0xca,0x8c,0xff,0xb1,0xc7,0x3f,0x49,0xfe,0x9f,0xff,
- 0xf4,0xfa,0xbf,0x9a,0x3d,0xf9,0xb1,0xa1,0x2a,0xf0,0xfc,0x57,0xb8,0xfe,0xe3,0x07,
- 0x8f,0x95,0xd4,0x7f,0x02,0xcf,0xe3,0x94,0xac,0x8f,0x66,0x80,0xbf,0x11,0x5a,0x5c,
- 0xff,0x97,0x4f,0xff,0xa9,0xd9,0xda,0xe4,0x12,0xa1,0x4a,0xc7,0xff,0x65,0xaf,0x37,
- 0x5e,0xff,0xc1,0x66,0x34,0x4b,0x5d,0x80,0x3d,0xe1,0xe2,0x3f,0xf9,0xdd,0xaa,0xd0,
- 0x36,0x5e,0x75,0x21,0x7a,0x59,0x3b,0x47,0x96,0x85,0x9d,0xff,0xba,0x7a,0x8f,0x11,
- 0xb6,0x64,0x8d,0xf6,0xe6,0x33,0x55,0xac,0x50,0xd1,0xe3,0x9e,0x42,0x45,0xa2,0xff,
- 0xcb,0xbd,0x4d,0x74,0xf3,0xd8,0x10,0xed,0x2f,0xff,0x73,0x89,0xf3,0x5f,0xe2,0xec,
- 0x8d,0x5c,0xc3,0xc0,0xc3,0x30,0x47,0xd4,0x7f,0xdc,0xf1,0xf0,0xe7,0x67,0xd9,0x41,
- 0x66,0x39,0xc8,0x90,0x86,0xe9,0x3f,0xae,0x3e,0xb6,0x34,0x4c,0xff,0x81,0x60,0x33,
- 0x7e,0xb3,0xd0,0xe2,0xfa,0xbf,0x48,0x59,0xf1,0x3f,0x21,0xe7,0xbf,0xb8,0x63,0x5f,
- 0x0f,0x88,0x7a,0x51,0x88,0xfe,0x83,0x9c,0xb0,0xe7,0xfb,0x8d,0x16,0xcc,0xbe,0x8a,
- 0xa6,0x41,0xf0,0x7f,0x09,0xbf,0xfe,0x58,0x4d,0xd0,0xfe,0xc2,0xe9,0x3f,0xd5,0xc2,
- 0x6d,0x2e,0x3f,0x12,0xbc,0xbf,0xbb,0xe7,0xbf,0x90,0x9f,0xed,0x98,0x8e,0xb0,0xe0,
- 0xf3,0xef,0xbe,0xf8,0x67,0xc1,0x11,0x36,0xd5,0xf8,0x67,0x1c,0xa2,0xff,0x84,0x84,
- 0x51,0x95,0x1d,0xff,0xec,0x75,0xc4,0x78,0xcf,0x7f,0x99,0xf5,0x2f,0xfc,0x0b,0x03,
- 0x59,0x0a,0x61,0x89,0xf8,0xe7,0x1a,0xee,0xfa,0x2d,0xb2,0x8f,0xff,0x78,0xfc,0x5f,
- 0xcb,0xf9,0xf1,0xd7,0xdd,0xef,0xe7,0x3f,0xbe,0xf8,0xe7,0x2a,0xce,0x71,0xe3,0x2c,
- 0x15,0x9f,0xfe,0x73,0xfa,0x5a,0x73,0xf7,0xbf,0x81,0x73,0x0c,0x9d,0x77,0xf3,0xe1,
- 0x84,0xf8,0xbf,0x7e,0x47,0xaf,0xe6,0xe6,0x3f,0xdc,0x1f,0x8d,0x95,0xab,0xff,0x88,
- 0x20,0xd8,0xff,0xd5,0x51,0x62,0xfe,0x3f,0x7f,0xfc,0x73,0x50,0x7d,0x58,0xbf,0x23,
- 0x2c,0xc8,0xff,0x95,0x09,0x58,0x6f,0x76,0xe2,0x85,0xd2,0xf5,0x61,0x29,0x18,0xfa,
- 0x42,0xe2,0x9f,0xcb,0x38,0xff,0x35,0xec,0x8d,0x7f,0x9e,0x84,0xff,0x78,0xea,0x83,
- 0xfc,0xd1,0xfd,0x5f,0x29,0x5f,0x7d,0xd8,0x32,0xce,0x7f,0xf9,0x6e,0xd3,0xeb,0x08,
- 0x0b,0xaf,0x0f,0x6b,0x82,0x8f,0xf9,0x96,0x69,0x7c,0xfc,0x73,0xea,0xcb,0xe6,0xff,
- 0x32,0xea,0xa9,0xf9,0x7e,0x56,0xe2,0xe5,0x3f,0xf6,0xfa,0x1c,0x02,0x9b,0xff,0x08,
- 0x65,0x41,0x86,0x4b,0xf9,0xbf,0xce,0x04,0x4c,0xbb,0x70,0xfe,0xab,0xc3,0x73,0xfe,
- 0x2b,0x80,0xf6,0x38,0x89,0x80,0x1e,0x30,0xf4,0x1f,0x64,0xaf,0x87,0x30,0xfe,0x63,
- 0x3a,0x6e,0xb0,0x19,0xa8,0x50,0x51,0xe2,0xfc,0x97,0xa5,0xff,0x08,0xfc,0xa1,0x36,
- 0xe8,0xfc,0x97,0x18,0xf6,0x3c,0xdf,0x06,0x37,0x4d,0x25,0xfe,0xd9,0x2e,0x8c,0x15,
- 0x98,0xff,0x30,0x18,0xdc,0x3c,0x31,0xe3,0x82,0xff,0xfc,0x97,0x3d,0xda,0xdb,0xb9,
- 0x61,0xff,0x7d,0xe3,0x64,0xfe,0x2f,0x11,0xd8,0xf9,0x7f,0xee,0x1c,0xa8,0x2d,0x11,
- 0xff,0xcc,0xf4,0x67,0x78,0x89,0x88,0x86,0xc8,0x77,0xfe,0x6b,0x92,0xf7,0x6b,0xff,
- 0xf9,0x2f,0x0f,0xed,0x51,0xc4,0xfe,0xff,0xe1,0xf1,0x7f,0x89,0xd1,0xbf,0xb7,0xf9,
- 0xe3,0x9f,0xfb,0x4b,0xf8,0xbf,0xa2,0x7e,0x46,0xc4,0xeb,0x3f,0xfe,0x6f,0xfd,0x0a,
- 0x40,0x70,0xfc,0xb3,0x3d,0x3f,0xd6,0x0a,0xe4,0xf3,0xff,0x38,0xb3,0x0f,0x95,0xf7,
- 0xfb,0xa2,0xc1,0x5b,0x4c,0xc0,0xd5,0x87,0xf5,0xc4,0x3f,0x07,0xcb,0x1a,0xee,0xfe,
- 0x55,0xe7,0xea,0x3f,0x23,0x93,0xac,0x9f,0x41,0xaf,0xfe,0x03,0x3f,0xb5,0x49,0xce,
- 0x03,0x01,0x44,0xc8,0xc7,0x7f,0xc6,0x84,0x7c,0x08,0x38,0x84,0x08,0xb9,0xf6,0x67,
- 0x3c,0xb1,0x2f,0x31,0x95,0xf3,0x5f,0x12,0x2e,0x67,0xfd,0xb8,0xfa,0xcf,0x33,0x6e,
- 0xfe,0xe7,0x6f,0xf9,0xf9,0x0f,0x4b,0x84,0x38,0xf2,0xf8,0x47,0x7f,0xe1,0xf2,0x9f,
- 0x71,0xd8,0x87,0x4d,0x6f,0x6c,0x99,0xfa,0x0f,0x76,0x7f,0x7d,0xb9,0x9c,0xf3,0xef,
- 0xbe,0xf5,0x10,0x04,0x5c,0xfe,0x73,0x1c,0x78,0xfd,0xc7,0x0a,0xfb,0x21,0x4e,0x05,
- 0x31,0x3f,0xff,0x49,0xf1,0xfc,0x87,0xdc,0x76,0x96,0x82,0x5f,0x11,0x96,0x08,0x28,
- 0x24,0xfe,0xa7,0x7e,0x1f,0x3c,0x14,0x74,0x9b,0x47,0x84,0xf9,0x74,0xec,0x4f,0x73,
- 0x59,0xf3,0xcf,0xf1,0x1f,0x65,0x6a,0xfc,0xc7,0x97,0xff,0x67,0xd2,0xf8,0x9f,0x1d,
- 0x65,0xcc,0xe7,0x3b,0xdc,0xfa,0x7c,0x0e,0x7f,0x86,0x96,0xe7,0xca,0x8f,0xff,0x09,
- 0xc8,0xff,0x23,0x97,0xe0,0x3f,0x10,0xf8,0xbe,0x8f,0xc2,0xe3,0x7f,0xca,0xe1,0x33,
- 0x9c,0xfe,0xe3,0xed,0xff,0x98,0x01,0x22,0xa1,0xf9,0x9f,0x95,0x52,0xfc,0x07,0xfb,
- 0xf8,0x4f,0xaf,0x5c,0x0e,0xff,0xe1,0xf4,0x9f,0x64,0x20,0xcd,0xab,0x08,0xe5,0x3f,
- 0xd5,0x9e,0xfe,0xa6,0x1b,0x08,0x3b,0x2d,0xad,0xa2,0xfe,0x63,0xe5,0x3f,0x14,0x69,
- 0x8f,0x1c,0xce,0x7f,0x74,0xc8,0x4f,0x89,0xff,0xbc,0x86,0x83,0xf9,0x4f,0x4d,0x08,
- 0xff,0x11,0xea,0xc3,0xba,0x20,0x12,0xa6,0xff,0x8c,0xc1,0x5e,0xec,0xeb,0xaf,0x78,
- 0x81,0xcb,0x7f,0xe4,0xa0,0xf5,0x56,0xaa,0x3e,0x6c,0x62,0x52,0xfd,0x47,0xf0,0x7f,
- 0xf9,0xf7,0xa3,0xd2,0xfa,0x0f,0x02,0x9e,0xff,0x44,0x42,0x9e,0x5f,0xd7,0xff,0x25,
- 0x93,0x60,0xfe,0x23,0x80,0x0e,0xd7,0xff,0xc5,0xe5,0x43,0x0e,0xb7,0x27,0x0b,0x39,
- 0xfe,0x13,0x7b,0x43,0xe3,0xf4,0x9f,0x65,0xa7,0xcd,0x40,0xa0,0xd0,0xf8,0x9f,0xe7,
- 0x61,0x8f,0x9b,0x6d,0xec,0x20,0x51,0x59,0x3c,0x0f,0xbd,0xcd,0x61,0x7e,0xfc,0x9b,
- 0x39,0xfe,0x33,0x0c,0x4e,0x7d,0x58,0x4a,0xf3,0x54,0x3b,0xdf,0xa3,0x1a,0xa6,0xff,
- 0x68,0x62,0xfe,0x1f,0x27,0x9f,0x36,0x37,0x9f,0x8f,0xf1,0xfe,0x2f,0x59,0xb0,0x9f,
- 0x88,0xf1,0x99,0x88,0x78,0xbf,0x23,0x1e,0xfd,0xc7,0xed,0x6f,0xb1,0xc1,0xa6,0x92,
- 0xf1,0x3f,0x7c,0xbd,0x03,0xe3,0x3c,0xaf,0x08,0xbc,0xfe,0xaf,0x91,0x84,0xc8,0x5e,
- 0x46,0x78,0xd9,0xe1,0xac,0x52,0x9a,0xff,0x2c,0xf3,0x6e,0x7c,0xb2,0x5f,0xff,0x01,
- 0x7e,0xbd,0xa9,0x3e,0x10,0xf1,0xc4,0xff,0x44,0x80,0xd7,0x7f,0x8a,0x46,0x18,0xfc,
- 0x07,0xda,0xc5,0xe3,0xac,0xc5,0x8d,0xef,0x75,0xf5,0x9f,0x41,0x3e,0xff,0xcf,0xc5,
- 0x25,0x6d,0xbf,0xa0,0xe0,0x72,0xfe,0xca,0xae,0x50,0xff,0x97,0xa5,0x1f,0xfe,0xeb,
- 0xf9,0x8e,0x00,0xfe,0xa3,0xf8,0xe3,0x7f,0x52,0x1f,0x2a,0xd6,0x21,0x2f,0x1b,0x04,
- 0xf0,0x9f,0xf3,0x62,0x7d,0x58,0xa9,0x79,0xe4,0x4e,0x3b,0xcc,0xdb,0xb3,0x1e,0x4c,
- 0x46,0xc4,0x9d,0xff,0x92,0xf6,0x29,0x07,0x31,0x9b,0xf6,0xb9,0x25,0xf8,0xcf,0x79,
- 0x6e,0x7f,0xdc,0x67,0xc8,0x80,0xf7,0xec,0xaf,0x33,0xf5,0x52,0x6e,0x19,0xd4,0x39,
- 0x89,0x80,0x46,0x9c,0xf1,0x9f,0x2e,0x84,0x9f,0x7f,0xcf,0x70,0xfa,0x98,0x7d,0x7d,
- 0x53,0xff,0x31,0x69,0xb6,0x9b,0x56,0xe8,0x60,0x28,0xff,0xf9,0x05,0x66,0xf9,0x7f,
- 0x96,0x16,0x8d,0xb4,0xe1,0x9e,0x61,0x67,0xce,0x62,0x5f,0xfe,0xc3,0x71,0x64,0xbf,
- 0x7f,0xad,0xf6,0x97,0x65,0x74,0xc0,0x47,0xce,0xdd,0xea,0x68,0x76,0xdc,0xda,0xf4,
- 0xff,0x11,0x85,0xf2,0x01,0xbe,0x3e,0xac,0xc5,0x7f,0xe6,0x77,0xb8,0x6e,0x2f,0x9f,
- 0x47,0x8c,0xab,0x0f,0xcb,0xf4,0x1f,0xf4,0x50,0x91,0x4f,0xfb,0x73,0xd6,0x97,0x1f,
- 0xdb,0xad,0x0f,0x6b,0xe8,0x3f,0x78,0x32,0xfe,0x13,0xec,0xff,0x52,0xc2,0xf9,0x8f,
- 0xab,0xbf,0x59,0xfc,0xe7,0xce,0xad,0x99,0x12,0xfc,0xa7,0xe8,0xd3,0x7f,0xae,0x2d,
- 0xa9,0xff,0xf8,0xeb,0x5f,0x4c,0xc2,0x7f,0x82,0xea,0x5f,0x94,0xd2,0x7f,0xb8,0xfc,
- 0xcf,0xe5,0xe9,0x3f,0x76,0x7f,0xdf,0xf9,0xf7,0x49,0xf2,0x3f,0xfb,0xf8,0xcf,0x1f,
- 0x43,0xff,0x69,0xe4,0xce,0xbf,0xcb,0xfe,0x68,0xdb,0x92,0xf5,0x61,0xcb,0x3a,0xff,
- 0xee,0xe6,0x7f,0x0e,0xe6,0x4b,0x6f,0x19,0x81,0xe2,0x1d,0x6e,0x7f,0xd7,0xff,0x15,
- 0xc4,0x7f,0x8c,0x83,0x60,0xc1,0xf9,0x9f,0x21,0xe9,0xbf,0xcd,0x09,0x76,0x22,0x55,
- 0x68,0xe1,0xfc,0x5f,0xc8,0xe5,0x3f,0x6e,0x20,0xfa,0x3f,0x85,0xe7,0x3f,0xcc,0x07,
- 0xf1,0x1f,0x6f,0xa2,0x6f,0xb7,0x5e,0xe7,0xf3,0xc1,0xfa,0x8f,0x87,0x2f,0xb9,0xf9,
- 0x9f,0xe7,0xf1,0xfc,0x87,0x1d,0xc4,0x9b,0xec,0xfc,0x3b,0xaf,0xff,0xfc,0x7b,0x18,
- 0xff,0x71,0xdf,0xaf,0x9b,0x93,0x9c,0xfe,0x63,0x95,0x89,0xf1,0x9f,0xbf,0xe0,0xea,
- 0x5f,0xb8,0xfa,0xcf,0x65,0x78,0x2a,0xe4,0xf9,0x6d,0xe4,0xf4,0x1f,0x98,0x6d,0x1f,
- 0x7b,0xbf,0x0c,0x6f,0x86,0x11,0x21,0xae,0xfe,0x85,0xa8,0x87,0x78,0xf2,0x69,0xd8,
- 0x16,0x78,0x0a,0xfa,0x8f,0x01,0xb8,0xfa,0xb0,0xc8,0xcc,0xff,0xe3,0x8c,0x76,0x86,
- 0x0d,0x2a,0xdd,0xf1,0x47,0x9f,0x77,0xd6,0xc3,0xce,0xb2,0xde,0xd7,0x3c,0xf5,0x2f,
- 0x22,0xd6,0xec,0x3d,0xc1,0x4f,0x23,0x1f,0x61,0x55,0x70,0xea,0x5f,0xa8,0x1e,0xfd,
- 0x67,0x24,0xd0,0x7e,0xba,0xfa,0x4f,0xde,0x1b,0xff,0xec,0xf8,0x83,0xa6,0x0b,0x7f,
- 0x68,0x5f,0x3f,0x67,0xc5,0x3f,0x3f,0x1e,0xb0,0xdf,0x35,0x05,0x9c,0x7f,0x1f,0x61,
- 0xfa,0x0f,0xe2,0xb6,0xad,0x1a,0xcf,0xfe,0x6b,0x64,0x04,0x3a,0xdd,0x6e,0xff,0x5e,
- 0x04,0xfb,0xd5,0x1e,0x07,0xec,0xf3,0xeb,0x3f,0x31,0x81,0xff,0xe0,0x20,0x7f,0xeb,
- 0xb5,0xc2,0xf9,0x77,0xb8,0x5f,0x3e,0x68,0xb8,0x41,0x03,0xa6,0x65,0x9f,0xbd,0x11,
- 0xbb,0xf5,0x61,0xf7,0x32,0xfe,0x83,0x66,0x4c,0x16,0xff,0xd3,0x3d,0xe0,0xfc,0x07,
- 0xa1,0xfa,0xde,0xb1,0xe6,0x85,0x55,0x5f,0xa6,0x7a,0x88,0xc7,0xa6,0x50,0x0f,0x51,
- 0xb6,0x40,0x6c,0xec,0xab,0x7a,0x88,0x9f,0x7f,0xfe,0x43,0xea,0x21,0x82,0xdb,0xa2,
- 0x4d,0xa9,0x1e,0xe2,0xb1,0xa9,0xd5,0x43,0xcc,0x4d,0x71,0xfe,0x1b,0xbe,0xaa,0x87,
- 0x38,0xc5,0xcf,0x97,0xab,0xfe,0xe0,0x97,0xaf,0xff,0x97,0xec,0x79,0x9c,0xf2,0xf5,
- 0x65,0x12,0x51,0x8f,0x0d,0x41,0xa3,0x01,0xc0,0xa8,0x3b,0xe4,0x82,0x3f,0x61,0x7b,
- 0xf8,0xcd,0xff,0x47,0x7b,0xc8,0xac,0x5f,0x90,0x61,0x34,0x76,0xa8,0xaf,0xea,0xc3,
- 0x4e,0xfa,0xf9,0xca,0x1e,0xfe,0xc9,0xf6,0x1f,0x6d,0x8f,0x0e,0x68,0xa7,0x94,0x5b,
- 0x41,0x1a,0x31,0x01,0x96,0xbe,0x1b,0xdd,0xac,0xf5,0x29,0x57,0x25,0xaa,0x47,0xa7,
- 0x51,0x90,0xbd,0x0a,0x57,0x17,0xe7,0x3b,0xfd,0xbb,0x3a,0xa5,0xcd,0xa8,0x4f,0xdb,
- 0x40,0x17,0xbb,0x01,0xd6,0x29,0x89,0x23,0x66,0x4b,0x2a,0x79,0x14,0x99,0x5f,0x25,
- 0x8b,0xf3,0x6d,0x3e,0x4c,0x6d,0x13,0x52,0x49,0x8f,0x5a,0x2b,0xe3,0x41,0x1f,0xd8,
- 0xc6,0x80,0x4e,0x01,0x51,0x9d,0xeb,0x13,0x40,0x3a,0xf4,0xc2,0x4c,0xd8,0x45,0x2c,
- 0x90,0xcc,0xa3,0x7b,0x73,0xbd,0xb0,0x5e,0x91,0x08,0xba,0x17,0xf5,0xaa,0xeb,0x41,
- 0xe2,0xfa,0x77,0xf5,0x5e,0xb7,0x18,0xdd,0x45,0xd6,0xb4,0xe3,0x1d,0xd2,0x16,0xd4,
- 0x57,0xdc,0xa0,0x26,0xc7,0xa4,0x6f,0xa2,0x3e,0x62,0x80,0x2d,0x39,0x03,0x70,0xe3,
- 0x19,0xd5,0x34,0x55,0x91,0x71,0x04,0xd1,0xff,0xa4,0x43,0x4a,0xa9,0x00,0x64,0x00,
- 0xa0,0x20,0x6f,0x03,0xe2,0xde,0xef,0x68,0x0f,0xde,0x88,0x52,0xa4,0x9b,0x5a,0x58,
- 0xdc,0x88,0x64,0x92,0x01,0x65,0x08,0x37,0x50,0x8b,0x91,0x51,0x95,0x3c,0x56,0x91,
- 0x0c,0x99,0xb4,0xc2,0xf7,0x5f,0x29,0xad,0xce,0xad,0x1d,0x5e,0xd7,0x8c,0x6b,0xa4,
- 0x4c,0x2e,0x3b,0xbc,0x56,0x96,0xaa,0x24,0x8d,0x64,0xd5,0x44,0x73,0x32,0x62,0x82,
- 0x96,0x24,0x70,0xf3,0x53,0x8f,0xa6,0xc1,0xba,0x62,0x32,0x8b,0x63,0x68,0x03,0xac,
- 0x23,0xf1,0x01,0xa9,0x0f,0xad,0x81,0xb5,0xc5,0x64,0x5a,0xfa,0x73,0x14,0x65,0x60,
- 0x09,0x76,0x5e,0xbf,0xa8,0xf5,0x61,0x16,0xa0,0x16,0x30,0xa1,0xc6,0x86,0x5a,0x3e,
- 0x0d,0xa9,0x74,0x2c,0x1d,0xa0,0x10,0xac,0x20,0x4c,0x4d,0x03,0x03,0xd0,0xee,0xf6,
- 0x1f,0xd5,0x23,0x32,0x0c,0x82,0x4a,0x52,0xaa,0x01,0x1a,0x88,0xac,0x5a,0x2d,0x72,
- 0x43,0x85,0x05,0xda,0xb9,0xf9,0x51,0xa4,0x39,0xe8,0xcf,0x60,0xbd,0x56,0x4f,0xa4,
- 0x7e,0x0a,0x9e,0xd4,0x66,0x15,0x24,0x1d,0x9d,0x84,0xbf,0x85,0x64,0x41,0x52,0x4d,
- 0xc0,0xdf,0xaf,0x16,0xd5,0xe1,0x24,0x2c,0x86,0x18,0x99,0x66,0xfc,0x5e,0xaa,0x44,
- 0xa2,0x1b,0x51,0x2f,0x99,0xc9,0x2a,0x38,0x6d,0x04,0x13,0x70,0xeb,0x27,0x83,0xd3,
- 0x8f,0xc4,0xd4,0x0e,0xfa,0x9f,0x2b,0xe8,0x58,0xd5,0xa8,0xac,0x1c,0xc6,0xe9,0x1c,
- 0x6b,0x51,0x0e,0x03,0x05,0x69,0x0a,0xb8,0xdf,0x8b,0x7e,0xd2,0xf4,0x9d,0x2a,0xca,
- 0x56,0x86,0x05,0x8a,0x36,0x18,0x73,0x5a,0xb8,0xf5,0x13,0x41,0x69,0xb2,0x4a,0xad,
- 0x93,0x13,0x83,0x26,0x88,0x25,0x0e,0xa3,0x74,0x71,0x55,0x7a,0x8d,0x8c,0x7f,0x89,
- 0xd2,0x23,0xab,0x54,0x0a,0xb8,0xfe,0xa3,0x19,0x49,0xcf,0xd1,0x45,0xc5,0x96,0xa5,
- 0x09,0x92,0x83,0x92,0x3e,0xd2,0x9b,0xa6,0xe0,0x61,0xa4,0x9a,0x80,0xc4,0xdd,0xf9,
- 0xc9,0xb0,0x09,0x73,0xa6,0x90,0x81,0xc3,0x14,0xc4,0xe8,0x8d,0xc0,0x20,0xb6,0x00,
- 0x7f,0xbf,0xab,0xb1,0x9e,0x4b,0xa9,0xdd,0x3d,0xb0,0x13,0xf4,0xdc,0xd5,0x6a,0x77,
- 0x8c,0xde,0x6f,0x3f,0xbb,0xdf,0x9e,0xf8,0x4e,0xac,0x9a,0x80,0xef,0xaf,0x4b,0xbd,
- 0x68,0x3d,0x5d,0x08,0x74,0x6d,0x59,0x80,0xb5,0x74,0x43,0x9c,0xac,0xd3,0x25,0x19,
- 0x18,0x48,0x6a,0xdc,0xfa,0xa9,0x40,0x5f,0x27,0x6b,0x75,0x69,0x37,0xae,0x40,0xed,
- 0x24,0xab,0xe3,0x94,0x64,0x82,0x04,0x07,0x9c,0xd7,0x65,0xda,0xbf,0xd6,0xd8,0x46,
- 0x22,0x1a,0xec,0xa4,0x8f,0x40,0x7b,0x83,0xf1,0x2c,0xe0,0x3c,0x7d,0x28,0x7a,0x70,
- 0x2d,0x6d,0x31,0x00,0xd7,0x7f,0xb4,0x3b,0x12,0x27,0x79,0xbd,0x41,0x81,0xee,0x28,
- 0xfb,0x47,0xc9,0x54,0x35,0x03,0x27,0xf4,0x45,0x14,0x4c,0xb3,0x00,0x37,0x9e,0xd1,
- 0x6e,0x69,0x73,0xae,0x4f,0xdf,0x90,0x92,0x8e,0x52,0xb0,0x47,0xff,0xeb,0xd4,0x2c,
- 0x06,0x4e,0xe9,0x0f,0x52,0xfb,0x60,0x83,0xa2,0x7b,0xfe,0xa5,0xab,0x1b,0x6d,0x26,
- 0xa7,0xf4,0x5b,0x53,0xd5,0x47,0xa3,0x26,0x90,0x18,0xe8,0xd3,0xaf,0xa2,0x2d,0xd3,
- 0x2c,0x50,0x44,0x5c,0x7f,0xf3,0xfa,0xbd,0x70,0xd4,0xfa,0x47,0x0a,0x03,0x31,0xbd,
- 0x83,0x5e,0x1f,0x1a,0x72,0xf5,0x0c,0x14,0xe3,0xdc,0xfa,0x41,0x2a,0xf4,0xd0,0x27,
- 0x06,0x6c,0xb3,0x23,0x1d,0xa6,0xa0,0x4f,0xbd,0xca,0x34,0x44,0xab,0x18,0x20,0xae,
- 0xff,0x94,0x4e,0xe3,0xbd,0xa4,0x57,0x9f,0x99,0x4a,0x6c,0x03,0x06,0x2a,0x52,0xc9,
- 0x6d,0xcc,0xfe,0xe8,0xeb,0x53,0xd2,0x36,0xa9,0xc1,0x04,0xc4,0xbd,0x7a,0xbb,0xb6,
- 0x28,0x8d,0x56,0xc1,0x1a,0xc0,0x45,0x69,0x00,0xf5,0xc1,0x06,0x48,0x72,0x20,0x6d,
- 0x01,0x77,0x3c,0xed,0x1d,0x44,0x1d,0x96,0x9b,0x23,0x55,0x74,0xfd,0xe8,0xf4,0xa1,
- 0xac,0x90,0x11,0x07,0x54,0x13,0x10,0x6e,0x7e,0x56,0xe6,0xf5,0x67,0xe8,0xfa,0xa9,
- 0x62,0xab,0x2b,0x27,0xab,0x19,0x59,0xe1,0x80,0x6e,0x02,0xbe,0x7f,0x46,0xca,0x8e,
- 0xac,0x5d,0xb0,0x4e,0x7e,0x84,0x5a,0x9b,0x5c,0x56,0xa5,0xf6,0x87,0x82,0x3c,0x35,
- 0x3b,0x72,0x32,0x8a,0xb2,0xc4,0x00,0xc0,0xcd,0x4f,0x15,0xca,0x8e,0xad,0x4d,0x27,
- 0x65,0xdc,0x81,0xb2,0xc5,0xb5,0x6a,0x32,0x26,0x19,0x20,0x4d,0x41,0x06,0x0c,0x20,
- 0x4b,0xce,0xec,0xb0,0x8f,0xa6,0x29,0x0a,0xc6,0x88,0x32,0xce,0x0c,0xb3,0x36,0x86,
- 0x09,0x34,0x01,0xb8,0x80,0x1b,0x4f,0xa4,0x91,0x90,0x61,0xb5,0x67,0x77,0x24,0x02,
- 0x84,0xe5,0xb1,0x92,0x5d,0x50,0x61,0x01,0x6e,0x3c,0x5d,0xda,0x34,0x1d,0x51,0x6b,
- 0x1f,0x4d,0x10,0x89,0x81,0x99,0x30,0x8b,0xd8,0xf6,0xc7,0x05,0xee,0xfd,0x8e,0x6a,
- 0xe6,0x36,0x11,0xcd,0x93,0x28,0x05,0x68,0x31,0x48,0xc5,0xa8,0x8e,0xfb,0xe0,0x2a,
- 0x66,0x7f,0x54,0x30,0x01,0x3f,0x7e,0xcb,0x68,0x10,0x82,0x19,0xe8,0xa0,0xcf,0x13,
- 0x4e,0xa3,0x14,0x7d,0xb0,0x94,0x22,0xa8,0x0c,0x60,0x0a,0xdc,0x0f,0x36,0xfb,0x6b,
- 0xf4,0xa9,0x99,0x0f,0x31,0x2d,0xda,0x0b,0xbb,0xe0,0x16,0xa8,0x84,0x88,0x06,0x27,
- 0x60,0x0e,0x03,0xcc,0x22,0x71,0xfd,0x73,0xf3,0xb5,0x55,0xd9,0xba,0xc2,0xae,0x51,
- 0x44,0x81,0x56,0x97,0x48,0x50,0xd0,0xbe,0x2a,0xbb,0x26,0x81,0x8f,0xda,0x80,0xef,
- 0xdf,0x24,0x6d,0x1a,0xf9,0x46,0x7a,0xfd,0x90,0xd4,0x84,0xef,0x63,0x60,0x47,0xf2,
- 0x07,0x66,0xcb,0x8e,0xe4,0x8f,0x91,0x05,0x88,0x30,0x1e,0x83,0xfa,0x6b,0x26,0x19,
- 0xcc,0x46,0xb2,0x74,0x3c,0x73,0xcc,0xf1,0x14,0xb0,0x35,0x1e,0xe1,0x7e,0x3b,0xf5,
- 0x78,0x0a,0x77,0xd3,0xdf,0xab,0xd3,0xdc,0xc8,0xe2,0x43,0x78,0x63,0x3c,0x95,0xef,
- 0x6e,0x88,0x93,0x7e,0x1b,0x70,0xdd,0xd1,0x5f,0x66,0xe3,0x6b,0xf1,0x3a,0x84,0x35,
- 0xe9,0xeb,0x06,0x90,0x3a,0xbb,0xb2,0xb0,0x16,0x27,0x21,0xa9,0x75,0x65,0xd3,0x14,
- 0xa0,0x24,0xbf,0x1e,0xe4,0x86,0x88,0xac,0x0d,0x2a,0x6a,0x5e,0x6e,0xc8,0xc8,0x59,
- 0xba,0x36,0x1f,0x91,0x51,0xa6,0x39,0x3b,0x98,0x50,0x25,0xb9,0x61,0xb5,0x9c,0xdd,
- 0x9e,0x50,0x1f,0xe1,0x87,0x53,0x85,0x23,0x39,0x6d,0x58,0x6b,0x56,0xaa,0x50,0x84,
- 0x68,0xc3,0x4a,0x33,0xae,0x8a,0x53,0xb0,0x9f,0x01,0xd5,0x6a,0xe1,0xfb,0xc7,0x2a,
- 0xea,0xd0,0xae,0xe2,0xbd,0xe9,0xd4,0xaa,0x28,0xdd,0x16,0x0f,0x2f,0x4a,0x57,0x33,
- 0x70,0xa2,0xc8,0xc0,0xdc,0x3a,0x03,0x7c,0x8f,0x1f,0x4f,0xa5,0xb4,0xa5,0xbd,0xaf,
- 0x60,0xee,0xfe,0x68,0x0f,0xdd,0xfd,0x67,0x31,0x70,0xaa,0xf0,0xa0,0xd9,0x72,0x8a,
- 0x50,0xc0,0xcf,0xff,0xf4,0x95,0x99,0xdf,0x14,0x5e,0xd9,0x7b,0x53,0xe5,0x8d,0x0c,
- 0xbc,0xbc,0xf7,0xa6,0x15,0xd3,0x57,0xaf,0x3c,0xbe,0xf3,0x95,0x39,0x3f,0xa9,0x9c,
- 0x9e,0x59,0x79,0x82,0x81,0x1b,0xf8,0xf1,0x2c,0xfb,0xce,0xdd,0x57,0xfe,0xed,0xd0,
- 0x27,0x1f,0x5c,0x68,0x63,0xe0,0xc0,0x27,0xe7,0x2e,0x2c,0xbb,0x7c,0xcf,0x7b,0x4f,
- 0x5c,0x99,0xb8,0x74,0x61,0xd9,0xb7,0xef,0xb9,0xc2,0xc0,0x25,0xf8,0x5f,0x7c,0x96,
- 0x3f,0x5d,0x39,0x37,0xb3,0xa2,0xb0,0xb3,0xff,0xba,0x0b,0x33,0x7e,0xd4,0x71,0xa5,
- 0xf0,0x59,0xff,0xf2,0xef,0xaf,0xf8,0xce,0x3b,0x2b,0x0a,0x4f,0x5d,0x6a,0xbb,0xb2,
- 0xe2,0xfa,0x77,0x56,0x7c,0xf2,0xd4,0x04,0xdf,0xbf,0xed,0xdb,0x77,0xbf,0xf7,0xc4,
- 0x81,0x89,0x0f,0xdc,0x61,0x98,0x03,0x9b,0x38,0x47,0xfb,0xdf,0xfd,0x9e,0x31,0x42,
- 0xbe,0x7f,0xd3,0xec,0x9e,0xf7,0x76,0xde,0x3a,0xb1,0xe3,0xde,0x65,0xec,0x0f,0x5f,
- 0x98,0xf8,0xe0,0x34,0x05,0xef,0xd6,0x1d,0xc8,0x7f,0x70,0xa1,0x29,0x65,0x80,0xb3,
- 0x7f,0x27,0x0c,0x68,0x70,0x40,0xdb,0xa3,0x5c,0xaf,0x54,0x17,0x29,0x3f,0xdc,0x03,
- 0x8b,0x71,0xe5,0x9b,0x91,0x01,0xad,0x5e,0xb9,0x3e,0x51,0x39,0x1a,0x19,0x68,0xdf,
- 0xc3,0x00,0x3f,0x9f,0xd8,0xe2,0x87,0xb9,0x23,0xd7,0xcd,0xa7,0x60,0x8d,0x92,0x64,
- 0xfc,0xf0,0x14,0xa3,0x85,0x16,0x51,0x54,0x84,0xf9,0xe7,0xf8,0xa1,0xce,0xd1,0x42,
- 0xb5,0x36,0x65,0x13,0xc5,0x14,0x26,0xc2,0x80,0x0c,0x92,0x16,0xcf,0x39,0xb4,0xcd,
- 0x01,0xdb,0xdc,0x16,0xf7,0x23,0x77,0x6e,0xa9,0x8c,0x0d,0x76,0x20,0x18,0xeb,0x5c,
- 0x80,0xea,0xf3,0x77,0xa8,0xf1,0x31,0xbc,0x05,0xd5,0x13,0x13,0x80,0x01,0x8a,0xc2,
- 0xf5,0x37,0xb2,0x3d,0x51,0x22,0x39,0xca,0xba,0xc4,0xeb,0x5b,0x40,0x16,0xae,0x0f,
- 0xd4,0xde,0xd1,0xc7,0x6a,0x13,0xe5,0x87,0x1b,0x19,0x3f,0x54,0x95,0xdd,0x78,0x0e,
- 0x03,0x5b,0x95,0x3d,0x98,0x3d,0xaa,0x19,0x5d,0x78,0x47,0xbb,0x19,0xaf,0xcc,0xcd,
- 0x1c,0xee,0x7a,0x2d,0x7e,0x03,0xfe,0x46,0xae,0x76,0xb8,0xf3,0xb9,0xf8,0x3c,0xdc,
- 0x53,0xb4,0xc0,0x4a,0x62,0x00,0x6e,0xf4,0xc5,0x19,0x50,0x07,0x89,0xe3,0xd2,0x2e,
- 0xa8,0xa1,0x46,0x2b,0x71,0x1c,0x9c,0xdd,0xc6,0x00,0x28,0xc1,0x80,0xe6,0xfe,0x41,
- 0x31,0x46,0xdf,0x64,0xe9,0x9b,0x71,0x2f,0xb0,0x33,0x3a,0xec,0x4d,0x14,0x29,0xd0,
- 0x89,0x62,0xb4,0x05,0xcd,0x34,0x5f,0x9a,0x35,0xe4,0xba,0x8f,0xe4,0x62,0x4f,0xa4,
- 0x16,0x88,0xa2,0x62,0xf3,0x4d,0x55,0xb1,0x5e,0x30,0xf3,0xe2,0x2b,0x27,0xd7,0x5f,
- 0xc3,0xba,0x69,0x2d,0x99,0xa1,0x4f,0x51,0x8b,0x8f,0x88,0xd5,0x12,0x77,0x81,0xd3,
- 0x5f,0x41,0x5a,0x44,0x87,0xdd,0x30,0x97,0xd9,0x2c,0x13,0x54,0x32,0x90,0x32,0x00,
- 0x58,0x2d,0x83,0xce,0xf0,0x35,0xc6,0x0f,0x29,0x29,0x6a,0x5f,0x45,0xf7,0x3b,0x9b,
- 0x16,0x52,0xb0,0xc3,0xe1,0x87,0x0c,0xb8,0xfb,0x29,0xbb,0x73,0x3f,0x3f,0x5c,0x60,
- 0x01,0xcd,0x69,0x71,0xae,0x4f,0xef,0x29,0x6d,0xb1,0x35,0x1b,0x1c,0x66,0xd9,0x3c,
- 0x4d,0x60,0xb5,0xb8,0x7c,0x83,0x8d,0xc7,0xe0,0x6f,0x74,0x77,0xb6,0x40,0x9c,0x82,
- 0x11,0x1b,0x98,0x2d,0x2e,0x3f,0xd4,0x90,0x9f,0x1f,0x32,0x50,0x2f,0xb4,0xb8,0xeb,
- 0x21,0x8b,0xec,0xeb,0x03,0x7f,0x7d,0xba,0xad,0x0b,0xd7,0xe7,0xe6,0x47,0xc3,0x59,
- 0x94,0x80,0x2e,0x4a,0xfd,0x2d,0x10,0xa7,0x00,0x3a,0x0d,0x30,0xc7,0x6a,0xc9,0x38,
- 0xe3,0xe9,0xa1,0xeb,0xb6,0x9d,0xd4,0xeb,0x52,0x8a,0x3e,0x1d,0x9b,0x89,0x42,0xf9,
- 0x21,0x62,0x2d,0x22,0x70,0x97,0x4f,0x0f,0x0b,0x29,0xa1,0xbf,0xb9,0x29,0x61,0x10,
- 0xba,0x5e,0x8c,0x77,0xa5,0x9c,0xf9,0xd2,0x24,0x19,0xfc,0x50,0xee,0x04,0x6e,0x3c,
- 0xeb,0x29,0x1b,0xcc,0xeb,0xd7,0x65,0x61,0x3d,0x25,0x8a,0xbf,0x36,0x68,0xa1,0xc3,
- 0x0f,0x91,0xcd,0x0f,0xdd,0xfd,0x1d,0x75,0xe3,0xcd,0x94,0xa4,0x6d,0x48,0xc5,0x8f,
- 0x1a,0xe0,0x8e,0x20,0xc0,0xfd,0x5e,0xa8,0x3b,0xb2,0x99,0xec,0xd1,0xaf,0x4f,0x55,
- 0x1e,0x35,0xc0,0xad,0x26,0xa8,0x77,0x5b,0xae,0x4f,0x71,0xfb,0x7b,0xd6,0xe6,0x87,
- 0x29,0x8b,0x1f,0xae,0x31,0x69,0xe7,0x0e,0x7d,0x83,0x09,0xd8,0x57,0x89,0xc3,0xdc,
- 0xfa,0xa9,0x45,0x06,0x3f,0xa4,0xbb,0x27,0xb5,0x36,0x2b,0xd4,0x99,0xcc,0x10,0xcd,
- 0xa1,0x3f,0x53,0x6d,0x0f,0x2e,0x18,0xf6,0x47,0x61,0xfc,0xd0,0x5d,0x3f,0x73,0x29,
- 0x2d,0x4c,0xe9,0x15,0xbb,0xe1,0x47,0x14,0x5c,0x43,0xf9,0x21,0x62,0x44,0x51,0xb6,
- 0x41,0x8a,0x01,0xb7,0x3f,0xe5,0xf3,0x78,0x2b,0xaa,0x81,0x8e,0x41,0x18,0xce,0x2f,
- 0x41,0xb3,0xa1,0x83,0xc4,0xc7,0x69,0xcb,0x6c,0xb8,0x83,0x03,0xdc,0x7a,0x46,0xab,
- 0x41,0x67,0xfc,0x70,0x25,0xec,0x24,0x2a,0xb9,0x3a,0x1d,0x61,0xb4,0xb0,0x9f,0xd1,
- 0xc2,0x1e,0xb4,0xd3,0x26,0x8a,0xdc,0x78,0xe8,0xfa,0x51,0x73,0xa9,0x66,0xca,0x0f,
- 0xb7,0xb3,0x65,0x33,0xdc,0x2d,0xf0,0x43,0x0b,0xf0,0xeb,0x27,0x83,0xb5,0xb7,0x12,
- 0x0b,0xba,0x64,0x25,0x82,0xb3,0x39,0x25,0xdd,0x25,0xc7,0x23,0x58,0xa3,0xcf,0x7d,
- 0xa7,0x01,0x72,0x06,0x00,0x6e,0x7e,0xa8,0x7d,0x2e,0x26,0xd2,0xf4,0xcd,0xe3,0x31,
- 0x4a,0x90,0x12,0xc3,0x28,0x86,0x3a,0x20,0x4b,0x68,0x0b,0x05,0x6a,0xb6,0x68,0x00,
- 0x8d,0x9b,0x1f,0x19,0x14,0x93,0x1f,0x82,0x46,0xdf,0x46,0x01,0x19,0xfc,0x10,0x99,
- 0x44,0x51,0xb3,0xf9,0x21,0xca,0xba,0xe3,0x69,0x8c,0x30,0x7e,0x58,0x45,0xa2,0x8d,
- 0x94,0x93,0x35,0x36,0xf0,0xfc,0xd0,0x06,0xa0,0xb8,0xf3,0xa3,0xe5,0x0d,0x23,0x13,
- 0xb5,0xec,0x8f,0x60,0x76,0x1c,0xe0,0x48,0x82,0xb4,0xff,0x60,0x3f,0x3c,0x0d,0x15,
- 0x1d,0x72,0x61,0x50,0xc7,0x4f,0xc3,0x5f,0x99,0xf6,0x47,0x66,0x66,0xa7,0xe0,0x58,
- 0x24,0x6e,0x7e,0x74,0xbc,0xc4,0xf8,0xbd,0x08,0xfb,0xbd,0x6a,0xe4,0x0e,0xa2,0x8c,
- 0xc3,0x12,0xb4,0x1d,0x18,0x30,0xbf,0x22,0x9c,0xfd,0xc9,0xd2,0x1b,0xfc,0x5a,0xb6,
- 0x66,0x6d,0xf4,0x49,0xf8,0xa1,0x99,0xe6,0x15,0xc3,0x08,0x05,0x32,0x03,0x6f,0x52,
- 0x80,0x19,0xe0,0xd6,0x33,0xe5,0x6f,0x8b,0x8a,0xd5,0xd9,0x28,0xa3,0x6d,0xf3,0xb5,
- 0x6a,0x2d,0x9a,0x80,0x51,0x4a,0x2c,0xe5,0x2c,0x05,0xbf,0xa6,0x2d,0x31,0x06,0x0e,
- 0x73,0xe3,0xe9,0x60,0xd6,0x26,0xdd,0x9d,0x82,0x87,0x0d,0x50,0x11,0x8b,0x9b,0xa0,
- 0x3b,0x16,0x7f,0xca,0x06,0xbc,0xfd,0xd1,0xa0,0x89,0x5a,0xe9,0x08,0xf6,0x9a,0x70,
- 0x11,0xb8,0xeb,0xa7,0xc7,0xe6,0x87,0xf9,0x4e,0xca,0x06,0x71,0x45,0x43,0x7c,0xa8,
- 0xd3,0xa2,0x85,0xbb,0xb1,0x8f,0x1f,0x52,0xfb,0xd3,0xb9,0x36,0x9e,0xec,0xec,0x6a,
- 0x57,0x94,0xfe,0x6c,0x3c,0x81,0x25,0x14,0xd7,0x3a,0xb3,0x4a,0x02,0x9b,0x86,0x88,
- 0xb6,0x74,0xd1,0x16,0x77,0x3c,0x98,0x2d,0x40,0x47,0x77,0x50,0x06,0xbb,0xe8,0x92,
- 0x04,0x73,0x6d,0x22,0x07,0xb8,0x8f,0x0b,0x60,0x46,0x0b,0x81,0xf2,0x43,0xa8,0x02,
- 0xc6,0x06,0xa1,0x99,0xb5,0xe4,0x18,0xe8,0x74,0x18,0x23,0x35,0x7e,0xce,0x78,0xee,
- 0x8a,0xae,0xd1,0xf2,0xc7,0x1b,0x6e,0x81,0xbb,0x22,0x75,0xda,0x09,0x0a,0xaa,0xef,
- 0x42,0x6b,0x28,0x98,0x4f,0x41,0x94,0x81,0x45,0xb7,0x70,0xf6,0x87,0xde,0xaf,0xb6,
- 0xa5,0xbd,0xbe,0x70,0x47,0x63,0xfc,0xad,0x4e,0x97,0x06,0x50,0xb0,0x81,0x02,0x70,
- 0xf8,0x80,0xbb,0xa2,0x6f,0xb4,0xf9,0xe1,0xf4,0x95,0x2b,0x19,0x3f,0xfc,0xc9,0x7d,
- 0x37,0x1a,0xfc,0x70,0xaf,0xc1,0x0f,0x7f,0xc3,0xc0,0x8a,0xff,0x69,0xdf,0xfe,0x51,
- 0x10,0x86,0xa1,0x38,0x8e,0x47,0xfc,0x83,0x83,0x9b,0xbb,0x8b,0x1e,0x20,0xce,0x1d,
- 0x2a,0x38,0xb9,0xd4,0xdd,0xbb,0x68,0x3d,0x82,0x78,0x01,0x3d,0x8d,0x17,0x10,0x5c,
- 0x45,0x70,0xd0,0xbd,0x20,0x0e,0x52,0xfb,0x5e,0x5b,0x6d,0x1d,0x0a,0xed,0xa0,0x20,
- 0xdf,0xcf,0xd2,0x10,0x92,0xf0,0x96,0xc0,0xef,0x51,0x92,0xa9,0xdf,0xb8,0x69,0x3e,
- 0x74,0xfc,0xa9,0xe4,0xc3,0xf0,0xe1,0x6a,0x30,0x0b,0xe2,0x7c,0xb8,0x0f,0x83,0x30,
- 0x97,0xc7,0xca,0xd2,0x58,0x78,0x5d,0x45,0xc7,0xde,0x93,0xa0,0x38,0xd8,0x4c,0x64,
- 0xa0,0xf9,0x50,0x67,0xe6,0xd9,0xf5,0x1a,0x0b,0x6f,0x67,0x29,0x23,0x0d,0x8a,0xbe,
- 0x0e,0xe2,0x7c,0x28,0x33,0xb9,0xbc,0xea,0xa4,0xf9,0xb0,0xdf,0xf3,0x8e,0xeb,0xa1,
- 0xac,0x5f,0x78,0xbb,0xae,0x6c,0x7c,0x45,0xcd,0xea,0xd5,0xdb,0xa8,0xc5,0x8a,0xae,
- 0x75,0xf4,0x1d,0x77,0xaa,0x9f,0x02,0x00,0x00,0x00,0xe0,0xdf,0x69,0xef,0xd0,0xa0,
- 0x77,0x00,0x00,0x00,0x00,0x50,0x4c,0x7b,0x87,0x16,0xbd,0x03,0x00,0x00,0x00,0x80,
- 0x62,0xda,0x3b,0xb4,0xb5,0x77,0xf8,0x75,0x29,0x00,0x00,0x00,0x00,0xbe,0xc8,0xca,
- 0xfb,0x38,0x73,0xb8,0x58,0xb3,0x94,0x57,0x2b,0x75,0x6b,0x46,0xa5,0xff,0x27,0x24,
- 0x7b,0x9b,0xd6,0x6c,0x6b,0xef,0x33,0x4f,0xb3,0xcf,0x75,0x4f,0xaa,0x75,0xf0,0xc5,
- 0xf1,0x33,0x01,0x00,
diff --git a/board/esd/plu405/plu405.c b/board/esd/plu405/plu405.c
deleted file mode 100644
index 37b92fb65a..0000000000
--- a/board/esd/plu405/plu405.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-extern void lxt971_no_sleep(void);
-
-/* fpga configuration data - gzip compressed and generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-/*
- * include common auto-update code (for esd boards)
- */
-#include "../common/auto_update.h"
-
-au_image_t au_image[] = {
- {"plu405/preinst.img", 0, -1, AU_SCRIPT},
- {"plu405/u-boot.img", 0xfffc0000, 0x00040000, AU_FIRMWARE},
- {"plu405/pImage_${bd_type}", 0x00000000, 0x00100000, AU_NAND},
- {"plu405/pImage.initrd", 0x00100000, 0x00200000, AU_NAND},
- {"plu405/yaffsmt2.img", 0x00300000, 0x01c00000, AU_NAND},
- {"plu405/postinst.img", 0, 0, AU_SCRIPT},
-};
-
-int N_AU_IMAGES = (sizeof(au_image) / sizeof(au_image[0]));
-
-
-/* Prototypes */
-int gunzip(void *, int, unsigned char *, unsigned long *);
-
-
-int board_early_init_f (void)
-{
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF99); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-
- return 0;
-}
-
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- volatile unsigned char *duart0_mcr = (unsigned char *)((ulong)DUART0_BA + 4);
- volatile unsigned char *duart1_mcr = (unsigned char *)((ulong)DUART1_BA + 4);
- unsigned char *dst;
- ulong len = sizeof(fpgadata);
- int status;
- int index;
- int i;
-
- dst = malloc(CFG_FPGA_MAX_SIZE);
- if (gunzip (dst, CFG_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
- printf ("GUNZIP ERROR - must RESET board to recover\n");
- do_reset (NULL, 0, 0, NULL);
- }
-
- status = fpga_boot(dst, len);
- if (status != 0) {
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("FPGA: %s\n", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=20; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc ('\n');
- do_reset(NULL, 0, 0, NULL);
- }
-
- puts("FPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("%s ", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
-
- free(dst);
-
- /*
- * Reset FPGA via FPGA_DATA pin
- */
- SET_FPGA(FPGA_PRG | FPGA_CLK);
- udelay(1000); /* wait 1ms */
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);
- udelay(1000); /* wait 1ms */
-
- /*
- * Reset external DUARTs
- */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_DUART_RST); /* set reset to high */
- udelay(10); /* wait 10us */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_DUART_RST); /* set reset to low */
- udelay(1000); /* wait 1ms */
-
- /*
- * Set NAND-FLASH GPIO signals to default
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~(CFG_NAND_CLE | CFG_NAND_ALE));
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_NAND_CE);
-
- /*
- * Enable interrupts in exar duart mcr[3]
- */
- *duart0_mcr = 0x08;
- *duart1_mcr = 0x08;
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming PLU405");
- } else {
- puts(str);
- }
-
- putc ('\n');
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-
- return 0;
-}
-
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-
-#ifdef CONFIG_IDE_RESET
-void ide_set_reset(int on)
-{
- volatile unsigned short *fpga_mode =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL);
-
- /*
- * Assert or deassert CompactFlash Reset Pin
- */
- if (on) { /* assert RESET */
- *fpga_mode &= ~(CFG_FPGA_CTRL_CF_RESET);
- } else { /* release RESET */
- *fpga_mode |= CFG_FPGA_CTRL_CF_RESET;
- }
-}
-#endif /* CONFIG_IDE_RESET */
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand_legacy.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- nand_probe(CFG_NAND_BASE);
- if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
- print_size(nand_dev_desc[0].totlen, "\n");
- }
-}
-#endif
-
-
-#ifdef CONFIG_AUTO_UPDATE_SHOW
-void board_auto_update_show(int au_active)
-{
- if (au_active) {
- printf("\n Dies ist die board-funktion: Updating!!!\n");
- } else {
- printf("\n Dies ist die board-funktion: Updating done!!!\n");
- }
-}
-#endif
diff --git a/board/esd/plu405/u-boot.lds b/board/esd/plu405/u-boot.lds
deleted file mode 100644
index 43f776579e..0000000000
--- a/board/esd/plu405/u-boot.lds
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/4xx_enet.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/tasreg/Makefile b/board/esd/tasreg/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/esd/tasreg/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/tasreg/config.mk b/board/esd/tasreg/config.mk
deleted file mode 100644
index 69fd8b6b7c..0000000000
--- a/board/esd/tasreg/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (C) Copyright 2000-2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# Coldfire contribution by Bernhard Kuhn <bkuhn@metrowerks.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
-#
-
-TEXT_BASE = 0xffc00000
diff --git a/board/esd/tasreg/flash.c b/board/esd/tasreg/flash.c
deleted file mode 100644
index 13c07d2d33..0000000000
--- a/board/esd/tasreg/flash.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-/*#include <ppc4xx.h>*/
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* test-only: todo: Re-do sizing to get full correct info */
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE+CFG_MONITOR_LEN-1,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/tasreg/fpgadata.c b/board/esd/tasreg/fpgadata.c
deleted file mode 100644
index 611b521e72..0000000000
--- a/board/esd/tasreg/fpgadata.c
+++ /dev/null
@@ -1,5331 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x5a,0x90,0xc1,0x41,0x00,0x03,0x72,0x61,0x73,0x72,0x65,0x67,
- 0x2e,0x62,0x69,0x74,0x00,0xac,0xfd,0x7d,0x78,0x14,0xd7,0x95,0x2e,0x8a,0xaf,0xde,
- 0xd5,0x88,0x52,0x57,0x4b,0x5d,0x96,0x48,0x0e,0xb1,0x19,0x5c,0x6a,0x09,0xd2,0xe0,
- 0x96,0xd4,0x6e,0xb0,0x90,0x65,0xd1,0x2a,0x04,0x33,0xa3,0x00,0x13,0x34,0x9e,0xdc,
- 0xf3,0x78,0xe6,0xe4,0xe6,0xd7,0xf6,0x90,0x0c,0x93,0x43,0x3c,0xc4,0xf1,0x9d,0x4b,
- 0x1c,0x1f,0x67,0xab,0x5b,0x36,0x02,0x61,0xd3,0x60,0x32,0xc1,0x89,0x27,0xd3,0x7c,
- 0x24,0x66,0x6c,0x92,0x69,0x24,0x6c,0xc4,0x47,0xec,0x92,0xac,0x38,0xe2,0xc3,0xa0,
- 0x38,0x3e,0x09,0xb6,0x19,0xa7,0xf1,0xc8,0x8e,0x6c,0xcb,0xb6,0xf8,0x48,0x2c,0x21,
- 0x01,0x77,0xad,0xbd,0xab,0xba,0xab,0x05,0x73,0x7e,0x7f,0x9c,0xe3,0x3c,0x8f,0xb3,
- 0xbc,0xab,0xba,0xd4,0xbd,0x77,0xed,0xbd,0xd7,0xbb,0xdf,0xb5,0xde,0x05,0xc5,0x81,
- 0x51,0xf9,0x3f,0x00,0xcf,0xbd,0xa0,0x3d,0x70,0xef,0xb7,0x1e,0xf8,0xea,0xdf,0xd5,
- 0xdc,0xff,0xb7,0xab,0xe1,0x3e,0xd0,0xa2,0xdf,0x8a,0x46,0x22,0x5f,0xfb,0xbb,0x85,
- 0x77,0xd4,0xc1,0xdf,0xe2,0x7f,0x45,0x22,0x0b,0x6b,0x6f,0x8f,0xd6,0xde,0x5e,0x07,
- 0xab,0xa1,0xf8,0xf6,0x85,0x0d,0x0b,0x23,0x0d,0x0b,0xa3,0xf0,0x55,0x60,0x9b,0x97,
- 0x5d,0xc3,0x7f,0x9e,0x7d,0xea,0xff,0xfa,0x5a,0x04,0xb8,0x07,0x00,0xa6,0x47,0x3c,
- 0x71,0xfa,0xff,0x9b,0x22,0x1e,0xc3,0x03,0xbc,0xa9,0x3a,0x02,0x16,0xfd,0x37,0xd8,
- 0xd7,0x8b,0x23,0x60,0xb8,0xff,0xdb,0x13,0x01,0x13,0x5a,0xe1,0xa9,0x57,0xa0,0xcc,
- 0x80,0xff,0x9d,0x7f,0x3c,0xe0,0xe5,0xc2,0xf8,0x3f,0xf5,0x1c,0xf6,0xbf,0xf5,0x18,
- 0xfa,0x27,0xf5,0x7f,0xe8,0x39,0xfc,0xff,0xe8,0x73,0xca,0xff,0xb7,0x9f,0x63,0x89,
- 0x7f,0x97,0xfd,0xef,0x3e,0xc6,0xcb,0xe9,0xdf,0xd7,0xca,0xc0,0x07,0xf7,0x71,0x3d,
- 0x5d,0x14,0xf2,0xfc,0x00,0xbe,0xc6,0x3f,0x97,0x2e,0x5a,0x63,0x1b,0xde,0x35,0xee,
- 0x96,0x22,0xfe,0xb9,0xac,0x77,0x0d,0xcc,0x86,0x3f,0xe7,0x9e,0x34,0xac,0x97,0x46,
- 0xd6,0xbb,0xbe,0xa9,0x5f,0x3c,0xc7,0x9a,0x76,0x15,0x2e,0xf3,0x5a,0xcb,0xcf,0x15,
- 0x03,0x26,0x21,0x06,0x81,0xbe,0x64,0x26,0x35,0x64,0xdc,0xa5,0x96,0x0e,0x2a,0x55,
- 0xcb,0x5e,0x6f,0x6f,0xca,0x06,0x2e,0x24,0x47,0xf9,0x30,0xc4,0xfa,0xfc,0xa3,0x4a,
- 0x38,0x7d,0xda,0x88,0x0e,0xa0,0xd1,0x08,0xbd,0x6a,0xd4,0xf2,0x72,0x25,0x02,0xeb,
- 0xe8,0x39,0x5c,0xff,0x18,0x0e,0x43,0x8d,0x05,0x19,0x08,0xf3,0xbb,0x78,0xcd,0xb9,
- 0xce,0xa3,0xbe,0x9f,0x99,0xcf,0x59,0xf3,0x47,0x97,0xef,0x63,0xe1,0xc1,0x4e,0xa8,
- 0xc9,0x6a,0x93,0xec,0x63,0xe8,0xe4,0x35,0xd0,0xd2,0xce,0x0c,0xe8,0x80,0x20,0xa8,
- 0xdc,0x67,0x98,0x9b,0xcc,0x79,0x83,0x6a,0x07,0x33,0xbc,0x11,0x7a,0x4e,0xc7,0xb4,
- 0x93,0xd0,0x05,0x61,0x53,0x8d,0x30,0x30,0xba,0xf1,0x59,0x1a,0x30,0x0e,0x69,0x33,
- 0xa4,0xfb,0xb6,0x32,0x3f,0x7f,0x12,0xc2,0xd6,0x8a,0x08,0x3b,0x69,0xee,0xd6,0xc3,
- 0xd0,0xe1,0xc5,0xc1,0xe5,0x66,0xc8,0x3b,0xdf,0x43,0x06,0x18,0xfd,0xaa,0xde,0x1c,
- 0xf4,0x88,0xef,0x63,0x7d,0x66,0x1f,0x7d,0x9f,0xde,0x0e,0x68,0x0e,0xeb,0x3d,0x50,
- 0x63,0x6a,0x99,0xe0,0x3e,0x78,0x0e,0xe6,0x5b,0x2c,0xad,0x86,0x41,0x83,0x52,0x4b,
- 0xcb,0xb0,0x8f,0xa0,0x73,0x59,0x0d,0x84,0xf0,0xe3,0xad,0x1c,0x9e,0x85,0xe5,0xf4,
- 0xb6,0x74,0xc0,0xb3,0xd6,0xde,0x1d,0x2c,0xe2,0x8d,0x8b,0xee,0xfe,0xcc,0x08,0x5c,
- 0x6e,0x89,0x59,0xf8,0x45,0x42,0xc6,0x18,0xc4,0x58,0x80,0x2b,0x69,0x18,0x86,0x06,
- 0xf8,0xa2,0xbe,0xb4,0xc6,0x7c,0x0b,0x2f,0x05,0x32,0xca,0x30,0x7c,0x00,0x31,0x33,
- 0xdc,0xa3,0xd5,0xb0,0x01,0xfa,0xb3,0x19,0xa5,0xb6,0xef,0x98,0x11,0xb5,0xfc,0x9b,
- 0x14,0xf0,0x8a,0xef,0x93,0xf5,0x1c,0x55,0xaf,0x06,0x9b,0x86,0xf0,0xe6,0x4b,0x70,
- 0x0d,0x9a,0xac,0xc0,0x3a,0x65,0x12,0x8d,0xc5,0x56,0x20,0xab,0x9c,0x85,0x6b,0x56,
- 0x93,0x75,0xeb,0xa8,0x32,0x04,0x57,0xa0,0x89,0x07,0x06,0x94,0x0b,0x78,0xa9,0xce,
- 0x2a,0xe9,0x53,0x2e,0x78,0xaf,0xd2,0xcd,0x90,0x1c,0x03,0xf1,0x7d,0x4c,0x7d,0x1f,
- 0x5c,0x4e,0xff,0xa3,0x19,0xe8,0x2a,0x0f,0x15,0x9f,0x80,0x18,0xc7,0xef,0x03,0xfa,
- 0x20,0xd4,0x41,0x49,0x4a,0x09,0xc3,0x5b,0xd0,0x45,0xdf,0x67,0x99,0xe7,0x18,0x5e,
- 0xf2,0xf3,0xce,0xb4,0x72,0x02,0x70,0xbc,0x78,0x79,0x05,0xb3,0xf4,0xe8,0x40,0x4d,
- 0x87,0xa2,0x7b,0x0d,0x7a,0xce,0xc0,0xb4,0xb0,0x7a,0xc4,0xc2,0x41,0xe1,0x89,0x2a,
- 0xfc,0xc9,0xd4,0x3f,0xca,0x5a,0xe8,0x84,0xa0,0x55,0x92,0x66,0x61,0x2f,0x19,0xda,
- 0xa8,0xaf,0x0a,0x36,0xb2,0x9a,0x94,0xca,0xa7,0xc7,0xef,0xeb,0x4c,0xed,0x3a,0x53,
- 0xb2,0x91,0x55,0x40,0x47,0xeb,0xa2,0xd7,0x4a,0xb6,0xfb,0xa2,0xb8,0x00,0xd1,0xef,
- 0x9a,0xb6,0x12,0xc7,0xab,0x26,0xdd,0xe9,0x65,0x5e,0xe0,0x2c,0x6c,0xe2,0x78,0x99,
- 0xde,0x14,0xab,0x02,0x4d,0x67,0x27,0xa1,0x1b,0xd6,0x58,0x5a,0xa4,0xc8,0x0b,0x6d,
- 0x50,0x93,0x50,0xa9,0x7b,0x93,0xd6,0x5c,0x4b,0x85,0xe5,0xcd,0x09,0xce,0x83,0xe7,
- 0x7c,0xde,0xe6,0x7a,0x5c,0xc6,0xf0,0x9f,0xb8,0x67,0xb6,0xfa,0x42,0xa2,0x3a,0xad,
- 0xad,0x63,0x37,0xf3,0x0d,0xbc,0x7a,0xaf,0x76,0xe7,0xcd,0x8f,0xc0,0x16,0x6e,0x64,
- 0xb5,0x61,0xf6,0xb6,0xe7,0xdf,0xf8,0xbc,0xac,0x56,0xcf,0xfe,0x06,0x1e,0x4b,0x57,
- 0x7f,0x6d,0xe6,0x7a,0x36,0xdb,0x6a,0xf7,0xff,0xd8,0x28,0x5e,0x5f,0xf4,0x45,0x63,
- 0x0b,0x9f,0x33,0x34,0x6f,0x39,0x9b,0x29,0xbf,0x4f,0x8b,0xea,0x87,0x0b,0x89,0xf0,
- 0x6f,0x02,0x77,0x2a,0x73,0x21,0x09,0x8d,0xc3,0x01,0x50,0x4c,0x18,0x84,0x85,0x10,
- 0xd0,0x95,0x8f,0xe1,0x22,0x84,0xac,0xc0,0xed,0x8a,0x0a,0x09,0x1e,0x7b,0x30,0x7c,
- 0x20,0x51,0xdb,0xd7,0xa1,0x1f,0x30,0xfc,0x07,0x92,0x2b,0xa1,0xb7,0x2d,0x32,0x5c,
- 0x73,0xcb,0xd2,0x32,0xb9,0x60,0x98,0x7f,0x72,0x14,0x2e,0xeb,0xd8,0xf3,0x2f,0x2b,
- 0x63,0xe6,0x51,0x88,0x79,0x03,0xa3,0xda,0x59,0x98,0x80,0x98,0x55,0xb2,0x46,0x6b,
- 0x84,0xdf,0xc1,0x22,0xec,0xe7,0xf2,0x1e,0x76,0x15,0xc7,0x3d,0x70,0x5e,0x7b,0xd8,
- 0x9c,0x84,0xbb,0x60,0x7a,0x46,0xd9,0x07,0xe3,0xbc,0x69,0xb0,0x36,0xa5,0x0c,0x16,
- 0x89,0xf1,0xda,0x3b,0x6d,0x44,0x7c,0x6a,0x3a,0xc7,0xd1,0x39,0xc3,0xa3,0x71,0x3f,
- 0x28,0x69,0x75,0x0c,0x7a,0x8c,0x40,0x4a,0x0b,0x8b,0x4b,0x81,0x17,0x14,0xbc,0xc7,
- 0x13,0xf3,0xd0,0x1c,0x64,0x67,0x20,0xea,0x09,0xd3,0x64,0x1c,0x80,0x58,0xbf,0x9f,
- 0x57,0x7e,0x20,0xe7,0x57,0xcb,0x4d,0x4f,0xc3,0x41,0x6f,0xb5,0xa5,0x44,0x7c,0x50,
- 0x96,0x84,0x34,0x0f,0xad,0x63,0xb3,0x60,0x37,0x54,0x58,0x25,0x06,0x1a,0x07,0xa1,
- 0xda,0xd2,0xfe,0x31,0x31,0x08,0x07,0xd0,0x08,0x8d,0xb2,0x59,0xfa,0x06,0xbc,0xa4,
- 0xae,0x63,0x4f,0xc3,0x06,0xa8,0x1d,0x68,0x89,0xb3,0xd7,0xe4,0xfb,0x6c,0xc1,0x8f,
- 0xe0,0xf9,0x8e,0xea,0xac,0x86,0x7d,0x08,0x1b,0x78,0x45,0xb6,0x78,0x80,0xf5,0xc1,
- 0x1e,0x7e,0x9b,0xe1,0xbb,0xc7,0xf8,0x0a,0x1c,0xb4,0xc4,0xa5,0x6d,0x91,0x03,0x78,
- 0x4f,0xf1,0xfa,0xb2,0xd9,0x7a,0x12,0xef,0x51,0xeb,0xd9,0x57,0xe0,0x51,0x5e,0x9d,
- 0x55,0xef,0x61,0xa3,0x20,0xde,0x9f,0x96,0x19,0x27,0x8b,0xf7,0x2f,0x5f,0x6b,0x69,
- 0x20,0xa7,0x1e,0xee,0x50,0x6c,0x25,0x7e,0x1f,0xc3,0x2a,0x36,0xd8,0x17,0xa1,0x9b,
- 0x87,0x71,0xdc,0xd9,0x6b,0x70,0x80,0xcf,0x79,0xb7,0x98,0xbe,0xea,0x86,0xc1,0x8a,
- 0xd7,0xf1,0xfb,0x9c,0x65,0x8f,0xe2,0x14,0x0e,0x2d,0x4c,0xbc,0x26,0xe7,0xfb,0xf0,
- 0x67,0xf6,0xc2,0x1f,0xcd,0xa6,0x54,0x20,0xad,0xcc,0x87,0xe3,0x10,0xe5,0x25,0x69,
- 0x31,0x9b,0x1a,0x78,0x69,0x5a,0xf9,0x3a,0x5c,0x35,0xf1,0x0d,0x4f,0x2b,0x7b,0xe1,
- 0x32,0xbe,0xcf,0x25,0x69,0x2d,0xc4,0xf0,0x9e,0xb4,0x3f,0xad,0xac,0xc1,0x9b,0xf1,
- 0x0d,0x1f,0x52,0x2e,0xcb,0xdf,0xd5,0x02,0x59,0x10,0xd3,0xd3,0x9a,0x3e,0x6a,0x8e,
- 0x40,0x13,0xce,0x6f,0x25,0x05,0xc2,0x30,0x95,0xb4,0x39,0xa6,0xe2,0xca,0xc6,0x95,
- 0x51,0x5c,0xe2,0x9a,0x74,0xbc,0x34,0x0a,0x43,0x66,0x93,0x1e,0x30,0x95,0x8c,0x58,
- 0xf4,0x6a,0xdb,0xcb,0x5f,0x03,0xf1,0x7d,0x54,0x7d,0x08,0xc6,0xf5,0x88,0xe9,0xd7,
- 0xb5,0x2a,0xf5,0x0d,0x78,0xc4,0xc4,0xd7,0xa6,0x0a,0x7e,0x05,0x51,0x33,0x90,0x52,
- 0xf6,0xc0,0x46,0x98,0x4d,0xc6,0x10,0x9c,0x87,0x07,0xf0,0x1e,0xc5,0x6b,0x1e,0x6b,
- 0x89,0x7c,0xcd,0xbf,0x43,0xf1,0xc2,0xb1,0x54,0x74,0x99,0x7f,0xbb,0xd2,0x27,0x7f,
- 0x17,0xc7,0x2d,0xff,0x90,0x15,0x34,0x43,0xdf,0x5b,0xba,0x1a,0x3f,0x85,0xf3,0x8b,
- 0x3e,0xf5,0xaf,0x50,0x47,0xc6,0x6a,0xb6,0x11,0x5f,0x9b,0x15,0x29,0x36,0x04,0x87,
- 0x20,0xf8,0xa0,0xfa,0xcf,0x49,0xbc,0xc7,0xac,0x5b,0xa7,0x3e,0x95,0xfc,0x3b,0x73,
- 0xa3,0xb5,0x6b,0x5d,0xc9,0x3f,0xb1,0x2c,0xe8,0xf4,0x9c,0x99,0xd3,0xaa,0xf0,0x9e,
- 0x5d,0x66,0xcb,0x76,0xf6,0x25,0xf8,0x67,0xa8,0xc5,0x8f,0xb3,0x85,0xf0,0xcf,0x9e,
- 0xcf,0x9b,0x9d,0x83,0x6c,0x19,0x3e,0x90,0x9e,0x8c,0xcf,0xf9,0x39,0x54,0xb4,0x76,
- 0x0c,0xe2,0xa5,0xc7,0xd5,0xcf,0x37,0xab,0x83,0x45,0x0f,0x1a,0x6d,0x60,0x98,0x6a,
- 0x8a,0xbd,0x22,0xe7,0x85,0xea,0xf5,0xc2,0x21,0x6e,0x2c,0x57,0xef,0x4e,0xcc,0x78,
- 0xf7,0xd1,0x50,0xf5,0x72,0xed,0xee,0xc4,0xf6,0xf4,0x8f,0x43,0x73,0xd0,0x78,0x6c,
- 0x59,0xb6,0x0d,0x54,0x13,0x27,0xec,0xeb,0xe9,0xe7,0x43,0x3b,0x97,0xcf,0xbc,0x7b,
- 0xd3,0x97,0x77,0x3d,0x8a,0x97,0x42,0x77,0x6f,0xfa,0xd2,0xae,0x0d,0xa1,0xf4,0x40,
- 0x71,0x59,0xa2,0x4f,0xb8,0x1f,0xd0,0x53,0x12,0xc7,0x7e,0x0e,0xaa,0xfe,0x04,0xbb,
- 0x97,0x9f,0x31,0x6a,0xd5,0x40,0x82,0x19,0x68,0xd4,0xa9,0x81,0x3e,0xe5,0x5e,0xdc,
- 0x26,0x6a,0x20,0x90,0xd8,0x95,0xe5,0x63,0x15,0x86,0x1a,0x4e,0x28,0xc0,0x3b,0x8c,
- 0x85,0x78,0xb3,0x62,0xf2,0x93,0x15,0x51,0xc0,0x96,0x8f,0x15,0x31,0xdf,0x77,0xfc,
- 0x09,0xae,0x75,0xa1,0x97,0x96,0x07,0xba,0x92,0x43,0x7c,0x9c,0x26,0x11,0xf6,0x0f,
- 0x93,0xc6,0x5f,0x5d,0xe2,0x57,0x42,0xb2,0x05,0xc6,0xa7,0xc5,0x96,0x07,0xb6,0x25,
- 0x87,0xd2,0xe3,0xf3,0xa5,0xb1,0x07,0x2f,0x7d,0x31,0x30,0xa8,0xbc,0x57,0x24,0xe6,
- 0xc5,0x8e,0x69,0xb4,0x66,0x2e,0x30,0xb1,0x65,0x08,0x8e,0xc9,0xe7,0x54,0xc1,0xfb,
- 0x38,0x5e,0xa5,0x34,0x5e,0xc7,0xe4,0xc0,0x55,0xe9,0xe3,0x78,0x8f,0x9f,0x96,0x81,
- 0x57,0x3d,0x0b,0x70,0x3d,0x50,0x16,0x7a,0x7f,0x81,0x0b,0x03,0x6e,0x64,0x73,0xe5,
- 0xfc,0xaa,0xd7,0xb3,0x6a,0x0f,0xbe,0xcb,0x1a,0xc7,0x9e,0xdf,0x8b,0xbf,0x02,0x0d,
- 0x5a,0xe7,0x83,0xe0,0x47,0x83,0x3d,0x0b,0xf3,0xa1,0x94,0xe3,0x5b,0x77,0x18,0xe6,
- 0x73,0x1f,0x5d,0x7a,0x16,0x82,0x5c,0xe5,0x2c,0x24,0x36,0xb2,0x10,0x67,0xa5,0x72,
- 0xdc,0xd5,0x69,0xfd,0xb0,0x9f,0x1b,0xd8,0x99,0x65,0xfd,0x6a,0x1b,0x6e,0x64,0x9a,
- 0x8e,0xab,0xe8,0x4e,0xdc,0xc1,0x7c,0x3a,0x6b,0xc7,0x37,0x81,0x2e,0xb1,0xf6,0x19,
- 0xb7,0xd3,0xe8,0xe8,0x8c,0x16,0xc6,0xb8,0x63,0x18,0x4b,0x42,0x33,0x9b,0x99,0xdc,
- 0xbf,0x66,0x7e,0x66,0x8f,0x18,0x77,0x6d,0x5b,0xb0,0xdf,0xfb,0xaf,0x66,0x4d,0x4b,
- 0x31,0xad,0xa9,0x1b,0x21,0xb8,0x44,0xb5,0x0d,0x1a,0x5c,0x7c,0x7f,0x8c,0xf9,0xa6,
- 0x6f,0x1b,0xdb,0xc3,0x77,0x42,0xb0,0x45,0xdd,0x8e,0x5b,0xa4,0xb8,0x27,0xc3,0x8a,
- 0xe4,0xbc,0x48,0x7f,0x06,0xfb,0x10,0xa2,0x2d,0x81,0xed,0xd4,0x3f,0x56,0x2c,0x8e,
- 0xbd,0xe1,0xcd,0xf5,0x8f,0x79,0x6c,0x70,0x9b,0x39,0x3d,0xa5,0xfc,0x18,0xc6,0xcd,
- 0x07,0x5a,0xfd,0xdb,0x94,0x2a,0x7e,0xcc,0xec,0x6a,0x0d,0xa7,0xb4,0x2a,0x76,0xac,
- 0xa5,0xcb,0xf4,0x6f,0xd7,0x42,0x72,0xff,0x0a,0x79,0xf6,0xc0,0xf8,0xb6,0xd8,0x6a,
- 0x39,0x28,0xf4,0x1c,0x1d,0x8d,0x73,0xd8,0xe1,0x35,0xba,0xf2,0x1e,0xd0,0xc0,0x95,
- 0xea,0xca,0xdf,0x91,0xb1,0x4c,0xde,0xa3,0xc7,0xcc,0x92,0xad,0x49,0x34,0x8c,0x58,
- 0xf3,0xbf,0xe9,0xca,0x71,0xb9,0x7f,0x85,0xf4,0x34,0x8c,0x71,0x9c,0x8c,0xed,0x4a,
- 0x56,0x1f,0xc0,0x6d,0x0b,0x17,0xbd,0x38,0x9c,0xc1,0x81,0x29,0x21,0x63,0x8c,0x3c,
- 0x10,0x3e,0x1d,0x77,0x2b,0x33,0xa3,0x37,0x16,0x55,0x7a,0x5a,0x06,0xcc,0x3f,0x96,
- 0xd1,0x7a,0x18,0x1f,0x80,0x28,0xdd,0x7c,0x5c,0xee,0x5f,0xa1,0x69,0x21,0x78,0x11,
- 0x6a,0xf6,0x6a,0x43,0x6c,0x58,0xdd,0xc4,0x70,0x2c,0xd2,0x38,0x16,0x9b,0x40,0x18,
- 0x7b,0x71,0x4b,0x9a,0xcb,0xb5,0x34,0x7e,0xeb,0x4d,0xac,0xb2,0x4b,0x7d,0x8f,0xdd,
- 0xe5,0x7d,0xe2,0x8d,0x05,0xe9,0x92,0xec,0xdd,0x0d,0xf0,0x76,0xa6,0x32,0xa5,0x66,
- 0x9b,0x8f,0xcb,0x79,0x11,0xc2,0xfd,0xeb,0x08,0x0d,0xd3,0xe2,0xc4,0x49,0x86,0xeb,
- 0xaa,0x35,0x2f,0xe2,0x5b,0xc9,0x9e,0x84,0x2a,0x34,0xd8,0x88,0xa7,0x1b,0xd6,0x5a,
- 0xff,0x2d,0x52,0xe6,0x87,0x27,0xc1,0x78,0x07,0x97,0x41,0xbf,0x91,0x34,0x83,0x43,
- 0x6a,0x0f,0x2b,0x41,0x4f,0x26,0x38,0xa8,0x46,0x71,0x3d,0x12,0xef,0x73,0x7a,0xc9,
- 0x2c,0x78,0x9e,0x16,0xe1,0x75,0xc1,0x93,0x3c,0x89,0xdb,0x16,0x2e,0x7a,0x7e,0xdc,
- 0x80,0x0c,0x6b,0xe6,0xba,0xa2,0xb3,0x9e,0x83,0xfa,0x1c,0xeb,0x96,0x08,0x2e,0xb9,
- 0xdf,0x87,0x0a,0x3e,0xb3,0x95,0xd6,0x43,0xa8,0x30,0x8b,0x1f,0xc4,0x7b,0x9e,0x86,
- 0x8a,0x3e,0xf5,0x41,0x36,0x2c,0xbf,0xcf,0x5e,0x75,0x36,0xfc,0x91,0x2f,0x8e,0x07,
- 0xd6,0x2b,0x6f,0xa7,0x7f,0xc9,0x6f,0xcf,0x3e,0x5e,0xaf,0x7c,0x05,0x7e,0xcb,0xef,
- 0xc8,0x96,0xa0,0x61,0x7e,0x7a,0x60,0x71,0x76,0xfa,0x7a,0x56,0x0a,0x4f,0xf2,0x08,
- 0x2e,0xcb,0x5a,0x11,0xeb,0x45,0xc3,0x3f,0xac,0x95,0xc1,0x2f,0x79,0x26,0xeb,0x5f,
- 0xaf,0x7c,0x20,0xf7,0x2f,0xf5,0x4f,0x70,0x27,0xf2,0xce,0xc6,0x4d,0x8a,0x7d,0x64,
- 0x4e,0x78,0x66,0x5b,0xa5,0x19,0x65,0xc4,0xfb,0x1d,0x10,0xee,0x4a,0xd8,0x9c,0x30,
- 0xc9,0x58,0x3a,0x02,0x1f,0x92,0x0b,0x41,0x2f,0xd2,0xb8,0xa7,0xc1,0xc4,0x95,0x96,
- 0x56,0xd1,0x17,0xf9,0x96,0xcc,0xd2,0x3e,0xb9,0x7f,0x99,0xe8,0x1f,0x5e,0xe3,0x4d,
- 0xab,0xfd,0x63,0xca,0x55,0xf8,0x84,0xa3,0x37,0x38,0xa6,0xc4,0xb0,0x65,0x01,0x19,
- 0x57,0xcd,0x0f,0xd1,0x58,0x35,0x3e,0xfd,0x2a,0x9c,0x36,0x9a,0xe2,0xd5,0xc3,0xe5,
- 0xb1,0xe2,0xcb,0xbc,0x6b,0xc8,0x7f,0x46,0x8b,0x35,0x9f,0xe6,0xd1,0x21,0xfc,0xd4,
- 0xa0,0x9c,0x5f,0x7b,0x71,0xff,0x7a,0x3e,0x5d,0x6d,0xe1,0x2f,0x9d,0xf4,0x4e,0x07,
- 0xdc,0x65,0x70,0x53,0x30,0x36,0xf0,0x3b,0xde,0xf3,0x3d,0x80,0xc6,0x96,0x5d,0x15,
- 0x16,0xee,0x3b,0x67,0xf9,0x06,0xbd,0xda,0xf0,0x99,0x6c,0x96,0xfa,0x35,0x5e,0xb1,
- 0x46,0xfd,0x12,0x8b,0xe1,0xa4,0xa9,0xd8,0x33,0xff,0xdb,0xec,0x03,0xf9,0x3e,0xeb,
- 0xd8,0x5f,0x07,0xe3,0xe1,0xe6,0x0e,0xdc,0x4a,0xe0,0x19,0xb5,0xba,0x8f,0x9e,0x03,
- 0xcf,0xe0,0x66,0xb7,0x7c,0x5d,0xd9,0xd3,0xb0,0xa8,0x7e,0x0e,0x0e,0x01,0x3b,0xab,
- 0x6e,0x50,0xab,0x97,0xa8,0x71,0x36,0x03,0x37,0x44,0xdc,0x07,0x4d,0xa6,0x73,0x7b,
- 0x43,0xec,0x97,0xfb,0x57,0x7c,0xc6,0x49,0xd8,0x0f,0xe1,0xac,0xba,0x7f,0xdb,0xc9,
- 0x78,0xf2,0x9d,0xf0,0x98,0x76,0x87,0x0f,0xbd,0xac,0x48,0x55,0x56,0x6d,0xc0,0x41,
- 0x79,0xd2,0xac,0xa2,0xfd,0xeb,0x34,0x54,0x5a,0xe1,0x1d,0xbe,0x52,0x5f,0xb1,0xb1,
- 0xcb,0x30,0xea,0xd5,0x20,0x0b,0xf1,0x8d,0x59,0xa3,0xd7,0xb7,0x90,0xbd,0x29,0xe7,
- 0x7b,0x0f,0xfa,0x99,0xb8,0x89,0xc7,0xfd,0x07,0x94,0x6b,0xf0,0x21,0x8f,0x65,0x03,
- 0x07,0x94,0x1a,0xf8,0x8f,0xe6,0xe8,0xe8,0x13,0x47,0x93,0x47,0xd5,0x6b,0xa9,0x3a,
- 0xea,0xf0,0x4f,0x8c,0x4e,0x2b,0x76,0xc6,0xff,0xe2,0x8a,0x50,0x6a,0xc2,0x78,0xa0,
- 0x27,0xdc,0xa5,0x84,0xf9,0x09,0xb3,0xab,0x37,0xbc,0x5f,0xf9,0x58,0xfe,0x2e,0x8e,
- 0x7b,0xd5,0x38,0x8d,0x4e,0x5a,0x91,0x0e,0x43,0xa0,0x4b,0x39,0x69,0xe0,0xe8,0x0c,
- 0x94,0x92,0x53,0xf1,0x21,0x3c,0xd4,0x1b,0x88,0x28,0x23,0xec,0x2d,0x88,0xa5,0x4a,
- 0xb7,0xe3,0x16,0x39,0x41,0x33,0xe5,0x80,0xf2,0x11,0x8c,0xe9,0x31,0x6b,0xcb,0x51,
- 0x1c,0x38,0xb9,0xef,0xe8,0xe4,0x55,0xde,0xbe,0xc6,0x3f,0x8e,0x2e,0xfa,0x35,0xf8,
- 0x2e,0xfd,0xf5,0xb5,0x9e,0x13,0xe4,0x4c,0x46,0x18,0xb5,0x54,0xa2,0x5f,0xe7,0xf1,
- 0x1b,0xbf,0x54,0xeb,0xb2,0x34,0x3a,0xfc,0x18,0x6f,0xda,0xeb,0xdf,0xb5,0x34,0xaa,
- 0x9f,0xb6,0x6e,0x5f,0xe7,0x5f,0xa7,0xd8,0x7e,0xf8,0x56,0xef,0x5a,0xe8,0x6e,0x0f,
- 0x5a,0xea,0x01,0x16,0xc6,0x09,0x52,0x83,0xbd,0xd1,0x1c,0x46,0xff,0xd0,0xb0,0x54,
- 0x72,0x14,0x5f,0x22,0x47,0x31,0x53,0xb4,0x8f,0x3c,0xc6,0xa0,0xba,0x33,0xf1,0x1f,
- 0xea,0x19,0xde,0x90,0x52,0x37,0xb3,0xb9,0xb0,0xa9,0x65,0x17,0x84,0x8e,0x06,0x0d,
- 0x53,0xec,0x5f,0x7c,0x1a,0x7e,0x9c,0xef,0xc2,0x4f,0xd9,0xcf,0xb9,0x25,0xc3,0x46,
- 0xf0,0x53,0x73,0xad,0xe2,0x0c,0xdb,0x87,0xf3,0x6b,0x3e,0xf9,0xe1,0xd8,0xe2,0xa9,
- 0x5a,0x36,0x33,0xcd,0xde,0x87,0x4d,0xb8,0xfa,0xe0,0x52,0x19,0x6e,0x26,0x17,0x54,
- 0xed,0x29,0x8b,0x3b,0xfb,0x97,0x1f,0xf6,0x67,0xf0,0xaf,0x2f,0x44,0x37,0x03,0x71,
- 0xc1,0x00,0x7e,0xca,0xcf,0x3a,0xd5,0xb9,0x7d,0x10,0x69,0x46,0x3f,0xd3,0x88,0xf7,
- 0xaa,0x91,0xc4,0x49,0x48,0xea,0x55,0xf7,0x84,0x80,0xfd,0x02,0xb6,0x56,0x85,0xf4,
- 0x10,0x62,0x24,0x8e,0xce,0x89,0xaa,0x96,0xb1,0x66,0xb9,0x7f,0xf1,0x92,0xb5,0x30,
- 0x11,0x8a,0x5a,0x9b,0xb7,0x6b,0x8d,0xe6,0x04,0xd4,0x9c,0xc4,0xfe,0xc1,0xbf,0x6e,
- 0xd4,0x0d,0x94,0x64,0xb4,0xa7,0xcd,0x6b,0xa1,0x06,0x4b,0xeb,0x62,0x23,0xec,0x84,
- 0xa7,0xee,0x16,0xdc,0xdf,0xcf,0xc1,0x80,0xa7,0xf1,0x1e,0x7f,0x4a,0x33,0xc0,0x6a,
- 0xcd,0xdc,0xe3,0x3f,0x58,0x1e,0x97,0xfb,0x57,0xfa,0x4f,0x26,0x61,0xc2,0x40,0xff,
- 0x70,0x54,0x39,0xca,0xaf,0x41,0xec,0x24,0x1a,0x0f,0xe3,0xa0,0x34,0x50,0xcb,0xc3,
- 0xd8,0x52,0x4b,0x3d,0x7f,0xd4,0x73,0xcd,0x68,0x80,0x00,0xfa,0x1b,0x7c,0x52,0x6f,
- 0xf2,0x06,0xac,0xca,0x73,0xe4,0x81,0x9c,0x0a,0xec,0x56,0xf6,0xca,0xfd,0x8b,0xf0,
- 0xd7,0x04,0xe0,0x6c,0x1a,0x15,0x70,0x40,0x3c,0x10,0x5b,0x8c,0x06,0xab,0x94,0x66,
- 0xdc,0x35,0x63,0x11,0x0f,0x65,0xc4,0xa5,0x98,0x95,0xbf,0x27,0xf3,0x57,0x23,0xa9,
- 0x31,0x7d,0xc1,0x71,0x74,0x3c,0x5c,0xf8,0xeb,0x25,0x1e,0xcc,0xe2,0x97,0xcf,0x42,
- 0x0f,0xaf,0x31,0xb4,0x0e,0x44,0x5b,0x47,0xf8,0x7c,0xdc,0xd6,0xd0,0x78,0xc9,0xaa,
- 0x41,0xaf,0x9b,0x09,0x78,0x06,0x2b,0x1c,0x43,0xbb,0x82,0xfe,0xeb,0x61,0xa8,0xec,
- 0x0d,0x65,0x10,0xfe,0xe7,0xf0,0x57,0x37,0x8e,0xb2,0x86,0x9d,0x99,0xde,0x2f,0xf6,
- 0x2f,0x72,0xe3,0xcd,0x90,0xe9,0x43,0xd8,0x05,0x4f,0xea,0x61,0xae,0x46,0xe4,0x10,
- 0x70,0x2d,0x22,0x3c,0xfc,0x2a,0x5c,0x21,0xd9,0xab,0xb0,0xd3,0x88,0xd3,0x28,0xbb,
- 0xf0,0xd7,0x11,0x1c,0x41,0x1c,0xee,0x73,0x70,0xd8,0xac,0x49,0x69,0x7b,0x70,0x94,
- 0x8f,0xc0,0x7c,0xb3,0x23,0x23,0x8c,0xb0,0xa5,0xb6,0xb1,0xac,0x59,0x3f,0xa3,0x66,
- 0x99,0x46,0x46,0x8f,0x5e,0xe3,0x15,0x6f,0xc2,0x11,0x9d,0xc6,0xdd,0xc1,0x5f,0x26,
- 0xe2,0xaf,0x6b,0x10,0xc5,0x9f,0x5c,0x39,0x24,0xe7,0x45,0x46,0x4c,0x90,0x06,0x93,
- 0x16,0x34,0xc4,0x3b,0xe8,0x04,0xee,0x55,0x3e,0x40,0x0c,0x8b,0x53,0xcf,0x36,0xd2,
- 0xe2,0x9e,0x31,0x84,0x42,0x2b,0x19,0xe2,0x1d,0x07,0x7f,0xc1,0xa7,0xb2,0x7b,0xc7,
- 0x68,0x08,0x68,0x50,0x26,0xb1,0xe5,0x0e,0x57,0xaf,0x9e,0x51,0xfe,0x08,0x57,0x78,
- 0x93,0xe1,0x18,0xf1,0xc0,0xa8,0x67,0x04,0xfe,0x88,0x9d,0x17,0x18,0x64,0x2e,0xfc,
- 0x35,0x21,0xbe,0x8f,0xf2,0x55,0xdc,0x34,0x63,0xad,0xb8,0xb1,0xee,0xb3,0xbf,0xd8,
- 0x52,0x31,0x73,0xb9,0x5f,0xba,0xa9,0x5d,0x3c,0x9c,0x33,0xe8,0xfb,0x1c,0x83,0x86,
- 0x7e,0x1c,0xaf,0x3c,0xfe,0x12,0x93,0x08,0x7f,0xf2,0x30,0x21,0x46,0xdc,0xad,0xf0,
- 0xb7,0xbf,0x24,0x80,0x98,0x34,0x2c,0x9f,0x6b,0xa3,0x97,0x06,0x8c,0xb2,0x49,0x9c,
- 0x3b,0xb5,0xa3,0x6a,0xaa,0xd9,0x85,0xbf,0xe4,0x78,0x21,0xf2,0xec,0xa2,0x41,0x31,
- 0xd8,0x66,0x1a,0x1d,0xcb,0x1e,0x1d,0x1c,0x2f,0x1d,0x17,0xbd,0x9d,0xe8,0x6f,0xf8,
- 0x6c,0x37,0x83,0xc0,0xf5,0x49,0x48,0xc3,0xfc,0x0b,0xf8,0x4a,0xd8,0xf8,0xcb,0xf0,
- 0xcc,0x86,0xee,0x74,0x05,0x3a,0xff,0xc1,0xdf,0xc0,0xf3,0xbc,0x3a,0xae,0xdd,0x53,
- 0xf6,0x36,0x1c,0xe4,0x02,0x0e,0xa0,0xa1,0x57,0x67,0x7d,0x6b,0xd8,0x9b,0xf0,0x18,
- 0xaf,0x48,0xb3,0x35,0xec,0x66,0x04,0x62,0x15,0x7b,0x8b,0xf1,0x12,0xdf,0x93,0xc6,
- 0x55,0xf4,0x2b,0x4c,0xf5,0xe6,0xf0,0xd7,0x45,0x1e,0xb1,0x02,0x51,0x65,0xc0,0x3b,
- 0x0a,0x8d,0x80,0xf8,0x6b,0x33,0x5c,0x4c,0x37,0xae,0x5d,0x15,0x29,0x3f,0xa9,0x5e,
- 0xdc,0x83,0xfd,0x73,0x8b,0xd2,0x0f,0xe7,0xbc,0x91,0x70,0x69,0x19,0xba,0x22,0xbd,
- 0xe9,0xc8,0x6a,0x7f,0x83,0x72,0x0a,0xb2,0xd9,0xfa,0x7e,0xff,0xcd,0x8a,0x7d,0x3e,
- 0x42,0xf8,0xcb,0x9e,0x0e,0x36,0x5e,0x1e,0xa3,0x61,0x9a,0xd9,0x64,0x96,0x9c,0x57,
- 0x26,0xcd,0x6b,0x91,0x26,0x02,0xce,0xf5,0x40,0xe8,0xb8,0x24,0xab,0x8c,0x79,0xaf,
- 0xea,0x4d,0xbc,0xf4,0x79,0x65,0xe4,0xde,0xb3,0xd0,0xf4,0x72,0x6d,0xab,0x32,0x38,
- 0x23,0x8f,0xbf,0x24,0x48,0x37,0x08,0xa4,0x73,0xb9,0xc0,0x72,0x74,0x0b,0xc5,0x8b,
- 0x34,0x10,0x45,0x98,0x2c,0x76,0x3d,0x74,0x1d,0x6d,0x63,0x66,0xe0,0x90,0x52,0xc3,
- 0x11,0x5c,0xf7,0x05,0x78,0xe5,0x7c,0x17,0xfe,0x32,0x71,0x7f,0x1f,0x0d,0x36,0xaa,
- 0xff,0x93,0x55,0x9b,0x9d,0xad,0xec,0xcb,0x08,0xbb,0x2a,0x10,0xc8,0xe3,0x4e,0xd4,
- 0x1d,0x47,0x20,0x46,0x06,0x02,0x31,0xae,0xd9,0x46,0x9f,0x16,0x65,0xfe,0xf4,0x06,
- 0xa8,0x1e,0x58,0xd1,0xca,0xca,0xf2,0xf8,0x8b,0x7a,0x75,0xc5,0xfa,0x60,0x19,0xc2,
- 0xae,0x6a,0x43,0x6b,0xc1,0xee,0x95,0x3d,0x4f,0xfd,0x9c,0xae,0x48,0xab,0x2d,0x02,
- 0x37,0x55,0x1b,0xb7,0x48,0xe3,0x1b,0x06,0x5e,0xfa,0x11,0x82,0x35,0x1c,0x8b,0x7b,
- 0x58,0x24,0x87,0xbf,0xec,0x51,0x0e,0x96,0xa2,0x9b,0x21,0x86,0x5b,0xbc,0x09,0xa6,
- 0x3d,0xee,0x08,0xc4,0x5e,0x60,0x1f,0x75,0x1c,0x89,0x87,0x7b,0x35,0x34,0xda,0xef,
- 0x8a,0xd7,0x9c,0x41,0x0f,0x64,0x73,0x71,0xb2,0x15,0x17,0x73,0xfd,0xe6,0xb2,0x3c,
- 0xfe,0xba,0x2c,0xba,0x45,0x9b,0x8f,0x3e,0xad,0xe8,0x9f,0x61,0x6c,0x29,0xdb,0x25,
- 0x0d,0x6f,0xb4,0xcd,0xbf,0x67,0xe9,0xfb,0x70,0x99,0x80,0xd8,0x1e,0xe5,0x7d,0x78,
- 0x08,0xe7,0xb2,0x40,0x64,0xa7,0x2c,0x6c,0xc9,0x2a,0x0d,0x05,0xf8,0x4b,0x80,0x2c,
- 0x53,0xce,0xaf,0xa5,0xd2,0x9d,0x2b,0x95,0xbd,0x2a,0x66,0x9c,0xc0,0x5f,0xa0,0xa1,
- 0xe1,0x15,0xf7,0xa0,0xcb,0xc7,0x08,0x9a,0x6d,0xe9,0x50,0xdc,0xf8,0x4b,0xb8,0xf1,
- 0xd3,0xab,0xc0,0xc1,0x05,0xb6,0xb1,0x74,0x48,0x1f,0xf7,0xc6,0x4c,0x7f,0x6a,0x69,
- 0x95,0xed,0xd8,0xdb,0x86,0x5f,0xde,0x13,0x35,0xc3,0x29,0x85,0xd9,0xf8,0xcb,0x8b,
- 0xf8,0x4b,0x80,0xa3,0x9b,0x69,0xee,0x34,0x08,0x94,0xe4,0x39,0x84,0xcf,0xd1,0x24,
- 0xec,0xaa,0x31,0xab,0x09,0x29,0x6c,0xf4,0x04,0xa9,0xa5,0x0a,0x91,0x94,0xe3,0x51,
- 0x43,0xb0,0xb9,0x23,0xd5,0x6c,0xb8,0xf1,0x57,0x8d,0xd9,0xa9,0xa3,0x2f,0x21,0xf0,
- 0xd7,0xa0,0xfd,0x71,0xfb,0x39,0x61,0x53,0x15,0xb0,0x0b,0x3e,0x4f,0x97,0xc8,0xa8,
- 0xc4,0xe7,0x94,0x0d,0x79,0xf7,0xc3,0xdc,0xb8,0x3a,0x93,0x15,0xe5,0xf0,0x97,0xbe,
- 0x3f,0x14,0x36,0x6f,0x29,0x4f,0xcc,0xc8,0x3e,0x1a,0x9a,0x47,0xf8,0x0b,0x91,0x02,
- 0x18,0xcb,0x35,0x9a,0x9e,0xfb,0x59,0xf5,0xf2,0x8d,0x08,0xcd,0xd2,0x8f,0x0a,0x44,
- 0x26,0x8c,0x8a,0xe5,0xb8,0x6d,0xf5,0xf3,0xfd,0xc6,0x9e,0x96,0x90,0xee,0x63,0x2e,
- 0xfc,0x65,0x60,0x3f,0x3f,0xc6,0x2a,0xb6,0x9e,0x31,0x62,0x04,0xbb,0x70,0xc1,0x0f,
- 0xd5,0xa8,0xf2,0xed,0x0d,0x35,0x22,0xda,0xd2,0x8c,0xc4,0x80,0xf1,0x82,0xba,0x45,
- 0x1a,0xdd,0x6a,0x58,0x5c,0xfa,0x52,0xdd,0x0c,0x3f,0x68,0x35,0x36,0xfe,0xfa,0x9c,
- 0xec,0xd5,0x55,0xdb,0x96,0x0e,0xf1,0x6f,0xe7,0xfb,0xb9,0xc9,0xdc,0x92,0xaa,0x1c,
- 0x52,0xf1,0xd2,0xf2,0x2d,0xdb,0x92,0x7b,0xd2,0xe3,0xa1,0x06,0x1b,0x7f,0x85,0x10,
- 0x7f,0x6d,0x55,0x86,0xcc,0x2b,0x7a,0xc3,0xb2,0xc0,0x6b,0x49,0x1b,0x7f,0xcd,0x9c,
- 0xe6,0x8c,0x8e,0x40,0xc7,0x51,0xd3,0x4b,0xbd,0xea,0x1a,0x38,0x1a,0x9d,0xf2,0x3d,
- 0x5e,0x7b,0x98,0x10,0x9a,0x79,0xea,0x9c,0xf1,0xea,0x26,0xfc,0x55,0x94,0xc3,0x5f,
- 0xd0,0x23,0x61,0x97,0x73,0x36,0x88,0x86,0xdd,0x82,0x97,0x58,0x9d,0x6c,0xe9,0x90,
- 0xb0,0x2b,0x77,0x0f,0x7d,0x2a,0x88,0xff,0x51,0xf6,0x84,0x0b,0x7f,0x79,0xc2,0x34,
- 0x5e,0xed,0x62,0xad,0x9b,0x49,0x8b,0xde,0x7e,0xa8,0x32,0x65,0x3f,0xe7,0x61,0x17,
- 0xad,0x87,0x65,0x5e,0xef,0x56,0x06,0xa6,0x9a,0xbb,0x34,0xd3,0x57,0x80,0xbf,0x68,
- 0x94,0x9b,0xe5,0xda,0x3b,0x93,0x5e,0x12,0x6c,0x69,0xb1,0xc7,0x7d,0x6e,0x7e,0x59,
- 0xbe,0x99,0x8c,0xa7,0xc4,0xfb,0x53,0x44,0x97,0xc4,0x9f,0x78,0xcc,0x8d,0xbf,0xa8,
- 0x37,0xd8,0x1e,0xfb,0x5d,0x5d,0x2a,0xfa,0x27,0x9e,0xeb,0x9f,0x10,0xee,0x8d,0x74,
- 0xa9,0xb5,0x94,0x2e,0xbd,0xc1,0x9c,0xf7,0x39,0x8e,0xef,0xf3,0x0e,0xc5,0x8d,0xbf,
- 0x64,0xaf,0xf6,0xfb,0xce,0x07,0x8f,0xb6,0xfc,0xb4,0x4c,0x1b,0xca,0xf7,0xf3,0x79,
- 0x68,0x34,0x03,0x7a,0x65,0x3f,0x3b,0x0f,0x47,0xcd,0x6a,0x5d,0xeb,0x67,0xbd,0xec,
- 0xa8,0x59,0x9b,0x9b,0x3b,0x4f,0x23,0xfe,0x92,0xb8,0x89,0xf0,0x17,0xce,0x4a,0x0d,
- 0xe8,0x88,0xc9,0x13,0x83,0x55,0xf6,0xa2,0x07,0xce,0xea,0x07,0xe2,0x28,0x18,0x0d,
- 0x5d,0xbe,0x36,0x4c,0x5c,0x32,0x60,0x94,0xf0,0x57,0x42,0xf3,0xe5,0xf1,0x97,0xbd,
- 0x6d,0x21,0xec,0xf2,0xd4,0xf0,0xd2,0x74,0x7e,0x23,0x93,0x86,0x40,0x64,0x64,0x74,
- 0xa4,0x83,0xc3,0x33,0x0f,0x7b,0xe9,0x52,0x59,0x08,0x17,0xe1,0x4a,0xae,0x0e,0x6b,
- 0xcb,0xe5,0xfb,0x1c,0x12,0xfb,0x97,0x58,0xbe,0xfc,0xce,0x3a,0x76,0xb2,0x60,0xff,
- 0xb2,0x42,0x11,0x9f,0xbf,0xb0,0x85,0xd6,0x3a,0x74,0x1d,0x8d,0xac,0xba,0xd0,0xe7,
- 0xb3,0xf1,0x97,0xc7,0x3e,0x04,0x7b,0xa0,0x68,0x16,0xba,0xfa,0xd5,0x96,0xcf,0x5e,
- 0x84,0x7b,0xe5,0x6a,0xec,0xad,0xb6,0x3a,0xa2,0x74,0x50,0xa6,0xd3,0x3d,0xd4,0x12,
- 0x41,0x63,0x2c,0xf8,0x65,0x78,0xc6,0x30,0xfa,0xd4,0x78,0x62,0x4d,0x1e,0x7f,0x1d,
- 0x4c,0x2c,0xce,0x06,0x26,0x94,0x98,0xf1,0x4b,0x8e,0x06,0x02,0x31,0xf8,0x34,0x6f,
- 0x34,0x8e,0x86,0x1f,0x49,0xce,0x36,0x3e,0xed,0x68,0xca,0x6a,0x0f,0x2b,0xbf,0x33,
- 0x3e,0xdd,0x5b,0xf2,0x0e,0xee,0x4d,0x5f,0x81,0x6b,0x83,0x15,0x88,0xbf,0xb4,0xf9,
- 0x79,0xfc,0x25,0xbd,0x02,0x66,0xfb,0xf3,0x99,0xca,0x11,0xb7,0x03,0x13,0x7b,0x33,
- 0x90,0xf9,0x5b,0x61,0xbc,0xe2,0x27,0x37,0x1e,0x8d,0xde,0x40,0xa6,0x1c,0xbd,0xa6,
- 0x38,0x0e,0x4a,0x5a,0xb1,0xf1,0x17,0x90,0x7f,0x98,0x42,0xd8,0x75,0x28,0xf9,0xf1,
- 0xda,0xd3,0x12,0x7f,0x5d,0x35,0xaf,0x51,0xcb,0x58,0xe5,0xc7,0x26,0x01,0xb1,0xcd,
- 0xd8,0x12,0x9f,0x20,0xff,0x67,0x52,0xa1,0x96,0xd8,0xef,0x71,0xd3,0x8c,0xc1,0x77,
- 0x52,0x75,0xab,0xfd,0x3d,0x0a,0xe4,0xf1,0x17,0xee,0x3b,0xd6,0x52,0xdc,0x65,0x56,
- 0x3f,0x33,0xb3,0xfa,0x15,0xed,0x9b,0x09,0xd1,0x3f,0xaf,0x60,0xff,0xbc,0xcd,0xbb,
- 0xf5,0x0a,0xec,0xb1,0xc4,0x97,0xe3,0x07,0x77,0x54,0x7f,0x80,0x97,0xde,0xce,0x76,
- 0xcf,0xf4,0xbf,0xa7,0x7d,0x5b,0xc1,0xde,0xa0,0x03,0xc0,0xbf,0x4e,0x3c,0x6b,0x9f,
- 0x87,0x13,0xfe,0x32,0xaa,0x05,0xc8,0x82,0x0d,0x20,0x0d,0x75,0x11,0x2b,0xb1,0xec,
- 0x5d,0xaf,0xc2,0x42,0xaf,0xe0,0xcb,0x5e,0x7c,0xf2,0x49,0x6a,0xe1,0x68,0x0c,0x68,
- 0xdf,0xa2,0xbd,0x52,0xdd,0xb9,0x0c,0xf1,0x17,0xc8,0xf7,0xd0,0x98,0x71,0xd2,0x63,
- 0x0f,0xe5,0xab,0xb0,0xdb,0x0c,0x0f,0x6a,0x0b,0xc9,0xbd,0x44,0x44,0x66,0x8f,0x72,
- 0x70,0x50,0x6b,0x64,0x7f,0x81,0x6b,0x84,0xb8,0xf4,0x2a,0x74,0x2f,0x43,0x83,0x5e,
- 0x12,0x1c,0x77,0x8f,0xda,0xc8,0x3a,0xbc,0x62,0x7d,0xde,0xfb,0x19,0xbb,0x9f,0x47,
- 0xcb,0xaf,0xea,0x27,0xa8,0x13,0x7a,0x64,0xf7,0x9e,0xa3,0x7e,0xd6,0x27,0xbc,0xdd,
- 0x83,0x25,0x63,0x4b,0x1f,0x41,0xdf,0x58,0x76,0x9d,0x34,0x08,0xc2,0x5c,0xe3,0xd1,
- 0xb6,0xc6,0x3b,0xb5,0xf9,0x79,0xfc,0x25,0x87,0x00,0x61,0xd7,0x45,0xb5,0xb1,0x2f,
- 0x10,0x49,0xba,0xc6,0xeb,0x22,0x01,0xb1,0x48,0x72,0xa5,0x73,0xe9,0x64,0x95,0x30,
- 0xe8,0x4f,0x5c,0x24,0x9f,0x3f,0x5d,0x6e,0xe3,0x2f,0x8f,0x9e,0x73,0xe3,0x1b,0xe1,
- 0x34,0xdc,0x65,0x09,0xae,0xc4,0x6e,0x99,0x14,0xae,0xa3,0x9f,0x90,0xc2,0x69,0x58,
- 0x64,0xa9,0x78,0xc9,0x73,0x1a,0x16,0x20,0x92,0xa2,0x4b,0xde,0x6e,0x5e,0x32,0xaa,
- 0xc0,0x32,0xf1,0x9c,0x36,0xc4,0x5f,0x02,0x76,0x65,0x04,0xec,0x0a,0x0a,0x00,0xe5,
- 0x91,0x2d,0xd2,0x91,0xa6,0x57,0x8b,0x2e,0x45,0xe9,0x92,0x00,0x62,0x96,0x5f,0x5e,
- 0x0a,0x96,0xe3,0xd4,0x73,0xe3,0x2f,0x01,0xdf,0x58,0xee,0x39,0x6b,0xd5,0x23,0x0e,
- 0xec,0x22,0x17,0x3d,0x44,0xcf,0x79,0x0e,0x0d,0x1f,0x5e,0x82,0x1f,0xca,0x7b,0xe8,
- 0x52,0x1c,0xd0,0x48,0xe7,0xf1,0x17,0x8e,0x05,0x3e,0x67,0x93,0x3f,0x41,0xe7,0x24,
- 0x38,0x2b,0xe5,0xcc,0x5d,0x11,0x09,0x9e,0xec,0xe8,0x5e,0x12,0xb2,0xb4,0x85,0x3e,
- 0x3f,0x1d,0xa1,0x0c,0x3c,0x14,0xf1,0x9d,0x4c,0x24,0x4d,0xde,0x1f,0x8a,0x26,0x5e,
- 0xe5,0xdd,0x0d,0xe9,0x01,0x75,0x2b,0xb3,0xf7,0x2f,0x20,0xfc,0x45,0x87,0x0f,0x17,
- 0x94,0x59,0xc6,0x09,0xea,0x0d,0x1a,0x8b,0x23,0x7a,0xc3,0x20,0xcd,0x14,0x63,0xc2,
- 0x5c,0x20,0xfb,0x67,0x0b,0x2c,0x38,0x59,0x4a,0x48,0xea,0x77,0xb0,0xe0,0x4d,0x7f,
- 0x17,0x0e,0xc1,0xb5,0x78,0x44,0xad,0x8e,0x24,0x21,0x8f,0xbf,0xae,0xe9,0xb7,0x5a,
- 0x6e,0xdc,0x84,0x1e,0xa3,0xd1,0x74,0x1c,0x9d,0xf6,0x49,0x32,0xe8,0x4f,0xd0,0x3d,
- 0x77,0x9d,0x7c,0x7c,0x54,0x59,0x7c,0x13,0xb5,0x94,0x76,0x25,0x3f,0xe2,0x68,0xe8,
- 0x1b,0x46,0x95,0x61,0x1b,0x7f,0xe1,0xcd,0xa7,0x43,0x88,0xa4,0x2e,0x24,0x1b,0xf9,
- 0xe9,0x50,0xd3,0x2f,0xfc,0x17,0x08,0x76,0xe1,0x03,0xfd,0x63,0x5a,0xac,0xec,0x2d,
- 0xab,0x29,0x1b,0x46,0x03,0xfe,0x00,0x8b,0xfa,0xfd,0x63,0x08,0x97,0xc4,0x3b,0x86,
- 0x2f,0x52,0xd1,0x69,0xd6,0x60,0xae,0x32,0x97,0xe6,0xf0,0xd7,0x15,0xd8,0x62,0x56,
- 0x0e,0xaa,0x93,0x77,0xc7,0x5a,0xb7,0xf4,0xd7,0x9e,0x2c,0x99,0x6c,0x46,0xd8,0xd5,
- 0x5e,0x53,0x21,0x76,0x2b,0x6e,0xd4,0xd0,0x6e,0x15,0x4e,0x1d,0xe1,0xf3,0xce,0x22,
- 0xba,0x19,0x21,0x22,0x2c,0xab,0x91,0xb1,0x05,0x82,0x71,0x34,0xd2,0x39,0xfe,0xcb,
- 0xa4,0x53,0xf4,0x10,0xba,0x6a,0x62,0x3d,0x54,0x6f,0xb7,0x17,0x3d,0x55,0xac,0x90,
- 0xf2,0x5c,0xdd,0x6f,0xe0,0x6e,0x35,0x80,0x2d,0x23,0x34,0x65,0xa8,0x65,0x84,0xce,
- 0x9a,0xce,0x69,0x91,0xa2,0x3c,0xfe,0x2a,0xa3,0x31,0x6d,0xc9,0x94,0x85,0xbd,0x9d,
- 0xde,0x9a,0x5e,0x7b,0x4c,0xf1,0x6b,0x48,0x92,0x2b,0x4c,0x46,0xd8,0x8b,0x08,0x51,
- 0x0e,0xf7,0x0f,0x11,0x92,0x4b,0x24,0x0e,0xbb,0xd2,0x5a,0xcf,0x2b,0x99,0x3c,0xfe,
- 0xfa,0x50,0x0c,0x93,0xb6,0x8f,0x9d,0x60,0x31,0xcb,0xa0,0x73,0xa4,0x97,0xd0,0x51,
- 0x5c,0xd9,0x55,0x19,0xe6,0xc7,0x70,0x5e,0xac,0xec,0x2a,0x0f,0xeb,0x47,0x3a,0xc4,
- 0x50,0x9e,0xf4,0x9c,0x90,0x53,0xe6,0x24,0xe0,0xe0,0xc6,0x71,0xdf,0xc9,0xf1,0x5f,
- 0xfb,0xe0,0x2d,0x0f,0xd1,0x5e,0x7f,0x75,0xd6,0x3b,0xc1,0x9a,0x72,0x03,0xd7,0x5a,
- 0xdb,0x5b,0x39,0x6a,0x7e,0x0c,0x88,0x8e,0x7b,0xb1,0xe5,0x8f,0xfe,0xc5,0xbd,0xff,
- 0x86,0x97,0xd8,0x27,0x62,0x4c,0x2b,0xf1,0x1e,0x6f,0x1d,0x04,0xd6,0x29,0x39,0xfc,
- 0xb5,0x19,0x5e,0x86,0x68,0xd6,0x2f,0x57,0xd1,0x88,0x9c,0x9e,0x1f,0x42,0x23,0x17,
- 0x93,0x7a,0x5c,0x42,0x33,0xbc,0x54,0x24,0xbe,0x8f,0x38,0xe0,0x12,0x2d,0xe6,0x87,
- 0x38,0x4f,0xfd,0xfb,0xf3,0xf8,0xab,0x11,0xb6,0xb4,0x56,0x5a,0xea,0xa7,0x08,0xa9,
- 0x5e,0xc2,0xc9,0xa8,0x8d,0x3a,0xf8,0x8b,0x9c,0x8a,0xc3,0xe8,0x54,0xa0,0x81,0x3d,
- 0xc6,0x76,0xe3,0xf4,0x64,0x23,0xbc,0xd3,0x99,0x7a,0x38,0x5e,0x1d,0x2d,0x3f,0x67,
- 0x2e,0xfc,0x95,0x5c,0x86,0x53,0xa6,0x9e,0x39,0xc0,0x19,0x8d,0xdd,0x20,0x88,0x30,
- 0x0b,0x11,0x99,0x01,0x3e,0x28,0xa2,0xb3,0xa6,0x35,0x34,0x82,0xa7,0xe8,0x12,0xdd,
- 0x73,0x0a,0x67,0x5c,0xc8,0xc4,0x75,0x6c,0x7d,0x0e,0x7f,0xb1,0x0d,0x69,0x23,0x3b,
- 0x73,0x7d,0xd9,0xdb,0xde,0x83,0x7c,0x0e,0xc2,0x81,0x66,0x84,0x03,0x6d,0xd5,0x7b,
- 0x05,0x2e,0x78,0x7e,0xa7,0x0d,0x10,0x9e,0xdf,0xf1,0xf7,0x43,0x04,0xbb,0x60,0x43,
- 0x1a,0xe1,0xc0,0x43,0xec,0x6d,0x73,0x43,0xba,0xa2,0x5e,0x5d,0xcf,0xee,0xc9,0xf3,
- 0x5f,0x2f,0x23,0xfe,0xf2,0x47,0xa6,0x9f,0xc4,0x55,0x2b,0x32,0x1c,0x88,0xe0,0x58,
- 0xfc,0x07,0x6f,0x5c,0x83,0x40,0x0c,0xbf,0x4f,0x22,0x02,0x5b,0x54,0x6c,0x39,0x0f,
- 0xf5,0xc3,0xfe,0x08,0xf6,0xcf,0xdf,0x26,0x1a,0x87,0x03,0xf5,0xca,0xc7,0xfc,0xc3,
- 0xf4,0xfa,0x35,0xd8,0x72,0x77,0x9e,0xff,0x9a,0x80,0xa6,0xc1,0x5a,0xea,0xc3,0x6b,
- 0x10,0xeb,0x97,0xe3,0xd5,0xda,0xd4,0x8e,0xc6,0x08,0x5c,0x21,0x6a,0x6c,0xac,0x9c,
- 0x16,0xb4,0x3a,0xeb,0x4f,0x47,0xf3,0xf7,0x60,0xcf,0xeb,0x31,0xc0,0x4f,0xa5,0x1c,
- 0xfe,0xeb,0x23,0xf3,0xc4,0x60,0x5d,0x7f,0xe0,0x40,0x72,0x84,0x4f,0x44,0x62,0xa7,
- 0xfc,0x99,0xe4,0x88,0x3a,0xd1,0x1a,0xb5,0xfd,0x0d,0x7e,0x98,0x00,0xc2,0xc7,0x74,
- 0x22,0x7d,0x01,0x97,0xc1,0x8f,0xe1,0x84,0xa7,0x31,0xbb,0x99,0xfa,0xf9,0x04,0x9d,
- 0xaa,0x65,0x94,0x3c,0xff,0x95,0xde,0xa2,0x56,0x88,0xbd,0x3b,0x4d,0x9b,0xb8,0xfa,
- 0xa0,0xd8,0x6e,0xee,0xc8,0xef,0x3b,0x68,0x4c,0xc2,0xa3,0x70,0xdb,0x19,0xd5,0xd9,
- 0x9b,0x54,0x6a,0x41,0x03,0xd0,0xc8,0xf1,0x5f,0x4f,0x24,0x36,0x50,0xf7,0x7e,0x9b,
- 0xbd,0xdd,0x4a,0x40,0x4c,0x5d,0x2f,0xf1,0x17,0x01,0x31,0x42,0x5b,0x15,0x86,0x0f,
- 0x11,0x99,0xfa,0x0c,0x51,0x63,0xeb,0x83,0x5f,0x61,0x1b,0x9c,0x7b,0x36,0xf0,0x70,
- 0x1c,0x8d,0x3c,0xff,0x25,0x4e,0x77,0x3b,0xc5,0xe9,0x93,0x9c,0x9e,0xe2,0x05,0x38,
- 0x93,0xc3,0x5f,0x5a,0x04,0xe8,0x9e,0x50,0xaf,0xb8,0x44,0x73,0xb9,0x03,0x0d,0x15,
- 0x0d,0x1d,0x67,0xb7,0x8b,0xff,0x3a,0x0e,0x75,0x0e,0xec,0xa2,0xd3,0x03,0x61,0x04,
- 0x53,0x76,0x4b,0x94,0x88,0xb0,0x61,0xf8,0xd8,0x8c,0xb6,0xfd,0x09,0x79,0x56,0x44,
- 0x7b,0xa9,0xd4,0x72,0x1c,0x9a,0x52,0xfe,0x6c,0x9e,0xff,0xb2,0xd8,0x98,0x89,0x9e,
- 0x03,0xb8,0xdd,0xb9,0x51,0x7c,0xa3,0x73,0xb0,0x0b,0x8d,0xac,0x3a,0x76,0xcf,0x14,
- 0x97,0x0f,0x7f,0x50,0x8c,0x05,0xdc,0xf8,0x8b,0x09,0x1a,0x65,0x07,0xfa,0xea,0xe7,
- 0x21,0xba,0xc4,0xaf,0x0b,0x7f,0x3e,0x5a,0x08,0xc4,0xe0,0x3c,0x77,0xb5,0x68,0x29,
- 0xe5,0x3d,0x5c,0x0a,0xa2,0xeb,0x02,0xba,0x92,0xc8,0xe3,0xaf,0x8d,0xab,0x6b,0x96,
- 0x68,0x3b,0x7c,0x55,0x5e,0x84,0x54,0xe6,0x72,0xe9,0x3f,0x07,0xf3,0xf8,0x4b,0x1a,
- 0x03,0xc4,0x88,0xb1,0xdf,0x7b,0xed,0x96,0xdf,0xc3,0x1b,0x10,0x6c,0x45,0xc3,0x85,
- 0xbf,0x36,0x42,0x4d,0x7c,0xc5,0xb6,0xe6,0x2a,0xe9,0x5a,0xcb,0xe7,0xec,0x22,0xb4,
- 0x75,0x09,0x7e,0x9a,0x43,0x64,0xba,0x78,0xf2,0xbb,0xad,0x02,0xac,0xa5,0x58,0xbf,
- 0x17,0x3d,0xf3,0x66,0x6d,0x2b,0x7b,0x2c,0x87,0xbf,0xd2,0x6d,0xa1,0xf0,0x0a,0xad,
- 0x2c,0xe1,0x4d,0xef,0x0f,0x19,0x5f,0xf4,0xa1,0x81,0x88,0xac,0x62,0xb9,0xd6,0xca,
- 0x5e,0x87,0xe7,0xf5,0x6a,0x53,0x6b,0x2d,0xea,0x37,0xf7,0x87,0xaa,0x96,0xd9,0x48,
- 0x21,0x6c,0x2a,0x74,0xf6,0xb5,0x15,0xd2,0xcb,0xb5,0x9b,0x13,0x79,0xfc,0xc5,0x07,
- 0x08,0x76,0xed,0x52,0x0c,0x3e,0x66,0x64,0x66,0x12,0xda,0x82,0xb1,0xe0,0x03,0x88,
- 0xbf,0x70,0xdd,0xc8,0xe2,0x10,0x60,0x3f,0x9f,0x43,0x8c,0x16,0xbd,0x59,0xe3,0x9e,
- 0x5e,0xd3,0xf6,0x9f,0xb3,0x6c,0x60,0x5e,0x14,0x11,0x99,0xf2,0xb3,0x1c,0xff,0x25,
- 0x21,0x95,0xe8,0x43,0x4f,0xac,0x25,0xdf,0xbd,0x88,0xb6,0xf6,0x8d,0x1b,0xb1,0x15,
- 0x1a,0x1a,0xfc,0x0f,0x20,0x2e,0x5d,0x72,0x5c,0xfd,0x4b,0xf8,0xa9,0x26,0x33,0xcf,
- 0x7f,0x11,0xfe,0x7a,0x15,0x16,0x99,0xfe,0xc1,0xa5,0xce,0x30,0x05,0xe5,0x73,0x42,
- 0x44,0x7b,0xe1,0x24,0x12,0xb0,0x4b,0xfd,0x08,0xca,0xcc,0xcd,0xf4,0x9c,0x63,0x20,
- 0x3e,0x4e,0x06,0x11,0x61,0xf0,0xb5,0x3c,0xfe,0xea,0xf0,0x12,0x93,0x55,0x66,0xe8,
- 0x3d,0x72,0xf5,0x93,0x88,0xcc,0x46,0x5b,0x73,0xd1,0x08,0x1a,0x9e,0x4d,0xd0,0x88,
- 0x13,0x96,0x65,0x59,0x87,0x03,0xcd,0xce,0x00,0x42,0xb3,0x34,0x2b,0x85,0x1c,0xfe,
- 0x6a,0x03,0xef,0x12,0x55,0xc2,0x2e,0xc3,0x5c,0xa1,0x83,0xec,0x4c,0x1b,0x76,0x55,
- 0x99,0x1d,0x64,0xec,0x04,0x83,0xee,0xe9,0x9f,0xd6,0xe6,0x09,0x4b,0x68,0xd6,0x06,
- 0xab,0xe3,0xd8,0xd2,0x3c,0x2d,0x87,0xbf,0x08,0x5b,0xb5,0x88,0xe1,0xf6,0x88,0xc1,
- 0x5d,0xed,0xa1,0xc1,0xb5,0x61,0x97,0xc0,0x5f,0x5e,0x9b,0x5a,0xc5,0x8f,0xe7,0x8c,
- 0xa7,0xc8,0x81,0x49,0xb9,0xf9,0xaf,0x63,0x50,0x67,0xae,0x4c,0x69,0x44,0x02,0x76,
- 0xd9,0x2f,0xad,0x38,0x46,0x20,0x92,0x0b,0x2f,0x09,0xb6,0x6b,0xa7,0x69,0xc3,0xae,
- 0x63,0x0e,0xa4,0x3a,0x06,0x3f,0x69,0x6d,0x4c,0x29,0x6b,0x72,0xf8,0x8b,0xe1,0x30,
- 0x21,0x3a,0x56,0x86,0xdc,0xf0,0xb6,0x71,0x89,0x6d,0xd4,0xc9,0x79,0x31,0xbe,0xb7,
- 0x91,0x98,0x35,0xf7,0x3d,0x9e,0xc6,0xd5,0x81,0xb2,0x3c,0xff,0xc5,0x8b,0x06,0xd4,
- 0x18,0x94,0x70,0x3a,0x52,0xc6,0x39,0x18,0xe6,0x95,0xce,0x64,0xfc,0x5b,0x9c,0x9e,
- 0x68,0x6c,0x91,0x2d,0x51,0x78,0x1c,0x5f,0x1b,0x63,0x58,0xce,0x53,0xc3,0xc0,0x7e,
- 0xf6,0xfa,0xdb,0x2b,0xf3,0xf8,0x4b,0x7d,0xa2,0x0d,0x41,0xd6,0x1a,0x41,0x7b,0xd5,
- 0xb4,0x0d,0x14,0xe2,0x2f,0x44,0x64,0xc5,0x68,0xa8,0x2f,0xa6,0x83,0x6d,0x38,0x3a,
- 0x97,0xed,0x4b,0xf7,0xdd,0x85,0x37,0x57,0x6e,0x6f,0x79,0x97,0xf9,0xf2,0xfc,0x57,
- 0xa7,0x59,0x63,0x15,0xcf,0x6b,0x26,0xfc,0xb5,0xd6,0x59,0xc7,0xc2,0x72,0xb3,0xeb,
- 0x96,0xbb,0xde,0x49,0xc8,0xfc,0x99,0x61,0x6d,0x74,0xed,0x5f,0xab,0xcc,0x1f,0x82,
- 0x31,0x1a,0x8a,0x14,0xe5,0xf1,0x17,0x7f,0x4c,0xad,0x36,0xd5,0x75,0x65,0xa5,0xb8,
- 0xe4,0x86,0x87,0xd1,0x38,0x2b,0x11,0x19,0xae,0xc6,0x04,0x07,0x06,0xbe,0x40,0xcb,
- 0x72,0x46,0xb2,0x30,0x67,0x8d,0x83,0xf0,0x8d,0x5e,0x6d,0x7d,0xd1,0x97,0x20,0xa9,
- 0x93,0xb7,0x93,0x08,0x39,0xf8,0xab,0x09,0x5e,0xe1,0x4d,0xf1,0x92,0xf5,0xca,0x6c,
- 0x86,0xf8,0x6b,0xc8,0x5f,0x88,0xbf,0xf6,0x2e,0x1e,0x0d,0x3c,0x94,0x7c,0xbb,0xe3,
- 0x0f,0x7c,0x7f,0xb6,0x64,0xbd,0xe7,0x4d,0xf8,0x3d,0x27,0x46,0x4c,0xf9,0x47,0xf8,
- 0x6d,0xfa,0xf6,0xec,0x4a,0xc4,0x5f,0x90,0xc3,0x5f,0x97,0x69,0x08,0x68,0x8f,0xfb,
- 0x0e,0x7a,0x29,0x0e,0xec,0xb2,0x70,0x27,0xfa,0x88,0x5c,0xd0,0xd7,0x4a,0x5e,0x60,
- 0x1f,0x51,0x48,0xcf,0x20,0x05,0xf0,0x20,0x52,0x78,0xc4,0xc2,0x9b,0xf7,0xc0,0x04,
- 0x43,0x7f,0x9e,0x2b,0x7d,0xde,0x1c,0xfe,0x3a,0x95,0xea,0xce,0xfa,0xdf,0x27,0xd8,
- 0xc5,0x17,0xbc,0x23,0x88,0xb0,0x6b,0x02,0x4d,0x24,0xaf,0xc5,0xaf,0x75,0x10,0x11,
- 0x96,0xbc,0x6a,0x5c,0x4a,0x55,0x5e,0xf0,0x8e,0x29,0x7f,0x6c,0x11,0x97,0x0e,0xe1,
- 0x46,0x76,0x2d,0xb5,0x60,0x28,0xe0,0xe2,0xbf,0x8e,0x9a,0xc9,0x74,0x85,0xd9,0xf1,
- 0x50,0xd9,0xdb,0x88,0x89,0xe6,0x67,0xb1,0x13,0xbe,0x2c,0xfb,0x99,0xf0,0xd7,0x35,
- 0xda,0xbf,0x22,0xd8,0x3f,0x07,0xda,0x17,0x66,0x11,0xba,0xfe,0x91,0xff,0x12,0xaa,
- 0x47,0xb4,0x7a,0x76,0x9a,0x4f,0xf0,0x8a,0x93,0xda,0x03,0xc1,0x0f,0xf2,0xf8,0xeb,
- 0xb1,0xa0,0xc7,0x54,0xbf,0x45,0xa7,0x8e,0x30,0x67,0x40,0xb5,0x71,0xae,0xe8,0x67,
- 0x13,0xf7,0xc1,0x3e,0xb1,0x21,0x1e,0x40,0xff,0xb0,0x63,0x1d,0x1b,0x6c,0xb3,0x31,
- 0xda,0x20,0xfe,0xd1,0x8a,0x54,0xe7,0xba,0xc7,0xfa,0x73,0xf8,0x8b,0x25,0xe8,0xc8,
- 0x02,0x37,0x29,0xbd,0xdb,0x5b,0x43,0x7b,0x93,0xf0,0xe7,0xcf,0x68,0x31,0x1c,0xe5,
- 0x23,0x26,0x6e,0x64,0x0b,0x13,0x23,0x90,0x79,0x7a,0xae,0xe5,0x8b,0x30,0xcb,0x63,
- 0x63,0xf3,0x2c,0xec,0xf6,0x18,0x5c,0xf3,0xb3,0x33,0x72,0x9d,0xdf,0xfb,0x99,0xa3,
- 0x14,0xb6,0x61,0xad,0x4c,0x89,0xd3,0xef,0x45,0x96,0xdf,0xe9,0x67,0xed,0xb2,0x72,
- 0xc5,0xb8,0x96,0xee,0x1e,0x0d,0x4c,0xe2,0xf6,0x33,0x6a,0x2d,0x10,0x97,0x98,0xf4,
- 0x0f,0xff,0x9c,0x7c,0xad,0xae,0x5f,0x91,0xe3,0x91,0xc7,0x5f,0x17,0x70,0xbc,0x6a,
- 0x33,0x95,0x27,0xe9,0x78,0x9f,0xd8,0xae,0xb5,0xf4,0x9c,0x7e,0x1a,0x38,0xfe,0xa1,
- 0x8a,0x9f,0xda,0x5f,0x39,0xe2,0x1d,0x73,0x21,0x68,0x32,0xde,0x25,0x63,0x30,0x70,
- 0x40,0xc9,0xe3,0x2f,0x15,0x37,0x4d,0x13,0x91,0xd4,0xa4,0x7a,0x1a,0x1d,0xce,0xbf,
- 0x18,0x2d,0x6f,0xf4,0x3a,0xf8,0x4b,0xbf,0x06,0x0b,0x7a,0x85,0x57,0x79,0xf2,0xa6,
- 0x45,0x04,0x34,0x72,0xd8,0xe1,0x12,0x3f,0x0d,0x8b,0x07,0xfc,0x97,0x93,0x36,0xff,
- 0x45,0xf8,0xeb,0x70,0x3b,0xf6,0xcf,0xd1,0x04,0xb9,0xc4,0x35,0x04,0x8e,0x6c,0x24,
- 0x45,0x87,0xf0,0x47,0x04,0x8f,0x56,0x36,0x02,0x1d,0xd6,0x7c,0xf2,0x0f,0x87,0x6c,
- 0xb0,0xc6,0x7e,0xcf,0x9e,0x83,0x9a,0x41,0x75,0x13,0xab,0xca,0xe3,0xaf,0x9e,0x8e,
- 0xa0,0x55,0x8c,0xae,0xbe,0x4e,0xcf,0x29,0xce,0x3d,0xc7,0xc1,0x5f,0x5a,0xa6,0x68,
- 0x04,0x36,0x99,0x73,0xc9,0x0f,0xff,0x20,0x7f,0x89,0x6e,0x0e,0x65,0x82,0x46,0x1e,
- 0x7f,0x65,0xaa,0xd2,0x38,0x5e,0x65,0xe4,0x4b,0xac,0x3d,0xa9,0xda,0xa7,0x22,0xfd,
- 0x14,0x0e,0x87,0xf8,0x3d,0x6d,0x69,0x88,0x14,0x18,0x37,0x42,0x03,0x5f,0x88,0xb0,
- 0x3e,0x6c,0x09,0x9f,0xe9,0x8c,0xb2,0x7e,0x2b,0xf9,0xb9,0x2a,0x9a,0xd4,0x2e,0xfc,
- 0x35,0x16,0xc1,0xfe,0xc1,0x3e,0x4c,0x9c,0xa0,0xc3,0xf3,0x8c,0x62,0x87,0x21,0x61,
- 0x6f,0x18,0x2f,0x21,0xfe,0x0a,0x8c,0xfe,0x97,0x49,0x18,0x80,0x45,0xaf,0xe3,0x78,
- 0x65,0x0d,0xbc,0xf4,0x5a,0xa0,0x3b,0x39,0x04,0xe8,0xfc,0xeb,0xde,0x8c,0x66,0xe4,
- 0xf1,0xd7,0x58,0xa4,0xc9,0xd4,0xf6,0x97,0x7f,0x84,0x43,0x19,0x3b,0x43,0x1f,0xf7,
- 0x5e,0x53,0x9b,0x06,0x02,0xa3,0xf8,0x26,0x5c,0xf3,0x36,0xf5,0x06,0x2e,0x78,0x26,
- 0xbd,0xe8,0x93,0x0c,0xe2,0xa5,0x2c,0x22,0x32,0xf1,0x27,0xfe,0xc0,0x27,0x8c,0xa6,
- 0x13,0x81,0x3c,0xfe,0x22,0x7e,0x19,0x08,0xf4,0x25,0xd1,0x08,0x35,0x0d,0x95,0x8e,
- 0x2f,0x45,0x23,0xd5,0x74,0xac,0x94,0x00,0xdd,0xef,0xb9,0xa0,0xc6,0x8e,0x9a,0x43,
- 0xbc,0x69,0xa0,0x64,0x54,0x50,0xcf,0x4d,0xd9,0x55,0x99,0xca,0x30,0x9c,0x36,0x16,
- 0xd0,0xc9,0xff,0xba,0x3c,0xff,0xd5,0x03,0xbb,0x2c,0x75,0x52,0xb0,0x5d,0xe1,0x01,
- 0xb5,0x8b,0xf8,0x2f,0xa3,0x66,0x48,0xed,0x60,0x41,0xe8,0xe0,0xbb,0x0c,0xad,0x43,
- 0x89,0x43,0x47,0x7b,0x2d,0x62,0x22,0x56,0x03,0x47,0x08,0x7f,0xfd,0xa1,0xec,0x9f,
- 0x4d,0x81,0xda,0x32,0xda,0xba,0x7c,0xfc,0x21,0x6e,0x5b,0x3c,0xb7,0x0c,0xfa,0xa2,
- 0xe4,0xcf,0x1b,0x68,0x00,0x22,0x32,0xdc,0xb6,0xac,0x9b,0x0d,0xb6,0xb9,0x2d,0x0d,
- 0x6b,0x07,0x8b,0x11,0x88,0x79,0x76,0x03,0x22,0xdf,0x48,0xd9,0x4a,0xd6,0xad,0x87,
- 0xfa,0x11,0x52,0x45,0xdd,0xf1,0x87,0xf8,0x1c,0x1b,0x76,0x59,0x6e,0x23,0x4d,0x81,
- 0x0a,0x20,0x9c,0x9c,0x0e,0xb8,0xdf,0x05,0xed,0x11,0xf4,0xa9,0xbb,0x11,0x9b,0xe3,
- 0xfe,0xb5,0x2e,0x8f,0xbf,0xf0,0x7d,0x86,0xb0,0xf3,0xce,0x97,0x3a,0xa0,0x06,0x8d,
- 0x1f,0xc3,0x07,0x10,0x6d,0x2f,0x4d,0x51,0xa4,0xca,0x60,0x4c,0x0c,0xa5,0x47,0xe2,
- 0x9d,0xf2,0x30,0x9b,0x80,0xc3,0x96,0x7f,0xaf,0xa2,0x4f,0x33,0x24,0xfe,0x3a,0x8a,
- 0x18,0xb6,0x29,0xe4,0xc6,0xcb,0x34,0x1d,0x16,0x5b,0xe8,0xae,0xdc,0x43,0x61,0x87,
- 0x71,0x11,0x88,0x78,0xd5,0xbe,0xe4,0xc5,0x11,0xb4,0x4e,0x8f,0x26,0x27,0xe1,0x77,
- 0xea,0x1d,0x7d,0xb5,0xe3,0x8a,0x8b,0xff,0x22,0xae,0xc4,0x9e,0xe6,0x8f,0x38,0x20,
- 0x0b,0x61,0x17,0x28,0x73,0xf4,0x61,0x23,0xca,0x4b,0xc8,0x05,0x1d,0xc0,0x96,0xcd,
- 0x22,0xd2,0x40,0x7e,0x1f,0x7c,0xd9,0x3c,0x88,0xbf,0x82,0x6e,0xfe,0x0b,0x47,0xc7,
- 0x54,0x6d,0xd8,0xe5,0xf4,0x0f,0x4e,0xab,0x8c,0xb2,0x06,0x92,0xb4,0xe3,0x53,0x4b,
- 0x07,0x2c,0x3a,0x5b,0xf2,0x29,0xfb,0x37,0x93,0xfa,0x67,0xc5,0xa8,0xf2,0x73,0xd8,
- 0x62,0x55,0x5e,0x08,0x1d,0x08,0xd6,0xe5,0xf1,0xd7,0x93,0x3c,0x6c,0xda,0xe3,0x85,
- 0xf3,0x4b,0xe2,0x2f,0x1a,0x14,0xa6,0x92,0x21,0x2f,0x71,0x10,0xf3,0x2b,0x20,0xf1,
- 0x72,0xa3,0x00,0xd7,0x86,0xa5,0x1a,0xac,0x21,0xcf,0x7f,0x1d,0x48,0x57,0xc7,0x85,
- 0xab,0x4f,0x07,0x65,0x02,0x64,0x1d,0x84,0x79,0x59,0xc4,0x71,0x5e,0xde,0xce,0xe7,
- 0xa5,0xb5,0x96,0xa2,0xd7,0xe0,0xe9,0xf4,0x6a,0x04,0x62,0x65,0x3f,0x32,0xf1,0x9e,
- 0x61,0xed,0xdb,0x89,0x1f,0x99,0x1b,0x3a,0x2a,0xde,0xc5,0x5d,0x38,0x9c,0xc7,0x5f,
- 0xe7,0x33,0x31,0x35,0xdc,0xa0,0x10,0xfe,0x0a,0xf7,0x97,0x10,0xfe,0xfa,0x50,0xaf,
- 0xb7,0x02,0x1e,0xa6,0x59,0x15,0x6a,0x8f,0x59,0x62,0x2c,0x1d,0x61,0x56,0xba,0x6a,
- 0xd8,0x9f,0x29,0x2f,0x6d,0xff,0xb5,0xb7,0x31,0x1b,0x68,0x50,0x9e,0x40,0x80,0x89,
- 0xe3,0x95,0xd6,0x5c,0xf1,0x87,0x57,0xbd,0xe8,0xb4,0x9f,0x97,0xe3,0x35,0x50,0x2a,
- 0x0c,0x63,0x51,0x5f,0xe0,0x02,0x2e,0x56,0x97,0x3d,0x8b,0x38,0x7a,0x71,0x17,0xe0,
- 0x23,0xbd,0xa9,0xbf,0x44,0x52,0xcf,0xd8,0xcf,0x7f,0x58,0xfa,0x53,0xf3,0x1a,0xad,
- 0x87,0xe7,0xdd,0xf1,0x87,0xb8,0x0f,0xa6,0xfd,0x3d,0x4a,0x58,0x9d,0x50,0x11,0x38,
- 0xf7,0x38,0xf3,0x3d,0xa3,0xbc,0x03,0xef,0xe0,0xef,0x5f,0x95,0xf2,0x64,0x29,0xa2,
- 0x75,0x00,0xd1,0xf1,0x29,0x20,0x98,0x1c,0x38,0xaa,0x94,0xc0,0x09,0x35,0xda,0x1f,
- 0x4e,0x57,0xce,0xf7,0x88,0x79,0x81,0xf8,0xcb,0xfb,0xbc,0xa7,0x84,0xab,0x0f,0x24,
- 0x66,0xc1,0x41,0xf3,0x36,0xcb,0x37,0xca,0x9e,0x06,0x71,0xb8,0x67,0xe2,0x76,0xf3,
- 0x3f,0x69,0xff,0x8a,0xa3,0xd1,0x8e,0x3f,0x39,0x87,0xbf,0x10,0xac,0xcd,0x6a,0xdb,
- 0x62,0x1a,0x03,0xd8,0xcf,0x51,0x39,0xee,0x16,0xfc,0x68,0xc6,0x81,0xf6,0xb5,0xd9,
- 0xe2,0xbb,0xd8,0x6c,0xe8,0x46,0x20,0x56,0x4c,0x81,0x88,0x82,0x67,0x6c,0x11,0x81,
- 0x88,0xf3,0x24,0xed,0xb5,0x87,0x57,0x0f,0xa9,0xeb,0x8b,0x68,0x2c,0xe6,0x65,0x6f,
- 0xb9,0x93,0x3d,0x42,0x38,0x37,0x8b,0xfd,0x9c,0x76,0xf1,0x5f,0xf1,0xf0,0x50,0x71,
- 0x24,0x48,0xcb,0xa0,0x18,0xee,0xcd,0xd0,0xcd,0xd6,0x4a,0x70,0x9d,0x5c,0x69,0x9c,
- 0xb9,0x05,0x77,0x4f,0xe0,0x3c,0x6c,0xcd,0x8c,0xc8,0xa3,0x45,0x8a,0xc0,0xa1,0x43,
- 0x30,0x5c,0x25,0xee,0x64,0xdb,0xf2,0xf8,0x0b,0xdf,0xf9,0x54,0x75,0x5a,0x09,0x61,
- 0x47,0xd5,0x51,0xfc,0x21,0x9d,0x5a,0x4b,0x22,0xcc,0xd8,0x05,0x0d,0x08,0xc4,0x92,
- 0x1f,0xf0,0x8f,0x77,0x34,0x38,0xd0,0xac,0x81,0x2e,0xd5,0x8b,0x60,0x45,0x7f,0x76,
- 0xc5,0xe1,0xc2,0xf8,0x43,0xc1,0x76,0x8d,0x7a,0x73,0xb4,0x57,0xcc,0xc6,0x5f,0xa6,
- 0xe4,0xbf,0x22,0x39,0x68,0x36,0xec,0x3e,0x72,0x0f,0x80,0xe7,0xee,0xa9,0xfc,0x97,
- 0xcd,0x0e,0x04,0x52,0x95,0x76,0x8b,0xae,0xac,0x86,0x71,0x53,0xc0,0xae,0xd5,0xc2,
- 0x4d,0x45,0x68,0x36,0xd7,0xb9,0xf9,0x5d,0x76,0x4c,0xef,0x22,0x0f,0xd6,0x85,0xbf,
- 0x0e,0xe9,0x39,0x96,0xaa,0xce,0x31,0x1a,0x24,0xdb,0x75,0xe8,0xd8,0x7c,0xd9,0x82,
- 0x6e,0xf3,0xea,0x50,0xca,0x37,0xc7,0x14,0xf8,0x6b,0x3b,0xc3,0x27,0x9b,0xc1,0xd6,
- 0xd0,0x76,0x5f,0x01,0xff,0x35,0xdf,0xbc,0x45,0xd2,0x67,0x41,0xc2,0x56,0x39,0xf8,
- 0xf6,0x20,0xfc,0x1c,0x2a,0x09,0x7f,0x7d,0x89,0x4e,0x33,0x5a,0x8b,0xf1,0x92,0x21,
- 0x2e,0x3d,0x8d,0xf7,0x3c,0xa5,0x06,0x5b,0x71,0xc6,0xe5,0xf1,0x17,0xec,0x0f,0x85,
- 0x6d,0xb6,0x0b,0xaa,0x96,0xdd,0x72,0x13,0x19,0x7a,0xc8,0xd4,0xee,0x4e,0x7c,0x29,
- 0xfd,0x3c,0xcc,0x23,0xe3,0xf5,0xec,0x4e,0x44,0x0a,0xc5,0x65,0x36,0xfe,0xc2,0xc9,
- 0xb0,0x92,0xb7,0x19,0x46,0x8b,0x7a,0xf3,0xa6,0x02,0xfe,0xab,0x41,0x0d,0x24,0x12,
- 0x59,0xef,0xd8,0xfc,0xa8,0x4e,0x81,0x64,0x80,0xbb,0x8c,0x2f,0x90,0x50,0xe2,0x9c,
- 0xdc,0x66,0x34,0xfe,0x32,0x81,0xdd,0x3b,0xbb,0xf8,0x51,0xbb,0x7b,0xa7,0x3f,0xaa,
- 0x9c,0x6b,0x3d,0xd3,0x1a,0x9d,0xe1,0x4f,0xb0,0x9f,0xe5,0xf9,0xaf,0x2b,0xa1,0xa6,
- 0xe5,0x5a,0x6a,0x89,0xe8,0xde,0x2f,0x04,0xb6,0x51,0x87,0x1b,0x0d,0x92,0xc9,0x72,
- 0x86,0x80,0xff,0x3b,0x05,0xb6,0x6d,0x75,0x28,0x2d,0xe2,0xbf,0xc6,0xf5,0xd8,0x14,
- 0xfe,0xeb,0x0a,0xc4,0x96,0xb8,0xd0,0xb1,0xfd,0xf1,0xe9,0xd4,0xf2,0x87,0x3c,0x70,
- 0x6e,0x42,0x8c,0xa6,0xcc,0x90,0xf8,0x62,0x50,0x59,0x88,0xa8,0x8d,0x22,0x12,0x6f,
- 0xc0,0x7f,0x39,0x46,0x33,0xc5,0x1f,0xd6,0xc0,0xad,0xb2,0xe5,0x59,0xb0,0x0f,0xa6,
- 0x6c,0x44,0x76,0x06,0x1a,0xb0,0x05,0x87,0x89,0x23,0xfe,0x0a,0xf1,0xe5,0xee,0xf8,
- 0x43,0x08,0x2f,0xc9,0x61,0x58,0x8a,0x36,0x74,0x0c,0x41,0x72,0xe5,0x2f,0x49,0x44,
- 0x86,0xf8,0x6b,0x85,0x5e,0xe6,0x65,0x6d,0x40,0xde,0x05,0xbb,0xdb,0xc5,0x7f,0xf1,
- 0xfb,0x5b,0xdd,0x68,0xbd,0x4a,0x84,0x9b,0xb2,0xad,0xa2,0xc5,0x7e,0x7f,0x0e,0x19,
- 0x61,0x81,0xc8,0x7c,0x4f,0x51,0x8b,0x8e,0xf7,0x10,0xc4,0x53,0xb7,0x17,0x39,0xf8,
- 0xeb,0x26,0xd1,0x2d,0x7f,0xb9,0x4a,0x80,0x23,0x57,0xff,0x2c,0xd1,0x7e,0x80,0xdd,
- 0x72,0x28,0x85,0xfd,0xb3,0x1d,0xbd,0x8b,0x43,0x66,0x4c,0x00,0xb1,0x5c,0x0c,0x27,
- 0x13,0x64,0xd9,0x0e,0x17,0xfe,0x9a,0x4a,0x07,0xa3,0xf1,0xbe,0x3c,0xa9,0xc0,0x96,
- 0x0e,0xf7,0x25,0x5d,0x19,0x32,0x5c,0x31,0xa5,0x38,0xa6,0xdb,0x94,0x37,0x5d,0xf1,
- 0x87,0x10,0xd3,0x6d,0x92,0xab,0xce,0x99,0x83,0x51,0xf0,0xb7,0xdb,0x86,0x7c,0xa3,
- 0x96,0x44,0xa7,0x89,0xc0,0x80,0x33,0x5e,0x9b,0xff,0xc2,0x1d,0x8d,0xe1,0xab,0xb5,
- 0xdc,0xc5,0x7f,0x19,0x44,0x72,0x89,0xa0,0xd0,0x20,0xc1,0x2e,0x69,0xa8,0x84,0xbf,
- 0x5e,0xe8,0x98,0x8f,0x2d,0x41,0x42,0x64,0xb7,0x71,0xf5,0x03,0xf6,0x86,0xb1,0x89,
- 0xf8,0xaf,0x6c,0x73,0x03,0x3c,0x01,0x0b,0xd2,0xda,0x10,0x73,0xc5,0x1f,0xee,0xe7,
- 0xf6,0xe9,0x2e,0xc5,0xd2,0x08,0xb4,0x45,0xc7,0x47,0x22,0xde,0x66,0x3f,0x37,0x1c,
- 0xda,0xcb,0xe8,0xc3,0x7b,0x5e,0x76,0xce,0x7b,0xc3,0x66,0x12,0xaa,0x06,0xf1,0x95,
- 0xc8,0xe3,0x2f,0x0f,0xae,0xc6,0xb8,0x66,0x12,0xd5,0xc2,0x2b,0xec,0x63,0xb1,0xb4,
- 0x91,0x15,0xab,0xf1,0x01,0x36,0x4f,0xb6,0xbc,0xc4,0x43,0x5c,0x8d,0xb3,0x41,0xb9,
- 0x3e,0xc7,0x8b,0x66,0xc2,0x06,0xb5,0xa2,0x15,0xd7,0xf0,0xbd,0x79,0xfe,0xeb,0x53,
- 0xde,0xf8,0x4e,0xb8,0x5e,0x99,0x0d,0x17,0x13,0x77,0x4c,0x06,0x1e,0x46,0xd8,0x75,
- 0x0d,0xb1,0x55,0x29,0xe1,0xaf,0x4b,0xfc,0x76,0x01,0xc4,0xac,0x4f,0xf9,0xed,0xf1,
- 0x95,0xeb,0x71,0xa1,0xfe,0x2d,0x41,0x33,0x55,0x29,0x85,0x5f,0xf0,0x3b,0xd2,0x81,
- 0x33,0xca,0xd7,0x0b,0xf8,0xaf,0x33,0x82,0xf6,0x3a,0x22,0xb7,0x1b,0xe1,0xcf,0xa3,
- 0x03,0x2c,0x82,0x73,0xec,0x80,0x99,0x8b,0x34,0x4c,0x14,0x76,0x28,0xb6,0x24,0xfe,
- 0xe7,0x23,0x04,0x55,0x97,0x94,0xa4,0x5c,0xfc,0x97,0x39,0x61,0x10,0xc8,0x62,0x31,
- 0xc4,0x56,0x77,0x65,0x05,0xfe,0x9a,0xd8,0x11,0x1b,0x12,0x6c,0xce,0x25,0x8a,0x3f,
- 0xec,0xf1,0x5c,0x35,0xae,0xf1,0xba,0x21,0xff,0x19,0xe5,0x6e,0xf8,0x24,0x65,0xe3,
- 0xaf,0x13,0x89,0x05,0xd9,0xf0,0x80,0x9b,0xff,0x3a,0x82,0xdd,0xb2,0x22,0xe2,0x9b,
- 0x25,0x4e,0x0b,0x25,0x3f,0x48,0xfb,0xce,0xba,0xc4,0x49,0x38,0x90,0x99,0xd7,0x17,
- 0xf8,0x8e,0x80,0x54,0x46,0xda,0x17,0xc7,0xdf,0xb0,0x21,0xdd,0x68,0x69,0x6b,0xd8,
- 0x9b,0xe6,0xa3,0xe9,0x45,0x5c,0x35,0x95,0xaf,0xe7,0xf0,0x97,0x77,0x91,0x29,0xba,
- 0x77,0x96,0x8a,0xee,0x81,0x55,0x80,0xbf,0xe0,0x05,0xb0,0x7b,0xfe,0x25,0x98,0x03,
- 0xea,0x5f,0x32,0x1d,0x9e,0xa1,0x4b,0x26,0x7b,0x1d,0xd7,0xb1,0x0a,0x0a,0xc5,0xc9,
- 0xf3,0x5f,0xce,0x71,0xb1,0x5f,0xcd,0x0d,0x37,0x39,0x9c,0xb7,0xd4,0x27,0x5e,0x35,
- 0x32,0x2d,0x7b,0xdf,0xf1,0x45,0x12,0x9f,0x40,0xf7,0x40,0x10,0x98,0xc1,0x54,0x96,
- 0xa4,0x3d,0x8e,0xe3,0xcc,0xe5,0x50,0xc5,0xd5,0xed,0xac,0xc5,0xc1,0x5f,0xd8,0xcf,
- 0xe8,0x09,0x07,0xa4,0x1b,0x2f,0xf8,0xa6,0x11,0x19,0x2d,0x76,0x00,0x3b,0x61,0x9c,
- 0x47,0x2d,0xed,0x80,0x72,0xcd,0xb8,0x98,0xad,0xb3,0x38,0x7a,0xef,0xb8,0xbf,0xd7,
- 0x58,0x62,0xa6,0x1c,0x67,0x51,0xcb,0xdf,0xa6,0xb8,0xf8,0xaf,0x8b,0xf4,0xa9,0x48,
- 0x0e,0x5b,0x2d,0xcd,0xf3,0x5f,0x26,0x05,0x19,0x06,0xf6,0xcb,0x4b,0x74,0xd2,0xbe,
- 0x53,0x5c,0xba,0x35,0xa3,0x9c,0x23,0x28,0x6d,0x8a,0x13,0x45,0xc3,0xc6,0x5f,0x70,
- 0x4d,0xff,0x16,0x7d,0xaa,0x91,0x0e,0x90,0xd1,0x99,0x5c,0x9a,0x77,0x38,0x11,0x08,
- 0x2e,0x92,0x40,0xe3,0x77,0x50,0x97,0x45,0xbf,0x25,0x02,0xa7,0xf1,0xd2,0x2a,0x4b,
- 0xb9,0x0d,0x7f,0xd9,0x82,0x34,0xae,0x87,0xa6,0x9b,0xff,0xaa,0xb4,0x56,0xe4,0xe1,
- 0x92,0xb2,0x36,0xcf,0x7f,0x65,0xa0,0xce,0x7a,0x42,0xa0,0x24,0x36,0x3f,0xee,0x3b,
- 0xc0,0x14,0xdc,0x80,0xf0,0xd2,0xbf,0x34,0x3f,0x87,0x48,0x6a,0x7e,0x3c,0xb4,0x83,
- 0x19,0x76,0xbc,0x9f,0xe0,0xbf,0x04,0xb5,0xb1,0xd6,0x0d,0xbb,0x6c,0xa3,0xc7,0x61,
- 0x3d,0x10,0x88,0xf5,0xcf,0xd7,0x13,0x55,0x71,0x71,0xce,0x9f,0x62,0xed,0xc6,0x0f,
- 0xd4,0xaa,0x16,0x75,0x2f,0xcb,0xe3,0x2f,0x7f,0xb7,0xb1,0x87,0x40,0x56,0x8e,0xb0,
- 0x16,0x71,0x56,0xc7,0x3b,0x11,0x41,0x9b,0x19,0x56,0x25,0xe7,0x69,0xa7,0x19,0x02,
- 0x84,0x66,0x40,0xe7,0x24,0xfd,0x5a,0x94,0xb5,0xf1,0xad,0x6a,0x18,0xd4,0xfa,0x02,
- 0xfe,0x2b,0xfe,0x79,0x1c,0x1d,0x8d,0xa6,0xc3,0x62,0x49,0x10,0x1f,0x91,0x07,0x14,
- 0x1f,0xc1,0x65,0xe3,0x05,0xf2,0x96,0x27,0xe1,0x2d,0x88,0x4e,0x9b,0xa5,0x2b,0x86,
- 0x79,0x82,0xdc,0xb9,0xa4,0xb6,0x93,0xef,0x30,0xea,0x00,0x9d,0x6d,0x37,0xff,0x55,
- 0x7f,0x97,0x4d,0x7b,0x51,0x1f,0x92,0x13,0x78,0xcd,0xb4,0xfb,0x79,0x4c,0x6f,0xb2,
- 0x4a,0x2f,0x21,0x50,0xfd,0xd4,0xb8,0xcb,0x5b,0x3a,0x5a,0x3e,0xca,0x27,0xe8,0xc4,
- 0xfe,0xd7,0x0a,0x25,0x47,0xdc,0x05,0x78,0xcf,0x5e,0x37,0xfe,0x6a,0x4a,0x94,0x58,
- 0x95,0xf8,0xf5,0x8d,0x6e,0xff,0xda,0x0b,0x74,0xd0,0x01,0x4d,0xbd,0xd3,0x71,0x7e,
- 0xb1,0xd3,0xbc,0x3b,0x5b,0x35,0x36,0x3d,0xe6,0x7d,0x9e,0x37,0x01,0x8e,0x8e,0x18,
- 0x2f,0xa3,0xb4,0x47,0xa9,0x81,0xd3,0xbc,0xc9,0xc4,0xe7,0x8c,0xe6,0xf0,0x97,0x8e,
- 0xbd,0x9a,0x52,0x7f,0x0e,0xd5,0xd9,0xce,0xfe,0xe0,0x49,0x75,0x63,0xd1,0x08,0x7f,
- 0xc9,0xb0,0x77,0x34,0x3b,0x5a,0x23,0x9c,0x3a,0xc4,0xd1,0xe7,0xdf,0x81,0xb3,0xa0,
- 0x93,0xd7,0x18,0x25,0x11,0x5f,0x18,0x92,0x0c,0x37,0x97,0x31,0xf4,0x99,0x5c,0xf1,
- 0x87,0x94,0xf6,0x55,0x06,0xbc,0x4d,0x37,0x00,0x5d,0xc7,0x93,0xde,0x6e,0xd5,0x66,
- 0xff,0x85,0xd3,0xae,0x0b,0xfe,0x0b,0x7b,0x55,0x67,0x1c,0x5b,0x6a,0x00,0xe7,0xce,
- 0x66,0x26,0x38,0x97,0x08,0xbb,0x90,0xc3,0x5f,0xf4,0x7d,0xb8,0x2f,0xd3,0x1c,0xe6,
- 0x9b,0xe4,0x91,0x20,0xf5,0xf3,0x5c,0x58,0xc1,0xcb,0x2c,0xa0,0x1d,0x14,0x9f,0x3c,
- 0x82,0xfb,0x57,0x4d,0xb3,0xda,0xc3,0x42,0x04,0xb7,0x67,0x16,0xd3,0x98,0x76,0x42,
- 0x69,0x1c,0x5f,0x89,0xd1,0x7c,0xfe,0xd7,0x84,0x1c,0x9d,0x2a,0x71,0xd0,0x21,0x38,
- 0xd6,0x6b,0x34,0x0b,0x0e,0x2b,0x23,0xfc,0x04,0x65,0xc3,0x75,0xe1,0xd4,0x1b,0xa7,
- 0xa3,0xfb,0xa3,0xda,0x5c,0xc4,0xd4,0x31,0x60,0x14,0xb2,0x7b,0x02,0x6a,0x42,0x81,
- 0x8c,0xc7,0xca,0xc7,0x1f,0xd2,0x74,0x28,0x01,0xed,0x38,0xfc,0xc1,0xbb,0x58,0xc4,
- 0x1f,0x7a,0xae,0xb1,0xa6,0xd6,0xc0,0x31,0x8a,0x98,0x12,0xd1,0xa1,0x5a,0x23,0x22,
- 0xb2,0xc6,0xa1,0xda,0x75,0xca,0xd5,0x65,0x38,0x04,0x86,0x88,0x29,0x6d,0xa2,0x15,
- 0x92,0xc6,0x34,0x87,0xbf,0x88,0xf6,0x2a,0xa1,0xef,0x73,0x82,0xf0,0x97,0x0c,0x18,
- 0x46,0x5f,0x34,0x33,0x7d,0x44,0x9d,0x98,0x16,0xb3,0xa6,0xa7,0x96,0x8e,0x78,0x8f,
- 0x79,0xa3,0x29,0xe2,0xe3,0xb6,0x9f,0xf0,0xc4,0xf4,0x2d,0xb8,0x38,0xb4,0x4f,0x40,
- 0x17,0xbd,0x3f,0xaf,0x17,0xc6,0x1f,0x9a,0x32,0x85,0xe1,0x7e,0x50,0x53,0xf8,0x9d,
- 0x5f,0x82,0xf9,0x2d,0x2a,0xcd,0x65,0xe1,0x81,0xd0,0x93,0x3b,0xe1,0xb3,0x96,0xfa,
- 0x63,0xf6,0x11,0x6c,0xa1,0x48,0xc2,0x03,0x89,0x6a,0x38,0xd2,0x1a,0x34,0xd5,0xcb,
- 0xec,0x82,0x3b,0xfe,0x30,0x6d,0x15,0xc3,0xcd,0x2a,0x2e,0x22,0x6b,0xc1,0xe1,0x41,
- 0x4c,0x0a,0x37,0xf5,0x88,0x28,0x53,0x1c,0x41,0x8a,0xb7,0xa1,0xf1,0x5a,0x82,0xc8,
- 0x2e,0x0c,0x9b,0x1a,0x37,0xd1,0x66,0xb7,0x86,0xfc,0x8d,0xb1,0x5c,0xfe,0x17,0x05,
- 0xbf,0x65,0x43,0x0f,0xb1,0xcf,0xc2,0x86,0xc4,0xda,0x6c,0x47,0x8b,0xc0,0x5f,0xb8,
- 0x66,0xae,0x67,0x3f,0xe2,0xdf,0x6f,0xab,0xce,0x16,0xdf,0x83,0x2d,0x8f,0xb7,0xcd,
- 0x09,0xa9,0xf7,0xb0,0xd7,0xf8,0x06,0x5e,0x1b,0xf2,0x21,0x76,0xd0,0x0f,0xb6,0xfd,
- 0x3d,0xa1,0xb6,0x91,0x3c,0xfe,0xba,0xc8,0x83,0x56,0x89,0x4f,0xf1,0x25,0x7a,0x21,
- 0x1c,0xf2,0x1b,0xca,0x49,0xff,0x44,0x59,0xf0,0x4f,0xfd,0xc0,0xfa,0xf8,0xa8,0x4e,
- 0x11,0x89,0xb8,0x25,0xf5,0xa6,0x22,0x59,0xff,0x0c,0xc4,0x3b,0x2f,0x43,0x63,0xa8,
- 0xb4,0x41,0x29,0x4d,0x5d,0x4c,0xd7,0x0f,0x23,0x6a,0x7b,0x2d,0x8f,0xbf,0x68,0x5a,
- 0xd5,0x9e,0x57,0x2e,0x99,0x08,0x10,0xfa,0xab,0x07,0x25,0xbf,0xdc,0x41,0x88,0xcc,
- 0x9c,0x90,0x11,0x89,0x47,0xd9,0x15,0x6f,0x53,0xbf,0x08,0x25,0x9d,0x80,0x46,0x28,
- 0x39,0xaf,0x8d,0x98,0xd7,0xf4,0xba,0xfe,0x42,0xfc,0x45,0x6b,0x66,0x49,0x46,0x0b,
- 0xe3,0xfb,0xd3,0x90,0x15,0x5c,0xf6,0xc4,0x3d,0x0d,0x10,0xa0,0xe3,0x88,0x33,0xe4,
- 0xfc,0x53,0x3f,0x8f,0x53,0xfe,0x57,0x0a,0x7b,0xbe,0x13,0xbf,0x21,0x01,0x79,0xfd,
- 0x04,0x08,0xb0,0x96,0xc7,0x5f,0x08,0xbb,0x6a,0x71,0x27,0x62,0x11,0xfd,0x51,0xa8,
- 0x05,0xd5,0x4c,0xe4,0x68,0x2f,0x3b,0xf4,0xa5,0xf5,0xbf,0x3c,0x0d,0xcf,0xd3,0xa5,
- 0x56,0x36,0xaa,0x6f,0x30,0x04,0xed,0xd5,0x08,0x22,0xee,0x3d,0xe2,0xc2,0x5f,0xd8,
- 0xcf,0xd5,0x69,0x5c,0x91,0x28,0xff,0xab,0xfa,0xdc,0xa6,0x35,0xc4,0x7f,0x71,0xc1,
- 0x7f,0x95,0x89,0xb0,0x43,0x11,0x91,0xf8,0x3c,0x5e,0xa2,0x0e,0xf7,0x6c,0x48,0xd6,
- 0xc6,0x37,0x3a,0xc9,0x62,0xd8,0xcf,0x86,0x3b,0xfe,0xb0,0x66,0x87,0x5a,0x5a,0xe6,
- 0xe1,0x08,0xb2,0x3e,0xeb,0xd3,0xc5,0x71,0x71,0xe8,0xcc,0x7f,0x93,0x9e,0x8c,0x40,
- 0x5b,0x9b,0xd1,0xc3,0x47,0x48,0x3e,0x8d,0x9d,0xec,0x4d,0x42,0x58,0x45,0x38,0xe0,
- 0xa7,0x18,0xf2,0x21,0xfc,0x3e,0x85,0xf1,0x87,0x29,0xff,0x3e,0x65,0x1e,0x1c,0x57,
- 0x63,0x99,0xd2,0xb4,0x47,0xc4,0x1f,0x22,0xec,0xd2,0x42,0x76,0x68,0x22,0x3a,0x54,
- 0x97,0x79,0x13,0xf7,0x0c,0x97,0x5f,0x46,0xbf,0xa9,0xb6,0x43,0x60,0xb4,0x4d,0xb0,
- 0x20,0x85,0x2f,0xff,0x94,0xf8,0xc3,0x9a,0x5e,0x9b,0xed,0x2a,0xb1,0x04,0xff,0x75,
- 0x90,0x26,0x5a,0xc6,0xe6,0xbf,0xca,0x85,0xef,0xe7,0xfd,0x19,0x4f,0x5a,0xe2,0xe6,
- 0x5a,0x4e,0x4c,0x8d,0x4c,0xea,0x9c,0x12,0x7f,0xe8,0xd7,0x35,0x2f,0x11,0x61,0x4b,
- 0xb6,0x48,0x2e,0x20,0xe8,0xf6,0x3c,0x99,0xf4,0x45,0x4b,0x77,0x08,0xda,0x2b,0x66,
- 0xa2,0xbb,0xf2,0x13,0x27,0xd5,0xa8,0xcf,0x85,0xbf,0xd0,0x5b,0x9e,0x29,0xd9,0x8a,
- 0x06,0xf3,0x04,0x7a,0xcb,0xfa,0x1b,0x39,0xfe,0xcb,0x53,0x63,0x9e,0x4e,0x35,0xa3,
- 0xa1,0xe0,0x7a,0xb8,0x9d,0xbd,0x07,0x1b,0x3d,0x7e,0x74,0xa4,0x77,0x55,0xb1,0x37,
- 0x88,0xdb,0x4a,0x15,0x65,0x0b,0xe3,0x0f,0x67,0xca,0xd8,0xc2,0x5a,0x07,0xb5,0xfd,
- 0x4c,0xf2,0x5f,0x3f,0x77,0x47,0x24,0x36,0x7c,0x8f,0x2e,0xe1,0x72,0xda,0x81,0xfb,
- 0x97,0xb9,0x51,0x30,0x62,0x65,0xaf,0x14,0xe2,0x2f,0xca,0xff,0xca,0x3e,0x1a,0xaa,
- 0xfe,0x22,0xa2,0xad,0x65,0xad,0x5b,0xeb,0xe7,0x2c,0x2f,0x6e,0x2d,0x7a,0x9d,0x52,
- 0x57,0x4c,0xad,0x15,0xfa,0x4d,0xc2,0x05,0x66,0x59,0xa2,0x3f,0xd1,0x66,0xdc,0x2f,
- 0x01,0xc2,0x56,0x19,0xa3,0xe8,0xce,0xff,0x32,0x62,0x6a,0x28,0x51,0x5e,0x41,0x44,
- 0xd8,0xcc,0x40,0x1f,0xf6,0x61,0x47,0x3c,0xa6,0x06,0x1c,0xe6,0x71,0x95,0xf5,0x79,
- 0xec,0xd5,0x69,0xb1,0xd9,0x9b,0x12,0xe5,0xe7,0xcc,0x01,0xe2,0x38,0xa6,0x55,0xfe,
- 0x6b,0x73,0x5f,0x6b,0x94,0x50,0xdb,0xc7,0xae,0xf8,0x43,0xc9,0x7f,0xad,0xe6,0xe8,
- 0xa2,0xb7,0x4c,0x1f,0x44,0xb4,0x85,0xf8,0x2b,0x1f,0x6d,0x58,0x8a,0x46,0xfb,0x15,
- 0x9b,0xae,0x42,0xd8,0xd5,0x24,0x89,0x95,0x2b,0xb0,0x98,0x3e,0xe5,0xca,0xff,0x22,
- 0x34,0xe1,0xb7,0xd3,0xbe,0xa4,0x41,0x68,0xab,0x94,0x8c,0x63,0x1e,0xbb,0xe5,0x1c,
- 0x9d,0x09,0x13,0xec,0x3a,0x06,0x8d,0x04,0xbb,0x16,0xc2,0xff,0x84,0x88,0xe9,0x6f,
- 0x55,0x5e,0x29,0xc4,0x5f,0x44,0x72,0xe1,0xab,0x65,0x40,0x89,0x13,0x7f,0xe8,0x8a,
- 0x36,0x44,0x14,0xd0,0xc1,0xe6,0xf3,0x6a,0x82,0x5d,0x1d,0x32,0x94,0x82,0x3b,0x5b,
- 0xdb,0xa9,0x02,0xfc,0x25,0xc3,0x0e,0x29,0xed,0x4b,0xb0,0x54,0x2e,0xfe,0x4b,0x66,
- 0x7b,0xe9,0x1b,0x99,0x61,0x16,0xcf,0xa4,0x96,0xa2,0x1a,0xa7,0x9f,0xab,0xc8,0x78,
- 0xcd,0xc6,0x5f,0x37,0xc9,0xf8,0x43,0xb5,0x20,0x08,0x9c,0x5a,0xdc,0x61,0xe1,0x5e,
- 0xb6,0xd1,0x3b,0xdf,0x2c,0xde,0xc6,0xe6,0x70,0x04,0xf2,0xf7,0x84,0xf4,0xe0,0x1e,
- 0xdc,0x10,0xe7,0x2e,0xa3,0xbc,0xbf,0xc2,0xf8,0xc3,0xb0,0xe8,0x1f,0x33,0x6a,0xaa,
- 0x33,0x3a,0x25,0x98,0xad,0x91,0xfc,0x57,0x97,0x19,0xde,0xa1,0x89,0xfe,0x59,0x57,
- 0xb2,0xdd,0x43,0x2d,0x8d,0xad,0x7e,0xfa,0x13,0x6f,0x08,0x6a,0x4c,0x19,0xb6,0xf1,
- 0x4e,0x0e,0x7f,0x69,0x43,0xb0,0x9f,0x35,0x3a,0xb1,0x85,0x8d,0xf4,0xf2,0x3b,0xc4,
- 0xe5,0x52,0x71,0x4f,0x8b,0xe6,0x64,0x84,0xd9,0x53,0xe6,0x70,0xfc,0x74,0xaa,0x10,
- 0x7f,0x45,0xc0,0xef,0xc4,0x1f,0xb6,0x3b,0x6c,0x57,0xfe,0x30,0x84,0x97,0x67,0x19,
- 0xa2,0x2d,0xbd,0xa6,0x43,0xf2,0x5f,0x7a,0x09,0x25,0xc6,0x0e,0xc0,0x03,0x14,0x9a,
- 0xe8,0xe2,0xbf,0x0e,0x3b,0x69,0x5f,0xc7,0x69,0xa3,0x17,0xf8,0xcb,0x1b,0xdc,0xa9,
- 0xe5,0x89,0xb0,0xfb,0x86,0x45,0x46,0xd8,0xe3,0x59,0x04,0x81,0x9b,0x18,0xde,0x93,
- 0x4d,0x20,0xfe,0xe2,0x95,0x5c,0xcd,0x32,0x9f,0xc7,0x94,0xcf,0x91,0xfb,0xd7,0x3c,
- 0x74,0x45,0xd8,0x93,0x2e,0x1e,0x3f,0xee,0x76,0x14,0xc9,0xf1,0x08,0xf6,0xaa,0x15,
- 0xb8,0x0f,0x12,0xff,0x55,0x1c,0x29,0xab,0xd1,0x93,0x70,0x1f,0xb9,0x22,0xae,0xf8,
- 0x43,0x5c,0x45,0x7f,0x41,0x69,0x5f,0x14,0x7f,0x48,0xbc,0xcc,0x97,0x4d,0xdc,0xd1,
- 0xfa,0xb4,0x6f,0xb1,0xb3,0xed,0x07,0xf5,0xea,0x01,0x0a,0x5d,0x68,0xd9,0x02,0x3b,
- 0x8f,0xe1,0x3d,0x27,0x29,0x2d,0xd7,0x9a,0xdf,0xca,0x66,0x1a,0x5b,0x9a,0xef,0xb5,
- 0x70,0x47,0x53,0x5d,0xf8,0x2b,0x13,0xa1,0x6c,0xaf,0xd9,0x84,0xad,0x86,0xfc,0xeb,
- 0x97,0x0a,0xfc,0x15,0x0f,0x3c,0x84,0xb0,0xeb,0x60,0x7a,0xf1,0xe8,0xbf,0x7c,0x57,
- 0xb9,0xba,0xe7,0x97,0x3c,0x32,0x8a,0x88,0xec,0x37,0x82,0xff,0x2a,0x59,0x83,0x37,
- 0xff,0x12,0xd7,0x67,0xff,0x3d,0x8a,0xaf,0x30,0xfe,0xb0,0x34,0xcf,0x95,0xa0,0x03,
- 0x3c,0xe1,0x79,0xc4,0xe6,0xbf,0x5a,0x62,0xaf,0x4d,0x77,0x2e,0xa1,0x7b,0x30,0x04,
- 0x22,0x35,0x2c,0xa5,0x88,0xd3,0xc2,0x7e,0x5a,0xc7,0x98,0xf4,0x37,0x28,0xfe,0xb0,
- 0x63,0x01,0xc1,0xae,0x98,0x71,0x9a,0x47,0xdf,0x2b,0xb5,0xf1,0x57,0x9c,0x80,0x18,
- 0xc2,0xae,0x5b,0xb3,0x7f,0x4e,0x2d,0xa7,0xdb,0xeb,0x86,0x4a,0xc7,0x3d,0x0d,0x70,
- 0x3a,0x75,0xfb,0x10,0xe2,0xaf,0xb9,0xb8,0xe0,0x2d,0x18,0xda,0xf2,0x39,0x45,0xcf,
- 0xe3,0xaf,0xee,0x74,0x45,0x7f,0xf5,0xed,0x3e,0xbf,0xb1,0x81,0x92,0xe9,0x1c,0xfc,
- 0xa5,0x52,0x6f,0x48,0x00,0x95,0x7c,0x1a,0x51,0x6d,0x90,0x5a,0xfc,0xb0,0x61,0x17,
- 0x42,0xd7,0x33,0xbe,0x28,0x74,0xa6,0xc2,0x59,0x6d,0xa6,0x6f,0xbe,0x2b,0xff,0xcb,
- 0x30,0x68,0x98,0x56,0x22,0x26,0xfa,0x71,0xbf,0x4f,0xc6,0x31,0xe2,0xfc,0xca,0x45,
- 0xdd,0x7f,0x13,0x8d,0x2d,0x74,0xe9,0xc1,0x84,0x1e,0xdf,0x60,0x54,0x1e,0xd7,0xe2,
- 0xb8,0x45,0x3e,0x0a,0x73,0x7a,0x3b,0x5b,0x1d,0xfc,0x15,0x9f,0x71,0x52,0x27,0xf2,
- 0x45,0x5d,0xc8,0x56,0x41,0xb2,0x75,0x6e,0x5f,0xc7,0xc2,0xe6,0x11,0x19,0xc8,0x71,
- 0x27,0x3b,0xd5,0xda,0xdd,0x1a,0x3e,0xb3,0x74,0x61,0x62,0xb3,0x17,0x51,0xb6,0xe5,
- 0xab,0xc7,0xe9,0x89,0x9e,0xe7,0x28,0x4e,0xab,0x30,0x85,0x4e,0x59,0xb8,0x1e,0xce,
- 0x94,0xf3,0x3d,0xfd,0x19,0xf2,0x9a,0x16,0x58,0xea,0x8b,0xec,0x11,0x38,0xe1,0x59,
- 0x74,0x1e,0x7d,0x63,0xc2,0x3b,0x35,0xaf,0x87,0x2f,0x11,0x51,0x68,0x35,0x8d,0x4e,
- 0x9f,0xf4,0x4c,0xb2,0x13,0x7c,0xd1,0xaf,0x7c,0x7b,0x95,0x30,0x3b,0xe1,0xe9,0xca,
- 0x22,0xb6,0x0a,0xe3,0xfb,0x5c,0x89,0x1d,0xbe,0xd4,0xfe,0x5d,0xed,0x60,0x0f,0x53,
- 0x54,0xd9,0x6c,0x5c,0x54,0x1b,0xac,0x5b,0x23,0xc9,0x11,0xcf,0x04,0x65,0x53,0xe2,
- 0x30,0x55,0xe4,0x03,0x47,0xf5,0x06,0x89,0xa0,0x45,0x4b,0x5a,0x1b,0x86,0x31,0xb3,
- 0x81,0x02,0x11,0x5d,0xf9,0x5f,0x9f,0x50,0x48,0xe1,0xa8,0x46,0x41,0x86,0x64,0x2c,
- 0x6d,0xf4,0xa2,0xd3,0xde,0x1f,0x18,0x4d,0x0a,0x82,0xa6,0x17,0xe1,0x00,0x7d,0xc3,
- 0xfd,0x2f,0xfb,0x75,0x74,0xe3,0x2f,0x82,0xd2,0x57,0x32,0xa2,0x44,0xcd,0xd3,0x70,
- 0x93,0xe5,0xff,0x4b,0x77,0xfc,0xe1,0x4b,0x22,0x7e,0x2c,0xb8,0x0f,0x3a,0x3d,0x32,
- 0xfe,0x90,0x9c,0x64,0x53,0xf0,0x5f,0x2f,0xe1,0xdb,0x4b,0x11,0x53,0x7a,0x37,0x43,
- 0x5f,0x6b,0x07,0xf1,0x29,0xe4,0x99,0xef,0x49,0xe0,0xe2,0x39,0x38,0x5f,0x72,0x1c,
- 0xae,0xf8,0xc3,0x20,0x7a,0x82,0xf7,0x85,0xe1,0x87,0x38,0x65,0x04,0xff,0xa5,0x79,
- 0x28,0xcf,0xa5,0x6c,0xc4,0x5b,0x40,0x84,0x91,0x1f,0x6e,0x52,0x68,0xe2,0x3c,0x5c,
- 0x7f,0x8c,0x0e,0xc9,0x83,0xc4,0xe5,0xfc,0x12,0xf1,0x87,0x2d,0x34,0xee,0x9f,0xf5,
- 0xfb,0x9e,0x84,0xac,0xe4,0xbf,0x92,0x6a,0x78,0x20,0x17,0x15,0x2c,0x4e,0xfe,0x8f,
- 0x40,0x9c,0xf8,0x2f,0xbf,0xde,0xad,0xce,0xb7,0x5a,0x18,0x83,0x3e,0x6e,0xc4,0x07,
- 0xd4,0xc8,0xb6,0x3e,0x09,0xbf,0x28,0xff,0xeb,0x53,0x33,0x6a,0x95,0x1c,0x98,0x5e,
- 0x6d,0xbe,0x05,0xb7,0x0f,0x3c,0x4e,0xc0,0xf9,0x84,0x11,0x6b,0x11,0x3e,0x76,0x13,
- 0xfa,0x75,0xa5,0xa3,0xca,0x59,0xec,0xe7,0xe8,0x99,0xa7,0x33,0xca,0x3c,0x73,0xc2,
- 0x38,0x7c,0xa6,0xba,0x5d,0x33,0x32,0xc7,0x42,0x87,0x07,0xfc,0xff,0xa4,0x98,0x4c,
- 0xb7,0xf1,0x97,0x47,0xa0,0xda,0x0b,0xc9,0xa3,0xfc,0x13,0x68,0x3a,0x79,0x9a,0x82,
- 0xd6,0xb0,0xe5,0x17,0x02,0xde,0xe6,0x00,0xef,0xa7,0xde,0xa6,0xd3,0x76,0xe4,0x67,
- 0xdd,0xa9,0xe9,0xaf,0x24,0x47,0xf9,0x64,0xe8,0x91,0x57,0x6a,0x2f,0x24,0x73,0xf8,
- 0xeb,0x32,0x9c,0x4c,0xdd,0x19,0x0f,0x5f,0x50,0x2e,0xa5,0x9d,0xf8,0x5e,0x9b,0x5f,
- 0xa6,0x89,0x56,0xd0,0x42,0x6c,0xd7,0x30,0xdc,0x25,0xe0,0x80,0x89,0x2d,0x03,0xfe,
- 0xd1,0x05,0x76,0xfc,0xa1,0xa5,0x0f,0x1b,0x38,0x77,0x98,0x7a,0x94,0x7d,0xf2,0x19,
- 0x19,0x5b,0xa8,0xfc,0x4c,0x92,0x5c,0x94,0xff,0x75,0xa4,0x5d,0xb4,0x7c,0x2c,0x5b,
- 0xd2,0xbe,0x1a,0x78,0x8e,0x07,0xd3,0x76,0xcf,0xd7,0xf6,0x23,0x80,0x8a,0xc8,0xf7,
- 0x79,0x60,0xda,0x48,0x19,0xf6,0x7c,0x4b,0xcb,0xc2,0xb2,0xfe,0xc2,0x78,0xec,0x4e,
- 0xdb,0xe8,0xcd,0x87,0x61,0x1b,0x38,0x3a,0x7b,0x21,0x44,0xb0,0x6b,0x33,0x27,0xf2,
- 0x05,0x9f,0x93,0xe7,0xbf,0xcc,0x4e,0x78,0x96,0xab,0x99,0xe6,0x11,0xc3,0x8e,0x9d,
- 0xdb,0x77,0x1d,0x00,0x17,0x18,0xcd,0xc2,0x15,0x5b,0xc4,0xa6,0x72,0xba,0xc4,0xef,
- 0x92,0x64,0x6b,0x4e,0x7f,0xe3,0x38,0xfa,0xac,0xf5,0xc4,0x37,0x7d,0xd4,0xac,0xb1,
- 0x1c,0xf9,0x5b,0x43,0x87,0x0f,0xce,0xf2,0xe5,0x84,0x58,0x8f,0x2a,0xad,0xea,0x10,
- 0xdc,0xb5,0x84,0xa0,0x34,0xff,0x8e,0x5c,0xfd,0x72,0xf1,0x87,0x87,0xf1,0x9d,0x5f,
- 0xc4,0x03,0x07,0xec,0xf0,0x4e,0x37,0x70,0x76,0x1d,0x50,0xb8,0x0d,0xbe,0xe2,0x12,
- 0x25,0x82,0xf5,0xc7,0x2c,0x77,0xfc,0xe1,0x4f,0xd8,0x30,0x3f,0x4c,0x91,0x69,0xf3,
- 0xe0,0xc4,0x14,0x32,0x7a,0xaa,0xb1,0x5f,0xca,0x38,0xd0,0x97,0x7f,0x9f,0x5a,0xc8,
- 0xf9,0xb7,0xf9,0xaf,0x33,0x9e,0x1a,0xbd,0x93,0x3f,0x9b,0x2e,0x91,0x2e,0xb1,0x9d,
- 0x17,0x79,0xc4,0x23,0xfb,0x47,0xff,0x50,0x71,0x77,0x54,0x8f,0x9c,0x7a,0x6d,0xea,
- 0xf3,0x65,0x62,0xbc,0x5e,0x67,0x57,0x99,0xcd,0x7f,0x0d,0x4f,0x6b,0x81,0x34,0xec,
- 0x45,0x24,0x75,0xb3,0xbf,0xa8,0xdb,0x73,0xa3,0xf8,0xf9,0xbc,0xb1,0x57,0x68,0x35,
- 0x54,0x49,0x12,0x19,0xc7,0xab,0x17,0x57,0x3f,0x3b,0xff,0x2b,0xe3,0xb9,0x19,0x36,
- 0xa4,0x6e,0x33,0x8a,0x29,0xb9,0xf8,0x99,0x5c,0xda,0x57,0xda,0x36,0x44,0xcb,0x43,
- 0x8c,0x42,0x13,0xab,0x87,0xb5,0x10,0xc1,0x8a,0x74,0x6d,0x3a,0xf4,0xd7,0xcd,0x82,
- 0x2c,0x1b,0x62,0xeb,0x71,0x05,0xb0,0xf1,0x57,0x18,0xb2,0xa9,0x1e,0xe2,0x26,0x10,
- 0x88,0xe9,0x8d,0xf8,0xd7,0x89,0x08,0x4b,0x37,0x8e,0x88,0x40,0xc4,0x8b,0x99,0x46,
- 0x6b,0x55,0xc3,0xd2,0x93,0xea,0x45,0x92,0xe6,0x30,0x34,0xc3,0xb4,0xd2,0xe8,0x8f,
- 0x89,0x4b,0xd0,0x68,0xa1,0x91,0xe7,0xbf,0xd8,0x84,0xd1,0x24,0x52,0xf9,0xcc,0xdf,
- 0x79,0xb1,0x33,0xcf,0xe7,0x47,0x67,0x44,0x1a,0xe7,0xc5,0xb4,0x9a,0xdd,0x8f,0xf3,
- 0x62,0x84,0x5f,0xd3,0x1f,0x4e,0x0b,0xea,0x19,0xfb,0xf9,0x65,0xfc,0x54,0x0e,0x7f,
- 0x0d,0xb3,0x01,0x6f,0x24,0xcf,0x57,0x96,0xfe,0x2f,0xc6,0xab,0x5e,0xd9,0x45,0xbc,
- 0x0c,0xa5,0x86,0x85,0x55,0x3a,0xbd,0xc4,0x4f,0xd9,0xf9,0x5f,0x03,0x37,0xf5,0xc0,
- 0xef,0xe0,0x0e,0xae,0x3a,0xd9,0x04,0x9a,0xfb,0xdc,0x6f,0x5a,0xee,0x00,0xd0,0x36,
- 0x28,0xbf,0xfb,0x1b,0x1c,0x57,0xc8,0x59,0xde,0x83,0xf0,0x0f,0x27,0xf1,0x53,0x51,
- 0xe7,0x9c,0xed,0x47,0x46,0x3b,0xdf,0x1d,0x6f,0x59,0x1f,0x94,0xe9,0x75,0x9b,0x6c,
- 0xc2,0xd1,0xee,0x70,0xee,0xee,0xf0,0x31,0xd6,0x45,0x44,0x58,0x5c,0x5b,0x97,0x90,
- 0x1c,0x99,0x7a,0xa7,0x2f,0x87,0xbf,0x3e,0xf6,0x3e,0x09,0x73,0xdb,0x11,0xc7,0xbd,
- 0x6a,0xfe,0x27,0xc3,0x1d,0x29,0xb2,0x8d,0x85,0x32,0xb7,0x82,0x6b,0xf5,0xc1,0x6a,
- 0xe8,0xd6,0x29,0xa5,0x22,0x87,0xbf,0x66,0xec,0x85,0x3e,0x88,0xf2,0x2f,0x3f,0x8b,
- 0x6f,0x38,0xa1,0xad,0x52,0x27,0x10,0x31,0x50,0x60,0xd8,0xa9,0x73,0x7b,0xe1,0x1d,
- 0x7c,0xce,0xaa,0xb4,0x52,0x6f,0xd0,0xa5,0x95,0x05,0xf8,0x4b,0x6c,0x0b,0xe8,0xc5,
- 0xb5,0x3b,0x5e,0x9c,0x2b,0xaf,0x84,0xc5,0x3c,0x5b,0xf2,0x0e,0x5e,0xd2,0x8e,0x48,
- 0x6c,0x47,0x07,0x6f,0xcc,0x23,0x80,0x58,0x0e,0x7f,0xed,0xe1,0x14,0x94,0x85,0x4e,
- 0xfb,0x7b,0x66,0x2e,0xda,0x70,0xdc,0x01,0x62,0xd7,0x53,0x00,0x14,0x79,0xe5,0x27,
- 0xde,0x41,0x30,0x62,0x37,0x69,0xb9,0xfc,0xaf,0xaf,0xc1,0x46,0x33,0x68,0xce,0x4f,
- 0x21,0xb6,0x42,0xb7,0x79,0x89,0x9b,0xff,0x42,0xc3,0x4b,0x8c,0x46,0xd1,0x90,0x0c,
- 0x3b,0xfc,0x9e,0xcd,0x91,0xb5,0x7c,0xdf,0x47,0x7e,0x6f,0x4d,0x6b,0x68,0x87,0x3b,
- 0xff,0xeb,0x71,0xcf,0x4f,0x96,0xa8,0x85,0x51,0x8b,0x6e,0x63,0x85,0xc0,0x71,0x92,
- 0x3e,0x23,0x44,0xb6,0x9b,0x5c,0xf4,0x3d,0x08,0xe8,0xc2,0xcd,0x14,0x87,0x96,0xc7,
- 0x5f,0x8f,0xf3,0x0a,0xd3,0x87,0xd8,0x6a,0xa7,0x8b,0x8e,0x09,0x99,0x6e,0xa6,0x46,
- 0x1a,0xb7,0x94,0xb1,0xd7,0xf9,0xcf,0x8d,0xbf,0x6b,0xf1,0x95,0xb1,0x76,0xbe,0xd5,
- 0x1b,0x6e,0x51,0xcb,0x5c,0xf1,0x87,0x14,0x9b,0xe1,0xd9,0x9c,0x08,0x66,0x79,0x41,
- 0xda,0x8e,0xcb,0x60,0x32,0x6d,0x47,0x93,0xfc,0xd7,0x02,0x28,0x7d,0x54,0xd9,0x89,
- 0x40,0x6c,0xf6,0x0c,0x7f,0x42,0x71,0xf2,0xbf,0xfe,0xe4,0xd2,0xb3,0xe3,0xa1,0xa6,
- 0xe5,0x81,0xc1,0x4a,0x19,0x5b,0xb8,0xca,0x0e,0x44,0xcc,0x07,0xc8,0xe5,0xfb,0x79,
- 0xab,0xd2,0x8f,0xf8,0xab,0x61,0x59,0xf5,0xaf,0x94,0x07,0xcd,0x2b,0x21,0xf4,0x49,
- 0xb6,0xe5,0xf9,0xaf,0x3f,0xc0,0xab,0xe6,0x7e,0x73,0xed,0x0f,0x9e,0xfc,0x8d,0x7e,
- 0xcc,0x3d,0x3a,0x5f,0xbc,0x7e,0xbc,0xce,0x20,0x4c,0x7e,0x3f,0x1d,0xfb,0xba,0x2d,
- 0xd6,0x21,0xf9,0x2f,0x8f,0x8d,0xbf,0x3e,0x80,0x8e,0xf6,0x60,0x48,0x6d,0x67,0xef,
- 0x9b,0x84,0xad,0x02,0x79,0x22,0x4c,0xe4,0x7f,0x91,0x51,0xe6,0xb4,0xf8,0x0c,0xbc,
- 0x87,0xf8,0x2f,0x74,0xf5,0xf7,0xc2,0x7c,0xc2,0x5f,0xa5,0xf6,0xbc,0x98,0xd6,0xcf,
- 0xdb,0x8c,0x74,0x33,0x7a,0xe6,0x43,0xd0,0xe6,0xee,0x55,0x1f,0x1a,0xde,0xfd,0x5e,
- 0x57,0x8b,0x76,0x3b,0xbe,0x36,0x3b,0x6f,0x12,0xfc,0xd7,0x90,0x4c,0x8c,0xd5,0x59,
- 0xd9,0xb4,0x88,0x83,0xbf,0xda,0x9c,0x94,0xc0,0x8d,0x12,0x76,0xfd,0x67,0x2f,0x00,
- 0xd1,0x5e,0x6c,0x23,0xf1,0x5f,0xdb,0xb0,0xe5,0x5f,0x8d,0x90,0xe9,0x8a,0x3f,0x9c,
- 0xf1,0x63,0x13,0x41,0xa8,0x19,0x7e,0xaa,0xbc,0x5f,0x04,0xd6,0x6a,0x4e,0x6f,0xe4,
- 0xa2,0x04,0x65,0xcf,0xe3,0x73,0x6c,0xe9,0x12,0x9b,0x3a,0x3c,0x26,0xf3,0x19,0x43,
- 0x72,0xbf,0x58,0x03,0x3f,0x41,0x10,0xf3,0xe2,0xb2,0x29,0x2f,0x7f,0xc1,0x30,0xa5,
- 0x40,0xce,0x94,0x40,0x2a,0xe9,0x18,0xce,0x24,0xd2,0xb5,0x37,0x9d,0xfc,0xaf,0x9d,
- 0x6c,0x60,0xa6,0x50,0xd2,0xa0,0x20,0x8d,0x1b,0xbf,0x3f,0x6e,0xc3,0x96,0xdd,0x10,
- 0xfc,0x97,0xba,0x92,0xe7,0xf2,0xbf,0xbc,0x21,0x78,0xc2,0xb4,0xd9,0xae,0x37,0x73,
- 0x61,0x87,0x5e,0x57,0xfe,0x57,0xde,0x18,0x62,0x2d,0xb0,0xc9,0x1b,0x24,0xd8,0x15,
- 0xc2,0x9b,0x6f,0xcb,0x84,0x10,0x7f,0x49,0x7f,0x2c,0x34,0x6d,0x2d,0x4b,0xb6,0xbf,
- 0x63,0xe5,0x62,0xa4,0xff,0x57,0xfb,0xd7,0x42,0x26,0x35,0x3a,0xe6,0x37,0x88,0x84,
- 0x17,0x81,0x02,0x7c,0x4e,0xfc,0xc6,0x0c,0xf4,0xf0,0xff,0x76,0x89,0x08,0xf9,0xfe,
- 0xfe,0x94,0xd5,0xf8,0x46,0x86,0x38,0xce,0x7a,0x98,0x6d,0xb6,0xbe,0x5f,0xf1,0xf7,
- 0x29,0xb5,0xd5,0xc1,0x5f,0x21,0x35,0x06,0xa7,0xf8,0xfe,0x6c,0x98,0xd8,0xae,0x29,
- 0xf9,0x5f,0xd3,0x85,0x71,0x2e,0xd7,0xa2,0xb5,0xd0,0xf9,0x21,0x5f,0x97,0xf5,0x8d,
- 0x69,0x3f,0x32,0x4f,0xf3,0x48,0xd6,0x3b,0xa6,0xd8,0xbf,0x8b,0xf0,0xd7,0x18,0xbc,
- 0x68,0xfe,0xaf,0xdc,0x83,0xcc,0xd2,0x11,0xef,0x04,0xb9,0x34,0x5c,0x59,0x8b,0xdb,
- 0xcd,0x6c,0xab,0x24,0xbd,0x74,0x2d,0x9f,0xe0,0xa4,0xc8,0xe1,0xc4,0x1f,0x0a,0xfd,
- 0x8d,0xd4,0x82,0x73,0xfe,0xf1,0x4a,0x04,0x59,0xfc,0xae,0xa1,0x42,0xff,0x50,0x18,
- 0xa3,0xb6,0x71,0xeb,0x38,0x1a,0x9f,0xf2,0xef,0x0c,0xf9,0x07,0xd0,0xd3,0x3b,0xdd,
- 0xd1,0x94,0x5d,0xe9,0x8a,0x3f,0xdc,0x1e,0x3f,0x92,0x5e,0x64,0xaa,0xeb,0x65,0x6c,
- 0x46,0x56,0x74,0x42,0x37,0xd4,0x8b,0xf8,0x43,0x0b,0xbb,0xa5,0x5f,0xc4,0x1f,0x7e,
- 0x9f,0x87,0x87,0x65,0x47,0x19,0x15,0xc3,0xaa,0x49,0x71,0xef,0x50,0x6d,0xfa,0xbe,
- 0xc4,0x5c,0xf1,0x87,0x07,0x23,0x3b,0x5f,0x99,0xf7,0x80,0x0c,0xad,0x1f,0xf8,0xcf,
- 0xfb,0x79,0x60,0x45,0x3c,0x78,0x16,0x5e,0xf2,0xdc,0x26,0xb8,0x36,0x02,0xc5,0x5c,
- 0xfd,0x26,0xb3,0x72,0xf8,0xcb,0x7b,0xa4,0x75,0x6e,0x6b,0x31,0xee,0x5f,0xee,0x71,
- 0x0f,0xd9,0x7e,0x26,0xb3,0x5b,0x04,0xdd,0x09,0xec,0x74,0x4b,0xf7,0xa0,0x71,0xc9,
- 0x17,0x62,0xa7,0x21,0xc9,0x6b,0x00,0x27,0x63,0x2e,0xfe,0x70,0x33,0x9d,0x7e,0x5f,
- 0xfa,0x46,0xcf,0xd2,0x53,0xc1,0x13,0x14,0xbb,0x72,0xe3,0x0e,0x27,0x3f,0x4a,0x30,
- 0x2c,0x13,0x66,0xc3,0x60,0xe9,0x8e,0x27,0x7f,0x87,0x60,0x16,0xf7,0x0b,0xae,0x7c,
- 0xe0,0xec,0xcb,0x38,0x65,0x54,0xf4,0x18,0xf7,0xa3,0x2f,0x41,0x7e,0x82,0xfc,0xb8,
- 0x32,0xf5,0x81,0x6f,0xd9,0x06,0x9f,0x30,0x62,0x03,0xf3,0x52,0x76,0xbe,0x43,0x20,
- 0xe5,0x8a,0x3f,0x84,0xb7,0xa1,0x7b,0x20,0x3c,0x5a,0x7e,0xc9,0x43,0xdc,0xd6,0x96,
- 0x1b,0xbb,0x97,0x94,0xde,0xb2,0xea,0x57,0xca,0x2c,0xf8,0x25,0xdc,0x6e,0xe1,0x32,
- 0xd8,0x68,0xac,0xc2,0xf5,0x70,0xf3,0x39,0x05,0xbe,0x64,0xef,0x5f,0x6b,0xe9,0x64,
- 0xe9,0x1c,0x7a,0xc2,0x43,0xcd,0x6f,0xb9,0xdd,0xe6,0x5b,0x9d,0x9f,0x23,0x5a,0x3e,
- 0x94,0x74,0x95,0x9d,0xdb,0xa5,0x36,0xef,0xa3,0x93,0x8a,0x39,0xea,0x76,0x27,0x7e,
- 0x9e,0x7b,0xd6,0xda,0xb0,0xab,0x48,0x86,0x14,0x16,0xf2,0x5f,0x85,0x86,0xe1,0x3c,
- 0xa7,0xc3,0xce,0x08,0x2b,0xe6,0x79,0xfc,0x55,0xe5,0x4d,0xfa,0xd3,0x96,0x16,0x9d,
- 0x2b,0xe6,0xa9,0x80,0x5d,0x22,0x83,0x8f,0x88,0xcb,0x76,0x72,0x2a,0x44,0x06,0x5f,
- 0xb7,0x51,0x65,0x69,0x2a,0x25,0x82,0xdd,0x94,0x3e,0x16,0x02,0xb6,0x2f,0xf8,0x1c,
- 0xae,0xab,0xc5,0xba,0xaf,0x59,0xbe,0x3d,0x50,0xbc,0x16,0xde,0xd2,0xa3,0x56,0x35,
- 0x9d,0x39,0xe0,0xf7,0xc9,0xc7,0xe5,0x6a,0xc2,0x30,0x05,0x71,0x89,0x46,0x48,0xcc,
- 0x8b,0x30,0x88,0x1c,0xb1,0x54,0xf9,0x2c,0xfe,0x21,0x64,0x78,0x75,0xda,0x85,0xbf,
- 0x60,0xc2,0xd3,0x44,0xe3,0xf5,0xba,0x2e,0x73,0x4f,0x88,0x67,0x54,0x9b,0xfa,0xb0,
- 0x7b,0x7f,0x0a,0x42,0x7f,0xe3,0x82,0x32,0xe9,0xf9,0x90,0xc5,0x5e,0x13,0xe7,0xf3,
- 0xd7,0x8c,0xc6,0xfe,0x80,0x85,0x2f,0xed,0xef,0x3c,0x4d,0x50,0x3a,0x58,0x59,0xa8,
- 0xbf,0x61,0xd9,0x61,0xbd,0x31,0x1b,0x76,0x59,0x75,0x64,0x3c,0x82,0x5e,0xca,0x82,
- 0x6c,0xc9,0x76,0x11,0x76,0x18,0x35,0xf7,0x49,0xe9,0x9b,0x26,0xc3,0x9f,0x56,0x1e,
- 0x61,0x27,0x48,0xb5,0xa3,0xc7,0xad,0xbf,0x71,0x04,0x76,0x71,0xa1,0xb6,0x81,0x20,
- 0x0b,0x9d,0xf6,0xf2,0x91,0x74,0xb7,0x31,0x9f,0xbc,0xf7,0x1a,0x11,0x9a,0xa8,0x95,
- 0x11,0xfe,0x82,0x60,0x5c,0x15,0xf1,0x87,0xac,0xc6,0x28,0xd9,0x8b,0xfd,0x9c,0xf4,
- 0xc6,0xb2,0x38,0x04,0x2e,0xfd,0x43,0xd2,0x8f,0x6a,0xa1,0xe4,0x11,0xa2,0x17,0x35,
- 0x11,0xde,0x69,0x50,0xa6,0x09,0x23,0xa9,0x3d,0xa3,0x97,0x54,0x05,0xe8,0xcc,0x8a,
- 0xdb,0x31,0x03,0xf3,0x89,0x58,0x59,0x49,0x07,0x14,0x04,0xcd,0x5c,0xfa,0x1b,0x87,
- 0x88,0x73,0x71,0xa3,0x2d,0x34,0x9e,0x25,0x23,0x8c,0xcf,0x09,0x5a,0x5a,0x7d,0x42,
- 0x68,0x74,0xa4,0xd5,0x88,0xe4,0x58,0xf5,0xcf,0xfd,0x13,0x0b,0xeb,0x9d,0xde,0x9f,
- 0xd1,0xd4,0x73,0xe9,0x6f,0x8c,0xb9,0xe3,0x0f,0xed,0x84,0xd6,0xa8,0x24,0xf4,0xc7,
- 0x2d,0x84,0xd2,0x47,0x19,0x51,0xcf,0x65,0xeb,0xfc,0x92,0x83,0x6e,0x34,0xd0,0x2d,
- 0x5c,0x2b,0x06,0x6e,0x55,0x46,0x73,0xe9,0x6f,0x5c,0x82,0x26,0x73,0x2a,0xc8,0xba,
- 0x4b,0x1a,0xe3,0x96,0xd3,0xc2,0x16,0x9b,0x74,0x52,0x41,0xf7,0x54,0x05,0x42,0x42,
- 0xa3,0xe3,0xa0,0x54,0xed,0xb0,0xf1,0xd7,0x3e,0xb8,0xec,0x9d,0xcd,0xfd,0x53,0xa6,
- 0xf9,0x03,0x24,0x98,0x83,0x7f,0x1d,0xa1,0x3d,0xba,0xa9,0x68,0xa8,0x51,0x8e,0xa3,
- 0x23,0x42,0x0e,0x48,0xa3,0x23,0x2c,0xde,0x3a,0xc2,0x05,0x36,0xff,0xe5,0x09,0xc3,
- 0xe1,0x74,0x8d,0xe5,0xa7,0x79,0xe1,0x9a,0x05,0x75,0x96,0xd6,0x48,0x09,0x89,0xf8,
- 0xe5,0x35,0xfa,0x39,0x47,0x38,0xc2,0x52,0xa1,0x81,0xb3,0x4e,0x2c,0x3b,0x61,0xd8,
- 0xd2,0x8a,0x43,0xb9,0x3f,0xe1,0xe2,0xbf,0xba,0x78,0xd8,0xfa,0x42,0xc1,0x6e,0x75,
- 0xc4,0x66,0xf6,0x21,0x43,0x86,0x8e,0xc6,0x11,0x33,0xb4,0x7a,0x05,0xf9,0xe1,0xdd,
- 0x9e,0x2a,0xf8,0x1c,0xe0,0x73,0x9e,0x14,0xa1,0x1d,0x45,0x63,0xf9,0xf8,0xc3,0x17,
- 0xf0,0xfd,0x56,0xa7,0xc0,0x01,0x4a,0x04,0x63,0x5f,0xd1,0x0f,0xa4,0x2a,0xfa,0xb5,
- 0x7b,0xd8,0x57,0xb0,0xe5,0x5f,0xd7,0x08,0xed,0xbe,0x83,0xe9,0xda,0x90,0xd6,0x42,
- 0xbc,0x4c,0xa6,0x82,0xb2,0x99,0x06,0xf2,0xfc,0xd7,0x68,0x26,0x66,0x56,0xd3,0xd7,
- 0xb8,0x08,0xe1,0xe1,0x80,0x30,0xd2,0x06,0xe2,0xaf,0xa4,0x1f,0xce,0xa7,0x33,0xfd,
- 0x81,0x9b,0x15,0xbf,0x39,0xa1,0xd6,0x87,0x10,0x91,0xf9,0x09,0x9a,0x19,0xd5,0xaa,
- 0x16,0x86,0x5f,0xa7,0x23,0x56,0xa0,0x80,0xff,0x9a,0xa4,0xa4,0x3c,0x7b,0xbc,0xec,
- 0xfc,0x2f,0x22,0x91,0xd7,0x55,0x4e,0xb6,0xfc,0x7c,0x06,0xe1,0x2f,0xed,0xa8,0x79,
- 0xcd,0xb3,0xc8,0x2b,0xa5,0x2c,0xf5,0xc5,0x50,0xba,0x95,0xce,0x40,0x54,0x31,0x94,
- 0x2e,0xfe,0x6b,0x9c,0x92,0xca,0xe5,0x30,0x35,0xd8,0xf1,0xe1,0x1c,0xc7,0xa2,0x1e,
- 0x3b,0xe1,0x59,0x16,0xa5,0x53,0xc7,0xb0,0x77,0x22,0x11,0x05,0x7b,0x28,0xeb,0xe0,
- 0x56,0xc1,0x69,0x7a,0xa2,0x74,0x32,0xe9,0xd2,0xdf,0x20,0x92,0x22,0x17,0x6e,0x61,
- 0x1b,0x42,0xee,0xe9,0x69,0x19,0x77,0x81,0x68,0x0b,0x11,0x48,0x05,0xd0,0x06,0xa4,
- 0xa3,0xe1,0xa9,0x8e,0x8b,0x8d,0x8c,0x72,0xc4,0xa0,0x40,0x7f,0x23,0x9c,0xef,0x67,
- 0x34,0xbe,0x82,0xbb,0xde,0x1c,0xa9,0x88,0xb8,0x1b,0xbd,0x02,0xec,0x67,0x91,0xf5,
- 0x1c,0x5f,0x21,0xef,0xf9,0x7c,0x66,0xfe,0x9a,0xb2,0xb7,0x45,0xb0,0x22,0xde,0x53,
- 0xa8,0xbf,0x31,0x94,0x8b,0x3b,0xb5,0x0d,0x21,0x86,0xb3,0x19,0x70,0xb7,0xa2,0xf9,
- 0x25,0xb2,0x95,0x67,0xca,0xad,0x8d,0x19,0x65,0xc5,0x77,0x8a,0x77,0x8c,0x82,0x7c,
- 0x7c,0x2e,0xfe,0xeb,0x45,0xa8,0x4d,0x85,0x5d,0xf9,0x5f,0x6b,0xd0,0x47,0x8a,0x12,
- 0xda,0x0a,0x15,0x7f,0x6c,0xa2,0xf1,0x9e,0x08,0x4d,0x5c,0xe0,0x64,0x84,0xdd,0x91,
- 0x2e,0xcd,0x92,0xc1,0xc4,0x3d,0x6e,0xfe,0x4b,0x6d,0x64,0x53,0xbd,0xb8,0x06,0xdb,
- 0x30,0x72,0x88,0xec,0xc5,0x1b,0x7b,0x7a,0x53,0xf9,0x2f,0xc7,0xab,0xcc,0x1d,0xef,
- 0x4f,0xdf,0xce,0x86,0xf4,0xf3,0x44,0x72,0xe9,0x42,0x4f,0xaf,0x31,0xee,0xa7,0x40,
- 0xc4,0x71,0x9e,0x4b,0x9c,0x11,0x1c,0x19,0x2b,0x8c,0x3f,0xcc,0xe1,0x26,0x35,0x07,
- 0xbb,0x7e,0x94,0x8b,0x1f,0x5b,0x8a,0xf7,0xf0,0x9a,0xd5,0x92,0xda,0xb0,0x76,0x09,
- 0x1f,0xdb,0xbb,0x91,0xf8,0xaf,0xed,0x6c,0x8a,0xfe,0x46,0xb1,0xf3,0x9c,0xe2,0x02,
- 0xf7,0xfb,0x08,0xd8,0xf2,0x1d,0x87,0x0c,0x1c,0x02,0xbd,0x79,0x35,0xec,0x27,0x7a,
- 0x3a,0x55,0x36,0x54,0x24,0x1c,0xf2,0x54,0xa2,0xa8,0x90,0xff,0x9a,0x67,0x3b,0xff,
- 0xcb,0x28,0xf9,0xc8,0xdc,0xaf,0xbb,0x81,0x58,0x79,0x62,0x19,0x5d,0x5a,0xae,0xce,
- 0x64,0x64,0x04,0x11,0xac,0xe1,0xa5,0x64,0x28,0x4d,0x22,0x7e,0x85,0xfa,0x1b,0x6a,
- 0x89,0xec,0xba,0x46,0xe2,0x26,0xce,0xc1,0xa8,0x59,0x63,0x77,0x66,0x08,0x5f,0xe3,
- 0xc7,0xa4,0x7e,0x82,0x2a,0xa4,0xed,0xc6,0x5a,0xa3,0x9e,0xcd,0x78,0x8f,0x39,0xf0,
- 0x20,0x8e,0xc5,0xb4,0x3c,0xfe,0x92,0xf1,0x87,0x0e,0x0a,0x10,0xf9,0x5f,0xfc,0x50,
- 0x95,0x9d,0x11,0x76,0x85,0xa8,0xb1,0x0b,0xe5,0xc4,0x91,0x35,0x99,0xb5,0xdb,0x92,
- 0x7b,0x10,0x9a,0xe1,0xc2,0x78,0x3e,0xef,0xfc,0xbb,0xe2,0x0f,0xaf,0x5d,0x0f,0x8a,
- 0x09,0x17,0x0c,0x96,0xe3,0xe8,0x88,0x41,0x29,0xaf,0x82,0x8f,0xa4,0x46,0x62,0x15,
- 0x5c,0x81,0x75,0x62,0xbc,0xd4,0x8f,0x64,0x20,0xa2,0xc3,0x7f,0xc1,0x94,0xf8,0x43,
- 0x37,0xfe,0x32,0xd0,0x8d,0xaf,0x93,0x8a,0x88,0x3d,0x2c,0x48,0xfa,0x51,0x86,0x90,
- 0xdd,0x10,0xfa,0x1b,0x5c,0xde,0xe3,0xf0,0x5f,0x7f,0xda,0xaf,0x16,0x80,0x59,0xb7,
- 0xb1,0xcc,0xbb,0xdf,0x43,0x19,0x61,0xcd,0x5e,0xef,0x4e,0x88,0x53,0x20,0xa2,0x57,
- 0xf4,0xb3,0xaa,0x97,0xf5,0x7b,0x29,0xf2,0xb3,0x93,0x78,0xc6,0x29,0xfa,0x1b,0x72,
- 0xb8,0x97,0x2c,0x77,0xc6,0xfd,0x16,0x49,0x84,0xcd,0x35,0x6f,0xd9,0xca,0x84,0x46,
- 0x62,0x5c,0x84,0x1d,0xe2,0x73,0xbe,0x14,0xda,0x66,0x83,0x35,0xad,0x90,0xff,0x4a,
- 0xe5,0xd4,0x36,0x5c,0xf8,0x4b,0x84,0xd1,0x8e,0x0f,0x52,0xfc,0xa1,0x52,0xa5,0xbe,
- 0x0f,0xd1,0x35,0xab,0x28,0xfe,0x70,0x1c,0xd2,0x71,0xff,0xd3,0x14,0x5b,0xc8,0xc4,
- 0x3d,0xc3,0x05,0xf1,0x87,0x6b,0xa6,0x1e,0x3e,0xe4,0x0f,0x28,0xdc,0x86,0xbc,0x14,
- 0x97,0xa1,0x89,0xa2,0x25,0x79,0xbc,0x20,0xfe,0xd0,0x99,0x7a,0x8f,0x80,0xdf,0x35,
- 0x07,0x0d,0x7c,0x91,0xba,0xe8,0x54,0x04,0xef,0x99,0xd9,0xf0,0x99,0xcd,0x6d,0xe2,
- 0x45,0x8a,0xde,0x24,0x42,0x13,0xcf,0x18,0x82,0x23,0xf3,0x15,0xc6,0x1f,0x6a,0xe9,
- 0x66,0x01,0xb2,0xda,0xfc,0x0e,0xda,0xba,0x65,0x4d,0x2e,0x22,0x71,0x7a,0x08,0x3e,
- 0x36,0x6b,0xd2,0x02,0x76,0xbd,0x98,0xee,0x42,0xb0,0x86,0x37,0xff,0xac,0x17,0x2f,
- 0x65,0xdd,0xf9,0x5f,0xfb,0xb9,0x0b,0x64,0x15,0x4b,0x63,0x6d,0xaf,0x16,0x2b,0xf3,
- 0x7b,0xbb,0x3d,0x06,0x85,0x60,0x9d,0xa4,0xfd,0x2b,0xab,0x1a,0x52,0x7e,0x01,0xd7,
- 0xba,0xb2,0x7d,0xfa,0x93,0x78,0xa9,0xb3,0xb1,0x68,0x93,0xcd,0x7f,0xdd,0x64,0x07,
- 0x21,0xac,0x2b,0x12,0xeb,0x73,0xb6,0x58,0x88,0x3f,0x30,0x6c,0x79,0x90,0x7d,0xd9,
- 0x73,0x50,0xe6,0x37,0x91,0x46,0x62,0x38,0x2e,0xf4,0x0f,0x5f,0x80,0xcf,0x5b,0x21,
- 0xd2,0x83,0xfd,0xb1,0x55,0x61,0xdd,0xf2,0x30,0x73,0xf2,0xbf,0x80,0xd6,0xde,0x1c,
- 0xec,0xaa,0xfd,0xa0,0x64,0x7d,0xf9,0xdb,0xfc,0xd3,0x8e,0xea,0x4b,0xda,0x7a,0x8a,
- 0x48,0xe4,0xb7,0x8f,0x06,0x1e,0x4e,0xbc,0xad,0x7e,0xca,0xef,0x44,0x8c,0xa6,0xcd,
- 0x86,0x2b,0xfc,0x76,0x92,0x3d,0xbc,0x0a,0xbf,0xa1,0xd0,0xc4,0x61,0xed,0x59,0x9b,
- 0xff,0x92,0xba,0x10,0xaf,0x3b,0xee,0xe5,0x20,0x9d,0xfb,0x99,0x13,0x71,0x3b,0xc2,
- 0xed,0x48,0x9c,0x42,0x13,0xd1,0x78,0x5f,0x9e,0x78,0xa0,0x93,0xe3,0x91,0xae,0x3e,
- 0xb3,0x33,0x8c,0xdc,0xfa,0x1b,0x91,0x05,0xa3,0xe8,0x4b,0x08,0x6d,0x8d,0xf7,0x02,
- 0x63,0x9e,0xab,0x02,0x5b,0x6d,0x1e,0x50,0x6a,0xcc,0x6b,0x03,0xe5,0xa3,0x5e,0xf2,
- 0x18,0xc7,0x79,0x6c,0xd8,0x3f,0x2c,0xfc,0xc3,0xfa,0x6c,0x78,0x5c,0x89,0x55,0x7c,
- 0xb8,0x2d,0x3a,0x14,0x78,0xca,0x39,0x7f,0x26,0xfe,0xeb,0xa5,0x36,0xec,0x84,0xef,
- 0x30,0xca,0xff,0x12,0xf8,0x6b,0x12,0x9e,0x41,0x37,0x55,0x7d,0x50,0xf9,0x0a,0xef,
- 0x86,0x4a,0x4b,0x64,0x84,0xbd,0x90,0xbe,0x33,0x8e,0x28,0x69,0x16,0x7a,0x68,0x6b,
- 0xb3,0x25,0x0f,0x29,0x8f,0xf0,0xc7,0x78,0xc5,0x70,0xe7,0x1a,0x36,0xdf,0xad,0xbf,
- 0x51,0x31,0x15,0xcc,0x3a,0x1b,0x62,0xb7,0x9d,0x5e,0x47,0x3a,0x27,0xcb,0x84,0x44,
- 0xf0,0xf3,0xf4,0x27,0xa2,0x6c,0x16,0x7f,0xc6,0x53,0x61,0x75,0x9a,0xb9,0xf8,0x43,
- 0x5d,0xc6,0x94,0x2a,0xce,0xb8,0xaf,0x20,0x0d,0x81,0xdd,0x82,0x00,0xf5,0x49,0x07,
- 0x46,0x5d,0x5c,0xb4,0x12,0xa7,0x79,0xe8,0x9e,0x62,0xe9,0xc9,0x84,0x47,0x8b,0x17,
- 0xc2,0x5a,0x22,0xc7,0x09,0x29,0xa8,0xae,0xf8,0x43,0x6f,0xe5,0xa0,0xdd,0xcf,0xa4,
- 0x4d,0x87,0x7e,0xf8,0x69,0xfc,0xa3,0xb4,0xd1,0x7b,0xae,0x41,0xb7,0xe5,0x1f,0x9d,
- 0x2e,0xb5,0x0d,0xfd,0x19,0xa1,0x78,0xbc,0x7e,0xc0,0xff,0x7c,0x79,0xa3,0xfa,0xa1,
- 0x90,0xaa,0xd6,0xe6,0x83,0x8d,0xbf,0x28,0xfe,0xf0,0x91,0x1b,0xc1,0xb7,0x03,0x6c,
- 0xad,0xdd,0x32,0x7d,0xad,0x78,0x4e,0xe9,0x76,0x79,0x96,0x3b,0x20,0x86,0x72,0xdc,
- 0x2b,0x88,0x4b,0xb7,0xfe,0x86,0xbe,0xc8,0x71,0x26,0x9b,0x2c,0x4a,0x04,0x83,0xdf,
- 0xe5,0x85,0x38,0x16,0x58,0x25,0xeb,0x92,0x0f,0xeb,0x57,0x20,0x32,0xb4,0xf2,0x3c,
- 0xb6,0x5c,0x85,0xa6,0xde,0xcd,0x74,0xe9,0x14,0x5e,0x0a,0x64,0x99,0x65,0xba,0xe2,
- 0x0f,0x17,0xe4,0xc1,0x11,0x39,0xd2,0xea,0x09,0x05,0x3b,0x73,0x61,0x90,0x28,0xbf,
- 0x4a,0x4a,0x23,0x0a,0xe3,0xfe,0x35,0xdf,0x52,0xb7,0xa1,0xd1,0x23,0xef,0x09,0xc3,
- 0x5e,0xbe,0xcb,0x5a,0x91,0x62,0x59,0xb7,0xfe,0x46,0xd0,0x79,0x4e,0x98,0xf8,0x2f,
- 0x12,0x5b,0xc0,0x7e,0xee,0x12,0x5e,0x77,0x95,0xfc,0xd4,0x21,0x1e,0xec,0x0d,0x09,
- 0x3f,0x9c,0xd7,0x48,0x45,0x8e,0x8d,0xc6,0xdc,0xde,0xce,0x6d,0xb8,0xc0,0xda,0xfb,
- 0x17,0x4e,0x3d,0x75,0x0f,0xe2,0x2f,0x82,0x03,0x10,0x3e,0xd3,0xe1,0x1c,0x98,0xa8,
- 0x32,0x10,0x91,0x92,0xbc,0x7c,0x38,0x4c,0x86,0x31,0x30,0x53,0x47,0x63,0x7f,0x7b,
- 0xcd,0x49,0x1c,0x77,0xbf,0x91,0xfe,0xdb,0xaa,0x97,0x35,0x28,0xeb,0x73,0xc7,0x1f,
- 0xe2,0xef,0xea,0x4a,0x8a,0xf1,0x1a,0xa0,0x44,0x30,0xf8,0x5d,0x6b,0x93,0xb5,0x12,
- 0x47,0xa7,0xfd,0x5a,0xeb,0x22,0xab,0xe4,0x0f,0x52,0x48,0x61,0xd9,0xe6,0x08,0x3a,
- 0xc0,0x63,0x77,0xe3,0xc0,0xed,0xd7,0xc2,0xbc,0xd7,0xac,0x1b,0x08,0x14,0x29,0x96,
- 0x2b,0xfe,0x30,0x24,0xbd,0x77,0xf3,0x1a,0xdc,0x7a,0x46,0x76,0xb8,0x81,0xf8,0x0b,
- 0xbd,0x41,0xf3,0x25,0xe3,0x2e,0xa9,0xbf,0x31,0x79,0xd3,0x4b,0xcb,0x70,0x97,0x41,
- 0xa3,0xaa,0xe9,0x24,0x21,0x3b,0xef,0xa4,0x89,0x97,0x5e,0x4e,0xe6,0xf2,0xbf,0x26,
- 0x11,0x29,0xc8,0xdc,0xc0,0x0e,0x9c,0x5f,0x74,0xbe,0x31,0x99,0x3e,0x6d,0x35,0x91,
- 0xf1,0x09,0xfc,0x9e,0x40,0xd6,0xc0,0xf4,0x46,0xf8,0x90,0x37,0x65,0xa5,0x22,0x22,
- 0xd4,0x99,0xa5,0xd6,0x6d,0x8b,0xf9,0x27,0xc6,0x02,0x8a,0x48,0xcc,0xe5,0x7f,0x4d,
- 0xea,0x22,0xb3,0xe3,0x28,0xbb,0x6a,0x62,0x1f,0x0e,0xfc,0xb7,0x1e,0xe5,0x25,0x78,
- 0xce,0x10,0xec,0xc9,0x49,0xfe,0x6f,0x56,0x30,0xab,0xf1,0x4d,0x35,0x14,0x76,0x68,
- 0xf9,0x08,0xa3,0x61,0x87,0x5b,0x7f,0xc1,0x59,0x23,0x7f,0x06,0xa2,0x06,0x7a,0x20,
- 0x2e,0xfc,0xc5,0x11,0xb1,0xc2,0x42,0xb7,0x3f,0x8f,0xfd,0x7c,0x4c,0x0a,0x3b,0xe8,
- 0xb8,0xe8,0x25,0x70,0x3a,0xec,0xb6,0x91,0x2f,0xce,0x8b,0x2a,0x40,0x9c,0x5b,0xbd,
- 0x35,0xa9,0x57,0x51,0xcc,0xdb,0x7d,0x0e,0xfe,0xda,0x0c,0x1d,0xb8,0xd9,0x49,0xfc,
- 0xc5,0x6c,0x7c,0xf1,0x5c,0x3e,0xb9,0x2f,0x48,0xd1,0xbc,0x82,0xd6,0x91,0xa9,0x4f,
- 0xb8,0x9f,0xb6,0x15,0x1b,0x89,0xb0,0x67,0x37,0x6d,0x88,0x3b,0xf3,0xf8,0x6b,0x12,
- 0x06,0x18,0xe1,0x2f,0xe6,0x82,0xc9,0x27,0x24,0x6b,0x4f,0xf0,0x1f,0x27,0xd1,0xce,
- 0x44,0xd8,0xc9,0x08,0x1b,0x21,0xe8,0x1a,0x2a,0x6d,0xc7,0x89,0xf6,0xe1,0xb4,0xba,
- 0x90,0xff,0x07,0x9e,0xd6,0x9c,0xfe,0x06,0xbb,0x84,0xc8,0x37,0x20,0xc8,0x5f,0x8f,
- 0x70,0xd1,0x9f,0x9e,0x72,0x2e,0x91,0x55,0x4e,0xda,0x2d,0x9e,0x49,0x18,0x4b,0x35,
- 0x76,0xac,0xea,0x15,0x97,0x7a,0xbc,0xb5,0x33,0xcb,0xf3,0xf8,0x4b,0xc5,0xbf,0x9e,
- 0xda,0xe2,0x4c,0xcf,0x3f,0xcf,0x94,0x8f,0x80,0x2d,0xe4,0x82,0x3f,0x10,0x57,0x51,
- 0x85,0x8b,0xe8,0x35,0xfb,0xfb,0xe0,0x8e,0xe6,0x2d,0xd9,0x2e,0x80,0x7c,0x17,0xf7,
- 0x73,0x2d,0xaf,0xbf,0x41,0xe9,0x90,0xdc,0xce,0xa6,0x14,0xdd,0x42,0xda,0x86,0xb6,
- 0x1a,0xc9,0x33,0x9e,0x20,0x1d,0xfb,0x34,0x8a,0x23,0x02,0xd1,0x72,0x88,0x80,0x6a,
- 0xa6,0x81,0x54,0x3b,0x82,0x3c,0xc4,0x0b,0xf4,0x37,0x78,0x98,0xaf,0x88,0x14,0x8e,
- 0x97,0x38,0x1b,0x1c,0x11,0x89,0x60,0x9d,0x20,0xb2,0xbd,0x6a,0xe4,0x78,0x75,0x61,
- 0x4b,0x31,0x4d,0xb4,0x27,0xc1,0xe0,0x2d,0x7a,0x73,0x4f,0x1e,0x7f,0x6d,0x08,0x55,
- 0xa7,0x73,0x2c,0x4c,0xf1,0xfa,0xb2,0x53,0x32,0x76,0x8e,0x44,0x0e,0x85,0x52,0x7a,
- 0x0b,0x7b,0xda,0x4b,0x21,0x73,0x02,0x3b,0x3c,0x9f,0x9e,0x37,0xac,0xde,0xc9,0x4a,
- 0xf9,0xf7,0xf9,0xbc,0xb4,0x7a,0x4f,0x59,0x87,0x9c,0x5e,0x84,0xbf,0xac,0x54,0xe3,
- 0x4c,0x44,0x52,0xa7,0xf8,0xc5,0xcf,0x34,0x0e,0x6f,0x21,0x6e,0xeb,0x84,0x1e,0xed,
- 0xf7,0x47,0x94,0x53,0xd6,0x7f,0xa8,0xf5,0xfd,0xab,0xb8,0xb6,0xd9,0x7c,0x39,0x85,
- 0xfd,0x23,0x68,0x2f,0xb3,0x7e,0xef,0xe3,0x1e,0xad,0x14,0x7e,0x0d,0x91,0x7e,0xbf,
- 0xce,0xb6,0xe5,0xf9,0xaf,0x31,0x91,0xff,0x95,0x9c,0x8c,0xd3,0xf9,0x06,0xd1,0x94,
- 0x6c,0xc2,0x98,0x3d,0x40,0xb4,0x97,0x2e,0x80,0x18,0x9f,0xfe,0xb0,0x75,0xcd,0x6b,
- 0xeb,0x82,0x5e,0x35,0x16,0xb5,0x07,0x76,0x0a,0x9d,0x13,0x92,0xa6,0x57,0x5a,0xa7,
- 0x1b,0x36,0xfe,0xe2,0x63,0xe4,0xa2,0x67,0x94,0x6a,0xe3,0x04,0x51,0x90,0xe2,0xf0,
- 0x2a,0x4f,0xa4,0x22,0x48,0xe7,0x4b,0xc3,0x36,0x95,0xb9,0x74,0x1f,0x1c,0x46,0x68,
- 0x16,0xce,0xdc,0x52,0x3d,0x70,0x42,0x15,0xf1,0x6c,0xcf,0xe6,0xf5,0x37,0x8e,0x32,
- 0x8f,0xd9,0xf2,0x00,0x23,0x7d,0xad,0x5a,0xb1,0xcb,0xa4,0x6d,0xfc,0x45,0x6a,0x5a,
- 0xf3,0x2c,0xad,0x55,0xf9,0xb2,0xd8,0x89,0x4a,0x45,0xc6,0x81,0x67,0x01,0xed,0xef,
- 0x8d,0xe6,0x6f,0x83,0x15,0xa6,0xd6,0xca,0x5e,0x03,0x07,0x7f,0x99,0x07,0xb9,0x41,
- 0x92,0xf2,0xa5,0x9c,0x48,0x2e,0xdf,0x7a,0x78,0xdb,0xcc,0x03,0xde,0x14,0xe2,0xaf,
- 0x81,0x44,0xa9,0xb9,0x41,0xb6,0xfc,0x08,0xba,0xdb,0xe6,0x64,0xd1,0x21,0x9f,0xcd,
- 0x37,0xa4,0xe6,0x10,0x34,0x73,0xe9,0x6f,0x74,0x0f,0x89,0xcc,0x56,0xca,0xc1,0xa4,
- 0x65,0x10,0x84,0x92,0xb3,0xed,0xc9,0xd0,0xf9,0xe1,0x2c,0x71,0x2a,0x62,0xcf,0xd3,
- 0x6e,0x33,0x3e,0xa8,0x12,0x00,0xff,0x21,0xec,0xe9,0xd7,0x22,0xcd,0x2e,0xfd,0x8d,
- 0xab,0x89,0x05,0x3d,0x61,0x0a,0x29,0xfc,0xe0,0x06,0xfc,0x17,0x82,0xac,0x21,0x11,
- 0x62,0x64,0xf3,0x5f,0x57,0xcd,0x83,0x29,0x7f,0x56,0xa3,0x96,0x45,0x99,0xc0,0x07,
- 0x2e,0xfd,0x0d,0x18,0xbb,0xa9,0x9e,0xf0,0x97,0x05,0xf7,0xe4,0x1d,0x3c,0x04,0xb3,
- 0xc2,0xf0,0x10,0x10,0x4b,0x66,0x59,0xde,0xf7,0x33,0x1e,0x81,0x80,0xb7,0x93,0x72,
- 0x97,0x1a,0x58,0x00,0xf2,0xf8,0xeb,0x3d,0x7e,0x8c,0x89,0xdc,0x2e,0xa2,0xa2,0x72,
- 0xb4,0x17,0x23,0x37,0x7e,0xc8,0x7b,0x3e,0x45,0x3a,0x03,0xca,0x32,0xef,0x31,0xf4,
- 0x45,0x6d,0x8c,0xd6,0xf8,0x75,0xa9,0x3f,0xcf,0x33,0xe4,0xd8,0x3b,0xf8,0x0b,0xbe,
- 0x0a,0x1b,0xf5,0x9a,0x25,0xaa,0x4c,0x16,0xab,0x11,0xf1,0x87,0x38,0x89,0xbe,0x6e,
- 0x7b,0xd4,0x88,0xb6,0x34,0x5d,0x59,0xad,0xbf,0x01,0x35,0xeb,0x72,0xd4,0x46,0xc9,
- 0x3f,0xe3,0x62,0xf6,0x06,0x5e,0x52,0x53,0xb9,0xfc,0x2f,0x4f,0x95,0x87,0x3c,0xea,
- 0x96,0x54,0x59,0x95,0xe3,0x5a,0xe3,0xcd,0x2c,0xe7,0x99,0x4b,0x65,0x06,0x78,0xca,
- 0x13,0x76,0x61,0xbd,0xed,0x54,0x39,0x22,0x2e,0x24,0x1a,0xf2,0xf8,0x6b,0x7f,0x1b,
- 0xc5,0x1f,0x22,0x0a,0x60,0x6d,0x88,0xbf,0x08,0x0e,0x00,0xe2,0xaf,0x65,0xc5,0x02,
- 0x88,0x91,0x70,0xe5,0x56,0xb6,0x2c,0x8d,0x97,0xac,0x9b,0x05,0x64,0x30,0xc2,0x2d,
- 0xc5,0x65,0xcc,0xcb,0xb7,0x1a,0x55,0x2d,0x21,0x17,0xff,0xb5,0x46,0xe8,0x6f,0x84,
- 0x13,0x49,0x23,0x3d,0x00,0x31,0x9d,0x3a,0x33,0x3d,0x66,0xd6,0xe8,0x1a,0x01,0xb1,
- 0xcb,0x84,0xbf,0xda,0x3f,0x1f,0xe7,0x3b,0x3c,0x31,0x50,0x6d,0xd7,0x7a,0x86,0xff,
- 0x51,0xa5,0x62,0x99,0xd5,0x5a,0x07,0xc4,0x7f,0x79,0x1c,0xfc,0xf5,0x13,0xc2,0x5f,
- 0xe4,0xab,0xeb,0x84,0xbf,0x04,0xe7,0x32,0x6e,0x34,0x48,0x20,0x76,0x9e,0x92,0x86,
- 0xee,0xae,0x14,0x8a,0xf4,0x36,0x22,0x2b,0x6b,0xea,0x0f,0xfc,0x4a,0xe4,0x7f,0xdd,
- 0x55,0x90,0xff,0x75,0x89,0xf2,0xbf,0x1c,0xc9,0x88,0x98,0x18,0x26,0x61,0x14,0x61,
- 0x8b,0xf7,0x17,0x60,0xe7,0xeb,0xbd,0x4f,0xf9,0x5f,0x8e,0xec,0x61,0x89,0x04,0x62,
- 0x02,0x65,0x17,0x79,0x9d,0xf8,0x43,0x6f,0x8f,0xc7,0xc6,0x5f,0x21,0x08,0x13,0xfe,
- 0x8a,0x43,0x1a,0xb1,0x55,0x31,0xb6,0xa8,0x7b,0x11,0x6d,0x75,0xca,0x88,0xc4,0x70,
- 0x5e,0xf6,0x50,0x05,0x25,0xee,0xc4,0x28,0x16,0xe6,0x7f,0x91,0x74,0x49,0xbf,0xcd,
- 0x7f,0x05,0xfb,0xf3,0x44,0x18,0x91,0x5c,0xb7,0x20,0xfe,0x22,0x8c,0xb6,0x84,0x60,
- 0x17,0xde,0x1c,0x37,0x8b,0xf5,0xa0,0x1d,0xa3,0x38,0x93,0xe5,0xf5,0x0f,0xbd,0x87,
- 0x96,0x12,0x6d,0x5a,0x34,0xa4,0xfe,0xab,0x83,0xdf,0xc9,0xf8,0x02,0x89,0x6c,0x90,
- 0x5a,0xa6,0x56,0xf6,0x75,0x02,0x62,0x61,0x4b,0x8e,0xbb,0x2e,0xc8,0x32,0x11,0xf5,
- 0xda,0xaa,0x6e,0x75,0xe9,0x6f,0xa8,0x88,0xbf,0xf2,0xdd,0x42,0xf8,0x4b,0x77,0x89,
- 0x6c,0x74,0x99,0x81,0x1d,0x5a,0x95,0x13,0xa3,0x88,0xfd,0x93,0x8e,0xb6,0x56,0xff,
- 0x73,0x52,0x6a,0x24,0x86,0x53,0x38,0xd1,0x1c,0xfc,0x55,0x35,0xce,0x04,0xfe,0xea,
- 0x77,0xd0,0xd6,0x6a,0xfb,0x80,0x62,0xe9,0x90,0xe7,0xbc,0x37,0x9f,0x59,0xd6,0x1c,
- 0x48,0x4d,0xcf,0xc1,0x2e,0x1b,0x5c,0xef,0x28,0xd0,0x9f,0x67,0x42,0xe4,0x30,0x3b,
- 0x83,0xa8,0x67,0x2f,0xa7,0x99,0x0b,0x36,0x23,0x36,0xa6,0xd2,0x3c,0x65,0x86,0x4b,
- 0x42,0xc7,0x6c,0x84,0x12,0x0f,0x01,0x31,0x23,0x42,0x2d,0x8e,0x8e,0xe2,0xb4,0x7a,
- 0x43,0xe6,0x7f,0x21,0xec,0xfa,0x01,0x6e,0x64,0xcb,0x25,0xff,0x25,0x19,0x31,0xef,
- 0x8b,0xf7,0x06,0xa5,0x34,0xe2,0x61,0xa8,0x4d,0xab,0xb4,0x6e,0x1c,0xf6,0xd4,0xa4,
- 0x5b,0x46,0x08,0x88,0xc9,0x64,0xb1,0x5c,0xfe,0xd7,0x17,0x9d,0xfc,0xaf,0x02,0xfc,
- 0x65,0xd8,0x2d,0x66,0xc8,0xb2,0x55,0xef,0xd0,0xfd,0xb6,0x09,0x91,0x6c,0x31,0xad,
- 0x63,0xbb,0x79,0x9c,0xa4,0x03,0x8e,0xe7,0xe3,0x0f,0x0f,0x7a,0xaa,0x47,0x84,0xf3,
- 0xff,0x7d,0xa8,0x1e,0x96,0x28,0x20,0x55,0x31,0x44,0x06,0x7f,0x9e,0xf0,0xd7,0xb7,
- 0x64,0xa0,0x78,0xb3,0x28,0x0b,0x72,0x10,0xc2,0x64,0xcc,0xe2,0x07,0x11,0x7f,0x69,
- 0xdf,0x2c,0x72,0xe9,0xcf,0x7f,0xca,0x9b,0xde,0x09,0xdb,0x24,0xd7,0x50,0x89,0x30,
- 0x3a,0x16,0x0c,0x93,0x10,0x07,0xff,0x94,0xcf,0xcb,0x06,0x2e,0x27,0x67,0xbb,0x14,
- 0x39,0xda,0x17,0xc7,0x4b,0xd6,0x28,0xb7,0xf2,0x6b,0x7c,0x7f,0x36,0xf0,0x90,0x4b,
- 0x7f,0xde,0x3b,0x01,0xb3,0x7b,0xc5,0x71,0xf1,0x7f,0xb3,0xfd,0x79,0x55,0xe0,0x2f,
- 0xb1,0x01,0x09,0xc7,0x5e,0x46,0x6b,0x10,0x47,0x46,0x20,0x82,0x12,0xc1,0xb4,0x8f,
- 0x68,0xed,0x2d,0xc0,0x5f,0x7f,0x04,0x77,0x58,0xd4,0x7b,0xc2,0x38,0x2d,0xb5,0x35,
- 0xae,0x19,0xc7,0x49,0x1f,0xe0,0xdb,0x8a,0x50,0x0c,0xb0,0x53,0xc3,0xd0,0x28,0x3d,
- 0xa3,0x34,0xc1,0x24,0x17,0x51,0x8b,0x96,0xc3,0x7f,0x1d,0x30,0x7f,0x9b,0xa9,0xa6,
- 0x48,0x1e,0xfa,0xed,0xb5,0x43,0x22,0xff,0x6b,0x0b,0xa2,0x48,0x01,0xc4,0x7e,0xc2,
- 0x85,0xfe,0xbc,0xe8,0x9f,0xb8,0x14,0xf2,0x4d,0x57,0x5b,0xf7,0xbc,0xce,0xfc,0xe6,
- 0x01,0xb8,0xc3,0x42,0x44,0x96,0xe3,0xbf,0x76,0xc0,0xf7,0x83,0x0e,0xc9,0xa5,0xdb,
- 0x3a,0x93,0x1b,0xbc,0xf6,0x3e,0xf8,0xa4,0x21,0xce,0x21,0xf1,0x4f,0x4c,0x73,0x8e,
- 0x28,0xeb,0xab,0x4d,0xdf,0xbd,0xbe,0x2f,0x4b,0x17,0x7d,0x9d,0xc3,0x7f,0x19,0x33,
- 0x06,0xca,0x70,0x6f,0xea,0xf5,0xd9,0x69,0x44,0x0e,0x01,0x1a,0x72,0x90,0x78,0xda,
- 0x52,0x16,0x6e,0xf2,0x4f,0xeb,0xa6,0x23,0x2f,0xd1,0x42,0x49,0xee,0x86,0xa0,0x00,
- 0xc4,0xae,0x37,0x90,0xc7,0x5f,0x3f,0x44,0x98,0x43,0xd1,0x74,0x2a,0xe1,0x2f,0xe1,
- 0x74,0x9d,0x66,0xc2,0x07,0x98,0x44,0xa7,0x22,0x6a,0x05,0x1e,0x94,0x0a,0xd5,0x76,
- 0x0c,0x0c,0x02,0xd5,0x9a,0xc3,0xda,0xc3,0x30,0xc1,0xea,0x08,0x13,0x7d,0x30,0x25,
- 0xff,0x4b,0x7a,0x05,0xa5,0xe2,0x39,0x6c,0xc2,0x26,0xd4,0x3c,0x1f,0xe6,0x79,0x34,
- 0x31,0x5e,0x23,0x3a,0x3d,0xb0,0x36,0x22,0x9e,0xdc,0x68,0x21,0x3a,0x76,0xe1,0xaf,
- 0x4f,0xf4,0x05,0x79,0xaf,0xb2,0x84,0xd0,0x5f,0xde,0xcf,0x4c,0x89,0x4b,0x0f,0x93,
- 0x0b,0x0a,0x9b,0x45,0x8b,0xda,0x68,0x96,0xbc,0x51,0xde,0x08,0xbf,0x48,0x29,0xf4,
- 0x7d,0x2c,0x3b,0xfe,0x10,0xd6,0xda,0x6a,0x00,0xd3,0xd7,0xba,0xf5,0x13,0x62,0xae,
- 0x83,0x7a,0x7a,0xa3,0xf0,0xd2,0x42,0x87,0xe3,0xa0,0x7d,0x87,0xf0,0xd7,0x7c,0x02,
- 0x50,0x39,0xfc,0x55,0x65,0xe3,0xaf,0xa0,0x0b,0x7f,0xe5,0x84,0xe8,0x0f,0x4b,0x68,
- 0x16,0x16,0x71,0x68,0x3e,0xe1,0xa2,0xa3,0xaf,0xbe,0x91,0x97,0xf9,0xf5,0x0e,0xe9,
- 0x8b,0xe6,0xf0,0x97,0xd7,0xd3,0x6d,0xa4,0xa5,0x44,0x03,0x8e,0x57,0x9f,0x9c,0x9e,
- 0xaa,0x3d,0x5e,0x51,0xb5,0xca,0x2a,0xee,0x92,0x53,0xb8,0xc5,0x49,0xe5,0x1b,0x2c,
- 0x06,0x56,0xa2,0xa6,0xa5,0xf2,0x5b,0x0e,0x7f,0xad,0x11,0xf8,0x0b,0x51,0xed,0x88,
- 0xc8,0x22,0x29,0x11,0xf9,0x44,0xc1,0x9a,0x3e,0x31,0x5e,0xc2,0x1f,0x1b,0x9d,0x8e,
- 0x30,0xb9,0xb5,0xd1,0x0c,0x4b,0x0f,0x7f,0x76,0x6b,0x09,0xaf,0x6c,0x24,0xfd,0x70,
- 0xf2,0xb1,0x73,0xf8,0x6b,0x0c,0x26,0xd6,0x52,0xfc,0x61,0xdb,0xc3,0xfc,0x9a,0x27,
- 0xd6,0x67,0x07,0x19,0x4a,0x6f,0x70,0xaf,0xe8,0xf0,0x03,0xca,0xa4,0x7a,0xcd,0x88,
- 0xb5,0x96,0xd8,0x47,0xf7,0x66,0x8d,0xa5,0x4c,0xf2,0x49,0x39,0x16,0x2e,0xfd,0x0d,
- 0x11,0x64,0xd8,0x43,0x31,0x54,0x3c,0x36,0x20,0x40,0xd6,0x08,0x61,0xe1,0x31,0xe5,
- 0x63,0xf6,0x89,0x28,0xf4,0x10,0x68,0x4c,0xe3,0x6b,0x73,0x4e,0xc1,0x16,0x38,0x89,
- 0x3d,0x5f,0x3a,0xa6,0xf9,0xe0,0x55,0x62,0x85,0x52,0x05,0xfc,0x97,0x8c,0x36,0xbc,
- 0x86,0x46,0xed,0x25,0x01,0xb2,0x0e,0xab,0x24,0x24,0x05,0x54,0x51,0x25,0x68,0xe0,
- 0x06,0xfd,0x5d,0xbc,0x54,0x35,0x20,0x64,0x0f,0x3b,0x28,0xd0,0x37,0xc2,0x42,0xea,
- 0x4e,0xbc,0x84,0x5e,0x41,0xa4,0x20,0xff,0xcb,0x12,0xba,0xa0,0x0e,0xbd,0x08,0x3b,
- 0x0d,0x23,0x2b,0xfa,0x19,0xf7,0xaf,0x6c,0x67,0xe4,0x6e,0x3a,0x98,0x0a,0xf7,0x09,
- 0xa6,0x38,0x4d,0x01,0xba,0x11,0x84,0x6f,0x49,0x6f,0x9c,0x23,0xfe,0xea,0x72,0xe9,
- 0xcf,0x7b,0x6b,0x0a,0xf1,0x3b,0x45,0xfc,0xd2,0x0e,0x6b,0x41,0x82,0x0c,0xb0,0x53,
- 0x0b,0xbf,0x80,0x97,0x58,0x87,0x10,0x88,0x80,0xd0,0x8e,0xdd,0x1d,0xef,0x80,0xaa,
- 0xb2,0x4c,0x41,0xfe,0x97,0x3d,0x2f,0x3c,0x31,0xeb,0x8b,0x94,0xd0,0x3a,0x6c,0x44,
- 0x29,0xa7,0x78,0x84,0x7f,0x40,0xfb,0x57,0x17,0x0b,0x3b,0xe9,0x90,0x78,0x29,0x8b,
- 0xfd,0x93,0xf1,0xcc,0x83,0x81,0xfe,0x68,0xcb,0xe6,0xc3,0x3e,0x9e,0xe7,0xbf,0x5c,
- 0x68,0x6b,0xb1,0x34,0x46,0xe1,0x25,0x7e,0x6b,0x56,0x19,0x35,0xa9,0xec,0xd7,0xad,
- 0x02,0x6d,0x79,0x17,0xc9,0x88,0xc4,0x4b,0xa9,0x6f,0x5b,0xb6,0x58,0xfd,0xe2,0x65,
- 0x68,0xac,0xcf,0xf3,0x5f,0x0e,0x07,0x2d,0x0c,0x81,0xdf,0x3f,0x90,0x6e,0xc6,0x08,
- 0x1d,0x4d,0xe3,0xf4,0xfc,0x2b,0xca,0x3e,0x8b,0xf5,0x6e,0xa6,0x14,0xce,0x13,0x66,
- 0x94,0x44,0x4d,0x43,0xfc,0xb8,0xd9,0x45,0xd2,0xf4,0x6e,0xfd,0x8d,0x3c,0xec,0xaa,
- 0x95,0xf3,0xeb,0x30,0xcc,0x4f,0x77,0xa6,0xf1,0x9d,0x3f,0xe2,0x41,0x68,0xc6,0xc5,
- 0x25,0x7b,0xea,0x6d,0xfc,0x4b,0x9c,0x8c,0xcf,0x97,0x21,0x88,0x4e,0x05,0xef,0x54,
- 0xff,0x0d,0x5c,0xfa,0x1b,0x39,0xd8,0xf5,0xa4,0xb3,0x7f,0x61,0x3f,0xa6,0x35,0x03,
- 0xfb,0x79,0xb7,0x29,0x2a,0xb8,0x9d,0x04,0x05,0x48,0x87,0x01,0x5f,0xac,0x36,0xd3,
- 0xb0,0xb4,0x43,0x2c,0x81,0x46,0x95,0x82,0xe3,0x5e,0xef,0xca,0xff,0x42,0x9f,0x7f,
- 0xc5,0x43,0xec,0x14,0x49,0xed,0x49,0x91,0xc3,0x17,0xf8,0xbc,0xb8,0x76,0x4f,0xd1,
- 0xdb,0x94,0x97,0x14,0xc7,0xf5,0xf9,0x14,0xc9,0x1e,0x8e,0x80,0x94,0xe3,0xab,0xa0,
- 0x9b,0x1b,0xac,0x47,0x3b,0xaa,0xd2,0xf0,0xd7,0x6c,0xbe,0x3b,0xff,0xab,0xd1,0x12,
- 0xf8,0xeb,0xd7,0xd0,0x38,0x5c,0x12,0x59,0x2a,0xd4,0x0e,0x13,0x01,0x43,0xe9,0x23,
- 0x9d,0xe4,0x76,0x74,0xb6,0x4f,0x36,0xbf,0x9c,0x6e,0xcc,0x22,0x22,0xfb,0x18,0x4e,
- 0x18,0x91,0x6c,0xa0,0x5e,0x49,0xf0,0x5e,0x58,0x98,0xf5,0xdf,0xe2,0x8a,0x3f,0x14,
- 0xfc,0xb2,0xc8,0xf6,0x22,0xfc,0x55,0x6a,0xcf,0x2f,0x13,0x9d,0xc0,0x49,0x3a,0x35,
- 0x32,0x71,0xca,0x4c,0x4a,0xea,0xf9,0xbc,0x0c,0xfd,0xa5,0x9b,0xc7,0x9a,0xaf,0xe8,
- 0x77,0x59,0xff,0xc6,0xa7,0xd6,0xff,0x12,0xb1,0x07,0x38,0x28,0xc3,0x62,0x11,0x1e,
- 0x97,0xf9,0x0e,0x71,0xb8,0xcc,0x85,0x31,0x92,0x9e,0xb0,0xa1,0x19,0x21,0x0e,0xba,
- 0x79,0x3e,0x3a,0xff,0x51,0x73,0x56,0x6a,0xa9,0x5b,0x7f,0x5e,0x1e,0xf7,0xfd,0x3b,
- 0x49,0xca,0xbf,0x29,0x36,0x97,0x8f,0xc0,0x4e,0xeb,0xfe,0x03,0xec,0x44,0xa3,0xf9,
- 0xdf,0x69,0x6b,0xb3,0x36,0xd9,0x99,0xc8,0x14,0x9b,0x71,0x14,0xda,0x19,0x62,0xd8,
- 0x56,0x27,0xfe,0xd0,0xd1,0x9f,0xef,0x5c,0x2f,0xfb,0x39,0x6b,0x13,0x61,0x15,0x86,
- 0xb6,0x92,0xdd,0x2d,0xf4,0x0f,0x45,0xfe,0x57,0x5e,0x1a,0x91,0x57,0x0c,0x61,0xcf,
- 0xdf,0x0c,0x29,0x0a,0x98,0x51,0xe7,0x17,0xe4,0x7f,0xd9,0xb2,0xf3,0x8e,0xb6,0x21,
- 0xa9,0x40,0x88,0x37,0x41,0xdf,0x0d,0xb9,0xbc,0x75,0x07,0x7f,0x65,0x0d,0x7a,0xd9,
- 0x36,0x72,0xbe,0xdc,0x38,0x83,0xf3,0xeb,0x3a,0xfd,0x79,0x45,0x6a,0x1b,0x0a,0x91,
- 0x8d,0xab,0x67,0x10,0x76,0xed,0x15,0xe7,0xd8,0xd1,0x29,0xd2,0x88,0x57,0xe3,0x5d,
- 0xd4,0x72,0x27,0xa2,0xc6,0xee,0xd4,0xe6,0x8f,0x6f,0xa0,0x3f,0xef,0x32,0x86,0xa1,
- 0x09,0x6e,0x15,0x6a,0xf3,0x96,0xd0,0xdf,0x90,0x69,0x5f,0xb7,0x3a,0xf7,0xdc,0x6a,
- 0x6b,0x47,0x40,0x6d,0x7b,0xf2,0x3a,0xfd,0x79,0xf4,0x33,0xdf,0x28,0x14,0xe2,0xd0,
- 0x88,0x26,0xb0,0x19,0x04,0xe7,0x92,0x4a,0x97,0x56,0x89,0x9c,0x23,0x23,0xb2,0x6c,
- 0x65,0xaa,0xf2,0x3a,0xfd,0xf9,0x3c,0x25,0x91,0x83,0x4b,0xc4,0x76,0xdd,0xf0,0xd2,
- 0xf6,0x4d,0x55,0xea,0x21,0x2b,0x7a,0x8f,0xfa,0xb4,0x6f,0x0a,0xff,0x25,0xee,0x79,
- 0x2a,0x7f,0xf3,0x2e,0xc2,0xd4,0x0b,0xe1,0xe7,0x71,0x3b,0xff,0x2b,0x77,0x69,0x3f,
- 0xfa,0xe1,0x3f,0x24,0x9e,0x5a,0x10,0x2b,0x37,0xb9,0xe3,0x0f,0xf7,0xe7,0x51,0x80,
- 0xc3,0xcb,0xe8,0x42,0xff,0x70,0x86,0xad,0x7f,0x28,0x2f,0xd9,0xfa,0x87,0x86,0xb1,
- 0xfc,0x16,0x41,0xd0,0x54,0xa5,0x5b,0xd4,0xe8,0x7d,0x6e,0xfe,0xcb,0xee,0xde,0xf4,
- 0x19,0x88,0xf9,0x64,0x87,0xaf,0x89,0xaa,0x36,0x7f,0x21,0x04,0x4f,0xc4,0x25,0x84,
- 0x66,0xec,0x9c,0x39,0xd6,0xda,0xa5,0x06,0xa6,0x21,0xfe,0xba,0xdc,0xda,0x05,0xe1,
- 0x47,0x5d,0xfc,0x97,0xf7,0x90,0xdd,0x87,0x7a,0x8e,0x34,0xb9,0x62,0x08,0xd9,0xf9,
- 0xa1,0xf4,0x38,0xad,0x63,0xdb,0x12,0x79,0x6a,0x0c,0xfe,0xc7,0x0c,0xa9,0x7f,0x08,
- 0x57,0xf4,0x3b,0x97,0xe1,0x1c,0x2c,0xcc,0xff,0xba,0x8e,0xff,0x5a,0x60,0x89,0xea,
- 0x00,0xaf,0x12,0x8f,0x6f,0x2b,0xae,0x4b,0xfc,0x75,0x85,0x6a,0xba,0x0d,0xa2,0x07,
- 0x72,0x65,0xda,0x02,0x73,0xe5,0xff,0x4a,0x7f,0xc3,0x06,0x59,0x01,0x99,0xff,0x55,
- 0x27,0x89,0x30,0xba,0xe4,0x13,0x01,0x96,0x9e,0xfb,0x49,0x44,0x9d,0xf0,0x97,0x50,
- 0xa4,0x9f,0x82,0xbf,0x5c,0xb4,0x57,0x50,0x6a,0xcb,0x6b,0x8e,0xec,0xbc,0x86,0xf8,
- 0xcb,0xc9,0x08,0xcb,0x89,0x75,0xac,0x14,0x51,0x1f,0x88,0xbf,0xca,0x6e,0xcc,0x7f,
- 0xe5,0x5f,0x12,0x91,0xff,0xd5,0x06,0x73,0xed,0x17,0x89,0x22,0x1b,0x05,0x34,0xfb,
- 0x9c,0xb8,0xe7,0x6b,0xe2,0xdd,0x28,0xd4,0x3f,0x74,0xf7,0x8f,0x14,0x2a,0x39,0x94,
- 0xee,0xc2,0x9b,0x29,0xff,0x8b,0xcb,0x17,0xdb,0x93,0xeb,0x1f,0x4a,0xd0,0x96,0x49,
- 0x79,0xe6,0xae,0x07,0xc3,0x54,0xff,0x4b,0xe2,0x9d,0x1b,0xea,0x6f,0x88,0x61,0x72,
- 0x1b,0xde,0xfc,0x25,0x6e,0x23,0xb2,0xf3,0x29,0x51,0x2c,0xec,0xcd,0x1b,0xf2,0x5f,
- 0x04,0xc4,0x58,0x56,0x68,0xcb,0x93,0xda,0xbc,0x2a,0x13,0xc1,0x2a,0x25,0x73,0x6d,
- 0x53,0x63,0x2f,0x90,0xa2,0x4b,0x85,0x31,0x06,0x0f,0x02,0x6f,0xbb,0x81,0xfe,0xbc,
- 0xa4,0xbd,0x5a,0x48,0xed,0xf0,0x30,0x1d,0x12,0x52,0xcb,0x8b,0x3c,0xc8,0x3b,0x5d,
- 0x42,0xf4,0xc3,0xfa,0x8b,0x3a,0xc2,0xae,0x91,0x6d,0x77,0xaa,0x2f,0xb6,0x56,0xee,
- 0x53,0x47,0x0a,0xf3,0xbf,0x44,0x1d,0x8d,0x42,0x1d,0x57,0x53,0x38,0x8a,0xdd,0x1d,
- 0x86,0xa3,0xc8,0x11,0xb2,0xa1,0x19,0xed,0x5f,0x54,0xff,0x8b,0x8c,0x96,0xc6,0x5d,
- 0x53,0xf5,0xe7,0x6d,0x5e,0x26,0x2b,0xe9,0x18,0x5d,0x26,0x3a,0x99,0x07,0xd5,0x3c,
- 0x65,0xf3,0x2a,0x51,0x63,0x6d,0x2f,0x10,0xe2,0x68,0x2d,0x9b,0x85,0x3e,0xa4,0xc0,
- 0x7a,0xee,0xfc,0x2f,0x97,0xda,0x7c,0xd6,0xd6,0x3f,0xbc,0x3d,0xfe,0x27,0xdf,0x46,
- 0xe3,0x2a,0x91,0x5c,0xdf,0x11,0x2d,0x77,0x0d,0xff,0xc5,0xfa,0xf2,0xdf,0xb5,0x5f,
- 0x4c,0x08,0x45,0x8e,0xd9,0xfa,0xa7,0x7c,0x27,0xdd,0x3c,0x25,0xff,0x6b,0x0a,0x9f,
- 0x62,0x9f,0xfb,0x19,0x6e,0x69,0x7a,0xaa,0x30,0xb5,0x96,0x74,0x8d,0xac,0x00,0xbf,
- 0x6d,0x44,0x8a,0xef,0x71,0x25,0x5f,0xff,0x4b,0x97,0x6a,0xf3,0x04,0xbb,0x78,0x93,
- 0x1d,0x7f,0x98,0x5a,0x90,0x2d,0x1d,0x4b,0x5e,0x85,0x71,0x34,0x02,0xe3,0x49,0x51,
- 0x1a,0xec,0x52,0x60,0xac,0x9c,0xf0,0x97,0x10,0x4b,0x8c,0x79,0xaf,0x25,0x62,0x54,
- 0xff,0xcb,0x95,0xff,0x85,0x90,0x4a,0xaa,0xf1,0x3f,0xe3,0xc4,0x1f,0x1e,0xe4,0x8b,
- 0xe2,0xea,0xba,0xc4,0x59,0x38,0x8a,0xbd,0x11,0x10,0xa1,0x89,0x7a,0xf5,0x90,0x2d,
- 0x5d,0x72,0x87,0xd5,0x12,0x62,0x37,0xc7,0x5f,0xc8,0x56,0x53,0x56,0xb8,0x9b,0xff,
- 0x92,0xfd,0x7c,0x32,0xa7,0x3f,0x8f,0x7d,0x68,0x0b,0x7a,0x1c,0xa0,0x0d,0xf1,0x81,
- 0x44,0x5e,0x9a,0x1e,0x76,0xeb,0x82,0x11,0xfb,0x13,0x38,0x68,0xe0,0xe0,0xde,0xe7,
- 0xca,0xff,0xca,0xfb,0x2d,0xbb,0x73,0xc7,0x86,0x89,0x2a,0x53,0x8d,0xa1,0xe7,0xd9,
- 0xd3,0x62,0x0c,0xfb,0x1c,0x86,0x45,0x70,0x64,0x0b,0x52,0x24,0x17,0xe6,0x53,0xd1,
- 0xe1,0xf3,0x0f,0xa9,0x75,0x4e,0xfe,0x97,0xa3,0x3f,0xbf,0xca,0x39,0x96,0x17,0xfd,
- 0x4c,0xd1,0x62,0x5f,0xbc,0x84,0xee,0xc1,0x04,0x1c,0x1e,0xd6,0x2e,0x21,0x92,0xfa,
- 0x10,0xf7,0x21,0xf2,0xf0,0x71,0x07,0x21,0x9d,0x76,0x8f,0xdf,0x3b,0x61,0x86,0x71,
- 0xc7,0x77,0x7e,0x57,0xca,0xc9,0xff,0xca,0x78,0x0a,0x64,0xe7,0x1b,0xff,0x8c,0xc4,
- 0xd3,0x2c,0x74,0xbf,0xa7,0x0c,0x25,0xd1,0x94,0xb7,0xa2,0xcb,0x87,0xcf,0xc1,0x95,
- 0xb6,0x20,0xff,0xeb,0x46,0xc9,0x2c,0x0b,0x96,0xf9,0xa5,0xfe,0x06,0xe1,0xaf,0xe4,
- 0x49,0xf8,0x5d,0xee,0xd2,0xb6,0x88,0xb5,0x92,0xf8,0xaf,0x5f,0xaa,0x0b,0xb2,0x9b,
- 0x33,0x4e,0xfe,0xd7,0xa3,0x39,0xfd,0xf9,0xc2,0x28,0xc1,0x5d,0xa4,0xd8,0x36,0x29,
- 0x68,0x2f,0x6d,0x54,0x71,0x85,0x14,0x1e,0x4e,0x50,0xdc,0xe0,0xfc,0x5a,0x78,0xd6,
- 0x0a,0xde,0x83,0x1e,0xa3,0xe1,0xce,0xff,0xba,0xfe,0x39,0x8e,0xc8,0xbc,0x3e,0x7f,
- 0xca,0xa5,0xfd,0x74,0xc9,0xc3,0x3e,0x0f,0x9d,0x7a,0x70,0x40,0xad,0xc7,0xe7,0xe4,
- 0xf3,0xbf,0xaa,0xc2,0x42,0xe4,0xd0,0xec,0x06,0x27,0xed,0x2b,0x28,0x94,0xd2,0x4f,
- 0x2e,0xe9,0x22,0x20,0x26,0x94,0xfa,0xca,0xaa,0xfa,0x04,0x17,0xb0,0x1f,0x11,0xb4,
- 0xc9,0xa2,0xd5,0xc6,0x2e,0xd5,0x68,0x51,0x1b,0x98,0x5d,0x07,0x5a,0xd4,0xff,0xaa,
- 0xcf,0x77,0xa6,0xac,0xff,0x35,0x11,0x0a,0x1e,0x13,0xfd,0x33,0x06,0x0d,0x32,0xc1,
- 0x04,0xa1,0x19,0x11,0xc4,0x1f,0xf9,0x27,0x8c,0xe8,0xeb,0xfe,0xcf,0x28,0x73,0x52,
- 0x27,0x8c,0x2e,0x2b,0xfc,0xbc,0x02,0xae,0xf8,0xc3,0xe0,0xad,0x82,0xe4,0x72,0xea,
- 0x7f,0x4d,0x4a,0xbd,0xca,0x51,0x07,0x64,0xed,0x57,0x8e,0xc2,0xef,0x8c,0xd8,0x71,
- 0x89,0xc8,0xf4,0xa6,0x81,0x40,0x9b,0xf0,0xfd,0xbe,0xfb,0x4a,0x60,0xff,0xd2,0x1c,
- 0xfe,0xba,0x54,0x2c,0xb9,0xad,0xe9,0x93,0xde,0x3f,0xf2,0xc3,0xfd,0x5b,0x64,0xda,
- 0x57,0xd4,0x3e,0xf1,0x30,0x16,0x0c,0xf8,0xf7,0x2e,0x6d,0xc0,0xa9,0xf7,0x08,0xb6,
- 0x2c,0x7d,0x44,0x54,0x9e,0xdd,0x4c,0x1c,0xd9,0x49,0x59,0x35,0x6c,0xd4,0xc9,0xff,
- 0x7a,0x4f,0x70,0x5b,0x2a,0x95,0xa4,0x3d,0xc2,0x82,0x67,0x03,0x84,0xbf,0x3e,0x44,
- 0x90,0x55,0x8c,0xc6,0xb4,0x97,0xac,0xca,0x51,0x35,0x9d,0x78,0x16,0xde,0x42,0x8c,
- 0xb6,0xa2,0x07,0xb1,0xf0,0x73,0x6d,0xc1,0x38,0xde,0x7c,0x05,0x3a,0x8c,0xe0,0x39,
- 0xa1,0x77,0x61,0xe7,0x7f,0xb5,0xc3,0x4e,0xe9,0xb3,0xbd,0x8a,0x83,0x12,0x1a,0xd8,
- 0x28,0x1c,0x7b,0xd5,0xb0,0xe3,0x72,0x4d,0x63,0xf0,0xe6,0x20,0x45,0x2d,0xda,0xbe,
- 0xdf,0x4d,0x19,0xa8,0x32,0x8b,0x23,0x45,0x27,0xa7,0xa5,0xfd,0xa2,0xc5,0xd1,0xdf,
- 0x98,0xf1,0x13,0xef,0xbf,0xd2,0xb9,0x96,0xc8,0xf2,0xeb,0x08,0xda,0xe0,0x5a,0xd9,
- 0x25,0x46,0x59,0xa5,0x17,0xc0,0xb7,0x37,0xf8,0xac,0xf1,0x43,0xc4,0x68,0x2b,0xe8,
- 0xd2,0xde,0x9b,0x82,0x4b,0x8a,0x69,0xa5,0xdd,0xa8,0x12,0x36,0x87,0x9c,0xfe,0xc6,
- 0x7b,0xfc,0x39,0x4e,0x5c,0x12,0xde,0x33,0xc6,0x1b,0xec,0x30,0x51,0x47,0xe6,0x9d,
- 0xe2,0xf4,0xbe,0xd8,0xf3,0xb2,0x46,0x6a,0x1b,0x22,0x22,0xd1,0x3b,0x3e,0x50,0x47,
- 0xc1,0xa5,0x23,0x6c,0xc0,0x7c,0x91,0x5a,0x72,0xfa,0x1b,0xdb,0xe1,0x6d,0x66,0x4b,
- 0xca,0x5f,0x01,0x57,0x31,0xb5,0x92,0x51,0xcf,0xc3,0xf0,0x29,0xfc,0xdc,0xaa,0xce,
- 0x22,0xda,0xba,0xe6,0x48,0xd6,0x8c,0xb5,0x37,0x9a,0xc2,0xe7,0xff,0xa3,0x90,0xc4,
- 0xcc,0xc7,0x1f,0xfe,0xd8,0x95,0x57,0xdb,0x4b,0x5c,0x49,0x3e,0x2a,0x78,0xad,0x40,
- 0x88,0x25,0x7b,0x64,0x39,0x0f,0x5c,0x13,0xd8,0x88,0x71,0xce,0x7c,0x81,0xee,0xd9,
- 0x87,0xdf,0x07,0x5f,0xad,0xee,0xca,0x5f,0xd9,0xf9,0x5f,0xd3,0xe6,0x9a,0x87,0x67,
- 0xd6,0x5c,0x52,0x09,0x7f,0x75,0x0f,0x56,0xe6,0xf5,0x21,0xc5,0x2f,0x7d,0x49,0xa9,
- 0xb5,0x14,0xda,0xbf,0xa8,0x45,0xa1,0x42,0xd5,0x3b,0x44,0x32,0xa6,0x40,0x64,0x41,
- 0x4b,0xbb,0xc4,0xfe,0xe8,0xe0,0xaf,0x65,0x22,0x0e,0xcd,0x3e,0x73,0x08,0xe1,0x56,
- 0x52,0xb4,0x52,0xf0,0xcb,0x76,0x41,0xa8,0x30,0xf1,0x8c,0x96,0xda,0x0d,0x55,0xbd,
- 0xb8,0x8e,0x7d,0x04,0xdb,0xa4,0xd6,0xd0,0x66,0xe2,0xbf,0x2c,0xad,0xde,0xd1,0xdf,
- 0x18,0xf3,0x94,0xc1,0xc1,0x76,0xdb,0xe7,0x7f,0x09,0x7d,0x7e,0x89,0x0b,0x52,0x44,
- 0xd0,0x34,0xbf,0x0d,0x8b,0x10,0x0e,0x28,0x7f,0x5f,0xf6,0x9a,0x13,0x9a,0x78,0x16,
- 0xfe,0x29,0x5d,0x11,0xf7,0xd1,0x3d,0x29,0xee,0xc9,0xde,0xb2,0x1e,0x9f,0x23,0xbe,
- 0x4f,0x8b,0xea,0x35,0xce,0xdb,0xdc,0x16,0xef,0x96,0x22,0xf3,0x2b,0xe1,0xd7,0x32,
- 0xff,0x6b,0xa5,0x79,0x31,0x8d,0xd0,0xec,0x36,0x65,0x00,0x2e,0xea,0x0b,0xb3,0xab,
- 0x6e,0x57,0x46,0xcc,0x73,0x3b,0x23,0x4b,0x4a,0xe9,0x1c,0xe9,0xd7,0x50,0x4f,0xb1,
- 0x19,0xb9,0xf8,0xc3,0x03,0xae,0xe5,0x4b,0x5f,0x94,0x8f,0x3f,0x14,0x83,0xf2,0x5d,
- 0xe2,0xbf,0xce,0x29,0x63,0xcb,0x48,0xa6,0x92,0xf0,0x17,0xff,0x48,0xbf,0xcb,0x2c,
- 0xa1,0x99,0xfb,0x91,0xfe,0x92,0x3b,0xfe,0xd0,0x93,0x2b,0x1b,0xf7,0x09,0x7f,0x19,
- 0xba,0x6c,0xbd,0x4a,0x1e,0xb5,0x0f,0x24,0xf7,0x46,0x87,0x11,0x56,0x18,0xce,0x3d,
- 0x1f,0x13,0x06,0x11,0x97,0x12,0xc4,0x69,0x6e,0xe9,0x51,0xbe,0xee,0xe4,0x7f,0x6d,
- 0x47,0x47,0x44,0xec,0x29,0xaf,0xa6,0x9f,0x81,0x8a,0x41,0x3b,0xfe,0xd0,0xd6,0x9f,
- 0x47,0x87,0xe1,0x78,0x28,0xdb,0xac,0xdb,0x7b,0x13,0x4e,0x7c,0x0a,0x9b,0x0f,0xac,
- 0x63,0x57,0xcc,0xc7,0xe8,0xe8,0xf5,0x42,0x3e,0xff,0xeb,0x9f,0x0c,0x59,0xff,0xab,
- 0xec,0x6d,0xef,0x16,0x7e,0xef,0xb0,0x83,0xbf,0x08,0x91,0x51,0x87,0xcf,0x19,0x52,
- 0xd7,0xb0,0x1f,0x60,0xcb,0x37,0x24,0x23,0xf6,0x98,0x4d,0x8d,0x71,0x2a,0xc4,0xac,
- 0x7d,0x9b,0x65,0x1d,0xfc,0x75,0x4a,0xef,0xb2,0x55,0x71,0xd4,0xe7,0xe4,0x91,0xa0,
- 0x3c,0x37,0xee,0x74,0x02,0x11,0xd5,0x10,0xeb,0x10,0x2f,0x80,0x42,0xf2,0x38,0xc9,
- 0x99,0xe1,0x7e,0xc9,0x8d,0xea,0x02,0x9a,0xe5,0xf4,0x0f,0x0f,0x79,0xae,0x66,0x6d,
- 0xfc,0x75,0x8a,0x64,0x64,0x64,0xb6,0x57,0xd0,0x96,0xdd,0x80,0xb9,0x7c,0x66,0x5c,
- 0xd9,0x21,0xf0,0x97,0x78,0x21,0xbf,0xc8,0x63,0xe9,0x55,0xe9,0x4a,0xbc,0x99,0x0b,
- 0x20,0x76,0xd9,0xae,0xfb,0x86,0x33,0x6c,0xcc,0xa6,0x63,0x3c,0xf9,0xb0,0xc3,0x9c,
- 0xa7,0xe7,0x69,0x80,0x5b,0xdb,0x2a,0xe3,0x85,0xbe,0x9f,0x14,0x4b,0x94,0x29,0x4b,
- 0x79,0xfd,0x43,0x63,0xdc,0x94,0x3e,0xe4,0xb4,0x71,0xc8,0xe4,0x03,0x11,0x6f,0xcd,
- 0x7b,0x9e,0x17,0x05,0x35,0x86,0xb0,0xab,0x32,0xa7,0x33,0xf0,0xde,0x75,0xfa,0x1b,
- 0x5f,0xa3,0x9c,0x1a,0x5b,0xbf,0xce,0xdc,0x65,0x96,0xa0,0xa1,0xbe,0xef,0x25,0xe7,
- 0x36,0xef,0x51,0xef,0x61,0x6f,0x38,0xb2,0xf3,0x39,0xfd,0xf9,0x8d,0x02,0x88,0xe5,
- 0xea,0x2f,0x7b,0xab,0x38,0x5e,0x5a,0x66,0x3f,0x27,0x98,0xe7,0x41,0x6c,0x87,0xfc,
- 0x7e,0xe9,0x87,0x3b,0xf8,0x2b,0x6d,0x3f,0xe7,0xd1,0x66,0x7a,0xce,0x2d,0xdb,0x5d,
- 0xf5,0x97,0xd3,0x3b,0x5d,0x2a,0x7c,0xcb,0x8a,0xf5,0xa2,0x7e,0xd8,0xa9,0x53,0x5e,
- 0x52,0x11,0xb5,0xac,0x25,0xfe,0x6b,0x0f,0xdb,0x9a,0xbb,0xc7,0x08,0xb7,0x90,0x41,
- 0xd9,0x4c,0xa6,0x96,0xaf,0xbf,0x5c,0x1c,0xe7,0x3d,0x38,0x16,0x1a,0xe1,0xaf,0x1e,
- 0x88,0xdc,0x2c,0x9c,0xe4,0x6c,0xf3,0x23,0xa0,0xc9,0xf8,0x43,0x44,0x64,0xed,0x8a,
- 0x21,0x85,0x65,0x28,0xec,0xd0,0xee,0xf0,0x9d,0xe6,0x40,0xab,0x90,0x46,0xcc,0xd5,
- 0x5f,0x26,0xde,0x6a,0xf6,0x72,0xe2,0x65,0xf4,0x2b,0x21,0x47,0x7f,0xde,0x70,0x7b,
- 0xf8,0xaf,0xe5,0x64,0xe7,0xa7,0x0f,0x51,0xc5,0x07,0x91,0x7c,0x64,0x5e,0xd1,0x6b,
- 0xcc,0x7c,0xfe,0xd7,0x0e,0xc1,0x7f,0x35,0xc9,0x4f,0x7d,0x82,0x43,0xf0,0x76,0x01,
- 0xd0,0x18,0x17,0x85,0x86,0xff,0xca,0x9b,0x93,0xaf,0xcf,0x1b,0xc7,0xbc,0x51,0x02,
- 0x62,0x73,0x6f,0x80,0xbf,0x0e,0xc3,0x2e,0x98,0x79,0x1d,0x10,0x53,0x81,0x11,0x76,
- 0xa8,0x91,0x27,0x78,0x87,0x05,0x59,0xf6,0x59,0x12,0xa2,0x27,0x68,0xe6,0xb3,0xf1,
- 0x57,0xcb,0xb4,0x7e,0xef,0x7e,0x96,0xef,0x67,0x73,0xd3,0x94,0x40,0x44,0x59,0x06,
- 0xd1,0x73,0x7d,0x8c,0xa2,0x84,0x66,0x39,0xfc,0x75,0xd3,0x4f,0x72,0xb0,0x4b,0xdf,
- 0x6f,0x04,0x49,0x53,0x65,0x28,0x97,0x48,0x28,0x94,0x30,0x55,0x3d,0xb8,0xc7,0x3c,
- 0x04,0xa5,0xb9,0x8c,0xc2,0x65,0x52,0x88,0xde,0x14,0xd0,0x2c,0x87,0xbf,0x7e,0xcf,
- 0x0b,0xf4,0x3c,0x7d,0x02,0x64,0x89,0x32,0xe2,0xa2,0xea,0x2e,0xf6,0xcf,0xd6,0xe4,
- 0xdc,0x8d,0xf9,0xd0,0x44,0xf1,0xf2,0xb3,0x21,0xe7,0x7d,0xb6,0xeb,0x7f,0xad,0xf1,
- 0xec,0x51,0xf3,0xa3,0xc3,0x5f,0xb4,0x0d,0x96,0x7b,0xf2,0x51,0x29,0x84,0xf8,0x7e,
- 0xee,0x6f,0x99,0x85,0x8a,0x88,0x6e,0xfc,0x35,0x33,0xa6,0x6e,0x71,0xe5,0x76,0x39,
- 0x93,0x71,0x7a,0xda,0x33,0xea,0x2d,0xa5,0x42,0xcc,0x22,0x6d,0x59,0x4c,0x4f,0xdc,
- 0xb6,0xba,0xc4,0x84,0xe5,0x74,0x33,0x3a,0x30,0xb9,0xfa,0xcb,0x77,0xc1,0x8b,0x56,
- 0xed,0x5e,0x81,0xbf,0x4e,0x81,0x10,0x99,0xc7,0x75,0xc3,0xce,0xff,0x9a,0x46,0x89,
- 0x60,0x6a,0xfa,0x3e,0x21,0x4d,0x4f,0xa5,0xc1,0x2e,0x8b,0xfc,0x2f,0xbc,0x34,0xc1,
- 0x48,0x91,0x43,0x1b,0x76,0xe9,0x1f,0xf2,0x6e,0x27,0xfe,0x30,0x49,0x85,0x62,0xdd,
- 0xa7,0x46,0xba,0xcd,0x88,0x51,0xfd,0xe5,0xb5,0xf9,0xd0,0x0e,0xa9,0xb4,0x26,0xf7,
- 0xaf,0x1c,0xff,0xf5,0x19,0x5c,0x7b,0xbf,0xc1,0x71,0x35,0x3e,0x05,0xdf,0x33,0xef,
- 0x1d,0x70,0xa2,0xe0,0xf2,0x91,0x72,0x33,0xd7,0x15,0xc5,0xe0,0xfb,0x4c,0xb4,0xbc,
- 0x59,0x95,0xe4,0xf7,0x8a,0xc3,0x34,0xd8,0x20,0xa3,0xe9,0x0a,0xf8,0xaf,0xc5,0x71,
- 0x8d,0x60,0xd7,0x29,0xde,0x3d,0x22,0xf1,0x57,0xc7,0x62,0xa9,0x7f,0x78,0x10,0x11,
- 0x59,0xc9,0xc3,0xc9,0xd9,0x52,0xf6,0x50,0xe6,0x88,0x09,0xfc,0x75,0x01,0x5e,0xce,
- 0xec,0x27,0x23,0xc7,0x7f,0xed,0x71,0xb8,0xad,0x11,0xca,0x29,0x96,0x79,0x2e,0x1f,
- 0xc6,0xed,0x03,0xdb,0xef,0x50,0xd8,0xc6,0x01,0x2d,0xa7,0xe4,0x3c,0xec,0x6c,0x40,
- 0x59,0x98,0x58,0x87,0x9e,0x43,0x3a,0x8f,0xbf,0x2e,0xc3,0xc5,0xd4,0x82,0x34,0x49,
- 0x1a,0x9a,0x1f,0x39,0xfa,0x1b,0x76,0xfe,0x97,0xac,0xff,0x85,0x46,0xa3,0xf7,0x44,
- 0x22,0x96,0xdd,0x62,0xe7,0xb0,0x0c,0xd9,0x60,0x8d,0xa0,0x99,0x2b,0xff,0x0b,0x9e,
- 0xe7,0x15,0xad,0x62,0x4f,0xd9,0xa2,0x57,0x64,0x73,0x81,0xf4,0x01,0xa7,0xfe,0x17,
- 0x6e,0x5b,0x67,0xad,0x67,0xd2,0xd5,0x94,0xff,0x75,0x06,0xa1,0x2b,0x1a,0xa4,0xa4,
- 0xf1,0x5b,0xda,0xbf,0x5a,0x5d,0xfc,0x97,0x71,0xd0,0xa8,0x30,0xb5,0x07,0x70,0x08,
- 0xf6,0xe4,0x74,0x14,0x6d,0xb4,0x35,0xf3,0xa0,0x8c,0xc3,0x6f,0x6c,0x7d,0xc6,0x10,
- 0xa9,0x61,0xaf,0x4b,0x89,0x60,0x09,0xd6,0xe8,0x88,0xb2,0xe8,0x15,0x07,0x7f,0xfd,
- 0xc2,0x40,0xe4,0x6b,0x8a,0xa1,0x4c,0x98,0x90,0x8f,0x9f,0xcf,0xd7,0x4f,0x59,0xc8,
- 0x5e,0x35,0x76,0x83,0x9f,0x5a,0x2c,0xe8,0x36,0xec,0xfd,0xeb,0x49,0x3a,0x48,0xe4,
- 0xf9,0xfc,0xaf,0x9f,0xc0,0x44,0x3b,0x45,0x12,0x96,0x8f,0x78,0x3f,0x6c,0xde,0x2d,
- 0x1d,0xb3,0x6b,0x79,0x78,0xdb,0x45,0x44,0x46,0xd8,0xfb,0x21,0x13,0xfe,0xe1,0xb0,
- 0xcc,0x30,0x12,0x1c,0x99,0x21,0x52,0x0f,0x3e,0x70,0xf0,0x17,0xfa,0x09,0x96,0x40,
- 0x52,0xe8,0x67,0xaa,0x2e,0xfd,0x43,0x27,0x61,0xbc,0x37,0xb0,0xff,0xc9,0x1c,0xfe,
- 0x1a,0x9e,0x02,0xae,0x69,0xa2,0x89,0xef,0x93,0xd2,0x27,0x3d,0xd7,0xd2,0x0b,0x20,
- 0x40,0x22,0x12,0x6f,0xc3,0x7e,0xcb,0x5f,0xa0,0x7f,0xf8,0x56,0xbe,0x34,0x98,0xdd,
- 0x62,0x1b,0x83,0x9c,0xa2,0xe0,0x70,0x3d,0x34,0x9c,0xfd,0xeb,0xef,0xa0,0x9b,0x07,
- 0xe3,0x5a,0x26,0xb8,0x96,0x12,0x99,0xc5,0xcf,0xf1,0x14,0x20,0xa9,0xd2,0x48,0x70,
- 0xb3,0xde,0x29,0x43,0xcb,0xde,0x77,0x34,0x16,0xce,0xc1,0x73,0x54,0xdb,0x2b,0x77,
- 0x7e,0xc8,0xa7,0xd5,0x12,0x0b,0x33,0x20,0x3e,0xb5,0xd5,0x0c,0x5a,0xea,0x14,0x20,
- 0x56,0x23,0x13,0x82,0x7e,0x28,0x2b,0x82,0x0d,0x40,0xee,0x39,0x49,0xf2,0x33,0x77,
- 0x24,0x8c,0xfc,0xf9,0xe1,0x11,0x15,0x77,0xa2,0x48,0xe2,0x24,0x47,0x1f,0x72,0xc0,
- 0xe6,0xa9,0xe5,0xa0,0xb4,0x2f,0x30,0x71,0xc2,0xee,0x6f,0xde,0xe7,0x7d,0xd2,0x10,
- 0xd0,0x6c,0x00,0x92,0x66,0x58,0x0e,0x9c,0xd0,0xe2,0xd6,0xa3,0x2c,0x5f,0x7f,0xf9,
- 0x70,0x04,0x57,0xb6,0x2e,0x65,0xa4,0xea,0x0c,0x7c,0x53,0xfa,0x63,0x2f,0xe9,0xb1,
- 0x5f,0xad,0xca,0x4c,0x1f,0xe1,0x6f,0x99,0xc2,0x33,0x0f,0xb3,0xb7,0xd4,0x86,0xdf,
- 0x60,0xf7,0x0e,0x51,0xbd,0x80,0xe3,0x62,0x5e,0x9c,0x06,0x31,0x5e,0x39,0xfd,0x79,
- 0x51,0x16,0xd6,0x14,0x64,0xe2,0x27,0xd0,0xf4,0x5a,0x81,0x8c,0x03,0x45,0x24,0x5a,
- 0xa5,0x0f,0xe0,0x10,0x7c,0x02,0xdf,0x1d,0x10,0x28,0xe9,0x9a,0x2c,0xd6,0x3c,0x2a,
- 0xef,0x19,0x2c,0xd0,0x9f,0x27,0x49,0xf9,0x71,0xbc,0x84,0x90,0xea,0x98,0x8f,0xe6,
- 0xce,0xa4,0xc4,0x56,0x31,0x84,0x78,0x4d,0xd9,0x62,0x7b,0xc6,0x19,0x92,0x5f,0xe6,
- 0xb1,0x2c,0x29,0x88,0xc3,0xef,0xda,0x62,0x1e,0xbf,0x55,0xe9,0xe6,0xbf,0x48,0x64,
- 0xa3,0x2b,0x4a,0xdc,0xd6,0x6d,0xa3,0x22,0x11,0xac,0x9e,0x2a,0x32,0x5f,0x61,0x3f,
- 0x83,0x97,0x52,0x35,0x02,0x88,0x11,0x47,0x66,0x84,0x9c,0x1c,0x31,0x95,0x52,0xc3,
- 0x48,0xc0,0x50,0xd5,0x95,0xd1,0x29,0xfc,0x57,0x94,0x59,0x2c,0x01,0xc6,0xa0,0x94,
- 0x81,0x15,0x8b,0x5e,0xb3,0x3f,0xcf,0xb0,0x74,0xd3,0xa7,0x9c,0xa5,0x12,0x77,0x46,
- 0x2f,0x1d,0x62,0x70,0x97,0xfe,0xfc,0x4d,0x39,0xb5,0x8d,0x0f,0xa0,0x43,0x0f,0x3a,
- 0xfc,0x0e,0xcb,0x0b,0x71,0x14,0x0b,0x49,0x4c,0x56,0x3a,0xc3,0x7e,0x25,0x84,0x40,
- 0x7a,0xd0,0x78,0xae,0x28,0xdc,0xde,0xb2,0xbd,0x79,0x34,0x9f,0xff,0x25,0xb1,0x4c,
- 0xe5,0x87,0xde,0x63,0xe8,0x36,0x97,0x12,0xff,0x75,0x59,0xc4,0xee,0x52,0x52,0x95,
- 0x60,0xa0,0xfe,0x4e,0xdc,0x13,0xc9,0xe5,0x64,0xf9,0x79,0xb2,0x06,0x3e,0xf4,0xc4,
- 0xd6,0xf9,0xf7,0x2a,0x1e,0x17,0xff,0xc5,0x6c,0xf5,0x86,0xf1,0x8e,0x7f,0xb3,0x44,
- 0x20,0xe2,0x15,0xf8,0x2f,0x96,0xcc,0x1e,0x2a,0xca,0x1f,0x59,0x54,0xe4,0xcf,0x2e,
- 0x4c,0x6d,0x00,0x01,0x6f,0xcd,0xbd,0xb5,0x6f,0x94,0x17,0xd4,0x5f,0x16,0x53,0xef,
- 0x7d,0xf6,0xb2,0x99,0x71,0xce,0x49,0xea,0xf2,0xf1,0x6c,0x7f,0x4e,0x33,0xf7,0x08,
- 0xd8,0x73,0x19,0x6f,0x7e,0x07,0xdd,0xd4,0x3d,0x54,0x6c,0x6e,0xd0,0xbf,0x4f,0x4b,
- 0x5d,0xc7,0x7f,0x7d,0x62,0x1e,0x33,0x2b,0x5d,0xe5,0x18,0xa4,0x22,0x7d,0x3e,0x64,
- 0x17,0xf2,0x33,0x25,0xcd,0x2a,0x40,0x33,0x82,0xbf,0x08,0xe9,0xca,0xba,0x42,0xfe,
- 0xab,0x98,0x4a,0x63,0xa4,0x4c,0x7b,0x6f,0xca,0xe4,0x13,0x5a,0x73,0x3c,0x48,0x15,
- 0xd8,0x46,0xcd,0xa0,0x06,0x0c,0x3c,0x4a,0xda,0x20,0x97,0xc6,0x15,0x7f,0x78,0x30,
- 0x2d,0x7c,0xfe,0xdf,0x08,0x6e,0x4b,0x2c,0xd4,0x19,0x5e,0x31,0xac,0xad,0x77,0x17,
- 0x08,0xfe,0x3e,0xaf,0x0e,0x09,0xa4,0xb0,0x88,0x16,0xea,0x06,0x74,0x57,0x36,0xa4,
- 0x2a,0xaa,0xd4,0xfb,0xd9,0xc3,0x85,0xfc,0x57,0x49,0xa4,0xbc,0x37,0xfe,0x9a,0x69,
- 0xd7,0xff,0x3a,0x8f,0xdb,0x96,0xd4,0xdf,0xa0,0xd2,0xcc,0xf5,0xca,0x49,0xf3,0xa2,
- 0xde,0x18,0x9a,0x2e,0x5b,0xc2,0xa4,0xdf,0x9b,0xf0,0xbe,0x9c,0xca,0xac,0x0f,0xdf,
- 0xac,0x6c,0x73,0xf1,0x5f,0xf2,0x10,0x23,0x4b,0xcb,0xe9,0x6f,0xa6,0x8b,0x20,0x43,
- 0x8a,0x2d,0x3c,0x9f,0xc4,0x05,0xb6,0xac,0xa9,0xff,0xd6,0x51,0x71,0xc0,0x15,0x03,
- 0x7b,0xbc,0x84,0x46,0x47,0x96,0x46,0x79,0x59,0xed,0xe8,0xf5,0xfc,0x97,0x08,0xaa,
- 0x69,0xb0,0x49,0x2e,0x4e,0x0b,0x1a,0x3e,0x67,0xc2,0xd9,0x10,0xc5,0x73,0x9c,0xf7,
- 0x27,0x4c,0xf5,0xd6,0x27,0x28,0x5e,0x34,0xbd,0xe2,0x7a,0xfe,0x4b,0x57,0x2f,0x52,
- 0xf1,0x3b,0x8a,0x96,0x7f,0x5e,0x1c,0xf7,0xd1,0x06,0xb4,0xc6,0xde,0xe8,0xbf,0xef,
- 0xaa,0xbf,0x4c,0xb4,0x97,0xee,0x7d,0x09,0x2a,0xdb,0xfc,0xf1,0xa9,0xfc,0x17,0x76,
- 0x66,0xb9,0xf7,0x05,0x41,0x72,0x95,0xbd,0xed,0xe9,0xce,0xe1,0xaf,0x74,0x75,0xf6,
- 0x0b,0x52,0x76,0xbe,0xda,0xc8,0x09,0x71,0xa8,0xf5,0xcd,0x65,0x94,0x8b,0x37,0x5a,
- 0x5c,0xcf,0xa6,0xf0,0x5f,0x88,0xb6,0x14,0x78,0xce,0x10,0xf8,0x8b,0xde,0x04,0xd5,
- 0x99,0x9e,0xf9,0x94,0x8a,0xd6,0x1c,0x11,0xa6,0xde,0x5e,0xe6,0x81,0x23,0xde,0xaa,
- 0x51,0xb5,0xfe,0x7a,0xfe,0x4b,0xbb,0xcb,0x7c,0x31,0x47,0x72,0x59,0x51,0x74,0x96,
- 0x44,0xfd,0xe5,0x18,0x2f,0x96,0xfc,0xd7,0xe2,0x54,0x4e,0x88,0xc3,0x9f,0x55,0xea,
- 0xcd,0xcb,0xf8,0x0a,0x94,0x64,0xb5,0x42,0xfe,0xcb,0xe3,0x4e,0xfb,0x8a,0xab,0xe8,
- 0xe9,0x49,0xb6,0xeb,0x0c,0x94,0x4a,0xd8,0x85,0xb8,0xc0,0xeb,0x92,0x9d,0x4f,0x8a,
- 0x9b,0xcb,0x02,0x9e,0xa9,0xf9,0x5f,0x88,0xb6,0xe6,0xc2,0x31,0x7d,0x6a,0xd9,0x2f,
- 0x37,0x05,0xb0,0xd4,0x49,0x0d,0x5b,0x87,0xc6,0xdc,0x65,0xe3,0x66,0x34,0x1e,0xbe,
- 0x41,0xfd,0xe5,0xb2,0x2a,0xb6,0x71,0x20,0x2a,0x9d,0xe4,0xf7,0x25,0x5c,0x72,0xf0,
- 0x97,0x92,0xd3,0xb8,0x13,0x2d,0x71,0x35,0xe5,0x9b,0x43,0x1c,0xc7,0xba,0x96,0xd4,
- 0xd4,0xfc,0xaf,0x4e,0x74,0xda,0xcd,0xa7,0xe0,0x6b,0xee,0x8f,0x97,0x0d,0x79,0x0a,
- 0x28,0x12,0x99,0x1a,0xe6,0x09,0xa3,0x51,0x36,0xc7,0x7b,0x08,0x8c,0x16,0x75,0x07,
- 0x2b,0x92,0xfb,0x8e,0xc3,0x7f,0xdd,0x72,0x93,0xcf,0x6b,0xb6,0xe9,0x69,0xe9,0xf3,
- 0xef,0xb4,0xeb,0x02,0x3b,0x70,0x80,0x94,0xd2,0x6b,0x1c,0x5e,0x66,0x6d,0x5c,0xa5,
- 0xf8,0xc3,0x6e,0x48,0x0f,0xa8,0x37,0xfb,0xa6,0xf0,0x5f,0x9a,0x57,0xa9,0xd8,0x79,
- 0x66,0x4d,0x9d,0xcd,0x7f,0x85,0x6a,0x10,0x5b,0xb5,0x09,0xfc,0x95,0x87,0xb7,0x22,
- 0x47,0x6c,0x3d,0xe9,0x82,0x8a,0x88,0xb2,0xff,0x1a,0x9d,0xe1,0x7f,0x74,0x69,0x0d,
- 0x93,0xf8,0x2b,0x57,0x7f,0x59,0xb9,0xc4,0x7f,0x6e,0x90,0xe6,0x83,0x87,0x72,0xb2,
- 0x66,0xdb,0xdd,0xeb,0x99,0x4d,0xac,0xe2,0x1e,0xf4,0xf0,0x9b,0x2c,0xa7,0xc3,0x97,
- 0x07,0x7e,0x55,0x79,0xc9,0x1c,0x87,0x26,0x17,0xff,0xe5,0xd4,0x5f,0x2e,0x25,0x48,
- 0xf5,0xef,0x1e,0xbb,0x9f,0x85,0xe6,0xf9,0x75,0x99,0x4a,0x12,0x4a,0x7b,0x05,0x58,
- 0x5b,0x08,0xaf,0x7a,0x49,0x7f,0x43,0xbb,0x1e,0x7f,0x59,0x42,0xd2,0x30,0x07,0xbb,
- 0xa6,0x32,0x62,0x35,0x4e,0xfc,0x61,0x58,0x30,0x62,0x8c,0x43,0xd0,0x83,0xeb,0xd8,
- 0x0d,0xf8,0x2f,0x75,0xbf,0x37,0xed,0x80,0x2c,0x47,0xe7,0x04,0x47,0xe7,0x16,0xd9,
- 0x52,0x63,0xce,0xcf,0xe3,0x2f,0x5f,0x91,0xc0,0x5f,0x21,0xfd,0x46,0xfc,0x97,0xf1,
- 0xaf,0x7a,0x30,0xcf,0x7f,0x91,0xe1,0x2d,0x18,0x77,0xb7,0x34,0xc7,0x5c,0xa1,0xda,
- 0xd1,0xb2,0xfd,0xc6,0xfc,0x17,0x8f,0xda,0x05,0xbc,0x5a,0x1a,0x44,0x44,0x62,0xb1,
- 0x2d,0xbb,0x21,0x5f,0xe3,0x9c,0x22,0x07,0x22,0xa9,0x39,0x14,0x9a,0xb8,0xc6,0x9f,
- 0xd2,0x6e,0x50,0x7f,0x59,0x7f,0x43,0xb5,0xe3,0x72,0xcf,0xa7,0xaf,0x97,0xa3,0x11,
- 0xd3,0xc1,0x51,0x44,0x54,0xfa,0x55,0xc9,0x60,0x2e,0xbd,0x9e,0xff,0xaa,0xe0,0x16,
- 0x42,0x57,0x89,0xbf,0xcc,0x9c,0xfe,0x61,0x57,0xae,0x72,0x84,0x9e,0x2b,0x21,0x41,
- 0x62,0x89,0xa4,0x88,0x48,0xf5,0xbb,0xdd,0xfc,0x97,0x2c,0xa9,0x7c,0x97,0xf7,0x09,
- 0x84,0x54,0x94,0xff,0x35,0xf3,0xb0,0x04,0x59,0xc3,0x5e,0x5b,0x91,0x9e,0xf8,0xaf,
- 0xb0,0xd3,0x52,0x4b,0x1a,0x89,0xa4,0x3f,0x4f,0xfa,0x87,0xc9,0xe5,0xf9,0xfc,0x2f,
- 0x5b,0x2c,0xc8,0x0f,0xdc,0xac,0xba,0x81,0x1f,0x9e,0x53,0x26,0x77,0x8c,0x3e,0x11,
- 0x74,0x4d,0xfe,0xa1,0x3a,0x93,0x4d,0xe5,0xbf,0xbe,0xc3,0x6e,0xc2,0xe7,0x48,0xd9,
- 0x79,0x4f,0xb7,0x13,0x1f,0xde,0xfd,0x58,0x8e,0xff,0xfa,0x86,0x6d,0xb0,0x6f,0xa4,
- 0x11,0x3b,0xf8,0x0d,0x3a,0x1f,0xeb,0x30,0x83,0xee,0xfa,0xcb,0x84,0xad,0xc6,0x95,
- 0xd9,0xd0,0xcf,0xef,0x70,0xf8,0xaf,0xe7,0x1d,0x46,0x8c,0x84,0xe8,0x3d,0x52,0x7f,
- 0xa3,0x54,0xb6,0x54,0x67,0xfd,0xf5,0xca,0xcd,0x08,0xc4,0x22,0xe9,0xf0,0x3d,0xca,
- 0x75,0xf5,0x97,0x65,0x1f,0x3a,0xee,0x01,0xc5,0xb3,0xa1,0x03,0x43,0x3a,0xc9,0xd7,
- 0xa5,0x1a,0x71,0x61,0xd8,0xf9,0x44,0xae,0xfc,0x2f,0xc1,0x7f,0x8d,0x2b,0x57,0xcd,
- 0x57,0xf9,0x22,0x97,0xfe,0xc6,0x05,0x91,0xed,0xb5,0x60,0x48,0xc1,0x4b,0xde,0x6b,
- 0x89,0xc5,0x43,0xa5,0xa2,0x34,0x33,0x5e,0x7a,0xe2,0x10,0x5e,0x3a,0xbd,0xed,0xd6,
- 0x21,0xff,0x98,0xc7,0xad,0x7f,0xc8,0xab,0x29,0xc8,0xf0,0x2a,0xfc,0x18,0x8c,0xac,
- 0x7d,0x6c,0x28,0xea,0x7f,0xcd,0x86,0x45,0xba,0x5d,0xff,0xeb,0x60,0x3a,0x4c,0xf5,
- 0xbf,0x70,0x03,0xd2,0x6b,0xf7,0xaa,0xf5,0xca,0x29,0x9e,0xa0,0x1f,0xa8,0x26,0x0a,
- 0xf2,0xbf,0xc4,0x66,0xf7,0xba,0xd1,0xee,0x84,0x7f,0x88,0x9e,0x8f,0x88,0xa8,0xce,
- 0x9d,0xd6,0x0a,0x29,0xdf,0x51,0x3b,0x20,0x64,0x37,0x08,0x7f,0xe1,0xc0,0x7d,0x2e,
- 0x41,0x75,0x30,0x8b,0x1f,0x28,0xd4,0x9f,0x17,0x55,0xde,0xfa,0x61,0x6f,0xca,0x09,
- 0x3b,0xb4,0x72,0xc2,0xe6,0x46,0x4e,0xe7,0xed,0x82,0x3d,0xee,0x88,0xe8,0x89,0x61,
- 0xa1,0x88,0x05,0xf5,0xe6,0x02,0xfe,0xcb,0x23,0x9c,0x76,0x3a,0x3b,0x3d,0x2c,0xd2,
- 0x52,0x3c,0x36,0xc8,0xda,0xe7,0xc9,0x1d,0xd4,0x63,0xf7,0x8e,0x3a,0x48,0x8a,0x97,
- 0x1e,0x60,0xd5,0x14,0x0c,0xbc,0xa4,0x64,0xbb,0x52,0x58,0x7f,0xd9,0x52,0x70,0xbc,
- 0x42,0x13,0x2d,0x65,0xb6,0x5f,0xa7,0x0b,0x46,0x6c,0xad,0xd7,0x3d,0x4c,0xfd,0xf9,
- 0xf1,0xda,0xaf,0xec,0x83,0x31,0x4f,0x4c,0xaf,0xcd,0xe1,0x2f,0xa7,0xfe,0xf2,0xaa,
- 0x51,0x74,0xd1,0x8f,0xc3,0xed,0x32,0xff,0xeb,0x9a,0xba,0x80,0xfc,0xcc,0x87,0xa5,
- 0x4b,0xe3,0xb8,0x97,0x7e,0x69,0xd4,0x82,0x7f,0x9d,0x06,0x94,0xff,0xe5,0xc5,0xf9,
- 0xee,0xaa,0xff,0x65,0xfb,0x87,0x06,0xdf,0x94,0xce,0xe1,0xa6,0x3a,0x09,0x97,0x1c,
- 0x00,0xa5,0x53,0x48,0xe1,0x72,0x5b,0xba,0x6d,0xbb,0x2f,0xc3,0xaa,0xa0,0x63,0x30,
- 0xa8,0xe3,0x8e,0x56,0x51,0xc8,0x7f,0xe1,0x25,0x15,0x36,0xa1,0xdb,0x53,0x9c,0x2f,
- 0xfb,0x55,0xa8,0x48,0x3f,0x5f,0x52,0x24,0x47,0xa8,0x7c,0x58,0x86,0xdd,0x8f,0xa0,
- 0x6f,0x7e,0x9f,0xe0,0xbf,0x6c,0xfc,0xe5,0x77,0x70,0x81,0xca,0x93,0x10,0x97,0x45,
- 0x6d,0x68,0x9e,0x92,0x2e,0x04,0x97,0xa5,0x99,0xa9,0xc5,0xa8,0x39,0x49,0xe3,0x65,
- 0x60,0x4b,0xdb,0xf2,0x48,0xa2,0x04,0x78,0xd0,0xe0,0x7b,0x67,0x26,0x0a,0xf4,0xe7,
- 0x11,0xd5,0x8e,0x26,0x0c,0x3e,0x00,0x5d,0xfd,0xd2,0xfb,0xd2,0xa3,0xfd,0x92,0xbf,
- 0x30,0x1d,0x9d,0xff,0x50,0xec,0xb8,0x5f,0xcc,0x14,0x33,0xe6,0xf7,0xbf,0xa0,0xfc,
- 0xbd,0x71,0xbc,0xbe,0x67,0xd6,0xe6,0xd4,0x52,0x57,0xfd,0xaf,0x89,0xbf,0x17,0x9c,
- 0x66,0xd6,0x9c,0xcc,0xd5,0x87,0x35,0xa8,0xfe,0x97,0xb2,0xcf,0x94,0xd2,0x88,0xcd,
- 0x82,0x11,0x1b,0x10,0x3e,0xff,0x77,0x21,0xd6,0x1e,0xb8,0x90,0xdc,0x47,0xa2,0x55,
- 0xfe,0x40,0x2a,0xe9,0xc6,0x5f,0x89,0xa6,0xec,0x96,0x71,0xdc,0xbf,0x3e,0x81,0xbb,
- 0x72,0x81,0xbe,0xf2,0x9c,0xff,0xf7,0x94,0xb8,0x97,0xc5,0xdd,0xea,0xb4,0x14,0xba,
- 0x89,0xc0,0xe9,0xc4,0x22,0xe7,0x9e,0xbb,0x38,0x22,0xb2,0xbc,0xfe,0xbc,0x2a,0xe2,
- 0x0f,0xbb,0xd8,0x10,0xa7,0xd8,0x42,0xcd,0x41,0x5b,0xd0,0xc1,0xde,0xa1,0x1d,0xcd,
- 0x50,0x79,0x62,0x2e,0x3c,0x47,0xf7,0xd0,0x36,0xf1,0x5c,0xee,0x1e,0x7a,0x9f,0x73,
- 0xfc,0x97,0x2b,0xfe,0xf0,0xa4,0xb1,0x33,0x1f,0x8e,0x5b,0x03,0x3e,0x60,0x14,0xc7,
- 0x18,0x02,0xb5,0xac,0xcc,0x4f,0x32,0xe6,0x78,0xa9,0x4c,0x85,0x64,0x91,0x2b,0x79,
- 0x56,0x75,0xeb,0xcf,0xe7,0xc4,0x63,0xf9,0x46,0x1c,0xf7,0x15,0xe2,0x6d,0x61,0xf6,
- 0xee,0x29,0x45,0x83,0x9b,0xc3,0x32,0x23,0x8c,0xc2,0x75,0x76,0xc3,0xfc,0x5e,0x07,
- 0x68,0x70,0xd5,0xad,0x3f,0xef,0xb7,0x59,0xfb,0x77,0xe0,0x43,0x2b,0x27,0x47,0xd3,
- 0x28,0xcf,0x25,0xa8,0x5a,0x93,0xfa,0xd3,0xe9,0x35,0x44,0x3d,0x0f,0x05,0x32,0x5a,
- 0x88,0xbb,0x34,0x09,0x1b,0x48,0xa5,0xd0,0x72,0xc7,0x1f,0xd6,0xd2,0xcb,0x7f,0x09,
- 0xfe,0xe8,0x9a,0x05,0xe6,0xaa,0xac,0x1d,0x91,0x58,0xdb,0x72,0xdb,0xbf,0x7b,0xae,
- 0xa5,0xe9,0xd2,0xf4,0xb3,0xfa,0x35,0xd5,0x49,0xa2,0xc4,0x99,0x5b,0xa8,0xbf,0x91,
- 0x9b,0x8c,0xc7,0x4d,0x79,0xf0,0x02,0xdf,0x81,0x06,0x3e,0xcd,0x49,0x78,0x09,0x6c,
- 0xd7,0xc2,0x06,0xae,0x09,0x83,0x61,0xaa,0xe4,0x75,0x42,0x8f,0x3a,0x35,0x01,0x1b,
- 0x29,0x02,0x79,0x30,0x8f,0xbf,0xee,0x82,0x52,0x19,0x85,0xbb,0xc9,0xb0,0xd1,0x16,
- 0xe9,0x3a,0xaa,0x69,0xf1,0x1a,0x07,0xad,0x27,0x38,0xab,0x35,0x8e,0x38,0x69,0x95,
- 0x9d,0x66,0x5d,0x6f,0x3e,0xd0,0x17,0xfb,0xa7,0x00,0x7f,0xd1,0x62,0xd5,0x4f,0x52,
- 0xd5,0xce,0x58,0x50,0xb4,0x46,0xf4,0xa4,0x6a,0xcb,0x54,0x9e,0x96,0x84,0x48,0xa6,
- 0xd9,0x84,0xa4,0x95,0x3b,0x6b,0x0a,0xf7,0xa3,0x71,0xd9,0xad,0x3f,0x2f,0x70,0xc1,
- 0x6f,0xf8,0xf7,0x1c,0xfc,0xf5,0x0c,0xaf,0x35,0x80,0xd4,0xe6,0x8f,0xf2,0x79,0x86,
- 0x9d,0x1a,0x56,0x3b,0x0c,0xf7,0x40,0x33,0x62,0xb4,0xcf,0x0f,0x38,0x22,0x12,0x06,
- 0x1a,0x93,0x85,0xf8,0x4b,0x6b,0x50,0xde,0x83,0x37,0xcc,0x88,0x84,0x5d,0xdd,0x7a,
- 0x3d,0x94,0xc0,0xd2,0x3e,0x6b,0x14,0xbd,0xc1,0xc0,0x76,0x76,0xd2,0xfc,0x56,0x66,
- 0x21,0x85,0x02,0xb6,0xb0,0x97,0xf5,0xe8,0x88,0xa3,0x7f,0xc8,0xfd,0x91,0xa9,0xfa,
- 0xf3,0x22,0xfe,0xf0,0xa3,0xdc,0x78,0x51,0xe1,0x80,0x41,0x65,0xd4,0x1c,0xf3,0x2c,
- 0x82,0xd2,0x4b,0xe5,0x54,0x2f,0x60,0x71,0x7f,0x60,0xb0,0xbc,0x07,0x2e,0x7a,0x05,
- 0x07,0x8d,0xd0,0x4c,0x17,0x93,0x71,0x2a,0xfe,0xea,0x51,0x0c,0x3a,0x87,0x74,0xed,
- 0x7a,0xf5,0x76,0xf0,0xf6,0x13,0x42,0x2f,0xc5,0x23,0x2e,0x85,0x0a,0x36,0x44,0x28,
- 0xa8,0xbf,0x2c,0x77,0x99,0x51,0xb6,0x10,0xda,0x5d,0x81,0x2e,0x4b,0x72,0xfa,0xf3,
- 0xea,0xba,0x22,0x69,0x74,0xae,0xf3,0x3d,0xed,0x0e,0x86,0xa9,0xe5,0xe8,0x0c,0x5c,
- 0xb8,0x0e,0x7f,0x7d,0x56,0xdd,0xd3,0x91,0x97,0x3d,0x4c,0x6b,0x03,0x89,0x6d,0xc6,
- 0x01,0x5e,0x5b,0xe1,0x3b,0xc3,0xbe,0x12,0x11,0xf7,0xd4,0xb3,0x9b,0x55,0xb7,0x34,
- 0x22,0xf5,0x73,0xf6,0xba,0xf8,0x43,0xf4,0x5b,0xe2,0xb9,0x39,0x58,0x3d,0x8a,0x37,
- 0xff,0x89,0x1d,0x81,0x13,0x2c,0xa5,0xdc,0x8a,0x88,0x76,0x3b,0xdb,0x02,0xdd,0xde,
- 0x9c,0x36,0x8b,0x10,0xeb,0x70,0xe5,0x7f,0xd9,0xd5,0xbe,0xea,0xe1,0x63,0x2b,0x2f,
- 0x7b,0x98,0x58,0x95,0x56,0x9e,0x83,0xcb,0xa3,0xb1,0x03,0xa5,0x69,0xa5,0x05,0x2e,
- 0xa7,0x9b,0xf6,0x04,0xf6,0x2a,0x0d,0x6d,0xae,0xd4,0xb0,0xef,0x66,0x36,0xa7,0xf3,
- 0xf9,0x5f,0x37,0x56,0x51,0x5b,0xac,0x06,0x2c,0x65,0x90,0x5f,0x32,0x17,0x7b,0x03,
- 0xa6,0x26,0xd4,0xe6,0x09,0x7f,0x59,0x86,0x5b,0x04,0xc0,0x5b,0x7b,0x9d,0xfe,0x06,
- 0x39,0x93,0x46,0xaf,0xbb,0xec,0xf2,0x2c,0x91,0x2f,0x23,0xd4,0x36,0xa6,0x57,0x99,
- 0x94,0xd2,0x45,0x15,0xc1,0x3c,0x79,0xcd,0x3d,0x4f,0xdd,0x7d,0xfe,0xeb,0xf4,0xe7,
- 0x65,0x90,0x21,0x77,0x95,0x5d,0x96,0x8a,0x76,0x69,0x5b,0x51,0xfc,0x0d,0xa7,0xb4,
- 0xd3,0x1b,0x66,0x43,0xce,0xc7,0x8e,0x97,0xa4,0xd8,0x14,0xfd,0xf9,0x15,0xa9,0xb2,
- 0x7e,0xd8,0x68,0xb8,0x9e,0x53,0x3c,0xca,0x2e,0xc1,0xe3,0x7a,0xa5,0xe9,0x1b,0x14,
- 0x82,0xe4,0xf7,0x5b,0x22,0x11,0x4c,0x06,0x34,0x16,0xd1,0x3d,0x73,0xfb,0x49,0x87,
- 0x7c,0x4a,0xfc,0xe1,0x4d,0xac,0xff,0x9d,0xb6,0x90,0x61,0xc3,0x01,0x56,0xbd,0xbc,
- 0xe2,0xee,0xc4,0xeb,0xbb,0x1e,0x0d,0xed,0x5c,0x3e,0xff,0xaf,0x36,0xf9,0xd3,0x5b,
- 0x3d,0x6b,0x89,0xed,0xf2,0xf2,0xb6,0x1c,0x64,0x00,0x63,0x79,0x71,0xa1,0xfe,0x3c,
- 0x75,0x5d,0xbb,0x72,0x8e,0x0f,0x18,0x5d,0xb9,0x0e,0x57,0x8b,0x13,0x44,0x52,0xac,
- 0x8b,0xaa,0xbe,0x57,0x98,0xd1,0x3e,0x00,0xb3,0x89,0xed,0x8a,0xb3,0x4d,0xad,0xf9,
- 0x5c,0x3c,0xd5,0xcf,0x97,0xe6,0xf8,0xaf,0x9c,0x8b,0x7e,0x89,0x5f,0x99,0xef,0x72,
- 0xe3,0x73,0x28,0xa0,0xa4,0x4c,0x21,0x39,0x47,0x84,0x4b,0xaf,0x25,0x2f,0xb5,0x3a,
- 0x90,0xca,0x3b,0x3e,0xaf,0xe9,0xb8,0x9b,0xff,0x72,0x39,0xff,0x57,0x0a,0xcb,0x64,
- 0x2b,0x7b,0xbc,0x1f,0x41,0x84,0x8c,0x07,0x85,0x52,0xba,0xb8,0xf4,0xaa,0xa8,0x14,
- 0x5c,0x39,0x24,0x0a,0x31,0x93,0xca,0xe5,0x0d,0xe3,0x0f,0x0b,0x61,0x97,0xe1,0x20,
- 0x32,0x19,0x7f,0xa8,0xc8,0x1d,0x64,0x97,0xb8,0x47,0xdf,0x2b,0x11,0xd9,0xa9,0xeb,
- 0xf1,0x97,0x08,0x63,0xcb,0x93,0x5c,0x24,0x4a,0xb9,0x93,0x5a,0x52,0xcc,0xeb,0x75,
- 0xd1,0x5e,0x02,0x02,0x4b,0xb1,0xc4,0x8e,0xeb,0xf4,0xe7,0xa9,0xa6,0x36,0x27,0xde,
- 0xd3,0x19,0xf7,0xff,0x4b,0xfb,0x1e,0x9b,0xc3,0x93,0x66,0xb0,0x55,0xa3,0x2c,0xbf,
- 0x43,0xfa,0xfd,0x2d,0x74,0x89,0x77,0x3a,0xb5,0xe1,0xec,0x64,0x31,0x97,0xfe,0x86,
- 0x1d,0xe7,0xf9,0x9e,0x3e,0x6e,0xd9,0xf5,0x97,0x45,0xcb,0x4c,0xa5,0x1d,0xde,0x87,
- 0xae,0xb8,0xb6,0x43,0xa9,0x5a,0x32,0xee,0xa9,0xb9,0x9b,0xee,0x61,0x6d,0xa2,0x7f,
- 0xe8,0x55,0xf7,0xc4,0xd6,0x85,0xa7,0xea,0x6f,0xd8,0xdd,0x5b,0x00,0xbb,0x76,0x10,
- 0x0b,0x9c,0x46,0x90,0xb5,0x4d,0xf9,0x89,0x13,0x76,0xf8,0x4a,0x01,0x22,0x23,0x72,
- 0xf3,0x7a,0xfc,0x75,0x0e,0x06,0x4c,0x97,0xec,0x7c,0x69,0x3b,0x15,0xf2,0x56,0xa3,
- 0x02,0xb6,0xb7,0x0e,0x40,0xcc,0x2d,0xcd,0xb1,0x34,0xeb,0x54,0x0d,0xbb,0x51,0xfc,
- 0xe1,0x9b,0x6c,0x57,0x81,0xec,0x61,0x08,0x5e,0xec,0x0f,0xb6,0xb5,0x18,0x6c,0x1c,
- 0x9e,0x85,0x06,0x49,0x8d,0xbd,0x98,0x76,0x05,0x2b,0x62,0x8b,0x6f,0x2a,0xfe,0x72,
- 0x28,0x2d,0x17,0xda,0x42,0x97,0xcf,0x32,0xa8,0x8e,0xc6,0x31,0x9e,0x04,0x57,0x8e,
- 0x98,0x16,0x91,0xa5,0x99,0xb3,0xa1,0xc8,0x75,0xf8,0xeb,0x5b,0x65,0x6f,0xf3,0xad,
- 0x50,0x51,0x80,0x0b,0x66,0xc1,0x7e,0xb5,0x32,0xeb,0x7b,0x80,0xbd,0x09,0xcf,0xc0,
- 0x7f,0xcf,0xaa,0x0f,0x88,0xf8,0xf0,0xfc,0x1a,0x3e,0xa8,0x3e,0xe4,0x0b,0x5d,0x17,
- 0x7f,0x78,0xca,0xb2,0xb9,0x2d,0x07,0x6d,0x31,0xba,0x24,0x48,0xae,0x37,0xf5,0x5f,
- 0xb6,0xfd,0x49,0xb6,0xea,0xe1,0x82,0xd2,0xcc,0xbc,0x29,0x1e,0x9e,0xbc,0x01,0xfe,
- 0xfa,0xc8,0x1a,0xb7,0xf7,0x94,0xbc,0x1b,0x4f,0x2d,0x25,0xdd,0xbf,0x1e,0x70,0xee,
- 0x59,0xeb,0xda,0x77,0xf4,0xd8,0x92,0x7c,0xfe,0x97,0xd0,0x9f,0x27,0xfc,0x35,0x49,
- 0x90,0x2a,0x25,0xf4,0xd9,0x5e,0xc4,0x16,0x61,0xc4,0xe0,0x54,0xea,0x2e,0x4a,0x5d,
- 0x79,0xd3,0xc4,0x4b,0x43,0xe2,0xd2,0xb5,0x6d,0xb7,0xe6,0x7c,0x48,0xd2,0xa8,0x1f,
- 0x74,0xeb,0xcf,0x57,0xcb,0xfd,0xe2,0xd1,0x48,0x78,0x44,0x96,0x4b,0xe6,0x82,0xed,
- 0xf2,0xc3,0xe6,0x3d,0xd8,0x63,0x0f,0xf9,0x66,0x5a,0xbf,0x86,0x70,0x56,0xec,0x68,
- 0x07,0xd2,0xe1,0xdc,0xfe,0x45,0x89,0xcc,0x1f,0xb8,0xf4,0xe7,0x73,0x1a,0xbf,0xa6,
- 0x00,0xb3,0xd8,0x12,0xac,0x26,0xd6,0x63,0x96,0xb9,0xc1,0x98,0xd7,0xa7,0x3d,0xc0,
- 0x76,0x78,0x37,0xa8,0xdf,0x38,0x29,0x2f,0xb9,0xfa,0xb9,0x19,0x9f,0xd3,0xef,0x8a,
- 0x3f,0x14,0x5b,0x52,0x59,0xc0,0x6a,0x6b,0xcf,0xfb,0x90,0xa3,0x5a,0x3d,0x3a,0xed,
- 0x49,0xd3,0x18,0xd5,0x5e,0x0c,0x02,0xd5,0x36,0x3d,0xa9,0xdd,0xc9,0x4a,0x68,0x0a,
- 0xdb,0xfb,0x97,0xa7,0x26,0x8e,0x6f,0xc2,0x99,0xbc,0xfe,0xbc,0xcc,0xfa,0xd1,0x1a,
- 0xd9,0x09,0x43,0xc2,0x2e,0x3a,0xfd,0x7e,0x2f,0x70,0xf4,0x96,0x1a,0x76,0x62,0xa0,
- 0xa1,0x3f,0x70,0x55,0xd9,0x0b,0x27,0xda,0x63,0xa3,0xda,0x18,0x73,0x39,0x6f,0xe8,
- 0xd7,0x3d,0x88,0x08,0xe8,0xe3,0x29,0xfa,0xf3,0xce,0xe8,0xe4,0xfd,0x04,0x84,0x03,
- 0xd6,0x84,0x60,0xc4,0x2a,0xf3,0xb4,0x57,0xfb,0xe5,0x9c,0x58,0x87,0x57,0xb0,0x9c,
- 0x53,0xe2,0x0f,0x57,0x8d,0xa2,0x4b,0xf3,0xcb,0x7c,0x22,0xd8,0x62,0x42,0x5b,0x6b,
- 0xe1,0x6a,0xc2,0xae,0x54,0x45,0xd2,0xf4,0xa5,0x11,0xa1,0xbf,0xb1,0xc0,0x9a,0x6e,
- 0xc7,0x28,0x0e,0xaf,0x1c,0x55,0xb2,0x39,0xfc,0xa5,0x4a,0xff,0x39,0x38,0xa2,0x93,
- 0xff,0x5c,0x90,0xc8,0x03,0x3d,0xfd,0xc2,0xb5,0xd6,0x12,0xbb,0x99,0x70,0xad,0xc3,
- 0x9e,0xc3,0x96,0x0c,0x2d,0xf3,0x12,0xb6,0x12,0x15,0x99,0xaf,0x8f,0x3f,0xec,0x84,
- 0x29,0xcf,0x51,0x0f,0xeb,0xe2,0xd2,0xd7,0x6d,0x44,0xd6,0x1c,0xd6,0xbb,0xf9,0x7d,
- 0xb2,0x22,0xb3,0x88,0x75,0x74,0xe5,0x7f,0xf9,0x89,0x82,0x14,0x43,0xc0,0xd0,0xcf,
- 0x3c,0x63,0xa3,0xad,0xf0,0x31,0x31,0x2b,0xbb,0x6c,0x68,0xc6,0x8e,0x40,0x1a,0xdf,
- 0x84,0x90,0x1f,0xba,0x0c,0xc8,0x1d,0xa1,0x98,0xf3,0x72,0xf9,0x5f,0x22,0xfe,0x70,
- 0x3d,0xf6,0xe1,0x37,0x95,0x2b,0xb8,0x89,0x47,0xa5,0x0a,0xcd,0x84,0x11,0xeb,0x0b,
- 0x8b,0x28,0xdc,0x60,0xcc,0xda,0xb2,0xee,0xbf,0xac,0x21,0x21,0xbb,0xb7,0x03,0xa4,
- 0x97,0x72,0x38,0xe4,0x20,0x68,0x52,0x91,0xc5,0x7e,0x76,0xe9,0x6f,0x48,0x4a,0x6b,
- 0x92,0xf4,0xe7,0x05,0xfe,0xf2,0x08,0x59,0x00,0x34,0x42,0x97,0x67,0x34,0x59,0x5b,
- 0x2e,0xa1,0xd3,0xfe,0x49,0xa8,0x69,0x40,0x48,0x50,0x5e,0x86,0xa6,0xbe,0x9c,0x28,
- 0x4a,0x61,0xfe,0x97,0x10,0x39,0xb4,0x94,0x08,0x0e,0xdd,0x02,0x72,0x2f,0x63,0x70,
- 0xad,0xbd,0xe9,0xe5,0x92,0x31,0xdc,0xfe,0x4e,0x52,0x46,0x21,0x55,0x4b,0x39,0x4d,
- 0x97,0x5c,0xd4,0xf3,0x25,0xe2,0x97,0x71,0x28,0x6f,0x73,0xf1,0x5f,0x24,0xa9,0xa1,
- 0x72,0x5c,0x49,0x0e,0xb1,0x60,0x6f,0xe7,0x0e,0x26,0xf4,0xe7,0x47,0x11,0x64,0x0d,
- 0xb1,0x0e,0x1e,0xcc,0x86,0x52,0xc1,0xb9,0xc4,0x2a,0xe6,0xa0,0x19,0x19,0x96,0x2a,
- 0x5a,0x32,0x65,0x2e,0xfd,0x0d,0x12,0xcd,0x2b,0x36,0x70,0x1d,0xc1,0xad,0x9f,0xb2,
- 0xb4,0xfc,0xf9,0x15,0x32,0x21,0x96,0xc1,0x3f,0xf3,0xe3,0xa7,0x0c,0x70,0x2f,0x95,
- 0x24,0x56,0x3f,0x4c,0x43,0xe9,0xd2,0x3f,0xec,0xa1,0x70,0x82,0xbd,0xec,0x36,0x72,
- 0x69,0x46,0x3b,0x3b,0xf2,0xfa,0xf3,0xef,0x51,0x90,0x0f,0x49,0x85,0xd4,0xcc,0xa7,
- 0x57,0x62,0x85,0x8b,0x09,0x3d,0x07,0x49,0xf6,0x75,0x32,0x22,0xf9,0xfc,0xaf,0x31,
- 0x12,0x39,0x3c,0xac,0xdc,0x86,0x46,0x57,0x7a,0x55,0x8f,0x26,0xb3,0xbd,0x10,0x38,
- 0xff,0xde,0x38,0x46,0x6c,0x57,0x87,0xf6,0x79,0xef,0x89,0x54,0x57,0x8e,0x6f,0x22,
- 0x68,0xf6,0x9e,0x79,0xc2,0x8b,0x60,0xed,0x33,0x79,0xfd,0xf9,0xa3,0x70,0x5e,0xc8,
- 0x81,0x2e,0x18,0x83,0x2b,0x69,0x19,0x7f,0xa8,0xda,0x63,0x31,0x84,0xb3,0xe0,0xe7,
- 0x56,0x09,0x28,0x67,0xd9,0xa7,0x6a,0x13,0xe4,0x0e,0x28,0x10,0x88,0x11,0x5f,0xb9,
- 0x88,0x28,0x6c,0x77,0xfd,0x65,0xf3,0x82,0x55,0x92,0x4e,0x7e,0xa8,0x9e,0x6f,0x8d,
- 0x6e,0xf5,0x47,0x02,0xe1,0x5c,0x84,0x9b,0x10,0xe2,0x40,0xa7,0xb4,0x9a,0x64,0xf4,
- 0x52,0x61,0x81,0xdf,0xe5,0xa5,0x21,0x38,0x61,0x44,0x7b,0x11,0x9a,0xb9,0xf2,0xbf,
- 0xb0,0x5b,0x2e,0xa9,0x07,0xd8,0xfb,0x26,0x0e,0xdc,0x76,0x35,0xa3,0xd1,0x71,0x44,
- 0xad,0x2c,0x62,0x9e,0xe4,0x8b,0x2c,0xdf,0xb3,0xec,0x36,0xf3,0x88,0x15,0xe4,0x6e,
- 0xca,0xf8,0x65,0xab,0xd3,0x5c,0x60,0x69,0xcf,0xbb,0xf5,0x37,0x32,0xd8,0xbd,0xc5,
- 0xed,0x38,0x04,0x5d,0x03,0x86,0x21,0xb4,0x28,0xed,0xf1,0x1a,0x06,0x4e,0x11,0x89,
- 0x3a,0x5b,0xa6,0x13,0xff,0xe5,0xde,0xbf,0x68,0xbc,0xe8,0x8c,0xd1,0xe7,0xca,0xff,
- 0x7a,0xbe,0xa3,0xe2,0x1d,0xb5,0x05,0xf1,0xd7,0x0b,0xa9,0x73,0x41,0xb5,0xc1,0xa9,
- 0x0b,0xbc,0x9e,0xfd,0xda,0x6c,0xa7,0x40,0xc4,0x16,0xf6,0x5f,0x61,0x51,0x8f,0x91,
- 0x6d,0x59,0x0f,0x39,0x8d,0xc4,0xdf,0xc0,0x86,0x54,0xc5,0x30,0x22,0x85,0x99,0x2e,
- 0xfd,0x43,0x13,0x57,0x00,0x35,0xd9,0x67,0x4d,0x40,0xc4,0x1f,0x06,0xdf,0x4a,0xa1,
- 0x2d,0x8f,0x40,0xec,0x14,0xef,0x53,0xeb,0x2d,0xbf,0xae,0x2c,0x8b,0x5f,0x4c,0x2f,
- 0xbc,0xd3,0x4f,0xdf,0x07,0x2f,0x11,0x46,0xeb,0xf7,0xbe,0x9c,0x3e,0x90,0x0d,0xc4,
- 0xdc,0xf9,0x5f,0x57,0x68,0x08,0x2c,0x85,0x72,0x5a,0x9a,0x96,0x05,0xde,0x91,0x83,
- 0x42,0x93,0xe8,0x92,0x79,0x1e,0xee,0xc0,0x4b,0x5a,0xc6,0xbc,0x36,0x43,0x4e,0x3d,
- 0x73,0x42,0xb7,0x87,0xf2,0xda,0x8c,0xbb,0xac,0xc2,0xfa,0x5f,0xe2,0xf8,0x11,0x9d,
- 0x1c,0x5d,0x64,0x37,0xa4,0xb4,0xdc,0x78,0x0d,0x53,0x90,0x8f,0x55,0xca,0xd1,0xab,
- 0x9c,0x80,0xa8,0x99,0xe3,0x4f,0xa5,0xc6,0x0b,0x71,0x64,0xe9,0x02,0xfd,0x43,0x26,
- 0x4a,0x49,0xea,0x8e,0xc8,0x61,0x2e,0xe3,0x60,0x10,0x1e,0x83,0x3b,0x86,0xd5,0xd6,
- 0x20,0x85,0x5b,0x54,0x98,0x05,0x25,0x29,0xd9,0x06,0xa8,0x18,0xd4,0xb2,0xcc,0xa5,
- 0x7f,0x48,0xb4,0x97,0xe6,0x67,0x9f,0x85,0xe7,0xf9,0x4e,0x43,0x9b,0x29,0xfb,0x59,
- 0xf2,0x8c,0x1b,0xda,0xab,0x46,0xb0,0x9f,0x7f,0x43,0xd9,0x28,0xd9,0x9c,0x46,0x62,
- 0xb1,0x24,0x25,0xbf,0x3a,0xbc,0x62,0xaa,0xfe,0x21,0x89,0xb4,0x54,0x50,0xa0,0xc2,
- 0x42,0xad,0x29,0x3f,0x4f,0xfb,0x59,0xd2,0xaa,0x22,0x56,0xba,0x0f,0x9f,0x93,0x1e,
- 0x73,0x8d,0xbb,0x28,0x5e,0x2f,0xce,0x96,0x5d,0xfc,0xd7,0xd5,0x34,0x42,0xaa,0xac,
- 0x72,0x27,0x5c,0x6d,0x59,0x90,0x0e,0x0c,0xdb,0x65,0xbf,0xb4,0x34,0xbe,0xf3,0xa7,
- 0xb2,0x75,0xbc,0x74,0xa8,0xf2,0x32,0x5c,0xe6,0x0b,0x3a,0xfc,0x4e,0x22,0x58,0x09,
- 0xc2,0x2e,0x7e,0xdc,0x5b,0x47,0x9f,0x72,0xf3,0x5f,0x24,0x72,0x98,0xd0,0xb2,0x7c,
- 0x54,0x8d,0xb1,0x5c,0x39,0x2a,0xe9,0xe0,0xa9,0x42,0x76,0x3e,0xdb,0x32,0x46,0x6a,
- 0xbd,0x7c,0x7a,0x36,0xef,0x04,0x8e,0x99,0xa2,0x16,0x9b,0x0b,0x7f,0x9d,0x4f,0xdb,
- 0x6e,0x3c,0x85,0x60,0xad,0x94,0xf5,0xa4,0xec,0x3a,0x47,0xbd,0xb0,0xd0,0xf4,0xff,
- 0x40,0x99,0x66,0xfc,0x0a,0x5f,0x11,0xbf,0x80,0x03,0x8e,0x64,0xfa,0x31,0x3e,0xcb,
- 0xf4,0x17,0xf2,0x5f,0x1c,0x9d,0xe4,0x54,0xe2,0x5d,0xb6,0xd1,0xdc,0xd5,0x1a,0x4a,
- 0xf9,0xaa,0x6c,0xfc,0x15,0x7c,0x57,0xdd,0x78,0x26,0x68,0x86,0xb6,0x93,0x6c,0xf8,
- 0xb2,0x60,0x5e,0x37,0x83,0x9c,0x6d,0x26,0xce,0x57,0xb7,0x6e,0x2a,0xe0,0xbf,0xe6,
- 0x36,0xd3,0x25,0xda,0xbf,0x5a,0x5b,0x9c,0x3a,0x50,0xc5,0x29,0xd6,0x6f,0x6c,0x84,
- 0xb9,0x2d,0xa1,0x19,0x6c,0x0e,0x6c,0x54,0xe7,0xe7,0x9f,0xe3,0x43,0xf7,0x9b,0x6d,
- 0x8c,0x8b,0x02,0x5e,0x05,0xf9,0x5f,0x55,0xcb,0x08,0x7f,0x99,0x6d,0xba,0xb1,0x4c,
- 0xd5,0x7d,0xf9,0x2c,0x24,0x13,0x51,0xc0,0x72,0x15,0x61,0x57,0xba,0x2d,0x14,0x22,
- 0x16,0xa6,0x1f,0x6e,0x97,0x00,0xe1,0x24,0x29,0x72,0xe0,0xa5,0x02,0xfe,0x2b,0xf4,
- 0x82,0x1e,0x78,0x2c,0x79,0x2e,0x73,0x7c,0x4d,0xf4,0x66,0x7f,0xa2,0x53,0xa8,0x25,
- 0xf8,0xd0,0x6d,0xee,0xdd,0x35,0x10,0x7a,0x41,0xf5,0x27,0x34,0xa3,0xfd,0x8c,0x71,
- 0xd8,0xe7,0x96,0xb6,0xeb,0xb5,0xac,0xbf,0x8c,0xa9,0x05,0xf9,0x5f,0x38,0xbf,0x1a,
- 0x5a,0xb6,0xbc,0x86,0xf8,0x0b,0x37,0xb2,0x16,0xa1,0x09,0xef,0x04,0x07,0xf2,0x3f,
- 0x10,0xda,0x7a,0x6d,0xf7,0x25,0xb8,0x12,0x5a,0x54,0x00,0xa9,0xec,0x00,0xc2,0x7c,
- 0xfe,0x97,0x67,0x08,0xec,0x1a,0x61,0x8d,0xb2,0xa4,0x72,0xca,0x29,0xd6,0x4c,0x37,
- 0xdb,0x45,0x96,0x17,0xe2,0x3d,0x75,0xf9,0xe7,0xac,0x4a,0x09,0x64,0x47,0x75,0x15,
- 0x61,0xee,0x14,0xfd,0xc3,0x34,0x33,0x58,0x47,0xd1,0x7c,0x08,0xa5,0x73,0xd1,0x86,
- 0xc1,0x61,0x76,0x06,0x48,0x64,0xde,0x67,0x38,0x19,0x61,0x2e,0xb2,0xac,0xc7,0x2b,
- 0x8c,0x42,0xfe,0xcb,0x72,0xb2,0xbd,0x2c,0x51,0xed,0xcb,0x46,0x5b,0x43,0xcc,0x16,
- 0x99,0xff,0x33,0x1a,0x0b,0x6c,0x29,0xba,0x5e,0x23,0x91,0xb9,0xf8,0x2f,0x92,0x11,
- 0xde,0x41,0x83,0x0b,0xf3,0x9b,0x3b,0x44,0xfd,0x65,0xaf,0x44,0xf4,0x8c,0xaa,0x2d,
- 0x87,0x66,0x92,0xda,0x86,0x11,0x6c,0xb9,0x81,0x22,0x7d,0xa6,0x80,0xff,0xca,0xe2,
- 0x2f,0xdd,0xae,0xcd,0x81,0x63,0x66,0xb4,0x75,0x25,0x89,0x1c,0x1e,0x92,0xd1,0x86,
- 0xef,0xb2,0x5e,0x23,0x6a,0xaa,0x4f,0x27,0xfe,0x4e,0x94,0x51,0xa0,0xfe,0xf1,0x8c,
- 0x53,0x7e,0x9c,0xa3,0x1b,0xbf,0x6a,0x5b,0xf9,0x54,0xfe,0x4b,0x57,0xfa,0x29,0x8b,
- 0xb6,0x60,0x50,0xf0,0xe6,0x94,0x04,0xbc,0xfc,0x7c,0x0e,0x41,0x17,0x4a,0xd3,0x6b,
- 0x6e,0xfd,0x0d,0x82,0xe4,0x88,0xb6,0xe2,0x63,0x3c,0xaa,0x7f,0x11,0x34,0xc3,0x4e,
- 0x04,0x53,0xce,0xe9,0x67,0xcc,0xa8,0x17,0x5f,0xa4,0xb4,0x4b,0x91,0x23,0x27,0x44,
- 0x3f,0x55,0xff,0xd0,0x43,0x94,0x96,0x76,0x8e,0xdd,0x09,0x2f,0xaa,0x8b,0x52,0xa5,
- 0xb2,0x10,0xb3,0xc0,0x56,0x6f,0xc2,0x13,0x33,0x8d,0xb4,0xfa,0xd1,0xae,0x31,0x78,
- 0x91,0xd9,0x1a,0xf5,0x36,0x34,0x1b,0x83,0x27,0xf8,0x14,0xfd,0x43,0x2f,0xfa,0xe1,
- 0xbd,0xb7,0x14,0x33,0x56,0x8c,0x8e,0xc7,0x4c,0x9f,0x53,0xbe,0x50,0xa5,0x3a,0xf2,
- 0x09,0xca,0x6e,0x68,0x64,0x03,0xb8,0xc4,0xc5,0x0b,0xf0,0xd7,0x2b,0x89,0xe4,0xa0,
- 0x48,0x04,0x9b,0x82,0xbf,0x6e,0x31,0xd9,0x0c,0x4f,0x06,0xe6,0x98,0x3e,0x8a,0x4f,
- 0x38,0x08,0x6b,0x05,0x11,0x66,0x3c,0x46,0x55,0x57,0x5a,0x71,0x59,0xee,0x32,0x9d,
- 0xd0,0x3b,0x8f,0x58,0x9f,0x7f,0x0b,0x8f,0x51,0x22,0xd8,0xea,0x42,0xfd,0xc3,0xea,
- 0x6c,0xe0,0x8c,0x52,0x06,0x7f,0xe0,0xb7,0x1b,0x5f,0xac,0xd7,0x24,0x22,0xf3,0xaf,
- 0x57,0x2e,0xc3,0xaf,0xf9,0xf3,0x54,0xed,0xeb,0x47,0xd8,0x92,0x71,0xa8,0x31,0x81,
- 0xbf,0x7e,0xc3,0x4e,0x13,0x34,0x1b,0xd3,0x5c,0xf8,0x8b,0xdc,0x78,0x05,0x37,0x17,
- 0x58,0xcf,0xec,0x40,0x44,0x67,0x73,0x11,0xc2,0x0e,0xff,0xc6,0xa7,0xf0,0x5f,0xc2,
- 0x4f,0x60,0x13,0x05,0xfa,0x1b,0x12,0x7f,0x2d,0x38,0x17,0x18,0x50,0x2e,0xc0,0x49,
- 0x1e,0xab,0x12,0xb4,0xd7,0x84,0x40,0x5b,0x9e,0x3f,0xc2,0x6f,0x12,0x77,0xc6,0x4b,
- 0x7b,0x2a,0x1f,0x82,0x5f,0xf2,0xe8,0x90,0xd4,0xd0,0x4e,0x89,0x1c,0xb1,0x3f,0xc2,
- 0x8a,0xed,0x0b,0xb2,0xb8,0xeb,0x0d,0xba,0xf3,0xbf,0x2a,0xac,0x4e,0x2f,0xba,0x58,
- 0x8f,0x42,0x75,0x48,0xee,0x5f,0x5c,0x24,0x82,0x8d,0xc0,0x63,0x59,0xdc,0xb6,0xd6,
- 0x2b,0xb3,0x20,0x61,0x18,0x59,0xa9,0xbf,0xc1,0x05,0x10,0x1b,0x5c,0xb6,0x69,0x67,
- 0x68,0x58,0xd3,0x0a,0xf0,0x17,0xd5,0x5f,0x36,0x71,0xd7,0xfb,0x1e,0x55,0x2d,0x14,
- 0xcf,0x31,0x9c,0x7d,0x30,0x34,0xcf,0xf4,0x3d,0xc8,0x66,0x19,0xdf,0x87,0xaf,0x5a,
- 0xc5,0x92,0x08,0x13,0xf1,0x87,0x16,0x22,0x9c,0x39,0x54,0x82,0xcd,0xc6,0x5f,0x6b,
- 0x66,0xd8,0x51,0x55,0x5e,0xd6,0x0b,0x5b,0x13,0x35,0x71,0x47,0x65,0xc5,0xf6,0x33,
- 0x2d,0x83,0x8a,0x93,0x96,0xc2,0x93,0x50,0xd5,0xe7,0x8e,0xe8,0x78,0xc5,0x14,0xf5,
- 0xbf,0xea,0x1d,0xfc,0xd5,0x73,0xd3,0x3e,0x99,0x8d,0x82,0x7b,0x53,0xd1,0x9b,0x9b,
- 0x62,0x7b,0x03,0x0d,0x4a,0x78,0xd6,0x84,0x57,0x44,0x1b,0x8e,0xb0,0xe3,0x56,0xbd,
- 0xf9,0x44,0x5a,0xa9,0x85,0x37,0xe0,0x85,0xc1,0x12,0x99,0xb1,0x22,0xfb,0x19,0x9d,
- 0xff,0x3a,0x2b,0x70,0xd8,0xc1,0x5f,0x82,0xff,0x62,0x42,0xfc,0xfc,0xfd,0x35,0x1f,
- 0xc4,0x63,0x3c,0x27,0xb0,0x86,0xc6,0x7f,0xa8,0xef,0x34,0xc7,0xcc,0x2d,0xed,0xb7,
- 0xec,0x63,0x1f,0x40,0xa4,0x3f,0x90,0x99,0xee,0xf2,0xeb,0x48,0xb8,0xb2,0x73,0x0f,
- 0x6e,0x64,0x39,0xfc,0x75,0x51,0xc0,0xae,0xe4,0x59,0x78,0x05,0x16,0x24,0xd0,0xa9,
- 0x78,0xd8,0xd1,0xd9,0xfe,0x1b,0x38,0xb5,0x79,0x91,0xf9,0x78,0xb1,0x56,0x65,0xfc,
- 0x3f,0xa4,0xd8,0x86,0x7e,0x8b,0xd7,0x76,0x41,0xdf,0x46,0x0f,0x7f,0x51,0x6f,0xe0,
- 0xd8,0x52,0x17,0xff,0x85,0xfb,0x57,0xe6,0xd6,0xa3,0xe8,0xab,0x6f,0x3a,0x57,0xd7,
- 0xd3,0x81,0xfe,0xa1,0x67,0x42,0x38,0x81,0xcd,0xef,0x18,0xcf,0x0e,0x06,0xe3,0x25,
- 0x9b,0x8b,0x6a,0x8d,0x23,0xdb,0x82,0x0e,0x6f,0x45,0xb9,0x39,0x78,0xf3,0x73,0x29,
- 0x44,0x52,0x9b,0x99,0x91,0xd3,0x3f,0xf4,0x1e,0x61,0xe8,0xe1,0xef,0x65,0x1f,0x78,
- 0x36,0x25,0x48,0xc3,0xed,0x66,0x87,0xf6,0x0a,0x0e,0x2d,0xd9,0xe4,0x99,0xbb,0xac,
- 0x38,0x9d,0xa8,0x21,0x41,0x60,0x6b,0xa6,0x78,0x8e,0x52,0x63,0x6d,0x42,0xf8,0xc6,
- 0xc9,0x45,0xd7,0xf4,0xb2,0x02,0xfe,0xcb,0x30,0x6f,0xf6,0x30,0x7c,0xa7,0x61,0x35,
- 0xd5,0x12,0x5d,0x49,0x31,0x6f,0x03,0xb7,0x44,0x8a,0x2c,0x7d,0x97,0x8a,0x20,0x2b,
- 0x48,0x32,0x95,0xfa,0xb0,0x0c,0x99,0xeb,0x36,0x04,0x77,0x63,0xb1,0xb4,0x61,0xf4,
- 0x6b,0x1e,0xc6,0x6e,0xca,0xe3,0xaf,0x10,0x3e,0x39,0xad,0xbc,0x0f,0xc7,0xa1,0xab,
- 0x63,0xa5,0xf0,0x7b,0x05,0xbc,0x55,0xce,0xb5,0x0e,0x18,0x2f,0x98,0x7f,0xc1,0x8b,
- 0x70,0x07,0x31,0x1b,0xce,0x08,0x7f,0xec,0x3b,0x86,0x1d,0xa0,0x3b,0x00,0x5d,0xd6,
- 0xaa,0xc7,0x3a,0x1d,0xfe,0xeb,0x73,0x02,0x49,0x51,0xb2,0xf3,0x68,0x7a,0x12,0x9a,
- 0x74,0x47,0xe7,0x9f,0xbc,0xc1,0x51,0x7e,0x99,0x35,0x99,0xd3,0xfb,0x15,0x8a,0x70,
- 0xb3,0x53,0x57,0x26,0x66,0x34,0xbc,0x32,0x9d,0xc8,0x97,0xc9,0xfa,0x58,0x7f,0xa0,
- 0xaf,0x20,0xfe,0x10,0x04,0xa4,0xb2,0x6b,0xe2,0xe0,0x03,0xc5,0x8e,0x56,0x7a,0x46,
- 0xb9,0x08,0xff,0x5d,0x14,0xf9,0x5a,0x3a,0xca,0x11,0x88,0xf9,0xfc,0x7d,0xc9,0x51,
- 0x18,0xf0,0x2e,0xf0,0xd1,0x3d,0xfc,0x64,0x45,0x13,0x6c,0xb1,0x6e,0xa0,0xbf,0xe1,
- 0x18,0xf0,0x31,0x1c,0x16,0x41,0x86,0x41,0x44,0xbe,0xfc,0xf3,0x43,0xea,0x24,0x3b,
- 0x67,0x76,0xe8,0x35,0xba,0xda,0x8e,0x73,0xb0,0xc3,0x0c,0xea,0x5a,0x3b,0xb5,0xb4,
- 0xd6,0x6c,0xd7,0x1e,0x2f,0xd0,0xdf,0xd0,0xed,0xd0,0x4d,0x51,0xbd,0x17,0xd0,0xd8,
- 0x2f,0x40,0x56,0xf3,0x49,0x79,0x0c,0xb5,0x10,0x5b,0xd0,0x2b,0xf0,0xf8,0x74,0xf6,
- 0x0b,0x8a,0x79,0x03,0x9c,0x44,0x32,0xa9,0x7c,0x85,0xe1,0xaa,0xff,0x75,0x5d,0x94,
- 0xe9,0x5a,0x5a,0x84,0x2d,0x75,0x3f,0x23,0xa1,0x80,0x22,0xa2,0x63,0x06,0xe8,0xb8,
- 0x98,0x64,0xd5,0xb3,0xf0,0x03,0x79,0xc2,0x39,0x44,0xc5,0x5f,0xbc,0xb8,0x50,0x3b,
- 0xfa,0x87,0x37,0xe5,0x5e,0x75,0xd7,0x5e,0x40,0x2b,0xdb,0xec,0x1e,0xe5,0x63,0xfd,
- 0x04,0x7b,0x84,0xd8,0xa5,0x8f,0x94,0x01,0x2b,0x36,0x58,0xb3,0x19,0xc7,0xf4,0xad,
- 0x96,0xae,0x75,0x81,0x4d,0xca,0x70,0x62,0x80,0xf2,0x22,0xb7,0x6b,0x33,0x0a,0xeb,
- 0x2f,0x17,0xe6,0x45,0x5e,0x45,0xe3,0xd6,0x51,0xe5,0x6a,0xf3,0xef,0x60,0xb1,0xf5,
- 0x6f,0xa3,0xca,0x88,0x31,0xf6,0x54,0xec,0xb5,0x92,0x8d,0xca,0xe5,0xc4,0x27,0x10,
- 0x5b,0x1d,0x38,0xa6,0x5c,0x8e,0xa0,0x57,0xc9,0x03,0xed,0x85,0xfc,0x57,0xb4,0xe0,
- 0xfb,0xc4,0xe5,0x71,0x96,0x70,0xda,0x3d,0x31,0x52,0xdb,0x38,0xc7,0x8e,0x9b,0x5d,
- 0xa9,0xf0,0x1e,0xcd,0xaf,0x8e,0xeb,0xb1,0x1d,0x08,0xdb,0x87,0xf5,0x89,0x96,0xae,
- 0xbb,0xc3,0x0b,0xf1,0xfb,0xe4,0xf0,0x97,0x0c,0x32,0x54,0x72,0x1d,0x15,0xa6,0x68,
- 0x0d,0xab,0x44,0x9e,0x54,0x04,0x88,0x6a,0xf9,0x10,0x36,0xb5,0x04,0x33,0xea,0x3e,
- 0x76,0x9b,0x7a,0x64,0xb0,0xa6,0x47,0x3d,0x90,0xf8,0x10,0x0e,0x37,0x07,0x75,0xdc,
- 0xd1,0xa2,0x6e,0xfe,0x4b,0x1c,0x1b,0x9a,0xce,0x78,0x99,0xc2,0x97,0x28,0xc6,0xf1,
- 0x2a,0x4a,0x7a,0x56,0x92,0xb2,0xeb,0xcb,0xde,0x84,0x19,0x8c,0xb4,0x84,0x12,0xac,
- 0xaa,0xc7,0x13,0x4e,0xb7,0x44,0x12,0xe7,0xcc,0x2e,0xd3,0x98,0xa1,0x1a,0x6c,0xbd,
- 0x2b,0xfe,0x50,0xd2,0x5e,0x3f,0x92,0x70,0x60,0x0c,0x71,0xc1,0x0b,0x08,0xbb,0xe6,
- 0x09,0x5c,0xf0,0x58,0x35,0x25,0x1f,0xbd,0x66,0xe0,0x6e,0x15,0x1c,0xf8,0xfb,0xc4,
- 0x67,0xbd,0xcf,0x4b,0xb1,0xfa,0xd7,0xc4,0xa7,0xd0,0x58,0xeb,0xe2,0xbf,0xd2,0x11,
- 0x6b,0x55,0x44,0xa1,0xf7,0xa7,0x31,0x84,0x7e,0xb8,0x89,0x1e,0x75,0x63,0xf6,0xa7,
- 0x11,0xe5,0x23,0x78,0x39,0xd3,0x68,0x6d,0x69,0x50,0x7e,0x61,0xbe,0x6c,0x46,0x46,
- 0xbd,0x9f,0x29,0xf7,0x57,0x8d,0xee,0x6f,0x3c,0xb3,0xd2,0xa0,0x18,0xc5,0x96,0xc8,
- 0xa0,0xbf,0x4a,0xb9,0xdb,0x15,0x7f,0xa8,0x37,0x49,0xae,0xff,0xbb,0xf4,0x02,0x50,
- 0x98,0xe8,0x55,0xbe,0xb8,0xbf,0xf6,0xbc,0x32,0x62,0xe6,0xeb,0x7f,0x51,0x84,0xc0,
- 0xaf,0x9c,0xf8,0xc3,0x73,0xb8,0xa0,0x8d,0x83,0xf8,0x54,0xca,0xcd,0x7f,0xc9,0xf1,
- 0x62,0xb2,0xde,0x8d,0x46,0xe3,0x45,0x81,0xa3,0x0b,0x48,0x31,0x09,0x27,0xe3,0xcf,
- 0x2b,0xc3,0x52,0xe1,0x21,0xa3,0x18,0x84,0x2f,0xa4,0x0f,0x89,0x86,0x67,0x0a,0xff,
- 0x15,0xb7,0x8f,0x55,0x7f,0xeb,0x1c,0x00,0xbe,0x20,0xe4,0x76,0xcb,0xce,0x7a,0x71,
- 0xeb,0x3f,0xae,0x3d,0xd0,0x37,0x0b,0x7e,0xee,0xad,0x30,0xb5,0xd1,0xe0,0x0c,0xdc,
- 0xfa,0x9b,0x4c,0x75,0xb0,0x79,0x86,0x23,0x56,0xef,0xe2,0xbf,0x6c,0x25,0xf9,0x3e,
- 0x68,0xa7,0x20,0x43,0x95,0x95,0x21,0x4a,0x9a,0xf3,0x8e,0xef,0x61,0x47,0xf9,0xbf,
- 0x1e,0xa1,0xd9,0xc1,0x76,0xba,0x27,0x31,0x9b,0x94,0x4f,0xb0,0x7b,0x9b,0xbf,0x02,
- 0x07,0x3b,0x44,0x76,0x5e,0x01,0xff,0x55,0x65,0xad,0x90,0x39,0x11,0x36,0x11,0xd6,
- 0xe5,0xa9,0xca,0xaa,0xf5,0x65,0xa7,0x5b,0xed,0xfa,0x29,0x35,0xd0,0xad,0x56,0x9d,
- 0xd5,0x1a,0x71,0x23,0xeb,0x7e,0x30,0x3c,0xa6,0xd6,0xb1,0x95,0xf1,0x6e,0x5a,0x13,
- 0xea,0xdc,0xfc,0xd7,0x65,0xa8,0x93,0x94,0x56,0x02,0xc2,0x94,0xf6,0x15,0x82,0x0b,
- 0x30,0x97,0x97,0xa6,0xa7,0x8f,0x79,0x2e,0x7b,0x1f,0xa1,0x4b,0x77,0xf1,0xab,0x7d,
- 0x07,0x33,0x81,0x21,0xad,0x81,0x3f,0x62,0xfd,0x43,0x57,0x78,0xe4,0xb6,0xef,0xd0,
- 0xdc,0xe1,0xfe,0xa1,0x42,0xfe,0x4b,0x84,0x1d,0x8e,0xc2,0x59,0xb9,0x8e,0x51,0xd9,
- 0xe5,0x06,0x7d,0x36,0x25,0x8f,0x8c,0x11,0xef,0xc9,0xa9,0xda,0x57,0x59,0x03,0x62,
- 0x07,0xf4,0xf4,0x10,0x76,0xe9,0x81,0x47,0x95,0x9d,0xa4,0xbf,0xa1,0x17,0xf2,0x5f,
- 0xe7,0x21,0x2a,0xb3,0x87,0xa8,0x04,0x6d,0x09,0xa9,0xe7,0x91,0x16,0x4a,0x0d,0x29,
- 0xc8,0x8d,0x7b,0x4b,0xa9,0xe5,0x5d,0x38,0x66,0x45,0xe3,0x9b,0x77,0x28,0x73,0xe1,
- 0x8d,0x74,0x34,0xee,0x9f,0x49,0xc1,0x8a,0x46,0xf4,0xde,0x02,0xfe,0xcb,0x6b,0x47,
- 0x8b,0xf5,0x0b,0x69,0x7a,0xf2,0xc3,0xc9,0x91,0x6e,0xcd,0xa1,0xa4,0x16,0x82,0x54,
- 0x1b,0xad,0x20,0xe9,0xcf,0xcf,0x41,0xd7,0x5a,0xe8,0xc6,0xcf,0x69,0xdf,0x18,0x0f,
- 0xae,0x43,0x23,0x9b,0xd3,0x3f,0xcc,0x45,0x9d,0xc1,0x3f,0xc3,0xe7,0xcd,0xe2,0x41,
- 0xf6,0x20,0x1a,0x86,0xb9,0xdc,0x15,0x76,0xf8,0x63,0x59,0x3d,0xea,0x26,0xe6,0x4f,
- 0xb5,0x31,0xe3,0xcf,0xd4,0xad,0xcd,0x5e,0x84,0x54,0xc1,0x65,0xa1,0x29,0xfc,0x57,
- 0x9c,0x3c,0xfc,0x4b,0xe9,0x7f,0x0e,0x55,0x2e,0x57,0x5f,0x4b,0x2c,0x4c,0x3f,0x1e,
- 0x32,0x8e,0xab,0x88,0x02,0x5a,0x1c,0x20,0x96,0xf6,0xcc,0x4f,0x23,0xda,0x3a,0xee,
- 0x47,0x20,0x66,0xa0,0xf1,0x98,0x77,0x57,0x5b,0x28,0x7d,0x5c,0xcd,0xe7,0x7f,0x09,
- 0xfc,0x65,0xa7,0xe4,0x9c,0x31,0xea,0xd4,0x92,0x84,0x12,0xe7,0x67,0x8d,0xa8,0x5a,
- 0x6a,0x17,0xb3,0xf6,0x95,0x24,0x76,0xa7,0x13,0xc7,0x8d,0x68,0x47,0x78,0x97,0x62,
- 0x24,0xde,0x34,0xba,0xd4,0xf0,0x2e,0xcd,0xe0,0x03,0x46,0x04,0xa1,0x99,0xe2,0xe6,
- 0xbf,0x98,0x0c,0x7e,0xf3,0xe4,0x93,0x86,0xe0,0xa5,0xe5,0x54,0x6d,0xd9,0x49,0x59,
- 0x9a,0x4c,0x0b,0x8d,0xc4,0xd7,0x92,0x97,0xc8,0x38,0x1e,0xb8,0x40,0xc6,0x7c,0xaa,
- 0x1a,0x56,0x18,0x7f,0x68,0xe3,0xe5,0xf3,0x10,0x31,0x37,0x93,0x71,0x4e,0xd4,0x5f,
- 0x26,0xc5,0x3f,0x2f,0x95,0x66,0x6e,0xbe,0x04,0x1f,0x61,0xcb,0x96,0x41,0x45,0x26,
- 0x8b,0x95,0x0e,0x2e,0x95,0xf1,0x87,0x82,0xa9,0x71,0xf8,0x2f,0x5d,0xd2,0x5e,0xe8,
- 0xfc,0xf7,0x78,0xee,0x13,0x61,0x12,0xd3,0x3a,0xec,0x68,0x43,0x34,0xe6,0x52,0x14,
- 0x65,0x56,0x94,0x5d,0x5e,0xe1,0x0a,0x44,0x74,0xa8,0x31,0x28,0xe0,0xbf,0x0c,0x8a,
- 0x17,0x25,0x23,0x4d,0x60,0x76,0x88,0x32,0x9a,0x4d,0x9f,0x60,0xbb,0x58,0x5e,0x76,
- 0x23,0x0f,0xbb,0x54,0x1b,0xac,0xc5,0xb5,0x3c,0xff,0x25,0xe2,0x0f,0x83,0x92,0x35,
- 0x3b,0xe4,0x2a,0x04,0x46,0x6a,0xcf,0xfd,0x08,0xd2,0x8b,0x64,0xcb,0x53,0x66,0x4d,
- 0xab,0xb6,0xdd,0xa1,0x56,0x75,0x02,0x6b,0xf1,0xe0,0x54,0xfd,0x79,0xe8,0x72,0xba,
- 0x97,0x9e,0xa3,0x10,0x47,0x16,0x33,0x67,0xa7,0x3c,0xef,0xb6,0x6d,0x44,0x43,0xcd,
- 0xa1,0xa4,0xad,0xca,0x7b,0x9c,0x08,0x2c,0xdc,0x90,0x49,0x9a,0x43,0x7c,0xca,0xc5,
- 0x7f,0x9d,0x07,0x47,0x52,0xc3,0x9b,0x2f,0xbb,0xbc,0x7a,0x4b,0x6a,0xfa,0x90,0x18,
- 0xaf,0x5a,0x9c,0x17,0xc6,0xfb,0xdb,0x71,0xdb,0xda,0x41,0xa5,0xb4,0x77,0xc4,0xbe,
- 0x16,0x78,0x2a,0xf9,0x8a,0x89,0x0f,0x5c,0xb6,0x65,0xdb,0x54,0xfe,0x4b,0x93,0xc1,
- 0xc0,0x75,0x32,0x48,0xb5,0x43,0xa2,0xad,0x73,0xe8,0xe4,0x88,0x79,0x0a,0x80,0xab,
- 0xbf,0x1a,0x48,0x10,0xc7,0x8a,0xf3,0x92,0xea,0xf4,0x59,0x76,0x9d,0xf4,0xe3,0x2e,
- 0xfe,0x8b,0xd9,0x94,0xd6,0x26,0x19,0x7f,0x38,0x80,0x46,0x45,0xca,0x27,0x5b,0x4a,
- 0xe9,0x52,0x3d,0xbc,0x38,0x50,0xbb,0x53,0x1b,0x61,0xe3,0xf0,0x84,0x5a,0x99,0xd1,
- 0x86,0x12,0x88,0xc8,0x8c,0xda,0x6d,0x6e,0xfd,0xc3,0x5c,0xfc,0x21,0xe9,0x47,0x55,
- 0x89,0xf0,0x69,0x96,0x04,0xa3,0x65,0x5e,0xc1,0xca,0xd6,0x3d,0x20,0xbc,0xee,0x53,
- 0x90,0xb4,0x8c,0xf3,0xa2,0xd2,0xd0,0x91,0x74,0x78,0x14,0x2f,0x1d,0x2f,0xc4,0x5f,
- 0xc5,0xeb,0xca,0xae,0x7a,0xb7,0x48,0x35,0x75,0xd2,0xf7,0x33,0x08,0x20,0x9c,0x55,
- 0x85,0x1c,0xc4,0x7a,0xc4,0x05,0x07,0xa0,0x5a,0xd7,0xbe,0x84,0x1b,0x59,0x3b,0xaf,
- 0x60,0x22,0x41,0xe9,0x80,0x8c,0x18,0x1f,0x9e,0x12,0x7f,0x88,0xd8,0x4a,0xfd,0x2d,
- 0xbf,0x23,0x5b,0xb2,0x5e,0x39,0x45,0x49,0x5e,0x06,0x1a,0xd7,0x2c,0xaa,0x08,0xb6,
- 0xaa,0xbe,0x7c,0x36,0x42,0xb3,0xc5,0xd9,0x2d,0xeb,0x95,0xab,0xac,0x8f,0x60,0x57,
- 0x0b,0x76,0x2f,0x65,0x8d,0xb9,0xf3,0xbf,0x1c,0xaa,0x05,0xbf,0xaa,0x0b,0x64,0xbd,
- 0x08,0x45,0xa2,0x0a,0x95,0x08,0xe9,0xb9,0x6d,0x88,0xc6,0xc2,0xc4,0x05,0x76,0x48,
- 0xcd,0xdd,0x73,0x59,0x46,0xc2,0xbb,0xe3,0x0f,0xb9,0x1d,0x7f,0x78,0x2d,0xa7,0xbf,
- 0xc1,0x17,0x1b,0xf7,0x8f,0x29,0x6f,0x9b,0xa7,0xdb,0x9a,0x86,0xd8,0x98,0x52,0xb7,
- 0x6c,0x32,0x81,0x68,0x6b,0x18,0x31,0x9a,0xb8,0x87,0x8c,0xab,0xbc,0x29,0x1e,0x70,
- 0xe9,0x1f,0x3e,0x0d,0xdd,0x19,0xd1,0x09,0x14,0x5b,0x28,0xb0,0xd5,0x59,0x12,0x52,
- 0x00,0xec,0xa8,0xb7,0x4d,0xec,0x9f,0x7e,0x35,0xca,0xb6,0xc3,0x50,0xda,0x98,0xd4,
- 0xe2,0xec,0x7f,0xc2,0xa7,0x61,0xdc,0x89,0x5a,0x25,0x51,0x48,0xfd,0xe3,0xae,0xff,
- 0x45,0x9d,0xf9,0x80,0x1d,0x5b,0xe8,0x70,0x5b,0x0c,0x01,0xef,0xa4,0x41,0x95,0xd7,
- 0x96,0xe3,0xce,0x18,0xd9,0x6f,0x54,0x80,0xf8,0xf8,0xf3,0x50,0xdd,0x81,0xc6,0x19,
- 0xea,0x67,0xd0,0x5c,0xfa,0x87,0xb9,0x22,0x95,0xaf,0xea,0xdd,0x5f,0x0a,0xbf,0x8e,
- 0x63,0x7a,0xda,0xec,0x36,0xf1,0xfb,0xdc,0xce,0x4e,0x19,0x4f,0x82,0x1f,0xe1,0x76,
- 0x70,0x33,0xa4,0xc1,0xe0,0x38,0x2b,0x2d,0x23,0x4d,0x4a,0x62,0x06,0x4d,0xd8,0x96,
- 0xf0,0xdd,0x5a,0xd4,0xad,0x7f,0xe8,0xe4,0x6e,0x4b,0x55,0xc9,0xc3,0xd4,0xbd,0xe9,
- 0xc6,0x73,0xa5,0x3d,0x38,0x3a,0x6f,0xc1,0x6c,0xf2,0xde,0xe7,0x8a,0x6c,0x02,0xb1,
- 0xc7,0x1d,0xa2,0xf8,0x0d,0x5e,0x29,0xe6,0x0e,0x55,0x83,0xfd,0xa0,0x30,0xfe,0x10,
- 0x9f,0x73,0xd2,0xb8,0xa8,0x36,0xf6,0x05,0x22,0xc9,0x11,0x7e,0x51,0xe0,0x82,0xf2,
- 0x11,0xf8,0x90,0x89,0xc2,0x01,0xe7,0xe0,0x43,0xb3,0x91,0xaf,0xaa,0xc2,0x96,0x89,
- 0x16,0x6c,0x59,0xa8,0x0c,0xc0,0x79,0xb3,0x31,0x93,0xe7,0xbf,0x3c,0x39,0xfd,0x8d,
- 0xca,0x49,0x95,0x48,0x2e,0x04,0x59,0xb3,0x88,0x3d,0x19,0x2c,0x19,0x2d,0xa7,0xb4,
- 0x2f,0x01,0x0c,0x1b,0xc4,0xe8,0xf8,0x07,0x95,0x19,0xe6,0x2f,0xf9,0x82,0xf8,0xaa,
- 0x33,0x4a,0x23,0x3f,0x45,0x47,0x55,0x79,0xfd,0x43,0xb7,0xfe,0x86,0x53,0x7f,0x59,
- 0xed,0x84,0xe0,0xa0,0xa8,0xfa,0x24,0xb3,0xb4,0x96,0xfe,0x7d,0xfc,0xc8,0x99,0x9a,
- 0x21,0x75,0x7b,0x62,0xbe,0xb7,0x23,0x15,0xf4,0x6b,0x3f,0x45,0xf8,0xdc,0xd9,0x1a,
- 0xfc,0xac,0xe0,0xad,0x6e,0xcc,0x7f,0xd9,0x75,0x9c,0x83,0x9c,0x0a,0x31,0x7b,0x3a,
- 0xe1,0x7e,0x8a,0x3a,0x33,0x64,0x54,0xd5,0x4e,0xdc,0xfa,0x37,0xa9,0xb8,0x7c,0xa5,
- 0xb1,0xa5,0x53,0x15,0x27,0xff,0x71,0x17,0xfe,0x8a,0x08,0x92,0x0b,0xa7,0xa7,0x37,
- 0xdd,0x17,0x8a,0x50,0x91,0x2f,0xaa,0x42,0x95,0xf1,0x85,0x8d,0xa4,0xbe,0x9a,0xa4,
- 0x39,0x5a,0x68,0x4c,0x57,0x92,0x9a,0x0d,0xce,0x82,0xb4,0x4a,0x87,0x60,0x5e,0x4a,
- 0xd8,0x5c,0xe3,0xd2,0x3f,0x44,0xfc,0xb5,0x46,0xbe,0xea,0xa9,0x13,0x10,0x3d,0x2b,
- 0x8a,0x46,0x9d,0x68,0x0d,0xa6,0x4a,0x32,0xe5,0x8d,0xcc,0x8e,0x5e,0x0b,0xc1,0xe5,
- 0xaa,0xd8,0x0f,0xc2,0x74,0x54,0x35,0xd0,0x1a,0xc5,0x65,0x47,0x0b,0x89,0x52,0xf5,
- 0xfe,0xcc,0x52,0x97,0xfe,0x3c,0xf9,0xf3,0x5b,0xf6,0x97,0x93,0x37,0x28,0x82,0x0c,
- 0x05,0x23,0xb6,0x49,0x04,0x41,0xbd,0x44,0xd4,0xd8,0x05,0x74,0x45,0x44,0x75,0x36,
- 0x51,0xff,0x6b,0x0e,0x1d,0xf7,0x09,0x09,0x14,0xc1,0xb0,0x4c,0xd1,0x3f,0xdc,0x6c,
- 0x29,0x31,0xbc,0x84,0xcb,0x20,0xcd,0xaf,0xb7,0xa8,0x10,0x58,0x76,0x41,0x8a,0xa8,
- 0x31,0x12,0xb6,0x6a,0x34,0x4e,0x43,0xf4,0xb8,0xff,0x02,0x0e,0x93,0x18,0xd3,0x56,
- 0x2d,0xc6,0x3e,0xe4,0x77,0x40,0x5e,0x7f,0x83,0xf0,0x57,0x0f,0xaf,0xe1,0xea,0x0e,
- 0x56,0xe3,0x3f,0x34,0x2d,0x08,0x25,0x24,0x72,0xf8,0x1c,0x2f,0xcd,0x6a,0x1d,0xc1,
- 0x30,0x5e,0x22,0x92,0x8b,0xa5,0x09,0x76,0x51,0xd6,0x0f,0xa7,0x6d,0xcb,0xab,0xee,
- 0x61,0x7e,0x6f,0x67,0xd1,0x7c,0x43,0xdb,0x51,0x56,0x18,0x7f,0x48,0x99,0x5c,0xa2,
- 0xda,0x17,0xcf,0x17,0x46,0xa4,0x4f,0xe1,0xd6,0xd6,0x8f,0xfd,0x0c,0x14,0x62,0x8d,
- 0x63,0xc2,0xc0,0xe4,0xba,0x01,0xc5,0x6d,0xa4,0x07,0xab,0x08,0x46,0xec,0x82,0x2b,
- 0xff,0x8b,0xd5,0x6c,0x55,0x49,0x64,0xfe,0x30,0x37,0x32,0x42,0xff,0x50,0x46,0x1b,
- 0x06,0xab,0x1c,0xdd,0x4b,0xfc,0x1a,0xcb,0x76,0xe5,0xb7,0xd1,0x62,0xce,0xfc,0xac,
- 0x93,0x0e,0x36,0x77,0xf0,0xd1,0x3c,0xfe,0xba,0x6c,0xc5,0x46,0xc3,0xcf,0xe2,0x30,
- 0x5d,0x6e,0x8b,0xe2,0x73,0x14,0x5b,0xe8,0xe6,0x59,0xdc,0xa9,0x2f,0x1b,0x51,0x1e,
- 0xd8,0xf3,0x5f,0x0c,0x1c,0x9d,0xe8,0xa8,0xff,0x28,0x0e,0xdc,0x71,0x3d,0xda,0x5e,
- 0x52,0xa6,0x90,0x22,0x7d,0xdd,0x70,0xe0,0xa8,0xc7,0x15,0x7f,0x78,0xb5,0xaa,0x69,
- 0x68,0xd5,0xb7,0x85,0x4c,0x4a,0x13,0x17,0x63,0x41,0x55,0xf0,0x02,0xcb,0xca,0x2f,
- 0x9b,0xa3,0xf0,0x92,0x29,0xca,0x04,0x5c,0x80,0xc5,0xde,0xda,0x2f,0x68,0xaf,0x27,
- 0xfe,0xd0,0xf1,0xf3,0xfb,0x6a,0x64,0x68,0xe2,0x2d,0x43,0x38,0x82,0x85,0xf8,0xab,
- 0x37,0xc0,0xa7,0x8f,0xe8,0x97,0xe3,0xd1,0x6d,0xf6,0xba,0xfa,0x08,0x55,0x8b,0x33,
- 0xbc,0x27,0xf0,0x25,0x29,0xd5,0x95,0x30,0xff,0x00,0xa2,0xb3,0x56,0xb6,0x69,0x55,
- 0xe2,0x0c,0xdf,0x2f,0x0a,0xc9,0x19,0x38,0xb8,0x7b,0x94,0xbf,0x74,0xe7,0x7f,0x05,
- 0x07,0x35,0x3a,0x04,0xfb,0xa0,0x3f,0xc8,0x65,0xfd,0x65,0x7c,0x8e,0x96,0x4a,0xcc,
- 0x31,0xdf,0x94,0x3b,0x75,0x18,0x36,0x65,0xff,0x11,0x4a,0x3a,0xd8,0x5c,0x6b,0xa3,
- 0xba,0xcb,0x54,0xdb,0x95,0xb5,0xac,0x33,0x1d,0x5c,0x88,0x3d,0xf6,0xc7,0x3c,0xfe,
- 0xda,0x4f,0xe1,0x55,0x24,0x72,0xd8,0xa3,0x1b,0xdf,0xc4,0x21,0xf8,0x78,0x99,0xac,
- 0x56,0x99,0x00,0x51,0x4a,0x00,0x1d,0x8f,0x55,0x7a,0xa2,0x03,0xdd,0x2f,0xc6,0x1e,
- 0x63,0x6d,0x56,0x7a,0x5d,0x48,0x4d,0x94,0x9a,0x9d,0x2f,0x1b,0x91,0x8e,0x32,0x37,
- 0xfe,0x7a,0x7e,0xf0,0xde,0x51,0xed,0xaf,0x11,0x7f,0xfd,0x38,0x51,0xb1,0x5a,0xa6,
- 0x23,0xf1,0x79,0xc3,0xda,0x3c,0x16,0xe3,0x8f,0xa6,0x8c,0xb4,0xef,0xeb,0x3e,0xd2,
- 0xe5,0x31,0x88,0x8e,0xb9,0x19,0x1e,0xcb,0x54,0xa4,0xd5,0xb1,0xc4,0xff,0xaf,0x6f,
- 0xc3,0x9e,0x8a,0xa0,0x7a,0x4f,0x41,0xfc,0xe1,0x8e,0x88,0x15,0x20,0x9d,0x9c,0x51,
- 0x33,0xf3,0x75,0xcd,0x4e,0xf2,0x1a,0x0e,0xe8,0xf8,0xda,0xb4,0xa5,0x23,0xa9,0xd2,
- 0x67,0x93,0x66,0xbc,0x57,0x87,0x51,0x7f,0x44,0x51,0xe1,0x38,0x8f,0x6e,0xf2,0xeb,
- 0x4a,0x69,0xff,0x89,0x4c,0x66,0x18,0x0d,0x17,0xfe,0xfa,0x94,0x90,0x14,0xa9,0xcd,
- 0x7f,0x04,0xb7,0x4e,0xcb,0xe9,0x6f,0x6c,0x19,0xd5,0x26,0x53,0xd7,0xa6,0x35,0xf1,
- 0x92,0xac,0x32,0xca,0xff,0x47,0xd5,0x77,0x85,0xec,0xa1,0x80,0x03,0x81,0x37,0x28,
- 0xf5,0x52,0xff,0x6e,0x7f,0xed,0xaf,0xdc,0xfc,0xd7,0x45,0x1e,0xb5,0x36,0xef,0xa5,
- 0x5a,0x12,0x3c,0x8a,0x90,0x6a,0xe9,0xc7,0xb6,0x50,0x12,0x02,0xb1,0xe3,0x52,0x60,
- 0xd6,0xd0,0xdd,0x65,0x46,0xc9,0x08,0x8b,0xa5,0x00,0x0d,0x77,0xfe,0x97,0x47,0x6c,
- 0xeb,0xb3,0xe0,0x28,0x54,0xe2,0xb6,0xd5,0x7c,0x56,0x7f,0x06,0xb7,0x9b,0xa5,0x71,
- 0xfa,0x5d,0xc4,0x88,0x59,0x78,0xe9,0x19,0xd8,0x6d,0x55,0x8f,0xfa,0xa8,0x40,0xc3,
- 0x3c,0xcb,0xbf,0xce,0xd7,0x48,0x62,0x53,0x96,0x6a,0xba,0xf3,0xbf,0x5e,0x22,0xc4,
- 0xda,0x78,0x37,0x61,0xab,0x8a,0x38,0xe5,0x7f,0x79,0x37,0xb4,0xe3,0x66,0x37,0xb3,
- 0xac,0xcc,0xb3,0x81,0xcf,0x0b,0x2a,0x2d,0x89,0x2f,0xc2,0xf7,0x7b,0x2b,0xb2,0x26,
- 0x45,0xbc,0x6c,0x40,0xb0,0xd6,0x71,0x8f,0x30,0x42,0x59,0x55,0x2d,0xc8,0xff,0x52,
- 0x71,0x39,0xad,0xa7,0x43,0x27,0x6b,0x97,0x21,0xe6,0xa9,0x2d,0x24,0xe5,0xf5,0x24,
- 0x53,0xa4,0xa3,0xe8,0xfb,0xbf,0xd5,0x97,0x10,0x21,0x6e,0x24,0xf9,0xa9,0x67,0xcc,
- 0xea,0xc1,0x8e,0x56,0x11,0xe8,0x8b,0x40,0xcc,0xbb,0xc9,0xcd,0x7f,0x99,0x0b,0x7a,
- 0xc2,0x44,0x7b,0x5d,0x85,0x05,0x7b,0xfd,0x52,0x08,0xb1,0x46,0x30,0x62,0xe8,0xef,
- 0x34,0xf0,0x5b,0xd3,0xca,0xd7,0xf9,0x9b,0x3c,0xca,0x67,0xa5,0x03,0x24,0x3b,0x5f,
- 0xc7,0x49,0xac,0x1e,0x1d,0x9f,0xbb,0x32,0xe1,0xa1,0x02,0xfe,0xcb,0xfb,0xa2,0x5d,
- 0xff,0x6b,0x66,0xcc,0xc8,0x57,0x5b,0x06,0x85,0x1b,0x63,0xb0,0x18,0x6e,0x35,0x95,
- 0xad,0xb8,0xcb,0x35,0x41,0xa9,0xa9,0x0c,0xc2,0x25,0x0a,0xbf,0x35,0x11,0x14,0x23,
- 0xfe,0x9a,0x31,0xa5,0xfe,0x17,0xcf,0x69,0xcb,0xbb,0x0a,0x81,0x09,0xcf,0xf3,0x57,
- 0x54,0x6d,0x79,0xab,0x32,0xc7,0x38,0xa6,0x77,0xb5,0xcc,0xda,0xa6,0xcc,0x8d,0x1f,
- 0xdb,0x1b,0xfd,0x9a,0x7f,0x6b,0x39,0x4d,0xb4,0x46,0xd3,0xaf,0x97,0x17,0xe6,0x7f,
- 0xad,0x93,0x68,0x6b,0x59,0x0d,0xc1,0xae,0x77,0x6d,0x92,0x22,0x51,0x25,0x44,0x36,
- 0x70,0xa9,0x9c,0x4b,0x46,0xab,0xc0,0x5f,0xc2,0xd8,0x4e,0x81,0x88,0x71,0xbc,0xf9,
- 0x69,0x77,0xfe,0xd7,0x91,0xb8,0x93,0x23,0xa6,0xd6,0xb4,0xa8,0xa9,0xe6,0x77,0xa5,
- 0xfe,0xc6,0x36,0xb6,0xc7,0xdc,0x08,0x73,0x49,0x90,0x6a,0xa1,0xf1,0x73,0xf5,0xc7,
- 0xad,0xea,0x68,0x62,0x21,0x3c,0xce,0xce,0xb5,0xae,0xa1,0xe7,0x3c,0xc5,0x6a,0x5a,
- 0x5a,0xb6,0x25,0x0a,0xf5,0x0f,0x57,0x0b,0x6e,0x6b,0xbf,0x1e,0xee,0x97,0xf5,0xbf,
- 0x24,0x0a,0xf0,0x36,0x6f,0x85,0x8a,0xe5,0xa1,0xbb,0x37,0xcd,0xd8,0xf5,0x7c,0xe8,
- 0xc7,0x64,0xcc,0xda,0xb5,0x21,0x74,0xef,0x72,0xf5,0xee,0x4d,0x7e,0xd8,0x0a,0x54,
- 0x7f,0x79,0x53,0x61,0xfe,0x97,0xee,0x4f,0x50,0xea,0xdc,0x9a,0xd8,0xcd,0x61,0xae,
- 0xf4,0x52,0x60,0x2d,0x04,0x12,0xc9,0x9d,0xe9,0x81,0x50,0x1d,0x81,0x2c,0x83,0x8f,
- 0x22,0x34,0x0b,0x91,0x41,0xb0,0x6b,0x73,0x73,0xb9,0x81,0x1e,0x50,0x8c,0x87,0x5d,
- 0xf5,0x97,0x87,0x54,0x84,0x42,0x92,0xf6,0xba,0x62,0xd4,0x4a,0xd9,0xf9,0x71,0x29,
- 0x4e,0x78,0x89,0x53,0x71,0x2e,0x21,0x84,0x78,0x6c,0x7e,0xc3,0xf1,0xe9,0x64,0x4c,
- 0x84,0x66,0x0b,0x20,0xb6,0x6b,0x3c,0xd4,0xd4,0xbf,0x25,0x8f,0xbf,0xbc,0x54,0xff,
- 0x4b,0x20,0xa9,0x2a,0x81,0xad,0xfc,0x42,0x5b,0x03,0x62,0x92,0x11,0x13,0xd0,0x6c,
- 0x50,0x59,0xc8,0x04,0xda,0x1a,0x64,0x68,0x78,0x16,0x98,0x6b,0x5b,0x95,0x19,0xf0,
- 0x2a,0xdd,0x3c,0x45,0x7f,0xc3,0x15,0x64,0x48,0xb0,0x8b,0x75,0x48,0x46,0x2c,0xed,
- 0xdd,0x24,0x2f,0x71,0x6c,0x89,0x91,0x10,0x3d,0x6e,0x54,0x30,0x1f,0x42,0xe8,0x91,
- 0x21,0x34,0xbb,0xdf,0x53,0x92,0xd3,0xdf,0x50,0xbd,0xfd,0x54,0x3c,0xe8,0x5e,0x59,
- 0xdb,0x8b,0x87,0xcd,0xf9,0x39,0xfd,0xf9,0x88,0x2f,0xaf,0x7f,0xa8,0x4b,0xc3,0xe7,
- 0x65,0x5b,0xbd,0x55,0x88,0x9b,0x8a,0xbc,0x2c,0xc9,0xc2,0xbd,0x2d,0x53,0xf4,0x0f,
- 0x83,0x71,0x8a,0x4d,0xf5,0x1e,0x81,0xb9,0x54,0x4a,0xbb,0x5f,0x04,0x97,0xde,0xb2,
- 0xa3,0xb9,0xba,0x95,0xde,0x16,0x6d,0xbb,0x6f,0x8e,0x2c,0xbb,0x4c,0x04,0xe8,0x53,
- 0x04,0xed,0xb7,0x33,0xaf,0xe0,0x4f,0x8b,0x0b,0xf4,0x0f,0xcf,0xcf,0xc4,0x4e,0xd8,
- 0xda,0x59,0x45,0x2f,0xb6,0x4c,0xf2,0x12,0xfd,0xf3,0x34,0xfe,0xf6,0xf7,0xad,0xae,
- 0xf8,0xad,0x29,0xcf,0x5c,0x38,0x96,0x09,0xae,0xd3,0x76,0x54,0xce,0x65,0x6f,0xf0,
- 0x68,0xdc,0x4f,0x8e,0x07,0x3e,0x67,0x5d,0x78,0xbb,0xe2,0xe6,0xbf,0x92,0x2f,0x4a,
- 0x91,0x8d,0xf1,0x9c,0x5e,0x8a,0x64,0xc4,0xde,0x83,0xf7,0x0d,0x6c,0xf9,0x81,0x32,
- 0x14,0x17,0x69,0x7a,0xdb,0xba,0x87,0x52,0xe7,0x2a,0x28,0x22,0x51,0xdb,0x23,0x33,
- 0xcb,0x0a,0xf5,0x37,0x5a,0x62,0xe0,0xf7,0x92,0xa4,0xbc,0x27,0x56,0x16,0xb6,0xb3,
- 0x32,0x05,0x23,0xd6,0x67,0xa1,0x51,0x4c,0xb2,0x1b,0x56,0x3c,0xaa,0xfb,0xb1,0x7b,
- 0x71,0x61,0x8c,0xcd,0xf4,0xb7,0x29,0x86,0x81,0xd0,0x4c,0x47,0xc3,0x15,0x7f,0xf8,
- 0x62,0x73,0x2d,0x71,0x5b,0x68,0xb4,0xd4,0x12,0xfe,0x1a,0x17,0x6a,0x1b,0x5a,0x96,
- 0xd5,0xcf,0x20,0x43,0xcd,0xb2,0xbb,0xe0,0x89,0x65,0x95,0x09,0xff,0xc7,0x94,0xf6,
- 0x75,0x6f,0xed,0x8e,0xc7,0x47,0xca,0xee,0x84,0x27,0xe8,0x53,0x43,0x53,0xe2,0x0f,
- 0x55,0x95,0xf2,0xbf,0x32,0x56,0x0d,0xb9,0x97,0xa7,0x0d,0x51,0x75,0xb7,0x8e,0x05,
- 0x75,0x72,0x3c,0x8a,0x0f,0x24,0xee,0x37,0x93,0x56,0x7c,0x50,0xad,0x2f,0xaa,0xb1,
- 0x92,0x3f,0xae,0x19,0x6d,0x39,0xcc,0xfe,0x02,0x92,0xa4,0xa7,0x57,0xd5,0x57,0xc8,
- 0x7f,0xc5,0xef,0x59,0x17,0x9c,0x85,0xae,0x7e,0x98,0x16,0xea,0x7f,0x77,0x54,0xf8,
- 0x3e,0xab,0x6f,0x80,0x70,0x56,0x9d,0x51,0x34,0x0b,0x1e,0xf3,0xc5,0xe3,0xc5,0xad,
- 0x6c,0x26,0x7c,0x8f,0x9e,0x9c,0xc5,0x97,0x98,0xee,0x09,0x19,0xcc,0x15,0x7f,0xb8,
- 0x88,0x37,0x19,0xe1,0x7a,0x05,0x41,0x56,0x42,0xd2,0x5e,0x4c,0xa8,0x6d,0xd4,0x2b,
- 0xa0,0x6f,0x40,0xa3,0xe4,0x1e,0xed,0xbf,0xb2,0x24,0xc2,0x2e,0x74,0xd5,0x3e,0xcb,
- 0x10,0x91,0xc5,0xfd,0xeb,0xb5,0xbf,0x81,0x5f,0xb6,0x35,0x66,0xfd,0x6b,0xb4,0xc2,
- 0xf8,0x43,0x49,0x7b,0x51,0xf5,0x79,0xb7,0xc8,0xc6,0x10,0x7c,0x47,0x1a,0xab,0xc5,
- 0x71,0x5f,0x29,0x55,0x8f,0x7a,0x5f,0x02,0xb1,0xb4,0xbc,0x27,0x5d,0x50,0xff,0x2b,
- 0xd1,0x64,0x04,0x0e,0x29,0x35,0xea,0x24,0x8f,0xa6,0xc3,0xc4,0x6d,0x7d,0x22,0x83,
- 0xa0,0xde,0x31,0x4f,0x4b,0xfd,0x8d,0x87,0xe0,0x8d,0x54,0x8c,0x6f,0xa6,0x88,0xc4,
- 0xd3,0x78,0x0f,0x7e,0xb1,0x9a,0x66,0x52,0x75,0xf3,0x0f,0x17,0xe8,0x1f,0x66,0xab,
- 0xcd,0x15,0xeb,0x7d,0xb3,0xf9,0xf3,0xba,0x90,0xe5,0x7f,0x5d,0xf6,0xcf,0x37,0x83,
- 0x7f,0x4c,0x27,0x29,0x62,0xf3,0x3c,0x9b,0x69,0xb4,0xa7,0x17,0x87,0xd5,0xd6,0xe6,
- 0x99,0x91,0x8d,0xb0,0x33,0xad,0xae,0x66,0x41,0x73,0xc3,0xce,0xf0,0x60,0xcb,0xea,
- 0x02,0xfd,0xc3,0x75,0xd5,0xe4,0xe9,0x7d,0xd9,0x7a,0x1e,0xe6,0x6c,0x54,0x89,0xf6,
- 0x7a,0xc6,0x8e,0x03,0xb1,0xc4,0x73,0x5a,0xd1,0xe3,0x78,0x14,0xc2,0x9b,0x71,0x28,
- 0x67,0xc0,0x33,0x24,0x5a,0xf8,0xcd,0x04,0xee,0x8c,0x86,0x18,0x94,0x3f,0x73,0xe3,
- 0xaf,0x9a,0x25,0xa4,0x12,0xe6,0xdd,0x6f,0x56,0xe9,0x2a,0x1d,0xf8,0x0b,0x3f,0xf3,
- 0xf6,0x60,0x3f,0x4b,0xb6,0x1a,0xa3,0xda,0x2c,0xc6,0x38,0xef,0x9d,0xff,0x60,0xa8,
- 0x86,0x4d,0x87,0xb4,0x85,0x3e,0xa4,0x97,0x19,0xaa,0x86,0xf7,0x74,0x2c,0x64,0xf7,
- 0x14,0xe0,0xaf,0x5d,0x01,0xa9,0x21,0xf9,0xc2,0x97,0xa4,0xbe,0x16,0x1d,0x83,0x1f,
- 0x50,0x3e,0x84,0x4e,0xab,0xeb,0xbd,0xc0,0xd3,0x49,0xf4,0xbe,0x66,0x96,0x5a,0xfe,
- 0x9f,0x69,0xb5,0xec,0x59,0x88,0x66,0xd1,0xb1,0x0f,0xb3,0xe7,0x60,0x96,0xe5,0xdf,
- 0x77,0xcb,0xd7,0x5d,0xf8,0xcb,0x8a,0xbd,0x16,0xc8,0x24,0xf7,0xe9,0x97,0x5b,0x1a,
- 0xcc,0x55,0x19,0x11,0x15,0x13,0xa3,0xba,0xae,0x1f,0x71,0x5b,0x64,0xe3,0xa7,0xf0,
- 0xc1,0xb2,0x58,0x73,0xa0,0x5d,0x79,0x9f,0xef,0x80,0xd8,0x20,0x1a,0x62,0x4c,0x53,
- 0xb5,0x7b,0x71,0x6f,0x72,0xe3,0x2f,0x8f,0x9f,0x34,0xb8,0x2e,0xc3,0xe2,0x21,0xff,
- 0xe8,0x74,0x1b,0x91,0xb5,0x7a,0xea,0xe1,0xb4,0xba,0xd8,0xf2,0x0f,0x26,0xdf,0xa3,
- 0xe8,0xb5,0x81,0x95,0x6b,0x70,0x19,0x3c,0xb5,0x79,0xc1,0x7d,0xfe,0xb3,0xc9,0x7a,
- 0xf3,0x77,0xb0,0x20,0xbb,0xd2,0x48,0xe4,0xf9,0x2f,0xcf,0x11,0xab,0x26,0x2e,0xe0,
- 0xd2,0xe1,0xfe,0x1a,0x23,0x90,0x29,0x7b,0xd7,0x10,0xfc,0xd7,0xbe,0xe0,0x4f,0x11,
- 0x40,0xc5,0xac,0x59,0x3b,0x12,0xc3,0xf1,0x8d,0x33,0x83,0x5d,0xa1,0xa7,0x95,0xbf,
- 0x87,0x37,0xf5,0x60,0x44,0xdd,0xc7,0x42,0xac,0x93,0xe3,0x46,0xb6,0xd3,0xa5,0x7f,
- 0xe8,0x3d,0x92,0xa8,0x21,0xf7,0x9b,0x6a,0xeb,0xdc,0x0f,0xc5,0x99,0xe6,0x61,0x53,
- 0x20,0xb2,0xa3,0xb8,0x85,0xff,0x10,0x6a,0x7a,0xd5,0x8e,0xb2,0x01,0xca,0x5a,0xe5,
- 0xc5,0x3b,0x13,0xe1,0x74,0x42,0x35,0x1e,0x2b,0xd6,0xd9,0x5a,0xf8,0x21,0x0f,0x0e,
- 0xa8,0xbc,0x28,0x5d,0x98,0xff,0xb5,0x46,0xcc,0x53,0x71,0xbc,0x2f,0xb4,0x35,0xd6,
- 0x0e,0xae,0x88,0xb0,0x01,0x96,0x34,0x43,0x96,0xea,0xfd,0xaf,0xfd,0x8c,0x1b,0x69,
- 0x56,0x0c,0xcc,0xc4,0x6d,0x2b,0xdd,0x32,0x4f,0x9f,0xdf,0xb2,0xa9,0xad,0xc3,0x48,
- 0x75,0x40,0x69,0x22,0x8f,0xbf,0x0e,0x47,0x62,0x26,0xba,0xf1,0xfb,0xf8,0x65,0x68,
- 0x6c,0x0f,0x93,0xe8,0xc7,0x11,0x33,0x46,0x15,0xdc,0xb2,0x89,0xb7,0xcc,0x1a,0x2b,
- 0xd4,0xbe,0x34,0x4b,0xd4,0x18,0xe2,0x7e,0x05,0x1d,0xe5,0xd6,0x2e,0x28,0x01,0xe5,
- 0x1b,0x37,0xbd,0x15,0xef,0x1a,0x44,0xe7,0x2d,0x9d,0xc7,0x5f,0x57,0xee,0x6b,0xa2,
- 0x92,0x94,0x57,0x44,0xa1,0xd8,0x52,0xa1,0xad,0x11,0x12,0xf9,0x5f,0xfb,0x55,0x0a,
- 0x4d,0x2c,0xed,0x23,0x4a,0x4b,0xff,0x2e,0x2b,0xb5,0x14,0xaa,0x28,0x85,0xf7,0x58,
- 0xca,0xa1,0xf4,0xe4,0x7c,0xbc,0x27,0xab,0xac,0xb1,0xf1,0x97,0xc7,0xd6,0x9f,0x3f,
- 0xa4,0xdc,0xaf,0xbe,0xc4,0x63,0xa3,0x74,0xbe,0xe1,0xfd,0x14,0x44,0xfe,0x57,0x18,
- 0x70,0x50,0xda,0x71,0x93,0x72,0x14,0x11,0xa7,0xbb,0x6a,0x34,0xdb,0x73,0xd0,0x85,
- 0xbf,0xb0,0x57,0x29,0xff,0xab,0x86,0xf8,0xaf,0x01,0x41,0x84,0xe1,0x46,0x66,0xa8,
- 0x1d,0x2c,0x08,0x3d,0x89,0xa0,0xaa,0xf6,0x50,0xfd,0x65,0x1e,0xec,0x5b,0xd1,0xd3,
- 0x9c,0x27,0xcb,0xbc,0xb6,0x71,0x5d,0xfe,0x57,0x91,0x2b,0x30,0x3b,0x13,0x12,0xf9,
- 0x5f,0x9c,0x42,0x13,0xc9,0x9f,0x3f,0x89,0x5b,0x52,0xe8,0x98,0xe4,0x19,0xbd,0x6b,
- 0xf3,0x31,0xdb,0xda,0xf5,0xf9,0x5f,0x91,0x5c,0xb6,0x60,0x33,0x15,0xf9,0xaa,0xf1,
- 0xa8,0xa2,0x8c,0xa6,0x11,0x04,0xd2,0x4b,0xe1,0x47,0xd8,0x7c,0x3b,0xfe,0xd0,0x53,
- 0x53,0x10,0x88,0x98,0xcf,0xff,0x9a,0x1a,0x23,0xbd,0x34,0x97,0xff,0xb5,0x4f,0x7d,
- 0x0b,0xf1,0x97,0x3f,0x03,0x23,0xde,0x8b,0xa3,0x3f,0xa0,0xb3,0x26,0x51,0x97,0xc1,
- 0x12,0x04,0xb1,0x5d,0xb2,0xc1,0xba,0xa1,0xfe,0xbc,0x2d,0x72,0x78,0x25,0xd5,0xd4,
- 0x1a,0x58,0xa7,0x3d,0x8c,0xde,0xe0,0xcf,0xd1,0x6d,0xa6,0xee,0x05,0x3b,0xed,0xeb,
- 0xa5,0x29,0x64,0xd9,0x8d,0xf2,0xbf,0x84,0xd6,0x87,0x58,0x60,0x29,0xed,0xcb,0x4e,
- 0xb2,0xb0,0xc3,0xd8,0xcc,0x86,0xde,0x92,0xcc,0xd2,0x7d,0xde,0x09,0x2f,0x89,0x87,
- 0x78,0x72,0x9f,0xfa,0x9f,0x85,0xfa,0x1b,0x9d,0x4e,0x59,0x07,0x59,0xe4,0x0b,0xd7,
- 0x3b,0xcd,0xae,0x86,0x66,0x39,0xa5,0xd3,0x7a,0xdd,0xf1,0x87,0x39,0xc3,0x55,0x7f,
- 0xf9,0x49,0x1e,0xa6,0x20,0x79,0xa7,0x7e,0x0a,0x14,0xe4,0x2f,0x23,0x94,0xa6,0xa8,
- 0x33,0xa7,0xb4,0x8a,0xc7,0xa5,0xcc,0x50,0x45,0x9f,0x1a,0x73,0xf3,0x5f,0xb6,0xd4,
- 0x1e,0xf1,0x5f,0x42,0x7f,0xfe,0x28,0xaf,0x48,0x6b,0x2d,0xec,0x35,0xfe,0x52,0xe2,
- 0x36,0x23,0x84,0x2d,0x9e,0x83,0x89,0xea,0x73,0x60,0xc7,0xc5,0x0d,0xdf,0xe2,0x2a,
- 0xd6,0xec,0xe0,0xaf,0x16,0xbf,0xf7,0x62,0x87,0xd4,0x9f,0x1f,0xbc,0x08,0xb1,0x6c,
- 0x09,0xe1,0xaf,0x0b,0xb0,0x50,0x45,0x3f,0xbc,0x2f,0x35,0x8a,0x4e,0xf2,0xd3,0xa4,
- 0x48,0xff,0xad,0x4c,0x43,0x76,0x5a,0x64,0xc1,0xc9,0xe2,0x6f,0x41,0xe3,0x70,0x20,
- 0xf2,0xf9,0xcd,0x7f,0x7d,0x11,0x1a,0xfb,0xff,0x25,0xf2,0x79,0x57,0xfe,0xd7,0x84,
- 0x4d,0x72,0xb5,0x5e,0x83,0x06,0xa9,0x3f,0x2f,0x92,0x8f,0x88,0x20,0xfe,0x54,0xbf,
- 0x43,0x0f,0x64,0xca,0x29,0x82,0x34,0x66,0xfd,0x0b,0xde,0x33,0xed,0x1a,0xfb,0x2e,
- 0x75,0xef,0xe4,0x4d,0xf8,0xa9,0xde,0x5b,0x33,0x37,0xc8,0xff,0x0a,0x0b,0x98,0x2c,
- 0xd2,0x06,0x2f,0x3a,0x72,0xb2,0xf8,0x92,0x6c,0x2d,0x95,0x99,0x77,0x8f,0xe0,0x30,
- 0x11,0x23,0xc6,0x1e,0xb1,0xdc,0x01,0x06,0xd7,0xe7,0x7f,0xd1,0x46,0xff,0x0f,0x56,
- 0x07,0x9d,0xfb,0xbd,0x0b,0x39,0x46,0x6c,0x8e,0x55,0x10,0x76,0x68,0x1b,0x9f,0x75,
- 0x8c,0xe6,0xeb,0xf3,0xbf,0x6c,0xc1,0x7f,0xea,0xc3,0x17,0x29,0xbd,0xae,0x85,0x3d,
- 0x00,0x7b,0x78,0x75,0xdc,0xb7,0x3e,0x81,0xbd,0xda,0x56,0x9d,0x3d,0xb1,0x3e,0x88,
- 0x46,0x42,0x88,0xd5,0xbf,0xed,0x24,0x82,0x5d,0x97,0xff,0x15,0xf4,0xe7,0x06,0x17,
- 0x9e,0x61,0x15,0x83,0xda,0xfa,0xa2,0xb3,0xb0,0x81,0xcd,0xb1,0x66,0xd6,0xb3,0x57,
- 0xd0,0xa5,0x71,0x86,0xdb,0xeb,0x88,0x3c,0x4b,0x6a,0xac,0x80,0xff,0x12,0x29,0x5d,
- 0x21,0x77,0xd9,0xaf,0x06,0x1e,0xd8,0x9b,0xf8,0xef,0xc6,0xb3,0x10,0x3b,0x4a,0x15,
- 0xc1,0x42,0x57,0x79,0x3e,0x35,0xcc,0x31,0x6a,0x88,0x2c,0xcb,0xf3,0x5f,0xde,0xeb,
- 0xb5,0x0d,0x47,0xe0,0x3b,0x8c,0xc6,0xcb,0xb8,0x04,0x8b,0xec,0x4b,0xba,0x4b,0x7f,
- 0xfe,0x3f,0xab,0xbf,0xac,0xbb,0x42,0xa7,0xe4,0x39,0xbf,0x1a,0x46,0xc7,0x3e,0xd9,
- 0x2f,0x44,0xf3,0x24,0x22,0x53,0xf3,0xc2,0x05,0x05,0x46,0x9e,0xff,0xd2,0x9d,0x90,
- 0x30,0xaf,0x4b,0x64,0xa3,0xc1,0x26,0x32,0xbc,0x85,0x61,0x87,0xd2,0xe8,0x74,0xb5,
- 0x64,0x6f,0xa0,0x3f,0x4f,0x62,0xe3,0x76,0xfd,0xe5,0x5a,0x53,0x1d,0x64,0x14,0x44,
- 0x57,0x61,0xfa,0x52,0x5e,0xf9,0x27,0x96,0xbb,0x14,0x11,0x73,0xcf,0xb9,0x41,0xfe,
- 0x17,0x1a,0x7e,0x51,0x7f,0x19,0x9e,0x6f,0xf8,0x7b,0x44,0x5b,0x89,0xd7,0x77,0xfd,
- 0x38,0xb4,0xf3,0x8b,0xbe,0xb2,0x84,0xbc,0x74,0xc3,0xda,0xc1,0x39,0xfe,0xcb,0xee,
- 0xb1,0x76,0xd2,0x60,0xf7,0xc6,0x74,0x59,0x88,0x39,0x1e,0x23,0xd8,0x95,0xe5,0x63,
- 0xc6,0xed,0x33,0x6b,0x12,0x1e,0x99,0xad,0x53,0x34,0x35,0x7f,0x87,0xfa,0x39,0xcf,
- 0x7f,0x79,0xd1,0x8d,0xa7,0xfc,0x2f,0x97,0xc8,0xfc,0xb8,0xd1,0x60,0x4e,0x4f,0x29,
- 0xfd,0xea,0x1b,0xd8,0x52,0x22,0xe8,0xaa,0x69,0x6e,0x57,0xdf,0x1d,0xf3,0x96,0xe7,
- 0xbf,0xae,0x4c,0xb9,0x64,0xe7,0x91,0xe9,0x68,0xfc,0xca,0x41,0xd0,0xef,0xcb,0xb0,
- 0xba,0x1b,0x3c,0xc7,0x85,0xbf,0x9c,0xfa,0x5f,0x3d,0x9e,0xb0,0x87,0x0c,0x2f,0xee,
- 0x17,0xbc,0x84,0xb3,0x61,0xef,0x80,0x40,0x64,0xcd,0x59,0x47,0xff,0xf0,0x7a,0xb1,
- 0xfa,0x29,0xf9,0x5f,0x2b,0xa8,0xa4,0x32,0xa9,0x6d,0x2c,0x75,0xd4,0x36,0x7c,0xfa,
- 0x67,0xfb,0xbd,0x6e,0xd9,0x79,0xb3,0xf8,0x46,0xfd,0xfc,0xda,0xf5,0xfa,0x1b,0x2e,
- 0x43,0x00,0xf0,0xc4,0x10,0x3f,0x64,0x12,0xa2,0x87,0x21,0xf3,0x50,0x45,0xee,0x9e,
- 0x52,0xf7,0xcd,0x77,0x3b,0xfc,0xd7,0x8c,0x1b,0xe9,0xc6,0x1f,0x4a,0xc5,0x5a,0x7d,
- 0x3b,0x94,0x77,0x61,0xbc,0x8d,0x92,0xbc,0xca,0x87,0x3c,0xef,0xc7,0xef,0xbf,0xae,
- 0x7f,0x6a,0xdc,0xfc,0x17,0xdc,0x50,0x7f,0x1e,0xec,0x11,0x3c,0x46,0xf8,0x2b,0x55,
- 0xfe,0x9e,0x4b,0xff,0x70,0x8a,0x71,0x5d,0xfe,0xd7,0x74,0x47,0x7f,0x5e,0xbc,0x24,
- 0x51,0x1d,0x81,0xd8,0xbd,0xe8,0x0a,0xd5,0xe9,0x42,0xff,0x90,0xaa,0x42,0xf8,0x6f,
- 0x34,0x4f,0x1d,0xfe,0xcb,0x1b,0x22,0x09,0x4a,0x3b,0xa5,0x8b,0xd5,0xf0,0x95,0x32,
- 0xc8,0x70,0x21,0xef,0x20,0x44,0x46,0x8c,0x98,0x6a,0x47,0x24,0x8a,0xfc,0x2f,0x6f,
- 0x81,0x58,0xfd,0x8d,0xf8,0x2f,0x26,0xb3,0x95,0x73,0xf5,0xbf,0x8a,0x65,0x65,0x8d,
- 0x1a,0x32,0x36,0xe7,0x96,0x38,0x6f,0x2e,0x8f,0xd5,0xfe,0xd4,0x71,0x67,0xff,0x72,
- 0xf2,0xbf,0x64,0xfd,0x65,0xbb,0xfe,0x17,0xaf,0xb0,0xd4,0x31,0xf6,0x15,0xd8,0xc2,
- 0xe7,0x59,0x2d,0xf5,0xec,0xac,0xe7,0x20,0x7c,0xe3,0x5d,0xcf,0x0d,0x16,0x6a,0x87,
- 0xff,0x0a,0x39,0xfc,0xd7,0xb7,0x99,0x8c,0x2d,0x14,0xf5,0xbf,0xae,0x65,0x0d,0x32,
- 0xbe,0x08,0xbf,0xe4,0x4d,0xc3,0x68,0xfc,0x08,0xfe,0x5f,0x34,0xa6,0xad,0x2f,0xcc,
- 0xff,0x5a,0x9c,0xbd,0x11,0xff,0xa5,0x88,0xc0,0xb6,0x9c,0x68,0x43,0xaf,0x48,0x50,
- 0x9a,0x90,0x82,0x5d,0xc2,0xa5,0x19,0x70,0x74,0x21,0xdc,0x81,0x88,0xd3,0x5d,0xf1,
- 0x87,0xd7,0x52,0x8b,0x88,0xff,0x8a,0xf9,0xaf,0xf1,0xc0,0x25,0x5b,0x7f,0xbe,0xfb,
- 0xdd,0xc0,0x98,0xf6,0xb6,0xf9,0x1c,0x6f,0xba,0x50,0x42,0xb2,0x1b,0xa7,0xf9,0x77,
- 0x2f,0xf9,0xc7,0x2a,0x6d,0x67,0xd2,0x95,0xa8,0xe2,0x8a,0x3f,0x7c,0x29,0x4d,0xbb,
- 0x55,0x33,0x76,0x94,0x5e,0x92,0xb5,0xf3,0xbf,0xe6,0x89,0x6c,0x2f,0xeb,0x19,0x5e,
- 0x6d,0x95,0xac,0x67,0x5f,0x36,0x37,0x78,0xbe,0x31,0x54,0xb2,0x2e,0x48,0xa5,0xd3,
- 0xee,0x2c,0xd8,0xc8,0xdc,0xfc,0x97,0x4e,0xaa,0x26,0x86,0x4b,0xf0,0xbf,0x1b,0x2a,
- 0xde,0xc0,0xb1,0x68,0x54,0x45,0x41,0xe7,0x75,0xdb,0x26,0xf5,0x67,0x70,0x43,0xec,
- 0x14,0x1f,0xf7,0x56,0xdb,0x81,0x88,0xf2,0x66,0x77,0xfe,0x97,0x8c,0xdb,0xf1,0xeb,
- 0x79,0x9f,0x64,0x07,0xb6,0x34,0xb0,0x12,0xd8,0xcd,0xc3,0x97,0x10,0x91,0x7d,0x11,
- 0x92,0x7a,0xee,0x95,0x08,0xb9,0xc6,0x3d,0x93,0xd7,0x3f,0xa4,0xd2,0x69,0x75,0x94,
- 0xff,0x15,0x46,0x5f,0xab,0xc9,0xc9,0xed,0x8a,0x5a,0xab,0x1a,0x5f,0xae,0x1d,0x78,
- 0xee,0x9e,0x26,0x4b,0xed,0x59,0xfa,0x71,0xf0,0x65,0xab,0xc9,0x2a,0x96,0x11,0x2f,
- 0x35,0x4e,0x3f,0x93,0xc1,0x5c,0xf1,0x87,0x85,0x69,0x5f,0xb6,0x91,0x95,0x3a,0x6f,
- 0xac,0x71,0xa0,0x56,0x8e,0xd7,0x23,0x52,0xeb,0xde,0x1e,0x4a,0x57,0x74,0xd6,0x14,
- 0xfd,0x0d,0x77,0x9c,0xd5,0xef,0xc1,0x29,0xfb,0x85,0x2d,0x61,0x81,0xc8,0xd4,0x05,
- 0xb6,0x92,0xb3,0x14,0x25,0xa0,0x9b,0x6f,0xb5,0x66,0x8f,0x2a,0x53,0xf4,0x37,0x56,
- 0x4c,0xf1,0xfd,0x82,0x79,0xfd,0x0d,0xd5,0xc9,0xf6,0x52,0xa4,0x10,0x47,0xcc,0xed,
- 0x1f,0x2a,0xf7,0x3a,0xf8,0x6b,0xad,0x90,0xda,0xbb,0x5e,0x7f,0x5e,0xcb,0x14,0xad,
- 0x75,0xa4,0x39,0xe4,0x73,0x92,0xf9,0x7b,0xca,0x64,0x20,0x62,0x67,0x26,0xa7,0xbf,
- 0x01,0x7e,0x92,0xe4,0x25,0x17,0xe2,0x55,0xb7,0xba,0x57,0xba,0x0f,0x1f,0xe8,0x37,
- 0xbb,0x2b,0x29,0x40,0x2e,0x41,0xd9,0x79,0xdc,0xf2,0xd8,0xf1,0x87,0x52,0xaf,0x72,
- 0x81,0x1c,0xaf,0x66,0x1b,0x7f,0xa9,0xb6,0xc8,0xc6,0xff,0x23,0x44,0xc2,0xed,0x00,
- 0xa7,0x0f,0xd5,0xe8,0x40,0x20,0xb3,0x60,0xad,0x70,0xf9,0x4a,0xbb,0xf0,0xaf,0x4f,
- 0xfc,0xe5,0xed,0xb6,0x34,0xbd,0xe7,0xfe,0x5e,0x51,0x14,0xe0,0x3b,0x32,0xb1,0xc8,
- 0xad,0xbf,0x51,0xdf,0x24,0x8b,0x2c,0x5f,0x73,0xf4,0x37,0x9c,0xfa,0x5f,0x6d,0xd7,
- 0xcc,0xc5,0x14,0x90,0x76,0x16,0x72,0xd2,0xf4,0xd7,0xcc,0xa6,0x01,0xb7,0x3f,0xef,
- 0xe2,0xbf,0xae,0x7a,0x17,0x98,0xe2,0x18,0xea,0xac,0x37,0x0a,0xa7,0xc7,0x96,0x52,
- 0x46,0x58,0x37,0xf8,0x2d,0x44,0x7f,0x38,0x89,0xa0,0x84,0xca,0x3a,0x1c,0x21,0xd8,
- 0x35,0xb8,0x94,0x18,0xcc,0x68,0xf6,0x56,0x2a,0x04,0x36,0x01,0x77,0x99,0x7e,0x2b,
- 0xaf,0x3f,0xff,0xb1,0x88,0xbb,0x50,0x7b,0xd8,0xfd,0xd0,0x41,0x21,0xd6,0x88,0xad,
- 0xf4,0x7a,0x08,0x76,0x20,0xbc,0x9d,0x4b,0xbd,0x6a,0xa8,0x8e,0xec,0xa1,0xb6,0x43,
- 0x30,0x98,0xbb,0x64,0xb0,0xe2,0x21,0x1e,0x3c,0x87,0x18,0x2d,0xa7,0x3f,0x4f,0xc9,
- 0x74,0x86,0x19,0xa2,0xb0,0xc3,0x6d,0xe2,0x9d,0x6f,0x16,0xf5,0xa4,0x9a,0x71,0xdb,
- 0x52,0xa9,0xe7,0x41,0x4c,0x87,0x27,0x65,0x8c,0xbd,0x1f,0x12,0x76,0xce,0xec,0x8c,
- 0xfd,0xac,0x8a,0xf2,0x97,0x5d,0xf8,0x2b,0xc3,0xd1,0xc9,0xe1,0xa4,0x2f,0xc1,0xe7,
- 0x67,0x85,0x5a,0x4b,0x8f,0x3e,0xbf,0x5d,0x6d,0x67,0x06,0x09,0x69,0x82,0xcf,0x81,
- 0x5d,0x5a,0xcf,0xb3,0xfe,0x99,0xf9,0xdc,0x40,0xfd,0x27,0x99,0x50,0x07,0x73,0xe9,
- 0x1f,0x5e,0xa6,0x63,0x9f,0x84,0xf2,0x1f,0xf0,0x96,0xd5,0x10,0x95,0x07,0x4a,0xd0,
- 0x60,0xf8,0x7f,0x5a,0x4e,0x1e,0x75,0x63,0x56,0x04,0xfe,0x09,0x05,0xf8,0x9e,0x72,
- 0xa2,0x2d,0xa2,0x32,0x7f,0xe7,0x32,0xaf,0x8b,0xfb,0x3b,0x92,0xbf,0xca,0xe1,0x2f,
- 0x15,0x21,0x70,0x15,0x4e,0xa2,0xbb,0x5b,0x2f,0xc2,0x22,0xc9,0x7f,0x5d,0xe5,0x0b,
- 0xb3,0xb5,0x6b,0x10,0x7d,0x5d,0x53,0x9b,0x86,0x4a,0x72,0xa3,0x13,0x51,0x26,0x0d,
- 0x1c,0x2f,0x4b,0x68,0x24,0x7e,0xca,0x6f,0x47,0x9f,0x1f,0xec,0xfa,0x5f,0xad,0xfa,
- 0x3e,0xf5,0xb2,0x1a,0x6d,0x29,0x49,0x2b,0x15,0x14,0x64,0x98,0x90,0x09,0x9b,0x66,
- 0x70,0x89,0x7f,0xfb,0x93,0xa1,0x76,0x4d,0x26,0x63,0x8a,0xb5,0xb7,0x7f,0xcb,0x01,
- 0x65,0x1f,0x3b,0x6e,0x90,0x46,0xc7,0x5f,0x8d,0xe8,0x97,0xa1,0xab,0xd5,0xbf,0x5d,
- 0x79,0x3d,0x8f,0xbf,0x7a,0xe2,0xc1,0xf5,0xb8,0x37,0x19,0x9e,0x4e,0x4f,0x30,0xa5,
- 0x39,0x40,0xac,0x24,0xc1,0x2a,0x49,0x96,0x44,0x1e,0x9d,0x09,0x4c,0xfd,0x63,0xd6,
- 0x64,0xe4,0xfb,0xc7,0x08,0xbe,0xa0,0x7e,0x2f,0xe1,0xc2,0x5f,0x54,0xb2,0x61,0x1e,
- 0x30,0x74,0x50,0x70,0x6d,0x13,0x40,0xec,0x48,0xca,0x00,0xb5,0xd1,0xe7,0x59,0x82,
- 0xc3,0x04,0x8e,0x6c,0xd4,0xf0,0x2d,0x3a,0x0b,0xc0,0x46,0x27,0xc7,0x39,0xd5,0x61,
- 0xac,0x53,0xbd,0x0e,0xfe,0xea,0x21,0xfe,0x4b,0xd0,0x31,0xac,0xb4,0xa3,0x9d,0xdf,
- 0x1b,0x92,0xb2,0x87,0xa9,0x39,0x46,0x71,0x88,0x7d,0x56,0xfd,0x7e,0x5b,0xf5,0xea,
- 0x62,0x47,0xa0,0x4f,0xbb,0x87,0xfd,0xc8,0x7a,0xd4,0xd1,0xe8,0xd8,0x9f,0xda,0x59,
- 0xa5,0xb6,0xe0,0x17,0x93,0xf8,0x4b,0xf5,0xc3,0x79,0x33,0xd2,0x52,0x72,0xb3,0x4f,
- 0xe1,0xdc,0x8c,0xac,0x91,0xfa,0x1b,0xa6,0x41,0x69,0x5f,0x3e,0xf3,0xd7,0xd0,0xd8,
- 0x5e,0x1a,0x51,0x36,0xc3,0xc5,0x74,0x63,0x36,0x70,0x93,0xb6,0x99,0x1f,0x37,0x22,
- 0xd9,0xe9,0x54,0x9a,0xf9,0xb5,0x74,0x66,0x99,0x5f,0x2f,0x77,0xe1,0xaf,0xa3,0xf0,
- 0x92,0x59,0xfb,0xab,0x72,0xa2,0x8c,0x63,0x5e,0x67,0xee,0xe0,0x58,0xb0,0x51,0xf8,
- 0x84,0x64,0x37,0x32,0x0a,0x62,0xea,0x9b,0x70,0xea,0x59,0xca,0xc3,0x69,0x67,0xad,
- 0xf3,0x1e,0xf1,0x2c,0xf6,0xd6,0x0e,0x16,0xe6,0x7f,0x51,0xe5,0xeb,0xf2,0x1a,0x2a,
- 0x7b,0x6a,0x88,0x7a,0x01,0xc3,0xf0,0x13,0xf0,0x67,0x64,0x22,0x18,0xcf,0xa5,0x7d,
- 0xa1,0x97,0x32,0x42,0x19,0xf1,0xf6,0x02,0x4b,0x07,0xd1,0xdc,0xc1,0x5f,0x03,0xb8,
- 0x7f,0x1d,0x80,0x34,0x84,0x22,0x6c,0x16,0xba,0xd2,0xb5,0x20,0xf6,0xf7,0x3a,0xa8,
- 0x34,0x7d,0x71,0x96,0x0b,0x32,0xb4,0x77,0x99,0xd6,0xe0,0x59,0xfe,0xa8,0x03,0xcd,
- 0xba,0x61,0x1e,0xa8,0x71,0x27,0xfe,0x90,0x23,0xfe,0xca,0xd8,0xfd,0xec,0x69,0x47,
- 0xb4,0x45,0x49,0x5e,0xfa,0x1d,0xd8,0x99,0x2d,0x33,0x83,0x37,0x53,0xd4,0xfd,0xae,
- 0x16,0x12,0xfc,0x17,0x68,0xeb,0x1e,0xec,0xde,0x9f,0x38,0xfd,0x7c,0x10,0x8c,0xb8,
- 0x7a,0x8f,0x1b,0x7f,0x65,0x4c,0x1c,0xc1,0x3b,0x8b,0x02,0x4b,0x38,0x0f,0xcf,0x14,
- 0xfc,0xd7,0x11,0xee,0xb3,0x36,0x15,0x33,0x85,0x86,0x7b,0x70,0x7e,0x6e,0xb7,0x2a,
- 0x41,0x4f,0x26,0x97,0xdb,0x7e,0x04,0xe7,0xf6,0xcc,0x98,0x1b,0x7f,0x5d,0xd5,0x17,
- 0x64,0xc2,0x59,0xa5,0x9e,0x9d,0xb2,0x9a,0x52,0x52,0xff,0x30,0xbb,0x20,0xe5,0x1d,
- 0x56,0xee,0x34,0x2e,0x43,0x53,0x26,0x2c,0x85,0xe8,0x45,0x8e,0xd8,0x30,0x7c,0xec,
- 0x04,0x72,0x5c,0x35,0x16,0xf0,0xf0,0x48,0x61,0xfc,0x61,0x63,0x91,0x0c,0x32,0x8c,
- 0x48,0x9f,0x4d,0xa5,0x74,0x7e,0x32,0x42,0x63,0x42,0x85,0xcf,0xf1,0xe2,0x12,0xa2,
- 0xd2,0x90,0xe3,0xd7,0xb5,0xc4,0x8c,0x40,0xdb,0x94,0xf8,0xc3,0x75,0x61,0x5d,0xa6,
- 0x11,0xad,0x93,0xb2,0xf3,0xa9,0x68,0x73,0x09,0x45,0x1b,0x8e,0xf3,0xc3,0x77,0xe7,
- 0x65,0xe2,0x74,0xa5,0x68,0xd9,0xb1,0x9c,0xd4,0x1e,0x8f,0xae,0xc3,0x16,0x37,0xff,
- 0x65,0x52,0x24,0xa1,0x0f,0x1d,0x69,0x4f,0xcd,0x3a,0xc2,0x4d,0x2a,0x09,0x29,0xf8,
- 0x66,0xb3,0xb9,0x70,0x8e,0x3f,0x9b,0xc3,0x5f,0x6b,0xb5,0xa7,0xa8,0x5c,0x72,0xab,
- 0xa3,0xb1,0x30,0x18,0x5c,0x83,0x2b,0xa4,0x3b,0xff,0x2b,0x2e,0x38,0x32,0x01,0xc4,
- 0x6c,0x41,0x7b,0x35,0x68,0x16,0x6f,0x83,0xaa,0xd4,0x21,0xe3,0x59,0x6b,0x53,0x4e,
- 0x91,0x5e,0x24,0x94,0xa9,0xf3,0xe5,0x73,0x8e,0x50,0xf4,0xda,0xb6,0x82,0xfc,0x2f,
- 0x91,0xf6,0xc5,0x04,0x10,0xa3,0xb2,0xcb,0x54,0x7f,0x39,0x8d,0x2d,0xc1,0x22,0xd8,
- 0xa9,0xef,0xb5,0xf2,0x71,0x71,0x65,0x8f,0x79,0x79,0x5b,0x44,0x6a,0x47,0xe8,0x47,
- 0x42,0xc6,0x72,0xe5,0xe6,0x84,0x9b,0xff,0x12,0x69,0x5f,0x49,0x23,0x3d,0x16,0x8a,
- 0xdd,0x2c,0x02,0xc9,0x46,0xb1,0xa5,0x84,0x5a,0x2e,0x9b,0x0d,0xbe,0x52,0x57,0x3f,
- 0xe3,0x42,0x6c,0x3a,0xb5,0x00,0x8c,0xa8,0x1a,0x48,0x68,0xee,0xfc,0xaf,0x8a,0x97,
- 0x88,0xff,0x12,0x31,0x81,0x2d,0x1e,0x21,0xa0,0x21,0x12,0xc1,0xe6,0x5d,0x82,0xf7,
- 0x8d,0x97,0x72,0x4a,0x11,0xcb,0x03,0x83,0x95,0x43,0xd9,0x2b,0xb7,0xdb,0x02,0xe9,
- 0x57,0x3c,0x22,0xdb,0xab,0x00,0x7f,0xdd,0x4e,0xb5,0x83,0xab,0x1c,0x49,0x8d,0x21,
- 0x91,0xed,0x55,0x2a,0x9f,0xbc,0xc0,0x89,0x94,0x6b,0x72,0x88,0xb0,0x9c,0x58,0x87,
- 0x48,0x0d,0x73,0xd7,0xff,0xf2,0xee,0x82,0x90,0x8c,0x85,0xa8,0x81,0x6a,0x2a,0xbb,
- 0x2c,0x64,0xe7,0x25,0xc8,0xda,0x25,0xcb,0x49,0x93,0x62,0xef,0x0f,0xe9,0x9e,0x44,
- 0x81,0x34,0xbd,0x5b,0x7f,0x5e,0x56,0xf2,0xc2,0x7e,0xa6,0x3a,0xd7,0x0e,0xda,0xaa,
- 0xa2,0x63,0xc3,0x57,0xc4,0x16,0x99,0x87,0x5d,0xf5,0x22,0xec,0x30,0x07,0xc4,0xa6,
- 0xd6,0xff,0xc2,0x75,0x75,0xb9,0x18,0xf7,0x8d,0xaa,0x8d,0xdf,0xf7,0x9b,0x73,0x4d,
- 0xdf,0x0e,0x86,0xb0,0x0b,0x82,0x08,0xc4,0x98,0x8d,0xd1,0xb6,0xf9,0xbc,0xb0,0xd1,
- 0x90,0x92,0x98,0x70,0xa8,0x22,0xe1,0xae,0xff,0x75,0x13,0x49,0xc1,0x77,0xb5,0x86,
- 0x7f,0x44,0xb1,0x10,0x3c,0xd6,0x6c,0x47,0x1b,0xbe,0x70,0x5f,0xe9,0xd3,0xc9,0x77,
- 0x05,0x3f,0x58,0x22,0x15,0x23,0xb1,0x7b,0x9f,0x2e,0xaf,0xf2,0xe0,0x3d,0x4e,0x8f,
- 0x45,0x5b,0xf2,0xfc,0xd7,0x1a,0x3b,0xff,0xab,0xf6,0x07,0x54,0x7f,0xd9,0x68,0x5c,
- 0x67,0x63,0xab,0xfa,0x96,0x12,0xc2,0xb0,0x85,0x68,0x4b,0xa7,0xba,0x78,0xdc,0x69,
- 0x69,0x6f,0x6c,0x9e,0xa2,0x3f,0xaf,0x46,0x20,0x4c,0xfc,0xd7,0xb0,0x89,0xb0,0xdd,
- 0xd6,0x3f,0xd4,0xfd,0x8f,0x49,0x91,0xc3,0x22,0x67,0x9e,0xaa,0xa5,0x7c,0xfa,0x3b,
- 0x42,0xa3,0x83,0xde,0x31,0xef,0x98,0xda,0x05,0x2b,0xb9,0x5b,0xff,0xf0,0xc5,0x78,
- 0x25,0x82,0xac,0xf2,0x35,0x6c,0x13,0xd4,0xee,0x2a,0x15,0x22,0x1b,0xd9,0x20,0x0f,
- 0x65,0x59,0x83,0xfe,0x04,0x9f,0xb7,0xd5,0x4e,0xfb,0xaa,0xcd,0xa8,0x54,0x76,0xfd,
- 0x09,0x5b,0x11,0xd1,0xfb,0xc2,0xc0,0xa2,0x6d,0xea,0x50,0xc2,0xcd,0x7f,0x59,0xe9,
- 0x5e,0x95,0xd4,0x95,0x77,0x43,0x38,0x12,0x92,0xce,0x9b,0x61,0xa9,0x2a,0xf3,0x44,
- 0x36,0xa6,0x42,0xf1,0x8d,0xf6,0x3a,0x96,0xd5,0xe8,0xfb,0x25,0xa9,0xec,0xb2,0x68,
- 0x31,0x43,0xe7,0x5b,0x1a,0x13,0x79,0xfe,0xcb,0xd3,0x0d,0xbb,0xa9,0xfc,0xca,0x97,
- 0xe1,0x19,0xf2,0x52,0xd6,0x89,0xe0,0xb7,0x8a,0x01,0x75,0x16,0x2b,0x33,0x1e,0x85,
- 0x50,0x2e,0x2d,0x97,0x2a,0x82,0xf5,0xfb,0x36,0x74,0xdc,0x6b,0x7d,0x4e,0xb6,0xec,
- 0xa3,0xcc,0x32,0x17,0xff,0x75,0x90,0xdf,0x9e,0xf6,0xaf,0x57,0x4a,0xe1,0xf7,0x7c,
- 0xb1,0xe1,0x5f,0x5f,0x89,0xf8,0x8b,0x47,0x86,0xfd,0x2d,0x1a,0xd3,0x4f,0xf1,0x3b,
- 0x0d,0x81,0xc8,0xfe,0x5f,0x42,0x37,0xeb,0xd9,0x9b,0xf0,0x0b,0x47,0xa3,0xe3,0x22,
- 0xbf,0x33,0x1b,0x5e,0xef,0xd6,0xdf,0xb8,0xec,0xf0,0x5f,0x6f,0xb1,0x18,0x94,0x66,
- 0x0c,0xe1,0xe1,0xf7,0x07,0xec,0xb4,0x2f,0x70,0x32,0x8c,0xcc,0x2d,0x22,0x8d,0x28,
- 0xef,0xf3,0xbf,0xe0,0xca,0xff,0x92,0xf1,0x87,0x54,0xed,0x4b,0xa8,0x1d,0x36,0x55,
- 0x09,0xb4,0x75,0x2d,0x75,0xd7,0x50,0xe9,0xb0,0xd6,0x80,0x6f,0xd4,0x82,0x0a,0xa9,
- 0x48,0xdf,0xd6,0xb4,0x7a,0xe3,0xfb,0xf8,0x35,0x4e,0x6c,0x5d,0x90,0x9d,0x46,0xfe,
- 0xe1,0x35,0x5e,0x79,0x6e,0xe5,0x18,0xae,0x00,0x79,0xfe,0x8b,0x57,0xf4,0x57,0xdb,
- 0x69,0xcb,0x86,0xc0,0x5f,0x8b,0x28,0x12,0xc3,0x64,0x9f,0x33,0x1f,0xe7,0x15,0x2a,
- 0xfe,0x0a,0x44,0x64,0x50,0xbb,0x26,0x20,0xa8,0x31,0xbc,0xb9,0xf8,0x9b,0xec,0x6d,
- 0xf3,0xf9,0xbd,0x15,0x03,0x2d,0xdf,0x2c,0xd0,0x3f,0xc4,0xe5,0x13,0x9d,0x8a,0x59,
- 0x06,0x3e,0xa7,0xe5,0x16,0x7a,0x4e,0x04,0x42,0x03,0x3e,0xaa,0xcc,0xf4,0x4f,0x9e,
- 0x0a,0x8f,0x9d,0x79,0x57,0xbd,0x4c,0x74,0xf8,0x6e,0x7b,0x1f,0x6c,0x79,0x41,0xdf,
- 0xb9,0x6d,0xe3,0x3a,0xb7,0xfe,0x61,0x86,0x44,0x90,0x16,0xfa,0x4a,0xa0,0xbb,0xb9,
- 0x46,0x17,0x65,0x53,0x52,0xdb,0x8c,0xac,0x0a,0x09,0x95,0x8a,0xe3,0xe8,0xb6,0x10,
- 0x22,0x31,0xd7,0x38,0x3d,0x77,0x99,0x86,0x04,0x62,0x19,0xcb,0x48,0x17,0x37,0x32,
- 0xd5,0x85,0xbf,0xb2,0xd1,0x77,0x7c,0x99,0x64,0x35,0x39,0xf6,0xa3,0x76,0x0c,0xe7,
- 0x91,0xdf,0x94,0xb6,0x2b,0x73,0x28,0x70,0x7d,0x86,0x7d,0xbe,0x1a,0xb3,0xc2,0x07,
- 0xca,0x47,0x7c,0x1f,0x40,0xd4,0xc6,0x4d,0x66,0xd7,0xe8,0x37,0x32,0x5a,0xa1,0xfe,
- 0xa1,0x9d,0xa6,0xa7,0xc6,0x36,0xdb,0x7e,0x66,0xa3,0x85,0x73,0xa7,0x8f,0xbf,0x0f,
- 0x8d,0x79,0x79,0x81,0xc0,0x51,0xc4,0x0e,0x37,0x23,0x10,0x73,0x94,0x93,0xad,0xd2,
- 0x03,0x6e,0xfc,0xf5,0x29,0x74,0xb7,0xfb,0x47,0x93,0xe8,0x43,0xc2,0x74,0x91,0xe4,
- 0x05,0xbf,0x81,0xcf,0x93,0x8c,0xde,0x33,0xb8,0x7b,0x36,0x81,0x3f,0xe7,0x67,0x0e,
- 0xbe,0x7c,0x95,0xff,0xa2,0x65,0x81,0x25,0x72,0x97,0x26,0xd4,0x60,0x3c,0x10,0x49,
- 0xda,0xf5,0xbf,0x38,0xe2,0xaf,0xc3,0xf1,0xbc,0x5c,0x7c,0x46,0xca,0x6e,0x98,0xf3,
- 0xad,0x92,0xc7,0x9b,0xe7,0x52,0xa9,0x29,0xdd,0x91,0x2b,0x5c,0x87,0xbb,0xd5,0x90,
- 0xda,0x61,0x4a,0xff,0xd0,0xdb,0x3d,0x1a,0x8c,0x97,0x1e,0x2d,0xac,0xff,0x95,0xcb,
- 0x11,0x9b,0x8b,0xcf,0x21,0x6d,0x0d,0x13,0xe1,0xdb,0x01,0xbc,0x67,0x23,0xaf,0xd9,
- 0xa4,0xda,0x82,0xe4,0xbb,0xb4,0x9e,0xc4,0xab,0xd0,0xb1,0x24,0x48,0xb0,0x8b,0x5a,
- 0x9e,0x7d,0x5d,0x3b,0xea,0xd6,0x3f,0xec,0xaa,0x40,0x5c,0x60,0x1f,0xe6,0xef,0x90,
- 0xc9,0x98,0xca,0xde,0xbe,0x62,0x8a,0x6b,0xda,0x49,0xe7,0xfc,0xa4,0x4e,0xb9,0xa0,
- 0x2c,0xdc,0x27,0x34,0x3a,0x38,0x80,0x38,0xef,0x4d,0xed,0xd7,0x43,0xd6,0xdf,0x50,
- 0x5e,0xad,0x7c,0x7d,0x4a,0xd6,0xc2,0xc5,0x50,0x84,0xd7,0x3c,0x5f,0xf9,0x91,0x79,
- 0x04,0xea,0xee,0x11,0xfe,0xd8,0x58,0x30,0x36,0xe0,0x4f,0x6b,0x15,0x2d,0x94,0x21,
- 0x12,0xee,0x4a,0x8a,0x5e,0x95,0xd2,0x1c,0xc5,0x46,0x94,0xa8,0xb1,0x9f,0xf2,0xcb,
- 0x6b,0x1a,0x60,0x55,0x46,0x83,0x3c,0xfe,0x1a,0x87,0x1c,0xfe,0xaa,0xf1,0x0b,0xff,
- 0x70,0x8c,0xb2,0x51,0x28,0x39,0xeb,0xdf,0xf5,0xc5,0x14,0xc4,0x4b,0x11,0x89,0xb8,
- 0x7f,0x8d,0xc2,0x25,0x75,0x52,0x6f,0x3a,0x8e,0x1e,0xfe,0x95,0xcc,0x84,0xb1,0xc8,
- 0x2a,0xcd,0x5e,0x57,0x7f,0x99,0xa6,0xd5,0xa4,0x51,0xa7,0xae,0xea,0xc3,0x8f,0x8f,
- 0x19,0xb1,0x92,0x00,0x1a,0xed,0x93,0x15,0x4d,0xc5,0xab,0x12,0xc4,0xa3,0x55,0xc5,
- 0x54,0xdc,0xbf,0xde,0xa6,0x18,0x21,0xd3,0xef,0x3a,0xdf,0xc8,0xf1,0x5f,0x23,0x92,
- 0xd2,0xea,0x4a,0x8c,0x78,0x26,0xfa,0x6b,0x46,0xb1,0xeb,0xfe,0x01,0x8e,0x58,0x0d,
- 0xfd,0x68,0x7c,0xdc,0x72,0x24,0x55,0x33,0xa4,0x1d,0xaa,0xfc,0x04,0x5b,0xd0,0xd8,
- 0x47,0xa5,0x99,0x41,0xd4,0xff,0xca,0x11,0x61,0xd9,0xeb,0xf5,0x0f,0x3b,0x32,0x7a,
- 0xd8,0xab,0x79,0x98,0x65,0xa2,0x01,0x64,0xe4,0x32,0xc2,0x9c,0x96,0x53,0x54,0x8e,
- 0xdc,0x74,0x27,0xc6,0xbe,0x73,0x83,0xfc,0xaf,0xbd,0x72,0xaf,0xbc,0x17,0x7a,0xd4,
- 0xf9,0xa0,0xb5,0xb1,0x73,0x74,0x68,0xe9,0xd5,0x78,0x5f,0xba,0x8a,0xb2,0xa7,0x3b,
- 0x11,0xa3,0xe9,0x87,0xf9,0xdc,0xb8,0xfd,0xb2,0xdd,0x7f,0x63,0xfe,0x6b,0x04,0x0e,
- 0xa5,0x63,0x77,0x07,0xb6,0xe3,0xb6,0x85,0x8b,0xd5,0xdd,0x81,0xa7,0x5f,0x7e,0x17,
- 0x0e,0x5b,0x35,0x6b,0x02,0x9b,0xd9,0x87,0x14,0xa3,0xb8,0x26,0xf0,0x23,0x5c,0xc7,
- 0x2e,0xa7,0xeb,0xd6,0xe5,0x3c,0xea,0x55,0x99,0xca,0x1b,0xf1,0x5f,0x97,0xb7,0x37,
- 0xed,0x09,0xbc,0xaf,0xac,0x31,0xaf,0xe9,0x4d,0xed,0xe8,0x55,0xbe,0x8f,0x0e,0x1e,
- 0x3a,0xf6,0x87,0x94,0xa1,0x96,0x2b,0xdb,0x63,0x7b,0x03,0x1f,0x28,0x54,0x5c,0xa0,
- 0x1e,0x6a,0xff,0xff,0xf0,0x5f,0x97,0xcd,0x68,0xca,0xbf,0x47,0x99,0x47,0xb2,0x1b,
- 0xd2,0x38,0x46,0xf5,0x6a,0x0f,0x90,0x7a,0xb0,0x97,0x1c,0xfb,0xa5,0x43,0x70,0xdc,
- 0x6c,0x68,0xcd,0x7b,0xf8,0x2e,0xfd,0xc3,0x6a,0x33,0xd7,0x3f,0x87,0xc5,0x69,0x21,
- 0x6e,0x01,0x9d,0x8e,0xb1,0x91,0x76,0xab,0x8c,0xd4,0x67,0xa3,0x28,0xdc,0x21,0x0a,
- 0xc7,0x05,0xf5,0x3f,0xe1,0xbf,0x9c,0xe3,0x88,0x2e,0x48,0xf3,0x90,0xe1,0x53,0xd9,
- 0x6e,0xc7,0x68,0x83,0x2c,0xa7,0xc0,0x1b,0x72,0x45,0xb0,0x05,0xa1,0xf4,0x46,0x5e,
- 0x28,0x24,0x35,0x56,0x58,0x7f,0x59,0xb8,0xfa,0xcf,0x73,0x63,0x0d,0xba,0x22,0x9f,
- 0xc5,0xa7,0xa0,0xcf,0x3f,0x13,0x3e,0x4b,0x49,0xca,0xab,0xb5,0x2f,0xb0,0x9b,0xf5,
- 0x7f,0xe2,0xd5,0xab,0x45,0xb4,0x21,0x3f,0x30,0x27,0x2f,0x10,0x81,0x9f,0x3a,0x33,
- 0xa5,0xfe,0x32,0xc2,0x2e,0xf3,0xbc,0x11,0x89,0x23,0xec,0xf2,0xe2,0x97,0x88,0xac,
- 0x51,0xc9,0xe8,0xb3,0x22,0x66,0xc0,0xa7,0xa8,0xbc,0x2f,0xde,0xb8,0xda,0x0f,0xca,
- 0x80,0xf9,0x32,0xde,0xbc,0x32,0x32,0xfd,0xa4,0x49,0xfc,0x57,0xa0,0x50,0xff,0xd0,
- 0x56,0xb3,0x51,0xff,0x87,0x74,0xde,0x2e,0x99,0x67,0x75,0xa1,0x7d,0x7d,0x09,0x21,
- 0x43,0xd3,0x12,0x9c,0x20,0x63,0xf0,0xb1,0x07,0x8d,0xde,0xe9,0x63,0xd6,0x55,0x99,
- 0xe2,0x9a,0xab,0x35,0x9f,0xc3,0x5f,0x1f,0xe7,0xcb,0x32,0x12,0x89,0x5c,0xed,0x9c,
- 0x6b,0xf9,0x73,0x46,0x8f,0x52,0x03,0x27,0xda,0xa2,0x59,0xff,0xb3,0x4a,0x95,0x8e,
- 0x43,0x69,0x6e,0x71,0x8d,0x57,0x8e,0xff,0x3a,0x9a,0xaf,0x29,0x99,0xc1,0x3d,0x44,
- 0xa5,0x04,0xe4,0x03,0x04,0xc4,0xd0,0xf0,0x1e,0xa0,0x40,0x7a,0x60,0x22,0xe0,0x13,
- 0x31,0x44,0x62,0x06,0x6c,0x41,0xa7,0xd4,0x7d,0xbe,0xfa,0x5a,0x8e,0xff,0xd2,0xbe,
- 0x9f,0x97,0x34,0xfc,0xf1,0x3b,0x76,0x1f,0xce,0xb3,0x3b,0xd3,0xaa,0xce,0x86,0xd6,
- 0xfb,0x66,0x07,0x37,0x58,0x3f,0xce,0xae,0x59,0xef,0x5b,0x80,0xfb,0xe0,0xce,0x9c,
- 0xfe,0x21,0x19,0xa3,0x79,0xfc,0xf5,0xa4,0x3c,0x59,0x3a,0x89,0x7f,0x62,0x8e,0xa5,
- 0x3e,0xcc,0xfe,0x9d,0xee,0xb9,0xa0,0x7e,0x93,0xfd,0x3b,0x3f,0xe8,0xa9,0xfe,0xa3,
- 0xfa,0x5d,0x8a,0x87,0x8c,0xe3,0x30,0x3d,0x84,0x5f,0x2c,0xd9,0x6c,0xbc,0xe6,0x3e,
- 0x37,0x76,0xe1,0xaf,0x37,0x73,0x94,0x56,0xb6,0x2e,0x53,0xb2,0x53,0xf9,0xe0,0x57,
- 0x87,0xf5,0x86,0x84,0x7f,0x1f,0xfb,0x80,0xe3,0xb4,0xe2,0xfe,0x7d,0xca,0x6d,0xb0,
- 0xc9,0xaa,0x4b,0x63,0xff,0x20,0x46,0xcb,0x2e,0xb0,0xa5,0xe9,0xe5,0xa7,0x72,0xf8,
- 0xeb,0x9c,0x8c,0x82,0x23,0xe7,0x6d,0xd2,0xb8,0x8b,0xad,0xea,0x55,0x06,0x3d,0x93,
- 0x33,0x9a,0x20,0x20,0xc2,0x00,0x54,0x99,0xd9,0x6a,0x9c,0x85,0xbb,0x8a,0xa8,0x40,
- 0x30,0x8c,0xdd,0xd7,0xf0,0x9f,0xf0,0x5f,0xa6,0xed,0x4c,0x56,0xe5,0x34,0x04,0x8a,
- 0xde,0x98,0x8e,0x5e,0x4a,0x5e,0x7f,0xbe,0xdc,0x65,0xe4,0xf1,0x57,0x21,0xff,0x05,
- 0x5f,0xe3,0x92,0x89,0x58,0xea,0x12,0x42,0x3c,0xe6,0x66,0x34,0xfe,0x9b,0x43,0x8d,
- 0xad,0xa0,0xd0,0xb2,0x5f,0x41,0xb0,0x80,0xec,0xc8,0xf3,0x5f,0x8e,0xc8,0x3c,0xe2,
- 0x2f,0xe5,0x1f,0x4c,0x6d,0xb0,0xec,0x92,0xfe,0x38,0x88,0xb2,0xcb,0x97,0xbc,0x3f,
- 0xf7,0xd4,0x9a,0x2b,0x84,0xc1,0xc4,0xa5,0x21,0xfd,0x29,0x2a,0xa4,0x72,0x43,0xfe,
- 0xcb,0x63,0xf3,0x5f,0xcb,0xcc,0xe7,0x2b,0xbe,0xd1,0xa2,0xdd,0xcd,0x5e,0xe7,0x8f,
- 0x1a,0xd5,0x2b,0xb5,0xbb,0xa3,0xaf,0xf3,0xe7,0x8d,0x6a,0xd9,0xf2,0xbc,0x21,0x2e,
- 0x0d,0xc1,0x53,0x86,0xb1,0xfc,0x86,0xfc,0x97,0xad,0x3f,0xdf,0xae,0x54,0xb8,0xb4,
- 0x11,0xec,0xca,0x6b,0xf9,0xd4,0x1e,0x71,0x89,0xfa,0xf9,0x4d,0x68,0x50,0xff,0xc5,
- 0xd5,0xcf,0x79,0xfe,0x2b,0xed,0xb0,0x27,0x7c,0x62,0x46,0x6c,0x19,0xc9,0x7c,0x99,
- 0xe3,0x7a,0x6c,0xe5,0xaa,0xad,0xca,0xd0,0xb2,0x71,0xbd,0x66,0x99,0x34,0xca,0xd0,
- 0x63,0xdc,0xaa,0xbc,0x0e,0x57,0xea,0x9b,0x6e,0xc4,0x7f,0x51,0xfd,0xaf,0x5c,0xb5,
- 0x2f,0xbb,0x64,0x95,0x1d,0x74,0x2d,0x0c,0x4f,0xcc,0x64,0x92,0xff,0x0a,0x92,0xf4,
- 0x7a,0x15,0xfc,0x42,0x96,0x71,0xb9,0x21,0xff,0xc5,0x6c,0x48,0xd5,0xe1,0x94,0x5d,
- 0xde,0x2b,0xf1,0x97,0xa1,0x3b,0x89,0x60,0x9f,0xe9,0x71,0x0a,0x31,0x3b,0xfa,0x87,
- 0xff,0x09,0xff,0xa5,0x48,0x6d,0xc3,0xb4,0x0c,0x32,0x24,0x43,0xd5,0x7d,0xed,0xac,
- 0xcd,0x1b,0x96,0xf2,0x26,0x3b,0x3d,0x94,0x8b,0xe7,0xab,0x72,0xca,0x7e,0xb9,0xfa,
- 0xd9,0xc1,0x5f,0xce,0xb8,0xf7,0xc3,0x46,0x3d,0xd8,0x4a,0x65,0x97,0x3d,0x1b,0xcd,
- 0xe0,0x3d,0xea,0xf7,0x28,0x5a,0x95,0xf8,0xaf,0x6d,0x89,0x77,0x5b,0x0e,0x79,0x83,
- 0x22,0xa2,0xb5,0xa2,0xb3,0xf0,0xfd,0x09,0xba,0xf3,0xbf,0xf0,0x35,0x5e,0x81,0xd0,
- 0x8c,0x82,0xe4,0x11,0xa4,0x2b,0x9f,0x87,0x63,0xfd,0xc1,0xf8,0xac,0xed,0xca,0x4f,
- 0xe0,0x58,0x5b,0x4d,0xdc,0xbf,0x9d,0xfa,0xe7,0x0b,0xc1,0xd6,0xc0,0x8e,0xf2,0x2a,
- 0x76,0x2c,0x81,0x6e,0x98,0xab,0x7f,0x6e,0xa8,0x7f,0xd8,0x1e,0x6b,0x09,0x6c,0x27,
- 0xfa,0xcc,0x6c,0x34,0x6b,0x77,0x48,0xfd,0x8d,0xd5,0x25,0xa9,0x4a,0x84,0x5d,0xd6,
- 0x8b,0xab,0x03,0xf4,0x40,0x34,0x0a,0x88,0xcb,0xe3,0x53,0xf9,0x2f,0xc4,0x5f,0x83,
- 0xa6,0xd0,0x96,0x07,0x51,0x7f,0xd9,0xef,0x2d,0x07,0x9d,0xb2,0xbd,0xfc,0xed,0x95,
- 0x06,0x58,0xcb,0xea,0x28,0x46,0xb1,0xc2,0x2e,0xcf,0x77,0x3d,0xff,0x35,0xad,0x1e,
- 0x0e,0x2b,0xb6,0xda,0xe1,0x26,0x29,0xbb,0x11,0xca,0x6f,0x64,0x76,0x46,0x98,0x43,
- 0x84,0x31,0x55,0x7f,0xb1,0x23,0xf8,0xbf,0xe2,0xbf,0x7c,0xb2,0xc8,0x57,0xd8,0xa2,
- 0xbc,0x12,0x3a,0x57,0x47,0xa3,0x54,0x24,0x98,0x58,0xf3,0x65,0xa6,0xc9,0x5e,0xfb,
- 0x92,0x3f,0xd4,0xdb,0x79,0x3d,0xff,0x85,0xf8,0xcb,0x10,0x2b,0xed,0x43,0x6c,0x16,
- 0xdf,0x40,0xb2,0x1b,0x24,0x7b,0xd8,0x4d,0x85,0x42,0x22,0x45,0xb3,0x70,0x15,0x35,
- 0x2c,0x1f,0x85,0x1c,0x24,0xe1,0xef,0xe5,0xa5,0xc5,0x05,0x1a,0x89,0xae,0xfc,0xaf,
- 0xcf,0x4a,0xb5,0xc3,0xcb,0x4b,0x9b,0xac,0xdf,0x0a,0xd9,0x8d,0x72,0x81,0xc8,0xb2,
- 0x02,0x91,0xbd,0x4c,0xfa,0xf3,0xf5,0x68,0xfc,0x92,0xcf,0xa4,0x16,0x92,0xe6,0xb8,
- 0xf3,0xc6,0xfc,0x97,0x8c,0x24,0xdc,0xb2,0x5f,0x44,0xaf,0xd5,0xb8,0xb9,0x12,0x96,
- 0x8f,0x9c,0x51,0x73,0x02,0xe9,0xe3,0x90,0xd3,0x76,0xbe,0x4e,0x7f,0x83,0x7f,0x77,
- 0x88,0xea,0x7f,0xe9,0xa7,0x9d,0xd8,0x27,0xf4,0xfd,0xde,0x09,0x48,0x90,0x25,0xe2,
- 0x0f,0xaf,0x7a,0x26,0x52,0xb1,0x73,0x76,0xd9,0xaf,0xe8,0x7f,0xc6,0x7f,0x1d,0xcc,
- 0x7c,0xc3,0xd2,0xbe,0xcd,0xae,0xd2,0x46,0x96,0x95,0x65,0x53,0xa0,0xba,0x4f,0xa3,
- 0xfa,0x5f,0x0b,0x8c,0x0a,0x12,0xc7,0x38,0x6b,0xfe,0x7e,0xeb,0xe2,0x6c,0x31,0x5d,
- 0x7a,0x4e,0xdf,0x39,0xec,0xee,0x1f,0x9b,0xff,0x9a,0x69,0xe7,0x7f,0x91,0xc8,0x3c,
- 0xdf,0x20,0x0c,0x49,0x38,0xf6,0xd3,0xcd,0xed,0x4f,0x7a,0x76,0x5a,0x4b,0x6d,0xd9,
- 0x0d,0xba,0x34,0x89,0x7f,0xab,0x62,0xc0,0xfd,0x9c,0x1c,0xff,0x35,0x90,0xf3,0x33,
- 0xf5,0x64,0x2a,0x3c,0xd2,0x79,0x67,0xd9,0x29,0xb3,0x3b,0x15,0x1e,0x5c,0x71,0x27,
- 0x43,0xc3,0x32,0x86,0xb4,0xc5,0xec,0xb4,0xb9,0x9b,0x87,0x46,0x8b,0xef,0xa4,0xd0,
- 0x7a,0xd5,0xd1,0xdc,0x93,0x9f,0x72,0xf4,0x37,0x72,0xfa,0x87,0xe8,0xaa,0x9d,0x00,
- 0x11,0xc6,0x46,0x7d,0xd8,0x94,0x5d,0x41,0xea,0x67,0x6f,0x0d,0x60,0xf7,0x1e,0x60,
- 0x1f,0xc1,0x91,0x81,0x9a,0x0b,0x81,0x4c,0x70,0x04,0x7a,0x21,0x58,0xd0,0xcf,0x1f,
- 0x5f,0x97,0xff,0x25,0xf0,0x97,0x45,0xe5,0x69,0x8c,0x09,0x4a,0x04,0x13,0x86,0x51,
- 0xd7,0x47,0x25,0xab,0xf8,0x87,0x46,0x6c,0xa0,0x84,0x2a,0xd7,0x4c,0x25,0xcb,0x72,
- 0xfa,0x87,0x97,0xf2,0xb5,0xbd,0x7e,0x0b,0xb7,0x5b,0xfe,0x75,0xca,0x2c,0xf8,0x25,
- 0x25,0x0d,0xad,0x5b,0x4a,0x46,0xae,0x45,0x18,0x42,0xb3,0xa8,0x20,0xce,0x2a,0xa7,
- 0x7f,0x18,0xcf,0xd7,0x56,0x76,0xe7,0x6d,0xb9,0x8d,0x32,0x32,0xe6,0x53,0x8b,0x1f,
- 0x36,0x5a,0x4e,0x25,0x65,0xaf,0x14,0xb2,0x73,0xf4,0x37,0x9c,0x64,0x31,0xec,0xba,
- 0x1f,0xde,0xf0,0x39,0xc5,0x84,0xb6,0x72,0x97,0x3a,0xda,0x83,0x05,0x64,0x99,0x4b,
- 0xff,0x30,0x39,0x57,0xe6,0x7f,0xe1,0x24,0x4a,0x9f,0x94,0xd3,0xd3,0x4c,0x8b,0x59,
- 0x19,0xa4,0x24,0xaf,0x79,0x11,0xdf,0x66,0x96,0xf4,0x1b,0xc7,0x20,0x52,0x8a,0xcf,
- 0xd1,0xf7,0x0e,0xb8,0xc7,0x2b,0xaf,0x7f,0xc8,0x4e,0x84,0x28,0xaa,0x33,0x49,0xd5,
- 0xd0,0x84,0x36,0x78,0x18,0x4e,0x98,0xd1,0x41,0x69,0x40,0x17,0xa1,0xda,0x7d,0x9e,
- 0xb7,0xa0,0x6b,0x30,0x9c,0x29,0x0f,0xb3,0x63,0x9e,0xe8,0x89,0x82,0x7e,0x76,0xf0,
- 0xd7,0x18,0x91,0x26,0x96,0x5d,0xed,0xab,0xe9,0xa4,0x93,0xff,0x75,0xfc,0xcf,0xa5,
- 0xe0,0x3f,0x05,0x10,0x26,0x89,0x70,0xac,0x7d,0x53,0xd4,0x62,0xbb,0x62,0x14,0xc6,
- 0xb3,0x4d,0xa9,0xff,0x55,0x62,0xeb,0x6f,0x64,0x03,0x24,0xa9,0x71,0x9a,0x37,0x59,
- 0x7e,0x4b,0xd9,0x86,0x8b,0xde,0x02,0xf8,0x22,0xd1,0xca,0xd7,0xda,0x44,0xfe,0xf2,
- 0x42,0xdc,0x6a,0x17,0x11,0xff,0x95,0xa5,0xf3,0x43,0x97,0xfe,0xbc,0x95,0xd3,0xdf,
- 0x68,0x26,0x7f,0x1e,0x8d,0xf4,0x9f,0xa1,0x3f,0xcf,0x6b,0xfb,0x7d,0x9c,0xcd,0x57,
- 0x0f,0xf1,0x60,0x5a,0xed,0x99,0x4e,0xf7,0xcc,0x8d,0x97,0xa6,0x98,0x17,0x12,0x50,
- 0x47,0xb0,0xeb,0x1d,0xdc,0x2f,0x0c,0x08,0x21,0xfe,0x2a,0xca,0xf1,0x5f,0x76,0x8f,
- 0x59,0x1e,0x51,0x46,0x0a,0xf0,0x01,0x49,0xb9,0x42,0x3e,0x46,0xd4,0x58,0x4e,0x46,
- 0xcf,0x94,0xda,0xd7,0x32,0xd4,0x6d,0x80,0x9c,0x52,0x4a,0x16,0x7b,0xc7,0x13,0x9f,
- 0x82,0xbf,0x3e,0x80,0xc3,0xbc,0xd4,0x5a,0xb1,0x97,0x3d,0x1b,0xc1,0x37,0xa1,0xd7,
- 0xb7,0x97,0xd5,0xd0,0xc1,0x66,0xbb,0x8d,0xbb,0x4b,0xef,0xf3,0xed,0x28,0x43,0x10,
- 0xa6,0xce,0xa5,0x4c,0xc0,0x61,0x38,0xc4,0x0d,0xa1,0x3f,0x2f,0xf7,0x41,0xf3,0x33,
- 0x42,0x24,0x81,0x06,0xe5,0x43,0x98,0x48,0xcf,0xb6,0x02,0x2f,0xb2,0x67,0x85,0x47,
- 0x5d,0xba,0x4f,0xa3,0x25,0x2e,0x1a,0x09,0xdb,0x0b,0x5a,0x26,0xd0,0xa1,0xcc,0xe5,
- 0x03,0x26,0x95,0x48,0x50,0xce,0xc1,0x78,0x7a,0x17,0x9f,0xaa,0x3f,0xdf,0x54,0xe0,
- 0xa2,0xdf,0x23,0x8d,0x34,0xf6,0xe1,0xb8,0xf7,0xe7,0x82,0x11,0xd3,0xaf,0xc1,0x22,
- 0x5e,0x64,0x29,0xaf,0x1b,0x93,0xd2,0x9f,0x1f,0x86,0x3f,0xc8,0x7c,0xbd,0xb1,0x1c,
- 0xff,0xe5,0xc9,0xd5,0xff,0x12,0xb5,0x7a,0x77,0x57,0xbe,0x8f,0x0b,0x6c,0xe3,0xc9,
- 0xc0,0x41,0x6d,0x2e,0xf4,0xb5,0x45,0x5b,0x4b,0x6d,0xfe,0x4b,0xc7,0x99,0x1b,0x42,
- 0xc4,0x41,0xeb,0xea,0x9f,0xbf,0x8b,0x3d,0xd4,0xf0,0x7a,0xa1,0xfe,0xbc,0x53,0xff,
- 0x2b,0xde,0xd9,0x5a,0x63,0x95,0xee,0x41,0x1f,0xe5,0x08,0xfc,0x43,0x16,0x97,0x8b,
- 0x90,0x5d,0x31,0x4d,0x3c,0x87,0xb2,0xe1,0xd8,0x6d,0x89,0x4d,0x0e,0xff,0x85,0xd0,
- 0xec,0x75,0x5f,0x0e,0x7f,0x0d,0xe7,0xe3,0x37,0xfa,0x20,0x45,0x46,0x47,0x51,0xbf,
- 0xde,0xed,0x0d,0x8f,0x6a,0x1d,0x02,0x0e,0xa4,0xcd,0x5c,0xfd,0x14,0xed,0x79,0xd1,
- 0x22,0x78,0x7c,0x72,0x4e,0x42,0x34,0x5e,0xa3,0xd2,0xcf,0x4c,0xe7,0xf0,0x57,0xd1,
- 0x6f,0x60,0x3b,0x17,0x6a,0x87,0xbf,0x11,0x65,0x97,0x7d,0x2d,0xcd,0x0d,0x9e,0x47,
- 0xd3,0x46,0xdc,0xf7,0x10,0xa1,0x80,0xf6,0xea,0x61,0xed,0x9e,0x60,0x99,0xb9,0x61,
- 0xb4,0x42,0xea,0xf2,0x6d,0xe1,0x15,0x06,0x6e,0x6d,0x67,0xbc,0xba,0x83,0xbf,0xba,
- 0x33,0x02,0x7f,0xf5,0xe2,0xf7,0x69,0xcc,0x06,0x40,0xe9,0x87,0x6f,0x65,0xc2,0x59,
- 0xed,0xb3,0x0a,0x98,0x7d,0xe9,0x48,0x2b,0xee,0x5f,0x24,0x7b,0x38,0x6b,0x0d,0xf6,
- 0x21,0x78,0x7b,0xf7,0x53,0xd9,0x65,0x76,0x9a,0x1f,0xe3,0xf5,0x29,0xa1,0x3f,0xaf,
- 0x3b,0xf8,0xcb,0xd6,0x4b,0xa1,0x30,0x36,0xec,0xe7,0x5e,0xfc,0xaa,0xd7,0x3c,0x4d,
- 0x7d,0xe4,0x55,0xea,0x93,0x7a,0x93,0x39,0x6d,0x54,0x39,0x4a,0x01,0x84,0xcb,0x48,
- 0x91,0x9e,0x64,0xe7,0xc5,0xe0,0x2e,0xa3,0xe4,0xbe,0x55,0x88,0xbf,0xbc,0x36,0xfe,
- 0x72,0xad,0x90,0x62,0xcd,0xa4,0x12,0x1b,0x13,0x4a,0xec,0xcd,0x6f,0x70,0x59,0x76,
- 0x99,0xe7,0xc3,0x3f,0xd2,0x4a,0x50,0x27,0x45,0xc4,0x12,0x2a,0x76,0x70,0x82,0x53,
- 0x68,0xab,0xd2,0x97,0xe7,0xbf,0x72,0x6a,0x87,0x07,0x40,0x08,0x21,0xce,0xf0,0x92,
- 0x36,0xaf,0x4a,0x8a,0x88,0xcf,0x43,0x35,0x17,0xc7,0x7d,0xbf,0xa7,0x4b,0x96,0x4f,
- 0xa7,0x8c,0x30,0x4b,0x14,0xb2,0xdc,0x00,0xb7,0x43,0x09,0xe2,0xaf,0x22,0x7b,0x9d,
- 0xcf,0xc5,0x1f,0xbe,0x06,0x07,0x48,0x7f,0x7e,0x66,0x90,0x6a,0x7b,0x55,0xbf,0xaf,
- 0xaa,0x08,0x78,0x5f,0xe8,0x5b,0x9b,0xf5,0xd9,0x68,0x2b,0x8e,0xf7,0xfc,0x19,0x7a,
- 0x0e,0xf3,0xe8,0xe6,0x57,0x20,0xc9,0xbf,0x9a,0x56,0xd7,0x37,0x0f,0x5c,0xa7,0x3f,
- 0x9f,0x35,0x7b,0xd0,0xe8,0xdc,0x58,0x14,0x34,0x85,0x6e,0x98,0xbf,0xcf,0x63,0x64,
- 0xe2,0xe1,0xb3,0x4e,0x46,0x58,0x7c,0xc5,0xf6,0x32,0x93,0x39,0x75,0x4b,0x8d,0xa4,
- 0x2e,0x8a,0x27,0xbe,0x09,0x53,0xe3,0x0f,0x27,0xe0,0x6a,0x0a,0x8d,0x21,0xe5,0x4e,
- 0xd1,0xe2,0xff,0x58,0xfb,0x1c,0xa5,0x09,0x67,0x4a,0x25,0xda,0xa2,0x93,0x8a,0xe9,
- 0xeb,0xe1,0x14,0xce,0x66,0x29,0x8d,0xc8,0x3f,0x9f,0xf2,0x1b,0x88,0xbf,0x24,0x3e,
- 0xbd,0x4e,0x7f,0xbe,0x9d,0x88,0x30,0x34,0x9e,0x68,0x5f,0x9a,0x9d,0x36,0x66,0x52,
- 0x5e,0x7f,0x65,0x96,0x30,0xda,0xb4,0x40,0x7b,0x72,0x37,0x8c,0x71,0x79,0xb3,0x39,
- 0x06,0x2f,0x4a,0xfc,0x15,0xb7,0xf1,0x57,0xce,0x33,0x4f,0x93,0xbf,0xfa,0xc5,0xd4,
- 0x06,0x52,0x9b,0x6f,0x5c,0x56,0xb2,0x43,0x11,0x0c,0x82,0x93,0x11,0x56,0xb3,0x24,
- 0xb0,0x43,0x59,0x6d,0x9e,0x17,0x15,0x7e,0x45,0x4b,0x98,0xa4,0x11,0x99,0x9c,0x5f,
- 0xae,0xfa,0x5f,0xbf,0x67,0x1b,0x07,0x77,0x99,0xda,0xd3,0x42,0x25,0xbe,0x26,0xae,
- 0x6e,0x23,0xe3,0x17,0x0d,0xae,0xf8,0xc3,0x1f,0xb0,0xcf,0x1b,0x87,0x5c,0xfe,0x73,
- 0x73,0x68,0x07,0x4b,0x5f,0x17,0x7f,0xf8,0x2e,0xd5,0xc1,0x34,0xb5,0x6d,0x89,0x2a,
- 0x83,0x72,0x7c,0x3e,0x77,0x13,0xa5,0x8f,0xc5,0xa5,0xec,0xa1,0x47,0xf0,0x5f,0x5b,
- 0x99,0x4b,0xac,0xc3,0x0e,0x7a,0x2c,0x9d,0x12,0x7f,0xa8,0x4b,0xfd,0x43,0x04,0x62,
- 0x3e,0x6f,0x73,0x1b,0x84,0x97,0xa9,0x37,0xb1,0x2a,0x66,0x17,0x9f,0x72,0x50,0x40,
- 0x91,0x37,0xdd,0x6d,0xa4,0x45,0xa5,0x2a,0xbe,0x3f,0x14,0x5e,0xae,0xea,0x6c,0xd3,
- 0xb4,0x02,0xfc,0x45,0xd2,0x91,0xe9,0x81,0x35,0x51,0x28,0x7d,0x2c,0x51,0x91,0x46,
- 0xfc,0xf5,0x83,0x92,0xc7,0x3a,0x0d,0x18,0x08,0x35,0xe4,0x64,0x0f,0x7d,0x81,0x44,
- 0x32,0xce,0xc7,0x5a,0x1d,0x8d,0x71,0xa3,0x51,0x5d,0xc9,0xdd,0xfa,0x87,0x39,0xb5,
- 0xc3,0x2b,0x46,0xcc,0x5c,0x45,0x42,0x88,0xe3,0x0c,0x1d,0x7b,0x34,0xd4,0x2b,0x70,
- 0x97,0x83,0xb6,0x9a,0x4c,0xed,0xb5,0xce,0x4b,0xe9,0x2b,0x32,0x28,0xf4,0x52,0x8b,
- 0x50,0xe4,0xc0,0xd1,0xf1,0xba,0xf4,0x37,0x72,0x6a,0x87,0x51,0xf3,0x56,0xda,0xa4,
- 0xc6,0x1d,0x45,0xc4,0x02,0x45,0xfa,0xd2,0x41,0xe5,0x41,0x8a,0xdf,0x30,0x6d,0xb0,
- 0x26,0xf8,0xaf,0x1b,0xe8,0xcf,0x33,0xc2,0x5f,0xb7,0x72,0xb6,0x57,0x26,0x82,0x91,
- 0x1b,0xdf,0xe3,0xa9,0xcb,0xa3,0xad,0x2d,0x5c,0xcb,0x82,0x9d,0x11,0x36,0x2c,0xc0,
- 0x5a,0x08,0xf1,0x57,0x51,0x9e,0xff,0x22,0x0d,0x7f,0x01,0xb2,0xb0,0x57,0x57,0xd8,
- 0x84,0xe3,0x12,0x9f,0xcc,0x08,0x4b,0x2f,0xa1,0x4b,0x33,0x28,0x22,0xf1,0xe6,0x94,
- 0x6f,0xd9,0x8c,0x36,0xaf,0x2c,0xc1,0xe6,0x48,0x23,0xbe,0x26,0xe7,0x57,0x61,0xfd,
- 0x2f,0xd8,0xb5,0xc4,0xb7,0xbd,0x48,0xb6,0x74,0x44,0x9b,0x09,0x92,0x07,0x5b,0xf3,
- 0x68,0xeb,0x7b,0x37,0xff,0x1e,0x92,0x86,0x28,0xbb,0x3c,0x64,0xe2,0x4b,0x12,0x17,
- 0x75,0x07,0x8c,0x1c,0xfe,0x72,0x70,0xd3,0xfb,0x46,0x17,0x71,0x88,0x73,0x66,0x11,
- 0x22,0x2b,0xdd,0x4e,0x27,0x0c,0xf8,0x46,0x39,0xfd,0x83,0xfb,0xb2,0xf6,0x35,0x76,
- 0xcc,0x14,0x42,0x88,0xbf,0x87,0x63,0x66,0xd7,0xdd,0xfe,0x1c,0xfe,0x5a,0x93,0xc7,
- 0x5f,0xfd,0x22,0xaa,0x93,0x48,0x2e,0x43,0xd6,0x0b,0x58,0x31,0xc4,0xcf,0xa7,0xdc,
- 0x6a,0xf3,0x3b,0x88,0x23,0x83,0xc3,0x05,0x78,0xf9,0xb5,0x1c,0xfe,0xf2,0x38,0xf3,
- 0x94,0x8f,0xb5,0xd0,0xbb,0x51,0x79,0x8e,0x91,0xec,0x86,0xbf,0x9d,0xf4,0x5b,0x8c,
- 0xc2,0x53,0x11,0x83,0x0d,0xc4,0x85,0xd8,0x4b,0x2f,0x89,0x17,0xdd,0x84,0xaf,0x56,
- 0x9f,0x4b,0x7f,0xc3,0x33,0x97,0x90,0xd4,0xb8,0xf7,0x45,0x04,0x59,0xa5,0x43,0x6c,
- 0x0c,0x07,0xa5,0x96,0xfb,0xb2,0xcd,0xc3,0xf0,0xa2,0x64,0xbb,0xd6,0xc0,0x0f,0x3c,
- 0x61,0x5e,0x1a,0x67,0x0d,0xfc,0x09,0xcb,0xc6,0x5f,0x4f,0x40,0xed,0x5e,0xf5,0x46,
- 0xf1,0x87,0x16,0x44,0x5a,0x71,0x8d,0x62,0xac,0x97,0x80,0x18,0x11,0xfa,0xfd,0x90,
- 0xe1,0x2e,0x45,0x7a,0xad,0x1e,0x67,0x53,0x92,0xdb,0x71,0x68,0xe4,0x55,0xae,0xd1,
- 0xa7,0xea,0x6f,0x08,0x49,0x8d,0xe7,0x65,0xc9,0xe0,0x3e,0x92,0x83,0x00,0x9f,0x50,
- 0x81,0x20,0xc9,0xbe,0x75,0x45,0x5f,0xa6,0xfa,0x8c,0x96,0xef,0x41,0xa6,0x42,0x52,
- 0xb5,0xf1,0xd7,0x06,0x1d,0x97,0xee,0x56,0x96,0xf5,0xda,0xf8,0x2b,0xa7,0xbf,0xf1,
- 0x1a,0x4c,0x0a,0x6d,0x8d,0xf2,0xd7,0xe0,0xb7,0x54,0x7d,0x75,0x7d,0x39,0x15,0xc4,
- 0xdc,0x2f,0xd1,0xd6,0xff,0xfb,0x28,0xde,0x73,0x46,0xfb,0x2c,0x02,0x31,0x81,0xbf,
- 0x4e,0xc1,0x2f,0xd3,0x8d,0x69,0xff,0x3d,0xca,0x3b,0xee,0xf8,0x43,0x11,0x64,0x38,
- 0xe4,0xa5,0x7d,0x47,0xb0,0xd2,0x1f,0xca,0x5e,0x25,0x82,0xa6,0xce,0x3a,0x4d,0xf1,
- 0x6c,0x14,0xb7,0xb3,0x25,0x4d,0x65,0x97,0xc5,0x71,0xb1,0x62,0x17,0x96,0xa2,0x73,
- 0x24,0x31,0x5e,0x2e,0xfd,0x8d,0x0b,0xf8,0x7d,0x9a,0x86,0x02,0x03,0xca,0x1f,0xc9,
- 0x3f,0xa4,0x6a,0xb0,0x2f,0xc0,0x23,0x88,0xbf,0xfc,0xe3,0x92,0xff,0xca,0xae,0x38,
- 0x53,0x1e,0x03,0x51,0x23,0x8c,0xc4,0x3a,0x7e,0xc7,0x17,0xc5,0xfd,0x67,0x10,0x7f,
- 0x19,0x36,0xfe,0x9a,0xd9,0xad,0x23,0x4a,0x5a,0xdf,0xfc,0x2b,0x38,0x60,0x84,0x87,
- 0x71,0xff,0xba,0x14,0xc7,0xdd,0x01,0x4a,0xff,0x92,0xcd,0x4e,0xff,0x9e,0x84,0xa4,
- 0x44,0xfd,0xaf,0x4c,0x78,0x64,0xc5,0xdd,0x6c,0x26,0x6c,0xd1,0x6f,0xcf,0x6a,0xeb,
- 0xf0,0x97,0x26,0x37,0xdf,0x9e,0xfa,0x8b,0xbf,0x64,0x1f,0x14,0x89,0xe7,0xb8,0xf4,
- 0x37,0x5e,0x37,0x0e,0xa8,0xf8,0x40,0x3a,0x87,0x44,0x20,0x66,0xaa,0x0f,0xb2,0xa7,
- 0xf9,0x7e,0x9d,0x04,0xa9,0x8a,0xa4,0xec,0xe1,0x0f,0x89,0x6b,0x7b,0x54,0xe0,0xaf,
- 0xb2,0x93,0x1d,0xdf,0x37,0x2a,0x00,0xfb,0xb9,0x6f,0xaa,0xfe,0x06,0xae,0xab,0x19,
- 0x8e,0xfb,0x97,0x56,0x46,0xf9,0x44,0x61,0x72,0x37,0x4b,0x60,0xb7,0x69,0xb8,0x4e,
- 0x89,0xc1,0x57,0x6c,0x24,0xb2,0x69,0xba,0xf9,0x09,0xf3,0xc9,0xac,0x91,0x99,0xa7,
- 0xe3,0xc6,0x2a,0x7f,0x57,0x5e,0x7f,0xe3,0x03,0xb8,0x3c,0x88,0x9d,0xb9,0x07,0x0d,
- 0x91,0xbb,0x9d,0x86,0xcd,0x30,0x96,0x8a,0x0e,0x87,0x65,0xaf,0x96,0xd2,0xb1,0xcf,
- 0x3c,0x11,0x8f,0x24,0xfc,0xa8,0xdf,0x59,0x75,0x67,0x70,0x7e,0x5d,0x8f,0xbf,0xde,
- 0xe7,0x0d,0x34,0x28,0x07,0x94,0x8f,0x0c,0x59,0x2c,0x0c,0x61,0xd7,0x98,0xd5,0xe8,
- 0x42,0xd0,0x3b,0xc8,0x97,0x30,0x1b,0x9c,0x14,0x86,0xc6,0x1d,0xb5,0xa9,0xeb,0xf5,
- 0x37,0x70,0x8b,0xfc,0x9d,0x14,0xe2,0x18,0xa3,0x28,0x38,0x1e,0x38,0xa6,0xc4,0xa0,
- 0x9f,0x47,0x2d,0x6f,0x4e,0x91,0x5e,0x57,0xe6,0x52,0x05,0x01,0x0a,0x44,0x3c,0x2b,
- 0x50,0x1b,0x1a,0xc3,0x4e,0xfc,0xc6,0x5a,0xa7,0x48,0xee,0x7f,0x40,0x67,0x87,0x08,
- 0x5a,0xfb,0x90,0xb8,0x89,0xc8,0x8a,0xf6,0x9b,0x6b,0xa0,0xe3,0x0c,0xf9,0x87,0xd3,
- 0xa5,0x8f,0xed,0xa3,0x0c,0xa3,0x0e,0xab,0xc1,0x01,0x6b,0xe2,0xc4,0x7e,0x38,0xa7,
- 0x7f,0x98,0xf7,0xc3,0x7f,0x40,0xc1,0x6f,0xfb,0x8a,0x3e,0x30,0x10,0xa3,0x8d,0xe2,
- 0x64,0x0c,0x53,0xa5,0xaa,0x5c,0xd9,0x2f,0x6b,0xe6,0x0e,0xa6,0xa6,0x3b,0xf2,0xa0,
- 0xaf,0xc6,0xf4,0x6d,0x2b,0xd0,0x9f,0x97,0x22,0xf3,0x03,0x42,0x05,0x5d,0x33,0xe4,
- 0xe8,0xa4,0xa8,0x2e,0x30,0xe7,0x54,0xa7,0xef,0x76,0xe2,0x2b,0x0d,0x44,0x0a,0x3a,
- 0x03,0xc6,0x6f,0x0a,0x0b,0x71,0xb0,0x44,0xd2,0x58,0xcb,0x71,0x5d,0xed,0x93,0xfb,
- 0x97,0xd0,0xdf,0x68,0xb5,0xd5,0xa7,0xcf,0x40,0xec,0xe4,0xaa,0x74,0x79,0x56,0x9f,
- 0xb8,0xbb,0x66,0x30,0x00,0xd3,0xc3,0xbb,0x06,0x5a,0xa3,0x56,0x8d,0xed,0xcf,0x9f,
- 0xdd,0x4c,0x02,0x08,0x03,0x66,0x43,0x1f,0xf5,0xb3,0x75,0xa2,0xbe,0xd1,0x2c,0xcd,
- 0x94,0xbb,0xf5,0xe7,0xb1,0xc7,0x4a,0xf6,0x0b,0xdc,0x44,0x41,0x50,0x1e,0x51,0x64,
- 0x99,0x4e,0x1d,0x47,0x60,0x92,0xe1,0xa5,0x0b,0xe8,0x1f,0x4e,0x98,0xb1,0x93,0x01,
- 0xab,0x9c,0xee,0x69,0x10,0xfe,0xa1,0x75,0xb1,0x4a,0x88,0x3f,0x0c,0x43,0x1e,0x7f,
- 0x25,0x24,0x93,0xd5,0x3e,0x69,0x34,0xa9,0xab,0xfa,0xfe,0x6a,0x94,0x3f,0x0c,0x4d,
- 0x82,0x08,0x6b,0x3f,0x5b,0xd5,0xa4,0xca,0x03,0x64,0xa3,0xc9,0x44,0x8c,0xb6,0x10,
- 0x5e,0x7d,0x6c,0x11,0x38,0xfc,0x57,0xdc,0xbf,0xbe,0x00,0x7f,0x51,0xfd,0xe5,0x1e,
- 0xe5,0xe3,0x56,0x62,0xbb,0x4a,0x0f,0xb1,0x8f,0xcd,0x23,0x56,0xcd,0xbb,0x9a,0x30,
- 0x52,0x35,0xbf,0xd0,0x5e,0x50,0x6a,0xbd,0x68,0xec,0x11,0xc4,0x4a,0x1b,0x1d,0x2d,
- 0xba,0x0a,0x31,0xbb,0xe2,0x0f,0x73,0xeb,0x61,0x4e,0xff,0x30,0xa3,0x87,0x3d,0xd2,
- 0xa0,0x16,0xef,0x36,0xde,0x2a,0x8c,0x08,0xae,0x35,0x9d,0x8e,0xb0,0x39,0x1d,0x5e,
- 0x61,0x3f,0x77,0x5d,0xc7,0x7f,0x89,0x4d,0x53,0xdd,0xd4,0xde,0x9c,0xed,0xe8,0xb9,
- 0x89,0x76,0xd8,0xe6,0x2c,0xef,0xf1,0xd4,0x78,0x35,0x48,0x18,0xd0,0x13,0x16,0xd4,
- 0x33,0xdc,0xd7,0xa9,0xe3,0x3b,0x94,0xab,0x4d,0x90,0xca,0xc5,0x1f,0xce,0xd8,0xe7,
- 0x84,0xda,0x7e,0x20,0x6a,0x4f,0x07,0x8e,0x8a,0xd8,0xcb,0xd8,0x57,0xd1,0x78,0x8f,
- 0xbf,0x41,0x75,0x4f,0x9e,0x5a,0xfa,0x93,0xc1,0x71,0x2b,0x46,0xfa,0xa2,0x73,0x58,
- 0xaf,0xa7,0x2e,0x6a,0xcf,0xb8,0xd8,0x3a,0x7f,0x8f,0xa7,0x3f,0x87,0xbf,0x74,0x7b,
- 0x5e,0xfc,0x58,0x9f,0x5c,0xd2,0x64,0x7c,0xb1,0xbf,0xfc,0x82,0x77,0xd2,0xd3,0xd4,
- 0xb6,0xaa,0xbf,0x7c,0xcc,0x7b,0xf5,0x4f,0x9b,0x76,0xad,0xca,0x96,0x0f,0xcf,0xb8,
- 0x4a,0x3d,0x7f,0xbe,0x73,0x94,0x5d,0xe1,0x4d,0x55,0x4e,0x5c,0xee,0x6a,0xa1,0xf0,
- 0xe0,0xe0,0x2f,0x47,0xaa,0x68,0x88,0xe2,0x37,0xf4,0x40,0xfb,0xd2,0x73,0x64,0x6c,
- 0xc5,0x05,0x56,0x26,0xce,0x30,0x4a,0xa5,0xf9,0xc0,0x6c,0x30,0xd1,0x71,0x1d,0x22,
- 0x6a,0xcc,0x44,0x20,0x2f,0x12,0xd3,0x5a,0x6b,0x52,0x49,0xfd,0x3a,0xfc,0x35,0x24,
- 0xe2,0x6d,0xe4,0xc1,0xaf,0xa7,0xa1,0x4d,0xe5,0xe2,0x90,0x30,0x98,0x28,0xb5,0xcf,
- 0x0f,0x4d,0x75,0x4f,0x22,0xfb,0xca,0x1b,0xcc,0x68,0x71,0xf8,0x2f,0xd2,0x07,0xa8,
- 0x2b,0xac,0xbf,0x2c,0x4a,0x00,0xa4,0x61,0xad,0x18,0xaf,0x99,0x69,0x08,0x73,0x1f,
- 0x14,0x0d,0x40,0x97,0x37,0x94,0xf2,0x19,0x8c,0x0e,0x8b,0xd7,0x00,0xce,0x8b,0x01,
- 0x68,0xf3,0x86,0xca,0xec,0x95,0x6d,0x2e,0xf8,0x6e,0x62,0xf5,0xf9,0xf8,0x43,0xbb,
- 0xfe,0xd7,0x9b,0xe8,0xf3,0x57,0xbf,0x8b,0xd8,0xea,0x94,0xb9,0x81,0xf8,0xaf,0xf5,
- 0xcd,0xbf,0x69,0xdd,0xfa,0x68,0xc5,0x57,0xd5,0x7b,0xd8,0x3f,0xe9,0x6d,0x69,0x23,
- 0xeb,0xfb,0x6b,0xf6,0x9a,0xf9,0x3d,0xae,0xee,0x71,0xf8,0xaf,0x75,0x78,0xe9,0xa8,
- 0x5b,0xff,0xb0,0xd1,0x2a,0xad,0x67,0x27,0xac,0xff,0x80,0xc6,0x11,0x11,0x7f,0xb8,
- 0x1b,0x1a,0x5b,0x4a,0x17,0x2a,0xaf,0xa0,0xb7,0xdc,0x60,0xfa,0x52,0x5a,0x3b,0x9c,
- 0xcb,0xd4,0xa7,0x4b,0x6f,0xc2,0x4b,0xbd,0x50,0x1f,0x5e,0x29,0xeb,0x7f,0xc5,0x5a,
- 0x4b,0x75,0xb7,0xfe,0xbc,0xe0,0xbf,0xce,0xd3,0xf2,0xa5,0xcb,0x80,0x6a,0xef,0x35,
- 0x1d,0xdd,0xc2,0xd1,0xf2,0x4b,0x33,0xc6,0x11,0x7f,0x95,0xfe,0xaa,0xfc,0x41,0xf3,
- 0xca,0xb4,0xa6,0xcd,0x25,0xbf,0x2a,0x3f,0x8b,0xc3,0xfd,0x29,0x77,0xea,0xb5,0x2d,
- 0xab,0x1d,0x54,0x5a,0xa7,0xd6,0x5f,0x16,0xfc,0x57,0x5d,0xb6,0xa4,0xa7,0xf2,0x7e,
- 0x76,0x82,0x8b,0x9d,0xf1,0x63,0xf8,0xa1,0x12,0xcb,0x96,0x64,0xca,0xc3,0x34,0xa6,
- 0x3d,0xe1,0xd4,0xf4,0x10,0x1c,0x73,0x72,0xfa,0xb0,0xc5,0xf0,0xa7,0xa6,0x7f,0xc0,
- 0xae,0xc7,0x5f,0x82,0xff,0x02,0x9d,0xe3,0xaa,0x5d,0x01,0xc5,0xb8,0x01,0xa9,0xed,
- 0xb0,0x12,0x54,0x13,0x97,0x86,0x03,0xe4,0x51,0xb7,0x16,0x3d,0xcd,0x1e,0xcd,0x47,
- 0x24,0xd6,0x9a,0xb8,0xef,0x5c,0x00,0x17,0xfe,0x12,0x90,0xea,0x6d,0xcf,0xc1,0x4d,
- 0x5f,0x7d,0x47,0x5b,0xff,0xd8,0x57,0x8c,0x0d,0x89,0xaf,0x52,0xdd,0xae,0x53,0xea,
- 0xf7,0xa5,0xda,0xfc,0x6c,0xca,0xf6,0x7a,0x47,0x1d,0x60,0x77,0xd3,0x58,0xe4,0x78,
- 0x46,0x8a,0x3f,0x4c,0x17,0xe2,0xaf,0x13,0x11,0xf6,0xb6,0xf7,0x60,0x7b,0xc5,0x28,
- 0xac,0x9f,0xfb,0x15,0xd8,0x60,0x55,0x0c,0x16,0x7f,0x93,0x12,0xcf,0xbd,0x73,0xce,
- 0xa9,0x93,0xcd,0xff,0xb7,0x7e,0xb0,0x1f,0x91,0x9d,0xb7,0xf9,0x94,0x99,0x64,0x6b,
- 0x2f,0x74,0x38,0x27,0x27,0xe4,0x67,0x5e,0x97,0xff,0xf5,0x41,0xfc,0xb2,0x59,0xc7,
- 0x03,0x3b,0x95,0x35,0xe6,0x71,0xb5,0xee,0x40,0x60,0x9f,0x32,0xcc,0xdf,0xd4,0x63,
- 0xed,0x25,0x7b,0x95,0x79,0xd6,0x65,0x8e,0x88,0xec,0x5e,0xed,0x6f,0xe0,0x78,0xba,
- 0xa9,0x27,0x6c,0x23,0x32,0x12,0xe2,0xb8,0xbe,0xfe,0x57,0x8e,0xed,0xca,0xd8,0x82,
- 0xae,0xc9,0x51,0xef,0xe4,0x67,0x9b,0x66,0x04,0x7a,0x15,0x34,0xf4,0x26,0xba,0x67,
- 0xa7,0xbb,0xfe,0x57,0x6c,0x06,0x82,0xb5,0x1b,0xd4,0xff,0x02,0x84,0x03,0xcd,0x5b,
- 0x84,0x51,0x1c,0x13,0x85,0x6b,0x0d,0x6c,0x59,0x77,0x6b,0x6a,0x77,0x95,0x3a,0xae,
- 0x22,0x64,0xa0,0x88,0xc4,0x63,0x50,0x5f,0xa0,0xd1,0x91,0xb8,0x41,0xfd,0xaf,0xa7,
- 0x6c,0x43,0x64,0x84,0x05,0x6c,0xda,0xeb,0x5b,0xb3,0x53,0xac,0x4a,0x27,0x1c,0x87,
- 0x5b,0xdb,0xe7,0xd9,0x1b,0x38,0xd1,0x4a,0x6c,0x8f,0xfa,0x3e,0x74,0xc8,0x8d,0x1b,
- 0xe4,0x7f,0xbd,0x44,0xe5,0x21,0x06,0xd9,0xa4,0x63,0x5c,0x82,0x9f,0x2b,0xb5,0x66,
- 0xe7,0x20,0x5b,0x08,0x3f,0x27,0x46,0x0c,0xf1,0x57,0xba,0xcd,0x55,0xd0,0xf9,0x5e,
- 0x6c,0x79,0xec,0x3a,0xfc,0xe5,0xb0,0x5d,0xcd,0x5f,0x12,0x86,0x7a,0x77,0xd1,0xeb,
- 0xfc,0x0e,0x34,0x7c,0x7f,0xc5,0x66,0xf0,0x1f,0x13,0xff,0x95,0x61,0x5e,0xbe,0x15,
- 0xaa,0x5a,0xf2,0x91,0x72,0x29,0x36,0xa5,0xfe,0xb2,0xe8,0xba,0x1e,0xb7,0xe1,0xd0,
- 0x5e,0x33,0x34,0xaf,0x46,0x12,0x16,0xd8,0xcf,0x8f,0x6a,0x15,0xe6,0x40,0x6b,0xe3,
- 0x8c,0x70,0xae,0x9f,0xd3,0xca,0xcf,0x3c,0x53,0xf1,0xd7,0xd0,0xb2,0xcf,0xdd,0x64,
- 0xf3,0x5f,0x13,0x7a,0x6c,0x99,0xb2,0xb5,0x7c,0x68,0xd9,0xf8,0x8c,0xd8,0xb2,0x55,
- 0xdd,0x78,0xe9,0x3b,0x54,0x4d,0xaf,0x55,0x79,0xdd,0xbc,0xc2,0xee,0x5a,0x56,0xea,
- 0x8a,0x24,0x74,0xe1,0xaf,0xf7,0x8b,0x24,0x5e,0x9e,0x81,0xe8,0xf8,0xeb,0xfe,0x1d,
- 0xc9,0xb9,0xc6,0x78,0x47,0xf4,0xef,0xff,0xe2,0x07,0xca,0x5c,0xfe,0x06,0x5f,0x70,
- 0x1f,0xb6,0x7c,0x2d,0x74,0x6c,0x6f,0xf4,0xbe,0x55,0x83,0xca,0x97,0xd8,0xab,0x4e,
- 0x8c,0x22,0x3d,0xa7,0xe4,0x06,0xf8,0xab,0x48,0x48,0xf2,0xea,0x25,0xed,0xac,0x02,
- 0x7a,0xcc,0x20,0xa9,0xf5,0x1a,0x7a,0x87,0x77,0x7e,0x4a,0x6d,0x6f,0x36,0xa0,0x63,
- 0x59,0xd0,0xe1,0xbf,0xd0,0xcd,0x10,0x88,0xcc,0xeb,0xae,0xff,0xd5,0xe2,0xaa,0xff,
- 0xc5,0xb6,0xa2,0xd1,0x23,0xf1,0x97,0x41,0x38,0x77,0x1a,0xdb,0x6a,0x0a,0x90,0xb5,
- 0x4c,0xd2,0x5e,0x33,0x85,0x51,0x98,0x11,0x76,0x7d,0xfe,0xd7,0xbb,0x1d,0x14,0x5b,
- 0x68,0x47,0x1b,0x06,0xff,0x7a,0xf9,0x56,0x01,0xe4,0xe7,0xb7,0xa8,0xa9,0xa0,0x90,
- 0x6d,0x31,0x4f,0xe8,0x2c,0x0c,0x1b,0x13,0xce,0xb8,0x7b,0x6a,0x9a,0xd5,0xad,0x6e,
- 0xfd,0x43,0x99,0x93,0xc5,0x7e,0x0f,0xb8,0x5b,0xad,0x57,0x53,0xca,0xe7,0x61,0xdc,
- 0x8a,0xae,0x2b,0xf9,0xc1,0x5f,0x7d,0x9e,0xbf,0x11,0x8f,0xc6,0xfd,0x4f,0x2b,0x7f,
- 0x67,0x1e,0xc3,0x96,0xc0,0x76,0xe5,0x6b,0x09,0xec,0xc3,0xd6,0xb0,0xfd,0x3e,0x3f,
- 0x58,0x7d,0x23,0xfc,0x25,0x41,0xd6,0xaa,0xed,0xb7,0x7c,0x15,0xc6,0x97,0xbc,0x68,
- 0x7e,0x63,0xc7,0x2d,0x43,0xed,0xe3,0xfa,0x0b,0xf1,0x7f,0xd8,0xae,0xbd,0xc7,0xc6,
- 0xff,0xf4,0xc5,0xd6,0x92,0x54,0xf9,0x10,0xff,0xb6,0x4b,0xa3,0xfe,0xbe,0x1b,0xd6,
- 0xff,0xb2,0x60,0xd8,0x13,0x81,0x22,0x28,0x4f,0xcf,0xc8,0x42,0x3d,0x94,0x82,0xc2,
- 0x61,0xb0,0xa8,0xfe,0xa6,0x2f,0x52,0xa2,0x77,0x16,0x1a,0x28,0x85,0xb3,0x0d,0x06,
- 0x78,0x2c,0xe2,0xbc,0x3f,0x10,0x4e,0x14,0xe8,0x1f,0x8a,0xfa,0xcb,0x45,0x52,0xff,
- 0x90,0x88,0x30,0xcf,0x9b,0x0e,0xff,0x75,0x18,0x2a,0x33,0x25,0x69,0x44,0xd0,0x82,
- 0xff,0xca,0xfa,0xea,0xe1,0x6d,0xb5,0x36,0xed,0x44,0x24,0x92,0x34,0xc7,0x75,0xf8,
- 0x2b,0xb8,0x19,0xb7,0x89,0x21,0x5c,0xd0,0xa2,0x9b,0xfd,0xdd,0x2c,0x84,0x3b,0x5a,
- 0x11,0x85,0x9f,0x85,0x3e,0xed,0xa4,0x38,0xb4,0xdd,0xde,0x35,0xb4,0xc7,0x6d,0x26,
- 0x89,0x86,0xac,0xbd,0x7f,0xd5,0xe8,0xea,0xc2,0x1c,0xfe,0x02,0x57,0x3a,0xd2,0x06,
- 0x2e,0x74,0x14,0x11,0xac,0x81,0x70,0xe3,0x05,0x11,0x66,0xa9,0x0b,0xd0,0xc0,0x96,
- 0xac,0xba,0x1a,0x77,0x3d,0x04,0x62,0x7d,0x4e,0x44,0x22,0x05,0x93,0xbb,0xf4,0x0f,
- 0x89,0xc9,0xd2,0xd6,0x2b,0x4f,0xc0,0x7f,0xb4,0xdf,0x71,0xae,0x74,0xbd,0xf2,0x23,
- 0xfd,0x20,0x82,0xac,0xb7,0xd7,0x57,0xfe,0x48,0xff,0x94,0xdf,0x99,0xee,0x7c,0x28,
- 0xf9,0xc4,0xb4,0xdf,0x27,0xef,0xcc,0x3e,0xf1,0xc1,0xd2,0x1f,0x79,0x49,0x76,0x63,
- 0x96,0x5d,0xff,0x0b,0x31,0x5a,0x8e,0xff,0x9a,0xe5,0x8a,0x93,0x21,0x6d,0xf0,0x52,
- 0xd2,0x7f,0x26,0xd9,0xc3,0x5b,0x72,0x6e,0xfc,0x81,0xdc,0xa9,0xfe,0xd2,0x21,0x57,
- 0x85,0x5f,0x36,0x55,0xff,0x50,0xd4,0xff,0x92,0x2e,0x5f,0xdd,0xd0,0x86,0xb1,0x8a,
- 0xab,0x7c,0x22,0x5d,0x3a,0x82,0xc6,0x23,0xd2,0x09,0xec,0x12,0xa1,0x89,0xb1,0x93,
- 0x25,0x63,0xc9,0x59,0xfc,0x14,0xbf,0xcb,0x08,0xdb,0xfe,0xa1,0x51,0xf2,0x6d,0xb7,
- 0xfe,0xc6,0x45,0x5e,0x4d,0xe7,0xa2,0x9b,0xe1,0xa0,0x6e,0xd8,0xdc,0x96,0x5d,0xff,
- 0xcb,0x3c,0xb8,0xad,0xc4,0xab,0x8e,0xb3,0x59,0x66,0xb7,0x1e,0x7e,0x5f,0x8b,0xb3,
- 0x1d,0xf0,0x18,0x0f,0xe7,0xf6,0xaf,0xcf,0xa1,0x71,0x7d,0xfd,0x65,0xba,0x34,0xa7,
- 0x5f,0xfb,0x26,0x3b,0xbb,0x5d,0xf4,0xfc,0xed,0x14,0x76,0xe8,0x45,0x30,0xfb,0x80,
- 0x0c,0x71,0x3c,0xa9,0xf5,0xa2,0xf1,0x98,0xec,0xde,0xb3,0xd8,0xe1,0xf3,0xe0,0x0b,
- 0xeb,0xca,0xda,0xf3,0xf8,0x6b,0xb7,0xf4,0x5b,0x4e,0x99,0xdd,0x83,0x55,0xa4,0xfa,
- 0x7b,0x8a,0x77,0x93,0xe8,0xfd,0x9d,0xac,0xd4,0xec,0x4e,0x84,0xd3,0x2d,0x77,0x92,
- 0x6c,0x6f,0x0a,0xa1,0x62,0x84,0xb5,0x43,0x22,0x1f,0xb7,0x53,0xb3,0xae,0x25,0xc2,
- 0x76,0xe4,0xe3,0x0f,0x65,0xea,0x93,0x08,0x29,0xac,0x7b,0x27,0x70,0xf4,0xe5,0x4f,
- 0x8c,0x89,0x63,0xb1,0x0b,0xd8,0xbd,0xd8,0xe1,0x27,0x63,0x17,0xbc,0x97,0x58,0xad,
- 0x81,0x7e,0xf8,0x85,0x92,0x75,0x4a,0x2d,0x3b,0xa6,0x36,0x58,0xb6,0x7f,0xd8,0x70,
- 0x77,0x49,0x46,0x7b,0xf6,0x3a,0xfc,0xb5,0xcf,0x98,0xa8,0x68,0x10,0x6c,0x97,0x67,
- 0xa2,0x22,0x36,0x40,0x46,0x64,0xc2,0x88,0x0d,0xd4,0x12,0xff,0x35,0x51,0x85,0xbe,
- 0x28,0xee,0x95,0xa9,0x71,0x53,0xa4,0x86,0x89,0xfa,0x5f,0xf7,0xd4,0x1e,0x50,0xbe,
- 0x7a,0x1d,0xfe,0x3a,0x0b,0x2f,0x0b,0x92,0xab,0x72,0x96,0xff,0x97,0xca,0xed,0xd6,
- 0xe6,0x75,0xe5,0x44,0x7b,0x7d,0x33,0x33,0x6b,0x9d,0xf2,0x65,0xc9,0x7f,0x65,0x95,
- 0x7a,0x78,0x95,0x0c,0x87,0x97,0xf1,0x0f,0x7a,0xb2,0x2e,0xfc,0xc5,0x0a,0xf8,0xaf,
- 0xe9,0x6b,0xd1,0x99,0x0c,0xf6,0xaa,0x99,0x66,0xe2,0xad,0xfe,0x91,0x70,0x13,0x1a,
- 0x5e,0x6a,0xa9,0x5c,0x01,0x6f,0x8c,0xd6,0x59,0x21,0xdb,0x3f,0x1c,0x55,0xbb,0x6e,
- 0xa4,0x7f,0xe8,0xe9,0x84,0xfb,0xac,0x2f,0x64,0xee,0x0e,0xcf,0x20,0xb6,0x6b,0x87,
- 0xf8,0xf8,0xb4,0xe0,0x12,0xa2,0xbd,0x8a,0xed,0x3a,0x50,0x35,0xf0,0x24,0x9b,0x9f,
- 0x8b,0xb3,0x8a,0x87,0xba,0x0a,0xf0,0x97,0x29,0xf9,0xca,0x15,0x49,0x6f,0xd6,0xda,
- 0x48,0x89,0x7b,0x49,0xc3,0xe8,0xdb,0x21,0xe8,0x69,0x95,0xc8,0x97,0x4d,0xfe,0xe2,
- 0xa4,0x9e,0x1d,0x28,0x36,0x7c,0x6b,0xe0,0xc9,0x0a,0x51,0x5e,0x56,0xfa,0x1b,0xa1,
- 0x42,0xfd,0xc3,0x78,0x4d,0xaf,0xf6,0xbc,0xf2,0x11,0xf9,0xc6,0x67,0xaa,0x33,0xbe,
- 0x30,0x7b,0x0b,0xba,0x06,0x70,0x50,0xc2,0xe6,0x09,0x23,0x0d,0xa1,0x51,0x26,0xd3,
- 0x88,0xaa,0xb9,0x12,0xc2,0x4b,0x3d,0x90,0x8b,0x1f,0xf3,0xa7,0x96,0xba,0xf1,0x57,
- 0x3c,0x4f,0x69,0xbd,0x59,0x4a,0x82,0x93,0x32,0x62,0xaa,0x72,0x32,0x25,0x15,0xf6,
- 0xa6,0x1f,0x25,0x21,0xc4,0x57,0x4a,0xd7,0xa1,0x0f,0x39,0xa1,0x2f,0x70,0xe5,0x7f,
- 0x65,0x6f,0xc0,0x7f,0x51,0xda,0x97,0xd0,0x17,0x1d,0x25,0x6d,0x0d,0x58,0x65,0x2d,
- 0x25,0x45,0xc4,0x05,0x20,0xe3,0x7b,0xf9,0x22,0xca,0x08,0x6b,0x14,0x37,0x6f,0x11,
- 0x2d,0x89,0x05,0xd6,0x8d,0xf8,0x2f,0xec,0xba,0x1f,0x40,0x78,0x40,0x70,0x5b,0x9d,
- 0xd4,0xc2,0x99,0xdf,0x3b,0xce,0x83,0xb9,0xfc,0xaf,0x78,0x68,0xaf,0x72,0x7f,0x5e,
- 0xac,0xbe,0x1b,0x7b,0xbe,0x85,0x50,0x52,0x01,0xfe,0x92,0xa1,0xb6,0x0e,0x10,0xdb,
- 0x4d,0x55,0xec,0xa9,0x10,0x18,0xf1,0x5f,0x0e,0x9f,0x82,0xa8,0xb6,0x59,0x80,0x62,
- 0xa7,0x52,0xf9,0x5e,0x4b,0xbd,0x2e,0xfe,0x50,0xc8,0xfa,0xfd,0x40,0x26,0x00,0x0e,
- 0x19,0x9d,0x70,0x7f,0x5a,0xe3,0x89,0x1a,0x0a,0xda,0x2f,0x72,0x46,0x99,0x4e,0x38,
- 0xd7,0x7a,0xee,0xb2,0x5f,0x12,0xef,0x11,0xf8,0x3a,0x7d,0x1f,0x57,0xfe,0x97,0xe4,
- 0xbf,0x96,0xa2,0xd1,0x21,0xcb,0x04,0xd0,0x39,0x52,0x45,0xa0,0x47,0x99,0xaf,0x5e,
- 0x84,0xae,0x51,0x27,0xbe,0x37,0xee,0x27,0xbc,0x4c,0x7a,0x17,0xf6,0x49,0x45,0x03,
- 0x39,0xd2,0xb6,0xfe,0xea,0x68,0x8e,0xff,0xaa,0x94,0xb2,0xf3,0x38,0x16,0x96,0x49,
- 0xea,0x0d,0x81,0x87,0x3b,0x27,0x71,0x69,0x68,0xcc,0x3a,0x95,0xf2,0x5a,0x03,0x26,
- 0x71,0x64,0xde,0xef,0x5a,0x36,0x23,0x76,0x07,0xd5,0x9c,0x1a,0xb3,0xbf,0x4f,0x9e,
- 0xff,0x1a,0x31,0x4e,0x98,0xc2,0x57,0x1f,0xa6,0xf3,0x16,0xee,0x3f,0xa0,0x54,0xc1,
- 0x71,0x4a,0x64,0xb6,0xf9,0x2f,0x1e,0x48,0x91,0xf0,0x4e,0x2e,0xe4,0x20,0x18,0xc5,
- 0x89,0xef,0xd4,0xff,0x3a,0xe3,0xe2,0xbf,0x60,0x93,0x5e,0x63,0x95,0xe4,0xce,0x2e,
- 0x0e,0x34,0xd7,0xf0,0x0e,0x23,0x1f,0x6d,0x38,0xa3,0x33,0xcd,0x1a,0xf3,0x64,0xf4,
- 0x11,0xf3,0x39,0x2a,0x50,0x1e,0x2d,0xc4,0x5f,0x38,0x04,0xa7,0x4d,0x0e,0xf6,0x1a,
- 0x85,0x9b,0x14,0xb4,0x78,0xd9,0x13,0x06,0x77,0xf1,0x95,0xe9,0xc2,0x52,0x6e,0x47,
- 0x70,0x93,0xc2,0x4b,0x11,0x39,0x2d,0x32,0x79,0xfc,0xf5,0x36,0xe9,0xa2,0x13,0x0a,
- 0x20,0x20,0xf6,0x8d,0xb8,0xda,0xc2,0x7e,0xd4,0xfa,0xe8,0xeb,0x15,0x86,0x6a,0xe7,
- 0x7f,0xc5,0x6f,0x59,0x43,0xda,0x11,0xed,0xe2,0xe6,0xaf,0xf0,0x83,0x29,0x11,0x88,
- 0xa8,0xca,0xe7,0x08,0xfe,0x4b,0xc6,0x1f,0x7e,0xcc,0x2d,0x68,0x1c,0xf6,0x47,0x97,
- 0xf6,0xb3,0xa5,0xd0,0x08,0xd8,0x2d,0x5b,0x12,0x7d,0x7a,0xc6,0xf2,0x4a,0x45,0xc4,
- 0xc6,0x5d,0x01,0x3d,0xe9,0x67,0x17,0x09,0xa3,0xdd,0xae,0x9c,0x82,0x8b,0x7b,0xeb,
- 0xa8,0x33,0xcb,0x8a,0xf2,0xf8,0x0b,0x6e,0x15,0x43,0xd0,0x3c,0x29,0xcb,0x3a,0x5c,
- 0x12,0xf5,0xb2,0x45,0x1e,0xeb,0x98,0xde,0xd4,0xef,0xcc,0x26,0x08,0xdc,0x4b,0xb1,
- 0x07,0x37,0x39,0xe4,0xa6,0x7e,0x97,0x8c,0x3f,0x34,0x6c,0xfc,0xe5,0xa5,0xda,0xca,
- 0x22,0xa4,0xf0,0x18,0xef,0xb2,0xc3,0x0e,0xbd,0xc2,0x03,0x09,0xc3,0x87,0x2c,0x9a,
- 0x5d,0xe9,0xcc,0x6e,0x74,0x7b,0x04,0x10,0xa3,0xb0,0x55,0x4a,0x05,0x8d,0x52,0x6a,
- 0xe1,0xf5,0xfc,0xd7,0x59,0x78,0x5c,0xea,0x1b,0x9f,0x81,0x83,0x6c,0x0e,0xc9,0x1e,
- 0x36,0xc2,0xaf,0x68,0x7f,0x97,0x5b,0x12,0xba,0x73,0xc0,0x6e,0x75,0xe7,0x77,0x57,
- 0x0c,0xe0,0xa5,0xd7,0xdc,0xf8,0x4b,0xf6,0xb3,0xda,0x2e,0xa5,0xfb,0x65,0x6d,0x65,
- 0x52,0xe4,0x30,0x7e,0xe2,0x6a,0x49,0xab,0xf7,0xd8,0x1a,0x1d,0xb6,0xce,0x49,0xc5,
- 0x08,0x0e,0xca,0xf5,0xfc,0xd7,0x08,0x70,0xcb,0xb0,0x3a,0xc4,0x46,0x06,0x61,0x5d,
- 0x5b,0xe8,0x2b,0xed,0xe0,0xcd,0xc6,0xa0,0x33,0xee,0xd0,0x31,0x2f,0xe8,0x1e,0x77,
- 0xfa,0xaa,0x19,0xf6,0xe6,0x75,0xf8,0x6b,0x18,0x4e,0x9d,0x89,0x72,0x3f,0x71,0x5b,
- 0x87,0x69,0xf9,0x22,0x22,0xec,0x67,0x19,0xda,0x09,0x6d,0xfe,0xcb,0x3f,0xa4,0x15,
- 0x68,0x74,0x44,0x45,0x21,0x30,0xcf,0x54,0xfc,0x75,0x4e,0x24,0xef,0x0b,0x07,0x6f,
- 0x0c,0xea,0x58,0xa0,0x2d,0x99,0x55,0x47,0xa5,0x78,0x75,0x3e,0xff,0xcb,0x45,0x96,
- 0x79,0x45,0xec,0xdc,0x6b,0x72,0x5e,0xb8,0xf1,0x17,0x97,0xb5,0x95,0x97,0xda,0x7a,
- 0x71,0x33,0x95,0x2a,0x21,0x44,0x6f,0x7b,0x95,0x8d,0x2d,0x22,0xb4,0xf5,0x98,0x92,
- 0x73,0x4a,0x1f,0x88,0x6b,0x85,0xf5,0xbf,0x6c,0xdc,0xc4,0x37,0xe6,0x0a,0x31,0x93,
- 0xf1,0x74,0x70,0x2e,0x3b,0x06,0xbb,0x72,0x2c,0xd5,0xfa,0x50,0x8a,0xf2,0xb6,0xf2,
- 0xa1,0x89,0xc1,0x75,0x68,0x18,0xf2,0x7d,0x76,0xd5,0x5f,0xc6,0x8f,0xeb,0xf9,0xe7,
- 0x58,0xda,0xd6,0x44,0x91,0xf1,0xd4,0x8c,0xa0,0x53,0x6d,0xb9,0xc6,0xec,0xd8,0x21,
- 0x29,0xb6,0xdc,0x73,0xee,0x59,0x91,0x2a,0xac,0xff,0x25,0x71,0x41,0x73,0x52,0x0f,
- 0x2f,0x93,0x9c,0x8b,0x77,0xad,0x20,0xc2,0xcc,0xad,0xdc,0x15,0x05,0x07,0x33,0x7d,
- 0xde,0xb4,0x28,0xe7,0x41,0x2d,0xdd,0x90,0x5e,0xae,0xe9,0xbe,0xeb,0xf1,0x57,0x2f,
- 0x0c,0xac,0x89,0xe9,0x04,0xbb,0x88,0xff,0xf2,0x05,0x1e,0x4b,0x56,0x4c,0x3b,0x33,
- 0x2f,0xaa,0x39,0xfd,0xec,0xa3,0x1c,0x31,0x3e,0xe0,0xf4,0xf3,0x68,0xab,0x31,0x2b,
- 0xc0,0xb5,0x9a,0xe9,0xd7,0xe1,0x2f,0xe2,0xbf,0x5a,0x3a,0x65,0x6d,0x2f,0xaa,0xb6,
- 0x2c,0xf4,0x0f,0x9d,0x68,0x43,0x99,0xed,0x25,0xb0,0xb0,0x5b,0xf3,0x21,0xf9,0xb1,
- 0x5b,0x7f,0xde,0xc5,0x7f,0x39,0xf7,0x2c,0x99,0x45,0x44,0xd8,0xab,0xde,0x1c,0x3b,
- 0x29,0xd4,0x0e,0x1d,0x30,0x42,0xa9,0x61,0x52,0x7f,0xfe,0xd4,0x75,0xfc,0x97,0x85,
- 0x4e,0xbb,0x91,0x67,0xbb,0x4a,0x08,0x6d,0x9d,0x81,0xfb,0x9c,0x44,0xb0,0x1a,0x78,
- 0x3c,0x1d,0xcc,0xe6,0xcf,0xac,0xec,0x88,0xc4,0x57,0xe0,0x3a,0xfc,0x55,0x10,0x5b,
- 0x78,0xaf,0x14,0x99,0xe7,0x46,0x9c,0x84,0xe8,0xbd,0xfb,0x3d,0x6b,0xe3,0x04,0xbb,
- 0x18,0x49,0xd3,0xdf,0xa2,0x7f,0x56,0xe6,0x7f,0xdd,0x72,0x23,0xfe,0x8b,0xd4,0xe6,
- 0x83,0xf4,0x02,0xbc,0x2b,0x22,0x5a,0x43,0xc4,0x9f,0xfe,0xd0,0x10,0x24,0x97,0x1c,
- 0xf7,0x8d,0xdb,0x9c,0x57,0x2b,0x05,0x43,0xb0,0xdf,0x33,0x77,0x89,0xd0,0x9f,0x17,
- 0xcf,0x29,0xe0,0xbf,0x8e,0x99,0x51,0x19,0x72,0x49,0x2d,0xea,0x36,0xed,0xf3,0xfc,
- 0x98,0xb9,0xcb,0xe9,0x9f,0xd8,0x83,0x7e,0xc4,0x4d,0xec,0x5f,0x25,0x58,0xcb,0xa9,
- 0xfa,0x0f,0xdb,0xf5,0x92,0x0a,0xf1,0xd7,0x8b,0xce,0x01,0x45,0x23,0x05,0x19,0xbe,
- 0x6b,0xd8,0x55,0xd5,0xc4,0xbc,0xa0,0xf0,0xc5,0x7e,0xef,0x75,0xfa,0x1b,0x36,0x6e,
- 0xca,0xe3,0xaf,0x2c,0x1f,0x68,0xe9,0x12,0x22,0x1b,0xde,0x33,0xe4,0xf3,0x7b,0xff,
- 0xca,0xd0,0x2d,0x3d,0x02,0xb3,0xf2,0x14,0xb6,0x46,0x7a,0xb0,0x4e,0x8c,0xab,0x1e,
- 0x9b,0x92,0xff,0x65,0x47,0x12,0x5e,0x16,0xb9,0x5d,0x84,0xad,0xf4,0x4d,0x45,0x52,
- 0xff,0xd0,0xfb,0x04,0xec,0xe2,0xf5,0xe9,0x32,0x99,0xff,0xa5,0x0d,0x23,0x22,0x7b,
- 0xd3,0x11,0xeb,0x78,0xa2,0x57,0xa8,0x26,0x4a,0x98,0xe2,0xe6,0xbf,0x4e,0x43,0x47,
- 0xab,0xcd,0x7a,0x88,0xc8,0x6a,0x48,0x84,0x19,0xe7,0x62,0x65,0xa3,0x75,0x6c,0x6d,
- 0x58,0xf3,0xf7,0xf9,0x1d,0x45,0x7a,0xdc,0xe3,0x06,0xc2,0x59,0xf4,0x52,0x58,0x21,
- 0xff,0x45,0x9a,0x0f,0xb8,0xeb,0x55,0x0c,0xab,0xeb,0x9a,0xdf,0x96,0x11,0xe3,0xcb,
- 0x8a,0x66,0x48,0x20,0x66,0xa3,0x2d,0x53,0xbb,0x27,0xe1,0x17,0x44,0x18,0x85,0xde,
- 0xd1,0x3d,0xa3,0xc5,0x0f,0xe1,0xfe,0x25,0xe6,0xa9,0xab,0xfe,0xf2,0xdb,0xac,0xbf,
- 0xed,0xf6,0xff,0xf0,0x13,0xb7,0x25,0xf4,0x0f,0x67,0x6a,0x0d,0x22,0xdb,0x4b,0xc5,
- 0x4b,0xde,0x4f,0xdb,0x16,0x1b,0x81,0xd0,0xd2,0xd9,0xf0,0xe7,0x8e,0xfe,0xc6,0x2b,
- 0xe8,0x98,0x55,0x4f,0x2a,0x3e,0xb9,0x7f,0xb9,0xf4,0x37,0xb2,0xa4,0x33,0xf9,0xba,
- 0x90,0x31,0x17,0x27,0xc9,0x14,0x06,0xe0,0x8e,0x5e,0x83,0x92,0xd4,0xd2,0xbc,0xf8,
- 0xb9,0x58,0x60,0x4b,0xaf,0xd7,0x9f,0x1f,0x2b,0xbf,0xa0,0x9f,0x4c,0x75,0x89,0x22,
- 0x5f,0xde,0xd3,0x74,0x62,0x3f,0x80,0xb0,0x6b,0x84,0x44,0x0e,0x7b,0x84,0x7f,0x18,
- 0x33,0xfc,0xd8,0xc2,0x3e,0x49,0xd8,0xc9,0x2c,0x76,0xfd,0xe5,0x33,0x39,0xfe,0x0b,
- 0xfb,0x50,0xfc,0xe4,0x91,0x65,0x8f,0x46,0x82,0x43,0x3e,0xc4,0x4d,0xfc,0x97,0x14,
- 0x7f,0x68,0x32,0x83,0x6f,0x48,0x55,0x5b,0xd3,0x1e,0x12,0xd9,0xca,0xe1,0xbd,0xea,
- 0xbd,0x24,0x57,0x98,0x6e,0xa4,0x9b,0x4f,0xa1,0x13,0x58,0x6b,0x52,0xfd,0x65,0xb0,
- 0x57,0x44,0xd7,0x39,0x64,0xfb,0x17,0x2a,0x48,0x87,0xea,0xa4,0x94,0xf7,0x07,0x36,
- 0xcb,0xfb,0x0c,0x79,0x20,0x32,0xb2,0x31,0xec,0x47,0x9c,0x4b,0xb2,0x87,0x79,0x9d,
- 0x93,0x7e,0xf5,0x06,0xfa,0xf3,0xcc,0x52,0x69,0x94,0xd1,0xab,0x7c,0x95,0x06,0x77,
- 0x50,0x54,0xb4,0x4c,0x9a,0x42,0x7f,0x9e,0xee,0xf1,0x83,0x6a,0x30,0x3f,0xdb,0xed,
- 0xe8,0x6f,0xf4,0x40,0xb8,0x0d,0xf7,0x2f,0x3b,0x8e,0xc8,0xc5,0x7f,0x8d,0xb0,0x13,
- 0x7c,0x81,0xb5,0x39,0xb3,0x94,0x1c,0xfb,0x9a,0x41,0xdc,0xa4,0xe6,0xc0,0xfb,0x3a,
- 0x29,0x9b,0x89,0x7e,0x9e,0x9d,0xd9,0xbc,0x59,0x23,0x59,0xec,0x1a,0x27,0xe0,0x13,
- 0x7d,0xb6,0x51,0xe5,0x03,0x67,0x5f,0xce,0x9f,0xd3,0x7a,0x2f,0xdb,0x5c,0x24,0x17,
- 0x1a,0x6e,0x7b,0xb4,0xf7,0xf8,0xb8,0x95,0x1b,0xaf,0xc6,0x35,0x01,0xa8,0x74,0xd2,
- 0x5b,0xec,0xe7,0xa0,0x61,0xf3,0x56,0x2e,0xfc,0x25,0x6a,0xfe,0x4a,0x20,0x76,0x9a,
- 0xea,0x96,0xae,0x53,0xea,0xcd,0x5f,0xf0,0x7c,0xb4,0xa1,0xd7,0xff,0xb4,0xe2,0xb7,
- 0x83,0x15,0x19,0x25,0xb9,0x2f,0x58,0xed,0x1f,0x2d,0x87,0x2f,0xe5,0xf0,0xd7,0x0f,
- 0x1d,0xfe,0xe2,0xb0,0x65,0x6b,0x62,0x08,0x27,0x70,0xaf,0x2f,0x04,0x1b,0x07,0xf3,
- 0x51,0x82,0xba,0xfa,0x34,0x22,0xa9,0xb7,0x1c,0xff,0xb0,0x27,0x15,0x8c,0xa2,0xff,
- 0x6c,0x5c,0xc7,0x7f,0x65,0x29,0xf9,0x28,0xc7,0x6d,0x91,0xfe,0xa1,0xd0,0x01,0xce,
- 0x3d,0x67,0x50,0x6d,0xc7,0xe7,0x3c,0x97,0xd7,0xe8,0x30,0xc8,0x05,0x35,0xe4,0xfc,
- 0x42,0xfc,0xe5,0x92,0x49,0xf1,0x86,0x4f,0x76,0xda,0x7e,0x26,0x11,0x61,0xc0,0xda,
- 0x8c,0xb4,0x0c,0x4d,0xec,0x5e,0xb6,0xf6,0x4c,0x08,0xfd,0xcc,0xd2,0x27,0x55,0x79,
- 0x33,0x4f,0x49,0x17,0xd4,0x9e,0xef,0x02,0x7f,0x99,0x72,0x5e,0x98,0x63,0xd0,0x74,
- 0x5c,0x74,0xf8,0x09,0xd2,0x0f,0x47,0xef,0x4b,0x44,0x1f,0x69,0x5d,0x02,0x4a,0xc7,
- 0x6e,0xf6,0x73,0x8d,0x64,0xc3,0x69,0xee,0x50,0x4b,0x6b,0x97,0x89,0xfe,0x33,0x14,
- 0xc9,0x78,0x2d,0xc4,0x5f,0xbf,0x0b,0x89,0xee,0x1d,0xe5,0xe8,0x1f,0xba,0xb0,0x95,
- 0xa5,0x8c,0x19,0xe3,0xa6,0x5d,0x9f,0xe8,0x9a,0x2c,0x85,0x33,0xe9,0x04,0x53,0x7d,
- 0x64,0x5c,0xaf,0x3f,0x9f,0xc3,0x5f,0xd7,0x0c,0x1c,0xa6,0x0b,0x4a,0xa3,0x71,0x4d,
- 0x6d,0x3a,0x7e,0xfa,0xc2,0xae,0x46,0xcf,0x44,0xae,0x82,0x76,0xa8,0xe9,0xb8,0x4c,
- 0xd3,0x03,0x8a,0xf8,0x65,0x57,0xe1,0x8a,0xe7,0x26,0x63,0xd5,0x20,0xb8,0xea,0x7f,
- 0x4d,0x08,0x48,0xa5,0xfc,0x0c,0x5e,0xc2,0xcf,0x04,0x26,0xd9,0x4b,0x68,0xd4,0x8e,
- 0x6a,0x93,0xec,0xe7,0xf0,0x49,0xbc,0x72,0xf4,0x96,0x49,0x76,0xcd,0xf3,0x92,0xd5,
- 0x34,0xaa,0x5d,0x61,0xd7,0x48,0x08,0xd1,0xd6,0xdf,0x48,0xa0,0xb1,0xa3,0xa0,0xfe,
- 0x97,0xe8,0xe7,0xbb,0x4f,0x7a,0xbb,0x75,0x3f,0x1d,0x6b,0xf8,0x9d,0x0c,0xa3,0xc7,
- 0x11,0x02,0xa7,0x07,0xb5,0x85,0x64,0x40,0x4e,0x0b,0xc5,0x8e,0x10,0xd8,0x4f,0x13,
- 0x44,0xbf,0xbe,0xfe,0x57,0x33,0x19,0x73,0x7b,0x97,0x4b,0x03,0x91,0x6f,0xc6,0xdc,
- 0xe7,0x08,0xb9,0x88,0x71,0xef,0x95,0xd2,0xeb,0x4e,0x8d,0xef,0x9e,0x8e,0xf9,0xf8,
- 0x7d,0x82,0x91,0xc2,0xfc,0xaf,0x12,0xfb,0x68,0xc8,0xea,0xcc,0x54,0xa2,0x93,0xcc,
- 0xc8,0xa3,0x46,0xe3,0x08,0x8b,0x5a,0x4a,0xa6,0x72,0x9f,0x4a,0x67,0x20,0x5b,0x32,
- 0x7f,0xeb,0x0a,0xa8,0x9e,0xe0,0x0d,0xd9,0x55,0x3b,0xca,0x5d,0xf5,0x97,0x3f,0x91,
- 0x43,0x60,0x03,0xb1,0x75,0xce,0x78,0x65,0xda,0xa4,0x10,0xbd,0xac,0x42,0xee,0xbd,
- 0x45,0x76,0xf8,0x41,0x68,0xea,0x15,0xc6,0x05,0x52,0x44,0x34,0x92,0x37,0xd4,0x3f,
- 0x64,0x39,0x3d,0x46,0x01,0xb2,0xd6,0x8a,0x3a,0x11,0x5b,0x32,0x41,0x92,0xd1,0xab,
- 0xc1,0xa5,0xa0,0x92,0x14,0x1e,0x9c,0xef,0x13,0x6f,0xc8,0x9e,0xe4,0x8a,0xab,0xfe,
- 0xd7,0x87,0xf6,0xab,0xae,0xfe,0x0b,0x1d,0xa7,0x8f,0xca,0x73,0xf5,0x5e,0x5c,0xac,
- 0x1a,0x61,0x0b,0x19,0x76,0xcb,0x70,0xc9,0x28,0x3b,0x8a,0xfd,0x53,0x97,0x4b,0x16,
- 0xb3,0xd4,0x9f,0xb8,0xf0,0x97,0x5e,0xe9,0x96,0x34,0xd4,0x72,0xfb,0x17,0x1a,0xde,
- 0xe7,0x3c,0xc4,0x02,0x3b,0xfa,0x87,0x54,0xa2,0x77,0xbf,0x9e,0x1b,0x2f,0x63,0x23,
- 0x7a,0x20,0x0d,0xf9,0xfc,0xaf,0x67,0x9c,0xbc,0xa4,0xef,0xf3,0xea,0x11,0x61,0x2c,
- 0xe2,0xd5,0xe7,0x3a,0xbf,0xdd,0xf7,0x23,0xc1,0xc2,0x24,0x1d,0xd9,0xc3,0xe2,0x3b,
- 0x45,0x8e,0xd8,0x1c,0x89,0x0b,0x0e,0x74,0xec,0xce,0xaa,0x7f,0x8d,0xdf,0x59,0x7c,
- 0x1f,0xc2,0x5f,0xff,0x61,0xe7,0x7f,0xc9,0xda,0xca,0xb7,0x2b,0x27,0x4d,0x44,0x5b,
- 0x64,0x8c,0xb4,0xec,0xc6,0x55,0x7d,0xc3,0x9d,0xb8,0x62,0x5f,0xd4,0x1b,0x87,0x1f,
- 0x8f,0xe0,0xfa,0x73,0x71,0xdb,0xba,0x01,0x71,0xf3,0x79,0xa8,0xb7,0x56,0xe6,0xf9,
- 0xaf,0xcf,0x51,0x6c,0x61,0x93,0xb5,0x94,0xba,0xee,0x77,0x4b,0x28,0xb6,0x70,0xe9,
- 0x15,0xa9,0x3f,0x7f,0x5e,0xf9,0x86,0x71,0xad,0x15,0x07,0xee,0x0f,0xca,0x15,0x5a,
- 0x0f,0x5f,0xa7,0x31,0xf5,0x7c,0xea,0xb5,0x83,0xc0,0xc7,0xa8,0x2a,0x44,0x2a,0x97,
- 0xff,0xe5,0x71,0xf3,0x5f,0xe6,0x23,0x03,0xfe,0x2e,0x12,0xde,0x31,0x62,0x03,0x81,
- 0x28,0x95,0xc9,0x36,0x1f,0x18,0x08,0x1c,0x50,0x7e,0x4a,0x2d,0x83,0x81,0xc3,0x4a,
- 0x38,0xbf,0x33,0xa2,0xff,0x93,0x5d,0x99,0xf2,0xcc,0x9f,0xa2,0x7f,0x68,0x07,0xb7,
- 0xbf,0xe6,0x7b,0x30,0x71,0xd6,0x73,0xb0,0x65,0xf1,0x6b,0xda,0x83,0xc9,0x2f,0xf3,
- 0x83,0xf7,0xdd,0x71,0x3c,0x20,0x4a,0xa2,0xcc,0xab,0x1e,0x08,0x3c,0xb0,0x9b,0xb4,
- 0x79,0xed,0x9b,0x0f,0xc0,0x4e,0x4b,0x35,0x3f,0xeb,0xd2,0x9f,0xcf,0xc9,0x1e,0x1e,
- 0x4c,0x85,0xdf,0xef,0x78,0x88,0xbd,0x6d,0x22,0xaa,0x1d,0xd6,0x1e,0x0a,0x8a,0x12,
- 0x6c,0x43,0x9d,0xdf,0xa6,0x96,0x54,0xf5,0x90,0x76,0x27,0x9b,0x6d,0xe5,0x92,0xf2,
- 0xf6,0xf3,0x9d,0x59,0x55,0x2d,0x35,0xae,0xc3,0x5f,0xb9,0x1a,0xe8,0x8e,0x48,0x54,
- 0x91,0x1f,0x16,0xe0,0x5f,0xf2,0x45,0xe0,0xa4,0xba,0x00,0xfc,0x96,0xd0,0xf8,0xcd,
- 0x6b,0x99,0x42,0xfc,0x92,0x5a,0x54,0x53,0x76,0x03,0xfc,0x25,0xc2,0x0e,0xf3,0xda,
- 0x86,0x3e,0x42,0x5b,0x0c,0xbd,0x26,0xcf,0x30,0x3c,0x84,0x6e,0x99,0xd0,0x48,0xbc,
- 0xe0,0xdc,0x7c,0x15,0x16,0xa4,0xfc,0x43,0x4a,0x34,0xc7,0x7f,0xe5,0xe2,0x9a,0xd4,
- 0x31,0x7c,0x1b,0x02,0x20,0xf0,0x17,0xf9,0x75,0x85,0x2a,0x6a,0x8f,0xd0,0xb9,0xba,
- 0xe5,0x6a,0x59,0x12,0xf3,0x14,0xd6,0xff,0x1a,0xcf,0x6b,0xe5,0x3d,0xe2,0xa4,0x11,
- 0x35,0x52,0x6c,0xe1,0x32,0xc4,0xb9,0x79,0x0f,0x7f,0xb5,0x9f,0xb4,0xb8,0x8f,0x79,
- 0xec,0xfc,0xaf,0xf3,0x6a,0xc3,0x03,0x81,0x9b,0xdc,0xf8,0x6b,0x3c,0x0f,0x85,0xee,
- 0x17,0x75,0xc4,0x04,0xc8,0x5a,0xf3,0x23,0xe5,0x27,0x20,0x64,0xc3,0x73,0xe5,0x92,
- 0x29,0x7f,0xf9,0x5f,0x73,0x71,0x83,0x54,0xcd,0x61,0xfb,0x0d,0xf9,0xaf,0x43,0x1e,
- 0xe2,0x38,0x9a,0x25,0xc8,0x22,0x65,0x06,0xf3,0xa9,0x82,0x68,0xc3,0xad,0xe4,0x87,
- 0x73,0xe7,0xe6,0xd6,0xf9,0xcd,0x5a,0xca,0xad,0x3f,0xbf,0x33,0x27,0xb5,0x67,0x84,
- 0x5b,0x8a,0xcb,0xd8,0xb2,0xb6,0x36,0x83,0xb4,0xe5,0xcb,0xda,0xad,0xad,0x91,0x50,
- 0xcb,0x2d,0x65,0x14,0x6d,0x58,0x11,0x6e,0xf1,0x91,0xb1,0xd3,0xa8,0x72,0x6e,0x46,
- 0x10,0x51,0xe6,0xf3,0xe5,0xf1,0x17,0x61,0x10,0xbb,0x33,0x6b,0x9c,0xa2,0x09,0x42,
- 0xad,0x6e,0x1e,0x0c,0x9a,0xd1,0x1c,0xab,0x28,0xf5,0xeb,0x06,0xf2,0x3d,0x2f,0x42,
- 0xcb,0xae,0x8b,0x3f,0xf4,0x08,0xc1,0xc9,0x3f,0x0d,0xc8,0xb4,0xaf,0xd8,0xb2,0x2d,
- 0x5b,0xa7,0xef,0x19,0x7c,0x3f,0x12,0x5b,0x86,0x2d,0xab,0xcd,0xf1,0x32,0x61,0x0c,
- 0x99,0x57,0x6e,0xb2,0xfb,0xf9,0x8a,0xbe,0x98,0xea,0x2f,0xff,0xde,0xc9,0xff,0x2a,
- 0x90,0xda,0x6b,0x70,0x62,0x0b,0x63,0x66,0x69,0x2b,0xe2,0xaf,0xbf,0xce,0x8f,0xd7,
- 0xad,0x84,0xbf,0xaa,0xec,0x88,0xc4,0xa5,0xa4,0x5a,0xff,0x5f,0xe8,0x2c,0xe5,0x6b,
- 0xd7,0xc7,0x1f,0x42,0x8f,0x27,0x08,0xab,0x48,0xff,0xf0,0x8c,0xc8,0xff,0x52,0x4c,
- 0x2f,0xa9,0xcd,0xbb,0x10,0x99,0x5d,0x88,0x59,0x93,0xdc,0x5f,0xf0,0xfa,0xfa,0xcb,
- 0x0e,0xec,0x0a,0x49,0x63,0x2b,0x1a,0x22,0xfe,0x70,0xab,0x8d,0xc8,0x44,0x2e,0x1e,
- 0x7a,0x05,0x82,0x1a,0xb3,0x6f,0xe6,0xab,0xe3,0x2b,0x66,0xb2,0xbb,0x6f,0xa8,0x7f,
- 0x68,0x8f,0xf2,0xe7,0x3c,0x41,0x13,0x7d,0x92,0xd5,0xf8,0x02,0xf8,0xf2,0xaf,0x56,
- 0xb1,0xc8,0x0d,0xd4,0x09,0xa3,0x51,0x8b,0xf7,0x3d,0xba,0xe4,0xae,0xbf,0xec,0xee,
- 0x9f,0x2d,0xa9,0xca,0x21,0x78,0x83,0x35,0x98,0x4f,0xe8,0x95,0x55,0x2a,0x9d,0x27,
- 0x6c,0xb1,0xa9,0x5e,0x73,0x73,0xaa,0xb2,0xca,0x9b,0x2f,0x16,0x66,0xd6,0x99,0xa7,
- 0xb7,0x2b,0x6b,0x6e,0x94,0xff,0x25,0x45,0xcb,0xfb,0x9d,0x8a,0x60,0x32,0xc5,0xec,
- 0xd6,0x02,0xd9,0xc3,0xf3,0xdc,0x29,0x16,0xa6,0x36,0x7c,0x6d,0x8a,0xfe,0x46,0x0e,
- 0x92,0x3b,0xc6,0x30,0xe0,0x96,0xd3,0x96,0x8c,0x1b,0x16,0xee,0x2b,0x9d,0xb6,0x90,
- 0xaf,0xf3,0xfe,0xd0,0x6b,0x23,0x14,0x35,0x5f,0x80,0xcd,0x3c,0x99,0x98,0xca,0x7f,
- 0xd9,0x29,0x5d,0xa5,0xb9,0xdc,0xae,0x21,0x76,0x27,0x22,0xe8,0xf9,0x7c,0x45,0x3a,
- 0x48,0x2d,0x46,0x5a,0x8d,0xb3,0xe1,0xa2,0x4d,0x4e,0xfe,0xd7,0x8b,0x56,0x65,0x4a,
- 0x1d,0x46,0x7f,0xcc,0x9c,0x82,0xbf,0x5c,0xeb,0x98,0xa8,0xa3,0xa1,0x16,0xfd,0x1d,
- 0xe4,0xbc,0x6e,0xaa,0xfd,0x4a,0xd0,0xcc,0x93,0xcc,0xb5,0xe8,0x46,0x36,0xd4,0xc8,
- 0x36,0x5d,0x17,0x7f,0x28,0x53,0x8d,0x7c,0xb6,0xd1,0xab,0x99,0x45,0x9f,0x41,0x14,
- 0x30,0xcf,0xbe,0xc4,0xe7,0x34,0xab,0xad,0x08,0x2b,0x36,0xe4,0xf5,0x91,0x2a,0x46,
- 0xd5,0x48,0xa2,0x40,0x7f,0xc3,0x25,0x69,0x58,0x4a,0xc6,0xef,0xf9,0xe2,0x73,0xab,
- 0x5a,0x96,0xfe,0x0d,0xfb,0x64,0xe0,0x4e,0x47,0x6d,0xe3,0x0e,0x8a,0x3e,0x7a,0xdb,
- 0xfb,0x8b,0xf6,0x5c,0xfe,0x97,0xc8,0x11,0x7b,0xf6,0x46,0xfa,0x87,0x52,0xba,0x4d,
- 0xe2,0x2f,0x8d,0x97,0x0f,0xc3,0x5b,0x66,0x4e,0x3d,0xaf,0x7e,0x89,0x70,0x41,0xcf,
- 0xe7,0x6f,0xae,0xb7,0xb6,0xa4,0x2b,0xf3,0xf9,0x5f,0xe6,0x94,0xfa,0x5f,0xe5,0x57,
- 0xbd,0xd7,0xda,0x9a,0xce,0x05,0x86,0x95,0x3f,0xb6,0x7f,0xc2,0x03,0x43,0x7e,0xaa,
- 0xc8,0x7c,0x3a,0xd5,0xb4,0xac,0x68,0x3d,0x1a,0x57,0x52,0x0b,0x1c,0xb2,0xac,0x32,
- 0xbb,0x6a,0xcc,0xd3,0xea,0xaa,0xff,0xb5,0xb3,0xda,0x52,0x64,0xfd,0xaf,0x99,0x43,
- 0xf4,0xdb,0xa9,0x4e,0x4d,0xbf,0xb6,0x44,0xf9,0x2d,0xd5,0xff,0xa2,0x9e,0x47,0xb8,
- 0xc4,0xeb,0x57,0x63,0xd7,0xe1,0x66,0x17,0xa9,0xc8,0x3a,0xe7,0x87,0xf7,0x68,0x0f,
- 0x38,0xfc,0x97,0x0e,0x4f,0x7b,0x0f,0x1a,0xdf,0xb8,0xbe,0xfe,0x17,0x05,0xe4,0xb7,
- 0x13,0xec,0xea,0x15,0xc2,0x95,0xdf,0xa7,0x3a,0x50,0xad,0xf8,0xc0,0xe7,0x3d,0x4e,
- 0x9e,0x9d,0xb9,0xb3,0xaf,0xf3,0xc1,0xa2,0x65,0x6e,0xfd,0xc3,0xdc,0xb8,0x93,0x4f,
- 0xd2,0xec,0xe0,0x6e,0xd6,0x5f,0x4c,0x86,0x42,0xcf,0xb1,0x5f,0x89,0xcd,0xb2,0x58,
- 0xb3,0xbc,0x39,0x4e,0x4a,0x2c,0x33,0xaf,0xab,0xff,0x55,0xa0,0x5b,0x38,0x9b,0x74,
- 0x33,0xf6,0x88,0xaa,0xa0,0x25,0x22,0xce,0xd3,0x83,0x53,0x06,0x84,0x06,0x72,0x97,
- 0xe3,0x0c,0x44,0x87,0x56,0xf5,0x68,0xb6,0xfe,0xfc,0xf6,0x82,0xfc,0x2f,0xb0,0x0f,
- 0x6c,0x2f,0x92,0x83,0xd7,0x8e,0xcf,0xf9,0x50,0x8c,0xe0,0xf4,0x7d,0xf0,0xa1,0x57,
- 0x2c,0x71,0xee,0xfc,0x2f,0x33,0x96,0x0a,0x1c,0x55,0xde,0xcd,0xd7,0x5f,0x76,0xf0,
- 0x97,0xfa,0xa9,0x10,0xd3,0x16,0xfa,0xf3,0x68,0x0c,0x28,0xeb,0xe1,0x1a,0xfb,0xa6,
- 0xc8,0xff,0xf2,0xfe,0x92,0xe1,0xfb,0x63,0x29,0x8d,0xde,0xf3,0xbc,0x52,0xfa,0x2d,
- 0x17,0x8d,0x05,0xa4,0x1a,0xed,0xe8,0x1f,0x82,0x53,0xff,0x4b,0xd9,0xa7,0x1f,0xb1,
- 0x73,0xd6,0xd0,0xb9,0x0d,0x5a,0x25,0x9b,0xd9,0xb3,0xb0,0x02,0xfe,0x91,0x4e,0xec,
- 0xf7,0x21,0xec,0x9a,0x1f,0x2f,0xf9,0x51,0xe5,0x5a,0x38,0x94,0x72,0x3c,0x6a,0x1e,
- 0x4c,0xe1,0x7a,0x18,0xbf,0x41,0xfd,0x2f,0xf4,0xc3,0xa5,0x0e,0x39,0x19,0x2b,0x12,
- 0xbe,0xfb,0xa0,0x9b,0x05,0xad,0x9b,0x6d,0x8a,0xad,0x65,0x63,0x87,0x50,0x56,0xb4,
- 0xf3,0xc8,0x0e,0x9b,0xbb,0x2c,0xed,0x80,0xab,0xfe,0x97,0x47,0xd6,0x05,0x2e,0xda,
- 0xec,0x41,0x37,0x63,0x50,0x25,0x7a,0x7a,0x37,0xc4,0xfb,0x6f,0x06,0x1f,0x37,0x76,
- 0xd3,0xe8,0x2c,0xc4,0xe9,0xf9,0xa4,0x4f,0x25,0x69,0xa9,0x95,0x24,0x8f,0x23,0x84,
- 0x38,0xbc,0x14,0x2c,0x84,0x46,0x73,0x2e,0xff,0x4b,0x7e,0x1f,0x04,0x59,0xed,0x47,
- 0xbc,0x75,0x6f,0xc8,0x2f,0xd6,0x8a,0xce,0x2d,0x57,0xd6,0xf0,0x97,0x60,0x97,0x9c,
- 0x29,0x27,0x8c,0xba,0xe6,0x12,0xae,0x84,0xbd,0xe3,0xe6,0x61,0xcb,0xd6,0x54,0x21,
- 0x47,0x5a,0x73,0xeb,0x1f,0xa2,0x37,0x38,0xfd,0x80,0xa8,0xff,0x55,0x27,0xf3,0xbf,
- 0xbe,0x6b,0x34,0x0d,0x94,0x98,0xe8,0x9c,0x9c,0x56,0xed,0xf8,0xc3,0xef,0x88,0x4a,
- 0x28,0x95,0x54,0x88,0xb9,0xae,0x20,0xff,0x6b,0x6f,0x1e,0x7f,0x5d,0x91,0x92,0x1a,
- 0xa3,0x74,0x88,0x01,0xc2,0xb8,0x02,0x95,0xe8,0x37,0x95,0x47,0xd0,0xcb,0x6d,0x52,
- 0x15,0x4e,0x72,0x7c,0x10,0x3d,0x5e,0x92,0xab,0xff,0x75,0x77,0x32,0x46,0xa9,0x61,
- 0x56,0x5e,0xff,0x50,0xd4,0xff,0x82,0xba,0xb4,0x4a,0xf8,0xeb,0x08,0xd1,0x28,0x3d,
- 0x62,0x3d,0xdc,0x65,0xa8,0x9c,0xfd,0x84,0xbc,0x02,0xab,0x9a,0x18,0xb1,0x1e,0x6b,
- 0x7e,0xc5,0x0a,0x2e,0xf3,0x80,0xbc,0x2d,0x7b,0x58,0x0d,0xfa,0x63,0x41,0x2b,0xd4,
- 0xa1,0xb8,0xf4,0x37,0xba,0x28,0x5b,0x39,0x52,0x66,0x11,0xe0,0x5d,0x22,0xea,0x32,
- 0xe0,0xcb,0xcf,0x07,0x28,0x2c,0x61,0xab,0x37,0xdc,0x7f,0xdb,0xed,0x65,0x96,0x37,
- 0xb3,0x4c,0x94,0x5d,0xe6,0x26,0xbf,0x89,0x62,0x41,0xa8,0x08,0x91,0x8c,0x9f,0x77,
- 0xf1,0x5f,0x87,0xcc,0xb9,0x1d,0x21,0x2a,0xc9,0x7d,0x44,0x86,0xa4,0x7e,0x10,0x3a,
- 0xcc,0x77,0xa5,0xd5,0xc7,0x48,0x77,0x45,0x86,0xb6,0xc6,0x49,0xd1,0x45,0x14,0x76,
- 0xc1,0x67,0xa8,0xa4,0x60,0x10,0x86,0x1e,0x95,0xbe,0x0f,0xcb,0xe4,0xf9,0xaf,0xb1,
- 0x54,0xd7,0x6b,0x7e,0x91,0xff,0x45,0x21,0x10,0x14,0x88,0x38,0x9e,0x8e,0x76,0x61,
- 0x4b,0x92,0xbf,0x85,0xae,0xfe,0x96,0x8c,0xe7,0x63,0x3e,0xa1,0x47,0xd3,0x81,0x1e,
- 0x5c,0xe0,0x4f,0xf0,0xa8,0x15,0xde,0x86,0xc0,0x79,0x8c,0x72,0xfa,0x36,0x33,0x57,
- 0xfe,0xd7,0x15,0xde,0x94,0xa6,0x9e,0x27,0x92,0xab,0x25,0x30,0x5a,0x39,0x1c,0xba,
- 0x0a,0x8b,0xf9,0x96,0xf5,0xda,0x25,0x7e,0xa5,0xac,0x09,0x34,0x4b,0xb9,0x08,0x97,
- 0xa0,0xa9,0x35,0xd0,0xaf,0x3d,0xec,0xb9,0xb4,0xa3,0x49,0x0d,0x50,0xfd,0xaf,0xc9,
- 0xf4,0x4b,0x7d,0xb8,0x49,0xb9,0xf0,0xd7,0x18,0x44,0xf0,0x4d,0x98,0xfe,0x3e,0x3b,
- 0xa1,0x47,0x4d,0xf1,0xc5,0x7a,0x4d,0x51,0xcb,0x2f,0xcb,0x4f,0x40,0xd4,0x28,0xe1,
- 0xe5,0xe7,0xd4,0x0e,0xa8,0x8b,0xfb,0xa7,0xe3,0x6b,0x33,0xa0,0x47,0x29,0x6c,0x63,
- 0x1f,0x5c,0x34,0xeb,0x07,0xc3,0xdb,0x35,0x57,0xfc,0xe1,0xa1,0xbb,0x85,0xc8,0xc6,
- 0x88,0xde,0x69,0x05,0xff,0x2b,0x85,0xec,0xc2,0xa6,0xc1,0x3a,0xae,0xfd,0x3c,0x91,
- 0x55,0x37,0xca,0xc4,0xf3,0x38,0x76,0xcb,0x3f,0x9a,0x25,0x9b,0x9b,0x47,0xac,0x0e,
- 0x2b,0x68,0xa8,0x9b,0x95,0xb5,0x02,0xba,0x56,0xff,0x73,0xc2,0xc5,0x7f,0x1d,0x91,
- 0x4b,0x93,0x05,0xc9,0x6c,0xc8,0x98,0x29,0x73,0xbb,0xf6,0x99,0x2b,0xd4,0xe6,0x93,
- 0x9e,0x36,0x7c,0xf9,0x8b,0x29,0x70,0x94,0x93,0x4c,0x8a,0x4a,0xba,0x34,0x66,0xa8,
- 0x4c,0x85,0x3f,0xf3,0x93,0x40,0x68,0xaa,0x45,0x85,0xfa,0xbc,0xfe,0xfc,0xfe,0x6d,
- 0x42,0xea,0xe1,0x37,0x94,0xad,0x9c,0x9e,0xb9,0x3e,0xf8,0x1a,0x3c,0xfe,0x83,0x1f,
- 0x93,0x2e,0xfa,0x29,0x78,0x9c,0x1b,0xc4,0xcb,0xac,0xa4,0x4b,0xbc,0x98,0x72,0x97,
- 0x36,0x20,0x52,0x50,0xc7,0x8a,0xbe,0xc2,0x0f,0x66,0x8c,0x1f,0x17,0xb7,0x38,0xe7,
- 0x87,0x22,0xfe,0x90,0xfa,0x27,0xc2,0x7a,0xe1,0x04,0xd4,0xaf,0x09,0x47,0x94,0xfe,
- 0xe6,0x5e,0x68,0x5c,0x16,0x88,0xb2,0x01,0xa3,0x2d,0x13,0xb1,0x4a,0xea,0x11,0x91,
- 0xbd,0x0c,0x55,0x7b,0xfc,0x0b,0xd1,0x0f,0x4f,0x5a,0x3d,0xaf,0xf9,0xf5,0xe4,0x13,
- 0x70,0x31,0x55,0xdf,0x1a,0x9e,0xe1,0x8e,0x3f,0xbc,0x22,0x67,0xca,0x28,0x4d,0x99,
- 0x76,0xc1,0x7f,0xd9,0xb9,0x78,0xa3,0xf0,0x3f,0xa6,0xc9,0x25,0x8e,0x0b,0x45,0xc4,
- 0xf3,0x95,0x94,0xff,0x85,0x78,0xf9,0x8d,0xf2,0x49,0x47,0xb5,0xc3,0xa5,0x7f,0x88,
- 0x2e,0x0d,0x4d,0x6a,0x91,0x10,0xcd,0x79,0xa6,0x62,0x88,0x40,0xb1,0x39,0x9d,0x2b,
- 0x55,0xec,0x04,0x22,0x1c,0x3f,0x95,0x5d,0xb6,0xfd,0xd5,0x7c,0xfd,0x2f,0xd2,0x64,
- 0xe6,0xe1,0x82,0xfa,0x5f,0xb4,0x05,0xb4,0xd0,0xb9,0x9f,0xad,0x76,0xd8,0x8a,0x7b,
- 0xc1,0x4e,0x13,0xf7,0x1d,0xef,0xff,0xd7,0xde,0xdf,0x87,0xc7,0x51,0x5c,0x69,0xc3,
- 0x78,0xf5,0x87,0xe4,0xd6,0xf4,0x48,0xd3,0xfa,0x80,0x15,0xe0,0x98,0xd6,0x48,0x36,
- 0x83,0x33,0x92,0xc6,0x23,0x63,0x8c,0x2c,0x8f,0xda,0x92,0x70,0x06,0xec,0xc4,0x0a,
- 0x61,0x13,0xef,0x2e,0x4f,0x9e,0xb1,0xe3,0xdd,0xf5,0xe6,0x75,0x76,0x05,0xcb,0xb5,
- 0xeb,0x90,0xbc,0xa4,0x34,0x12,0x58,0xb6,0x0c,0x1e,0x1b,0x67,0x63,0x12,0x27,0xcf,
- 0xd8,0x38,0xc1,0x04,0x36,0x19,0xc9,0x06,0xcb,0x1f,0xd8,0x2d,0x23,0x88,0xfc,0x81,
- 0x2d,0x58,0x6f,0x62,0x12,0x2f,0x8c,0x89,0x20,0x02,0x0c,0xc8,0xe0,0x10,0xc9,0x9f,
- 0xef,0x39,0x55,0xdd,0x3d,0x3d,0x92,0x08,0xfb,0x64,0xf7,0x79,0x7f,0xef,0xf5,0xbb,
- 0x18,0xfe,0xe0,0x5c,0x55,0xa5,0xf6,0x4c,0x55,0x77,0xd7,0xb9,0xeb,0x9c,0x73,0xdf,
- 0xb0,0x9b,0x57,0x93,0x7c,0x02,0xdb,0xd6,0xf7,0x78,0x97,0x57,0xa9,0x06,0xd8,0xe5,
- 0x09,0x79,0x26,0x93,0x9d,0xb2,0x4e,0x3d,0x86,0x58,0x94,0xc1,0x5f,0x4f,0xd3,0xb2,
- 0xf4,0x1a,0x2e,0x5d,0x1d,0x4c,0xdb,0x1a,0xd6,0xba,0x34,0x5b,0xfc,0xbe,0xf6,0x5d,
- 0x5a,0xa9,0x93,0x68,0xee,0x14,0xab,0xcb,0x3f,0x45,0x9e,0x84,0xb2,0x5f,0x8b,0xc5,
- 0x29,0xf2,0x0e,0xfa,0xe3,0xb4,0x52,0x0a,0xa0,0xca,0xc1,0x5f,0xbb,0x8b,0xf4,0x34,
- 0xec,0x4d,0x07,0xe9,0x0e,0x4c,0x39,0x08,0x89,0xf3,0xc8,0xde,0x04,0x09,0xe5,0x3d,
- 0x2b,0xc6,0x49,0x2b,0xad,0x9c,0x9d,0xf7,0x05,0x91,0x61,0xc6,0x01,0xa5,0xc5,0xf3,
- 0x19,0xe5,0x71,0xf0,0x37,0x3c,0xcd,0xf0,0x9c,0xee,0xd5,0x2a,0x06,0xa7,0xcf,0x8c,
- 0xbb,0xf5,0xbf,0x68,0x4d,0xb2,0x20,0x29,0x8d,0xea,0x7b,0x48,0x7d,0x9c,0xc5,0xbf,
- 0xa0,0x65,0xbb,0xef,0x8c,0xba,0x87,0xfe,0x9a,0x46,0x7a,0xbc,0x3f,0xb5,0xa8,0xe9,
- 0xa1,0x6b,0x7a,0xc5,0x61,0xb2,0x07,0x0d,0x14,0x0b,0xdb,0x45,0x95,0x6c,0xfd,0xaf,
- 0x58,0x9d,0x9c,0xc3,0xa8,0xd2,0x78,0xb4,0x2b,0x16,0x60,0xb5,0x5d,0xed,0xe0,0x3f,
- 0x0f,0x69,0xf5,0x64,0x11,0xca,0x7e,0x9d,0x20,0x73,0xb9,0xc4,0xfc,0x39,0xf2,0x19,
- 0xcd,0x67,0xa0,0xa7,0xa7,0xcc,0x1e,0xcb,0x3f,0x4f,0x6c,0x92,0x79,0x70,0x80,0xb9,
- 0x61,0xde,0xd3,0xe0,0x4b,0xb4,0x4d,0x23,0x6f,0x91,0x3a,0x63,0xb2,0xc5,0xf0,0xd0,
- 0xb0,0x70,0x53,0xb9,0x9c,0x3c,0xa4,0x87,0x97,0x79,0x37,0x96,0x63,0x29,0x0d,0xfc,
- 0x55,0x36,0xff,0x21,0xdd,0x6a,0x04,0x2c,0x70,0xd4,0x6c,0x19,0x5b,0x0d,0xf5,0x5f,
- 0x3c,0x15,0x89,0xd5,0x62,0x15,0xf2,0x42,0xb0,0x03,0xc0,0x98,0xf2,0x43,0x71,0x2a,
- 0x79,0xc5,0xf0,0x63,0x5a,0x2f,0x2b,0xe0,0x5a,0x1a,0xc8,0xd2,0xff,0x42,0x44,0xa6,
- 0x30,0x6a,0x3b,0x83,0x49,0x3b,0x31,0xfa,0x3b,0xc6,0xc8,0x61,0x30,0x20,0x86,0xf9,
- 0x87,0x3f,0x24,0xe5,0x4d,0x79,0xcd,0xf1,0x9b,0xc8,0x43,0x46,0x79,0x03,0xd3,0x11,
- 0x63,0x14,0x79,0xeb,0xdd,0xf8,0x0b,0x3c,0x46,0x2b,0xd5,0x4d,0x0b,0xf6,0xdd,0xa8,
- 0x89,0x47,0x8d,0x1d,0xac,0x10,0x8c,0xb1,0xf0,0x55,0x7e,0xc1,0x83,0xfa,0x5f,0xdf,
- 0x0d,0x6c,0xb9,0xfd,0xc6,0x3b,0x0e,0x96,0x74,0xa3,0x11,0xb8,0x63,0x0d,0xfc,0x95,
- 0x9e,0xbe,0x5d,0x29,0x8a,0x5b,0xe7,0x87,0x16,0xff,0xa1,0x67,0x2d,0x86,0xbd,0x46,
- 0x8c,0xc8,0xb5,0xf9,0x58,0x08,0x36,0xb2,0xdc,0xef,0x59,0xf4,0x60,0x9b,0xbe,0x15,
- 0xd5,0x9a,0xa2,0x28,0xfb,0x75,0x52,0x0f,0x2b,0x9f,0x17,0x99,0xec,0x72,0x58,0x51,
- 0x0e,0xe2,0x1d,0xde,0x1c,0x56,0xbc,0xc8,0x7f,0xa8,0xd9,0xf8,0xeb,0x92,0x5e,0x8f,
- 0xa2,0xbd,0xe7,0x0a,0x77,0xeb,0xf5,0xd1,0x82,0x84,0x80,0x85,0x60,0x3c,0xfe,0x05,
- 0x8f,0x5e,0xd5,0x6d,0x8b,0xd0,0x7b,0xc7,0x70,0x95,0xb8,0xa1,0xf5,0x4c,0x72,0x34,
- 0x10,0xb9,0xdd,0xf7,0x72,0x2b,0xe2,0x2f,0xae,0xbf,0x3c,0xc9,0x89,0x7f,0x5d,0xb2,
- 0x4b,0xf0,0xfe,0x6f,0xa1,0x1e,0x55,0x0b,0x2f,0x92,0x17,0x61,0xf7,0x5e,0x37,0x20,
- 0xed,0x84,0x15,0xac,0xe6,0x5d,0xbc,0xda,0xab,0x11,0x63,0x64,0x35,0x46,0xb0,0x99,
- 0x01,0xb1,0x9a,0x79,0xc1,0x6c,0xfe,0xc3,0x0c,0xdb,0x21,0xe6,0x16,0xfa,0x59,0x6d,
- 0x17,0x65,0xfa,0x5f,0x3d,0x76,0xb6,0xe1,0x76,0x00,0x62,0x96,0x34,0x18,0x32,0x22,
- 0x02,0x10,0xdb,0x93,0xc5,0x7f,0xc8,0xf0,0x17,0x4d,0x22,0xda,0xea,0xd3,0x38,0xdb,
- 0xbc,0x9f,0xd5,0xba,0x22,0x23,0xc7,0x83,0x08,0xcd,0xb0,0x3c,0xa1,0x49,0xb1,0xaa,
- 0xbd,0x00,0x9a,0x09,0xac,0xf2,0x0e,0x81,0x58,0xd2,0x54,0x4a,0x45,0xd1,0x85,0xbf,
- 0x60,0xdd,0x3d,0x5c,0x36,0x2e,0xd7,0xd6,0x5f,0x66,0xfa,0x20,0x15,0xe4,0x16,0x52,
- 0x15,0x85,0x55,0x7e,0x83,0x3c,0x61,0x4c,0xff,0x22,0x76,0xd1,0x47,0x0d,0xff,0x9d,
- 0xca,0x46,0x0f,0xac,0xbb,0xee,0x4f,0x2b,0x9b,0xb2,0xf1,0x97,0x13,0x04,0xe4,0xb9,
- 0x85,0xda,0x21,0x52,0xdb,0xe2,0xdb,0x2c,0x3d,0x8e,0xc8,0xb7,0xe5,0x61,0x9b,0xba,
- 0xe4,0xa9,0x1f,0x49,0x6f,0x88,0x80,0xc8,0x62,0xc1,0x47,0x55,0xbc,0x9f,0xbb,0x17,
- 0x7b,0x91,0xff,0x50,0x77,0xe3,0x2f,0xa4,0x46,0xd4,0x46,0x09,0xd7,0x5f,0x16,0xcf,
- 0x7a,0x23,0xcd,0x8c,0x41,0x05,0xc3,0x5e,0xea,0x7a,0xe9,0x05,0x63,0x34,0x19,0x59,
- 0x8e,0x78,0x99,0xbc,0x95,0x8c,0x2c,0xe1,0x62,0x61,0x00,0xc4,0xd6,0x69,0xd2,0x61,
- 0xfe,0xde,0x60,0xf8,0x4b,0x0f,0x59,0x64,0xa4,0x42,0xa4,0x04,0x6e,0xa4,0xd3,0x3a,
- 0xe3,0x9f,0x97,0x55,0x3f,0x93,0x2d,0x08,0x72,0x68,0x06,0xaf,0xc1,0xb8,0x5a,0xa6,
- 0xf7,0x2b,0x61,0x31,0x48,0xdb,0x90,0x91,0xbe,0x5b,0xf1,0xb5,0xba,0xf3,0x0f,0xf7,
- 0x1b,0x3f,0xa5,0x84,0x41,0xaa,0x8e,0xea,0x76,0x25,0xe9,0x1f,0xd1,0xf6,0x0b,0x98,
- 0x6d,0x28,0xce,0xc6,0xb0,0xd7,0x46,0x2b,0xdb,0x50,0x7f,0x0c,0xd0,0xd6,0x1c,0xf9,
- 0x61,0xa5,0xbc,0x43,0x79,0x1b,0xc5,0xc2,0x92,0xe5,0xeb,0x3b,0x31,0xff,0x90,0xd8,
- 0xf8,0x6b,0xbb,0xa1,0x9b,0x02,0xea,0x2f,0xa7,0x3a,0x56,0x68,0xe0,0xbd,0x9f,0x26,
- 0x29,0x03,0xd6,0x42,0x89,0x13,0x74,0xbf,0x9b,0xed,0x93,0x25,0xc3,0x33,0x13,0xdc,
- 0x95,0x4e,0xc3,0x3f,0xac,0xec,0xc4,0xf7,0x18,0x1e,0xd8,0x86,0xdd,0xf5,0x5f,0x3b,
- 0xc9,0x8d,0xf0,0xee,0xf5,0xe3,0x91,0x57,0xa5,0x91,0x07,0x2f,0x6a,0xe5,0x26,0xcc,
- 0x36,0xbc,0x53,0x2c,0x64,0x61,0xaf,0xdb,0x39,0xda,0x42,0x22,0x8e,0xb8,0xa6,0xb7,
- 0x8a,0x84,0x2a,0x5c,0x4c,0x84,0x01,0x84,0xfe,0x0c,0xfe,0x4a,0xd3,0x10,0xa7,0x9d,
- 0x3f,0x47,0xeb,0x90,0xed,0xf0,0x65,0xd2,0x82,0xd8,0x4a,0x51,0x8b,0x00,0x64,0xd5,
- 0xc5,0x0a,0x38,0xda,0x7a,0x34,0x5d,0x35,0xa4,0x46,0xc4,0x5f,0xd0,0xae,0x98,0x77,
- 0xb1,0x3a,0x05,0x10,0x19,0x23,0x42,0x3c,0x9c,0xc1,0x5f,0xa3,0x80,0x35,0x99,0x7b,
- 0x09,0xb3,0x3a,0xef,0x0b,0x2c,0x10,0x06,0x2d,0x0c,0xf0,0xc2,0x4e,0x34,0xcf,0x61,
- 0xcf,0xcb,0x4f,0x16,0xb3,0x88,0x18,0x61,0x8e,0xfd,0xf9,0x2c,0xfe,0x0d,0x8c,0x7f,
- 0x8d,0xd0,0x9a,0xf4,0xda,0x11,0xe9,0x3d,0xe5,0x28,0x8d,0x54,0x78,0x47,0xa5,0x8f,
- 0xc4,0xa3,0xf1,0xf2,0xd3,0x8b,0xfa,0x1b,0xfd,0x0c,0x9a,0x79,0x46,0xd5,0x08,0x39,
- 0x42,0x23,0x83,0xeb,0x4e,0x72,0xfd,0xaf,0xb4,0x3c,0xa4,0x56,0x19,0x17,0x00,0x88,
- 0x81,0x33,0xe9,0xca,0x3f,0xdc,0x99,0xde,0x82,0x99,0x18,0xaf,0xc6,0x1f,0x20,0x95,
- 0x7a,0xa0,0x45,0x3c,0x4b,0x1e,0x20,0x4f,0xf4,0xab,0xa6,0x58,0x04,0x2f,0x22,0xe4,
- 0x8d,0x8f,0x4f,0x26,0xab,0x92,0x95,0x43,0x0b,0x9a,0xe3,0x09,0xda,0xaa,0xdc,0xb8,
- 0x15,0x80,0x73,0x01,0xbc,0xe5,0xcb,0x11,0xcc,0xba,0xf2,0x0f,0x53,0x7a,0x39,0x93,
- 0x5f,0xa1,0xed,0x4c,0xbe,0x99,0x0c,0xc4,0x28,0x6c,0x76,0xb0,0x0f,0x4e,0xa6,0x5c,
- 0x02,0xdb,0x3f,0x59,0x7f,0x5c,0xaf,0x04,0x64,0xe7,0x81,0x17,0x32,0xd1,0xa3,0x0a,
- 0x76,0x3d,0x0d,0xab,0x73,0x63,0x16,0xff,0x61,0x8f,0x5e,0x81,0x49,0x1a,0x2f,0xc2,
- 0x63,0x1e,0x14,0xf3,0xb0,0x80,0x9d,0x15,0xa7,0x13,0x91,0xe8,0x3b,0x68,0xc5,0x70,
- 0x5e,0x9d,0xe8,0xe5,0x48,0x5c,0x8e,0x77,0xfa,0xa9,0x19,0x18,0x56,0x82,0xcc,0xcf,
- 0x0c,0xa4,0xc1,0xd5,0x77,0xe1,0xaf,0x91,0x68,0x18,0xb3,0xd7,0x30,0xec,0x15,0xd9,
- 0xc0,0xfc,0xb1,0xc3,0x4a,0xf7,0x80,0x2f,0x89,0xfc,0xc6,0x4a,0x24,0x0c,0xf3,0x5c,
- 0x4d,0xde,0x39,0x19,0x59,0x0c,0x28,0xa9,0x52,0x3f,0x3c,0x0f,0xdc,0xc2,0x67,0x3c,
- 0xb8,0xbf,0xef,0x49,0xe7,0xed,0x94,0x5c,0xfc,0x87,0x23,0xc6,0x6c,0x56,0x95,0x80,
- 0x65,0x5f,0x09,0x44,0x01,0xf4,0x83,0x28,0x5b,0x8b,0xd7,0xd1,0x8d,0x2f,0x2d,0x00,
- 0xc8,0x20,0xfe,0x15,0xb9,0x1f,0x0f,0x6c,0xd9,0x01,0x57,0x62,0x11,0x46,0x6a,0x46,
- 0xc8,0xd5,0x7d,0x05,0x3d,0xd9,0xf5,0x5f,0x35,0x07,0x83,0x98,0x8a,0x73,0x99,0x73,
- 0x6b,0x9c,0x24,0xc7,0xa0,0xc5,0x17,0x03,0xfc,0x75,0x1c,0xb6,0x3f,0x6f,0x48,0x0a,
- 0xea,0x57,0xe4,0x6a,0x73,0xd1,0x76,0xa9,0x4e,0x39,0xa6,0xd4,0x2c,0xf5,0xbe,0x24,
- 0xd5,0x11,0x58,0x2f,0x70,0x45,0xda,0xdc,0xfa,0xcb,0xe6,0x56,0xce,0x7f,0xb8,0xa7,
- 0xdf,0x3f,0xa4,0x62,0x21,0x58,0x87,0x09,0x38,0xe5,0x29,0x51,0xa4,0x9d,0xa4,0xca,
- 0x6f,0xf3,0x16,0x62,0x26,0x46,0x99,0xb2,0x26,0xe1,0x0f,0x05,0xe4,0x02,0x26,0xb6,
- 0x3b,0xac,0xec,0x13,0xd3,0x56,0xfc,0x4b,0x66,0xe2,0xbf,0xd6,0x75,0xa8,0x3f,0xf9,
- 0x03,0x74,0xc8,0xc1,0xe1,0x34,0x3b,0x7b,0xfc,0xcb,0xe8,0x0f,0x48,0x55,0x5a,0xb1,
- 0x09,0xed,0x55,0xad,0xc8,0x47,0xb6,0x2a,0xfa,0x0b,0x79,0xc9,0x78,0x90,0xa4,0x14,
- 0x78,0x8f,0xf5,0xc4,0xd3,0x82,0x8d,0xbf,0x60,0xdd,0x79,0x78,0x9a,0x76,0x89,0xba,
- 0xf7,0x3a,0x1e,0xff,0xaa,0xc0,0xbf,0xd2,0xf5,0x47,0x34,0x40,0x0a,0x33,0x1a,0x18,
- 0x5f,0x65,0x3f,0x38,0x9c,0x72,0x51,0x6b,0x61,0x52,0x84,0xbd,0x12,0xfe,0x4a,0xd9,
- 0x8a,0x75,0x49,0x07,0xf9,0xdd,0x43,0xf2,0x56,0xc0,0xa2,0x20,0xed,0x86,0x88,0xb7,
- 0x7a,0x37,0x65,0x85,0x60,0x87,0x11,0x5b,0x25,0xa5,0x15,0x14,0xcb,0x21,0x31,0x11,
- 0x11,0xcf,0xc3,0x8f,0x41,0x8b,0x4e,0x86,0xe0,0x45,0x04,0x9e,0x55,0xd0,0x18,0xd5,
- 0x99,0xb3,0x6d,0x4a,0x4e,0xfc,0x0b,0xbc,0x77,0x9c,0x5e,0xa6,0xff,0xe5,0x55,0x87,
- 0xb1,0xba,0x01,0x43,0x4f,0xe8,0x5d,0xbc,0x8f,0x1b,0xd9,0x07,0x9c,0x76,0xde,0x9c,
- 0x64,0xf2,0x02,0x2e,0x52,0x60,0x0a,0x17,0x0d,0x56,0x1c,0x91,0xc9,0x3f,0x94,0x39,
- 0xff,0xe1,0xa2,0x9e,0xe2,0xf7,0xe4,0x2b,0xa4,0xa0,0xdf,0x22,0x54,0xe4,0xc9,0x54,
- 0xed,0x57,0xca,0x6a,0xfa,0x8f,0x62,0xcb,0x85,0xf2,0x5a,0x3b,0xc4,0x16,0xe6,0xfc,
- 0x87,0x97,0xc1,0xed,0xca,0xd4,0x7f,0xd1,0x4c,0xfe,0xe1,0x7b,0xe4,0xc0,0x40,0xf5,
- 0x39,0x75,0x54,0xbc,0x82,0xfc,0xdd,0xc3,0x9d,0xe7,0xc4,0xcb,0xc6,0x81,0x8d,0x9f,
- 0x1d,0x7c,0x88,0xb5,0x24,0xaa,0x07,0x31,0xfe,0x65,0x20,0x3d,0x32,0xcb,0x48,0xdc,
- 0xc3,0x52,0x13,0x1b,0x6c,0xfd,0x2f,0xd9,0x7d,0x2e,0xc1,0xa5,0x82,0x5e,0xc4,0xcc,
- 0x4f,0x0c,0x7b,0x1d,0xcd,0xdb,0x41,0x62,0x6c,0x09,0x0c,0x3e,0xa6,0x08,0x35,0x3b,
- 0x02,0x3c,0xc3,0xad,0x8b,0x31,0xbf,0x8d,0xd3,0xff,0x1a,0xab,0x5d,0xd5,0x6b,0x01,
- 0xf0,0xe9,0x88,0xbf,0xdc,0x5d,0xc6,0xf4,0x98,0x7d,0x93,0xe8,0x4a,0x2a,0x3e,0x26,
- 0xff,0x70,0x9c,0x2e,0x03,0x0b,0x3c,0xc9,0x17,0x04,0x5c,0x4a,0x56,0x5d,0x65,0x95,
- 0x43,0x9e,0xd7,0xf6,0x58,0xfc,0x87,0x66,0x38,0xe0,0xdd,0x26,0x0d,0xb8,0xf8,0x37,
- 0x64,0x4b,0xf6,0x0b,0xa7,0x97,0x9d,0x6f,0xb8,0x14,0xc1,0xe6,0x66,0xa1,0x63,0xa4,
- 0xa6,0xbf,0xc9,0x60,0xfc,0x87,0x97,0xd1,0x63,0xfc,0x58,0xfd,0xaf,0x5e,0x1f,0xa7,
- 0x6d,0xb1,0x14,0xca,0x3e,0x74,0x55,0x0f,0xf1,0x23,0x8b,0x0f,0x48,0x77,0x29,0x1b,
- 0x03,0x77,0x9d,0x0e,0x2f,0xd8,0x8d,0x0e,0xfe,0xd2,0x9c,0xdf,0x7e,0x80,0xc7,0xbf,
- 0xf6,0x91,0x9f,0x93,0xea,0xde,0xbc,0x73,0x62,0x9d,0x72,0x40,0xae,0x1e,0x51,0x86,
- 0xed,0x4a,0x13,0x34,0x60,0x5a,0x5a,0x98,0xf4,0x43,0x77,0xd4,0x2f,0xa8,0xbb,0x27,
- 0xc8,0x3f,0x74,0x16,0xce,0x2b,0xb7,0x61,0xd8,0x6b,0x66,0x9c,0x75,0xf5,0x2b,0x59,
- 0xa1,0xb1,0x2e,0x9d,0xa6,0x19,0x71,0x4a,0x8a,0x02,0x82,0x0e,0x88,0x7b,0xb2,0xf5,
- 0xbf,0x78,0xaa,0x5b,0xa2,0xf2,0x2d,0x00,0x62,0x3f,0x62,0x11,0xb1,0x3c,0xae,0x54,
- 0x15,0x34,0x19,0x53,0x3a,0xcb,0x18,0x67,0x1c,0x89,0x9b,0xb6,0x0c,0xc1,0x17,0x9b,
- 0x42,0xf6,0x91,0xb2,0x90,0x3a,0x02,0x5f,0x8c,0x7d,0x1f,0x8b,0xff,0xb0,0xcf,0x37,
- 0x1b,0x53,0x0a,0x51,0xdb,0x6b,0x86,0xe4,0x25,0xcf,0x11,0x84,0xc9,0xd2,0x17,0xfa,
- 0x90,0xe4,0xd0,0x1b,0xc6,0xd0,0x58,0x12,0x65,0xbf,0x00,0x88,0x8d,0x16,0xb5,0xbc,
- 0xed,0xeb,0x82,0x31,0x23,0x5a,0x88,0xf8,0xb4,0xb6,0x0d,0xe3,0xf5,0xbf,0x8c,0x2b,
- 0x18,0xb0,0x1e,0xfe,0x1a,0x46,0xbb,0x22,0x03,0xf9,0xe7,0xe0,0x89,0xbb,0x22,0xd5,
- 0x9f,0x84,0xd7,0xe0,0x25,0xe3,0x4a,0x73,0x64,0xc0,0xf7,0x7b,0x58,0xa6,0x4b,0xda,
- 0x15,0x94,0x4a,0xbc,0x48,0x46,0xca,0x10,0x91,0x8d,0xd3,0xff,0x62,0x8b,0x92,0xa8,
- 0x3d,0xec,0xdb,0x55,0x7c,0xa6,0xe9,0xc2,0xf4,0x70,0x9f,0x6f,0xb7,0x1a,0xc4,0x82,
- 0x97,0xbe,0x02,0x56,0xf9,0xb2,0x01,0x5a,0xba,0x98,0x26,0x85,0xa5,0xe0,0x86,0x88,
- 0x2c,0x3f,0xe0,0xc6,0x5f,0xbf,0xcb,0xc4,0xbf,0xca,0x06,0xd4,0x7b,0xe2,0xa7,0x3a,
- 0x0e,0x18,0x79,0xfd,0xea,0x07,0xb8,0xef,0x84,0x2a,0x59,0xde,0x05,0xdd,0xa1,0x73,
- 0xba,0x27,0x73,0x07,0x29,0x37,0x58,0xc6,0xcb,0x4e,0xa1,0x12,0x8d,0x31,0xf1,0x2f,
- 0x4e,0xef,0xef,0x14,0x82,0x31,0x92,0x79,0x80,0x5d,0xdf,0x63,0xa1,0x31,0x03,0xc7,
- 0x30,0x7a,0x93,0x57,0x8d,0xef,0xd9,0xf5,0x5f,0x3b,0x3b,0x82,0xb1,0xbc,0xc5,0x6e,
- 0xfd,0xe5,0xc7,0xb2,0xcf,0x0f,0xf9,0xd9,0x20,0x8f,0x7f,0x59,0x29,0xc4,0x70,0x03,
- 0x88,0xb6,0x12,0x9c,0xa6,0xf3,0xba,0x09,0x54,0x04,0x53,0x66,0x36,0x8c,0x8b,0x7f,
- 0x89,0x96,0xec,0x97,0x9d,0x5b,0x88,0xd1,0x2e,0xe5,0xd7,0xa4,0x2e,0xab,0x65,0x48,
- 0xb8,0x4c,0xeb,0x93,0x2c,0x23,0xf1,0xb2,0x56,0x4f,0xf3,0x4f,0xab,0x73,0x6c,0xfc,
- 0x95,0x74,0x07,0xb9,0xea,0x6c,0x83,0x71,0x6b,0x30,0x44,0xa6,0x15,0xd0,0x49,0xd8,
- 0xb2,0x92,0xb5,0x08,0x23,0xca,0x94,0x12,0x3b,0x52,0x33,0xe3,0xe3,0xea,0xbf,0x6c,
- 0xf5,0xa8,0x2e,0x58,0x14,0x94,0x97,0x15,0x90,0xa6,0x20,0x3f,0x51,0xc3,0xa1,0xd9,
- 0x42,0x3e,0xa6,0x02,0xc6,0x60,0xbe,0x16,0xad,0x8b,0xe6,0x6f,0xce,0xe8,0x7f,0x65,
- 0xe9,0x76,0x55,0xd9,0xb5,0x5d,0x7e,0x24,0xe2,0xc0,0x20,0x45,0xed,0x9d,0xcc,0xa3,
- 0x7e,0xcb,0xdd,0xc5,0x33,0xca,0xbe,0x58,0xd5,0xac,0xfc,0xe8,0x63,0xf4,0xbf,0x9c,
- 0xda,0xae,0x69,0xc6,0x75,0x36,0xfd,0x78,0x5e,0x56,0x57,0x17,0xf9,0xa9,0xc9,0x8c,
- 0xbd,0x4a,0x15,0xa2,0xbf,0xb1,0xfa,0x5f,0xae,0xf8,0x57,0x1f,0xed,0x0a,0x55,0x44,
- 0xd5,0x1a,0x3f,0x18,0xfa,0x72,0xde,0xb2,0x45,0x5f,0xc1,0x8c,0x44,0x97,0x1e,0xb8,
- 0xdd,0xae,0x4b,0xea,0x57,0xb2,0xf8,0x0f,0x7b,0x32,0xf3,0x8c,0x87,0x06,0x28,0x04,
- 0x66,0xcc,0x22,0x0b,0xda,0xa5,0x24,0x76,0xd1,0x7c,0xea,0x8e,0x7f,0x8d,0x34,0xd7,
- 0x76,0x38,0xf5,0x3b,0x0b,0xb3,0xf5,0xbf,0x9c,0x79,0xd6,0x22,0x4d,0x2a,0x06,0xb9,
- 0x46,0x43,0xb5,0x4d,0xbe,0x47,0xc0,0xd8,0xad,0xd5,0x35,0x15,0x60,0xcb,0x5b,0xd0,
- 0xd5,0xb9,0x1e,0x89,0x61,0x8b,0x6a,0x6e,0xb7,0x78,0xe3,0xeb,0x9b,0x0a,0xb2,0xf8,
- 0xe7,0xc7,0x4a,0x56,0x59,0x0b,0xc7,0xb2,0x16,0xc9,0xdc,0x0c,0xbf,0x3a,0xeb,0x42,
- 0xfc,0xc5,0xd6,0xeb,0xf7,0xa4,0x1e,0x76,0x15,0xe9,0x85,0x0c,0xfe,0x1a,0xca,0xc4,
- 0xbf,0xaa,0xc8,0x02,0x30,0x4a,0x86,0x48,0x01,0x43,0x5b,0x88,0xbf,0x84,0x7c,0x4a,
- 0xf0,0xb7,0xd7,0xf2,0x31,0x27,0x19,0xfe,0xb2,0x22,0x62,0xca,0x38,0xfe,0x43,0x17,
- 0xa5,0xe1,0x1d,0x7d,0x72,0x97,0xec,0x65,0x40,0x4c,0xee,0x22,0x2b,0xb2,0x65,0xbf,
- 0xe4,0x56,0xb2,0xdc,0xa9,0xff,0x8a,0x45,0x27,0xa8,0xff,0xca,0x75,0xe9,0x7f,0x21,
- 0xcb,0x8a,0x8d,0xe8,0x71,0xdd,0x31,0xc7,0x75,0xfa,0x3c,0x26,0x1b,0xb7,0x9e,0x0b,
- 0x79,0x43,0x97,0x09,0x77,0xc2,0x46,0x77,0xfd,0x97,0xfd,0xdb,0xb5,0x51,0x77,0xb8,
- 0xca,0x29,0x5a,0xcc,0x4f,0x4c,0x73,0xe7,0x28,0x92,0x3d,0x2d,0xbc,0xfe,0xcb,0xa8,
- 0x6b,0x59,0xbb,0xc9,0xcd,0x7f,0x38,0x5e,0xdb,0xeb,0x2d,0x57,0x91,0x17,0x52,0x50,
- 0x2e,0xb3,0x43,0x90,0x7d,0x24,0xa3,0xe9,0x46,0x18,0x46,0x9b,0x28,0xfe,0x65,0xcb,
- 0x56,0x0a,0x2c,0x36,0xda,0x6a,0xdd,0x24,0xd6,0xfd,0x83,0x81,0x54,0xcc,0x3f,0xa4,
- 0xdd,0x8e,0x46,0x98,0xe8,0xed,0xc8,0xaa,0xff,0x22,0x4e,0xfc,0xcb,0x4f,0x17,0x80,
- 0x91,0xc3,0x5a,0xd2,0xac,0xa5,0x32,0xe1,0xe3,0x5d,0xd3,0x61,0x4c,0x51,0x40,0x7c,
- 0xb8,0xb5,0x86,0xe5,0x28,0x92,0xfd,0x5f,0x2c,0x4f,0x4e,0x54,0xff,0xc5,0xfc,0x8d,
- 0x0a,0x3b,0x5b,0x83,0xf9,0xe1,0x6c,0x47,0x2b,0xb5,0xe4,0x9f,0x96,0xa1,0x5a,0x25,
- 0xe6,0x1f,0x4e,0x7b,0xdd,0xda,0xd1,0xf4,0x74,0x40,0x98,0x80,0x7f,0x83,0xcb,0x7e,
- 0xa9,0x2d,0x45,0x9c,0x85,0x0f,0x70,0x01,0x0b,0xd0,0x88,0x3c,0xda,0x45,0x2b,0x91,
- 0xc7,0x03,0x80,0x86,0x52,0x36,0xc0,0xde,0xcf,0x07,0x3a,0xf4,0x83,0x00,0x10,0xc6,
- 0xd4,0x7f,0xd9,0x41,0x2e,0x6e,0xec,0x32,0x6f,0x49,0xfb,0xa2,0x3c,0x22,0x06,0x88,
- 0x8c,0x49,0x83,0xb1,0x2e,0x64,0x44,0xbc,0x19,0x69,0xe7,0x79,0xfc,0x2b,0x18,0x9d,
- 0x48,0xff,0x4b,0xc1,0x04,0x78,0x5f,0xea,0x6b,0xd6,0x4e,0x84,0xfc,0x1b,0xdf,0x72,
- 0xa8,0xce,0xc1,0x6f,0x99,0xc4,0x53,0xe2,0xef,0xb7,0x36,0x29,0x61,0x3f,0x5d,0x44,
- 0xb3,0xf2,0x0f,0x9d,0xfa,0xaf,0x44,0x3d,0xe6,0x1f,0x02,0x9e,0xa6,0x73,0xd2,0x05,
- 0xfd,0xd2,0x7e,0xf2,0x0e,0x9d,0x9b,0xcc,0xff,0x40,0xba,0x1f,0x19,0x39,0x70,0x4c,
- 0x84,0xf4,0x24,0x6a,0x62,0x0e,0x3f,0xb6,0xf7,0x90,0x5d,0x7f,0xc1,0xf8,0x0f,0x93,
- 0xf9,0x6c,0x7e,0xb4,0x5d,0xe1,0xca,0x33,0x6b,0x5a,0xc4,0xcd,0xc6,0xe7,0x60,0x97,
- 0xf1,0x00,0x38,0x32,0x56,0xd1,0x4a,0xe2,0x59,0x89,0xf1,0x2f,0x52,0x99,0xf6,0xdd,
- 0x23,0xdd,0x45,0x76,0xa2,0x74,0x1a,0xe7,0xf0,0xaf,0xec,0x87,0xf9,0x71,0xeb,0x7f,
- 0x39,0xf3,0x2c,0x54,0xf6,0xe1,0x2e,0xd3,0x8c,0x41,0xc9,0x6b,0x0d,0x58,0x94,0x5d,
- 0x62,0x25,0xc9,0xc3,0x0d,0x08,0x03,0x6a,0xb7,0x21,0xf3,0xe4,0x4e,0x7f,0x19,0xdf,
- 0x07,0x77,0x69,0x95,0x03,0x4a,0x53,0x7c,0x7c,0xfe,0xa1,0x6d,0xb0,0xf8,0x17,0x78,
- 0xf8,0x44,0x64,0x94,0xce,0x84,0x51,0x62,0x5a,0x7b,0xdc,0x42,0x3c,0xde,0x4f,0x70,
- 0x3f,0xb3,0x3d,0xd8,0xae,0x28,0x62,0xbf,0x85,0xbf,0x4a,0xc6,0xc4,0xbf,0x30,0xda,
- 0x25,0x1e,0x67,0x05,0x77,0x12,0xb8,0x85,0x42,0x1d,0x79,0x08,0xbd,0x26,0xcb,0x43,
- 0x63,0xf9,0x48,0xcd,0xbc,0xfe,0x2b,0x1a,0x49,0x07,0x03,0xd2,0xdb,0xd9,0xf5,0x5f,
- 0xd7,0xdb,0xd7,0x79,0x18,0xab,0x48,0x58,0xfe,0x61,0x88,0x1b,0x82,0xc5,0xab,0x66,
- 0x49,0x88,0x8e,0xd8,0x2b,0x78,0x5e,0x8f,0x98,0xd5,0xc9,0x0c,0xfe,0xda,0x67,0xe9,
- 0x7f,0xb1,0xb0,0x17,0xfa,0x2d,0xc5,0x96,0x57,0x99,0x80,0x59,0xfd,0x15,0x29,0xaf,
- 0x60,0xfc,0x87,0x00,0xc4,0xcc,0xb5,0xcc,0xe1,0x8c,0x87,0x1b,0x2c,0xcf,0x33,0x84,
- 0xfc,0x1b,0xc4,0x85,0xbf,0x1c,0xdf,0xd8,0x2a,0x04,0x13,0x30,0xcb,0xcb,0xb7,0x96,
- 0x30,0xda,0xc3,0xd9,0xf9,0x58,0x11,0xf6,0x1b,0x4b,0xc0,0x8b,0xa4,0xd2,0xe1,0x18,
- 0x1b,0xdc,0x4d,0xfc,0x9a,0xb2,0x39,0xae,0x4f,0x18,0xff,0xb2,0xb5,0xbd,0x58,0xfe,
- 0x21,0x0b,0xb1,0x4d,0x27,0xd3,0xed,0x8c,0x44,0x4e,0x71,0xaf,0x4d,0x8f,0xd9,0x71,
- 0xb4,0x17,0x3c,0xdb,0x5d,0xf1,0x2f,0xc6,0xad,0xe1,0x5a,0xaf,0x5c,0xfe,0x9c,0xe2,
- 0x32,0x19,0x6d,0x4a,0x80,0xa8,0xa8,0xff,0xf5,0x88,0xe6,0x3d,0xca,0x0e,0x4c,0x7a,
- 0xf4,0x80,0xc1,0x06,0x87,0xa8,0x6e,0x06,0x92,0x8e,0xfe,0x17,0xe6,0x1f,0xae,0x84,
- 0x5f,0xf1,0x34,0x97,0x5b,0x3a,0xc5,0x0b,0x24,0x15,0x16,0xe9,0xfb,0x06,0xc0,0xae,
- 0x5a,0x52,0xd0,0x0d,0xb8,0xf2,0x88,0x11,0x39,0xcc,0xdc,0xb0,0x61,0xbd,0xd6,0x7e,
- 0x52,0xc2,0x38,0xf3,0x86,0x2b,0xfe,0xc5,0x7c,0x75,0x01,0x83,0x53,0xa8,0xff,0x25,
- 0x5c,0xc4,0xe2,0x91,0x3e,0x16,0x34,0xc1,0xb4,0x43,0xb8,0x13,0x90,0xff,0x30,0xc2,
- 0x70,0x93,0x7c,0x51,0xab,0x11,0xdd,0xf5,0x5f,0xae,0xf8,0xd7,0x08,0xa9,0x11,0xf2,
- 0x91,0xd2,0xf0,0x14,0x62,0xbd,0x01,0x29,0x05,0xf7,0x02,0x66,0x2d,0xaa,0x15,0xf0,
- 0x58,0xcd,0x21,0x0b,0xcd,0xf2,0x16,0x72,0xa4,0x3d,0x02,0xf0,0x8d,0x9d,0x6f,0x44,
- 0xd2,0x93,0xf0,0xf9,0xc2,0xf8,0x17,0x5d,0x29,0xb9,0xf2,0x0f,0x77,0x8b,0x7e,0x5e,
- 0xff,0xf5,0x04,0x1e,0x09,0x6e,0x42,0x32,0x49,0xfe,0x86,0x94,0x31,0xbc,0xa8,0xa3,
- 0xd4,0x14,0xe6,0x28,0x26,0x03,0x94,0xe9,0x7f,0x55,0xa5,0x17,0x70,0x8d,0x66,0xff,
- 0x69,0x25,0x2b,0xff,0x10,0x23,0x86,0xf0,0x58,0xf5,0x6b,0x78,0x48,0x18,0xd5,0x8a,
- 0x3a,0xe4,0x38,0xea,0x61,0x03,0xaa,0x25,0x6d,0x22,0xcb,0xd4,0x55,0x3c,0x6d,0x24,
- 0x28,0xcc,0xd6,0x44,0x3b,0x1f,0xdb,0x7f,0x94,0xc7,0xbf,0x92,0xee,0xfc,0xc3,0x2e,
- 0x4c,0x71,0x44,0xde,0x95,0x27,0x62,0x22,0x85,0x7f,0xa2,0x4a,0x5f,0x43,0xab,0xda,
- 0xaf,0xdb,0x4e,0x2a,0xe4,0x4e,0xd1,0x4f,0x3d,0x81,0x5c,0xd2,0xbc,0x17,0x15,0x99,
- 0x93,0x62,0x50,0xb3,0xeb,0x9b,0xe4,0x9e,0x52,0x7f,0x19,0xdc,0x09,0x21,0x57,0xfc,
- 0xcb,0x0c,0x7f,0x80,0x94,0x74,0xb4,0xdf,0xe8,0x0e,0x04,0xb7,0x4b,0x8f,0x91,0x77,
- 0xfa,0x23,0x2d,0xbe,0x7d,0x35,0xd3,0x94,0x23,0xa4,0xb6,0xa9,0x60,0x8d,0x34,0x2d,
- 0xc1,0x18,0x6f,0x9e,0x52,0x83,0x19,0xb2,0x71,0xf8,0xab,0x61,0xef,0xb6,0x72,0x39,
- 0x83,0xbf,0x46,0x6c,0x6c,0xf5,0x7b,0x32,0x57,0xae,0x6e,0x51,0x2f,0xe6,0x5e,0xc6,
- 0x24,0xc3,0x16,0xe9,0xf7,0xe2,0x95,0xfc,0xfd,0x7a,0x7e,0xfa,0x07,0x3f,0x61,0x0a,
- 0x53,0xf9,0xa7,0xda,0x2e,0x02,0x54,0xe5,0xf5,0x5f,0x4c,0x9a,0xd9,0x77,0x2e,0x2b,
- 0xfe,0x65,0x76,0x0f,0x30,0xd8,0x7e,0x48,0x0b,0x1b,0x8b,0x92,0xea,0x13,0xe4,0xc2,
- 0xbc,0x7b,0x4a,0xaa,0x76,0xe2,0xbf,0x2e,0x46,0xb0,0x9e,0x28,0x70,0xf0,0x08,0xee,
- 0x8c,0x37,0x61,0x45,0x21,0xfb,0x3e,0x88,0x10,0x1b,0xc2,0xda,0xba,0x6d,0x5f,0x73,
- 0xc7,0xbf,0xee,0xc4,0x90,0xf1,0xd5,0xef,0x1a,0xab,0xe3,0xfe,0x7d,0x9d,0xa9,0xf2,
- 0xff,0x4b,0xd9,0xb3,0x61,0x56,0xbb,0xb2,0x1d,0xeb,0x22,0xfb,0x83,0x54,0xd9,0x27,
- 0x95,0xe1,0x32,0xcd,0x54,0x53,0x0b,0xfe,0xc1,0xe8,0x6c,0x40,0x31,0x3e,0x06,0x5d,
- 0xfd,0xba,0x1a,0x76,0xf3,0x6f,0xa4,0x78,0xf8,0x3e,0x4d,0xe2,0xc9,0x40,0xf2,0x3a,
- 0xcd,0xb3,0x95,0xa6,0xcc,0x0a,0xa2,0xe6,0xc1,0x6d,0xdc,0x69,0x06,0x09,0xc9,0x13,
- 0x45,0x7c,0x8f,0x19,0xaa,0x17,0xae,0xdc,0xe6,0x3c,0x44,0xba,0xbe,0x0c,0x3c,0x10,
- 0x57,0xfc,0xeb,0xe9,0x44,0x19,0xe6,0xc5,0xfd,0xb2,0xac,0x95,0xde,0x18,0xeb,0x2c,
- 0xf5,0xdc,0xa1,0xef,0xfc,0xae,0x5e,0x91,0x17,0x15,0x7f,0x44,0xe1,0xfd,0x1c,0x52,
- 0xa2,0xe2,0xb5,0xf3,0x00,0x91,0x6d,0x57,0x6f,0x13,0xbf,0x8a,0x19,0x89,0x1c,0x88,
- 0xed,0x48,0x95,0x2d,0x51,0xef,0x2a,0x72,0xe5,0x1f,0x0e,0xa7,0x75,0xd3,0x37,0x43,
- 0x7c,0x9d,0x1e,0x24,0x3d,0x43,0x8b,0xc2,0x8d,0x94,0x8e,0x28,0xdb,0x4e,0xac,0x6b,
- 0x97,0x1e,0xd6,0x9f,0xd3,0x82,0x46,0x30,0xa1,0x7a,0x8d,0xdf,0xd2,0xba,0xbf,0xf1,
- 0x25,0x05,0x06,0xcd,0x10,0xa3,0x01,0x22,0x4b,0x84,0x34,0xdf,0xcc,0x72,0x37,0xff,
- 0x86,0x7c,0x3d,0x16,0x79,0x0d,0x1b,0x17,0xc9,0xcd,0x60,0xa8,0xe7,0xf0,0xa0,0xa3,
- 0x6f,0xa1,0xc9,0x1e,0xab,0x6a,0xf4,0x1c,0x2e,0xce,0x7f,0x0d,0x7d,0x89,0x34,0xe7,
- 0x20,0xb5,0x2a,0xc2,0x4a,0xea,0xc9,0xa2,0xe1,0x6c,0xfd,0xaf,0x30,0x96,0x7d,0xa1,
- 0xa8,0x7a,0x98,0x82,0x2f,0xb1,0xb4,0xe4,0x50,0x7b,0xb7,0xf1,0x05,0x0a,0xce,0xc9,
- 0x05,0x31,0x12,0xf3,0x52,0x5f,0x05,0x39,0x22,0x30,0xfd,0xaf,0xa0,0xcc,0x73,0x4a,
- 0xd9,0x0b,0x16,0x81,0x98,0xe8,0xd2,0x5f,0x7e,0x9a,0x94,0xf5,0x06,0x5a,0x18,0xdd,
- 0x53,0x00,0x7c,0xb6,0xa2,0x10,0x16,0x82,0x19,0x4a,0xb3,0x78,0x42,0xd9,0x25,0x04,
- 0x89,0x82,0xe5,0x99,0xb0,0x7f,0x51,0x98,0xd5,0xcd,0xf2,0xae,0x4c,0xfe,0x61,0x99,
- 0x11,0x6d,0x11,0x5d,0xfa,0xcb,0x3b,0x69,0xf2,0x34,0x0b,0x7b,0x3d,0x82,0x20,0x6b,
- 0x79,0xd1,0x1d,0xf2,0xc6,0x76,0xc0,0x5f,0x51,0xf1,0x35,0x06,0xcd,0x60,0x9e,0xa7,
- 0x28,0xdf,0x8b,0x33,0xfe,0x43,0x44,0xbe,0xdf,0xb0,0xc0,0x9a,0xb9,0x4c,0xdf,0x34,
- 0x46,0x7f,0x39,0x79,0x14,0xb6,0xa4,0x5e,0xfa,0x48,0xf3,0x74,0x33,0x6f,0x6e,0x7c,
- 0x9e,0x9c,0x38,0x1c,0x3b,0x98,0x27,0xc7,0xd9,0x1b,0x72,0x67,0x80,0x34,0x78,0x43,
- 0x60,0xcc,0xb6,0x85,0x54,0xac,0x75,0x37,0x63,0xa4,0x74,0x4e,0x96,0xfe,0x17,0xa9,
- 0x49,0x79,0x93,0xd2,0x28,0x79,0x95,0xd6,0xd0,0xfc,0x33,0xea,0x37,0x73,0x5f,0x4d,
- 0xd7,0x24,0xaa,0xdf,0x44,0x46,0x29,0x52,0xdd,0xee,0x7d,0x63,0xd2,0x6c,0xf2,0x6b,
- 0xa1,0x3e,0xe9,0x1b,0x74,0x6b,0x34,0x5f,0x36,0x77,0x51,0x6f,0x5a,0x3a,0xcf,0x79,
- 0xc3,0x58,0xfc,0x8b,0x46,0x04,0xe6,0xd7,0xa5,0xa3,0xf0,0xb2,0x22,0x6a,0x52,0x1f,
- 0x12,0x2c,0x21,0xe6,0x11,0x46,0x90,0x3e,0x89,0x0a,0x43,0xa4,0x4e,0xf6,0xb5,0xaf,
- 0x72,0x67,0x24,0xea,0x11,0xfd,0x1f,0xb2,0xe3,0x5f,0xf4,0x03,0x63,0x5d,0x62,0xd2,
- 0x9b,0xc2,0x21,0x58,0x82,0x85,0x09,0x1f,0x0a,0x81,0xd5,0x19,0xf9,0x93,0xb1,0xda,
- 0x2b,0x51,0x1b,0xf3,0xad,0x97,0xa6,0x29,0x87,0xc0,0xab,0xf4,0x96,0x20,0xff,0x86,
- 0x6e,0xf3,0xcf,0x1b,0x21,0xf4,0x69,0x0f,0xba,0xe2,0x5f,0x64,0xab,0xb1,0x00,0xfc,
- 0x67,0x56,0xbf,0x13,0x40,0xef,0x74,0x37,0x8a,0x41,0x30,0x45,0x27,0x5a,0xfb,0x4f,
- 0x6a,0x22,0xbe,0x8d,0xac,0x16,0xaa,0x62,0x81,0x8d,0x5b,0xa7,0x8a,0x8c,0xdb,0xd0,
- 0x02,0x62,0xf3,0xc0,0x7f,0x76,0xe1,0xaf,0x2e,0x9d,0x75,0xf5,0xcd,0x5b,0x4d,0xa6,
- 0x81,0x8f,0xed,0xa9,0xc8,0xd9,0x6d,0x4c,0x6f,0x66,0x59,0x67,0xf0,0xe7,0x28,0xf5,
- 0x5b,0xd1,0x06,0x06,0x56,0xad,0xe6,0x18,0xad,0x86,0x95,0xd9,0xd8,0x85,0x80,0x6e,
- 0xfd,0x41,0x37,0xfe,0xd2,0x78,0xaa,0x1b,0xf2,0x1f,0x36,0x29,0x5a,0x41,0xae,0xd1,
- 0xa5,0x05,0x9a,0x02,0x85,0x9e,0xdc,0xc6,0x36,0x26,0xfb,0x25,0xb6,0x37,0xb6,0x62,
- 0x01,0x45,0x51,0x5c,0x26,0xad,0xd6,0x60,0x78,0x4e,0x93,0x0b,0xb2,0xf1,0xd7,0xf0,
- 0x72,0xbf,0xc7,0x47,0x8b,0x7a,0x93,0x6b,0x96,0xcf,0xba,0x76,0x61,0x7c,0x4d,0xd9,
- 0xb6,0x91,0xe5,0xb5,0xd7,0xe6,0x3f,0xd8,0x56,0x96,0xec,0xbf,0xe3,0x7e,0x8f,0xef,
- 0x01,0xa9,0x2c,0x19,0x25,0x11,0xcf,0xc2,0xb8,0xaa,0x6b,0xfd,0x8e,0xfe,0x17,0xc6,
- 0xbf,0x68,0x79,0x06,0x7f,0x91,0x2b,0x15,0xf5,0x86,0x84,0xfc,0x87,0x57,0x98,0xec,
- 0x17,0xa6,0x01,0xe8,0x73,0xa2,0x05,0x8c,0x08,0x91,0x5c,0x67,0xf8,0x5e,0x2a,0x3f,
- 0x47,0x77,0xb3,0x8a,0xb0,0x47,0x06,0x93,0xa3,0xba,0xe5,0xf3,0x5f,0x29,0xb9,0xde,
- 0xa8,0xce,0xe0,0x2f,0x61,0xd0,0x26,0x39,0x3c,0x67,0x61,0x2b,0xe9,0x5c,0xee,0x8b,
- 0x72,0x8d,0x51,0x30,0xc0,0x5a,0xb0,0x7c,0x4c,0x98,0x49,0xf2,0xb0,0xfe,0x6b,0x18,
- 0x2b,0xc2,0x88,0x68,0xe5,0x31,0xc2,0x60,0x5f,0x73,0x36,0xff,0x86,0x3f,0xc3,0x3f,
- 0xaf,0x20,0xff,0xe1,0xaf,0x09,0x53,0x04,0xc3,0x96,0x02,0x87,0x76,0x03,0x5b,0x92,
- 0x22,0xb5,0xf9,0xe7,0x53,0x30,0xf8,0xc8,0x18,0xfc,0xb5,0x2d,0x53,0xff,0xb5,0x38,
- 0x81,0x46,0x8e,0xce,0x22,0x62,0x8c,0x6d,0x03,0xba,0x64,0x0d,0x8d,0xa8,0x56,0x25,
- 0xbb,0x6b,0xc4,0xf4,0xb4,0x5a,0xda,0xe0,0xc2,0x5f,0x5d,0x94,0xdf,0x12,0x21,0xb8,
- 0x7f,0x1a,0x90,0x7f,0x83,0xae,0x26,0x7a,0x94,0x6c,0xcc,0x54,0x14,0x56,0x50,0xc6,
- 0xa8,0x59,0x08,0x48,0xbc,0x35,0x93,0x89,0x0a,0xc6,0xa6,0x2c,0xfc,0x65,0x32,0x4a,
- 0xc3,0x37,0x1b,0x0e,0x19,0xdd,0x2d,0xc1,0x4d,0xea,0x20,0x59,0x6d,0x84,0x17,0xe7,
- 0xe2,0x24,0xac,0x46,0x72,0x8c,0x1f,0x76,0x56,0xc4,0xe1,0x7e,0x8e,0x29,0xdf,0xb7,
- 0xa8,0xfb,0xf9,0xfd,0x6c,0x76,0x37,0x4f,0xc8,0x3f,0xff,0x82,0xc8,0xb0,0xd5,0x06,
- 0xb5,0x8f,0x9c,0xdd,0xc4,0x23,0x62,0xfe,0x51,0x94,0x69,0xd3,0xa4,0x37,0x75,0x7c,
- 0x52,0x16,0x6d,0x6a,0x73,0x83,0xe2,0x1b,0x23,0xcb,0x16,0x8d,0xe1,0xdf,0x60,0x49,
- 0xaa,0xa7,0xe9,0x10,0xbc,0x3d,0xe0,0x7d,0x58,0x46,0x47,0x8c,0x6e,0xcd,0x0b,0x68,
- 0x4b,0x3c,0x09,0xfe,0x8f,0x17,0x65,0xe3,0xfa,0x49,0x44,0xc9,0x6f,0x57,0xf5,0x78,
- 0x3f,0xb1,0x33,0x5a,0x0d,0x8c,0x88,0x49,0x6e,0xfd,0xaf,0x56,0x16,0x9d,0x3c,0xaf,
- 0x3f,0x1c,0xbd,0x39,0x11,0xd5,0xc5,0xd9,0xfa,0x7e,0xbd,0x3c,0x01,0xfb,0xd7,0x6c,
- 0xf2,0xb0,0x0c,0x20,0x6b,0x68,0xc3,0x1c,0xf2,0x53,0x52,0x4d,0x37,0xbd,0x27,0xce,
- 0x21,0x0f,0xb7,0xdb,0xf9,0x87,0xd4,0x4f,0x3b,0xd2,0x1e,0xb7,0xfe,0x17,0x78,0x68,
- 0xd7,0xb1,0x38,0x88,0xa1,0x87,0x14,0x24,0xf5,0x4a,0x99,0xfa,0x88,0x07,0x35,0xb9,
- 0x28,0xa9,0xd0,0xa3,0xb3,0x3d,0xcc,0xcd,0x28,0x53,0x66,0x82,0x1b,0xd2,0x96,0xb4,
- 0x75,0x0c,0x4d,0xbd,0x57,0x99,0x2c,0x66,0xf4,0xbf,0xc8,0x0e,0x65,0x8b,0x79,0x1d,
- 0xbe,0x9f,0x5b,0xc9,0xd4,0xe6,0xbc,0x16,0x8f,0x06,0xf7,0xc6,0x92,0x01,0xcf,0xca,
- 0xb8,0x40,0xda,0xe9,0x8f,0xb7,0x2a,0xba,0xa8,0xe9,0x8f,0x93,0x60,0x33,0xfc,0x13,
- 0x8b,0xf5,0x55,0xca,0x12,0x0b,0x44,0x28,0xc9,0x74,0xe0,0x94,0x5b,0xff,0xeb,0x0f,
- 0x3c,0x92,0x75,0x99,0xf4,0xd1,0x90,0x1e,0x9c,0x2d,0x15,0x91,0x73,0xb4,0x26,0x59,
- 0x35,0x22,0x4d,0x21,0xa7,0xe8,0x4c,0xdd,0xbb,0x18,0xdc,0xb0,0xcf,0x01,0x10,0xab,
- 0x5c,0xac,0xde,0x4f,0x5e,0xb0,0xf5,0xbf,0x58,0xfe,0xe1,0x62,0xb7,0xfe,0x97,0x55,
- 0x8a,0x8e,0xf1,0x40,0xf4,0xde,0x05,0xb6,0x28,0x94,0x89,0xbb,0xe1,0x12,0xfc,0x1c,
- 0x9d,0xf6,0x6f,0xa1,0x54,0x7d,0x42,0xda,0x6e,0x87,0xbd,0xce,0x28,0xcc,0x48,0x94,
- 0x8f,0xd7,0xff,0xba,0x4c,0x2e,0xd2,0x1a,0x1d,0x1c,0xc5,0x59,0x48,0x84,0x88,0xdc,
- 0x86,0x1f,0x18,0xa3,0x89,0x7a,0x3d,0xd8,0x5f,0x7e,0x99,0x1c,0x6f,0xad,0x4f,0xae,
- 0xc3,0xae,0x51,0x9e,0x7f,0xf8,0x9e,0x71,0x19,0x8d,0x93,0x59,0xfc,0xf3,0x06,0x83,
- 0x54,0xaf,0x18,0x4f,0x37,0xdd,0xb8,0x54,0xb9,0x5b,0x4c,0x60,0xa0,0xb0,0x1d,0x5a,
- 0x06,0xcc,0x07,0x00,0x96,0xc2,0xbe,0xf3,0x1f,0xe4,0x71,0xa1,0x72,0x44,0x1d,0x16,
- 0x35,0xb2,0x2f,0x01,0x18,0xf6,0x6e,0xd8,0x77,0x9e,0xa1,0x65,0x7d,0xea,0x3c,0x37,
- 0xfe,0x7a,0xda,0x28,0x3b,0xe8,0xb1,0x78,0x26,0x15,0x25,0xe4,0xb9,0x53,0x87,0xeb,
- 0x60,0x56,0xe7,0x09,0x6d,0x9b,0x5e,0xa9,0xa1,0x81,0xf8,0xeb,0x2f,0xf3,0x9a,0xc5,
- 0x12,0xe3,0x69,0x2b,0xcf,0x93,0x76,0xc1,0x5a,0xa8,0xcd,0xf1,0xbe,0x0c,0xfe,0xea,
- 0xc2,0x48,0x4d,0xa8,0xe8,0x39,0xba,0x3b,0x31,0x9d,0x28,0x61,0xf1,0x79,0x92,0x32,
- 0x82,0x49,0xa5,0x54,0xec,0x13,0x28,0x46,0xd6,0x64,0xf1,0x4d,0xc6,0xdf,0x0b,0x7e,
- 0x0b,0xbc,0xf8,0xec,0x33,0xc6,0x1e,0x92,0xec,0xbd,0x4e,0x71,0xeb,0x2f,0x9f,0x27,
- 0xdd,0xa7,0x0b,0x30,0x6e,0x75,0x9e,0x51,0x16,0xab,0x5f,0x27,0x17,0x34,0xc0,0x56,
- 0x07,0x60,0x93,0x7a,0x5b,0x88,0x34,0x3f,0x05,0x5e,0x2e,0x05,0x37,0x2c,0xa4,0x6e,
- 0xe9,0xb4,0xf3,0x0f,0xcb,0x79,0x56,0x8c,0xaf,0x24,0x0b,0x7f,0x35,0xb3,0xb4,0xc3,
- 0x37,0xc8,0xf9,0x86,0x48,0x47,0x41,0xa8,0xfc,0x09,0x85,0x2b,0xb8,0x95,0x9f,0x26,
- 0xef,0x88,0xe0,0xce,0xb5,0x4a,0x69,0x01,0xdc,0x03,0xd8,0x90,0xe0,0xca,0x0e,0xe8,
- 0x63,0x0f,0xda,0xbf,0xd8,0xf9,0x87,0x18,0xff,0x3a,0x4f,0xc2,0x07,0xd7,0x21,0xfe,
- 0x7a,0x5b,0xf1,0xd3,0x85,0xc3,0x52,0xa9,0x7e,0x5c,0xb8,0x3f,0x95,0x8f,0x11,0xb1,
- 0x63,0xb0,0x0f,0x7a,0xfb,0x56,0x9d,0x21,0xc7,0xc5,0xb9,0xc4,0xdb,0x2f,0xcd,0x2d,
- 0x3d,0x9a,0xb4,0xf2,0x0f,0xaf,0x68,0x33,0xfa,0xbc,0x2f,0x65,0xe9,0x2f,0x9f,0x60,
- 0x2a,0xc9,0x83,0x64,0x8d,0xe9,0x4f,0x82,0x4b,0x3c,0x9d,0x76,0x9a,0xf7,0xeb,0xde,
- 0xf5,0xe2,0xef,0x62,0xdb,0x3b,0xaa,0x8a,0x94,0xf6,0x49,0xa7,0x3d,0x9d,0x28,0xec,
- 0xbb,0xf9,0xda,0x72,0xa5,0x83,0x72,0xfe,0x43,0x65,0x0f,0xee,0x3b,0x1b,0xdc,0xfa,
- 0x5f,0xdd,0xbc,0xd8,0xa7,0x1f,0x75,0x78,0x87,0x3b,0x52,0x9e,0xe9,0xf2,0x9a,0x83,
- 0x41,0xcc,0xa3,0xee,0x57,0xc0,0x21,0xa7,0xd1,0x76,0x78,0x2a,0xe1,0x3a,0x72,0xc7,
- 0x96,0x78,0x0e,0x23,0xb4,0x57,0x31,0xb2,0xd6,0x83,0x79,0x71,0x19,0xfd,0x65,0xc0,
- 0x5f,0x35,0x32,0x5b,0x82,0x43,0x18,0xa6,0x34,0x4a,0x43,0x05,0x2c,0x89,0x8e,0x28,
- 0x21,0xbf,0x29,0x3c,0xa6,0xac,0x40,0xe0,0xdc,0x81,0xcf,0x69,0xa2,0x14,0xd3,0xe1,
- 0xe2,0x7a,0xe0,0x25,0x96,0x7f,0x98,0x08,0x25,0xcd,0xd9,0xba,0x5b,0xff,0x6b,0x44,
- 0xc3,0x25,0x10,0x4f,0x8b,0x6b,0xc8,0x9e,0xf6,0x60,0xaa,0x38,0x20,0x1e,0x86,0xd7,
- 0x29,0x80,0xe2,0xb7,0x94,0xc3,0x3a,0x92,0xfc,0xf8,0xd3,0xe4,0x48,0x73,0xa4,0x14,
- 0x7c,0x12,0x5d,0x3c,0x24,0xd7,0xa2,0xb3,0xfd,0x14,0x19,0x8d,0x76,0x9b,0xde,0xac,
- 0xfc,0x43,0x44,0x52,0x12,0xd6,0x7f,0xd5,0x91,0x59,0x32,0x4b,0x8b,0xc2,0xda,0x2e,
- 0xd8,0x77,0x86,0x93,0x17,0xc9,0xf5,0xc4,0xd7,0x5a,0x8c,0x8c,0x88,0x91,0x52,0x16,
- 0x11,0xbb,0xa8,0xcd,0x61,0x40,0x0c,0x8b,0xce,0x4c,0xd8,0xbf,0x26,0xd0,0xff,0x22,
- 0x17,0xf5,0x88,0xc2,0x54,0x72,0x18,0x7b,0xf0,0x41,0x56,0x59,0x36,0x07,0x33,0x79,
- 0xe0,0x82,0x65,0x11,0x65,0xdd,0x00,0xbc,0x01,0x8e,0xdb,0x83,0xf1,0x7c,0x23,0x38,
- 0x94,0x1d,0xff,0x2a,0xe0,0xf1,0xaf,0xbd,0xb4,0xea,0xb4,0xda,0x43,0xde,0xc3,0x82,
- 0x3b,0xbb,0xc5,0x93,0x46,0x21,0x30,0x99,0xc5,0xc8,0xb6,0x8b,0x3f,0x23,0x4f,0x52,
- 0xa7,0xab,0xaa,0x55,0xe9,0x29,0xb2,0xf8,0xe7,0x59,0xfd,0x97,0xec,0xb5,0x4a,0x45,
- 0x0c,0xd4,0xff,0x02,0x9f,0x31,0x35,0x0f,0x69,0x0f,0x8b,0x4c,0x23,0x55,0x98,0x24,
- 0x92,0x8c,0x44,0x88,0xac,0x0b,0x3c,0x90,0x36,0x31,0x03,0x8a,0xa9,0x27,0x2b,0xff,
- 0xd0,0xe1,0x6f,0xe9,0x89,0xe1,0xc1,0xa6,0x3f,0xa6,0xf5,0xe8,0x55,0x02,0xf2,0x1f,
- 0x92,0x1e,0xaf,0xdf,0xa3,0xd2,0x78,0x5a,0xef,0x09,0x54,0x49,0xb0,0x8d,0x26,0x5d,
- 0x75,0x7f,0x72,0x15,0xf5,0xf4,0xc4,0x87,0xf9,0x7e,0x91,0xa5,0xff,0x35,0x82,0x47,
- 0x79,0xfb,0x1a,0xdf,0x05,0x5f,0xab,0x6a,0xc0,0xb7,0x53,0xc2,0x22,0x8b,0xf0,0x80,
- 0xef,0xbb,0xe5,0xef,0x1a,0xa3,0x66,0xe4,0x84,0xef,0x47,0x92,0xd7,0x25,0xf6,0x84,
- 0x7c,0x7a,0xdb,0x27,0xd0,0xff,0xfa,0x36,0x02,0xe7,0xed,0xbe,0x43,0xd2,0xeb,0x0f,
- 0x5c,0x46,0x61,0xdf,0x56,0xe9,0x6d,0xfa,0x11,0x89,0xe8,0x8b,0xb6,0x17,0xbf,0xae,
- 0x9d,0xa7,0x11,0xdd,0xb7,0xd5,0x1d,0x08,0x03,0xe3,0xb9,0xfc,0xb1,0xf1,0x2f,0x3b,
- 0x79,0x9b,0xf9,0xf3,0xa7,0x85,0xdb,0x79,0xd2,0x5a,0x00,0x3c,0xfc,0x88,0x36,0x79,
- 0x1b,0xe0,0xa6,0xc3,0x80,0xb6,0xc0,0xe7,0xaf,0xf0,0x1e,0x71,0xf8,0x40,0x68,0x78,
- 0x38,0xb8,0x73,0x02,0xfe,0x79,0xf8,0xc9,0x39,0x5b,0xe9,0x72,0x4c,0xaa,0x39,0x4f,
- 0x3e,0x02,0xef,0xe2,0xda,0x00,0xdc,0x99,0x55,0xa4,0x32,0xe9,0x8b,0x81,0x01,0x1e,
- 0x48,0x68,0x8d,0x2e,0xff,0x86,0xd4,0xda,0xf3,0xe3,0x1f,0x26,0x3d,0x0d,0x1f,0x8c,
- 0x8f,0x7f,0x69,0x35,0x24,0x46,0x15,0xd2,0x60,0x6a,0x22,0xe0,0x29,0x42,0x72,0x15,
- 0x12,0x97,0x59,0xf9,0x2a,0xc1,0x04,0x1b,0x81,0x04,0x1a,0x6c,0xbc,0xdc,0x00,0xeb,
- 0x15,0xf3,0x0f,0x28,0xb3,0x6d,0xfe,0xf9,0x2c,0xfd,0xaf,0x9d,0xdf,0x8b,0xc5,0x14,
- 0xac,0x42,0x6a,0x4d,0x94,0x9d,0x51,0xbe,0x79,0xf5,0xd5,0xc6,0x03,0x89,0xca,0xc1,
- 0xe8,0x62,0x71,0x0a,0x18,0x65,0x43,0xca,0x5f,0x14,0x45,0xc8,0xf7,0x92,0x37,0xda,
- 0xba,0x54,0x65,0xe9,0xe8,0xb7,0x8b,0x5c,0xfc,0xf3,0x1f,0xa6,0xea,0xf8,0x2d,0x31,
- 0x4c,0x42,0xcb,0xbc,0x33,0xa4,0x17,0xe1,0x3a,0x7a,0x1a,0x0c,0x99,0xf4,0x26,0xea,
- 0xfa,0xe0,0x05,0xeb,0x35,0x7a,0xb5,0xd0,0x19,0xaf,0x00,0x2d,0xcf,0xa5,0xec,0x62,
- 0x31,0x2d,0x7c,0xd2,0x1b,0x6a,0x73,0xf1,0xcf,0x7f,0xc7,0x5e,0x82,0x6f,0x93,0xfa,
- 0x26,0x0c,0x84,0x35,0x61,0x46,0xe2,0xa4,0xb3,0x98,0x1f,0x25,0x00,0xda,0xfa,0x37,
- 0x78,0x9a,0x2e,0x15,0x56,0xf7,0x21,0xb1,0x9e,0xe1,0x88,0x0b,0xfc,0x81,0xa7,0x26,
- 0x8e,0xe7,0x9f,0xc7,0x25,0x80,0x07,0xbf,0x47,0xad,0x12,0x8f,0xd0,0xee,0x74,0xd0,
- 0x32,0x4c,0xc7,0xf0,0xfd,0x44,0x0d,0x2a,0xac,0x14,0xd4,0xba,0x7f,0x8c,0x0c,0xff,
- 0x7c,0x56,0xfd,0xd7,0x30,0xb9,0x89,0x74,0x1a,0x92,0x41,0xda,0xc9,0x4c,0x4b,0xf6,
- 0x4b,0xd6,0x6d,0xfd,0x2f,0xc0,0xcc,0x85,0x78,0xbe,0x4a,0xe6,0xb2,0x62,0x70,0xb2,
- 0x4b,0xc4,0xd4,0x8e,0x22,0x8b,0x7f,0x3e,0x2b,0xfe,0xb5,0xab,0x7d,0xc9,0xe9,0xeb,
- 0x66,0xcf,0x9f,0x42,0xda,0xe8,0x12,0x0c,0x72,0x4d,0x29,0x5c,0x45,0xcb,0x86,0x4b,
- 0x11,0x76,0x81,0xf1,0x7a,0xe7,0x4a,0x40,0xd9,0x58,0x79,0xd7,0x69,0xeb,0x7f,0x05,
- 0x26,0xe2,0xdf,0x38,0x4a,0x30,0xb7,0x50,0x5d,0x19,0xff,0x4c,0xc7,0xaa,0x8e,0xb2,
- 0x11,0xe5,0x7e,0xf8,0xd7,0x27,0x19,0x65,0xc3,0x70,0xc1,0xeb,0xe9,0xaa,0x58,0x99,
- 0x29,0xad,0x8c,0x13,0x92,0xa9,0x9b,0x20,0x55,0x67,0x60,0xdd,0xc7,0xf3,0xcf,0x0f,
- 0x91,0x3d,0x69,0xff,0x3e,0xdf,0xcf,0xc4,0xcf,0x92,0xdb,0xd3,0xfe,0x1e,0xef,0x56,
- 0xe9,0xb3,0x1d,0x6b,0x0c,0xb8,0xc3,0x7f,0x26,0x7d,0x96,0x02,0x74,0x4d,0xa9,0x49,
- 0xa9,0x14,0x5f,0x95,0x76,0x44,0xac,0x3e,0x19,0x7c,0xbb,0x71,0x22,0xfe,0xf9,0x8b,
- 0x32,0x57,0xfb,0x32,0xf0,0x7d,0xb8,0x8e,0xbd,0xfd,0x42,0x73,0x15,0x24,0x42,0x24,
- 0xc8,0x7f,0xb8,0x68,0x1e,0x43,0x64,0x53,0x9c,0xfa,0x2f,0x80,0x66,0xe2,0x78,0xfe,
- 0x79,0x30,0x14,0x34,0xca,0xed,0x48,0x4d,0x23,0x27,0xdc,0xb6,0xd9,0xe1,0x1a,0x7c,
- 0xdf,0xbf,0xae,0x82,0x53,0x73,0x38,0x31,0x97,0xcd,0x36,0x3f,0x76,0x16,0xff,0x61,
- 0xc6,0x10,0x5d,0x2d,0xd1,0x84,0x9f,0x1b,0x9d,0xc8,0x9b,0xf1,0x84,0x33,0x26,0xa7,
- 0x6a,0xb1,0xb2,0xf9,0x63,0xe2,0x5f,0x2c,0x18,0x7d,0x2e,0x13,0x95,0x46,0xda,0x43,
- 0x85,0x11,0x21,0x72,0x45,0x30,0x37,0xff,0x06,0xad,0x8a,0x06,0x12,0x0d,0xc7,0x26,
- 0x88,0x7f,0xb9,0xd4,0xbe,0xa6,0x72,0xe3,0xbb,0x8c,0x08,0xd1,0xa1,0x46,0x64,0xfc,
- 0xb4,0xd6,0x60,0xc6,0x57,0x09,0xf3,0x3e,0x8e,0x7f,0x9e,0x4f,0xf8,0x3a,0x5a,0x8c,
- 0x62,0xd6,0xf7,0x8f,0x29,0xfb,0xb2,0xf4,0xbf,0x74,0xb1,0x5f,0xcc,0x74,0x95,0x64,
- 0xc5,0xbf,0xb4,0xac,0xf8,0x97,0x6f,0xfd,0x9f,0x0d,0xa2,0xfe,0x57,0x1f,0x2f,0x04,
- 0x2b,0x8c,0x34,0x2d,0x62,0x44,0x88,0x60,0x5c,0xbf,0x5e,0x3a,0xe5,0x5a,0x14,0xa1,
- 0x1e,0xf0,0x57,0xb1,0xc5,0x7f,0x68,0xd5,0x7f,0xcd,0xb3,0x96,0xc0,0x92,0xfd,0xc2,
- 0x28,0x0c,0x33,0xde,0xe2,0x11,0xcc,0x0a,0x9e,0x83,0x37,0x20,0x54,0x64,0xae,0x73,
- 0x89,0x33,0x72,0x64,0xf0,0x97,0x96,0xa9,0xff,0x22,0xff,0x44,0x3e,0x43,0xc5,0x80,
- 0x30,0x62,0xe9,0x7f,0x15,0x9e,0xc4,0xbb,0x8e,0x36,0xd8,0xd9,0x86,0xe0,0x15,0x6c,
- 0x72,0x07,0xcb,0x14,0x87,0x7f,0xde,0x8e,0x7f,0x35,0x72,0x92,0x8d,0xa4,0x71,0xbb,
- 0x76,0x6d,0xbb,0x3c,0x03,0x8c,0xe9,0x9a,0xa7,0x5d,0x41,0xfd,0x2f,0x34,0x60,0xcc,
- 0x76,0x63,0xbb,0x36,0xbf,0x5d,0xce,0x0a,0x96,0x05,0x32,0xfc,0x1b,0x85,0xb6,0xfe,
- 0x57,0x03,0xa7,0x52,0xf1,0x00,0xfe,0x32,0x10,0xc8,0xa3,0x21,0xc0,0x2a,0x37,0x29,
- 0x89,0x07,0x31,0x46,0x36,0xbd,0x51,0x49,0xac,0xc9,0x2a,0x16,0xab,0x5a,0xaa,0xfc,
- 0xcb,0x84,0xfc,0xf3,0xa3,0xc3,0xf0,0xe7,0x3f,0x92,0x60,0xf0,0xc9,0xf0,0xbd,0x05,
- 0x3f,0x6c,0xfb,0x71,0x6c,0x75,0x7f,0xc4,0xf0,0x6c,0x94,0xb6,0xc5,0x76,0x0f,0xd4,
- 0xc6,0xbc,0x9b,0xa4,0xec,0x22,0xaf,0x66,0xef,0x84,0xfa,0x5f,0x25,0x67,0x49,0xdd,
- 0x92,0xca,0x0d,0x8d,0xcb,0xb4,0x51,0x79,0xe6,0xbc,0x7c,0xad,0xb1,0x49,0x7c,0x65,
- 0x63,0xdd,0x3c,0xdf,0xb5,0x8d,0x7f,0xa3,0x9d,0x6d,0x9f,0xf9,0xc5,0xfc,0x8d,0x0b,
- 0xfe,0x9a,0xbc,0xe2,0x7e,0x2e,0x16,0x25,0xda,0x5e,0x1e,0x1f,0xff,0x12,0xb0,0x7e,
- 0x30,0x9f,0x48,0x3a,0xbc,0x95,0x9c,0x3b,0x2a,0x8c,0x09,0xc3,0xa7,0x99,0xa2,0x9c,
- 0xb7,0x1d,0xbc,0xc1,0x11,0xd9,0xe6,0xdf,0xd0,0x59,0xcb,0xc1,0xec,0xf8,0x57,0x1e,
- 0x42,0xaa,0xaf,0x83,0x61,0x24,0x03,0x01,0xe2,0x21,0x05,0x34,0x37,0x49,0x86,0xc0,
- 0x09,0x14,0xa9,0x04,0x06,0xb4,0xe4,0x82,0x93,0x46,0x5d,0xc1,0xb2,0x87,0xe5,0xea,
- 0xed,0xcb,0xb3,0xe2,0x5f,0x8f,0xc9,0xce,0x71,0x3a,0xea,0x7f,0xe5,0x7a,0xc5,0xb6,
- 0x4c,0x64,0x84,0xb1,0x8e,0x1f,0x65,0x2d,0x01,0xcd,0xe3,0x0a,0x96,0xb5,0x91,0xaa,
- 0x97,0xf3,0x42,0xd9,0xf1,0xaf,0x6f,0xc0,0xfb,0xd9,0x7f,0x0a,0x0f,0xc1,0x30,0x4b,
- 0xa7,0x80,0x19,0x1e,0x1e,0xf6,0x2a,0xe3,0x6c,0x12,0xab,0x50,0x2a,0x51,0xe3,0x02,
- 0xc1,0xd8,0x72,0x99,0xac,0xf2,0x56,0x1a,0x79,0xf7,0xda,0x3c,0x6f,0x88,0xbf,0x7e,
- 0x67,0xc7,0xbf,0x76,0xd1,0x3a,0x2e,0xf2,0xf5,0x8b,0x4c,0x45,0x98,0x85,0xb6,0x7e,
- 0x81,0x5d,0x8b,0xa5,0xaf,0xda,0xc1,0xb2,0xcb,0xd0,0x52,0xbf,0x24,0x7f,0x65,0x36,
- 0xff,0xbc,0x5d,0xb7,0x6e,0xd7,0x7f,0xfd,0xc6,0x66,0x78,0xb8,0x90,0x31,0x66,0xe1,
- 0xb9,0xdf,0x53,0x2e,0xfe,0x43,0xd4,0x26,0x48,0x14,0x67,0xe9,0x7f,0x81,0xcb,0xb7,
- 0x5b,0x7a,0x4f,0xb9,0x92,0x88,0x0c,0x32,0xdf,0xef,0x40,0x82,0x55,0x84,0xa1,0xfe,
- 0x57,0x3d,0x63,0x9b,0x47,0x6a,0xe8,0x41,0xdf,0x62,0x56,0x08,0xc6,0x34,0xc2,0x2e,
- 0x62,0xd7,0x0a,0xef,0x88,0x8b,0x7f,0x5e,0xdb,0xb5,0x05,0x7e,0x32,0x6c,0x25,0x98,
- 0x25,0xf8,0x36,0x6e,0x64,0xba,0x35,0x09,0xaf,0xc6,0x76,0x04,0xf8,0xd6,0xa6,0xb3,
- 0xbd,0xe9,0x8b,0xf1,0xc9,0xe4,0x43,0x52,0xc9,0xea,0xbf,0x8c,0x5d,0x5f,0xac,0x46,
- 0x25,0x65,0x8b,0x7f,0xbe,0xd4,0xe6,0x3f,0x64,0xf5,0x5f,0xf2,0x37,0xfa,0x38,0x86,
- 0x95,0xf1,0xcf,0xe7,0x9f,0x6a,0xde,0x25,0x54,0x5a,0xfa,0x5f,0x58,0x1a,0xd6,0x2c,
- 0xd6,0xc1,0x84,0x7f,0xa3,0x97,0x5f,0x87,0x54,0x46,0x4b,0x5b,0x44,0x47,0xff,0xcb,
- 0x1d,0xff,0x0a,0x05,0x07,0xc0,0x38,0x46,0xa1,0xe5,0xa8,0x5a,0x23,0x1e,0xa5,0x3b,
- 0x92,0xde,0xa3,0x9d,0x35,0xd8,0x12,0x0a,0x9e,0x90,0xae,0x15,0xbd,0xd4,0x95,0xec,
- 0x11,0x6c,0x5a,0x3c,0xd3,0xe6,0x9f,0xef,0xc9,0xaa,0xff,0x32,0x22,0xc3,0x93,0xf6,
- 0x90,0xf7,0x51,0xa8,0x08,0xb3,0x9f,0xdf,0x97,0x2f,0x98,0x11,0x74,0x14,0xdf,0xc7,
- 0xae,0x01,0xdf,0x64,0xb5,0x12,0xf0,0x45,0xc6,0x3f,0x6c,0xf1,0x96,0x8c,0x8d,0x7f,
- 0xb1,0xae,0x0f,0x31,0x68,0x12,0x6a,0x3b,0x4a,0x2e,0x28,0xe8,0x9c,0x94,0x1f,0xd5,
- 0x3e,0xe4,0x81,0x30,0x56,0xd2,0xde,0xbf,0x28,0x91,0x95,0x8b,0x65,0x44,0x16,0xc3,
- 0xab,0x72,0x5c,0xfd,0x57,0x39,0x1a,0xc8,0x6d,0xd8,0x58,0xc7,0xf5,0xbf,0x86,0xa5,
- 0x3a,0x80,0x5d,0x35,0xe6,0xf5,0xcc,0xc0,0x96,0x57,0xc0,0x17,0x3d,0xee,0xf2,0x33,
- 0x89,0x77,0xa0,0x2d,0xe0,0xc2,0x5f,0x99,0xb8,0xd5,0x56,0x73,0x7a,0xca,0xf3,0x14,
- 0xa0,0xad,0x9f,0x32,0x43,0x04,0xa3,0x57,0x45,0xe6,0xc0,0x4e,0xe8,0x0a,0xf4,0x48,
- 0x0b,0x33,0xfc,0x1b,0xbb,0x1f,0x08,0x86,0x94,0xcd,0x34,0x30,0x8e,0x7f,0x83,0x1d,
- 0xdd,0x67,0xeb,0x7f,0xc9,0x3f,0xe0,0xd0,0xcc,0x6a,0x49,0x88,0x2b,0x5c,0x3c,0x6f,
- 0x14,0xde,0x63,0x9b,0xdc,0xf8,0x8b,0xc5,0xbf,0xc2,0xb8,0x3a,0x44,0x3f,0xa9,0xf0,
- 0x60,0x34,0xd2,0x7c,0x35,0x78,0xf5,0x47,0x78,0xfd,0x17,0xb4,0xe8,0x31,0xcc,0xd6,
- 0x58,0x41,0x1e,0x31,0x82,0x87,0x6d,0x7f,0xc3,0x50,0x34,0x8f,0xc8,0xf7,0x2f,0x9a,
- 0xbf,0x42,0x71,0xc5,0x2b,0x6d,0xd9,0x2f,0x70,0xe3,0x37,0x83,0x41,0x7f,0xc3,0x54,
- 0xa4,0xb1,0x45,0x0f,0x9f,0xf0,0x26,0x8a,0x57,0x88,0x47,0x0c,0x58,0x0b,0x6b,0xbd,
- 0xc8,0xc2,0x84,0xe4,0xc6,0x5f,0xa5,0xf5,0xe6,0x3a,0x96,0x0d,0x25,0x66,0xf4,0xbf,
- 0x60,0x7a,0x27,0x5d,0x94,0xdf,0x0f,0xd8,0xb3,0x6a,0x54,0xf7,0x2d,0x1a,0x90,0x4e,
- 0x69,0x99,0xc4,0x36,0xd8,0x77,0xc0,0x27,0xb1,0xde,0xab,0xa6,0x80,0xda,0x0d,0xf6,
- 0xd3,0xdd,0x5a,0x93,0xfe,0x21,0xc7,0x56,0x73,0x38,0xc8,0xe2,0xd0,0xac,0x91,0x73,
- 0xd4,0xb3,0x33,0x90,0x77,0x58,0x8b,0xf0,0x1e,0x60,0xbd,0x9b,0xd3,0xc1,0x01,0x3b,
- 0xfe,0xc5,0xf8,0x0f,0x5b,0x6d,0x48,0x15,0x9f,0x75,0x7a,0xb3,0x4b,0x5b,0xf9,0x3d,
- 0x6d,0xaf,0x0b,0x6d,0xe1,0xcc,0xbf,0x47,0xe6,0xd8,0x2d,0xc8,0xe7,0xe0,0x41,0xbe,
- 0x8b,0x10,0xc7,0x05,0x9c,0xf6,0xd0,0x83,0x21,0x2d,0x5e,0x58,0x54,0x74,0x54,0x70,
- 0x9e,0x14,0xac,0x8b,0xc4,0x0c,0x01,0x79,0x07,0xbc,0x54,0x3d,0xf0,0xce,0xcc,0x90,
- 0x3f,0x74,0x71,0xae,0x57,0x37,0xff,0x06,0xad,0xfa,0x85,0xda,0xe5,0xe7,0xe5,0x7e,
- 0x6b,0x9e,0x46,0x15,0x3c,0x52,0xd5,0xaf,0xa6,0xfc,0x67,0x84,0xbd,0xd7,0xb2,0x48,
- 0x28,0x4a,0x60,0x57,0x2d,0xe9,0x18,0x93,0xa3,0xe8,0x37,0xa7,0x6f,0xcf,0x8a,0x7f,
- 0x91,0xc8,0xe9,0x82,0x7d,0xd2,0x19,0xfd,0xc3,0x64,0x78,0x58,0xed,0x61,0xf7,0xfc,
- 0xb5,0x1f,0xf8,0x9e,0x96,0xde,0x35,0xe0,0xb5,0x03,0xcf,0x17,0xcc,0xc6,0x05,0xa3,
- 0x76,0x78,0x0a,0x2e,0xd3,0x3b,0x58,0x7a,0xc9,0xc1,0xda,0x33,0xe6,0xc2,0x4d,0xe5,
- 0x19,0xfe,0x0d,0xc5,0x5a,0x82,0xcb,0x09,0x16,0xc7,0x1f,0x6e,0xbc,0x6c,0x5c,0x31,
- 0x38,0x98,0x55,0xae,0xb4,0xd7,0xbf,0x71,0xfd,0x59,0xe1,0x7e,0xab,0x7a,0xa8,0xcd,
- 0x85,0xbf,0x3e,0x4a,0x82,0x41,0x5c,0xfc,0xf3,0x1a,0x6c,0x52,0x03,0x05,0x3b,0xcb,
- 0x57,0x90,0x77,0x8c,0xf0,0xc0,0xda,0x9d,0xd2,0xbb,0x60,0x30,0x3a,0xd9,0x4a,0xf2,
- 0x4e,0x53,0x18,0x9f,0xf7,0x77,0x15,0x7c,0xde,0x6d,0x1a,0x7c,0xfe,0xa6,0x1d,0xf5,
- 0xd6,0xf6,0xc1,0xcd,0x56,0xe2,0xc6,0x5f,0xce,0xe3,0x30,0xcb,0x52,0x61,0xc8,0xa9,
- 0xe2,0x87,0x0f,0x4e,0x15,0xe4,0x5e,0x01,0xd6,0x6b,0x5f,0x91,0x7b,0x7e,0xcc,0xad,
- 0xe7,0xf2,0x1f,0xcf,0xca,0x3f,0xa4,0xba,0xb9,0x06,0x63,0xf4,0x58,0x05,0x59,0xea,
- 0xd4,0x2f,0xc3,0x46,0x06,0xab,0x83,0xf1,0xca,0x30,0x7b,0x0a,0x4c,0xf0,0xba,0x5d,
- 0x2f,0xbd,0x94,0x36,0xdd,0x54,0x4a,0x3c,0x16,0xff,0xc6,0x76,0xc4,0x5f,0x66,0x79,
- 0x5a,0x19,0x15,0xc1,0xa7,0x8b,0xdf,0x70,0xd4,0x56,0xa1,0x4a,0xab,0x23,0x45,0x3f,
- 0x32,0x0e,0x60,0xa6,0xdc,0x7d,0x57,0x23,0x64,0xf8,0x46,0xda,0x26,0x42,0xc4,0x94,
- 0xb9,0x57,0x69,0x2a,0x55,0x96,0xce,0x8b,0x66,0xe5,0x1f,0x46,0x43,0x66,0x41,0x08,
- 0xde,0x09,0xbf,0x25,0xa1,0x73,0x5e,0x7c,0x6b,0xfd,0x16,0x75,0xe4,0x67,0x48,0x5e,
- 0xe3,0x6b,0x89,0x96,0x01,0xdf,0x6c,0xe9,0xa8,0x0c,0x2f,0xb4,0x73,0x32,0xbe,0xe2,
- 0x76,0x24,0x19,0xfe,0x3a,0x46,0x86,0xcd,0x5a,0x54,0xc4,0x70,0xc5,0xbf,0xfe,0xe0,
- 0xc4,0x97,0xb5,0xb9,0xec,0xec,0x42,0x61,0xfa,0x5f,0x2d,0x6d,0x67,0xe0,0x65,0xce,
- 0xa3,0x93,0x65,0x17,0x4a,0x23,0xbd,0x36,0xed,0x7c,0x9f,0xef,0xac,0x70,0x11,0x3c,
- 0xfc,0xef,0x60,0x0e,0xf0,0x98,0xfc,0xc3,0x45,0x3d,0x8d,0x3c,0x36,0xba,0x88,0x65,
- 0x1b,0x26,0xc2,0xe6,0xa2,0x54,0xf1,0x7b,0xf2,0x91,0xc2,0xc8,0xe0,0x17,0x76,0x17,
- 0x07,0xc9,0x87,0x14,0x5a,0x7a,0x58,0x7e,0x42,0xe6,0xe5,0x80,0x8c,0x88,0x6f,0x8f,
- 0xe1,0x3f,0xbc,0x07,0xf5,0x3d,0x63,0x95,0xfd,0x9d,0xb0,0xd1,0xc3,0x46,0x76,0x23,
- 0x93,0xad,0x6c,0x5f,0xa5,0x57,0xf6,0x5b,0xbc,0xbb,0x37,0x21,0x9d,0x91,0x2b,0x19,
- 0xe6,0x00,0x4a,0xab,0x18,0x76,0xfc,0xcb,0xe2,0x3f,0xc4,0xf4,0xe0,0x08,0x62,0xab,
- 0x33,0xea,0x7d,0xb0,0x21,0x1e,0x60,0xf9,0x87,0xe2,0x95,0x5b,0x57,0x6d,0xa9,0x1e,
- 0xf5,0x9c,0x17,0xa7,0xd0,0x03,0x49,0xd6,0xf2,0x55,0x17,0x58,0xa3,0x5b,0xd2,0x81,
- 0xc5,0x59,0xf1,0x2f,0xac,0x87,0x9d,0x3d,0xbd,0xa0,0x81,0xb9,0x2b,0x33,0xe3,0x47,
- 0xf5,0x1d,0xc9,0x00,0x66,0xd7,0x1c,0x57,0xda,0xcc,0xe0,0x80,0x32,0xab,0xc8,0x67,
- 0xec,0x48,0x54,0xbc,0xe4,0x09,0xa1,0xdf,0x22,0xd8,0xfb,0x57,0x33,0xdc,0x75,0xb9,
- 0x59,0xf1,0x2f,0xad,0x3e,0x85,0x6c,0x87,0xc6,0xb1,0xe6,0xfa,0xc4,0xba,0x65,0xd2,
- 0x28,0xb9,0x2c,0xd7,0xac,0xf5,0xbd,0x2f,0x8d,0x82,0xc3,0x52,0xbf,0xb1,0x20,0x2d,
- 0xcd,0x21,0x97,0x9b,0x6b,0x12,0x80,0xbf,0x96,0x33,0xb0,0xa6,0xf2,0xf8,0x17,0x40,
- 0xb3,0xc1,0x2c,0xfe,0xf9,0x79,0x11,0x2b,0x8b,0x49,0x8b,0xe4,0xa2,0x61,0x80,0x01,
- 0xce,0x5b,0x63,0x9a,0xa2,0xb1,0xa8,0x55,0x65,0x1c,0x1d,0x8a,0x0f,0x5d,0x33,0x74,
- 0x02,0xaf,0xb7,0xe2,0x5f,0xda,0xd8,0xfa,0x2f,0x2c,0x1f,0x6b,0x03,0x97,0x4f,0x08,
- 0x73,0xa1,0xd8,0x93,0x56,0x5a,0x94,0x3c,0xa2,0x70,0x6f,0x50,0x3f,0x09,0x48,0x6a,
- 0xb2,0xed,0x5e,0x1e,0x67,0x84,0x03,0x09,0x70,0xfe,0x4b,0x55,0x77,0xfd,0xd7,0x6d,
- 0x55,0xe4,0xaf,0x90,0x4f,0x2f,0xc9,0x03,0x2b,0x14,0xbc,0xca,0x20,0x89,0xba,0x44,
- 0x7b,0x4d,0x8c,0xa7,0xb4,0x28,0x1b,0xb3,0x30,0x9a,0xe1,0x37,0x96,0x8f,0xa9,0xff,
- 0xaa,0x22,0x0b,0x92,0x45,0x18,0x85,0x79,0x1d,0xfe,0xaa,0x48,0x47,0xc1,0x59,0x92,
- 0x87,0xcc,0xdb,0xec,0x3a,0x49,0x31,0x2d,0x7f,0x5f,0x08,0xb6,0x04,0x12,0xf1,0x31,
- 0xd7,0x09,0x74,0x4d,0xc0,0x7f,0x88,0x69,0x6c,0xba,0xd1,0x09,0x6e,0xbc,0xc8,0xc8,
- 0xea,0x19,0x52,0xb0,0xbb,0x50,0x11,0x2c,0x50,0xc8,0xe0,0xc0,0x0a,0x3b,0x59,0x31,
- 0x69,0x60,0xfd,0x97,0xa0,0xbb,0xf0,0x97,0xa7,0x33,0xfe,0x58,0x3a,0xd9,0x1f,0x08,
- 0x7b,0x7c,0xf1,0xe7,0x74,0x30,0x22,0x9e,0xfc,0x78,0x5b,0x3a,0x39,0x12,0x60,0xb2,
- 0x5f,0xe9,0x6d,0x27,0xa7,0x33,0x6f,0xd9,0x1d,0x67,0x6c,0x0e,0x51,0xc0,0xd4,0x2e,
- 0xfe,0x0d,0x44,0x40,0xbe,0xe6,0xc6,0x53,0x25,0x48,0x2b,0x3a,0x09,0xc3,0x55,0x6f,
- 0x70,0x6e,0xf9,0x13,0xd0,0x35,0x17,0x83,0x53,0x17,0xc9,0x25,0xb1,0x3e,0x5a,0xb0,
- 0xc1,0x9d,0xf3,0x76,0x49,0xab,0x62,0xf5,0x5f,0x99,0xfc,0xc3,0x4b,0x24,0xb2,0xdc,
- 0xf7,0xfd,0xe2,0x17,0x12,0xbd,0xc9,0x30,0x18,0x8d,0x6f,0xd2,0x51,0x8a,0x2d,0xd2,
- 0x9b,0xf4,0xd0,0x36,0x30,0x36,0x81,0x31,0xba,0x65,0x8e,0xb9,0x70,0x20,0xc3,0x1d,
- 0xc1,0xe3,0x5f,0xde,0x31,0xf5,0x5f,0x2c,0xed,0xf0,0x34,0xe9,0x30,0x66,0x69,0x6a,
- 0x3b,0x18,0x7b,0x9a,0xf0,0xbc,0x8e,0x55,0x7b,0xc1,0x3c,0x6f,0x63,0x99,0x96,0x7e,
- 0x1e,0x11,0x73,0xc0,0x5a,0x0a,0x96,0x57,0x71,0xf8,0x37,0x2c,0xfe,0xc3,0x66,0xb5,
- 0x44,0x7c,0x43,0x5c,0x6d,0xe8,0x2d,0x60,0x3c,0x4f,0xba,0x0c,0xde,0x42,0x5a,0xb9,
- 0xf1,0x3c,0xd9,0x5d,0x18,0x70,0xd2,0x0e,0x79,0x68,0xac,0x8b,0x2c,0x03,0x9c,0xbb,
- 0xb4,0xc8,0x95,0x7f,0x68,0x56,0x45,0xd5,0x0d,0x2c,0xda,0x85,0xda,0x5e,0xf1,0x41,
- 0x1d,0xb5,0xe1,0xae,0xdb,0x28,0xbe,0x41,0x57,0xcb,0x55,0x0d,0x2a,0xc3,0xef,0x8a,
- 0x6e,0x94,0xe2,0x72,0xdf,0x62,0xaf,0x7b,0x97,0x51,0x81,0x39,0x8a,0xee,0xfa,0x2f,
- 0x23,0xf2,0x25,0x5f,0xa2,0xed,0x79,0xad,0xd7,0x08,0x2f,0xf3,0x3d,0x8a,0xfc,0x87,
- 0x46,0xa4,0x99,0x09,0x28,0x1f,0x4a,0x45,0xee,0xf5,0xfd,0x50,0xfa,0xdd,0xbc,0xb3,
- 0x89,0xe9,0xf7,0xac,0xcd,0x70,0x6b,0xb0,0x8c,0xcd,0x59,0x86,0xf2,0x5d,0xd5,0xaa,
- 0xff,0x5a,0x2e,0x6c,0x13,0x38,0xce,0x6d,0xc4,0xd0,0x18,0x27,0xfc,0xe7,0xd5,0x5e,
- 0x9b,0x5d,0x99,0x8d,0x85,0x6f,0xb9,0xd2,0x0e,0x1d,0xd2,0x8f,0x86,0x6a,0xe4,0xdf,
- 0xd0,0x1d,0xfc,0x65,0x46,0x2c,0x90,0xe5,0x62,0x6b,0xd1,0xb8,0xfe,0x97,0x01,0x06,
- 0x95,0x4e,0x8b,0xfd,0x86,0x1b,0xc8,0xdb,0xd0,0xcc,0xdb,0xe6,0xce,0x3f,0x7c,0x6f,
- 0xad,0x05,0xa9,0x7e,0x4a,0xb6,0x5a,0x89,0x88,0x39,0x55,0xd4,0x93,0x14,0xfb,0x19,
- 0xda,0xf2,0x20,0xff,0xc6,0x1a,0x52,0x9d,0x50,0xde,0x8d,0x43,0x97,0xcd,0x7f,0xb8,
- 0x9f,0x7e,0x96,0x2a,0x83,0xee,0xfa,0x2f,0x17,0xa4,0xd2,0x4d,0x47,0x5b,0x59,0xc9,
- 0x18,0x0d,0x8c,0x69,0xed,0xf5,0x3c,0xe2,0xde,0xbf,0x76,0xd0,0x6d,0x66,0x60,0xb6,
- 0x1b,0x7f,0x3d,0xce,0x75,0x81,0x2f,0x92,0x9f,0x67,0xb4,0x95,0xab,0xd3,0x8e,0xe1,
- 0x69,0xf1,0x33,0xe9,0xe1,0x97,0xf2,0x0c,0x9b,0x32,0x82,0xc7,0xbf,0xb0,0x42,0xd6,
- 0x5d,0xff,0xe5,0xe4,0x1f,0xfe,0xc2,0x89,0x6d,0xb5,0xa2,0x10,0x33,0x1a,0x71,0xcb,
- 0x00,0xb4,0x95,0xac,0x5c,0x9c,0x91,0x5d,0x7e,0x95,0x7c,0x44,0x6f,0xc2,0x2e,0xbb,
- 0xfe,0xeb,0x1a,0x2b,0x7b,0x2d,0xbb,0x6e,0x42,0xac,0xb3,0x88,0x38,0xc0,0x60,0x6c,
- 0x87,0x4c,0x61,0x8a,0xba,0xc7,0xbc,0x02,0xfb,0x4e,0xb5,0xbb,0xfe,0x2b,0xfa,0x1d,
- 0x2e,0xb2,0x1c,0x31,0xae,0xd0,0x1a,0xcc,0x3f,0x9c,0x62,0x1c,0x07,0xd8,0x75,0xfd,
- 0xa8,0xb4,0xdf,0xb8,0xe2,0x9c,0xc6,0x27,0xea,0x97,0xb1,0x8c,0x44,0xce,0xd1,0x01,
- 0x2d,0x97,0xc6,0xd5,0x7f,0xed,0xc2,0x48,0x56,0x0b,0x60,0xc6,0x5d,0x44,0x1f,0xf2,
- 0xb4,0x48,0x9b,0xc9,0xaf,0xc8,0xdc,0xa3,0x30,0x09,0x53,0x18,0x5c,0x02,0xbf,0x0e,
- 0x66,0x63,0x4b,0xd5,0xdf,0x28,0xa6,0x38,0x19,0xe1,0x12,0x9f,0xba,0xbd,0xb4,0xbc,
- 0x29,0x8b,0x7f,0x5e,0xae,0x8f,0x6e,0xc1,0xd3,0xa7,0xc9,0xc9,0x03,0xe4,0x86,0xfe,
- 0xbc,0x61,0xf1,0xdb,0xc2,0x2a,0x0d,0x26,0x73,0x38,0xbc,0xb9,0x83,0xcf,0x6a,0x9c,
- 0xe3,0x2f,0x8f,0x81,0x05,0xc8,0x9a,0xc5,0xd1,0xb1,0x53,0x29,0x33,0x03,0xcb,0xdc,
- 0xf5,0x5f,0xe0,0xc6,0x0f,0xab,0xb7,0x88,0x9f,0xd7,0x77,0xf4,0x57,0x0c,0x48,0xb3,
- 0xc5,0x87,0x0b,0xc1,0xbd,0x1c,0x56,0x67,0x13,0xa4,0x50,0x66,0xab,0x7c,0x0c,0x8c,
- 0xaa,0x01,0x25,0x8b,0xb7,0x79,0x37,0xf5,0x13,0x45,0xf7,0xb8,0xea,0xbf,0x3e,0xa4,
- 0xa1,0x41,0x1f,0x8a,0x62,0x7f,0x48,0x67,0xbd,0xfe,0x50,0x8f,0xf4,0xf7,0xc2,0x73,
- 0x1d,0x91,0x93,0xbe,0x1e,0xe9,0x67,0x3a,0xf8,0x87,0xaf,0x43,0xd7,0xbb,0x1d,0x17,
- 0x68,0xd5,0x17,0xab,0x92,0xd2,0x53,0xd9,0x87,0xb1,0xde,0xac,0xfa,0x2f,0x96,0xbd,
- 0x86,0xda,0xca,0x17,0xb4,0x3d,0xe6,0xc3,0x5d,0x6d,0x67,0x62,0x17,0x94,0x5a,0xd3,
- 0xd7,0x85,0xfa,0xcb,0xa5,0x11,0x4b,0x88,0x39,0x14,0x59,0xec,0x12,0x0e,0xb0,0xeb,
- 0xf5,0x76,0x8e,0xa9,0xff,0xea,0xcd,0x1f,0x96,0xbe,0x2d,0xbf,0x86,0x65,0x5f,0xdc,
- 0x39,0xa9,0x39,0xf8,0x30,0x1a,0xef,0x03,0xec,0x9a,0x04,0xf8,0x0b,0x7d,0xd1,0x40,
- 0x3e,0xef,0xaa,0x36,0xd7,0x71,0x5c,0x50,0xd3,0xee,0xed,0x91,0xac,0xfa,0x2f,0xc6,
- 0x3f,0x9f,0x76,0xfc,0x43,0xdb,0x1b,0x24,0xd3,0x01,0x76,0xe5,0x9e,0x51,0x76,0x30,
- 0xdc,0xe4,0x41,0x1f,0xb2,0x96,0x28,0xfb,0x5c,0xfe,0xb3,0xdc,0x43,0xfc,0x89,0xfc,
- 0x67,0xb3,0xf8,0xe7,0x29,0x13,0x59,0x5e,0x41,0x7e,0x20,0x22,0xc9,0x7c,0x11,0x72,
- 0x8c,0xe3,0x9f,0x83,0x67,0xfe,0x24,0x18,0x3f,0xb0,0xea,0xbf,0xb4,0xbc,0xa7,0x9c,
- 0xeb,0xe4,0x02,0x8e,0x53,0xfc,0xcd,0xca,0xce,0x86,0xb4,0xc3,0x7f,0x48,0xf6,0xea,
- 0xfc,0xfb,0xd0,0x4e,0x31,0xf0,0x32,0xcb,0x0a,0xde,0xcb,0x0e,0x75,0x8b,0x16,0x92,
- 0xbd,0x5a,0xcc,0xec,0x4c,0x71,0x9a,0x65,0x51,0x61,0xcf,0xa9,0xb6,0x82,0xeb,0x2f,
- 0x77,0xeb,0x49,0xf3,0xef,0x42,0x4e,0xfd,0x57,0xfe,0x0a,0xc6,0xa4,0xc1,0x49,0x51,
- 0xc0,0x91,0x5e,0x84,0xb1,0x48,0x9e,0x5b,0x28,0x22,0xe1,0x64,0xb7,0xe9,0x7b,0xba,
- 0x38,0x28,0x5f,0xd0,0xef,0x4f,0x3c,0x94,0xc4,0xd4,0x44,0x4e,0x96,0xf8,0xae,0x81,
- 0x42,0x96,0xf0,0x46,0x32,0x45,0xa7,0xfe,0xeb,0x6c,0x03,0xd2,0xe8,0x7d,0xe9,0x8c,
- 0xf1,0xcf,0x00,0x8a,0x39,0x9f,0x9e,0xc0,0x88,0xf5,0xde,0xe5,0xde,0xfb,0x07,0xc5,
- 0xc8,0xd1,0x51,0x1b,0x67,0xfc,0x87,0x57,0x04,0x40,0x0a,0x8c,0x9f,0x2d,0x54,0x6f,
- 0x56,0x8f,0xe3,0x3f,0xc4,0x23,0x0b,0xfa,0x3e,0xf2,0x28,0x7e,0x80,0x24,0xf3,0x7a,
- 0x8d,0x19,0x04,0xcf,0x93,0xbc,0x86,0xa4,0x28,0xc3,0xad,0x17,0x03,0x57,0x94,0x62,
- 0x58,0xca,0x36,0x18,0x4c,0x2c,0x68,0x76,0x91,0xd4,0x24,0xbd,0xc3,0xaa,0x1b,0x7f,
- 0x71,0x48,0x75,0x05,0xe0,0x1d,0xbc,0x76,0x46,0xfc,0x11,0xb2,0xcb,0x28,0x1f,0x50,
- 0x30,0x97,0xee,0xe7,0xa4,0xdc,0x54,0x47,0xa4,0x2b,0xe4,0x80,0xf9,0xd9,0x61,0xf5,
- 0xa2,0xf4,0x1e,0x18,0x16,0xff,0x61,0x97,0x08,0xf7,0x73,0x87,0xc7,0x85,0xbf,0xac,
- 0x5b,0x7d,0x6d,0xe9,0x63,0x58,0xf6,0x35,0xc3,0xe3,0x35,0x76,0x18,0xfa,0xf3,0x1d,
- 0x33,0xb5,0x17,0x95,0x1d,0x9a,0xde,0x37,0xa6,0xe4,0xa4,0xc9,0x3a,0x57,0x4f,0x22,
- 0xff,0xbc,0x7e,0xfb,0x38,0xfe,0x43,0xb8,0x25,0x2c,0x4c,0x1d,0x2c,0xdd,0xc1,0x11,
- 0xc7,0x19,0xe1,0x49,0xf1,0xa7,0x48,0x4d,0xff,0x94,0xb0,0xd7,0x0e,0x77,0xe2,0x2d,
- 0xd1,0xc9,0xf0,0x3b,0x9d,0xfe,0x1c,0x78,0x44,0x16,0xfe,0x92,0xdd,0xf1,0xaf,0x77,
- 0x6c,0xda,0x43,0x0c,0x22,0x03,0xba,0x39,0xaa,0x5c,0x10,0x91,0x14,0xa5,0x08,0x53,
- 0xac,0xfd,0xd0,0x25,0xf2,0x84,0x6a,0x8e,0xbf,0xe8,0x9e,0xe1,0x85,0x49,0xb5,0x70,
- 0x5c,0xfc,0xeb,0x14,0xcf,0xcb,0x75,0xf8,0x0f,0xf9,0x53,0x70,0x33,0x2f,0x0d,0x63,
- 0x3e,0x7f,0x4a,0xba,0x28,0xfc,0x21,0x93,0xac,0x78,0xf3,0x90,0xaf,0x4c,0x9d,0xb0,
- 0xfe,0x4b,0x88,0x58,0x5a,0x12,0x0a,0xbb,0xa3,0x78,0xf6,0x5a,0x3e,0x3b,0xd7,0x12,
- 0x19,0x8d,0x79,0xd0,0xfa,0x3e,0xc5,0x67,0xb4,0x93,0xa4,0x76,0xc0,0xbb,0xdf,0xc6,
- 0x5f,0x2e,0xfe,0x79,0x5e,0xe4,0xc5,0xaa,0xbd,0xea,0xcd,0x72,0x33,0x7f,0x58,0x7c,
- 0x96,0x42,0xcb,0xeb,0x76,0xfd,0xd7,0x90,0x3a,0xdc,0x10,0xd4,0x0e,0xc8,0x16,0xbf,
- 0xcd,0x6e,0xf2,0xd3,0x81,0x8e,0x9d,0x62,0xf7,0xc7,0xd7,0x7f,0x81,0x31,0xe0,0xef,
- 0xcd,0x0b,0x15,0x15,0xd0,0xbd,0x84,0x91,0xf4,0xb2,0xae,0x93,0xac,0x34,0x6c,0x87,
- 0x1d,0x07,0x49,0xc4,0xfc,0xb1,0x7e,0xcd,0x7f,0x0b,0x7f,0xbe,0x86,0x5d,0xf1,0x2f,
- 0x93,0x91,0x1c,0x62,0xf1,0x11,0xf8,0xfc,0x6f,0xdc,0xb8,0x52,0x44,0x01,0x14,0x56,
- 0x08,0x66,0xc3,0x2e,0x78,0x63,0xef,0xa0,0x16,0x40,0xd8,0x99,0x78,0xf2,0x0e,0x40,
- 0x64,0x4f,0x39,0xf8,0x0b,0xd9,0x0e,0x0f,0xb1,0xfa,0xaf,0x1d,0xc8,0x7f,0xc8,0x4f,
- 0x8d,0xc2,0x66,0x4e,0x48,0x2a,0x18,0xf8,0x50,0x8b,0x98,0x0f,0x85,0x8a,0x31,0xdb,
- 0x90,0xd5,0x7f,0x21,0x59,0xc7,0x6c,0xae,0x11,0x36,0x60,0xd4,0xf6,0x2d,0x2c,0x52,
- 0x33,0xf8,0x8b,0x1f,0x59,0x58,0x24,0xa2,0x03,0x05,0xec,0xa0,0xc3,0xa8,0x1f,0x98,
- 0x74,0x6f,0xdb,0x25,0x80,0xdb,0xac,0x85,0xd5,0x57,0x9e,0xf0,0x9d,0x53,0x1d,0x7e,
- 0x51,0x1c,0xbc,0xff,0x68,0x36,0xff,0x86,0xad,0x74,0x4f,0x50,0xbc,0xde,0xd7,0x2d,
- 0xbd,0x47,0xdf,0xd1,0x6b,0x87,0xbc,0xb5,0x52,0xa5,0xb1,0xd7,0x5f,0xd5,0xef,0xdd,
- 0x81,0xef,0x1f,0xbd,0x6a,0xc8,0xbb,0xc3,0x5a,0x38,0x0b,0xbf,0x23,0x46,0x53,0xa7,
- 0x8f,0xe3,0x9f,0x7f,0xb1,0x7f,0x52,0xb4,0x72,0x40,0xbd,0x17,0x1d,0x06,0xfd,0xb3,
- 0xa6,0x07,0xb3,0xe5,0xff,0x40,0xaa,0xb1,0xce,0xee,0x87,0xe6,0x2e,0x74,0x18,0x5a,
- 0x1a,0x60,0x03,0x6a,0x99,0xca,0xf7,0xf7,0xa7,0x01,0x91,0xa9,0x21,0xe9,0x9e,0x2c,
- 0xfc,0xc5,0xf9,0xe7,0x6f,0x60,0xb4,0x87,0x30,0xcf,0x8f,0x27,0x6e,0x1c,0x54,0x18,
- 0x99,0xff,0x86,0xca,0xc1,0x8e,0xfb,0xe6,0x4f,0x51,0xd0,0x88,0xde,0xe7,0x7f,0x35,
- 0x83,0xbf,0x52,0xf4,0x09,0x34,0xc6,0xf0,0x1f,0x1e,0xe1,0x7e,0x8b,0xb5,0xee,0x9d,
- 0x0c,0x6e,0xe7,0x22,0x12,0x5f,0x61,0xce,0x46,0x49,0x1d,0x97,0x27,0x63,0x17,0x82,
- 0x91,0xa7,0x46,0x00,0xb5,0xdd,0xe1,0xe0,0x2f,0xe5,0x3c,0x99,0xc2,0x43,0x5a,0x6f,
- 0xdb,0x81,0xb0,0xb7,0x49,0x2d,0x92,0x6c,0x44,0x95,0x3d,0x8c,0x76,0xa3,0xdc,0xe6,
- 0xdf,0x28,0x1f,0x72,0xe5,0x1f,0x1a,0x73,0x7a,0x7c,0x67,0xb2,0xf8,0x37,0xc6,0xd7,
- 0x7f,0x19,0x76,0x8b,0xe8,0x96,0x66,0xce,0x36,0x94,0x9f,0x10,0x9f,0xd0,0x96,0xc1,
- 0x5f,0xc2,0xa8,0xc0,0xd5,0xbe,0xc8,0x59,0x16,0x4f,0x11,0x59,0x2e,0x96,0xc1,0x44,
- 0x69,0x57,0x93,0x3a,0x83,0xd3,0xce,0x8f,0xab,0x85,0x81,0x31,0xb7,0x2e,0x4a,0x34,
- 0x8e,0xe3,0x9f,0xf7,0xf3,0x94,0x30,0x5e,0x85,0x64,0x2e,0x65,0x8a,0x4e,0xfa,0x13,
- 0xa4,0xaa,0x39,0x3f,0x51,0x8e,0x44,0x76,0x55,0x2d,0x63,0x62,0x64,0xe6,0xd6,0xe6,
- 0xce,0x8d,0x0d,0xe3,0xf5,0x97,0x31,0x7c,0xc6,0x89,0x38,0xe4,0xdd,0x76,0xb2,0x22,
- 0x5c,0xa7,0x21,0x2f,0x51,0x54,0x21,0xaf,0x16,0xaa,0xe6,0x67,0x5f,0xa7,0x0b,0xc7,
- 0x6c,0x8a,0x4f,0xc0,0x3f,0x4f,0xbb,0xf4,0x98,0x5d,0xed,0xa5,0x2f,0x54,0x99,0x11,
- 0x0a,0x2e,0x44,0x46,0x44,0x8a,0x8c,0x88,0xd8,0xe2,0x2e,0x16,0x4b,0x9a,0x6a,0x91,
- 0x27,0x9e,0x5d,0xff,0xa5,0xf2,0xaa,0x3a,0xab,0x36,0x07,0xf6,0x5c,0x8d,0x13,0xd9,
- 0x81,0xff,0x9c,0xc3,0x64,0x73,0x9d,0xe9,0x0d,0x38,0xf8,0x2b,0x7c,0xd5,0x3a,0xaa,
- 0x8e,0xd7,0x5f,0x66,0x61,0xaf,0xa6,0x49,0xac,0xfe,0x6b,0x76,0x64,0x21,0xc6,0xbf,
- 0xe6,0x8d,0x86,0xb8,0x61,0xd8,0xa5,0x61,0x2e,0xfc,0x55,0x72,0x00,0xf9,0x0f,0xdf,
- 0x9c,0x90,0xff,0xd0,0x89,0x6d,0xcd,0xe1,0xf9,0x87,0xb7,0x01,0xc8,0xf2,0xd8,0xfc,
- 0xf3,0xbe,0x44,0xf9,0x36,0xf7,0x98,0x1a,0xc0,0x7a,0xea,0x18,0xfc,0x25,0x65,0x61,
- 0x2b,0x3c,0x6c,0xc8,0xb7,0x69,0x37,0x3c,0xbc,0x2b,0xc2,0x13,0x11,0x33,0xc1,0x32,
- 0xf9,0x19,0xda,0x49,0x1b,0xdc,0xf8,0x4b,0xf4,0xba,0xeb,0xbf,0x44,0x14,0x62,0x0e,
- 0xd8,0xf9,0x87,0x7a,0x06,0x76,0x41,0x57,0xbb,0xbb,0x58,0x2c,0x69,0x2c,0xd0,0x72,
- 0x37,0x64,0xd5,0x7f,0xcd,0x73,0xaf,0xe9,0x32,0x46,0xd7,0x8c,0x45,0x5e,0x85,0x37,
- 0x92,0xe9,0x18,0x08,0x73,0xba,0xf8,0x4d,0x22,0x61,0xcb,0x0e,0xe3,0x6f,0xa2,0xea,
- 0xc6,0xdc,0x07,0x1d,0xfc,0xa5,0xb8,0xf5,0xec,0x0c,0x1f,0xaf,0x3a,0x44,0x19,0xc4,
- 0xf2,0x41,0x72,0x48,0xb6,0xa8,0x66,0x76,0x13,0x8b,0xae,0xd0,0x35,0x99,0xe1,0x66,
- 0x5f,0x42,0xdd,0x3e,0xb1,0xfe,0x17,0x2f,0xf2,0x3a,0xeb,0x88,0x02,0xc8,0x63,0x29,
- 0x28,0x33,0x83,0x99,0x34,0xf3,0x82,0xbf,0x74,0xc5,0xbf,0xe4,0x29,0xe3,0x9e,0x41,
- 0x76,0x23,0x19,0xc4,0x84,0xa7,0xd0,0x67,0xd1,0x66,0x2a,0x5e,0x22,0xda,0x85,0x60,
- 0x6c,0x4c,0x18,0x7c,0xb0,0xb6,0xf1,0xfc,0xf3,0x8c,0xf6,0xb0,0x95,0x9d,0xc9,0xec,
- 0xa7,0xe5,0x9b,0x94,0xa4,0x38,0x1b,0x10,0xd9,0xcd,0x09,0xec,0x12,0xd7,0x90,0x1b,
- 0x7a,0x38,0x11,0x87,0x6c,0xe7,0x1f,0x0a,0x4f,0xa6,0x94,0xb4,0xe2,0xce,0x3f,0x1c,
- 0xb7,0x7f,0x3d,0x66,0x4c,0x3b,0x08,0xcb,0x84,0x65,0xe6,0x01,0xbf,0x05,0xcd,0x82,
- 0xac,0xcc,0x5c,0x73,0xd5,0xba,0x56,0x9c,0x54,0x34,0x72,0xfb,0xf8,0xfa,0x2f,0x81,
- 0x1b,0x45,0x9b,0xc9,0xd3,0xca,0x54,0x33,0x70,0xd7,0xfc,0x84,0xb2,0xa3,0x82,0xd5,
- 0x7f,0x21,0xdb,0x7c,0x45,0x8c,0x95,0x23,0xd5,0x50,0x07,0xa3,0x55,0xa6,0x95,0x66,
- 0x71,0xb9,0x1b,0x7f,0x55,0x66,0xf8,0x0f,0x7d,0xf8,0xee,0x1d,0x44,0x6c,0xb5,0x58,
- 0xfa,0x25,0xf9,0xc3,0xe9,0x5b,0x62,0xab,0x90,0x91,0x1e,0xf3,0x0f,0x99,0x22,0xb3,
- 0x13,0x11,0xbb,0xc4,0x0b,0xc1,0xbe,0x3e,0x2e,0xff,0x30,0x2b,0x81,0xe7,0x5a,0xd3,
- 0xa7,0x15,0x37,0x01,0x34,0x9b,0x65,0x38,0xa7,0xfa,0x3e,0x56,0xa9,0xe4,0x9c,0xd3,
- 0x92,0x3d,0xc8,0xdd,0x17,0x77,0xc5,0xbf,0x32,0xfa,0x5f,0x2c,0xfe,0x15,0x81,0x96,
- 0xee,0xc1,0x82,0x11,0xf1,0x5f,0xe0,0x4f,0xeb,0x75,0x5f,0x4f,0x39,0x9e,0xe1,0xcf,
- 0xae,0x58,0x38,0x52,0x8c,0x40,0xcc,0xe6,0x3f,0x4c,0xed,0x38,0xbd,0xf0,0x15,0x89,
- 0x64,0xf3,0x1f,0xb2,0xa9,0x83,0x4d,0x0a,0x65,0xbf,0x26,0x93,0xfd,0xc9,0xb2,0x21,
- 0xe5,0xee,0x22,0x42,0x7f,0x95,0xac,0x24,0x3e,0xce,0x3f,0x1f,0x48,0xe6,0x63,0x0c,
- 0x71,0x17,0x9d,0x69,0xcd,0x4f,0xe8,0xe6,0x5e,0xe5,0x2b,0xd2,0xd7,0x1d,0xfe,0x43,
- 0xb7,0xfe,0x17,0xbb,0xe0,0x64,0xb2,0x53,0x2f,0xeb,0xf3,0xb4,0x88,0x1b,0xc9,0x2a,
- 0xb9,0xd2,0xc0,0x03,0x49,0x70,0xbf,0xcb,0x88,0x62,0xd1,0x4b,0x5a,0x79,0xf8,0x2d,
- 0x65,0x7d,0x4a,0x4b,0x2e,0x99,0x90,0xff,0x90,0xd7,0xad,0x33,0xaf,0x92,0xb1,0x92,
- 0x3e,0x42,0xbc,0x86,0xcd,0xbb,0x42,0xf2,0xb2,0xf6,0xaf,0xdd,0xb4,0x22,0xad,0x5c,
- 0x23,0x46,0xf9,0xf3,0xce,0xe2,0x5f,0x62,0xd6,0x3c,0x5f,0x17,0x84,0xc9,0x0c,0xf7,
- 0x16,0xe0,0xd3,0x74,0x5c,0x9c,0x42,0x55,0xab,0xce,0x8e,0x78,0x53,0xc2,0x99,0x0c,
- 0x1f,0xf5,0x79,0x3d,0xdc,0xfb,0xd4,0x46,0xd5,0xc2,0x5f,0xed,0x63,0xe2,0x5f,0x76,
- 0x6e,0x21,0xc0,0x64,0xad,0xf1,0x0d,0xec,0xd2,0xb0,0x05,0xb5,0x87,0x0c,0xd7,0xbf,
- 0x35,0x09,0xae,0x63,0x00,0x6a,0xd3,0xda,0xd2,0xe3,0xf9,0x0f,0x11,0x76,0x71,0xe3,
- 0x22,0xe9,0x1e,0xca,0x4f,0x34,0x7e,0x99,0x62,0xb4,0x8b,0xa1,0x2d,0x40,0x0a,0x84,
- 0xd5,0x7f,0x1d,0x70,0xe2,0x32,0x85,0x3b,0x4c,0x78,0x15,0x10,0x17,0xfe,0x12,0x9d,
- 0x90,0xc4,0x2c,0x0e,0x97,0x7a,0xf8,0xfb,0xe7,0x06,0xd2,0x29,0x56,0xb5,0x2c,0xe0,
- 0x5d,0x41,0xdd,0x93,0x15,0xbf,0xd8,0x63,0x6c,0x8f,0x29,0x9b,0xc5,0xe4,0x84,0xf5,
- 0x5f,0x96,0x0f,0x09,0x7e,0x38,0xc9,0xdb,0x20,0xfe,0x35,0x46,0xbb,0x52,0x36,0xb2,
- 0xd3,0x95,0xec,0xeb,0x90,0xad,0xe9,0x68,0x76,0xfc,0x4b,0x08,0xf2,0x3c,0x61,0x58,
- 0x8b,0x7e,0x76,0x4e,0xd2,0xcd,0x39,0x1f,0x64,0xb1,0x8d,0x54,0x50,0xb6,0x3a,0x35,
- 0x46,0x50,0xb9,0x9d,0xad,0x97,0xdf,0x5a,0xdc,0x6e,0xf2,0xd3,0x34,0x20,0xb2,0x78,
- 0x86,0xff,0xf0,0xc2,0x12,0xf0,0x8d,0x9f,0x66,0xb5,0xf6,0xe1,0x53,0xc8,0xc3,0x20,
- 0x8f,0xe8,0x61,0x05,0x09,0x8a,0x8d,0x23,0x65,0xe0,0x5d,0x58,0xfc,0xf3,0x0a,0x27,
- 0x52,0x08,0x44,0x06,0xd8,0x84,0x7f,0x80,0xe7,0xe1,0x54,0x22,0x56,0xfc,0xeb,0x1a,
- 0x98,0xc3,0xd9,0x08,0xb2,0x38,0x09,0xdb,0x8b,0x56,0x0e,0x67,0xbd,0xe6,0x83,0x7d,
- 0x87,0x5e,0xd0,0xea,0xe9,0xa4,0xb3,0x3c,0x22,0x96,0xeb,0xe3,0xbc,0xf1,0xf5,0x87,
- 0x31,0x28,0x29,0x5f,0x26,0x07,0xe8,0x22,0x53,0x1a,0x12,0x1d,0xfc,0x75,0x89,0x30,
- 0x25,0x2f,0x06,0xc4,0x8c,0x02,0x3b,0xb7,0xd0,0x87,0xb1,0x2d,0x70,0xc9,0xd3,0x3e,
- 0xb3,0x78,0x84,0x1c,0xa7,0xd5,0xd6,0x63,0x45,0x8a,0xad,0xc1,0x3c,0xa6,0xe9,0xc2,
- 0x5f,0xbb,0x29,0x32,0x96,0x60,0xb4,0xeb,0x81,0xaa,0x5e,0x8f,0x13,0xff,0x4a,0x14,
- 0xe9,0xa5,0x7b,0xc0,0xc8,0xdb,0x04,0x6f,0xfe,0x4e,0x27,0x46,0x86,0x13,0xce,0xea,
- 0xbf,0xe8,0xf4,0xb4,0x12,0xca,0xc6,0x5f,0x31,0x1a,0xb5,0xf2,0x01,0x8c,0xe9,0xae,
- 0x02,0x49,0x45,0x5e,0x2f,0xc2,0x12,0x10,0xd8,0xdd,0xdb,0x08,0x97,0xb7,0x66,0xd4,
- 0x88,0x76,0x3d,0xac,0x19,0x18,0x13,0xff,0xf2,0xaf,0xb1,0xd6,0x34,0x98,0xb6,0x6e,
- 0x92,0x02,0x53,0x4d,0xc4,0xa7,0xe3,0xee,0x19,0xbb,0x8e,0x1a,0x83,0x99,0x70,0x67,
- 0x17,0x9d,0x7e,0x82,0x0f,0xa6,0xd3,0xcd,0x8e,0xae,0xb8,0x8b,0x7f,0x7e,0xb4,0x3f,
- 0xac,0x7b,0x2d,0xbc,0xd3,0x5d,0xc5,0xf1,0x32,0xdc,0xfc,0x0f,0xa9,0x55,0xf8,0x38,
- 0x7c,0x00,0xe8,0x66,0xc8,0xc8,0xa4,0x1d,0x52,0xd4,0x3b,0xe6,0x86,0xe9,0xdd,0x27,
- 0xb9,0xea,0xbf,0x86,0x61,0xe6,0xab,0xad,0x58,0x89,0x8b,0x6d,0xe3,0xa4,0x74,0x31,
- 0x07,0x95,0x1a,0xf2,0x5f,0x92,0x5e,0x17,0xb1,0xe5,0x7a,0xf6,0x38,0xe4,0xd4,0x25,
- 0xad,0xfa,0x2f,0x78,0x06,0x47,0x5c,0xf8,0x4b,0x38,0x4f,0x42,0x0e,0xc9,0x06,0xad,
- 0xb4,0x1f,0x46,0xef,0x46,0x69,0x3b,0xec,0x83,0xe1,0x01,0x35,0xd9,0x76,0x48,0x77,
- 0x18,0x39,0x60,0x8f,0x5b,0xef,0xb5,0xe2,0xd4,0x87,0xbc,0x3b,0x55,0x8b,0x7f,0xc3,
- 0x84,0xe7,0x62,0x8f,0x07,0xb5,0xf3,0x78,0x7d,0xe5,0x70,0x3e,0xaf,0xed,0x42,0xed,
- 0xe9,0xa2,0x1b,0x9b,0x7a,0xfc,0x7e,0x53,0x6a,0x8f,0x9f,0x26,0x9d,0x82,0x9d,0xc3,
- 0xa9,0x30,0xa6,0x1a,0x1c,0x53,0x7d,0x52,0x99,0x6d,0xc7,0xbf,0x86,0x60,0xff,0xea,
- 0xe2,0x4a,0x5e,0x47,0x39,0xf9,0x8c,0x65,0xa4,0x95,0x9d,0x71,0x4a,0x92,0x31,0x9d,
- 0x4a,0xc1,0xdc,0xde,0x4c,0x46,0x47,0x57,0x2c,0xb8,0x2c,0x73,0xb4,0x58,0xea,0x19,
- 0xc9,0xe0,0xaf,0xa7,0xf1,0xcd,0xb6,0x32,0xf7,0x55,0x6d,0x57,0x6b,0xe5,0xeb,0xb7,
- 0xf1,0x98,0xcb,0x37,0xd2,0x4a,0xa9,0x58,0x64,0x3e,0x93,0x00,0xb4,0xb5,0xf8,0xea,
- 0x5f,0xb2,0x74,0x38,0xc6,0x61,0xfb,0x34,0xca,0x01,0x5b,0x31,0x32,0xc4,0x0e,0xdf,
- 0xce,0xc4,0xbf,0xba,0xc8,0x4c,0x33,0x68,0xf3,0xcf,0x57,0x5a,0xc6,0x41,0x6f,0x48,
- 0x8a,0xd3,0xb3,0x24,0xd4,0xe7,0xd3,0x8b,0x7b,0xc5,0xe7,0xa8,0x05,0xcd,0xce,0x1a,
- 0x75,0x69,0x7b,0x70,0x9f,0x57,0xef,0x7c,0xd9,0xcd,0x7f,0x38,0xa7,0xcf,0x87,0x49,
- 0xbd,0xb0,0x28,0x47,0x17,0xd9,0x34,0x29,0xd5,0x2f,0x09,0xc3,0xcd,0x23,0x32,0x23,
- 0xba,0x39,0xc7,0xe2,0x95,0x12,0x3e,0x68,0xa3,0x24,0xa3,0x08,0xd6,0x57,0x7d,0x5a,
- 0x4a,0xb8,0xea,0xbf,0xf0,0x4e,0xe0,0xa7,0x8e,0x6e,0x76,0x14,0x4c,0x8b,0x3a,0xc2,
- 0xb2,0xc1,0xd5,0x15,0xae,0xb2,0x41,0x7c,0xcc,0xf9,0x98,0x3a,0x78,0x1f,0xba,0xf1,
- 0xd7,0x4e,0x97,0x88,0x8c,0x19,0x70,0x36,0xa0,0x01,0x51,0x13,0xe3,0xb8,0xcb,0x20,
- 0xdd,0xee,0xaf,0x9c,0xb2,0x2f,0x39,0x33,0xb8,0x3f,0xc3,0xbf,0x81,0xf8,0x2b,0x95,
- 0x11,0xf9,0x0a,0xbe,0x1e,0x70,0xe2,0x8c,0x8b,0xc5,0x5c,0xfd,0x01,0xe8,0xba,0x26,
- 0x20,0x16,0xe8,0x30,0xcf,0xa7,0x2d,0xd8,0x95,0x51,0x04,0xc3,0x79,0x76,0xe1,0xaf,
- 0x14,0x61,0xf9,0xf3,0x8c,0x27,0xe7,0xa4,0xb3,0xa6,0x6a,0xb1,0x58,0xae,0x53,0x5d,
- 0x1f,0x56,0x05,0xb1,0x5a,0x7b,0xc4,0x96,0xe7,0x4b,0x19,0xc9,0x41,0x67,0x4c,0x47,
- 0x86,0xff,0xb0,0x90,0xd5,0x7f,0x6d,0x0f,0x22,0xc9,0x3c,0x3c,0x05,0xa9,0xa0,0x4d,
- 0x44,0xef,0x3b,0xa3,0xce,0xd6,0x8e,0x99,0x35,0xa9,0xfc,0x33,0xd2,0x1c,0x4c,0xac,
- 0x75,0x68,0xe7,0x29,0xe7,0xdf,0x40,0x44,0x36,0xa8,0xba,0xf1,0x17,0xdd,0x27,0x72,
- 0xb6,0x0d,0x40,0x5b,0xff,0x60,0xd1,0x6e,0x20,0x11,0x7d,0x9a,0x0c,0x6b,0x11,0xd9,
- 0x27,0xb7,0x9d,0x9e,0x08,0xa3,0xc1,0xe0,0x6a,0x92,0x5d,0xff,0x15,0x31,0xaa,0x2c,
- 0x31,0xa3,0x0c,0x4d,0x01,0xac,0xd7,0x8f,0xc9,0xa1,0x44,0xf8,0x76,0xdf,0x26,0x69,
- 0x9a,0x7e,0xc8,0xa1,0x7a,0x50,0x6a,0xed,0x31,0x75,0xc6,0xc2,0x4d,0xe5,0x6e,0xfc,
- 0x95,0xe0,0xdc,0x1a,0xb2,0x4d,0x8e,0xc1,0xf4,0x97,0x99,0xda,0xf2,0xea,0x34,0x23,
- 0xe2,0x98,0xea,0x4a,0x17,0x34,0x6d,0xfe,0x0d,0x52,0x75,0xa7,0x92,0x1d,0xff,0x42,
- 0x8e,0x7a,0xab,0xab,0xc1,0x51,0x7d,0x82,0xeb,0x3c,0xc5,0x09,0xf1,0xfe,0x45,0x9c,
- 0x9a,0x91,0x18,0xeb,0x0a,0x4c,0xe7,0xd7,0x41,0x9d,0xf4,0xc0,0x77,0xc7,0xc6,0xbf,
- 0x6c,0xf2,0x87,0x68,0xc0,0x41,0x01,0x85,0xa2,0x4c,0x79,0x15,0x92,0x47,0x6e,0x70,
- 0xd2,0x0e,0xb1,0x58,0x2c,0x60,0x93,0x75,0x04,0x8a,0xb2,0xf4,0xbf,0x02,0x11,0x4f,
- 0x81,0xcd,0x5f,0x17,0xa4,0x8d,0x96,0x23,0xfd,0x93,0xb6,0x27,0x8c,0xfe,0x00,0x78,
- 0xcb,0x71,0x2c,0x04,0x73,0xe6,0x79,0x79,0xad,0xc7,0x09,0x64,0x78,0x73,0x8a,0xdd,
- 0xf1,0x2f,0xc1,0x16,0xf9,0x92,0xea,0x9b,0x32,0x4e,0xfb,0xcb,0xd2,0x39,0xe3,0x12,
- 0x39,0x60,0xb0,0x8d,0x0c,0xb1,0x30,0x0b,0x2f,0x5e,0xd1,0xad,0xc1,0x57,0x50,0xac,
- 0x39,0x0b,0x7f,0x5d,0x22,0x05,0xf6,0x12,0xd4,0x1b,0x6b,0x1d,0xb4,0x85,0xfa,0x5f,
- 0x97,0xc8,0x0c,0x6e,0x1c,0x22,0x53,0x32,0xb0,0x6b,0xa1,0x3d,0xc6,0x3b,0x20,0x4d,
- 0xcb,0xc2,0x5f,0x54,0x61,0xd9,0xe9,0x62,0x15,0x29,0x75,0x01,0x31,0x5d,0xe6,0xa5,
- 0x61,0x57,0x63,0x24,0xd4,0xc9,0x51,0xb4,0xf9,0x37,0x44,0x54,0x90,0xf4,0x64,0xc7,
- 0xbf,0x32,0x20,0x2b,0xe0,0x42,0x5b,0xb2,0xdc,0x25,0xe8,0x48,0x32,0x2f,0xbb,0xd3,
- 0x3b,0x33,0x88,0x0c,0xf7,0x2f,0x77,0xfc,0x8b,0x3a,0x74,0x2b,0x41,0xc3,0xb5,0xee,
- 0x71,0xb8,0x25,0xda,0xfd,0x51,0x06,0xbb,0x1e,0x75,0x32,0x5a,0xa9,0x7f,0x31,0x1f,
- 0xa3,0x31,0x8d,0x30,0x77,0xfc,0x2b,0xc9,0xb4,0x29,0x39,0x10,0x0b,0x64,0xee,0x67,
- 0xb5,0xc2,0x1c,0xed,0xef,0x6e,0xf6,0x21,0x6b,0x22,0x9e,0x27,0x70,0x02,0x79,0x33,
- 0x6c,0x65,0xd8,0x9a,0x11,0x83,0xf1,0x1f,0xba,0xf1,0x57,0xb4,0xda,0x42,0x5b,0x0d,
- 0x6e,0x90,0xf5,0x66,0x19,0x23,0xa2,0xd7,0xda,0xfa,0x32,0x42,0x60,0x67,0x65,0x26,
- 0x04,0xc6,0x9f,0x0b,0xdf,0x98,0xfa,0xaf,0x3a,0xcd,0xae,0xca,0x14,0x72,0x32,0x40,
- 0x0c,0x1e,0xcf,0x93,0x19,0x1a,0x58,0xfb,0xfe,0xa1,0x61,0x27,0x10,0xa6,0x7b,0xbd,
- 0x59,0xfa,0x5f,0x42,0x15,0x97,0xfd,0xda,0x43,0xaa,0x13,0x95,0x16,0x10,0xdb,0xaa,
- 0x0e,0x16,0x8d,0x56,0x3c,0xfc,0x4a,0x15,0x35,0x5e,0x67,0x40,0xcc,0x0e,0x7b,0x59,
- 0x1a,0x61,0x96,0xfe,0xb2,0x67,0x0c,0xfe,0xf2,0x58,0xfe,0xc6,0x70,0x5e,0xe8,0x0e,
- 0x04,0x59,0x41,0xd4,0x2d,0x7d,0x8e,0x50,0x33,0x68,0x10,0x39,0x57,0xc8,0x94,0x39,
- 0x60,0x99,0x9e,0xa3,0xeb,0x0a,0x0b,0xe7,0xaa,0xff,0xda,0xa5,0x20,0xf7,0x6c,0xee,
- 0x29,0x65,0x97,0x58,0x39,0x70,0x23,0x7f,0xf7,0x7e,0x03,0xf9,0x37,0x7e,0x49,0x1e,
- 0x24,0xd5,0x4b,0x15,0x72,0x75,0x21,0x8b,0x91,0xb1,0xf7,0x73,0x17,0xb1,0xf8,0x37,
- 0x90,0x1a,0x11,0x8c,0x2c,0xfe,0xf9,0x3a,0x4e,0x3b,0xff,0x87,0xd6,0xfa,0x74,0xa5,
- 0x03,0xc4,0x16,0x4b,0x1f,0x88,0x27,0xda,0xe7,0xa6,0x17,0x46,0xd5,0x70,0x26,0x23,
- 0xf1,0xf7,0x34,0x64,0xf3,0x6f,0xcc,0x8d,0x79,0x4b,0xdd,0xf5,0x5f,0xa3,0xac,0x4e,
- 0xa1,0x78,0x2c,0x6f,0x58,0x42,0xe2,0xfa,0x5f,0xd5,0xf8,0xe4,0xba,0xba,0xf6,0xdb,
- 0x46,0x9d,0x91,0x89,0x7f,0x19,0x56,0xfd,0x97,0x97,0x49,0x7a,0xb5,0xd7,0xeb,0x55,
- 0x8e,0x7f,0xd8,0x2f,0x85,0xc9,0x45,0x4c,0x94,0x5a,0x5d,0x3c,0x8b,0x1c,0x6f,0xab,
- 0x67,0xb4,0x00,0xc6,0x25,0x18,0x9c,0x6f,0x8d,0x89,0xad,0xed,0x2f,0x76,0xc7,0xbf,
- 0xc8,0x96,0x3e,0x5b,0xa4,0x92,0x3a,0x1b,0x99,0x6a,0x16,0x1b,0xc6,0xcc,0x54,0xd9,
- 0x41,0xf5,0x3e,0x51,0xd3,0xc0,0x4f,0xe8,0xcb,0x63,0xc7,0x86,0x71,0xdd,0x01,0x59,
- 0x9a,0x62,0xd8,0xf1,0x2f,0x85,0xf1,0x6f,0x94,0x33,0xe9,0x6a,0x05,0xa7,0xce,0xe3,
- 0x5c,0xa7,0x59,0x6c,0x26,0x3b,0x8d,0x1b,0x4d,0xd8,0x77,0x34,0xae,0xbc,0x06,0x5d,
- 0x25,0x4f,0x1b,0x36,0xce,0xd5,0x60,0x9e,0xb5,0xb8,0x9c,0xc1,0x5f,0xf6,0x52,0xca,
- 0x3b,0xa4,0xaa,0x3e,0x0b,0x5c,0xc3,0x2a,0x7f,0x5f,0x9c,0x07,0x7b,0x81,0x6e,0x4a,
- 0x44,0x14,0x8c,0x36,0x4e,0x24,0xc5,0x70,0x37,0x38,0xc4,0xb8,0xee,0xb1,0x20,0x09,
- 0x94,0xda,0xfc,0x87,0x0c,0x7f,0x19,0xe1,0x74,0xc0,0x9a,0xde,0xe6,0x2a,0x67,0x9e,
- 0xd7,0x4a,0x7f,0x67,0x7c,0xd3,0xa8,0x35,0xd5,0x7d,0xb7,0x7f,0x96,0xed,0xef,0x9d,
- 0x08,0xa0,0x46,0x49,0x68,0xc8,0x59,0x8b,0xe0,0xa6,0xac,0xf8,0x97,0x5c,0xe7,0x2c,
- 0x53,0xfc,0x1f,0x9c,0xeb,0xb4,0x7e,0xe9,0xdd,0x12,0x3c,0x37,0xf6,0x4d,0x97,0x5e,
- 0x8c,0x3b,0x39,0xa5,0xa3,0x0e,0x10,0xa3,0xcc,0x18,0xcc,0xe0,0xaf,0x0b,0xdb,0xeb,
- 0xd1,0x33,0x67,0xae,0x48,0x73,0x90,0x1b,0xd7,0x63,0x02,0xcf,0x64,0xd8,0x46,0x6b,
- 0x5e,0x2f,0xe8,0x85,0x87,0xfa,0xe7,0x82,0x05,0xc4,0xce,0x9a,0x35,0xaf,0x5b,0x83,
- 0x67,0xe1,0xfb,0x50,0xcf,0xe8,0x2f,0xef,0xa6,0x16,0x27,0x06,0x4a,0x2a,0xdb,0xda,
- 0xca,0x48,0xda,0x50,0x45,0x3b,0x07,0xfc,0xe9,0x87,0xdb,0x1b,0xa6,0x8b,0x8e,0xff,
- 0xbc,0x27,0x66,0xf1,0xd7,0x81,0xb3,0x7d,0x27,0x3c,0x17,0x65,0xd9,0xf8,0xcb,0xbe,
- 0x4e,0xc2,0x36,0x0c,0xb5,0x03,0xd6,0x74,0x7b,0x93,0xbf,0x4f,0xdd,0x28,0x56,0xe9,
- 0x4e,0xf9,0xcf,0x6e,0xe2,0xef,0xb7,0xc6,0x4c,0x33,0xc6,0xe4,0x1f,0xf2,0x37,0xe4,
- 0x98,0xf0,0xb4,0x5a,0xea,0xcf,0x83,0xe9,0xd3,0xcd,0x23,0x21,0x8f,0x97,0x3c,0x26,
- 0xae,0xe0,0x01,0x9a,0x2e,0x25,0x60,0x2e,0xb7,0xc6,0x20,0x19,0x85,0xe8,0xe0,0x2f,
- 0x76,0xd4,0xb0,0xd9,0xba,0xd5,0xfb,0xbc,0xa9,0x2f,0x9d,0xd1,0xf6,0xf2,0x3a,0x3b,
- 0x5d,0x5c,0x1e,0x00,0x7f,0x2c,0x0e,0xef,0x9f,0x77,0x4a,0x32,0x32,0x40,0xb6,0xcf,
- 0x36,0x0b,0x77,0x99,0xac,0xfa,0xaf,0xb1,0xa4,0x79,0xdc,0x28,0x1e,0xa6,0x58,0xe4,
- 0x35,0xa5,0x77,0xfe,0x30,0x79,0x8d,0xd4,0xf7,0x33,0x7f,0x7e,0x34,0xa7,0xde,0x8a,
- 0x45,0x8a,0x6c,0x6f,0xca,0x8e,0x7f,0x19,0xa5,0x1c,0x52,0xd5,0xf3,0x34,0x51,0x34,
- 0x0a,0xd0,0xb8,0x40,0x32,0x7a,0x6d,0xfd,0x8b,0x3e,0x28,0xae,0xa3,0x56,0xb1,0xd8,
- 0x30,0x39,0x4a,0x9f,0x4e,0x2f,0x1c,0x2a,0xcf,0x8e,0x7f,0xc5,0x18,0xa4,0x7a,0x7f,
- 0xa0,0xfa,0x9c,0xe7,0x92,0x78,0xc0,0x38,0xd0,0x5c,0xfd,0xef,0xca,0x25,0xff,0x01,
- 0xe3,0x7d,0xf3,0xe6,0x73,0xea,0x25,0xe9,0x0a,0x59,0x67,0xde,0x30,0x88,0xb9,0x4f,
- 0x86,0x15,0x2c,0x7b,0x53,0xfb,0x29,0x6a,0x6a,0x6f,0x17,0x33,0xf8,0x4b,0x81,0x19,
- 0x8b,0x71,0x37,0x1e,0x00,0x6f,0x34,0x54,0xe4,0x95,0x77,0x08,0x01,0xf3,0xf6,0x90,
- 0x06,0x4b,0xa0,0x21,0x43,0x11,0x40,0xe0,0xc7,0x8c,0xa0,0xd9,0x89,0x13,0x6e,0x09,
- 0x34,0x20,0x83,0x0a,0x43,0x01,0xdd,0x59,0xf1,0x2f,0xfb,0x96,0x98,0x86,0xf9,0x75,
- 0x3c,0x22,0xd6,0xc1,0x0c,0x21,0x97,0x87,0xbd,0x7e,0x20,0x4c,0xe3,0x09,0xa8,0x16,
- 0xee,0x7e,0x8f,0x3c,0x89,0x28,0x72,0x9f,0xcd,0x3f,0x0f,0xf8,0x0b,0xd7,0x2b,0xe6,
- 0xe4,0x51,0x7b,0x39,0x89,0x4d,0x2d,0x5c,0x50,0x65,0x07,0x1d,0xb0,0x4c,0x0d,0x67,
- 0xac,0x58,0xbf,0x80,0x5d,0x55,0x18,0xe2,0xff,0x2d,0x39,0x42,0x9f,0xf9,0xc0,0xdb,
- 0xa3,0xd2,0x0c,0xfe,0x3a,0x20,0xc3,0x4e,0xc4,0xa3,0xc0,0x73,0xdd,0xfa,0x5f,0x6d,
- 0x17,0x2d,0x69,0xb0,0x2f,0xa1,0xf1,0x9d,0xac,0x35,0x45,0xcd,0x5f,0x94,0x53,0x93,
- 0xbe,0x99,0x15,0xff,0x3a,0x58,0x90,0x91,0xfd,0xb2,0x72,0xd5,0x58,0x44,0x15,0xab,
- 0x87,0x10,0xd1,0x03,0xfe,0xaa,0x35,0xd7,0x85,0xb2,0x72,0x0f,0x74,0xb8,0x91,0x9e,
- 0x96,0xb2,0xf5,0x97,0x07,0x14,0xce,0x7f,0x78,0x83,0xad,0xff,0x55,0x9e,0x56,0xbe,
- 0x2d,0xd6,0x81,0x1b,0x5f,0xdf,0xdb,0x39,0x9c,0xfb,0x1f,0xda,0xcf,0x15,0x1f,0x74,
- 0xc1,0xf7,0xe1,0x22,0xef,0xb8,0x28,0xe2,0xac,0x2f,0x2b,0x37,0x09,0xff,0x94,0xc1,
- 0x5f,0xa8,0xba,0xeb,0x71,0x1e,0x07,0x6e,0xf8,0x4d,0x46,0x7f,0xd7,0xc6,0x54,0xf0,
- 0x1a,0x5e,0x94,0xdb,0xa8,0xe2,0x1c,0x1b,0xa2,0xd1,0x47,0xba,0x0d,0x98,0x67,0xdd,
- 0xe6,0xdf,0x60,0xf1,0xaf,0xf6,0x4a,0xbf,0xe2,0xc0,0x01,0x1e,0xed,0xd2,0x87,0x94,
- 0x95,0xf1,0x08,0xf9,0x1e,0xfd,0xbb,0x34,0x46,0x6a,0x6c,0x8d,0xb0,0x1f,0x09,0xbb,
- 0x38,0x77,0xdf,0x2f,0xc9,0x33,0xe4,0x06,0x54,0x7c,0xba,0x3f,0x2b,0xfe,0x65,0x14,
- 0xd8,0xf8,0x8b,0xfd,0xa3,0x17,0x68,0xe8,0xbd,0xfc,0x10,0xcc,0xcf,0x73,0x34,0x68,
- 0xfa,0x66,0xdf,0x71,0xb4,0xe4,0x39,0x79,0xf6,0x99,0x45,0xd8,0xf5,0x21,0x80,0x47,
- 0x00,0x62,0x7d,0xe4,0x42,0x28,0x84,0xe7,0x3f,0xae,0xfc,0xc3,0x0b,0x5a,0x3d,0x51,
- 0xf1,0xcc,0xea,0x3b,0xc6,0xac,0x13,0x3e,0x1e,0xff,0x3a,0xd0,0x07,0xc6,0xbb,0x78,
- 0x7c,0x74,0x70,0xc1,0x39,0xe9,0x14,0xcf,0xeb,0xfe,0xbd,0x74,0x71,0x19,0xcf,0x3f,
- 0x84,0xf5,0xba,0x80,0x64,0xf5,0xeb,0xc7,0xc4,0xbf,0x08,0xbf,0x7f,0xb0,0xbc,0xa5,
- 0x4b,0xfa,0x99,0x71,0x44,0x8b,0xbc,0x00,0xc6,0x0a,0xe3,0x42,0x0b,0x52,0xf1,0x20,
- 0xe5,0x2c,0xef,0x7a,0xcf,0x06,0x62,0x8c,0xa3,0x1e,0x6f,0xb6,0xec,0xfc,0x43,0x7e,
- 0xa6,0xb7,0x4b,0xaf,0xec,0xbf,0xee,0x1e,0xf1,0x28,0xfd,0x15,0x18,0xea,0x3d,0xd2,
- 0x5d,0x74,0x57,0xa0,0xf2,0x28,0x3b,0xf7,0xfb,0x1d,0x6b,0x11,0x4f,0x99,0xb8,0x01,
- 0xf9,0xb0,0x48,0x19,0xf3,0x0f,0xb7,0xb7,0x64,0xe7,0x1f,0x06,0xf5,0xdb,0x00,0xe7,
- 0x66,0xe6,0x79,0x15,0xb5,0xa2,0x8a,0x18,0x79,0x5c,0xb0,0x72,0xda,0x29,0xc3,0xea,
- 0x3a,0x46,0x57,0xd9,0xfc,0x1b,0x98,0xa3,0x18,0x18,0xc3,0xbf,0x11,0xd4,0x95,0xac,
- 0x75,0x7f,0xc4,0x66,0x8b,0x72,0x18,0x8a,0x30,0x10,0x66,0x1f,0x20,0xf3,0x8c,0x8e,
- 0xbd,0x86,0x9f,0x96,0x86,0xe2,0xae,0xfc,0x43,0xac,0xe4,0xca,0x77,0x60,0x57,0x92,
- 0xf1,0xc1,0xde,0xcf,0xd5,0xbe,0x5c,0xd4,0x88,0xbc,0xec,0x4b,0xb4,0x80,0xd8,0x79,
- 0xba,0xdf,0xac,0x89,0x07,0x07,0xdb,0xce,0x67,0xc5,0xbf,0xbc,0x59,0xe7,0xea,0x93,
- 0x33,0xf8,0xcb,0x0e,0x84,0x0d,0x65,0xa8,0x11,0x23,0x64,0x0a,0x18,0x1a,0xcb,0x51,
- 0x1c,0xc3,0x7f,0x58,0x17,0x75,0xc3,0x2e,0xcb,0xd8,0x24,0xc9,0xc2,0xa1,0x64,0x88,
- 0xbb,0xfa,0x2f,0xb1,0xd0,0x58,0x23,0x2f,0x0d,0x5b,0x84,0xb1,0x80,0x57,0xf2,0x6a,
- 0x8d,0x82,0xf5,0xe5,0x59,0xfc,0x1b,0x08,0x97,0xfc,0xae,0x98,0xd4,0x28,0xb9,0xbf,
- 0x19,0x60,0xd7,0x36,0xe5,0x89,0xe4,0x2c,0x80,0x66,0xc5,0xed,0xf2,0x6a,0xea,0xb7,
- 0xf9,0x0f,0x6d,0x6d,0xe5,0x7e,0x7f,0x33,0xf8,0xcf,0x63,0xea,0xbf,0x1c,0xf7,0xfb,
- 0x3a,0xae,0xf1,0x54,0x75,0x67,0xe7,0x77,0xc5,0x0a,0xe1,0x51,0xdc,0xa4,0x12,0xe2,
- 0x36,0xf9,0x51,0xdd,0xcf,0xf3,0xd0,0xac,0xeb,0x9c,0x21,0xab,0x5b,0xab,0x9a,0x3d,
- 0xd9,0xfc,0x87,0x82,0x0d,0xbb,0xac,0x20,0x17,0xdd,0x12,0x0a,0x2c,0xbc,0xae,0x48,
- 0x6c,0xa7,0x5d,0x7a,0x05,0x46,0xc4,0x1e,0xa4,0xad,0x7a,0x32,0xfa,0x17,0x8c,0x1a,
- 0xd1,0x0e,0x96,0xb5,0x92,0x0a,0x04,0x11,0x2e,0xfe,0x0d,0x9c,0x3a,0x84,0x1e,0x0a,
- 0x9f,0x67,0xc4,0x20,0x46,0x95,0xc6,0x12,0x35,0x37,0x31,0xd9,0xa6,0xcf,0x25,0x4b,
- 0x4e,0x92,0x7b,0xb2,0xf3,0xc7,0xc4,0xfe,0xe6,0xba,0x92,0x02,0x77,0xfd,0x17,0x22,
- 0xa0,0x26,0x57,0xfd,0x17,0xe3,0x3f,0x8c,0x2c,0xf4,0x15,0x4a,0x83,0x77,0xbe,0xc5,
- 0x5a,0x1a,0xb7,0x61,0xfc,0xeb,0xd6,0x75,0xac,0x8b,0x87,0x5a,0xce,0x35,0xbd,0x4b,
- 0xe6,0xe0,0x5b,0x34,0x2b,0xfe,0x05,0x48,0x2a,0x51,0xec,0x04,0x71,0xac,0x96,0xe6,
- 0x46,0xae,0xf6,0x05,0xeb,0x85,0x42,0xcc,0x63,0x63,0x64,0xef,0x92,0x1d,0xc6,0xc2,
- 0x81,0x72,0x37,0xff,0x86,0x5c,0x45,0x64,0x1e,0xce,0xab,0xb2,0x7e,0x17,0xa9,0x25,
- 0xd3,0xb1,0x3a,0xb8,0x07,0xfc,0x77,0x0f,0x1a,0xdb,0xc9,0xfd,0x36,0xfe,0xb2,0x88,
- 0x10,0x3b,0x04,0x96,0x91,0x78,0xcc,0xa5,0xbf,0x2c,0x20,0xb7,0x46,0x11,0xd6,0x7f,
- 0xb9,0x02,0x61,0x79,0x0c,0x7f,0x01,0xda,0x2a,0xd5,0x72,0x5d,0xf8,0x0b,0x07,0x5b,
- 0x31,0x32,0x1d,0x2b,0x83,0x5e,0xce,0xc9,0xe0,0x2f,0xa1,0xaa,0xe5,0x36,0x4e,0x72,
- 0x58,0x65,0xdc,0x8e,0x8b,0xfb,0xa8,0xe0,0x37,0xf2,0x12,0x9e,0x6d,0x36,0x24,0xdf,
- 0x46,0x9e,0xcc,0x08,0xc9,0x71,0x43,0x5f,0x6d,0xe8,0x46,0xc7,0x06,0x87,0x7f,0xa3,
- 0x90,0xfd,0xe4,0x98,0x5d,0xb4,0x08,0x63,0x2c,0x23,0x5f,0x93,0x2a,0xac,0x08,0x2f,
- 0xa3,0xdd,0xa8,0xca,0x9a,0x9f,0x37,0xc9,0x5b,0x03,0xe1,0x95,0xde,0x8d,0xc2,0x90,
- 0x1b,0x7f,0xd5,0x19,0x55,0x89,0xc6,0xec,0x40,0x58,0xc3,0xc3,0xe3,0x9f,0x14,0x6e,
- 0x30,0xd2,0x8f,0x3e,0xcc,0x05,0x6d,0x86,0x67,0x67,0x0c,0xff,0xe1,0xa2,0xcc,0xbd,
- 0x51,0xee,0x94,0x0d,0xc6,0xf8,0xa9,0x08,0x61,0xfc,0x1b,0xb3,0x9c,0x40,0x18,0x17,
- 0x55,0xef,0x37,0x6b,0x43,0xde,0xf6,0x2c,0xfe,0xc3,0x9c,0xea,0x24,0x0b,0x7b,0xed,
- 0x21,0xd3,0x5a,0x11,0x64,0x29,0x7b,0x48,0x7d,0x22,0xff,0x74,0x43,0x80,0xec,0x3f,
- 0x0d,0x3e,0x62,0x72,0xd2,0x4a,0xf2,0x6a,0x88,0x87,0xbd,0xe4,0x35,0x2c,0x6f,0x59,
- 0x1c,0x12,0x1f,0x26,0xe5,0xb4,0xe3,0xad,0x31,0xfc,0x87,0x69,0x5e,0x92,0x9c,0xe1,
- 0x55,0xab,0x42,0xfa,0x85,0x85,0x78,0x5a,0x88,0x09,0x4e,0x51,0xa3,0xd5,0x60,0x1c,
- 0x1d,0x59,0xb1,0xfe,0x80,0xa9,0xcc,0x1c,0xc3,0x7f,0x78,0x50,0x6d,0x11,0xdd,0x04,
- 0x7d,0xa1,0x00,0x51,0x9a,0xc4,0xc9,0xf2,0xd3,0x3c,0x52,0xd3,0x4f,0xbe,0xcb,0xc3,
- 0x5e,0xaf,0x0a,0x16,0x40,0x38,0x8a,0x42,0x60,0x86,0xd2,0x1c,0x1f,0xc7,0x7f,0xc8,
- 0xf6,0x41,0xa7,0xec,0xab,0x32,0xa6,0x44,0xa5,0xaf,0x02,0xda,0x62,0x5d,0x5f,0x25,
- 0xbd,0x9c,0xff,0xf0,0x58,0x06,0x88,0x1d,0x6f,0x9d,0x93,0x04,0x20,0xf6,0x36,0xb1,
- 0xf1,0x97,0xfc,0x2d,0x21,0x42,0xff,0xa7,0xe5,0x3a,0xc2,0x9e,0xc2,0x09,0xdf,0x8c,
- 0xcf,0x62,0xb6,0x21,0x20,0x68,0x84,0x66,0xcb,0x1d,0x19,0x29,0xd1,0xca,0xdb,0x59,
- 0x61,0x47,0xc4,0x0e,0x5a,0xf5,0x17,0x32,0xf3,0x0f,0x97,0x79,0x47,0x8a,0x2f,0x1b,
- 0xdf,0x49,0xcc,0xe1,0xf1,0xaf,0xe3,0x74,0x8e,0xee,0x8b,0x5e,0x77,0x59,0x79,0x9f,
- 0x7b,0x83,0x2f,0x93,0x17,0x13,0x73,0x38,0xff,0xe1,0x15,0xc0,0x8c,0xeb,0xd0,0x99,
- 0x7c,0x8f,0x32,0xfd,0x65,0x1b,0x7f,0x69,0x9b,0xc9,0x0e,0x9a,0xdf,0xc7,0xf7,0x77,
- 0xa2,0x0f,0xb1,0x89,0x6a,0xd3,0xf4,0xc2,0x02,0x03,0xf9,0xb5,0xd8,0xfc,0x48,0x03,
- 0xf4,0xdf,0x13,0x33,0x87,0x16,0xb4,0x48,0x58,0x1f,0x77,0xcb,0x10,0x9b,0xc3,0x55,
- 0x5a,0x35,0x0d,0xb4,0xb8,0xf4,0xbf,0xd8,0xf4,0x22,0xff,0xfc,0xda,0x1d,0x42,0x3e,
- 0xe6,0x8b,0xde,0x05,0x8b,0x72,0x23,0xea,0xb0,0xac,0xa5,0xd6,0xcc,0x9f,0x20,0x0f,
- 0x90,0xb2,0xfe,0xbc,0x16,0x9e,0x87,0xcf,0xf3,0x0f,0x01,0xf9,0x12,0x00,0x6b,0xb9,
- 0x96,0x9e,0x38,0xdf,0xbf,0x3a,0xb2,0x73,0x33,0xda,0xe0,0xf1,0xf4,0x10,0x71,0xad,
- 0xbd,0x91,0x99,0x64,0x3d,0xef,0x5a,0x48,0xac,0xbc,0x1d,0xa6,0xd1,0xfc,0xa6,0xa7,
- 0x62,0xac,0xfe,0x97,0xab,0xd6,0x63,0x3e,0xe3,0x3f,0xa4,0x70,0xd3,0x3e,0x65,0x4f,
- 0x6f,0x3f,0xe9,0xe5,0xd3,0xeb,0xd4,0x17,0xbc,0x8b,0xc9,0x30,0xc3,0x05,0x4e,0xfe,
- 0x61,0x82,0xb0,0xd8,0x96,0xed,0xce,0x31,0x22,0x7a,0x76,0xe5,0x04,0x5e,0x47,0x7b,
- 0x8b,0x77,0x6d,0x27,0xa3,0x0d,0x4e,0xee,0xd3,0x7d,0xcc,0xd0,0xc1,0x03,0x31,0x04,
- 0x37,0xfe,0x92,0xaf,0xe0,0x59,0x0a,0xfa,0x6c,0x7f,0x60,0x21,0x12,0x00,0xe0,0x7f,
- 0x20,0x37,0x1b,0xb0,0x3a,0xdf,0x26,0xbf,0xe7,0xf9,0x87,0x23,0xe4,0x45,0x2c,0x0d,
- 0x4b,0x65,0xfc,0xcc,0x33,0x98,0x0d,0x4e,0xbd,0xc3,0xad,0x19,0xfc,0x25,0x80,0x7f,
- 0xa8,0x5f,0x67,0x05,0xa7,0xd0,0xbd,0x44,0xb5,0x2f,0x7f,0xda,0x97,0x07,0xde,0xf2,
- 0x6e,0x3a,0xab,0xb7,0x00,0xc9,0xc1,0x5e,0x31,0xb1,0x0b,0xc6,0xfc,0xc0,0x01,0x50,
- 0x66,0x15,0xe9,0xa8,0x74,0xf1,0x6f,0x68,0x7b,0xa5,0xaa,0x25,0x4e,0xfc,0xcb,0x62,
- 0x1d,0x9f,0x96,0x54,0xdb,0xc5,0x15,0x64,0x6f,0x07,0x8b,0x88,0x3d,0x49,0x3a,0xa8,
- 0xdf,0x5c,0x9d,0x5d,0x07,0xd4,0x81,0x1c,0x1d,0xf1,0xa4,0x0b,0x7f,0x85,0x9c,0xfa,
- 0xaf,0xc0,0x2b,0x79,0x48,0xea,0xd5,0x66,0xe8,0x09,0x58,0x2f,0x2f,0xed,0x36,0x2a,
- 0x4c,0xcf,0x4c,0x78,0x59,0x24,0x02,0x81,0xa3,0x0c,0x3b,0x3c,0x62,0x04,0x79,0xfe,
- 0x61,0x0d,0x82,0xfd,0x54,0x83,0x2b,0xfe,0xc5,0xd0,0x1f,0x4c,0x1d,0xdd,0x4b,0xc2,
- 0x27,0xf3,0x39,0xf9,0xf9,0x2c,0x4d,0xa5,0xd2,0x0a,0xba,0xdb,0x08,0xf3,0x79,0x3e,
- 0x4c,0x8a,0x7e,0x9d,0x6f,0x85,0x2d,0x2c,0x20,0x26,0x30,0xf1,0xa9,0xa4,0x8b,0xff,
- 0x30,0x56,0x4f,0x30,0x17,0xd4,0x80,0x09,0xe7,0xb9,0x85,0xdf,0x21,0xf5,0x1d,0x3e,
- 0x13,0x16,0x17,0x89,0x02,0x0a,0x3e,0x80,0x79,0x1e,0x76,0x42,0x2d,0xa2,0x35,0x86,
- 0xa9,0x1a,0xc5,0xa4,0xe5,0x6e,0xfc,0xc5,0xf4,0xbf,0xce,0xc1,0x32,0xed,0xe6,0xdc,
- 0xf2,0xef,0x23,0xbf,0x68,0x8b,0x9a,0xe2,0x07,0x1d,0x14,0xd9,0xe6,0x49,0x37,0xea,
- 0xb5,0x5d,0xc6,0x35,0xe5,0x81,0x30,0x3c,0x5a,0x5c,0x3b,0xe0,0xe6,0x3f,0x44,0x31,
- 0x35,0xc0,0x5f,0x6f,0x2b,0x7b,0xe3,0x7e,0x1e,0x2b,0xe9,0x44,0x90,0x95,0x12,0xa7,
- 0x73,0x46,0x8e,0x04,0x67,0x9b,0x37,0x02,0xdb,0x59,0x68,0xcc,0xca,0x3f,0x84,0x96,
- 0x25,0xb0,0x5b,0xe9,0x2e,0xfe,0x0d,0x92,0xe4,0x38,0xb7,0x8b,0x04,0x08,0x53,0x9f,
- 0x47,0x19,0x44,0x8f,0x2e,0x12,0xfe,0x86,0xd4,0xc5,0xa3,0xb6,0xda,0x17,0x7b,0x76,
- 0xf8,0x01,0xfb,0x1e,0xce,0x1d,0xea,0x77,0xe3,0x2f,0xfd,0x20,0x7c,0x8d,0xf7,0x49,
- 0x0f,0xdd,0x6a,0x7d,0x1f,0xb6,0xb8,0x64,0x3a,0x5b,0x65,0xa9,0x47,0x3c,0x23,0xf4,
- 0xc0,0x6e,0xa5,0xb4,0xb2,0xb0,0xd7,0x34,0x6b,0xdd,0x2b,0x60,0x70,0x47,0x7c,0xb6,
- 0x9b,0x7f,0x23,0xdc,0x02,0x33,0xff,0x3b,0x70,0xe3,0xf7,0xbc,0xc5,0xb0,0xf0,0x3b,
- 0xc8,0x2f,0x9a,0x90,0x9e,0xe4,0x4f,0xd3,0x4f,0xfd,0x67,0xc8,0xf9,0x86,0xf0,0xb0,
- 0xd2,0x81,0x61,0x65,0xe5,0x27,0x56,0x10,0x39,0x16,0x0e,0x7b,0xf7,0x49,0x24,0x2b,
- 0xff,0xb0,0xaf,0x1a,0x6f,0xf5,0x8f,0x94,0x67,0xcd,0x6a,0x87,0x17,0xf4,0x2c,0x2c,
- 0x93,0x45,0x4a,0x09,0x8f,0x8c,0x56,0x3f,0x04,0xee,0x25,0xa6,0xe3,0xce,0xb1,0x16,
- 0x4e,0x9e,0x4b,0x00,0xac,0x65,0xe5,0x1f,0x86,0x4f,0xb2,0x2c,0xee,0x43,0x06,0xc7,
- 0xe6,0x94,0x7d,0x0d,0x22,0xdd,0xc8,0x4b,0x6e,0xb7,0x72,0xf5,0xa8,0xfe,0x82,0x7f,
- 0x51,0x83,0xe4,0x03,0xc3,0xd6,0x5f,0x46,0x16,0xbe,0xa7,0x24,0x17,0xff,0x21,0x3c,
- 0x56,0x1c,0x7f,0x75,0x20,0x05,0xe5,0xb3,0xbc,0x3e,0x0e,0x26,0x21,0x1e,0xe0,0x46,
- 0x8f,0x27,0xc8,0x55,0x84,0xe2,0xf0,0xc4,0xed,0x11,0x1d,0xc5,0x6a,0x7f,0xab,0xb2,
- 0xcd,0x5d,0xff,0xb5,0x37,0x0a,0x4f,0x01,0x42,0xaa,0xd6,0x84,0x7e,0xab,0x32,0x9b,
- 0xc5,0x97,0x61,0x99,0x6a,0xc5,0x76,0x66,0xe4,0xc9,0x28,0xbb,0x1c,0xd3,0x5b,0x3c,
- 0x58,0x20,0xe9,0xe8,0x18,0x76,0x13,0x7d,0x9e,0xa2,0xc5,0x43,0x6e,0xfe,0x8d,0x40,
- 0x3a,0x8a,0x90,0xaa,0x9d,0x96,0xb5,0x04,0x56,0xc6,0xed,0xfa,0x2f,0x63,0x03,0x37,
- 0xfe,0x12,0x00,0x42,0xf7,0xda,0xb2,0x98,0xb2,0x1c,0x8c,0x67,0x79,0x81,0x12,0x92,
- 0xa8,0x97,0xb5,0x28,0x8b,0xe1,0x7d,0x98,0xe1,0xdf,0x20,0x21,0x0a,0xf8,0xab,0x4f,
- 0xec,0x25,0xa1,0x26,0xaf,0x05,0xc4,0x4c,0x9f,0x2e,0xb4,0x23,0x34,0x33,0xf3,0x57,
- 0xb7,0x79,0xc1,0xf1,0x48,0xc4,0x0a,0x34,0xcc,0x3f,0x4c,0x86,0x78,0x65,0xeb,0x07,
- 0x38,0xb8,0x08,0xf0,0x97,0xc3,0xbf,0x61,0x51,0x1a,0x9e,0x23,0x17,0xb5,0x03,0x2e,
- 0x50,0x7c,0x56,0x6a,0x61,0x61,0xaf,0x45,0xa6,0x64,0xa9,0x03,0x98,0x3c,0xf4,0xdc,
- 0x67,0x15,0xbd,0xd6,0xcf,0xab,0x36,0xb3,0xf9,0x37,0xba,0x69,0x30,0xc5,0x93,0x73,
- 0xe6,0xb9,0x13,0x42,0x2a,0x34,0x87,0x10,0x78,0x14,0x65,0x77,0x6c,0x68,0xcf,0xf2,
- 0x0a,0x60,0xbd,0x04,0x70,0x60,0x3c,0x6e,0xfe,0x8d,0x72,0xb3,0x92,0x53,0x1a,0x6e,
- 0x31,0x16,0x38,0xe7,0x7e,0x2d,0x9e,0x12,0x5b,0x80,0x12,0x5b,0x6e,0x32,0x00,0xd5,
- 0xba,0xea,0xbf,0x76,0x88,0x65,0x44,0x6d,0x16,0x8b,0xdc,0xfc,0x1b,0x65,0xc9,0x00,
- 0x97,0x54,0x76,0x38,0x4c,0x6e,0x4c,0x7b,0x96,0x8b,0x45,0xbc,0xfc,0x39,0x5a,0xf4,
- 0xaa,0xd2,0x15,0x2f,0x4b,0xe7,0x2d,0x16,0x5d,0xa4,0x28,0xa8,0x11,0xa6,0x2a,0x76,
- 0xfe,0xbc,0xc5,0x7f,0x08,0x28,0xbb,0xe1,0x98,0x99,0x92,0xf5,0xb4,0x3b,0x91,0x43,
- 0x02,0xc3,0x6b,0xaa,0x0f,0x62,0x8b,0x81,0x94,0x10,0x1e,0x27,0xa3,0x1e,0x5b,0x92,
- 0x04,0xae,0x73,0xad,0x9b,0x7f,0x83,0x85,0xb4,0x46,0x61,0x32,0xf7,0xa6,0x2c,0x6e,
- 0x8d,0x5a,0xe4,0xf2,0xb9,0x85,0xe3,0xaf,0xc1,0xb6,0x21,0x61,0x3f,0xa9,0xd9,0x9e,
- 0x9f,0x46,0xd9,0xaf,0xb4,0xc5,0x51,0x7f,0x39,0x51,0xde,0xaa,0x0e,0xa9,0xb5,0x59,
- 0xfc,0x1b,0x1a,0x77,0xe7,0xf2,0x00,0x88,0x39,0xc5,0x47,0x60,0xd0,0x11,0xc1,0x96,
- 0x7c,0x55,0x2c,0x46,0xc4,0x61,0xc5,0xe2,0x85,0x18,0xd6,0x22,0x21,0xdf,0x43,0x52,
- 0x16,0xff,0x86,0x15,0x02,0x38,0x4b,0x9f,0x41,0x1f,0xf2,0x0d,0xf2,0x4d,0x2c,0x8a,
- 0xd9,0x24,0x39,0xec,0x0d,0xcb,0x08,0xaa,0x81,0x00,0x52,0xe0,0xc4,0x0e,0x76,0xbe,
- 0x56,0xcc,0xf7,0xa8,0x24,0xba,0xf8,0x37,0x0c,0x7f,0x4b,0xc0,0x2e,0xc5,0x52,0xbf,
- 0x1b,0xff,0x1d,0x07,0x47,0x9b,0xc5,0x0a,0x57,0xda,0x98,0xe1,0xbf,0x53,0xb5,0xe4,
- 0xba,0x32,0x49,0x86,0xd9,0xfa,0xcb,0x5d,0x24,0xc9,0xc9,0xea,0xf7,0x36,0x4f,0x8b,
- 0x76,0x26,0xc4,0x37,0x38,0x33,0x43,0x21,0xee,0x83,0xd6,0x75,0x30,0x23,0x71,0x00,
- 0x9e,0x5c,0xf7,0x75,0xc8,0xd6,0x26,0xb5,0x44,0x2c,0xc8,0xe2,0x3f,0x6c,0xe2,0xa1,
- 0x16,0x5d,0x8f,0xa9,0x85,0x4e,0xfc,0xcb,0x23,0x73,0xb4,0x15,0xe6,0x2a,0x54,0x4d,
- 0x18,0x08,0x73,0xe9,0x02,0xeb,0x7a,0x14,0xf5,0x97,0x33,0xfc,0x1b,0xf0,0x4a,0xb9,
- 0x16,0xb1,0x55,0x72,0x84,0xcc,0xf2,0x60,0x21,0x8f,0xc1,0xe6,0x79,0x5a,0x1b,0x97,
- 0xb1,0xf3,0x3d,0xa0,0x82,0x11,0x08,0x69,0xbe,0x38,0xb6,0x04,0xba,0x9d,0xfa,0x1d,
- 0xba,0xe8,0x81,0x46,0x77,0xfe,0xa1,0xff,0x00,0xd6,0x0a,0x9d,0x53,0x2e,0xe1,0xf3,
- 0x65,0x17,0x79,0x2d,0xc2,0xf8,0x17,0x9b,0xe7,0x97,0x24,0x16,0x23,0x8b,0xfa,0xb0,
- 0x6e,0xeb,0x92,0x9d,0xea,0x76,0x49,0xab,0x67,0xf1,0xaf,0x0c,0xff,0xc6,0x25,0x4e,
- 0x7b,0x68,0xa7,0x14,0xc2,0x03,0xcb,0xb2,0x43,0x87,0xed,0xf5,0x1a,0x90,0x2a,0x94,
- 0x67,0xa1,0xeb,0x7f,0x0d,0x64,0x56,0x10,0xff,0xad,0x9a,0x79,0xbe,0xec,0xf8,0x97,
- 0xc8,0xb8,0x35,0x86,0xb4,0x1e,0xf2,0x53,0x92,0x29,0xfb,0x4a,0x8a,0x01,0xd2,0x23,
- 0xfc,0x3d,0x1a,0x98,0x76,0x98,0x24,0xd7,0x25,0x9d,0xfc,0x43,0x46,0xb9,0xef,0x27,
- 0x0b,0x88,0x58,0xe0,0xe6,0xdf,0x00,0x04,0x64,0xc7,0xb6,0x38,0x11,0xa2,0xc8,0xe3,
- 0x5f,0x4e,0x20,0xcc,0xee,0x72,0x8b,0x02,0x50,0x68,0x29,0xf5,0x14,0x59,0xfc,0x1b,
- 0x2c,0xff,0x30,0xc9,0x70,0x37,0xdd,0x4d,0xa7,0xa3,0xec,0xd7,0xa0,0x1d,0x2d,0x75,
- 0xdf,0x3f,0xd4,0x1f,0x85,0x6d,0xd4,0x69,0xc1,0xbf,0xf2,0xc7,0xe0,0x41,0xcb,0x75,
- 0xf3,0x6f,0x84,0x2d,0xfc,0x75,0x3a,0x1c,0x63,0xf8,0x8b,0xcd,0xcf,0x46,0x75,0x2a,
- 0x67,0xec,0xdf,0x88,0x6a,0x5f,0x34,0xbc,0x54,0xdd,0xec,0xa9,0xb0,0xd2,0x05,0xf9,
- 0xfd,0xbc,0xdc,0xe7,0xc4,0xbf,0x2c,0xfe,0x0d,0x2e,0x01,0x70,0x36,0xbb,0xc8,0xab,
- 0xd3,0x32,0xae,0xc1,0x2e,0x25,0x12,0xf3,0x69,0x6d,0x3c,0x88,0xcc,0xc7,0x1c,0xdc,
- 0x0f,0x46,0x36,0xff,0xc6,0x56,0xf0,0x89,0xb0,0xda,0x2b,0xca,0xaa,0xbd,0x5e,0xe7,
- 0xf7,0x8f,0xac,0x96,0x59,0x69,0xab,0x6d,0x08,0xed,0xc3,0x9a,0xb7,0xbd,0x31,0x83,
- 0xdf,0x51,0x11,0xac,0xc8,0x4b,0x55,0xd1,0xc5,0x7f,0x48,0xcb,0x13,0x9c,0x52,0xbe,
- 0xa9,0x9a,0x2a,0x67,0xc4,0xf3,0xc4,0xe2,0x9f,0x0f,0x60,0x81,0x24,0x55,0xcf,0x00,
- 0xa8,0xd9,0x6f,0x7c,0x76,0x3b,0x74,0x21,0x34,0x73,0x92,0x15,0x1f,0x4b,0x44,0x87,
- 0x44,0x57,0xfc,0x6b,0xaf,0x1d,0xd2,0xea,0x32,0x82,0x69,0x25,0x02,0x98,0x9a,0xbd,
- 0xc7,0xea,0x6c,0x76,0x65,0x99,0xbd,0xb5,0xc0,0x4f,0xc8,0xae,0xff,0x22,0xfa,0xef,
- 0x95,0x3a,0x77,0xfc,0xeb,0x19,0x65,0xcb,0x41,0x85,0xd1,0xce,0x8b,0xc1,0x61,0xa5,
- 0x25,0xce,0x85,0x1a,0xd5,0x7b,0xe1,0x19,0x5c,0x65,0xbf,0x9f,0x77,0x90,0x1b,0xd3,
- 0x4a,0x2c,0xee,0xae,0xff,0xc2,0x7f,0xbd,0x25,0xae,0xcb,0x36,0xfe,0x92,0x2f,0xb7,
- 0xd6,0xa4,0x17,0xb2,0xd8,0x56,0xfb,0x5c,0x8c,0x6d,0xfd,0x92,0x23,0xb2,0xd9,0xaa,
- 0x45,0xc4,0xc1,0xcb,0xbe,0x66,0xe8,0xc1,0xc5,0x8d,0xae,0xfa,0x2f,0xd4,0xff,0x82,
- 0xc1,0xfe,0x4c,0xfc,0xeb,0x3c,0xcc,0xd0,0x24,0x2b,0x56,0xd2,0xcb,0xc2,0x5e,0xce,
- 0x76,0x93,0x31,0x00,0xa3,0xf9,0xb2,0xea,0xbf,0x2c,0xc3,0xc6,0x5f,0xae,0xf8,0x17,
- 0x79,0x91,0xd6,0x9c,0xf6,0x9d,0x94,0xc2,0x76,0xc5,0x4a,0xc4,0x0e,0x84,0x61,0x8e,
- 0x62,0x5d,0x6c,0x6d,0xbf,0x14,0x91,0xaf,0xc0,0x73,0x63,0x25,0x2b,0x5a,0xf5,0x5f,
- 0x6c,0xbd,0x30,0xfe,0xb5,0xdf,0xb0,0x28,0xe5,0x57,0x69,0x65,0x48,0x16,0x54,0xc8,
- 0x27,0xe1,0xac,0x67,0x72,0x6c,0x07,0x16,0x70,0xcd,0xc3,0xd9,0x40,0xa4,0x39,0x0f,
- 0xf6,0xaf,0x1d,0xda,0x16,0xab,0x74,0xae,0xa8,0x8c,0x06,0xee,0x16,0xa7,0x73,0xfe,
- 0x0d,0xc4,0x5f,0xcf,0xd8,0xd2,0x2a,0xed,0x46,0x59,0x1f,0x6c,0x6d,0xd6,0xf6,0x17,
- 0xb3,0x77,0x3d,0xbe,0x0f,0xc2,0x2d,0x21,0xe3,0x75,0x5c,0x3a,0xd7,0x27,0x94,0x98,
- 0xfd,0x5c,0x60,0xfc,0xab,0x1b,0xd5,0x69,0x43,0xe2,0x71,0x14,0xe3,0xbb,0x03,0x9e,
- 0x1d,0xcb,0xbd,0x9c,0x1c,0xcf,0xe7,0x46,0x2e,0xae,0xb2,0x0e,0xde,0x3b,0x78,0xf8,
- 0xae,0xbc,0x53,0xd4,0x86,0x0b,0x89,0xa5,0x19,0xfe,0x0d,0x78,0x52,0x3e,0x90,0x11,
- 0x52,0x1d,0x22,0xa9,0x01,0x5f,0x4a,0x0d,0xb0,0x39,0x54,0xf7,0x49,0xd5,0xec,0xd4,
- 0xda,0xb7,0x8d,0x9d,0x7e,0x47,0xb4,0x8a,0x76,0x54,0x04,0x63,0x5a,0xc6,0x58,0xa8,
- 0x82,0x75,0xd0,0xa9,0xeb,0x5c,0xf1,0xaf,0x51,0xb2,0xff,0x20,0xaa,0x1a,0xf5,0xc3,
- 0x9f,0x9f,0x58,0x94,0x92,0xde,0xe2,0x6b,0xd1,0xa5,0x02,0xc8,0x22,0xb6,0x22,0xb3,
- 0x01,0xcf,0x57,0x9d,0x3b,0x47,0xf1,0x43,0x2d,0xd2,0xec,0xdb,0xd9,0x66,0xe1,0xaf,
- 0x84,0x86,0xd9,0x86,0x30,0xf3,0xe8,0x67,0x9e,0x35,0x61,0x1f,0xc6,0x14,0xb5,0x2b,
- 0x22,0x82,0x2c,0x75,0x32,0x67,0xdb,0x68,0xc1,0x08,0x8b,0x50,0x33,0xdd,0x0a,0xb5,
- 0x38,0x11,0x96,0x90,0xe9,0x0d,0x48,0x2e,0xfe,0x8d,0x9e,0x81,0xad,0x14,0xc3,0x5e,
- 0xca,0xee,0xb8,0xff,0xef,0x94,0xcd,0x62,0x39,0x77,0x0b,0x57,0x17,0x05,0x79,0xd8,
- 0x6b,0x1f,0x86,0x2d,0x4c,0x3d,0x04,0xae,0x63,0x30,0x93,0x5b,0x08,0xc6,0xb7,0x95,
- 0x9d,0xa2,0x8b,0x7f,0x63,0x07,0xf1,0x2f,0xee,0x60,0xd7,0x11,0xb6,0x9e,0x56,0x30,
- 0x5f,0x80,0x5d,0x27,0x84,0x95,0x65,0x98,0xe2,0xf8,0x14,0x6e,0x64,0x1d,0x7e,0x0d,
- 0xde,0xbd,0xec,0x3a,0xbd,0x19,0xb2,0x8e,0x0d,0xd9,0xf1,0x2f,0xdd,0x91,0x9a,0x32,
- 0x94,0x90,0x47,0x71,0x12,0x47,0x35,0xf6,0x9c,0x32,0x37,0x43,0xf2,0xdf,0xc1,0xeb,
- 0xf5,0x0c,0xbd,0xdf,0x7e,0x4e,0x0d,0x00,0x11,0x19,0xfe,0x0d,0xe4,0xab,0xe4,0x21,
- 0xad,0x11,0x21,0x2c,0x78,0x93,0x36,0x28,0xa6,0xc8,0x1f,0x8e,0x68,0x6b,0x8b,0x14,
- 0x54,0xce,0x57,0x84,0x4b,0xbd,0xd8,0x72,0x21,0xe3,0x3f,0x63,0xcd,0x91,0x9b,0xff,
- 0xf0,0x32,0x32,0x93,0xc3,0xd4,0x79,0x2f,0xc9,0x2c,0xa4,0x35,0xe2,0x0a,0x84,0x21,
- 0xff,0xc6,0xc1,0x46,0xe6,0x16,0x2a,0xdc,0x3f,0x24,0x07,0xfa,0xdc,0x81,0x15,0x9b,
- 0x7f,0x23,0xe7,0xb2,0x32,0x4c,0x66,0xdc,0x06,0x8f,0x67,0x15,0x2c,0x1c,0x23,0xad,
- 0x1a,0xa6,0xfb,0x96,0x20,0x81,0x58,0x6e,0x1a,0xf3,0x0f,0x15,0x24,0x23,0xa4,0x98,
- 0x8f,0x0d,0xff,0xc4,0xab,0x00,0xcd,0x66,0xb1,0x62,0x31,0xe5,0x45,0x71,0x86,0xee,
- 0x1d,0xc8,0xf0,0x1f,0x9e,0x11,0xf6,0x9a,0x5b,0x53,0x18,0x4c,0x44,0xda,0xc3,0x61,
- 0xf5,0x59,0x00,0x3e,0x7b,0xb5,0xaa,0x93,0xea,0x3e,0x3f,0x18,0x03,0x55,0x28,0xca,
- 0x56,0x1d,0xed,0x34,0xab,0xce,0xa9,0x4f,0x60,0x98,0x89,0x30,0xfc,0x95,0x26,0x9d,
- 0x02,0x13,0x02,0xb3,0xf5,0xbf,0x90,0x7f,0x63,0x9e,0xde,0x0c,0x5e,0x81,0x17,0x49,
- 0x0e,0x35,0x95,0x80,0x1b,0x9d,0xd2,0x57,0x5c,0xab,0xca,0x0d,0xbd,0x42,0x8a,0x04,
- 0xb5,0xe9,0x72,0x11,0x11,0xa9,0x11,0x24,0xd0,0x75,0x86,0x4b,0xb0,0xe1,0x3c,0xe3,
- 0x39,0xad,0x42,0x1a,0xb2,0xf4,0xbf,0xfc,0x54,0xbd,0x0a,0x25,0x95,0xad,0xa4,0x91,
- 0x24,0x37,0xe2,0xec,0x84,0x53,0x51,0xe8,0x41,0xce,0x27,0x0c,0x5d,0xbc,0x12,0x90,
- 0x91,0x64,0xae,0x96,0xa7,0xc5,0x02,0x5b,0x0f,0x0e,0x67,0xf2,0x0f,0xf7,0xe1,0xb6,
- 0x8e,0xfc,0x09,0x23,0x14,0x5e,0x56,0x1b,0x61,0x4f,0x39,0xff,0xfd,0x48,0xb7,0x6f,
- 0x9b,0xf8,0x46,0xe8,0x42,0x2a,0xf2,0x81,0x37,0x51,0x5e,0x65,0x1c,0xe9,0xaf,0x1a,
- 0x54,0xe3,0x52,0x1f,0x66,0x56,0x63,0x20,0xec,0x8c,0x79,0x44,0x9f,0xa5,0x7b,0x37,
- 0x36,0xba,0xf9,0x0f,0xe5,0xef,0x50,0x46,0x0d,0x74,0x41,0x83,0xfd,0x6b,0x1b,0xea,
- 0x38,0x4b,0xf0,0xec,0x3c,0x0a,0x0f,0xda,0xc5,0xd6,0xb9,0x65,0xbe,0xaf,0xc3,0x64,
- 0xb2,0xd3,0xf8,0x9d,0x2c,0xec,0xc5,0x48,0x6c,0x30,0x23,0x71,0x8e,0xe1,0xdb,0x24,
- 0x5e,0x74,0xf0,0x17,0xaa,0x55,0x36,0x78,0x7f,0xc2,0x9e,0xe5,0xb0,0x01,0xf7,0xcf,
- 0x8d,0x8c,0x34,0x18,0x3c,0x90,0x80,0xc6,0xf6,0xaf,0x6d,0x78,0x7e,0x08,0x00,0x89,
- 0xf1,0x67,0x1e,0xa1,0xd6,0x73,0xda,0xab,0xd7,0xc6,0xbc,0x9b,0x33,0xf8,0xab,0x52,
- 0xde,0xa1,0xcd,0xa2,0xca,0xce,0x38,0xde,0xf3,0x5b,0x8d,0xaf,0x27,0x3d,0x01,0x71,
- 0xb5,0xf8,0x36,0xec,0xf8,0x9e,0x40,0xee,0x76,0x54,0xc0,0xf9,0x57,0xe9,0x6b,0x4d,
- 0x1d,0xc2,0x56,0x12,0x48,0x7a,0x74,0x3b,0x51,0xf3,0x8d,0xd8,0x6a,0xc5,0x1f,0x0b,
- 0x50,0x87,0x7f,0x5e,0xf8,0xbc,0x91,0x1a,0xd0,0x5b,0xa2,0xb3,0xf1,0x9e,0x17,0x00,
- 0x52,0xe9,0xa2,0xa2,0xb4,0xb2,0xdc,0x8c,0x22,0x45,0x4b,0x10,0x58,0xa6,0xb2,0x22,
- 0x62,0x70,0xa6,0x50,0xa6,0x3b,0xc0,0xe3,0x20,0x22,0x35,0xfd,0x34,0x10,0x6a,0xb0,
- 0xe2,0x5f,0x88,0xbf,0x0e,0xd0,0xc7,0xb7,0x02,0x7c,0x9b,0x42,0x76,0xb6,0x97,0x6d,
- 0x03,0x48,0x75,0xb5,0xf1,0x20,0xad,0x4c,0x76,0x2c,0x01,0xe3,0x7b,0x89,0xca,0x41,
- 0x75,0xb1,0xf8,0x55,0x79,0x15,0x56,0x2a,0xdd,0xe6,0x8f,0x18,0x56,0xc8,0xe6,0x97,
- 0x72,0x1b,0x8f,0xcb,0xb8,0xf9,0xe7,0x69,0x28,0xea,0xad,0x95,0x0a,0xcc,0x61,0x2d,
- 0xb4,0xdd,0x5b,0x28,0xc9,0xe4,0x60,0x51,0x05,0xf5,0x96,0x49,0xb9,0xc6,0xbf,0xb1,
- 0x84,0x6a,0xc9,0x6b,0x3c,0x97,0x9c,0x3d,0x08,0x5d,0x60,0xd8,0x35,0x62,0x26,0xe9,
- 0x69,0x0a,0xfa,0x5d,0xf1,0x2f,0xe3,0x02,0x99,0x93,0xac,0xfe,0x80,0xa5,0x4f,0x47,
- 0xda,0x99,0x5f,0x77,0x5e,0x0c,0xd3,0xea,0x34,0x18,0x18,0xaf,0xcc,0xd7,0xa4,0x53,
- 0x25,0x57,0xb4,0x69,0x26,0x78,0x83,0x17,0x0d,0x4b,0x76,0x19,0x07,0xd7,0xf7,0xfa,
- 0x86,0x27,0x65,0xf1,0xcf,0x47,0x38,0xb6,0xfa,0x0d,0xfc,0x5b,0x6b,0x53,0xd2,0x7b,
- 0xe2,0x02,0x12,0x49,0x57,0x39,0x44,0x88,0xd8,0xf5,0x21,0x0d,0xa7,0x83,0x3f,0x03,
- 0x47,0x68,0x01,0xb5,0x9e,0x77,0x24,0xab,0xf7,0x25,0x26,0x4d,0xd7,0x6c,0xfc,0xa5,
- 0xc1,0xe6,0x82,0x69,0x1b,0x98,0x88,0x58,0x49,0x14,0x43,0x34,0x49,0xbb,0x5c,0x69,
- 0xd3,0x1e,0xc2,0xab,0xc9,0x68,0xd0,0xb4,0x9d,0x68,0x14,0xc2,0x96,0xb4,0x8a,0xef,
- 0x3b,0x27,0xd9,0xf9,0x2a,0x38,0x78,0x2e,0xfd,0xaf,0x9d,0x34,0x18,0x53,0xbe,0x2d,
- 0xfe,0x88,0xa7,0x77,0x62,0x20,0xec,0x71,0xcc,0xfc,0xfc,0xb6,0x38,0x45,0x58,0xd5,
- 0x5b,0x36,0x4c,0x66,0x7b,0x00,0x76,0xc5,0x59,0xda,0x61,0x0d,0x12,0x21,0x32,0xfc,
- 0xa5,0x7f,0x97,0x96,0xc5,0xd4,0xc5,0x63,0xea,0xbf,0xa8,0x32,0x33,0xbe,0x16,0x8b,
- 0xf2,0x70,0x63,0x7d,0x55,0x5f,0x95,0xa8,0x44,0x99,0xb6,0xc9,0xfa,0xe3,0x66,0xd9,
- 0xb0,0x32,0xd2,0x00,0x1b,0xa2,0x56,0x76,0x10,0xae,0x2c,0xb1,0xda,0x76,0x58,0xf7,
- 0xf7,0xc5,0xf5,0x8d,0x5b,0x97,0x00,0x2e,0x70,0xe9,0x7f,0x7d,0x80,0x99,0x84,0x67,
- 0x54,0x00,0x62,0x79,0x91,0xe4,0xd1,0xad,0xd2,0x3b,0x58,0x08,0xd6,0x51,0x00,0x37,
- 0x76,0xc7,0x61,0x33,0xdc,0xe5,0xfd,0xf1,0x86,0xcf,0xc6,0xce,0xbf,0x14,0x4e,0x29,
- 0x3f,0x95,0xae,0x13,0x0f,0xa3,0x66,0x62,0x52,0xba,0x40,0x5e,0x05,0x44,0xe6,0x73,
- 0xe5,0x1f,0x9e,0x26,0x17,0x8d,0x7a,0x86,0xb6,0x70,0x09,0x64,0x64,0x3b,0x64,0xfc,
- 0x87,0x8c,0xfd,0xf5,0x94,0x8e,0xaf,0xc1,0x46,0xc6,0x10,0x2b,0xaf,0x3b,0x08,0x88,
- 0xec,0xa4,0xed,0xd7,0x0d,0x95,0x62,0x8c,0xcc,0x55,0xff,0xa5,0x8d,0x96,0x84,0x97,
- 0x2d,0x7a,0x94,0xfb,0xea,0x0d,0x93,0x2c,0x22,0xc4,0x06,0x1f,0xb2,0x5b,0x8c,0xf2,
- 0x34,0xb6,0x76,0xe4,0xeb,0x9e,0xe7,0xc3,0x98,0xcb,0x21,0x81,0xc7,0x0b,0x74,0xeb,
- 0x19,0x74,0xf2,0x0f,0xff,0xda,0xd8,0x9d,0xf4,0x1b,0x0b,0x36,0x58,0xbe,0x71,0x9e,
- 0x1d,0xc8,0xb0,0x18,0xed,0xaa,0x10,0x64,0x4d,0x63,0x04,0xf2,0x3c,0xec,0xc5,0xfd,
- 0xe7,0x37,0xc4,0xd5,0xa6,0x3f,0xa6,0x24,0xa4,0x98,0x3b,0xfe,0x55,0x6e,0x2c,0xd0,
- 0xe0,0x3a,0x7b,0x6d,0xfe,0x43,0x8b,0xed,0xd0,0x31,0xf6,0x91,0x87,0xb0,0x6b,0x20,
- 0xec,0x5c,0x67,0x70,0x4b,0x6b,0x00,0xaf,0x93,0xc9,0x3f,0xf4,0x92,0x67,0x03,0x65,
- 0xb7,0xab,0xc8,0x2d,0xff,0x74,0x45,0x65,0x34,0xef,0x0e,0xf1,0x4e,0xfa,0x74,0xa8,
- 0x72,0x61,0xde,0x1d,0x4b,0x4f,0xd0,0xa7,0xfd,0x95,0xb7,0x35,0x7e,0x20,0x4e,0x4e,
- 0x3c,0xa0,0x57,0x46,0x3b,0xef,0x40,0x22,0x8e,0x84,0x1d,0xff,0xd2,0x61,0xb3,0x2b,
- 0xb2,0xf5,0x53,0x58,0xfc,0x4b,0xaf,0x51,0x7c,0x93,0x54,0xdd,0x95,0xcc,0x69,0x44,
- 0x34,0x57,0xe4,0x51,0x48,0xb2,0xb0,0xc5,0x22,0x53,0x4a,0x8b,0xa6,0x81,0xb1,0x24,
- 0xa9,0xd7,0x30,0x9b,0xc3,0x25,0xe0,0x75,0x67,0xf0,0x57,0x72,0xb7,0xb0,0xdf,0x58,
- 0x84,0xd8,0xca,0x0a,0xfe,0x62,0xfc,0x6b,0xca,0x42,0x5f,0x57,0xf9,0x20,0xea,0xe2,
- 0xb1,0x88,0x58,0xb3,0xc5,0x88,0x78,0x82,0x58,0xfc,0xf3,0xe7,0x9a,0x19,0x58,0x3b,
- 0x9b,0x89,0x7f,0x9d,0x23,0x97,0xb6,0xd7,0x2c,0xf7,0x36,0xb3,0xf5,0xaa,0x99,0xc7,
- 0xa3,0x39,0xc2,0x7d,0x1c,0x91,0xb1,0x45,0x69,0xc6,0xf8,0x97,0x88,0x71,0x46,0x78,
- 0x15,0xbc,0xc8,0x0b,0x94,0x38,0x35,0x7d,0x70,0x58,0xcd,0xca,0x3f,0xf4,0x6b,0x51,
- 0x8c,0xe2,0x21,0xa4,0xca,0xa7,0xe0,0xc6,0x77,0xe4,0x2c,0x25,0x2c,0x23,0x11,0x19,
- 0xe9,0x09,0xc2,0xae,0x35,0xb2,0xc5,0x7f,0x98,0xe4,0x1b,0xc7,0x10,0xe9,0xc8,0xad,
- 0x72,0xf1,0x6f,0x30,0xfc,0x25,0xfa,0x07,0x14,0x4e,0x72,0x98,0x44,0xea,0x2d,0x59,
- 0x6c,0x25,0xdb,0x78,0x22,0xe2,0x16,0x64,0xa4,0xd7,0x3c,0x4d,0x52,0x2b,0xef,0x72,
- 0xf1,0x4c,0xb6,0x61,0xb6,0xa1,0xd6,0xe0,0xce,0x3f,0x44,0xd9,0x82,0x9d,0x78,0xff,
- 0x68,0x2c,0xb8,0x89,0x27,0x19,0xd3,0x0c,0x65,0x3d,0x06,0xb9,0x88,0xbf,0x21,0x9a,
- 0xf0,0x2f,0x23,0xab,0x75,0x96,0xb6,0x3a,0x35,0xc3,0x9f,0xb9,0xba,0x1d,0x79,0x2f,
- 0x9d,0xfc,0xc3,0x42,0x87,0x16,0x72,0x1b,0xe6,0x16,0xb6,0x44,0x37,0x4b,0x37,0x90,
- 0x43,0x7a,0xd5,0x3f,0xad,0xdd,0x2c,0xbd,0x99,0xf3,0x77,0x46,0xf8,0x5e,0xef,0x46,
- 0x61,0x59,0xec,0x90,0x19,0x6e,0x5e,0x98,0x80,0x7b,0x63,0x35,0x9f,0x9f,0xdf,0x89,
- 0xab,0x5b,0x99,0x58,0xb3,0x0b,0x7f,0x9d,0x25,0x0c,0x49,0xc1,0x75,0xe4,0xba,0x96,
- 0xea,0xcd,0xa8,0xb6,0xbc,0x8d,0x0d,0xfe,0x45,0xee,0x59,0x6d,0x5f,0xac,0xfa,0xfb,
- 0xd2,0x83,0xa8,0x82,0xb7,0xac,0xfa,0x1a,0x57,0x8d,0x18,0x45,0x83,0xf1,0x6f,0xd8,
- 0xf8,0x8b,0xf6,0x6b,0xdd,0x02,0x8b,0x96,0x0e,0x1b,0x00,0xb2,0x64,0x66,0x84,0x84,
- 0x85,0xed,0x28,0xd2,0xdd,0x54,0x84,0x2d,0xa7,0x43,0x66,0x4e,0x98,0x4c,0x6a,0x87,
- 0xa7,0xa0,0x5f,0x67,0xfa,0x05,0xa7,0xe3,0xfd,0x34,0x12,0xf2,0xb9,0xe2,0x5f,0xb3,
- 0xc9,0xc3,0xa4,0x2c,0xa1,0x2e,0x97,0x96,0x33,0xfd,0x2f,0x2f,0xc2,0xe4,0x3d,0x3c,
- 0xc9,0x10,0x8d,0xad,0x74,0x76,0x5a,0xbd,0x4f,0x5f,0xc3,0x14,0xb4,0x73,0x87,0xc8,
- 0xab,0x26,0x0b,0x84,0x8d,0xc2,0x5f,0xcd,0x45,0xc3,0x89,0x7f,0x7d,0x9e,0xb4,0x75,
- 0xe8,0x07,0xd5,0x52,0xa6,0x5a,0xb8,0xcd,0xfc,0x2c,0x4f,0xaa,0x41,0x1f,0xdb,0xe3,
- 0x15,0x1e,0x11,0x74,0x4c,0xe4,0x78,0x51,0x7c,0x44,0x4e,0x5b,0x21,0x12,0x1a,0xb0,
- 0xfd,0x0d,0xb6,0x70,0x4e,0xfc,0xeb,0x6a,0xc2,0x92,0xc0,0xd3,0x1b,0xee,0x82,0x3f,
- 0x9f,0x8a,0x7f,0xc5,0x9c,0xff,0x7e,0x65,0xb6,0x85,0x02,0xf2,0x62,0xe2,0x5d,0xe4,
- 0x11,0x30,0xae,0x43,0x8e,0x8e,0xef,0x75,0xb0,0xf7,0xf3,0x09,0x1d,0xa0,0x99,0x01,
- 0x20,0xc2,0x89,0x7f,0xcd,0x12,0x57,0x61,0x49,0xd7,0x72,0x09,0x03,0x61,0x33,0x11,
- 0x5b,0xa1,0x51,0xce,0x89,0x10,0xff,0x40,0x43,0xe9,0xbc,0x16,0xe9,0x18,0xf9,0x15,
- 0x2b,0xfb,0x12,0xbf,0xaa,0xfd,0x82,0xde,0xc2,0x64,0x97,0x49,0x1f,0x00,0xb1,0xff,
- 0xb5,0x38,0xa3,0xff,0xb5,0x4d,0x19,0xcd,0x40,0xaa,0x5a,0x8b,0x76,0xc3,0x0d,0xb2,
- 0x0a,0xf8,0x49,0x72,0xc4,0x09,0x7b,0x99,0x4c,0xd4,0x66,0x04,0x0f,0x00,0x13,0x99,
- 0xfc,0xc3,0xf3,0xe4,0x38,0x56,0x9f,0x0d,0x31,0xb4,0x75,0x73,0x5a,0x65,0x89,0x88,
- 0x1d,0xe5,0x6f,0xaa,0x23,0xe2,0x65,0xe3,0x42,0xa2,0x7e,0xd0,0xf7,0x4d,0xe8,0xb2,
- 0x18,0x11,0x91,0xb1,0xcd,0x3a,0x9f,0x07,0xb0,0x16,0xbb,0xfe,0x2f,0x54,0x27,0xff,
- 0x70,0x23,0xf9,0xd5,0xa6,0x32,0xe2,0x5d,0x22,0xb2,0x44,0xcd,0xf7,0x50,0xbf,0x92,
- 0x1c,0xd8,0x04,0x9b,0x0b,0x18,0xcb,0x77,0xfd,0xb4,0xf2,0x98,0xfa,0x75,0xe9,0x7f,
- 0x34,0xed,0xba,0xa5,0xf2,0x4d,0x46,0xdb,0xfb,0x2c,0x0f,0x14,0x0e,0xfb,0x1f,0x50,
- 0xb6,0x34,0xc1,0xfc,0x38,0xf1,0xaf,0x8d,0xc8,0x21,0xd9,0xa7,0xc4,0x3c,0x99,0xd8,
- 0x96,0xb2,0x4b,0x67,0x83,0xef,0x82,0xed,0x66,0x2a,0xb2,0xfe,0x4e,0x46,0x21,0x30,
- 0x73,0x41,0x4b,0xc3,0x29,0xe3,0x19,0xde,0xc5,0x22,0x62,0x03,0x6a,0xf3,0x56,0x27,
- 0xfe,0xd5,0x47,0x1e,0x31,0xf4,0x84,0x52,0x21,0xb2,0xb3,0xc1,0x01,0x75,0x76,0xee,
- 0xd1,0x7e,0xa6,0x44,0x50,0x8b,0x11,0x16,0x3d,0x88,0x15,0x46,0x9f,0x37,0xa0,0xab,
- 0x1f,0x19,0x11,0x2d,0x91,0x1d,0xd8,0x73,0x5b,0x1b,0xf4,0xb4,0x3a,0xd9,0x1d,0xff,
- 0x3a,0x44,0x9f,0xb9,0xe8,0xdd,0x88,0xfe,0x18,0x8d,0x0c,0xfb,0x7a,0x30,0x3d,0x86,
- 0xd6,0x0c,0xf9,0xf6,0x49,0xe0,0xf7,0x9a,0xd3,0x86,0x61,0x32,0x2b,0x31,0x00,0x31,
- 0xec,0xdb,0x29,0xf2,0x54,0x25,0x56,0x11,0x76,0xa8,0x39,0xbc,0xd4,0xf7,0xac,0x54,
- 0x65,0xc7,0xbf,0xde,0x25,0x67,0xa3,0x75,0x1c,0xac,0x7d,0xe8,0xa9,0xeb,0x5f,0x17,
- 0x7a,0xec,0x28,0xf9,0x50,0xa9,0x3b,0xe8,0x0b,0x15,0x1f,0x55,0x3e,0xc4,0x12,0xb3,
- 0x19,0x6d,0x43,0xf4,0x43,0xc6,0x88,0x98,0x59,0xca,0xa3,0xf4,0x3c,0x7f,0xd0,0x9c,
- 0xfa,0xaf,0x8f,0x60,0xdd,0x6b,0x0c,0x6f,0xba,0xad,0xce,0x2e,0x11,0xaa,0x13,0x8e,
- 0x3b,0xfc,0x87,0x60,0x5c,0x8f,0xf9,0xd8,0xc7,0xc9,0xcd,0x3c,0xc3,0xcd,0xe6,0x3f,
- 0xa4,0xbd,0x1a,0x00,0xb1,0x11,0x29,0x6d,0xe3,0xaf,0x7f,0xa0,0xbb,0xd3,0xfe,0x25,
- 0xd1,0x99,0x0c,0x13,0x75,0x9b,0x81,0x94,0x27,0x38,0xe9,0x37,0xc2,0x56,0x66,0x30,
- 0xda,0xc3,0xcf,0xec,0xf3,0x14,0x10,0xc6,0x7f,0x98,0x82,0x47,0xc6,0xe2,0x3f,0x7c,
- 0x9f,0x76,0x2c,0xf5,0xb7,0xa8,0xeb,0xfd,0x0e,0xff,0x46,0xc0,0x60,0x75,0x49,0x3c,
- 0xc7,0x6c,0x9a,0x19,0x4d,0x15,0x05,0x95,0x27,0x19,0x0f,0x43,0x6e,0x50,0x03,0xe7,
- 0xdf,0x54,0x37,0x8b,0xc1,0x8d,0x4f,0x0a,0x16,0x23,0x62,0xa7,0x6c,0xc5,0xbf,0x3a,
- 0x89,0x3f,0x04,0x46,0x3a,0xb3,0x7f,0x75,0xe9,0x49,0xa2,0xa4,0xa6,0xe3,0xe3,0x19,
- 0xeb,0xb7,0xf9,0x0f,0xe1,0x39,0x85,0x27,0xb7,0xad,0x0c,0x8c,0x70,0x91,0x97,0x3c,
- 0x66,0xc4,0x50,0x53,0x3b,0x48,0xd6,0xdb,0x3a,0x47,0x71,0x58,0x70,0xd5,0xc9,0xdf,
- 0xa0,0xf9,0x06,0x19,0x6d,0x0e,0x1b,0x81,0x9b,0x60,0x51,0x2e,0x90,0x59,0xc7,0x58,
- 0x3e,0xdb,0x93,0x7a,0xb8,0xdf,0x9b,0x12,0x82,0xc6,0x91,0x00,0xac,0x4e,0x02,0x5a,
- 0xde,0x31,0x8a,0x4e,0x16,0xa4,0x0a,0x83,0x98,0x6f,0x73,0x82,0x3d,0x32,0x87,0xc0,
- 0xf1,0x58,0x94,0x6a,0x4c,0xdb,0xf5,0x5f,0x23,0x64,0x14,0xfd,0x0d,0xf0,0x0f,0x93,
- 0x57,0x48,0xe4,0x10,0x2f,0xf2,0xc2,0xdd,0x6a,0xb8,0xf1,0xa2,0x00,0x80,0xb7,0xd7,
- 0xb7,0xb3,0x1c,0x09,0x34,0xee,0x3b,0xc9,0xa8,0xdb,0x2e,0x5a,0xfe,0xa1,0xc8,0x7c,
- 0x92,0xb1,0xf9,0x87,0xb6,0x64,0x5e,0x0d,0x9d,0x74,0x12,0x73,0x0b,0x49,0x7d,0x3a,
- 0x7f,0xc4,0x7f,0x86,0x1c,0x8f,0x57,0x13,0x96,0x6d,0x78,0x11,0xcf,0xd0,0x50,0xff,
- 0x0b,0x0c,0x7e,0xf4,0xf1,0x7b,0xb2,0x03,0x0b,0xc1,0x5c,0xfc,0xf3,0x7b,0x90,0x2b,
- 0x8f,0xd7,0x76,0xf9,0xf5,0xce,0x04,0x97,0x4d,0x41,0x90,0x75,0x14,0x03,0x61,0x3a,
- 0x18,0x4b,0xc9,0x6e,0xb8,0xc3,0x3b,0x3a,0x00,0xa3,0xf5,0xb4,0xa2,0x38,0x97,0x07,
- 0xc0,0x5a,0x3b,0xab,0x1a,0x73,0xe3,0xaf,0x4c,0x7a,0xa7,0x4e,0x61,0xea,0xfa,0x49,
- 0x5c,0x08,0x9a,0xd7,0x84,0x58,0xd9,0xd7,0x0a,0xac,0xb3,0x33,0x05,0x16,0xff,0x42,
- 0x9c,0xdb,0x0d,0xf8,0x0b,0x9e,0x14,0xaf,0xd2,0xcd,0x6b,0x27,0x5d,0xf8,0x6b,0x4f,
- 0x87,0x95,0x77,0xba,0xc3,0x58,0x1a,0xba,0x6e,0x93,0xf8,0x36,0xf9,0x3e,0x75,0x16,
- 0xf7,0x0b,0x5b,0xc1,0x58,0x42,0xad,0x8a,0x42,0xc4,0x68,0x3f,0xe1,0x8c,0x2e,0x7b,
- 0x44,0x7f,0x0a,0xfe,0xca,0xad,0xbf,0x6c,0x44,0x8a,0xac,0x12,0xaa,0x70,0x72,0xdd,
- 0xe6,0xe7,0xde,0x23,0x47,0xfa,0x58,0x16,0xee,0xdb,0x70,0x1f,0x4e,0x49,0xb2,0x6c,
- 0xb1,0xf3,0x26,0xec,0x71,0x18,0x30,0x1a,0x35,0x66,0xf1,0x40,0xf3,0x48,0x7f,0x38,
- 0x04,0x7f,0x35,0x90,0x15,0xff,0x6a,0xae,0x46,0x99,0x80,0x2b,0xda,0x01,0xc2,0x88,
- 0x38,0xde,0xb6,0x18,0x11,0x0d,0x58,0x2f,0x0a,0x0b,0xf7,0x11,0xae,0x69,0x93,0xef,
- 0x36,0x16,0x3b,0xb6,0xe2,0x5f,0x17,0xb5,0x3a,0xc2,0xaa,0xc6,0x6c,0xfc,0x45,0x2e,
- 0x98,0x8c,0x99,0xfc,0x3d,0xfd,0x08,0x09,0x6f,0xf0,0xf5,0x94,0x0f,0x91,0x0b,0xd1,
- 0x6e,0xf6,0x30,0xe2,0xeb,0x34,0x61,0x57,0x0b,0x1a,0xec,0xd6,0x3a,0x6f,0x74,0xf3,
- 0xef,0x73,0xd6,0xf0,0x17,0xb2,0xef,0x63,0xe1,0x2f,0x78,0x1c,0x7a,0xab,0x0c,0x1e,
- 0x16,0xd4,0xfd,0xa1,0x05,0xbb,0xc5,0xb7,0xe4,0xbd,0x8a,0xdf,0x61,0x2c,0xa1,0x6a,
- 0x2a,0x74,0x86,0xf4,0xe8,0xd3,0xd3,0x6c,0x7e,0xf6,0xd8,0x4c,0xa1,0xe0,0x15,0x4c,
- 0x86,0xbf,0xfa,0x28,0x13,0xff,0xea,0x8a,0x55,0x11,0xa6,0x23,0xdf,0x26,0x54,0x24,
- 0x61,0xbd,0x7a,0x75,0x40,0xd0,0xa6,0x14,0x02,0xe7,0x8d,0xc9,0x7e,0x85,0xc0,0x1b,
- 0xdb,0x91,0x06,0x6f,0x90,0x30,0xf9,0x78,0x1d,0xaf,0x83,0x81,0x30,0xc0,0xcb,0x21,
- 0x71,0x24,0x4b,0x7f,0xb9,0x25,0x0a,0xae,0xbe,0xb8,0x8e,0x4e,0x4d,0xaa,0x28,0x50,
- 0xb5,0xd3,0x72,0xfe,0x93,0x80,0xb6,0x74,0x16,0x85,0xb9,0x89,0xde,0xf8,0xb6,0x12,
- 0x00,0x8c,0x96,0xe2,0x5d,0x53,0xc8,0xb3,0x89,0xa9,0xba,0xb2,0xb2,0xe1,0x4c,0x06,
- 0x7f,0x61,0x31,0x02,0x2b,0xe9,0x3a,0x48,0x66,0xc6,0x7d,0x7a,0x63,0x2f,0xee,0xef,
- 0xf8,0xd6,0x3a,0x8c,0x44,0x88,0x06,0x18,0xfd,0x18,0xed,0x5a,0xee,0x25,0x18,0xff,
- 0x32,0x42,0x67,0x60,0x7e,0xbc,0xc6,0x59,0x32,0xd3,0xf0,0x86,0x24,0x57,0xfd,0x17,
- 0x40,0x2a,0x3c,0x45,0x3f,0xa5,0x7c,0x44,0xe6,0x50,0x5b,0xdf,0xc1,0xb4,0x03,0xcd,
- 0x04,0xa3,0x5d,0xe8,0xe1,0x37,0xad,0xc3,0xfa,0xaf,0x4b,0xec,0xf9,0x52,0x31,0xbe,
- 0xbc,0x97,0x8c,0xe1,0xdf,0xa0,0x61,0x56,0xe3,0x0c,0x1d,0x08,0xa9,0xc4,0x37,0xc5,
- 0x57,0x28,0x5b,0x94,0xb4,0x78,0x84,0x67,0x71,0xa7,0x31,0xed,0x90,0xaf,0x17,0xe6,
- 0x1b,0xc3,0x3b,0x3c,0x08,0x6f,0x51,0xf6,0x57,0x2e,0xfd,0xaf,0x03,0x80,0xa4,0x16,
- 0xa0,0xbe,0xcc,0x2e,0x52,0x46,0x71,0x6f,0x02,0xfc,0x55,0x66,0x27,0xb1,0xc0,0x26,
- 0xde,0x72,0xc7,0x09,0xf2,0xef,0x72,0xb5,0xa1,0xc4,0xec,0x73,0x3f,0x24,0x42,0xec,
- 0x22,0x65,0x44,0xcd,0xd2,0xff,0xda,0x85,0x48,0x0a,0x27,0xf3,0xbb,0xad,0x5b,0x92,
- 0x9d,0xcb,0xc5,0x5f,0x56,0x50,0x6b,0x9e,0x89,0x35,0xcf,0x87,0xe5,0x07,0xe9,0x37,
- 0x62,0x9b,0x66,0xb3,0xf8,0x97,0x35,0xcf,0x4f,0x77,0x6c,0xc1,0x2e,0x77,0xfe,0x61,
- 0xae,0xbf,0x59,0x0d,0x15,0x1d,0x37,0x30,0xa6,0xf9,0x57,0x3d,0xb0,0x37,0x51,0x4d,
- 0x77,0xb2,0x0d,0x65,0x30,0x8e,0xeb,0x00,0xc0,0x63,0xa5,0x73,0x70,0x8f,0xeb,0xc0,
- 0x2e,0x78,0x51,0x77,0x99,0x7a,0x08,0xba,0xb2,0xf4,0xbf,0x76,0x3c,0xb5,0x2e,0x29,
- 0x8d,0x18,0x00,0xa9,0xa8,0xef,0x6d,0x69,0x84,0x1c,0xe3,0x6a,0xcb,0xa3,0x0d,0x6b,
- 0x48,0x7d,0x92,0x65,0x1b,0x1e,0x23,0x91,0xed,0xc1,0xb4,0x1a,0x20,0x97,0x93,0xdd,
- 0x3c,0x35,0xf1,0xb2,0x51,0xb3,0x0d,0xbb,0x5c,0xf9,0x87,0xad,0x4e,0xcd,0xc8,0x7e,
- 0x74,0xd5,0x4e,0xeb,0x23,0x51,0xd6,0xd2,0x8b,0xb8,0x40,0xf4,0x21,0xdf,0xe0,0xb0,
- 0x9d,0x91,0x98,0x39,0x57,0x57,0x22,0x25,0xe3,0xf8,0x0f,0xed,0x7a,0x22,0x78,0x88,
- 0xd6,0x83,0xcf,0x6b,0x39,0xff,0x6f,0xc2,0x4b,0xd8,0xaa,0x08,0x3b,0x64,0x76,0xf3,
- 0xc4,0xad,0xb3,0x99,0xf8,0xd7,0x38,0xfd,0xaf,0x78,0x15,0x22,0xa0,0x37,0x49,0x97,
- 0xa1,0xdf,0x13,0xdc,0x28,0xde,0x60,0x07,0x29,0x7e,0xc7,0xca,0xb5,0x58,0x48,0xeb,
- 0x15,0x86,0xb6,0xb2,0xe2,0x5f,0xc4,0xdf,0x1c,0x48,0x64,0xe5,0x1f,0x62,0x5e,0x77,
- 0x22,0xf7,0x4d,0xa4,0xe6,0x88,0x2a,0x1b,0xc5,0x6d,0xba,0x9d,0xac,0x48,0x57,0x8b,
- 0xd6,0x75,0x3a,0x0d,0x7d,0x82,0xeb,0x28,0xd9,0xf9,0x87,0x1b,0x83,0xcb,0x18,0x0a,
- 0xd8,0x4d,0xf4,0x28,0x80,0xf4,0x76,0x74,0x33,0x98,0xf3,0xdf,0xd0,0x4a,0x56,0xf0,
- 0xd4,0xc4,0xf5,0x44,0x5f,0xa6,0x8c,0x89,0x7f,0x25,0xa3,0x63,0xf4,0x97,0x8d,0x48,
- 0x21,0xcb,0x2d,0x1c,0x6e,0x0e,0x0b,0xde,0x76,0x75,0x8b,0x31,0xd2,0xcc,0x18,0x39,
- 0x4e,0x6f,0xed,0xb7,0xf8,0xe7,0xb7,0xf5,0x4f,0x0f,0x6b,0x41,0x27,0xfe,0xf5,0x80,
- 0xcd,0x5f,0x97,0x95,0x7f,0x78,0x09,0x65,0xbf,0x10,0x0a,0x31,0x49,0xe5,0x97,0xa5,
- 0x7b,0x8d,0x4b,0x1a,0x07,0x59,0x94,0xa7,0x26,0x16,0x9f,0x73,0xe2,0x5f,0xca,0x25,
- 0xe2,0x8e,0x7f,0x25,0xdc,0xfc,0x87,0x57,0x58,0xfe,0x21,0x5c,0xe7,0x1f,0xec,0xf8,
- 0x97,0x35,0xf8,0x9c,0x80,0x81,0x1e,0x05,0xff,0x0a,0x1c,0x8f,0x79,0x8b,0x18,0x77,
- 0x1f,0xef,0xaa,0xb0,0xb2,0x16,0xdd,0xfa,0xcb,0xb0,0x7f,0x71,0x6e,0xc3,0x35,0x5c,
- 0xdb,0x8b,0xd5,0x13,0xb1,0x83,0x3b,0x01,0x77,0x2c,0x85,0x13,0x71,0x6c,0xb5,0xf3,
- 0x0f,0x59,0xfc,0x2b,0x36,0xb1,0xfe,0x72,0x0c,0x66,0xec,0x0c,0xa0,0xad,0x58,0x2c,
- 0x8b,0x88,0x43,0x6c,0xb5,0x4b,0xc3,0x5a,0xe9,0xf2,0x2c,0x8e,0x0e,0xd9,0xfe,0xab,
- 0x31,0xfa,0xcb,0xb8,0xb8,0x46,0x2b,0x79,0xdd,0x58,0xb0,0x9e,0x38,0xc9,0xa5,0xbf,
- 0x53,0xe0,0xfe,0x61,0x6a,0xcb,0xf4,0x09,0xf2,0x75,0x53,0xdd,0x68,0x95,0x7d,0x31,
- 0x8e,0x8e,0xdd,0xcd,0xec,0xaf,0xdc,0xfa,0x5f,0x34,0xd2,0x04,0xbf,0xf4,0x0d,0xfd,
- 0xad,0x44,0xf7,0x17,0xd7,0x6d,0x90,0x7e,0x67,0xd8,0x89,0x88,0xe2,0x6a,0x5b,0x4f,
- 0xe1,0x90,0x51,0x3b,0x8f,0xa7,0x26,0xea,0xf6,0xfc,0xd0,0x2a,0xc4,0x5f,0x6e,0xfe,
- 0x79,0xfb,0x29,0x80,0x0b,0xce,0xf3,0x31,0x91,0xaf,0xed,0x4e,0xb0,0xac,0x0e,0x97,
- 0xf2,0x05,0x4c,0x3b,0x64,0xa1,0x31,0x25,0x13,0xff,0xa2,0x75,0x46,0x75,0x76,0xfd,
- 0x57,0x0c,0x95,0xe0,0xa4,0xd3,0xf4,0xe4,0xed,0x61,0x0c,0x84,0x95,0x3b,0x6c,0x2d,
- 0xba,0x53,0xf6,0x35,0xa0,0x87,0xc5,0x0c,0x23,0x3d,0x82,0x35,0x24,0x7b,0x01,0xc3,
- 0x95,0x7f,0xb8,0x9f,0x94,0x23,0xda,0x3a,0xa9,0x3c,0x6c,0x94,0x6f,0x54,0x06,0x51,
- 0xf6,0xcb,0x60,0x41,0xae,0xf3,0x3c,0xfe,0xc5,0xd8,0xe6,0xa9,0x94,0x70,0x34,0x9a,
- 0xd5,0xa4,0x07,0xa1,0x59,0x79,0x16,0xfe,0x5a,0x08,0xee,0x81,0x9f,0x9f,0xab,0x3f,
- 0x62,0x6c,0x1b,0x04,0xb8,0x14,0x27,0xd4,0x60,0xce,0xdb,0xbb,0x86,0x93,0x6d,0x98,
- 0x38,0x21,0x6b,0x56,0x6a,0xa2,0xb5,0x7f,0x81,0x81,0x95,0x26,0x99,0xfc,0x43,0xe5,
- 0x69,0xca,0x38,0x1f,0x2e,0x96,0x3e,0xa0,0xe0,0x71,0x56,0xee,0x23,0xa4,0xdd,0x0e,
- 0x72,0xd9,0xe5,0x48,0x5a,0x82,0x4c,0x15,0x58,0x7d,0x13,0xd3,0x68,0xbe,0x1b,0x91,
- 0x02,0x65,0x2f,0x73,0x57,0xfe,0xe1,0x25,0x7c,0x2e,0x57,0x4a,0xaf,0x2a,0xbf,0x42,
- 0xe0,0x33,0xa2,0x76,0x33,0x6c,0x65,0x91,0xcc,0xcf,0xe5,0x69,0x87,0xbf,0xa4,0x4f,
- 0x9f,0x76,0xc2,0x5e,0x3e,0x94,0x06,0xfb,0x90,0x13,0x71,0xb8,0xf4,0x97,0x61,0x95,
- 0x05,0xe6,0x15,0x7c,0x08,0x98,0x7a,0x1d,0x1e,0xe9,0x8c,0x08,0x5c,0x0c,0x54,0xbc,
- 0x60,0xb3,0x34,0x0f,0xd9,0x74,0x61,0x59,0xa4,0x5e,0xbe,0x54,0x96,0xfe,0x72,0x7b,
- 0x8d,0xce,0xfc,0xc3,0xe3,0xad,0x73,0xd2,0x12,0xc6,0xbf,0x2e,0x25,0x6a,0x06,0x7d,
- 0x80,0xbf,0xc8,0x11,0x1b,0x76,0xbd,0x48,0xeb,0x2b,0xbc,0x9c,0x9a,0x63,0x87,0x1d,
- 0x1a,0xc3,0x31,0x6e,0xfd,0xe5,0x67,0xb5,0x72,0x96,0x3f,0x6f,0xac,0xd2,0xe0,0xb7,
- 0x37,0x88,0x25,0x64,0x1f,0x99,0x81,0xd3,0x72,0x91,0xae,0x4a,0x31,0x6a,0xfa,0x53,
- 0x06,0xcc,0xd8,0xf4,0x40,0x0b,0x9f,0x16,0xbe,0x7f,0xed,0x52,0xca,0xda,0x61,0x8c,
- 0x4b,0xff,0x6b,0x27,0x61,0xf3,0x7c,0x42,0x5c,0x47,0xca,0x0e,0xaa,0x03,0x4b,0x35,
- 0x63,0x27,0xf9,0x6b,0x44,0xb5,0xa7,0xc8,0xf7,0x2c,0x6a,0x7a,0xb2,0x4a,0x63,0xd2,
- 0xcc,0x88,0xd1,0xd8,0x16,0xc9,0x36,0xc4,0x01,0x30,0x5c,0xfa,0xcb,0xbb,0xd7,0xa0,
- 0xdc,0x5b,0xee,0x0b,0xb0,0x5b,0x25,0x75,0xb5,0x24,0x57,0x10,0x7a,0x14,0xb6,0x7f,
- 0x1d,0xa7,0x8f,0x90,0xe0,0xcb,0x2c,0xdb,0x90,0x02,0xac,0xc8,0x9b,0x81,0xcb,0xad,
- 0xd9,0xeb,0x4e,0xd9,0x98,0xfe,0x0c,0xfe,0x1a,0xe9,0x0f,0x5d,0x0d,0x7b,0xf7,0xfb,
- 0xc6,0x11,0x12,0x1a,0xf6,0x3d,0xad,0xa2,0xb3,0xf4,0x0c,0xce,0xe1,0xfb,0xf4,0x37,
- 0x24,0x32,0x80,0x68,0x4b,0xea,0x37,0x23,0xfa,0x43,0xfb,0xec,0xf8,0xd7,0x30,0xc6,
- 0x5c,0x68,0x18,0x89,0x1d,0x5c,0xfc,0xf3,0x23,0x78,0x94,0x07,0x1e,0xbe,0x31,0x6a,
- 0x44,0xcc,0x45,0xfb,0xa4,0x21,0x9d,0x2f,0x4a,0xf9,0xa0,0x0d,0x93,0x8f,0xea,0x23,
- 0x6b,0xaa,0xb4,0x2f,0x30,0x8e,0xc4,0x0c,0x59,0xc7,0x7e,0xca,0x5c,0x08,0xf6,0x7d,
- 0x04,0x1e,0xff,0xa2,0xac,0xa4,0x0b,0xb0,0xd5,0xc1,0xfc,0x61,0xe9,0x24,0x79,0x98,
- 0x07,0xb9,0x2e,0x33,0xfe,0x8d,0x82,0xe1,0x49,0x67,0x70,0xbd,0xce,0x7a,0x5b,0x58,
- 0x85,0x11,0x73,0x69,0x10,0xac,0xcd,0x18,0x82,0xbf,0x32,0x33,0xfa,0xcb,0xe0,0xa2,
- 0xff,0x16,0x3c,0xbd,0x83,0xa4,0x33,0x56,0x15,0x8b,0x6e,0x8e,0xbf,0xa3,0x74,0x98,
- 0xcc,0x09,0x3c,0x68,0x9d,0xc6,0x4b,0x67,0x38,0x7f,0x2f,0xb8,0x85,0xca,0x5e,0xae,
- 0x4f,0xf4,0x94,0xcd,0xaa,0xed,0xe2,0x3f,0xec,0xa1,0x7e,0xac,0x03,0xfa,0x99,0x0e,
- 0x4f,0x65,0x2c,0xaf,0x47,0x7c,0x9f,0x3c,0x09,0xd7,0x41,0x42,0x06,0x47,0x75,0x97,
- 0xac,0x01,0x1f,0xb2,0xc3,0x55,0x07,0xc4,0x83,0x02,0x4a,0x16,0xfe,0x4a,0x51,0x3f,
- 0x7a,0x8c,0x83,0x00,0xa9,0xaa,0x0c,0xe4,0xd9,0x16,0x1f,0xe3,0xa0,0xf8,0x4d,0xd2,
- 0xa6,0xaf,0xc0,0xd4,0xc4,0xb5,0x22,0x25,0x2b,0x8a,0x4a,0x43,0x19,0xbe,0x4a,0x4c,
- 0x25,0xd5,0x69,0x20,0x64,0xef,0x5f,0x4c,0xff,0x0b,0x90,0xd4,0xda,0x94,0xb4,0x8d,
- 0x39,0x5d,0x95,0x38,0x75,0x6f,0x03,0x8a,0x2c,0x40,0x37,0xfe,0x88,0x0e,0xb3,0xda,
- 0x0d,0xdf,0xe7,0x08,0xa9,0xdb,0x14,0x4c,0xe1,0x7a,0x95,0xdd,0x7f,0xc2,0x4a,0x1c,
- 0x0d,0xcf,0x83,0x55,0x36,0x33,0xf1,0x2f,0xf0,0xfd,0xd0,0x2d,0x3c,0x81,0xa4,0x79,
- 0xc4,0xd7,0x8c,0xc7,0xbc,0x96,0x7f,0x98,0xba,0x62,0xd4,0x9b,0xd7,0x77,0xf1,0xa3,
- 0x7b,0xc5,0xa2,0xe6,0xe0,0xfa,0x5f,0x4e,0xfc,0xcb,0xc6,0x5f,0xc3,0xe0,0x1d,0xcf,
- 0x25,0xbe,0x3e,0x69,0x06,0x40,0xf0,0x59,0xcd,0xbe,0x93,0xd2,0x07,0x02,0x78,0xf8,
- 0x26,0x2c,0xdc,0x25,0xfd,0x38,0x99,0x73,0xcc,0xbb,0x03,0xd0,0xf1,0x71,0x12,0x4e,
- 0xae,0x73,0x4a,0x2f,0x47,0x04,0xc4,0x68,0x35,0x74,0x51,0xba,0xd1,0x85,0xbf,0xac,
- 0x6c,0xc3,0x20,0xbc,0xfd,0xfc,0x66,0x01,0x07,0x62,0x55,0xc4,0x33,0x02,0xcf,0xd7,
- 0x6b,0xc6,0x67,0xe1,0x82,0xf0,0xc0,0xbe,0x46,0xa7,0x27,0x8b,0xad,0x2e,0x84,0x66,
- 0x6f,0x93,0x27,0xe2,0xfe,0xa4,0xba,0x5d,0x4c,0xdb,0xf8,0x0b,0xbc,0x38,0x0c,0x9a,
- 0x88,0xa2,0xde,0xbe,0x85,0x54,0xb0,0x18,0xa2,0x0c,0xef,0x23,0x02,0x4f,0xc1,0x51,
- 0xda,0x36,0x2f,0x60,0x6e,0x9f,0x29,0x1e,0x35,0xda,0xb4,0x18,0xe5,0x54,0xb1,0x8a,
- 0x95,0xa9,0xbb,0x15,0xff,0x4a,0x77,0xeb,0x7f,0x01,0x94,0x66,0x22,0x05,0xb0,0x5e,
- 0x4e,0x6c,0xb4,0x4a,0xc3,0x75,0x17,0x1f,0x21,0xd3,0x59,0x26,0xaa,0xf2,0x03,0x32,
- 0xfd,0x75,0x97,0x36,0x37,0xee,0xb0,0xda,0xcf,0x88,0x9a,0x0c,0xdb,0xf1,0xaf,0x42,
- 0x27,0x05,0x9d,0x90,0xb7,0x78,0x6c,0xeb,0x7d,0x7d,0x2f,0xb9,0x3f,0xc5,0x68,0x06,
- 0xb1,0xcc,0xca,0x8b,0xd9,0x62,0x47,0x50,0x9f,0xc8,0xf5,0x1e,0x4b,0xd3,0xb7,0xda,
- 0x01,0x38,0xef,0x94,0x32,0xf1,0x2f,0xd9,0x25,0x01,0x30,0xc5,0x2c,0x38,0x27,0x5d,
- 0x9e,0x07,0x2d,0x83,0xac,0xe5,0x80,0xc0,0xbb,0xe4,0x0b,0x7c,0x4d,0x9d,0x65,0x3a,
- 0x49,0x2f,0xd1,0xf2,0xa4,0xaf,0x3b,0x93,0x7f,0x98,0x14,0x46,0xf4,0xb0,0x8e,0x6c,
- 0xd8,0x8c,0x2a,0xd6,0xcb,0x0e,0xaf,0x84,0x48,0x2b,0xdc,0x3f,0x5e,0x01,0x49,0x1b,
- 0xe0,0x8b,0x79,0xc9,0x0f,0x48,0x78,0xfd,0x9f,0xa5,0xbe,0x74,0xa6,0xe4,0x5b,0x02,
- 0x13,0x0b,0x7b,0x43,0x3b,0xe8,0x8f,0x34,0xaf,0xdb,0x96,0x89,0x7f,0x79,0x19,0x2f,
- 0xa8,0x82,0x69,0xbd,0x6b,0xee,0xf4,0xf7,0xe6,0x5b,0xf9,0xe1,0x3b,0x4b,0x87,0xc5,
- 0x7d,0x85,0x07,0xc8,0x77,0x4c,0x05,0xbf,0xc6,0xaf,0x5e,0x9a,0x8e,0x9a,0xec,0x0e,
- 0x99,0xe4,0x20,0x39,0x19,0x2b,0xf0,0xab,0x4f,0x64,0xf2,0x0f,0x8d,0xb2,0x54,0xb3,
- 0x4e,0xf2,0xe8,0xd5,0xa6,0xbc,0x7e,0x9e,0x6e,0x44,0x43,0x57,0xc3,0x7a,0x09,0x55,
- 0x7d,0x9e,0x50,0x11,0x7f,0x0a,0xf2,0x42,0xfe,0x85,0xf2,0x8e,0x79,0x15,0x82,0x3b,
- 0x45,0xad,0x8f,0x6c,0x30,0x82,0xdd,0x6a,0xa9,0x98,0x89,0x7f,0xe9,0xbb,0xb6,0x94,
- 0x63,0xcc,0x65,0x3f,0x6c,0x9a,0x65,0xe9,0x6b,0x00,0x0e,0x68,0xbb,0xe8,0x8d,0xdb,
- 0x95,0xd9,0x61,0x56,0xed,0x35,0xa8,0xdc,0x92,0xfb,0x2a,0xdd,0xd5,0xf1,0x8d,0xe4,
- 0x9a,0x95,0x56,0xec,0x06,0x0b,0x94,0xc8,0x77,0x69,0xe5,0x36,0x75,0x65,0xbc,0xd4,
- 0xc6,0x5f,0x04,0x9e,0xd3,0x10,0xc9,0x27,0x70,0x4b,0xbc,0x44,0x42,0x43,0x5e,0xf8,
- 0x47,0xe9,0x87,0xc9,0xaa,0xd3,0xb7,0x87,0xbe,0x86,0x2f,0xcf,0x2a,0x33,0xbf,0x56,
- 0x5a,0x08,0x6f,0xad,0x99,0x41,0x35,0x24,0xc0,0xde,0xc4,0xf9,0xe7,0xfb,0xc9,0xcb,
- 0x7a,0xdd,0x9d,0x3e,0x41,0x1d,0xc7,0x3f,0x0f,0x30,0xf9,0x23,0x7a,0x80,0x73,0xcb,
- 0xf3,0x20,0x57,0xf1,0xc5,0xd8,0x95,0xc6,0x7a,0x53,0xfd,0xfd,0xa2,0xcd,0x89,0xd7,
- 0x8c,0x39,0xd4,0xa6,0xbe,0xc1,0xc1,0x23,0xf8,0x54,0xe6,0xb8,0xf9,0xe7,0xed,0xfb,
- 0x47,0x5d,0x0a,0xeb,0x35,0x0b,0xd5,0xb1,0x71,0x8f,0x9b,0x45,0xf3,0x0f,0x48,0xc1,
- 0xed,0x47,0xb4,0xf0,0xb9,0x60,0xf7,0xa4,0xe0,0x9b,0x47,0x96,0x22,0xda,0x2a,0xe6,
- 0xb4,0x2d,0x0c,0xd1,0x1f,0xa1,0xdd,0xb1,0x0c,0xff,0x3c,0xe2,0xaf,0x55,0x36,0xdd,
- 0xd3,0x83,0xa4,0xcc,0xe6,0xd6,0xa8,0xe9,0x55,0xee,0x6e,0xbc,0xab,0x5d,0x22,0x37,
- 0xf5,0xe5,0x7f,0xd0,0x30,0x99,0xac,0x5a,0xc6,0x76,0x73,0x4e,0x3b,0xcf,0x8c,0x1f,
- 0x13,0xbd,0x15,0x06,0xbf,0x6c,0xe3,0xaf,0x0d,0xa4,0x1d,0x41,0x56,0x54,0x2c,0x22,
- 0x0f,0xd0,0xa9,0xaf,0xe7,0xd9,0x1a,0x6a,0x79,0xb5,0x00,0xb2,0x26,0x61,0xc1,0xdd,
- 0xb7,0xc4,0x82,0x4d,0x8f,0x61,0xb6,0xa1,0xdd,0xc5,0xe6,0x39,0x4e,0x59,0xe6,0xe7,
- 0x70,0x06,0x7f,0xb5,0xd9,0xb4,0x51,0x71,0x52,0x91,0xce,0x9b,0x0d,0x40,0x6c,0x2f,
- 0x21,0x23,0x0a,0xb2,0xcd,0x63,0x54,0x3a,0x8f,0x9f,0x50,0x25,0xa9,0x45,0xc9,0xc2,
- 0x5e,0x95,0x2f,0xd2,0xa4,0xa2,0x2b,0x4a,0xb5,0x1b,0x7f,0x1d,0x24,0x75,0x1c,0x52,
- 0x1d,0x26,0xb3,0xe8,0xe7,0xb7,0x4f,0x1a,0x21,0xe7,0xc9,0x97,0x52,0x95,0xd0,0x22,
- 0xae,0x41,0x85,0xbb,0x64,0x71,0x80,0xfc,0x14,0xa1,0x19,0x4f,0x4d,0xe4,0xd0,0x8c,
- 0x1c,0x6b,0xa8,0xe9,0x71,0xf3,0xcf,0x9f,0xe5,0x27,0x4b,0x66,0x31,0xde,0xc8,0xb5,
- 0x64,0x4a,0x2b,0x13,0x18,0xaa,0x93,0xdd,0x44,0x88,0xa7,0x39,0xfe,0x72,0xd5,0x25,
- 0x99,0x3c,0x6b,0x31,0xab,0xfe,0x0b,0x96,0x09,0x63,0x25,0xcb,0xc8,0x68,0x32,0x6c,
- 0x5c,0x9f,0x28,0x46,0xd9,0xaf,0xb0,0x51,0x90,0x90,0xfa,0xe4,0x5e,0x44,0x5b,0x9a,
- 0x94,0xdb,0xc1,0x65,0x6a,0x05,0x57,0xc1,0xcb,0xa1,0xc2,0x88,0xb1,0x6e,0x7d,0x06,
- 0x7f,0x35,0xc9,0xab,0x89,0x7f,0x49,0x07,0x62,0xa2,0xae,0x0e,0xff,0x3c,0x17,0xb6,
- 0xf2,0x0f,0x92,0xb7,0xb8,0x4a,0xf2,0x36,0xf2,0x04,0xfd,0xe9,0x18,0x8d,0xb0,0xd5,
- 0x1d,0x55,0xcd,0x9d,0x3f,0x72,0xe1,0x2f,0xfd,0x87,0xf4,0x86,0xe8,0x6d,0xcd,0xe2,
- 0xbd,0xe4,0x59,0xd8,0x92,0xac,0xc1,0x4b,0x79,0x41,0x10,0x57,0x6d,0x5e,0x5a,0xa1,
- 0xaf,0xd6,0x6d,0xd8,0x95,0x53,0x35,0xaf,0x33,0x71,0xc7,0x60,0xc9,0x6a,0xb9,0xaa,
- 0x05,0x1e,0x58,0x07,0x7f,0xcd,0x4c,0x3e,0x14,0x28,0xbf,0x3d,0xfa,0xa5,0x35,0x25,
- 0xe9,0x67,0x6f,0xd1,0xbf,0x60,0x91,0x6c,0xc4,0x96,0x77,0x14,0xc5,0xfb,0x86,0xba,
- 0x6a,0x03,0x5f,0xe8,0x2c,0x8e,0xb7,0x27,0xb7,0x04,0x02,0x36,0xff,0x46,0xd0,0x90,
- 0xc0,0x48,0x58,0x8c,0x88,0x19,0xfc,0x45,0x4f,0xea,0xb3,0x94,0xfc,0x07,0x1b,0xe7,
- 0xd1,0x73,0xb1,0x50,0xa9,0xca,0x80,0x98,0x11,0x2e,0xa9,0x8a,0x4b,0xbd,0xad,0xfd,
- 0xb1,0x70,0xa9,0xef,0x41,0x49,0x6f,0xed,0xd7,0x1d,0xd9,0xdc,0x08,0x99,0xc4,0xea,
- 0xbf,0xf8,0x84,0x3b,0xf8,0xab,0x4f,0x63,0x7c,0xe6,0x1b,0xa4,0x41,0x3a,0xca,0xf4,
- 0x97,0xb1,0x48,0x59,0x87,0x07,0x0d,0x26,0x93,0xbe,0xa5,0xa3,0xc2,0xaf,0x88,0x5c,
- 0x94,0xf5,0x26,0x77,0xe3,0x75,0x56,0xa0,0x74,0xb1,0xc9,0xce,0x3f,0xcc,0xc4,0xbf,
- 0x9e,0x27,0xc5,0x80,0xa4,0xca,0x2b,0x84,0x17,0x79,0xcd,0x11,0x12,0xfd,0xdd,0xcc,
- 0x74,0x81,0x01,0x88,0xb1,0xa2,0xe9,0x73,0xca,0x1b,0x19,0x98,0x6c,0xad,0xd7,0x8b,
- 0x9c,0x7f,0xde,0x15,0xff,0xea,0xb0,0xb5,0xbd,0xb6,0xdb,0x42,0xcc,0x58,0x11,0x66,
- 0xd1,0x1e,0xea,0x0c,0x7f,0x89,0xdb,0xad,0xd4,0x44,0x25,0x65,0x13,0x71,0xc0,0x5f,
- 0xd1,0x8e,0xac,0xf8,0x57,0xab,0xa0,0x1b,0xcb,0xb5,0x6b,0x65,0x59,0x10,0x2a,0x60,
- 0x32,0xfd,0xed,0xac,0xc8,0x6b,0x9e,0x56,0x84,0xa1,0xb1,0x0a,0x8e,0xbf,0xb6,0x08,
- 0xc8,0x76,0x58,0xd4,0x97,0xd1,0xff,0x6a,0xa5,0xba,0xa1,0x94,0x7a,0x44,0x07,0x7f,
- 0xe1,0xfd,0x03,0x48,0xaa,0x41,0x26,0x4f,0x20,0xa6,0x5e,0x3f,0x6d,0xd0,0x70,0x55,
- 0x02,0x62,0x97,0x7f,0x30,0xf7,0x89,0x4c,0xfd,0x97,0x7d,0xff,0xc8,0xfe,0x58,0x36,
- 0xff,0xfc,0x21,0xbb,0xc8,0x6b,0x35,0x9f,0x9f,0xc7,0x19,0x5d,0x3c,0xce,0x8f,0xf2,
- 0x4d,0x68,0x09,0x62,0xf5,0xe2,0x69,0x18,0xa3,0x26,0x26,0x39,0x35,0x62,0x18,0x87,
- 0xed,0x8e,0x79,0x5d,0xf9,0x87,0xed,0xe2,0x59,0x65,0xdf,0x3c,0xb8,0xf9,0xd9,0x98,
- 0x65,0xd7,0x27,0x26,0xbd,0x89,0x65,0x44,0x4d,0x59,0xb3,0xaa,0x73,0xc9,0x3c,0xd6,
- 0xc2,0xd6,0xeb,0x79,0x72,0xd6,0x88,0x60,0xa6,0xee,0x61,0x07,0x7f,0x69,0x27,0xb5,
- 0x59,0x64,0x1d,0x40,0x2a,0xad,0x9f,0x41,0x72,0x96,0x64,0x58,0xc7,0xeb,0x07,0xfb,
- 0xb5,0x59,0xbc,0xf2,0xae,0x9f,0x14,0x69,0x6e,0xfc,0x05,0x2d,0xb4,0x0e,0xf5,0x97,
- 0x1d,0xfc,0x55,0x4b,0x1e,0x6e,0x62,0x21,0xad,0x00,0xb8,0x97,0x2e,0x6e,0x8d,0x7c,
- 0x68,0x11,0xb0,0xc5,0xc3,0xa2,0x5d,0xfd,0x7e,0x5a,0x60,0xe1,0xaf,0x56,0x0b,0x91,
- 0x55,0xf7,0x28,0x67,0xdc,0xf8,0x6b,0x3d,0x65,0x25,0x0c,0x5e,0xb1,0x93,0x85,0xbd,
- 0xf8,0x26,0xa5,0x30,0xb6,0xde,0x27,0x85,0x69,0xe6,0x6a,0x3c,0xf8,0x7d,0xc4,0x48,
- 0x3b,0x69,0x87,0xcc,0x10,0x29,0x0d,0x2a,0x01,0x25,0x83,0xbf,0xea,0xf4,0x87,0xd0,
- 0xc3,0xff,0x47,0xd4,0x07,0x31,0xca,0x86,0x6c,0x7e,0x09,0x92,0xc7,0xe4,0x14,0xc9,
- 0x92,0x7e,0x4f,0x0b,0x39,0x49,0xbe,0x27,0xda,0x74,0x10,0xc9,0x32,0x53,0x62,0x49,
- 0x74,0x4a,0x90,0x28,0x46,0xa6,0xfe,0xeb,0x5a,0xf2,0xef,0x58,0xdb,0x35,0xd2,0xe6,
- 0xd3,0xdb,0x90,0xef,0x1d,0x40,0x96,0xf7,0x0f,0xf1,0xef,0xc4,0x7c,0xb3,0xa5,0x48,
- 0xc7,0xcf,0x5b,0x6f,0x3a,0x93,0xff,0x9d,0xc2,0x97,0xc5,0x5f,0x39,0xd4,0xf4,0xdd,
- 0x33,0x38,0x22,0xeb,0x43,0x46,0xc4,0x68,0x06,0x7f,0xad,0x25,0x0c,0x64,0xa1,0x3c,
- 0xcd,0x79,0x57,0xd8,0x0b,0x3c,0x7c,0xf5,0xdd,0xe4,0x05,0x79,0xca,0x89,0xfc,0xd4,
- 0xd7,0x4c,0xed,0x1d,0x3b,0x10,0x76,0xa1,0x65,0xbf,0x69,0x13,0x76,0x19,0x30,0xe1,
- 0x2e,0xfe,0x8d,0xd1,0xc4,0x67,0x62,0xde,0x5b,0xa4,0x9f,0x91,0xe3,0x34,0xfc,0x26,
- 0x80,0xac,0x57,0xc9,0xf1,0xfe,0x9b,0xf5,0xea,0x11,0xe9,0xbd,0x65,0xc7,0xe3,0x37,
- 0x63,0x92,0x61,0xed,0xe4,0x23,0xf1,0x70,0x7a,0x2d,0xf7,0x0f,0xc3,0xbc,0xfe,0xeb,
- 0x18,0xad,0xd1,0x7d,0x43,0x19,0xfe,0xf9,0x8d,0xb1,0xa7,0xdf,0xc6,0xec,0x88,0xa2,
- 0x08,0x59,0x47,0x6e,0x4c,0x33,0xde,0x8c,0x55,0x82,0x50,0xe4,0x41,0x5a,0xc8,0xc7,
- 0x78,0x6a,0x62,0x29,0x7d,0x90,0x96,0x9d,0x61,0x5d,0x7b,0xb5,0x32,0x5e,0xff,0xf5,
- 0x13,0xad,0x4c,0xcc,0xc4,0xbf,0x4a,0xc9,0x26,0xf2,0x74,0xa8,0x12,0xe9,0x9a,0x37,
- 0xd3,0x07,0xc8,0xd4,0x83,0x00,0x66,0x2f,0xc6,0x1e,0xd7,0x2a,0x9a,0xd8,0xe0,0x36,
- 0x8d,0x5d,0xc7,0x90,0x57,0x91,0x27,0xfb,0xad,0x25,0x98,0xca,0x62,0x64,0x0d,0xad,
- 0x18,0x2d,0x25,0x19,0xfe,0x0d,0xa6,0x0a,0x71,0x42,0xa9,0x69,0xf0,0x19,0x74,0xc0,
- 0xaa,0x4d,0xee,0x24,0x15,0x86,0xc7,0x2a,0x04,0xc3,0x3b,0xc1,0xc4,0xe8,0x49,0x9f,
- 0x27,0xab,0x46,0x0c,0xf6,0xaf,0x24,0xe6,0xcf,0xdb,0xfc,0x1b,0x3f,0x23,0xe7,0x69,
- 0xc4,0x0c,0x9e,0x13,0x9f,0x25,0x47,0x8c,0x9b,0xd3,0xf9,0x3d,0xd2,0xfb,0x80,0x30,
- 0x66,0xa5,0x90,0xc5,0x9a,0x2c,0x20,0x48,0x24,0x2e,0x2d,0xd7,0x8e,0x90,0xd9,0x03,
- 0xec,0x0c,0xff,0x0a,0xf3,0x21,0xa5,0xf7,0xc4,0x43,0xb4,0xbb,0xc5,0xb7,0x49,0x75,
- 0xf2,0x0f,0x8f,0xea,0x1f,0x46,0xeb,0x0e,0xfa,0x58,0x39,0x89,0x5e,0x6b,0x16,0x74,
- 0xb1,0xf5,0x5a,0x59,0xca,0xab,0xf3,0x8c,0x3d,0xbd,0x98,0xd9,0xe8,0x01,0x4f,0xaf,
- 0x7f,0x11,0x5b,0x2f,0xb9,0x16,0x5a,0x1a,0x8f,0x1a,0xf8,0xaf,0xc3,0x86,0xe8,0xe2,
- 0xdf,0x38,0x06,0xff,0xe8,0x94,0x61,0xe9,0x2e,0xf2,0x0b,0x3c,0xcb,0x1d,0x2e,0xde,
- 0xa7,0x1f,0x17,0x76,0x80,0x61,0x9c,0x51,0x3e,0xd2,0x0b,0xd1,0x63,0x9c,0x8d,0xe8,
- 0x98,0x73,0x74,0x7c,0x87,0x41,0x33,0x80,0xe4,0x47,0x8d,0xb9,0xc4,0x7b,0xc8,0xa5,
- 0xbf,0xac,0x77,0xf6,0xfa,0x07,0x59,0x2c,0x69,0x0d,0x2f,0xe7,0xc7,0x20,0x97,0x1f,
- 0xd1,0xd6,0x0a,0xf2,0x6b,0x00,0x50,0x05,0x29,0xcf,0x74,0x6d,0x07,0xf8,0x90,0xf9,
- 0x59,0xdc,0x86,0x27,0x0f,0x56,0x9d,0x83,0xe7,0x42,0xcf,0xe4,0x1f,0x76,0x32,0x3f,
- 0x13,0xfe,0xea,0x49,0x47,0xed,0x4b,0x04,0x9f,0x9f,0xb3,0x6d,0x7c,0xdd,0xec,0x08,
- 0xf9,0xa7,0xdb,0xdc,0xf2,0x58,0xba,0xb2,0xd4,0xec,0x4c,0x15,0x9d,0x81,0xad,0xad,
- 0x4a,0x53,0x5c,0xfa,0xcb,0xb2,0xd8,0x16,0x4b,0x9a,0x81,0x6e,0xd1,0x1b,0x07,0xa7,
- 0xe2,0x24,0x73,0xec,0xdb,0x0c,0x05,0xd5,0xcc,0x17,0xd2,0x56,0x23,0x60,0x7a,0x42,
- 0x77,0x78,0x48,0xb7,0xbe,0xf5,0x24,0xf7,0x37,0xe6,0xf1,0xfc,0x43,0x71,0x03,0xf2,
- 0x6f,0xcc,0x76,0xf1,0x6f,0x28,0x47,0x8c,0x30,0xdc,0x3f,0x37,0x7c,0x1b,0xfc,0xf9,
- 0x1a,0x40,0xc7,0xc5,0x41,0x71,0x95,0xc1,0xb0,0xf0,0x45,0xd2,0xd3,0x70,0x8b,0xd9,
- 0x34,0x5c,0x1e,0x54,0x46,0xc5,0xf0,0x80,0xc2,0xd6,0xcb,0x08,0x1f,0xb6,0xe2,0x5f,
- 0x11,0x14,0xdb,0x75,0xf2,0x0f,0xcf,0x21,0xf7,0xb5,0xe9,0x3b,0x57,0x76,0x09,0x5d,
- 0xbe,0x97,0x2c,0x32,0xff,0x9b,0x0d,0x98,0xcc,0x4b,0x04,0x70,0x3f,0xe0,0xdc,0xb6,
- 0x8b,0xf2,0x47,0xc6,0xdc,0x01,0x9f,0xcd,0xf3,0xbf,0x08,0x6b,0x8e,0x18,0x6a,0x33,
- 0x8b,0x5d,0xf1,0xaf,0xdf,0xf3,0xfa,0xaf,0xcb,0xa8,0xad,0x8c,0xa1,0xb1,0x61,0x2e,
- 0xb2,0x8c,0x59,0x8b,0xfd,0xa4,0x3e,0xe6,0x1b,0x91,0xee,0x67,0xb0,0xcb,0x6b,0x4a,
- 0xb3,0x78,0xd7,0x90,0x74,0xd1,0xce,0x01,0x1e,0x76,0xf1,0x6f,0x10,0x3f,0xf2,0x6f,
- 0x9c,0x21,0x9d,0xed,0x58,0x3d,0x64,0xd7,0x7f,0x6d,0x17,0xdf,0x2b,0x59,0xd3,0x1e,
- 0xe4,0xec,0x16,0x7b,0x69,0xd0,0x0c,0x6c,0xf2,0x04,0x79,0x17,0x2d,0x7a,0xd3,0x62,
- 0xad,0x97,0x2c,0xfd,0x65,0xc6,0x7f,0x48,0xf5,0x98,0xe2,0xaa,0x75,0xe5,0x6c,0x87,
- 0x80,0xad,0xfa,0xe0,0x71,0xc0,0x78,0x8a,0xe5,0xc6,0x2b,0xba,0x47,0xe6,0x95,0x92,
- 0xae,0xc4,0xec,0xd7,0xb3,0xf8,0x0f,0x75,0xbb,0xec,0x0b,0xfe,0x89,0xf8,0xdb,0x1c,
- 0xb6,0x6f,0x17,0xdf,0xd4,0xd7,0xd0,0x2a,0x03,0x95,0x08,0x90,0xad,0xc5,0x64,0xf5,
- 0x4d,0xac,0x7e,0x70,0xad,0xff,0x75,0x1b,0x68,0xa4,0x9c,0xfa,0x2f,0xf9,0x02,0xdd,
- 0x9a,0xf6,0xa6,0x18,0x28,0x8e,0xc0,0x23,0x23,0xbd,0x4e,0x8e,0x60,0x38,0x78,0xb3,
- 0xf4,0x3e,0xe9,0x5f,0x1d,0x59,0xe2,0xc0,0x2e,0xef,0x5a,0xd8,0xe3,0x98,0xc4,0x61,
- 0x52,0x7a,0x8f,0xd7,0x64,0xa5,0xc4,0xac,0xf8,0xd7,0x5c,0x07,0x5b,0x21,0x26,0x3a,
- 0xc5,0xf5,0x02,0x92,0xe0,0xfc,0x9f,0x27,0xf5,0xcb,0x32,0xb0,0xab,0x59,0xfa,0x28,
- 0xfe,0x3e,0xaf,0x08,0x4b,0xdb,0x40,0x2c,0xa3,0xff,0x85,0x48,0xbc,0x8f,0x3d,0x95,
- 0xf0,0x7d,0x5e,0x82,0x17,0x6c,0x80,0x9f,0x93,0xec,0x54,0xfd,0xe4,0xb0,0x11,0x5e,
- 0x88,0xd4,0x1c,0x32,0x3e,0xa7,0x6b,0xb7,0xc2,0x86,0xc8,0xba,0xb6,0x4a,0x4f,0x89,
- 0x16,0xb1,0x83,0x3b,0xfe,0xa5,0xb3,0xa7,0xe0,0x7d,0x9c,0x96,0xa3,0x60,0x04,0xec,
- 0xdf,0x8e,0x02,0x43,0xb0,0x94,0xcf,0x5a,0xb0,0x34,0xf0,0x20,0xa7,0x53,0x33,0x61,
- 0xff,0x2a,0x33,0xac,0x23,0x8b,0x0f,0x32,0xfc,0x1b,0x7b,0xb0,0x72,0x21,0x24,0x9e,
- 0xa1,0x6d,0xdc,0x97,0x10,0xf8,0x5a,0x10,0x46,0xf3,0xa5,0x0f,0xd8,0xd4,0x1c,0x03,
- 0x9e,0xd9,0xe2,0x1b,0xbc,0xab,0x42,0xa4,0xf6,0xd1,0xa2,0xa5,0xbf,0x8c,0xfc,0x1b,
- 0x07,0x06,0xca,0x42,0x2c,0xd5,0x6d,0x15,0xad,0x8c,0x01,0x40,0xb8,0x9a,0x17,0x1f,
- 0xa1,0xd1,0x9e,0x2c,0x4b,0xa3,0x22,0x33,0x63,0xe1,0xf3,0x2c,0x66,0xda,0xc1,0xd0,
- 0xb5,0x5c,0x2c,0xb2,0x13,0x11,0xfb,0x89,0xbb,0xfe,0xcb,0x60,0x31,0xfa,0xe7,0x48,
- 0x5d,0xb3,0x4f,0x53,0x05,0x5e,0xff,0x25,0xa3,0xfe,0x72,0x32,0x65,0x14,0xd4,0xb6,
- 0xb1,0x8a,0xb0,0xa1,0x02,0x1d,0x1c,0x8f,0x0f,0xc9,0x64,0xcc,0xf8,0xa5,0x98,0x88,
- 0x88,0x40,0xec,0xe5,0xac,0xfa,0x2f,0x62,0x2f,0x0a,0x3f,0x57,0x67,0x6b,0x81,0xb4,
- 0x87,0xe8,0x04,0xae,0xb3,0xd9,0x0e,0xf3,0x4d,0x27,0x5f,0x54,0x1a,0x6e,0xb6,0x8c,
- 0xec,0xf8,0x97,0x11,0x74,0xb6,0xbf,0x04,0x0f,0x7b,0x39,0x3c,0x54,0x86,0xc5,0xe8,
- 0x12,0x81,0x7b,0x4c,0xad,0xe0,0xf8,0x3d,0xc9,0x23,0x62,0xec,0x1c,0x32,0xc3,0xbf,
- 0x71,0x80,0x58,0x9c,0xba,0x56,0xed,0xc0,0xb0,0x5d,0x56,0x30,0x40,0x76,0x92,0x6a,
- 0x23,0xd0,0xc2,0x53,0x32,0x4c,0xa5,0xd9,0xce,0x84,0x8f,0xc1,0xed,0x87,0x63,0x0a,
- 0x00,0x7f,0xe5,0x5a,0xef,0x79,0x84,0xae,0xc9,0x98,0x9b,0xe7,0xe4,0x65,0xce,0xbf,
- 0x11,0x65,0x01,0x47,0x64,0x95,0x2c,0x42,0xc0,0x5b,0x99,0x56,0x02,0xf6,0x12,0x2c,
- 0x17,0x0f,0x12,0x67,0x9e,0x1d,0xfc,0xb5,0xe3,0xa4,0x95,0x8f,0xcd,0x0a,0xd8,0xe7,
- 0x6e,0xe8,0xa5,0x6d,0xa8,0x64,0x4a,0xe2,0x4c,0x1e,0x3d,0xa6,0xd8,0xc7,0x50,0x0a,
- 0x11,0x73,0xad,0xca,0xcd,0x78,0x2f,0x7b,0x96,0xe1,0x96,0x70,0xe9,0x2f,0x5f,0xa6,
- 0x35,0x09,0xaf,0x25,0xa9,0xfc,0x14,0xdc,0xf3,0xa3,0x9c,0xed,0x70,0x10,0xee,0xf9,
- 0xcb,0x24,0xd2,0x11,0x48,0x4a,0x5c,0xa3,0xd9,0x9b,0x96,0xa6,0x53,0x56,0x11,0xf6,
- 0xf7,0xd2,0x88,0x43,0xc4,0xe1,0xaa,0xff,0x92,0x23,0xa5,0x0c,0x64,0xf1,0x42,0x30,
- 0x6e,0xa0,0xa7,0xf7,0x3a,0xb1,0x75,0xbb,0xc8,0x48,0x56,0xfc,0x8b,0x95,0x86,0x71,
- 0x5c,0x90,0x55,0xff,0x55,0x17,0xb3,0x29,0x0d,0xd1,0xe8,0x33,0x58,0xbd,0x8c,0x26,
- 0x4d,0x12,0x0f,0xa1,0xa8,0xfa,0x7a,0x9e,0x9a,0x18,0x93,0x36,0xab,0x4e,0x3d,0x51,
- 0x93,0xcd,0x48,0x9f,0xad,0xbf,0xfc,0x37,0xe8,0x2d,0x63,0xb8,0x0a,0x83,0x53,0x6f,
- 0xd8,0xc9,0x81,0xd3,0x18,0xed,0xbc,0x82,0xe5,0x36,0xc8,0xd1,0xa1,0x6e,0xf6,0x5b,
- 0xa1,0xb1,0x0d,0x19,0x46,0xc4,0xf1,0xfc,0x1b,0x6f,0xa2,0x11,0x55,0x5c,0xc9,0x8a,
- 0xe8,0x51,0x07,0x9b,0x3d,0x1a,0x4f,0x71,0x6c,0x52,0x77,0xc2,0x95,0xad,0xeb,0xfc,
- 0xb5,0x3d,0xc6,0xa5,0xbf,0xbc,0x43,0xe3,0x74,0x7c,0x06,0xf8,0xfc,0xac,0x10,0x8c,
- 0xb2,0x1c,0xaa,0x22,0x78,0x8b,0x02,0xc8,0xc2,0x16,0x16,0x85,0x69,0x82,0x47,0xd8,
- 0x6b,0x30,0x5c,0x90,0x60,0xd4,0x88,0x3c,0xcf,0xca,0xa5,0xbf,0x6c,0x44,0x90,0xd2,
- 0x90,0x4d,0xef,0xf7,0x83,0xf1,0xb6,0xb7,0x1a,0x2c,0x6c,0xa5,0x23,0xed,0xa1,0x56,
- 0x30,0x95,0x45,0x2b,0xea,0xb0,0xfe,0xab,0xcc,0xaa,0x08,0x93,0x62,0xe3,0xf0,0x57,
- 0x86,0xd2,0x10,0xa3,0x5d,0x88,0xbf,0x9c,0xb2,0x2f,0xf6,0x7c,0x39,0x15,0x46,0x51,
- 0x4e,0x84,0xc8,0x2b,0xb9,0xac,0x31,0x89,0xec,0xfa,0x2f,0x86,0xd1,0xce,0xd9,0x21,
- 0xad,0x73,0xf6,0xa2,0x60,0x21,0x18,0x23,0x39,0x74,0xd8,0x0e,0x4b,0xec,0x8a,0xb0,
- 0x73,0xf6,0x7a,0xbd,0x90,0xcd,0x3f,0xef,0xc4,0xb6,0x14,0x17,0xff,0xe1,0x90,0x7c,
- 0x12,0x36,0xf1,0x40,0xa6,0xcb,0x63,0xd7,0x7f,0x35,0x58,0x35,0x62,0x8e,0xfe,0xb2,
- 0xc5,0x7f,0x98,0x09,0x7b,0xb9,0xd9,0xe6,0x79,0xd2,0x9a,0x02,0xb0,0x4b,0xe8,0xe2,
- 0xaa,0xd6,0x32,0xe7,0xdf,0x40,0xdf,0xcf,0x9a,0x67,0x5b,0x7f,0xf9,0xaa,0x6d,0xbc,
- 0x4e,0xdc,0xc2,0x56,0x4d,0x19,0xfe,0xc3,0x44,0xfc,0x4d,0xf2,0xa8,0xc2,0xee,0x28,
- 0xde,0xb2,0x7d,0xbd,0xbf,0xc2,0x2e,0x2d,0x74,0xee,0x0d,0xb7,0xfe,0x32,0x32,0x60,
- 0xd8,0x93,0x19,0xdc,0xd8,0xf6,0xa6,0x69,0xf1,0xc9,0xbc,0x49,0x0e,0x51,0x27,0xd4,
- 0xcb,0xd4,0xc3,0xa7,0xf1,0xf9,0x61,0xd2,0x60,0x7c,0x7e,0xdc,0xfc,0x1b,0xba,0x8b,
- 0xf6,0xb0,0x7a,0x3d,0x06,0xc2,0x70,0xcc,0x06,0x78,0x8b,0x5a,0xa1,0x31,0x87,0xa9,
- 0x06,0xd7,0xf4,0x7e,0x96,0x7f,0x68,0xaf,0x85,0xbb,0xfe,0xcb,0xa5,0xed,0x35,0x19,
- 0xe3,0xd4,0xd4,0x21,0xd9,0x40,0x92,0xc3,0x02,0x1e,0xed,0x82,0x31,0xe4,0x91,0x34,
- 0xbf,0xb5,0xda,0x33,0xf8,0xdd,0xa5,0xbf,0xbc,0x5f,0xa9,0xde,0x0a,0xb0,0xeb,0x02,
- 0xc2,0xae,0x24,0xec,0x4d,0x17,0x28,0x86,0xbd,0x3a,0x2d,0x20,0xb6,0xbd,0x63,0x90,
- 0x25,0x22,0x56,0x27,0x95,0x21,0x71,0x04,0xde,0x37,0x55,0x54,0x1d,0x14,0x47,0xec,
- 0xd0,0x98,0x3b,0xfe,0x45,0x79,0xbe,0x8d,0xbe,0x03,0xfd,0x04,0xf4,0xba,0xdb,0xec,
- 0x43,0x42,0x6c,0xf1,0xd4,0xc5,0xf1,0x3d,0xf6,0xf7,0x69,0x45,0x16,0x5f,0x10,0xd9,
- 0x2b,0x6e,0x56,0xc6,0x39,0xc9,0xe2,0xdf,0x08,0xa6,0xe1,0xfd,0xfc,0xef,0x8c,0xd2,
- 0x10,0xde,0xcf,0x2f,0xdb,0x61,0xaf,0x13,0x32,0x7b,0x2d,0xaf,0x60,0xb2,0xcb,0xdf,
- 0x38,0xa8,0xdc,0x29,0xfe,0x52,0xfc,0x5e,0x86,0x7f,0x83,0x19,0x69,0xa7,0xfe,0x8b,
- 0x95,0x74,0x05,0x33,0xfc,0xf3,0xd2,0x07,0xa2,0x15,0xf6,0xe2,0x85,0x60,0x9e,0x11,
- 0x15,0xc7,0xd4,0x27,0xbd,0xcb,0xa5,0x5f,0x7b,0xac,0xae,0x5f,0xdb,0xa1,0xb1,0x31,
- 0xfa,0xcb,0x2c,0x32,0x72,0xc1,0xce,0xb2,0xb0,0x5a,0x06,0x35,0xab,0x85,0x8d,0xa1,
- 0xb0,0x3a,0xf6,0xb9,0x71,0xe3,0xc4,0xf5,0x5f,0xf5,0x69,0x9b,0x1f,0x1b,0x8d,0x0f,
- 0x2c,0xdf,0x6f,0xd2,0x47,0xbc,0xc8,0xeb,0xa4,0x1a,0x61,0xfa,0x5f,0xde,0x7e,0xe9,
- 0x23,0xee,0x1f,0x66,0x0e,0xea,0x25,0x33,0x53,0xff,0x05,0x93,0x80,0xfc,0x87,0x27,
- 0x90,0x8a,0xf0,0xcf,0x03,0x2d,0xf1,0x13,0xf6,0x46,0xf6,0xcb,0xa6,0x5d,0x5a,0x39,
- 0xba,0xdf,0x18,0xf6,0x82,0x1b,0xdb,0x10,0xcf,0x59,0xd3,0xe2,0x77,0x36,0xbb,0xb7,
- 0x33,0xf5,0x5f,0xf0,0xe7,0x03,0xfc,0x3a,0x9c,0x3a,0xd2,0xaa,0xb3,0x6b,0x89,0xff,
- 0xbb,0x81,0xd1,0x2e,0xbe,0xfd,0x85,0x2a,0x09,0x18,0x27,0xf9,0x75,0x96,0x89,0xaf,
- 0xd8,0xd7,0x31,0x5d,0xfc,0x1b,0x34,0x88,0xf1,0x94,0x3e,0xe4,0x79,0x6b,0x51,0xea,
- 0xc4,0x5e,0xab,0xee,0x2f,0x6e,0xb1,0x92,0x5a,0xfb,0x17,0x21,0x25,0xac,0xce,0x05,
- 0xc5,0x2e,0x33,0x7e,0xa6,0xb5,0x0f,0x32,0xfe,0x0d,0x33,0xa3,0xb5,0xba,0xc1,0xdb,
- 0xc3,0x88,0xcd,0x61,0x0e,0xf7,0x61,0x66,0x75,0x7f,0x77,0xda,0xde,0xdf,0xcd,0xe0,
- 0x5a,0x78,0x64,0xd8,0xb6,0xbe,0xc7,0x1e,0xe3,0xc4,0xbf,0x12,0xc8,0x7f,0xd8,0x6c,
- 0x51,0x73,0x5c,0x20,0x5c,0xf3,0x37,0x66,0xaf,0x17,0x96,0x8f,0xf5,0xf1,0x3a,0x32,
- 0x12,0x49,0x2c,0xf2,0xc2,0x75,0x1c,0x51,0x1b,0x67,0x95,0x6d,0xfc,0xa5,0x5d,0x51,
- 0xea,0x4c,0x6f,0x86,0x67,0xbb,0xcd,0xa9,0x4b,0x7a,0x0d,0xfe,0xf5,0x7a,0x13,0x96,
- 0x89,0xf9,0x2d,0xcb,0x7d,0xe9,0xb6,0xd9,0x3c,0xff,0x70,0x40,0x2a,0xb5,0x13,0x11,
- 0xfb,0x33,0xfc,0xf3,0x7b,0xcc,0xaa,0x73,0xc8,0x9f,0xa0,0xb3,0x58,0x49,0x4a,0x7c,
- 0x27,0x43,0x52,0xd7,0x89,0xaf,0xaf,0x6d,0x71,0xe6,0x1f,0xce,0x56,0x1f,0x16,0xab,
- 0x14,0xe6,0x16,0x96,0x32,0xb1,0x30,0x36,0x66,0xc8,0xa5,0xbf,0x4c,0x19,0xed,0xa1,
- 0x15,0x73,0x71,0x5d,0x87,0xd1,0x8f,0xa7,0x95,0x2e,0x3b,0xfc,0xb1,0x05,0xf6,0x2f,
- 0xf6,0xe7,0x3d,0x62,0x05,0xed,0xb4,0x03,0x22,0xd6,0xfe,0x85,0x19,0x53,0x41,0x9b,
- 0xea,0x3c,0x5b,0x38,0xa0,0x0f,0x80,0x58,0x95,0xc5,0x4a,0x2a,0x04,0x3b,0x98,0xe7,
- 0xc9,0xd6,0x2b,0x25,0x3a,0x5a,0xea,0x07,0x33,0xf5,0x5f,0x78,0xcf,0x07,0x39,0xc5,
- 0x59,0xf6,0x73,0x71,0x86,0x1e,0xc1,0x57,0xd3,0x03,0xbc,0x5e,0xef,0x4e,0xf0,0x2e,
- 0x74,0x72,0x44,0x66,0xfe,0x98,0x6e,0xfb,0x63,0xd9,0xf1,0x2f,0xd3,0xa2,0xc8,0x63,
- 0x89,0x52,0xc3,0xf6,0x3c,0xbf,0x21,0xa3,0x10,0x33,0xe3,0x73,0xb8,0x60,0x44,0x64,
- 0x9f,0xcb,0x3f,0x9c,0xa0,0xfe,0x8b,0x65,0xc2,0x7b,0x4f,0x4e,0xda,0x87,0x49,0x1a,
- 0xd4,0x6b,0x48,0x21,0xf9,0xa2,0x6c,0x25,0xf1,0x1e,0x6f,0xaf,0xb1,0xa3,0xc9,0x3b,
- 0xe0,0xd1,0x6b,0xbc,0x2c,0x3b,0x2d,0xc7,0x79,0xa2,0xaf,0x13,0xff,0x7a,0x93,0x74,
- 0xc0,0xb3,0xd3,0xb1,0x49,0xac,0x22,0xeb,0xcc,0xe9,0x49,0x98,0xf0,0x0a,0xa4,0xed,
- 0x4d,0x33,0x20,0xa6,0x92,0xe9,0xf8,0x66,0xfb,0x99,0x17,0x30,0x1a,0xa7,0x82,0xef,
- 0xc4,0x16,0xc4,0xc2,0x76,0x21,0x98,0x1d,0xff,0x3a,0xc3,0x76,0x22,0x8f,0x45,0x6f,
- 0x62,0xe4,0x11,0xbf,0x82,0x5c,0x0d,0xe6,0x75,0x21,0xff,0x51,0xb9,0x93,0xc4,0x60,
- 0x32,0x8b,0xbc,0xc2,0x0e,0x41,0x37,0x0d,0x46,0x43,0x24,0x04,0xa0,0xcb,0xe3,0x95,
- 0xdb,0x58,0x97,0xf8,0x3a,0x7f,0x2e,0xcc,0xc2,0x9f,0x90,0x8e,0x83,0x55,0xb1,0xe9,
- 0x9b,0xf1,0x96,0x10,0xa6,0xc7,0x18,0x4f,0xf0,0x1e,0xd3,0x12,0xf9,0x62,0x8a,0x72,
- 0x5d,0x62,0xe5,0x6d,0x08,0xdb,0xf9,0xf7,0xd1,0xa7,0xf7,0x41,0x8b,0x17,0xbe,0xcf,
- 0x52,0x58,0xb8,0x86,0x61,0x3e,0x3f,0xe4,0xaa,0x63,0xe4,0x90,0x19,0x59,0x5a,0x50,
- 0x5a,0x84,0x10,0x26,0x1c,0x9f,0xfa,0x94,0xf4,0x59,0x72,0x9e,0x76,0xbf,0xec,0xdb,
- 0x59,0xfc,0xae,0x08,0x50,0xba,0xdf,0xd7,0xd3,0x59,0x4d,0x2e,0x0c,0x84,0xcf,0x79,
- 0x77,0xb7,0xbd,0x47,0x8f,0x74,0xd4,0x1e,0xf4,0xa5,0x1e,0xa9,0xf2,0x1f,0xe9,0xe8,
- 0x36,0x8e,0xa7,0xca,0xcd,0x26,0x07,0x7f,0x5d,0x24,0x75,0x46,0xfe,0x80,0x74,0x94,
- 0x2d,0xc1,0xba,0x98,0x3a,0xa4,0x9f,0x57,0x98,0xe0,0xda,0xc5,0x0e,0x58,0xaf,0x61,
- 0x0c,0x10,0x73,0x68,0x06,0xc0,0x99,0xc2,0xeb,0x8b,0x85,0x5a,0x0c,0x78,0xb3,0x35,
- 0x67,0xf0,0x97,0xa1,0x3d,0x45,0x0f,0xc9,0x91,0x06,0x7c,0xde,0xe5,0xe7,0x48,0x68,
- 0x60,0x61,0xb2,0xf3,0x46,0xf1,0x30,0x2b,0x12,0x6c,0x44,0x44,0xf6,0x01,0x13,0x62,
- 0x56,0x2e,0xdc,0x16,0x1e,0xb8,0x3e,0xe5,0xab,0x24,0x47,0x94,0x6e,0xd3,0xd7,0x8d,
- 0xa5,0x85,0x5a,0xb7,0xe1,0xc6,0x5f,0xd3,0x49,0x87,0x5e,0xd5,0xac,0x1c,0x10,0x2f,
- 0x92,0xe3,0xb2,0xdf,0x54,0x7e,0x22,0x7d,0x83,0xac,0x31,0x66,0xe1,0xfc,0xbc,0x3f,
- 0xaf,0xb3,0x94,0x55,0x89,0x62,0x58,0x59,0x87,0x0b,0xae,0x5a,0x41,0xfe,0x4d,0x0f,
- 0x9b,0xea,0x33,0x30,0x99,0xbf,0x19,0x08,0x1b,0x19,0xfc,0x95,0xce,0xf9,0xbc,0xd1,
- 0x4a,0x56,0xc4,0x84,0x3a,0x7e,0x6a,0x44,0x3d,0x5e,0xb1,0x55,0x5e,0x6d,0xe0,0x61,
- 0x51,0xd1,0x99,0xd2,0x27,0xf1,0xd4,0xa8,0x7b,0xfe,0xc2,0xc2,0xbd,0x66,0xb2,0xff,
- 0xaf,0x30,0x97,0xb8,0x8d,0x92,0x5e,0x58,0xee,0x02,0xa1,0xd3,0x64,0x07,0x4a,0x23,
- 0x99,0xfa,0x2f,0x79,0xa0,0x32,0x96,0xb7,0xbc,0xe1,0x55,0xa1,0x8d,0xea,0xc9,0x6b,
- 0x17,0x7b,0xbe,0x8c,0x01,0x1a,0x26,0xb2,0xbc,0x7c,0x55,0x62,0x6a,0xda,0xf3,0xcd,
- 0x69,0x5f,0xcd,0xdb,0xf5,0x54,0xd9,0x90,0x07,0x4f,0x14,0xbf,0x47,0x97,0x0c,0x5d,
- 0xc7,0x0d,0x16,0xa0,0x39,0x99,0xc9,0x3f,0x34,0x69,0xb0,0x21,0x7f,0xb6,0x78,0x4c,
- 0x7c,0x2e,0x27,0x94,0xfe,0x82,0xa0,0xb6,0xc2,0x1d,0x35,0xb3,0xcf,0x77,0x93,0xf4,
- 0x3e,0x7d,0xd2,0x40,0xfe,0x4c,0xcf,0x42,0xf3,0x82,0x19,0x1a,0x66,0xb7,0xdf,0x11,
- 0x3d,0x94,0xc6,0xf8,0xb2,0xff,0x48,0x05,0x8c,0x71,0xe5,0x1f,0x6e,0xf6,0x5c,0xd4,
- 0xea,0xfb,0xe4,0x5e,0xe9,0xa2,0xfc,0xbe,0x76,0xc0,0x44,0x81,0x47,0xfe,0xc4,0x9d,
- 0x95,0x2e,0x6a,0xdf,0x62,0xd4,0xf4,0xd2,0xbe,0x66,0x47,0x6b,0xfe,0x02,0xb9,0x9e,
- 0xf1,0x8b,0x8a,0xe3,0xf1,0xd7,0x37,0x49,0xb7,0xe1,0x9d,0x0d,0x4b,0xa0,0x86,0xc2,
- 0xad,0xe8,0x78,0x78,0x47,0xec,0x03,0xc9,0x23,0x98,0xa8,0xd0,0x83,0x61,0x6e,0x0d,
- 0xd5,0xbe,0xca,0xe1,0xe5,0x20,0xf3,0xfc,0x43,0xfb,0x79,0x3f,0x6c,0xe1,0x1d,0x81,
- 0xe5,0x5d,0x18,0x4a,0x4c,0xfa,0x0f,0xed,0x31,0x2d,0x40,0x3d,0xcd,0x0c,0x76,0x55,
- 0xf6,0xab,0xf7,0x62,0xfe,0x06,0x66,0xb9,0x9f,0x13,0x27,0xd3,0x5d,0x7a,0x59,0xbf,
- 0x7a,0x0f,0xb1,0x0d,0x71,0x72,0x7c,0x95,0xce,0x84,0xc0,0x5e,0xb6,0x74,0x07,0x00,
- 0x7f,0xed,0xa0,0x15,0xfa,0x8d,0x2b,0xb1,0x2a,0x9c,0x96,0xbd,0xae,0x44,0xe3,0x2f,
- 0x23,0x99,0x3f,0x13,0x62,0x36,0x57,0x6d,0x2c,0x1b,0x5c,0x70,0x9f,0x7f,0x8a,0xb9,
- 0x6b,0x4b,0xd9,0xbb,0xea,0x37,0xe3,0x53,0x86,0x76,0x6d,0x28,0x7b,0x1d,0x0d,0x73,
- 0x55,0xa2,0x72,0x18,0xe6,0xd9,0xb4,0xf1,0xd7,0x11,0xd2,0x9d,0xd4,0x4f,0x5e,0x13,
- 0xf0,0x30,0x7a,0x9c,0xb4,0xe7,0x61,0xf1,0xb7,0x34,0xd5,0x1e,0xec,0x53,0x67,0x88,
- 0xc7,0xc5,0xb6,0x0e,0xbd,0x4f,0x8d,0xf8,0x7d,0x78,0x0c,0x35,0xa0,0xd6,0x79,0x0a,
- 0x30,0xff,0x70,0x18,0x0c,0xdf,0xbc,0x36,0xb3,0x22,0xcd,0xf2,0x0f,0x75,0x8e,0xbf,
- 0xf6,0x18,0x97,0xe9,0xcd,0x89,0xfc,0xb7,0x55,0x8c,0x7f,0x01,0x10,0x3b,0x23,0x5d,
- 0x20,0x97,0x7b,0xeb,0x37,0xae,0x7b,0x43,0x1a,0xd1,0x8f,0xb5,0x97,0x23,0xff,0xc6,
- 0x1c,0x72,0x39,0xd6,0xb5,0x09,0xd5,0xbe,0xc8,0x65,0xa5,0x2b,0x01,0xd0,0xec,0x1a,
- 0x72,0xcc,0x8c,0x60,0x6a,0xe2,0x88,0x53,0xff,0x65,0x8c,0x34,0xd7,0x82,0x6f,0xc5,
- 0xfd,0x3a,0x96,0xbc,0x64,0x8c,0x4c,0xe1,0xb0,0x8b,0x8e,0x68,0xb5,0x0a,0x7a,0x71,
- 0x31,0x00,0x62,0xe2,0x22,0xda,0x96,0xa4,0xe0,0x04,0x32,0x91,0xe5,0xd0,0x48,0x29,
- 0x0b,0xd0,0xb8,0xe2,0x5f,0x67,0x69,0x08,0x99,0xe4,0xfb,0x48,0xaf,0x1c,0x36,0xf2,
- 0x1f,0x95,0x96,0xa1,0x2f,0xca,0x74,0x9c,0x49,0x3f,0x92,0xa2,0xac,0x46,0x66,0xfb,
- 0x44,0x58,0x87,0xa5,0xf4,0x1b,0x60,0x70,0x67,0xb2,0x9f,0x86,0x39,0xfe,0xca,0xe4,
- 0x1f,0x1a,0x7e,0xee,0x24,0xbf,0x42,0x66,0xf2,0x22,0x9d,0xd5,0xac,0x18,0x4a,0x3c,
- 0x2d,0x76,0x18,0x7e,0xa2,0xae,0x45,0x79,0x23,0xea,0x97,0x95,0x76,0xd1,0x4f,0x7a,
- 0x4c,0x3f,0xc9,0x47,0xcd,0xdf,0x0e,0xd3,0xef,0xc6,0x5f,0x42,0x05,0xdd,0x5d,0xba,
- 0xb4,0x69,0xf1,0xfa,0xf8,0x20,0x79,0x94,0xf8,0x8d,0xbc,0x94,0x38,0xd5,0x58,0xdd,
- 0x5c,0x45,0xae,0xa3,0xa2,0x99,0xa4,0x78,0x1d,0x2c,0x68,0x4d,0x11,0xbf,0xa8,0x90,
- 0x0d,0xba,0x9c,0xca,0xc3,0x20,0xce,0x86,0xd3,0x84,0xc6,0xfc,0xdc,0x0f,0x77,0xf0,
- 0xd7,0x0c,0x5d,0x8f,0x96,0x02,0x1c,0x78,0xb0,0x55,0x98,0x16,0x55,0x8a,0x8a,0xe4,
- 0x44,0xab,0xbe,0x22,0xea,0x29,0x12,0xfb,0x3a,0x5a,0x19,0xc9,0x06,0x53,0x04,0xf3,
- 0x47,0x03,0x45,0x00,0xbb,0xba,0xb8,0x31,0x18,0xc7,0xfa,0x2f,0xc0,0x05,0xcf,0x59,
- 0xf1,0xaf,0x9c,0xe5,0x2c,0x24,0x11,0x44,0x7a,0xff,0x4d,0x81,0x6e,0x92,0xff,0x63,
- 0xb5,0xac,0xa1,0x9f,0xe5,0x1f,0x16,0x9f,0x6e,0x30,0x9b,0x31,0xdb,0xb0,0x3c,0x4d,
- 0xba,0xc1,0x58,0x98,0xa3,0x96,0x19,0xc3,0x60,0x28,0x39,0x52,0xaf,0xd1,0xdf,0xdc,
- 0xcd,0xf1,0x17,0xfb,0x5d,0x9b,0xae,0x39,0x47,0xe6,0x16,0xfd,0xbc,0x6f,0xdd,0x80,
- 0x7f,0xb0,0x69,0x54,0x64,0x21,0xad,0x73,0x98,0x7f,0xd8,0xc4,0xd9,0x0e,0x8b,0x6c,
- 0x46,0xc4,0x12,0xdb,0xb0,0x34,0xc2,0xa2,0xa3,0x1a,0x43,0x6d,0xbf,0x9b,0x14,0xe3,
- 0xf8,0xeb,0x9c,0x9b,0x76,0x23,0xcc,0x8d,0x17,0x49,0x38,0xf6,0xbf,0xbe,0x2f,0x7d,
- 0x44,0x2f,0xd1,0xf0,0x72,0xdf,0xaf,0xa5,0x69,0xf4,0x52,0xb2,0x7e,0x79,0xfe,0xaf,
- 0xa5,0x59,0xed,0x97,0xb6,0xde,0xff,0x75,0xdf,0xc9,0xb6,0x59,0xfa,0x8b,0xdb,0xc3,
- 0x3c,0x9b,0xce,0x5d,0xff,0x65,0x87,0xb4,0xa6,0x53,0x8b,0x7f,0x63,0xeb,0x46,0xf5,
- 0x01,0xf1,0x74,0xf3,0xec,0xa6,0xad,0x25,0xea,0x8f,0xa5,0x32,0xad,0x07,0x56,0xf0,
- 0xf6,0xa4,0xf8,0x84,0xd1,0xd3,0xfc,0xf7,0x09,0x55,0x17,0x03,0x62,0xd2,0x60,0x19,
- 0x89,0x99,0xfc,0x43,0xb9,0x4b,0xb6,0x69,0x37,0x04,0xdb,0xb0,0x92,0x39,0xb5,0x19,
- 0x06,0x1a,0xfe,0x26,0xa3,0xab,0x68,0x45,0x73,0xde,0x46,0x17,0x23,0x87,0xd8,0x4a,
- 0x58,0xe4,0xd1,0x9d,0x7f,0xd8,0x01,0x3b,0xe3,0x26,0x11,0xb3,0x04,0xa7,0x5b,0xe9,
- 0xa6,0xc4,0xdf,0xa4,0xae,0x17,0x07,0x63,0x28,0x4e,0xaa,0x16,0x8a,0x53,0xe9,0xee,
- 0xc2,0xbf,0x9f,0xaf,0x6c,0x40,0xda,0x0d,0xa5,0x0a,0x57,0x50,0xa6,0x5b,0x78,0x68,
- 0x35,0x93,0x7f,0xa8,0x8f,0x9a,0x78,0xd2,0x5e,0x3c,0x28,0xc2,0xfc,0x2c,0xf3,0xfd,
- 0x0b,0xca,0x52,0x27,0xc3,0xcd,0x0b,0x36,0x14,0xbf,0xa1,0x8d,0x0e,0x84,0x9b,0x7d,
- 0x1b,0xd5,0xbf,0x26,0xa3,0xb7,0x47,0x9a,0xf3,0x37,0x4a,0x53,0xc9,0xa8,0x59,0xd5,
- 0xb2,0x68,0x93,0x7a,0x03,0x4c,0x66,0xad,0x0b,0x7f,0xf1,0xfa,0x2f,0x44,0x52,0x6d,
- 0x7d,0x99,0x18,0xe2,0x68,0x85,0x93,0x64,0x18,0x59,0xc6,0x53,0x13,0x05,0xc0,0x68,
- 0x80,0xec,0x8c,0x51,0x33,0x12,0x43,0x43,0x19,0xd5,0x59,0xd0,0xcd,0xc9,0x3f,0x7c,
- 0x4c,0xb0,0xd8,0x0e,0xd3,0xb2,0x49,0xba,0x35,0x1f,0xed,0x2c,0xa3,0x23,0x2d,0x08,
- 0xb2,0xbe,0x74,0x5a,0xeb,0xc7,0x8a,0x30,0xfa,0x35,0x9d,0xf4,0x47,0xc3,0x72,0x3e,
- 0x12,0x41,0xf7,0xcf,0x0f,0x83,0xab,0x51,0xac,0xcb,0x23,0x62,0x38,0x2b,0xff,0xb0,
- 0x96,0xee,0xd7,0xab,0x3b,0x4a,0xd3,0xf3,0x87,0xc8,0x4f,0xe5,0xa5,0xd4,0x37,0x24,
- 0xad,0xac,0xb8,0x4c,0xd9,0x99,0xcc,0x08,0x79,0x95,0xce,0xa2,0x9f,0x79,0x5d,0x5a,
- 0x2e,0xbf,0x2a,0xde,0x94,0x50,0x96,0x01,0x10,0x7b,0x95,0xf8,0x69,0xe7,0xbb,0xf1,
- 0x5a,0x65,0x3f,0x4b,0x44,0xcc,0xe0,0x2f,0x83,0xa4,0xd2,0xc1,0xd3,0x8a,0xdc,0x00,
- 0xfb,0x97,0xac,0x9b,0xaa,0xde,0x50,0x4e,0x7a,0x0c,0x9b,0xe4,0x90,0xea,0xa6,0x32,
- 0xbb,0xc1,0x0b,0xae,0x48,0x85,0x91,0x87,0x35,0xce,0x6d,0xed,0x31,0xa4,0xe6,0x28,
- 0x90,0x77,0xc0,0xcb,0x94,0xe1,0x2f,0x8d,0xe3,0x2f,0x8d,0xcc,0x44,0xfc,0xd5,0x2c,
- 0x1e,0x15,0x1e,0x07,0x14,0xe0,0x59,0xfe,0xa0,0x46,0xb6,0x89,0x37,0x9a,0x6b,0x5a,
- 0x8a,0xba,0xc9,0xff,0x52,0x6e,0x48,0xe7,0xa5,0xc5,0xfb,0xc9,0xff,0xa2,0x53,0x0d,
- 0xe5,0x5e,0xb1,0x9e,0xfc,0x8b,0xc9,0xf3,0xe2,0x74,0x2b,0x41,0x6e,0x88,0x5f,0x67,
- 0xbb,0x52,0x84,0x87,0x60,0x5c,0xf2,0x03,0x4b,0x9b,0xd5,0x11,0xf1,0x6a,0xf9,0x69,
- 0x76,0xf6,0xe5,0xe7,0x8a,0xcc,0x0a,0x16,0x82,0xfd,0x82,0xde,0x14,0xcb,0x1f,0x52,
- 0xaf,0x86,0xb9,0xe9,0x4a,0x2f,0x5a,0xae,0x5e,0x2b,0x9f,0x03,0x83,0xe5,0x1f,0x6a,
- 0x1c,0x7f,0x31,0x9e,0x49,0xe3,0x06,0x57,0x4a,0x21,0x7b,0x31,0x62,0x3e,0x9b,0x49,
- 0x3e,0x40,0xfd,0xe5,0x10,0xc1,0x5a,0x8f,0x3a,0xf4,0x0a,0xfa,0x78,0xb1,0x18,0x1e,
- 0x82,0xd9,0xf8,0xcb,0x8a,0x7f,0x09,0x1f,0x18,0x23,0x48,0x29,0x7f,0xb2,0xfc,0xab,
- 0x18,0xff,0x4a,0x17,0x20,0xed,0x7c,0x7f,0xa2,0xee,0x0d,0xf4,0x06,0x09,0xb2,0xcd,
- 0xfb,0x7a,0x1a,0x23,0xe4,0x32,0x4d,0x2d,0xf7,0x9e,0x04,0xb7,0x10,0x65,0x97,0xe1,
- 0x6b,0xcc,0x82,0x6f,0xc8,0xfc,0xc3,0x01,0x2b,0xfe,0x25,0xac,0xd7,0xbb,0x28,0x80,
- 0xa3,0x12,0x70,0x89,0x57,0x91,0xc0,0x50,0xe7,0x52,0xf8,0xa2,0xed,0x5b,0x2b,0x11,
- 0xb1,0x9a,0xf4,0xc0,0x56,0xd8,0xad,0xbe,0x2e,0x4d,0x26,0xdd,0xba,0x1e,0x53,0xd2,
- 0x28,0xe9,0x95,0x84,0x1d,0xc4,0x10,0xf7,0x91,0xc7,0xb5,0x1b,0xcd,0x4c,0xfe,0xa1,
- 0x46,0x36,0x96,0xec,0x34,0xca,0x0e,0x2a,0xc3,0xf1,0xc9,0x58,0xda,0xdc,0xbf,0xe0,
- 0xce,0x5c,0xb8,0x0e,0xca,0x5f,0xb6,0x88,0xa7,0xe4,0xa7,0xf5,0xb2,0x5e,0xf5,0x8e,
- 0xf8,0x5d,0xfa,0xae,0x3c,0xa1,0x09,0x70,0x1c,0x52,0x73,0x4c,0xc5,0x3c,0x46,0x8d,
- 0xac,0x55,0xd8,0x3c,0xbf,0x60,0xc7,0xbf,0x5e,0x60,0x54,0x60,0xca,0x2c,0x96,0xa4,
- 0x11,0x18,0x50,0xf5,0x5c,0x42,0xa9,0x11,0x1c,0x50,0x66,0x02,0x10,0xeb,0x36,0x60,
- 0xdb,0xda,0x28,0xe6,0xc3,0x9d,0xa0,0x2f,0x0d,0x4c,0xf7,0xc0,0x4b,0x78,0xb8,0xe2,
- 0x23,0xf5,0x21,0xf1,0xa7,0xfa,0x93,0xfd,0xac,0x00,0xf0,0xa4,0x9d,0x7f,0xf8,0xc4,
- 0xbc,0xf3,0x04,0x40,0x16,0xd6,0x7f,0x81,0x7f,0x38,0x50,0xf0,0x94,0x74,0x23,0x9e,
- 0x1f,0x9a,0xc1,0x3a,0xf0,0x37,0xce,0x4f,0xe9,0x7e,0x01,0x9e,0xaf,0xbf,0x37,0x46,
- 0x13,0xa1,0x93,0xde,0x9e,0xb6,0x0a,0xfd,0x82,0xf9,0x4c,0xda,0xb7,0x59,0xaa,0x14,
- 0x8f,0xf0,0x44,0x97,0xf7,0xf8,0xf3,0x95,0x30,0xde,0xc5,0xd5,0xe9,0x28,0xd8,0x88,
- 0xa0,0x58,0xde,0x6f,0xfa,0xb6,0xab,0x43,0xe2,0x79,0x05,0x0b,0x63,0xdb,0xde,0xd5,
- 0x47,0x39,0x5f,0xca,0x53,0x28,0xe1,0x37,0xc0,0x9e,0xb8,0xf3,0xbc,0x4c,0xef,0x8c,
- 0x31,0x62,0xe3,0x2f,0x8e,0xe3,0xb4,0x11,0x3c,0x7f,0x46,0xfc,0x75,0x8a,0x3c,0x27,
- 0xd7,0x1c,0xbc,0x1e,0xc1,0xf5,0x1f,0xb8,0x10,0x73,0x98,0x5c,0x36,0x6b,0x4c,0xdf,
- 0xe9,0x36,0xc6,0xbf,0x61,0x3c,0x34,0x24,0x9d,0x93,0x31,0x58,0xb6,0xce,0x84,0x96,
- 0xa3,0xbc,0x46,0x2c,0xcd,0x9f,0xaf,0x56,0xf9,0xff,0x22,0x17,0x0e,0x6e,0x0d,0x29,
- 0x9b,0x18,0x37,0xc2,0x2c,0xf3,0xfa,0x4d,0xe2,0x3b,0xfa,0x9e,0x7e,0xe6,0x3f,0xeb,
- 0x2d,0x23,0x4d,0x7e,0x53,0xdd,0x86,0x65,0x3b,0x09,0x7f,0xec,0xa1,0x4d,0xe2,0x9b,
- 0x46,0x07,0xc6,0xb6,0x56,0x8b,0x95,0xa4,0xe3,0x2f,0x75,0x96,0x7f,0x68,0xe3,0xaf,
- 0xe9,0xe8,0x75,0xc7,0x4a,0x37,0xf1,0x92,0x2e,0x53,0xdd,0x5e,0xf4,0x9e,0xb6,0x97,
- 0x2e,0xe5,0x81,0xb0,0x94,0xe1,0xc7,0xf4,0x69,0x2c,0xff,0xf1,0xb7,0xe4,0xad,0x47,
- 0xda,0x5e,0x56,0x02,0x53,0x34,0x95,0x0d,0xce,0xce,0x3f,0x2c,0x37,0x98,0xda,0xd7,
- 0x8b,0xe4,0x31,0xa9,0x02,0xe9,0xf8,0xfa,0xe1,0x6e,0x49,0xf6,0xb3,0xa4,0xd0,0x2d,
- 0x24,0xc9,0xf9,0x37,0x52,0x44,0x57,0x6e,0x24,0xe2,0x51,0x8d,0x7a,0xd3,0x18,0x02,
- 0xf0,0x8a,0x14,0xaf,0xe3,0xe4,0x1f,0xd2,0x9c,0x15,0xa4,0x36,0x16,0x36,0x82,0xa8,
- 0xff,0x05,0xeb,0xf5,0x8a,0xc5,0x07,0x8b,0x41,0x2e,0xb5,0xac,0xa9,0xa7,0x02,0x16,
- 0x45,0x2c,0x0f,0x92,0x0f,0x9b,0xbb,0xef,0xca,0xa7,0xd2,0xa0,0x78,0xd0,0x8f,0xa1,
- 0x31,0xb5,0x02,0xb6,0xfe,0x6e,0x73,0x61,0xaa,0xd8,0xa9,0xff,0x02,0x48,0x15,0xab,
- 0x27,0x52,0xb3,0x74,0xb1,0x1d,0x5c,0xbe,0x5f,0xb3,0x32,0xf3,0x8b,0x06,0x3f,0x84,
- 0x07,0x7f,0x03,0x3c,0xfc,0xbe,0xf2,0x8b,0x1a,0x78,0x8c,0xb7,0xae,0x43,0xfc,0x35,
- 0x42,0xaa,0x0f,0x4f,0x32,0x25,0x07,0xb5,0x65,0xd5,0x7f,0x55,0x67,0x1d,0x59,0x5c,
- 0xe6,0xb2,0x5f,0x23,0xb0,0x82,0xc7,0x01,0x05,0xd8,0x47,0x1f,0x94,0x55,0x7b,0xe1,
- 0xf9,0x86,0x77,0x80,0xe1,0xaf,0xfa,0x2c,0xfc,0xe5,0xe8,0x2f,0xe3,0xf4,0x66,0x0c,
- 0x93,0x91,0x1c,0x76,0x62,0xd8,0xcb,0x52,0x04,0x4b,0x2a,0x3d,0x0d,0xaf,0x8b,0x9d,
- 0xf1,0x2a,0x13,0x26,0xd3,0x0a,0x84,0x65,0xd5,0x7f,0x8d,0xd7,0x43,0xec,0xb6,0x8d,
- 0x36,0x7c,0xc5,0xb1,0x8c,0x44,0x11,0xb0,0xb0,0x6e,0x85,0xc6,0xb0,0x54,0xd6,0x3e,
- 0x8f,0xca,0xe2,0xdf,0x70,0x74,0xdf,0x6c,0x23,0x53,0xff,0x55,0x95,0xe4,0xd4,0xf4,
- 0x42,0x55,0x87,0xb2,0x4f,0x4c,0xeb,0xc8,0x0b,0xa1,0xd4,0x31,0x82,0x08,0x36,0xc6,
- 0x5d,0xff,0xe5,0x4e,0x8d,0x66,0x2c,0x34,0x23,0x07,0xf9,0xb9,0x04,0x05,0x27,0x39,
- 0xe6,0xe5,0xa5,0x3d,0x11,0x12,0xec,0xc1,0x8c,0x44,0x91,0x1d,0x74,0x38,0xfe,0x73,
- 0x9f,0x13,0xff,0x52,0xb2,0x20,0xf0,0x22,0x56,0xaf,0x27,0x59,0x45,0x79,0x57,0xc8,
- 0x5c,0x40,0xd0,0x7f,0x86,0x5d,0x75,0x18,0x23,0xeb,0xe3,0x30,0x79,0x20,0x83,0x97,
- 0x27,0xd4,0x5f,0xb6,0x8d,0xf3,0x24,0x7c,0x90,0x65,0x7a,0x1f,0xc1,0xad,0xcd,0x0e,
- 0xb5,0x60,0xf6,0x3e,0xfb,0x1a,0xde,0x6d,0x99,0xef,0xe3,0x8e,0x7f,0x8d,0x9b,0x9f,
- 0x3d,0x04,0x59,0xd4,0xf8,0xfc,0x10,0xc5,0x51,0x04,0x83,0xa7,0x00,0x8f,0x23,0xfa,
- 0x03,0xdb,0xc5,0x6a,0x7b,0x7e,0x5c,0xf5,0x5f,0xe3,0xd7,0x0b,0x9e,0x82,0x01,0x3b,
- 0x70,0x69,0x64,0xd4,0x52,0xd8,0x49,0x05,0xce,0xf3,0xd5,0xa2,0x37,0x66,0xad,0x57,
- 0x76,0xfd,0x97,0x4d,0xb5,0x67,0x19,0x3b,0x19,0xfe,0x12,0xcf,0x63,0xf0,0x25,0x16,
- 0xb5,0xba,0x30,0x76,0xf3,0x2b,0x6c,0x19,0x54,0x90,0xa0,0xcf,0x8a,0xcb,0xb8,0xea,
- 0xbf,0x3e,0xe4,0x91,0xac,0xa3,0x19,0x63,0x98,0xa4,0xb8,0xf1,0x9c,0x5c,0x47,0x38,
- 0x23,0x62,0xaa,0x8e,0xac,0x0d,0x49,0xfd,0x22,0x86,0xbd,0xbc,0x5a,0x9b,0x97,0x38,
- 0xf1,0x2f,0x0b,0x7f,0xed,0xe3,0xd1,0xc9,0x2c,0x7d,0x87,0x4b,0x0e,0x29,0x25,0x0b,
- 0x8d,0x4d,0xe2,0xc6,0x3f,0xf0,0xa3,0x8f,0xb9,0xb8,0x5e,0xa7,0x0c,0x0b,0x91,0x8d,
- 0xd7,0x5f,0x76,0xeb,0x60,0xf2,0x77,0x2f,0x3f,0x99,0x74,0xd6,0xcb,0x6b,0xc5,0x34,
- 0x4d,0x70,0x4e,0xaa,0xec,0xf5,0x7a,0xdb,0xcd,0x7f,0xe8,0xd6,0x9d,0xe4,0x44,0x88,
- 0x16,0xc9,0x86,0x75,0x12,0xc8,0xa4,0x55,0x4c,0xa5,0xa5,0xa8,0x8f,0x9d,0xfb,0xc1,
- 0x06,0x34,0xd9,0x3e,0x5f,0xcd,0xaa,0xff,0xaa,0x4c,0x5f,0x97,0x35,0xcf,0x29,0xba,
- 0xc5,0x99,0x79,0xdd,0x0e,0x8d,0xc5,0x02,0x2b,0x8b,0x7e,0xcd,0xa6,0x57,0x89,0x66,
- 0xe6,0x39,0x9b,0x7f,0x3e,0x7b,0xdd,0xb5,0x94,0xc1,0x93,0x73,0x04,0x68,0x29,0x0d,
- 0xe0,0xfe,0xbe,0x83,0xac,0x38,0xa5,0xcc,0xdc,0xc0,0x8f,0x94,0x03,0x24,0xf3,0x9c,
- 0x66,0xf1,0xcf,0x47,0xec,0xdc,0x42,0x47,0xe4,0x2b,0xcc,0xfd,0xa8,0xf3,0xa4,0x3e,
- 0xe1,0xe5,0xfc,0xf3,0xf5,0x29,0xef,0xa0,0x34,0x62,0x1e,0xe6,0x81,0xb0,0x40,0x26,
- 0xfe,0x65,0xe1,0xaf,0x89,0xb5,0x95,0x33,0x49,0x86,0x60,0x14,0x8f,0x91,0xfd,0xf2,
- 0x75,0x64,0x06,0x8f,0xa9,0xff,0x1a,0x4b,0xa6,0x0d,0xce,0xa4,0x45,0x1c,0xb7,0x2c,
- 0x13,0x2f,0xe0,0xc4,0xdd,0x96,0x31,0x6a,0xc7,0xbf,0x32,0xf8,0xcb,0x15,0xbf,0x70,
- 0x8c,0x16,0x9b,0x6d,0xa3,0xd9,0x89,0x5f,0x60,0xe0,0x49,0x67,0x2d,0x1b,0x01,0xa3,
- 0xed,0x9e,0x30,0xfe,0x95,0x7d,0x1d,0x78,0x2a,0xef,0xb4,0xae,0x13,0x74,0x14,0xc1,
- 0xb0,0x8e,0x75,0x1a,0x6f,0x29,0x8a,0xdf,0xa0,0xed,0xb6,0xe3,0x20,0x0e,0xfe,0x72,
- 0x49,0xfd,0x3a,0xda,0xca,0x99,0xba,0x24,0x8b,0x1a,0x51,0x64,0x52,0x53,0x8c,0x20,
- 0xbd,0x09,0x81,0x98,0x3d,0x78,0x0c,0xff,0xfc,0x38,0x31,0x6b,0xac,0xa1,0x4b,0x27,
- 0xfb,0x49,0xdd,0xb5,0x41,0xab,0xc5,0x13,0xa4,0xaa,0xbe,0x15,0x5a,0x34,0x6f,0x8e,
- 0x24,0x18,0x23,0xe3,0xe2,0x5f,0x13,0xe8,0x26,0x5b,0xf5,0x5f,0x84,0x45,0xc4,0x6c,
- 0x26,0x79,0x84,0x54,0x1a,0x0b,0x84,0xbd,0x74,0x5d,0x86,0x20,0x3d,0x53,0xff,0x35,
- 0xd1,0x7a,0xb1,0x40,0x18,0x26,0x8d,0xd4,0xf7,0x3e,0xc5,0x5b,0xa6,0x18,0x05,0xa9,
- 0x4c,0x44,0x6c,0xa6,0x7c,0x48,0xfc,0xa3,0xf1,0x2f,0x66,0x9c,0x27,0x56,0x45,0x58,
- 0x87,0x3b,0x22,0xa6,0x64,0x5a,0x1a,0x88,0x13,0xff,0xca,0xaa,0xff,0x1a,0x3b,0xcf,
- 0xf8,0x54,0x6a,0x0d,0x08,0xc4,0x58,0x91,0x17,0xef,0xf2,0x94,0xc2,0xea,0xb4,0xda,
- 0x81,0x30,0x3b,0xfe,0x95,0x5d,0xff,0x95,0xb5,0xee,0xf2,0x13,0x56,0xfe,0x21,0x00,
- 0x31,0x97,0x22,0x98,0x82,0x8c,0x2e,0xab,0x89,0xd7,0x50,0x36,0xe5,0x7a,0x9d,0xf8,
- 0x97,0xab,0xfe,0x6b,0xdc,0xfc,0xec,0xb6,0xc2,0x5e,0x7e,0x8c,0xe7,0xda,0xf7,0x73,
- 0x43,0xc1,0x26,0xe9,0x8d,0x06,0xbc,0x9f,0x83,0x1b,0xad,0x1b,0x9b,0xe1,0x2f,0xdd,
- 0xc6,0x5f,0x13,0xcc,0xb3,0xe9,0x8a,0x88,0x2d,0xb2,0x42,0xc6,0x06,0xa7,0xb2,0xc4,
- 0xe9,0xd5,0x16,0x0c,0x6a,0xd6,0xe0,0x5f,0xf3,0xf7,0x86,0xcd,0x3f,0x3f,0xe6,0xfe,
- 0x11,0x22,0x64,0xad,0xf5,0x9c,0x56,0x38,0x5d,0xeb,0x9c,0x27,0x37,0x9e,0x51,0x04,
- 0x73,0xf3,0xcf,0x67,0x28,0x0d,0x1d,0xa3,0x9a,0x76,0x58,0x46,0xd2,0xdd,0x85,0xd4,
- 0x88,0xd5,0x1d,0xea,0x50,0xbc,0x36,0x13,0xff,0x22,0xfc,0x3a,0x13,0xed,0x5f,0x8c,
- 0x7f,0x7e,0xa2,0x93,0x76,0xd3,0x32,0x3c,0xf3,0x27,0x8c,0x7f,0x8d,0x7d,0x3f,0x67,
- 0x14,0x43,0xb2,0xbb,0xfc,0xff,0x61,0x6b,0x07,0xdf,0xa9,0x5b,0xef,0xe7,0xfe,0xec,
- 0xf8,0x97,0x4b,0x7f,0x99,0x19,0xf5,0x31,0x1e,0x11,0x6b,0x9d,0x9b,0x5e,0xe7,0xea,
- 0xfa,0xa5,0x6d,0x7c,0x59,0xfc,0x05,0xef,0x3a,0x3c,0x2e,0xfe,0x95,0xd9,0x77,0x64,
- 0x5b,0x6d,0x79,0x6c,0x57,0xa3,0xa3,0xbf,0xbc,0x7d,0x4c,0xfc,0x8b,0xe4,0xb8,0xdc,
- 0xc2,0x8c,0x91,0xa8,0xd7,0x7d,0x56,0xc6,0x54,0xa6,0xab,0x60,0x44,0xfa,0x40,0x3b,
- 0xce,0x63,0x64,0xb3,0xec,0xae,0x81,0x4c,0xfd,0xd7,0x84,0xf3,0x83,0x81,0xc2,0x53,
- 0x4b,0x61,0x12,0xfa,0x54,0xa4,0x8e,0xdc,0x81,0xdb,0xd6,0xdd,0xe2,0x09,0x56,0xd1,
- 0xac,0xdc,0xeb,0x29,0x31,0xac,0xf9,0x71,0xd5,0x7f,0x4d,0x70,0x1d,0x91,0x5d,0x87,
- 0x05,0x13,0x07,0x9c,0x2e,0x8f,0x1d,0x5e,0x54,0x96,0x30,0x42,0x2a,0x77,0xfc,0x4b,
- 0x9f,0x68,0xff,0x22,0x3b,0x36,0x05,0xe7,0xb9,0xd4,0x52,0x1a,0x58,0xd7,0xa0,0x62,
- 0x85,0x3b,0x0d,0x45,0xf7,0x2b,0xf6,0xba,0x3b,0xf8,0x6b,0x22,0x7f,0xec,0x02,0x9e,
- 0x03,0x00,0xb6,0x52,0x16,0xd8,0xbc,0x85,0x16,0xe1,0xc9,0xa0,0x72,0x04,0x83,0x2f,
- 0x3b,0xa5,0x0a,0xe4,0xe0,0x72,0xc5,0xbf,0x28,0x99,0xc8,0x4f,0x60,0xd1,0x49,0xf4,
- 0xeb,0x2e,0x10,0x4b,0x05,0x98,0x69,0x84,0xf5,0xf0,0xf8,0x17,0x2a,0x05,0x3b,0xb1,
- 0x1b,0x57,0xfd,0xd7,0xd8,0x50,0x0b,0x33,0x58,0xe6,0x95,0x78,0x9c,0xcc,0x6d,0x77,
- 0x42,0x63,0x60,0xfc,0x92,0x1c,0x27,0x3e,0xd3,0x77,0x8f,0x3a,0xd3,0x8e,0x7f,0xb9,
- 0xea,0xbf,0xb2,0xfc,0xc3,0x4e,0xcb,0x48,0xda,0xfe,0xe1,0x06,0x47,0x2e,0x19,0x8c,
- 0xdf,0xa1,0x50,0xec,0xcb,0xea,0xce,0x8c,0x7f,0x98,0x9e,0x50,0x7f,0x39,0x63,0x24,
- 0x5d,0x7e,0xa6,0x73,0x1d,0xff,0x1b,0xe8,0x67,0x62,0x97,0x6c,0x38,0xd7,0x69,0xb6,
- 0xf1,0xd7,0x44,0xcf,0x69,0x30,0xc9,0x96,0xa9,0x4d,0x0e,0x12,0x97,0x34,0x58,0x03,
- 0xf3,0x33,0x61,0xfb,0x11,0x89,0x28,0x59,0xf1,0x2f,0x7e,0xf7,0x90,0xfc,0x15,0xe3,
- 0x6f,0x7e,0xe2,0x3c,0x17,0xcc,0xfb,0x62,0x5d,0xcd,0xcc,0x18,0xc4,0x42,0x30,0xd3,
- 0xa7,0x4b,0xb2,0x13,0xff,0xe2,0xe7,0x1b,0x5c,0xff,0x6b,0xcc,0x3c,0x6b,0xee,0x8c,
- 0xa9,0x4c,0x57,0x35,0x8b,0x91,0x89,0xcc,0x9f,0x77,0x02,0x61,0x0e,0xfe,0xfa,0x88,
- 0x5c,0x84,0xa7,0xdb,0xf7,0x81,0x94,0x22,0xff,0x33,0x50,0x63,0xe6,0xe1,0x5f,0xfd,
- 0x43,0x59,0x4d,0xbf,0xf7,0x03,0x69,0x2e,0xec,0x32,0x35,0xad,0x05,0xc3,0xf0,0xbc,
- 0xd7,0x53,0x49,0xf7,0x9d,0x14,0x87,0xc9,0x3b,0xa4,0x26,0x7d,0x3d,0x92,0xe1,0xbc,
- 0x80,0xa1,0xe7,0xa1,0x46,0x57,0xfe,0x61,0x6d,0x7b,0x41,0x5a,0x3a,0x27,0x06,0x48,
- 0xb5,0x51,0x3e,0xe0,0x39,0x27,0x5e,0x12,0x1f,0x0f,0xdf,0xd4,0xe7,0xf9,0x3d,0xf9,
- 0x21,0x3d,0x49,0xa7,0xa7,0x3d,0x17,0x19,0x22,0x9b,0x5e,0xa6,0x6e,0x12,0xdf,0x16,
- 0xd7,0x99,0xfe,0xf4,0x75,0xdb,0xc5,0x2a,0xad,0xb3,0xdd,0x7f,0x3a,0xc3,0xbf,0xd1,
- 0x9f,0xd3,0x8f,0xa9,0xb6,0xb4,0x73,0x66,0x43,0x07,0x69,0x13,0xb6,0xf6,0x45,0x67,
- 0x92,0xcf,0x6b,0xe5,0x4a,0x00,0x31,0x6c,0x3e,0x49,0xc0,0xdb,0xd7,0x33,0x03,0x26,
- 0xfc,0xfb,0x82,0x4e,0xae,0xd3,0x58,0x62,0xb6,0x8e,0x79,0x71,0x41,0x18,0x3c,0xbd,
- 0x37,0x1a,0xca,0xf0,0x1f,0xfe,0x4c,0x01,0xb4,0x35,0xb0,0x00,0xd9,0xef,0x11,0x4a,
- 0x8b,0x98,0x80,0x8a,0x6b,0xca,0x84,0xc0,0x1e,0xed,0x98,0xee,0xe7,0x8a,0xcc,0xca,
- 0xed,0xe4,0xba,0x0d,0xe2,0xdb,0xe4,0x07,0xc4,0x3f,0xac,0xfe,0x98,0x4c,0x35,0x3a,
- 0xe9,0xf4,0x98,0xb2,0x29,0xee,0xf0,0x1f,0xbe,0x4f,0xce,0xa7,0x67,0xbd,0x04,0x33,
- 0xff,0x18,0x3c,0x3b,0x61,0x53,0xc6,0xf2,0xd5,0x77,0x48,0x6d,0x2f,0x86,0x95,0x85,
- 0xfe,0xbe,0x70,0x8a,0xa5,0x4f,0xff,0xc6,0x0c,0x6b,0x2c,0x35,0xf1,0x43,0xd2,0x9d,
- 0x56,0xb7,0x4b,0xd5,0xf2,0x91,0xc3,0x2b,0x3f,0x00,0x44,0xe6,0xe2,0x3f,0xbc,0x6c,
- 0xcf,0x3c,0x5f,0x82,0xb6,0x33,0xe4,0x8a,0x7c,0x33,0xab,0x30,0xca,0x19,0x26,0x75,
- 0xf1,0xeb,0x53,0xe5,0x8c,0xc6,0xa1,0xe8,0xfa,0x93,0xd2,0x49,0x64,0xd8,0x3b,0xe8,
- 0x4b,0xff,0xe6,0xa2,0x76,0x89,0xfc,0x73,0x03,0x23,0xb7,0x64,0xdf,0xa7,0x59,0x7b,
- 0x42,0xbb,0xd0,0x34,0x2b,0xe5,0x0b,0x35,0xfe,0x1d,0x7d,0x4e,0x88,0xf4,0x7d,0x3e,
- 0x35,0xe9,0x8c,0xfe,0x9c,0x10,0xe6,0xc2,0x64,0xaf,0x18,0xb3,0x34,0x2c,0x1b,0x2c,
- 0x3b,0xec,0x01,0x8f,0x28,0xc1,0x8e,0xb3,0xc2,0xe6,0xc2,0xd6,0xe2,0x1b,0xf5,0x51,
- 0x05,0x7c,0xda,0x9d,0xd2,0xbf,0x3b,0xf1,0x2f,0xba,0x27,0xe9,0x4f,0xab,0xbf,0x17,
- 0x3f,0x2b,0xff,0xfc,0x6c,0x75,0x3a,0x3a,0xb2,0xe1,0x0a,0xfd,0xb9,0x58,0xfe,0x7a,
- 0xfe,0xb0,0xb8,0x0f,0x2b,0x05,0x66,0x7b,0x87,0xc5,0x2a,0xd2,0xd9,0x5f,0xa5,0x2f,
- 0x48,0xc0,0x46,0x76,0x80,0xfa,0xa3,0xf9,0xb2,0xb4,0x48,0xee,0x9a,0x87,0x64,0xda,
- 0x99,0xf8,0xd7,0x7c,0x40,0x5b,0x15,0x98,0x42,0xb3,0x8c,0x3c,0x86,0xf1,0xe5,0xd9,
- 0x45,0xef,0xc1,0xcd,0x2f,0xa6,0x3d,0xa9,0xdc,0xa3,0x1a,0x95,0xb7,0xc5,0x94,0xd0,
- 0xfc,0x82,0x79,0x6b,0xcc,0x60,0x19,0x78,0x17,0x34,0x67,0x47,0x68,0x1b,0xca,0x7e,
- 0xad,0x8b,0xee,0x98,0x47,0xfa,0x16,0xd4,0x15,0x59,0xf8,0x6b,0x44,0xf8,0x33,0xb2,
- 0x8f,0x1f,0xf7,0x15,0x19,0x28,0xf2,0xe5,0x41,0x14,0xf0,0x78,0x72,0x49,0xfa,0xba,
- 0xd9,0xe2,0xab,0x46,0x3b,0xcd,0xd1,0xf5,0xbb,0x8b,0xa6,0xe4,0x3d,0x48,0x2b,0x03,
- 0xea,0x62,0xf1,0x65,0xb2,0x6b,0xe3,0x0d,0xa7,0x85,0xe5,0x30,0xe6,0xd9,0xce,0x32,
- 0x54,0x64,0xbe,0xe8,0xd4,0x7f,0x19,0x23,0xa9,0x99,0x7d,0xbe,0x54,0x71,0x93,0xbf,
- 0x4d,0x8f,0x0c,0xf9,0xc2,0xf8,0x78,0xd2,0xd0,0x50,0x41,0x48,0x5a,0x48,0x5e,0x4a,
- 0x96,0x44,0x83,0x73,0x24,0xef,0xc2,0xb8,0x3f,0x18,0xf2,0x15,0x49,0xbd,0xfa,0x87,
- 0xc9,0x59,0x66,0x93,0x5f,0x5a,0x4b,0xce,0x62,0xd6,0xa2,0xd6,0xe6,0xe0,0xaf,0x14,
- 0x19,0x91,0xaf,0xe7,0x6f,0xb6,0xff,0x69,0x4c,0x39,0x5c,0x89,0x65,0x5f,0xdf,0xd1,
- 0xea,0xfb,0xf2,0x87,0x85,0xa7,0xc4,0x4b,0x45,0xf5,0xe4,0xe1,0xb3,0xd2,0x45,0x83,
- 0x3d,0xb9,0xf8,0x7c,0xfd,0x61,0x71,0x6d,0x9f,0x2f,0x56,0xfc,0x6d,0xc3,0xaa,0x4f,
- 0x71,0xf0,0xd7,0xa0,0x75,0xea,0xd8,0x36,0x28,0x1e,0xd1,0xc3,0x27,0xf3,0x77,0x34,
- 0x56,0x8a,0xef,0x7c,0x31,0x3c,0x22,0x3f,0xd3,0x76,0x46,0x1f,0x90,0x67,0xe9,0x0b,
- 0xf7,0x35,0xb2,0x77,0x38,0x99,0xcc,0x28,0x82,0xf5,0x22,0x73,0x51,0x92,0xbf,0x0a,
- 0xc0,0x6f,0x69,0x74,0xf4,0xbf,0x36,0x62,0xb4,0x0b,0x53,0x5f,0x4a,0xc8,0x2f,0x62,
- 0x37,0xbf,0x18,0x98,0x21,0x7d,0xdb,0x68,0x53,0x6e,0x3a,0xaa,0xfc,0x13,0xbc,0x76,
- 0x4e,0x90,0x32,0x12,0xb8,0x27,0x0e,0x3e,0x80,0x5c,0x49,0xbc,0xcd,0x0d,0x88,0xc8,
- 0x6e,0x32,0xd5,0x58,0xc3,0x29,0xf2,0x00,0xe7,0xd7,0x72,0xf4,0xbf,0x36,0x90,0xa7,
- 0x39,0xaa,0x8d,0x93,0x47,0x92,0x53,0xd3,0x81,0xfb,0xc4,0x29,0xda,0xe3,0x74,0xea,
- 0xa0,0xc2,0xe2,0x5f,0x1d,0xba,0x1e,0x9d,0x93,0x3b,0x85,0x3c,0x43,0xab,0xf5,0x6b,
- 0x16,0x03,0xfe,0xda,0x91,0x2c,0x4b,0xaa,0x38,0xcf,0xdf,0x8d,0x57,0x22,0xff,0xa1,
- 0x83,0xbf,0x7a,0x01,0xd3,0x62,0x88,0xdf,0x53,0xc6,0xa4,0xf7,0x3a,0x42,0xe2,0x42,
- 0x94,0xa1,0xe7,0x05,0x14,0x8f,0xb4,0xea,0x9a,0x12,0xca,0x5d,0x8b,0x39,0x1e,0x7d,
- 0xb3,0x0b,0xe1,0x97,0xef,0x90,0x2b,0x36,0x2d,0x88,0x40,0xd7,0x7a,0x1a,0xbc,0x43,
- 0x2d,0xcd,0xe0,0xaf,0x1e,0xe3,0x72,0xec,0xe6,0xa4,0x2f,0xe9,0xdf,0x4d,0x7e,0x2d,
- 0xcf,0xa2,0x81,0xa4,0x18,0x80,0xc7,0x71,0x1a,0x55,0x10,0x88,0x1d,0xa3,0x35,0xd4,
- 0x8b,0xa5,0x61,0xfb,0x7b,0xe7,0x26,0xf3,0xb7,0x4b,0x23,0xf4,0x3c,0xf9,0xda,0x76,
- 0xdf,0x90,0xf4,0x0a,0xfd,0x51,0xba,0x3e,0xe1,0x3b,0x33,0xc9,0x8d,0xbf,0x94,0xc8,
- 0x55,0x3e,0xda,0xb8,0x05,0x63,0x5b,0x48,0x32,0x6f,0x0a,0x56,0x22,0x62,0x5a,0x38,
- 0xd9,0x5a,0x5b,0xea,0xa3,0x93,0x00,0x3b,0x4c,0xb6,0x98,0xfa,0x86,0x8d,0xfb,0x34,
- 0xdf,0x03,0xd2,0x69,0xff,0x50,0x05,0xb4,0x3c,0xb0,0x2a,0x0b,0x7f,0x85,0x9b,0x79,
- 0xbd,0x4c,0x4e,0x78,0x99,0x9a,0xb8,0x0e,0x7d,0xd1,0x70,0xb4,0x60,0xa3,0xd4,0x47,
- 0x7a,0x85,0x6e,0x04,0x62,0xbf,0x9b,0x3c,0xda,0x76,0xff,0xd2,0xa3,0x89,0xf2,0x0a,
- 0x7a,0x88,0xcc,0x9a,0x77,0x3c,0x51,0x33,0xcd,0x0b,0xfe,0x7c,0x6c,0xdd,0xa6,0xeb,
- 0x1c,0xfe,0xc3,0xbf,0xd5,0xbb,0x6e,0xd7,0x0d,0xe5,0xd1,0x9f,0x4e,0x25,0xaf,0x34,
- 0x6f,0xc5,0x02,0x25,0x24,0xa9,0xf3,0xb7,0xa8,0x9b,0x8a,0xd0,0x91,0xf6,0xdf,0x83,
- 0x44,0x0a,0x4c,0x9a,0xf9,0x76,0x4c,0xfc,0x1b,0x25,0xfe,0xbb,0x16,0x68,0xc5,0xcb,
- 0xcc,0xd5,0xcd,0x55,0xff,0xa4,0x5e,0xe3,0xf0,0xcf,0x0b,0x55,0xac,0xda,0x0b,0x9c,
- 0xed,0x15,0x79,0x4f,0x10,0xdd,0xb8,0xa6,0x44,0xac,0xd0,0x5b,0xc9,0x34,0xe6,0x90,
- 0x0b,0xab,0xc9,0xd2,0x26,0x35,0x51,0xb4,0xad,0x62,0xb7,0x56,0xb5,0xf8,0x76,0x9b,
- 0x22,0x4f,0x5d,0x2f,0x56,0x08,0xab,0x8d,0x2a,0x03,0x9e,0xdc,0xf9,0x19,0xfc,0xb5,
- 0x9b,0x6c,0x9d,0x77,0xa3,0x56,0xe0,0x6d,0xed,0x0a,0xe8,0xb7,0x3f,0x5a,0x44,0x9b,
- 0x92,0x5b,0x66,0xa7,0xbf,0xa0,0x16,0xc5,0xfb,0xd2,0x5b,0xf4,0x58,0x14,0xab,0xbd,
- 0xb4,0x2e,0x2e,0x2c,0x85,0xf9,0xa2,0x04,0xc3,0xdc,0x4d,0x42,0x2b,0x4f,0x44,0x74,
- 0xf1,0x1f,0xf6,0x10,0x3f,0x5d,0xbb,0xaa,0x6d,0x49,0xf4,0xed,0x96,0xf0,0xe4,0xfc,
- 0x55,0x93,0xca,0xfa,0xfa,0x97,0xcc,0x7c,0xd4,0xb7,0xaa,0xfc,0x74,0x7b,0x3f,0xe9,
- 0x26,0x52,0xbc,0x2d,0x2d,0x8c,0xc0,0xbb,0xe3,0x18,0xcb,0x48,0x0c,0xcc,0x22,0x8b,
- 0x68,0xb1,0x2e,0x30,0xff,0x39,0x29,0xfd,0xbd,0x8d,0xbf,0xce,0x71,0x91,0x94,0x84,
- 0xb4,0xd3,0x78,0x05,0x6e,0xf5,0xb5,0x09,0x69,0x9b,0x32,0xaa,0x4f,0x03,0xd8,0xd5,
- 0x38,0x48,0x39,0xc9,0x46,0x39,0xe6,0x16,0xce,0x05,0xfc,0xa5,0x02,0x22,0x13,0xbf,
- 0x83,0x40,0xec,0x84,0x78,0x29,0x07,0x11,0x59,0xe3,0x4f,0xec,0xfa,0x2f,0xa6,0xa8,
- 0x02,0x2d,0x22,0x86,0xbd,0xe6,0x00,0xb6,0x52,0x51,0x6d,0x79,0x87,0xc1,0x58,0xeb,
- 0x5f,0x24,0x7b,0xf1,0x18,0xea,0x5e,0x78,0x8b,0xce,0x61,0xa9,0x89,0xf2,0x25,0x79,
- 0x8e,0xb1,0x88,0x0d,0x96,0xea,0x4d,0x00,0x62,0x6f,0x4e,0x80,0xbf,0x3a,0xc8,0x2c,
- 0xe4,0x3f,0x24,0x64,0xc0,0x8e,0x88,0x9d,0x04,0xc3,0x8b,0xc6,0x10,0x11,0xa9,0x95,
- 0x88,0xe8,0xc7,0x10,0xe4,0x72,0x1b,0x9a,0x1d,0xb3,0xf5,0x97,0x5f,0x60,0xcc,0x42,
- 0x9d,0x30,0x99,0x72,0x2b,0x17,0x49,0x91,0xad,0xf8,0x57,0x43,0x9f,0xbc,0x45,0x0c,
- 0x40,0x4b,0x43,0x13,0xac,0x45,0x60,0x9e,0x05,0xc4,0x90,0x88,0xa3,0x68,0x50,0xb0,
- 0xa8,0x39,0x32,0xf8,0xcb,0x70,0x58,0x56,0x3a,0x85,0x69,0xe6,0x35,0x98,0x65,0xfa,
- 0x28,0xdc,0x09,0x6a,0xc2,0x8f,0x8a,0xde,0xfe,0xa5,0x79,0x88,0xbf,0x9e,0x98,0xe7,
- 0x6f,0xda,0x04,0x37,0x92,0xb0,0x9b,0x4c,0x6f,0x46,0xfe,0x0d,0x31,0x4f,0xaf,0x32,
- 0x02,0x9b,0x1d,0xfc,0x55,0x02,0xb8,0xe9,0xe8,0xac,0x7b,0x11,0x25,0xc5,0x31,0x3e,
- 0xb8,0x90,0x1f,0x1a,0x58,0xd5,0x70,0x6f,0xa5,0xef,0x6b,0xf1,0x62,0xa9,0xe3,0xd9,
- 0x78,0x6d,0x8b,0xfc,0x28,0xe3,0x27,0xa9,0xbd,0x53,0xdd,0xd4,0xf6,0x0b,0xe3,0x90,
- 0x5e,0x17,0xf5,0x6e,0xba,0xc1,0xc9,0x3f,0xfc,0x09,0x19,0x2d,0x45,0xce,0xcf,0x49,
- 0x56,0xda,0x61,0x42,0xb5,0x81,0x58,0xe3,0xa0,0xf0,0x92,0xbe,0xcf,0x28,0x60,0x17,
- 0xd4,0x23,0x4b,0x31,0xff,0x50,0x3f,0x4b,0x66,0xc5,0xd6,0x6d,0x90,0x96,0x95,0x60,
- 0xb1,0x98,0x3b,0xfe,0x95,0xd4,0x47,0xb4,0x48,0x91,0x8f,0xb6,0x95,0x51,0x78,0x57,
- 0xc8,0xd5,0x71,0xc9,0x28,0xeb,0x27,0x1f,0x61,0xc0,0xda,0x14,0xfb,0x8d,0x6e,0x8d,
- 0xeb,0x2f,0xeb,0xb0,0x9f,0xf2,0x88,0xf3,0x2c,0x2d,0xa3,0x25,0xe1,0xaa,0xff,0xba,
- 0xa5,0x74,0x3f,0xad,0x4e,0xa8,0x67,0xc4,0x5a,0xf9,0x61,0xe3,0xb3,0x54,0x79,0x5d,
- 0xbc,0x05,0xb0,0x55,0x79,0x62,0x41,0xb2,0x01,0xd5,0xbe,0xca,0x9f,0x9a,0x9b,0x24,
- 0xb3,0x63,0x0f,0x2b,0x37,0xa6,0xd4,0xa4,0xd0,0x43,0x5e,0x8d,0x96,0x3f,0xd1,0x99,
- 0x2e,0x1a,0x25,0xfb,0xcd,0xea,0x4d,0x6a,0x3a,0xee,0xc4,0xbf,0x6e,0x43,0x9f,0xad,
- 0x45,0xcd,0x17,0xfd,0x24,0x69,0xe8,0x07,0xd5,0x3a,0x71,0x11,0x79,0x92,0x9d,0x1f,
- 0x5e,0x7d,0x94,0x48,0x24,0x19,0x03,0xbf,0xae,0x80,0x6c,0xe5,0xac,0x41,0xfd,0xa4,
- 0x4b,0xaf,0x48,0xaa,0x33,0xe3,0xbd,0xad,0x5d,0x27,0x83,0x43,0x6a,0x20,0x83,0xbf,
- 0x34,0x6d,0x97,0x00,0xce,0x7f,0xa9,0x28,0x90,0x2d,0xe4,0x46,0x33,0xaf,0x45,0xbc,
- 0x8a,0x3c,0x4e,0xfe,0x1a,0x7c,0x7e,0xed,0x14,0x13,0x96,0xca,0x5b,0x29,0x4e,0x86,
- 0x96,0x1b,0x25,0xb5,0x85,0xec,0x10,0x9f,0x21,0x53,0xcd,0xce,0x98,0x78,0x6a,0xea,
- 0xd3,0xa4,0xb2,0x17,0x5a,0x9c,0xfa,0xaf,0x22,0xa6,0xa4,0xec,0x8b,0x4a,0x45,0xb0,
- 0xf2,0x35,0xe9,0xea,0x95,0xc2,0x57,0xc5,0xc7,0x07,0xb0,0xc8,0x4b,0x40,0xfe,0x8d,
- 0xb2,0x98,0x32,0x5b,0x9a,0x4c,0xde,0xa4,0x33,0xf4,0x75,0x2b,0x8b,0x5f,0x16,0x87,
- 0xb1,0x58,0x6c,0xb9,0xf0,0xaa,0x25,0x0d,0x26,0x38,0xf5,0x5f,0x49,0x3c,0x2e,0x36,
- 0xd8,0xbb,0xee,0x24,0x3a,0xff,0x21,0x30,0x7e,0xa3,0xd7,0x62,0xb4,0xeb,0xdd,0x8e,
- 0x0b,0xb9,0x11,0xb3,0x3a,0xa5,0x1e,0x25,0xff,0xc6,0x39,0x3a,0x4c,0xf1,0xd7,0x64,
- 0x8f,0xad,0x84,0xc2,0x72,0xe3,0x9d,0xfa,0xaf,0x57,0x8d,0xdf,0x25,0x6a,0x96,0xf9,
- 0x0e,0x49,0xcf,0x80,0xa3,0xc8,0xb4,0x95,0x79,0xee,0x93,0x77,0xe4,0x4b,0xf5,0xfa,
- 0xf1,0xc4,0x1c,0xbd,0x60,0xa4,0x31,0x22,0xff,0x61,0x6b,0x4d,0x45,0xce,0xa8,0x30,
- 0x40,0x8e,0xc5,0xe7,0x24,0xd7,0x0e,0x91,0xcb,0x4d,0x97,0x5a,0x11,0x7f,0x15,0x0f,
- 0x64,0xea,0xbf,0x5a,0x69,0xd9,0x7c,0xac,0x3b,0xa6,0xcf,0x12,0xfd,0x8c,0x72,0xa7,
- 0x74,0x97,0x88,0x65,0x56,0xf9,0x2d,0xd2,0xfd,0x64,0x55,0xb8,0x4c,0x09,0x30,0xba,
- 0x8c,0x9e,0x40,0x1d,0xa0,0xa4,0x81,0xe8,0x2f,0x49,0xd9,0x88,0x27,0xc6,0x91,0x54,
- 0x9f,0x1b,0x7f,0x6d,0x6c,0xda,0x15,0x5b,0x42,0xae,0x33,0xc4,0x04,0x7d,0x9a,0x4c,
- 0xed,0x57,0xee,0x66,0x67,0x8c,0x3a,0x66,0xa6,0xdd,0x45,0xbf,0x47,0xfe,0xce,0x98,
- 0x8e,0xd7,0x39,0x10,0xfe,0x6b,0x4f,0x5e,0x4b,0xee,0x80,0xf1,0x20,0xf9,0x6c,0x7f,
- 0x29,0x5e,0xe7,0xbb,0x0a,0xcb,0x51,0x3c,0x68,0xc7,0xbf,0x7a,0xc9,0xfa,0xab,0x74,
- 0x7c,0xba,0x45,0xd2,0x25,0x54,0xa0,0x60,0xc4,0x72,0x0c,0x80,0x12,0xa6,0x5b,0xfa,
- 0x48,0x54,0xc7,0xc2,0x22,0xaf,0xb0,0xc3,0x58,0x21,0x74,0xce,0xf0,0x3f,0x17,0xdb,
- 0x00,0x5f,0xf5,0x5a,0x82,0xd4,0x88,0x34,0x98,0x86,0x9b,0xc4,0xc1,0x5f,0x49,0xf9,
- 0x42,0x5f,0x28,0xb6,0x2e,0x29,0x3d,0x19,0x3a,0x4f,0x9e,0x31,0xd7,0xa2,0x1b,0x76,
- 0x5c,0x62,0x0c,0xe7,0xdf,0x26,0xbf,0x11,0x6a,0x07,0x0a,0x58,0xfe,0xe1,0xc0,0x2c,
- 0x2d,0xbf,0x47,0x7a,0x83,0x1c,0x26,0xb3,0xa3,0xde,0x6d,0xd2,0x7b,0xfa,0xe8,0x40,
- 0xdd,0x2f,0x7d,0xbb,0x27,0xbd,0xc7,0x7f,0xd7,0x46,0xb2,0x85,0xbe,0x23,0x32,0x90,
- 0x35,0xa4,0x9c,0x27,0xb5,0x03,0x55,0x3b,0xa5,0x77,0x45,0x2b,0x70,0xc9,0x68,0x2a,
- 0xa3,0xd5,0xa9,0xeb,0xde,0x25,0x17,0x8c,0xda,0x06,0x96,0x91,0xf8,0x01,0x22,0xb2,
- 0x6d,0x6d,0xef,0xf2,0x67,0x70,0x67,0x26,0xff,0x70,0x98,0x5c,0xc9,0xad,0x3f,0xe8,
- 0x4d,0x09,0x75,0xfa,0x65,0x32,0x17,0x1e,0x31,0xa9,0x4e,0xfe,0x05,0xaa,0x7d,0x35,
- 0x4b,0x75,0xe4,0x39,0x32,0x6b,0x3b,0xc0,0xae,0x91,0xd6,0xef,0x90,0xeb,0x43,0x60,
- 0x0c,0x90,0xc3,0xfa,0xcd,0xa6,0x37,0x0d,0x08,0xfa,0x3b,0xa4,0xbe,0xcf,0x3b,0x2c,
- 0x38,0xfa,0x5f,0xe5,0xe0,0x1b,0x57,0xa5,0x4b,0xf7,0x8b,0x9f,0x25,0x3d,0x7d,0x55,
- 0x03,0x9e,0x7f,0x15,0x9f,0x38,0x78,0x44,0xae,0xc5,0xdd,0xe1,0x29,0xa5,0x93,0x04,
- 0x06,0xf2,0xb1,0x74,0xe5,0x07,0x1d,0x41,0x1d,0x1c,0xe9,0xdf,0xc2,0x75,0xfc,0xe9,
- 0xfc,0xa7,0xe2,0xef,0xc6,0xf6,0x9a,0x55,0x27,0x95,0x90,0xdf,0xd1,0xff,0x9a,0x56,
- 0x06,0xd8,0x6a,0x69,0x74,0xbb,0xff,0xe7,0x64,0x4f,0xbc,0x8a,0x7a,0xb0,0xce,0xe5,
- 0x07,0x18,0x93,0xea,0x62,0x15,0x97,0xd3,0xe2,0xd1,0x54,0xc3,0x60,0x19,0xf8,0xea,
- 0x14,0x80,0xd8,0xeb,0xfa,0xf7,0x31,0x23,0x71,0x3b,0x96,0x86,0x75,0x54,0x99,0xd1,
- 0xae,0x0d,0x8e,0xfe,0x97,0xac,0x74,0x2d,0x81,0x37,0xa4,0x3f,0x4e,0x69,0xb7,0xb8,
- 0x62,0x8d,0x27,0x24,0x76,0xc0,0xfd,0x83,0x65,0x5f,0xb9,0x6b,0x93,0x60,0x90,0xbc,
- 0x99,0xe0,0x5d,0x74,0xe9,0x2b,0xbc,0xd0,0x65,0x8a,0x71,0x2d,0xd8,0x9f,0xa7,0x63,
- 0xa4,0x86,0xac,0x40,0x9f,0xc4,0xd1,0xff,0x5a,0x46,0xce,0x2f,0x89,0x18,0x01,0xea,
- 0x79,0xaa,0xe3,0x3c,0xa9,0xeb,0x78,0x38,0x29,0x29,0xe4,0x7b,0x46,0x38,0x01,0x1b,
- 0x74,0x1d,0x3d,0xd2,0x8c,0x94,0xe0,0x8d,0x67,0xe4,0xbd,0x01,0x16,0xc8,0x48,0x93,
- 0x5f,0x1b,0x91,0xc3,0x4a,0xd2,0x02,0x6b,0xc1,0x54,0x5e,0x52,0x22,0x1c,0x7f,0x9d,
- 0x23,0x23,0x06,0xec,0x3b,0xb4,0x38,0x66,0x5c,0x24,0x11,0x0f,0x86,0x48,0xb4,0x2b,
- 0xde,0x7a,0x0f,0xec,0x3b,0xe0,0xd8,0xeb,0xbb,0x0c,0x26,0x9b,0xfb,0x1b,0x21,0x52,
- 0xca,0x52,0x13,0x2f,0x93,0x10,0xcf,0x48,0xbc,0xcc,0xb0,0x70,0xe3,0xf2,0x49,0xae,
- 0xf8,0xd7,0xb8,0xf3,0x0d,0x5a,0xcf,0x45,0xcc,0x8f,0x92,0x9b,0xd3,0xb0,0x4c,0x11,
- 0xf2,0xae,0x58,0x6d,0x7a,0x4d,0xa4,0xbe,0xc1,0xc2,0xbd,0x11,0x69,0x26,0xec,0x7a,
- 0x37,0x8f,0xad,0xff,0xb2,0xc2,0x5e,0xcc,0x90,0x7a,0xac,0x6a,0x2f,0xa5,0xc7,0x7f,
- 0x86,0x6c,0xa7,0xfe,0xde,0xa8,0xc5,0xfc,0x9f,0x86,0x5d,0xc6,0x0f,0x1b,0x3d,0x13,
- 0x0b,0xd3,0xb1,0x94,0x98,0xe5,0x1f,0xba,0xea,0xbf,0x26,0xc2,0xb9,0x58,0x00,0x68,
- 0xe2,0x46,0x86,0xe5,0x24,0x5e,0x99,0xd7,0x7f,0xc1,0x8b,0x71,0x07,0xd1,0x93,0x79,
- 0x09,0x76,0x4e,0xbb,0x6d,0x6c,0xfd,0xd7,0x04,0xb8,0x3b,0xc8,0xaa,0xfc,0x8c,0x27,
- 0x3a,0xe0,0x3a,0x5c,0x6e,0xa0,0xaa,0x5f,0xf9,0x71,0x51,0x90,0xe0,0xf7,0xc9,0xeb,
- 0x12,0xfd,0x72,0x0f,0x61,0x42,0x60,0x36,0xde,0xc9,0x8a,0x7f,0xd9,0xac,0x2f,0x96,
- 0x0a,0x39,0xec,0x0e,0x26,0x3c,0x68,0x3b,0x3b,0x83,0x64,0xc8,0x8c,0xd0,0x60,0xbb,
- 0xaa,0xcb,0x17,0x68,0x77,0xba,0x72,0xa6,0x54,0x5d,0x31,0xca,0x39,0x70,0xb2,0xf9,
- 0x0f,0xc7,0x9f,0x4b,0x70,0x63,0x18,0x8d,0x3a,0xe9,0xa2,0x70,0x09,0x09,0x85,0x9a,
- 0xdb,0xce,0x92,0x4b,0x46,0xfd,0x20,0x20,0xdf,0x21,0x72,0xc5,0x98,0xf3,0xc7,0xe2,
- 0x5f,0xd7,0x73,0xe3,0x7e,0x8e,0x14,0xfa,0x9b,0x01,0x6d,0xb5,0xab,0x4f,0x91,0x51,
- 0x23,0x85,0x8e,0x6b,0x50,0x3e,0x42,0xba,0xe3,0x70,0x23,0x55,0x92,0x5e,0xd2,0xed,
- 0x8a,0x7f,0x9d,0xfc,0xb8,0x73,0x89,0x53,0x81,0x94,0xf8,0xae,0x01,0x1e,0xe3,0x29,
- 0x25,0x51,0xbc,0x02,0x57,0xc7,0x54,0x90,0x78,0x79,0x75,0x8b,0x1f,0xc5,0xc2,0x02,
- 0x64,0x35,0xf5,0xbb,0xea,0xbf,0x26,0x8e,0x7f,0x59,0xc6,0x19,0x81,0xb2,0x3a,0x56,
- 0xcf,0x5a,0x54,0x11,0x42,0xef,0x82,0xc0,0x0a,0x6e,0xc5,0x20,0xb2,0x8c,0xbc,0xd6,
- 0x66,0xa6,0xfe,0x2b,0x39,0x61,0xfc,0x0b,0xab,0xbd,0x30,0x1c,0x23,0x6c,0x4c,0x30,
- 0x3a,0xf4,0xaf,0x02,0x76,0x48,0xc6,0x94,0xc5,0xf1,0x30,0x79,0x00,0x77,0xa2,0x21,
- 0xf1,0x6a,0x9e,0xa4,0xb1,0x52,0xec,0x77,0xeb,0x7f,0xb9,0xe2,0x5f,0x2a,0x33,0x84,
- 0xa0,0x59,0x8d,0x15,0x61,0xbd,0x5a,0xc8,0xf4,0x86,0xca,0xd7,0xc2,0xfc,0x84,0xcc,
- 0x20,0x0a,0x7d,0xe2,0xb4,0x78,0x35,0x49,0x96,0x7b,0x95,0xd4,0xf8,0xfa,0xaf,0x8f,
- 0x5b,0xaf,0x2b,0x9a,0x25,0x7d,0x7e,0x09,0x65,0xbf,0x4c,0xe9,0x14,0x37,0x5a,0x98,
- 0x8a,0x35,0xcf,0x3f,0x74,0xeb,0x7f,0x8d,0x65,0xfd,0x75,0x0c,0x0c,0x84,0x79,0x91,
- 0x66,0x67,0x14,0x89,0x26,0x12,0xe0,0x78,0x30,0x23,0xc5,0x42,0x2d,0x61,0x9e,0x7f,
- 0xe8,0xd4,0x7f,0x4d,0x74,0x7e,0x58,0xcd,0x88,0x38,0x72,0x76,0x72,0x46,0x8e,0xcd,
- 0xe4,0x59,0x9e,0x00,0xaf,0x91,0xa7,0x71,0xe6,0x31,0x37,0xde,0x22,0xa2,0xcf,0xd4,
- 0x7f,0x69,0x13,0xce,0x33,0x07,0xbc,0x5d,0x00,0xcd,0x18,0xbd,0xe4,0xd3,0xb4,0x3c,
- 0xa9,0x2c,0x17,0xef,0x00,0x83,0xcd,0xfc,0x0b,0x38,0xe1,0x69,0x77,0xfe,0xe1,0x04,
- 0xcf,0x29,0xf2,0xae,0xa0,0x72,0xdf,0x31,0x56,0xad,0x1c,0xc0,0x14,0xe2,0xdd,0x0d,
- 0xfa,0x29,0xa5,0x4c,0x6c,0x40,0xa1,0xa2,0x3e,0x25,0x54,0xf4,0x9c,0xdc,0x1a,0x4b,
- 0xe2,0x60,0x57,0xfd,0xd7,0xf8,0xf8,0x17,0x1a,0x05,0xc9,0xe2,0x51,0xfd,0x72,0xf3,
- 0x33,0xd4,0x3b,0x88,0x6c,0x87,0xc9,0xc7,0x52,0x81,0x21,0xe9,0x3e,0x7a,0x3e,0xb9,
- 0x23,0x19,0x4c,0x4b,0xe7,0xc9,0x31,0x33,0x4c,0xd7,0x65,0xd7,0x7f,0x4d,0x14,0x97,
- 0x21,0xd5,0x14,0x89,0x10,0x8d,0x5a,0xa6,0x2b,0x04,0xef,0xcc,0x3a,0x54,0x1a,0xda,
- 0xea,0x8c,0x69,0x60,0x8a,0x0f,0x63,0xea,0xbf,0x26,0x88,0x7f,0x21,0x5f,0xc1,0x9b,
- 0xe4,0x90,0x51,0x60,0x04,0x35,0xa4,0xf2,0x56,0xc2,0x86,0x77,0x33,0x17,0x4e,0x02,
- 0xc7,0xbe,0x8d,0xf3,0xcf,0x8f,0xab,0xff,0x1a,0x1f,0xff,0x32,0x02,0x09,0xff,0xf3,
- 0x74,0x75,0x03,0x8b,0x7f,0x31,0xfd,0x26,0x43,0xf9,0x3e,0x1a,0x89,0xad,0xd8,0xf2,
- 0x3b,0xd2,0x6a,0xf8,0x3f,0x31,0xfe,0x85,0xc6,0x8d,0x09,0xff,0x19,0x63,0x35,0x09,
- 0x2e,0x55,0x38,0x8f,0x87,0xdf,0xe8,0xb0,0x04,0xc5,0x0c,0x25,0xe5,0x7f,0xbe,0x61,
- 0x35,0x80,0xbe,0x05,0x89,0x86,0x63,0x7f,0x34,0xfe,0xc5,0xe2,0x32,0xc8,0x36,0xaf,
- 0xaf,0x68,0x52,0xb0,0x10,0xac,0x4b,0x83,0xe7,0xb4,0x70,0x3e,0x33,0x96,0x21,0x40,
- 0x68,0x5f,0xcd,0xf3,0x0f,0xdd,0xf5,0x5f,0x13,0xc6,0xbf,0xf2,0x69,0xf9,0x69,0xe3,
- 0x30,0xa9,0xd3,0x16,0x52,0x35,0x49,0xde,0x5e,0x1e,0xf6,0x04,0x73,0xdb,0x90,0x5a,
- 0xbc,0x1b,0xc5,0xc2,0x4e,0x23,0xff,0xfc,0x27,0xc6,0xbf,0x58,0x61,0x11,0xa0,0x24,
- 0xf1,0x59,0x54,0xe8,0x60,0xfa,0x5f,0x65,0xcf,0xce,0xf3,0xbd,0x8c,0xb8,0x49,0xaf,
- 0x8f,0x56,0x0f,0xb0,0x1c,0xc5,0xfd,0xae,0xfa,0xaf,0x8f,0x8f,0x7f,0x15,0x58,0xcc,
- 0x8a,0x08,0xbb,0xb6,0x09,0x97,0x00,0x26,0xab,0x03,0x6a,0x05,0x17,0x0b,0x4b,0xf1,
- 0x1c,0xc5,0x4f,0x8c,0x7f,0xf5,0xf0,0xf8,0xd7,0x10,0x18,0x41,0x4e,0xcd,0x61,0xe5,
- 0x28,0x72,0x03,0x5a,0x4c,0x91,0x72,0x46,0xc4,0xec,0xfa,0xaf,0xf1,0xf3,0x6c,0x78,
- 0x18,0xff,0x06,0x96,0x9c,0x30,0x6a,0x7a,0x5a,0x61,0xa8,0xac,0xfe,0x8b,0x63,0xb4,
- 0x17,0xec,0x1c,0x45,0x57,0xfd,0xd7,0xc7,0xdd,0x3f,0x58,0x09,0xa8,0x7b,0x0d,0x85,
- 0x49,0x1b,0x88,0x7e,0x43,0xb2,0x78,0x2f,0x6f,0x57,0x12,0x0f,0xf6,0x89,0xab,0x89,
- 0x7f,0x6c,0xfd,0x57,0x66,0x5a,0x5c,0x22,0xcb,0x55,0x28,0x6c,0x37,0x6a,0x4c,0x31,
- 0x82,0x1b,0xdb,0xe0,0xdf,0x12,0x67,0xc5,0x7c,0xdf,0x95,0x2a,0x62,0xa3,0xa4,0xdb,
- 0x08,0x3e,0x2a,0xbd,0x21,0x1f,0x4a,0x86,0xc7,0xd6,0x7f,0x4d,0xb8,0x5e,0xee,0x85,
- 0x1b,0x44,0xf9,0xb0,0x26,0xce,0xd1,0xc1,0xf3,0x0f,0xc1,0xd8,0xb4,0x7f,0x6c,0xfd,
- 0xd7,0x44,0xf7,0x8f,0xa2,0xd2,0xe2,0xd7,0xc5,0x7e,0x8a,0x65,0x5f,0xc8,0x48,0xdf,
- 0x5e,0x4b,0x82,0x14,0xf9,0x33,0xf5,0x90,0xe2,0x05,0xfc,0xa5,0x19,0xc6,0xd6,0x31,
- 0xf5,0x5f,0x13,0xc6,0xbf,0x30,0xec,0x75,0x9e,0x3e,0xac,0x54,0x73,0x22,0x7a,0xcc,
- 0x36,0x54,0x06,0xe3,0x58,0x2c,0xc6,0xc4,0xc2,0x46,0x1a,0x1e,0x36,0xfc,0x63,0xeb,
- 0xbf,0x26,0x8a,0x7f,0xa5,0x9c,0x38,0x48,0x20,0xc4,0x68,0x7b,0xc1,0xd3,0x93,0xc1,
- 0xf1,0xd8,0x1b,0xd7,0x65,0x3c,0x62,0x32,0xda,0x38,0xd7,0xeb,0x27,0xc5,0xbf,0x1a,
- 0x50,0x6d,0x19,0x83,0x2f,0x08,0x10,0x26,0x63,0xc6,0x42,0xda,0x63,0xb0,0x42,0x5d,
- 0x2c,0xe6,0xf5,0x9f,0x14,0xad,0xf7,0x73,0xfa,0x8f,0xc7,0xbf,0x5c,0xfc,0x87,0x0b,
- 0x57,0xaa,0x53,0x48,0x0b,0x9d,0x9d,0x2e,0x08,0x48,0x53,0xb0,0x02,0x8b,0x85,0xc6,
- 0xe4,0x5f,0xf0,0xfc,0xc3,0xf1,0xf5,0x5f,0xd9,0x1b,0xd0,0xbc,0xec,0x16,0x3c,0x1b,
- 0xcc,0x67,0xfa,0x5f,0xe2,0x7e,0x83,0x53,0x3d,0xfc,0x67,0xe2,0x5f,0xb4,0x3e,0x96,
- 0x6f,0x8b,0x7c,0x61,0x35,0x8a,0x8c,0xd0,0xcc,0x77,0x52,0xba,0xac,0x41,0x8b,0x1e,
- 0x1c,0x21,0x97,0xfb,0x3f,0x97,0xa8,0x19,0x5f,0xff,0x35,0x7e,0x7e,0x9a,0x60,0x93,
- 0xc2,0x68,0x20,0x23,0x39,0x9c,0x4c,0xf6,0xe1,0x6c,0x34,0x43,0xd7,0xd3,0xde,0x32,
- 0x05,0xb7,0xb6,0x86,0x07,0x67,0x97,0xb9,0xea,0xbf,0x3e,0x26,0xfe,0x45,0x2a,0x8d,
- 0x1b,0xe1,0x3a,0x3a,0xcb,0x36,0xc4,0x3a,0xe8,0x9d,0xd6,0x75,0xa0,0x45,0xc7,0xcc,
- 0x90,0x13,0xed,0x0f,0xf0,0x79,0xfe,0xe3,0xf1,0x2f,0xf2,0x05,0x43,0x09,0x11,0xd8,
- 0xbf,0x1a,0x58,0x71,0x84,0x97,0x74,0x29,0x80,0xc4,0x91,0x5e,0xa0,0x8b,0xfa,0x9b,
- 0x03,0x33,0x30,0x81,0xc7,0xe4,0xfc,0x87,0xae,0xfa,0x2f,0x5e,0xe9,0x7f,0x26,0x63,
- 0x80,0x1f,0x45,0x2b,0x53,0xd2,0x31,0x72,0x41,0x63,0x4e,0x60,0x10,0xa9,0x9c,0xfa,
- 0x7c,0x0f,0x60,0x6d,0x17,0xed,0x26,0xac,0x46,0xec,0x08,0x27,0xa6,0xfe,0xe3,0xf1,
- 0x2f,0xc1,0xae,0x08,0xa3,0xb0,0x7f,0xa5,0xda,0xce,0x08,0x67,0xd1,0xb7,0xb1,0xf4,
- 0xda,0x34,0x04,0x6b,0x36,0xb9,0xca,0x1f,0x8f,0x7f,0x09,0xf5,0x43,0x8c,0x20,0xe2,
- 0x39,0x52,0x33,0x0c,0x4e,0x4e,0x1d,0xb9,0x22,0xce,0x41,0xd8,0x55,0xa7,0x1f,0xd7,
- 0x6b,0x1a,0xbc,0xc3,0x6d,0xc7,0xf5,0xe3,0x1d,0x35,0x63,0xea,0xbf,0x26,0xf4,0x0f,
- 0x91,0x49,0xfe,0x1d,0xd2,0x69,0xa2,0x4a,0x97,0xb4,0x82,0x73,0xb8,0xad,0x46,0x0e,
- 0xae,0xf4,0xd6,0x16,0x4b,0xf3,0x97,0x09,0x78,0xb9,0xeb,0xbf,0x26,0xba,0x0e,0x26,
- 0xd2,0xbf,0x29,0x74,0x9a,0x36,0xab,0x36,0x9d,0x6e,0x32,0xae,0x8f,0x4e,0xc2,0xe8,
- 0xc7,0xcf,0x88,0x6d,0x31,0xff,0x98,0xfa,0xaf,0x89,0xfd,0x4c,0x64,0x44,0x14,0x5a,
- 0xe1,0xed,0xa2,0x22,0x70,0xee,0xa2,0xba,0x19,0xc0,0xb4,0xba,0xd5,0xe0,0xff,0x60,
- 0x44,0x4c,0x6e,0x23,0xcc,0xdf,0xb0,0xea,0xbf,0x26,0x88,0x7f,0x31,0x23,0x68,0xe4,
- 0xf3,0xf8,0x57,0xd8,0xf4,0xd9,0x32,0xac,0x18,0xc8,0x10,0x7b,0x39,0xc7,0x1d,0x26,
- 0x26,0xb1,0x2e,0x57,0xfd,0xd7,0xb8,0x79,0x96,0x9d,0x8c,0xa9,0xcb,0x59,0x5d,0x26,
- 0x5f,0x82,0x09,0xeb,0xbf,0x84,0xcb,0xe4,0x48,0xfb,0x9c,0xb4,0xaf,0xa7,0xf8,0x7d,
- 0xe2,0x6b,0x0d,0xa5,0x15,0x7c,0x9a,0x5e,0x83,0x07,0xed,0x33,0x23,0xd2,0x7b,0xf0,
- 0x7c,0xcd,0xe0,0x6c,0x36,0x4f,0xd2,0x70,0xaa,0xa2,0x5f,0x88,0x28,0xf5,0x74,0x16,
- 0x78,0x48,0xc5,0x97,0xc9,0xc3,0x98,0xa3,0xd8,0x9f,0xd1,0x5f,0x7e,0x1b,0x67,0xfe,
- 0xb4,0xc5,0x36,0x3f,0x3d,0xed,0x49,0xdd,0x51,0x45,0x9e,0x24,0x0e,0x22,0xdb,0x0a,
- 0x46,0xe3,0xcf,0x48,0x67,0x7c,0x26,0x55,0x3a,0xa4,0xbf,0x21,0x7b,0x5b,0xab,0x90,
- 0xf6,0xd0,0x62,0x4d,0xec,0x01,0xbc,0x6c,0xe5,0x1f,0xb6,0x8b,0x9d,0x4c,0x6a,0xbc,
- 0xe8,0x8c,0xd2,0x89,0x82,0xce,0xa1,0xa2,0xa7,0x84,0x36,0x86,0xbf,0x96,0xda,0xec,
- 0x43,0x45,0x47,0xf1,0x84,0xaa,0x83,0xf1,0x99,0xaf,0x67,0x71,0xc6,0xf0,0x99,0xd2,
- 0x56,0xbe,0x28,0xb6,0xfe,0x72,0x49,0x52,0xef,0xac,0xb4,0xab,0xbd,0x0a,0xa7,0xf7,
- 0x7a,0xba,0xc5,0xa7,0xf4,0x27,0x95,0xaa,0xfe,0xeb,0xba,0x00,0x7f,0xed,0x15,0xc4,
- 0x3e,0xb5,0xcb,0x8f,0x77,0xcb,0xb4,0x2d,0x0a,0xf5,0xff,0x0d,0x6e,0x6d,0x49,0x75,
- 0x0b,0xac,0x7b,0x9e,0x59,0x15,0x5b,0x90,0x12,0x43,0x76,0xfe,0xe1,0x7b,0xe4,0x08,
- 0xad,0x3d,0xe7,0xdb,0xf9,0xc8,0xbb,0xd2,0x11,0x33,0xfc,0xd2,0xda,0x9e,0xb6,0x9f,
- 0x41,0x4b,0x64,0x38,0xaf,0xe7,0x91,0xf7,0xf4,0x0b,0x7a,0x78,0x08,0x15,0x1f,0x94,
- 0xdf,0xd2,0x70,0x77,0x70,0x9d,0x70,0x03,0xf9,0x4d,0x7a,0x56,0xd2,0xf7,0x53,0xe1,
- 0xb8,0x01,0x63,0xd2,0xbe,0xb9,0x19,0xfd,0xe5,0x67,0x51,0x1a,0xde,0x5c,0x34,0x2a,
- 0x5d,0x36,0x60,0x7a,0x87,0xd5,0xe1,0x9a,0x6f,0xb7,0xbf,0xaf,0xb3,0x33,0xa2,0xcb,
- 0xf2,0x95,0xcf,0xb0,0x37,0xdb,0x7e,0x03,0x96,0x89,0xfa,0xfa,0xdb,0xce,0xe9,0x57,
- 0xe6,0xd5,0xd3,0xeb,0xd3,0xc5,0x17,0xc9,0xff,0x24,0xf5,0x0d,0xbe,0x61,0x75,0x44,
- 0xb3,0xf1,0x17,0xc6,0x5c,0x06,0xae,0x4f,0xb1,0xea,0xb3,0xc8,0x40,0x70,0x27,0x0a,
- 0x19,0x18,0xb3,0x06,0x0a,0x18,0x7b,0x9e,0x18,0x31,0x3f,0x8f,0x94,0x47,0xbf,0x31,
- 0x18,0x5b,0xcb,0x1b,0xcd,0xa3,0x72,0x18,0x25,0xd4,0x2b,0x31,0x9f,0xc4,0xf4,0xed,
- 0x2c,0x77,0xf3,0x1f,0x8a,0x55,0xe6,0x75,0xa9,0x22,0xdc,0x65,0x6a,0x01,0x7d,0xc0,
- 0x64,0xbe,0x43,0xfc,0xbd,0x12,0xcc,0x98,0x00,0x1b,0x90,0x19,0x4d,0x35,0xbc,0x68,
- 0xac,0x06,0x8f,0xda,0xab,0x88,0x6f,0xa0,0xa3,0xb8,0x51,0x5d,0x23,0x56,0x1a,0xab,
- 0x07,0xaa,0x96,0x2c,0xd8,0xe9,0x71,0xeb,0x2f,0xdb,0x8f,0xc3,0x63,0x22,0x06,0x91,
- 0x09,0xa0,0x63,0xa1,0xc2,0x14,0xad,0x07,0xe4,0x60,0x5e,0xc8,0x7f,0x5c,0x6b,0x13,
- 0xfe,0x9e,0xe4,0x11,0x74,0x45,0x4a,0x75,0xea,0xd1,0xe3,0xeb,0xc8,0x96,0xe6,0x15,
- 0x03,0x0b,0xea,0xb6,0xce,0xb6,0xf3,0x0f,0xaf,0x27,0xbb,0x36,0x56,0xa6,0xff,0xea,
- 0x3e,0xf1,0xd5,0x3b,0x1f,0x4f,0x7e,0x76,0x48,0x59,0x49,0xa6,0x90,0x9f,0xb7,0x72,
- 0x5e,0xf4,0x9c,0x5d,0x5b,0xfe,0x01,0x50,0xc0,0x1d,0xaf,0x5e,0x3d,0x89,0x56,0x06,
- 0xa2,0xd1,0xf8,0x2f,0x11,0x17,0x6c,0xed,0x1c,0x12,0xa7,0xe8,0x3f,0x8e,0x7f,0x03,
- 0xa3,0x66,0xa5,0xae,0xfc,0xc3,0xf5,0x75,0xa7,0xd4,0xd9,0xc5,0xc7,0xe2,0xbf,0x25,
- 0x75,0x69,0x6f,0x97,0xe4,0x35,0x2e,0xe8,0x33,0xfb,0x0b,0x66,0x34,0x1e,0x6b,0xdd,
- 0x71,0x6d,0x5d,0x7f,0xfe,0x4d,0xd2,0x51,0xfd,0x4b,0xb4,0x4e,0x7f,0x48,0x40,0x7a,
- 0x2e,0x2d,0x94,0xf4,0x95,0xab,0x6b,0x8d,0xd3,0xa4,0xae,0xc1,0x77,0x53,0x5b,0x11,
- 0x7f,0x4c,0x11,0x7f,0x5d,0x50,0x7c,0x7d,0x93,0x86,0x85,0x8b,0xcd,0xaf,0x55,0x55,
- 0xf1,0xe7,0xeb,0x82,0x02,0x73,0x78,0xf6,0xb9,0x8b,0xc6,0x95,0x59,0xf5,0x98,0xf0,
- 0x89,0xd9,0x86,0x56,0x7d,0xe5,0xef,0xe5,0xeb,0xa9,0x6f,0x89,0x74,0x4a,0xfd,0x0f,
- 0xac,0x4f,0x69,0x91,0x06,0xae,0x66,0xeb,0x85,0xf8,0xeb,0x43,0x00,0x59,0xeb,0x90,
- 0xce,0xe8,0x48,0x6b,0x68,0x70,0x2d,0xe3,0x35,0x12,0xaa,0xd2,0x39,0x29,0xe9,0x3d,
- 0xe3,0x82,0x56,0x6b,0xae,0x4b,0x09,0x47,0xe5,0x27,0x27,0x45,0x5a,0x0b,0x28,0x78,
- 0xf8,0x79,0xe0,0xf2,0x4d,0x4a,0x72,0x97,0x86,0x8c,0xc9,0x3f,0xac,0x28,0x3b,0xa9,
- 0xb6,0x68,0x97,0x12,0x8f,0xeb,0x37,0xf6,0x06,0xee,0x81,0x6d,0xeb,0x80,0x5c,0x7e,
- 0x92,0xdc,0xd3,0x70,0x4a,0xf8,0x05,0x29,0xeb,0x55,0xef,0x15,0x4f,0xd1,0x1b,0x50,
- 0x77,0xd2,0x60,0x72,0x27,0x95,0x34,0x0f,0xcf,0xfd,0x9e,0x66,0x39,0x1e,0xc4,0xe1,
- 0x3f,0xfc,0x91,0x7e,0x60,0xcb,0x96,0xf4,0x82,0xfb,0xb4,0x57,0xdb,0xd7,0xd1,0xb2,
- 0xa1,0x8e,0x6f,0x8b,0xaf,0xd1,0x5d,0xdb,0xca,0xd3,0xcb,0xef,0x13,0x2f,0x03,0xa0,
- 0xa9,0x1c,0x56,0xbf,0x2d,0x5e,0x31,0x1e,0x6c,0xab,0x4c,0x2d,0x88,0x16,0x7d,0xc0,
- 0xc8,0x12,0x6f,0x5b,0x2e,0xbe,0xc6,0xe3,0x5f,0x2b,0x0d,0x87,0xff,0xf0,0xb8,0x82,
- 0x0f,0x63,0x27,0x52,0x1a,0x3e,0xb6,0x64,0xf9,0x28,0xd3,0x49,0xdf,0x91,0xd0,0x07,
- 0x4a,0x67,0xfa,0x8f,0x2a,0x8f,0x60,0x71,0xdf,0x6c,0xf1,0x45,0xb2,0x55,0x09,0x26,
- 0xf3,0x66,0x8b,0xa6,0xde,0xba,0x2c,0xf8,0x52,0xde,0x5c,0x78,0x8b,0x75,0xdd,0x1e,
- 0xbc,0x43,0xad,0xcd,0xc4,0xbf,0x76,0x93,0xcb,0x7a,0x4d,0x87,0xef,0xf5,0xe2,0x91,
- 0x8e,0x63,0x7a,0x0d,0x5d,0x3b,0x04,0xd8,0xea,0x72,0xeb,0x8e,0x4d,0xde,0xd7,0xa5,
- 0x0b,0xe4,0x85,0x54,0xfd,0x4e,0x1f,0xa0,0x2d,0xe3,0x3d,0x7d,0x6e,0xab,0x2f,0x26,
- 0x8d,0x74,0xbc,0x60,0xd4,0x77,0x5f,0x3f,0x28,0x9d,0x24,0x97,0xe7,0xd5,0x27,0x7c,
- 0x6f,0x67,0xe5,0x1f,0xea,0x11,0xc5,0x17,0xe7,0xee,0x9c,0x8c,0x68,0x4b,0x1f,0xf1,
- 0x86,0x89,0x48,0x1f,0x4b,0xc7,0x86,0xc4,0x5a,0xc1,0x47,0x1f,0xe7,0x9e,0xde,0xc3,
- 0x6d,0xd2,0x69,0x71,0x84,0xdc,0x4f,0x3e,0x83,0x45,0x28,0x16,0x11,0x47,0x26,0xfe,
- 0xb5,0x05,0xb3,0xa1,0xd6,0xb1,0x92,0x2e,0x31,0x42,0xae,0x67,0x06,0x99,0x25,0xad,
- 0xa3,0x8d,0xe9,0xbc,0x95,0xf1,0x22,0x7d,0x1d,0x15,0x63,0xb2,0x85,0xc8,0x6e,0x60,
- 0xc2,0xb5,0xbe,0x44,0xdb,0xa0,0x7e,0x68,0x63,0x81,0xe1,0xdd,0x44,0x9c,0xfc,0xc3,
- 0xbf,0xa5,0x3d,0x64,0x1a,0x7a,0xe6,0x26,0xe9,0x90,0x59,0xd9,0x97,0x49,0xa8,0x88,
- 0x41,0x93,0xa2,0x74,0xce,0x48,0xf3,0xac,0x0a,0x15,0x3c,0x78,0xf1,0x10,0xec,0x44,
- 0xdf,0x48,0x88,0x53,0xf5,0xdd,0xba,0xbf,0x59,0xdd,0x80,0x29,0x85,0x34,0xb8,0x44,
- 0x59,0x7f,0xd0,0x85,0xbf,0x6c,0x16,0x08,0x9e,0x3a,0x05,0x7f,0x4e,0x3a,0xc8,0xdf,
- 0xd0,0x4e,0x06,0x10,0x8c,0xe9,0x9a,0x4a,0xa7,0x0d,0x91,0x1f,0x88,0x28,0x31,0xe6,
- 0x01,0x47,0x5a,0xff,0x7a,0xbf,0xba,0xbe,0xe1,0xfd,0xd2,0x47,0x85,0xaa,0xc3,0x63,
- 0xf8,0xe7,0x31,0x4e,0xad,0x5d,0x3d,0xd8,0xc0,0x0a,0x6c,0x01,0x76,0x15,0xad,0x2e,
- 0x41,0x9f,0x3f,0xdc,0xa7,0x3d,0xc1,0x82,0x5c,0xa4,0x5d,0x6c,0x15,0xab,0x9a,0xf2,
- 0x36,0x91,0x76,0x78,0x1f,0x6e,0x37,0x1b,0xb5,0xa2,0x41,0xa5,0x30,0xc9,0x32,0x24,
- 0xdd,0xfc,0xf3,0x81,0x88,0xc7,0x17,0x6f,0x3b,0x9d,0xec,0x07,0x43,0x5d,0x15,0x4f,
- 0x27,0xfb,0x97,0xcf,0x52,0xd5,0x78,0x5b,0x7a,0x7b,0x4f,0xa0,0x16,0xbb,0xd2,0x3f,
- 0x59,0x2c,0x44,0xb4,0x87,0x00,0xc3,0xa3,0x9c,0x10,0xe3,0x3f,0x24,0x27,0xe5,0x08,
- 0xbc,0xaa,0xcb,0xdf,0xcb,0xc4,0xbf,0xae,0x90,0x3f,0x33,0x26,0x01,0xa4,0x6a,0xff,
- 0x3d,0xa0,0x24,0xd4,0x35,0x93,0x2f,0x4d,0xc3,0x48,0x56,0xf1,0x09,0xf9,0x0f,0x48,
- 0x24,0x35,0x20,0xdd,0x8b,0xb5,0xc9,0x00,0xbb,0xc4,0x3b,0xb5,0x4b,0xd0,0xb2,0x0e,
- 0x06,0x7b,0xde,0x47,0xa2,0xd1,0x81,0x1a,0x27,0xff,0xf0,0x1c,0x39,0x44,0x6b,0x63,
- 0x05,0xdf,0x97,0xa6,0x25,0x0f,0x25,0xeb,0xd1,0xe7,0xff,0x09,0x99,0x9b,0x8c,0x7c,
- 0x7d,0xd1,0xb5,0xd2,0x47,0x15,0x2f,0x82,0xa3,0xf8,0x85,0xef,0x17,0x7d,0x94,0xfc,
- 0x3b,0x32,0xd9,0x20,0xcd,0x22,0x22,0xb2,0x4a,0xfc,0x27,0x66,0x92,0x67,0x79,0x82,
- 0x77,0x86,0xff,0x50,0xec,0x20,0x7e,0xd9,0x48,0x02,0xa0,0x0a,0x94,0x54,0x69,0x0b,
- 0xe8,0x97,0x92,0xc6,0x26,0x98,0x79,0x6f,0x2b,0x92,0xe2,0x8a,0x55,0xb2,0x82,0xd1,
- 0xae,0xc3,0x9c,0x88,0x7e,0xc8,0x5e,0x94,0xa4,0x6d,0x38,0xfc,0x87,0xb0,0x82,0x85,
- 0xd3,0x8d,0xdb,0xd7,0x6b,0x32,0x69,0x15,0x82,0x4d,0x0b,0xd6,0xe7,0xca,0xf2,0xfa,
- 0x42,0x2f,0x62,0xab,0x41,0xd2,0xa6,0x05,0x63,0x9e,0xc2,0x86,0x41,0x79,0x8b,0x60,
- 0x53,0x73,0xe4,0xe0,0xcc,0x63,0x45,0x33,0x07,0x6b,0x36,0xff,0x61,0xe1,0x36,0x79,
- 0xb5,0xe6,0xbf,0x33,0xba,0xbe,0x68,0x9b,0xf0,0x84,0xf7,0xef,0x1b,0x99,0x6c,0xdc,
- 0xa3,0xda,0xb4,0x5b,0xaf,0xd9,0x48,0x06,0xe5,0x27,0x84,0xaa,0x5b,0x3d,0x89,0xad,
- 0xcb,0xc8,0xa3,0x24,0xd8,0x50,0xca,0xa0,0x99,0x0e,0x2f,0xf3,0x7f,0x69,0xf8,0x31,
- 0xaa,0x15,0x44,0x17,0x7c,0x37,0xc3,0x7f,0xf8,0x82,0xd1,0x6b,0xcc,0x36,0x0a,0x26,
- 0x4b,0x53,0x63,0x87,0xb4,0xc8,0x32,0xdf,0xa3,0xd2,0x8f,0x3b,0x5e,0x49,0x46,0xee,
- 0xf9,0xdc,0x66,0x09,0x6e,0xda,0x86,0x88,0x51,0xb0,0x5e,0xfa,0x45,0xde,0x5b,0x26,
- 0x00,0xb1,0xef,0x4b,0x6f,0x08,0xa3,0xd1,0xc8,0x1d,0xbe,0x12,0x24,0xe2,0x30,0x23,
- 0xcd,0x8b,0x36,0xa9,0x0e,0xff,0xe1,0x4f,0x2c,0x6e,0x8d,0x46,0x07,0x76,0x6d,0x5b,
- 0xfb,0xca,0x03,0x11,0x98,0xf9,0x72,0x64,0xb0,0x8c,0x2c,0x85,0xc7,0xe1,0x6f,0xe6,
- 0xbd,0x85,0xf2,0xcd,0x8f,0x4a,0x83,0x32,0x1f,0x5c,0xfe,0x3b,0xcb,0x70,0xf1,0x1f,
- 0x92,0x91,0x79,0xf7,0x6b,0x98,0xa4,0x9a,0xd3,0xdf,0x10,0xd1,0xd6,0xb5,0x4b,0xa7,
- 0x95,0x11,0x21,0x4c,0x00,0x64,0x95,0xe5,0x8d,0xe4,0x45,0xc8,0x43,0x48,0xc4,0xd1,
- 0x6f,0x44,0xb4,0xb5,0xf4,0x4b,0x65,0x21,0x94,0x96,0xf3,0xb6,0x36,0xea,0xa8,0x25,
- 0xa1,0xf9,0x1e,0xfc,0x5a,0x46,0xff,0xcb,0xd8,0xc3,0xa2,0xe4,0x45,0xe8,0x82,0x56,
- 0xd1,0x02,0xfd,0xcf,0xb6,0x7b,0xf7,0x08,0x7e,0x9a,0x93,0x14,0x15,0x6d,0xff,0xad,
- 0xb7,0x74,0x40,0xd7,0x88,0xbc,0x46,0xa8,0xa2,0xf9,0x6f,0x8b,0x3d,0x00,0xc4,0xaa,
- 0xdb,0xf3,0xcf,0x88,0xb7,0x90,0xfd,0x46,0xf5,0x83,0xea,0x8a,0x06,0x97,0xfe,0xd7,
- 0x0e,0x79,0x85,0x19,0x0d,0x89,0x67,0xf2,0x76,0x88,0x8c,0x1a,0xe8,0x28,0x92,0x8d,
- 0xf7,0x8a,0x78,0x7c,0xb4,0xc3,0x08,0x36,0x0b,0xe0,0x6c,0x53,0xe6,0x81,0xe8,0xd3,
- 0xe2,0x5a,0x2a,0x19,0x7c,0x3e,0x2f,0x22,0xe6,0x20,0x4c,0x35,0xc0,0x33,0x77,0xf0,
- 0xd7,0x67,0x00,0x05,0xfc,0x2d,0x3b,0x0d,0x7b,0x80,0x25,0xbf,0xdd,0x2d,0xc2,0x1b,
- 0x9b,0x96,0xe3,0xde,0x84,0x90,0xe1,0xef,0x0c,0xc2,0x4f,0xc3,0xaa,0xfb,0xf2,0x56,
- 0x8a,0xeb,0xc9,0x2e,0xa3,0xb2,0x4c,0x88,0x89,0x25,0xf2,0x33,0x5c,0xa3,0xd9,0xc5,
- 0x3f,0x8f,0xd4,0x52,0x48,0x7b,0x48,0xbf,0x07,0x68,0xab,0x00,0x36,0x44,0xf2,0x1d,
- 0x70,0xc3,0x0a,0x56,0x36,0x62,0xea,0xf8,0xdc,0xd8,0xad,0x2b,0x8b,0x7f,0x2d,0xac,
- 0xa2,0x73,0x87,0xf2,0x97,0x4b,0x1b,0x34,0x80,0x66,0xfa,0xe7,0x57,0xaa,0x57,0x7b,
- 0x3f,0x6a,0x9f,0x9b,0xcd,0x3f,0x2f,0x7f,0x8b,0x54,0x30,0xf7,0xd2,0xf8,0x81,0x38,
- 0xc5,0x14,0x53,0x02,0xba,0x07,0x41,0x33,0x3f,0xa5,0xae,0x20,0x73,0x64,0x2c,0xfb,
- 0x2a,0x36,0x99,0xc3,0xc0,0xe8,0x9e,0xbe,0x85,0xaf,0xc1,0x90,0x34,0xa8,0x70,0x9f,
- 0xbf,0xdc,0xe1,0x9f,0x7f,0x95,0xbc,0x16,0x67,0xce,0xc9,0x15,0x4c,0x29,0x1c,0xf4,
- 0xe1,0xdb,0xf1,0xca,0xfa,0x7a,0x74,0x0b,0x5f,0x95,0x7f,0x13,0x9f,0x1b,0x5b,0x3b,
- 0xda,0x78,0x12,0xf5,0xbf,0x4e,0x88,0x43,0xe2,0xb5,0xcd,0x47,0x68,0x75,0xd0,0x3b,
- 0x22,0x7c,0x44,0x2e,0xa3,0x34,0xd8,0x88,0x7d,0xfe,0x0c,0xf8,0xcb,0x58,0xb5,0x31,
- 0x9f,0xc1,0x25,0xed,0x71,0x52,0xf9,0x2e,0xa2,0x2d,0x65,0x17,0xad,0x1c,0xca,0xbb,
- 0x5b,0x3c,0x55,0xb4,0x2a,0x59,0x69,0xe4,0xdf,0xb7,0x61,0x20,0x0d,0x5d,0x83,0xca,
- 0x1d,0x62,0xc2,0x58,0xb5,0xb5,0x52,0x66,0x44,0x88,0xcf,0x68,0x2c,0xa5,0xd0,0x89,
- 0x7f,0xed,0x23,0xab,0x4a,0x2b,0x5f,0x50,0x5b,0xe2,0xa7,0x74,0x18,0xdc,0xd7,0x79,
- 0x16,0xa7,0x57,0xf9,0xc6,0x61,0x46,0x26,0xf9,0x80,0x5e,0x69,0x28,0x77,0x8b,0x27,
- 0x8d,0x55,0x62,0xe5,0x8b,0x6a,0xac,0xa1,0x44,0x5e,0x15,0xab,0x56,0xf2,0x90,0xac,
- 0xe3,0x5f,0xe6,0x31,0xb0,0xd6,0x67,0xe3,0x2f,0x93,0xb4,0x61,0x24,0x6b,0x76,0xee,
- 0x31,0xf2,0x58,0x3a,0x38,0xac,0xd6,0x89,0x3e,0x8c,0x6d,0x0d,0xff,0xc5,0x6c,0xf1,
- 0x38,0x0a,0xa6,0x37,0xe7,0x85,0xc4,0xe7,0xc8,0x63,0xb8,0xee,0xb2,0x3f,0x0e,0x6e,
- 0x7c,0x30,0xa0,0x86,0xc5,0xe3,0x31,0x64,0x12,0x53,0x43,0x0d,0x4e,0xfc,0xeb,0x5f,
- 0x8d,0x23,0x66,0x64,0xd8,0x57,0x07,0xf3,0xf3,0x4e,0xb2,0xce,0x5c,0x74,0x5e,0x7d,
- 0x4a,0xf9,0x30,0x1e,0x49,0x2f,0x8a,0x80,0x3f,0x76,0x44,0xaf,0x5b,0xec,0x9d,0x2d,
- 0x1d,0x01,0xa3,0x7e,0xc0,0xf7,0x54,0x9b,0xdf,0xdf,0x6f,0xd4,0x05,0xf2,0x91,0x8f,
- 0xfa,0xbc,0x50,0x97,0xf6,0xed,0x81,0xfd,0xdd,0xc6,0x5f,0xf2,0x3b,0xde,0x88,0x39,
- 0x29,0x55,0xce,0x8a,0x59,0x8e,0xfa,0xba,0xc9,0x19,0xf0,0x5b,0x22,0xfd,0x52,0x77,
- 0xf9,0x99,0xde,0x77,0x54,0x78,0x88,0xba,0xa5,0xa1,0x3c,0xc6,0x57,0xf9,0x13,0x29,
- 0xad,0x20,0xfe,0x2a,0xd8,0x29,0xbd,0x81,0xf8,0x6b,0x64,0xd1,0xce,0xb6,0x37,0x1c,
- 0xfc,0x55,0x8a,0xb4,0xf3,0xeb,0x86,0xbf,0x57,0x57,0x71,0x3c,0xb7,0xde,0x9c,0x0c,
- 0x7e,0x4b,0xde,0x15,0xf2,0x8f,0xbd,0xf9,0xc3,0x8d,0x75,0x88,0x97,0x0f,0x7a,0x87,
- 0xa5,0xd9,0x15,0xc7,0x59,0x7a,0x95,0x16,0x42,0xce,0x07,0xc5,0x3b,0xdc,0x78,0x91,
- 0x7c,0x84,0xaa,0xcd,0x17,0x0d,0xcb,0x0f,0x6f,0x25,0x0b,0x01,0x0a,0x4d,0x03,0xff,
- 0xb9,0x71,0x85,0x82,0xda,0x5e,0x48,0x72,0x28,0xef,0x15,0x66,0x9a,0x1d,0x29,0x7f,
- 0x50,0xfe,0xf0,0xd1,0xa5,0xc9,0xfc,0x54,0xf9,0xd7,0x39,0x81,0x7c,0xf0,0x91,0x79,
- 0xb1,0x36,0x61,0x56,0x48,0xd9,0x27,0xbe,0x1f,0xda,0x9b,0x9e,0x75,0x42,0x99,0x19,
- 0xd7,0x9b,0x39,0xfe,0x12,0xb8,0xc8,0xf2,0x82,0x54,0xae,0x97,0x71,0xdc,0xe5,0x31,
- 0xda,0x43,0xdd,0x8f,0x46,0x50,0xde,0x4b,0xfc,0x77,0x2b,0xa9,0x86,0x2a,0xf2,0x03,
- 0x99,0x31,0xe3,0x25,0x91,0xab,0x81,0xc0,0x75,0xde,0x94,0xf7,0xb6,0xf9,0x69,0x47,
- 0x4a,0x74,0xe2,0x5f,0x5e,0xa1,0x6d,0xe6,0x32,0xcc,0xb7,0x59,0xd8,0xf0,0x08,0xa9,
- 0x3a,0x7a,0x5b,0xa8,0xe1,0xa8,0xbc,0x5b,0xf9,0x9b,0x7e,0x74,0x5c,0x8d,0x6e,0x32,
- 0xdd,0xc8,0xeb,0x16,0x6f,0x27,0x8f,0x14,0x06,0x8f,0xaa,0x49,0x78,0x06,0x3a,0xf5,
- 0xa0,0x16,0xd0,0xc2,0x47,0x95,0x1a,0xcc,0xc9,0x49,0xd9,0xf1,0x2f,0xc4,0x5f,0x9d,
- 0x51,0xbc,0xc3,0x1b,0x26,0x93,0xdf,0xc8,0x91,0x97,0x6f,0xc3,0x09,0xdf,0xed,0xf7,
- 0x1f,0x7e,0x28,0xa5,0x56,0xc2,0xcb,0xca,0x6f,0xac,0x85,0x2f,0x26,0xfe,0xc6,0x98,
- 0x7b,0xd8,0x97,0xf4,0x24,0x01,0x91,0xd5,0x6a,0x6b,0x11,0x9a,0x7d,0x4b,0x0c,0x9b,
- 0x0b,0x53,0x6a,0xd2,0xc6,0x5f,0xc3,0x80,0xd1,0x6e,0x00,0xb7,0xf0,0x91,0x7d,0xf4,
- 0x00,0xba,0xd6,0x28,0xea,0x37,0x8a,0x4f,0x13,0xaa,0x7d,0xbd,0x5f,0xf2,0x67,0x18,
- 0x94,0x1c,0xd1,0xde,0x47,0x2a,0x95,0x58,0x63,0x0b,0xb9,0x62,0xdc,0x44,0xd6,0x61,
- 0x18,0x05,0xb3,0x3e,0x8e,0x0f,0x97,0x2f,0xcf,0xd2,0xff,0x9a,0x20,0xfe,0x05,0x3e,
- 0x3f,0x26,0x85,0x5a,0x44,0x1c,0x7f,0xb0,0x65,0xf5,0xc6,0x0e,0xfe,0xb8,0xf8,0x57,
- 0xc6,0xd8,0x84,0xac,0x26,0xd4,0x6f,0xb5,0x08,0xfe,0x89,0xc6,0x64,0xf2,0x0f,0x6f,
- 0xfd,0xb8,0xf8,0x17,0xdc,0xf3,0x32,0xa1,0x8e,0x0a,0x79,0xc6,0xc8,0x8c,0xe9,0x5d,
- 0x10,0xca,0xfd,0xe3,0xf5,0x5f,0x68,0x74,0x88,0x7e,0x11,0xb6,0x36,0xde,0xb2,0xa3,
- 0x1d,0x0d,0xbf,0x3d,0xc6,0x31,0x26,0xae,0xff,0xca,0x32,0x7a,0xa4,0x2a,0xb9,0x3f,
- 0xd9,0xcd,0x5b,0x46,0x49,0x78,0xa2,0x31,0x29,0xa9,0xf7,0x13,0xe3,0x5f,0x86,0xda,
- 0x4f,0x7e,0x4f,0x0e,0x7c,0x6c,0xa8,0xe5,0x3f,0x51,0xff,0x65,0x1b,0xda,0x61,0xfb,
- 0x6b,0xd8,0xdf,0x47,0x71,0xba,0x2c,0xe3,0xc4,0x27,0xc4,0xbf,0x4c,0xf0,0xeb,0x00,
- 0x4a,0x0f,0xd8,0x8c,0xfd,0xba,0x7f,0xa2,0x39,0x4c,0x49,0xdd,0x19,0xfe,0xc3,0x8f,
- 0x59,0xaf,0x6b,0xe2,0x2f,0xd0,0xb8,0xf9,0x71,0xeb,0x25,0xec,0xc8,0xaa,0xff,0x4a,
- 0x7d,0x5c,0xfc,0x8b,0xf3,0xf2,0xd9,0x2a,0xc0,0xe4,0x80,0x6d,0x8c,0x1d,0xbc,0xef,
- 0x8f,0xd5,0x7f,0x31,0xa3,0x44,0x7a,0x5e,0x7f,0x4e,0x09,0xf5,0x5a,0x2d,0x21,0xd3,
- 0x37,0x83,0x19,0x41,0xdb,0xc0,0xc1,0x35,0x4e,0xfe,0xe1,0xc7,0xce,0x33,0x3a,0x93,
- 0x1f,0x7e,0xec,0x12,0xd8,0xc6,0x1f,0xad,0xff,0xba,0xc0,0x73,0x3c,0x2a,0x58,0x76,
- 0xa8,0xd5,0xf2,0x31,0xf7,0xcf,0xdb,0x7f,0x3c,0xfe,0xc5,0xf8,0x0f,0x35,0x79,0x07,
- 0xd9,0x62,0x62,0xfe,0xbc,0x7c,0x80,0x19,0xe3,0x2b,0x0e,0x32,0xf9,0x87,0x3f,0xfa,
- 0xb8,0x79,0x2e,0x65,0x6c,0x87,0xce,0xf4,0x6e,0x99,0x78,0x9e,0xff,0x58,0xfd,0x17,
- 0x37,0x64,0x98,0xc1,0x1d,0x1b,0xec,0xe5,0xa6,0x13,0x3c,0xa7,0xe6,0x75,0x9f,0x50,
- 0xff,0xc5,0x8c,0xb4,0x74,0x8b,0x7c,0xd9,0x0c,0xf3,0x96,0x3d,0xc9,0xf0,0x44,0x63,
- 0x3e,0xa9,0xfe,0x8b,0x33,0xff,0x9f,0xa6,0xc3,0xd1,0x8c,0x52,0xf0,0x04,0x63,0x16,
- 0x7d,0x72,0xfd,0x17,0xe6,0xa6,0xca,0x99,0xc4,0xad,0xd1,0xc4,0x58,0x3e,0xf3,0xff,
- 0x64,0xfd,0x17,0x1a,0x53,0xdb,0x31,0x48,0xb1,0x20,0x51,0x34,0xe8,0x96,0xeb,0xca,
- 0x1e,0xf3,0x89,0xf1,0x2f,0x75,0xa3,0xa7,0x82,0xae,0x6e,0xb7,0x18,0xe9,0xbb,0x3e,
- 0xee,0x3a,0x7f,0xbc,0xfe,0x8b,0xf1,0x1f,0xf2,0x60,0xb4,0xd5,0xa2,0xe9,0xa8,0xf5,
- 0x6c,0x8f,0xb1,0x08,0xd2,0x17,0x7c,0x72,0xfd,0x17,0x17,0x69,0x3a,0xcc,0x44,0x9a,
- 0x8a,0xd3,0x85,0xe7,0x8d,0xee,0x89,0xc7,0x7c,0x62,0xfc,0x0b,0x89,0x38,0x1a,0xac,
- 0x42,0x30,0xd4,0x08,0xc3,0x9c,0xb7,0x09,0xe6,0xf9,0x13,0xea,0xbf,0x90,0xe4,0x50,
- 0xad,0x83,0xcd,0x8e,0x2d,0xd3,0x36,0x30,0xba,0x27,0x5e,0xaf,0x89,0xf2,0x0f,0xdd,
- 0x86,0xa0,0xba,0xc2,0x5e,0x69,0xb7,0x91,0x3d,0xd8,0xc9,0x3f,0xfc,0xb8,0xf8,0x17,
- 0x3c,0x5f,0xb9,0xb6,0xaa,0x5a,0xbb,0x4b,0x5e,0x6d,0xcc,0xe0,0x3f,0x56,0xff,0x65,
- 0x1b,0x15,0xb2,0x73,0xdb,0xec,0x18,0xbf,0xee,0xe2,0x27,0xd7,0x7f,0x71,0x92,0xc3,
- 0xe2,0xa9,0x64,0x34,0xda,0xcd,0xe7,0x67,0xf7,0x38,0x7e,0xfe,0xd1,0xf1,0xfc,0x87,
- 0x1f,0xf3,0x5c,0xa0,0x91,0xb4,0x5b,0x94,0x82,0x89,0xaf,0xf3,0xeb,0x4f,0x88,0x7f,
- 0xf1,0xfb,0xc7,0x8c,0xf1,0xdb,0x46,0x5e,0x29,0x86,0xc7,0x8f,0x11,0x3e,0xb9,0xfe,
- 0x0b,0x8c,0xd3,0x1b,0x66,0x93,0x87,0xa9,0x9f,0xb7,0xec,0xef,0xf7,0x4f,0x34,0xe6,
- 0x13,0xe3,0x5f,0x8c,0x6f,0xb9,0x80,0x3c,0xe2,0xbc,0xbe,0x0c,0x3c,0x45,0xf7,0x8f,
- 0x7f,0xe9,0x7d,0x52,0xfc,0xab,0x17,0xae,0xe3,0x23,0x8f,0x18,0x36,0xed,0xbc,0x2d,
- 0x0b,0xb2,0x4b,0xc8,0x1e,0xec,0xc2,0x5f,0x1f,0x13,0xff,0x5a,0x2e,0x4d,0x11,0x7f,
- 0xc5,0x83,0x5c,0xaf,0xb2,0x83,0x71,0xa7,0x6b,0xd1,0xca,0x72,0x67,0xf0,0xdb,0x9f,
- 0x10,0xff,0x02,0xb4,0xa5,0x0e,0xa1,0xc0,0xfd,0xc7,0xee,0x5f,0xb2,0x9b,0x7f,0xe3,
- 0x63,0xe3,0x5f,0x48,0x82,0xed,0xb0,0xb1,0x39,0x81,0xb0,0xf1,0x83,0x3f,0xa9,0xfe,
- 0xab,0x4f,0xc5,0x43,0xc2,0x55,0xce,0xb4,0x94,0x96,0xf5,0x66,0x8d,0x69,0xda,0xa5,
- 0xfd,0x27,0xea,0xbf,0x38,0xd9,0xaf,0xfb,0x3a,0x19,0x23,0x7b,0xf0,0xc1,0x3f,0x1e,
- 0xff,0x62,0xeb,0xde,0x4f,0xe2,0x56,0x21,0x33,0x4a,0x25,0x4e,0x9c,0xdb,0xf3,0xc7,
- 0xeb,0xbf,0xd0,0x78,0x4a,0xc4,0x13,0x72,0xcb,0x3f,0xbc,0x40,0x6d,0xc3,0x56,0x5e,
- 0xb3,0x09,0x0c,0x3f,0xa1,0xfe,0xcb,0x64,0x82,0xce,0x1f,0xea,0x56,0x0b,0x4a,0x83,
- 0x8d,0x1f,0xb3,0xe8,0x93,0xeb,0xbf,0x4c,0xdf,0xf2,0xb6,0x88,0x7e,0x89,0x0b,0x81,
- 0x5d,0x24,0x97,0xb5,0x1a,0xf7,0x98,0x46,0x67,0x70,0xda,0xde,0xbf,0x3e,0x26,0xfe,
- 0x65,0x76,0xf6,0x88,0x53,0x69,0xcf,0x62,0x16,0xe4,0x3a,0x43,0x7a,0x8c,0x89,0xfc,
- 0xc3,0x05,0x9f,0x5c,0xff,0x65,0xaa,0xf1,0x78,0xb0,0xdd,0x61,0xad,0xdf,0x43,0x26,
- 0xf6,0x33,0x3f,0x39,0xfe,0xa5,0xda,0x82,0xe9,0x16,0xf3,0x40,0x72,0xe2,0xf5,0x72,
- 0xe9,0x7f,0x7d,0x9c,0x5f,0x37,0x09,0xd3,0x90,0xac,0x65,0xfa,0xf0,0x63,0xfc,0x31,
- 0x87,0x7f,0x63,0xa2,0xf8,0x17,0x37,0xd2,0xd2,0x29,0x5b,0xba,0x68,0x4c,0xd7,0x3a,
- 0x57,0x8b,0x5b,0xff,0x4b,0xae,0x27,0xde,0x11,0x69,0x3f,0xe3,0xb7,0x61,0x06,0xc6,
- 0x6e,0x30,0xd1,0xb7,0xe4,0x7d,0x78,0xac,0x16,0xf5,0x40,0x0b,0xca,0x3a,0xf8,0xfa,
- 0x25,0x64,0xbc,0xa9,0xd7,0x7d,0x27,0x8b,0x31,0xd0,0x5c,0x8f,0xcf,0xbb,0xc3,0xbf,
- 0x71,0x46,0xc1,0xe3,0x59,0xa5,0x87,0x51,0x6a,0xd8,0xc1,0x44,0x5a,0x65,0x7a,0x01,
- 0x2f,0x93,0x36,0xb2,0x15,0x9d,0x76,0xcc,0x3f,0x04,0xfc,0xd5,0x81,0x19,0x14,0xb4,
- 0x56,0x07,0x68,0xf6,0x9e,0x62,0xe1,0x2f,0x87,0xff,0xb0,0x1f,0x49,0xe6,0x51,0x8b,
- 0x6d,0xad,0xd2,0x29,0xea,0x66,0x29,0x23,0x42,0x64,0xb4,0x1b,0x7e,0x2f,0xb1,0x04,
- 0xd7,0xd6,0x6a,0x3b,0x04,0x24,0x3c,0xe1,0xdb,0x16,0x41,0x6a,0x5f,0x65,0x0c,0xff,
- 0x7c,0xe1,0xcf,0xc8,0x9a,0xd6,0xaa,0x94,0x92,0x0a,0x7b,0x95,0xce,0x3b,0xe0,0xfb,
- 0xa4,0xe2,0x4f,0xe9,0x9d,0x5f,0x0c,0x9a,0x04,0x75,0xa9,0x1e,0xab,0xc4,0xe5,0xbe,
- 0x76,0x85,0xb1,0x17,0x80,0x98,0x44,0x1b,0x90,0x06,0x7f,0x7a,0x48,0x45,0x92,0x16,
- 0x8c,0x0a,0x81,0xe1,0xd4,0x7f,0xfd,0x36,0x7e,0xe8,0x74,0x24,0x1d,0xec,0x29,0xfe,
- 0x59,0xc3,0x11,0x98,0x84,0x60,0x57,0xe3,0xbf,0x8a,0x47,0xe6,0x45,0xd2,0x15,0xdd,
- 0x6a,0x90,0xbe,0x43,0x98,0x70,0xc0,0xbf,0x56,0x5c,0x88,0x76,0xff,0xd2,0xf7,0xa0,
- 0xf4,0xbe,0x3e,0x9a,0x8e,0xe8,0xbe,0xef,0xdb,0xef,0xb1,0x9e,0x4c,0xfe,0x61,0x8f,
- 0xf7,0x0a,0x99,0x1b,0xf7,0x5d,0xe4,0xd4,0xfd,0x1f,0xae,0x1b,0xa9,0xb9,0xdf,0x00,
- 0xe3,0xac,0xef,0xbc,0x74,0x99,0xbe,0x16,0xaf,0x1f,0xf4,0x8d,0xb2,0x79,0x86,0xd5,
- 0xe9,0xe5,0x99,0x33,0x64,0x42,0xfe,0x8d,0xed,0xad,0x17,0x1a,0x22,0x03,0xeb,0x76,
- 0x4a,0xef,0xd2,0x23,0x46,0xb8,0x0f,0x73,0x0b,0x07,0x8e,0x90,0x48,0x1f,0x03,0xe9,
- 0x47,0xf4,0xee,0x13,0xde,0x9d,0x0b,0x2a,0x39,0xc3,0x79,0xbb,0xb4,0x2c,0x81,0x61,
- 0x14,0x24,0x4b,0x34,0x91,0xd4,0x74,0xd1,0x83,0xaa,0x13,0xff,0x62,0xfb,0x57,0x82,
- 0xf1,0xc6,0x3f,0x97,0xe3,0x37,0x9f,0x4a,0x35,0x7e,0x03,0xeb,0xe3,0xce,0x21,0xed,
- 0x7c,0xb3,0xaa,0xf8,0x7b,0x95,0x99,0x28,0x47,0x8e,0x4f,0xc1,0x9a,0xa2,0xa9,0x64,
- 0xb7,0x1f,0xe5,0x18,0x8a,0xde,0x25,0x7b,0x4f,0x56,0xbd,0xb4,0x60,0x53,0xdc,0x89,
- 0x7f,0xc5,0x48,0x2a,0xb6,0x42,0x83,0xeb,0x1c,0x17,0xda,0x88,0x7f,0x78,0x41,0x8a,
- 0x54,0xb3,0xf5,0xf2,0xdc,0x22,0x1e,0x6d,0x68,0x8b,0xeb,0x43,0x4a,0xdd,0x86,0xb5,
- 0x70,0x9d,0x60,0xaf,0x2a,0xc7,0x6f,0xc5,0x0c,0x9c,0xd2,0x52,0x4d,0x3c,0xce,0x49,
- 0xcb,0xeb,0x44,0x27,0xfe,0x75,0x35,0xd9,0xd9,0xc5,0x45,0x96,0x0d,0x40,0x5b,0x43,
- 0x9e,0x95,0xfe,0xaf,0x2a,0xab,0xb6,0x55,0x9e,0x59,0xf3,0x4d,0xf1,0x55,0x79,0x55,
- 0xa2,0x2c,0x1d,0xf8,0xd6,0xd6,0x1f,0x91,0x55,0x89,0xca,0xb7,0x1a,0x91,0x91,0xfe,
- 0x69,0xb3,0x52,0x57,0x16,0xc3,0xe0,0x5d,0x89,0xca,0xd7,0xd5,0x93,0xa2,0xe2,0xd2,
- 0xff,0x4a,0x05,0x65,0x80,0x54,0xef,0x36,0x3c,0x57,0x14,0x3e,0x07,0x68,0x2b,0xd8,
- 0xf0,0x1c,0xfd,0x6a,0xba,0x0a,0xf3,0x0f,0x9f,0x4b,0x16,0x0d,0x2c,0x9c,0x2d,0xad,
- 0xd5,0x9e,0x23,0x75,0x83,0x3e,0x51,0x6a,0xa2,0x67,0x13,0x75,0x98,0xf1,0x62,0xe1,
- 0xaf,0x99,0xe5,0x8e,0xfe,0x57,0x8a,0x5c,0xd4,0xea,0x89,0x8a,0x65,0x5f,0xbf,0xd3,
- 0xea,0xcd,0xfc,0xb3,0xc8,0x45,0x29,0xd4,0x3f,0x87,0x71,0xfc,0xe8,0x95,0x12,0x58,
- 0x94,0x96,0xc6,0xbb,0x2c,0x04,0x8d,0x42,0xb1,0x64,0x6e,0xbb,0xcf,0x2c,0xbf,0x68,
- 0x17,0x5a,0xba,0xf4,0xbf,0x46,0xc4,0x59,0x86,0x2f,0x55,0x7e,0xcc,0x56,0x51,0x0c,
- 0xca,0x78,0x6f,0x60,0xbd,0x9e,0xf1,0x5b,0x02,0x2b,0xb8,0x5b,0x2a,0x80,0xae,0x5a,
- 0x78,0x03,0x14,0xb3,0x72,0xf5,0x32,0x6f,0x42,0x3a,0x86,0xfa,0x5f,0x88,0xd1,0x9c,
- 0xf8,0xd7,0x46,0xf2,0xb4,0x28,0x18,0x18,0xe4,0x4a,0xac,0xaa,0xa8,0x1c,0x58,0x70,
- 0x8f,0xf8,0x43,0x3c,0x44,0xed,0x8f,0xde,0x2b,0xd6,0x11,0xe4,0x3f,0x54,0x5a,0xa4,
- 0xbb,0xc8,0x3a,0x72,0xd3,0x49,0x15,0xe3,0x5f,0x3b,0x09,0x23,0xe0,0x3d,0x45,0x7e,
- 0xc5,0x33,0x31,0x32,0xfa,0x5f,0x72,0x8a,0x2e,0xd1,0xd5,0xfb,0xc5,0xcb,0xf2,0xe3,
- 0xa9,0xca,0x21,0xf5,0x5b,0x5b,0xaf,0xef,0xd8,0x95,0xae,0x4c,0x47,0xef,0x2b,0x9a,
- 0x42,0x7f,0x9e,0x28,0x1b,0xca,0xbb,0x4f,0xbc,0xdf,0x7c,0x7c,0xf8,0xc6,0x61,0x75,
- 0x21,0xfc,0xd5,0xd3,0xed,0xd5,0x7e,0x65,0x71,0xfc,0x55,0x06,0x81,0x17,0x2c,0xce,
- 0xe8,0x7f,0x99,0xa4,0x47,0x5f,0x3a,0x53,0x9d,0x19,0x3f,0x46,0xdb,0x92,0xc1,0x74,
- 0xe7,0x4e,0x71,0x5d,0xc5,0x0e,0x5a,0x35,0x14,0xe8,0xf6,0x78,0xcd,0xce,0x64,0x6c,
- 0xf8,0xc6,0x90,0xf8,0x79,0xd2,0xd9,0x57,0x31,0xbc,0x60,0xa6,0xd8,0xab,0x75,0x29,
- 0xc1,0x16,0xa5,0x04,0xde,0x87,0x8f,0xe0,0x23,0x5c,0x92,0x15,0xff,0x02,0x94,0xe6,
- 0x1b,0x94,0xce,0xd3,0xf7,0xb6,0xd5,0x6f,0xf2,0x0d,0x95,0xcf,0x21,0x1f,0x91,0xfa,
- 0xed,0xde,0xa1,0xb6,0x6b,0xc5,0xf7,0x3a,0x6a,0xb6,0xe6,0xbf,0xd5,0xfa,0xad,0xd8,
- 0x7b,0x03,0x73,0x76,0xfa,0xfe,0x1a,0x19,0xe9,0x3b,0xea,0xd7,0x07,0xd3,0xc5,0x43,
- 0xe0,0xea,0x87,0xa8,0x6f,0xa8,0x2d,0x83,0xbf,0xf4,0x11,0x52,0x2b,0x1e,0xa7,0x4c,
- 0xf6,0x2b,0xa2,0xf8,0x68,0xdb,0x69,0x4b,0x91,0xb9,0x91,0x7b,0x71,0x05,0xcc,0x8b,
- 0x93,0xdd,0xb4,0xf3,0x71,0x29,0xad,0x70,0x07,0xaf,0xcd,0xc1,0x5f,0x7d,0xf4,0x90,
- 0x1e,0x6e,0x62,0xfc,0x6c,0x98,0x9a,0xe8,0xa5,0x5f,0xd2,0x8d,0x7e,0x12,0x96,0xbd,
- 0x1d,0xe0,0x1f,0x9e,0xa4,0x61,0xd1,0xdb,0x6a,0xcb,0x12,0x6d,0x2a,0xac,0x90,0x57,
- 0x9b,0x91,0x7b,0x38,0x89,0x3a,0x8d,0x44,0xbd,0xdf,0xcf,0xe0,0xaf,0xbf,0x26,0x4f,
- 0xe8,0x7e,0x03,0xb9,0x1a,0xa2,0xfd,0xb4,0x4a,0xef,0x78,0x40,0x2c,0x43,0xad,0x28,
- 0x2d,0xb0,0x56,0x2c,0x8f,0x75,0x74,0xf8,0x35,0x8b,0xcf,0x61,0x16,0x51,0x1f,0xf5,
- 0x4c,0xb2,0x69,0x13,0xde,0x20,0xbb,0xcd,0xaa,0x68,0x60,0x43,0x86,0xff,0x70,0xaa,
- 0x02,0x60,0xad,0x41,0x49,0x8a,0x69,0xbd,0x87,0x04,0x15,0xa5,0xfd,0x5a,0x2a,0xc3,
- 0x75,0xc4,0x8e,0xd6,0x35,0xba,0xbc,0x49,0x4b,0xe6,0x06,0x92,0x61,0x0b,0x17,0x24,
- 0x0e,0x6e,0x4b,0x3c,0x61,0xe0,0x75,0x8a,0x06,0x75,0x5b,0x87,0xd7,0xda,0xbf,0x9a,
- 0x64,0xba,0x45,0x4f,0x22,0xa5,0x61,0x1f,0xa0,0xad,0x60,0xbf,0x52,0x24,0xb6,0xd3,
- 0xd5,0xa8,0xad,0x5c,0x54,0x54,0x81,0xf8,0x2b,0x5a,0x5a,0x9c,0xdb,0x47,0xbb,0x66,
- 0x54,0x44,0xa5,0x84,0x7f,0x1b,0xd9,0x22,0x06,0x8d,0x4e,0x8d,0x38,0x24,0xea,0x0e,
- 0xfe,0x5a,0x62,0xf4,0x37,0x87,0x4b,0x30,0xa5,0x30,0x8a,0x69,0x87,0xc1,0x1c,0xf5,
- 0x89,0x86,0x7e,0x12,0x2a,0x69,0xcf,0x11,0xcb,0x8c,0x93,0xcd,0xa1,0x12,0xaf,0x8c,
- 0x53,0xc7,0xf1,0xd7,0x76,0x32,0xc4,0xa6,0xb7,0x30,0xad,0x71,0xd6,0x3b,0x57,0xfc,
- 0x8b,0x57,0x4a,0xae,0x2f,0x3e,0xd3,0xf4,0x8a,0xc6,0x48,0x0e,0x97,0x31,0x92,0x43,
- 0x87,0xed,0xd0,0xf7,0x08,0x1a,0xa1,0x48,0xd3,0xba,0x01,0xe9,0x5e,0xf1,0x3f,0xc4,
- 0xb9,0xbc,0xa4,0xeb,0x2c,0x27,0x90,0x77,0xc5,0xbf,0x98,0x92,0xd7,0xf7,0xdb,0x3e,
- 0x22,0x2f,0x6e,0xaf,0x5f,0x2e,0x9f,0x6c,0x9b,0x45,0x0e,0x75,0xd4,0xff,0x5f,0xde,
- 0x5f,0x4b,0x1f,0x91,0x4b,0xc9,0x9a,0xd8,0xc2,0x5f,0xff,0xf6,0xa3,0xf6,0xd1,0xf6,
- 0xf0,0xd7,0xbc,0x03,0xd2,0x4e,0x72,0x29,0x67,0x2e,0x8a,0x58,0x9d,0xb3,0xaa,0xc6,
- 0x32,0xf9,0x87,0x43,0x22,0xca,0x2e,0x07,0x90,0x82,0x72,0x4d,0x53,0xb0,0xe4,0xe1,
- 0x76,0x58,0xaf,0xed,0xa8,0x41,0x43,0xc5,0x5e,0x74,0x33,0x34,0xa5,0xbd,0x01,0xbc,
- 0x77,0x63,0x16,0x61,0x89,0x6d,0x4c,0x9a,0x39,0x39,0x0e,0x7f,0x31,0xfd,0x2f,0x9e,
- 0x52,0xf8,0xbc,0xd6,0x2a,0x54,0x19,0x1d,0x9a,0x7f,0x2a,0x69,0x95,0x83,0x46,0xb4,
- 0xa4,0xe8,0x79,0xa5,0xcb,0xd0,0x9b,0x15,0xed,0x0e,0xd4,0x1e,0xf2,0x63,0x26,0x61,
- 0xfb,0x38,0xfc,0x75,0x30,0x83,0xbf,0x50,0xd3,0x4d,0xd9,0x28,0x0e,0xa2,0xda,0x32,
- 0x96,0x5d,0x54,0xe8,0x4f,0x78,0xab,0x30,0xda,0xf5,0x06,0xdd,0x1b,0xf3,0x47,0x95,
- 0x8d,0x4b,0x07,0xe9,0x6e,0x6d,0x5a,0x73,0x34,0x51,0x04,0x88,0x4c,0xf8,0x7b,0x43,
- 0xda,0xd0,0xc0,0x99,0x58,0x54,0x57,0xfd,0xd7,0x1b,0xc6,0x21,0x33,0x1c,0x85,0x57,
- 0xca,0x9b,0x0d,0x87,0x9a,0x23,0xd1,0xb5,0x89,0xce,0x1b,0xc8,0x21,0x23,0x72,0x6f,
- 0x70,0xd3,0x23,0xa8,0xa4,0x1c,0x5e,0x19,0x4c,0x48,0x6f,0x28,0xa3,0x66,0x38,0xe6,
- 0xbd,0x4a,0xfa,0x09,0x81,0x99,0xbf,0x67,0x91,0x8b,0x49,0xde,0xe6,0x3f,0x24,0x3f,
- 0x21,0x67,0x3b,0xa0,0x65,0x3d,0x76,0xb5,0x33,0x15,0x86,0x37,0xb7,0x8f,0xfa,0xa1,
- 0x05,0xe3,0x68,0xa3,0x64,0x3f,0x76,0x31,0x45,0xb0,0xe5,0x48,0x7b,0x18,0x1d,0xed,
- 0x88,0x7c,0x9d,0xe7,0x1f,0x72,0xfc,0xe5,0xc4,0xbf,0xb6,0x88,0xfd,0xc6,0x07,0x45,
- 0x9c,0x32,0xb4,0x29,0x22,0x7a,0xd7,0x16,0x97,0xc9,0x18,0xed,0xf2,0xb5,0xb7,0x61,
- 0xd9,0x57,0x44,0x09,0xb6,0x4b,0xa7,0xe1,0xfe,0x09,0x0b,0x48,0x4d,0x4f,0xfa,0xc9,
- 0x14,0x5e,0x11,0x86,0xcc,0xa5,0xbe,0x07,0xda,0x6c,0xfc,0x25,0xd7,0xd2,0x87,0x3b,
- 0xca,0x93,0x18,0xe4,0x02,0xc7,0xa3,0x32,0xa9,0xbc,0x2d,0xfd,0x15,0xac,0xe0,0x9c,
- 0x94,0x3a,0xe4,0xb9,0x85,0x3c,0xfc,0x7c,0x75,0x52,0x49,0x33,0xb4,0xa5,0xd3,0x82,
- 0x37,0xc4,0xf3,0xda,0xc3,0x1d,0xd5,0x29,0x58,0xb8,0x39,0xca,0x7e,0xa3,0x7a,0xbb,
- 0xea,0xd2,0xff,0x5a,0x42,0xa9,0x09,0x8b,0x1b,0x12,0xdf,0x0b,0xb4,0x6e,0x08,0x22,
- 0xe1,0x76,0x81,0xd1,0x46,0xaa,0x7e,0xa9,0xce,0x05,0xdc,0xd4,0x99,0xa8,0x1a,0x50,
- 0xb4,0xdc,0xa3,0xe0,0xb7,0xe8,0xbd,0x0b,0x72,0x44,0x33,0xd4,0x6a,0x06,0x63,0x9e,
- 0x90,0x98,0x6f,0xee,0x30,0x61,0xbd,0x66,0xdb,0xf8,0x4b,0x17,0x88,0x42,0x89,0xae,
- 0x61,0x36,0x9d,0x86,0x25,0xb7,0xca,0x70,0xd1,0x5d,0x00,0x07,0x6e,0x34,0x3b,0x57,
- 0xfa,0xff,0x0c,0xb3,0x11,0x0e,0x2a,0xb1,0x22,0x8e,0x0b,0x3c,0x31,0xf1,0x97,0xfe,
- 0x07,0x48,0xf5,0x52,0xcf,0x08,0xd3,0x17,0x76,0xe3,0xaf,0x80,0x72,0x35,0xe9,0xa3,
- 0x65,0x7a,0x70,0xa5,0x78,0x99,0x51,0x6a,0x04,0x57,0x96,0x23,0x97,0xe0,0x5c,0x1d,
- 0xbc,0xaf,0x29,0xe4,0x41,0xa4,0x9d,0x5f,0xcc,0xf0,0x57,0xd7,0x69,0x5f,0xb4,0xf1,
- 0x97,0xe4,0x79,0x3a,0x37,0xf6,0x85,0x95,0xea,0x94,0x71,0xf8,0xcb,0xc2,0xb9,0xa9,
- 0xb2,0x33,0x5e,0xf0,0xf9,0x29,0xec,0x83,0x58,0x0c,0x8e,0x69,0x6c,0xd2,0x90,0xc8,
- 0xd8,0x1b,0x58,0x1a,0x1b,0x8d,0x98,0xeb,0x68,0x79,0x1f,0xe3,0x4b,0xc9,0x47,0x82,
- 0x08,0x4b,0x00,0xc5,0xa9,0xff,0xfa,0x80,0x1c,0x6a,0xbf,0x39,0x16,0xdc,0x2d,0xbd,
- 0x39,0x70,0x65,0x63,0x64,0x5b,0xb0,0x1f,0xd9,0xb0,0x13,0x73,0x07,0xbd,0x23,0xea,
- 0x74,0xe3,0xb5,0xd6,0x19,0x31,0xf8,0x3e,0xfb,0x95,0x0b,0x9b,0x6a,0xd3,0xbe,0x43,
- 0xf0,0xc4,0xfd,0x1e,0x5e,0x9e,0x3c,0x93,0x87,0xc7,0xbf,0x1c,0xfd,0xe5,0x9d,0xf4,
- 0xa1,0xd6,0x72,0x51,0x59,0x29,0xfe,0x92,0x02,0x14,0x5a,0xa9,0x18,0xd2,0x5d,0x68,
- 0x50,0xcf,0x80,0x58,0xd4,0xbe,0x9a,0x6c,0xa1,0x4a,0x4c,0x9c,0x2c,0x1f,0x48,0x96,
- 0x0d,0xaa,0xf3,0xfc,0x27,0x68,0x17,0x29,0xab,0x50,0xef,0x11,0x2d,0xa2,0x92,0x7b,
- 0x1d,0xfc,0x65,0x6c,0x54,0xda,0xbd,0x65,0x24,0xef,0x1e,0xf1,0xa4,0x06,0x53,0x87,
- 0xf4,0x26,0x77,0x96,0xec,0x12,0xaa,0xcd,0x3c,0x64,0x3b,0x5c,0xa5,0xdd,0x70,0x30,
- 0x6f,0x80,0x05,0x1c,0x61,0xe6,0x71,0x1f,0x7c,0x9a,0x94,0x2d,0xc4,0x93,0x49,0xcd,
- 0x02,0xbc,0xa6,0x5d,0xff,0xd5,0x47,0x3a,0x74,0xdd,0x9f,0x77,0x0b,0x86,0xb4,0xcc,
- 0x2a,0xed,0xb6,0xdd,0x22,0x43,0xe2,0x29,0xb5,0xa4,0x48,0x30,0xda,0x66,0x54,0x6c,
- 0xcf,0xcb,0x11,0xf3,0xa3,0x3b,0xee,0xd6,0xcd,0x05,0x3e,0xf1,0x85,0x66,0x78,0x72,
- 0x49,0xc6,0x9f,0x9f,0x99,0xd1,0x5f,0xde,0xbe,0xe2,0xb0,0x11,0x4e,0x7c,0xbe,0xa7,
- 0xfc,0x6d,0x24,0x1b,0x7f,0xd9,0xdb,0x23,0x7d,0x9d,0x5e,0x48,0x46,0x06,0xf2,0xeb,
- 0xa4,0x6a,0xf1,0x88,0xfc,0x4f,0xe9,0x6f,0x94,0x48,0xff,0x2a,0xff,0x61,0x5e,0xad,
- 0xb9,0x08,0xee,0x79,0x78,0x0d,0x86,0x87,0x7d,0xa9,0xc6,0xa7,0xf8,0x11,0x6e,0x4f,
- 0x26,0xff,0xf0,0x2d,0x72,0x41,0xda,0x63,0x16,0xa4,0xda,0x06,0x79,0x79,0xc2,0xce,
- 0x47,0xce,0xe8,0x17,0xbc,0x91,0xa6,0x29,0xc8,0xd4,0xf7,0x76,0x43,0xad,0x59,0x90,
- 0x28,0x66,0x95,0x26,0xcf,0xc3,0x8e,0x36,0x88,0xcf,0xe9,0x09,0x9f,0x45,0x56,0x4f,
- 0xd7,0xed,0x6b,0x73,0xf0,0x17,0x8a,0xb6,0xd4,0x50,0xdf,0x70,0xf9,0x08,0x39,0xee,
- 0xa9,0x7f,0xce,0x6b,0x96,0xdf,0x87,0xb2,0xcb,0x07,0x17,0x8e,0xb4,0xdd,0x1f,0xbb,
- 0xbc,0xa5,0x26,0xe6,0x7d,0xb9,0xad,0x4e,0xbf,0x42,0x6e,0x3e,0xa8,0x1e,0x92,0x66,
- 0x92,0x2b,0x4a,0x4d,0xc3,0xc2,0xe1,0xc6,0xf3,0xf4,0x38,0xad,0x19,0x5c,0x38,0x9a,
- 0xe1,0xdf,0xf8,0x7a,0x60,0x8f,0xe9,0xef,0x56,0x53,0xb9,0xef,0xea,0x9d,0xad,0x55,
- 0xc3,0xc1,0xb8,0xf4,0x77,0x7a,0x27,0xb9,0xff,0x4e,0xef,0x1e,0xb1,0x5a,0xdb,0x63,
- 0xf8,0xd3,0xca,0x86,0x46,0xc4,0x68,0xfe,0xde,0x05,0x25,0xf1,0x69,0xe0,0xd7,0xcd,
- 0x5c,0xfe,0x50,0x0a,0x93,0xdf,0x0c,0x7d,0x00,0x50,0x80,0xcd,0x7f,0x28,0x4f,0x57,
- 0xf6,0x3c,0xef,0x4f,0x2f,0x48,0xdd,0x71,0xf4,0x8b,0x9d,0xda,0xf4,0xbe,0xd2,0x9e,
- 0xbf,0x6c,0x2a,0xe9,0x94,0x83,0xcf,0x29,0x5b,0xc5,0x15,0x65,0x5d,0x44,0xbf,0x5d,
- 0x49,0x34,0x20,0x46,0x9b,0x66,0xc2,0x5b,0x74,0x1a,0xe0,0x82,0x69,0x4b,0xf2,0x50,
- 0x19,0x6a,0x4d,0xc0,0x8f,0x8c,0x52,0x36,0xfe,0x6a,0x52,0xc8,0x8e,0x00,0x78,0x0e,
- 0xe1,0x78,0x5f,0x2b,0xb8,0x97,0x03,0x58,0x6f,0x2e,0xb4,0x19,0x01,0x73,0x13,0x26,
- 0x6e,0x75,0x01,0x52,0x50,0x0a,0x1b,0x30,0x17,0x0b,0xf3,0x45,0xfd,0x32,0xd9,0xbd,
- 0x61,0xda,0xbc,0x3c,0xa4,0x4c,0xb7,0xa4,0xdc,0x6c,0xfc,0x95,0x17,0x23,0x3d,0xb1,
- 0xad,0xc4,0xd7,0x2d,0x0e,0xf9,0x3b,0xc1,0xe5,0x9b,0x1c,0x2a,0x5e,0x06,0xfe,0x7c,
- 0xd5,0x40,0x30,0x29,0x2d,0x94,0x2f,0x60,0x58,0x1b,0xf9,0x18,0xf7,0x2a,0xb3,0xd0,
- 0x1f,0x0b,0x2a,0x28,0x28,0x5f,0x99,0xca,0xe1,0xa9,0x89,0x6b,0x5d,0xf9,0x87,0xc3,
- 0xe4,0x62,0xa0,0x9e,0x70,0x48,0x25,0xd6,0x0f,0x14,0x0c,0x0b,0x2c,0xc9,0x10,0x79,
- 0x26,0x2f,0x91,0x2b,0x41,0x40,0x5b,0x2f,0x97,0x33,0xef,0x7d,0x80,0xe5,0x1f,0x5e,
- 0xaa,0xa8,0xbf,0x95,0x57,0xac,0x88,0x6e,0xfc,0x45,0x9e,0x9f,0x27,0xb5,0x18,0xa7,
- 0xb4,0x7f,0x96,0xf3,0x7b,0x99,0x71,0xb3,0x9c,0xdf,0x07,0x5b,0xc0,0xa9,0xe6,0x9b,
- 0xb1,0xe5,0x6e,0xde,0xe2,0x18,0x26,0x8e,0x31,0x6e,0xf6,0xe6,0x3f,0x2f,0x59,0x63,
- 0xcc,0x19,0xfc,0x77,0x3d,0xdf,0x94,0x73,0xb7,0x70,0x97,0xf1,0x15,0xed,0xaa,0x3e,
- 0xc7,0x10,0xee,0x16,0x16,0xba,0x5b,0xb4,0x4c,0x97,0x3c,0x43,0xf0,0xa2,0xf1,0x82,
- 0xdd,0x62,0xce,0x60,0xbf,0x8b,0x50,0x51,0xd0,0x69,0x54,0x2f,0x52,0xe4,0xb8,0x6d,
- 0x3c,0x08,0xc6,0x62,0xde,0x52,0xc6,0x5a,0x72,0x0e,0x62,0x57,0x0c,0x5b,0xe0,0xf5,
- 0x7a,0x57,0xac,0xa8,0x94,0x8d,0x61,0x2d,0x54,0xe7,0xdf,0x87,0x12,0x21,0x46,0x16,
- 0x93,0x2f,0x93,0x1c,0xca,0x8c,0xab,0x49,0x4e,0xbc,0x10,0x8c,0xd8,0xd5,0x99,0x96,
- 0x07,0xda,0x85,0x25,0xbc,0x8b,0x96,0xb5,0x28,0xdc,0xb0,0x07,0xdb,0xd7,0x79,0x3e,
- 0x9a,0x73,0x8f,0x70,0x17,0xfd,0x33,0xfd,0xaa,0x7e,0x66,0x7c,0x05,0x8c,0x5b,0xef,
- 0x29,0x5c,0x68,0x7e,0x45,0x2f,0xb1,0x5b,0xd0,0x68,0x05,0xa3,0x02,0xba,0xc2,0xc2,
- 0x5d,0xdb,0xbe,0xc2,0x06,0x17,0xde,0x95,0xf8,0x8a,0x5e,0x68,0x16,0xf2,0xdf,0xf5,
- 0xbc,0x01,0x1b,0x50,0x29,0xc9,0x25,0x02,0x75,0x19,0x9a,0x42,0x72,0x05,0xd2,0xce,
- 0x5b,0x0a,0x85,0x38,0x1a,0x06,0x76,0xc1,0xd3,0x0e,0x2d,0x9a,0xc0,0xba,0x74,0x6c,
- 0xb1,0xe7,0x39,0x2a,0xfb,0x05,0x2c,0x45,0xd0,0x3a,0x98,0xd1,0xc0,0x8d,0x52,0x30,
- 0x0a,0xc1,0x68,0x75,0x5a,0x94,0x74,0x43,0x08,0x8c,0xa5,0x38,0x26,0xa4,0xad,0xe5,
- 0x83,0x2b,0x34,0xe7,0x3a,0xb7,0xe7,0x34,0xb4,0x36,0x27,0x4b,0x02,0x57,0x79,0x98,
- 0x71,0x27,0x37,0xee,0x4c,0x83,0xf1,0x05,0xde,0x32,0xfb,0xaa,0xdb,0x73,0x1a,0xed,
- 0xae,0x3b,0x32,0x63,0x9a,0xd3,0xd0,0x45,0xec,0xf5,0xf2,0x0a,0x5f,0x22,0x77,0x9a,
- 0x57,0x85,0x72,0x16,0x66,0x8c,0xaf,0x18,0x60,0xb4,0xe4,0xdc,0x05,0x2d,0x7f,0x8e,
- 0x06,0xb4,0x50,0xd6,0xf2,0x3f,0x84,0xaf,0x10,0x77,0x57,0x28,0xc7,0x70,0xd6,0x0b,
- 0x1e,0x34,0x8d,0xc8,0x44,0xc8,0x18,0xb2,0x65,0xc8,0xbc,0x45,0xe3,0x5d,0x46,0x66,
- 0x8c,0xd3,0xa2,0x09,0x82,0xbd,0x5e,0x31,0x80,0x62,0x78,0x5b,0x28,0xba,0x6d,0x94,
- 0x91,0xb1,0x2d,0xd9,0x86,0xc6,0x0d,0x83,0xb5,0x08,0x33,0xec,0xf5,0xca,0x89,0x09,
- 0x78,0xff,0x5c,0x45,0x33,0xc6,0x32,0x34,0x8c,0xab,0x12,0xd0,0xf2,0x17,0x68,0xb8,
- 0x5a,0xb2,0xbb,0x60,0xb0,0x35,0xcf,0x7d,0x86,0x14,0x23,0x27,0x59,0x41,0xff,0xc7,
- 0x1b,0xa6,0x84,0x77,0x1d,0x6b,0xd1,0xc9,0xa9,0xec,0x31,0xf6,0x7a,0x35,0xc8,0xa1,
- 0x56,0xaf,0xde,0xa8,0x68,0x07,0x27,0x30,0x74,0x66,0x14,0xc6,0xe5,0x10,0xe5,0x2d,
- 0x25,0x7a,0x6b,0x69,0xd6,0x18,0xfb,0xf9,0x6a,0x25,0xf0,0xa2,0xf6,0x62,0xe5,0x9b,
- 0xf9,0xf1,0x06,0xcd,0xb4,0xe8,0x30,0x79,0x59,0x63,0xec,0xf5,0x12,0x85,0x10,0x5d,
- 0xa8,0x17,0x2b,0xf2,0xc1,0x09,0x0c,0xfd,0xe3,0xbb,0x2c,0xc3,0xbe,0xce,0xf3,0x0d,
- 0x39,0xb1,0xd6,0xc5,0xfa,0x97,0x95,0xab,0xe2,0xff,0x09,0xa3,0x6d,0x5c,0x0b,0xb5,
- 0xd7,0xab,0xe1,0x8f,0xac,0x30,0x37,0x48,0xa6,0x85,0xe2,0xef,0xca,0x1a,0xe3,0x9a,
- 0xe7,0x18,0x4c,0xdd,0x7c,0x9c,0x4c,0xcb,0xd8,0x20,0x2f,0x6b,0xbd,0x86,0x1b,0xac,
- 0x25,0x0a,0x5d,0xac,0x25,0x5a,0xf8,0x08,0xb4,0x30,0x63,0x83,0xdd,0xe2,0x5c,0x27,
- 0x96,0xb3,0x58,0xf8,0x32,0xf9,0x73,0x7a,0xd5,0x9f,0x60,0xdc,0x4a,0xaf,0x32,0xac,
- 0xf7,0x06,0xcd,0x15,0xe6,0xd1,0xe6,0x58,0x49,0x69,0x4e,0x96,0x71,0x27,0x1a,0xf3,
- 0xed,0x96,0xf9,0xc4,0xe9,0xfa,0xe2,0x98,0xc1,0x24,0xb3,0x5e,0x04,0xde,0x2a,0x9a,
- 0x22,0x3b,0x46,0x91,0x20,0x53,0x01,0x0c,0x52,0xc4,0x5b,0xa2,0x44,0x84,0x96,0x79,
- 0x60,0xc8,0x45,0xb0,0xd0,0xdc,0xb0,0x5b,0xec,0xeb,0x3c,0x3f,0x5f,0xfa,0x22,0x3d,
- 0x11,0xbb,0xa9,0x34,0x3f,0xcb,0x68,0x07,0x43,0x99,0x2f,0x15,0xb2,0x16,0x05,0x5b,
- 0xee,0x64,0x5d,0x22,0x6f,0xf1,0x3a,0x83,0x0d,0x7b,0xbd,0xe6,0xe7,0xdc,0xdd,0x7a,
- 0x57,0xec,0x73,0xa5,0xb8,0x05,0x80,0xf1,0x95,0xd2,0xab,0x0e,0xe6,0xb4,0x70,0xe3,
- 0x85,0x9c,0x25,0xb6,0x71,0x77,0xeb,0x66,0xde,0x05,0x63,0xf4,0xaf,0x94,0x96,0xbc,
- 0x60,0x8f,0xb1,0xf7,0x9d,0x5b,0xe7,0x4b,0x77,0xd3,0x53,0xb1,0x9b,0x4b,0xf3,0x5f,
- 0xc8,0x18,0x2d,0x68,0x28,0x76,0x8b,0xf2,0x19,0xa7,0xeb,0xa0,0x65,0xe4,0x39,0x2d,
- 0x66,0xa1,0x7d,0x1d,0xfb,0x6b,0xbc,0xf0,0x27,0x19,0xf6,0x7b,0x9e,0x8c,0xdf,0xbf,
- 0xfe,0xb7,0x0c,0x4a,0xac,0x4f,0xae,0xb0,0x84,0xc2,0x6e,0x55,0x9a,0xf3,0xe0,0xff,
- 0x86,0x21,0x38,0x2d,0xf6,0x75,0x6e,0x35,0x72,0x5a,0x84,0xbb,0xc8,0x57,0xc8,0x55,
- 0xe6,0x78,0x43,0xe6,0x46,0xce,0x04,0x5d,0x8e,0x61,0xfd,0xae,0x5b,0x1b,0x48,0x8c,
- 0xc2,0x4e,0xa4,0xe0,0x26,0xf5,0x31,0x46,0xa1,0xd3,0xd2,0x36,0x6e,0x0c,0xb5,0xe7,
- 0xb9,0x01,0x5e,0x56,0x8a,0xde,0xa0,0x68,0xf1,0x3f,0xc9,0xc8,0x5c,0x27,0xc7,0x68,
- 0x6d,0xd6,0xef,0x54,0xae,0x12,0x1d,0x43,0x1e,0xd7,0x62,0x1b,0xd2,0xb8,0x16,0x62,
- 0xaf,0x97,0x24,0x34,0x9b,0x77,0x86,0xae,0xf2,0xe6,0x34,0x66,0x0c,0xcd,0x34,0xc6,
- 0xb4,0x38,0x06,0x01,0xa3,0x90,0xb7,0x34,0x61,0x8b,0x61,0xaf,0x97,0x42,0x1a,0x88,
- 0x46,0x65,0x5d,0x70,0x19,0x45,0xe8,0x80,0x66,0xb5,0x38,0x86,0x08,0x86,0xc0,0x5b,
- 0x64,0x6c,0xb1,0x2f,0x73,0x6b,0x83,0x48,0x28,0xd5,0x75,0x45,0x11,0x33,0x86,0x36,
- 0xae,0x25,0xcb,0x28,0xe3,0x46,0x3b,0xb6,0xd8,0xbf,0xeb,0xd6,0x89,0xf6,0xaf,0x18,
- 0x89,0x8e,0x6d,0xb1,0x0d,0x7d,0x6c,0x8b,0x35,0xcf,0xcf,0xff,0x67,0xf6,0xaf,0x3f,
- 0x66,0xd8,0x3f,0x8c,0xc8,0x21,0xc1,0x4b,0x1a,0x89,0x66,0xfe,0x69,0x86,0x73,0x9d,
- 0x71,0xbb,0xd5,0x00,0x18,0xf9,0x68,0xbc,0x40,0x66,0x12,0xaf,0x21,0x19,0xd0,0x72,
- 0x13,0xb6,0x68,0xb6,0xd1,0x4c,0x4e,0xe0,0x98,0x18,0xfb,0x2b,0xeb,0x93,0x23,0xcc,
- 0x30,0x16,0x36,0x17,0x97,0xc8,0xcf,0x4f,0x6c,0xb4,0x4c,0xd0,0x35,0x39,0xd3,0xe2,
- 0x5c,0xa7,0x3c,0x67,0x79,0xef,0x5f,0x86,0xbe,0xbc,0xf6,0xaa,0xc7,0xc6,0x19,0xa7,
- 0xb9,0xd1,0x61,0xb7,0x6c,0x06,0xe3,0xc6,0xd6,0xec,0x31,0x99,0xf9,0x61,0x5b,0xad,
- 0x48,0xf8,0xde,0x84,0x46,0x02,0x8c,0x3c,0xde,0x52,0x41,0x14,0x43,0xc4,0xdf,0x35,
- 0xd5,0xc8,0xe3,0x5d,0x15,0xf0,0xbb,0xc4,0x66,0xb2,0x11,0xc7,0x18,0x6c,0x8c,0x7d,
- 0x1f,0x36,0x2d,0x2d,0x2c,0x6d,0x9f,0x5f,0x56,0xd8,0x31,0xde,0x90,0xc1,0xa0,0xf3,
- 0xcb,0xb4,0xfe,0xa6,0xa5,0x02,0xb4,0xe8,0x85,0xab,0x9b,0xfc,0x82,0x17,0x0d,0xbb,
- 0xab,0x30,0xf3,0x7d,0x6e,0x6d,0x2e,0xbc,0x53,0xfe,0x73,0xe1,0x2a,0x23,0xcb,0x20,
- 0x7f,0x2e,0x94,0x18,0x39,0xac,0x85,0x94,0x40,0x8b,0x00,0x2d,0x1a,0x74,0x15,0x16,
- 0x36,0x41,0xcb,0x55,0xf3,0x72,0xd8,0x18,0x72,0x55,0xe6,0xb9,0x28,0x6b,0x50,0x9a,
- 0xe3,0x25,0xfa,0x03,0x19,0x43,0xc0,0xe7,0x98,0xb7,0x10,0xbb,0x85,0x34,0x53,0x7b,
- 0x0c,0x18,0x39,0x38,0x86,0xb5,0x38,0x5f,0xc7,0x23,0x88,0xd4,0x48,0x6a,0x01,0xd9,
- 0x6d,0x98,0xe3,0x5a,0x3e,0xce,0x70,0xae,0xe3,0x95,0xbe,0x44,0x4e,0x98,0x37,0x85,
- 0xf2,0x17,0xfe,0x49,0x46,0xe6,0x77,0x39,0x70,0x60,0x8c,0x51,0x31,0xce,0xd0,0xaf,
- 0x3a,0x34,0x6e,0x70,0xe6,0xfe,0x29,0x8d,0xbe,0x50,0x34,0xa3,0x7d,0xed,0x92,0x8c,
- 0x41,0x8c,0x83,0x45,0x21,0xd9,0xbb,0x44,0x52,0xa2,0x7d,0xda,0x8c,0x76,0xaf,0x50,
- 0xae,0x19,0x26,0xb6,0x94,0x49,0xc4,0xe8,0x43,0x43,0x90,0x48,0xf4,0xa0,0x16,0x92,
- 0xd7,0x96,0x39,0xbf,0xab,0xfe,0xca,0xa2,0x2b,0xff,0x76,0xe5,0xdc,0x95,0x4b,0x7f,
- 0x9a,0x41,0xfe,0xbb,0x3f,0xc1,0xdf,0xa8,0xb3,0x0e,0xbe,0x98,0xda,0xb1,0x22,0x63,
- 0xbc,0xb6,0x60,0xd6,0xc1,0xd7,0xce,0xed,0x58,0x51,0x7f,0x41,0xbd,0xf9,0xdf,0xde,
- 0x4d,0xed,0x3a,0x13,0x7c,0x6d,0xd1,0x95,0x97,0x5f,0x3b,0x77,0xe5,0x4c,0xf0,0x37,
- 0xbe,0x67,0x0e,0xbe,0xc8,0xbe,0xcf,0x82,0x59,0xcf,0x5d,0x39,0xb7,0xeb,0x8c,0x73,
- 0x9d,0x9a,0xba,0x85,0xc7,0x8b,0x6b,0xfa,0x8e,0x9e,0xcd,0x18,0xf5,0x60,0xd4,0x9f,
- 0x3b,0x7a,0xb6,0xfe,0xe2,0xc2,0xe3,0xff,0xf6,0x61,0xdf,0x71,0x68,0x81,0x5f,0x51,
- 0x7f,0xee,0x0a,0x8c,0x59,0x04,0x63,0xd8,0x75,0x60,0xcc,0x95,0x73,0xc7,0xcf,0x3a,
- 0xd7,0x99,0x73,0xff,0x17,0x5e,0x7b,0x64,0xd7,0xe0,0xbb,0xa3,0x19,0x63,0x4a,0xf4,
- 0x17,0x60,0x3c,0x64,0xb7,0x3c,0x74,0xda,0xe9,0x2a,0x2f,0xfd,0xc2,0xab,0xc5,0x5d,
- 0x7c,0xf0,0x2f,0x58,0x4b,0xe6,0x87,0x49,0x77,0x93,0xc9,0xe4,0x86,0x92,0xbc,0xe7,
- 0x49,0x8b,0xb9,0xb9,0x79,0x92,0x17,0x8d,0x79,0x9b,0xb5,0xcf,0xc9,0xf9,0xcf,0x8b,
- 0x2d,0xc6,0xe6,0xc2,0x1b,0xe4,0x42,0x68,0x01,0xbc,0x7c,0xb5,0x9c,0xd7,0x0b,0xc6,
- 0x64,0xe8,0xca,0xeb,0x95,0xa1,0x8b,0xfc,0xad,0x7c,0x8d,0xb3,0xee,0x72,0xce,0x8c,
- 0x56,0x44,0xbe,0x39,0x36,0x28,0xfe,0xf3,0xbe,0xdc,0xbb,0x85,0x53,0xc6,0x3f,0x6b,
- 0x77,0xb6,0x0b,0x77,0xe7,0x9c,0x32,0xfe,0x4c,0xcb,0xc7,0xae,0xa8,0xf1,0x35,0xe8,
- 0x62,0x63,0xfe,0xd9,0x86,0xd2,0x8d,0x5a,0xe6,0x7d,0x28,0x0a,0x31,0x1a,0x4d,0xa2,
- 0xe7,0x00,0x5e,0x5c,0x94,0x00,0x16,0xce,0x02,0xce,0x68,0x94,0xb0,0x96,0x64,0xc6,
- 0xcd,0xb0,0xc7,0x88,0x4a,0x8e,0x99,0xf9,0x61,0x4b,0x00,0x45,0xe6,0x96,0x0a,0xf1,
- 0x92,0x25,0x00,0x39,0xe7,0x13,0xa1,0x5d,0x68,0x19,0x83,0x58,0xdb,0x65,0x34,0xae,
- 0x82,0x16,0x39,0x26,0x64,0xba,0xc4,0x49,0xa4,0x95,0xda,0x57,0x51,0x9a,0xee,0x29,
- 0x9c,0xdc,0xfe,0xb9,0x90,0xdc,0x2f,0xdf,0x23,0x4c,0xa6,0xb7,0xea,0x85,0xdc,0xf8,
- 0x9c,0x5e,0x78,0x98,0xdc,0x61,0x19,0xd0,0x52,0x62,0x7e,0xce,0xe9,0x0a,0x70,0xa3,
- 0x7d,0x92,0x2e,0xb8,0xbe,0xcf,0x52,0xf6,0x8f,0x16,0xd2,0xf1,0xc0,0x59,0x76,0x5a,
- 0x0c,0x6e,0x10,0x12,0x93,0x4b,0xe1,0xc5,0x68,0x8d,0x99,0x4f,0x32,0xef,0x31,0x45,
- 0xae,0x40,0xe4,0x6b,0x68,0x09,0xf9,0x06,0x21,0x8f,0x34,0xb4,0x68,0x1b,0x00,0x0b,
- 0x83,0xa1,0x43,0x4b,0x05,0x47,0xd0,0x09,0x70,0x8a,0x59,0x8b,0x26,0xcb,0x60,0xcc,
- 0x8f,0x41,0x0b,0x8c,0xa1,0x0d,0x31,0xcd,0xb9,0xce,0x74,0x39,0x4a,0x8b,0xf4,0xa6,
- 0x4d,0x85,0x31,0x72,0x7b,0x6f,0x91,0x2e,0x3f,0x55,0x58,0x4e,0x16,0x40,0x8b,0xbc,
- 0xbd,0xd0,0x2f,0x47,0xcd,0xa2,0x2d,0x4d,0xdb,0x05,0xbf,0x76,0x7b,0x6b,0x51,0x4a,
- 0x7e,0xea,0x8b,0x7e,0x82,0x83,0x4b,0xb6,0x17,0x96,0xcb,0x0b,0x5a,0x8b,0x92,0x4d,
- 0xdb,0x0b,0xed,0x6f,0x43,0xf3,0xc9,0x97,0x48,0x89,0x99,0x13,0x22,0x05,0xe4,0x4b,
- 0x54,0x46,0x63,0x21,0x29,0xa6,0xc4,0x2c,0x0c,0x09,0x0b,0x61,0x13,0x83,0x96,0x99,
- 0x60,0xc0,0x18,0x22,0x68,0x64,0xa1,0x3d,0xd8,0x0b,0x63,0xd0,0x10,0xf8,0xb1,0x16,
- 0x51,0x60,0x9e,0x9a,0xe0,0x97,0xca,0x2d,0x64,0x13,0xf9,0x6b,0x92,0xd3,0x2a,0x2f,
- 0x36,0x9a,0xc9,0x0c,0x98,0x09,0x83,0xcc,0x83,0x9f,0x41,0xf0,0x3f,0x58,0xa2,0x79,
- 0x72,0xe1,0xbc,0x79,0x04,0xc0,0x25,0x4e,0x09,0xe2,0x69,0x59,0x23,0x85,0x00,0xac,
- 0x05,0x7e,0x5c,0x07,0xd7,0x31,0xd0,0x75,0x20,0xba,0x8e,0xd3,0x47,0xda,0x91,0xd5,
- 0x00,0x13,0x2a,0xa9,0x80,0xa8,0x39,0x17,0x5b,0x10,0x86,0xe3,0x06,0x43,0xcb,0x74,
- 0x85,0xed,0x34,0x82,0x1f,0xf7,0xa7,0x90,0xb5,0x51,0x39,0xd7,0x81,0x5b,0x62,0x13,
- 0xfc,0x33,0x3a,0x15,0xf1,0xde,0xf8,0x1b,0xf8,0xf7,0x72,0x63,0xcc,0x2b,0x2a,0x44,
- 0xff,0x86,0x2f,0x8a,0xc8,0x6f,0x9b,0x42,0xea,0x89,0x89,0x9b,0xd8,0x18,0x76,0x23,
- 0x61,0x17,0xbf,0x8e,0x26,0x18,0x22,0xae,0xfb,0x34,0x92,0xd7,0x01,0x4b,0xb9,0x89,
- 0xce,0x27,0x79,0x70,0x1d,0xb8,0x72,0x2e,0x18,0x62,0x8c,0x75,0x5d,0xc3,0xba,0xb0,
- 0x05,0xcf,0x37,0xe0,0xa6,0x25,0xd7,0x50,0x05,0x5b,0xfc,0x24,0xcf,0xe2,0xb9,0x35,
- 0x6e,0xb5,0xf1,0xb2,0x01,0x10,0xf8,0x01,0x17,0x5e,0x9e,0x07,0x06,0x09,0xd1,0xb5,
- 0x56,0xcb,0x03,0xde,0x2d,0x5f,0xe3,0x5d,0xd8,0x52,0x7a,0x30,0x17,0xc7,0x34,0x28,
- 0x85,0x94,0xfb,0x51,0x06,0xb1,0xfc,0x0d,0x3d,0xe3,0x6f,0xf4,0xa3,0x41,0x99,0x11,
- 0x16,0xc6,0x20,0x68,0x98,0x7a,0x7c,0x39,0xf3,0x31,0x24,0xb3,0x2f,0xe3,0x14,0x86,
- 0x7a,0xe1,0x05,0xee,0x25,0xcf,0x21,0x48,0x0f,0x49,0x0a,0x39,0x82,0xdf,0x27,0x85,
- 0x06,0xd6,0x18,0xeb,0x92,0x62,0x34,0xca,0x1a,0xef,0x7a,0x0e,0x25,0x64,0x42,0x8d,
- 0xd8,0x85,0x88,0x1e,0xf0,0xa9,0x69,0xff,0x2e,0x98,0xe7,0x5e,0x78,0x3c,0xbd,0x39,
- 0x6d,0x88,0x46,0x53,0x57,0x03,0x28,0x96,0x5b,0x5a,0x17,0x83,0x51,0xd8,0x46,0x74,
- 0xec,0x02,0xf7,0x1b,0xd0,0x71,0x69,0xe8,0x73,0xd0,0x02,0x83,0x17,0x87,0x00,0xba,
- 0xb6,0x01,0x6e,0x62,0x60,0xd6,0xfe,0x5d,0x02,0xe2,0x65,0xbc,0x72,0x61,0x5c,0x0b,
- 0x01,0x04,0x96,0x10,0x0b,0xa3,0xaf,0x3e,0x1f,0x0c,0xd9,0x4f,0x27,0x73,0x74,0x8c,
- 0x5d,0xb9,0x68,0x84,0xa9,0x97,0x8f,0x01,0xbc,0xec,0xfa,0x5d,0xcd,0x42,0x83,0xbc,
- 0x14,0x66,0x6c,0x3e,0xba,0xe8,0xa1,0xd6,0xd2,0x64,0x2e,0x4e,0xa6,0xbf,0x55,0x49,
- 0x36,0x20,0x82,0x06,0x43,0x9f,0x1f,0x10,0x18,0x94,0xe6,0x2d,0x61,0x76,0x2e,0x91,
- 0x01,0xd7,0x34,0xf3,0xbb,0x9a,0x65,0x99,0xdc,0x8a,0x61,0x47,0x4d,0x80,0x9b,0x9f,
- 0x14,0xe2,0x11,0x4f,0x09,0xcc,0x5c,0xa1,0x21,0xe3,0xcd,0x7e,0x2b,0x11,0x0c,0xa7,
- 0xab,0x84,0x9f,0x10,0x59,0x2d,0xb7,0x92,0xc2,0x06,0xfe,0xbb,0xa2,0x70,0x57,0xcc,
- 0xa3,0x1a,0xbc,0x0d,0x04,0x6e,0x34,0xa1,0xd1,0x68,0xb5,0x00,0x3a,0x46,0xa3,0x90,
- 0x19,0x69,0x67,0x8c,0xdb,0x20,0x96,0x8e,0xfc,0x3c,0x84,0xc9,0x51,0x84,0xc9,0x71,
- 0x81,0xb4,0x67,0x01,0xe7,0x26,0x84,0x78,0x86,0xd5,0x45,0x8d,0xb2,0x66,0xde,0xc5,
- 0x06,0x8b,0x39,0x16,0xb8,0x26,0xf6,0xef,0xb2,0x91,0xef,0x67,0xb2,0xf0,0x32,0xc3,
- 0x9e,0xf3,0x73,0xef,0x66,0x30,0xd9,0x9b,0x2b,0x62,0xd7,0x0c,0x77,0x97,0x83,0x97,
- 0x2d,0x7f,0x5e,0x98,0x4f,0xee,0x69,0xdd,0xac,0x4f,0x9a,0x2d,0x1c,0xcb,0xbd,0xbb,
- 0x75,0x72,0xec,0x6f,0x4b,0x0b,0x5f,0x90,0xef,0xa6,0xcc,0x38,0x26,0x63,0xcb,0xa4,
- 0xd2,0xa9,0x2f,0xe4,0xde,0x1d,0x9f,0x9c,0xfe,0x32,0x74,0xc1,0x98,0xcd,0x69,0x3e,
- 0xa6,0x75,0xb2,0xfe,0xb9,0xd2,0x42,0xeb,0xfe,0x89,0x0a,0xf3,0xc5,0x7f,0x84,0xbf,
- 0xba,0x01,0x20,0x30,0xb9,0x9b,0x6e,0x8e,0xfd,0x59,0xa9,0x80,0xc6,0x5d,0x70,0x9d,
- 0xbc,0x63,0xe4,0x6e,0xab,0x4b,0xc4,0xae,0x49,0x00,0xa5,0x05,0xf8,0xf3,0xf4,0x24,
- 0x68,0xc9,0xc1,0x16,0x18,0x63,0x5d,0xa7,0x99,0xe1,0x65,0x2f,0x20,0x5f,0xf2,0x02,
- 0x6e,0x64,0x30,0xf8,0xaa,0x17,0x72,0xcb,0xe8,0xc2,0xd8,0xd7,0xc0,0x20,0x33,0x5a,
- 0xd7,0x42,0xd7,0x9f,0xa3,0x71,0xd7,0x92,0xaf,0x95,0xde,0x89,0x5f,0xc3,0x1b,0xfb,
- 0x12,0xb4,0xc8,0x38,0xf8,0x9f,0x01,0xd1,0xdb,0xcf,0x57,0x91,0x30,0x8d,0xfe,0x0f,
- 0xbd,0x28,0x4a,0x36,0x08,0xcb,0x60,0x0e,0xbf,0x14,0x95,0x37,0x08,0x15,0x0f,0xfc,
- 0x45,0x52,0x54,0xe4,0x0d,0xa4,0x02,0x6e,0x3f,0xb6,0x6d,0xdd,0x4b,0x6f,0x4b,0x0a,
- 0xd1,0x9c,0xb8,0x10,0x6e,0xbf,0x4b,0xbf,0x1a,0xc7,0x40,0x8b,0x0b,0x2f,0x1b,0xb0,
- 0xee,0x5f,0xeb,0x2d,0x8d,0xe5,0x96,0x92,0x07,0x73,0x96,0xd0,0xd2,0xf4,0x7c,0xc0,
- 0xc2,0xe4,0x6b,0x66,0x69,0x5a,0x44,0xa3,0xdc,0x54,0x62,0xb9,0xb3,0x85,0x5c,0x19,
- 0xbb,0x10,0x26,0xcb,0x5f,0xa3,0xa5,0xb1,0x2f,0x83,0x81,0x83,0xe1,0xaf,0x04,0xfb,
- 0x3d,0xdf,0x14,0x93,0xef,0x9b,0x57,0x40,0x1a,0x93,0x64,0xb9,0xbc,0x52,0x98,0x42,
- 0x3e,0x47,0x0b,0xd3,0x25,0x2b,0x85,0x02,0xf2,0x15,0x5a,0xf8,0x16,0x99,0x2d,0x5c,
- 0x0d,0x2d,0x70,0xeb,0x40,0x17,0xc5,0x2e,0x30,0xbe,0x4a,0xe1,0xf6,0xc2,0x31,0x53,
- 0x48,0x03,0xb5,0xcf,0x7b,0xa3,0xc2,0x1d,0x64,0x19,0xcd,0xd3,0xc5,0xe5,0xda,0xf7,
- 0xc1,0x00,0x08,0x1c,0x15,0x36,0x90,0x65,0xc8,0x62,0xa6,0x08,0x1b,0xe4,0x0a,0x06,
- 0x8a,0xe1,0x69,0x5a,0x46,0xaf,0x49,0xca,0x51,0x84,0xc9,0xa6,0x92,0xcc,0x85,0x49,
- 0xc0,0x16,0x78,0xf4,0xec,0xef,0x03,0xcf,0xa9,0xac,0xdb,0xe7,0x51,0x2e,0x2c,0x5c,
- 0xca,0x9f,0xb8,0x18,0x6b,0x81,0x2e,0x0c,0xfa,0x42,0x97,0x58,0xa2,0xb7,0x6a,0x7a,
- 0x43,0x20,0x33,0xd8,0x79,0xbe,0x1a,0x64,0x03,0xfc,0xe9,0x5b,0xbd,0x85,0x0d,0xc4,
- 0x80,0x31,0xb2,0x52,0x28,0x82,0x51,0x82,0x86,0x24,0x37,0x53,0x4d,0x6f,0xb2,0xba,
- 0xca,0xac,0x2e,0x0d,0xe0,0xad,0x35,0x98,0x28,0x85,0xc4,0x5e,0x2f,0x09,0xb0,0x98,
- 0x37,0x24,0x28,0x42,0x23,0xba,0xec,0xa1,0x1c,0x34,0xee,0x40,0x97,0xdd,0xcb,0x9d,
- 0xf8,0x10,0x18,0xd0,0x65,0x32,0x27,0x1e,0xba,0x4c,0x68,0x09,0x60,0x17,0x18,0x82,
- 0x57,0x30,0xac,0xef,0x33,0x4f,0xb1,0xce,0x76,0x71,0xe3,0x25,0xa5,0xb0,0x45,0xcc,
- 0x53,0xe4,0x06,0x6c,0x03,0x2c,0x2c,0x37,0x08,0x00,0x93,0x09,0xc7,0xcb,0xeb,0x9b,
- 0xa0,0x0b,0x8f,0x79,0x61,0x57,0x9b,0xd7,0xc1,0xc6,0x08,0x0e,0x5e,0x86,0xdf,0x25,
- 0x16,0xd1,0xf6,0x64,0x99,0x52,0xca,0xb1,0x30,0x51,0x14,0x49,0xd4,0x71,0x43,0x03,
- 0x50,0x4c,0x18,0x4c,0x0e,0xd8,0x86,0x85,0x97,0x93,0xcc,0xd0,0xc1,0x28,0x73,0xf0,
- 0xb2,0x21,0xd8,0xfb,0x17,0xee,0x4d,0x42,0xa9,0x36,0x1f,0xf6,0x14,0x99,0x1b,0xf6,
- 0x26,0x25,0x73,0xb7,0xa7,0x30,0x97,0x6d,0x64,0xf3,0xc6,0xec,0x5f,0xf6,0x7a,0x19,
- 0xe2,0x32,0xf2,0x19,0x92,0x6b,0x28,0x09,0x72,0x2f,0x79,0x94,0x4c,0x02,0x9f,0x44,
- 0xac,0x20,0xd7,0xe0,0x6e,0x95,0x60,0x1b,0x66,0xae,0x71,0x1b,0xd5,0x70,0xdb,0x16,
- 0x0d,0x68,0xb9,0x57,0xf8,0x0c,0x99,0x64,0x5c,0x83,0x5d,0x8f,0xc2,0x05,0xf3,0x9c,
- 0xf5,0x8a,0xc9,0xb5,0xc2,0xb5,0xf8,0xe6,0x4a,0xca,0xcb,0x85,0x02,0x61,0x3e,0x25,
- 0x69,0x71,0x3a,0xdc,0x87,0x0d,0xb4,0x39,0x2d,0x07,0x84,0x35,0x44,0x4a,0xc2,0x7d,
- 0xb8,0x3c,0xa7,0xa0,0x75,0x29,0xde,0x7e,0xcb,0x61,0xf0,0x7c,0xe8,0xca,0x0d,0xc0,
- 0x18,0xf8,0x2b,0xeb,0x3e,0x6c,0x86,0x97,0xe4,0x0c,0x4d,0xd1,0x00,0x0b,0xaf,0x25,
- 0x65,0x86,0x57,0x13,0x65,0xad,0x97,0xe8,0xcc,0x20,0x7d,0x06,0x26,0x0a,0x34,0x4e,
- 0x26,0xac,0x85,0x42,0x0b,0x1a,0x0a,0xb1,0x0c,0xa4,0x45,0x73,0xf6,0x1d,0x92,0x43,
- 0x6e,0x9a,0x97,0xdf,0x2c,0xb5,0x90,0xef,0xca,0x33,0x69,0x7e,0x4b,0xa3,0x66,0x34,
- 0x21,0xb8,0xc6,0xa8,0xe7,0x2f,0xe1,0x1f,0x51,0x9a,0xa5,0x3b,0xc9,0xf3,0xf2,0x0c,
- 0xc3,0x6b,0xc0,0x3f,0xfa,0xe7,0xf2,0x4d,0x80,0x04,0x1b,0x9b,0xb5,0x2f,0xc3,0x3f,
- 0x9a,0xdf,0xdc,0x58,0x42,0x9c,0x7d,0xb9,0x51,0x5e,0xd2,0x5b,0x1a,0x9a,0x3f,0x59,
- 0x58,0x85,0x1b,0x59,0xcb,0x7c,0x2f,0xdb,0xa4,0x4a,0x43,0xb9,0x60,0x10,0x34,0x9c,
- 0x16,0xb8,0x21,0x25,0x39,0x66,0xb2,0x96,0x49,0x6c,0xd7,0x9b,0xe4,0xda,0xbf,0x0c,
- 0x4e,0xc0,0x44,0xb4,0xd6,0x6c,0xe0,0xdc,0x00,0x3e,0x8b,0xac,0xbb,0x3d,0x14,0x14,
- 0xba,0xb3,0x06,0xf3,0x16,0x70,0x2a,0x9c,0xdf,0x25,0x44,0x9b,0x96,0x14,0x96,0xca,
- 0xf3,0x85,0xf5,0xdc,0x97,0x60,0x78,0x39,0x56,0x58,0xfa,0x00,0x62,0x61,0x0e,0x9c,
- 0x05,0x68,0x69,0x28,0x64,0x78,0x79,0xad,0x1c,0xd3,0xf0,0xdc,0x95,0xe3,0x65,0xb9,
- 0xa1,0xcc,0xf6,0xc3,0x61,0xff,0x6a,0x6a,0xd6,0x4a,0xe4,0x5b,0x73,0x60,0xdb,0x6a,
- 0x2e,0x2c,0x91,0x73,0x84,0x42,0xc3,0x40,0xe3,0x56,0x30,0x78,0x97,0xf0,0x12,0xb4,
- 0x08,0x25,0x39,0x39,0x85,0xd8,0xa5,0xe1,0x18,0x81,0xb5,0xc8,0x82,0xa0,0x19,0xf6,
- 0xf3,0xa5,0xc0,0x0a,0x94,0xc4,0x73,0xc8,0x03,0xf0,0x40,0x13,0xed,0x41,0x3c,0x2c,
- 0x0a,0x35,0x60,0x8b,0xde,0x4a,0x62,0x77,0xf0,0xa7,0x3f,0x1a,0x6b,0x60,0xa2,0x39,
- 0xec,0x11,0x2f,0x11,0x73,0x74,0x21,0xca,0x5e,0x0c,0x38,0xc6,0xfa,0x08,0x80,0x7c,
- 0x3b,0x48,0x12,0x89,0x26,0xcb,0x6c,0x2c,0x5c,0x26,0xb6,0x62,0x0b,0x82,0xe2,0x56,
- 0x6c,0x21,0x1e,0x22,0x52,0x92,0x6c,0x06,0xa3,0xd0,0x1e,0x93,0x83,0x06,0x09,0x64,
- 0xf6,0xaf,0xcf,0x03,0xf2,0x6d,0x1f,0x28,0x9b,0xb9,0x16,0x8c,0x28,0x40,0xe0,0x99,
- 0x0f,0x7c,0x5e,0xf8,0x92,0xd2,0x6e,0x96,0xcd,0xcc,0xff,0xbc,0x28,0x18,0xe6,0xc0,
- 0x55,0x21,0xe5,0xf3,0x52,0xb1,0xd1,0x07,0x5d,0xde,0xcf,0x4b,0x5f,0x6c,0x6a,0x7f,
- 0x69,0xea,0x4c,0x25,0xbf,0xf8,0x4b,0xc6,0x09,0xf8,0x2b,0x7b,0xff,0x82,0x79,0x06,
- 0x0f,0x7f,0x33,0x3a,0xff,0xfd,0xb9,0xe8,0xf3,0xff,0xad,0x0b,0x17,0xf4,0x4f,0x6a,
- 0x01,0x50,0xfc,0x39,0x5d,0xe8,0x9f,0x74,0x0f,0xb9,0x2b,0xfe,0x39,0x80,0xc9,0x62,
- 0x8b,0xb0,0x89,0xfe,0xb3,0x6b,0x8c,0x69,0xff,0xb0,0x72,0xc5,0x30,0xb5,0x50,0x3b,
- 0x7a,0x59,0x60,0xcc,0x90,0xd7,0x0a,0x88,0x97,0x11,0x0b,0x2f,0x01,0x50,0x6c,0x02,
- 0x82,0xf6,0x2e,0x29,0xd7,0xa2,0x07,0x39,0x5e,0xd6,0x0c,0x40,0xd0,0x2e,0xbc,0x3c,
- 0xcf,0xbe,0x0c,0xe0,0xe5,0xcf,0x5d,0x02,0xe4,0xfb,0x9d,0x1f,0xd6,0xff,0x61,0xd1,
- 0x85,0x7f,0xbb,0x72,0xef,0x95,0x67,0xb9,0x01,0xe0,0xf1,0xfa,0x3f,0x30,0x50,0xfc,
- 0x9d,0x4b,0xf5,0x68,0x5c,0xfe,0x7f,0x0b,0x2f,0x4f,0x7a,0xfa,0xe5,0x17,0x53,0xd6,
- 0xf7,0x79,0xf7,0xde,0x5d,0xcf,0x06,0x7f,0xb5,0xe0,0x3e,0x06,0x9c,0xa7,0xfc,0x6a,
- 0x01,0x22,0xe8,0x6f,0xad,0x80,0x96,0xfb,0x0f,0xbe,0x9a,0xba,0xb0,0x22,0x62,0x61,
- 0xea,0xff,0x1b,0x8c,0xfb,0xd9,0x18,0xe7,0x3a,0x35,0x75,0x9f,0x7b,0xf1,0xdf,0x6a,
- 0xfa,0xac,0xeb,0x7c,0x78,0xef,0xf1,0x67,0x6b,0x6e,0x5e,0x78,0x81,0x01,0xe7,0xeb,
- 0x6f,0x66,0x08,0xfa,0xdb,0x67,0xa1,0xe5,0x4a,0x71,0xa4,0xef,0xe2,0xd9,0x7a,0x0b,
- 0x53,0x5f,0x02,0xe3,0x0a,0x1b,0xe3,0x5c,0x67,0xce,0x14,0xa3,0xaf,0x68,0xc6,0xa0,
- 0x57,0x98,0xd3,0xf2,0x85,0xe7,0x1e,0xd9,0x25,0x9f,0xb9,0x65,0x8e,0x16,0x7d,0x6e,
- 0xc3,0x8c,0xf6,0x77,0x47,0x25,0xed,0x0b,0x2f,0x14,0xef,0x1a,0xcc,0x1f,0x85,0xae,
- 0xd7,0x1e,0x49,0xb5,0x9f,0xf9,0xe6,0x9c,0x95,0xd1,0x57,0x8b,0x6e,0x6e,0x5f,0xfb,
- 0xcd,0x39,0xa5,0x5f,0x78,0x0d,0xc7,0x9c,0x76,0xae,0x23,0xb6,0x93,0x2d,0x24,0xf0,
- 0x8f,0x1e,0x8d,0x1b,0x86,0xdb,0x58,0x15,0xca,0xb4,0x1c,0x75,0x77,0x79,0x0f,0xda,
- 0x63,0x9c,0xcb,0xb8,0x42,0x83,0xcc,0x11,0x23,0xee,0x50,0x86,0x65,0x64,0x87,0x0f,
- 0x49,0x56,0x97,0x73,0x42,0xd6,0x8e,0xcc,0x5b,0x06,0x7b,0x29,0x4c,0x64,0x74,0xb0,
- 0x54,0x2b,0x71,0x8c,0xe1,0x74,0x11,0x6b,0xe7,0xb1,0xbe,0xc6,0x3f,0xea,0x13,0x7c,
- 0x0d,0x65,0x52,0x38,0xd3,0x72,0xd4,0xd5,0xe5,0x0e,0x70,0x3a,0xbf,0x8b,0x8e,0x3b,
- 0xf8,0x03,0xe3,0xe8,0xb8,0x96,0x8f,0x33,0xf8,0xef,0xfa,0x4f,0x0f,0xff,0x63,0x57,
- 0x62,0xd7,0x61,0x34,0x77,0x1d,0xfc,0x7d,0xc9,0x0d,0x36,0xa2,0x03,0x46,0x58,0x2d,
- 0xe2,0x98,0x2e,0x85,0x0d,0x26,0x56,0x8b,0xfd,0x99,0xf8,0x1f,0x39,0xfa,0x9f,0xfd,
- 0x46,0xf6,0xf7,0x91,0x3d,0xed,0xe2,0x16,0xb2,0xdd,0x98,0xae,0xfd,0x69,0x86,0x28,
- 0xd8,0xbf,0x6b,0xfc,0x32,0xfd,0xef,0x18,0xce,0xfc,0x7c,0xd2,0xfd,0xf3,0x49,0x06,
- 0xb1,0xef,0x9f,0x49,0x21,0xe1,0x28,0xf9,0x47,0x32,0xd9,0xfc,0x93,0x8c,0x83,0xf2,
- 0x7f,0xe5,0xfb,0x4c,0x36,0xed,0x16,0x31,0x73,0x23,0xfe,0x09,0xb7,0x8d,0xe6,0xb4,
- 0x64,0x3e,0x7f,0xca,0xcd,0xa7,0x65,0xdf,0x85,0x38,0x3f,0xe6,0x1f,0x7b,0x59,0x7e,
- 0xdc,0xc7,0x9b,0xf9,0x2b,0x9e,0x1f,0x15,0xfa,0x53,0xae,0x92,0x75,0x45,0x83,0xfd,
- 0x2f,0xa4,0xff,0x57,0xaf,0x63,0x4d,0xd1,0x24,0xf3,0xbf,0x78,0x21,0x61,0xf8,0xbf,
- 0x78,0x81,0xff,0x43,0x9f,0xfa,0x2b,0x57,0xae,0x98,0x7f,0xba,0xf1,0xe9,0x75,0xfe,
- 0x5f,0xbe,0xce,0x04,0xdb,0xf1,0xff,0x8e,0xe1,0x5c,0xe7,0xbf,0xf8,0x5e,0xcd,0x5c,
- 0x67,0xdc,0x9e,0xfb,0x31,0x86,0x6b,0xa7,0x9e,0xe0,0xbd,0x4a,0xc8,0x7f,0xfe,0x5f,
- 0xb7,0x5c,0x08,0x32,0xd1,0xbe,0xfc,0xdf,0xb2,0x9b,0xfe,0xf7,0xee,0xcb,0xce,0x56,
- 0x3b,0x76,0x83,0xfe,0x24,0x23,0xeb,0xfb,0xfc,0x89,0x6f,0xfa,0xb1,0xfb,0x32,0xc1,
- 0x1d,0xf6,0xe8,0xf6,0x7f,0x9c,0x70,0xf3,0x5d,0x15,0x86,0x2e,0x97,0x31,0xf9,0x30,
- 0xeb,0x72,0x0f,0xce,0xfc,0xae,0xff,0xbe,0x7d,0x59,0xff,0xb8,0x5d,0x8f,0x4e,0xdc,
- 0x45,0xc6,0xdf,0x3f,0x0a,0xdb,0x97,0xc9,0xb8,0x3d,0x97,0xb7,0xb0,0x9b,0x64,0x7c,
- 0x97,0xc1,0xbb,0xfe,0x1b,0xf6,0xe5,0x8c,0xf1,0x5f,0xdb,0x97,0x33,0xc6,0x7f,0xf3,
- 0xfd,0x4c,0x32,0x01,0x91,0x3f,0xf1,0xc3,0xf3,0xe7,0xff,0xbb,0x3e,0x75,0x75,0xff,
- 0xc5,0x0b,0xf8,0x7c,0xff,0x2d,0xdf,0xe3,0xff,0xbb,0x9f,0xff,0xaf,0xed,0x3b,0x9f,
- 0x5e,0xe7,0x8f,0x5f,0xe7,0xbf,0xe7,0x13,0x22,0xba,0x20,0xb2,0xff,0x37,0x6d,0xf8,
- 0x3f,0x70,0xf9,0x4f,0x3f,0x9f,0x7e,0x3e,0xfd,0x7c,0xfa,0xf9,0xf4,0xf3,0xe9,0xe7,
- 0xd3,0xcf,0xa7,0x9f,0x4f,0x3f,0x9f,0x7e,0x3e,0xfd,0x7c,0xfa,0xf9,0xf4,0xf3,0xe9,
- 0xe7,0xd3,0xcf,0xa7,0x9f,0x4f,0x3f,0xff,0x7f,0xf8,0x61,0x67,0x4a,0x22,0x3b,0x53,
- 0xa2,0xff,0xbf,0xfe,0x2e,0x9f,0x7e,0x3e,0xfd,0x7c,0xfa,0xf9,0xf4,0xf3,0xe9,0xe7,
- 0xd3,0xcf,0xa7,0x9f,0x4f,0x3f,0x9f,0x7e,0x3e,0xfd,0x7c,0xfa,0xf9,0xf4,0xf3,0xe9,
- 0xe7,0xd3,0xcf,0xa7,0x9f,0x4f,0x3f,0x9f,0x7e,0xfe,0xcf,0x7e,0x42,0x04,0x53,0x21,
- 0x3d,0x7f,0x15,0x22,0x14,0x0b,0x2c,0xa4,0x10,0x31,0x8a,0xfe,0xfb,0xae,0xcd,0xae,
- 0x99,0x13,0x22,0x49,0x21,0xf3,0x6f,0xcd,0xbe,0x3c,0x76,0xdc,0xff,0x03,0xe6,0xeb,
- 0xaf,0xb2,0x8c,0x8c,0x02,0x00,
diff --git a/board/esd/tasreg/tasreg.c b/board/esd/tasreg/tasreg.c
deleted file mode 100644
index 16724005b7..0000000000
--- a/board/esd/tasreg/tasreg.c
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * (C) Copyright 2004
- * 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 <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <asm/m5249.h>
-
-
-/* Prototypes */
-int gunzip(void *, int, unsigned char *, unsigned long *);
-int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len);
-int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len);
-
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* predefine these here for FPGA programming (before including fpga.c) */
-#define SET_FPGA(data) mbar2_writeLong(MCFSIM_GPIO1_OUT, data)
-#define FPGA_DONE_STATE (mbar2_readLong(MCFSIM_GPIO1_READ) & CFG_FPGA_DONE)
-#define FPGA_INIT_STATE (mbar2_readLong(MCFSIM_GPIO1_READ) & CFG_FPGA_INIT)
-#define FPGA_PROG_ACTIVE_HIGH /* on this platform is PROG active high! */
-#define out32(a,b) /* nothing to do (gpio already configured) */
-
-
-/* fpga configuration data - generated by bin2cc */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int checkboard (void) {
- ulong val;
- uchar val8;
-
- puts ("Board: ");
- puts("esd TASREG");
- val8 = ((uchar)~((uchar)mbar2_readLong(MCFSIM_GPIO1_READ) >> 4)) & 0xf;
- printf(" (Switch=%1X)\n", val8);
-
- /*
- * Set LED on
- */
- val = mbar2_readLong(MCFSIM_GPIO1_OUT) & ~CFG_GPIO1_LED;
- mbar2_writeLong(MCFSIM_GPIO1_OUT, val); /* Set LED on */
-
- return 0;
-};
-
-
-long int initdram (int board_type) {
- unsigned long junk = 0xa5a59696;
-
- /*
- * Note:
- * RC = ([(RefreshTime/#rows) / (1/BusClk)] / 16) - 1
- */
-
-#ifdef CFG_FAST_CLK
- /*
- * Busclk=70MHz, RefreshTime=64ms, #rows=4096 (4K)
- * SO=1, NAM=0, COC=0, RTIM=01 (6clk refresh), RC=39
- */
- mbar_writeShort(MCFSIM_DCR, 0x8239);
-#elif CFG_PLL_BYPASS
- /*
- * Busclk=5.6448MHz, RefreshTime=64ms, #rows=8192 (8K)
- * SO=1, NAM=0, COC=0, RTIM=01 (6clk refresh), RC=02
- */
- mbar_writeShort(MCFSIM_DCR, 0x8202);
-#else
- /*
- * Busclk=36MHz, RefreshTime=64ms, #rows=4096 (4K)
- * SO=1, NAM=0, COC=0, RTIM=01 (6clk refresh), RC=22 (562 bus clock cycles)
- */
- mbar_writeShort(MCFSIM_DCR, 0x8222);
-#endif
-
- /*
- * SDRAM starts at 0x0000_0000, CASL=10, CBM=010, PS=10 (16bit port),
- * PM=1 (continuous page mode)
- */
-
- /* RE=0 (keep auto-refresh disabled while setting up registers) */
- mbar_writeLong(MCFSIM_DACR0, 0x00003324);
-
- /* BAM=007c (bits 22,21 are bank selects; 256kB blocks) */
- mbar_writeLong(MCFSIM_DMR0, 0x01fc0001);
-
- /** Precharge sequence **/
- mbar_writeLong(MCFSIM_DACR0, 0x0000332c); /* Set DACR0[IP] (bit 3) */
- *((volatile unsigned long *) 0x00) = junk; /* write to a memory location to init. precharge */
- udelay(0x10); /* Allow several Precharge cycles */
-
- /** Refresh Sequence **/
- mbar_writeLong(MCFSIM_DACR0, 0x0000b324); /* Enable the refresh bit, DACR0[RE] (bit 15) */
- udelay(0x7d0); /* Allow gobs of refresh cycles */
-
- /** Mode Register initialization **/
- mbar_writeLong(MCFSIM_DACR0, 0x0000b364); /* Enable DACR0[IMRS] (bit 6); RE remains enabled */
- *((volatile unsigned long *) 0x800) = junk; /* Access RAM to initialize the mode register */
-
- return CFG_SDRAM_SIZE * 1024 * 1024;
-};
-
-
-int testdram (void) {
- /* TODO: XXX XXX XXX */
- printf ("DRAM test not implemented!\n");
-
- return (0);
-}
-
-
-int misc_init_r (void)
-{
- unsigned char *dst;
- ulong len = sizeof(fpgadata);
- int status;
- int index;
- int i;
- uchar buf[8];
-
- dst = malloc(CFG_FPGA_MAX_SIZE);
- if (gunzip (dst, CFG_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
- printf ("GUNZIP ERROR - must RESET board to recover\n");
- do_reset (NULL, 0, 0, NULL);
- }
-
- status = fpga_boot(dst, len);
- if (status != 0) {
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("FPGA: %s\n", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=20; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc ('\n');
- do_reset(NULL, 0, 0, NULL);
- }
-
- puts("FPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("%s ", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
-
- free(dst);
-
- /*
- *
- */
- buf[0] = 0x00;
- buf[1] = 0x32;
- buf[2] = 0x3f;
- i2c_write(0x38, 0, 0, buf, 3);
-
- return (0);
-}
-
-
-#if 1 /* test-only: board specific test commands */
-int i2c_probe(uchar addr);
-
-/*
- */
-int do_iploop(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- ulong addr;
-
- if (argc < 2) {
- puts("ERROR!\n");
- return -1;
- }
-
- addr = simple_strtol (argv[1], NULL, 16);
-
- printf("iprobe looping on addr 0x%lx (cntrl-c aborts)...\n", addr);
-
- for (;;) {
- i2c_probe(addr);
-
- /* Abort if ctrl-c was pressed */
- if (ctrlc()) {
- puts("\nAbort\n");
- return 0;
- }
-
- udelay(1000);
- }
-
- return 0;
-}
-U_BOOT_CMD(
- iploop, 2, 1, do_iploop,
- "iploop - iprobe loop <addr>\n",
- NULL
- );
-
-/*
- */
-int do_codec(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- uchar buf[8];
-
- *(volatile ushort *)0xe0000000 = 0x4000;
-
- udelay(5000); /* wait for 5ms */
-
- buf[0] = 0x10;
- buf[1] = 0x07;
- buf[2] = 0x03;
- i2c_write(0x10, 0, 0, buf, 3);
-
- buf[0] = 0x10;
- buf[1] = 0x01;
- buf[2] = 0x80;
- i2c_write(0x10, 0, 0, buf, 3);
-
- buf[0] = 0x10;
- buf[1] = 0x02;
- buf[2] = 0x03;
- i2c_write(0x10, 0, 0, buf, 3);
-
- buf[0] = 0x10;
- buf[1] = 0x03;
- buf[2] = 0x29;
- i2c_write(0x10, 0, 0, buf, 3);
-
- buf[0] = 0x10;
- buf[1] = 0x04;
- buf[2] = 0x00;
- i2c_write(0x10, 0, 0, buf, 3);
-
- buf[0] = 0x10;
- buf[1] = 0x05;
- buf[2] = 0x00;
- i2c_write(0x10, 0, 0, buf, 3);
-
- buf[0] = 0x10;
- buf[1] = 0x07;
- buf[2] = 0x02;
- i2c_write(0x10, 0, 0, buf, 3);
-
- return 0;
-}
-U_BOOT_CMD(
- codec, 1, 1, do_codec,
- "codec - Enable codec\n",
- NULL
- );
-
-/*
- */
-int do_saa(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- ulong addr;
- ulong instr;
- ulong cntrl;
- ulong data;
- uchar buf[8];
-
- if (argc < 5) {
- puts("ERROR!\n");
- return -1;
- }
-
- addr = simple_strtol (argv[1], NULL, 16);
- instr = simple_strtol (argv[2], NULL, 16);
- cntrl = simple_strtol (argv[3], NULL, 16);
- data = simple_strtol (argv[4], NULL, 16);
-
- buf[0] = (uchar)instr;
- buf[1] = (uchar)cntrl;
- buf[2] = (uchar)data;
- i2c_write(addr, 0, 0, buf, 3);
-
- return 0;
-}
-U_BOOT_CMD(
- saa, 5, 1, do_saa,
- "saa - Write to SAA1064 <addr> <instr> <cntrl> <data>\n",
- NULL
- );
-
-/*
- */
-int do_iwrite(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- ulong addr;
- ulong data0;
- ulong data1;
- ulong data2;
- ulong data3;
- uchar buf[8];
- int cnt;
-
- if (argc < 3) {
- puts("ERROR!\n");
- return -1;
- }
-
- addr = simple_strtol (argv[1], NULL, 16);
- cnt = simple_strtol (argv[2], NULL, 16);
- data0 = simple_strtol (argv[3], NULL, 16);
- data1 = simple_strtol (argv[4], NULL, 16);
- data2 = simple_strtol (argv[5], NULL, 16);
- data3 = simple_strtol (argv[6], NULL, 16);
-
- printf("Writing %d bytes to device %lx!\n", cnt, addr);
- buf[0] = (uchar)data0;
- buf[1] = (uchar)data1;
- buf[2] = (uchar)data2;
- buf[3] = (uchar)data3;
- i2c_write(addr, 0, 0, buf, cnt);
-
- return 0;
-}
-U_BOOT_CMD(
- iwrite, 6, 1, do_iwrite,
- "iwrite - Write n bytes to I2C-device\n",
- "addr cnt data0 ... datan\n"
- );
-
-/*
- */
-int do_iread(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- ulong addr;
- ulong cnt;
- uchar buf[32];
- int i;
-
- if (argc < 3) {
- puts("ERROR!\n");
- return -1;
- }
-
- addr = simple_strtol (argv[1], NULL, 16);
- cnt = simple_strtol (argv[2], NULL, 16);
-
- i2c_read(addr, 0, 0, buf, cnt);
- printf("I2C Data:");
- for (i=0; i<cnt; i++) {
- printf(" %02X", buf[i]);
- }
- printf("\n");
-
- return 0;
-}
-U_BOOT_CMD(
- iread, 3, 1, do_iread,
- "iread - Read from I2C <addr> <cnt>\n",
- NULL
- );
-
-/*
- */
-int do_ireadl(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- ulong addr;
- uchar buf[32];
- int cnt;
-
- if (argc < 2) {
- puts("ERROR!\n");
- return -1;
- }
-
- addr = simple_strtol (argv[1], NULL, 16);
- cnt = 1;
-
- printf("iread looping on addr 0x%lx (cntrl-c aborts)...\n", addr);
-
- for (;;) {
- i2c_read(addr, 0, 0, buf, cnt);
-
- /* Abort if ctrl-c was pressed */
- if (ctrlc()) {
- puts("\nAbort\n");
- return 0;
- }
-
- udelay(3000);
- }
-
- return 0;
-}
-U_BOOT_CMD(
- ireadl, 2, 1, do_ireadl,
- "ireadl - Read-loop from I2C <addr>\n",
- NULL
- );
-#endif
diff --git a/board/esd/tasreg/u-boot.lds b/board/esd/tasreg/u-boot.lds
deleted file mode 100644
index a803b1cbad..0000000000
--- a/board/esd/tasreg/u-boot.lds
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_ARCH(m68k)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mcf52x2/start.o (.text)
- lib_m68k/traps.o (.text)
- cpu/mcf52x2/interrupts.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x00FF) & 0xFFFFFF00;
- _erotext = .;
- PROVIDE (erotext = .);
-
- .reloc :
- {
- __got_start = .;
- *(.got)
- __got_end = .;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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 = .;
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- . = ALIGN(4);
- _ebss = .;
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/esd/voh405/Makefile b/board/esd/voh405/Makefile
deleted file mode 100644
index 4d75868ea8..0000000000
--- a/board/esd/voh405/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/voh405/config.mk b/board/esd/voh405/config.mk
deleted file mode 100644
index 219a4eba15..0000000000
--- a/board/esd/voh405/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# esd VOH405 boards
-#
-
-TEXT_BASE = 0xFFF80000
diff --git a/board/esd/voh405/flash.c b/board/esd/voh405/flash.c
deleted file mode 100644
index 89af1190a8..0000000000
--- a/board/esd/voh405/flash.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- switch (size_b0) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/voh405/fpgadata.c b/board/esd/voh405/fpgadata.c
deleted file mode 100644
index 02c94a24b4..0000000000
--- a/board/esd/voh405/fpgadata.c
+++ /dev/null
@@ -1,2011 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x38,0x6c,0x35,0x42,0x00,0x03,0x76,0x6f,0x68,0x34,0x30,0x35,
- 0x5f,0x31,0x5f,0x30,0x33,0x2e,0x62,0x69,0x74,0x00,0xed,0xfd,0x7d,0x7c,0x1c,0xd5,
- 0x91,0x2f,0x8c,0x57,0x9f,0x6e,0xc9,0xad,0xe9,0x91,0xa6,0xf5,0x62,0x22,0x40,0x98,
- 0xd6,0x48,0x98,0x41,0x19,0x49,0x63,0xc9,0x18,0x63,0xcc,0xa8,0x2d,0x09,0x22,0x6c,
- 0x07,0x4f,0x80,0xcd,0xfa,0x66,0xb9,0xd9,0x31,0xf1,0x66,0xbd,0xfb,0x73,0xb8,0x82,
- 0xe4,0xd9,0x75,0x72,0xb3,0xe4,0x68,0x24,0xdb,0x23,0xcb,0xc1,0x83,0x71,0x88,0x20,
- 0xde,0xec,0xd8,0x78,0x89,0x21,0x4e,0xee,0x58,0x36,0x20,0x63,0x16,0x5a,0x46,0x80,
- 0x6c,0x8c,0x51,0x58,0x27,0xeb,0x10,0x42,0xc6,0x44,0x21,0x82,0x18,0x22,0x8c,0x49,
- 0xe4,0xf7,0xe7,0xd4,0xe9,0x97,0xe9,0x99,0x91,0xd9,0xcd,0xbd,0xf7,0x79,0xee,0x7e,
- 0x7e,0x8f,0x27,0x7f,0xa4,0xe8,0x39,0x6e,0xf5,0xa9,0x39,0x5d,0xf5,0x3d,0x55,0xdf,
- 0xaa,0x03,0x45,0xbe,0x09,0xf3,0x7f,0x00,0xc2,0x32,0x50,0xff,0xee,0xbf,0xad,0x98,
- 0x1d,0xba,0xf6,0x2f,0x67,0xfd,0x65,0xa8,0xb9,0xe1,0xee,0x2f,0x2d,0x87,0xbb,0x40,
- 0x69,0xfa,0xea,0xb5,0xa1,0xbf,0xfa,0xda,0x3d,0xb3,0x66,0xcf,0x86,0x2f,0xb1,0xff,
- 0x0a,0x85,0xae,0x6d,0x0c,0x35,0x37,0xce,0x9a,0x0d,0xcb,0xa1,0x68,0xd6,0xac,0x79,
- 0xb3,0xaf,0x9f,0xd7,0x34,0x17,0xfe,0x0a,0x84,0xe6,0x6d,0xe7,0xd9,0xe7,0x89,0x87,
- 0xff,0xec,0xcb,0x21,0xa0,0x02,0x00,0x4c,0x0b,0x09,0x51,0xfc,0x7f,0x25,0x24,0x68,
- 0x02,0xd0,0x96,0xfa,0x10,0x18,0xf8,0xdf,0x60,0x7d,0x5f,0x14,0x02,0xcd,0xfd,0xdf,
- 0x42,0x08,0x74,0x88,0x80,0xbe,0x5e,0x2d,0x83,0x7f,0xff,0x23,0xe8,0x12,0xb5,0xe5,
- 0x3f,0x71,0xfc,0xf9,0x03,0xf4,0x82,0xc3,0x32,0x9f,0x96,0xe3,0x49,0x4b,0x52,0x49,
- 0xe8,0x3f,0x72,0x7f,0xb0,0xef,0xfa,0xfb,0x37,0xfe,0x43,0xf7,0xff,0x83,0x7d,0xff,
- 0x3f,0x75,0x3c,0xa8,0xff,0x81,0xe1,0x00,0x92,0xf3,0x3c,0xaa,0xa0,0x41,0x07,0x14,
- 0x82,0x40,0x21,0x0a,0x95,0x17,0x10,0x5a,0x86,0xed,0xf1,0x86,0x70,0x0e,0xce,0xd3,
- 0x96,0x03,0xbe,0x81,0xee,0x7b,0xe1,0x1c,0x84,0xf5,0xe2,0x09,0xf1,0x3e,0xf5,0x4d,
- 0xb5,0x45,0xf3,0xbd,0x24,0x1e,0x87,0x33,0xb4,0xb9,0xd2,0xbb,0x4f,0x0c,0x41,0xa7,
- 0x3d,0x3e,0xfe,0x63,0xd8,0x4b,0x1b,0x26,0x94,0x13,0x7d,0x7e,0x58,0x67,0x34,0xec,
- 0xf3,0x9c,0x28,0xab,0xad,0xe8,0x8d,0x34,0x68,0x4a,0x8c,0xbc,0x03,0x83,0xd4,0x2f,
- 0xcb,0xb1,0x7d,0xa1,0x5a,0x5b,0x8b,0x23,0xd2,0x7a,0xd8,0x05,0x41,0x43,0x69,0x22,
- 0x00,0x03,0x0b,0x82,0x23,0x97,0xce,0x22,0x2b,0x20,0xa1,0xad,0xd4,0x94,0x42,0x62,
- 0xc0,0x20,0x68,0x95,0x72,0x39,0x69,0x02,0xcd,0xbe,0xbf,0xb4,0x03,0xf6,0x42,0x83,
- 0xa1,0xa4,0x88,0x46,0xd7,0x91,0x86,0xb4,0x27,0x45,0x02,0x6a,0x3c,0x7e,0xab,0xae,
- 0xc4,0x49,0x5a,0xdf,0x43,0xfd,0x9a,0xdc,0x4f,0x42,0x92,0xfd,0x3c,0x37,0x4d,0x3f,
- 0x06,0xa7,0xd9,0x78,0x5f,0xaa,0xcd,0x0f,0xa7,0x92,0xe1,0x0f,0x8b,0x53,0x0b,0x16,
- 0xc3,0x11,0x63,0x86,0xe0,0x7b,0x44,0x4c,0xc3,0x84,0x36,0xb0,0xc2,0xbb,0x5e,0x54,
- 0xdb,0xed,0xf1,0x49,0xe1,0x59,0x78,0x1e,0xae,0x64,0xe3,0xd9,0x77,0x1f,0x24,0xc2,
- 0x86,0x38,0xe1,0x3f,0xc1,0xee,0xd0,0xa2,0xfa,0xa8,0x78,0x02,0x35,0x00,0xbe,0x44,
- 0xdb,0x38,0xd3,0x94,0xf9,0x19,0x55,0x77,0xb0,0x6f,0xc3,0x86,0x2f,0x24,0x26,0xd5,
- 0x53,0xd0,0x34,0x5a,0x9c,0x12,0x8f,0xc1,0x49,0x68,0xea,0xf2,0x25,0x6f,0x0f,0x56,
- 0x8f,0xab,0xe1,0x98,0x77,0x4b,0x77,0x48,0xb2,0x9f,0x7f,0xa4,0x20,0xa8,0xee,0x85,
- 0x46,0x43,0x99,0x28,0x9b,0x16,0x5f,0x07,0x73,0x0c,0x79,0x82,0x1c,0x83,0x3d,0x11,
- 0xbf,0xa1,0xac,0xf6,0x37,0xb0,0xaf,0x1a,0x64,0x39,0x41,0xe6,0xb0,0xd5,0x6f,0xcf,
- 0x77,0x31,0x3c,0x08,0xb5,0x86,0x12,0x22,0x14,0x06,0x88,0xdf,0x90,0x53,0x64,0x31,
- 0x0c,0xa8,0x01,0x43,0x09,0x10,0x05,0x1e,0x1d,0x69,0x48,0xca,0xdb,0x0b,0x57,0xb1,
- 0x77,0xc5,0xfc,0x4c,0xc0,0x17,0xe1,0x69,0x5a,0x9f,0x56,0x56,0x91,0x32,0xf8,0x76,
- 0xe2,0xaa,0xb4,0xbc,0xaa,0xf0,0x67,0xb0,0x1b,0xaf,0x2c,0x25,0x33,0x54,0xf6,0x55,
- 0x54,0x5e,0x4a,0xee,0x73,0xee,0xdf,0x01,0x8b,0xd5,0x8f,0x60,0xbe,0xe1,0x9b,0x2b,
- 0x52,0xf8,0x50,0x0d,0x4d,0x7a,0x43,0xe2,0x08,0x9d,0x60,0x8a,0xf7,0x95,0xf6,0x41,
- 0xf2,0x2e,0x98,0xaf,0x7b,0x0b,0xc5,0xdb,0x88,0xbd,0x90,0xf4,0x2b,0x9e,0x85,0xf3,
- 0xd0,0xc2,0xf4,0xd3,0x35,0xaa,0x7f,0x58,0x1a,0x8e,0x97,0xec,0x14,0x27,0xe1,0x8c,
- 0xda,0x7c,0x87,0xef,0x27,0xe2,0x04,0x7e,0xd5,0xbe,0x61,0x54,0x4c,0x14,0xda,0xfa,
- 0x91,0x81,0xeb,0x67,0xcc,0x3b,0xd0,0x0d,0xf0,0x06,0x0d,0xa5,0xbd,0xbb,0xbb,0x83,
- 0x6c,0x58,0xd3,0x88,0x6f,0x42,0x7c,0x0f,0xf6,0xb7,0x37,0x1a,0xde,0xb4,0xe8,0x71,
- 0x7e,0xdf,0x91,0xca,0xcd,0xf0,0x34,0xd4,0x8f,0x14,0xdf,0x2b,0x26,0xe0,0xa7,0x50,
- 0x6d,0x14,0xfc,0x9d,0x78,0x07,0xfb,0x45,0xaa,0x47,0x94,0x08,0x79,0xd3,0xf8,0xc1,
- 0x8a,0x46,0x5d,0x1e,0x25,0x4d,0x8e,0x3e,0x35,0xf8,0x3e,0x9b,0x6f,0x30,0x5d,0xf4,
- 0x0d,0xcf,0x57,0xe1,0x01,0x5a,0x93,0xee,0x58,0x55,0xf8,0x45,0x78,0x92,0x56,0x6f,
- 0x63,0x1a,0x38,0xb7,0xa0,0x27,0x5e,0x9f,0x8e,0xaf,0x20,0xaa,0x73,0xff,0x15,0xd6,
- 0x7a,0x2b,0x4a,0x91,0x0d,0xf0,0x80,0xa0,0x19,0x0f,0xa7,0xc8,0x57,0xe8,0x9e,0x94,
- 0x96,0x56,0xfe,0x91,0x1c,0xa4,0x8f,0x42,0xf0,0x2e,0xf9,0x32,0x4f,0x99,0x73,0xff,
- 0xf1,0xe9,0xe3,0xc2,0x29,0x08,0xd3,0xe2,0xa4,0xb8,0x0a,0xde,0x92,0x76,0xd1,0x91,
- 0xa4,0xf8,0x75,0x38,0xa7,0x0f,0xc4,0x7c,0x63,0xe2,0x7b,0xda,0x01,0x68,0x19,0x0c,
- 0xbe,0x27,0xce,0x93,0xec,0xf9,0x76,0x08,0x49,0x98,0x84,0xb0,0xe0,0xa3,0x35,0x28,
- 0xdc,0xe7,0xf5,0xd1,0xdb,0xd3,0x15,0x93,0x7a,0x58,0xf5,0xad,0xa9,0x39,0x5a,0x39,
- 0xd9,0x1a,0x86,0x0d,0x3d,0xe2,0xeb,0x60,0xaf,0x7f,0x59,0xdd,0xc6,0x56,0x4b,0x58,
- 0xf7,0x25,0xca,0x67,0x26,0x2d,0xa1,0x16,0xf6,0x43,0x53,0x74,0x43,0x7f,0x73,0xad,
- 0x7a,0x12,0xe6,0x47,0xbd,0xa5,0x22,0x91,0xec,0xf1,0x54,0x5a,0xce,0xc6,0x37,0xe8,
- 0x8b,0x12,0xa4,0xa7,0xac,0x97,0x09,0x25,0x09,0xb2,0x0d,0x7a,0x75,0xff,0x4b,0x4a,
- 0xbf,0x27,0x48,0xf7,0xea,0x0d,0x2b,0xd8,0xfa,0xd7,0x1c,0xb3,0x30,0xb7,0xa0,0x16,
- 0x1e,0x66,0xc3,0x2e,0x4f,0x90,0xab,0xc8,0xe3,0x4c,0x50,0x12,0x85,0xb5,0xd0,0x1b,
- 0xdd,0xaa,0x2b,0x0f,0x90,0xda,0xf8,0x1e,0xda,0x70,0x13,0x5b,0x6f,0x85,0xce,0x7a,
- 0xd0,0x2a,0x24,0xd8,0x02,0x41,0x5d,0xa9,0xf0,0x6c,0x83,0x2e,0x08,0x46,0x94,0x8a,
- 0xc2,0xd5,0xd0,0xb5,0x40,0xd3,0x95,0xd9,0x4d,0x12,0xec,0x64,0x57,0xe4,0xd9,0x04,
- 0x04,0x7b,0x3d,0xac,0xf2,0x46,0xa1,0x1f,0x5f,0x0a,0x50,0x34,0x18,0x27,0x61,0x58,
- 0x02,0x6d,0x1a,0x19,0x81,0x26,0xf0,0xd1,0x36,0x0d,0x98,0xea,0x20,0x48,0x95,0x19,
- 0xa2,0xbd,0x3e,0xfb,0xa7,0xf3,0xf9,0x46,0x7c,0x9b,0xca,0x4f,0xc0,0xd9,0xd6,0x96,
- 0xc8,0xfd,0x9b,0x6a,0x4e,0xc0,0x79,0x7d,0x86,0xe1,0x3b,0x2c,0x0e,0xb3,0xaf,0x5a,
- 0x22,0x1b,0x0e,0x8b,0xef,0x14,0xda,0xef,0x63,0x65,0xc1,0x98,0xa9,0x9f,0x07,0xc5,
- 0x0a,0x54,0x8b,0xee,0xdd,0x54,0xbe,0xed,0xb6,0x57,0xe5,0x26,0x9d,0x8e,0x8a,0x4c,
- 0x51,0x85,0x2d,0x1d,0xde,0xd7,0xc5,0x42,0xc7,0xfe,0xcc,0xad,0x4c,0xb3,0xb5,0xdb,
- 0x50,0xa1,0xac,0x65,0x4a,0x88,0x13,0xbf,0xbc,0x8e,0x92,0x00,0xc4,0x61,0x2b,0x78,
- 0x62,0x4d,0x9a,0x7c,0x04,0x1a,0x2a,0xe3,0x6b,0x36,0x96,0x38,0xfa,0xec,0x80,0x1e,
- 0x9c,0x94,0xae,0xa8,0x33,0x25,0xd2,0xa5,0x6b,0xb7,0x29,0x15,0xa4,0x87,0x76,0xc9,
- 0x7e,0x5d,0xae,0xd8,0x58,0x8b,0xaa,0xb8,0x59,0x2e,0xf5,0x94,0x09,0xf6,0xfd,0xfb,
- 0xa5,0x6d,0xb0,0x47,0x60,0x6a,0x54,0x49,0xad,0xdc,0xab,0x69,0x4b,0xbf,0xa7,0x12,
- 0x89,0xf6,0x82,0x5f,0x0f,0xa4,0xb6,0x5e,0x45,0xf7,0x30,0x0d,0xcb,0x0f,0x91,0x99,
- 0xce,0x7a,0x48,0x4e,0xb7,0x9e,0x3f,0xf1,0xa5,0xab,0xa3,0xfb,0xa3,0x03,0x9f,0xf3,
- 0x25,0xc4,0x6d,0xf2,0x7e,0x23,0xa4,0x57,0x3c,0xac,0x48,0xea,0xbb,0x5a,0x78,0x65,
- 0x30,0xd1,0x16,0x70,0xec,0xd5,0x88,0x60,0xaf,0x07,0x65,0x2c,0xf4,0x21,0x0d,0x47,
- 0x4b,0x12,0xe2,0x98,0xf4,0xe1,0x48,0x78,0xb9,0x4f,0x15,0xc7,0xd4,0x9f,0x4b,0xf3,
- 0xa3,0xbe,0xca,0x07,0x4f,0x39,0xf6,0x47,0x56,0xf9,0x7a,0x63,0x4a,0x16,0x35,0x38,
- 0xb2,0xa0,0x49,0x0d,0xd2,0x1a,0x0d,0x98,0xfe,0x43,0xbe,0x78,0x8d,0x16,0x60,0x0b,
- 0x4f,0xf6,0xd2,0xb6,0x03,0xce,0x7a,0x0e,0x14,0x04,0xe0,0x19,0x68,0xa0,0x72,0x92,
- 0x3c,0xa2,0x3d,0x41,0xb6,0x52,0x92,0x64,0xfa,0xf9,0xb1,0xee,0xa7,0xca,0x38,0xb9,
- 0x46,0x7a,0x06,0x1a,0x37,0x06,0xc6,0xc9,0x01,0x67,0x3d,0x04,0x98,0xfd,0xc1,0xf7,
- 0x45,0x0e,0x91,0xcf,0x30,0x43,0x14,0x30,0x6e,0x09,0x11,0x2f,0x74,0x19,0x9a,0xa1,
- 0x54,0x92,0x62,0x68,0x86,0x60,0x54,0xae,0x62,0xe3,0x9d,0xf5,0x09,0x77,0xb2,0xf7,
- 0x37,0x98,0x96,0x9b,0xc8,0x11,0xe8,0x86,0x1a,0x34,0x5c,0x55,0xb0,0x45,0xae,0x1e,
- 0x55,0xf4,0x8d,0x95,0xf8,0x6a,0x53,0xb9,0x33,0x36,0xee,0xac,0xcf,0x78,0xfc,0x8b,
- 0xf0,0x47,0x7a,0x63,0xda,0xbb,0x4a,0xbc,0x0d,0xfe,0xad,0x67,0xd6,0xb1,0xe2,0x6f,
- 0xae,0x0d,0x1b,0x2f,0xd3,0x59,0x6f,0xfb,0x26,0xc5,0x19,0xda,0x89,0x75,0x2d,0x51,
- 0xef,0xd2,0x9a,0xf7,0xfc,0xf6,0x78,0xcf,0x15,0xa6,0xbd,0xdd,0xf0,0x64,0x75,0x92,
- 0x09,0xf3,0x8f,0x94,0x0c,0x90,0xaf,0xc0,0x59,0x78,0xee,0x48,0x71,0xfa,0xf2,0x31,
- 0x7a,0x9a,0xb4,0x80,0x6f,0x54,0xdc,0xe7,0xd8,0x1f,0xd2,0xf3,0x1c,0xfa,0xaf,0xb4,
- 0xf7,0xac,0xcf,0xaf,0x33,0xe1,0x9d,0xe2,0x93,0xe2,0x17,0xb5,0x63,0xb4,0x39,0xed,
- 0x3b,0x22,0x86,0xdb,0x5f,0xa3,0x2d,0x51,0x26,0x18,0xce,0xfa,0xd9,0x5e,0x59,0x85,
- 0x0f,0x69,0x14,0xaf,0x22,0xe5,0xd2,0xda,0x6d,0xf5,0xe3,0x05,0xab,0x0a,0xab,0xa4,
- 0xf5,0x52,0xb5,0xd1,0x67,0x90,0xca,0x8e,0x1f,0x40,0x7d,0x5c,0xe9,0xf4,0xbf,0xd7,
- 0x6e,0xdf,0x1f,0x80,0xdb,0x2b,0x43,0x6e,0x2a,0x8b,0xd0,0x1f,0xa8,0xf5,0xfb,0x98,
- 0xa2,0xe6,0xc3,0x63,0x50,0xad,0x2a,0x9f,0x23,0x73,0xa1,0x47,0xae,0xd7,0x99,0x60,
- 0xa8,0xb6,0xfe,0x35,0xc9,0x6b,0xda,0x9f,0x10,0x81,0x40,0xf7,0x68,0xf0,0x27,0xbd,
- 0x21,0x66,0xcf,0xbb,0x75,0x0d,0x94,0xf9,0x44,0x50,0x1f,0x35,0x82,0xcf,0xf6,0x6d,
- 0x27,0x23,0xce,0xfa,0xdc,0x3e,0xdd,0x9c,0xaf,0x77,0xa2,0x46,0x84,0xdf,0xb1,0x3f,
- 0xe4,0x9d,0x50,0xee,0x83,0x77,0x7b,0x8e,0x83,0xef,0x11,0xe5,0x2a,0x78,0xa5,0x2b,
- 0xdc,0xc9,0x1c,0xd3,0x7b,0xce,0xfa,0xa1,0x02,0xf3,0x77,0x02,0xfa,0xa3,0x69,0xbf,
- 0x86,0xdf,0x69,0xe1,0x7d,0xbe,0x94,0xb8,0xa3,0xe3,0xe4,0x65,0xec,0x0d,0xa5,0xe2,
- 0xb8,0xc4,0xd6,0x43,0xc2,0xb7,0xe5,0xc1,0xb4,0xb3,0x7e,0xaa,0x55,0xb4,0xe7,0xf3,
- 0x0c,0x66,0x8d,0x3b,0x8b,0x5e,0x86,0x66,0x76,0x7f,0xf1,0x0c,0xbc,0x06,0x2d,0x69,
- 0xdf,0x44,0xf7,0x89,0xd0,0x9b,0x72,0x8b,0xee,0x33,0x44,0x68,0xb7,0x9f,0x7f,0x8b,
- 0xb4,0xd2,0xf6,0xbf,0x5b,0xe1,0x17,0xc0,0xfd,0xd1,0x31,0xd8,0x4e,0x67,0x4e,0x2e,
- 0x59,0x4f,0xc6,0x60,0x90,0xd9,0x1f,0x65,0x73,0x4c,0xd3,0x55,0xe7,0x79,0x82,0xf6,
- 0x78,0xbf,0xd0,0x27,0xf0,0xf1,0x07,0xd9,0xaf,0xde,0x20,0x2b,0xfd,0x64,0x8c,0xee,
- 0x1d,0x6e,0x88,0x2a,0x71,0xbf,0xe6,0xac,0x37,0xb9,0xc2,0xd4,0x0f,0x5b,0x36,0xc9,
- 0x40,0xb9,0xe6,0x3f,0x72,0x59,0x53,0xd9,0x41,0x39,0x09,0xb5,0x40,0xa0,0x6c,0xa4,
- 0x22,0x05,0x41,0x50,0x80,0x38,0xee,0x08,0x48,0xf1,0x4a,0xa6,0x1f,0xf6,0xfc,0x27,
- 0xd8,0xfa,0x57,0xe4,0x59,0x6f,0x78,0x8f,0x77,0x9f,0x61,0xeb,0x3f,0x0c,0x0a,0x65,
- 0xfe,0xfd,0x88,0x10,0x16,0xa6,0x51,0x05,0x6a,0xec,0xe7,0xd9,0x52,0x70,0x86,0xfb,
- 0xaf,0x25,0x4f,0x75,0x8f,0xca,0xa7,0xc9,0x7d,0x06,0xf3,0xd7,0x67,0xe0,0x0c,0x7c,
- 0x0a,0x7c,0x46,0xcd,0x28,0x13,0x5a,0x60,0x89,0x51,0x3e,0x3e,0xcd,0xc1,0x33,0x05,
- 0xe7,0xe0,0x74,0x77,0x4b,0x7a,0xc9,0x53,0x62,0x18,0x17,0x12,0x04,0x07,0xdb,0x8e,
- 0xeb,0xaf,0xd1,0xeb,0x64,0xef,0xbe,0xf2,0x89,0xf8,0x41,0xb5,0x59,0xf3,0x8d,0x30,
- 0xc7,0xe7,0xe8,0x5f,0xfd,0x40,0x66,0xf8,0x27,0xad,0x34,0xfb,0x1b,0x18,0x10,0x0a,
- 0x26,0x3a,0x42,0x65,0xc7,0x68,0x1f,0xf5,0x17,0x06,0x1e,0x26,0xef,0xe8,0xf1,0x4e,
- 0xbf,0xd6,0x17,0xf7,0xa7,0x33,0xf6,0xbf,0xe0,0xa0,0x35,0xdf,0x32,0x9c,0x78,0x83,
- 0x24,0x87,0xee,0x32,0xa0,0x17,0x6a,0x65,0x19,0x0a,0x0d,0x60,0x70,0x06,0x16,0xa9,
- 0x85,0xfb,0x1c,0xfb,0x63,0x4c,0xb7,0xf1,0x8f,0x87,0x2b,0x96,0x32,0x7d,0xbe,0x03,
- 0xbd,0xaa,0xbf,0x9a,0x99,0xfd,0xb7,0x21,0x4e,0x19,0x90,0x48,0xcc,0x9c,0x70,0xec,
- 0x0f,0x54,0xb0,0xf5,0x23,0x85,0x11,0xff,0x04,0x71,0x21,0x6d,0x94,0x53,0xe2,0x3b,
- 0xf0,0x02,0x9d,0xd3,0xe9,0x5d,0x27,0xee,0xa3,0xfb,0xe3,0x03,0xba,0xef,0x47,0x0f,
- 0x8e,0x3a,0xf6,0xe1,0x28,0xe0,0x7a,0xb8,0x12,0xd7,0x03,0x57,0x54,0x17,0x0a,0xe4,
- 0xbc,0x14,0xa6,0x3e,0x3a,0xed,0x84,0x3c,0x21,0xb5,0xd4,0xfa,0xc6,0xc5,0x49,0xdd,
- 0x1e,0x6f,0xa8,0x3b,0xe4,0xd3,0x70,0x1f,0xbb,0xbf,0x88,0xf7,0x9f,0x97,0xf0,0xa6,
- 0xc4,0xe5,0xda,0x49,0xb8,0xef,0x92,0x20,0xbb,0x42,0x0f,0x2c,0x6d,0x5a,0xe6,0xdb,
- 0x2d,0x4e,0x64,0xf0,0x8f,0xc4,0x1f,0xfb,0xed,0x45,0x13,0x04,0x85,0x20,0x7b,0x7e,
- 0xf1,0x2b,0xb0,0x07,0xee,0x0e,0x31,0x37,0x74,0x35,0x33,0xd4,0xec,0xf9,0x77,0xbe,
- 0x30,0xe0,0xfc,0xbe,0xe9,0x02,0xd3,0xfe,0xb0,0xf5,0x83,0xfa,0x09,0x80,0x1c,0xf2,
- 0x47,0x6f,0x1a,0xc0,0x89,0x6b,0xc4,0xa3,0xc4,0x20,0x49,0x15,0x6f,0xeb,0xa4,0x83,
- 0x7f,0x96,0x09,0x33,0x38,0xfe,0x59,0xb4,0x8a,0xcc,0xe8,0x42,0x21,0xb0,0x8a,0x7c,
- 0x1e,0x9e,0x62,0xc2,0xa5,0x1d,0xe4,0x36,0x58,0x9d,0xaa,0x4e,0x5e,0xbe,0x8a,0xf4,
- 0xeb,0xf6,0x7a,0xeb,0x90,0xbd,0xf0,0xd1,0xea,0xa0,0xe1,0x9b,0xa7,0x94,0xd0,0x8f,
- 0x52,0x73,0xc1,0x7b,0x83,0xd8,0x01,0xc7,0x21,0xb8,0xd4,0xab,0x2a,0xa0,0x0d,0x85,
- 0x42,0xe0,0x13,0x98,0xbf,0xb6,0x3f,0x0e,0xfe,0xf9,0xa8,0xed,0x8c,0xcc,0x85,0x09,
- 0xf1,0x59,0xfd,0x1c,0xb4,0xe8,0x25,0x3f,0x61,0x88,0xe5,0x6c,0xa8,0xc5,0x78,0x6d,
- 0xa2,0x6d,0xd4,0xb1,0x3f,0xdb,0x0b,0x8e,0x99,0xf8,0x10,0xf5,0xf3,0x3b,0x06,0x24,
- 0x98,0x30,0x86,0x78,0x32,0xca,0x60,0xcf,0x9b,0xf0,0x2b,0x3a,0x30,0xe2,0xeb,0x61,
- 0x40,0xc8,0xb1,0xff,0xa5,0xa6,0x3d,0x51,0xbe,0x26,0xde,0x29,0x5d,0xc7,0xac,0x25,
- 0xb3,0x36,0x6f,0xc2,0xd3,0xc2,0xd5,0x46,0x9d,0xee,0x3f,0x4c,0xbe,0x0d,0xd5,0x31,
- 0xa5,0x33,0x76,0xdc,0xf9,0x7d,0x0d,0x8e,0x7f,0x18,0xba,0xfb,0x06,0xf9,0x22,0xfc,
- 0x80,0xd6,0x27,0x19,0xec,0x79,0x0b,0x38,0xcc,0x63,0x02,0xf9,0x2e,0xad,0xfe,0xca,
- 0xa2,0x5b,0x6e,0x9e,0x70,0xf0,0x4f,0x47,0x85,0xb9,0xde,0x16,0xa5,0x5a,0xb9,0x62,
- 0x77,0x31,0xc5,0x1e,0x12,0x76,0x45,0x6b,0xef,0x92,0x2f,0x25,0x2f,0xc2,0x03,0xaa,
- 0x86,0xaf,0xde,0xeb,0x8e,0xfd,0x61,0xf8,0x07,0x9d,0x38,0xf5,0x25,0x95,0x15,0xf0,
- 0x1e,0xb4,0xd0,0x2b,0x93,0xe2,0x49,0xfd,0x9c,0xde,0xb2,0x95,0x3d,0xff,0x69,0xfa,
- 0x56,0xa2,0x89,0x7d,0x25,0x9e,0xca,0xe0,0x1f,0x30,0xfd,0x11,0x5b,0x2d,0x5c,0x90,
- 0xae,0xa4,0xe2,0x51,0x7d,0x12,0x4a,0x60,0x49,0x5c,0x4c,0x6b,0xe3,0xed,0xe1,0xd0,
- 0x34,0x9a,0x85,0x7f,0x98,0x7f,0x24,0xe1,0x15,0xbe,0x84,0xaf,0xd6,0x72,0x7c,0xe8,
- 0xd6,0x21,0xbc,0x60,0x49,0xa2,0x6d,0x0c,0xf6,0x27,0xf8,0x95,0x7d,0x59,0xf8,0x87,
- 0x39,0xd9,0x65,0x4a,0x82,0xd4,0x32,0x21,0xcc,0xf0,0x8c,0xf8,0x92,0xdc,0x2b,0x84,
- 0xbf,0xc6,0xae,0x0c,0xcb,0xbd,0xcb,0x1a,0x8e,0x28,0xbb,0xd9,0x8b,0x6f,0xbf,0xef,
- 0x95,0x52,0x2d,0x3c,0x6e,0xe2,0x9f,0x5a,0x61,0x0f,0xc7,0x3f,0x64,0x26,0xf4,0x11,
- 0x2e,0x8c,0x41,0x2f,0x0a,0x9b,0xc8,0x4b,0x8e,0x7e,0x64,0x49,0x32,0xf1,0x40,0x05,
- 0x91,0x84,0x9d,0x1c,0xff,0x30,0xb5,0x74,0x41,0x20,0xb2,0x48,0xf5,0x0f,0x4b,0x5d,
- 0xed,0x08,0x15,0xca,0xf6,0x39,0xeb,0x61,0x50,0x66,0xb0,0x07,0x1a,0x18,0xec,0xf1,
- 0x68,0xd6,0xc4,0xc5,0x00,0xb3,0x3f,0x0d,0x74,0x03,0xda,0x9f,0x11,0xf3,0xca,0x07,
- 0xc4,0x7e,0x9e,0xfe,0x4b,0x2d,0x3c,0xb0,0x49,0x44,0xe1,0x86,0xc8,0xb4,0x44,0xf9,
- 0x6e,0x72,0x96,0xc1,0x1e,0x86,0x7f,0xce,0x16,0x9e,0xd5,0xf9,0x7c,0x1f,0x73,0xf0,
- 0x4f,0x3f,0xc7,0x0f,0x2d,0x7a,0x30,0xf1,0x43,0xae,0x9f,0x0e,0x86,0x07,0x4e,0xe8,
- 0xfb,0xd9,0x15,0x6f,0x42,0x3c,0x1c,0x7b,0xf5,0x7a,0xf6,0xfe,0xe2,0x1b,0x9d,0xc1,
- 0x3f,0x51,0xc4,0x3f,0x20,0xc7,0x18,0xfe,0x61,0x82,0x87,0x09,0x69,0xf6,0x60,0x6c,
- 0x5b,0xb1,0xa5,0x26,0x49,0xe2,0xb5,0x7e,0x34,0x8c,0xf7,0x3b,0xfa,0x04,0x18,0xc6,
- 0xf9,0x2e,0x90,0xd5,0x8d,0x92,0xba,0x13,0x56,0x2c,0xf6,0x94,0xc5,0x7a,0x10,0xf8,
- 0xdd,0x5a,0xa9,0x92,0xe1,0xd6,0x2e,0xd0,0xa2,0x4a,0xa8,0xd0,0x10,0x32,0x78,0x6c,
- 0x1b,0x70,0x90,0xa3,0x72,0xfd,0x33,0x21,0x81,0xfb,0x17,0xb8,0x5b,0xaf,0x64,0x40,
- 0x94,0xf6,0x06,0xfc,0x1d,0x4c,0xb1,0x6b,0x32,0xf8,0x07,0xf1,0x12,0x9b,0xaf,0x17,
- 0x7f,0x56,0x66,0x16,0x18,0x5e,0x15,0xdf,0x11,0xf6,0xd3,0x92,0xbf,0xf7,0xfe,0x23,
- 0xd3,0x00,0x22,0x3a,0xdf,0x43,0xcc,0x31,0xd9,0xf7,0x7f,0xc2,0xc4,0xc3,0x0b,0x98,
- 0x12,0xd8,0xc4,0x25,0xae,0x8d,0x31,0x7a,0x72,0xc1,0xfc,0x68,0x63,0x42,0x5c,0xa3,
- 0x9e,0xa4,0xe1,0x56,0x76,0xe5,0x3d,0x6a,0xdf,0x3f,0x60,0xe1,0x9f,0x12,0xc4,0x3f,
- 0x28,0x78,0x99,0xa0,0x1d,0x81,0xfb,0x64,0x6f,0x8f,0x52,0x1d,0x1d,0xd1,0x99,0xfe,
- 0x7b,0xc4,0x75,0x19,0xfc,0x23,0x05,0xe0,0x3d,0x21,0x18,0x2f,0x4a,0x16,0x6e,0x97,
- 0x10,0x08,0x15,0x27,0xc9,0xf5,0xb0,0x0e,0x6e,0x88,0x31,0x44,0x74,0xbd,0x7c,0x28,
- 0xd1,0x90,0x5a,0xb4,0x4d,0x5c,0x97,0xc1,0x3f,0xab,0xf9,0x6b,0x12,0xb5,0xed,0x33,
- 0x3a,0xee,0x46,0x06,0x84,0x82,0x9d,0x45,0xa1,0x42,0x2f,0x79,0x98,0x06,0x27,0xd8,
- 0xd6,0x75,0x9d,0x66,0xdb,0x9f,0x6a,0xc1,0xc4,0x0f,0x4a,0x67,0xe1,0x66,0x99,0x01,
- 0xa1,0xa1,0xa2,0x6f,0x90,0x4b,0x61,0x2d,0x5c,0xa3,0x17,0xcd,0xf5,0x57,0x09,0x6b,
- 0xe5,0xfa,0x7d,0x4a,0x27,0x89,0x3b,0xf6,0x27,0x20,0xa3,0xbd,0xba,0x31,0x5d,0x72,
- 0x8e,0xcc,0x80,0xbf,0xa7,0x37,0x9e,0x2a,0x3a,0x33,0x6d,0x1e,0xf9,0x37,0xda,0x18,
- 0xad,0x5f,0x25,0xce,0x80,0x9f,0xd2,0x1b,0xdf,0xf6,0xad,0xea,0x5e,0xe7,0x38,0x3c,
- 0xf9,0xd2,0x1d,0x68,0x46,0x8c,0xe2,0xdd,0x5f,0xb2,0x0c,0xcb,0xee,0x0d,0x69,0xb4,
- 0x27,0x7a,0x49,0xaa,0xed,0x18,0x39,0x4b,0xd8,0x95,0xc7,0x5c,0xf8,0x47,0x2f,0xe0,
- 0xfb,0xf7,0xf4,0x95,0x67,0xc4,0xfb,0x98,0x10,0x1e,0xf3,0x9d,0xac,0x99,0x57,0xf6,
- 0x72,0xe2,0x86,0xed,0xde,0x49,0x31,0x4c,0x5e,0xed,0x6a,0xfe,0x4d,0x70,0x9c,0xa1,
- 0x73,0x07,0xff,0x30,0xfb,0xf3,0x5b,0x7c,0xfe,0x7b,0xc5,0x5b,0xe9,0x2e,0xa8,0x1f,
- 0x57,0xbe,0x51,0x7e,0x5b,0x74,0x2d,0x5c,0xeb,0x91,0x3b,0xbb,0x97,0xfa,0xd7,0x4a,
- 0xd5,0x37,0xcb,0x11,0xf2,0x84,0xf3,0xfb,0x3e,0x0c,0xf6,0x7c,0x9b,0xaa,0x28,0x13,
- 0xde,0x64,0xb3,0x5b,0x2a,0x6d,0x10,0xae,0x59,0x0f,0xf7,0x90,0x3b,0xf5,0xd5,0xf2,
- 0xd5,0x3d,0x95,0x47,0x49,0xad,0xe3,0x2f,0xa2,0xcc,0xfe,0x3c,0x6a,0xfa,0x77,0xae,
- 0xd8,0x74,0x5f,0x88,0x2c,0xa3,0x22,0x68,0x09,0x79,0x2e,0xe9,0x85,0x75,0x46,0xad,
- 0x2a,0xcb,0x33,0x1f,0x71,0xd6,0xe7,0xdc,0xe9,0x3b,0xa4,0xd3,0x6c,0x52,0x0a,0xf3,
- 0x17,0x5e,0x36,0x4d,0xe6,0x38,0xc4,0xbf,0x85,0x57,0xa0,0xae,0xd3,0xfb,0xac,0xe7,
- 0x6e,0x7d,0xa4,0x67,0x8e,0x26,0x6f,0xea,0xf6,0xf4,0xd8,0xfa,0xa4,0xb0,0xd2,0xb6,
- 0xb7,0xc7,0x98,0x7f,0xb9,0xcf,0x98,0x96,0x12,0xdf,0x55,0x4f,0xe3,0x1b,0x37,0x00,
- 0x5f,0x91,0x4f,0xc9,0xf3,0x54,0xdf,0x00,0x5b,0x5a,0xf6,0xfd,0xbb,0x54,0xee,0xe6,
- 0x46,0xc4,0x90,0x38,0x9f,0x09,0x37,0x1a,0x8b,0x27,0xc4,0x49,0xf5,0x57,0xc0,0x96,
- 0x59,0x4a,0x3c,0xb7,0x69,0x44,0x6a,0x26,0xe2,0x68,0x79,0xba,0xdd,0x1e,0x3f,0x04,
- 0x2b,0x05,0xe6,0xbf,0x86,0x94,0x94,0x68,0x02,0xa1,0x92,0x14,0x79,0x5b,0xfa,0x21,
- 0x34,0x5c,0x7f,0x65,0x8a,0xbc,0x2a,0xf5,0x1a,0x7e,0x59,0x49,0x92,0x89,0x0c,0xfe,
- 0x91,0x70,0xbf,0xcf,0xf1,0x8f,0x09,0x84,0x3a,0x52,0x33,0xff,0x16,0xbe,0x27,0x34,
- 0x24,0xd9,0x95,0xdf,0x90,0xed,0x86,0x3f,0xad,0xc4,0x49,0x32,0x83,0x7f,0x10,0x1f,
- 0xaa,0x4c,0x3f,0xb3,0xc9,0x62,0x8d,0xa1,0xeb,0x11,0x4f,0x88,0x8c,0xd0,0x47,0x85,
- 0xa0,0xbe,0x30,0x34,0xf3,0x20,0x7b,0x9d,0xd8,0x46,0x4c,0x85,0x7d,0xce,0xfe,0x8b,
- 0x16,0xad,0x94,0xf7,0xea,0x6c,0xbe,0x27,0xae,0x0e,0x1a,0x7b,0xf5,0x2b,0xf7,0x57,
- 0xfd,0x5d,0xcd,0x38,0xfd,0x05,0xe2,0x1f,0x74,0x34,0xe3,0x42,0x53,0x17,0xb3,0xc0,
- 0x49,0xd1,0x1e,0x9f,0x2c,0xb6,0xf0,0xcf,0x84,0x78,0x4c,0x3a,0x1f,0x68,0x19,0x2e,
- 0xd9,0xd5,0x6d,0xe8,0xec,0x0a,0x6c,0x98,0x60,0xfe,0xe8,0x4e,0xe1,0x46,0x58,0xa2,
- 0x8b,0xd9,0xf8,0x07,0xd7,0x8f,0xef,0x8c,0x12,0x80,0x5f,0xd2,0xeb,0xf6,0xfb,0x4e,
- 0x3c,0x78,0xa3,0x74,0x50,0xbb,0x41,0x5d,0x6c,0x88,0x21,0x83,0x6d,0xfc,0xc1,0x3b,
- 0x4c,0x5c,0xf1,0x1f,0xf5,0x03,0x8c,0xff,0xa4,0xc5,0x14,0xc3,0x3f,0x7d,0xb4,0x66,
- 0x58,0xd9,0x4d,0xaa,0xe4,0xde,0x8a,0xad,0xaa,0xbc,0x5e,0xac,0x36,0x06,0x3b,0xfd,
- 0x77,0xca,0xab,0x5b,0x5d,0xf1,0x1f,0x1b,0xff,0x0c,0xb0,0x6d,0xc8,0xc3,0x18,0xe8,
- 0xf0,0x13,0xef,0xc6,0x18,0x04,0x2a,0x65,0x89,0x80,0x9a,0xaa,0xd6,0x48,0x07,0x71,
- 0xc7,0x7f,0x2c,0xfc,0xf3,0x17,0xa8,0xcf,0xde,0x6e,0x44,0x3b,0xc4,0x5b,0xf8,0xc3,
- 0x98,0x5f,0x93,0x77,0x2c,0xac,0x83,0xb9,0xd4,0x9f,0x94,0x07,0x0b,0x33,0xf1,0x1f,
- 0xbd,0x74,0xa5,0x1d,0x9f,0xa9,0x95,0x7e,0xd2,0x33,0xc7,0xf0,0x25,0x7e,0x10,0x84,
- 0xf8,0xc1,0x79,0x2b,0xbc,0x5e,0xf1,0x6a,0x38,0x99,0x1c,0xf0,0x33,0x20,0x94,0x1d,
- 0xff,0x31,0xdd,0x7a,0xf7,0x31,0xee,0xdf,0x37,0xdc,0xa1,0x9c,0x21,0x3f,0x61,0x1b,
- 0xdb,0x0d,0x09,0x31,0x2d,0x1f,0x87,0xf9,0xfa,0xff,0xd0,0x17,0x65,0xc5,0x7f,0x64,
- 0x8e,0x3f,0x77,0x8a,0xb5,0x0c,0x4d,0x85,0x0f,0xb2,0xd5,0x15,0x84,0x37,0xe0,0xa9,
- 0x5e,0xef,0xa6,0x9a,0xea,0x7d,0x6c,0x23,0xd6,0xea,0x7d,0xd0,0x8d,0x7f,0x0a,0xcc,
- 0x65,0x50,0xf4,0x6c,0xdb,0x62,0xd2,0x67,0x34,0xa6,0x7d,0x94,0xcc,0xd7,0xfb,0xc0,
- 0x1f,0xf0,0x3e,0xe2,0xa9,0x91,0x47,0x96,0xfa,0x3b,0x3c,0x9b,0xc9,0x1f,0x9c,0xf5,
- 0x60,0xe2,0x9f,0x00,0x7b,0x5f,0xfc,0x1d,0xd0,0xdd,0xce,0xac,0xcd,0xec,0x4b,0x8a,
- 0xe1,0x81,0x75,0x33,0x13,0xb7,0x84,0xd6,0xdc,0x22,0x0c,0x50,0x2d,0x59,0x39,0xdb,
- 0x9f,0xc1,0x3f,0x93,0xc2,0x0c,0x81,0xe3,0x81,0x53,0x85,0x5f,0x34,0xa6,0xd1,0xfa,
- 0x31,0xcf,0x42,0x32,0x43,0x5a,0x9b,0xaa,0x8e,0xca,0xb7,0x14,0xce,0xf8,0xdc,0x3f,
- 0xd3,0x6a,0xcd,0x73,0x4b,0xd9,0xb9,0x4c,0xfc,0x47,0x46,0xb3,0x36,0xd7,0xf0,0x3d,
- 0xd3,0xb6,0x30,0x29,0xa4,0xe6,0x8f,0x2b,0xdb,0x15,0x2f,0xfc,0x6b,0x60,0xb7,0xfe,
- 0x59,0xed,0xba,0x02,0xe9,0x43,0x08,0xc5,0x83,0x21,0xf1,0xf5,0x4c,0xfc,0xa7,0xd8,
- 0xd4,0x4f,0xf1,0xce,0x1a,0x06,0x9b,0x85,0x46,0xe3,0xca,0xb4,0x78,0xc6,0x7f,0x5e,
- 0x63,0xdb,0x84,0xf4,0xa7,0xce,0xc0,0x2f,0x19,0x42,0x28,0x9e,0x10,0xa7,0xc4,0x3f,
- 0x12,0x7b,0x6d,0xc3,0xc7,0x8b,0x93,0x4a,0xbd,0xff,0x77,0xb8,0xd1,0x88,0x88,0x7f,
- 0x80,0xd7,0x48,0x4b,0x54,0x36,0xdc,0xf1,0x1f,0x66,0x7f,0xae,0xe3,0xf6,0xc4,0x53,
- 0x55,0xb4,0x96,0x2d,0x8c,0x75,0x11,0xe2,0x4d,0x30,0xb3,0xa3,0xcb,0x11,0x71,0x36,
- 0x59,0x0b,0x8d,0xba,0x6c,0x78,0x32,0xf1,0x1f,0x6a,0xe3,0x1f,0x84,0x79,0x6b,0xe9,
- 0x57,0xc6,0x2a,0x3b,0x5a,0x67,0xc0,0xa3,0x54,0x4b,0xcb,0x4b,0xc9,0x43,0xb5,0xab,
- 0x69,0xfd,0x5d,0x45,0x4b,0x5d,0xf1,0x1f,0x0b,0xff,0x0c,0x2d,0x0a,0x91,0x25,0xd0,
- 0x9d,0x0c,0x1a,0x9e,0x62,0x06,0x2c,0xbb,0x13,0xfe,0xc8,0xf6,0xaa,0x56,0xb6,0x91,
- 0x8f,0x30,0xc3,0xbe,0x71,0xa6,0x3b,0xfe,0xb3,0xdd,0xc4,0x3f,0x9a,0xb8,0x2a,0xfa,
- 0xd2,0xd6,0x30,0x8d,0xa7,0xc5,0x80,0xf4,0x63,0xe9,0xab,0x49,0xef,0xb1,0xee,0x67,
- 0xe0,0x10,0x6d,0x61,0x7f,0xbc,0xdb,0x15,0xff,0x61,0x2b,0x83,0xc3,0x80,0x1e,0x31,
- 0x59,0xc6,0x1d,0x13,0xd4,0x1c,0x65,0x57,0x9e,0xbb,0xc4,0xb7,0x46,0x64,0xae,0x4a,
- 0x0e,0x97,0x95,0xf4,0xe4,0xe2,0x1f,0xb4,0x4e,0xfd,0x62,0x3b,0xf3,0x86,0xcc,0x9b,
- 0x27,0xba,0xb7,0xc1,0x4f,0x36,0x35,0x45,0x83,0x09,0xf1,0x2a,0x38,0x49,0x9b,0xa2,
- 0x05,0x9b,0x72,0xe2,0x3f,0xe8,0x76,0xfb,0x1e,0x21,0x57,0x91,0xde,0x68,0x9d,0x7e,
- 0x3f,0xc3,0x33,0x72,0xaf,0xe4,0xef,0x94,0x2f,0x41,0x8f,0x9c,0xdc,0x1a,0x5d,0xf4,
- 0x90,0x2b,0xfe,0x53,0x59,0x60,0xba,0x69,0x65,0x63,0x61,0x2d,0xe9,0xa3,0x75,0x51,
- 0x06,0x84,0x7a,0xe8,0xc3,0xc4,0xdf,0x11,0x4f,0x94,0x8c,0x69,0x7b,0x54,0x7f,0xfb,
- 0xa5,0xee,0xf8,0x8f,0x1b,0xff,0x48,0x02,0x68,0xf7,0xc8,0x15,0xa4,0x58,0xea,0xd2,
- 0xb5,0x51,0x59,0x2d,0x5c,0x0d,0x3b,0x17,0x68,0x91,0xef,0x55,0x78,0x32,0xf1,0x9f,
- 0xb9,0xc5,0x88,0x37,0x10,0xe4,0x30,0xfb,0xd0,0x81,0x61,0x1f,0x60,0xd3,0x7c,0x03,
- 0x06,0x60,0x31,0xc5,0xf9,0x42,0x13,0x2d,0xa6,0xa2,0x2b,0xfe,0x73,0x85,0x35,0xdf,
- 0x88,0xf0,0x31,0xdb,0xb6,0x87,0x3f,0x57,0x72,0x58,0xfc,0x8d,0xe7,0xac,0xfe,0x3c,
- 0xc3,0x3f,0x6d,0xff,0x00,0xe7,0x75,0x0e,0x84,0xdc,0xf1,0x1f,0x2b,0x1e,0x32,0x2a,
- 0x9e,0xd0,0x3e,0x86,0x96,0x85,0x55,0xa3,0x62,0xed,0x2d,0xef,0x83,0x12,0x91,0x5e,
- 0x8f,0xcd,0x4e,0x17,0x43,0xf3,0xc2,0xe2,0xd1,0x6e,0x57,0xfc,0x47,0xe5,0xf1,0x1f,
- 0x06,0x72,0x08,0x17,0x2a,0x7d,0xa4,0x55,0x28,0x8d,0x47,0xfd,0x95,0x72,0x0f,0xa9,
- 0x86,0xf8,0x3d,0x4d,0x0f,0x30,0x44,0xe4,0x8a,0xff,0x48,0xed,0xe6,0x7c,0x43,0x31,
- 0x0e,0x84,0x5a,0x3d,0xb3,0xd7,0xad,0xa6,0x5b,0x3a,0x92,0x11,0x86,0x70,0xa4,0x9e,
- 0x2e,0xb9,0xb6,0x55,0x56,0x63,0x99,0xf8,0x4f,0xe5,0x74,0x13,0xff,0x70,0xf4,0xb8,
- 0xb7,0xb5,0x61,0x81,0xa2,0x92,0x1e,0xdc,0x7f,0x7d,0x4e,0xde,0xb8,0xae,0x96,0x16,
- 0x81,0x7f,0x81,0xbc,0x69,0xca,0xf8,0x8f,0x38,0x26,0x9f,0x8c,0xdc,0xa7,0xcb,0xdf,
- 0x13,0xb7,0xc1,0xe3,0xb1,0xa6,0x48,0xb0,0x02,0xae,0x82,0xfd,0xfa,0x53,0x51,0x6f,
- 0xbf,0x98,0x89,0xff,0x8c,0x3b,0xf1,0x9f,0x72,0xf6,0x0f,0x85,0xf9,0xad,0xc5,0x09,
- 0x71,0xa5,0x7c,0x52,0x9e,0xbf,0xdc,0xd7,0xff,0xe9,0x97,0xc8,0x87,0xea,0xfc,0x85,
- 0x8d,0x65,0x7d,0x99,0xf8,0x8f,0x8d,0x7f,0x7c,0x71,0x86,0x7f,0x46,0xf4,0x26,0x58,
- 0xdc,0xd3,0xac,0xa9,0x23,0x64,0x8e,0xe8,0xa3,0x35,0xcb,0x8c,0xf8,0xe2,0x26,0xd5,
- 0xdb,0x23,0x7a,0xf2,0xe2,0x3f,0x4a,0xda,0x33,0x57,0xba,0x5f,0xaf,0x49,0x79,0xd2,
- 0xa4,0x8e,0x30,0x21,0xa6,0xa4,0xc9,0x3c,0xf8,0x71,0xec,0xd1,0xe4,0x8a,0x71,0xe2,
- 0xc9,0xe0,0x1f,0x7b,0xff,0x15,0x22,0x52,0x6d,0xf7,0x88,0x36,0x01,0x21,0x7d,0x31,
- 0x5d,0x47,0x6b,0x23,0xec,0xca,0x8b,0xc2,0x16,0xaa,0xb5,0xcb,0x15,0x97,0x2d,0x74,
- 0xd6,0x5b,0xd2,0xc6,0x3f,0xab,0xc8,0x25,0xb0,0xd6,0xa8,0xde,0xb7,0xb0,0x93,0xfc,
- 0x57,0xe8,0xd6,0xab,0x75,0xb6,0x6d,0xd9,0x04,0x6b,0xe4,0x6a,0xda,0x7f,0x07,0x59,
- 0xe1,0x8c,0xdf,0xce,0xf0,0x0f,0xc6,0x7f,0x7c,0x93,0x62,0x19,0xbc,0x4c,0x1f,0x4c,
- 0x7b,0x57,0x29,0x5f,0x24,0x2f,0x75,0x5d,0x9b,0xdc,0xb0,0x4a,0xfc,0x03,0x79,0x9f,
- 0x36,0x47,0xbd,0x47,0xca,0xff,0xd6,0x89,0xff,0xc8,0x56,0xfc,0x87,0x81,0x6a,0xa3,
- 0xcc,0x32,0x2c,0x3f,0x4a,0x9e,0x24,0xcf,0x03,0xb3,0xf0,0x5f,0x23,0xb8,0x7f,0x67,
- 0x4b,0x25,0xe6,0xd8,0x1f,0xe0,0xfe,0xeb,0x86,0xb4,0x6f,0xbf,0x38,0x07,0xce,0xd1,
- 0x96,0x31,0xf6,0x87,0xc2,0xf2,0xb9,0xc4,0xd3,0xcb,0x97,0x4c,0x92,0x53,0xf4,0x97,
- 0x9b,0xd8,0x46,0x6c,0x9c,0x79,0x47,0x37,0xfe,0xe1,0xcf,0xff,0x48,0xab,0x8a,0xeb,
- 0x61,0x9c,0xb9,0xe9,0x2a,0x78,0x2a,0x54,0x7d,0xf3,0xa2,0xce,0x32,0x55,0x7b,0x6a,
- 0x96,0x8f,0x16,0xeb,0x4d,0x75,0xba,0x73,0x7f,0x1e,0xff,0xb9,0xc6,0x50,0xa2,0x24,
- 0x02,0x4f,0xab,0xf5,0x07,0x19,0xfe,0xa9,0x82,0xdd,0xa4,0x7a,0x75,0xd1,0xff,0x45,
- 0x2a,0x7b,0x9e,0x84,0xfa,0xf6,0xa2,0x65,0x04,0x1c,0xfb,0xa3,0x59,0xfb,0x2f,0x05,
- 0x88,0xae,0xee,0xf4,0x72,0x47,0xef,0x85,0xeb,0x65,0x7f,0x92,0xe9,0xb3,0x08,0x9e,
- 0xd1,0x83,0x0f,0x5d,0x73,0x95,0x2a,0xe7,0xc4,0x7f,0x98,0x7f,0x09,0xd5,0x2c,0xd3,
- 0x4f,0x1a,0x61,0xe3,0xf2,0x14,0xdb,0x5f,0x7c,0x83,0x36,0x45,0x8a,0x37,0x79,0x66,
- 0x96,0xb2,0x2b,0x91,0xe2,0xcd,0x45,0x75,0x99,0xf8,0x0f,0x58,0xf6,0x36,0x71,0xf9,
- 0x76,0x1c,0x3f,0x7a,0xe5,0x13,0x35,0xc7,0xe4,0x49,0x3a,0xaf,0xc3,0xb7,0x45,0xf9,
- 0x67,0xed,0x54,0x24,0x9c,0x28,0xd9,0x24,0x66,0xe2,0x3f,0x82,0x89,0x7f,0x0c,0xdf,
- 0xbb,0x62,0x08,0x5e,0x8b,0x7d,0x6b,0xc2,0x3b,0x51,0xae,0xaa,0x6f,0x18,0xcd,0x34,
- 0xd8,0x2f,0xce,0x96,0xce,0xca,0x0a,0x5b,0xea,0x5d,0x86,0x13,0xff,0xa1,0x56,0xfc,
- 0xa7,0xef,0x31,0x52,0xa4,0x9f,0x36,0x1a,0x26,0xb6,0xff,0x28,0x76,0x75,0xf4,0x87,
- 0x50,0x17,0x90,0xe7,0x76,0x7f,0x09,0x06,0x87,0xfd,0x51,0x65,0x1d,0x89,0x66,0xc5,
- 0x7f,0x7e,0x08,0x77,0xf3,0x7c,0x8d,0xd6,0xab,0x05,0x47,0x8b,0x54,0xa2,0x15,0xf5,
- 0xcb,0x77,0x45,0xe5,0x01,0xff,0xdf,0x6a,0x7b,0xe2,0xfe,0xce,0xcb,0xb7,0xb7,0xa6,
- 0xb3,0xf1,0x0f,0xea,0x47,0x25,0x72,0xfb,0x4e,0x3d,0x38,0x24,0x03,0xdb,0x88,0x25,
- 0xd9,0x8a,0x61,0xfb,0x7d,0x7c,0x55,0x35,0xe8,0x03,0xf6,0x4a,0x3b,0xea,0x2f,0x5e,
- 0xc9,0xf1,0xb0,0xaf,0xa7,0x4d,0x53,0x5f,0xd1,0x1b,0x86,0x8b,0x1f,0x28,0xd7,0x98,
- 0xfd,0x69,0xd2,0xbd,0xa9,0x1a,0x4d,0x9d,0x44,0x8b,0x94,0x10,0x8d,0xab,0x6d,0xfb,
- 0x93,0xbc,0xc2,0x9a,0x6f,0xf7,0xa3,0x93,0xf1,0xf3,0x24,0xec,0xfd,0xa7,0x7d,0x66,
- 0xda,0x02,0x7c,0x13,0x8d,0x29,0x38,0xc3,0x9c,0x8f,0xcf,0xb8,0x7d,0xdc,0xb1,0x3f,
- 0x56,0xfe,0x4b,0x5b,0xd9,0xd1,0x76,0x37,0x9c,0xaf,0x6e,0x4e,0x6f,0x18,0x14,0x3f,
- 0x60,0xe3,0x9b,0x47,0x8b,0x57,0x89,0x9d,0xa3,0x07,0x2b,0x9a,0xbd,0xde,0x17,0xc4,
- 0xce,0x4c,0xfc,0x07,0x18,0xfe,0xe9,0x99,0x97,0x96,0x07,0x49,0x03,0x3c,0x9f,0x60,
- 0xe8,0x6e,0x90,0x7c,0x00,0xcf,0xaf,0xaa,0x39,0x5c,0xbc,0xbd,0x55,0xdb,0xc7,0x0c,
- 0x51,0x95,0xbc,0xa9,0x55,0x73,0x7e,0x5f,0x2b,0xfe,0x93,0x96,0x43,0x7e,0x9c,0x38,
- 0xdf,0x7d,0x1f,0x2c,0xda,0x0b,0xda,0x48,0x51,0xaa,0xb0,0x9d,0x52,0x55,0xd3,0xe3,
- 0x85,0xad,0x24,0x13,0xff,0x29,0x45,0xfc,0x53,0x07,0xf2,0xa0,0x1f,0x7f,0x08,0x3f,
- 0x2a,0x96,0x01,0x5d,0xe2,0x37,0x8a,0xb6,0x96,0xf9,0xb5,0x38,0xf5,0x17,0xca,0xf1,
- 0x58,0xc8,0xb1,0x3f,0x3a,0xcf,0x7f,0xcd,0x1f,0xf6,0xce,0x56,0x56,0x4a,0xa7,0x61,
- 0xc0,0x04,0xc6,0x1f,0xd2,0x01,0xbd,0x3e,0x21,0x7e,0x09,0x46,0x92,0x03,0xd4,0xbb,
- 0x9e,0x19,0x53,0xfb,0xfe,0x69,0xc4,0x3f,0x84,0xe9,0xc7,0x10,0x9f,0xc5,0x6d,0x85,
- 0x15,0x08,0xc2,0x6d,0xe9,0x48,0xb7,0x21,0x7f,0x28,0xcd,0x5f,0xf6,0xdf,0x54,0x71,
- 0xd2,0x59,0x3f,0x86,0x99,0xff,0x3a,0xe8,0xdd,0x59,0x13,0x84,0x8f,0xa0,0xc9,0xbc,
- 0xff,0x49,0x75,0xb6,0xf1,0xd9,0x84,0xf8,0x37,0xf2,0x2b,0xd0,0xf4,0xa6,0x77,0x77,
- 0x76,0xfe,0x0b,0xd7,0xcf,0x84,0xfc,0x2f,0x0c,0xbf,0xfd,0x9e,0x8d,0xc7,0xe7,0x97,
- 0xf6,0x76,0x6d,0x1d,0x8a,0x4b,0xc4,0xcf,0xfc,0xef,0xd6,0xcf,0xc9,0xfd,0x64,0x20,
- 0x07,0xff,0x30,0xfd,0xcc,0xaf,0x43,0xfd,0xf0,0x44,0xd8,0x41,0xd8,0x49,0x6b,0xd9,
- 0x46,0xac,0xb5,0x48,0xeb,0x56,0xa3,0x9a,0x7c,0x0d,0x99,0xeb,0xe0,0x9f,0x28,0x8f,
- 0xff,0x7c,0x25,0x2d,0xaf,0x62,0xfb,0xa9,0x1f,0xd0,0x6a,0xb6,0x7f,0x21,0x6f,0xc1,
- 0xae,0x44,0xf5,0x58,0x7c,0x55,0xeb,0x25,0x42,0x4f,0xa2,0xba,0x56,0x5e,0x48,0xfa,
- 0x5d,0xf9,0x2f,0x2f,0x7c,0x24,0xcc,0x37,0x82,0x82,0x58,0x22,0x7d,0x44,0x77,0x8f,
- 0xfb,0xe6,0x89,0x87,0xf4,0x0f,0x85,0xdd,0xc6,0x67,0x43,0xa2,0xb4,0xde,0x50,0x43,
- 0x34,0x08,0x4a,0x59,0x4e,0xfe,0xeb,0x46,0xa3,0xf1,0x43,0x36,0xcd,0xf3,0xf2,0xf3,
- 0x86,0xef,0x43,0xae,0x9f,0x96,0x21,0xa6,0xa8,0xdd,0x70,0x46,0x65,0x0b,0x69,0xdf,
- 0x67,0x22,0x19,0xfc,0xc3,0xf5,0xcf,0xb6,0xa5,0x6c,0x77,0x06,0xa7,0x3b,0xc2,0xc6,
- 0x22,0x2e,0xe8,0xcf,0xb5,0x7a,0x43,0xe2,0xb3,0xf2,0x6b,0xc0,0xec,0xdb,0xa4,0x58,
- 0x97,0x17,0xff,0x09,0x74,0x4e,0x33,0x85,0x92,0x4e,0xf2,0x26,0x3c,0xcd,0x60,0xbf,
- 0xdc,0x49,0x2a,0xa4,0x17,0xa1,0x46,0x97,0x47,0xc5,0x7b,0x73,0xe2,0x3f,0x75,0x38,
- 0xdf,0xb7,0xe0,0xe9,0x64,0x7d,0xfa,0xe1,0x55,0xfe,0xb7,0x8a,0x10,0x11,0xc9,0xab,
- 0x6e,0xbe,0x1f,0xbe,0x6b,0x54,0xa7,0x3d,0xab,0x18,0x3e,0xb7,0xf5,0xdf,0x21,0x1d,
- 0x94,0x98,0x3e,0x25,0x86,0xae,0xcd,0x44,0x98,0x07,0xf5,0xb9,0x2b,0xa1,0x0d,0x07,
- 0xe6,0x62,0x62,0x88,0x6a,0x5f,0xab,0x9b,0xee,0xb9,0x2d,0x13,0xff,0x29,0x40,0xfc,
- 0x33,0x37,0xe9,0xdd,0xc2,0x36,0xe9,0x66,0x22,0x6c,0x1a,0x8f,0x08,0x6d,0x61,0x66,
- 0x73,0x6f,0xdd,0x5b,0xfb,0x76,0x25,0x4b,0xc6,0xdd,0xf9,0x2f,0xc0,0x68,0x43,0xb8,
- 0xcc,0x87,0xde,0x7f,0x82,0x39,0xe2,0x12,0x74,0xc4,0x93,0x6c,0x1b,0xde,0xb8,0x5a,
- 0x4c,0x6b,0x88,0x7f,0x8a,0xe8,0xda,0x8d,0x19,0xfc,0x03,0xe8,0x1f,0xe7,0xe9,0x0c,
- 0x2d,0xa3,0xd0,0x64,0x6e,0xfc,0x3f,0x34,0xc2,0x7a,0xf0,0x01,0xf1,0x6a,0xd2,0x4b,
- 0x9b,0xda,0xa7,0x6d,0x9e,0x96,0x13,0xff,0x11,0x1a,0x3a,0x64,0xf4,0xbf,0x7b,0xa0,
- 0xce,0x74,0xc4,0x7b,0x20,0xa9,0x33,0xfc,0x33,0x93,0x3d,0xff,0xd6,0xce,0xa2,0x4d,
- 0xad,0xae,0xf8,0xcf,0x74,0xc4,0x3f,0x0c,0x34,0x9e,0xe0,0xc3,0xfc,0xd6,0x78,0xf9,
- 0xc7,0x0b,0xe4,0x94,0xa7,0x56,0x7b,0xfc,0x32,0xbc,0x12,0x5b,0x93,0x83,0x7f,0xea,
- 0x19,0xda,0x6c,0x65,0x78,0x40,0x08,0x60,0xa2,0x87,0x09,0x7a,0x5d,0x64,0xbb,0x4a,
- 0x0a,0x8a,0xb6,0xe8,0x5a,0xa4,0xa8,0x42,0xdd,0x97,0x85,0x7f,0x78,0xfe,0xc5,0x10,
- 0x71,0xe2,0x98,0xf6,0xe2,0x82,0x19,0x88,0x90,0x57,0x30,0xfc,0xb3,0x81,0x8a,0x87,
- 0xf2,0xf1,0x4f,0xaa,0x86,0xe1,0x01,0x33,0xda,0x33,0x06,0x1f,0xeb,0xd7,0x45,0x98,
- 0xdb,0xfa,0x18,0x7e,0xda,0xde,0xf2,0x39,0xdf,0xe1,0x9a,0xdc,0xfc,0x57,0x8b,0xee,
- 0xed,0xc4,0xf8,0x89,0xdc,0xa4,0x6f,0xc0,0xf1,0x67,0xf5,0xe7,0x16,0x96,0x8c,0x8a,
- 0x4f,0xca,0x37,0x86,0x5a,0x22,0x2b,0x0f,0x8b,0x37,0xe7,0xe2,0x1f,0x41,0xa6,0x18,
- 0xff,0x69,0xf7,0x0b,0x08,0x84,0xe4,0x41,0x9d,0xe1,0x1f,0x8c,0x25,0x0f,0x76,0x36,
- 0x24,0x3a,0x7a,0x3c,0x25,0x2e,0xfb,0x83,0xd3,0x0c,0xea,0xb2,0xea,0x67,0x13,0x97,
- 0xb4,0x05,0xe6,0x7c,0xa3,0xc1,0xd6,0x85,0x2a,0x61,0x78,0x0f,0x1a,0x22,0x4c,0xb1,
- 0x24,0x17,0xff,0x2c,0x90,0xcd,0xf8,0x9b,0xa9,0xcf,0xa2,0x3d,0xb0,0x55,0x97,0x13,
- 0x85,0x41,0xba,0x47,0x2b,0x31,0x2a,0x19,0x9e,0xcc,0xc1,0x3f,0xf3,0x6f,0xf6,0x3e,
- 0xa0,0xd4,0x4a,0x27,0x19,0xbe,0x5d,0xc2,0x03,0x3b,0x10,0x8e,0x96,0xa8,0xe2,0x63,
- 0x9b,0xbe,0x9e,0x0c,0x47,0xa5,0x47,0xda,0x56,0x38,0xf6,0x67,0xbb,0x89,0x7f,0xa2,
- 0x8d,0xfd,0xa2,0x0d,0x9c,0x08,0x0a,0xcf,0x2e,0xf7,0x25,0xbe,0xf4,0x8e,0x7c,0xb2,
- 0x27,0xdc,0xe1,0x2b,0x13,0xdf,0xcb,0xc3,0x3f,0x0c,0xe4,0x68,0x30,0x21,0x34,0x09,
- 0xa6,0xfe,0x6b,0xe7,0x61,0x46,0xac,0x06,0x46,0x8a,0x9a,0xca,0xbc,0xb4,0x3b,0x0b,
- 0xff,0x60,0x92,0x8b,0xca,0x5f,0x89,0xa1,0xe0,0xa7,0x6c,0xb7,0x3e,0x0e,0xcf,0xe9,
- 0x75,0xd4,0x93,0xf6,0x0c,0xd2,0xfb,0x63,0x5b,0x52,0x1d,0x63,0xf9,0xf8,0xe7,0x48,
- 0x40,0xf5,0x38,0xf6,0x79,0x31,0x3c,0x43,0x03,0x43,0xf2,0x5c,0x22,0x95,0x6d,0x91,
- 0x02,0xfa,0xf5,0x95,0x7e,0x8f,0x63,0x7f,0x6c,0xfc,0x23,0x23,0x0c,0x78,0x1a,0xaa,
- 0x8d,0x22,0x7c,0x7f,0x9f,0xd2,0x1f,0x1f,0xf6,0x7c,0xcd,0xf3,0x33,0x6f,0x4f,0xfc,
- 0x9a,0xd6,0xcb,0xef,0x80,0x80,0x73,0x7f,0x1b,0xff,0x78,0x57,0x89,0x33,0x98,0xfd,
- 0xd9,0x99,0x5e,0xb2,0x6a,0xda,0x5b,0xf2,0x47,0x74,0x30,0x1d,0x5c,0x25,0xce,0x91,
- 0xde,0x5f,0x73,0x43,0xb4,0x78,0x5c,0xa9,0xcb,0xc4,0x7f,0xae,0xc0,0xfd,0xe6,0x7c,
- 0x8c,0xe7,0x73,0xc3,0x32,0x64,0x09,0xcf,0x19,0x8d,0x21,0x65,0xb7,0xc4,0xfc,0x97,
- 0xee,0x4d,0xbb,0xe2,0x3f,0x88,0x7f,0x4e,0xe3,0xfd,0x27,0xc5,0x73,0xf0,0x1a,0xa6,
- 0xbd,0x50,0x38,0x4f,0xc5,0xa3,0x25,0x93,0xe2,0x73,0xea,0xf9,0xc4,0xae,0xf4,0xe2,
- 0x23,0x60,0x64,0xe3,0x1f,0xca,0x9f,0xff,0x1c,0x65,0xdb,0x28,0xc3,0xd7,0x59,0xc6,
- 0xec,0x8f,0x5a,0x3d,0x22,0xdf,0xcb,0x36,0xf2,0x4f,0x75,0x56,0x0f,0xc7,0x23,0xf0,
- 0x5e,0x26,0xbf,0x60,0xe6,0xbf,0x5e,0x92,0x3b,0x63,0x67,0xf4,0xb5,0xa4,0x9a,0x6d,
- 0xdc,0xd8,0x7c,0x77,0xb1,0x89,0xaf,0x9b,0xb8,0xf9,0x3b,0xf0,0x24,0x54,0xeb,0x45,
- 0x0b,0x88,0x91,0x8b,0x7f,0xde,0x66,0xda,0x3b,0x08,0x8f,0x12,0xcd,0xb4,0x3f,0x7b,
- 0xd4,0xad,0x46,0x47,0x68,0x4d,0x1d,0xa4,0x92,0xfe,0x4d,0x45,0x4f,0xe6,0xe5,0xbf,
- 0xe6,0xa7,0xbd,0xcf,0x32,0x7b,0xfb,0x0a,0xf3,0x5f,0x4a,0x0a,0x33,0x5c,0xb4,0x79,
- 0xa8,0x64,0xdb,0xed,0x5b,0x13,0x27,0xd3,0x4d,0xa1,0xe2,0xcd,0x62,0xe6,0x79,0x2c,
- 0xfc,0xa3,0x37,0xa2,0x1b,0x72,0x02,0x41,0xa7,0x31,0x42,0x82,0x61,0x61,0x34,0x44,
- 0x25,0x9b,0xa6,0x65,0xf2,0x2f,0x36,0xfe,0xf1,0x9e,0x79,0xf4,0x8c,0xf4,0x11,0xdb,
- 0x96,0x72,0x7f,0x77,0x56,0x9d,0x63,0x78,0x8f,0x30,0xb7,0xbe,0x9f,0x16,0x12,0x39,
- 0xdd,0x0d,0x4e,0xfc,0xa7,0x4b,0x5a,0x29,0x31,0xff,0xd5,0x29,0x3f,0x85,0x6e,0xd7,
- 0xf6,0xbf,0x7b,0xa2,0x75,0x46,0x5d,0x25,0xd9,0x0a,0x71,0x3a,0x33,0x2a,0xaf,0x23,
- 0xae,0xfc,0x97,0xe9,0xef,0xde,0x96,0xb9,0x9b,0xb3,0xc7,0x7f,0x0f,0x1e,0x1b,0xda,
- 0xfe,0xd8,0x6d,0x75,0x6a,0x9f,0x7f,0x66,0xf2,0x32,0xcc,0xd7,0xdb,0xeb,0x81,0xe3,
- 0x1f,0x8d,0xbd,0x8f,0xdc,0x2c,0x43,0x72,0x74,0x51,0xa8,0x15,0x85,0xed,0xa8,0x28,
- 0x0c,0xcc,0xd6,0xc2,0x23,0xc0,0xde,0x47,0x47,0xfd,0x98,0xff,0xba,0x26,0x6c,0x04,
- 0xd9,0x32,0x18,0x39,0xad,0x35,0x8d,0xfa,0x9e,0x6c,0x7b,0x9f,0xbd,0x2f,0xec,0xf9,
- 0x53,0xec,0x8d,0x38,0x00,0x73,0x30,0x34,0x0a,0x62,0x36,0xfe,0xb9,0x52,0x58,0x92,
- 0x16,0x8f,0x19,0xa7,0x3b,0x98,0x7f,0x3f,0x2e,0x9e,0x49,0x9e,0x87,0xe7,0x8d,0xc6,
- 0x4e,0x71,0x82,0xe3,0xe7,0x62,0xa3,0xc6,0x85,0x7f,0x0a,0xce,0xc0,0xcb,0xc0,0x96,
- 0xcd,0xbe,0x9a,0x39,0xd2,0x9b,0xed,0x2d,0xe9,0x0d,0x23,0x62,0x48,0x3b,0x08,0xd7,
- 0x6d,0x2b,0x66,0xc0,0x69,0xe4,0x4c,0x57,0x8b,0xd7,0x37,0xec,0xe2,0xff,0x50,0xf5,
- 0x18,0x6c,0xa0,0x0c,0xf6,0x74,0xc7,0xea,0xe4,0x27,0xb4,0xa6,0xb4,0x92,0x8c,0x69,
- 0xea,0x11,0xa8,0xa3,0xf2,0x3f,0x7a,0xaa,0x87,0x07,0x69,0x83,0xa4,0xac,0xf6,0xb8,
- 0xf1,0xcf,0x08,0x4f,0x2b,0x2b,0x65,0x7a,0x2d,0x24,0xb4,0x20,0xd2,0x5a,0x7a,0x52,
- 0x71,0x98,0x39,0x52,0x04,0xc4,0x50,0x99,0x69,0x92,0x17,0x11,0x97,0xfd,0x31,0xd8,
- 0x7e,0xfc,0x7b,0x50,0x37,0xa4,0x3c,0x40,0x6a,0xe4,0x1f,0x4a,0x0d,0x43,0x8b,0xb6,
- 0x92,0xc7,0xa0,0x5f,0x63,0xf7,0x8f,0x5f,0x36,0x13,0xf3,0x8f,0x51,0x11,0xf9,0x3f,
- 0xce,0xfa,0xac,0xf8,0x31,0xfc,0x9c,0x3e,0x63,0xf8,0x92,0x62,0xa1,0x34,0x7a,0x14,
- 0xdf,0x97,0xf2,0x27,0xc8,0x48,0xf7,0xec,0x78,0x71,0x5c,0xfc,0x35,0x9a,0x8e,0xbb,
- 0x7c,0x71,0xa2,0xba,0xf2,0x5f,0x3f,0x6e,0x7d,0xbf,0xff,0x3a,0xc3,0x17,0x65,0xcb,
- 0xe0,0x9c,0xda,0x8c,0x81,0xb2,0x28,0x9c,0xa2,0x2d,0x71,0xf6,0xa2,0x9d,0x09,0x9e,
- 0xd1,0x99,0xc6,0x22,0x9f,0x76,0xe7,0xbf,0xd6,0xc3,0x10,0xe2,0x73,0x0c,0x2a,0x1e,
- 0xd4,0x9b,0x0e,0xfa,0xfa,0xcb,0x6b,0xe5,0xfd,0xf0,0x07,0xc3,0x9b,0x10,0xab,0x71,
- 0xe1,0xa9,0xec,0x4f,0x67,0xe7,0xbf,0x7a,0x0d,0x3f,0xc6,0xbb,0x7e,0x03,0x7d,0xcc,
- 0x36,0x97,0x68,0xfe,0x00,0x74,0xff,0xf4,0x5e,0x83,0xed,0x37,0xaf,0x0a,0x3c,0xa3,
- 0x35,0xe8,0x45,0xdf,0x69,0xcb,0xca,0x7f,0x49,0x3c,0xdb,0x3e,0xbb,0x70,0x98,0xd2,
- 0x1e,0x6d,0x62,0x91,0x06,0x5a,0x68,0x2b,0x68,0xfb,0x18,0x1e,0x2e,0x91,0x06,0x68,
- 0x70,0x8d,0x32,0xcb,0x95,0xff,0x8a,0x2e,0x98,0x01,0xab,0x69,0x75,0x5a,0x59,0x55,
- 0xf6,0x87,0xd6,0x6e,0xa1,0x7a,0xdc,0x73,0x90,0x5c,0x06,0x8f,0xad,0xaf,0xd9,0x2a,
- 0xaf,0xa8,0x9c,0x21,0x21,0x30,0x28,0x5a,0x4a,0x8e,0x50,0x7b,0xbd,0x75,0x30,0x7c,
- 0xdd,0x25,0xa7,0x0c,0xdf,0x7c,0x66,0xf6,0x0d,0x39,0x35,0xe6,0xd3,0x44,0x6f,0xec,
- 0x6d,0x48,0x8e,0x04,0xa1,0x48,0xa0,0x1f,0x6a,0xf3,0x65,0x9f,0xdf,0x1d,0xff,0xb9,
- 0x22,0xa5,0x9f,0x1d,0x6d,0x41,0xd8,0x73,0x58,0x3d,0x1f,0x6a,0x31,0x96,0x74,0x8a,
- 0x27,0xe0,0x2d,0xb8,0x91,0x32,0xc4,0x78,0x82,0xed,0xe8,0x5b,0x70,0xab,0x9e,0xc8,
- 0x8a,0xff,0xfc,0x42,0x6f,0xc2,0xf8,0x9b,0x04,0x23,0x1a,0x17,0x02,0x70,0x88,0xe1,
- 0xf3,0xfa,0x51,0x31,0x55,0x75,0xa0,0xbb,0x19,0x0e,0x8e,0xb4,0xb9,0xf1,0x4f,0x15,
- 0xac,0x05,0x6e,0x46,0x2a,0x88,0x58,0xb1,0xc5,0x58,0xd4,0xe9,0xaf,0xaa,0x58,0xc3,
- 0x96,0xa5,0xa7,0x93,0xcc,0x87,0xb5,0x9d,0x8f,0x1a,0x9c,0xff,0x63,0xdf,0xdf,0x80,
- 0x35,0xd0,0xcd,0xe7,0xab,0xce,0x51,0xd7,0xc4,0x99,0x30,0x59,0x76,0x5f,0xed,0x77,
- 0xbb,0xaa,0xd3,0xc2,0x52,0xb2,0x11,0xfe,0x89,0x56,0x33,0x27,0xec,0xc6,0x3f,0x15,
- 0x2f,0x4a,0xdd,0x54,0x1b,0x62,0x66,0xbc,0x40,0xea,0x46,0x7b,0xae,0x7a,0x3e,0x0b,
- 0xdf,0xfb,0x49,0x30,0xed,0xa9,0x22,0x57,0x97,0x3d,0x08,0xfe,0xa8,0x5c,0xe5,0x29,
- 0x73,0xe5,0xbf,0x06,0xc9,0x81,0xad,0x03,0xd4,0x97,0x56,0xe6,0x4a,0xeb,0x68,0x13,
- 0xf5,0xad,0x14,0xbf,0x40,0xbe,0x0f,0xcd,0xa9,0x1f,0xa5,0xd7,0xee,0xd5,0xdf,0x60,
- 0x42,0x70,0x9c,0xb8,0xf1,0x8f,0xc1,0xf6,0xc8,0xc8,0x87,0x11,0x8f,0x26,0x26,0x85,
- 0x30,0x6c,0xe8,0x16,0x93,0xea,0x78,0x34,0x5c,0xe8,0xeb,0x59,0x9b,0xd6,0xc7,0x49,
- 0xb8,0x8a,0x5d,0xc9,0x8e,0xff,0xf0,0x24,0x48,0xbf,0xf8,0x65,0x78,0x85,0xcc,0xe9,
- 0xf4,0x3d,0x22,0xce,0xd4,0xf6,0xd3,0xe7,0xa2,0xde,0xcd,0xe2,0x36,0x69,0x7f,0x4f,
- 0x58,0x87,0x7e,0x31,0xe6,0xc2,0x3f,0x63,0xc8,0xf6,0xd1,0x95,0x4d,0x65,0xd3,0x42,
- 0x5d,0x06,0x13,0xfa,0xcb,0x6a,0xf5,0xde,0x4b,0x93,0x77,0xe0,0xfa,0x81,0xbe,0x48,
- 0xc3,0x52,0x79,0x73,0x61,0x76,0xfe,0xab,0x57,0x66,0x30,0x69,0xe3,0xba,0x5a,0xfd,
- 0x61,0x6d,0x66,0xe4,0x72,0xe6,0xa6,0xa1,0x17,0x4a,0x74,0x66,0x91,0xb6,0xdd,0xd5,
- 0xab,0x37,0xb4,0xcb,0x3b,0x63,0x2f,0x65,0xf8,0x24,0x20,0xdd,0xd6,0x05,0x01,0x8c,
- 0xff,0xd4,0x42,0x97,0x2e,0xe9,0xca,0xe6,0xd6,0xab,0x98,0x90,0x1c,0x8d,0x33,0x8d,
- 0x09,0x5d,0x42,0x30,0x72,0xa0,0x82,0x64,0xf2,0x5f,0x73,0xe5,0x65,0xc9,0x91,0xc0,
- 0x33,0x08,0x7b,0x34,0xf2,0x05,0xb6,0xe7,0xf7,0x51,0x45,0x63,0xf6,0x9e,0x33,0x52,
- 0x92,0x3c,0xff,0xc5,0x84,0x1f,0x67,0xf2,0x5f,0x57,0x9c,0xa0,0x67,0x61,0x8e,0xbe,
- 0xe1,0x30,0x5b,0x2d,0x27,0xf5,0x79,0x6c,0xb5,0x94,0xff,0x14,0xce,0x2e,0x60,0xcb,
- 0xe6,0x6b,0xe5,0x1f,0xab,0x1f,0x42,0x4b,0xe4,0xdb,0x87,0x3f,0xe3,0xc2,0x3f,0xd2,
- 0x18,0x3d,0x19,0x08,0xeb,0xd3,0x26,0xfc,0xb3,0xe1,0x63,0xf5,0x3a,0xfd,0x9f,0x46,
- 0xc5,0x0a,0xed,0x55,0xf9,0xab,0x7a,0x7d,0x44,0x9c,0xdd,0xfb,0x0b,0x68,0xe9,0xf0,
- 0x8e,0xae,0x9d,0xe9,0xc6,0x3f,0xc9,0x41,0x98,0x07,0x8a,0x14,0xd3,0x60,0x44,0xf5,
- 0x83,0x12,0x23,0x49,0xe4,0xff,0x10,0xb9,0x8b,0x54,0x27,0xe3,0x98,0x61,0x5f,0x23,
- 0x96,0x38,0xfa,0x07,0x69,0xd8,0xe0,0xf1,0x9f,0x1b,0x48,0xad,0xb0,0x05,0x6a,0xf5,
- 0x75,0x65,0x31,0x29,0xd0,0x25,0xd7,0xea,0x45,0x6a,0x61,0xa1,0xd1,0x05,0xc1,0x85,
- 0xb2,0x1a,0x83,0x0c,0xfe,0x29,0xfd,0x67,0x84,0x9d,0x0b,0x18,0xec,0x09,0x12,0xa4,
- 0xfd,0x2c,0x4a,0x94,0x6d,0x2b,0xed,0x5a,0xe0,0xd7,0xe5,0x81,0xb2,0x5a,0xa9,0x57,
- 0x68,0x18,0xed,0xd8,0x54,0xe6,0xc2,0x3f,0xea,0x63,0x56,0xbe,0x4f,0x91,0xf4,0x77,
- 0xb5,0x39,0x7a,0x49,0x55,0xf7,0xd5,0xb1,0xfd,0x0b,0x42,0x1d,0xcc,0x6d,0xd5,0xea,
- 0xfb,0x53,0x61,0x1e,0xff,0xe9,0x71,0xf2,0x5f,0xb0,0x8d,0x9e,0x96,0xe7,0x59,0xf1,
- 0x1f,0xf5,0x3e,0x7d,0xc3,0x66,0x71,0xb8,0xe7,0xa4,0xc4,0x60,0x4f,0xe5,0xa2,0x61,
- 0xcf,0x49,0x3a,0xff,0xaf,0x1a,0xcb,0x94,0x0c,0xfe,0xa9,0x53,0x51,0xc9,0x03,0x6c,
- 0xbd,0xbd,0xac,0x2d,0x18,0x6f,0x9d,0x03,0xde,0x58,0xf9,0x51,0x6d,0xa4,0xe3,0xde,
- 0x32,0xef,0x6a,0x31,0xda,0xc3,0xf4,0x4f,0x16,0xf7,0x94,0x2f,0xcc,0xca,0x7f,0xad,
- 0x33,0x18,0xec,0x19,0xab,0xf9,0x86,0xf4,0x96,0x5c,0x43,0xe5,0x0f,0xca,0xbe,0x0e,
- 0xf7,0xb7,0xff,0x3d,0xad,0x3f,0x46,0xe6,0x69,0x4f,0xa8,0x8d,0x5d,0xf2,0xb8,0xe2,
- 0xc9,0xca,0x7f,0xb1,0xf7,0xc5,0x60,0x3f,0xaa,0x42,0xf7,0xd0,0x5a,0x5a,0x19,0x98,
- 0xf9,0x0a,0x6c,0x14,0x34,0xb6,0x63,0x8d,0x15,0xa8,0xdd,0x87,0x83,0x77,0x54,0x96,
- 0x91,0x0c,0xfe,0xa9,0x16,0x66,0xd0,0xb5,0xf1,0x6a,0xa3,0x4f,0x27,0x95,0xd2,0x5a,
- 0xa1,0x3a,0x2a,0x47,0xc8,0x7f,0x15,0xbe,0x03,0xd5,0xa3,0x45,0x9d,0x75,0xed,0xd2,
- 0x3f,0x33,0x68,0xbd,0xf4,0x0e,0xd2,0xd1,0xee,0xdc,0x5f,0x6e,0x81,0x17,0xe8,0xac,
- 0xb4,0x0f,0xf9,0x8a,0xbb,0x63,0xd7,0x46,0x19,0x10,0x7a,0x03,0xde,0xa2,0x8f,0xa6,
- 0xbd,0x2b,0xc4,0xdb,0xe0,0xa5,0x9e,0x16,0x2d,0x38,0x22,0x7a,0x0a,0xed,0x9f,0x8b,
- 0xe1,0x1f,0x72,0x6a,0x05,0xc6,0x37,0x3e,0x6d,0xc0,0x33,0x30,0x57,0x6f,0x4c,0x88,
- 0xc7,0x0a,0x7f,0xb7,0x82,0x69,0x38,0x29,0xa6,0x2e,0x79,0x63,0x05,0xdb,0x7f,0x19,
- 0xec,0x7d,0xb1,0xf5,0x83,0xf9,0xaf,0x83,0x08,0x7b,0xb6,0xb7,0x1d,0x97,0xf7,0x27,
- 0xc2,0xdb,0xc8,0x60,0xcd,0x3c,0x86,0xb8,0x9a,0x19,0x22,0x2a,0x0f,0x47,0x5e,0xdb,
- 0xd8,0x32,0xee,0x9b,0x9c,0x96,0xc8,0xc2,0x3f,0x6b,0xd0,0xfe,0x54,0xfa,0x7f,0x96,
- 0xf8,0xb7,0xed,0xc1,0x15,0xf2,0x7b,0xa4,0xb2,0xe3,0x49,0xed,0xc6,0x8e,0xc0,0x3d,
- 0xeb,0x66,0x1f,0x78,0x51,0xad,0x6f,0x55,0x3a,0xa7,0x3d,0xe1,0xc2,0x1b,0xeb,0x61,
- 0x35,0x5c,0x65,0x28,0x7a,0xe1,0xe1,0x44,0x8f,0x56,0xaf,0x7b,0x6e,0x8b,0x8d,0xc2,
- 0xf7,0x85,0x6b,0x10,0x41,0x55,0xaa,0xdf,0x29,0xaf,0x8f,0xf7,0x2d,0x60,0x08,0xd6,
- 0xd6,0x7f,0xb4,0xe2,0xa0,0x10,0xc3,0x6d,0x6c,0x82,0xbc,0x0c,0x1b,0x0d,0xe6,0xe8,
- 0x2b,0x2e,0x3b,0xaa,0xed,0xea,0x6a,0x50,0xe5,0xd9,0x85,0x1e,0xbd,0x4b,0x0a,0x26,
- 0x94,0xed,0xfe,0x7e,0xe7,0x7d,0x0f,0x4c,0x7f,0x96,0xbc,0x02,0x4f,0xa1,0xff,0x7a,
- 0xbb,0x77,0x64,0x38,0xac,0x7b,0x52,0xe2,0xef,0xb4,0x37,0xb4,0x3a,0x23,0xb8,0x47,
- 0xbc,0x4a,0xfe,0x45,0x6b,0x38,0xaa,0x6c,0x16,0xef,0xcf,0xc2,0x3f,0x6c,0x3f,0x65,
- 0x6c,0xd8,0x54,0x93,0x16,0x4e,0x69,0xe1,0x88,0x2f,0x45,0x02,0x0c,0x78,0xcf,0x18,
- 0x41,0xe2,0x01,0x3d,0x29,0x84,0x5b,0x97,0x7c,0xf7,0x53,0xc9,0x2c,0xfc,0x73,0x9a,
- 0x9a,0xf1,0x1f,0xed,0x8c,0xd0,0xb2,0xc0,0x67,0x74,0xcf,0x65,0xf6,0xf9,0x3a,0xc3,
- 0x7b,0x82,0xfd,0xa8,0x87,0xe4,0x1b,0xc1,0x6b,0x88,0xb5,0xcb,0x9d,0xfc,0x97,0xb4,
- 0x12,0x98,0x13,0xc7,0xe7,0x17,0x49,0x9c,0x36,0x74,0x2e,0xba,0x44,0xfc,0x9b,0xd9,
- 0xdd,0x68,0x36,0x43,0xe5,0x5b,0x61,0x1d,0x34,0x84,0x56,0x3c,0x42,0x42,0x59,0xf8,
- 0x67,0x50,0x63,0xe3,0x93,0xb1,0x99,0x9e,0x67,0x5e,0x68,0xb8,0xa3,0x77,0x67,0x59,
- 0x00,0xfa,0x84,0x86,0x34,0xdb,0x7f,0xfd,0x18,0xc7,0x63,0xa8,0x24,0x1b,0xff,0xa4,
- 0x30,0xfe,0x53,0xe3,0xa9,0xad,0x8e,0xc9,0xc1,0x0e,0x65,0x63,0xac,0xa3,0xac,0x4b,
- 0x0a,0x18,0x81,0x10,0x89,0x11,0xca,0x76,0xe3,0x83,0x59,0xf8,0xc7,0x1b,0x44,0x3e,
- 0x24,0xf3,0xbf,0xdd,0xb5,0x74,0x12,0x1a,0x3a,0x8a,0x07,0xca,0x35,0xf6,0xfc,0xf7,
- 0xa1,0xff,0xad,0x95,0x47,0x30,0xf5,0x4c,0x6b,0xb4,0x2c,0xfc,0x73,0x06,0xc3,0x1a,
- 0xaf,0xb7,0x0d,0x93,0x73,0x70,0xe3,0xcd,0x7d,0x46,0xf9,0x04,0x9c,0x17,0xae,0x05,
- 0x5f,0x84,0xe1,0x3d,0xa6,0x01,0xce,0xff,0x71,0xe1,0x9f,0xe3,0x70,0x30,0x31,0xab,
- 0xd6,0x7b,0xa7,0xf8,0xe9,0x8a,0xf3,0xc1,0x1b,0x0c,0x0b,0x3f,0x5f,0x9f,0x2e,0x7e,
- 0x01,0xf9,0xcf,0xa1,0x66,0xc9,0xf7,0x42,0x4d,0xc8,0xc9,0x1f,0x19,0xaa,0x81,0x24,
- 0x16,0x41,0xde,0x48,0x64,0x78,0x5e,0xaf,0x49,0x97,0x0c,0x92,0x0f,0xd4,0xbd,0x0c,
- 0x11,0xc9,0x6b,0xc8,0xdb,0x80,0xf9,0x2f,0xa5,0xa7,0x35,0xe3,0x8f,0x46,0x0a,0x0c,
- 0x6d,0x6b,0xf5,0x8a,0xb8,0x5c,0x46,0x46,0x1e,0x30,0x13,0x3d,0x1c,0xf8,0xd5,0x41,
- 0x51,0x69,0xd9,0x4b,0x6a,0x8a,0xe1,0xbd,0x45,0x97,0xb4,0x36,0x09,0xf6,0x78,0x63,
- 0x7a,0x92,0xd9,0x88,0xba,0x2e,0xb9,0x92,0x6d,0x5b,0x76,0x31,0x3c,0xe9,0x49,0x99,
- 0x40,0x14,0xe4,0xed,0x24,0x4d,0xf7,0x1a,0x33,0xef,0x52,0xe2,0xfe,0x4c,0xfe,0xcb,
- 0x98,0xfe,0x0e,0x1b,0x38,0x0f,0x69,0x81,0xe3,0x66,0x20,0x11,0xf1,0xf0,0x47,0x64,
- 0xee,0x89,0xe2,0x75,0xe2,0x38,0x9c,0xa4,0x73,0x42,0xbe,0xf5,0x8a,0xaa,0x67,0xf2,
- 0x5f,0x4f,0xe9,0x6f,0xca,0x4f,0xe3,0x4b,0x34,0x97,0x01,0xc5,0xb0,0x31,0xcd,0x22,
- 0x02,0x61,0xc4,0xf5,0xb8,0xfa,0xb1,0xb4,0xb7,0xcb,0x47,0xa7,0x8d,0x3b,0xeb,0xed,
- 0x30,0xb3,0x6f,0x07,0x84,0x26,0x1a,0x44,0xda,0xc3,0x2b,0xec,0xfe,0x4b,0x52,0x35,
- 0x88,0xd8,0xe7,0xa8,0xc5,0x54,0x0c,0xc2,0x64,0x47,0xd3,0xed,0xde,0xc7,0x14,0x77,
- 0xfc,0x67,0x26,0xac,0x8b,0x37,0xc5,0xe5,0xb5,0xad,0x01,0x66,0xb4,0x6a,0x38,0x7f,
- 0x4c,0xdd,0x2b,0xf8,0xe5,0xed,0xdf,0x66,0xcb,0x60,0x0f,0xdd,0x7a,0xbb,0xbc,0xde,
- 0xc5,0x7f,0x4e,0x0b,0x7f,0xa3,0xa1,0xbf,0x0b,0x84,0x3c,0xb2,0xf4,0xa0,0x80,0xfc,
- 0x43,0xf6,0xc6,0xed,0x8a,0xd7,0xbe,0x5e,0x54,0x4d,0xc4,0xe8,0x40,0x42,0x4b,0xc8,
- 0x3f,0x22,0xf3,0x32,0xfc,0xe7,0xa1,0xcb,0xe0,0xdb,0x94,0x99,0x9d,0xd3,0x0c,0xf6,
- 0x3c,0xc8,0x80,0xc1,0x2d,0x26,0x1f,0x66,0xd9,0x58,0xe5,0x2a,0xb6,0xd5,0x7a,0x32,
- 0xc1,0xf0,0xc0,0x7f,0x69,0x9d,0xef,0xca,0x7f,0xc9,0xf0,0xc2,0x50,0xc8,0x08,0xce,
- 0x15,0x3d,0xf4,0x5f,0x31,0x11,0x76,0x83,0xb8,0x1e,0x3e,0x92,0xbf,0x66,0x14,0xab,
- 0xa2,0x24,0x9c,0x52,0x9b,0x74,0xef,0xf4,0x69,0x99,0xa2,0x82,0xd6,0xe2,0xc1,0xd6,
- 0x3f,0xc2,0x79,0x5c,0x06,0x93,0xad,0xbf,0x67,0xfa,0x29,0x41,0xfd,0xfc,0xd1,0x0a,
- 0x94,0x15,0x9c,0x57,0x5b,0xda,0x37,0xfc,0xc4,0x95,0xff,0x7a,0x82,0xe1,0x9f,0xfd,
- 0xb8,0x08,0x93,0x62,0x9d,0xf0,0xca,0xe7,0xe6,0xbc,0x7d,0xbf,0xb9,0x31,0x99,0x6f,
- 0x94,0x8c,0x2a,0x75,0xc0,0x7e,0x6a,0xba,0x78,0xa2,0xdc,0x95,0xff,0x7a,0x60,0x33,
- 0xb3,0x27,0xf5,0x7a,0x47,0xda,0x33,0x17,0x5e,0x0e,0x68,0x23,0x5e,0x1e,0xff,0xc1,
- 0x1d,0x65,0x84,0x5c,0x31,0xf2,0x53,0xa8,0xa6,0x4c,0xc8,0xce,0x7f,0xfd,0x80,0x36,
- 0xa6,0x19,0xc8,0xb9,0x0c,0xba,0x63,0x57,0x8d,0x79,0x2c,0xfe,0x0f,0xe2,0x99,0x30,
- 0xd0,0x58,0x6d,0x94,0x6d,0xb5,0xdc,0xf9,0xaf,0x63,0xf0,0x28,0x7b,0x5f,0x18,0x7a,
- 0x94,0x99,0xa0,0x21,0xb1,0xf3,0xa0,0xcc,0x19,0x9e,0xfd,0x7e,0xaf,0xf4,0xf0,0xc4,
- 0xcc,0xc8,0xf6,0x8d,0xad,0xee,0xfc,0xd7,0xe3,0xe4,0x3d,0x08,0x53,0xf6,0xfc,0x73,
- 0x71,0x37,0x41,0x4b,0x92,0x22,0xc6,0x7f,0x6e,0xa4,0x25,0xbf,0x41,0x20,0xa7,0x5f,
- 0x97,0xf4,0xbe,0xa7,0x64,0xe5,0xbf,0x34,0xe4,0x03,0x37,0x1e,0x2c,0x4f,0x83,0x61,
- 0x12,0x33,0xcc,0x6d,0x97,0xaf,0x87,0x07,0x46,0xe6,0x5d,0xe1,0xcb,0xce,0x7f,0xbd,
- 0x63,0xd1,0x7a,0x39,0x3f,0x04,0x1d,0x9f,0xc0,0x19,0xce,0xd1,0xe2,0x7e,0xbc,0xa2,
- 0x97,0xad,0x60,0xfe,0xd1,0x9d,0xff,0xfa,0x6b,0xe8,0xa2,0xfe,0x88,0xfc,0x90,0xa7,
- 0xd6,0x15,0xcf,0xd1,0x1a,0xa2,0xf2,0xf7,0x5b,0x83,0xf2,0x1e,0xdd,0xdf,0x29,0x6f,
- 0xf6,0x64,0xe5,0xbf,0xf4,0x6f,0xd3,0x4f,0xbf,0xcc,0x94,0x56,0x2b,0x5b,0xf1,0x22,
- 0x9e,0x41,0x1b,0x2e,0x7a,0x00,0x23,0x18,0x7a,0x9d,0x2e,0x7f,0xc7,0x95,0xff,0x02,
- 0xe9,0x53,0xb0,0x5a,0xaf,0x8e,0xc8,0x77,0x90,0x02,0x98,0xb5,0x40,0xd3,0x17,0xf1,
- 0x78,0x08,0xa0,0xa1,0x26,0x12,0xec,0xd4,0xd3,0x91,0x78,0x45,0x99,0x3b,0xff,0xa5,
- 0x33,0xb5,0xcc,0xc3,0xf8,0x0f,0xf2,0x4f,0xe6,0x21,0x10,0x32,0x23,0x42,0xc5,0x0c,
- 0x08,0xe1,0x15,0x7c,0x35,0x32,0xf9,0xaf,0x23,0x57,0x8c,0x91,0x93,0xf0,0x2c,0x86,
- 0x7d,0x10,0xff,0x30,0xfb,0x9c,0x10,0xc7,0xd4,0x93,0xb8,0x7e,0x0e,0x2b,0xc3,0xf2,
- 0xf9,0xd6,0x96,0xc8,0x92,0xac,0xfc,0x57,0xf1,0x09,0x78,0x15,0x9a,0x75,0xef,0xe1,
- 0xb6,0x5a,0x75,0xbf,0xb7,0xa9,0x95,0xc7,0x8b,0x10,0x66,0x17,0xff,0xa4,0x3b,0x08,
- 0x67,0x3b,0x9a,0x97,0x66,0xf1,0x9f,0x57,0x41,0x1a,0xed,0x0f,0x74,0xc4,0x88,0x26,
- 0xc7,0x75,0xbf,0x6a,0x26,0xc2,0x48,0x03,0xc8,0xdb,0x30,0x22,0x14,0xf5,0x43,0x60,
- 0xcd,0xba,0xac,0xf8,0xcf,0xd6,0xae,0x80,0xb6,0x30,0xae,0x92,0x5a,0xad,0x2b,0x10,
- 0xd0,0xfb,0x54,0x3f,0xce,0xb7,0xc1,0x28,0x2a,0xc3,0xf9,0x82,0xb6,0x54,0x2e,0x25,
- 0xee,0xfc,0xd7,0x7a,0x86,0x1e,0x31,0xda,0xc3,0xb4,0xd7,0x2b,0x38,0xf1,0xb7,0x06,
- 0xc4,0x93,0x57,0xe1,0x2f,0x12,0xc9,0xe3,0x3f,0xef,0xa7,0x4d,0x3a,0x73,0x6b,0x12,
- 0xd9,0x0f,0xcf,0x20,0x5f,0xcb,0x0c,0xec,0x14,0xf7,0x2b,0xec,0xf7,0xa5,0x5b,0xa3,
- 0xcc,0x50,0x67,0xe5,0xbf,0xb4,0x93,0xc1,0xf0,0xf2,0x0d,0x88,0x7f,0x3e,0x64,0x40,
- 0xd1,0x67,0x8d,0xef,0xf4,0x95,0x62,0x60,0x30,0x30,0x7f,0xa1,0xaf,0x52,0xcc,0xca,
- 0x7f,0x49,0x23,0x02,0x46,0xdb,0xba,0x99,0xb6,0x9d,0xf8,0x0f,0x84,0x43,0x5e,0x5a,
- 0xae,0xcd,0x46,0xe2,0xbd,0x97,0xba,0xf3,0x5f,0x37,0x5d,0xef,0xbf,0x9f,0x36,0x0e,
- 0xca,0xe3,0x24,0x00,0xcf,0x08,0x76,0xfc,0x07,0xea,0xa9,0x67,0xec,0x89,0x6b,0xe0,
- 0x39,0xb9,0x31,0x16,0x18,0x3b,0xe0,0x8e,0xff,0x7c,0x16,0xfa,0x8c,0x86,0x71,0xf9,
- 0x49,0x1e,0x9f,0x07,0xdb,0x3e,0xb3,0xf7,0x65,0x06,0x29,0xd6,0x77,0xea,0xc1,0xa8,
- 0x7c,0x19,0xc3,0x3f,0x99,0xfc,0x57,0x05,0xac,0x91,0x1b,0x8d,0x80,0x1d,0xff,0xe1,
- 0xf1,0x90,0x27,0x8b,0xea,0x0d,0xb6,0x7f,0xa9,0xb0,0x5f,0xe4,0x40,0x26,0xff,0x45,
- 0xe7,0xc1,0x30,0xbd,0x31,0xea,0x1d,0x57,0x66,0x24,0x3f,0xda,0x8e,0x40,0x48,0x7c,
- 0x0b,0xfe,0x80,0x11,0x9b,0x11,0x71,0x06,0x7c,0x4c,0x5b,0x34,0x26,0xd4,0x65,0xf8,
- 0xcf,0xd3,0xb7,0xb1,0xb7,0x6f,0xbe,0xce,0xa6,0xc9,0xcc,0x08,0x79,0xce,0x8a,0xb7,
- 0xb3,0x2b,0x8d,0x46,0xcd,0x98,0x76,0x16,0xf9,0xcf,0x46,0xb9,0x8b,0xff,0xcc,0xf0,
- 0xcf,0x21,0x44,0x3b,0x47,0xc4,0x19,0xda,0x6b,0xf1,0xeb,0xd2,0x1b,0x4e,0x72,0xff,
- 0xd5,0x92,0xf4,0x1e,0x69,0x3b,0xa7,0x9f,0xa1,0x2d,0x18,0x7f,0x36,0x1c,0xfd,0x3f,
- 0x5e,0xda,0xcf,0xd6,0x4f,0x4d,0xbb,0x4c,0x63,0x6c,0x23,0x96,0xaa,0x1e,0xf7,0x85,
- 0x2c,0xfb,0x53,0xdc,0x49,0x8e,0xc0,0x53,0x50,0x3f,0xc2,0x80,0xcd,0x7b,0x3d,0xf6,
- 0xfd,0xb1,0x00,0xa9,0x07,0x8d,0x12,0xdf,0x9d,0xc1,0x55,0x23,0x97,0x77,0xce,0x7c,
- 0x13,0x87,0x51,0xb9,0x9d,0xfd,0xc3,0xdd,0x50,0x2f,0xc8,0x7a,0x56,0xfc,0x07,0xd7,
- 0xa7,0xc6,0xf6,0x19,0xc4,0x0b,0x7d,0x60,0xc5,0x7f,0x38,0x23,0x5a,0x63,0x40,0xe7,
- 0x99,0x24,0x53,0xec,0xf5,0x31,0x77,0xfc,0x27,0x48,0x0e,0x90,0x01,0xc3,0xbb,0xbb,
- 0x6d,0x3e,0x79,0x0d,0xe6,0x18,0x8a,0x1d,0xd8,0xf1,0x3e,0x52,0xf3,0x2e,0x9c,0x34,
- 0xc2,0x77,0x05,0xfb,0x5d,0xfc,0x49,0x0a,0xef,0x63,0x74,0x5a,0x67,0x46,0xc6,0x22,
- 0x42,0x9b,0xfa,0x09,0x8f,0xfa,0x52,0x9f,0x19,0xbb,0x63,0x6f,0x24,0xfc,0x3a,0x5b,
- 0x5a,0xee,0xfc,0xd7,0x09,0x38,0x64,0x34,0x1b,0x81,0x0f,0xbb,0xe7,0xb3,0xdb,0x5e,
- 0x67,0xc6,0x7f,0xce,0x21,0xc3,0xc1,0x10,0x27,0xab,0xdf,0x27,0x4d,0xe8,0x0a,0x75,
- 0x67,0xbf,0xdf,0x25,0x7d,0x99,0x81,0x16,0x2d,0x2a,0xc7,0x38,0x9f,0xc7,0x8c,0xe7,
- 0x48,0x7b,0xb0,0x2c,0x62,0x33,0xf9,0x4d,0xd7,0x60,0x8f,0x3f,0xa4,0xc4,0xcb,0xd2,
- 0x2e,0xfc,0x13,0x68,0x8d,0xcb,0x75,0xe9,0xba,0x10,0x09,0xaa,0x7b,0x0b,0x67,0x1a,
- 0x7d,0xa6,0xbf,0x6e,0xd8,0x77,0x0d,0xf2,0x75,0x07,0x7b,0xfd,0x77,0x29,0x83,0x6b,
- 0xdc,0xf9,0x2f,0x99,0xcd,0x61,0xbb,0xee,0x61,0xfa,0xd1,0x9b,0x41,0x1b,0x51,0x66,
- 0xdb,0xeb,0x0d,0x98,0x1a,0x77,0xb2,0x07,0x5f,0x04,0x64,0x9f,0x2b,0xfe,0xa3,0x4b,
- 0x23,0x64,0x1e,0x2d,0xd9,0xa9,0xcc,0x87,0x6f,0x69,0x97,0x60,0x98,0xeb,0x18,0x9c,
- 0x22,0x61,0xa3,0x18,0x5f,0x84,0x71,0xdc,0x1a,0x50,0x51,0x77,0xec,0xcf,0xd6,0xe2,
- 0x09,0x38,0x23,0x5f,0x07,0xf5,0xfb,0xc4,0x33,0xf4,0xb4,0x1e,0x1e,0xf6,0x4d,0xb4,
- 0x9d,0xe1,0x19,0x0d,0x9f,0x51,0x33,0x61,0xf1,0x9f,0xdb,0xc6,0xd7,0x64,0xf3,0x7f,
- 0x6e,0x48,0xb3,0x9b,0x84,0xe8,0x7e,0x18,0x10,0x16,0xf7,0xd6,0x84,0x8c,0xd7,0x70,
- 0x59,0x4e,0x8a,0xe7,0xe1,0x60,0xa0,0xa5,0x72,0xf1,0x48,0x5b,0x16,0xff,0x99,0xf3,
- 0x7f,0x94,0x1d,0x44,0x5a,0xf1,0x6d,0xd8,0xaa,0x79,0xb6,0x12,0x8d,0xf6,0xd1,0x86,
- 0x68,0xfd,0x60,0xeb,0x31,0x35,0xae,0x35,0x14,0xc9,0x71,0x92,0xce,0xcd,0x7f,0x19,
- 0xca,0x96,0x99,0xdb,0xa1,0x4b,0xd0,0x8c,0x75,0x1a,0x59,0x0d,0xdd,0x98,0xe1,0x0a,
- 0x31,0x45,0x3d,0x18,0x68,0xa8,0x64,0x1b,0xdb,0x58,0x2e,0xff,0x79,0x48,0xd9,0x4e,
- 0x76,0xd4,0xb2,0xfd,0xd7,0x81,0x85,0x5b,0x62,0xdb,0x68,0x9f,0xd4,0xd0,0x59,0xc4,
- 0x14,0x4b,0xe3,0x66,0x68,0x7a,0x22,0x27,0xff,0xc5,0x96,0xc1,0xf6,0x2f,0x75,0x91,
- 0xfd,0xc6,0x00,0x78,0xb6,0x89,0xbd,0x6c,0xa1,0xcd,0x4b,0x7b,0x53,0xe2,0x07,0xe2,
- 0x88,0x16,0x4e,0x04,0xb7,0x8a,0x89,0xec,0xfc,0x17,0xb4,0xec,0xf3,0x19,0x8f,0x7e,
- 0x4b,0x3e,0xa9,0xdf,0xa8,0xb1,0x8d,0xff,0x37,0x34,0x76,0x85,0xb2,0x85,0x31,0x29,
- 0x7d,0xb3,0xb5,0x25,0xe1,0x7b,0xbb,0x3c,0x2f,0xff,0x85,0xfc,0x9f,0x24,0x79,0x25,
- 0x3a,0x60,0xf8,0xe2,0xcd,0xf5,0x48,0x74,0x89,0xb0,0xfb,0x1f,0xd3,0xdf,0x50,0x9b,
- 0xee,0x64,0x42,0x36,0xff,0xe7,0x7b,0xd0,0xf0,0xae,0x32,0x97,0xac,0x94,0xfb,0xa2,
- 0xfe,0xe1,0xe2,0x41,0xb6,0x90,0xfa,0x20,0x08,0xcc,0x7e,0xbe,0x06,0xf1,0x51,0xad,
- 0x53,0x1e,0x20,0xc7,0x73,0xf3,0x5f,0x86,0x22,0x17,0x52,0x29,0xde,0xa5,0xa5,0x3e,
- 0xfd,0x14,0x29,0x66,0xfa,0x09,0x02,0x8f,0x10,0x52,0x4c,0x0c,0x11,0x32,0x99,0x93,
- 0xff,0xaa,0x4f,0xf7,0xdd,0x72,0xd7,0x17,0xa1,0x67,0x6b,0xcd,0x8e,0x4b,0x97,0x7a,
- 0x66,0x68,0x6b,0xe9,0x7f,0x8b,0xca,0xab,0x5a,0xcf,0xab,0xab,0x69,0x75,0x52,0xee,
- 0x28,0x3c,0x92,0xc3,0xff,0x99,0x6f,0x6c,0x08,0x88,0x94,0x6d,0xc4,0x42,0x4f,0x5c,
- 0x39,0x57,0xac,0x27,0x2f,0xc0,0x7c,0x08,0x86,0xc4,0x83,0xf0,0x73,0x74,0xcd,0x5a,
- 0x56,0xfc,0xe7,0x59,0xf8,0x15,0x7a,0xab,0xa3,0xe2,0x2a,0xfd,0x34,0xb9,0xb1,0x67,
- 0xc9,0x3d,0xfc,0x7d,0xbc,0x11,0x98,0x7e,0xde,0xd4,0xcf,0xaa,0x2d,0x7a,0x63,0x5a,
- 0x1c,0x25,0xb6,0x7e,0x1c,0xfe,0x0f,0x5b,0x84,0xc2,0x90,0x1c,0xea,0x2a,0x4e,0x55,
- 0xaf,0xe4,0xf8,0x07,0xf5,0x03,0xbf,0xc7,0x0a,0x92,0x4d,0xae,0x78,0xbe,0xc3,0x7f,
- 0xd6,0xfd,0x15,0x0c,0x08,0x55,0xd3,0xc0,0x04,0xa9,0x92,0x9e,0x96,0xea,0x01,0xed,
- 0x8f,0xbc,0x9a,0xe3,0x9f,0x29,0xf8,0xcf,0xdf,0x9b,0x9c,0x19,0x9e,0xbd,0x81,0x3e,
- 0x9a,0x94,0x57,0x14,0x62,0x05,0x5c,0x63,0x48,0x5e,0x45,0xfe,0x80,0x44,0xa0,0xa8,
- 0xfc,0x75,0x92,0xcb,0x7f,0xf6,0x0e,0x31,0xfd,0x37,0x40,0xf7,0x5d,0xc9,0x2e,0xb9,
- 0x3f,0x16,0x84,0x5d,0x24,0x58,0x59,0x14,0x22,0x2f,0x31,0xd7,0x96,0xbc,0x93,0x29,
- 0xf6,0xf5,0x02,0x7b,0xbc,0xc9,0xff,0x99,0x41,0xd9,0xfe,0xe8,0x86,0xc2,0xfb,0x17,
- 0xcc,0xa2,0x1d,0xe3,0x2f,0xac,0x92,0x11,0xff,0x30,0x44,0xf4,0xf3,0xea,0x1f,0x1b,
- 0xcd,0x29,0xef,0xb6,0x2c,0xfe,0x33,0xf7,0x3e,0xaa,0xaf,0xeb,0x86,0x2d,0xd2,0xa4,
- 0xca,0xf0,0x4f,0x0f,0xe7,0x3f,0x23,0x43,0xa6,0x2d,0xdd,0x3d,0x59,0x19,0x56,0x1b,
- 0x69,0x77,0x1e,0xff,0x07,0xab,0x7b,0x96,0x6b,0xfb,0xd5,0x81,0x8e,0xe2,0xcd,0x35,
- 0xb5,0xfa,0x7e,0x93,0x31,0xfb,0x8e,0xb4,0x3f,0x19,0x5a,0xee,0x7d,0x04,0xf2,0xf8,
- 0xcf,0xb7,0x29,0x9b,0x63,0x57,0xf7,0xf4,0x8e,0xd4,0xe9,0xc5,0x0f,0x61,0xda,0x8b,
- 0xf9,0x5f,0x4f,0x02,0x0b,0x01,0x64,0xe6,0x9a,0x07,0x49,0x3a,0x9f,0xff,0xd3,0x4f,
- 0xbe,0xcc,0x96,0x8d,0x5f,0xff,0x2f,0x89,0xb2,0x5a,0xed,0x61,0x93,0xb8,0x3b,0xa6,
- 0xf7,0x62,0x05,0x47,0x82,0x4d,0xdc,0x5e,0x0f,0x0e,0xff,0x47,0x2d,0x2c,0x20,0x5d,
- 0x0c,0x1d,0x15,0x55,0x90,0x02,0xf2,0x00,0xde,0x5f,0x25,0xbf,0xa9,0xe8,0x6a,0xd7,
- 0x22,0x01,0x95,0x64,0xe7,0xbf,0x4c,0xfe,0x8f,0x18,0xc5,0xb2,0x23,0x13,0xf6,0x60,
- 0xd9,0x05,0x73,0xbb,0xe3,0x30,0xc2,0xb6,0x06,0x72,0x72,0xaa,0xfc,0xd7,0xd7,0xca,
- 0xcf,0xc2,0x59,0xbd,0x25,0x72,0x2b,0xa6,0xbd,0xde,0xc5,0xb0,0x61,0xa2,0xfc,0x70,
- 0x21,0x5e,0x61,0x1e,0xdf,0x8d,0x7f,0xac,0xf1,0x1b,0x93,0xbb,0xb7,0xbd,0x1a,0x6d,
- 0xee,0xe8,0x89,0x90,0xd9,0x81,0x5e,0x76,0x45,0x46,0x04,0xf5,0xfe,0x5d,0xcd,0xed,
- 0xc1,0x94,0xbb,0xfe,0x0b,0x30,0xff,0x55,0x02,0xca,0x30,0x39,0x0a,0xf1,0xe8,0xd6,
- 0x44,0x09,0x25,0x49,0x1a,0x17,0x1a,0xd8,0x83,0x89,0xc9,0x64,0x5c,0xf3,0x57,0xac,
- 0xa7,0xe4,0xfe,0xec,0xfc,0x17,0xc3,0xdb,0x4a,0x84,0x6c,0x6b,0x7a,0x40,0xd7,0x22,
- 0x95,0x6a,0x6c,0x8d,0xd6,0x05,0x77,0xeb,0xb2,0x5a,0x36,0x26,0x6c,0x59,0x5e,0xdb,
- 0x21,0xf7,0xe7,0xe6,0xbf,0x84,0x46,0x5d,0x19,0x9d,0x39,0x46,0x1f,0xfe,0xbc,0x5f,
- 0xf7,0x6c,0x2a,0xdb,0xc6,0xf5,0x5f,0x94,0x20,0x3f,0x8a,0xf5,0x46,0x67,0x46,0x8a,
- 0x12,0xb0,0x26,0x9f,0xff,0xf3,0xc0,0xed,0xdb,0xe0,0xe7,0x6d,0xa1,0x68,0xb0,0x4a,
- 0xfc,0x67,0x06,0x84,0xe6,0xb7,0xb2,0xdf,0x77,0x58,0x78,0x57,0x7f,0x6a,0xb9,0xb7,
- 0x52,0x08,0xe4,0xe6,0xbf,0x5a,0x7d,0xfd,0xdd,0x63,0xea,0x51,0x6f,0xb8,0x63,0xc3,
- 0x46,0x2c,0x8b,0x2b,0x64,0xf8,0x27,0x21,0x6e,0x53,0x3f,0x8c,0x3f,0x13,0x2d,0xd9,
- 0x98,0x97,0xff,0xba,0x4f,0x42,0xd8,0x43,0x99,0xfe,0xa5,0xfb,0x7b,0x1e,0xd5,0xe2,
- 0x6c,0xdb,0x2b,0x4c,0xa3,0xe2,0x51,0x3a,0x0e,0x4d,0x32,0xfb,0x21,0xf2,0xea,0xbf,
- 0x12,0x7d,0x3b,0xd4,0x23,0xe4,0x7e,0xe1,0xd3,0x34,0x7e,0x4c,0x5c,0x25,0xaf,0x13,
- 0x1a,0x10,0x08,0x9d,0xf2,0xdf,0x0f,0x35,0x49,0x6f,0xb2,0xf5,0x40,0x6e,0xfe,0x2b,
- 0xaa,0x5c,0x41,0x0e,0x62,0xbc,0xf4,0x5d,0x25,0x08,0x4b,0xe4,0x6e,0x58,0xc9,0x80,
- 0x50,0xeb,0x8b,0xe4,0x01,0x83,0xe1,0xed,0x10,0x39,0x90,0x97,0xff,0x62,0xb0,0xe7,
- 0x97,0xd2,0x5a,0xe9,0xd3,0x0b,0xe4,0x13,0x65,0xff,0x15,0xd6,0x0a,0x9c,0x11,0x7d,
- 0x18,0x36,0xe9,0xd5,0xad,0x0c,0x2a,0x8c,0x67,0xf2,0x5f,0x80,0xf9,0xaf,0xfa,0xb4,
- 0x6f,0x85,0x78,0xce,0x3b,0x44,0x77,0x46,0xff,0x72,0x55,0xcd,0xad,0x64,0x2d,0x32,
- 0x82,0x90,0xff,0xf3,0x2b,0xba,0x2b,0x1a,0x5c,0xd1,0xfd,0x5e,0x26,0xff,0x65,0xd6,
- 0x43,0xe9,0x3e,0x74,0xbb,0xa7,0xc5,0xf9,0x0b,0x4a,0x12,0xe2,0xb8,0x9d,0xe8,0x39,
- 0x01,0x1f,0x20,0x11,0xfa,0xa1,0x9c,0xfc,0x17,0x43,0x3b,0xeb,0xab,0x06,0xcb,0xcf,
- 0x49,0xe7,0x1e,0x98,0xb5,0x52,0x9b,0xac,0x39,0x0e,0xaf,0xd1,0x2b,0x31,0x23,0xf6,
- 0x06,0xbc,0x48,0x9b,0x93,0x6c,0x2b,0x97,0x93,0xff,0x92,0x18,0x48,0xfb,0xcb,0xdb,
- 0xde,0xa4,0x4f,0x37,0x57,0xdf,0xe4,0xbd,0x99,0xfc,0x72,0xfd,0x5a,0xd5,0xc4,0x3f,
- 0xa4,0x47,0xaf,0xa6,0x6c,0x6a,0xb9,0xf9,0xaf,0x46,0xa3,0xbf,0xb3,0x2c,0x21,0x3d,
- 0x09,0xd5,0x1d,0x72,0xe7,0xeb,0x47,0x18,0x10,0x6a,0xdc,0xc7,0xa6,0x39,0xa1,0x7f,
- 0x5b,0xbd,0x0a,0x94,0x68,0x7e,0xfe,0x8b,0xca,0x01,0x62,0xac,0xd8,0x25,0x24,0x31,
- 0xd1,0x93,0x46,0x7b,0x9e,0x2e,0x42,0x7b,0x1e,0x33,0x6a,0x13,0x8a,0x3a,0x55,0xfd,
- 0xd7,0x40,0xdb,0x0e,0xb6,0x4d,0x68,0x1a,0xaa,0x54,0xc5,0x63,0xcc,0x7f,0x85,0xd3,
- 0x72,0x4a,0xfc,0x0d,0xec,0xbf,0xe3,0xa9,0x15,0xc8,0x87,0xcf,0xcd,0x7f,0x61,0x51,
- 0xc6,0x31,0x86,0x9f,0xc3,0x5d,0x55,0x0f,0xf1,0x7a,0x13,0x5e,0x08,0x36,0x16,0x9b,
- 0x54,0xe7,0x75,0xf8,0x92,0xe5,0x79,0xf9,0x2f,0xea,0x5d,0xd0,0x56,0xc5,0x36,0x62,
- 0xbb,0x0c,0xef,0xb8,0xa8,0x09,0xaf,0x61,0x46,0x6c,0x82,0xe9,0xf3,0x35,0xe0,0xf5,
- 0x5f,0x86,0x3b,0xff,0xc5,0xf9,0x3f,0x9e,0x24,0x09,0xca,0xbd,0x1f,0x06,0x52,0xc1,
- 0xcd,0x62,0x9d,0xda,0x87,0x44,0x82,0x14,0x73,0x1b,0x71,0xa3,0x41,0xbb,0xb5,0x97,
- 0xa4,0x73,0xf2,0x5f,0xc1,0x8a,0x22,0x36,0xfe,0x52,0xb6,0x31,0x79,0xbb,0x63,0xa7,
- 0x67,0x26,0xf3,0x77,0x0d,0x58,0x81,0xfb,0x1e,0xe9,0xed,0xba,0x7b,0x2b,0xdb,0x41,
- 0xe4,0xf2,0x7f,0xd8,0x6a,0x9c,0xbd,0xce,0x0b,0x5d,0x0b,0x02,0xc3,0xb7,0x6c,0x62,
- 0xdb,0x90,0x6e,0xfc,0x8b,0xa8,0xa8,0x2e,0xb2,0x12,0x3c,0x81,0x2c,0xfc,0xb3,0x92,
- 0x97,0x11,0x15,0x3f,0x26,0xf2,0xb2,0xd3,0xa1,0xaa,0x4d,0x4c,0xe8,0x43,0x86,0x7c,
- 0x0a,0xeb,0x2f,0x84,0xf0,0x02,0xa4,0x8a,0xe5,0xe4,0xbf,0x5a,0xe0,0x7e,0xfc,0xc9,
- 0xcf,0x6a,0x2d,0x23,0xf7,0x1b,0x62,0xca,0xc4,0x3f,0x13,0xe5,0x13,0x04,0xe3,0x3f,
- 0x6c,0xbe,0xe3,0x24,0x1b,0xff,0x5c,0x37,0x56,0xfc,0x73,0x31,0x0c,0xa7,0x69,0x38,
- 0xfd,0xda,0x64,0xf9,0x39,0xfd,0x35,0xb6,0x3e,0x8b,0x27,0xc5,0x09,0xfd,0x60,0x69,
- 0x8b,0xb6,0x61,0xb8,0x2d,0x95,0x83,0x7f,0xfc,0x98,0xcd,0x69,0x30,0x81,0xd0,0x20,
- 0xc1,0xfa,0x2f,0x1e,0xe6,0x3a,0x1a,0x89,0x47,0x1a,0xaa,0x95,0xef,0xfe,0x79,0x26,
- 0xfe,0x86,0xf8,0x67,0x6f,0x61,0xed,0xc8,0x2d,0x65,0x3c,0xbf,0xcc,0x89,0xa9,0xeb,
- 0x63,0xdd,0x66,0x85,0xa0,0xb1,0x9e,0x6a,0x41,0xaa,0x40,0x6b,0xac,0x34,0x1b,0xff,
- 0xb0,0xfb,0x3f,0x60,0xf1,0xc9,0x2f,0x47,0x3c,0x89,0xfa,0x94,0x53,0xfe,0xb7,0xe5,
- 0xbe,0x38,0x53,0x5d,0x9c,0xa4,0xb2,0xf0,0xcf,0x5e,0x06,0x9b,0xd9,0x6e,0x3a,0x68,
- 0xbd,0x26,0xe5,0xeb,0xd5,0x57,0x4c,0xfd,0xbc,0x13,0x1b,0x31,0x98,0xab,0x5a,0x97,
- 0x8f,0x7f,0x8c,0x0d,0x47,0xac,0xb0,0xcf,0x95,0x4e,0xfc,0x67,0x42,0x1c,0x55,0xd9,
- 0xc6,0x53,0xda,0x90,0xcc,0xe1,0xff,0xfc,0x0e,0x18,0x8c,0xdc,0xa8,0xd8,0xf7,0x17,
- 0x3f,0xc0,0x2b,0x23,0xec,0xfe,0xe3,0x95,0x93,0xed,0x4d,0x23,0x08,0x1d,0xb3,0xf9,
- 0x3f,0x42,0xc3,0x09,0xac,0x56,0xb6,0x0b,0x03,0xf1,0xf9,0x83,0x13,0xc5,0x29,0xf2,
- 0x6b,0x7d,0xcf,0x28,0x43,0xd4,0x1b,0x66,0x36,0x65,0xe1,0x9f,0xbd,0x30,0xd3,0x50,
- 0xfe,0x91,0x38,0x85,0x81,0xbc,0x82,0x60,0x82,0xe9,0x67,0x04,0x89,0x2b,0x11,0x45,
- 0x23,0xab,0xf2,0xf0,0x8f,0xf2,0x5f,0x0a,0x67,0x70,0x3e,0x8c,0xb2,0xaa,0xf0,0x57,
- 0xb0,0x16,0xd3,0x5e,0xab,0xc8,0xcf,0xb4,0xa7,0x69,0x75,0x74,0xd1,0x2a,0x52,0xa9,
- 0xda,0xf7,0xe7,0xf5,0x5f,0xea,0x7c,0x83,0xf9,0xdf,0x12,0x61,0x57,0x72,0x7e,0xda,
- 0x37,0xb7,0xe6,0x03,0xf8,0x35,0xcc,0xdf,0x57,0x3c,0xeb,0xea,0x61,0xe6,0xb8,0x43,
- 0xe0,0x53,0x95,0xdb,0x9c,0xe5,0x86,0xf8,0x87,0xd3,0xa2,0x12,0xe2,0x19,0xfd,0x3c,
- 0x4e,0x7c,0x27,0x17,0xbe,0x85,0x81,0xa0,0x13,0x70,0x5e,0x7d,0x1e,0x7c,0xa3,0xd3,
- 0xf2,0xf9,0xcf,0x6c,0xdb,0xeb,0xd2,0xcf,0x2b,0xec,0x17,0xf1,0x99,0x85,0x87,0x03,
- 0x47,0x7c,0xa3,0x8b,0xf2,0xf9,0x3f,0x8b,0x22,0x6c,0xff,0xf8,0x5b,0xd3,0x90,0x9e,
- 0x81,0x7f,0x63,0xc2,0xe5,0x9d,0xe4,0x30,0xe6,0xd3,0x5f,0x51,0x3a,0xdb,0x9a,0xf2,
- 0xf0,0x4f,0xd1,0xd2,0xb2,0x19,0xb2,0x45,0x84,0x7e,0x0b,0xd6,0xf6,0x98,0x82,0x90,
- 0xa2,0xd5,0xc7,0x94,0xca,0xac,0xfc,0x97,0x85,0xb7,0x07,0xd9,0x7a,0x7b,0xd4,0xd6,
- 0xe7,0x83,0xa6,0xf0,0x9b,0x65,0x7b,0x22,0xda,0xeb,0xca,0x77,0x88,0x3b,0xff,0x65,
- 0xf2,0x9f,0x8b,0x9f,0x10,0x03,0x4c,0x68,0x40,0xc3,0x32,0xce,0x03,0x41,0x1b,0xb0,
- 0xec,0xeb,0x5c,0xac,0x29,0xe1,0x9b,0x82,0xff,0xc3,0x2c,0x2c,0xdf,0x7d,0x98,0xb0,
- 0x07,0x30,0x11,0xe6,0xa3,0x35,0x4c,0xe8,0x08,0xc3,0x92,0x35,0xe2,0xc6,0x5c,0xfc,
- 0x13,0xf5,0xf1,0x68,0x0f,0x73,0xa3,0xf6,0x7e,0x1f,0x85,0x77,0x60,0x7f,0xb2,0x69,
- 0xb9,0xaf,0x3f,0x9f,0xff,0xdc,0xa9,0xf4,0x17,0xd6,0x32,0xd8,0xd0,0x60,0xc7,0x1f,
- 0x66,0xa0,0xf0,0x4e,0xac,0x97,0xbd,0x7a,0xe2,0x66,0x25,0x9a,0xc1,0x3f,0x02,0xc7,
- 0x3f,0x77,0x28,0x0f,0x58,0xf5,0x4a,0x97,0x9b,0xe3,0x4b,0xd8,0x78,0x18,0xbb,0x05,
- 0xf1,0x8f,0xb2,0x31,0x96,0xcb,0x7f,0x5e,0x19,0x61,0xdb,0x2e,0x09,0xb6,0x08,0x41,
- 0xfd,0x72,0x95,0xbc,0x08,0x3b,0x09,0x27,0x02,0xbd,0x28,0x6c,0xd1,0x35,0x4c,0x8d,
- 0xb5,0x66,0xe1,0x1f,0x8e,0xee,0x78,0xfd,0x17,0xb9,0xcf,0xe6,0xff,0x34,0x98,0xc2,
- 0x01,0xbe,0xff,0xaa,0x29,0xc9,0xc7,0x3f,0xa3,0x6c,0x9a,0xef,0x9a,0xd3,0x3c,0xa1,
- 0x5a,0xf3,0xfd,0x58,0xfa,0x25,0x32,0x82,0x0e,0xbb,0xea,0xbf,0x2c,0xfe,0x4f,0xbb,
- 0x0f,0xab,0xdd,0xcf,0x62,0xa2,0x70,0x94,0xfd,0xfd,0xfd,0x1c,0x2f,0x89,0x27,0x8c,
- 0x57,0x03,0x4d,0x86,0xef,0xf5,0x69,0x53,0xf0,0x9f,0x63,0x31,0xac,0xff,0xda,0x8a,
- 0x44,0x68,0x8d,0xed,0xb8,0x39,0x23,0x7a,0x1c,0x18,0xfe,0xc1,0xaf,0x72,0xf8,0x3f,
- 0x80,0x61,0x76,0x8c,0xf6,0x08,0x18,0xef,0x62,0x8a,0xed,0x82,0x95,0x9c,0xf8,0x64,
- 0x74,0x05,0xf8,0x7c,0xf3,0xf8,0x3f,0x88,0x27,0x99,0x3e,0x25,0x1e,0x7f,0xab,0xe5,
- 0xf8,0x47,0x49,0xf8,0x99,0xa1,0xd3,0xfc,0x7a,0x5f,0xa2,0x2c,0x97,0xff,0xc3,0x26,
- 0xa5,0x62,0xb4,0x07,0x9f,0x3f,0xc1,0x0b,0xf9,0xf9,0x7c,0x7f,0x43,0xf6,0x6b,0x4d,
- 0x77,0xfa,0xfe,0x71,0x5d,0x1e,0xfe,0x71,0x2f,0x83,0x45,0xce,0x7a,0x78,0x49,0xfd,
- 0x90,0x3e,0xa7,0xfb,0x2a,0xbb,0xb3,0xf1,0x0f,0x5b,0x66,0x08,0x72,0x9c,0xfa,0x3b,
- 0x2c,0xbb,0xe3,0x3f,0xc4,0x51,0x44,0xa4,0x2a,0x5b,0x81,0xb9,0xfc,0xe7,0xc6,0x54,
- 0xe0,0x03,0x4f,0x00,0xb0,0x8c,0x94,0x59,0x8f,0x49,0x69,0x1d,0x34,0x26,0x11,0xff,
- 0xb4,0xde,0x4f,0xfd,0x09,0x65,0xac,0x3b,0x9b,0xff,0xc3,0x5e,0x93,0x61,0xb9,0x2a,
- 0xe6,0xb5,0x5f,0x93,0x7d,0xb4,0x9b,0x04,0xc7,0x98,0xf0,0xb2,0xd0,0x15,0x4f,0xbe,
- 0xa9,0x54,0x91,0x3c,0xfe,0x4f,0xd2,0xe2,0xff,0xf0,0xf7,0x77,0x74,0xeb,0x5a,0x53,
- 0x38,0xa2,0xad,0x95,0xab,0xd9,0xd6,0x86,0xac,0xc8,0xe2,0xff,0xfc,0x16,0xeb,0xd3,
- 0x27,0xc5,0x19,0xf2,0x1f,0x4d,0xd8,0xf3,0x3a,0x7d,0xb9,0xab,0x3e,0x7d,0x25,0xc3,
- 0x3f,0xea,0xab,0x58,0x08,0x7f,0x24,0x9b,0xff,0x83,0xf6,0x87,0x9a,0xf1,0x1f,0xd3,
- 0x9e,0xbc,0x6d,0x0b,0x13,0x70,0x96,0x84,0x47,0x7d,0xc6,0x5f,0xe7,0xf2,0x9f,0x5b,
- 0xa2,0xbe,0x11,0xb1,0x41,0xff,0x45,0xa2,0x85,0xf3,0x7f,0x34,0x5e,0xf6,0x3e,0x29,
- 0xfe,0x1d,0xbc,0x4a,0x5b,0xc6,0xbc,0x93,0xd3,0xb2,0xf0,0x0f,0x96,0x9d,0xca,0xca,
- 0x37,0x49,0x09,0x65,0xf6,0xd3,0x28,0x99,0x47,0xda,0x19,0x9e,0xb9,0x91,0x3f,0x3f,
- 0xac,0xad,0xac,0xa7,0xc5,0x7a,0x61,0x1e,0xff,0x47,0xff,0x8b,0x28,0xe1,0xf5,0x5f,
- 0x86,0x72,0x0f,0x79,0x13,0xbe,0x8b,0x88,0x9a,0xd9,0x2b,0xfd,0x3b,0xd0,0xa8,0x17,
- 0x75,0x12,0x9a,0x8b,0x7f,0x74,0x85,0x16,0x7a,0x6d,0xfe,0x61,0x7b,0x21,0x67,0x80,
- 0x84,0x6e,0x1e,0x87,0x8d,0x5a,0x10,0x8a,0x76,0xe7,0xe3,0x1f,0xea,0x7b,0x44,0x0c,
- 0xca,0xbf,0x20,0x7c,0x9a,0x69,0xf8,0x05,0x1a,0xa2,0xd4,0xb4,0x2f,0xd7,0x1e,0xd9,
- 0x17,0x86,0xe2,0x47,0xf2,0xf1,0x0f,0xf0,0x30,0x08,0xf2,0xa3,0xbc,0x29,0x38,0x6a,
- 0x32,0x84,0x53,0xd3,0xde,0x85,0xf7,0x78,0x6b,0x8e,0x07,0xf3,0xf0,0x0f,0xf8,0xd2,
- 0xe2,0x7c,0xb6,0x1b,0xbd,0x61,0xc8,0x37,0x21,0x4c,0x20,0xec,0xa1,0x25,0x13,0xd3,
- 0xc6,0x6a,0x87,0xa1,0x39,0xa4,0x8c,0x2a,0x90,0x8b,0x7f,0xe6,0xf6,0xf5,0x12,0xdb,
- 0x7f,0x95,0x19,0xfe,0x3e,0xb8,0xfb,0x75,0xe6,0xc8,0x7e,0x2b,0xc7,0x29,0x7b,0xbf,
- 0xe2,0x62,0x1e,0xff,0x47,0xe3,0xf5,0x5f,0x37,0x98,0xe3,0x8f,0x49,0x7d,0xf8,0x3e,
- 0xa6,0xe0,0x31,0x88,0xd3,0xbb,0x8c,0xcb,0x07,0x63,0x39,0xfc,0x1f,0x2c,0x72,0x6f,
- 0x22,0x5e,0xc4,0xbe,0xc3,0x7d,0x4d,0x0c,0x3d,0x76,0x9b,0x0b,0xcf,0x90,0xba,0x20,
- 0x9a,0xbc,0x3c,0x8f,0xff,0x83,0x6f,0x07,0x74,0xd7,0xd3,0xdf,0x45,0xe7,0x8d,0xfa,
- 0x06,0xc4,0xf7,0xf5,0x57,0xd8,0xfd,0xef,0x4f,0xd5,0xe0,0x8b,0x30,0x80,0xa1,0xc2,
- 0x5c,0xfe,0x4f,0x0b,0x5e,0x3c,0x93,0x7e,0x5e,0x65,0x8e,0x6c,0xd7,0x83,0xa3,0xd4,
- 0xf2,0xef,0x18,0xff,0xb9,0x11,0x36,0x18,0x6d,0xdb,0x73,0xf8,0xcf,0x37,0x2e,0xf7,
- 0x55,0x8a,0x9d,0x65,0xaf,0xd2,0xa6,0x64,0x09,0x55,0xb0,0x10,0x7e,0x97,0x49,0x24,
- 0xfb,0x3d,0x5b,0xba,0x4a,0x36,0xff,0x87,0xc7,0x7f,0x18,0x5e,0xf5,0xa8,0x52,0x2f,
- 0xdd,0x9a,0xbc,0x7c,0x47,0x59,0x10,0x13,0x55,0xe9,0x45,0x48,0x84,0xde,0x83,0x88,
- 0xa8,0x87,0xe4,0xf1,0x9f,0xd9,0x32,0x88,0x01,0xe9,0x05,0x8d,0x2a,0x5d,0x66,0xa1,
- 0xb7,0xe9,0x98,0xb6,0xe2,0xc4,0x0b,0x99,0xbd,0x75,0xe1,0x1f,0x99,0xd7,0x4f,0xed,
- 0x26,0x5a,0x92,0x59,0x7b,0x6a,0x15,0xd6,0xd5,0x31,0xc5,0x16,0x1e,0x43,0xd3,0x67,
- 0x2c,0x8a,0xbb,0xf8,0x3f,0x7a,0x29,0xef,0xff,0x33,0x52,0xf8,0xac,0xf8,0x37,0xf2,
- 0x10,0x34,0x3d,0xc4,0xfc,0x17,0x2f,0x54,0xe7,0x81,0x44,0x95,0x2f,0x8c,0x47,0xa6,
- 0xa9,0xb9,0xf8,0x67,0xf8,0xd6,0x33,0xe5,0xa7,0xe0,0xac,0xd0,0x82,0xfe,0x0e,0x35,
- 0x76,0x9d,0x53,0x11,0x6f,0xf8,0x68,0x56,0xfc,0x27,0x88,0x61,0xc6,0x74,0x70,0xb7,
- 0x58,0xa4,0xed,0x87,0xa6,0x1e,0x5f,0xb2,0x3b,0xa8,0x9f,0x36,0xfd,0x3b,0x2e,0x5d,
- 0x66,0x9f,0x93,0x42,0x1e,0xff,0x39,0x1d,0xd8,0xdd,0xf6,0x37,0xb4,0xf7,0xb6,0x3f,
- 0x6c,0x51,0x02,0x31,0x3b,0x90,0x28,0x9a,0xd0,0x6e,0xd1,0xb7,0x63,0x59,0xf8,0x47,
- 0xc0,0xb2,0xd3,0xcb,0x52,0x65,0x22,0x96,0x21,0x33,0x34,0x48,0x4a,0xd8,0x30,0x4e,
- 0x84,0x5e,0x0f,0x6c,0x07,0x61,0xfc,0xc5,0xb6,0x3c,0xfe,0x73,0xfd,0xd8,0x17,0xbe,
- 0x19,0xbb,0x0d,0x56,0x3f,0x52,0x14,0x58,0xf4,0xb7,0x64,0x06,0x7b,0x91,0x91,0x21,
- 0x43,0xbe,0x0f,0xff,0x42,0xab,0xd3,0xdf,0x5b,0x0a,0x95,0xee,0xf8,0x8f,0x8e,0xfd,
- 0x7f,0x4a,0xe6,0x2a,0x10,0x7b,0xa1,0x47,0x7e,0xd7,0xe7,0xc1,0x42,0xf8,0xe4,0x6c,
- 0x24,0xea,0xac,0x97,0x8e,0x4b,0x21,0x63,0x89,0x2a,0xe6,0xf2,0x9f,0x5b,0x8c,0xe2,
- 0xe3,0xcc,0xba,0x7e,0xa4,0xcd,0x91,0xcc,0xfc,0xa0,0x6a,0x11,0xc5,0x4f,0xa0,0x7e,
- 0x46,0xdd,0xf5,0x5f,0x26,0xff,0xdc,0xf0,0xa6,0x7c,0xd5,0x64,0x88,0x5c,0x92,0x94,
- 0x35,0xae,0x7f,0x8b,0x28,0xce,0x0d,0xd7,0x44,0x3e,0xff,0x79,0x48,0xee,0x2c,0x54,
- 0x55,0x8c,0xf6,0x74,0x44,0xc5,0x3b,0x9d,0x40,0xba,0xca,0x2d,0x4c,0x84,0xe4,0xe2,
- 0x9f,0xc6,0xb4,0xfc,0x4d,0x32,0x43,0xfa,0x6e,0xd7,0xd5,0xbf,0x96,0x57,0x10,0xd4,
- 0x40,0xb5,0x09,0x84,0x9e,0x8e,0x33,0x20,0x34,0x37,0x1f,0xff,0x6c,0x8d,0x07,0x49,
- 0xc9,0xbe,0x07,0xd9,0x7a,0x5b,0xa1,0xc5,0x10,0x61,0x26,0x99,0x3e,0x0b,0xd9,0x57,
- 0x0b,0xd8,0x7a,0xdb,0xb4,0xce,0x85,0x7f,0x38,0xff,0x99,0xed,0x8f,0xde,0x25,0xd7,
- 0x93,0xd7,0xe1,0x53,0x49,0xf9,0x2e,0x0e,0x84,0x9a,0x4c,0x20,0xf4,0x9c,0x1e,0xa6,
- 0xd3,0x8e,0x91,0x1c,0xfc,0x23,0x84,0xa5,0xc6,0x1e,0x71,0x88,0x8c,0xdb,0xfe,0x68,
- 0x32,0x4b,0x58,0xed,0xce,0x7f,0x81,0xe9,0xdd,0xbc,0x09,0x71,0x26,0xec,0xdf,0xd6,
- 0xb4,0x82,0xa1,0x9d,0x99,0xd2,0xc9,0xb2,0x26,0xcb,0x03,0xca,0xec,0xd5,0xde,0xec,
- 0xc6,0x3f,0xb0,0x5c,0xc6,0x68,0x73,0x60,0x86,0xb2,0x5c,0xef,0x1d,0xf2,0x47,0x95,
- 0x07,0xc4,0xe5,0xfa,0x1e,0x24,0x02,0x25,0x44,0xbb,0x34,0xc9,0x93,0x57,0xff,0x85,
- 0x41,0x8c,0x5a,0xa1,0x57,0x46,0xef,0x8c,0x85,0xf0,0x3a,0x17,0xc6,0xec,0x52,0xa6,
- 0x2c,0xfc,0x83,0x65,0xef,0x9d,0x72,0x05,0xf9,0x2c,0x5b,0x6f,0x58,0x6d,0x4a,0x6e,
- 0x82,0x9d,0x3a,0x17,0x7a,0xec,0xd2,0x30,0x92,0x8d,0x7f,0x84,0x06,0x24,0xf9,0x60,
- 0xf3,0x1a,0x3f,0x27,0x02,0xc1,0x84,0x45,0x84,0x2e,0xe5,0xf3,0x4d,0x5e,0xed,0xc2,
- 0x3f,0xc5,0x26,0x9f,0x79,0x43,0x44,0xfc,0x98,0x9c,0x85,0x7f,0xd1,0x37,0x1c,0x2e,
- 0x1f,0x93,0x4e,0x4a,0xcf,0xe1,0x7c,0xb7,0x61,0x45,0x98,0x9e,0x5d,0xff,0x25,0xe0,
- 0xf8,0x1b,0x75,0xef,0x68,0xdb,0x6c,0xed,0x55,0xe9,0xc6,0x05,0xd2,0x68,0xdf,0xff,
- 0x65,0x02,0x21,0xd4,0xcf,0xd7,0x39,0x94,0xea,0xce,0xe1,0x3f,0x4b,0x0d,0x72,0x20,
- 0x46,0xaa,0x09,0xc2,0x9e,0xe2,0x24,0xd1,0xe8,0x20,0x3c,0xe1,0x54,0x84,0x81,0xb2,
- 0x86,0xe4,0xe1,0x9f,0x56,0x39,0x11,0x6b,0x4f,0x76,0x41,0x30,0x5a,0xa4,0x62,0x99,
- 0x09,0xc2,0x1e,0xb5,0x70,0xd8,0x0a,0x85,0xc5,0xf2,0xf0,0x4f,0xbb,0x9c,0x68,0xfa,
- 0x0a,0xb2,0x7d,0x30,0xec,0x53,0x8b,0xf9,0x7a,0x6c,0xac,0x94,0xd1,0x67,0x2e,0xff,
- 0xf9,0x5e,0xaf,0xda,0xf7,0x65,0xd8,0x4f,0xc3,0x7a,0xf1,0x26,0x71,0x79,0xc5,0x49,
- 0x62,0x3e,0xbf,0x74,0xb2,0x96,0x3d,0xff,0x23,0x4a,0x1e,0xff,0x59,0xf7,0x6d,0xbc,
- 0xfd,0x07,0x70,0xb2,0x2e,0xac,0xb3,0xb7,0x2f,0x53,0x41,0x56,0xc1,0x85,0x4b,0xf3,
- 0xf9,0xcf,0xaa,0x97,0x2a,0xd5,0x12,0xc6,0xdf,0xea,0x7a,0xc4,0xa4,0x3c,0x49,0x6c,
- 0x22,0x7a,0x21,0x26,0x5e,0x6b,0x72,0xe3,0x3f,0x8d,0xdb,0xe5,0x71,0x32,0x97,0xdc,
- 0x4f,0x67,0x6f,0x1d,0x39,0x56,0x58,0x47,0x9f,0x03,0x3f,0x5d,0x84,0x89,0xb0,0x67,
- 0x60,0x1e,0x55,0xd2,0xf9,0xf1,0x9f,0xb4,0xac,0x7a,0x1a,0x68,0xd7,0x90,0xa6,0xdf,
- 0x02,0xb1,0xf5,0xf2,0x00,0xd5,0x32,0x89,0x30,0xa5,0x34,0x96,0x1b,0xff,0x69,0x34,
- 0xe4,0x48,0xac,0x14,0xee,0x8f,0x5f,0xad,0x17,0xb5,0x93,0x2a,0xe9,0x29,0xdd,0x4a,
- 0x84,0xf1,0x52,0xa9,0x88,0x3b,0xfe,0x63,0xf3,0x9f,0x8f,0x5c,0x1d,0x86,0x43,0x3d,
- 0xb3,0xa2,0xc5,0x1d,0xcc,0x4c,0x9d,0xa5,0x3b,0xcd,0x44,0x18,0xfb,0xea,0x28,0x13,
- 0xde,0xcb,0xc1,0x3f,0x61,0xa3,0x31,0x29,0x8e,0x91,0x53,0x52,0x58,0x2f,0x01,0x66,
- 0x76,0x98,0xa2,0x98,0x3d,0xa9,0x31,0xed,0xc9,0x86,0xd1,0xfc,0xf8,0x4f,0x14,0xd9,
- 0x3e,0x70,0xe8,0xc1,0xe6,0xe5,0xbe,0xb9,0x62,0x03,0x0c,0xd2,0x46,0x2c,0x04,0xbb,
- 0x4f,0x3f,0x4f,0x9b,0xc7,0x7c,0x3f,0x27,0x2e,0xfc,0x23,0x98,0x78,0x46,0xee,0xdc,
- 0x78,0x49,0x3c,0x96,0xac,0xfe,0xdb,0x45,0x0b,0x3d,0x25,0x34,0x95,0xa8,0xb7,0x9e,
- 0xbf,0xb2,0x7a,0x98,0x3d,0xbf,0x0b,0xff,0xa8,0x9b,0xe1,0x07,0x38,0xfe,0x1e,0x86,
- 0x7f,0xee,0x97,0xae,0x6a,0x57,0x6e,0x23,0x55,0xfa,0x93,0x26,0xde,0x7b,0x93,0xed,
- 0x06,0xab,0x71,0xe3,0x96,0x1b,0xff,0x69,0x38,0x1a,0x80,0x2f,0x48,0x24,0x06,0xb5,
- 0x4b,0x15,0x2f,0xb3,0xff,0x3b,0xed,0x8d,0xd8,0x2e,0x49,0x33,0xfa,0x76,0xe4,0xe0,
- 0x1f,0xe6,0xa4,0x5a,0xbd,0x73,0x45,0x99,0x1c,0x80,0xdd,0xe9,0xbe,0x75,0x6c,0x23,
- 0x90,0x21,0x36,0xd3,0x32,0xc3,0xb7,0x3e,0x1f,0xff,0xb4,0xfa,0x52,0xdd,0x47,0xc9,
- 0x29,0x61,0x1e,0x03,0x5a,0xcc,0xcd,0x71,0xfe,0xb3,0x69,0x6f,0x9f,0x33,0x7c,0xdd,
- 0x62,0x3e,0xfe,0xf1,0x4e,0x88,0x5a,0xec,0x10,0xdb,0x68,0x78,0x0d,0xf1,0x9c,0xfe,
- 0x6a,0x6b,0x73,0xc6,0xdf,0x29,0x69,0x31,0x07,0xff,0x90,0x86,0xb9,0xf2,0x76,0xb6,
- 0xad,0x58,0xb7,0xa6,0x61,0x99,0x27,0xce,0xdc,0xfa,0x4f,0x74,0xbb,0x10,0x09,0x11,
- 0x4e,0x3c,0x9f,0xff,0x1c,0x65,0xf6,0x27,0x00,0xeb,0x28,0x7b,0x5f,0xfa,0xd9,0xb0,
- 0x1f,0x32,0x37,0xd7,0x97,0x19,0x9f,0x8f,0x7f,0x74,0x99,0x19,0x31,0x1a,0xdb,0xd6,
- 0xd0,0xe1,0x01,0x72,0x70,0xfd,0x83,0xb2,0x7b,0xbd,0x81,0xc7,0x85,0x7f,0x0a,0x38,
- 0xfe,0x81,0x8e,0xef,0x30,0xb3,0x7c,0xa0,0x22,0x7c,0xe7,0x67,0x1f,0x64,0xf8,0xe7,
- 0xd5,0x68,0x93,0xb1,0xc1,0xf6,0x2f,0x4b,0x12,0x35,0x2e,0xfc,0x33,0x9d,0x67,0xbb,
- 0xc0,0xd7,0x2a,0xa6,0x23,0xc7,0x9b,0xc2,0xed,0xbe,0x17,0xc4,0x33,0x77,0x9c,0x0d,
- 0x3c,0x6f,0xce,0x97,0x13,0x39,0x0c,0xd1,0xc5,0xff,0x99,0x8e,0xfc,0xf9,0x16,0x8b,
- 0x36,0x9f,0xb8,0x6e,0xb8,0x78,0x52,0x1c,0xc5,0xfc,0x97,0x4d,0xa4,0x6f,0xa9,0xf4,
- 0x1a,0x6d,0x79,0xf8,0xc7,0x2c,0xfb,0xda,0xab,0xd5,0xbc,0x29,0x0f,0x92,0x77,0x8d,
- 0x5f,0x38,0x57,0x68,0x83,0x24,0x7f,0x7b,0x0a,0xfc,0x63,0x7a,0x1f,0xa8,0x1d,0xc2,
- 0x30,0x60,0x05,0xdb,0x5f,0x38,0xf3,0x95,0x65,0x70,0xd7,0x7f,0x15,0xec,0xc8,0x84,
- 0x4d,0x90,0xff,0xd3,0x81,0x69,0xaf,0xef,0xd9,0x57,0x10,0x6a,0xca,0x83,0xee,0xfa,
- 0x2f,0xc1,0x4d,0x83,0xc7,0x40,0x10,0xb6,0x05,0x78,0x05,0xee,0x73,0x12,0xa9,0x9d,
- 0xc1,0xcd,0x62,0x1e,0xfe,0xb1,0x7f,0x7d,0xee,0x9d,0xcf,0x91,0xcc,0x15,0x69,0x3e,
- 0xf8,0x22,0x8a,0x0b,0xff,0xc0,0x0e,0xfb,0xfe,0x28,0xcc,0x65,0x8e,0xbe,0x9c,0xc7,
- 0x27,0xed,0x2b,0xe1,0x44,0x90,0x4e,0x4b,0x65,0xe3,0x1f,0xa9,0x01,0xcb,0xa0,0x70,
- 0x22,0x26,0xff,0x87,0xc7,0xaf,0xec,0xe7,0xaf,0x92,0x13,0xee,0xfc,0xd7,0x74,0xc4,
- 0x3f,0x41,0x0b,0xed,0x30,0x58,0x28,0x87,0xee,0x1d,0xb7,0xf1,0xb0,0x19,0x4a,0xad,
- 0xd4,0xc8,0xa0,0x1b,0xff,0x48,0x56,0x18,0xe4,0xfb,0x1c,0x06,0x04,0x56,0x91,0x5f,
- 0xf0,0xf8,0x8f,0xd3,0x18,0xa7,0x7f,0x29,0xc9,0xce,0x7f,0x7d,0x44,0xe7,0x73,0xb4,
- 0x03,0xa7,0x93,0x73,0x87,0xbc,0xa1,0xb6,0x43,0xda,0x0b,0xaa,0x75,0x85,0x41,0xa3,
- 0x88,0xb7,0x5a,0xdc,0x98,0xdf,0xff,0x70,0x02,0xeb,0xbf,0x18,0xec,0xc1,0x42,0x03,
- 0xdd,0xa5,0x31,0x06,0xad,0x73,0xeb,0xdf,0x3f,0xa2,0x0e,0xda,0x69,0x3a,0x88,0xfa,
- 0x81,0x57,0x84,0x39,0x6c,0x7d,0x4e,0x3b,0x66,0x86,0x92,0x8c,0xbc,0xfe,0x3f,0x96,
- 0xb5,0x7c,0x5e,0xa8,0xd9,0x57,0xdc,0xc9,0xa6,0xf9,0x6f,0x60,0xdb,0x1f,0x91,0xa7,
- 0x2a,0x72,0xf3,0x5f,0x36,0xda,0xa1,0xd5,0xe3,0xbc,0x10,0x6c,0x2d,0xbd,0x8a,0x5f,
- 0xf1,0x3e,0x1d,0x63,0x13,0xef,0xc8,0xcb,0x7f,0xd9,0x6f,0x13,0xd1,0x8c,0x5e,0x57,
- 0xfc,0x87,0x9b,0xa6,0x3b,0x94,0x8a,0xd8,0xeb,0x39,0xf1,0x9f,0x01,0x13,0xed,0x20,
- 0xec,0x59,0x9c,0xfc,0xcc,0x24,0x8f,0xff,0x58,0x57,0x5a,0xb6,0xf9,0xc6,0xba,0xf3,
- 0xf2,0x5f,0x19,0xb4,0xb3,0x84,0xb2,0xfd,0xa9,0xfb,0x0a,0x36,0xd2,0x9c,0xa2,0xfe,
- 0xdd,0xdc,0xef,0x87,0x10,0x08,0x0d,0xdb,0xf1,0x01,0x33,0x34,0xe4,0x55,0xa7,0xa8,
- 0x7f,0xb7,0xc2,0x3e,0x1e,0x7d,0x21,0x6f,0xe3,0x93,0xb9,0xd2,0xd0,0xba,0x3d,0x91,
- 0x57,0xff,0x6e,0xd1,0x54,0x76,0x82,0x9f,0x19,0x96,0xa6,0xb1,0x48,0x6f,0xa6,0x70,
- 0x8c,0x97,0x92,0x4d,0x51,0xff,0xae,0x92,0xe1,0x82,0x9d,0x0b,0x02,0x11,0x8f,0x4a,
- 0x5e,0xc6,0x7e,0x38,0xfc,0x0a,0xef,0x08,0x24,0xab,0x90,0x83,0x7f,0x4c,0xda,0x8f,
- 0x59,0xff,0xe5,0xa5,0xe5,0x69,0x32,0x92,0xb9,0x82,0xd4,0x14,0x25,0x17,0xff,0x64,
- 0x66,0x17,0x69,0x4c,0x88,0x1f,0xbb,0xaf,0xe4,0xd5,0xbf,0x8f,0x99,0xa0,0xc8,0x1a,
- 0xdf,0xce,0xf4,0x73,0x62,0x74,0xbf,0x7b,0xbc,0x77,0x63,0x77,0xa1,0x90,0x85,0x7f,
- 0xec,0xfa,0xf7,0x54,0x6d,0xb0,0xa2,0x98,0x92,0x65,0xea,0x11,0x7e,0x45,0x4c,0xe2,
- 0x57,0xaa,0xbc,0x8d,0xe1,0x1f,0xfb,0xf9,0x2d,0xfc,0xc3,0x67,0x27,0xcf,0x92,0x83,
- 0x1d,0xb2,0x4a,0x5e,0xa4,0x38,0x5f,0xd1,0x22,0x3e,0x2d,0x65,0x1a,0x20,0x82,0xad,
- 0x7f,0x77,0xfd,0xbb,0xba,0x87,0x34,0x2c,0x60,0xf8,0xe7,0x2b,0xd2,0xc3,0x66,0xfe,
- 0x8b,0x7f,0xd5,0xea,0xc9,0xc7,0x3f,0xae,0x78,0x8e,0x97,0x87,0xf5,0x48,0xd8,0x21,
- 0x02,0x75,0x36,0xb8,0xeb,0xdf,0xdd,0xf1,0x1f,0xd5,0xee,0xff,0x93,0x74,0xdf,0xa1,
- 0xb3,0xd8,0xcd,0x7f,0x76,0xea,0xdf,0x4d,0x6d,0xcf,0x45,0x20,0xca,0xb6,0xbd,0x84,
- 0x5f,0xe1,0x5f,0x91,0xa9,0xf2,0x5f,0x9c,0xf6,0x23,0x63,0xfd,0x97,0x9c,0x64,0x37,
- 0x5d,0x47,0x30,0xb0,0xc9,0xf1,0x4f,0x63,0x2a,0x90,0x24,0x39,0xf8,0x47,0x72,0xde,
- 0x0e,0xb4,0x3f,0xea,0xbb,0x65,0x2e,0xfb,0xd3,0xa0,0xab,0x17,0xc8,0x7f,0xbd,0x89,
- 0xef,0xa3,0xc1,0x36,0x32,0x6f,0x02,0xc6,0x7f,0x3c,0x26,0xfe,0x09,0xaa,0xd9,0xf9,
- 0x2f,0xbb,0xfe,0x1d,0xd1,0xce,0xd3,0xf4,0xfa,0xb7,0xbd,0xab,0x98,0x5b,0x79,0x99,
- 0x5d,0x51,0x56,0x89,0xdf,0xb7,0x4b,0xc3,0xf2,0xf1,0x8f,0xd9,0xdf,0x46,0x0a,0x0f,
- 0x5b,0xfd,0xc4,0xac,0x2b,0xbf,0xc0,0x50,0x46,0x4a,0xdc,0xe7,0xe4,0xdf,0xc1,0xee,
- 0xdf,0xc2,0xbc,0x95,0x7e,0xfa,0x88,0x25,0x98,0xfe,0x6b,0xda,0x39,0xfd,0xbc,0x19,
- 0x08,0xca,0xc2,0x3f,0xb2,0xf5,0xfc,0x6f,0xc1,0xae,0x64,0xfd,0x70,0xf1,0x37,0xc8,
- 0x21,0x30,0xe3,0x57,0x22,0x87,0x46,0xa0,0xdc,0x53,0x96,0x8d,0x7f,0x38,0xa8,0x63,
- 0xb3,0x5b,0xff,0xb4,0xdf,0x8c,0xff,0xd0,0x1f,0x58,0x1a,0x90,0xbf,0x6b,0x0a,0x79,
- 0xf9,0x2f,0xae,0x3d,0xd5,0xea,0xa7,0xf4,0x92,0x1d,0x88,0x46,0x0b,0xdf,0x90,0x52,
- 0xae,0xcf,0x8d,0xff,0x98,0x61,0x9f,0x63,0xaa,0xd9,0x78,0x96,0x4d,0xf3,0x77,0x19,
- 0x8f,0x16,0xbe,0xcb,0xb7,0x3b,0x1f,0xff,0x38,0xdf,0x0e,0x31,0xe1,0x60,0xe4,0x17,
- 0x96,0x3f,0x92,0x4f,0x93,0x06,0xb2,0x61,0x20,0x3f,0xff,0x65,0x5b,0xef,0x79,0x46,
- 0x31,0x1a,0xf6,0xd7,0xdc,0xfb,0xfd,0xf5,0x13,0x90,0x9f,0xff,0x42,0x6f,0x25,0xf3,
- 0x44,0x4c,0xaa,0x6c,0x8c,0xe1,0x99,0x99,0x96,0xff,0x12,0x18,0xd4,0x49,0xb9,0xeb,
- 0xdf,0x0b,0x82,0x6e,0x7f,0x5d,0x67,0x14,0xa5,0xca,0xd0,0xdf,0x7d,0xd9,0x1a,0x2f,
- 0x35,0xdc,0xc3,0xc6,0x4f,0x51,0xff,0xce,0xf4,0xa3,0xed,0xd2,0x34,0x43,0x6e,0x22,
- 0xaf,0x92,0x47,0xed,0xc2,0xe7,0x66,0x81,0x13,0x3f,0x5a,0xb3,0xf1,0x8f,0x85,0xee,
- 0xe8,0xf9,0xd2,0x1b,0x8c,0xfa,0x01,0xf1,0x7d,0x6a,0xe5,0x17,0x8e,0xc1,0x7f,0xe7,
- 0xa5,0xc7,0xee,0xfc,0x17,0xe2,0x9f,0x80,0xe9,0xbf,0xd4,0xf3,0x51,0x26,0xec,0xac,
- 0x19,0x33,0xdc,0xfe,0x0b,0x7c,0x13,0x6d,0x6e,0xfe,0xf3,0x73,0x66,0xfc,0xf0,0xf5,
- 0xee,0x73,0xf0,0xda,0x9a,0xe6,0xe8,0x67,0x97,0xb6,0x61,0xfc,0xe7,0x3a,0x5c,0x48,
- 0xd8,0x28,0xb2,0x39,0x3d,0x6d,0x52,0x9c,0xa0,0x19,0xfe,0x15,0x82,0x9c,0x92,0xa8,
- 0xb2,0xb9,0xec,0x20,0xf2,0x0d,0x34,0x39,0x4e,0x7e,0x8c,0x61,0x0d,0xc4,0x3f,0x6f,
- 0xc2,0x06,0x5a,0x87,0xc2,0x44,0x86,0xdf,0x2e,0xd9,0xfd,0x25,0x5a,0x5f,0x62,0xe3,
- 0x35,0x3d,0xae,0xb6,0xba,0x0a,0xbd,0xbb,0x4d,0x57,0x75,0x3c,0xbb,0xff,0x0f,0x69,
- 0x88,0x8a,0x83,0xe4,0x1d,0xd2,0xdd,0x73,0x97,0x26,0xaf,0x27,0x3b,0x32,0x85,0x78,
- 0x7d,0x3c,0x10,0xc4,0xee,0x6f,0x3f,0x0f,0x48,0xf8,0xbe,0xcc,0xe8,0xf4,0x6d,0xc2,
- 0xb4,0xcb,0x48,0xea,0x1e,0xaf,0x99,0x08,0x33,0xf5,0xc3,0x80,0x0a,0x77,0xcd,0x86,
- 0xc3,0xdf,0xde,0xa2,0xce,0x37,0x9d,0x78,0x02,0xb5,0x41,0xbe,0x05,0x3e,0x43,0xe1,
- 0x6a,0x19,0xe2,0xfa,0x31,0x2b,0xe2,0x9b,0xc7,0x73,0xf8,0x3f,0x73,0x46,0x7d,0xbb,
- 0x7d,0xb5,0xc8,0x7f,0xee,0xf0,0x6d,0xea,0x66,0xf7,0xc7,0x42,0xa7,0x54,0xf7,0x41,
- 0x78,0x45,0x46,0xa1,0x2d,0xa7,0xff,0x21,0x69,0x78,0xbb,0x6f,0xb0,0x15,0x0b,0x73,
- 0xfc,0x6a,0x9f,0x4c,0x82,0xf0,0x6b,0x7d,0x8e,0xa1,0x3c,0x1b,0x3b,0xc3,0x1c,0x37,
- 0x32,0xdc,0xca,0x32,0xfd,0x7f,0x0c,0x73,0x3d,0x8c,0x2b,0x65,0x24,0x48,0xba,0xe9,
- 0xb6,0x3b,0x14,0x19,0x5f,0x93,0x51,0xac,0x08,0x43,0xfd,0x98,0x1b,0xb1,0x53,0x19,
- 0xfc,0x03,0x1c,0xff,0x44,0x17,0x7d,0x81,0xcc,0x80,0xb5,0xbb,0xff,0x6a,0xa5,0x32,
- 0xce,0x0b,0xe1,0xaf,0x4a,0x5f,0x8e,0xfd,0x00,0xd7,0xc6,0x39,0x30,0x38,0x93,0xc1,
- 0x3f,0x95,0x5e,0xfd,0x23,0x75,0xfe,0x61,0x65,0x76,0xac,0x04,0x5e,0x48,0xce,0xff,
- 0xa6,0x0f,0xd6,0xad,0x97,0x3e,0x92,0x42,0x43,0x3e,0xe4,0xff,0xbc,0x00,0x21,0x04,
- 0x42,0x2e,0xfe,0x8f,0xf7,0x59,0xf5,0x3c,0x69,0x59,0xe0,0x3b,0x5e,0x8e,0x68,0x70,
- 0xde,0xb0,0xaf,0xcb,0x84,0xcd,0xc3,0x4c,0x3f,0x67,0xed,0x40,0x50,0xa6,0xfe,0x5d,
- 0xb6,0xf9,0x3f,0xaa,0x18,0x44,0x6d,0x47,0xbd,0xb2,0x68,0x75,0xec,0x1c,0x14,0x83,
- 0xf4,0x95,0xa5,0x5c,0xff,0x07,0x9c,0xdf,0x77,0xdc,0xe6,0xff,0x74,0x96,0x61,0x21,
- 0xd8,0xb5,0xc6,0x76,0x3d,0x43,0xa4,0xbc,0x82,0xad,0x07,0x2e,0x1c,0x77,0xf4,0x09,
- 0x76,0xff,0x9f,0x23,0x64,0x86,0x70,0x3f,0x12,0xbf,0x3b,0x08,0xf2,0x7f,0xae,0xc1,
- 0x69,0x96,0xd0,0xef,0x9a,0xd0,0x68,0x34,0x37,0xfe,0x13,0x57,0xea,0xc8,0x35,0x6c,
- 0x3f,0x52,0x9b,0x8e,0xcb,0x4e,0xbc,0xd1,0x13,0x64,0x40,0xc8,0xea,0x7f,0xe8,0x3c,
- 0x8f,0x64,0xc6,0x7f,0x7c,0x1f,0x78,0xe6,0xea,0x87,0x8e,0x7e,0x35,0xe9,0x7d,0xaf,
- 0x74,0x05,0xbb,0x32,0x0f,0xf1,0x4f,0x00,0x1b,0xdd,0xe4,0xf4,0x3f,0xcc,0xf2,0x47,
- 0x1d,0xf7,0x55,0x98,0xb4,0x67,0xbd,0x90,0xf3,0x9f,0xd9,0x8b,0xce,0xbf,0x9a,0xa2,
- 0xff,0xf3,0x65,0xe2,0xcc,0xf8,0x7e,0xa3,0x69,0x99,0xe9,0xe6,0xe8,0x1c,0xac,0x08,
- 0x1b,0x83,0xfd,0xc9,0x81,0xdc,0xfe,0x87,0xdc,0xc9,0xfe,0xf5,0xa2,0x04,0xae,0x1f,
- 0x63,0xeb,0xbd,0x7d,0x8f,0x30,0xfb,0xb3,0x53,0xad,0xc3,0x7e,0xce,0x63,0x58,0x5a,
- 0xa8,0xf3,0x7c,0xba,0x83,0x7f,0xa4,0x5a,0xdb,0x5f,0x5f,0x05,0xbd,0x92,0xff,0x16,
- 0x65,0xa3,0xab,0x10,0x9e,0x3c,0xae,0x73,0xc1,0xc5,0xff,0xa9,0x90,0x24,0xb3,0x1f,
- 0x8e,0xa7,0x40,0xed,0xd6,0x35,0xbd,0xcf,0xac,0x7f,0x0f,0xe8,0xbc,0xdf,0x8b,0x15,
- 0x11,0x32,0x32,0xf8,0xa7,0x28,0x6a,0xcf,0x97,0x2d,0x6e,0xd8,0xc8,0x27,0x2e,0x9d,
- 0xb2,0xe3,0x0f,0xe3,0x66,0x20,0xe8,0x9c,0x63,0x7f,0x06,0xcd,0x7e,0x86,0x0b,0x18,
- 0xc8,0x39,0x43,0x3e,0x86,0x1b,0xf5,0x0d,0x98,0x08,0xfb,0x90,0x67,0x88,0xc4,0xdf,
- 0x80,0x55,0x11,0x9f,0xc1,0x3f,0x73,0x79,0xfe,0x8b,0xa1,0xf1,0x44,0xf7,0x6c,0xf8,
- 0x25,0x3c,0xad,0x7b,0x23,0x64,0x39,0x9c,0xd5,0x07,0x30,0x83,0x56,0x1b,0x7f,0x31,
- 0xd0,0x64,0x26,0x0a,0x1d,0xbc,0x04,0x49,0x8c,0xff,0xc0,0xa2,0x61,0xa2,0xa9,0x71,
- 0x4e,0xc3,0x16,0xa3,0x30,0x88,0x69,0x2f,0xea,0xd1,0xb6,0xc6,0xcd,0x8c,0xd8,0x21,
- 0x47,0xff,0xba,0xd4,0x63,0xf2,0x7f,0x56,0x11,0x69,0x4b,0x57,0x70,0x26,0xd2,0xa2,
- 0xda,0x79,0x22,0x8c,0x4d,0x5c,0x32,0xac,0xf9,0xbe,0x9e,0x89,0xff,0x54,0x6c,0x53,
- 0xf7,0x40,0x63,0x64,0xd1,0xeb,0x4d,0x12,0xe9,0x2d,0xe2,0xb0,0x67,0xb9,0x64,0xe9,
- 0x13,0x13,0x61,0x28,0x14,0xbe,0xe3,0xac,0x87,0xad,0xd2,0x36,0x93,0xbd,0x9c,0x50,
- 0x66,0xc2,0xd0,0xd0,0x6c,0x7d,0xbd,0x2a,0x22,0x82,0x65,0x8f,0x8d,0x1d,0x14,0x79,
- 0xe9,0x5f,0xe2,0xb6,0x4c,0xff,0xc3,0xf7,0x54,0xab,0x3f,0xb6,0x8a,0xd5,0x3a,0x46,
- 0xb8,0xd3,0x6c,0x14,0x29,0xf3,0x8e,0x88,0xc3,0xa6,0xa2,0x12,0x2e,0xfe,0x73,0x9d,
- 0x6a,0x81,0x9c,0x58,0xf9,0x51,0xe9,0x88,0xde,0x24,0x6f,0x30,0x13,0x61,0xc7,0x33,
- 0x8c,0x2c,0x9f,0x1b,0xff,0xc8,0x92,0xc9,0xff,0x91,0x93,0x65,0x93,0xfa,0xfd,0x50,
- 0xf3,0xf8,0xa2,0x71,0x71,0x85,0xf4,0x54,0xd4,0x4f,0x95,0x34,0xdb,0xa1,0xdf,0xcf,
- 0x2b,0xe2,0x5d,0xfd,0x0f,0x65,0x33,0xfe,0x53,0x3b,0x17,0xc8,0x6b,0x68,0x6d,0x52,
- 0x8a,0xe0,0xf7,0xc2,0x00,0x56,0xa4,0x96,0x91,0xc5,0xd0,0x65,0xda,0x9f,0x03,0xce,
- 0x7a,0x33,0xfb,0x1f,0x36,0xa6,0x2b,0x3b,0xc9,0x2f,0x91,0x48,0xaf,0x2b,0x06,0xb9,
- 0x13,0x9e,0x32,0x5f,0xdb,0x2a,0x58,0x63,0x06,0x82,0xb6,0x3b,0xe3,0x03,0x95,0x26,
- 0xff,0x87,0xc3,0x9e,0x43,0x74,0xa7,0xe6,0xeb,0x50,0x66,0x48,0xe7,0xe8,0x96,0xb4,
- 0x6f,0xa9,0x78,0x9f,0xf6,0x92,0x19,0x08,0x7a,0x6f,0xa6,0x3d,0x5e,0x2e,0x36,0xf1,
- 0x8f,0x92,0x6c,0x3b,0x56,0x38,0x1e,0xbd,0x0f,0xbb,0xbb,0x38,0x16,0xe6,0x58,0xeb,
- 0x29,0xd3,0xd1,0x67,0xe2,0x3f,0x51,0xc9,0xec,0xff,0x5c,0x32,0x29,0x86,0xe1,0x45,
- 0xa3,0x39,0xea,0x1b,0x67,0x7f,0xe8,0x1c,0xef,0xff,0xac,0x3c,0xc7,0x80,0x16,0x4f,
- 0x64,0x8c,0x66,0xf0,0x0f,0xe2,0x19,0x52,0xdf,0xae,0x2c,0x2d,0xf3,0xea,0x3f,0xd1,
- 0x66,0x77,0xf6,0xe9,0x58,0xbf,0x1f,0xb9,0xd6,0x50,0xbe,0x46,0xaa,0xe8,0x1a,0x73,
- 0x22,0x6e,0xbc,0xc1,0xed,0x55,0xc2,0xd3,0x59,0x38,0x17,0xbe,0x5f,0x58,0x2d,0x28,
- 0x3a,0xa7,0x3d,0xf3,0x34,0x5f,0x95,0xfa,0x90,0x39,0x7e,0x58,0xb3,0xf5,0xaf,0x57,
- 0xf0,0xb6,0x1b,0xbf,0x51,0x66,0x97,0xc9,0xb4,0x9f,0xd4,0x36,0x2d,0xaa,0x2a,0x3b,
- 0x28,0x0d,0x88,0xb5,0xd8,0x11,0xc8,0x4b,0x36,0x72,0xfb,0x73,0xc9,0x91,0x8c,0x7f,
- 0xe4,0xfb,0xfd,0xb0,0x51,0xb2,0xdb,0x5f,0xcc,0xac,0x4d,0xe8,0x5e,0x5f,0x21,0x73,
- 0x73,0xc7,0x99,0xbf,0xf3,0x25,0xc8,0x7c,0x78,0xdd,0xec,0xe8,0x32,0xe2,0xac,0x9f,
- 0xa4,0x6a,0xf2,0x7f,0x96,0x3c,0x27,0xbe,0x2f,0x4d,0x0e,0x85,0xf5,0x0d,0x4e,0xfc,
- 0xa7,0x87,0xd9,0xf3,0xf7,0x4c,0xa8,0x70,0x34,0xb7,0xff,0x8f,0xce,0xdc,0xe2,0x39,
- 0xfd,0x10,0x34,0x83,0xd7,0xe8,0x7e,0x16,0xce,0x19,0xff,0x1d,0xc3,0xf8,0xf3,0xa5,
- 0xb7,0xd4,0x66,0xac,0x00,0x4a,0x3b,0xeb,0x67,0xc8,0xc2,0x3f,0x72,0x6a,0xdf,0xef,
- 0x61,0x7b,0xfb,0x56,0xcd,0xd3,0x2f,0x62,0x45,0xfc,0xbd,0x86,0xe2,0x65,0xf6,0x73,
- 0x9d,0xbe,0x15,0x03,0x0b,0x49,0x77,0xff,0x43,0xe4,0xe7,0x8c,0xc8,0x5b,0xc8,0x31,
- 0x2d,0x5e,0xe4,0x5f,0xc6,0xf0,0xc0,0x0e,0x18,0x14,0x98,0x9b,0xee,0x27,0x38,0x9e,
- 0x3b,0xee,0x3c,0xfe,0x4f,0x3a,0xd0,0x44,0x8e,0x2d,0x48,0xea,0xda,0x42,0x0f,0x78,
- 0x16,0x4b,0x03,0xbc,0x50,0x97,0x19,0xea,0x98,0x69,0x9f,0x63,0x5d,0x60,0x7f,0xe4,
- 0x20,0x3f,0xdf,0xc1,0x3b,0x10,0x1b,0xc3,0xb2,0xe2,0x22,0x2f,0xfd,0xcc,0x0e,0xb6,
- 0xfe,0xff,0x16,0x19,0xa7,0x55,0x6c,0xa3,0xca,0xfd,0x4b,0x3a,0x8f,0xff,0xc3,0xbe,
- 0x3d,0x0c,0x67,0xb4,0xb0,0xc8,0xa6,0x79,0x46,0xfa,0x03,0xdc,0x60,0xf8,0x74,0x66,
- 0x91,0xce,0x99,0x40,0x68,0xfb,0xcc,0x0c,0xfe,0x39,0x0f,0x07,0xd5,0xeb,0x52,0xde,
- 0x49,0xf1,0x6e,0x38,0xbf,0xa6,0x45,0x0d,0x0e,0x96,0x7f,0xa0,0xff,0xca,0x15,0xff,
- 0x41,0xc1,0x85,0x7f,0x2a,0x0f,0x42,0x97,0x36,0x87,0xca,0x83,0x6c,0xbe,0x7b,0x69,
- 0xc3,0x03,0x95,0x83,0x65,0x26,0xff,0xc7,0x8e,0xff,0x64,0xe3,0x1f,0xb9,0x00,0x0f,
- 0x1d,0xd8,0x16,0xb7,0xea,0xfd,0x83,0x95,0x28,0x50,0xd7,0x7e,0x3c,0x98,0x83,0x7f,
- 0x0a,0xd6,0x93,0xbe,0xd5,0x33,0xa9,0x6c,0x45,0x4b,0xb6,0x2a,0xd8,0x4f,0xdb,0x1d,
- 0x3f,0x61,0x42,0x6b,0x06,0xff,0x20,0xff,0x67,0xff,0xc8,0x1c,0x1a,0x4c,0x71,0xb7,
- 0x1b,0x0e,0x79,0xcd,0x6d,0x42,0x06,0x21,0xa3,0xf0,0x13,0xa7,0xbf,0x13,0xf6,0x3f,
- 0xfc,0x18,0xae,0x8c,0x39,0xe8,0xd7,0x8b,0x49,0x41,0x37,0x3e,0xe4,0xf8,0xc7,0xdd,
- 0xff,0x19,0x7e,0xa7,0xce,0x5b,0xed,0xb5,0x60,0x39,0xa7,0x3d,0x67,0x21,0x70,0x9e,
- 0x98,0x76,0xc5,0x7f,0x1a,0xb0,0x1b,0x76,0x97,0x1d,0xf6,0x39,0x5c,0x90,0x22,0x1f,
- 0x68,0x7b,0xb3,0x9f,0x9f,0xfc,0xc1,0xf9,0x79,0x0d,0x69,0x49,0xbc,0x3b,0xe9,0xdf,
- 0x22,0x9b,0xb4,0x9f,0x06,0xea,0x47,0xfd,0xec,0xca,0xd1,0x8f,0x8b,0xff,0xac,0x7e,
- 0x91,0x81,0xa8,0xea,0xa4,0x19,0x06,0xd9,0x56,0x9f,0xc4,0xfe,0x3f,0xf4,0x69,0x5a,
- 0xec,0xc4,0x7f,0x38,0xfe,0x49,0xd8,0xeb,0xad,0x43,0xc6,0xfc,0xfe,0x33,0x34,0x18,
- 0x12,0x3f,0xa0,0xbf,0x4e,0x86,0xe9,0xe7,0xe7,0x95,0x1f,0x4a,0xf0,0x13,0x31,0x10,
- 0xff,0x7c,0xd5,0x14,0x5c,0xf8,0xa7,0xe0,0x59,0xc2,0x40,0x4e,0x0f,0x6a,0x43,0x3f,
- 0xcd,0x04,0xaf,0x8b,0x1f,0x95,0x21,0x4a,0x65,0xe1,0x9f,0x17,0xa0,0x89,0x22,0xdb,
- 0x1c,0x77,0x67,0xc3,0x8b,0xb3,0xf5,0x63,0x6e,0x6d,0x32,0xf8,0x67,0xe4,0xd2,0xcd,
- 0x0c,0xf6,0xd4,0x60,0x3d,0xc5,0x19,0xa4,0x4d,0xa6,0xab,0xec,0xfa,0x2f,0x25,0x23,
- 0xf8,0x33,0xf8,0x07,0xcf,0xbf,0xd8,0x60,0xcf,0xf7,0x07,0xb4,0x7e,0x5c,0x5e,0x75,
- 0xd7,0x5b,0x19,0x22,0x90,0x25,0x64,0xf0,0xcf,0x0a,0x89,0x81,0x46,0x9d,0x6d,0x7b,
- 0x4d,0x74,0xdd,0x30,0x2a,0xbb,0xd4,0xe8,0x08,0xd9,0xfd,0x9f,0x99,0x59,0xe8,0x0a,
- 0xe2,0xee,0xf8,0x0d,0xa9,0xa5,0x67,0x87,0x19,0xf6,0x09,0xdb,0xf1,0x9f,0x70,0x0e,
- 0xfe,0x11,0xb6,0x90,0xc9,0x8e,0xe7,0x54,0x13,0xff,0x48,0x76,0xfd,0x57,0x4e,0x22,
- 0xcc,0x8d,0x7f,0x66,0xd2,0x21,0x61,0x00,0xc3,0x02,0x76,0x7c,0xa0,0xf5,0x9d,0x5c,
- 0x06,0x48,0x16,0xfe,0xf9,0x6b,0xe8,0x8d,0xfa,0x97,0xf2,0xfe,0x3f,0xd7,0x33,0x47,
- 0x1c,0x47,0x1a,0xb3,0x2b,0x22,0xd4,0x90,0x8d,0x7f,0xe6,0x16,0x48,0xd0,0x5b,0xba,
- 0x15,0xd9,0xd1,0x38,0xbe,0x21,0x22,0x27,0xca,0xc6,0xd4,0xdc,0xf1,0x2f,0x39,0xeb,
- 0x2d,0x50,0x51,0x00,0x5d,0xba,0x16,0xa9,0xe3,0xb4,0x1f,0xf0,0x62,0x1b,0xc0,0x17,
- 0x9d,0x08,0x89,0x25,0xb4,0x1a,0xce,0xf8,0xb9,0xc5,0x1d,0xfc,0xb4,0x0b,0x6b,0x9a,
- 0x33,0xc0,0xcb,0x69,0x4e,0x39,0xf3,0x3d,0x97,0xa9,0x7f,0x67,0xf8,0xe7,0x6c,0x7b,
- 0x8b,0x5e,0x6c,0xce,0xee,0xc6,0xd1,0xff,0xe6,0x9a,0x66,0x86,0xf8,0xe4,0x8a,0xff,
- 0x7c,0x0c,0xfb,0xa3,0x4d,0x11,0x4b,0x3f,0x2d,0xba,0x94,0x10,0x3f,0x26,0xfb,0x73,
- 0xc7,0xbb,0xfa,0x3f,0x1b,0x94,0x46,0x6b,0x64,0x19,0xe3,0x3f,0x73,0xa1,0x01,0x02,
- 0xb4,0x2c,0x4d,0xe3,0xae,0x8e,0x88,0x1c,0xff,0x64,0x9d,0x7f,0xb1,0x7a,0x41,0x35,
- 0xf6,0x73,0x1e,0x9e,0xbd,0x93,0x57,0xbb,0xb3,0x69,0x76,0x65,0xcf,0x97,0x8c,0x66,
- 0xf0,0x8f,0xb4,0x8d,0xac,0xd6,0x6b,0x38,0x7b,0x9c,0xab,0xb1,0xd2,0x8e,0xbf,0x15,
- 0xb9,0xf4,0xf9,0x4e,0x56,0xfc,0x07,0xdb,0x5a,0x06,0x33,0xbf,0x6f,0xf9,0x18,0xe4,
- 0x3e,0x7f,0x06,0xff,0xf0,0xf3,0x2f,0x12,0xce,0xb7,0xf3,0xb9,0x10,0xca,0xd5,0x4f,
- 0xf6,0xf9,0x17,0x23,0xd1,0x66,0xec,0xb6,0xc4,0xb5,0x5d,0xee,0xa5,0x9f,0x32,0x89,
- 0x67,0xee,0x85,0xe7,0x8e,0xff,0x78,0xc8,0x3a,0x5c,0xff,0xb8,0x9e,0x1f,0x81,0x46,
- 0x06,0x84,0xc8,0x69,0x75,0x9d,0x15,0x11,0x32,0xf3,0x5f,0x49,0x72,0x40,0xd3,0x9d,
- 0xf1,0x4b,0x8c,0x6e,0xe4,0x73,0xb2,0xb7,0x03,0x1b,0x67,0x25,0x8b,0x42,0xe4,0x7d,
- 0x1e,0xaf,0xf0,0xb8,0xde,0x97,0x57,0x9c,0xf7,0x8b,0x96,0x56,0x30,0x90,0x53,0x83,
- 0xd5,0xdf,0x6f,0xd2,0xa7,0x21,0x38,0x8a,0xfd,0x7f,0x6a,0xd7,0x66,0xde,0x5f,0x0c,
- 0x95,0xb4,0x8e,0xd8,0xb7,0x87,0xb8,0x7c,0x19,0x03,0x21,0x3b,0x93,0x0c,0xff,0xfc,
- 0x8a,0x47,0x7b,0xea,0x57,0x31,0x27,0xf4,0x5b,0xec,0x08,0x6d,0xe5,0xbf,0x10,0xff,
- 0xbc,0xe2,0xb7,0xc7,0xcb,0x05,0x49,0xac,0xff,0xa2,0x8d,0xb6,0x19,0x2f,0x99,0xc2,
- 0xde,0x96,0xef,0x23,0xf6,0xf3,0x40,0xc5,0x73,0x70,0x3a,0x61,0xb7,0xfd,0x49,0xb4,
- 0xa4,0xbd,0x27,0x79,0x23,0xa0,0x6c,0xff,0xe5,0xc6,0x3f,0xdf,0x81,0xe7,0x28,0x82,
- 0x96,0x9b,0xdf,0x84,0x5d,0xf4,0x06,0x43,0xbe,0x87,0x9c,0x86,0xb5,0xd9,0xf6,0xa7,
- 0xcc,0x5d,0xff,0xd5,0x0f,0x4f,0x6b,0xd5,0x49,0xf3,0x5b,0xad,0xde,0x08,0xdc,0x73,
- 0xdb,0xe6,0x9c,0xf1,0xf7,0xb8,0xea,0xdf,0xb5,0x0a,0xca,0x94,0x9c,0xa4,0x76,0x99,
- 0xf3,0x11,0xa6,0x58,0x23,0x2b,0x9e,0x8f,0xad,0x39,0x8e,0x64,0xc5,0x7f,0xb0,0x6d,
- 0x14,0x67,0x4b,0xe2,0xec,0xe4,0x14,0x6f,0x04,0x94,0xed,0x5f,0x46,0x5c,0xf5,0xb0,
- 0xbf,0x51,0x27,0xb1,0x7f,0xb8,0xf5,0x6d,0x7a,0x09,0x06,0x8e,0x9c,0x42,0x30,0x1c,
- 0x7f,0x25,0x32,0x88,0xec,0xf1,0xd5,0xea,0x69,0x38,0x2b,0x37,0x6b,0xdc,0x8c,0xff,
- 0x9e,0x59,0xef,0xa0,0x75,0xfe,0x85,0xdb,0x9e,0xd7,0xa4,0x97,0xdb,0xe3,0xb7,0x48,
- 0xcb,0x60,0x70,0x42,0x83,0x80,0xd9,0x76,0x0f,0x81,0x50,0xeb,0xb1,0x5c,0xff,0x4b,
- 0x3e,0x74,0x7e,0x5f,0x8c,0xff,0xb0,0xdd,0xc1,0x2d,0xb6,0xbf,0xbe,0x8b,0x9f,0x7f,
- 0xf1,0xbd,0x9c,0xf1,0x69,0xf7,0xfe,0x0b,0x52,0x9a,0x5f,0xe7,0x6c,0xf0,0x5d,0xa1,
- 0xa0,0x1e,0xc0,0x40,0x50,0x77,0xb6,0x7d,0x6e,0x75,0xf3,0x9f,0x57,0xc0,0xc9,0xc0,
- 0x00,0xac,0xc7,0x34,0x04,0xf3,0xbf,0x7a,0xd5,0x4e,0xce,0xff,0xc9,0xd6,0x4f,0x3a,
- 0x27,0xff,0xd5,0x02,0x25,0x13,0x35,0x58,0xff,0x85,0xd9,0x8a,0x9a,0xb1,0x5c,0xff,
- 0x55,0x3e,0x7e,0xb3,0x13,0x3f,0x01,0xd2,0x03,0x5b,0x20,0x80,0xe5,0x1f,0x17,0x16,
- 0xc0,0xfd,0x91,0xb0,0x3a,0x56,0x67,0x16,0xf8,0x13,0x04,0xf7,0xa7,0x07,0xaa,0x41,
- 0xd6,0x89,0xfa,0x49,0xc2,0xff,0xca,0xfd,0xa9,0x59,0x6e,0xf8,0x89,0x82,0xeb,0xf3,
- 0xc9,0x03,0x4d,0xe1,0x7f,0xe5,0xfe,0x7f,0xea,0xe7,0x3f,0x99,0xfe,0x55,0x3c,0xcb,
- 0x0f,0x81,0x51,0x95,0xf1,0x09,0x82,0xf4,0x3f,0x7d,0xff,0xff,0x87,0xf5,0x2f,0xa9,
- 0xf4,0x3f,0xa0,0x73,0xc1,0x15,0x5f,0xfa,0xd3,0x3e,0xf3,0xe7,0xff,0x47,0x46,0xf9,
- 0x7c,0xff,0x93,0xb7,0xff,0x7f,0xe1,0xd3,0x72,0xfe,0xfc,0x79,0xe3,0xdf,0x11,0xfe,
- 0xbf,0x3c,0xfe,0x3f,0xd9,0xfb,0x78,0xd1,0x1e,0x5e,0xb4,0x87,0xff,0x0b,0xfa,0xbf,
- 0x68,0x0f,0xff,0xbd,0xcf,0x7f,0x36,0xfb,0xf3,0x9f,0x6b,0xbc,0x51,0x70,0x5c,0x5f,
- 0x4c,0x9b,0x6b,0xbd,0x77,0xce,0x0c,0xc3,0x47,0x74,0x2f,0xb6,0xad,0x08,0x3b,0x19,
- 0x67,0x27,0x3e,0xe6,0xe2,0x47,0xa5,0x69,0x07,0x4d,0x0a,0x6c,0xff,0xd8,0xc0,0xdb,
- 0x22,0x2d,0xe4,0xf9,0x41,0x1e,0x16,0xf3,0x4f,0x15,0x1f,0x03,0x03,0x9b,0x5e,0xc6,
- 0xe3,0x04,0xd3,0x34,0x24,0x60,0xec,0x07,0x77,0x21,0x98,0x1d,0x1f,0x73,0xf1,0xc3,
- 0x93,0xea,0xc3,0x98,0xd6,0x97,0xfd,0x41,0xd8,0xab,0xf9,0x0f,0x5f,0x8e,0xf1,0xc6,
- 0x1b,0x72,0xf0,0x76,0xa6,0x3f,0x80,0x50,0xf1,0x18,0x19,0xa1,0x73,0x54,0x6f,0x82,
- 0x04,0xd9,0xf3,0xcf,0x9b,0x28,0xbe,0xbf,0x2d,0x98,0x17,0xbf,0xca,0xf4,0xc7,0xd8,
- 0x02,0x4f,0xe9,0xc7,0x92,0x2d,0xf0,0x3f,0x46,0xc5,0x33,0xc2,0x79,0xfa,0xbc,0x31,
- 0xc3,0x70,0xc7,0x7f,0x9e,0x37,0x05,0x77,0x7e,0x70,0x5b,0x74,0x3f,0x69,0xa2,0xde,
- 0x2e,0x93,0x0d,0x3e,0x51,0xb2,0x5a,0xdc,0xf1,0x49,0xf1,0x31,0xe9,0x2a,0xe8,0x92,
- 0xb7,0x6e,0x96,0xbf,0x4d,0x70,0xe3,0x10,0x48,0xb3,0xd7,0xd5,0x95,0x41,0xde,0x9b,
- 0x46,0x21,0x36,0xe1,0xe2,0x87,0xaf,0x80,0x01,0xa8,0xc3,0x32,0x52,0x54,0x4b,0xd2,
- 0x50,0x3c,0x56,0x63,0x67,0x53,0x3f,0xe9,0x60,0x4e,0x7e,0x50,0xb8,0x0c,0xd6,0xd0,
- 0x6b,0x56,0x74,0x4c,0x62,0x7d,0x5c,0xe2,0x9a,0x68,0x91,0xc9,0x97,0xce,0x8e,0x17,
- 0xb9,0xf2,0x83,0x72,0x80,0xfe,0x5a,0x9d,0x6b,0x78,0x03,0xa2,0x17,0x3e,0x4a,0x86,
- 0xc6,0x7d,0xb2,0x49,0x8b,0x32,0xe3,0x63,0x1f,0xe5,0xc5,0xc7,0xae,0x18,0x24,0x7f,
- 0x84,0xeb,0x46,0x96,0xfc,0xce,0x6a,0x2b,0x71,0xab,0x26,0x1e,0x73,0x35,0x12,0xcf,
- 0x8d,0x8f,0x05,0xa4,0x1d,0x70,0x40,0x9a,0xa3,0x7b,0xf9,0xf9,0x71,0x14,0xd2,0x6c,
- 0x23,0x9f,0xaf,0x1f,0x17,0x3f,0x4a,0xc5,0xfe,0x6c,0x8d,0x7a,0xdc,0xac,0xaf,0xb9,
- 0x96,0x6d,0xb4,0x39,0x3f,0x3c,0x6b,0x7f,0xea,0xe2,0x47,0x61,0x7e,0x90,0xb3,0xbf,
- 0x56,0x90,0xef,0xc3,0xf3,0xb4,0xc6,0x08,0x8c,0xb0,0xf9,0x7e,0x37,0x67,0xbe,0x99,
- 0xfd,0x60,0x47,0xc5,0x7a,0xbe,0x1b,0x2d,0xd2,0xb0,0xdf,0x4b,0x59,0xed,0x6e,0xd9,
- 0x4f,0x16,0x7f,0x62,0x7c,0xec,0x71,0xc2,0x9e,0x9f,0x3e,0x9e,0x94,0x03,0xf0,0x0c,
- 0x6d,0x4e,0xca,0x69,0xb2,0x3d,0x13,0x1f,0x3b,0x6e,0x1e,0x1d,0xe2,0xe6,0x47,0x1d,
- 0xd5,0x90,0x04,0x55,0x32,0xcc,0xa3,0x13,0xf7,0x95,0x35,0xf6,0x64,0xc5,0xc7,0xf4,
- 0xbc,0xf8,0xd8,0x3b,0x66,0x37,0x80,0x8d,0x58,0x1f,0x67,0x34,0xac,0xe8,0x78,0x44,
- 0xb4,0x0f,0x4a,0x43,0x6a,0x74,0x92,0x77,0xc8,0x71,0xf3,0xa3,0xfe,0x0a,0x7a,0x69,
- 0x43,0x34,0xb0,0xc9,0x83,0xf5,0x71,0xc1,0xa5,0xf2,0x65,0xa2,0x9b,0x31,0xa5,0xf1,
- 0x44,0x55,0x32,0x93,0x1f,0x04,0x89,0x7c,0xbb,0xf6,0x2b,0xc3,0xf2,0x1d,0xd6,0xf9,
- 0x68,0x0b,0x13,0x7e,0x6c,0x94,0xe4,0xc4,0xc7,0x66,0x22,0x51,0xdc,0xdd,0x1f,0xe9,
- 0x0a,0xb2,0x1a,0xea,0x23,0x81,0x3b,0x78,0x77,0x20,0x1c,0x0f,0xed,0x30,0x2b,0x13,
- 0x2f,0x02,0x24,0x0e,0xc5,0x9c,0xfd,0xe9,0xaa,0x22,0x9d,0x9f,0x86,0xe6,0xd5,0x45,
- 0x7e,0x1a,0xac,0x30,0x23,0xab,0x50,0x6b,0x12,0xe6,0xa0,0xd0,0xe0,0xae,0x8f,0x23,
- 0xa7,0xed,0x68,0xcf,0x6f,0xb0,0xcd,0x51,0xe4,0xdf,0x89,0x8f,0x9d,0xd0,0x5f,0x85,
- 0x5d,0x7a,0x70,0x54,0x6c,0x87,0xb3,0x50,0xbd,0xa0,0x3e,0x22,0x2e,0xcf,0x8c,0xff,
- 0xd8,0x2c,0xb5,0x7b,0x27,0x8b,0x1f,0x1e,0x07,0x3c,0x84,0x1a,0xf0,0xe0,0x36,0x3f,
- 0xc8,0x49,0x6c,0x8b,0x24,0xcc,0x04,0x85,0xde,0x36,0x45,0x7c,0x4c,0xbf,0x69,0x6c,
- 0x63,0xaf,0xa4,0xe1,0x21,0x20,0x3d,0xea,0x4e,0x61,0xab,0x7e,0x29,0xe7,0x87,0x63,
- 0x87,0xcc,0x0c,0x3f,0xdc,0x95,0x1f,0xc4,0xf3,0x6d,0x7b,0x05,0xde,0x54,0x61,0xb9,
- 0xf7,0x71,0xf0,0xdf,0x01,0x66,0xa3,0xec,0x99,0xd9,0xf1,0x46,0x57,0x7c,0x6c,0x18,
- 0x86,0xf4,0xa6,0x68,0xf0,0x21,0xd1,0xac,0x8f,0xbb,0x69,0x93,0xeb,0xf9,0xe5,0x3d,
- 0xb9,0xf1,0xb1,0xf7,0xb0,0x3f,0x12,0x84,0x6f,0xf3,0x25,0x94,0x6d,0xea,0x49,0x2d,
- 0x1c,0xed,0x9e,0x2a,0x7e,0x98,0x9d,0x1f,0x1c,0xe1,0x24,0xb4,0x05,0x49,0x12,0x67,
- 0xda,0x6e,0xef,0x69,0x4b,0xe6,0xe8,0xbf,0xab,0xdb,0x15,0x1f,0x5b,0x3d,0x57,0x5e,
- 0x47,0x1b,0x13,0xf2,0x78,0xd9,0x5c,0x69,0x8d,0x50,0x9d,0xfc,0xec,0x5d,0x24,0xa0,
- 0x22,0x63,0xaa,0xcf,0x6c,0x94,0x84,0xad,0x23,0xb3,0xce,0x87,0xf5,0x41,0x37,0x6d,
- 0x18,0x96,0x07,0x63,0x1d,0x68,0xa8,0x7b,0x2e,0xf3,0xbb,0xed,0x4f,0x12,0x89,0x1c,
- 0x81,0xc2,0x0c,0x3f,0xaa,0x1a,0xae,0x80,0xb5,0x3a,0xf6,0x47,0x8a,0x5d,0xc6,0xfb,
- 0x7b,0xdc,0x90,0x26,0x55,0xc2,0xd3,0x50,0x6c,0xbe,0xbf,0x4f,0x61,0xe8,0x29,0x5a,
- 0x98,0xe1,0x47,0x05,0xe2,0x61,0xde,0x0d,0xc0,0x3b,0xa9,0x3c,0xa2,0xbe,0x44,0xaf,
- 0x4d,0x96,0x2c,0x6d,0xfb,0xbe,0xf0,0xc7,0x1e,0x8b,0x31,0x75,0x82,0x5e,0x8b,0xad,
- 0x03,0x32,0xfc,0x28,0x4f,0x15,0xf2,0x85,0xe6,0x83,0x0f,0xdb,0xd4,0xe3,0xdb,0xb7,
- 0x38,0x99,0x09,0xfb,0xf0,0x46,0x40,0xd8,0x4a,0x31,0x93,0x1f,0x6c,0x5d,0x8d,0x6c,
- 0xab,0xe6,0x80,0x6f,0x5c,0xac,0x83,0x0f,0x13,0xb0,0xc3,0xfb,0x2e,0x3f,0x28,0xad,
- 0x25,0xad,0x60,0xa0,0xec,0x0c,0xfa,0xaf,0x23,0xee,0xf8,0x58,0x69,0x0a,0x69,0x09,
- 0xa0,0x74,0x15,0x7e,0xc1,0x78,0x92,0xce,0xde,0x1e,0xa8,0x41,0x43,0xa4,0x9a,0xc4,
- 0x27,0xfd,0x29,0x95,0xd7,0xa7,0xb8,0xf3,0x83,0x09,0xec,0x67,0x3b,0xa2,0x44,0x3c,
- 0x95,0xf0,0x94,0x56,0xb3,0x5e,0x4e,0xfb,0x6d,0x7b,0xe5,0xe7,0xfd,0x91,0x70,0xfc,
- 0xb0,0x63,0x7f,0xa2,0x15,0x18,0x0d,0xab,0x05,0xa5,0x84,0x99,0x8a,0x01,0x5a,0x0b,
- 0x95,0xdc,0x10,0xd9,0x0c,0xb4,0x9d,0xe6,0xd1,0x18,0x6f,0x64,0xf2,0x83,0x15,0x14,
- 0xf3,0x0b,0x43,0x8b,0x1e,0x2a,0x0a,0xc0,0x71,0xb9,0x69,0xa7,0xbc,0x43,0x59,0x89,
- 0xb4,0x1f,0x6e,0x3f,0xa5,0x49,0xe4,0x3f,0x53,0x71,0xc4,0xf5,0x3c,0x3f,0xc2,0xf7,
- 0x4b,0xf5,0x6d,0x2b,0x67,0x66,0x4a,0x7f,0x6e,0xd0,0xf7,0x63,0x77,0xfc,0x70,0xd2,
- 0xd4,0x8f,0x9b,0x1f,0xf5,0x2c,0x7b,0xbf,0x9a,0xd3,0xde,0x09,0x71,0x12,0xce,0xd1,
- 0xeb,0xf0,0xb4,0xee,0xf9,0x19,0x7f,0x77,0x26,0xc9,0x84,0x03,0x62,0x86,0xcf,0x3c,
- 0x24,0xd5,0x63,0x13,0x95,0xd9,0xf2,0xb6,0xd8,0x38,0x3c,0x13,0x49,0xa6,0x8b,0x35,
- 0xd1,0x66,0x4c,0x95,0x1d,0x83,0xc1,0x5b,0x98,0x50,0x1b,0xcb,0xd8,0x1f,0x5a,0xa0,
- 0x69,0x7d,0x18,0x5f,0xdd,0xe8,0x67,0xe3,0xf5,0x99,0x29,0xf9,0x31,0xb7,0xbf,0xc3,
- 0x7a,0x2e,0x5e,0xc1,0x6a,0xaf,0x07,0x59,0xc2,0xea,0x7e,0x3f,0xa2,0xd8,0x91,0xae,
- 0x81,0x4a,0xff,0xc6,0xa2,0x24,0xb1,0x19,0xc2,0xad,0x07,0x21,0x25,0xf1,0xa3,0x55,
- 0x32,0xf6,0x07,0x8a,0xa3,0x48,0x7b,0xc0,0xb6,0x00,0x98,0xad,0x98,0x73,0x64,0xf1,
- 0x3f,0x67,0x0a,0xb1,0x1d,0xfd,0xb8,0xfb,0x43,0x9a,0xa7,0x81,0x34,0xee,0xeb,0x9e,
- 0xd4,0xcf,0x69,0x2d,0x23,0x7f,0x79,0x97,0xdb,0xbf,0x9f,0xc9,0xe5,0x87,0xef,0x13,
- 0xce,0x49,0xe7,0x63,0x6c,0x91,0xac,0xaa,0x09,0xc3,0xe9,0x8d,0xcd,0xe9,0x69,0x7f,
- 0xa8,0xf9,0x40,0xcd,0x89,0xaf,0xb6,0x65,0xf2,0x83,0x86,0x6c,0x83,0x9c,0xc2,0x06,
- 0x86,0x4f,0xea,0xd2,0x25,0xf7,0xb0,0xd7,0xaa,0x0f,0x2e,0x94,0x1f,0x1c,0x81,0xf5,
- 0xd2,0x2e,0xde,0x6d,0x03,0xfd,0xbb,0xa6,0x19,0x4a,0x13,0xf3,0x56,0x8f,0xe6,0xe2,
- 0x9f,0x4c,0x7e,0x50,0x72,0xf8,0xe1,0x41,0xce,0x37,0xf3,0xa4,0xc8,0xfb,0xf0,0xc3,
- 0x6c,0xfc,0x73,0x5b,0x26,0x3f,0x58,0xed,0x9c,0xcf,0x45,0x9c,0xb2,0xac,0x77,0xb3,
- 0xf8,0x75,0x28,0x8c,0x66,0xf2,0x83,0xa5,0xcf,0xc2,0x79,0xc9,0x62,0x43,0xa1,0x5a,
- 0x6e,0x9d,0xa8,0x39,0x6d,0x76,0x04,0xb2,0xae,0xb0,0xaf,0x6a,0xb2,0xf3,0x83,0x66,
- 0x7f,0x24,0xa4,0x45,0x15,0xf2,0xfb,0x6b,0x2e,0xff,0x2e,0x9b,0x8d,0x3b,0x1c,0xfb,
- 0x73,0x84,0xf3,0xe5,0x4a,0x0c,0x65,0x2e,0x5f,0x06,0x73,0x86,0x94,0x09,0x22,0xc3,
- 0xde,0x64,0x36,0x7e,0x3b,0xee,0xfc,0xbc,0x23,0x19,0xbe,0xdc,0x62,0x9b,0xd8,0xdc,
- 0xa1,0x36,0x3b,0xfa,0x51,0x73,0xf2,0x83,0x13,0x2a,0x43,0x3b,0x5d,0xf5,0xc8,0x86,
- 0x42,0xd8,0xc3,0xd9,0x50,0x5f,0xa0,0xb9,0xf8,0xe7,0x9c,0x93,0x1f,0x5c,0x51,0x69,
- 0xf2,0xc3,0x97,0x34,0x29,0x8b,0x19,0x3e,0x09,0xa1,0xb0,0x90,0x7e,0x02,0xfe,0xa9,
- 0x30,0xf9,0xe1,0xd3,0x26,0xac,0x78,0xb5,0x6f,0x42,0x19,0x74,0xf1,0xc3,0xd5,0xbc,
- 0xfc,0xa0,0x83,0x76,0x56,0x0a,0xfc,0x7c,0x96,0x5d,0x4a,0x50,0xce,0xc5,0x3f,0xae,
- 0xfc,0x60,0xd1,0x66,0x37,0xda,0xa9,0x36,0xfa,0xbe,0x4a,0x2a,0xff,0x9d,0xfc,0x60,
- 0x66,0x76,0x5d,0xd5,0x58,0x0d,0x77,0x59,0x1e,0xde,0x73,0xf1,0xa3,0x24,0x2c,0x2a,
- 0xe4,0x41,0x78,0xa6,0x3d,0x01,0xf5,0x59,0x56,0x3f,0x05,0xfe,0xb1,0xc7,0x9b,0xfc,
- 0xa8,0x30,0x92,0x46,0xc6,0xed,0xb2,0xb8,0xb9,0x59,0xf9,0xc1,0xae,0x2b,0x73,0xf8,
- 0x51,0x82,0xed,0x7d,0x24,0x8b,0x1f,0x9e,0xd6,0x1c,0x7f,0x34,0x78,0x41,0x7e,0x94,
- 0xe9,0xdd,0x9a,0x98,0xf7,0x2c,0xdf,0x26,0xff,0xdc,0x70,0xae,0xe4,0xf1,0xa3,0x2c,
- 0xbe,0xd3,0x03,0xb1,0x31,0x69,0x8f,0x60,0xd2,0x72,0xd4,0x5e,0x3d,0x9c,0x61,0x80,
- 0xe7,0xe4,0x07,0x6b,0x33,0xe8,0x68,0x27,0xba,0x69,0x95,0x6c,0x83,0x87,0x1d,0xfc,
- 0x63,0xf3,0xa3,0xec,0x8f,0x56,0x61,0xf2,0xc3,0x8b,0x4c,0x5a,0x94,0xa6,0x5f,0x5e,
- 0x81,0x6d,0xb1,0x17,0x78,0x6d,0xfc,0x93,0xc3,0x8f,0x5a,0x75,0x05,0xe7,0x47,0x09,
- 0xbf,0xa2,0xad,0x69,0x98,0x60,0x50,0x7d,0x09,0x53,0x15,0xbc,0x91,0xf1,0xbf,0x26,
- 0x3f,0xca,0x59,0x3f,0x9c,0x1f,0x25,0x85,0xf9,0x31,0x1f,0x12,0x4e,0x7c,0xc9,0x26,
- 0x6c,0x14,0xc9,0x1b,0x63,0x4e,0x85,0x7f,0x4c,0x7e,0x14,0x07,0x39,0x56,0x7d,0xfd,
- 0xc6,0xee,0xe5,0x70,0xd6,0x22,0x4e,0xc3,0x59,0xb3,0x83,0xa2,0x8b,0x1f,0x25,0xa7,
- 0xf9,0x79,0xb5,0xdc,0xa8,0x0e,0x4a,0x26,0x2d,0x8a,0xab,0xdd,0xca,0x0f,0xe2,0x15,
- 0x7f,0x76,0x7e,0xd0,0x02,0x39,0x92,0x3c,0x4b,0xd6,0x74,0x8f,0xba,0xb5,0x5d,0xdb,
- 0x29,0x3b,0x78,0xaf,0x96,0x09,0x33,0x33,0xf9,0xc1,0x7e,0x69,0x1b,0x3f,0x6f,0x57,
- 0x71,0x9d,0x0f,0x62,0x6a,0xd8,0xca,0x0f,0xe6,0xf0,0xa3,0x92,0x60,0xff,0xbe,0x7f,
- 0x6d,0x9e,0x0f,0x72,0x6b,0x42,0xc1,0xf3,0xa3,0x9d,0xdf,0x77,0x0e,0x12,0xc5,0x5d,
- 0xf9,0x41,0xb6,0x1e,0xcc,0xb6,0x09,0x8a,0xa3,0x8d,0xdf,0xe6,0xe9,0xe7,0x94,0x73,
- 0x3e,0xac,0xac,0x26,0xa5,0x55,0x12,0x6a,0x7b,0x6d,0x5a,0x5a,0x25,0x34,0x99,0xf5,
- 0x89,0x93,0x52,0x76,0x7e,0x36,0x73,0x3e,0xac,0xc5,0x8f,0xa2,0x4a,0x74,0x1a,0x66,
- 0x03,0x79,0x7f,0xc8,0x00,0x9c,0x33,0xee,0x33,0xf3,0x83,0x4f,0xd1,0x06,0xec,0x80,
- 0xea,0xe2,0x47,0x49,0xa6,0xf7,0x79,0xa5,0x9e,0xbd,0x1d,0x7b,0x99,0xfd,0x59,0x94,
- 0x2a,0xf3,0x7a,0x77,0x15,0xdb,0xef,0x0b,0xe5,0xc2,0x3a,0x87,0xff,0x03,0xea,0x9d,
- 0x05,0x58,0xdf,0xca,0xde,0xd6,0xcd,0x98,0x38,0x33,0xfe,0xe2,0x5e,0x52,0x45,0x7f,
- 0xa0,0x5f,0x63,0xbd,0xbf,0x3a,0x7f,0x91,0xe3,0xf6,0xed,0x41,0xee,0xff,0x22,0x4f,
- 0x02,0xf2,0xb7,0xf5,0x7c,0x62,0x56,0xda,0x77,0xfd,0xd5,0x33,0x92,0x78,0x9e,0xb5,
- 0xd3,0x28,0x92,0x09,0xeb,0x9c,0xfc,0xa0,0xc7,0xea,0x17,0xb4,0x21,0x55,0x73,0xac,
- 0xe2,0xb4,0xf6,0x1c,0xb3,0x27,0x7f,0xf9,0xbe,0x7e,0xca,0x6d,0x4f,0x4a,0x90,0x1f,
- 0x6e,0x3f,0x4f,0xb4,0xe2,0x39,0xe0,0x6c,0x96,0x93,0x35,0x3f,0x86,0x5f,0xc5,0x9b,
- 0xd3,0x4b,0x06,0x6b,0x1a,0xe4,0x73,0x3d,0xcd,0x63,0xdc,0x7f,0x9d,0xb5,0xf2,0x83,
- 0x8e,0xff,0x7a,0x02,0x36,0x33,0x23,0x50,0x3f,0x5c,0x72,0x8f,0x88,0xfb,0xa9,0x6a,
- 0xa3,0xe4,0x14,0x99,0x61,0xac,0x67,0x1b,0x31,0x9b,0x1f,0x8e,0x27,0x86,0xe4,0xf5,
- 0x07,0x60,0xe8,0xa8,0xd5,0xb4,0x57,0x0a,0x9b,0x6f,0x7c,0x1b,0x54,0x0f,0xf1,0xf9,
- 0xee,0x36,0x0d,0xd7,0x58,0xd4,0x7e,0x1e,0x8b,0x1f,0x65,0x5b,0x1b,0x6d,0xc8,0x83,
- 0x07,0x63,0xc5,0x9d,0x7a,0x67,0x9e,0x1f,0x9c,0xe9,0xc2,0x3f,0xd3,0x8f,0x55,0xec,
- 0xb5,0x67,0x77,0x1e,0xed,0xe7,0x84,0x72,0x63,0xcf,0xef,0xdc,0xf5,0xc5,0x57,0xa6,
- 0xa6,0x1d,0xe8,0xb1,0xef,0x9f,0x14,0x76,0x58,0x4a,0x68,0xcb,0x6c,0x33,0x7b,0x7e,
- 0x97,0xa3,0x9f,0x4c,0xbe,0xb2,0x5a,0xb5,0xea,0x7d,0x26,0x85,0x33,0xd2,0x79,0xf8,
- 0xaa,0xb1,0x04,0xf9,0x30,0x6f,0xd9,0x07,0x85,0x58,0x7c,0xa1,0xb4,0xe3,0x1f,0xb7,
- 0x48,0x2b,0x79,0x7d,0xba,0xf2,0x5c,0xab,0xd9,0x78,0xa7,0x2f,0x05,0x07,0xd5,0x27,
- 0xa8,0xd5,0xb8,0xd2,0x8e,0x3f,0x38,0xbf,0x2f,0x2d,0x58,0x69,0x9e,0x0f,0xbb,0x93,
- 0x1c,0x93,0x76,0x71,0x1a,0x33,0x1c,0x83,0x7e,0x6a,0xf1,0xc9,0xf7,0xe0,0x51,0x6b,
- 0x29,0x92,0x14,0x6c,0xff,0x25,0xab,0xa6,0xbf,0xbb,0x9c,0xeb,0x47,0x4b,0x22,0x1e,
- 0x38,0x16,0x4f,0xba,0xf4,0x63,0x88,0x21,0xb2,0x2f,0xc3,0x8f,0xaa,0x5c,0x09,0xa7,
- 0xdb,0xb9,0x7f,0xc7,0x7a,0x25,0x3f,0x7b,0xda,0xb6,0x37,0x4f,0x1c,0x21,0x4d,0xe6,
- 0x95,0x49,0x73,0xe2,0x49,0xe2,0xe0,0x9f,0x07,0xce,0x08,0x9c,0x1f,0x3e,0x8a,0xfc,
- 0x96,0x52,0x26,0x9c,0x68,0x3b,0x43,0xcf,0x5c,0x30,0x3f,0xc8,0xfb,0x23,0xc9,0xcd,
- 0xc3,0x0c,0x9f,0x37,0x70,0xb4,0x53,0x6c,0xc2,0x9e,0xeb,0xd8,0x8a,0x6a,0x9b,0x22,
- 0xfe,0x63,0xf4,0x7f,0x20,0x3f,0x17,0x9d,0x33,0xcc,0xcf,0x47,0xdb,0x6b,0xb6,0x45,
- 0x42,0xd8,0x33,0x33,0xad,0x0c,0x4c,0x89,0x7f,0x0a,0xd8,0xa4,0x64,0xbf,0x2e,0xa7,
- 0x42,0x5e,0xde,0xa6,0xb8,0xc8,0x71,0x43,0x4d,0x53,0xc6,0x7f,0x18,0xfe,0x79,0x86,
- 0x99,0xf1,0x4a,0xeb,0xbc,0xdd,0x21,0xd9,0x05,0x1b,0xa6,0x88,0xff,0x2c,0x98,0x7e,
- 0x4c,0x9d,0xe8,0x6a,0xf2,0x07,0x43,0x08,0x0b,0x0b,0xef,0xc3,0xfa,0x38,0x07,0x11,
- 0x1d,0xb3,0x81,0xf4,0xa8,0x63,0x7f,0x52,0xc2,0xb3,0x30,0x99,0x08,0x2f,0xf7,0x4d,
- 0x74,0x9b,0xda,0x68,0x9c,0xc8,0xeb,0x0f,0xe0,0x8e,0xff,0x8c,0xaa,0xc8,0x46,0x1b,
- 0x18,0x95,0xa7,0xa2,0x45,0x31,0x41,0xcd,0xe3,0x47,0x05,0x61,0x30,0x91,0x34,0xe2,
- 0xe6,0xf9,0x32,0xc1,0xac,0xc7,0xce,0x3c,0xbf,0x8b,0x1f,0xbe,0x98,0x19,0xe1,0xa4,
- 0x5e,0x34,0x3b,0xa3,0x0d,0xb7,0x20,0x73,0x60,0x7c,0xca,0x85,0x7f,0xbe,0x08,0x4f,
- 0xf6,0x57,0xaf,0xfc,0x1b,0x66,0x4f,0xf4,0x0c,0x0c,0x48,0x66,0xe1,0x01,0x2d,0x13,
- 0xff,0x59,0x21,0x2f,0x86,0x0f,0xd5,0xd4,0xe2,0xfa,0x59,0xe2,0x21,0xde,0x28,0xc0,
- 0x77,0x83,0x78,0x08,0x3e,0x4a,0x66,0xe1,0x1f,0xc1,0x85,0x7f,0xa6,0x3f,0x0b,0x67,
- 0x13,0x2d,0x8b,0x6f,0xb5,0xd9,0xf2,0xca,0x04,0x9f,0xe6,0x05,0xf9,0x51,0xc8,0xcf,
- 0xf7,0x36,0x61,0x37,0xc8,0x43,0x79,0xb4,0xb4,0x29,0xe2,0x3f,0xe3,0x95,0x9b,0xf9,
- 0xe9,0x42,0x72,0x27,0xb9,0x33,0x97,0x96,0x60,0x09,0x7d,0xee,0xf8,0x0f,0xc7,0x3f,
- 0x46,0x75,0x5a,0x5e,0x55,0xf8,0x96,0x15,0xf6,0x99,0xf9,0x56,0x1e,0xfe,0x49,0x67,
- 0xe3,0x1f,0x43,0x9b,0x90,0x11,0x4f,0x76,0xe7,0xeb,0x73,0x2a,0x7e,0xd4,0xb9,0x9e,
- 0x5d,0xdb,0x83,0x88,0x76,0xde,0xc8,0xa6,0x45,0x91,0x29,0xf9,0x51,0x49,0x98,0x90,
- 0xc3,0x64,0x09,0x15,0xf2,0x69,0x42,0x53,0xf2,0xa3,0xd0,0x3f,0xa6,0xf0,0x90,0x08,
- 0xdb,0xbb,0x95,0xbb,0xf7,0xfb,0x74,0x4e,0x2e,0xfe,0x59,0x0e,0x7b,0x0c,0x3f,0xd6,
- 0xdb,0x8e,0x41,0x2e,0xcd,0x89,0x21,0x1c,0x3a,0x05,0xfe,0xd9,0xab,0xf9,0xdb,0xe5,
- 0x8d,0x53,0x8e,0xdf,0xa3,0xce,0xcc,0xe6,0x87,0x6b,0x77,0x60,0x13,0xec,0xe4,0xe7,
- 0x64,0x17,0x3b,0x68,0xd8,0x6e,0x0b,0xe0,0xe0,0x9f,0x0c,0x3f,0x61,0x15,0xdb,0x7f,
- 0x9d,0x62,0xb3,0x09,0x4e,0x35,0x4d,0x27,0xfe,0xe3,0xea,0x0f,0xc9,0xf0,0xcf,0xbf,
- 0xe8,0x2d,0xa3,0x8d,0xa3,0xd6,0x34,0x97,0x4c,0x15,0xdf,0xc8,0xa9,0x8f,0x4b,0x36,
- 0xaf,0xf2,0x46,0xc4,0xd9,0x80,0x6d,0x91,0xae,0x74,0x0d,0xdb,0x66,0x37,0x0a,0x78,
- 0xc9,0xc5,0x8f,0x62,0x20,0x67,0xfb,0xd6,0xeb,0x65,0x4a,0x92,0x24,0x43,0x8b,0x12,
- 0x78,0xc7,0x24,0x1b,0xff,0xe4,0xf0,0xa3,0xd8,0x7c,0xb1,0xe9,0xa5,0x94,0x47,0x8b,
- 0xea,0xe1,0xf3,0xed,0xcb,0x8a,0xff,0x70,0x7e,0xbe,0xd6,0x2e,0x63,0x35,0x5c,0x2f,
- 0x34,0x2c,0x58,0x94,0xad,0x4f,0xb2,0x35,0x37,0xfe,0xc3,0x61,0xed,0x3d,0x8b,0x13,
- 0x6d,0xb5,0x9c,0x16,0xa5,0x64,0x3d,0xff,0x49,0x86,0x97,0xf2,0xf9,0x51,0xcc,0x82,
- 0x5a,0xc7,0xa2,0x85,0x5d,0x6d,0x10,0x9c,0x7e,0x11,0xb9,0xfc,0x28,0x06,0x32,0xd5,
- 0x60,0x2c,0x3b,0xec,0x66,0x0b,0x02,0xf6,0xc3,0xc9,0xa9,0x8f,0x7b,0x8e,0xfa,0x69,
- 0x20,0xca,0xb6,0x5d,0x76,0xa1,0x9c,0x64,0x0b,0xf0,0x94,0xce,0x05,0x77,0xfc,0x67,
- 0x31,0xec,0xd5,0x35,0x23,0x30,0x77,0x8a,0x30,0xe9,0x41,0x86,0x77,0x83,0x26,0x3f,
- 0xdc,0xfe,0x7d,0xa9,0x7a,0x27,0x3c,0xaf,0x57,0x63,0xfc,0x27,0x13,0xb6,0x35,0xdb,
- 0x7a,0x74,0x32,0x84,0x60,0x15,0xce,0x67,0xe2,0x3f,0xf1,0xf8,0x17,0xe1,0x63,0x3c,
- 0x04,0x76,0x95,0xf2,0xc5,0x4c,0xa1,0x1c,0x0a,0x1b,0xcc,0xf8,0x0f,0xbf,0x92,0xd5,
- 0x1f,0x52,0xbd,0x07,0x9e,0x8b,0x34,0xa6,0xf2,0xc2,0xc8,0x3b,0xed,0xf8,0x8f,0x9b,
- 0x1f,0x4e,0x7a,0x90,0x1f,0xde,0x3c,0xe1,0x1d,0xe7,0x6e,0x2b,0xcc,0x61,0x8f,0xce,
- 0x77,0xf4,0x93,0x62,0x58,0x3a,0x67,0xfa,0x2f,0x57,0x7d,0x1c,0xb3,0x3f,0x4f,0xa2,
- 0xfd,0x89,0x9a,0xd6,0x26,0xcd,0x66,0x77,0x88,0xee,0x4a,0xb2,0xc7,0xfe,0x90,0x54,
- 0xa9,0x16,0x9e,0xc9,0xc6,0x3f,0x3b,0xd5,0xea,0xa8,0x3d,0x7e,0x04,0xe7,0xab,0x3f,
- 0x1d,0xaa,0x37,0xf9,0xf0,0xbb,0xf3,0xea,0xe3,0x98,0xfd,0x19,0x00,0xb6,0xde,0xb4,
- 0x2c,0xb3,0x23,0x7a,0x87,0x98,0xd9,0xb7,0x8e,0xc6,0x08,0x65,0xd5,0xc7,0x1d,0x53,
- 0x3f,0xd2,0x9b,0x22,0xcc,0x7f,0x99,0x8d,0x56,0xac,0xf9,0xce,0x40,0x33,0x1b,0xe4,
- 0xfe,0x9d,0x01,0x0f,0x57,0x3c,0x0a,0xf1,0x4f,0x34,0xdc,0xe1,0xf4,0x47,0xb2,0xc6,
- 0xdf,0x67,0xc5,0x7f,0x74,0xab,0xc3,0x92,0x7d,0x7f,0xc4,0x3f,0x67,0x81,0xa1,0xc1,
- 0x09,0x2b,0xec,0xc3,0xcf,0x3b,0x38,0x2f,0x70,0x33,0x3e,0x1f,0x2c,0x60,0x90,0xa9,
- 0x8f,0x63,0xf8,0x87,0x6d,0x9a,0xb6,0xa6,0x95,0xdd,0x84,0x37,0xfa,0x33,0x5c,0xfe,
- 0xd7,0x13,0xc4,0xf3,0xb9,0x4c,0xbe,0x53,0x56,0x7d,0x1c,0xf3,0xef,0xca,0x1a,0x62,
- 0x35,0x96,0x4c,0xb5,0x1e,0xcb,0x44,0x30,0x06,0xa3,0xb9,0xfc,0x28,0xb6,0xdf,0xdf,
- 0xc3,0x8d,0x8c,0xc7,0xdb,0xfe,0x20,0x12,0xcb,0x99,0x7e,0xd6,0xef,0xd2,0x82,0x66,
- 0x84,0xc4,0xd2,0x4f,0x76,0x7f,0xc8,0x93,0x30,0x0b,0xd9,0xe0,0x3c,0xec,0x73,0xe0,
- 0xd6,0x27,0xc5,0xf7,0x75,0xab,0x62,0x2e,0x68,0xe3,0x9f,0x4c,0x7d,0xdc,0x96,0x2b,
- 0x32,0xd1,0x1e,0xb3,0x2d,0xd2,0x71,0xf1,0x98,0x7e,0x7a,0x85,0x3b,0xfe,0x33,0xe1,
- 0xee,0x0f,0xc0,0xf0,0xcf,0x19,0xd8,0x15,0x65,0x78,0xe9,0x3e,0x38,0x1d,0x6b,0x4e,
- 0x17,0x0f,0x8b,0x61,0x3c,0x16,0xdc,0x1d,0xff,0x99,0xe6,0xce,0x7f,0xfd,0x58,0x45,
- 0xfb,0xac,0x7c,0x9b,0xe3,0x1f,0x7f,0x5a,0xde,0xc6,0x84,0x75,0x39,0xf1,0x1f,0x57,
- 0x7f,0x6c,0xe9,0x20,0x53,0x1a,0x33,0x32,0x66,0xda,0x6b,0x85,0x51,0x34,0x87,0xed,
- 0x47,0xa8,0x83,0x00,0xcd,0xf9,0xba,0xfa,0x63,0x97,0xee,0x80,0x3d,0x68,0xe4,0xe3,
- 0xbc,0xad,0x50,0x1d,0xc3,0x57,0x03,0x41,0xe8,0xd5,0x2f,0x84,0x7f,0x34,0xec,0x8f,
- 0x44,0x07,0xa2,0xbe,0x4a,0xab,0x2c,0xab,0x78,0xbb,0xd8,0x18,0x3b,0xa0,0x67,0xfb,
- 0xdf,0x51,0xc7,0x3e,0x60,0x7f,0x00,0xe6,0xd6,0x6f,0xf2,0x19,0xe2,0x19,0xf5,0xbc,
- 0x74,0x9d,0xb1,0x21,0x29,0x9e,0x87,0xf3,0x46,0xb6,0x7f,0x9f,0xcc,0x89,0xff,0x34,
- 0xad,0xf0,0xf5,0x30,0x6d,0xbf,0xa2,0x86,0x47,0x7c,0x4f,0x62,0xa3,0x86,0xc8,0x85,
- 0xf9,0xe1,0x41,0xb6,0x69,0xf2,0x47,0xfa,0x92,0xe2,0xdd,0xb5,0xff,0x3a,0xea,0x35,
- 0x94,0xc1,0xa6,0x12,0xad,0x6f,0xdf,0x85,0xe2,0x3f,0x46,0xc1,0x62,0x48,0xc5,0x70,
- 0x1b,0x1e,0xf3,0x32,0x7f,0xed,0x3d,0xc1,0xb4,0xe7,0xe5,0xfa,0xb9,0x00,0x3f,0x5c,
- 0x98,0x21,0x3c,0x69,0x2c,0x5b,0xde,0xb7,0x82,0x7c,0x91,0x7e,0x17,0x61,0xcf,0x3f,
- 0x90,0x30,0x5d,0x63,0xd8,0x78,0x20,0xc6,0x85,0x23,0xba,0xbd,0xde,0x56,0xc8,0x5e,
- 0xe6,0xaf,0x43,0xfa,0x12,0x98,0x56,0x42,0x5f,0x48,0x72,0xfc,0x53,0x12,0x1b,0x62,
- 0x2f,0xda,0x95,0x19,0xfc,0xf3,0x99,0xec,0xfe,0xd8,0x0c,0xed,0xe8,0xbe,0x6a,0xf1,
- 0x4d,0x86,0xb7,0x71,0x76,0x97,0x1f,0xc1,0xf3,0x1a,0xb2,0x1b,0x69,0xe6,0xf4,0x87,
- 0x6c,0x8a,0x32,0xff,0xc5,0xd7,0x27,0xb6,0x25,0x2f,0x0e,0xed,0x17,0xe6,0x0d,0x39,
- 0x85,0xae,0x4b,0x52,0x6d,0x4f,0x64,0x9d,0x8f,0x86,0x87,0x2a,0xca,0x9d,0x9e,0xaa,
- 0x8a,0xeb,0x78,0xa3,0x24,0x4f,0x45,0x1e,0x10,0xca,0xee,0x0f,0xb0,0x8b,0xd6,0x44,
- 0xe5,0xa5,0xb1,0x19,0xbc,0x51,0x52,0xd1,0x5c,0x12,0x86,0xd5,0x31,0x6b,0xbe,0x3f,
- 0x30,0xf1,0x4f,0x4e,0x7f,0x80,0x7d,0x49,0x43,0x9e,0x43,0x38,0xde,0xd6,0xaf,0x49,
- 0x95,0x11,0xc0,0x7e,0x14,0x45,0x17,0xc0,0x3f,0xdb,0xe1,0x5c,0xaa,0x89,0x7a,0x8f,
- 0x29,0x01,0xf8,0x06,0x36,0x8a,0x4c,0x97,0x7b,0xc8,0x21,0xb3,0x3e,0x6e,0x1c,0xfb,
- 0xad,0xa1,0xf0,0x4c,0x5e,0x7f,0xec,0x46,0x1e,0xff,0xd1,0x39,0x4d,0xf7,0x68,0xfb,
- 0x24,0xbd,0x30,0xfe,0x19,0x83,0x0f,0xb7,0x62,0xb5,0x94,0xf8,0x65,0x7a,0x52,0x0d,
- 0x47,0x7d,0x8f,0xd4,0x04,0x69,0x2e,0x7f,0x38,0x07,0xff,0xe8,0xfe,0x7b,0xcd,0xb0,
- 0x43,0xbc,0x81,0x9f,0x8f,0x46,0x7b,0x69,0x16,0xb0,0x11,0xb3,0xfa,0x63,0x4b,0x7b,
- 0xe4,0xba,0x0e,0xfb,0x58,0x90,0x76,0xfc,0x87,0x72,0xce,0x78,0x86,0x7f,0x6c,0xfd,
- 0xc8,0xed,0x92,0x6a,0x66,0x7f,0x3c,0x12,0xa6,0xbd,0x96,0x29,0x55,0x08,0x0c,0xf4,
- 0x6c,0x60,0xb0,0xcf,0x59,0x9f,0x66,0x7f,0x80,0x67,0x80,0x29,0xc1,0x2e,0x94,0x53,
- 0x34,0x32,0x42,0x1a,0xb2,0xe6,0xfb,0x81,0xeb,0x7c,0xb4,0x31,0xf9,0xac,0x7e,0xad,
- 0xbe,0xe4,0xb0,0xc9,0x0f,0xd7,0x37,0x1c,0xbe,0x3c,0xbb,0x03,0x00,0x0a,0x39,0xfd,
- 0x21,0x79,0x13,0xc8,0xee,0xaf,0xc1,0xc7,0xb8,0x2d,0x3d,0xde,0x3d,0x1b,0x5e,0xd3,
- 0x11,0x38,0x65,0x10,0x42,0x76,0xfe,0x6b,0xb0,0xbd,0x06,0x94,0x9e,0x32,0xcd,0x44,
- 0x3b,0x6b,0x48,0xb2,0xf2,0xc2,0xfc,0x70,0xec,0x0f,0xf0,0x2f,0x50,0xa0,0x2f,0x9a,
- 0xeb,0xb7,0x27,0xbe,0xb1,0x10,0xba,0xcc,0xc6,0x98,0xce,0x7c,0x8d,0xac,0xfe,0x48,
- 0x4f,0xc2,0x0f,0x0c,0x65,0x23,0xb1,0x1a,0x2f,0xa4,0x18,0x10,0xea,0xd3,0x1b,0x2e,
- 0x94,0xff,0x42,0x7c,0x4b,0xe7,0x44,0x97,0x24,0x14,0xeb,0xfc,0x97,0x07,0xc5,0x5a,
- 0xb2,0x7f,0xf4,0x42,0xfc,0xf0,0xed,0x18,0x2f,0x0a,0xcc,0xeb,0x30,0xd1,0x91,0xf4,
- 0xd4,0x72,0x5f,0x62,0xd1,0x72,0x26,0x34,0x98,0x07,0xe3,0x5a,0xe3,0x73,0xfb,0x03,
- 0x60,0xd8,0xa7,0x9b,0xe1,0x1f,0x8d,0x09,0x3d,0xdd,0x5b,0x61,0x44,0x6f,0xca,0xd2,
- 0xbf,0x0b,0xff,0x48,0x01,0xf9,0x99,0xb8,0x9f,0x2a,0xcb,0xc5,0x15,0xf2,0x53,0x20,
- 0x26,0xfb,0xd2,0xa4,0x12,0xee,0x17,0xfd,0x36,0x3f,0x1c,0xf1,0x8f,0xdf,0xcd,0x0f,
- 0x67,0xf6,0xc7,0x48,0x8a,0xec,0xa5,0x90,0x74,0xb6,0x11,0x1b,0x56,0x9e,0xf5,0x78,
- 0xed,0xb2,0x5c,0xe7,0x7d,0xc9,0xe0,0x1f,0x4d,0xa8,0x9a,0xfe,0x3c,0x6c,0xd9,0xa7,
- 0xe0,0xfe,0xe5,0x69,0xb9,0x1a,0x8a,0xbe,0xe6,0xa9,0x90,0xd7,0xec,0xab,0x76,0xbf,
- 0xbf,0xad,0x23,0x8e,0xfd,0x09,0xf0,0xfe,0x00,0xfc,0x58,0x10,0x2e,0x68,0xcc,0xad,
- 0x3c,0x42,0x5e,0x73,0xf5,0x47,0x42,0xe1,0x80,0xbb,0x3f,0x80,0xfc,0x21,0x1a,0xd5,
- 0x50,0x0d,0x5a,0x4b,0x36,0x3b,0xe6,0xdd,0xd4,0x53,0xd2,0x7d,0x59,0xf6,0x36,0x83,
- 0x7f,0xf0,0x7c,0x34,0x3c,0x0d,0x8d,0xdd,0x24,0xac,0x9f,0xa6,0xcd,0xcb,0x79,0x22,
- 0xec,0xb5,0x9e,0x96,0xf4,0x92,0x49,0x61,0x2a,0x7e,0x78,0xe9,0x66,0xfd,0xa9,0xe4,
- 0x16,0x43,0xb9,0x87,0xd9,0xdb,0xa7,0x13,0x5b,0x0a,0x4b,0xaa,0x63,0x84,0xf6,0xa8,
- 0x59,0x7c,0xef,0x9c,0xf8,0xcf,0xf3,0x81,0x65,0x12,0x56,0xcf,0xc1,0xd3,0xc2,0x35,
- 0x05,0x97,0x47,0x49,0x65,0x72,0x75,0x8e,0xbd,0x1a,0x73,0xfc,0x45,0x14,0xed,0x8f,
- 0xac,0x61,0x98,0x9a,0x97,0xe5,0xc2,0x17,0xe4,0x32,0x91,0xc4,0x8d,0x6c,0x7b,0xee,
- 0xaa,0x8f,0x9b,0xbe,0x03,0x3e,0xa2,0xfe,0xa3,0x4b,0x76,0x63,0xff,0x61,0x61,0x5e,
- 0x74,0xc9,0xe0,0x0d,0x75,0x30,0x62,0xe4,0xc4,0xcf,0x73,0xfb,0x03,0x54,0x58,0xc7,
- 0xc2,0xce,0xc1,0x46,0x91,0x47,0x61,0x32,0x32,0x23,0x6b,0xfc,0x58,0x56,0x7f,0x80,
- 0x73,0x94,0x1f,0x03,0x7a,0xde,0x2c,0x1c,0xbb,0x57,0x9c,0xad,0x1d,0x93,0x79,0xfc,
- 0xc7,0x69,0x05,0x33,0xe6,0xee,0x0f,0xa0,0xee,0x1d,0xf1,0x4f,0x28,0xcf,0xc6,0x8e,
- 0xa1,0x37,0xd7,0x94,0x67,0xc9,0x1a,0x7f,0xdc,0x98,0x93,0xed,0x7f,0x5d,0xfd,0x01,
- 0x18,0x5e,0xd2,0xb6,0x8e,0x28,0xd8,0x16,0x69,0x6f,0x65,0x43,0x94,0xbd,0x7d,0x75,
- 0x10,0xa7,0x7e,0xe3,0x02,0xfc,0x70,0xf0,0xc2,0xde,0x6a,0x5e,0x0d,0xf7,0x2a,0x1e,
- 0x14,0x0b,0x0a,0x10,0x1a,0xa2,0x76,0xbd,0xbc,0x19,0x1a,0x72,0xf3,0xc3,0x65,0xe6,
- 0xd6,0x85,0x7b,0x0d,0x66,0x0d,0xde,0xc7,0x46,0x01,0xcc,0x10,0x29,0x9a,0x31,0x6e,
- 0xc6,0xc7,0x1c,0x84,0x9c,0x5d,0x1f,0x37,0xa9,0xf2,0x26,0xd8,0x67,0xe0,0x0f,0x2b,
- 0x5a,0x60,0x43,0xa4,0x7b,0x34,0x37,0xfe,0x93,0x83,0x7f,0xce,0x63,0x13,0xd1,0x93,
- 0xe2,0xf3,0xf0,0x7b,0xa3,0x69,0x79,0xc9,0x49,0x86,0x7f,0x5e,0xa5,0xb3,0x10,0x48,
- 0xcf,0xd0,0x5f,0x4b,0xb4,0x8c,0x2d,0x7e,0x97,0xe4,0xf5,0x47,0x1a,0x91,0x07,0xf8,
- 0xb1,0x17,0x18,0xd8,0x29,0x0b,0xd2,0xee,0x6a,0xff,0x88,0x32,0xd0,0x1a,0xa4,0x7d,
- 0x1a,0xfb,0x2a,0x49,0x92,0x79,0xfd,0x91,0x18,0xcc,0xdb,0x41,0x77,0x69,0x75,0x1d,
- 0x0b,0x9b,0xfc,0xde,0xda,0x98,0x17,0x4f,0xf0,0xdc,0xe8,0x95,0xbb,0x11,0x01,0x6a,
- 0x59,0xfd,0x21,0xcd,0xec,0x61,0x20,0x44,0x82,0xfa,0xf7,0xa0,0xae,0x9d,0xe1,0x4f,
- 0xaf,0x8e,0x19,0x46,0xcc,0x28,0xe9,0xd8,0xa8,0x9c,0xdd,0x3f,0x83,0x7f,0xc0,0x3a,
- 0x1f,0x84,0xb9,0xdd,0xf5,0x4c,0xd8,0xae,0x17,0xa6,0xd8,0x42,0xea,0x33,0x36,0xa2,
- 0x5a,0x02,0xfe,0x57,0xba,0xc2,0x06,0xdb,0xda,0xeb,0xf9,0xe7,0x83,0x4c,0x28,0x58,
- 0x2f,0x70,0x1d,0x76,0xfb,0x39,0x83,0xfd,0x91,0x46,0xd9,0x95,0x49,0x38,0xdf,0xcf,
- 0xbe,0x4a,0x8b,0x83,0xf9,0xe7,0x83,0xa4,0xba,0xd9,0x1f,0xd2,0xb0,0x71,0x3d,0xf6,
- 0xeb,0x90,0xc3,0xc3,0xec,0x2f,0xbe,0x0f,0xaf,0x40,0xd3,0x70,0xf6,0xf9,0xb0,0x3c,
- 0xff,0x15,0x4c,0xb3,0xf5,0xc3,0x14,0xa5,0xb3,0xf5,0xf0,0x1c,0xf9,0x3d,0xe5,0x8d,
- 0x26,0x06,0x63,0x07,0xa3,0xbf,0x30,0xe6,0x4c,0x28,0x3f,0xce,0x3f,0x1f,0x64,0x98,
- 0xcd,0xee,0xe0,0xf0,0x5e,0x23,0xb8,0x82,0x8d,0x7f,0x8d,0xee,0x55,0x97,0xbf,0x5b,
- 0x89,0xf1,0xb1,0xee,0x17,0xb4,0x51,0xe5,0xb1,0x29,0xce,0x07,0x71,0xba,0x21,0x59,
- 0x42,0x4d,0x1a,0x56,0x91,0x73,0x0b,0xbe,0x8b,0x19,0xb1,0x15,0x65,0x59,0xfd,0x91,
- 0xd4,0x4c,0xb6,0x4b,0xae,0xba,0x4b,0x99,0x45,0x10,0xf6,0xcc,0x36,0xf0,0x7c,0x10,
- 0x7d,0xbf,0x1c,0x32,0x7c,0xb9,0xe7,0x83,0x58,0x41,0xc2,0x63,0xbc,0x91,0xa6,0x95,
- 0xf6,0xba,0x0e,0x4f,0x8c,0x3d,0xa3,0xff,0x0b,0x06,0x82,0xd2,0x79,0xf8,0x67,0x7e,
- 0x9a,0x97,0xb1,0xfc,0x82,0xce,0xd3,0x17,0xe3,0x79,0xd6,0xaf,0x98,0x07,0xd5,0x8d,
- 0x43,0x1f,0xb6,0x4e,0x4a,0xe6,0xf5,0x47,0xc2,0xf3,0xa9,0x35,0x6c,0x8b,0x5d,0xa3,
- 0x63,0xa1,0x0d,0x6c,0x80,0x6b,0x75,0xbe,0x91,0xe4,0x47,0xc7,0x46,0x0b,0x33,0xf8,
- 0x67,0xc8,0xca,0x7f,0x1d,0x58,0xa5,0x9d,0x83,0xb5,0xf4,0x9a,0xa8,0x8c,0xf5,0x35,
- 0x1b,0x68,0xf5,0x84,0xb2,0x94,0xbc,0xa5,0xae,0x8e,0x55,0x23,0x35,0x28,0xb7,0x3f,
- 0x52,0x10,0xb7,0x2d,0x2f,0x61,0x37,0x80,0x68,0x47,0x88,0xc1,0xf2,0xee,0xce,0x99,
- 0x08,0xcb,0xb1,0x11,0x10,0x3f,0x0a,0xd3,0x85,0x7f,0xbe,0x63,0xe6,0xbf,0x4a,0xd8,
- 0x43,0xd2,0x03,0xc2,0xbc,0xc7,0xbd,0x28,0x1c,0x5a,0xe0,0xa7,0xbe,0x27,0xc4,0x23,
- 0xfe,0x03,0x64,0x80,0xfa,0xa2,0xf9,0xe7,0x83,0x64,0xbc,0x0f,0x02,0x21,0xf6,0xfb,
- 0xcc,0xc1,0x8a,0xb9,0xa3,0x74,0x92,0x84,0xd5,0x9c,0xf3,0xd1,0xac,0xd3,0xaf,0x12,
- 0x62,0x2d,0xec,0xa7,0x25,0x18,0x08,0xfa,0x32,0xdc,0x42,0xe7,0xb5,0x7b,0x13,0xe5,
- 0x33,0xe9,0xc3,0xc9,0x70,0x2e,0xff,0xc7,0xea,0x8f,0xbd,0x99,0xcc,0xa4,0xbd,0x46,
- 0x43,0xa7,0xdc,0x4f,0xae,0x86,0xae,0x61,0xff,0x5d,0x72,0x7f,0x8c,0x01,0x21,0xbd,
- 0x61,0x05,0x73,0xcd,0x79,0xfd,0x21,0x75,0xe5,0x21,0x22,0xd1,0xde,0x48,0xb0,0x5d,
- 0x2e,0x8d,0xfd,0xd5,0xc2,0x1f,0x46,0xea,0x74,0x79,0x63,0x19,0xfb,0x4a,0x6e,0xe8,
- 0x78,0x25,0x51,0x98,0xd7,0x1f,0x29,0xa2,0x54,0x10,0x2c,0x94,0x0b,0x46,0x64,0x14,
- 0xae,0xc1,0x83,0x33,0x2a,0xc8,0x55,0xb0,0x85,0x5d,0x51,0x36,0xb9,0xfa,0x43,0x0e,
- 0x9a,0xfd,0xb1,0x29,0x3f,0x1f,0xd6,0x60,0x42,0x90,0x96,0x47,0x61,0x05,0xcc,0xc3,
- 0xb6,0x48,0x00,0x13,0x3c,0x03,0xd8,0x96,0xc5,0xff,0xb1,0xf2,0x59,0xca,0x09,0x5e,
- 0xef,0xc6,0x66,0x77,0x58,0xfe,0x25,0x13,0x1a,0x47,0xc5,0x13,0xf0,0x4b,0xf3,0xab,
- 0x4c,0xfc,0xa7,0x9f,0xe7,0xbf,0xbe,0xd5,0x5e,0xc2,0xbd,0xbf,0xde,0xa4,0x7b,0x13,
- 0x6d,0x57,0x61,0x59,0x7d,0xbb,0xb7,0xb4,0x86,0x09,0x6c,0x6b,0xec,0xdd,0x94,0x8b,
- 0x7f,0xf0,0xf4,0x9c,0x98,0x3f,0x4d,0x07,0x61,0xab,0x2c,0xc7,0x62,0x5a,0x6c,0x9d,
- 0x96,0x64,0x02,0xdb,0x58,0xe1,0xd1,0x69,0xb2,0xe1,0xc2,0x3f,0x60,0xf5,0xc7,0xf6,
- 0x44,0x62,0x87,0xb5,0x27,0xb5,0xea,0xd6,0xa2,0x48,0x61,0x05,0xac,0x96,0x19,0x02,
- 0x8f,0x90,0x0a,0xba,0x5a,0xe3,0xc2,0xbe,0xbc,0xfe,0xd8,0xf2,0x28,0x39,0x41,0x9f,
- 0x04,0xa1,0xbd,0x08,0x8f,0xfd,0x5a,0x0d,0x7c,0x58,0x15,0xc5,0xf5,0xc9,0xbe,0xca,
- 0x8d,0xff,0x34,0xe8,0xfc,0xf9,0xb1,0x2d,0x40,0x3d,0x6f,0x04,0x9a,0x68,0x8a,0x06,
- 0xf1,0x7c,0x34,0x7e,0x34,0x5e,0x82,0x8c,0x5f,0xa0,0x3f,0x36,0x09,0xb3,0x7f,0xa8,
- 0x8c,0x51,0xde,0x31,0x60,0xa3,0x38,0x46,0x4e,0x26,0x9e,0xd3,0x1b,0x13,0xdd,0x79,
- 0xfd,0x91,0xb4,0xc5,0x31,0x51,0xc3,0xf3,0x41,0xcc,0x83,0xd2,0x4c,0x41,0xac,0xa6,
- 0xbc,0x63,0x95,0xe1,0x3e,0x1f,0x6d,0x35,0xe6,0xbf,0x82,0x58,0x16,0x87,0xfd,0x31,
- 0xb6,0xc6,0x57,0xec,0xe8,0xfb,0xf4,0x5d,0xeb,0xd4,0xad,0x29,0x79,0x07,0xf9,0x34,
- 0x3c,0xa3,0xfb,0xd9,0x57,0xe2,0xc2,0xdc,0xfe,0x90,0xcb,0xe5,0xb9,0xa4,0x04,0xba,
- 0xe3,0xc1,0x91,0xa2,0xf9,0x64,0x09,0x74,0x1b,0xda,0xdb,0xf2,0x3c,0xe2,0x83,0x5d,
- 0x49,0x6d,0x3c,0x50,0x9b,0xdf,0x1f,0x5b,0x97,0xbf,0x49,0xae,0x14,0xd6,0xea,0xf5,
- 0x46,0x11,0x86,0x41,0xd6,0xca,0xd5,0xfb,0xe4,0x89,0xd8,0x15,0xc2,0x77,0x75,0x26,
- 0xac,0x88,0x65,0xf7,0xc7,0xfe,0x23,0x33,0x53,0xde,0x49,0x25,0x4c,0x5e,0x33,0xf3,
- 0x0b,0xf7,0xc1,0x6b,0xb4,0x3a,0xbd,0x78,0x95,0x32,0x03,0xb0,0x11,0xb1,0x97,0x21,
- 0x96,0xdc,0xfe,0x48,0x66,0x7d,0x1c,0xce,0xae,0x04,0xd1,0x3e,0xbf,0x62,0x13,0x81,
- 0x96,0xb8,0xf9,0x3f,0xcc,0x7f,0xa9,0xe7,0xf1,0xfc,0xb5,0xc9,0xf2,0xfb,0xb2,0xcb,
- 0xe2,0xbc,0x93,0x36,0x91,0x35,0x9b,0xff,0xb3,0x19,0xd9,0x3e,0x09,0x59,0x27,0x97,
- 0x18,0x6c,0xdb,0x45,0x79,0xbf,0xeb,0xa7,0x93,0x8d,0x11,0xf6,0xb3,0x56,0xe9,0x4f,
- 0xaa,0xf5,0xc3,0xca,0x6d,0x79,0xe7,0x83,0xb0,0xf9,0x4e,0x90,0xa5,0xfc,0x60,0x47,
- 0x25,0x42,0x46,0x61,0xb7,0x5a,0xaf,0x17,0x39,0x1d,0xc2,0x3b,0xca,0x32,0xfc,0x1f,
- 0xab,0x3f,0x12,0x36,0xf9,0x09,0xb6,0x76,0x41,0xb0,0x96,0xef,0x26,0x70,0x23,0x56,
- 0x34,0x8b,0x14,0x63,0x69,0xbc,0xa1,0x40,0x59,0x06,0xff,0xac,0xe0,0xf9,0xbe,0xf9,
- 0xba,0x37,0x55,0x7e,0x37,0xf4,0x59,0xf1,0x2e,0xed,0x34,0x6d,0x48,0xd7,0x0f,0x2a,
- 0x41,0x30,0x53,0x63,0x85,0x79,0xf8,0x27,0xd2,0x68,0xe2,0x9f,0xf0,0xa8,0x6f,0x9b,
- 0xf8,0xbe,0x7c,0x3a,0x12,0xee,0x29,0xd9,0x26,0x1e,0x35,0x4e,0xe1,0x79,0xe5,0x78,
- 0xb0,0x88,0x7d,0x7f,0xc3,0xec,0x0f,0x30,0xce,0xb4,0x71,0x8e,0x1e,0x62,0x02,0xb3,
- 0xde,0xe7,0xf4,0x33,0x72,0xcb,0x88,0x99,0xff,0x52,0x9b,0x13,0xde,0xb4,0x92,0xe1,
- 0xff,0x58,0xfd,0x91,0xd2,0xf2,0x93,0x0c,0xff,0xac,0x5b,0xda,0x30,0xa2,0xfc,0x88,
- 0xfc,0x1e,0xf6,0x76,0x34,0x3c,0xb0,0xe8,0xf1,0x8d,0xbf,0xd7,0x07,0x8c,0x39,0x09,
- 0xb9,0x36,0xbf,0x3f,0xa4,0x81,0x65,0xaa,0x5a,0x9f,0x60,0x6e,0xf3,0xb5,0xbd,0x6a,
- 0x9d,0x71,0x39,0x86,0xa9,0x31,0x5f,0x2c,0x27,0xf2,0xfb,0x43,0xe2,0x69,0x68,0xc3,
- 0xb4,0x5b,0x34,0x61,0xa1,0xcc,0xd3,0x1c,0xaa,0xdf,0x60,0xe3,0x6b,0xb1,0x34,0x35,
- 0x63,0x7f,0xa8,0xd5,0x1f,0x9b,0x79,0xdb,0x11,0xab,0x6c,0xb0,0xec,0x98,0x3c,0xa9,
- 0xcd,0xb3,0xf1,0x5e,0x93,0x11,0xcc,0xe6,0xff,0x98,0xfd,0x10,0x1a,0x3b,0xc5,0x63,
- 0x6d,0xa6,0xa3,0x77,0xda,0xfe,0xd8,0xf8,0xc7,0xcd,0xff,0x19,0x9a,0x3e,0xa1,0x1d,
- 0x84,0xeb,0xc0,0xbb,0x4f,0x0c,0x73,0xbe,0x2d,0x13,0x66,0x33,0xbc,0xd4,0x9c,0xce,
- 0xe2,0x3f,0x67,0xf0,0x89,0xfa,0x36,0xc4,0x47,0xb7,0xce,0x8e,0xc7,0xd9,0x16,0x30,
- 0x3e,0xe4,0xdf,0x27,0x3f,0x10,0xbb,0x1a,0x06,0xa9,0xdf,0x1d,0xff,0xf1,0x4f,0xd4,
- 0xda,0xfa,0x3c,0xc0,0x7e,0xb1,0xa4,0xb0,0x82,0xcd,0x9b,0xe1,0xe1,0x2d,0xba,0x36,
- 0xe2,0xf1,0xd7,0x15,0x43,0xca,0x3c,0x38,0xcf,0x49,0x95,0x1e,0x17,0x9c,0xf5,0xcc,
- 0xde,0xf7,0xed,0x7a,0x1d,0xc8,0xc9,0x58,0x10,0x1e,0x67,0xdb,0x90,0xc0,0x76,0x12,
- 0xa4,0x7b,0xe2,0x59,0x78,0xd2,0x9f,0xe1,0xff,0x2c,0x28,0xf8,0x80,0xa4,0xe9,0xbc,
- 0xf1,0xe0,0x77,0xd8,0x6a,0xf9,0x1d,0x6d,0x1a,0x3a,0x18,0x7f,0xa1,0x96,0x4e,0xc6,
- 0xca,0xb2,0xf0,0xe1,0xa8,0xd3,0x1f,0x29,0x59,0xfa,0x3f,0xe0,0x48,0x62,0xce,0x88,
- 0x6f,0x90,0x69,0xe3,0x57,0x70,0xa5,0xd1,0x47,0xc5,0x3f,0xb0,0x8d,0xe7,0xf3,0x17,
- 0xc8,0x7f,0x19,0xea,0xb7,0xd9,0x6e,0x2b,0x34,0xea,0xad,0xc0,0xf8,0x0f,0xef,0x86,
- 0xc4,0x84,0x23,0x34,0x1b,0x9f,0x67,0xf8,0x3f,0x06,0x5b,0x0f,0x6f,0x68,0x4d,0x86,
- 0xbc,0x87,0xd9,0x93,0xdb,0x75,0xff,0x9b,0x25,0x18,0x06,0xec,0xb5,0x0f,0x3a,0x71,
- 0xe2,0x3f,0xf6,0x7a,0x30,0x98,0x84,0x54,0x4e,0xf9,0x2a,0x8f,0x57,0x05,0x3d,0x99,
- 0x56,0x76,0xb0,0x8d,0xc9,0x46,0xe1,0x42,0xf1,0x9f,0x49,0xf5,0x36,0xb2,0x86,0xf2,
- 0x43,0xe1,0xc3,0xf0,0x7d,0x66,0x46,0x3c,0x5f,0x27,0x61,0xe3,0xa1,0x44,0x0e,0xff,
- 0xc7,0x85,0x7f,0xf0,0xfe,0x29,0x08,0x6a,0x62,0xb0,0xf6,0x05,0xb6,0xd5,0xf3,0x69,
- 0x7d,0x25,0xf4,0x5f,0x61,0xfe,0x8b,0x8a,0x13,0xff,0x99,0xe5,0xc6,0x3f,0xa5,0xcf,
- 0xb2,0x97,0x82,0x29,0xe1,0x27,0x6c,0x76,0x7f,0x34,0xfb,0x95,0x1d,0x84,0xdf,0x4b,
- 0x9f,0x90,0xff,0x22,0x6f,0xd0,0xa6,0x74,0x70,0xb0,0xa6,0x04,0xd1,0xa0,0x11,0x4c,
- 0x89,0x1d,0xf0,0xb2,0xd9,0xd6,0x63,0x2a,0xfe,0x4f,0x65,0x3f,0xf0,0xf3,0x16,0xb1,
- 0xbb,0xc8,0x6a,0x61,0x99,0x21,0x4f,0xf8,0x2b,0x3d,0xab,0xa1,0x3a,0x27,0xfe,0xe3,
- 0xd8,0x13,0x58,0x43,0x62,0x78,0x08,0xda,0x5c,0x32,0x03,0xba,0xe8,0x3f,0xa7,0xe5,
- 0x49,0xf2,0x05,0xec,0x90,0x70,0xc1,0xfe,0x00,0xeb,0xa1,0x5b,0xd7,0xc6,0x02,0xea,
- 0x65,0x5e,0xa9,0x2b,0x3a,0xd3,0x90,0x77,0x33,0x47,0xd0,0x6d,0x64,0xef,0x67,0x5d,
- 0xfc,0x9f,0xe9,0x27,0xe1,0x10,0xdd,0x95,0xf0,0x7e,0x20,0x06,0xe0,0x25,0x7d,0x0e,
- 0xf5,0xa6,0xc5,0xaf,0x63,0x23,0x8e,0x0b,0xf6,0x07,0xa0,0xd1,0xf1,0xca,0x30,0xf1,
- 0xd1,0x17,0xd2,0x65,0x93,0x9f,0x9b,0x87,0xfb,0xf1,0x34,0x9d,0x0c,0x5d,0x38,0xfe,
- 0xf3,0x98,0x1d,0xed,0x79,0x87,0xb3,0x7d,0xbc,0x9b,0x99,0x5b,0x1c,0xb2,0xfb,0x3f,
- 0xe7,0xc7,0x7f,0xe0,0xcb,0xb8,0x5a,0x18,0x08,0xc1,0x6e,0xd8,0x1a,0x59,0x1a,0xd8,
- 0x4c,0x6a,0xe1,0xe7,0xd4,0x9f,0x15,0x7f,0x70,0xe7,0xbf,0xf8,0xea,0x6a,0x55,0x12,
- 0xb1,0xb1,0x1e,0xd3,0xda,0x40,0x2d,0xf4,0xaa,0xfe,0x9c,0xf8,0x8f,0xbd,0x1e,0x90,
- 0xff,0xd3,0x95,0xc9,0xfe,0x24,0x19,0xfe,0xf1,0xd7,0xc2,0x03,0x90,0xcc,0x8a,0xff,
- 0x18,0xee,0xfc,0x17,0x19,0xe1,0xec,0x1a,0x3e,0xbb,0x10,0x30,0x7c,0xa8,0xd9,0x6d,
- 0x79,0x9c,0xf9,0xbe,0xe5,0xca,0x7f,0x7d,0x4c,0xf0,0x10,0xb4,0x0d,0x87,0x31,0x7b,
- 0xa5,0x87,0xb1,0x51,0xd2,0xc7,0x28,0x5c,0x38,0xff,0xa5,0xed,0x97,0x9b,0x5a,0x4b,
- 0x36,0x8a,0xb3,0xe1,0xac,0xbc,0xab,0xdd,0xfb,0x33,0x66,0x7f,0x5e,0xd5,0xb2,0xc7,
- 0xbb,0xf3,0x5f,0x47,0x49,0x5c,0xf7,0x43,0xdf,0x30,0xa7,0x3d,0x6b,0xf0,0xed,0x35,
- 0xa4,0x1a,0xd6,0x2d,0x70,0xe2,0x3f,0xf3,0x98,0x50,0xe6,0xce,0x7f,0x3d,0x84,0xe8,
- 0x25,0xaa,0xdc,0x89,0xb4,0x67,0xaa,0x75,0x14,0x55,0x91,0x02,0x79,0x4b,0x4e,0xbc,
- 0x2b,0x3b,0xff,0xf5,0x6d,0xa3,0x46,0x57,0x8e,0xf0,0x78,0x9a,0xa6,0x17,0x25,0x3c,
- 0xb5,0xf0,0xb8,0xe6,0xc4,0x7f,0xea,0x72,0xfb,0x03,0xfc,0x96,0xc1,0xda,0x81,0x88,
- 0x6f,0x93,0xb2,0x1c,0x4e,0xd2,0x26,0xbd,0x38,0x51,0x5e,0x4b,0xde,0xfd,0x84,0xfe,
- 0x00,0x3f,0x80,0x0f,0x49,0xb8,0xc3,0xa7,0x32,0xfd,0x7c,0xc8,0xd0,0xef,0x86,0x32,
- 0x71,0x58,0xff,0xf9,0x27,0xf4,0x07,0xa0,0x3d,0x9c,0xff,0x6c,0x88,0x9a,0xce,0xd1,
- 0x4e,0x1c,0xf5,0x7f,0xe1,0xf8,0xcf,0x4d,0x01,0x8c,0xc6,0xd3,0x78,0x92,0x6d,0xc3,
- 0x9f,0x83,0x9a,0x84,0x27,0xbd,0x8e,0x5d,0x89,0x67,0xc5,0x7f,0xb2,0xf2,0x5f,0x9f,
- 0xc5,0x4d,0x68,0x5a,0x0e,0x90,0x42,0xd8,0xd5,0x9f,0x3c,0x12,0x9f,0x5b,0xe6,0x05,
- 0x11,0xb4,0xa1,0xec,0xf8,0x8f,0xe3,0xef,0xd4,0xc5,0x08,0x03,0x26,0xe4,0xe5,0xcc,
- 0xfb,0x63,0x22,0x7b,0x21,0xa6,0x2d,0xba,0xe8,0x96,0xac,0xf8,0xcf,0xb8,0x33,0x3e,
- 0x1e,0xff,0x3c,0x79,0x99,0xce,0x4f,0x06,0xe7,0x2a,0x66,0x20,0xc8,0xbb,0xaa,0x7c,
- 0x06,0xbb,0x32,0x2b,0x2b,0xfe,0xf3,0x9e,0x73,0x3e,0xac,0x3c,0x9d,0xe3,0x43,0xea,
- 0xee,0x2e,0x92,0x9f,0x4f,0x77,0xf5,0x87,0xac,0x78,0x06,0xce,0xc7,0x9a,0xa3,0xbc,
- 0x6c,0xe7,0x8f,0xf4,0xab,0x2e,0xd8,0xe3,0xf2,0x5f,0x86,0x66,0xeb,0xff,0x71,0xb5,
- 0x1f,0x9e,0x24,0xd5,0xfa,0x08,0x6f,0xcb,0xa6,0x6e,0x89,0x17,0x7f,0x8d,0x3d,0xff,
- 0x93,0x95,0xd9,0xf5,0xfe,0x6e,0xfc,0x93,0x80,0xa7,0x75,0x66,0x9f,0xab,0x62,0x55,
- 0xf0,0x3c,0x6c,0xa1,0xee,0x83,0x51,0x1c,0x7b,0xe5,0xee,0x0f,0x49,0x71,0x99,0xa9,
- 0x72,0x25,0x8f,0xff,0xf8,0x29,0xf3,0xfe,0x5e,0x4e,0xa3,0x72,0xc7,0x9f,0xdd,0xf9,
- 0xaf,0xbb,0xe1,0xb8,0xd6,0x94,0xf6,0x6e,0x57,0x82,0xbc,0xd1,0xae,0x8c,0xfe,0xe5,
- 0x64,0x8e,0x7f,0x79,0x4f,0x72,0xf2,0x8f,0xc2,0x8f,0xb5,0x49,0xb6,0xdf,0xdc,0x90,
- 0x6c,0xc3,0xc4,0x07,0x7b,0xbf,0xb6,0x61,0x5a,0xb0,0x38,0xa7,0x5e,0xde,0x59,0x3f,
- 0xd5,0xea,0x6e,0x66,0xc4,0x9a,0x63,0xde,0x4e,0x9e,0xff,0xda,0x85,0xf1,0xf9,0x3b,
- 0xb1,0x91,0x54,0x96,0x3d,0x37,0x5c,0xfc,0x9f,0xe5,0xea,0x20,0x3e,0x36,0x73,0x5b,
- 0xfa,0x5e,0x66,0x76,0xe2,0xdb,0x3d,0x68,0x61,0xb2,0xfc,0x6f,0xf6,0xf9,0xb0,0xea,
- 0x33,0xec,0xa5,0x88,0x53,0xac,0xf7,0x89,0xfb,0x87,0xe5,0xfe,0xb2,0x20,0xf4,0x09,
- 0xd9,0xf1,0x9f,0xa8,0xab,0x3f,0x80,0xcc,0xd0,0x42,0x40,0x97,0xc1,0xe3,0x95,0x66,
- 0x99,0xe5,0x7c,0x5e,0xbd,0x0b,0xb2,0xed,0xb3,0x3b,0xff,0x85,0xf9,0x77,0xb6,0xdb,
- 0xc2,0xf3,0xa7,0xbe,0x0e,0x21,0xea,0xa5,0xe5,0x41,0xbb,0xed,0x61,0xa6,0xbe,0x29,
- 0x83,0x7f,0xbe,0x83,0xfc,0xa6,0xa7,0x61,0xc3,0xa8,0x99,0xed,0x02,0xdf,0xa8,0x90,
- 0xdf,0xdf,0x26,0xf7,0x7c,0x58,0x0e,0xcb,0xbf,0x60,0x37,0xda,0x32,0xaf,0x5c,0x79,
- 0x81,0xfa,0x2f,0x27,0xc9,0xf5,0x9e,0xab,0x51,0x36,0x13,0x8a,0x5c,0xf9,0xaf,0xe8,
- 0x14,0xfd,0xb1,0x49,0x07,0x6f,0x0b,0x89,0x6d,0x37,0x2a,0x76,0xb1,0xf7,0x39,0x7b,
- 0xbe,0x99,0xf8,0x8f,0xc3,0x7f,0x1e,0x37,0x89,0xc4,0xa8,0xc6,0xdc,0xfa,0xaf,0xce,
- 0xfc,0xf3,0x61,0x53,0xe2,0x0a,0xde,0x16,0xd2,0xe9,0xa7,0xa1,0xb8,0xf4,0x33,0x3a,
- 0x55,0x7f,0xec,0xc9,0x6c,0xb5,0x14,0xbb,0xf3,0x5f,0x53,0xc4,0x7f,0x98,0x37,0xcc,
- 0x69,0xcb,0xd0,0x76,0x81,0xfc,0x97,0xfd,0xfc,0x24,0xb7,0xad,0xc4,0x14,0xf8,0xc7,
- 0x39,0x1f,0x96,0x19,0x19,0x3d,0x9f,0xaf,0xf2,0x20,0x03,0x42,0x8b,0x42,0x30,0x65,
- 0xfc,0xe7,0x94,0xee,0xb4,0xc5,0xbe,0xae,0x27,0x0b,0xff,0xf8,0x73,0xfa,0x63,0x9b,
- 0xf1,0x9f,0x11,0x78,0x81,0x0b,0x6d,0x0c,0xf6,0xd0,0x2a,0x2e,0xe8,0xff,0x9a,0x5f,
- 0xff,0x95,0xa5,0x1f,0xe4,0x3f,0x0b,0x67,0x32,0xfc,0xe7,0x6f,0x4d,0x9d,0xff,0xb2,
- 0x40,0x4e,0x6e,0xdb,0x0a,0x4b,0x98,0xab,0xd4,0x55,0xe4,0xc6,0x7f,0xf8,0x69,0x44,
- 0xff,0x96,0xcb,0xff,0x51,0xf1,0xe8,0x46,0x26,0xe4,0x9f,0x8f,0xc6,0x66,0xf7,0x06,
- 0xac,0x5d,0x8d,0xc4,0xef,0xc2,0x7c,0xfe,0xcf,0x14,0xe7,0xa3,0xe1,0xe9,0x72,0x0f,
- 0xba,0xd3,0xac,0x6d,0x2e,0xc5,0xe6,0x9f,0x8f,0xe6,0xc3,0x43,0xf1,0x0e,0xb8,0xf9,
- 0x3f,0xa2,0x0b,0xff,0xcc,0x73,0xd6,0x43,0x5e,0xfc,0xc7,0x47,0xa7,0xb9,0x4e,0x4c,
- 0x9b,0x32,0xff,0x65,0x3b,0x7d,0x6a,0x6f,0xfc,0x39,0x31,0xb8,0xc4,0x8d,0x7f,0x9c,
- 0xf1,0x39,0xfd,0xb1,0x6d,0x41,0xb8,0x50,0x7f,0xa4,0xac,0xfe,0xd8,0x39,0xff,0xb0,
- 0x15,0x85,0xbb,0x73,0xfa,0x43,0xba,0xfa,0x63,0x0b,0x39,0x6d,0x91,0x5c,0xf9,0x2f,
- 0xc7,0xfe,0xe4,0xf4,0xc7,0x76,0x4d,0xfc,0x4a,0xd7,0x95,0x29,0xce,0x87,0x4d,0x70,
- 0xda,0x73,0xb6,0x5b,0x9f,0x0a,0xff,0x14,0x5f,0x60,0xfc,0x82,0x0d,0x89,0x69,0xe6,
- 0x57,0xff,0x34,0xea,0xc6,0x3f,0xe0,0xea,0x8f,0x9d,0x25,0x5c,0x4e,0x2f,0x49,0x43,
- 0x3f,0x13,0xfe,0x22,0x37,0xff,0x75,0xc1,0x69,0xba,0xe6,0x9b,0x1b,0xff,0xb1,0x4f,
- 0x03,0x59,0xe0,0xd2,0x67,0xd9,0x18,0x3c,0xcc,0x7e,0x88,0x45,0xf9,0xfc,0x1f,0x7c,
- 0xec,0xdb,0xc7,0xf8,0x31,0x70,0x26,0xff,0xa7,0xd0,0xe2,0xab,0x5b,0x57,0x2e,0x14,
- 0xff,0xc9,0x17,0xa4,0x29,0xf3,0x5f,0x61,0xbb,0x1b,0x67,0x0e,0xff,0x47,0x35,0x19,
- 0xf8,0x6d,0x53,0xf7,0xc7,0xce,0x15,0xc4,0xed,0xa6,0x90,0xce,0xed,0x8f,0x6d,0xbe,
- 0x14,0xc3,0xba,0xab,0x2c,0xa5,0xd6,0xd5,0x1f,0x49,0x9b,0xba,0x3f,0xf6,0x61,0xe7,
- 0xb5,0x15,0xb2,0xf1,0x40,0x34,0xef,0x7c,0x58,0x04,0x39,0xb7,0xbf,0xa5,0xfe,0xd6,
- 0xa6,0x3d,0xff,0x11,0xcb,0xbe,0x1c,0xfc,0xb3,0x42,0xcc,0x3b,0x1f,0xd6,0x4c,0xe2,
- 0xe4,0xc2,0x1e,0xeb,0xab,0x64,0xfe,0xf9,0x20,0xe9,0x2b,0x4f,0x8a,0x3f,0x6b,0x7d,
- 0x8d,0x9f,0x86,0x96,0x87,0x7f,0xc6,0x15,0xc8,0x8a,0xff,0x5c,0x67,0x82,0x9c,0xc3,
- 0xfa,0x5a,0xb5,0x31,0xed,0x99,0x20,0x55,0xfa,0x2e,0xab,0xfe,0x0b,0x9f,0x7f,0x98,
- 0x3d,0x7f,0x5d,0x1e,0xff,0xd9,0xd3,0x59,0x76,0x02,0x8f,0x85,0x1d,0x91,0x27,0xf2,
- 0xf0,0x4f,0x94,0x40,0x6e,0xfc,0x07,0x8d,0xf6,0x30,0xe7,0x1f,0x7a,0x42,0x56,0xbd,
- 0xb3,0xe8,0xd2,0xa7,0x9c,0x77,0x3e,0xec,0xb4,0x54,0xcd,0x18,0xb7,0x9f,0x1c,0xff,
- 0x64,0xfb,0xaf,0xa4,0x58,0x97,0x1b,0xff,0x71,0xeb,0x47,0x39,0x66,0x31,0xc6,0x33,
- 0xe3,0x2f,0xd8,0x1f,0x7b,0x4a,0x21,0x3d,0xc5,0xf9,0xb0,0xcc,0x49,0x8d,0x39,0x6e,
- 0x4b,0xda,0x2b,0xb8,0xfd,0x57,0x32,0xef,0x7c,0x58,0x67,0x7c,0x5d,0x56,0x1b,0xc3,
- 0xcc,0xf8,0xdc,0xf8,0x0f,0xa2,0xeb,0x61,0x17,0x3f,0x4a,0x77,0x3b,0x3e,0x2d,0x87,
- 0xff,0xe3,0x9a,0xaf,0x19,0xf6,0x91,0xb1,0x1f,0xd4,0x95,0xae,0xf9,0xe6,0x9d,0x0f,
- 0x8b,0xb3,0x3b,0x01,0xfc,0x7c,0x4f,0x3e,0x4d,0xcd,0x3d,0xdf,0xa8,0x3b,0xff,0x25,
- 0x58,0x6c,0xe7,0x49,0xf1,0x38,0x9c,0x31,0x9a,0xd3,0xf5,0xb8,0x6c,0x0e,0xd2,0x66,
- 0x1d,0x23,0x66,0x88,0xa0,0xf2,0xf1,0xcf,0xef,0x18,0xc8,0x11,0x07,0x5b,0x19,0xda,
- 0x11,0xfc,0x26,0xff,0xf9,0x09,0xe2,0xa7,0x81,0x41,0xac,0x77,0xcb,0xe3,0xff,0x64,
- 0xf0,0xcf,0xad,0xbc,0xfe,0x4b,0x0e,0x91,0x63,0x6a,0x0c,0xb4,0x65,0xbc,0x71,0x5f,
- 0x6a,0x2a,0xfc,0xf3,0x43,0x47,0x9f,0x3d,0x0c,0x4f,0xa2,0x3e,0x7f,0xe8,0xf1,0x27,
- 0xb9,0xc0,0xee,0x9f,0xcd,0xff,0x31,0xf1,0x0f,0xef,0x86,0x7d,0x37,0x9c,0xd6,0x06,
- 0xd2,0xbc,0x7f,0xe3,0x7e,0xd5,0x12,0x26,0x39,0x90,0x26,0x53,0xe2,0x9f,0xf3,0xd2,
- 0x19,0xc1,0xe2,0x83,0x9d,0xa5,0x37,0x9a,0x44,0xe8,0x93,0x9f,0x80,0x7f,0x02,0xba,
- 0x73,0xec,0xd7,0xa4,0x19,0xe8,0x30,0x85,0x0b,0xe0,0x1f,0x4f,0x03,0xec,0x1d,0x9d,
- 0x6d,0xf6,0x4b,0xdf,0x43,0xac,0xe7,0xdf,0xa3,0xfa,0x2f,0x88,0x7f,0x6e,0x65,0xe8,
- 0x91,0xc3,0x60,0x36,0xcd,0x68,0x52,0x63,0xfa,0x39,0xa4,0xa7,0x46,0xb5,0x3c,0xfe,
- 0x0f,0x77,0xfa,0x97,0xaf,0x2a,0xfb,0x0b,0xe9,0xf9,0xae,0xab,0xd2,0x45,0xab,0xe0,
- 0x2d,0x78,0x2a,0x5e,0x9d,0xc2,0x0e,0x8a,0xea,0x6e,0x33,0x30,0x32,0x05,0xfe,0x99,
- 0x25,0x2e,0x86,0xc9,0x00,0x76,0xc3,0x9e,0x76,0x10,0x4e,0xab,0x4d,0x1e,0x2f,0x02,
- 0xa1,0x09,0x8c,0x08,0x4d,0x89,0x7f,0x3a,0xc5,0x67,0xe1,0xb4,0xc0,0xf3,0x5f,0xc7,
- 0xac,0xb6,0xea,0x99,0x7a,0x81,0x29,0xf1,0x0f,0xbe,0xbf,0x4d,0xa6,0xda,0x4f,0x9a,
- 0x19,0xc9,0x63,0x70,0x2a,0x97,0xff,0xec,0xc2,0x3f,0x98,0xed,0xda,0xc9,0x1b,0xcd,
- 0x59,0x19,0xb1,0x0b,0xf1,0x7f,0x2c,0x90,0xf3,0x01,0xac,0xa5,0x57,0xa7,0x65,0x13,
- 0xf6,0x04,0x35,0x2e,0x3c,0x35,0x25,0xff,0xc7,0xac,0xa6,0x34,0x6e,0xa3,0x51,0x4d,
- 0x8f,0xe3,0x32,0xe3,0xc7,0xd6,0xf0,0xf7,0x2b,0x31,0x05,0xff,0xc7,0x02,0x39,0x07,
- 0xf0,0x58,0x90,0xf8,0x4a,0x84,0x3d,0xe7,0x3a,0x5a,0x92,0x9c,0x11,0x7d,0x2e,0x2f,
- 0xfe,0x93,0xc1,0x3f,0x6f,0xf3,0x6a,0x77,0x93,0x08,0x2d,0x87,0x35,0x7e,0x5e,0xe7,
- 0xa4,0x71,0x61,0xfc,0x33,0xa6,0xef,0x17,0x9c,0xb0,0x4f,0xd3,0x72,0xef,0xd4,0xf1,
- 0x9f,0x0c,0xfe,0x79,0x07,0x7a,0xe9,0x56,0x0b,0xcf,0x50,0x0c,0xec,0x90,0xdf,0x6a,
- 0x17,0xc0,0x3f,0x0d,0xd8,0x1f,0xf2,0x04,0x59,0xad,0xd9,0x61,0x1f,0xf6,0x0f,0x65,
- 0xde,0x58,0x52,0x6d,0xb8,0x20,0xfe,0xf9,0x19,0xac,0x36,0x8f,0x45,0xe3,0x85,0x60,
- 0x9d,0x01,0x57,0xa3,0xc8,0x5c,0xfc,0x63,0x75,0x23,0x7c,0x29,0x13,0xf6,0x69,0x32,
- 0x3b,0x16,0x9e,0xfa,0x04,0xfc,0x83,0xf6,0xea,0x46,0xab,0x8c,0xab,0xb0,0x25,0x62,
- 0x0a,0xb9,0xfd,0xb1,0x2b,0x33,0xf5,0x5f,0x27,0xe0,0x57,0x6a,0xb3,0x5d,0xf6,0xd5,
- 0xbc,0x00,0x0f,0x0a,0x81,0xb3,0x01,0x1c,0x3f,0x6d,0x4d,0xfe,0xf9,0xb0,0x1c,0xf6,
- 0x68,0x7e,0xc1,0x14,0xe4,0xad,0x04,0x3b,0x46,0x26,0xcd,0xaf,0xa6,0xdd,0x3f,0x35,
- 0xfe,0x61,0xf6,0x07,0xcf,0x87,0x1d,0x86,0x3d,0x9a,0xd6,0x8e,0x0c,0x70,0x6a,0x7d,
- 0x15,0x9b,0x02,0xff,0x94,0x8d,0xb5,0xef,0x94,0xfc,0xe6,0x79,0xbb,0x7b,0x79,0x60,
- 0x8d,0x2b,0x16,0xf1,0x4f,0xd9,0x9a,0xa9,0xce,0x07,0xf9,0x2d,0xfd,0x39,0xc5,0x6a,
- 0x3e,0x6c,0x6b,0x20,0x37,0x7d,0xd3,0xec,0x18,0x49,0xf9,0x57,0xdb,0xa7,0xc4,0x3f,
- 0xda,0x49,0x7f,0xb8,0xc3,0x5c,0x0f,0xfb,0xe6,0xdf,0x65,0x5e,0x91,0x3f,0x01,0xff,
- 0x48,0x93,0xb1,0x39,0xd9,0xfa,0xd7,0x27,0x55,0xfc,0xaa,0x7c,0x0a,0xfc,0x93,0xbe,
- 0x64,0x92,0x1f,0x8b,0x56,0xc2,0x69,0xcf,0x91,0xbf,0xdf,0x2a,0x27,0xc9,0x29,0x78,
- 0xce,0x04,0x42,0xeb,0xf2,0xf1,0x8f,0xe6,0x3f,0xc0,0x61,0x8f,0xb9,0x5f,0x68,0xd5,
- 0x54,0xd9,0x55,0xff,0x35,0x05,0xfe,0x89,0xe2,0x69,0xce,0x42,0xb5,0xb1,0xd0,0xc4,
- 0x3f,0x5b,0x00,0xdf,0xdf,0xd2,0xa7,0x73,0xf9,0xcf,0x98,0xff,0x7a,0x9a,0x83,0x1c,
- 0xf2,0x96,0x74,0xce,0x86,0x3d,0x67,0x69,0x4d,0x32,0xb8,0x4a,0x7c,0x03,0x3e,0xe6,
- 0xd0,0x68,0x9a,0x0b,0xff,0x14,0x3b,0x20,0xc7,0xa9,0xee,0x61,0x16,0x46,0xe2,0x11,
- 0xa1,0x71,0x8b,0xff,0x5c,0x93,0x77,0x3e,0x2c,0x82,0x9c,0x30,0xbb,0x2d,0x96,0xed,
- 0x98,0xf5,0x3b,0xcb,0x98,0xff,0x3a,0x85,0xd4,0x68,0xe4,0xaf,0x1a,0xd9,0xf9,0x2f,
- 0x2c,0xb2,0x88,0x92,0x0a,0xd8,0x2d,0xf0,0xb0,0xf3,0x5b,0xf0,0x3c,0xcc,0xc2,0xe7,
- 0x1f,0xd5,0x9f,0xaa,0xc4,0x42,0xb6,0xfc,0xf3,0x61,0x71,0xbe,0x55,0xda,0x93,0x3c,
- 0x4c,0xad,0xbe,0x09,0x4f,0x56,0x56,0xef,0xc3,0xf1,0xf0,0xb4,0x7e,0x55,0x6e,0xfc,
- 0xc7,0x76,0xe2,0x97,0x94,0x48,0x29,0x24,0x02,0x99,0x6e,0xdd,0x8f,0xfa,0x4c,0x73,
- 0x3e,0xf9,0xa2,0x50,0xfe,0xf9,0xb0,0x38,0xdf,0x46,0xfd,0x74,0xb2,0xe9,0x6d,0x9c,
- 0xaf,0x70,0x92,0x36,0x51,0xee,0x5f,0x4e,0x1a,0x73,0xcc,0xf8,0x8f,0xfd,0x3c,0x0e,
- 0xfe,0x49,0xb2,0x65,0x33,0x09,0xcf,0x58,0xfe,0xe8,0xae,0x70,0xc2,0x62,0x04,0xcd,
- 0xcb,0xe6,0x3f,0xdb,0xf8,0xa7,0x24,0xcd,0xcf,0x83,0xb0,0x60,0xc0,0x59,0x08,0xef,
- 0xe3,0x15,0xf1,0x23,0x34,0x87,0xff,0xec,0xe0,0x9f,0x64,0xd9,0xef,0x03,0xcf,0x24,
- 0xec,0x32,0xf6,0x7d,0x0d,0x13,0xcc,0x7f,0xbd,0x07,0x47,0x78,0x21,0x73,0xeb,0x14,
- 0xf8,0x27,0xc9,0xec,0xd5,0x1e,0x7b,0x9b,0xcf,0x5e,0x93,0xb7,0x8b,0x52,0xe4,0x6d,
- 0xe8,0xd5,0xee,0x9e,0xaa,0x3f,0x36,0x07,0x39,0xc3,0x90,0xa2,0x99,0xb6,0x00,0x10,
- 0x08,0x11,0x43,0xdd,0x38,0x15,0xff,0x99,0x17,0xb5,0xe1,0x7c,0x3f,0xb4,0x60,0x21,
- 0x6e,0x24,0xd1,0xff,0xe2,0xf9,0xb0,0xb9,0xf1,0x9f,0x2b,0x1c,0x90,0x73,0x42,0x32,
- 0x69,0x3f,0x6d,0xef,0x23,0x7f,0x55,0xe7,0xe7,0xc3,0x9e,0xbb,0x00,0xff,0xc7,0xf0,
- 0x8e,0x8a,0xdf,0xe4,0x0b,0x29,0xc8,0x8f,0x85,0x95,0xd9,0xb2,0x39,0x2e,0xce,0xa7,
- 0xe7,0xa1,0x79,0x9f,0xef,0x88,0xeb,0x7c,0x58,0x03,0xcc,0x20,0x8f,0xdc,0xef,0xae,
- 0xff,0x8a,0x1b,0x98,0xff,0xf2,0xd7,0xc1,0x33,0x66,0x22,0x2c,0x95,0xa9,0xff,0x9a,
- 0xce,0xd7,0x83,0x2e,0x87,0xca,0xcc,0x17,0x8d,0x87,0x01,0x1f,0xc5,0x78,0x97,0x44,
- 0xbc,0x0c,0x78,0x73,0xff,0xde,0x94,0x17,0xff,0x09,0x3c,0x6b,0xf1,0xc9,0x8b,0xcc,
- 0x46,0xd3,0xfe,0x61,0x25,0x09,0xd7,0x98,0x07,0x85,0x0c,0xb0,0xfb,0x47,0x9d,0xf1,
- 0x66,0xbf,0x74,0xb9,0x5f,0xfc,0x8a,0x86,0x8a,0x2a,0xc6,0x7c,0xcd,0xaf,0x11,0x96,
- 0x0c,0x28,0x57,0x61,0x45,0x2a,0x32,0xe8,0x32,0xe7,0xa3,0x25,0x4d,0xfc,0x43,0x7d,
- 0xaa,0xf8,0xa3,0x0c,0x1f,0x7e,0x12,0xf3,0x5f,0xa9,0xb6,0xe3,0xfa,0x1f,0xd0,0xdf,
- 0x4d,0xb2,0x85,0xe4,0xdc,0x5f,0xb5,0xf3,0xb3,0x98,0xff,0xca,0xec,0x47,0xd8,0xfd,
- 0x41,0xbc,0xca,0xec,0x88,0xbb,0xd3,0x95,0xff,0x32,0xf1,0xcf,0x3c,0x83,0x59,0xe3,
- 0xbb,0x39,0x5b,0x09,0xd7,0x83,0x8a,0xf6,0x93,0xad,0x10,0x8d,0x97,0x0a,0xca,0xd7,
- 0x8b,0x03,0x19,0xfc,0x23,0x98,0x6a,0x61,0xd6,0xf8,0x16,0x77,0xfc,0x87,0xab,0xc5,
- 0xcc,0x0f,0xca,0xb3,0x5d,0xf8,0x27,0xdd,0x85,0xf6,0xe4,0x9a,0xb4,0x1c,0xe1,0x69,
- 0x20,0x2b,0x0c,0x62,0xc1,0x9e,0xef,0x0b,0x88,0x07,0x02,0xab,0xc8,0xb3,0x19,0xfc,
- 0x03,0x1c,0xff,0xe8,0xde,0x59,0xa2,0x97,0xbc,0x90,0x29,0x7b,0xd7,0x0c,0x9f,0xaa,
- 0x98,0x8d,0x80,0xbc,0x59,0xf8,0x67,0xfa,0xb3,0xbc,0xed,0x4f,0xe3,0xf1,0x0c,0x3b,
- 0x0e,0x57,0x14,0xcf,0x0f,0x7e,0x93,0xc7,0x7f,0x36,0x4c,0x88,0x09,0xc7,0xfe,0x3c,
- 0x61,0xe2,0x1f,0xca,0xbc,0x55,0xd4,0xd4,0xcf,0xa0,0xd9,0x28,0x29,0xed,0x1d,0x14,
- 0x4b,0x60,0x3f,0x6d,0xd2,0xbc,0x59,0xf8,0xe7,0x01,0x6e,0x4f,0x28,0x7b,0x7e,0xd5,
- 0xa4,0x3d,0x4f,0xf0,0x32,0x0a,0x5e,0x11,0x56,0x05,0x6b,0x30,0x35,0xe6,0xc6,0x3f,
- 0x94,0xe3,0x9f,0x20,0xe6,0xbf,0x6e,0x36,0xeb,0xbf,0x26,0x09,0x67,0x44,0xa7,0xe5,
- 0x4a,0x9e,0x11,0xd3,0x3a,0xe5,0xec,0xfe,0x3f,0x7c,0xbd,0x1d,0x09,0xcc,0x27,0x85,
- 0xad,0x56,0x1b,0x76,0xde,0x58,0x29,0x1d,0x08,0x79,0x4a,0x48,0x37,0x4d,0x4e,0x04,
- 0xf2,0xf1,0x4f,0x4b,0xc2,0x3b,0x5e,0xbe,0xca,0xaa,0xff,0x22,0xdb,0xd9,0x6b,0xd2,
- 0x94,0xf4,0xa6,0xc5,0x79,0xf4,0x50,0xb2,0x99,0x7a,0xb7,0xe6,0xe1,0x9f,0xf9,0xe0,
- 0xeb,0x72,0xef,0xc7,0x27,0x20,0x2c,0xd9,0x1b,0x73,0xd9,0x47,0xdb,0xf2,0xf1,0x8f,
- 0x57,0xed,0xce,0x3a,0x16,0x2d,0x3b,0xff,0x15,0xcb,0xc5,0x3f,0x11,0x99,0x9f,0xf7,
- 0x61,0xb2,0x9d,0xb7,0x99,0x65,0xec,0x9b,0xfc,0x58,0xcf,0xde,0x10,0x99,0x0a,0xff,
- 0xb4,0x06,0x12,0x64,0x5b,0x75,0xe6,0x18,0x35,0xac,0xc8,0x48,0xc4,0x50,0xc0,0xd4,
- 0x18,0x59,0xe3,0xea,0xff,0x63,0xe2,0x9f,0xdc,0x7a,0x28,0x1b,0x08,0x81,0x77,0x2a,
- 0xfc,0x83,0xe7,0xc3,0xd6,0x24,0x79,0x22,0xcc,0x5d,0xf6,0x6e,0x76,0x00,0x60,0xc2,
- 0xfd,0x8e,0xfd,0x39,0x62,0x9e,0x0f,0x1b,0x69,0x3c,0x2c,0x3e,0xe9,0x2a,0xe3,0xd2,
- 0xff,0x45,0xb7,0x12,0x61,0x0c,0x08,0x8d,0xe6,0xe3,0x9f,0x56,0x2f,0xf7,0xfe,0xee,
- 0xfa,0xaf,0x25,0x89,0x9a,0x5a,0xba,0x3f,0x10,0xee,0x60,0x5f,0x65,0xf0,0xcf,0x2a,
- 0x0b,0xff,0xb0,0xf7,0x6b,0x96,0x0b,0x08,0xe9,0x4c,0xe8,0x22,0x1a,0x6c,0x07,0x06,
- 0x74,0x8d,0xbc,0xf8,0x4f,0x7d,0x54,0xfe,0x26,0xf9,0x99,0xea,0x00,0xa1,0x27,0x0d,
- 0xb6,0xf0,0x96,0x92,0x0a,0xfd,0x3b,0x94,0x7d,0x15,0x71,0x9f,0x0f,0x62,0xe2,0x9f,
- 0x8e,0xc0,0xeb,0xfe,0xdd,0x99,0xf8,0xcf,0xbf,0x40,0x63,0x87,0x72,0x84,0xcc,0x46,
- 0x41,0x0f,0xbc,0x9e,0x17,0xff,0x99,0x8f,0x24,0xa5,0xdf,0x40,0x26,0xfe,0xc3,0xfb,
- 0x1b,0x28,0xb5,0xf0,0x73,0x3d,0x1c,0xf1,0xf6,0xbb,0xe2,0x3f,0xe3,0x36,0xfe,0x51,
- 0xdd,0x6d,0x8e,0x4e,0x9a,0xf9,0xbe,0x61,0xb3,0x34,0xbe,0xbf,0xfb,0x54,0x1e,0xfe,
- 0x61,0x68,0x67,0x02,0x4c,0xfd,0x63,0x7f,0x72,0x72,0x2f,0xaa,0xdd,0x0f,0x47,0x30,
- 0x23,0x39,0x34,0xc5,0xf9,0x68,0xbc,0x3f,0xb6,0xab,0x2d,0xb6,0x1f,0x69,0xeb,0x98,
- 0x1a,0xf3,0x53,0x79,0x5b,0x3e,0xfe,0x49,0xcb,0x21,0x86,0xfe,0x33,0xf6,0x07,0x37,
- 0x62,0x73,0xfd,0x5e,0x78,0x90,0x6a,0x69,0x39,0x58,0x98,0x87,0x7f,0x46,0xd9,0x4b,
- 0xfa,0x0b,0x57,0xd9,0x82,0x51,0x6d,0xf4,0x21,0x43,0x78,0xad,0x51,0x3d,0x2a,0x47,
- 0x0b,0xb7,0xe7,0xf0,0x7f,0xe6,0x23,0xda,0x39,0x44,0x5e,0xb6,0xeb,0xbf,0x8e,0xd3,
- 0xae,0xb4,0x2f,0xa0,0x94,0xc0,0xeb,0x34,0x95,0x0c,0x66,0xf5,0xff,0xb1,0xf8,0x3f,
- 0xd9,0x61,0xe4,0x53,0xcc,0x6c,0x72,0x44,0x64,0x6d,0x55,0x5c,0xf5,0x5f,0xab,0xad,
- 0xf3,0x61,0x8f,0x88,0x7e,0xdd,0x09,0xfb,0xbc,0x4f,0x6f,0x88,0x1e,0x3c,0xc2,0xf0,
- 0xcf,0xab,0xec,0x2b,0xe6,0xbf,0xb2,0xf0,0x8f,0xc4,0xf9,0x3c,0x11,0x52,0x06,0xd6,
- 0xe9,0x66,0x67,0xe0,0xdb,0x50,0xdd,0x1e,0xff,0x9c,0xff,0x88,0xfc,0x1d,0x93,0xe1,
- 0x93,0x8b,0x7f,0x82,0x20,0xdf,0x11,0xbb,0x84,0x3e,0x6d,0x8f,0xdf,0x01,0xd7,0xb4,
- 0xca,0x3a,0xdb,0x66,0x6e,0x82,0x7a,0x49,0x59,0x1a,0xcb,0xc3,0x3f,0x10,0xa8,0x64,
- 0xef,0xd7,0x83,0x76,0xd8,0x87,0xca,0x9a,0x2e,0x03,0xd9,0x0f,0x09,0x3d,0x08,0x4a,
- 0x65,0x3e,0xfe,0x49,0x7b,0x83,0xa2,0x9c,0x49,0x34,0xfc,0x2e,0x3a,0x97,0x32,0xfb,
- 0xc9,0x76,0x94,0x34,0x9c,0xf6,0x6d,0xcf,0xc3,0x3f,0xf3,0xd3,0x3c,0x4c,0x6d,0xd5,
- 0xdb,0xbe,0x6b,0x6a,0x0c,0xc7,0xff,0x1a,0xc7,0x4f,0x11,0xff,0xa1,0xbc,0xed,0xcf,
- 0x6b,0xf6,0xee,0xfe,0x9c,0x79,0x65,0x4c,0x3b,0x24,0x37,0x53,0x9f,0xfb,0x7c,0x58,
- 0x6a,0xe2,0x1f,0x1a,0x48,0x72,0x7e,0x2f,0xc7,0x33,0xef,0x52,0x73,0x45,0xf9,0x87,
- 0xf9,0xfa,0x51,0x34,0x31,0x0a,0x39,0xf8,0x47,0x97,0xb1,0x1f,0x45,0x9f,0x9d,0xb8,
- 0xd9,0x83,0x6f,0x68,0x82,0xe1,0x9f,0xc7,0xcd,0x0e,0x12,0x53,0x9c,0x0f,0x2b,0x13,
- 0x88,0x75,0xdb,0x81,0x7a,0xf6,0x62,0x6a,0x32,0xa6,0xdd,0xb7,0x30,0x43,0x24,0x26,
- 0xa0,0x35,0x17,0xff,0xe0,0xfa,0xaf,0xb5,0xfd,0xef,0x38,0xb7,0x48,0x88,0xff,0xa5,
- 0x71,0xf4,0xef,0x09,0x11,0xb2,0xf1,0x8f,0xe4,0x03,0x9f,0xce,0xac,0x8d,0x93,0xc8,
- 0x38,0x83,0x27,0xc6,0x1a,0xec,0x0d,0x7a,0x93,0x6d,0xe4,0x37,0x8c,0xe6,0xe3,0x9f,
- 0xb4,0x6f,0xbf,0xd8,0x04,0x67,0x8c,0x59,0x51,0x2b,0x6c,0x78,0xa5,0xc1,0xf0,0x21,
- 0xd6,0x0f,0xd6,0x18,0xde,0x29,0xf3,0x5f,0x6c,0xbe,0x81,0x94,0x56,0x17,0xb5,0xf2,
- 0x5f,0x41,0xa3,0x38,0xe4,0x69,0xa8,0xd8,0xdb,0xa3,0x19,0xf2,0x94,0xf1,0x1f,0x52,
- 0x08,0x94,0x6d,0xbb,0x74,0x27,0xcc,0x85,0x15,0xca,0xd2,0x20,0xf0,0x88,0x50,0x5e,
- 0xfe,0x6b,0x48,0xa1,0x85,0x1a,0x06,0xf6,0x3b,0xac,0x78,0x1a,0x07,0x4e,0x2b,0xd5,
- 0x3d,0x18,0x41,0xca,0xaa,0xff,0xb2,0xf3,0x5f,0xfd,0xca,0xcc,0xca,0x49,0xda,0x04,
- 0xce,0x8b,0xe3,0xe5,0x27,0x86,0x2c,0xe3,0x81,0x9a,0xec,0xfa,0x2f,0xae,0x96,0x9f,
- 0x8b,0x7f,0xd0,0xcf,0x24,0x1a,0x35,0x77,0x3c,0xf0,0x59,0xe1,0x02,0xf5,0x5f,0x78,
- 0x7f,0xf1,0x31,0xf4,0xe6,0xe0,0x9c,0x0f,0xe2,0xe5,0x1d,0x81,0x8c,0xf0,0xbe,0x60,
- 0x2a,0xf7,0x7c,0x58,0x7c,0xfe,0x7f,0x24,0xbf,0xd5,0xd9,0xfe,0x1d,0xac,0xfa,0xc1,
- 0xc6,0x09,0x79,0xb2,0x0c,0x3b,0x1a,0x35,0xe2,0xf3,0x1f,0xa7,0xf6,0xcf,0x6b,0xd8,
- 0xfb,0xaf,0x24,0x89,0xcb,0xeb,0xcc,0xf8,0x18,0xd7,0xcf,0x3e,0xd9,0xae,0x07,0x64,
- 0x42,0xd6,0xf9,0xb0,0x70,0x1d,0xc2,0x80,0x15,0xe4,0x0d,0x58,0x93,0xa8,0x49,0x17,
- 0x59,0x69,0xa0,0xb7,0x65,0xec,0x08,0x84,0xf8,0x47,0xce,0xad,0xff,0xe2,0xf1,0x1f,
- 0x4d,0xdc,0x4e,0x5e,0x50,0x43,0x9c,0xf6,0xcc,0xaf,0x04,0x43,0x8a,0x97,0x39,0xee,
- 0xf9,0x43,0xde,0xd0,0xed,0x53,0x9c,0x0f,0x7b,0x94,0x29,0xe1,0xb4,0x1a,0x4e,0x23,
- 0x3e,0x94,0xf8,0x95,0x0f,0x71,0xe3,0x20,0xb4,0xbc,0xb4,0x24,0x2b,0xfe,0x93,0xc9,
- 0x3f,0x06,0xf1,0xb4,0x1a,0xcb,0x70,0x09,0x33,0x0c,0xaf,0x5d,0x9f,0xe8,0xbd,0x40,
- 0xfc,0x87,0xa1,0x1d,0x52,0x4d,0xed,0x30,0xf2,0x88,0xfc,0x77,0x9e,0x2a,0x78,0xca,
- 0x0c,0x04,0x4d,0x19,0xff,0x99,0xc1,0x0f,0x46,0xb1,0xd2,0x5e,0x2b,0xc7,0xe4,0x79,
- 0x64,0x46,0xe9,0x93,0x34,0x38,0x2e,0xaf,0x2a,0x74,0xc5,0x7f,0x24,0x27,0xde,0x58,
- 0x0c,0x7d,0x44,0xeb,0x37,0xd7,0x1b,0x09,0x1a,0xdb,0x99,0x3e,0xf9,0x89,0x8d,0x81,
- 0x50,0xa1,0x0b,0xff,0x14,0x58,0xf1,0x9f,0x6d,0x4a,0xc0,0x73,0x00,0x06,0x12,0x4e,
- 0xfe,0xcb,0x9b,0x54,0x02,0x3c,0xfe,0x13,0x9c,0x3a,0xfe,0xd3,0x8d,0x6d,0x7f,0x5a,
- 0x2c,0x3c,0x80,0xe7,0x75,0xf6,0x88,0xe9,0xca,0xc9,0x35,0xb9,0xe7,0xc3,0x82,0x05,
- 0x72,0x1e,0x16,0x99,0x37,0x4f,0xba,0x60,0x0f,0x73,0x8b,0xb5,0x18,0x1f,0xc0,0x13,
- 0x51,0xa7,0x88,0xff,0x6c,0xf6,0x5c,0x4d,0x7a,0xf7,0x65,0x68,0x3c,0x91,0x78,0xc2,
- 0x5f,0x2b,0xed,0x79,0xa0,0x21,0x2a,0x67,0xe1,0x9f,0xe9,0x16,0xff,0x59,0xf5,0x54,
- 0x30,0x33,0x5e,0x83,0xdd,0x0e,0x71,0x7c,0xb0,0x55,0xbe,0x04,0x2b,0x98,0x84,0x06,
- 0x0c,0x5c,0x64,0xfa,0xff,0x38,0xf1,0x9f,0x3b,0xc9,0xa7,0x60,0xb5,0x51,0xcd,0xfe,
- 0x61,0x19,0x8f,0x90,0x44,0x02,0x15,0xc4,0xa4,0x46,0x07,0xf2,0xeb,0xbf,0xd8,0xec,
- 0x40,0xc4,0x1f,0x63,0x57,0xd6,0xb1,0xb0,0x9a,0x3c,0x29,0x20,0x23,0x3a,0xbb,0xfe,
- 0xcb,0x9d,0xd6,0x79,0xce,0x99,0x6f,0x84,0x1f,0x04,0x76,0x56,0x0a,0x47,0x2e,0x14,
- 0xff,0x99,0xcd,0xab,0xdd,0x11,0x08,0xa9,0x0c,0x08,0x2d,0xf5,0x8e,0x76,0xd7,0xb2,
- 0xa5,0xd8,0x8c,0xd0,0xe8,0x1d,0x07,0x3f,0xb8,0xe2,0x3f,0x1a,0xba,0x75,0xf0,0x70,
- 0xfc,0x43,0x1a,0xe4,0xe2,0x18,0xd1,0x98,0x3d,0xd9,0x5a,0xc9,0x4c,0xf1,0xa1,0xc2,
- 0xbc,0xf8,0x4f,0xd9,0x3a,0x29,0xb9,0x13,0x1b,0x71,0x58,0x69,0xaf,0x88,0xac,0xc6,
- 0x24,0xe4,0x5b,0xb6,0xca,0xb9,0xf5,0x5f,0xa6,0x3e,0x99,0xf6,0xd8,0xb6,0x5d,0xf7,
- 0x60,0xda,0x6b,0x0f,0x69,0xd0,0x7b,0x55,0x5e,0x11,0x86,0xfc,0xcc,0xd6,0x97,0x1c,
- 0x7c,0x92,0xac,0x70,0xe2,0x39,0xec,0xd7,0xd4,0x5d,0x07,0xc1,0x2c,0x46,0xfc,0xf3,
- 0x61,0x7c,0x0e,0x1e,0x1d,0x32,0xee,0xf4,0x9f,0xd9,0x0e,0xdb,0xe0,0x93,0xf2,0x5f,
- 0x1a,0x6f,0x04,0x94,0x39,0x9f,0xc2,0xc4,0x3f,0x98,0x7f,0xac,0xd1,0xe4,0x11,0x7d,
- 0x80,0xeb,0x5f,0x46,0xfd,0x2f,0x66,0xfa,0xc7,0x1f,0x42,0xda,0x40,0xc5,0x4c,0x7f,
- 0x98,0x80,0xdd,0xff,0x67,0x8c,0x5c,0x0f,0xf7,0xeb,0x35,0xd8,0xad,0x69,0x5c,0x7d,
- 0x06,0x1a,0x29,0x36,0xf6,0x54,0x9f,0xf1,0x36,0x26,0x95,0xbc,0xf3,0x61,0xf1,0x7d,
- 0x99,0x47,0x4a,0xba,0xba,0xdf,0xf0,0xd3,0x3e,0xd3,0xfe,0xb0,0x8d,0xad,0xf9,0xbe,
- 0xe4,0xd7,0x7f,0x99,0xef,0xef,0x1d,0xe4,0x53,0x12,0xf6,0x3f,0xb4,0xde,0xdf,0x60,
- 0x82,0x21,0x0a,0xe7,0xd5,0xce,0xad,0xff,0xba,0x1e,0xe3,0x33,0xf3,0xc8,0x21,0x3a,
- 0x2b,0xe9,0xa4,0xbd,0x82,0xe3,0x9c,0x11,0x74,0xa3,0x96,0x5b,0xff,0x65,0xc5,0x37,
- 0x84,0x71,0x93,0x78,0x9f,0x9b,0x4f,0xd7,0xf3,0xea,0xbf,0x2c,0xd8,0x83,0x29,0xe8,
- 0xe6,0xe4,0x95,0x66,0xfc,0x87,0x21,0x22,0x17,0x11,0x7a,0x34,0x2f,0xfe,0xa3,0x18,
- 0x6c,0xc9,0xae,0xc9,0x3c,0x7f,0x23,0xee,0xc8,0xde,0x94,0x9e,0x14,0xd0,0xfe,0x4c,
- 0xd5,0xff,0x27,0x62,0xd2,0xe0,0x29,0x6f,0x7b,0xc8,0x11,0x54,0x14,0x0b,0xe1,0x71,
- 0x2b,0x97,0x57,0xff,0x85,0x4a,0xa3,0x0b,0xf1,0xfc,0x3e,0x2d,0xe5,0xf8,0x3b,0x66,
- 0x7f,0x0e,0x22,0x02,0x47,0x7b,0xee,0xee,0xff,0xb3,0x23,0x63,0x3f,0x5f,0x11,0x9a,
- 0x36,0xe3,0x34,0xd5,0xd3,0x66,0x7c,0xe3,0x98,0xf0,0x91,0xcc,0x85,0x43,0x53,0xc5,
- 0x7f,0xde,0x35,0x0d,0x17,0xaa,0xe5,0xbf,0x43,0xb8,0xcb,0x3c,0x48,0xce,0x9f,0x53,
- 0xff,0xee,0xca,0x7f,0xcd,0x87,0x57,0x55,0xb6,0x9b,0x73,0x0e,0xc6,0x42,0x44,0x74,
- 0x76,0xa8,0x19,0xbc,0xd8,0xff,0x27,0x2f,0xfe,0xb3,0xc3,0x53,0x07,0x71,0x43,0xb3,
- 0x0e,0xea,0xe2,0x07,0x85,0x90,0x1d,0x98,0xc8,0xd0,0xe5,0x54,0x6b,0x76,0xfd,0x17,
- 0x1f,0xff,0x40,0xac,0x36,0xda,0x07,0x84,0x16,0x59,0xfe,0x1a,0x3b,0xfa,0x06,0x79,
- 0x47,0xa9,0x8e,0x54,0x59,0x76,0xfd,0x17,0xd7,0x0f,0x10,0xc0,0x1e,0xa6,0xd4,0xf6,
- 0x77,0x94,0xbd,0x86,0xeb,0xf9,0xc6,0x5f,0xce,0xab,0xff,0xc2,0xf9,0x26,0x44,0x09,
- 0x69,0x93,0x66,0x58,0x0c,0x97,0x01,0x33,0xcb,0x41,0xf6,0xe2,0x84,0xf0,0x4a,0xde,
- 0xf9,0x68,0x06,0x47,0x3b,0x67,0x30,0xd0,0x31,0xe1,0x0a,0x7c,0x79,0xcf,0x5e,0x20,
- 0xfe,0x93,0x66,0x17,0xb3,0xfa,0xff,0xb4,0x8c,0xb0,0x65,0x73,0x9d,0xcd,0xa8,0x77,
- 0xf5,0xff,0xa1,0xbc,0xdb,0xf3,0x51,0x65,0xbb,0x19,0xff,0x39,0x6a,0xf3,0x7f,0x26,
- 0xe4,0x81,0x58,0x0f,0xf4,0xe5,0xf5,0xff,0xc9,0xf0,0x31,0xdc,0x6d,0x9f,0x49,0xb0,
- 0x9d,0x4d,0x5c,0xea,0xe9,0xb6,0xf9,0xcf,0x59,0xf8,0x47,0x62,0xfa,0xdc,0x9e,0xd5,
- 0x36,0x19,0xf8,0xb1,0xbc,0x8f,0x31,0x8f,0x96,0xdb,0xff,0x59,0xda,0x21,0x59,0xfa,
- 0x09,0x5e,0x6a,0x2e,0xa4,0x1a,0xb3,0x7f,0x82,0x37,0xa4,0x38,0x88,0x71,0xc8,0xb1,
- 0x9f,0x5d,0x80,0xfe,0xbd,0x11,0xc7,0x67,0xa5,0x41,0xc3,0xe8,0xdf,0x4f,0x58,0x57,
- 0xbe,0x94,0xe1,0x3f,0x8f,0x81,0xb5,0x3e,0x55,0xd7,0xb1,0xb3,0x76,0x44,0x68,0xa5,
- 0xfa,0x8a,0xd9,0x81,0x21,0x93,0xff,0x4a,0x4b,0xd6,0x63,0x27,0x5c,0xcf,0x2f,0x71,
- 0x84,0x9c,0x22,0x41,0xb9,0xcf,0x3e,0x1f,0xcd,0x5e,0x0f,0x86,0xe4,0x9d,0x4a,0x3f,
- 0xb8,0x1e,0xca,0xc8,0x72,0xb5,0x3b,0x97,0xff,0x3c,0x0a,0x16,0xff,0x27,0xbb,0xed,
- 0x73,0xa2,0x1e,0x4f,0x10,0xbb,0x84,0x47,0x84,0x2e,0xcf,0xea,0xff,0x0c,0x0e,0xff,
- 0xa7,0x84,0x0b,0x1b,0x2c,0xfc,0xf3,0x00,0x7b,0xfe,0x76,0x78,0x41,0xcd,0xeb,0x7f,
- 0xe8,0x8a,0x3f,0xbb,0xcd,0x0e,0x75,0x67,0xe4,0x73,0xfa,0xff,0xe4,0xd3,0x7e,0xe8,
- 0x3c,0x4c,0x84,0x6d,0x73,0xf8,0x7b,0x19,0xfc,0x03,0x9b,0x73,0xb2,0xe7,0x28,0x3c,
- 0x8f,0xcb,0x7e,0x82,0x59,0x98,0x29,0xfb,0x3f,0xe7,0xb2,0x7d,0xde,0x82,0xe7,0xd7,
- 0x5c,0x83,0x30,0xef,0xa1,0x29,0xfa,0xff,0xd8,0xfd,0xc7,0x66,0x59,0xb0,0xc7,0x5a,
- 0x6f,0xec,0xfe,0x73,0xc9,0xcc,0xfc,0xfa,0xf7,0x11,0xab,0xff,0xa1,0x6f,0x9c,0xc3,
- 0x9e,0x06,0x9b,0xff,0x73,0x03,0xf5,0x3e,0x21,0x3e,0x41,0xf3,0xf9,0xcf,0x60,0xe5,
- 0x23,0xe2,0x59,0x7c,0x18,0x29,0xac,0x35,0x4e,0xcd,0xff,0xf9,0x24,0x7f,0x87,0xe7,
- 0x8d,0x86,0xf5,0x69,0x53,0xf6,0x3f,0x44,0x18,0xf3,0x6e,0x16,0x9f,0xa7,0x82,0x9f,
- 0x4f,0x9a,0x9b,0xff,0x82,0xda,0x5c,0xda,0x8f,0x45,0xd3,0x5d,0x94,0x60,0xf3,0x35,
- 0x5b,0xf9,0x41,0x26,0xff,0x05,0x6a,0x86,0xff,0x03,0x5b,0xb2,0x68,0x30,0x55,0x97,
- 0x15,0x08,0x5b,0x72,0xf3,0x5f,0x4b,0x2b,0xed,0xb2,0xf7,0x9a,0x2c,0xfe,0x0f,0x67,
- 0x04,0x69,0xc4,0x8a,0x80,0x7d,0x90,0xd5,0xff,0x87,0xcf,0xee,0xf0,0xed,0xf8,0xfc,
- 0xf7,0xd9,0xf3,0xe5,0x61,0x9f,0x13,0xf0,0xf3,0xa9,0xfa,0xff,0xb8,0xea,0xa1,0xee,
- 0x73,0xe2,0x3f,0x1d,0xde,0x9f,0x28,0xbb,0xf5,0xde,0xdc,0xfa,0xf7,0xca,0xac,0xfc,
- 0x17,0xdc,0xed,0xf0,0x7f,0x4a,0xe5,0x18,0x01,0xfb,0xa0,0xb4,0x4c,0xfc,0x27,0x6a,
- 0xf7,0x3f,0xac,0xc8,0xa1,0xfd,0x60,0xfe,0x6b,0x9b,0x1d,0x01,0xcb,0xc4,0x7f,0x06,
- 0x2b,0xb6,0x65,0xe9,0x33,0xc3,0xff,0x09,0xf0,0xc6,0x02,0xb9,0xf5,0xef,0xd6,0xf9,
- 0xb0,0xf6,0x34,0x1b,0x32,0xb4,0x1f,0x6f,0xa5,0xd8,0xc3,0x0f,0x7a,0x9b,0xe6,0xe6,
- 0xff,0x1c,0xc8,0x59,0x0f,0x0b,0x2c,0x61,0xfe,0x72,0xdf,0xc6,0x45,0xef,0x24,0xf3,
- 0xf8,0xcf,0x1e,0x48,0xba,0xd5,0x8e,0xdd,0x7e,0xca,0x4d,0xfc,0xc3,0x1b,0x21,0x8e,
- 0x48,0x39,0xfc,0x67,0xa7,0xff,0x61,0xb2,0x35,0x97,0xff,0x73,0x94,0xcc,0xb5,0x23,
- 0x42,0x07,0xf2,0xf3,0x11,0xf9,0x6d,0xb2,0x90,0xc1,0xdb,0x9d,0x8b,0x7f,0x04,0xc8,
- 0x67,0xff,0xbe,0x69,0x23,0xa2,0x2a,0x3b,0x22,0x94,0xc9,0x7f,0xc9,0xf1,0x19,0xae,
- 0xb6,0x3f,0x5d,0x56,0xdb,0x1f,0x7e,0xe5,0x88,0x72,0x89,0x1d,0x11,0xca,0xc4,0x7f,
- 0xea,0xaa,0x76,0xc8,0x6e,0x76,0xe5,0x50,0xc6,0xb0,0x24,0x32,0xf6,0xc7,0xd5,0xff,
- 0x19,0xcf,0x87,0x4d,0x38,0x6c,0x1f,0xb3,0xff,0x8f,0x8d,0x88,0xe6,0x41,0x5e,0xfd,
- 0xfb,0x13,0x2a,0x8f,0xff,0x58,0x8f,0x2d,0xd4,0x8f,0xbb,0x68,0xcf,0x1e,0xa7,0x11,
- 0x6b,0x06,0xff,0x24,0x81,0x9f,0x27,0xeb,0x4c,0x73,0xc4,0x35,0xf1,0x58,0xc4,0x1e,
- 0x9f,0xe9,0x2f,0xe1,0xf4,0x3f,0xcc,0xf4,0x73,0x6b,0x3d,0x66,0x0a,0x01,0xa2,0xe7,
- 0xd7,0xbf,0x3b,0xf6,0xf3,0x49,0xd1,0xa4,0xb9,0x5a,0xf3,0x6d,0xc0,0x40,0xba,0x43,
- 0x7d,0x71,0xd7,0x7f,0x4d,0x69,0x6f,0x01,0xf9,0x30,0xca,0x0e,0x4b,0x70,0xd7,0xbf,
- 0xc3,0xb3,0x92,0x93,0xf6,0xfa,0xbd,0xed,0xef,0xcc,0x7e,0xbf,0x35,0xf3,0x6d,0x62,
- 0x67,0x26,0x5e,0x31,0x64,0xf9,0xaf,0x45,0x59,0xb4,0x55,0xee,0xb6,0xc2,0xa4,0xde,
- 0x3e,0xe8,0xd3,0xd5,0xff,0x47,0xca,0x76,0xd3,0xa6,0xc0,0xcf,0x47,0x1b,0x74,0x3c,
- 0x20,0xb8,0xf0,0x8f,0x9a,0xbd,0xde,0xf6,0x71,0xbe,0x47,0x77,0x8e,0x07,0x74,0xe1,
- 0x9f,0xf8,0x4a,0xd7,0x34,0xed,0x36,0x08,0x66,0xe0,0x4b,0x09,0xaa,0x79,0xf5,0xef,
- 0x14,0xcf,0x47,0xb3,0xaa,0x75,0xb4,0x6c,0x9a,0x53,0xa7,0x79,0x10,0x3c,0xe6,0x2f,
- 0x5c,0xf8,0x67,0xfa,0x39,0xf8,0x95,0xc9,0xff,0x39,0x27,0xff,0x9e,0xad,0x96,0xaa,
- 0x2c,0xda,0x33,0xb6,0xce,0x66,0x77,0x08,0xb9,0xce,0x87,0x75,0x48,0xce,0x1f,0x08,
- 0x28,0x78,0xdc,0x6d,0x7f,0x48,0x9c,0xf8,0xd3,0x7d,0xa9,0xb2,0x54,0xa6,0xdf,0x08,
- 0x8f,0xff,0xac,0xe4,0xd5,0x04,0x15,0xb8,0xfb,0x46,0xbc,0x57,0x69,0x4d,0x13,0x5b,
- 0x85,0x27,0x8d,0x3e,0x8d,0x34,0x09,0xf6,0x78,0x43,0xb0,0xf9,0xcf,0x65,0xc7,0xa4,
- 0x1b,0x78,0x3f,0x25,0x47,0xb1,0x85,0xbf,0x05,0x2c,0x84,0x7f,0x65,0x0b,0x49,0x39,
- 0xf6,0x04,0x2a,0x76,0x48,0xbf,0x90,0x10,0x96,0x08,0xc7,0xe0,0xff,0x07,0xd6,0xf9,
- 0x7a,0x96,0x5a,0x7e,0xad,0x1e,0x48,0x36,0x19,0x4b,0x9e,0x55,0x4a,0x1d,0x7e,0xfb,
- 0x51,0x86,0x7f,0x5a,0xb8,0x5a,0x6e,0x3f,0x53,0x90,0xcb,0x07,0x4b,0x4b,0x3c,0x3f,
- 0xd8,0xd9,0x3c,0x45,0xff,0xe7,0x94,0x75,0x0c,0xdf,0x12,0xfb,0xfe,0x25,0x58,0x66,
- 0xc8,0x89,0xe8,0x49,0x71,0xb6,0x63,0x7f,0x0e,0x48,0x41,0xe9,0x74,0x81,0xb5,0x0c,
- 0x70,0x19,0x97,0xb8,0xf8,0x60,0xbf,0x31,0xfa,0xee,0xd9,0x6a,0x30,0xd3,0xd4,0xe4,
- 0xfc,0xbc,0x2e,0xfe,0xcf,0x41,0xb3,0x3a,0xd2,0xb6,0x3f,0x9e,0x50,0xd9,0x7b,0x6a,
- 0x2f,0xe5,0xad,0x12,0xe6,0x3a,0xf6,0x67,0x99,0x30,0x43,0xfd,0x01,0xfd,0x0a,0x73,
- 0xfa,0x53,0xd0,0x80,0xdf,0x82,0x9e,0x44,0x75,0x9a,0x19,0xae,0xf9,0xd4,0x5e,0x6f,
- 0xc8,0xff,0xd9,0x95,0xd3,0xed,0xf9,0x20,0x6f,0x84,0x58,0x12,0x12,0x47,0xc8,0x2b,
- 0x6a,0x68,0x78,0x49,0x85,0x52,0xe6,0x3c,0x8f,0x7e,0xe9,0xb3,0x66,0x77,0xac,0x94,
- 0x80,0xef,0x0b,0x9f,0xa6,0xd3,0xf6,0xf9,0x04,0xcc,0x57,0x5b,0x86,0x7d,0x3f,0x11,
- 0x47,0x2f,0xb1,0xdf,0x47,0xce,0xff,0x91,0x78,0xda,0x2b,0x98,0xf7,0x62,0x9e,0x51,
- 0xad,0xf3,0x8b,0x3d,0x99,0xfa,0x2f,0x7b,0xff,0x35,0x21,0xe6,0x1c,0x7b,0xd1,0x87,
- 0x42,0x0f,0x66,0xd8,0x43,0xa4,0x29,0x53,0x4f,0x67,0xe2,0x9f,0xa3,0xca,0xe4,0x14,
- 0xc7,0x7c,0x1c,0x82,0x58,0x9c,0x27,0xfe,0xd4,0xa9,0xf8,0xcf,0x19,0xc5,0xca,0x96,
- 0x70,0xa8,0x35,0xfe,0xb6,0x86,0x2f,0x66,0x99,0xab,0xfe,0xcb,0xe1,0xff,0x04,0x9c,
- 0xb6,0xcf,0xaa,0x25,0x9c,0xd4,0x0f,0xe9,0x03,0xd4,0xf7,0x9e,0x72,0xc3,0x85,0xeb,
- 0xdf,0xff,0xdd,0xfe,0x87,0x9f,0x40,0x73,0x1d,0xe6,0xf5,0xd1,0x4b,0x12,0xa2,0x38,
- 0x15,0xff,0xc7,0xc6,0x33,0xcd,0x8e,0x47,0xfe,0x8d,0x75,0x3e,0xbb,0xbb,0xfe,0xdd,
- 0x85,0x97,0x84,0x3c,0x20,0x14,0xb5,0xc6,0xdf,0xec,0xfc,0xbe,0x6e,0xfe,0xb3,0x25,
- 0xf8,0x9d,0x0e,0xc9,0x2f,0xe2,0xd1,0xb1,0x0c,0x2a,0x78,0x74,0x67,0xfc,0xa0,0xac,
- 0xf1,0x68,0xf3,0x05,0xe6,0x3b,0x82,0xf1,0x67,0xaa,0xdc,0x77,0xa1,0xf8,0x8f,0x99,
- 0xff,0x92,0x2d,0xe1,0x2c,0x39,0xdf,0xca,0x2b,0xc2,0x32,0xfd,0x7f,0xfa,0xa7,0x4f,
- 0x05,0x0b,0x6d,0x46,0x74,0xf2,0x55,0x19,0x3b,0x42,0xaf,0x75,0xc5,0x7f,0x2a,0x6d,
- 0xfc,0xd3,0xea,0x00,0xa1,0xa4,0x2d,0x1c,0x8d,0x61,0x69,0x98,0xb2,0xc6,0x15,0xff,
- 0x01,0x87,0xff,0xe3,0xb7,0x84,0x04,0x86,0xb9,0x24,0x53,0x03,0x5a,0x77,0x00,0x13,
- 0x7f,0x31,0xd7,0xf9,0xb0,0x05,0xa6,0xb6,0x2f,0x77,0xa9,0x31,0x83,0x88,0x2a,0x7a,
- 0x91,0x61,0xb5,0x89,0xbc,0x93,0x89,0xff,0x48,0xf9,0x6d,0x2d,0x9d,0xe7,0xff,0x2d,
- 0xec,0xd7,0x91,0x11,0x44,0x32,0xf1,0x9f,0x27,0xd4,0x4f,0xc0,0xc3,0x2f,0x23,0xc3,
- 0x81,0xe3,0x1f,0x67,0xbd,0x65,0xf1,0x9f,0xf3,0x04,0x63,0xa4,0xa3,0x09,0x3b,0x72,
- 0xbb,0xea,0xdf,0x7b,0x4c,0xfc,0xb3,0xc8,0xcd,0x7f,0x96,0x2d,0x61,0x12,0xee,0xd7,
- 0xb7,0xa2,0xe0,0x99,0x8a,0xff,0x6c,0xbd,0x38,0x29,0x14,0xa4,0xa0,0xd1,0x17,0x22,
- 0x43,0x58,0x4a,0x89,0x5f,0x79,0x9c,0xf5,0x50,0x9d,0xe1,0x3f,0xbf,0x29,0xe5,0x02,
- 0xa1,0x51,0xe0,0xfd,0x2b,0xe6,0x11,0xd9,0x36,0x57,0x56,0xfc,0xe7,0xc6,0xac,0x6a,
- 0x2f,0x47,0x38,0xce,0x1b,0x01,0x2d,0x59,0xa5,0x78,0x9c,0xfe,0xcf,0x4e,0xfc,0xc7,
- 0x0a,0x6b,0x64,0xd9,0x93,0x34,0x31,0x85,0xf2,0x29,0xe3,0x3f,0x8e,0xf0,0x81,0x73,
- 0x85,0xbc,0x1a,0x43,0xfe,0x4f,0xb7,0x9a,0x89,0xbf,0x95,0xe6,0xec,0xbf,0x4a,0x3a,
- 0xc9,0x5b,0x71,0xab,0xec,0xe2,0x88,0xf9,0xfc,0x9d,0x65,0x4f,0x38,0xf1,0xb7,0xfe,
- 0xa9,0xf6,0x6b,0xd4,0xb9,0xf2,0x1d,0xd3,0x5e,0x6d,0xcb,0x8f,0xff,0x84,0x5a,0x0f,
- 0xaa,0xa6,0x19,0x77,0x95,0xf9,0x68,0x0f,0xc6,0x79,0x61,0x5d,0xbf,0xf3,0xbe,0xcf,
- 0x9d,0x7e,0x21,0x3c,0xc3,0x84,0xdf,0xa9,0x3f,0x4f,0x37,0xa1,0xe1,0xbd,0xdf,0x75,
- 0x3e,0x6c,0xfe,0x30,0x47,0x78,0x57,0x7f,0x57,0x67,0x42,0xc8,0xb5,0x1f,0xec,0x4a,
- 0x9c,0x91,0x6d,0x37,0x57,0xe1,0xf8,0x3b,0x0b,0x08,0x1d,0x63,0xeb,0x8d,0x17,0x82,
- 0x69,0x8e,0x7f,0x1c,0x92,0x56,0x7a,0x91,0xed,0xdc,0x97,0x53,0xb6,0x33,0x0f,0x85,
- 0x77,0xb0,0x35,0x2b,0x13,0xda,0xbe,0xe6,0x18,0x88,0xa9,0xf1,0x8f,0x25,0x7c,0x50,
- 0x3d,0xc8,0xc6,0x33,0x28,0xa5,0xe5,0xc7,0x7f,0xdc,0x78,0x9b,0xee,0x82,0x00,0x13,
- 0x66,0x8e,0x08,0x3b,0x39,0xf1,0x63,0x61,0x26,0xff,0x45,0xe5,0x95,0x32,0x96,0x01,
- 0x6e,0x40,0x36,0xb5,0x3d,0x5f,0xed,0x77,0x36,0x50,0x44,0xfe,0xed,0x92,0x94,0x92,
- 0x53,0xff,0x2e,0xf2,0xfe,0x2d,0x56,0xda,0xc2,0xe5,0xdf,0x4f,0xc0,0x3f,0x98,0xc0,
- 0x2f,0xeb,0x7c,0xd8,0xee,0xd0,0x96,0x83,0xf6,0xe9,0x7b,0x07,0x03,0xcd,0x9e,0xaa,
- 0x7d,0xff,0xc7,0xcf,0x43,0x3c,0x68,0xdf,0x0d,0x05,0x3c,0x7d,0xef,0x13,0xee,0x2f,
- 0x77,0x37,0x69,0x66,0xdf,0x0f,0x0c,0x89,0x4f,0x2d,0xb8,0x3f,0xff,0xcf,0x9e,0xc7,
- 0xc7,0x3e,0x62,0x08,0xfe,0x94,0xcf,0x7f,0xc6,0xf3,0x10,0xe1,0x7f,0xe2,0x3c,0xc4,
- 0x2a,0x63,0x6d,0xc8,0xba,0x1b,0x13,0x0e,0xca,0x5f,0xfd,0x77,0xce,0x43,0x44,0x02,
- 0x8a,0xa5,0x3f,0x64,0xa2,0xf0,0x04,0xf9,0x27,0xe9,0x1f,0xef,0x66,0x69,0xdb,0xba,
- 0xed,0x54,0xfa,0xcf,0x9c,0x87,0xe8,0x35,0x9c,0x1f,0x82,0x09,0x07,0xa1,0xd9,0x35,
- 0xea,0xe2,0x79,0x88,0x9f,0x2c,0xfc,0x7f,0x79,0xfc,0x7f,0xb2,0xf7,0xf1,0x4f,0xbe,
- 0x7f,0xc6,0xfa,0x71,0xc3,0xd8,0xfc,0x7f,0xdc,0x1e,0x66,0x7f,0x9a,0x3f,0xe9,0x4b,
- 0xfe,0x3c,0x6b,0x43,0x5c,0xc9,0x53,0xb8,0xa1,0xff,0xad,0xfa,0xff,0xc4,0x1f,0x22,
- 0xf3,0x71,0xec,0xa1,0xe5,0x8f,0xfe,0x77,0x9c,0x0f,0x5b,0x65,0xfc,0x69,0xfa,0xcf,
- 0x7e,0xfe,0x7f,0x5f,0xff,0xae,0xf1,0xff,0xa1,0xf3,0x61,0xbd,0x43,0x17,0xed,0xe1,
- 0x7f,0x1a,0xfb,0xf3,0x9f,0x6c,0xfc,0x8b,0x0b,0xa0,0x53,0x7f,0x53,0xbd,0x0e,0x8a,
- 0x87,0x44,0x2e,0x54,0x14,0xbf,0x28,0xde,0x63,0xdc,0xa9,0x7e,0xca,0x12,0x22,0x9f,
- 0x92,0x0a,0x8c,0x59,0xce,0xf8,0x9b,0xda,0x85,0x7b,0x84,0x3b,0xf5,0x3f,0x57,0xd5,
- 0x9e,0x02,0x53,0x98,0x3e,0xec,0x08,0xd6,0x57,0x57,0x18,0xb3,0x9c,0x0d,0x12,0x25,
- 0x82,0x46,0x3b,0xb4,0x32,0x59,0xda,0x67,0x0a,0x95,0x78,0x6c,0xa1,0x79,0x85,0x0b,
- 0x51,0x26,0x50,0xcd,0xb9,0x3f,0x05,0x21,0x0a,0x95,0x70,0x09,0x7c,0x87,0x32,0x61,
- 0x29,0x5c,0x22,0x17,0x30,0x41,0x58,0x0a,0x9f,0xaf,0xb4,0x05,0x28,0xa0,0x9a,0xf3,
- 0x0a,0xdc,0xb4,0xb4,0x60,0x8e,0xf0,0x59,0x7a,0xfb,0x02,0x29,0x5e,0x70,0xaf,0x70,
- 0x27,0xfd,0x73,0x6d,0xfa,0x88,0x2d,0x1c,0x14,0x6e,0x13,0xee,0x4c,0x32,0xc1,0xf5,
- 0x3c,0x2f,0xea,0xba,0xa6,0xca,0x12,0x11,0xd8,0x5f,0xc2,0x3f,0x54,0x08,0x42,0xcc,
- 0x14,0x54,0x21,0x26,0x59,0x57,0x68,0x06,0xe2,0xbd,0xd8,0x21,0xdd,0x25,0x54,0xd2,
- 0x9b,0x99,0x61,0x95,0x34,0x41,0x4e,0xb4,0x6a,0x6a,0x5c,0xaa,0x16,0x64,0x68,0x0d,
- 0xa9,0x3d,0x78,0x05,0x05,0x9a,0xd1,0xcf,0x8b,0x0b,0x57,0xdf,0xd6,0x75,0x47,0xf2,
- 0xcf,0x02,0x92,0x5c,0xd0,0xda,0x15,0x99,0xb8,0x23,0x30,0xdd,0x53,0xa0,0xd3,0x88,
- 0x56,0x11,0x98,0x4e,0x4c,0xc1,0x5b,0x00,0x2e,0xfd,0x5c,0xd1,0xf5,0xe7,0xf0,0x67,
- 0xc6,0xf4,0x88,0x74,0xbf,0xf0,0x67,0x4c,0x28,0xed,0x2c,0xb8,0x53,0xb8,0x9d,0xde,
- 0x61,0x4c,0x0f,0x31,0xa1,0x1c,0x98,0x30,0x57,0x72,0xb6,0x5f,0x6c,0xbc,0xa6,0x77,
- 0x40,0x19,0x48,0x94,0x99,0xab,0x56,0x50,0x75,0x01,0x4d,0x60,0x1b,0xa8,0x54,0x52,
- 0x05,0x89,0xd9,0x08,0x14,0xd4,0xa1,0xcc,0xf8,0x17,0x97,0x31,0x8b,0xc1,0x13,0xd1,
- 0x1a,0xdb,0xe6,0xc6,0x90,0x7f,0xad,0x11,0xfb,0x4a,0x21,0x17,0x92,0xf2,0x02,0x97,
- 0x7e,0x22,0xd3,0x96,0x0b,0xff,0x05,0x3e,0xaf,0x57,0xd0,0x02,0x53,0x98,0x9e,0x28,
- 0x88,0x0a,0x47,0xe0,0xef,0x80,0x09,0x9a,0x29,0xb8,0xe7,0xab,0x8b,0x51,0x38,0x02,
- 0x73,0x90,0xaf,0x87,0xbf,0xd7,0x1c,0x28,0xa6,0xe2,0x5d,0xc2,0x52,0x7a,0x09,0x17,
- 0x00,0x05,0xf7,0xf8,0x9b,0x5a,0xa5,0x50,0x97,0x57,0x6b,0x93,0xe5,0x98,0x14,0xa2,
- 0x28,0xa8,0xfb,0xac,0x2b,0xea,0x3e,0x35,0x34,0xc4,0x05,0xd7,0xef,0xc5,0x3e,0x21,
- 0xc0,0x8e,0x2d,0xec,0xf7,0xb2,0x04,0xc3,0x16,0x46,0x4c,0x41,0x03,0xc3,0xa5,0x1f,
- 0x22,0x84,0xe8,0x62,0xad,0x5c,0x96,0x62,0xb6,0xb0,0x4f,0x08,0x19,0x8b,0x43,0xb7,
- 0xcb,0xd2,0x2b,0x42,0xa8,0x8b,0x09,0x5e,0xc9,0x35,0xfe,0xc5,0xd6,0x82,0x68,0xd7,
- 0x52,0xed,0xf3,0x6c,0xbc,0x64,0x0a,0xd3,0x63,0x05,0xd1,0xa1,0xa5,0x21,0x26,0x74,
- 0x0b,0x9a,0x29,0x50,0x97,0x7e,0x5a,0x4d,0x5d,0x3a,0x4a,0x35,0x05,0xaf,0x26,0x32,
- 0x41,0x32,0x05,0x21,0x7b,0xbe,0xd1,0xae,0x4a,0xed,0xe6,0x0e,0xd8,0xc8,0x84,0x4b,
- 0xb5,0x9b,0xe5,0xd2,0x98,0xb4,0x1c,0xe7,0xdb,0x51,0xba,0x51,0xd2,0x50,0x58,0xec,
- 0x5e,0x3f,0x37,0x45,0x0b,0x96,0x0a,0x9f,0x87,0x3f,0xa3,0x92,0x26,0x99,0xc2,0x74,
- 0xbc,0x52,0x08,0xa5,0x28,0xc8,0x70,0x33,0x0a,0xba,0x6b,0xfd,0xdc,0x2c,0x7c,0x8e,
- 0xde,0x11,0x9d,0xde,0xcf,0xde,0xa6,0x05,0x34,0x12,0xad,0xa8,0x2c,0x28,0xcc,0x13,
- 0x9c,0xed,0x32,0xf3,0x5e,0x6c,0xef,0xc9,0xde,0x3e,0xa2,0x43,0x19,0x13,0x16,0xf0,
- 0x77,0xa1,0x54,0xa2,0xec,0xa5,0xe8,0x90,0xf0,0x0a,0x0a,0x15,0xae,0xf1,0x2f,0xde,
- 0x4c,0x3e,0x47,0x37,0x45,0xab,0x55,0xb8,0x59,0xc4,0x3f,0x34,0xab,0xb2,0x18,0x85,
- 0xc3,0xd1,0x6b,0x99,0x30,0xcd,0x12,0x5c,0xcf,0xf3,0xe2,0xcd,0x05,0xf7,0x74,0xdd,
- 0x19,0xfd,0xf3,0xca,0xab,0x5e,0x2a,0xb8,0x67,0xf5,0xe6,0xe8,0xe7,0x2b,0x4b,0x99,
- 0x10,0x7b,0x33,0xfa,0xf7,0x95,0xd3,0x99,0xd0,0xc5,0x05,0x97,0x3d,0x69,0xbf,0x59,
- 0xc4,0x8b,0xd7,0x55,0x16,0xbc,0x44,0xee,0xa1,0x28,0x14,0xbf,0x24,0xe2,0x1d,0x3e,
- 0xc5,0x84,0x69,0xf7,0x50,0xbc,0xd5,0x74,0xa3,0x34,0xa3,0x1f,0xeb,0xfe,0x4b,0xe5,
- 0x35,0x28,0x2c,0xfb,0x73,0xbc,0x6d,0x75,0x97,0x1c,0xfd,0x0c,0x13,0x60,0x56,0x97,
- 0x37,0xda,0x56,0x59,0x41,0x4b,0x9d,0xe7,0x61,0xef,0x87,0x06,0xfc,0x8d,0x71,0x0c,
- 0x51,0x8c,0x4d,0xd3,0x5c,0x21,0xec,0x87,0xbb,0x53,0xfb,0x14,0xb3,0x3f,0xae,0xd5,
- 0x56,0x28,0x2c,0xeb,0x5a,0x1a,0xbd,0x04,0xcd,0xd4,0x32,0x8a,0x42,0x81,0x29,0x7c,
- 0x1e,0x85,0x6a,0xfe,0xd5,0x74,0x9a,0xc9,0x5f,0xdc,0xa4,0x17,0x84,0xb4,0xc5,0xf2,
- 0xed,0x20,0xd1,0x82,0x4e,0xe1,0x4e,0xf8,0x73,0x98,0x6e,0x14,0x74,0x82,0x25,0x84,
- 0xac,0x2b,0x99,0xe7,0xb9,0xa9,0x95,0xb2,0x17,0x2e,0xc0,0x97,0x4d,0x94,0x56,0x6a,
- 0x92,0x2c,0x98,0x42,0x21,0x0a,0x9a,0x29,0x50,0xd7,0x7c,0x5b,0x7b,0xa2,0x49,0xb6,
- 0x7e,0xf8,0xea,0xea,0x92,0xf9,0x49,0xb7,0x12,0x2e,0x3c,0x2e,0x44,0xcd,0x2b,0xee,
- 0xf1,0x6d,0x57,0x45,0x8c,0x3b,0x42,0x7f,0x26,0xbf,0xc8,0xac,0x4d,0x57,0x44,0xbb,
- 0x43,0xb6,0xcd,0x8e,0x3c,0x5d,0x2c,0x88,0x50,0xbc,0x52,0x00,0x99,0xe7,0x01,0x51,
- 0xc0,0xf1,0xd3,0x65,0xa9,0xcd,0x14,0xbc,0x05,0x4c,0x18,0xe2,0x42,0xab,0xf5,0x55,
- 0x81,0xee,0xd2,0x0f,0xe8,0xba,0xaa,0x4a,0x92,0xa0,0xc6,0xd1,0xfe,0x50,0xd3,0x04,
- 0x9a,0x02,0xc0,0x5d,0x5c,0x28,0x75,0x8d,0xbe,0x69,0x21,0x21,0x94,0x26,0xb5,0x0e,
- 0x4a,0x08,0x50,0x1a,0xd2,0x64,0x99,0x0b,0x1a,0x0a,0x85,0x96,0xe0,0x7a,0x1e,0xa6,
- 0x4f,0xd3,0xc8,0xd7,0x52,0x2e,0x3c,0xc4,0xac,0x87,0x80,0x16,0x06,0xcd,0x8e,0x6d,
- 0x88,0x5c,0xf3,0x5d,0xad,0x8b,0xf8,0xed,0x25,0x30,0x4c,0x45,0xd3,0x10,0x15,0xa3,
- 0x70,0x27,0x7c,0x8a,0x0d,0x9b,0xa6,0x71,0x21,0xeb,0xf7,0x05,0x29,0x24,0xa0,0xf5,
- 0xa0,0x94,0x0b,0xcc,0x74,0x1a,0x4c,0xa8,0x64,0x2f,0x16,0x18,0x44,0xe3,0x42,0xa5,
- 0x7b,0xbc,0x64,0x1a,0x19,0x9d,0xd9,0x9f,0x59,0xe0,0xd5,0xc5,0x08,0x1c,0x86,0xd9,
- 0x50,0x04,0x44,0x57,0x0f,0x43,0x2d,0x17,0xc0,0x3d,0xbe,0x40,0x98,0xa5,0x2f,0x8e,
- 0x94,0x27,0x7a,0x5e,0x44,0x21,0x5a,0x5e,0x21,0x31,0x61,0xc1,0xe2,0xc8,0xed,0x15,
- 0xd2,0x70,0x57,0x35,0x0a,0x6a,0xd6,0xf3,0xd4,0x14,0xac,0x18,0xfa,0x42,0xe8,0xf3,
- 0xf1,0x82,0x47,0x4d,0x61,0xfd,0x74,0x5b,0x28,0xf8,0xc1,0x6a,0xeb,0x8a,0x7b,0xbc,
- 0x97,0x03,0xfd,0x42,0xfc,0xa3,0x1c,0x6c,0xde,0x01,0xdf,0xb1,0x1f,0x23,0x31,0xd5,
- 0xf3,0xc0,0xf2,0x68,0x69,0xa5,0xc4,0xde,0xfa,0x78,0xbb,0xe9,0xc8,0x4a,0xe3,0xd2,
- 0x5d,0xa5,0x95,0x3d,0x37,0x57,0x0b,0x3d,0xcb,0x4d,0xa1,0xd4,0x3d,0x5e,0xb8,0x29,
- 0x52,0x7a,0x87,0xf4,0x67,0x42,0x05,0x14,0x44,0x3e,0x87,0xc2,0x74,0xfd,0xa6,0x08,
- 0xdc,0x21,0x4d,0x87,0x02,0x7d,0x41,0x24,0x74,0x87,0x77,0xba,0x90,0xb5,0x1e,0xe4,
- 0x6a,0x22,0xeb,0x31,0x55,0xeb,0x91,0xab,0x5b,0xe5,0x48,0xac,0x42,0x2b,0x90,0x85,
- 0xd6,0x00,0x0a,0xd3,0xe5,0xea,0xdb,0xf8,0x95,0xd5,0xee,0xc7,0xf1,0x00,0xa1,0x90,
- 0xd4,0x03,0x15,0x1e,0x81,0x50,0x7d,0xbb,0x1a,0x90,0x98,0x90,0xd0,0x93,0x28,0xa4,
- 0x99,0xb0,0x4d,0xad,0xab,0x70,0x8f,0xf7,0x92,0x72,0xe8,0x31,0x96,0x85,0x84,0xc5,
- 0xe2,0xed,0x70,0xf8,0xc0,0xac,0x50,0x31,0x13,0xd4,0xc3,0xc6,0xb5,0xa1,0x82,0xc5,
- 0xef,0x94,0xc3,0xe1,0xe1,0x6b,0x9b,0x8a,0xdd,0xcf,0x53,0x54,0x70,0xef,0x82,0xaa,
- 0x84,0x09,0x03,0xa0,0x8a,0x5e,0x62,0xe2,0x81,0x37,0xe9,0xdf,0x3b,0x82,0x7f,0xba,
- 0xe1,0x1a,0xaf,0x7c,0xa1,0xf5,0x67,0x89,0x27,0xb7,0xd5,0x17,0x7d,0x7a,0x21,0x13,
- 0x76,0x6f,0xab,0xbf,0x45,0xb9,0x6d,0xe1,0xe8,0xc6,0x27,0x6b,0x7f,0x54,0xa4,0xb4,
- 0x2e,0x3c,0xcc,0x05,0xf7,0xf3,0xdc,0x70,0xfe,0xd6,0xf3,0xff,0xfa,0xfc,0x89,0xf7,
- 0x4f,0xb6,0x7c,0x8b,0x09,0x4f,0x9f,0xf8,0xfd,0xc9,0x1b,0xce,0x2d,0xf9,0xd5,0x83,
- 0xe7,0xc7,0xce,0x9e,0xbc,0xe1,0xbe,0x25,0xe7,0xb9,0x00,0xff,0x0b,0x9f,0xf0,0xc3,
- 0x45,0x33,0x5b,0x6f,0x49,0x6c,0x5c,0x7e,0xd5,0x49,0xdf,0x63,0x6d,0xe7,0x13,0xa7,
- 0xfe,0x21,0xfc,0x4f,0xb7,0x7c,0xeb,0xf5,0x5b,0x12,0xdf,0x3d,0xdb,0x72,0xfe,0x96,
- 0xab,0x5f,0xbf,0xe5,0xc4,0x77,0xc7,0xdc,0xe3,0x5b,0xee,0xbb,0xf5,0x57,0x0f,0x3e,
- 0x3d,0xf6,0xbe,0xf3,0x18,0x67,0xcd,0x07,0x1b,0xfb,0x3d,0x1b,0x7f,0xeb,0xaf,0xf8,
- 0x13,0xba,0xc7,0xd7,0xdc,0xd7,0xf1,0xab,0x8d,0xd7,0x8d,0xad,0x5f,0x76,0x03,0xfe,
- 0xc3,0x9d,0xf8,0x0f,0xef,0xbb,0xf5,0xad,0xf2,0xa7,0x7b,0xde,0x3f,0x59,0x53,0xc9,
- 0x85,0x63,0xcb,0xb2,0x1e,0x28,0xd6,0xa9,0x6f,0x56,0xaf,0xbe,0x74,0xba,0x41,0x98,
- 0x00,0x57,0x57,0x14,0xbd,0x48,0xee,0x31,0xd8,0x95,0x8a,0xa2,0x21,0x06,0x1d,0xab,
- 0xd4,0x69,0x65,0x97,0xba,0xf5,0x29,0x59,0x68,0x50,0x18,0xbe,0x8a,0x0b,0x95,0x2e,
- 0x7c,0x28,0xcd,0x12,0xbc,0x7a,0x9b,0x5a,0xe9,0x1e,0x6f,0x9b,0xe5,0x9e,0x58,0xc6,
- 0x3e,0x5b,0x40,0x31,0x56,0xdd,0x89,0xf6,0xb9,0x92,0xd2,0xac,0x07,0x32,0xd1,0x5a,
- 0x17,0xb5,0x61,0x5b,0x0f,0x2c,0x63,0xbb,0x37,0x84,0x6d,0xb5,0xd1,0x4b,0x2b,0xc9,
- 0xcd,0x90,0x35,0x5e,0x6e,0xbf,0xb7,0xc8,0x4b,0xdb,0x0a,0xe8,0xfe,0xe5,0x4d,0x42,
- 0x55,0xcf,0x67,0xb4,0xd2,0x11,0xe9,0x5e,0xa1,0x8a,0x7e,0x26,0x60,0x0a,0xf1,0xcf,
- 0x5c,0x23,0x18,0xd9,0xf7,0x8f,0xc8,0x85,0xa4,0x00,0x5d,0x21,0x54,0xaa,0x78,0x5b,
- 0x1b,0x28,0xda,0x42,0xd6,0xfb,0xe5,0x95,0xfc,0xf8,0x5a,0x45,0x18,0x3e,0xbc,0x4b,
- 0x90,0x69,0x6b,0x54,0x7d,0x44,0xba,0x7a,0x01,0x17,0x12,0x15,0xb5,0x42,0x11,0xb4,
- 0x66,0xbf,0x8f,0x9f,0x96,0x16,0x0e,0x5d,0x92,0xbc,0x29,0x0e,0x0d,0xd2,0x17,0xba,
- 0xca,0x92,0xed,0xdb,0x4b,0xeb,0xa4,0x85,0x28,0xec,0x28,0x9d,0x09,0x1d,0xf4,0x32,
- 0x4d,0xda,0xe1,0xda,0x6d,0xca,0x46,0x31,0x94,0x43,0x85,0x51,0xb0,0x49,0x2d,0x66,
- 0x46,0xab,0x62,0x14,0xd8,0x8b,0x00,0xb7,0xe3,0x95,0x10,0xdc,0x0d,0x7f,0x01,0x97,
- 0x18,0x05,0xbb,0x33,0xec,0x1f,0x66,0xc3,0x0a,0x99,0x2e,0xd8,0x5e,0xb6,0x53,0xed,
- 0x01,0xdc,0xdd,0x82,0x2e,0xa8,0x70,0x13,0x5e,0xd1,0x99,0x2d,0x44,0xf4,0xc0,0x40,
- 0xae,0x1e,0xca,0xdc,0x1f,0xf7,0xad,0x6c,0x5f,0xc9,0x36,0xbf,0xb8,0xc1,0x54,0xdd,
- 0x3b,0x4d,0x2b,0x04,0xa7,0xc9,0x59,0xe3,0xa5,0x28,0x37,0x92,0xdc,0xe2,0x57,0xc2,
- 0x6d,0xe6,0x1d,0x2b,0xf9,0xad,0x0b,0xa3,0x42,0x3f,0x7c,0x99,0x09,0xce,0x78,0x55,
- 0x00,0x12,0x85,0x7e,0x98,0xa9,0xc9,0xd4,0x14,0xa0,0xc8,0x11,0xe2,0x12,0xbe,0xa1,
- 0xd3,0x90,0x28,0x69,0x7f,0x74,0x1b,0x1f,0x76,0x40,0xb7,0x03,0x0b,0x6d,0xe1,0x75,
- 0x06,0x9c,0x18,0x82,0xea,0x50,0x33,0xfe,0x5d,0x97,0x5c,0xf8,0x50,0xcd,0xc1,0x87,
- 0x46,0x66,0xdf,0xec,0xdc,0x9f,0xfd,0x67,0xc8,0x44,0x6b,0xdd,0xb6,0xb0,0xcf,0x16,
- 0x5e,0x00,0x86,0x3f,0x43,0x6d,0xb2,0x7b,0xbc,0x8d,0xdf,0xd0,0xff,0x9a,0x42,0xa9,
- 0x23,0x74,0x03,0x13,0x42,0x4c,0x70,0x3d,0x8f,0x30,0x35,0x3e,0x34,0x05,0xc9,0xfa,
- 0x43,0x99,0xfb,0x47,0x84,0xa9,0xef,0xaf,0x9a,0x82,0x89,0x87,0x4b,0xdd,0xcf,0xa3,
- 0x4b,0x11,0x66,0x9b,0xd9,0x2f,0x6a,0x0b,0xa5,0x2e,0xc1,0x0c,0x89,0x94,0xb6,0x3a,
- 0xcf,0xd3,0xc1,0x96,0xeb,0x02,0x5a,0x11,0x2d,0xa8,0x64,0x10,0xf2,0x73,0x54,0x8d,
- 0x4a,0x28,0x2c,0xc8,0x16,0x16,0x64,0x96,0x4f,0x07,0x22,0x26,0xf6,0x9b,0x33,0xbc,
- 0xc4,0xfe,0x8b,0xea,0x60,0xed,0x95,0x9c,0x4d,0x13,0x13,0xc0,0xb5,0x3e,0xf5,0x9b,
- 0x3e,0xcf,0xd0,0x60,0x4f,0xf4,0xaa,0x08,0x5c,0x42,0x4a,0xe9,0x4f,0x39,0x2c,0xb4,
- 0xf1,0x61,0xbb,0xf8,0x39,0x38,0xbc,0xe0,0xda,0x48,0xb1,0xee,0xc2,0x63,0x37,0x4b,
- 0xf7,0x74,0x55,0x31,0x50,0x57,0xfa,0x12,0x17,0xa6,0xd9,0xc2,0x67,0x98,0x50,0x78,
- 0x4f,0xd7,0xe6,0xe8,0x5f,0x57,0x96,0x1a,0x99,0xfb,0x0b,0x37,0x33,0x58,0xb8,0x39,
- 0x7a,0x35,0xfb,0x96,0x0b,0x9f,0xa9,0x2c,0x7a,0xc9,0xba,0x52,0xf4,0x12,0xdc,0x43,
- 0xab,0x18,0x50,0x74,0x8d,0x8f,0xd8,0xf8,0xb0,0x12,0x5e,0x2a,0x30,0x61,0xe4,0xf4,
- 0x97,0xac,0x2b,0xd3,0x5f,0xaa,0x98,0x45,0xbd,0xec,0x0e,0xc5,0xfb,0x32,0xbf,0x17,
- 0x83,0xc1,0x1c,0x1f,0x32,0xef,0xc9,0xcc,0xce,0x2d,0xa6,0xfd,0xa9,0x45,0xfb,0xd3,
- 0x21,0x6d,0x14,0xd0,0xfe,0x94,0x2f,0x96,0xa8,0x13,0x62,0xd2,0xd9,0xba,0x5d,0x46,
- 0x2b,0xa3,0x85,0xfd,0xea,0x63,0x4c,0xb8,0x2c,0x5a,0x58,0x29,0xac,0x81,0x65,0x3d,
- 0x95,0x5c,0x90,0x96,0x75,0x55,0x46,0x6f,0xee,0x17,0x32,0xbf,0x17,0xc3,0xf3,0xd2,
- 0xaa,0xea,0x12,0xb9,0x2d,0x06,0xc9,0x9e,0xb9,0xc2,0x0c,0x10,0x69,0x29,0x1e,0x74,
- 0x3b,0x03,0x3e,0x93,0x11,0x04,0xc3,0xb5,0x7e,0x6e,0x83,0x28,0xe2,0xc3,0xc5,0xd8,
- 0xdd,0x9e,0x5e,0xca,0x96,0x0d,0x83,0x85,0xcb,0x11,0x16,0x76,0x08,0x1b,0x4d,0xa0,
- 0xd8,0xe1,0xba,0xbf,0x5e,0x40,0x24,0x6d,0x0b,0x5f,0x3f,0xeb,0x10,0x0d,0x26,0x0b,
- 0x39,0x3e,0x74,0x80,0x22,0x17,0xd8,0x6b,0x9d,0xf9,0xbd,0x88,0xa4,0x0f,0x55,0x84,
- 0x6e,0x62,0x2f,0x88,0x14,0x61,0xcb,0xec,0x33,0x72,0x29,0xbb,0xb2,0x5a,0xd5,0xda,
- 0x99,0x00,0x3a,0x33,0x00,0x0c,0x91,0x42,0x69,0x66,0xbe,0xec,0x7d,0x31,0x2a,0x42,
- 0x6c,0xe7,0xe1,0x61,0x2f,0x54,0x45,0x52,0xf0,0x0a,0x6d,0x10,0xc1,0x2b,0x8e,0x20,
- 0xb3,0x51,0xba,0x33,0x5e,0x06,0xd5,0xc4,0x87,0xa0,0xfb,0x99,0xda,0x04,0x17,0x3e,
- 0xb4,0x05,0x17,0x3e,0x64,0xef,0x97,0xbf,0x0c,0xf1,0xa1,0xa7,0x9f,0xf8,0x99,0xe1,
- 0xf6,0x0b,0x0e,0x3e,0xf4,0xa2,0x90,0x84,0x80,0x56,0x44,0x75,0x97,0x7e,0x74,0x6a,
- 0xda,0x9f,0x52,0xb6,0xea,0x84,0x4a,0xf9,0xcb,0x6e,0xfb,0x73,0x73,0xb4,0xb4,0x5f,
- 0xfa,0xb2,0x78,0xad,0x4b,0x3f,0x82,0xbe,0x75,0x39,0x5c,0x0a,0x33,0xf5,0xa2,0x44,
- 0x2c,0x0a,0x0f,0xcb,0xcc,0xec,0x24,0x6c,0xfb,0x93,0xd0,0x3b,0xd5,0x2a,0x98,0x26,
- 0x16,0xb9,0xdf,0xaf,0x65,0xd2,0x5c,0x28,0x81,0xb6,0x18,0xc5,0xdf,0xab,0x44,0x6a,
- 0xa3,0x6a,0x5a,0x62,0x02,0xa0,0x50,0xbb,0xa2,0xe8,0x32,0x72,0x73,0x57,0x22,0xf3,
- 0x7b,0x45,0xd8,0xeb,0x72,0x7d,0xb4,0xe4,0x0e,0xf1,0x21,0xf8,0x67,0x1a,0xd2,0xbd,
- 0xaa,0x28,0xc1,0xcb,0x60,0x09,0x43,0x98,0xf5,0x60,0xea,0x05,0xd7,0x7a,0x86,0x02,
- 0xb8,0xd6,0x28,0x8e,0x30,0x18,0xb9,0x09,0x66,0xe9,0xc5,0xba,0x58,0x01,0x3f,0x65,
- 0x82,0x37,0x22,0xaa,0xf0,0xd3,0xda,0x59,0x0b,0xbc,0x91,0x36,0x15,0xf6,0xb9,0x9e,
- 0xa7,0x4d,0x8a,0x0e,0x55,0x76,0xb2,0xdf,0x77,0x2d,0x0a,0xa1,0x9b,0xbd,0xa5,0xdd,
- 0xb6,0xe0,0x58,0x0c,0xf7,0xfa,0xd1,0xa1,0x06,0x03,0xc1,0xaa,0x15,0x2c,0x14,0x21,
- 0x93,0x57,0x59,0x6d,0x19,0x46,0xf7,0xfa,0x11,0x3a,0xda,0x11,0x1f,0xde,0x2c,0x40,
- 0x4f,0xfb,0x5d,0x28,0x54,0x3b,0xf8,0x90,0x09,0x4d,0xa5,0xde,0x9e,0xb6,0x6a,0xd5,
- 0xbd,0x7e,0xf4,0xf6,0x3b,0x4a,0xa7,0x57,0xdc,0xf4,0x19,0x55,0x6d,0x8f,0x94,0x56,
- 0x48,0x9f,0x13,0x4a,0xf5,0x76,0x66,0x7f,0xa4,0x9b,0x98,0x00,0xfc,0x97,0x17,0x54,
- 0xd7,0xef,0x05,0xb8,0x00,0xef,0xb0,0x4d,0xa0,0x1a,0x2b,0xb0,0x96,0x41,0x0c,0xd7,
- 0x83,0xbd,0x48,0xc1,0xe5,0xc1,0x18,0x3e,0xec,0xc2,0x9f,0x9d,0x03,0x45,0x9d,0x09,
- 0x12,0x07,0x8a,0x88,0x0f,0x15,0x4b,0xe8,0x71,0xaf,0x9f,0xcf,0xd6,0x94,0x2f,0xe8,
- 0x19,0xad,0x9e,0x0d,0x9f,0x25,0xe5,0xfa,0x61,0x26,0x14,0x7f,0x56,0xbc,0x9d,0x09,
- 0xd7,0xba,0x04,0xf7,0xfa,0xe9,0xe0,0xf8,0xf0,0x33,0xfe,0xd2,0xfd,0xed,0x1c,0x06,
- 0x38,0x78,0x40,0x2b,0xdd,0x5f,0x78,0xaf,0xb0,0x99,0xfe,0xb5,0xe6,0xb2,0x27,0xcc,
- 0x5f,0x2f,0xb4,0xf0,0xa1,0xb2,0x70,0x21,0xe2,0xc3,0x1f,0x59,0xf8,0x70,0x5b,0x06,
- 0x1f,0x5e,0xe3,0x1a,0x0e,0x1c,0x7d,0x21,0x3e,0xbc,0xe1,0x5b,0x4b,0x10,0x1f,0x9e,
- 0xb7,0x80,0xd9,0x89,0xff,0x4d,0xf8,0x90,0xc3,0xc2,0x77,0x13,0xe7,0xcf,0xb6,0x9c,
- 0x34,0x81,0xa2,0x8d,0x0f,0x37,0xfe,0x83,0x73,0xc5,0x3d,0x9e,0xff,0xf5,0x3f,0x8e,
- 0xb1,0xf1,0xe7,0x4c,0xa0,0x68,0xe3,0xc3,0xf7,0x33,0x57,0xb2,0xc6,0xcf,0xb0,0xf0,
- 0x61,0xcd,0x8c,0x5b,0x7f,0xb5,0x71,0x96,0x89,0x0f,0x71,0xd8,0xb1,0xaf,0xdf,0xb0,
- 0x6a,0x2a,0x7c,0xf8,0x27,0x7d,0x42,0xa0,0x09,0xec,0xb5,0x66,0xff,0xdf,0xe6,0xfd,
- 0x9f,0xbf,0xcb,0xc5,0xcf,0xc5,0xcf,0xc5,0xcf,0xc5,0xcf,0xc5,0xcf,0xc5,0xcf,0xc5,
- 0xcf,0xc5,0xcf,0xc5,0xcf,0xc5,0xcf,0xc5,0xcf,0xff,0xbf,0x7f,0xf8,0xde,0x41,0xba,
- 0xb8,0x77,0xb8,0xf8,0xb9,0xf8,0xb9,0xf8,0xb9,0xf8,0xb9,0xf8,0xb9,0xf8,0xb9,0xf8,
- 0xb9,0xf8,0xb9,0xf8,0xb9,0xf8,0xb9,0xf8,0xf9,0xe4,0x0f,0xdf,0x3b,0x14,0x5e,0xdc,
- 0x3b,0x5c,0xfc,0x5c,0xfc,0x5c,0xfc,0x5c,0xfc,0x5c,0xfc,0x5c,0xfc,0x5c,0xfc,0x5c,
- 0xfc,0x5c,0xfc,0x5c,0xfc,0x5c,0xfc,0x7c,0xf2,0x87,0xef,0x1d,0x64,0xbe,0x77,0xf8,
- 0x3f,0xfd,0x28,0x17,0x3f,0x17,0x3f,0x17,0x3f,0x17,0x3f,0x17,0x3f,0x17,0x3f,0x17,
- 0x3f,0x17,0x3f,0x17,0x3f,0x17,0x3f,0x17,0x3f,0xff,0x2f,0x7e,0x42,0x58,0x1f,0x07,
- 0x3f,0x5b,0x19,0x02,0xde,0x03,0x40,0x0c,0x81,0xfe,0x27,0xe7,0x13,0xac,0x7f,0x5b,
- 0x10,0x82,0xa4,0x90,0xb9,0xe7,0xd1,0x2f,0xe4,0x8e,0xfb,0xbf,0x01,0x1e,0x39,0x58,
- 0x36,0xf1,0x33,0x01,0x00,
diff --git a/board/esd/voh405/logo_320_240_4bpp.c b/board/esd/voh405/logo_320_240_4bpp.c
deleted file mode 100644
index e9f8cb4002..0000000000
--- a/board/esd/voh405/logo_320_240_4bpp.c
+++ /dev/null
@@ -1,77 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x7f,0x95,0xab,0x3f,0x00,0x03,0x50,0x50,0x43,0x5f,0x53,0x74,
- 0x61,0x72,0x74,0x6c,0x6f,0x67,0x6f,0x5f,0x31,0x36,0x67,0x2e,0x62,0x6d,0x70,0x00,
- 0xed,0x9b,0xcb,0x71,0xe3,0x38,0x10,0x86,0x7b,0xaa,0xe6,0xb6,0x87,0x2e,0x4f,0x08,
- 0x3e,0xed,0xdd,0x09,0x6c,0x6d,0xf9,0x3a,0x47,0xa7,0xe0,0x10,0xc6,0x29,0x38,0x82,
- 0xad,0x72,0x0a,0x4e,0xc1,0x29,0x38,0x05,0xa7,0xe0,0xea,0x0c,0x30,0x12,0x89,0x06,
- 0x1a,0x4f,0x3d,0x2c,0x01,0x9c,0xad,0xff,0xf3,0x48,0xa2,0x44,0x82,0xf8,0xd8,0x20,
- 0x5e,0x24,0xe7,0xdf,0x9f,0xbf,0xfe,0xa3,0x85,0x5f,0xbb,0xd7,0xdf,0xbb,0xd7,0x3f,
- 0xdf,0x88,0x64,0xf7,0xf9,0x8d,0xbe,0x93,0xf2,0xe3,0xaf,0xf5,0x65,0xb9,0xb9,0xb9,
- 0xa1,0xdb,0xdb,0x5b,0xba,0xbb,0xbb,0xa3,0xfb,0xfb,0x7b,0x7a,0x78,0x78,0xa0,0xc7,
- 0xc7,0x47,0x7a,0x7a,0x7a,0xa2,0xe7,0xe7,0x67,0x7a,0x79,0x79,0xa1,0xd7,0xd7,0x57,
- 0x7a,0x7b,0x7b,0xa3,0xf7,0xf7,0x77,0xfa,0xf8,0xf8,0xa0,0xcf,0xcf,0x4f,0x72,0xce,
- 0xed,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0x02,0xa1,0x8b,0x03,0x3f,0xf8,0xc1,0x0f,0x7e,0xf0,0xfb,0xb3,0xfd,0xf6,0x59,0xf3,
- 0x66,0xfd,0xc2,0xe6,0x7d,0xc5,0x49,0x7e,0xfb,0xcd,0x84,0x59,0xd8,0x1d,0x48,0x30,
- 0xc7,0x6f,0xd9,0x88,0x77,0x7f,0x3b,0x41,0xd7,0x0d,0xe1,0x14,0xbf,0x45,0x88,0x97,
- 0x7f,0xb2,0x38,0xb4,0x05,0x67,0xf8,0x2d,0x3a,0xb2,0x2a,0x2e,0xff,0xcb,0xb0,0x23,
- 0x38,0xc1,0x6f,0xd5,0xf3,0x21,0x5c,0xdf,0xa4,0x99,0x68,0xbc,0x9f,0x04,0xab,0xf5,
- 0x4d,0x5c,0x4f,0x70,0xb8,0xdf,0x6a,0xb2,0x48,0xad,0x7e,0xde,0xb2,0x51,0xc2,0xc3,
- 0xfd,0x28,0x37,0xf3,0xae,0x8d,0x64,0xa3,0xfd,0x24,0x96,0xa9,0xfa,0xf9,0x00,0xd6,
- 0xd3,0x8d,0xf6,0xb3,0xe1,0xd3,0x0f,0x31,0xe6,0x93,0xfd,0xba,0xd9,0x6d,0xc0,0x8f,
- 0x4c,0xc0,0x42,0xfc,0x7a,0x01,0x1c,0xeb,0x27,0xb6,0x5e,0xc4,0x4f,0x97,0xfe,0x3c,
- 0xcf,0x2f,0x0d,0x5f,0xee,0x57,0x4b,0x39,0xd4,0x2f,0x0b,0x5f,0x5c,0x68,0x17,0xf0,
- 0x58,0xbf,0x6a,0xd8,0xba,0x01,0x1c,0xea,0x97,0x15,0x6f,0xe1,0x27,0xae,0x60,0xa4,
- 0x5f,0x5e,0xbc,0x66,0xa9,0x59,0xc0,0x43,0xfd,0xea,0x51,0x33,0xab,0xca,0xb4,0x23,
- 0xfd,0x7a,0x35,0xbb,0x55,0xc0,0x98,0x5f,0xfe,0x39,0x7e,0xbb,0x21,0x8a,0x0e,0x9d,
- 0xd7,0x8d,0x74,0x58,0xef,0xc7,0xf7,0x93,0xdb,0xbf,0x5d,0x56,0x9c,0xf8,0x91,0xce,
- 0xdc,0x7c,0xa2,0xc9,0x7e,0xe4,0x0d,0xd4,0x4f,0x38,0x8e,0x9d,0xc3,0x8a,0x89,0x7e,
- 0x6c,0xfc,0x74,0xe6,0x46,0xce,0x2c,0xcc,0xf5,0x0b,0x33,0x36,0xeb,0x27,0x9b,0xf2,
- 0x5b,0xcf,0x37,0xbd,0x2e,0x54,0xfa,0x51,0x79,0x29,0xa1,0xea,0xb7,0xac,0x89,0x5f,
- 0xf9,0xb4,0x23,0xe9,0xc5,0xcf,0x2f,0x48,0x33,0x7e,0x79,0xea,0x4a,0xae,0x9c,0xad,
- 0x0a,0x87,0xb4,0x5b,0x32,0x0d,0xbc,0x6d,0xeb,0xcd,0x51,0x1f,0xe5,0x17,0x95,0x8e,
- 0xf5,0xe3,0xb0,0xc8,0xd9,0x3a,0xf3,0xfd,0x4b,0x7e,0x49,0xfd,0x50,0xb7,0xa2,0x7e,
- 0xb4,0xfc,0xd6,0x5d,0x67,0xc5,0x23,0x45,0x71,0x7d,0xc5,0x8f,0xf4,0x5a,0x41,0x6c,
- 0x5f,0xd6,0x98,0x9e,0xe4,0x97,0x9c,0xa0,0x14,0x5b,0xd0,0xa2,0x03,0x3f,0xd9,0x4f,
- 0x7c,0x36,0xa1,0x1a,0x84,0x33,0xdd,0x1d,0xac,0x1f,0x1c,0x96,0xfd,0xaf,0xc1,0x4f,
- 0x3f,0xc9,0x4e,0xac,0xcf,0xf2,0x2b,0xa7,0xe0,0x47,0x74,0xd5,0xb9,0x9f,0x1e,0x58,
- 0x38,0xd4,0xf0,0xdd,0x5c,0x37,0xa9,0xfa,0x1d,0xaa,0xbf,0xe7,0x21,0x66,0x9f,0xb6,
- 0x00,0xd4,0x94,0x5d,0x72,0x0c,0x62,0x44,0xe2,0x1a,0x3a,0xe4,0x57,0x36,0x12,0x7d,
- 0xf2,0x3a,0x9a,0x16,0xa7,0x3d,0x25,0x4d,0xce,0x13,0xfd,0x58,0x77,0xc3,0x59,0xa6,
- 0x72,0x19,0xbf,0xf3,0x09,0x7e,0xf1,0x42,0xb0,0xcd,0x48,0x74,0x13,0x73,0x29,0x67,
- 0x82,0x9f,0x5b,0x4b,0xf2,0x9a,0x7e,0xc2,0xbe,0x02,0x53,0xda,0xd8,0x2d,0x27,0x3d,
- 0xfb,0x2a,0xb9,0x16,0x97,0x6d,0x63,0x32,0x3f,0x93,0xa7,0x89,0xea,0x25,0xfc,0xa8,
- 0xe1,0xb7,0xef,0x34,0xc9,0xfa,0x49,0xdb,0xcf,0x5d,0xd3,0x8f,0xaa,0x7e,0xe2,0xf3,
- 0x26,0x13,0xe4,0xc2,0x8f,0xb5,0xa5,0xab,0xfa,0x91,0xc5,0x24,0xcc,0xfc,0xc2,0xfe,
- 0x3a,0x7e,0x12,0xfd,0xfc,0x4b,0x7b,0xe4,0xe8,0x47,0xd2,0xf6,0x0b,0xe1,0xba,0xbc,
- 0x1f,0x8b,0xcf,0x3a,0xf5,0xd3,0x89,0x47,0xf0,0x93,0x8a,0x9f,0xd3,0x9e,0xb6,0xea,
- 0x27,0x97,0xf0,0x93,0xa3,0xfd,0x78,0x96,0x1f,0x3b,0x56,0x3f,0x3d,0x65,0xfd,0x29,
- 0x68,0xeb,0x07,0xb9,0x8e,0x9f,0xe3,0x6b,0xfa,0xed,0x0d,0xcf,0xf1,0xe3,0xa8,0xd9,
- 0x6c,0xff,0xcc,0x6f,0x76,0xb5,0xf1,0x2b,0x0f,0x21,0xf5,0x5b,0xa2,0x47,0xd5,0xf2,
- 0x75,0x2e,0x94,0x6f,0x18,0x14,0xd6,0xfd,0x5c,0xee,0x97,0xe4,0xfc,0x05,0x3f,0x72,
- 0x99,0x9f,0x39,0x15,0xad,0x9f,0x56,0x69,0xeb,0xa7,0x3b,0xcf,0xca,0x33,0xef,0x7f,
- 0x35,0x9e,0xe7,0xfa,0x91,0xb8,0xd2,0x2f,0x6f,0x5f,0x8e,0xf0,0x2b,0xc6,0x2f,0x72,
- 0x21,0x3f,0x52,0x13,0xed,0x0f,0x54,0x26,0xb6,0xcf,0xc4,0x55,0xbf,0x38,0xca,0x8a,
- 0x3e,0x7e,0x29,0x0a,0x6b,0x07,0x73,0x8e,0x9f,0xf8,0xae,0xc2,0xfb,0xed,0xf1,0xb9,
- 0x2c,0xfd,0x9b,0x0e,0x89,0x25,0x9c,0x53,0xc6,0x8f,0x73,0xbf,0x38,0x90,0x16,0x33,
- 0x60,0x8d,0x53,0x99,0xba,0x9f,0x06,0xaa,0xee,0xc7,0xb9,0x1f,0x7b,0x3f,0x9f,0xd7,
- 0xb1,0x7e,0xe9,0x15,0x4c,0xe3,0xc9,0x1a,0x86,0x90,0xf2,0x14,0xbf,0x0e,0xbd,0xbb,
- 0xfb,0xa1,0xdf,0x0d,0xd9,0x54,0x1b,0xc7,0x6a,0xe6,0x97,0xf2,0xeb,0x53,0xf8,0xd9,
- 0xdd,0xe7,0x79,0xcb,0x0c,0xbf,0x6c,0x04,0x6f,0xf2,0x2a,0x32,0xa7,0xaf,0xf9,0xf9,
- 0x35,0xa6,0xb3,0x89,0xeb,0xd8,0x6e,0x91,0xfb,0x85,0x1e,0x62,0xd9,0xbf,0xa6,0x0f,
- 0x15,0xb2,0xf8,0xa1,0x4f,0x3b,0x16,0xdc,0xf4,0x2b,0x6e,0x3d,0x44,0xbf,0x46,0x0e,
- 0x76,0x05,0x9f,0xa2,0xd7,0x29,0x5f,0xae,0x5b,0x85,0xa5,0xc9,0xf7,0x67,0x8a,0xfb,
- 0x5b,0xf9,0x9d,0xae,0x4a,0xd2,0x9a,0x1f,0x2f,0xdb,0x5f,0xc1,0x2f,0x2f,0xe0,0xdc,
- 0xaf,0xd2,0xd0,0x0c,0xf5,0xcb,0x35,0x24,0x5d,0x38,0xf6,0xfa,0xee,0xf5,0xfc,0xb2,
- 0x02,0xce,0x6e,0x54,0xd7,0x52,0x8e,0xf5,0xcb,0x0a,0x58,0x92,0xcf,0x0d,0x3c,0x7f,
- 0xd0,0x3f,0xe8,0xea,0x11,0x8d,0xf5,0x4b,0x03,0x98,0x3c,0xc7,0xb1,0x89,0xe7,0x5f,
- 0xd2,0xe7,0x73,0xc4,0x7e,0x34,0xe6,0x05,0x83,0xfd,0xec,0xe3,0x61,0x49,0xaf,0xd1,
- 0x78,0x40,0x6c,0xb4,0x9f,0xef,0xdf,0x6d,0x4f,0xb2,0xa9,0xe7,0xc3,0xe2,0x8c,0x3c,
- 0x98,0x71,0xd4,0xde,0x82,0x9f,0x29,0xe1,0xf8,0xd6,0x1c,0xa3,0x8e,0xf7,0xf3,0x82,
- 0xec,0xd5,0xd6,0x09,0x5c,0x33,0xd1,0x04,0x3f,0x17,0x67,0xfe,0xea,0xd9,0x19,0x93,
- 0x4d,0xf0,0x73,0x7a,0x2d,0x4f,0x74,0xc2,0xd5,0xde,0x74,0x8a,0xdf,0x3a,0x2a,0xde,
- 0x4d,0xd7,0xf6,0x86,0xcd,0x2b,0x72,0x13,0xfd,0xd6,0x99,0x21,0x89,0x30,0x1d,0x78,
- 0x00,0x7f,0x96,0x5f,0x6d,0xea,0xb2,0x29,0xbf,0x23,0x81,0x1f,0xfc,0xe0,0x07,0x3f,
- 0xf8,0x6d,0xd3,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5c,0x8e,0xdf,
- 0xe3,0xb7,0xe4,0x39,0x76,0x96,0x00,0x00,
diff --git a/board/esd/voh405/logo_640_480_24bpp.c b/board/esd/voh405/logo_640_480_24bpp.c
deleted file mode 100644
index 7d3c7a3a94..0000000000
--- a/board/esd/voh405/logo_640_480_24bpp.c
+++ /dev/null
@@ -1,1722 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0x70,0xff,0xbe,0x40,0x00,0x03,0x65,0x73,0x64,0x5f,0x77,0x65,
- 0x6c,0x6c,0x65,0x5f,0x36,0x34,0x30,0x78,0x34,0x38,0x30,0x5f,0x32,0x34,0x2d,0x62,
- 0x69,0x74,0x2e,0x62,0x6d,0x70,0x00,0xec,0x9d,0x77,0x7c,0x54,0xd7,0x95,0xc7,0xc9,
- 0xfe,0xbb,0x9b,0xac,0x77,0xd7,0xd9,0xc4,0x59,0x27,0xbb,0x9b,0xac,0x5b,0x12,0x3b,
- 0xce,0x92,0xf5,0xc6,0x66,0x1d,0x17,0xec,0x34,0x57,0x6c,0xe3,0xde,0x6d,0xec,0x38,
- 0x2e,0xb8,0x42,0x5c,0xc0,0x54,0xd3,0x8b,0x11,0x45,0x14,0x61,0x04,0x98,0x66,0x84,
- 0x31,0x18,0x30,0x1d,0x51,0x0c,0x02,0x09,0x19,0x84,0x85,0x10,0x48,0x02,0x09,0x90,
- 0x84,0xba,0x46,0x1a,0x95,0xd1,0x9c,0xbb,0xf7,0xbc,0x69,0xef,0xcd,0xbc,0x72,0xef,
- 0x9b,0xf7,0x66,0x46,0xd2,0xf9,0x7d,0x7e,0xf0,0x11,0x42,0x7a,0xa3,0x11,0xe8,0x7d,
- 0xe7,0x94,0x7b,0xce,0xad,0x77,0x5d,0x77,0xd1,0xf7,0xfa,0xa0,0xae,0xe3,0xbf,0xae,
- 0xe4,0xbf,0x46,0xfc,0x5d,0x9f,0x3e,0xa7,0xbf,0xd3,0xa7,0xcf,0x77,0xfa,0xfc,0x50,
- 0x79,0x7f,0x1f,0xfe,0xf7,0x3f,0xbb,0xa6,0x8f,0xf2,0x2b,0x24,0x46,0x22,0x91,0x92,
- 0x28,0x00,0xb4,0xdf,0xcf,0xfc,0x5d,0xac,0xb3,0x3d,0xe8,0x76,0x0f,0xf3,0x36,0xb1,
- 0x96,0x3a,0xe6,0xa9,0x61,0x4d,0x95,0xac,0xe1,0x2c,0xab,0x2b,0x0f,0xba,0xb6,0x8c,
- 0x5d,0x38,0x05,0xd5,0xc5,0x50,0x76,0x10,0xca,0x72,0xa0,0x68,0x27,0x1c,0xdb,0x04,
- 0x05,0x1b,0x61,0xef,0x42,0xd8,0x9b,0x01,0x5b,0xa7,0xc2,0x97,0xa3,0x60,0xfd,0x08,
- 0x58,0xf6,0x57,0x58,0xfa,0x17,0x58,0xfa,0x42,0xd0,0xe9,0xf7,0xc3,0x8c,0x3b,0xd0,
- 0xe3,0x6f,0x80,0xd1,0xbf,0x82,0x51,0xd7,0xc0,0x48,0xee,0x5f,0x06,0x3d,0xfc,0x2a,
- 0x78,0xfd,0xa2,0xa0,0x07,0x5f,0x04,0xaf,0x7d,0x4f,0xf1,0x77,0xd1,0xaf,0xfe,0x43,
- 0xc4,0xaf,0xfc,0x3d,0xfe,0xfe,0xc6,0xc5,0x30,0xf4,0xc7,0xf0,0xde,0x4f,0x61,0xd8,
- 0x95,0x78,0x91,0xc9,0xb7,0x40,0xfa,0x7d,0x30,0x77,0x20,0xac,0x78,0x0d,0xd6,0x7d,
- 0x08,0x9b,0x27,0xa2,0xb7,0x7f,0x0c,0x47,0xd6,0xc1,0xc9,0xbd,0x21,0xef,0x81,0xca,
- 0xc2,0xe0,0x33,0x65,0x51,0x26,0x91,0x48,0x24,0x12,0xc9,0x1d,0xf9,0x14,0x9e,0x72,
- 0x98,0x72,0x8c,0xd6,0x94,0xb2,0xaa,0x22,0x56,0x9e,0x8f,0x3e,0x93,0xc7,0x4e,0xed,
- 0x83,0xe3,0xdb,0xe1,0xd8,0x57,0x90,0xb7,0x1a,0x72,0x57,0xc1,0xae,0x39,0x41,0x6f,
- 0x1c,0x0b,0x5f,0x0c,0x47,0xa2,0x2d,0x79,0x01,0x16,0x3c,0x0a,0x33,0xef,0x86,0x69,
- 0xb7,0x2b,0xbe,0x0d,0xc6,0x5d,0x0f,0xa3,0xae,0x45,0xf0,0x0d,0xbf,0x02,0x86,0x5d,
- 0x8e,0x1c,0x1c,0x72,0x69,0xc8,0xff,0x06,0x43,0x7e,0x14,0xf4,0x3b,0x8a,0xdf,0xfe,
- 0xa1,0xe2,0x1f,0xa0,0xdf,0xfa,0xd7,0xa0,0xdf,0xfc,0x3e,0xbc,0x79,0x31,0xbc,0xf1,
- 0x2f,0xf0,0xfa,0x3f,0x87,0x7c,0x91,0x96,0xbf,0xff,0xa8,0xe2,0xef,0x77,0xe1,0xed,
- 0x4b,0x60,0xe4,0xd5,0x30,0xe5,0x56,0x98,0x73,0x1f,0x2c,0x1e,0x04,0x1b,0x3f,0x82,
- 0x43,0x2b,0xe0,0x44,0x36,0x9c,0x3b,0x06,0x9e,0x1a,0xe8,0x68,0x55,0xc0,0xea,0x8f,
- 0x35,0xf8,0xbb,0x2c,0xcd,0xd4,0xc6,0xcf,0x0a,0x30,0x9a,0x44,0x22,0x91,0x48,0x24,
- 0x33,0x41,0x57,0x27,0x74,0x78,0xa1,0xad,0x19,0x5a,0xeb,0xa1,0xbe,0x1c,0xce,0x17,
- 0x42,0xc9,0x7e,0x28,0xdc,0x06,0x87,0xd7,0xc0,0xfe,0x25,0x90,0x9d,0x0e,0xd9,0x73,
- 0x60,0xcb,0x64,0x8c,0x49,0xd7,0xbc,0x0b,0xcb,0x5f,0x85,0xcc,0xe7,0x20,0xe3,0x71,
- 0x98,0x75,0x0f,0x3a,0xed,0x0e,0x98,0x7c,0x33,0x4c,0xb8,0x01,0xc6,0xf6,0xc5,0x08,
- 0xf4,0x83,0xcb,0x55,0xfe,0xaf,0x88,0xdf,0x57,0xcc,0x39,0x8b,0xfe,0x4f,0x78,0xf7,
- 0x3f,0x22,0xfe,0xdb,0x4f,0xd0,0x11,0xfe,0x5e,0x1a,0xe1,0xef,0x10,0x63,0xfe,0x22,
- 0x82,0x2f,0x46,0x1b,0xf1,0x97,0xa3,0x99,0x7f,0x3d,0x1f,0xff,0x11,0x83,0xe8,0x75,
- 0x23,0x60,0xf7,0x5c,0x76,0x6c,0x13,0x3b,0x77,0x8c,0x35,0x57,0xb3,0xae,0x4e,0xdb,
- 0xa8,0x8d,0x30,0x97,0x5f,0x24,0xe2,0x0e,0xad,0x95,0x77,0xfa,0x7d,0x8a,0xbb,0x80,
- 0x88,0x4c,0x22,0x91,0x48,0xbd,0x55,0x10,0x10,0x67,0x41,0xc3,0x39,0xa8,0x2c,0x84,
- 0x8a,0xa3,0x70,0x62,0x17,0xe4,0x7f,0x0e,0xfb,0x16,0xc2,0xe6,0xc9,0x88,0xa7,0xd5,
- 0x6f,0xc3,0xa7,0x4a,0xb2,0x77,0xd1,0x33,0x30,0xff,0x61,0x98,0x7d,0x2f,0x4c,0xff,
- 0x23,0x82,0x95,0x07,0xaa,0x63,0xfa,0xc2,0x98,0x5f,0xc3,0xe8,0x6b,0x61,0x54,0x28,
- 0xe5,0x3b,0xe2,0x97,0x8a,0x7f,0x81,0xfe,0xf0,0xe7,0x21,0x5f,0x05,0xc3,0xaf,0x84,
- 0x61,0x57,0x08,0xf1,0x57,0x8d,0x60,0x4b,0xfe,0xbe,0x73,0x89,0x41,0x08,0x1c,0xc5,
- 0xdf,0x7f,0x42,0xf2,0xf2,0x4b,0xa5,0x3f,0x80,0xe1,0x6d,0xce,0x52,0x1e,0x98,0xb3,
- 0xca,0xe3,0x98,0xfd,0xee,0x6c,0x0b,0x45,0xa6,0xee,0x31,0x37,0xda,0xe0,0x6b,0x0f,
- 0x99,0xbf,0xdd,0xc9,0xcd,0x71,0x4c,0x2c,0x26,0x91,0x48,0xa4,0x9e,0xa2,0x50,0xd6,
- 0x34,0x48,0x87,0x0e,0xc6,0x6f,0xf8,0xed,0x1e,0xa8,0x3f,0x8b,0xd5,0xd5,0xf2,0xc3,
- 0x70,0x74,0x03,0xec,0x5d,0x00,0xeb,0x47,0x21,0x5e,0xd3,0x07,0xc2,0xcc,0xbb,0x20,
- 0xed,0xcf,0x30,0xe3,0x4f,0x30,0xed,0xf7,0x30,0xb5,0x3f,0x4c,0xfa,0x1d,0x4c,0xe8,
- 0x07,0xe3,0x7f,0x0b,0xe3,0xae,0x83,0xb1,0xbf,0x09,0x7a,0xcc,0x7f,0xa3,0x47,0x5d,
- 0xab,0xf2,0x35,0x11,0x8f,0xd4,0x22,0x38,0xc2,0xdf,0x9f,0x23,0x7f,0xb9,0x75,0x43,
- 0x60,0x13,0xfe,0xea,0x20,0xf8,0x47,0x42,0x29,0x68,0xf4,0xf7,0xe1,0xad,0x1f,0xc0,
- 0xd0,0x4b,0x61,0xf2,0x4d,0x18,0x98,0xe7,0xad,0x86,0x9a,0x52,0xe6,0xa9,0x65,0x1d,
- 0xad,0x4a,0x90,0xab,0x9f,0x52,0x96,0xc7,0xae,0x05,0x6a,0x35,0xd8,0xed,0x6c,0xd7,
- 0xb3,0x37,0xe4,0x36,0xf0,0x71,0x63,0x8c,0x8c,0x57,0x26,0x10,0x93,0x48,0x24,0x52,
- 0xb7,0x10,0x67,0x07,0x0f,0xe5,0xbc,0x8d,0xac,0xa9,0x8a,0xd5,0x95,0x43,0x65,0x11,
- 0x9c,0xce,0x85,0x63,0x9b,0x21,0xff,0x0b,0xd8,0x33,0x1f,0x83,0xbe,0x55,0x6f,0xc2,
- 0xc2,0x27,0xb0,0x43,0x69,0x8a,0xc2,0xd6,0x89,0xff,0x87,0x9e,0xa0,0x78,0xfc,0x0d,
- 0x8a,0x7f,0x1b,0xf4,0x38,0xc5,0x1f,0x5d,0xa7,0xf8,0x7f,0xd0,0x61,0xfe,0xea,0x20,
- 0xd8,0x98,0xbf,0x6a,0x04,0x9b,0xf0,0xf7,0x03,0x29,0xfe,0x5e,0x6a,0xc1,0x5f,0xfe,
- 0x36,0x0f,0xb7,0xf9,0x13,0xe4,0xa1,0x7a,0x76,0x3a,0x54,0x1e,0x87,0x2e,0x5f,0x30,
- 0xae,0x8c,0x97,0xb9,0xbe,0x80,0x1d,0x65,0xae,0x99,0xf1,0xf5,0x52,0x97,0x8f,0x11,
- 0x8b,0x49,0x24,0x12,0x29,0x75,0xe4,0xeb,0x64,0xed,0xcd,0xac,0xb1,0x92,0x55,0x9f,
- 0xc4,0x36,0xa7,0x13,0xd9,0xd8,0x8e,0xfb,0x75,0x26,0x96,0x62,0xb3,0x86,0x60,0x11,
- 0x36,0xfd,0x7e,0xec,0x65,0x9a,0x72,0x2b,0x7a,0xf2,0xcd,0x8a,0x6f,0x42,0x73,0x30,
- 0x05,0x6c,0xc2,0x5f,0x0d,0x82,0x2d,0xf9,0x7b,0xad,0x10,0x7f,0x75,0x10,0xec,0x54,
- 0x0a,0x3a,0x80,0xe0,0x4b,0xf0,0x0a,0xd3,0x7f,0x8f,0xa1,0x6e,0xce,0x32,0xb8,0x50,
- 0x02,0x1c,0x7f,0x0e,0x60,0xd7,0x27,0x81,0x5d,0x5f,0xc4,0x2a,0xd4,0xb6,0xa9,0x2c,
- 0x84,0xdd,0xa0,0x3b,0x42,0xe6,0x20,0xe6,0xaf,0xac,0xf8,0xf5,0xf9,0xd7,0xc0,0xbf,
- 0x6c,0x12,0x89,0x44,0x22,0x25,0x44,0xc1,0xe2,0x6c,0x4b,0x2d,0x54,0x15,0x41,0xf1,
- 0x6e,0x3c,0x89,0x73,0x68,0x25,0x64,0xcf,0x83,0xaf,0x26,0xc0,0x17,0xc3,0x60,0xe5,
- 0xeb,0xf0,0xc9,0x53,0x30,0x67,0x00,0xd6,0x64,0x31,0x6f,0x7c,0x1b,0xa6,0x8e,0xa7,
- 0xde,0x1a,0xb1,0x11,0x7f,0x27,0xdd,0xa8,0x42,0x70,0x3f,0x85,0xbf,0xd7,0x8b,0x85,
- 0xc0,0x7d,0x91,0xbf,0xa3,0x7f,0x6d,0x1c,0x02,0x5f,0x2d,0x96,0x82,0xbe,0x4c,0x2c,
- 0x04,0xfe,0x77,0xe4,0xef,0xd0,0x1f,0x1b,0x76,0x41,0xf3,0xdf,0xf9,0xb3,0x5b,0xf3,
- 0x37,0x38,0xb0,0x14,0x5f,0x8a,0xb4,0x7b,0x9c,0x2b,0xe3,0x5a,0x54,0x72,0x55,0x65,
- 0x5c,0xc5,0xf6,0x98,0xdb,0x61,0xe0,0xf6,0x56,0x95,0x5b,0xd0,0x1d,0xad,0x4a,0x8e,
- 0xba,0x83,0x22,0x62,0x12,0x89,0x44,0x72,0x49,0x78,0x5b,0xae,0xaf,0x80,0x33,0xb9,
- 0x70,0x64,0x3d,0xec,0x9a,0x8d,0xc7,0x4e,0x57,0xbd,0x09,0x4b,0x5f,0x82,0x8c,0x27,
- 0x60,0xde,0x43,0x48,0xdb,0x99,0x77,0x62,0xfb,0x6e,0xc0,0x3c,0xe8,0xe3,0x9e,0xf6,
- 0xfb,0x10,0x7f,0x6f,0x33,0xe0,0xef,0xcd,0x5a,0xfe,0xa6,0x5e,0x0a,0xfa,0xfd,0x9f,
- 0xc9,0xa5,0xa0,0x87,0x5d,0x81,0x2d,0x61,0x87,0x56,0x61,0xeb,0x72,0x4b,0x5d,0x30,
- 0x3c,0x8c,0x17,0xbb,0x02,0x29,0x65,0x1d,0xe0,0x46,0x61,0x57,0x26,0xbc,0x35,0xc4,
- 0x6e,0x8b,0xca,0x1e,0x95,0x03,0x20,0xf6,0x62,0xd7,0x16,0x51,0x98,0x44,0x22,0x91,
- 0x6c,0x88,0xdf,0xf6,0x7d,0xed,0xac,0xa3,0x05,0x8f,0xf6,0x34,0x56,0x42,0xc5,0x11,
- 0xa4,0xed,0xee,0xb9,0x18,0xca,0x2d,0x7e,0x01,0x32,0x1e,0x43,0xd4,0xa6,0xdf,0x07,
- 0xb3,0xef,0x51,0x3a,0xa3,0xee,0x44,0xcf,0xf8,0xb3,0xe2,0x3f,0xa1,0xc3,0xfc,0xd5,
- 0x41,0xb0,0x96,0xbf,0x3d,0x29,0x05,0x3d,0xf4,0x27,0xf8,0x89,0x93,0x6e,0xc2,0x41,
- 0x1c,0x35,0x25,0xac,0xad,0x59,0x7d,0x62,0x28,0xe1,0xad,0x53,0xa2,0x95,0x5c,0x33,
- 0xe6,0x6a,0x38,0x6b,0xc4,0xdc,0x90,0xbd,0xcd,0x2a,0x7b,0xa0,0xcd,0x83,0xd9,0xe9,
- 0x40,0xff,0x36,0x89,0x44,0x22,0x91,0x74,0xc5,0x43,0x15,0x4e,0x8a,0xf6,0x16,0x3c,
- 0xf3,0x52,0x77,0x1a,0x67,0x3b,0x7c,0xbb,0x05,0xb2,0xe7,0xc2,0xda,0xf7,0x20,0xf3,
- 0x79,0x6c,0x16,0x9a,0xc3,0x51,0x3b,0x00,0x4f,0xf7,0x70,0xe0,0x22,0x73,0xef,0x56,
- 0x7c,0x67,0xc4,0xc8,0xdf,0x3b,0xc4,0xf8,0x7b,0x9b,0x10,0x7f,0x03,0x08,0x0e,0xf2,
- 0xb7,0x9f,0x31,0x7f,0x63,0x10,0x3c,0xa6,0xaf,0x58,0x17,0xb4,0x25,0x7f,0x65,0xba,
- 0xa0,0x79,0x74,0xcc,0xb1,0xbb,0xe8,0x59,0xc8,0xcb,0x02,0x6f,0x63,0x52,0xcb,0xb8,
- 0x76,0x2b,0xb9,0x3c,0x6e,0x0d,0xdb,0x12,0xbb,0x6d,0x2a,0x47,0x98,0xdb,0xa4,0x75,
- 0x63,0xd0,0x1d,0x2d,0xca,0xb1,0x62,0x3f,0x45,0xc4,0x24,0x12,0x89,0x84,0xe2,0x74,
- 0xe0,0x01,0x5a,0x7d,0x05,0xab,0xc8,0x87,0x13,0x3b,0xe1,0x70,0x16,0x4e,0x50,0xdc,
- 0x3c,0x09,0x4f,0xd4,0x66,0x3c,0x8e,0x67,0x51,0xd3,0xef,0x47,0x73,0xf2,0x86,0x1d,
- 0xe6,0xef,0x2c,0x3d,0xfe,0x1a,0x85,0xc0,0xd3,0xff,0x60,0x95,0x82,0xbe,0xc5,0x90,
- 0xbf,0x9a,0x10,0x58,0xb0,0x04,0xfc,0x9b,0x98,0x12,0xf0,0xaf,0xc4,0x4e,0x21,0x5d,
- 0x65,0xc5,0x5f,0xbd,0x14,0x34,0x27,0x2f,0x7f,0xfa,0x1b,0x46,0x43,0xe9,0x01,0xce,
- 0xbe,0xee,0xd4,0x3a,0x25,0xc4,0x5c,0x8f,0x0c,0x73,0x1b,0x75,0xcd,0x5a,0xd1,0x4a,
- 0x38,0xdc,0x86,0x79,0x78,0x12,0x89,0x44,0xea,0x7d,0xc2,0x7b,0x75,0xdd,0x19,0x1c,
- 0x12,0x75,0x64,0x3d,0x8e,0xb0,0xd8,0x3a,0x0d,0x47,0x58,0xac,0x18,0x1c,0x1c,0x5e,
- 0x31,0xef,0x41,0xf4,0xdc,0x07,0x71,0x9e,0x30,0xf2,0xf7,0x01,0x3d,0xfe,0xaa,0x43,
- 0xe0,0xbb,0x84,0xf8,0xab,0x09,0x81,0x6f,0x77,0x34,0x05,0xfd,0xbf,0xce,0xa7,0xa0,
- 0xc5,0x07,0x71,0xf0,0x3f,0xf2,0xef,0x4f,0x76,0x3a,0x94,0xe7,0x23,0xbf,0x12,0x54,
- 0xc9,0x4d,0x4c,0x19,0x57,0x8d,0xdd,0xe6,0xa0,0x35,0xe9,0x65,0x7d,0xe6,0x06,0x50,
- 0x6b,0x66,0xfe,0x92,0x8f,0x7f,0xaf,0x02,0xa7,0xae,0x48,0x24,0x12,0xa9,0x47,0x0b,
- 0x6f,0xe0,0x9c,0xb9,0x3c,0xc2,0xe5,0xe1,0xed,0x97,0xa3,0xe0,0xb3,0xb7,0x70,0xa2,
- 0x45,0x60,0x12,0xe3,0xfc,0x47,0x61,0xde,0xc3,0x8a,0x1f,0x8c,0x78,0xae,0xe2,0x30,
- 0x7f,0xd5,0x08,0x8e,0xe6,0xaf,0x69,0x08,0xec,0x54,0x0a,0x5a,0x83,0x60,0xb1,0x14,
- 0x74,0x00,0xc1,0x2e,0x0e,0xe2,0xf8,0x29,0x8e,0xaf,0xcc,0xcb,0x82,0x9a,0x12,0xc4,
- 0x99,0x83,0xb3,0xa7,0x5c,0x2a,0xe3,0x1a,0x56,0x72,0x0d,0x98,0xeb,0x6d,0xd6,0xb3,
- 0x59,0x78,0x2b,0x68,0x68,0xa9,0x47,0x23,0x88,0x3d,0xcc,0x4f,0x3d,0x5a,0x24,0x12,
- 0xa9,0x67,0x08,0x94,0x25,0x3e,0x6d,0x18,0x62,0xb4,0xd4,0xc2,0xd9,0xa3,0xf0,0xcd,
- 0x17,0x78,0xe4,0x76,0xc5,0x6b,0x90,0xf9,0x2c,0x2c,0x7a,0x1a,0x32,0x9e,0x84,0x05,
- 0x8f,0xe3,0x42,0x81,0xb0,0xe7,0x3f,0x1a,0x42,0xb0,0x18,0x7f,0xd5,0x29,0x68,0x4b,
- 0xfe,0x6a,0x52,0xd0,0x82,0x5d,0xd0,0x8e,0xf2,0x57,0xb0,0x0b,0x5a,0x90,0xbf,0xe8,
- 0xcb,0x31,0xad,0x3d,0xe7,0x7e,0xcc,0x1e,0x70,0xf4,0x28,0x93,0xa0,0xe2,0x6f,0xa0,
- 0x72,0xb1,0x7b,0xca,0x35,0xec,0x4a,0x31,0x37,0x82,0x5d,0xad,0x99,0xa7,0x0e,0xaf,
- 0xdf,0x45,0x14,0x26,0x91,0x48,0xdd,0x53,0xfe,0x40,0x19,0xb7,0x1c,0x81,0x5b,0xb4,
- 0x03,0x0e,0x2e,0x87,0xaf,0x26,0xc2,0xb2,0x97,0x11,0xb8,0x9f,0x28,0x5e,0xf8,0xa4,
- 0xe2,0x27,0xd0,0xc8,0xdf,0xc7,0xf4,0xf8,0x1b,0x83,0xe0,0xf4,0x81,0xc6,0xfc,0x35,
- 0x40,0xb0,0x65,0x0a,0x3a,0xc8,0x5f,0xab,0x14,0xb4,0xe0,0x29,0x24,0xf7,0xba,0xa0,
- 0x75,0x52,0xd0,0x97,0x61,0xf5,0x79,0xf1,0x20,0x7c,0x49,0xd3,0xae,0x4e,0x35,0xc7,
- 0x5f,0xc6,0x75,0xa4,0x92,0xdb,0x2a,0x51,0xc9,0x6d,0xb3,0x59,0xc9,0x15,0xe0,0x6c,
- 0x83,0xda,0x2a,0xd4,0xd6,0x85,0x8d,0x33,0x36,0xb5,0xc6,0xf7,0xb7,0x7b,0x18,0x9d,
- 0x57,0x22,0x91,0x48,0xdd,0x45,0xfc,0x96,0xd5,0x70,0x8e,0x95,0x1f,0xc6,0x91,0x17,
- 0xfb,0x16,0xc2,0x86,0x31,0x4a,0x9c,0xfb,0x1c,0x56,0x72,0x39,0x79,0x03,0xd6,0xe7,
- 0xef,0xe3,0x31,0xfc,0x7d,0xc4,0x22,0x04,0xd6,0xf0,0xd7,0xb8,0x0b,0x3a,0x4d,0xaa,
- 0x0b,0xba,0xbf,0x58,0x09,0xf8,0x46,0x89,0x2e,0x68,0x0d,0x7f,0xad,0xba,0xa0,0x47,
- 0x5c,0x2d,0xd6,0x05,0x7d,0x19,0x5e,0x79,0xf9,0x6b,0xb8,0xf4,0xa1,0xa5,0xd6,0xce,
- 0xb0,0x47,0x7d,0xe6,0x4a,0x56,0x72,0xcd,0xbb,0xa7,0x44,0x4e,0x09,0xe9,0x00,0xd7,
- 0xac,0x92,0x2b,0x13,0xe7,0xc6,0x02,0xd7,0x82,0xb9,0x3a,0xe6,0x9f,0xd2,0xde,0xc2,
- 0xba,0xa8,0x3b,0x8b,0x44,0x22,0xa5,0xa2,0x00,0xfc,0x78,0x43,0xe3,0xcc,0x3d,0x9c,
- 0x05,0x3b,0xd2,0x60,0xd3,0x78,0x3c,0x8d,0xbb,0xf4,0x45,0x58,0xfc,0x3c,0x2c,0x7e,
- 0x0e,0xbd,0xe8,0x59,0xc5,0x4f,0x6b,0x11,0xfc,0x94,0x21,0x7f,0x35,0x21,0xf0,0x43,
- 0x32,0x29,0xe8,0x7b,0x9d,0x4f,0x41,0x4f,0x71,0xbb,0x0b,0x5a,0x7e,0x10,0xc7,0x87,
- 0xbf,0xc0,0x89,0x91,0xdf,0x6e,0x81,0xc6,0xf3,0x76,0x57,0x08,0x19,0xc5,0xb9,0x56,
- 0xd8,0x15,0x1f,0x3c,0x25,0xd2,0x3a,0xd5,0xa6,0x0b,0x5c,0x0d,0x76,0x25,0xf3,0xc9,
- 0x0d,0x2a,0x47,0xf2,0xc9,0x2a,0x5b,0x32,0xb7,0x46,0xc7,0x9c,0xe3,0xfc,0x79,0xd1,
- 0x79,0x61,0x12,0x89,0x94,0x1a,0x42,0xec,0x36,0x55,0x42,0x71,0x36,0xec,0x4a,0xc7,
- 0xa1,0x8e,0xab,0xdf,0x86,0xe5,0xaf,0xe0,0x6a,0xf8,0xb0,0x91,0xbf,0xcf,0x1b,0xf3,
- 0x37,0x36,0x04,0xd6,0xe5,0xaf,0x78,0x08,0x1c,0x7f,0x0a,0x5a,0x97,0xbf,0xa9,0x94,
- 0x82,0xc6,0x31,0x1a,0x37,0xc3,0x37,0x6b,0x59,0x53,0x25,0xce,0x21,0x11,0xec,0x58,
- 0xee,0x6e,0x65,0x5c,0x9b,0xdd,0x53,0xd1,0x65,0x5c,0x81,0xf0,0xd6,0x1c,0xbb,0xdc,
- 0xcd,0x17,0x82,0xe6,0x6f,0xf3,0xcb,0xfa,0xda,0x92,0xfd,0x63,0x47,0x22,0x91,0x7a,
- 0x9f,0x00,0xf0,0x86,0xcf,0xef,0x8d,0xf5,0x67,0xe1,0xd4,0xd7,0xd8,0xb4,0x9c,0xf5,
- 0x0e,0xae,0x62,0x0f,0x6c,0xb9,0x45,0xbf,0x88,0xd6,0xe5,0x6f,0x2c,0x82,0x45,0x53,
- 0xd0,0x6e,0x74,0x41,0x3b,0x3a,0x88,0x63,0xa2,0x25,0x7f,0x63,0x07,0x71,0x58,0xad,
- 0x23,0xd4,0xe5,0xef,0xc8,0xab,0xf1,0x90,0xd4,0x8e,0x99,0x80,0xd3,0xab,0x88,0xb9,
- 0x09,0x61,0xae,0xca,0xd0,0x5c,0x1d,0x30,0x6b,0x69,0x60,0xd4,0x9a,0x45,0x22,0x91,
- 0x12,0x20,0xf0,0xb3,0xd6,0x7a,0xb8,0x70,0x0a,0x4a,0x0f,0x62,0x7b,0xed,0x8e,0x34,
- 0x58,0x3d,0x04,0xdb,0xa8,0x38,0x79,0x03,0x46,0xfe,0xbe,0x64,0xc0,0xdf,0x41,0x56,
- 0xfc,0x55,0xa5,0xa0,0x33,0xe2,0x4e,0x41,0xab,0x4b,0xc0,0xc1,0x41,0x1c,0xba,0x07,
- 0x81,0x63,0xf9,0x6b,0x3c,0x88,0x63,0x4a,0x9c,0x83,0x38,0xf4,0x0e,0x02,0x8f,0x89,
- 0xdd,0xc5,0xa0,0x3b,0x88,0x43,0xc5,0x5f,0xfe,0x58,0x59,0x43,0x71,0xd8,0x26,0xc6,
- 0xbc,0x82,0x95,0xdc,0x54,0x18,0x82,0x61,0x51,0xc6,0x75,0xa4,0x92,0xeb,0x00,0x73,
- 0xf5,0x80,0xab,0x66,0x2e,0xba,0x29,0xe4,0xc6,0x2a,0xd6,0x5c,0x83,0x7d,0x0e,0xfe,
- 0xae,0x64,0xff,0x70,0x92,0x48,0xa4,0x1e,0x28,0x6c,0xe6,0xf1,0xd4,0xe2,0x0d,0xbf,
- 0x60,0x13,0xec,0x55,0xda,0xa8,0x56,0xbe,0x01,0x2b,0x5e,0x45,0x2f,0x7b,0x25,0x02,
- 0xdf,0x00,0x7f,0x45,0x42,0x60,0x67,0x53,0xd0,0x96,0x25,0x60,0x1b,0x29,0xe8,0xe9,
- 0x62,0x29,0xe8,0x04,0xcf,0x82,0xe6,0x68,0xe6,0xdf,0xc0,0xfc,0xb5,0x08,0x20,0xdd,
- 0x32,0xae,0x8b,0x2b,0x84,0xac,0xc2,0x5b,0xfd,0x32,0xae,0x7e,0xc7,0xb2,0xfc,0xc9,
- 0xa0,0xe8,0x4a,0xae,0xb6,0x8c,0x6b,0xb7,0x92,0x2b,0x82,0xda,0x08,0x73,0xab,0x22,
- 0x6e,0x54,0xbb,0x12,0xcd,0xbf,0x24,0x1c,0x2c,0x46,0x81,0x30,0x89,0x44,0x72,0x40,
- 0xb8,0xb6,0xcf,0x53,0x03,0xa5,0x39,0xb8,0x0d,0x76,0xdb,0x74,0x58,0x3f,0x12,0xc7,
- 0x62,0xac,0x7c,0x1d,0x7b,0x98,0xd1,0x61,0xfe,0xbe,0x2c,0xcd,0xdf,0xcc,0x00,0x82,
- 0x2d,0xbb,0xa0,0x1f,0x8b,0x41,0xb0,0x6e,0x17,0xf4,0x40,0xbb,0x29,0x68,0xcb,0x2e,
- 0xe8,0xdb,0x25,0xba,0xa0,0x75,0xd6,0x11,0x3a,0x9a,0x82,0xe6,0x0f,0xb1,0x7b,0x3e,
- 0xbb,0x70,0x8a,0x19,0x02,0xd7,0x09,0xe6,0x6a,0x5a,0xa7,0xac,0xba,0xa7,0x5c,0x63,
- 0xae,0x16,0xb8,0xba,0xcc,0x75,0x33,0xbc,0x15,0x64,0x6e,0xd0,0xe7,0x03,0x66,0xcd,
- 0x55,0x8c,0x3f,0x5f,0xea,0xcb,0x22,0x91,0x48,0x76,0x84,0xc3,0x31,0xc0,0xd7,0x81,
- 0x77,0x95,0xa2,0x1d,0xb0,0x3b,0x1d,0xd6,0x8f,0x80,0xcf,0xdf,0x43,0xec,0xae,0x7a,
- 0x03,0xc9,0x1b,0x70,0x34,0x7f,0x4d,0x43,0x60,0xc1,0x12,0xf0,0x22,0xab,0x12,0x70,
- 0xb7,0x1c,0xc4,0xe1,0xd0,0x3a,0xc2,0x31,0x7d,0xb1,0x99,0xad,0xaa,0x08,0xd1,0x96,
- 0xba,0x65,0x5c,0x07,0x86,0x60,0x24,0xb8,0x8c,0x6b,0x88,0xdd,0xc6,0x2a,0x3d,0x9f,
- 0xd7,0x35,0x6b,0x3c,0xa7,0xf2,0x79,0xe0,0x97,0xed,0xea,0x48,0xf6,0x0f,0x32,0x89,
- 0x44,0xea,0x3e,0xe2,0x61,0x54,0x73,0x0d,0x9c,0x2f,0x84,0xbc,0x35,0xb8,0xdd,0x60,
- 0xcd,0x50,0xf8,0xec,0x6d,0xf4,0xaa,0x37,0x15,0xbf,0xa1,0xe1,0x6f,0x10,0xc1,0x62,
- 0xfc,0x55,0x23,0x38,0xc8,0xdf,0x64,0xa4,0xa0,0xa5,0xf8,0xeb,0x46,0x17,0xb4,0x3d,
- 0xfe,0x8e,0xed,0x8b,0xcf,0xeb,0x70,0x16,0x22,0x32,0x15,0x99,0xdb,0x8d,0x5b,0xa7,
- 0x9c,0x63,0xae,0x8e,0xb1,0x2f,0x8e,0x2a,0xc2,0x24,0x12,0xc9,0x44,0x7e,0x1f,0xce,
- 0xf6,0x39,0x57,0x80,0x85,0xdd,0x1d,0x33,0x61,0xcd,0x7b,0x78,0x6e,0x28,0xec,0x08,
- 0x82,0x75,0xf9,0x6b,0x80,0x60,0xc1,0x14,0xf4,0x62,0xc1,0x14,0xb4,0x7c,0x17,0xb4,
- 0x60,0x09,0x58,0x6e,0x1d,0xa1,0x60,0x0a,0xfa,0x77,0x62,0x25,0x60,0xb1,0x14,0xf4,
- 0xb4,0xfe,0xb0,0x71,0x2c,0x86,0xbd,0x29,0xd1,0x3d,0x25,0xba,0x42,0x48,0xa4,0x75,
- 0x4a,0x7c,0xf0,0x94,0x2b,0xd8,0x6d,0xd2,0x34,0x50,0x99,0xa4,0x94,0x65,0xb1,0x8b,
- 0xd3,0x66,0x42,0x06,0xfe,0x15,0x76,0xb6,0x27,0xfb,0x27,0x9c,0x44,0x22,0xa5,0x96,
- 0xb0,0xb0,0xdb,0x5a,0x8f,0x0b,0x71,0x8e,0x7e,0x89,0x47,0x87,0x36,0x8c,0xc6,0x80,
- 0x37,0x6b,0x28,0x36,0x33,0xaf,0x7e,0x47,0x8f,0xbf,0xb1,0x08,0x1e,0x6c,0x15,0x02,
- 0xbf,0x64,0x1a,0x02,0x5b,0x0e,0xe2,0x78,0xd2,0x38,0x05,0xfd,0x88,0xcc,0x20,0x8e,
- 0x01,0x2e,0x0f,0xe2,0x30,0x09,0x81,0xfb,0xc9,0x0c,0xe2,0xd0,0x76,0x41,0xf3,0x37,
- 0x32,0x9f,0xc1,0x7f,0x1d,0x6f,0x83,0x13,0xad,0x53,0x8e,0x0c,0xc1,0xb0,0x1d,0xde,
- 0xba,0x33,0x04,0xc3,0x76,0x19,0xb7,0xc9,0xa2,0x8c,0x2b,0xc4,0xd9,0x70,0x9c,0xdb,
- 0x70,0x56,0xe3,0xfa,0xb0,0x2b,0xd0,0x4d,0x55,0xd8,0x1a,0x4d,0x4d,0x59,0x24,0x12,
- 0x09,0x57,0xfb,0x79,0x31,0xc9,0x7c,0x78,0x0d,0xec,0x9c,0x09,0x1b,0x3f,0x82,0xb5,
- 0x1f,0xe0,0x70,0x2a,0xf4,0x50,0x34,0xf2,0x77,0x88,0x18,0x7f,0x55,0x21,0xb0,0x54,
- 0x0a,0x7a,0xc9,0x20,0x89,0x14,0x74,0x86,0xa3,0x29,0xe8,0x59,0xf7,0xc8,0xa4,0xa0,
- 0xad,0xd6,0x01,0xdb,0x1e,0xc4,0x61,0x99,0x82,0x1e,0x77,0x3d,0x6c,0x9d,0x0a,0xd5,
- 0xc5,0xd0,0xd1,0xe2,0x6e,0xc7,0xb2,0xcc,0xda,0xbe,0xf8,0x99,0xab,0xc5,0x6e,0x62,
- 0xbb,0xa7,0xa2,0xb3,0xca,0x71,0x31,0x57,0x83,0xdd,0xfa,0x28,0x57,0x84,0x5c,0x1e,
- 0x34,0xff,0x18,0xfe,0xdc,0xa9,0x29,0x8b,0x44,0xea,0x9d,0xf2,0xfb,0xf0,0x4e,0x5b,
- 0x75,0x02,0x72,0x57,0xc2,0xe6,0xc9,0xf0,0xe5,0x48,0x9c,0x4f,0xf5,0xf9,0x7b,0x41,
- 0x9b,0xf0,0x37,0x16,0xc1,0xae,0xa4,0xa0,0x5d,0x18,0xc4,0x21,0x95,0x82,0x76,0x76,
- 0x10,0x87,0xd4,0x29,0xa4,0xa8,0x14,0x34,0x7f,0x7f,0xc6,0xa3,0x38,0xcf,0x84,0x23,
- 0x4f,0xa2,0x63,0x59,0x60,0xae,0x72,0x92,0x5a,0xa7,0x9c,0xa9,0xe4,0x3a,0xd0,0x3a,
- 0xa5,0x5f,0xc9,0x95,0x63,0x6e,0x34,0x6a,0xc3,0x2e,0xb7,0x76,0x53,0x25,0x6e,0x50,
- 0x22,0x91,0x48,0xbd,0x44,0xfc,0x25,0x37,0xbf,0x8b,0xd6,0x9e,0xc6,0x4e,0xe6,0xed,
- 0x69,0xf0,0xc5,0x70,0x8c,0x76,0xd1,0xef,0xa3,0xc3,0xfc,0x55,0x23,0x38,0x6b,0x88,
- 0x44,0x0a,0x7a,0x85,0x65,0x0a,0xfa,0xaf,0x76,0xf9,0x6b,0x35,0x0b,0x7a,0x9e,0x4c,
- 0x0a,0xda,0x64,0x17,0x43,0x82,0xd6,0x01,0x8b,0xa5,0xa0,0xa7,0xf6,0xc7,0x8c,0x44,
- 0x53,0xb5,0x29,0x76,0x2d,0xcb,0xb8,0x06,0x2b,0x84,0xac,0xe6,0x2a,0x77,0x97,0x32,
- 0xae,0x06,0xbb,0xfa,0x65,0x5c,0xeb,0x4a,0xae,0x5c,0x19,0x57,0x27,0xb6,0xd5,0x46,
- 0xb8,0x02,0x66,0x75,0x67,0x80,0x5f,0xaa,0xd3,0x4b,0xb9,0x68,0x12,0xa9,0x87,0x8b,
- 0xbf,0xd2,0xe6,0x3f,0xf5,0xa5,0x39,0xb8,0xe6,0x6f,0xf3,0x04,0x58,0x37,0x1c,0xe1,
- 0x8b,0xfc,0x1d,0x66,0xc1,0x5f,0x3b,0x29,0x68,0x85,0xbf,0xcb,0x5f,0x31,0x3e,0x08,
- 0xfc,0x62,0x4c,0x09,0xd8,0x78,0x10,0x96,0x26,0x04,0xb6,0x1c,0x84,0x25,0xbf,0x8e,
- 0xd0,0x6c,0x10,0x56,0x6c,0x09,0xd8,0x2a,0x05,0x2d,0x3a,0x08,0x2b,0xb6,0x0b,0x3a,
- 0x66,0x10,0x16,0x7f,0x2d,0x71,0x70,0x05,0xe6,0x81,0xa9,0x75,0xca,0x0e,0x73,0x2b,
- 0x13,0xc2,0x5c,0x09,0xe0,0x06,0x98,0x1b,0x6d,0x7e,0x91,0xb6,0x66,0x42,0x30,0x89,
- 0xd4,0x33,0xc5,0xef,0xc0,0x67,0x8f,0xc2,0xe1,0xcf,0x21,0x3b,0x1d,0x36,0x8c,0x45,
- 0xf2,0x86,0x1d,0x44,0xb0,0x5e,0x08,0x6c,0x9d,0x82,0x7e,0xcb,0xad,0x14,0xb4,0x8d,
- 0x41,0x1c,0xae,0xcc,0x82,0x76,0x74,0x10,0x87,0x68,0x0a,0x5a,0x41,0xf0,0xb8,0xeb,
- 0xf0,0x9b,0xcc,0x5f,0x2c,0x71,0x92,0xba,0x5f,0xc6,0x8d,0xa3,0x92,0xeb,0x68,0x19,
- 0x57,0xf6,0x70,0x90,0xc5,0x10,0x8c,0x38,0xb2,0xca,0xfa,0x95,0x5c,0x39,0xe6,0xea,
- 0xa0,0x96,0xbb,0xf6,0xb4,0x8e,0xf9,0x07,0xb7,0x52,0x39,0x98,0x44,0xea,0x41,0x02,
- 0x80,0xe6,0x2a,0xcc,0x33,0xef,0x59,0x00,0x5b,0xa7,0xc0,0xba,0x91,0xb0,0x6e,0x44,
- 0xc8,0x02,0xfc,0x75,0x24,0x04,0xb6,0x4c,0x41,0x4b,0x75,0x41,0x8b,0x0e,0xe2,0x78,
- 0x58,0xac,0x0b,0xda,0xb5,0x75,0x84,0x71,0x0e,0xe2,0x18,0xdf,0x0f,0x76,0xcd,0xc1,
- 0xfb,0x3c,0x1d,0xc8,0x75,0xf9,0x40,0xae,0x40,0x25,0x37,0xbe,0xd8,0xd6,0x98,0xb9,
- 0x50,0x5b,0xa6,0x71,0xdd,0x69,0xe6,0xb9,0x00,0x7e,0x42,0x30,0x89,0xd4,0x9d,0xe5,
- 0xf7,0x61,0xc0,0x5b,0x59,0xc8,0x0e,0x7c,0x0a,0x1b,0xc7,0xe1,0x58,0xe6,0x2f,0x47,
- 0xa1,0x23,0xf0,0x1d,0x11,0x1d,0x02,0x27,0x87,0xbf,0x36,0x4e,0x21,0x3d,0x2d,0xcd,
- 0x5f,0x37,0x06,0x71,0x58,0x9f,0x42,0xba,0xd5,0x26,0x7f,0xb9,0x67,0xdc,0x01,0x05,
- 0x1b,0x30,0x51,0x4c,0xd8,0xed,0x0d,0xd8,0x0d,0xbb,0xa6,0x14,0xcd,0x1f,0xda,0x47,
- 0x63,0xb2,0x48,0xa4,0x6e,0x27,0x60,0xed,0x2d,0x58,0x4b,0x2a,0xf9,0x9a,0xf1,0x80,
- 0x77,0x23,0xc7,0x6e,0xc0,0xa3,0x22,0x36,0xe2,0xaf,0x61,0x0a,0xfa,0x5d,0x8b,0x14,
- 0xf4,0xaa,0xb7,0xc4,0x06,0x71,0xd8,0x98,0x05,0xfd,0x6c,0x92,0x07,0x71,0xa4,0x89,
- 0x0d,0xe2,0x98,0x2a,0x95,0x82,0xbe,0xd1,0x2c,0x05,0x3d,0xa1,0x1f,0x7e,0x7f,0xce,
- 0x16,0x08,0xb5,0x4e,0x39,0x5c,0xc9,0x6d,0x48,0x44,0x25,0x37,0xe5,0x5a,0xa7,0xec,
- 0x57,0x72,0x25,0x72,0xcb,0x46,0xcc,0x0d,0x00,0x37,0xc6,0xfc,0x47,0x98,0x75,0x7a,
- 0x93,0x7d,0x33,0x21,0x91,0x48,0xc2,0xf2,0x36,0xb0,0x8a,0x23,0x70,0x64,0x3d,0xdb,
- 0x35,0x07,0x36,0x8d,0xc3,0xf9,0x48,0x16,0xfc,0xfd,0x50,0x26,0x05,0x3d,0x54,0xa8,
- 0x0b,0x5a,0xc3,0x5f,0xab,0x2e,0x68,0xc3,0x75,0x84,0x71,0x74,0x41,0xcf,0x77,0xaf,
- 0x0b,0xda,0x8d,0x75,0xc0,0xda,0x41,0x1c,0x13,0x6e,0xc0,0x57,0x3b,0xd5,0x27,0xcd,
- 0xba,0xa7,0xa2,0xc3,0xdb,0x38,0xdb,0x95,0x1b,0x0d,0x76,0xf6,0x25,0x73,0x6d,0x9f,
- 0x48,0x25,0x57,0x22,0xc8,0xd5,0x67,0xae,0x74,0x25,0xd7,0x6d,0xe6,0x6a,0x5d,0x02,
- 0x75,0xe5,0xf8,0x5a,0x9a,0x44,0x22,0xa5,0xb2,0x00,0xf0,0x3e,0x59,0xb2,0x1f,0x5b,
- 0x9a,0xb7,0x7f,0x0c,0x9b,0xc6,0xa3,0x37,0x7e,0xa4,0x78,0x8c,0x92,0x79,0xe6,0x1e,
- 0xad,0xc7,0xdf,0xd8,0x10,0x78,0x58,0x04,0xc1,0x8e,0xa5,0xa0,0x15,0x04,0x2f,0x97,
- 0x5a,0x47,0x28,0xd8,0x05,0x6d,0x32,0x08,0x2b,0xce,0x41,0x1c,0x62,0x5d,0xd0,0xd6,
- 0x83,0x38,0x6e,0x91,0xe8,0xc2,0xe2,0xef,0xe1,0xff,0x70,0xfc,0xde,0x2b,0x31,0x78,
- 0xca,0x91,0x15,0x42,0xba,0x83,0xa7,0x2c,0xb1,0xeb,0xc4,0x2e,0x03,0xa9,0x15,0x42,
- 0xf6,0x5a,0xa7,0x0c,0xbb,0xa7,0xac,0xb1,0x9b,0x28,0xd4,0x86,0x7c,0xa1,0x44,0xe5,
- 0x53,0x68,0xfe,0x70,0x6d,0xcd,0xc9,0xbe,0xbf,0x90,0x48,0x24,0x5d,0x01,0xf0,0x3b,
- 0x5b,0xe1,0x16,0xd8,0x33,0x0f,0xc7,0x22,0x7d,0x35,0x1e,0x1d,0xc5,0x5f,0x67,0x52,
- 0xd0,0x56,0x5d,0xd0,0x96,0xfc,0x75,0x7d,0x1d,0xb0,0xdb,0x29,0x68,0xab,0x75,0xc0,
- 0x41,0x04,0xdb,0x5d,0x07,0xcc,0xff,0xb8,0x2f,0x03,0x31,0xd4,0x83,0xca,0xb8,0x29,
- 0x33,0x07,0x23,0xee,0xc3,0x41,0xee,0x62,0xf7,0x94,0x81,0x4f,0xa2,0x6b,0x4b,0xa1,
- 0x8d,0xa2,0x60,0x12,0x29,0x65,0x04,0x7e,0x4c,0x4c,0xd5,0x94,0xb1,0xc3,0xab,0x61,
- 0xcb,0x64,0xf8,0x6a,0xa2,0xe2,0xf1,0x11,0x47,0x10,0x6c,0xc9,0x5f,0xf9,0x2e,0x68,
- 0xcb,0x41,0x58,0x76,0xd6,0x11,0xca,0xa4,0xa0,0xdd,0x58,0x47,0x28,0x3a,0x08,0xcb,
- 0x9d,0x2e,0xe8,0xf4,0xfb,0xe0,0xf8,0x8e,0x9e,0xc1,0xdc,0xee,0xd8,0x3a,0x95,0x72,
- 0xcc,0x8d,0xb5,0x97,0x8e,0x06,0x93,0x48,0xc9,0x16,0x27,0xaf,0xa7,0x06,0x9b,0x73,
- 0xf2,0x3f,0xc7,0xad,0xf7,0x5b,0x26,0xa1,0x37,0x07,0xf8,0x3b,0x41,0x8f,0xbf,0x06,
- 0x29,0xe8,0xf5,0x26,0xa7,0x90,0x04,0x07,0x71,0x08,0xee,0x62,0x88,0x1d,0xc4,0x21,
- 0xd8,0x05,0x6d,0x95,0x82,0x56,0x97,0x80,0x83,0x83,0x38,0x74,0x0f,0x02,0xc7,0x96,
- 0x80,0x4d,0x06,0x71,0xdc,0x93,0x84,0x41,0x1c,0xfc,0x59,0x9c,0xdc,0xe3,0xc4,0x10,
- 0x0c,0xa3,0x4a,0x6e,0x62,0xf7,0x07,0x19,0x56,0x72,0xe3,0xde,0x1f,0x64,0x58,0xc9,
- 0x75,0xae,0x8c,0x6b,0xaf,0x5d,0xd9,0xb2,0x92,0x1b,0xb0,0x08,0x70,0xab,0x8b,0x03,
- 0x66,0x55,0x27,0xd4,0xe6,0x1f,0xc9,0xf8,0xff,0x01,0x46,0x08,0x26,0x91,0x92,0x20,
- 0x3c,0x95,0xcf,0x6f,0x74,0x65,0x07,0xe1,0xd0,0x4a,0xd8,0xf6,0x31,0x66,0x9b,0x79,
- 0xe4,0x8b,0x56,0x10,0x1c,0x15,0x02,0x27,0x25,0x05,0xfd,0x99,0x7b,0x5d,0xd0,0xcf,
- 0x25,0x39,0x05,0x3d,0x53,0x30,0x05,0x7d,0xbb,0x44,0x0a,0x7a,0xd2,0x8d,0xe8,0x15,
- 0x83,0xa1,0xf4,0x80,0x43,0x43,0x30,0x1c,0x5d,0x21,0x24,0x15,0xde,0xca,0xac,0x10,
- 0xb2,0x5f,0xc6,0x8d,0x5d,0x21,0xd4,0x0d,0xca,0xb8,0x25,0xe6,0xb1,0x2d,0xe3,0xa8,
- 0x55,0x5b,0x8b,0x5d,0x8d,0x39,0x82,0xdb,0x1a,0x29,0x0a,0x26,0x91,0x12,0x2c,0x8c,
- 0x5f,0x4e,0xee,0x85,0x9c,0xa5,0xb8,0x99,0x88,0x93,0x37,0x60,0x13,0xfe,0x06,0x11,
- 0x3c,0x4e,0xe1,0xaf,0x53,0x5d,0xd0,0xef,0xba,0x96,0x82,0x7e,0x49,0x6c,0x10,0xc7,
- 0x33,0xf2,0x29,0xe8,0x47,0x5c,0x18,0x84,0x65,0x99,0x82,0xee,0x2f,0x9a,0x82,0x5e,
- 0x3f,0x02,0x2a,0x0b,0x6d,0x30,0x97,0xb9,0x37,0x7b,0xaa,0xdb,0xad,0x10,0x4a,0x45,
- 0xec,0x5a,0xa7,0x94,0x85,0x80,0x1b,0x71,0x51,0xd0,0x18,0x05,0x37,0x25,0xfb,0x6e,
- 0x44,0x22,0xf5,0x0e,0x81,0x1f,0x6f,0xce,0xc5,0xbb,0x70,0x74,0xd5,0x8e,0x34,0xd8,
- 0x36,0x0d,0x1d,0xe6,0x6f,0x10,0xc1,0x26,0xfc,0x8d,0x0d,0x81,0xad,0x4a,0xc0,0x1a,
- 0x04,0x3b,0x3b,0x88,0x43,0x7e,0x1d,0xa1,0x1b,0x83,0x38,0x04,0x07,0x61,0xcd,0x96,
- 0x59,0x47,0x28,0x3a,0x88,0x43,0xb5,0x8e,0x90,0x33,0x7a,0xd7,0x2c,0xa4,0x52,0x7c,
- 0x65,0x5c,0x5a,0x21,0x94,0x6c,0xe6,0x4a,0x94,0x71,0xc5,0x50,0x1b,0xc3,0xdc,0x28,
- 0x57,0x17,0x03,0x21,0x98,0x44,0x72,0x55,0x5d,0x9d,0x58,0xe7,0x3d,0xb5,0x0f,0x76,
- 0xcf,0x83,0xed,0x33,0xb0,0xd4,0x8b,0xd6,0xe5,0xaf,0xdd,0x14,0xb4,0xb3,0xfc,0x4d,
- 0x95,0x2e,0x68,0x87,0x4e,0x21,0xd9,0xe8,0x82,0x16,0xe7,0x2f,0xbf,0xda,0x81,0x25,
- 0xe0,0x6d,0x48,0xb5,0xd6,0x29,0x62,0x6e,0x8a,0x32,0xb7,0xf2,0xb8,0xc6,0x55,0x45,
- 0x40,0xb5,0x60,0x12,0xc9,0x0d,0x61,0x9d,0xb7,0x9a,0x95,0xe5,0xc0,0x81,0xc5,0xb0,
- 0x63,0x06,0x7a,0xfb,0x0c,0x43,0x04,0x5b,0xa6,0xa0,0x45,0x4b,0xc0,0xdd,0xb0,0x0b,
- 0xda,0xb2,0x04,0xac,0x59,0x47,0xe8,0x42,0x17,0xb4,0xbd,0x41,0x1c,0xfc,0xe1,0x72,
- 0x57,0x22,0x46,0x8d,0x67,0x4f,0xf5,0xd6,0x15,0x42,0x6e,0xcd,0xc1,0x88,0xa3,0x7b,
- 0xaa,0xc4,0xaa,0x7b,0xea,0x54,0x54,0xdf,0x94,0x6e,0xf7,0x94,0x1d,0xec,0x46,0x31,
- 0x37,0xec,0xf3,0x85,0xdc,0x50,0x55,0x0c,0x74,0x2e,0x98,0x44,0x72,0x50,0x00,0xac,
- 0xb5,0x1e,0xc9,0x9b,0xbb,0x0a,0x76,0xce,0x0a,0xc2,0xd7,0x9c,0xbf,0x5b,0xa7,0x44,
- 0x10,0xbc,0x79,0x92,0x45,0x09,0xd8,0xce,0x20,0x0e,0x93,0x75,0xc0,0x31,0x5d,0xd0,
- 0x66,0x21,0xf0,0xe0,0xf8,0x06,0x71,0x98,0x84,0xc0,0x4f,0x45,0x10,0x9c,0x61,0x12,
- 0x02,0x3f,0x24,0x16,0x02,0x0f,0x70,0x77,0x10,0xc7,0xdc,0x07,0x20,0x7f,0x2d,0xe3,
- 0x30,0x4d,0x9d,0xd6,0x29,0xc3,0x21,0x18,0xfa,0xc0,0x75,0x62,0x08,0x46,0x62,0x5b,
- 0xa7,0xe2,0x1f,0x82,0x61,0x7c,0x2c,0x48,0xa6,0x8c,0x2b,0x16,0xdb,0x6a,0x39,0x1b,
- 0x65,0x38,0xff,0x6d,0xc4,0xd5,0x27,0xf1,0x10,0x22,0xb5,0x63,0x91,0x48,0x71,0x0b,
- 0xf7,0xba,0x9e,0x3e,0x84,0x03,0xac,0xb2,0xe7,0xc2,0x8e,0x99,0x8a,0x67,0x68,0x10,
- 0x2c,0x9a,0x82,0x36,0x3e,0x85,0x64,0x27,0x05,0xed,0xde,0x20,0x0e,0xf9,0x2e,0x68,
- 0x67,0x53,0xd0,0x73,0x07,0xba,0x35,0x88,0xc3,0x28,0x05,0xcd,0x2f,0x5b,0xb8,0x8d,
- 0x35,0xd7,0xa4,0x56,0xeb,0x54,0x4a,0xae,0xed,0x4b,0x2a,0x76,0x85,0x5b,0xa7,0x92,
- 0x82,0x5d,0x95,0x59,0xf5,0x29,0xe8,0x6c,0x4f,0xf6,0xad,0x8b,0x44,0xea,0xb6,0x02,
- 0x80,0x8e,0x56,0x76,0xee,0x18,0xe4,0x2c,0x83,0xdd,0x73,0x61,0xd7,0xec,0x10,0x7c,
- 0x63,0xf8,0xdb,0x1d,0x53,0xd0,0xce,0xae,0x03,0xb6,0x9d,0x82,0x76,0x65,0x10,0x87,
- 0xd4,0x2c,0xe8,0xfe,0xf8,0xa0,0xa5,0x39,0xe0,0xa9,0x4d,0xe6,0x10,0x0c,0x99,0x32,
- 0xae,0x14,0x73,0xa9,0x8c,0x6b,0x9f,0xb9,0x7a,0xc0,0x35,0x64,0x2e,0xbf,0x51,0x68,
- 0xcd,0xaa,0x4f,0x42,0x57,0x67,0xb2,0xef,0x62,0x24,0x52,0x77,0x13,0x00,0x6b,0xf7,
- 0xb0,0xaa,0x62,0x96,0xb7,0x1a,0xb2,0xd3,0xd1,0x1c,0xbe,0x1a,0xfe,0xa6,0x89,0xf1,
- 0x77,0x8a,0x44,0x17,0xb4,0x54,0x0a,0xda,0xbd,0x41,0x1c,0xce,0x76,0x41,0xeb,0x0c,
- 0xe2,0x48,0xa9,0x75,0xc0,0xfd,0x21,0xf3,0x79,0x38,0x7d,0x30,0x05,0xca,0xb8,0xbd,
- 0x6b,0x85,0x90,0x9d,0x32,0xae,0xb6,0x92,0x9b,0xb2,0xd8,0xd5,0x20,0xb8,0xa6,0x84,
- 0xd1,0xb2,0x42,0x12,0x49,0x5c,0xbe,0x0e,0xa8,0x3e,0x05,0xdf,0x6e,0xc1,0x83,0x45,
- 0x01,0xf8,0xea,0xf0,0x77,0x66,0x0c,0x7f,0x3f,0x36,0x4e,0x41,0x8b,0x0d,0xc2,0x8a,
- 0x0d,0x81,0x75,0x07,0x61,0x59,0x74,0x41,0x1b,0xaf,0x23,0xfc,0xcc,0x72,0x1d,0xa1,
- 0x7a,0x10,0x96,0x58,0x0a,0x5a,0x3d,0x08,0x4b,0x74,0x1d,0xa1,0xee,0x20,0xac,0xd8,
- 0x2e,0x68,0x93,0x41,0x58,0xf7,0x9a,0x0e,0xc2,0xd2,0x5b,0x47,0xa8,0x19,0x84,0xa5,
- 0x5a,0x47,0xb8,0xe4,0x2f,0x50,0xca,0xe1,0x4b,0xcc,0x25,0xe6,0x3a,0xc6,0x5c,0xc5,
- 0x05,0x61,0xe3,0x77,0xaf,0xcb,0x97,0xec,0x9b,0x1a,0x89,0x94,0xf2,0xe2,0x61,0x2f,
- 0xbf,0x0d,0x16,0xed,0x84,0x03,0x4b,0x31,0xe1,0xcc,0x1d,0xe6,0x6f,0xf6,0x1c,0xe4,
- 0x2f,0x76,0x5e,0x25,0x2b,0x05,0x2d,0xb5,0x8e,0xd0,0xd1,0x14,0xf4,0x32,0xb7,0x53,
- 0xd0,0x6e,0x74,0x41,0x0b,0xa4,0xa0,0x3f,0x7d,0x99,0xc3,0xd7,0xdd,0xc3,0x41,0x34,
- 0x04,0xc3,0x56,0x19,0xd7,0xfe,0x10,0x0c,0xa7,0xcb,0xb8,0x02,0xa8,0x55,0xf9,0x6c,
- 0x41,0xc8,0x47,0x55,0x2e,0x60,0xf5,0x67,0xa9,0x17,0x8b,0x44,0x32,0x11,0xf0,0xb0,
- 0xf7,0x4c,0x1e,0x0e,0x90,0xdc,0x9b,0x81,0x07,0x7b,0xa3,0xf9,0x2b,0x12,0x02,0x9b,
- 0x74,0x61,0x75,0x97,0x41,0x1c,0x2e,0xa4,0xa0,0xdd,0x5b,0x47,0x18,0x4f,0x0a,0x7a,
- 0xc9,0x20,0x7e,0x6f,0x74,0xa5,0x63,0x39,0x85,0x77,0x19,0x24,0x70,0xae,0xb2,0x79,
- 0x25,0xd7,0x80,0xb9,0x2e,0x9f,0x0c,0x72,0x87,0xb9,0x47,0x75,0x5c,0xa1,0x35,0x27,
- 0x32,0xff,0x5f,0x44,0x08,0x26,0x91,0x62,0xe5,0x6b,0xc7,0xd7,0xe4,0xb9,0x9f,0xe1,
- 0x8e,0xb9,0x3d,0x0b,0xd0,0xc8,0xdf,0x79,0x8e,0xf2,0x77,0xb2,0x0c,0x7f,0xe5,0xbb,
- 0xa0,0x9d,0x1d,0x84,0x65,0x67,0x10,0x87,0x18,0x7f,0x53,0x61,0x10,0xc7,0xf4,0x3f,
- 0xc0,0x92,0xe7,0x81,0xdf,0x93,0x09,0xbb,0x29,0x80,0xdd,0x54,0x49,0x29,0x4b,0x61,
- 0x57,0x97,0xb9,0xb1,0xd8,0x0d,0xb8,0xfc,0x1b,0x34,0xff,0x5b,0x3a,0x14,0x4c,0x22,
- 0xa9,0xe5,0xf7,0xe1,0xfd,0xb0,0x68,0x27,0xec,0xfb,0x04,0xf6,0x2e,0x40,0x47,0xf1,
- 0x57,0x8d,0xe0,0x5d,0x32,0x29,0x68,0xc1,0x41,0x58,0xc1,0x14,0xf4,0x38,0x27,0x53,
- 0xd0,0x26,0x25,0xe0,0x78,0xbb,0xa0,0x5f,0x72,0x3e,0x05,0x3d,0x5f,0x6c,0x10,0x87,
- 0x86,0xbf,0x03,0xe2,0x4a,0x41,0xf3,0x2f,0xb8,0xfc,0x70,0x82,0xcb,0xb8,0xd6,0xcc,
- 0xa5,0x32,0x6e,0x2a,0x32,0x37,0x52,0xc6,0x15,0x60,0xee,0x91,0x88,0x03,0xcc,0x0d,
- 0x3a,0x3f,0x60,0xc6,0x1f,0xae,0x9d,0x96,0x05,0x93,0x48,0x8a,0xbc,0x8d,0x98,0x70,
- 0xce,0x5d,0x05,0x7b,0x17,0x06,0xe1,0x1b,0xe1,0xef,0x7c,0xb1,0x14,0xb4,0xb3,0x5d,
- 0xd0,0x32,0x83,0x38,0x04,0xd7,0x11,0x66,0x0d,0x91,0xe8,0x82,0x5e,0x31,0x58,0x22,
- 0x05,0x2d,0xc7,0x5f,0xc1,0x2e,0xe8,0xd8,0x75,0x84,0x26,0x21,0xb0,0xad,0x41,0x58,
- 0x8b,0x9e,0x81,0x93,0xfb,0xa4,0xeb,0xb9,0xfa,0xcc,0x75,0x62,0x6d,0x9f,0x3e,0x73,
- 0x1d,0x5d,0xdb,0xe7,0x7c,0x3d,0x57,0x98,0xb9,0xc6,0x3b,0xfb,0x52,0xb8,0x75,0xea,
- 0x98,0x0c,0x73,0x8f,0x1a,0x30,0x37,0x82,0x5d,0xfe,0x62,0x2f,0x62,0xfe,0xd4,0xa8,
- 0x1d,0x9a,0xd4,0xbb,0x05,0xe0,0xc7,0x84,0xf3,0xb1,0x4d,0xf0,0xf5,0x62,0x05,0xbe,
- 0x2a,0xfe,0x5a,0x84,0xc0,0xc6,0x29,0xe8,0x20,0x82,0x4d,0xba,0xa0,0xd5,0x83,0xb0,
- 0x9c,0xed,0x82,0x76,0x61,0x10,0xc7,0x72,0xa9,0x41,0x1c,0x83,0xe4,0xd7,0x11,0x8a,
- 0x75,0x41,0x5b,0x0e,0xe2,0x90,0x1a,0x84,0xc5,0x1f,0xab,0x68,0xa7,0x73,0x43,0x30,
- 0x9c,0x58,0xdb,0x67,0x37,0xd4,0x4d,0xea,0xda,0xbe,0xe4,0x0d,0xc1,0x70,0x1e,0xb5,
- 0xb1,0xad,0x53,0x05,0x02,0x29,0xe5,0x23,0x2a,0xeb,0x32,0x57,0x8b,0x5d,0x95,0xf1,
- 0x9f,0x03,0xfc,0xc9,0xbe,0x05,0x92,0x48,0xc9,0x11,0xb4,0x35,0x43,0x71,0x36,0x0e,
- 0xb3,0xfa,0x7a,0x11,0xec,0x53,0xec,0x24,0x7f,0x6d,0xa7,0xa0,0x13,0xbc,0x0e,0x38,
- 0x95,0x06,0x71,0xb8,0xb1,0x0e,0x38,0x36,0x05,0xcd,0x3f,0xa6,0x70,0x2b,0x6b,0xaa,
- 0x4a,0xb1,0x75,0x06,0x12,0xe1,0x6d,0x32,0xb0,0xdb,0x13,0xe6,0x60,0x38,0x5c,0xc9,
- 0xd5,0xb1,0x3e,0x6a,0x0d,0x9c,0xcf,0x9a,0xab,0x92,0x7d,0x17,0x24,0x91,0x12,0xae,
- 0x0e,0x2f,0xfe,0xcc,0x1e,0x5c,0x09,0xfb,0x17,0x23,0x7c,0x35,0xfc,0x8d,0x4d,0x41,
- 0xeb,0xf1,0x57,0x07,0xc1,0x62,0xa7,0x90,0xa4,0xba,0xa0,0x9d,0x1d,0x84,0xe5,0x4a,
- 0x17,0xb4,0xe5,0x3a,0xe0,0xd8,0x41,0x1c,0x8e,0x0e,0xc2,0x92,0xed,0x82,0xe6,0x57,
- 0x28,0xd8,0x24,0xd9,0x3a,0x45,0x2b,0x84,0x12,0xc2,0xdc,0xd4,0xec,0x58,0xb6,0x60,
- 0xae,0x0c,0x70,0xcf,0xe8,0x19,0x77,0x24,0x91,0x48,0xbd,0x43,0xfe,0x2e,0xc6,0x6f,
- 0x9e,0x27,0xb2,0x71,0xb5,0x1c,0x87,0x2f,0xf2,0x37,0x53,0xc5,0xdf,0x4f,0x74,0x42,
- 0x60,0xd1,0x12,0xb0,0x7b,0x83,0x38,0x46,0xc7,0x37,0x88,0xc3,0x92,0xbf,0x26,0x83,
- 0x38,0x5e,0x73,0x6d,0x10,0x87,0xba,0x04,0xec,0xd0,0x20,0x8e,0xd9,0x46,0x29,0xe8,
- 0xd0,0x20,0x8e,0xb9,0x03,0xe1,0xe0,0x0a,0x4c,0x23,0x1b,0x56,0x72,0xe3,0x2e,0xe3,
- 0x1a,0x56,0x72,0x9d,0x2b,0xe3,0xba,0xd2,0xae,0x6c,0x5e,0xc9,0x3d,0xe9,0x56,0x25,
- 0x37,0x41,0xcc,0xb5,0xea,0x9e,0xb2,0x5d,0xc6,0x95,0x63,0x6e,0x5e,0xd0,0xa7,0x73,
- 0xc3,0x66,0x67,0x0b,0x58,0xa7,0x37,0xd9,0xb7,0x45,0x12,0xc9,0x7d,0x75,0xb4,0xe2,
- 0x8f,0x55,0xfe,0xda,0x08,0x7c,0x83,0x08,0x5e,0x64,0x27,0x05,0x1d,0x18,0xc4,0x91,
- 0xcc,0x14,0xb4,0xe0,0x20,0x0e,0x99,0x2e,0x68,0xb9,0x75,0x84,0x2e,0x74,0x41,0x2f,
- 0x10,0x4b,0x41,0xdb,0x18,0xc4,0x31,0xeb,0x6e,0xd8,0x9f,0x09,0x1c,0x8b,0x02,0x2b,
- 0x84,0xec,0x97,0x71,0x93,0xb8,0x42,0xc8,0x7e,0x19,0xd7,0x62,0x85,0x90,0xa6,0x8c,
- 0x6b,0x8d,0xdd,0xd4,0x38,0x19,0x64,0x34,0x04,0xc3,0xe9,0x32,0xae,0x45,0x78,0x7b,
- 0x3a,0x4f,0xe5,0x5c,0x95,0x0f,0x45,0x5c,0x7d,0x12,0xe3,0x02,0x12,0xa9,0xa7,0x0a,
- 0x00,0xcb,0x7c,0xc7,0xb7,0x63,0xf8,0x73,0x60,0x29,0xf2,0x57,0x8d,0xe0,0x68,0xfe,
- 0x66,0x48,0xa4,0xa0,0x6d,0x0c,0xc2,0xda,0x6a,0xd9,0x05,0xad,0x5a,0x47,0xe8,0x6c,
- 0x0a,0x3a,0x76,0x1d,0xa1,0x59,0x0a,0x5a,0xb0,0x0b,0xda,0x8d,0x14,0xf4,0x23,0x32,
- 0x5d,0xd0,0x03,0xac,0x53,0xd0,0x69,0x77,0xc0,0xce,0x99,0x50,0x5b,0x4e,0x83,0xa7,
- 0xf4,0x5a,0xa7,0xac,0xb0,0x9b,0xea,0x87,0x83,0xe2,0xef,0x9e,0x8a,0x23,0xd4,0xb5,
- 0xc0,0x6e,0xae,0x21,0x76,0xc3,0x3e,0x93,0xcb,0xff,0x17,0xd1,0x50,0x0e,0x52,0x8f,
- 0x14,0xce,0xb3,0x3a,0xff,0x2d,0xcb,0xcb,0x62,0x39,0xcb,0x14,0xf8,0x5a,0xf2,0xd7,
- 0x34,0x04,0x16,0x4c,0x41,0xcb,0xad,0x23,0x74,0x61,0x10,0x87,0x2b,0xeb,0x08,0xa5,
- 0x06,0x71,0xb8,0xb1,0x8e,0xf0,0x41,0x3b,0x83,0x38,0x66,0xde,0x85,0x79,0x7b,0xce,
- 0x2f,0x2a,0xe3,0x52,0xeb,0x94,0x23,0xad,0x53,0xfa,0xcc,0xcd,0x35,0xb0,0x1e,0x73,
- 0xb9,0x4b,0x0f,0x46,0x5c,0x96,0x8b,0x4b,0x2d,0x49,0xa4,0x9e,0x24,0xf0,0xe3,0x3a,
- 0x9b,0xe3,0xdb,0x39,0x79,0x03,0xd6,0xe7,0x6f,0x00,0xc1,0x82,0xfc,0xb5,0xd3,0x05,
- 0x6d,0xc9,0xdf,0x89,0x12,0xfc,0x75,0xa3,0x0b,0x5a,0x94,0xbf,0xf2,0x5d,0xd0,0xa2,
- 0xfc,0x75,0xaf,0x0b,0xfa,0x2e,0x3c,0xfb,0xcc,0x31,0x94,0x50,0xe6,0xaa,0x32,0xcf,
- 0x4a,0x8c,0xcc,0xea,0x2b,0x74,0x6c,0x00,0x5f,0x62,0x6e,0xcf,0x64,0xae,0x1a,0xb8,
- 0x1a,0x1f,0x40,0xf3,0xab,0x75,0xd0,0x50,0x0e,0x52,0x4f,0x91,0xaf,0x13,0x6f,0x38,
- 0x47,0xd6,0xb1,0x9c,0xe5,0x61,0xfe,0x86,0x10,0xac,0xc7,0xdf,0x44,0x76,0x41,0x5b,
- 0x96,0x80,0x5d,0xef,0x82,0x16,0x2b,0x01,0x27,0xbf,0x0b,0x5a,0x6a,0x10,0x87,0x5e,
- 0x0a,0x7a,0xf9,0xab,0x50,0xf1,0x8d,0xa3,0x2b,0x84,0x38,0x52,0x2b,0x80,0x73,0x99,
- 0x5f,0x13,0x5b,0xb9,0x2e,0xa0,0x3d,0x35,0xd0,0x52,0x13,0xd8,0x5d,0x88,0x2b,0x83,
- 0xbd,0x0d,0xe0,0x6d,0x0a,0x98,0xb5,0x35,0xe3,0x0a,0xcb,0x58,0xb7,0x79,0xb0,0xf7,
- 0xd5,0xdb,0x80,0x1f,0x1c,0xfc,0xc4,0x3a,0xd6,0x52,0x8b,0x97,0x0a,0x1c,0x3a,0x6e,
- 0xac,0xc4,0x6a,0x35,0x7f,0xb8,0xba,0x33,0xe8,0x1a,0x23,0x04,0x77,0xf3,0xd9,0x53,
- 0xf1,0x77,0x4f,0x59,0xcf,0x9e,0xca,0x97,0xab,0xe4,0xea,0x63,0x37,0x4f,0xb7,0x81,
- 0x4a,0x1f,0xbb,0x65,0x2a,0x47,0x38,0x9b,0xa3,0xf5,0x81,0x68,0xf3,0xef,0x27,0x15,
- 0x82,0x49,0x3d,0x40,0xed,0x2d,0x50,0x96,0x0b,0x87,0xd7,0xc0,0xc1,0x15,0x7a,0xfc,
- 0x8d,0x45,0x70,0xa6,0x55,0x08,0x3c,0x5f,0x2c,0x05,0x9d,0x16,0x83,0x60,0xdd,0x2e,
- 0xe8,0x29,0x12,0x83,0x38,0x62,0x07,0x61,0x99,0x75,0x41,0x0f,0x13,0x0b,0x81,0xdf,
- 0x91,0x0e,0x81,0x97,0x4b,0xa5,0xa0,0x07,0x59,0x85,0xc0,0x4f,0x45,0x10,0x9c,0xe1,
- 0xda,0x20,0x8e,0xcc,0x67,0xa0,0x78,0xb7,0xdd,0x4a,0x6e,0x00,0xb5,0xfc,0x03,0x2a,
- 0x59,0x90,0xb0,0x0a,0x58,0x03,0x3c,0xed,0xf4,0xb2,0xce,0x36,0x1c,0x61,0xd4,0xe5,
- 0x43,0xf3,0xdb,0x26,0xf0,0x3b,0x27,0x84,0x6c,0x5b,0xca,0xa7,0xf3,0x4b,0xf1,0x6b,
- 0xfa,0x3a,0x59,0x67,0x3b,0x3e,0x10,0x0f,0x8b,0xb8,0x39,0xca,0x5b,0xeb,0xc1,0xc3,
- 0x01,0x7d,0x01,0x7b,0xf8,0xf9,0xd7,0xc6,0x83,0xe2,0x84,0x55,0x72,0x53,0x64,0x85,
- 0x90,0xe1,0xe1,0x20,0xf3,0xee,0x29,0xbb,0xe1,0xad,0x61,0x25,0xd7,0x20,0xa5,0x5c,
- 0x76,0x30,0x68,0x4d,0x78,0xab,0x0f,0x5c,0x56,0xba,0x3f,0xc6,0x07,0xa0,0xa9,0x92,
- 0x0a,0xc1,0xa4,0xee,0x2d,0x1e,0x89,0x14,0x6e,0xfb,0xff,0xf6,0xce,0x04,0x4c,0x8e,
- 0xa3,0x3c,0xff,0x7f,0x03,0xe6,0x0c,0x21,0x21,0x1c,0x01,0x42,0x38,0x02,0x81,0x10,
- 0x02,0x01,0x92,0x40,0x12,0x13,0x12,0xc2,0x7d,0x05,0x08,0xe0,0x98,0xcb,0x60,0xc0,
- 0x96,0x7c,0xe3,0xfb,0x90,0x7c,0xc9,0xa7,0x90,0xb0,0x65,0xd9,0x96,0x6d,0xc9,0xc8,
- 0xb2,0x2c,0x4b,0xb2,0x6c,0x24,0x59,0x96,0x25,0x59,0xf7,0x61,0xdd,0xf7,0xb9,0xab,
- 0xd5,0x6a,0xb5,0xd2,0x4a,0x7b,0xdf,0xd7,0x9c,0x5f,0xff,0xab,0x66,0x67,0x67,0x7a,
- 0x66,0xaa,0xbb,0xaa,0x7a,0xba,0xa7,0x7a,0x66,0xde,0xdf,0xf3,0x3e,0x7e,0x6c,0x4b,
- 0x33,0xea,0xea,0x1d,0xf5,0x3b,0xdf,0x57,0x5f,0x7d,0x1f,0x1f,0xa3,0xb0,0x7d,0x9e,
- 0xb2,0xff,0xda,0x42,0xe0,0xea,0x4c,0x41,0x07,0x3e,0x8e,0x30,0x80,0x14,0xb4,0x7b,
- 0x15,0x34,0xfb,0x3d,0x07,0x97,0x5b,0xdd,0x4d,0xea,0x59,0x65,0xfe,0xff,0x59,0xd4,
- 0xc9,0x3c,0x8e,0x45,0xa6,0xd1,0x7e,0x8a,0x0e,0xa5,0x1c,0x36,0x66,0x25,0x47,0x1c,
- 0x36,0x99,0x7a,0x36,0x9a,0x7b,0x3c,0xb2,0x3f,0x9d,0x5d,0x03,0xbb,0x12,0x76,0x49,
- 0xec,0xc2,0xd8,0x17,0x80,0xe8,0x10,0xbf,0xd4,0xbe,0x76,0xab,0xfb,0x94,0xc5,0xed,
- 0xb8,0x9c,0x0f,0xe4,0x96,0x63,0x4a,0xd9,0x31,0xab,0x5c,0x10,0xdb,0x3a,0x7a,0x6e,
- 0xae,0x1a,0x77,0x5a,0xc3,0xfd,0xc6,0x3e,0x60,0x00,0x14,0x43,0x22,0xc6,0x73,0x6b,
- 0x7b,0x16,0xd1,0x8e,0x67,0xb9,0xb2,0xfe,0x8b,0x14,0xb4,0xce,0x38,0x60,0xbd,0x53,
- 0x48,0x17,0x6b,0x9f,0x42,0x0a,0xa2,0x11,0x47,0x9e,0xff,0x3e,0xf2,0x7d,0xfe,0x53,
- 0xee,0x6a,0x72,0x36,0x5c,0x16,0xf6,0x9e,0x61,0xe2,0x8d,0xb0,0x06,0x98,0xe1,0xf6,
- 0x11,0xb3,0xb3,0xb4,0xcf,0x52,0x59,0xc5,0x20,0x94,0xf1,0x65,0x8a,0x47,0xac,0xc1,
- 0x1e,0xea,0x6d,0xb5,0x78,0x74,0x7c,0xdc,0x6a,0xad,0x73,0x8e,0x79,0xc3,0x51,0xae,
- 0xac,0xd5,0x04,0xa3,0x52,0x3d,0xd7,0x26,0x3a,0xb6,0x99,0x8f,0x09,0x66,0x9f,0x43,
- 0x00,0xca,0x09,0xe2,0x09,0x3a,0xf6,0x57,0x83,0x85,0xbd,0x3b,0x9f,0xe5,0xe2,0xfe,
- 0x3b,0xdf,0xd9,0x7f,0x0b,0xab,0xa0,0xa5,0x29,0xe8,0x19,0x01,0x8c,0x03,0x9e,0xa4,
- 0xd3,0x88,0xa3,0x72,0xc7,0x11,0xba,0xcd,0x62,0xd0,0x1f,0x47,0x38,0xed,0x7b,0xfc,
- 0xf6,0x76,0x9e,0xca,0xd9,0xc6,0xe5,0x19,0xe6,0x33,0xfc,0xe4,0x51,0x5f,0x1b,0x33,
- 0x5c,0xf6,0x69,0x49,0x1b,0x6e,0xa5,0xc2,0x96,0x16,0x19,0xe0,0x5f,0x2d,0xba,0x4f,
- 0xf3,0x12,0xaf,0xf6,0x94,0x1d,0x57,0xca,0x08,0x21,0xa3,0xdb,0xb8,0xdb,0x25,0xdb,
- 0xb8,0x8a,0x9e,0x5b,0x9f,0x15,0xb7,0x5d,0xae,0x57,0xd2,0x62,0x3f,0xaf,0x72,0xfa,
- 0x06,0x08,0xaa,0x1c,0xe2,0x01,0x4e,0xcd,0xba,0xac,0xf9,0x8e,0xf8,0x6f,0x4e,0x08,
- 0xac,0x96,0x82,0xce,0x69,0x84,0xe5,0x7c,0x10,0x38,0xc7,0x7f,0x65,0xe3,0x08,0xdd,
- 0x1a,0x61,0xb9,0xa7,0xa0,0x9d,0xc7,0x11,0xe6,0x6c,0x01,0x3b,0x37,0xe2,0xc8,0xf1,
- 0x5f,0x59,0x23,0x0e,0x69,0x23,0xac,0x79,0x4e,0xb3,0x18,0x64,0x8d,0x38,0xdc,0x1a,
- 0x61,0xb9,0xcf,0x62,0x10,0x8d,0x23,0x94,0x36,0xc2,0x62,0x8b,0x6d,0xae,0xc9,0xda,
- 0x6e,0x6f,0x0b,0xf5,0x77,0xf0,0x4a,0xa7,0x48,0x3f,0xc5,0x22,0x34,0x12,0xe1,0x56,
- 0x0f,0x44,0x94,0x88,0xa5,0xbc,0xb8,0xd3,0xea,0x6d,0xe6,0x75,0xd7,0x6d,0xc7,0xca,
- 0xa7,0x74,0xaa,0x82,0x3c,0xb7,0x5e,0xe8,0xb9,0x36,0xdb,0x3d,0xb6,0x29,0x2d,0xf6,
- 0xab,0x83,0x5d,0xa6,0x3f,0x37,0x00,0x28,0xc0,0xbe,0xe7,0xb7,0xd5,0xf1,0x19,0x46,
- 0x3b,0x9f,0x73,0xf5,0x5f,0xbb,0x05,0xcf,0x29,0xab,0x14,0x74,0x00,0x8d,0x38,0xb4,
- 0x52,0xd0,0xaa,0x8d,0x38,0x0a,0x7b,0x51,0x96,0xb8,0x17,0x74,0xaa,0x11,0xc7,0x9c,
- 0x31,0xbc,0x00,0x86,0x05,0x7d,0x7d,0xed,0x34,0xd8,0x6d,0x45,0x07,0xf9,0x56,0x69,
- 0xb5,0x79,0xae,0x13,0x94,0xe4,0x77,0x83,0x7d,0x0f,0x61,0x5f,0x48,0xd8,0x97,0x13,
- 0x16,0x11,0x97,0xac,0x74,0x2a,0xb8,0x26,0x18,0x7a,0xa5,0x53,0x0e,0x59,0x65,0x71,
- 0xe9,0x94,0xb8,0x7a,0x4a,0x2f,0xa5,0x5c,0xbf,0x39,0xad,0x63,0x9b,0x45,0x9e,0x6b,
- 0xb3,0x5d,0xbb,0xd8,0xc2,0x31,0xa0,0x10,0x84,0x9c,0x64,0x8c,0xff,0x85,0xda,0xf7,
- 0x02,0xed,0x7e,0x3e,0xe5,0xbf,0xcf,0x65,0xfd,0xd7,0x66,0xc1,0xaa,0x29,0x68,0xad,
- 0x83,0xc0,0xfe,0xa6,0xa0,0x3d,0x54,0x61,0xc9,0x53,0xd0,0x3a,0xbd,0xa0,0xcb,0xab,
- 0x11,0x87,0x53,0x0a,0x7a,0xfa,0xff,0xb1,0x07,0x1a,0xaf,0x16,0x4e,0x7b,0x2e,0xe6,
- 0xbb,0x39,0xc0,0xbe,0x8d,0xb0,0x2f,0xae,0xb1,0x61,0x1a,0xea,0xe6,0x59,0x82,0x96,
- 0x3a,0x81,0xf9,0x96,0xfa,0x40,0x6e,0xd1,0xdb,0xb8,0x8e,0x3b,0xb9,0x26,0xb6,0x71,
- 0x05,0x12,0xf9,0xac,0x93,0xea,0x36,0x59,0xed,0x0d,0xa6,0x3f,0x25,0x00,0x38,0x42,
- 0xd1,0x41,0x3a,0xba,0x91,0x76,0x2f,0xe4,0xe6,0xeb,0xea,0xbf,0x9e,0x52,0xd0,0xbe,
- 0x56,0x41,0x07,0xe1,0xbf,0x01,0x56,0x41,0x97,0x67,0x23,0x8e,0xc7,0xcf,0xe5,0x05,
- 0xcf,0x88,0x73,0xb5,0xe1,0xe5,0x5b,0x14,0x19,0xe4,0x47,0xa4,0x5b,0xeb,0xa8,0xf9,
- 0x88,0x86,0xf9,0x86,0x61,0x84,0x50,0x65,0xd9,0x6e,0x8e,0x06,0x31,0x1d,0x09,0x84,
- 0x10,0xa2,0x81,0x0e,0xaa,0xdd,0xc0,0x4b,0x9d,0x77,0xff,0x31,0x25,0x91,0x05,0x3b,
- 0xa7,0xa0,0x69,0xab,0x62,0x0a,0x5a,0xad,0x17,0xf4,0xc8,0x16,0xb0,0xd3,0x41,0x60,
- 0xb7,0x14,0xb4,0xac,0x17,0xf4,0x4b,0xb6,0x5e,0xd0,0x4b,0xb5,0x52,0xd0,0xe3,0x65,
- 0xbd,0xa0,0xaf,0x93,0xf4,0x82,0xce,0xf1,0x5f,0xe7,0x14,0xb4,0xe2,0x16,0xb0,0xe3,
- 0x2c,0x86,0xf3,0x25,0xfe,0xab,0xd8,0x88,0x83,0xfd,0x73,0xfd,0x34,0x0c,0x34,0x2f,
- 0x0a,0x22,0xbe,0x39,0x3e,0xdc,0xc7,0x5b,0x8b,0xb4,0x1f,0xe7,0x7b,0xe8,0xea,0x3b,
- 0xb9,0xc2,0x6d,0x5c,0xc7,0x26,0x18,0xc1,0x6f,0xe3,0x2a,0x35,0xc1,0xf0,0xea,0xb9,
- 0x92,0x6d,0x5c,0x87,0x94,0xb2,0xdc,0x73,0x37,0xe6,0xe8,0xe8,0x06,0xb6,0x6a,0x0b,
- 0x59,0x68,0x10,0x2a,0x58,0x80,0xd3,0xdd,0x44,0x35,0x6b,0xb8,0xf9,0x2a,0xf9,0xaf,
- 0xac,0x0a,0x3a,0xc7,0x7f,0x65,0x55,0xd0,0xde,0xc7,0x11,0xca,0xc6,0x01,0x7b,0x18,
- 0x47,0xe8,0x6f,0x0a,0x5a,0xb1,0x0a,0x7a,0xae,0xd6,0x16,0xf0,0x6f,0xd4,0xaa,0xa0,
- 0x7f,0xa6,0x51,0x05,0x2d,0xf4,0xdf,0x17,0xc6,0xf3,0xfe,0x51,0xc0,0x17,0x98,0x11,
- 0xc7,0xa3,0x34,0xd8,0xcd,0x8d,0xb8,0xed,0x98,0x5a,0x9c,0x5b,0xd2,0xb1,0x7d,0x6e,
- 0x71,0xae,0xa4,0x7a,0xca,0x5f,0xcf,0x15,0x55,0x4f,0x69,0xc7,0xb9,0x36,0xc3,0x2d,
- 0x54,0xfb,0x71,0x93,0x47,0xce,0x01,0xb0,0xc1,0xbe,0xa0,0xf3,0x07,0xc2,0xa1,0x15,
- 0xb4,0x77,0x11,0x17,0xb7,0xe0,0x85,0x59,0x0b,0x96,0xa7,0xa0,0xe7,0x2a,0xa5,0xa0,
- 0xd3,0x16,0x2c,0x1a,0x07,0xec,0xbd,0x11,0xc7,0x14,0xff,0xc7,0x11,0xca,0xc7,0x01,
- 0x7b,0x18,0x47,0x78,0xb5,0x5a,0x23,0x0e,0xb5,0x71,0xc0,0x39,0x55,0xd0,0xbf,0xf2,
- 0x5a,0x05,0x2d,0x6b,0x84,0xc5,0xfe,0x94,0xb6,0x7a,0xd3,0x9f,0xcd,0x4a,0x84,0x92,
- 0xbc,0x01,0x17,0xfb,0x62,0xd3,0xd1,0xc0,0x5d,0x38,0x54,0x63,0xfb,0x0a,0x4b,0xa7,
- 0xf2,0x0b,0xa8,0x04,0xa1,0xae,0x56,0x3e,0xd9,0x7b,0xf5,0x94,0x4b,0x4a,0x79,0x44,
- 0x47,0x37,0xda,0x94,0x71,0xdb,0xf5,0x02,0xd5,0xbf,0xc2,0x5b,0xac,0x00,0x60,0x1a,
- 0x4a,0x26,0x78,0x51,0xe5,0x81,0x17,0xd3,0xe6,0x9b,0xf6,0x5f,0xcf,0x29,0x68,0xa9,
- 0xff,0x6a,0x8d,0x03,0x0e,0xac,0x0a,0x5a,0x75,0x0b,0xb8,0x0c,0x1b,0x71,0x28,0x8e,
- 0x03,0x76,0xaf,0x82,0x7e,0xec,0x5c,0xf6,0x78,0xc4,0xb6,0x6f,0x90,0xf0,0x62,0x2d,
- 0x8a,0x0e,0xf1,0x70,0x98,0xb9,0xb0,0xa0,0x56,0x39,0x7c,0xe3,0x0c,0x42,0xb5,0x8d,
- 0x9b,0xb5,0x5d,0x51,0x84,0x2b,0xb4,0x5d,0xa6,0xda,0x75,0x23,0xb2,0x1a,0x77,0x12,
- 0xfa,0x42,0x03,0xa3,0x50,0x64,0x80,0x1f,0x8b,0xdb,0xfb,0x42,0x4a,0xca,0xfe,0xbb,
- 0x53,0xda,0x08,0xcb,0xf3,0x38,0xc2,0x00,0x52,0xd0,0xd2,0x46,0x58,0x41,0x57,0x41,
- 0xfb,0x30,0x8b,0x41,0xff,0x14,0x92,0xdd,0x82,0xdd,0xfc,0x57,0x54,0x05,0xfd,0xf8,
- 0xb9,0xec,0xe7,0x6b,0xfa,0xb3,0x59,0x45,0x50,0x32,0xc9,0xfb,0x73,0xf2,0xa4,0xf4,
- 0x21,0xbd,0xac,0x72,0xb5,0x95,0x4e,0x15,0xe7,0xb9,0xf9,0x6a,0x3f,0x86,0x6f,0x98,
- 0xc0,0x18,0x83,0xdd,0xfc,0x2f,0xd4,0xfe,0x25,0x0e,0xfe,0xbb,0x30,0xeb,0xbf,0xbb,
- 0x9e,0x13,0x1c,0x04,0xf6,0xde,0x08,0x4b,0x96,0x82,0xd6,0xf3,0x5f,0xc5,0x46,0x1c,
- 0x3a,0x8d,0xb0,0x4c,0x36,0xe2,0xd0,0xaa,0x82,0xfe,0x55,0x71,0x8d,0x38,0x1c,0xaa,
- 0xa0,0x5f,0x9c,0xc0,0xbe,0x98,0x99,0xfe,0x74,0x56,0x1d,0x7c,0x1b,0x68,0xb0,0x87,
- 0x4f,0x65,0x6a,0x3e,0x42,0xa7,0x9c,0x5d,0x38,0xdf,0x6d,0xdd,0x77,0x72,0x4b,0xb2,
- 0x8d,0x7b,0x3c,0xb8,0x6d,0x5c,0xd9,0x4e,0xae,0xae,0xe7,0xda,0x55,0xb7,0xc1,0x42,
- 0x16,0x1a,0x94,0x1e,0x22,0x5e,0x57,0x53,0xb7,0x91,0x99,0xaf,0xc0,0x7f,0x8b,0x4b,
- 0x41,0x2b,0x37,0xe2,0x50,0xab,0x82,0x5e,0x2f,0x6b,0x84,0xe5,0xbd,0x11,0xc7,0x3d,
- 0xda,0x8d,0x38,0x5e,0x50,0x4b,0x41,0x3f,0xaf,0x35,0x8e,0x50,0xda,0x88,0x63,0x6c,
- 0x60,0x8d,0x38,0xce,0x13,0x54,0x41,0xb3,0x3f,0xb1,0x1d,0xdb,0xbe,0xe6,0x60,0x11,
- 0x19,0xfb,0xf2,0xd3,0xdb,0x6c,0x35,0xd7,0x68,0xee,0xe4,0xca,0xe6,0x07,0xc9,0xb6,
- 0x71,0xbd,0x37,0xc1,0xa8,0xf7,0x75,0x1b,0x57,0x6b,0x27,0x57,0xd1,0x6a,0x33,0xaa,
- 0x59,0x6b,0xd3,0x1a,0x5e,0xdb,0x86,0x2c,0x34,0x28,0x31,0xbd,0xad,0x7c,0x84,0x5c,
- 0xca,0x7c,0xb9,0xf6,0x8d,0x58,0xf0,0x62,0xd3,0x29,0x68,0xfd,0x71,0x84,0x6e,0x29,
- 0x68,0xd9,0x29,0x24,0xf7,0x71,0x84,0x6e,0x29,0x68,0xd9,0x29,0xa4,0xc2,0x71,0x84,
- 0x66,0x52,0xd0,0xe7,0x6b,0xa7,0xa0,0x99,0x23,0xd7,0xae,0x43,0x52,0xce,0x3c,0x94,
- 0xb4,0xa2,0x83,0xd4,0xd7,0x62,0x9d,0x3e,0xe8,0xa5,0x7a,0xca,0x87,0xb1,0x7d,0x9e,
- 0xab,0xa7,0x8a,0xc9,0x2a,0x17,0x7a,0xae,0xef,0xb6,0xbb,0x26,0xab,0x23,0xec,0x9f,
- 0xeb,0xf8,0xac,0x10,0x00,0x4a,0x03,0xa5,0xba,0x3a,0x1f,0x5e,0x49,0x07,0x5e,0xca,
- 0xfa,0xaf,0x24,0x04,0xf6,0xb5,0x11,0x47,0x35,0x8f,0x23,0x54,0x6d,0x84,0xa5,0xdf,
- 0x88,0xc3,0x97,0x71,0x84,0xd3,0xcf,0xe5,0xd5,0xe9,0x89,0x98,0xe9,0xcf,0x28,0x18,
- 0x85,0xfd,0x6d,0x8d,0x47,0xf9,0xa0,0xe4,0xa6,0x83,0xb9,0x19,0xe6,0x4a,0xd9,0xc9,
- 0x15,0xa7,0x94,0x1d,0x3c,0x57,0xcf,0x70,0xd7,0x88,0x75,0xa4,0x40,0xc7,0x5e,0xb1,
- 0xe2,0x11,0xd3,0x3f,0x69,0x50,0x05,0x24,0x13,0xd4,0x79,0xd2,0x3a,0xb4,0x9c,0x99,
- 0xef,0x88,0x8c,0xf9,0xaf,0x56,0x15,0xb4,0xaa,0xff,0xfa,0x7a,0x0a,0xa9,0x2c,0xc7,
- 0x01,0xeb,0x54,0x41,0x17,0xfa,0x2f,0x5b,0x57,0x6c,0xc8,0xf4,0x67,0x14,0x08,0xa0,
- 0x64,0x9c,0xfa,0x5a,0x69,0x24,0x23,0x6d,0xb2,0x5c,0xb9,0x0c,0x3d,0xb7,0xd0,0x70,
- 0x47,0x74,0x78,0x55,0x56,0x2d,0x35,0xc8,0xf9,0x80,0x60,0x61,0xe6,0xdb,0x71,0x82,
- 0x0e,0xbd,0x9c,0x31,0x5f,0x49,0x08,0x5c,0xd4,0x16,0x70,0xf9,0x56,0x41,0x1b,0x6c,
- 0xc4,0x71,0x99,0x7e,0x23,0x0e,0xff,0xaa,0xa0,0xd9,0x3b,0x9c,0x39,0x6c,0xfa,0x33,
- 0x0a,0xdc,0xa0,0x44,0xdc,0xea,0x6d,0x61,0x66,0xc1,0x43,0x60,0xc1,0x36,0xae,0x0f,
- 0x23,0x84,0x1c,0xb6,0x71,0x75,0x0a,0xa8,0x84,0xa5,0x53,0xfe,0x57,0x4f,0xad,0xcd,
- 0x4a,0x6e,0xbb,0xab,0xb3,0xca,0xda,0xee,0xca,0xac,0x6a,0xd6,0x5a,0x18,0x8d,0x04,
- 0x82,0x83,0x7d,0xbb,0x6b,0x3b,0x66,0x1d,0x59,0xc5,0x47,0x1a,0x31,0x65,0x2d,0x78,
- 0xa9,0x2c,0x04,0x5e,0x28,0x0b,0x81,0xe7,0xeb,0x84,0xc0,0xb3,0x02,0x6e,0xc4,0xe1,
- 0x32,0x0e,0xb8,0xa0,0x0a,0x3a,0x88,0x46,0x1c,0xf2,0x10,0xd8,0xdf,0x46,0x1c,0xbf,
- 0xd1,0x68,0xc4,0xf1,0x84,0x73,0x15,0xf4,0xf4,0xf3,0xd8,0x4f,0x13,0x83,0x15,0xca,
- 0x83,0xd8,0xb0,0xd5,0xdb,0xcc,0xbe,0x2c,0x15,0xc6,0xb9,0xd5,0xbb,0x8d,0x2b,0x8e,
- 0x70,0x57,0x8f,0x6a,0x95,0xc8,0x76,0x5f,0xce,0x51,0xe3,0x2e,0x14,0x62,0x81,0x40,
- 0xa0,0x24,0xef,0xb7,0x76,0x78,0x95,0x75,0x70,0x79,0x81,0xff,0x2a,0xa6,0xa0,0xed,
- 0x16,0xec,0x57,0x23,0xac,0x50,0x8d,0x23,0xac,0xee,0x46,0x1c,0x0b,0x6f,0xa6,0xe1,
- 0x3e,0xd3,0x1f,0x53,0xa0,0x0c,0xfb,0x3a,0xcd,0x1b,0x77,0x34,0xd3,0xc9,0xbd,0xa1,
- 0xd8,0xc6,0xf5,0xeb,0x40,0xae,0xbf,0x59,0xe5,0xac,0x5e,0x96,0xeb,0xc8,0x4a,0x3e,
- 0x5e,0x13,0x00,0x7f,0x61,0x41,0x0d,0x37,0xdf,0x95,0xcc,0x7c,0xdd,0xfd,0x77,0xd4,
- 0x82,0xfd,0x3a,0x85,0xa4,0x9f,0x82,0x0e,0xc2,0x7f,0xb5,0x52,0xd0,0xfe,0xfa,0x6f,
- 0x48,0x1a,0x71,0x48,0xfd,0x77,0xe6,0x2f,0xa9,0xed,0x98,0xe9,0x8f,0x29,0xd0,0x67,
- 0xa4,0xa1,0x74,0x67,0xa3,0x75,0x62,0x87,0xe5,0x1c,0xfc,0xc2,0x73,0xa5,0xb2,0x0e,
- 0xad,0x60,0xe2,0x17,0x89,0x42,0x2c,0xe0,0x23,0xc9,0x04,0xef,0x31,0x3b,0xfa,0x01,
- 0xcb,0x5a,0xb0,0xe2,0x16,0xf0,0xde,0x82,0x46,0x1c,0x25,0x1e,0x07,0xac,0x37,0x8e,
- 0x50,0xb1,0x11,0x87,0xf1,0x2a,0xe8,0x20,0x1a,0x71,0x78,0x1d,0x47,0xf8,0xc4,0xcf,
- 0xf8,0x8f,0x18,0xc5,0x27,0xe5,0x0c,0x45,0x86,0xa8,0xf5,0x98,0xd5,0xb8,0xcb,0xa1,
- 0x0f,0x46,0xf1,0x23,0x84,0x82,0xdb,0xc9,0x5d,0xab,0xb3,0x93,0xbb,0x5a,0xbe,0x93,
- 0xab,0x6f,0xbb,0x39,0x6a,0x46,0x21,0x16,0xf0,0x09,0xf6,0x54,0xed,0x38,0x41,0x35,
- 0xab,0x05,0xfe,0x6b,0xb3,0x60,0x6b,0xff,0x8b,0x59,0xff,0xdd,0x27,0xab,0x82,0x16,
- 0x36,0xc2,0x72,0xac,0x82,0x76,0x6e,0xc4,0x91,0xd3,0x08,0x4b,0x67,0x1c,0xa1,0xbc,
- 0x11,0x47,0xa1,0xff,0x3a,0x1f,0x04,0x5e,0x56,0x30,0x8e,0xd0,0xcd,0x7f,0x9d,0x1b,
- 0x61,0xe5,0xf8,0xaf,0xad,0x11,0x96,0xdb,0x38,0xc2,0x42,0xff,0x2d,0x7a,0x1c,0xa1,
- 0x6a,0x23,0xac,0x51,0xff,0x65,0xef,0xb6,0xf6,0x11,0x8a,0xf4,0x9b,0xfe,0xa4,0x82,
- 0x62,0xe1,0x5d,0xdc,0xfb,0xda,0xad,0xe6,0x23,0x54,0xbf,0x35,0xa8,0xb1,0x7d,0xbe,
- 0x55,0x2c,0xcb,0x0c,0xd7,0xc9,0x73,0xc5,0xdb,0xb8,0x45,0x7b,0xee,0xe8,0x83,0x91,
- 0x3f,0x1b,0x8f,0xac,0xc2,0x5c,0x06,0xe0,0x03,0xcc,0x7c,0xbb,0x4e,0xf1,0x4f,0xb8,
- 0xfd,0x83,0x17,0xfe,0x14,0xf4,0x26,0xad,0x14,0xb4,0x62,0x23,0x0e,0x9d,0x14,0xb4,
- 0xe2,0x38,0x60,0xc5,0x46,0x58,0x9e,0xc7,0x11,0x06,0xd2,0x88,0xc3,0xe6,0xbf,0xec,
- 0xe5,0xec,0xfb,0x4c,0xc3,0x0e,0x94,0x7d,0x56,0x14,0xf1,0x08,0xdf,0x14,0x6e,0xdc,
- 0x5d,0xc4,0xe1,0x20,0x61,0xe9,0x94,0x2f,0x87,0x83,0x7c,0x2c,0x9d,0x92,0x7b,0xae,
- 0xd8,0x67,0x6d,0x56,0x6b,0x57,0xfa,0x91,0x38,0xa2,0x93,0x7b,0x10,0x02,0x83,0xa2,
- 0xe0,0x4d,0x36,0x9a,0xa9,0x76,0xbd,0xe0,0x03,0x29,0x0e,0x81,0x4d,0x34,0xe2,0x50,
- 0x4c,0x41,0x2b,0x9e,0x42,0xaa,0xcc,0x46,0x1c,0x6a,0xfe,0xab,0x95,0x82,0x66,0x31,
- 0x32,0xbb,0xb1,0x2d,0x35,0x16,0x2f,0xb8,0xc2,0x73,0xa6,0xe2,0x60,0x5f,0xbc,0x23,
- 0x03,0xd4,0x7a,0xb4,0x6a,0xb7,0x71,0xbd,0x78,0xae,0x5d,0xec,0xf7,0xf7,0xb7,0x99,
- 0xfe,0x29,0x82,0xb2,0x65,0xc4,0x7c,0xd9,0xf7,0xcc,0xdc,0x4f,0xaf,0x1f,0xfe,0x1b,
- 0xc4,0x38,0x60,0xfd,0x71,0x84,0x26,0x1b,0x71,0x68,0x55,0x61,0xa9,0x35,0xe2,0x28,
- 0x4d,0x15,0xf4,0xac,0x5f,0xf3,0xf7,0x67,0x3f,0x8b,0x9e,0x33,0x38,0x67,0x54,0xf9,
- 0xf0,0x51,0x0e,0xdd,0x7c,0x94,0x52,0xfd,0x66,0xd8,0xae,0x92,0xed,0xda,0xf2,0x81,
- 0x2c,0xfc,0xb7,0xd0,0x05,0x0e,0x78,0x81,0xa8,0xaf,0x8d,0xff,0x3d,0xca,0x7e,0xb0,
- 0xe5,0xfe,0x2b,0xb2,0x60,0x9d,0x5e,0xd0,0xf2,0x14,0xb4,0x87,0x53,0x48,0xd3,0xfd,
- 0x4c,0x41,0xdb,0xb7,0x80,0x57,0xf8,0xd4,0x0b,0x3a,0xed,0xbf,0xb2,0x5e,0xd0,0x6e,
- 0x5b,0xc0,0x85,0xfe,0x7b,0x85,0x5a,0x23,0x8e,0x42,0xff,0xfd,0x8d,0xa3,0xff,0xb2,
- 0x5f,0x5d,0x72,0x3b,0xdf,0xb2,0xef,0x3e,0x8d,0x3a,0xab,0xaa,0x82,0x12,0x51,0x6a,
- 0x3f,0xce,0xa7,0x1d,0x65,0xf6,0x73,0xc3,0xdc,0x04,0xc3,0xac,0xe7,0xe6,0xa9,0xfd,
- 0xb8,0xe9,0x9f,0x1e,0x28,0x43,0x86,0xba,0xf9,0x3c,0xdf,0x9c,0x2f,0x96,0x82,0x10,
- 0x58,0xc1,0x7f,0x5d,0xc7,0x11,0x8a,0x67,0x31,0x78,0x1e,0x47,0xe8,0x53,0x0a,0xba,
- 0x44,0xe3,0x08,0x9d,0x53,0xd0,0x8a,0x5b,0xc0,0x7a,0x29,0x68,0xc5,0x46,0x1c,0x17,
- 0x0a,0xfc,0xf7,0xe9,0x0b,0xf9,0x32,0xf7,0x2f,0xa5,0xce,0x93,0x84,0x98,0xb7,0x2a,
- 0xe1,0x3f,0xf7,0xfe,0x0e,0x3e,0x56,0xd8,0xcf,0x6e,0x18,0xea,0x9e,0xbb,0x46,0x56,
- 0x3d,0x15,0x26,0xcf,0xb5,0x75,0x25,0x62,0x17,0x6c,0x61,0x04,0x27,0xd0,0x22,0x32,
- 0xc8,0x5b,0xc2,0x66,0xff,0x16,0xac,0x1e,0xfd,0xa8,0xab,0x84,0xc0,0xd2,0x46,0x58,
- 0xb6,0x10,0x78,0x97,0x46,0x23,0x0e,0x85,0x71,0x84,0x3a,0x55,0xd0,0x81,0x8f,0x23,
- 0x94,0xa6,0xa0,0xd5,0xaa,0xa0,0x17,0xde,0x28,0x6b,0xc4,0x71,0xb5,0xd7,0x14,0xb4,
- 0xb4,0x0a,0xfa,0x57,0x3c,0x1c,0x5e,0x39,0x99,0x37,0x96,0xef,0x46,0xb6,0x19,0xf0,
- 0x96,0x59,0xd4,0x79,0xca,0xaa,0x7f,0xc5,0x63,0x3e,0xb9,0xb6,0x60,0x6c,0x9f,0x4b,
- 0x4a,0x39,0x5b,0x3a,0x95,0x57,0x40,0x55,0x74,0xf5,0x94,0xc8,0x67,0x1d,0xad,0x56,
- 0xc9,0x67,0xed,0x67,0x40,0xec,0x4a,0x3d,0x06,0x4f,0x1f,0x42,0x21,0x16,0x50,0x84,
- 0x8f,0xad,0x69,0xdc,0x95,0xdd,0x7c,0x11,0x85,0xc0,0x9a,0x29,0x68,0x7f,0xab,0xa0,
- 0xcb,0xa5,0x11,0x56,0x70,0x8d,0x38,0x14,0xc7,0x01,0xeb,0x34,0xe2,0x28,0xf4,0xdf,
- 0xd9,0xbf,0xe1,0x0b,0x39,0xb1,0xd3,0x1a,0xea,0x85,0xf3,0x82,0x2c,0x94,0xa4,0xa1,
- 0x1e,0xde,0x65,0xb1,0x56,0xd9,0x7c,0xd5,0x47,0x08,0x39,0x6e,0xe3,0xfa,0xb1,0x93,
- 0x1b,0xa0,0xed,0x2e,0x71,0xd3,0x81,0x65,0x14,0x45,0x08,0x0c,0x14,0x88,0x47,0xe9,
- 0xd4,0xde,0x9c,0xbf,0x38,0xb2,0x14,0xb4,0x5e,0x23,0x0e,0xc5,0x71,0xc0,0xc1,0x35,
- 0xe2,0xf0,0x6d,0x16,0x83,0xd7,0x2a,0x68,0x7f,0x67,0x31,0xf8,0x5f,0x05,0x7d,0x11,
- 0x7f,0x43,0xb6,0xc6,0xa6,0x03,0x94,0x84,0xed,0x02,0x31,0xfc,0xb3,0xd1,0xde,0xc0,
- 0x8b,0xb2,0x02,0xf4,0xdc,0x10,0xa6,0x94,0x97,0x66,0x24,0xf1,0xdc,0x5c,0xb1,0xaf,
- 0x2b,0x08,0x81,0x81,0x84,0x44,0x9c,0x5a,0x8e,0x0a,0xfe,0x12,0xa5,0x73,0x41,0xaa,
- 0x29,0x68,0x33,0x8d,0x38,0x36,0x97,0xb2,0x11,0x87,0xd4,0x7f,0x03,0x6b,0xc4,0xe1,
- 0xf3,0x38,0x42,0x7b,0x0a,0xfa,0x22,0x5e,0xe2,0xc5,0xee,0x09,0x0b,0x6d,0xe2,0xc3,
- 0xa6,0x3f,0x8b,0x20,0xf4,0x30,0x43,0xe9,0x6f,0xa7,0xc6,0x3d,0xa9,0x40,0xb8,0xd2,
- 0xb7,0x71,0xd5,0x3d,0x77,0x5f,0x5a,0xa3,0xa1,0x47,0x4a,0xec,0x91,0x38,0xd8,0x69,
- 0xfa,0x07,0x06,0xc2,0x0b,0x51,0x92,0x3a,0x1a,0x78,0x41,0x85,0xd0,0x7f,0x9d,0x42,
- 0x60,0x33,0x55,0xd0,0x1e,0xc6,0x11,0xfa,0x5a,0x05,0xbd,0x72,0x72,0xd6,0x82,0x55,
- 0x1b,0x71,0x28,0x8e,0x23,0x94,0x56,0x41,0x5f,0xaf,0x51,0x05,0x3d,0xff,0x8a,0xac,
- 0x05,0xcf,0x75,0x0d,0x81,0xd9,0x6b,0xb7,0xcc,0xa2,0x13,0x3b,0x50,0x2b,0x02,0xf4,
- 0x60,0x1f,0x98,0xd6,0x3a,0xbe,0x11,0xac,0xd4,0x04,0xc3,0xd7,0x6d,0xdc,0x40,0xac,
- 0x56,0xb8,0x93,0x2b,0x0b,0x6f,0x59,0x94,0x91,0x51,0xd6,0x76,0x17,0xdb,0xb4,0xc8,
- 0x3a,0xbe,0x15,0x73,0x91,0x80,0x13,0xd4,0xdd,0xc4,0x5b,0xcc,0xe5,0xd7,0x54,0xac,
- 0xb5,0x85,0xc0,0x25,0x4e,0x41,0xeb,0x54,0x41,0x6f,0x09,0xa0,0x0a,0x7a,0x8d,0x5a,
- 0x0a,0xba,0x70,0x1c,0x61,0x79,0xa5,0xa0,0xd9,0xaf,0xb2,0x1b,0x78,0xfa,0x10,0x6f,
- 0xa3,0x81,0x14,0x19,0xf0,0x40,0x22,0x4e,0x3d,0x67,0xf8,0xd3,0x43,0xaf,0xf7,0x54,
- 0xa8,0x22,0x5c,0xbf,0x3c,0xd7,0x6e,0xbb,0x8b,0x72,0xc4,0x82,0xe2,0xde,0x66,0xd3,
- 0x3f,0x2a,0x10,0x46,0x68,0xa0,0x8b,0x9f,0x36,0xca,0x9c,0x26,0x70,0x0b,0x81,0x9d,
- 0xfd,0xd7,0xf3,0x38,0x42,0x83,0x8d,0x38,0x54,0x1b,0x61,0xe9,0x57,0x61,0xf9,0xdb,
- 0x08,0x4b,0xab,0x11,0x87,0x4a,0x0a,0x7a,0xee,0x25,0xf4,0xec,0x95,0xfc,0x56,0x74,
- 0x34,0x50,0x74,0x08,0xce,0x0b,0x8a,0x82,0x88,0x86,0xfb,0xf9,0xce,0x85,0x78,0x33,
- 0xb7,0xb4,0xa5,0x53,0x7a,0x9e,0xab,0xb3,0x8d,0xbb,0xf7,0x05,0x07,0x2d,0x52,0xd2,
- 0xd1,0x75,0x16,0x42,0x60,0x90,0x0b,0x45,0x07,0xa8,0x61,0xdb,0x68,0x1f,0x1b,0xa9,
- 0xff,0x6a,0x57,0x41,0x2b,0x8f,0x03,0x56,0x4a,0x41,0x07,0x32,0x0e,0x38,0x08,0xff,
- 0x0d,0xef,0x38,0xe0,0x4b,0xf8,0x99,0xa6,0xf5,0xd3,0x78,0x6b,0x41,0x14,0x36,0x03,
- 0xff,0xa0,0x64,0x9c,0x5a,0x8f,0xf1,0xc7,0x48,0x48,0xcb,0x95,0x3d,0x95,0x4e,0x15,
- 0xe9,0xb9,0xf6,0x27,0x1e,0x53,0x7b,0xbd,0xe9,0x9f,0x12,0x08,0x13,0xb1,0x61,0x6a,
- 0xda,0x9f,0xdb,0x47,0x2e,0xd7,0x82,0xa5,0x5b,0xc0,0xc1,0xa5,0xa0,0xb5,0x1a,0x71,
- 0x94,0x57,0x15,0xb4,0xbc,0x11,0x87,0x87,0x14,0xb4,0xc2,0x38,0xc2,0xe7,0x6f,0xe0,
- 0x77,0x83,0x57,0x58,0xa1,0x2d,0x1e,0x08,0x80,0x91,0xa6,0xb5,0xc7,0xb7,0x86,0xe6,
- 0x70,0xae,0x4e,0xc5,0xf2,0x3e,0x87,0xea,0xa9,0xdc,0x9d,0x5c,0x2f,0xb6,0xbb,0x67,
- 0x61,0x5a,0x87,0x5e,0xb6,0xa2,0x28,0x6e,0x04,0x29,0x88,0xa8,0xb5,0xce,0xd6,0x53,
- 0x7d,0xa3,0x28,0x04,0xb6,0x6d,0x01,0xfb,0xdc,0x88,0x63,0x61,0x41,0x23,0x0e,0x97,
- 0x2a,0x68,0xad,0x10,0x78,0xa6,0xaf,0x29,0xe8,0x29,0xe1,0x48,0x41,0x4b,0x1b,0x71,
- 0xb8,0xa6,0xa0,0xd9,0xbf,0x6c,0x7c,0x9c,0x0f,0x2a,0x1a,0xee,0x35,0xfd,0xb1,0x03,
- 0x95,0xce,0x50,0x0f,0xff,0x56,0x3f,0xfa,0xa0,0x30,0x5a,0x3d,0xa5,0x10,0xe1,0x8a,
- 0xb7,0x71,0x9d,0x77,0x72,0x25,0x56,0x6b,0x13,0xef,0xf5,0xb7,0x70,0xb4,0xe3,0xdf,
- 0xa8,0x5a,0x8f,0x99,0xfe,0xf1,0x80,0x10,0xc0,0xbe,0xa9,0xf6,0xb6,0xf0,0x13,0x7c,
- 0xf6,0x99,0x26,0xc1,0xa4,0xa0,0xad,0xe0,0xc6,0x11,0x2a,0xa6,0xa0,0xf5,0xc6,0x11,
- 0xaa,0xa5,0xa0,0xb5,0xc6,0x11,0xbe,0x64,0x74,0x1c,0x21,0xbb,0xec,0xc6,0xdd,0x34,
- 0xd0,0x85,0x7d,0x5e,0x50,0x22,0x62,0xc3,0x56,0xc7,0x09,0xde,0x7d,0x31,0x9c,0x15,
- 0xcb,0x3e,0xa6,0x94,0xf3,0x3d,0xf7,0x8f,0x22,0x3d,0x9f,0xd5,0xc1,0x15,0xc8,0x3e,
- 0x01,0x1a,0xee,0xb7,0x1a,0xb6,0xe5,0xcf,0x14,0x2b,0x22,0x05,0xed,0xa9,0x17,0xb4,
- 0x34,0x05,0xed,0xef,0x29,0xa4,0x19,0x6a,0xfe,0xab,0x95,0x82,0xd6,0xf2,0xdf,0xc0,
- 0xaa,0xa0,0x85,0xfe,0xfb,0xfc,0xf5,0xb4,0x62,0x12,0xcf,0x36,0xa3,0xc2,0x0a,0x94,
- 0x1e,0xf6,0x91,0xeb,0x6b,0xa3,0xda,0xb5,0x41,0x7a,0x6e,0xf1,0x3b,0xb9,0x25,0xf1,
- 0x5c,0xbb,0xd8,0x53,0xae,0x0d,0x21,0x70,0x75,0x13,0x1b,0xa6,0x93,0x7b,0xe9,0xd8,
- 0x66,0x25,0xff,0xf5,0xa5,0x11,0x87,0x0f,0xe3,0x80,0xc3,0x51,0x05,0x1d,0xc8,0x38,
- 0x42,0xbf,0xab,0xa0,0x17,0xde,0xc8,0xd3,0xe6,0xec,0xe7,0x1b,0x8f,0x9a,0xfe,0xa8,
- 0x81,0xea,0x66,0xa8,0x97,0x8e,0x6f,0xb5,0x0e,0xae,0x28,0xce,0x76,0x97,0x6a,0xec,
- 0xe4,0xee,0x73,0xda,0xc9,0xf5,0x6f,0x1b,0x77,0xcf,0x42,0x07,0xcf,0xb5,0xd9,0xee,
- 0x2e,0x9b,0xd2,0x0f,0xb7,0x74,0xaf,0x21,0x6b,0xff,0x52,0x9e,0x1f,0x00,0xd5,0x09,
- 0x25,0xa8,0xa5,0x36,0x65,0xbe,0x85,0xfe,0x2b,0xdc,0x02,0xf6,0xa3,0x0a,0x7a,0x5f,
- 0xe6,0xaf,0x80,0xe7,0x46,0x58,0x76,0xff,0x95,0xce,0x62,0x78,0xd2,0xa1,0x11,0x96,
- 0xa8,0x11,0x87,0xa0,0x11,0x96,0x73,0x23,0x8e,0x1c,0xff,0x9d,0x2c,0xf3,0x5f,0x5b,
- 0x23,0xac,0xa5,0x5a,0x8d,0xb0,0x5c,0x1a,0x71,0x5c,0xef,0x36,0x8e,0x90,0xfd,0x9f,
- 0x35,0x0f,0xf3,0x5d,0xfb,0xc1,0x2e,0x4c,0x09,0x04,0xa1,0x20,0x32,0xc0,0xbf,0xed,
- 0xe7,0x99,0xaf,0xef,0x15,0xcb,0xe2,0xd2,0x29,0xcd,0x6d,0x5c,0x71,0xa8,0xab,0xec,
- 0xb9,0xbb,0x9d,0x3c,0x77,0xe4,0xc9,0xb6,0x60,0xf4,0xf9,0xb6,0x80,0x9a,0x6b,0x4d,
- 0xff,0x54,0x80,0x09,0xd8,0x43,0xb9,0xb7,0x85,0x37,0x63,0xc9,0xf3,0xdf,0xea,0x4a,
- 0x41,0x07,0x50,0x05,0x9d,0x6e,0xc4,0x21,0x4d,0x41,0x2b,0x36,0xc2,0xf2,0x34,0x8e,
- 0x90,0x7d,0x1f,0xa8,0x5d,0x67,0xf5,0x34,0x63,0x62,0x02,0x08,0x17,0x2c,0xdc,0x6b,
- 0xa9,0xb1,0x0e,0x2d,0xf7,0x79,0x1b,0x57,0xde,0x04,0x43,0xc1,0x76,0x25,0xa5,0x53,
- 0x0b,0xe5,0x59,0x65,0x16,0x3b,0x64,0x24,0xf6,0xdc,0x05,0x39,0x8f,0x35,0x26,0xb6,
- 0xd8,0x58,0xc4,0xf4,0x4f,0x05,0x94,0x1a,0x8a,0x0e,0x52,0xe3,0x4e,0xeb,0xf8,0x16,
- 0x26,0x87,0x10,0x58,0x9a,0x82,0x96,0x9d,0x42,0xd2,0xab,0x82,0xd6,0x4a,0x41,0xab,
- 0x9d,0x42,0x0a,0x30,0x05,0xad,0x73,0x0a,0x29,0x88,0x14,0xb4,0x93,0xff,0xb2,0x08,
- 0xfa,0xf0,0x4a,0xea,0x6b,0xb3,0x92,0x71,0xd3,0x1f,0x31,0x00,0x44,0xb0,0x4f,0x66,
- 0x47,0x23,0x7f,0x44,0x04,0x52,0x3a,0xe5,0xc7,0x4e,0xae,0x4a,0x78,0x6b,0xdf,0xc6,
- 0x15,0xeb,0x59,0x35,0x2d,0xa0,0xd6,0xa3,0xa6,0x7f,0x24,0xa0,0xb4,0x24,0xe2,0x74,
- 0xfa,0xe0,0x88,0xf9,0x0a,0xfc,0xf7,0x98,0x9a,0xff,0x06,0xde,0x88,0x43,0x71,0x1c,
- 0x30,0xc6,0x11,0x5e,0xcf,0x47,0x33,0x2c,0xbd,0x8b,0xdf,0x67,0x3e,0x25,0x10,0xd9,
- 0x66,0x10,0x7a,0xfa,0x3b,0x2c,0xf6,0x30,0xf1,0xad,0x7a,0xaa,0xec,0x6c,0xd7,0xf6,
- 0x58,0xdb,0xfb,0x82,0x15,0x1b,0x34,0xfd,0xf3,0x00,0xa5,0x82,0x88,0x3a,0x4f,0xf0,
- 0x5a,0x88,0x8c,0xff,0xd6,0x6b,0xa5,0xa0,0xd7,0x9a,0x9b,0xc5,0xa0,0xd3,0x88,0x63,
- 0xb3,0x73,0x2f,0x68,0x97,0x2d,0x60,0xa5,0x59,0x0c,0x53,0x24,0x55,0xd0,0x2b,0x26,
- 0x4a,0x7a,0x41,0x17,0xce,0x62,0x10,0x36,0xe2,0x90,0x6f,0x01,0xa7,0xfc,0x97,0xfd,
- 0x71,0x7b,0x16,0x52,0x6f,0x33,0xf6,0x79,0x41,0x39,0xc1,0xbe,0x2b,0xb2,0xa7,0x90,
- 0x53,0xa8,0x2b,0x2f,0x9d,0x0a,0xae,0x7a,0x4a,0xb4,0x8d,0x9b,0xb3,0x93,0xeb,0x9c,
- 0x4f,0x56,0x31,0xdc,0x1d,0xa3,0x9d,0xed,0x47,0x65,0xb1,0x68,0x08,0x54,0x07,0x34,
- 0xdc,0x4b,0x27,0x76,0xd8,0xfd,0x77,0x34,0x04,0x7e,0x45,0x23,0x05,0xad,0xd8,0x08,
- 0x4b,0xab,0x0a,0x3a,0xbd,0xc3,0x12,0x40,0x0a,0x7a,0x93,0xbf,0x8d,0x38,0x3c,0x8f,
- 0x23,0xf4,0x3b,0x05,0xcd,0x5c,0x7b,0xc7,0x3c,0x6a,0x3e,0x42,0x09,0x1c,0x24,0x04,
- 0x65,0x48,0xaa,0x22,0x2b,0xc7,0x82,0x25,0x8d,0xa7,0x8a,0x09,0x72,0x8b,0xf4,0xdc,
- 0xe7,0xfc,0xf5,0xdc,0x91,0x47,0x59,0x5a,0x7b,0x17,0x5b,0x38,0xa1,0x50,0x05,0xb0,
- 0x07,0x35,0x9d,0x39,0x4c,0xc7,0xb7,0x89,0xfc,0xb7,0x30,0x04,0xde,0x98,0xb5,0x60,
- 0x71,0x0a,0x3a,0xff,0x14,0x92,0x6a,0x08,0xbc,0x4f,0xd6,0x88,0x43,0xa7,0x11,0x96,
- 0xb5,0x6d,0x8e,0x5a,0x15,0x96,0xda,0x38,0xe0,0xf5,0x8a,0xe3,0x80,0x9d,0xc6,0x11,
- 0xba,0xa4,0xa0,0x7d,0x1d,0x07,0xcc,0xae,0xbc,0xe9,0x00,0x1f,0x57,0x04,0x40,0xf9,
- 0x12,0x8f,0x50,0x4b,0x4d,0xb6,0x86,0x2a,0xa8,0xd2,0xa9,0x85,0x92,0x7c,0xb2,0x87,
- 0xd2,0x29,0x89,0xd5,0xda,0xb3,0x76,0x19,0x65,0x3d,0x77,0xf4,0x21,0x96,0x16,0xb5,
- 0xa1,0x23,0x74,0xe5,0x43,0x9d,0x27,0xe9,0x38,0x0b,0x7e,0xb7,0xf3,0xd6,0xac,0xf6,
- 0x14,0xb4,0xbf,0x55,0xd0,0xaa,0x29,0x68,0x9d,0x2a,0xe8,0x40,0xc6,0x01,0x07,0xd1,
- 0x88,0x43,0x6d,0x1c,0xb0,0xe7,0x46,0x1c,0x4c,0xec,0x7d,0xea,0x37,0xd3,0x50,0x0f,
- 0xb6,0x7a,0x41,0x25,0x90,0x4c,0x58,0xad,0x75,0x2c,0x0a,0x2e,0xef,0x6d,0xdc,0x7c,
- 0xdb,0x9d,0x27,0x54,0x9e,0xed,0x66,0x1e,0x65,0xfc,0x80,0x15,0xb2,0x58,0x15,0x0d,
- 0x0d,0x76,0xa7,0x32,0xcf,0xdb,0x0b,0xfd,0xb7,0x34,0x55,0xd0,0x0a,0x29,0x68,0xe9,
- 0x38,0x60,0xfd,0x14,0x74,0x10,0xe3,0x80,0x8d,0xa4,0xa0,0xd9,0x3f,0xd9,0x9b,0xb3,
- 0xbf,0xa7,0x51,0x54,0x6b,0x80,0xca,0x82,0x7d,0x93,0xec,0x68,0xa0,0x83,0x2f,0x55,
- 0x95,0xe7,0xe6,0x89,0xda,0xea,0x4c,0xff,0x18,0x40,0x60,0xb0,0x2f,0x57,0xa7,0x0f,
- 0x72,0xff,0x6d,0x18,0xf1,0x5f,0x59,0x0a,0x5a,0xaf,0x11,0x87,0xe2,0x2c,0x86,0xc2,
- 0x46,0x1c,0x2e,0x29,0xe8,0x20,0x1a,0x71,0xe8,0x54,0x41,0x7b,0x48,0x41,0x4b,0x1b,
- 0x71,0xa4,0x2d,0x58,0x9a,0x82,0x2e,0xa8,0xc2,0x5a,0xf1,0x3b,0x7e,0x37,0x3a,0x4e,
- 0xa0,0xc8,0x0a,0x54,0x26,0xec,0x93,0xdd,0xd1,0xc8,0x9f,0x24,0x12,0xcf,0x2d,0xbe,
- 0x09,0x86,0xaf,0xd5,0x53,0xc5,0x79,0x6e,0x8e,0xff,0xee,0x5f,0x6a,0x25,0xb0,0x0b,
- 0x5c,0x89,0xb0,0xcf,0x76,0xcf,0x19,0x3a,0xb1,0x93,0xfb,0xaf,0x43,0x08,0x1c,0x44,
- 0x23,0x0e,0x85,0x71,0x84,0x3a,0x55,0xd0,0x3b,0x47,0x3f,0xf9,0x1a,0xe3,0x08,0x9d,
- 0xab,0xa0,0xd3,0x16,0x3c,0x5d,0x2d,0x04,0x9e,0x9a,0x6f,0xc1,0xaa,0x8d,0x38,0x74,
- 0xaa,0xa0,0x85,0xfe,0xbb,0xe4,0x36,0xfe,0xed,0xe2,0xf4,0x41,0x2b,0x8e,0x73,0xfa,
- 0xa0,0xb2,0x61,0x8f,0xa9,0x66,0x3a,0xb2,0x2a,0x80,0x26,0x18,0x45,0x6f,0xe3,0x3a,
- 0xec,0xe4,0x3a,0xf8,0xac,0xc4,0x6a,0xf3,0x9d,0x97,0x87,0x0f,0x29,0x61,0x2e,0x70,
- 0x45,0x12,0x19,0xe0,0x83,0xc0,0x5c,0xfd,0xd7,0xaa,0xd7,0xaa,0x82,0x5e,0xeb,0x35,
- 0x05,0xed,0xbc,0x05,0x5c,0x66,0x29,0x68,0x97,0x53,0x48,0xfe,0x8d,0x03,0x66,0x6f,
- 0xde,0xb0,0xdd,0x1a,0xec,0xc6,0x56,0x2f,0xa8,0x0a,0x58,0xa4,0xd0,0xdf,0xce,0x1f,
- 0x2c,0x4e,0x63,0xfb,0x9c,0xc6,0x19,0x48,0xaa,0xa7,0xbc,0xa6,0x94,0x73,0x6c,0x57,
- 0x1a,0xde,0x7a,0xb5,0xdd,0xf4,0xb3,0xeb,0x69,0xda,0xff,0x12,0x3a,0xe7,0x54,0x1a,
- 0x94,0xb4,0x5a,0x8f,0xf2,0xc1,0x73,0xdc,0x7f,0xf3,0x2d,0x58,0xa1,0x0a,0xba,0xbc,
- 0xc6,0x11,0x96,0x4b,0x23,0x0e,0xd7,0x2d,0x60,0x66,0xc4,0xcb,0xee,0xa1,0x7d,0x4b,
- 0x78,0x91,0x55,0x32,0x61,0xfa,0x03,0x04,0x40,0x29,0x21,0x2b,0x3a,0x40,0x35,0xeb,
- 0x6c,0xce,0xeb,0x3c,0x42,0x28,0x7c,0xdb,0xb8,0xae,0x86,0xfb,0xb4,0x83,0x66,0x8f,
- 0xea,0x69,0x6a,0x6f,0x30,0x7d,0xff,0x81,0xaf,0xf4,0xb5,0xd1,0xc9,0xdd,0x55,0xe3,
- 0xbf,0xe5,0x3f,0x0e,0x78,0xf9,0x7d,0x6c,0x15,0x56,0x57,0x23,0x62,0x5e,0x50,0xb5,
- 0x50,0x6c,0x98,0x3f,0x79,0xf2,0xcc,0x37,0xac,0xa5,0x53,0xc5,0x79,0xae,0x4d,0xec,
- 0x79,0x75,0x60,0xa9,0x85,0x42,0xe8,0x8a,0x21,0x16,0xb1,0xce,0x1c,0x4c,0xfb,0x6f,
- 0xda,0x82,0x9d,0x53,0xd0,0x25,0xaa,0x82,0x96,0xa6,0xa0,0x03,0x68,0xc4,0xf1,0x8a,
- 0x5a,0x23,0x0e,0xb3,0x55,0xd0,0xec,0x3f,0x5f,0x99,0x69,0x35,0xec,0xa0,0xd8,0x90,
- 0xe9,0xcf,0x0d,0x00,0xa6,0x89,0x0e,0xf1,0x67,0x51,0xbe,0xed,0x16,0x5f,0x3d,0xe5,
- 0xd0,0x04,0xc3,0x07,0xdb,0x9d,0x93,0x91,0xb6,0xed,0x66,0xc4,0xfe,0xb3,0xa3,0xd1,
- 0xf4,0xad,0x07,0x3e,0xd1,0x79,0x92,0x9b,0x6f,0x8e,0xff,0xa6,0x2c,0xb8,0x61,0x87,
- 0x52,0x15,0x74,0x4e,0x23,0x0e,0x97,0x10,0x58,0x63,0x1c,0x70,0xce,0x1c,0xb1,0x40,
- 0x1a,0x71,0x78,0x18,0x47,0xe8,0x6b,0x23,0x0e,0x79,0x0a,0x5a,0xd4,0x88,0x83,0xbd,
- 0x4f,0xed,0x5a,0xab,0xb7,0x85,0xe7,0xdf,0x00,0x00,0x16,0x2f,0x5c,0xb1,0xea,0x37,
- 0xfb,0xb3,0x93,0x2b,0xda,0xc6,0xf5,0x29,0xc2,0x2d,0xd8,0xc6,0x55,0xb4,0x5a,0x27,
- 0x1d,0x5e,0x65,0xfa,0xbe,0x03,0x3f,0x18,0x1e,0xa0,0x53,0xfb,0xd2,0xfe,0xeb,0x9c,
- 0x82,0x0e,0xba,0x0a,0xba,0x7c,0xc6,0x11,0x06,0xd0,0x88,0xe3,0x65,0xa5,0x71,0x84,
- 0xd6,0x8e,0xb9,0x56,0xd7,0x49,0xf4,0xa0,0x03,0x20,0x9f,0xe8,0x20,0x3f,0x05,0xe9,
- 0x5f,0x56,0xd9,0xa7,0xd2,0x29,0xe5,0xd8,0x56,0xd1,0x73,0xed,0x0f,0x2b,0xf6,0x56,
- 0x83,0x5d,0xa6,0xef,0x3b,0x28,0x8e,0x64,0xd2,0x6a,0x39,0x9a,0x35,0x5f,0xbd,0x14,
- 0xb4,0x9a,0xff,0x6a,0xf5,0x82,0x36,0xe8,0xbf,0xc1,0x55,0x41,0xab,0xfa,0xaf,0x43,
- 0x0a,0x9a,0x05,0xc2,0xeb,0x1e,0xa6,0x53,0xfb,0xe1,0xbc,0x00,0x38,0x41,0xb1,0x08,
- 0x4f,0xc1,0xed,0x2a,0x08,0x7e,0x2b,0xc9,0x73,0xf3,0x54,0xb7,0x11,0x79,0xb0,0xb2,
- 0x86,0x06,0x3a,0x53,0xc1,0xef,0x5e,0x91,0xff,0xda,0x2d,0x58,0xb6,0x05,0x7c,0x4c,
- 0xab,0x11,0x47,0x70,0xe3,0x08,0xfd,0x6d,0xc4,0xa1,0x98,0x82,0x0e,0xb2,0x0a,0x9a,
- 0xbd,0x1b,0xbb,0x0f,0x43,0xbd,0xa6,0x3f,0x29,0x00,0x84,0x1d,0x8a,0x47,0xa9,0x7e,
- 0x0b,0x3f,0x5e,0xa4,0x32,0xce,0xa0,0x58,0xdb,0x9d,0xa3,0xb0,0x93,0xeb,0xd9,0x73,
- 0x67,0x65,0x55,0x68,0xbb,0xa3,0xcf,0x28,0x6b,0xeb,0xd3,0xd6,0x30,0x9e,0x0c,0x65,
- 0x0b,0xfb,0xb8,0x36,0x1f,0xa1,0x93,0xb9,0xfe,0x2b,0x4e,0x41,0x17,0x6c,0x01,0xbb,
- 0x8d,0x23,0x2c,0xf4,0x5f,0xc7,0x71,0x84,0x9a,0x8d,0xb0,0x3c,0x8c,0x23,0xd4,0x3a,
- 0x85,0x14,0xdc,0x38,0x42,0x59,0x23,0xac,0xc2,0x71,0x84,0xbc,0x99,0xd5,0xb3,0xa9,
- 0xb9,0x45,0x38,0xeb,0x07,0x80,0x12,0x3c,0x0a,0x6e,0xd8,0x41,0x3b,0x16,0x04,0xe3,
- 0xb9,0xcf,0xf8,0x50,0x3a,0xa5,0x62,0xbb,0xce,0x9e,0x6b,0xd3,0x4c,0xae,0x13,0x3b,
- 0x4c,0xdf,0x72,0xe0,0x89,0x91,0x6e,0x57,0xa7,0xf6,0x73,0x15,0xfa,0x6f,0xe3,0x2e,
- 0x63,0x29,0x68,0x9f,0x1b,0x71,0xcc,0xf7,0x3a,0x8e,0x50,0x96,0x82,0xd6,0x1b,0x47,
- 0xa8,0xd9,0x88,0x63,0xdd,0x34,0xeb,0xf8,0x36,0x0b,0xfb,0x3b,0x00,0xe8,0x12,0x1b,
- 0xb6,0xd8,0x13,0x2c,0x90,0xd2,0xa9,0x39,0xfe,0x59,0xad,0xfd,0x3b,0x7f,0x46,0x4e,
- 0x56,0x6b,0x3f,0x9a,0x91,0x51,0xea,0x01,0xc5,0x9e,0x6f,0x51,0x9c,0x83,0x28,0x3f,
- 0xf8,0x17,0xc5,0xd3,0x07,0x6d,0xfe,0xeb,0x9c,0x82,0x56,0x3c,0x85,0x14,0xc8,0x41,
- 0xe0,0xa5,0x1a,0x29,0x68,0xf9,0x29,0xa4,0xb9,0x1a,0xfe,0x9b,0xb6,0x60,0x7f,0xc7,
- 0x01,0x2b,0xa4,0xa0,0x5f,0x9e,0x68,0xed,0x59,0xc8,0x2b,0x9c,0xd1,0xe2,0x06,0x00,
- 0x6f,0xc4,0x23,0x54,0xbf,0xa5,0xa4,0x07,0x72,0x8b,0xd9,0xc6,0x75,0xf1,0xdc,0x74,
- 0x14,0x50,0xa8,0xcc,0x73,0xe9,0x09,0x3a,0x73,0xd8,0xf4,0xed,0x06,0xba,0x10,0x1f,
- 0x32,0xd8,0xb4,0x9f,0xab,0xd0,0x7f,0x7d,0x68,0xc4,0xe1,0x32,0x0e,0xb8,0xc8,0x71,
- 0x84,0x01,0x34,0xe2,0xd0,0xaa,0x82,0x56,0xdd,0x02,0xf6,0x50,0x05,0x3d,0x99,0x1f,
- 0xec,0x6d,0xad,0x43,0x4b,0x0d,0x00,0x8a,0x84,0x92,0x09,0xf6,0x74,0xb2,0xb6,0xcf,
- 0xaf,0x50,0xdb,0xb5,0x69,0xd7,0x02,0xf4,0xe2,0x28,0x33,0x22,0xfd,0x74,0xe6,0x10,
- 0x35,0x1d,0x48,0xfb,0x6f,0xda,0x82,0xf7,0xe4,0xfa,0xaf,0x62,0x0a,0x5a,0xad,0x17,
- 0x74,0xce,0x16,0xf0,0x6a,0x1d,0xff,0x75,0x1e,0x47,0xb8,0x47,0xad,0x11,0xc7,0x76,
- 0x9d,0x59,0x0c,0x39,0x5b,0xc0,0x2e,0x8d,0x38,0x3c,0xf8,0xaf,0x6b,0x0a,0x9a,0xbd,
- 0xf6,0xd0,0xcb,0xbc,0x93,0x24,0x00,0xc0,0x0f,0x78,0x39,0x56,0xdd,0x26,0xe7,0xc8,
- 0x57,0xbf,0x74,0x4a,0xb7,0x7a,0x4a,0x7d,0x1b,0xf7,0x95,0x99,0xb9,0x3e,0xfb,0xc4,
- 0xa8,0x44,0x86,0x5b,0xa8,0xd6,0x63,0xa6,0x6f,0x36,0x50,0x85,0x28,0x69,0xb5,0x37,
- 0xf0,0xe4,0x33,0x53,0x8e,0xff,0x16,0x9d,0x82,0x56,0x6c,0x84,0x95,0x0e,0x81,0x95,
- 0xb6,0x80,0xf5,0xaa,0xa0,0x03,0x49,0x41,0xeb,0x34,0xe2,0xf0,0x90,0x82,0x5e,0x39,
- 0x99,0xb6,0xcf,0xb5,0x4e,0x1f,0xb2,0x50,0x67,0x05,0x80,0xbf,0x44,0x07,0xd8,0xb3,
- 0x48,0xb6,0x93,0xeb,0xcb,0xe1,0xa0,0xe2,0xb6,0x71,0x73,0x3c,0x57,0xc1,0x76,0x37,
- 0xe6,0x6a,0xdf,0x12,0x74,0x80,0x2f,0x17,0x68,0x38,0x15,0xfc,0x66,0xfc,0x57,0x25,
- 0x05,0x6d,0x6b,0x84,0xa5,0xd0,0x88,0x63,0xa3,0x5a,0x23,0x8e,0x95,0xda,0x29,0xe8,
- 0x7d,0xb2,0x71,0x84,0x85,0x8d,0xb0,0xdc,0x0e,0x02,0xcf,0xf1,0x3f,0x05,0x9d,0xd3,
- 0x08,0x4b,0xa1,0x0a,0x7a,0xf5,0x83,0x56,0xed,0x5a,0xab,0xaf,0xdd,0xf4,0x87,0x02,
- 0x80,0x0a,0x25,0xd2,0x6f,0x1d,0x59,0x55,0x81,0x9e,0xbb,0xd1,0x76,0x28,0x83,0xbd,
- 0xbc,0xbf,0xd5,0xf4,0x8d,0x06,0x0a,0x10,0x51,0xfb,0xf1,0xb4,0xf9,0xda,0xfd,0x57,
- 0x5c,0x05,0xed,0x6b,0x23,0x0e,0xdf,0xc6,0x01,0xeb,0x37,0xe2,0x48,0x59,0x70,0xb8,
- 0x1a,0x71,0x30,0x6d,0xfa,0x83,0xd5,0x7e,0x1c,0x5d,0x35,0x00,0x08,0x14,0x8a,0xf4,
- 0xd3,0xfe,0xa5,0xfe,0x55,0x2c,0x2b,0x6f,0xe3,0x3a,0xee,0xe4,0xaa,0x65,0x95,0x25,
- 0xb6,0xfb,0x78,0x8e,0x58,0x98,0x0f,0x42,0x0f,0x45,0x6c,0xc1,0xaf,0xaa,0xff,0x06,
- 0x90,0x82,0xd6,0x39,0x85,0xa4,0x9c,0x82,0xf6,0x75,0x16,0x43,0x20,0xa7,0x90,0x46,
- 0x2d,0x78,0xe3,0xe3,0x7c,0x38,0x72,0x2c,0x62,0xfa,0xe3,0x00,0x40,0x55,0x40,0x91,
- 0x41,0x3a,0xb0,0xb4,0xd2,0x3c,0xd7,0xfe,0x14,0xda,0x34,0x9d,0xd0,0xa5,0x27,0xe4,
- 0xb0,0xe0,0xb7,0xe3,0x44,0x8e,0xff,0xe6,0x6c,0x01,0xab,0x34,0xc2,0x2a,0xb2,0x11,
- 0x47,0xd1,0x8d,0xb0,0x02,0x69,0xc4,0xa1,0x33,0x8e,0x50,0xaf,0x11,0x56,0x41,0x0a,
- 0x9a,0x69,0xe7,0x02,0xab,0xed,0x18,0x8a,0x9c,0x01,0x28,0x25,0xbc,0xd7,0xdf,0xbe,
- 0x17,0x8b,0x2a,0x9d,0xca,0xf7,0x5c,0x61,0xe9,0x94,0x7e,0xf5,0x94,0xc0,0x73,0xa7,
- 0xa7,0x25,0x36,0xdc,0xd1,0x27,0x4f,0xae,0xac,0xfa,0xad,0xa6,0xef,0x31,0x70,0x25,
- 0xd2,0x6f,0x9d,0x39,0xcc,0xfd,0x57,0x23,0x04,0xf6,0xb5,0x0a,0xba,0x76,0x6d,0x50,
- 0xe3,0x08,0xf7,0x48,0xc7,0x11,0x6a,0x35,0xe2,0x98,0x25,0x0b,0x81,0xa7,0x7b,0x09,
- 0x81,0xd9,0xef,0xaf,0xdb,0x88,0xae,0x1a,0x00,0x98,0xa1,0xb7,0xc5,0x62,0x4f,0x89,
- 0x60,0xb7,0x71,0x65,0xb6,0xeb,0xb2,0x8d,0x9b,0x95,0x9b,0xcf,0xe6,0x7f,0xe7,0xcf,
- 0x88,0x3d,0xc7,0xa2,0x83,0xa6,0x6f,0x31,0x70,0x80,0xf8,0x99,0x5f,0xe6,0xbf,0x69,
- 0x0b,0xce,0x86,0xc0,0xae,0xa7,0x90,0xc2,0x92,0x82,0x56,0x6c,0xc4,0xa1,0x98,0x82,
- 0xd6,0xaa,0x82,0x96,0x8d,0x03,0x56,0xf4,0xdf,0xed,0x73,0x88,0x85,0xbd,0xd8,0xed,
- 0x05,0xc0,0x18,0x44,0x5d,0xa7,0xf8,0x57,0xf1,0x1c,0xdb,0x55,0x49,0x29,0x17,0x7a,
- 0xae,0x66,0x9c,0x2b,0xb7,0x5d,0x49,0x78,0xeb,0x68,0xbb,0x59,0x3d,0x46,0x4d,0x07,
- 0x4c,0xdf,0x61,0x20,0x86,0xef,0x36,0x36,0xd7,0x88,0xfc,0x57,0xf9,0x14,0x92,0x97,
- 0x46,0x1c,0xeb,0xb5,0xab,0xb0,0xc2,0xdf,0x88,0x43,0x77,0x16,0xc3,0xfa,0x47,0xd8,
- 0x92,0xad,0xe1,0x3e,0xe4,0x9c,0x01,0x30,0x0c,0xfb,0x3b,0xd8,0xd9,0x48,0xdb,0xe6,
- 0x84,0x74,0x1b,0x57,0xdb,0x73,0x73,0xb5,0x7d,0x2e,0xa1,0x17,0x47,0x38,0xe9,0x69,
- 0xb6,0x9a,0x8f,0x38,0xfa,0xaf,0x66,0x23,0x2c,0x13,0xe3,0x80,0xa5,0x8d,0x38,0xc2,
- 0x37,0x0e,0x78,0xed,0x23,0xb4,0x63,0x1e,0xb5,0x1e,0x85,0xf3,0x02,0x10,0x16,0x88,
- 0xa8,0xa5,0x96,0x1f,0x47,0xaa,0x0c,0xcf,0x1d,0x79,0xe0,0x8c,0x8a,0x3f,0xe4,0x41,
- 0xd8,0x88,0x47,0xb9,0x0b,0xd8,0xfd,0x37,0x67,0x0b,0xd8,0x54,0x0a,0x7a,0x75,0xde,
- 0x41,0x60,0xdf,0xaa,0xa0,0x77,0x69,0x55,0x41,0xcb,0xc6,0x11,0xa6,0xf3,0x4e,0x6a,
- 0x8d,0x38,0xd6,0x4d,0x4b,0x1f,0x04,0x66,0xbf,0xa1,0x66,0xad,0x35,0xd8,0x69,0xfa,
- 0x67,0x0f,0x00,0xc8,0x81,0x92,0x09,0xeb,0xc4,0x2e,0xda,0xfc,0x54,0x41,0x01,0x95,
- 0xce,0x81,0x5c,0x69,0xf5,0x94,0x63,0x01,0x95,0x67,0xcf,0x9d,0x96,0x55,0xc6,0x73,
- 0xd9,0xa3,0x26,0x23,0xf6,0x9d,0x7f,0xf7,0xf3,0xe8,0xe4,0x13,0x3a,0xfa,0xdb,0xad,
- 0x96,0x1a,0xee,0xbf,0x45,0x86,0xc0,0x0d,0x0e,0x55,0xd0,0x6e,0x8d,0x38,0x02,0x48,
- 0x41,0xef,0x53,0x4c,0x41,0x2b,0x8d,0x03,0x0e,0x24,0x05,0xbd,0x6d,0x0e,0xbf,0xe1,
- 0xb1,0x61,0xd3,0x3f,0x78,0x00,0x80,0x88,0x78,0xd4,0x62,0x4f,0x27,0x1f,0x9b,0x60,
- 0xa8,0xef,0xe4,0xea,0x85,0xb7,0xd3,0x6c,0x72,0xf0,0x5c,0xbb,0xd8,0xaf,0x76,0x9d,
- 0x34,0x7d,0x73,0x41,0x16,0x4a,0x26,0xf9,0x81,0x17,0x66,0x07,0x23,0x16,0x2c,0x0e,
- 0x81,0x5d,0xab,0xa0,0x65,0x29,0x68,0xf3,0xe3,0x08,0x75,0x1a,0x71,0xe8,0x1d,0x04,
- 0xf6,0xd0,0x88,0x63,0xff,0x52,0xea,0x6b,0x43,0xce,0x19,0x80,0x50,0x13,0x1d,0xa4,
- 0x03,0xcb,0xfc,0x4e,0x29,0xfb,0xe2,0xb9,0x8f,0x08,0x94,0xe7,0xb3,0xce,0xb2,0x0e,
- 0xaf,0x34,0x7d,0x67,0x41,0x16,0x7e,0x2e,0xbb,0xa5,0x36,0xeb,0xbf,0x29,0x0b,0xd6,
- 0x3c,0x85,0xa4,0xd8,0x08,0x2b,0xd8,0x2a,0x68,0x3f,0xc6,0x01,0x07,0xdc,0x88,0x83,
- 0x4f,0xc4,0xde,0x65,0x25,0x50,0xe4,0x0c,0x40,0x19,0x40,0x91,0x01,0xfe,0xc4,0x08,
- 0xdf,0x36,0xae,0xae,0xe7,0xe6,0x1c,0xb5,0x60,0x31,0xf8,0x70,0xbf,0xe9,0x5b,0x0b,
- 0x52,0x24,0x93,0xd4,0xd9,0x28,0xf7,0xdf,0x12,0x54,0x41,0x97,0xc1,0x38,0xc2,0x82,
- 0xf6,0x38,0xea,0x29,0xe8,0x8d,0xd3,0xd9,0x9f,0x6e,0x75,0x22,0xf3,0x03,0x40,0x39,
- 0x41,0xfd,0x1d,0xb4,0x73,0x9e,0x6f,0xdb,0xb8,0x4a,0xb6,0xab,0xb0,0x8d,0x2b,0xd1,
- 0x54,0x9b,0x1e,0x2c,0x94,0xd5,0xb8,0xdb,0xf4,0x7d,0x05,0x1c,0x8a,0x0e,0xf2,0xca,
- 0xab,0x02,0xff,0x75,0xdd,0x02,0xde,0x27,0x4a,0x41,0x0b,0x1a,0x71,0x88,0x1a,0x61,
- 0x39,0x37,0xe2,0xc8,0xf1,0xdf,0xb5,0x3e,0xf9,0xaf,0x87,0x46,0x58,0x9e,0xc7,0x11,
- 0x0a,0x67,0x31,0xa4,0xfe,0x6e,0xb2,0xb0,0xf7,0xe8,0x06,0x6b,0xb0,0xdb,0xf4,0x4f,
- 0x1b,0x00,0xa0,0x09,0x91,0xd5,0x71,0x82,0x9f,0x48,0x52,0xea,0x3d,0x55,0x4c,0xa8,
- 0x5b,0xe0,0xb9,0x76,0xdb,0x55,0x8a,0x70,0xdd,0x3c,0x37,0x47,0x5b,0x9f,0x46,0x15,
- 0x56,0x18,0xa0,0xde,0xe6,0x94,0xf9,0xd6,0x2a,0x84,0xc0,0x2a,0x55,0xd0,0x01,0xa4,
- 0xa0,0x8f,0x88,0xc6,0x01,0x17,0xdb,0x08,0x2b,0x88,0x71,0x84,0x0e,0x8d,0x38,0xb6,
- 0xcf,0x25,0x76,0x3f,0x51,0x6a,0x05,0x40,0x99,0xc2,0x2c,0xb8,0xb9,0x96,0xff,0x05,
- 0x97,0xf6,0x9e,0xd2,0x4a,0x29,0x7b,0xa8,0x9e,0xd2,0x0f,0x75,0x05,0x4d,0xe6,0xb9,
- 0xa6,0x52,0x47,0x83,0xe9,0xdb,0x5a,0xf5,0x24,0x63,0xd4,0x56,0xef,0xe4,0xbf,0x1a,
- 0x55,0xd0,0xa5,0x4d,0x41,0x2b,0x36,0xc2,0x0a,0x30,0x05,0xed,0xd6,0x0b,0x3a,0x77,
- 0x9f,0x88,0x05,0xe0,0xbc,0xd4,0x2a,0x69,0xfa,0x27,0x0d,0x00,0x28,0x82,0x64,0x82,
- 0x1f,0xeb,0x10,0xda,0xae,0xb6,0xe7,0x16,0xb9,0x8d,0xfb,0x90,0xdc,0x67,0xc5,0x9e,
- 0x6b,0xd3,0xaa,0x07,0x68,0xff,0x8b,0x28,0x01,0x35,0xcc,0x40,0x17,0xb5,0xd5,0xd9,
- 0xfc,0xb7,0x56,0xb5,0x0a,0x3a,0x34,0x8d,0x38,0xc2,0x3b,0x8e,0x90,0xfd,0x1e,0xb6,
- 0xe4,0x24,0x92,0x3c,0x00,0x54,0x04,0x94,0xe4,0xbd,0x08,0x84,0x27,0x0a,0x4b,0x51,
- 0x3d,0xe5,0x93,0xed,0x66,0xb4,0xfa,0x41,0x0c,0x16,0x37,0x49,0x32,0x69,0x75,0x9d,
- 0x64,0xfe,0x9b,0x6b,0xc1,0xee,0xfe,0xab,0x9c,0x82,0x6e,0xd0,0x9a,0xc5,0xb0,0x51,
- 0xe4,0xbf,0xf6,0x2d,0x60,0x59,0x23,0x0e,0xbd,0x46,0x58,0x0b,0x0b,0x1a,0x71,0x08,
- 0x0e,0x02,0x8b,0xfc,0xd7,0xb9,0x11,0xc7,0x2b,0xb9,0x8d,0x38,0xd8,0xfb,0xa3,0xab,
- 0x15,0x00,0x95,0x05,0x2f,0x87,0xde,0xb3,0xb8,0x84,0xdb,0xb8,0x0a,0x29,0x65,0x47,
- 0xcf,0x9d,0x92,0x96,0xdd,0x73,0xb3,0x4a,0x4d,0x18,0xaf,0x5d,0x6f,0xfa,0x8e,0x56,
- 0x31,0x91,0x41,0x6a,0x3b,0xe6,0xe8,0xbf,0x2e,0x29,0x68,0x61,0x15,0xb4,0x38,0x04,
- 0x96,0x6d,0x01,0x07,0x3d,0x8e,0xd0,0xad,0x11,0x56,0x30,0xe3,0x08,0x5f,0x99,0x69,
- 0x1d,0x59,0xcd,0x07,0xa9,0x00,0x00,0x2a,0x8f,0xde,0x16,0x5e,0x8b,0x15,0x96,0x6d,
- 0xdc,0xbc,0xf0,0x76,0x8a,0x4d,0xb9,0x56,0x5b,0xa8,0x95,0xbf,0xa7,0x0d,0xd3,0xad,
- 0xc8,0x80,0xe9,0x1b,0x5a,0x95,0x10,0x51,0x4f,0x8b,0xc8,0x7f,0x95,0x53,0xd0,0xa7,
- 0x84,0x55,0xd0,0x82,0x71,0xc0,0x39,0x16,0x5c,0xaf,0xd3,0x88,0xa3,0xf8,0x14,0xf4,
- 0x3e,0xfd,0x2a,0xe8,0x62,0x7a,0x41,0x6f,0x9e,0x65,0x9d,0xd8,0xc9,0xc7,0x38,0x02,
- 0x00,0x2a,0x13,0xa2,0xd6,0x3a,0x5e,0xff,0x5c,0xa6,0x9e,0x9b,0xa3,0xfb,0xad,0xa6,
- 0xfd,0xa6,0xef,0x67,0x35,0x42,0xc9,0x04,0xb5,0x37,0xa4,0xfc,0x57,0x12,0x02,0x7b,
- 0x3a,0x08,0x1c,0xfa,0x46,0x1c,0x01,0x8c,0x23,0xb4,0xd8,0x6f,0xee,0x68,0x44,0x55,
- 0x3f,0x00,0x15,0x4e,0x32,0xc9,0x1b,0xed,0xda,0x33,0xcc,0x25,0xde,0xc6,0xcd,0xdb,
- 0xc9,0xd5,0xb6,0x5d,0x9b,0xb6,0xcf,0x45,0x75,0x68,0xe9,0xa1,0xe1,0x5e,0x6a,0x3f,
- 0xae,0xe2,0xbf,0xde,0xc7,0x11,0x2a,0xfa,0xef,0x31,0xc5,0x53,0x48,0x81,0xa5,0xa0,
- 0x8b,0xf7,0xdf,0x6d,0x73,0xf8,0x85,0x0d,0xf5,0x9a,0xfe,0xa9,0x02,0x00,0x4a,0x01,
- 0xef,0xd9,0x7b,0x74,0x1d,0x9f,0x5f,0x66,0xa4,0x74,0x4a,0xea,0xb9,0x2e,0x86,0x5b,
- 0xa8,0x01,0x8c,0x80,0x29,0x39,0x3d,0xcd,0xdc,0x7f,0xd3,0x16,0x2c,0x4a,0x41,0xfb,
- 0xda,0x88,0x23,0xa7,0x0a,0xba,0xbe,0x34,0xe3,0x08,0x8b,0xae,0x82,0x56,0x4c,0x41,
- 0xef,0x7c,0xd6,0x3a,0xb9,0x8b,0xa2,0x38,0xde,0x0b,0x40,0x15,0x41,0xf1,0x08,0x7f,
- 0xaa,0x14,0xd3,0x04,0xc3,0x63,0xe9,0x94,0xa7,0x38,0x37,0xad,0xc9,0x69,0xbd,0x3c,
- 0x29,0xab,0xa3,0x1b,0x4d,0xdf,0xcb,0xea,0x82,0x12,0x31,0x9e,0x7c,0xce,0xfa,0x6f,
- 0xca,0x82,0xd3,0x5d,0xb0,0xb4,0xb6,0x80,0x8b,0x19,0x47,0xf8,0x8a,0x5a,0x08,0xbc,
- 0xb6,0xa0,0x11,0x87,0xe2,0x38,0xc2,0xa5,0x45,0x37,0xe2,0x98,0x2f,0x0f,0x81,0x79,
- 0x9d,0x73,0x2d,0xbb,0xa1,0xa6,0x7f,0xa4,0x00,0x80,0x52,0x43,0xfd,0xed,0xb4,0x65,
- 0xb6,0x3f,0x3b,0xb9,0xe2,0x6d,0x5c,0x3f,0xc2,0xdb,0x97,0x27,0xdb,0x64,0xb3,0xdd,
- 0x97,0x7f,0x97,0xd6,0xc6,0x19,0x14,0x8b,0x98,0xbe,0x97,0xd5,0xc4,0x60,0x77,0xda,
- 0x7c,0x3d,0xa6,0xa0,0x0f,0x04,0x92,0x82,0xae,0x13,0x9d,0x42,0x2a,0x4d,0x0a,0x7a,
- 0xd7,0xf3,0xea,0x29,0x68,0x6b,0xdb,0xe8,0x29,0xa4,0x7d,0x2f,0x50,0xcf,0x19,0xec,
- 0x9e,0x00,0x50,0xa5,0x10,0x51,0x5b,0x3d,0xaf,0xbf,0xf2,0xa1,0x7a,0xca,0x97,0xf0,
- 0x56,0x68,0xbb,0x93,0xc4,0xb6,0x9b,0xd1,0xca,0x49,0xd4,0x5c,0x6b,0xfa,0x56,0x56,
- 0x0d,0xbc,0xf2,0xf9,0x4c,0xd6,0x7f,0xd5,0x53,0xd0,0x2a,0xe3,0x90,0x9c,0x1b,0x61,
- 0x79,0x1f,0x47,0x68,0x64,0x16,0x83,0x7b,0x0a,0x9a,0xa9,0x66,0x1d,0x0d,0xf7,0xe1,
- 0x84,0x2f,0x00,0x55,0x4d,0x32,0xc1,0x13,0x80,0x6b,0x45,0x3b,0xbc,0x41,0x97,0x4e,
- 0x09,0x3c,0x77,0x92,0x83,0x0a,0x3c,0x97,0x69,0xf9,0xc4,0xac,0x76,0x3c,0x8b,0x47,
- 0x59,0x69,0xa0,0x44,0x8c,0xb7,0x13,0xef,0x68,0x50,0x0d,0x81,0xcb,0x6b,0x1c,0xb0,
- 0x62,0x23,0x8e,0x62,0xc6,0x11,0xb2,0x60,0xf9,0xd4,0x5e,0x34,0xb6,0x02,0x00,0x70,
- 0x28,0xc9,0xb7,0xc6,0xd6,0x4e,0x0d,0x93,0xe7,0x8a,0x0c,0x37,0xcf,0x73,0xb3,0xba,
- 0x97,0xff,0x52,0x3f,0x7a,0x61,0x95,0x02,0x1a,0xea,0xe1,0xe6,0x9b,0xe3,0xbf,0xf5,
- 0xda,0xa7,0x90,0xf2,0x1b,0x61,0x39,0x87,0xc0,0xe9,0x46,0x58,0xdb,0xd4,0xaa,0xa0,
- 0x03,0x4b,0x41,0xef,0x93,0xa6,0xa0,0x1d,0x1b,0x61,0xe5,0x84,0xc0,0xfb,0x96,0x50,
- 0xeb,0x51,0x42,0xce,0x19,0x00,0x30,0x0a,0x9f,0x22,0xc7,0x1e,0x1d,0xf6,0xd2,0x29,
- 0x69,0xef,0x29,0x6d,0xdb,0x9d,0x9c,0x23,0x77,0xdb,0x5d,0x91,0xab,0xac,0xd5,0xde,
- 0x67,0xd3,0xbd,0x39,0xaa,0x59,0x63,0xfa,0x2e,0x56,0x01,0xa9,0xe4,0x73,0x7e,0xfc,
- 0x5b,0x6c,0x0a,0x5a,0xa5,0x11,0x47,0x41,0x08,0xec,0x6f,0x23,0x8e,0x92,0xa4,0xa0,
- 0x89,0xfd,0x11,0xdd,0xa7,0x91,0xa8,0x01,0x00,0xe4,0xc1,0x37,0xf5,0x36,0xce,0xf0,
- 0xff,0x70,0x90,0xfa,0x36,0x2e,0xb7,0xdd,0x89,0x69,0xe5,0x47,0xb8,0x0e,0x9e,0x6b,
- 0xd7,0xba,0x69,0x38,0xc4,0x11,0x34,0x14,0x8f,0xf2,0x1e,0x11,0x23,0xfe,0x2b,0x4a,
- 0x41,0x7b,0x6a,0x84,0x25,0x4a,0x41,0x57,0x5c,0x23,0x0e,0x9e,0x62,0xe2,0x03,0x7c,
- 0x61,0xbe,0x00,0x80,0x42,0x88,0x17,0xa6,0xf2,0x54,0xb3,0xb9,0x6d,0xdc,0xbc,0xac,
- 0xb2,0xba,0x96,0xdd,0xcb,0xdd,0xb9,0xf9,0xb0,0xe9,0x7b,0x58,0xe1,0xf0,0x1e,0x11,
- 0x1d,0x27,0x5c,0xfc,0xd7,0x64,0x23,0x0e,0xd5,0x71,0xc0,0x6b,0xd4,0xfd,0xd7,0x9f,
- 0x46,0x1c,0x3b,0x17,0x50,0xc3,0x36,0xfe,0xd5,0x05,0x00,0x00,0x9c,0xa0,0x24,0x7f,
- 0x76,0xf1,0xb4,0x73,0x99,0x78,0x6e,0xae,0xac,0xad,0xcf,0xe0,0x34,0x47,0x80,0x10,
- 0x59,0x7d,0x2d,0x56,0xa7,0x28,0xfe,0x2d,0x32,0x05,0xad,0x3c,0x0e,0x38,0xc0,0x71,
- 0x84,0xaa,0x29,0x68,0xcd,0x5e,0xd0,0xec,0x25,0x6c,0xa5,0xf8,0x58,0x02,0x00,0x64,
- 0xb0,0x6f,0xe9,0xfc,0x31,0xa2,0xbe,0x93,0x2b,0xb5,0x5d,0xf1,0x36,0xae,0xeb,0x4e,
- 0xae,0xaa,0xed,0xde,0x93,0xd5,0x4b,0x77,0x73,0x2d,0xbb,0x8f,0x7a,0x9a,0x4d,0xdf,
- 0xc2,0xca,0x25,0x99,0xa0,0xae,0x93,0x23,0xfe,0xeb,0x96,0x82,0xf6,0xd0,0x88,0xa3,
- 0xa8,0x46,0x58,0x85,0xe3,0x08,0x85,0xfe,0xbb,0x36,0xb0,0x46,0x58,0x0b,0x1d,0xfd,
- 0x97,0xbd,0x03,0xbb,0x33,0x30,0x5f,0x00,0x80,0x22,0x7d,0xad,0x7c,0x3a,0x83,0x8b,
- 0xed,0xaa,0x84,0xba,0x62,0xcf,0x55,0xdb,0xc9,0x95,0x84,0xba,0xb9,0x9e,0x9b,0xd6,
- 0x5d,0x69,0x1d,0x5d,0x67,0xfa,0xf6,0x55,0x2e,0x91,0xfe,0xb4,0xff,0x0a,0x43,0x60,
- 0x2f,0xb3,0x18,0x54,0xc6,0x01,0x8f,0x54,0x41,0x6b,0x8d,0x23,0x94,0x56,0x41,0xfb,
- 0xdb,0x08,0xab,0xb0,0x11,0x47,0xaa,0x0a,0x9a,0xfd,0x11,0xbd,0x2d,0xa8,0xb6,0x02,
- 0x00,0xe8,0x40,0x56,0xd3,0x81,0x74,0xfe,0x59,0xdc,0x7b,0xca,0xe1,0x70,0x50,0xa6,
- 0x7a,0x6a,0x85,0x53,0x9c,0x2b,0xb3,0xdd,0x82,0x94,0x72,0x5a,0x2f,0xdd,0x63,0x53,
- 0x81,0xe7,0x72,0xdd,0x99,0xd6,0x86,0xc7,0x2c,0x9c,0xac,0x0c,0x88,0xfe,0x76,0x37,
- 0xff,0x2d,0xb6,0x17,0xb4,0xca,0x38,0xe0,0xed,0x01,0x8d,0x03,0xf6,0xbd,0x0a,0xda,
- 0xaa,0xdb,0xc0,0xdb,0x6b,0xa0,0xda,0x0a,0x00,0xa0,0x4b,0x32,0x4e,0x07,0x57,0x98,
- 0xda,0xc6,0x4d,0x19,0xee,0xdd,0x0e,0xba,0x53,0xa0,0x17,0x6d,0x5a,0x7a,0x97,0xd5,
- 0x5e,0x6f,0xfa,0xf6,0x55,0x22,0x94,0xb4,0x7a,0x4e,0xdb,0xfd,0xb7,0x14,0x55,0xd0,
- 0xaa,0x8d,0x38,0xc2,0x54,0x05,0xbd,0x7b,0x21,0xbf,0xe6,0x24,0x5a,0x3a,0x03,0x00,
- 0xbc,0x92,0x88,0xf2,0x2e,0xb5,0xe5,0x62,0xbb,0x76,0xed,0x5c,0x80,0xa4,0x9f,0xef,
- 0xf0,0x69,0x1d,0x5d,0x27,0x47,0xe4,0xec,0xbf,0xfa,0x8d,0x38,0xf2,0xab,0xa0,0x85,
- 0x29,0xe8,0x1d,0x1a,0x8d,0x38,0xea,0xd4,0x1a,0x71,0x1c,0xd6,0x48,0x41,0xe7,0x34,
- 0xc2,0x72,0x6b,0xc4,0xf1,0x3c,0xaf,0xce,0x6a,0x3a,0x80,0x0c,0x0c,0x00,0xa0,0x58,
- 0xba,0x9b,0x78,0x5f,0xca,0x92,0x6e,0xe3,0xde,0x2d,0x48,0x29,0x33,0x2d,0x1d,0x55,
- 0xbe,0xdb,0x4e,0x18,0xd5,0x1d,0x59,0xad,0x98,0x48,0x03,0x1d,0xa6,0xef,0x5d,0xc5,
- 0x31,0xd8,0x93,0xe3,0xbf,0x76,0x0b,0xce,0x4f,0x41,0x8b,0x42,0x60,0x5f,0x53,0xd0,
- 0xe1,0xac,0x82,0x66,0x36,0x4d,0xcd,0x35,0x16,0x22,0x5f,0x00,0x80,0x0f,0x10,0xd5,
- 0x6f,0xb1,0x99,0xaf,0x4e,0xc5,0xb2,0xc6,0x36,0xae,0xc3,0x4e,0xee,0x52,0xa1,0xed,
- 0x4e,0xc8,0xd5,0x1d,0x62,0xd5,0x61,0x22,0xa1,0xaf,0x10,0x51,0x6f,0x4b,0xc6,0x7f,
- 0x95,0xaa,0xa0,0xbd,0xa4,0xa0,0x45,0x55,0xd0,0x8d,0x92,0x2a,0xe8,0xd1,0x46,0x58,
- 0x6a,0x55,0xd0,0xf6,0x71,0x84,0x7e,0xa5,0xa0,0x47,0xfc,0x77,0xdf,0x12,0xab,0xbd,
- 0x01,0xe6,0x0b,0x00,0xf0,0x8d,0xd8,0x90,0xb5,0xf3,0xd9,0x30,0x79,0xae,0x83,0xe1,
- 0xda,0xb5,0xe4,0x76,0x16,0xb6,0x23,0x07,0xe8,0x23,0x7c,0xe0,0x6f,0x57,0x93,0x96,
- 0xff,0x16,0x91,0x82,0xf6,0x69,0x1c,0xa1,0x6a,0x23,0x0e,0x1f,0xc6,0x11,0x5a,0xfb,
- 0x97,0x5a,0xbc,0xd4,0x19,0xe7,0x8c,0x00,0x00,0x7e,0x42,0xfd,0x1d,0xbc,0x29,0x96,
- 0x3f,0x3b,0xb9,0xa2,0x6d,0x5c,0xc7,0x9d,0x5c,0x05,0xab,0xcd,0xe8,0x85,0xdb,0x72,
- 0xb4,0xe4,0x76,0x7e,0x0a,0x15,0xf8,0x04,0xc5,0x86,0x55,0xfd,0x57,0x5c,0x05,0xad,
- 0xd0,0x08,0x4b,0xb3,0x11,0x47,0x10,0x55,0xd0,0xde,0xfc,0xd7,0xaa,0x59,0x4d,0xfd,
- 0x9d,0xa6,0x7f,0x44,0x00,0x80,0xca,0x84,0x3f,0x2d,0x5f,0x9e,0xa4,0x70,0x4a,0xc8,
- 0xa8,0xe7,0xe6,0x69,0xdb,0x1c,0x54,0x61,0xf9,0x05,0x9f,0x79,0xc4,0xfd,0xb7,0x49,
- 0x6f,0x0b,0xb8,0x54,0x8d,0x38,0x4a,0x35,0x8e,0xb0,0x30,0x05,0xbd,0x98,0xea,0x36,
- 0x58,0xbc,0xab,0x33,0x00,0x00,0x04,0x43,0x32,0xce,0x1f,0x35,0xc2,0xc6,0x53,0xcb,
- 0x64,0x07,0x72,0x97,0xfa,0x91,0x55,0x5e,0x72,0x7b,0x56,0xee,0xb6,0xcb,0x75,0x2b,
- 0x17,0xfb,0xa3,0xfb,0x30,0x91,0xd0,0x0f,0xf8,0xe6,0x6f,0x9b,0xd5,0x7d,0x5a,0x39,
- 0x04,0xf6,0x50,0x05,0xad,0xdb,0x88,0x43,0x58,0x05,0xfd,0x4a,0x81,0x05,0x07,0xdb,
- 0x88,0xc3,0xaa,0xdf,0x62,0x0d,0xf7,0x9a,0xfe,0xf1,0x00,0x00,0x2a,0x9d,0x81,0x2e,
- 0xde,0x14,0xab,0xa8,0x6d,0xdc,0xe0,0x3d,0x37,0xad,0x5b,0xd2,0xaa,0x59,0x6b,0xfa,
- 0xae,0x55,0x02,0x94,0x4c,0x5a,0x3d,0x67,0x52,0x87,0x7f,0x99,0xff,0x9e,0x52,0x0e,
- 0x81,0x7d,0x4a,0x41,0xfb,0xd0,0x88,0x63,0x83,0xef,0x29,0x68,0x3e,0xc6,0xb7,0x7e,
- 0xab,0x15,0x19,0x30,0xfd,0xc3,0x01,0x00,0x54,0x07,0x2d,0xb5,0xbc,0x0a,0xda,0xaf,
- 0x53,0x42,0x52,0xdb,0x95,0x7b,0xee,0x6d,0x02,0xcf,0xb5,0x6b,0xf5,0x83,0x14,0x8f,
- 0x99,0xbe,0x6b,0x65,0x0f,0xc5,0x86,0x98,0xf9,0x8e,0xfa,0xaf,0x7a,0x0a,0x5a,0xd4,
- 0x08,0x2b,0xf0,0x71,0x84,0x3e,0x9d,0x42,0x72,0x4f,0x41,0x1f,0x78,0x91,0x85,0xe1,
- 0x16,0xe6,0x19,0x01,0x00,0x4a,0x06,0x25,0x79,0x13,0xfb,0x65,0x77,0xf9,0xbc,0x8d,
- 0x2b,0xdd,0xc9,0xcd,0x91,0xc8,0x67,0x9d,0xb4,0xe4,0x56,0x6a,0x6f,0x30,0x7d,0xd7,
- 0xca,0x1e,0xde,0x47,0x71,0xc4,0x7f,0xbb,0x5d,0xfd,0xd7,0xe7,0x46,0x1c,0xc2,0x2a,
- 0xac,0x00,0x1a,0x71,0xa4,0x2d,0x58,0xb9,0x11,0x07,0xfb,0xcf,0xa6,0x7d,0xa8,0xae,
- 0x07,0x00,0x94,0x18,0x16,0x4e,0xd2,0x96,0xd9,0xde,0x63,0x5b,0xbd,0xf0,0xd6,0x35,
- 0xb6,0x75,0xd2,0x62,0xbb,0xc6,0xd3,0xae,0x05,0xe8,0xc1,0x5b,0x24,0x34,0xd8,0x39,
- 0xe2,0xbf,0xe2,0x14,0xb4,0xbf,0x55,0xd0,0x2a,0xa7,0x90,0x0c,0x56,0x41,0x1f,0x5c,
- 0x41,0xcd,0x87,0x29,0x81,0xa4,0x0a,0x00,0xc0,0x00,0xd4,0x79,0x92,0xcf,0x62,0xf0,
- 0xb6,0x8d,0x2b,0xb7,0x5d,0xd1,0x36,0xae,0x9e,0xed,0x8e,0xcf,0x6a,0xd1,0x38,0x9e,
- 0x21,0x8f,0xf4,0x9b,0xbe,0x67,0x65,0x0c,0x25,0x93,0x7c,0x88,0x4f,0x8e,0xff,0x2a,
- 0x86,0xc0,0xa3,0x07,0x81,0x3d,0x54,0x41,0x17,0xd5,0x88,0x23,0xa8,0x14,0x34,0xff,
- 0xf7,0x96,0xa3,0x16,0xcc,0x17,0x00,0x60,0x0a,0x22,0xfe,0x34,0x93,0x3a,0xaf,0x8f,
- 0xdb,0xb8,0x6e,0x11,0xee,0xa8,0x16,0x8d,0x1f,0xd5,0xb8,0x5c,0xdd,0x4c,0x27,0x76,
- 0x99,0xbe,0x65,0x65,0x0c,0x9f,0x07,0x9d,0x2a,0xbe,0x12,0xfa,0xaf,0xf7,0x46,0x1c,
- 0x4a,0x5b,0xc0,0x61,0x6a,0xc4,0x71,0x70,0x59,0xaa,0xbd,0x15,0xd2,0xce,0x00,0x00,
- 0xa3,0x44,0x87,0x68,0xcb,0xac,0xe2,0xb6,0x71,0x35,0x77,0x72,0xc5,0x9e,0x3b,0xce,
- 0x41,0x37,0xe7,0x68,0xe3,0x0c,0x5e,0xc1,0x0b,0x3c,0x41,0x91,0x7e,0xbb,0xff,0xba,
- 0x84,0xc0,0x1e,0x1a,0x61,0x69,0xa4,0xa0,0xc5,0x55,0xd0,0x8a,0xe3,0x80,0x8b,0x4e,
- 0x41,0x1f,0x5e,0x69,0xb1,0x95,0xe2,0x53,0x04,0x00,0x08,0x03,0x7d,0xed,0xbc,0x16,
- 0x3a,0xb4,0x9e,0x3b,0xa2,0x85,0x37,0x71,0x2d,0x1e,0x4f,0x5d,0xa7,0x4c,0xdf,0xaf,
- 0xb2,0x65,0xa0,0x9b,0xf9,0xaf,0x4b,0x08,0xac,0x54,0x05,0xed,0x25,0x05,0x5d,0xcc,
- 0x38,0x42,0xb5,0x5e,0xd0,0x35,0x6b,0x95,0x52,0xd0,0x35,0x6b,0xb9,0xf9,0x02,0x00,
- 0x40,0x78,0x38,0xbe,0x8d,0x67,0xa1,0xe5,0xdb,0xb8,0x3e,0xed,0xe4,0xea,0xda,0xae,
- 0x5d,0xfb,0x96,0x98,0xbe,0x59,0xe5,0x09,0x91,0xd5,0xdf,0xae,0xe7,0xbf,0x3e,0xa7,
- 0xa0,0x73,0x1b,0x71,0xa8,0x36,0xc2,0xf2,0x30,0x0e,0xd8,0xa1,0x11,0x07,0xfb,0xd5,
- 0xae,0x26,0x34,0x52,0x03,0x00,0x84,0x8b,0xd8,0x30,0x6d,0x7f,0xc6,0xef,0x8a,0xe5,
- 0x5b,0x64,0x9e,0x2b,0x32,0x5c,0xa1,0xe7,0xda,0xb5,0xec,0x5e,0x2b,0x3a,0x64,0xfa,
- 0x7e,0x95,0x1f,0x23,0xc5,0x57,0xd4,0xd3,0x9c,0x93,0x82,0xee,0x76,0x6c,0xc4,0xa1,
- 0xd6,0x08,0xcb,0x7d,0x1c,0xe1,0x01,0xd5,0x2d,0x60,0x5b,0x23,0x2c,0x85,0x71,0x84,
- 0x1b,0x3d,0x54,0x61,0xf1,0x5f,0xea,0x86,0xf9,0x02,0x00,0x42,0x09,0x8b,0x8c,0x5e,
- 0x9e,0xac,0x61,0xbb,0xc2,0x94,0x72,0x4e,0xf5,0xd4,0x78,0xed,0xd8,0xd6,0x45,0x7f,
- 0xbc,0x31,0xad,0x85,0x37,0xb2,0x27,0xb9,0xe9,0x9b,0x55,0x86,0x24,0x62,0xd4,0xd3,
- 0x92,0x52,0xb1,0x21,0xb0,0xc4,0x7f,0xfd,0x4b,0x41,0xfb,0x36,0x0e,0xb8,0x66,0x95,
- 0xd5,0xd3,0x8c,0x91,0x46,0x00,0x80,0x90,0x42,0xc4,0x9f,0x7e,0x1e,0x3d,0xb7,0x88,
- 0x7c,0xb2,0x9b,0xe7,0xde,0x20,0xd6,0xe6,0x59,0x84,0x40,0x46,0x13,0x8a,0x0e,0x52,
- 0x5f,0xab,0xd4,0x7f,0xc3,0x5e,0x05,0xad,0x98,0x82,0x4e,0x5b,0x70,0xca,0x7c,0x6b,
- 0xd7,0x59,0x7d,0xad,0xa6,0x6f,0x3f,0x00,0x00,0x48,0xa0,0x9d,0x0b,0xc2,0x6b,0xbb,
- 0x7f,0xbc,0x3e,0x2d,0xf6,0x7b,0xf0,0x44,0xd5,0x84,0x86,0x7a,0x47,0xfd,0xb7,0x59,
- 0x54,0x05,0xad,0xd0,0x88,0x43,0xa1,0x11,0x96,0xf7,0x46,0x1c,0x8a,0x8d,0xb0,0x8e,
- 0x69,0x36,0xc2,0xaa,0xdb,0x48,0xbd,0xad,0x48,0x3b,0x03,0x00,0xc2,0x0f,0x1f,0x10,
- 0xbc,0x62,0x92,0xa0,0xf7,0x94,0x2f,0xa5,0x53,0x02,0xdd,0x98,0x96,0xd4,0x73,0x99,
- 0x9e,0x1f,0xd5,0x73,0xd7,0xd1,0xa1,0x15,0xa6,0x6f,0x55,0x59,0xc1,0x0c,0x68,0xa0,
- 0x6b,0xd4,0x7f,0x03,0x48,0x41,0x2b,0x8d,0x23,0x54,0x9d,0xc5,0xe0,0xbd,0x11,0x47,
- 0x6d,0x6e,0x15,0xf4,0xd1,0x8d,0xa9,0xc8,0x17,0xe6,0x0b,0x00,0x28,0x0f,0xf8,0x23,
- 0xce,0x71,0x1b,0xd7,0xd7,0x9d,0xdc,0x3f,0xde,0xe8,0x68,0xb5,0x59,0xcf,0xbd,0x2e,
- 0xab,0xe7,0x6c,0x5a,0x33,0x95,0x12,0xe8,0x9f,0xa0,0x0c,0x25,0xf9,0x29,0x33,0xe6,
- 0xbf,0xbd,0x3e,0xa5,0xa0,0x85,0xa7,0x90,0x84,0xbd,0xa0,0x95,0x1a,0x61,0x49,0x53,
- 0xd0,0x6a,0xa7,0x90,0xec,0x21,0x30,0xfb,0xf7,0xde,0x16,0x98,0x2f,0x00,0xa0,0x8c,
- 0xe0,0x1b,0x85,0x9b,0x66,0x14,0x5b,0xa5,0xac,0xe4,0xb9,0x22,0xc3,0x75,0xf4,0xdc,
- 0x6b,0x73,0xc4,0x5e,0xde,0x7d,0xda,0xf4,0xad,0x2a,0x1f,0x12,0x51,0xab,0xaf,0x8d,
- 0xfb,0xaf,0x2d,0x04,0xf6,0xd2,0x88,0x23,0x74,0xbd,0xa0,0x1d,0xc6,0x11,0xd6,0xae,
- 0x4d,0x15,0x5c,0xc1,0x7c,0x01,0x00,0x65,0x06,0xef,0x0b,0xbd,0xe4,0xb6,0xc0,0x76,
- 0x72,0x1d,0x6c,0xf7,0xb9,0xeb,0x44,0xba,0xc6,0x51,0xfb,0x97,0x9a,0xbe,0x4f,0x65,
- 0x03,0x1f,0x3b,0x58,0xe0,0xbf,0xc5,0x36,0xe2,0x08,0xed,0x38,0xe0,0xba,0x0d,0x7c,
- 0xc6,0x31,0xcc,0x17,0x00,0x50,0x9e,0x50,0xcd,0xea,0x74,0xf0,0xeb,0x6f,0xe9,0x94,
- 0xdc,0x70,0x5d,0x3d,0xd7,0xae,0xa5,0x77,0x12,0xc6,0xb6,0xaa,0xc1,0xc7,0x0e,0xf6,
- 0xb5,0xa5,0x2d,0xb8,0xd7,0xa7,0x2d,0x60,0x8d,0x46,0x58,0x07,0xdc,0x1a,0x71,0xa8,
- 0x8e,0x03,0x56,0xab,0x82,0x66,0xff,0x9f,0x5d,0x39,0xcc,0x17,0x00,0x50,0xb6,0xf0,
- 0x2c,0xf4,0x9a,0x87,0x94,0x4a,0xa7,0x54,0xaa,0xa7,0x9e,0xcf,0xad,0x9e,0x12,0x67,
- 0x95,0xd5,0x6c,0x37,0xa3,0x05,0xd7,0xd0,0xe9,0x43,0xa6,0xef,0x53,0x99,0x30,0xd8,
- 0x93,0xf5,0x5f,0xd1,0x29,0xa4,0xd1,0x46,0x1c,0x27,0xbd,0x36,0xe2,0xf0,0xab,0x0a,
- 0x7a,0x87,0x46,0x15,0x74,0x5d,0x41,0x15,0x34,0xfb,0x4f,0x6e,0xbe,0x09,0xd3,0xb7,
- 0x1b,0x00,0x00,0x8a,0x82,0x5a,0x6a,0x79,0x21,0xb4,0xef,0xa5,0x53,0x5a,0x9e,0xbb,
- 0xc0,0x59,0xcf,0x5e,0xcd,0xe7,0x17,0x23,0xd2,0x51,0x80,0x06,0xba,0xad,0xfe,0xf6,
- 0x5c,0xff,0x6d,0x16,0x85,0xc0,0x82,0x46,0x58,0xde,0xab,0xa0,0x8b,0x4b,0x41,0x7b,
- 0x69,0xc4,0xd1,0xd1,0x60,0x25,0x61,0xbe,0x00,0x80,0xf2,0x27,0x99,0xa4,0xdd,0x7f,
- 0xcc,0xb5,0x5d,0x85,0xac,0xb2,0xd8,0x73,0xaf,0xd3,0x8b,0x73,0xdd,0x6d,0x37,0xad,
- 0xab,0x78,0x7a,0x7c,0xa8,0xd7,0xf4,0x6d,0x0a,0x3d,0xbc,0xf3,0x73,0xc7,0x88,0xff,
- 0xa6,0x2d,0x58,0x61,0x0b,0x38,0xe0,0x46,0x1c,0xbb,0x3d,0xa5,0xa0,0x9d,0xfd,0xb7,
- 0x6e,0x03,0xbb,0x24,0x98,0x2f,0x00,0xa0,0x62,0xa0,0xa1,0x3e,0x7a,0x79,0x52,0xe0,
- 0x3b,0xb9,0x72,0xcf,0xbd,0xca,0x41,0xbf,0xe5,0x67,0x3c,0x81,0x2b,0x94,0x8c,0xe7,
- 0xfb,0xaf,0x7a,0x23,0x0e,0xf1,0x38,0x42,0x79,0x0a,0x3a,0xdf,0x7f,0xb5,0xab,0xa0,
- 0x15,0x53,0xd0,0x29,0x0b,0xae,0xdb,0x48,0x2d,0x47,0xb1,0xe7,0x0b,0x00,0xa8,0x30,
- 0xf8,0x63,0x73,0xd1,0x38,0xd9,0x4e,0x6e,0x71,0xdb,0xb8,0x39,0xba,0x3a,0x2b,0x27,
- 0xcf,0xb5,0x6b,0xd5,0x03,0x88,0x7a,0x24,0xc4,0x23,0x0e,0xfe,0x5b,0xf2,0x53,0x48,
- 0xe9,0x14,0xb4,0xe8,0x20,0xb0,0xb4,0x0a,0xba,0xde,0xc9,0x7f,0x37,0xb2,0x3f,0x91,
- 0x12,0x31,0xd3,0x77,0x19,0x00,0x00,0x7c,0x86,0x92,0x09,0xde,0x6f,0x39,0x40,0xcf,
- 0xbd,0x5a,0xdb,0x73,0x33,0x9a,0x7f,0x25,0x2d,0xb8,0x0a,0x13,0x81,0xdd,0xa1,0xe8,
- 0x50,0xda,0x7f,0x83,0x48,0x41,0x7b,0x69,0xc4,0x21,0x4c,0x41,0x2b,0x8e,0x23,0x2c,
- 0x68,0xc4,0x71,0xfa,0xa0,0x15,0x1b,0x36,0x7d,0x8f,0x01,0x00,0x20,0x10,0x78,0x4e,
- 0x72,0xc9,0xed,0x5e,0xb6,0x71,0x5d,0xb2,0xca,0xf6,0x6d,0x5c,0x45,0xab,0x75,0x12,
- 0x26,0x02,0xbb,0x42,0x91,0x01,0x81,0xff,0x0a,0xab,0xa0,0x7b,0x44,0x55,0xd0,0x42,
- 0xff,0x55,0x08,0x81,0x8b,0x4e,0x41,0xcb,0x4e,0x21,0x31,0x35,0xee,0x81,0xf9,0x02,
- 0x00,0x2a,0x19,0x4a,0xd2,0xc1,0x65,0x3e,0xec,0xe4,0xba,0x6c,0xe3,0xea,0x7a,0xae,
- 0x5d,0xfc,0x20,0x30,0xd2,0x8f,0x8e,0xd0,0x50,0x5f,0xca,0x7f,0x8b,0x4a,0x41,0x3b,
- 0x34,0xe2,0x50,0x18,0x47,0x18,0x5c,0x15,0x74,0xe3,0x4e,0x8a,0x0d,0x9a,0xbe,0xbb,
- 0x00,0x00,0x10,0x2c,0x14,0x8b,0xf0,0x96,0xcb,0xfe,0x96,0x4e,0x15,0xe3,0xb9,0x19,
- 0xcd,0xbb,0x9c,0xe6,0x5d,0xc1,0x6b,0x5f,0x81,0x10,0x22,0x7e,0xf8,0x37,0xe3,0xbf,
- 0x76,0x0b,0x16,0x36,0xe2,0xe8,0xd6,0x4e,0x41,0x97,0xbc,0x11,0x47,0x2a,0x05,0xdd,
- 0xb8,0xdb,0x42,0xe9,0x3b,0x00,0xa0,0x3a,0xe0,0x0f,0xdb,0x45,0x37,0x17,0x57,0x3a,
- 0xe5,0x60,0xbb,0x4a,0x56,0x7b,0x45,0x8e,0xb8,0xed,0xda,0xb4,0x6b,0x81,0xe9,0xdb,
- 0x13,0x56,0x52,0x93,0x8f,0xc4,0xfe,0xeb,0x56,0x05,0xad,0xe2,0xbf,0x41,0x56,0x41,
- 0xbb,0x8f,0x23,0x3c,0xb1,0xd3,0x1a,0xec,0x42,0xc1,0x33,0x00,0xa0,0x4a,0x20,0x4a,
- 0xd2,0x8e,0x67,0x45,0x41,0x6e,0x70,0x9e,0x7b,0xa5,0xa3,0xe1,0xe6,0xe8,0x32,0xbe,
- 0x3d,0x1d,0x1d,0x32,0x7d,0x87,0xc2,0x08,0x25,0x93,0x34,0xd0,0x39,0xea,0xbf,0x59,
- 0x0b,0x96,0xa5,0xa0,0x9d,0x1b,0x71,0x48,0xb6,0x80,0x45,0x29,0x68,0x7f,0xc7,0x11,
- 0xd6,0x6f,0xa3,0xfe,0x36,0x0c,0x36,0x02,0x00,0x54,0x15,0xc4,0x9e,0xdb,0x4b,0xef,
- 0xcc,0xad,0x9e,0xba,0x3a,0x80,0x94,0xf2,0x15,0x36,0x15,0x58,0x6d,0xa1,0xe6,0x5e,
- 0x4a,0x73,0x2f,0xa7,0xa6,0x03,0xa6,0x6f,0x4f,0x18,0xe1,0xe5,0xeb,0xd9,0xf8,0xd7,
- 0x4b,0x15,0xb4,0x4a,0x23,0xac,0x52,0x36,0xe2,0xb0,0xba,0x4e,0xf3,0x71,0x8a,0x00,
- 0x00,0x50,0x55,0x10,0xf1,0x76,0x07,0x41,0x6d,0xe3,0x3a,0xc4,0xb6,0x42,0x3d,0x73,
- 0x69,0xbe,0xb6,0xcc,0x42,0x2f,0x4a,0x01,0x89,0xa8,0x9b,0xff,0x96,0x57,0x15,0x74,
- 0xc3,0x56,0xab,0xfd,0x38,0xd2,0xce,0x00,0x80,0xea,0x84,0xc7,0x53,0x6b,0x1f,0x0e,
- 0x91,0xed,0xa6,0x75,0x31,0xff,0x32,0x10,0x19,0x30,0x7d,0x7b,0xc2,0x47,0x3c,0x92,
- 0xf2,0xdf,0xdc,0x14,0xb4,0xcf,0x55,0xd0,0x9e,0x67,0x31,0x08,0x1b,0x71,0x08,0x0e,
- 0x02,0xa7,0x37,0x7f,0x5b,0x8e,0x5a,0xc9,0xb8,0xe9,0x1b,0x0a,0x00,0x00,0xc6,0xe0,
- 0x4f,0xdd,0x85,0x37,0x06,0xb0,0x93,0x9b,0x97,0x55,0x1e,0x55,0xbe,0xd5,0x5e,0x32,
- 0xaa,0x8b,0xf3,0x75,0x6c,0x93,0xe9,0x7b,0x13,0x3a,0x28,0x3a,0xc4,0xfc,0xd7,0x2d,
- 0x04,0xee,0x15,0x84,0xc0,0x5e,0xc6,0x11,0xba,0xcf,0x62,0x70,0x4b,0x41,0xab,0x55,
- 0x41,0x9f,0x41,0x9f,0x0d,0x00,0x40,0xd5,0x43,0x44,0x3b,0xe7,0x17,0xb7,0x93,0xeb,
- 0x10,0xde,0xf2,0x9d,0xdc,0x51,0x89,0x3d,0x57,0x64,0xbb,0x19,0xad,0x99,0x42,0xe8,
- 0x45,0x99,0x0b,0x45,0x06,0x0b,0xfc,0x57,0x18,0x02,0x07,0xd8,0x08,0xab,0x20,0x04,
- 0x3e,0xa0,0x9a,0x82,0xce,0xf8,0x2f,0xf3,0x68,0x24,0x37,0x00,0x00,0x80,0x3d,0xd5,
- 0x7b,0x5b,0x68,0xf1,0x38,0x99,0xe1,0x96,0xc4,0x73,0x33,0x9a,0x73,0x31,0x3d,0x7b,
- 0x25,0xf5,0xb5,0x9b,0xbe,0x37,0xe1,0x82,0x22,0xfd,0xd6,0x60,0x8f,0x82,0xff,0xfa,
- 0x9b,0x82,0x56,0x68,0xc4,0x21,0xf4,0x5f,0x61,0x15,0xf4,0x89,0x5d,0xbc,0x85,0x08,
- 0x00,0x00,0x00,0x2b,0x15,0x02,0x1f,0x59,0xad,0xb0,0x8d,0xeb,0x60,0xbb,0x8e,0xdb,
- 0xb8,0x97,0x2a,0x59,0x6d,0x9e,0xed,0xda,0x75,0x68,0x85,0xe9,0x5b,0x13,0x2e,0x32,
- 0xfe,0x2b,0x4c,0x41,0xe7,0xf9,0xaf,0xcf,0x29,0x68,0x95,0x46,0x58,0xc2,0x2a,0x68,
- 0xbb,0xff,0x32,0xf3,0xed,0xc7,0x77,0x2a,0x00,0x00,0xc8,0x42,0xc9,0x38,0x2d,0xbf,
- 0xcf,0x80,0xe7,0xce,0x71,0xd6,0xd3,0x63,0x68,0xc9,0x1d,0x18,0x87,0x64,0x87,0xcf,
- 0x47,0x76,0xf6,0x5f,0xb7,0x14,0x74,0xba,0x11,0xd6,0x29,0x8d,0x14,0xb4,0xc6,0x29,
- 0x24,0xc5,0x14,0xf4,0x4e,0xab,0xf3,0x24,0x0a,0x9e,0x01,0x00,0x20,0x0f,0xbe,0x2b,
- 0xb7,0xe0,0x6a,0x81,0xed,0xce,0x75,0xaa,0x9e,0xba,0x44,0x3b,0xab,0x2c,0xb6,0xdd,
- 0xb1,0x59,0x31,0xcf,0xb5,0x8b,0xfd,0x6a,0xc7,0x71,0xd3,0x37,0x26,0x34,0x50,0x92,
- 0x37,0x9f,0xe4,0xea,0x16,0xa4,0xa0,0xf3,0x43,0xe0,0x66,0xc5,0x10,0xb8,0xe0,0x14,
- 0x92,0xb0,0x11,0x96,0x7a,0x08,0xec,0x38,0x8e,0xd0,0x6a,0xad,0xb3,0x12,0x28,0x78,
- 0x06,0x00,0x80,0x02,0x12,0x31,0xda,0x38,0xc3,0xff,0x6d,0x5c,0x71,0x6c,0x3b,0xd6,
- 0x26,0xbb,0xe7,0x5e,0x94,0xaf,0x9d,0xcf,0x9a,0xbe,0x2f,0x61,0x81,0x57,0xa3,0xa5,
- 0xfd,0x77,0x24,0x04,0x16,0x34,0xc2,0xf2,0xb7,0x11,0x47,0x11,0x55,0xd0,0xf9,0xfe,
- 0x6b,0x35,0x1d,0x40,0xc1,0x33,0x00,0x00,0x38,0xc1,0x9f,0xba,0xf3,0xaf,0x28,0xf0,
- 0x5c,0xd7,0x53,0x42,0x1e,0x6d,0x77,0x8c,0xc4,0x76,0x47,0x34,0xfb,0x42,0xde,0x8b,
- 0x12,0xa7,0x44,0x53,0x14,0xf8,0xaf,0x66,0x0a,0xda,0x43,0x15,0xb4,0x7a,0x23,0x0e,
- 0x77,0xff,0x65,0xff,0x07,0x05,0xcf,0x00,0x00,0xe0,0x0c,0x6f,0xc7,0xb1,0x6d,0x8e,
- 0x3f,0xa5,0x53,0xf6,0x6d,0x5c,0xb1,0x9c,0x3d,0xd7,0x2e,0xf6,0x3b,0x3b,0x4f,0x98,
- 0xbe,0x31,0xe1,0x20,0x11,0xb5,0xf9,0xaf,0x28,0x05,0xad,0x34,0x8b,0x41,0x25,0x05,
- 0xed,0x6b,0x23,0xac,0x53,0x7b,0x89,0x5d,0x18,0x00,0x00,0x00,0x57,0x78,0x60,0xb5,
- 0x68,0x9c,0xff,0x3b,0xb9,0xba,0xb6,0x6b,0xd7,0x8e,0x79,0xa6,0xef,0x4a,0x38,0xb0,
- 0xf9,0xef,0xe8,0x29,0x24,0x79,0x23,0x2c,0xff,0x52,0xd0,0x0a,0x8d,0xb0,0x9a,0x0a,
- 0x1b,0x61,0xed,0xb1,0xd8,0x9f,0x88,0x0e,0xcf,0x00,0x00,0xa0,0x00,0xd5,0xae,0x4f,
- 0xa5,0xa0,0x8d,0x7a,0x6e,0x56,0xbf,0xa1,0x85,0x37,0x62,0xeb,0x90,0x93,0x88,0xd2,
- 0x50,0x8f,0x73,0x0a,0xba,0x43,0xda,0x08,0xcb,0xea,0x56,0x1f,0x47,0x28,0x6f,0xc4,
- 0x51,0x10,0x02,0x0b,0xc6,0x01,0x5b,0x6d,0xf5,0x56,0x22,0x66,0xfa,0xc6,0x01,0x00,
- 0x40,0x99,0x10,0x1d,0xa2,0x95,0xbf,0xf7,0x54,0x3d,0xe5,0x60,0xb5,0x4a,0x3e,0x6b,
- 0xd3,0x53,0xbf,0xb1,0xe9,0xd7,0xfc,0xff,0x60,0x1c,0x92,0x95,0xef,0xbf,0x45,0x34,
- 0xe2,0x38,0xe9,0x4b,0x0a,0xda,0x35,0x04,0xe6,0x29,0x68,0x8b,0xfd,0x1f,0x7c,0x71,
- 0x02,0x00,0x00,0x1d,0xe8,0xcc,0x11,0x9f,0xb7,0x71,0x95,0x6c,0xf7,0xd7,0x0e,0xfa,
- 0x15,0x6d,0x7a,0x02,0xe3,0x90,0x46,0xfc,0xd7,0x35,0x04,0x2e,0x49,0x23,0x0e,0x95,
- 0x2a,0x68,0xe6,0xbf,0xa7,0xf6,0x5b,0x83,0xbd,0xa6,0x6f,0x19,0x00,0x00,0x94,0x1b,
- 0xcc,0xed,0xd6,0x4c,0x0d,0xdc,0x73,0x1d,0x0d,0x37,0xe5,0xb9,0x76,0xcd,0x19,0x4b,
- 0xc3,0xfd,0xa6,0x6f,0x8a,0x61,0x58,0x2c,0xa9,0xe8,0xbf,0xa3,0x29,0x68,0x91,0xff,
- 0x76,0xab,0x57,0x41,0x0b,0x0f,0x02,0x2b,0x37,0xe2,0xe8,0x69,0x46,0xab,0x0d,0x00,
- 0x00,0xf0,0x00,0x7f,0xfc,0xce,0xbf,0xd2,0xcf,0x6d,0xdc,0x8c,0x54,0x3c,0x77,0x96,
- 0x4d,0x4f,0x5e,0xc0,0x55,0xb7,0xd1,0xf4,0x2d,0x31,0x0c,0xc5,0x86,0x0a,0xfc,0xb7,
- 0x5b,0xe1,0x14,0x92,0xb0,0x0a,0xfa,0x54,0xb0,0x55,0xd0,0xed,0xf5,0x84,0x56,0x1b,
- 0x00,0x00,0xe0,0x09,0x7e,0x16,0x69,0xcb,0xec,0xa2,0x43,0x5d,0x1d,0xcf,0x7d,0xaa,
- 0xc0,0x73,0xb3,0xfa,0x25,0xad,0x9c,0x6c,0x55,0x77,0x19,0x2d,0x1f,0x3e,0x38,0xd4,
- 0x5b,0xb8,0x05,0xec,0x73,0x23,0x8e,0x7c,0xff,0xd5,0x4f,0x41,0xb3,0x5f,0x8d,0x0d,
- 0x99,0xbe,0x5b,0x00,0x00,0x50,0xc6,0xf0,0xd0,0x69,0xc1,0xd5,0xc5,0x56,0x4f,0x39,
- 0x59,0x6d,0xd6,0x73,0x2f,0xc8,0x2a,0xcf,0x73,0xb3,0xfa,0x05,0xcd,0x19,0x43,0x7d,
- 0x2d,0xa6,0x6f,0x89,0x49,0x52,0xfe,0xdb,0xa7,0x97,0x82,0x2e,0x7d,0x23,0x0e,0xa6,
- 0xa1,0x6e,0xd3,0xb7,0x0a,0x00,0x00,0xca,0x1c,0x22,0xda,0xfd,0x5c,0xb1,0xa5,0x53,
- 0x42,0xe5,0x87,0xb7,0x19,0xfd,0xc2,0x4d,0x87,0x96,0x9b,0xbe,0x23,0x26,0x11,0xfa,
- 0xaf,0x5a,0x15,0xf4,0x99,0x52,0x55,0x41,0x1f,0x62,0x7f,0x1c,0xb6,0x7d,0x01,0x00,
- 0xa0,0x78,0x28,0xd2,0x4f,0xcf,0x5f,0x57,0x6c,0xf5,0x54,0x91,0xb6,0x9b,0xd1,0xc2,
- 0x9b,0xab,0x79,0x1c,0x12,0x45,0x07,0x53,0xfe,0xdb,0x27,0xf2,0x5f,0x79,0x23,0x8e,
- 0x12,0x8c,0x03,0xb6,0xd8,0x6b,0xab,0xf8,0x07,0x04,0x00,0x00,0xfe,0x42,0xfb,0x97,
- 0xd2,0xec,0x8b,0x8a,0xad,0x9e,0x12,0x64,0x95,0xd5,0x3c,0x37,0xa3,0x99,0xbf,0xe0,
- 0x09,0xea,0xb6,0x63,0xa6,0xef,0x87,0x31,0x28,0x32,0x90,0xf1,0x5f,0x9d,0x2a,0xe8,
- 0x20,0x1b,0x71,0xd8,0xb7,0x80,0xd9,0xff,0x89,0x62,0xdb,0x17,0x00,0x00,0x7c,0x83,
- 0x3f,0xed,0x17,0x8d,0xf3,0x69,0x1b,0x57,0xcd,0x76,0x67,0x8a,0xf4,0x87,0xf3,0xb9,
- 0xf6,0x2c,0x32,0x7d,0x3f,0x8c,0xc1,0xfd,0x77,0xb8,0x5f,0x94,0x82,0xf6,0xdc,0x0b,
- 0x5a,0xa5,0x0a,0xda,0xf5,0x14,0x92,0xdd,0x82,0x07,0x3a,0xd9,0x35,0x9a,0xbe,0x49,
- 0x00,0x00,0x50,0x49,0x10,0x1d,0x5e,0x55,0x54,0xe9,0x94,0x37,0xc3,0xcd,0x78,0x6e,
- 0x5a,0x3f,0xe7,0x5a,0x72,0x7b,0xd5,0x36,0x13,0xe6,0xfe,0x1b,0xe9,0x77,0x4a,0x41,
- 0xbb,0x85,0xc0,0x3e,0x54,0x41,0x8b,0x52,0xd0,0xb6,0x10,0xd8,0xea,0x6e,0xc2,0xb6,
- 0x2f,0x00,0x00,0xf8,0x4f,0x3c,0x9a,0x0a,0x81,0x7d,0xda,0xc6,0x95,0xdb,0xee,0xcf,
- 0x1d,0xf4,0x33,0xfe,0xaa,0xee,0xd3,0xa6,0x6f,0x87,0x19,0xf2,0xfc,0x57,0x23,0x05,
- 0xed,0x53,0x23,0x2c,0xc7,0x46,0x1c,0x6d,0xf5,0x56,0x12,0x4d,0x9e,0x01,0x00,0x20,
- 0x10,0xe8,0xc4,0x4e,0x7e,0x9e,0xc8,0x88,0xe7,0xe6,0x69,0xd7,0x73,0xa6,0x6f,0x86,
- 0x19,0xd2,0xfe,0x1b,0x11,0xa4,0xa0,0xd5,0x4e,0x21,0x29,0xa4,0xa0,0x3d,0x34,0xc2,
- 0x6a,0x3d,0x6a,0x55,0x7d,0x6b,0x32,0x00,0x00,0x08,0x0e,0x8a,0xc7,0x68,0xf9,0xc4,
- 0xa2,0xaa,0xa7,0xb2,0x3a,0x3f,0x2b,0x15,0xdb,0x7d,0xc2,0xa6,0x19,0x3f,0xa5,0x85,
- 0x37,0xb1,0x78,0xdc,0xf4,0xfd,0x30,0x40,0xae,0xff,0xf6,0x16,0x6e,0x01,0x0b,0x1b,
- 0x71,0xf8,0xd7,0x0b,0x5a,0x9c,0x82,0x4e,0xcd,0xf6,0x45,0xe6,0x19,0x00,0x00,0x02,
- 0x84,0x9a,0xf6,0xa5,0x92,0xcf,0x3e,0xed,0xe4,0x3a,0x85,0xb7,0x69,0xcf,0xfd,0x69,
- 0x56,0x33,0xec,0xfa,0x09,0xcd,0xfc,0x39,0xb1,0x87,0x7f,0xf5,0x91,0xeb,0xbf,0xe1,
- 0xa8,0x82,0x66,0x2f,0xc1,0x81,0x23,0x00,0x00,0x08,0x9a,0x44,0x8c,0x56,0xde,0xef,
- 0xd5,0x76,0x65,0x59,0xe5,0x3c,0xdb,0x9d,0x51,0x60,0xbb,0x69,0xfd,0x98,0x6b,0xfb,
- 0x5c,0xd3,0xf7,0xc2,0x00,0x29,0xff,0x55,0x4f,0x41,0x7b,0x1d,0x47,0xa8,0xbc,0x05,
- 0x4c,0xed,0xc7,0xac,0x78,0xc4,0xf4,0x5d,0x01,0x00,0x80,0xaa,0x80,0x6f,0x05,0xf2,
- 0x5d,0x60,0x97,0x53,0x42,0x4e,0xf9,0x64,0x07,0xcf,0xcd,0xf7,0x59,0xbb,0x7e,0xec,
- 0xa8,0x79,0x97,0x51,0xb2,0xea,0xda,0xfb,0x53,0x64,0xb0,0x30,0x04,0x56,0xa9,0x82,
- 0x0e,0xa4,0x11,0x07,0x0b,0x84,0x07,0xd1,0x67,0x12,0x00,0x00,0x4a,0x07,0x1f,0xc5,
- 0xab,0xb1,0x8d,0xfb,0x73,0xc7,0x6d,0x5c,0x71,0x78,0xfb,0x13,0x37,0xdb,0xb5,0xeb,
- 0xf4,0x41,0xd3,0x77,0xa2,0xd4,0xf0,0xfe,0x93,0x9e,0x52,0xd0,0x69,0xff,0x15,0x8e,
- 0x23,0xf4,0x30,0x0e,0x38,0x95,0x82,0xe6,0x85,0x5b,0xd5,0x7a,0x10,0x0c,0x00,0x00,
- 0x8c,0x40,0x9d,0x27,0xf9,0x34,0x5e,0x6f,0xa5,0x53,0x62,0xc3,0x55,0xf6,0xdc,0x8c,
- 0xa6,0xff,0x98,0x36,0x3c,0x6e,0xfa,0x4e,0x94,0x9a,0x51,0xff,0x4d,0x59,0xb0,0xa8,
- 0x11,0x87,0x5a,0x0a,0xba,0x59,0xb4,0x05,0x2c,0x68,0xc4,0x91,0x1f,0x02,0xdb,0x52,
- 0xd0,0xd4,0x56,0x8f,0x09,0x47,0x00,0x00,0x50,0x6a,0x92,0x49,0xda,0xf0,0x98,0x3f,
- 0xdb,0xb8,0x2a,0x3e,0x2b,0xd4,0xe3,0xe7,0xd1,0x33,0x17,0x33,0x27,0x32,0x7d,0x2f,
- 0x4a,0x4a,0x8e,0xff,0x8a,0xb6,0x80,0xc5,0xb3,0x18,0x8a,0xac,0x82,0x16,0xa6,0xa0,
- 0xd9,0x3b,0x03,0x00,0x00,0x28,0x39,0x3c,0x86,0x9a,0x75,0x81,0xf2,0x4e,0xae,0x7e,
- 0x6c,0x2b,0xf6,0xdc,0xff,0xcb,0xd1,0xf4,0xf3,0xa8,0x71,0x97,0xe9,0x3b,0x51,0x52,
- 0xb8,0xff,0x7a,0x4d,0x41,0xab,0x8f,0x23,0x94,0xa6,0xa0,0xad,0xae,0x53,0x68,0x75,
- 0x05,0x00,0x00,0x46,0x20,0xc6,0xb6,0xb9,0x66,0x6c,0x37,0xab,0x1f,0xd1,0xaa,0x07,
- 0x4c,0xdf,0x89,0x92,0x62,0xf3,0xdf,0x91,0x14,0xb4,0xd0,0x7f,0x55,0x7a,0x41,0xe7,
- 0xfa,0x6f,0x77,0x93,0x46,0x23,0x0e,0xf6,0x9f,0xb1,0x61,0xd3,0x77,0x02,0x00,0x00,
- 0xaa,0x17,0xea,0xef,0xa0,0x79,0x97,0x7b,0x2c,0x9d,0x12,0x78,0xee,0x79,0x39,0xca,
- 0xf1,0xd9,0x73,0x6d,0xfa,0x51,0x8e,0x9e,0xbc,0x80,0xaa,0xa9,0xf3,0x12,0xc5,0x46,
- 0xfc,0x77,0xd0,0xb5,0x11,0x87,0xca,0x38,0x60,0x61,0x23,0x2c,0x41,0x08,0x5c,0x38,
- 0x0e,0xd8,0x1a,0xec,0x44,0xf0,0x0b,0x00,0x00,0x66,0xa1,0x3d,0x0b,0x8b,0xf3,0xdc,
- 0x1f,0x3b,0x18,0x6e,0x9e,0xed,0xfe,0xc8,0x59,0xe7,0xd2,0x89,0x2a,0x4a,0x41,0xa7,
- 0xfd,0x57,0x29,0x05,0x2d,0x68,0x84,0xa5,0xde,0x0b,0xda,0x31,0x04,0xee,0x3a,0x65,
- 0x55,0xdf,0xb1,0x2f,0x00,0x00,0x08,0x1b,0xec,0x21,0x4f,0xcf,0x5c,0xa2,0x9d,0x52,
- 0x7e,0xfc,0x3c,0x9b,0x9c,0x3c,0xd7,0xdd,0x76,0x47,0xf5,0xd8,0x8f,0x68,0xfd,0x63,
- 0x54,0x35,0xe1,0x58,0xae,0xff,0xaa,0xcf,0x62,0x90,0xa7,0xa0,0xc5,0x8d,0x38,0x0a,
- 0x43,0xe0,0x6a,0xca,0x36,0x00,0x00,0x40,0x78,0x61,0xce,0xb7,0x73,0xbe,0x9a,0xe7,
- 0x3a,0xef,0xe1,0x6a,0xe9,0xb1,0x02,0xcd,0xbe,0x88,0xe2,0xd5,0x12,0x91,0x71,0xff,
- 0x8d,0x0d,0x95,0xb8,0x0a,0x3a,0xe3,0xbf,0x56,0x5f,0x8b,0xe9,0x1b,0x00,0x00,0x00,
- 0x20,0x0d,0x7f,0xfe,0xcf,0xbb,0xcc,0x4b,0xe9,0x54,0x91,0xb6,0x3b,0xa2,0x47,0x7f,
- 0xc0,0x55,0xbf,0xd9,0xf4,0x6d,0x28,0x11,0x14,0x1b,0xd6,0x49,0x41,0xfb,0x3a,0x8e,
- 0xb0,0xb3,0x91,0xaa,0x72,0xe6,0x05,0x00,0x00,0x84,0x16,0xda,0xbf,0x94,0xa6,0xff,
- 0xc4,0x79,0x27,0x57,0x27,0x9f,0xec,0xe6,0xb9,0x3f,0x4c,0x6b,0xc4,0x73,0xed,0x5a,
- 0xf9,0xfb,0x2a,0x99,0xbf,0x43,0xb1,0x88,0x20,0x05,0xad,0xd4,0x88,0xa3,0xa8,0x59,
- 0x0c,0xdc,0x82,0x07,0xbb,0x4c,0xaf,0x1e,0x00,0x00,0x40,0x0e,0xbc,0xfe,0x76,0xc1,
- 0xd5,0xc5,0x6e,0xe3,0x8a,0xc3,0xdb,0x1f,0xda,0x64,0xf7,0xdc,0xff,0xcd,0xd1,0xac,
- 0x5f,0xb2,0x6b,0x30,0x7d,0x1b,0x4a,0x41,0xda,0x7f,0x95,0x52,0xd0,0x2a,0xa7,0x90,
- 0x9a,0x45,0x21,0xb0,0xa0,0x11,0x16,0x75,0x9f,0xc1,0x90,0x23,0x00,0x00,0x08,0x21,
- 0x74,0x68,0x45,0xa9,0x3d,0x37,0xa3,0x69,0xdf,0xe7,0xff,0x3c,0xf6,0x8a,0xe9,0x7b,
- 0x50,0x0a,0x72,0xfc,0x37,0xf8,0x14,0x74,0x26,0x04,0xa6,0xe8,0xa0,0xe9,0xa5,0x03,
- 0x00,0x00,0x10,0xc0,0xf7,0x25,0x9f,0xb9,0xc4,0x87,0x9d,0x5c,0x81,0x9c,0x6d,0xd7,
- 0xae,0x65,0xf7,0x98,0xbe,0x07,0x25,0x21,0x11,0x2d,0xf0,0x5f,0xf5,0x2a,0x68,0x79,
- 0x23,0x2c,0x61,0x15,0x34,0xf5,0xb5,0xe3,0xc0,0x2f,0x00,0x00,0x84,0x16,0x3a,0xb8,
- 0xdc,0x31,0xf2,0xd5,0x33,0x5c,0x65,0xcf,0xb5,0xeb,0xb1,0x73,0xf9,0x89,0xd7,0x8a,
- 0x27,0xdf,0x7f,0x55,0x1a,0x71,0x74,0xba,0xa6,0xa0,0x85,0xe3,0x08,0x6d,0x29,0x68,
- 0xf6,0xef,0x09,0x94,0x5d,0x01,0x00,0x40,0x78,0xe1,0xbd,0x10,0xe7,0xff,0xd6,0xc1,
- 0x76,0x7f,0xe8,0x56,0x3d,0xe5,0x6e,0xbb,0x2e,0x9e,0x9b,0xd5,0xf7,0xb8,0x0e,0x2e,
- 0x37,0x7d,0x0f,0x82,0x27,0xe3,0xbf,0x25,0x4b,0x41,0x0f,0x56,0xc1,0xb7,0x1a,0x00,
- 0x00,0x28,0x73,0xf8,0x2e,0x70,0x31,0xdb,0xb8,0x5a,0x7a,0xe4,0x7b,0x36,0x7d,0x97,
- 0xeb,0x85,0x5b,0xa9,0xe2,0x6b,0x84,0xc4,0xfe,0xeb,0x35,0x05,0x2d,0xab,0x82,0xb6,
- 0xba,0x9b,0xac,0x44,0xb5,0x9c,0xad,0x06,0x00,0x80,0xf2,0x85,0x1f,0x84,0x61,0x21,
- 0xb0,0xc0,0x73,0x83,0xb0,0xdd,0xef,0xe6,0xea,0x7f,0x78,0xf6,0xbb,0xe2,0x1b,0x44,
- 0xb8,0xf8,0xaf,0xa8,0x0a,0x5a,0xad,0x11,0x96,0x30,0x05,0x9d,0xb2,0xe0,0xa1,0x3e,
- 0xd3,0x0b,0x06,0x00,0x00,0xa0,0x04,0xd5,0xac,0xb1,0x25,0x99,0xfd,0xf2,0xdc,0xef,
- 0x3a,0xe8,0x7f,0xf2,0xb5,0x77,0x91,0xe9,0x1b,0x10,0x2c,0x2c,0xc0,0x4f,0xb7,0xe0,
- 0x70,0x4d,0x41,0xe7,0x6d,0x01,0xbb,0x86,0xc0,0x8e,0x29,0x68,0xde,0xed,0x0a,0x65,
- 0x57,0x00,0x00,0x50,0x26,0x50,0x3c,0x46,0xf3,0xae,0x28,0x76,0x27,0x77,0x44,0x2a,
- 0xb6,0xfb,0xb0,0x4d,0x0f,0x7d,0x87,0x9e,0xbb,0xb6,0xb2,0x8f,0xa9,0xa6,0xfc,0x37,
- 0xe2,0xe8,0xbf,0xe2,0x71,0x84,0xfa,0xe3,0x80,0xbb,0x9b,0xb8,0xa2,0x43,0xa6,0x97,
- 0x0b,0x00,0x00,0x40,0x03,0xda,0xbb,0xb0,0xa4,0x9e,0x9b,0xd5,0xb7,0xf9,0x9f,0xd8,
- 0xdb,0x6c,0xfa,0x06,0x04,0x09,0x25,0x73,0xfc,0x57,0xdc,0x88,0xa3,0xd7,0x5b,0x23,
- 0x0e,0x7b,0x0a,0x9a,0xff,0x36,0x04,0xbf,0x00,0x00,0x50,0x56,0xf0,0xa1,0x48,0xb3,
- 0x2f,0x2a,0x6a,0x27,0x57,0xa8,0x87,0xbf,0x93,0xd6,0x43,0xdf,0xc9,0xb7,0xdd,0xb4,
- 0xbe,0x45,0x0f,0x7f,0x9b,0x0e,0xad,0x30,0x7d,0x03,0x82,0x24,0xed,0xbf,0xce,0x21,
- 0xb0,0x4e,0x0a,0xda,0x69,0x16,0x03,0x75,0x9f,0x41,0xab,0x67,0x00,0x00,0x28,0x43,
- 0x88,0xb6,0x3f,0xa3,0xb3,0x8d,0xeb,0xec,0xb9,0xf9,0x56,0x9b,0xd1,0xb7,0x1c,0xb5,
- 0xf8,0x56,0xa2,0xa4,0xe9,0x3b,0x10,0x18,0xca,0xfe,0x5b,0x54,0x0a,0xba,0x3a,0x9a,
- 0x79,0x02,0x00,0x40,0xe5,0xc1,0x53,0xa0,0x33,0x7f,0xae,0x5d,0x3d,0x25,0xf1,0x5c,
- 0x57,0xdb,0xcd,0x88,0xbd,0x73,0x6f,0xe5,0x56,0x41,0x33,0xff,0x8d,0x3b,0xf9,0xaf,
- 0x63,0x0a,0x9a,0x06,0xba,0x35,0x1a,0x71,0xf4,0x36,0x5b,0x49,0x9c,0x39,0x02,0x00,
- 0x80,0xb2,0x84,0x28,0x15,0x02,0x7b,0xde,0xc6,0xcd,0x91,0x82,0xe7,0xda,0x35,0xf5,
- 0x5b,0xb4,0xfb,0x8f,0xa6,0x6f,0x40,0x60,0x10,0xa5,0x8e,0x20,0x45,0xf2,0xab,0xa0,
- 0xf3,0x1b,0x61,0x15,0x91,0x82,0x66,0xc1,0x2f,0x76,0x7e,0x01,0x00,0xa0,0x6c,0xa1,
- 0xde,0x66,0x7a,0xe2,0x67,0x82,0x38,0x57,0xec,0xb9,0xdf,0xf1,0x6e,0xb8,0x23,0x9e,
- 0x9b,0xd5,0x37,0x69,0x41,0xe5,0x56,0x41,0x67,0xfd,0xd7,0x39,0x04,0x2e,0x62,0x1c,
- 0xa1,0xd5,0xdb,0x8a,0xe0,0x17,0x00,0x00,0xca,0x1b,0x16,0x02,0xaf,0x79,0x28,0xbf,
- 0x74,0x2a,0xbf,0x7a,0x4a,0x33,0xce,0x9d,0xea,0xa0,0x07,0xbf,0x69,0xd3,0x37,0x78,
- 0x4d,0x57,0xe7,0x49,0xd3,0xeb,0x0f,0x8c,0x42,0xff,0x55,0x18,0x47,0xa8,0xda,0x88,
- 0x63,0x18,0x0d,0x37,0x00,0x00,0xa0,0xec,0xa1,0x8e,0x06,0xbe,0xff,0xeb,0x6d,0x1b,
- 0x57,0xc9,0x76,0xbf,0xe1,0xa0,0xaf,0x57,0x70,0x0a,0x9a,0xe2,0xb1,0x51,0x0b,0xd6,
- 0xf0,0xdf,0xd1,0x59,0x0c,0x1d,0x6e,0x29,0xe8,0xfe,0x36,0xab,0x82,0x4b,0xd7,0x00,
- 0x00,0xa0,0x6a,0xe0,0xbb,0xc0,0xeb,0x1f,0x2d,0x9d,0xe7,0xda,0xf5,0xf4,0x98,0x8a,
- 0x4d,0x41,0x27,0xa2,0xe2,0x2d,0xe0,0xa2,0x1b,0x71,0x58,0xc3,0x03,0xa6,0xd7,0x06,
- 0x00,0x00,0xc0,0x1f,0xa8,0xe3,0x04,0x3d,0xfe,0x7f,0x5e,0x3d,0xf7,0x9b,0x69,0x29,
- 0x7a,0x6e,0x46,0x53,0xbe,0xc6,0x13,0xd1,0xed,0xf5,0xa6,0x57,0x1f,0x08,0x94,0x88,
- 0xc9,0xb7,0x80,0xc5,0x21,0xb0,0xa8,0x11,0xc7,0x68,0x08,0x6c,0x0d,0x74,0x56,0xec,
- 0x37,0x16,0x00,0x00,0xa8,0x42,0x58,0x08,0xbc,0xea,0x01,0xd5,0xd8,0xb6,0x70,0x27,
- 0x57,0xc5,0x6a,0x9d,0xb4,0xf9,0x49,0xd3,0x8b,0x0f,0x04,0x4a,0xc6,0x79,0x08,0x1c,
- 0x17,0xa5,0xa0,0xa3,0x82,0x71,0xc0,0x05,0x21,0x70,0xa7,0x38,0x04,0x46,0xb7,0x49,
- 0x00,0x00,0xa8,0x2c,0x58,0x1c,0xca,0xdb,0x42,0x3a,0xd9,0x6e,0x8e,0xe1,0x2a,0x78,
- 0xae,0x8b,0xe1,0xe6,0xe9,0xe9,0x31,0x15,0xd9,0xc4,0x89,0xcf,0x58,0xcc,0xa6,0xa0,
- 0x9d,0x43,0x60,0xad,0x46,0x1c,0xe8,0x36,0x09,0x00,0x00,0x95,0x07,0x25,0x69,0xf1,
- 0x2d,0x1e,0xb7,0x71,0x3d,0xd8,0xee,0x88,0x1e,0xf8,0x0a,0xff,0x67,0xf3,0x11,0xd3,
- 0x8b,0xf7,0x1f,0x5f,0xfd,0x37,0x5d,0x05,0xcd,0x02,0x67,0xd3,0xcb,0x02,0x00,0x00,
- 0xe0,0x3f,0x74,0x72,0x2f,0x3f,0xf0,0x5b,0x02,0xcf,0xcd,0xd3,0xba,0x47,0x4c,0x2f,
- 0x3d,0x00,0x28,0x99,0xf6,0xdf,0xb8,0xf0,0x14,0x92,0x20,0x05,0x5d,0x50,0x05,0x9d,
- 0x9b,0x82,0x1e,0xe8,0xa4,0x24,0xca,0x9e,0x01,0x00,0xa0,0x02,0xa1,0x44,0x82,0x9e,
- 0xbd,0xca,0x57,0xdb,0xfd,0x6a,0x56,0x85,0xb6,0x3b,0xa2,0xfb,0xbf,0x42,0x7f,0x38,
- 0xdf,0x8a,0x47,0x4c,0xaf,0xde,0x6f,0x52,0x2d,0x38,0x64,0x55,0xd0,0x1a,0x21,0x30,
- 0xfb,0x9d,0xa6,0x97,0x04,0x00,0x00,0x20,0x28,0xe8,0xc8,0x9a,0x54,0x25,0x73,0x31,
- 0xe1,0xed,0x57,0x6d,0xca,0xf5,0x59,0xa1,0x7e,0xff,0x65,0x9a,0xf2,0x75,0x6a,0x3b,
- 0x66,0x7a,0xe9,0x7e,0x93,0xef,0xbf,0x7a,0x8d,0xb0,0x04,0x55,0xd0,0x28,0x7b,0x06,
- 0x00,0x80,0x0a,0x86,0xf9,0xc2,0xac,0x5f,0x17,0x67,0xbb,0x05,0xe1,0xad,0x93,0xed,
- 0xa6,0xf5,0x25,0xfe,0xcf,0x6d,0x4f,0x9b,0x5e,0xb9,0xdf,0xd8,0xfc,0x57,0xdc,0x88,
- 0x43,0x61,0x1c,0xa1,0x2d,0xf8,0xc5,0x99,0x5f,0x00,0x00,0xa8,0x70,0x68,0xef,0x0b,
- 0x4a,0xfe,0xeb,0x94,0x4f,0x76,0xf3,0xdc,0x2f,0x39,0xe8,0x8b,0x7c,0x12,0x71,0x85,
- 0x35,0x34,0x26,0xca,0x94,0x60,0xb9,0x86,0xc0,0x0a,0xb3,0x18,0xf8,0xce,0x6f,0x65,
- 0xdd,0x1c,0x00,0x00,0x00,0x05,0xf0,0xa6,0x4c,0x33,0x7f,0xae,0xbd,0x8d,0x9b,0x63,
- 0xbb,0x5f,0xce,0x2a,0xdf,0x6a,0xff,0xdb,0xa6,0x2f,0x66,0xc5,0x7e,0x67,0x85,0xa5,
- 0xa0,0xb5,0xfc,0x57,0xdc,0x08,0x6b,0x34,0x05,0x3d,0x3c,0x80,0x63,0x47,0x00,0x00,
- 0x50,0xf1,0xf0,0x76,0x94,0xdb,0x9e,0xce,0xb1,0xdd,0xa2,0x3c,0xf7,0xbf,0x1d,0x3d,
- 0x37,0x4f,0x9b,0x67,0x9a,0x5e,0xba,0xcf,0xd8,0xfd,0x57,0xbd,0x11,0x47,0x41,0x08,
- 0xdc,0x69,0x25,0x10,0xfc,0x02,0x00,0x40,0x55,0x40,0x7d,0x6d,0xf4,0xe8,0x0f,0xf4,
- 0xb7,0x71,0x85,0xb6,0xeb,0x6c,0xb8,0x76,0x4d,0xfe,0x22,0xcd,0xbe,0x90,0x12,0x95,
- 0xd5,0x88,0x63,0xf4,0x08,0x92,0x56,0x0a,0x3a,0xbf,0x0a,0x1a,0x73,0x7e,0x01,0x00,
- 0xa0,0x8a,0x48,0xb5,0xa3,0xf4,0xb0,0x8d,0xab,0xa5,0xc9,0xb9,0x62,0xef,0x5c,0x69,
- 0x29,0xe8,0xa4,0x5a,0x0a,0xda,0x6d,0x1c,0x92,0x55,0x61,0xdf,0x49,0x00,0x00,0x00,
- 0xb8,0x42,0x5d,0xa7,0xe8,0xe1,0xef,0x96,0xc2,0x76,0x33,0x9a,0xf4,0x9f,0xb4,0x71,
- 0x86,0xe9,0x75,0xfb,0x4a,0x9e,0xff,0x8a,0x1b,0x71,0x0c,0xb8,0xa5,0xa0,0x11,0xfc,
- 0x02,0x00,0x40,0x95,0xc1,0x77,0x81,0x97,0xdf,0xa7,0x54,0x3a,0xa5,0xed,0xb9,0xff,
- 0x95,0x15,0xf3,0x5c,0xbb,0x9e,0xf8,0x59,0x45,0xed,0x75,0xe6,0x96,0x60,0x89,0x1b,
- 0x71,0xe4,0x37,0xc2,0xca,0xa9,0x82,0x66,0xbf,0xd9,0xf4,0x1a,0x00,0x00,0x00,0x94,
- 0x1a,0x3a,0x73,0x28,0x15,0xf6,0x7a,0xf2,0x5c,0x41,0x84,0xeb,0xe0,0xb9,0x59,0x7d,
- 0x81,0xff,0xb6,0xe6,0x5a,0xd3,0xeb,0xf6,0x8f,0x94,0xff,0xa6,0x07,0x21,0xe9,0x37,
- 0xe2,0xe0,0x3b,0xbf,0x68,0x38,0x09,0x00,0x00,0xd5,0x07,0x25,0x62,0xf4,0xcc,0xc5,
- 0xde,0xf3,0xc9,0x3c,0xa5,0xfc,0x5f,0x36,0xd9,0x7c,0xd6,0x49,0xbf,0xfb,0x8f,0x8a,
- 0x4a,0x41,0xa7,0xfd,0xd7,0x79,0x0b,0x58,0x9c,0x82,0x4e,0x87,0xc0,0x98,0xb6,0x00,
- 0x00,0x00,0x55,0x0b,0x1d,0x78,0xc9,0x93,0xed,0x3a,0x84,0xb7,0x4e,0x9e,0x6b,0xd7,
- 0x93,0x17,0x50,0x05,0xa5,0xa0,0x47,0xfd,0x37,0xa6,0xdb,0x08,0x2b,0x55,0xf6,0x8c,
- 0xe0,0x17,0x00,0x00,0xaa,0x14,0x5e,0x32,0xf4,0xe4,0x2f,0x95,0x4a,0xa7,0x8a,0xf1,
- 0xdc,0x3c,0x35,0x1d,0x30,0xbd,0x6e,0xdf,0x18,0xf1,0x5f,0x8d,0x2a,0xe8,0x4c,0x23,
- 0x8e,0xe8,0x10,0x2a,0xaf,0x00,0x00,0xa0,0x9a,0xa1,0xdd,0xcf,0x69,0x6f,0xe3,0x7a,
- 0xf0,0xdc,0xac,0x3e,0x4f,0xeb,0xa6,0x99,0x5e,0xb4,0x7f,0xa4,0x4a,0xa0,0xf5,0x53,
- 0xd0,0xbd,0x68,0x38,0x09,0x00,0x00,0x55,0x0e,0x0d,0x74,0xd2,0xe3,0xe7,0x8a,0xb6,
- 0x71,0x8b,0xb7,0xda,0x51,0x4d,0xfc,0xbc,0x4d,0xe7,0xd0,0x13,0x3f,0xa5,0x78,0xa5,
- 0x1c,0x7a,0x2d,0xf0,0xdf,0xd1,0x46,0x58,0x79,0xe3,0x08,0x73,0xab,0xa0,0x87,0xfb,
- 0x91,0x7c,0x06,0x00,0x80,0x6a,0x87,0x88,0xd6,0x3f,0x16,0xb8,0xe7,0x66,0x74,0xdf,
- 0x39,0x3c,0xb8,0xee,0x3a,0x69,0x7a,0xd9,0x3e,0x31,0xea,0xbf,0x7a,0x8d,0x38,0x62,
- 0x15,0x37,0x0d,0x19,0x00,0x00,0x80,0x3e,0xd4,0xd5,0xc4,0xcf,0xff,0xfa,0x63,0xbb,
- 0xe7,0x88,0x75,0x5f,0xae,0x76,0xcc,0x37,0xbd,0x68,0x9f,0x18,0x2d,0x81,0xd6,0x49,
- 0x41,0x0f,0x10,0x46,0xfd,0x02,0x00,0x00,0x48,0x41,0x8b,0xc6,0x79,0x34,0x5c,0x75,
- 0xcf,0xcd,0xe8,0xde,0x7f,0xa3,0xa7,0x7e,0x55,0x21,0x1e,0x94,0xe3,0xbf,0x31,0xb7,
- 0x46,0x1c,0x99,0x2a,0xe8,0xd8,0x30,0x2a,0xaf,0x00,0x00,0x00,0x8c,0x40,0x0d,0xdb,
- 0x78,0xfd,0xb3,0xb4,0x74,0x2a,0x23,0x55,0xcf,0xfd,0xf7,0xac,0x98,0xed,0xa6,0xf5,
- 0xaf,0x34,0xe9,0x3f,0xa8,0xb3,0xd1,0xf4,0xa2,0xfd,0x80,0x39,0xa9,0x66,0x0a,0xda,
- 0x42,0xe5,0x15,0x00,0x00,0x80,0x0c,0xcc,0x2c,0x66,0x5f,0xa8,0xb7,0x8d,0x2b,0x8e,
- 0x6d,0xff,0x3d,0x57,0x36,0xcf,0xcd,0xea,0x73,0x5c,0x5b,0x9f,0x36,0xbd,0x66,0x9f,
- 0x50,0xf1,0xdf,0x4c,0x0a,0x3a,0x3a,0x64,0xfa,0x72,0x01,0x00,0x00,0x84,0x0b,0xda,
- 0xf7,0x42,0x51,0x29,0x65,0xb1,0x3e,0xe7,0xa8,0xa7,0x2e,0xa4,0xca,0xe8,0xbe,0x28,
- 0xf2,0x5f,0xa7,0x46,0x1c,0x98,0x76,0x04,0x00,0x00,0x20,0x0f,0x6e,0x10,0x8f,0xfd,
- 0x30,0x58,0xcf,0xb5,0x6b,0xe2,0x7f,0x50,0xfb,0x71,0xd3,0x8b,0xf6,0x03,0x9b,0xff,
- 0x4a,0x53,0xd0,0x38,0x76,0x04,0x00,0x00,0xa0,0x10,0xda,0x32,0xdb,0xc1,0x76,0x85,
- 0xdb,0xb8,0xa2,0xac,0xb2,0xba,0xee,0xf9,0x1c,0x6d,0x9c,0x6e,0x7a,0xc5,0x7e,0x60,
- 0x2b,0xc1,0x72,0x1b,0x47,0xc8,0xfd,0x17,0x95,0x57,0x00,0x00,0x00,0x04,0x50,0xe7,
- 0x29,0xba,0xff,0xcb,0xc1,0x7a,0x6e,0x56,0x9f,0xa5,0x99,0xe7,0x57,0x42,0x31,0x92,
- 0x43,0x09,0x96,0x20,0x05,0x9d,0x88,0x99,0xbe,0x56,0x00,0x00,0x00,0xa1,0x24,0x99,
- 0xa4,0xe7,0xae,0x29,0x28,0x9d,0xca,0xb3,0x5d,0x0f,0x56,0x6b,0xd3,0xdd,0x9f,0x1d,
- 0xd5,0xbf,0x70,0x67,0x6f,0xad,0x33,0xbd,0xe6,0xa2,0x91,0xf8,0x6f,0xd6,0x82,0x11,
- 0xfc,0x02,0x00,0x00,0x70,0x82,0x8e,0xae,0xd3,0xdb,0xc6,0x55,0xf2,0xdc,0x7f,0x11,
- 0xe9,0x9f,0xb9,0x5e,0x99,0x69,0x7a,0xc5,0x45,0x93,0xeb,0xbf,0xce,0x5b,0xc0,0x11,
- 0xf8,0x2f,0x00,0x00,0x00,0x27,0x28,0x1e,0xa5,0x3f,0xfc,0xdc,0x07,0xcf,0x75,0xb7,
- 0xdd,0x8c,0x66,0x9c,0x57,0x09,0xbd,0xa0,0x29,0xe9,0x1a,0x02,0xa7,0x1a,0x71,0x54,
- 0x40,0xa6,0x1d,0x00,0x00,0x40,0x90,0xd0,0x8e,0xf9,0x7a,0xdb,0xb8,0x19,0x89,0x0d,
- 0xb7,0xc0,0x73,0x33,0xba,0xeb,0x9f,0x78,0x22,0xfa,0xcc,0x61,0xd3,0x2b,0x2e,0x9a,
- 0xfc,0x14,0x74,0xac,0x20,0x04,0x1e,0x46,0xe5,0x33,0x00,0x00,0x00,0x77,0xa8,0xbf,
- 0x83,0xa6,0x7c,0x4d,0x16,0xe7,0x16,0xe1,0xb9,0x79,0x5a,0xf7,0x88,0xe9,0x15,0x17,
- 0x4d,0xca,0x7f,0x5d,0x1a,0x71,0x58,0x15,0x10,0xe3,0x03,0x00,0x00,0x08,0x1e,0x5a,
- 0x7a,0xa7,0x6b,0xe9,0xd4,0x67,0x3d,0x5a,0xad,0x50,0xd3,0xcf,0xa3,0x72,0xef,0x4a,
- 0xe1,0xec,0xbf,0x23,0x16,0x6c,0x51,0x45,0x34,0xbb,0x06,0x00,0x00,0x10,0x30,0xd4,
- 0xb0,0x5d,0xb6,0x8d,0x5b,0xb4,0xed,0x66,0xc4,0x82,0xe8,0x8e,0x13,0xa6,0x57,0x5c,
- 0x1c,0x02,0xff,0x8d,0xe5,0xfa,0x2f,0x2a,0xaf,0x00,0x00,0x00,0xc8,0xa1,0x64,0x9c,
- 0xf7,0x87,0x0c,0xce,0x73,0xef,0xfc,0x74,0x8e,0xb6,0xce,0x36,0xbd,0xe2,0xa2,0x71,
- 0xa9,0x82,0x8e,0xc7,0xe0,0xbf,0x00,0x00,0x00,0x14,0xa1,0xfd,0x4b,0x53,0x79,0x66,
- 0x07,0xc3,0xd5,0xf0,0xdc,0xcf,0xa4,0x95,0xe7,0xb9,0x13,0x3e,0x95,0xd6,0x1d,0xff,
- 0x48,0x4f,0x5e,0x50,0xf6,0xe3,0x08,0x5d,0x52,0xd0,0xe5,0xbe,0x34,0x00,0x00,0x00,
- 0x25,0x84,0x86,0x7a,0xe9,0xe1,0xff,0xf1,0x1a,0xde,0x7e,0xc6,0xa6,0x02,0xc3,0xcd,
- 0xd8,0x6e,0x46,0x2c,0xb2,0x2e,0xf7,0x71,0x84,0x05,0xfe,0xcb,0x0f,0x1c,0x8d,0xf8,
- 0x2f,0x82,0x5f,0x00,0x00,0x00,0xea,0x10,0xd1,0xba,0x69,0x5e,0x6d,0xd7,0x21,0xce,
- 0x75,0xd1,0x96,0x32,0x4f,0x41,0x73,0xff,0x15,0xa4,0xa0,0xd1,0x73,0x12,0x00,0x00,
- 0x80,0x2e,0xd4,0x73,0x86,0xcf,0x22,0x54,0xdf,0xc6,0xcd,0xc8,0xdd,0x6a,0x05,0xfa,
- 0x04,0x3d,0xf1,0x33,0x4a,0x94,0x73,0x87,0x8a,0x51,0xff,0xcd,0x4b,0x41,0x97,0x7d,
- 0x5e,0x1d,0x00,0x00,0x80,0x09,0xe8,0x85,0x5b,0x03,0xf4,0x5c,0xbb,0x58,0xd4,0xdc,
- 0x5c,0xce,0x8d,0x38,0x44,0xfe,0xcb,0xbf,0x51,0x20,0xf9,0x0c,0x00,0x00,0x40,0x1f,
- 0xaa,0x7f,0x85,0x6f,0xce,0xde,0xe5,0x90,0x52,0x96,0x66,0x95,0xd3,0xfa,0xa4,0x4d,
- 0x9f,0x70,0xd4,0xda,0x32,0x6f,0xc4,0x21,0x0c,0x81,0x01,0x00,0x00,0x00,0x7d,0x28,
- 0x3a,0x48,0x8f,0xfe,0x30,0x40,0xcf,0xcd,0xe8,0xf6,0x4f,0xd0,0xa3,0x3f,0x28,0x6f,
- 0xc3,0x2a,0xf0,0x5f,0xf4,0x9c,0x04,0x00,0x00,0xe0,0x19,0xda,0x30,0xdd,0x7b,0x56,
- 0x59,0xea,0xb9,0x76,0x4d,0xf8,0x34,0xb5,0xd4,0x9a,0x5e,0x6e,0x71,0xe4,0xfb,0x2f,
- 0x92,0xcf,0x00,0x00,0x00,0x3c,0x42,0x03,0x9d,0x34,0xf1,0xf3,0xfe,0x18,0xae,0xd0,
- 0x76,0x33,0xba,0xed,0xe3,0xb4,0xfa,0x01,0xd3,0xcb,0x2d,0x0e,0xf8,0x2f,0x00,0x00,
- 0x00,0xff,0xa0,0xa5,0x13,0xbc,0xa4,0x94,0x1d,0x3d,0xf7,0x1f,0x72,0xc4,0x6c,0x37,
- 0xa3,0xa9,0xdf,0xe2,0xa3,0x82,0xca,0x17,0xdb,0x29,0x24,0x24,0x9f,0x01,0x00,0x00,
- 0x14,0x09,0x9d,0xdc,0x43,0x77,0xfd,0x73,0xd1,0x71,0xae,0xc8,0x70,0x73,0xf4,0xf7,
- 0xfc,0x57,0x4f,0xed,0x31,0xbd,0xdc,0xe2,0x18,0x0d,0x81,0x11,0xfc,0x02,0x00,0x00,
- 0x28,0x96,0x78,0x94,0x4f,0x29,0xf2,0x92,0x52,0xfe,0x07,0x9b,0x72,0xad,0x56,0xa8,
- 0x5b,0x3f,0x46,0x2b,0x26,0x9a,0x5e,0x6d,0x71,0x64,0xab,0xb0,0xe0,0xbf,0x00,0x00,
- 0x00,0x8a,0x85,0x36,0x3d,0xa1,0xb1,0x8d,0xeb,0x14,0xde,0x3a,0x79,0xae,0x5d,0x53,
- 0xbe,0x4a,0xf1,0x88,0xe9,0xe5,0x16,0x41,0xda,0x7f,0x61,0xbe,0x00,0x00,0x00,0x7c,
- 0x80,0x06,0x3a,0x68,0xe2,0x39,0x01,0xda,0xae,0x5d,0xf5,0x9b,0x4d,0x2f,0xb7,0x08,
- 0xe0,0xbf,0x00,0x00,0x00,0xfc,0x83,0x18,0x2f,0x4e,0xc8,0xaf,0x9e,0xf2,0xd1,0x73,
- 0xb3,0xfa,0x3b,0x7a,0xe9,0x6e,0xd3,0xcb,0x2d,0x0e,0xf8,0x2f,0x00,0x00,0x00,0xff,
- 0xa0,0xa6,0x7d,0xbc,0x4b,0xa4,0x96,0xe1,0xaa,0x7a,0x6e,0xca,0x76,0x47,0x74,0xcb,
- 0x47,0xe9,0x91,0xef,0x96,0x77,0x23,0x0e,0x00,0x00,0x00,0xc0,0x47,0x12,0x31,0x3e,
- 0xa8,0xd7,0x07,0xab,0x1d,0xd5,0x2d,0x7f,0x67,0xd3,0x47,0xb3,0x62,0xbf,0xd4,0x56,
- 0x6f,0x7a,0xb5,0x00,0x00,0x00,0x40,0x58,0xa0,0x7d,0x2f,0x16,0xeb,0xb9,0xdc,0x76,
- 0x3f,0x2a,0xd0,0xb8,0xbf,0xcd,0xd1,0xba,0x69,0xa6,0xd7,0x0a,0x00,0x00,0x00,0x84,
- 0x05,0x8a,0x0c,0xd0,0xfd,0x5f,0xf2,0xc7,0x70,0x0b,0x3d,0xd7,0xae,0x87,0xbe,0x8d,
- 0xc9,0xb9,0x00,0x00,0x00,0x40,0x06,0x5a,0x7c,0x8b,0xea,0x36,0xae,0x5d,0xe3,0x3f,
- 0x92,0x96,0x8b,0xe7,0xda,0xc5,0xde,0xea,0xf4,0x41,0xd3,0x6b,0x05,0x00,0x00,0x00,
- 0xc2,0x02,0x35,0xee,0xc9,0x4f,0x3b,0x3b,0x6d,0xe3,0x66,0x3c,0x57,0xd5,0x76,0x3f,
- 0x6c,0xd3,0x87,0x68,0xf5,0x83,0xa6,0xd7,0x0a,0x00,0x00,0x00,0x84,0x86,0x44,0x8c,
- 0xa6,0xfd,0x6f,0xae,0xed,0x16,0x17,0xea,0xda,0x3d,0xd7,0xae,0xa9,0xdf,0xa6,0x64,
- 0xdc,0xf4,0x6a,0x01,0x00,0x00,0x80,0xb0,0x40,0x9b,0x9f,0xcc,0xb7,0x5d,0x55,0xab,
- 0xcd,0xe8,0x43,0x72,0x8d,0xff,0x28,0x9d,0x3e,0x64,0x7a,0xad,0x00,0x00,0x00,0x40,
- 0x58,0xa0,0x9e,0x66,0xba,0xe7,0x73,0x81,0x78,0xae,0x5d,0x37,0x7f,0x88,0x5e,0x9e,
- 0x64,0x7a,0xad,0x00,0x00,0x00,0x40,0x88,0xa0,0xe7,0xae,0x53,0xdd,0xc6,0xf5,0x60,
- 0xbb,0x19,0x4d,0xf9,0x5a,0x79,0xf7,0x82,0x06,0x00,0x00,0x00,0x7c,0x85,0x8e,0x6d,
- 0x51,0xdd,0xc6,0x55,0xf1,0xd9,0x3c,0xdd,0xf4,0x37,0x69,0x8d,0xff,0x08,0x9d,0xda,
- 0x6f,0x7a,0xad,0x00,0x00,0x00,0x40,0x58,0xa0,0xe8,0x10,0x3d,0xf0,0x95,0xa2,0x62,
- 0xdb,0x7c,0xcf,0xfd,0xa0,0x48,0x1f,0xa0,0x95,0xbf,0x37,0xbd,0x56,0x00,0x00,0x00,
- 0x20,0x44,0xd0,0xba,0x69,0x45,0x79,0xae,0xd8,0x70,0x53,0x9e,0x6b,0xd7,0xfd,0x5f,
- 0x46,0x23,0x0e,0x00,0x00,0x00,0x20,0x03,0x75,0x9d,0xa2,0x3b,0x3f,0xad,0x66,0xbb,
- 0x7f,0x93,0x95,0xa2,0xed,0x66,0xc4,0x5e,0xd2,0xb8,0xd3,0xf4,0x5a,0x01,0x00,0x00,
- 0x80,0xb0,0xc0,0x27,0x12,0x3e,0x3d,0x26,0x10,0xcf,0xbd,0xf1,0xfd,0x39,0x5a,0x76,
- 0xaf,0xe9,0xb5,0x02,0x00,0x00,0x00,0x21,0x82,0x0e,0x2c,0x73,0x2c,0x9d,0xf2,0x66,
- 0xb5,0x42,0x4d,0xfe,0x4f,0xa2,0xa4,0xe9,0xb5,0x02,0x00,0x00,0x00,0x61,0x81,0x86,
- 0xfa,0xe8,0x77,0x5f,0x28,0x36,0xbc,0x95,0x8a,0xbd,0xa4,0xe7,0xb4,0xe9,0xb5,0x02,
- 0x00,0x00,0x00,0x21,0x82,0x56,0xde,0xaf,0xe4,0xb9,0x1e,0x6c,0xf7,0x86,0xbf,0xce,
- 0x6a,0xed,0x23,0xa6,0x17,0x0a,0x00,0x00,0x00,0x84,0x08,0x6a,0xda,0xcf,0x77,0x7e,
- 0x8b,0xf2,0xdc,0xf7,0x65,0x95,0x31,0xdc,0xeb,0xdf,0x9b,0xd5,0x75,0x7f,0x45,0x0f,
- 0x7d,0xc7,0x42,0x15,0x34,0x00,0x00,0x00,0x30,0x0a,0xc5,0xa3,0xfc,0x88,0x90,0x97,
- 0x20,0xb7,0xc0,0x73,0xed,0xb6,0xcb,0x3c,0xd7,0xae,0x9b,0x3f,0x44,0xcd,0x47,0x4c,
- 0xaf,0x15,0x00,0x00,0x00,0x08,0x11,0xb4,0xea,0x01,0xb5,0x7c,0xf2,0xfb,0x72,0xe5,
- 0x10,0xea,0x3a,0x09,0xe3,0x08,0x01,0x00,0x00,0x00,0x1b,0xd4,0x52,0xcb,0xfb,0x4f,
- 0xaa,0x6c,0xe3,0xda,0xe5,0x62,0xb5,0x42,0x3d,0xf0,0x55,0xf6,0x47,0x99,0x5e,0x2b,
- 0x00,0x00,0x00,0x10,0x16,0xf8,0x41,0xe0,0x3f,0xfc,0x34,0x10,0xcf,0xbd,0xee,0xdd,
- 0x59,0xdd,0xf0,0x5e,0x6a,0xdc,0x65,0x7a,0xad,0x00,0x00,0x00,0x40,0x88,0xa0,0x5d,
- 0xcf,0x2b,0x6d,0xe3,0xba,0xe9,0x3d,0xa3,0x7a,0xb7,0xa3,0x96,0xde,0x6d,0x7a,0xa1,
- 0x00,0x00,0x00,0x40,0x88,0xa0,0xbe,0x36,0xde,0x8b,0x52,0xcf,0x76,0xdf,0x93,0x2b,
- 0x67,0xdb,0x1d,0xd1,0xb5,0xef,0xe6,0xe3,0x08,0x93,0x09,0xd3,0x6b,0x05,0x00,0x00,
- 0x00,0x42,0x03,0x11,0xcd,0xbe,0xd0,0xb7,0x38,0x37,0xcf,0x76,0x33,0xba,0xe9,0x83,
- 0xd4,0xd9,0x68,0x7a,0xa9,0x00,0x00,0x00,0x40,0x88,0xa0,0xbd,0x8b,0x9d,0x23,0x5f,
- 0x35,0xab,0x15,0x7a,0x6e,0x9e,0x36,0x3c,0x66,0x7a,0xa1,0x00,0x00,0x00,0x40,0x88,
- 0xa0,0xc8,0x20,0xdd,0xf3,0x59,0xff,0x3d,0xf7,0x9a,0xbf,0xcc,0xd1,0xd4,0x6f,0x59,
- 0x89,0xb8,0xe9,0xb5,0x02,0x00,0x00,0x00,0x21,0x82,0x5e,0xb8,0xb5,0x38,0xdb,0x7d,
- 0x57,0x56,0x79,0xb6,0x9b,0xd1,0x8d,0xef,0xa7,0x96,0x1a,0xd3,0x0b,0x05,0x00,0x00,
- 0x00,0x42,0x04,0x9d,0xdc,0xc3,0x5b,0x60,0x69,0x47,0xb8,0xef,0x1a,0x55,0x9e,0xdb,
- 0xbe,0x53,0xac,0x75,0xd3,0x4c,0x2f,0x14,0x00,0x00,0x00,0x08,0x11,0xbc,0x17,0xe5,
- 0x94,0xaf,0x7b,0xc9,0x2a,0x4b,0x3d,0xf7,0xea,0x77,0x64,0xf5,0xe0,0x37,0x4c,0x2f,
- 0x14,0x00,0x00,0x00,0x08,0x17,0xb4,0x75,0x76,0x20,0x9e,0x6b,0x17,0x7b,0x49,0xeb,
- 0x51,0xd3,0x0b,0x05,0x00,0x00,0x00,0x42,0x04,0x0d,0x74,0xf1,0x5e,0x94,0x2a,0x3b,
- 0xb9,0xba,0xb6,0x9b,0xd5,0xdb,0x69,0xd5,0xfd,0xa6,0x17,0x0a,0x00,0x00,0x00,0x84,
- 0x08,0xde,0x8b,0x72,0xc6,0x4f,0xf4,0x0c,0x57,0xd1,0x73,0x33,0xba,0xea,0x6d,0xf4,
- 0xd8,0x8f,0xac,0x64,0xd2,0xf4,0x5a,0x01,0x00,0x00,0x80,0x10,0xc1,0x7b,0x51,0x3a,
- 0xb9,0xad,0xdc,0x67,0x73,0x75,0xd5,0xdb,0x47,0xf5,0xb6,0x1c,0xdd,0xf4,0x41,0xea,
- 0x6a,0x32,0xbd,0x50,0x00,0x00,0x00,0x20,0x44,0xd0,0x40,0x27,0xdd,0xfa,0xb1,0x22,
- 0x3c,0xf7,0x6d,0x62,0x5d,0xf9,0xd6,0xac,0x7e,0xfb,0x17,0xb4,0x75,0xb6,0xe9,0x85,
- 0x02,0x00,0x00,0x00,0xe1,0x82,0x16,0xdd,0x1c,0x88,0xed,0xda,0xf5,0xc8,0xf7,0x2d,
- 0x42,0x0a,0x1a,0x00,0x00,0x00,0xc8,0x42,0x0d,0xdb,0x78,0x87,0x67,0xf7,0x6d,0xdc,
- 0xab,0x73,0xb3,0xca,0x2c,0xa4,0xcd,0xc8,0xc9,0x73,0xed,0xba,0xf6,0xdd,0xd4,0x79,
- 0xd2,0xf4,0x42,0x01,0x00,0x00,0x80,0x30,0x11,0x8f,0xd0,0xe4,0x2f,0xca,0xb7,0x71,
- 0xed,0xb6,0xab,0xe2,0xb9,0x5c,0x7f,0x9e,0xd5,0x86,0xc7,0x4d,0xaf,0x13,0x00,0x00,
- 0x00,0x08,0x17,0xb4,0x7a,0x8a,0xa3,0xed,0xea,0x86,0xba,0x76,0xcf,0xbd,0xf2,0xcf,
- 0xb2,0x7a,0xe8,0xdb,0x84,0x14,0x34,0x00,0x00,0x00,0x60,0x83,0x5a,0x8f,0xf2,0x2a,
- 0x68,0x95,0x9d,0x5c,0x47,0xfd,0x99,0x44,0xec,0xfd,0xbb,0x4e,0x99,0x5e,0x28,0x00,
- 0x00,0x00,0x10,0x22,0xf8,0x41,0xe0,0xfb,0xbf,0xec,0xb3,0xe1,0x16,0x0a,0x8d,0x38,
- 0x00,0x00,0x00,0x80,0x5c,0x68,0xed,0xc3,0x0a,0x29,0x65,0x4d,0xc3,0xbd,0x22,0x57,
- 0xf7,0x7f,0xc9,0x4a,0x44,0x4d,0x2f,0x14,0x00,0x00,0x00,0x08,0x11,0xd4,0x5a,0x47,
- 0xd7,0xbf,0x57,0xbe,0x8d,0xab,0x68,0xb5,0x19,0x5d,0xfe,0x96,0xac,0xae,0x7e,0x07,
- 0xc6,0x11,0x02,0x00,0x00,0x00,0x39,0x24,0xe2,0x34,0xf5,0xdb,0xda,0xa1,0xae,0xdc,
- 0x76,0xff,0x34,0x47,0x6b,0xa6,0x98,0x5e,0x27,0x00,0x00,0x00,0x10,0x2e,0x68,0xcb,
- 0xec,0xe2,0x3c,0xf7,0x4f,0x1d,0xf4,0xe6,0xac,0x7e,0xf7,0x1f,0x68,0xc4,0x01,0x00,
- 0x00,0x00,0xd8,0xa1,0xfe,0x0e,0xba,0xe1,0xbd,0xfe,0x7b,0x6e,0x46,0x97,0xfd,0x09,
- 0xff,0xe7,0xe9,0xc3,0xa6,0x17,0x0a,0x00,0x00,0x00,0x84,0x08,0x5e,0x05,0xfd,0x87,
- 0xf3,0x1d,0x6c,0xf7,0x2d,0x39,0xd2,0xb5,0x5d,0xbb,0x96,0xdd,0x6b,0x7a,0xa1,0x00,
- 0x00,0x00,0x40,0xb8,0xa0,0x2d,0x4f,0x29,0x6d,0xe3,0x0a,0x7d,0xb6,0xd0,0x6a,0x85,
- 0xfa,0xdd,0x39,0x14,0x8f,0x98,0x5e,0x28,0x00,0x00,0x00,0x10,0x22,0xa8,0xb3,0x91,
- 0xae,0x79,0x97,0x46,0x6c,0xab,0xe8,0xb9,0x76,0xfd,0xf6,0xad,0xd4,0xb4,0xdf,0xf4,
- 0x42,0x01,0x00,0x00,0x80,0x30,0x41,0x44,0x8f,0xfd,0xd0,0x7f,0xcf,0xbd,0xf4,0x8d,
- 0x39,0x5a,0xf3,0xa0,0xe9,0x75,0x02,0x00,0x00,0x00,0xe1,0x82,0xb6,0xcf,0x53,0xdd,
- 0xc9,0x15,0xeb,0x4d,0x59,0xe5,0xd9,0x6e,0x46,0x0f,0x7c,0xcd,0x4a,0x26,0x4c,0x2f,
- 0x14,0x00,0x00,0x00,0x08,0x11,0xd4,0xdb,0x4a,0x37,0x7d,0x50,0x3f,0xd4,0x95,0x79,
- 0xee,0x25,0x36,0xfd,0xf6,0x6d,0xd4,0x56,0x6f,0x7a,0xa1,0x00,0x00,0x00,0x40,0x98,
- 0xa0,0x24,0x3d,0xf9,0x0b,0x85,0x94,0xf2,0x9b,0x72,0xe5,0x60,0xb5,0x76,0x5d,0xfc,
- 0x86,0xac,0xd6,0x3e,0x64,0x7a,0x9d,0x00,0x00,0x00,0x40,0xb8,0xa0,0xdd,0xcf,0x2b,
- 0x6d,0xe3,0x4a,0x3d,0xf7,0xe2,0xd7,0x3b,0xea,0x81,0xaf,0x50,0x12,0x8d,0x38,0x00,
- 0x00,0x00,0x80,0x2c,0x14,0x1d,0xa4,0x1b,0xdf,0x1f,0x88,0xed,0x5e,0xfc,0xda,0xb4,
- 0xd8,0x6f,0x6b,0xab,0x33,0xbd,0x50,0x00,0x00,0x00,0x20,0x5c,0xd0,0x8c,0xf3,0x14,
- 0x0c,0xf7,0x0d,0x59,0xe5,0x98,0xec,0xeb,0x72,0xf5,0x5a,0xb1,0x56,0x4c,0x34,0xbd,
- 0x4a,0x00,0x00,0x00,0x20,0x5c,0xa4,0x52,0xd0,0x6f,0x92,0x6d,0xe3,0xbe,0xde,0xc1,
- 0x76,0x1d,0x0c,0x37,0x4f,0x13,0xcf,0xa1,0x38,0xc6,0x11,0x02,0x00,0x00,0x00,0x59,
- 0x78,0x2f,0xe8,0x9b,0x3e,0x28,0x2e,0x9d,0x72,0x0c,0x75,0x15,0x3c,0x77,0xac,0x4d,
- 0x97,0xbd,0x99,0xce,0xa0,0x17,0x34,0x00,0x00,0x00,0x60,0x83,0x88,0xe6,0x5e,0x2a,
- 0xdf,0xc6,0x55,0xd4,0x58,0x07,0xad,0x98,0x64,0x7a,0x9d,0x00,0x00,0x00,0x40,0xb8,
- 0xa0,0x86,0x6d,0xfc,0x60,0x91,0xef,0x9e,0x3b,0xe6,0x35,0x59,0xdd,0xf1,0x09,0x2b,
- 0x19,0x37,0xbd,0x50,0x00,0x00,0x00,0x20,0x44,0x50,0x22,0x4a,0x77,0x7e,0xba,0x38,
- 0xcf,0x3d,0x3b,0x2d,0xbb,0xe7,0xda,0xc5,0x7e,0xcf,0xa9,0xbd,0xa6,0x17,0x0a,0x00,
- 0x00,0x00,0x84,0x0b,0x5a,0x76,0x8f,0x5e,0x78,0x3b,0xe6,0xec,0x5c,0xd9,0xdd,0xf6,
- 0xd5,0x02,0x5d,0xf4,0x2a,0x5a,0x7c,0xab,0xe9,0x55,0x02,0x00,0x00,0x00,0xe1,0x82,
- 0x4e,0xed,0xe7,0xe7,0x7f,0x35,0x6c,0xf7,0x35,0x72,0xcf,0x1d,0xb1,0xdd,0x8c,0x26,
- 0x7c,0x1a,0xe3,0x08,0x01,0x00,0x00,0x00,0x3b,0x94,0x88,0xd3,0xed,0xff,0x20,0xdf,
- 0xc6,0x55,0xb1,0x5d,0xbb,0xe7,0xda,0x35,0xf6,0x6c,0x3a,0xb1,0xcb,0xf4,0x42,0x01,
- 0x00,0x00,0x80,0x70,0x41,0x4b,0x6e,0x53,0xf0,0x5c,0x85,0x38,0xd7,0x45,0x0b,0xae,
- 0x32,0xbd,0x4a,0x00,0x00,0x00,0x20,0x5c,0x50,0xe3,0x1e,0x7e,0xfe,0xd7,0x7f,0xdb,
- 0x3d,0x2b,0xab,0xf1,0x1f,0xb1,0xa2,0x83,0xa6,0x17,0x0a,0x00,0x00,0x00,0x84,0x89,
- 0x78,0x84,0x26,0x7c,0x4a,0xcf,0x6a,0xd9,0xff,0xbf,0xea,0x6d,0x12,0xfd,0xf6,0x2f,
- 0xb2,0xba,0xe6,0x9d,0xcc,0xe5,0x4d,0xaf,0x13,0x00,0x00,0x00,0x08,0x17,0x74,0x6a,
- 0x1f,0xd5,0xae,0x17,0xab,0x66,0xad,0x40,0xec,0xff,0x37,0x6c,0xa3,0x86,0xed,0x0e,
- 0xda,0x26,0xd0,0x60,0x97,0xe9,0x55,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0x11,0x8a,0x0f,0x53,0x5f,0x1b,0xef,
- 0x4d,0xd1,0xb8,0x9b,0x6a,0xd7,0xd1,0xc1,0xe5,0xa1,0x53,0xdd,0x06,0x7e,0x6d,0xa7,
- 0x0f,0x52,0x7f,0x3b,0xbb,0x5a,0x7f,0x56,0xdd,0x52,0xeb,0xf1,0x62,0x8e,0xac,0xe2,
- 0x17,0xc3,0xd4,0x73,0x9a,0x22,0xfd,0xbe,0x5c,0x0c,0x00,0x00,0x80,0x2a,0x81,0x77,
- 0xa2,0x68,0x39,0x4a,0x9b,0xfe,0x40,0x33,0x7f,0x41,0x93,0xbe,0x40,0xb7,0x7f,0x82,
- 0x8f,0xe7,0xbb,0xe9,0x03,0x74,0xfd,0x7b,0xe9,0xba,0xf7,0x84,0x4e,0x37,0xfc,0x35,
- 0xbf,0xb6,0x9b,0xff,0x86,0x5f,0x27,0xbb,0xda,0x59,0xbf,0xa6,0x57,0xfe,0xc0,0xaf,
- 0xbf,0x88,0x61,0x07,0xb4,0x73,0xbe,0xc7,0x8b,0xb9,0xfe,0xaf,0xf8,0xc5,0x30,0xdd,
- 0xfa,0x31,0xba,0xef,0x5f,0xe9,0xb1,0x1f,0xd2,0xca,0xdf,0x53,0xfd,0x16,0x8a,0xa1,
- 0xed,0x15,0x00,0x00,0x80,0x42,0xc8,0x8a,0x0e,0x52,0x47,0x03,0xed,0x5d,0x4c,0x4f,
- 0x8f,0xa1,0x1b,0xde,0x47,0x17,0xa5,0x8e,0xdb,0x5c,0x78,0x16,0x5d,0xf8,0xff,0xca,
- 0x4d,0x67,0xa5,0x4e,0x06,0xbd,0x9a,0x9b,0xe0,0xbc,0xcb,0xd9,0x8a,0xac,0xce,0x46,
- 0xdd,0x23,0xb7,0xd4,0xdb,0x4a,0x97,0xbe,0xd1,0xa7,0x8b,0x49,0x5d,0xcf,0x95,0x6f,
- 0xa5,0xe9,0xe7,0xd1,0xf6,0xf9,0xd4,0x76,0xcc,0x1a,0xee,0xe3,0x37,0x1c,0x00,0x00,
- 0x40,0x95,0x33,0xdc,0x4b,0x87,0x57,0xf2,0xd6,0x4f,0x77,0x7c,0x82,0xdb,0x96,0x79,
- 0x03,0xf5,0x55,0x6c,0x45,0x2c,0x2e,0x7e,0x71,0x02,0xd5,0xae,0xb7,0x22,0x03,0x8a,
- 0xb7,0x84,0x28,0x49,0xf7,0x7f,0x39,0x80,0x8b,0x39,0x8b,0xc7,0xe9,0xcf,0x5d,0x4b,
- 0x07,0x97,0x5b,0xfd,0xed,0x81,0xfe,0x54,0x01,0x00,0x00,0x84,0x16,0x9e,0x67,0x3e,
- 0xb6,0x89,0x8f,0x9e,0xbf,0xf1,0x7d,0xe5,0x19,0xea,0xaa,0xeb,0x2c,0x1a,0xf7,0x61,
- 0x7a,0xf6,0x2a,0xbe,0xde,0x84,0x52,0x5e,0x9a,0xd6,0x4c,0x0d,0xf0,0x7a,0xae,0x7b,
- 0x37,0xcf,0xed,0xef,0x59,0x48,0xca,0x5f,0x09,0x00,0x00,0x00,0x54,0x06,0xd4,0x7d,
- 0x86,0x16,0xde,0x44,0xb7,0x7f,0x3c,0x95,0x67,0x36,0xee,0x8f,0x25,0xd1,0x98,0x57,
- 0xf3,0xf5,0x2e,0x1a,0x4f,0xbd,0xcd,0xf2,0xfb,0xd3,0x56,0xcf,0x7b,0x51,0x06,0x7a,
- 0x3d,0x37,0xbc,0x8f,0xef,0x56,0x37,0xd7,0x10,0x21,0x1d,0x0d,0x00,0x00,0x55,0x40,
- 0x32,0x41,0x35,0x6b,0x78,0x56,0xf6,0x92,0x37,0x98,0xf7,0xc4,0xd2,0xeb,0xd2,0x37,
- 0xd2,0x84,0x7f,0xa4,0x9a,0xd5,0xec,0x3e,0xb8,0xde,0xa5,0x24,0xdd,0xf7,0xef,0x81,
- 0x5f,0xcc,0xd8,0xb3,0x69,0xdc,0x87,0x68,0xcb,0x53,0x98,0x4b,0x08,0x00,0x00,0x15,
- 0x4e,0x7f,0x3b,0x2d,0x1e,0x4f,0x17,0xbf,0xde,0xbc,0x0f,0x9a,0xd5,0x25,0xaf,0xa7,
- 0x17,0xef,0xa0,0x3e,0xb7,0x4d,0x58,0x5a,0xfd,0x60,0x89,0x2e,0xe6,0xa2,0x57,0xd1,
- 0xcc,0xf3,0xa9,0xe5,0xa8,0x85,0x40,0x18,0x00,0x00,0x2a,0x11,0xea,0x38,0x41,0xb3,
- 0x2e,0xe0,0xd3,0x7c,0x8c,0xdb,0x5f,0x18,0xc4,0xee,0xc3,0x53,0xbf,0x66,0xf7,0xc4,
- 0xf1,0x76,0xb5,0xd4,0x96,0x34,0x45,0x70,0xdf,0xbf,0x51,0xdd,0x46,0x58,0x30,0x00,
- 0x00,0x54,0x18,0xd4,0x5a,0xc7,0x8f,0xa3,0x5e,0xe4,0xa9,0xce,0x6a,0xec,0x6b,0xf9,
- 0x1c,0x9f,0xeb,0xdf,0xcb,0x33,0xb7,0x13,0x3e,0x15,0x22,0xdd,0xfe,0x0f,0xfc,0xc8,
- 0xed,0x65,0x6f,0xa2,0x8b,0x5f,0xe7,0x65,0x5d,0xec,0x6e,0xb0,0x7b,0xd2,0x76,0x4c,
- 0x7c,0xcb,0x12,0x31,0xba,0xe7,0x73,0xf2,0x77,0xb8,0xfd,0xe3,0xd9,0xeb,0xb9,0xf9,
- 0x83,0x74,0xed,0xbb,0xf9,0xc5,0x78,0xbb,0xcf,0x13,0x3e,0x49,0x07,0x5e,0xc2,0x76,
- 0x30,0x00,0x00,0x54,0x0c,0x34,0xd0,0x49,0x53,0xbe,0xc2,0x0b,0x90,0xb4,0xec,0xe0,
- 0x9a,0x77,0xd2,0xc3,0xdf,0xa6,0xa5,0x13,0x68,0xcf,0x42,0xab,0x6e,0x93,0x75,0x7c,
- 0xab,0xd5,0xb4,0xcf,0x6a,0xda,0x1f,0x22,0x9d,0xda,0x6b,0x1d,0xdf,0x62,0xd5,0xae,
- 0xa5,0x7d,0x8b,0x69,0xf9,0x7d,0xf4,0xf8,0xb9,0x34,0xfe,0x6f,0x35,0xa3,0xe0,0x57,
- 0xd3,0x83,0xdf,0x60,0xf7,0x47,0x7c,0xdf,0x96,0xdc,0x21,0x7b,0x87,0xb3,0x68,0xdb,
- 0xd3,0xd9,0xeb,0x39,0xb1,0xc3,0xaa,0xdf,0x4c,0xfb,0x5e,0xa0,0x35,0x0f,0xd2,0x13,
- 0x3f,0xe5,0x75,0xce,0xba,0x16,0x3c,0xee,0x43,0xc4,0xee,0x33,0x00,0x00,0x80,0xf2,
- 0x87,0x86,0x07,0x68,0xda,0xf7,0x55,0xcd,0x77,0xec,0xd9,0x74,0xc5,0x9f,0xd1,0xd4,
- 0x6f,0xf0,0x5e,0x1c,0x3d,0xa7,0xad,0xa1,0x5e,0x2b,0x1e,0xb1,0x28,0x69,0x7a,0x11,
- 0x32,0xd8,0x15,0xb2,0xeb,0x1c,0xee,0xe3,0xad,0x33,0x0e,0xae,0xa0,0x3f,0xfc,0x82,
- 0xae,0xf9,0x4b,0x1a,0xab,0x96,0x69,0x67,0x77,0x86,0xdd,0x9f,0xe8,0x90,0xe0,0x5d,
- 0x4f,0x1f,0x94,0xa7,0xeb,0x5f,0xb8,0xb5,0xe0,0x65,0xc4,0x62,0x67,0x7e,0x31,0x3d,
- 0x67,0xf8,0x8c,0xc2,0xe9,0xe7,0xd1,0x55,0x6f,0xe7,0x37,0x56,0xd5,0x82,0x3f,0x4c,
- 0x2d,0xb5,0x25,0xb8,0x67,0x00,0x00,0x00,0x02,0x24,0x11,0xa3,0x25,0xb7,0xab,0x3e,
- 0xf9,0xaf,0x7b,0x0f,0x3d,0x73,0x09,0x9d,0xd8,0x45,0xe1,0x37,0x5c,0x19,0xd4,0x7a,
- 0x94,0xe6,0x8c,0xe5,0xfd,0x2e,0x14,0x0f,0x58,0xbd,0x38,0x81,0x9b,0x66,0xe1,0xfb,
- 0xdc,0xf5,0x4f,0x92,0x17,0xde,0xf6,0xf7,0x56,0x3c,0x2a,0xb9,0x98,0x96,0x1a,0x7a,
- 0xf6,0xb7,0xbc,0x25,0x97,0x62,0x5e,0xfa,0xfe,0x2f,0x39,0x85,0xe4,0x00,0x00,0x00,
- 0xca,0x02,0x3a,0xb2,0x9a,0xae,0x78,0x8b,0x52,0x0c,0x38,0xf1,0x1c,0xda,0x3e,0x57,
- 0xb1,0x3d,0x45,0x59,0xc0,0xdb,0x58,0x1d,0x59,0x45,0x53,0xbf,0xa5,0xb4,0x3b,0xcc,
- 0xee,0x52,0xcd,0x1a,0xc1,0x9b,0x48,0x53,0xd0,0xec,0xd6,0x35,0xee,0x56,0xb8,0x18,
- 0xe2,0x7b,0xbb,0x93,0xff,0x4b,0xa9,0xfe,0x8d,0xd9,0xf4,0x8b,0x77,0x94,0x41,0xda,
- 0x01,0x00,0x00,0x80,0x08,0x8a,0xf4,0xd3,0xc4,0xcf,0x2b,0x05,0x5c,0x4f,0xfe,0x92,
- 0x6f,0x5f,0x56,0xe4,0x03,0xbf,0xad,0x9e,0x77,0xbe,0x52,0x71,0xbd,0x49,0x5f,0x28,
- 0x1c,0x5a,0x44,0x27,0x76,0xd2,0x18,0x59,0xea,0xf8,0x85,0xdb,0xd4,0x2e,0x85,0xac,
- 0x33,0x87,0x78,0xd1,0xb5,0x4a,0x14,0x7c,0xf5,0x3b,0xe8,0xe4,0x1e,0xdf,0x6f,0x06,
- 0x00,0x00,0x80,0x12,0x40,0xeb,0xa7,0x29,0xf9,0xce,0x63,0x3f,0xa4,0xde,0x16,0xd3,
- 0x17,0x1b,0x20,0xbc,0xfc,0x8c,0xb9,0x9e,0xf4,0x3e,0x8c,0x3d,0x9b,0xd6,0x3f,0x9a,
- 0xff,0xda,0x58,0x84,0x6e,0xfb,0xb8,0xe4,0x85,0x77,0x7e,0x5a,0x3d,0x6f,0xc0,0x77,
- 0xa8,0xa7,0x9f,0xa7,0xf4,0xa5,0x68,0xda,0xf7,0x29,0x59,0x89,0xdf,0x88,0x00,0x00,
- 0xa0,0xa2,0xa1,0xa1,0x1e,0x1a,0x27,0x2d,0x06,0x3e,0x8b,0x1e,0xf9,0x1e,0x0d,0x76,
- 0x99,0xbe,0xd8,0xc0,0xa1,0xc8,0x00,0x3d,0xfc,0x5d,0x79,0xe0,0x39,0xee,0x43,0x82,
- 0x10,0x78,0xe1,0x8d,0xb2,0x74,0xf1,0xab,0xa8,0xe9,0x80,0xc6,0xc5,0xb0,0x1f,0xcd,
- 0xb4,0xff,0x95,0xf7,0xdc,0xbe,0xf8,0xf5,0x54,0xbf,0xd9,0xd7,0xdb,0x00,0x00,0x00,
- 0x20,0x70,0x68,0xcb,0x6c,0x79,0x84,0x75,0xe3,0x07,0x78,0x91,0x73,0x75,0xc0,0x07,
- 0x2c,0xde,0xfe,0x09,0xf9,0x3d,0xd9,0xf6,0x4c,0xfe,0x0b,0x4f,0xec,0x90,0x57,0x8f,
- 0x2f,0x1a,0xaf,0x77,0x31,0xbd,0xcd,0x34,0xfe,0x23,0xf2,0x8b,0x99,0x71,0x1e,0x3a,
- 0x72,0x00,0x00,0x40,0x79,0xc1,0x4b,0x7d,0xdc,0x9f,0xed,0xcc,0x53,0x36,0x3c,0x5e,
- 0x55,0xdd,0x1e,0x68,0xef,0x0b,0xbc,0xf3,0xa4,0xfb,0x6d,0x79,0xe0,0x2b,0x79,0xad,
- 0xa1,0x29,0x1e,0x95,0x67,0x12,0xee,0xfc,0x8c,0x95,0x90,0x54,0x41,0xe7,0xbc,0x27,
- 0x63,0xd7,0xf3,0xbc,0x73,0x88,0xfb,0xdb,0x5e,0xfe,0xa7,0xd4,0x73,0xc6,0xef,0xdb,
- 0x00,0x00,0x00,0x20,0x28,0x78,0xab,0xc9,0x4b,0x65,0xbd,0x13,0xef,0xfb,0x77,0x6b,
- 0xb8,0xd7,0xf4,0x95,0x96,0x14,0xbe,0x99,0x3b,0xe5,0xab,0x72,0xcb,0x6b,0xaf,0xcf,
- 0x7f,0xe1,0xfc,0x2b,0x65,0xb9,0xe2,0xd7,0xd1,0xa9,0x7d,0x7a,0x57,0x13,0x8f,0xf0,
- 0x86,0x21,0xd2,0x10,0x78,0xf3,0x93,0xbe,0xad,0x1f,0x00,0x00,0x40,0xc0,0xd0,0xa6,
- 0x27,0xe4,0x0f,0xf6,0x8d,0x4f,0xa8,0xbe,0x5b,0x6f,0x2b,0x3f,0xc7,0xe4,0x2e,0x97,
- 0x46,0xca,0x03,0x9d,0xf2,0x97,0x97,0x4c,0x0b,0x6f,0x92,0xdf,0x99,0x57,0xf2,0xef,
- 0x0c,0xd5,0xae,0x97,0x9f,0x23,0x5e,0x7a,0x97,0xf6,0x8f,0x69,0xdf,0x12,0xf9,0xc5,
- 0x4c,0xfb,0xbe,0xee,0xdb,0x02,0x00,0x00,0x30,0x05,0x9f,0xb3,0xe0,0xfe,0x54,0xbf,
- 0xe6,0x1d,0xea,0x1d,0x1e,0x58,0x3c,0x48,0x97,0xbe,0x89,0x17,0x2f,0xb9,0xe8,0xa1,
- 0xef,0x38,0xbe,0x7c,0xf5,0x14,0xc9,0x6b,0x4b,0x2c,0xa9,0xe5,0x3d,0xf5,0xeb,0xfc,
- 0x25,0xc4,0xa3,0x74,0xd3,0x07,0x25,0xaf,0xba,0xe5,0xef,0x24,0x33,0x0d,0x0b,0xef,
- 0x4c,0x74,0x90,0x77,0xd5,0x76,0x7f,0xdb,0x1b,0xfe,0x9a,0x62,0xc3,0x5a,0x6f,0x0b,
- 0x00,0x00,0xc0,0x14,0x7c,0x98,0x8e,0xfb,0x53,0xfd,0xf1,0x73,0xd5,0x77,0x7e,0x79,
- 0x23,0x0b,0xe9,0x1b,0x5e,0xf1,0x67,0x8e,0x5d,0x94,0x9f,0xbe,0x48,0x6e,0x79,0xa1,
- 0xd2,0xc4,0x73,0x04,0xab,0x98,0x77,0x85,0xfc,0x85,0x4d,0x07,0xb5,0x7f,0x52,0x8f,
- 0xff,0x9f,0xe4,0x3d,0x2f,0x79,0x03,0xb6,0x80,0x01,0x00,0xa0,0x2c,0xa0,0x64,0x42,
- 0x5e,0x2f,0xb4,0xfc,0x5e,0xbd,0xf7,0x5c,0x31,0x51,0xee,0x3e,0xbb,0xff,0x28,0x7e,
- 0xed,0xfd,0x5f,0x36,0x6f,0xa9,0x5a,0x1a,0xf7,0x61,0xc1,0x2a,0x8e,0xac,0x92,0xa7,
- 0xa0,0x5f,0x9c,0xa0,0xfd,0xc3,0x52,0xe9,0x0e,0xda,0x5c,0xa3,0xfb,0xb6,0x00,0x00,
- 0x00,0x4a,0x0f,0x6f,0x7b,0x75,0xed,0xbb,0x24,0x8f,0xf4,0xed,0x73,0xf5,0xde,0xf3,
- 0xf4,0x61,0x79,0x17,0xc7,0x27,0x7e,0x2a,0x7e,0xed,0x9d,0x9f,0x32,0x6f,0xa9,0x5a,
- 0xba,0xe2,0x2d,0x82,0x55,0x0c,0xf7,0xf2,0xfe,0xd8,0xee,0x2f,0xbc,0xfb,0x9f,0x49,
- 0xd4,0x44,0xda,0xed,0xc6,0xbe,0xf2,0xa4,0xfc,0x7a,0x8e,0xae,0xd7,0x7a,0x4f,0x00,
- 0x00,0x00,0x46,0xe0,0xed,0x1d,0xae,0x7a,0x9b,0xe4,0x91,0x7e,0x70,0x85,0xde,0x7b,
- 0xaa,0x0c,0xc3,0xbd,0xee,0xdd,0xec,0x8f,0x16,0xbc,0xf6,0x0e,0x85,0x53,0xb7,0xa1,
- 0xd2,0xc5,0xaf,0x17,0xde,0x03,0x7a,0xea,0x57,0xb2,0x17,0xbe,0x96,0xce,0x1c,0xd2,
- 0xbb,0xb1,0x87,0x57,0xc9,0xaf,0xe7,0xd0,0xcb,0x5a,0xef,0x09,0x00,0x00,0xc0,0x08,
- 0xa9,0xf8,0x57,0x36,0x79,0x76,0xd3,0x0c,0xed,0xb7,0x5d,0xf5,0x80,0xdc,0x29,0xf6,
- 0x2c,0x16,0xbc,0xf0,0xde,0x7f,0x35,0x6f,0xa9,0x5a,0xba,0xfa,0xed,0xe2,0x3b,0x70,
- 0x78,0xa5,0xfc,0xb5,0x85,0xe3,0x08,0xdd,0xef,0xea,0xe6,0x27,0xe5,0xef,0x79,0xec,
- 0x15,0xdd,0x1f,0x16,0x00,0x00,0x00,0x23,0xd0,0x6d,0x1f,0xf3,0xd7,0x26,0xf8,0x7b,
- 0xb6,0x1c,0x95,0xa7,0xa0,0x9f,0xbc,0x40,0xf0,0xc2,0x47,0x7f,0x60,0xde,0x52,0xb5,
- 0x34,0xe1,0x53,0xe2,0x3b,0x10,0x1d,0xa4,0x6b,0xde,0x29,0x7f,0xad,0x4e,0x0a,0x9a,
- 0x5e,0x9c,0x20,0xbb,0x9e,0xb3,0xa8,0xbd,0x41,0xf7,0x87,0x05,0x00,0x00,0xc0,0x08,
- 0xf4,0xfb,0xff,0x96,0x3c,0xd5,0xa7,0x7c,0x95,0x34,0x0f,0xcb,0x58,0x94,0xa4,0xbb,
- 0xff,0x45,0xf2,0xb6,0xd7,0xbf,0x97,0x22,0x03,0xf9,0xaf,0x7b,0xe6,0x52,0xf3,0x96,
- 0xaa,0xa5,0x87,0xbf,0xeb,0x78,0x0f,0x66,0x9e,0x2f,0x79,0xed,0xd8,0xd7,0xa8,0x37,
- 0xe2,0xe0,0x85,0xe5,0x53,0xbf,0x29,0x79,0xc3,0xcb,0xdf,0x4c,0x7d,0xad,0x7a,0x3f,
- 0x29,0x00,0x00,0x00,0x86,0xa0,0x79,0x97,0x4b,0x9e,0xea,0x57,0xfe,0x39,0x75,0x37,
- 0x69,0xbf,0xed,0xb2,0x7b,0x24,0x6f,0x7b,0xd1,0xab,0xe9,0xf0,0xca,0xfc,0x57,0xad,
- 0x7b,0x44,0x6e,0x79,0x97,0xbe,0x91,0xae,0x7a,0x7b,0x58,0xf4,0xd2,0xdd,0x8e,0x77,
- 0x60,0xcf,0x42,0xf9,0xcb,0xd7,0x3e,0xac,0x7a,0x3f,0x7b,0x9b,0xe9,0xca,0xb7,0x4a,
- 0xee,0xcc,0xf8,0x8f,0x5a,0xc9,0xca,0x19,0xca,0x0c,0x00,0x00,0x95,0x0d,0xed,0x98,
- 0x2f,0xb3,0xbc,0xb3,0x68,0xe5,0x64,0xed,0xb7,0x3d,0x73,0x88,0x1f,0x47,0x75,0x7f,
- 0xe7,0x67,0x2e,0xc9,0x7f,0x55,0xe3,0x1e,0xf9,0xc9,0x9d,0x07,0xbf,0x49,0x9d,0x27,
- 0xa9,0xab,0x29,0x14,0x1a,0xce,0x1f,0x81,0x94,0x5d,0x4b,0x3c,0x22,0x7f,0xb9,0xa8,
- 0x08,0x4d,0xfc,0x6e,0x6b,0xa6,0xca,0xa7,0x20,0xcd,0x3c,0x5f,0xf7,0xc7,0x04,0x00,
- 0x00,0xc0,0x14,0xbc,0x04,0xfa,0x8a,0xb7,0x48,0x1e,0xec,0x77,0x7c,0x52,0xbd,0x05,
- 0x56,0xfa,0x6d,0x29,0x49,0x13,0xcf,0x91,0xbc,0xed,0x8d,0xef,0xcb,0x4b,0x41,0x73,
- 0xcf,0x92,0x0e,0x1e,0x62,0xf1,0x6f,0xe3,0x6e,0x5f,0xef,0x41,0xd8,0xa1,0x81,0x2e,
- 0x9a,0xf0,0x69,0xf9,0xd7,0xa4,0x7d,0x4b,0x4c,0x5f,0x29,0x00,0x00,0x00,0x55,0xf8,
- 0x78,0x9d,0xe9,0x3f,0x96,0xe5,0x8a,0xcf,0xa2,0x65,0xf7,0xe8,0x8e,0xb7,0xa3,0x15,
- 0x93,0xe4,0xc9,0xe4,0xba,0x8d,0xf9,0xaf,0x5a,0x2a,0xad,0x32,0xfa,0x7f,0x34,0xfd,
- 0x3c,0xad,0xca,0xa5,0x32,0x87,0x68,0xf9,0x44,0x79,0x33,0xcc,0xeb,0xde,0x53,0x38,
- 0x8f,0x18,0x00,0x00,0x40,0x98,0xa1,0xfd,0x4b,0x69,0xcc,0x6b,0x24,0x8f,0xf7,0x6b,
- 0xdf,0x4d,0xa7,0xf5,0x5a,0x26,0x52,0x73,0x0d,0x3f,0xe5,0xea,0xfe,0xb6,0x0b,0xae,
- 0xc9,0x7f,0x55,0x4b,0x2d,0x8f,0x70,0xa5,0x21,0xf0,0x8e,0x79,0x55,0x32,0x0f,0x91,
- 0x9a,0x8f,0xc8,0xbb,0x79,0x30,0xcd,0xbb,0x92,0xfd,0x5e,0xd3,0x17,0x0b,0x00,0x00,
- 0x40,0x03,0x7e,0x58,0x66,0xc2,0x3f,0xca,0x9f,0xf0,0x93,0xff,0x8b,0x7a,0x5b,0x34,
- 0xde,0x36,0x11,0xa3,0xbb,0x3e,0x23,0x79,0xcf,0x5b,0x3e,0x46,0xb1,0x48,0xce,0xab,
- 0x92,0x09,0x9a,0xf6,0x3d,0xf9,0xc5,0xdc,0xf0,0x3e,0x6a,0xda,0xef,0xf7,0x9d,0x08,
- 0x1d,0xd4,0xd7,0x22,0x2f,0x50,0x67,0xba,0xe4,0xf5,0xd4,0x74,0xc0,0xf4,0xc5,0x02,
- 0x00,0x00,0xd0,0x86,0xb6,0x3d,0x43,0x63,0xcf,0x96,0x67,0xa1,0x27,0x7d,0x81,0xba,
- 0xcf,0xa8,0x27,0xa2,0xe9,0x65,0x59,0x0a,0x7a,0xcc,0xab,0xa9,0x7e,0x6b,0xfe,0xab,
- 0xea,0xb7,0xd0,0x65,0x7f,0x22,0x37,0x9d,0x3b,0xfe,0x91,0x9a,0x0f,0x33,0xc3,0xf6,
- 0xfb,0x66,0x84,0x03,0x16,0xde,0xf7,0xb4,0xd0,0xe4,0x2f,0xca,0x0b,0xd2,0x2e,0x3c,
- 0x8b,0x66,0xfe,0x42,0x77,0x77,0x00,0x00,0x00,0x40,0x18,0xa0,0x78,0x8c,0xa6,0x7c,
- 0x5d,0x6e,0x79,0x4c,0x0f,0x7c,0x85,0x37,0x19,0x8e,0x47,0xe4,0x6f,0xca,0xab,0xa0,
- 0x0f,0xf3,0xd0,0xcc,0xfd,0x0d,0xff,0x78,0x83,0xe0,0x85,0xfc,0x54,0x94,0xc2,0xf8,
- 0xbf,0xdb,0xfe,0x9e,0x8e,0xac,0x52,0xbc,0x98,0x72,0x22,0x1e,0xa5,0xba,0x4d,0x34,
- 0xe5,0x6b,0x4a,0x3f,0x91,0xeb,0xdf,0x8b,0xb6,0x1b,0x00,0x00,0x50,0xbe,0xd0,0xf1,
- 0x6d,0xbc,0x2d,0xb3,0xca,0x03,0x7f,0xdc,0x87,0x59,0x60,0x6b,0x75,0x9f,0x96,0xbf,
- 0x67,0x22,0x2e,0x6f,0xc4,0x71,0xdb,0xc7,0xad,0x44,0xfe,0xa9,0x55,0x6a,0x3f,0x2e,
- 0x2f,0x84,0xce,0x5c,0xcc,0xf2,0xfb,0x54,0x2e,0xa6,0x6c,0xe8,0x3c,0xc9,0xf3,0x06,
- 0xe3,0x65,0x73,0xa9,0x46,0x74,0xf1,0x6b,0x69,0xfd,0x63,0x55,0xb2,0x15,0x0e,0x00,
- 0x00,0x95,0x09,0x7b,0x88,0x6f,0x9c,0x21,0x0f,0x57,0x47,0x74,0xd9,0x9b,0xe9,0xc1,
- 0x6f,0xd0,0x9a,0x07,0xa9,0xa3,0xd1,0xfd,0xe1,0x4f,0xcb,0xee,0x93,0xbc,0xd5,0x98,
- 0xd7,0x08,0x77,0x72,0xe9,0xd0,0xcb,0xf2,0x8e,0x13,0xe9,0x8b,0xf9,0x13,0x9a,0xfa,
- 0x0d,0xda,0x32,0x8b,0xfa,0x3b,0x02,0xbb,0x3b,0x81,0xc3,0x0b,0xd1,0x99,0xf3,0xb2,
- 0x5b,0xfa,0xc0,0x57,0x78,0x27,0x2b,0x95,0x85,0x33,0x3d,0xf5,0x2b,0x2b,0x3a,0x68,
- 0xfa,0xda,0x01,0x00,0x00,0x14,0x47,0x6c,0x98,0x16,0x5c,0xa5,0xfa,0xe4,0xbf,0xe8,
- 0x2c,0x7e,0x70,0xf8,0xd6,0x8f,0xd1,0x73,0xd7,0x50,0xcd,0x3a,0x5e,0xc4,0x25,0x32,
- 0x62,0x3a,0x7d,0x40,0xbe,0xb3,0x2c,0xec,0x22,0x95,0x8c,0xd3,0x9a,0x87,0x68,0x8c,
- 0x74,0xf7,0x73,0xf4,0x62,0xae,0xfa,0x0b,0xba,0xeb,0x9f,0x68,0xc9,0xad,0xd4,0xb8,
- 0x8b,0xd8,0x6b,0xcb,0x24,0x24,0xe4,0xb6,0xcb,0x6e,0xdd,0x91,0x55,0xf4,0xec,0x55,
- 0xbc,0x17,0xb7,0xf4,0x2c,0xb6,0x5d,0x93,0xbf,0x48,0xbd,0xcd,0xa6,0x57,0x00,0x00,
- 0x00,0xc0,0x07,0xb8,0x1d,0xcc,0xfc,0x85,0x7c,0x7a,0x42,0xbe,0xce,0xa2,0xcb,0xff,
- 0x94,0x26,0xff,0x27,0x2d,0xbc,0x89,0x36,0x4c,0xa7,0x5d,0x0b,0xa8,0x76,0x7d,0x5a,
- 0x47,0x56,0xd3,0x0d,0xef,0x97,0xbc,0x7c,0xc2,0xa7,0x28,0x11,0x15,0x5f,0xcf,0xd2,
- 0x09,0x74,0xe9,0x9b,0xf4,0x2e,0x86,0x79,0xf1,0xd5,0xef,0xa4,0x07,0xbf,0xc6,0xbf,
- 0x18,0xac,0x9e,0x4a,0x3b,0x6d,0x17,0x13,0x1e,0xed,0x98,0x4f,0xeb,0x1f,0xa5,0xe7,
- 0xae,0xe5,0x1e,0xca,0x6e,0x9d,0xca,0x66,0x77,0xce,0x1a,0x5f,0x45,0x13,0x3f,0x4f,
- 0x83,0xaa,0xed,0xb3,0x00,0x00,0x00,0x84,0x1f,0xea,0xef,0xa0,0x59,0xbf,0xa2,0x8b,
- 0xd5,0x12,0xd1,0x4e,0x1a,0xfb,0xba,0xac,0xa4,0xbd,0x23,0x98,0xdd,0x37,0x89,0x0f,
- 0x17,0x53,0x2c,0xc2,0x3d,0xfd,0x8a,0x3f,0xf5,0xed,0x62,0x42,0xa2,0x62,0x96,0xc3,
- 0xcc,0xf7,0x81,0xaf,0x50,0xfb,0xf1,0x12,0x7f,0x30,0x00,0x00,0x00,0x04,0x4e,0x5f,
- 0x1b,0x0f,0xcd,0x2e,0xd3,0x0c,0x3c,0x8b,0xd1,0xf2,0x89,0x8e,0x17,0x13,0x1d,0xe0,
- 0x0d,0xa0,0xae,0x79,0x57,0xe9,0x2e,0x26,0xcc,0x1a,0xf3,0x6a,0x9a,0xf6,0x7d,0x6a,
- 0xa9,0x29,0xe1,0xa7,0x01,0x00,0x00,0x40,0x09,0x19,0xea,0xa1,0x75,0x8f,0xd2,0xf5,
- 0x7f,0x55,0x22,0x5b,0xb9,0xf7,0x5f,0xdd,0x76,0x6c,0x63,0xc3,0xbc,0x49,0x97,0x62,
- 0x45,0x74,0x05,0xeb,0x92,0xd7,0xd3,0xa2,0x71,0x56,0x47,0x43,0xe9,0x3e,0x06,0x00,
- 0x00,0x00,0x4a,0x4f,0x3c,0x4a,0x27,0xb6,0xf3,0x7d,0x46,0x69,0x01,0x95,0x0f,0xce,
- 0xf2,0x46,0x49,0x42,0x95,0x92,0xd4,0x71,0x82,0x66,0xff,0x86,0x2e,0x7d,0x83,0xf6,
- 0x6e,0x69,0x05,0x68,0xcc,0x6b,0xf8,0x61,0xe7,0x03,0x2f,0x59,0xd1,0xfc,0xa1,0xc9,
- 0x00,0x00,0x00,0x2a,0x12,0x3e,0x93,0x68,0xc3,0xe3,0x34,0xe1,0x93,0xf2,0x79,0x82,
- 0x45,0xea,0xe5,0x49,0xf2,0x8b,0x61,0x2e,0x7c,0x70,0x19,0xdd,0x77,0x0e,0x9f,0x4a,
- 0x6c,0xdc,0x13,0x4b,0xa3,0x8b,0x5f,0x4b,0xb7,0x7c,0x94,0x5e,0xba,0x9b,0x22,0x7d,
- 0x25,0xf8,0x71,0x03,0x00,0x00,0x08,0x15,0xd4,0x5e,0x4f,0x0b,0x6f,0xa4,0x3b,0x3f,
- 0x23,0x1f,0x8e,0xe0,0x59,0x93,0xfe,0xd3,0x4a,0x26,0x94,0x2e,0xa6,0xaf,0x8d,0x56,
- 0x3f,0x48,0xbf,0xff,0x12,0x1f,0x61,0x6f,0xdc,0x1f,0x83,0xd3,0xd8,0xd7,0xf2,0xc9,
- 0x8f,0xf3,0xaf,0xa0,0x93,0x7b,0xcb,0xe5,0x38,0x15,0x00,0x00,0x00,0xff,0x49,0xc6,
- 0xad,0xe3,0xdb,0x68,0xd5,0x03,0xf4,0xd0,0xb7,0xe8,0xb7,0x6f,0x95,0x57,0x35,0xeb,
- 0xea,0xd2,0x37,0x51,0xe7,0x29,0x8d,0xeb,0x69,0x3b,0x46,0x5b,0x9f,0xa6,0x27,0x2f,
- 0xe0,0x73,0x84,0xe5,0x4d,0x92,0xcb,0x4a,0x97,0xfd,0x09,0x9f,0x76,0xb1,0xec,0x5e,
- 0xeb,0xd8,0xa6,0x0a,0xec,0xae,0x09,0x00,0x00,0xc0,0x03,0x89,0x98,0xd5,0x71,0x82,
- 0x6a,0xd7,0xf1,0xf1,0xbe,0x53,0xbe,0xea,0x73,0x04,0xba,0x71,0x86,0xde,0xc5,0xb0,
- 0xa8,0xb0,0xaf,0xcd,0x6a,0xd8,0x4e,0x9b,0x9e,0xe0,0x55,0xc1,0xd7,0x95,0xaa,0x5a,
- 0x2c,0x20,0x5d,0xf1,0x16,0x7e,0x1c,0x78,0xc9,0x1d,0x74,0x78,0xa5,0xd5,0x7a,0x14,
- 0xce,0x0b,0x00,0x00,0x40,0x40,0x3c,0x6a,0x0d,0xf5,0x52,0xf7,0x69,0xaa,0x59,0x43,
- 0x2f,0xdc,0x42,0xd3,0xcf,0xa5,0x7b,0x3e,0x47,0x37,0x7e,0x80,0x4f,0x06,0xbc,0xfa,
- 0x1d,0x3c,0x40,0xf6,0xa0,0x27,0x7e,0xea,0xf1,0x62,0x58,0x6c,0x3e,0xdc,0x47,0xbd,
- 0xcd,0x54,0xbf,0x99,0x96,0xdf,0x4b,0x33,0x7e,0xc2,0xcb,0xc6,0x6e,0xfa,0x1b,0x7e,
- 0x31,0xd7,0xfe,0xa5,0xc7,0x8b,0x09,0x54,0xec,0x16,0xb1,0x6b,0xbb,0xe9,0x03,0x7c,
- 0x44,0x23,0xfb,0xe6,0xb0,0xf0,0x26,0xda,0xff,0x22,0xef,0x3f,0x39,0xd8,0x9d,0xb2,
- 0x5d,0x64,0x9b,0x01,0x00,0x00,0xa8,0xc2,0x7b,0x67,0x31,0x47,0x1e,0xec,0xa6,0xee,
- 0x26,0xea,0x68,0xf0,0xa2,0xae,0x26,0x3f,0xaf,0x27,0xd2,0xcf,0x2f,0xa6,0xa7,0xd9,
- 0xe3,0xc5,0x04,0x2a,0x76,0x8b,0xd8,0xb5,0x0d,0xa3,0xa4,0x0a,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xca,0x15,0x3a,
- 0xbc,0x92,0xa6,0x7c,0x3d,0x40,0x1d,0x78,0xc9,0xf4,0x12,0x01,0x00,0x00,0x80,0xd0,
- 0x41,0x6d,0xf5,0xda,0x13,0x15,0xb5,0xf4,0xe8,0x0f,0x2c,0x4a,0x9a,0x5e,0x25,0x00,
- 0x00,0x00,0x10,0x2e,0x28,0x11,0xa3,0xfb,0xfe,0x2d,0x40,0xff,0xbd,0xfa,0x1d,0x34,
- 0xd0,0x65,0x7a,0x95,0x00,0x00,0x00,0x40,0xe8,0xa0,0x65,0xf7,0x04,0xd9,0xc7,0xe3,
- 0x2c,0xda,0xbb,0xd8,0xf4,0x12,0x01,0x00,0x00,0x80,0xd0,0x41,0x2d,0x47,0x83,0xed,
- 0xa3,0x35,0xf3,0x17,0xa6,0x97,0x08,0x00,0x00,0x00,0x84,0x11,0xba,0xe7,0xb3,0x01,
- 0xfa,0xef,0x55,0x6f,0xa3,0xc1,0x4e,0xd3,0x4b,0x04,0x00,0x00,0x00,0x42,0x07,0x2d,
- 0x9f,0x18,0x6c,0x08,0xbc,0x67,0xa1,0xe9,0x25,0x02,0x00,0x00,0x00,0xa1,0x83,0x8f,
- 0x14,0xbc,0xe4,0xf5,0x01,0xfa,0xef,0xac,0x0b,0x30,0xb2,0x10,0x00,0x00,0x00,0xc8,
- 0x27,0x1e,0xa5,0x09,0x9f,0x0a,0xd0,0x7f,0xaf,0x7d,0x37,0x45,0x06,0x4c,0x2f,0x12,
- 0x00,0x00,0x00,0x08,0x1d,0xb4,0xf8,0x96,0x00,0xfd,0xf7,0xa2,0xb3,0xf8,0x10,0x43,
- 0x00,0x00,0x00,0x00,0xe4,0x42,0x4d,0xfb,0x69,0xec,0xd9,0x41,0xa6,0xa0,0x7f,0x8d,
- 0x39,0x86,0x00,0x00,0x00,0x40,0x1e,0x14,0x8f,0xd2,0x1d,0x9f,0x0c,0xd0,0x7f,0x6f,
- 0x78,0x3f,0x0d,0xf5,0x98,0x5e,0x25,0x00,0x00,0x00,0x10,0x3a,0x68,0xd1,0xb8,0x20,
- 0x53,0xd0,0xaf,0x46,0x0a,0x1a,0x00,0x00,0x00,0x28,0x84,0x8e,0x6f,0xe3,0x2e,0x19,
- 0x9c,0x05,0xcf,0xbd,0xd4,0xf4,0x12,0x01,0x00,0x00,0x80,0xd0,0x41,0x89,0x38,0x8d,
- 0xff,0x48,0x90,0x29,0xe8,0xf7,0x51,0x3c,0x6a,0x7a,0x95,0x00,0x00,0x00,0x40,0xe8,
- 0xa0,0x45,0x37,0x05,0x99,0x82,0x3e,0x8b,0x6a,0xd6,0x9a,0x5e,0x22,0x00,0x00,0x00,
- 0x10,0x3a,0xe8,0xf8,0x56,0x1a,0xfb,0x9a,0x20,0x53,0xd0,0x97,0x99,0x5e,0x22,0x00,
- 0x00,0x00,0x10,0x3e,0xa2,0x83,0xc1,0xa6,0xa0,0xc7,0x7d,0x88,0xa2,0xc3,0xa6,0x17,
- 0x09,0x00,0x00,0x00,0x84,0x0e,0x9a,0x77,0x45,0x80,0xfe,0x3b,0xe6,0xd5,0x54,0xbf,
- 0xd5,0xf4,0x12,0x01,0x00,0x00,0x80,0xd0,0x41,0xf5,0x9b,0xe9,0xa2,0x57,0x05,0x68,
- 0xc1,0xcf,0xfe,0xd6,0xf4,0x12,0x01,0x00,0x00,0x80,0xd0,0x41,0xf1,0x18,0xdd,0xf4,
- 0xc1,0x20,0x53,0xd0,0x7f,0x6b,0xc5,0x86,0x4c,0xaf,0x12,0x00,0x00,0x00,0x08,0x17,
- 0xc4,0x98,0x77,0x79,0x80,0xfe,0x3b,0xf6,0x6c,0xaa,0xdf,0x62,0x7a,0x95,0x00,0x00,
- 0x00,0x40,0xe8,0xa0,0xc3,0xab,0x82,0x4d,0x41,0x2f,0x1a,0x67,0x7a,0x89,0x00,0x00,
- 0x00,0x40,0xe8,0xa0,0x48,0x3f,0x5d,0xff,0xde,0x00,0xfd,0x77,0xfc,0x47,0x31,0x0e,
- 0x18,0x00,0x00,0x00,0x28,0x84,0xe6,0x07,0x59,0x05,0xcd,0x74,0x62,0x87,0xe9,0x25,
- 0x02,0x00,0x00,0x00,0xa1,0x83,0x8e,0x04,0x9d,0x82,0xbe,0xc9,0xf4,0x12,0x01,0x00,
- 0x00,0x80,0xd0,0x41,0x43,0xbd,0xc1,0xa6,0xa0,0xef,0xfc,0x34,0xc5,0x22,0xa6,0x57,
- 0x09,0x00,0x00,0x00,0x84,0x0c,0x22,0x9a,0xf5,0xab,0x00,0xfd,0xf7,0xe2,0xd7,0xd1,
- 0xc9,0xbd,0xa6,0x17,0x09,0x00,0x00,0x00,0x84,0x0e,0x3a,0xf0,0x22,0x5d,0x78,0x56,
- 0x80,0x16,0xfc,0xe2,0x04,0xd3,0x4b,0x04,0x00,0x00,0x00,0x42,0x07,0xc5,0x86,0xe8,
- 0xda,0x77,0x05,0xe8,0xbf,0xb7,0x7f,0xd2,0x4a,0xc4,0x4d,0xaf,0x12,0x00,0x00,0x00,
- 0x08,0x1d,0x34,0xeb,0x97,0x01,0xfa,0xef,0x98,0xb3,0xe9,0xf4,0x41,0xd3,0x4b,0x04,
- 0x00,0x00,0x00,0x42,0x07,0xed,0x5b,0x1c,0xa0,0xff,0x32,0x2d,0xbb,0xd7,0xf4,0x12,
- 0x01,0x00,0x00,0x80,0xd0,0x41,0x03,0x1d,0x74,0xd5,0xdb,0x03,0xf4,0xdf,0xfb,0xfe,
- 0x8d,0x92,0x48,0x41,0x03,0x00,0x00,0x00,0x79,0x10,0xcd,0xf8,0x59,0x80,0xfe,0x3b,
- 0xf6,0x6c,0x6a,0xa9,0x35,0xbd,0x46,0x00,0x00,0x00,0x20,0x74,0xd0,0x9e,0x45,0xc1,
- 0xa6,0xa0,0x97,0x4f,0x34,0xbd,0x44,0x00,0x00,0x00,0x20,0x74,0xd0,0x50,0x0f,0x5d,
- 0xf5,0xb6,0x40,0x53,0xd0,0x56,0x22,0x66,0x7a,0x95,0x00,0x00,0x00,0x40,0xd8,0x20,
- 0x7a,0xec,0x87,0x01,0xfa,0xef,0xa5,0x6f,0x44,0x0a,0x1a,0x00,0x00,0x00,0x28,0x84,
- 0xb6,0xcd,0x09,0x36,0x05,0xbd,0xe6,0x21,0xd3,0x4b,0x04,0x00,0x00,0x00,0x42,0x07,
- 0xf5,0xb6,0xd0,0xe5,0x6f,0x0e,0xd0,0x7f,0x1f,0xf8,0xf2,0xff,0x07,0x66,0x87,0xe4,
- 0x0f,0x36,0x10,0x0e,0x00,
diff --git a/board/esd/voh405/u-boot.lds b/board/esd/voh405/u-boot.lds
deleted file mode 100644
index 43f776579e..0000000000
--- a/board/esd/voh405/u-boot.lds
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/4xx_enet.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/voh405/voh405.c b/board/esd/voh405/voh405.c
deleted file mode 100644
index 22995b5020..0000000000
--- a/board/esd/voh405/voh405.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-extern void lxt971_no_sleep(void);
-
-/* fpga configuration data - gzip compressed and generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-/* Prototypes */
-int gunzip(void *, int, unsigned char *, unsigned long *);
-
-
-/* logo bitmap data - gzip compressed and generated by bin2c */
-unsigned char logo_bmp_320[] =
-{
-#include "logo_320_240_4bpp.c"
-};
-
-unsigned char logo_bmp_640[] =
-{
-#include "logo_640_480_24bpp.c"
-};
-
-
-/*
- * include common lcd code (for esd boards)
- */
-#include "../common/lcd.c"
-
-#include "../common/s1d13704_320_240_4bpp.h"
-#include "../common/s1d13806_320_240_4bpp.h"
-#include "../common/s1d13806_640_480_16bpp.h"
-
-
-int board_early_init_f (void)
-{
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFFB5); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-
- return 0;
-}
-
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- volatile unsigned char *duart0_mcr = (unsigned char *)((ulong)DUART0_BA + 4);
- volatile unsigned char *duart1_mcr = (unsigned char *)((ulong)DUART1_BA + 4);
- volatile unsigned short *lcd_contrast =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL + 4);
- volatile unsigned short *lcd_backlight =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL + 6);
- unsigned char *dst;
- ulong len = sizeof(fpgadata);
- int status;
- int index;
- int i;
- char *str;
-
- dst = malloc(CFG_FPGA_MAX_SIZE);
- if (gunzip (dst, CFG_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
- printf ("GUNZIP ERROR - must RESET board to recover\n");
- do_reset (NULL, 0, 0, NULL);
- }
-
- status = fpga_boot(dst, len);
- if (status != 0) {
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("FPGA: %s\n", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=20; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc ('\n');
- do_reset(NULL, 0, 0, NULL);
- }
-
- puts("FPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("%s ", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
-
- free(dst);
-
- /*
- * Reset FPGA via FPGA_INIT pin
- */
- out32(GPIO0_TCR, in32(GPIO0_TCR) | FPGA_INIT); /* setup FPGA_INIT as output */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~FPGA_INIT); /* reset low */
- udelay(1000); /* wait 1ms */
- out32(GPIO0_OR, in32(GPIO0_OR) | FPGA_INIT); /* reset high */
- udelay(1000); /* wait 1ms */
-
- /*
- * Reset external DUARTs
- */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_DUART_RST); /* set reset to high */
- udelay(10); /* wait 10us */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_DUART_RST); /* set reset to low */
- udelay(1000); /* wait 1ms */
-
- /*
- * Set NAND-FLASH GPIO signals to default
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~(CFG_NAND_CLE | CFG_NAND_ALE));
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_NAND_CE);
-
- /*
- * Enable interrupts in exar duart mcr[3]
- */
- *duart0_mcr = 0x08;
- *duart1_mcr = 0x08;
-
- /*
- * Init lcd interface and display logo
- */
- str = getenv("bd_type");
- if (strcmp(str, "voh405_bw") == 0) {
- lcd_setup(0, 1);
- lcd_init((uchar *)CFG_LCD_SMALL_REG, (uchar *)CFG_LCD_SMALL_MEM,
- regs_13704_320_240_4bpp,
- sizeof(regs_13704_320_240_4bpp)/sizeof(regs_13704_320_240_4bpp[0]),
- logo_bmp_320, sizeof(logo_bmp_320));
- } else if (strcmp(str, "voh405_bwbw") == 0) {
- lcd_setup(0, 1);
- lcd_init((uchar *)CFG_LCD_SMALL_REG, (uchar *)CFG_LCD_SMALL_MEM,
- regs_13704_320_240_4bpp,
- sizeof(regs_13704_320_240_4bpp)/sizeof(regs_13704_320_240_4bpp[0]),
- logo_bmp_320, sizeof(logo_bmp_320));
- lcd_setup(1, 1);
- lcd_init((uchar *)CFG_LCD_BIG_REG, (uchar *)CFG_LCD_BIG_MEM,
- regs_13806_320_240_4bpp,
- sizeof(regs_13806_320_240_4bpp)/sizeof(regs_13806_320_240_4bpp[0]),
- logo_bmp_320, sizeof(logo_bmp_320));
- } else if (strcmp(str, "voh405_bwc") == 0) {
- lcd_setup(0, 1);
- lcd_init((uchar *)CFG_LCD_SMALL_REG, (uchar *)CFG_LCD_SMALL_MEM,
- regs_13704_320_240_4bpp,
- sizeof(regs_13704_320_240_4bpp)/sizeof(regs_13704_320_240_4bpp[0]),
- logo_bmp_320, sizeof(logo_bmp_320));
- lcd_setup(1, 0);
- lcd_init((uchar *)CFG_LCD_BIG_REG, (uchar *)CFG_LCD_BIG_MEM,
- regs_13806_640_480_16bpp,
- sizeof(regs_13806_640_480_16bpp)/sizeof(regs_13806_640_480_16bpp[0]),
- logo_bmp_640, sizeof(logo_bmp_640));
- } else {
- printf("Unsupported bd_type defined (%s) -> No display configured!\n", str);
- return 0;
- }
-
- /*
- * Set invert bit in small lcd controller
- */
- *(unsigned char *)(CFG_LCD_SMALL_REG + 2) |= 0x01;
-
- /*
- * Set default contrast voltage on epson vga controller
- */
- *lcd_contrast = 0x4646;
-
- /*
- * Enable backlight
- */
- *lcd_backlight = 0xffff;
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming VOH405");
- } else {
- puts(str);
- }
-
- if (getenv_r("bd_type", str, sizeof(str)) != -1) {
- printf(" (%s)", str);
- } else {
- puts(" (Missing bd_type!)");
- }
-
- putc ('\n');
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef CONFIG_IDE_RESET
-void ide_set_reset(int on)
-{
- volatile unsigned short *fpga_mode =
- (unsigned short *)((ulong)CFG_FPGA_BASE_ADDR + CFG_FPGA_CTRL);
-
- /*
- * Assert or deassert CompactFlash Reset Pin
- */
- if (on) { /* assert RESET */
- *fpga_mode &= ~(CFG_FPGA_CTRL_CF_RESET);
- } else { /* release RESET */
- *fpga_mode |= CFG_FPGA_CTRL_CF_RESET;
- }
-}
-#endif /* CONFIG_IDE_RESET */
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand_legacy.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- nand_probe(CFG_NAND_BASE);
- if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
- print_size(nand_dev_desc[0].totlen, "\n");
- }
-}
-#endif
diff --git a/board/esd/vom405/Makefile b/board/esd/vom405/Makefile
deleted file mode 100644
index df487662fd..0000000000
--- a/board/esd/vom405/Makefile
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common/xilinx_jtag)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-# Objects for Xilinx JTAG programming (CPLD)
-CPLD = ../common/xilinx_jtag/lenval.o \
- ../common/xilinx_jtag/micro.o \
- ../common/xilinx_jtag/ports.o
-
-COBJS = $(BOARD).o flash.o ../common/misc.o $(CPLD)
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/vom405/config.mk b/board/esd/vom405/config.mk
deleted file mode 100644
index 3041b772d2..0000000000
--- a/board/esd/vom405/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (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
-#
-
-#
-# esd VOH405 boards
-#
-
-TEXT_BASE = 0xFFFC0000
-#TEXT_BASE = 0x00FC0000
diff --git a/board/esd/vom405/flash.c b/board/esd/vom405/flash.c
deleted file mode 100644
index 89af1190a8..0000000000
--- a/board/esd/vom405/flash.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- switch (size_b0) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/vom405/fpgadata.c b/board/esd/vom405/fpgadata.c
deleted file mode 100644
index 1c3a963892..0000000000
--- a/board/esd/vom405/fpgadata.c
+++ /dev/null
@@ -1,1812 +0,0 @@
- 0x07,0x20,0x12,0x00,0x12,0x01,0x04,0x00,0x00,0x00,0x00,0x02,0x08,0xff,0x02,0x08,
- 0xfe,0x08,0x00,0x00,0x00,0x20,0x01,0x0f,0xff,0xff,0xff,0x09,0x00,0x00,0x00,0x00,
- 0xf9,0x60,0x40,0x93,0x02,0x08,0xff,0x02,0x08,0xff,0x02,0x08,0xe8,0x08,0x00,0x00,
- 0x00,0x06,0x01,0x00,0x09,0x05,0x00,0x02,0x08,0xed,0x04,0x00,0x03,0x0d,0x40,0x08,
- 0x00,0x00,0x00,0x12,0x01,0x00,0x00,0x00,0x09,0x03,0xff,0xff,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x03,0x09,0x03,0xff,0xfd,0x03,0xff,0xfd,0x04,0x00,0x00,0x00,0x00,0x02,
- 0x08,0xea,0x08,0x00,0x00,0x00,0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x00,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x00,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x00,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x00,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x48,0x00,
- 0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x00,
- 0x80,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x00,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x00,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x00,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,
- 0xa0,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x00,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x01,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x04,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x08,0x00,
- 0x00,0x01,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x10,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x01,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x01,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x01,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x01,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x01,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x01,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x01,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x01,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x01,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x01,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x01,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x01,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x01,0xc0,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x01,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x01,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x02,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x02,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x02,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x02,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x02,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x02,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x02,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x02,0x80,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x02,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x02,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x02,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x02,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x02,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x02,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x02,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x03,0x00,0x00,0x80,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x03,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x03,0x08,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x10,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x20,0x00,0x00,0x01,0x41,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x03,0x24,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x03,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x03,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x03,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x03,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x03,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x03,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x03,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x03,0x84,0x00,
- 0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x03,0x88,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x03,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x03,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x03,0xa0,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x03,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xc0,0x00,0x00,
- 0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x03,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x03,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x04,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x04,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x0c,
- 0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x10,0x20,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x04,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x04,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x04,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x04,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x04,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x04,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x04,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x04,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x04,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x04,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x04,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x04,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x04,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x04,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x04,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x05,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x05,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x05,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x05,0x0c,0x20,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x05,0x10,0x20,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x05,0x20,0x00,0x00,0x04,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x05,0x24,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x05,0x28,0x00,0x00,0x04,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,
- 0x2c,0xc0,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x30,
- 0xc0,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x40,0x00,
- 0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x48,0x00,0x00,0x04,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x4c,0x08,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x05,0x50,0x08,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x05,0x80,0x20,
- 0x00,0x18,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x05,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x05,0x88,0x20,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,
- 0x8c,0x40,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xa0,0xe0,
- 0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xa8,0xc0,0x00,0x10,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xac,0x00,0x00,0x4c,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xb0,0x00,0x00,0x04,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xc0,0x08,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x05,0xc8,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x05,0xcc,0x40,0x00,0x4c,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x05,0xd0,0x00,0x00,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x06,0x02,0x00,0x03,0x02,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x06,0x06,0x01,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x06,0x0b,0x00,0x03,0x03,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x0e,0x02,0x03,0x03,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x12,0x03,0x03,0x03,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x23,0x02,0x03,0x03,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x26,0x02,0x03,0x03,0x41,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x06,0x2b,0x03,0x0b,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x06,0x2f,0x42,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x06,0x30,0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x06,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x06,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x06,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x06,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x06,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x06,0x81,0x00,0x00,0x80,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x06,
- 0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x06,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x06,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x06,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x06,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x06,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x06,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x06,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xc0,
- 0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x06,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x06,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x07,0x02,
- 0x20,0x02,0x1a,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x07,0x04,0x01,0x03,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x07,0x09,0x20,0x03,0x0a,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x07,0x0c,0x40,0x01,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,
- 0x12,0x03,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x21,
- 0xc2,0x00,0x13,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x26,0x02,
- 0x00,0x02,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x2b,0xc3,0x03,
- 0x13,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x2e,0x02,0x02,0x4e,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x30,0x00,0x00,0x04,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x40,0x08,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x48,0x08,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x4c,0xc0,0x00,0x4c,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x07,0x50,0x00,0x00,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x07,0x82,0x00,0x00,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x07,0x84,0x01,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x07,0x88,0x00,0x01,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x8c,0x00,0x01,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0x92,0x81,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xa1,0x20,0x00,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xa4,0x02,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xaa,0x01,0x01,0x02,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x07,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x07,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x07,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x07,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x07,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x07,0xcc,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x07,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x08,0x02,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x08,0x04,0x03,0x01,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x08,0x09,0x02,0x03,0x03,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x0e,0x02,0x03,0x0b,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x08,0x12,0x01,0x03,0x08,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x08,0x23,0x02,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x08,0x26,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x08,0x2a,0x03,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x08,0x2e,0x02,0x02,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x08,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x08,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x08,
- 0x80,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x08,0x84,0x02,0x00,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x08,0x88,0x02,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x08,0x8e,0x02,0x02,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x08,0x90,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,
- 0xa2,0x02,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xa6,
- 0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xae,0x02,0x02,
- 0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x08,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x08,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x09,0x02,0x00,0x01,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x04,0x20,0x01,0x08,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x0b,0x02,
- 0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x0e,0x00,0x03,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x12,0x00,0x03,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x23,0x00,0x03,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x26,0xc0,0x02,0x14,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x2a,0x00,0x03,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x2e,0x00,0x02,0x02,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x09,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x09,0x44,0x08,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x09,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x09,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x09,0x80,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x09,0x84,0x00,0x80,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x8a,0x02,0x02,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x8e,0x00,0x02,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x09,0x90,0x00,0x03,0x02,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x09,0xa2,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x09,0xa4,0x00,0x1e,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x09,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x09,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x09,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x09,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,
- 0xc4,0x00,0x00,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x09,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x09,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x0a,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,0x04,0x00,0x01,
- 0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x0a,0x08,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0a,0x0c,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0a,0x12,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0a,0x21,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,
- 0x26,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x2a,
- 0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x2e,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x40,0x00,0x00,0x00,
- 0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x4c,0x00,0x00,0x00,0x81,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x0a,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0a,0x80,0x00,0x00,0x00,
- 0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,0x84,0x20,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xa4,0xc0,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0a,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0a,0xc4,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0a,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0a,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0a,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x0b,0x02,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x0b,0x04,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0b,0x08,0x00,0x03,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x0c,0x00,0x01,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x12,0x01,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x21,0x00,0x04,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0b,0x24,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0b,0x2a,0x03,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0b,0x2c,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0b,0x30,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0b,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0b,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,
- 0x48,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0b,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x0b,0x80,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0b,0x84,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x0b,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0b,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0b,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0b,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0b,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,
- 0xa8,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xc0,0x04,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xc4,0x00,0x00,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0b,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x0b,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0c,0x00,0x00,0x40,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x20,0x00,0x00,
- 0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x28,0x00,0x00,0x04,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x2e,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x44,0x00,0xc0,0x00,0x81,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0c,0x48,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0c,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x0c,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0c,0x81,0x00,0x00,0x00,0x81,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x0c,0x84,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0xa0,0x00,0x40,0x00,0x21,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0c,0xa4,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0c,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0c,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0c,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0c,0xc0,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0c,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0c,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0c,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0c,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x0d,0x02,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0d,0x06,
- 0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x0d,0x0b,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0d,0x0e,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0d,0x12,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0d,0x23,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0d,0x26,0x02,0x43,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0d,0x2b,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,
- 0x2f,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x0d,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0d,0x80,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0d,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x0d,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xa0,0x00,
- 0x00,0x40,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xa4,0x00,0x00,
- 0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0d,0xc8,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0d,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x0d,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0e,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x0e,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0x08,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x0c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x10,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x20,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0e,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0e,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0e,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0e,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0e,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x0e,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,
- 0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0e,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0e,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0e,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0e,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0e,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0e,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0e,0xcc,0x04,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0e,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0f,0x00,
- 0x20,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x0f,0x04,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x0f,0x09,0x20,0x02,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x0f,0x0c,0x20,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,
- 0x10,0x20,0x01,0x09,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x20,
- 0xc0,0x01,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x24,0x00,
- 0x00,0x20,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x29,0xc2,0x80,
- 0x15,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x2c,0xc0,0x01,0x14,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x30,0xc0,0x00,0x14,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x40,0x88,0x00,0x04,0x09,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x44,0x00,0x00,0x00,0x09,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x48,0x08,0x00,0x04,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x4c,0x88,0x00,0x84,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x0f,0x50,0x88,0x00,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x0f,0x80,0x04,0x80,0x10,0x21,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x0f,0x84,0x80,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0f,0x88,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x8c,0xc0,0x00,0xc0,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0x90,0x80,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xa0,0x00,0x9c,0x00,0x8d,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xa4,0x00,0x80,0x00,0x11,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x0f,0xac,0x00,0x00,0x48,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x0f,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x0f,0xc0,0x00,0x00,0x80,0x61,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x0f,0xc4,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x0f,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x0f,0xcc,0x40,0x00,0x48,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x0f,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x10,0x02,0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x10,0x06,0x01,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x10,0x09,0x00,0x01,0x02,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x0c,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x10,0x12,0x03,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x10,0x21,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x10,0x24,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x10,0x2b,0x03,0x01,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x10,0x2d,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x10,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x10,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x10,
- 0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x10,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x10,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x10,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x10,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,
- 0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x10,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x10,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x11,0x00,0x84,0x81,0x00,0x21,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x04,0x80,0x00,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x0a,0x20,
- 0x02,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x0e,0x80,0x02,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x10,0x20,0x03,0x08,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x22,0x00,0x9f,0x00,0x91,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x26,0x00,0x03,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x28,0xc0,0x02,0x14,0x05,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x2e,0x00,0x02,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x30,0xc0,0x00,0x14,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x11,0x40,0x00,0x00,0x00,0x61,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x11,0x44,0x80,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x11,0x48,0x08,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x11,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x50,
- 0x88,0x00,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x11,0x80,0x20,0x00,0x38,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x11,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0x88,0x00,0x80,0x00,0x21,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x8c,0x60,0x00,0xc8,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x11,0x90,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x11,0xa0,0xc0,0x00,0x14,0x0d,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x11,0xa4,0x00,0x00,0x20,0x05,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x11,0xa8,0x00,0x9c,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x11,0xac,0xc0,0x00,0x5c,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x11,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x11,0xc0,0x08,0x00,0x04,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,
- 0xc4,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0xc8,
- 0x00,0x00,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x11,0xcc,0xc8,
- 0x00,0xcc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x11,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x12,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x12,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x12,0x08,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x12,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x12,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x12,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x28,
- 0x00,0x04,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x4c,0x08,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x12,0x50,0x08,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x12,0x80,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x12,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x12,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x8e,0x00,
- 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0x90,0x00,0x03,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xa2,0x00,0x03,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xa4,0x00,0x02,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x12,0xc0,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x12,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x12,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x12,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x12,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x13,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x13,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x13,0x08,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x13,0x24,0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x13,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x13,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x13,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x13,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x13,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x13,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x13,0x80,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x13,0x84,0x02,
- 0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x13,0x88,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x13,0x8c,0x02,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x13,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x13,0xa0,0x12,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x13,0xa4,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xae,
- 0x02,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x13,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x13,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x14,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x14,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x14,
- 0x08,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x14,0x48,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x14,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x14,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x14,0x80,0x00,0x00,0x40,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x14,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x14,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x14,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x14,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x14,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x14,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x14,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x14,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x14,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x14,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x14,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x15,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x15,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x15,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x15,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x15,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x15,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x15,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x15,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x15,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x15,0x80,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x15,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x15,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xc0,0x20,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x15,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x15,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x15,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x16,0x02,0x00,0x00,0x02,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x16,0x04,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x16,0x09,0x00,0x03,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x0c,0x00,0x01,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x12,0x01,0x01,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x21,0x00,0x01,0x03,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x24,0x02,0x00,0x80,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x16,0x2b,0x03,0x01,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x16,0x2c,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x16,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x16,0x40,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x16,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x16,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x16,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x16,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x16,0x83,0x00,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x16,
- 0x86,0x01,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x16,0x8b,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x16,0x8e,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x16,0x92,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x16,0xa3,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x16,0xa6,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x16,0xab,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x16,0xaf,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x16,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x16,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x17,0x02,
- 0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x17,0x04,0x01,0x03,0x01,0x81,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x17,0x09,0x00,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x17,0x0c,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,
- 0x12,0x03,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x21,
- 0x02,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x26,0x02,
- 0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x2b,0x03,0x03,
- 0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x2e,0x02,0x02,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x40,0x00,0x00,0x00,0x11,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x44,0x04,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x4c,0x04,0x00,0x00,0x81,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x17,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x17,0x82,0x00,0x00,0x03,0x81,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x17,0x84,0x03,0x01,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x17,0x89,0x02,0x03,
- 0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x8e,0x02,0x03,0x03,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0x92,0x01,0x03,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xa3,0x02,0x03,0x02,0x21,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xa6,0x02,0x03,0x03,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xaa,0x03,0x03,0x02,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x17,0xae,0x02,0x02,0x03,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x17,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x17,0xc0,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x17,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x17,0xc8,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x17,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x17,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x18,0x02,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x18,0x04,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x18,0x0b,0x02,0x03,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x0e,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x18,0x12,0x00,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x18,0x23,0x00,0x03,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x18,0x26,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x18,0x2a,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x18,0x2e,0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x18,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x18,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x18,
- 0x82,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x18,0x84,0x00,0x01,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x18,0x88,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x18,0x8c,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x18,0x92,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,
- 0xa1,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xa6,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xaa,0x00,
- 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xae,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x18,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x18,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x19,0x02,0x02,0x01,0x03,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x08,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x10,0x00,0x02,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x2c,0x00,0x00,0x10,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x30,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x19,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x19,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x19,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x19,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x19,0x82,0x02,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x19,0x86,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0x88,0x00,0x40,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x19,0x92,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x19,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x19,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x19,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x19,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x19,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x19,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0xc8,
- 0x00,0xc0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x19,0xcc,0x00,
- 0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x19,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x1a,0x00,0xa0,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,0x04,0x20,0x00,
- 0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x1a,0x0a,0x20,0x80,0x08,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1a,0x0c,0x20,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1a,0x10,0x20,0x00,0x0a,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1a,0x20,0xc0,0x00,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,
- 0x24,0xc0,0x00,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x28,
- 0xc0,0x1c,0x14,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x2c,0xc0,
- 0x00,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x30,0xc0,0x00,
- 0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x40,0x08,0x00,0x04,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x44,0x08,0x00,0x84,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x48,0x08,0x00,0x04,0x61,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x4c,0x08,0x00,0x04,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x1a,0x50,0x08,0x00,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1a,0x82,0x00,0x00,0x02,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,0x88,
- 0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0x90,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1a,0xc0,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1a,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1a,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1a,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1a,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x1b,0x00,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x1b,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1b,0x09,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1b,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1b,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1b,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1b,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1b,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1b,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0x4c,
- 0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1b,0x50,0x00,0x00,0x04,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x1b,0x80,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1b,0x85,0x00,
- 0x01,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x1b,0x88,0x00,0x80,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1b,0x8c,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1b,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1b,0xa0,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1b,0xa4,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,
- 0xa8,0x00,0x1c,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xc8,0x00,0x00,0x00,0x61,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1b,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x1b,0xd0,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1c,0x00,0x03,0x01,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,
- 0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x10,0x02,
- 0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x20,0x00,0x10,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1c,0x48,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1c,0x4c,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x1c,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1c,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x1c,0x85,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,0x8a,0x02,0x02,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1c,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1c,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1c,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1c,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1c,0xc0,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1c,0xc4,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1c,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1c,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1c,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x1d,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1d,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x1d,0x08,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1d,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1d,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1d,0x20,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1d,0x24,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1d,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,
- 0x2c,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x30,
- 0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x1d,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1d,0x80,0x02,
- 0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1d,0x85,0x03,0x03,0x03,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x1d,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0x91,
- 0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xac,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1d,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1d,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x1d,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1e,0x00,0x00,0x00,0x02,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x1e,0x05,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0x08,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x0c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x11,0x00,0x02,0x03,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x20,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0x28,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1e,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1e,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1e,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1e,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1e,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x1e,0x81,0x40,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,
- 0x85,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0x88,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1e,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1e,0x91,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1e,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1e,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1e,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1e,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1e,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1e,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1f,0x00,
- 0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x1f,0x04,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x1f,0x08,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x1f,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,
- 0x10,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x20,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x24,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x28,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x2c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x40,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x1f,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x1f,0x80,0x00,0x01,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x1f,0x84,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1f,0x88,0x00,0x00,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0x91,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xa0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x1f,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x1f,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x1f,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x1f,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x1f,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x1f,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x1f,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x20,0x02,0x00,0x02,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x20,0x07,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x20,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x20,0x13,0x02,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x20,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x20,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x20,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x20,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x20,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x20,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x20,
- 0x81,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x20,0x85,0x01,0x01,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x20,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x20,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x20,0x91,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,
- 0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x20,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x20,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x21,0x02,0x02,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x08,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x10,0x00,0x02,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x21,0x40,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x21,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x21,0x48,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x21,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x21,0x80,0x00,0x40,0x00,0xc1,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x21,0x87,0x01,0x01,0x01,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x21,0x93,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x21,0xa0,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x21,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x21,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x21,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x21,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x21,0xc0,0x00,0x40,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,
- 0xc4,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x21,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x21,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x22,0x01,0x01,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x22,0x07,0x02,0x02,
- 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x22,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x22,0x0c,0x40,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x22,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x22,0x20,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x2c,0x00,
- 0x00,0x48,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x4c,0x40,0x00,0x48,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x22,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x22,0x80,0x00,0x00,0x10,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x22,0x85,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x22,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0x91,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xac,0x00,0x00,0x04,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xb0,0x00,0x00,0x04,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x22,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x22,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x22,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x22,0xcc,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x22,
- 0xd0,0x00,0x00,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x23,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x23,0x04,0x01,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x23,0x08,0x00,0x00,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x23,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x23,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x23,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x23,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x23,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x23,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x23,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x23,0x81,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x23,0x85,0x00,
- 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x23,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x23,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x23,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x23,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x23,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xc0,0x10,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x23,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x23,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x24,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x24,0x04,0x00,0x01,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x24,
- 0x08,0x00,0x00,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x10,0x00,
- 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x28,0x00,0x20,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x2c,0x00,0x00,0x00,0x41,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x24,0x48,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x24,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x24,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x24,0x83,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x24,0x85,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x24,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0x93,0x00,0x02,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x24,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x24,0xa8,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x24,0xac,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x24,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x24,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x24,0xc4,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x24,0xc8,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x24,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x24,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x25,0x00,0x02,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x25,0x04,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x25,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x25,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x25,0x10,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x25,0x20,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x25,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x25,0x28,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x44,0x00,0x00,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x4c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x25,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x25,0x80,0x01,
- 0x00,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x25,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x25,0x88,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0x90,
- 0x01,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xa8,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xac,0x00,0x00,0x80,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xc0,0x00,0x00,0x00,0x05,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x25,0xc8,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x25,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x25,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x26,0x03,0x03,0x03,0x03,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x26,0x07,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x26,0x08,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x0c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x12,0x02,0x02,0x02,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x20,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x26,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x26,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x26,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x26,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x26,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x26,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x26,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x26,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x26,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x26,
- 0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x26,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x26,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x26,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x26,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x26,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x26,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x26,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x26,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x26,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x27,0x01,
- 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x27,0x05,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x27,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x27,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,
- 0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x20,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x25,0x01,
- 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x28,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x2c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x40,0x00,0x00,0x04,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x48,0x00,0x00,0x04,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x27,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x27,0x80,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x27,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x27,0x88,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0x90,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xa0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x27,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x27,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x27,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x27,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x27,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x27,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x27,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x28,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x28,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x28,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x28,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x28,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x28,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x28,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x28,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x28,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,
- 0x40,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x28,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x28,
- 0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x28,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x28,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x28,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x28,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,
- 0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xc0,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x28,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x28,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x29,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x04,0x20,0x00,0x08,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x08,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x10,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x24,0xc0,0x00,0x14,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x29,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x29,0x44,0x08,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x29,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x29,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x29,0x80,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x29,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x29,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x29,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x29,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x29,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x29,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x29,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x29,0xc0,0x00,0xc0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,
- 0xc4,0x00,0xc0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0xc8,
- 0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x29,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x29,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x2a,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x2a,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2a,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2a,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2a,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x40,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x2a,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2a,0x80,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xa0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2a,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2a,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2a,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2a,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2a,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x2b,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x2b,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2b,0x08,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2b,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2b,0x28,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2b,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2b,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2b,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2b,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2b,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x2b,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2b,0x84,0x00,
- 0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x2b,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2b,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2b,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2b,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2b,0xa4,0x00,0x00,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xc0,0x40,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xc4,0x00,0x00,0x04,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xc8,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2b,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x2b,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2c,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2c,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2c,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x2c,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2c,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x2c,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2c,0xa4,0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2c,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2c,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2c,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2c,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2c,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2c,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2c,
- 0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2c,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x2d,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2d,0x04,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x2d,0x08,0xc0,0x00,0xd0,0xc5,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2d,0x0c,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2d,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2d,0x20,0x00,0x40,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2d,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2d,0x28,0x00,0x00,0x48,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,
- 0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x40,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x44,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x48,0xc0,0x00,0xc8,
- 0x91,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x4c,0x20,0x00,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x2d,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2d,0x80,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2d,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x2d,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,
- 0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0x90,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xa0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xa4,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xa8,0x00,0x00,0x80,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xac,0x00,0x00,0x80,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xb0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xc0,0x10,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2d,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2d,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x2d,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2e,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x2e,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0x08,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x0c,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x10,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x20,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2e,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2e,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2e,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2e,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2e,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,
- 0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0x50,0x00,0x00,
- 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x03,0x09,0x00,0x2e,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,
- 0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2e,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2e,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2e,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2e,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2e,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2e,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,
- 0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xc0,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xc4,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xc8,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2e,0xcc,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2e,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2f,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x2f,0x04,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x2f,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x2f,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,
- 0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x20,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x24,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x28,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x2c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x30,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x40,0x00,0x00,0x00,0x41,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x44,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x2f,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x2f,0x80,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x2f,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2f,0x88,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x8c,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0x90,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xa0,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x2f,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x2f,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x2f,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x2f,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x2f,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x2f,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
- 0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x2f,0xd0,0x00,
- 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x03,0x09,0x00,0x30,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x30,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x30,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x30,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x30,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x30,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x30,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x30,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x30,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,
- 0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x44,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x48,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0x4c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x30,0x50,0x00,0x00,0x00,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x30,
- 0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x30,0x84,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x30,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x30,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x30,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,
- 0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xa4,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xa8,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xac,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xb0,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xc0,0x00,0x00,0x10,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xc4,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x30,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x30,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x31,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x08,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x0c,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x10,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x20,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x24,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x28,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x31,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x31,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x31,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x31,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
- 0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x50,
- 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x03,0x09,0x00,0x31,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x31,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0x88,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x31,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x31,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x31,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x31,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x31,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x31,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x31,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,
- 0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0xc8,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x31,0xcc,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x31,0xd0,0x00,0x00,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,
- 0x32,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x32,0x04,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x32,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x32,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x32,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x32,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,
- 0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x28,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x2c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x30,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x40,0x00,0x00,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x44,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x48,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x32,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x32,0x80,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x32,0x84,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x32,0x88,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x8c,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0x90,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xa0,0x10,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xa4,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xa8,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xac,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x32,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x32,0xc4,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x32,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x32,0xcc,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x32,
- 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x03,0x09,0x00,0x33,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
- 0x09,0x00,0x33,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x33,0x08,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x33,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x33,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x33,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x33,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x33,0x40,0x00,0xc0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x33,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,
- 0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0x4c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x33,0x50,0x00,0x00,0x00,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,
- 0x00,0x33,0x80,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x33,0x84,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x09,0x00,0x33,0x88,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x33,0x8c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x33,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x33,0xa0,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x33,0xa4,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,
- 0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xac,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xb0,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xc0,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xc4,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xc8,0x00,0x20,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x33,0xcc,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x33,0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x34,0x00,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x34,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x34,
- 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x0c,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x10,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x20,0x00,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x24,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x28,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x2c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x30,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x44,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x34,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x34,0x4c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x34,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x34,0x80,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x09,0x00,0x34,0x84,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x34,0x88,0x00,0x00,0x00,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x8c,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0x90,0x00,0x00,0x00,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,0xa0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x34,0xa4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x34,0xa8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x34,0xac,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x34,0xb0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x34,0xc0,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x34,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x34,0xc8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x34,
- 0xcc,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,
- 0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x34,0xd0,0x00,0x00,0x00,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
- 0x09,0x00,0x35,0x00,0xa0,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x35,0x04,
- 0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x09,0x00,0x35,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x09,0x00,0x35,0x0c,0x20,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x09,0x00,0x35,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x09,0x00,0x35,0x20,0xc0,0x00,0x14,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,
- 0x00,0x35,0x24,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,
- 0x35,0x28,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,
- 0x2c,0xc0,0x00,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x30,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x40,0x08,
- 0x00,0x04,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x44,0x80,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x48,0x00,0x00,0x00,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x4c,0x88,0x00,0x84,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x09,0x00,0x35,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x35,0x80,0x00,
- 0x00,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0x00,0x35,0x84,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,
- 0x35,0x88,0x20,0x80,0x08,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,
- 0x8c,0x40,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0x90,
- 0xa0,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xa0,0x00,
- 0x00,0x20,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xa4,0x00,0x80,
- 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xa8,0xc0,0x1c,0x14,
- 0x85,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xac,0x00,0x00,0x48,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xb0,0xc0,0x00,0x14,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xc0,0x80,0x00,0x80,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xc4,0x00,0x00,0x80,0x09,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x01,0x09,0x00,0x35,0xc8,0x08,0x00,0x04,0x61,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x01,0x09,0x00,0x35,0xcc,0x40,0x00,0x48,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x01,0x04,0x00,0x00,0x4e,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
- 0x00,0x35,0xd0,0x88,0x00,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x03,0x09,0x00,0x35,0xd0,0x88,0x00,0x04,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x02,0x08,0xff,0x04,0x00,0x00,
- 0x00,0x64,0x02,0x08,0xf0,0x04,0x00,0x00,0x00,0x00,0x02,0x08,0xff,0x02,0x08,0xff,
- 0x08,0x00,0x00,0x00,0x01,0x01,0x00,0x09,0x00,0x00,0x00,
diff --git a/board/esd/vom405/u-boot.lds b/board/esd/vom405/u-boot.lds
deleted file mode 100644
index f7a20d1da2..0000000000
--- a/board/esd/vom405/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/esd/vom405/vom405.c b/board/esd/vom405/vom405.c
deleted file mode 100644
index 8be552e2ea..0000000000
--- a/board/esd/vom405/vom405.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern void lxt971_no_sleep(void);
-
-/* fpga configuration data - not compressed, generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-int filesize = sizeof(fpgadata);
-
-
-int board_early_init_f (void)
-{
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF80); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-
- /*
- * Reset CPLD via GPIO12 (CS3) pin
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~(0x80000000 >> 12));
- udelay(1000); /* wait 1ms */
- out32(GPIO0_OR, in32(GPIO0_OR) | (0x80000000 >> 12));
- udelay(1000); /* wait 1ms */
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_r (void)
-{
- /* adjust flash start and offset */
- gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
- gd->bd->bi_flashoffset = 0;
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
- int flashcnt;
- int delay;
- volatile unsigned char *led_reg = (unsigned char *)((ulong)CAN_BA + 0x1000);
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming VOM405");
- } else {
- puts(str);
- }
-
- printf(" (PLD-Version=%02d)\n", *led_reg);
-
- /*
- * Flash LEDs
- */
- for (flashcnt = 0; flashcnt < 3; flashcnt++) {
- *led_reg = 0x40; /* LED_B..D off */
- for (delay = 0; delay < 100; delay++)
- udelay(1000);
- *led_reg = 0x47; /* LED_B..D on */
- for (delay = 0; delay < 50; delay++)
- udelay(1000);
- }
- *led_reg = 0x40;
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
-void reset_phy(void)
-{
-#ifdef CONFIG_LXT971_NO_SLEEP
-
- /*
- * Disable sleep mode in LXT971
- */
- lxt971_no_sleep();
-#endif
-}
diff --git a/board/esd/wuh405/Makefile b/board/esd/wuh405/Makefile
deleted file mode 100644
index 4d75868ea8..0000000000
--- a/board/esd/wuh405/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../common/misc.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esd/wuh405/config.mk b/board/esd/wuh405/config.mk
deleted file mode 100644
index 1d743a9f87..0000000000
--- a/board/esd/wuh405/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# esd ASH405 boards
-#
-
-TEXT_BASE = 0xFFFC0000
diff --git a/board/esd/wuh405/flash.c b/board/esd/wuh405/flash.c
deleted file mode 100644
index 89af1190a8..0000000000
--- a/board/esd/wuh405/flash.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- uint pbcr;
- unsigned long base_b0;
- int size_val = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Setup offsets */
- flash_get_offsets (-size_b0, &flash_info[0]);
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b0 = -size_b0;
- switch (size_b0) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
- mtdcr(ebccfgd, pbcr);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
diff --git a/board/esd/wuh405/fpgadata.c b/board/esd/wuh405/fpgadata.c
deleted file mode 100644
index fdc02e3ef9..0000000000
--- a/board/esd/wuh405/fpgadata.c
+++ /dev/null
@@ -1,1818 +0,0 @@
- 0x1f,0x8b,0x08,0x08,0xe2,0x44,0xc5,0x42,0x00,0x03,0x77,0x75,0x68,0x34,0x30,0x35,
- 0x5f,0x31,0x2e,0x62,0x69,0x74,0x00,0xec,0xbd,0x0d,0x74,0x14,0xd7,0x95,0x2e,0xba,
- 0xeb,0x54,0x49,0x94,0xba,0x5b,0xea,0x42,0x48,0x1e,0xd9,0x60,0x5c,0x6a,0x09,0xd2,
- 0x28,0x8d,0x68,0x24,0x47,0x60,0x21,0x4b,0x45,0x8b,0x78,0x14,0x20,0x41,0xe3,0x78,
- 0x12,0xee,0x7d,0x5e,0x99,0xb6,0x43,0x66,0x78,0x33,0xc4,0x97,0xc4,0xb9,0x77,0x88,
- 0x27,0xd7,0x3e,0x6a,0x09,0x23,0x2c,0x6c,0xda,0x36,0x89,0x71,0xe2,0xc9,0x34,0x98,
- 0x24,0xd8,0x61,0x32,0x0d,0xc2,0x46,0x80,0x63,0x97,0xb0,0xe2,0x34,0x58,0xc6,0x8a,
- 0xe3,0xc9,0x60,0xcc,0xe0,0x26,0x51,0x6c,0xd9,0x96,0xb1,0x8c,0x19,0x5b,0x20,0x40,
- 0xef,0xec,0x53,0x5d,0xd5,0x55,0xfd,0x23,0x27,0x77,0xd6,0xbc,0x35,0x6f,0xbd,0x61,
- 0xd6,0xba,0x77,0xa7,0xba,0x52,0xa9,0x73,0x74,0x6a,0xef,0xef,0x7c,0xfb,0xdb,0xfb,
- 0x40,0x91,0x77,0xcc,0xf8,0x3f,0x00,0xe1,0x36,0x28,0xfe,0xdb,0xff,0xb9,0xf6,0xfa,
- 0xe0,0x67,0xfe,0x62,0x61,0xed,0x1d,0x5f,0x5d,0x03,0xb7,0x83,0xbb,0xee,0xce,0xcf,
- 0x04,0xbf,0xf6,0xad,0x6f,0x2c,0xbc,0xfe,0x7a,0xf8,0x2a,0xfb,0x4f,0xc1,0xe0,0x67,
- 0x16,0x04,0x17,0x2d,0x08,0x2e,0x84,0x35,0x50,0xb4,0xf0,0x33,0x8d,0x75,0x8b,0x1b,
- 0x83,0xf5,0xf0,0x35,0x10,0xea,0x77,0x4d,0xb2,0x7f,0x4f,0x3e,0xfa,0xe7,0x7f,0x19,
- 0x04,0x2a,0x00,0xc0,0xb4,0xa0,0x10,0xc6,0xff,0xdf,0x1d,0x14,0x54,0x01,0x68,0xcb,
- 0xfc,0x20,0xe8,0xf8,0x9f,0x21,0xf5,0x7b,0x51,0x10,0x54,0xfb,0x7f,0x16,0x82,0xa0,
- 0x41,0x3b,0x68,0x5b,0x84,0x52,0xf8,0x43,0xfe,0x75,0xd1,0x94,0x21,0xfd,0x61,0xf7,
- 0x4b,0xe6,0xfd,0x93,0xc7,0x68,0xde,0x9b,0xd2,0xff,0x5a,0xce,0xc5,0x52,0x56,0x01,
- 0x09,0x7e,0xf2,0xed,0x82,0x46,0xcd,0xa7,0x5e,0x3c,0xf9,0x07,0x3d,0xff,0x7f,0x99,
- 0xcf,0xbf,0xf2,0x47,0xde,0x0f,0xca,0x1f,0x70,0x3b,0x1b,0xaf,0x69,0x5c,0x54,0x40,
- 0x06,0x02,0x40,0xc1,0x0f,0x2e,0x20,0x14,0x62,0xb9,0x8c,0x96,0x65,0xe6,0xfd,0xfa,
- 0xc6,0x2b,0x30,0xd1,0xd9,0x92,0x74,0x8f,0x88,0xdf,0xaa,0x98,0xa4,0x0d,0x27,0x8a,
- 0xc7,0xc4,0x3a,0x66,0xb4,0x0c,0x7b,0xc7,0xc5,0x31,0x78,0x83,0xd6,0x27,0xd1,0x10,
- 0xc2,0xe6,0xfd,0x15,0x3f,0x86,0xc3,0xb4,0x36,0xe9,0xde,0x4d,0xe6,0x42,0x4f,0x75,
- 0x65,0x7f,0xcf,0x37,0x9e,0xf7,0xe1,0x95,0x84,0xb7,0x8f,0xbc,0x09,0x3d,0xd4,0x97,
- 0x74,0xf7,0x91,0xa4,0x64,0xce,0x62,0x42,0xea,0x92,0x7b,0x21,0xa0,0xbb,0x63,0x85,
- 0xc3,0xd0,0x2b,0x07,0x06,0xdd,0x41,0x02,0x78,0x25,0xc1,0x8c,0x63,0xd2,0xc3,0x92,
- 0xaa,0x33,0xe3,0x88,0xa0,0x9a,0xcf,0x2f,0x18,0x86,0xc3,0x50,0xdb,0xcf,0x9e,0x1f,
- 0x9b,0xde,0x09,0x35,0xfd,0x2b,0xe2,0x35,0x7e,0x38,0x4c,0x6a,0x75,0x77,0x1c,0x9f,
- 0x0f,0x3e,0x34,0xc6,0xa4,0xf5,0xa9,0xfb,0x97,0x96,0x8f,0xc2,0x04,0x34,0xeb,0xde,
- 0x1a,0xf1,0x26,0x8a,0x46,0x71,0x7c,0x86,0x9f,0x5d,0x99,0xad,0x5f,0x17,0x17,0xcf,
- 0xc2,0xeb,0x50,0xa7,0x7b,0xe3,0xe2,0xd0,0x32,0xf3,0xfe,0xb8,0xb0,0x1f,0x26,0xa1,
- 0x45,0xf7,0x26,0x3b,0xbe,0xc6,0x8c,0x45,0xfa,0xaa,0x31,0x71,0xbf,0x3a,0x49,0x5a,
- 0xf4,0x92,0xb1,0x69,0x83,0xec,0xca,0x73,0xba,0x77,0x4c,0x1c,0x01,0x73,0xbc,0x43,
- 0xca,0x2e,0xe3,0xf9,0x31,0x71,0x97,0x3e,0x01,0x8d,0x7a,0x71,0x50,0x9c,0x27,0x4d,
- 0x48,0xcd,0xfd,0x5e,0x7c,0xfe,0xbb,0xa4,0x19,0x9f,0x3f,0x26,0x99,0xef,0x9f,0x28,
- 0xa8,0xc6,0xf7,0xd7,0xdd,0xbb,0xe9,0xa7,0xd8,0xdb,0x56,0xe9,0xf2,0x18,0x99,0x4f,
- 0x71,0x44,0x33,0xe3,0x64,0x14,0x3a,0x81,0x0f,0xe4,0x1c,0x5b,0xfd,0xa9,0xf1,0x4a,
- 0x2b,0x81,0xcf,0x8f,0x9f,0xfc,0x52,0x7a,0x5c,0xf0,0xb3,0xd9,0x28,0xfc,0x53,0xe3,
- 0x4a,0x90,0xe8,0xf0,0xb8,0x61,0x8c,0xb3,0x6f,0xc5,0xf8,0x37,0xa6,0x7c,0x49,0x3b,
- 0x10,0x9b,0x9f,0x74,0x7f,0xdb,0x75,0x15,0x6c,0xa2,0x95,0x23,0xae,0x6f,0xcf,0x7e,
- 0x05,0x0e,0xc4,0xbe,0x3e,0xe2,0xde,0x40,0xde,0x60,0x57,0xd8,0x4f,0x1b,0xc8,0x09,
- 0xeb,0xf9,0x6d,0xf2,0x32,0xf8,0x30,0xde,0xa4,0x7b,0x55,0xb1,0x8b,0x0d,0x64,0x71,
- 0xd2,0x1b,0x14,0xff,0xf4,0xc4,0x87,0xd1,0xa6,0x11,0x77,0x50,0x1c,0x84,0xdf,0x01,
- 0xfb,0x29,0x28,0xbe,0x42,0xcc,0xf5,0xa0,0x15,0xec,0x57,0x26,0xcb,0xd8,0xfc,0x28,
- 0xe2,0x7e,0x78,0x1f,0x1a,0x87,0x8a,0xe3,0xa2,0xdf,0x98,0xb1,0xb1,0xaa,0xd4,0x54,
- 0x8f,0x89,0x43,0xc4,0x9c,0x1f,0x59,0xda,0x03,0x2f,0xe2,0x45,0x75,0xda,0xb7,0x60,
- 0x82,0x36,0xbe,0xea,0x79,0xfa,0xc5,0xf9,0x2a,0xbb,0x2d,0xe9,0x89,0xb3,0x69,0xe4,
- 0xf7,0xc7,0xc5,0x63,0x60,0xcd,0x4f,0xc5,0x36,0xf8,0x17,0x98,0xaf,0xbb,0xc3,0x64,
- 0x16,0x3c,0x07,0x6a,0xa2,0xf8,0x9b,0xe2,0x2d,0xf4,0x80,0x34,0x5f,0x97,0xd7,0x93,
- 0x53,0x70,0x00,0x7f,0x5a,0x4f,0xce,0x59,0xf3,0xa9,0xc2,0xd3,0x7c,0x50,0x3d,0x23,
- 0x91,0xef,0x49,0x07,0x22,0xf3,0x46,0xe4,0x1b,0xc8,0x57,0xb4,0x03,0xec,0x4a,0xd1,
- 0x06,0x72,0x1a,0x0e,0x18,0xe3,0xd5,0xad,0xe7,0x8f,0x48,0x5d,0xf0,0x30,0x9f,0xcf,
- 0x23,0xf7,0xb2,0x69,0x54,0xf5,0xa2,0x60,0xe8,0x0b,0x6a,0xaf,0x18,0xd0,0xe5,0x20,
- 0x39,0x4e,0x53,0x13,0xfb,0x8a,0xf5,0xfc,0x64,0xf9,0x08,0x1c,0x83,0x66,0xea,0x1d,
- 0x15,0x0f,0xeb,0x17,0xa1,0x91,0x7a,0x62,0x55,0x7f,0x43,0x2f,0xb2,0x2b,0x81,0x98,
- 0x38,0xce,0x0d,0xf6,0xa7,0x1f,0x97,0xcc,0xf1,0xb6,0x09,0x31,0x18,0x87,0x66,0xf0,
- 0x52,0xb7,0xca,0x8d,0x05,0xb4,0x2a,0x09,0xe3,0x04,0xaf,0x88,0x67,0x52,0x3f,0x89,
- 0xaf,0x80,0xb9,0xfe,0x65,0xb6,0x7e,0x8e,0x42,0xb3,0xe6,0xfd,0xbe,0xb8,0x0b,0x5e,
- 0x83,0x26,0xcd,0x13,0x15,0xab,0xe1,0xa0,0xc0,0xae,0x44,0xc5,0xbf,0xa4,0x17,0x80,
- 0x1b,0x47,0xac,0xef,0x85,0x4a,0xcb,0xc8,0x66,0xa8,0xd5,0xdc,0x65,0x44,0x62,0xf7,
- 0xd7,0x6a,0xc5,0x51,0x12,0xf0,0x1c,0xc4,0x2b,0xd1,0xd2,0xdf,0x53,0xc3,0x20,0x49,
- 0xcb,0x2d,0x2c,0x16,0xaa,0xa5,0xcd,0x42,0xad,0xb6,0x22,0x5a,0xba,0x4b,0x79,0x94,
- 0xfd,0xea,0x57,0x08,0x7b,0xbe,0x71,0xdb,0xb0,0x69,0xbc,0x60,0xad,0x07,0x7f,0x59,
- 0x35,0x74,0xc0,0x3a,0x76,0xf1,0xa6,0xea,0xd8,0x83,0x10,0x58,0x5e,0x54,0x7a,0x4c,
- 0x82,0xbd,0x10,0xd0,0xdc,0x0a,0x19,0x88,0xa5,0x8c,0x23,0x82,0xb9,0x1e,0x36,0x14,
- 0x87,0xa1,0x1b,0x07,0x15,0x13,0x63,0xf4,0x04,0x34,0xcb,0x9e,0xc8,0x0c,0x1c,0x78,
- 0x13,0x0e,0x33,0x4c,0x53,0xe3,0x3d,0x2d,0x9a,0xeb,0x73,0x7b,0xc1,0xab,0xc0,0x07,
- 0x35,0x24,0x9e,0x87,0x0b,0xfe,0xe6,0xe5,0x25,0x0f,0x75,0x0e,0xe3,0x95,0xe5,0x6c,
- 0x98,0xe7,0x21,0x35,0xde,0x37,0x89,0xf9,0x3d,0x56,0x94,0x0f,0x1b,0x17,0xdb,0xc5,
- 0x6a,0x7a,0x14,0xee,0x0a,0x05,0xb6,0x89,0xec,0x8a,0xd4,0x8c,0x13,0x75,0x5e,0xbd,
- 0x6c,0xdc,0xff,0x02,0x98,0xf7,0x2f,0x56,0x92,0xd0,0x07,0xb5,0xcc,0xd1,0xb8,0x6f,
- 0x63,0x2f,0xe6,0x03,0x79,0x13,0xe1,0x57,0x64,0x17,0x35,0x0c,0x70,0x53,0x72,0xdc,
- 0x9a,0xff,0x36,0xe8,0x82,0xbd,0x42,0x40,0x9b,0xa9,0x7c,0x69,0x0e,0xec,0x90,0xfd,
- 0x21,0xb9,0x94,0x0c,0xe0,0x78,0x43,0xb2,0x82,0x86,0x10,0x58,0xca,0xc6,0xfb,0x8a,
- 0x60,0x3e,0x7f,0x7b,0xd9,0x2e,0x36,0x69,0x25,0x6c,0x7e,0x0a,0xbf,0x46,0x3a,0x40,
- 0xd5,0xe4,0x68,0x68,0x98,0x4d,0x7b,0x40,0x73,0x45,0x99,0xff,0x31,0xe6,0x33,0xf4,
- 0xa6,0xb5,0x1e,0x62,0x05,0x7f,0x69,0xbc,0xbf,0x22,0x4e,0xd3,0xde,0x96,0x6a,0xf0,
- 0xb5,0xd9,0xfb,0x0b,0xcd,0x4b,0x67,0xb1,0x61,0xaa,0x38,0x10,0xf6,0xfe,0x23,0x96,
- 0xbf,0x4a,0x4c,0xdf,0x65,0xfc,0xd1,0x1f,0xab,0x3a,0x2b,0xa7,0x66,0x63,0x18,0x32,
- 0x8d,0x8b,0x96,0xff,0x91,0x15,0x73,0xbd,0x89,0x61,0x7d,0x04,0x6a,0x05,0x0f,0x15,
- 0x55,0x3e,0xed,0x1e,0x63,0xbd,0x35,0xe2,0x4f,0xc7,0xac,0xf5,0xec,0x2f,0xf0,0xc3,
- 0x21,0x61,0x2e,0x75,0x0f,0xbb,0xe6,0x49,0x87,0xa0,0x96,0xca,0xb1,0xba,0x79,0xd4,
- 0x30,0x98,0x1b,0x39,0x04,0x3e,0xea,0x8e,0x91,0x63,0xe9,0xf5,0x60,0xfa,0x9f,0xea,
- 0xc8,0x4a,0x19,0xbd,0x4d,0x5b,0x90,0x94,0xf0,0x2b,0xf8,0xbd,0x30,0x03,0x3d,0x12,
- 0xbb,0xdf,0x5c,0x6f,0x54,0xb9,0x95,0x7d,0xa4,0x73,0xd8,0xf7,0xeb,0xba,0x05,0x0e,
- 0xa8,0x81,0x81,0x8a,0x6f,0xbb,0xca,0xf0,0xb3,0x4d,0xb0,0xef,0xf7,0x5f,0xe1,0x39,
- 0x5a,0x89,0xdf,0xef,0x88,0x75,0x7f,0x77,0xf7,0x57,0x94,0x8f,0xe9,0x8d,0x49,0xef,
- 0x06,0xf1,0x2b,0xf0,0x57,0x4f,0xdc,0xf8,0xbb,0x59,0x17,0xc5,0xd9,0xf0,0x71,0x47,
- 0xcb,0xc5,0xc0,0x06,0xf1,0x34,0x4c,0xd2,0x1b,0xf0,0xa7,0x77,0xe6,0x9a,0xf7,0xcb,
- 0x05,0x7b,0xb8,0xf7,0x66,0x83,0xda,0x15,0x9b,0x50,0x9b,0x13,0xde,0xfd,0xc2,0x30,
- 0xba,0x91,0xa3,0xcc,0x8d,0x24,0x4d,0x7f,0x72,0xe4,0x5e,0x73,0x7e,0x40,0x7a,0x96,
- 0xb9,0x1d,0x16,0xbf,0xd6,0x8a,0x77,0x2c,0x7b,0xa3,0x7b,0xd1,0xb0,0xe7,0xb2,0xd8,
- 0x22,0xbc,0x1b,0xad,0x39,0xe3,0x19,0x17,0x9f,0xd6,0x58,0x20,0xc3,0xf8,0xa5,0xc7,
- 0xcc,0xf9,0xdf,0x5d,0xf1,0x18,0x7a,0x0f,0xdd,0xbd,0x8e,0x94,0xc2,0x5b,0xb0,0xe0,
- 0x8c,0xff,0x2e,0x42,0x76,0xfd,0x3a,0x56,0x9b,0x2c,0x5e,0x4f,0x4e,0x2b,0xdc,0x9f,
- 0xac,0x27,0xef,0x58,0x7f,0x5f,0xa0,0x8f,0xb1,0xd1,0x7d,0x5d,0x77,0xaf,0x89,0xdc,
- 0x1a,0xdb,0x04,0xf3,0x07,0x8a,0xea,0x6e,0x6e,0xea,0x3e,0xe0,0xe3,0xfe,0xea,0x9f,
- 0x29,0xfe,0x34,0x73,0xbd,0xcd,0xff,0xa8,0xd2,0x03,0xc6,0x7c,0x02,0x21,0xf2,0xe3,
- 0x85,0x01,0xbd,0x28,0x7e,0x4d,0x2b,0xf7,0x48,0x45,0x41,0x9f,0x6e,0x3a,0xf6,0x84,
- 0xf5,0xbd,0xef,0x2e,0x3f,0xab,0xf2,0x41,0x05,0xc4,0xe5,0xf0,0x32,0x8b,0x47,0x47,
- 0xc7,0x5a,0xfd,0x45,0x13,0xe4,0xef,0x74,0xe6,0x3f,0x7f,0x4a,0x53,0xe3,0x7d,0xc7,
- 0x5a,0x3f,0x54,0xd8,0x93,0x8a,0x47,0xad,0x23,0xd5,0x68,0xd4,0xc6,0xc5,0xdd,0x1d,
- 0xef,0xe2,0x8c,0xc5,0xc5,0x51,0x01,0xaf,0xfc,0x29,0x4e,0x94,0xf9,0xfe,0x95,0xca,
- 0x33,0xa9,0x78,0x27,0x6e,0x90,0x5e,0x26,0x4b,0x58,0x98,0x9b,0xd1,0xd8,0x75,0x0f,
- 0x59,0xa4,0x17,0x8f,0xb1,0xf5,0x80,0x81,0x8f,0xf9,0x73,0x7d,0x99,0xf9,0xfe,0x3b,
- 0xa4,0x75,0xa9,0xf8,0x45,0xe6,0xd1,0x1e,0x1e,0x76,0x5b,0xd7,0x4a,0x87,0x85,0x5a,
- 0x7d,0x45,0x9c,0xbc,0x4b,0x0f,0x1b,0xf1,0x2b,0xa9,0x59,0xeb,0xa1,0x20,0x20,0xe3,
- 0x45,0xd7,0x6e,0xb2,0x66,0xd9,0x0f,0xa0,0x04,0x7f,0x9d,0x23,0xa4,0x6e,0x7b,0x07,
- 0xcc,0xfb,0xad,0xf5,0x26,0x97,0x79,0xa0,0x57,0x65,0x93,0xa0,0x46,0x54,0xb5,0x53,
- 0x08,0x0c,0xad,0x08,0x7e,0x69,0xa9,0x6a,0xe0,0x01,0x18,0x84,0x5e,0x29,0x60,0xe0,
- 0x01,0x73,0xfa,0xa1,0x78,0x1d,0x4c,0x28,0xb5,0x7a,0x49,0x4c,0x5c,0x03,0xec,0xfd,
- 0x4f,0xcc,0x3e,0x37,0xa3,0x5a,0x99,0xf0,0x2d,0x1a,0xbc,0x3f,0x3e,0x6d,0x64,0x0b,
- 0xae,0x90,0xad,0x71,0x51,0xb7,0xfc,0x4f,0xec,0x17,0x97,0x60,0x52,0xbb,0x0e,0xe3,
- 0xf5,0x10,0x1b,0x78,0xf3,0x09,0xef,0xfe,0x56,0x1d,0x26,0xd7,0xb6,0x0c,0x62,0x58,
- 0xd7,0x26,0x94,0xe6,0x01,0x34,0x0a,0xcd,0xf9,0xd4,0xcb,0xaf,0x00,0x5f,0x24,0x71,
- 0xb1,0x59,0x7a,0xb9,0xa3,0x59,0xf4,0xee,0x23,0x01,0x78,0xff,0x86,0x4f,0x9d,0x2c,
- 0x4e,0x88,0xef,0xb4,0xbd,0xae,0xd5,0x25,0x03,0x08,0x84,0xac,0xf9,0x57,0xce,0xca,
- 0x1c,0xff,0x44,0x4b,0xd7,0x31,0x27,0x54,0x1b,0x77,0x7f,0x44,0xaa,0x63,0x5b,0x97,
- 0x7d,0x7a,0x48,0xde,0xcd,0x96,0xfd,0x56,0xcd,0x17,0x92,0x71,0xbc,0x96,0xff,0x2f,
- 0x18,0x94,0x53,0x1f,0xd1,0x4a,0x5c,0x06,0xe0,0x5e,0xb8,0x73,0xa5,0xf4,0x38,0x51,
- 0x13,0x45,0x40,0xf4,0xee,0x47,0xc3,0xbe,0x84,0x8c,0xe3,0xb5,0xde,0xa7,0x60,0x8f,
- 0x31,0x7b,0x51,0xb2,0x0e,0x7e,0x00,0xb5,0xc9,0xd6,0xb8,0xab,0x9a,0xc1,0x86,0x1a,
- 0x5d,0xde,0x49,0x75,0xc4,0x3f,0x9a,0x8c,0xf8,0xc7,0x5a,0x9f,0x5d,0xe6,0x7a,0x70,
- 0x07,0xc8,0xeb,0xd0,0xbc,0x77,0x55,0xbc,0x2a,0xcc,0x60,0x49,0x9d,0xfe,0xf9,0xa8,
- 0xf8,0x36,0xfc,0x1a,0xe2,0xb8,0x90,0x74,0xcb,0x3f,0x9c,0x81,0xd4,0x7a,0x88,0x89,
- 0x4d,0x2c,0xbe,0xb7,0xd0,0x7f,0x08,0x8a,0xe3,0xf0,0x77,0xd0,0xd8,0xef,0x4d,0x3e,
- 0x3f,0x8e,0x3f,0xb5,0x7b,0xc7,0x3a,0xc7,0xcd,0x3f,0x17,0xe8,0xb0,0x07,0xde,0x35,
- 0xf0,0xcf,0x3a,0x0c,0xf4,0x23,0x0c,0x06,0xc4,0xe0,0xfd,0x82,0x6b,0xf4,0xe2,0x6d,
- 0x33,0xde,0x91,0x8e,0x76,0x1f,0xc2,0xe7,0xdb,0xf0,0x8f,0x14,0x30,0xfe,0xe8,0x31,
- 0x36,0xd6,0x1e,0xa8,0x1d,0x73,0x8f,0x11,0x3f,0x6c,0x85,0x4f,0xf7,0xbb,0x62,0x64,
- 0x84,0xa4,0xde,0xff,0x9c,0xf5,0xe7,0x4d,0x96,0xaf,0x34,0x40,0x4e,0xbc,0x70,0x1d,
- 0x1b,0x66,0x20,0xca,0x26,0x6a,0x37,0x41,0xe0,0x57,0x24,0x91,0x04,0xbb,0xb2,0x1b,
- 0x1d,0x51,0x1a,0xff,0x84,0x85,0xd9,0x46,0xd0,0x5f,0x5d,0xf7,0x15,0x0e,0x0c,0x66,
- 0xfe,0x1d,0x21,0xdd,0x9b,0xa2,0x0c,0x08,0xad,0x8e,0x5c,0x3c,0xb2,0x29,0x56,0x19,
- 0x96,0x9d,0xf8,0xc7,0xa3,0xfd,0x0e,0xf1,0x4f,0x93,0x78,0x07,0x79,0x1e,0x9a,0x76,
- 0x6f,0xbd,0x41,0xec,0xa1,0xbf,0x8b,0x2d,0x3e,0x53,0x0c,0xe2,0x11,0x7a,0x34,0xd6,
- 0x98,0x0c,0x30,0xfc,0x63,0xbd,0x8f,0x76,0x6d,0x6a,0x7e,0x7e,0x25,0x72,0x63,0x60,
- 0xda,0x98,0x98,0xd4,0x26,0xb4,0xe6,0x23,0x2c,0xa2,0x0d,0x69,0x93,0xed,0xd7,0x69,
- 0xde,0x0f,0xc4,0xa1,0x42,0x73,0xfe,0x77,0x17,0x8c,0x9a,0x4e,0x69,0x1d,0x37,0x3c,
- 0x1f,0xe2,0x42,0x55,0x0b,0x13,0x9e,0x5e,0xc4,0x9f,0x5a,0x1d,0xce,0xcf,0x3b,0x90,
- 0xf6,0xff,0x8f,0xa5,0x40,0x4e,0xe9,0x29,0xe6,0x7f,0x98,0x1b,0xb9,0x13,0x66,0x41,
- 0x67,0xb8,0x72,0x70,0xf9,0x9d,0x0c,0xff,0xfc,0x13,0x7c,0x1a,0x1d,0xcb,0x39,0xeb,
- 0xef,0xab,0xc3,0x0f,0x4d,0x90,0x83,0x68,0x27,0x30,0xc6,0x60,0xcf,0x4d,0xbe,0x4d,
- 0x3b,0x7f,0x3f,0xd2,0xb6,0x21,0x34,0x09,0xdf,0xa5,0x95,0x49,0x36,0xde,0x31,0xcb,
- 0xff,0xb4,0x95,0x0d,0x1a,0x4e,0xa6,0x8f,0x0c,0xc2,0xe3,0x02,0xbb,0x3f,0x4e,0x8a,
- 0x69,0x8f,0xb4,0x46,0x77,0x2d,0x26,0x2f,0xb1,0xa9,0xae,0x4d,0xfa,0x11,0xff,0x98,
- 0xeb,0x73,0xa4,0x7c,0x37,0x70,0x90,0x73,0x56,0x5c,0x2b,0x5d,0x14,0xee,0xe9,0xba,
- 0x36,0x26,0x7e,0x9b,0x21,0xa2,0x06,0xea,0xd9,0x25,0x5e,0x5c,0x7a,0x12,0xf6,0xed,
- 0xf6,0xc4,0xc4,0x8b,0x69,0xfc,0x03,0xc9,0x54,0x3c,0xea,0x4c,0xc2,0x08,0xdc,0x0d,
- 0x25,0x74,0x06,0x5e,0x59,0x0c,0xde,0x0e,0x76,0x65,0x4c,0x6b,0x84,0xeb,0xec,0xf8,
- 0xa7,0x5b,0x31,0x83,0xda,0xb4,0x6a,0x66,0x34,0xad,0x9d,0x16,0x6d,0x45,0x20,0xd4,
- 0xa8,0x79,0xbe,0xcf,0x80,0xd0,0xdb,0xcc,0x58,0xb9,0xcd,0x81,0x7f,0xd6,0x98,0xa0,
- 0xa5,0x5a,0x61,0x46,0xfb,0x7d,0x68,0x6c,0x86,0x06,0x4d,0x5e,0x7c,0x4d,0xb5,0x70,
- 0x10,0xd7,0xcf,0x76,0x1b,0xfe,0xa9,0x90,0xaa,0xe1,0x09,0x7e,0xbf,0xc4,0x61,0xcf,
- 0x90,0x1c,0x25,0x5d,0xd2,0xa3,0xc2,0xed,0x2c,0x70,0x97,0x06,0xd8,0x95,0x1a,0x66,
- 0x30,0xfc,0x63,0xfe,0x93,0x21,0x85,0x76,0x4a,0x23,0xdc,0x58,0xee,0x2a,0x8d,0x74,
- 0xc5,0x3a,0xe6,0x55,0x2f,0xf7,0x47,0x49,0x21,0xec,0x0d,0xb0,0x88,0x6f,0xc7,0x3f,
- 0x7d,0x72,0x98,0x0d,0x93,0x8d,0x37,0xe2,0xe2,0x78,0x4f,0x2e,0x26,0x33,0x18,0x10,
- 0x9a,0x1b,0x94,0x65,0x3a,0x43,0x95,0xde,0x51,0x0f,0x41,0x80,0x8a,0xc7,0x89,0x85,
- 0x7f,0xae,0x4d,0x8d,0xf7,0x95,0x5f,0x0f,0xc7,0x2e,0x90,0x16,0x6d,0xeb,0x43,0x1d,
- 0xdf,0x8a,0x5d,0xf0,0xd7,0x2e,0x9f,0x16,0x15,0x5f,0x8d,0x5d,0xf6,0xb7,0x2c,0xf7,
- 0x3e,0xd4,0xf9,0xe6,0x34,0x0b,0x6f,0x70,0xfc,0xd3,0xa2,0x79,0x1f,0x16,0x7f,0xcf,
- 0xa6,0xa5,0xa5,0xad,0xf8,0x41,0x71,0x58,0x3b,0xaa,0x34,0x2f,0x2f,0x66,0xf8,0x87,
- 0xdc,0x0f,0x75,0xcb,0x3c,0x43,0xe2,0x4d,0x69,0xfc,0x53,0x91,0x94,0x0d,0x90,0x13,
- 0x4a,0x52,0x66,0x6c,0x2b,0xde,0xc8,0xbc,0x71,0xf7,0x2d,0x75,0x50,0xc4,0xf0,0x8f,
- 0x9a,0x90,0x19,0x22,0x8a,0x1c,0x29,0x91,0xd2,0xfe,0x87,0x81,0x1c,0xc2,0xc6,0x3b,
- 0x83,0x0c,0xd0,0xbd,0x6c,0x36,0x8a,0x4a,0x43,0x03,0xd0,0x51,0xe5,0x0f,0x7d,0x4e,
- 0x29,0x1d,0xee,0xe8,0x50,0xd8,0x78,0x4b,0x49,0xc8,0xf2,0x3f,0x15,0x05,0xbb,0x84,
- 0x34,0x7a,0x94,0x6a,0xb5,0xa2,0x28,0xb0,0xfb,0x19,0x10,0x62,0x0b,0x69,0x18,0x36,
- 0x57,0xef,0xc4,0xf9,0x29,0x4c,0xe3,0x1f,0x69,0x97,0x85,0x5e,0x14,0x86,0x76,0x96,
- 0xfe,0x7d,0x74,0xfa,0x30,0x39,0x0a,0x8d,0x4b,0xd9,0xfb,0x0f,0x08,0x1d,0xb0,0x4f,
- 0x0b,0x44,0xc5,0xb5,0x5d,0xe6,0xf3,0x9f,0x54,0x76,0x39,0xd1,0xce,0xec,0x68,0x2b,
- 0x1a,0x8d,0x5a,0x49,0xb4,0xf3,0xcd,0x65,0x17,0x28,0x5f,0x2a,0xef,0x44,0xcd,0xe7,
- 0xfb,0x19,0xfe,0x19,0x49,0xe1,0x1f,0x92,0x98,0xd6,0xac,0x14,0x30,0xfc,0x23,0x27,
- 0xa0,0x41,0x08,0x51,0x31,0x29,0x21,0xa2,0x61,0x40,0xe8,0x58,0x97,0xb9,0xfe,0x55,
- 0xc9,0x0f,0xef,0x48,0xb5,0x08,0x72,0xfc,0xca,0x7d,0x30,0x3f,0xca,0xdc,0x8e,0x1f,
- 0xee,0x63,0xb0,0x07,0xf1,0x8f,0xf0,0x80,0xd6,0x40,0xe5,0x51,0xe6,0x58,0x4c,0xff,
- 0xe0,0xdf,0x98,0xf2,0x3f,0xc1,0xc2,0x95,0xe8,0x7f,0x7e,0x23,0x07,0x4b,0x3d,0xcc,
- 0xa8,0xd6,0x5d,0xc1,0x52,0xf6,0x05,0xc9,0xcc,0xf1,0x2e,0x61,0xf8,0xc7,0xfc,0xfb,
- 0x56,0x0a,0xb3,0xe0,0x27,0xf8,0xfd,0xde,0x45,0x66,0x03,0xc3,0x03,0x7a,0xc5,0x37,
- 0xd8,0x46,0x66,0x93,0x7a,0x5b,0x42,0x6e,0x67,0xdf,0xef,0x4f,0x60,0x4e,0x42,0x66,
- 0x2f,0xaa,0x59,0xcf,0x97,0x67,0xc3,0x5b,0x88,0x7f,0x16,0x8b,0xf7,0xc0,0x2f,0x99,
- 0x51,0x5c,0xf7,0x50,0x73,0xe8,0x65,0xfd,0xfa,0xe1,0xc2,0x0d,0x9d,0x2c,0xf4,0x74,
- 0x2c,0x19,0x0b,0xac,0x16,0x8e,0x59,0xfb,0x2f,0xf9,0xea,0x3d,0xa6,0x3f,0x41,0xc7,
- 0x72,0xbd,0xbe,0x60,0xbf,0x38,0x4a,0x27,0xd6,0xde,0xc3,0x02,0x19,0xbb,0xc2,0x3c,
- 0x70,0x92,0x4d,0xc5,0x11,0x6b,0xff,0xa5,0x15,0xb0,0xfd,0x7b,0xf4,0xc6,0xa4,0x67,
- 0xbc,0x33,0x15,0xc8,0xc6,0xc5,0x66,0x75,0x32,0xde,0xf2,0x5b,0xcf,0x78,0xeb,0x15,
- 0xf8,0x0b,0xba,0x28,0xe9,0x49,0xb0,0x50,0x68,0xe1,0x1f,0xe6,0x7f,0x7a,0x63,0x1c,
- 0xbd,0x0c,0x0a,0x6f,0xc1,0x8d,0xc7,0x7a,0xc6,0x84,0x1f,0xb2,0x2b,0x8d,0xa3,0xc5,
- 0x4b,0x23,0xa7,0x60,0x93,0xc0,0xfc,0x4f,0x3b,0x0b,0xdc,0xe6,0xf3,0xb7,0x33,0xef,
- 0x84,0xfe,0xaa,0x68,0x7d,0x84,0xef,0xce,0xfa,0x19,0x3a,0x9a,0x55,0x79,0x40,0x98,
- 0xaf,0x0b,0x6c,0xbf,0xa6,0x3d,0x52,0xf1,0xa3,0x23,0x6c,0xbc,0x49,0xcb,0xff,0x87,
- 0x15,0xc3,0xff,0x14,0x61,0x34,0xaf,0x82,0x80,0xca,0xfc,0xf9,0xf1,0xb2,0xde,0x02,
- 0xbf,0x5e,0x14,0x60,0xfb,0xdf,0x1e,0xa8,0x49,0x32,0xff,0x7f,0xc2,0x5a,0x9f,0x35,
- 0xe5,0xc6,0x78,0xe7,0x8f,0xcd,0xb8,0xc4,0x8c,0xbb,0xc3,0x2c,0x3a,0x37,0x31,0x58,
- 0xb2,0x40,0xff,0xfc,0x13,0x33,0x46,0xe1,0x24,0x39,0x90,0xdc,0xc3,0xf6,0x8f,0xd6,
- 0x7a,0x8b,0xc2,0x28,0x8b,0x56,0xcd,0x7a,0x49,0x5c,0x18,0x85,0x77,0x85,0xbb,0xfe,
- 0x1b,0xdb,0xbd,0xee,0xa9,0x98,0x40,0x8f,0x8d,0x1b,0x87,0x11,0x23,0x54,0xa5,0xfd,
- 0x43,0x47,0xf4,0x52,0x6a,0xf7,0x2a,0x72,0x63,0xe9,0xd6,0xb1,0x69,0x4d,0xd2,0x24,
- 0xdc,0xa3,0x7b,0x8f,0x88,0xe3,0x91,0x63,0x50,0xaf,0xb3,0xef,0x8b,0x2e,0x33,0xdf,
- 0xa7,0x1f,0x10,0xff,0x34,0xeb,0x3d,0x71,0x71,0x0f,0x06,0xb2,0xf5,0x0c,0xbd,0x18,
- 0x11,0xad,0x68,0x5b,0xe9,0xef,0xe8,0x89,0x64,0x83,0x2e,0x53,0x12,0x4c,0xe3,0x1f,
- 0x33,0xde,0xc5,0x09,0xbf,0xff,0xf6,0x1f,0xc4,0x43,0x01,0x58,0xc2,0xe2,0x35,0x8b,
- 0x80,0xa3,0x70,0x1f,0xf5,0xe1,0xfd,0xb1,0x34,0xfe,0x91,0x18,0xfe,0x09,0x73,0x90,
- 0xb3,0x85,0x4d,0x94,0x47,0x73,0x2f,0xf4,0x6d,0x51,0x7b,0x83,0xeb,0xf4,0xab,0x81,
- 0xfc,0x82,0x0d,0xaf,0x5a,0x67,0xdf,0x17,0xb1,0xfc,0x0f,0x2d,0x62,0x61,0x25,0xcc,
- 0x06,0xf5,0x94,0xf8,0x8f,0x08,0x8c,0x35,0xf7,0xd8,0x35,0x4d,0x43,0x93,0x72,0xcb,
- 0x2b,0x6c,0x19,0x1c,0x25,0xc7,0x96,0xd6,0x0d,0xb1,0x8d,0x2a,0x15,0x2c,0xfc,0x53,
- 0x8c,0xf8,0x67,0x89,0xee,0x3d,0x27,0x3e,0x13,0xbb,0x07,0x98,0xb7,0x39,0x57,0xb5,
- 0x8e,0x4e,0xcc,0x6d,0x3e,0x56,0xac,0x8b,0x63,0x94,0xf9,0x9f,0x63,0x88,0x7f,0xca,
- 0xd2,0x78,0x83,0xad,0x1f,0xb2,0x24,0x59,0xbc,0x9a,0xe1,0xcf,0xf7,0xcb,0x16,0x0d,
- 0x14,0x9f,0xeb,0x3c,0x07,0x13,0xa5,0xb5,0x7a,0xf1,0xb8,0x78,0x05,0xde,0x37,0x56,
- 0x54,0x1a,0xff,0xe8,0xca,0x59,0xf8,0x9b,0x21,0x5f,0xd2,0xbd,0x9d,0x3c,0x09,0x5b,
- 0x6f,0xaf,0x1a,0x72,0x5d,0x0a,0xbd,0x09,0xcf,0x85,0x17,0xbc,0x22,0xf7,0x91,0xb3,
- 0x06,0x35,0xe4,0xe0,0x7f,0x0a,0x06,0x8d,0x4d,0x84,0xc2,0x96,0xec,0xe3,0x5a,0xf5,
- 0x6b,0xee,0x60,0x29,0x83,0xc1,0x4b,0x03,0xaf,0x15,0x05,0x59,0x84,0x7a,0x58,0x08,
- 0xf4,0xb3,0x2b,0x47,0xac,0xf8,0xa5,0x97,0xef,0x51,0x0e,0x23,0xc9,0xb3,0x9d,0xec,
- 0x80,0x4f,0x33,0x63,0x79,0x9c,0x9c,0x81,0xc3,0x42,0x89,0xde,0x86,0xfc,0xc9,0x61,
- 0xa9,0xd6,0xc9,0xff,0x68,0xe5,0xeb,0xa4,0x09,0xe9,0x9a,0xfe,0xe2,0x6e,0x71,0x05,
- 0x03,0x2a,0x0d,0x7a,0xb1,0x41,0x3b,0xcc,0x46,0x63,0xb4,0x82,0x43,0x97,0xb8,0x90,
- 0xe6,0x7f,0x62,0xc2,0x33,0xca,0x5b,0x6c,0x3d,0xb8,0x87,0xc4,0x09,0x78,0x9d,0x19,
- 0x05,0x63,0xe2,0x65,0xb6,0x1e,0x38,0xad,0x71,0x49,0x30,0x96,0xca,0x34,0x3b,0xff,
- 0x13,0x30,0xbe,0xc7,0x4e,0x71,0x2d,0xbc,0x25,0xdd,0x80,0xd1,0xfc,0x0c,0x9b,0xb1,
- 0x1b,0xd9,0x0a,0x6c,0xb5,0x42,0xbf,0x9d,0xff,0x09,0xc8,0xcf,0xe1,0x7a,0x08,0x72,
- 0xd8,0x53,0xa5,0xef,0x1e,0x63,0xb3,0xf1,0x1c,0x2c,0xd0,0x65,0xfe,0xfe,0xc0,0x81,
- 0x74,0x9a,0xff,0x19,0x29,0x30,0xf6,0x5f,0x45,0x65,0xa4,0x4d,0x41,0xfe,0xa7,0x88,
- 0xcd,0x06,0xed,0x95,0xfc,0xfd,0x2e,0x9c,0x9f,0xde,0x2c,0xfe,0xc7,0xc4,0x3f,0x27,
- 0x49,0x63,0xe4,0x53,0xb4,0x68,0xd8,0xbf,0x81,0xfc,0x26,0xb8,0x28,0x3e,0x3f,0x09,
- 0x0c,0x21,0x74,0xb0,0x9f,0x46,0x32,0xf8,0x1f,0x8f,0xc1,0xff,0x54,0x88,0x5f,0xa0,
- 0xbf,0x83,0xc6,0x11,0xcf,0x0d,0xe2,0x71,0xe5,0xce,0x78,0x53,0xb2,0x24,0x28,0x1e,
- 0x87,0x3b,0x69,0x53,0xd2,0xc9,0xff,0x30,0xfc,0xf3,0x77,0x70,0x9d,0xbe,0x75,0x68,
- 0xfa,0x25,0xed,0x0d,0x68,0x78,0xd5,0xfb,0x41,0xeb,0xa5,0x30,0x67,0x84,0x3e,0x10,
- 0xad,0x4f,0xc9,0x89,0x7f,0xf8,0xec,0x81,0x28,0xc3,0xa4,0x6f,0xc9,0xab,0xb3,0xf6,
- 0x77,0xbe,0x1b,0x7b,0x37,0xd8,0x32,0x1a,0xe0,0x1e,0x8c,0x64,0xf2,0x3f,0xcc,0xff,
- 0xbc,0x85,0xfb,0xaf,0xf5,0xe2,0x6a,0xd8,0xa4,0x54,0x26,0xe4,0x6f,0x92,0x53,0xb4,
- 0x53,0xa9,0x1a,0xcc,0xcd,0xff,0x50,0x86,0x7f,0x7e,0x82,0xe3,0x6d,0x0b,0x5d,0xa3,
- 0xf6,0x46,0xfd,0x23,0xf2,0xb7,0x4b,0xaf,0x74,0x1d,0xd8,0x31,0x6f,0x24,0x37,0xff,
- 0x83,0xf8,0x87,0xfb,0xf3,0xfa,0xd0,0x72,0xe6,0x6d,0x54,0xdc,0xcf,0x0e,0x6a,0x0f,
- 0x33,0x43,0xe6,0xf3,0x29,0x65,0xf0,0x3f,0x23,0xe5,0x2c,0x5e,0x20,0xfe,0x49,0x8a,
- 0xd7,0x30,0x20,0xd4,0xd8,0xe1,0x89,0xb5,0xbe,0xc3,0x8c,0x43,0x94,0xc1,0x9e,0x11,
- 0x16,0x5d,0x32,0xf9,0x1f,0x48,0x9a,0xf1,0xe8,0xb7,0xe6,0xc6,0x1c,0xaf,0x70,0xd8,
- 0x93,0xcc,0xc5,0xff,0x60,0x74,0xab,0xd5,0xbc,0x8f,0x32,0xb4,0xf3,0x1a,0x83,0x31,
- 0x2c,0x2c,0xae,0x81,0x6f,0x40,0x1d,0x0b,0x73,0xc2,0xb0,0x94,0x83,0xff,0x59,0x23,
- 0xf1,0xf8,0x5b,0xca,0x60,0xff,0x66,0x44,0x3b,0x51,0xb6,0x6c,0x10,0xf6,0xd8,0xf9,
- 0x1c,0x1b,0xfe,0x29,0xb0,0xd8,0x9e,0xb9,0xd2,0xa3,0x20,0xb1,0x78,0x4d,0xd6,0xb0,
- 0x08,0x7e,0x3b,0x32,0x42,0xc3,0xc6,0xa3,0xa2,0xbe,0x17,0x6c,0xfe,0x87,0xc1,0x1e,
- 0x3f,0x27,0x79,0xaa,0xa1,0xc3,0x1f,0x5b,0x2e,0x97,0xbe,0x30,0x20,0xef,0xf5,0xab,
- 0xcb,0x91,0xff,0x91,0x0c,0xfe,0x07,0xd2,0xf8,0x67,0x71,0x71,0x18,0xc6,0x55,0x3e,
- 0x28,0x15,0x4e,0xf8,0x1a,0xe4,0xe2,0x88,0x88,0x57,0xf6,0xc9,0x38,0xf0,0xe9,0xd9,
- 0xfc,0x8f,0x81,0x7f,0x96,0x1a,0xfc,0x4f,0x80,0xd3,0x3e,0x03,0x70,0x61,0xde,0xb3,
- 0xcb,0xb7,0x46,0xab,0x2c,0x7e,0xe3,0x4d,0x6b,0xff,0xc5,0xf9,0x1f,0x0c,0xfa,0xed,
- 0xee,0xeb,0xe1,0xb5,0x70,0x73,0x5b,0xc9,0x43,0xe2,0x70,0xc5,0x05,0x7f,0xe3,0x72,
- 0x8f,0x8d,0x0f,0xc9,0xe6,0x7f,0xdc,0xb4,0x54,0x85,0x6e,0xa8,0x9d,0x25,0x33,0xfc,
- 0x03,0xf1,0x70,0x43,0x85,0x83,0xff,0xb1,0xe6,0xb3,0x0d,0xf1,0x8f,0xe6,0x67,0x83,
- 0xba,0xa9,0x1a,0x1e,0xd4,0x90,0xf6,0x29,0x65,0x57,0x64,0x7f,0xa8,0x5b,0x31,0x88,
- 0x20,0xcd,0xc1,0xff,0x54,0x08,0xbb,0x8c,0xf9,0x7c,0xb0,0x10,0xe7,0x3f,0xa0,0x31,
- 0x58,0x38,0x2c,0x1f,0x04,0x69,0xa9,0x0b,0xe7,0xff,0x86,0x6c,0xfe,0xc7,0x40,0x2f,
- 0xc8,0xff,0x04,0x5f,0x03,0x4e,0x5b,0xbd,0xd5,0x7d,0x01,0x4c,0x22,0xc8,0x80,0xbe,
- 0x69,0xfe,0x67,0x84,0x3d,0xff,0x42,0x01,0xbb,0xb8,0x7d,0xc6,0x9b,0x9a,0x39,0x1b,
- 0x94,0x3f,0x21,0x27,0xff,0xe3,0x87,0x58,0x8a,0xe4,0xe9,0xbc,0x8d,0x2f,0xbc,0x12,
- 0x2a,0x56,0xc1,0x38,0x69,0x40,0xd8,0x63,0xad,0xb7,0x0c,0xfe,0x07,0x18,0xfe,0x19,
- 0x26,0x7e,0xf5,0x24,0x33,0x3c,0x0c,0xff,0xd0,0x43,0x50,0x43,0x8b,0xd9,0xfe,0x4b,
- 0xe6,0x3f,0x39,0xf8,0x9f,0xf2,0x95,0xdc,0x3f,0xaf,0x08,0x16,0x7e,0x81,0x18,0x40,
- 0x68,0x6e,0x09,0x73,0x53,0x81,0xd4,0xf7,0x62,0xf8,0x9f,0x34,0xff,0x13,0x13,0x0c,
- 0x3c,0xe0,0x1e,0xbb,0xe9,0x3b,0xc2,0x23,0xc1,0xc0,0x20,0xdb,0x7d,0x94,0xc1,0x01,
- 0x75,0x5e,0xa2,0xc8,0xf6,0xfd,0xa6,0xf9,0x9f,0xdd,0x32,0xfa,0xab,0x1b,0xce,0x78,
- 0xd7,0x8a,0x5f,0x81,0x9f,0xc4,0x6e,0xfc,0x2d,0x03,0x42,0xb3,0xe1,0xe3,0xa1,0xa6,
- 0x8b,0x1e,0xe4,0x7f,0x52,0xd4,0xd0,0x3b,0x3e,0x8b,0xff,0x29,0x36,0xf1,0xcf,0x17,
- 0xb7,0xc0,0xc4,0x9a,0xe6,0x84,0x37,0xde,0xf6,0x7b,0x98,0x50,0x1b,0x12,0x29,0x44,
- 0x64,0xf0,0x3f,0x16,0xfe,0x01,0x16,0xbf,0x26,0xa3,0x3c,0x48,0x9d,0x86,0xf7,0x07,
- 0x96,0xa0,0xf1,0xae,0x3c,0x11,0xad,0x43,0xfe,0xc7,0x42,0x44,0x36,0xfe,0x07,0xf7,
- 0x5f,0xbb,0xe6,0x0f,0xb8,0x17,0x92,0x59,0x74,0x13,0xf8,0x47,0x7e,0x10,0x24,0x2f,
- 0xd0,0x03,0xb1,0xca,0xa4,0x6b,0x7d,0x6a,0xbc,0x6c,0x20,0x69,0xfc,0x03,0x90,0xda,
- 0xaf,0x8d,0x91,0x6d,0x0c,0xdd,0xcd,0x4b,0xb0,0xd1,0x9d,0xa0,0x07,0xa0,0xb2,0xdf,
- 0xee,0xaf,0x6c,0xfc,0x0f,0xdf,0x7f,0xad,0xd3,0xdd,0x0b,0xa9,0xc4,0x60,0xa4,0x5f,
- 0x17,0x83,0x2c,0xac,0xff,0x00,0x76,0xea,0x96,0x3f,0x2f,0x72,0xf2,0x3f,0x7b,0x4c,
- 0x27,0xb9,0x85,0xed,0xc7,0x59,0xe0,0x8e,0xb7,0xbe,0xc7,0x3c,0x6a,0x3d,0x06,0x1a,
- 0x6b,0xbc,0x36,0xfe,0x07,0xac,0x8b,0x38,0x51,0x4d,0x68,0x8c,0xd8,0x11,0x23,0x66,
- 0x40,0x6c,0xfc,0x8f,0xa0,0x18,0x4e,0x7b,0xeb,0x98,0xd8,0x0c,0x2f,0x33,0xc3,0xb3,
- 0x5e,0x68,0x52,0xef,0x01,0xb6,0x2d,0x1d,0x4b,0xfb,0xf3,0x34,0xff,0x43,0xa5,0x75,
- 0x9c,0xcf,0x71,0x57,0x90,0x9f,0xe1,0xfe,0x9d,0x3d,0x8d,0xec,0x06,0x8c,0xc8,0xc5,
- 0x3c,0x7e,0x91,0x6c,0xfe,0x87,0xa1,0x1d,0x76,0xf1,0x69,0xb6,0x0f,0xea,0x91,0xe6,
- 0xea,0xae,0x38,0x89,0x69,0x78,0xbf,0x15,0xef,0x9c,0xfc,0x0f,0xe2,0x1f,0xbe,0xa8,
- 0x7c,0x5b,0x34,0xb6,0xde,0x5e,0x5a,0xb1,0xb0,0x30,0xc2,0xf0,0x80,0x7a,0xe2,0x73,
- 0xe8,0xa8,0x7b,0xb5,0x1c,0xfc,0xcf,0x61,0x95,0x8d,0x6e,0xaf,0x18,0x60,0x78,0x7b,
- 0xd1,0x2b,0x25,0xfb,0xeb,0x77,0x68,0x1f,0x6b,0xf5,0x43,0xc6,0xfc,0x68,0xcd,0xaf,
- 0xb2,0x81,0xeb,0xd3,0x2c,0xfc,0x73,0x2d,0x83,0x91,0x15,0x2d,0xec,0x82,0x78,0x29,
- 0xf2,0x06,0xc2,0x80,0xb1,0x2f,0x8e,0x0d,0x4c,0x36,0xb4,0xbc,0x86,0xf1,0x9d,0xb2,
- 0xf1,0x26,0x9c,0xfc,0x0f,0xae,0x9f,0x8d,0x2d,0xc9,0xcf,0x8f,0x7f,0xf5,0x32,0xbc,
- 0xa1,0x2e,0x19,0x2e,0x3e,0x27,0x7e,0x9d,0x8e,0xab,0x0d,0xfa,0xfd,0x63,0xe2,0x37,
- 0xb5,0x97,0x68,0x7d,0xac,0xf8,0x03,0x31,0x68,0xe7,0x7f,0x4c,0x90,0x33,0x4a,0xb7,
- 0x46,0x7d,0x09,0xf7,0x9d,0x91,0xa6,0xd5,0xae,0x0d,0x55,0x27,0xe5,0x8f,0x23,0xa0,
- 0xec,0x90,0xfc,0xd4,0xf5,0x10,0x89,0xd9,0xf6,0x5f,0xd6,0x1f,0x7d,0x0b,0x3c,0xcc,
- 0x3f,0xb4,0xd2,0x95,0x74,0xbb,0x20,0x0d,0xf4,0x04,0xc9,0x4a,0x29,0x32,0x4f,0xbd,
- 0x4f,0x56,0x19,0xde,0x4b,0xf3,0x51,0x7b,0xcc,0x49,0x1b,0x84,0x9f,0x42,0x4d,0xff,
- 0xe7,0xe2,0xc4,0x03,0xf7,0x69,0x2a,0x4e,0x6c,0x40,0x78,0x92,0x7d,0xc8,0xcc,0xd1,
- 0xc5,0x2d,0xff,0xa3,0x95,0x5b,0x7f,0xf4,0x3d,0xf0,0xba,0xd0,0xa8,0x7f,0x3e,0xfe,
- 0xd5,0x75,0xf2,0x85,0x68,0x03,0x5b,0x0f,0x55,0x61,0x38,0x2a,0xd4,0x51,0xcf,0x6e,
- 0x51,0xb1,0xd6,0x4f,0x52,0x78,0x26,0x8d,0x87,0x5f,0x87,0x45,0xfd,0xee,0xb1,0xaa,
- 0x4b,0x70,0x59,0x6a,0xc1,0x27,0x8c,0xc1,0x65,0x68,0xa1,0xde,0x01,0x71,0xdc,0x5a,
- 0x3f,0xba,0xb2,0x47,0x30,0x57,0x97,0xf2,0x31,0xc3,0x57,0xd7,0x05,0xc5,0x40,0x51,
- 0x42,0xab,0x4b,0x14,0xaf,0xef,0x1c,0xad,0x38,0x06,0xec,0xf9,0x7d,0x4e,0xfc,0x63,
- 0xbe,0xff,0x25,0x68,0x61,0xcb,0x60,0xeb,0x98,0xab,0x99,0x76,0xc1,0xa7,0xf5,0xe5,
- 0x63,0x64,0xc1,0xf6,0x93,0xc9,0x86,0x6d,0xc5,0xdb,0x6c,0xf8,0x27,0x99,0xc2,0x3f,
- 0x9c,0x1f,0xe3,0x13,0xb5,0x98,0x4d,0x14,0x05,0xff,0xd0,0xf6,0x20,0x79,0x9c,0x3e,
- 0x9a,0xac,0xa1,0x72,0x34,0x92,0xc1,0xff,0x60,0xfe,0x6b,0x83,0x8f,0x47,0xff,0x61,
- 0x17,0xdb,0x88,0xd1,0xc2,0xd8,0xa7,0x87,0xc9,0x06,0xf2,0x90,0x5c,0x4e,0xe7,0xc4,
- 0x84,0x4c,0xfc,0xd3,0x4b,0xbf,0x83,0x49,0xae,0x95,0xf0,0x21,0xc1,0xb4,0x57,0xe4,
- 0x67,0x0f,0x15,0xc5,0x18,0x10,0x0a,0x8a,0x83,0xf4,0x66,0x25,0x48,0x3d,0x90,0x81,
- 0x7f,0xf8,0x6e,0x62,0x8c,0xed,0x2f,0x26,0x49,0xbd,0xbe,0xf5,0x5c,0xe7,0xff,0x66,
- 0x13,0xd5,0x3c,0x54,0xf2,0x6f,0x9d,0xdf,0x81,0x2b,0x5d,0x2d,0x08,0x15,0x6c,0xf8,
- 0xa7,0x7c,0x34,0xfd,0xf5,0x4d,0x6a,0xec,0x0f,0x51,0xc7,0x80,0xfa,0xf3,0x75,0x3e,
- 0x3d,0x70,0x9e,0x45,0xcc,0x83,0x84,0xe1,0x07,0x9a,0xc5,0xff,0xdc,0xc0,0x9c,0x06,
- 0x9c,0xa2,0x07,0xd6,0x22,0xff,0x13,0xf2,0x44,0x7f,0x22,0xcf,0x3b,0xc1,0x80,0x90,
- 0x02,0x4f,0xc1,0x7c,0xea,0x0e,0xe7,0xe1,0x7f,0x78,0xda,0x6b,0x33,0x1b,0xb8,0xf6,
- 0x0f,0xb1,0xea,0x64,0xdb,0x5d,0xbe,0xd9,0xf0,0x74,0x64,0x7e,0xcc,0xbd,0x9a,0x8c,
- 0x59,0x9f,0x4b,0x9b,0x34,0x28,0xa5,0xf8,0xc6,0x51,0x21,0x45,0xe3,0x6f,0x81,0x9f,
- 0xd2,0x80,0xde,0x1d,0x24,0x1e,0x65,0x1f,0xfb,0x4a,0xd9,0x0c,0xd8,0xf8,0x9f,0x82,
- 0x14,0xff,0x83,0x68,0x07,0x8d,0x6b,0xd1,0x38,0x89,0xfc,0x4f,0xcc,0xed,0x67,0x57,
- 0x16,0x50,0xef,0x70,0x16,0xff,0xd3,0x68,0xc0,0x1e,0x8c,0x3e,0xd7,0xd1,0x6b,0x6e,
- 0x83,0xf1,0xab,0xd9,0x15,0x69,0x46,0x12,0x2e,0x65,0xe1,0x1f,0xb0,0x65,0x37,0xfa,
- 0x11,0xf6,0x54,0xb4,0x76,0xc1,0x8b,0xb1,0x46,0x0d,0x1e,0x14,0xd7,0xc8,0x3c,0x62,
- 0x6e,0xcf,0xc9,0xff,0xf8,0x86,0x09,0xc7,0x3f,0x0f,0x92,0x39,0x91,0xcd,0xba,0x4f,
- 0x6b,0xfb,0x1e,0x99,0x03,0x07,0xb5,0x5a,0xcd,0xef,0xe0,0x7f,0xca,0x39,0xff,0xb3,
- 0x94,0xa3,0xa3,0xcd,0xa0,0x6a,0xae,0xa8,0x6f,0x17,0xd9,0xcc,0x22,0x3e,0x03,0x4e,
- 0x5f,0x83,0x9f,0x87,0xd6,0x69,0xab,0x1f,0x24,0x19,0xf8,0xc7,0x08,0xfa,0xc3,0xb1,
- 0x0e,0xbf,0xaa,0xc9,0x75,0x11,0x89,0x19,0xc9,0xe5,0x35,0xa5,0x91,0x32,0x36,0xff,
- 0x1e,0x4d,0x2e,0x8d,0x38,0xf1,0x4f,0x0a,0xef,0x25,0xbb,0x12,0x6a,0x1c,0xbc,0x11,
- 0x31,0xc6,0x8c,0x46,0x59,0x26,0x62,0x18,0x4e,0xc1,0x6c,0xf0,0x44,0xc4,0xe3,0xa2,
- 0xf9,0x3e,0xdb,0x8b,0xd3,0xe3,0x8d,0x5d,0x80,0xd9,0xcb,0xbd,0x0f,0x3d,0xcc,0x0c,
- 0x7f,0xf3,0xf2,0x62,0xc3,0xb8,0x67,0xb9,0xfb,0x95,0xe7,0xdf,0x9c,0x66,0xce,0x67,
- 0x45,0x41,0xfa,0xfe,0xe8,0x05,0xb5,0x59,0x2b,0xfe,0x15,0x59,0xa3,0xbe,0x56,0xd6,
- 0x10,0x2a,0x79,0x58,0xac,0xd6,0x8e,0x2a,0x75,0x0c,0x48,0x74,0xde,0x94,0x03,0xff,
- 0x90,0x24,0xed,0x6b,0xaf,0x2d,0x72,0x6f,0x22,0x82,0x42,0xdb,0x77,0x56,0xb4,0x6d,
- 0x2a,0x8d,0x95,0xde,0xa7,0xee,0x94,0xe5,0x01,0x92,0xc1,0xff,0x60,0xbe,0x4f,0x21,
- 0xbf,0x50,0xd9,0xc0,0x5b,0x8b,0x14,0x72,0x4b,0xec,0xbb,0xea,0x9c,0x90,0xab,0x9d,
- 0x94,0xd1,0x8d,0x50,0x15,0x92,0xdb,0xa9,0x8d,0xff,0x29,0xdf,0x65,0xcf,0x1e,0xce,
- 0x5d,0xea,0x56,0x4a,0xaf,0x87,0x8d,0xe4,0xab,0x9a,0xdc,0x4e,0x1e,0x81,0x8d,0x4a,
- 0xd5,0xd2,0xb6,0xa1,0x88,0x8d,0xff,0x29,0xcf,0xc8,0x5e,0x71,0x7c,0xfb,0x9a,0xda,
- 0xa0,0x7d,0x21,0x5a,0x35,0xa7,0xe2,0xe8,0xb2,0xa0,0x16,0xd8,0x26,0xae,0xb5,0xfc,
- 0xcf,0x6e,0x21,0x83,0xff,0xd9,0xca,0xf1,0x21,0x34,0x85,0xcc,0x2b,0xa1,0x05,0xd1,
- 0xce,0x74,0xfc,0xf5,0xa7,0xf3,0x5f,0x49,0x48,0x30,0x63,0x56,0xb7,0xa8,0x76,0x8c,
- 0x40,0x03,0x02,0xa1,0x1d,0x90,0x08,0x35,0x83,0x67,0x99,0xe8,0xca,0xc6,0x3f,0x0c,
- 0xed,0xc0,0x7d,0xa4,0x96,0xba,0x76,0x21,0xff,0x23,0x71,0xfe,0xc7,0x0f,0x27,0x85,
- 0x5a,0x06,0x84,0x5c,0xae,0x34,0xfe,0x31,0xf7,0x5f,0x18,0x9d,0x3b,0xf1,0x7b,0x59,
- 0x5c,0x58,0x0c,0x8f,0x53,0xff,0x18,0xfb,0x82,0x1e,0xc0,0x2b,0x63,0xfe,0x26,0xe2,
- 0xb2,0xfc,0x8f,0x85,0x7f,0xd6,0x93,0xe3,0xf4,0x11,0x98,0x3f,0xea,0x0a,0xb2,0x65,
- 0xb3,0x49,0x9e,0x37,0x24,0x87,0xc9,0xb5,0xf0,0x88,0xf4,0xf5,0x48,0xd1,0xfa,0x88,
- 0xdf,0x7a,0x3e,0xe2,0x1f,0x04,0x39,0xc5,0x0c,0xed,0x44,0x7e,0xc9,0xd0,0x88,0xbc,
- 0x56,0x9c,0x4d,0x7e,0x4c,0x97,0x24,0x6b,0xc7,0xc5,0x43,0x0c,0x7a,0xb4,0x24,0x3d,
- 0x27,0xc4,0x9a,0x34,0xff,0x73,0xad,0x81,0x7f,0xdc,0x71,0xf1,0xbd,0x18,0xdb,0xbd,
- 0x9e,0xf4,0xc6,0xdc,0xc3,0x70,0x17,0xec,0xb3,0xe2,0x3b,0xc5,0xfd,0x42,0xa9,0x39,
- 0x3f,0x88,0x7f,0x9e,0x43,0x90,0xd3,0x27,0x5e,0x51,0x5f,0x46,0xe3,0xa0,0xf8,0xd7,
- 0xd2,0x4b,0x91,0x7a,0x75,0xeb,0xf8,0xb4,0x17,0xe0,0x45,0x1a,0x4c,0xae,0x1c,0x11,
- 0x75,0x27,0xff,0xc3,0xf6,0x5f,0x25,0x77,0x95,0x5e,0xa1,0xff,0x82,0x8e,0x77,0x43,
- 0x61,0xe9,0xab,0x1b,0x63,0x95,0xeb,0xae,0xb9,0x8d,0xed,0xa7,0x36,0xed,0xae,0x1c,
- 0x95,0x6f,0x0f,0xd9,0xf2,0x5f,0x26,0xfe,0xc1,0x6d,0x1a,0xf2,0x5d,0xee,0x3a,0xe6,
- 0xa8,0x23,0x7e,0x55,0x66,0x78,0x69,0x0c,0x1e,0x08,0x56,0xe9,0xf2,0x5a,0x9a,0x89,
- 0x7f,0x02,0xc6,0xee,0xf5,0x61,0xa1,0x56,0xe7,0x1b,0x8d,0x08,0xdd,0xb9,0x94,0xc5,
- 0xaf,0x41,0x09,0xf5,0x1b,0xb2,0x3f,0x13,0xff,0x00,0x57,0x53,0x5c,0x82,0x17,0xd1,
- 0xf1,0x06,0xc5,0x75,0xd2,0x8b,0x50,0xd7,0xef,0x8d,0xce,0x18,0x85,0xa3,0x5a,0x9d,
- 0x16,0xe8,0x13,0xd3,0xef,0x63,0xc3,0x3f,0xa3,0xf0,0xa1,0xd0,0xdc,0xbf,0x8a,0x19,
- 0x84,0xc1,0x00,0xcc,0x18,0x8e,0x4a,0x13,0xb8,0x54,0x10,0xff,0x98,0xcf,0x37,0xf1,
- 0x4f,0x8a,0xff,0xa9,0xd7,0x4b,0xce,0x88,0xcf,0x46,0xde,0x82,0xfa,0x64,0xc9,0x07,
- 0xe2,0x62,0x18,0xac,0xa8,0x6f,0xf7,0xb4,0xdb,0xf8,0x9f,0x0e,0x33,0xff,0x65,0xa0,
- 0x97,0xab,0xf4,0xb6,0xdd,0x24,0x00,0x3d,0xaa,0x6f,0x58,0xc6,0x40,0xcc,0xde,0x1f,
- 0xd8,0x46,0x40,0x75,0xe0,0x1f,0xdb,0xfd,0x84,0x85,0x69,0xd7,0x6e,0xe6,0x91,0x7c,
- 0x14,0x89,0x6b,0x66,0xd4,0xe8,0xae,0x58,0x26,0xff,0x73,0x3d,0xc6,0xbb,0xc8,0x20,
- 0xdb,0xe6,0x57,0x33,0xb7,0x7c,0x9f,0x0c,0x1d,0x3e,0xf5,0x57,0x32,0xb8,0x02,0x6a,
- 0x27,0xec,0x4e,0xb8,0x54,0x1b,0xff,0xc3,0xf3,0x5f,0xc6,0x78,0x2f,0xc5,0x26,0xa0,
- 0x7e,0xa0,0x64,0x9f,0xfb,0x1f,0xf5,0x77,0xcb,0xea,0xb6,0x97,0xc4,0x45,0x95,0x32,
- 0x47,0xa4,0xb3,0x8d,0x2a,0x4d,0xe7,0xbf,0xae,0x66,0xf8,0x27,0xcc,0xc7,0x8b,0x1b,
- 0x73,0x44,0x3b,0xc2,0x65,0x98,0x08,0x3e,0x7b,0x82,0xcf,0xc0,0xc7,0xda,0xa2,0x21,
- 0x16,0xbf,0x9c,0xf9,0xaf,0xb7,0x0c,0x91,0xcf,0xb3,0x30,0x19,0xac,0x4f,0x78,0x12,
- 0xe2,0x28,0x4d,0xd0,0xd9,0xbf,0xf7,0xda,0xf0,0xb3,0x2d,0xff,0x55,0xc1,0xf0,0x8f,
- 0x8a,0x22,0x9f,0xdb,0x6b,0xe1,0xb9,0x3b,0x3f,0x7d,0x4a,0xee,0x0e,0xfd,0xab,0xde,
- 0x43,0x6b,0x13,0xee,0x9c,0xfc,0x0f,0xe2,0x9f,0xc7,0xe5,0xea,0x14,0xdf,0xa5,0xaa,
- 0x47,0x64,0x28,0x1d,0xac,0x8e,0x11,0x1e,0xf1,0xad,0xfd,0x85,0x23,0xff,0xc5,0x40,
- 0xe6,0x5c,0x9d,0xd3,0x6e,0xbd,0x92,0x5f,0xf7,0x77,0x91,0xd1,0xb2,0x9f,0xa6,0x67,
- 0x38,0xc5,0xff,0x58,0xeb,0x53,0xda,0x03,0xbf,0x63,0xb0,0xc4,0x1b,0x24,0xb8,0x90,
- 0x7c,0x3a,0xdb,0x76,0x8d,0x62,0x62,0x42,0xb7,0xef,0x17,0x6c,0xf9,0x2f,0x9e,0x0f,
- 0x3d,0xcc,0xd7,0x83,0xcc,0x03,0xfd,0x30,0x9b,0x96,0x37,0x8e,0x19,0x2b,0x44,0x4a,
- 0x2d,0x95,0x71,0xcd,0xbc,0x9f,0xe1,0x1f,0x40,0xd9,0xcf,0xd6,0x7d,0xfc,0x69,0x75,
- 0xfa,0xca,0x6d,0x30,0xea,0x49,0x68,0xb3,0xfb,0xed,0xcf,0xcf,0xc8,0x7f,0xc9,0x35,
- 0xba,0x7b,0x3f,0x7b,0xff,0xe7,0xa4,0x2a,0xdd,0x1f,0x0b,0x5d,0xe2,0x40,0xda,0xfe,
- 0xfe,0xb6,0xfc,0x97,0x89,0x7f,0xae,0x27,0x83,0x4a,0x3d,0xa8,0xfa,0x72,0x95,0xdd,
- 0x46,0xc1,0x39,0x3f,0x19,0xf8,0x27,0xca,0xf1,0x00,0x6e,0xac,0x76,0x8c,0xba,0x37,
- 0x84,0x4e,0x6b,0x5d,0xdd,0x5c,0xff,0x63,0xf1,0x21,0x19,0xfc,0x4f,0x8c,0xe3,0x9f,
- 0xc1,0xe8,0x87,0x50,0x97,0x2c,0xa9,0xfc,0xea,0x71,0xfd,0xf9,0x78,0xd3,0x08,0x5e,
- 0x81,0x0f,0xb3,0xf4,0x3f,0x88,0x7f,0x84,0x25,0xba,0xfb,0x1b,0xb8,0x7e,0xe4,0x96,
- 0x13,0x2b,0x3f,0x10,0x2f,0x1b,0xdf,0xd7,0x58,0x3e,0xfe,0x67,0x82,0xd6,0xf1,0xcf,
- 0x96,0x2d,0xbc,0xba,0xa1,0x4d,0xdb,0xd4,0xf7,0x18,0xca,0x61,0x33,0x66,0xdf,0xbf,
- 0x38,0xf0,0xcf,0x73,0x80,0x22,0x81,0xd2,0x59,0xd0,0xeb,0xaf,0x4c,0xc8,0xff,0xd3,
- 0x37,0x48,0xbb,0x54,0xee,0x51,0x6d,0xfc,0x8f,0xf9,0x7c,0x9d,0x05,0xd8,0x9f,0xd0,
- 0xca,0xe4,0x8a,0x0d,0xa5,0x3f,0x14,0x0e,0xd0,0xca,0x61,0xd7,0xea,0x9d,0xa7,0xdb,
- 0x37,0x75,0x59,0x19,0x31,0x34,0x42,0x8e,0xfc,0x17,0xc3,0x3f,0x31,0xe4,0xf3,0x91,
- 0x5f,0x55,0xfb,0xdb,0x1a,0xd0,0xb1,0x0b,0x1e,0xc7,0x7c,0xda,0xf3,0x5f,0x23,0xf0,
- 0x0e,0x03,0xb1,0x5e,0xd5,0x8b,0x40,0xa8,0xae,0x63,0xf6,0x2e,0x11,0x15,0x41,0xd7,
- 0x98,0x88,0xe8,0x6e,0x34,0xec,0xf8,0x87,0xc5,0x23,0x0d,0xe3,0x51,0x01,0xe6,0x83,
- 0x2e,0x41,0x49,0x97,0xa8,0xbb,0xc6,0x6f,0x6a,0x4e,0x23,0xa2,0x2c,0xfe,0xe7,0x6d,
- 0x16,0xe6,0xa6,0x7d,0x9f,0x85,0xc5,0x0f,0x18,0xfe,0x59,0xf9,0xd8,0x8c,0x35,0xd2,
- 0x51,0x32,0xdb,0xce,0x0f,0x38,0xf1,0x8f,0xcc,0xe3,0xef,0xf6,0xdb,0xab,0x39,0xed,
- 0xe3,0xaa,0x63,0x6e,0xe4,0xa7,0x61,0x2e,0x04,0xca,0xc5,0xff,0x48,0x16,0xff,0xb3,
- 0x86,0xdf,0xef,0x8f,0xfa,0xd6,0x40,0x0f,0x0d,0x20,0xfe,0xb1,0xe9,0x7f,0xcc,0x7f,
- 0x36,0xfc,0x23,0x61,0xb6,0x6b,0xb9,0x1c,0x2d,0x94,0x62,0x3b,0xd8,0x95,0x22,0x1b,
- 0x1f,0x72,0xc4,0xba,0x7f,0xb1,0x1c,0x86,0x8b,0x5c,0xdd,0x54,0x15,0x96,0xfa,0xd4,
- 0xb8,0xbc,0x92,0x8a,0x61,0x9a,0x30,0xf4,0x27,0x6c,0xbc,0x85,0x7c,0xbc,0xc7,0x89,
- 0x85,0x7f,0xae,0xdd,0x85,0xb2,0x1f,0x6d,0x55,0x74,0xc6,0x30,0xd7,0xff,0x18,0x40,
- 0x48,0x32,0x8c,0x1c,0xfc,0xcf,0xf4,0x61,0xe1,0xb2,0xa1,0x17,0xaa,0x86,0x0b,0x0b,
- 0x67,0x33,0xfc,0x26,0xfc,0x5e,0xba,0x20,0x34,0x6a,0x79,0xf8,0x9f,0x0a,0xc4,0x3f,
- 0x8d,0x0c,0xff,0xb8,0xc3,0xb0,0x38,0x58,0x5b,0x2a,0x53,0x72,0x46,0xef,0x43,0xb7,
- 0x9c,0x93,0xff,0xe1,0xf8,0x07,0xf9,0xae,0x20,0x59,0x06,0x7b,0xd5,0x75,0x2b,0x67,
- 0x2a,0xa5,0x03,0xd1,0x83,0x10,0x58,0x2e,0xdb,0xc7,0x6b,0xcf,0x7f,0xb1,0x8f,0xb4,
- 0x86,0xcf,0x27,0xe6,0x1f,0xb5,0x22,0x06,0x44,0xe1,0xa0,0xef,0x0b,0x9a,0x2b,0x3d,
- 0x9f,0xa5,0x2f,0x38,0xf2,0x5f,0x07,0x0d,0xfd,0x0f,0x7b,0x7f,0xd2,0xbc,0xf4,0x1f,
- 0xf0,0xb5,0x3f,0xf8,0x5a,0xf3,0x52,0xfe,0xfe,0x37,0x40,0x86,0xfe,0xe7,0x49,0x65,
- 0x97,0x4d,0xf6,0x43,0xac,0xfc,0x57,0x9d,0x83,0xff,0x79,0x87,0x9a,0xcf,0x37,0xf0,
- 0x4f,0x9d,0xc1,0xbf,0xa1,0xd1,0xd6,0xd1,0x99,0x54,0x4e,0x68,0xcd,0x4e,0xfe,0xc7,
- 0x91,0xff,0x3a,0x8b,0x22,0x9f,0xdf,0x87,0xfc,0xd2,0x21,0xa1,0x81,0xca,0x7b,0xc8,
- 0x88,0x7c,0x1f,0xd4,0x76,0x20,0xff,0xe3,0x49,0x41,0xa3,0x84,0x62,0xfa,0x07,0xcc,
- 0x7f,0xed,0x88,0xa9,0xfa,0x4c,0x70,0xe1,0xc6,0x7c,0x2e,0x03,0x42,0x85,0x2c,0x70,
- 0x33,0x37,0xe5,0xe0,0x7f,0x54,0x7b,0xfe,0xeb,0x29,0x9d,0x7d,0xbf,0xed,0x84,0x01,
- 0x21,0x5a,0x8d,0xb4,0xcf,0x69,0x0e,0x0c,0x8a,0xd6,0x17,0x5a,0xdf,0xaf,0x33,0xff,
- 0x75,0x89,0xee,0x4d,0x7a,0xdb,0xc4,0xd9,0x0c,0x78,0x7c,0xe6,0xdc,0xe7,0x37,0x54,
- 0x4d,0x4a,0xff,0x8c,0xb0,0xc7,0xc6,0xff,0x38,0xf3,0x5f,0x3c,0x89,0xa3,0xa0,0xf7,
- 0x58,0xd3,0x3c,0xe4,0xda,0xdf,0x39,0xaa,0x5e,0x5c,0xdb,0xfc,0xcf,0x0e,0xfe,0xc7,
- 0xf2,0x3f,0x5a,0xc1,0x15,0xed,0x23,0x8c,0x5f,0x4f,0x88,0x77,0x6b,0x93,0x83,0x75,
- 0xc3,0x9e,0x27,0xd8,0xf8,0x5f,0xa6,0xf5,0x63,0xd3,0xc6,0xc5,0xb3,0x30,0x11,0x6d,
- 0x4e,0x7a,0x2f,0x64,0xe4,0xbf,0xf6,0xa1,0x48,0xe9,0xff,0x16,0x4f,0xd3,0xe7,0x40,
- 0x4d,0xba,0xfe,0x9a,0x9c,0xd6,0xb7,0xd2,0x79,0x23,0xec,0xb5,0x4f,0x1b,0x5b,0x4b,
- 0x3b,0xff,0x43,0xe1,0x31,0xa9,0x01,0xfd,0x55,0x88,0xa0,0xf0,0x49,0xd5,0xe5,0x10,
- 0x39,0xa5,0xfc,0xa3,0xa7,0x12,0x89,0xa0,0x53,0x0a,0x8e,0x77,0xc5,0xfa,0x50,0xd2,
- 0xf2,0x3f,0x61,0x86,0x7f,0xf6,0xb1,0xdb,0xdc,0xc0,0x60,0xd2,0x61,0x08,0xeb,0xae,
- 0x22,0x36,0x9f,0x3b,0xfb,0xd7,0x72,0xff,0xa3,0xa4,0xe6,0x33,0x9d,0xff,0xf2,0x33,
- 0xfc,0x13,0x67,0x61,0xcb,0x0b,0xcc,0x7f,0x72,0xda,0x67,0x1b,0x73,0xb3,0x4f,0x3e,
- 0x5c,0xe5,0x88,0x5f,0xc7,0x1c,0xf8,0xe7,0x22,0x5e,0xec,0x9a,0x81,0xbf,0x5e,0xd1,
- 0x57,0x6d,0x7b,0x78,0x94,0xbc,0x66,0xe7,0x7f,0xae,0xcb,0xc4,0x3f,0x97,0xb4,0x7a,
- 0xdd,0x3b,0x88,0x7a,0x06,0xb2,0xb0,0xdf,0x93,0x14,0x07,0xe5,0x53,0xb0,0x28,0xed,
- 0xcf,0x57,0x21,0xff,0x63,0xe5,0xbf,0x18,0xfe,0x39,0x84,0xf9,0x97,0x2d,0xbe,0x00,
- 0xa7,0x7d,0xe4,0x1f,0x95,0x8e,0x42,0x77,0xdb,0x1d,0xce,0xf8,0xeb,0xc8,0x7f,0x7d,
- 0x1f,0xef,0xa7,0x91,0x3d,0xc6,0xfd,0xdb,0xd8,0x6d,0xdf,0x2f,0xab,0x71,0xdc,0x6f,
- 0xe3,0x7f,0xc0,0x03,0xfb,0xc2,0x6c,0x7e,0x08,0xf1,0x50,0xe6,0x9f,0x07,0xe5,0x52,
- 0x32,0xa8,0x76,0xc8,0x5c,0x0f,0xcc,0x10,0x91,0x6a,0xe0,0x81,0x02,0x73,0x3d,0x80,
- 0xbc,0xae,0xe8,0xe4,0xda,0x3a,0x44,0x77,0x7b,0xba,0x26,0xa1,0xf7,0xd8,0x96,0x48,
- 0xe7,0xa5,0xb6,0x13,0xed,0xf5,0x27,0x71,0xbc,0x74,0xc2,0x6f,0xc4,0x77,0x07,0xff,
- 0x73,0x51,0x65,0x41,0x6a,0xa9,0x38,0xaa,0x4d,0x92,0x96,0xc4,0x02,0x9d,0x0d,0x73,
- 0x5c,0x68,0xc6,0xb4,0xd7,0x25,0x0d,0x15,0x1d,0xc8,0xff,0x48,0x69,0xbc,0x71,0x05,
- 0x26,0xba,0x38,0xc8,0x39,0x2b,0xbd,0x51,0x59,0x3f,0xc8,0x56,0xcb,0x1b,0x65,0xbf,
- 0xeb,0xa8,0xfb,0x45,0xe0,0x23,0xb1,0x09,0x5e,0x4e,0xe1,0x9f,0x34,0x3e,0xb1,0xf1,
- 0x3f,0xf0,0x3f,0xa2,0x9f,0x7e,0xc9,0xbd,0x8f,0x8c,0xd2,0x9e,0x6a,0x5f,0x87,0xeb,
- 0x63,0xd2,0x14,0xe3,0x40,0x25,0x3b,0xff,0x95,0x8a,0xe6,0x0f,0x83,0x3f,0xd1,0x1a,
- 0xf4,0xb1,0xfd,0xb8,0xac,0x76,0xcb,0x75,0xc4,0xd3,0xf5,0xb8,0x89,0x7f,0xcc,0xbf,
- 0xaf,0x8d,0xff,0x19,0x55,0x7e,0x8a,0x69,0xc4,0x78,0x68,0x54,0xe9,0x81,0x18,0xca,
- 0x84,0x02,0xf0,0x53,0xc8,0xc8,0x7f,0xe9,0xe5,0xa3,0x8a,0x85,0x87,0x5f,0x97,0x1a,
- 0x91,0xf6,0x19,0x85,0x33,0xd1,0x73,0x9a,0x27,0x2e,0x06,0x0c,0xe9,0x0e,0xea,0x9f,
- 0xd3,0xfb,0x97,0x67,0xe4,0xe7,0xd2,0x78,0x78,0x01,0xfe,0xf5,0x2f,0xc1,0x65,0xda,
- 0xa2,0xda,0xe3,0xbb,0x3d,0xff,0xb5,0x47,0xb6,0xf8,0xc6,0x5f,0x33,0x58,0xb5,0x05,
- 0x8d,0xa3,0x72,0x03,0x61,0xcf,0xf7,0x68,0x2f,0x42,0xf3,0x60,0x49,0x3c,0x07,0xff,
- 0x53,0x14,0x67,0x0b,0x75,0x2b,0x4f,0x7b,0xb1,0xff,0x67,0xb3,0xea,0x6b,0xab,0x18,
- 0xeb,0xfc,0xdf,0xf2,0x8b,0xe8,0x58,0xe2,0xb9,0xf9,0x9f,0x2d,0x5c,0x26,0x27,0x23,
- 0x90,0xeb,0x80,0xea,0x76,0xb9,0x29,0xf2,0x80,0x8f,0x5d,0x19,0x72,0xd9,0xf1,0xcf,
- 0x78,0x2a,0xff,0x85,0xd9,0x1f,0xfa,0x08,0x9d,0x3f,0x22,0x6f,0x28,0x7c,0x96,0x6e,
- 0x8d,0xdc,0xe6,0x97,0x11,0x0f,0x6c,0x8a,0xcd,0x1f,0x81,0x0c,0xfc,0x23,0x7d,0x48,
- 0xbf,0xd3,0xef,0x5d,0x22,0xfe,0x8c,0xbd,0xff,0x1d,0x49,0xf9,0xb0,0xf8,0x00,0x7d,
- 0x9e,0x36,0x04,0xda,0xe3,0x78,0x85,0xf9,0x87,0x12,0x07,0xfe,0xf9,0x7b,0x83,0xff,
- 0xb9,0x1f,0x67,0xe3,0x7d,0xf9,0xee,0x17,0xd8,0x6c,0x7c,0x27,0x34,0xa9,0xb4,0x2c,
- 0x65,0xc6,0xdd,0x39,0xf0,0x8f,0x60,0xdb,0x8f,0x30,0x98,0xc4,0x69,0x6a,0xf1,0x45,
- 0xa9,0x4e,0x5f,0xb5,0xbf,0x73,0xbe,0xce,0xa5,0xd1,0x7d,0x6e,0x57,0x3a,0xff,0xf5,
- 0xa0,0xa9,0xff,0x41,0xb4,0xe3,0x9f,0x3f,0xc0,0x69,0xf3,0x8d,0xd0,0x41,0x19,0x02,
- 0x9c,0xed,0xdb,0x64,0xfc,0xb4,0xcf,0x91,0xff,0x32,0x40,0x0e,0xe7,0xbb,0x02,0x23,
- 0xae,0x0d,0xe4,0x0a,0x7c,0x37,0x52,0x19,0x9b,0x79,0x17,0xf9,0x21,0x45,0x05,0xd4,
- 0x8a,0x0d,0x21,0xc8,0xd6,0xff,0xb0,0xf5,0x26,0xf7,0x9a,0x34,0xfe,0xa3,0x82,0x3a,
- 0xe0,0x0e,0xba,0xb6,0x30,0x20,0xca,0x7f,0x7a,0xc8,0xaa,0x17,0x48,0x96,0x67,0xf0,
- 0x3f,0x5e,0x83,0xff,0xe9,0xdd,0xc1,0x8c,0xdd,0x86,0x34,0x3a,0x26,0x2e,0x96,0xac,
- 0xf9,0x84,0xa4,0x60,0xea,0x51,0x53,0xd1,0x67,0xc6,0x19,0x69,0xc4,0x7e,0x65,0x6b,
- 0x76,0xfe,0x8b,0x27,0x41,0x0c,0x83,0x85,0x45,0x54,0x44,0xf7,0x69,0x7b,0x50,0x08,
- 0x7d,0x54,0xd9,0xa7,0x95,0x64,0xe0,0x1f,0x9e,0x2f,0x4b,0xf1,0x0f,0x77,0x20,0xec,
- 0xa9,0x76,0x15,0xa1,0xfe,0x27,0x3a,0x63,0x0d,0x6c,0xa6,0x3c,0x23,0xe6,0xcc,0x7f,
- 0x3d,0x9a,0xc6,0x3f,0x01,0x54,0xa7,0x74,0xa9,0x9b,0x29,0x97,0xa9,0x48,0xb0,0x59,
- 0x08,0x63,0xe0,0x76,0xf2,0x3f,0x3b,0x52,0x6a,0x67,0x04,0x06,0xcb,0x8b,0xf0,0xb6,
- 0x0e,0x5a,0xbd,0x42,0x2e,0x3d,0xb2,0x2c,0xd6,0x09,0x19,0xfa,0x1f,0xe4,0x7f,0xb6,
- 0xf3,0xd1,0xb1,0xff,0xd1,0x71,0xb5,0x56,0x66,0x61,0x37,0x06,0xba,0xd8,0x28,0xcb,
- 0x11,0x11,0x22,0x6d,0x2c,0x22,0x97,0x60,0xfe,0xcb,0x7c,0x9f,0x13,0xd7,0xda,0xf9,
- 0x1f,0x84,0x3d,0x0f,0x75,0xbe,0x1a,0xbb,0x5c,0xb3,0x88,0x19,0x8f,0x23,0xff,0x33,
- 0x7b,0xf9,0x34,0xa5,0x35,0x37,0xff,0x03,0x47,0x3d,0x35,0xa1,0x92,0x07,0x99,0xf1,
- 0x22,0xdb,0xf6,0x7a,0xbe,0x27,0xee,0xa2,0x2f,0x91,0x16,0x84,0x46,0x2f,0x94,0x9a,
- 0xdf,0xfb,0x06,0x8b,0xff,0x61,0xaf,0xd1,0x0d,0xbe,0x0a,0x86,0x7f,0xf4,0x0e,0x0a,
- 0x3e,0xb9,0x7b,0x93,0x6b,0x21,0xed,0x66,0x6f,0xe8,0xd0,0x3f,0x1b,0xfc,0x8f,0x31,
- 0xde,0x9d,0x1d,0xe0,0x0f,0xb9,0x4a,0xc9,0xab,0xfe,0x8d,0x52,0xe5,0xcd,0x72,0x3b,
- 0x29,0x47,0xc7,0x1b,0x72,0xe6,0xbf,0xd2,0xfc,0x4f,0x17,0xe7,0xd3,0xe4,0x68,0x68,
- 0x80,0xdc,0xaf,0x54,0x69,0xf2,0x10,0xb9,0x9e,0x5d,0xe1,0x54,0xdb,0x9b,0xb9,0xf9,
- 0x9f,0xa3,0x04,0x65,0x3c,0x22,0x12,0x71,0xfb,0xda,0x02,0xd1,0x19,0xbb,0x08,0x4a,
- 0xdf,0xa7,0xd9,0xf1,0xcf,0x88,0x50,0x9d,0xbe,0xff,0x1b,0x02,0x02,0x45,0x71,0x98,
- 0xf0,0x8c,0xa1,0x22,0x0e,0x4c,0x37,0x7e,0xaa,0xba,0x98,0x83,0xff,0xf9,0x22,0xa2,
- 0x9d,0x06,0xb8,0x9f,0xb6,0x8e,0xc1,0x29,0xa8,0x57,0x3c,0xba,0x38,0x56,0xc1,0x80,
- 0x68,0x61,0xee,0xfc,0x17,0xf2,0x3f,0x87,0xb8,0xec,0xa7,0x74,0x84,0xeb,0x7f,0x3e,
- 0xbf,0x33,0x34,0xa2,0x3d,0x00,0x0b,0xe2,0xee,0xa4,0x3d,0xff,0x95,0xf6,0x3f,0xf8,
- 0xe1,0x54,0xf7,0x73,0x22,0xe8,0xb0,0x54,0xf3,0x4a,0x22,0xe8,0xdb,0xcc,0x19,0xa1,
- 0x99,0x6a,0xae,0xfc,0x17,0xfb,0x6c,0xe9,0x22,0x98,0x93,0x68,0xfb,0x46,0xe9,0x10,
- 0xec,0x12,0xe6,0x41,0x91,0x56,0xf8,0x2a,0x2a,0x82,0xc0,0x1d,0xb6,0xe7,0xbf,0xba,
- 0x67,0x9b,0x20,0xe7,0x0d,0xb5,0x97,0x2e,0x4a,0x16,0x7f,0xbb,0xea,0x24,0x9c,0xa7,
- 0x4b,0x10,0xff,0x5c,0x24,0xcb,0xf0,0xa7,0xb5,0xe2,0x3b,0xaa,0x95,0xff,0xba,0xd6,
- 0xd2,0xff,0xbc,0x47,0xd9,0xc6,0xf3,0xc4,0xaa,0x7d,0xe2,0xb0,0xfc,0x3a,0x3c,0x8d,
- 0xdf,0xd7,0xef,0x83,0xe3,0x86,0x14,0xff,0x48,0x97,0x39,0x3f,0xb0,0xf1,0x8a,0x92,
- 0xda,0xa4,0xb3,0xdd,0x7a,0x67,0xfd,0x47,0x2c,0x7e,0x9d,0x85,0x17,0x69,0xdd,0x8f,
- 0x3c,0x27,0x30,0xe3,0x83,0x8e,0x7d,0xad,0x08,0xd4,0x91,0xff,0x8a,0xb1,0xf7,0x0f,
- 0xc2,0x29,0xed,0x2d,0x68,0x1a,0x91,0x83,0xa5,0xbf,0x7d,0xa5,0x6b,0xd7,0xbc,0xb5,
- 0x25,0x49,0x17,0xf0,0xf1,0xb2,0xf7,0xaf,0x59,0x66,0x3d,0x1f,0xf9,0x9f,0xf4,0xee,
- 0x4c,0xd5,0x5d,0xeb,0xaf,0x3a,0xf1,0x50,0x97,0xfa,0x75,0xca,0x11,0x60,0x97,0x31,
- 0x5e,0xc8,0xe4,0x7f,0x52,0xf3,0x29,0x05,0xfa,0x2b,0x82,0xec,0x43,0xee,0x24,0x81,
- 0x76,0x97,0x5a,0xaa,0x1a,0x1b,0x5b,0x95,0xc8,0x36,0xfe,0x27,0x60,0xf1,0x1b,0xcc,
- 0xb8,0x53,0x3f,0x3e,0x26,0x0e,0x17,0xbe,0x48,0x9b,0xb5,0xad,0x31,0x51,0x25,0x09,
- 0x43,0xcf,0x53,0x93,0x2b,0xff,0x35,0xca,0xa2,0xdb,0x5d,0x7a,0x09,0xe6,0xbf,0x46,
- 0x94,0xd5,0x11,0xef,0x36,0x71,0x54,0xe1,0x5b,0xb3,0x58,0x8e,0xfc,0x57,0x6a,0xbf,
- 0x7f,0x03,0x73,0xec,0x33,0x30,0xd1,0x57,0xa5,0xed,0x49,0xce,0x58,0x0f,0xef,0xd3,
- 0x5e,0x94,0x46,0x3b,0xf2,0x5f,0xa9,0xf8,0x65,0xa0,0x97,0x7e,0x16,0xad,0x9a,0x94,
- 0x4d,0xf0,0x78,0x57,0xc5,0x90,0xab,0x29,0xd4,0xa3,0xf9,0x80,0x2d,0xad,0x64,0x2e,
- 0xfe,0xc7,0x08,0xdc,0x6c,0xfd,0xac,0xd1,0x7a,0xa4,0xe5,0xcc,0xd3,0x90,0x6a,0x39,
- 0x16,0xf6,0xc1,0xcc,0x58,0x66,0xfe,0x2b,0x68,0xf0,0x8d,0x5a,0x3d,0x04,0x8e,0xb0,
- 0xf9,0x91,0x0b,0xba,0x55,0x75,0x80,0x39,0x6a,0x59,0xa3,0x08,0x1d,0x55,0xdb,0xfe,
- 0x0b,0x3c,0x29,0xfd,0xcf,0x5e,0xf1,0xe7,0x6c,0xe0,0x4b,0x4e,0x15,0x9f,0x17,0x6f,
- 0xeb,0xd6,0x2b,0x16,0x5f,0x23,0x53,0x71,0x19,0xbc,0xab,0xd4,0x95,0xb1,0x89,0xd2,
- 0x2d,0xff,0x13,0x2b,0x66,0xf1,0x4b,0x69,0xd1,0x8b,0xcf,0xf1,0x68,0xce,0xfe,0x8b,
- 0xe7,0x22,0x97,0x7e,0x6b,0xcc,0xc0,0x8c,0x71,0x83,0x11,0x4a,0x8a,0x23,0xd3,0xec,
- 0xf8,0xe7,0x32,0x5b,0x96,0xde,0x0a,0xf1,0x9b,0xca,0x79,0xda,0xb0,0xcb,0x73,0x4e,
- 0x5c,0x47,0x51,0xf6,0x53,0xc2,0xf1,0x33,0x6d,0xce,0xe0,0x7f,0x18,0xfe,0x79,0x9b,
- 0x72,0xfd,0x8f,0x0f,0x46,0x3a,0x7c,0xdd,0xf2,0x07,0xad,0x77,0xa3,0x10,0x5a,0xcf,
- 0xcf,0xff,0x1c,0x24,0x9c,0xff,0xd1,0x98,0xe3,0x0a,0x74,0xbb,0x82,0x37,0x7b,0xda,
- 0x19,0xec,0x79,0x7e,0x66,0x6e,0xfe,0x87,0xe1,0x9f,0x83,0x0a,0xd7,0xff,0xdc,0x06,
- 0x7d,0xb4,0x66,0xa7,0x2b,0x4e,0xd6,0x65,0xf1,0x27,0x63,0x8e,0xfc,0xd7,0x87,0xc8,
- 0xff,0x6c,0x17,0xc3,0x10,0x8f,0x35,0xc7,0x6b,0x4d,0xd8,0x53,0x62,0xc3,0xcf,0x43,
- 0x8e,0xfc,0x17,0x1b,0x9d,0xce,0x9c,0xea,0x5e,0xb6,0x94,0x50,0x06,0x2f,0x9e,0x72,
- 0x28,0xc4,0x38,0xff,0x63,0xcf,0x7f,0xc1,0x44,0x8c,0x3f,0xe4,0x71,0x38,0x01,0x88,
- 0xaf,0x66,0x04,0x94,0x17,0xed,0x78,0x3b,0x53,0xff,0x23,0xf1,0x97,0x54,0x68,0x2d,
- 0xf3,0xcf,0x44,0xef,0x1c,0x23,0x4d,0x24,0x9b,0xff,0x31,0xd7,0x03,0xe2,0x9f,0x07,
- 0x31,0xe9,0x39,0x2b,0x42,0x69,0x14,0x5c,0xe0,0x46,0x9a,0x91,0xbb,0x9d,0xbc,0xfc,
- 0xcf,0x53,0x5c,0xff,0x1c,0x2a,0x85,0x2d,0xb4,0x32,0xd9,0xb3,0xb8,0xb0,0x64,0xe9,
- 0x26,0x43,0xf6,0x73,0x9a,0xe6,0xd4,0xff,0xfc,0xca,0xd0,0xff,0x44,0x60,0x08,0x16,
- 0xaf,0xf5,0x06,0x5b,0x4b,0xb4,0xe7,0x29,0xe7,0x7f,0x8e,0xd3,0x0f,0x0d,0xc3,0xc9,
- 0xff,0x5c,0x36,0xf4,0xcf,0x43,0xda,0x28,0x2c,0x19,0x58,0x35,0xe6,0xfe,0x39,0x4c,
- 0x2a,0xcd,0x53,0xe8,0x7f,0x78,0xfe,0x51,0x11,0x7d,0x32,0x43,0x0b,0xaa,0xa7,0xb7,
- 0xf5,0xbd,0xf6,0xd7,0xd9,0x95,0xad,0x71,0xf1,0x38,0x3c,0x4f,0x83,0xc9,0xdc,0xfa,
- 0xe7,0xf6,0x4f,0x2b,0xca,0xbd,0xb0,0x40,0x93,0xef,0x64,0xc3,0x44,0xd8,0x23,0xae,
- 0x87,0x53,0x64,0x13,0xdb,0x6a,0xf9,0x33,0xf5,0xcf,0x4f,0xd1,0xaf,0x27,0x8b,0x4e,
- 0x90,0x5e,0xd4,0x7b,0x87,0x8b,0x18,0x10,0x42,0xe0,0xc7,0xf9,0x9f,0xe9,0x9b,0x72,
- 0xeb,0x9f,0xd7,0xe1,0xfe,0x2b,0xa2,0x46,0x92,0x81,0xf0,0xe7,0x38,0xb1,0x6f,0xf2,
- 0x8d,0x9d,0x86,0x10,0xe8,0x15,0xc9,0xfc,0x5e,0x4c,0xfd,0x73,0xf1,0xef,0xc5,0x83,
- 0xf2,0xf1,0x58,0xcb,0x43,0xc5,0x0c,0xff,0x28,0x27,0x4d,0x20,0x74,0x8c,0x6d,0x16,
- 0xb9,0xfe,0xd9,0x9a,0x4f,0xcc,0x7f,0x2d,0x6d,0x66,0xf1,0x57,0x50,0xd9,0x9f,0xa5,
- 0x99,0x94,0x18,0xdb,0xf0,0xbb,0x53,0x08,0x21,0xa7,0xfe,0x47,0xc5,0xfa,0xaf,0x19,
- 0xc3,0x6c,0xe3,0x3f,0x1b,0x89,0x02,0x09,0xde,0x16,0x1a,0x58,0x98,0x9b,0x91,0x9b,
- 0xff,0x81,0x83,0x2a,0x8b,0xbf,0x4a,0x64,0x8e,0xc9,0x36,0xec,0x82,0xcd,0x19,0xf5,
- 0x5c,0x39,0xf4,0x3f,0x71,0x62,0x05,0x6e,0x53,0x11,0x9d,0xab,0xfe,0xcb,0xe2,0x7f,
- 0xa2,0x6c,0x99,0xa5,0x84,0xd0,0x5d,0xb1,0x0e,0x0b,0x11,0x65,0xd6,0x7f,0x71,0xfd,
- 0x8f,0x31,0xa8,0x54,0x20,0x8e,0x88,0x2a,0xc5,0xfc,0x8b,0x9d,0xef,0x3a,0xee,0xd0,
- 0xff,0x70,0x3e,0x67,0x4c,0x7c,0x15,0x17,0x12,0xcf,0x7f,0x49,0x17,0x84,0xe6,0xe5,
- 0xab,0x0c,0x7e,0x63,0x36,0xe2,0x01,0x1b,0xff,0x23,0x0c,0xb3,0x6d,0x69,0x09,0x03,
- 0x39,0xd3,0xf6,0xc3,0x99,0x02,0xa4,0x4d,0x3a,0x39,0x42,0x68,0xe7,0xf5,0x62,0x97,
- 0x51,0x1a,0x1d,0xb5,0xe1,0x1f,0xcc,0x7f,0x2d,0x36,0xf0,0x8f,0xca,0x81,0x90,0xe7,
- 0xde,0x08,0x37,0x10,0xf6,0xe4,0xa8,0xff,0x62,0xf8,0x47,0x5a,0x68,0x54,0x6f,0x75,
- 0xc1,0x0e,0x21,0xb0,0x7c,0xa6,0x42,0x0a,0x14,0x36,0xcc,0x36,0x77,0x6e,0xfe,0x07,
- 0xf1,0x4f,0x29,0xd7,0xff,0xec,0xd2,0x0e,0x6a,0x48,0xa3,0xb9,0x72,0xd4,0xd3,0x65,
- 0xe1,0x9f,0x92,0x32,0xf2,0xe3,0xae,0xb7,0xa1,0x19,0xd3,0x58,0xd5,0xce,0x0c,0x97,
- 0x83,0xff,0xb1,0xf2,0x5f,0xdb,0xc5,0xb9,0xdc,0xf8,0x27,0x25,0x35,0x2d,0xb6,0xfb,
- 0xab,0x1c,0xf9,0x2f,0x13,0x6f,0x9f,0x81,0x11,0xad,0x8e,0x45,0xf4,0xf4,0xb4,0xe7,
- 0xd1,0xff,0x3c,0x8b,0xf8,0xe7,0x1d,0xf6,0xac,0xfb,0xe0,0x2a,0x5a,0xc2,0x81,0x90,
- 0x64,0x21,0xa2,0x4c,0xfd,0x0f,0xe2,0x1f,0x63,0xd3,0x3d,0x48,0x1f,0x07,0xb5,0xbf,
- 0x35,0x18,0xb2,0x47,0x70,0x53,0xff,0x63,0xcf,0x7f,0x3d,0xc5,0xf1,0x4f,0xe1,0x2b,
- 0x0c,0xe9,0xcf,0x19,0x70,0x7d,0x93,0x03,0x83,0xe2,0x01,0xb7,0x43,0xff,0x63,0x3e,
- 0xdf,0xd0,0xff,0xdc,0x98,0x5c,0xb5,0xa1,0xf5,0xa4,0xf2,0x16,0x5d,0x38,0xe2,0xbd,
- 0x1b,0x69,0x9f,0x8e,0x6b,0x47,0xbc,0x76,0xfd,0x8f,0xb9,0xdc,0x38,0xfe,0xb9,0x90,
- 0x22,0xed,0xd1,0xb1,0x0c,0x79,0x9f,0xee,0x64,0x1e,0x46,0x6a,0x3e,0xe9,0xe0,0x7f,
- 0xd2,0xfc,0x3f,0xd7,0x3f,0x73,0xd9,0x4f,0x23,0x4c,0xd2,0xba,0xf3,0x25,0xe3,0xad,
- 0xcd,0x58,0xf6,0xe5,0xd4,0xff,0x38,0xf8,0x9f,0x33,0x49,0xf6,0x92,0xff,0xb3,0x90,
- 0xaa,0x07,0xe0,0x33,0x23,0xf2,0x7a,0xf1,0x2b,0xd0,0x1b,0x5f,0x87,0xfa,0x1f,0xeb,
- 0xfd,0x9d,0xf9,0xaf,0xa7,0xe5,0x79,0xba,0x6b,0x8c,0xac,0xd6,0x9e,0x83,0xaa,0x01,
- 0x76,0xdb,0xad,0x14,0x6f,0xab,0x30,0xee,0x67,0x3f,0x65,0xea,0x7f,0xf6,0xa2,0xb7,
- 0x69,0xf2,0xf5,0x43,0xaf,0x16,0x48,0xb6,0x05,0xc9,0x4a,0xa1,0x17,0x2b,0xa4,0x6c,
- 0xf3,0xe9,0xcc,0x7f,0x7d,0xc8,0xc2,0x4a,0x49,0xac,0xf3,0x76,0x38,0xac,0x54,0x8d,
- 0x95,0x8c,0x89,0xeb,0x14,0xdc,0x81,0xca,0x6c,0xbc,0x05,0x13,0x42,0x23,0x06,0x32,
- 0x67,0xfe,0xeb,0x6d,0x64,0xe3,0xf7,0xcd,0x88,0x31,0x7c,0xd8,0x30,0xc8,0xbc,0xb7,
- 0x7d,0x07,0x6a,0x14,0x82,0x39,0xf9,0x9f,0xcb,0x50,0xdf,0xcf,0xbe,0xc7,0x20,0xf3,
- 0xde,0x4b,0xf4,0x82,0xb1,0xaa,0x26,0xb8,0x87,0x05,0x3e,0x4b,0xff,0x53,0x6c,0xe7,
- 0x7f,0x30,0xff,0xf5,0x28,0x65,0xf1,0xb7,0x89,0x3c,0xae,0xbe,0xcb,0xf5,0x3f,0x21,
- 0xac,0xf0,0x9a,0x9b,0xd2,0xff,0x64,0xd5,0x7f,0x09,0x0c,0xff,0x74,0xf9,0xb0,0x5e,
- 0xcc,0xc7,0x65,0x63,0xae,0xb8,0x0b,0x11,0xd1,0x1d,0x53,0xe8,0x7f,0x1e,0x54,0x63,
- 0x7a,0x4f,0x3c,0x44,0x71,0x36,0x8e,0xb0,0xd9,0x28,0xde,0xd8,0x5b,0x57,0xfd,0x4a,
- 0x91,0x03,0x0f,0x58,0xd3,0x5f,0xbc,0x8e,0xe1,0x01,0x5e,0xc4,0xad,0xb6,0x1d,0x86,
- 0x96,0x81,0x92,0xf5,0x62,0x20,0x36,0xe1,0xf9,0xcc,0xd1,0x59,0x0c,0x21,0xe3,0x8e,
- 0x1b,0x2b,0x94,0x6d,0xf5,0x5f,0xd7,0x5e,0x82,0x7f,0xc5,0xfc,0x57,0x7b,0xe7,0x58,
- 0xf7,0x5b,0xe4,0x7f,0x27,0x8a,0x51,0xc8,0xc1,0x0b,0x09,0xd9,0x78,0xf7,0x4c,0xa6,
- 0xf4,0xcf,0x0e,0xfd,0xcf,0x84,0xb1,0x48,0xd8,0xee,0x9e,0x36,0x25,0xff,0x71,0x4c,
- 0x6c,0x8a,0x4d,0xd2,0xeb,0x38,0xa2,0xd6,0x26,0x81,0x21,0xf6,0x4c,0xfc,0x73,0x38,
- 0x52,0x9b,0xec,0xe9,0x13,0x7f,0xc6,0x06,0xde,0x98,0x94,0x2f,0x91,0x16,0xdc,0x96,
- 0x26,0x57,0xf4,0x91,0x61,0x7a,0x50,0xf6,0x1d,0x71,0x65,0xe2,0x1f,0x1c,0x94,0xc8,
- 0x47,0x27,0x32,0x3c,0xb9,0x10,0xf5,0x18,0xc0,0x11,0xd1,0xe0,0x74,0xf6,0xe9,0x25,
- 0x8a,0x32,0xf1,0x8f,0x0d,0x4f,0xd6,0xe8,0x10,0x0f,0xed,0x61,0xfe,0xbf,0xa6,0xbb,
- 0x07,0xfd,0xcf,0x42,0x94,0x76,0x64,0xe2,0x9f,0x54,0xfe,0x74,0x1d,0xd7,0x83,0x79,
- 0x90,0x9f,0xf9,0x9d,0x81,0x58,0x86,0xe5,0xf1,0x30,0x4a,0x83,0xa6,0x0d,0xe5,0xd0,
- 0xff,0x90,0x4b,0xbc,0xfa,0xef,0x67,0x63,0xe2,0x77,0xe0,0x3d,0xbd,0x3e,0xc9,0xa6,
- 0xe5,0x3c,0x5c,0x61,0x0b,0xa3,0x04,0x81,0xa2,0xf9,0x7c,0x23,0xff,0x95,0x46,0x3b,
- 0x03,0xec,0xf9,0x83,0xbc,0xac,0x7e,0x15,0x7b,0x3e,0xfa,0x1f,0x3d,0x9b,0xff,0x11,
- 0x6c,0x68,0x87,0x45,0xe7,0x4b,0x70,0x90,0xd6,0x50,0xf7,0x77,0xd9,0xfb,0x1f,0xca,
- 0xcd,0xff,0x54,0x5b,0xde,0x26,0xe9,0xba,0x01,0x8d,0xb6,0x6a,0x84,0xc1,0x48,0xa5,
- 0x06,0x74,0x57,0x56,0xfe,0x2b,0x66,0x65,0x7f,0x16,0x20,0x1f,0x72,0x1a,0x0e,0x3d,
- 0x34,0x6f,0x64,0xc5,0x06,0xf2,0x2a,0xec,0xef,0xe0,0x42,0xe8,0xcc,0xfc,0x17,0x4f,
- 0x72,0x0d,0xc2,0x87,0xca,0x77,0x46,0x4a,0xea,0xaa,0x18,0xec,0xd9,0x1d,0x1c,0xf5,
- 0x56,0x8b,0x83,0xda,0x39,0xf6,0xfe,0x85,0x99,0xf8,0x67,0x92,0xe1,0x67,0x6f,0x7c,
- 0x1a,0xc7,0xcf,0x03,0x5f,0x67,0x13,0x1b,0x66,0xd3,0xd2,0xc5,0x10,0x23,0x1b,0xaf,
- 0xd2,0x9c,0x1b,0xff,0xa4,0xe6,0xa7,0x49,0x2f,0xd9,0xff,0xfc,0x71,0xfa,0x3c,0xb0,
- 0xf8,0x1e,0x53,0xdf,0xc4,0xd4,0x0f,0x4e,0x54,0xae,0xfa,0xaf,0x94,0xb7,0x41,0x19,
- 0xa1,0x7a,0x2f,0xf9,0x9a,0xb6,0x62,0x3d,0xe1,0xfb,0xc7,0xcc,0xfc,0x17,0xf2,0x3f,
- 0x73,0x70,0xbc,0x5f,0xe1,0x44,0x90,0xeb,0xdb,0x85,0xa7,0xe9,0x26,0x3a,0x2f,0xec,
- 0x5e,0x4b,0x3e,0x82,0x8d,0x0c,0x1a,0xb9,0x73,0xd6,0x7f,0xb1,0xf9,0x94,0xd0,0xe8,
- 0xc6,0x89,0x8d,0x14,0x04,0x54,0x8c,0x77,0x45,0x9d,0x6a,0x6d,0x66,0xfe,0x6b,0x37,
- 0xfb,0xa3,0x34,0x20,0xda,0x59,0xcb,0x81,0x50,0x09,0xc2,0x9e,0x23,0xd0,0x18,0x43,
- 0xfc,0x43,0xcf,0xd2,0xe6,0xcc,0xfc,0x97,0x3d,0xfa,0x48,0xcd,0x42,0x4a,0xf6,0xbc,
- 0x53,0xc2,0x2b,0x02,0x9b,0x9f,0xdc,0xf9,0x2f,0x33,0xba,0x85,0x8b,0x1e,0xab,0x1f,
- 0x56,0x2e,0x40,0x5d,0xd8,0x8a,0x77,0x25,0x51,0x92,0xb3,0xfe,0x0b,0xa3,0x6d,0x20,
- 0x2c,0x6f,0xf7,0x0d,0xcb,0x07,0xb5,0x9a,0xb0,0x15,0x7f,0xb3,0xf8,0x1f,0x7b,0x74,
- 0x6e,0xe3,0x78,0xe9,0xa0,0xfc,0x37,0xcb,0x7e,0x30,0x94,0xba,0x3f,0x8b,0xff,0x31,
- 0x82,0x7e,0x21,0x8f,0xfe,0x4b,0xfd,0xa5,0x74,0x20,0xf6,0x14,0xcc,0xd3,0xd8,0x7e,
- 0x76,0x00,0x16,0xfa,0x03,0xd9,0xfc,0xcf,0x88,0x3d,0xda,0xfe,0x8f,0xc8,0xd2,0x18,
- 0xc5,0xb2,0xa3,0xad,0x3a,0x5e,0x51,0xb9,0x22,0xf7,0x78,0xa6,0xfe,0xd9,0x1c,0x6f,
- 0x0b,0xea,0x5b,0x18,0x22,0x12,0x3e,0xc2,0x2b,0xaf,0xee,0xba,0x6c,0x64,0xc4,0x6c,
- 0xf8,0xc7,0xc6,0xff,0x78,0xf0,0x7e,0xd7,0x2b,0x9d,0xe7,0x95,0x7f,0x83,0x7d,0xec,
- 0x4a,0xeb,0x30,0x1c,0xf5,0xd7,0x2d,0x2b,0xce,0xd4,0x3f,0x8f,0xa4,0xf4,0x3f,0x1c,
- 0xed,0xc8,0x5d,0x21,0xac,0x08,0x63,0xdb,0x52,0x9d,0xe8,0xb1,0x11,0xd5,0x27,0xcb,
- 0x59,0xf9,0x2f,0x03,0xe4,0x2c,0x93,0x50,0x08,0x74,0x8d,0x42,0x7e,0x01,0x3f,0x87,
- 0x39,0x61,0xb6,0xcc,0x86,0x37,0xef,0xf5,0x07,0xda,0x8a,0x94,0xc2,0x23,0x56,0xfd,
- 0x08,0xe2,0x1f,0x07,0x7a,0xac,0x88,0x86,0xd0,0xf8,0x53,0xcd,0x7d,0x82,0x5d,0xd9,
- 0xc1,0x66,0x4c,0xce,0x85,0x7f,0xbc,0x28,0xfb,0x41,0xa3,0xd0,0x18,0x78,0xc3,0x52,
- 0x43,0xf8,0x0d,0xcf,0x6a,0x7f,0x9f,0x13,0xff,0x98,0xf9,0xaf,0xad,0xc6,0xfd,0x8d,
- 0xa9,0x0a,0x32,0x23,0x11,0x96,0x47,0xff,0x83,0x78,0x9b,0x27,0xc2,0x86,0xa0,0x51,
- 0x4d,0x29,0x82,0xea,0xf2,0xe8,0x9f,0x91,0xf6,0x39,0x04,0xf3,0xa3,0xf2,0x4e,0xf0,
- 0xcb,0xf7,0x19,0x65,0xef,0x23,0x50,0xc3,0x8c,0x15,0x59,0xf8,0xc7,0x8e,0x76,0x8a,
- 0x82,0x3e,0x0f,0x44,0x61,0x2d,0xb8,0xa1,0x70,0x50,0xc0,0xc2,0x81,0x2c,0xfc,0x63,
- 0xff,0x7e,0xb5,0x4f,0x6f,0x20,0x25,0xf2,0x56,0x98,0x0f,0x2b,0xda,0x7d,0xa7,0xa0,
- 0xb7,0xb2,0x32,0x1b,0xff,0xa4,0x40,0x8e,0x81,0x76,0x8a,0x51,0xff,0xfc,0xcf,0xf4,
- 0x86,0x98,0xb7,0x4d,0x3c,0x4d,0xff,0x25,0xb6,0xf7,0x1d,0xc4,0x3f,0x76,0xfd,0xcf,
- 0x74,0xbb,0x3f,0x59,0x8a,0x32,0x57,0x69,0x02,0x33,0xd4,0x51,0x71,0x54,0x7b,0xb7,
- 0xbd,0xf9,0x84,0xdb,0x9e,0xff,0x02,0x29,0x15,0xbf,0x2e,0x88,0x67,0x19,0xec,0xb9,
- 0x31,0xe6,0xb9,0x20,0xce,0xd6,0xf4,0xe8,0x5d,0x61,0xef,0x88,0x38,0x29,0x4f,0xea,
- 0xf5,0x6f,0x3a,0xf1,0x8f,0xf2,0x18,0x7b,0x8d,0x6f,0x63,0xfd,0xda,0x69,0x84,0x31,
- 0xaa,0xbc,0xa1,0xb4,0xa4,0xfb,0xd7,0x3b,0x82,0x61,0xf7,0xb7,0xf0,0x4a,0x5f,0xe5,
- 0x48,0x16,0xfe,0xf9,0x09,0x31,0xf4,0x3f,0x38,0x5e,0xda,0xb6,0xde,0x37,0x8b,0x6e,
- 0xf4,0x7f,0x7d,0xc8,0x1d,0x26,0xa7,0xf6,0xf6,0xf2,0x54,0x7e,0x96,0xfe,0xd9,0x6f,
- 0xcd,0xa7,0xe0,0x0f,0xb2,0x8d,0xc6,0xc3,0xba,0x8a,0x0a,0x87,0xb3,0x3c,0x43,0x94,
- 0x85,0x7f,0xde,0x95,0xd2,0xf1,0x85,0x56,0xb0,0xfd,0xbb,0x44,0x3b,0x1a,0xf5,0x55,
- 0xfb,0xbf,0x78,0xa5,0x6c,0x52,0xea,0xc5,0x8d,0xa4,0x13,0xff,0xbc,0xcb,0xb7,0xe1,
- 0x22,0x87,0x85,0x8a,0x37,0xee,0x1e,0x65,0x1b,0x2b,0x76,0xff,0x33,0x9d,0xa6,0x2b,
- 0x16,0x9c,0xf8,0xe7,0x7d,0x6b,0x77,0x2f,0xb5,0xc8,0xf3,0x0f,0x7e,0xf1,0x92,0x7c,
- 0xb9,0x3b,0x95,0xff,0xda,0xca,0x10,0x91,0x27,0x03,0xff,0xc8,0x69,0x3d,0x0f,0x09,
- 0xa8,0x72,0x1f,0x19,0x15,0x0e,0x22,0xe3,0x81,0x57,0x7e,0x6a,0x08,0xa1,0x73,0xf2,
- 0x3f,0x3c,0xde,0x45,0x3f,0x17,0x2f,0x1d,0x85,0x3e,0xf5,0xa6,0x81,0x9e,0x3e,0x7e,
- 0x7f,0x8d,0x2e,0xe7,0xd4,0x3f,0xd7,0x91,0x41,0x2c,0x7b,0x07,0xac,0x4f,0xe9,0xda,
- 0x1b,0x8c,0x8d,0xe0,0x8c,0x75,0x3c,0xae,0xaa,0x47,0x36,0x67,0xd5,0xbf,0x23,0xff,
- 0x63,0xe8,0x4f,0x9a,0x67,0x15,0xef,0x6b,0x7d,0xaf,0xeb,0x60,0x51,0xc3,0x51,0xce,
- 0x98,0xbd,0x0f,0x87,0x13,0x9e,0x4c,0xfc,0x33,0xb9,0x98,0x8d,0x77,0x6f,0x2b,0x8f,
- 0x5f,0x15,0x25,0x0f,0x8a,0xa3,0xc9,0xcb,0xea,0x73,0x98,0xc8,0x18,0xc5,0xfa,0x77,
- 0x94,0x82,0x3b,0xf1,0xcf,0x08,0x03,0x39,0x25,0xe3,0x5f,0xbd,0x02,0x2f,0xd1,0x7a,
- 0x8d,0xcd,0xc6,0x6f,0xd8,0x26,0x63,0x61,0x98,0xe1,0xe7,0xd9,0xcc,0xb8,0x31,0xe9,
- 0x19,0x71,0xe8,0x9f,0x47,0xe1,0x01,0xae,0xee,0x2e,0x1d,0xe5,0xdd,0x78,0x18,0x30,
- 0x1e,0x35,0xcb,0xd2,0x79,0xc5,0x37,0x0a,0xed,0x54,0x9b,0xff,0x19,0x05,0x3f,0x43,
- 0x8f,0x2e,0x73,0xf7,0xcd,0xd6,0xc3,0x00,0x1a,0x1a,0x5f,0x18,0x9d,0x10,0xa0,0x19,
- 0xfa,0x67,0x0f,0x96,0xbd,0xa0,0xda,0x79,0x50,0xeb,0xec,0x37,0x0c,0xda,0xc3,0x02,
- 0xbf,0xfd,0xf9,0x41,0x1b,0xfe,0x39,0xab,0x8d,0x68,0xd7,0x23,0x08,0x39,0x4b,0x5e,
- 0xa4,0x0f,0x45,0xf1,0x7b,0x21,0x2f,0xc2,0xbe,0x64,0x20,0xee,0xae,0x65,0x46,0x73,
- 0xcc,0x13,0x73,0x3b,0xf5,0xcf,0x17,0x85,0x96,0x21,0x06,0x7a,0xaf,0xe0,0xfc,0x3c,
- 0xb4,0xca,0x30,0xf8,0x0a,0x41,0xbc,0xd7,0xb2,0x6b,0x41,0x32,0x83,0xff,0x49,0x18,
- 0x4d,0x84,0xf0,0xb1,0x4d,0xd1,0xaf,0xec,0x13,0x03,0xf8,0xd8,0x04,0xd7,0x9f,0xbf,
- 0xa8,0x34,0x23,0x3f,0x10,0xb4,0xe1,0x9f,0xf9,0x5a,0x27,0x3c,0x89,0xeb,0xe1,0xbd,
- 0x76,0xfe,0xb6,0x97,0x48,0x40,0xe8,0xe9,0xae,0x1d,0x2a,0xde,0x4f,0xde,0x54,0x5f,
- 0x6f,0xaf,0xdd,0x56,0xbc,0x27,0x52,0xe7,0xc0,0x3f,0x51,0xc3,0xc9,0x18,0xfa,0x43,
- 0x57,0x53,0xc8,0x43,0x7b,0xa4,0x80,0x2e,0x3f,0x4d,0x46,0x69,0x27,0xd4,0x26,0xe5,
- 0x9d,0x64,0xb1,0x03,0xff,0x7c,0x2f,0x3e,0xcf,0xc0,0x3f,0x9b,0xba,0x8a,0x93,0xf2,
- 0x86,0xc2,0x66,0x75,0x13,0xfd,0x1f,0xc3,0x45,0x98,0x18,0xfa,0x13,0xba,0x20,0x59,
- 0xb4,0x96,0x54,0xd8,0xf0,0x4f,0x80,0xfc,0x4a,0x8f,0x23,0xfe,0xc1,0xa7,0xcd,0xd2,
- 0x43,0xf1,0x9e,0x62,0xd2,0x09,0x4d,0x97,0x50,0xff,0x0c,0xcf,0x43,0xd3,0x49,0x36,
- 0x3f,0xa5,0x0e,0xfc,0xf3,0x1e,0xce,0x46,0xdc,0xd8,0x1d,0x60,0xb6,0x74,0x54,0xe2,
- 0x88,0x28,0x95,0x3f,0xd5,0x9d,0xfa,0xe7,0x82,0x51,0x92,0x50,0xf7,0xe9,0x01,0xa4,
- 0xdd,0x50,0x28,0xe5,0xe9,0x15,0x3d,0xe4,0x75,0x08,0xb2,0xbf,0x48,0x15,0xd6,0xab,
- 0xd6,0xa1,0x3e,0xcd,0x89,0x7f,0x22,0x32,0xb6,0x45,0xba,0x6a,0x96,0x74,0x00,0x2a,
- 0x8f,0xc8,0x77,0xb6,0xde,0x0a,0x48,0xfb,0xc8,0x58,0x11,0xcf,0x8d,0x4c,0xfd,0xf3,
- 0x46,0xba,0x03,0x49,0x9e,0xaf,0xc0,0x73,0xfa,0xbc,0xa4,0xbc,0x38,0xd4,0x0c,0x9b,
- 0x22,0x55,0x49,0x17,0x5e,0xd9,0x44,0x2b,0xc3,0xf2,0x5a,0x07,0xfe,0xb9,0x49,0xeb,
- 0xdc,0xa6,0x86,0xe5,0xe0,0xf2,0x65,0xda,0x3e,0xa8,0x19,0x60,0xcb,0x66,0x6d,0x5b,
- 0x0f,0xec,0x8c,0xb1,0x15,0x38,0xaa,0x75,0x12,0x75,0x8c,0xad,0x37,0x27,0xfe,0x39,
- 0x0e,0x3e,0x2c,0x72,0xff,0x6b,0xb8,0xa2,0x35,0x46,0xbf,0x13,0x13,0x6f,0x80,0x63,
- 0x50,0xdf,0x57,0xcb,0x5e,0x9b,0x39,0xfe,0xfa,0xdd,0x81,0x64,0x6e,0xfc,0xc3,0x02,
- 0x93,0xdc,0xc0,0xc3,0x90,0x8f,0x21,0x04,0x32,0xdf,0xe8,0xc7,0xf2,0x2c,0xc9,0xc2,
- 0x3f,0xaf,0xb1,0xa0,0x26,0x3f,0x28,0x56,0xcb,0x47,0x19,0x2c,0xe4,0x65,0xef,0x45,
- 0xd3,0x51,0xd6,0x2b,0xbe,0x49,0x8f,0xb2,0x0f,0x07,0xa2,0x22,0xb1,0xe3,0x1f,0xb2,
- 0x59,0xf3,0xb5,0xcb,0xb3,0x48,0x35,0xe9,0x00,0xdf,0x7a,0xf9,0x31,0xf2,0x29,0xd8,
- 0xac,0xed,0xd4,0xe4,0x6d,0xe4,0xcd,0xc8,0x66,0xd8,0xa9,0xf9,0x15,0x97,0x6a,0xc3,
- 0x3f,0x12,0x74,0x68,0xbb,0x56,0x2f,0xdf,0x46,0x0a,0x84,0xcd,0xda,0x8f,0xc7,0xd8,
- 0x6d,0x73,0x85,0x27,0x64,0x1f,0xde,0x3f,0xec,0xe9,0x08,0xfb,0x57,0xbb,0xb0,0xb0,
- 0xdd,0x5c,0x0f,0x88,0x7f,0x50,0xf6,0xec,0x8a,0xba,0x24,0x61,0x33,0xa8,0xcb,0xe5,
- 0xd2,0x48,0x21,0xd9,0x81,0xdf,0x23,0xf2,0x21,0x1d,0xe0,0x47,0xbc,0x44,0x6c,0xf8,
- 0x47,0x83,0x84,0xda,0xc0,0x16,0x72,0x95,0xca,0x3e,0x84,0xcf,0xc8,0x81,0x88,0x5b,
- 0x65,0x5f,0x51,0x1d,0x78,0xe8,0x74,0x9d,0xfd,0x79,0x16,0x23,0xfe,0x29,0x49,0xe3,
- 0x9f,0xe2,0xf3,0xb1,0xc9,0x40,0xcb,0xf2,0xe2,0x57,0x1e,0x3f,0x1f,0xfb,0xd8,0xff,
- 0xdc,0x72,0xef,0x43,0xcf,0x7f,0x2b,0xf6,0xaf,0x58,0xf6,0xce,0x80,0x4d,0xec,0x82,
- 0x7f,0x11,0xfb,0xa9,0xd3,0x59,0xff,0xf5,0xb6,0xff,0x9b,0x9a,0x67,0xdb,0xb4,0x6a,
- 0x38,0x0a,0x75,0x21,0xde,0x1f,0xe9,0xa8,0xe4,0xd3,0x4a,0xb6,0xa1,0xfe,0xd9,0xc8,
- 0x18,0x3a,0xf0,0x0f,0xed,0x0e,0xef,0x93,0xfd,0xe0,0x52,0x69,0x37,0xf8,0x14,0xff,
- 0x46,0x36,0x1b,0xdd,0xaa,0x0f,0x5c,0xc4,0xa5,0x2a,0x98,0xff,0x92,0x75,0x07,0xfe,
- 0x39,0xaf,0xfe,0x48,0xae,0x0c,0xc9,0xed,0xe4,0x7a,0x75,0xa3,0xbf,0x72,0xb9,0x7c,
- 0xf3,0x6f,0xcb,0x62,0x1b,0xe5,0xaf,0x2e,0x77,0xdd,0x5c,0x5a,0x46,0x37,0xca,0x0b,
- 0xd8,0x4f,0x11,0xbb,0xfe,0x67,0xbf,0xb0,0x11,0x04,0x4d,0x6e,0x2f,0xfd,0x16,0xd9,
- 0xa4,0x54,0x2e,0x2b,0x5a,0xef,0x2b,0x87,0x8d,0xe4,0xf1,0xf6,0x9a,0x76,0x52,0x06,
- 0xf7,0x4b,0xde,0x56,0xff,0x90,0x1d,0xff,0x14,0x2c,0x83,0xb7,0x69,0x29,0xbe,0xa4,
- 0xc4,0xd5,0xaa,0xf8,0xfe,0xe4,0xa8,0x50,0xa7,0xd5,0x72,0x43,0x9a,0xbd,0xde,0xe3,
- 0xc4,0x3f,0x3f,0xd6,0x2e,0xc4,0x9a,0xd7,0xb0,0x68,0xce,0x0c,0x78,0x36,0x84,0xf9,
- 0x32,0xd5,0x94,0x45,0x69,0x17,0x5c,0xcd,0x6d,0x4e,0xfc,0x03,0x31,0x48,0x68,0x75,
- 0xf2,0xca,0x8e,0x56,0xb5,0x22,0xc1,0xa6,0x7d,0x10,0xf1,0x4f,0x4a,0x7f,0x85,0x8d,
- 0x80,0x18,0xfe,0xd1,0x33,0xf0,0x0f,0x43,0x3b,0x51,0xae,0x76,0xbe,0x8f,0xfa,0x68,
- 0xf7,0x8f,0x22,0xfe,0xae,0xfb,0xd4,0x80,0xa1,0x7f,0x3e,0x04,0x6a,0x2c,0xa3,0xfe,
- 0xeb,0x0b,0xf0,0x30,0xdd,0x9d,0x94,0x83,0x91,0x07,0xa0,0x33,0x1a,0xfb,0x40,0xc6,
- 0xfe,0x3f,0x9d,0x34,0x80,0x57,0xbc,0xd0,0xab,0xef,0x1e,0xc9,0xc0,0x3f,0x57,0xc3,
- 0x23,0xda,0xbc,0x21,0xb6,0x6d,0x79,0x14,0xbf,0xd6,0x21,0x58,0x4f,0x14,0xd8,0x88,
- 0x40,0x8b,0x19,0xea,0xd3,0xdd,0xf3,0x22,0x19,0xf8,0xa7,0x99,0xc1,0x8a,0x25,0xb1,
- 0x40,0x9b,0xf8,0x2c,0x79,0x99,0xd6,0xc7,0x02,0xb2,0xd8,0x0c,0x28,0x7b,0x0e,0xac,
- 0x65,0xf1,0xc5,0xec,0xff,0x63,0xc3,0x3f,0xbb,0xe1,0x1d,0x89,0xed,0x47,0xa8,0x7b,
- 0x9d,0xa1,0x76,0xa6,0x90,0x24,0xe3,0x12,0xca,0xf0,0xdc,0x49,0xb6,0x43,0x61,0x3f,
- 0x39,0xf0,0x4f,0xc1,0x47,0x30,0x11,0xfd,0xdb,0xb0,0x77,0xdc,0x3d,0x17,0x69,0x9f,
- 0x70,0xc9,0xc1,0xd6,0x66,0xed,0x5d,0x1a,0x5f,0x53,0x62,0xec,0xe8,0x5b,0x30,0x90,
- 0xd9,0xf9,0x9f,0x28,0xdb,0x3f,0x2e,0x6c,0x73,0xdf,0x25,0x96,0x22,0x9e,0x59,0xcd,
- 0x1c,0x4b,0x29,0xdd,0x18,0x53,0xfd,0xf8,0xfe,0xf0,0x34,0x2c,0x00,0x79,0xbd,0x43,
- 0xff,0xbc,0x0d,0x9e,0x56,0x2a,0xf5,0x9e,0x73,0xe4,0x55,0x7a,0xa0,0x62,0x41,0xc7,
- 0xf7,0x35,0xd2,0x04,0x3f,0x53,0x3f,0xa5,0xb9,0x93,0xe4,0x56,0x78,0x04,0xe6,0x87,
- 0xe4,0x0d,0x0e,0xfc,0xa3,0xcb,0x87,0xba,0x54,0xf4,0xff,0x5d,0xda,0x61,0x1a,0xe8,
- 0x90,0x81,0x2c,0x65,0xa8,0xa5,0x5a,0x91,0x63,0x3e,0x4d,0x3b,0x04,0x01,0x45,0x76,
- 0xe2,0x9f,0x9f,0xd1,0x0b,0xe1,0xba,0x11,0x77,0xdc,0x7d,0x16,0xfa,0x68,0xf3,0x91,
- 0xda,0xb8,0xb8,0xe0,0xc8,0xbb,0xb0,0x7f,0xa8,0x24,0xea,0xbe,0x03,0xa1,0xf2,0x40,
- 0x13,0x38,0xf0,0xcf,0x3a,0xb8,0xa0,0xa2,0xba,0x72,0x86,0x1f,0x36,0x68,0xcd,0x43,
- 0xde,0xfd,0xee,0x18,0xe2,0x67,0xea,0xdd,0x26,0xee,0x40,0x69,0x62,0xd4,0xdb,0xe5,
- 0xe0,0x7f,0xae,0x2c,0xbd,0xa0,0x55,0xd1,0x55,0x3a,0x9b,0xf6,0xcb,0x9f,0xab,0xa7,
- 0xc5,0x89,0x19,0x57,0xe0,0x74,0xac,0xe5,0x88,0xa7,0x9f,0x34,0xd3,0xcb,0x9a,0xa8,
- 0x7b,0x13,0x2e,0xb0,0xe3,0x1f,0xe1,0xa0,0xc4,0xd0,0x32,0x2d,0xad,0x85,0xb7,0x35,
- 0x35,0x5a,0x4c,0xc9,0xf3,0x7a,0x37,0x06,0xb2,0x08,0x51,0xa1,0x4f,0xf0,0x3d,0xcd,
- 0xb6,0x1e,0xaa,0x9d,0xff,0xa9,0x3e,0x2c,0xd7,0x68,0xee,0xb8,0x2f,0xa0,0x3d,0x29,
- 0xd4,0x68,0xf2,0x5e,0x32,0x4a,0x7e,0x80,0x8d,0xc8,0xa2,0xe4,0x1f,0xd9,0x46,0xac,
- 0x46,0xeb,0x89,0x44,0x32,0xf4,0xcf,0x7e,0xbf,0xb6,0x22,0x58,0x28,0xab,0x3b,0x99,
- 0xf7,0x9b,0x57,0x47,0x92,0xb4,0x03,0x6a,0xaf,0x91,0x95,0x5a,0x0a,0x71,0xb6,0xe0,
- 0x45,0x4a,0x22,0x19,0xf5,0x5f,0x87,0x18,0xfe,0xe9,0x09,0x74,0xbf,0x0b,0xfb,0x68,
- 0x80,0xb0,0x40,0x76,0xd2,0xcf,0xdc,0x02,0x15,0x91,0x2a,0x3c,0xa4,0x4d,0xa3,0x76,
- 0xfd,0x33,0xe2,0x1f,0xff,0x22,0x2c,0x53,0xba,0x34,0xfd,0x7d,0xb8,0xb1,0xdf,0xfb,
- 0x81,0xf8,0x12,0x7c,0x04,0x2d,0xb2,0xb7,0x5d,0xfc,0x0e,0xef,0xf8,0xc7,0xbe,0x97,
- 0xb5,0xce,0xfa,0xaf,0x94,0x7e,0x1e,0x26,0xd5,0xe6,0xb1,0xf9,0xfb,0x66,0x3c,0x13,
- 0x3a,0xae,0xb4,0x0c,0x16,0x8f,0x8b,0x01,0x14,0x8a,0x24,0x3d,0x59,0xfc,0x8f,0x91,
- 0xe4,0x3a,0x0b,0xcf,0x0d,0xd5,0x26,0xe4,0x31,0x22,0xd1,0xfb,0xd4,0x05,0xa7,0x96,
- 0xf7,0x91,0x05,0x5a,0x8f,0xec,0x7b,0xd1,0xd5,0x07,0xd9,0xfc,0x4f,0xaa,0xde,0xdf,
- 0x9f,0x90,0x17,0x92,0x6e,0x5a,0x05,0x81,0x04,0x03,0x36,0x0f,0xc8,0x9d,0x2a,0x57,
- 0x68,0xd8,0xf9,0x1f,0x13,0x4f,0x96,0x8e,0xf2,0x46,0x40,0xae,0x78,0x21,0x85,0x9f,
- 0xd2,0x5a,0xfd,0x9a,0xb8,0x6b,0x0f,0xed,0x94,0xfc,0x88,0x88,0xb2,0xf8,0x1f,0x0b,
- 0x0f,0x63,0x19,0xd7,0x93,0xf0,0x1e,0x9d,0x8d,0x8d,0x0a,0x77,0xf3,0xd6,0x7c,0x9e,
- 0x78,0x55,0x2e,0xfe,0x87,0xe7,0x5b,0x39,0xfb,0xf7,0x4d,0xed,0x5f,0x09,0xa7,0x35,
- 0x6e,0x67,0x3f,0x1d,0xc8,0x91,0xff,0x4a,0x3d,0x5f,0xe6,0x40,0xbd,0x8e,0xfd,0x0f,
- 0xbd,0x0d,0x4d,0xfd,0xec,0x7f,0x28,0xc1,0xe3,0x7b,0x4e,0xfd,0x0f,0xc7,0xc3,0xcf,
- 0x81,0xaf,0x5f,0x1c,0x2b,0x1d,0x66,0xb0,0x6d,0x81,0x2e,0xef,0x63,0x30,0xb8,0xc7,
- 0x28,0x0c,0xcc,0xd6,0xff,0xa4,0xd8,0xbf,0xb9,0x6c,0x9b,0xa0,0x0e,0x48,0xfb,0xc0,
- 0xc3,0xfb,0x6f,0x28,0x9d,0x20,0xe7,0xd0,0x3f,0x5b,0xfd,0x70,0x3a,0xd8,0x6e,0x65,
- 0x43,0xe4,0x74,0xd1,0xf7,0xd8,0x95,0x1a,0xac,0x90,0xda,0x1a,0xe3,0x85,0xe1,0x19,
- 0xfc,0x0f,0x8a,0x9c,0x97,0xf0,0x6e,0x87,0xb3,0x46,0xbd,0x4b,0x66,0xe8,0x51,0x76,
- 0xa5,0xbf,0x16,0xf3,0x5f,0xcf,0xd3,0x6b,0xb2,0xeb,0xdf,0xed,0xd9,0xc0,0x5f,0x78,
- 0xc7,0x3a,0x46,0x30,0x9f,0xf8,0xaa,0x87,0xe7,0xbf,0x14,0xe4,0xc7,0xf2,0xf0,0x3f,
- 0xc2,0x84,0xca,0xd0,0xf5,0xfe,0xce,0x30,0x66,0x40,0x12,0x4d,0x71,0x16,0x4f,0xb1,
- 0x90,0x21,0x4f,0xff,0x1f,0xdc,0x4f,0xb5,0xe3,0xc6,0xaa,0xf4,0x04,0x3c,0x55,0xc8,
- 0xfb,0xa7,0x9d,0x52,0xde,0x80,0x2a,0xe4,0x93,0xf3,0xf5,0xff,0x89,0xa0,0x31,0xf7,
- 0x37,0xc2,0x81,0xae,0xf9,0xc3,0xae,0x0d,0xbe,0xdf,0xc0,0x4f,0x0c,0x68,0x64,0xc7,
- 0x3f,0x19,0xfb,0x59,0x9e,0x46,0x3c,0xac,0x19,0xfc,0xb3,0x76,0x18,0x33,0xf8,0x39,
- 0xfb,0xff,0xa4,0xf5,0x3f,0x55,0xdf,0x86,0x2b,0x4a,0x73,0x47,0x49,0x8c,0x2d,0x03,
- 0x94,0x46,0x7b,0xd4,0xbc,0xfc,0x0f,0x33,0xdc,0x5d,0x24,0xa9,0x8e,0x5f,0x35,0x1b,
- 0x3a,0x18,0xfe,0x51,0x4f,0xe4,0xae,0x7f,0xb7,0x67,0x43,0xb6,0xa3,0x50,0x04,0xea,
- 0x96,0xba,0x98,0xc1,0xf0,0x0f,0xd7,0xff,0x90,0x7c,0xfc,0x0f,0x33,0xb6,0xf9,0x50,
- 0x4f,0x52,0x83,0x6d,0x7f,0x06,0xe8,0x13,0x46,0x45,0xbc,0x9a,0x97,0xff,0x59,0xea,
- 0x7e,0x30,0x32,0x00,0x4f,0x30,0xfc,0xe0,0x7a,0x28,0xb4,0x26,0x55,0x11,0x96,0x81,
- 0x7f,0xf6,0xda,0xf4,0x3f,0x5a,0x4f,0x69,0x64,0x20,0xde,0x11,0xf0,0x2f,0x5f,0x8e,
- 0xfd,0x0f,0x77,0x70,0xfd,0x8f,0x8b,0xe4,0xca,0x7f,0x21,0xdb,0x33,0x1b,0xf3,0x5f,
- 0x49,0x3a,0xa2,0x06,0x65,0x06,0x7b,0x50,0x08,0x5d,0x97,0x81,0x7f,0x9c,0xfc,0x4f,
- 0xf3,0xf2,0x55,0x0f,0x75,0x9e,0xdf,0x39,0xe9,0x6f,0x5e,0xfe,0xf9,0x21,0xf1,0xbc,
- 0x92,0xcd,0xff,0xd8,0xf5,0x33,0xaf,0xf9,0x1b,0xb5,0x92,0xa1,0xce,0x39,0xea,0x6b,
- 0xe1,0xba,0xe5,0xde,0x21,0xf1,0x7a,0x9c,0x28,0xcd,0x33,0x24,0xbe,0x20,0xd9,0xf0,
- 0x8f,0x55,0xff,0xa5,0xf4,0x69,0x3e,0x90,0xef,0x25,0x95,0x0c,0xff,0x5c,0x5f,0xc1,
- 0xae,0xec,0xd0,0xba,0x61,0x67,0x5e,0xfe,0x07,0x0d,0xff,0xf2,0xfb,0x82,0xd8,0xf8,
- 0xe8,0x76,0x35,0x54,0xa4,0xa0,0xc2,0xc7,0xaf,0x86,0x64,0xe4,0x7f,0xec,0xfa,0x67,
- 0xb3,0xfe,0x0e,0x0e,0x16,0xa0,0xfe,0xa7,0xac,0xda,0xb7,0x43,0xfd,0x4b,0x9c,0xe1,
- 0x5d,0xd2,0x66,0xf6,0x85,0xf0,0x7e,0x4a,0xe6,0x7a,0x88,0xd9,0xf5,0x4b,0xaf,0x09,
- 0x8d,0xda,0x17,0xa2,0xe2,0x1c,0xe5,0xdb,0x7a,0x29,0x0a,0x7b,0x76,0xf1,0x8a,0x3f,
- 0xc4,0x3f,0xe9,0xf8,0x6b,0xe7,0x7f,0xfe,0x1b,0x17,0x4e,0xcf,0x44,0x84,0xcc,0xaf,
- 0x0c,0x90,0x0b,0x42,0xb3,0xb6,0x20,0x13,0xff,0x98,0xf3,0x2f,0x8d,0xc1,0x3e,0xb6,
- 0x47,0xed,0x54,0xe1,0x84,0x31,0xed,0x49,0x6a,0xf6,0x3f,0xb4,0xd6,0x7f,0xb6,0xfe,
- 0x67,0x98,0xec,0x36,0xfa,0xff,0xf8,0x7d,0x13,0xdd,0x87,0x48,0x43,0x06,0xff,0x53,
- 0xee,0xf8,0x5e,0x54,0xd4,0xff,0xac,0xe3,0x1d,0x24,0x5c,0x8b,0xe1,0xb8,0x62,0xf6,
- 0x3f,0x94,0x72,0xf1,0x3f,0xec,0xd7,0xca,0x81,0xb6,0xf5,0x3c,0x71,0xf6,0xf5,0xdf,
- 0xcb,0xbc,0x43,0x8e,0x92,0x23,0xff,0x65,0xf2,0x3f,0xca,0xc7,0xb4,0x7e,0xb4,0x78,
- 0x9c,0x7c,0x25,0xf2,0x56,0xfc,0xc6,0xd1,0x42,0xde,0xff,0x30,0x7e,0x43,0x16,0xff,
- 0xc3,0xfc,0x49,0xad,0x43,0x5d,0xb0,0x27,0xb9,0x02,0xf6,0x0d,0xa5,0x14,0x86,0x0d,
- 0x27,0x32,0xf0,0x8f,0x95,0xbf,0xc0,0x6e,0x42,0x75,0xbf,0xf7,0x4c,0x88,0xcf,0x2a,
- 0x2f,0x77,0xf7,0xbe,0xed,0x19,0xaf,0xba,0x82,0xfd,0x7b,0x7f,0xeb,0xd9,0x20,0x82,
- 0x23,0xff,0xc5,0xf5,0x3f,0xd8,0xbd,0xe7,0x80,0x34,0x2f,0xe9,0xba,0x93,0xfc,0x90,
- 0x6d,0xa3,0x3e,0x3d,0x2a,0xaf,0xaf,0x3b,0xa5,0x1e,0x80,0x4f,0x0f,0x30,0x47,0xf4,
- 0xa4,0xb3,0xfe,0xcb,0xd4,0xff,0xb0,0xf1,0x26,0x5c,0x77,0x5e,0x35,0x08,0x3f,0x01,
- 0x21,0xf1,0xfd,0xf5,0x64,0x48,0x7b,0x04,0xe6,0xe8,0x35,0xeb,0x09,0xcd,0xa1,0xff,
- 0xf1,0x19,0x44,0x10,0xf3,0x36,0xb5,0x6c,0x3e,0xfd,0x7a,0x0d,0xf6,0xb3,0xed,0x35,
- 0xf8,0xfc,0xee,0xcc,0xfa,0x2f,0x73,0xbc,0xf5,0xfa,0x17,0xe2,0xad,0x97,0xd4,0xf7,
- 0xb1,0x50,0x2b,0x2e,0xbe,0x09,0x6f,0x90,0x45,0x68,0x3c,0xe9,0xe0,0x7f,0xd2,0xf7,
- 0x0b,0xcd,0xfd,0xee,0xeb,0x61,0x94,0xbc,0x1e,0x69,0xd2,0xe7,0x61,0x3e,0xe2,0x30,
- 0x69,0x64,0x11,0x50,0xc8,0x5b,0xff,0xc5,0x37,0xb6,0x4d,0x65,0x2f,0x4a,0x3c,0xf0,
- 0x9d,0x87,0x49,0xb1,0xb7,0x7f,0xeb,0x98,0x60,0xe3,0x7f,0x80,0xb7,0xdd,0xc3,0xfa,
- 0x3b,0xc3,0x28,0xea,0x8b,0x70,0xda,0x01,0xc3,0xd6,0xb0,0xc1,0x5f,0x65,0xf0,0x3f,
- 0x82,0x8d,0xff,0x61,0xf1,0xab,0x2f,0x14,0x50,0x7a,0x48,0x6d,0xbf,0x6b,0x5f,0xe9,
- 0x68,0x7b,0x6f,0xea,0xfe,0x6c,0xfe,0x67,0x21,0xea,0x81,0xa5,0xc0,0x51,0xb6,0xde,
- 0x3c,0x72,0xa7,0xcc,0xf0,0x40,0x90,0xbc,0xa4,0xf4,0x6a,0xe1,0xa1,0x9e,0x2c,0xfe,
- 0xc7,0x67,0xcd,0xcf,0x8d,0xaf,0xae,0x7a,0xaa,0xb5,0x09,0x5e,0x56,0x5b,0x12,0x25,
- 0xf1,0x19,0x67,0xa4,0x8f,0x97,0xcd,0xf8,0xd5,0xd6,0x4c,0xfe,0xe7,0x0d,0xb6,0x5b,
- 0x9f,0x76,0x4e,0x6c,0x82,0x37,0xa0,0xe5,0xc4,0xfd,0x47,0x66,0x8e,0x86,0x30,0x71,
- 0x33,0x7f,0x88,0xc1,0x18,0x53,0xdf,0xeb,0xc0,0x3f,0x17,0x61,0x51,0x8c,0x2d,0x92,
- 0xb3,0x0c,0x08,0x2d,0x31,0xda,0xfe,0xa4,0x64,0x3f,0xb9,0xea,0xbf,0xe0,0xac,0xcc,
- 0x3f,0xab,0xbe,0xba,0x5a,0x06,0x84,0xaa,0xc6,0xec,0x6d,0x7f,0xd2,0xfa,0x1f,0xdb,
- 0xf7,0x38,0x28,0xf7,0x41,0x35,0x95,0x83,0xb7,0x73,0xfc,0x33,0x64,0x4f,0xf3,0xd9,
- 0xf2,0x7d,0xe6,0xfd,0xfa,0x9f,0xef,0x61,0xfe,0xcd,0xd7,0x01,0x46,0xdb,0x25,0x67,
- 0x1b,0x01,0x9b,0xfe,0xc7,0x7c,0x1f,0xac,0xff,0xba,0x28,0x35,0x74,0x55,0x07,0x45,
- 0xa3,0x50,0xab,0xc0,0xf6,0xe1,0xa4,0xeb,0xbf,0xd2,0xfd,0x2d,0x95,0x26,0xb8,0xa8,
- 0xb7,0x24,0xb7,0x8e,0xf1,0xfe,0x7e,0xce,0xb2,0xa6,0xb4,0xfe,0xd9,0x56,0xff,0x15,
- 0x60,0xa0,0xba,0xa1,0xdb,0xb3,0xb7,0x73,0x1d,0xbc,0xab,0x36,0x19,0x6d,0x19,0x5e,
- 0x37,0x2a,0x34,0xf3,0xd4,0x7f,0xc5,0xa9,0x6f,0xc8,0xff,0x0c,0x7b,0xff,0x4e,0x6d,
- 0x81,0xee,0xcf,0xf5,0xfe,0xe9,0xfa,0x2f,0x5d,0xf2,0x48,0xfb,0xe8,0x93,0xf1,0x9a,
- 0xeb,0xc9,0xca,0xf0,0xe3,0x5a,0x40,0xbf,0xc6,0x10,0x8a,0xe7,0xad,0xff,0xd2,0x66,
- 0xc3,0xd3,0xe3,0xf3,0x6a,0x5c,0xdf,0x26,0xb3,0xbb,0xa7,0xd1,0xe2,0x24,0xcf,0x7f,
- 0xd9,0x32,0x62,0x99,0xf5,0x5f,0x15,0x1e,0xed,0x5c,0xb2,0x91,0x3e,0x50,0x27,0x7e,
- 0x81,0x7e,0x15,0x9a,0x06,0x78,0xdb,0x9f,0x5f,0xc7,0x9a,0x86,0xbd,0xc1,0xaa,0x74,
- 0xfd,0x57,0xa1,0xf9,0x3e,0x9a,0xe7,0x19,0xb8,0x52,0x56,0x2f,0x9b,0xb2,0xa8,0x23,
- 0xc5,0xa9,0x69,0xe9,0xcf,0x5d,0xff,0x25,0x17,0x8c,0x4a,0x17,0x21,0x48,0xd9,0xb4,
- 0xdc,0x81,0x68,0xd3,0xd1,0xa6,0x23,0x5d,0xbf,0x90,0xee,0xcf,0xbc,0x94,0xf9,0x13,
- 0xa1,0x52,0x63,0x4e,0x66,0x16,0x6c,0x22,0xf3,0x8f,0xd8,0x65,0x03,0xe9,0xfa,0x2f,
- 0xeb,0x7e,0x60,0xf8,0xa7,0x97,0x56,0xc5,0x8a,0xb0,0xde,0xcd,0x94,0x39,0xd9,0x3b,
- 0x22,0xe6,0xe8,0xff,0xd3,0xfb,0xb9,0x9d,0x5a,0x51,0x30,0x64,0xc8,0xa8,0xdc,0xb9,
- 0xd6,0x9b,0xad,0xff,0x8f,0xb4,0x1b,0xae,0x68,0xf5,0xd1,0xf9,0xaa,0xe8,0x27,0xf7,
- 0xd9,0x81,0xd0,0x56,0x9b,0x22,0xda,0xd6,0xff,0xc7,0xc8,0x47,0x94,0x96,0x50,0xf7,
- 0x99,0x54,0x21,0x58,0x0e,0x3d,0x86,0xb3,0xff,0xf3,0x07,0x4a,0x5d,0x98,0x05,0xc1,
- 0x1f,0x67,0xc9,0x42,0x72,0xea,0x7f,0xaa,0xe5,0x83,0x47,0x7c,0xcb,0xe4,0x68,0xe4,
- 0x53,0xea,0xc1,0x36,0xa7,0xec,0x24,0x5f,0xfd,0x97,0xb6,0x53,0xab,0x60,0xd1,0x99,
- 0x66,0xde,0x96,0xaf,0xfe,0xcb,0xaf,0x6a,0x15,0x0a,0x91,0x64,0xec,0x7f,0x68,0x00,
- 0x03,0x29,0x43,0xff,0x63,0xe9,0xc3,0x17,0x5f,0x8d,0xdd,0x7e,0xea,0x68,0x80,0xfd,
- 0x0d,0x64,0xec,0x7f,0x98,0x73,0xbc,0xa7,0x0b,0xcd,0xf7,0xe9,0x43,0xfd,0xcf,0xbc,
- 0x96,0xe5,0x6c,0xb7,0x35,0x90,0x1a,0xdd,0x0c,0xde,0x0f,0xd9,0x31,0xde,0x37,0xd3,
- 0x78,0x86,0xe1,0x8d,0xcb,0x70,0xe3,0x32,0x4f,0x3b,0x43,0x3b,0x97,0x8d,0xb4,0x11,
- 0xde,0x76,0xb7,0xe3,0xfe,0x34,0xff,0x53,0x01,0x49,0xb9,0x4f,0xae,0x85,0x62,0xea,
- 0x42,0xd9,0x4f,0x8d,0xe2,0x36,0x64,0x57,0xb6,0x8c,0x98,0xb3,0xff,0xcf,0xb2,0x2e,
- 0x79,0x6f,0xe8,0x0e,0x06,0x5a,0xae,0x5a,0x86,0xa3,0x5b,0x66,0x1f,0x66,0xae,0xfe,
- 0x3f,0x65,0xbb,0x52,0x65,0x5f,0x5c,0x4f,0x5e,0x93,0x9a,0x46,0xc1,0x39,0x9f,0x69,
- 0xfd,0xf3,0x4e,0xec,0x7f,0xf8,0xf7,0xcd,0x4b,0x3d,0x4a,0x2a,0xff,0xd5,0x63,0xbc,
- 0x76,0xad,0xf1,0xfe,0x07,0x53,0xfa,0x1f,0xab,0xff,0xe1,0x08,0xf6,0x3f,0xe4,0x4d,
- 0x0e,0x3b,0x6d,0x40,0xe8,0xed,0x8c,0xf5,0x70,0xd1,0x51,0xff,0x35,0xa2,0xd6,0xb1,
- 0xf1,0x8a,0x61,0x3e,0xcc,0x9c,0xf3,0x9f,0xae,0xff,0x02,0xc9,0x0f,0xcf,0xca,0x95,
- 0x54,0x3e,0x4b,0x96,0xd0,0xa7,0xb5,0x12,0x87,0xec,0xc7,0x32,0xd2,0xfd,0x0f,0x65,
- 0xb6,0xff,0x7a,0x5c,0xaf,0x86,0xa2,0x26,0xd2,0xa6,0xee,0x8b,0x3b,0x65,0x87,0x36,
- 0xfd,0x8f,0xf9,0x0f,0xeb,0xbf,0x9e,0xa6,0x9f,0x3a,0x22,0xaf,0x2f,0x5c,0x0d,0x4f,
- 0x63,0x23,0xe8,0x5c,0xdf,0x6f,0xc2,0x7c,0x3c,0xf8,0x2b,0x66,0xc3,0x59,0xfa,0x54,
- 0xac,0x78,0x83,0xf8,0xdf,0xe1,0x23,0x7b,0x22,0xcc,0x6e,0x1c,0xf3,0x59,0xeb,0xb3,
- 0x78,0x0f,0x5c,0x82,0x43,0x94,0x79,0xd7,0xdd,0x46,0xa1,0x93,0xad,0x8d,0x58,0x5a,
- 0xff,0x73,0xaf,0x39,0xde,0x70,0xd9,0xb3,0xda,0x95,0x68,0xbd,0xea,0x19,0x71,0x5f,
- 0x05,0x03,0x74,0x89,0x19,0xb6,0x9a,0x87,0xed,0xf1,0x6b,0x28,0xad,0x7f,0xae,0x78,
- 0x0c,0x9e,0x8e,0x55,0x6a,0xc5,0x9f,0x21,0xab,0xa1,0x4b,0x5b,0x88,0xb2,0xa5,0x41,
- 0x7c,0xed,0xa4,0xfb,0x1b,0x36,0xfd,0x8f,0xa5,0xaf,0xa6,0xf0,0x98,0xb0,0x5f,0x79,
- 0x7c,0x1b,0xf3,0x57,0xab,0x51,0xed,0xac,0x9b,0xb7,0x25,0x7a,0x6c,0xe3,0x4d,0xc7,
- 0x3b,0x8d,0xc5,0xf7,0xb8,0xa6,0x52,0x16,0xe6,0xda,0x08,0x35,0x89,0xfd,0x54,0xdb,
- 0x31,0x6b,0x3e,0x6d,0xf5,0x5f,0x05,0x7b,0xe0,0x43,0x8d,0xfb,0x4f,0x3f,0xca,0xfc,
- 0xf4,0xeb,0x30,0x4c,0x4c,0x48,0x77,0x38,0xe2,0x4b,0x9a,0xdf,0x8b,0x29,0xa3,0x70,
- 0x51,0x65,0xd1,0x19,0xe7,0x67,0xdc,0xda,0x78,0x66,0xf8,0xdb,0xf4,0xfb,0x20,0xfe,
- 0xb9,0x08,0xf5,0xb4,0x03,0x37,0xf5,0x97,0x48,0xaa,0xcc,0xf9,0x0d,0xc3,0x8d,0x7f,
- 0x27,0xbb,0xff,0x4f,0xbf,0xb4,0x4e,0xee,0xeb,0xa8,0x89,0xb9,0x9e,0x21,0xef,0x40,
- 0x9f,0xee,0x0c,0x5b,0xb6,0xfa,0x2f,0xf3,0xef,0x85,0xf5,0x5f,0xbb,0xa9,0x2f,0xe6,
- 0xde,0x4e,0xf6,0x68,0x7d,0x34,0x75,0xdb,0x0f,0x32,0xee,0x77,0xf6,0x7f,0xee,0x53,
- 0x6b,0x74,0xd7,0xf5,0xe4,0x28,0xc4,0x53,0xcb,0xac,0xad,0x57,0x31,0xea,0xbf,0x72,
- 0xe8,0x7f,0xe4,0x75,0x30,0xb2,0xbe,0x8e,0x2e,0xd8,0x26,0x3e,0x61,0x8d,0x17,0xe3,
- 0xef,0x0b,0x56,0xc7,0x5d,0xaf,0x03,0xff,0x94,0x5d,0x82,0xf1,0xe0,0x8d,0x74,0xd5,
- 0x7a,0xe6,0xb4,0x2f,0x19,0xb2,0xe7,0x4b,0x74,0x92,0xe1,0xa5,0xeb,0xec,0xf1,0x3d,
- 0x9b,0xff,0xc1,0xd5,0xf2,0x06,0x2c,0x49,0x94,0x9c,0xeb,0x0c,0xb0,0xf9,0xaf,0x3d,
- 0xe6,0x5d,0x2d,0x36,0x51,0xf6,0x53,0x3f,0xf2,0x3f,0x36,0xfd,0x39,0x03,0x39,0x1d,
- 0xb5,0x49,0x91,0xa3,0x1d,0xdd,0x37,0x26,0x6f,0x21,0x0b,0x94,0x43,0x7a,0x6d,0x9c,
- 0xcd,0xc0,0x02,0xed,0x70,0x64,0xc1,0x70,0x4e,0xfd,0x0f,0x1f,0xdd,0x0e,0xcd,0x2f,
- 0x31,0x98,0x27,0xc0,0x5e,0x8d,0x77,0x08,0x07,0xe8,0x2d,0xe0,0x78,0xd8,0xd1,0xff,
- 0xd0,0x36,0xdb,0x84,0x01,0xad,0x68,0xe1,0x6e,0x85,0xcf,0x67,0x37,0xf3,0x78,0x06,
- 0x23,0x14,0x4a,0xe3,0x31,0xb0,0xeb,0x4f,0x5e,0x97,0x1a,0x13,0x25,0x41,0xf7,0x7c,
- 0x89,0x5f,0x99,0x2d,0xd6,0x6a,0x13,0x70,0x77,0x3f,0xc3,0xcf,0xba,0x85,0x67,0x62,
- 0xd3,0x1d,0xfc,0x0f,0xdb,0x68,0x24,0xb1,0xad,0x0d,0xb4,0xec,0x66,0xfb,0x4d,0x06,
- 0x1d,0xc9,0xdd,0x99,0xf8,0x67,0x8f,0x59,0x54,0x38,0x0a,0x1f,0xb4,0x2d,0x2e,0x62,
- 0x4f,0xdb,0x11,0x3a,0x0a,0xcd,0x47,0xbc,0xdb,0x3a,0x55,0x3d,0xa5,0x38,0x4a,0xf3,
- 0x0f,0x06,0xff,0x63,0x56,0x0b,0x52,0x5f,0x54,0x7e,0xa6,0x75,0x77,0xd9,0xeb,0x43,
- 0x0c,0x16,0x6e,0xef,0xbc,0x0d,0x0e,0x4b,0x0b,0x18,0x42,0x73,0xe2,0x9f,0xf4,0xd7,
- 0xb1,0xef,0x66,0x7f,0xd2,0xd5,0x04,0x0f,0xd0,0xce,0x23,0x81,0xb0,0xdb,0xd6,0x88,
- 0x7e,0xdc,0xda,0x7f,0x85,0x21,0xad,0xff,0x11,0x9e,0x8e,0x56,0x0e,0xcb,0x9f,0x23,
- 0x3f,0xa4,0xf7,0xd2,0xf9,0xb1,0x9e,0x71,0x54,0xc8,0x74,0xcc,0x1f,0x2e,0xca,0xc0,
- 0x3f,0xf0,0x61,0x0c,0x9f,0x2f,0x0e,0xc2,0x07,0xe0,0xff,0xeb,0x92,0x60,0xe7,0xa6,
- 0x68,0x47,0x77,0xd3,0xed,0xd3,0x82,0xa2,0x87,0x7e,0x08,0xb3,0x74,0x8f,0x83,0xff,
- 0x99,0x95,0xd2,0xff,0x18,0xab,0xe5,0x1e,0xdd,0x3b,0xd4,0x7a,0xaa,0xed,0x0d,0x58,
- 0x30,0x60,0xea,0x9f,0xfb,0x9d,0xf8,0x27,0xcd,0xbf,0xad,0x83,0x8b,0xb4,0x2e,0xe9,
- 0xe9,0x13,0x6b,0xb1,0xfe,0x02,0x23,0x3e,0x43,0x44,0x05,0xcd,0xaf,0x78,0x1c,0xfd,
- 0x0f,0x05,0x1b,0xff,0xf3,0x34,0xcf,0x76,0xf9,0x66,0x49,0xf7,0x02,0xf3,0xd8,0xed,
- 0x64,0x0b,0x6c,0x82,0xc0,0x09,0xbf,0xf3,0xfc,0x0b,0x1b,0xff,0xb3,0x97,0x56,0x87,
- 0xe5,0xc5,0xe4,0x5e,0xe8,0xe8,0xf0,0x87,0xe1,0x44,0x88,0x77,0xc0,0x46,0x05,0x54,
- 0x1a,0xff,0xac,0x75,0xd4,0x5f,0x40,0x4c,0xf7,0x2f,0xac,0xd9,0x42,0xb0,0x8d,0xb6,
- 0x7f,0x56,0x64,0x0b,0x74,0x4a,0x01,0x83,0xff,0x31,0xef,0x1f,0x29,0xb3,0xf8,0x9f,
- 0xb5,0xa8,0xfe,0xa2,0x9e,0x11,0xb1,0x0f,0x8e,0xc3,0x12,0xea,0xf9,0x4b,0x71,0x03,
- 0x39,0x66,0x28,0x82,0xec,0xfd,0x0f,0x6d,0xfb,0x71,0xc3,0x10,0xc2,0xbc,0x30,0x07,
- 0xeb,0xbf,0x24,0x3c,0x18,0xa2,0x20,0x13,0xff,0xe4,0x85,0x3d,0x86,0x50,0x36,0x90,
- 0x81,0x7f,0x6c,0xe8,0x45,0xab,0x6d,0x77,0x6f,0x23,0xbf,0x37,0x8c,0x68,0xea,0x60,
- 0x8b,0xfc,0xfa,0x9f,0xc3,0x72,0x6d,0xc8,0x1d,0x8d,0x0c,0xab,0x07,0x99,0xb1,0x22,
- 0x7a,0x4d,0xc0,0xbc,0xff,0x05,0x6b,0x7e,0x32,0xf9,0x9f,0xe5,0xee,0xd2,0xc8,0xc0,
- 0xee,0xbd,0x35,0x81,0xe5,0x2b,0x18,0x22,0xc2,0xf3,0x2f,0x96,0x3b,0xf5,0x3f,0xd7,
- 0x3a,0xf8,0x1f,0x86,0x7f,0x90,0xff,0x19,0x57,0x67,0x23,0x10,0xe2,0x07,0x31,0x60,
- 0x45,0xd8,0x69,0x6b,0xfd,0xf4,0xd9,0xfa,0xff,0x18,0xea,0xe5,0x21,0xf1,0xbc,0xf4,
- 0x73,0xd2,0xa2,0xad,0x6a,0xb7,0x9d,0x7f,0x51,0x98,0xc6,0x3f,0xf6,0x69,0x91,0xeb,
- 0x34,0xcf,0x43,0x9d,0xc3,0xd5,0x17,0xe4,0xe6,0x10,0x17,0xc6,0xb0,0x0f,0x2d,0x14,
- 0x70,0xe2,0x9f,0x98,0xc5,0xff,0xb0,0x8d,0x55,0x43,0x99,0xdc,0xe5,0x3b,0x03,0x7d,
- 0x5a,0xad,0xc2,0xc2,0xfa,0x85,0xf6,0x6e,0xa8,0x55,0xda,0x1c,0xf8,0x47,0xea,0x4a,
- 0x8f,0xf7,0xe7,0xb4,0x52,0xdb,0xbc,0x9a,0xbc,0x0a,0x4f,0x75,0xcc,0x0f,0x8b,0xed,
- 0xe4,0x94,0xd2,0x61,0x54,0xcc,0x39,0xf0,0x4f,0x7a,0x3e,0x9f,0x82,0x4f,0x85,0x8a,
- 0x86,0x6e,0xfe,0xb7,0xe8,0xcf,0xd5,0x05,0x5a,0xcf,0x10,0x39,0x7f,0xcb,0x66,0x63,
- 0x3e,0x6d,0xf5,0x5f,0x92,0xfd,0xef,0x1b,0xaa,0xd3,0xe6,0x6f,0x13,0xdf,0x82,0x0b,
- 0x7a,0x73,0x3b,0xf6,0xe3,0x25,0x47,0x8d,0x83,0x3c,0x6c,0xf5,0x5f,0x8e,0xf5,0xa0,
- 0x34,0x2f,0x2b,0x89,0x56,0xbd,0x99,0x42,0x44,0x88,0x18,0x85,0xeb,0xb3,0xf1,0x8f,
- 0x35,0xff,0x97,0xa0,0x1e,0x3c,0xba,0xb8,0x10,0x2e,0x15,0xd4,0x43,0xc9,0x00,0x73,
- 0x3b,0xe3,0x42,0x06,0xfe,0x91,0x25,0x07,0xff,0xe3,0xe7,0x69,0x2f,0x63,0xc7,0xba,
- 0xb3,0x34,0x8d,0x7f,0x54,0xd3,0x3f,0xc8,0x0e,0xfd,0x0f,0x55,0xcf,0xb0,0xef,0x0b,
- 0x3b,0x86,0xa9,0x49,0x66,0x0c,0x4a,0x58,0xc1,0xc4,0xf1,0x8f,0xf5,0x3d,0xda,0xf5,
- 0x3f,0xfb,0xb5,0x79,0x4a,0xdb,0x4a,0xa2,0xc0,0x7e,0xbd,0x32,0x28,0x6b,0x64,0x08,
- 0xb0,0x31,0x72,0x16,0xfe,0xb1,0xd0,0xce,0x39,0x1a,0x8f,0x05,0xfc,0xee,0x6b,0x0c,
- 0x23,0x8d,0x7f,0xaa,0x6c,0xf8,0xe7,0x5a,0x1b,0x1f,0x72,0x01,0x65,0x84,0xd6,0xf7,
- 0x42,0xed,0xe7,0x5f,0x98,0xef,0xc3,0xf0,0x8f,0x11,0xbf,0x0e,0x8a,0x58,0xc8,0x53,
- 0xb7,0x66,0xeb,0x76,0x6e,0xb4,0x84,0x59,0xfc,0x2a,0x64,0x8e,0xa8,0x19,0xf3,0x17,
- 0x43,0xe9,0xfe,0x87,0xf2,0x63,0x6c,0xbc,0xec,0x25,0x37,0x70,0xff,0xa3,0xc6,0x4a,
- 0xd6,0x5e,0x35,0xc4,0x0c,0x6c,0x3b,0xe6,0xfb,0x3e,0xdd,0xb4,0x6b,0xfe,0xa8,0xec,
- 0xd4,0xff,0xcc,0xb2,0xfa,0xff,0xc0,0x33,0x30,0x47,0x6e,0xd5,0x98,0x77,0xdd,0x8f,
- 0x65,0x5f,0x43,0xe4,0x2a,0xfa,0x13,0x95,0x13,0xd7,0x76,0xfc,0xb3,0xc5,0xee,0x7f,
- 0x76,0xe9,0xae,0x1b,0x23,0x03,0xa8,0x30,0x3f,0xe2,0x56,0x49,0x37,0xee,0xc8,0xfa,
- 0xe5,0xcc,0xfa,0xf7,0x34,0x7a,0xa1,0x0d,0x98,0x88,0x79,0x13,0x26,0x74,0x86,0x70,
- 0xd8,0x8e,0x8c,0x17,0xf2,0xec,0x71,0xe0,0x1f,0x18,0x95,0xac,0xfb,0xc7,0x69,0xa3,
- 0x5a,0x82,0xec,0xdf,0x38,0xbd,0x5b,0xf5,0x46,0xdd,0xc3,0x52,0x4e,0xfc,0x93,0x8a,
- 0x77,0xcf,0x60,0x98,0xc3,0xee,0x6d,0x63,0xda,0x71,0xc3,0x58,0xcc,0x22,0x7e,0xb3,
- 0x13,0xff,0x38,0xfa,0xff,0x5c,0x20,0xfc,0x43,0x18,0x65,0x9f,0x61,0x89,0xd6,0xfa,
- 0xbd,0xd2,0xea,0x1c,0xf8,0x47,0xb0,0xdd,0x6f,0x7d,0x38,0x9b,0x61,0xae,0x86,0x69,
- 0x32,0x25,0x67,0xfd,0xbb,0x35,0x3f,0xfb,0xc0,0xb3,0x9d,0x4d,0x4b,0x82,0x44,0x20,
- 0x40,0x57,0xc4,0x49,0x09,0x4d,0x29,0xa2,0x6d,0xf8,0xa7,0xc2,0x00,0x39,0xee,0x7d,
- 0x9d,0x7b,0x60,0x0c,0x9a,0x67,0x7a,0x23,0x9d,0xbc,0x11,0x96,0x84,0x27,0x10,0xc5,
- 0x5e,0x57,0xf9,0x8e,0xdb,0x86,0x7f,0xb0,0xff,0xb3,0x3f,0x15,0xbf,0x4c,0xe1,0x93,
- 0xfa,0x4f,0x2e,0x34,0xdc,0xec,0xa7,0x50,0x06,0xfe,0x01,0xc0,0xba,0x08,0xcc,0xfa,
- 0x2b,0x53,0x18,0x60,0xff,0x27,0x01,0x7b,0x3b,0x8d,0x79,0xe0,0x29,0x0c,0xfb,0xbf,
- 0x2e,0xa8,0x04,0xf6,0x71,0x28,0x53,0x19,0xff,0x9e,0xe7,0x23,0xf9,0x98,0x3a,0xf3,
- 0x2c,0xaf,0x61,0xfb,0x37,0xf5,0x8d,0x86,0xf1,0xef,0x79,0xfe,0x1f,0xfb,0xef,0x3f,
- 0xd9,0xfc,0x2b,0x78,0x96,0xdf,0x20,0xdc,0xc9,0x80,0xd1,0x14,0x86,0xf4,0x7f,0xfc,
- 0xfc,0xff,0xe0,0xf9,0x97,0x14,0xfa,0x07,0xcc,0xb9,0x60,0xf9,0x93,0x3f,0xf6,0x5f,
- 0x53,0xd3,0x1f,0x72,0x97,0xd7,0xfb,0x7f,0xf8,0xf8,0xff,0x17,0xfe,0xb5,0x4c,0x4e,
- 0x4e,0xea,0x9f,0x60,0xfc,0xff,0xf9,0xfe,0xff,0x64,0xdf,0xe3,0x7f,0xf9,0xc3,0xff,
- 0xf2,0x87,0xff,0x8e,0xf9,0xff,0x2f,0x7f,0xf8,0x49,0xff,0xfe,0xb3,0xf9,0x9f,0xff,
- 0x5c,0xf7,0xeb,0x05,0xe7,0xe1,0x38,0x6d,0xd1,0x3c,0x23,0xe2,0xb3,0xf0,0x2f,0x94,
- 0x57,0xc3,0x71,0x7e,0x35,0x5f,0x7e,0x50,0xf9,0x4b,0xb8,0x8f,0x2e,0x08,0xcb,0xbb,
- 0x4b,0x6b,0xf9,0x69,0xb0,0xb9,0xf3,0x83,0x69,0x7e,0x8c,0xad,0xd9,0x08,0xb6,0xd9,
- 0x8f,0x95,0x6e,0x51,0xbe,0x0f,0xd5,0x7a,0xee,0xfc,0xa0,0x8d,0x1f,0x7b,0x4b,0xb9,
- 0xaf,0xbb,0x96,0x3d,0x1f,0xd5,0xe0,0x42,0x9e,0xfc,0xe0,0xb8,0xb5,0xdf,0x14,0xca,
- 0xfe,0x49,0x3a,0xd6,0xdf,0xec,0x0f,0xa8,0x33,0xf6,0x48,0xbf,0x56,0x1b,0x8c,0x32,
- 0xc6,0x89,0x8c,0xfc,0x9d,0x2d,0x3f,0x08,0x5b,0xc8,0x15,0xb8,0x91,0xed,0x0e,0xd8,
- 0x6e,0x73,0x52,0x6d,0x31,0xfa,0x23,0x4d,0x95,0x1f,0x7c,0x02,0x9b,0xe4,0x2c,0x0b,
- 0x44,0xc4,0x3d,0x74,0x42,0x6e,0xd4,0x03,0xb9,0xf2,0x5f,0xce,0xfc,0xe0,0x7d,0xb4,
- 0x56,0xef,0xde,0x4f,0x8a,0xd9,0xee,0x40,0x1d,0xc9,0xf9,0xfe,0x76,0x7d,0xd4,0x32,
- 0x78,0x78,0x7d,0x20,0x24,0x57,0x87,0xb6,0x42,0xaf,0xe2,0x77,0xb4,0x65,0xcb,0xd9,
- 0x1f,0xe0,0x2a,0xed,0x11,0x54,0x6f,0xae,0x0d,0xcd,0x56,0x5b,0x68,0x65,0x72,0x79,
- 0xae,0x7c,0x99,0x5d,0x1f,0x25,0xc1,0x2b,0x5d,0x4d,0x5a,0x40,0x15,0xb7,0xc0,0x87,
- 0xea,0x62,0xdd,0x93,0x6a,0x0b,0x99,0xcc,0xd7,0x1f,0x72,0x3f,0x79,0x07,0x5a,0x86,
- 0xbc,0x61,0xde,0x5f,0xf4,0x46,0xfd,0xf3,0x46,0x23,0x71,0x7e,0xac,0x5e,0x8e,0xfc,
- 0xa0,0x5f,0xfa,0x31,0xbc,0xc8,0xb6,0xb1,0x25,0x31,0x71,0x9d,0x34,0x41,0x50,0x48,
- 0x4f,0xb2,0xe7,0x27,0xfd,0xf7,0x4d,0x28,0x8f,0xc1,0x26,0xa1,0xb2,0x5f,0xc6,0xf3,
- 0x61,0x0f,0xc0,0x8e,0xdc,0xf9,0x85,0x73,0x36,0x7f,0xf5,0x00,0x3c,0x70,0xdf,0x9c,
- 0xb0,0x6b,0x64,0xee,0x57,0x90,0xdf,0xe0,0x8d,0x92,0x64,0x6b,0xbc,0x3f,0x31,0x8c,
- 0x84,0x3d,0x3f,0xb8,0xbc,0x9b,0xa8,0xbf,0x95,0xeb,0x78,0xbf,0x71,0xd5,0x31,0x8d,
- 0x39,0xf2,0x83,0xc9,0xf2,0x43,0xf0,0x00,0x5d,0xb4,0xbd,0xe4,0x8e,0x3b,0xd7,0x96,
- 0x5d,0x39,0x55,0x67,0x10,0x0b,0x99,0x1d,0x93,0xc6,0x33,0xf4,0x51,0x4d,0xe0,0xed,
- 0x42,0x35,0x26,0x34,0x2b,0x9f,0x98,0x1f,0x1c,0x16,0x2e,0x44,0xeb,0xda,0x78,0xdb,
- 0x9c,0x0b,0x94,0x57,0x3f,0x59,0x0c,0xc9,0x9a,0x3c,0xfd,0x01,0xc8,0xce,0x0d,0xf2,
- 0xb6,0xc8,0x1c,0xd8,0x9b,0xf0,0xad,0x2d,0x49,0xa7,0xa5,0x42,0x79,0xfb,0x43,0xfa,
- 0x34,0x88,0x62,0x7f,0x00,0xb5,0xa6,0xcd,0x4a,0x63,0xcd,0xcc,0x9d,0x1f,0x04,0x29,
- 0x76,0x10,0x65,0xe1,0x46,0x7f,0x00,0xbf,0x36,0x33,0x57,0xbe,0x2c,0xdd,0x9f,0x64,
- 0x83,0x1c,0xa6,0x87,0xa0,0x4e,0xae,0x35,0xfa,0x03,0x1c,0x72,0x0c,0xd3,0xa2,0xce,
- 0x4e,0xdb,0xfa,0x43,0x9e,0x2f,0xfa,0x37,0xb8,0x11,0xcf,0x7b,0x1d,0x96,0xff,0x0d,
- 0x17,0x46,0x2e,0x62,0xd0,0x5e,0x1f,0x77,0x1e,0x5e,0x82,0xfa,0x90,0x67,0x68,0xda,
- 0x79,0xf9,0x32,0x2c,0xd1,0x66,0x19,0xc7,0xc8,0xb6,0x20,0x6d,0x98,0xf3,0x7c,0x90,
- 0x33,0x6d,0xdd,0x05,0x3e,0x45,0x66,0xae,0x07,0x85,0x04,0x30,0xdb,0x2a,0x94,0xcb,
- 0x77,0x3e,0xc8,0x35,0x9b,0xa9,0x1a,0xf6,0x07,0x0b,0x07,0xd8,0x6c,0xf8,0x35,0xab,
- 0x2d,0xa4,0xbd,0x3f,0xa4,0xed,0x7c,0xd8,0xf2,0x5d,0x32,0x6f,0x4b,0xfe,0x5d,0xd4,
- 0x47,0x15,0xf9,0xd2,0x6d,0x21,0xe5,0x9c,0xf9,0xc1,0xd8,0xf4,0x37,0x83,0xfd,0x74,
- 0x5f,0xbb,0xe7,0xb1,0xc2,0xe1,0x32,0x2c,0x73,0x4b,0xb5,0xb5,0x6c,0x72,0xf4,0xb7,
- 0xb4,0xf7,0x47,0xfa,0xf1,0xb2,0x1b,0x14,0x73,0x36,0xa2,0xf9,0xce,0x87,0xb5,0xf3,
- 0x63,0x42,0xa2,0x28,0x88,0x6a,0xf0,0x58,0x45,0xe2,0xb6,0x46,0x58,0x35,0x75,0x7e,
- 0x50,0x2d,0x90,0x85,0x07,0xe4,0xaa,0x7b,0xbb,0x87,0xc5,0x3e,0xf6,0x69,0x56,0xc6,
- 0x3c,0x6c,0x3d,0x2b,0x87,0x60,0x81,0x33,0x3f,0x68,0xf1,0x63,0xfe,0x2e,0x8f,0x10,
- 0xd1,0xd4,0xb8,0x3c,0x77,0x6e,0x1b,0xa5,0xba,0xbf,0xd4,0xcc,0x0f,0xd2,0xd4,0xf7,
- 0xe2,0xcf,0xc8,0x0f,0x82,0x07,0x36,0x81,0x4a,0x65,0xec,0x0f,0xb0,0x47,0xab,0x54,
- 0x52,0x65,0xf2,0x5f,0xa7,0x79,0xf2,0x83,0xdd,0xb3,0x95,0x4d,0x91,0x85,0x6a,0x60,
- 0xad,0xf8,0xdf,0xa5,0x01,0x7a,0x43,0xf8,0xba,0x14,0x2d,0x16,0x4b,0xe5,0x07,0x6f,
- 0xc8,0xc8,0x0f,0x7a,0xf6,0x90,0x0f,0x8d,0x8f,0x8e,0xc2,0x98,0xd0,0xa4,0xa5,0xdb,
- 0x62,0x1b,0x46,0x83,0x93,0x1f,0xd3,0xca,0x4f,0x6b,0xff,0xa0,0x2c,0x8c,0x79,0xba,
- 0xc9,0x69,0xed,0xf7,0x74,0xa1,0xca,0xe2,0xd7,0x03,0xe4,0xe5,0xe8,0x8d,0xb1,0x5a,
- 0x7b,0x7e,0x30,0xcd,0x8f,0x5d,0xfd,0x98,0xde,0x19,0xaf,0xa4,0xf2,0x0a,0xf1,0x15,
- 0x3a,0x00,0x3b,0xba,0xe5,0x31,0x32,0x9b,0x6e,0x8a,0xcd,0xdf,0x9d,0x3a,0xef,0xe3,
- 0x06,0xdd,0xd9,0x1f,0x92,0x3e,0x53,0xb4,0xb5,0x6e,0x0e,0x95,0xb5,0x9b,0x4e,0xc8,
- 0xfb,0xe5,0x4a,0xa1,0x68,0x8c,0x3c,0x86,0xfd,0x30,0xbb,0xe5,0x9c,0xf9,0xc1,0xb0,
- 0xf4,0x92,0xd0,0x39,0xbd,0x3a,0xe6,0x87,0x7b,0x75,0xa0,0x47,0x18,0x5c,0xb3,0xca,
- 0xa0,0x72,0xe7,0x07,0xa5,0x3d,0xea,0xd1,0x8e,0xeb,0x9f,0x67,0x7f,0x5f,0x5d,0x8a,
- 0xd3,0x3a,0xb8,0x1f,0xeb,0xbb,0x7b,0x0a,0x9a,0x69,0x4d,0xce,0xfc,0x20,0xd6,0x67,
- 0xbd,0x0b,0x8d,0x51,0xef,0x46,0xf4,0x3f,0x2a,0xef,0x86,0xed,0x98,0x9f,0xc6,0x4c,
- 0x7e,0xec,0x19,0x75,0x12,0x16,0xc1,0x16,0x5d,0x8c,0xc3,0xa0,0xb6,0x44,0x33,0xdd,
- 0x38,0x4d,0x19,0x8b,0xb2,0xf2,0x83,0xd0,0x3b,0xe0,0xa3,0xb2,0x4c,0xaa,0xe8,0xb8,
- 0xee,0x0b,0xbb,0xb1,0x3f,0xcf,0x61,0xec,0x2f,0x91,0x3b,0x3f,0x88,0xfd,0x01,0xf4,
- 0xb9,0x11,0x79,0x0b,0xd9,0x09,0xf7,0x69,0x35,0xaa,0x79,0x1b,0x4d,0x2b,0xa6,0xb2,
- 0xf4,0x51,0xf2,0x5c,0x2a,0xd3,0x10,0xd0,0x3e,0xf6,0x9a,0x78,0x30,0x04,0xed,0x95,
- 0x03,0x91,0xd6,0xbc,0xfd,0x01,0x26,0xd4,0x06,0xea,0x89,0x74,0xc6,0x68,0x02,0x1a,
- 0xc1,0x68,0x3b,0xac,0x36,0x3f,0x66,0x5f,0x0f,0xce,0xfe,0x90,0x1f,0xce,0x5b,0x42,
- 0xbd,0xba,0x98,0xfc,0x1c,0x9e,0x50,0xc1,0xcb,0x9a,0xf8,0xfc,0xe4,0xce,0x0f,0x6e,
- 0x34,0x17,0x49,0x55,0xca,0x18,0x9b,0xf6,0x91,0xf6,0x46,0x74,0x91,0xd1,0x31,0xe0,
- 0x8d,0xa6,0x7a,0x95,0x19,0x71,0xeb,0x3c,0x6b,0xbd,0xc2,0xc8,0x0f,0xa6,0xd1,0xce,
- 0x33,0xa1,0xd1,0xd2,0x1e,0x3c,0xdf,0xb6,0x8e,0x78,0xe8,0x26,0xd5,0xb7,0x83,0xfd,
- 0x34,0x66,0xf9,0xff,0x04,0x6c,0x51,0x9c,0xd1,0xe7,0x7a,0x36,0x2d,0x8f,0x73,0x1a,
- 0x30,0xb2,0x52,0x7d,0x18,0x54,0x8d,0xfd,0x74,0x2e,0xad,0x0f,0x97,0xf6,0x64,0xa1,
- 0x85,0x51,0x9a,0x6a,0x0b,0x19,0x80,0x99,0xc2,0xed,0xda,0x4c,0xbb,0x3e,0xfc,0xb3,
- 0xe5,0xa3,0xfc,0x3c,0x3b,0x5b,0xb4,0x25,0xc7,0x95,0x17,0x85,0x06,0x7d,0x55,0x7c,
- 0xfa,0x3a,0xe9,0x75,0xa9,0x6e,0x0e,0xfb,0x29,0x66,0xf9,0x9f,0x58,0x4a,0x1f,0xbe,
- 0xd5,0x36,0x1b,0x57,0xe0,0x1f,0x52,0xf8,0x47,0x79,0x1f,0xbc,0xfd,0x8e,0xfe,0x90,
- 0x98,0x1f,0x7c,0xd7,0xf9,0xfc,0x3f,0x31,0x96,0x19,0xf6,0x9f,0x54,0x5f,0x64,0xa1,
- 0x81,0xfd,0xf4,0x81,0xb5,0x3e,0x4f,0x64,0xd4,0x4b,0xe2,0xc1,0x3a,0xcc,0xe8,0xae,
- 0xfd,0x6d,0x71,0x5f,0xe7,0x1d,0xea,0x1b,0xa4,0xae,0x9d,0xcd,0xe6,0x47,0xd6,0x7a,
- 0xd0,0xa5,0x95,0x59,0xd1,0x79,0x25,0xcc,0x68,0x0b,0x24,0xe4,0x7d,0x64,0x0f,0xfc,
- 0x00,0xaa,0x95,0x1e,0xc7,0xf9,0x68,0x8a,0x51,0x26,0xef,0xbe,0xab,0x90,0xa3,0x9d,
- 0xb7,0x2d,0xd8,0x83,0x1d,0x23,0xa3,0x07,0xa2,0x95,0x31,0x76,0x65,0xdc,0x86,0x7f,
- 0x56,0x1a,0x20,0xa7,0x91,0xa1,0x9d,0x5e,0x25,0x90,0x74,0x2f,0xb9,0x69,0x50,0xf9,
- 0x10,0x38,0x10,0x7a,0x80,0x3e,0x1f,0xbf,0x7e,0xd4,0xeb,0x38,0x1f,0xb6,0x1c,0xfb,
- 0x43,0xde,0x63,0x76,0x43,0x42,0xf6,0x98,0x37,0x0a,0x58,0x34,0xc0,0xf3,0xe9,0x6f,
- 0x40,0xcb,0x11,0xc4,0x3f,0xd6,0xfc,0xcb,0xd2,0x9e,0x74,0x7e,0x10,0x0b,0x57,0x4b,
- 0xe2,0x55,0x28,0x94,0xe2,0x07,0xd5,0x8d,0x0a,0x2f,0xf6,0xd7,0xc9,0x5b,0x1d,0xfa,
- 0xf0,0x0a,0x67,0x7f,0x80,0x7e,0xf7,0x37,0x7d,0x58,0x16,0x57,0xc5,0x1b,0x05,0xe0,
- 0x89,0x69,0x83,0x45,0x0c,0xff,0xa8,0xe6,0xf3,0x1d,0xf9,0x41,0x6e,0x7c,0x9b,0xe0,
- 0x89,0x69,0x73,0xf8,0x78,0xe1,0xe1,0xef,0xfd,0x08,0xc7,0x9b,0xb4,0xf0,0xea,0x88,
- 0x9d,0x9f,0xaf,0x37,0x8c,0xe3,0xa1,0x1e,0x53,0x68,0x27,0x1a,0x08,0x3c,0xad,0x0f,
- 0x4f,0x96,0x8f,0x28,0x06,0xc8,0x31,0x60,0x4f,0xc7,0x3f,0xc4,0x44,0x3c,0x31,0xad,
- 0x81,0x9f,0x27,0x25,0x1e,0x33,0x5a,0x07,0xd8,0xf0,0x8f,0xe0,0xac,0xd7,0x36,0x8f,
- 0x45,0xbb,0xcb,0xcc,0x18,0x36,0xc2,0xb4,0x3c,0xf9,0xc1,0x94,0xa1,0x54,0x55,0xf3,
- 0x7e,0xc8,0xdd,0xbc,0x10,0x4c,0xe0,0x89,0xb0,0xbc,0xfd,0x01,0xb8,0x50,0x19,0x1b,
- 0x25,0xed,0xd4,0xfc,0x51,0x57,0xb5,0x6b,0x33,0x94,0x24,0x1d,0xf8,0x67,0x71,0x41,
- 0x46,0x37,0x24,0x16,0xaf,0xab,0x55,0x3c,0x1f,0xad,0x07,0x11,0xd1,0x66,0xde,0x31,
- 0xc0,0xd6,0x1f,0xc0,0x5f,0x86,0xf9,0xc1,0x6a,0x5e,0x2f,0x0f,0x0f,0xf2,0xfe,0x48,
- 0xf7,0xe1,0x95,0x30,0xd2,0x0f,0x58,0x3a,0x97,0xd1,0x1f,0x69,0x43,0x66,0x7f,0x00,
- 0x6f,0x44,0x64,0xab,0x10,0x4a,0xa1,0x84,0x56,0x51,0x48,0x18,0x47,0xa7,0x9d,0xb5,
- 0xea,0xeb,0xb7,0x67,0x9e,0x97,0xc1,0x46,0x77,0x3e,0x75,0x3e,0x48,0x64,0xf8,0x47,
- 0xd8,0x3a,0xdb,0x1b,0x9d,0xf1,0x51,0xce,0xfe,0x00,0x86,0xf1,0x50,0xe7,0xef,0xe1,
- 0x35,0xa5,0x41,0xf3,0x60,0x7d,0xdc,0x6b,0x59,0x7a,0xaa,0x8a,0xb4,0x3e,0x9c,0x1b,
- 0x62,0x17,0x33,0xba,0x19,0x10,0xc2,0x63,0x2b,0x61,0x44,0xe5,0x3f,0x9d,0x4e,0xe3,
- 0x1f,0xb0,0xe5,0x07,0x1f,0x34,0x8d,0xef,0xaa,0xf3,0x97,0xcb,0xed,0xe4,0x16,0xfa,
- 0xe0,0xe7,0x02,0xe1,0x99,0xf6,0xfe,0x48,0xdb,0xa5,0x5d,0x59,0xea,0xb2,0x01,0x7a,
- 0x3f,0x99,0xaf,0xe1,0xfd,0xe6,0x54,0xdb,0xf4,0xe1,0x99,0xe3,0xc5,0xb7,0xe5,0x7a,
- 0x6f,0x7f,0xd4,0xbd,0x46,0x7a,0x4d,0x68,0x0e,0x7b,0xa3,0x64,0xc4,0xd2,0xe7,0x24,
- 0x1c,0xfd,0x01,0xd2,0x46,0x0a,0x18,0x17,0xc1,0xec,0x35,0x0e,0xfc,0x23,0x67,0xf4,
- 0x07,0x60,0xc6,0x34,0x23,0x51,0xc8,0x3c,0xfc,0x18,0x76,0xcc,0xc6,0x7a,0xcc,0x63,
- 0xd4,0x5c,0xff,0x19,0xfa,0x70,0x34,0x0a,0x47,0x78,0x07,0x0c,0xbc,0x22,0x19,0x86,
- 0xd8,0x9d,0x5e,0x0f,0x52,0xd6,0xee,0xe0,0xe6,0x41,0xdc,0xb8,0xa1,0x50,0x3c,0x81,
- 0x19,0xf6,0x01,0x87,0x3e,0x9c,0x2a,0xb7,0x9a,0xdf,0xef,0xad,0xb6,0x44,0x21,0xcc,
- 0x01,0x51,0x23,0xaf,0xc2,0x81,0x6d,0x73,0x10,0x08,0x8d,0x68,0xe6,0xf3,0xbb,0xbb,
- 0xbf,0x92,0x4a,0x02,0x12,0x33,0x1b,0x48,0x4e,0xb2,0x40,0x53,0x99,0xdc,0xba,0x41,
- 0x3c,0x09,0x1f,0xc6,0x17,0x1a,0xe7,0xa3,0x99,0xeb,0x4d,0x76,0xea,0xa5,0xb1,0xde,
- 0x67,0xc6,0x08,0x8c,0x4b,0x77,0xa0,0x42,0x6c,0x18,0x26,0xb4,0xc6,0xed,0xec,0xa7,
- 0xc8,0xbd,0xe6,0xfc,0x40,0xd9,0xb3,0x2c,0x5a,0x2d,0x31,0xce,0x77,0x78,0xc3,0x6c,
- 0x14,0x90,0xd2,0xf7,0xde,0xc5,0xfe,0x87,0xee,0x39,0xcf,0xae,0x8c,0x59,0xf3,0xff,
- 0xa4,0x62,0xf6,0x87,0xe4,0xfe,0x27,0xf0,0x36,0x1b,0xe6,0x69,0x6d,0xff,0xce,0x1b,
- 0x02,0x6e,0x8d,0x48,0x5a,0xaf,0x52,0xcd,0xf1,0x8f,0x35,0xff,0x00,0x8f,0x09,0x76,
- 0x7f,0x95,0x70,0xaf,0x57,0x4e,0x44,0x53,0x8a,0xf1,0xff,0x8e,0x57,0xda,0x57,0xac,
- 0xb7,0xed,0xdf,0x55,0x65,0x4b,0x96,0x3f,0x4f,0xc8,0x71,0xc9,0x0f,0x6e,0x60,0xdf,
- 0x57,0x2f,0x54,0x87,0x33,0xfa,0x03,0x18,0xd1,0xc4,0xda,0xad,0x5f,0x17,0x27,0x67,
- 0xbb,0x27,0x8c,0xfe,0x72,0x6b,0xd1,0x03,0xb7,0xb1,0xf1,0x9e,0x4e,0xeb,0xc3,0x85,
- 0x3d,0x52,0xc6,0xfc,0x60,0xa2,0x50,0xe0,0x65,0x02,0xc3,0xf2,0x04,0xcc,0x56,0x1c,
- 0xfd,0x91,0x2a,0x95,0xac,0x78,0xd7,0x3a,0x6e,0x1c,0x14,0x82,0x8a,0x29,0x76,0x25,
- 0xec,0x19,0x63,0xfb,0x77,0xf3,0xfe,0x1d,0x92,0x71,0x3e,0xac,0x01,0x7b,0x52,0x6c,
- 0x03,0x3c,0xc3,0x22,0xb6,0x5b,0x27,0xe7,0xd9,0xff,0x62,0x00,0xe4,0xb8,0x2f,0xed,
- 0x7f,0xb0,0x3f,0x40,0xe6,0xe9,0x15,0xa3,0x90,0x92,0x85,0x8f,0x60,0xab,0x9c,0x6d,
- 0x8e,0xfe,0x00,0xae,0x32,0x4f,0x3a,0xcc,0x3d,0x0c,0x81,0xa3,0xd8,0x38,0x48,0x8d,
- 0x57,0x86,0x89,0x08,0x75,0x03,0x4a,0xaf,0x52,0xdb,0xe5,0x77,0xe0,0x9f,0xfb,0x59,
- 0x58,0x41,0x7d,0xf8,0x53,0x33,0x46,0xb1,0x51,0xf3,0xa9,0x9e,0xfd,0x5f,0x1d,0xa1,
- 0x13,0x6a,0x5d,0xa2,0x24,0x28,0xbe,0x8d,0xf3,0x03,0x2c,0x10,0x27,0xd3,0xe7,0xc3,
- 0x96,0x5f,0x82,0x09,0x85,0x9f,0x0f,0x8b,0xea,0xaf,0xe6,0x97,0x5e,0x3e,0xd7,0x39,
- 0x0e,0x97,0x94,0x16,0xfc,0x5e,0xce,0xc7,0xde,0x57,0x5b,0x8a,0x1c,0xf8,0xa7,0xbf,
- 0x20,0x0e,0xef,0x09,0xd3,0xcf,0x04,0xc6,0xc5,0x66,0x98,0xec,0xba,0x51,0xf5,0x8c,
- 0x73,0xa1,0x78,0x4b,0x1e,0xfe,0x47,0x97,0x93,0x42,0x31,0xf5,0xe9,0xfe,0x3e,0x82,
- 0xfa,0xf0,0x5a,0xd5,0x35,0x35,0xff,0x73,0x4c,0x8a,0xc1,0x0e,0xca,0x9b,0xf2,0xe1,
- 0xc0,0x6b,0x21,0x27,0xbf,0x61,0xe3,0x7f,0xa4,0xc7,0xe5,0xcd,0x2a,0x46,0x2b,0x29,
- 0xe0,0x61,0xf3,0xa9,0xba,0xa6,0xd6,0x87,0x2f,0x2d,0x7f,0x1b,0x76,0x40,0x10,0xa3,
- 0x79,0x40,0x9a,0x90,0x9a,0x82,0xf6,0x63,0xf5,0xd2,0xfd,0x21,0xad,0xf3,0x61,0xe3,
- 0xc2,0x6e,0xf9,0x02,0xe5,0x41,0x9c,0xaf,0x07,0xc8,0xad,0x0f,0xb7,0xf5,0xc7,0x7e,
- 0x12,0x8e,0xc2,0x3e,0xab,0xdb,0x24,0x94,0xe4,0x7a,0xbe,0xbd,0x3e,0x4e,0x86,0x13,
- 0xe0,0x3b,0xc3,0xd0,0x0b,0x7f,0xdb,0xd2,0x4f,0xe2,0x7f,0xa4,0x65,0xd0,0x19,0x56,
- 0x93,0xae,0x3a,0xec,0x8e,0x0e,0x01,0xd9,0x95,0x6b,0x7e,0xc6,0xd2,0xf8,0x07,0xbe,
- 0x1c,0xfa,0x2e,0xad,0x1c,0x96,0x53,0xfd,0x91,0x62,0x90,0x02,0x06,0x79,0xce,0x07,
- 0x59,0x5b,0xa1,0xc1,0xf3,0x34,0x7e,0x04,0x65,0xe1,0x03,0x1f,0x4a,0x4d,0xed,0x25,
- 0x4b,0xc4,0xe3,0x90,0x6a,0x0b,0x69,0xf1,0x3f,0x27,0xd3,0xfc,0xcf,0xd5,0x71,0xe1,
- 0x3d,0xb0,0xce,0x97,0x69,0xd6,0xec,0x8d,0x02,0x72,0xea,0xc3,0xf7,0x28,0x2f,0xb6,
- 0xd5,0x25,0x4b,0x16,0xf3,0xfe,0x00,0x4d,0x6a,0xf1,0xd4,0xfa,0xf0,0xc4,0xd5,0x8f,
- 0xc1,0x2f,0x79,0x37,0x00,0xce,0xff,0xcc,0x07,0x39,0x17,0xff,0x73,0xd1,0xa6,0x8f,
- 0x8a,0xa8,0x0f,0x73,0xda,0xa7,0x90,0x17,0x06,0xae,0xe7,0xb0,0xe7,0x11,0x3a,0x3f,
- 0x8f,0x3e,0x3c,0x21,0xdd,0x27,0x77,0x42,0x8c,0x81,0x9c,0xab,0xf8,0x87,0xa6,0x15,
- 0x05,0xe7,0x4e,0xcd,0xff,0x8c,0xc3,0x0f,0x63,0x75,0x88,0x7f,0xf0,0x34,0xb4,0x96,
- 0x58,0xb1,0xa3,0x51,0x76,0x36,0xff,0x23,0xc4,0xa6,0x8d,0x85,0xd9,0x32,0xe8,0x42,
- 0x7d,0xb8,0x71,0x5e,0xe7,0x27,0xe9,0xc3,0xf1,0x90,0x2f,0xef,0x43,0xfc,0x18,0xd0,
- 0x86,0xb5,0xb6,0xc0,0x27,0xe4,0xd2,0x87,0xc3,0x1a,0xd8,0x9c,0xf4,0xb5,0xbb,0x51,
- 0x4f,0x9e,0x57,0xef,0x6d,0xc7,0x3f,0x52,0xe1,0x66,0x69,0x67,0x78,0x66,0x94,0xfc,
- 0x08,0xcf,0xf3,0xca,0xa7,0x0f,0x37,0xd7,0x83,0x5f,0x92,0xf8,0xb1,0x68,0x16,0xdb,
- 0x93,0x9b,0xff,0x49,0xe3,0x1f,0x4f,0x98,0x26,0x54,0x9c,0x1f,0xce,0xff,0x38,0xdb,
- 0x42,0xa6,0xf5,0xe1,0xb6,0xfa,0xb8,0xfd,0xb1,0xcb,0xd0,0xb4,0xdc,0x1b,0x9d,0xb6,
- 0x8b,0xd3,0x38,0xa8,0x0f,0x97,0xa6,0xe2,0x7f,0xfe,0x8d,0xfe,0xab,0xa7,0x5e,0xf3,
- 0x0c,0x89,0xdf,0x62,0xbf,0xde,0xe8,0xa0,0x4d,0x72,0x9f,0x0f,0xd2,0xd5,0xad,0xed,
- 0x04,0x3f,0x0d,0x31,0xfc,0x43,0x4c,0xda,0x47,0xc8,0xab,0x0f,0xd7,0x36,0x76,0x3d,
- 0x88,0x7c,0x97,0x39,0x3a,0xd7,0xd4,0xfa,0x70,0x86,0x7f,0x2a,0x1e,0x65,0xe8,0x91,
- 0x57,0x03,0xb1,0xd9,0xbb,0x05,0x8c,0x69,0x2c,0xc9,0xa3,0x0f,0x8f,0x95,0xbf,0x15,
- 0x7e,0xcd,0x13,0xd4,0x56,0x46,0x5b,0x39,0x9b,0xb7,0x3e,0xe0,0xd0,0x87,0x67,0xf1,
- 0x3f,0x09,0xe1,0xc7,0xd2,0x19,0x78,0xd6,0xf1,0xd7,0xcf,0xc1,0xff,0x58,0xfe,0x47,
- 0x56,0x76,0x40,0xe2,0xb6,0x3a,0xc9,0x13,0x31,0x66,0x5b,0x31,0x8e,0x05,0x21,0x25,
- 0x79,0xfb,0x43,0x2e,0x0e,0x3f,0xa0,0x55,0xc5,0xe5,0x24,0xb9,0x60,0xf4,0x47,0xca,
- 0xa5,0x0f,0xb7,0xd5,0xc7,0x49,0xff,0x03,0x22,0x5a,0xac,0x93,0xcd,0x4f,0x02,0xfb,
- 0xd5,0x6c,0xe0,0x65,0xb9,0xd9,0xfa,0x70,0x2b,0xde,0x31,0xfc,0xd3,0xc9,0xd0,0x8e,
- 0xbc,0x8c,0x9c,0x62,0xc0,0x60,0x41,0xf4,0xaf,0x73,0x7d,0xbf,0xe9,0xfe,0xd8,0xdd,
- 0xdd,0x77,0xc3,0x2f,0x69,0x7d,0x38,0xd0,0x26,0xbe,0xa2,0x30,0xfc,0x73,0x5b,0xc9,
- 0x06,0x16,0xcd,0x3f,0xee,0x72,0xea,0xc3,0x6d,0xe7,0xc3,0x16,0xec,0x99,0x31,0x81,
- 0x45,0x7f,0x31,0x43,0x0d,0x05,0x39,0xfd,0x89,0xad,0x3e,0xae,0xeb,0x59,0xe5,0x97,
- 0xf7,0xd6,0xc7,0x3c,0x89,0xd6,0x93,0x0c,0xff,0xdc,0xa8,0xda,0xc3,0x56,0xae,0xf3,
- 0x61,0x2b,0x1e,0xd3,0xc4,0xe9,0x8b,0x40,0x5e,0x4a,0x12,0xda,0x26,0x98,0x5f,0xe8,
- 0x42,0x20,0xc4,0x36,0x86,0x8e,0xf7,0x77,0xf6,0x47,0xda,0x8a,0x7a,0x7b,0x54,0x7f,
- 0x3d,0x82,0xb2,0xa8,0x5c,0xe3,0xb5,0xf5,0x07,0x60,0xfb,0xaf,0x4e,0x7d,0x2e,0x66,
- 0xe9,0x74,0xb6,0xdb,0x0a,0x40,0x4e,0xfe,0xd9,0x81,0x7f,0x68,0xbf,0x5e,0x47,0x3d,
- 0x54,0xd0,0x91,0x66,0x0f,0x7b,0xe3,0x42,0xf6,0x78,0x6d,0xe7,0xc3,0x0a,0xbb,0xc9,
- 0x05,0xb6,0xe9,0x58,0xd5,0x85,0xc7,0x94,0xb3,0xf9,0xa9,0xcd,0x35,0x3f,0xe9,0xfe,
- 0xd8,0x95,0xca,0x63,0xdd,0x2f,0x03,0xfb,0xbe,0x06,0x59,0x10,0x7f,0x9f,0x7d,0x8f,
- 0xa9,0x7a,0x1f,0xaf,0x23,0xde,0xd9,0xf2,0x23,0xd2,0xdf,0xd0,0x9e,0x63,0x35,0x20,
- 0x77,0x93,0xdf,0xe1,0x69,0x02,0x6a,0x71,0xae,0xf8,0xe5,0xec,0x8f,0xf4,0x44,0x87,
- 0x8f,0xb2,0xcf,0xd0,0xa7,0x32,0x20,0xa4,0x5e,0x9d,0xf3,0x7e,0x9b,0x3e,0x5c,0xc2,
- 0x26,0x24,0xec,0xff,0x48,0x3f,0x5b,0x48,0xb5,0x70,0xf5,0x42,0x63,0x5a,0x86,0xf2,
- 0xe8,0xc3,0xef,0x5f,0x09,0x3f,0x55,0xb0,0x3e,0x45,0x54,0x91,0x88,0x60,0xeb,0x61,
- 0xc6,0x7b,0x5a,0x56,0xfd,0x57,0x5a,0x1f,0x55,0x7e,0x1e,0x26,0xab,0x39,0xda,0x19,
- 0xa3,0x3c,0xbe,0x9f,0xc3,0x63,0x61,0xfd,0xfc,0x58,0xd8,0x3c,0xfa,0x70,0xac,0xaf,
- 0x34,0xd3,0x5e,0x7a,0x71,0xa2,0xaa,0x8e,0x19,0x9c,0xff,0x39,0x07,0x83,0xb4,0x65,
- 0x30,0xab,0x3f,0xb6,0xc1,0xff,0xa0,0x50,0x9c,0x2e,0x48,0xc2,0x76,0x32,0xb7,0xe2,
- 0x30,0xd4,0x20,0xec,0xf9,0x2d,0x3c,0x19,0x59,0x30,0x98,0xd5,0x1f,0xbb,0x97,0xa4,
- 0xce,0x87,0xc5,0xb2,0xd3,0x22,0x5a,0x0a,0xf0,0xb0,0x51,0xa6,0xbd,0x1b,0xcb,0x11,
- 0x13,0x59,0xfd,0xb1,0x1d,0xb3,0x27,0x47,0x7d,0x81,0x78,0x2f,0x3f,0x28,0x84,0x6d,
- 0x44,0xad,0xf3,0x41,0xcc,0xbf,0xaf,0x5a,0x6e,0x83,0xc1,0x48,0xd4,0xdc,0x5f,0x20,
- 0x56,0xc2,0x84,0xd1,0xd1,0x68,0x80,0x26,0x84,0xd4,0xf9,0x68,0xe6,0xf3,0x1d,0xfd,
- 0x01,0x26,0x59,0xf4,0x77,0x8f,0xfc,0xe8,0xa3,0xd4,0x15,0xe1,0x63,0xf5,0xb2,0xd1,
- 0x28,0x20,0x7f,0x7f,0x48,0xdd,0x43,0xf9,0xc2,0xe3,0x34,0xe3,0xdb,0xbc,0x82,0xc3,
- 0x93,0xb3,0x3f,0xb6,0xf1,0xfe,0x0b,0xf4,0xb6,0x5d,0x22,0xb6,0x05,0x6b,0x48,0xe1,
- 0x61,0x76,0x05,0xec,0xf8,0x47,0xcf,0x3c,0x1f,0x56,0xae,0x26,0xcb,0xb5,0x19,0x46,
- 0xe2,0x46,0xd3,0xe2,0x61,0x43,0x1f,0x9e,0xa7,0x3f,0x00,0x83,0x3d,0xfe,0xd5,0xe4,
- 0xa4,0x76,0x20,0x86,0x1d,0x14,0x43,0xaf,0xc0,0xd3,0x5d,0xf3,0xb1,0x5e,0xde,0x86,
- 0x7f,0xb0,0x3f,0x40,0x34,0x80,0xe7,0xc7,0x71,0xb4,0x33,0xe2,0xa9,0x14,0x5f,0x18,
- 0x98,0xa0,0x1b,0x30,0xff,0x35,0x00,0x1f,0x48,0x4d,0x89,0x40,0xce,0xfe,0x00,0x06,
- 0xec,0x69,0xfe,0x4d,0xed,0x83,0x33,0x9e,0x99,0x9e,0x9a,0xb1,0x61,0x6d,0x62,0x75,
- 0x66,0x7f,0xc8,0xf2,0x51,0x93,0x1f,0xe3,0x13,0x75,0xc2,0xbb,0xbf,0xf3,0x9d,0xfe,
- 0x89,0x54,0x7f,0xf2,0xee,0x13,0x7a,0xdd,0xb9,0x29,0xfa,0x03,0xe0,0x7e,0xea,0x9b,
- 0xa1,0x13,0x9a,0x71,0xbe,0x12,0xf9,0xd7,0xd8,0x53,0xea,0xf5,0x27,0xe4,0xcc,0xfe,
- 0x00,0x3f,0x71,0xa0,0x9d,0xbf,0x23,0x1f,0x75,0xe1,0x15,0xd7,0x06,0xf2,0x06,0x3c,
- 0x4b,0x2b,0x51,0x1f,0x3e,0x66,0xf1,0x3f,0x6d,0x52,0xca,0x7b,0xc7,0xcd,0xaf,0xa9,
- 0x29,0x82,0x07,0x0d,0xf3,0xc6,0x77,0x83,0x65,0xbd,0x72,0x75,0x46,0x7f,0x80,0x82,
- 0xdd,0xf0,0x8e,0x03,0xed,0xfc,0x18,0x0d,0x81,0xcb,0xc2,0xdf,0xd6,0x4e,0xf6,0xd7,
- 0xd1,0xda,0xfc,0xfd,0x21,0x31,0x11,0x86,0xc6,0x76,0xa1,0x19,0xa6,0xb1,0xf8,0xcb,
- 0xfb,0x43,0x16,0xe4,0x39,0x1f,0xd6,0x50,0x83,0x17,0x6f,0x47,0x22,0xc8,0xaa,0x17,
- 0xe3,0xa9,0x10,0xe2,0xc4,0x3f,0x46,0x90,0x15,0x0d,0xa3,0xbb,0x8f,0xbc,0x4f,0x31,
- 0xc3,0xc5,0xc2,0x2e,0xdb,0x91,0xe9,0x99,0xf9,0xaf,0x72,0x4b,0x1f,0x6e,0x18,0xf3,
- 0xf6,0x62,0x9b,0x56,0x06,0x84,0xb0,0x9f,0x2a,0x0a,0xc5,0xf3,0xf6,0xc7,0xe6,0xf5,
- 0x62,0x0c,0x18,0x84,0x10,0x06,0xa8,0x08,0x84,0x96,0x09,0xa9,0x8a,0xb9,0x9c,0xfd,
- 0xb1,0xf1,0x7c,0xae,0x66,0xb9,0x98,0xb6,0xc6,0xa4,0x71,0x78,0xd6,0x8a,0xbf,0x28,
- 0x14,0x3f,0x6b,0xef,0x0f,0xe0,0x44,0x3b,0x2f,0x47,0x2b,0x07,0xc0,0xa0,0x7d,0xd8,
- 0x95,0x0f,0x60,0x8a,0xfe,0x90,0xfc,0x74,0x54,0x34,0xe4,0x0b,0xc8,0xff,0xa4,0xae,
- 0xb4,0x79,0x1c,0xfc,0x8f,0xe2,0xe4,0x7f,0x14,0x99,0x03,0x21,0xf0,0xc1,0xe7,0x28,
- 0x19,0x91,0xb1,0x51,0x76,0x76,0x7f,0x00,0x5e,0xfd,0x17,0x4a,0xe3,0x1f,0x61,0xaf,
- 0x9a,0x46,0x80,0x37,0xcb,0x59,0xfd,0xb1,0xed,0xe8,0x91,0xa7,0xbd,0xf6,0xb2,0xf9,
- 0x2f,0xe2,0x57,0xa8,0xd1,0x1f,0x32,0xcd,0xff,0x94,0x65,0xf0,0x39,0x0f,0x30,0xa3,
- 0xeb,0x02,0x3c,0x8d,0xef,0xff,0xe6,0xe7,0x2e,0x84,0x67,0x63,0x22,0x2f,0xcd,0xff,
- 0xec,0x06,0xc7,0xfd,0x4d,0x5a,0x49,0xb4,0x6a,0x98,0x66,0xe2,0xe1,0xcc,0xf3,0xd1,
- 0x6c,0x68,0x73,0x6b,0x87,0x78,0x86,0x5a,0x1d,0xb3,0xc7,0x8d,0x83,0xd2,0x6c,0xfd,
- 0x01,0xa4,0x0c,0xfe,0x47,0xde,0x43,0xde,0xa5,0x68,0x30,0x84,0xff,0x0e,0x1c,0x52,
- 0x79,0x7f,0xb9,0x74,0x7d,0x9c,0xdf,0xd9,0x9f,0x84,0x7d,0x2f,0x8d,0xd2,0xcb,0xf0,
- 0xb0,0x10,0xd0,0x85,0x20,0xf9,0x82,0xd2,0x4b,0x3d,0xe8,0x7f,0xd2,0xfc,0x8f,0x43,
- 0x1f,0x6e,0xf6,0x77,0x85,0x03,0x41,0x7e,0xe5,0x9f,0x19,0x3e,0xe6,0x57,0xd2,0xfc,
- 0x8f,0xdf,0xde,0x1f,0xf2,0x00,0x6d,0x4a,0x7a,0x57,0x8b,0xa7,0x85,0x8f,0x77,0xf3,
- 0x2b,0x27,0xe1,0x6f,0x69,0xcb,0x48,0x20,0xbb,0x3f,0x80,0xcd,0xdf,0x2e,0xf8,0x1e,
- 0x5b,0xc6,0xd8,0x78,0x84,0xf9,0x93,0x61,0x3a,0xa1,0x35,0x1f,0xf1,0x66,0x9c,0x8f,
- 0x66,0x80,0x9c,0x0b,0x29,0xb4,0xe3,0x19,0x65,0x61,0x2b,0x05,0x7b,0x26,0x61,0x52,
- 0x6f,0x79,0xd3,0x11,0xbf,0x76,0x9b,0xfe,0xe7,0x2e,0xe3,0xfd,0x93,0xdd,0x77,0x1b,
- 0x65,0xfb,0x03,0xee,0x6f,0x90,0xdf,0xd0,0xa7,0xd1,0xc3,0x64,0xe2,0x1f,0xc7,0x78,
- 0xdb,0x42,0x85,0x27,0xd4,0xd4,0x95,0x13,0xf4,0x29,0x82,0x8c,0x90,0x0d,0xff,0x84,
- 0xcb,0x32,0xd0,0x8e,0x5c,0xc1,0x76,0xf7,0xa9,0x0a,0x20,0xb6,0xde,0x64,0x03,0x4f,
- 0xe6,0xd1,0x87,0x63,0x34,0xe9,0xeb,0x3c,0x2b,0x4d,0x9a,0xf5,0x80,0x17,0x84,0x16,
- 0xec,0xaf,0x7b,0xda,0xde,0x1f,0xc0,0xc9,0xff,0x2c,0xd8,0x35,0xe3,0x3d,0xf3,0x09,
- 0x6f,0xc3,0x38,0x4d,0xe1,0x1f,0xf3,0xf9,0x19,0xfd,0x01,0x9a,0x74,0xcf,0x07,0x9d,
- 0xe3,0xaa,0x75,0x0c,0xc4,0x95,0x23,0x2d,0x48,0x04,0xa5,0xf9,0x9f,0x8c,0xf3,0x61,
- 0x59,0xfc,0x8d,0x91,0x33,0xb0,0xc4,0xb8,0xf2,0x36,0x1c,0x0a,0xd7,0xea,0x33,0x9d,
- 0xf8,0x27,0xf3,0x7e,0xca,0xfe,0x5e,0xa9,0xfa,0xb8,0xe1,0x18,0xfb,0x82,0xf4,0xd6,
- 0x78,0x69,0x86,0x3e,0x5c,0x33,0xfa,0x43,0xe2,0xfc,0x9c,0x90,0x09,0x9b,0x16,0x63,
- 0xc6,0x4a,0x75,0x1a,0x37,0x0e,0x4a,0x73,0xd6,0xc7,0xf1,0xd3,0x39,0x53,0xe3,0x3d,
- 0xc9,0x56,0xfb,0xdb,0x78,0x10,0xf9,0xab,0x7c,0x98,0xe3,0xbc,0x51,0x80,0x98,0x74,
- 0xf6,0x47,0xc2,0xd1,0xed,0xaf,0xe2,0xf1,0x2b,0xb1,0xa0,0x43,0x1c,0x8b,0xa5,0x14,
- 0xe3,0x49,0x6d,0xdc,0x10,0x72,0xd8,0xf1,0xcf,0x2b,0xf0,0x91,0xba,0x88,0x06,0x6c,
- 0x68,0x79,0x2a,0xfe,0x87,0x2a,0x6f,0xc2,0x73,0x7a,0xd5,0x58,0x1b,0x67,0x7b,0xc0,
- 0x79,0x2c,0x48,0xce,0xf3,0x41,0x58,0xbc,0x57,0xe6,0x76,0xe5,0xa4,0x7d,0x72,0x9e,
- 0x0f,0x32,0x57,0x62,0xde,0x3b,0xb7,0xec,0x27,0xd7,0xf9,0xb0,0xe5,0xbf,0xa5,0x13,
- 0xbb,0x1a,0xda,0x73,0xd2,0x3e,0x39,0xce,0x87,0x4d,0x0a,0xfb,0x61,0x32,0xda,0xd8,
- 0x96,0x93,0xf6,0x49,0x9f,0x0f,0x62,0xd3,0xff,0xc4,0xc2,0x47,0xa1,0xb4,0x3d,0xa7,
- 0xec,0x27,0x27,0xff,0xf3,0x29,0xe8,0xe8,0xbe,0x3e,0x3c,0xf5,0xfb,0xdb,0xce,0x87,
- 0x15,0xbe,0x40,0xe8,0x6d,0x6a,0x41,0x4e,0xda,0x27,0xf7,0xf9,0x20,0xca,0x46,0x3a,
- 0x27,0xe8,0x4a,0x9d,0x06,0x92,0xc4,0x46,0xaf,0x53,0xea,0x7f,0x64,0x38,0x02,0x41,
- 0x85,0xb7,0x05,0xf8,0x10,0x66,0x8d,0x78,0x1b,0xd1,0x10,0x9a,0xfa,0xf3,0xe8,0x7f,
- 0x8a,0xfb,0xd8,0xfc,0xb4,0xa8,0xd7,0x8e,0x99,0xb4,0xcf,0x07,0x9c,0x08,0x72,0xce,
- 0x8f,0xbd,0x3f,0x12,0x5b,0x84,0xae,0xba,0x23,0xa9,0xf9,0x6f,0x4c,0xae,0x8c,0xb7,
- 0x9e,0x85,0xcc,0xf3,0x53,0x9c,0xf8,0xe7,0x29,0xa8,0xd4,0x8b,0xd1,0x9f,0x3c,0x67,
- 0xa4,0xbd,0x2e,0xc1,0xbf,0x64,0xe9,0x7f,0xcc,0xe7,0xf7,0xc3,0x43,0xb0,0x8f,0xde,
- 0x96,0xe4,0x7c,0xd7,0x73,0x74,0x1e,0x1a,0x57,0xb0,0x2c,0xce,0x31,0x5e,0x5b,0x7f,
- 0xa4,0x6d,0xc7,0xa1,0x37,0x1c,0x1e,0x9b,0x97,0xea,0xf7,0xa2,0x43,0xae,0x7e,0x0b,
- 0xf6,0xfe,0x48,0x7d,0x70,0x45,0xeb,0xc5,0xfe,0x90,0x88,0x7f,0x1a,0x29,0x37,0x96,
- 0x67,0xf0,0x3f,0x69,0xfc,0xb3,0x1c,0x92,0xfa,0x18,0x34,0x95,0x5a,0xf1,0x28,0xa7,
- 0x1e,0xc3,0xce,0xff,0xbc,0xa9,0x1d,0x55,0xf7,0x99,0x6a,0x96,0xba,0xdc,0xfb,0x7d,
- 0x7b,0xfe,0xeb,0x26,0xd8,0xac,0xee,0xbc,0xd9,0x50,0x9b,0x10,0x9f,0x11,0x88,0x1f,
- 0x9d,0xf2,0x7c,0x90,0xcd,0x82,0x2f,0x1d,0xa6,0x3f,0xb1,0x3f,0x40,0x21,0xf6,0x87,
- 0x34,0xf9,0x90,0x58,0x46,0x62,0x28,0x4b,0xff,0xd3,0xc7,0xf0,0x4f,0x42,0xdd,0x27,
- 0x07,0x8c,0xd1,0xd5,0xe1,0xe9,0x6f,0xd9,0xe3,0xb5,0x9f,0x0f,0x7b,0x9e,0x5c,0x46,
- 0xfd,0x0f,0x1f,0x1d,0xef,0x86,0x34,0x23,0x7b,0xbc,0x69,0xfc,0xb3,0x5d,0x38,0x0f,
- 0xef,0x75,0xd7,0xaf,0x4d,0xa1,0x9d,0xda,0xf6,0x9c,0xf3,0xe3,0xec,0x8f,0x8d,0x6d,
- 0x91,0xba,0x39,0xfe,0x51,0x03,0x82,0x9d,0xf6,0xc9,0x79,0x3e,0xc8,0x0b,0xb0,0x03,
- 0xaa,0x97,0xad,0x56,0x4a,0x79,0xf4,0xe1,0xc3,0x14,0xb2,0xf9,0x2e,0x1b,0xfe,0x91,
- 0x0e,0xaa,0x73,0x1d,0x6a,0x9f,0x1c,0xf3,0x99,0xe6,0x7f,0xbe,0xfb,0x7b,0x78,0x1b,
- 0x7e,0xcc,0xfe,0xbe,0xa1,0x29,0xf8,0x1c,0x5b,0x7f,0xc8,0xa5,0xd5,0xea,0x07,0x74,
- 0x71,0x28,0xe7,0x6d,0x39,0xf0,0x4f,0x4d,0xea,0x7c,0x58,0x8f,0x39,0xff,0x9e,0x5c,
- 0xf3,0x6f,0xd7,0xff,0x2c,0x66,0xd8,0xb4,0x8a,0xa6,0x68,0x9f,0x3a,0xea,0x8a,0xd5,
- 0x4d,0xd5,0x1f,0xc0,0x5f,0xb0,0x4c,0xeb,0xa5,0xfe,0x32,0x0b,0xff,0xe4,0x74,0xd4,
- 0xe9,0xf3,0x61,0x63,0x42,0x05,0x8b,0x5f,0xf3,0x84,0x22,0xfc,0x5a,0x17,0xd1,0x4a,
- 0xc7,0xb1,0x1a,0x69,0xfd,0xcf,0x32,0xf3,0xf9,0xbb,0xe5,0x6b,0x18,0xfe,0xe9,0x53,
- 0xe7,0x6f,0xa8,0x3a,0x0d,0x93,0x7b,0x3e,0x73,0xde,0x93,0xb3,0x3f,0x80,0xd5,0x9f,
- 0x44,0x2e,0xde,0x8d,0xa2,0x0e,0x8b,0x66,0x3f,0x61,0xf0,0x3f,0x66,0x07,0xe9,0xd7,
- 0x21,0xe3,0x7c,0x10,0xbd,0xe0,0x9c,0x36,0x11,0xfd,0x46,0x75,0xc9,0x78,0xd5,0x59,
- 0x6d,0x72,0x7b,0xcb,0x70,0x49,0x5f,0x8e,0xfe,0x36,0xf6,0xf3,0x61,0xa3,0xeb,0x37,
- 0x45,0x2b,0x1f,0x63,0xfe,0xe7,0x38,0x1c,0x88,0xd6,0x26,0xe5,0x46,0x74,0xa4,0x71,
- 0x0e,0x7b,0x72,0xf1,0x3f,0xda,0x5e,0x6d,0x87,0x5a,0xc9,0x69,0x6a,0x7a,0x80,0xed,
- 0x5e,0xf1,0x3c,0x14,0x7a,0xa0,0xc0,0x39,0xde,0xb4,0xde,0x46,0x2d,0xd3,0xb0,0xfb,
- 0x71,0xf4,0xea,0xa0,0x71,0x3e,0x23,0x56,0xc3,0xb1,0x1d,0x59,0xde,0xfe,0x00,0x6b,
- 0xcb,0xff,0x09,0x7e,0x87,0x85,0x62,0x18,0x1d,0xd0,0xbb,0x96,0xf0,0x7a,0x7f,0xc9,
- 0xe9,0x3f,0xed,0xe7,0xc3,0x8e,0x20,0xcd,0x1e,0xc2,0x5f,0xa5,0x09,0x21,0x4f,0x3c,
- 0x4a,0xe3,0x1f,0x5d,0x61,0x20,0x47,0xee,0xcd,0x4d,0xfb,0xd8,0xf8,0x9f,0x34,0xfe,
- 0xf9,0x6b,0x38,0x1c,0xf6,0xa5,0xe2,0x97,0x90,0x2f,0xfe,0xda,0xf0,0x0f,0x1e,0x0b,
- 0xe2,0x0b,0xa7,0xd2,0x34,0x7f,0x9d,0xfb,0x7e,0xbb,0xfe,0x07,0x94,0xc3,0xb2,0xaa,
- 0xd5,0x04,0xc9,0x4b,0xb4,0x57,0xf5,0x0c,0xe0,0xc1,0xe8,0xb2,0x79,0x42,0x4d,0x36,
- 0xff,0x43,0x8b,0x79,0x7f,0x12,0xad,0x04,0xcf,0xcb,0x9b,0x54,0x97,0xf0,0xfe,0x33,
- 0x5d,0x13,0x55,0xce,0x46,0x34,0xf6,0xfe,0x48,0x43,0x38,0x28,0x3e,0x5e,0xec,0x86,
- 0x3d,0xe0,0x3d,0x2f,0x8e,0x26,0x27,0xcb,0x9c,0xf9,0x8b,0x5c,0xfa,0x9f,0x94,0xec,
- 0xf9,0xe5,0xed,0x55,0xcd,0xcc,0xa8,0x4f,0x7a,0x93,0x6c,0x1a,0x4f,0xa8,0x75,0xb2,
- 0xf7,0x15,0x5b,0x7f,0x6c,0xae,0xff,0xa1,0x77,0xd8,0xd0,0xce,0x76,0xf8,0x19,0x33,
- 0x6a,0x92,0xee,0x3d,0xe4,0x7d,0xed,0xa7,0xd1,0x9a,0x31,0x66,0xc4,0xd3,0xe7,0xc3,
- 0x66,0xe9,0x7f,0xf0,0xfc,0x2f,0x6c,0xd3,0xe7,0xae,0x24,0xba,0x42,0x41,0x95,0xdc,
- 0xd3,0x49,0x5d,0x0e,0xfd,0x4f,0x68,0x1d,0x36,0x9e,0xea,0x5f,0xb1,0x37,0x75,0x50,
- 0x88,0x3b,0xf6,0x90,0xd1,0x6f,0x9c,0x7d,0xbf,0x71,0x6b,0x3d,0x2c,0xe5,0xfc,0x8f,
- 0xd9,0x4f,0x0c,0x97,0x4d,0x05,0x4f,0xc4,0xd4,0xe1,0xc1,0xf7,0x63,0x80,0x1a,0x10,
- 0xef,0x90,0xb8,0xd0,0xf2,0x3f,0x71,0x27,0xff,0xc3,0x8c,0x13,0xa6,0x91,0x14,0x53,
- 0x47,0xcd,0xc6,0x9c,0xe7,0xc3,0x9a,0x22,0xab,0x14,0xd1,0x14,0x4d,0xc9,0xae,0x3c,
- 0xbb,0x44,0x5d,0xd1,0xd1,0x23,0x29,0x8e,0xfe,0xd8,0x99,0xfa,0x9f,0x68,0xca,0x28,
- 0x8e,0x11,0xfc,0x7e,0x1b,0xfa,0x8b,0x63,0xe2,0xff,0x9a,0x42,0xff,0xa3,0x30,0xe3,
- 0xb0,0xe1,0x88,0x74,0xa3,0xe0,0x41,0xb1,0xf5,0xc7,0xb6,0xf4,0x3f,0x56,0xda,0x6b,
- 0xb5,0x91,0x08,0xe3,0x7a,0x18,0xe5,0x91,0xd8,0x1c,0xec,0x8f,0xbd,0x21,0x5b,0xff,
- 0x83,0x68,0xa7,0x17,0x9a,0x46,0xdc,0x4b,0x0a,0x07,0x35,0x3c,0xaf,0xc7,0x13,0x14,
- 0x8f,0x80,0x1e,0x0b,0xaa,0xec,0xfd,0x6d,0xfd,0xb1,0xcb,0x9f,0x01,0xdb,0xf9,0xb9,
- 0x46,0x7f,0x6c,0x63,0x06,0x3e,0x30,0xcf,0x17,0x1e,0xb1,0xe7,0xbf,0x9c,0xfa,0x1f,
- 0xbe,0x4d,0xdb,0x63,0x74,0xb0,0xef,0x13,0x55,0x38,0x41,0x1b,0xc0,0x1b,0x75,0xd7,
- 0xe4,0xd5,0xff,0xd8,0x0c,0x43,0x28,0x58,0x89,0xe7,0x33,0xd6,0x55,0x9b,0xcf,0x57,
- 0xb5,0x1f,0xca,0x99,0xe8,0xce,0x32,0x4a,0x61,0x1b,0x9d,0xa3,0xba,0x2b,0x88,0x9a,
- 0xee,0xbf,0xe4,0xac,0xcf,0x0d,0xe8,0x3d,0x41,0x9e,0x8f,0x0e,0x98,0xcf,0xe7,0xe7,
- 0x0f,0x96,0x5a,0xe7,0xa3,0x25,0xcb,0x47,0xf0,0xfc,0xf7,0xf4,0xf9,0x20,0xde,0xdd,
- 0x16,0xec,0x71,0xfb,0xe1,0xa4,0xa1,0xff,0x59,0x9c,0x43,0xff,0x33,0x23,0x15,0x7d,
- 0x3a,0xd2,0x61,0x68,0x0c,0x2e,0x49,0x2d,0xe0,0xd5,0xa6,0xea,0x0f,0x50,0x90,0x2a,
- 0x7b,0x37,0xea,0xc1,0xdf,0x36,0x84,0xb2,0x91,0x2c,0xfd,0xcf,0xcc,0x28,0xd8,0xc2,
- 0xee,0x6b,0x66,0xfe,0x25,0x55,0x9f,0xae,0xda,0xf5,0x3f,0xd2,0x0d,0xf6,0xee,0x3d,
- 0x45,0x56,0x7d,0x6e,0x94,0x9c,0x87,0x7f,0xc4,0x13,0xe8,0x86,0xc8,0xbd,0x19,0xfa,
- 0x1f,0x67,0xf4,0x1f,0x4e,0x09,0x81,0x22,0xaf,0xc6,0x36,0xd6,0xce,0x5f,0xee,0xbf,
- 0xf9,0x08,0x71,0xe8,0x7f,0x78,0x1b,0x4c,0x33,0xda,0x16,0xa3,0x91,0x30,0x84,0x40,
- 0xd8,0x28,0xb2,0x59,0xf6,0x1c,0x11,0x1f,0x48,0xf3,0x3f,0x59,0x7a,0x98,0xa1,0xcc,
- 0xf8,0x3e,0x2d,0x2a,0x4e,0xa5,0xff,0x49,0x0b,0x81,0xc4,0x35,0xf4,0xa8,0x5a,0x17,
- 0x2a,0x8e,0x76,0xde,0x64,0xe9,0x0f,0xb3,0xf4,0x3f,0x56,0x7f,0xa4,0x99,0x5d,0xbe,
- 0x4a,0x14,0x02,0x29,0x72,0x17,0x99,0x6d,0xcd,0xbf,0x43,0xff,0x63,0x1a,0x12,0x67,
- 0x84,0xa6,0x93,0x65,0x5a,0x87,0x56,0xad,0x15,0x29,0x24,0x34,0x85,0xfe,0x67,0x3b,
- 0x33,0x9e,0x30,0x19,0x36,0x9c,0x58,0x36,0xc3,0x85,0xb9,0xcf,0x87,0xb5,0x0c,0x6c,
- 0x8b,0x84,0x0c,0x9e,0x82,0x1d,0xd1,0x99,0xc7,0x58,0x6b,0xcb,0x7f,0x4d,0xd1,0x2f,
- 0x62,0x80,0x7c,0x00,0x87,0xb4,0x12,0xc5,0x91,0xff,0xca,0xd2,0xff,0x98,0x06,0xf0,
- 0x3f,0xc4,0x62,0x58,0x49,0x67,0xb8,0x6c,0xf9,0xaf,0xdd,0x59,0x68,0xc7,0x66,0xf0,
- 0x46,0x91,0x31,0xe2,0x52,0xac,0xf5,0x90,0x43,0x7f,0x98,0x36,0x48,0x27,0xf8,0x75,
- 0x7f,0xd0,0xe5,0xb2,0xfc,0x8f,0x4d,0xff,0x93,0x0d,0x7b,0x4e,0xf1,0xef,0x97,0x41,
- 0x05,0xbf,0xb5,0xde,0xba,0xbb,0xbf,0xa2,0xd8,0xd0,0xce,0xb5,0x0e,0xd8,0x73,0x1c,
- 0x7e,0x49,0x17,0x27,0x3d,0x8b,0xc5,0x1a,0xf3,0xf5,0xb3,0xf5,0x3f,0x39,0x0d,0xdb,
- 0xf9,0xb0,0x66,0x7f,0x00,0xb3,0x2d,0xd2,0xaa,0xf1,0x19,0x57,0xe4,0x54,0xfe,0x22,
- 0x9d,0xff,0x4a,0xf3,0x6f,0xca,0x63,0x9a,0xfd,0xb5,0xf1,0x34,0x10,0xc4,0x3f,0x46,
- 0xa3,0xa7,0xf0,0x81,0x0a,0x03,0xff,0xa4,0xcf,0x87,0xa5,0x39,0xfc,0x15,0x03,0x42,
- 0xce,0xc6,0x50,0xf6,0xfe,0xd8,0xd9,0xfa,0x1f,0x34,0xf8,0x09,0x50,0x2f,0x21,0xf5,
- 0x71,0x9e,0x45,0xfc,0x4c,0xfd,0x8f,0x35,0x3a,0x0c,0x64,0xa5,0xc8,0xf0,0xf0,0x88,
- 0xf3,0x3e,0x4c,0x74,0xdd,0x3d,0xe4,0x7d,0xd6,0xde,0x1f,0x3b,0x53,0xff,0xb3,0x35,
- 0x3e,0x03,0x8d,0xd9,0xfc,0x0a,0xfd,0x50,0x66,0xc0,0x60,0x5f,0x0e,0xfd,0x8f,0x3d,
- 0xfa,0xdb,0xae,0xb4,0xc0,0x42,0xdd,0x63,0xc7,0x3f,0x3b,0x32,0xf9,0x1f,0x77,0xbc,
- 0x70,0xd4,0x3a,0x31,0x44,0x4a,0x75,0x2c,0x74,0xea,0x7f,0x32,0xee,0xf7,0x39,0xf0,
- 0x8f,0x2f,0xe3,0x7c,0x90,0xb4,0xfe,0x87,0xcf,0x0f,0x6f,0x8b,0x44,0xcd,0x46,0xbe,
- 0x32,0xef,0xe8,0x92,0xa1,0x7f,0x96,0xd3,0xe3,0x15,0xee,0x1e,0x5c,0xb5,0xbf,0x75,
- 0x0f,0xea,0x9f,0xf9,0x15,0x6d,0xa2,0xbd,0xee,0xd5,0x2d,0x76,0xfc,0xb3,0xb3,0xdc,
- 0x89,0xee,0x5e,0xea,0x39,0xd7,0xf9,0x1e,0x3f,0x31,0x16,0xaf,0xf0,0x46,0x49,0xf9,
- 0xce,0x47,0xbb,0x43,0xb0,0x16,0xd2,0xdf,0x4d,0x51,0xff,0x75,0xb6,0x28,0x83,0xed,
- 0xb9,0x6a,0x6a,0xfe,0x27,0xbd,0x0c,0x2a,0xd2,0x03,0x27,0xeb,0xf2,0xf2,0x3f,0xe9,
- 0xfc,0x97,0xf4,0x07,0xf0,0x3f,0xd8,0x1f,0xfb,0xb0,0x89,0x96,0x0d,0x21,0x74,0x8e,
- 0xfa,0xa3,0x3c,0xfd,0xb1,0xf3,0xf3,0x3f,0xf9,0xf3,0x5f,0xc6,0x36,0x24,0xa3,0x5f,
- 0x59,0x8e,0xfe,0xd8,0xfb,0xec,0xaf,0x3d,0xf5,0xf9,0xb0,0xd9,0xdf,0x8b,0xc1,0x57,
- 0x14,0xe6,0xe6,0x7f,0x6c,0xdd,0x20,0x0d,0x03,0xf9,0x90,0xe2,0xbc,0xfc,0x0f,0x3f,
- 0x1f,0x0d,0xd9,0x9e,0xe3,0xfa,0x87,0x94,0x97,0x7d,0x9d,0xd5,0x7f,0x1d,0xcf,0x5f,
- 0xff,0xf5,0x87,0xcc,0x4f,0x8e,0xfe,0xd8,0x8b,0xc5,0x29,0x1c,0x57,0xce,0xfc,0xd7,
- 0xac,0xfc,0x8e,0xd4,0x9e,0xff,0xb2,0xf2,0x7d,0x99,0x42,0xe8,0xdc,0xfc,0x4f,0x99,
- 0xd5,0x16,0xdb,0x93,0xdf,0xb1,0xe7,0xea,0x8f,0x4d,0xb2,0x1a,0x65,0xe7,0xe2,0x7f,
- 0x1c,0xf9,0xaf,0xc5,0xe9,0x78,0x54,0x9b,0x97,0xff,0x49,0x45,0x37,0x3c,0xf6,0x1d,
- 0xd3,0x5e,0xee,0x4f,0xe2,0x7f,0xb2,0xf4,0xcf,0x53,0xf7,0x87,0xb4,0xf7,0x47,0x9a,
- 0xa2,0x3f,0xa4,0xb9,0x1e,0x9c,0xfd,0x91,0xf2,0x19,0x39,0xf3,0x5f,0x38,0xba,0xd9,
- 0xb9,0xf5,0x3f,0x79,0xcf,0x47,0xcb,0x63,0x38,0xf3,0x5f,0xaf,0x19,0x30,0xe9,0x3c,
- 0x87,0x85,0xc5,0x46,0x5b,0xec,0x0c,0xfe,0x27,0x8d,0x7f,0x8c,0xfc,0x17,0xa7,0x7d,
- 0x48,0x37,0xc7,0x3f,0x2e,0x35,0x65,0xe4,0x39,0x1f,0x36,0xcd,0x6e,0x61,0x37,0xa4,
- 0x22,0x2e,0xf3,0x9e,0x8a,0xff,0xb1,0xb7,0x79,0xb1,0x60,0xcf,0x54,0xe7,0xc3,0x1a,
- 0x22,0x6d,0x62,0xc0,0xda,0x22,0x2e,0x6b,0xcf,0xcf,0xff,0xd8,0xf1,0xcf,0x6b,0x79,
- 0xf9,0x9f,0xbc,0xe7,0xa3,0x99,0x46,0x43,0x5e,0xfd,0x4f,0x2a,0xff,0xb5,0x9b,0x24,
- 0x0c,0x23,0x6c,0x1a,0xf9,0xcf,0x87,0xc5,0x8f,0xa2,0xc2,0xfc,0x3a,0xd4,0x74,0xbc,
- 0xb6,0xe9,0x7f,0xd2,0xfc,0x4f,0xea,0xb3,0xbd,0x25,0xf5,0xb5,0x8a,0xe1,0x9c,0xfa,
- 0x1f,0xf3,0xf9,0xbc,0x3f,0x76,0xc7,0x8d,0x67,0x30,0xed,0x05,0x1f,0x47,0x18,0xec,
- 0x59,0xcb,0xf1,0xcf,0x67,0x50,0xff,0x9c,0xe7,0x7c,0x58,0x0e,0x03,0xa2,0xa6,0xf7,
- 0x88,0xf1,0xc0,0x97,0x81,0x7f,0x1c,0xe7,0xc3,0xa6,0xf2,0x5f,0x67,0xe5,0x7b,0xd0,
- 0x18,0x11,0xf1,0x7c,0xd8,0x25,0x8e,0xfe,0x90,0x7a,0x66,0xfe,0x6b,0xc0,0xdd,0xce,
- 0xbc,0x07,0x1f,0x5d,0x98,0x94,0xd0,0xcc,0xf7,0xcf,0x91,0xff,0x6a,0xbf,0x2a,0x65,
- 0x18,0x85,0xab,0xf3,0xf4,0x9e,0x3c,0xf8,0x87,0xd3,0x3e,0x7c,0x1b,0x2b,0x18,0xf3,
- 0xe9,0xca,0x76,0x44,0xce,0xf3,0xd1,0x78,0xd8,0x8a,0x8a,0xc6,0xc0,0xff,0x22,0x16,
- 0x0a,0x28,0x13,0xd2,0x35,0x6c,0x98,0x7f,0x6a,0xd3,0xff,0x98,0xef,0x63,0xf5,0xc7,
- 0x76,0xcc,0x4f,0x46,0x05,0x50,0xae,0xfc,0xd7,0x10,0xf7,0xde,0x4b,0x70,0x9b,0x3f,
- 0x35,0xff,0x93,0xc2,0x3f,0xd1,0xd2,0x54,0xb4,0x8a,0xd9,0x03,0xd9,0xbb,0xb9,0xf4,
- 0x3f,0x4e,0xfd,0x73,0xec,0x13,0xf8,0x1f,0x8f,0xa1,0xb6,0x52,0x42,0x83,0x46,0x22,
- 0x8c,0xad,0xb7,0xca,0xd4,0x46,0x75,0x90,0x2b,0x64,0xb2,0xea,0xbf,0xde,0xd5,0xf8,
- 0x78,0xdf,0xc3,0xec,0xe7,0x90,0x3b,0xf6,0xa7,0xef,0x9d,0x60,0xc6,0x40,0x3e,0xfe,
- 0x27,0x3d,0xde,0x24,0x43,0x3b,0xc7,0x8c,0x42,0x66,0x53,0xff,0xf3,0x7e,0x2e,0xfd,
- 0xcf,0xfb,0x19,0x68,0xf9,0x2c,0xbc,0x1e,0x31,0x80,0x90,0xfc,0x5c,0x0e,0xfc,0x93,
- 0x85,0x76,0x4c,0xa3,0x34,0x0f,0xfe,0x79,0x3c,0x4f,0x7c,0x9f,0x1a,0xff,0x84,0x46,
- 0x61,0x89,0x94,0x32,0x8c,0x2b,0x90,0x07,0xff,0xbc,0x6b,0xe7,0x67,0xec,0x34,0x69,
- 0x5e,0xfc,0x73,0x9d,0x33,0xac,0x2b,0x7f,0x2c,0xfe,0x99,0x2a,0xff,0x95,0x85,0x87,
- 0xc9,0xa8,0x62,0xbf,0xd2,0xff,0xc9,0xf8,0x47,0xa9,0x9f,0x2a,0xff,0x95,0x0d,0x03,
- 0xa8,0x01,0x84,0x42,0x78,0x62,0xc8,0xfc,0x33,0x22,0xc3,0x3f,0xd6,0xfe,0xce,0x3a,
- 0x1f,0xc4,0x2c,0x7b,0x7f,0x99,0x27,0xc2,0x52,0x27,0xc6,0x2a,0x78,0x50,0xc8,0xb4,
- 0xa9,0xf0,0x4f,0x8a,0x36,0x54,0x3e,0x11,0xff,0xe4,0x9e,0x9f,0xbf,0xcb,0x85,0x7f,
- 0xde,0x72,0x7a,0x9b,0x50,0x96,0xff,0xf4,0x4d,0xa5,0xff,0xe1,0xc3,0x9c,0x12,0xff,
- 0x64,0xaf,0xb7,0xde,0x0c,0x3c,0xe9,0xc4,0x3f,0x0e,0xfd,0x8f,0x3b,0x97,0xe1,0xc4,
- 0x3f,0x23,0xb9,0xf7,0xe3,0x53,0xe3,0x9f,0x29,0xf1,0xc0,0x27,0xe2,0x1f,0xe1,0x8f,
- 0xc4,0x3f,0xd2,0x7f,0x10,0xfe,0x31,0x8d,0x42,0xab,0xf0,0xed,0x93,0xf0,0xcf,0x75,
- 0x59,0xe3,0xbd,0x6e,0x2a,0xfd,0x8f,0x69,0x60,0x63,0xc0,0xd6,0xdc,0xf9,0x2f,0x21,
- 0x83,0xff,0xe1,0xfa,0x9f,0x3b,0xf2,0xe8,0x9f,0x33,0xce,0x07,0xc9,0x3b,0xde,0x7c,
- 0xfa,0x9f,0xa5,0x9f,0x94,0xff,0x2a,0xb7,0x9a,0x60,0xa7,0xdf,0x5f,0xba,0x00,0x73,
- 0xff,0x10,0xfc,0x63,0x33,0x4a,0xfe,0x48,0xfc,0xd3,0xfc,0x49,0xf8,0x27,0x8b,0xff,
- 0x11,0xa7,0xc6,0x3f,0x53,0xe6,0xdf,0xf3,0x9f,0x0f,0x9b,0xc3,0xe8,0x59,0xef,0x9b,
- 0xe2,0x7c,0xd8,0x5c,0x86,0x30,0x85,0xfe,0x27,0x37,0xff,0xe3,0x38,0x1f,0xc4,0x91,
- 0xbf,0x30,0x0e,0xba,0x32,0x03,0xd9,0x44,0x14,0x1b,0x65,0xcf,0xc8,0xc2,0x3f,0xe6,
- 0xdb,0x06,0x92,0xb3,0xef,0x22,0xa7,0x84,0xb7,0x8c,0x63,0x4d,0x4e,0xeb,0x07,0x3e,
- 0x51,0xff,0xb3,0xe2,0x9b,0x85,0xf6,0xf1,0xaa,0x19,0xfa,0x1f,0x35,0x53,0xff,0xe3,
- 0xb2,0x85,0xf5,0x3c,0xf8,0x27,0x63,0x74,0x55,0x19,0x8c,0x90,0x3b,0x27,0xfe,0x31,
- 0xef,0x2f,0x31,0x85,0xaf,0x46,0x46,0x2c,0x2f,0xfe,0xc9,0xd8,0xc6,0x2e,0xf9,0x24,
- 0xfc,0x33,0xa5,0x7e,0x23,0xff,0xf9,0xb0,0x4e,0x43,0xc8,0x8d,0x7f,0x9c,0xfc,0x4f,
- 0x64,0xd0,0x40,0x44,0xc1,0x3a,0x06,0x84,0xaa,0x32,0xfb,0x43,0x16,0xaf,0x73,0x8c,
- 0xf7,0x05,0xef,0x3e,0xf1,0xbd,0xb6,0x94,0xfe,0x76,0x94,0x4e,0xc8,0x99,0xfd,0x21,
- 0xaf,0xcd,0x31,0x5e,0xa4,0x7d,0xcc,0x2b,0xf7,0xe8,0xd7,0x39,0xf1,0xcf,0x45,0x6d,
- 0x30,0xba,0xa8,0xda,0x73,0x54,0xac,0x63,0x46,0xbd,0xea,0x39,0x21,0x5e,0x92,0x26,
- 0xa1,0x1e,0xdb,0x8a,0xe6,0xe4,0x7f,0x46,0x90,0x64,0x96,0xf1,0xb4,0x38,0xda,0x8d,
- 0xa7,0x51,0x6f,0x27,0xef,0xc8,0x87,0x33,0x1a,0x01,0xd9,0xfb,0xff,0x74,0x77,0x53,
- 0x9f,0x0a,0x32,0x31,0xda,0x57,0x91,0x22,0x48,0x09,0x33,0x64,0xc7,0xf7,0x65,0xae,
- 0x1f,0xbd,0x7c,0xc4,0xac,0x66,0x0d,0x73,0xa3,0x88,0x92,0x51,0xf9,0x70,0x85,0xb3,
- 0x11,0xd0,0xb8,0xad,0xfe,0x6b,0x94,0x1c,0xa5,0xfb,0xc2,0x81,0xed,0xee,0xb9,0xdc,
- 0x98,0xcf,0x27,0x8a,0xee,0x73,0x34,0xea,0x49,0xd7,0x7f,0xc5,0x84,0x67,0xa4,0xcb,
- 0xd1,0x25,0x6b,0xb6,0xbe,0x26,0x3e,0xad,0x5d,0x8e,0xb6,0xac,0x29,0x19,0xab,0xba,
- 0xa8,0x7d,0x48,0xf3,0xd5,0x7f,0xe9,0xca,0xcf,0xe0,0x42,0xac,0x39,0xec,0xdd,0x2e,
- 0xf2,0x36,0xb6,0x61,0x63,0x3f,0xd2,0x5e,0x97,0x17,0xff,0xd4,0xc2,0x41,0xbd,0x36,
- 0xec,0xde,0x4e,0xde,0x84,0x83,0x94,0x19,0x31,0xc4,0x3f,0xba,0x9a,0x87,0xff,0xd1,
- 0x0b,0xd6,0x66,0xf8,0x2b,0x74,0xcb,0xfb,0x92,0xce,0xc6,0x35,0x76,0xfc,0x73,0x0d,
- 0x3c,0x1d,0x9d,0x1f,0x73,0xaf,0x25,0x27,0xe1,0x69,0xca,0x0c,0xd4,0x3f,0x3f,0xcd,
- 0x2b,0xa4,0x72,0xd6,0x7f,0xc9,0xb2,0x76,0x4e,0x69,0xa2,0x5e,0x55,0x4c,0xc0,0x39,
- 0x60,0x06,0x88,0x03,0x0c,0x08,0xc5,0xf5,0x7c,0xfc,0x4f,0x1f,0x5c,0x51,0x5a,0xba,
- 0xbc,0x67,0xc4,0x71,0x8d,0x1b,0x47,0xf9,0x7a,0xc8,0x87,0x7f,0xfc,0x98,0xff,0x32,
- 0xda,0x62,0xdf,0x81,0x6d,0xb1,0x93,0x9e,0xb8,0x7b,0x2e,0x24,0xa8,0x73,0x7e,0xd2,
- 0xf5,0x7d,0x23,0xdc,0x9f,0xa4,0xea,0xbf,0x8c,0x63,0x61,0x49,0x05,0x74,0x19,0xc7,
- 0x4c,0xe7,0xea,0xff,0xa3,0xfc,0x70,0xfa,0x81,0x48,0x25,0xca,0x7e,0xf0,0x7c,0x10,
- 0x66,0x8c,0x90,0x42,0xe8,0xa0,0xb7,0xe5,0x3d,0x1f,0x64,0x8b,0xb9,0xba,0x8c,0x6c,
- 0x97,0x1c,0x23,0x1e,0xd2,0xb1,0x2d,0x96,0x9a,0x4f,0x29,0x85,0x7f,0xcc,0xfb,0x93,
- 0xe5,0x4f,0xc0,0x45,0x6d,0x5f,0x34,0xb0,0xcb,0x3d,0x8f,0x1c,0x43,0xe3,0x49,0xb2,
- 0x18,0x8e,0x43,0x9d,0x89,0x88,0xee,0xce,0xea,0xff,0xa3,0x8e,0xcb,0x78,0x4c,0x79,
- 0x67,0xca,0xd0,0xad,0x30,0xd4,0x9a,0x1f,0xff,0x2c,0x33,0xf8,0x1f,0x1e,0xdd,0xaa,
- 0x8c,0xb6,0x3f,0x9e,0xfc,0xf8,0x47,0xab,0x5d,0xef,0x7e,0x2c,0xdd,0x16,0x7b,0x0e,
- 0x33,0x02,0x0e,0x45,0x8a,0x13,0xff,0xfc,0x1c,0x16,0x68,0xee,0x21,0x72,0xde,0x34,
- 0xd6,0x70,0xd9,0x33,0xde,0x2f,0xe7,0xc4,0x3f,0x4f,0xd1,0xf9,0x61,0xb6,0x6c,0x7e,
- 0x63,0x18,0x43,0xd8,0x16,0xdb,0x1f,0x30,0xce,0x87,0xcd,0xae,0xff,0x2a,0x08,0xc3,
- 0x18,0xca,0xbc,0x81,0x6d,0xa2,0xb9,0xa1,0x8b,0x61,0x8a,0x8d,0x47,0xec,0x42,0x94,
- 0xd3,0xf6,0xfc,0x17,0xaf,0x76,0xf7,0x3e,0xd4,0x69,0x18,0xab,0x14,0xf1,0x3c,0x9e,
- 0x97,0x97,0x97,0xff,0xc1,0x5f,0xeb,0x97,0x71,0xfe,0xe7,0xb2,0xd2,0x82,0xd3,0x52,
- 0x0d,0x17,0xfc,0x8b,0xf2,0xeb,0x7f,0xd4,0x3e,0xd9,0x07,0xee,0x48,0x24,0x49,0xfb,
- 0xd4,0x5a,0xe2,0xa7,0x44,0x6d,0x7b,0x46,0xf3,0xe5,0xab,0xff,0x2a,0x18,0xa0,0x7b,
- 0xd9,0xb2,0xee,0x29,0x25,0x03,0xb1,0xbd,0x6a,0xa0,0xcd,0xb5,0x9a,0x5c,0x25,0x3f,
- 0x45,0x55,0x07,0xfe,0x71,0xf4,0xff,0x61,0x17,0x77,0x9a,0x68,0x27,0xa0,0xb9,0xa2,
- 0xae,0xfd,0x6c,0x62,0x9d,0xc2,0xaa,0x37,0x33,0xf2,0x5f,0xbe,0xf4,0xdb,0x96,0x28,
- 0xe2,0x1c,0xb8,0xa0,0xed,0xcb,0x83,0x7f,0x46,0x32,0xf1,0x4f,0xb1,0xad,0x0d,0x54,
- 0x8e,0xfa,0x2f,0x7e,0x3e,0x08,0x36,0xd9,0x88,0xa4,0x67,0x5b,0x85,0x41,0x3c,0x16,
- 0x36,0x1f,0xfe,0x91,0xcf,0x42,0x55,0xd4,0x3d,0x4c,0x50,0xa4,0xbe,0x20,0xe6,0xde,
- 0x45,0xfc,0x10,0x81,0xaa,0xbc,0xf5,0x5f,0x2b,0xa1,0xca,0xd6,0x26,0x2b,0xe9,0x6a,
- 0x20,0x25,0x10,0xa1,0x2a,0xcd,0x5d,0xff,0x15,0x83,0x5b,0xe0,0x47,0x50,0xa9,0xb9,
- 0xdb,0xc9,0xab,0xf2,0x53,0x30,0x3f,0xc4,0xbe,0xd6,0xeb,0xe0,0x5e,0xad,0x92,0xe6,
- 0xae,0xff,0xda,0xdd,0xfd,0x15,0x38,0x4b,0x17,0xc6,0xbc,0x6b,0xc5,0x93,0x78,0x3e,
- 0x08,0xb6,0xfd,0x71,0x91,0xe7,0xe9,0xde,0x58,0x9e,0xfa,0xaf,0x22,0x9c,0x9f,0x67,
- 0x29,0xaf,0xff,0xe2,0xa3,0x0b,0xba,0x51,0xf1,0x62,0xf5,0xb7,0xc9,0x81,0x7f,0xde,
- 0x8f,0xb6,0x24,0x1f,0xc0,0xfa,0xe5,0x97,0x51,0xb6,0x31,0x22,0xfe,0x58,0x1e,0x8c,
- 0xde,0x18,0x0b,0xe4,0xcc,0x7f,0x3d,0x31,0x7d,0x3f,0x6c,0xa4,0x0b,0x34,0xb9,0x9d,
- 0x5c,0xa5,0x6f,0xd4,0x2a,0x87,0xdc,0xe1,0x9d,0x57,0xe9,0x5d,0xe9,0xfe,0x3f,0x19,
- 0xe7,0x83,0x20,0xfe,0xf9,0xb1,0x3a,0x07,0x0f,0x6d,0xac,0x80,0xef,0xc1,0x1c,0xea,
- 0xbe,0x0d,0xcf,0xc3,0xa5,0xce,0xfe,0x3f,0x76,0xfc,0xc3,0x69,0x46,0x8c,0x56,0x2a,
- 0x6c,0x87,0xb9,0xd4,0x5d,0x1d,0x11,0xf0,0x8a,0xa3,0xff,0x8f,0x33,0xff,0xf5,0xae,
- 0x34,0x97,0xc1,0x18,0x12,0x40,0x75,0x84,0xee,0x9d,0x25,0x3e,0x80,0x1d,0xe7,0xa8,
- 0x3d,0x7e,0xd9,0xeb,0xbf,0x38,0x5e,0xd2,0x38,0xff,0xf3,0xae,0xd6,0xd8,0xbe,0x35,
- 0x3a,0xed,0xac,0x41,0x53,0x3b,0xf8,0x1f,0xf3,0xfd,0x05,0xe5,0x59,0xb8,0x12,0x6d,
- 0xa1,0xc5,0x49,0xd2,0xc4,0xe6,0xa7,0x4a,0xf7,0x0c,0x89,0x8b,0xfd,0x2f,0x43,0x0b,
- 0x75,0xe7,0xac,0xff,0x62,0xf8,0x47,0x63,0x41,0x1c,0x93,0xa4,0x01,0xe8,0xe9,0xe2,
- 0xc2,0x42,0x3f,0xe6,0x2f,0x3a,0xa6,0xc2,0x3f,0x7e,0xbd,0x28,0x4e,0x7e,0x06,0x3f,
- 0x55,0x6b,0x74,0xb9,0xbb,0xb4,0x1a,0xf0,0x3c,0xd9,0x29,0xf8,0x1f,0x99,0x77,0xdf,
- 0x7a,0x80,0xc1,0xc2,0xb5,0xba,0x0c,0x44,0xda,0x42,0xe5,0x40,0x77,0x9e,0xfa,0x2f,
- 0x86,0x7f,0x2e,0xaa,0x8d,0x78,0xda,0xe9,0x96,0xe8,0xef,0xb0,0xed,0x0c,0x15,0x54,
- 0x38,0xaa,0x3a,0xc7,0xeb,0xc0,0x3f,0xca,0x84,0x31,0xa8,0x75,0x1a,0x9e,0x2e,0xe7,
- 0xd5,0xc4,0x21,0x8d,0x7d,0x56,0x5d,0xf9,0xeb,0xbf,0x26,0x23,0x46,0xfd,0x97,0x92,
- 0x99,0x36,0xcd,0x9d,0xff,0x72,0xf4,0xff,0x39,0x93,0x32,0xe6,0xe2,0x95,0x3b,0xa6,
- 0xcc,0x7f,0x39,0x13,0xa3,0xfd,0xd6,0x41,0x3c,0x3d,0xb9,0xf9,0x9f,0x9b,0x4c,0xf4,
- 0x18,0x32,0xdb,0x28,0xdd,0xb4,0x2e,0x9b,0xff,0x51,0xa7,0xa7,0xeb,0xbf,0x94,0x09,
- 0xa9,0xc1,0x89,0x9f,0xa5,0x94,0x90,0xcc,0x51,0xff,0x95,0xc5,0xf6,0xfc,0xf1,0xf9,
- 0x2f,0x0b,0x78,0x4f,0xc1,0xff,0x08,0xc6,0x40,0x4a,0x9c,0xc0,0x58,0xc8,0xc2,0x3f,
- 0x59,0xfb,0x2f,0x18,0x94,0xea,0xa5,0xd4,0xc6,0x21,0x17,0xff,0x23,0x18,0x41,0xdf,
- 0xe8,0xff,0x33,0xe2,0x72,0x12,0x41,0x1d,0x5f,0xcf,0xc4,0x3f,0x6c,0xbd,0x09,0x4d,
- 0xfd,0xab,0x82,0x7f,0x6a,0xd4,0x7f,0x79,0x17,0x8b,0xd8,0xd2,0xb5,0x49,0x2f,0x09,
- 0x0a,0xc7,0xa3,0x1f,0xd2,0xa6,0xd1,0xac,0xfc,0xd7,0x44,0x3a,0x4d,0xdc,0xac,0x4f,
- 0xfb,0x60,0xc6,0x25,0xb8,0x47,0x30,0xe6,0x47,0x4b,0x11,0x41,0x9f,0xc8,0xff,0x10,
- 0x73,0xfe,0x85,0x66,0x7d,0x55,0xbc,0x35,0x7f,0xfd,0x57,0xff,0x27,0xe6,0xbf,0xcc,
- 0xb4,0xd7,0x4d,0xe9,0x61,0xf2,0x19,0x98,0x69,0xe7,0x7f,0xd2,0xf5,0x5f,0x65,0x83,
- 0x12,0x4e,0xda,0x8a,0x1c,0xdb,0x58,0xdf,0x94,0xf9,0xaf,0x1c,0x69,0xaf,0x4f,0xca,
- 0x7f,0xd9,0x84,0x40,0xb3,0xff,0x63,0xf9,0x9f,0xff,0xd8,0xfc,0x97,0xf2,0x47,0xf3,
- 0x3f,0x19,0xc6,0xd9,0x7f,0x57,0xfe,0xcb,0xb8,0xd8,0x6a,0xbf,0x4d,0xca,0xec,0xa8,
- 0x93,0x91,0xff,0x4a,0xa3,0x9d,0x22,0x6e,0x14,0x18,0x57,0xa4,0x3f,0x94,0xff,0x11,
- 0x9c,0x85,0xff,0x53,0xd4,0x7f,0x19,0x65,0x5f,0x70,0x47,0x3e,0xfe,0x27,0xb3,0xfe,
- 0xeb,0x93,0xf4,0xcf,0xf0,0x87,0xdc,0x3f,0x45,0xfd,0xd7,0x27,0xf1,0x3f,0xa9,0xfa,
- 0x2f,0x3b,0xdb,0x33,0x22,0x35,0x0a,0x19,0xfa,0xe7,0x74,0xff,0xc3,0xbc,0xfc,0x8f,
- 0x18,0xd4,0x72,0xf0,0x3f,0x59,0xf5,0x5f,0x39,0x8d,0x3c,0xf5,0x5f,0x79,0x8d,0x5c,
- 0xfc,0x4f,0x8e,0x32,0xf0,0x1c,0xf8,0x47,0x2b,0xc8,0x8e,0x56,0x48,0xfb,0xe4,0x8b,
- 0x5f,0x99,0xfc,0xcf,0x08,0x1b,0x1d,0x73,0x9b,0xfb,0xf9,0x15,0x14,0x46,0x06,0x74,
- 0x47,0xff,0xc3,0x4c,0xfe,0x27,0x61,0xe8,0x7f,0x54,0xa7,0xfe,0x27,0xbd,0xbf,0xcb,
- 0xa8,0xff,0xaa,0xcd,0xcd,0xa7,0xa5,0xf1,0x4f,0x56,0xfd,0x57,0x4a,0xe8,0xd2,0xd0,
- 0x6f,0xbf,0x72,0x3a,0x3f,0xff,0x63,0x13,0x7e,0x4c,0x9b,0x2a,0xff,0x65,0xd2,0x3e,
- 0x1e,0x6e,0x48,0xbc,0xec,0xeb,0x92,0x72,0x8f,0xf1,0x53,0xbe,0xfa,0x2f,0x52,0xa2,
- 0x17,0xe7,0x12,0xf6,0xe4,0xaa,0xff,0x2a,0x4c,0xd5,0x7f,0x7d,0x82,0xfe,0xd9,0x76,
- 0x3e,0x88,0x84,0xf3,0x53,0xc4,0x69,0x1f,0xd9,0x9c,0x1f,0x81,0x17,0xc2,0x3b,0xeb,
- 0xbf,0x6c,0xd9,0xbd,0xc6,0x53,0x9e,0xa7,0x90,0xf6,0x51,0x79,0xfc,0x7d,0x4f,0x9b,
- 0x68,0x6f,0xc6,0x83,0x83,0x6d,0xfd,0x7f,0x9c,0xfc,0x4f,0xf3,0x60,0x06,0x11,0x04,
- 0x86,0xfe,0xe7,0x2a,0x73,0x3d,0x1c,0x29,0x40,0xd8,0xd3,0x9b,0xf4,0x26,0xd8,0xfe,
- 0x8b,0xe1,0xe7,0x30,0xfb,0xb5,0x76,0x0a,0xfc,0xa3,0xf3,0xfc,0x97,0xef,0x8c,0xbb,
- 0x3b,0xf4,0x26,0xef,0xff,0xec,0x5e,0x88,0x07,0xb9,0xe6,0xd5,0xff,0x24,0x0a,0x8c,
- 0xfd,0xb8,0x1b,0xd8,0xd7,0xf7,0x30,0x57,0x9f,0xfa,0xb2,0xf3,0xa1,0x69,0xfe,0x27,
- 0xa9,0xec,0xe1,0xa2,0x29,0xe6,0xc4,0xce,0xc2,0x0f,0x54,0xdf,0x80,0x3b,0x16,0x09,
- 0x28,0x99,0xf3,0x69,0xeb,0xff,0xcc,0xf5,0xb7,0x75,0x3a,0x0b,0x43,0x6f,0x92,0xd7,
- 0x60,0x9f,0xee,0xdd,0xef,0x0e,0x64,0xd7,0x7f,0x59,0xf8,0x76,0x2f,0x3c,0x23,0xa5,
- 0xf2,0x83,0xe7,0x81,0x37,0xba,0x59,0x9f,0xab,0xff,0x8f,0x15,0x4f,0xc7,0xc0,0x58,
- 0x9f,0xd7,0x75,0xb3,0xcf,0xea,0x28,0x65,0x4f,0xeb,0x16,0x03,0x59,0xf5,0x4d,0xce,
- 0xfe,0xcf,0xbd,0x46,0x1a,0x74,0x10,0x7e,0xc5,0x8c,0x9e,0x0e,0x12,0x50,0x5f,0xcf,
- 0x5b,0xff,0xa5,0x9b,0x7c,0x20,0xd2,0x62,0x1d,0x12,0x76,0x5b,0x75,0x95,0x64,0x1d,
- 0x6c,0x9a,0xee,0xff,0x33,0xa4,0x60,0xfe,0x8b,0x81,0x9c,0x36,0x72,0x85,0x7c,0xd7,
- 0x88,0xfe,0xd7,0x75,0x3c,0x12,0xcb,0xd7,0xff,0xc7,0xcc,0x7f,0xb9,0xa1,0xf5,0x25,
- 0xe8,0xe7,0x8d,0x10,0xab,0x6a,0xe1,0x79,0x7b,0xff,0x9f,0xad,0x8e,0xfe,0x3f,0x65,
- 0x7b,0x38,0x68,0xd9,0x4a,0xd9,0xaf,0x17,0x14,0x36,0xba,0x7d,0xee,0x1c,0x7a,0x2a,
- 0x27,0xff,0x83,0x6c,0x64,0xb7,0xb8,0x05,0x65,0x0f,0xf8,0x6b,0xad,0xd2,0x03,0x4d,
- 0x49,0x7b,0x45,0x9e,0xad,0xff,0xb3,0x95,0x4f,0x27,0xb3,0xd8,0x46,0x92,0xcb,0x9e,
- 0x9b,0xe0,0x27,0xcc,0xf0,0xe7,0xe6,0x7f,0x10,0xff,0x74,0xcc,0x4b,0x76,0x26,0xc8,
- 0xb3,0xb8,0xed,0x4a,0xba,0x6f,0x45,0x22,0x28,0x32,0x3f,0x29,0xe7,0xee,0xff,0x93,
- 0xd2,0x1f,0xce,0xac,0x26,0xc5,0xf2,0x8e,0x28,0x43,0xd7,0x0a,0xf1,0xc0,0xe3,0x92,
- 0x59,0xd8,0x22,0xf0,0xf9,0x3c,0x69,0x3d,0x5f,0x97,0x76,0xf3,0xb2,0x2f,0xef,0x6f,
- 0xc5,0x83,0x7c,0xdb,0xe5,0x1d,0x71,0xfb,0xe1,0x08,0x33,0x3c,0x79,0xfa,0x3f,0x9b,
- 0xf1,0x08,0xf9,0x9f,0x3f,0x20,0xff,0x95,0x8e,0x77,0x03,0x70,0x94,0x34,0xb3,0x68,
- 0xeb,0xae,0xce,0x2a,0x04,0xcb,0x3e,0x1f,0x6d,0x26,0x9e,0xcf,0xfe,0x9a,0xa9,0x3f,
- 0x79,0x3b,0x83,0x7f,0xb0,0xe1,0x1f,0xa8,0x96,0x78,0x76,0x0c,0xf9,0xc6,0xcd,0xd4,
- 0xb8,0x5f,0x3b,0x98,0x71,0xbf,0xad,0xfe,0x4b,0x49,0xe3,0x9f,0x18,0x17,0xc6,0x5c,
- 0x13,0x29,0x84,0x1d,0xa9,0x42,0x30,0x29,0xab,0xfe,0x6b,0x75,0x45,0x5a,0xff,0x4c,
- 0x51,0xf6,0xfc,0x72,0x84,0x17,0xc2,0x3b,0xf9,0x07,0x5b,0xff,0x67,0xce,0x87,0xd4,
- 0x2e,0xf5,0xb6,0x8b,0xe7,0xa5,0xcb,0xe0,0xd5,0xbc,0xaf,0x74,0x0e,0xc7,0xde,0xe6,
- 0x1d,0x6f,0xc4,0x61,0x25,0x27,0xfe,0xb9,0x6c,0xe8,0x7f,0xae,0x87,0x97,0xe0,0x7a,
- 0x7d,0xc5,0xab,0x0f,0x5f,0x2f,0xf3,0x83,0xd5,0xf0,0xfe,0x83,0x99,0xfc,0x4f,0x85,
- 0xa9,0xff,0x89,0x85,0x54,0xce,0x0f,0xbb,0x77,0x11,0xd5,0x7e,0x62,0x5a,0x06,0xfe,
- 0x59,0x9b,0xd6,0x3f,0xff,0x15,0x3c,0x9a,0x6a,0xfc,0xa8,0xe6,0xef,0xff,0xd3,0xa7,
- 0x18,0xf8,0xa7,0x27,0xea,0x5a,0x23,0x3d,0xca,0xa6,0xb1,0xe7,0xa1,0xd0,0xba,0xac,
- 0x7c,0x62,0xf6,0xf9,0x68,0xee,0xc7,0x66,0xfc,0x15,0xf9,0x15,0x34,0x20,0x51,0xbc,
- 0x26,0x2b,0x23,0x96,0x3e,0x1f,0x36,0x01,0xbb,0xa4,0x94,0xba,0xfb,0x47,0x78,0x2c,
- 0x6c,0xbb,0x77,0xbb,0xdb,0x81,0x88,0x78,0xe3,0x20,0x5b,0xff,0x43,0x73,0xbd,0x75,
- 0x89,0x49,0xf9,0x84,0xd0,0x0c,0x01,0x49,0x54,0xf9,0x1f,0x22,0xcf,0xf9,0xb0,0x5d,
- 0xa9,0xfc,0x97,0xca,0x9c,0xea,0x49,0x99,0x6d,0xe4,0x47,0x48,0xa3,0x7a,0x5f,0x46,
- 0x46,0x2c,0x91,0x9d,0x8f,0x58,0xc8,0x16,0xc9,0xc3,0x94,0x7d,0x26,0x8b,0x4b,0x3c,
- 0xd0,0x49,0x32,0xfd,0xb3,0xf9,0x4f,0xe0,0xe7,0x85,0x7d,0x1d,0xbf,0xdf,0xf3,0xea,
- 0x23,0xb0,0x20,0xd9,0xdd,0x7e,0x2f,0xfb,0x1e,0xf3,0x9e,0x0f,0x2b,0x77,0x9b,0xf8,
- 0x67,0xc6,0x6f,0xe4,0x7f,0x61,0x86,0x67,0x44,0x6c,0x20,0xbf,0xcc,0x7b,0x3e,0xac,
- 0x7f,0x96,0xe1,0x6f,0x57,0xc5,0xd9,0xf7,0x92,0x12,0xba,0x0c,0x5b,0xfe,0xc7,0x94,
- 0xc2,0xda,0xfa,0x3f,0x7b,0x9e,0x6d,0xe3,0x41,0xea,0xdb,0x9c,0xff,0x69,0x19,0xf6,
- 0x8e,0x57,0x35,0xda,0xe2,0x97,0x01,0x84,0xd2,0xe7,0xc3,0x3e,0x29,0x5b,0x78,0xe6,
- 0x7a,0x7c,0xed,0xdf,0xba,0x97,0xb8,0x66,0x99,0xb0,0x27,0x07,0xff,0x13,0x83,0xc7,
- 0x14,0x7e,0x71,0xcc,0xb8,0x7f,0xd0,0x7d,0x3b,0xd9,0x66,0x43,0x44,0x24,0xeb,0x7c,
- 0x58,0xac,0xf7,0xf1,0xe8,0x33,0x9b,0x48,0x01,0xf6,0xb7,0x41,0x6f,0x5f,0x9d,0x15,
- 0xef,0xd2,0xf5,0x5f,0xb2,0xc4,0xfc,0x2d,0xdb,0x2d,0xba,0x9f,0x13,0x0b,0xe0,0xc5,
- 0x82,0xda,0x33,0xde,0xf8,0xa7,0xab,0xa5,0xcc,0x8d,0xa4,0xad,0xff,0x33,0x98,0x78,
- 0xc9,0x3d,0x4c,0xf8,0x44,0x45,0x45,0xab,0xfe,0x1d,0x0f,0x8a,0xbd,0xdb,0xc0,0x3f,
- 0xe6,0xfd,0x02,0x18,0x7a,0x86,0x92,0x8b,0xe2,0x79,0xdf,0xcb,0xcc,0x28,0x4e,0x8a,
- 0xdf,0x02,0x34,0xdc,0x63,0x58,0x21,0x4e,0xf0,0x04,0x84,0x2a,0x7b,0xff,0x67,0x16,
- 0xcd,0x89,0x51,0xbd,0x0e,0x3d,0x65,0xb5,0x7a,0x5b,0x94,0x7c,0x8a,0xeb,0x57,0x57,
- 0xe4,0x3d,0x1f,0xd6,0x8c,0xce,0x04,0x6f,0x2b,0x8a,0xc3,0x1d,0x59,0x7a,0x57,0x07,
- 0xfe,0xe1,0x65,0x71,0x6c,0x12,0x86,0x71,0x7e,0x12,0xdd,0x7b,0x49,0xfa,0x20,0x6f,
- 0x39,0x9b,0xff,0x81,0x75,0xe6,0x7a,0x18,0x96,0x8f,0x0a,0xcd,0x89,0xfb,0xe7,0x3e,
- 0xfc,0x35,0xf2,0x22,0xd7,0xff,0xa4,0x89,0x8e,0x34,0xff,0xd3,0x51,0x60,0x06,0xf1,
- 0x19,0xe7,0x11,0xff,0x0c,0x79,0xf7,0x89,0xe7,0xb1,0xfe,0x3d,0xb1,0x2a,0x2f,0xff,
- 0xf3,0xf2,0xa6,0xfa,0x33,0xeb,0xc6,0x5b,0x11,0xed,0xd4,0x25,0xef,0xb7,0xf3,0x3f,
- 0xe4,0x0d,0x64,0x14,0x33,0xf9,0x1f,0x84,0x3d,0x6d,0x7d,0x75,0x1c,0x08,0x25,0xed,
- 0xfc,0xcf,0x59,0xa9,0xc7,0xb8,0x32,0xe6,0xe0,0x7f,0xb0,0x88,0x40,0x0e,0x02,0xfe,
- 0xf5,0x79,0x37,0xf5,0xb4,0x10,0x5a,0x78,0xd8,0xa0,0x5e,0xcf,0x39,0xf8,0x9f,0x1e,
- 0xa1,0x26,0x05,0x23,0x25,0x9f,0xde,0x93,0xe6,0x7f,0x4a,0x47,0xa1,0x47,0xf2,0x65,
- 0xd4,0xbf,0x97,0xed,0x61,0x68,0x84,0x77,0x63,0xc6,0xea,0xad,0x3a,0xdd,0xd9,0x2f,
- 0xeb,0x75,0xa3,0x11,0x50,0xd2,0xc2,0x4b,0x67,0xe0,0x99,0xd2,0x49,0x38,0x80,0xf3,
- 0x83,0x30,0xf8,0x39,0xe3,0xfc,0x8b,0x7b,0xd2,0xf8,0xe7,0xb9,0xcc,0xfc,0xd7,0x1e,
- 0xd9,0x90,0xd9,0x5b,0x8f,0x6d,0x75,0xe8,0x5b,0xf8,0xf3,0x3f,0xb0,0xf1,0x3f,0x1e,
- 0x5e,0xef,0xb6,0x02,0x5f,0xbb,0xd7,0x5a,0x06,0x5c,0xc8,0x54,0x8a,0x33,0xc0,0xdf,
- 0xff,0x23,0xa7,0xfe,0x47,0xf2,0xf4,0xdb,0xb6,0x5d,0x1c,0x18,0x7b,0xcc,0xef,0x25,
- 0xe6,0xe4,0x7f,0x6e,0xcb,0xec,0xff,0xe3,0xd4,0x03,0x2f,0xea,0xe0,0x89,0xb0,0xf1,
- 0x2c,0xfc,0x63,0xaa,0x7d,0x46,0xbd,0xf5,0xa8,0xff,0xe9,0xc2,0x2b,0x4b,0x11,0xff,
- 0x04,0xfb,0xbd,0x0b,0xf3,0xeb,0x7f,0xd8,0x32,0xdb,0xdb,0x7a,0x49,0x9f,0xac,0xe6,
- 0x2b,0x6a,0x94,0xdd,0xcf,0x96,0xe2,0x58,0xab,0xbd,0xff,0xcf,0xa0,0x89,0x06,0x2d,
- 0xe3,0x0b,0x0c,0x5f,0x19,0xf9,0x2f,0xe5,0x43,0xc3,0xb0,0xf1,0x3f,0x57,0x3f,0x06,
- 0x9b,0xa4,0x94,0xf7,0x40,0x63,0xc5,0xfa,0xba,0x53,0x65,0x9b,0xd2,0xf9,0x2f,0x6e,
- 0x9c,0xb3,0xea,0xbf,0x74,0xf8,0x21,0x31,0xbb,0x1d,0x92,0x4d,0x74,0x1e,0x27,0x82,
- 0xc8,0x26,0x23,0xdf,0xf7,0x43,0xe1,0x00,0xdd,0x81,0x8a,0xa0,0x74,0xff,0xe7,0x36,
- 0xc9,0x54,0x97,0xf9,0x06,0xf9,0x67,0xf5,0x7f,0xc5,0xd9,0x32,0xc3,0x15,0xb8,0xc2,
- 0xf8,0xbe,0xc2,0x19,0xfc,0x4f,0x41,0x37,0x9c,0x34,0x40,0x4e,0xc2,0xc0,0x3f,0x08,
- 0x7b,0x8e,0xc1,0x3e,0x66,0x7c,0x11,0x5b,0x43,0xd7,0x65,0xe0,0x1f,0x16,0x7f,0x47,
- 0x24,0x5b,0xb6,0xcb,0xcd,0xf9,0x1f,0xc1,0xd0,0xa3,0x2a,0x1b,0x8c,0x13,0x63,0xd3,
- 0xf8,0xa7,0x5b,0x19,0x16,0x4d,0x35,0x2c,0x31,0x8c,0x19,0xd5,0xe9,0x78,0x77,0x43,
- 0x16,0xfe,0xc1,0xfe,0x87,0x1c,0xff,0x88,0x86,0xfe,0xb6,0xc4,0xc0,0x3f,0x8d,0x3c,
- 0xfe,0x4a,0x07,0x0d,0xc3,0x71,0xfe,0x85,0x60,0xaa,0x73,0xa5,0xcd,0xc2,0x1d,0xda,
- 0x0a,0xb3,0x11,0xd0,0x4c,0x9b,0x70,0xc8,0xc6,0xff,0x80,0xa5,0xfe,0xed,0xe2,0x86,
- 0x2b,0xea,0x92,0xf8,0xa9,0x53,0x29,0x3c,0xe0,0x5f,0xea,0xe0,0x7f,0xfa,0x64,0x4c,
- 0x43,0x37,0x1b,0x7c,0x8b,0x11,0x76,0x89,0x6a,0xc3,0x7b,0xe2,0x6c,0xac,0x88,0x77,
- 0xf0,0x3f,0x8a,0x83,0xcd,0x78,0x20,0x5a,0x35,0x0c,0x6f,0x4b,0x8d,0xe6,0x15,0x34,
- 0x6c,0xfd,0x9f,0xb7,0x17,0x9c,0xe7,0x65,0x31,0xec,0x57,0x34,0xf6,0xa5,0x0c,0xc2,
- 0x9f,0x80,0x47,0x63,0x34,0x6b,0xab,0x32,0xf9,0x1f,0x0e,0x7b,0x28,0xb1,0x1b,0xa9,
- 0xfe,0x87,0x0c,0xcc,0x66,0xf4,0x7f,0x46,0xfe,0xa7,0x03,0x9b,0xcc,0x63,0xff,0x1f,
- 0x41,0x50,0x35,0xd1,0x14,0x42,0xbb,0x95,0xc2,0x61,0x6e,0xcc,0xcc,0xe4,0x7f,0x36,
- 0x9b,0xe8,0xd1,0x30,0x42,0xc3,0x69,0xfd,0xf3,0x13,0x52,0x0e,0xfe,0xe7,0xa8,0x89,
- 0x66,0x6d,0x46,0xb3,0xc3,0xc8,0xe6,0x7f,0x1c,0xb2,0x28,0x05,0x85,0xf1,0xc5,0xa9,
- 0x2b,0x4b,0xbd,0x79,0xcf,0x87,0xcd,0x34,0x8c,0x9f,0x3c,0x8e,0xfa,0x77,0xf6,0x17,
- 0xde,0xc7,0x40,0x4e,0x49,0xac,0x34,0x21,0xed,0x4b,0xa1,0x1d,0x01,0x61,0xcf,0x8a,
- 0x58,0xeb,0x6e,0x38,0x24,0x94,0x20,0xb0,0xef,0x4e,0xf3,0x3f,0x1b,0xb3,0xf8,0x9f,
- 0x9b,0xad,0x30,0xbd,0x87,0x3b,0xa2,0xa2,0x60,0x28,0xcd,0xff,0x54,0xa6,0xf8,0x9f,
- 0x8c,0xb2,0x77,0xe3,0x58,0xd8,0xc7,0x0a,0x0e,0x30,0x44,0x54,0xb1,0x9e,0xec,0xb6,
- 0xf3,0x3f,0x4a,0xba,0xdb,0x61,0xd7,0x7c,0x66,0xb4,0x1a,0xfe,0x8a,0x5d,0xf9,0x21,
- 0xc3,0x3f,0x2d,0xc9,0x62,0x47,0xff,0xe7,0x14,0xff,0x53,0xe2,0x70,0xb3,0x48,0xe3,
- 0x6f,0x75,0xe0,0x1f,0x73,0x7e,0xb4,0xf2,0x2b,0xda,0x64,0x9a,0xed,0x59,0x62,0x18,
- 0x5c,0xd1,0x7a,0x81,0xfd,0x2f,0xbe,0x8c,0xc2,0x06,0x16,0xbf,0xec,0xe7,0x5f,0x68,
- 0x07,0x14,0xf3,0xb5,0x95,0xf9,0xd8,0x4f,0x0c,0xf5,0x27,0x5c,0x88,0x78,0x3a,0xb4,
- 0x89,0xce,0x1f,0xed,0xb1,0xeb,0x7f,0xa2,0xf0,0x98,0x74,0x40,0xb2,0xa1,0xbb,0x15,
- 0xeb,0x2d,0xfd,0x4f,0xe9,0x29,0x03,0x11,0x39,0xfa,0xff,0x48,0x56,0x10,0x47,0xa3,
- 0xd6,0x22,0xa2,0x0d,0x0f,0x9f,0x0a,0xf4,0xb9,0xfa,0xff,0x60,0x34,0x2f,0xb4,0x02,
- 0x4d,0x83,0x71,0x22,0xf9,0x8b,0x46,0xfe,0xe2,0xa4,0xf5,0x3e,0xdb,0x72,0xf2,0x3f,
- 0x68,0xfc,0x85,0x69,0xb0,0x27,0x0c,0x5b,0xfe,0xa7,0x43,0xb9,0x24,0x18,0xfe,0xfc,
- 0xab,0x86,0xfa,0xd7,0x93,0x86,0x01,0x55,0x16,0x1e,0x48,0xc7,0xeb,0xfe,0xae,0x34,
- 0xff,0xc3,0xcb,0xbe,0x8a,0x6d,0xb2,0x55,0x1b,0x9e,0xb1,0xf8,0x1f,0x29,0x20,0x3b,
- 0xd8,0x09,0x8b,0xff,0xe1,0x15,0xf1,0x46,0xe3,0x20,0x5f,0x16,0xff,0xd3,0x6f,0xf2,
- 0x3f,0x2f,0x14,0xd5,0x61,0x3d,0xb2,0x62,0xcc,0x18,0xed,0x55,0xb1,0x1f,0x20,0xd8,
- 0xea,0xdf,0xed,0xfc,0xcf,0xbb,0x52,0x73,0xc2,0xb3,0xaf,0x33,0x3d,0x70,0x75,0xc2,
- 0xdf,0x7c,0xcc,0x9b,0xb3,0xff,0x4f,0x2a,0x7e,0xa1,0x3a,0xc8,0xd2,0xff,0xa4,0xfe,
- 0x8b,0x63,0x33,0xb2,0xcf,0x87,0xbd,0xd3,0x95,0xeb,0x3c,0xbe,0xce,0xe0,0xbf,0xff,
- 0x3c,0x3e,0xb9,0x8b,0x54,0x42,0xb7,0xc6,0xeb,0x52,0x6d,0xc6,0x27,0x9c,0x87,0x78,
- 0xe7,0xbf,0xf3,0x3c,0xc4,0xc1,0xff,0x64,0xe7,0x21,0x0e,0xe6,0xfd,0xe5,0xff,0x2b,
- 0xe7,0x21,0x6a,0x86,0x01,0x9f,0x70,0x1e,0xe2,0x9d,0x7f,0xe4,0x79,0x88,0xda,0x1f,
- 0x39,0xff,0xda,0x7f,0x9d,0x87,0xf8,0xef,0xfb,0xf7,0x9f,0xeb,0xfc,0xc1,0xff,0x7c,
- 0xf7,0x93,0xae,0xb2,0x0e,0xd1,0xdf,0x4e,0xca,0x60,0xa0,0x7a,0x47,0x27,0x03,0x88,
- 0x65,0x91,0x2e,0xa9,0x72,0x85,0x3f,0x44,0x94,0xc8,0xa6,0xb2,0xbd,0x62,0xd6,0xf7,
- 0x58,0xe0,0x17,0x28,0x84,0x65,0x05,0x0a,0x64,0x21,0x01,0x21,0xa8,0xd0,0xa6,0xc9,
- 0xd3,0x11,0x61,0x54,0xe8,0xd3,0xfc,0x02,0x48,0x99,0xdf,0xe3,0xbd,0x50,0x19,0x92,
- 0xf1,0xf9,0xf7,0xaa,0xea,0x11,0xe6,0x0f,0xb7,0x75,0x6f,0x2a,0x3c,0xf3,0x85,0xee,
- 0x90,0xaf,0xa2,0xfb,0x97,0x85,0x95,0x04,0x3d,0xa4,0xe3,0x7e,0xa9,0x02,0x3f,0x6a,
- 0xa1,0x0c,0x24,0x79,0xba,0x0c,0x4b,0x81,0x19,0x52,0x87,0xc6,0x1e,0x3b,0x8b,0x16,
- 0x96,0xe5,0xf8,0xde,0x3b,0x41,0x6d,0x93,0xc1,0x25,0x91,0xe7,0x41,0xa5,0x1e,0xfc,
- 0x3a,0x96,0xaa,0x6a,0x9b,0xca,0x0c,0x4a,0xd5,0x60,0x37,0x57,0x62,0xda,0xc7,0x2b,
- 0x2a,0x51,0x03,0x3e,0x89,0x40,0x07,0xf0,0x7b,0x8a,0x84,0x20,0xba,0x52,0x62,0xff,
- 0x5b,0xcc,0x9b,0xd0,0x65,0xd5,0x42,0xc6,0xf7,0xd8,0x59,0x8d,0xcf,0xbf,0x4f,0x22,
- 0x9d,0x92,0x9a,0xc0,0xa7,0x85,0x3b,0xaa,0xe9,0xa0,0x4c,0x5c,0x40,0x87,0xaa,0x55,
- 0xf6,0xfc,0x88,0xe3,0x76,0x45,0xa8,0x86,0x22,0x80,0x22,0xe6,0x9b,0x24,0xa5,0x08,
- 0x5f,0x47,0x63,0x17,0xfb,0xab,0x7d,0x1a,0x66,0x67,0xf0,0xa7,0x8c,0xf9,0xdf,0xe4,
- 0xaf,0x1c,0xf4,0x7f,0xd3,0x35,0x2b,0xb4,0x49,0xde,0xe1,0x09,0xb4,0x2e,0x9f,0x15,
- 0xd9,0x54,0xb1,0x50,0x63,0x7f,0x88,0x8a,0xa1,0x17,0xd4,0x4a,0x8a,0x48,0xdd,0xf1,
- 0x5f,0x98,0x26,0x4d,0xa7,0x10,0x92,0x2b,0xd4,0x69,0x52,0x47,0x9b,0xda,0xaa,0x29,
- 0x74,0x9a,0xbf,0x03,0x27,0xaa,0x42,0x2f,0x58,0xcc,0xfe,0x22,0xad,0x19,0xf3,0xf3,
- 0x4b,0x55,0x0d,0xb1,0x69,0x91,0xe8,0x26,0x58,0xf8,0x00,0xb4,0x8a,0x8a,0xc6,0x8c,
- 0x9b,0x20,0x44,0xca,0x8e,0xdc,0xbb,0xb8,0xf2,0x05,0x4f,0x6b,0x96,0x3f,0xec,0x20,
- 0x7c,0x92,0x99,0xf7,0x0b,0x49,0xdf,0x84,0x59,0x63,0xd3,0xd4,0xe9,0x2f,0x4a,0x77,
- 0xea,0xb3,0xa2,0x05,0xc1,0x8e,0xad,0xf0,0x4d,0xee,0x78,0xd3,0xff,0xba,0xca,0x2a,
- 0x25,0x99,0x2d,0x1b,0xe8,0x62,0xef,0xe3,0x69,0xd7,0x14,0x3d,0x12,0x5c,0xe8,0xf2,
- 0x68,0x11,0x45,0xf9,0xa5,0x52,0x19,0xf1,0x2f,0x15,0x33,0xfc,0xa1,0xaa,0xb8,0x54,
- 0xd0,0x64,0x36,0x33,0x4a,0xa1,0xa0,0x16,0x41,0x52,0x08,0x40,0x1b,0xfe,0x21,0x42,
- 0x42,0x35,0xd5,0x40,0x6c,0x73,0xbc,0x7e,0x50,0x57,0x62,0x05,0x1e,0x08,0x49,0x41,
- 0x0a,0xc1,0xcf,0x79,0x94,0x56,0x69,0x28,0x12,0x0c,0xde,0x8f,0x6e,0xf0,0x21,0x86,
- 0xf4,0x3b,0x40,0x0c,0xd9,0xee,0x96,0x18,0x7e,0x96,0x29,0xe0,0xa4,0xab,0x20,0x51,
- 0xad,0x1a,0x34,0x29,0x54,0x08,0x51,0xfe,0xc2,0xaa,0x28,0xe3,0xff,0x43,0x1d,0xfe,
- 0xd0,0x78,0x39,0xf6,0x9f,0xa3,0x2a,0xd2,0x1d,0xcc,0x8e,0x72,0x9f,0xaa,0xda,0x0c,
- 0x6a,0xdd,0xdd,0xd4,0x14,0x8c,0x53,0xaa,0xa9,0x0a,0x28,0x63,0x94,0xb2,0xeb,0x8a,
- 0x86,0x46,0x0c,0x18,0x62,0xe6,0x57,0xf8,0x4f,0x2f,0xdb,0xfc,0x61,0x53,0x47,0xe4,
- 0x47,0xf4,0xc6,0xef,0xdf,0xfd,0x67,0x91,0xce,0x8e,0x99,0xb4,0xa9,0xe2,0x33,0x0f,
- 0x76,0x74,0x2e,0xfd,0x2b,0x76,0xe5,0x3b,0xd7,0x2c,0x5d,0x2d,0xb4,0xea,0x4d,0x57,
- 0xef,0xa9,0x70,0x2e,0x08,0xbe,0x66,0x94,0x72,0x42,0x09,0xa5,0xec,0x7b,0x6a,0xd7,
- 0x22,0x94,0x2d,0x31,0x6d,0x29,0xe0,0x40,0x69,0x59,0x59,0x99,0x85,0xae,0xcc,0x7f,
- 0xf5,0x84,0x74,0xf3,0x55,0x58,0x2f,0x09,0x1d,0x7c,0xa8,0xf5,0x82,0x20,0xf3,0x75,
- 0x5f,0x2f,0x77,0x2f,0x5b,0x66,0xbf,0x37,0xed,0x0d,0xee,0xc9,0xf2,0x0f,0x57,0xee,
- 0x99,0xa4,0x90,0xf1,0x2f,0xfd,0xeb,0xc7,0xef,0x67,0xdc,0xbf,0xe4,0x4a,0xcb,0x64,
- 0xe6,0xab,0xd8,0xee,0x7f,0xe3,0x0d,0xf3,0xfe,0xe7,0xde,0x37,0x8c,0xf7,0x5b,0xa6,
- 0xf2,0x57,0xf7,0xb4,0x98,0xf7,0xdf,0xf3,0x07,0xf9,0xb7,0x67,0x5b,0x3e,0x4e,0xdd,
- 0x66,0xfd,0x17,0x27,0x3f,0x9e,0xe2,0xfe,0x2b,0x0b,0x8c,0xd1,0xb5,0x5c,0x99,0x34,
- 0x8c,0xeb,0x26,0xaf,0x64,0x3d,0xff,0x17,0x4b,0xc5,0xf5,0xda,0x29,0x65,0x11,0x14,
- 0xf4,0x1b,0x46,0x59,0xf1,0x2f,0xc4,0x6f,0x68,0xb7,0x5a,0x46,0xfb,0x9f,0x48,0xc5,
- 0xfa,0x42,0xeb,0xfe,0xcf,0x2e,0x93,0xbe,0x21,0xdc,0xaa,0x7d,0x99,0x05,0xff,0x02,
- 0x66,0x2c,0xfd,0x72,0x45,0xf9,0x00,0x33,0xda,0xb4,0x56,0xa5,0x7c,0x40,0x60,0x57,
- 0xc2,0x5f,0x56,0xca,0xf5,0xe9,0x26,0x5e,0x05,0x4a,0x04,0xb5,0xab,0x4d,0x2d,0x95,
- 0xa5,0x88,0xa0,0xd2,0x94,0x51,0xc9,0x8c,0x3f,0x91,0xa5,0x7b,0xcd,0x2b,0xd6,0xf1,
- 0x3e,0xb8,0xf4,0xd8,0x5e,0x75,0x35,0x5c,0x05,0xdb,0xa8,0x10,0x46,0x43,0x29,0xb8,
- 0x57,0x08,0x0b,0xab,0xc9,0x55,0x15,0x05,0x54,0xb8,0xad,0x63,0xb5,0xf6,0x25,0x28,
- 0xb0,0xdd,0xff,0xd9,0xd5,0x05,0x0d,0xc2,0xe7,0xe9,0x97,0x97,0x4a,0xdd,0x05,0xdf,
- 0x14,0x6e,0xa5,0x5f,0x56,0xcb,0x13,0x05,0x77,0xa6,0x0c,0x21,0x75,0xc5,0xf6,0x3e,
- 0xbf,0xd0,0xc2,0xaa,0x22,0x4b,0x84,0xb9,0x3e,0x08,0x43,0x05,0x14,0x82,0x60,0x19,
- 0x5d,0x92,0x79,0x25,0x3d,0xde,0x5f,0x68,0xd2,0xed,0x42,0x05,0xbd,0x49,0x85,0x2d,
- 0x92,0x4f,0x90,0xf5,0x90,0xaa,0x74,0x4b,0x6a,0x87,0x4c,0x43,0x41,0xe5,0x5e,0x49,
- 0x65,0xce,0x93,0x5d,0xb1,0xdf,0xbf,0xbc,0xe0,0xe6,0x8e,0x5b,0x62,0xb7,0xf8,0x0b,
- 0x5c,0x05,0xa1,0x8e,0xf6,0xf8,0x2d,0xfe,0x72,0x57,0xc1,0x52,0xda,0xce,0xae,0x94,
- 0x93,0x02,0x8d,0xb6,0xab,0x65,0x4d,0xe5,0xb0,0x30,0x3d,0x3f,0xb3,0x84,0x69,0xda,
- 0x9f,0xeb,0xe5,0xb7,0x48,0xb3,0x84,0x2f,0xc3,0x9f,0xeb,0xd3,0xd7,0x17,0xdc,0x2a,
- 0x7c,0x11,0x6e,0xd1,0xcb,0x83,0xcc,0x10,0xd1,0x58,0x2c,0x59,0xf4,0x0f,0xbb,0xdf,
- 0xcf,0x1c,0x47,0x29,0x48,0x54,0xc1,0xa6,0x37,0x4a,0x58,0x40,0x48,0x88,0x2e,0x90,
- 0x85,0x11,0x89,0x7d,0x49,0x0a,0x95,0x14,0x16,0x10,0xd2,0xef,0xb3,0x96,0xc8,0x5a,
- 0x04,0xd4,0xae,0x0a,0x95,0x30,0xd7,0x0f,0x95,0x54,0x36,0x0c,0x95,0x19,0x85,0x29,
- 0x63,0x69,0xfa,0x7d,0x7e,0xd1,0x5e,0x50,0x2d,0xfc,0x37,0xf8,0x92,0x56,0x1e,0x2d,
- 0x58,0x63,0x1a,0x61,0xe1,0x04,0x7c,0x09,0x52,0xc6,0xff,0x82,0x72,0xc7,0xfc,0x88,
- 0x61,0x38,0xc1,0xfe,0x5e,0x05,0x94,0x1b,0x0d,0xd8,0x41,0xe7,0x76,0xf6,0x87,0xfb,
- 0x5b,0x66,0x4c,0x63,0x06,0xbd,0x8a,0x19,0xb6,0xf5,0xc3,0x1c,0x5b,0x87,0x07,0x3d,
- 0x53,0x44,0x52,0x3a,0x3c,0x95,0xad,0xb2,0x72,0x84,0x5d,0x91,0xd4,0x9b,0x98,0x01,
- 0xc1,0x7e,0x4f,0x90,0x5d,0xd1,0xd3,0xef,0xc3,0xfe,0x05,0xd9,0x9e,0x4a,0xc4,0x95,
- 0x91,0x32,0x74,0x6e,0x10,0x4c,0xb6,0x98,0x57,0x6c,0xf3,0x43,0x84,0x20,0x5d,0xa9,
- 0xce,0x90,0xcb,0x22,0x29,0x43,0x3a,0x22,0x04,0xfb,0xb9,0xf1,0x22,0xf3,0xe7,0x2b,
- 0xd5,0x2f,0xca,0x92,0xed,0xfe,0x5f,0x84,0x0a,0xc2,0x1d,0xab,0x55,0xb6,0xa8,0x22,
- 0x86,0x21,0x97,0x33,0xa3,0x7f,0xb5,0x7a,0x95,0x5c,0xde,0x59,0xa0,0xf6,0xaf,0x0e,
- 0xb2,0x2b,0xd4,0x36,0x3f,0x21,0x3e,0x73,0xd6,0x14,0xa6,0x0c,0x8f,0x1a,0x32,0x0d,
- 0x36,0x34,0xfb,0x78,0x6f,0x96,0xc2,0x1d,0x15,0x95,0x37,0xb5,0xc1,0x43,0xcc,0xb8,
- 0x9a,0x0d,0x73,0x7a,0x44,0x5a,0xc3,0x66,0xe0,0xa6,0xb6,0xe9,0x0f,0xb1,0x85,0xe4,
- 0x51,0x5b,0xdb,0xa6,0xd3,0xe9,0x56,0xc8,0xf8,0x6c,0xb8,0x60,0xb5,0xf0,0x25,0xf8,
- 0x2c,0x95,0x54,0x6e,0xfc,0x39,0x2d,0x0f,0x4b,0xab,0xe1,0x26,0x6e,0x08,0x15,0xcc,
- 0x98,0x4e,0xcb,0x35,0xdb,0xf7,0x55,0x08,0x7f,0x46,0x6f,0x09,0x97,0x6f,0x97,0x0a,
- 0x05,0xb6,0xcc,0xc2,0x65,0x15,0x05,0x68,0xdc,0x62,0x1a,0xfc,0x0a,0x0b,0x41,0xe6,
- 0xfd,0xfd,0xa5,0x1c,0x56,0xdf,0xdc,0x06,0xa5,0xec,0x13,0x58,0x6a,0x7c,0x0b,0x12,
- 0xba,0xf1,0x36,0x09,0xaf,0x70,0xc3,0xda,0xee,0x03,0x0c,0xdc,0x44,0xa6,0xd3,0xae,
- 0xf0,0xd7,0x2a,0x2a,0x6e,0x12,0xff,0x8c,0xbe,0x1a,0xfe,0x4c,0x45,0x31,0x1a,0xdb,
- 0xb8,0x31,0x6d,0xba,0x71,0x45,0x4b,0xcf,0x4f,0xd7,0x4d,0x05,0xdf,0xe8,0x40,0x27,
- 0x70,0xed,0x0b,0x45,0x68,0xfc,0x49,0x45,0xf9,0x0b,0xec,0xca,0x29,0xed,0xcb,0x68,
- 0xdc,0xd6,0x71,0x2a,0xfc,0xb7,0x15,0xe5,0x76,0x7f,0x72,0x93,0xf0,0x0d,0x7a,0x2a,
- 0xbc,0xa8,0xa2,0xf8,0x05,0x11,0x8d,0x69,0x86,0x71,0xab,0x71,0xe5,0x36,0x8a,0x4f,
- 0xb8,0x56,0x9f,0x6e,0xbb,0x5f,0xe2,0xcf,0x5f,0xdd,0xf6,0x42,0x41,0xfa,0xf9,0x1b,
- 0x3d,0x61,0x7c,0x3e,0x2c,0xec,0xf0,0x84,0x5b,0x2b,0xec,0xdf,0x3b,0xe0,0x7a,0x40,
- 0x27,0x03,0x86,0xff,0x69,0x37,0x1c,0xd1,0xad,0xa6,0x47,0xba,0x15,0x1d,0x11,0xb5,
- 0xad,0xb6,0x42,0xe1,0x36,0xba,0x3a,0x7c,0x55,0x05,0xf3,0x4e,0x86,0xc1,0xfc,0x0f,
- 0x73,0x3b,0x86,0x51,0xc9,0x8c,0x2f,0x55,0x94,0xdb,0xee,0xff,0xac,0x56,0x1e,0x14,
- 0x56,0xc2,0x17,0x41,0xd2,0x0b,0xd6,0x0b,0xb7,0xc2,0x97,0xa1,0x3c,0x6d,0x08,0xc1,
- 0x94,0x91,0x7e,0x9f,0xcf,0xb6,0x82,0x1a,0x93,0xfd,0x0c,0x4d,0x45,0x20,0x4c,0x2b,
- 0xd8,0x27,0x28,0xa4,0x0d,0x49,0x35,0x0c,0x6a,0x1b,0xef,0x72,0x29,0xbc,0xa3,0x42,
- 0xbd,0x89,0xdd,0x8f,0x6e,0x87,0x2d,0x33,0xc5,0x66,0x84,0x0d,0xc3,0x7e,0xbf,0x36,
- 0xa7,0x7d,0xe9,0x2d,0xa5,0x7f,0x0e,0x5d,0xcc,0xdb,0x74,0xb4,0x57,0xde,0x22,0x73,
- 0xb7,0xf3,0x67,0x2a,0x33,0xc4,0x82,0x76,0xf4,0x3f,0x72,0x01,0xd8,0xe6,0xc7,0x2d,
- 0xb4,0x27,0x6e,0x09,0x96,0xcb,0x52,0xab,0xd0,0xae,0xdf,0xa2,0x96,0x7b,0x0a,0xb8,
- 0x11,0x64,0x46,0xc8,0x30,0xe4,0x02,0xcd,0x36,0x3f,0xa0,0x85,0x15,0x45,0x92,0x04,
- 0xc4,0x2f,0xa0,0x74,0x14,0x72,0x17,0xc8,0xb6,0x65,0xcc,0x17,0x02,0x5e,0xe1,0x46,
- 0x1a,0x01,0x7d,0xb6,0xf5,0xff,0x69,0xef,0xfc,0x42,0xe3,0x38,0xee,0x38,0xfe,0x9b,
- 0xbb,0xd9,0xf3,0x9e,0x7d,0x72,0x77,0xa5,0xbd,0x66,0xd5,0x08,0xb3,0xfa,0x53,0x4b,
- 0xa6,0xa4,0xac,0x82,0x95,0xba,0x08,0xa2,0x39,0xdd,0x9d,0x7c,0x12,0x8e,0x7c,0x96,
- 0x1c,0xc5,0x18,0x53,0xd6,0x46,0x34,0x26,0x50,0x90,0x0d,0xa5,0xee,0x43,0x9d,0x39,
- 0xf5,0x9c,0xaa,0xc5,0x85,0x8b,0xac,0x62,0x19,0x04,0x3d,0x13,0xd5,0xf4,0x25,0xd0,
- 0x42,0x8d,0xf3,0xd6,0x93,0x62,0xab,0x2e,0xf4,0xc1,0xa4,0xaa,0xc9,0x43,0xa9,0x6c,
- 0xd0,0x4b,0xa1,0x26,0x2f,0x86,0xa2,0x16,0x45,0xfd,0xcd,0xec,0xdd,0xed,0xc8,0x0d,
- 0x86,0xa4,0xd0,0x42,0x99,0xef,0xd3,0x97,0xd9,0xb9,0xd5,0x6f,0x67,0x67,0x7e,0xf3,
- 0xf9,0xed,0xea,0xa4,0x58,0x17,0xe7,0x37,0xbd,0xc2,0xe2,0xac,0x04,0x54,0x30,0x05,
- 0x52,0xf2,0x52,0x9f,0x87,0x26,0x21,0x5a,0xd0,0x28,0xf1,0xe4,0xd9,0x1e,0xcc,0xf6,
- 0x30,0x15,0x4f,0x73,0x43,0x98,0x87,0x20,0x0c,0x7c,0x4c,0x31,0xff,0xe0,0x8e,0x50,
- 0xcf,0x3f,0xd1,0xf5,0x5e,0x61,0x69,0xb1,0x4d,0xbc,0x12,0xff,0x29,0x8f,0x37,0xf3,
- 0x4f,0x00,0x67,0xa8,0x30,0x7b,0x3c,0x1c,0xff,0x17,0xd0,0xa8,0xf1,0xcb,0xa4,0x91,
- 0xa5,0x9c,0x3b,0x3e,0x49,0x89,0xd4,0x59,0xa3,0x3e,0x71,0x63,0xc2,0xe0,0xbc,0x17,
- 0x2b,0x0c,0x4d,0x24,0x1a,0x26,0x19,0x86,0xc5,0x6e,0x3f,0xa4,0x82,0x78,0x11,0xd6,
- 0xe1,0x30,0x62,0x2d,0xb6,0xac,0x83,0x40,0xdf,0x98,0xc8,0x48,0x4a,0x7f,0xa3,0x9f,
- 0x1d,0x2b,0xb6,0x2d,0x94,0x7f,0x47,0xfa,0x6b,0xc7,0x58,0x9b,0x93,0xbb,0x47,0xfa,
- 0x33,0xe3,0xc5,0x36,0x87,0xde,0x25,0x9d,0xb9,0x63,0xc5,0x49,0x8b,0xaa,0xfd,0xbb,
- 0x8d,0xf3,0x2b,0xdf,0xf2,0xa7,0xe6,0xe8,0x7b,0x68,0x4e,0xfb,0x53,0x57,0xd3,0xd2,
- 0x78,0xa1,0xa9,0xc9,0x16,0x35,0x7e,0x23,0xfc,0xf6,0x14,0x6b,0x14,0xdf,0x45,0x58,
- 0xc0,0x18,0x65,0x3c,0x0b,0x8d,0x78,0x76,0x5d,0x6f,0x2e,0xb0,0x5d,0x3a,0x42,0x60,
- 0x2e,0xdc,0xc8,0x7c,0x1b,0x8d,0xed,0x96,0xb3,0x9d,0x36,0x9f,0x3e,0x67,0xb9,0xe5,
- 0x11,0x34,0x6a,0xff,0xb3,0x45,0x3b,0x47,0xf3,0xc4,0x61,0x46,0xd1,0x3e,0x49,0x5f,
- 0x27,0xe9,0x5c,0xbe,0xe8,0x9d,0xa4,0x27,0x20,0x9d,0xbb,0x27,0x5a,0xd2,0x24,0xad,
- 0xce,0x07,0xb3,0x53,0xa4,0x40,0xcb,0x2b,0x9b,0xa2,0xec,0x99,0x75,0xc4,0x7f,0x28,
- 0x6e,0x98,0xce,0x09,0x57,0x98,0x2b,0xea,0xe9,0xf7,0x1a,0xb1,0x12,0x54,0xa1,0x0f,
- 0xf6,0x92,0x18,0x67,0x55,0xab,0x8f,0xa2,0xa9,0x44,0xe6,0x16,0x1a,0xb5,0x7f,0x2a,
- 0x31,0x49,0xca,0xb5,0x4e,0x1f,0x8e,0xc5,0x27,0x61,0xbd,0x36,0xe0,0xb7,0x44,0xe6,
- 0xe0,0xa4,0x75,0xf2,0xee,0xc0,0xcb,0x2d,0x6a,0x3c,0x49,0xe3,0x62,0xe6,0x4c,0xe5,
- 0x0d,0xcf,0xbe,0x4f,0x71,0xf7,0x9f,0x7d,0xc1,0x33,0xee,0x23,0x18,0xfc,0x39,0x04,
- 0x83,0x8b,0xf1,0x25,0xfe,0x3d,0xef,0x67,0xea,0xf8,0xbf,0x38,0x36,0xfc,0xb0,0x72,
- 0x7b,0xf9,0xa5,0xe4,0x3e,0x61,0x7e,0xb3,0xfc,0xd2,0xe8,0xbe,0x89,0xb1,0x07,0xf3,
- 0xb7,0x7b,0xde,0x4f,0xee,0x1b,0x1e,0x5b,0x17,0xe6,0x90,0x1a,0xcf,0xe0,0xdb,0xe3,
- 0x3b,0x7f,0xfc,0xed,0xd3,0x27,0x5b,0xd2,0xdc,0x79,0xfa,0xc9,0xd6,0xe0,0xa7,0xc7,
- 0x37,0xae,0xed,0x6c,0x6e,0x6f,0x0d,0x5e,0x3e,0xbe,0x23,0xcc,0x36,0xfc,0x07,0x7a,
- 0xf5,0x46,0xf2,0xe0,0xf0,0x68,0x65,0x7e,0x7a,0x68,0xeb,0x4b,0xb7,0xb2,0x3b,0x95,
- 0x7f,0xfc,0xe0,0xd5,0x9f,0x8f,0xbe,0xfd,0xd1,0x68,0xe5,0xfa,0xf6,0xd0,0xce,0x68,
- 0xef,0x47,0xa3,0x4f,0xaf,0x6f,0xaa,0xfd,0x87,0x2e,0x8f,0x6f,0x5c,0xbb,0xb3,0xf9,
- 0x64,0x6b,0xa8,0x1e,0xc6,0xf6,0x90,0x0c,0x6c,0xf3,0x13,0xec,0x3f,0xbe,0x21,0x23,
- 0x54,0xfb,0x77,0x1f,0x28,0x6c,0xcc,0x7f,0x63,0xf3,0xea,0xd9,0x41,0xf1,0xc1,0x5f,
- 0xe3,0x07,0xd1,0xfc,0xa5,0xed,0x4e,0xf9,0xc9,0x56,0xb7,0x2b,0xcd,0xdf,0xbe,0xbf,
- 0x2b,0xa0,0xec,0x0c,0x5b,0xb2,0x7a,0x5b,0x93,0xb5,0xae,0x99,0xcc,0x12,0xbc,0x49,
- 0x5b,0x56,0x40,0xb6,0xd0,0xe4,0x4a,0x0c,0x8d,0xdf,0x4b,0x89,0x3a,0x9e,0x38,0xff,
- 0x05,0x1f,0xba,0x20,0xb0,0x50,0x80,0xa2,0x7d,0x57,0x24,0x6a,0x34,0x98,0xa8,0x4f,
- 0xc8,0x16,0x43,0xed,0x1f,0x23,0x81,0xc8,0xcf,0x2e,0x34,0xf9,0x70,0x95,0x78,0x20,
- 0x8d,0xe4,0xc3,0xa0,0x75,0x77,0x7e,0x46,0xe6,0x11,0x90,0x16,0x2b,0x21,0xb6,0xc9,
- 0xfd,0xb0,0xc4,0x43,0x6c,0x73,0x11,0xe4,0xce,0x72,0xc1,0x6f,0x27,0xd4,0xfe,0x66,
- 0xee,0x62,0x32,0xc5,0xb3,0x06,0xcc,0x4d,0xbf,0x0c,0x1d,0xe5,0x3d,0xe1,0xc4,0xe8,
- 0xe0,0x47,0x9b,0xa6,0xc7,0x56,0xe3,0x01,0x08,0xea,0x7c,0x88,0xd4,0xe5,0x5a,0x2a,
- 0x1f,0x2a,0x26,0x52,0x12,0xb1,0x10,0x97,0x55,0x20,0xd6,0x97,0xfc,0x5a,0xa3,0x55,
- 0xa1,0xbd,0x04,0xf9,0x30,0xb0,0x16,0xe9,0x41,0x92,0xe4,0xc3,0xc5,0x5d,0xcf,0xac,
- 0x0e,0xd1,0xb1,0xd2,0x97,0xab,0xf9,0x0f,0xec,0x3e,0x7a,0xba,0xdc,0x7a,0x93,0xfe,
- 0xd2,0xee,0x82,0xb1,0x52,0x6b,0x35,0xf7,0x81,0xfd,0x75,0x2a,0xcd,0x9c,0xf2,0x76,
- 0xdc,0xac,0xb5,0x40,0x1b,0x38,0x0f,0x8c,0x8a,0x24,0x1d,0xa7,0x06,0xbf,0x92,0xbb,
- 0x8d,0x53,0x33,0xfc,0xc8,0xb0,0xe8,0x03,0x35,0x8a,0xc9,0x17,0x2f,0x60,0x02,0xde,
- 0x01,0x59,0xec,0x31,0x1c,0xa4,0x00,0xeb,0x3c,0x6a,0x92,0xb0,0xcc,0xa5,0xc8,0x8c,
- 0x7e,0x74,0x7e,0xf1,0xf8,0x8e,0x5b,0x1e,0x16,0xeb,0x22,0x71,0x58,0xf2,0x81,0x1b,
- 0x35,0xc5,0x93,0xbb,0x39,0xab,0x8b,0x9a,0xa5,0x18,0x1e,0xda,0xd5,0xbf,0x3e,0xec,
- 0x32,0xd1,0xbb,0x98,0xf1,0x6d,0x9e,0x68,0x80,0x09,0x0d,0x4d,0x3b,0x6f,0xf6,0xb7,
- 0x08,0x8b,0x05,0xe2,0x8b,0x32,0x82,0xcc,0x84,0xc1,0xd1,0xbb,0x0f,0xd3,0xa2,0x45,
- 0xfc,0xea,0xf1,0x34,0xdc,0x80,0x83,0x1e,0x89,0x9e,0x28,0xb0,0x3a,0x1f,0x66,0x0b,
- 0xb8,0xdf,0x49,0x50,0x2c,0xe0,0xb6,0xe8,0xff,0x58,0x80,0x62,0x65,0xb5,0x47,0x1e,
- 0x32,0x2b,0xb5,0xe6,0xef,0x43,0x32,0xf8,0x77,0x3e,0xe4,0xac,0x81,0x85,0x4d,0xd3,
- 0xfc,0x7b,0x11,0x0c,0xd3,0xa3,0x2f,0x21,0xcd,0x9a,0xad,0x1b,0xf8,0x90,0xd6,0xcd,
- 0x6a,0xd8,0x92,0xb2,0x6a,0x56,0x14,0x0f,0x13,0xfc,0xe6,0x8d,0xe0,0x4d,0x17,0x06,
- 0x90,0xdf,0x7e,0x28,0x2e,0xd3,0x93,0xd7,0xcb,0xf0,0xd0,0x04,0xb5,0x79,0x14,0x0f,
- 0xf9,0x2c,0x3e,0xf4,0x9f,0x69,0xa9,0x35,0x2b,0xda,0x22,0x19,0x0e,0xcf,0x2f,0x78,
- 0x38,0x34,0xb6,0xb8,0xf0,0xba,0x11,0x2d,0xb8,0xbf,0x47,0xf3,0x53,0xc4,0x53,0x24,
- 0x0e,0xe4,0xd1,0xd7,0x8d,0x8d,0x37,0xb5,0x6e,0x1a,0x87,0x86,0x9b,0xfb,0x69,0x01,
- 0x07,0x3c,0xc3,0x9d,0xc0,0x70,0x89,0x58,0x17,0x56,0x40,0x85,0xc9,0x3c,0x63,0xa2,
- 0xe9,0x53,0x00,0x31,0xf3,0x4d,0x9c,0x05,0x8e,0x88,0x96,0xd5,0x6b,0xa5,0x72,0xc3,
- 0x84,0x2d,0xa0,0xc4,0x33,0x85,0x34,0x58,0x0e,0x3a,0x4f,0xb9,0x53,0x08,0x8a,0x7f,
- 0x0a,0xd2,0xae,0xd1,0x00,0xc5,0x54,0x93,0x18,0x15,0x5e,0x25,0x82,0xdf,0x3a,0x82,
- 0xa3,0x96,0xb3,0x26,0xcd,0x9b,0x56,0xfb,0x5a,0xe2,0xbb,0x04,0x5b,0x8a,0xce,0x3a,
- 0x96,0x96,0x1d,0xec,0xe8,0xa9,0x43,0xca,0xf5,0x92,0x84,0x73,0x81,0x77,0x04,0xbd,
- 0x2e,0x59,0x8b,0x5d,0xe0,0x4b,0x68,0x92,0x6b,0x20,0x4c,0x1b,0x9a,0xd8,0x85,0x92,
- 0x68,0x51,0xf2,0x49,0x31,0x3f,0x22,0xe9,0xf1,0x0d,0xd7,0x8c,0xf8,0x90,0x0e,0x94,
- 0xcf,0x04,0x6d,0xa7,0xd2,0x0f,0xc9,0x85,0x2b,0x02,0x1d,0xed,0xd5,0x66,0x3c,0x0c,
- 0xa1,0x57,0xa6,0x1d,0xe4,0x73,0x34,0xa3,0x21,0x16,0xce,0xf0,0xdd,0x15,0xab,0x12,
- 0x0f,0xce,0x64,0x4c,0x32,0x41,0x62,0x11,0x6e,0xa1,0xf9,0x4a,0x80,0x69,0xe7,0x1d,
- 0x2a,0x5b,0xd0,0x84,0x87,0x5c,0x75,0x3f,0xcd,0x07,0x70,0x89,0xec,0x87,0xec,0x2c,
- 0x3c,0x2a,0x1f,0x21,0x07,0x20,0xcb,0xed,0x47,0xf4,0x12,0x9a,0xa3,0x68,0x7a,0x2e,
- 0x81,0x34,0x11,0x1f,0x32,0x32,0x01,0xde,0x32,0xf2,0x21,0xc6,0xc3,0x3d,0xde,0xee,
- 0xc7,0x10,0x0b,0xf9,0xb4,0xc0,0xc2,0x02,0x99,0xe7,0x41,0x68,0xb8,0x12,0x0f,0xce,
- 0xb7,0x9b,0x72,0xfe,0xfc,0xa4,0x8c,0x34,0x58,0xc5,0x32,0x6a,0xb6,0xdc,0xe0,0xc3,
- 0xb2,0x98,0x6f,0x82,0x0f,0xd5,0xf5,0x45,0x20,0xe3,0xb4,0x86,0xf3,0xa7,0x64,0x79,
- 0x79,0x13,0x59,0x8a,0xa1,0xc9,0xa1,0xa1,0xa1,0xc9,0x44,0x3c,0xc6,0x18,0x96,0x94,
- 0xf7,0x1d,0xdf,0x30,0x61,0x2f,0xae,0x23,0xa7,0x4a,0x52,0x24,0xeb,0x15,0x6b,0xd8,
- 0x82,0x06,0xea,0x86,0x91,0x28,0x1e,0x93,0xfa,0xb6,0xe4,0x43,0xce,0xba,0x30,0xdb,
- 0xc4,0x91,0x0f,0x59,0x1d,0x0b,0x9b,0x06,0x94,0xf5,0x35,0xec,0xb5,0x96,0x78,0xd5,
- 0x33,0x17,0x63,0x5d,0x48,0x83,0x58,0x62,0x0b,0x3e,0x9c,0x43,0x12,0xdb,0x3b,0x87,
- 0x09,0xa3,0x22,0xf8,0x70,0x0e,0x94,0xf5,0xc5,0xae,0xca,0x24,0x83,0x39,0xb7,0xec,
- 0x49,0x53,0xc2,0xfc,0x63,0xbb,0xf0,0x6d,0x62,0xf3,0x3f,0x04,0x16,0xa2,0x4e,0xac,
- 0x9d,0x37,0xd7,0x17,0xf6,0xe7,0xd3,0xd0,0x0e,0x89,0x8c,0x59,0xe1,0x01,0xdc,0x88,
- 0x63,0x46,0xae,0xc0,0x4c,0x1f,0xe6,0x9f,0x18,0xa9,0xac,0x61,0x8e,0x46,0x53,0x52,
- 0xd7,0x57,0xc0,0x8e,0xc0,0x7e,0x88,0xcf,0xd6,0xaa,0xfc,0x08,0xd9,0x4f,0xb2,0xbc,
- 0xf2,0x88,0x9e,0x6f,0x11,0x77,0x90,0x3f,0x9a,0x3e,0x92,0xdc,0x1f,0xc7,0x3b,0xc8,
- 0x9b,0xe3,0x53,0xc4,0xf2,0xfb,0x9b,0xc1,0xfe,0x53,0xf1,0x05,0xf8,0x05,0xf8,0x2c,
- 0x65,0xc5,0x29,0x7c,0x88,0xb9,0x53,0x9a,0x95,0x46,0x8b,0x7a,0xbf,0x28,0x0c,0xb0,
- 0x96,0x62,0x7c,0xa2,0xb2,0xc0,0xfb,0x59,0x4b,0x26,0xee,0xc0,0x3d,0xda,0x5f,0x48,
- 0x15,0x43,0xc3,0x52,0x13,0x71,0xc7,0x5a,0x25,0x56,0x33,0x9e,0x2c,0x0d,0x56,0x5c,
- 0x7f,0xc4,0x85,0x1f,0x95,0x99,0x30,0xa6,0x7d,0x2d,0x6c,0x49,0xd9,0xd7,0x21,0x58,
- 0x29,0x08,0xc3,0x2d,0x65,0x7c,0xa0,0x1b,0xb3,0xb4,0xfa,0xf2,0xe4,0xee,0x67,0xbc,
- 0xd7,0x8a,0xd6,0x57,0xa1,0xc1,0x87,0x3c,0x77,0x4e,0x98,0x4e,0xeb,0x63,0xe4,0x43,
- 0x4b,0x60,0xe1,0x22,0x9c,0xb3,0xcd,0x90,0x0f,0x9b,0xe3,0x99,0x67,0xb9,0xd7,0xed,
- 0xb4,0x93,0xcf,0xf3,0x13,0xd3,0x45,0xdb,0x31,0xf2,0xc4,0x62,0x0c,0xd3,0x8e,0x81,
- 0xf9,0x27,0x07,0xd8,0x42,0xf3,0x40,0xa2,0xf5,0x8e,0xf3,0x21,0xac,0x8c,0xbb,0x64,
- 0xe6,0xb3,0x66,0x0d,0x39,0x37,0x41,0x14,0x31,0xc4,0xac,0xd7,0x0b,0x25,0x88,0x78,
- 0x5e,0xf0,0x21,0x87,0x2a,0x43,0x1a,0xa4,0xb1,0x32,0x43,0x50,0xa4,0x2a,0x28,0x86,
- 0x26,0xea,0xcd,0xf2,0xaf,0x91,0x49,0x46,0x1f,0x9c,0x7d,0xc5,0x6d,0x49,0xb4,0xb1,
- 0xf5,0x07,0x9d,0x87,0x53,0x2d,0xf1,0x49,0x34,0x03,0x87,0x8d,0xd7,0xea,0x46,0xc9,
- 0x3f,0x78,0xbd,0x3d,0x17,0x33,0x4b,0xc8,0x87,0xef,0xfe,0xbe,0x47,0xec,0xfe,0x7b,
- 0xbc,0x74,0x2d,0x31,0x23,0x79,0xa0,0xbd,0x01,0x06,0x4a,0xfe,0x01,0xf8,0xda,0x5b,
- 0x23,0x0f,0xdf,0xbd,0xbd,0xfc,0x9d,0x1b,0x2f,0xbe,0x35,0x26,0xf8,0xf0,0xfd,0x3a,
- 0x1f,0x2e,0x47,0x7c,0xb8,0xeb,0x19,0xf7,0x50,0xc4,0x87,0xc7,0x05,0x1f,0xee,0xd4,
- 0xf9,0xf0,0x69,0xc4,0x87,0xbb,0x78,0xec,0xf3,0xea,0xab,0x02,0x0b,0xff,0x5a,0xd9,
- 0xd9,0x1e,0xda,0xaa,0x83,0x22,0x12,0xe3,0x73,0xf8,0x50,0xfe,0xf4,0xbf,0x6f,0x62,
- 0xff,0x4f,0x1b,0xa0,0x78,0xf9,0x79,0x7c,0x38,0xd8,0xe0,0xc3,0xee,0x03,0xe3,0x1b,
- 0xf3,0xfd,0x9b,0x4f,0x1e,0x0f,0x5d,0x7a,0xa6,0xff,0xe3,0x2f,0x1e,0xbd,0x0f,0x1e,
- 0x11,0x2f,0x28,0x7c,0xc8,0xa6,0xbe,0xf8,0x59,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,
- 0xb4,0xb4,0xb4,0xb4,0xfe,0xdf,0x25,0x6b,0x07,0xaa,0x6b,0x07,0x2d,0x2d,0x2d,0x2d,
- 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0xad,0xe7,0x4b,0xd6,0x0e,0x09,0x5d,0x3b,0x68,0x69,
- 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x3d,0x5f,0xb2,0x76,0x30,0x65,0xed,
- 0xf0,0xbf,0x0e,0x45,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0xeb,0xbf,
- 0x28,0x5f,0xfc,0xd1,0x24,0xf8,0xe7,0x79,0x1f,0xb8,0xf8,0xce,0x53,0xdc,0x07,0xf6,
- 0xb9,0xdf,0x27,0xd4,0x3f,0x6b,0xf8,0x50,0x25,0xd1,0x39,0x1f,0x9f,0x7e,0xb6,0xdf,
- 0xbf,0x00,0x34,0x34,0xbf,0x69,0xee,0x33,0x01,0x00,
diff --git a/board/esd/wuh405/u-boot.lds b/board/esd/wuh405/u-boot.lds
deleted file mode 100644
index 95854f2932..0000000000
--- a/board/esd/wuh405/u-boot.lds
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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/esd/wuh405/wuh405.c b/board/esd/wuh405/wuh405.c
deleted file mode 100644
index 5a1a3f3e8e..0000000000
--- a/board/esd/wuh405/wuh405.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-
-/* fpga configuration data - gzip compressed and generated by bin2c */
-const unsigned char fpgadata[] =
-{
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-/* Prototypes */
-int gunzip(void *, int, unsigned char *, unsigned long *);
-
-
-int board_early_init_f (void)
-{
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF9F); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- volatile unsigned char *duart0_mcr = (unsigned char *)((ulong)DUART0_BA + 4);
- volatile unsigned char *duart1_mcr = (unsigned char *)((ulong)DUART1_BA + 4);
- volatile unsigned char *duart2_mcr = (unsigned char *)((ulong)DUART2_BA + 4);
- volatile unsigned char *duart3_mcr = (unsigned char *)((ulong)DUART3_BA + 4);
- unsigned char *dst;
- ulong len = sizeof(fpgadata);
- int status;
- int index;
- int i;
-
- dst = malloc(CFG_FPGA_MAX_SIZE);
- if (gunzip (dst, CFG_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
- printf ("GUNZIP ERROR - must RESET board to recover\n");
- do_reset (NULL, 0, 0, NULL);
- }
-
- status = fpga_boot(dst, len);
- if (status != 0) {
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("FPGA: %s\n", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=20; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc ('\n');
- do_reset(NULL, 0, 0, NULL);
- }
-
- puts("FPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("%s ", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
-
- free(dst);
-
- /*
- * Reset FPGA via FPGA_DATA pin
- */
- SET_FPGA(FPGA_PRG | FPGA_CLK);
- udelay(1000); /* wait 1ms */
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);
- udelay(1000); /* wait 1ms */
-
- /*
- * Reset external DUARTs
- */
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_DUART_RST); /* set reset to high */
- udelay(10); /* wait 10us */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~CFG_DUART_RST); /* set reset to low */
- udelay(1000); /* wait 1ms */
-
- /*
- * Set NAND-FLASH GPIO signals to default
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~(CFG_NAND_CLE | CFG_NAND_ALE));
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_NAND_CE);
-
- /*
- * Enable interrupts in exar duart mcr[3]
- */
- *duart0_mcr = 0x08;
- *duart1_mcr = 0x08;
- *duart2_mcr = 0x08;
- *duart3_mcr = 0x08;
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming WUH405");
- } else {
- puts(str);
- }
-
- putc ('\n');
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand_legacy.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- nand_probe(CFG_NAND_BASE);
- if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
- print_size(nand_dev_desc[0].totlen, "\n");
- }
-}
-#endif
diff --git a/board/esteem192e/Makefile b/board/esteem192e/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/esteem192e/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/esteem192e/config.mk b/board/esteem192e/config.mk
deleted file mode 100644
index 9d6080b84a..0000000000
--- a/board/esteem192e/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# TQM8xxL boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/esteem192e/esteem192e.c b/board/esteem192e/esteem192e.c
deleted file mode 100644
index 3959eead27..0000000000
--- a/board/esteem192e/esteem192e.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * (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
- *
- *
- * Modified By Conn Clark to work with Esteem 192E 7/31/00
- *
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] = {
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- *
- * active, NOP, read, precharge, NOP */
- 0x0F27CC04, 0x0EAECC04, 0x00B98C04, 0x00F74C00,
- 0x11FFCC05, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- * NOP, Program
- */
- 0x0F0A8C34, 0x1F354C37, /* last */
-
- _NOT_USED_, /* Not used */
-
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- * active, NOP, read, NOP, NOP, NOP, NOP, NOP */
- 0x0F37CC04, 0x0EFECC04, 0x00FDCC04, 0x00FFCC00,
- 0x00FFCC00, 0x01FFCC00, 0x0FFFCC00, 0x1FFFCC05, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- * active, NOP, write, NOP, precharge, NOP */
- 0x0F27CC04, 0x0EAE8C00, 0x01BD4C04, 0x0FFB8C04,
- 0x0FF74C04, 0x1FFFCC05, /* last */
- _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- * active, NOP, write, NOP, NOP, NOP, NOP, NOP */
- 0x0F37CC04, 0x0EFE8C00, 0x00FD4C00, 0x00FFCC00,
- 0x00FFCC00, 0x01FFCC04, 0x0FFFCC04, 0x1FFFCC05, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- * precharge, NOP, auto_ref, NOP, NOP, NOP */
- 0x0FF74C34, 0x0FFACCB4, 0x0FF5CC34, 0x0FFFCC34,
- 0x0FFFCCB4, 0x1FFFCC35, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x0FFB8C00, 0x1FF74C03, /* last */
- _NOT_USED_, _NOT_USED_
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: Esteem 192E\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size_b0, size_b1;
-
- /*
- * Explain frequency of refresh here
- */
-
- memctl->memc_mptpr = 0x0200; /* divide by 32 */
-
- memctl->memc_mamr = 0x18003112; /*CFG_MAMR_8COL; */ /* 0x18005112 TODO: explain here */
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Map cs 2 and 3 to the SDRAM banks 0 and 1 at
- * preliminary addresses - these have to be modified after the
- * SDRAM size has been determined.
- */
-
- memctl->memc_or2 = CFG_OR2_PRELIM; /* not defined yet */
- memctl->memc_br2 = CFG_BR2_PRELIM;
-
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
-
-
- /* perform SDRAM initializsation sequence */
- memctl->memc_mar = 0x00000088;
- memctl->memc_mcr = 0x80004830; /* SDRAM bank 0 execute 8 refresh */
- memctl->memc_mcr = 0x80004105; /* SDRAM bank 0 */
-
- memctl->memc_mcr = 0x80006830; /* SDRAM bank 1 execute 8 refresh */
- memctl->memc_mcr = 0x80006105; /* SDRAM bank 1 */
-
- memctl->memc_mamr = CFG_MAMR_8COL; /* 0x18803112 start refresh timer TODO: explain here */
-
-/* printf ("banks 0 and 1 are programed\n"); */
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- */
- size_b0 = get_ram_size ( (long *)SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
- size_b1 = get_ram_size ( (long *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
-
- printf ("\nbank 0 size %lu\nbank 1 size %lu\n", size_b0, size_b1);
-
-/* printf ("bank 1 size %u\n",size_b1); */
-
- if (size_b1 == 0) {
- /*
- * Adjust refresh rate if bank 0 isn't stuffed
- */
- memctl->memc_mptpr = 0x0400; /* divide by 64 */
- memctl->memc_br3 &= 0x0FFFFFFFE;
-
- /*
- * Adjust OR2 for size of bank 0
- */
- memctl->memc_or2 |= 7 * size_b0;
- } else {
- if (size_b0 < size_b1) {
- memctl->memc_br2 &= 0x00007FFE;
- memctl->memc_br3 &= 0x00007FFF;
-
- /*
- * Adjust OR3 for size of bank 1
- */
- memctl->memc_or3 |= 15 * size_b1;
-
- /*
- * Adjust OR2 for size of bank 0
- */
- memctl->memc_or2 |= 15 * size_b0;
- memctl->memc_br2 += (size_b1 + 1);
- } else {
- memctl->memc_br3 &= 0x00007FFE;
-
- /*
- * Adjust OR2 for size of bank 0
- */
- memctl->memc_or2 |= 15 * size_b0;
-
- /*
- * Adjust OR3 for size of bank 1
- */
- memctl->memc_or3 |= 15 * size_b1;
- memctl->memc_br3 += (size_b0 + 1);
- }
- }
-
- /* before leaving set all unused i/o pins to outputs */
-
- /*
- * --*Unused Pin List*--
- *
- * group/port bit number
- * IP_B 0,1,3,4,5 Taken care of in pcmcia-cs-x.x.xx
- * PA 5,7,8,9,14,15
- * PB 22,23,31
- * PC 4,5,6,7,10,11,12,13,14,15
- * PD 5,6,7
- *
- */
-
- /*
- * --*Pin Used for I/O List*--
- *
- * port input bit number output bit number either
- * PB 18,26,27
- * PD 3,4 8,9,10,11,12,13,14,15
- *
- */
-
- immap->im_ioport.iop_papar &= ~0x05C3; /* set pins as io */
- immap->im_ioport.iop_padir |= 0x05C3; /* set pins as output */
- immap->im_ioport.iop_paodr &= 0x0008; /* config pins 9 & 14 as normal outputs */
- immap->im_ioport.iop_padat |= 0x05C3; /* set unused pins as high */
-
- immap->im_cpm.cp_pbpar &= ~0x00001331; /* set unused port b pins as io */
- immap->im_cpm.cp_pbdir |= 0x00001331; /* set unused port b pins as output */
- immap->im_cpm.cp_pbodr &= ~0x00001331; /* config bits 18,22,23,26,27 & 31 as normal outputs */
- immap->im_cpm.cp_pbdat |= 0x00001331; /* set T/E LED, /NV_CS, & /POWER_ADJ_CS and the rest to a high */
-
- immap->im_ioport.iop_pcpar &= ~0x0F3F; /* set unused port c pins as io */
- immap->im_ioport.iop_pcdir |= 0x0F3F; /* set unused port c pins as output */
- immap->im_ioport.iop_pcso &= ~0x0F3F; /* clear special purpose bit for unused port c pins for clarity */
- immap->im_ioport.iop_pcdat |= 0x0F3F; /* set unused port c pins high */
-
- immap->im_ioport.iop_pdpar &= 0xE000; /* set pins as io */
- immap->im_ioport.iop_pddir &= 0xE000; /* set bit 3 & 4 as inputs */
- immap->im_ioport.iop_pddir |= 0x07FF; /* set bits 5 - 15 as outputs */
- immap->im_ioport.iop_pddat = 0x0055; /* set alternating pattern on test port */
-
- return (size_b0 + size_b1);
-}
diff --git a/board/esteem192e/flash.c b/board/esteem192e/flash.c
deleted file mode 100644
index 5465deaf97..0000000000
--- a/board/esteem192e/flash.c
+++ /dev/null
@@ -1,1095 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#ifdef CONFIG_FLASH_16BIT
-#define FLASH_WORD_SIZE unsigned short
-#define FLASH_ID_MASK 0xFFFF
-#else
-#define FLASH_WORD_SIZE unsigned long
-#define FLASH_ID_MASK 0xFFFFFFFF
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-ulong flash_get_size (volatile FLASH_WORD_SIZE *addr, flash_info_t *info);
-#ifndef CONFIG_FLASH_16BIT
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-#else
-static int write_short (flash_info_t *info, ulong dest, ushort data);
-#endif
-/*int flash_write (uchar *, ulong, ulong); */
-/*flash_info_t *addr2info (ulong); */
-
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((volatile FLASH_WORD_SIZE *)FLASH_BASE0_PRELIM,
- &flash_info[0]);
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- size_b1 = flash_get_size((volatile FLASH_WORD_SIZE *)FLASH_BASE1_PRELIM,
- &flash_info[1]);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
- memctl->memc_br0 = CFG_FLASH_BASE | 0x00000801; /* (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;*/
-
- /* Re-do sizing to get full correct info */
-
- size_b0 = flash_get_size((volatile FLASH_WORD_SIZE *)CFG_FLASH_BASE,
- &flash_info[0]);
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
- memctl->memc_br1 = (CFG_FLASH_BASE | 0x00000801) + (size_b0 & BR_BA_MSK);
- /*((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_MS_GPCM | BR_V;*/
-
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((volatile FLASH_WORD_SIZE *)(CFG_FLASH_BASE + size_b0),
- &flash_info[1]);
-
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
- } else {
- memctl->memc_br1 = 0; /* invalidate bank */
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start adress table */
- if (info->flash_id & FLASH_BTYPE) {
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CONFIG_FLASH_16BIT
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00008000;
- info->start[3] = base + 0x0000C000;
- info->start[4] = base + 0x00010000;
- info->start[5] = base + 0x00014000;
- info->start[6] = base + 0x00018000;
- info->start[7] = base + 0x0001C000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x000E0000;
- }
- }
- else {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- }
-#else
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00002000;
- info->start[2] = base + 0x00004000;
- info->start[3] = base + 0x00006000;
- info->start[4] = base + 0x00008000;
- info->start[5] = base + 0x0000A000;
- info->start[6] = base + 0x0000C000;
- info->start[7] = base + 0x0000E000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00070000;
- }
- }
- else {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- }
-#endif
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CONFIG_FLASH_16BIT
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- info->start[i--] = base + info->size - 0x00014000;
- info->start[i--] = base + info->size - 0x00018000;
- info->start[i--] = base + info->size - 0x0001C000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
-
- } else {
-
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-#else
- info->start[i--] = base + info->size - 0x00002000;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000A000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x0000E000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
-
- } else {
-
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-#endif
- }
-
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar botboot[]=", bottom boot sect)\n";
- uchar topboot[]=", top boot sector)\n";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- if (info->flash_id & 0x0001 ) {
- boottype = botboot;
- } else {
- boottype = topboot;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit%s",boottype);
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit%s",boottype);
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit%s",boottype);
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit%s",boottype);
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit%s",boottype);
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit%s",boottype);
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit%s",boottype);
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit%s",boottype);
- break;
- case FLASH_INTEL800B: printf ("INTEL28F800B (8 Mbit%s",boottype);
- break;
- case FLASH_INTEL800T: printf ("INTEL28F800T (8 Mbit%s",boottype);
- break;
- case FLASH_INTEL160B: printf ("INTEL28F160B (16 Mbit%s",boottype);
- break;
- case FLASH_INTEL160T: printf ("INTEL28F160T (16 Mbit%s",boottype);
- break;
- case FLASH_INTEL320B: printf ("INTEL28F320B (32 Mbit%s",boottype);
- break;
- case FLASH_INTEL320T: printf ("INTEL28F320T (32 Mbit%s",boottype);
- break;
-
-#if 0 /* enable when devices are available */
-
- case FLASH_INTEL640B: printf ("INTEL28F640B (64 Mbit%s",boottype);
- break;
- case FLASH_INTEL640T: printf ("INTEL28F640T (64 Mbit%s",boottype);
- break;
-#endif
-
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-ulong flash_get_size (volatile FLASH_WORD_SIZE *addr, flash_info_t *info)
-{
- short i;
- ulong base = (ulong)addr;
- FLASH_WORD_SIZE value;
-
- /* Write auto select command: read Manufacturer ID */
-
-
-#ifndef CONFIG_FLASH_16BIT
-
- /*
- * Note: if it is an AMD flash and the word at addr[0000]
- * is 0x00890089 this routine will think it is an Intel
- * flash device and may(most likely) cause trouble.
- */
-
- addr[0x0000] = 0x00900090;
- if(addr[0x0000] != 0x00890089){
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-#else
-
- /*
- * Note: if it is an AMD flash and the word at addr[0000]
- * is 0x0089 this routine will think it is an Intel
- * flash device and may(most likely) cause trouble.
- */
-
- addr[0x0000] = 0x0090;
-
- if(addr[0x0000] != 0x0089){
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x0090;
-#endif
- }
- value = addr[0];
-
- switch (value) {
- case (AMD_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (STM_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_STM;
- break;
- case (SST_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_SST;
- break;
- case (INTEL_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
-
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (AMD_ID_LV400T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV400B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV800B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV160T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV160B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case (AMD_ID_LV320T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (AMD_ID_LV320B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
-
- case (INTEL_ID_28F800B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL800T;
- info->sector_count = 23;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (INTEL_ID_28F800B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL800B;
- info->sector_count = 23;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (INTEL_ID_28F160B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL160T;
- info->sector_count = 39;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (INTEL_ID_28F160B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL160B;
- info->sector_count = 39;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (INTEL_ID_28F320B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL320T;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (INTEL_ID_28F320B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
-#if 0 /* enable when devices are available */
- case (INTEL_ID_28F320B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL320T;
- info->sector_count = 135;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- case (INTEL_ID_28F320B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 135;
- info->size = 0x01000000;
- break; /* => 16 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start adress table */
- if (info->flash_id & FLASH_BTYPE) {
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CONFIG_FLASH_16BIT
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00008000;
- info->start[3] = base + 0x0000C000;
- info->start[4] = base + 0x00010000;
- info->start[5] = base + 0x00014000;
- info->start[6] = base + 0x00018000;
- info->start[7] = base + 0x0001C000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x000E0000;
- }
- }
- else {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- }
-#else
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00002000;
- info->start[2] = base + 0x00004000;
- info->start[3] = base + 0x00006000;
- info->start[4] = base + 0x00008000;
- info->start[5] = base + 0x0000A000;
- info->start[6] = base + 0x0000C000;
- info->start[7] = base + 0x0000E000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00070000;
- }
- }
- else {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- }
-#endif
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CONFIG_FLASH_16BIT
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- info->start[i--] = base + info->size - 0x00014000;
- info->start[i--] = base + info->size - 0x00018000;
- info->start[i--] = base + info->size - 0x0001C000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
-
- } else {
-
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-#else
- info->start[i--] = base + info->size - 0x00002000;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000A000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x0000E000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
-
- } else {
-
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-#endif
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile FLASH_WORD_SIZE *)info->start[0];
- if( (info->flash_id & 0xFF00) == FLASH_MAN_INTEL){
- *addr = (0x00F000F0 & FLASH_ID_MASK); /* reset bank */
- } else {
- *addr = (0x00FF00FF & FLASH_ID_MASK); /* reset bank */
- }
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-
- volatile FLASH_WORD_SIZE *addr=(volatile FLASH_WORD_SIZE*)(info->start[0]);
- int flag, prot, sect, l_sect, barf;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- ((info->flash_id > FLASH_AMD_COMP) &&
- ( (info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL ) ) ){
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
- if(info->flash_id < FLASH_AMD_COMP) {
-#ifndef CONFIG_FLASH_16BIT
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-#else
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x0080;
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
-#endif
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (volatile FLASH_WORD_SIZE *)(info->start[sect]);
- addr[0] = (0x00300030 & FLASH_ID_MASK);
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (volatile FLASH_WORD_SIZE*)(info->start[l_sect]);
- while ((addr[0] & (0x00800080&FLASH_ID_MASK)) !=
- (0x00800080&FLASH_ID_MASK) )
- {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (0x00F000F0 & FLASH_ID_MASK); /* reset bank */
- } else {
-
-
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- barf = 0;
-#ifndef CONFIG_FLASH_16BIT
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x00200020;
- addr[0] = 0x00D000D0;
- while(!(addr[0] & 0x00800080)); /* wait for error or finish */
- if( addr[0] & 0x003A003A) { /* check for error */
- barf = addr[0] & 0x003A0000;
- if( barf ) {
- barf >>=16;
- } else {
- barf = addr[0] & 0x0000003A;
- }
- }
-#else
- addr = (vu_short*)(info->start[sect]);
- addr[0] = 0x0020;
- addr[0] = 0x00D0;
- while(!(addr[0] & 0x0080)); /* wait for error or finish */
- if( addr[0] & 0x003A) /* check for error */
- barf = addr[0] & 0x003A;
-#endif
- if(barf) {
- printf("\nFlash error in sector at %lx\n",(unsigned long)addr);
- if(barf & 0x0002) printf("Block locked, not erased.\n");
- if((barf & 0x0030) == 0x0030)
- printf("Command Sequence error.\n");
- if((barf & 0x0030) == 0x0020)
- printf("Block Erase error.\n");
- if(barf & 0x0008) printf("Vpp Low error.\n");
- rcode = 1;
- } else printf(".");
- l_sect = sect;
- }
- addr = (volatile FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (0x00FF00FF & FLASH_ID_MASK); /* reset bank */
-
- }
-
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-#ifndef CONFIG_FLASH_16BIT
- ulong cp, wp, data;
- int l;
-#else
- ulong cp, wp;
- ushort data;
-#endif
- int i, rc;
-
-#ifndef CONFIG_FLASH_16BIT
-
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-
-#else
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start byte
- */
- if (addr - wp) {
- data = 0;
- data = (data << 8) | *src++;
- --cnt;
- if ((rc = write_short(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
-/* l = 0; used for debuging */
- while (cnt >= 2) {
- data = 0;
- for (i=0; i<2; ++i) {
- data = (data << 8) | *src++;
- }
-
-/* if(!l){
- printf("%x",data);
- l = 1;
- } used for debuging */
-
- if ((rc = write_short(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<2 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<2; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_short(info, wp, data));
-
-
-#endif
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-#ifndef CONFIG_FLASH_16BIT
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start,barf;
- int flag;
-
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- if(info->flash_id > FLASH_AMD_COMP) {
- /* AMD stuff */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
- } else {
- /* intel stuff */
- *addr = 0x00400040;
- }
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
-
- if(info->flash_id > FLASH_AMD_COMP) {
-
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
- } else {
-
- while(!(addr[0] & 0x00800080)){ /* wait for error or finish */
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
-
- if( addr[0] & 0x003A003A) { /* check for error */
- barf = addr[0] & 0x003A0000;
- if( barf ) {
- barf >>=16;
- } else {
- barf = addr[0] & 0x0000003A;
- }
- printf("\nFlash write error at address %lx\n",(unsigned long)dest);
- if(barf & 0x0002) printf("Block locked, not erased.\n");
- if(barf & 0x0010) printf("Programming error.\n");
- if(barf & 0x0008) printf("Vpp Low error.\n");
- return(2);
- }
-
-
- }
-
- return (0);
-
-}
-
-#else
-
-static int write_short (flash_info_t *info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short*)(info->start[0]);
- ulong start,barf;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_short *)dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- if(info->flash_id < FLASH_AMD_COMP) {
- /* AMD stuff */
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x00A0;
- } else {
- /* intel stuff */
- *addr = 0x00D0;
- *addr = 0x0040;
- }
- *((vu_short *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
-
- if(info->flash_id < FLASH_AMD_COMP) {
- /* AMD stuff */
- while ((*((vu_short *)dest) & 0x0080) != (data & 0x0080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
- } else {
- /* intel stuff */
- while(!(addr[0] & 0x0080)){ /* wait for error or finish */
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) return (1);
- }
-
- if( addr[0] & 0x003A) { /* check for error */
- barf = addr[0] & 0x003A;
- printf("\nFlash write error at address %lx\n",(unsigned long)dest);
- if(barf & 0x0002) printf("Block locked, not erased.\n");
- if(barf & 0x0010) printf("Programming error.\n");
- if(barf & 0x0008) printf("Vpp Low error.\n");
- return(2);
- }
- *addr = 0x00B0;
- *addr = 0x0070;
- while(!(addr[0] & 0x0080)){ /* wait for error or finish */
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) return (1);
- }
-
- *addr = 0x00FF;
-
- }
-
- return (0);
-
-}
-
-
-#endif
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/esteem192e/u-boot.lds b/board/esteem192e/u-boot.lds
deleted file mode 100644
index 4c541bf5c2..0000000000
--- a/board/esteem192e/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/etin/debris/Makefile b/board/etin/debris/Makefile
deleted file mode 100644
index fdf7736915..0000000000
--- a/board/etin/debris/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o phantom.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/etin/debris/config.mk b/board/etin/debris/config.mk
deleted file mode 100644
index 64debf5ef8..0000000000
--- a/board/etin/debris/config.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# (C) Copyright 2000, 2001
-# Sangmoon, Etin Systems, dogoil@etinsys.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
-#
-
-#
-# Debris boards
-#
-
-#TEXT_BASE = 0x00090000
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/etin/debris/debris.c b/board/etin/debris/debris.c
deleted file mode 100644
index 08ed635f34..0000000000
--- a/board/etin/debris/debris.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sangmoon Kim, Etin Systems. dogoil@etinsys.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
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-#include <i2c.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int checkboard (void)
-{
- /*TODO: Check processor type */
-
- puts ( "Board: Debris "
-#ifdef CONFIG_MPC8240
- "8240"
-#endif
-#ifdef CONFIG_MPC8245
- "8245"
-#endif
- " ##Test not implemented yet##\n");
- return 0;
-}
-
-#if 0 /* NOT USED */
-int checkflash (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("## Test not implemented yet ##\n");
-
- return (0);
-}
-#endif
-
-long int initdram (int board_type)
-{
- int m, row, col, bank, i;
- unsigned long start, end;
- uint32_t mccr1;
- uint32_t mear1 = 0, emear1 = 0, msar1 = 0, emsar1 = 0;
- uint32_t mear2 = 0, emear2 = 0, msar2 = 0, emsar2 = 0;
- uint8_t mber = 0;
-
- i2c_init(CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- if (i2c_reg_read (0x50, 2) != 0x04) return 0; /* Memory type */
- m = i2c_reg_read (0x50, 5); /* # of physical banks */
- row = i2c_reg_read (0x50, 3); /* # of rows */
- col = i2c_reg_read (0x50, 4); /* # of columns */
- bank = i2c_reg_read (0x50, 17); /* # of logical banks */
-
- CONFIG_READ_WORD(MCCR1, mccr1);
- mccr1 &= 0xffff0000;
-
- start = CFG_SDRAM_BASE;
- end = start + (1 << (col + row + 3) ) * bank - 1;
-
- for (i = 0; i < m; i++) {
- mccr1 |= ((row == 13)? 2 : (bank == 4)? 0 : 3) << i * 2;
- if (i < 4) {
- msar1 |= ((start >> 20) & 0xff) << i * 8;
- emsar1 |= ((start >> 28) & 0xff) << i * 8;
- mear1 |= ((end >> 20) & 0xff) << i * 8;
- emear1 |= ((end >> 28) & 0xff) << i * 8;
- } else {
- msar2 |= ((start >> 20) & 0xff) << (i-4) * 8;
- emsar2 |= ((start >> 28) & 0xff) << (i-4) * 8;
- mear2 |= ((end >> 20) & 0xff) << (i-4) * 8;
- emear2 |= ((end >> 28) & 0xff) << (i-4) * 8;
- }
- mber |= 1 << i;
- start += (1 << (col + row + 3) ) * bank;
- end += (1 << (col + row + 3) ) * bank;
- }
- for (; i < 8; i++) {
- if (i < 4) {
- msar1 |= 0xff << i * 8;
- emsar1 |= 0x30 << i * 8;
- mear1 |= 0xff << i * 8;
- emear1 |= 0x30 << i * 8;
- } else {
- msar2 |= 0xff << (i-4) * 8;
- emsar2 |= 0x30 << (i-4) * 8;
- mear2 |= 0xff << (i-4) * 8;
- emear2 |= 0x30 << (i-4) * 8;
- }
- }
-
- CONFIG_WRITE_WORD(MCCR1, mccr1);
- CONFIG_WRITE_WORD(MSAR1, msar1);
- CONFIG_WRITE_WORD(EMSAR1, emsar1);
- CONFIG_WRITE_WORD(MEAR1, mear1);
- CONFIG_WRITE_WORD(EMEAR1, emear1);
- CONFIG_WRITE_WORD(MSAR2, msar2);
- CONFIG_WRITE_WORD(EMSAR2, emsar2);
- CONFIG_WRITE_WORD(MEAR2, mear2);
- CONFIG_WRITE_WORD(EMEAR2, emear2);
- CONFIG_WRITE_BYTE(MBER, mber);
-
- return (1 << (col + row + 3) ) * bank * m;
-}
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_debris_config_table[] = {
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0f, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x10, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
- PCI_ENET1_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_debris_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
- pci_mpc824x_init(&hose);
-}
-
-void *nvram_read(void *dest, const long src, size_t count)
-{
- volatile uchar *d = (volatile uchar*) dest;
- volatile uchar *s = (volatile uchar*) src;
- while(count--) {
- *d++ = *s++;
- asm volatile("sync");
- }
- return dest;
-}
-
-void nvram_write(long dest, const void *src, size_t count)
-{
- volatile uchar *d = (volatile uchar*)dest;
- volatile uchar *s = (volatile uchar*)src;
- while(count--) {
- *d++ = *s++;
- asm volatile("sync");
- }
-}
-
-int misc_init_r(void)
-{
- /* Write ethernet addr in NVRAM for VxWorks */
- nvram_write(CFG_ENV_ADDR + CFG_NVRAM_VXWORKS_OFFS,
- (char*)&gd->bd->bi_enetaddr[0], 6);
- return 0;
-}
diff --git a/board/etin/debris/flash.c b/board/etin/debris/flash.c
deleted file mode 100644
index a4100e57b6..0000000000
--- a/board/etin/debris/flash.c
+++ /dev/null
@@ -1,720 +0,0 @@
-/*
- * board/eva/flash.c
- *
- * (C) Copyright 2002
- * Sangmoon Kim, Etin Systems, dogoil@etinsys.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/pci_io.h>
-#include <mpc824x.h>
-
-int (*do_flash_erase)(flash_info_t*, uint32_t, uint32_t);
-int (*write_dword)(flash_info_t*, ulong, uint64_t);
-
-typedef uint64_t cfi_word;
-
-#define cfi_read(flash, addr) *((volatile cfi_word*)(flash->start[0] + addr))
-
-#define cfi_write(flash, val, addr) \
- move64((cfi_word*)&val, \
- (cfi_word*)(flash->start[0] + addr))
-
-#define CMD(x) ((((cfi_word)x)<<48)|(((cfi_word)x)<<32)|(((cfi_word)x)<<16)|(((cfi_word)x)))
-
-static void write32(unsigned long addr, uint32_t value)
-{
- *(volatile uint32_t*)(addr) = value;
- asm volatile("sync");
-}
-
-static uint32_t read32(unsigned long addr)
-{
- uint32_t value;
- value = *(volatile uint32_t*)addr;
- asm volatile("sync");
- return value;
-}
-
-static cfi_word cfi_cmd(flash_info_t *flash, uint8_t cmd, uint32_t addr)
-{
- uint32_t base = flash->start[0];
- uint32_t val=(cmd << 16) | cmd;
- addr <<= 3;
- write32(base + addr, val);
- return addr;
-}
-
-static uint16_t cfi_read_query(flash_info_t *flash, uint32_t addr)
-{
- uint32_t base = flash->start[0];
- addr <<= 3;
- return (uint16_t)read32(base + addr);
-}
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-static void move64(uint64_t *src, uint64_t *dest)
-{
- asm volatile("lfd 0, 0(3)\n\t" /* fpr0 = *scr */
- "stfd 0, 0(4)" /* *dest = fpr0 */
- : : : "fr0" ); /* Clobbers fr0 */
- return;
-}
-
-static int cfi_write_dword(flash_info_t *flash, ulong dest, cfi_word data)
-{
- unsigned long start;
- cfi_word status = 0;
-
- status = cfi_read(flash, dest);
- data &= status;
-
- cfi_cmd(flash, 0x40, 0);
- cfi_write(flash, data, dest);
-
- udelay(10);
- start = get_timer (0);
- for(;;) {
- status = cfi_read(flash, dest);
- status &= CMD(0x80);
- if(status == CMD(0x80))
- break;
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- cfi_cmd(flash, 0xff, 0);
- return 1;
- }
- udelay(1);
- }
- cfi_cmd(flash, 0xff, 0);
-
- return 0;
-}
-
-static int jedec_write_dword (flash_info_t *flash, ulong dest, cfi_word data)
-{
- ulong start;
- cfi_word status = 0;
-
- status = cfi_read(flash, dest);
- if(status != CMD(0xffff)) return 2;
-
- cfi_cmd(flash, 0xaa, 0x555);
- cfi_cmd(flash, 0x55, 0x2aa);
- cfi_cmd(flash, 0xa0, 0x555);
-
- cfi_write(flash, data, dest);
-
- udelay(10);
- start = get_timer (0);
- status = ~data;
- while(status != data) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT)
- return 1;
- status = cfi_read(flash, dest);
- udelay(1);
- }
- return 0;
-}
-
-static __inline__ unsigned long get_msr(void)
-{
- unsigned long msr;
- __asm__ __volatile__ ("mfmsr %0" : "=r" (msr) :);
- return msr;
-}
-
-static __inline__ void set_msr(unsigned long msr)
-{
- __asm__ __volatile__ ("mtmsr %0" : : "r" (msr));
-}
-
-int write_buff (flash_info_t *flash, uchar *src, ulong addr, ulong cnt)
-{
- ulong wp;
- int i, s, l, rc;
- cfi_word data;
- uint8_t *t = (uint8_t*)&data;
- unsigned long base = flash->start[0];
- uint32_t msr;
-
- if (flash->flash_id == FLASH_UNKNOWN)
- return 4;
-
- if (cnt == 0)
- return 0;
-
- addr -= base;
-
- msr = get_msr();
- set_msr(msr|MSR_FP);
-
- wp = (addr & ~7); /* get lower word aligned address */
-
- if((addr-wp) != 0) {
- data = cfi_read(flash, wp);
- s = addr & 7;
- l = ( cnt < (8-s) ) ? cnt : (8-s);
- for(i = 0; i < l; i++)
- t[s+i] = *src++;
- if ((rc = write_dword(flash, wp, data)) != 0)
- goto DONE;
- wp += 8;
- cnt -= l;
- }
-
- while (cnt >= 8) {
- for (i = 0; i < 8; i++)
- t[i] = *src++;
- if ((rc = write_dword(flash, wp, data)) != 0)
- goto DONE;
- wp += 8;
- cnt -= 8;
- }
-
- if (cnt == 0) {
- rc = 0;
- goto DONE;
- }
-
- data = cfi_read(flash, wp);
- for(i = 0; i < cnt; i++)
- t[i] = *src++;
- rc = write_dword(flash, wp, data);
-DONE:
- set_msr(msr);
- return rc;
-}
-
-static int cfi_erase_oneblock(flash_info_t *flash, uint32_t sect)
-{
- int sa;
- int flag;
- ulong start, last, now;
- cfi_word status;
-
- flag = disable_interrupts();
-
- sa = (flash->start[sect] - flash->start[0]);
- write32(flash->start[sect], 0x00200020);
- write32(flash->start[sect], 0x00d000d0);
-
- if (flag)
- enable_interrupts();
-
- udelay(1000);
- start = get_timer (0);
- last = start;
-
- for (;;) {
- status = cfi_read(flash, sa);
- status &= CMD(0x80);
- if (status == CMD(0x80))
- break;
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- cfi_cmd(flash, 0xff, 0);
- printf ("Timeout\n");
- return ERR_TIMOUT;
- }
-
- if ((now - last) > 1000) {
- serial_putc ('.');
- last = now;
- }
- udelay(10);
- }
- cfi_cmd(flash, 0xff, 0);
- return ERR_OK;
-}
-
-static int cfi_erase(flash_info_t *flash, uint32_t s_first, uint32_t s_last)
-{
- int sect;
- int rc = ERR_OK;
-
- for (sect = s_first; sect <= s_last; sect++) {
- if (flash->protect[sect] == 0) {
- rc = cfi_erase_oneblock(flash, sect);
- if (rc != ERR_OK) break;
- }
- }
- printf (" done\n");
- return rc;
-}
-
-static int jedec_erase(flash_info_t *flash, uint32_t s_first, uint32_t s_last)
-{
- int sect;
- cfi_word status;
- int sa = -1;
- int flag;
- ulong start, last, now;
-
- flag = disable_interrupts();
-
- cfi_cmd(flash, 0xaa, 0x555);
- cfi_cmd(flash, 0x55, 0x2aa);
- cfi_cmd(flash, 0x80, 0x555);
- cfi_cmd(flash, 0xaa, 0x555);
- cfi_cmd(flash, 0x55, 0x2aa);
- for ( sect = s_first; sect <= s_last; sect++) {
- if (flash->protect[sect] == 0) {
- sa = flash->start[sect] - flash->start[0];
- write32(flash->start[sect], 0x00300030);
- }
- }
- if (flag)
- enable_interrupts();
-
- if (sa < 0)
- goto DONE;
-
- udelay (1000);
- start = get_timer (0);
- last = start;
- for(;;) {
- status = cfi_read(flash, sa);
- if (status == CMD(0xffff))
- break;
-
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return ERR_TIMOUT;
- }
-
- if ((now - last) > 1000) {
- serial_putc ('.');
- last = now;
- }
- udelay(10);
- }
-DONE:
- cfi_cmd(flash, 0xf0, 0);
-
- printf (" done\n");
-
- return ERR_OK;
-}
-
-int flash_erase (flash_info_t *flash, int s_first, int s_last)
-{
- int sect;
- int prot;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (flash->flash_id == FLASH_UNKNOWN)
- printf ("- missing\n");
- else
- printf ("- no sectors to erase\n");
- return ERR_NOT_ERASED;
- }
- if (flash->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return ERR_NOT_ERASED;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++)
- if (flash->protect[sect]) prot++;
-
- if (prot)
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- else
- printf ("\n");
-
- return do_flash_erase(flash, s_first, s_last);
-}
-
-struct jedec_flash_info {
- const uint16_t mfr_id;
- const uint16_t dev_id;
- const char *name;
- const int DevSize;
- const int InterfaceDesc;
- const int NumEraseRegions;
- const ulong regions[4];
-};
-
-#define ERASEINFO(size,blocks) (size<<8)|(blocks-1)
-
-#define SIZE_1MiB 20
-#define SIZE_2MiB 21
-#define SIZE_4MiB 22
-
-static const struct jedec_flash_info jedec_table[] = {
- {
- mfr_id: (uint16_t)AMD_MANUFACT,
- dev_id: (uint16_t)AMD_ID_LV800T,
- name: "AMD AM29LV800T",
- DevSize: SIZE_1MiB,
- NumEraseRegions: 4,
- regions: {ERASEINFO(0x10000,15),
- ERASEINFO(0x08000,1),
- ERASEINFO(0x02000,2),
- ERASEINFO(0x04000,1)
- }
- }, {
- mfr_id: (uint16_t)AMD_MANUFACT,
- dev_id: (uint16_t)AMD_ID_LV800B,
- name: "AMD AM29LV800B",
- DevSize: SIZE_1MiB,
- NumEraseRegions: 4,
- regions: {ERASEINFO(0x10000,15),
- ERASEINFO(0x08000,1),
- ERASEINFO(0x02000,2),
- ERASEINFO(0x04000,1)
- }
- }, {
- mfr_id: (uint16_t)AMD_MANUFACT,
- dev_id: (uint16_t)AMD_ID_LV160T,
- name: "AMD AM29LV160T",
- DevSize: SIZE_2MiB,
- NumEraseRegions: 4,
- regions: {ERASEINFO(0x10000,31),
- ERASEINFO(0x08000,1),
- ERASEINFO(0x02000,2),
- ERASEINFO(0x04000,1)
- }
- }, {
- mfr_id: (uint16_t)AMD_MANUFACT,
- dev_id: (uint16_t)AMD_ID_LV160B,
- name: "AMD AM29LV160B",
- DevSize: SIZE_2MiB,
- NumEraseRegions: 4,
- regions: {ERASEINFO(0x04000,1),
- ERASEINFO(0x02000,2),
- ERASEINFO(0x08000,1),
- ERASEINFO(0x10000,31)
- }
- }, {
- mfr_id: (uint16_t)AMD_MANUFACT,
- dev_id: (uint16_t)AMD_ID_LV320T,
- name: "AMD AM29LV320T",
- DevSize: SIZE_4MiB,
- NumEraseRegions: 2,
- regions: {ERASEINFO(0x10000,63),
- ERASEINFO(0x02000,8)
- }
-
- }, {
- mfr_id: (uint16_t)AMD_MANUFACT,
- dev_id: (uint16_t)AMD_ID_LV320B,
- name: "AMD AM29LV320B",
- DevSize: SIZE_4MiB,
- NumEraseRegions: 2,
- regions: {ERASEINFO(0x02000,8),
- ERASEINFO(0x10000,63)
- }
- }
-};
-
-static ulong cfi_init(uint32_t base, flash_info_t *flash)
-{
- int sector;
- int block;
- int block_count;
- int offset = 0;
- int reverse = 0;
- int primary;
- int mfr_id;
- int dev_id;
-
- flash->start[0] = base;
- cfi_cmd(flash, 0xF0, 0);
- cfi_cmd(flash, 0x98, 0);
- if ( !( cfi_read_query(flash, 0x10) == 'Q' &&
- cfi_read_query(flash, 0x11) == 'R' &&
- cfi_read_query(flash, 0x12) == 'Y' )) {
- cfi_cmd(flash, 0xff, 0);
- return 0;
- }
-
- flash->size = 1 << cfi_read_query(flash, 0x27);
- flash->size *= 4;
- block_count = cfi_read_query(flash, 0x2c);
- primary = cfi_read_query(flash, 0x15);
- if ( cfi_read_query(flash, primary + 4) == 0x30)
- reverse = (cfi_read_query(flash, 0x1) & 0x01);
- else
- reverse = (cfi_read_query(flash, primary+15) == 3);
-
- flash->sector_count = 0;
-
- for ( block = reverse ? block_count - 1 : 0;
- reverse ? block >= 0 : block < block_count;
- reverse ? block-- : block ++) {
- int sector_size =
- (cfi_read_query(flash, 0x2d + block*4+2) |
- (cfi_read_query(flash, 0x2d + block*4+3) << 8)) << 8;
- int sector_count =
- (cfi_read_query(flash, 0x2d + block*4+0) |
- (cfi_read_query(flash, 0x2d + block*4+1) << 8)) + 1;
- for(sector = 0; sector < sector_count; sector++) {
- flash->start[flash->sector_count++] = base + offset;
- offset += sector_size * 4;
- }
- }
- mfr_id = cfi_read_query(flash, 0x00);
- dev_id = cfi_read_query(flash, 0x01);
-
- cfi_cmd(flash, 0xff, 0);
-
- flash->flash_id = (mfr_id << 16) | dev_id;
-
- for (sector = 0; sector < flash->sector_count; sector++) {
- write32(flash->start[sector], 0x00600060);
- write32(flash->start[sector], 0x00d000d0);
- }
- cfi_cmd(flash, 0xff, 0);
-
- for (sector = 0; sector < flash->sector_count; sector++)
- flash->protect[sector] = 0;
-
- do_flash_erase = cfi_erase;
- write_dword = cfi_write_dword;
-
- return flash->size;
-}
-
-static ulong jedec_init(unsigned long base, flash_info_t *flash)
-{
- int i;
- int block, block_count;
- int sector, offset;
- int mfr_id, dev_id;
- flash->start[0] = base;
- cfi_cmd(flash, 0xF0, 0x000);
- cfi_cmd(flash, 0xAA, 0x555);
- cfi_cmd(flash, 0x55, 0x2AA);
- cfi_cmd(flash, 0x90, 0x555);
- mfr_id = cfi_read_query(flash, 0x000);
- dev_id = cfi_read_query(flash, 0x0001);
- cfi_cmd(flash, 0xf0, 0x000);
-
- for(i=0; i<sizeof(jedec_table)/sizeof(struct jedec_flash_info); i++) {
- if((jedec_table[i].mfr_id == mfr_id) &&
- (jedec_table[i].dev_id == dev_id)) {
-
- flash->flash_id = (mfr_id << 16) | dev_id;
- flash->size = 1 << jedec_table[0].DevSize;
- flash->size *= 4;
- block_count = jedec_table[i].NumEraseRegions;
- offset = 0;
- flash->sector_count = 0;
- for (block = 0; block < block_count; block++) {
- int sector_size = jedec_table[i].regions[block];
- int sector_count = (sector_size & 0xff) + 1;
- sector_size >>= 8;
- for (sector=0; sector<sector_count; sector++) {
- flash->start[flash->sector_count++] =
- base + offset;
- offset += sector_size * 4;
- }
- }
- break;
- }
- }
-
- for (sector = 0; sector < flash->sector_count; sector++)
- flash->protect[sector] = 0;
-
- do_flash_erase = jedec_erase;
- write_dword = jedec_write_dword;
-
- return flash->size;
-}
-
-inline void mtibat1u(unsigned int x)
-{
- __asm__ __volatile__ ("mtspr 530, %0" :: "r" (x));
-}
-
-inline void mtibat1l(unsigned int x)
-{
- __asm__ __volatile__ ("mtspr 531, %0" :: "r" (x));
-}
-
-inline void mtdbat1u(unsigned int x)
-{
- __asm__ __volatile__ ("mtspr 538, %0" :: "r" (x));
-}
-
-inline void mtdbat1l(unsigned int x)
-{
- __asm__ __volatile__ ("mtspr 539, %0" :: "r" (x));
-}
-
-unsigned long flash_init (void)
-{
- unsigned long size = 0;
- int i;
- unsigned int msr;
-
- /* BAT1 */
- CONFIG_WRITE_WORD(ERCR3, 0x0C00000C);
- CONFIG_WRITE_WORD(ERCR4, 0x0800000C);
- msr = get_msr();
- set_msr(msr & ~(MSR_IR | MSR_DR));
- mtibat1l(0x70000000 | BATL_PP_10 | BATL_CACHEINHIBIT);
- mtibat1u(0x70000000 | BATU_BL_256M | BATU_VS | BATU_VP);
- mtdbat1l(0x70000000 | BATL_PP_10 | BATL_CACHEINHIBIT);
- mtdbat1u(0x70000000 | BATU_BL_256M | BATU_VS | BATU_VP);
- set_msr(msr);
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++)
- flash_info[i].flash_id = FLASH_UNKNOWN;
- size = cfi_init(FLASH_BASE0_PRELIM, &flash_info[0]);
- if (!size)
- size = jedec_init(FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN)
- printf ("# Unknown FLASH on Bank 1 - Size = 0x%08lx = %ld MB\n",
- size, size<<20);
-
- return size;
-}
-
-void flash_print_info (flash_info_t *flash)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *p;
-
- if (flash->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- flash_init();
- }
-
- if (flash->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (((flash->flash_id) >> 16) & 0xff) {
- case 0x01:
- printf ("AMD ");
- break;
- case 0x04:
- printf("FUJITSU ");
- break;
- case 0x20:
- printf("STM ");
- break;
- case 0xBF:
- printf("SST ");
- break;
- case 0x89:
- case 0xB0:
- printf("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch ((flash->flash_id) & 0xffff) {
- case (uint16_t)AMD_ID_LV800T:
- printf ("AM29LV800T\n");
- break;
- case (uint16_t)AMD_ID_LV800B:
- printf ("AM29LV800B\n");
- break;
- case (uint16_t)AMD_ID_LV160T:
- printf ("AM29LV160T\n");
- break;
- case (uint16_t)AMD_ID_LV160B:
- printf ("AM29LV160B\n");
- break;
- case (uint16_t)AMD_ID_LV320T:
- printf ("AM29LV320T\n");
- break;
- case (uint16_t)AMD_ID_LV320B:
- printf ("AM29LV320B\n");
- break;
- case (uint16_t)INTEL_ID_28F800C3T:
- printf ("28F800C3T\n");
- break;
- case (uint16_t)INTEL_ID_28F800C3B:
- printf ("28F800C3B\n");
- break;
- case (uint16_t)INTEL_ID_28F160C3T:
- printf ("28F160C3T\n");
- break;
- case (uint16_t)INTEL_ID_28F160C3B:
- printf ("28F160C3B\n");
- break;
- case (uint16_t)INTEL_ID_28F320C3T:
- printf ("28F320C3T\n");
- break;
- case (uint16_t)INTEL_ID_28F320C3B:
- printf ("28F320C3B\n");
- break;
- case (uint16_t)INTEL_ID_28F640C3T:
- printf ("28F640C3T\n");
- break;
- case (uint16_t)INTEL_ID_28F640C3B:
- printf ("28F640C3B\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- if (flash->size >= (1 << 20)) {
- printf (" Size: %ld MB in %d Sectors\n",
- flash->size >> 20, flash->sector_count);
- } else {
- printf (" Size: %ld kB in %d Sectors\n",
- flash->size >> 10, flash->sector_count);
- }
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < flash->sector_count; ++i) {
- /* Check if whole sector is erased*/
- if (i != (flash->sector_count-1))
- size = flash->start[i+1] - flash->start[i];
- else
- size = flash->start[0] + flash->size - flash->start[i];
-
- erased = 1;
- p = (volatile unsigned long *)flash->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++) {
- if (*p++ != 0xffffffff) {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
-
- printf (" %08lX%s%s",
- flash->start[i],
- erased ? " E" : " ",
- flash->protect[i] ? "RO " : " ");
- }
- printf ("\n");
-}
diff --git a/board/etin/debris/phantom.c b/board/etin/debris/phantom.c
deleted file mode 100644
index 0b81fc0c3a..0000000000
--- a/board/etin/debris/phantom.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * board/eva/phantom.c
- *
- * Phantom RTC device driver for EVA
- *
- * Author: Sangmoon Kim
- * dogoil@etinsys.com
- *
- * Copyright 2002 Etinsys Inc.
- *
- * 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.
- */
-
-#include <common.h>
-#include <command.h>
-#include <rtc.h>
-
-#if (CONFIG_COMMANDS & CFG_CMD_DATE)
-
-#define RTC_BASE (CFG_NVRAM_BASE_ADDR + 0x7fff8)
-
-#define RTC_YEAR ( RTC_BASE + 7 )
-#define RTC_MONTH ( RTC_BASE + 6 )
-#define RTC_DAY_OF_MONTH ( RTC_BASE + 5 )
-#define RTC_DAY_OF_WEEK ( RTC_BASE + 4 )
-#define RTC_HOURS ( RTC_BASE + 3 )
-#define RTC_MINUTES ( RTC_BASE + 2 )
-#define RTC_SECONDS ( RTC_BASE + 1 )
-#define RTC_CENTURY ( RTC_BASE + 0 )
-
-#define RTC_CONTROLA RTC_CENTURY
-#define RTC_CONTROLB RTC_SECONDS
-#define RTC_CONTROLC RTC_DAY_OF_WEEK
-
-#define RTC_CA_WRITE 0x80
-#define RTC_CA_READ 0x40
-
-#define RTC_CB_OSC_DISABLE 0x80
-
-#define RTC_CC_BATTERY_FLAG 0x80
-#define RTC_CC_FREQ_TEST 0x40
-
-
-static int phantom_flag = -1;
-static int century_flag = -1;
-
-static uchar rtc_read(unsigned int addr)
-{
- return *(volatile unsigned char *)(addr);
-}
-
-static void rtc_write(unsigned int addr, uchar val)
-{
- *(volatile unsigned char *)(addr) = val;
-}
-
-static unsigned char phantom_rtc_sequence[] = {
- 0xc5, 0x3a, 0xa3, 0x5c, 0xc5, 0x3a, 0xa3, 0x5c
-};
-
-static unsigned char* phantom_rtc_read(int addr, unsigned char rtc[8])
-{
- int i, j;
- unsigned char v;
- unsigned char save = rtc_read(addr);
-
- for (j = 0; j < 8; j++) {
- v = phantom_rtc_sequence[j];
- for (i = 0; i < 8; i++) {
- rtc_write(addr, v & 1);
- v >>= 1;
- }
- }
- for (j = 0; j < 8; j++) {
- v = 0;
- for (i = 0; i < 8; i++) {
- if(rtc_read(addr) & 1)
- v |= 1 << i;
- }
- rtc[j] = v;
- }
- rtc_write(addr, save);
- return rtc;
-}
-
-static void phantom_rtc_write(int addr, unsigned char rtc[8])
-{
- int i, j;
- unsigned char v;
- unsigned char save = rtc_read(addr);
- for (j = 0; j < 8; j++) {
- v = phantom_rtc_sequence[j];
- for (i = 0; i < 8; i++) {
- rtc_write(addr, v & 1);
- v >>= 1;
- }
- }
- for (j = 0; j < 8; j++) {
- v = rtc[j];
- for (i = 0; i < 8; i++) {
- rtc_write(addr, v & 1);
- v >>= 1;
- }
- }
- rtc_write(addr, save);
-}
-
-static int get_phantom_flag(void)
-{
- int i;
- unsigned char rtc[8];
-
- phantom_rtc_read(RTC_BASE, rtc);
-
- for(i = 1; i < 8; i++) {
- if (rtc[i] != rtc[0])
- return 1;
- }
- return 0;
-}
-
-void rtc_reset(void)
-{
- if (phantom_flag < 0)
- phantom_flag = get_phantom_flag();
-
- if (phantom_flag) {
- unsigned char rtc[8];
- phantom_rtc_read(RTC_BASE, rtc);
- if(rtc[4] & 0x30) {
- printf( "real-time-clock was stopped. Now starting...\n" );
- rtc[4] &= 0x07;
- phantom_rtc_write(RTC_BASE, rtc);
- }
- } else {
- uchar reg_a, reg_b, reg_c;
- reg_a = rtc_read( RTC_CONTROLA );
- reg_b = rtc_read( RTC_CONTROLB );
-
- if ( reg_b & RTC_CB_OSC_DISABLE )
- {
- printf( "real-time-clock was stopped. Now starting...\n" );
- reg_a |= RTC_CA_WRITE;
- reg_b &= ~RTC_CB_OSC_DISABLE;
- rtc_write( RTC_CONTROLA, reg_a );
- rtc_write( RTC_CONTROLB, reg_b );
- }
-
- /* make sure read/write clock register bits are cleared */
- reg_a &= ~( RTC_CA_WRITE | RTC_CA_READ );
- rtc_write( RTC_CONTROLA, reg_a );
-
- reg_c = rtc_read( RTC_CONTROLC );
- if (( reg_c & RTC_CC_BATTERY_FLAG ) == 0 )
- printf( "RTC battery low. Clock setting may not be reliable.\n");
- }
-}
-
-inline unsigned bcd2bin (uchar n)
-{
- return ((((n >> 4) & 0x0F) * 10) + (n & 0x0F));
-}
-
-inline unsigned char bin2bcd (unsigned int n)
-{
- return (((n / 10) << 4) | (n % 10));
-}
-
-static int get_century_flag(void)
-{
- int flag = 0;
- int bcd, century;
- bcd = rtc_read( RTC_CENTURY );
- century = bcd2bin( bcd & 0x3F );
- rtc_write( RTC_CENTURY, bin2bcd(century+1));
- if (bcd == rtc_read( RTC_CENTURY ))
- flag = 1;
- rtc_write( RTC_CENTURY, bcd);
- return flag;
-}
-
-void rtc_get( struct rtc_time *tmp)
-{
- if (phantom_flag < 0)
- phantom_flag = get_phantom_flag();
-
- if (phantom_flag)
- {
- unsigned char rtc[8];
-
- phantom_rtc_read(RTC_BASE, rtc);
-
- tmp->tm_sec = bcd2bin(rtc[1] & 0x7f);
- tmp->tm_min = bcd2bin(rtc[2] & 0x7f);
- tmp->tm_hour = bcd2bin(rtc[3] & 0x1f);
- tmp->tm_wday = bcd2bin(rtc[4] & 0x7);
- tmp->tm_mday = bcd2bin(rtc[5] & 0x3f);
- tmp->tm_mon = bcd2bin(rtc[6] & 0x1f);
- tmp->tm_year = bcd2bin(rtc[7]) + 1900;
- tmp->tm_yday = 0;
- tmp->tm_isdst = 0;
-
- if( (rtc[3] & 0x80) && (rtc[3] & 0x40) ) tmp->tm_hour += 12;
- if (tmp->tm_year < 1970) tmp->tm_year += 100;
- } else {
- uchar sec, min, hour;
- uchar mday, wday, mon, year;
-
- int century;
-
- uchar reg_a;
-
- if (century_flag < 0)
- century_flag = get_century_flag();
-
- reg_a = rtc_read( RTC_CONTROLA );
- /* lock clock registers for read */
- rtc_write( RTC_CONTROLA, ( reg_a | RTC_CA_READ ));
-
- sec = rtc_read( RTC_SECONDS );
- min = rtc_read( RTC_MINUTES );
- hour = rtc_read( RTC_HOURS );
- mday = rtc_read( RTC_DAY_OF_MONTH );
- wday = rtc_read( RTC_DAY_OF_WEEK );
- mon = rtc_read( RTC_MONTH );
- year = rtc_read( RTC_YEAR );
- century = rtc_read( RTC_CENTURY );
-
- /* unlock clock registers after read */
- rtc_write( RTC_CONTROLA, ( reg_a & ~RTC_CA_READ ));
-
- tmp->tm_sec = bcd2bin( sec & 0x7F );
- tmp->tm_min = bcd2bin( min & 0x7F );
- tmp->tm_hour = bcd2bin( hour & 0x3F );
- tmp->tm_mday = bcd2bin( mday & 0x3F );
- tmp->tm_mon = bcd2bin( mon & 0x1F );
- tmp->tm_wday = bcd2bin( wday & 0x07 );
-
- if (century_flag) {
- tmp->tm_year = bcd2bin( year ) +
- ( bcd2bin( century & 0x3F ) * 100 );
- } else {
- tmp->tm_year = bcd2bin( year ) + 1900;
- if (tmp->tm_year < 1970) tmp->tm_year += 100;
- }
-
- tmp->tm_yday = 0;
- tmp->tm_isdst= 0;
- }
-}
-
-void rtc_set( struct rtc_time *tmp )
-{
- if (phantom_flag < 0)
- phantom_flag = get_phantom_flag();
-
- if (phantom_flag) {
- uint year;
- unsigned char rtc[8];
-
- year = tmp->tm_year;
- year -= (year < 2000) ? 1900 : 2000;
-
- rtc[0] = bin2bcd(0);
- rtc[1] = bin2bcd(tmp->tm_sec);
- rtc[2] = bin2bcd(tmp->tm_min);
- rtc[3] = bin2bcd(tmp->tm_hour);
- rtc[4] = bin2bcd(tmp->tm_wday);
- rtc[5] = bin2bcd(tmp->tm_mday);
- rtc[6] = bin2bcd(tmp->tm_mon);
- rtc[7] = bin2bcd(year);
-
- phantom_rtc_write(RTC_BASE, rtc);
- } else {
- uchar reg_a;
- if (century_flag < 0)
- century_flag = get_century_flag();
-
- /* lock clock registers for write */
- reg_a = rtc_read( RTC_CONTROLA );
- rtc_write( RTC_CONTROLA, ( reg_a | RTC_CA_WRITE ));
-
- rtc_write( RTC_MONTH, bin2bcd( tmp->tm_mon ));
-
- rtc_write( RTC_DAY_OF_WEEK, bin2bcd( tmp->tm_wday ));
- rtc_write( RTC_DAY_OF_MONTH, bin2bcd( tmp->tm_mday ));
- rtc_write( RTC_HOURS, bin2bcd( tmp->tm_hour ));
- rtc_write( RTC_MINUTES, bin2bcd( tmp->tm_min ));
- rtc_write( RTC_SECONDS, bin2bcd( tmp->tm_sec ));
-
- /* break year up into century and year in century */
- if (century_flag) {
- rtc_write( RTC_YEAR, bin2bcd( tmp->tm_year % 100 ));
- rtc_write( RTC_CENTURY, bin2bcd( tmp->tm_year / 100 ));
- reg_a &= 0xc0;
- reg_a |= bin2bcd( tmp->tm_year / 100 );
- } else {
- rtc_write(RTC_YEAR, bin2bcd(tmp->tm_year -
- ((tmp->tm_year < 2000) ? 1900 : 2000)));
- }
-
- /* unlock clock registers after read */
- rtc_write( RTC_CONTROLA, ( reg_a & ~RTC_CA_WRITE ));
- }
-}
-
-#endif
diff --git a/board/etin/debris/speed.h b/board/etin/debris/speed.h
deleted file mode 100644
index b66393bec5..0000000000
--- a/board/etin/debris/speed.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * (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
- */
-
-/*-----------------------------------------------------------------------
- * Timer value for timer 2, ICLK = 10
- *
- * SPEED_FCOUNT2 = GCLK / (16 * (TIMER_TMR_PS + 1))
- * SPEED_TMR3_PS = (GCLK / (16 * SPEED_FCOUNT3)) - 1
- *
- * SPEED_FCOUNT2 timer 2 counting frequency
- * GCLK CPU clock
- * SPEED_TMR2_PS prescaler
- */
-#define SPEED_TMR2_PS (250 - 1) /* divide by 250 */
-
-/*-----------------------------------------------------------------------
- * Timer value for PIT
- *
- * PIT_TIME = SPEED_PITC / PITRTCLK
- * PITRTCLK = 8192
- */
-#define SPEED_PITC (82 << 16) /* start counting from 82 */
-
-/*
- * The new value for PTA is calculated from
- *
- * PTA = (gclk * Trefresh) / (2 ^ (2 * DFBRG) * PTP * NCS)
- *
- * gclk CPU clock (not bus clock !)
- * Trefresh Refresh cycle * 4 (four word bursts used)
- * DFBRG For normal mode (no clock reduction) always 0
- * PTP Prescaler (already adjusted for no. of banks and 4K / 8K refresh)
- * NCS Number of SDRAM banks (chip selects) on this UPM.
- */
diff --git a/board/etin/debris/u-boot.lds b/board/etin/debris/u-boot.lds
deleted file mode 100644
index c742bcd247..0000000000
--- a/board/etin/debris/u-boot.lds
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/etx094/Makefile b/board/etx094/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/etx094/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/etx094/config.mk b/board/etx094/config.mk
deleted file mode 100644
index 655c2db456..0000000000
--- a/board/etx094/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# ETX_094 Boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/etx094/etx094.c b/board/etx094/etx094.c
deleted file mode 100644
index eb58b5d529..0000000000
--- a/board/etx094/etx094.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-static void read_hw_vers (void);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] = {
-
- /* single read (offset 0x00 in upm ram) */
-
- 0xEECEFC24, 0x100DFC24, 0xE02FBC04, 0x01AA7C04,
- 0x1FB5FC00, 0xFFFFFC05, _NOT_USED_, _NOT_USED_,
-
- /* burst read (offset 0x08 in upm ram) */
-
- 0xEECEFC24, 0x100DFC24, 0xE0FFBC04, 0x10FF7C04,
- 0xF0FFFC00, 0xF0FFFC00, 0xF0FFFC00, 0xFFFFFC00,
- 0xFFFFFC05, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* single write (offset 0x18 in upm ram) */
-
- 0xEECEFC24, 0x100DFC24, 0xE02BBC04, 0x01A27C00,
- 0xEFAAFC04, 0x1FB5FC05, _NOT_USED_, _NOT_USED_,
-
- /* burst write (offset 0x20 in upm ram) */
-
- 0xEECEFC24, 0x103DFC24, 0xE0FBBC00, 0x10F77C00,
- 0xF0FFFC00, 0xF0FFFC00, 0xF0FFFC04, 0xFFFFFC05,
-
- /* init part1 (offset 0x28 in upm ram) */
-
- 0xEFFAFC3C, 0x1FF4FC34, 0xEFFCBC34, 0x1FFC3C34,
- 0xFFFC3C35, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* refresh (offset 0x30 in upm ram) */
-
- 0xEFFEBC0C, 0x1FFD7C04, 0xFFFFFC04, 0xFFFFFC05,
-
- /* init part2 (offset 0x34 in upm ram) */
-
- 0xFFFEBC04, 0xEFFC3CB4, 0x1FFC3C34, 0xFFFC3C34,
- 0xFFFC3C34, 0xEFE83CB4, 0x1FB57C35, _NOT_USED_,
-
- /* exception (offset 0x3C in upm ram) */
-
- 0xFFFFFC05, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Test ETX ID string (ETX_xxx...)
- *
- * Return 1 always.
- */
-
-int checkboard (void)
-{
- char *s = getenv ("serial#");
- char *e;
-
- puts ("Board: ");
-
-#ifdef SB_ETX094
- gd->board_type = 0; /* 0 = 2SDRAM-Device */
-#else
- gd->board_type = 1; /* 1 = 1SDRAM-Device */
-#endif
-
- if (!s || strncmp (s, "ETX_", 4)) {
- puts ("### No HW ID - assuming ETX_094\n");
- read_hw_vers ();
- return (0);
- }
-
- for (e = s; *e; ++e) {
- if (*e == ' ')
- break;
- }
-
- for (; s < e; ++s) {
- putc (*s);
- }
- putc ('\n');
-
- read_hw_vers ();
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size_b0, size_b1, size8, size9;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_1BK_4K; /* MPTPR_PTP_DIV32 0x0200 */
-
- /* A3(SDRAM)=0 => Bursttype = Sequential
- * A2-A0(SDRAM)=010 => Burst length = 4
- * A4-A6(SDRAM)=010 => CasLat=2
- */
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller banks 2 and 3 to the SDRAM banks 2 and 3 at
- * preliminary addresses - these have to be modified after the
- * SDRAM size has been determined.
- */
- memctl->memc_or2 = CFG_OR2_PRELIM;
- memctl->memc_br2 = CFG_BR2_PRELIM;
-
- if (board_type == 0) { /* "L" type boards have only one bank SDRAM */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
- }
-
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80004128; /* SDRAM bank 0 (CS2) - Init Part 1 */
- memctl->memc_mcr = 0x80004734; /* SDRAM bank 0 (CS2) - Init Part 2 */
- udelay (1);
-
- if (board_type == 0) { /* "L" type boards have only one bank SDRAM */
- memctl->memc_mcr = 0x80006128; /* SDRAM bank 1 (CS3) - Init Part 1 */
- memctl->memc_mcr = 0x80006734; /* SDRAM bank 1 (CS3) - Init Part 2 */
- udelay (1);
- }
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL, (long *) SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size_b0 = size9;
-/* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */
- } else { /* back to 8 columns */
- size_b0 = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
-/* debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20); */
- }
-
- if (board_type == 0) { /* "L" type boards have only one bank SDRAM */
- /*
- * Check Bank 1 Memory Size
- * use current column settings
- * [9 column SDRAM may also be used in 8 column mode,
- * but then only half the real size will be used.]
- */
- size_b1 =
- dram_size (memctl->memc_mamr, (long *) SDRAM_BASE3_PRELIM,
- SDRAM_MAX_SIZE);
-/* debug ("SDRAM Bank 1: %ld MB\n", size8 >> 20); */
- } else {
- size_b1 = 0;
- }
-
- udelay (1000);
-
- /*
- * Adjust refresh rate depending on SDRAM type, both banks
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if ((size_b0 < 0x02000000) && (size_b1 < 0x02000000)) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K; /*DIV16 */
- udelay (1000);
- }
-
- /*
- * Final mapping: map bigger bank first
- */
- if (size_b1 > size_b0) { /* SDRAM Bank 1 is bigger - map first */
-
- memctl->memc_or3 = ((-size_b1) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br3 =
- (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- if (size_b0 > 0) {
- /*
- * Position Bank 0 immediately above Bank 1
- */
- memctl->memc_or2 =
- ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 =
- ((CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V)
- + size_b1;
- } else {
- unsigned long reg;
-
- /*
- * No bank 0
- *
- * invalidate bank
- */
- memctl->memc_br2 = 0;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
- }
-
- } else { /* SDRAM Bank 0 is bigger - map first */
-
- memctl->memc_or2 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 =
- (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- if (size_b1 > 0) {
- /*
- * Position Bank 1 immediately above Bank 0
- */
- memctl->memc_or3 =
- ((-size_b1) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br3 =
- ((CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V)
- + size_b0;
- } else {
- unsigned long reg;
-
- /*
- * No bank 1
- *
- * invalidate bank
- */
- memctl->memc_br3 = 0;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
- }
- }
-
- udelay (10000);
-
- return (size_b0 + size_b1);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* HW-ID Table (Bits: 2^9;2^7;2^5) */
-#define HW_ID_0 0x0000
-#define HW_ID_1 0x0020
-#define HW_ID_2 0x0080
-#define HW_ID_3 0x00a0
-#define HW_ID_4 0x0200
-#define HW_ID_5 0x0220
-#define HW_ID_6 0x0280
-#define HW_ID_7 0x02a0
-
-void read_hw_vers ()
-{
- unsigned short rd_msk = 0x02A0;
-
- /* HW-ID pin-definition */
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
-
- immr->im_ioport.iop_pddir &= ~(rd_msk);
- immr->im_ioport.iop_pdpar &= ~(rd_msk);
-
- /* debug printf("State of PD: %x\n",immr->im_ioport.iop_pddat); */
-
- /* Check the HW-ID */
- printf ("HW-Version: ");
- switch (immr->im_ioport.iop_pddat & rd_msk) {
- case HW_ID_0:
- printf ("V0.1 - V0.3 / W97238-Q3162-A1-1-2\n");
- break;
- case HW_ID_1:
- printf ("V0.9 / W50037-Q1-D6-1\n");
- break;
- case HW_ID_2:
- printf ("NOT USED - assuming ID#2\n");
- break;
- case HW_ID_3:
- printf ("NOT USED - assuming ID#3\n");
- break;
- case HW_ID_4:
- printf ("NOT USED - assuming ID#4\n");
- break;
- case HW_ID_5:
- printf ("NOT USED - assuming ID#5\n");
- break;
- case HW_ID_6:
- printf ("NOT USED - assuming ID#6\n");
- break;
- case HW_ID_7:
- printf ("NOT USED - assuming ID#7\n");
- break;
- default:
- printf ("###Error###\n");
- break;
- }
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/etx094/flash.c b/board/etx094/flash.c
deleted file mode 100644
index 98a7c0c8d7..0000000000
--- a/board/etx094/flash.c
+++ /dev/null
@@ -1,744 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
-#ifdef CONFIG_FLASH_16BIT
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V | BR_PS_16; /* 16 Bit data port */
-#else
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-#endif
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
-#ifdef CONFIG_FLASH_16BIT
- memctl->memc_br1 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_MS_GPCM | BR_V | BR_PS_16;
-#else
- memctl->memc_br1 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_MS_GPCM | BR_V;
-#endif
-
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(CFG_FLASH_BASE + size_b0),
- &flash_info[1]);
-
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
- } else {
- memctl->memc_br1 = 0; /* invalidate bank */
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00002000);
- }
- return;
- }
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
-#ifdef CONFIG_FLASH_16BIT
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
-#else
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
-#endif
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_SST200A: printf ("39xF200A (2M = 128K x 16)\n");
- break;
- case FLASH_SST400A: printf ("39xF400A (4M = 256K x 16)\n");
- break;
- case FLASH_SST800A: printf ("39xF800A (8M = 512K x 16)\n");
- break;
- case FLASH_STM800AB: printf ("M29W800AB (8M = 512K x 16)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
-#ifdef CONFIG_FLASH_16BIT
- vu_short *s_addr = (vu_short*)addr;
- s_addr[0x5555] = 0x00AA;
- s_addr[0x2AAA] = 0x0055;
- s_addr[0x5555] = 0x0090;
- value = s_addr[0];
- value = value|(value<<16);
-#else
- addr[0x5555] = 0x00AA00AA;
- addr[0x2AAA] = 0x00550055;
- addr[0x5555] = 0x00900090;
- value = addr[0];
-#endif
-
- switch (value) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-#ifdef CONFIG_FLASH_16BIT
- value = s_addr[1];
- value = value|(value<<16);
-#else
- value = addr[1]; /* device ID */
-#endif
-
- switch (value) {
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
-#ifdef CONFIG_FLASH_16BIT
- info->sector_count = 19;
- info->size = 0x00100000; /* => 1 MB */
-#else
- info->sector_count = 19;
- info->size = 0x00200000; /* => 2 MB */
-#endif
- break;
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
-#ifdef CONFIG_FLASH_16BIT
- info->sector_count = 35;
- info->size = 0x00200000; /* => 2 MB */
-#else
- info->sector_count = 35;
- info->size = 0x00400000; /* => 4 MB */
-#endif
-
- break;
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- case SST_ID_xF200A:
- info->flash_id += FLASH_SST200A;
- info->sector_count = 64; /* 39xF200A ID ( 2M = 128K x 16 ) */
- info->size = 0x00080000;
- break;
- case SST_ID_xF400A:
- info->flash_id += FLASH_SST400A;
- info->sector_count = 128; /* 39xF400A ID ( 4M = 256K x 16 ) */
- info->size = 0x00100000;
- break;
- case SST_ID_xF800A:
- info->flash_id += FLASH_SST800A;
- info->sector_count = 256; /* 39xF800A ID ( 8M = 512K x 16 ) */
- info->size = 0x00200000;
- break; /* => 2 MB */
- case STM_ID_x800AB:
- info->flash_id += FLASH_STM800AB;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00002000);
- }
- } else { /* AMD and Fujitsu types */
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
-#ifdef CONFIG_FLASH_16BIT
-
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
-#else
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
-#endif
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address:
- * (A7 .. A0) = 0x02
- * D0 = 1 if protected
- */
-#ifdef CONFIG_FLASH_16BIT
- s_addr = (volatile unsigned short *)(info->start[i]);
- info->protect[i] = s_addr[2] & 1;
-#else
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
-#endif
- }
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
-#ifdef CONFIG_FLASH_16BIT
- s_addr = (volatile unsigned short *)(info->start[0]);
- *s_addr = 0x00F0; /* reset bank */
-#else
- addr = (volatile unsigned long *)info->start[0];
- *addr = 0x00F000F0; /* reset bank */
-#endif
-
- }
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect;
- ulong start, now, last;
-#ifdef CONFIG_FLASH_16BIT
- vu_short *s_addr = (vu_short*)addr;
-#endif
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-/*#ifndef CONFIG_FLASH_16BIT
- ulong type;
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_SST) && (type != FLASH_MAN_STM)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return;
- }
-#endif*/
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
-#ifdef CONFIG_FLASH_16BIT
- vu_short *s_sect_addr = (vu_short*)(info->start[sect]);
-#else
- vu_long *sect_addr = (vu_long*)(info->start[sect]);
-#endif
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
-#ifdef CONFIG_FLASH_16BIT
-
- /*printf("\ns_sect_addr=%x",s_sect_addr);*/
- s_addr[0x5555] = 0x00AA;
- s_addr[0x2AAA] = 0x0055;
- s_addr[0x5555] = 0x0080;
- s_addr[0x5555] = 0x00AA;
- s_addr[0x2AAA] = 0x0055;
- s_sect_addr[0] = 0x0030;
-#else
- addr[0x5555] = 0x00AA00AA;
- addr[0x2AAA] = 0x00550055;
- addr[0x5555] = 0x00800080;
- addr[0x5555] = 0x00AA00AA;
- addr[0x2AAA] = 0x00550055;
- sect_addr[0] = 0x00300030;
-#endif
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
-#ifdef CONFIG_FLASH_16BIT
- while ((s_sect_addr[0] & 0x0080) != 0x0080) {
-#else
- while ((sect_addr[0] & 0x00800080) != 0x00800080) {
-#endif
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- }
- }
-
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
-#ifdef CONFIG_FLASH_16BIT
- s_addr[0] = 0x00F0; /* reset bank */
-#else
- addr[0] = 0x00F000F0; /* reset bank */
-#endif
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
-
-#ifdef CONFIG_FLASH_16BIT
- vu_short high_data;
- vu_short low_data;
- vu_short *s_addr = (vu_short*)addr;
-#endif
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
-#ifdef CONFIG_FLASH_16BIT
- /* Write the 16 higher-bits */
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- high_data = ((data>>16) & 0x0000ffff);
-
- s_addr[0x5555] = 0x00AA;
- s_addr[0x2AAA] = 0x0055;
- s_addr[0x5555] = 0x00A0;
-
- *((vu_short *)dest) = high_data;
-
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_short *)dest) & 0x0080) != (high_data & 0x0080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
-
- /* Write the 16 lower-bits */
-#endif
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-#ifdef CONFIG_FLASH_16BIT
- dest += 0x2;
- low_data = (data & 0x0000ffff);
-
- s_addr[0x5555] = 0x00AA;
- s_addr[0x2AAA] = 0x0055;
- s_addr[0x5555] = 0x00A0;
- *((vu_short *)dest) = low_data;
-
-#else
- addr[0x5555] = 0x00AA00AA;
- addr[0x2AAA] = 0x00550055;
- addr[0x5555] = 0x00A000A0;
- *((vu_long *)dest) = data;
-#endif
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
-
-#ifdef CONFIG_FLASH_16BIT
- while ((*((vu_short *)dest) & 0x0080) != (low_data & 0x0080)) {
-#else
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
-#endif
-
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/etx094/u-boot.lds b/board/etx094/u-boot.lds
deleted file mode 100644
index c50db8f8c8..0000000000
--- a/board/etx094/u-boot.lds
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- cpu/mpc8xx/traps.o (.text)
- cpu/mpc8xx/interrupts.o (.text)
- cpu/mpc8xx/serial.o (.text)
- cpu/mpc8xx/cpu_init.o (.text)
- cpu/mpc8xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/etx094/u-boot.lds.debug b/board/etx094/u-boot.lds.debug
deleted file mode 100644
index e4d8b10913..0000000000
--- a/board/etx094/u-boot.lds.debug
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- cpu/mpc8xx/traps.o (.text)
- cpu/mpc8xx/interrupts.o (.text)
- cpu/mpc8xx/cpu.o (.text)
- cpu/mpc8xx/cpu_init.o (.text)
- cpu/mpc8xx/speed.o (.text)
- cpu/mpc8xx/serial.o (.text)
- lib_ppc/extable.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/string.o (.text)
- lib_generic/crc32.o (.text)
- common/dlmalloc.o (.text)
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __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/evb4510/Makefile b/board/evb4510/Makefile
deleted file mode 100644
index 4f98d702d5..0000000000
--- a/board/evb4510/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := evb4510.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/evb4510/config.mk b/board/evb4510/config.mk
deleted file mode 100644
index 4d1a019c2c..0000000000
--- a/board/evb4510/config.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Copyright (c) 2004 Cucy Systems (http://www.cucy.com)
-# Curt Brune <curt@cucy.com>
-#
-# (C) Copyright 2000-2004
-# 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
-#
-
-TEXT_BASE = 0x007d0000
diff --git a/board/evb4510/evb4510.c b/board/evb4510/evb4510.c
deleted file mode 100644
index 13abbb7013..0000000000
--- a/board/evb4510/evb4510.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2004 Cucy Systems (http://www.cucy.com)
- * Curt Brune <curt@cucy.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
- */
-
-#include <common.h>
-#include <asm/hardware.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_EVB4510
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- icache_enable();
-
- /* address for the kernel command line */
- gd->bd->bi_boot_params = 0x800;
-
- /* enable board LEDs for output */
- PUT_REG( REG_IOPDATA, 0x0);
- PUT_REG( REG_IOPMODE, 0xFFFF);
- PUT_REG( REG_IOPDATA, 0xFF);
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-#if CONFIG_NR_DRAM_BANKS == 2
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
-#endif
- return 0;
-}
-
-#endif
diff --git a/board/evb4510/flash.c b/board/evb4510/flash.c
deleted file mode 100644
index aff92f95e9..0000000000
--- a/board/evb4510/flash.c
+++ /dev/null
@@ -1,539 +0,0 @@
-/*
- *
- * Copyright (c) 2004 Cucy Systems (http://www.cucy.com)
- * Curt Brune <curt@cucy.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
- */
-
-#include <common.h>
-#include <asm/hardware.h>
-#include <flash.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-typedef enum {
- FLASH_DEV_U9_512KB = 0,
- FLASH_DEV_U7_2MB = 1
-} FLASH_DEV;
-
-#define FLASH_DQ7 (0x80)
-#define FLASH_DQ5 (0x20)
-
-#define PROG_ADDR (0xAAA)
-#define SETUP_ADDR (0xAAA)
-#define ID_ADDR (0xAAA)
-#define UNLOCK_ADDR1 (0xAAA)
-#define UNLOCK_ADDR2 (0x555)
-
-#define UNLOCK_CMD1 (0xAA)
-#define UNLOCK_CMD2 (0x55)
-#define ERASE_SUSPEND_CMD (0xB0)
-#define ERASE_RESUME_CMD (0x30)
-#define RESET_CMD (0xF0)
-#define ID_CMD (0x90)
-#define SELECT_CMD (0x90)
-#define CHIPERASE_CMD (0x10)
-#define BYPASS_CMD (0x20)
-#define SECERASE_CMD (0x30)
-#define PROG_CMD (0xa0)
-#define SETUP_CMD (0x80)
-
-#if 0
-#define WRITE_UNLOCK(addr) { \
- PUT__U8( addr + UNLOCK_ADDR1, UNLOCK_CMD1); \
- PUT__U8( addr + UNLOCK_ADDR2, UNLOCK_CMD2); \
-}
-
-/* auto select command */
-#define CMD_ID(addr) WRITE_UNLOCK(addr); { \
- PUT__U8( addr + ID_ADDR, ID_CMD); \
-}
-
-#define CMD_RESET(addr) WRITE_UNLOCK(addr); { \
- PUT__U8( addr + ID_ADDR, RESET_CMD); \
-}
-
-#define CMD_ERASE_SEC(base, addr) WRITE_UNLOCK(base); \
- PUT__U8( base + SETUP_ADDR, SETUP_CMD); \
- WRITE_UNLOCK(base); \
- PUT__U8( addr, SECERASE_CMD);
-
-#define CMD_ERASE_CHIP(base) WRITE_UNLOCK(base); \
- PUT__U8( base + SETUP_ADDR, SETUP_CMD); \
- WRITE_UNLOCK(base); \
- PUT__U8( base + SETUP_ADDR, CHIPERASE_CMD);
-
-/* prepare for bypass programming */
-#define CMD_UNLOCK_BYPASS(addr) WRITE_UNLOCK(addr); { \
- PUT__U8( addr + ID_ADDR, 0x20); \
-}
-
-/* terminate bypass programming */
-#define CMD_BYPASS_RESET(addr) { \
- PUT__U8(addr, 0x90); \
- PUT__U8(addr, 0x00); \
-}
-#endif
-
-inline static void FLASH_CMD_UNLOCK (FLASH_DEV dev, u32 base)
-{
- switch (dev) {
- case FLASH_DEV_U7_2MB:
- PUT__U8 (base + 0xAAA, 0xAA);
- PUT__U8 (base + 0x555, 0x55);
- break;
- case FLASH_DEV_U9_512KB:
- PUT__U8 (base + 0x555, 0xAA);
- PUT__U8 (base + 0x2AA, 0x55);
- break;
- }
-}
-
-inline static void FLASH_CMD_SELECT (FLASH_DEV dev, u32 base)
-{
- switch (dev) {
- case FLASH_DEV_U7_2MB:
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base + 0xAAA, SELECT_CMD);
- break;
- case FLASH_DEV_U9_512KB:
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base + 0x555, SELECT_CMD);
- break;
- }
-}
-
-inline static void FLASH_CMD_RESET (FLASH_DEV dev, u32 base)
-{
- switch (dev) {
- case FLASH_DEV_U7_2MB:
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base + 0xAAA, RESET_CMD);
- break;
- case FLASH_DEV_U9_512KB:
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base + 0x555, RESET_CMD);
- break;
- }
-}
-
-inline static void FLASH_CMD_ERASE_SEC (FLASH_DEV dev, u32 base, u32 addr)
-{
- switch (dev) {
- case FLASH_DEV_U7_2MB:
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base + 0xAAA, SETUP_CMD);
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (addr, SECERASE_CMD);
- break;
- case FLASH_DEV_U9_512KB:
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base + 0x555, SETUP_CMD);
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (addr, SECERASE_CMD);
- break;
- }
-}
-
-inline static void FLASH_CMD_ERASE_CHIP (FLASH_DEV dev, u32 base)
-{
- switch (dev) {
- case FLASH_DEV_U7_2MB:
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base + 0xAAA, SETUP_CMD);
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base, CHIPERASE_CMD);
- break;
- case FLASH_DEV_U9_512KB:
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base + 0x555, SETUP_CMD);
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base, CHIPERASE_CMD);
- break;
- }
-}
-
-inline static void FLASH_CMD_UNLOCK_BYPASS (FLASH_DEV dev, u32 base)
-{
- switch (dev) {
- case FLASH_DEV_U7_2MB:
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base + 0xAAA, BYPASS_CMD);
- break;
- case FLASH_DEV_U9_512KB:
- FLASH_CMD_UNLOCK (dev, base);
- PUT__U8 (base + 0x555, BYPASS_CMD);
- break;
- }
-}
-
-inline static void FLASH_CMD_BYPASS_RESET (FLASH_DEV dev, u32 base)
-{
- PUT__U8 (base, SELECT_CMD);
- PUT__U8 (base, 0x0);
-}
-
-/* poll for flash command completion */
-static u16 _flash_poll (FLASH_DEV dev, u32 addr, u16 data, ulong timeOut)
-{
- u32 done = 0;
- ulong t0;
-
- u16 error = 0;
- volatile u16 flashData;
-
- data = data & 0xFF;
- t0 = get_timer (0);
- while (get_timer (t0) < timeOut) {
- /* for( i = 0; i < POLL_LOOPS; i++) { */
- /* Read the Data */
- flashData = GET__U8 (addr);
-
- /* FLASH_DQ7 = Data? */
- if ((flashData & FLASH_DQ7) == (data & FLASH_DQ7)) {
- done = 1;
- break;
- }
-
- /* Check Timeout (FLASH_DQ5==1) */
- if (flashData & FLASH_DQ5) {
- /* Read the Data */
- flashData = GET__U8 (addr);
-
- /* FLASH_DQ7 = Data? */
- if (!((flashData & FLASH_DQ7) == (data & FLASH_DQ7))) {
- printf ("_flash_poll(): FLASH_DQ7 & flashData not equal to write value\n");
- error = ERR_PROG_ERROR;
- }
- FLASH_CMD_RESET (dev, addr);
- done = 1;
- break;
- }
- /* spin delay */
- udelay (10);
- }
-
-
- /* error update */
- if (!done) {
- printf ("_flash_poll(): Timeout\n");
- error = ERR_TIMOUT;
- }
-
- /* Check the data */
- if (!error) {
- /* Read the Data */
- flashData = GET__U8 (addr);
- if (flashData != data) {
- error = ERR_PROG_ERROR;
- printf ("_flash_poll(): flashData(0x%04x) not equal to data(0x%04x)\n",
- flashData, data);
- }
- }
-
- return error;
-}
-
-/*-----------------------------------------------------------------------
- */
-static int _flash_check_protection (flash_info_t * info, int s_first, int s_last)
-{
- int sect, prot = 0;
-
- for (sect = s_first; sect <= s_last; sect++)
- if (info->protect[sect]) {
- printf (" Flash sector %d protected.\n", sect);
- prot++;
- }
- return prot;
-}
-
-static int _detectFlash (FLASH_DEV dev, u32 base, u8 venId, u8 devId)
-{
-
- u32 baseAddr = base | CACHE_DISABLE_MASK;
- u8 vendorId, deviceId;
-
- /* printf(__FUNCTION__"(): detecting flash @ 0x%08x\n", base); */
-
- /* Send auto select command and read manufacturer info */
- FLASH_CMD_SELECT (dev, baseAddr);
- vendorId = GET__U8 (baseAddr);
- FLASH_CMD_RESET (dev, baseAddr);
-
- /* Send auto select command and read device info */
- FLASH_CMD_SELECT (dev, baseAddr);
-
- if (dev == FLASH_DEV_U7_2MB) {
- deviceId = GET__U8 (baseAddr + 2);
- } else if (dev == FLASH_DEV_U9_512KB) {
- deviceId = GET__U8 (baseAddr + 1);
- } else {
- return 0;
- }
-
- FLASH_CMD_RESET (dev, baseAddr);
-
- /* printf (__FUNCTION__"(): found vendorId 0x%04x, deviceId 0x%04x\n",
- vendorId, deviceId);
- */
-
- return (vendorId == venId) && (deviceId == devId);
-
-}
-
-/******************************************************************************
- *
- * Public u-boot interface functions below
- *
- *****************************************************************************/
-
-/***************************************************************************
- *
- * Flash initialization
- *
- * This board has two banks of flash, but the base addresses depend on
- * how the board is jumpered.
- *
- * The two flash types are:
- *
- * AMD Am29LV160DB (2MB) sectors layout 16KB, 2x8KB, 32KB, 31x64KB
- *
- * AMD Am29LV040B (512KB) sectors: 8x64KB
- *****************************************************************************/
-
-unsigned long flash_init (void)
-{
- flash_info_t *info;
- u16 i;
- u32 flashtest;
- s16 amd160 = -1;
- u32 amd160base = 0;
-
-#if CFG_MAX_FLASH_BANKS == 2
- s16 amd040 = -1;
- u32 amd040base = 0;
-#endif
-
- /* configure PHYS_FLASH_1 */
- if (_detectFlash (FLASH_DEV_U7_2MB, PHYS_FLASH_1, 0x1, 0x49)) {
- amd160 = 0;
- amd160base = PHYS_FLASH_1;
-#if CFG_MAX_FLASH_BANKS == 1
- }
-#else
- if (_detectFlash
- (FLASH_DEV_U9_512KB, PHYS_FLASH_2, 0x1, 0x4F)) {
- amd040 = 1;
- amd040base = PHYS_FLASH_2;
- } else {
- printf (__FUNCTION__
- "(): Unable to detect PHYS_FLASH_2: 0x%08x\n",
- PHYS_FLASH_2);
- }
- } else if (_detectFlash (FLASH_DEV_U9_512KB, PHYS_FLASH_1, 0x1, 0x4F)) {
- amd040 = 0;
- amd040base = PHYS_FLASH_1;
- if (_detectFlash (FLASH_DEV_U7_2MB, PHYS_FLASH_2, 0x1, 0x49)) {
- amd160 = 1;
- amd160base = PHYS_FLASH_2;
- } else {
- printf (__FUNCTION__
- "(): Unable to detect PHYS_FLASH_2: 0x%08x\n",
- PHYS_FLASH_2);
- }
- }
-#endif
- else {
- printf ("flash_init(): Unable to detect PHYS_FLASH_1: 0x%08x\n",
- PHYS_FLASH_1);
- }
-
- /* Configure AMD Am29LV160DB (2MB) */
- info = &flash_info[amd160];
- info->flash_id = FLASH_DEV_U7_2MB;
- info->sector_count = 35;
- info->size = 2 * 1024 * 1024; /* 2MB */
- /* 1*16K Boot Block
- 2*8K Parameter Block
- 1*32K Small Main Block */
- info->start[0] = amd160base;
- info->start[1] = amd160base + 0x4000;
- info->start[2] = amd160base + 0x6000;
- info->start[3] = amd160base + 0x8000;
- for (i = 1; i < info->sector_count; i++)
- info->start[3 + i] = amd160base + i * (64 * 1024);
-
- for (i = 0; i < info->sector_count; i++) {
- /* Write auto select command sequence and query sector protection */
- FLASH_CMD_SELECT (info->flash_id,
- info->start[i] | CACHE_DISABLE_MASK);
- flashtest =
- GET__U8 (((info->start[i] + 4) | CACHE_DISABLE_MASK));
- FLASH_CMD_RESET (info->flash_id,
- amd160base | CACHE_DISABLE_MASK);
- info->protect[i] = (flashtest & 0x0001);
- }
-
- /*
- * protect monitor and environment sectors in 2MB flash
- */
- flash_protect (FLAG_PROTECT_SET,
- amd160base, amd160base + monitor_flash_len - 1, info);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR, CFG_ENV_ADDR + CFG_ENV_SIZE - 1, info);
-
-#if CFG_MAX_FLASH_BANKS == 2
- /* Configure AMD Am29LV040B (512KB) */
- info = &flash_info[amd040];
- info->flash_id = FLASH_DEV_U9_512KB;
- info->sector_count = 8;
- info->size = 512 * 1024; /* 512KB, 8 x 64KB */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = amd040base + i * (64 * 1024);
- /* Write auto select command sequence and query sector protection */
- FLASH_CMD_SELECT (info->flash_id,
- info->start[i] | CACHE_DISABLE_MASK);
- flashtest =
- GET__U8 (((info->start[i] + 2) | CACHE_DISABLE_MASK));
- FLASH_CMD_RESET (info->flash_id,
- amd040base | CACHE_DISABLE_MASK);
- info->protect[i] = (flashtest & 0x0001);
- }
-#endif
-
- return flash_info[0].size
-#if CFG_MAX_FLASH_BANKS == 2
- + flash_info[1].size
-#endif
- ;
-}
-
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_DEV_U7_2MB) {
- printf ("AMD Am29LV160DB (2MB) 16KB,2x8KB,32KB,31x64KB\n");
- } else if (info->flash_id == FLASH_DEV_U9_512KB) {
- printf ("AMD Am29LV040B (512KB) 8x64KB\n");
- } else {
- printf ("Unknown flash_id ...\n");
- return;
- }
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 4) == 0)
- printf ("\n ");
- printf (" S%02d @ 0x%08lX%s", i,
- info->start[i], info->protect[i] ? " !" : " ");
- }
- printf ("\n");
-}
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- u16 i, error = 0;
-
- printf ("\n");
-
- /* check flash protection bits */
- if (_flash_check_protection (info, s_first, s_last)) {
- printf (" Flash erase aborted due to protected sectors\n");
- return ERR_PROTECTED;
- }
-
- if ((s_first < info->sector_count) && (s_first <= s_last)) {
- for (i = s_first; i <= s_last && !error; i++) {
- printf (" Erasing Sector %d @ 0x%08lx ... ", i,
- info->start[i]);
- /* bypass the cache to access the flash memory */
- FLASH_CMD_ERASE_SEC (info->flash_id,
- (info->
- start[0] | CACHE_DISABLE_MASK),
- (info->
- start[i] | CACHE_DISABLE_MASK));
- /* look for sector to become 0xFF after erase */
- error = _flash_poll (info->flash_id,
- info->
- start[i] | CACHE_DISABLE_MASK,
- 0xFF, CFG_FLASH_ERASE_TOUT);
- FLASH_CMD_RESET (info->flash_id,
- (info->
- start[0] | CACHE_DISABLE_MASK));
- printf ("done\n");
- if (error) {
- break;
- }
- }
- } else
- error = ERR_INVAL;
-
- return error;
-}
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- u16 error = 0, i;
- u32 n;
- u8 *bp, *bps;
-
- /* Write Setup */
- /* bypass the cache to access the flash memory */
- FLASH_CMD_UNLOCK_BYPASS (info->flash_id,
- (info->start[0] | CACHE_DISABLE_MASK));
-
- /* Write the Data to Flash */
-
- bp = (u8 *) (addr | CACHE_DISABLE_MASK);
- bps = (u8 *) src;
-
- for (n = 0; n < cnt && !error; n++, bp++, bps++) {
-
- if (!(n % (cnt / 15))) {
- printf (".");
- }
-
- /* write the flash command for flash memory */
- *bp = 0xA0;
-
- /* Write the data */
- *bp = *bps;
-
- /* Check if the write is done */
- for (i = 0; i < 0xff; i++);
- error = _flash_poll (info->flash_id, (u32) bp, *bps,
- CFG_FLASH_WRITE_TOUT);
- if (error) {
- return error;
- }
- }
-
- /* Reset the Flash Mode to read */
- FLASH_CMD_BYPASS_RESET (info->flash_id, info->start[0]);
-
- printf (" ");
-
- return error;
-}
diff --git a/board/evb4510/lowlevel_init.S b/board/evb4510/lowlevel_init.S
deleted file mode 100644
index 7184d7259a..0000000000
--- a/board/evb4510/lowlevel_init.S
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (c) 2004 Cucy Systems (http://www.cucy.com)
- * Curt Brune <curt@cucy.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
- */
-
-
-#include <config.h>
-#include <version.h>
-#include <asm/hardware.h>
-
-/***********************************************************************
- * Configure Memory Map
- *
- * This memory map allows us to relocate from FLASH to SRAM. After
- * power-on reset the CPU only knows about the FLASH memory at address
- * 0x00000000. After lowlevel_init completes the memory map will be:
- *
- * Memory Addr
- * 0x00000000
- * to 8MB SRAM (U5) -- 8MB Map
- * 0x00800000
- *
- * 0x01000000
- * to 2MB Flash @ 0x00000000 (U7) -- 2MB Map
- * 0x01200000
- *
- * 0x02000000
- * to 512KB Flash @ 0x02000000 (U9) -- 2MB Map
- * 0x02080000
- *
- * Load all 12 memory registers with the STMIA instruction since
- * memory access is disabled once these registers are written. The
- * last register written re-enables memory access. For more info see
- * the user's manual for the S3C4510B, available from Samsung's web
- * site. Search for part number "S3C4510B".
- *
- ***********************************************************************/
-
-.globl lowlevel_init
-lowlevel_init:
-
- /* preserve the temp register (r12 AKA ip) and remap it. */
- ldr r1, =SRAM_BASE+0xC
- add r0, r12, #0x01000000
- str r0, [r1]
-
- /* remap the link register for when we return */
- add lr, lr, #0x01000000
-
- /* store a short program in the on chip SRAM, which is
- * unaffected when remapping memory. Note the cache must be
- * disabled for the on chip SRAM to be available.
- */
- ldr r1, =SRAM_BASE
- ldr r0, =0xe8801ffe /* stmia r0, {r1-r12} */
- str r0, [r1]
- add r1, r1, #4
- ldr r0, =0xe59fc000 /* ldr r12, [pc, #0] */
- str r0, [r1]
- add r1, r1, #4
- ldr r0, =0xe1a0f00e /* mov pc, lr */
- str r0, [r1]
-
- adr r0, memory_map_data
- ldmia r0, {r1-r12}
- ldr r0, =REG_EXTDBWTH
-
- ldr pc, =SRAM_BASE
-
-.globl reset_cpu
-reset_cpu:
- /*
- * reset the cpu by re-mapping FLASH 0 to 0x0 and jumping to
- * address 0x0. We accomplish this by storing a few
- * instructions into the on chip SRAM (8KB) and run from
- * there. Note the cache must be disabled for the on chip
- * SRAM to be available.
- *
- * load r2 with REG_ROMCON0
- * load r3 with 0x12040060 configure FLASH bank 0 @ 0x00000000
- * load r4 with REG_DRAMCON0
- * load r5 with 0x08000380 configure RAM bank 0 @ 0x01000000
- * load r6 with REG_REFEXTCON
- * load r7 with 0x9c218360
- * load r8 with 0x0
- * store str r3,[r2] @ SRAM_BASE
- * store str r5,[r4] @ SRAM_BASE + 0x4
- * store str r7,[r6] @ SRAM_BASE + 0x8
- * store mov pc,r8 @ SRAM_BASE + 0xC
- * mov pc, SRAM_BASE
- *
- */
-
- /* disable cache */
- ldr r0, =REG_SYSCFG
- ldr r1, =0x83ffffa0 /* cache-disabled */
- str r1, [r0]
-
- ldr r2, =REG_ROMCON0
- ldr r3, =0x02000060 /* Bank0 2MB FLASH @ 0x00000000 */
- ldr r4, =REG_DRAMCON0
- ldr r5, =0x18040380 /* DRAM0 8MB SRAM @ 0x01000000 */
- ldr r6, =REG_REFEXTCON
- ldr r7, =0xce278360
- ldr r8, =0x00000000
- ldr r1, =SRAM_BASE
- ldr r0, =0xe5823000 /* str r3, [r2] */
- str r0, [r1]
- ldr r1, =SRAM_BASE+4
- ldr r0, =0xe5845000 /* str r5, [r4] */
- str r0, [r1]
- ldr r1, =SRAM_BASE+8
- ldr r0, =0xe5867000 /* str r7, [r6] */
- str r0, [r1]
- ldr r1, =SRAM_BASE+0xC
- ldr r0, =0xe1a0f008 /* mov pc, r8 */
- str r0, [r1]
- ldr r1, =SRAM_BASE
- mov pc, r1
-
- /* never return */
-
-/************************************************************************
- * Below are twelve 32-bit values for the twelve memory registers of
- * the system manager, starting with register REG_EXTDBWTH.
- ***********************************************************************/
-memory_map_data:
- .long 0x00f03005 /* memory widths */
- .long 0x12040060 /* Bank0 2MB FLASH @ 0x01000000 */
- .long 0x22080060 /* Bank1 512KB FLASH @ 0x02000000 */
- .long 0x00000000
- .long 0x00000000
- .long 0x00000000
- .long 0x00000000
- .long 0x08000380 /* DRAM0 8MB SRAM @ 0x00000000 */
- .long 0x00000000
- .long 0x00000000
- .long 0x00000000
- .long 0x9c218360 /* enable memory */
diff --git a/board/evb4510/u-boot.lds b/board/evb4510/u-boot.lds
deleted file mode 100644
index 5b70a40aab..0000000000
--- a/board/evb4510/u-boot.lds
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm720t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_info 0 : { *(.debug_info) }
- .debug_line 0 : { *(.debug_line) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- .debug_aranges 0 : { *(.debug_aranges) }
-}
diff --git a/board/evb64260/64260.h b/board/evb64260/64260.h
deleted file mode 100644
index d106ced3c2..0000000000
--- a/board/evb64260/64260.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef __64260_H__
-#define __64260_H__
-
-/* CPU Configuration bits */
-#define CPU_CONF_ADDR_MISS_EN (1 << 8)
-#define CPU_CONF_AACK_DELAY (1 << 11)
-#define CPU_CONF_ENDIANESS (1 << 12)
-#define CPU_CONF_PIPELINE (1 << 13)
-#define CPU_CONF_TA_DELAY (1 << 15)
-#define CPU_CONF_RD_OOO (1 << 16)
-#define CPU_CONF_STOP_RETRY (1 << 17)
-#define CPU_CONF_MULTI_DECODE (1 << 18)
-#define CPU_CONF_DP_VALID (1 << 19)
-#define CPU_CONF_PERR_PROP (1 << 22)
-#define CPU_CONF_FAST_CLK (1 << 23)
-#define CPU_CONF_AACK_DELAY_2 (1 << 25)
-#define CPU_CONF_AP_VALID (1 << 26)
-#define CPU_CONF_REMAP_WR_DIS (1 << 27)
-#define CPU_CONF_CONF_SB_DIS (1 << 28)
-#define CPU_CONF_IO_SB_DIS (1 << 29)
-#define CPU_CONF_CLK_SYNC (1 << 30)
-
-/* CPU Master Control bits */
-#define CPU_MAST_CTL_ARB_EN (1 << 8)
-#define CPU_MAST_CTL_MASK_BR_1 (1 << 9)
-#define CPU_MAST_CTL_M_WR_TRIG (1 << 10)
-#define CPU_MAST_CTL_M_RD_TRIG (1 << 11)
-#define CPU_MAST_CTL_CLEAN_BLK (1 << 12)
-#define CPU_MAST_CTL_FLUSH_BLK (1 << 13)
-
-#endif /* __64260_H__ */
diff --git a/board/evb64260/Makefile b/board/evb64260/Makefile
deleted file mode 100644
index aa39bafab6..0000000000
--- a/board/evb64260/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2001
-# Josh Huber <huber@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
-#
-
-include $(TOPDIR)/config.mk
-
-LIB = $(obj)lib$(BOARD).a
-
-SOBJS = misc.o
-COBJS = $(BOARD).o flash.o serial.o memory.o pci.o \
- eth.o eth_addrtbl.o mpsc.o i2c.o \
- sdram_init.o zuma_pbb.o intel_flash.o zuma_pbb_mbox.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/evb64260/bootseq.txt b/board/evb64260/bootseq.txt
deleted file mode 100644
index 391d49a119..0000000000
--- a/board/evb64260/bootseq.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-(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_early_init_f:
- 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/config.mk b/board/evb64260/config.mk
deleted file mode 100644
index 0646a3eb58..0000000000
--- a/board/evb64260/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (C) Copyright 2001
-# Josh Huber <huber@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
-#
-
-#
-# EVB64260 boards
-#
-
-TEXT_BASE = 0xfff00000
diff --git a/board/evb64260/ecctest.c b/board/evb64260/ecctest.c
deleted file mode 100644
index 5d3679aa93..0000000000
--- a/board/evb64260/ecctest.c
+++ /dev/null
@@ -1,111 +0,0 @@
-indent: Standard input:27: Warning:old style assignment ambiguity in "=*". Assuming "= *"
-
-#ifdef ECC_TEST
-static inline void ecc_off (void)
-{
- *(volatile int *) (INTERNAL_REG_BASE_ADDR + 0x4b4) &= ~0x00200000;
-}
-
-static inline void ecc_on (void)
-{
- *(volatile int *) (INTERNAL_REG_BASE_ADDR + 0x4b4) |= 0x00200000;
-}
-
-static int putshex (const char *buf, int len)
-{
- int i;
-
- for (i = 0; i < len; i++) {
- printf ("%02x", buf[i]);
- }
- return 0;
-}
-
-static int char_memcpy (void *d, const void *s, int len)
-{
- int i;
- char *cd = d;
- const char *cs = s;
-
- for (i = 0; i < len; i++) {
- *(cd++) = *(cs++);
- }
- return 0;
-}
-
-static int memory_test (char *buf)
-{
- const char src[][16] = {
- {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01},
- {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02},
- {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04},
- {0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08},
- {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
- {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20},
- {0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x40},
- {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80},
- {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- 0x55, 0x55, 0x55, 0x55, 0x55, 0x55},
- {0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa},
- {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
- };
- const int foo[] = { 0 };
- int i, j, a;
-
- printf ("\ntest @ %d %p\n", foo[0], buf);
- for (i = 0; i < 12; i++) {
- for (a = 0; a < 8; a++) {
- const char *s = src[i] + a;
- int align = (unsigned) (s) & 0x7;
-
- /* ecc_off(); */
- memcpy (buf, s, 8);
- /* ecc_on(); */
- putshex (s, 8);
- if (memcmp (buf, s, 8)) {
- putc ('\n');
- putshex (buf, 8);
- printf (" [FAIL] (%p) align=%d\n", s, align);
- for (j = 0; j < 8; j++) {
- s[j] == buf[j] ? puts (" ") :
- printf ("%02x",
- (s[j]) ^ (buf[j]));
- }
- putc ('\n');
- } else {
- printf (" [PASS] (%p) align=%d\n", s, align);
- }
- /* ecc_off(); */
- char_memcpy (buf, s, 8);
- /* ecc_on(); */
- putshex (s, 8);
- if (memcmp (buf, s, 8)) {
- putc ('\n');
- putshex (buf, 8);
- printf (" [FAIL] (%p) align=%d\n", s, align);
- for (j = 0; j < 8; j++) {
- s[j] == buf[j] ? puts (" ") :
- printf ("%02x",
- (s[j]) ^ (buf[j]));
- }
- putc ('\n');
- } else {
- printf (" [PASS] (%p) align=%d\n", s, align);
- }
- }
- }
-
- return 0;
-}
-#endif
diff --git a/board/evb64260/eth.c b/board/evb64260/eth.c
deleted file mode 100644
index eafa48bc6e..0000000000
--- a/board/evb64260/eth.c
+++ /dev/null
@@ -1,807 +0,0 @@
-/**************************************************************************
-Etherboot - BOOTP/TFTP Bootstrap Program
-Skeleton NIC driver for Etherboot
-***************************************************************************/
-
-/*
- * 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, or (at
- * your option) any later version.
- */
-
-/*
- * This file is a modified version from the Galileo polled mode
- * network driver for the ethernet contained within the GT64260
- * chip. It has been modified to fit into the U-Boot framework, from
- * the original (etherboot) setup. Also, additional cleanup and features
- * were added.
- *
- * - Josh Huber <huber@mclx.com>
- */
-
-#include <common.h>
-#include <malloc.h>
-#include <galileo/gt64260R.h>
-#include <galileo/core.h>
-#include <asm/cache.h>
-#include <miiphy.h>
-#include <net.h>
-
-#include "eth.h"
-#include "eth_addrtbl.h"
-
-#if (CONFIG_COMMANDS & CFG_CMD_NET) && defined(CONFIG_NET_MULTI)
-
-#define GT6426x_ETH_BUF_SIZE 1536
-
-/* if you like verbose output, turn this on! */
-#undef DEBUG
-
-/* Restart autoneg if we detect link is up on phy init. */
-
-/*
- * The GT doc's say that after Rst is deasserted, and the PHY
- * reports autoneg complete, it runs through its autoneg
- * procedures. This doesn't seem to be the case for MII
- * PHY's. To work around this check for link up && autoneg
- * complete when initilizing the port. If they are both set,
- * then restart PHY autoneg. Of course, it may be something
- * completly different.
- */
-#ifdef CONFIG_ETHER_PORT_MII
-# define RESTART_AUTONEG
-#endif
-
-/* do this if you dont want to use snooping */
-#define USE_SOFTWARE_CACHE_MANAGEMENT
-
-#ifdef USE_SOFTWARE_CACHE_MANAGEMENT
-#define FLUSH_DCACHE(a,b) if(dcache_status()){clean_dcache_range((u32)(a),(u32)(b));}
-#define FLUSH_AND_INVALIDATE_DCACHE(a,b) if(dcache_status()){flush_dcache_range((u32)(a),(u32)(b));}
-#define INVALIDATE_DCACHE(a,b) if(dcache_status()){invalidate_dcache_range((u32)(a),(u32)(b));}
-#else
-/* bummer - w/o flush, nothing works, even with snooping - FIXME */
-/* #define FLUSH_DCACHE(a,b) */
-#define FLUSH_DCACHE(a,b) if(dcache_status()){clean_dcache_range((u32)(a),(u32)(b));}
-#define FLUSH_AND_INVALIDATE_DCACHE(a,b)
-#define INVALIDATE_DCACHE(a,b)
-#endif
-struct eth_dev_s {
- eth0_tx_desc_single *eth_tx_desc;
- eth0_rx_desc_single *eth_rx_desc;
- char *eth_tx_buffer;
- char *eth_rx_buffer[NR];
- int tdn, rdn;
- int dev;
- unsigned int reg_base;
-};
-
-
-#ifdef CONFIG_INTEL_LXT97X
-/* for intel LXT972 */
-static const char ether_port_phy_addr[3]={0,1,2};
-#else
-static const char ether_port_phy_addr[3]={4,5,6};
-#endif
-
-/* MII PHY access routines are common for all i/f, use gal_ent0 */
-#define GT6426x_MII_DEVNAME "gal_enet0"
-
-int gt6426x_miiphy_read(char *devname, unsigned char phy,
- unsigned char reg, unsigned short *val);
-
-static inline unsigned short
-miiphy_read_ret(unsigned short phy, unsigned short reg)
-{
- unsigned short val;
- gt6426x_miiphy_read(GT6426x_MII_DEVNAME,phy,reg,&val);
- return val;
-}
-
-
-/**************************************************************************
-RESET - Reset adapter
-***************************************************************************/
-void
-gt6426x_eth_reset(void *v)
-{
- /* we should do something here...
- struct eth_device *wp = (struct eth_device *)v;
- struct eth_dev_s *p = wp->priv;
- */
-
- printf ("RESET\n");
- /* put the card in its initial state */
-}
-
-static void gt6426x_handle_SMI(struct eth_dev_s *p, unsigned int icr)
-{
-#ifdef DEBUG
- printf("SMI interrupt: ");
-
- if(icr&0x20000000) {
- printf("SMI done\n");
- }
-#endif
-
- if(icr&0x10000000) {
- unsigned int psr;
- psr=GTREGREAD(ETHERNET0_PORT_STATUS_REGISTER + p->reg_base);
-#ifdef DEBUG
- printf("PHY state change:\n"
- " GT:%s:%s:%s:%s\n",
- psr&1?"100":" 10",
- psr&8?" Link":"nLink",
- psr&2?"FD":"HD",
- psr&4?" FC":"nFC");
-
-#ifdef CONFIG_INTEL_LXT97X /* non-standard mii reg (intel lxt972a) */
- {
- unsigned short mii_11;
- mii_11=miiphy_read_ret(ether_port_phy_addr[p->dev],0x11);
-
- printf(" mii:%s:%s:%s:%s %s:%s %s\n",
- mii_11&(1<<14)?"100":" 10",
- mii_11&(1<<10)?" Link":"nLink",
- mii_11&(1<<9)?"FD":"HD",
- mii_11&(1<<4)?" FC":"nFC",
-
- mii_11&(1<<7)?"ANc":"ANnc",
- mii_11&(1<<8)?"AN":"Manual",
- ""
- );
- }
-#endif /* CONFIG_INTEL_LXT97X */
-#endif /* DEBUG */
- }
-}
-
-static int
-gt6426x_eth_receive(struct eth_dev_s *p,unsigned int icr)
-{
- int eth_len=0;
- char *eth_data;
-
- eth0_rx_desc_single *rx=&p->eth_rx_desc[(p->rdn)];
-
- INVALIDATE_DCACHE((unsigned int)rx,(unsigned int)(rx+1));
-
- if (rx->command_status & 0x80000000) {
- return 0; /* No packet received */
- }
-
- eth_len = (unsigned int)
- (rx->buff_size_byte_count) & 0x0000ffff;
- eth_data = (char *) p->eth_rx_buffer[p->rdn];
-
-#ifdef DEBUG
- if (eth_len) {
- printf ("%s: Recived %d byte Packet @ 0x%p\n",
- __FUNCTION__, eth_len, eth_data);
- }
-#endif
- /*
- * packet is now in:
- * eth0_rx_buffer[RDN_ETH0];
- */
-
- /* let the upper layer handle the packet */
- NetReceive ((uchar *)eth_data, eth_len);
-
- rx->buff_size_byte_count = GT6426x_ETH_BUF_SIZE<<16;
-
-
- /* GT96100 Owner */
- rx->command_status = 0x80000000;
-
- FLUSH_DCACHE((unsigned int)rx,(unsigned int)(rx+1));
-
- p->rdn ++;
- if (p->rdn == NR) {p->rdn = 0;}
-
- sync();
-
- /* Start Rx*/
- GT_REG_WRITE (ETHERNET0_SDMA_COMMAND_REGISTER + p->reg_base, 0x00000080);
-
-#ifdef DEBUG
- {
- int i;
- for (i=0;i<12;i++) {
- printf(" %02x", eth_data[i]);
- }
- }
- printf(": %d bytes\n", eth_len);
-#endif
- INVALIDATE_DCACHE((unsigned int)eth_data,
- (unsigned int)eth_data+eth_len);
- return eth_len;
-}
-
-/**************************************************************************
-POLL - look for an rx frame, handle other conditions
-***************************************************************************/
-int
-gt6426x_eth_poll(void *v)
-{
- struct eth_device *wp = (struct eth_device *)v;
- struct eth_dev_s *p = wp->priv;
- unsigned int icr=GTREGREAD(ETHERNET0_INTERRUPT_CAUSE_REGISTER + p->reg_base);
-
- if(icr) {
- GT_REG_WRITE(ETHERNET0_INTERRUPT_CAUSE_REGISTER +p->reg_base, 0);
-#ifdef DEBUG
- printf("poll got ICR %08x\n", icr);
-#endif
- /* SMI done or PHY state change*/
- if(icr&0x30000000) gt6426x_handle_SMI(p, icr);
- }
- /* always process. We aren't using RX interrupts */
- return gt6426x_eth_receive(p, icr);
-}
-
-/**************************************************************************
-TRANSMIT - Transmit a frame
-***************************************************************************/
-int
-gt6426x_eth_transmit(void *v, volatile char *p, unsigned int s)
-{
- struct eth_device *wp = (struct eth_device *)v;
- struct eth_dev_s *dev = (struct eth_dev_s *)wp->priv;
-#ifdef DEBUG
- unsigned int old_command_stat,old_psr;
-#endif
- eth0_tx_desc_single *tx=&dev->eth_tx_desc[dev->tdn];
-
- /* wait for tx to be ready */
- INVALIDATE_DCACHE((unsigned int)tx,(unsigned int)(tx+1));
- while (tx->command_status & 0x80000000) {
- int i;
- for(i=0;i<1000;i++);
- INVALIDATE_DCACHE((unsigned int)tx,(unsigned int)(tx+1));
- }
-
- GT_REG_WRITE (ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER0 + dev->reg_base,
- (unsigned int)tx);
-
-#ifdef DEBUG
- printf("copying to tx_buffer [%p], length %x, desc = %p\n",
- dev->eth_tx_buffer, s, dev->eth_tx_desc);
-#endif
- memcpy(dev->eth_tx_buffer, (char *) p, s);
-
- tx->buff_pointer = (uchar *)dev->eth_tx_buffer;
- tx->bytecount_reserved = ((__u16)s) << 16;
-
- /* 31 - own
- * 22 - gencrc
- * 18:16 - pad, last, first */
- tx->command_status = (1<<31) | (1<<22) | (7<<16);
-#if 0
- /* FEr #18 */
- tx->next_desc = NULL;
-#else
- tx->next_desc =
- (struct eth0_tx_desc_struct *)
- &dev->eth_tx_desc[(dev->tdn+1)%NT].bytecount_reserved;
-
- /* cpu owned */
- dev->eth_tx_desc[(dev->tdn+1)%NT].command_status = (7<<16); /* pad, last, first */
-#endif
-
-#ifdef DEBUG
- old_command_stat=tx->command_status,
- old_psr=GTREGREAD(ETHERNET0_PORT_STATUS_REGISTER + dev->reg_base);
-#endif
-
- FLUSH_DCACHE((unsigned int)tx,
- (unsigned int)&dev->eth_tx_desc[(dev->tdn+2)%NT]);
-
- FLUSH_DCACHE((unsigned int)dev->eth_tx_buffer,(unsigned int)dev->eth_tx_buffer+s);
-
- GT_REG_WRITE(ETHERNET0_SDMA_COMMAND_REGISTER + dev->reg_base, 0x01000000);
-
-#ifdef DEBUG
- {
- unsigned int command_stat=0;
- printf("cmd_stat: %08x PSR: %08x\n", old_command_stat, old_psr);
- /* wait for tx to be ready */
- do {
- unsigned int psr=GTREGREAD(ETHERNET0_PORT_STATUS_REGISTER + dev->reg_base);
- command_stat=tx->command_status;
- if(command_stat!=old_command_stat || psr !=old_psr) {
- printf("cmd_stat: %08x PSR: %08x\n", command_stat, psr);
- old_command_stat = command_stat;
- old_psr = psr;
- }
- /* gt6426x_eth0_poll(); */
- } while (command_stat & 0x80000000);
-
- printf("sent %d byte frame\n", s);
-
- if((command_stat & (3<<15)) == 3) {
- printf("frame had error (stat=%08x)\n", command_stat);
- }
- }
-#endif
- return 0;
-}
-
-/**************************************************************************
-DISABLE - Turn off ethernet interface
-***************************************************************************/
-void
-gt6426x_eth_disable(void *v)
-{
- struct eth_device *wp = (struct eth_device *)v;
- struct eth_dev_s *p = (struct eth_dev_s *)wp->priv;
-
- GT_REG_WRITE(ETHERNET0_SDMA_COMMAND_REGISTER + p->reg_base, 0x80008000);
-}
-
-/**************************************************************************
-MII utilities - write: write to an MII register via SMI
-***************************************************************************/
-int
-gt6426x_miiphy_write(char *devname, unsigned char phy,
- unsigned char reg, unsigned short data)
-{
- unsigned int temp= (reg<<21) | (phy<<16) | data;
-
- while(GTREGREAD(ETHERNET_SMI_REGISTER) & (1<<28)); /* wait for !Busy */
-
- GT_REG_WRITE(ETHERNET_SMI_REGISTER, temp);
- return 0;
-}
-
-/**************************************************************************
-MII utilities - read: read from an MII register via SMI
-***************************************************************************/
-int
-gt6426x_miiphy_read(char *devname, unsigned char phy,
- unsigned char reg, unsigned short *val)
-{
- unsigned int temp= (reg<<21) | (phy<<16) | 1<<26;
-
- while(GTREGREAD(ETHERNET_SMI_REGISTER) & (1<<28)); /* wait for !Busy */
-
- GT_REG_WRITE(ETHERNET_SMI_REGISTER, temp);
-
- while(1) {
- temp=GTREGREAD(ETHERNET_SMI_REGISTER);
- if(temp & (1<<27)) break; /* wait for ReadValid */
- }
- *val = temp & 0xffff;
-
- return 0;
-}
-
-#ifdef DEBUG
-/**************************************************************************
-MII utilities - dump mii registers
-***************************************************************************/
-static void
-gt6426x_dump_mii(bd_t *bis, unsigned short phy)
-{
- printf("mii reg 0 - 3: %04x %04x %04x %04x\n",
- miiphy_read_ret(phy, 0x0),
- miiphy_read_ret(phy, 0x1),
- miiphy_read_ret(phy, 0x2),
- miiphy_read_ret(phy, 0x3)
- );
- printf(" 4 - 7: %04x %04x %04x %04x\n",
- miiphy_read_ret(phy, 0x4),
- miiphy_read_ret(phy, 0x5),
- miiphy_read_ret(phy, 0x6),
- miiphy_read_ret(phy, 0x7)
- );
- printf(" 8: %04x\n",
- miiphy_read_ret(phy, 0x8)
- );
- printf(" 16-19: %04x %04x %04x %04x\n",
- miiphy_read_ret(phy, 0x10),
- miiphy_read_ret(phy, 0x11),
- miiphy_read_ret(phy, 0x12),
- miiphy_read_ret(phy, 0x13)
- );
- printf(" 20,30: %04x %04x\n",
- miiphy_read_ret(phy, 20),
- miiphy_read_ret(phy, 30)
- );
-}
-#endif
-
-#ifdef RESTART_AUTONEG
-
-/* If link is up && autoneg compleate, and if
- * GT and PHY disagree about link capabilitys,
- * restart autoneg - something screwy with FD/HD
- * unless we do this. */
-static void
-check_phy_state(struct eth_dev_s *p)
-{
- int bmsr = miiphy_read_ret(ether_port_phy_addr[p->dev], PHY_BMSR);
- int psr = GTREGREAD(ETHERNET0_PORT_STATUS_REGISTER + p->reg_base);
-
- if ((psr & 1<<3) && (bmsr & PHY_BMSR_LS)) {
- int nego = miiphy_read_ret(ether_port_phy_addr[p->dev], PHY_ANAR) &
- miiphy_read_ret(ether_port_phy_addr[p->dev], PHY_ANLPAR);
- int want;
-
- if (nego & PHY_ANLPAR_TXFD) {
- want = 0x3;
- printf("MII: 100Base-TX, Full Duplex\n");
- } else if (nego & PHY_ANLPAR_TX) {
- want = 0x1;
- printf("MII: 100Base-TX, Half Duplex\n");
- } else if (nego & PHY_ANLPAR_10FD) {
- want = 0x2;
- printf("MII: 10Base-T, Full Duplex\n");
- } else if (nego & PHY_ANLPAR_10) {
- want = 0x0;
- printf("MII: 10Base-T, Half Duplex\n");
- } else {
- printf("MII: Unknown link-foo! %x\n", nego);
- return;
- }
-
- if ((psr & 0x3) != want) {
- printf("MII: GT thinks %x, PHY thinks %x, restarting autoneg..\n",
- psr & 0x3, want);
- miiphy_write(GT6426x_MII_DEVNAME,ether_port_phy_addr[p->dev],0,
- miiphy_read_ret(ether_port_phy_addr[p->dev],0) | (1<<9));
- udelay(10000); /* the EVB's GT takes a while to notice phy
- went down and up */
- }
- }
-}
-#endif
-
-/**************************************************************************
-PROBE - Look for an adapter, this routine's visible to the outside
-***************************************************************************/
-int
-gt6426x_eth_probe(void *v, bd_t *bis)
-{
- struct eth_device *wp = (struct eth_device *)v;
- struct eth_dev_s *p = (struct eth_dev_s *)wp->priv;
- int dev = p->dev;
- unsigned int reg_base = p->reg_base;
- unsigned long temp;
- int i;
-
- if (( dev < 0 ) || ( dev >= GAL_ETH_DEVS ))
- { /* This should never happen */
- printf("%s: Invalid device %d\n", __FUNCTION__, dev );
- return 0;
- }
-
-#ifdef DEBUG
- printf ("%s: initializing %s\n", __FUNCTION__, wp->name );
- printf ("\nCOMM_CONTROL = %08x , COMM_CONF = %08x\n",
- GTREGREAD(COMM_UNIT_ARBITER_CONTROL),
- GTREGREAD(COMM_UNIT_ARBITER_CONFIGURATION_REGISTER));
-#endif
-
- /* clear MIB counters */
- for(i=0;i<255; i++)
- temp=GTREGREAD(ETHERNET0_MIB_COUNTER_BASE + reg_base +i);
-
-#ifdef CONFIG_INTEL_LXT97X
- /* for intel LXT972 */
-
- /* led 1: 0x1=txact
- led 2: 0xc=link/rxact
- led 3: 0x2=rxact (N/C)
- strch: 0,2=30 ms, enable */
- miiphy_write(GT6426x_MII_DEVNAME,ether_port_phy_addr[p->dev], 20, 0x1c22);
-
- /* 2.7ns port rise time */
- /*miiphy_write(ether_port_phy_addr[p->dev], 30, 0x0<<10); */
-#else
- /* already set up in mpsc.c */
- /*GT_REG_WRITE(MAIN_ROUTING_REGISTER, 0x7ffe38); / b400 */
-
- /* already set up in sdram_init.S... */
- /* MPSC0, MPSC1, RMII */
- /*GT_REG_WRITE(SERIAL_PORT_MULTIPLEX, 0x1102); / f010 */
-#endif
- GT_REG_WRITE(ETHERNET_PHY_ADDRESS_REGISTER,
- ether_port_phy_addr[0] |
- (ether_port_phy_addr[1]<<5) |
- (ether_port_phy_addr[2]<<10)); /* 2000 */
-
- /* 13:12 - 10: 4x64bit burst (cache line size = 32 bytes)
- * 9 - 1: RIFB - interrupt on frame boundaries only
- * 6:7 - 00: big endian rx and tx
- * 5:2 - 1111: 15 retries */
- GT_REG_WRITE(ETHERNET0_SDMA_CONFIGURATION_REGISTER + reg_base,
- (2<<12) | (1<<9) | (0xf<<2) ); /* 2440 */
-
-#ifndef USE_SOFTWARE_CACHE_MANAGEMENT
- /* enable rx/tx desc/buffer cache snoop */
- GT_REG_READ(ETHERNET_0_ADDRESS_CONTROL_LOW + dev*0x20,
- &temp); /* f200 */
- temp|= (1<<6)| (1<<14)| (1<<22)| (1<<30);
- GT_REG_WRITE(ETHERNET_0_ADDRESS_CONTROL_LOW + dev*0x20,
- temp);
-#endif
-
- /* 31 28 27 24 23 20 19 16
- * 0000 0000 0000 0000 [0004]
- * 15 12 11 8 7 4 3 0
- * 1000 1101 0000 0000 [4d00]
- * 20 - 0=MII 1=RMII
- * 19 - 0=speed autoneg
- * 15:14 - framesize 1536 (GT6426x_ETH_BUF_SIZE)
- * 11 - no force link pass
- * 10 - 1=disable fctl autoneg
- * 8 - override prio ?? */
- temp = 0x00004d00;
-#ifndef CONFIG_ETHER_PORT_MII
- temp |= (1<<20); /* RMII */
-#endif
- /* set En */
- GT_REG_WRITE(ETHERNET0_PORT_CONFIGURATION_EXTEND_REGISTER + reg_base,
- temp); /* 2408 */
-
- /* hardcode E1 also? */
- /* -- according to dox, this is safer due to extra pulldowns? */
- if (dev<2) {
- GT_REG_WRITE(ETHERNET0_PORT_CONFIGURATION_EXTEND_REGISTER + (dev+1) * 0x400,
- temp); /* 2408 */
- }
-
- /* wake up MAC */ /* 2400 */
- GT_REG_READ(ETHERNET0_PORT_CONFIGURATION_REGISTER + reg_base, &temp);
- temp |= (1<<7); /* enable port */
-#ifdef CONFIG_GT_USE_MAC_HASH_TABLE
- temp |= (1<<12); /* hash size 1/2k */
-#else
- temp |= 1; /* promisc */
-#endif
- GT_REG_WRITE(ETHERNET0_PORT_CONFIGURATION_REGISTER + reg_base, temp);
- /* 2400 */
-
-#ifdef RESTART_AUTONEG
- check_phy_state(p);
-#endif
-
- printf("%s: Waiting for link up..\n", wp->name);
- temp = 10 * 1000;
- /* wait for link back up */
- while(!(GTREGREAD(ETHERNET0_PORT_STATUS_REGISTER + reg_base) & 8)
- && (--temp > 0)){
- udelay(1000); /* wait 1 ms */
- }
- if ( temp == 0) {
- printf("%s: Failed!\n", wp->name);
- return (0);
- }
-
- printf("%s: OK!\n", wp->name);
-
- p->tdn = 0;
- p->rdn = 0;
- p->eth_tx_desc[p->tdn].command_status = 0;
-
- /* Initialize Rx Side */
- for (temp = 0; temp < NR; temp++) {
- p->eth_rx_desc[temp].buff_pointer = (uchar *)p->eth_rx_buffer[temp];
- p->eth_rx_desc[temp].buff_size_byte_count = GT6426x_ETH_BUF_SIZE<<16;
-
- /* GT96100 Owner */
- p->eth_rx_desc[temp].command_status = 0x80000000;
- p->eth_rx_desc[temp].next_desc =
- (struct eth0_rx_desc_struct *)
- &p->eth_rx_desc[(temp+1)%NR].buff_size_byte_count;
- }
-
- FLUSH_DCACHE((unsigned int)&p->eth_tx_desc[0],
- (unsigned int)&p->eth_tx_desc[NR]);
- FLUSH_DCACHE((unsigned int)&p->eth_rx_desc[0],
- (unsigned int)&p->eth_rx_desc[NR]);
-
- GT_REG_WRITE(ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER0 + reg_base,
- (unsigned int) p->eth_tx_desc);
- GT_REG_WRITE(ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER0 + reg_base,
- (unsigned int) p->eth_rx_desc);
- GT_REG_WRITE(ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER0 + reg_base,
- (unsigned int) p->eth_rx_desc);
-
-#ifdef DEBUG
- printf ("\nRx descriptor pointer is %08x %08x\n",
- GTREGREAD(ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER0 + reg_base),
- GTREGREAD(ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER0 + reg_base));
- printf ("\n\n%08x %08x\n",
- (unsigned int)p->eth_rx_desc,p->eth_rx_desc[0].command_status);
-
- printf ("Descriptor dump:\n");
- printf ("cmd status: %08x\n",p->eth_rx_desc[0].command_status);
- printf ("byte_count: %08x\n",p->eth_rx_desc[0].buff_size_byte_count);
- printf ("buff_ptr: %08x\n",(unsigned int)p->eth_rx_desc[0].buff_pointer);
- printf ("next_desc: %08x\n\n",(unsigned int)p->eth_rx_desc[0].next_desc);
- printf ("%08x\n",*(unsigned int *) ((unsigned int)p->eth_rx_desc + 0x0));
- printf ("%08x\n",*(unsigned int *) ((unsigned int)p->eth_rx_desc + 0x4));
- printf ("%08x\n",*(unsigned int *) ((unsigned int)p->eth_rx_desc + 0x8));
- printf ("%08x\n\n",
- *(unsigned int *) ((unsigned int)p->eth_rx_desc + 0xc));
-#endif
-
-#ifdef DEBUG
- gt6426x_dump_mii(bis,ether_port_phy_addr[p->dev]);
-#endif
-
-#ifdef CONFIG_GT_USE_MAC_HASH_TABLE
- {
- unsigned int hashtable_base;
- u8 *b = (u8 *)(wp->enetaddr);
- u32 macH, macL;
-
- /* twist the MAC up into the way the discovery wants it */
- macH= (b[0]<<8) | b[1];
- macL= (b[2]<<24) | (b[3]<<16) | (b[4]<<8) | b[5];
-
- /* mode 0, size 0x800 */
- hashtable_base =initAddressTable(dev,0,1);
-
- if(!hashtable_base) {
- printf("initAddressTable failed\n");
- return 0;
- }
-
- addAddressTableEntry(dev, macH, macL, 1, 0);
- GT_REG_WRITE(ETHERNET0_HASH_TABLE_POINTER_REGISTER + reg_base,
- hashtable_base);
- }
-#endif
-
- /* Start Rx*/
- GT_REG_WRITE(ETHERNET0_SDMA_COMMAND_REGISTER + reg_base, 0x00000080);
- printf("%s: gt6426x eth device %d init success \n", wp->name, dev );
- return 1;
-}
-
-/* enter all the galileo ethernet devs into MULTI-BOOT */
-void
-gt6426x_eth_initialize(bd_t *bis)
-{
- struct eth_device *dev;
- struct eth_dev_s *p;
- int devnum, x, temp;
- char *s, *e, buf[64];
-
-#ifdef DEBUG
- printf( "\n%s\n", __FUNCTION );
-#endif
-
- for (devnum = 0; devnum < GAL_ETH_DEVS; devnum++) {
- dev = calloc(sizeof(*dev), 1);
- if (!dev) {
- printf( "%s: gal_enet%d allocation failure, %s\n",
- __FUNCTION__, devnum, "eth_device structure");
- return;
- }
-
- /* must be less than NAMESIZE (16) */
- sprintf(dev->name, "gal_enet%d", devnum);
-
-#ifdef DEBUG
- printf( "Initializing %s\n", dev->name );
-#endif
-
- /* Extract the MAC address from the environment */
- switch (devnum)
- {
- case 0: s = "ethaddr"; break;
-#if (GAL_ETH_DEVS > 1)
- case 1: s = "eth1addr"; break;
-#endif
-#if (GAL_ETH_DEVS > 2)
- case 2: s = "eth2addr"; break;
-#endif
- default: /* this should never happen */
- printf( "%s: Invalid device number %d\n",
- __FUNCTION__, devnum );
- return;
- }
-
- temp = getenv_r (s, buf, sizeof(buf));
- s = (temp > 0) ? buf : NULL;
-
-#ifdef DEBUG
- printf ("Setting MAC %d to %s\n", devnum, s );
-#endif
- for (x = 0; x < 6; ++x) {
- dev->enetaddr[x] = s ? simple_strtoul(s, &e, 16) : 0;
- if (s)
- s = (*e) ? e+1 : e;
- }
-
- dev->init = (void*)gt6426x_eth_probe;
- dev->halt = (void*)gt6426x_eth_reset;
- dev->send = (void*)gt6426x_eth_transmit;
- dev->recv = (void*)gt6426x_eth_poll;
-
- p = calloc( sizeof(*p), 1 );
- dev->priv = (void*)p;
- if (!p)
- {
- printf( "%s: %s allocation failure, %s\n",
- __FUNCTION__, dev->name, "Private Device Structure");
- free(dev);
- return;
- }
-
- p->dev = devnum;
- p->tdn=0;
- p->rdn=0;
- p->reg_base = devnum * ETHERNET_PORTS_DIFFERENCE_OFFSETS;
-
- p->eth_tx_desc =
- (eth0_tx_desc_single *)
- (((unsigned int) malloc(sizeof (eth0_tx_desc_single) *
- (NT+1)) & 0xfffffff0) + 0x10);
- if (!p)
- {
- printf( "%s: %s allocation failure, %s\n",
- __FUNCTION__, dev->name, "Tx Descriptor");
- free(dev);
- return;
- }
-
- p->eth_rx_desc =
- (eth0_rx_desc_single *)
- (((unsigned int) malloc(sizeof (eth0_rx_desc_single) *
- (NR+1)) & 0xfffffff0) + 0x10);
- if (!p->eth_rx_desc)
- {
- printf( "%s: %s allocation failure, %s\n",
- __FUNCTION__, dev->name, "Rx Descriptor");
- free(dev);
- free(p);
- return;
- }
-
- p->eth_tx_buffer =
- (char *) (((unsigned int) malloc(GT6426x_ETH_BUF_SIZE) & 0xfffffff0) + 0x10);
- if (!p->eth_tx_buffer)
- {
- printf( "%s: %s allocation failure, %s\n",
- __FUNCTION__, dev->name, "Tx Bufffer");
- free(dev);
- free(p);
- free(p->eth_rx_desc);
- return;
- }
-
- for (temp = 0 ; temp < NR ; temp ++) {
- p->eth_rx_buffer[temp] =
- (char *)
- (((unsigned int) malloc(GT6426x_ETH_BUF_SIZE) & 0xfffffff0) + 0x10);
- if (!p->eth_rx_buffer[temp])
- {
- printf( "%s: %s allocation failure, %s\n",
- __FUNCTION__, dev->name, "Rx Buffers");
- free(dev);
- free(p);
- free(p->eth_tx_buffer);
- free(p->eth_rx_desc);
- free(p->eth_tx_desc);
- while (temp >= 0)
- free(p->eth_rx_buffer[--temp]);
- return;
- }
- }
-
-
- eth_register(dev);
-#if defined(CONFIG_MII) || (CONFIG_COMMANDS & CFG_CMD_MII)
- miiphy_register(dev->name,
- gt6426x_miiphy_read, gt6426x_miiphy_write);
-#endif
- }
-
-}
-#endif /* CFG_CMD_NET && CONFIG_NET_MULTI */
diff --git a/board/evb64260/eth.h b/board/evb64260/eth.h
deleted file mode 100644
index beb6db16df..0000000000
--- a/board/evb64260/eth.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@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
- */
-
-/*
- * eth.h - header file for the polled mode GT ethernet driver
- */
-
-#ifndef __GT6426x_ETH_H__
-#define __GT6426x_ETH_H__
-
-#include <asm/types.h>
-#include <asm/io.h>
-#include <asm/byteorder.h>
-#include <common.h>
-
-typedef struct eth0_tx_desc_struct {
- volatile __u32 bytecount_reserved;
- volatile __u32 command_status;
- volatile struct eth0_tx_desc_struct * next_desc;
- /* Note - the following will not work for 64 bit addressing */
- volatile unsigned char * buff_pointer;
-} __attribute__ ((packed)) eth0_tx_desc_single;
-
-typedef struct eth0_rx_desc_struct {
- volatile __u32 buff_size_byte_count;
- volatile __u32 command_status;
- volatile struct eth0_rx_desc_struct * next_desc;
- volatile unsigned char * buff_pointer;
-} __attribute__ ((packed)) eth0_rx_desc_single;
-
-#define NT 20 /* Number of Transmit buffers */
-#define NR 20 /* Number of Receive buffers */
-#define MAX_BUFF_SIZE (1536+2*CACHE_LINE_SIZE) /* 1600 */
-#define ETHERNET_PORTS_DIFFERENCE_OFFSETS 0x400
-
-unsigned long TDN_ETH0 , RDN_ETH0; /* Rx/Tx current Descriptor Number*/
-unsigned int EVB64260_ETH0_irq;
-
-#define CLOSED 0
-#define OPENED 1
-
-#define PORT_ETH0 0
-
-extern eth0_tx_desc_single *eth0_tx_desc;
-extern eth0_rx_desc_single *eth0_rx_desc;
-extern char *eth0_tx_buffer;
-extern char *eth0_rx_buffer[NR];
-extern char *eth_data;
-
-extern int gt6426x_eth_poll(void *v);
-extern int gt6426x_eth_transmit(void *v, volatile char *p, unsigned int s);
-extern void gt6426x_eth_disable(void *v);
-extern int gt6426x_eth_probe(void *v, bd_t *bis);
-
-#endif /* __GT64260x_ETH_H__ */
diff --git a/board/evb64260/eth_addrtbl.c b/board/evb64260/eth_addrtbl.c
deleted file mode 100644
index e8ef0e3e52..0000000000
--- a/board/evb64260/eth_addrtbl.c
+++ /dev/null
@@ -1,221 +0,0 @@
-#include <common.h>
-#include <malloc.h>
-#include <galileo/gt64260R.h>
-#include <galileo/core.h>
-#include <asm/cache.h>
-#include "eth.h"
-#include "eth_addrtbl.h"
-
-#define TRUE 1
-#define FALSE 0
-
-#define PRINTF printf
-
-#ifdef CONFIG_GT_USE_MAC_HASH_TABLE
-
-static u32 addressTableHashMode[GAL_ETH_DEVS] = { 0, };
-static u32 addressTableHashSize[GAL_ETH_DEVS] = { 0, };
-static addrTblEntry *addressTableBase[GAL_ETH_DEVS] = { 0, };
-static void *realAddrTableBase[GAL_ETH_DEVS] = { 0, };
-
-static const u32 hashLength[2] = {
- (0x8000), /* 8K * 4 entries */
- (0x8000 / 16), /* 512 * 4 entries */
-};
-
-/* Initialize the address table for a port, if needed */
-unsigned int initAddressTable (u32 port, u32 hashMode, u32 hashSizeSelector)
-{
- unsigned int tableBase;
-
- if (port < 0 || port >= GAL_ETH_DEVS) {
- printf ("%s: Invalid port number %d\n", __FUNCTION__, port);
- return 0;
- }
-
- if (hashMode > 1) {
- printf ("%s: Invalid Hash Mode %d\n", __FUNCTION__, port);
- return 0;
- }
-
- if (realAddrTableBase[port] &&
- (addressTableHashSize[port] != hashSizeSelector)) {
- /* we have been here before,
- * but now we want a different sized table
- */
- free (realAddrTableBase[port]);
- realAddrTableBase[port] = 0;
- addressTableBase[port] = 0;
-
- }
-
- tableBase = (unsigned int) addressTableBase[port];
- /* we get called for every probe, so only do this once */
- if (!tableBase) {
- int bytes =
- hashLength[hashSizeSelector] * sizeof (addrTblEntry);
-
- realAddrTableBase[port] =
- malloc (bytes + 64);
- tableBase = (unsigned int)realAddrTableBase;
-
- if (!tableBase) {
- printf ("%s: alloc memory failed \n", __FUNCTION__);
- return 0;
- }
-
- /* align to octal byte */
- if (tableBase & 63)
- tableBase = (tableBase + 63) & ~63;
-
- addressTableHashMode[port] = hashMode;
- addressTableHashSize[port] = hashSizeSelector;
- addressTableBase[port] = (addrTblEntry *) tableBase;
-
- memset ((void *) tableBase, 0, bytes);
- }
-
- return tableBase;
-}
-
-/*
- * ----------------------------------------------------------------------------
- * This function will calculate the hash function of the address.
- * depends on the hash mode and hash size.
- * Inputs
- * macH - the 2 most significant bytes of the MAC address.
- * macL - the 4 least significant bytes of the MAC address.
- * hashMode - hash mode 0 or hash mode 1.
- * hashSizeSelector - indicates number of hash table entries (0=0x8000,1=0x800)
- * Outputs
- * return the calculated entry.
- */
-u32 hashTableFunction (u32 macH, u32 macL, u32 HashSize, u32 hash_mode)
-{
- u32 hashResult;
- u32 addrH;
- u32 addrL;
- u32 addr0;
- u32 addr1;
- u32 addr2;
- u32 addr3;
- u32 addrHSwapped;
- u32 addrLSwapped;
-
-
- addrH = NIBBLE_SWAPPING_16_BIT (macH);
- addrL = NIBBLE_SWAPPING_32_BIT (macL);
-
- addrHSwapped = FLIP_4_BITS (addrH & 0xf)
- + ((FLIP_4_BITS ((addrH >> 4) & 0xf)) << 4)
- + ((FLIP_4_BITS ((addrH >> 8) & 0xf)) << 8)
- + ((FLIP_4_BITS ((addrH >> 12) & 0xf)) << 12);
-
- addrLSwapped = FLIP_4_BITS (addrL & 0xf)
- + ((FLIP_4_BITS ((addrL >> 4) & 0xf)) << 4)
- + ((FLIP_4_BITS ((addrL >> 8) & 0xf)) << 8)
- + ((FLIP_4_BITS ((addrL >> 12) & 0xf)) << 12)
- + ((FLIP_4_BITS ((addrL >> 16) & 0xf)) << 16)
- + ((FLIP_4_BITS ((addrL >> 20) & 0xf)) << 20)
- + ((FLIP_4_BITS ((addrL >> 24) & 0xf)) << 24)
- + ((FLIP_4_BITS ((addrL >> 28) & 0xf)) << 28);
-
- addrH = addrHSwapped;
- addrL = addrLSwapped;
-
- if (hash_mode == 0) {
- addr0 = (addrL >> 2) & 0x03f;
- addr1 = (addrL & 0x003) | ((addrL >> 8) & 0x7f) << 2;
- addr2 = (addrL >> 15) & 0x1ff;
- addr3 = ((addrL >> 24) & 0x0ff) | ((addrH & 1) << 8);
- } else {
- addr0 = FLIP_6_BITS (addrL & 0x03f);
- addr1 = FLIP_9_BITS (((addrL >> 6) & 0x1ff));
- addr2 = FLIP_9_BITS ((addrL >> 15) & 0x1ff);
- addr3 = FLIP_9_BITS ((((addrL >> 24) & 0x0ff) |
- ((addrH & 0x1) << 8)));
- }
-
- hashResult = (addr0 << 9) | (addr1 ^ addr2 ^ addr3);
-
- if (HashSize == _8K_TABLE) {
- hashResult = hashResult & 0xffff;
- } else {
- hashResult = hashResult & 0x07ff;
- }
-
- return (hashResult);
-}
-
-
-/*
- * ----------------------------------------------------------------------------
- * This function will add an entry to the address table.
- * depends on the hash mode and hash size that was initialized.
- * Inputs
- * port - ETHERNET port number.
- * macH - the 2 most significant bytes of the MAC address.
- * macL - the 4 least significant bytes of the MAC address.
- * skip - if 1, skip this address.
- * rd - the RD field in the address table.
- * Outputs
- * address table entry is added.
- * TRUE if success.
- * FALSE if table full
- */
-int addAddressTableEntry (u32 port, u32 macH, u32 macL, u32 rd, u32 skip)
-{
- addrTblEntry *entry;
- u32 newHi;
- u32 newLo;
- u32 i;
-
- newLo = (((macH >> 4) & 0xf) << 15)
- | (((macH >> 0) & 0xf) << 11)
- | (((macH >> 12) & 0xf) << 7)
- | (((macH >> 8) & 0xf) << 3)
- | (((macL >> 20) & 0x1) << 31)
- | (((macL >> 16) & 0xf) << 27)
- | (((macL >> 28) & 0xf) << 23)
- | (((macL >> 24) & 0xf) << 19)
- | (skip << SKIP_BIT) | (rd << 2) | VALID;
-
- newHi = (((macL >> 4) & 0xf) << 15)
- | (((macL >> 0) & 0xf) << 11)
- | (((macL >> 12) & 0xf) << 7)
- | (((macL >> 8) & 0xf) << 3)
- | (((macL >> 21) & 0x7) << 0);
-
- /*
- * Pick the appropriate table, start scanning for free/reusable
- * entries at the index obtained by hashing the specified MAC address
- */
- entry = addressTableBase[port];
- entry += hashTableFunction (macH, macL, addressTableHashSize[port],
- addressTableHashMode[port]);
- for (i = 0; i < HOP_NUMBER; i++, entry++) {
- if (!(entry->lo & VALID) /*|| (entry->lo & SKIP) */ ) {
- break;
- } else { /* if same address put in same position */
- if (((entry->lo & 0xfffffff8) == (newLo & 0xfffffff8))
- && (entry->hi == newHi)) {
- break;
- }
- }
- }
-
- if (i == HOP_NUMBER) {
- PRINTF ("addGT64260addressTableEntry: table section is full\n");
- return (FALSE);
- }
-
- /*
- * Update the selected entry
- */
- entry->hi = newHi;
- entry->lo = newLo;
- DCACHE_FLUSH_N_SYNC ((u32) entry, MAC_ENTRY_SIZE);
- return (TRUE);
-}
-
-#endif /* CONFIG_GT_USE_MAC_HASH_TABLE */
diff --git a/board/evb64260/eth_addrtbl.h b/board/evb64260/eth_addrtbl.h
deleted file mode 100644
index 5a62c67e18..0000000000
--- a/board/evb64260/eth_addrtbl.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#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/evb64260.c b/board/evb64260/evb64260.c
deleted file mode 100644
index ab599410b2..0000000000
--- a/board/evb64260/evb64260.c
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@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
- */
-
-/*
- * evb64260.c - main board support/init for the Galileo Eval board.
- */
-
-#include <common.h>
-#include <74xx_7xx.h>
-#include <galileo/memory.h>
-#include <galileo/pci.h>
-#include <galileo/gt64260R.h>
-#include <net.h>
-
-#include <asm/io.h>
-#include "eth.h"
-#include "mpsc.h"
-#include "i2c.h"
-#include "64260.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_ZUMA_V2
-extern void zuma_mbox_init(void);
-#endif
-
-#undef DEBUG
-#define MAP_PCI
-
-#ifdef DEBUG
-#define DP(x) x
-#else
-#define DP(x)
-#endif
-
-/* ------------------------------------------------------------------------- */
-
-/* this is the current GT register space location */
-/* it starts at CFG_DFL_GT_REGS but moves later to CFG_GT_REGS */
-
-/* Unfortunately, we cant change it while we are in flash, so we initialize it
- * to the "final" value. This means that any debug_led calls before
- * board_early_init_f wont work right (like in cpu_init_f).
- * See also my_remap_gt_regs below. (NTL)
- */
-
-unsigned int INTERNAL_REG_BASE_ADDR = CFG_GT_REGS;
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * This is a version of the GT register space remapping function that
- * doesn't touch globals (meaning, it's ok to run from flash.)
- *
- * Unfortunately, this has the side effect that a writable
- * INTERNAL_REG_BASE_ADDR is impossible. Oh well.
- */
-
-void
-my_remap_gt_regs(u32 cur_loc, u32 new_loc)
-{
- u32 temp;
-
- /* check and see if it's already moved */
- temp = in_le32((u32 *)(new_loc + INTERNAL_SPACE_DECODE));
- if ((temp & 0xffff) == new_loc >> 20)
- return;
-
- temp = (in_le32((u32 *)(cur_loc + INTERNAL_SPACE_DECODE)) &
- 0xffff0000) | (new_loc >> 20);
-
- out_le32((u32 *)(cur_loc + INTERNAL_SPACE_DECODE), temp);
-
- while (GTREGREAD(INTERNAL_SPACE_DECODE) != temp);
-}
-
-static void
-gt_pci_config(void)
-{
- /* move PCI stuff out of the way - NTL */
- /* map PCI Host 0 */
- pciMapSpace(PCI_HOST0, PCI_REGION0, CFG_PCI0_0_MEM_SPACE,
- CFG_PCI0_0_MEM_SPACE, CFG_PCI0_MEM_SIZE);
-
- pciMapSpace(PCI_HOST0, PCI_REGION1, 0, 0, 0);
- pciMapSpace(PCI_HOST0, PCI_REGION2, 0, 0, 0);
- pciMapSpace(PCI_HOST0, PCI_REGION3, 0, 0, 0);
-
- pciMapSpace(PCI_HOST0, PCI_IO, CFG_PCI0_IO_SPACE_PCI,
- CFG_PCI0_IO_SPACE, CFG_PCI0_IO_SIZE);
-
- /* map PCI Host 1 */
- pciMapSpace(PCI_HOST1, PCI_REGION0, CFG_PCI1_0_MEM_SPACE,
- CFG_PCI1_0_MEM_SPACE, CFG_PCI1_MEM_SIZE);
-
- pciMapSpace(PCI_HOST1, PCI_REGION1, 0, 0, 0);
- pciMapSpace(PCI_HOST1, PCI_REGION2, 0, 0, 0);
- pciMapSpace(PCI_HOST1, PCI_REGION3, 0, 0, 0);
-
- pciMapSpace(PCI_HOST1, PCI_IO, CFG_PCI1_IO_SPACE_PCI,
- CFG_PCI1_IO_SPACE, CFG_PCI1_IO_SIZE);
-
- /* PCI interface settings */
- GT_REG_WRITE(PCI_0TIMEOUT_RETRY, 0xffff);
- GT_REG_WRITE(PCI_1TIMEOUT_RETRY, 0xffff);
- GT_REG_WRITE(PCI_0BASE_ADDRESS_REGISTERS_ENABLE, 0xfffff80e);
- GT_REG_WRITE(PCI_1BASE_ADDRESS_REGISTERS_ENABLE, 0xfffff80e);
-
-
-}
-
-/* Setup CPU interface paramaters */
-static void
-gt_cpu_config(void)
-{
- cpu_t cpu = get_cpu_type();
- ulong tmp;
-
- /* cpu configuration register */
- tmp = GTREGREAD(CPU_CONFIGURATION);
-
- /* set the AACK delay bit
- * see Res#14 */
- tmp |= CPU_CONF_AACK_DELAY;
- tmp &= ~CPU_CONF_AACK_DELAY_2; /* New RGF */
-
- /* Galileo claims this is necessary for all busses >= 100 MHz */
- tmp |= CPU_CONF_FAST_CLK;
-
- if (cpu == CPU_750CX) {
- tmp &= ~CPU_CONF_DP_VALID; /* Safer, needed for CXe. RGF */
- tmp &= ~CPU_CONF_AP_VALID;
- } else {
- tmp |= CPU_CONF_DP_VALID;
- tmp |= CPU_CONF_AP_VALID;
- }
-
- /* this only works with the MPX bus */
- tmp &= ~CPU_CONF_RD_OOO; /* Safer RGF */
- tmp |= CPU_CONF_PIPELINE;
- tmp |= CPU_CONF_TA_DELAY;
-
- GT_REG_WRITE(CPU_CONFIGURATION, tmp);
-
- /* CPU master control register */
- tmp = GTREGREAD(CPU_MASTER_CONTROL);
-
- tmp |= CPU_MAST_CTL_ARB_EN;
-
- if ((cpu == CPU_7400) ||
- (cpu == CPU_7410) ||
- (cpu == CPU_7450)) {
-
- tmp |= CPU_MAST_CTL_CLEAN_BLK;
- tmp |= CPU_MAST_CTL_FLUSH_BLK;
-
- } else {
- /* cleanblock must be cleared for CPUs
- * that do not support this command
- * see Res#1 */
- tmp &= ~CPU_MAST_CTL_CLEAN_BLK;
- tmp &= ~CPU_MAST_CTL_FLUSH_BLK;
- }
- GT_REG_WRITE(CPU_MASTER_CONTROL, tmp);
-}
-
-/*
- * board_early_init_f.
- *
- * set up gal. device mappings, etc.
- */
-int board_early_init_f (void)
-{
- uchar sram_boot = 0;
-
- /*
- * set up the GT the way the kernel wants it
- * the call to move the GT register space will obviously
- * fail if it has already been done, but we're going to assume
- * that if it's not at the power-on location, it's where we put
- * it last time. (huber)
- */
- my_remap_gt_regs(CFG_DFL_GT_REGS, CFG_GT_REGS);
-
- gt_pci_config();
-
- /* mask all external interrupt sources */
- GT_REG_WRITE(CPU_INTERRUPT_MASK_REGISTER_LOW, 0);
- GT_REG_WRITE(CPU_INTERRUPT_MASK_REGISTER_HIGH, 0);
- GT_REG_WRITE(PCI_0INTERRUPT_CAUSE_MASK_REGISTER_LOW, 0);
- GT_REG_WRITE(PCI_0INTERRUPT_CAUSE_MASK_REGISTER_HIGH, 0);
- GT_REG_WRITE(PCI_1INTERRUPT_CAUSE_MASK_REGISTER_LOW, 0);
- GT_REG_WRITE(PCI_1INTERRUPT_CAUSE_MASK_REGISTER_HIGH, 0);
- GT_REG_WRITE(CPU_INT_0_MASK, 0);
- GT_REG_WRITE(CPU_INT_1_MASK, 0);
- GT_REG_WRITE(CPU_INT_2_MASK, 0);
- GT_REG_WRITE(CPU_INT_3_MASK, 0);
-
- /* now, onto the configuration */
- GT_REG_WRITE(SDRAM_CONFIGURATION, CFG_SDRAM_CONFIG);
-
- /* ----- DEVICE BUS SETTINGS ------ */
-
- /*
- * EVB
- * 0 - SRAM
- * 1 - RTC
- * 2 - UART
- * 3 - Flash
- * boot - BootCS
- *
- * Zuma
- * 0 - Flash
- * boot - BootCS
- */
-
- /*
- * the dual 7450 module requires burst access to the boot
- * device, so the serial rom copies the boot device to the
- * on-board sram on the eval board, and updates the correct
- * registers to boot from the sram. (device0)
- */
-#if defined(CONFIG_ZUMA_V2) || defined(CONFIG_P3G4)
- /* Zuma has no SRAM */
- sram_boot = 0;
-#else
- if (memoryGetDeviceBaseAddress(DEVICE0) && 0xfff00000 == CFG_MONITOR_BASE)
- sram_boot = 1;
-#endif
-
- if (!sram_boot)
- memoryMapDeviceSpace(DEVICE0, CFG_DEV0_SPACE, CFG_DEV0_SIZE);
-
- memoryMapDeviceSpace(DEVICE1, CFG_DEV1_SPACE, CFG_DEV1_SIZE);
- memoryMapDeviceSpace(DEVICE2, CFG_DEV2_SPACE, CFG_DEV2_SIZE);
- memoryMapDeviceSpace(DEVICE3, CFG_DEV3_SPACE, CFG_DEV3_SIZE);
-
- /* configure device timing */
-#ifdef CFG_DEV0_PAR
- if (!sram_boot)
- GT_REG_WRITE(DEVICE_BANK0PARAMETERS, CFG_DEV0_PAR);
-#endif
-
-#ifdef CFG_DEV1_PAR
- GT_REG_WRITE(DEVICE_BANK1PARAMETERS, CFG_DEV1_PAR);
-#endif
-#ifdef CFG_DEV2_PAR
- GT_REG_WRITE(DEVICE_BANK2PARAMETERS, CFG_DEV2_PAR);
-#endif
-
-#ifdef CONFIG_EVB64260
-#ifdef CFG_32BIT_BOOT_PAR
- /* detect if we are booting from the 32 bit flash */
- if (GTREGREAD(DEVICE_BOOT_BANK_PARAMETERS) & (0x3 << 20)) {
- /* 32 bit boot flash */
- GT_REG_WRITE(DEVICE_BANK3PARAMETERS, CFG_8BIT_BOOT_PAR);
- GT_REG_WRITE(DEVICE_BOOT_BANK_PARAMETERS, CFG_32BIT_BOOT_PAR);
- } else {
- /* 8 bit boot flash */
- GT_REG_WRITE(DEVICE_BANK3PARAMETERS, CFG_32BIT_BOOT_PAR);
- GT_REG_WRITE(DEVICE_BOOT_BANK_PARAMETERS, CFG_8BIT_BOOT_PAR);
- }
-#else
- /* 8 bit boot flash only */
- GT_REG_WRITE(DEVICE_BOOT_BANK_PARAMETERS, CFG_8BIT_BOOT_PAR);
-#endif
-#else /* CONFIG_EVB64260 not defined */
- /* We are booting from 16-bit flash.
- */
- GT_REG_WRITE(DEVICE_BOOT_BANK_PARAMETERS, CFG_16BIT_BOOT_PAR);
-#endif
-
- gt_cpu_config();
-
- /* MPP setup */
- GT_REG_WRITE(MPP_CONTROL0, CFG_MPP_CONTROL_0);
- GT_REG_WRITE(MPP_CONTROL1, CFG_MPP_CONTROL_1);
- GT_REG_WRITE(MPP_CONTROL2, CFG_MPP_CONTROL_2);
- GT_REG_WRITE(MPP_CONTROL3, CFG_MPP_CONTROL_3);
-
- GT_REG_WRITE(GPP_LEVEL_CONTROL, CFG_GPP_LEVEL_CONTROL);
- GT_REG_WRITE(SERIAL_PORT_MULTIPLEX, CFG_SERIAL_PORT_MUX);
-
- return 0;
-}
-
-/* various things to do after relocation */
-
-int misc_init_r (void)
-{
- icache_enable();
-#ifdef CFG_L2
- l2cache_enable();
-#endif
-
-#ifdef CONFIG_MPSC
- mpsc_init2();
-#endif
-
-#ifdef CONFIG_ZUMA_V2
- zuma_mbox_init();
-#endif
- return (0);
-}
-
-void
-after_reloc(ulong dest_addr)
-{
- /* check to see if we booted from the sram. If so, move things
- * back to the way they should be. (we're running from main
- * memory at this point now */
-
- if (memoryGetDeviceBaseAddress(DEVICE0) == CFG_MONITOR_BASE) {
- memoryMapDeviceSpace(DEVICE0, CFG_DEV0_SPACE, CFG_DEV0_SIZE);
- memoryMapDeviceSpace(BOOT_DEVICE, CFG_FLASH_BASE, _1M);
- }
-
- /* now, jump to the main U-Boot board init code */
- board_init_r ((gd_t *)gd, dest_addr);
-
- /* NOTREACHED */
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int
-checkboard (void)
-{
- puts ("Board: " CFG_BOARD_NAME "\n");
- return (0);
-}
-
-/* utility functions */
-void
-debug_led(int led, int mode)
-{
-#if !defined(CONFIG_ZUMA_V2) && !defined(CONFIG_P3G4)
- volatile int *addr = NULL;
- int dummy;
-
- if (mode == 1) {
- switch (led) {
- case 0:
- addr = (int *)((unsigned int)CFG_DEV1_SPACE | 0x08000);
- break;
-
- case 1:
- addr = (int *)((unsigned int)CFG_DEV1_SPACE | 0x0c000);
- break;
-
- case 2:
- addr = (int *)((unsigned int)CFG_DEV1_SPACE | 0x10000);
- break;
- }
- } else if (mode == 0) {
- switch (led) {
- case 0:
- addr = (int *)((unsigned int)CFG_DEV1_SPACE | 0x14000);
- break;
-
- case 1:
- addr = (int *)((unsigned int)CFG_DEV1_SPACE | 0x18000);
- break;
-
- case 2:
- addr = (int *)((unsigned int)CFG_DEV1_SPACE | 0x1c000);
- break;
- }
- }
- WRITE_CHAR(addr, 0);
- dummy = *addr;
-#endif /* CONFIG_ZUMA_V2 */
-}
-
-void
-display_mem_map(void)
-{
- int i,j;
- unsigned int base,size,width;
- /* SDRAM */
- printf("SDRAM\n");
- for(i=0;i<=BANK3;i++) {
- base = memoryGetBankBaseAddress(i);
- size = memoryGetBankSize(i);
- if(size !=0)
- {
- printf("BANK%d: base - 0x%08x\tsize - %dM bytes\n",i,base,size>>20);
- }
- }
-
- /* CPU's PCI windows */
- for(i=0;i<=PCI_HOST1;i++) {
- printf("\nCPU's PCI %d windows\n", i);
- base=pciGetSpaceBase(i,PCI_IO);
- size=pciGetSpaceSize(i,PCI_IO);
- printf(" IO: base - 0x%08x\tsize - %dM bytes\n",base,size>>20);
- for(j=0;j<=PCI_REGION3;j++) {
- base = pciGetSpaceBase(i,j);
- size = pciGetSpaceSize(i,j);
- printf("MEMORY %d: base - 0x%08x\tsize - %dM bytes\n",j,base,
- size>>20);
- }
- }
-
- /* Devices */
- printf("\nDEVICES\n");
- for(i=0;i<=DEVICE3;i++) {
- base = memoryGetDeviceBaseAddress(i);
- size = memoryGetDeviceSize(i);
- width= memoryGetDeviceWidth(i) * 8;
- printf("DEV %d: base - 0x%08x\tsize - %dM bytes\twidth - %d bits\n",
- i, base, size>>20, width);
- }
-
- /* Bootrom */
- base = memoryGetDeviceBaseAddress(BOOT_DEVICE); /* Boot */
- size = memoryGetDeviceSize(BOOT_DEVICE);
- width= memoryGetDeviceWidth(BOOT_DEVICE) * 8;
- printf(" BOOT: base - 0x%08x\tsize - %dM bytes\twidth - %d bits\n",
- base, size>>20, width);
-}
diff --git a/board/evb64260/flash.c b/board/evb64260/flash.c
deleted file mode 100644
index 6ab23dce2f..0000000000
--- a/board/evb64260/flash.c
+++ /dev/null
@@ -1,854 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@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
- */
-
-/*
- * flash.c - flash support for the 512k, 8bit boot flash on the GEVB
- * most of this file was based on the existing U-Boot
- * flash drivers.
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include <galileo/gt64260R.h>
-#include <galileo/memory.h>
-#include "intel_flash.h"
-
-#define FLASH_ROM 0xFFFD /* unknown flash type */
-#define FLASH_RAM 0xFFFE /* unknown flash type */
-#define FLASH_MAN_UNKNOWN 0xFFFF0000
-
-/* #define DEBUG */
-/* #define FLASH_ID_OVERRIDE */ /* Hack to set type to 040B if ROM emulator is installed.
- * Can be used to program a ROM in circuit if a programmer
- * is not available by swapping the rom out. */
-
-/* Intel flash commands */
-int flash_erase_intel(flash_info_t *info, int s_first, int s_last);
-int write_word_intel(bank_addr_t addr, bank_word_t value);
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (int portwidth, vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-static flash_info_t *flash_get_info(ulong base);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long
-flash_init (void)
-{
- unsigned int i;
- unsigned long size_b0 = 0, size_b1 = 0;
- unsigned long base, flash_size;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* the boot flash */
- base = CFG_FLASH_BASE;
-#ifndef CFG_BOOT_FLASH_WIDTH
-#define CFG_BOOT_FLASH_WIDTH 1
-#endif
- size_b0 = flash_get_size(CFG_BOOT_FLASH_WIDTH, (vu_long *)base,
- &flash_info[0]);
-
-#ifndef CONFIG_P3G4
- printf("[");
- print_size (size_b0, "");
- printf("@%08lX] ", base);
-#endif
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH at %08lx: Size = 0x%08lx = %ld MB\n",
- base, size_b0, size_b0<<20);
- }
-
- base = memoryGetDeviceBaseAddress(CFG_EXTRA_FLASH_DEVICE);
- for(i=1;i<CFG_MAX_FLASH_BANKS;i++) {
- unsigned long size = flash_get_size(CFG_EXTRA_FLASH_WIDTH, (vu_long *)base, &flash_info[i]);
-
-#ifndef CONFIG_P3G4
- printf("[");
- print_size (size, "");
- printf("@%08lX] ", base);
-#endif
-
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- if(i==1) {
- printf ("## Unknown FLASH at %08lx: Size = 0x%08lx = %ld MB\n",
- base, size_b1, size_b1<<20);
- }
- break;
- }
- size_b1+=size;
- base+=size;
- }
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- flash_get_info(CFG_MONITOR_BASE));
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- flash_get_info(CFG_ENV_ADDR));
-#endif
-
- flash_size = size_b0 + size_b1;
- return flash_size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void
-flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
- int sector_size;
-
- if(!info->sector_count) return;
-
- /* set up sector start address table */
- switch(info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- case FLASH_28F128J3A:
- case FLASH_28F640J3A:
- case FLASH_RAM:
- /* this chip has uniformly spaced sectors */
- sector_size=info->size/info->sector_count;
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * sector_size);
- break;
- default:
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static flash_info_t *flash_get_info(ulong base)
-{
- int i;
- flash_info_t * info;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i ++) {
- info = & flash_info[i];
- if (info->start[0] <= base && base <= info->start[0] + info->size - 1)
- break;
- }
-
- return i == CFG_MAX_FLASH_BANKS ? 0 : info;
-}
-
-/*-----------------------------------------------------------------------
- */
-void
-flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- printf ("AM29LV040B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400B:
- printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T:
- printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B:
- printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T:
- printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B:
- printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T:
- printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B:
- printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_28F640J3A:
- printf ("28F640J3A (64 Mbit)\n");
- break;
- case FLASH_28F128J3A:
- printf ("28F128J3A (128 Mbit)\n");
- break;
- case FLASH_ROM:
- printf ("ROM\n");
- break;
- case FLASH_RAM:
- printf ("RAM\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- puts (" Size: ");
- print_size (info->size, "");
- printf (" in %d Sectors\n", info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static inline void flash_cmd(int width, volatile unsigned char *addr, int offset, unsigned char cmd)
-{
- /* supports 1x8, 1x16, and 2x16 */
- /* 2x8 and 4x8 are not supported */
- if(width==4) {
- /* assuming chips are in 16 bit mode */
- /* 2x16 */
- unsigned long cmd32=(cmd<<16)|cmd;
- *(volatile unsigned long *)(addr+offset*2)=cmd32;
- } else if (width == 2) {
- /* 1x16 */
- *(volatile unsigned short *)((unsigned short*)addr+offset)=cmd;
- } else {
- /* 1x8 */
- *(volatile unsigned char *)(addr+offset)=cmd;
- }
-}
-
-static ulong
-flash_get_size (int portwidth, vu_long *addr, flash_info_t *info)
-{
- short i;
- volatile unsigned char *caddr = (unsigned char *)addr;
- volatile unsigned short *saddr = (unsigned short *)addr;
- volatile unsigned long *laddr = (unsigned long *)addr;
- char old[2], save;
- ulong id, manu, base = (ulong)addr;
-
- info->portwidth=portwidth;
-
- save = *caddr;
-
- flash_cmd(portwidth,caddr,0,0xf0);
- flash_cmd(portwidth,caddr,0,0xf0);
-
- udelay(10);
-
- old[0] = caddr[0];
- old[1] = caddr[1];
-
-
- if(old[0]!=0xf0) {
- flash_cmd(portwidth,caddr,0,0xf0);
- flash_cmd(portwidth,caddr,0,0xf0);
-
- udelay(10);
-
- if(*caddr==0xf0) {
- /* this area is ROM */
- *caddr=save;
-#ifndef FLASH_ID_OVERRIDE
- info->flash_id = FLASH_ROM + FLASH_MAN_UNKNOWN;
- info->sector_count = 8;
- info->size = 0x80000;
-#else
- info->flash_id = FLASH_MAN_AMD + FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x80000;
- info->chipwidth=1;
-#endif
- flash_get_offsets(base, info);
- return info->size;
- }
- } else {
- *caddr=0;
-
- udelay(10);
-
- if(*caddr==0) {
- /* this area is RAM */
- *caddr=save;
- info->flash_id = FLASH_RAM + FLASH_MAN_UNKNOWN;
- info->sector_count = 8;
- info->size = 0x80000;
- flash_get_offsets(base, info);
- return info->size;
- }
- flash_cmd(portwidth,caddr,0,0xf0);
-
- udelay(10);
- }
-
- /* Write auto select command: read Manufacturer ID */
- flash_cmd(portwidth,caddr,0x555,0xAA);
- flash_cmd(portwidth,caddr,0x2AA,0x55);
- flash_cmd(portwidth,caddr,0x555,0x90);
-
- udelay(10);
-
- if ((caddr[0] == old[0]) &&
- (caddr[1] == old[1])) {
-
- /* this area is ROM */
-#ifndef FLASH_ID_OVERRIDE
- info->flash_id = FLASH_ROM + FLASH_MAN_UNKNOWN;
- info->sector_count = 8;
- info->size = 0x80000;
-#else
- info->flash_id = FLASH_MAN_AMD + FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x80000;
- info->chipwidth=1;
-#endif
- flash_get_offsets(base, info);
- return info->size;
-#ifdef DEBUG
- } else {
- printf("%px%d: %02x:%02x -> %02x:%02x\n",
- caddr, portwidth, old[0], old[1],
- caddr[0], caddr[1]);
-#endif
- }
-
- switch(portwidth) {
- case 1:
- manu = caddr[0];
- manu |= manu<<16;
- id = caddr[1];
- break;
- case 2:
- manu = saddr[0];
- manu |= manu<<16;
- id = saddr[1];
- id |= id<<16;
- break;
- case 4:
- manu = laddr[0];
- id = laddr[1];
- break;
- default:
- id = manu = -1;
- break;
- }
-
-#ifdef DEBUG
- printf("\n%08lx:%08lx:%08lx\n", base, manu, id);
- printf("%08lx %08lx %08lx %08lx\n",
- laddr[0],laddr[1],laddr[2],laddr[3]);
-#endif
-
- switch (manu) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- printf("Unknown Mfr [%08lx]:%08lx\n", manu, id);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- switch (id) {
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- info->chipwidth=1;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- info->chipwidth=1;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- info->chipwidth=1;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- info->chipwidth=1;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- info->chipwidth=1;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- info->chipwidth=1;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- case AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x80000;
- info->chipwidth=1;
- break;
-
- case INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 128*1024 * 64; /* 128kbytes x 64 blocks */
- info->chipwidth=2;
- if(portwidth==4) info->size*=2; /* 2x16 */
- break;
-
- case INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 128*1024 * 128; /* 128kbytes x 128 blocks */
- info->chipwidth=2;
- if(portwidth==4) info->size*=2; /* 2x16 */
- break;
-
- default:
- printf("Unknown id %lx:[%lx]\n", manu, id);
- info->flash_id = FLASH_UNKNOWN;
- info->chipwidth=1;
- return (0); /* => no or unknown flash */
-
- }
-
- flash_get_offsets(base, info);
-
-#if 0
- /* set up sector start address table */
- if (info->flash_id & FLASH_AM040) {
- /* this chip has uniformly spaced sectors */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
-
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-#endif
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0)=0x02 */
- /* D0 = 1 if protected */
- caddr = (volatile unsigned char *)(info->start[i]);
- saddr = (volatile unsigned short *)(info->start[i]);
- laddr = (volatile unsigned long *)(info->start[i]);
- if(portwidth==1)
- info->protect[i] = caddr[2] & 1;
- else if(portwidth==2)
- info->protect[i] = saddr[2] & 1;
- else
- info->protect[i] = laddr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- caddr = (volatile unsigned char *)info->start[0];
-
- flash_cmd(portwidth,caddr,0,0xF0); /* reset bank */
- }
-
- return (info->size);
-}
-
-/* TODO: 2x16 unsupported */
-int
-flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile unsigned char *addr = (uchar *)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- /* TODO: 2x16 unsupported */
- if(info->portwidth==4) return 1;
-
- if((info->flash_id & FLASH_TYPEMASK) == FLASH_ROM) return 1;
- if((info->flash_id & FLASH_TYPEMASK) == FLASH_RAM) {
- for (sect = s_first; sect<=s_last; sect++) {
- int sector_size=info->size/info->sector_count;
- addr = (uchar *)(info->start[sect]);
- memset((void *)addr, 0, sector_size);
- }
- return 0;
- }
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id&FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- return flash_erase_intel(info,
- (unsigned short)s_first,
- (unsigned short)s_last);
- }
-
-#if 0
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-#endif
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- flash_cmd(info->portwidth,addr,0x555,0xAA);
- flash_cmd(info->portwidth,addr,0x2AA,0x55);
- flash_cmd(info->portwidth,addr,0x555,0x80);
- flash_cmd(info->portwidth,addr,0x555,0xAA);
- flash_cmd(info->portwidth,addr,0x2AA,0x55);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (uchar *)(info->start[sect]);
- flash_cmd(info->portwidth,addr,0,0x30);
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (volatile unsigned char *)(info->start[l_sect]);
- /* broken for 2x16: TODO */
- while ((addr[0] & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned char *)info->start[0];
- flash_cmd(info->portwidth,addr,0,0xf0);
- flash_cmd(info->portwidth,addr,0,0xf0);
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-/* broken for 2x16: TODO */
-int
-write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- if(info->portwidth==4) return 1;
-
- if((info->flash_id & FLASH_TYPEMASK) == FLASH_ROM) return 0;
- if((info->flash_id & FLASH_TYPEMASK) == FLASH_RAM) {
- memcpy((void *)addr, src, cnt);
- return 0;
- }
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-/* broken for 2x16: TODO */
-static int
-write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile unsigned char *addr = (uchar *)(info->start[0]);
- ulong start;
- int flag, i;
-
- if(info->portwidth==4) return 1;
-
- if((info->flash_id & FLASH_TYPEMASK) == FLASH_ROM) return 1;
- if((info->flash_id & FLASH_TYPEMASK) == FLASH_RAM) {
- *(unsigned long *)dest=data;
- return 0;
- }
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- unsigned short low = data & 0xffff;
- unsigned short hi = (data >> 16) & 0xffff;
- int ret = write_word_intel((bank_addr_t)dest, hi);
-
- if (!ret) ret = write_word_intel((bank_addr_t)(dest+2), low);
-
- return ret;
- }
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* first, perform an unlock bypass command to speed up flash writes */
- addr[0x555] = 0xAA;
- addr[0x2AA] = 0x55;
- addr[0x555] = 0x20;
-
- /* write each byte out */
- for (i = 0; i < 4; i++) {
- char *data_ch = (char *)&data;
- addr[0] = 0xA0;
- *(((char *)dest)+i) = data_ch[i];
- udelay(10); /* XXX */
- }
-
- /* we're done, now do an unlock bypass reset */
- addr[0] = 0x90;
- addr[0] = 0x00;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/evb64260/i2c.c b/board/evb64260/i2c.c
deleted file mode 100644
index c62b64729c..0000000000
--- a/board/evb64260/i2c.c
+++ /dev/null
@@ -1,315 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <malloc.h>
-#include <galileo/gt64260R.h>
-#include <galileo/core.h>
-
-#define MAX_I2C_RETRYS 10
-#define I2C_DELAY 1000 /* Should be at least the # of MHz of Tclk */
-#undef DEBUG_I2C
-
-#ifdef DEBUG_I2C
-#define DP(x) x
-#else
-#define DP(x)
-#endif
-
-/* Assuming that there is only one master on the bus (us) */
-
-static void
-i2c_init(int speed, int slaveaddr)
-{
- unsigned int n, m, freq, margin, power;
- unsigned int actualFreq, actualN=0, actualM=0;
- unsigned int control, status;
- unsigned int minMargin = 0xffffffff;
- unsigned int tclk = 125000000;
-
- DP(puts("i2c_init\n"));
-
- for(n = 0 ; n < 8 ; n++)
- {
- for(m = 0 ; m < 16 ; m++)
- {
- power = 2<<n; /* power = 2^(n+1) */
- freq = tclk/(10*(m+1)*power);
- if (speed > freq)
- margin = speed - freq;
- else
- margin = freq - speed;
- if(margin < minMargin)
- {
- minMargin = margin;
- actualFreq = freq;
- actualN = n;
- actualM = m;
- }
- }
- }
-
- DP(puts("setup i2c bus\n"));
-
- /* Setup bus */
-
- GT_REG_WRITE(I2C_SOFT_RESET, 0);
-
- DP(puts("udelay...\n"));
-
- udelay(I2C_DELAY);
-
- DP(puts("set baudrate\n"));
-
- GT_REG_WRITE(I2C_STATUS_BAUDE_RATE, (actualM << 3) | actualN);
- GT_REG_WRITE(I2C_CONTROL, (0x1 << 2) | (0x1 << 6));
-
- udelay(I2C_DELAY * 10);
-
- DP(puts("read control, baudrate\n"));
-
- GT_REG_READ(I2C_STATUS_BAUDE_RATE, &status);
- GT_REG_READ(I2C_CONTROL, &control);
-}
-
-static uchar
-i2c_start(void)
-{
- unsigned int control, status;
- int count = 0;
-
- DP(puts("i2c_start\n"));
-
- /* Set the start bit */
-
- GT_REG_READ(I2C_CONTROL, &control);
- control |= (0x1 << 5);
- GT_REG_WRITE(I2C_CONTROL, control);
-
- GT_REG_READ(I2C_STATUS_BAUDE_RATE, &status);
-
- count = 0;
- while ((status & 0xff) != 0x08) {
- udelay(I2C_DELAY);
- if (count > 20) {
- GT_REG_WRITE(I2C_CONTROL, (0x1 << 4)); /*stop*/
- return (status);
- }
- GT_REG_READ(I2C_STATUS_BAUDE_RATE, &status);
- count++;
- }
-
- return (0);
-}
-
-static uchar
-i2c_select_device(uchar dev_addr, uchar read, int ten_bit)
-{
- unsigned int status, data, bits = 7;
- int count = 0;
-
- DP(puts("i2c_select_device\n"));
-
- /* Output slave address */
-
- if (ten_bit) {
- bits = 10;
- }
-
- data = (dev_addr << 1);
- /* set the read bit */
- data |= read;
- GT_REG_WRITE(I2C_DATA, data);
- /* assert the address */
- RESET_REG_BITS(I2C_CONTROL, BIT3);
-
- udelay(I2C_DELAY);
-
- GT_REG_READ(I2C_STATUS_BAUDE_RATE, &status);
- count = 0;
- while (((status & 0xff) != 0x40) && ((status & 0xff) != 0x18)) {
- udelay(I2C_DELAY);
- if (count > 20) {
- GT_REG_WRITE(I2C_CONTROL, (0x1 << 4)); /*stop*/
- return(status);
- }
- GT_REG_READ(I2C_STATUS_BAUDE_RATE, &status);
- count++;
- }
-
- if (bits == 10) {
- printf("10 bit I2C addressing not yet implemented\n");
- return (0xff);
- }
-
- return (0);
-}
-
-static uchar
-i2c_get_data(uchar* return_data, int len) {
-
- unsigned int data, status = 0;
- int count = 0;
-
- DP(puts("i2c_get_data\n"));
-
- while (len) {
-
- /* Get and return the data */
-
- RESET_REG_BITS(I2C_CONTROL, (0x1 << 3));
-
- udelay(I2C_DELAY * 5);
-
- GT_REG_READ(I2C_STATUS_BAUDE_RATE, &status);
- count++;
- while ((status & 0xff) != 0x50) {
- udelay(I2C_DELAY);
- if(count > 2) {
- GT_REG_WRITE(I2C_CONTROL, (0x1 << 4)); /*stop*/
- return 0;
- }
- GT_REG_READ(I2C_STATUS_BAUDE_RATE, &status);
- count++;
- }
- GT_REG_READ(I2C_DATA, &data);
- len--;
- *return_data = (uchar)data;
- return_data++;
- }
- RESET_REG_BITS(I2C_CONTROL, BIT2|BIT3);
- while ((status & 0xff) != 0x58) {
- udelay(I2C_DELAY);
- if(count > 200) {
- GT_REG_WRITE(I2C_CONTROL, (0x1 << 4)); /*stop*/
- return (status);
- }
- GT_REG_READ(I2C_STATUS_BAUDE_RATE, &status);
- count++;
- }
- GT_REG_WRITE(I2C_CONTROL, (0x1 << 4)); /* stop */
-
- return (0);
-}
-
-static uchar
-i2c_write_data(unsigned int data, int len)
-{
- unsigned int status;
- int count = 0;
-
- DP(puts("i2c_write_data\n"));
-
- if (len > 4)
- return -1;
-
- while (len) {
- /* Set and assert the data */
-
- GT_REG_WRITE(I2C_DATA, (unsigned int)data);
- RESET_REG_BITS(I2C_CONTROL, (0x1 << 3));
-
- udelay(I2C_DELAY);
-
- GT_REG_READ(I2C_STATUS_BAUDE_RATE, &status);
- count++;
- while ((status & 0xff) != 0x28) {
- udelay(I2C_DELAY);
- if(count > 20) {
- GT_REG_WRITE(I2C_CONTROL, (0x1 << 4)); /*stop*/
- return (status);
- }
- GT_REG_READ(I2C_STATUS_BAUDE_RATE, &status);
- count++;
- }
- len--;
- }
- GT_REG_WRITE(I2C_CONTROL, (0x1 << 3) | (0x1 << 4));
- GT_REG_WRITE(I2C_CONTROL, (0x1 << 4));
-
- udelay(I2C_DELAY * 10);
-
- return (0);
-}
-
-static uchar
-i2c_set_dev_offset(uchar dev_addr, unsigned int offset, int ten_bit)
-{
- uchar status;
-
- DP(puts("i2c_set_dev_offset\n"));
-
- status = i2c_select_device(dev_addr, 0, ten_bit);
- if (status) {
-#ifdef DEBUG_I2C
- printf("Failed to select device setting offset: 0x%02x\n",
- status);
-#endif
- return status;
- }
-
- status = i2c_write_data(offset, 1);
- if (status) {
-#ifdef DEBUG_I2C
- printf("Failed to write data: 0x%02x\n", status);
-#endif
- return status;
- }
-
- return (0);
-}
-
-uchar
-i2c_read(uchar dev_addr, unsigned int offset, int len, uchar* data,
- int ten_bit)
-{
- uchar status = 0;
- unsigned int i2cFreq = 400000;
-
- DP(puts("i2c_read\n"));
-
- i2c_init(i2cFreq,0);
-
- status = i2c_start();
-
- if (status) {
-#ifdef DEBUG_I2C
- printf("Transaction start failed: 0x%02x\n", status);
-#endif
- return status;
- }
-
- status = i2c_set_dev_offset(dev_addr, 0, 0);
- if (status) {
-#ifdef DEBUG_I2C
- printf("Failed to set offset: 0x%02x\n", status);
-#endif
- return status;
- }
-
- i2c_init(i2cFreq,0);
-
- status = i2c_start();
- if (status) {
-#ifdef DEBUG_I2C
- printf("Transaction restart failed: 0x%02x\n", status);
-#endif
- return status;
- }
-
- status = i2c_select_device(dev_addr, 1, ten_bit);
- if (status) {
-#ifdef DEBUG_I2C
- printf("Address not acknowledged: 0x%02x\n", status);
-#endif
- return status;
- }
-
- status = i2c_get_data(data, len);
- if (status) {
-#ifdef DEBUG_I2C
- printf("Data not recieved: 0x%02x\n", status);
-#endif
- return status;
- }
-
- return 0;
-}
diff --git a/board/evb64260/i2c.h b/board/evb64260/i2c.h
deleted file mode 100644
index 9c21992524..0000000000
--- a/board/evb64260/i2c.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef __I2C_H__
-#define __I2C_H__
-
-/* function declarations */
-uchar i2c_read(uchar, unsigned int, int, uchar*, int);
-
-#endif
diff --git a/board/evb64260/intel_flash.c b/board/evb64260/intel_flash.c
deleted file mode 100644
index ed6a2a0292..0000000000
--- a/board/evb64260/intel_flash.c
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * (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
- *
- * Hacked for the Hymod board by Murray.Jensen@cmst.csiro.au, 20-Oct-00
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include <galileo/gt64260R.h>
-#include <galileo/memory.h>
-#include "intel_flash.h"
-
-
-/*-----------------------------------------------------------------------
- * Protection Flags:
- */
-#define FLAG_PROTECT_SET 0x01
-#define FLAG_PROTECT_CLEAR 0x02
-
-static void
-bank_reset(flash_info_t *info, int sect)
-{
- bank_addr_t addrw, eaddrw;
-
- addrw = (bank_addr_t)info->start[sect];
- eaddrw = BANK_ADDR_NEXT_WORD(addrw);
-
- while (addrw < eaddrw) {
-#ifdef FLASH_DEBUG
- printf(" writing reset cmd to addr 0x%08lx\n",
- (unsigned long)addrw);
-#endif
- *addrw = BANK_CMD_RST;
- addrw++;
- }
-}
-
-static void
-bank_erase_init(flash_info_t *info, int sect)
-{
- bank_addr_t addrw, saddrw, eaddrw;
- int flag;
-
-#ifdef FLASH_DEBUG
- printf("0x%08x BANK_CMD_PROG\n", BANK_CMD_PROG);
- printf("0x%08x BANK_CMD_ERASE1\n", BANK_CMD_ERASE1);
- printf("0x%08x BANK_CMD_ERASE2\n", BANK_CMD_ERASE2);
- printf("0x%08x BANK_CMD_CLR_STAT\n", BANK_CMD_CLR_STAT);
- printf("0x%08x BANK_CMD_RST\n", BANK_CMD_RST);
- printf("0x%08x BANK_STAT_RDY\n", BANK_STAT_RDY);
- printf("0x%08x BANK_STAT_ERR\n", BANK_STAT_ERR);
-#endif
-
- saddrw = (bank_addr_t)info->start[sect];
- eaddrw = BANK_ADDR_NEXT_WORD(saddrw);
-
-#ifdef FLASH_DEBUG
- printf("erasing sector %d, start addr = 0x%08lx "
- "(bank next word addr = 0x%08lx)\n", sect,
- (unsigned long)saddrw, (unsigned long)eaddrw);
-#endif
-
- /* Disable intrs which might cause a timeout here */
- flag = disable_interrupts();
-
- for (addrw = saddrw; addrw < eaddrw; addrw++) {
-#ifdef FLASH_DEBUG
- printf(" writing erase cmd to addr 0x%08lx\n",
- (unsigned long)addrw);
-#endif
- *addrw = BANK_CMD_ERASE1;
- *addrw = BANK_CMD_ERASE2;
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-}
-
-static int
-bank_erase_poll(flash_info_t *info, int sect)
-{
- bank_addr_t addrw, saddrw, eaddrw;
- int sectdone, haderr;
-
- saddrw = (bank_addr_t)info->start[sect];
- eaddrw = BANK_ADDR_NEXT_WORD(saddrw);
-
- sectdone = 1;
- haderr = 0;
-
- for (addrw = saddrw; addrw < eaddrw; addrw++) {
- bank_word_t stat = *addrw;
-
-#ifdef FLASH_DEBUG
- printf(" checking status at addr "
- "0x%08x [0x%08x]\n",
- (unsigned long)addrw, stat);
-#endif
- if ((stat & BANK_STAT_RDY) != BANK_STAT_RDY)
- sectdone = 0;
- else if ((stat & BANK_STAT_ERR) != 0) {
- printf(" failed on sector %d "
- "(stat = 0x%08x) at "
- "address 0x%p\n",
- sect, stat, addrw);
- *addrw = BANK_CMD_CLR_STAT;
- haderr = 1;
- }
- }
-
- if (haderr)
- return (-1);
- else
- return (sectdone);
-}
-
-int
-write_word_intel(bank_addr_t addr, bank_word_t value)
-{
- bank_word_t stat;
- ulong start;
- int flag, retval;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = BANK_CMD_PROG;
-
- *addr = value;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- retval = 0;
-
- /* data polling for D7 */
- start = get_timer (0);
- do {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- retval = 1;
- goto done;
- }
- stat = *addr;
- } while ((stat & BANK_STAT_RDY) != BANK_STAT_RDY);
-
- if ((stat & BANK_STAT_ERR) != 0) {
- printf("flash program failed (stat = 0x%08lx) "
- "at address 0x%08lx\n", (ulong)stat, (ulong)addr);
- *addr = BANK_CMD_CLR_STAT;
- retval = 3;
- }
-
-done:
- /* reset to read mode */
- *addr = BANK_CMD_RST;
-
- return (retval);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int
-flash_erase_intel(flash_info_t *info, int s_first, int s_last)
-{
- int prot, sect, haderr;
- ulong start, now, last;
-
-#ifdef FLASH_DEBUG
- printf("\nflash_erase: erase %d sectors (%d to %d incl.) from\n"
- " Bank # %d: ", s_last - s_first + 1, s_first, s_last,
- (info - flash_info) + 1);
- flash_print_info(info);
-#endif
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf("- Warning: %d protected sector%s will not be erased!\n",
- prot, (prot > 1 ? "s" : ""));
- }
-
- start = get_timer (0);
- last = 0;
- haderr = 0;
-
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- ulong estart;
- int sectdone;
-
- bank_erase_init(info, sect);
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- estart = get_timer(start);
-
- do {
- now = get_timer(start);
-
- if (now - estart > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout (sect %d)\n", sect);
- haderr = 1;
- break;
- }
-
-#ifndef FLASH_DEBUG
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
-#endif
-
- sectdone = bank_erase_poll(info, sect);
-
- if (sectdone < 0) {
- haderr = 1;
- break;
- }
-
- } while (!sectdone);
-
- if (haderr)
- break;
- }
- }
-
- if (haderr > 0)
- printf (" failed\n");
- else
- printf (" done\n");
-
- /* reset to read mode */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- bank_reset(info, sect);
- }
- }
- return haderr;
-}
diff --git a/board/evb64260/intel_flash.h b/board/evb64260/intel_flash.h
deleted file mode 100644
index dc2aa0008e..0000000000
--- a/board/evb64260/intel_flash.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/*************** DEFINES for Intel StrataFlash FLASH chip ********************/
-
-/*
- * acceptable chips types are:
- *
- * 28F320J5, 28F640J5, 28F320J3A, 28F640J3A and 28F128J3A
- */
-
-/* register addresses, valid only following an CHIP_CMD_RD_ID command */
-#define CHIP_ADDR_REG_MAN 0x000000 /* manufacturer's id */
-#define CHIP_ADDR_REG_DEV 0x000001 /* device id */
-#define CHIP_ADDR_REG_CFGM 0x000003 /* master lock config */
-#define CHIP_ADDR_REG_CFG(b) (((b)<<16)|2) /* lock config for block b */
-
-/* Commands */
-#define CHIP_CMD_RST 0xFF /* reset flash */
-#define CHIP_CMD_RD_ID 0x90 /* read the id and lock bits */
-#define CHIP_CMD_RD_QUERY 0x98 /* read device capabilities */
-#define CHIP_CMD_RD_STAT 0x70 /* read the status register */
-#define CHIP_CMD_CLR_STAT 0x50 /* clear the staus register */
-#define CHIP_CMD_WR_BUF 0xE8 /* clear the staus register */
-#define CHIP_CMD_PROG 0x40 /* program word command */
-#define CHIP_CMD_ERASE1 0x20 /* 1st word for block erase */
-#define CHIP_CMD_ERASE2 0xD0 /* 2nd word for block erase */
-#define CHIP_CMD_ERASE_SUSP 0xB0 /* suspend block erase */
-#define CHIP_CMD_LOCK 0x60 /* 1st word for all lock cmds */
-#define CHIP_CMD_SET_LOCK_BLK 0x01 /* 2nd wrd set block lock bit */
-#define CHIP_CMD_SET_LOCK_MSTR 0xF1 /* 2nd wrd set master lck bit */
-#define CHIP_CMD_CLR_LOCK_BLK 0xD0 /* 2nd wrd clear blk lck bit */
-
-/* status register bits */
-#define CHIP_STAT_DPS 0x02 /* Device Protect Status */
-#define CHIP_STAT_VPPS 0x08 /* VPP Status */
-#define CHIP_STAT_PSLBS 0x10 /* Program+Set Lock Bit Stat */
-#define CHIP_STAT_ECLBS 0x20 /* Erase+Clr Lock Bit Stat */
-#define CHIP_STAT_ESS 0x40 /* Erase Suspend Status */
-#define CHIP_STAT_RDY 0x80 /* WSM Mach Status, 1=rdy */
-
-#define CHIP_STAT_ERR (CHIP_STAT_VPPS | CHIP_STAT_DPS | \
- CHIP_STAT_ECLBS | CHIP_STAT_PSLBS)
-
-/* ID and Lock Configuration */
-#define CHIP_RD_ID_LOCK 0x01 /* Bit 0 of each byte */
-#define CHIP_RD_ID_MAN 0x89 /* Manufacturer code = 0x89 */
-#define CHIP_RD_ID_DEV CFG_FLASH_ID
-
-/* dimensions */
-#define CHIP_WIDTH 2 /* chips are in 16 bit mode */
-#define CHIP_WSHIFT 1 /* (log2 of CHIP_WIDTH) */
-#define CHIP_NBLOCKS 128
-#define CHIP_BLKSZ (128 * 1024) /* of 128Kbytes each */
-#define CHIP_SIZE (CHIP_BLKSZ * CHIP_NBLOCKS)
-
-/********************** DEFINES for Hymod Flash ******************************/
-
-/*
- * The hymod board has 2 x 28F320J5 chips running in
- * 16 bit mode, for a 32 bit wide bank.
- */
-
-typedef unsigned short bank_word_t; /* 8/16/32/64bit unsigned int */
-typedef volatile bank_word_t *bank_addr_t;
-typedef unsigned long bank_size_t; /* want this big - >= 32 bit */
-
-#define BANK_CHIP_WIDTH 1 /* each bank is 1 chip wide */
-#define BANK_CHIP_WSHIFT 0 /* (log2 of BANK_CHIP_WIDTH) */
-
-#define BANK_WIDTH (CHIP_WIDTH * BANK_CHIP_WIDTH)
-#define BANK_WSHIFT (CHIP_WSHIFT + BANK_CHIP_WSHIFT)
-#define BANK_NBLOCKS CHIP_NBLOCKS
-#define BANK_BLKSZ (CHIP_BLKSZ * BANK_CHIP_WIDTH)
-#define BANK_SIZE (CHIP_SIZE * BANK_CHIP_WIDTH)
-
-#define MAX_BANKS 1 /* only one bank possible */
-
-/* align bank addresses and sizes to bank word boundaries */
-#define BANK_ADDR_WORD_ALIGN(a) ((bank_addr_t)((bank_size_t)(a) \
- & ~(BANK_WIDTH - 1)))
-#define BANK_SIZE_WORD_ALIGN(s) ((bank_size_t)BANK_ADDR_WORD_ALIGN( \
- (bank_size_t)(s) + (BANK_WIDTH - 1)))
-
-/* align bank addresses and sizes to bank block boundaries */
-#define BANK_ADDR_BLK_ALIGN(a) ((bank_addr_t)((bank_size_t)(a) \
- & ~(BANK_BLKSZ - 1)))
-#define BANK_SIZE_BLK_ALIGN(s) ((bank_size_t)BANK_ADDR_BLK_ALIGN( \
- (bank_size_t)(s) + (BANK_BLKSZ - 1)))
-
-/* align bank addresses and sizes to bank boundaries */
-#define BANK_ADDR_BANK_ALIGN(a) ((bank_addr_t)((bank_size_t)(a) \
- & ~(BANK_SIZE - 1)))
-#define BANK_SIZE_BANK_ALIGN(s) ((bank_size_t)BANK_ADDR_BANK_ALIGN( \
- (bank_size_t)(s) + (BANK_SIZE - 1)))
-
-/* add an offset to a bank address */
-#define BANK_ADDR_OFFSET(a, o) (bank_addr_t)((bank_size_t)(a) + \
- (bank_size_t)(o))
-
-/* get base address of bank b, given flash base address a */
-#define BANK_ADDR_BASE(a, b) BANK_ADDR_OFFSET(BANK_ADDR_BANK_ALIGN(a), \
- (bank_size_t)(b) * BANK_SIZE)
-
-/* adjust a bank address to start of next word, block or bank */
-#define BANK_ADDR_NEXT_WORD(a) BANK_ADDR_OFFSET(BANK_ADDR_WORD_ALIGN(a), \
- BANK_WIDTH)
-#define BANK_ADDR_NEXT_BLK(a) BANK_ADDR_OFFSET(BANK_ADDR_BLK_ALIGN(a), \
- BANK_BLKSZ)
-#define BANK_ADDR_NEXT_BANK(a) BANK_ADDR_OFFSET(BANK_ADDR_BANK_ALIGN(a), \
- BANK_SIZE)
-
-/* get bank address of chip register r given a bank base address a */
-#define BANK_ADDR_REG(a, r) BANK_ADDR_OFFSET(BANK_ADDR_BANK_ALIGN(a), \
- ((bank_size_t)(r) << BANK_WSHIFT))
-
-/* make a bank address for each chip register address */
-
-#define BANK_ADDR_REG_MAN(a) BANK_ADDR_REG((a), CHIP_ADDR_REG_MAN)
-#define BANK_ADDR_REG_DEV(a) BANK_ADDR_REG((a), CHIP_ADDR_REG_DEV)
-#define BANK_ADDR_REG_CFGM(a) BANK_ADDR_REG((a), CHIP_ADDR_REG_CFGM)
-#define BANK_ADDR_REG_CFG(b,a) BANK_ADDR_REG((a), CHIP_ADDR_REG_CFG(b))
-
-/*
- * replicate a chip cmd/stat/rd value into each byte position within a word
- * so that multiple chips are accessed in a single word i/o operation
- *
- * this must be as wide as the bank_word_t type, and take into account the
- * chip width and bank layout
- */
-
-#define BANK_FILL_WORD(o) ((bank_word_t)(o))
-
-/* make a bank word value for each chip cmd/stat/rd value */
-
-/* Commands */
-#define BANK_CMD_RST BANK_FILL_WORD(CHIP_CMD_RST)
-#define BANK_CMD_RD_ID BANK_FILL_WORD(CHIP_CMD_RD_ID)
-#define BANK_CMD_RD_STAT BANK_FILL_WORD(CHIP_CMD_RD_STAT)
-#define BANK_CMD_CLR_STAT BANK_FILL_WORD(CHIP_CMD_CLR_STAT)
-#define BANK_CMD_ERASE1 BANK_FILL_WORD(CHIP_CMD_ERASE1)
-#define BANK_CMD_ERASE2 BANK_FILL_WORD(CHIP_CMD_ERASE2)
-#define BANK_CMD_PROG BANK_FILL_WORD(CHIP_CMD_PROG)
-#define BANK_CMD_LOCK BANK_FILL_WORD(CHIP_CMD_LOCK)
-#define BANK_CMD_SET_LOCK_BLK BANK_FILL_WORD(CHIP_CMD_SET_LOCK_BLK)
-#define BANK_CMD_SET_LOCK_MSTR BANK_FILL_WORD(CHIP_CMD_SET_LOCK_MSTR)
-#define BANK_CMD_CLR_LOCK_BLK BANK_FILL_WORD(CHIP_CMD_CLR_LOCK_BLK)
-
-/* status register bits */
-#define BANK_STAT_DPS BANK_FILL_WORD(CHIP_STAT_DPS)
-#define BANK_STAT_PSS BANK_FILL_WORD(CHIP_STAT_PSS)
-#define BANK_STAT_VPPS BANK_FILL_WORD(CHIP_STAT_VPPS)
-#define BANK_STAT_PSLBS BANK_FILL_WORD(CHIP_STAT_PSLBS)
-#define BANK_STAT_ECLBS BANK_FILL_WORD(CHIP_STAT_ECLBS)
-#define BANK_STAT_ESS BANK_FILL_WORD(CHIP_STAT_ESS)
-#define BANK_STAT_RDY BANK_FILL_WORD(CHIP_STAT_RDY)
-
-#define BANK_STAT_ERR BANK_FILL_WORD(CHIP_STAT_ERR)
-
-/* ID and Lock Configuration */
-#define BANK_RD_ID_LOCK BANK_FILL_WORD(CHIP_RD_ID_LOCK)
-#define BANK_RD_ID_MAN BANK_FILL_WORD(CHIP_RD_ID_MAN)
-#define BANK_RD_ID_DEV BANK_FILL_WORD(CHIP_RD_ID_DEV)
diff --git a/board/evb64260/local.h b/board/evb64260/local.h
deleted file mode 100644
index 3d9b443e7b..0000000000
--- a/board/evb64260/local.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * include/local.h - local configuration options, board specific
- */
-
-#ifndef __LOCAL_H
-#define __LOCAL_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-/* This tells U-Boot that the config options are compiled in */
-/* #undef ENV_IS_EMBEDDED */
-/* Don't touch this! U-Boot figures this out based on other
- * magic. */
-
-/* Uncomment and define any of the below options */
-
-/* #define CONFIG_750CX */ /* The 750CX doesn't support as many things in L2CR */
- /* Note: If you defined CONFIG_EVB64260_750CX this */
- /* gets defined automatically. */
-
-/* These want string arguments */
-/* #define CONFIG_BOOTARGS */
-/* #define CONFIG_BOOTCOMMAND */
-/* #define CONFIG_RAMBOOTCOMMAND */
-/* #define CONFIG_NFSBOOTCOMMAND */
-/* #define CFG_AUTOLOAD */
-/* #define CONFIG_PREBOOT */
-
-/* These don't */
-
-/* #define CONFIG_BOOTDELAY */
-/* #define CONFIG_BAUDRATE */
-/* #define CONFIG_LOADS_ECHO */
-/* #define CONFIG_ETHADDR */
-/* #define CONFIG_ETH2ADDR */
-/* #define CONFIG_ETH3ADDR */
-/* #define CONFIG_IPADDR */
-/* #define CONFIG_SERVERIP */
-/* #define CONFIG_ROOTPATH */
-/* #define CONFIG_GATEWAYIP */
-/* #define CONFIG_NETMASK */
-/* #define CONFIG_HOSTNAME */
-/* #define CONFIG_BOOTFILE */
-/* #define CONFIG_LOADADDR */
-
-/* these hardware addresses are pretty bogus, please change them to
- suit your needs */
-
-/* first ethernet */
-#define CONFIG_ETHADDR 00:11:22:33:44:55
-
-/* next two ethernet hwaddrs */
-#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:11:22:33:44:66
-#define CONFIG_HAS_ETH2
-#define CONFIG_ETH2ADDR 00:11:22:33:44:77
-
-#define CONFIG_ENV_OVERWRITE
-#endif /* __CONFIG_H */
diff --git a/board/evb64260/memory.c b/board/evb64260/memory.c
deleted file mode 100644
index e339854453..0000000000
--- a/board/evb64260/memory.c
+++ /dev/null
@@ -1,457 +0,0 @@
-/* Memory.c - Memory mappings and remapping functions */
-
-/* Copyright - Galileo technology. */
-
-/* modified by Josh Huber to clean some things up, and
- * fit it into the U-Boot framework */
-
-#include <galileo/core.h>
-#include <galileo/memory.h>
-
-/********************************************************************
-* memoryGetBankBaseAddress - Gets the base address of a memory bank
-* - If the memory bank size is 0 then this base address has no meaning!!!
-*
-*
-* INPUTS: MEMORY_BANK bank - The bank we ask for its base Address.
-* OUTPUT: N/A
-* RETURNS: Memory bank base address.
-*********************************************************************/
-static unsigned long memoryGetBankRegOffset(MEMORY_BANK bank)
-{
- switch (bank)
- {
- case BANK0:
- return SCS_0_LOW_DECODE_ADDRESS;
- case BANK1:
- return SCS_1_LOW_DECODE_ADDRESS;
- case BANK2:
- return SCS_2_LOW_DECODE_ADDRESS;
- case BANK3:
- return SCS_3_LOW_DECODE_ADDRESS;
- }
- return SCS_0_LOW_DECODE_ADDRESS; /* default value */
-}
-
-unsigned int memoryGetBankBaseAddress(MEMORY_BANK bank)
-{
- unsigned int base;
- unsigned int regOffset=memoryGetBankRegOffset(bank);
-
- GT_REG_READ(regOffset,&base);
- base = base << 20;
- return base;
-}
-
-/********************************************************************
-* memoryGetDeviceBaseAddress - Gets the base address of a device.
-* - If the device size is 0 then this base address has no meaning!!!
-*
-*
-* INPUT: DEVICE device - The device we ask for its base address.
-* OUTPUT: N/A
-* RETURNS: Device base address.
-*********************************************************************/
-static unsigned int memoryGetDeviceRegOffset(DEVICE device)
-{
- switch (device)
- {
- case DEVICE0:
- return CS_0_LOW_DECODE_ADDRESS;
- case DEVICE1:
- return CS_1_LOW_DECODE_ADDRESS;
- case DEVICE2:
- return CS_2_LOW_DECODE_ADDRESS;
- case DEVICE3:
- return CS_3_LOW_DECODE_ADDRESS;
- case BOOT_DEVICE:
- return BOOTCS_LOW_DECODE_ADDRESS;
- }
- return CS_0_LOW_DECODE_ADDRESS; /* default value */
-}
-
-unsigned int memoryGetDeviceBaseAddress(DEVICE device)
-{
- unsigned int regBase;
- unsigned int regEnd;
- unsigned int regOffset=memoryGetDeviceRegOffset(device);
-
- GT_REG_READ(regOffset, &regBase);
- GT_REG_READ(regOffset+8, &regEnd);
-
- if(regEnd<=regBase) return 0xffffffff; /* ERROR !!! */
-
- regBase = regBase << 20;
- return regBase;
-}
-
-/********************************************************************
-* memoryGetBankSize - Returns the size of a memory bank.
-*
-*
-* INPUT: MEMORY_BANK bank - The bank we ask for its size.
-* OUTPUT: N/A
-* RETURNS: Memory bank size.
-*********************************************************************/
-unsigned int memoryGetBankSize(MEMORY_BANK bank)
-{
- unsigned int size,base;
- unsigned int highValue;
- unsigned int highAddress=memoryGetBankRegOffset(bank)+8;
-
- base = memoryGetBankBaseAddress(bank);
- GT_REG_READ(highAddress,&highValue);
- highValue = (highValue + 1) << 20;
- if(base > highValue)
- size=0;
- else
- size = highValue - base;
- return size;
-}
-
-/********************************************************************
-* memoryGetDeviceSize - Returns the size of a device memory space
-*
-*
-* INPUT: DEVICE device - The device we ask for its base address.
-* OUTPUT: N/A
-* RETURNS: Size of a device memory space.
-*********************************************************************/
-unsigned int memoryGetDeviceSize(DEVICE device)
-{
- unsigned int size,base;
- unsigned int highValue;
- unsigned int highAddress=memoryGetDeviceRegOffset(device)+8;
-
- base = memoryGetDeviceBaseAddress(device);
- GT_REG_READ(highAddress,&highValue);
- if (highValue == 0xfff)
- {
- size = (~base) + 1; /* what the heck is this? */
- return size;
- }
- else
- highValue = (highValue + 1) << 20;
-
- if(base > highValue)
- size=0;
- else
- size = highValue - base;
- return size;
-}
-
-/********************************************************************
-* memoryGetDeviceWidth - A device can be with: 1,2,4 or 8 Bytes data width.
-* The width is determine in registers: 'Device Parameters'
-* registers (0x45c, 0x460, 0x464, 0x468, 0x46c - for each device.
-* at bits: [21:20].
-*
-* INPUT: DEVICE device - Device number
-* OUTPUT: N/A
-* RETURNS: Device width in Bytes (1,2,4 or 8), 0 if error had occurred.
-*********************************************************************/
-unsigned int memoryGetDeviceWidth(DEVICE device)
-{
- unsigned int width;
- unsigned int regValue;
-
- GT_REG_READ(DEVICE_BANK0PARAMETERS + device*4,&regValue);
- width = (regValue & 0x00300000) >> 20;
- switch (width)
- {
- case 0:
- return 1;
- case 1:
- return 2;
- case 2:
- return 4;
- case 3:
- return 8;
- default:
- return 0;
- }
-}
-
-bool memoryMapBank(MEMORY_BANK bank, unsigned int bankBase,unsigned int bankLength)
-{
- unsigned int low=0xfff;
- unsigned int high=0x0;
- unsigned int regOffset=memoryGetBankRegOffset(bank);
-
- if(bankLength!=0) {
- low = (bankBase >> 20) & 0xffff;
- high=((bankBase+bankLength)>>20)-1;
- }
-
-#ifdef DEBUG
- {
- unsigned int oldLow, oldHigh;
- GT_REG_READ(regOffset,&oldLow);
- GT_REG_READ(regOffset+8,&oldHigh);
-
- printf("b%d %x-%x->%x-%x\n", bank, oldLow, oldHigh, low, high);
- }
-#endif
-
- GT_REG_WRITE(regOffset,low);
- GT_REG_WRITE(regOffset+8,high);
-
- return true;
-}
-bool memoryMapDeviceSpace(DEVICE device, unsigned int deviceBase,unsigned int deviceLength)
-{
- /* TODO: what are appropriate "unmapped" values? */
- unsigned int low=0xfff;
- unsigned int high=0x0;
- unsigned int regOffset=memoryGetDeviceRegOffset(device);
-
- if(deviceLength != 0) {
- low=deviceBase>>20;
- high=((deviceBase+deviceLength)>>20)-1;
- } else {
- /* big problems in here... */
- /* this will HANG */
- }
-
- GT_REG_WRITE(regOffset,low);
- GT_REG_WRITE(regOffset+8,high);
-
- return true;
-}
-
-
-/********************************************************************
-* memoryMapInternalRegistersSpace - Sets new base address for the internals
-* registers.
-*
-* INPUTS: unsigned int internalRegBase - The new base address.
-* RETURNS: true on success, false on failure
-*********************************************************************/
-bool memoryMapInternalRegistersSpace(unsigned int internalRegBase)
-{
- unsigned int currentValue;
- unsigned int internalValue = internalRegBase;
-
- internalRegBase = (internalRegBase >> 20);
- GT_REG_READ(INTERNAL_SPACE_DECODE,&currentValue);
- internalRegBase = (currentValue & 0xffff0000) | internalRegBase;
- GT_REG_WRITE(INTERNAL_SPACE_DECODE,internalRegBase);
- INTERNAL_REG_BASE_ADDR = internalValue;
- return true;
-}
-
-/********************************************************************
-* memoryGetInternalRegistersSpace - Gets internal registers Base Address.
-*
-* INPUTS: unsigned int internalRegBase - The new base address.
-* RETURNS: true on success, false on failure
-*********************************************************************/
-unsigned int memoryGetInternalRegistersSpace(void)
-{
- return INTERNAL_REG_BASE_ADDR;
-}
-
-/********************************************************************
-* memorySetProtectRegion - This function modifys one of the 8 regions with
-* one of the three protection mode.
-* - Be advised to check the spec before modifying them.
-*
-*
-* Inputs: CPU_PROTECT_REGION - one of the eight regions.
-* CPU_ACCESS - general access.
-* CPU_WRITE - read only access.
-* CPU_CACHE_PROTECT - chache access.
-* we defining CPU because there is another protect from the pci SIDE.
-* Returns: false if one of the parameters is wrong and true else
-*********************************************************************/
-bool memorySetProtectRegion(MEMORY_PROTECT_REGION region,
- MEMORY_ACCESS memAccess,
- MEMORY_ACCESS_WRITE memWrite,
- MEMORY_CACHE_PROTECT cacheProtection,
- unsigned int baseAddress,
- unsigned int regionLength)
-{
- unsigned int protectHigh = baseAddress + regionLength;
-
- if(regionLength == 0) /* closing the region */
- {
- GT_REG_WRITE(CPU_LOW_PROTECT_ADDRESS_0 + 0x10*region,0x0000ffff);
- GT_REG_WRITE(CPU_HIGH_PROTECT_ADDRESS_0 + 0x10*region,0);
- return true;
- }
- baseAddress = (baseAddress & 0xfff00000) >> 20;
- baseAddress = baseAddress | memAccess << 16 | memWrite << 17
- | cacheProtection << 18;
- GT_REG_WRITE(CPU_LOW_PROTECT_ADDRESS_0 + 0x10*region,baseAddress);
- protectHigh = (protectHigh & 0xfff00000) >> 20;
- GT_REG_WRITE(CPU_HIGH_PROTECT_ADDRESS_0 + 0x10*region,protectHigh - 1);
- return true;
-}
-
-/********************************************************************
-* memorySetRegionSnoopMode - This function modifys one of the 4 regions which
-* supports Cache Coherency.
-*
-*
-* Inputs: SNOOP_REGION region - One of the four regions.
-* SNOOP_TYPE snoopType - There is four optional Types:
-* 1. No Snoop.
-* 2. Snoop to WT region.
-* 3. Snoop to WB region.
-* 4. Snoop & Invalidate to WB region.
-* unsigned int baseAddress - Base Address of this region.
-* unsigned int topAddress - Top Address of this region.
-* Returns: false if one of the parameters is wrong and true else
-*********************************************************************/
-bool memorySetRegionSnoopMode(MEMORY_SNOOP_REGION region,
- MEMORY_SNOOP_TYPE snoopType,
- unsigned int baseAddress,
- unsigned int regionLength)
-{
- unsigned int snoopXbaseAddress;
- unsigned int snoopXtopAddress;
- unsigned int data;
- unsigned int snoopHigh = baseAddress + regionLength;
-
- if( (region > MEM_SNOOP_REGION3) || (snoopType > MEM_SNOOP_WB) )
- return false;
- snoopXbaseAddress = SNOOP_BASE_ADDRESS_0 + 0x10 * region;
- snoopXtopAddress = SNOOP_TOP_ADDRESS_0 + 0x10 * region;
- if(regionLength == 0) /* closing the region */
- {
- GT_REG_WRITE(snoopXbaseAddress,0x0000ffff);
- GT_REG_WRITE(snoopXtopAddress,0);
- return true;
- }
- baseAddress = baseAddress & 0xffff0000;
- data = (baseAddress >> 16) | snoopType << 16;
- GT_REG_WRITE(snoopXbaseAddress,data);
- snoopHigh = (snoopHigh & 0xfff00000) >> 20;
- GT_REG_WRITE(snoopXtopAddress,snoopHigh - 1);
- return true;
-}
-
-/********************************************************************
-* memoryRemapAddress - This fubction used for address remapping.
-*
-*
-* Inputs: regOffset: remap register
-* remapValue :
-* Returns: false if one of the parameters is erroneous,true otherwise.
-*********************************************************************/
-bool memoryRemapAddress(unsigned int remapReg, unsigned int remapValue)
-{
- unsigned int valueForReg;
- valueForReg = (remapValue & 0xfff00000) >> 20;
- GT_REG_WRITE(remapReg, valueForReg);
- return true;
-}
-
-/********************************************************************
-* memoryGetDeviceParam - This function used for getting device parameters from
-* DEVICE BANK PARAMETERS REGISTER
-*
-*
-* Inputs: - deviceParam: STRUCT with paramiters for DEVICE BANK
-* PARAMETERS REGISTER
-* - deviceNum : number of device
-* Returns: false if one of the parameters is erroneous,true otherwise.
-*********************************************************************/
-bool memoryGetDeviceParam(DEVICE_PARAM *deviceParam, DEVICE deviceNum)
-{
- unsigned int valueOfReg;
- unsigned int calcData;
-
- GT_REG_READ(DEVICE_BANK0PARAMETERS + 4 * deviceNum, &valueOfReg);
- calcData = (0x7 & valueOfReg) + ((0x400000 & valueOfReg) >> 19);
- deviceParam -> turnOff = calcData; /* Turn Off */
-
- calcData = ((0x78 & valueOfReg) >> 3) + ((0x800000 & valueOfReg) >> 19);
- deviceParam -> acc2First = calcData; /* Access To First */
-
- calcData = ((0x780 & valueOfReg) >> 7) + ((0x1000000 & valueOfReg) >> 20);
- deviceParam -> acc2Next = calcData; /* Access To Next */
-
- calcData = ((0x3800 & valueOfReg) >> 11) + ((0x2000000 & valueOfReg) >> 22);
- deviceParam -> ale2Wr = calcData; /* Ale To Write */
-
- calcData = ((0x1c000 & valueOfReg) >> 14) + ((0x4000000 & valueOfReg) >> 23);
- deviceParam -> wrLow = calcData; /* Write Active */
-
- calcData = ((0xe0000 & valueOfReg) >> 17) + ((0x8000000 & valueOfReg) >> 24);
- deviceParam -> wrHigh = calcData; /* Write High */
-
- calcData = ((0x300000 & valueOfReg) >> 20);
- switch (calcData)
- {
- case 0:
- deviceParam -> deviceWidth = 1; /* one Byte - 8-bit */
- break;
- case 1:
- deviceParam -> deviceWidth = 2; /* two Bytes - 16-bit */
- break;
- case 2:
- deviceParam -> deviceWidth = 4; /* four Bytes - 32-bit */
- break;
- case 3:
- deviceParam -> deviceWidth = 8; /* eight Bytes - 64-bit */
- break;
- default:
- deviceParam -> deviceWidth = 1;
- break;
- }
- return true;
-}
-
-/********************************************************************
-* memorySetDeviceParam - This function used for setting device parameters to
-* DEVICE BANK PARAMETERS REGISTER
-*
-*
-* Inputs: - deviceParam: STRUCT for store paramiters from DEVICE BANK
-* PARAMETERS REGISTER
-* - deviceNum : number of device
-* Returns: false if one of the parameters is erroneous,true otherwise.
-*********************************************************************/
-bool memorySetDeviceParam(DEVICE_PARAM *deviceParam, DEVICE deviceNum)
-{
- unsigned int valueForReg;
-
- if((deviceParam -> turnOff >= 0xf) || (deviceParam -> acc2First >= 0x1f) ||
- (deviceParam -> acc2Next >= 0x1f) || (deviceParam -> ale2Wr >= 0xf) ||
- (deviceParam -> wrLow >= 0xf) || (deviceParam -> wrHigh >= 0xf))
- return false;
- valueForReg = (((deviceParam -> turnOff) & 0x7) |
- (((deviceParam -> turnOff) & 0x8) << 19) |
- (((deviceParam -> acc2First) & 0xf) << 3) |
- (((deviceParam -> acc2First) & 0x10) << 19) |
- (((deviceParam -> acc2Next) & 0xf) << 7) |
- (((deviceParam -> acc2Next) & 0x10) << 20) |
- (((deviceParam -> ale2Wr) & 0x7) << 11) |
- (((deviceParam -> ale2Wr) & 0xf) << 22) |
- (((deviceParam -> wrLow) & 0x7) << 14) |
- (((deviceParam -> wrLow) & 0xf) << 23) |
- (((deviceParam -> wrHigh) & 0x7) << 17) |
- (((deviceParam -> wrHigh) & 0xf) << 24));
- /* insert the device width: */
- switch(deviceParam->deviceWidth)
- {
- case 1:
- valueForReg = valueForReg | _8BIT;
- break;
- case 2:
- valueForReg = valueForReg | _16BIT;
- break;
- case 4:
- valueForReg = valueForReg | _32BIT;
- break;
- case 8:
- valueForReg = valueForReg | _64BIT;
- break;
- default:
- valueForReg = valueForReg | _8BIT;
- break;
- }
- GT_REG_WRITE(DEVICE_BANK0PARAMETERS + 4 * deviceNum, valueForReg);
- return true;
-}
diff --git a/board/evb64260/misc.S b/board/evb64260/misc.S
deleted file mode 100644
index 438dea6126..0000000000
--- a/board/evb64260/misc.S
+++ /dev/null
@@ -1,182 +0,0 @@
-#include <config.h>
-#include <74xx_7xx.h>
-#include <version.h>
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-#include <galileo/gt64260R.h>
-
-#ifdef CONFIG_ECC
- /* Galileo specific asm code for initializing ECC */
- .globl board_relocate_rom
-board_relocate_rom:
- mflr r7
- /* update the location of the GT registers */
- lis r11, CFG_GT_REGS@h
- /* if we're using ECC, we must use the DMA engine to copy ourselves */
- bl start_idma_transfer_0
- bl wait_for_idma_0
- bl stop_idma_engine_0
-
- mtlr r7
- blr
-
- .globl board_init_ecc
-board_init_ecc:
- mflr r7
- /* NOTE: r10 still contains the location we've been relocated to
- * which happens to be TOP_OF_RAM - CFG_MONITOR_LEN */
-
- /* now that we're running from ram, init the rest of main memory
- * for ECC use */
- lis r8, CFG_MONITOR_LEN@h
- ori r8, r8, CFG_MONITOR_LEN@l
-
- divw r3, r10, r8
-
- /* set up the counter, and init the starting address */
- mtctr r3
- li r12, 0
-
- /* bytes per transfer */
- mr r5, r8
-about_to_init_ecc:
-1: mr r3, r12
- mr r4, r12
- bl start_idma_transfer_0
- bl wait_for_idma_0
- bl stop_idma_engine_0
- add r12, r12, r8
- bdnz 1b
-
- mtlr r7
- blr
-
- /* r3: dest addr
- * r4: source addr
- * r5: byte count
- * r11: gt regbase
- * trashes: r6, r5
- */
-start_idma_transfer_0:
- /* set the byte count, including the OWN bit */
- mr r6, r11
- ori r6, r6, CHANNEL0_DMA_BYTE_COUNT
- stwbrx r5, 0, (r6)
-
- /* set the source address */
- mr r6, r11
- ori r6, r6, CHANNEL0_DMA_SOURCE_ADDRESS
- stwbrx r4, 0, (r6)
-
- /* set the dest address */
- mr r6, r11
- ori r6, r6, CHANNEL0_DMA_DESTINATION_ADDRESS
- stwbrx r3, 0, (r6)
-
- /* set the next record pointer */
- li r5, 0
- mr r6, r11
- ori r6, r6, CHANNEL0NEXT_RECORD_POINTER
- stwbrx r5, 0, (r6)
-
- /* set the low control register */
- /* bit 9 is NON chained mode, bit 31 is new style descriptors.
- bit 12 is channel enable */
- ori r5, r5, (1 << 12) | (1 << 12) | (1 << 11)
- /* 15 shifted by 16 (oris) == bit 31 */
- oris r5, r5, (1 << 15)
- mr r6, r11
- ori r6, r6, CHANNEL0CONTROL
- stwbrx r5, 0, (r6)
-
- blr
-
- /* this waits for the bytecount to return to zero, indicating
- * that the trasfer is complete */
-wait_for_idma_0:
- mr r5, r11
- lis r6, 0xff
- ori r6, r6, 0xffff
- ori r5, r5, CHANNEL0_DMA_BYTE_COUNT
-1: lwbrx r4, 0, (r5)
- and. r4, r4, r6
- bne 1b
-
- blr
-
- /* this turns off channel 0 of the idma engine */
-stop_idma_engine_0:
- /* shut off the DMA engine */
- li r5, 0
- mr r6, r11
- ori r6, r6, CHANNEL0CONTROL
- stwbrx r5, 0, (r6)
-
- blr
-#endif
-
-#ifdef CFG_BOARD_ASM_INIT
- /* NOTE: trashes r3-r7 */
- .globl board_asm_init
-board_asm_init:
- /* just move the GT registers to where they belong */
- lis r3, CFG_DFL_GT_REGS@h
- ori r3, r3, CFG_DFL_GT_REGS@l
- lis r4, CFG_GT_REGS@h
- ori r4, r4, CFG_GT_REGS@l
- li r5, INTERNAL_SPACE_DECODE
-
- /* test to see if we've already moved */
- lwbrx r6, r5, r4
- andi. r6, r6, 0xffff
- rlwinm r7, r4, 12, 16, 31
- cmp cr0, r7, r6
- beqlr
-
- /* nope, have to move the registers */
- lwbrx r6, r5, r3
- andis. r6, r6, 0xffff
- or r6, r6, r7
- stwbrx r6, r5, r3
-
- /* now, poll for the change */
-1: lwbrx r7, r5, r4
- cmp cr0, r7, r6
- bne 1b
-
- /* done! */
- blr
-#endif
-
-/* For use of the debug LEDs */
- .global led_on0
-led_on0:
- xor r18, r18, r18
- lis r18, 0x1c80
- ori r18, r18, 0x8000
- stw r18, 0x0(r18)
- sync
- blr
-
- .global led_on1
-led_on1:
- xor r18, r18, r18
- lis r18, 0x1c80
- ori r18, r18, 0xc000
- stw r18, 0x0(r18)
- sync
- blr
-
- .global led_on2
-led_on2:
- xor r18, r18, r18
- lis r18, 0x1c81
- ori r18, r18, 0x0000
- stw r18, 0x0(r18)
- sync
- blr
diff --git a/board/evb64260/mpsc.c b/board/evb64260/mpsc.c
deleted file mode 100644
index 98ac7f63df..0000000000
--- a/board/evb64260/mpsc.c
+++ /dev/null
@@ -1,854 +0,0 @@
-/*
- * (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.c - driver for console over the MPSC.
- */
-
-#include <common.h>
-#include <config.h>
-#include <asm/cache.h>
-
-#include <malloc.h>
-#include "mpsc.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int (*mpsc_putchar)(char ch) = mpsc_putchar_early;
-
-static volatile unsigned int *rx_desc_base=NULL;
-static unsigned int rx_desc_index=0;
-static volatile unsigned int *tx_desc_base=NULL;
-static unsigned int tx_desc_index=0;
-
-/* local function declarations */
-static int galmpsc_connect(int channel, int connect);
-static int galmpsc_route_serial(int channel, int connect);
-static int galmpsc_route_rx_clock(int channel, int brg);
-static int galmpsc_route_tx_clock(int channel, int brg);
-static int galmpsc_write_config_regs(int mpsc, int mode);
-static int galmpsc_config_channel_regs(int mpsc);
-static int galmpsc_set_char_length(int mpsc, int value);
-static int galmpsc_set_stop_bit_length(int mpsc, int value);
-static int galmpsc_set_parity(int mpsc, int value);
-static int galmpsc_enter_hunt(int mpsc);
-static int galmpsc_set_brkcnt(int mpsc, int value);
-static int galmpsc_set_tcschar(int mpsc, int value);
-static int galmpsc_set_snoop(int mpsc, int value);
-static int galmpsc_shutdown(int mpsc);
-
-static int galsdma_set_RFT(int channel);
-static int galsdma_set_SFM(int channel);
-static int galsdma_set_rxle(int channel);
-static int galsdma_set_txle(int channel);
-static int galsdma_set_burstsize(int channel, unsigned int value);
-static int galsdma_set_RC(int channel, unsigned int value);
-
-static int galbrg_set_CDV(int channel, int value);
-static int galbrg_enable(int channel);
-static int galbrg_disable(int channel);
-static int galbrg_set_clksrc(int channel, int value);
-static int galbrg_set_CUV(int channel, int value);
-
-static void galsdma_enable_rx(void);
-
-/* static int galbrg_reset(int channel); */
-
-#define SOFTWARE_CACHE_MANAGEMENT
-
-#ifdef SOFTWARE_CACHE_MANAGEMENT
-#define FLUSH_DCACHE(a,b) if(dcache_status()){clean_dcache_range((u32)(a),(u32)(b));}
-#define FLUSH_AND_INVALIDATE_DCACHE(a,b) if(dcache_status()){flush_dcache_range((u32)(a),(u32)(b));}
-#define INVALIDATE_DCACHE(a,b) if(dcache_status()){invalidate_dcache_range((u32)(a),(u32)(b));}
-#else
-#define FLUSH_DCACHE(a,b)
-#define FLUSH_AND_INVALIDATE_DCACHE(a,b)
-#define INVALIDATE_DCACHE(a,b)
-#endif
-
-
-/* GT64240A errata: cant read MPSC/BRG registers... so make mirrors in ram for read/modify write */
-#define MIRROR_HACK ((struct _tag_mirror_hack *)&(gd->mirror_hack))
-
-#define GT_REG_WRITE_MIRROR_G(a,d) {MIRROR_HACK->a ## _M = d; GT_REG_WRITE(a,d);}
-#define GTREGREAD_MIRROR_G(a) (MIRROR_HACK->a ## _M)
-
-#define GT_REG_WRITE_MIRROR(a,i,g,d) {MIRROR_HACK->a ## _M[i] = d; GT_REG_WRITE(a + (i*g),d);}
-#define GTREGREAD_MIRROR(a,i,g) (MIRROR_HACK->a ## _M[i])
-
-/* make sure this isn't bigger than 16 long words (u-boot.h) */
-struct _tag_mirror_hack {
- unsigned GALMPSC_PROTOCONF_REG_M[2]; /* 8008 */
- unsigned GALMPSC_CHANNELREG_1_M[2]; /* 800c */
- unsigned GALMPSC_CHANNELREG_2_M[2]; /* 8010 */
- unsigned GALBRG_0_CONFREG_M[2]; /* b200 */
-
- unsigned GALMPSC_ROUTING_REGISTER_M; /* b400 */
- unsigned GALMPSC_RxC_ROUTE_M; /* b404 */
- unsigned GALMPSC_TxC_ROUTE_M; /* b408 */
-
- unsigned int baudrate; /* current baudrate, for tsc delay calc */
-};
-
-/* static struct _tag_mirror_hack *mh = NULL; */
-
-/* special function for running out of flash. doesn't modify any
- * global variables [josh] */
-int
-mpsc_putchar_early(char ch)
-{
- int mpsc=CHANNEL;
- int temp=GTREGREAD_MIRROR(GALMPSC_CHANNELREG_2,mpsc,GALMPSC_REG_GAP);
- galmpsc_set_tcschar(mpsc,ch);
- GT_REG_WRITE(GALMPSC_CHANNELREG_2+(mpsc*GALMPSC_REG_GAP), temp|0x200);
-
-#define MAGIC_FACTOR (10*1000000)
-
- udelay(MAGIC_FACTOR / MIRROR_HACK->baudrate);
- return 0;
-}
-
-/* This is used after relocation, see serial.c and mpsc_init2 */
-static int
-mpsc_putchar_sdma(char ch)
-{
- volatile unsigned int *p;
- unsigned int temp;
-
-
- /* align the descriptor */
- p = tx_desc_base;
- memset((void *)p, 0, 8 * sizeof(unsigned int));
-
- /* fill one 64 bit buffer */
- /* word swap, pad with 0 */
- p[4] = 0; /* x */
- p[5] = (unsigned int)ch; /* x */
-
- /* CHANGED completely according to GT64260A dox - NTL */
- p[0] = 0x00010001; /* 0 */
- p[1] = DESC_OWNER | DESC_FIRST | DESC_LAST; /* 4 */
- p[2] = 0; /* 8 */
- p[3] = (unsigned int)&p[4]; /* c */
-
-#if 0
- p[9] = DESC_FIRST | DESC_LAST;
- p[10] = (unsigned int)&p[0];
- p[11] = (unsigned int)&p[12];
-#endif
-
- FLUSH_DCACHE(&p[0], &p[8]);
-
- GT_REG_WRITE(GALSDMA_0_CUR_TX_PTR+(CHANNEL*GALSDMA_REG_DIFF),
- (unsigned int)&p[0]);
- GT_REG_WRITE(GALSDMA_0_FIR_TX_PTR+(CHANNEL*GALSDMA_REG_DIFF),
- (unsigned int)&p[0]);
-
- temp = GTREGREAD(GALSDMA_0_COM_REG+(CHANNEL*GALSDMA_REG_DIFF));
- temp |= (TX_DEMAND | TX_STOP);
- GT_REG_WRITE(GALSDMA_0_COM_REG+(CHANNEL*GALSDMA_REG_DIFF), temp);
-
- INVALIDATE_DCACHE(&p[1], &p[2]);
-
- while(p[1] & DESC_OWNER) {
- udelay(100);
- INVALIDATE_DCACHE(&p[1], &p[2]);
- }
-
- return 0;
-}
-
-char mpsc_getchar (void)
-{
- static unsigned int done = 0;
- volatile char ch;
- unsigned int len = 0, idx = 0, temp;
-
- volatile unsigned int *p;
-
-
- do {
- p = &rx_desc_base[rx_desc_index * 8];
-
- INVALIDATE_DCACHE (&p[0], &p[1]);
- /* Wait for character */
- while (p[1] & DESC_OWNER) {
- udelay (100);
- INVALIDATE_DCACHE (&p[0], &p[1]);
- }
-
- /* Handle error case */
- if (p[1] & (1 << 15)) {
- printf ("oops, error: %08x\n", p[1]);
-
- temp = GTREGREAD_MIRROR (GALMPSC_CHANNELREG_2,
- CHANNEL, GALMPSC_REG_GAP);
- temp |= (1 << 23);
- GT_REG_WRITE_MIRROR (GALMPSC_CHANNELREG_2, CHANNEL,
- GALMPSC_REG_GAP, temp);
-
- /* Can't poll on abort bit, so we just wait. */
- udelay (100);
-
- galsdma_enable_rx ();
- }
-
- /* Number of bytes left in this descriptor */
- len = p[0] & 0xffff;
-
- if (len) {
- /* Where to look */
- idx = 5;
- if (done > 3)
- idx = 4;
- if (done > 7)
- idx = 7;
- if (done > 11)
- idx = 6;
-
- INVALIDATE_DCACHE (&p[idx], &p[idx + 1]);
- ch = p[idx] & 0xff;
- done++;
- }
-
- if (done < len) {
- /* this descriptor has more bytes still
- * shift down the char we just read, and leave the
- * buffer in place for the next time around
- */
- p[idx] = p[idx] >> 8;
- FLUSH_DCACHE (&p[idx], &p[idx + 1]);
- }
-
- if (done == len) {
- /* nothing left in this descriptor.
- * go to next one
- */
- p[1] = DESC_OWNER | DESC_FIRST | DESC_LAST;
- p[0] = 0x00100000;
- FLUSH_DCACHE (&p[0], &p[1]);
- /* Next descriptor */
- rx_desc_index = (rx_desc_index + 1) % RX_DESC;
- done = 0;
- }
- } while (len == 0); /* galileo bug.. len might be zero */
-
- return ch;
-}
-
-int
-mpsc_test_char(void)
-{
- volatile unsigned int *p=&rx_desc_base[rx_desc_index*8];
-
- INVALIDATE_DCACHE(&p[1], &p[2]);
-
- if (p[1] & DESC_OWNER) return 0;
- else return 1;
-}
-
-int
-mpsc_init(int baud)
-{
- memset(MIRROR_HACK, 0, sizeof(struct _tag_mirror_hack));
- MIRROR_HACK->GALMPSC_ROUTING_REGISTER_M=0x3fffffff;
-
- /* BRG CONFIG */
- galbrg_set_baudrate(CHANNEL, baud);
-#if defined(CONFIG_ZUMA_V2) || defined(CONFIG_P3G4)
- galbrg_set_clksrc(CHANNEL,0x8); /* connect TCLK -> BRG */
-#else
- galbrg_set_clksrc(CHANNEL,0);
-#endif
- galbrg_set_CUV(CHANNEL, 0);
- galbrg_enable(CHANNEL);
-
- /* Set up clock routing */
- galmpsc_connect(CHANNEL, GALMPSC_CONNECT);
- galmpsc_route_serial(CHANNEL, GALMPSC_CONNECT);
- galmpsc_route_rx_clock(CHANNEL, CHANNEL);
- galmpsc_route_tx_clock(CHANNEL, CHANNEL);
-
- /* reset MPSC state */
- galmpsc_shutdown(CHANNEL);
-
- /* SDMA CONFIG */
- galsdma_set_burstsize(CHANNEL, L1_CACHE_BYTES/8); /* in 64 bit words (8 bytes) */
- galsdma_set_txle(CHANNEL);
- galsdma_set_rxle(CHANNEL);
- galsdma_set_RC(CHANNEL, 0xf);
- galsdma_set_SFM(CHANNEL);
- galsdma_set_RFT(CHANNEL);
-
- /* MPSC CONFIG */
- galmpsc_write_config_regs(CHANNEL, GALMPSC_UART);
- galmpsc_config_channel_regs(CHANNEL);
- galmpsc_set_char_length(CHANNEL, GALMPSC_CHAR_LENGTH_8); /* 8 */
- galmpsc_set_parity(CHANNEL, GALMPSC_PARITY_NONE); /* N */
- galmpsc_set_stop_bit_length(CHANNEL, GALMPSC_STOP_BITS_1); /* 1 */
-
- /* COMM_MPSC CONFIG */
-#ifdef SOFTWARE_CACHE_MANAGEMENT
- galmpsc_set_snoop(CHANNEL, 0); /* disable snoop */
-#else
- galmpsc_set_snoop(CHANNEL, 1); /* enable snoop */
-#endif
-
- return 0;
-}
-
-void
-mpsc_init2(void)
-{
- int i;
-
- mpsc_putchar = mpsc_putchar_sdma;
-
- /* RX descriptors */
- rx_desc_base = (unsigned int *)malloc(((RX_DESC+1)*8) *
- sizeof(unsigned int));
-
- /* align descriptors */
- rx_desc_base = (unsigned int *)
- (((unsigned int)rx_desc_base+32) & 0xFFFFFFF0);
-
- rx_desc_index = 0;
-
- memset((void *)rx_desc_base, 0, (RX_DESC*8)*sizeof(unsigned int));
-
- for (i = 0; i < RX_DESC; i++) {
- rx_desc_base[i*8 + 3] = (unsigned int)&rx_desc_base[i*8 + 4]; /* Buffer */
- rx_desc_base[i*8 + 2] = (unsigned int)&rx_desc_base[(i+1)*8]; /* Next descriptor */
- rx_desc_base[i*8 + 1] = DESC_OWNER | DESC_FIRST | DESC_LAST; /* Command & control */
- rx_desc_base[i*8] = 0x00100000;
- }
- rx_desc_base[(i-1)*8 + 2] = (unsigned int)&rx_desc_base[0];
-
- FLUSH_DCACHE(&rx_desc_base[0], &rx_desc_base[RX_DESC*8]);
- GT_REG_WRITE(GALSDMA_0_CUR_RX_PTR+(CHANNEL*GALSDMA_REG_DIFF),
- (unsigned int)&rx_desc_base[0]);
-
- /* TX descriptors */
- tx_desc_base = (unsigned int *)malloc(((TX_DESC+1)*8) *
- sizeof(unsigned int));
-
- /* align descriptors */
- tx_desc_base = (unsigned int *)
- (((unsigned int)tx_desc_base+32) & 0xFFFFFFF0);
-
- tx_desc_index = -1;
-
- memset((void *)tx_desc_base, 0, (TX_DESC*8)*sizeof(unsigned int));
-
- for (i = 0; i < TX_DESC; i++) {
- tx_desc_base[i*8 + 5] = (unsigned int)0x23232323;
- tx_desc_base[i*8 + 4] = (unsigned int)0x23232323;
- tx_desc_base[i*8 + 3] = (unsigned int)&tx_desc_base[i*8 + 4];
- tx_desc_base[i*8 + 2] = (unsigned int)&tx_desc_base[(i+1)*8];
- tx_desc_base[i*8 + 1] = DESC_OWNER | DESC_FIRST | DESC_LAST;
-
- /* set sbytecnt and shadow byte cnt to 1 */
- tx_desc_base[i*8] = 0x00010001;
- }
- tx_desc_base[(i-1)*8 + 2] = (unsigned int)&tx_desc_base[0];
-
- FLUSH_DCACHE(&tx_desc_base[0], &tx_desc_base[TX_DESC*8]);
-
- udelay(100);
-
- galsdma_enable_rx();
-
- return;
-}
-
-int
-galbrg_set_baudrate(int channel, int rate)
-{
- int clock;
-
- galbrg_disable(channel);
-
-#if defined(CONFIG_ZUMA_V2) || defined(CONFIG_P3G4)
- /* from tclk */
- clock = (CFG_BUS_HZ/(16*rate)) - 1;
-#else
- clock = (3686400/(16*rate)) - 1;
-#endif
-
- galbrg_set_CDV(channel, clock);
-
- galbrg_enable(channel);
-
- MIRROR_HACK->baudrate = rate;
-
- return 0;
-}
-
-/* ------------------------------------------------------------------ */
-
-/* Below are all the private functions that no one else needs */
-
-static int
-galbrg_set_CDV(int channel, int value)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR(GALBRG_0_CONFREG, channel, GALBRG_REG_GAP);
- temp &= 0xFFFF0000;
- temp |= (value & 0x0000FFFF);
- GT_REG_WRITE_MIRROR(GALBRG_0_CONFREG,channel,GALBRG_REG_GAP, temp);
-
- return 0;
-}
-
-static int
-galbrg_enable(int channel)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR(GALBRG_0_CONFREG, channel, GALBRG_REG_GAP);
- temp |= 0x00010000;
- GT_REG_WRITE_MIRROR(GALBRG_0_CONFREG, channel, GALBRG_REG_GAP,temp);
-
- return 0;
-}
-
-static int
-galbrg_disable(int channel)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR(GALBRG_0_CONFREG, channel, GALBRG_REG_GAP);
- temp &= 0xFFFEFFFF;
- GT_REG_WRITE_MIRROR(GALBRG_0_CONFREG, channel, GALBRG_REG_GAP,temp);
-
- return 0;
-}
-
-static int
-galbrg_set_clksrc(int channel, int value)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR(GALBRG_0_CONFREG,channel, GALBRG_REG_GAP);
- temp &= 0xFF83FFFF;
- temp |= (value << 18);
- GT_REG_WRITE_MIRROR(GALBRG_0_CONFREG,channel, GALBRG_REG_GAP,temp);
-
- return 0;
-}
-
-static int
-galbrg_set_CUV(int channel, int value)
-{
- GT_REG_WRITE(GALBRG_0_BTREG + (channel * GALBRG_REG_GAP), value);
-
- return 0;
-}
-
-#if 0
-static int
-galbrg_reset(int channel)
-{
- unsigned int temp;
-
- temp = GTREGREAD(GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP));
- temp |= 0x20000;
- GT_REG_WRITE(GALBRG_0_CONFREG + (channel * GALBRG_REG_GAP), temp);
-
- return 0;
-}
-#endif
-
-static int
-galsdma_set_RFT(int channel)
-{
- unsigned int temp;
-
- temp = GTREGREAD(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF));
- temp |= 0x00000001;
- GT_REG_WRITE(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF), temp);
-
- return 0;
-}
-
-static int
-galsdma_set_SFM(int channel)
-{
- unsigned int temp;
-
- temp = GTREGREAD(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF));
- temp |= 0x00000002;
- GT_REG_WRITE(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF), temp);
-
- return 0;
-}
-
-static int
-galsdma_set_rxle(int channel)
-{
- unsigned int temp;
-
- temp = GTREGREAD(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF));
- temp |= 0x00000040;
- GT_REG_WRITE(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF), temp);
-
- return 0;
-}
-
-static int
-galsdma_set_txle(int channel)
-{
- unsigned int temp;
-
- temp = GTREGREAD(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF));
- temp |= 0x00000080;
- GT_REG_WRITE(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF), temp);
-
- return 0;
-}
-
-static int
-galsdma_set_RC(int channel, unsigned int value)
-{
- unsigned int temp;
-
- temp = GTREGREAD(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF));
- temp &= ~0x0000003c;
- temp |= (value << 2);
- GT_REG_WRITE(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF), temp);
-
- return 0;
-}
-
-static int
-galsdma_set_burstsize(int channel, unsigned int value)
-{
- unsigned int temp;
-
- temp = GTREGREAD(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF));
- temp &= 0xFFFFCFFF;
- switch (value) {
- case 8:
- GT_REG_WRITE(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF),
- (temp | (0x3 << 12)));
- break;
-
- case 4:
- GT_REG_WRITE(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF),
- (temp | (0x2 << 12)));
- break;
-
- case 2:
- GT_REG_WRITE(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF),
- (temp | (0x1 << 12)));
- break;
-
- case 1:
- GT_REG_WRITE(GALSDMA_0_CONF_REG+(channel*GALSDMA_REG_DIFF),
- (temp | (0x0 << 12)));
- break;
-
- default:
- return -1;
- break;
- }
-
- return 0;
-}
-
-static int
-galmpsc_connect(int channel, int connect)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR_G(GALMPSC_ROUTING_REGISTER);
-
- if ((channel == 0) && connect)
- temp &= ~0x00000007;
- else if ((channel == 1) && connect)
- temp &= ~(0x00000007 << 6);
- else if ((channel == 0) && !connect)
- temp |= 0x00000007;
- else
- temp |= (0x00000007 << 6);
-
- /* Just in case... */
- temp &= 0x3fffffff;
-
- GT_REG_WRITE_MIRROR_G(GALMPSC_ROUTING_REGISTER, temp);
-
- return 0;
-}
-
-static int
-galmpsc_route_serial(int channel, int connect)
-{
- unsigned int temp;
-
- temp = GTREGREAD(GALMPSC_SERIAL_MULTIPLEX);
-
- if ((channel == 0) && connect)
- temp |= 0x00000100;
- else if ((channel == 1) && connect)
- temp |= 0x00001000;
- else if ((channel == 0) && !connect)
- temp &= ~0x00000100;
- else
- temp &= ~0x00001000;
-
- GT_REG_WRITE(GALMPSC_SERIAL_MULTIPLEX,temp);
-
- return 0;
-}
-
-static int
-galmpsc_route_rx_clock(int channel, int brg)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR_G(GALMPSC_RxC_ROUTE);
-
- if (channel == 0)
- temp |= brg;
- else
- temp |= (brg << 8);
-
- GT_REG_WRITE_MIRROR_G(GALMPSC_RxC_ROUTE,temp);
-
- return 0;
-}
-
-static int
-galmpsc_route_tx_clock(int channel, int brg)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR_G(GALMPSC_TxC_ROUTE);
-
- if (channel == 0)
- temp |= brg;
- else
- temp |= (brg << 8);
-
- GT_REG_WRITE_MIRROR_G(GALMPSC_TxC_ROUTE,temp);
-
- return 0;
-}
-
-static int
-galmpsc_write_config_regs(int mpsc, int mode)
-{
- if (mode == GALMPSC_UART) {
- /* Main config reg Low (Null modem, Enable Tx/Rx, UART mode) */
- GT_REG_WRITE(GALMPSC_MCONF_LOW + (mpsc*GALMPSC_REG_GAP),
- 0x000004c4);
-
- /* Main config reg High (32x Rx/Tx clock mode, width=8bits */
- GT_REG_WRITE(GALMPSC_MCONF_HIGH +(mpsc*GALMPSC_REG_GAP),
- 0x024003f8);
- /* 22 2222 1111 */
- /* 54 3210 9876 */
- /* 0000 0010 0000 0000 */
- /* 1 */
- /* 098 7654 3210 */
- /* 0000 0011 1111 1000 */
- } else
- return -1;
-
- return 0;
-}
-
-static int
-galmpsc_config_channel_regs(int mpsc)
-{
- GT_REG_WRITE_MIRROR(GALMPSC_CHANNELREG_1,mpsc,GALMPSC_REG_GAP, 0);
- GT_REG_WRITE_MIRROR(GALMPSC_CHANNELREG_2,mpsc,GALMPSC_REG_GAP, 0);
- GT_REG_WRITE(GALMPSC_CHANNELREG_3+(mpsc*GALMPSC_REG_GAP), 1);
- GT_REG_WRITE(GALMPSC_CHANNELREG_4+(mpsc*GALMPSC_REG_GAP), 0);
- GT_REG_WRITE(GALMPSC_CHANNELREG_5+(mpsc*GALMPSC_REG_GAP), 0);
- GT_REG_WRITE(GALMPSC_CHANNELREG_6+(mpsc*GALMPSC_REG_GAP), 0);
- GT_REG_WRITE(GALMPSC_CHANNELREG_7+(mpsc*GALMPSC_REG_GAP), 0);
- GT_REG_WRITE(GALMPSC_CHANNELREG_8+(mpsc*GALMPSC_REG_GAP), 0);
- GT_REG_WRITE(GALMPSC_CHANNELREG_9+(mpsc*GALMPSC_REG_GAP), 0);
- GT_REG_WRITE(GALMPSC_CHANNELREG_10+(mpsc*GALMPSC_REG_GAP), 0);
-
- galmpsc_set_brkcnt(mpsc, 0x3);
- galmpsc_set_tcschar(mpsc, 0xab);
-
- return 0;
-}
-
-static int
-galmpsc_set_brkcnt(int mpsc, int value)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR(GALMPSC_CHANNELREG_1,mpsc,GALMPSC_REG_GAP);
- temp &= 0x0000FFFF;
- temp |= (value << 16);
- GT_REG_WRITE_MIRROR(GALMPSC_CHANNELREG_1,mpsc,GALMPSC_REG_GAP, temp);
-
- return 0;
-}
-
-static int
-galmpsc_set_tcschar(int mpsc, int value)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR(GALMPSC_CHANNELREG_1,mpsc,GALMPSC_REG_GAP);
- temp &= 0xFFFF0000;
- temp |= value;
- GT_REG_WRITE_MIRROR(GALMPSC_CHANNELREG_1,mpsc,GALMPSC_REG_GAP, temp);
-
- return 0;
-}
-
-static int
-galmpsc_set_char_length(int mpsc, int value)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR(GALMPSC_PROTOCONF_REG,mpsc,GALMPSC_REG_GAP);
- temp &= 0xFFFFCFFF;
- temp |= (value << 12);
- GT_REG_WRITE_MIRROR(GALMPSC_PROTOCONF_REG,mpsc,GALMPSC_REG_GAP, temp);
-
- return 0;
-}
-
-static int
-galmpsc_set_stop_bit_length(int mpsc, int value)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR(GALMPSC_PROTOCONF_REG,mpsc,GALMPSC_REG_GAP);
- temp |= (value << 14);
- GT_REG_WRITE_MIRROR(GALMPSC_PROTOCONF_REG,mpsc,GALMPSC_REG_GAP,temp);
-
- return 0;
-}
-
-static int
-galmpsc_set_parity(int mpsc, int value)
-{
- unsigned int temp;
-
- temp = GTREGREAD_MIRROR(GALMPSC_CHANNELREG_2,mpsc,GALMPSC_REG_GAP);
- if (value != -1) {
- temp &= 0xFFF3FFF3;
- temp |= ((value << 18) | (value << 2));
- temp |= ((value << 17) | (value << 1));
- } else {
- temp &= 0xFFF1FFF1;
- }
-
- GT_REG_WRITE_MIRROR(GALMPSC_CHANNELREG_2,mpsc,GALMPSC_REG_GAP, temp);
-
- return 0;
-}
-
-static int
-galmpsc_enter_hunt(int mpsc)
-{
- int temp;
-
- temp = GTREGREAD_MIRROR(GALMPSC_CHANNELREG_2,mpsc,GALMPSC_REG_GAP);
- temp |= 0x80000000;
- GT_REG_WRITE_MIRROR(GALMPSC_CHANNELREG_2,mpsc,GALMPSC_REG_GAP, temp);
-
- /* Should Poll on Enter Hunt bit, but the register is write-only */
- /* errata suggests pausing 100 system cycles */
- udelay(100);
-
- return 0;
-}
-
-
-static int
-galmpsc_shutdown(int mpsc)
-{
-#if 0
- unsigned int temp;
-
- /* cause RX abort (clears RX) */
- temp = GTREGREAD_MIRROR(GALMPSC_CHANNELREG_2,mpsc,GALMPSC_REG_GAP);
- temp |= MPSC_RX_ABORT | MPSC_TX_ABORT;
- temp &= ~MPSC_ENTER_HUNT;
- GT_REG_WRITE_MIRROR(GALMPSC_CHANNELREG_2,mpsc,GALMPSC_REG_GAP,temp);
-#endif
-
- GT_REG_WRITE(GALSDMA_0_COM_REG + CHANNEL * GALSDMA_REG_DIFF, 0);
- GT_REG_WRITE(GALSDMA_0_COM_REG + CHANNEL * GALSDMA_REG_DIFF,
- SDMA_TX_ABORT | SDMA_RX_ABORT);
-
- /* shut down the MPSC */
- GT_REG_WRITE(GALMPSC_MCONF_LOW, 0);
- GT_REG_WRITE(GALMPSC_MCONF_HIGH, 0);
- GT_REG_WRITE_MIRROR(GALMPSC_PROTOCONF_REG, mpsc, GALMPSC_REG_GAP,0);
-
- udelay(100);
-
- /* shut down the sdma engines. */
- /* reset config to default */
- GT_REG_WRITE(GALSDMA_0_CONF_REG + CHANNEL * GALSDMA_REG_DIFF,
- 0x000000fc);
-
- udelay(100);
-
- /* clear the SDMA current and first TX and RX pointers */
- GT_REG_WRITE(GALSDMA_0_CUR_RX_PTR + CHANNEL * GALSDMA_REG_DIFF, 0);
- GT_REG_WRITE(GALSDMA_0_CUR_TX_PTR + CHANNEL * GALSDMA_REG_DIFF, 0);
- GT_REG_WRITE(GALSDMA_0_FIR_TX_PTR + CHANNEL * GALSDMA_REG_DIFF, 0);
-
- udelay(100);
-
- return 0;
-}
-
-static void
-galsdma_enable_rx(void)
-{
- int temp;
-
- /* Enable RX processing */
- temp = GTREGREAD(GALSDMA_0_COM_REG+(CHANNEL*GALSDMA_REG_DIFF));
- temp |= RX_ENABLE;
- GT_REG_WRITE(GALSDMA_0_COM_REG+(CHANNEL*GALSDMA_REG_DIFF), temp);
-
- galmpsc_enter_hunt(CHANNEL);
-}
-
-static int
-galmpsc_set_snoop(int mpsc, int value)
-{
- int reg = mpsc ? MPSC_1_ADDRESS_CONTROL_LOW : MPSC_0_ADDRESS_CONTROL_LOW;
- int temp=GTREGREAD(reg);
- if(value)
- temp |= (1<< 6) | (1<<14) | (1<<22) | (1<<30);
- else
- temp &= ~((1<< 6) | (1<<14) | (1<<22) | (1<<30));
- GT_REG_WRITE(reg, temp);
- return 0;
-}
diff --git a/board/evb64260/mpsc.h b/board/evb64260/mpsc.h
deleted file mode 100644
index 54b642a83d..0000000000
--- a/board/evb64260/mpsc.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * (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/pci.c b/board/evb64260/pci.c
deleted file mode 100644
index 59b9acb2f7..0000000000
--- a/board/evb64260/pci.c
+++ /dev/null
@@ -1,760 +0,0 @@
-/* PCI.c - PCI functions */
-
-/* Copyright - Galileo technology. */
-
-#include <common.h>
-#include <pci.h>
-
-#include <galileo/pci.h>
-
-static const unsigned char pci_irq_swizzle[2][PCI_MAX_DEVICES] = {
-#ifdef CONFIG_ZUMA_V2
- {0, 0, 0, 0, 0, 0, 0, 29,[8 ... PCI_MAX_DEVICES - 1] = 0},
- {0, 0, 0, 0, 0, 0, 0, 28,[8 ... PCI_MAX_DEVICES - 1] = 0}
-#else /* EVB??? This is a guess */
- {0, 0, 0, 0, 0, 0, 0, 27, 27,[9 ... PCI_MAX_DEVICES - 1] = 0},
- {0, 0, 0, 0, 0, 0, 0, 29, 29,[9 ... PCI_MAX_DEVICES - 1] = 0}
-#endif
-};
-
-static const unsigned int pci_p2p_configuration_reg[] = {
- PCI_0P2P_CONFIGURATION, PCI_1P2P_CONFIGURATION
-};
-
-static const unsigned int pci_configuration_address[] = {
- PCI_0CONFIGURATION_ADDRESS, PCI_1CONFIGURATION_ADDRESS
-};
-
-static const unsigned int pci_configuration_data[] = {
- PCI_0CONFIGURATION_DATA_VIRTUAL_REGISTER,
- PCI_1CONFIGURATION_DATA_VIRTUAL_REGISTER
-};
-
-static const unsigned int pci_error_cause_reg[] = {
- PCI_0ERROR_CAUSE, PCI_1ERROR_CAUSE
-};
-
-static const unsigned int pci_arbiter_control[] = {
- PCI_0ARBITER_CONTROL, PCI_1ARBITER_CONTROL
-};
-
-static const unsigned int pci_snoop_control_base_0_low[] = {
- PCI_0SNOOP_CONTROL_BASE_0_LOW, PCI_1SNOOP_CONTROL_BASE_0_LOW
-};
-static const unsigned int pci_snoop_control_top_0[] = {
- PCI_0SNOOP_CONTROL_TOP_0, PCI_1SNOOP_CONTROL_TOP_0
-};
-
-static const unsigned int pci_access_control_base_0_low[] = {
- PCI_0ACCESS_CONTROL_BASE_0_LOW, PCI_1ACCESS_CONTROL_BASE_0_LOW
-};
-static const unsigned int pci_access_control_top_0[] = {
- PCI_0ACCESS_CONTROL_TOP_0, PCI_1ACCESS_CONTROL_TOP_0
-};
-
-static const unsigned int pci_scs_bank_size[2][4] = {
- {PCI_0SCS_0_BANK_SIZE, PCI_0SCS_1_BANK_SIZE,
- PCI_0SCS_2_BANK_SIZE, PCI_0SCS_3_BANK_SIZE},
- {PCI_1SCS_0_BANK_SIZE, PCI_1SCS_1_BANK_SIZE,
- PCI_1SCS_2_BANK_SIZE, PCI_1SCS_3_BANK_SIZE}
-};
-
-static const unsigned int pci_p2p_configuration[] = {
- PCI_0P2P_CONFIGURATION, PCI_1P2P_CONFIGURATION
-};
-
-static unsigned int local_buses[] = { 0, 0 };
-
-/********************************************************************
-* pciWriteConfigReg - Write to a PCI configuration register
-* - Make sure the GT is configured as a master before writing
-* to another device on the PCI.
-* - The function takes care of Big/Little endian conversion.
-*
-*
-* Inputs: unsigned int regOffset: The register offset as it apears in the GT spec
-* (or any other PCI device spec)
-* pciDevNum: The device number needs to be addressed.
-*
-* Configuration Address 0xCF8:
-*
-* 31 30 24 23 16 15 11 10 8 7 2 0 <=bit Number
-* |congif|Reserved| Bus |Device|Function|Register|00|
-* |Enable| |Number|Number| Number | Number | | <=field Name
-*
-*********************************************************************/
-void pciWriteConfigReg (PCI_HOST host, unsigned int regOffset,
- unsigned int pciDevNum, unsigned int data)
-{
- volatile unsigned int DataForAddrReg;
- unsigned int functionNum;
- unsigned int busNum = PCI_BUS (pciDevNum);
- unsigned int addr;
-
- if (pciDevNum > 32) /* illegal device Number */
- return;
- if (pciDevNum == SELF) { /* configure our configuration space. */
- pciDevNum =
- (GTREGREAD (pci_p2p_configuration_reg[host]) >> 24) &
- 0x1f;
- busNum = GTREGREAD (pci_p2p_configuration_reg[host]) &
- 0xff0000;
- }
- functionNum = regOffset & 0x00000700;
- pciDevNum = pciDevNum << 11;
- regOffset = regOffset & 0xfc;
- DataForAddrReg =
- (regOffset | pciDevNum | functionNum | busNum) | BIT31;
- GT_REG_WRITE (pci_configuration_address[host], DataForAddrReg);
- GT_REG_READ (pci_configuration_address[host], &addr);
- if (addr != DataForAddrReg)
- return;
- GT_REG_WRITE (pci_configuration_data[host], data);
-}
-
-/********************************************************************
-* pciReadConfigReg - Read from a PCI0 configuration register
-* - Make sure the GT is configured as a master before reading
-* from another device on the PCI.
-* - The function takes care of Big/Little endian conversion.
-* INPUTS: regOffset: The register offset as it apears in the GT spec (or PCI
-* spec)
-* pciDevNum: The device number needs to be addressed.
-* RETURNS: data , if the data == 0xffffffff check the master abort bit in the
-* cause register to make sure the data is valid
-*
-* Configuration Address 0xCF8:
-*
-* 31 30 24 23 16 15 11 10 8 7 2 0 <=bit Number
-* |congif|Reserved| Bus |Device|Function|Register|00|
-* |Enable| |Number|Number| Number | Number | | <=field Name
-*
-*********************************************************************/
-unsigned int pciReadConfigReg (PCI_HOST host, unsigned int regOffset,
- unsigned int pciDevNum)
-{
- volatile unsigned int DataForAddrReg;
- unsigned int data;
- unsigned int functionNum;
- unsigned int busNum = PCI_BUS (pciDevNum);
-
- if (pciDevNum > 32) /* illegal device Number */
- return 0xffffffff;
- if (pciDevNum == SELF) { /* configure our configuration space. */
- pciDevNum =
- (GTREGREAD (pci_p2p_configuration_reg[host]) >> 24) &
- 0x1f;
- busNum = GTREGREAD (pci_p2p_configuration_reg[host]) &
- 0xff0000;
- }
- functionNum = regOffset & 0x00000700;
- pciDevNum = pciDevNum << 11;
- regOffset = regOffset & 0xfc;
- DataForAddrReg =
- (regOffset | pciDevNum | functionNum | busNum) | BIT31;
- GT_REG_WRITE (pci_configuration_address[host], DataForAddrReg);
- GT_REG_READ (pci_configuration_address[host], &data);
- if (data != DataForAddrReg)
- return 0xffffffff;
- GT_REG_READ (pci_configuration_data[host], &data);
- return data;
-}
-
-/********************************************************************
-* pciOverBridgeWriteConfigReg - Write to a PCI configuration register where
-* the agent is placed on another Bus. For more
-* information read P2P in the PCI spec.
-*
-* Inputs: unsigned int regOffset - The register offset as it apears in the
-* GT spec (or any other PCI device spec).
-* unsigned int pciDevNum - The device number needs to be addressed.
-* unsigned int busNum - On which bus does the Target agent connect
-* to.
-* unsigned int data - data to be written.
-*
-* Configuration Address 0xCF8:
-*
-* 31 30 24 23 16 15 11 10 8 7 2 0 <=bit Number
-* |congif|Reserved| Bus |Device|Function|Register|01|
-* |Enable| |Number|Number| Number | Number | | <=field Name
-*
-* The configuration Address is configure as type-I (bits[1:0] = '01') due to
-* PCI spec referring to P2P.
-*
-*********************************************************************/
-void pciOverBridgeWriteConfigReg (PCI_HOST host,
- unsigned int regOffset,
- unsigned int pciDevNum,
- unsigned int busNum, unsigned int data)
-{
- unsigned int DataForReg;
- unsigned int functionNum;
-
- functionNum = regOffset & 0x00000700;
- pciDevNum = pciDevNum << 11;
- regOffset = regOffset & 0xff;
- busNum = busNum << 16;
- if (pciDevNum == SELF) { /* This board */
- DataForReg = (regOffset | pciDevNum | functionNum) | BIT0;
- } else {
- DataForReg = (regOffset | pciDevNum | functionNum | busNum) |
- BIT31 | BIT0;
- }
- GT_REG_WRITE (pci_configuration_address[host], DataForReg);
- if (pciDevNum == SELF) { /* This board */
- GT_REG_WRITE (pci_configuration_data[host], data);
- } else { /* configuration Transaction over the pci. */
-
- /* The PCI is working in LE Mode So it swap the Data. */
- GT_REG_WRITE (pci_configuration_data[host], WORD_SWAP (data));
- }
-}
-
-
-/********************************************************************
-* pciOverBridgeReadConfigReg - Read from a PCIn configuration register where
-* the agent target locate on another PCI bus.
-* - Make sure the GT is configured as a master
-* before reading from another device on the PCI.
-* - The function takes care of Big/Little endian
-* conversion.
-* INPUTS: regOffset: The register offset as it apears in the GT spec (or PCI
-* spec). (configuration register offset.)
-* pciDevNum: The device number needs to be addressed.
-* busNum: the Bus number where the agent is place.
-* RETURNS: data , if the data == 0xffffffff check the master abort bit in the
-* cause register to make sure the data is valid
-*
-* Configuration Address 0xCF8:
-*
-* 31 30 24 23 16 15 11 10 8 7 2 0 <=bit Number
-* |congif|Reserved| Bus |Device|Function|Register|01|
-* |Enable| |Number|Number| Number | Number | | <=field Name
-*
-*********************************************************************/
-unsigned int pciOverBridgeReadConfigReg (PCI_HOST host,
- unsigned int regOffset,
- unsigned int pciDevNum,
- unsigned int busNum)
-{
- unsigned int DataForReg;
- unsigned int data;
- unsigned int functionNum;
-
- functionNum = regOffset & 0x00000700;
- pciDevNum = pciDevNum << 11;
- regOffset = regOffset & 0xff;
- busNum = busNum << 16;
- if (pciDevNum == SELF) { /* This board */
- DataForReg = (regOffset | pciDevNum | functionNum) | BIT31;
- } else { /* agent on another bus */
-
- DataForReg = (regOffset | pciDevNum | functionNum | busNum) |
- BIT0 | BIT31;
- }
- GT_REG_WRITE (pci_configuration_address[host], DataForReg);
- if (pciDevNum == SELF) { /* This board */
- GT_REG_READ (pci_configuration_data[host], &data);
- return data;
- } else { /* The PCI is working in LE Mode So it swap the Data. */
-
- GT_REG_READ (pci_configuration_data[host], &data);
- return WORD_SWAP (data);
- }
-}
-
-/********************************************************************
-* pciGetRegOffset - Gets the register offset for this region config.
-*
-* INPUT: Bus, Region - The bus and region we ask for its base address.
-* OUTPUT: N/A
-* RETURNS: PCI register base address
-*********************************************************************/
-static unsigned int pciGetRegOffset (PCI_HOST host, PCI_REGION region)
-{
- switch (host) {
- case PCI_HOST0:
- switch (region) {
- case PCI_IO:
- return PCI_0I_O_LOW_DECODE_ADDRESS;
- case PCI_REGION0:
- return PCI_0MEMORY0_LOW_DECODE_ADDRESS;
- case PCI_REGION1:
- return PCI_0MEMORY1_LOW_DECODE_ADDRESS;
- case PCI_REGION2:
- return PCI_0MEMORY2_LOW_DECODE_ADDRESS;
- case PCI_REGION3:
- return PCI_0MEMORY3_LOW_DECODE_ADDRESS;
- }
- case PCI_HOST1:
- switch (region) {
- case PCI_IO:
- return PCI_1I_O_LOW_DECODE_ADDRESS;
- case PCI_REGION0:
- return PCI_1MEMORY0_LOW_DECODE_ADDRESS;
- case PCI_REGION1:
- return PCI_1MEMORY1_LOW_DECODE_ADDRESS;
- case PCI_REGION2:
- return PCI_1MEMORY2_LOW_DECODE_ADDRESS;
- case PCI_REGION3:
- return PCI_1MEMORY3_LOW_DECODE_ADDRESS;
- }
- }
- return PCI_0MEMORY0_LOW_DECODE_ADDRESS;
-}
-
-static unsigned int pciGetRemapOffset (PCI_HOST host, PCI_REGION region)
-{
- switch (host) {
- case PCI_HOST0:
- switch (region) {
- case PCI_IO:
- return PCI_0I_O_ADDRESS_REMAP;
- case PCI_REGION0:
- return PCI_0MEMORY0_ADDRESS_REMAP;
- case PCI_REGION1:
- return PCI_0MEMORY1_ADDRESS_REMAP;
- case PCI_REGION2:
- return PCI_0MEMORY2_ADDRESS_REMAP;
- case PCI_REGION3:
- return PCI_0MEMORY3_ADDRESS_REMAP;
- }
- case PCI_HOST1:
- switch (region) {
- case PCI_IO:
- return PCI_1I_O_ADDRESS_REMAP;
- case PCI_REGION0:
- return PCI_1MEMORY0_ADDRESS_REMAP;
- case PCI_REGION1:
- return PCI_1MEMORY1_ADDRESS_REMAP;
- case PCI_REGION2:
- return PCI_1MEMORY2_ADDRESS_REMAP;
- case PCI_REGION3:
- return PCI_1MEMORY3_ADDRESS_REMAP;
- }
- }
- return PCI_0MEMORY0_ADDRESS_REMAP;
-}
-
-bool pciMapSpace (PCI_HOST host, PCI_REGION region, unsigned int remapBase,
- unsigned int bankBase, unsigned int bankLength)
-{
- unsigned int low = 0xfff;
- unsigned int high = 0x0;
- unsigned int regOffset = pciGetRegOffset (host, region);
- unsigned int remapOffset = pciGetRemapOffset (host, region);
-
- if (bankLength != 0) {
- low = (bankBase >> 20) & 0xfff;
- high = ((bankBase + bankLength) >> 20) - 1;
- }
-
- GT_REG_WRITE (regOffset, low | (1 << 24)); /* no swapping */
- GT_REG_WRITE (regOffset + 8, high);
-
- if (bankLength != 0) { /* must do AFTER writing maps */
- GT_REG_WRITE (remapOffset, remapBase >> 20); /* sorry, 32 bits only.
- dont support upper 32
- in this driver */
- }
- return true;
-}
-
-unsigned int pciGetSpaceBase (PCI_HOST host, PCI_REGION region)
-{
- unsigned int low;
- unsigned int regOffset = pciGetRegOffset (host, region);
-
- GT_REG_READ (regOffset, &low);
- return (low & 0xfff) << 20;
-}
-
-unsigned int pciGetSpaceSize (PCI_HOST host, PCI_REGION region)
-{
- unsigned int low, high;
- unsigned int regOffset = pciGetRegOffset (host, region);
-
- GT_REG_READ (regOffset, &low);
- GT_REG_READ (regOffset + 8, &high);
- high &= 0xfff;
- low &= 0xfff;
- if (high <= low)
- return 0;
- return (high + 1 - low) << 20;
-}
-
-/********************************************************************
-* pciMapMemoryBank - Maps PCI_host memory bank "bank" for the slave.
-*
-* Inputs: base and size of PCI SCS
-*********************************************************************/
-void pciMapMemoryBank (PCI_HOST host, MEMORY_BANK bank,
- unsigned int pciDramBase, unsigned int pciDramSize)
-{
- pciDramBase = pciDramBase & 0xfffff000;
- pciDramBase = pciDramBase | (pciReadConfigReg (host,
- PCI_SCS_0_BASE_ADDRESS
- + 4 * bank,
- SELF) & 0x00000fff);
- pciWriteConfigReg (host, PCI_SCS_0_BASE_ADDRESS + 4 * bank, SELF,
- pciDramBase);
- if (pciDramSize == 0)
- pciDramSize++;
- GT_REG_WRITE (pci_scs_bank_size[host][bank], pciDramSize - 1);
-}
-
-
-/********************************************************************
-* pciSetRegionFeatures - This function modifys one of the 8 regions with
-* feature bits given as an input.
-* - Be advised to check the spec before modifying them.
-* Inputs: PCI_PROTECT_REGION region - one of the eight regions.
-* unsigned int features - See file: pci.h there are defintion for those
-* region features.
-* unsigned int baseAddress - The region base Address.
-* unsigned int topAddress - The region top Address.
-* Returns: false if one of the parameters is erroneous true otherwise.
-*********************************************************************/
-bool pciSetRegionFeatures (PCI_HOST host, PCI_ACCESS_REGIONS region,
- unsigned int features, unsigned int baseAddress,
- unsigned int regionLength)
-{
- unsigned int accessLow;
- unsigned int accessHigh;
- unsigned int accessTop = baseAddress + regionLength;
-
- if (regionLength == 0) { /* close the region. */
- pciDisableAccessRegion (host, region);
- return true;
- }
- /* base Address is store is bits [11:0] */
- accessLow = (baseAddress & 0xfff00000) >> 20;
- /* All the features are update according to the defines in pci.h (to be on
- the safe side we disable bits: [11:0] */
- accessLow = accessLow | (features & 0xfffff000);
- /* write to the Low Access Region register */
- GT_REG_WRITE (pci_access_control_base_0_low[host] + 0x10 * region,
- accessLow);
-
- accessHigh = (accessTop & 0xfff00000) >> 20;
-
- /* write to the High Access Region register */
- GT_REG_WRITE (pci_access_control_top_0[host] + 0x10 * region,
- accessHigh - 1);
- return true;
-}
-
-/********************************************************************
-* pciDisableAccessRegion - Disable The given Region by writing MAX size
-* to its low Address and MIN size to its high Address.
-*
-* Inputs: PCI_ACCESS_REGIONS region - The region we to be Disabled.
-* Returns: N/A.
-*********************************************************************/
-void pciDisableAccessRegion (PCI_HOST host, PCI_ACCESS_REGIONS region)
-{
- /* writing back the registers default values. */
- GT_REG_WRITE (pci_access_control_base_0_low[host] + 0x10 * region,
- 0x01001fff);
- GT_REG_WRITE (pci_access_control_top_0[host] + 0x10 * region, 0);
-}
-
-/********************************************************************
-* pciArbiterEnable - Enables PCI-0`s Arbitration mechanism.
-*
-* Inputs: N/A
-* Returns: true.
-*********************************************************************/
-bool pciArbiterEnable (PCI_HOST host)
-{
- unsigned int regData;
-
- GT_REG_READ (pci_arbiter_control[host], &regData);
- GT_REG_WRITE (pci_arbiter_control[host], regData | BIT31);
- return true;
-}
-
-/********************************************************************
-* pciArbiterDisable - Disable PCI-0`s Arbitration mechanism.
-*
-* Inputs: N/A
-* Returns: true
-*********************************************************************/
-bool pciArbiterDisable (PCI_HOST host)
-{
- unsigned int regData;
-
- GT_REG_READ (pci_arbiter_control[host], &regData);
- GT_REG_WRITE (pci_arbiter_control[host], regData & 0x7fffffff);
- return true;
-}
-
-/********************************************************************
-* pciParkingDisable - Park on last option disable, with this function you can
-* disable the park on last mechanism for each agent.
-* disabling this option for all agents results parking
-* on the internal master.
-*
-* Inputs: PCI_AGENT_PARK internalAgent - parking Disable for internal agent.
-* PCI_AGENT_PARK externalAgent0 - parking Disable for external#0 agent.
-* PCI_AGENT_PARK externalAgent1 - parking Disable for external#1 agent.
-* PCI_AGENT_PARK externalAgent2 - parking Disable for external#2 agent.
-* PCI_AGENT_PARK externalAgent3 - parking Disable for external#3 agent.
-* PCI_AGENT_PARK externalAgent4 - parking Disable for external#4 agent.
-* PCI_AGENT_PARK externalAgent5 - parking Disable for external#5 agent.
-* Returns: true
-*********************************************************************/
-bool pciParkingDisable (PCI_HOST host, PCI_AGENT_PARK internalAgent,
- PCI_AGENT_PARK externalAgent0,
- PCI_AGENT_PARK externalAgent1,
- PCI_AGENT_PARK externalAgent2,
- PCI_AGENT_PARK externalAgent3,
- PCI_AGENT_PARK externalAgent4,
- PCI_AGENT_PARK externalAgent5)
-{
- unsigned int regData;
- unsigned int writeData;
-
- GT_REG_READ (pci_arbiter_control[host], &regData);
- writeData = (internalAgent << 14) + (externalAgent0 << 15) +
- (externalAgent1 << 16) + (externalAgent2 << 17) +
- (externalAgent3 << 18) + (externalAgent4 << 19) +
- (externalAgent5 << 20);
- regData = (regData & ~(0x7f << 14)) | writeData;
- GT_REG_WRITE (pci_arbiter_control[host], regData);
- return true;
-}
-
-/********************************************************************
-* pciSetRegionSnoopMode - This function modifys one of the 4 regions which
-* supports Cache Coherency in the PCI_n interface.
-* Inputs: region - One of the four regions.
-* snoopType - There is four optional Types:
-* 1. No Snoop.
-* 2. Snoop to WT region.
-* 3. Snoop to WB region.
-* 4. Snoop & Invalidate to WB region.
-* baseAddress - Base Address of this region.
-* regionLength - Region length.
-* Returns: false if one of the parameters is wrong otherwise return true.
-*********************************************************************/
-bool pciSetRegionSnoopMode (PCI_HOST host, PCI_SNOOP_REGION region,
- PCI_SNOOP_TYPE snoopType,
- unsigned int baseAddress,
- unsigned int regionLength)
-{
- unsigned int snoopXbaseAddress;
- unsigned int snoopXtopAddress;
- unsigned int data;
- unsigned int snoopHigh = baseAddress + regionLength;
-
- if ((region > PCI_SNOOP_REGION3) || (snoopType > PCI_SNOOP_WB))
- return false;
- snoopXbaseAddress =
- pci_snoop_control_base_0_low[host] + 0x10 * region;
- snoopXtopAddress = pci_snoop_control_top_0[host] + 0x10 * region;
- if (regionLength == 0) { /* closing the region */
- GT_REG_WRITE (snoopXbaseAddress, 0x0000ffff);
- GT_REG_WRITE (snoopXtopAddress, 0);
- return true;
- }
- baseAddress = baseAddress & 0xfff00000; /* Granularity of 1MByte */
- data = (baseAddress >> 20) | snoopType << 12;
- GT_REG_WRITE (snoopXbaseAddress, data);
- snoopHigh = (snoopHigh & 0xfff00000) >> 20;
- GT_REG_WRITE (snoopXtopAddress, snoopHigh - 1);
- return true;
-}
-
-/*
- *
- */
-
-static int gt_read_config_dword (struct pci_controller *hose,
- pci_dev_t dev, int offset, u32 * value)
-{
- int bus = PCI_BUS (dev);
-
- if ((bus == local_buses[0]) || (bus == local_buses[1])) {
- *value = pciReadConfigReg ((PCI_HOST) hose->cfg_addr, offset,
- PCI_DEV (dev));
- } else {
- *value = pciOverBridgeReadConfigReg ((PCI_HOST) hose->
- cfg_addr, offset,
- PCI_DEV (dev), bus);
- }
- return 0;
-}
-
-static int gt_write_config_dword (struct pci_controller *hose,
- pci_dev_t dev, int offset, u32 value)
-{
- int bus = PCI_BUS (dev);
-
- if ((bus == local_buses[0]) || (bus == local_buses[1])) {
- pciWriteConfigReg ((PCI_HOST) hose->cfg_addr, offset,
- PCI_DEV (dev), value);
- } else {
- pciOverBridgeWriteConfigReg ((PCI_HOST) hose->cfg_addr,
- offset, PCI_DEV (dev), value,
- bus);
- }
- return 0;
-}
-
-/*
- *
- */
-
-static void gt_setup_ide (struct pci_controller *hose,
- pci_dev_t dev, struct pci_config_table *entry)
-{
- static const int ide_bar[] = { 8, 4, 8, 4, 0, 0 };
- u32 bar_response, bar_value;
- int bar;
-
- for (bar = 0; bar < 6; bar++) {
- pci_write_config_dword (dev, PCI_BASE_ADDRESS_0 + bar * 4,
- 0x0);
- pci_read_config_dword (dev, PCI_BASE_ADDRESS_0 + bar * 4,
- &bar_response);
-
- pciauto_region_allocate (bar_response &
- PCI_BASE_ADDRESS_SPACE_IO ? hose->
- pci_io : hose->pci_mem, ide_bar[bar],
- &bar_value);
-
- pci_write_config_dword (dev, PCI_BASE_ADDRESS_0 + bar * 4,
- bar_value);
- }
-}
-
-#ifndef CONFIG_P3G4
-static void gt_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
-{
- unsigned char pin, irq;
-
- pci_read_config_byte (dev, PCI_INTERRUPT_PIN, &pin);
-
- if (pin == 1) { /* only allow INT A */
- irq = pci_irq_swizzle[(PCI_HOST) hose->
- cfg_addr][PCI_DEV (dev)];
- if (irq)
- pci_write_config_byte (dev, PCI_INTERRUPT_LINE, irq);
- }
-}
-#endif
-
-struct pci_config_table gt_config_table[] = {
- {PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE,
- PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, gt_setup_ide},
-
- {}
-};
-
-struct pci_controller pci0_hose = {
-#ifndef CONFIG_P3G4
- fixup_irq:gt_fixup_irq,
-#endif
- config_table:gt_config_table,
-};
-
-struct pci_controller pci1_hose = {
-#ifndef CONFIG_P3G4
- fixup_irq:gt_fixup_irq,
-#endif
- config_table:gt_config_table,
-};
-
-void pci_init_board (void)
-{
- unsigned int command;
-
- pci0_hose.first_busno = 0;
- pci0_hose.last_busno = 0xff;
- local_buses[0] = pci0_hose.first_busno;
- /* PCI memory space */
- pci_set_region (pci0_hose.regions + 0,
- CFG_PCI0_0_MEM_SPACE,
- CFG_PCI0_0_MEM_SPACE,
- CFG_PCI0_MEM_SIZE, PCI_REGION_MEM);
-
- /* PCI I/O space */
- pci_set_region (pci0_hose.regions + 1,
- CFG_PCI0_IO_SPACE_PCI,
- CFG_PCI0_IO_SPACE, CFG_PCI0_IO_SIZE, PCI_REGION_IO);
-
- pci_set_ops (&pci0_hose,
- pci_hose_read_config_byte_via_dword,
- pci_hose_read_config_word_via_dword,
- gt_read_config_dword,
- pci_hose_write_config_byte_via_dword,
- pci_hose_write_config_word_via_dword,
- gt_write_config_dword);
-
- pci0_hose.region_count = 2;
-
- pci0_hose.cfg_addr = (unsigned int *) PCI_HOST0;
-
- pci_register_hose (&pci0_hose);
-
-#ifndef CONFIG_P3G4
- pciArbiterEnable (PCI_HOST0);
- pciParkingDisable (PCI_HOST0, 1, 1, 1, 1, 1, 1, 1);
-#endif
-
- command = pciReadConfigReg (PCI_HOST0, PCI_COMMAND, SELF);
- command |= PCI_COMMAND_MASTER;
- pciWriteConfigReg (PCI_HOST0, PCI_COMMAND, SELF, command);
-
- pci0_hose.last_busno = pci_hose_scan (&pci0_hose);
-
- command = pciReadConfigReg (PCI_HOST0, PCI_COMMAND, SELF);
- command |= PCI_COMMAND_MEMORY;
- pciWriteConfigReg (PCI_HOST0, PCI_COMMAND, SELF, command);
-
- pci1_hose.first_busno = pci0_hose.last_busno + 1;
- pci1_hose.last_busno = 0xff;
- pci1_hose.current_busno = pci0_hose.current_busno;
- local_buses[1] = pci1_hose.first_busno;
-
- /* PCI memory space */
- pci_set_region (pci1_hose.regions + 0,
- CFG_PCI1_0_MEM_SPACE,
- CFG_PCI1_0_MEM_SPACE,
- CFG_PCI1_MEM_SIZE, PCI_REGION_MEM);
-
- /* PCI I/O space */
- pci_set_region (pci1_hose.regions + 1,
- CFG_PCI1_IO_SPACE_PCI,
- CFG_PCI1_IO_SPACE, CFG_PCI1_IO_SIZE, PCI_REGION_IO);
-
- pci_set_ops (&pci1_hose,
- pci_hose_read_config_byte_via_dword,
- pci_hose_read_config_word_via_dword,
- gt_read_config_dword,
- pci_hose_write_config_byte_via_dword,
- pci_hose_write_config_word_via_dword,
- gt_write_config_dword);
-
- pci1_hose.region_count = 2;
-
- pci1_hose.cfg_addr = (unsigned int *) PCI_HOST1;
-
- pci_register_hose (&pci1_hose);
-
-#ifndef CONFIG_P3G4
- pciArbiterEnable (PCI_HOST1);
- pciParkingDisable (PCI_HOST1, 1, 1, 1, 1, 1, 1, 1);
-#endif
-
- command = pciReadConfigReg (PCI_HOST1, PCI_COMMAND, SELF);
- command |= PCI_COMMAND_MASTER;
- pciWriteConfigReg (PCI_HOST1, PCI_COMMAND, SELF, command);
-
- pci1_hose.last_busno = pci_hose_scan (&pci1_hose);
-
- command = pciReadConfigReg (PCI_HOST1, PCI_COMMAND, SELF);
- command |= PCI_COMMAND_MEMORY;
- pciWriteConfigReg (PCI_HOST1, PCI_COMMAND, SELF, command);
-}
diff --git a/board/evb64260/sdram_init.c b/board/evb64260/sdram_init.c
deleted file mode 100644
index fae6d1090d..0000000000
--- a/board/evb64260/sdram_init.c
+++ /dev/null
@@ -1,663 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@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
- */
-
-/* sdram_init.c - automatic memory sizing */
-
-#include <common.h>
-#include <74xx_7xx.h>
-#include <galileo/memory.h>
-#include <galileo/pci.h>
-#include <galileo/gt64260R.h>
-#include <net.h>
-
-#include "eth.h"
-#include "mpsc.h"
-#include "i2c.h"
-#include "64260.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* #define DEBUG */
-#define MAP_PCI
-
-#ifdef DEBUG
-#define DP(x) x
-#else
-#define DP(x)
-#endif
-
-#define GB (1 << 30)
-
-/* structure to store the relevant information about an sdram bank */
-typedef struct sdram_info {
- uchar drb_size;
- uchar registered, ecc;
- uchar tpar;
- uchar tras_clocks;
- uchar burst_len;
- uchar banks, slot;
- int size; /* detected size, not from I2C but from dram_size() */
-} sdram_info_t;
-
-#ifdef DEBUG
-void dump_dimm_info (struct sdram_info *d)
-{
- static const char *ecc_legend[] = { "", " Parity", " ECC" };
-
- printf ("dimm%s %sDRAM: %dMibytes:\n",
- ecc_legend[d->ecc],
- d->registered ? "R" : "", (d->size >> 20));
- printf (" drb=%d tpar=%d tras=%d burstlen=%d banks=%d slot=%d\n",
- d->drb_size, d->tpar, d->tras_clocks, d->burst_len,
- d->banks, d->slot);
-}
-#endif
-
-static int
-memory_map_bank (unsigned int bankNo,
- unsigned int bankBase, unsigned int bankLength)
-{
-#ifdef DEBUG
- if (bankLength > 0) {
- printf ("mapping bank %d at %08x - %08x\n",
- bankNo, bankBase, bankBase + bankLength - 1);
- } else {
- printf ("unmapping bank %d\n", bankNo);
- }
-#endif
-
- memoryMapBank (bankNo, bankBase, bankLength);
-
- return 0;
-}
-
-#ifdef MAP_PCI
-static int
-memory_map_bank_pci (unsigned int bankNo,
- unsigned int bankBase, unsigned int bankLength)
-{
- PCI_HOST host;
-
- for (host = PCI_HOST0; host <= PCI_HOST1; host++) {
- const int features =
- PREFETCH_ENABLE |
- DELAYED_READ_ENABLE |
- AGGRESSIVE_PREFETCH |
- READ_LINE_AGGRESSIVE_PREFETCH |
- READ_MULTI_AGGRESSIVE_PREFETCH |
- MAX_BURST_4 | PCI_NO_SWAP;
-
- pciMapMemoryBank (host, bankNo, bankBase, bankLength);
-
- pciSetRegionSnoopMode (host, bankNo, PCI_SNOOP_WB, bankBase,
- bankLength);
-
- pciSetRegionFeatures (host, bankNo, features, bankBase,
- bankLength);
- }
- return 0;
-}
-#endif
-
-/* ------------------------------------------------------------------------- */
-
-/* much of this code is based on (or is) the code in the pip405 port */
-/* thanks go to the authors of said port - Josh */
-
-
-/*
- * translate ns.ns/10 coding of SPD timing values
- * into 10 ps unit values
- */
-static inline unsigned short NS10to10PS (unsigned char spd_byte)
-{
- unsigned short ns, ns10;
-
- /* isolate upper nibble */
- ns = (spd_byte >> 4) & 0x0F;
- /* isolate lower nibble */
- ns10 = (spd_byte & 0x0F);
-
- return (ns * 100 + ns10 * 10);
-}
-
-/*
- * translate ns coding of SPD timing values
- * into 10 ps unit values
- */
-static inline unsigned short NSto10PS (unsigned char spd_byte)
-{
- return (spd_byte * 100);
-}
-
-#ifdef CONFIG_ZUMA_V2
-static int check_dimm (uchar slot, sdram_info_t * info)
-{
- /* assume 2 dimms, 2 banks each 256M - we dont have an
- * dimm i2c so rely on the detection routines later */
-
- memset (info, 0, sizeof (*info));
-
- info->slot = slot;
- info->banks = 2; /* Detect later */
- info->registered = 0;
- info->drb_size = 32; /* 16 - 256MBit, 32 - 512MBit
- but doesn't matter, both do same
- thing in setup_sdram() */
- info->tpar = 3;
- info->tras_clocks = 5;
- info->burst_len = 4;
-#ifdef CONFIG_ECC
- info->ecc = 0; /* Detect later */
-#endif /* CONFIG_ECC */
- return 0;
-}
-
-#elif defined(CONFIG_P3G4)
-
-static int check_dimm (uchar slot, sdram_info_t * info)
-{
- memset (info, 0, sizeof (*info));
-
- if (slot)
- return 0;
-
- info->slot = slot;
- info->banks = 1;
- info->registered = 0;
- info->drb_size = 4;
- info->tpar = 3;
- info->tras_clocks = 6;
- info->burst_len = 4;
-#ifdef CONFIG_ECC
- info->ecc = 2;
-#endif
- return 0;
-}
-
-#else /* ! CONFIG_ZUMA_V2 && ! CONFIG_P3G4 */
-
-/* This code reads the SPD chip on the sdram and populates
- * the array which is passed in with the relevant information */
-static int check_dimm (uchar slot, sdram_info_t * info)
-{
- uchar addr = slot == 0 ? DIMM0_I2C_ADDR : DIMM1_I2C_ADDR;
- int ret;
- uchar rows, cols, sdram_banks, supp_cal, width, cal_val;
- ulong tmemclk;
- uchar trp_clocks, trcd_clocks;
- uchar data[128];
-
- get_clocks ();
-
- tmemclk = 1000000000 / (gd->bus_clk / 100); /* in 10 ps units */
-
-#ifdef CONFIG_EVB64260_750CX
- if (0 != slot) {
- printf ("check_dimm: The EVB-64260-750CX only has 1 DIMM,");
- printf (" called with slot=%d insetad!\n", slot);
- return 0;
- }
-#endif
- DP (puts ("before i2c read\n"));
-
- ret = i2c_read (addr, 0, 128, data, 0);
-
- DP (puts ("after i2c read\n"));
-
- /* zero all the values */
- memset (info, 0, sizeof (*info));
-
- if (ret) {
- DP (printf ("No DIMM in slot %d [err = %x]\n", slot, ret));
- return 0;
- }
-
- /* first, do some sanity checks */
- if (data[2] != 0x4) {
- printf ("Not SDRAM in slot %d\n", slot);
- return 0;
- }
-
- /* get various information */
- rows = data[3];
- cols = data[4];
- info->banks = data[5];
- sdram_banks = data[17];
- width = data[13] & 0x7f;
-
- DP (printf
- ("sdram_banks: %d, banks: %d\n", sdram_banks, info->banks));
-
- /* check if the memory is registered */
- if (data[21] & (BIT1 | BIT4))
- info->registered = 1;
-
-#ifdef CONFIG_ECC
- /* check for ECC/parity [0 = none, 1 = parity, 2 = ecc] */
- info->ecc = (data[11] & 2) >> 1;
-#endif
-
- /* bit 1 is CL2, bit 2 is CL3 */
- supp_cal = (data[18] & 0x6) >> 1;
-
- /* compute the relevant clock values */
- trp_clocks = (NSto10PS (data[27]) + (tmemclk - 1)) / tmemclk;
- trcd_clocks = (NSto10PS (data[29]) + (tmemclk - 1)) / tmemclk;
- info->tras_clocks = (NSto10PS (data[30]) + (tmemclk - 1)) / tmemclk;
-
- DP (printf ("trp = %d\ntrcd_clocks = %d\ntras_clocks = %d\n",
- trp_clocks, trcd_clocks, info->tras_clocks));
-
- /* try a CAS latency of 3 first... */
- cal_val = 0;
- if (supp_cal & 3) {
- if (NS10to10PS (data[9]) <= tmemclk)
- cal_val = 3;
- }
-
- /* then 2... */
- if (supp_cal & 2) {
- if (NS10to10PS (data[23]) <= tmemclk)
- cal_val = 2;
- }
-
- DP (printf ("cal_val = %d\n", cal_val));
-
- /* bummer, did't work... */
- if (cal_val == 0) {
- DP (printf ("Couldn't find a good CAS latency\n"));
- return 0;
- }
-
- /* get the largest delay -- these values need to all be the same
- * see Res#6 */
- info->tpar = cal_val;
- if (trp_clocks > info->tpar)
- info->tpar = trp_clocks;
- if (trcd_clocks > info->tpar)
- info->tpar = trcd_clocks;
-
- DP (printf ("tpar set to: %d\n", info->tpar));
-
-#ifdef CFG_BROKEN_CL2
- if (info->tpar == 2) {
- info->tpar = 3;
- DP (printf ("tpar fixed-up to: %d\n", info->tpar));
- }
-#endif
- /* compute the module DRB size */
- info->drb_size =
- (((1 << (rows + cols)) * sdram_banks) * width) / _16M;
-
- DP (printf ("drb_size set to: %d\n", info->drb_size));
-
- /* find the burst len */
- info->burst_len = data[16] & 0xf;
- if ((info->burst_len & 8) == 8) {
- info->burst_len = 1;
- } else if ((info->burst_len & 4) == 4) {
- info->burst_len = 0;
- } else {
- return 0;
- }
-
- info->slot = slot;
- return 0;
-}
-#endif /* ! CONFIG_ZUMA_V2 */
-
-static int setup_sdram_common (sdram_info_t info[2])
-{
- ulong tmp;
- int tpar = 2, tras_clocks = 5, registered = 1, ecc = 2;
-
- if (!info[0].banks && !info[1].banks)
- return 0;
-
- if (info[0].banks) {
- if (info[0].tpar > tpar)
- tpar = info[0].tpar;
- if (info[0].tras_clocks > tras_clocks)
- tras_clocks = info[0].tras_clocks;
- if (!info[0].registered)
- registered = 0;
- if (info[0].ecc != 2)
- ecc = 0;
- }
-
- if (info[1].banks) {
- if (info[1].tpar > tpar)
- tpar = info[1].tpar;
- if (info[1].tras_clocks > tras_clocks)
- tras_clocks = info[1].tras_clocks;
- if (!info[1].registered)
- registered = 0;
- if (info[1].ecc != 2)
- ecc = 0;
- }
-
- /* SDRAM configuration */
- tmp = GTREGREAD (SDRAM_CONFIGURATION);
-
- /* Turn on physical interleave if both DIMMs
- * have even numbers of banks. */
- if ((info[0].banks == 0 || info[0].banks == 2) &&
- (info[1].banks == 0 || info[1].banks == 2)) {
- /* physical interleave on */
- tmp &= ~(1 << 15);
- } else {
- /* physical interleave off */
- tmp |= (1 << 15);
- }
-
- tmp |= (registered << 17);
-
- /* Use buffer 1 to return read data to the CPU
- * See Res #12 */
- tmp |= (1 << 26);
-
- GT_REG_WRITE (SDRAM_CONFIGURATION, tmp);
- DP (printf ("SDRAM config: %08x\n", GTREGREAD (SDRAM_CONFIGURATION)));
-
- /* SDRAM timing */
- tmp = (((tpar == 3) ? 2 : 1) |
- (((tpar == 3) ? 2 : 1) << 2) |
- (((tpar == 3) ? 2 : 1) << 4) | (tras_clocks << 8));
-
-#ifdef CONFIG_ECC
- /* Setup ECC */
- if (ecc == 2)
- tmp |= 1 << 13;
-#endif /* CONFIG_ECC */
-
- GT_REG_WRITE (SDRAM_TIMING, tmp);
- DP (printf ("SDRAM timing: %08x (%d,%d,%d,%d)\n",
- GTREGREAD (SDRAM_TIMING), tpar, tpar, tpar, tras_clocks));
-
- /* SDRAM address decode register */
- /* program this with the default value */
- GT_REG_WRITE (SDRAM_ADDRESS_DECODE, 0x2);
- DP (printf ("SDRAM decode: %08x\n",
- GTREGREAD (SDRAM_ADDRESS_DECODE)));
-
- return 0;
-}
-
-/* sets up the GT properly with information passed in */
-static int setup_sdram (sdram_info_t * info)
-{
- ulong tmp, check;
- ulong *addr = 0;
- int i;
-
- /* sanity checking */
- if (!info->banks)
- return 0;
-
- /* ---------------------------- */
- /* Program the GT with the discovered data */
-
- /* bank parameters */
- tmp = (0xf << 16); /* leave all virt bank pages open */
-
- DP (printf ("drb_size: %d\n", info->drb_size));
- switch (info->drb_size) {
- case 1:
- tmp |= (1 << 14);
- break;
- case 4:
- case 8:
- tmp |= (2 << 14);
- break;
- case 16:
- case 32:
- tmp |= (3 << 14);
- break;
- default:
- printf ("Error in dram size calculation\n");
- return 1;
- }
-
- /* SDRAM bank parameters */
- /* the param registers for slot 1 (banks 2+3) are offset by 0x8 */
- GT_REG_WRITE (SDRAM_BANK0PARAMETERS + (info->slot * 0x8), tmp);
- GT_REG_WRITE (SDRAM_BANK1PARAMETERS + (info->slot * 0x8), tmp);
- DP (printf
- ("SDRAM bankparam slot %d (bank %d+%d): %08lx\n", info->slot,
- info->slot * 2, (info->slot * 2) + 1, tmp));
-
- /* set the SDRAM configuration for each bank */
- for (i = info->slot * 2; i < ((info->slot * 2) + info->banks); i++) {
- DP (printf ("*** Running a MRS cycle for bank %d ***\n", i));
-
- /* map the bank */
- memory_map_bank (i, 0, GB / 4);
-
- /* set SDRAM mode */
- GT_REG_WRITE (SDRAM_OPERATION_MODE, 0x3);
- check = GTREGREAD (SDRAM_OPERATION_MODE);
-
- /* dummy write */
- *addr = 0;
-
- /* wait for the command to complete */
- while ((GTREGREAD (SDRAM_OPERATION_MODE) & (1 << 31)) == 0);
-
- /* switch back to normal operation mode */
- GT_REG_WRITE (SDRAM_OPERATION_MODE, 0);
- check = GTREGREAD (SDRAM_OPERATION_MODE);
-
- /* unmap the bank */
- memory_map_bank (i, 0, 0);
- DP (printf ("*** MRS cycle for bank %d done ***\n", i));
- }
-
- return 0;
-}
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-static long int dram_size (long int *base, long int maxsize)
-{
- volatile long int *addr, *b = base;
- long int cnt, val, save1, save2;
-
-#define STARTVAL (1<<20) /* start test at 1M */
- for (cnt = STARTVAL / sizeof (long); cnt < maxsize / sizeof (long);
- cnt <<= 1) {
- addr = base + cnt; /* pointer arith! */
-
- save1 = *addr; /* save contents of addr */
- save2 = *b; /* save contents of base */
-
- *addr = cnt; /* write cnt to addr */
- *b = 0; /* put null at base */
-
- /* check at base address */
- if ((*b) != 0) {
- *addr = save1; /* restore *addr */
- *b = save2; /* restore *b */
- return (0);
- }
- val = *addr; /* read *addr */
-
- *addr = save1;
- *b = save2;
-
- if (val != cnt) {
- /* fix boundary condition.. STARTVAL means zero */
- if (cnt == STARTVAL / sizeof (long))
- cnt = 0;
- return (cnt * sizeof (long));
- }
- }
- return maxsize;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* U-Boot interface function to SDRAM init - this is where all the
- * controlling logic happens */
-long int initdram (int board_type)
-{
- ulong checkbank[4] = {[0 ... 3] = 0 };
- int bank_no;
- ulong total;
- int nhr;
- sdram_info_t dimm_info[2];
-
-
- /* first, use the SPD to get info about the SDRAM */
-
- /* check the NHR bit and skip mem init if it's already done */
- nhr = get_hid0 () & (1 << 16);
-
- if (nhr) {
- printf ("Skipping SDRAM setup due to NHR bit being set\n");
- } else {
- /* DIMM0 */
- check_dimm (0, &dimm_info[0]);
-
- /* DIMM1 */
-#ifndef CONFIG_EVB64260_750CX /* EVB64260_750CX has only 1 DIMM */
- check_dimm (1, &dimm_info[1]);
-#else /* CONFIG_EVB64260_750CX */
- memset (&dimm_info[1], 0, sizeof (sdram_info_t));
-#endif
-
- /* unmap all banks */
- memory_map_bank (0, 0, 0);
- memory_map_bank (1, 0, 0);
- memory_map_bank (2, 0, 0);
- memory_map_bank (3, 0, 0);
-
- /* Now, program the GT with the correct values */
- if (setup_sdram_common (dimm_info)) {
- printf ("Setup common failed.\n");
- }
-
- if (setup_sdram (&dimm_info[0])) {
- printf ("Setup for DIMM1 failed.\n");
- }
-
- if (setup_sdram (&dimm_info[1])) {
- printf ("Setup for DIMM2 failed.\n");
- }
-
- /* set the NHR bit */
- set_hid0 (get_hid0 () | (1 << 16));
- }
- /* next, size the SDRAM banks */
-
- total = 0;
- if (dimm_info[0].banks > 0)
- checkbank[0] = 1;
- if (dimm_info[0].banks > 1)
- checkbank[1] = 1;
- if (dimm_info[0].banks > 2)
- printf ("Error, SPD claims DIMM1 has >2 banks\n");
-
- if (dimm_info[1].banks > 0)
- checkbank[2] = 1;
- if (dimm_info[1].banks > 1)
- checkbank[3] = 1;
- if (dimm_info[1].banks > 2)
- printf ("Error, SPD claims DIMM2 has >2 banks\n");
-
- /* Generic dram sizer: works even if we don't have i2c DIMMs,
- * as long as the timing settings are more or less correct */
-
- /*
- * pass 1: size all the banks, using first bat (0-256M)
- * limitation: we only support 256M per bank due to
- * us only having 1 BAT for all DRAM
- */
- for (bank_no = 0; bank_no < CFG_DRAM_BANKS; bank_no++) {
- /* skip over banks that are not populated */
- if (!checkbank[bank_no])
- continue;
-
- DP (printf ("checking bank %d\n", bank_no));
-
- memory_map_bank (bank_no, 0, GB / 4);
- checkbank[bank_no] = dram_size (NULL, GB / 4);
- memory_map_bank (bank_no, 0, 0);
-
- DP (printf ("bank %d %08lx\n", bank_no, checkbank[bank_no]));
- }
-
- /*
- * pass 2: contiguously map each bank into physical address
- * space.
- */
- dimm_info[0].banks = dimm_info[1].banks = 0;
- for (bank_no = 0; bank_no < CFG_DRAM_BANKS; bank_no++) {
- if (!checkbank[bank_no])
- continue;
-
- dimm_info[bank_no / 2].banks++;
- dimm_info[bank_no / 2].size += checkbank[bank_no];
-
- memory_map_bank (bank_no, total, checkbank[bank_no]);
-#ifdef MAP_PCI
- memory_map_bank_pci (bank_no, total, checkbank[bank_no]);
-#endif
- total += checkbank[bank_no];
- }
-
-#ifdef CONFIG_ECC
-#ifdef CONFIG_ZUMA_V2
- /*
- * We always enable ECC when bank 2 and 3 are unpopulated
- * If we 2 or 3 are populated, we CAN'T support ECC.
- * (Zuma boards only support ECC in banks 0 and 1; assume that
- * in that configuration, ECC chips are mounted, even for stacked
- * chips)
- */
- if (checkbank[2] == 0 && checkbank[3] == 0) {
- dimm_info[0].ecc = 2;
- GT_REG_WRITE (SDRAM_TIMING,
- GTREGREAD (SDRAM_TIMING) | (1 << 13));
- /* TODO: do we have to run MRS cycles again? */
- }
-#endif /* CONFIG_ZUMA_V2 */
-
- if (GTREGREAD (SDRAM_TIMING) & (1 << 13)) {
- puts ("[ECC] ");
- }
-#endif /* CONFIG_ECC */
-
-#ifdef DEBUG
- dump_dimm_info (&dimm_info[0]);
- dump_dimm_info (&dimm_info[1]);
-#endif
- /* TODO: return at MOST 256M? */
- /* return total > GB/4 ? GB/4 : total; */
- return total;
-}
diff --git a/board/evb64260/serial.c b/board/evb64260/serial.c
deleted file mode 100644
index 191445c691..0000000000
--- a/board/evb64260/serial.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@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
- */
-
-/*
- * serial.c - serial support for the gal ev board
- */
-
-/* supports both the 16650 duart and the MPSC */
-
-#include <common.h>
-#include <command.h>
-#include <galileo/memory.h>
-
-#if (defined CFG_INIT_CHAN1) || (defined CFG_INIT_CHAN2)
-#include <ns16550.h>
-#endif
-
-#include "serial.h"
-
-#include "mpsc.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if (defined CFG_INIT_CHAN1) || (defined CFG_INIT_CHAN2)
-const NS16550_t COM_PORTS[] = { (NS16550_t) CFG_NS16550_COM1,
- (NS16550_t) CFG_NS16550_COM2 };
-#endif
-
-#ifdef CONFIG_MPSC
-
-int serial_init (void)
-{
-#if (defined CFG_INIT_CHAN1) || (defined CFG_INIT_CHAN2)
- int clock_divisor = CFG_NS16550_CLK / 16 / gd->baudrate;
-#endif
-
- mpsc_init(gd->baudrate);
-
- /* init the DUART chans so that KGDB in the kernel can use them */
-#ifdef CFG_INIT_CHAN1
- NS16550_reinit(COM_PORTS[0], clock_divisor);
-#endif
-#ifdef CFG_INIT_CHAN2
- NS16550_reinit(COM_PORTS[1], clock_divisor);
-#endif
- return (0);
-}
-
-void
-serial_putc(const char c)
-{
- if (c == '\n')
- mpsc_putchar('\r');
-
- mpsc_putchar(c);
-}
-
-int
-serial_getc(void)
-{
- return mpsc_getchar();
-}
-
-int
-serial_tstc(void)
-{
- return mpsc_test_char();
-}
-
-void
-serial_setbrg (void)
-{
- galbrg_set_baudrate(CONFIG_MPSC_PORT, gd->baudrate);
-}
-
-#else /* ! CONFIG_MPSC */
-
-int serial_init (void)
-{
- int clock_divisor = CFG_NS16550_CLK / 16 / gd->baudrate;
-
-#ifdef CFG_INIT_CHAN1
- (void)NS16550_init(COM_PORTS[0], clock_divisor);
-#endif
-#ifdef CFG_INIT_CHAN2
- (void)NS16550_init(COM_PORTS[1], clock_divisor);
-#endif
-
- return (0);
-}
-
-void
-serial_putc(const char c)
-{
- if (c == '\n')
- NS16550_putc(COM_PORTS[CFG_DUART_CHAN], '\r');
-
- NS16550_putc(COM_PORTS[CFG_DUART_CHAN], c);
-}
-
-int
-serial_getc(void)
-{
- return NS16550_getc(COM_PORTS[CFG_DUART_CHAN]);
-}
-
-int
-serial_tstc(void)
-{
- return NS16550_tstc(COM_PORTS[CFG_DUART_CHAN]);
-}
-
-void
-serial_setbrg (void)
-{
- int clock_divisor = CFG_NS16550_CLK / 16 / gd->baudrate;
-
-#ifdef CFG_INIT_CHAN1
- NS16550_reinit(COM_PORTS[0], clock_divisor);
-#endif
-#ifdef CFG_INIT_CHAN2
- NS16550_reinit(COM_PORTS[1], clock_divisor);
-#endif
-}
-
-#endif /* CONFIG_MPSC */
-
-void
-serial_puts (const char *s)
-{
- while (*s) {
- serial_putc (*s++);
- }
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-void
-kgdb_serial_init(void)
-{
-}
-
-void
-putDebugChar (int c)
-{
- serial_putc (c);
-}
-
-void
-putDebugStr (const char *str)
-{
- serial_puts (str);
-}
-
-int
-getDebugChar (void)
-{
- return serial_getc();
-}
-
-void
-kgdb_interruptible (int yes)
-{
- return;
-}
-#endif /* CFG_CMD_KGDB */
diff --git a/board/evb64260/serial.h b/board/evb64260/serial.h
deleted file mode 100644
index bac9253852..0000000000
--- a/board/evb64260/serial.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* 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/evb64260/u-boot.lds b/board/evb64260/u-boot.lds
deleted file mode 100644
index d89eb6cff2..0000000000
--- a/board/evb64260/u-boot.lds
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@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
- */
-
-/*
- * u-boot.lds - linker script for U-Boot on the Galileo Eval Board.
- */
-
-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/74xx_7xx/start.o (.text)
-
-/* store the environment in a seperate sector in the boot flash */
-/* . = env_offset; */
-/* common/environment.o(.text) */
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/zuma_pbb.c b/board/evb64260/zuma_pbb.c
deleted file mode 100644
index d64025afd7..0000000000
--- a/board/evb64260/zuma_pbb.c
+++ /dev/null
@@ -1,220 +0,0 @@
-#include <common.h>
-#include <malloc.h>
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-#include <command.h>
-#endif
-
-#include <pci.h>
-#include <galileo/pci.h>
-#include "zuma_pbb.h"
-
-#undef DEBUG
-
-#define PAT_LO 0x00010203
-#define PAT_HI 0x04050607
-
-static PBB_DMA_REG_MAP *zuma_pbb_reg = NULL;
-static char test_buf1[2048];
-static char test_buf2[2048];
-void zuma_init_pbb(void);
-int zuma_mbox_init(void);
-int zuma_test_dma(int cmd, int size);
-
-int zuma_test_dma (int cmd, int size)
-{
- static const char *const test_legend[] = {
- "write", "verify",
- "copy", "compare",
- "write inc", "verify inc"
- };
- register int i, j;
- unsigned int p1 = ((unsigned int) test_buf1 + 0xff) & (~0xff);
- unsigned int p2 = ((unsigned int) test_buf2 + 0xff) & (~0xff);
- volatile unsigned int *ps = (unsigned int *) p1;
- volatile unsigned int *pd = (unsigned int *) p2;
- unsigned int funct, pat_lo = PAT_LO, pat_hi = PAT_HI;
- DMA_INT_STATUS stat;
- int ret = 0;
-
- if (!zuma_pbb_reg) {
- printf ("not initted\n");
- return -1;
- }
-
- if (cmd < 0 || cmd > 5) {
- printf ("inv cmd %d\n", cmd);
- return -1;
- }
-
- if (cmd == 2 || cmd == 3) {
- /* not implemented */
- return 0;
- }
-
- if (size <= 0 || size > 1024)
- size = 1024;
-
- size &= (~7); /* throw away bottom 3 bits */
-
- p1 = ((unsigned int) test_buf1 + 0xff) & (~0xff);
- p2 = ((unsigned int) test_buf2 + 0xff) & (~0xff);
-
- memset ((void *) p1, 0, size);
- memset ((void *) p2, 0, size);
-
- for (i = 0; i < size / 4; i += 2) {
- ps[i] = pat_lo;
- ps[i + 1] = pat_hi;
- if (cmd == 4 || cmd == 5) {
- unsigned char *pl = (unsigned char *) &pat_lo;
- unsigned char *ph = (unsigned char *) &pat_hi;
-
- for (j = 0; j < 4; j++) {
- pl[j] += 8;
- ph[j] += 8;
- }
- }
- }
-
- funct = (1 << 31) | (cmd << 24) | (size);
-
- zuma_pbb_reg->int_mask.pci_bits.chan0 =
- EOF_RX_FLAG | EOF_TX_FLAG | EOB_TX_FLAG;
-
- zuma_pbb_reg->debug_57 = PAT_LO; /* patl */
- zuma_pbb_reg->debug_58 = PAT_HI; /* path */
-
- zuma_pbb_reg->debug_54 = cpu_to_le32 (p1); /* src 0x01b0 */
- zuma_pbb_reg->debug_55 = cpu_to_le32 (p2); /* dst 0x01b8 */
- zuma_pbb_reg->debug_56 = cpu_to_le32 (funct); /* func, 0x01c0 */
-
- /* give DMA time to chew on things.. dont use DRAM or PCI */
- /* if you can avoid it. */
- do {
- for (i = 0; i < 1000 * 10; i++);
- } while (le32_to_cpu (zuma_pbb_reg->debug_56) & (1 << 31));
-
- stat.word = zuma_pbb_reg->status.word;
- zuma_pbb_reg->int_mask.word = 0;
-
- printf ("stat: %08x (%x)\n", stat.word, stat.pci_bits.chan0);
-
- printf ("func: %08x\n", le32_to_cpu (zuma_pbb_reg->debug_56));
- printf ("src @%08x: %08x %08x %08x %08x\n", p1, ps[0], ps[1], ps[2],
- ps[3]);
- printf ("dst @%08x: %08x %08x %08x %08x\n", p2, pd[0], pd[1], pd[2],
- pd[3]);
- printf ("func: %08x\n", le32_to_cpu (zuma_pbb_reg->debug_56));
-
-
- if (cmd == 0 || cmd == 4) {
- /* this is a write */
- if (!(stat.pci_bits.chan0 & EOF_RX_FLAG) || /* not done */
- (memcmp ((void *) ps, (void *) pd, size) != 0)) { /* cmp error */
- for (i = 0; i < size / 4; i += 2) {
- if ((ps[i] != pd[i]) || (ps[i + 1] != pd[i + 1])) {
- printf ("s @%p:%08x %08x\n", &ps[i], ps[i], ps[i + 1]);
- printf ("d @%p:%08x %08x\n", &pd[i], pd[i], pd[i + 1]);
- }
- }
- ret = -1;
- }
- } else {
- /* this is a verify */
- if (!(stat.pci_bits.chan0 & EOF_TX_FLAG) || /* not done */
- (stat.pci_bits.chan0 & EOB_TX_FLAG)) { /* cmp error */
- printf ("%08x: %08x %08x\n",
- le32_to_cpu (zuma_pbb_reg->debug_63),
- zuma_pbb_reg->debug_61, zuma_pbb_reg->debug_62);
- ret = -1;
- }
- }
-
- printf ("%s cmd %d, %d bytes: %s!\n", test_legend[cmd], cmd, size,
- (ret == 0) ? "PASSED" : "FAILED");
- return 0;
-}
-
-void zuma_init_pbb (void)
-{
- unsigned int iobase;
- pci_dev_t dev =
- pci_find_device (VENDOR_ID_ZUMA, DEVICE_ID_ZUMA_PBB, 0);
-
- if (dev == -1) {
- printf ("no zuma pbb\n");
- return;
- }
-
- pci_read_config_dword (dev, PCI_BASE_ADDRESS_0, &iobase);
-
- zuma_pbb_reg =
- (PBB_DMA_REG_MAP *) (iobase & PCI_BASE_ADDRESS_MEM_MASK);
-
- if (!zuma_pbb_reg) {
- printf ("zuma pbb bar none! (hah hah, get it?)\n");
- return;
- }
-
- zuma_pbb_reg->int_mask.word = 0;
-
- printf ("pbb @ %p v%d.%d, timestamp %08x\n", zuma_pbb_reg,
- zuma_pbb_reg->version.pci_bits.rev_major,
- zuma_pbb_reg->version.pci_bits.rev_minor,
- zuma_pbb_reg->timestamp);
-
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-
-static int last_cmd = 4; /* write increment */
-static int last_size = 64;
-
-int
-do_zuma_init_pbb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- zuma_init_pbb ();
- return 0;
-}
-
-int
-do_zuma_test_dma (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- if (argc > 1) {
- last_cmd = simple_strtoul (argv[1], NULL, 10);
- }
- if (argc > 2) {
- last_size = simple_strtoul (argv[2], NULL, 10);
- }
- zuma_test_dma (last_cmd, last_size);
- return 0;
-}
-
-int
-do_zuma_init_mbox (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- zuma_mbox_init ();
- return 0;
-}
-
-U_BOOT_CMD(
- zinit, 1, 0, do_zuma_init_pbb,
- "zinit - init zuma pbb\n",
- "\n"
- " - init zuma pbb\n"
-);
-U_BOOT_CMD(
- zdtest, 3, 1, do_zuma_test_dma,
- "zdtest - run dma test\n",
- "[cmd [count]]\n"
- " - run dma cmd (w=0,v=1,cp=2,cmp=3,wi=4,vi=5), count bytes\n"
-);
-U_BOOT_CMD(
- zminit, 1, 0, do_zuma_init_mbox,
- "zminit - init zuma mbox\n",
- "\n"
- " - init zuma mbox\n"
-);
-
-#endif /* CFG_CMD_BSP */
diff --git a/board/evb64260/zuma_pbb.h b/board/evb64260/zuma_pbb.h
deleted file mode 100644
index 300b2fe8cc..0000000000
--- a/board/evb64260/zuma_pbb.h
+++ /dev/null
@@ -1,346 +0,0 @@
-#ifndef ZUMA_PBB_H
-#define ZUMA_PBB_H
-
-#define MAX_NUM_BUFFER_PER_RING 32
-
-#ifdef __BIG_ENDIAN
-#define cpu_bits _be_s_bits /* use with le32_to_cpu only */
-#define pci_bits _be_bits /* may contain swapped bytes,
- but dont need le32_to_cpu */
-#endif
-
-#ifdef __LITTLE_ENDIAN
-#define cpu_bits _le_bits
-#define pci_bits _le_bits
-#endif
-
-#define VENDOR_ID_ZUMA 0x1172
-#define DEVICE_ID_ZUMA_PBB 0x0004
-
-#define RXDBP(chan) (&sip->rx_desc[chan].base) /* ch*8 */
-#define RXDP(chan) (&sip->rx_desc[chan].current) /* ch*8 + 4 */
-#define TXDBP(chan) (&sip->tx_desc[chan].base) /* ch*8 + 64 */
-#define TXDP(chan) (&sip->tx_desc[chan].current) /* ch*8 + 68 */
-
-#define PBB_DMA_OWN_BIT 0x80000000
-#define PBB_DMA_LAST_BIT 0x40000000
-
-#define EOF_RX_FLAG 1 /* bit 0 */
-#define EOB_RX_FLAG 2 /* bit 1 */
-#define EOF_TX_FLAG 4 /* bit 2 */
-#define EOB_TX_FLAG 8 /* bit 3 */
-
-#define TX_MODE(m) (((m)&7) << 16)
-
-#define RX_DESC(i) (cs->rx_desc[i])
-#define TX_DESC(i) (cs->tx_desc[i])
-
-#define RX_CONTROL(i) (RX_DESC(i).control.word)
-#define RX_CONTROL_SIZE(i) (RX_DESC(i).control.rx.size)
-#define TX_CONTROL(i) (TX_DESC(i).control.word)
-
-#define RX_DATA_P(i) (&RX_DESC(i).ptr)
-#define TX_DATA_P(i) (&TX_DESC(i).ptr)
-
-typedef volatile unsigned char V8;
-typedef volatile unsigned short V16;
-typedef volatile unsigned int V32;
-
-/* RAM descriptor layout */
-typedef struct _tag_dma_descriptor {
- V32 ptr;
- union {
- struct {
- V32 owner:1;
- V32 last:1;
- V32 reserved0: 10;
- V32 tx_mode: 4;
-
- V32 reserved1: 5;
- V32 size: 11;
- } tx;
- struct {
- V32 owner:1;
- V32 last:1;
- V32 reserved0: 14;
-
- V32 reserved1: 5;
- V32 size: 11;
- } rx;
- V32 word;
- } control;
-} DMA_DESCRIPTOR;
-
-/*
- * NOTE: DO NOT USE structure to write non-word values... all registers
- * MUST be written 4 bytes at a time in SI version 0.
- * Non-word writes will result in "unaccessed" bytes written as zero.
- *
- * Byte reads are allowed.
- *
- * V32 pads are because the registers are spaced every 8 bytes (64 bits)
- *
- */
-
-/* NOTE!!! 4 dwords */
-typedef struct _tag_dma_descriptor_ring {
- DMA_DESCRIPTOR *base;
- V32 pad1; /* skip high dword */
- volatile DMA_DESCRIPTOR *current;
- V32 pad3; /* skip high dword */
-} DMA_DESCRIPTOR_RING;
-
-/* 1 dword */
-typedef union _tag_dma_generic {
- struct { /* byte 3 2 1 0 */
- V32 chan7:4; /* bits 31-28 */
- V32 chan6:4; /* bits 27-24 */
- V32 chan5:4; /* bits 23-20 */
- V32 chan4:4; /* bits 19-16 */
- V32 chan3:4; /* bits 15-12 */
- V32 chan2:4; /* bits 11-8 */
- V32 chan1:4; /* bits 7-4 */
- V32 chan0:4; /* bits 3-0 */
- } _be_s_bits;
- struct { /* byte 0 1 2 3 */
- V32 chan1:4; /* bits 7-4 */
- V32 chan0:4; /* bits 3-0 */
- V32 chan3:4; /* bits 15-12 */
- V32 chan2:4; /* bits 11-8 */
- V32 chan5:4; /* bits 23-20 */
- V32 chan4:4; /* bits 19-16 */
- V32 chan7:4; /* bits 31-28 */
- V32 chan6:4; /* bits 27-24 */
- } _be_bits;
- struct { /* byte 0 1 2 3 */
- V32 chan0:4; /* bits 0-3 */
- V32 chan1:4; /* bits 4-7 */
- V32 chan2:4; /* bits 8-11 */
- V32 chan3:4; /* bits 12-15 */
- V32 chan4:4; /* bits 16-19 */
- V32 chan5:4; /* bits 20-23 */
- V32 chan6:4; /* bits 24-27 */
- V32 chan7:4; /* bits 28-31 */
- } _le_bits;
- V8 byte[4];
- V32 word;
-} DMA_RXTX_ENABLE, DMA_RX_DELETE,
- DMA_INT_STATUS, DMA_INT_MASK,
- DMA_RX_LEVEL_STATUS, DMA_RX_LEVEL_INT_MASK;
-
-/* 1 dword */
-typedef union _tag_dma_rx_timer{
- struct {
- V32 res0:8; /* bits 32-24 */
- V32 res1:7; /* bits 23-17 */
- V32 enable:1; /* bit 16 */
- V32 value:16; /* bits 15-0 */
- } _be_s_bits;
- struct {
- /* crosses byte boundary. must use swap. */
- V32 s_value:16; /* bits 7-0,15-8 */
- V32 enable:1; /* bit 16 */
- V32 res1:7; /* bits 23-17 */
- V32 res0:8; /* bits 32-24 */
- } _be_bits;
- struct {
- V32 value:16; /* bits 0-15 */
- V32 enable:1; /* bit 16 */
- V32 res1:7; /* bits 17-23 */
- V32 res0:8; /* bits 24-32 */
- } _le_bits;
- V8 byte[4];
- V32 word;
-} DMA_RX_TIMER;
-
-/* NOTE!!!: 2 dwords */
-typedef struct _tag_dma_desc_level{
- union {
- struct {
- V32 res1:8; /* bits 31-24 */
- V32 res0:7; /* bits 23-17 */
- V32 write:1; /* bit 16 */
- V32 thresh:8; /* bits 15-8 */
- V32 level:8; /* bits 7-0 */
- } _be_s_bits;
- struct {
- V32 level:8; /* bits 7-0 */
- V32 thresh:8; /* bits 15-8 */
- V32 res0:7; /* bits 30-17 */
- V32 write:1; /* bit 16 */
- V32 res1:8; /* bits 31-24 */
- } _be_bits;
- struct {
- V32 level:8; /* bits 0-7 */
- V32 thresh:8; /* bits 8-15 */
- V32 write:1; /* bit 16 */
- V32 res0:7; /* bit 17-30 */
- V32 res1:8; /* bits 24-31 */
- } _le_bits;
- V8 byte[4];
- V32 word;
- } desc;
- V32 pad1;
-} DMA_DESC_LEVEL;
-
-typedef struct _tag_pbb_dma_reg_map {
- /* 0-15 (0x000-0x078) */
- DMA_DESCRIPTOR_RING rx_desc[8]; /* 4 dwords each, 128 bytes tot. */
-
- /* 16-31 (0x080-0x0f8) */
- DMA_DESCRIPTOR_RING tx_desc[8]; /* 4 dwords each, 128 bytes tot. */
-
- /* 32/33 (0x100/0x108) */
- V32 reserved_32;
- V32 pad_32;
- V32 reserved_33;
- V32 pad_33;
-
- /* 34 (0x110) */
- DMA_RXTX_ENABLE rxtx_enable;
- V32 pad_34;
-
- /* 35 (0x118) */
- DMA_RX_DELETE rx_delete;
- V32 pad_35;
-
- /* 36-38 (0x120-0x130) */
- DMA_INT_STATUS status;
- V32 pad_36;
- DMA_INT_STATUS last_status;
- V32 pad_37;
- DMA_INT_MASK int_mask;
- V32 pad_38;
-
- /* 39/40 (0x138/0x140) */
- union {
- /* NOTE!! 4 dwords */
- struct {
- V32 channel_3:8;
- V32 channel_2:8;
- V32 channel_1:8;
- V32 channel_0:8;
- V32 pad1;
- V32 channel_7:8;
- V32 channel_6:8;
- V32 channel_5:8;
- V32 channel_4:8;
- V32 pad3;
- } _be_s_bits;
- struct {
- V32 channel_0:8;
- V32 channel_1:8;
- V32 channel_2:8;
- V32 channel_3:8;
- V32 pad1;
- V32 channel_4:8;
- V32 channel_5:8;
- V32 channel_6:8;
- V32 channel_7:8;
- V32 pad3;
- } _be_bits, _le_bits;
- V8 byte[16];
- V32 word[4];
- } rx_size;
-
- /* 41/42 (0x148/0x150) */
- V32 reserved_41;
- V32 pad_41;
- V32 reserved_42;
- V32 pad_42;
-
- /* 43/44 (0x158/0x160) */
- DMA_RX_LEVEL_STATUS rx_level_status;
- V32 pad_43;
- DMA_RX_LEVEL_INT_MASK rx_level_int_mask;
- V32 pad_44;
-
- /* 45 (0x168) */
- DMA_RX_TIMER rx_timer;
- V32 pad_45;
-
- /* 46 (0x170) */
- V32 reserved_46;
- V32 pad_46;
-
- /* 47 (0x178) */
- V32 mbox_status;
- V32 pad_47;
-
- /* 48/49 (0x180/0x188) */
- V32 mbox_out;
- V32 pad_48;
- V32 mbox_in;
- V32 pad_49;
-
- /* 50 (0x190) */
- V32 config;
- V32 pad_50;
-
- /* 51/52 (0x198/0x1a0) */
- V32 c2a_ctr;
- V32 pad_51;
- V32 a2c_ctr;
- V32 pad_52;
-
- /* 53 (0x1a8) */
- union {
- struct {
- V32 rev_major:8; /* bits 31-24 */
- V32 rev_minor:8; /* bits 23-16 */
- V32 reserved:16; /* bits 15-0 */
- } _be_s_bits;
- struct {
- V32 s_reserved:16; /* bits 7-0, 15-8 */
- V32 rev_minor:8; /* bits 23-16 */
- V32 rev_major:8; /* bits 31-24 */
- } _be_bits;
- struct {
- V32 reserved:16; /* bits 0-15 */
- V32 rev_minor:8; /* bits 16-23 */
- V32 rev_major:8; /* bits 24-31 */
- } _le_bits;
- V8 byte[4];
- V32 word;
- } version;
- V32 pad_53;
-
- /* 54-59 (0x1b0-0x1d8) */
- V32 debug_54;
- V32 pad_54;
- V32 debug_55;
- V32 pad_55;
- V32 debug_56;
- V32 pad_56;
- V32 debug_57;
- V32 pad_57;
- V32 debug_58;
- V32 pad_58;
- V32 debug_59;
- V32 pad_59;
-
- /* 60 (0x1e0) */
- V32 timestamp;
- V32 pad_60;
-
- /* 61-63 (0x1e8-0x1f8) */
- V32 debug_61;
- V32 pad_61;
- V32 debug_62;
- V32 pad_62;
- V32 debug_63;
- V32 pad_63;
-
- /* 64-71 (0x200 - 0x238) */
- DMA_DESC_LEVEL rx_desc_level[8]; /* 2 dwords each, 32 bytes tot. */
-
- /* 72-98 (0x240 - 0x2f8) */
- /* reserved */
-
- /* 96-127 (0x300 - 0x3f8) */
- /* mirrors (0x100 - 0x1f8) */
-
-} PBB_DMA_REG_MAP;
-
-
-#endif /* ZUMA_PBB_H */
diff --git a/board/evb64260/zuma_pbb_mbox.c b/board/evb64260/zuma_pbb_mbox.c
deleted file mode 100644
index 2b9a469f8d..0000000000
--- a/board/evb64260/zuma_pbb_mbox.c
+++ /dev/null
@@ -1,187 +0,0 @@
-#include <common.h>
-#include <galileo/pci.h>
-#include <net.h>
-#include <pci.h>
-
-#include "zuma_pbb.h"
-#include "zuma_pbb_mbox.h"
-
-
-struct _zuma_mbox_dev zuma_mbox_dev;
-
-
-static int zuma_mbox_write(struct _zuma_mbox_dev *dev, unsigned int data)
-{
- unsigned int status, count = 0, i;
-
- status = (volatile int)le32_to_cpu(dev->sip->mbox_status);
-
- while((status & OUT_PENDING) && count < 1000) {
- count++;
- for(i=0;i<1000;i++);
- status = (volatile int)le32_to_cpu(dev->sip->mbox_status);
- }
- if(count < 1000) {
- /* if SET it means msg pending */
- /* printf("mbox real write %08x\n",data); */
- dev->sip->mbox_out = cpu_to_le32(data);
- return 4;
- }
-
- printf("mbox tx timeout\n");
- return 0;
-}
-
-static int zuma_mbox_read(struct _zuma_mbox_dev *dev, unsigned int *data)
-{
- unsigned int status, count = 0, i;
-
- status = (volatile int)le32_to_cpu(dev->sip->mbox_status);
-
- while(!(status & IN_VALID) && count < 1000) {
- count++;
- for(i=0;i<1000;i++);
- status = (volatile int)le32_to_cpu(dev->sip->mbox_status);
- }
- if(count < 1000) {
- /* if SET it means msg pending */
- *data=le32_to_cpu(dev->sip->mbox_in);
- /*printf("mbox real read %08x\n", *data); */
- return 4;
- }
- printf("mbox rx timeout\n");
- return 0;
-}
-
-static int zuma_mbox_do_one_mailbox(unsigned int out, unsigned int *in)
-{
- int ret;
- ret=zuma_mbox_write(&zuma_mbox_dev,out);
- /*printf("write 0x%08x (%d bytes)\n", out, ret); */
- if(ret!=4) return -1;
- ret=zuma_mbox_read(&zuma_mbox_dev,in);
- /*printf("read 0x%08x (%d bytes)\n", *in, ret); */
- if(ret!=4) return -1;
- return 0;
-}
-
-
-#define RET_IF_FAILED(x) if ((x) == -1) return -1
-
-static int zuma_mbox_do_all_mailbox(void)
-{
- unsigned int data_in;
- unsigned short sdata_in;
-
- RET_IF_FAILED(zuma_mbox_do_one_mailbox(ZUMA_MBOXMSG_START, &data_in));
-
- RET_IF_FAILED(zuma_mbox_do_one_mailbox(ZUMA_MBOXMSG_MACL, &data_in));
- memcpy(zuma_acc_mac+2,&data_in,4);
- RET_IF_FAILED(zuma_mbox_do_one_mailbox(ZUMA_MBOXMSG_MACH, &data_in));
- sdata_in=data_in&0xffff;
- memcpy(zuma_acc_mac,&sdata_in,2);
-
- RET_IF_FAILED(zuma_mbox_do_one_mailbox(ZUMA_MBOXMSG_IP, &data_in));
- zuma_ip=data_in;
-
- RET_IF_FAILED(zuma_mbox_do_one_mailbox(ZUMA_MBOXMSG_SLOT, &data_in));
- zuma_slot_bac=data_in>>3;
-
- RET_IF_FAILED(zuma_mbox_do_one_mailbox(ZUMA_MBOXMSG_BAUD, &data_in));
- zuma_console_baud = data_in & 0xffff;
- zuma_debug_baud = data_in >> 16;
-
- RET_IF_FAILED(zuma_mbox_do_one_mailbox(ZUMA_MBOXMSG_ENG_PRV_MACL, &data_in));
- memcpy(zuma_prv_mac+2,&data_in,4);
- RET_IF_FAILED(zuma_mbox_do_one_mailbox(ZUMA_MBOXMSG_ENG_PRV_MACH, &data_in));
- sdata_in=data_in&0xffff;
- memcpy(zuma_prv_mac,&sdata_in,2);
-
- RET_IF_FAILED(zuma_mbox_do_one_mailbox(ZUMA_MBOXMSG_DONE, &data_in));
-
- return 0;
-}
-
-
-static void
-zuma_mbox_dump(void)
-{
- printf("ACC MAC=%04x%08x\n",*(unsigned short *)(&zuma_acc_mac),*(unsigned int *)((char *)&zuma_acc_mac+2));
- printf("PRV MAC=%04x%08x\n",*(unsigned short *)(&zuma_prv_mac),*(unsigned int *)((char *)&zuma_prv_mac+2));
- printf("slot:bac=%d:%d\n",(zuma_slot_bac>>2)&0xf, zuma_slot_bac & 0x3);
- printf("BAUD1=%d BAUD2=%d\n",zuma_console_baud,zuma_debug_baud);
-}
-
-
-static void
-zuma_mbox_setenv(void)
-{
- char *data, buf[32];
- unsigned char save = 0;
-
- data = getenv("baudrate");
-
- if(!data || (zuma_console_baud != simple_strtoul(data, NULL, 10))) {
- sprintf(buf, "%6d", zuma_console_baud);
- setenv("baudrate", buf);
- save=1;
- printf("baudrate doesn't match from mbox\n");
- }
-
- ip_to_string(zuma_ip, buf);
- setenv("ipaddr", buf);
-
- sprintf(buf,"%02x:%02x:%02x:%02x:%02x:%02x",
- zuma_prv_mac[0],
- zuma_prv_mac[1],
- zuma_prv_mac[2],
- zuma_prv_mac[3],
- zuma_prv_mac[4],
- zuma_prv_mac[5]);
- setenv("ethaddr", buf);
-
- sprintf(buf,"%02x",zuma_slot_bac);
- setenv("bacslot", buf);
-
- if(save)
- saveenv();
-}
-
-/**
- * zuma_mbox_init:
- */
-
-int zuma_mbox_init(void)
-{
- unsigned int iobase;
- memset(&zuma_mbox_dev, 0, sizeof(struct _zuma_mbox_dev));
-
- zuma_mbox_dev.dev = pci_find_device(VENDOR_ID_ZUMA, DEVICE_ID_ZUMA_PBB, 0);
-
- if(zuma_mbox_dev.dev == -1) {
- printf("no zuma pbb\n");
- return -1;
- }
-
- pci_read_config_dword(zuma_mbox_dev.dev, PCI_BASE_ADDRESS_0, &iobase);
-
- zuma_mbox_dev.sip = (PBB_DMA_REG_MAP *) (iobase & PCI_BASE_ADDRESS_MEM_MASK);
-
- zuma_mbox_dev.sip->int_mask.word=0;
-
- printf("pbb @ %p v%d.%d, timestamp %08x\n", zuma_mbox_dev.sip,
- zuma_mbox_dev.sip->version.pci_bits.rev_major,
- zuma_mbox_dev.sip->version.pci_bits.rev_minor,
- zuma_mbox_dev.sip->timestamp);
-
- if (zuma_mbox_do_all_mailbox() == -1) {
- printf("mailbox failed.. no ACC?\n");
- return -1;
- }
-
- zuma_mbox_dump();
-
- zuma_mbox_setenv();
-
- return 0;
-}
diff --git a/board/evb64260/zuma_pbb_mbox.h b/board/evb64260/zuma_pbb_mbox.h
deleted file mode 100644
index b4a4c0cf7e..0000000000
--- a/board/evb64260/zuma_pbb_mbox.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#define IN_VALID 1
-#define OUT_PENDING 2
-
-enum {
- ZUMA_MBOXMSG_DONE,
- ZUMA_MBOXMSG_MACL,
- ZUMA_MBOXMSG_MACH,
- ZUMA_MBOXMSG_IP,
- ZUMA_MBOXMSG_SLOT,
- ZUMA_MBOXMSG_RESET,
- ZUMA_MBOXMSG_BAUD,
- ZUMA_MBOXMSG_START,
- ZUMA_MBOXMSG_ENG_PRV_MACL,
- ZUMA_MBOXMSG_ENG_PRV_MACH,
-
- MBOXMSG_LAST
-};
-
-struct zuma_mailbox_info {
- unsigned char acc_mac[6];
- unsigned char prv_mac[6];
- unsigned int ip;
- unsigned int slot_bac;
- unsigned int console_baud;
- unsigned int debug_baud;
-};
-
-struct _zuma_mbox_dev {
- pci_dev_t dev;
- PBB_DMA_REG_MAP *sip;
- struct zuma_mailbox_info mailbox;
-};
-
-#define zuma_prv_mac zuma_mbox_dev.mailbox.prv_mac
-#define zuma_acc_mac zuma_mbox_dev.mailbox.acc_mac
-#define zuma_ip zuma_mbox_dev.mailbox.ip
-#define zuma_slot_bac zuma_mbox_dev.mailbox.slot_bac
-#define zuma_console_baud zuma_mbox_dev.mailbox.console_baud
-#define zuma_debug_baud zuma_mbox_dev.mailbox.debug_baud
-
-
-extern struct _zuma_mbox_dev zuma_mbox_dev;
-extern int zuma_mbox_init (void);
diff --git a/board/exbitgen/Makefile b/board/exbitgen/Makefile
deleted file mode 100644
index 5e297afedc..0000000000
--- a/board/exbitgen/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $^
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/exbitgen/config.mk b/board/exbitgen/config.mk
deleted file mode 100644
index 42ea0c6d78..0000000000
--- a/board/exbitgen/config.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# (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
-#
-
-#
-# ExbitGen board
-#
-
-LDFLAGS += $(LINKER_UNDEFS)
-
-TEXT_BASE := 0xFFF80000
-#TEXT_BASE := 0x00100000
-
-PLATFORM_RELFLAGS := $(PLATFORM_RELFLAGS)
diff --git a/board/exbitgen/exbitgen.c b/board/exbitgen/exbitgen.c
deleted file mode 100644
index 39a97225f8..0000000000
--- a/board/exbitgen/exbitgen.c
+++ /dev/null
@@ -1,117 +0,0 @@
-#include <asm/u-boot.h>
-#include <asm/processor.h>
-#include <common.h>
-#include "exbitgen.h"
-
-/* ************************************************************************ */
-int board_early_init_f (void)
-/* ------------------------------------------------------------------------ --
- * Purpose :
- * Remarks :
- * Restrictions:
- * See also :
- * Example :
- * ************************************************************************ */
-{
- unsigned long i;
-
- /*-------------------------------------------------------------------------+
- | Interrupt controller setup for the Walnut board.
- | Note: IRQ 0-15 405GP internally generated; active high; level sensitive
- | IRQ 16 405GP internally generated; active low; level sensitive
- | IRQ 17-24 RESERVED
- | IRQ 25 (EXT IRQ 0) FPGA; active high; level sensitive
- | IRQ 26 (EXT IRQ 1) SMI; active high; level sensitive
- | IRQ 27 (EXT IRQ 2) Not Used
- | IRQ 28 (EXT IRQ 3) PCI SLOT 3; active low; level sensitive
- | IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
- | IRQ 30 (EXT IRQ 5) PCI SLOT 1; active low; level sensitive
- | IRQ 31 (EXT IRQ 6) PCI SLOT 0; active low; level sensitive
- | Note for Walnut board:
- | An interrupt taken for the FPGA (IRQ 25) indicates that either
- | the Mouse, Keyboard, IRDA, or External Expansion caused the
- | interrupt. The FPGA must be read to determine which device
- | caused the interrupt. The default setting of the FPGA clears
- |
- +-------------------------------------------------------------------------*/
-
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
- mtdcr (uiccr, 0x00000020); /* set all but FPGA SMI to be non-critical */
- mtdcr (uicpr, 0xFFFFFF90); /* set int polarities */
- mtdcr (uictr, 0x10000000); /* set int trigger levels */
- mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /* Perform reset of PHY connected to PPC via register in CPLD */
- out8 (PHY_CTRL_ADDR, 0x2e); /* activate nRESET,FDX,F100,ANEN, enable output */
- for (i = 0; i < 10000000; i++) {
- ;
- }
- out8 (PHY_CTRL_ADDR, 0x2f); /* deactivate nRESET */
-
- return 0;
-}
-
-
-/* ************************************************************************ */
-int checkboard (void)
-/* ------------------------------------------------------------------------ --
- * Purpose :
- * Remarks :
- * Restrictions:
- * See also :
- * Example :
- * ************************************************************************ */
-{
- printf ("Exbit H/W id: %d\n", in8 (HW_ID_ADDR));
- return (0);
-}
-
-/* ************************************************************************ */
-long int initdram (int board_type)
-/* ------------------------------------------------------------------------ --
- * Purpose : Determines size of mounted DRAM.
- * Remarks : Size is determined by reading SDRAM configuration registers as
- * set up by sdram_init.
- * Restrictions:
- * See also :
- * Example :
- * ************************************************************************ */
-{
- ulong tot_size;
- ulong bank_size;
- ulong tmp;
-
- tot_size = 0;
-
- mtdcr (memcfga, mem_mb0cf);
- tmp = mfdcr (memcfgd);
- if (tmp & 0x00000001) {
- bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
- tot_size += bank_size;
- }
-
- mtdcr (memcfga, mem_mb1cf);
- tmp = mfdcr (memcfgd);
- if (tmp & 0x00000001) {
- bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
- tot_size += bank_size;
- }
-
- mtdcr (memcfga, mem_mb2cf);
- tmp = mfdcr (memcfgd);
- if (tmp & 0x00000001) {
- bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
- tot_size += bank_size;
- }
-
- mtdcr (memcfga, mem_mb3cf);
- tmp = mfdcr (memcfgd);
- if (tmp & 0x00000001) {
- bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
- tot_size += bank_size;
- }
-
- return tot_size;
-}
diff --git a/board/exbitgen/exbitgen.h b/board/exbitgen/exbitgen.h
deleted file mode 100644
index 058ad48ea2..0000000000
--- a/board/exbitgen/exbitgen.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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
- */
-
-#define GPIO_CPU_LED GPIO_3
-
-
-#define CPLD_BASE 0x10000000 /* t.b.m. */
-#define DEBUG_LEDS_ADDR CPLD_BASE + 0x01
-#define HW_ID_ADDR CPLD_BASE + 0x02
-#define DIP_SWITCH_ADDR CPLD_BASE + 0x04
-#define PHY_CTRL_ADDR CPLD_BASE + 0x05
-#define SPI_OUT_ADDR CPLD_BASE + 0x07
-#define SPI_IN_ADDR CPLD_BASE + 0x08
-#define MDIO_OUT_ADDR CPLD_BASE + 0x09
-#define MDIO_IN_ADDR CPLD_BASE + 0x0A
-#define MISC_OUT_ADDR CPLD_BASE + 0x0B
-
-/* Addresses used on I2C bus */
-#define LM75_CHIP_ADDR 0x9C
-#define LM75_CPU_ADDR 0x9E
-#define SDRAM_SPD_ADDR 0xA0
-
-#define SDRAM_SPD_WRITE_ADDRESS (SDRAM_SPD_ADDR)
-#define SDRAM_SPD_READ_ADDRESS (SDRAM_SPD_ADDR+1)
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#ifndef TRUE
-#define TRUE 1
-#endif
diff --git a/board/exbitgen/flash.c b/board/exbitgen/flash.c
deleted file mode 100644
index ae88994b2c..0000000000
--- a/board/exbitgen/flash.c
+++ /dev/null
@@ -1,597 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-#include <asm/u-boot.h>
-#include <asm/processor.h>
-#include <ppc4xx.h>
-#include <common.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-#ifdef MEIGSBOARD_ONBOARD_FLASH /* onboard = 2MB */
-# ifdef CONFIG_EXBITGEN
-# define FLASH_WORD_SIZE unsigned long
-# endif
-#else /* Meigsboard socket flash = 512KB */
-# ifdef CONFIG_EXBITGEN
-# define FLASH_WORD_SIZE unsigned char
-# endif
-#endif
-
-#ifdef CONFIG_EXBITGEN
-#define ADDR0 0x5555
-#define ADDR1 0x2aaa
-#define FLASH_WORD_SIZE unsigned char
-#endif
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long bank_size;
- unsigned long tot_size;
- unsigned long bank_addr;
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].size = 0;
- }
-
- tot_size = 0;
-
- /* Detect Boot Flash */
- bank_addr = CFG_FLASH0_BASE;
- bank_size = flash_get_size((vu_long *)bank_addr, &flash_info[0]);
- if (bank_size > 0) {
- (void)flash_protect(FLAG_PROTECT_CLEAR,
- bank_addr,
- bank_addr + bank_size - 1,
- &flash_info[0]);
- }
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Boot Flash Bank\n");
- }
- flash_info[0].size = bank_size;
- tot_size += bank_size;
-
- /* Detect Application Flash */
- bank_addr = CFG_FLASH1_BASE;
- for (i = 1; i < CFG_MAX_FLASH_BANKS; ++i) {
- bank_size = flash_get_size((vu_long *)bank_addr, &flash_info[i]);
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- break;
- }
- if (bank_size > 0) {
- (void)flash_protect(FLAG_PROTECT_CLEAR,
- bank_addr,
- bank_addr + bank_size - 1,
- &flash_info[i]);
- }
- flash_info[i].size = bank_size;
- tot_size += bank_size;
- bank_addr += bank_size;
- }
- if (flash_info[1].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Application Flash Bank\n");
- }
-
- /* Protect monitor and environment sectors */
-#if CFG_MONITOR_BASE >= CFG_FLASH0_BASE
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#if 0xfffffffc >= CFG_FLASH0_BASE
-#if 0xfffffffc <= CFG_FLASH0_BASE + CFG_FLASH0_SIZE - 1
- flash_protect(FLAG_PROTECT_SET,
- 0xfffffffc, 0xffffffff,
- &flash_info[0]);
-#endif
-#endif
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- return tot_size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040: printf ("AM29F040 (512 Kbit, uniform sector size)\n");
- break;
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_AMDLV033C: printf ("AM29LV033C (32 Mbit, uniform sector size)\n");
- break;
- case FLASH_AMDLV065D: printf ("AM29LV065D (64 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST800A: printf ("SST39LF/VF800 (8 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST160A: printf ("SST39LF/VF160 (16 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST040: printf ("SST39LF/VF040 (4 Mbit, uniform sector size)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- FLASH_WORD_SIZE value;
- ulong base = (ulong)addr;
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00900090;
-
- value = addr2[0];
-
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FLASH_WORD_SIZE)FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (FLASH_WORD_SIZE)SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[1]; /* device ID */
-
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_ID_F040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 ko */
- break;
- case (FLASH_WORD_SIZE)AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV033C:
- info->flash_id += FLASH_AMDLV033C;
- info->sector_count = 64;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV065D:
- info->flash_id += FLASH_AMDLV065D;
- info->sector_count = 128;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (FLASH_WORD_SIZE)SST_ID_xF800A:
- info->flash_id += FLASH_SST800A;
- info->sector_count = 16;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE)SST_ID_xF160A:
- info->flash_id += FLASH_SST160A;
- info->sector_count = 32;
- info->size = 0x00200000;
- break; /* => 2 MB */
- case (FLASH_WORD_SIZE)SST_ID_xF040:
- info->flash_id += FLASH_SST040;
- info->sector_count = 128;
- info->size = 0x00080000;
- break; /* => 512KB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- (info->flash_id == FLASH_AM040) ||
- (info->flash_id == FLASH_AMDLV033C) ||
- (info->flash_id == FLASH_AMDLV065D)) {
- ulong sectsize = info->size / info->sector_count;
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * sectsize);
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
-
- addr2 = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
- }
-
- /* switch to the read mode */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (FLASH_WORD_SIZE *)info->start[0];
- *addr2 = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
- volatile FLASH_WORD_SIZE *addr2;
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (FLASH_WORD_SIZE *)(info->start[sect]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (FLASH_WORD_SIZE)0x00300030;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while ((addr2[0] & 0x00800080) !=
- (FLASH_WORD_SIZE) 0x00800080) {
- if ((now=get_timer(start)) >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- addr[0] = (FLASH_WORD_SIZE)0x00F000F0;
- return 1;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- addr[0] = (FLASH_WORD_SIZE)0x00F000F0;
- }
- }
-
- printf (" done\n");
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)(info->start[0]);
- volatile FLASH_WORD_SIZE *dest2 = (FLASH_WORD_SIZE *)dest;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
- ulong start;
- int flag;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile ulong *)dest) & data) != data) {
- printf("dest = %08lx, *dest = %08lx, data = %08lx\n",
- dest, *(volatile ulong *)dest, data);
- return 2;
- }
-
- for (i=0; i < 4/sizeof(FLASH_WORD_SIZE); i++) {
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00A000A0;
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & 0x00800080) != (data2[i] & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- addr2[0] = (FLASH_WORD_SIZE)0x00F000F0;
- return (1);
- }
- }
- }
-
- addr2[0] = (FLASH_WORD_SIZE)0x00F000F0;
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/exbitgen/init.S b/board/exbitgen/init.S
deleted file mode 100644
index 0e6cd04ba8..0000000000
--- a/board/exbitgen/init.S
+++ /dev/null
@@ -1,1009 +0,0 @@
-/*----------------------------------------------------------------------+
- *
- * This source code has been made available to you by IBM on an AS-IS
- * basis. Anyone receiving this source is licensed under IBM
- * copyrights to use it in any way he or she deems fit, including
- * copying it, modifying it, compiling it, and redistributing it either
- * with or without modifications. No license under IBM patents or
- * patent applications is to be implied by the copyright license.
- *
- * Any user of this software should understand that IBM cannot provide
- * technical support for this software and will not be responsible for
- * any consequences resulting from the use of this software.
- *
- * Any person who transfers this source code or any derivative work
- * must include the IBM copyright notice, this paragraph, and the
- * preceding two paragraphs in the transferred software.
- *
- * COPYRIGHT I B M CORPORATION 1995
- * LICENSED MATERIAL - PROGRAM PROPERTY OF I B M
- *-----------------------------------------------------------------------
- */
-
-#include <config.h>
-#include <ppc4xx.h>
-#include "config.h"
-
-#define _LINUX_CONFIG_H 1 /* avoid reading Linux autoconf.h file */
-#define FPGA_BRDC 0xF0300004
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-#include "exbitgen.h"
-
-/* IIC declarations (This is an extract from 405gp_i2c.h, which also contains some */
-/* c-code declarations and consequently can't be included here). */
-/* (Possibly to be solved somehow else). */
-/*--------------------------------------------------------------------- */
-#define I2C_REGISTERS_BASE_ADDRESS 0xEF600500
-#define IIC_MDBUF (I2C_REGISTERS_BASE_ADDRESS+IICMDBUF)
-#define IIC_SDBUF (I2C_REGISTERS_BASE_ADDRESS+IICSDBUF)
-#define IIC_LMADR (I2C_REGISTERS_BASE_ADDRESS+IICLMADR)
-#define IIC_HMADR (I2C_REGISTERS_BASE_ADDRESS+IICHMADR)
-#define IIC_CNTL (I2C_REGISTERS_BASE_ADDRESS+IICCNTL)
-#define IIC_MDCNTL (I2C_REGISTERS_BASE_ADDRESS+IICMDCNTL)
-#define IIC_STS (I2C_REGISTERS_BASE_ADDRESS+IICSTS)
-#define IIC_EXTSTS (I2C_REGISTERS_BASE_ADDRESS+IICEXTSTS)
-#define IIC_LSADR (I2C_REGISTERS_BASE_ADDRESS+IICLSADR)
-#define IIC_HSADR (I2C_REGISTERS_BASE_ADDRESS+IICHSADR)
-#define IIC_CLKDIV (I2C_REGISTERS_BASE_ADDRESS+IICCLKDIV)
-#define IIC_INTRMSK (I2C_REGISTERS_BASE_ADDRESS+IICINTRMSK)
-#define IIC_XFRCNT (I2C_REGISTERS_BASE_ADDRESS+IICXFRCNT)
-#define IIC_XTCNTLSS (I2C_REGISTERS_BASE_ADDRESS+IICXTCNTLSS)
-#define IIC_DIRECTCNTL (I2C_REGISTERS_BASE_ADDRESS+IICDIRECTCNTL)
-
-/* MDCNTL Register Bit definition */
-#define IIC_MDCNTL_HSCL 0x01
-#define IIC_MDCNTL_EUBS 0x02
-#define IIC_MDCNTL_FMDB 0x40
-#define IIC_MDCNTL_FSDB 0x80
-
-/* CNTL Register Bit definition */
-#define IIC_CNTL_PT 0x01
-#define IIC_CNTL_READ 0x02
-#define IIC_CNTL_CHT 0x04
-
-/* STS Register Bit definition */
-#define IIC_STS_PT 0X01
-#define IIC_STS_ERR 0X04
-#define IIC_STS_MDBS 0X20
-
-/* EXTSTS Register Bit definition */
-#define IIC_EXTSTS_XFRA 0X01
-#define IIC_EXTSTS_ICT 0X02
-#define IIC_EXTSTS_LA 0X04
-
-/* LED codes used for inditing progress and errors during read of DIMM SPD. */
-/*--------------------------------------------------------------------- */
-#define LED_SDRAM_CODE_1 0xef
-#define LED_SDRAM_CODE_2 0xee
-#define LED_SDRAM_CODE_3 0xed
-#define LED_SDRAM_CODE_4 0xec
-#define LED_SDRAM_CODE_5 0xeb
-#define LED_SDRAM_CODE_6 0xea
-#define LED_SDRAM_CODE_7 0xe9
-#define LED_SDRAM_CODE_8 0xe8
-#define LED_SDRAM_CODE_9 0xe7
-#define LED_SDRAM_CODE_10 0xe6
-#define LED_SDRAM_CODE_11 0xe5
-#define LED_SDRAM_CODE_12 0xe4
-#define LED_SDRAM_CODE_13 0xe3
-#define LED_SDRAM_CODE_14 0xe2
-#define LED_SDRAM_CODE_15 0xe1
-#define LED_SDRAM_CODE_16 0xe0
-
-
-#define TIMEBASE_10PS (1000000000 / CONFIG_SYS_CLK_FREQ) * 100
-
-#define FLASH_8bit_AP 0x9B015480
-#define FLASH_8bit_CR 0xFFF18000 /* 1MB(min), 8bit, R/W */
-
-#define FLASH_32bit_AP 0x9B015480
-#define FLASH_32bit_CR 0xFFE3C000 /* 2MB, 32bit, R/W */
-
-
-#define WDCR_EBC(reg,val) addi r4,0,reg;\
- mtdcr ebccfga,r4;\
- addis r4,0,val@h;\
- ori r4,r4,val@l;\
- mtdcr ebccfgd,r4
-
-/*---------------------------------------------------------------------
- * Function: ext_bus_cntlr_init
- * Description: Initializes the External Bus Controller for the external
- * peripherals. IMPORTANT: For pass1 this code must run from
- * cache since you can not reliably change a peripheral banks
- * timing register (pbxap) while running code from that bank.
- * For ex., since we are running from ROM on bank 0, we can NOT
- * execute the code that modifies bank 0 timings from ROM, so
- * we run it from cache.
- * Bank 0 - Boot flash
- * Bank 1-4 - application flash
- * Bank 5 - CPLD
- * Bank 6 - not used
- * Bank 7 - Heathrow chip
- *---------------------------------------------------------------------
- */
- .globl ext_bus_cntlr_init
-ext_bus_cntlr_init:
- mflr r4 /* save link register */
- bl ..getAddr
-..getAddr:
- mflr r3 /* get address of ..getAddr */
- mtlr r4 /* restore link register */
- addi r4,0,14 /* set ctr to 10; used to prefetch */
- mtctr r4 /* 10 cache lines to fit this function */
- /* in cache (gives us 8x10=80 instrctns) */
-..ebcloop:
- icbt r0,r3 /* prefetch cache line for addr in r3 */
- addi r3,r3,32 /* move to next cache line */
- bdnz ..ebcloop /* continue for 10 cache lines */
-
- mflr r31 /* save link register */
-
- /*-----------------------------------------------------------
- * Delay to ensure all accesses to ROM are complete before changing
- * bank 0 timings. 200usec should be enough.
- * 200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles
- *-----------------------------------------------------------
- */
-
- addis r3,0,0x0
- ori r3,r3,0xA000 /* ensure 200usec have passed since reset */
- mtctr r3
-..spinlp:
- bdnz ..spinlp /* spin loop */
-
- /*---------------------------------------------------------------
- * Memory Bank 0 (Boot Flash) initialization
- *---------------------------------------------------------------
- */
- WDCR_EBC(pb0ap, FLASH_32bit_AP)
- WDCR_EBC(pb0cr, 0xffe38000)
-/*pnc WDCR_EBC(pb0cr, FLASH_32bit_CR) */
-
- /*---------------------------------------------------------------
- * Memory Bank 5 (CPLD) initialization
- *---------------------------------------------------------------
- */
- WDCR_EBC(pb5ap, 0x01010040)
-/*jsa recommendation: WDCR_EBC(pb5ap, 0x00010040) */
- WDCR_EBC(pb5cr, 0x10038000)
-
- /*--------------------------------------------------------------- */
- /* Memory Bank 6 (not used) initialization */
- /*--------------------------------------------------------------- */
- WDCR_EBC(pb6cr, 0x00000000)
-
- /* Read HW ID to determine whether old H2 board or new generic CPU board */
- addis r3, 0, HW_ID_ADDR@h
- ori r3, r3, HW_ID_ADDR@l
- lbz r3,0x0000(r3)
- cmpi 0, r3, 1 /* if (HW_ID==1) */
- beq setup_h2evalboard /* then jump */
- cmpi 0, r3, 2 /* if (HW_ID==2) */
- beq setup_genieboard /* then jump */
- cmpi 0, r3, 3 /* if (HW_ID==3) */
- beq setup_genieboard /* then jump */
-
-setup_genieboard:
- /*--------------------------------------------------------------- */
- /* Memory Bank 1 (Application Flash) initialization for generic CPU board */
- /*--------------------------------------------------------------- */
-/* WDCR_EBC(pb1ap, 0x7b015480) /###* T.B.M. */
-/* WDCR_EBC(pb1ap, 0x7F8FFE80) /###* T.B.M. */
- WDCR_EBC(pb1ap, 0x9b015480) /* hlb-20020207: burst 8 bit 6 cycles */
-
-/* WDCR_EBC(pb1cr, 0x20098000) /###* 16 MB */
- WDCR_EBC(pb1cr, 0x200B8000) /* 32 MB */
-
- /*--------------------------------------------------------------- */
- /* Memory Bank 4 (Onboard FPGA) initialization for generic CPU board */
- /*--------------------------------------------------------------- */
- WDCR_EBC(pb4ap, 0x01010000) /* */
- WDCR_EBC(pb4cr, 0x1021c000) /* */
-
- /*--------------------------------------------------------------- */
- /* Memory Bank 7 (Heathrow chip on Reference board) initialization */
- /*--------------------------------------------------------------- */
- WDCR_EBC(pb7ap, 0x200ffe80) /* No Ready, many wait states (let reflections die out) */
- WDCR_EBC(pb7cr, 0X4001A000)
-
- bl setup_continue
-
-
-setup_h2evalboard:
- /*--------------------------------------------------------------- */
- /* Memory Bank 1 (Application Flash) initialization */
- /*--------------------------------------------------------------- */
- WDCR_EBC(pb1ap, 0x7b015480) /* T.B.M. */
-/*3010 WDCR_EBC(pb1ap, 0x7F8FFE80) /###* T.B.M. */
- WDCR_EBC(pb1cr, 0x20058000)
-
- /*--------------------------------------------------------------- */
- /* Memory Bank 2 (Application Flash) initialization */
- /*--------------------------------------------------------------- */
- WDCR_EBC(pb2ap, 0x7b015480) /* T.B.M. */
-/*3010 WDCR_EBC(pb2ap, 0x7F8FFE80) /###* T.B.M. */
- WDCR_EBC(pb2cr, 0x20458000)
-
- /*--------------------------------------------------------------- */
- /* Memory Bank 3 (Application Flash) initialization */
- /*--------------------------------------------------------------- */
- WDCR_EBC(pb3ap, 0x7b015480) /* T.B.M. */
-/*3010 WDCR_EBC(pb3ap, 0x7F8FFE80) /###* T.B.M. */
- WDCR_EBC(pb3cr, 0x20858000)
-
- /*--------------------------------------------------------------- */
- /* Memory Bank 4 (Application Flash) initialization */
- /*--------------------------------------------------------------- */
- WDCR_EBC(pb4ap, 0x7b015480) /* T.B.M. */
-/*3010 WDCR_EBC(pb4ap, 0x7F8FFE80) /###* T.B.M. */
- WDCR_EBC(pb4cr, 0x20C58000)
-
- /*--------------------------------------------------------------- */
- /* Memory Bank 7 (Heathrow chip) initialization */
- /*--------------------------------------------------------------- */
- WDCR_EBC(pb7ap, 0x02000280) /* No Ready, 4 wait states */
- WDCR_EBC(pb7cr, 0X4001A000)
-
-setup_continue:
-
-
- mtlr r31 /* restore lr */
- nop /* pass2 DCR errata #8 */
- blr
-
-/*--------------------------------------------------------------------- */
-/* Function: sdram_init */
-/* Description: Configures SDRAM memory banks. */
-/*--------------------------------------------------------------------- */
- .globl sdram_init
-
-sdram_init:
-#if CFG_MONITOR_BASE < CFG_FLASH_BASE
- blr
-#else
- mflr r31
-
- /* output SDRAM code on LEDs */
- addi r4, 0, LED_SDRAM_CODE_1
- addis r5, 0, 0x1000
- ori r5, r5, 0x0001
- stb r4,0(r5)
- eieio
-
- /* Read contents of spd */
- /*--------------------- */
- bl read_spd
-
- /*----------------------------------------------------------- */
- /* */
- /* */
- /* Update SDRAM timing register */
- /* */
- /* */
- /*----------------------------------------------------------- */
-
- /* Read PLL feedback divider and calculate clock period of local bus in */
- /* granularity of 10 ps. Save clock period in r30 */
- /*-------------------------------------------------------------- */
- mfdcr r4, pllmd
- addi r9, 0, 25
- srw r4, r4, r9
- andi. r4, r4, 0x07
- addis r5, 0, TIMEBASE_10PS@h
- ori r5, r5, TIMEBASE_10PS@l
- divwu r30, r5, r4
-
- /* Determine CASL */
- /*--------------- */
- bl find_casl /* Returns CASL in r3 */
-
- /* Calc trp_clocks = (trp * 100 + (clk - 1)) / clk */
- /* (trp read from byte 27 in granularity of 1 ns) */
- /*------------------------------------------------ */
- mulli r16, r16, 100
- add r16, r16, r30
- addi r6, 0, 1
- subf r16, r6, r16
- divwu r16, r16, r30
-
- /* Calc trcd_clocks = (trcd * 100 + (clk - 1) ) / clk */
- /* (trcd read from byte 29 in granularity of 1 ns) */
- /*--------------------------------------------------- */
- mulli r17, r17, 100
- add r17, r17, r30
- addi r6, 0, 1
- subf r17, r6, r17
- divwu r17, r17, r30
-
- /* Calc tras_clocks = (tras * 100 + (clk - 1) ) / clk */
- /* (tras read from byte 30 in granularity of 1 ns) */
- /*--------------------------------------------------- */
- mulli r18, r18, 100
- add r18, r18, r30
- addi r6, 0, 1
- subf r18, r6, r18
- divwu r18, r18, r30
-
- /* Calc trc_clocks = trp_clocks + tras_clocks */
- /*------------------------------------------- */
- add r18, r18, r16
-
- /* CASL value */
- /*----------- */
- addi r9, 0, 23
- slw r4, r3, r9
-
- /* PTA = trp_clocks - 1 */
- /*--------------------- */
- addi r6, 0, 1
- subf r5, r6, r16
- addi r9, 0, 18
- slw r5, r5, r9
- or r4, r4, r5
-
- /* CTP = trc_clocks - trp_clocks - trcd_clocks - 1 */
- /*------------------------------------------------ */
- addi r5, r18, 0
- subf r5, r16, r5
- subf r5, r17, r5
- addi r6, 0, 1
- subf r5, r6, r5
- addi r9, 0, 16
- slw r5, r5, r9
- or r4, r4, r5
-
- /* LDF = 1 */
- /*-------- */
- ori r4, r4, 0x4000
-
- /* RFTA = trc_clocks - 4 */
- /*---------------------- */
- addi r6, 0, 4
- subf r5, r6, r18
- addi r9, 0, 2
- slw r5, r5, r9
- or r4, r4, r5
-
- /* RCD = trcd_clocks - 1 */
- /*---------------------- */
- addi r6, 0, 1
- subf r5, r6, r17
- or r4, r4, r5
-
- /*----------------------------------------------------------- */
- /* Set SDTR1 */
- /*----------------------------------------------------------- */
- addi r5,0,mem_sdtr1
- mtdcr memcfga,r5
- mtdcr memcfgd,r4
-
- /*----------------------------------------------------------- */
- /* */
- /* */
- /* Update memory bank 0-3 configuration registers */
- /* */
- /* */
- /*----------------------------------------------------------- */
-
- /* Build contents of configuration register for bank 0 into r6 */
- /*------------------------------------------------------------ */
- bl find_mode /* returns addressing mode in r3 */
- addi r29, r3, 0 /* save mode temporarily in r29 */
- bl find_size_code /* returns size code in r3 */
- addi r9, 0, 17 /* bit offset of size code in configuration register */
- slw r3, r3, r9 /* */
- addi r9, 0, 13 /* bit offset of addressing mode in configuration register */
- slw r29, r29, r9 /* */
- or r3, r29, r3 /* merge size code and addressing mode */
- ori r6, r3, CFG_SDRAM_BASE + 1 /* insert base address and enable bank */
-
- /* Calculate banksize r15 = (density << 22) / 2 */
- /*--------------------------------------------- */
- addi r9, 0, 21
- slw r15, r15, r9
-
- /* Set SDRAM bank 0 register and adjust r6 for next bank */
- /*------------------------------------------------------ */
- addi r7,0,mem_mb0cf
- mtdcr memcfga,r7
- mtdcr memcfgd,r6
-
- add r6, r6, r15 /* add bank size to base address for next bank */
-
- /* If two rows/banks then set SDRAM bank 1 register and adjust r6 for next bank */
- /*---------------------------------------------------------------------------- */
- cmpi 0, r12, 2
- bne b1skip
-
- addi r7,0,mem_mb1cf
- mtdcr memcfga,r7
- mtdcr memcfgd,r6
-
- add r6, r6, r15 /* add bank size to base address for next bank */
-
- /* Set SDRAM bank 2 register and adjust r6 for next bank */
- /*------------------------------------------------------ */
-b1skip: addi r7,0,mem_mb2cf
- mtdcr memcfga,r7
- mtdcr memcfgd,r6
-
- add r6, r6, r15 /* add bank size to base address for next bank */
-
- /* If two rows/banks then set SDRAM bank 3 register */
- /*------------------------------------------------ */
- cmpi 0, r12, 2
- bne b3skip
-
- addi r7,0,mem_mb3cf
- mtdcr memcfga,r7
- mtdcr memcfgd,r6
-b3skip:
-
- /*----------------------------------------------------------- */
- /* Set RTR */
- /*----------------------------------------------------------- */
- cmpi 0, r30, 1600
- bge rtr_1
- addis r7, 0, 0x05F0 /* RTR value for 100Mhz */
- bl rtr_2
-rtr_1: addis r7, 0, 0x03F8
-rtr_2: addi r4,0,mem_rtr
- mtdcr memcfga,r4
- mtdcr memcfgd,r7
-
- /*----------------------------------------------------------- */
- /* Delay to ensure 200usec have elapsed since reset. Assume worst */
- /* case that the core is running 200Mhz: */
- /* 200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles */
- /*----------------------------------------------------------- */
- addis r3,0,0x0000
- ori r3,r3,0xA000 /* ensure 200usec have passed since reset */
- mtctr r3
-..spinlp2:
- bdnz ..spinlp2 /* spin loop */
-
- /*----------------------------------------------------------- */
- /* Set memory controller options reg, MCOPT1. */
- /* Set DC_EN to '1' and BRD_PRF to '01' for 16 byte PLB Burst */
- /* read/prefetch. */
- /*----------------------------------------------------------- */
- addi r4,0,mem_mcopt1
- mtdcr memcfga,r4
- addis r4,0,0x80C0 /* set DC_EN=1 */
- ori r4,r4,0x0000
- mtdcr memcfgd,r4
-
-
- /*----------------------------------------------------------- */
- /* Delay to ensure 10msec have elapsed since reset. This is */
- /* required for the MPC952 to stabalize. Assume worst */
- /* case that the core is running 200Mhz: */
- /* 200,000,000 (cycles/sec) X .010 (sec) = 0x1E8480 cycles */
- /* This delay should occur before accessing SDRAM. */
- /*----------------------------------------------------------- */
- addis r3,0,0x001E
- ori r3,r3,0x8480 /* ensure 10msec have passed since reset */
- mtctr r3
-..spinlp3:
- bdnz ..spinlp3 /* spin loop */
-
- /* output SDRAM code on LEDs */
- addi r4, 0, LED_SDRAM_CODE_16
- addis r5, 0, 0x1000
- ori r5, r5, 0x0001
- stb r4,0(r5)
- eieio
-
- mtlr r31 /* restore lr */
- blr
-
-/*--------------------------------------------------------------------- */
-/* Function: read_spd */
-/* Description: Reads contents of SPD and saves parameters to be used for */
-/* configuration in dedicated registers (see code below). */
-/*--------------------------------------------------------------------- */
-
-#define WRITE_I2C(reg,val) \
- addi r3,0,val;\
- addis r4, 0, 0xef60;\
- ori r4, r4, 0x0500 + reg;\
- stb r3, 0(r4);\
- eieio
-
-#define READ_I2C(reg) \
- addis r3, 0, 0xef60;\
- ori r3, r3, 0x0500 + reg;\
- lbz r3, 0x0000(r3);\
- eieio
-
-read_spd:
-
- mflr r5
-
- /* Initialize i2c */
- /*--------------- */
- WRITE_I2C(IICLMADR, 0x00) /* clear lo master address */
- WRITE_I2C(IICHMADR, 0x00) /* clear hi master address */
- WRITE_I2C(IICLSADR, 0x00) /* clear lo slave address */
- WRITE_I2C(IICHSADR, 0x00) /* clear hi slave address */
- WRITE_I2C(IICSTS, 0x08) /* update status register */
- WRITE_I2C(IICEXTSTS, 0x8f)
- WRITE_I2C(IICCLKDIV, 0x05)
- WRITE_I2C(IICINTRMSK, 0x00) /* no interrupts */
- WRITE_I2C(IICXFRCNT, 0x00) /* clear transfer count */
- WRITE_I2C(IICXTCNTLSS, 0xf0) /* clear extended control & stat */
- WRITE_I2C(IICMDCNTL, IIC_MDCNTL_FSDB | IIC_MDCNTL_FMDB) /* mode control */
- READ_I2C(IICMDCNTL)
- ori r3, r3, IIC_MDCNTL_EUBS | IIC_MDCNTL_HSCL
- WRITE_I2C(IICMDCNTL, r3) /* mode control */
- WRITE_I2C(IICCNTL, 0x00) /* clear control reg */
-
- /* Wait until initialization completed */
- /*------------------------------------ */
- bl wait_i2c_transfer_done
-
- WRITE_I2C(IICHMADR, 0x00) /* 7-bit addressing */
- WRITE_I2C(IICLMADR, SDRAM_SPD_WRITE_ADDRESS)
-
- /* Write 0 into buffer(start address) */
- /*----------------------------------- */
- WRITE_I2C(IICMDBUF, 0x00);
-
- /* Wait a little */
- /*-------------- */
- addis r3,0,0x0000
- ori r3,r3,0xA000
- mtctr r3
-in02: bdnz in02
-
- /* Issue write command */
- /*-------------------- */
- WRITE_I2C(IICCNTL, IIC_CNTL_PT)
- bl wait_i2c_transfer_done
-
- /* Read 128 bytes */
- /*--------------- */
- addi r7, 0, 0 /* byte counter in r7 */
- addi r8, 0, 0 /* checksum in r8 */
-rdlp:
- /* issue read command */
- /*------------------- */
- cmpi 0, r7, 127
- blt rd01
- WRITE_I2C(IICCNTL, IIC_CNTL_READ | IIC_CNTL_PT)
- bl rd02
-rd01: WRITE_I2C(IICCNTL, IIC_CNTL_READ | IIC_CNTL_CHT | IIC_CNTL_PT)
-rd02: bl wait_i2c_transfer_done
-
- /* Fetch byte from buffer */
- /*----------------------- */
- READ_I2C(IICMDBUF)
-
- /* Retrieve parameters that are going to be used during configuration. */
- /* Save them in dedicated registers. */
- /*------------------------------------------------------------ */
- cmpi 0, r7, 3 /* Save byte 3 in r10 */
- bne rd10
- addi r10, r3, 0
-rd10: cmpi 0, r7, 4 /* Save byte 4 in r11 */
- bne rd11
- addi r11, r3, 0
-rd11: cmpi 0, r7, 5 /* Save byte 5 in r12 */
- bne rd12
- addi r12, r3, 0
-rd12: cmpi 0, r7, 17 /* Save byte 17 in r13 */
- bne rd13
- addi r13, r3, 0
-rd13: cmpi 0, r7, 18 /* Save byte 18 in r14 */
- bne rd14
- addi r14, r3, 0
-rd14: cmpi 0, r7, 31 /* Save byte 31 in r15 */
- bne rd15
- addi r15, r3, 0
-rd15: cmpi 0, r7, 27 /* Save byte 27 in r16 */
- bne rd16
- addi r16, r3, 0
-rd16: cmpi 0, r7, 29 /* Save byte 29 in r17 */
- bne rd17
- addi r17, r3, 0
-rd17: cmpi 0, r7, 30 /* Save byte 30 in r18 */
- bne rd18
- addi r18, r3, 0
-rd18: cmpi 0, r7, 9 /* Save byte 9 in r19 */
- bne rd19
- addi r19, r3, 0
-rd19: cmpi 0, r7, 23 /* Save byte 23 in r20 */
- bne rd20
- addi r20, r3, 0
-rd20: cmpi 0, r7, 25 /* Save byte 25 in r21 */
- bne rd21
- addi r21, r3, 0
-rd21:
-
- /* Calculate checksum of the first 63 bytes */
- /*----------------------------------------- */
- cmpi 0, r7, 63
- bgt rd31
- beq rd30
- add r8, r8, r3
- bl rd31
-
- /* Verify checksum at byte 63 */
- /*--------------------------- */
-rd30: andi. r8, r8, 0xff /* use only 8 bits */
- cmp 0, r8, r3
- beq rd31
- addi r4, 0, LED_SDRAM_CODE_8
- addis r5, 0, 0x1000
- ori r5, r5, 0x0001
- stb r4,0(r5)
- eieio
-rderr: bl rderr
-
-rd31:
-
- /* Increment byte counter and check whether all bytes have been read. */
- /*------------------------------------------------------------------- */
- addi r7, r7, 1
- cmpi 0, r7, 127
- bgt rd05
- bl rdlp
-rd05:
- mtlr r5 /* restore lr */
- blr
-
-wait_i2c_transfer_done:
- mflr r6
-wt01: READ_I2C(IICSTS)
- andi. r4, r3, IIC_STS_PT
- cmpi 0, r4, IIC_STS_PT
- beq wt01
- mtlr r6 /* restore lr */
- blr
-
-/*--------------------------------------------------------------------- */
-/* Function: find_mode */
-/* Description: Determines addressing mode to be used dependent on */
-/* number of rows (r10 = byte 3 from SPD), number of columns (r11 = */
-/* byte 4 from SPD) and number of banks (r13 = byte 17 from SPD). */
-/* mode is returned in r3. */
-/* (It would be nicer having a table, pnc). */
-/*--------------------------------------------------------------------- */
-find_mode:
-
- mflr r5
-
- cmpi 0, r10, 11
- bne fm01
- cmpi 0, r11, 9
- bne fm01
- cmpi 0, r13, 2
- bne fm01
- addi r3, 0, 1
- bl fmfound
-
-fm01: cmpi 0, r10, 11
- bne fm02
- cmpi 0, r11, 10
- bne fm02
- cmpi 0, r13, 2
- bne fm02
- addi r3, 0, 1
- bl fmfound
-
-fm02: cmpi 0, r10, 12
- bne fm03
- cmpi 0, r11, 9
- bne fm03
- cmpi 0, r13, 4
- bne fm03
- addi r3, 0, 2
- bl fmfound
-
-fm03: cmpi 0, r10, 12
- bne fm04
- cmpi 0, r11, 10
- bne fm04
- cmpi 0, r13, 4
- bne fm04
- addi r3, 0, 2
- bl fmfound
-
-fm04: cmpi 0, r10, 13
- bne fm05
- cmpi 0, r11, 9
- bne fm05
- cmpi 0, r13, 4
- bne fm05
- addi r3, 0, 3
- bl fmfound
-
-fm05: cmpi 0, r10, 13
- bne fm06
- cmpi 0, r11, 10
- bne fm06
- cmpi 0, r13, 4
- bne fm06
- addi r3, 0, 3
- bl fmfound
-
-fm06: cmpi 0, r10, 13
- bne fm07
- cmpi 0, r11, 11
- bne fm07
- cmpi 0, r13, 4
- bne fm07
- addi r3, 0, 3
- bl fmfound
-
-fm07: cmpi 0, r10, 12
- bne fm08
- cmpi 0, r11, 8
- bne fm08
- cmpi 0, r13, 2
- bne fm08
- addi r3, 0, 4
- bl fmfound
-
-fm08: cmpi 0, r10, 12
- bne fm09
- cmpi 0, r11, 8
- bne fm09
- cmpi 0, r13, 4
- bne fm09
- addi r3, 0, 4
- bl fmfound
-
-fm09: cmpi 0, r10, 11
- bne fm10
- cmpi 0, r11, 8
- bne fm10
- cmpi 0, r13, 2
- bne fm10
- addi r3, 0, 5
- bl fmfound
-
-fm10: cmpi 0, r10, 11
- bne fm11
- cmpi 0, r11, 8
- bne fm11
- cmpi 0, r13, 4
- bne fm11
- addi r3, 0, 5
- bl fmfound
-
-fm11: cmpi 0, r10, 13
- bne fm12
- cmpi 0, r11, 8
- bne fm12
- cmpi 0, r13, 2
- bne fm12
- addi r3, 0, 6
- bl fmfound
-
-fm12: cmpi 0, r10, 13
- bne fm13
- cmpi 0, r11, 8
- bne fm13
- cmpi 0, r13, 4
- bne fm13
- addi r3, 0, 6
- bl fmfound
-
-fm13: cmpi 0, r10, 13
- bne fm14
- cmpi 0, r11, 9
- bne fm14
- cmpi 0, r13, 2
- bne fm14
- addi r3, 0, 7
- bl fmfound
-
-fm14: cmpi 0, r10, 13
- bne fm15
- cmpi 0, r11, 10
- bne fm15
- cmpi 0, r13, 2
- bne fm15
- addi r3, 0, 7
- bl fmfound
-
-fm15:
- /* not found, error code to be issued on LEDs */
- addi r7, 0, LED_SDRAM_CODE_2
- addis r6, 0, 0x1000
- ori r6, r6, 0x0001
- stb r7,0(r6)
- eieio
-fmerr: bl fmerr
-
-fmfound:addi r6, 0, 1
- subf r3, r6, r3
-
- mtlr r5 /* restore lr */
- blr
-
-/*--------------------------------------------------------------------- */
-/* Function: find_size_code */
-/* Description: Determines size code to be used in configuring SDRAM controller */
-/* dependent on density (r15 = byte 31 from SPD) */
-/*--------------------------------------------------------------------- */
-find_size_code:
-
- mflr r5
-
- addi r3, r15, 0 /* density */
- addi r7, 0, 0
-fs01: andi. r6, r3, 0x01
- cmpi 0, r6, 1
- beq fs04
-
- addi r7, r7, 1
- cmpi 0, r7, 7
- bge fs02
- addi r9, 0, 1
- srw r3, r3, r9
- bl fs01
-
- /* not found, error code to be issued on LEDs */
-fs02: addi r4, 0, LED_SDRAM_CODE_3
- addis r8, 0, 0x1000
- ori r8, r8, 0x0001
- stb r4,0(r8)
- eieio
-fs03: bl fs03
-
-fs04: addi r3, r7, 0
- cmpi 0, r3, 0
- beq fs05
- addi r6, 0, 1
- subf r3, r6, r3
-fs05:
- mtlr r5 /* restore lr */
- blr
-
-/*--------------------------------------------------------------------- */
-/* Function: find_casl */
-/* Description: Determines CAS latency */
-/*--------------------------------------------------------------------- */
-find_casl:
-
- mflr r5
-
- andi. r14, r14, 0x7f /* r14 holds supported CAS latencies */
- addi r3, 0, 0xff /* preset determined CASL */
- addi r4, 0, 6 /* Start at bit 6 of supported CAS latencies */
- addi r2, 0, 0 /* Start finding highest CAS latency */
-
-fc01: srw r6, r14, r4 /* */
- andi. r6, r6, 0x01 /* */
- cmpi 0, r6, 1 /* Check bit for current latency */
- bne fc06 /* If not supported, go to next */
-
- cmpi 0, r2, 2 /* Check if third-highest latency */
- bge fc04 /* If so, go calculate with another format */
-
- cmpi 0, r2, 0 /* Check if highest latency */
- bgt fc02 /* */
- addi r7, r19, 0 /* SDRAM cycle time for highest CAS latenty */
-
- bl fc03
-fc02:
- addi r7, r20, 0 /* SDRAM cycle time for next-highest CAS latenty */
-fc03:
- addi r8, r7, 0
- addi r9, 0, 4
- srw r7, r7, r9
- andi. r7, r7, 0x0f
- mulli r7, r7, 100
- andi. r8, r8, 0x0f
- mulli r8, r8, 10
- add r7, r7, r8
- cmp 0, r7, r30
- bgt fc05
- addi r3, r2, 0
- bl fc05
-fc04:
- addi r7, r21, 0 /* SDRAM cycle time for third-highest CAS latenty */
- addi r8, r7, 0
- addi r9, 0, 2
- srw r7, r7, r9
- andi. r7, r7, 0x3f
- mulli r7, r7, 100
- andi. r8, r8, 0x03
- mulli r8, r8, 25
- add r7, r7, r8
-
- cmp 0, r7, r30
- bgt fc05
- addi r3, r2, 0
-
-fc05: addi r2, r2, 1 /* next latency */
- cmpi 0, r2, 3
- bge fc07
-fc06: addi r6, 0, 1
- subf r4, r6, r4
- cmpi 0, r4, 0
- bne fc01
-
-fc07:
-
- mtlr r5 /* restore lr */
- blr
-#endif
-
-
-/* Peripheral Bank 1 Access Parameters */
-/* 0 BME = 1 ; burstmode enabled */
-/* " 1:8" TWT=00110110 ;Transfer wait (details below) */
-/* 1:5 FWT=00110 ; first wait = 6 cycles */
-/* 6:8 BWT=110 ; burst wait = 6 cycles */
-/* 9:11 000 ; reserved */
-/* 12:13 CSN=00 ; chip select on timing = 0 */
-/* 14:15 OEN=01 ; output enable */
-/* 16:17 WBN=01 ; write byte enable on timing 1 cycle */
-/* 18:19 WBF=01 ; write byte enable off timing 1 cycle */
-/* 20:22 TH=010 ; transfer hold = 2 cycles */
-/* 23 RE=0 ; ready enable = disabled */
-/* 24 SOR=1 ; sample on ready = same PerClk */
-/* 25 BEM=0 ; byte enable mode = only for write cycles */
-/* 26 PEN=0 ; parity enable = disable */
-/* 27:31 00000 ;reserved */
-/* */
-/* 1 + 00110 + 110 + 000 + 00 + 01 + 01 + 01 + 010 + 0 + 1 + 0 + 0 + 00000 = 0x9b015480 */
-/* */
-/* */
-/* Code for BDI probe: */
-/* */
-/* WDCR 18 0x00000011 ;Select PB1AP */
-/* WDCR 19 0x1b015480 ;PB1AP: Flash */
-/* */
-/* Peripheral Bank 0 Access Parameters */
-/* 0:11 BAS=0x200 ; base address select = 0x200 * 0x100000 (1MB) = */
-/* 12:14 BS=100 ; bank size = 16MB (100) / 32MB (101) */
-/* 15:16 BU=11 ; bank usage = read/write */
-/* 17:18 BW=00 ; bus width = 8-bit */
-/* 19:31 ; reserved */
-/* */
-/* 0x200 + 100 + 11 + 00 + 0 0000 0000 0000 = 0x20098000 */
-/* WDCR 18 0x00000001 ;Select PB1CR */
-/* WDCR 19 0x20098000 ;PB1CR: 1MB at 0x00100000, r/w, 8bit */
-
-/* For CPLD */
-/* 0 + 00000 + 010 + 000 + 00 + 01 + 00 + 00 + 000 + 0 + 0 + 1 + 0 + 00000 */
-/* WDCR_EBC(pb5ap, 0x01010040) */
-/*jsa recommendation: WDCR_EBC(pb5ap, 0x00010040) */
-/* WDCR_EBC(pb5cr, 0X10018000) */
-/* Access parms */
-/* 100 3 8 0 0 0 */
-/* 0x100 + 001 + 11 + 00 + 0 0000 0000 0000 = 0x10038000 */
-/* Address : 0x10000000 */
-/* Size: 2 MB */
-/* Usage: read/write */
-/* Width: 32 bit */
-
-/* For Genie onboard fpga 32 bit interface */
-/* 0 1 0 1 0 0 0 0 */
-/* 0 + 00000 + 010 + 000 + 00 + 01 + 00 + 00 + 000 + 0 + 0 + 0 + 0 + 00000 */
-/* 0x01010000 */
-/* Access parms */
-/* 102 1 c 0 0 0 */
-/* 0x102 + 000 + 11 + 10 + 0 0000 0000 0000 = 0x1021c000 */
-/* Address : 0x10200000 */
-/* Size: 2 MB */
-/* Usage: read/write */
-/* Width: 32 bit */
-
-/* Walnut fpga pb7ap */
-/* 0 1 8 1 5 2 8 0 */
-/* 0 + 00000 + 011 + 000 + 00 + 01 + 01 + 01 + 001 + 0 + 1 + 0 + 0 + 00000 */
-/* Walnut fpga pb7cr */
-/* 0xF0318000 */
-/* */
diff --git a/board/exbitgen/u-boot.lds b/board/exbitgen/u-boot.lds
deleted file mode 100644
index d5dea8238e..0000000000
--- a/board/exbitgen/u-boot.lds
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/exbitgen/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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)
- . = ALIGN(4);
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/ezkit533/Makefile b/board/ezkit533/Makefile
deleted file mode 100644
index 4f3c22321a..0000000000
--- a/board/ezkit533/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# U-boot - Makefile
-#
-# Copyright (c) 2005 blackfin.uclinux.org
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ezkit533.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ezkit533/config.mk b/board/ezkit533/config.mk
deleted file mode 100644
index 36c9f997dd..0000000000
--- a/board/ezkit533/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (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
-#
-
-TEXT_BASE = 0x01FC0000
-PLATFORM_CPPFLAGS += -I$(TOPDIR)
diff --git a/board/ezkit533/ezkit533.c b/board/ezkit533/ezkit533.c
deleted file mode 100644
index 8d6c8de70b..0000000000
--- a/board/ezkit533/ezkit533.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * U-boot - ezkit533.c
- *
- * Copyright (c) 2005 blackfin.uclinux.org
- *
- * (C) Copyright 2000-2004
- * 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 <common.h>
-#if defined(CONFIG_MISC_INIT_R)
-#include "psd4256.h"
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int checkboard(void)
-{
- printf("CPU: ADSP BF533 Rev.: 0.%d\n", *pCHIPID >> 28);
- printf("Board: ADI BF533 EZ-Kit Lite board\n");
- printf(" Support: http://blackfin.uclinux.org/\n");
- printf(" Richard Klingler <richard@uclinux.net>\n");
- return 0;
-}
-
-long int initdram(int board_type)
-{
-#ifdef DEBUG
- int brate;
- char *tmp = getenv("baudrate");
- brate = simple_strtoul(tmp, NULL, 16);
- printf("Serial Port initialized with Baud rate = %x\n",brate);
- printf("SDRAM attributes:\n");
- printf("tRCD %d SCLK Cycles,tRP %d SCLK Cycles,tRAS %d SCLK Cycles"
- "tWR %d SCLK Cycles,CAS Latency %d SCLK cycles \n",
- 3, 3, 6, 2, 3);
- printf("SDRAM Begin: 0x%x\n", CFG_SDRAM_BASE);
- printf("Bank size = %d MB\n", CFG_MAX_RAM_SIZE >> 20);
-#endif
- gd->bd->bi_memstart = CFG_SDRAM_BASE;
- gd->bd->bi_memsize = CFG_MAX_RAM_SIZE;
- return CFG_MAX_RAM_SIZE;
-}
-
-#if defined(CONFIG_MISC_INIT_R)
-/* miscellaneous platform dependent initialisations */
-int misc_init_r(void)
-{
- /* Set direction bits for Video en/decoder reset as output */
- *(volatile unsigned char *)(CFG_FLASH1_BASE + PSD_PORTA_DIR) = PSDA_VDEC_RST | PSDA_VENC_RST;
- /* Deactivate Video en/decoder reset lines */
- *(volatile unsigned char *)(CFG_FLASH1_BASE + PSD_PORTA_DOUT) = PSDA_VDEC_RST | PSDA_VENC_RST;
-}
-#endif
diff --git a/board/ezkit533/flash-defines.h b/board/ezkit533/flash-defines.h
deleted file mode 100644
index 8f9dff5de8..0000000000
--- a/board/ezkit533/flash-defines.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * U-boot - flash-defines.h
- *
- * Copyright (c) 2005 blackfin.uclinux.org
- *
- * (C) Copyright 2000-2004
- * 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 __FLASHDEFINES_H__
-#define __FLASHDEFINES_H__
-
-#include <common.h>
-
-#define V_ULONG(a) (*(volatile unsigned long *)( a ))
-#define V_BYTE(a) (*(volatile unsigned char *)( a ))
-#define TRUE 0x1
-#define FALSE 0x0
-#define BUFFER_SIZE 0x80000
-#define NO_COMMAND 0
-#define GET_CODES 1
-#define RESET 2
-#define WRITE 3
-#define FILL 4
-#define ERASE_ALL 5
-#define ERASE_SECT 6
-#define READ 7
-#define GET_SECTNUM 8
-#define FLASH_START_L 0x0000
-#define FLASH_START_H 0x2000
-#define FLASH_TOT_SECT 40
-#define FLASH_SIZE 0x220000
-#define FLASH_MAN_ST 2
-#define CFG_FLASH0_BASE 0x20000000
-#define RESET_VAL 0xF0
-
-
-asm("#define FLASH_START_L 0x0000");
-asm("#define FLASH_START_H 0x2000");
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-int get_codes(void);
-int poll_toggle_bit(long lOffset);
-void reset_flash(void);
-int erase_flash(void);
-int erase_block_flash(int,unsigned long);
-void unlock_flash(long lOffset);
-int write_data(long lStart, long lCount, long lStride, int *pnData);
-int FillData(long lStart, long lCount, long lStride, int *pnData);
-int read_data(long lStart, long lCount, long lStride, int *pnData);
-int read_flash(long nOffset, int *pnValue);
-int write_flash(long nOffset, int nValue);
-void get_sector_number(long lOffset, int *pnSector);
-int GetSectorProtectionStatus(flash_info_t * info, int nSector);
-int GetOffset(int nBlock);
-int AFP_NumSectors = 40;
-long AFP_SectorSize1 = 0x10000;
-int AFP_SectorSize2 = 0x4000;
-
-#define WRITESEQ1 0x0AAA
-#define WRITESEQ2 0x0554
-#define WRITESEQ3 0x0AAA
-#define WRITESEQ4 0x0AAA
-#define WRITESEQ5 0x0554
-#define WRITESEQ6 0x0AAA
-#define WRITEDATA1 0xaa
-#define WRITEDATA2 0x55
-#define WRITEDATA3 0x80
-#define WRITEDATA4 0xaa
-#define WRITEDATA5 0x55
-#define WRITEDATA6 0x10
-#define PriFlashABegin 0
-#define SecFlashABegin 32
-#define SecFlashBBegin 36
-#define PriFlashAOff 0x0
-#define PriFlashBOff 0x100000
-#define SecFlashAOff 0x200000
-#define SecFlashBOff 0x280000
-#define INVALIDLOCNSTART 0x20270000
-#define INVALIDLOCNEND 0x20280000
-#define BlockEraseVal 0x30
-#define UNLOCKDATA1 0xaa
-#define UNLOCKDATA2 0x55
-#define UNLOCKDATA3 0xa0
-#define GETCODEDATA1 0xaa
-#define GETCODEDATA2 0x55
-#define GETCODEDATA3 0x90
-#define SecFlashASec1Off 0x200000
-#define SecFlashASec2Off 0x204000
-#define SecFlashASec3Off 0x206000
-#define SecFlashASec4Off 0x208000
-#define SecFlashAEndOff 0x210000
-#define SecFlashBSec1Off 0x280000
-#define SecFlashBSec2Off 0x284000
-#define SecFlashBSec3Off 0x286000
-#define SecFlashBSec4Off 0x288000
-#define SecFlashBEndOff 0x290000
-
-#define SECT32 32
-#define SECT33 33
-#define SECT34 34
-#define SECT35 35
-#define SECT36 36
-#define SECT37 37
-#define SECT38 38
-#define SECT39 39
-
-#define FLASH_SUCCESS 0
-#define FLASH_FAIL -1
-
-#endif
diff --git a/board/ezkit533/flash.c b/board/ezkit533/flash.c
deleted file mode 100644
index b0a0796b86..0000000000
--- a/board/ezkit533/flash.c
+++ /dev/null
@@ -1,476 +0,0 @@
-/*
- * U-boot - flash.c Flash driver for PSD4256GV
- *
- * Copyright (c) 2005 blackfin.uclinux.org
- * This file is based on BF533EzFlash.c originally written by Analog Devices, Inc.
- *
- * (C) Copyright 2000-2004
- * 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 "flash-defines.h"
-
-void flash_reset(void)
-{
- reset_flash();
-}
-
-unsigned long flash_get_size(ulong baseaddr, flash_info_t * info,
- int bank_flag)
-{
- int id = 0, i = 0;
- static int FlagDev = 1;
-
- id = get_codes();
- if(FlagDev) {
-#ifdef DEBUG
- printf("Device ID of the Flash is %x\n", id);
-#endif
- FlagDev = 0;
- }
- info->flash_id = id;
-
- switch (bank_flag) {
- case 0:
- for (i = PriFlashABegin; i < SecFlashABegin; i++)
- info->start[i] = (baseaddr + (i * AFP_SectorSize1));
- info->size = 0x200000;
- info->sector_count = 32;
- break;
- case 1:
- info->start[0] = baseaddr + SecFlashASec1Off;
- info->start[1] = baseaddr + SecFlashASec2Off;
- info->start[2] = baseaddr + SecFlashASec3Off;
- info->start[3] = baseaddr + SecFlashASec4Off;
- info->size = 0x10000;
- info->sector_count = 4;
- break;
- case 2:
- info->start[0] = baseaddr + SecFlashBSec1Off;
- info->start[1] = baseaddr + SecFlashBSec2Off;
- info->start[2] = baseaddr + SecFlashBSec3Off;
- info->start[3] = baseaddr + SecFlashBSec4Off;
- info->size = 0x10000;
- info->sector_count = 4;
- break;
- }
- return (info->size);
-}
-
-unsigned long flash_init(void)
-{
- unsigned long size_b0, size_b1, size_b2;
- int i;
-
- size_b0 = size_b1 = size_b2 = 0;
-#ifdef DEBUG
- printf("Flash Memory Start 0x%x\n", CFG_FLASH_BASE);
- printf("Memory Map for the Flash\n");
- printf("0x20000000 - 0x200FFFFF Flash A Primary (1MB)\n");
- printf("0x20100000 - 0x201FFFFF Flash B Primary (1MB)\n");
- printf("0x20200000 - 0x2020FFFF Flash A Secondary (64KB)\n");
- printf("0x20280000 - 0x2028FFFF Flash B Secondary (64KB)\n");
- printf("Please type command flinfo for information on Sectors \n");
-#endif
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- size_b0 = flash_get_size(CFG_FLASH0_BASE, &flash_info[0], 0);
- size_b1 = flash_get_size(CFG_FLASH0_BASE, &flash_info[1], 1);
- size_b2 = flash_get_size(CFG_FLASH0_BASE, &flash_info[2], 2);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN || size_b0 == 0) {
- printf("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 >> 20);
- }
-
- (void)flash_protect(FLAG_PROTECT_SET,CFG_FLASH0_BASE,(flash_info[0].start[2] - 1),&flash_info[0]);
-
- return (size_b0 + size_b1 + size_b2);
-}
-
-void flash_print_info(flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id) {
- case FLASH_PSD4256GV:
- printf("ST Microelectronics ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf("\n ");
- printf(" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf("\n");
- return;
-}
-
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-{
- int cnt = 0,i;
- int prot,sect;
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot)
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- else
- printf ("\n");
-
- cnt = s_last - s_first + 1;
-
- if (cnt == FLASH_TOT_SECT) {
- printf("Erasing flash, Please Wait \n");
- if(erase_flash() < 0) {
- printf("Erasing flash failed \n");
- return FLASH_FAIL;
- }
- } else {
- printf("Erasing Flash locations, Please Wait\n");
- for (i = s_first; i <= s_last; i++) {
- if (info->protect[i] == 0) { /* not protected */
- if(erase_block_flash(i, info->start[i]) < 0) {
- printf("Error Sector erasing \n");
- return FLASH_FAIL;
- }
- }
- }
- }
- return FLASH_SUCCESS;
-}
-
-int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- int ret;
-
- ret = write_data(addr, cnt, 1, (int *) src);
- if(ret == FLASH_FAIL)
- return ERR_NOT_ERASED;
- return FLASH_SUCCESS;
-}
-
-
-int write_data(long lStart, long lCount, long lStride, int *pnData)
-{
- long i = 0;
- int j = 0;
- unsigned long ulOffset = lStart - CFG_FLASH_BASE;
- int d;
- int iShift = 0;
- int iNumWords = 2;
- int nLeftover = lCount % 4;
- int nSector = 0;
-
- for (i = 0; (i < lCount / 4) && (i < BUFFER_SIZE); i++) {
- for (iShift = 0, j = 0; (j < iNumWords);
- j++, ulOffset += (lStride * 2)) {
- if ((ulOffset >= INVALIDLOCNSTART)
- && (ulOffset < INVALIDLOCNEND)) {
- printf("Invalid locations, Try writing to another location \n");
- return FLASH_FAIL;
- }
- get_sector_number(ulOffset, &nSector);
- read_flash(ulOffset,&d);
- if(d != 0xffff) {
- printf("Flash not erased at offset 0x%x Please erase to reprogram \n",ulOffset);
- return FLASH_FAIL;
- }
- unlock_flash(ulOffset);
- if(write_flash(ulOffset, (pnData[i] >> iShift)) < 0) {
- printf("Error programming the flash \n");
- return FLASH_FAIL;
- }
- iShift += 16;
- }
- }
- if (nLeftover > 0) {
- if ((ulOffset >= INVALIDLOCNSTART)
- && (ulOffset < INVALIDLOCNEND))
- return FLASH_FAIL;
- get_sector_number(ulOffset, &nSector);
- read_flash(ulOffset,&d);
- if(d != 0xffff) {
- printf("Flash already programmed. Please erase to reprogram \n");
- printf("uloffset = 0x%x \t d = 0x%x\n",ulOffset,d);
- return FLASH_FAIL;
- }
- unlock_flash(ulOffset);
- if(write_flash(ulOffset, pnData[i]) < 0) {
- printf("Error programming the flash \n");
- return FLASH_FAIL;
- }
- }
- return FLASH_SUCCESS;
-}
-
-int read_data(long ulStart, long lCount, long lStride, int *pnData)
-{
- long i = 0;
- int j = 0;
- long ulOffset = ulStart;
- int iShift = 0;
- int iNumWords = 2;
- int nLeftover = lCount % 4;
- int nHi, nLow;
- int nSector = 0;
-
- for (i = 0; (i < lCount / 4) && (i < BUFFER_SIZE); i++) {
- for (iShift = 0, j = 0; j < iNumWords; j += 2) {
- if ((ulOffset >= INVALIDLOCNSTART)
- && (ulOffset < INVALIDLOCNEND))
- return FLASH_FAIL;
-
- get_sector_number(ulOffset, &nSector);
- read_flash(ulOffset, &nLow);
- ulOffset += (lStride * 2);
- read_flash(ulOffset, &nHi);
- ulOffset += (lStride * 2);
- pnData[i] = (nHi << 16) | nLow;
- }
- }
- if (nLeftover > 0) {
- if ((ulOffset >= INVALIDLOCNSTART)
- && (ulOffset < INVALIDLOCNEND))
- return FLASH_FAIL;
-
- get_sector_number(ulOffset, &nSector);
- read_flash(ulOffset, &pnData[i]);
- }
- return FLASH_SUCCESS;
-}
-
-int write_flash(long nOffset, int nValue)
-{
- long addr;
-
- addr = (CFG_FLASH_BASE + nOffset);
- asm("ssync;");
- *(unsigned volatile short *) addr = nValue;
- asm("ssync;");
- if(poll_toggle_bit(nOffset) < 0)
- return FLASH_FAIL;
- return FLASH_SUCCESS;
-}
-
-int read_flash(long nOffset, int *pnValue)
-{
- int nValue = 0x0;
- long addr = (CFG_FLASH_BASE + nOffset);
-
- if (nOffset != 0x2)
- reset_flash();
- asm("ssync;");
- nValue = *(volatile unsigned short *) addr;
- asm("ssync;");
- *pnValue = nValue;
- return TRUE;
-}
-
-int poll_toggle_bit(long lOffset)
-{
- unsigned int u1,u2;
- unsigned long timeout = 0xFFFFFFFF;
- volatile unsigned long *FB = (volatile unsigned long *)(0x20000000 + lOffset);
- while(1) {
- if(timeout < 0)
- break;
- u1 = *(volatile unsigned short *)FB;
- u2 = *(volatile unsigned short *)FB;
- if((u1 & 0x0040) == (u2 & 0x0040))
- return FLASH_SUCCESS;
- if((u2 & 0x0020) == 0x0000)
- continue;
- u1 = *(volatile unsigned short *)FB;
- if((u2 & 0x0040) == (u1 & 0x0040))
- return FLASH_SUCCESS;
- else {
- reset_flash();
- return FLASH_FAIL;
- }
- timeout--;
- }
- printf("Time out occured \n");
- if(timeout <0) return FLASH_FAIL;
-}
-
-void reset_flash(void)
-{
- write_flash(WRITESEQ1, RESET_VAL);
- /* Wait for 10 micro seconds */
- udelay(10);
-}
-
-int erase_flash(void)
-{
- write_flash(WRITESEQ1, WRITEDATA1);
- write_flash(WRITESEQ2, WRITEDATA2);
- write_flash(WRITESEQ3, WRITEDATA3);
- write_flash(WRITESEQ4, WRITEDATA4);
- write_flash(WRITESEQ5, WRITEDATA5);
- write_flash(WRITESEQ6, WRITEDATA6);
-
- if(poll_toggle_bit(0x0000) < 0)
- return FLASH_FAIL;
-
- write_flash(SecFlashAOff + WRITESEQ1, WRITEDATA1);
- write_flash(SecFlashAOff + WRITESEQ2, WRITEDATA2);
- write_flash(SecFlashAOff + WRITESEQ3, WRITEDATA3);
- write_flash(SecFlashAOff + WRITESEQ4, WRITEDATA4);
- write_flash(SecFlashAOff + WRITESEQ5, WRITEDATA5);
- write_flash(SecFlashAOff + WRITESEQ6, WRITEDATA6);
-
- if(poll_toggle_bit(SecFlashASec1Off) < 0)
- return FLASH_FAIL;
-
- write_flash(PriFlashBOff + WRITESEQ1, WRITEDATA1);
- write_flash(PriFlashBOff + WRITESEQ2, WRITEDATA2);
- write_flash(PriFlashBOff + WRITESEQ3, WRITEDATA3);
- write_flash(PriFlashBOff + WRITESEQ4, WRITEDATA4);
- write_flash(PriFlashBOff + WRITESEQ5, WRITEDATA5);
- write_flash(PriFlashBOff + WRITESEQ6, WRITEDATA6);
-
- if(poll_toggle_bit(PriFlashBOff) <0)
- return FLASH_FAIL;
-
- write_flash(SecFlashBOff + WRITESEQ1, WRITEDATA1);
- write_flash(SecFlashBOff + WRITESEQ2, WRITEDATA2);
- write_flash(SecFlashBOff + WRITESEQ3, WRITEDATA3);
- write_flash(SecFlashBOff + WRITESEQ4, WRITEDATA4);
- write_flash(SecFlashBOff + WRITESEQ5, WRITEDATA5);
- write_flash(SecFlashBOff + WRITESEQ6, WRITEDATA6);
-
- if(poll_toggle_bit(SecFlashBOff) < 0)
- return FLASH_FAIL;
-
- return FLASH_SUCCESS;
-}
-
-int erase_block_flash(int nBlock, unsigned long address)
-{
- long ulSectorOff = 0x0;
-
- if ((nBlock < 0) || (nBlock > AFP_NumSectors))
- return FALSE;
-
- ulSectorOff = (address - CFG_FLASH_BASE);
-
- write_flash((WRITESEQ1 | ulSectorOff), WRITEDATA1);
- write_flash((WRITESEQ2 | ulSectorOff), WRITEDATA2);
- write_flash((WRITESEQ3 | ulSectorOff), WRITEDATA3);
- write_flash((WRITESEQ4 | ulSectorOff), WRITEDATA4);
- write_flash((WRITESEQ5 | ulSectorOff), WRITEDATA5);
-
- write_flash(ulSectorOff, BlockEraseVal);
-
- if(poll_toggle_bit(ulSectorOff) < 0)
- return FLASH_FAIL;
-
- return FLASH_SUCCESS;
-}
-
-void unlock_flash(long ulOffset)
-{
- unsigned long ulOffsetAddr = ulOffset;
- ulOffsetAddr &= 0xFFFF0000;
-
- write_flash((WRITESEQ1 | ulOffsetAddr), UNLOCKDATA1);
- write_flash((WRITESEQ2 | ulOffsetAddr), UNLOCKDATA2);
- write_flash((WRITESEQ3 | ulOffsetAddr), UNLOCKDATA3);
-}
-
-int get_codes()
-{
- int dev_id = 0;
-
- write_flash(WRITESEQ1, GETCODEDATA1);
- write_flash(WRITESEQ2, GETCODEDATA2);
- write_flash(WRITESEQ3, GETCODEDATA3);
-
- read_flash(0x0002, &dev_id);
- dev_id &= 0x00FF;
-
- reset_flash();
-
- return dev_id;
-}
-
-void get_sector_number(long ulOffset, int *pnSector)
-{
- int nSector = 0;
-
- if (ulOffset >= SecFlashAOff) {
- if ((ulOffset < SecFlashASec1Off)
- && (ulOffset < SecFlashASec2Off)) {
- nSector = SECT32;
- } else if ((ulOffset >= SecFlashASec2Off)
- && (ulOffset < SecFlashASec3Off)) {
- nSector = SECT33;
- } else if ((ulOffset >= SecFlashASec3Off)
- && (ulOffset < SecFlashASec4Off)) {
- nSector = SECT34;
- } else if ((ulOffset >= SecFlashASec4Off)
- && (ulOffset < SecFlashAEndOff)) {
- nSector = SECT35;
- }
- } else if (ulOffset >= SecFlashBOff) {
- if ((ulOffset < SecFlashBSec1Off)
- && (ulOffset < SecFlashBSec2Off)) {
- nSector = SECT36;
- }
- if ((ulOffset < SecFlashBSec2Off)
- && (ulOffset < SecFlashBSec3Off)) {
- nSector = SECT37;
- }
- if ((ulOffset < SecFlashBSec3Off)
- && (ulOffset < SecFlashBSec4Off)) {
- nSector = SECT38;
- }
- if ((ulOffset < SecFlashBSec4Off)
- && (ulOffset < SecFlashBEndOff)) {
- nSector = SECT39;
- }
- } else if ((ulOffset >= PriFlashAOff) && (ulOffset < SecFlashAOff)) {
- nSector = ulOffset & 0xffff0000;
- nSector = ulOffset >> 16;
- nSector = nSector & 0x000ff;
- }
-
- if ((nSector >= 0) && (nSector < AFP_NumSectors)) {
- *pnSector = nSector;
- }
-}
diff --git a/board/ezkit533/psd4256.h b/board/ezkit533/psd4256.h
deleted file mode 100644
index 01f656601b..0000000000
--- a/board/ezkit533/psd4256.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * U-boot - psd4256.h
- *
- * Copyright (c) 2005 blackfin.uclinux.org
- *
- * (C) Copyright 2000-2004
- * 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
- */
-
-/*
- * Flash A/B Port A configuration registers.
- * Addresses are offset values to CFG_FLASH1_BASE
- * for Flash A and CFG_FLASH2_BASE for Flash B.
- */
-
-#define PSD_PORTA_DIN 0x070000
-#define PSD_PORTA_DOUT 0x070004
-#define PSD_PORTA_DIR 0x070006
-
-/*
- * Flash A/B Port B configuration registers
- * Addresses are offset values to CFG_FLASH1_BASE
- * for Flash A and CFG_FLASH2_BASE for Flash B.
- */
-
-#define PSD_PORTB_DIN 0x070001
-#define PSD_PORTB_DOUT 0x070005
-#define PSD_PORTB_DIR 0x070007
-
-/*
- * Flash A Port A Bit definitions
- */
-
-#define PSDA_PPICLK1 0x20 /* PPI Clock select bit 1 */
-#define PSDA_PPICLK0 0x10 /* PPI Clock select bit 0 */
-#define PSDA_VDEC_RST 0x08 /* Video decoder reset, 0 = RESET */
-#define PSDA_VENC_RST 0x04 /* Video encoder reset, 0 = RESET */
-#define PSDA_CODEC_RST 0x01 /* Codec reset, 0 = RESET */
-
-/*
- * Flash A Port B Bit definitions
- */
-
-#define PSDA_LED9 0x20 /* LED 9, 1 = LED ON */
-#define PSDA_LED8 0x10 /* LED 8, 1 = LED ON */
-#define PSDA_LED7 0x08 /* LED 7, 1 = LED ON */
-#define PSDA_LED6 0x04 /* LED 6, 1 = LED ON */
-#define PSDA_LED5 0x02 /* LED 5, 1 = LED ON */
-#define PSDA_LED4 0x01 /* LED 4, 1 = LED ON */
diff --git a/board/ezkit533/u-boot.lds b/board/ezkit533/u-boot.lds
deleted file mode 100644
index 10203ff89b..0000000000
--- a/board/ezkit533/u-boot.lds
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * U-boot - u-boot.lds
- *
- * Copyright (c) 2005 blackfin.uclinux.org
- *
- * (C) Copyright 2000-2004
- * 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(bfin)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector before the environment sector. If it throws */
- /* an error during compilation remove an object here to get */
- /* it linked after the configuration sector. */
-
- cpu/bf533/start.o (.text)
- cpu/bf533/start1.o (.text)
- cpu/bf533/traps.o (.text)
- cpu/bf533/interrupt.o (.text)
- cpu/bf533/serial.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- board/ezkit533/ezkit533.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- }
- .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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __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/fads/Makefile b/board/fads/Makefile
deleted file mode 100644
index 667c6afbc4..0000000000
--- a/board/fads/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o lamp.o pcmcia.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/fads/config.mk b/board/fads/config.mk
deleted file mode 100644
index 621b9a2493..0000000000
--- a/board/fads/config.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# (C) Copyright 2000-2004
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Modified by, Yuli Barcohen, Arabella Software Ltd., yuli@arabellasw.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
-#
-
-#
-# Motorola old MPC821/860ADS, MPC8xxFADS, new MPC866ADS, and
-# MPC885ADS boards
-#
-
-TEXT_BASE = 0xFE000000
-PLATFORM_CPPFLAGS += -I$(TOPDIR)/board/fads
-HOST_CFLAGS += -I$(TOPDIR)/board/fads
-HOST_ENVIRO_CFLAGS += -I$(TOPDIR)/board/fads
diff --git a/board/fads/fads.c b/board/fads/fads.c
deleted file mode 100644
index 7b04af56c9..0000000000
--- a/board/fads/fads.c
+++ /dev/null
@@ -1,949 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Modified by, Yuli Barcohen, Arabella Software Ltd., yuli@arabellasw.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
- */
-
-#include <config.h>
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-/* ========================================================================= */
-
-#ifndef CONFIG_MPC885ADS /* No old DRAM on MPC885ADS */
-
-#if defined(CONFIG_DRAM_50MHZ)
-/* 50MHz tables */
-static const uint dram_60ns[] =
-{ 0x8fffec24, 0x0fffec04, 0x0cffec04, 0x00ffec04,
- 0x00ffec00, 0x37ffec47, _NOT_USED_, _NOT_USED_,
- 0x8fffec24, 0x0fffec04, 0x08ffec04, 0x00ffec0c,
- 0x03ffec00, 0x00ffec44, 0x00ffcc08, 0x0cffcc44,
- 0x00ffec0c, 0x03ffec00, 0x00ffec44, 0x00ffcc00,
- 0x3fffc847, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x8fafcc24, 0x0fafcc04, 0x0cafcc00, 0x11bfcc47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x8fafcc24, 0x0fafcc04, 0x0cafcc00, 0x03afcc4c,
- 0x0cafcc00, 0x03afcc4c, 0x0cafcc00, 0x03afcc4c,
- 0x0cafcc00, 0x33bfcc4f, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0xc0ffcc84, 0x00ffcc04, 0x07ffcc04, 0x3fffcc06,
- 0xffffcc85, 0xffffcc05, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x33ffcc07, _NOT_USED_, _NOT_USED_, _NOT_USED_ };
-
-static const uint dram_70ns[] =
-{ 0x8fffcc24, 0x0fffcc04, 0x0cffcc04, 0x00ffcc04,
- 0x00ffcc00, 0x37ffcc47, _NOT_USED_, _NOT_USED_,
- 0x8fffcc24, 0x0fffcc04, 0x0cffcc04, 0x00ffcc04,
- 0x00ffcc08, 0x0cffcc44, 0x00ffec0c, 0x03ffec00,
- 0x00ffec44, 0x00ffcc08, 0x0cffcc44, 0x00ffec04,
- 0x00ffec00, 0x3fffec47, _NOT_USED_, _NOT_USED_,
- 0x8fafcc24, 0x0fafcc04, 0x0cafcc00, 0x11bfcc47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x8fafcc24, 0x0fafcc04, 0x0cafcc00, 0x03afcc4c,
- 0x0cafcc00, 0x03afcc4c, 0x0cafcc00, 0x03afcc4c,
- 0x0cafcc00, 0x33bfcc4f, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0xe0ffcc84, 0x00ffcc04, 0x00ffcc04, 0x0fffcc04,
- 0x7fffcc06, 0xffffcc85, 0xffffcc05, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x33ffcc07, _NOT_USED_, _NOT_USED_, _NOT_USED_ };
-
-static const uint edo_60ns[] =
-{ 0x8ffbec24, 0x0ff3ec04, 0x0cf3ec04, 0x00f3ec04,
- 0x00f3ec00, 0x37f7ec47, _NOT_USED_, _NOT_USED_,
- 0x8fffec24, 0x0ffbec04, 0x0cf3ec04, 0x00f3ec0c,
- 0x0cf3ec00, 0x00f3ec4c, 0x0cf3ec00, 0x00f3ec4c,
- 0x0cf3ec00, 0x00f3ec44, 0x03f3ec00, 0x3ff7ec47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x8fffcc24, 0x0fefcc04, 0x0cafcc00, 0x11bfcc47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x8fffcc24, 0x0fefcc04, 0x0cafcc00, 0x03afcc4c,
- 0x0cafcc00, 0x03afcc4c, 0x0cafcc00, 0x03afcc4c,
- 0x0cafcc00, 0x33bfcc4f, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0xc0ffcc84, 0x00ffcc04, 0x07ffcc04, 0x3fffcc06,
- 0xffffcc85, 0xffffcc05, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x33ffcc07, _NOT_USED_, _NOT_USED_, _NOT_USED_ };
-
-static const uint edo_70ns[] =
-{ 0x8ffbcc24, 0x0ff3cc04, 0x0cf3cc04, 0x00f3cc04,
- 0x00f3cc00, 0x37f7cc47, _NOT_USED_, _NOT_USED_,
- 0x8fffcc24, 0x0ffbcc04, 0x0cf3cc04, 0x00f3cc0c,
- 0x03f3cc00, 0x00f3cc44, 0x00f3ec0c, 0x0cf3ec00,
- 0x00f3ec4c, 0x03f3ec00, 0x00f3ec44, 0x00f3cc00,
- 0x33f7cc47, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x8fffcc24, 0x0fefcc04, 0x0cafcc00, 0x11bfcc47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x8fffcc24, 0x0fefcc04, 0x0cafcc00, 0x03afcc4c,
- 0x0cafcc00, 0x03afcc4c, 0x0cafcc00, 0x03afcc4c,
- 0x0cafcc00, 0x33bfcc47, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0xe0ffcc84, 0x00ffcc04, 0x00ffcc04, 0x0fffcc04,
- 0x7fffcc04, 0xffffcc86, 0xffffcc05, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x33ffcc07, _NOT_USED_, _NOT_USED_, _NOT_USED_ };
-
-#elif defined(CONFIG_DRAM_25MHZ)
-
-/* 25MHz tables */
-
-static const uint dram_60ns[] =
-{ 0x0fffcc04, 0x08ffcc00, 0x33ffcc47, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0fffcc24, 0x0fffcc04, 0x08ffcc00, 0x03ffcc4c,
- 0x08ffcc00, 0x03ffcc4c, 0x08ffcc00, 0x03ffcc4c,
- 0x08ffcc00, 0x33ffcc47, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0fafcc04, 0x08afcc00, 0x3fbfcc47, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0fafcc04, 0x0cafcc00, 0x01afcc4c, 0x0cafcc00,
- 0x01afcc4c, 0x0cafcc00, 0x01afcc4c, 0x0cafcc00,
- 0x31bfcc43, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x80ffcc84, 0x13ffcc04, 0xffffcc87, 0xffffcc05,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x33ffcc07, _NOT_USED_, _NOT_USED_, _NOT_USED_ };
-
-static const uint dram_70ns[] =
-{ 0x0fffec04, 0x08ffec04, 0x00ffec00, 0x3fffcc47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0fffcc24, 0x0fffcc04, 0x08ffcc00, 0x03ffcc4c,
- 0x08ffcc00, 0x03ffcc4c, 0x08ffcc00, 0x03ffcc4c,
- 0x08ffcc00, 0x33ffcc47, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0fafcc04, 0x08afcc00, 0x3fbfcc47, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0fafcc04, 0x0cafcc00, 0x01afcc4c, 0x0cafcc00,
- 0x01afcc4c, 0x0cafcc00, 0x01afcc4c, 0x0cafcc00,
- 0x31bfcc43, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0xc0ffcc84, 0x01ffcc04, 0x7fffcc86, 0xffffcc05,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x33ffcc07, _NOT_USED_, _NOT_USED_, _NOT_USED_ };
-
-static const uint edo_60ns[] =
-{ 0x0ffbcc04, 0x0cf3cc04, 0x00f3cc00, 0x33f7cc47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0ffbcc04, 0x09f3cc0c, 0x09f3cc0c, 0x09f3cc0c,
- 0x08f3cc00, 0x3ff7cc47, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0fefcc04, 0x08afcc04, 0x00afcc00, 0x3fbfcc47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0fefcc04, 0x08afcc00, 0x07afcc48, 0x08afcc48,
- 0x08afcc48, 0x39bfcc47, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x80ffcc84, 0x13ffcc04, 0xffffcc87, 0xffffcc05,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x33ffcc07, _NOT_USED_, _NOT_USED_, _NOT_USED_ };
-
-static const uint edo_70ns[] =
-{ 0x0ffbcc04, 0x0cf3cc04, 0x00f3cc00, 0x33f7cc47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0ffbec04, 0x08f3ec04, 0x03f3ec48, 0x08f3cc00,
- 0x0ff3cc4c, 0x08f3cc00, 0x0ff3cc4c, 0x08f3cc00,
- 0x3ff7cc47, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0fefcc04, 0x08afcc04, 0x00afcc00, 0x3fbfcc47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x0fefcc04, 0x08afcc00, 0x07afcc4c, 0x08afcc00,
- 0x07afcc4c, 0x08afcc00, 0x07afcc4c, 0x08afcc00,
- 0x37bfcc47, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0xc0ffcc84, 0x01ffcc04, 0x7fffcc86, 0xffffcc05,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x33ffcc07, _NOT_USED_, _NOT_USED_, _NOT_USED_ };
-#else
-#error dram not correctly defined - use CONFIG_DRAM_25MHZ or CONFIG_DRAM_50MHZ
-#endif
-
-/* ------------------------------------------------------------------------- */
-static int _draminit (uint base, uint noMbytes, uint edo, uint delay)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- /* init upm */
-
- switch (delay) {
- case 70:
- if (edo) {
- upmconfig (UPMA, (uint *) edo_70ns,
- sizeof (edo_70ns) / sizeof (uint));
- } else {
- upmconfig (UPMA, (uint *) dram_70ns,
- sizeof (dram_70ns) / sizeof (uint));
- }
-
- break;
-
- case 60:
- if (edo) {
- upmconfig (UPMA, (uint *) edo_60ns,
- sizeof (edo_60ns) / sizeof (uint));
- } else {
- upmconfig (UPMA, (uint *) dram_60ns,
- sizeof (dram_60ns) / sizeof (uint));
- }
-
- break;
-
- default:
- return -1;
- }
-
- memctl->memc_mptpr = 0x0400; /* divide by 16 */
-
- switch (noMbytes) {
- case 4: /* 4 Mbyte uses only CS2 */
-#ifdef CONFIG_ADS
- memctl->memc_mamr = 0xc0a21114;
-#else
- memctl->memc_mamr = 0x13a01114; /* PTA 0x13 AMA 010 */
-#endif
- memctl->memc_or2 = 0xffc00800; /* 4M */
- break;
-
- case 8: /* 8 Mbyte uses both CS3 and CS2 */
- memctl->memc_mamr = 0x13a01114; /* PTA 0x13 AMA 010 */
- memctl->memc_or3 = 0xffc00800; /* 4M */
- memctl->memc_br3 = 0x00400081 + base;
- memctl->memc_or2 = 0xffc00800; /* 4M */
- break;
-
- case 16: /* 16 Mbyte uses only CS2 */
-#ifdef CONFIG_ADS /* XXX: why PTA=0x60 only in 16M case? - NTL */
- memctl->memc_mamr = 0x60b21114; /* PTA 0x60 AMA 011 */
-#else
- memctl->memc_mamr = 0x13b01114; /* PTA 0x13 AMA 011 */
-#endif
- memctl->memc_or2 = 0xff000800; /* 16M */
- break;
-
- case 32: /* 32 Mbyte uses both CS3 and CS2 */
- memctl->memc_mamr = 0x13b01114; /* PTA 0x13 AMA 011 */
- memctl->memc_or3 = 0xff000800; /* 16M */
- memctl->memc_br3 = 0x01000081 + base;
- memctl->memc_or2 = 0xff000800; /* 16M */
- break;
-
- default:
- return -1;
- }
-
- memctl->memc_br2 = 0x81 + base; /* use upma */
-
- *((uint *) BCSR1) &= ~BCSR1_DRAM_EN; /* enable dram */
-
- /* if no dimm is inserted, noMbytes is still detected as 8m, so
- * sanity check top and bottom of memory */
-
- /* check bytes / 2 because get_ram_size tests at base+bytes, which
- * is not mapped */
- if (noMbytes == 8)
- if (get_ram_size ((long *) base, noMbytes << 19) != noMbytes << 19) {
- *((uint *) BCSR1) |= BCSR1_DRAM_EN; /* disable dram */
- return -1;
- }
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-static void _dramdisable(void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_br2 = 0x00000000;
- memctl->memc_br3 = 0x00000000;
-
- /* maybe we should turn off upma here or something */
-}
-#endif /* !CONFIG_MPC885ADS */
-
-/* ========================================================================= */
-
-#ifdef CONFIG_FADS /* SDRAM exists on FADS and newer boards */
-
-#if defined(CONFIG_SDRAM_100MHZ)
-
-/* ------------------------------------------------------------------------- */
-/* sdram table by Dan Malek */
-
-/* This has the stretched early timing so the 50 MHz
- * processor can make the 100 MHz timing. This will
- * work at all processor speeds.
- */
-
-#ifdef SDRAM_ALT_INIT_SEQENCE
-# define SDRAM_MBMRVALUE0 0xc3802114 /* PTx=195,PTxE,AMx=0,DSx=1,A11,RLFx=1,WLFx=1,TLFx=4 */
-#define SDRAM_MBMRVALUE1 SDRAM_MBMRVALUE0
-# define SDRAM_MCRVALUE0 0x80808111 /* run upmb cs4 loop 1 addr 0x11 MRS */
-# define SDRAM_MCRVALUE1 SDRAM_MCRVALUE0 /* ??? why not 0x80808130? */
-#else
-# define SDRAM_MxMR_PTx 195
-# define UPM_MRS_ADDR 0x11
-# define UPM_REFRESH_ADDR 0x30 /* or 0x11 if we want to be like above? */
-#endif /* !SDRAM_ALT_INIT_SEQUENCE */
-
-static const uint sdram_table[] =
-{
- /* single read. (offset 0 in upm RAM) */
- 0xefebfc24, 0x1f07fc24, 0xeeaefc04, 0x11adfc04,
- 0xefbbbc00, 0x1ff77c45, _NOT_USED_, _NOT_USED_,
-
- /* burst read. (offset 8 in upm RAM) */
- 0xefebfc24, 0x1f07fc24, 0xeeaefc04, 0x10adfc04,
- 0xf0affc00, 0xf0affc00, 0xf1affc00, 0xefbbbc00,
- 0x1ff77c45,
-
- /* precharge + MRS. (offset 11 in upm RAM) */
- 0xeffbbc04, 0x1ff77c34, 0xefeabc34,
- 0x1fb57c35, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* single write. (offset 18 in upm RAM) */
- 0xefebfc24, 0x1f07fc24, 0xeeaebc00, 0x01b93c04,
- 0x1ff77c45, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* burst write. (offset 20 in upm RAM) */
- 0xefebfc24, 0x1f07fc24, 0xeeaebc00, 0x10ad7c00,
- 0xf0affc00, 0xf0affc00, 0xe1bbbc04, 0x1ff77c45,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* refresh. (offset 30 in upm RAM) */
- 0xeffafc84, 0x1ff5fc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc84, 0xfffffc07, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* exception. (offset 3c in upm RAM) */
- 0xeffffc06, 0x1ffffc07, _NOT_USED_, _NOT_USED_ };
-
-#elif defined(CONFIG_SDRAM_50MHZ)
-
-/* ------------------------------------------------------------------------- */
-/* sdram table stolen from the fads manual */
-/* for chip MB811171622A-100 */
-
-/* this table is for 32-50MHz operation */
-#ifdef SDRAM_ALT_INIT_SEQENCE
-# define SDRAM_MBMRVALUE0 0x80802114 /* PTx=128,PTxE,AMx=0,DSx=1,A11,RLFx=1,WLFx=1,TLFx=4 */
-# define SDRAM_MBMRVALUE1 0x80802118 /* PTx=128,PTxE,AMx=0,DSx=1,A11,RLFx=1,WLFx=1,TLFx=8 */
-# define SDRAM_MCRVALUE0 0x80808105 /* run upmb cs4 loop 1 addr 0x5 MRS */
-# define SDRAM_MCRVALUE1 0x80808130 /* run upmb cs4 loop 1 addr 0x30 REFRESH */
-# define SDRAM_MPTRVALUE 0x400
-#define SDRAM_MARVALUE 0x88
-#else
-# define SDRAM_MxMR_PTx 128
-# define UPM_MRS_ADDR 0x5
-# define UPM_REFRESH_ADDR 0x30
-#endif /* !SDRAM_ALT_INIT_SEQUENCE */
-
-static const uint sdram_table[] =
-{
- /* single read. (offset 0 in upm RAM) */
- 0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00,
- 0x1ff77c47,
-
- /* precharge + MRS. (offset 5 in upm RAM) */
- 0x1ff77c34, 0xefeabc34, 0x1fb57c35,
-
- /* burst read. (offset 8 in upm RAM) */
- 0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
- 0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* single write. (offset 18 in upm RAM) */
- 0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* burst write. (offset 20 in upm RAM) */
- 0x1f07fc04, 0xeeaebc00, 0x10ad7c00, 0xf0affc00,
- 0xf0affc00, 0xe1bbbc04, 0x1ff77c47, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* refresh. (offset 30 in upm RAM) */
- 0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc84, 0xfffffc07, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* exception. (offset 3c in upm RAM) */
- 0x7ffffc07, _NOT_USED_, _NOT_USED_, _NOT_USED_ };
-
-/* ------------------------------------------------------------------------- */
-#else
-#error SDRAM not correctly configured
-#endif
-/* ------------------------------------------------------------------------- */
-
-/*
- * Memory Periodic Timer Prescaler
- */
-
-#define SDRAM_OR4VALUE 0x00000a00 /* SAM,GL5A/S=01,addr mask or'ed on later */
-#define SDRAM_BR4VALUE 0x000000c1 /* UPMB,base addr or'ed on later */
-
-/* ------------------------------------------------------------------------- */
-#ifdef SDRAM_ALT_INIT_SEQENCE
-/* ------------------------------------------------------------------------- */
-
-static int _initsdram(uint base, uint noMbytes)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- upmconfig(UPMB, (uint *)sdram_table,sizeof(sdram_table)/sizeof(uint));
-
- memctl->memc_mptpr = SDRAM_MPTPRVALUE;
-
- /* Configure the refresh (mostly). This needs to be
- * based upon processor clock speed and optimized to provide
- * the highest level of performance. For multiple banks,
- * this time has to be divided by the number of banks.
- * Although it is not clear anywhere, it appears the
- * refresh steps through the chip selects for this UPM
- * on each refresh cycle.
- * We have to be careful changing
- * UPM registers after we ask it to run these commands.
- */
-
- memctl->memc_mbmr = SDRAM_MBMRVALUE0; /* TLF 4 */
- memctl->memc_mar = SDRAM_MARVALUE; /* MRS code */
-
- udelay(200);
-
- /* Now run the precharge/nop/mrs commands.
- */
-
- memctl->memc_mcr = 0x80808111; /* run umpb cs4 1 count 1, addr 0x11 ??? (50Mhz) */
- /* run umpb cs4 1 count 1, addr 0x11 precharge+MRS (100Mhz) */
- udelay(200);
-
- /* Run 8 refresh cycles */
-
- memctl->memc_mcr = SDRAM_MCRVALUE0; /* run upmb cs4 loop 1 addr 0x5 precharge+MRS (50 Mhz)*/
- /* run upmb cs4 loop 1 addr 0x11 precharge+MRS (100MHz) */
-
- udelay(200);
-
- memctl->memc_mbmr = SDRAM_MBMRVALUE1; /* TLF 4 (100 Mhz) or TLF 8 (50MHz) */
- memctl->memc_mcr = SDRAM_MCRVALUE1; /* run upmb cs4 loop 1 addr 0x30 refr (50 Mhz) */
- /* run upmb cs4 loop 1 addr 0x11 precharge+MRS ??? (100MHz) */
-
- udelay(200);
-
- memctl->memc_mbmr = SDRAM_MBMRVALUE0; /* TLF 4 */
-
- memctl->memc_or4 = SDRAM_OR4VALUE | ~((noMbytes<<20)-1);
- memctl->memc_br4 = SDRAM_BR4VALUE | base;
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-#else /* !SDRAM_ALT_INIT_SEQUENCE */
-/* ------------------------------------------------------------------------- */
-
-/* refresh rate 15.6 us (= 64 ms / 4K = 62.4 / quad bursts) for <= 128 MBit */
-# define MPTPR_2BK_4K MPTPR_PTP_DIV16 /* setting for 2 banks */
-# define MPTPR_1BK_4K MPTPR_PTP_DIV32 /* setting for 1 bank */
-
-/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit */
-# define MPTPR_2BK_8K MPTPR_PTP_DIV8 /* setting for 2 banks */
-# define MPTPR_1BK_8K MPTPR_PTP_DIV16 /* setting for 1 bank */
-
-/*
- * MxMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-# define SDRAM_MxMR_8COL ((SDRAM_MxMR_PTx << MBMR_PTB_SHIFT) | MBMR_PTBE | \
- MBMR_AMB_TYPE_0 | MBMR_DSB_1_CYCL | MBMR_G0CLB_A11 | \
- MBMR_RLFB_1X | MBMR_WLFB_1X | MBMR_TLFB_4X)
-/* 9 column SDRAM */
-# define SDRAM_MxMR_9COL ((SDRAM_MxMR_PTx << MBMR_PTB_SHIFT) | MBMR_PTAE | \
- MBMR_AMB_TYPE_1 | MBMR_DSB_1_CYCL | MBMR_G0CLB_A10 | \
- MBMR_RLFB_1X | MBMR_WLFB_1X | MBMR_TLFB_4X)
-
-static int _initsdram(uint base, uint noMbytes)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- upmconfig(UPMB, (uint *)sdram_table,sizeof(sdram_table)/sizeof(uint));
-
- memctl->memc_mptpr = MPTPR_2BK_4K;
- memctl->memc_mbmr = SDRAM_MxMR_8COL & (~(MBMR_PTBE)); /* no refresh yet */
-
- /* map CS 4 */
- memctl->memc_or4 = SDRAM_OR4VALUE | ~((noMbytes<<20)-1);
- memctl->memc_br4 = SDRAM_BR4VALUE | base;
-
- /* Perform SDRAM initilization */
-# ifdef UPM_NOP_ADDR /* not currently in UPM table */
- /* step 1: nop */
- memctl->memc_mar = 0x00000000;
- memctl->memc_mcr = MCR_UPM_B | MCR_OP_RUN | MCR_MB_CS4 |
- MCR_MLCF(0) | UPM_NOP_ADDR;
-# endif
-
- /* step 2: delay */
- udelay(200);
-
-# ifdef UPM_PRECHARGE_ADDR /* merged with MRS in UPM table */
- /* step 3: precharge */
- memctl->memc_mar = 0x00000000;
- memctl->memc_mcr = MCR_UPM_B | MCR_OP_RUN | MCR_MB_CS4 |
- MCR_MLCF(4) | UPM_PRECHARGE_ADDR;
-# endif
-
- /* step 4: refresh */
- memctl->memc_mar = 0x00000000;
- memctl->memc_mcr = MCR_UPM_B | MCR_OP_RUN | MCR_MB_CS4 |
- MCR_MLCF(2) | UPM_REFRESH_ADDR;
-
- /*
- * note: for some reason, the UPM values we are using include
- * precharge with MRS
- */
-
- /* step 5: mrs */
- memctl->memc_mar = 0x00000088;
- memctl->memc_mcr = MCR_UPM_B | MCR_OP_RUN | MCR_MB_CS4 |
- MCR_MLCF(1) | UPM_MRS_ADDR;
-
-# ifdef UPM_NOP_ADDR
- memctl->memc_mar = 0x00000000;
- memctl->memc_mcr = MCR_UPM_B | MCR_OP_RUN | MCR_MB_CS4 |
- MCR_MLCF(0) | UPM_NOP_ADDR;
-# endif
- /*
- * Enable refresh
- */
-
- memctl->memc_mbmr |= MBMR_PTBE;
- return 0;
-}
-#endif /* !SDRAM_ALT_INIT_SEQUENCE */
-
-/* ------------------------------------------------------------------------- */
-
-static void _sdramdisable(void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_br4 = 0x00000000;
-
- /* maybe we should turn off upmb here or something */
-}
-
-/* ------------------------------------------------------------------------- */
-
-static int initsdram(uint base, uint *noMbytes)
-{
- uint m = CFG_SDRAM_SIZE>>20;
-
- /* _initsdram needs access to sdram */
- *((uint *)BCSR1) |= BCSR1_SDRAM_EN; /* enable sdram */
-
- if(!_initsdram(base, m))
- {
- *noMbytes += m;
- return 0;
- }
- else
- {
- *((uint *)BCSR1) &= ~BCSR1_SDRAM_EN; /* disable sdram */
-
- _sdramdisable();
-
- return -1;
- }
-}
-
-#endif /* CONFIG_FADS */
-
-/* ========================================================================= */
-
-long int initdram (int board_type)
-{
- uint sdramsz = 0; /* size of sdram in Mbytes */
- uint base = 0; /* base of dram in bytes */
- uint m = 0; /* size of dram in Mbytes */
-#ifndef CONFIG_MPC885ADS
- uint k, s;
-#endif
-
-#ifdef CONFIG_FADS
- if (!initsdram (0x00000000, &sdramsz)) {
- base = sdramsz << 20;
- printf ("(%u MB SDRAM) ", sdramsz);
- }
-#endif
-#ifndef CONFIG_MPC885ADS /* No old DRAM on MPC885ADS */
- k = (*((uint *) BCSR2) >> 23) & 0x0f;
-
- switch (k & 0x3) {
- /* "MCM36100 / MT8D132X" */
- case 0x00:
- m = 4;
- break;
-
- /* "MCM36800 / MT16D832X" */
- case 0x01:
- m = 32;
- break;
- /* "MCM36400 / MT8D432X" */
- case 0x02:
- m = 16;
- break;
- /* "MCM36200 / MT16D832X ?" */
- case 0x03:
- m = 8;
- break;
-
- }
-
- switch (k >> 2) {
- case 0x02:
- k = 70;
- break;
-
- case 0x03:
- k = 60;
- break;
-
- default:
- printf ("unknown dramdelay (0x%x) - defaulting to 70 ns", k);
- k = 70;
- }
-
-#ifdef CONFIG_FADS
- /* the FADS is missing this bit, all rams treated as non-edo */
- s = 0;
-#else
- s = (*((uint *) BCSR2) >> 27) & 0x01;
-#endif
-
- if (!_draminit (base, m, s, k)) {
- printf ("%dM %dns %sDRAM: ", m, k, s ? "EDO " : "");
- } else {
- _dramdisable ();
- m = 0;
- }
-#endif /* !CONFIG_MPC885ADS */
- m += sdramsz; /* add sdram size to total */
-
- return (m << 20);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-/* ========================================================================= */
-
-/*
- * Check Board Identity:
- */
-
-#if defined(CONFIG_FADS) && defined(CFG_DAUGHTERBOARD)
-static void checkdboard(void)
-{
- /* get db type from BCSR 3 */
- uint k = (*((uint *)BCSR3) >> 24) & 0x3f;
-
- puts (" with db ");
-
- switch(k) {
- case 0x03 :
- puts ("MPC823");
- break;
- case 0x20 :
- puts ("MPC801");
- break;
- case 0x21 :
- puts ("MPC850");
- break;
- case 0x22 :
- puts ("MPC821, MPC860 / MPC860SAR / MPC860T");
- break;
- case 0x23 :
- puts ("MPC860SAR");
- break;
- case 0x24 :
- case 0x2A :
- puts ("MPC860T");
- break;
- case 0x3F :
- puts ("MPC850SAR");
- break;
- default : printf("0x%x", k);
- }
-}
-#endif /* defined(CONFIG_FADS) && defined(CFG_DAUGHTERBOARD) */
-
-int checkboard (void)
-{
-#if defined(CONFIG_MPC86xADS)
- puts ("Board: MPC86xADS\n");
-#elif defined(CONFIG_MPC885ADS)
- puts ("Board: MPC885ADS\n");
-#else /* Only old ADS/FADS have got revision ID in BCSR3 */
- uint r = (((*((uint *) BCSR3) >> 23) & 1) << 3)
- | (((*((uint *) BCSR3) >> 19) & 1) << 2)
- | (((*((uint *) BCSR3) >> 16) & 3));
-
- puts ("Board: ");
-#if defined(CONFIG_FADS)
- puts ("FADS");
- checkdboard ();
-#else
- puts ("ADS");
-#endif
-
- puts (" rev ");
-
- switch (r) {
-#if defined(CONFIG_ADS)
- case 0x00:
- puts ("ENG - this board sucks, check the errata, not supported\n");
- return -1;
- case 0x01:
- puts ("PILOT - warning, read errata \n");
- break;
- case 0x02:
- puts ("A - warning, read errata \n");
- break;
- case 0x03:
- puts ("B\n");
- break;
-#else /* FADS */
- case 0x00:
- puts ("ENG\n");
- break;
- case 0x01:
- puts ("PILOT\n");
- break;
-#endif /* CONFIG_ADS */
- default:
- printf ("unknown (0x%x)\n", r);
- return -1;
- }
-#endif /* CONFIG_MPC86xADS */
-
- return 0;
-}
-
-/* ========================================================================= */
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-
-#ifdef CFG_PCMCIA_MEM_ADDR
-volatile unsigned char *pcmcia_mem = (unsigned char*)CFG_PCMCIA_MEM_ADDR;
-#endif
-
-int pcmcia_init(void)
-{
- volatile pcmconf8xx_t *pcmp;
- uint v, slota = 0, slotb = 0;
-
- /*
- ** Enable the PCMCIA for a Flash card.
- */
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
-
-#if 0
- pcmp->pcmc_pbr0 = CFG_PCMCIA_MEM_ADDR;
- pcmp->pcmc_por0 = 0xc00ff05d;
-#endif
-
- /* Set all slots to zero by default. */
- pcmp->pcmc_pgcra = 0;
- pcmp->pcmc_pgcrb = 0;
-#ifdef CONFIG_PCMCIA_SLOT_A
- pcmp->pcmc_pgcra = 0x40;
-#endif
-#ifdef CONFIG_PCMCIA_SLOT_B
- pcmp->pcmc_pgcrb = 0x40;
-#endif
-
- /* enable PCMCIA buffers */
- *((uint *)BCSR1) &= ~BCSR1_PCCEN;
-
- /* Check if any PCMCIA card is plugged in. */
-
-#ifdef CONFIG_PCMCIA_SLOT_A
- slota = (pcmp->pcmc_pipr & 0x18000000) == 0 ;
-#endif
-#ifdef CONFIG_PCMCIA_SLOT_B
- slotb = (pcmp->pcmc_pipr & 0x00001800) == 0 ;
-#endif
-
- if (!(slota || slotb)) {
- printf("No card present\n");
- pcmp->pcmc_pgcra = 0;
- pcmp->pcmc_pgcrb = 0;
- return -1;
- }
- else
- printf("Card present (");
-
- v = 0;
-
- /* both the ADS and the FADS have a 5V keyed pcmcia connector (?)
- **
- ** Paolo - Yes, but i have to insert some 3.3V card in that slot on
- ** my FADS... :-)
- */
-
-#if defined(CONFIG_MPC86x)
- switch ((pcmp->pcmc_pipr >> 30) & 3)
-#elif defined(CONFIG_MPC823) || defined(CONFIG_MPC850)
- switch ((pcmp->pcmc_pipr >> 14) & 3)
-#endif
- {
- case 0x03 :
- printf("5V");
- v = 5;
- break;
- case 0x01 :
- printf("5V and 3V");
-#ifdef CONFIG_FADS
- v = 3; /* User lower voltage if supported! */
-#else
- v = 5;
-#endif
- break;
- case 0x00 :
- printf("5V, 3V and x.xV");
-#ifdef CONFIG_FADS
- v = 3; /* User lower voltage if supported! */
-#else
- v = 5;
-#endif
- break;
- }
-
- switch (v) {
-#ifdef CONFIG_FADS
- case 3:
- printf("; using 3V");
- /*
- ** Enable 3 volt Vcc.
- */
- *((uint *)BCSR1) &= ~BCSR1_PCCVCC1;
- *((uint *)BCSR1) |= BCSR1_PCCVCC0;
- break;
-#endif
- case 5:
- printf("; using 5V");
-#ifdef CONFIG_ADS
- /*
- ** Enable 5 volt Vcc.
- */
- *((uint *)BCSR1) &= ~BCSR1_PCCVCCON;
-#endif
-#ifdef CONFIG_FADS
- /*
- ** Enable 5 volt Vcc.
- */
- *((uint *)BCSR1) &= ~BCSR1_PCCVCC0;
- *((uint *)BCSR1) |= BCSR1_PCCVCC1;
-#endif
- break;
-
- default:
- *((uint *)BCSR1) |= BCSR1_PCCEN; /* disable pcmcia */
-
- printf("; unknown voltage");
- return -1;
- }
- printf(")\n");
- /* disable pcmcia reset after a while */
-
- udelay(20);
-
-#ifdef CONFIG_PCMCIA_SLOT_A
- pcmp->pcmc_pgcra = 0;
-#endif
-#ifdef CONFIG_PCMCIA_SLOT_B
- pcmp->pcmc_pgcrb = 0;
-#endif
-
- /* If you using a real hd you should give a short
- * spin-up time. */
-#ifdef CONFIG_DISK_SPINUP_TIME
- udelay(CONFIG_DISK_SPINUP_TIME);
-#endif
-
- return 0;
-}
-
-#endif /* CFG_CMD_PCMCIA */
-
-/* ========================================================================= */
-
-#ifdef CFG_PC_IDE_RESET
-
-void ide_set_reset(int on)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
-
- /*
- * Configure PC for IDE Reset Pin
- */
- if (on) { /* assert RESET */
- immr->im_ioport.iop_pcdat &= ~(CFG_PC_IDE_RESET);
- } else { /* release RESET */
- immr->im_ioport.iop_pcdat |= CFG_PC_IDE_RESET;
- }
-
- /* program port pin as GPIO output */
- immr->im_ioport.iop_pcpar &= ~(CFG_PC_IDE_RESET);
- immr->im_ioport.iop_pcso &= ~(CFG_PC_IDE_RESET);
- immr->im_ioport.iop_pcdir |= CFG_PC_IDE_RESET;
-}
-
-#endif /* CFG_PC_IDE_RESET */
diff --git a/board/fads/fads.h b/board/fads/fads.h
deleted file mode 100644
index 41f18b5cf5..0000000000
--- a/board/fads/fads.h
+++ /dev/null
@@ -1,491 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Derived from FADS860T definitions by Magnus Damm, Helmut Buchsbaum,
- * and Dan Malek
- *
- * Modified by, Yuli Barcohen, Arabella Software Ltd., yuli@arabellasw.com
- *
- * This header file contains values common to all FADS family boards.
- *
- * 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
- */
-
-/****************************************************************************
- * Flash Memory Map as used by U-Boot:
- *
- * Start Address Length
- * +-----------------------+ 0xFE00_0000 Start of Flash -----------------
- * | | 0xFE00_0100 Reset Vector
- * + + 0xFE0?_????
- * | U-Boot code |
- * | |
- * +-----------------------+ 0xFE04_0000 (sector border)
- * | |
- * | |
- * | U-Boot environment |
- * | | ^
- * | | | U-Boot
- * +=======================+ 0xFE08_0000 (sector border) -----------------
- * | Available | | Applications
- * | ... | v
- *
- *****************************************************************************/
-
-#if 0
-#define CONFIG_BOOTDELAY -1 /* autoboot disabled */
-#else
-#define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */
-#endif
-
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_NFSBOOTCOMMAND \
- "dhcp;" \
- "setenv bootargs root=/dev/nfs rw nfsroot=$rootpath " \
- "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:eth0:off;" \
- "bootm"
-
-#define CONFIG_BOOTCOMMAND \
- "setenv bootargs root=/dev/mtdblock2 rw mtdparts=phys:1280K(ROM)ro,-(root) "\
- "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:eth0:off;" \
- "bootm fe080000"
-
-#undef CONFIG_BOOTARGS
-
-#undef CONFIG_WATCHDOG /* watchdog disabled */
-#define CONFIG_BZIP2 /* include support for bzip2 compressed images */
-
-/*
- * New MPC86xADS and MPC885ADS provide two Ethernet connectivity options:
- * 10Mbit/s on SCC and 100Mbit/s on FEC. FADS provides SCC Ethernet on
- * motherboard and FEC Ethernet on daughterboard. All new PQ1 chips have
- * got FEC so FEC is the default.
- */
-#ifndef CONFIG_ADS
-#undef CONFIG_SCC1_ENET /* Disable SCC1 ethernet */
-#define CONFIG_FEC_ENET /* Use FEC ethernet */
-#else /* Old ADS has not got FEC option */
-#define CONFIG_SCC1_ENET /* Use SCC1 ethernet */
-#undef CONFIG_FEC_ENET /* No FEC ethernet */
-#endif /* !CONFIG_ADS */
-
-#if defined(CONFIG_SCC1_ENET) && defined(CONFIG_FEC_ENET)
-#error Both CONFIG_SCC1_ENET and CONFIG_FEC_ENET configured
-#endif
-
-#ifdef CONFIG_FEC_ENET
-#define CFG_DISCOVER_PHY
-#endif
-
-#ifndef CONFIG_COMMANDS
-#define CONFIG_COMMANDS (CONFIG_CMD_DFL \
- | CFG_CMD_ASKENV \
- | CFG_CMD_DHCP \
- | CFG_CMD_ECHO \
- | CFG_CMD_IMMAP \
- | CFG_CMD_JFFS2 \
- | CFG_CMD_MII \
- | CFG_CMD_PCMCIA \
- | CFG_CMD_PING \
- )
-#endif /* !CONFIG_COMMANDS */
-
-/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
-#include <cmd_confdefs.h>
-
-/*
- * Miscellaneous configurable options
- */
-#define CFG_PROMPT "=>" /* Monitor Command Prompt */
-#define CFG_HUSH_PARSER
-#define CFG_PROMPT_HUSH_PS2 "> "
-#define CFG_LONGHELP /* #undef to save memory */
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
-#else
-#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
-#endif
-#define CFG_PBSIZE (CFG_CBSIZE + sizeof(CFG_PROMPT) + 16) /* Print Buffer Size */
-#define CFG_MAXARGS 16 /* max number of command args */
-#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
-
-#define CFG_LOAD_ADDR 0x00100000
-
-#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */
-
-#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CFG_IMMR 0xFF000000
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CFG_INIT_RAM_ADDR CFG_IMMR
-#define CFG_INIT_RAM_END 0x2F00 /* End of used area in DPRAM */
-#define CFG_GBL_DATA_SIZE 64 /* size in bytes reserved for initial data */
-#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
-#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CFG_SDRAM_BASE _must_ start at 0
- */
-#define CFG_SDRAM_BASE 0x00000000
-#if defined(CONFIG_MPC86xADS) || defined(CONFIG_MPC885ADS) /* New ADS or Duet */
-#define CFG_SDRAM_SIZE 0x00800000 /* 8 Mbyte */
-/*
- * 2048 SDRAM rows
- * 1000 factor s -> ms
- * 64 PTP (pre-divider from MPTPR) from SDRAM example configuration
- * 4 Number of refresh cycles per period
- * 64 Refresh cycle in ms per number of rows
- */
-#define CFG_PTA_PER_CLK ((2048 * 64 * 1000) / (4 * 64))
-#elif defined(CONFIG_FADS) /* Old/new FADS */
-#define CFG_SDRAM_SIZE 0x00400000 /* 4 Mbyte */
-#else /* Old ADS */
-#define CFG_SDRAM_SIZE 0x00000000 /* No SDRAM */
-#endif
-
-#define CFG_MEMTEST_START 0x0100000 /* memtest works on */
-#if (CFG_SDRAM_SIZE)
-#define CFG_MEMTEST_END CFG_SDRAM_SIZE /* 1 ... SDRAM_SIZE */
-#else
-#define CFG_MEMTEST_END 0x0400000 /* 1 ... 4 MB in DRAM */
-#endif /* CFG_SDRAM_SIZE */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
-
-#define CFG_MONITOR_BASE TEXT_BASE
-#define CFG_MONITOR_LEN (256 << 10) /* Reserve 256 KB for monitor */
-
-#ifdef CONFIG_BZIP2
-#define CFG_MALLOC_LEN (2500 << 10) /* Reserve ~2.5 MB for malloc() */
-#else
-#define CFG_MALLOC_LEN (384 << 10) /* Reserve 384 kB for malloc() */
-#endif /* CONFIG_BZIP2 */
-
-/*-----------------------------------------------------------------------
- * Flash organization
- */
-#define CFG_FLASH_BASE CFG_MONITOR_BASE
-#define CFG_FLASH_SIZE ((uint)(8 * 1024 * 1024)) /* max 8Mbyte */
-
-#define CFG_MAX_FLASH_BANKS 4 /* max number of memory banks */
-#define CFG_MAX_FLASH_SECT 8 /* max number of sectors on one chip */
-
-#define CFG_FLASH_ERASE_TOUT 120000 /* Timeout for Flash Erase (in ms) */
-#define CFG_FLASH_WRITE_TOUT 500 /* Timeout for Flash Write (in ms) */
-
-#define CFG_ENV_IS_IN_FLASH 1
-#define CFG_ENV_SECT_SIZE 0x40000 /* see README - env sector total size */
-#define CFG_ENV_OFFSET CFG_ENV_SECT_SIZE
-#define CFG_ENV_SIZE 0x4000 /* Total Size of Environment */
-
-#define CFG_DIRECT_FLASH_TFTP
-
-#if (CONFIG_COMMANDS & CFG_CMD_JFFS2)
-
-/*
- * JFFS2 partitions
- *
- */
-/* No command line, one static partition, whole device */
-#undef CONFIG_JFFS2_CMDLINE
-#define CONFIG_JFFS2_DEV "nor0"
-#define CONFIG_JFFS2_PART_SIZE 0xFFFFFFFF
-#define CONFIG_JFFS2_PART_OFFSET 0x00000000
-
-/* mtdparts command line support */
-/* Note: fake mtd_id used, no linux mtd map file */
-/*
-#define CONFIG_JFFS2_CMDLINE
-#define MTDIDS_DEFAULT "nor0=fads0,nor1=fads-1,nor2=fads-2,nor3=fads-3"
-#define MTDPARTS_DEFAULT "mtdparts=fads-0:-@1m(user1),fads-1:-(user2),fads-2:-(user3),fads-3:-(user4)"
-*/
-
-#define CFG_JFFS2_SORT_FRAGMENTS
-#endif /* CFG_CMD_JFFS2 */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CFG_CACHELINE_SIZE 16 /* For all MPC8xx CPUs */
-#define CFG_CACHELINE_SHIFT 4 /* log base 2 of the above value */
-
-/*-----------------------------------------------------------------------
- * I2C configuration
- */
-#if (CONFIG_COMMANDS & CFG_CMD_I2C)
-#define CONFIG_HARD_I2C 1 /* I2C with hardware support */
-#define CFG_I2C_SPEED 400000 /* I2C speed and slave address defaults */
-#define CFG_I2C_SLAVE 0x7F
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control 11-9
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CFG_SYPCR (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
- SYPCR_SWE | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CFG_SYPCR (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration 11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CFG_SIUMCR (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control 11-26
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CFG_TBSCR (TBSCR_REFA | TBSCR_REFB | TBSCR_TBE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control 11-31
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CFG_PISCR (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register 15-27
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK SCCR_EBDF11
-#define CFG_SCCR SCCR_TBS
-
-/*-----------------------------------------------------------------------
- * DER - Debug Enable Register
- *-----------------------------------------------------------------------
- * Set to zero to prevent the processor from entering debug mode
- */
-#define CFG_DER 0
-
-/* Because of the way the 860 starts up and assigns CS0 the entire
- * address space, we have to set the memory controller differently.
- * Normally, you write the option register first, and then enable the
- * chip select by writing the base register. For CS0, you must write
- * the base register first, followed by the option register.
- */
-
-/*
- * Init Memory Controller:
- *
- * BR0/OR0 (Flash)
- * BR1/OR1 (BCSR)
- */
-/* the other CS:s are determined by looking at parameters in BCSRx */
-
-#define BCSR_ADDR ((uint) 0xFF080000)
-
-#define CFG_PRELIM_OR_AM 0xFF800000 /* OR addr mask */
-
-/* FLASH timing: ACS = 10, TRLX = 1, CSNT = 1, SCY = 3, EHTR = 0 */
-#define CFG_OR_TIMING_FLASH (OR_CSNT_SAM | OR_ACS_DIV4 | OR_BI | OR_SCY_3_CLK | OR_TRLX)
-
-#define CFG_OR0_PRELIM (CFG_PRELIM_OR_AM | CFG_OR_TIMING_FLASH) /* 8 Mbyte until detected */
-#define CFG_BR0_PRELIM ((CFG_FLASH_BASE & BR_BA_MSK) | BR_V )
-
-/* BCSRx - Board Control and Status Registers */
-#define CFG_OR1_PRELIM 0xFFFF8110 /* 64Kbyte address space */
-#define CFG_BR1_PRELIM ((BCSR_ADDR) | BR_V)
-
-/*
- * Internal Definitions
- *
- * Boot Flags
- */
-#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
-#define BOOTFLAG_WARM 0x02 /* Software reboot */
-
-/* values according to the manual */
-
-#define BCSR0 ((uint) (BCSR_ADDR + 0x00))
-#define BCSR1 ((uint) (BCSR_ADDR + 0x04))
-#define BCSR2 ((uint) (BCSR_ADDR + 0x08))
-#define BCSR3 ((uint) (BCSR_ADDR + 0x0c))
-#define BCSR4 ((uint) (BCSR_ADDR + 0x10))
-
-/*
- * (F)ADS bitvalues by Helmut Buchsbaum
- *
- * See User's Manual for a proper
- * description of the following structures
- */
-
-#define BCSR0_ERB ((uint)0x80000000)
-#define BCSR0_IP ((uint)0x40000000)
-#define BCSR0_BDIS ((uint)0x10000000)
-#define BCSR0_BPS_MASK ((uint)0x0C000000)
-#define BCSR0_ISB_MASK ((uint)0x01800000)
-#define BCSR0_DBGC_MASK ((uint)0x00600000)
-#define BCSR0_DBPC_MASK ((uint)0x00180000)
-#define BCSR0_EBDF_MASK ((uint)0x00060000)
-
-#define BCSR1_FLASH_EN ((uint)0x80000000)
-#define BCSR1_DRAM_EN ((uint)0x40000000)
-#define BCSR1_ETHEN ((uint)0x20000000)
-#define BCSR1_IRDEN ((uint)0x10000000)
-#define BCSR1_FLASH_CFG_EN ((uint)0x08000000)
-#define BCSR1_CNT_REG_EN_PROTECT ((uint)0x04000000)
-#define BCSR1_BCSR_EN ((uint)0x02000000)
-#define BCSR1_RS232EN_1 ((uint)0x01000000)
-#define BCSR1_PCCEN ((uint)0x00800000)
-#define BCSR1_PCCVCC0 ((uint)0x00400000)
-#define BCSR1_PCCVPP_MASK ((uint)0x00300000)
-#define BCSR1_DRAM_HALF_WORD ((uint)0x00080000)
-#define BCSR1_RS232EN_2 ((uint)0x00040000)
-#define BCSR1_SDRAM_EN ((uint)0x00020000)
-#define BCSR1_PCCVCC1 ((uint)0x00010000)
-
-#define BCSR1_PCCVCCON BCSR1_PCCVCC0
-
-#define BCSR2_FLASH_PD_MASK ((uint)0xF0000000)
-#define BCSR2_FLASH_PD_SHIFT 28
-#define BCSR2_DRAM_PD_MASK ((uint)0x07800000)
-#define BCSR2_DRAM_PD_SHIFT 23
-#define BCSR2_EXTTOLI_MASK ((uint)0x00780000)
-#define BCSR2_DBREVNR_MASK ((uint)0x00030000)
-
-#define BCSR3_DBID_MASK ((ushort)0x3800)
-#define BCSR3_CNT_REG_EN_PROTECT ((ushort)0x0400)
-#define BCSR3_BREVNR0 ((ushort)0x0080)
-#define BCSR3_FLASH_PD_MASK ((ushort)0x0070)
-#define BCSR3_BREVN1 ((ushort)0x0008)
-#define BCSR3_BREVN2_MASK ((ushort)0x0003)
-
-#define BCSR4_ETHLOOP ((uint)0x80000000)
-#define BCSR4_TFPLDL ((uint)0x40000000)
-#define BCSR4_TPSQEL ((uint)0x20000000)
-#define BCSR4_SIGNAL_LAMP ((uint)0x10000000)
-#if defined(CONFIG_MPC823)
-#define BCSR4_USB_EN ((uint)0x08000000)
-#define BCSR4_USB_SPEED ((uint)0x04000000)
-#define BCSR4_VCCO ((uint)0x02000000)
-#define BCSR4_VIDEO_ON ((uint)0x00800000)
-#define BCSR4_VDO_EKT_CLK_EN ((uint)0x00400000)
-#define BCSR4_VIDEO_RST ((uint)0x00200000)
-#define BCSR4_MODEM_EN ((uint)0x00100000)
-#define BCSR4_DATA_VOICE ((uint)0x00080000)
-#elif defined(CONFIG_MPC850)
-#define BCSR4_DATA_VOICE ((uint)0x00080000)
-#elif defined(CONFIG_MPC860SAR)
-#define BCSR4_UTOPIA_EN ((uint)0x08000000)
-#else /* MPC860T and other chips with FEC */
-#define BCSR4_FETH_EN ((uint)0x08000000)
-#define BCSR4_FETHCFG0 ((uint)0x04000000)
-#define BCSR4_FETHFDE ((uint)0x02000000)
-#define BCSR4_FETHCFG1 ((uint)0x00400000)
-#define BCSR4_FETHRST ((uint)0x00200000)
-#endif
-
-/* BSCR5 exists on MPC86xADS and MPC885ADS only */
-
-#define CFG_PHYDEV_ADDR (BCSR_ADDR + 0x20000)
-
-#define BCSR5 (CFG_PHYDEV_ADDR + 0x300)
-
-#define BCSR5_MII2_EN 0x40
-#define BCSR5_MII2_RST 0x20
-#define BCSR5_T1_RST 0x10
-#define BCSR5_ATM155_RST 0x08
-#define BCSR5_ATM25_RST 0x04
-#define BCSR5_MII1_EN 0x02
-#define BCSR5_MII1_RST 0x01
-
-/* We don't use the 8259.
-*/
-#define NR_8259_INTS 0
-
-/* Machine type
-*/
-#define _MACH_8xx (_MACH_fads)
-
-/*-----------------------------------------------------------------------
- * PCMCIA stuff
- *-----------------------------------------------------------------------
- */
-#define CFG_PCMCIA_MEM_ADDR (0xE0000000)
-#define CFG_PCMCIA_MEM_SIZE ( 64 << 20 )
-#define CFG_PCMCIA_DMA_ADDR (0xE4000000)
-#define CFG_PCMCIA_DMA_SIZE ( 64 << 20 )
-#define CFG_PCMCIA_ATTRB_ADDR (0xE8000000)
-#define CFG_PCMCIA_ATTRB_SIZE ( 64 << 20 )
-#define CFG_PCMCIA_IO_ADDR (0xEC000000)
-#define CFG_PCMCIA_IO_SIZE ( 64 << 20 )
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_MAC_PARTITION 1
-#define CONFIG_DOS_PARTITION 1
-#define CONFIG_ISO_PARTITION 1
-
-#undef CONFIG_ATAPI
-#if 0 /* does not make sense when CFG_CMD_IDE is not enabled, too */
-#define CONFIG_IDE_8xx_PCCARD 1 /* Use IDE with PC Card Adapter */
-#endif
-#undef CONFIG_IDE_8xx_DIRECT /* Direct IDE not supported */
-#undef CONFIG_IDE_LED /* LED for ide not supported */
-#undef CONFIG_IDE_RESET /* reset for ide not supported */
-
-#define CFG_IDE_MAXBUS 1 /* max. 2 IDE busses */
-#define CFG_IDE_MAXDEVICE (CFG_IDE_MAXBUS*2) /* max. 2 drives per IDE bus */
-
-#define CFG_ATA_BASE_ADDR CFG_PCMCIA_MEM_ADDR
-#define CFG_ATA_IDE0_OFFSET 0x0000
-
-/* Offset for data I/O */
-#define CFG_ATA_DATA_OFFSET (CFG_PCMCIA_MEM_SIZE + 0x320)
-/* Offset for normal register accesses */
-#define CFG_ATA_REG_OFFSET (2 * CFG_PCMCIA_MEM_SIZE + 0x320)
-/* Offset for alternate registers */
-#define CFG_ATA_ALT_OFFSET 0x0000
-
-#define CONFIG_DISK_SPINUP_TIME 1000000
-/* #undef CONFIG_DISK_SPINUP_TIME */ /* usin Compact Flash */
diff --git a/board/fads/flash.c b/board/fads/flash.c
deleted file mode 100644
index f0fb621271..0000000000
--- a/board/fads/flash.c
+++ /dev/null
@@ -1,560 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-#define QUAD_ID(id) ((((ulong)(id) & 0xFF) << 24) | \
- (((ulong)(id) & 0xFF) << 16) | \
- (((ulong)(id) & 0xFF) << 8) | \
- (((ulong)(id) & 0xFF) << 0) \
- )
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static int write_word (flash_info_t * info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- vu_long *bcsr = (vu_long *)BCSR_ADDR;
- unsigned long pd_size, total_size, bsize, or_am;
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].size = 0;
- flash_info[i].sector_count = 0;
- flash_info[i].start[0] = 0xFFFFFFFF; /* For TFTP */
- }
-
- switch ((bcsr[2] & BCSR2_FLASH_PD_MASK) >> BCSR2_FLASH_PD_SHIFT) {
- case 2:
- case 4:
- case 6:
- pd_size = 0x800000;
- or_am = 0xFF800000;
- break;
-
- case 5:
- case 7:
- pd_size = 0x400000;
- or_am = 0xFFC00000;
- break;
-
- case 8:
- pd_size = 0x200000;
- or_am = 0xFFE00000;
- break;
-
- default:
- pd_size = 0;
- or_am = 0xFFE00000;
- printf("## Unsupported flash detected by BCSR: 0x%08X\n", bcsr[2]);
- }
-
- total_size = 0;
- for (i = 0; i < CFG_MAX_FLASH_BANKS && total_size < pd_size; ++i) {
- bsize = flash_get_size((vu_long *)(CFG_FLASH_BASE + total_size),
- &flash_info[i]);
-
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
- i, bsize, bsize >> 20);
- }
-
- total_size += bsize;
- }
-
- if (total_size != pd_size) {
- printf("## Detected flash size %lu conflicts with PD data %lu\n",
- total_size, pd_size);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = or_am | CFG_OR_TIMING_FLASH;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS && flash_info[i].size != 0; ++i) {
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- if (CFG_MONITOR_BASE >= flash_info[i].start[0])
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[i]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- if (CFG_ENV_ADDR >= flash_info[i].start[0])
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[i]);
-#endif
- }
-
- return total_size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf ("FUJITSU ");
- break;
- case FLASH_MAN_BM:
- printf ("BRIGHT MICRO ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- printf ("29F040 or 29LV040 (4 Mbit, uniform sectors)\n");
- break;
- case FLASH_AM080:
- printf ("29F080 or 29LV080 (8 Mbit, uniform sectors)\n");
- break;
- case FLASH_AM400B:
- printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T:
- printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B:
- printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T:
- printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B:
- printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T:
- printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B:
- printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n", info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
-
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
-
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- * The following code can not run from flash!
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info)
-{
- short i;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x90909090;
-
- switch (addr[0]) {
- case QUAD_ID(AMD_MANUFACT):
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case QUAD_ID(FUJ_MANUFACT):
- info->flash_id = FLASH_MAN_FUJ;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- switch (addr[1]) { /* device ID */
- case QUAD_ID(AMD_ID_F040B):
- case QUAD_ID(AMD_ID_LV040B):
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case QUAD_ID(AMD_ID_F080B):
- info->flash_id += FLASH_AM080;
- info->sector_count = 16;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif /* 0 */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
-#if 0
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-#else
- /* set sector offsets for uniform sector type */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = (ulong)addr + (i * 0x00040000);
-#endif
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *) (info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *) info->start[0];
- *addr = 0xF0F0F0F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long *) (info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return ERR_INVAL;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type - aborted\n");
- return ERR_UNKNOWN_FLASH_TYPE;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x80808080;
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long *) (info->start[sect]);
- addr[0] = 0x30303030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long *) (info->start[l_sect]);
- while ((addr[0] & 0xFFFFFFFF) != 0xFFFFFFFF)
- {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return ERR_TIMOUT;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *) info->start[0];
- addr[0] = 0xF0F0F0F0; /* reset bank */
-
- printf (" done\n");
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_word (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *) (info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *) dest) & data) != data) {
- return ERR_NOT_ERASED;
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0xA0A0A0A0;
-
- *((vu_long *) dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *) dest) & 0x80808080) != (data & 0x80808080))
- {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return ERR_TIMOUT;
- }
- }
- return (0);
-}
diff --git a/board/fads/lamp.c b/board/fads/lamp.c
deleted file mode 100644
index 4e58291c06..0000000000
--- a/board/fads/lamp.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include <config.h>
-
-#ifndef CONFIG_ADS /* Old ADS has not got any user-controllable LED */
-
-#include <common.h>
-
-void
-signal_delay(unsigned int n)
-{
- while (n--);
-}
-
-void
-signal_on(void)
-{
- *((volatile uint *)BCSR4) &= ~(1<<(31-3)); /* led on */
-}
-
-void
-signal_off(void)
-{
- *((volatile uint *)BCSR4) |= (1<<(31-3)); /* led off */
-}
-
-void
-slow_blink(unsigned int n)
-{
- while (n--) {
- signal_on();
- signal_delay(0x00400000);
- signal_off();
- signal_delay(0x00400000);
- }
-}
-
-void
-fast_blink(unsigned int n)
-{
- while (n--) {
- signal_on();
- signal_delay(0x00100000);
- signal_off();
- signal_delay(0x00100000);
- }
-}
-
-#endif /* !CONFIG_ADS */
diff --git a/board/fads/pcmcia.c b/board/fads/pcmcia.c
deleted file mode 100644
index 978c16b941..0000000000
--- a/board/fads/pcmcia.c
+++ /dev/null
@@ -1,84 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#undef CONFIG_PCMCIA
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-#define CONFIG_PCMCIA
-#endif
-
-#if (CONFIG_COMMANDS & CFG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-#ifdef CONFIG_ADS
-#define PCMCIA_BOARD_MSG "ADS"
-#else
-#define PCMCIA_BOARD_MSG "FADS"
-#endif
-
-int pcmcia_voltage_set(int slot, int vcc, int vpp)
-{
- u_long reg = 0;
-
- switch(vpp) {
- case 0: reg = 0; break;
- case 50: reg = 1; break;
- case 120: reg = 2; break;
- default: return 1;
- }
-
- switch(vcc) {
- case 0: reg = 0; break;
-#ifdef CONFIG_ADS
- case 50: reg = BCSR1_PCCVCCON; break;
-#endif
-#ifdef CONFIG_FADS
- case 33: reg = BCSR1_PCCVCC0 | BCSR1_PCCVCC1; break;
- case 50: reg = BCSR1_PCCVCC1; break;
-#endif
- default: return 1;
- }
-
- /* first, turn off all power */
-
-#ifdef CONFIG_ADS
- *((uint *)BCSR1) |= BCSR1_PCCVCCON;
-#endif
-#ifdef CONFIG_FADS
- *((uint *)BCSR1) &= ~(BCSR1_PCCVCC0 | BCSR1_PCCVCC1);
-#endif
- *((uint *)BCSR1) &= ~BCSR1_PCCVPP_MASK;
-
- /* enable new powersettings */
-
-#ifdef CONFIG_ADS
- *((uint *)BCSR1) &= ~reg;
-#endif
-#ifdef CONFIG_FADS
- *((uint *)BCSR1) |= reg;
-#endif
-
- *((uint *)BCSR1) |= reg << 20;
-
- return 0;
-}
-
-int pcmcia_hardware_enable(int slot)
-{
- *((uint *)BCSR1) &= ~BCSR1_PCCEN;
- return 0;
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
- *((uint *)BCSR1) &= ~BCSR1_PCCEN;
- return 0;
-}
-#endif /* CFG_CMD_PCMCIA */
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/fads/u-boot.lds b/board/fads/u-boot.lds
deleted file mode 100644
index 21a2d9e32a..0000000000
--- a/board/fads/u-boot.lds
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_ARCH(powerpc)
-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)
-
- /*. = DEFINED(env_offset) ? env_offset : .;*/
- common/environment.o (.ppcenv)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
-ENTRY(_start)
diff --git a/board/fads/u-boot.lds.debug b/board/fads/u-boot.lds.debug
deleted file mode 100644
index 650572d4d0..0000000000
--- a/board/fads/u-boot.lds.debug
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/flagadm/Makefile b/board/flagadm/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/flagadm/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/flagadm/config.mk b/board/flagadm/config.mk
deleted file mode 100644
index 9c72c79d3b..0000000000
--- a/board/flagadm/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# TQM8xxL boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/flagadm/flagadm.c b/board/flagadm/flagadm.c
deleted file mode 100644
index 9c553676ec..0000000000
--- a/board/flagadm/flagadm.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-/*Orginal table, GPL4 disabled*/
-const uint sdram_table[] =
-{
- /* single read (offset 0x00 in upm ram) */
- 0x1f07cc04, 0xeeaeec04, 0x11adcc04, 0xefbbac00,
- 0x1ff74c47,
- /* Precharge */
- 0x1FF74C05,
- _NOT_USED_,
- _NOT_USED_,
- /* burst read (offset 0x08 in upm ram) */
- 0x1f07cc04, 0xeeaeec04, 0x00adcc04, 0x00afcc00,
- 0x00afcc00, 0x01afcc00, 0x0fbb8c00, 0x1ff74c47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* single write (offset 0x18 in upm ram) */
- 0x1f27cc04, 0xeeaeac00, 0x01b90c04, 0x1ff74c47,
- /* Load moderegister */
- 0x1FF74C34, /*Precharge*/
- 0xEFEA8C34, /*NOP*/
- 0x1FB54C35, /*Load moderegister*/
- _NOT_USED_,
-
- /* burst write (offset 0x20 in upm ram) */
- 0x1f07cc04, 0xeeaeac00, 0x00ad4c00, 0x00afcc00,
- 0x00afcc00, 0x01bb8c04, 0x1ff74c47, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* refresh (offset 0x30 in upm ram) */
- 0x1ff5cc84, 0xffffec04, 0xffffec04, 0xffffec04,
- 0xffffec84, 0xffffec07, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* exception (offset 0x3C in upm ram) */
- 0x7fffec07, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* GPL5 driven every cycle */
-/* the display and the DSP */
-const uint dsp_disp_table[] =
-{
- /* single read (offset 0x00 in upm ram) */
- 0xffffc80c, 0xffffc004, 0x0fffc004, 0x0fffd004,
- 0x0fffc000, 0x0fffc004, 0x3fffc004, 0xffffcc05,
- /* burst read (offset 0x08 in upm ram) */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* single write (offset 0x18 in upm ram) */
- 0xffffcc0c, 0xffffc004, 0x0fffc004, 0x0fffd004,
- 0x0fffc000, 0x0fffc004, 0x7fffc004, 0xfffffc05,
- /* burst write (offset 0x20 in upm ram) */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* refresh (offset 0x30 in upm ram) */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* exception (offset 0x3C in upm ram) */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-int checkboard (void)
-{
- puts ("Board: FlagaDM V3.0\n");
- return 0;
-}
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size_b0;
-
- memctl->memc_or2 = CFG_OR2;
- memctl->memc_br2 = CFG_BR2;
-
- udelay(100);
- upmconfig(UPMA, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
-
- memctl->memc_mptpr = MPTPR_PTP_DIV16;
- memctl->memc_mamr = CFG_MAMR_48_SDR | MAMR_TLFA_1X;
-
- /*Do the initialization of the SDRAM*/
- /*Start with the precharge cycle*/
- memctl->memc_mcr = (MCR_OP_RUN | MCR_UPM_A | MCR_MB_CS2 | \
- MCR_MLCF(1) | MCR_MAD(0x5));
-
- /*Then we need two refresh cycles*/
- memctl->memc_mamr = CFG_MAMR_48_SDR | MAMR_TLFA_2X;
- memctl->memc_mcr = (MCR_OP_RUN | MCR_UPM_A | MCR_MB_CS2 | \
- MCR_MLCF(2) | MCR_MAD(0x30));
-
- /*Mode register programming*/
- memctl->memc_mar = 0x00000088; /*CAS Latency = 2 and burst length = 4*/
- memctl->memc_mcr = (MCR_OP_RUN | MCR_UPM_A | MCR_MB_CS2 | \
- MCR_MLCF(1) | MCR_MAD(0x1C));
-
- /* That should do it, just enable the periodic refresh in burst of 4*/
- memctl->memc_mamr = CFG_MAMR_48_SDR | MAMR_TLFA_4X;
- memctl->memc_mamr |= (MAMR_PTAE | MAMR_GPL_A4DIS);
-
- size_b0 = 16*1024*1024;
-
- /*
- * No bank 1 or 3
- * invalidate bank
- */
- memctl->memc_br1 = 0;
- memctl->memc_br3 = 0;
-
- upmconfig(UPMB, (uint *)dsp_disp_table, sizeof(dsp_disp_table)/sizeof(uint));
-
- memctl->memc_mbmr = MBMR_GPL_B4DIS;
-
- memctl->memc_or4 = CFG_OR4;
- memctl->memc_br4 = CFG_BR4;
-
- return (size_b0);
-}
diff --git a/board/flagadm/flash.c b/board/flagadm/flash.c
deleted file mode 100644
index fd0082c135..0000000000
--- a/board/flagadm/flash.c
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-#include <flash.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-ulong flash_recognize (vu_long *base);
-int write_word (flash_info_t *info, ulong dest, ulong data);
-void flash_get_geometry (vu_long *base, flash_info_t *info);
-void flash_unprotect(flash_info_t *info);
-int _flash_real_protect(flash_info_t *info, long idx, int on);
-
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- int i;
- int rec;
-
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- *((vu_short*)CFG_FLASH_BASE) = 0xffff;
-
- flash_get_geometry ((vu_long*)CFG_FLASH_BASE, &flash_info[0]);
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-flash_info[0].size & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) |
- (memctl->memc_br0 & ~(BR_BA_MSK));
-
- rec = flash_recognize((vu_long*)CFG_FLASH_BASE);
-
- if (rec == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- flash_info[0].size, flash_info[0].size<<20);
- }
-
-#if CFG_FLASH_PROTECTION
- /*Unprotect all the flash memory*/
- flash_unprotect(&flash_info[0]);
-#endif
-
- *((vu_short*)CFG_FLASH_BASE) = 0xffff;
-
- return (flash_info[0].size);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_OFFSET,
- CFG_ENV_OFFSET+CFG_ENV_SIZE-1,
- &flash_info[0]);
-#endif
- return (flash_info[0].size);
-}
-
-
-int flash_get_protect_status(flash_info_t * info, long idx)
-{
- vu_short * base;
- ushort res;
-
-#ifdef DEBUG
- printf("\n Attempting to set protection info with %d sectors\n", info->sector_count);
-#endif
-
-
- base = (vu_short*)info->start[idx];
-
- *(base) = 0xffff;
-
- *(base + 0x55) = 0x0098;
- res = base[0x2];
-
- *(base) = 0xffff;
-
- if(res != 0)
- res = 1;
- else
- res = 0;
-
- return res;
-}
-
-void flash_get_geometry (vu_long *base, flash_info_t *info)
-{
- int i,j;
- ulong ner = 0;
- vu_short * sb = (vu_short*)base;
- ulong offset = (ulong)base;
-
- /* Read Device geometry */
-
- *sb = 0xffff;
-
- *sb = 0x0090;
-
- info->flash_id = ((ulong)base[0x0]);
-#ifdef DEBUG
- printf("Id is %x\n", (uint)(ulong)info->flash_id);
-#endif
-
- *sb = 0xffff;
-
- *(sb+0x55) = 0x0098;
-
- info->size = 1 << (sb[0x27]); /* Read flash size */
-
-#ifdef DEBUG
- printf("Size is %x\n", (uint)(ulong)info->size);
-#endif
-
- *sb = 0xffff;
-
- *(sb + 0x55) = 0x0098;
- ner = sb[0x2c] ; /*Number of erase regions*/
-
-#ifdef DEBUG
- printf("Number of erase regions %x\n", (uint)ner);
-#endif
-
- info->sector_count = 0;
-
- for(i = 0; i < ner; i++)
- {
- uint s;
- uint count;
- uint t1,t2,t3,t4;
-
- *sb = 0xffff;
-
- *(sb + 0x55) = 0x0098;
-
- t1 = sb[0x2d + i*4];
- t2 = sb[0x2e + i*4];
- t3 = sb[0x2f + i*4];
- t4 = sb[0x30 + i*4];
-
- count = ((t1 & 0x00ff) | (((t2 & 0x00ff) << 8) & 0xff00) )+ 1; /*sector count*/
- s = ((t3 & 0x00ff) | (((t4 & 0x00ff) << 8) & 0xff00)) * 256;; /*Sector size*/
-
-#ifdef DEBUG
- printf("count and size %x, %x\n", count, s);
- printf("sector count for erase region %d is %d\n", i, count);
-#endif
- for(j = 0; j < count; j++)
- {
-#ifdef DEBUG
- printf("%x, ", (uint)offset);
-#endif
- info->start[ info->sector_count + j] = offset;
- offset += s;
- }
- info->sector_count += count;
- }
-
- if ((offset - (ulong)base) != info->size)
- printf("WARNING reported size %x does not match to calculted size %x.\n"
- , (uint)info->size, (uint)(offset - (ulong)base) );
-
- /* Next check if there are any sectors protected.*/
-
- for(i = 0; i < info->sector_count; i++)
- info->protect[i] = flash_get_protect_status(info, i);
-
- *sb = 0xffff;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return ;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case INTEL_MANUFACT & FLASH_VENDMASK:
- printf ("Intel ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case INTEL_ID_28F320C3B & FLASH_TYPEMASK:
- printf ("28F320RC3(4 MB)\n");
- break;
- case INTEL_ID_28F320J3A:
- printf("28F320J3A (4 MB)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 4) == 0)
- printf ("\n ");
- printf (" %02d %08lX%s",
- i, info->start[i],
- info->protect[i]!=0 ? " (RO)" : " "
- );
- }
- printf ("\n");
- return ;
-}
-
-ulong flash_recognize (vu_long *base)
-{
- ulong id;
- ulong res = FLASH_UNKNOWN;
- vu_short * sb = (vu_short*)base;
-
- *sb = 0xffff;
-
- *sb = 0x0090;
- id = base[0];
-
- switch (id & 0x00FF0000)
- {
- case (MT_MANUFACT & 0x00FF0000): /* MT or => Intel */
- case (INTEL_ALT_MANU & 0x00FF0000):
- res = FLASH_MAN_INTEL;
- break;
- default:
- res = FLASH_UNKNOWN;
- }
-
- *sb = 0xffff;
-
- return res;
-}
-
-/*-----------------------------------------------------------------------*/
-#define INTEL_FLASH_STATUS_BLS 0x02
-#define INTEL_FLASH_STATUS_PSS 0x04
-#define INTEL_FLASH_STATUS_VPPS 0x08
-#define INTEL_FLASH_STATUS_PS 0x10
-#define INTEL_FLASH_STATUS_ES 0x20
-#define INTEL_FLASH_STATUS_ESS 0x40
-#define INTEL_FLASH_STATUS_WSMS 0x80
-
-int flash_decode_status_bits(char status)
-{
- int err = 0;
-
- if(!(status & INTEL_FLASH_STATUS_WSMS)) {
- printf("Busy\n");
- err = -1;
- }
-
- if(status & INTEL_FLASH_STATUS_ESS) {
- printf("Erase suspended\n");
- err = -1;
- }
-
- if(status & INTEL_FLASH_STATUS_ES) {
- printf("Error in block erase\n");
- err = -1;
- }
-
- if(status & INTEL_FLASH_STATUS_PS) {
- printf("Error in programming\n");
- err = -1;
- }
-
- if(status & INTEL_FLASH_STATUS_VPPS) {
- printf("Vpp low, operation aborted\n");
- err = -1;
- }
-
- if(status & INTEL_FLASH_STATUS_PSS) {
- printf("Program is suspended\n");
- err = -1;
- }
-
- if(status & INTEL_FLASH_STATUS_BLS) {
- printf("Attempting to program/erase a locked sector\n");
- err = -1;
- }
-
- if((status & INTEL_FLASH_STATUS_PS) &&
- (status & INTEL_FLASH_STATUS_ES) &&
- (status & INTEL_FLASH_STATUS_ESS)) {
- printf("A command sequence error\n");
- return -1;
- }
-
- return err;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_short *addr;
- int flag, prot, sect;
- ulong start, now;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) != (INTEL_MANUFACT & FLASH_VENDMASK)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- char tmp;
-
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_short *)(info->start[sect]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Single Block Erase Command */
- *addr = 0x0020;
- /* Confirm */
- *addr = 0x00D0;
- /* Resume Command, as per errata update */
- *addr = 0x00D0;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- *addr = 0x70; /*Read status register command*/
- tmp = (short)*addr & 0x00FF; /* Read the status */
- while (!(tmp & INTEL_FLASH_STATUS_WSMS)) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- *addr = 0x0050; /* Reset the status register */
- *addr = 0xffff;
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - start) > 1000) { /* every second */
- putc ('.');
- }
- udelay(100000); /* 100 ms */
- *addr = 0x0070; /*Read status register command*/
- tmp = (short)*addr & 0x00FF; /* Read status */
- start = get_timer(0);
- }
- if( tmp & INTEL_FLASH_STATUS_ES )
- flash_decode_status_bits(tmp);
-
- *addr = 0x0050; /* Reset the status register */
- *addr = 0xffff; /* Reset to read mode */
- }
- }
-
-
- printf (" done\n");
- return rcode;
-}
-
-void flash_unprotect (flash_info_t *info)
-{
- /*We can only unprotect the whole flash at once*/
- /*Therefore we must prevent the _flash_real_protect()*/
- /*from re-protecting sectors, that ware protected before */
- /*we called flash_real_protect();*/
-
- int i;
-
- for(i = 0; i < info->sector_count; i++)
- info->protect[i] = 0;
-
-#ifdef CFG_FLASH_PROTECTION
- _flash_real_protect(info, 0, 0);
-#endif
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_word (flash_info_t *info, ulong dest, ulong da)
-{
- vu_short *addr = (vu_short *)dest;
- ulong start;
- char csr;
- int flag;
- ushort * d = (ushort*)&da;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if (((*addr & d[0]) != d[0]) || ((*(addr+1) & d[1]) != d[1])) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- for(i = 0; i < 2; i++)
- {
- /* Write Command */
- *addr = 0x0010;
-
- /* Write Data */
- *addr = d[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- flag = 0;
- *addr = 0x0070; /*Read statusregister command */
- while (((csr = *addr) & INTEL_FLASH_STATUS_WSMS)!=INTEL_FLASH_STATUS_WSMS) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- flag = 1;
- break;
- }
- *addr = 0x0070; /*Read statusregister command */
- }
- if (csr & INTEL_FLASH_STATUS_PSS) {
- printf ("CSR indicates write error (%0x) at %08lx\n",
- csr, (ulong)addr);
- flag = 1;
- }
-
- /* Clear Status Registers Command */
- *addr = 0x0050;
- /* Reset to read array mode */
- *addr = 0xffff;
- addr++;
- }
-
- return (flag);
-}
-
-int flash_real_protect(flash_info_t *info, long offset, int prot)
-{
- int i, idx;
-
- for(idx = 0; idx < info->sector_count; idx++)
- if(info->start[idx] == offset)
- break;
-
- if(idx==info->sector_count)
- return -1;
-
- if(prot == 0) {
- /* Unprotect one sector, which means unprotect all flash
- * and reprotect the other protected sectors.
- */
- _flash_real_protect(info, 0, 0); /* Unprotects the whole flash*/
- info->protect[idx] = 0;
-
- for(i = 0; i < info->sector_count; i++)
- if(info->protect[i])
- _flash_real_protect(info, i, 1);
- }
- else {
- /* We can protect individual sectors */
- _flash_real_protect(info, idx, 1);
- }
-
- for( i = 0; i < info->sector_count; i++)
- info->protect[i] = flash_get_protect_status(info, i);
-
- return 0;
-}
-
-int _flash_real_protect(flash_info_t *info, long idx, int prot)
-{
- vu_short *addr;
- int flag;
- ushort cmd;
- ushort tmp;
- ulong now, start;
-
- if ((info->flash_id & FLASH_VENDMASK) != (INTEL_MANUFACT & FLASH_VENDMASK)) {
- printf ("Can't change protection for unknown flash type %08lx - aborted\n",
- info->flash_id);
- return -1;
- }
-
- if(prot == 0) {
- /*Unlock the sector*/
- cmd = 0x00D0;
- }
- else {
- /*Lock the sector*/
- cmd = 0x0001;
- }
-
- addr = (vu_short *)(info->start[idx]);
-
- /* If chip is busy, wait for it */
- start = get_timer(0);
- *addr = 0x0070; /*Read status register command*/
- tmp = ((ushort)(*addr))&0x00ff; /*Read the status*/
- while(!(tmp & INTEL_FLASH_STATUS_WSMS)) {
- /*Write State Machine Busy*/
- /*Wait untill done or timeout.*/
- if ((now=get_timer(start)) > CFG_FLASH_WRITE_TOUT) {
- *addr = 0x0050; /* Reset the status register */
- *addr = 0xffff; /* Reset the chip */
- printf ("TTimeout\n");
- return 1;
- }
- *addr = 0x0070;
- tmp = ((ushort)(*addr))&0x00ff; /*Read the status*/
- start = get_timer(0);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Unlock block*/
- *addr = 0x0060;
-
- *addr = cmd;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer(0);
- *addr = 0x0070; /*Read status register command*/
- tmp = ((ushort)(*addr)) & 0x00FF; /* Read the status */
- while (!(tmp & INTEL_FLASH_STATUS_WSMS)) {
- /* Write State Machine Busy */
- if ((now=get_timer(start)) > CFG_FLASH_WRITE_TOUT) {
- *addr = 0x0050; /* Reset the status register */
- *addr = 0xffff;
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - start) > 1000) { /* every second */
- putc ('.');
- }
- udelay(100000); /* 100 ms */
- *addr = 0x70; /*Read status register command*/
- tmp = (short)*addr & 0x00FF; /* Read status */
- start = get_timer(0);
- }
- if( tmp & INTEL_FLASH_STATUS_PS )
- flash_decode_status_bits(tmp);
-
- *addr =0x0050; /*Clear status register*/
-
- /* reset to read mode */
- *addr = 0xffff;
-
- return 0;
-}
diff --git a/board/flagadm/u-boot.lds b/board/flagadm/u-boot.lds
deleted file mode 100644
index 04995ea756..0000000000
--- a/board/flagadm/u-boot.lds
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * (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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/flagadm/u-boot.lds.debug b/board/flagadm/u-boot.lds.debug
deleted file mode 100644
index 3165d56345..0000000000
--- a/board/flagadm/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/funkwerk/vovpn-gw/Makefile b/board/funkwerk/vovpn-gw/Makefile
deleted file mode 100644
index a9a9299a83..0000000000
--- a/board/funkwerk/vovpn-gw/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o m88e6060.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/funkwerk/vovpn-gw/config.mk b/board/funkwerk/vovpn-gw/config.mk
deleted file mode 100644
index e59b4831da..0000000000
--- a/board/funkwerk/vovpn-gw/config.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# (C) Copyright 2004
-# Elmeg Communications Systems GmbH, Juergen Selent (j.selent@elmeg.de)
-#
-# Support for the Elmeg VoVPN Gateway Module
-#
-# 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
-
-TEXT_BASE = 0xfff00000
diff --git a/board/funkwerk/vovpn-gw/flash.c b/board/funkwerk/vovpn-gw/flash.c
deleted file mode 100644
index 7dd0d3f234..0000000000
--- a/board/funkwerk/vovpn-gw/flash.c
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * (C) Copyright 2004
- * Elmeg Communications Systems GmbH, Juergen Selent (j.selent@elmeg.de)
- *
- * Support for the Elmeg VoVPN Gateway Module
- * ------------------------------------------
- * This is a signle bank flashdriver for INTEL 28F320J3, 28F640J3
- * and 28F128J3A flashs working in 8 Bit mode.
- *
- * Most of this code is taken from existing u-boot source code.
- *
- * 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 <common.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-#define FLASH_CMD_READ_ID 0x90
-#define FLASH_CMD_READ_STATUS 0x70
-#define FLASH_CMD_RESET 0xff
-#define FLASH_CMD_BLOCK_ERASE 0x20
-#define FLASH_CMD_ERASE_CONFIRM 0xd0
-#define FLASH_CMD_CLEAR_STATUS 0x50
-#define FLASH_CMD_SUSPEND_ERASE 0xb0
-#define FLASH_CMD_WRITE 0x40
-#define FLASH_CMD_WRITE_BUFF 0xe8
-#define FLASH_CMD_PROG_RESUME 0xd0
-#define FLASH_CMD_PROTECT 0x60
-#define FLASH_CMD_PROTECT_SET 0x01
-#define FLASH_CMD_PROTECT_CLEAR 0xd0
-#define FLASH_STATUS_DONE 0x80
-
-#define FLASH_WRITE_BUFFER_SIZE 32
-
-#ifdef CFG_FLASH_16BIT
-#define FLASH_WORD_SIZE unsigned short
-#define FLASH_ID_MASK 0xffff
-#define FLASH_CMD_ADDR_SHIFT 0
-#else
-#define FLASH_WORD_SIZE unsigned char
-#define FLASH_ID_MASK 0xff
-/* A0 is not used in either 8x or 16x for READ ID */
-#define FLASH_CMD_ADDR_SHIFT 1
-#endif
-
-
-static unsigned long
-flash_get(volatile FLASH_WORD_SIZE *addr, flash_info_t *info)
-{
- volatile FLASH_WORD_SIZE *p;
- FLASH_WORD_SIZE value;
- int i;
-
- addr[0] = FLASH_CMD_READ_ID;
-
- /* manufactor */
- value = addr[0 << FLASH_CMD_ADDR_SHIFT];
- switch (value) {
- case (INTEL_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- *addr = FLASH_CMD_RESET;
- return (0);
-
- }
-
- /* device */
- value = addr[1 << FLASH_CMD_ADDR_SHIFT];
- switch (value) {
- case (INTEL_ID_28F320J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000;
- break;
- case (INTEL_ID_28F640J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break;
- case (INTEL_ID_28F128J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- *addr = FLASH_CMD_RESET;
- return (0);
- }
-
- /* setup sectors */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = (unsigned long)addr + (i * info->size/info->sector_count);
- }
-
- /* check protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- p = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- info->protect[i] = p[2 << FLASH_CMD_ADDR_SHIFT] & 1;
- }
-
- /* reset bank */
- *addr = FLASH_CMD_RESET;
- return (info->size);
-}
-
-unsigned long
-flash_init(void)
-{
- unsigned long size;
- int i;
-
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
- size = flash_get((volatile FLASH_WORD_SIZE *)CFG_FLASH_BASE, &flash_info[0]);
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH Size=0x%08lx\n", size);
- return (0);
- }
-
- /* always protect 1 sector containing the HRCW */
- flash_protect(FLAG_PROTECT_SET,
- flash_info[0].start[0],
- flash_info[0].start[1] - 1,
- &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_FLASH,
- CFG_MONITOR_FLASH+CFG_MONITOR_LEN-1,
- &flash_info[0]);
-#endif
-#ifdef CFG_ENV_IS_IN_FLASH
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
- return (size);
-}
-
-void
-flash_print_info(flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J3A: printf ("28F320JA3 (32 Mbit)\n");
- break;
- case FLASH_28F640J3A: printf ("28F640JA3 (64 Mbit)\n");
- break;
- case FLASH_28F128J3A: printf ("28F128JA3 (128 Mbit)\n");
- break;
- default: printf ("Unknown Chip Type");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-int
-flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- unsigned long start, now, last;
- int flag, prot, sect;
- volatile FLASH_WORD_SIZE *addr;
- FLASH_WORD_SIZE status;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return (1);
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Cannot erase unknown flash - aborted\n");
- return (1);
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect]) {
- continue;
- }
-
- addr = (volatile FLASH_WORD_SIZE *)(info->start[sect]);
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
-#ifdef DEBUG
- printf("Erase sector %d at start addr 0x%08X", sect, (unsigned int)info->start[sect]);
-#endif
-
- *addr = FLASH_CMD_CLEAR_STATUS;
- *addr = FLASH_CMD_BLOCK_ERASE;
- *addr = FLASH_CMD_ERASE_CONFIRM;
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = *addr) & FLASH_STATUS_DONE) != FLASH_STATUS_DONE) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Flash erase timeout at address %lx\n", info->start[sect]);
- *addr = FLASH_CMD_SUSPEND_ERASE;
- *addr = FLASH_CMD_RESET;
- return (1);
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- *addr = FLASH_CMD_RESET;
- }
- printf (" done\n");
- return (0);
-}
-
-static int
-write_buff2( volatile FLASH_WORD_SIZE *dst,
- volatile FLASH_WORD_SIZE *src,
- unsigned long cnt )
-{
- unsigned long start;
- FLASH_WORD_SIZE status;
- int flag, i;
-
- start = get_timer (0);
- while (1) {
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
- dst[0] = FLASH_CMD_WRITE_BUFF;
- if ((status = *dst) & FLASH_STATUS_DONE) {
- break;
- }
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (-1);
- }
- }
- dst[0] = (FLASH_WORD_SIZE)(cnt - 1);
- for (i=0; i<cnt; i++) {
- dst[i] = src[i];
- }
- dst[0] = FLASH_CMD_PROG_RESUME;
-
- if (flag) {
- enable_interrupts();
- }
-
- return( 0 );
-}
-
-static int
-poll_status( volatile FLASH_WORD_SIZE *addr )
-{
- unsigned long start;
-
- start = get_timer (0);
- /* wait for error or finish */
- while (1) {
- if (*addr == FLASH_STATUS_DONE) {
- if (*addr == FLASH_STATUS_DONE) {
- break;
- }
- }
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *addr = FLASH_CMD_RESET;
- return (-1);
- }
- }
- *addr = FLASH_CMD_RESET;
- return (0);
-}
-
-/*
- * write_buff return values:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-int
-write_buff(flash_info_t *info, uchar *src, ulong udst, ulong cnt)
-{
- volatile FLASH_WORD_SIZE *addr, *dst;
- unsigned long bcnt;
- int flag, i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return (4);
- }
-
- addr = (volatile FLASH_WORD_SIZE *)(info->start[0]);
- dst = (volatile FLASH_WORD_SIZE *) udst;
-
-#ifdef CFG_FLASH_16BIT
-#error NYI
-#else
- while (cnt > 0) {
- /* Check if buffer write is possible */
- if (cnt > 1 && (((unsigned long)dst & (FLASH_WRITE_BUFFER_SIZE - 1)) == 0)) {
- bcnt = cnt > FLASH_WRITE_BUFFER_SIZE ? FLASH_WRITE_BUFFER_SIZE : cnt;
- /* Check if Flash is (sufficiently) erased */
- for (i=0; i<bcnt; i++) {
- if ((dst[i] & src[i]) != src[i]) {
- return (2);
- }
- }
- if (write_buff2( dst,src,bcnt ) != 0) {
- addr[0] = FLASH_CMD_READ_STATUS;
- }
- if (poll_status( dst ) != 0) {
- return (1);
- }
- cnt -= bcnt;
- dst += bcnt;
- src += bcnt;
- continue;
- }
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dst & *src) != *src) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
- addr[0] = FLASH_CMD_ERASE_CONFIRM;
- addr[0] = FLASH_CMD_WRITE;
- *dst++ = *src++;
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
- if (poll_status( dst ) != 0) {
- return (1);
- }
- cnt --;
- }
-#endif
- return (0);
-}
-
-int
-flash_real_protect(flash_info_t *info, long sector, int prot)
-{
- volatile FLASH_WORD_SIZE *addr;
- unsigned long start;
-
- addr = (volatile FLASH_WORD_SIZE *)(info->start[sector]);
- *addr = FLASH_CMD_CLEAR_STATUS;
- *addr = FLASH_CMD_PROTECT;
-
- if(prot) {
- *addr = FLASH_CMD_PROTECT_SET;
- } else {
- *addr = FLASH_CMD_PROTECT_CLEAR;
- }
-
- /* wait for error or finish */
- start = get_timer (0);
- while(!(addr[0] & FLASH_STATUS_DONE)){
- if (get_timer(start) > CFG_FLASH_ERASE_TOUT) {
- printf("Flash protect timeout at address %lx\n", info->start[sector]);
- addr[0] = FLASH_CMD_RESET;
- return (1);
- }
- }
-
- /* Set software protect flag */
- info->protect[sector] = prot;
- *addr = FLASH_CMD_RESET;
- return (0);
-}
diff --git a/board/funkwerk/vovpn-gw/m88e6060.c b/board/funkwerk/vovpn-gw/m88e6060.c
deleted file mode 100644
index 03a03d0af0..0000000000
--- a/board/funkwerk/vovpn-gw/m88e6060.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * (C) Copyright 2004
- * Elmeg Communications Systems GmbH, Juergen Selent (j.selent@elmeg.de)
- *
- * Support for the Elmeg VoVPN Gateway Module
- * ------------------------------------------
- * Initialize Marvell M88E6060 Switch
- *
- * 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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <asm/m8260_pci.h>
-#include <net.h>
-#include <miiphy.h>
-
-#include "m88e6060.h"
-
-#if (CONFIG_COMMANDS & CFG_CMD_NET)
-static int prtTab[M88X_PRT_CNT] = { 8, 9, 10, 11, 12, 13 };
-static int phyTab[M88X_PHY_CNT] = { 0, 1, 2, 3, 4 };
-
-static m88x_regCfg_t prtCfg0[] = {
- { 4, 0x3e7c, 0x8000 },
- { 4, 0x3e7c, 0x8003 },
- { 6, 0x0fc0, 0x001e },
- { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t prtCfg1[] = {
- { 4, 0x3e7c, 0x8000 },
- { 4, 0x3e7c, 0x8003 },
- { 6, 0x0fc0, 0x001d },
- { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t prtCfg2[] = {
- { 4, 0x3e7c, 0x8000 },
- { 4, 0x3e7c, 0x8003 },
- { 6, 0x0fc0, 0x001b },
- { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t prtCfg3[] = {
- { 4, 0x3e7c, 0x8000 },
- { 4, 0x3e7c, 0x8003 },
- { 6, 0x0fc0, 0x0017 },
- { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t prtCfg4[] = {
- { 4, 0x3e7c, 0x8000 },
- { 4, 0x3e7c, 0x8003 },
- { 6, 0x0fc0, 0x000f },
- { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t *prtCfg[M88X_PRT_CNT] = {
- prtCfg0,prtCfg1,prtCfg2,prtCfg3,prtCfg4,NULL
-};
-
-static m88x_regCfg_t phyCfgX[] = {
- { 4, 0xfa1f, 0x01e0 },
- { 0, 0x213f, 0x1200 },
- { 24, 0x81ff, 0x1200 },
- { -1, 0xffff, 0x0000 }
-};
-
-static m88x_regCfg_t *phyCfg[M88X_PHY_CNT] = {
- phyCfgX,phyCfgX,phyCfgX,phyCfgX,NULL
-};
-
-#if 0
-static void
-m88e6060_dump( int devAddr )
-{
- int i, j;
- unsigned short val[6];
-
- printf( "M88E6060 Register Dump\n" );
- printf( "====================================\n" );
- printf( "PortNo 0 1 2 3 4 5\n" );
- for (i=0; i<6; i++)
- miiphy_read( devAddr+prtTab[i],M88X_PRT_STAT,&val[i] );
- printf( "STAT %04hx %04hx %04hx %04hx %04hx %04hx\n",
- val[0],val[1],val[2],val[3],val[4],val[5] );
-
- for (i=0; i<6; i++)
- miiphy_read( devAddr+prtTab[i],M88X_PRT_ID,&val[i] );
- printf( "ID %04hx %04hx %04hx %04hx %04hx %04hx\n",
- val[0],val[1],val[2],val[3],val[4],val[5] );
-
- for (i=0; i<6; i++)
- miiphy_read( devAddr+prtTab[i],M88X_PRT_CNTL,&val[i] );
- printf( "CNTL %04hx %04hx %04hx %04hx %04hx %04hx\n",
- val[0],val[1],val[2],val[3],val[4],val[5] );
-
- for (i=0; i<6; i++)
- miiphy_read( devAddr+prtTab[i],M88X_PRT_VLAN,&val[i] );
- printf( "VLAN %04hx %04hx %04hx %04hx %04hx %04hx\n",
- val[0],val[1],val[2],val[3],val[4],val[5] );
-
- for (i=0; i<6; i++)
- miiphy_read( devAddr+prtTab[i],M88X_PRT_PAV,&val[i] );
- printf( "PAV %04hx %04hx %04hx %04hx %04hx %04hx\n",
- val[0],val[1],val[2],val[3],val[4],val[5] );
-
- for (i=0; i<6; i++)
- miiphy_read( devAddr+prtTab[i],M88X_PRT_RX,&val[i] );
- printf( "RX %04hx %04hx %04hx %04hx %04hx %04hx\n",
- val[0],val[1],val[2],val[3],val[4],val[5] );
-
- for (i=0; i<6; i++)
- miiphy_read( devAddr+prtTab[i],M88X_PRT_TX,&val[i] );
- printf( "TX %04hx %04hx %04hx %04hx %04hx %04hx\n",
- val[0],val[1],val[2],val[3],val[4],val[5] );
-
- printf( "------------------------------------\n" );
- printf( "PhyNo 0 1 2 3 4\n" );
- for (i=0; i<9; i++) {
- for (j=0; j<5; j++) {
- miiphy_read( devAddr+phyTab[j],i,&val[j] );
- }
- printf( "0x%02x %04hx %04hx %04hx %04hx %04hx\n",
- i,val[0],val[1],val[2],val[3],val[4] );
- }
- for (i=0x10; i<0x1d; i++) {
- for (j=0; j<5; j++) {
- miiphy_read( devAddr+phyTab[j],i,&val[j] );
- }
- printf( "0x%02x %04hx %04hx %04hx %04hx %04hx\n",
- i,val[0],val[1],val[2],val[3],val[4] );
- }
-}
-#endif
-
-int
-m88e6060_initialize( int devAddr )
-{
- static char *_f = "m88e6060_initialize:";
- m88x_regCfg_t *p;
- int err;
- int i;
- unsigned short val;
-
- /*** reset all phys into powerdown ************************************/
- for (i=0, err=0; i<M88X_PHY_CNT; i++) {
- err += bb_miiphy_read(NULL, devAddr+phyTab[i],M88X_PHY_CNTL,&val );
- /* keep SpeedLSB, Duplex */
- val &= 0x2100;
- /* set SWReset, AnegEn, PwrDwn, RestartAneg */
- val |= 0x9a00;
- err += bb_miiphy_write(NULL, devAddr+phyTab[i],M88X_PHY_CNTL,val );
- }
- if (err) {
- printf( "%s [ERR] reset phys\n",_f );
- return( -1 );
- }
-
- /*** disable all ports ************************************************/
- for (i=0, err=0; i<M88X_PRT_CNT; i++) {
- err += bb_miiphy_read(NULL, devAddr+prtTab[i],M88X_PRT_CNTL,&val );
- val &= 0xfffc;
- err += bb_miiphy_write(NULL, devAddr+prtTab[i],M88X_PRT_CNTL,val );
- }
- if (err) {
- printf( "%s [ERR] disable ports\n",_f );
- return( -1 );
- }
-
- /*** initialize switch ************************************************/
- /* set switch mac addr */
-#define ea eth_get_dev()->enetaddr
- val = (ea[4] << 8) | ea[5];
- err = bb_miiphy_write(NULL, devAddr+15,M88X_GLB_MAC45,val );
- val = (ea[2] << 8) | ea[3];
- err += bb_miiphy_write(NULL, devAddr+15,M88X_GLB_MAC23,val );
- val = (ea[0] << 8) | ea[1];
-#undef ea
- val &= 0xfeff; /* clear DiffAddr */
- err += bb_miiphy_write(NULL, devAddr+15,M88X_GLB_MAC01,val );
- if (err) {
- printf( "%s [ERR] switch mac address register\n",_f );
- return( -1 );
- }
-
- /* !DiscardExcessive, MaxFrameSize, CtrMode */
- err = bb_miiphy_read(NULL, devAddr+15,M88X_GLB_CNTL,&val );
- val &= 0xd870;
- val |= 0x0500;
- err += bb_miiphy_write(NULL, devAddr+15,M88X_GLB_CNTL,val );
- if (err) {
- printf( "%s [ERR] switch global control register\n",_f );
- return( -1 );
- }
-
- /* LernDis off, ATUSize 1024, AgeTime 5min */
- err = bb_miiphy_read(NULL, devAddr+15,M88X_ATU_CNTL,&val );
- val &= 0x000f;
- val |= 0x2130;
- err += bb_miiphy_write(NULL, devAddr+15,M88X_ATU_CNTL,val );
- if (err) {
- printf( "%s [ERR] atu control register\n",_f );
- return( -1 );
- }
-
- /*** initialize ports *************************************************/
- for (i=0; i<M88X_PRT_CNT; i++) {
- if ((p = prtCfg[i]) == NULL) {
- continue;
- }
- while (p->reg != -1) {
- err = 0;
- err += bb_miiphy_read(NULL, devAddr+prtTab[i],p->reg,&val );
- val &= p->msk;
- val |= p->val;
- err += bb_miiphy_write(NULL, devAddr+prtTab[i],p->reg,val );
- if (err) {
- printf( "%s [ERR] config port %d register %d\n",_f,i,p->reg );
- /* XXX what todo */
- }
- p++;
- }
- }
-
- /*** initialize phys **************************************************/
- for (i=0; i<M88X_PHY_CNT; i++) {
- if ((p = phyCfg[i]) == NULL) {
- continue;
- }
- while (p->reg != -1) {
- err = 0;
- err += bb_miiphy_read(NULL, devAddr+phyTab[i],p->reg,&val );
- val &= p->msk;
- val |= p->val;
- err += bb_miiphy_write(NULL, devAddr+phyTab[i],p->reg,val );
- if (err) {
- printf( "%s [ERR] config phy %d register %d\n",_f,i,p->reg );
- /* XXX what todo */
- }
- p++;
- }
- }
- udelay(100000);
- return( 0 );
-}
-#endif
diff --git a/board/funkwerk/vovpn-gw/m88e6060.h b/board/funkwerk/vovpn-gw/m88e6060.h
deleted file mode 100644
index 15d458325d..0000000000
--- a/board/funkwerk/vovpn-gw/m88e6060.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * (C) Copyright 2004
- * Elmeg Communications Systems GmbH, Juergen Selent (j.selent@elmeg.de)
- *
- * Support for the Elmeg VoVPN Gateway Module
- * ------------------------------------------
- * Initialize Marvell M88E6060 Switch
- *
- * 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 _INC_m88e6060_h_
-#define _INC_m88e6060_h_
-
-/* ************************************************************************** */
-/* *** DEFINES ************************************************************** */
-
-/* switch hw */
-#define M88X_PRT_CNT 6
-#define M88X_PHY_CNT 5
-
-/* phy register offsets */
-#define M88X_PHY_CNTL 0x00
-#define M88X_PHY_STAT 0x00
-#define M88X_PHY_ID0 0x02
-#define M88X_PHY_ID1 0x03
-#define M88X_PHY_ANEG_ADV 0x04
-#define M88X_PHY_LPA 0x05
-#define M88X_PHY_ANEG_EXP 0x06
-#define M88X_PHY_NPT 0x07
-#define M88X_PHY_LPNP 0x08
-
-/* port register offsets */
-#define M88X_PRT_STAT 0x00
-#define M88X_PRT_ID 0x03
-#define M88X_PRT_CNTL 0x04
-#define M88X_PRT_VLAN 0x06
-#define M88X_PRT_PAV 0x0b
-#define M88X_PRT_RX 0x10
-#define M88X_PRT_TX 0x11
-
-/* global/atu register offsets */
-#define M88X_GLB_STAT 0x00
-#define M88X_GLB_MAC01 0x01
-#define M88X_GLB_MAC23 0x02
-#define M88X_GLB_MAC45 0x03
-#define M88X_GLB_CNTL 0x04
-#define M88X_ATU_CNTL 0x0a
-#define M88X_ATU_OP 0x0b
-
-/* id0 register - 0x02 */
-#define M88X_PHY_ID0_VALUE 0x0141
-
-/* id1 register - 0x03 */
-#define M88X_PHY_ID1_VALUE 0x0c80 /* without revision ! */
-
-
-/* misc */
-#define M88E6060_ID ((M88X_PHY_ID0_VALUE<<16) | M88X_PHY_ID1_VALUE)
-
-/* ************************************************************************** */
-/* *** TYPEDEFS ************************************************************* */
-
-typedef struct {
- int reg;
- unsigned short msk;
- unsigned short val;
-} m88x_regCfg_t;
-
-/* ************************************************************************** */
-/* *** PROTOTYPES *********************************************************** */
-
-extern int m88e6060_initialize( int );
-
-#endif /* _INC_m88e6060_h_ */
diff --git a/board/funkwerk/vovpn-gw/u-boot.lds b/board/funkwerk/vovpn-gw/u-boot.lds
deleted file mode 100644
index bf8048d27e..0000000000
--- a/board/funkwerk/vovpn-gw/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Modified by Yuli Barcohen <yuli@arabellasw.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
- */
-
-OUTPUT_ARCH(powerpc)
-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/mpc8260/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
-ENTRY(_start)
diff --git a/board/funkwerk/vovpn-gw/vovpn-gw.c b/board/funkwerk/vovpn-gw/vovpn-gw.c
deleted file mode 100644
index 97f81eefcf..0000000000
--- a/board/funkwerk/vovpn-gw/vovpn-gw.c
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
- * (C) Copyright 2004
- * Elmeg Communications Systems GmbH, Juergen Selent (j.selent@elmeg.de)
- *
- * Support for the Elmeg VoVPN Gateway Module
- *
- * 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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <asm/m8260_pci.h>
-#include <miiphy.h>
-
-#include "m88e6060.h"
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1252 */
- /* PA30 */ { 1, 0, 0, 0, 0, 0 }, /* GPI BP_RES */
- /* PA29 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1253 */
- /* PA28 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 RMII TX_EN */
- /* PA27 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 RMII CRS_DV */
- /* PA26 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 RMII RX_ERR */
- /* PA25 */ { 1, 0, 0, 0, 0, 0 }, /* GPI HWID */
- /* PA24 */ { 1, 0, 0, 0, 0, 0 }, /* GPI HWID */
- /* PA23 */ { 1, 0, 0, 0, 0, 0 }, /* GPI HWID */
- /* PA22 */ { 1, 0, 0, 0, 0, 0 }, /* GPI HWID */
- /* PA21 */ { 1, 0, 0, 0, 0, 0 }, /* GPI HWID */
- /* PA20 */ { 1, 0, 0, 1, 0, 1 }, /* GPO LED STATUS */
- /* PA19 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 RMII TxD[1] */
- /* PA18 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 RMII TxD[0] */
- /* PA17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RMII RxD[0] */
- /* PA16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RMII RxD[1] */
- /* PA15 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1255 */
- /* PA14 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP???? */
- /* PA13 */ { 1, 0, 0, 1, 0, 1 }, /* GPO EN_BCTL1 XXX jse */
- /* PA12 */ { 1, 0, 0, 1, 0, 0 }, /* GPO SWITCH RESET */
- /* PA11 */ { 1, 0, 0, 1, 0, 0 }, /* GPO DSP SL1 RESET */
- /* PA10 */ { 1, 0, 0, 1, 0, 0 }, /* GPO DSP SL2 RESET */
- /* PA9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PA8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC2 RXD */
- /* PA7 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exit */
- /* PA6 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exit */
- /* PA5 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exit */
- /* PA4 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exit */
- /* PA3 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exit */
- /* PA2 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exit */
- /* PA1 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exit */
- /* PA0 */ { 0, 0, 0, 0, 0, 0 } /* pin does not exit */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1257 */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RMII CRS_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 RMII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RMII RX_ERR */
- /* PB27 */ { 1, 1, 1, 0, 1, 0 }, /* TDM_B2 L1TXD XXX val=0 */
- /* PB26 */ { 1, 1, 1, 0, 1, 0 }, /* TDM_B2 L1RXD XXX val,dr */
- /* PB25 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1259 */
- /* PB24 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_B2 L1RSYNC */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 RMII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 RMII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RMII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RMII RxD[1] */
- /* PB19 */ { 1, 0, 0, 1, 0, 1 }, /* GPO PHY MDC */
- /* PB18 */ { 1, 0, 0, 0, 0, 0 }, /* GPIO PHY MDIO */
- /* PB17 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB16 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB15 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB14 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB13 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB12 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB11 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB10 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB9 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB8 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB7 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB6 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB5 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB4 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin does not exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PC30 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PC29 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1183 */
- /* PC28 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1184 */
- /* PC27 */ { 1, 1, 0, 0, 0, 0 }, /* CLK5 TDM_A1 RX */
- /* PC26 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1185 */
- /* PC25 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1178 */
- /* PC24 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1186 */
- /* PC23 */ { 1, 1, 0, 0, 0, 0 }, /* CLK9 TDM_B2 RX */
- /* PC22 */ { 1, 1, 0, 0, 0, 0 }, /* CLK10 FCC1 RMII REFCLK */
- /* PC21 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1187 */
- /* PC20 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1182 */
- /* PC19 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1188 */
- /* PC18 */ { 1, 0, 0, 1, 0, 0 }, /* GPO HW RESET */
- /* PC17 */ { 1, 1, 0, 1, 0, 0 }, /* BRG8 SWITCH CLKIN */
- /* PC16 */ { 1, 1, 0, 0, 0, 0 }, /* CLK16 FCC2 RMII REFCLK */
- /* PC15 */ { 1, 0, 0, 0, 0, 0 }, /* GPI SL1_MTYPE_3 */
- /* PC14 */ { 1, 0, 0, 0, 0, 0 }, /* GPI SL1_MTYPE_2 */
- /* PC13 */ { 1, 0, 0, 0, 0, 0 }, /* GPI SL1_MTYPE_1 */
- /* PC12 */ { 1, 0, 0, 0, 0, 0 }, /* GPI SL1_MTYPE_0 */
- /* PC11 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1176 */
- /* PC10 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1177 */
- /* PC9 */ { 1, 0, 0, 0, 0, 0 }, /* GPI SL2_MTYPE_3 */
- /* PC8 */ { 1, 0, 0, 0, 0, 0 }, /* GPI SL2_MTYPE_2 */
- /* PC7 */ { 1, 0, 0, 0, 0, 0 }, /* GPI SL2_MTYPE_1 */
- /* PC6 */ { 1, 0, 0, 0, 0, 0 }, /* GPI SL2_MTYPE_0 */
- /* PC5 */ { 1, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PC4 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PC3 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PC2 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PC1 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1192 */
- /* PC0 */ { 1, 0, 0, 0, 0, 0 }, /* GPI RACK */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1193 */
- /* PD30 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1194 */
- /* PD29 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1195 */
- /* PD28 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD27 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD26 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD25 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1179 */
- /* PD24 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1180 */
- /* PD23 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1181 */
- /* PD22 */ { 1, 1, 1, 0, 1, 0 }, /* TDM_A2 L1TXD */
- /* PD21 */ { 1, 1, 1, 0, 1, 0 }, /* TDM_A2 L1RXD */
- /* PD20 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_A2 L1RSYNC */
- /* PD19 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1196 */
- /* PD18 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1197 */
- /* PD17 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1198 */
- /* PD16 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1199 */
- /* PD15 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1250 */
- /* PD14 */ { 1, 0, 0, 1, 0, 0 }, /* GPO TP1251 */
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD9 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD8 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD7 */ { 0, 0, 0, 1, 0, 0 }, /* GPO FL_BYTE */
- /* PD6 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD5 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD4 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin does not exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin does not exist */
- }
-};
-
-void reset_phy (void)
-{
- volatile ioport_t *iop;
-#if (CONFIG_COMMANDS & CFG_CMD_NET)
- int i;
- unsigned short val;
-#endif
-
- iop = ioport_addr((immap_t *)CFG_IMMR, 0);
-
- /* Reset the PHY */
- iop->pdat &= 0xfff7ffff; /* PA12 = |SWITCH_RESET */
-#if (CONFIG_COMMANDS & CFG_CMD_NET)
- udelay(20000);
- iop->pdat |= 0x00080000;
- for (i=0; i<100; i++) {
- udelay(20000);
- if (bb_miiphy_read("FCC1 ETHERNET", CFG_PHY_ADDR,2,&val ) == 0) {
- break;
- }
- }
- /* initialize switch */
- m88e6060_initialize( CFG_PHY_ADDR );
-#endif
-}
-
-static unsigned long UPMATable[] = {
- 0x8fffec00, 0x0ffcfc00, 0x0ffcfc00, 0x0ffcfc00, /* Words 0 to 3 */
- 0x0ffcfc04, 0x3ffdfc00, 0xfffffc01, 0xfffffc01, /* Words 4 to 7 */
- 0xfffffc00, 0xfffffc04, 0xfffffc01, 0xfffffc00, /* Words 8 to 11 */
- 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00, /* Words 12 to 15 */
- 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00, /* Words 16 to 19 */
- 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc01, /* Words 20 to 23 */
- 0x8fffec00, 0x00fffc00, 0x00fffc00, 0x00fffc00, /* Words 24 to 27 */
- 0x0ffffc04, 0xfffffc01, 0xfffffc01, 0xfffffc01, /* Words 28 to 31 */
- 0xfffffc00, 0xfffffc01, 0xfffffc01, 0xfffffc00, /* Words 32 to 35 */
- 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00, /* Words 36 to 39 */
- 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00, /* Words 40 to 43 */
- 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc01, /* Words 44 to 47 */
- 0xfffffc00, 0xfffffc04, 0xfffffc01, 0xfffffc00, /* Words 48 to 51 */
- 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc00, /* Words 52 to 55 */
- 0xfffffc00, 0xfffffc00, 0xfffffc00, 0xfffffc01, /* Words 56 to 59 */
- 0xffffec00, 0xffffec04, 0xffffec00, 0xfffffc01 /* Words 60 to 63 */
-};
-
-int board_early_init_f (void)
-{
- volatile immap_t *immap;
- volatile memctl8260_t *memctl;
- volatile unsigned char *dummy;
- int i;
-
- immap = (immap_t *) CFG_IMMR;
- memctl = &immap->im_memctl;
-
-#if 0
- /* CS2-5 - DSP via UPMA */
- dummy = (volatile unsigned char *) (memctl->memc_br2 & BRx_BA_MSK);
- memctl->memc_mar = 0;
- memctl->memc_mamr = MxMR_OP_WARR;
- for (i = 0; i < 64; i++) {
- memctl->memc_mdr = UPMATable[i];
- *dummy = 0;
- }
- memctl->memc_mamr = 0x00044440;
-#else
- /* CS7 - DPRAM via UPMA */
- dummy = (volatile unsigned char *) (memctl->memc_br7 & BRx_BA_MSK);
- memctl->memc_mar = 0;
- memctl->memc_mamr = MxMR_OP_WARR;
- for (i = 0; i < 64; i++) {
- memctl->memc_mdr = UPMATable[i];
- *dummy = 0;
- }
- memctl->memc_mamr = 0x00044440;
-#endif
- return 0;
-}
-
-int misc_init_r (void)
-{
- volatile ioport_t *iop;
- unsigned char temp;
-#if 0
- /* DUMP UPMA RAM */
- volatile immap_t *immap;
- volatile memctl8260_t *memctl;
- volatile unsigned char *dummy;
- unsigned char c;
- int i;
-
- immap = (immap_t *) CFG_IMMR;
- memctl = &immap->im_memctl;
-
-
- dummy = (volatile unsigned char *) (memctl->memc_br7 & BRx_BA_MSK);
- memctl->memc_mar = 0;
- memctl->memc_mamr = MxMR_OP_RARR;
- for (i = 0; i < 64; i++) {
- c = *dummy;
- printf( "UPMA[%02d]: 0x%08lx,0x%08lx: 0x%08lx\n",i,
- memctl->memc_mamr,
- memctl->memc_mar,
- memctl->memc_mdr );
- }
- memctl->memc_mamr = 0x00044440;
-#endif
- /* enable buffers (DSP, DPRAM) */
- iop = ioport_addr((immap_t *)CFG_IMMR, 0);
- iop->pdat &= 0xfffbffff; /* PA13 = |EN_M_BCTL1 */
-
- /* destroy DPRAM magic */
- *(volatile unsigned char *)0xf0500000 = 0x00;
-
- /* clear any pending DPRAM irq */
- temp = *(volatile unsigned char *)0xf05003ff;
-
- /* write module-id into DPRAM */
- *(volatile unsigned char *)0xf0500201 = 0x50;
-
- return 0;
-}
-
-#if defined(CONFIG_HAVE_OWN_RESET)
-int
-do_reset (void *cmdtp, int flag, int argc, char *argv[])
-{
- volatile ioport_t *iop;
-
- iop = ioport_addr((immap_t *)CFG_IMMR, 2);
- iop->pdat |= 0x00002000; /* PC18 = HW_RESET */
- return 1;
-}
-#endif /* CONFIG_HAVE_OWN_RESET */
-
-#define ns2clk(ns) (ns / (1000000000 / CONFIG_8260_CLKIN) + 1)
-
-long int initdram (int board_type)
-{
-#ifndef CFG_RAMBOOT
- volatile immap_t *immap;
- volatile memctl8260_t *memctl;
- volatile uchar *ramaddr;
- int i;
- uchar c;
-
- immap = (immap_t *) CFG_IMMR;
- memctl = &immap->im_memctl;
- ramaddr = (uchar *) CFG_SDRAM_BASE;
- c = 0xff;
-
- immap->im_siu_conf.sc_ppc_acr = 0x02;
- immap->im_siu_conf.sc_ppc_alrh = 0x01267893;
- immap->im_siu_conf.sc_ppc_alrl = 0x89abcdef;
- immap->im_siu_conf.sc_tescr1 = 0x00000000;
- immap->im_siu_conf.sc_tescr2 = 0x00000000;
-
- memctl->memc_mptpr = CFG_MPTPR;
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_or1 = CFG_OR1_PRELIM;
- memctl->memc_br1 = CFG_SDRAM_BASE | CFG_BR1_PRELIM;
-
- /* Precharge all banks */
- memctl->memc_psdmr = CFG_PSDMR | 0x28000000;
- *ramaddr = c;
-
- /* CBR refresh */
- memctl->memc_psdmr = CFG_PSDMR | 0x08000000;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- /* Mode Register write */
- memctl->memc_psdmr = CFG_PSDMR | 0x18000000;
- *ramaddr = c;
-
- /* Refresh enable */
- memctl->memc_psdmr = CFG_PSDMR | 0x40000000;
- *ramaddr = c;
-#endif /* CFG_RAMBOOT */
-
- return (CFG_SDRAM_SIZE);
-}
-
-int checkboard (void)
-{
-#ifdef CONFIG_CLKIN_66MHz
- puts ("Board: Elmeg VoVPN Gateway Module (66MHz)\n");
-#else
- puts ("Board: Elmeg VoVPN Gateway Module (100MHz)\n");
-#endif
- return 0;
-}
diff --git a/board/g2000/Makefile b/board/g2000/Makefile
deleted file mode 100644
index 3c5aa8680a..0000000000
--- a/board/g2000/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o strataflash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/g2000/config.mk b/board/g2000/config.mk
deleted file mode 100644
index 25b2105799..0000000000
--- a/board/g2000/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (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
-#
-
-#
-# esd PLU405 boards
-#
-
-TEXT_BASE = 0xFFFC0000
-#TEXT_BASE = 0x00FC0000
diff --git a/board/g2000/g2000.c b/board/g2000/g2000.c
deleted file mode 100644
index 39b5c701e0..0000000000
--- a/board/g2000/g2000.c
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * (C) Copyright 2004
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-
-#define MEM_MCOPT1_INIT_VAL 0x00800000
-#define MEM_RTR_INIT_VAL 0x04070000
-#define MEM_PMIT_INIT_VAL 0x07c00000
-#define MEM_MB0CF_INIT_VAL 0x00082001
-#define MEM_MB1CF_INIT_VAL 0x04082000
-#define MEM_SDTR1_INIT_VAL 0x00854005
-#define SDRAM0_CFG_ENABLE 0x80000000
-
-#define CFG_SDRAM_SIZE 0x04000000 /* 64 MB */
-
-int board_early_init_f (void)
-{
-#if 0 /* test-only */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
- mtdcr (uiccr, 0x00000010);
- mtdcr (uicpr, 0xFFFF7FF0); /* set int polarities */
- mtdcr (uictr, 0x00000010); /* set int trigger levels */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
-#else
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFFF0); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-#endif
-
-#if 1 /* test-only */
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
- mtebc (epcr, 0xa8400000); /* ebc always driven */
-#endif
-
- return 0;
-}
-
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
- /*
- * Set NAND-FLASH GPIO signals to default
- */
- out32(GPIO0_OR, in32(GPIO0_OR) & ~(CFG_NAND_CLE | CFG_NAND_ALE));
- out32(GPIO0_OR, in32(GPIO0_OR) | CFG_NAND_CE);
-#endif
-
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming G2000");
- } else {
- puts(str);
- }
-
- putc ('\n');
-
- return 0;
-}
-
-
-/* -------------------------------------------------------------------------
- G2000 rev B is an embeded design. we don't read for spd of this version.
- Doing static SDRAM controller configuration in the following section.
- ------------------------------------------------------------------------- */
-
-long int init_sdram_static_settings(void)
-{
-#define mtsdram0(reg, data) mtdcr(memcfga,reg);mtdcr(memcfgd,data)
- /* disable memcontroller so updates work */
- mtsdram0( mem_mcopt1, MEM_MCOPT1_INIT_VAL );
- mtsdram0( mem_rtr , MEM_RTR_INIT_VAL );
- mtsdram0( mem_pmit , MEM_PMIT_INIT_VAL );
- mtsdram0( mem_mb0cf , MEM_MB0CF_INIT_VAL );
- mtsdram0( mem_mb1cf , MEM_MB1CF_INIT_VAL );
- mtsdram0( mem_sdtr1 , MEM_SDTR1_INIT_VAL );
-
- /* SDRAM have a power on delay, 500 micro should do */
- udelay(500);
- mtsdram0( mem_mcopt1, MEM_MCOPT1_INIT_VAL|SDRAM0_CFG_ENABLE );
-
- return (CFG_SDRAM_SIZE); /* CFG_SDRAM_SIZE is in G2000.h */
- }
-
-
-long int initdram (int board_type)
-{
- long int ret;
-
-/* flzt, we can still turn this on in the future */
-/* #ifdef CONFIG_SPD_EEPROM
- ret = spd_sdram ();
-#else
- ret = init_sdram_static_settings();
-#endif
-*/
-
- ret = init_sdram_static_settings();
-
- return ret;
-}
-
-
-#if 1 /* test-only */
-void sdram_init(void)
-{
- init_sdram_static_settings();
-}
-#endif
-
-
-#if 0 /* test-only */
-long int initdram (int board_type)
-{
- unsigned long val;
-
- mtdcr(memcfga, mem_mb0cf);
- val = mfdcr(memcfgd);
-
-#if 0
- printf("\nmb0cf=%x\n", val); /* test-only */
- printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
- return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-#endif
-
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 16 MB - ok\n");
-
- return (0);
-}
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand_legacy.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- nand_probe(CFG_NAND_BASE);
- if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
- print_size(nand_dev_desc[0].totlen, "\n");
- }
-}
-#endif
-
-
-#if 0 /* test-only !!! */
-int do_dumpebc(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- ulong ap, cr;
-
- printf("\nEBC registers for PPC405GP:\n");
- mfebc(pb0ap, ap); mfebc(pb0cr, cr);
- printf("0: AP=%08lx CP=%08lx\n", ap, cr);
- mfebc(pb1ap, ap); mfebc(pb1cr, cr);
- printf("1: AP=%08lx CP=%08lx\n", ap, cr);
- mfebc(pb2ap, ap); mfebc(pb2cr, cr);
- printf("2: AP=%08lx CP=%08lx\n", ap, cr);
- mfebc(pb3ap, ap); mfebc(pb3cr, cr);
- printf("3: AP=%08lx CP=%08lx\n", ap, cr);
- mfebc(pb4ap, ap); mfebc(pb4cr, cr);
- printf("4: AP=%08lx CP=%08lx\n", ap, cr);
- printf("\n");
-
- return 0;
-}
-U_BOOT_CMD(
- dumpebc, 1, 1, do_dumpebc,
- "dumpebc - Dump all EBC registers\n",
- NULL
-);
-
-
-int do_dumpdcr(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int i;
-
- printf("\nDevice Configuration Registers (DCR's) for PPC405GP:");
- for (i=0; i<=0x1e0; i++) {
- if (!(i % 0x8)) {
- printf("\n%04x ", i);
- }
- printf("%08lx ", get_dcr(i));
- }
- printf("\n");
-
- return 0;
-}
-U_BOOT_CMD(
- dumpdcr, 1, 1, do_dumpdcr,
- "dumpdcr - Dump all DCR registers\n",
- NULL
-);
-
-
-int do_dumpspr(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- printf("\nSpecial Purpose Registers (SPR's) for PPC405GP:");
- printf("\n%04x %08x ", 947, mfspr(947));
- printf("\n%04x %08x ", 9, mfspr(9));
- printf("\n%04x %08x ", 1014, mfspr(1014));
- printf("\n%04x %08x ", 1015, mfspr(1015));
- printf("\n%04x %08x ", 1010, mfspr(1010));
- printf("\n%04x %08x ", 957, mfspr(957));
- printf("\n%04x %08x ", 1008, mfspr(1008));
- printf("\n%04x %08x ", 1018, mfspr(1018));
- printf("\n%04x %08x ", 954, mfspr(954));
- printf("\n%04x %08x ", 950, mfspr(950));
- printf("\n%04x %08x ", 951, mfspr(951));
- printf("\n%04x %08x ", 981, mfspr(981));
- printf("\n%04x %08x ", 980, mfspr(980));
- printf("\n%04x %08x ", 982, mfspr(982));
- printf("\n%04x %08x ", 1012, mfspr(1012));
- printf("\n%04x %08x ", 1013, mfspr(1013));
- printf("\n%04x %08x ", 948, mfspr(948));
- printf("\n%04x %08x ", 949, mfspr(949));
- printf("\n%04x %08x ", 1019, mfspr(1019));
- printf("\n%04x %08x ", 979, mfspr(979));
- printf("\n%04x %08x ", 8, mfspr(8));
- printf("\n%04x %08x ", 945, mfspr(945));
- printf("\n%04x %08x ", 987, mfspr(987));
- printf("\n%04x %08x ", 287, mfspr(287));
- printf("\n%04x %08x ", 953, mfspr(953));
- printf("\n%04x %08x ", 955, mfspr(955));
- printf("\n%04x %08x ", 272, mfspr(272));
- printf("\n%04x %08x ", 273, mfspr(273));
- printf("\n%04x %08x ", 274, mfspr(274));
- printf("\n%04x %08x ", 275, mfspr(275));
- printf("\n%04x %08x ", 260, mfspr(260));
- printf("\n%04x %08x ", 276, mfspr(276));
- printf("\n%04x %08x ", 261, mfspr(261));
- printf("\n%04x %08x ", 277, mfspr(277));
- printf("\n%04x %08x ", 262, mfspr(262));
- printf("\n%04x %08x ", 278, mfspr(278));
- printf("\n%04x %08x ", 263, mfspr(263));
- printf("\n%04x %08x ", 279, mfspr(279));
- printf("\n%04x %08x ", 26, mfspr(26));
- printf("\n%04x %08x ", 27, mfspr(27));
- printf("\n%04x %08x ", 990, mfspr(990));
- printf("\n%04x %08x ", 991, mfspr(991));
- printf("\n%04x %08x ", 956, mfspr(956));
- printf("\n%04x %08x ", 284, mfspr(284));
- printf("\n%04x %08x ", 285, mfspr(285));
- printf("\n%04x %08x ", 986, mfspr(986));
- printf("\n%04x %08x ", 984, mfspr(984));
- printf("\n%04x %08x ", 256, mfspr(256));
- printf("\n%04x %08x ", 1, mfspr(1));
- printf("\n%04x %08x ", 944, mfspr(944));
- printf("\n");
-
- return 0;
-}
-U_BOOT_CMD(
- dumpspr, 1, 1, do_dumpspr,
- "dumpspr - Dump all SPR registers\n",
- NULL
-);
-#endif
diff --git a/board/g2000/strataflash.c b/board/g2000/strataflash.c
deleted file mode 100644
index 8446e02106..0000000000
--- a/board/g2000/strataflash.c
+++ /dev/null
@@ -1,793 +0,0 @@
-/*
- * (C) Copyright 2002
- * Brad Kemp, Seranoa Networks, Brad.Kemp@seranoa.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-#undef DEBUG_FLASH
-/*
- * This file implements a Common Flash Interface (CFI) driver for ppcboot.
- * The width of the port and the width of the chips are determined at initialization.
- * These widths are used to calculate the address for access CFI data structures.
- * It has been tested on an Intel Strataflash implementation.
- *
- * References
- * JEDEC Standard JESD68 - Common Flash Interface (CFI)
- * JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
- * Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
- * Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
- *
- * TODO
- * Use Primary Extended Query table (PRI) and Alternate Algorithm Query Table (ALT) to determine if protection is available
- * Add support for other command sets Use the PRI and ALT to determine command set
- * Verify erase and program timeouts.
- */
-
-#define FLASH_CMD_CFI 0x98
-#define FLASH_CMD_READ_ID 0x90
-#define FLASH_CMD_RESET 0xff
-#define FLASH_CMD_BLOCK_ERASE 0x20
-#define FLASH_CMD_ERASE_CONFIRM 0xD0
-#define FLASH_CMD_WRITE 0x40
-#define FLASH_CMD_PROTECT 0x60
-#define FLASH_CMD_PROTECT_SET 0x01
-#define FLASH_CMD_PROTECT_CLEAR 0xD0
-#define FLASH_CMD_CLEAR_STATUS 0x50
-#define FLASH_CMD_WRITE_TO_BUFFER 0xE8
-#define FLASH_CMD_WRITE_BUFFER_CONFIRM 0xD0
-
-#define FLASH_STATUS_DONE 0x80
-#define FLASH_STATUS_ESS 0x40
-#define FLASH_STATUS_ECLBS 0x20
-#define FLASH_STATUS_PSLBS 0x10
-#define FLASH_STATUS_VPENS 0x08
-#define FLASH_STATUS_PSS 0x04
-#define FLASH_STATUS_DPS 0x02
-#define FLASH_STATUS_R 0x01
-#define FLASH_STATUS_PROTECT 0x01
-
-#define FLASH_OFFSET_CFI 0x55
-#define FLASH_OFFSET_CFI_RESP 0x10
-#define FLASH_OFFSET_WTOUT 0x1F
-#define FLASH_OFFSET_WBTOUT 0x20
-#define FLASH_OFFSET_ETOUT 0x21
-#define FLASH_OFFSET_CETOUT 0x22
-#define FLASH_OFFSET_WMAX_TOUT 0x23
-#define FLASH_OFFSET_WBMAX_TOUT 0x24
-#define FLASH_OFFSET_EMAX_TOUT 0x25
-#define FLASH_OFFSET_CEMAX_TOUT 0x26
-#define FLASH_OFFSET_SIZE 0x27
-#define FLASH_OFFSET_INTERFACE 0x28
-#define FLASH_OFFSET_BUFFER_SIZE 0x2A
-#define FLASH_OFFSET_NUM_ERASE_REGIONS 0x2C
-#define FLASH_OFFSET_ERASE_REGIONS 0x2D
-#define FLASH_OFFSET_PROTECT 0x02
-#define FLASH_OFFSET_USER_PROTECTION 0x85
-#define FLASH_OFFSET_INTEL_PROTECTION 0x81
-
-#define FLASH_MAN_CFI 0x01000000
-
-typedef union {
- unsigned char c;
- unsigned short w;
- unsigned long l;
-} cfiword_t;
-
-typedef union {
- unsigned char * cp;
- unsigned short *wp;
- unsigned long *lp;
-} cfiptr_t;
-
-#define NUM_ERASE_REGIONS 4
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c);
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf);
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_detect_cfi(flash_info_t * info);
-static ulong flash_get_size (ulong base, int banknum);
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword);
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt);
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len);
-#endif
-/*-----------------------------------------------------------------------
- * create an address based on the offset and the port width
- */
-inline uchar * flash_make_addr(flash_info_t * info, int sect, int offset)
-{
- return ((uchar *)(info->start[sect] + (offset * info->portwidth)));
-}
-/*-----------------------------------------------------------------------
- * read a character at a port width address
- */
-inline uchar flash_read_uchar(flash_info_t * info, uchar offset)
-{
- uchar *cp;
- cp = flash_make_addr(info, 0, offset);
- return (cp[info->portwidth - 1]);
-}
-
-/*-----------------------------------------------------------------------
- * read a short word by swapping for ppc format.
- */
-ushort flash_read_ushort(flash_info_t * info, int sect, uchar offset)
-{
- uchar * addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ((addr[(2*info->portwidth) - 1] << 8) | addr[info->portwidth - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- * read a long word by picking the least significant byte of each maiximum
- * port size word. Swap for ppc format.
- */
-ulong flash_read_long(flash_info_t * info, int sect, uchar offset)
-{
- uchar * addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ( (addr[(2*info->portwidth) - 1] << 24 ) | (addr[(info->portwidth) -1] << 16) |
- (addr[(4*info->portwidth) - 1] << 8) | addr[(3*info->portwidth) - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size;
- int i;
- unsigned long address;
-
-
- /* The flash is positioned back to back, with the demultiplexing of the chip
- * based on the A24 address line.
- *
- */
-
- address = CFG_FLASH_BASE;
- size = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- size += flash_info[i].size = flash_get_size(address, i);
- address += CFG_FLASH_INCREMENT;
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",i,
- flash_info[0].size, flash_info[i].size<<20);
- }
- }
-
-#if 0 /* test-only */
- /* Monitor protection ON by default */
-#if (CFG_MONITOR_BASE >= CFG_FLASH_BASE)
- for(i=0; flash_info[0].start[i] < CFG_MONITOR_BASE+CFG_MONITOR_LEN-1; i++)
- (void)flash_real_protect(&flash_info[0], i, 1);
-#endif
-#else
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- - CFG_MONITOR_LEN,
- - 1, &flash_info[1]);
-#endif
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int rcode = 0;
- int prot;
- int sect;
-
- if( info->flash_id != FLASH_MAN_CFI) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
- if ((s_first < 0) || (s_first > s_last)) {
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- flash_write_cmd(info, sect, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sect, 0, FLASH_CMD_BLOCK_ERASE);
- flash_write_cmd(info, sect, 0, FLASH_CMD_ERASE_CONFIRM);
-
- if(flash_full_status_check(info, sect, info->erase_blk_tout, "erase")) {
- rcode = 1;
- } else
- printf(".");
- }
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id != FLASH_MAN_CFI) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- printf("CFI conformant FLASH (%d x %d)",
- (info->portwidth << 3 ), (info->chipwidth << 3 ));
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
- printf(" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n",
- info->erase_blk_tout, info->write_tout, info->buffer_write_tout, info->buffer_size);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
-#ifdef CFG_FLASH_EMPTY_INFO
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++)
- {
- if (*flash++ != 0xffffffff)
- {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- /* print empty and read-only info */
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
-#else
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
-#endif
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong wp;
- ulong cp;
- int aln;
- cfiword_t cword;
- int i, rc;
-
- /* get lower aligned address */
- wp = (addr & ~(info->portwidth - 1));
-
- /* handle unaligned start */
- if((aln = addr - wp) != 0) {
- cword.l = 0;
- cp = wp;
- for(i=0;i<aln; ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *)cp));
-
- for(; (i< info->portwidth) && (cnt > 0) ; i++) {
- flash_add_byte(info, &cword, *src++);
- cnt--;
- cp++;
- }
- for(; (cnt == 0) && (i < info->portwidth); ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *)cp));
- if((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp = cp;
- }
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
- while(cnt >= info->portwidth) {
- i = info->buffer_size > cnt? cnt: info->buffer_size;
- if((rc = flash_write_cfibuffer(info, wp, src,i)) != ERR_OK)
- return rc;
- wp += i;
- src += i;
- cnt -=i;
- }
-#else
- /* handle the aligned part */
- while(cnt >= info->portwidth) {
- cword.l = 0;
- for(i = 0; i < info->portwidth; i++) {
- flash_add_byte(info, &cword, *src++);
- }
- if((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp += info->portwidth;
- cnt -= info->portwidth;
- }
-#endif /* CFG_FLASH_USE_BUFFER_WRITE */
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- cword.l = 0;
- for (i=0, cp=wp; (i<info->portwidth) && (cnt>0); ++i, ++cp) {
- flash_add_byte(info, &cword, *src++);
- --cnt;
- }
- for (; i<info->portwidth; ++i, ++cp) {
- flash_add_byte(info, & cword, (*(uchar *)cp));
- }
-
- return flash_write_cfiword(info, wp, cword);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
- int retcode = 0;
-
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT);
- if(prot)
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_SET);
- else
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_CLEAR);
-
- if((retcode = flash_full_status_check(info, sector, info->erase_blk_tout,
- prot?"protect":"unprotect")) == 0) {
-
- info->protect[sector] = prot;
- /* Intel's unprotect unprotects all locking */
- if(prot == 0) {
- int i;
- for(i = 0 ; i<info->sector_count; i++) {
- if(info->protect[i])
- flash_real_protect(info, i, 1);
- }
- }
- }
-
- return retcode;
-}
-/*-----------------------------------------------------------------------
- * wait for XSR.7 to be set. Time out with an error if it does not.
- * This routine does not set the flash to read-array mode.
- */
-static int flash_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
- ulong start;
-
- /* Wait for command completion */
- start = get_timer (0);
- while(!flash_isset(info, sector, 0, FLASH_STATUS_DONE)) {
- if (get_timer(start) > info->erase_blk_tout) {
- printf("Flash %s timeout at address %lx\n", prompt, info->start[sector]);
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return ERR_TIMOUT;
- }
- }
- return ERR_OK;
-}
-/*-----------------------------------------------------------------------
- * Wait for XSR.7 to be set, if it times out print an error, otherwise do a full status check.
- * This routine sets the flash to read-array mode.
- */
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
- int retcode;
- retcode = flash_status_check(info, sector, tout, prompt);
- if((retcode == ERR_OK) && !flash_isequal(info,sector, 0, FLASH_STATUS_DONE)) {
- retcode = ERR_INVAL;
- printf("Flash %s error at address %lx\n", prompt,info->start[sector]);
- if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS | FLASH_STATUS_PSLBS)){
- printf("Command Sequence Error.\n");
- } else if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS)){
- printf("Block Erase Error.\n");
- retcode = ERR_NOT_ERASED;
- } else if (flash_isset(info, sector, 0, FLASH_STATUS_PSLBS)) {
- printf("Locking Error\n");
- }
- if(flash_isset(info, sector, 0, FLASH_STATUS_DPS)){
- printf("Block locked.\n");
- retcode = ERR_PROTECTED;
- }
- if(flash_isset(info, sector, 0, FLASH_STATUS_VPENS))
- printf("Vpp Low Error.\n");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return retcode;
-}
-/*-----------------------------------------------------------------------
- */
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c)
-{
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cword->c = c;
- break;
- case FLASH_CFI_16BIT:
- cword->w = (cword->w << 8) | c;
- break;
- case FLASH_CFI_32BIT:
- cword->l = (cword->l << 8) | c;
- }
-}
-
-
-/*-----------------------------------------------------------------------
- * make a proper sized command based on the port and chip widths
- */
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf)
-{
- int i;
- uchar *cp = (uchar *)cmdbuf;
- for(i=0; i< info->portwidth; i++)
- *cp++ = ((i+1) % info->chipwidth) ? '\0':cmd;
-}
-
-/*
- * Write a proper sized command to the correct address
- */
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
-
- volatile cfiptr_t addr;
- cfiword_t cword;
- addr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- *addr.cp = cword.c;
- break;
- case FLASH_CFI_16BIT:
- *addr.wp = cword.w;
- break;
- case FLASH_CFI_32BIT:
- *addr.lp = cword.l;
- break;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = (cptr.cp[0] == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = (cptr.wp[0] == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = (cptr.lp[0] == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-/*-----------------------------------------------------------------------
- */
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-
-/*-----------------------------------------------------------------------
- * detect if flash is compatible with the Common Flash Interface (CFI)
- * http://www.jedec.org/download/search/jesd68.pdf
- *
-*/
-static int flash_detect_cfi(flash_info_t * info)
-{
-
- for(info->portwidth=FLASH_CFI_8BIT; info->portwidth <= FLASH_CFI_32BIT;
- info->portwidth <<= 1) {
- for(info->chipwidth =FLASH_CFI_BY8;
- info->chipwidth <= info->portwidth;
- info->chipwidth <<= 1) {
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
- flash_write_cmd(info, 0, FLASH_OFFSET_CFI, FLASH_CMD_CFI);
- if(flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP,'Q') &&
- flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 1, 'R') &&
- flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 2, 'Y'))
- return 1;
- }
- }
- return 0;
-}
-/*
- * The following code cannot be run from FLASH!
- *
- */
-static ulong flash_get_size (ulong base, int banknum)
-{
- flash_info_t * info = &flash_info[banknum];
- int i, j;
- int sect_cnt;
- unsigned long sector;
- unsigned long tmp;
- int size_ratio;
- uchar num_erase_regions;
- int erase_region_size;
- int erase_region_count;
-
- info->start[0] = base;
-
- if(flash_detect_cfi(info)){
-#ifdef DEBUG_FLASH
- printf("portwidth=%d chipwidth=%d\n", info->portwidth, info->chipwidth); /* test-only */
-#endif
- size_ratio = info->portwidth / info->chipwidth;
- num_erase_regions = flash_read_uchar(info, FLASH_OFFSET_NUM_ERASE_REGIONS);
-#ifdef DEBUG_FLASH
- printf("found %d erase regions\n", num_erase_regions);
-#endif
- sect_cnt = 0;
- sector = base;
- for(i = 0 ; i < num_erase_regions; i++) {
- if(i > NUM_ERASE_REGIONS) {
- printf("%d erase regions found, only %d used\n",
- num_erase_regions, NUM_ERASE_REGIONS);
- break;
- }
- tmp = flash_read_long(info, 0, FLASH_OFFSET_ERASE_REGIONS);
- erase_region_size = (tmp & 0xffff)? ((tmp & 0xffff) * 256): 128;
- tmp >>= 16;
- erase_region_count = (tmp & 0xffff) +1;
- for(j = 0; j< erase_region_count; j++) {
- info->start[sect_cnt] = sector;
- sector += (erase_region_size * size_ratio);
- info->protect[sect_cnt] = flash_isset(info, sect_cnt, FLASH_OFFSET_PROTECT, FLASH_STATUS_PROTECT);
- sect_cnt++;
- }
- }
-
- info->sector_count = sect_cnt;
- /* multiply the size by the number of chips */
- info->size = (1 << flash_read_uchar(info, FLASH_OFFSET_SIZE)) * size_ratio;
- info->buffer_size = (1 << flash_read_ushort(info, 0, FLASH_OFFSET_BUFFER_SIZE));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_ETOUT);
- info->erase_blk_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_EMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WBTOUT);
- info->buffer_write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WBMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WTOUT);
- info->write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WMAX_TOUT)))/ 1000;
- info->flash_id = FLASH_MAN_CFI;
- }
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
- return(info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
-{
-
- cfiptr_t ctladdr;
- cfiptr_t cptr;
- int flag;
-
- ctladdr.cp = flash_make_addr(info, 0, 0);
- cptr.cp = (uchar *)dest;
-
-
- /* Check if Flash is (sufficiently) erased */
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- flag = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- flag = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- flag = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- return 2;
- }
- if(!flag)
- return 2;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, 0, 0, FLASH_CMD_WRITE);
-
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cptr.cp[0] = cword.c;
- break;
- case FLASH_CFI_16BIT:
- cptr.wp[0] = cword.w;
- break;
- case FLASH_CFI_32BIT:
- cptr.lp[0] = cword.l;
- break;
- }
-
- /* re-enable interrupts if necessary */
- if(flag)
- enable_interrupts();
-
- return flash_full_status_check(info, 0, info->write_tout, "write");
-}
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-
-/* loop through the sectors from the highest address
- * when the passed address is greater or equal to the sector address
- * we have a match
- */
-static int find_sector(flash_info_t *info, ulong addr)
-{
- int sector;
- for(sector = info->sector_count - 1; sector >= 0; sector--) {
- if(addr >= info->start[sector])
- break;
- }
- return sector;
-}
-
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len)
-{
-
- int sector;
- int cnt;
- int retcode;
- volatile cfiptr_t src;
- volatile cfiptr_t dst;
-
- src.cp = cp;
- dst.cp = (uchar *)dest;
- sector = find_sector(info, dest);
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_TO_BUFFER);
- if((retcode = flash_status_check(info, sector, info->buffer_write_tout,
- "write to buffer")) == ERR_OK) {
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cnt = len;
- break;
- case FLASH_CFI_16BIT:
- cnt = len >> 1;
- if (len & 0x1) { /* test-only: unaligned size */
- puts("\nUnalgined size!!!\n"); /* test-only */
- cnt++;
- }
- break;
- case FLASH_CFI_32BIT:
- cnt = len >> 2;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- flash_write_cmd(info, sector, 0, (uchar)cnt-1);
- while(cnt-- > 0) {
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- *dst.cp++ = *src.cp++;
- break;
- case FLASH_CFI_16BIT:
- *dst.wp++ = *src.wp++;
- break;
- case FLASH_CFI_32BIT:
- *dst.lp++ = *src.lp++;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_BUFFER_CONFIRM);
- retcode = flash_full_status_check(info, sector, info->buffer_write_tout,
- "buffer write");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- return retcode;
-}
-#endif /* CFG_USE_FLASH_BUFFER_WRITE */
diff --git a/board/g2000/u-boot.lds b/board/g2000/u-boot.lds
deleted file mode 100644
index 43f776579e..0000000000
--- a/board/g2000/u-boot.lds
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/4xx_enet.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/gcplus/Makefile b/board/gcplus/Makefile
deleted file mode 100644
index 8a95d83703..0000000000
--- a/board/gcplus/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# 2003 (c) MontaVista Software, 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
-#
-
-include $(TOPDIR)/config.mk
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS := gcplus.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/gcplus/config.mk b/board/gcplus/config.mk
deleted file mode 100644
index 57326b8547..0000000000
--- a/board/gcplus/config.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# ADS GCPlus board with SA1110 cpu
-#
-# The ADS GCPlus has 2 banks of 16 MiB SDRAM
-#
-# We use the ADS GCPlus Linux boot ROM to load U-Boot into SDRAM
-# at c020'0000 and then move ourself to c8f0'0000. Basically, just
-# install the U-Boot binary as you would the Linux zImage and then
-# reap the benfits of more convenient Linux development cycles, i.e.
-# bootp;tftp;bootm, repeat, etc.,.
-#
-
-TEXT_BASE = 0xc8f00000
diff --git a/board/gcplus/flash.c b/board/gcplus/flash.c
deleted file mode 100644
index 36d7363a80..0000000000
--- a/board/gcplus/flash.c
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * 2003 (c) MontaVista Software, 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
- */
-
-#include <common.h>
-#include <linux/byteorder/swab.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(FPW * addr, flash_info_t * info);
-static int write_data(flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets(ulong base, flash_info_t * info);
-void inline spin_wheel(void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long
-flash_init(void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets(PHYS_FLASH_1, &flash_info[i]);
- break;
- default:
- panic("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1, &flash_info[0]);
-
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void
-flash_get_offsets(ulong base, flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void
-flash_print_info(flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf("INTEL ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf("28F128J3A\n");
- break;
- case FLASH_28F640J5:
- printf("28F640J5\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- break;
- }
-
- printf(" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf("\n ");
- printf(" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong
-flash_get_size(FPW * addr, flash_info_t * info)
-{
- volatile FPW value;
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb();
- value = addr[1]; /* device ID */
- switch (value) {
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x02000000;
- break; /* => 16 MB */
- case (FPW) INTEL_ID_28F640J5:
- info->flash_id += FLASH_28F640J5;
- info->sector_count = 64;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int
-flash_erase(flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("- missing\n");
- } else {
- printf("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf("\n");
- }
-
- start = get_timer(0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
-
- while (((status =
- *addr) & (FPW) 0x00800080) !=
- (FPW) 0x00800080) {
- if (get_timer_masked() > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = (FPW) 0x00500050; /* clear status register cmd. */
- *addr = (FPW) 0x00FF00FF; /* resest to read mode */
-
- printf(" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int
-write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data(info, wp, SWAP(data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data(info, wp, SWAP(data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data(info, wp, SWAP(data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int
-write_data(flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf("not erased at %08lX (%lX)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked() > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-void inline
-spin_wheel(void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/gcplus/gcplus.c b/board/gcplus/gcplus.c
deleted file mode 100644
index 829b597597..0000000000
--- a/board/gcplus/gcplus.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * 2003-2004 (c) MontaVista Software, 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
- */
-
-#include <common.h>
-#include <SA-1100.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int
-board_init(void)
-{
- gd->bd->bi_arch_number = MACH_TYPE_GRAPHICSCLIENT;
-
- gd->bd->bi_boot_params = 0xc000003c; /* Weird address? */
-
- /* Most of the ADS GCPlus I/O is connected to Static nCS2.
- * So I'm brute forcing nCS2 timiming here for worst case.
- */
- MSC1 &= ~0xFFFF;
- MSC1 |= 0x8649;
-
- /* Nothing is connected to Static nCS4 or nCS5. But I'm using
- * nCS4 as a paranoia safe guard to force nCS2, nOE; nWE high
- * after accessing I/O via (non-VLIO) nCS2. What can I say, I'm
- * paranoid and lack decent tools to alleviate my fear. I sure
- * do wish I had a logic analyzer. : (
- */
-
- MSC2 = 0xfff9fff9;
-
- return 0;
-}
-
-int
-dram_init(void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
-
- return (0);
-}
diff --git a/board/gcplus/lowlevel_init.S b/board/gcplus/lowlevel_init.S
deleted file mode 100644
index f292c4d28a..0000000000
--- a/board/gcplus/lowlevel_init.S
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Memory Setup stuff - taken from blob memsetup.S
- *
- * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
- * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
- * 2003-2004 (c) MontaVista Software, 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
- */
-
-
-#include "config.h"
-#include "version.h"
-
-
- .globl lowlevel_init
-lowlevel_init:
- /* The ADS GC+ for Linux Boot Rom Ver. 1.73 does memory init for us.
- * However the darn thing leaves the MMU enabled before handing control
- * over to us. So we need to disable the MMU and we use lowlevel_init
- * to do it.
- */
-
-@ The following code segment was borrowed with gratitude from:
-@ linux-2.4.19-rmk7/arch/arm/boot/compressed/head-sa1100.S
-
- @ Data cache might be active.
- @ Be sure to flush kernel binary out of the cache,
- @ whatever state it is, before it is turned off.
- @ This is done by fetching through currently executed
- @ memory to be sure we hit the same cache.
- bic r2, pc, #0x1f
- add r3, r2, #0x4000 @ 16 kb is quite enough...
-1: ldr r0, [r2], #32
- teq r2, r3
- bne 1b
- mcr p15, 0, r0, c7, c10, 4 @ drain WB
- mcr p15, 0, r0, c7, c7, 0 @ flush I & D caches
-
- @ disabling MMU and caches
- mrc p15, 0, r0, c1, c0, 0 @ read control reg
- bic r0, r0, #0x0d @ clear WB, DC, MMU
- bic r0, r0, #0x1000 @ clear Icache
- mcr p15, 0, r0, c1, c0, 0
-
- nop
- nop
- nop
- nop
- nop
-
- b 2f
-2:
- nop
- nop
- nop
- nop
- nop
-
-
- mov pc, lr
diff --git a/board/gcplus/u-boot.lds b/board/gcplus/u-boot.lds
deleted file mode 100644
index 9900a57c0a..0000000000
--- a/board/gcplus/u-boot.lds
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * 2003 (c) MontaVista Software, 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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/sa1100/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/gen860t/Makefile b/board/gen860t/Makefile
deleted file mode 100644
index fd34cb0db2..0000000000
--- a/board/gen860t/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o beeper.o fpga.o ioport.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/gen860t/README b/board/gen860t/README
deleted file mode 100644
index 7205afb4de..0000000000
--- a/board/gen860t/README
+++ /dev/null
@@ -1,146 +0,0 @@
-This directory contains board specific code for a generic MPC860T based
-embedded computer, called 'GEN860T'. The design is generic in the sense that
-common, readily available components are used and that the architecture of the
-system is relatively straightforward:
-
- One eight bit wide boot (FLASH) memory
- 32 bit main memory using SDRAM
- DOC 2000+
- Ethernet PHY
- Some I2C peripheral devices: Atmel AT24C256 EEPROM, Maxim DS1337 RTC.
- Some other miscellaneous peripherals
-
-NOTE: There are references to a XIlinx FPGA and Mil-Std 1553 databus in this
-port. I guess the computer is not as generic as I first said 8) However,
-these extras can be safely ignored.
-
-Given the GEN860T files, it should be pretty easy to reverse engineer the
-hardware configuration, if that's useful to you. Hopefully, this code will
-be useful to someone as a basis for a port to a new system or as a head start
-on a custom design. If you end up using any of this, I would appreciate
-hearing from you, especially if you discover bugs or find ways to improve the
-quality of this U-Boot port.
-
-Here are the salient features of the system:
-Clock : 33.3 Mhz oscillator
-Processor core frequency : 66.6 Mhz if in 1:2:1 mode; can also run 1:1
-Bus frequency : 33.3 Mhz
-
-Main memory:
- Type : SDRAM
- Width : 32 bits
- Size : 64 mibibytes
- Chip : Two Micron MT48LC16M16A2TG-7E
- CS : MPC860T CS1*/UPMA
- UPMA CONNECTIONS:
- SDRAM A10 : GPLA0*
- SDRAM CAS* : GPLA2*
- SDRAM WE* : GPLA3*
- SDRAM RAS* : GPLA4*
-
-Boot memory:
- Type : FLASH
- Width : 8 bits
- Size : 16 mibibytes
- Chip : One Intel 28F128J3A (StrataFlash)
- CS : MPC860T CS0*/GPCM (this is the "boot" chip select)
-
-EEPROM memory:
- Type : Serial I2C EEPROM
- Width : 8 bits
- Size : 32 kibibytes
- Chip : One Atmel AT25C256
- CS : 0x50 (external I2C address pins on device are tied to GND)
-
-Filesystem memory:
- Type : NAND FLASH (Toshiba)
- Width : 8 bits (i.e. interface to DOC is 8 bits)
- Size : 32 mibibytes
- Chip : One DiskOnCHip Millenium Plus (DOC 2000+)
- CS : MPC860T CS2*/GPCM
-
-Network support:
- MAC : MPC86OT FEC (Fast Ethernet Controller)
- PHY : Intel LXT971A
- MII Addr: 0x0 (hardwired on the board)
- MII IRQ :
-
-Console:
- RS-232 on SMC1 (Maxim MAX3232 LVCMOS-RS232 level shifter)
-
-Real Time Clock:
- Type : Low power, I2C interface
- Chip : Maxim DS1337
- CS : Address 0x68 on I2C bus
-
- The MPC860T's internal RTC has a defect in Mask rev D that increases
- the current drain on the KAPWR line to 10 mA. Since this is an
- unreasonable amount of current draw for a RTC, and Motorola does not
- plan to fix this in future mask revisions, a serial (I2C) RTC that
- works has been included instead. NOTE that the DS1337 can be
- configured to output a 32768 Hz clock while the main power is on.
- This clock output has been routed to the MPC860T's EXTAL pin to allow
- the internal RTC to be used. NOTE also that due to yet another
- defect in the rev D mask, the RTC does not operate reliably when the
- internal RTC divisor is set to use a 32768 Hz reference. So just use
- the I2C RTC.
-
-Miscellaneous:
- Xilinx Virtex FPGA on CS3*/GPCM.
- Virtex FPGA slave SelectMap interface on cs4*/UPMB.
- Mil-Std 1553 databus interface on CS5*/GPCM.
- Audio sounder (beeper) with digital volume control connected to SPKROUT.
-
-SC variant:
- A reduced-feature version of the GEN860T port is also supported: GEN860T_SC.
- The 'SC' variant only provides support for the Virtex FPGA, SDRAM main
- memory, EEPROM and flash memory. The system clock frequency is reduced
- to 24 MHz.
-
-Issues:
- The DOC 2000+ returns 0x40 as its device ID when probed using the method
- desxribed in the DOC datasheet. Unfortunately, the U-Boot DOC driver
- does not recognize this device. As of this writing, it seems that MTD
- does not support the DOC 2000+ either.
-
-Status:
- Everything appears to work except DOC support. As of this writing,
- David Woodhouse has stated on the MTD mailing list that he has no
- knowledge of the DOC Millineum Plus and therfore there is no support
- in MTD for this device. I wish I had known this sooner :(
-
-The GEN860T board specific files and configuration is based on the work
-of others who have contributed to U-Boot. The copyright and license notices
-of these authors have been retained wherever their code has been reused.
-All new code to support the GEN860T board is:
-
- (C) Copyright 2001-2003
- Keith Outwater (keith_outwater@mvis.com)
-
-and the following license applies:
-
-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,
-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
-
-Thanks to Wolfgang Denk for a great software package and to everyone
-who contributed to its development.
-
-Keith Outwater
-Sr. Staff Engineer
-Microvision, Inc.
-<keith_outwater@mvis.com>
-<outwater@eskimo.com>
-
-vim: set ts=4 sw=4 tw=78:
diff --git a/board/gen860t/beeper.c b/board/gen860t/beeper.c
deleted file mode 100644
index 46fe66ba61..0000000000
--- a/board/gen860t/beeper.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * (C) Copyright 2002
- * Keith Outwater, keith_outwater@mvis.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
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include <asm/8xx_immap.h>
-#include <linux/ctype.h>
-
-/*
- * Basic beeper support for the GEN860T board. The GEN860T includes
- * an audio sounder driven by a Phillips TDA8551 amplifier. The
- * TDA8551 features a digital volume control which uses a "trinary"
- * input (high/high-Z/low) to set volume. The 860's SPKROUT pin
- * drives the amplifier input.
- */
-
-
-/*
- * Initialize beeper-related hardware. Initialize timer 1 for use with
- * the beeper. Use 66 Mhz internal clock with prescale of 33 to get
- * 1 uS period per count.
- * FIXME: we should really compute the prescale based on the reported
- * core clock frequency.
- */
-void
-init_beeper(void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
-
- immap->im_cpmtimer.cpmt_tgcr &= ~TGCR_RST1 | TGCR_STP1;
- immap->im_cpmtimer.cpmt_tmr1 = ((33 << TMR_PS_SHIFT) & TMR_PS_MSK)
- | TMR_OM | TMR_FRR | TMR_ICLK_IN_GEN;
- immap->im_cpmtimer.cpmt_tcn1 = 0;
- immap->im_cpmtimer.cpmt_ter1 = 0xffff;
- immap->im_cpmtimer.cpmt_tgcr |= TGCR_RST1;
-}
-
-
-/*
- * Set beeper frequency. Max allowed frequency is 2.5 KHz. This limit
- * is mostly arbitrary, but the beeper isn't really much good beyond this
- * frequency.
- */
-void
-set_beeper_frequency(uint frequency)
-{
-#define FREQ_LIMIT 2500
-
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
-
- /*
- * Compute timer ticks given desired frequency. The timer is set up
- * to count 0.5 uS per tick and it takes two ticks per cycle (Hz).
- */
- if (frequency > FREQ_LIMIT) frequency = FREQ_LIMIT;
- frequency = 1000000/frequency;
- immap->im_cpmtimer.cpmt_trr1 = (ushort)frequency;
-}
-
-
-/*
- * Turn the beeper on
- */
-void
-beeper_on(void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
-
- immap->im_cpmtimer.cpmt_tgcr &= ~TGCR_STP1;
-}
-
-
-/*
- * Turn the beeper off
- */
-void
-beeper_off(void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
-
- immap->im_cpmtimer.cpmt_tgcr |= TGCR_STP1;
-}
-
-
-/*
- * Increase or decrease the beeper volume. Volume can be set
- * from off to full in 64 steps. To increase volume, the output
- * pin is actively driven high, then returned to tristate.
- * To decrease volume, output a low on the port pin (no need to
- * change pin mode to tristate) then output a high to go back to
- * tristate.
- */
-void
-set_beeper_volume(int steps)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- int i;
-
- if (steps >= 0) {
- for (i = 0; i < (steps >= 64 ? 64 : steps); i++) {
- immap->im_cpm.cp_pbodr &= ~(0x80000000 >> 19);
- udelay(1);
- immap->im_cpm.cp_pbodr |= (0x80000000 >> 19);
- udelay(1);
- }
- }
- else {
- for (i = 0; i > (steps <= -64 ? -64 : steps); i--) {
- immap->im_cpm.cp_pbdat &= ~(0x80000000 >> 19);
- udelay(1);
- immap->im_cpm.cp_pbdat |= (0x80000000 >> 19);
- udelay(1);
- }
- }
-}
-
-
-/*
- * Check the environment to see if the beeper needs beeping.
- * Controlled by a sequence of the form:
- * freq/delta volume/on time/off time;... where:
- * freq = frequency in Hz (0 - 2500)
- * delta volume = volume steps up or down (-64 <= vol <= 64)
- * on time = time in mS
- * off time = time in mS
- *
- * Return 1 on success, 0 on failure
- */
-int
-do_beeper(char *sequence)
-{
-#define DELIMITER ';'
-
-int args[4];
-int i;
-int val;
-char *p = sequence;
-char *tp;
-
- /*
- * Parse the control sequence. This is a really simple parser
- * without any real error checking. You can probably blow it
- * up really easily.
- */
- if (*p == '\0' || !isdigit(*p)) {
- printf("%s:%d: null or invalid string (%s)\n",
- __FILE__, __LINE__, p);
- return 0;
- }
-
- i = 0;
- while (*p != '\0') {
- while (*p != DELIMITER) {
- if (i > 3) i = 0;
- val = (int) simple_strtol(p, &tp, 0);
- if (tp == p) {
- printf("%s:%d: no digits or bad format\n",
- __FILE__,__LINE__);
- return 0;
- }
- else {
- args[i] = val;
- }
-
- i++;
- if (*tp == DELIMITER)
- p = tp;
- else
- p = ++tp;
- }
- p++;
-
- /*
- * Well, we got something that has a chance of being correct
- */
-#if 0
- for (i = 0; i < 4; i++) {
- printf("%s:%d:arg %d = %d\n", __FILE__, __LINE__, i, args[i]);
- }
- printf("\n");
-#endif
-
- set_beeper_frequency(args[0]);
- set_beeper_volume(args[1]);
- beeper_on();
- udelay(1000 * args[2]);
- beeper_off();
- udelay(1000 * args[3]);
- }
- return 1;
-}
-
-/* vim: set ts=4 sw=4 tw=78: */
diff --git a/board/gen860t/beeper.h b/board/gen860t/beeper.h
deleted file mode 100644
index 535ee6c4d6..0000000000
--- a/board/gen860t/beeper.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * (C) Copyright 2002
- * Keith Outwater, keith_outwater@mvis.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
- */
-
-void init_beeper(void);
-void set_beeper_frequency(uint frequency);
-void beeper_on(void);
-void beeper_off(void);
-void set_beeper_volume(int steps);
-int do_beeper(char *sequence);
-
-/* vim: set ts=4 tw=78 sw=4: */
diff --git a/board/gen860t/config.mk b/board/gen860t/config.mk
deleted file mode 100644
index 7acd90493b..0000000000
--- a/board/gen860t/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# FLASH base address for GEN860T board
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/gen860t/flash.c b/board/gen860t/flash.c
deleted file mode 100644
index ec32d07dbf..0000000000
--- a/board/gen860t/flash.c
+++ /dev/null
@@ -1,644 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Keith Outwater, keith_outwater@mvsi.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
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*
- * Use buffered writes to flash by default - they are about 32x faster than
- * single byte writes.
- */
-#ifndef CFG_GEN860T_FLASH_USE_WRITE_BUFFER
-#define CFG_GEN860T_FLASH_USE_WRITE_BUFFER
-#endif
-
-/*
- * Max time to wait (in mS) for flash device to allocate a write buffer.
- */
-#ifndef CFG_FLASH_ALLOC_BUFFER_TOUT
-#define CFG_FLASH_ALLOC_BUFFER_TOUT 100
-#endif
-
-/*
- * These functions support a single Intel StrataFlash device (28F128J3A)
- * in byte mode only!. The flash routines are very basic and simple
- * since there isn't really any remapping necessary.
- */
-
-/*
- * Intel SCS (Scalable Command Set) command definitions
- * (taken from 28F128J3A datasheet)
- */
-#define SCS_READ_CMD 0xff
-#define SCS_READ_ID_CMD 0x90
-#define SCS_QUERY_CMD 0x98
-#define SCS_READ_STATUS_CMD 0x70
-#define SCS_CLEAR_STATUS_CMD 0x50
-#define SCS_WRITE_BUF_CMD 0xe8
-#define SCS_PROGRAM_CMD 0x40
-#define SCS_BLOCK_ERASE_CMD 0x20
-#define SCS_BLOCK_ERASE_RESUME_CMD 0xd0
-#define SCS_PROGRAM_RESUME_CMD 0xd0
-#define SCS_BLOCK_ERASE_SUSPEND_CMD 0xb0
-#define SCS_SET_BLOCK_LOCK_CMD 0x60
-#define SCS_CLR_BLOCK_LOCK_CMD 0x60
-
-/*
- * SCS status/extended status register bit definitions
- */
-#define SCS_SR7 0x80
-#define SCS_XSR7 0x80
-
-/*---------------------------------------------------------------------*/
-#if 0
-#define DEBUG_FLASH
-#endif
-
-#ifdef DEBUG_FLASH
-#define PRINTF(fmt,args...) printf(fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_char *addr, flash_info_t *info);
-static int write_data8 (flash_info_t *info, ulong dest, uchar data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- * Initialize the flash memory.
- */
-unsigned long
-flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0;
- int i;
-
- for (i= 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /*
- * The gen860t board only has one FLASH memory device, so the
- * FLASH Bank configuration is done statically.
- */
- PRINTF("\n## Get flash bank 1 size @ 0x%08x\n", FLASH_BASE0_PRELIM);
- size_b0 = flash_get_size((vu_char *)FLASH_BASE0_PRELIM, &flash_info[0]);
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0: "
- "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
- flash_info[0].flash_id,size_b0, size_b0 << 20);
- }
-
- PRINTF("## Before remap:\n"
- " BR0: 0x%08x OR0: 0x%08x\n BR1: 0x%08x OR1: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0,
- memctl->memc_br1, memctl->memc_or1);
-
- /*
- * Remap FLASH according to real size
- */
- memctl->memc_or0 |= (-size_b0 & 0xFFFF8000);
- memctl->memc_br0 |= (CFG_FLASH_BASE & BR_BA_MSK);
-
- PRINTF("## After remap:\n"
- " BR0: 0x%08x OR0: 0x%08x\n", memctl->memc_br0, memctl->memc_or0);
-
- /*
- * Re-do sizing to get full correct info
- */
- size_b0 = flash_get_size ((vu_char *)CFG_FLASH_BASE, &flash_info[0]);
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
- flash_info[0].size = size_b0;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /*
- * Monitor protection is ON by default
- */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /*
- * Environment protection ON by default
- */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[0]);
-#endif
-
- PRINTF("## Final Flash bank size: 0x%08lx\n",size_b0);
- return (size_b0);
-}
-
-
-/*-----------------------------------------------------------------------
- * Fill in the FLASH offset table
- */
-static void
-flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- base += 1024 * 128;
- }
- return;
-
- default:
- printf ("Don't know sector offsets for FLASH"
- " type 0x%lx\n", info->flash_id);
- return;
- }
-}
-
-
-/*-----------------------------------------------------------------------
- * Display FLASH device info
- */
-void
-flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("Intel ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf ("28F128J3A (128Mbit = 128K x 128)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size >= (1024 * 1024)) {
- i = 20;
- } else {
- i = 10;
- }
- printf (" Size: %ld %cB in %d Sectors\n",
- info->size >> i,
- (i == 20) ? 'M' : 'k',
- info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-
-/*-----------------------------------------------------------------------
- * Get size and other information for a FLASH device.
- * NOTE: The following code cannot be run from FLASH!
- */
-static
-ulong flash_get_size (vu_char *addr, flash_info_t *info)
-{
-#define NO_FLASH 0
-
- vu_char value[2];
-
- /*
- * Try to read the manufacturer ID
- */
- addr[0] = SCS_READ_CMD;
- addr[0] = SCS_READ_ID_CMD;
- value[0] = addr[0];
- value[1] = addr[2];
- addr[0] = SCS_READ_CMD;
-
- PRINTF("Manuf. ID @ 0x%08lx: 0x%02x\n", (ulong)addr, value[0]);
- switch (value[0]) {
- case (INTEL_MANUFACT & 0xff):
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (NO_FLASH);
- }
-
- /*
- * Read the device ID
- */
- PRINTF("Device ID @ 0x%08lx: 0x%02x\n", (ulong)(&addr[2]), value[1]);
- switch (value[1]) {
- case (INTEL_ID_28F128J3A & 0xff):
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 16 * 1024 * 1024;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (NO_FLASH);
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- * Erase the specified sectors in the specified FLASH device
- */
-int
-flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
- printf ("Can erase only Intel flash types - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /*
- * Start erase on unprotected sectors
- */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_char *addr = (uchar *)(info->start[sect]);
- vu_char status;
-
- /*
- * Disable interrupts which might cause a timeout
- */
- flag = disable_interrupts();
-
- *addr = SCS_CLEAR_STATUS_CMD;
- *addr = SCS_BLOCK_ERASE_CMD;
- *addr = SCS_BLOCK_ERASE_RESUME_CMD;
-
- /*
- * Re-enable interrupts if necessary
- */
- if (flag)
- enable_interrupts();
-
- /*
- * Wait at least 80us - let's wait 1 ms
- */
- udelay (1000);
-
- while (((status = *addr) & SCS_SR7) != SCS_SR7) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = SCS_BLOCK_ERASE_SUSPEND_CMD;
- *addr = SCS_READ_CMD;
- return 1;
- }
-
- /*
- * Show that we're waiting
- */
- if ((now - last) > 1000) { /* 1 second */
- putc ('.');
- last = now;
- }
- }
- *addr = SCS_READ_CMD;
- }
- }
- printf (" done\n");
- return 0;
-}
-
-
-#ifdef CFG_GEN860T_FLASH_USE_WRITE_BUFFER
-/*
- * Allocate a flash buffer, fill it with data and write it to the flash.
- * 0 - OK
- * 1 - Timeout on buffer request
- *
- * NOTE: After the last call to this function, WSM status needs to be checked!
- */
-static int
-write_flash_buffer8(flash_info_t *info_p, vu_char *src_p, vu_char *dest_p,
- uint count)
-{
- vu_char *block_addr_p = NULL;
- vu_char *start_addr_p = NULL;
- ulong blocksize = info_p->size / (ulong)info_p->sector_count;
-
- int i;
- uint time = get_timer(0);
-
- PRINTF("%s:%d: src: 0x%p dest: 0x%p count: %d\n",
- __FUNCTION__, __LINE__, src_p, dest_p, count);
-
- /*
- * What block are we in? We already know that the source address is
- * in the flash address range, but we also can't cross a block boundary.
- * We assume that the block does not cross a boundary (we'll check before
- * calling this function).
- */
- for (i = 0; i < info_p->sector_count; ++i) {
- if ( ((ulong)dest_p >= info_p->start[i]) &&
- ((ulong)dest_p < (info_p->start[i] + blocksize)) ) {
- PRINTF("%s:%d: Dest addr 0x%p is in block %d @ 0x%.8lx\n",
- __FUNCTION__, __LINE__, dest_p, i, info_p->start[i]);
- block_addr_p = (vu_char *)info_p->start[i];
- break;
- }
- }
-
- /*
- * Request a buffer
- */
- *block_addr_p = SCS_WRITE_BUF_CMD;
- while ((*block_addr_p & SCS_XSR7) != SCS_XSR7) {
- if (get_timer(time) > CFG_FLASH_ALLOC_BUFFER_TOUT) {
- PRINTF("%s:%d: Buffer allocation timeout @ 0x%p (waited %d mS)\n",
- __FUNCTION__, __LINE__, block_addr_p,
- CFG_FLASH_ALLOC_BUFFER_TOUT);
- return 1;
- }
- *block_addr_p = SCS_WRITE_BUF_CMD;
- }
-
- /*
- * Fill the buffer with data
- */
- start_addr_p = dest_p;
- *block_addr_p = count - 1; /* flash device wants count - 1 */
- PRINTF("%s:%d: Fill buffer at block addr 0x%p\n",
- __FUNCTION__, __LINE__, block_addr_p);
- for (i = 0; i < count; i++) {
- *start_addr_p++ = *src_p++;
- }
-
- /*
- * Flush buffer to flash
- */
- *block_addr_p = SCS_PROGRAM_RESUME_CMD;
-#if 1
- time = get_timer(0);
- while ((*block_addr_p & SCS_SR7) != SCS_SR7) {
- if (get_timer(time) > CFG_FLASH_WRITE_TOUT) {
- PRINTF("%s:%d: Write timeout @ 0x%p (waited %d mS)\n",
- __FUNCTION__, __LINE__, block_addr_p, CFG_FLASH_WRITE_TOUT);
- return 1;
- }
- }
-
-#endif
- return 0;
-}
-#endif
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-int
-write_buff(flash_info_t *info_p, uchar *src_p, ulong addr, ulong count)
-{
- int rc = 0;
-#ifdef CFG_GEN860T_FLASH_USE_WRITE_BUFFER
-#define FLASH_WRITE_BUF_SIZE 0x00000020 /* 32 bytes */
- int i;
- uint bufs;
- ulong buf_count;
- vu_char *sp;
- vu_char *dp;
-#else
- ulong wp;
-#endif
-
- PRINTF("\n%s:%d: src: 0x%.8lx dest: 0x%.8lx size: %d (0x%.8lx)\n",
- __FUNCTION__, __LINE__, (ulong)src_p, addr, (uint)count, count);
-
- if (info_p->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
-#ifdef CFG_GEN860T_FLASH_USE_WRITE_BUFFER
- sp = src_p;
- dp = (uchar *)addr;
-
- /*
- * For maximum performance, we want to align the start address to
- * the beginning of a write buffer boundary (i.e. A4-A0 of the
- * start address = 0). See how many bytes are required to get to a
- * write-buffer-aligned address. If that number is non-zero, do
- * non buffered writes of the non-aligned data. By doing non-buffered
- * writes, we avoid the problem of crossing a block (sector) boundary
- * with buffered writes.
- */
- buf_count = FLASH_WRITE_BUF_SIZE - (addr & (FLASH_WRITE_BUF_SIZE - 1));
- if (buf_count == FLASH_WRITE_BUF_SIZE) { /* already on a boundary */
- buf_count = 0;
- }
- if (buf_count > count) { /* not a full buffers worth of data to write */
- buf_count = count;
- }
- count -= buf_count;
-
- PRINTF("%s:%d: Write buffer alignment count = %ld\n",
- __FUNCTION__, __LINE__, buf_count);
- while (buf_count-- >= 1) {
- if ((rc = write_data8(info_p, (ulong)dp++, *sp++)) != 0) {
- return (rc);
- }
- }
-
- PRINTF("%s:%d: count = %ld\n", __FUNCTION__, __LINE__, count);
- if (count == 0) { /* all done */
- PRINTF("%s:%d: Less than 1 buffer (%d) worth of bytes\n",
- __FUNCTION__, __LINE__, FLASH_WRITE_BUF_SIZE);
- return (rc);
- }
-
- /*
- * Now that we are write buffer aligned, write full or partial buffers.
- * The fact that we are write buffer aligned automatically avoids
- * crossing a block address during a write buffer operation.
- */
- bufs = count / FLASH_WRITE_BUF_SIZE;
- PRINTF("%s:%d: %d (0x%x) buffers to write\n", __FUNCTION__, __LINE__,
- bufs, bufs);
- while (bufs >= 1) {
- rc = write_flash_buffer8(info_p, sp, dp, FLASH_WRITE_BUF_SIZE);
- if (rc != 0) {
- PRINTF("%s:%d: ** Error writing buf %d\n",
- __FUNCTION__, __LINE__, bufs);
- return (rc);
- }
- bufs--;
- sp += FLASH_WRITE_BUF_SIZE;
- dp += FLASH_WRITE_BUF_SIZE;
- }
-
- /*
- * Do the leftovers
- */
- i = count % FLASH_WRITE_BUF_SIZE;
- PRINTF("%s:%d: %d (0x%x) leftover bytes\n", __FUNCTION__, __LINE__, i, i);
- if (i > 0) {
- rc = write_flash_buffer8(info_p, sp, dp, i);
- }
-
- sp = (vu_char*)info_p->start[0];
- *sp = SCS_READ_CMD;
- return (rc);
-
-#else
- wp = addr;
- while (count-- >= 1) {
- if((rc = write_data8(info_p, wp++, *src_p++)) != 0)
- return (rc);
- }
- return 0;
-#endif
-}
-
-
-/*-----------------------------------------------------------------------
- * Write a byte to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int
-write_data8 (flash_info_t *info, ulong dest, uchar data)
-{
- vu_char *addr = (vu_char *)dest;
- vu_char status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = SCS_PROGRAM_CMD;
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- while (((status = *addr) & SCS_SR7) != SCS_SR7) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *addr = SCS_READ_CMD;
- return (1);
- }
- }
- *addr = SCS_READ_CMD;
- return (0);
-}
-
-/* vim: set ts=4 sw=4 tw=78: */
diff --git a/board/gen860t/fpga.c b/board/gen860t/fpga.c
deleted file mode 100644
index 2ba7e0e420..0000000000
--- a/board/gen860t/fpga.c
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * (C) Copyright 2002
- * Rich Ireland, Enterasys Networks, rireland@enterasys.com.
- * Keith Outwater, keith_outwater@mvis.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
- *
- */
-
-/*
- * Virtex2 FPGA configuration support for the GEN860T computer
- */
-
-#include <common.h>
-#include <virtex2.h>
-#include <command.h>
-#include "fpga.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if (CONFIG_FPGA)
-
-#if 0
-#define GEN860T_FPGA_DEBUG
-#endif
-
-#ifdef GEN860T_FPGA_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-/*
- * Port bit numbers for the Selectmap controls
- */
-#define FPGA_INIT_BIT_NUM 22 /* PB22 */
-#define FPGA_RESET_BIT_NUM 11 /* PC11 */
-#define FPGA_DONE_BIT_NUM 16 /* PB16 */
-#define FPGA_PROGRAM_BIT_NUM 7 /* PA7 */
-
-/* Note that these are pointers to code that is in Flash. They will be
- * relocated at runtime.
- */
-Xilinx_Virtex2_Slave_SelectMap_fns fpga_fns = {
- fpga_pre_config_fn,
- fpga_pgm_fn,
- fpga_init_fn,
- fpga_err_fn,
- fpga_done_fn,
- fpga_clk_fn,
- fpga_cs_fn,
- fpga_wr_fn,
- fpga_read_data_fn,
- fpga_write_data_fn,
- fpga_busy_fn,
- fpga_abort_fn,
- fpga_post_config_fn
-};
-
-Xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
- {Xilinx_Virtex2,
- slave_selectmap,
- XILINX_XC2V3000_SIZE,
- (void *) &fpga_fns,
- 0}
-};
-
-/*
- * Display FPGA revision information
- */
-void print_fpga_revision (void)
-{
- vu_long *rev_p = (vu_long *) 0x60000008;
-
- printf ("FPGA Revision 0x%.8lx"
- " (Date %.2lx/%.2lx/%.2lx, Status \"%.1lx\", Version %.3lu)\n",
- *rev_p,
- ((*rev_p >> 28) & 0xf),
- ((*rev_p >> 20) & 0xff),
- ((*rev_p >> 12) & 0xff),
- ((*rev_p >> 8) & 0xf), (*rev_p & 0xff));
-}
-
-
-/*
- * Perform a simple test of the FPGA to processor interface using the FPGA's
- * inverting bus test register. The great thing about doing a read/write
- * test on a register that inverts it's contents is that you avoid any
- * problems with bus charging.
- * Return 0 on failure, 1 on success.
- */
-int test_fpga_ibtr (void)
-{
- vu_long *ibtr_p = (vu_long *) 0x60000010;
- vu_long readback;
- vu_long compare;
- int i;
- int j;
- int k;
- int pass = 1;
-
- static const ulong bitpattern[] = {
- 0xdeadbeef, /* magic ID pattern for debug */
- 0x00000001, /* single bit */
- 0x00000003, /* two adjacent bits */
- 0x00000007, /* three adjacent bits */
- 0x0000000F, /* four adjacent bits */
- 0x00000005, /* two non-adjacent bits */
- 0x00000015, /* three non-adjacent bits */
- 0x00000055, /* four non-adjacent bits */
- 0xaaaaaaaa, /* alternating 1/0 */
- };
-
- for (i = 0; i < 1024; i++) {
- for (j = 0; j < 31; j++) {
- for (k = 0;
- k < sizeof (bitpattern) / sizeof (bitpattern[0]);
- k++) {
- *ibtr_p = compare = (bitpattern[k] << j);
- readback = *ibtr_p;
- if (readback != ~compare) {
- printf ("%s:%d: FPGA test fail: expected 0x%.8lx" " actual 0x%.8lx\n", __FUNCTION__, __LINE__, ~compare, readback);
- pass = 0;
- break;
- }
- }
- if (!pass)
- break;
- }
- if (!pass)
- break;
- }
- if (pass) {
- printf ("FPGA inverting bus test passed\n");
- print_fpga_revision ();
- } else {
- printf ("** FPGA inverting bus test failed\n");
- }
- return pass;
-}
-
-
-/*
- * Set the active-low FPGA reset signal.
- */
-void fpga_reset (int assert)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
-
- PRINTF ("%s:%d: RESET ", __FUNCTION__, __LINE__);
- if (assert) {
- immap->im_ioport.iop_pcdat &= ~(0x8000 >> FPGA_RESET_BIT_NUM);
- PRINTF ("asserted\n");
- } else {
- immap->im_ioport.iop_pcdat |= (0x8000 >> FPGA_RESET_BIT_NUM);
- PRINTF ("deasserted\n");
- }
-}
-
-
-/*
- * Initialize the SelectMap interface. We assume that the mode and the
- * initial state of all of the port pins have already been set!
- */
-void fpga_selectmap_init (void)
-{
- PRINTF ("%s:%d: Initialize SelectMap interface\n", __FUNCTION__,
- __LINE__);
- fpga_pgm_fn (FALSE, FALSE, 0); /* make sure program pin is inactive */
-}
-
-
-/*
- * Initialize the fpga. Return 1 on success, 0 on failure.
- */
-int gen860t_init_fpga (void)
-{
- int i;
-
- PRINTF ("%s:%d: Initialize FPGA interface (relocation offset = 0x%.8lx)\n", __FUNCTION__, __LINE__, gd->reloc_off);
- fpga_init (gd->reloc_off);
- fpga_selectmap_init ();
-
- for (i = 0; i < CONFIG_FPGA_COUNT; i++) {
- PRINTF ("%s:%d: Adding fpga %d\n", __FUNCTION__, __LINE__, i);
- fpga_add (fpga_xilinx, &fpga[i]);
- }
- return 1;
-}
-
-
-/*
- * Set the FPGA's active-low SelectMap program line to the specified level
- */
-int fpga_pgm_fn (int assert, int flush, int cookie)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
-
- PRINTF ("%s:%d: FPGA PROGRAM ", __FUNCTION__, __LINE__);
-
- if (assert) {
- immap->im_ioport.iop_padat &=
- ~(0x8000 >> FPGA_PROGRAM_BIT_NUM);
- PRINTF ("asserted\n");
- } else {
- immap->im_ioport.iop_padat |=
- (0x8000 >> FPGA_PROGRAM_BIT_NUM);
- PRINTF ("deasserted\n");
- }
- return assert;
-}
-
-
-/*
- * Test the state of the active-low FPGA INIT line. Return 1 on INIT
- * asserted (low).
- */
-int fpga_init_fn (int cookie)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
-
- PRINTF ("%s:%d: INIT check... ", __FUNCTION__, __LINE__);
- if (immap->im_cpm.cp_pbdat & (0x80000000 >> FPGA_INIT_BIT_NUM)) {
- PRINTF ("high\n");
- return 0;
- } else {
- PRINTF ("low\n");
- return 1;
- }
-}
-
-
-/*
- * Test the state of the active-high FPGA DONE pin
- */
-int fpga_done_fn (int cookie)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
-
- PRINTF ("%s:%d: DONE check... ", __FUNCTION__, __LINE__);
- if (immap->im_cpm.cp_pbdat & (0x80000000 >> FPGA_DONE_BIT_NUM)) {
- PRINTF ("high\n");
- return FPGA_SUCCESS;
- } else {
- PRINTF ("low\n");
- return FPGA_FAIL;
- }
-}
-
-
-/*
- * Read FPGA SelectMap data.
- */
-int fpga_read_data_fn (unsigned char *data, int cookie)
-{
- vu_char *p = (vu_char *) SELECTMAP_BASE;
-
- *data = *p;
-#if 0
- PRINTF ("%s: Read 0x%x into 0x%p\n", __FUNCTION__, (int) data, data);
-#endif
- return (int) data;
-}
-
-
-/*
- * Write data to the FPGA SelectMap port
- */
-int fpga_write_data_fn (unsigned char data, int flush, int cookie)
-{
- vu_char *p = (vu_char *) SELECTMAP_BASE;
-
-#if 0
- PRINTF ("%s: Write Data 0x%x\n", __FUNCTION__, (int) data);
-#endif
- *p = data;
- return (int) data;
-}
-
-
-/*
- * Abort and FPGA operation
- */
-int fpga_abort_fn (int cookie)
-{
- PRINTF ("%s:%d: FPGA program sequence aborted\n",
- __FUNCTION__, __LINE__);
- return FPGA_FAIL;
-}
-
-
-/*
- * FPGA pre-configuration function. Just make sure that
- * FPGA reset is asserted to keep the FPGA from starting up after
- * configuration.
- */
-int fpga_pre_config_fn (int cookie)
-{
- PRINTF ("%s:%d: FPGA pre-configuration\n", __FUNCTION__, __LINE__);
- fpga_reset (TRUE);
- return 0;
-}
-
-
-/*
- * FPGA post configuration function. Blip the FPGA reset line and then see if
- * the FPGA appears to be running.
- */
-int fpga_post_config_fn (int cookie)
-{
- int rc;
-
- PRINTF ("%s:%d: FPGA post configuration\n", __FUNCTION__, __LINE__);
- fpga_reset (TRUE);
- udelay (1000);
- fpga_reset (FALSE);
- udelay (1000);
-
- /*
- * Use the FPGA,s inverting bus test register to do a simple test of the
- * processor interface.
- */
- rc = test_fpga_ibtr ();
- return rc;
-}
-
-
-/*
- * Clock, chip select and write signal assert functions and error check
- * and busy functions. These are only stubs because the GEN860T selectmap
- * interface handles sequencing of control signals automatically (it uses
- * a memory-mapped interface to the FPGA SelectMap port). The design of
- * the interface guarantees that the SelectMap port cannot be overrun so
- * no busy check is needed. A configuration error is signalled by INIT
- * going low during configuration, so there is no need for a separate error
- * function.
- */
-int fpga_clk_fn (int assert_clk, int flush, int cookie)
-{
- return assert_clk;
-}
-
-int fpga_cs_fn (int assert_cs, int flush, int cookie)
-{
- return assert_cs;
-}
-
-int fpga_wr_fn (int assert_write, int flush, int cookie)
-{
- return assert_write;
-}
-
-int fpga_err_fn (int cookie)
-{
- return 0;
-}
-
-int fpga_busy_fn (int cookie)
-{
- return 0;
-}
-#endif
-
-/* vim: set ts=4 tw=78 sw=4: */
diff --git a/board/gen860t/fpga.h b/board/gen860t/fpga.h
deleted file mode 100644
index 01967a42fd..0000000000
--- a/board/gen860t/fpga.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * (C) Copyright 2002
- * Rich Ireland, Enterasys Networks, rireland@enterasys.com.
- * Keith Outwater, keith_outwater@mvis.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
- *
- */
-
-/*
- * Virtex2 FPGA configuration support for the GEN860T computer
- */
-
-extern int gen860t_init_fpga(void);
-extern int fpga_pgm_fn(int assert_pgm, int flush, int cookie);
-extern int fpga_init_fn(int cookie);
-extern int fpga_err_fn(int cookie);
-extern int fpga_done_fn(int cookie);
-extern int fpga_clk_fn(int assert_clk, int flush, int cookie);
-extern int fpga_cs_fn(int assert_cs, int flush, int cookie);
-extern int fpga_wr_fn(int assert_write, int flush, int cookie);
-extern int fpga_read_data_fn(unsigned char *data, int cookie);
-extern int fpga_write_data_fn(unsigned char data, int flush, int cookie);
-extern int fpga_busy_fn(int cookie);
-extern int fpga_abort_fn(int cookie );
-extern int fpga_pre_config_fn(int cookie );
-extern int fpga_post_config_fn(int cookie );
-
-/* vim: set ts=4 sw=4 tw=78: */
diff --git a/board/gen860t/gen860t.c b/board/gen860t/gen860t.c
deleted file mode 100644
index eb73221005..0000000000
--- a/board/gen860t/gen860t.c
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Keith Outwater, keith_outwater@mvis.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
- */
-
-#include <virtex2.h>
-#include <common.h>
-#include <mpc8xx.h>
-#include <asm/8xx_immap.h>
-#include "beeper.h"
-#include "fpga.h"
-#include "ioport.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_STATUS_LED
-#include <status_led.h>
-#endif
-
-#if defined(CFG_CMD_MII) && defined(CONFIG_MII)
-#include <net.h>
-#endif
-
-#if 0
-#define GEN860T_DEBUG
-#endif
-
-#ifdef GEN860T_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-/*
- * The following UPM init tables were generated automatically by
- * Motorola's MCUINIT program. See the README file for UPM to
- * SDRAM pin assignments if you want to type this data into
- * MCUINIT in order to reverse engineer the waveforms.
- */
-
-/*
- * UPM initialization tables for MICRON MT48LC16M16A2TG SDRAM devices
- * (UPMA) and Virtex FPGA SelectMap interface (UPMB).
- * NOTE that unused areas of the table are used to hold NOP, precharge
- * and mode register set sequences.
- *
- */
-#define UPMA_NOP_ADDR 0x5
-#define UPMA_PRECHARGE_ADDR 0x6
-#define UPMA_MRS_ADDR 0x12
-
-#define UPM_SINGLE_READ_ADDR 0x00
-#define UPM_BURST_READ_ADDR 0x08
-#define UPM_SINGLE_WRITE_ADDR 0x18
-#define UPM_BURST_WRITE_ADDR 0x20
-#define UPM_REFRESH_ADDR 0x30
-
-const uint sdram_upm_table[] = {
- /* single read (offset 0x00 in upm ram) */
- 0x0e0fdc04, 0x01adfc04, 0x0fbffc00, 0x1fff5c05,
- 0xffffffff, 0x0fffffcd, 0x0fff0fce, 0xefcfffff,
- /* burst read (offset 0x08 in upm ram) */
- 0x0f0fdc04, 0x00fdfc04, 0xf0fffc00, 0xf0fffc00,
- 0xf1fffc00, 0xfffffc00, 0xfffffc05, 0xffffffff,
- 0xffffffff, 0xffffffff, 0x0ffffff4, 0x1f3d5ff4,
- 0xfffffff4, 0xfffffff5, 0xffffffff, 0xffffffff,
- /* single write (offset 0x18 in upm ram) */
- 0x0f0fdc04, 0x00ad3c00, 0x1fff5c05, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- /* burst write (offset 0x20 in upm ram) */
- 0x0f0fdc00, 0x10fd7c00, 0xf0fffc00, 0xf0fffc00,
- 0xf1fffc04, 0xfffffc05, 0xffffffff, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xfffff7ff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- /* refresh (offset 0x30 in upm ram) */
- 0x1ffddc84, 0xfffffc04, 0xfffffc04, 0xfffffc84,
- 0xfffffc05, 0xffffffff, 0xffffffff, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- /* exception (offset 0x3C in upm ram) */
-};
-
-const uint selectmap_upm_table[] = {
- /* single read (offset 0x00 in upm ram) */
- 0x88fffc06, 0x00fff404, 0x00fffc04, 0x33fffc00,
- 0xfffffc05, 0xffffffff, 0xffffffff, 0xffffffff,
- /* burst read (offset 0x08 in upm ram) */
- 0xfffffc04, 0xfffffc05, 0xffffffff, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- /* single write (offset 0x18 in upm ram) */
- 0x88fffc04, 0x00fff400, 0x77fffc05, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- /* burst write (offset 0x20 in upm ram) */
- 0xfffffc04, 0xfffffc05, 0xffffffff, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- /* refresh (offset 0x30 in upm ram) */
- 0xfffffc04, 0xfffffc05, 0xffffffff, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
- /* exception (offset 0x3C in upm ram) */
- 0xfffffc05, 0xffffffff, 0xffffffff, 0xffffffff
-};
-
-/*
- * Check board identity. Always successful (gives information only)
- */
-int checkboard (void)
-{
- char *s;
- char buf[64];
- int i;
-
- i = getenv_r ("board_id", buf, sizeof (buf));
- s = (i > 0) ? buf : NULL;
-
- if (s) {
- printf ("%s ", s);
- } else {
- printf ("<unknown> ");
- }
-
- i = getenv_r ("serial#", buf, sizeof (buf));
- s = (i > 0) ? buf : NULL;
-
- if (s) {
- printf ("S/N %s\n", s);
- } else {
- printf ("S/N <unknown>\n");
- }
-
- printf ("CPU at %s MHz, ", strmhz (buf, gd->cpu_clk));
- printf ("local bus at %s MHz\n", strmhz (buf, gd->bus_clk));
- return (0);
-}
-
-/*
- * Initialize SDRAM
- */
-long int initdram (int board_type)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immr->im_memctl;
-
- upmconfig (UPMA,
- (uint *) sdram_upm_table,
- sizeof (sdram_upm_table) / sizeof (uint)
- );
-
- /*
- * Setup MAMR register
- */
- memctl->memc_mptpr = CFG_MPTPR_1BK_8K;
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- /*
- * Map CS1* to SDRAM bank
- */
- memctl->memc_or1 = CFG_OR1;
- memctl->memc_br1 = CFG_BR1;
-
- /*
- * Perform SDRAM initialization sequence:
- * 1. Apply at least one NOP command
- * 2. 100 uS delay (JEDEC standard says 200 uS)
- * 3. Issue 4 precharge commands
- * 4. Perform two refresh cycles
- * 5. Program mode register
- *
- * Program SDRAM for standard operation, sequential burst, burst length
- * of 4, CAS latency of 2.
- */
- memctl->memc_mar = 0x00000000;
- memctl->memc_mcr = MCR_UPM_A | MCR_OP_RUN | MCR_MB_CS1 |
- MCR_MLCF (0) | UPMA_NOP_ADDR;
- udelay (200);
- memctl->memc_mar = 0x00000000;
- memctl->memc_mcr = MCR_UPM_A | MCR_OP_RUN | MCR_MB_CS1 |
- MCR_MLCF (4) | UPMA_PRECHARGE_ADDR;
-
- memctl->memc_mar = 0x00000000;
- memctl->memc_mcr = MCR_UPM_A | MCR_OP_RUN | MCR_MB_CS1 |
- MCR_MLCF (2) | UPM_REFRESH_ADDR;
-
- memctl->memc_mar = 0x00000088;
- memctl->memc_mcr = MCR_UPM_A | MCR_OP_RUN | MCR_MB_CS1 |
- MCR_MLCF (1) | UPMA_MRS_ADDR;
-
- memctl->memc_mar = 0x00000000;
- memctl->memc_mcr = MCR_UPM_A | MCR_OP_RUN | MCR_MB_CS1 |
- MCR_MLCF (0) | UPMA_NOP_ADDR;
- /*
- * Enable refresh
- */
- memctl->memc_mamr |= MAMR_PTAE;
-
- return (SDRAM_SIZE);
-}
-
-/*
- * Disk On Chip (DOC) Millenium initialization.
- * The DOC lives in the CS2* space
- */
-#if (CONFIG_COMMANDS & CFG_CMD_DOC)
-extern void doc_probe (ulong physadr);
-
-void doc_init (void)
-{
- printf ("Probing at 0x%.8x: ", DOC_BASE);
- doc_probe (DOC_BASE);
-}
-#endif
-
-/*
- * Miscellaneous intialization
- */
-int misc_init_r (void)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immr->im_memctl;
-
- /*
- * Set up UPMB to handle the Virtex FPGA SelectMap interface
- */
- upmconfig (UPMB, (uint *) selectmap_upm_table,
- sizeof (selectmap_upm_table) / sizeof (uint));
-
- memctl->memc_mbmr = 0x0;
-
- config_mpc8xx_ioports (immr);
-
-#if (CONFIG_COMMANDS & CFG_CMD_MII)
- mii_init ();
-#endif
-
-#if (CONFIG_FPGA)
- gen860t_init_fpga ();
-#endif
- return 0;
-}
-
-/*
- * Final init hook before entering command loop.
- */
-int last_stage_init (void)
-{
-#if !defined(CONFIG_SC)
- char buf[256];
- int i;
-
- /*
- * Turn the beeper volume all the way down in case this is a warm boot.
- */
- set_beeper_volume (-64);
- init_beeper ();
-
- /*
- * Read the environment to see what to do with the beeper
- */
- i = getenv_r ("beeper", buf, sizeof (buf));
- if (i > 0) {
- do_beeper (buf);
- }
-#endif
- return 0;
-}
-
-/*
- * Stub to make POST code happy. Can't self-poweroff, so just hang.
- */
-void board_poweroff (void)
-{
- puts ("### Please power off the board ###\n");
- while (1);
-}
-
-#ifdef CONFIG_POST
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed (void)
-{
- return 0; /* No hotkeys supported */
-}
-#endif
diff --git a/board/gen860t/ioport.c b/board/gen860t/ioport.c
deleted file mode 100644
index 1fc95455ae..0000000000
--- a/board/gen860t/ioport.c
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-#include <asm/8xx_immap.h>
-#include "ioport.h"
-
-#if 0
-#define IOPORT_DEBUG
-#endif
-
-#ifdef IOPORT_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-/*
- * The ioport configuration table.
- */
-const mpc8xx_iop_conf_t iop_conf_tab[NUM_PORTS][PORT_BITS] = {
- /*
- * Port A configuration
- * Pin Signal Type Active Initial state
- * PA7 fpgaProgramLowOut Out Low High
- * PA1 fpgaCoreVoltageFailLow In Low N/A
- */
- { /* conf ppar psor pdir podr pdat pint function */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* No pin */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* No pin */
- /* PA15 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PA14 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PA13 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PA12 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PA11 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PA10 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PA9 */ { 1, 0, 0, 1, 0, 0, 0 }, /* grn bicolor LED 1*/
- /* PA8 */ { 1, 0, 0, 1, 0, 0, 0 }, /* red bicolor LED 1*/
- /* PA7 */ { 1, 0, 0, 1, 0, 1, 0 }, /* fpgaProgramLow */
- /* PA6 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PA5 */ { 1, 0, 0, 1, 0, 0, 0 }, /* grn bicolor LED 0*/
- /* PA4 */ { 1, 0, 0, 1, 0, 0, 0 }, /* red bicolor LED 0*/
- /* PA3 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PA2 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
-#if !defined(CONFIG_SC)
- /* PA1 */ { 1, 0, 0, 0, 0, 0, 0 }, /* fpgaCoreVoltageFail*/
-#else
- /* PA1 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
-#endif
- /* PA0 */ { 0, 0, 0, 0, 0, 0, 0 } /* */
- },
-
- /*
- * Port B configuration
- * Pin Signal Type Active Initial state
- * PB14 docBusyLowIn In Low X
- * PB15 gpio1Sig Out High Low
- * PB16 fpgaDoneBi In High X
- * PB17 swBitOkLowOut Out Low High
- * PB19 speakerVolSig Out/Hi-Z High/Low High (Hi-Z)
- * PB22 fpgaInitLowBi In Low X
- * PB23 batteryOkSig In High X
- * PB31 pulseCatcherClr Out High 0
- */
- { /* conf ppar psor pdir podr pdat pint function */
-#if !defined(CONFIG_SC)
- /* PB31 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
-#else
- /* PB31 */ { 1, 0, 0, 1, 0, 0, 0 }, /* pulseCatcherClr */
-#endif
- /* PB30 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PB29 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PB28 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PB27 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PB26 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PB25 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PB24 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
-#if !defined(CONFIG_SC)
- /* PB23 */ { 1, 0, 0, 0, 0, 0, 0 }, /* batteryOk */
-#else
- /* PB23 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
-#endif
- /* PB22 */ { 1, 0, 0, 0, 0, 0, 0 }, /* fpgaInitLowBi */
- /* PB21 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PB20 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
-#if !defined(CONFIG_SC)
- /* PB19 */ { 1, 0, 0, 1, 1, 1, 0 }, /* speakerVol */
-#else
- /* PB19 */ { 0, 0, 0, 1, 1, 1, 0 }, /* */
-#endif
- /* PB18 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PB17 */ { 1, 0, 0, 1, 0, 1, 0 }, /* swBitOkLow */
- /* PB16 */ { 1, 0, 0, 0, 0, 0, 0 }, /* fpgaDone */
- /* PB15 */ { 1, 0, 0, 1, 0, 0, 0 }, /* gpio1 */
-#if !defined(CONFIG_SC)
- /* PB14 */ { 1, 0, 0, 0, 0, 0, 0 } /* docBusyLow */
-#else
- /* PB14 */ { 0, 0, 0, 0, 0, 0, 0 } /* */
-#endif
- },
-
- /*
- * Port C configuration
- * Pin Signal Type Active Initial state
- * PC4 i2cBus1EnSig Out High High
- * PC5 i2cBus2EnSig Out High High
- * PC6 gpio0Sig Out High Low
- * PC8 i2cBus3EnSig Out High High
- * PC10 i2cBus4EnSig Out High High
- * PC11 fpgaResetLowOut Out Low High
- * PC12 systemBitOkIn In High X
- * PC15 selfDreqLow In Low X
- */
- { /* conf ppar psor pdir podr pdat pint function */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PC15 */ { 1, 0, 0, 0, 0, 0, 0 }, /* selfDreqLowIn */
- /* PC14 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PC13 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
-#if !defined(CONFIG_SC)
- /* PC12 */ { 1, 0, 0, 0, 0, 0, 0 }, /* systemBitOkIn */
-#else
- /* PC12 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
-#endif
- /* PC11 */ { 1, 0, 0, 1, 0, 1, 0 }, /* fpgaResetLowOut */
-#if !defined(CONFIG_SC)
- /* PC10 */ { 1, 0, 0, 1, 0, 1, 0 }, /* i2cBus4EnSig */
-#else
- /* PC10 */ { 0, 0, 0, 1, 0, 1, 0 }, /* */
-#endif
- /* PC9 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
-#if !defined(CONFIG_SC)
- /* PC8 */ { 1, 0, 0, 1, 0, 1, 0 }, /* i2cBus3EnSig */
-#else
- /* PC8 */ { 0, 0, 0, 1, 0, 1, 0 }, /* */
-#endif
- /* PC7 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PC6 */ { 1, 0, 0, 1, 0, 1, 0 }, /* gpio0 */
-#if !defined(CONFIG_SC)
- /* PC5 */ { 1, 0, 0, 1, 0, 1, 0 }, /* i2cBus2EnSig */
- /* PC4 */ { 1, 0, 0, 1, 0, 1, 0 }, /* i2cBus1EnSig */
-#else
- /* PC5 */ { 0, 0, 0, 1, 0, 1, 0 }, /* */
- /* PC4 */ { 0, 0, 0, 1, 0, 1, 0 }, /* */
-#endif
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 } /* */
- },
-
- /*
- * Port D configuration
- */
- { /* conf ppar psor pdir podr pdat pint function */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD15 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD14 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD13 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD12 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD11 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD10 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD9 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD8 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD7 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD6 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD5 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD4 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* PD3 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */
- /* N/A */ { 0, 0, 0, 0, 0, 0, 0 } /* */
- }
-};
-
-/*
- * Configure the MPC8XX I/O ports per the ioport configuration table
- * (taken from ./cpu/mpc8260/cpu_init.c)
- */
-void config_mpc8xx_ioports (volatile immap_t * immr)
-{
- int portnum;
-
- for (portnum = 0; portnum < NUM_PORTS; portnum++) {
- uint pmsk = 0, ppar = 0, psor = 0, pdir = 0;
- uint podr = 0, pdat = 0, pint = 0;
- uint msk = 1;
- mpc8xx_iop_conf_t *iopc =
- (mpc8xx_iop_conf_t *) & iop_conf_tab[portnum][0];
- mpc8xx_iop_conf_t *eiopc = iopc + PORT_BITS;
-
- /*
- * For all ports except port B, ignore the two don't care entries
- * in the configuration tables.
- */
- if (portnum != 1) {
- iopc = (mpc8xx_iop_conf_t *) &
- iop_conf_tab[portnum][2];
- }
-
- /*
- * NOTE: index 0 refers to pin 17, index 17 refers to pin 0
- */
- while (iopc < eiopc) {
- if (iopc->conf) {
- pmsk |= msk;
- if (iopc->ppar)
- ppar |= msk;
- if (iopc->psor)
- psor |= msk;
- if (iopc->pdir)
- pdir |= msk;
- if (iopc->podr)
- podr |= msk;
- if (iopc->pdat)
- pdat |= msk;
- if (iopc->pint)
- pint |= msk;
- }
- msk <<= 1;
- iopc++;
- }
-
- PRINTF ("%s:%d:\n portnum=%d ", __FUNCTION__, __LINE__,
- portnum);
-#ifdef IOPORT_DEBUG
- switch (portnum) {
- case 0:
- printf ("(A)\n");
- break;
- case 1:
- printf ("(B)\n");
- break;
- case 2:
- printf ("(C)\n");
- break;
- case 3:
- printf ("(D)\n");
- break;
- default:
- printf ("(?)\n");
- break;
- }
-#endif
- PRINTF (" ppar=0x%.8x pdir=0x%.8x podr=0x%.8x\n"
- " pdat=0x%.8x psor=0x%.8x pint=0x%.8x pmsk=0x%.8x\n",
- ppar, pdir, podr, pdat, psor, pint, pmsk);
-
- /*
- * Have to handle the ioports on a port-by-port basis since there
- * are three different flavors.
- */
- if (pmsk != 0) {
- uint tpmsk = ~pmsk;
-
- if (0 == portnum) { /* port A */
- immr->im_ioport.iop_papar &= tpmsk;
- immr->im_ioport.iop_padat =
- (immr->im_ioport.
- iop_padat & tpmsk) | pdat;
- immr->im_ioport.iop_padir =
- (immr->im_ioport.
- iop_padir & tpmsk) | pdir;
- immr->im_ioport.iop_paodr =
- (immr->im_ioport.
- iop_paodr & tpmsk) | podr;
- immr->im_ioport.iop_papar |= ppar;
- } else if (1 == portnum) { /* port B */
- immr->im_cpm.cp_pbpar &= tpmsk;
- immr->im_cpm.cp_pbdat =
- (immr->im_cpm.
- cp_pbdat & tpmsk) | pdat;
- immr->im_cpm.cp_pbdir =
- (immr->im_cpm.
- cp_pbdir & tpmsk) | pdir;
- immr->im_cpm.cp_pbodr =
- (immr->im_cpm.
- cp_pbodr & tpmsk) | podr;
- immr->im_cpm.cp_pbpar |= ppar;
- } else if (2 == portnum) { /* port C */
- immr->im_ioport.iop_pcpar &= tpmsk;
- immr->im_ioport.iop_pcdat =
- (immr->im_ioport.
- iop_pcdat & tpmsk) | pdat;
- immr->im_ioport.iop_pcdir =
- (immr->im_ioport.
- iop_pcdir & tpmsk) | pdir;
- immr->im_ioport.iop_pcint =
- (immr->im_ioport.
- iop_pcint & tpmsk) | pint;
- immr->im_ioport.iop_pcso =
- (immr->im_ioport.
- iop_pcso & tpmsk) | psor;
- immr->im_ioport.iop_pcpar |= ppar;
- } else if (3 == portnum) { /* port D */
- immr->im_ioport.iop_pdpar &= tpmsk;
- immr->im_ioport.iop_pddat =
- (immr->im_ioport.
- iop_pddat & tpmsk) | pdat;
- immr->im_ioport.iop_pddir =
- (immr->im_ioport.
- iop_pddir & tpmsk) | pdir;
- immr->im_ioport.iop_pdpar |= ppar;
- }
- }
- }
-
- PRINTF ("%s:%d: Port A:\n papar=0x%.4x padir=0x%.4x"
- " paodr=0x%.4x\n padat=0x%.4x\n", __FUNCTION__, __LINE__,
- immr->im_ioport.iop_papar, immr->im_ioport.iop_padir,
- immr->im_ioport.iop_paodr, immr->im_ioport.iop_padat);
- PRINTF ("%s:%d: Port B:\n pbpar=0x%.8x pbdir=0x%.8x"
- " pbodr=0x%.8x\n pbdat=0x%.8x\n", __FUNCTION__, __LINE__,
- immr->im_cpm.cp_pbpar, immr->im_cpm.cp_pbdir,
- immr->im_cpm.cp_pbodr, immr->im_cpm.cp_pbdat);
- PRINTF ("%s:%d: Port C:\n pcpar=0x%.4x pcdir=0x%.4x"
- " pcdat=0x%.4x\n pcso=0x%.4x pcint=0x%.4x\n ",
- __FUNCTION__, __LINE__, immr->im_ioport.iop_pcpar,
- immr->im_ioport.iop_pcdir, immr->im_ioport.iop_pcdat,
- immr->im_ioport.iop_pcso, immr->im_ioport.iop_pcint);
- PRINTF ("%s:%d: Port D:\n pdpar=0x%.4x pddir=0x%.4x"
- " pddat=0x%.4x\n", __FUNCTION__, __LINE__,
- immr->im_ioport.iop_pdpar, immr->im_ioport.iop_pddir,
- immr->im_ioport.iop_pddat);
-}
diff --git a/board/gen860t/ioport.h b/board/gen860t/ioport.h
deleted file mode 100644
index 34a2d7b1d9..0000000000
--- a/board/gen860t/ioport.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Keith Outwater, keith_outwater@mvis.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
- */
-
-#define NUM_PORTS 4
-#define PORT_BITS 18
-
-/*
- * This structure provides configuration information for one port pin.
- * We include all fields needed to initialize any of the ioports.
- */
-typedef struct {
- unsigned char conf:1; /* If 1, configure this port */
- unsigned char ppar:1; /* Port Pin Assignment Register */
- unsigned char psor:1; /* Port Special Options Register */
- unsigned char pdir:1; /* Port Data Direction Register */
- unsigned char podr:1; /* Port Open Drain Register */
- unsigned char pdat:1; /* Port Data Register */
- unsigned char pint:1; /* Port Interrupt Register */
-} mpc8xx_iop_conf_t;
-
-extern void config_mpc8xx_ioports(volatile immap_t *immr);
-
-/* vim: set ts=4 tw=78 sw=4: */
diff --git a/board/gen860t/u-boot-flashenv.lds b/board/gen860t/u-boot-flashenv.lds
deleted file mode 100644
index 7926a2e09d..0000000000
--- a/board/gen860t/u-boot-flashenv.lds
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Linker command file for the GEN860T board when the environment is
- * stored in flash memory.
- *
- * (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
- */
-
-OUTPUT_ARCH(powerpc)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib);
-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)
- *(.rodata.str1.4)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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 = .);
-
- .ppcenv:
- {
- . = env_offset;
- common/environment.o
- }
-}
diff --git a/board/gen860t/u-boot.lds b/board/gen860t/u-boot.lds
deleted file mode 100644
index 1df481751c..0000000000
--- a/board/gen860t/u-boot.lds
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Linker command file for the GEN860T board.
- *
- * (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
- */
-
-OUTPUT_ARCH(powerpc)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib);
-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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/genietv/Makefile b/board/genietv/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/genietv/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/genietv/config.mk b/board/genietv/config.mk
deleted file mode 100644
index 69ab21fcf0..0000000000
--- a/board/genietv/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (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
-#
-
-TEXT_BASE = 0x00000000
-OBJCFLAGS = --set-section-flags=.ppcenv=contents,alloc,load,data
diff --git a/board/genietv/flash.c b/board/genietv/flash.c
deleted file mode 100644
index 1c1728bb49..0000000000
--- a/board/genietv/flash.c
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i < CFG_MAX_FLASH_BANKS; ++i)
- flash_info[i].flash_id = FLASH_UNKNOWN;
-
- /* Detect size */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- /* Setup offsets */
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* Monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- size_b1 = 0 ;
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- * Fix this to support variable sector sizes
-*/
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- /* set sector offsets for bottom boot block type */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN)
- {
- puts ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK)
- {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK)
- {
- case FLASH_AM040: printf ("29F040 or 29LV040 (4 Mbit, uniform sectors)\n");
- break;
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size >> 20) {
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
- } else {
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10,
- info->sector_count);
- }
-
- puts (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i)
- {
- if ((i % 5) == 0)
- {
- puts ("\n ");
- }
-
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
-
- putc ('\n');
- return;
-}
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- volatile unsigned char *caddr;
- char value;
-
- caddr = (volatile unsigned char *)addr ;
-
- /* Write auto select command: read Manufacturer ID */
-
-#if 0
- printf("Base address is: %08x\n", caddr);
-#endif
-
- caddr[0x0555] = 0xAA;
- caddr[0x02AA] = 0x55;
- caddr[0x0555] = 0x90;
-
- value = caddr[0];
-
-#if 0
- printf("Manufact ID: %02x\n", value);
-#endif
- switch (value)
- {
- case 0x1: /* AMD_MANUFACT */
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case 0x4: /* FUJ_MANUFACT */
- info->flash_id = FLASH_MAN_FUJ;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- value = caddr[1]; /* device ID */
-#if 0
- printf("Device ID: %02x\n", value);
-#endif
- switch (value)
- {
- case AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 512Kb */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- flash_get_offsets ((ulong)addr, &flash_info[0]);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++)
- {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- caddr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = caddr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN)
- {
- caddr = (volatile unsigned char *)info->start[0];
- *caddr = 0xF0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile unsigned char *addr = (volatile unsigned char *)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x80;
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (volatile unsigned char *)(info->start[sect]);
- addr[0] = 0x30;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (volatile unsigned char *)(info->start[l_sect]);
-
- while ((addr[0] & 0xFF) != 0xFF)
- {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned char *)info->start[0];
-
- addr[0] = 0xF0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile unsigned char *addr = (volatile unsigned char*)(info->start[0]),
- *cdest,*cdata;
- ulong start;
- int flag, count = 4 ;
-
- cdest = (volatile unsigned char *)dest ;
- cdata = (volatile unsigned char *)&data ;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
- while(count--)
- {
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0xA0;
-
- *cdest = *cdata;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*cdest ^ *cdata) & 0x80)
- {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
- cdata++ ;
- cdest++ ;
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/genietv/genietv.c b/board/genietv/genietv.c
deleted file mode 100644
index 5f8c8997e5..0000000000
--- a/board/genietv/genietv.c
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * genietv/genietv.c
- *
- * The GENIETV is using the following physical memorymap (copied from
- * the FADS configuration):
- *
- * ff020000 -> ff02ffff : pcmcia
- * ff010000 -> ff01ffff : BCSR connected to CS1, setup by 8xxROM
- * ff000000 -> ff00ffff : IMAP internal in the cpu
- * 02800000 -> 0287ffff : flash connected to CS0
- * 00000000 -> nnnnnnnn : sdram setup by U-Boot
- *
- * CS pins are connected as follows:
- *
- * CS0 -512Kb boot flash
- * CS1 - SDRAM #1
- * CS2 - SDRAM #2
- * CS3 - Flash #1
- * CS4 - Flash #2
- * CS5 - LON (if present)
- * CS6 - PCMCIA #1
- * CS7 - PCMCIA #2
- *
- * Ports are configured as follows:
- *
- * PA7 - SDRAM banks enable
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-#define CFG_PA7 0x0100
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] = {
- /*
- * Single Read. (Offset 0 in UPMB RAM)
- */
- 0x1F0DFC04, 0xEEAFBC04, 0x11AF7C04, 0xEFBEEC00,
- 0x1FFDDC47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMB RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FFDDC34, 0xEFEEAC34, 0x1FBD5C35, /* last */
- /*
- * Burst Read. (Offset 8 in UPMB RAM)
- */
- 0x1F0DFC04, 0xEEAFBC04, 0x10AF7C04, 0xF0AFFC00,
- 0xF0AFFC00, 0xF1AFFC00, 0xEFBEEC00, 0x1FFDDC47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMB RAM)
- */
- 0x1F2DFC04, 0xEEAFAC00, 0x01BE4C04, 0x1FFDDC47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMB RAM)
- */
- 0x1F0DFC04, 0xEEAFAC00, 0x10AF5C00, 0xF0AFFC00,
- 0xF0AFFC00, 0xE1BEEC04, 0x1FFDDC47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMB RAM)
- */
- 0x1FFD7C84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMB RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity
- */
-
-int checkboard (void)
-{
- puts ("Board: GenieTV\n");
- return 0;
-}
-
-#if 0
-static void PrintState (void)
-{
- volatile immap_t *im = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &im->im_memctl;
-
- printf ("\n0 - FLASH: B=%08x O=%08x", memctl->memc_br0,
- memctl->memc_or0);
- printf ("\n1 - SDRAM: B=%08x O=%08x", memctl->memc_br1,
- memctl->memc_or1);
- printf ("\n2 - SDRAM: B=%08x O=%08x", memctl->memc_br2,
- memctl->memc_or2);
-}
-#endif
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *im = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &im->im_memctl;
- long int size_b0, size_b1, size8;
-
- /* Enable SDRAM */
-
- /* Configuring PA7 for general purpouse output pin */
- im->im_ioport.iop_papar &= ~CFG_PA7; /* 0 = general purpouse */
- im->im_ioport.iop_padir |= CFG_PA7; /* 1 = output */
-
- /* Enable SDRAM - PA7 = 1 */
- im->im_ioport.iop_padat |= CFG_PA7; /* value of PA7 */
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
-
- memctl->memc_mbmr = CFG_MBMR_8COL;
-
- upmconfig (UPMB, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Map controller banks 1 and 2 to the SDRAM banks 1 and 2 at
- * preliminary addresses - these have to be modified after the
- * SDRAM size has been determined.
- */
-
- memctl->memc_or1 = 0xF0000000 | CFG_OR_TIMING_SDRAM;
- memctl->memc_br1 =
- ((SDRAM_BASE1_PRELIM & BR_BA_MSK) | BR_MS_UPMB | BR_V);
-
- memctl->memc_or2 = 0xF0000000 | CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 =
- ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMB | BR_V);
-
- /* perform SDRAM initialization sequence */
- memctl->memc_mar = 0x00000088;
-
- memctl->memc_mcr = 0x80802105; /* SDRAM bank 0 */
-
- memctl->memc_mcr = 0x80804105; /* SDRAM bank 1 */
-
- /* Execute refresh 8 times */
- memctl->memc_mbmr = (CFG_MBMR_8COL & ~MBMR_TLFB_MSK) | MBMR_TLFB_8X;
-
- memctl->memc_mcr = 0x80802130; /* SDRAM bank 0 - execute twice */
-
- memctl->memc_mcr = 0x80804130; /* SDRAM bank 1 - execute twice */
-
- /* Execute refresh 4 times */
- memctl->memc_mbmr = CFG_MBMR_8COL;
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
-
-#if 0
- PrintState ();
-#endif
-/* printf ("\nChecking bank1..."); */
- size8 = dram_size (CFG_MBMR_8COL, (long *) SDRAM_BASE1_PRELIM,
- SDRAM_MAX_SIZE);
-
- size_b0 = size8;
-
-/* printf ("\nChecking bank2..."); */
- size_b1 =
- dram_size (memctl->memc_mbmr, (long *) SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-
- /*
- * Final mapping: map bigger bank first
- */
-
- memctl->memc_or1 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br1 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMB | BR_V;
-
- if (size_b1 > 0) {
- /*
- * Position Bank 1 immediately above Bank 0
- */
- memctl->memc_or2 =
- ((-size_b1) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 =
- ((CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMB | BR_V) +
- (size_b0 & BR_BA_MSK);
- } else {
- /*
- * No bank 1
- *
- * invalidate bank
- */
- memctl->memc_br2 = 0;
- /* adjust refresh rate depending on SDRAM type, one bank */
- memctl->memc_mptpr = CFG_MPTPR_1BK_4K;
- }
-
- /* If no memory detected, disable SDRAM */
- if ((size_b0 + size_b1) == 0) {
- printf ("disabling SDRAM!\n");
- /* Disable SDRAM - PA7 = 1 */
- im->im_ioport.iop_padat &= ~CFG_PA7; /* value of PA7 */
- }
-/* else */
-/* printf("done! (%08lx)\n", size_b0 + size_b1); */
-
-#if 0
- PrintState ();
-#endif
- return (size_b0 + size_b1);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mbmr_value, long int *base,
- long int maxsize)
-{
- long size;
-
- /*memctl->memc_mbmr = mbmr_value; */
-
- size = get_ram_size (base, maxsize);
-
- if (size) {
-/* printf("(%08lx)", size); */
- } else {
- printf ("(0)");
- }
-
- return (size);
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-
-#ifdef CFG_PCMCIA_MEM_ADDR
-volatile unsigned char *pcmcia_mem = (unsigned char *) CFG_PCMCIA_MEM_ADDR;
-#endif
-
-int pcmcia_init (void)
-{
- volatile pcmconf8xx_t *pcmp;
- uint v, slota, slotb;
-
- /*
- ** Enable the PCMCIA for a Flash card.
- */
- pcmp = (pcmconf8xx_t *) (&(((immap_t *) CFG_IMMR)->im_pcmcia));
-
-#if 0
- pcmp->pcmc_pbr0 = CFG_PCMCIA_MEM_ADDR;
- pcmp->pcmc_por0 = 0xc00ff05d;
-#endif
-
- /* Set all slots to zero by default. */
- pcmp->pcmc_pgcra = 0;
- pcmp->pcmc_pgcrb = 0;
-#ifdef PCMCIA_SLOT_A
- pcmp->pcmc_pgcra = 0x40;
-#endif
-#ifdef PCMCIA_SLOT_B
- pcmp->pcmc_pgcrb = 0x40;
-#endif
-
- /* Check if any PCMCIA card is luged in. */
- slota = (pcmp->pcmc_pipr & 0x18000000) == 0;
- slotb = (pcmp->pcmc_pipr & 0x00001800) == 0;
-
- if (!(slota || slotb)) {
- printf ("No card present\n");
-#ifdef PCMCIA_SLOT_A
- pcmp->pcmc_pgcra = 0;
-#endif
-#ifdef PCMCIA_SLOT_B
- pcmp->pcmc_pgcrb = 0;
-#endif
- return -1;
- } else
- printf ("Unknown card (");
-
- v = 0;
-
- switch ((pcmp->pcmc_pipr >> 14) & 3) {
- case 0x00:
- printf ("5V");
- v = 5;
- break;
- case 0x01:
- printf ("5V and 3V");
- v = 3;
- break;
- case 0x03:
- printf ("5V, 3V and x.xV");
- v = 3;
- break;
- }
-
- switch (v) {
- case 3:
- printf ("; using 3V");
- /* Enable 3 volt Vcc. */
-
- break;
-
- default:
- printf ("; unknown voltage");
- return -1;
- }
- printf (")\n");
- /* disable pcmcia reset after a while */
-
- udelay (20);
-
- pcmp->pcmc_pgcrb = 0;
-
- /* If you using a real hd you should give a short
- * spin-up time. */
-#ifdef CONFIG_DISK_SPINUP_TIME
- udelay (CONFIG_DISK_SPINUP_TIME);
-#endif
-
- return 0;
-}
-#endif /* CFG_CMD_PCMCIA */
diff --git a/board/genietv/genietv.h b/board/genietv/genietv.h
deleted file mode 100644
index 7c95b566f9..0000000000
--- a/board/genietv/genietv.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * The GENIETV is using the following physical memorymap (copied from
- * the FADS configuration):
- *
- * ff020000 -> ff02ffff : pcmcia
- * ff010000 -> ff01ffff : BCSR connected to CS1, setup by 8xxROM
- * ff000000 -> ff00ffff : IMAP internal in the cpu
- * 02800000 -> 0287ffff : flash connected to CS0
- * 00000000 -> nnnnnnnn : sdram setup by U-Boot
- *
- * CS pins are connected as follows:
- *
- * CS0 -512Kb boot flash
- * CS1 - SDRAM #1
- * CS2 - SDRAM #2
- * CS3 - Flash #1
- * CS4 - Flash #2
- * CS5 - LON (if present)
- * CS6 - PCMCIA #1
- * CS7 - PCMCIA #2
- *
- * Ports are configured as follows:
- *
- * PA7 - SDRAM banks enable
- */
diff --git a/board/genietv/u-boot.lds b/board/genietv/u-boot.lds
deleted file mode 100644
index f48b9ad2a1..0000000000
--- a/board/genietv/u-boot.lds
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- . = ALIGN(256 * 1024);
- .ppcenv :
- {
- common/environment.o (.ppcenv)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/genietv/u-boot.lds.debug b/board/genietv/u-boot.lds.debug
deleted file mode 100644
index e843df6a02..0000000000
--- a/board/genietv/u-boot.lds.debug
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- . = ALIGN(256 * 1024);
- .ppcenv :
- {
- common/environment.o (.ppcenv)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/gth/Makefile b/board/gth/Makefile
deleted file mode 100644
index 4b5c528a04..0000000000
--- a/board/gth/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ee_access.o pcmcia.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/gth/README b/board/gth/README
deleted file mode 100644
index 241c70b69b..0000000000
--- a/board/gth/README
+++ /dev/null
@@ -1,18 +0,0 @@
-Written by Thomas.Lange@corelatus.com 010805
-
-To make a system for gth that actually works ;-)
-the variable TBASE needs to be set to 0,1 or 2
-depending on location where image is supposed to
-be started from.
-E.g. make TBASE=1
-
-0: Start from RAM, base 0
-
-1: Start from flash_base + 0x10070
-
-2: Start from flash_base + 0x30070
-
-When using 1 or 2, the image is supposed to be launched
-from miniboot that boots the first U-Boot image found in
-flash.
-For miniboot code, description, see www.opensource.se
diff --git a/board/gth/config.mk b/board/gth/config.mk
deleted file mode 100644
index 3c80156c3f..0000000000
--- a/board/gth/config.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# (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
-#
-
-#
-ifeq ($(TBASE),0)
-TEXT_BASE = 0
-else
-ifeq ($(TBASE),1)
-TEXT_BASE = 0x80010070
-else
-ifeq ($(TBASE),2)
-TEXT_BASE = 0x80030070
-else
-## Only to make ordinary make work
-TEXT_BASE = 0x90000000
-endif
-endif
-endif
-
-OBJCFLAGS = --set-section-flags=.ppcenv=contents,alloc,load,data
diff --git a/board/gth/ee_access.c b/board/gth/ee_access.c
deleted file mode 100644
index 716c90ed62..0000000000
--- a/board/gth/ee_access.c
+++ /dev/null
@@ -1,335 +0,0 @@
-/* Module for handling DALLAS DS2438, smart battery monitor
- Chip can store up to 40 bytes of user data in EEPROM,
- perform temp, voltage and current measurements.
- Chip also contains a unique serial number.
-
- Always read/write LSb first
-
- For documentaion, see data sheet for DS2438, 2438.pdf
-
- By Thomas.Lange@corelatus.com 001025 */
-
-#include <common.h>
-#include <config.h>
-#include <mpc8xx.h>
-
-#include <../board/gth/ee_dev.h>
-
-/* We dont have kernel functions */
-#define printk printf
-#define KERN_DEBUG
-#define KERN_ERR
-#define EIO 1
-
-static int Debug = 0;
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-/*
- * lookup table ripped from DS app note 17, understanding and using
- * cyclic redundancy checks...
- */
-
-static u8 crc_lookup[256] = {
- 0, 94, 188, 226, 97, 63, 221, 131,
- 194, 156, 126, 32, 163, 253, 31, 65,
- 157, 195, 33, 127, 252, 162, 64, 30,
- 95, 1, 227, 189, 62, 96, 130, 220,
- 35, 125, 159, 193, 66, 28, 254, 160,
- 225, 191, 93, 3, 128, 222, 60, 98,
- 190, 224, 2, 92, 223, 129, 99, 61,
- 124, 34, 192, 158, 29, 67, 161, 255,
- 70, 24, 250, 164, 39, 121, 155, 197,
- 132, 218, 56, 102, 229, 187, 89, 7,
- 219, 133, 103, 57, 186, 228, 6, 88,
- 25, 71, 165, 251, 120, 38, 196, 154,
- 101, 59, 217, 135, 4, 90, 184, 230,
- 167, 249, 27, 69, 198, 152, 122, 36,
- 248, 166, 68, 26, 153, 199, 37, 123,
- 58, 100, 134, 216, 91, 5, 231, 185,
- 140, 210, 48, 110, 237, 179, 81, 15,
- 78, 16, 242, 172, 47, 113, 147, 205,
- 17, 79, 173, 243, 112, 46, 204, 146,
- 211, 141, 111, 49, 178, 236, 14, 80,
- 175, 241, 19, 77, 206, 144, 114, 44,
- 109, 51, 209, 143, 12, 82, 176, 238,
- 50, 108, 142, 208, 83, 13, 239, 177,
- 240, 174, 76, 18, 145, 207, 45, 115,
- 202, 148, 118, 40, 171, 245, 23, 73,
- 8, 86, 180, 234, 105, 55, 213, 139,
- 87, 9, 235, 181, 54, 104, 138, 212,
- 149, 203, 41, 119, 244, 170, 72, 22,
- 233, 183, 85, 11, 136, 214, 52, 106,
- 43, 117, 151, 201, 74, 20, 246, 168,
- 116, 42, 200, 150, 21, 75, 169, 247,
- 182, 232, 10, 84, 215, 137, 107, 53
-};
-
-static u8 make_new_crc( u8 Old_crc, u8 New_value ){
- /* Compute a new checksum with new byte, using previous checksum as input
- See DS app note 17, understanding and using cyclic redundancy checks...
- Also see DS2438, page 11 */
- return( crc_lookup[Old_crc ^ New_value ]);
-}
-
-int ee_crc_ok( u8 *Buffer, int Len, u8 Crc ){
- /* Check if the checksum for this buffer is correct */
- u8 Curr_crc=0;
- int i;
- u8 *Curr_byte = Buffer;
-
- for(i=0;i<Len;i++){
- Curr_crc = make_new_crc( Curr_crc, *Curr_byte);
- Curr_byte++;
- }
- E_DEBUG("Calculated CRC = 0x%x, read = 0x%x\n", Curr_crc, Crc);
-
- if(Curr_crc == Crc){
- /* Good */
- return(TRUE);
- }
- printk(KERN_ERR"EE checksum error, Calculated CRC = 0x%x, read = 0x%x\n",
- Curr_crc, Crc);
- return(FALSE);
-}
-
-static void
-set_idle(void){
- /* Send idle and keep start time
- Continous 1 is idle */
- WRITE_PORT(1);
-}
-
-static int
-do_reset(void){
- /* Release reset and verify that chip responds with presence pulse */
- int Retries = 0;
- while(Retries<5){
- udelay(RESET_LOW_TIME);
-
- /* Send reset */
- WRITE_PORT(0);
- udelay(RESET_LOW_TIME);
-
- /* Release reset */
- WRITE_PORT(1);
-
- /* Wait for EEPROM to drive output */
- udelay(PRESENCE_TIMEOUT);
- if(!READ_PORT){
- /* Ok, EEPROM is driving a 0 */
- E_DEBUG("Presence detected\n");
- if(Retries){
- E_DEBUG("Retries %d\n",Retries);
- }
- /* Make sure chip releases pin */
- udelay(PRESENCE_LOW_TIME);
- return 0;
- }
- Retries++;
- }
-
- printk(KERN_ERR"EEPROM did not respond when releasing reset\n");
-
- /* Make sure chip releases pin */
- udelay(PRESENCE_LOW_TIME);
-
- /* Set to idle again */
- set_idle();
-
- return(-EIO);
-}
-
-static u8
-read_byte(void){
- /* Read a single byte from EEPROM
- Read LSb first */
- int i;
- int Value;
- u8 Result=0;
-#ifndef CFG_IMMR
- u32 Flags;
-#endif
-
- E_DEBUG("Reading byte\n");
-
- for(i=0;i<8;i++){
- /* Small delay between pulses */
- udelay(1);
-
-#ifndef CFG_IMMR
- /* Disable irq */
- save_flags(Flags);
- cli();
-#endif
-
- /* Pull down pin short time to start read
- See page 26 in data sheet */
-
- WRITE_PORT(0);
- udelay(READ_LOW);
- WRITE_PORT(1);
-
- /* Wait for chip to drive pin */
- udelay(READ_TIMEOUT);
-
- Value = READ_PORT;
- if(Value)
- Value=1;
-
-#ifndef CFG_IMMR
- /* Enable irq */
- restore_flags(Flags);
-#endif
-
- /* Wait for chip to release pin */
- udelay(TOTAL_READ_LOW-READ_TIMEOUT);
-
- /* LSb first */
- Result|=Value<<i;
- }
-
- E_DEBUG("Read byte 0x%x\n",Result);
-
- return(Result);
-}
-
-static void
-write_byte(u8 Byte){
- /* Write a single byte to EEPROM
- Write LSb first */
- int i;
- int Value;
-#ifndef CFG_IMMR
- u32 Flags;
-#endif
-
- E_DEBUG("Writing byte 0x%x\n",Byte);
-
- for(i=0;i<8;i++){
- /* Small delay between pulses */
- udelay(1);
- Value = Byte&1;
-
-#ifndef CFG_IMMR
- /* Disable irq */
- save_flags(Flags);
- cli();
-#endif
-
- /* Pull down pin short time for a 1, long time for a 0
- See page 26 in data sheet */
-
- WRITE_PORT(0);
- if(Value){
- /* Write a 1 */
- udelay(WRITE_1_LOW);
- }
- else{
- /* Write a 0 */
- udelay(WRITE_0_LOW);
- }
-
- WRITE_PORT(1);
-
-#ifndef CFG_IMMR
- /* Enable irq */
- restore_flags(Flags);
-#endif
-
- if(Value)
- /* Wait for chip to read the 1 */
- udelay(TOTAL_WRITE_LOW-WRITE_1_LOW);
- Byte>>=1;
- }
-}
-
-int ee_do_command( u8 *Tx, int Tx_len, u8 *Rx, int Rx_len, int Send_skip ){
- /* Execute this command string, including
- giving reset and setting to idle after command
- if Rx_len is set, we read out data from EEPROM */
- int i;
-
- E_DEBUG("Command, Tx_len %d, Rx_len %d\n", Tx_len, Rx_len );
-
- if(do_reset()){
- /* Failed! */
- return(-EIO);
- }
-
- if(Send_skip)
- /* Always send SKIP_ROM first to tell chip we are sending a command,
- except when we read out rom data for chip */
- write_byte(SKIP_ROM);
-
- /* Always have Tx data */
- for(i=0;i<Tx_len;i++){
- write_byte(Tx[i]);
- }
-
- if(Rx_len){
- for(i=0;i<Rx_len;i++){
- Rx[i]=read_byte();
- }
- }
-
- set_idle();
-
- E_DEBUG("Command done\n");
-
- return(0);
-}
-
-int ee_init_data(void){
- int i;
- u8 Tx[10];
- int tmp;
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
-
- while(0){
- tmp = 1-tmp;
- if(tmp)
- immap->im_ioport.iop_padat &= ~PA_FRONT_LED;
- else
- immap->im_ioport.iop_padat |= PA_FRONT_LED;
- udelay(1);
- }
-
- /* Set port to open drain to be able to read data from
- port without setting it to input */
- PORT_B_PAR &= ~PB_EEPROM;
- PORT_B_ODR |= PB_EEPROM;
- SET_PORT_B_OUTPUT(PB_EEPROM);
-
- /* Set idle mode */
- set_idle();
-
- /* Copy all User EEPROM data to scratchpad */
- for(i=0;i<USER_PAGES;i++){
- Tx[0]=RECALL_MEMORY;
- Tx[1]=EE_USER_PAGE_0+i;
- if(ee_do_command(Tx,2,NULL,0,TRUE)) return(-EIO);
- }
-
- /* Make sure chip doesnt store measurements in NVRAM */
- Tx[0]=WRITE_SCRATCHPAD;
- Tx[1]=0; /* Page */
- Tx[2]=9;
- if(ee_do_command(Tx,3,NULL,0,TRUE)) return(-EIO);
-
- Tx[0]=COPY_SCRATCHPAD;
- if(ee_do_command(Tx,2,NULL,0,TRUE)) return(-EIO);
-
- /* FIXME check status bit instead
- Could take 10 ms to store in EEPROM */
- for(i=0;i<10;i++){
- udelay(1000);
- }
-
- return(0);
-}
diff --git a/board/gth/ee_access.h b/board/gth/ee_access.h
deleted file mode 100644
index e847f2c58b..0000000000
--- a/board/gth/ee_access.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* 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
deleted file mode 100644
index 417c7b675c..0000000000
--- a/board/gth/ee_dev.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* 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/gth/flash.c b/board/gth/flash.c
deleted file mode 100644
index 41a5c50b0f..0000000000
--- a/board/gth/flash.c
+++ /dev/null
@@ -1,649 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- * Protection Flags:
- */
-#define FLAG_PROTECT_SET 0x01
-#define FLAG_PROTECT_CLEAR 0x02
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
- /*printf("faking");*/
-
- return(0x1fffff);
-
- /* Init: no FLASHes known */
- for (i=0; i < CFG_MAX_FLASH_BANKS; ++i)
- {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN)
- {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
-#if 0
- if (FLASH_BASE1_PRELIM != 0x0) {
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,size_b0, size_b0<<20);
-
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
- } else {
-#endif
- size_b1 = 0;
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR0_PRELIM;
- memctl->memc_br0 = CFG_BR0_PRELIM;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- if (size_b1)
- {
- /* memctl->memc_or1 = CFG_OR1_PRELIM;
- memctl->memc_br1 = CFG_BR1_PRELIM; */
-
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(CFG_FLASH_BASE + size_b0),
- &flash_info[1]);
-
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
- }
- else
- {
-/* memctl->memc_or1 = CFG_OR1_PRELIM;
- FIXME memctl->memc_br1 = CFG_BR1_PRELIM; */
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
-
-
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start adress table */
- if (info->flash_id & FLASH_BTYPE)
- {
- /* set sector offsets for bottom boot block type */
- for (i = 0; i < info->sector_count; i++)
- {
- info->start[i] = base + (i * 0x00040000);
- }
- }
- else
- {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- for (; i >= 0; i--)
- {
- info->start[i] = base + i * 0x00040000;
- }
- }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
-
-#if 0
- case FLASH_AM040B:
- printf ("AM29F040B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM040T:
- printf ("AM29F040T (4 Mbit, top boot sect)\n");
- break;
-#endif
- case FLASH_AM400B:
- printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T:
- printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B:
- printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T:
- printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B:
- printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T:
- printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B:
- printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i)
- {
- if ((i % 5) == 0)
- {
- printf ("\n ");
- }
-
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
-
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
-#if 0
- ulong base = (ulong)addr;
-#endif
- ulong value;
-
- /* Write auto select command: read Manufacturer ID */
-#if 0
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-#else
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x90909090;
-#endif
-
- value = addr[0];
-
- switch (value)
- {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- value = addr[1]; /* device ID */
-
- switch (value)
- {
-#if 0
- case AMD_ID_F040B:
- info->flash_id += FLASH_AM040B;
- info->sector_count = 8;
- info->size = 0x00200000;
- break; /* => 2 MB */
-#endif
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
-#if 0
- /* set up sector start adress table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-#else
- flash_get_offsets ((ulong)addr, &flash_info[0]);
-#endif
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++)
- {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN)
- {
- addr = (volatile unsigned long *)info->start[0];
-#if 0
- *addr = 0x00F000F0; /* reset bank */
-#else
- *addr = 0xF0F0F0F0; /* reset bank */
-#endif
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
-#if 0
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-#else
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x80808080;
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
-#endif
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
-#if 0
- addr[0] = 0x00300030;
-#else
- addr[0] = 0x30303030;
-#endif
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
-#if 0
- while ((addr[0] & 0x00800080) != 0x00800080)
-#else
- while ((addr[0] & 0xFFFFFFFF) != 0xFFFFFFFF)
-#endif
- {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
-#if 0
- addr[0] = 0x00F000F0; /* reset bank */
-#else
- addr[0] = 0xF0F0F0F0; /* reset bank */
-#endif
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
-#if 0
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-#else
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0xA0A0A0A0;
-#endif
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
-#if 0
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080))
-#else
- while ((*((vu_long *)dest) & 0x80808080) != (data & 0x80808080))
-#endif
- {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/gth/gth.c b/board/gth/gth.c
deleted file mode 100644
index b1fcbf5cc3..0000000000
--- a/board/gth/gth.c
+++ /dev/null
@@ -1,595 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Adapted from FADS and other board config files to GTH by thomas@corelatus.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
- */
-
-#include <common.h>
-#include <config.h>
-#include <watchdog.h>
-#include <mpc8xx.h>
-#include "ee_access.h"
-#include "ee_dev.h"
-
-#ifdef CONFIG_BDM
-#undef printf
-#define printf(a,...) /* nothing */
-#endif
-
-
-int checkboard (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- int Id = 0;
- int Rev = 0;
- u32 Pbdat;
-
- puts ("Board: ");
-
- /* Turn on leds and setup for reading rev and id */
-
-#define PB_OUTS (PB_BLUE_LED|PB_ID_GND)
-#define PB_INS (PB_ID_0|PB_ID_1|PB_ID_2|PB_ID_3|PB_REV_1|PB_REV_0)
-
- immap->im_cpm.cp_pbpar &= ~(PB_OUTS | PB_INS);
-
- immap->im_cpm.cp_pbdir &= ~PB_INS;
-
- immap->im_cpm.cp_pbdir |= PB_OUTS;
- immap->im_cpm.cp_pbodr |= PB_OUTS;
- immap->im_cpm.cp_pbdat &= ~PB_OUTS;
-
- /* Hold 100 Mbit in reset until fpga is loaded */
- immap->im_ioport.iop_pcpar &= ~PC_ENET100_RESET;
- immap->im_ioport.iop_pcdir |= PC_ENET100_RESET;
- immap->im_ioport.iop_pcso &= ~PC_ENET100_RESET;
- immap->im_ioport.iop_pcdat &= ~PC_ENET100_RESET;
-
- /* Turn on front led to show that we are alive */
- immap->im_ioport.iop_papar &= ~PA_FRONT_LED;
- immap->im_ioport.iop_padir |= PA_FRONT_LED;
- immap->im_ioport.iop_paodr |= PA_FRONT_LED;
- immap->im_ioport.iop_padat &= ~PA_FRONT_LED;
-
- Pbdat = immap->im_cpm.cp_pbdat;
-
- if (!(Pbdat & PB_ID_0))
- Id += 1;
- if (!(Pbdat & PB_ID_1))
- Id += 2;
- if (!(Pbdat & PB_ID_2))
- Id += 4;
- if (!(Pbdat & PB_ID_3))
- Id += 8;
-
- if (Pbdat & PB_REV_0)
- Rev += 1;
- if (Pbdat & PB_REV_1)
- Rev += 2;
-
- /* Turn ID off since we dont need it anymore */
- immap->im_cpm.cp_pbdat |= PB_ID_GND;
-
- printf ("GTH board, rev %d, id=0x%01x\n", Rev, Id);
- return 0;
-}
-
-#define _NOT_USED_ 0xffffffff
-const uint sdram_table[] = {
- /* Single read, offset 0 */
- 0x0f3dfc04, 0x0eefbc04, 0x01bf7c04, 0x0feafc00,
- 0x1fb5fc45, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* Burst read, Offset 0x8, 4 reads */
- 0x0f3dfc04, 0x0eefbc04, 0x00bf7c04, 0x00ffec00,
- 0x00fffc00, 0x01eafc00, 0x1fb5fc00, 0xfffffc45,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* Not used part of burst read is used for MRS, Offset 0x14 */
- 0xefeabc34, 0x1fb57c34, 0xfffffc05, _NOT_USED_,
- /* _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, */
-
- /* Single write, Offset 0x18 */
- 0x0f3dfc04, 0x0eebbc00, 0x01a27c04, 0x1fb5fc45,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* Burst write, Offset 0x20. 4 writes */
- 0x0f3dfc04, 0x0eebbc00, 0x00b77c00, 0x00fffc00,
- 0x00fffc00, 0x01eafc04, 0x1fb5fc45, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* Not used part of burst write is used for precharge, Offset 0x2C */
- 0x0ff5fc04, 0xfffffc05, _NOT_USED_, _NOT_USED_,
- /* _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, */
-
- /* Period timer service. Offset 0x30. Refresh. Wait at least 70 ns after refresh command */
- 0x1ffd7c04, 0xfffffc04, 0xfffffc04, 0xfffffc05,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* Exception, Offset 0x3C */
- 0xfffffc04, 0xfffffc05, _NOT_USED_, _NOT_USED_
-};
-
-const uint fpga_table[] = {
- /* Single read, offset 0 */
- 0x0cffec04, 0x00ffec04, 0x00ffec04, 0x00ffec04,
- 0x00fffc04, 0x00fffc00, 0x00ffec04, 0xffffec05,
-
- /* Burst read, Offset 0x8 */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* Single write, Offset 0x18 */
- 0x0cffec04, 0x00ffec04, 0x00ffec04, 0x00ffec04,
- 0x00fffc04, 0x00fffc00, 0x00ffec04, 0xffffec05,
-
- /* Burst write, Offset 0x20. */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* Period timer service. Offset 0x30. */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* Exception, Offset 0x3C */
- 0xfffffc04, 0xfffffc05, _NOT_USED_, _NOT_USED_
-};
-
-int _initsdram (uint base, uint * noMbytes)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *mc = &immap->im_memctl;
- volatile u32 *memptr;
-
- mc->memc_mptpr = MPTPR_PTP_DIV16; /* (16-17) */
-
- /* SDRAM in UPMA
-
- GPL_0 is connected instead of A19 to SDRAM.
- According to table 16-17, AMx should be 001, i.e. type 1
- and GPL_0 should hold address A10 when multiplexing */
-
- mc->memc_mamr = (0x2E << MAMR_PTA_SHIFT) | MAMR_PTAE | MAMR_AMA_TYPE_1 | MAMR_G0CLA_A10 | MAMR_RLFA_1X | MAMR_WLFA_1X | MAMR_TLFA_1X; /* (16-13) */
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /* Perform init of sdram ( Datasheet Page 9 )
- Precharge */
- mc->memc_mcr = 0x8000212C; /* run upm a at 0x2C (16-15) */
-
- /* Run 2 refresh cycles */
- mc->memc_mcr = 0x80002130; /* run upm a at 0x30 (16-15) */
- mc->memc_mcr = 0x80002130; /* run upm a at 0x30 (16-15) */
-
- /* Set Mode register */
- mc->memc_mar = 0x00000088; /* set mode register (address) to 0x022 (16-17) */
- /* Lower 2 bits are not connected to chip */
- mc->memc_mcr = 0x80002114; /* run upm a at 0x14 (16-15) */
-
- /* CS1, base 0x0000000 - 64 Mbyte, use UPM A */
- mc->memc_or1 = 0xfc000000 | OR_CSNT_SAM;
- mc->memc_br1 = BR_MS_UPMA | BR_V; /* SDRAM base always 0 */
-
- /* Test if we really have 64 MB SDRAM */
- memptr = (u32 *) 0;
- *memptr = 0;
-
- memptr = (u32 *) 0x2000000; /* First u32 in upper 32 MB */
- *memptr = 0x12345678;
-
- memptr = (u32 *) 0;
- if (*memptr == 0x12345678) {
- /* Wrapped, only have 32 MB */
- mc->memc_or1 = 0xfe000000 | OR_CSNT_SAM;
- *noMbytes = 32;
- } else {
- /* 64 MB */
- *noMbytes = 64;
- }
-
- /* Setup FPGA in UPMB */
- upmconfig (UPMB, (uint *) fpga_table,
- sizeof (fpga_table) / sizeof (uint));
-
- /* Enable UPWAITB */
- mc->memc_mbmr = MBMR_GPL_B4DIS; /* (16-13) */
-
- /* CS2, base FPGA_2_BASE - 4 MByte, use UPM B 32 Bit */
- mc->memc_or2 = 0xffc00000 | OR_BI;
- mc->memc_br2 = FPGA_2_BASE | BR_MS_UPMB | BR_V;
-
- /* CS3, base FPGA_3_BASE - 4 MByte, use UPM B 16 bit */
- mc->memc_or3 = 0xffc00000 | OR_BI;
- mc->memc_br3 = FPGA_3_BASE | BR_MS_UPMB | BR_V | BR_PS_16;
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-void _sdramdisable (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_br1 = 0x00000000;
-
- /* maybe we should turn off upmb here or something */
-}
-
-/* ------------------------------------------------------------------------- */
-
-int initsdram (uint base, uint * noMbytes)
-{
- *noMbytes = 32;
-
-#ifdef CONFIG_START_IN_RAM
- /* SDRAM is already setup. Dont touch it */
- return 0;
-#else
-
- if (!_initsdram (base, noMbytes)) {
-
- return 0;
- } else {
- _sdramdisable ();
-
- return -1;
- }
-#endif
-}
-
-long int initdram (int board_type)
-{
- u32 *i;
- u32 j;
- u32 k;
-
- /* GTH only have SDRAM */
- uint sdramsz;
-
- if (!initsdram (0x00000000, &sdramsz)) {
- printf ("(%u MB SDRAM) ", sdramsz);
- } else {
- /********************************
- *SDRAM ERROR, HALT PROCESSOR
- *********************************/
- printf ("SDRAM ERROR\n");
- while (1);
- }
-
-#ifndef CONFIG_START_IN_RAM
-
-#define U32_S ((sdramsz<<18)-1)
-
-#if 1
- /* Do a simple memory test */
- for (i = (u32 *) 0, j = 0; (u32) i < U32_S; i += 2, j += 2) {
- *i = j + (j << 17);
- *(i + 1) = ~(j + (j << 18));
- }
-
- WATCHDOG_RESET ();
-
- printf (".");
-
- for (i = (u32 *) 0, j = 0; (u32) i < U32_S; i += 2, j += 2) {
- k = *i;
- if (k != (j + (j << 17))) {
- printf ("Mem test error, i=0x%x, 0x%x\n, 0x%x", (u32) i, j, k);
- while (1);
- }
- k = *(i + 1);
- if (k != ~(j + (j << 18))) {
- printf ("Mem test error(+1), i=0x%x, 0x%x\n, 0x%x",
- (u32) i + 1, j, k);
- while (1);
- }
- }
-#endif
-
- WATCHDOG_RESET ();
-
- /* Clear memory */
- for (i = (u32 *) 0; (u32) i < U32_S; i++) {
- *i = 0;
- }
-#endif /* !start in ram */
-
- WATCHDOG_RESET ();
-
- return (sdramsz << 20);
-}
-
-#define POWER_OFFSET 0xF0000
-#define SW_WATCHDOG_REASON 13
-
-#define BOOTDATA_OFFSET 0xF8000
-#define MAX_ATTEMPTS 5
-
-#define FAILSAFE_BOOT 1
-#define SYSTEM_BOOT 2
-
-#define WRITE_FLASH16(a, d) \
-do \
-{ \
- *((volatile u16 *) (a)) = (d);\
- } while(0)
-
-static void write_bootdata (volatile u16 * addr, u8 System, u8 Count)
-{
- u16 data;
- volatile u16 *flash = (u16 *) (CFG_FLASH_BASE);
-
- if ((System != FAILSAFE_BOOT) & (System != SYSTEM_BOOT)) {
- printf ("Invalid system data %u, setting failsafe\n", System);
- System = FAILSAFE_BOOT;
- }
-
- if ((Count < 1) | (Count > MAX_ATTEMPTS)) {
- printf ("Invalid boot count %u, setting 1\n", Count);
- Count = 1;
- }
-
- if (System == FAILSAFE_BOOT) {
- printf ("Setting failsafe boot in flash\n");
- } else {
- printf ("Setting system boot in flash\n");
- }
- printf ("Boot attempt %d\n", Count);
-
- data = (System << 8) | Count;
- /* AMD 16 bit */
- WRITE_FLASH16 (&flash[0x555], 0xAAAA);
- WRITE_FLASH16 (&flash[0x2AA], 0x5555);
- WRITE_FLASH16 (&flash[0x555], 0xA0A0);
-
- WRITE_FLASH16 (addr, data);
-}
-
-static void maybe_update_restart_reason (volatile u32 * addr32)
-{
- /* Update addr if sw wd restart */
- volatile u16 *flash = (u16 *) (CFG_FLASH_BASE);
- volatile u16 *addr_16 = (u16 *) addr32;
- u32 rsr;
-
- /* Dont reset register now */
- rsr = ((volatile immap_t *) CFG_IMMR)->im_clkrst.car_rsr;
-
- rsr >>= 24;
-
- if (rsr & 0x10) {
- /* Was really a sw wd restart, update reason */
-
- printf ("Last restart by software watchdog\n");
-
- /* AMD 16 bit */
- WRITE_FLASH16 (&flash[0x555], 0xAAAA);
- WRITE_FLASH16 (&flash[0x2AA], 0x5555);
- WRITE_FLASH16 (&flash[0x555], 0xA0A0);
-
- WRITE_FLASH16 (addr_16, 0);
-
- udelay (1000);
-
- WATCHDOG_RESET ();
-
- /* AMD 16 bit */
- WRITE_FLASH16 (&flash[0x555], 0xAAAA);
- WRITE_FLASH16 (&flash[0x2AA], 0x5555);
- WRITE_FLASH16 (&flash[0x555], 0xA0A0);
-
- WRITE_FLASH16 (addr_16 + 1, SW_WATCHDOG_REASON);
-
- }
-}
-
-static void check_restart_reason (void)
-{
- /* Update restart reason if sw watchdog was
- triggered */
-
- int i;
- volatile u32 *raddr;
-
- raddr = (u32 *) (CFG_FLASH_BASE + POWER_OFFSET);
-
- if (*raddr == 0xFFFFFFFF) {
- /* Nothing written */
- maybe_update_restart_reason (raddr);
- } else {
- /* Search for latest written reason */
- i = 0;
- while ((*(raddr + 2) != 0xFFFFFFFF) & (i < 2000)) {
- raddr += 2;
- i++;
- }
- if (i >= 2000) {
- /* Whoa, dont write any more */
- printf ("*** No free restart reason found ***\n");
- } else {
- /* Check if written */
- if (*raddr == 0) {
- /* Erased by kernel, no new reason written */
- maybe_update_restart_reason (raddr + 2);
- }
- }
- }
-}
-
-static void check_boot_tries (void)
-{
- /* Count the number of boot attemps
- switch system if too many */
-
- int i;
- volatile u16 *addr;
- volatile u16 data;
- int failsafe = 1;
- u8 system;
- u8 count;
-
- addr = (u16 *) (CFG_FLASH_BASE + BOOTDATA_OFFSET);
-
- if (*addr == 0xFFFF) {
- printf ("*** No bootdata exists. ***\n");
- write_bootdata (addr, FAILSAFE_BOOT, 1);
- } else {
- /* Search for latest written bootdata */
- i = 0;
- while ((*(addr + 1) != 0xFFFF) & (i < 8000)) {
- addr++;
- i++;
- }
- if (i >= 8000) {
- /* Whoa, dont write any more */
- printf ("*** No bootdata found. Not updating flash***\n");
- } else {
- /* See how many times we have tried to boot real system */
- data = *addr;
- system = data >> 8;
- count = data & 0xFF;
- if ((system != SYSTEM_BOOT) & (system != FAILSAFE_BOOT)) {
- printf ("*** Wrong system %d\n", system);
- system = FAILSAFE_BOOT;
- count = 1;
- } else {
- switch (count) {
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- /* Try same system again if needed */
- count++;
- break;
-
- case 5:
- /* Switch system and reset tries */
- count = 1;
- system = 3 - system;
- printf ("***Too many boot attempts, switching system***\n");
- break;
- default:
- /* Switch system, start over and hope it works */
- printf ("***Unexpected data on addr 0x%x, %u***\n",
- (u32) addr, data);
- count = 1;
- system = 3 - system;
- }
- }
- write_bootdata (addr + 1, system, count);
- if (system == SYSTEM_BOOT) {
- failsafe = 0;
- }
- }
- }
- if (failsafe) {
- printf ("Booting failsafe system\n");
- setenv ("bootargs", "panic=1 root=/dev/hda7");
- setenv ("bootcmd", "disk 100000 0:5;bootm 100000");
- } else {
- printf ("Using normal system\n");
- setenv ("bootargs", "panic=1 root=/dev/hda4");
- setenv ("bootcmd", "disk 100000 0:2;bootm 100000");
- }
-}
-
-int misc_init_r (void)
-{
- u8 Rx[80];
- u8 Tx[5];
- int page;
- int read = 0;
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
-
- /* Kill fpga */
- immap->im_ioport.iop_papar &= ~(PA_FL_CONFIG | PA_FL_CE);
- immap->im_ioport.iop_padir |= (PA_FL_CONFIG | PA_FL_CE);
- immap->im_ioport.iop_paodr &= ~(PA_FL_CONFIG | PA_FL_CE);
-
- /* Enable fpga, active low */
- immap->im_ioport.iop_padat &= ~PA_FL_CE;
-
- /* Start configuration */
- immap->im_ioport.iop_padat &= ~PA_FL_CONFIG;
- udelay (2);
-
- immap->im_ioport.iop_padat |= (PA_FL_CONFIG | PA_FL_CE);
-
- /* Check if we need to boot failsafe system */
- check_boot_tries ();
-
- /* Check if we need to update restart reason */
- check_restart_reason ();
-
- if (ee_init_data ()) {
- printf ("EEPROM init failed\n");
- return (0);
- }
-
- /* Read the pages where ethernet address is stored */
-
- for (page = EE_USER_PAGE_0; page <= EE_USER_PAGE_0 + 2; page++) {
- /* Copy from nvram to scratchpad */
- Tx[0] = RECALL_MEMORY;
- Tx[1] = page;
- if (ee_do_command (Tx, 2, NULL, 0, TRUE)) {
- printf ("EE user page %d recall failed\n", page);
- return (0);
- }
-
- Tx[0] = READ_SCRATCHPAD;
- if (ee_do_command (Tx, 2, Rx + read, 9, TRUE)) {
- printf ("EE user page %d read failed\n", page);
- return (0);
- }
- /* Crc in 9:th byte */
- if (!ee_crc_ok (Rx + read, 8, *(Rx + read + 8))) {
- printf ("EE read failed, page %d. CRC error\n", page);
- return (0);
- }
- read += 8;
- }
-
- /* Add eos after eth addr */
- Rx[17] = 0;
-
- printf ("Ethernet addr read from eeprom: %s\n\n", Rx);
-
- if ((Rx[2] != ':') |
- (Rx[5] != ':') |
- (Rx[8] != ':') | (Rx[11] != ':') | (Rx[14] != ':')) {
- printf ("*** ethernet addr invalid, using default ***\n");
- } else {
- setenv ("ethaddr", (char *)Rx);
- }
- return (0);
-}
diff --git a/board/gth/pcmcia.c b/board/gth/pcmcia.c
deleted file mode 100644
index fce5492635..0000000000
--- a/board/gth/pcmcia.c
+++ /dev/null
@@ -1,93 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#undef CONFIG_PCMCIA
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-#define CONFIG_PCMCIA
-#endif
-
-#if (CONFIG_COMMANDS & CFG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-#define PCMCIA_BOARD_MSG "GTH COMPACT FLASH"
-
-int pcmcia_voltage_set (int slot, int vcc, int vpp)
-{ /* Do nothing */
- return 0;
-}
-
-int pcmcia_hardware_enable (int slot)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- volatile sysconf8xx_t *sysp;
- uint reg, mask;
-
- debug ("hardware_enable: GTH Slot %c\n", 'A' + slot);
-
- immap = (immap_t *) CFG_IMMR;
- sysp = (sysconf8xx_t *) (&(((immap_t *) CFG_IMMR)->im_siu_conf));
- pcmp = (pcmconf8xx_t *) (&(((immap_t *) CFG_IMMR)->im_pcmcia));
- cp = (cpm8xx_t *) (&(((immap_t *) CFG_IMMR)->im_cpm));
-
- /* clear interrupt state, and disable interrupts */
- pcmp->pcmc_pscr = PCMCIA_MASK (_slot_);
- pcmp->pcmc_per &= ~PCMCIA_MASK (_slot_);
-
- /*
- * Disable interrupts, DMA, and PCMCIA buffers
- * (isolate the interface) and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX (_slot_) = reg;
- udelay (500);
-
- /*
- * Make sure there is a card in the slot,
- * then configure the interface.
- */
- udelay (10000);
- debug ("[%d] %s: PIPR(%p)=0x%x\n",
- __LINE__, __FUNCTION__,
- &(pcmp->pcmc_pipr), pcmp->pcmc_pipr);
- if (pcmp->pcmc_pipr & 0x98000000) {
- printf (" No Card found\n");
- return (1);
- }
-
- mask = PCMCIA_VS1 (slot) | PCMCIA_VS2 (slot);
- reg = pcmp->pcmc_pipr;
- debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",
- reg,
- (reg & PCMCIA_VS1 (slot)) ? "n" : "ff",
- (reg & PCMCIA_VS2 (slot)) ? "n" : "ff");
-
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX (_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX (_slot_) = reg;
-
- udelay (250000); /* some cards need >150 ms to come up :-( */
-
- debug ("# hardware_enable done\n");
-
- return 0;
-}
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
- return 0; /* No hardware to disable */
-}
-#endif
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/gth/u-boot.lds b/board/gth/u-boot.lds
deleted file mode 100644
index 8ac4bdad07..0000000000
--- a/board/gth/u-boot.lds
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * (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
- */
-
-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)
- common/environment.o(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/gth2/Makefile b/board/gth2/Makefile
deleted file mode 100644
index 097ffec35c..0000000000
--- a/board/gth2/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# (C) Copyright 2005-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ee_access.o
-SOBJS = lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/gth2/config.mk b/board/gth2/config.mk
deleted file mode 100644
index 2bc1338e3e..0000000000
--- a/board/gth2/config.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# (C) Copyright 2004-2005
-# 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
-#
-
-#
-# AMD Alchemy AU1000, MIPS32 core
-#
-
-ifeq ($(TBASE),0)
-TEXT_BASE = 0
-else
-ifeq ($(TBASE),1)
-TEXT_BASE = 0xbfc10070
-else
-ifeq ($(TBASE),2)
-TEXT_BASE = 0xbfc30070
-else
-## Only to make ordinary make work
-TEXT_BASE = 0x90000000
-endif
-endif
-endif
diff --git a/board/gth2/ee_access.c b/board/gth2/ee_access.c
deleted file mode 100644
index d4798c4ba3..0000000000
--- a/board/gth2/ee_access.c
+++ /dev/null
@@ -1,347 +0,0 @@
-/* Module for handling DALLAS DS2438, smart battery monitor
- Chip can store up to 40 bytes of user data in EEPROM,
- perform temp, voltage and current measurements.
- Chip also contains a unique serial number.
-
- Always read/write LSb first
-
- For documentaion, see data sheet for DS2438, 2438.pdf
-
- By Thomas.Lange@corelatus.com 001025
-
- Copyright (C) 2000-2005 Corelatus AB */
-
-/* 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 <common.h>
-#include <command.h>
-#include <asm/au1x00.h>
-#include <asm/io.h>
-#include "ee_dev.h"
-#include "ee_access.h"
-
-/* static int Debug = 1; */
-#undef E_DEBUG
-#define E_DEBUG(fmt,args...) /* */
-/* #define E_DEBUG(fmt,args...) printk("EEA:"fmt,##args); */
-
-/* We dont have kernel functions */
-#define printk printf
-#define KERN_DEBUG
-#define KERN_ERR
-#define EIO 1
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-/* lookup table ripped from DS app note 17, understanding and using cyclic redundancy checks... */
-
-static u8 crc_lookup[256] = {
- 0, 94, 188, 226, 97, 63, 221, 131,
- 194, 156, 126, 32, 163, 253, 31, 65,
- 157, 195, 33, 127, 252, 162, 64, 30,
- 95, 1, 227, 189, 62, 96, 130, 220,
- 35, 125, 159, 193, 66, 28, 254, 160,
- 225, 191, 93, 3, 128, 222, 60, 98,
- 190, 224, 2, 92, 223, 129, 99, 61,
- 124, 34, 192, 158, 29, 67, 161, 255,
- 70, 24, 250, 164, 39, 121, 155, 197,
- 132, 218, 56, 102, 229, 187, 89, 7,
- 219, 133, 103, 57, 186, 228, 6, 88,
- 25, 71, 165, 251, 120, 38, 196, 154,
- 101, 59, 217, 135, 4, 90, 184, 230,
- 167, 249, 27, 69, 198, 152, 122, 36,
- 248, 166, 68, 26, 153, 199, 37, 123,
- 58, 100, 134, 216, 91, 5, 231, 185,
- 140, 210, 48, 110, 237, 179, 81, 15,
- 78, 16, 242, 172, 47, 113, 147, 205,
- 17, 79, 173, 243, 112, 46, 204, 146,
- 211, 141, 111, 49, 178, 236, 14, 80,
- 175, 241, 19, 77, 206, 144, 114, 44,
- 109, 51, 209, 143, 12, 82, 176, 238,
- 50, 108, 142, 208, 83, 13, 239, 177,
- 240, 174, 76, 18, 145, 207, 45, 115,
- 202, 148, 118, 40, 171, 245, 23, 73,
- 8, 86, 180, 234, 105, 55, 213, 139,
- 87, 9, 235, 181, 54, 104, 138, 212,
- 149, 203, 41, 119, 244, 170, 72, 22,
- 233, 183, 85, 11, 136, 214, 52, 106,
- 43, 117, 151, 201, 74, 20, 246, 168,
- 116, 42, 200, 150, 21, 75, 169, 247,
- 182, 232, 10, 84, 215, 137, 107, 53
-};
-
-static void
-write_gpio_data(int value ){
- if(value){
- /* Tristate */
- gpio_tristate(GPIO_EEDQ);
- }
- else{
- /* Drive 0 */
- gpio_clear(GPIO_EEDQ);
- }
-}
-
-static u8 make_new_crc( u8 Old_crc, u8 New_value ){
- /* Compute a new checksum with new byte, using previous checksum as input
- See DS app note 17, understanding and using cyclic redundancy checks...
- Also see DS2438, page 11 */
- return( crc_lookup[Old_crc ^ New_value ]);
-}
-
-int ee_crc_ok( u8 *Buffer, int Len, u8 Crc ){
- /* Check if the checksum for this buffer is correct */
- u8 Curr_crc=0;
- int i;
- u8 *Curr_byte = Buffer;
-
- for(i=0;i<Len;i++){
- Curr_crc = make_new_crc( Curr_crc, *Curr_byte);
- Curr_byte++;
- }
- E_DEBUG("Calculated CRC = 0x%x, read = 0x%x\n", Curr_crc, Crc);
-
- if(Curr_crc == Crc){
- /* Good */
- return(TRUE);
- }
- printk(KERN_ERR"EE checksum error, Calculated CRC = 0x%x, read = 0x%x\n", Curr_crc, Crc);
- return(FALSE);
-}
-
-static void
-set_idle(void){
- /* Send idle and keep start time
- Continous 1 is idle */
- WRITE_PORT(1);
-}
-
-
-static int
-do_cpu_reset(void){
- /* Release reset and verify that chip responds with presence pulse */
- int Retries=0;
- while(Retries<15){
- udelay(RESET_LOW_TIME);
-
- /* Send reset */
- WRITE_PORT(0);
- udelay(RESET_LOW_TIME);
-
- /* Release reset */
- WRITE_PORT(1);
-
- /* Wait for EEPROM to drive output */
- udelay(PRESENCE_TIMEOUT);
- if(!READ_PORT){
- /* Ok, EEPROM is driving a 0 */
- E_DEBUG("Presence detected\n");
- if(Retries){
- E_DEBUG("Retries %d\n",Retries);
- }
- /* Make sure chip releases pin */
- udelay(PRESENCE_LOW_TIME);
- return 0;
- }
- Retries++;
- }
-
- printk(KERN_ERR"eeprom did not respond when releasing reset\n");
-
- /* Make sure chip releases pin */
- udelay(PRESENCE_LOW_TIME);
-
- /* Set to idle again */
- set_idle();
-
- return(-EIO);
-}
-
-static u8
-read_cpu_byte(void){
- /* Read a single byte from EEPROM
- Read LSb first */
- int i;
- int Value;
- u8 Result=0;
- u32 Flags;
-
- E_DEBUG("Reading byte\n");
-
- for(i=0;i<8;i++){
- /* Small delay between pulses */
- udelay(1);
-
-#ifdef __KERNEL__
- /* Disable irq */
- save_flags(Flags);
- cli();
-#endif
-
- /* Pull down pin short time to start read
- See page 26 in data sheet */
-
- WRITE_PORT(0);
- udelay(READ_LOW);
- WRITE_PORT(1);
-
- /* Wait for chip to drive pin */
- udelay(READ_TIMEOUT);
-
- Value = READ_PORT;
- if(Value)
- Value=1;
-
-#ifdef __KERNEL__
- /* Enable irq */
- restore_flags(Flags);
-#endif
-
- /* Wait for chip to release pin */
- udelay(TOTAL_READ_LOW-READ_TIMEOUT);
-
- /* LSb first */
- Result|=Value<<i;
- /* E_DEBUG("Read %d\n",Value); */
-
- }
-
- E_DEBUG("Read byte 0x%x\n",Result);
-
- return(Result);
-}
-
-static void
-write_cpu_byte(u8 Byte){
- /* Write a single byte to EEPROM
- Write LSb first */
- int i;
- int Value;
- u32 Flags;
-
- E_DEBUG("Writing byte 0x%x\n",Byte);
-
- for(i=0;i<8;i++){
- /* Small delay between pulses */
- udelay(1);
- Value = Byte&1;
-
-#ifdef __KERNEL__
- /* Disable irq */
- save_flags(Flags);
- cli();
-#endif
-
- /* Pull down pin short time for a 1, long time for a 0
- See page 26 in data sheet */
-
- WRITE_PORT(0);
- if(Value){
- /* Write a 1 */
- udelay(WRITE_1_LOW);
- }
- else{
- /* Write a 0 */
- udelay(WRITE_0_LOW);
- }
-
- WRITE_PORT(1);
-
-#ifdef __KERNEL__
- /* Enable irq */
- restore_flags(Flags);
-#endif
-
- if(Value)
- /* Wait for chip to read the 1 */
- udelay(TOTAL_WRITE_LOW-WRITE_1_LOW);
-
- /* E_DEBUG("Wrote %d\n",Value); */
- Byte>>=1;
- }
-}
-
-int ee_do_cpu_command( u8 *Tx, int Tx_len, u8 *Rx, int Rx_len, int Send_skip ){
- /* Execute this command string, including
- giving reset and setting to idle after command
- if Rx_len is set, we read out data from EEPROM */
- int i;
-
- E_DEBUG("Command, Tx_len %d, Rx_len %d\n", Tx_len, Rx_len );
-
- if(do_cpu_reset()){
- /* Failed! */
- return(-EIO);
- }
-
- if(Send_skip)
- /* Always send SKIP_ROM first to tell chip we are sending a command,
- except when we read out rom data for chip */
- write_cpu_byte(SKIP_ROM);
-
- /* Always have Tx data */
- for(i=0;i<Tx_len;i++){
- write_cpu_byte(Tx[i]);
- }
-
- if(Rx_len){
- for(i=0;i<Rx_len;i++){
- Rx[i]=read_cpu_byte();
- }
- }
-
- set_idle();
-
- E_DEBUG("Command done\n");
-
- return(0);
-}
-
-int ee_init_cpu_data(void){
- int i;
- u8 Tx[10];
-
- /* Leave it floting since altera is driving the same pin */
- set_idle();
-
- /* Copy all User EEPROM data to scratchpad */
- for(i=0;i<USER_PAGES;i++){
- Tx[0]=RECALL_MEMORY;
- Tx[1]=EE_USER_PAGE_0+i;
- if(ee_do_cpu_command(Tx,2,NULL,0,TRUE)) return(-EIO);
- }
-
- /* Make sure chip doesnt store measurements in NVRAM */
- Tx[0]=WRITE_SCRATCHPAD;
- Tx[1]=0; /* Page */
- Tx[2]=9;
- if(ee_do_cpu_command(Tx,3,NULL,0,TRUE)) return(-EIO);
-
- Tx[0]=COPY_SCRATCHPAD;
- if(ee_do_cpu_command(Tx,2,NULL,0,TRUE)) return(-EIO);
-
- for(i=0;i<10;i++){
- udelay(1000);
- }
-
- return(0);
-}
diff --git a/board/gth2/ee_access.h b/board/gth2/ee_access.h
deleted file mode 100644
index 926199de3c..0000000000
--- a/board/gth2/ee_access.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* By Thomas.Lange@Corelatus.com 001025 */
-
-/* Definitions for EEPROM/VOLT METER DS2438 */
-/* Copyright (C) 2000-2005 Corelatus AB */
-
-#ifndef INCeeaccessh
-#define INCeeaccessh
-
-#include <asm/types.h>
-#include "ee_dev.h"
-
-int ee_do_cpu_command( u8 *Tx, int Tx_len, u8 *Rx, int Rx_len, int Send_skip );
-int ee_init_cpu_data(void);
-
-int ee_crc_ok( u8 *Buffer, int Len, u8 Crc );
-
-/* Defs for altera reg */
-#define EE_WRITE_SHIFT 8 /* bits to shift left */
-#define EE_READ_SHIFT 16 /* bits to shift left */
-#define EE_DONE 0x80000000
-#define EE_BUSY 0x40000000
-#define EE_ERROR 0x20000000
-
-/* Commands */
-#define EE_CMD_NOP 0
-#define EE_CMD_INIT_RES 1
-#define EE_CMD_WR_BYTE 2
-#define EE_CMD_RD_BYTE 3
-
-#endif /* INCeeaccessh */
diff --git a/board/gth2/ee_dev.h b/board/gth2/ee_dev.h
deleted file mode 100644
index 89ef2f82c8..0000000000
--- a/board/gth2/ee_dev.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* By Thomas.Lange@Corelatus.com 001025 */
-/* Definitions for EEPROM/VOLT METER DS2438 */
-/* Copyright (C) 2000-2005 Corelatus AB */
-
-/* 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 INCeedevh
-#define INCeedevh
-
-#define E_DEBUG(fmt,args...) if( Debug ) printk(KERN_DEBUG"EE: " fmt, ##args)
-
-/* MIPS */
-#define WRITE_PORT(Value) write_gpio_data(Value)
-
-#define READ_PORT (gpio_read()&GPIO_EEDQ)
-
-/* 64 bytes chip */
-#define EE_CHIP_SIZE 64
-
-/* Board with new current resistor */
-#define EE_GTH_0304 1
-
-/* new dsp and 64 MB SDRAM */
-#define EE_DSP_64 0x10
-
-/* 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 60
-#define WRITE_1_LOW 1
-#define TOTAL_WRITE_LOW 60
-
-#define READ_LOW 1
-#define READ_TIMEOUT 10
-#define TOTAL_READ_LOW 70
-
-/* 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
-
-/* Layout of gth user pages usage */
-/* Bytes 0-16 ethernet addr in ascii ( len 17 ) */
-
-#define EE_ETHERNET_OFFSET 0
-
-#endif /* INCeedevh */
diff --git a/board/gth2/flash.c b/board/gth2/flash.c
deleted file mode 100644
index f96edffa2d..0000000000
--- a/board/gth2/flash.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * (C) Copyright 2005
- * 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 <common.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- printf ("Skipping flash_init\n");
- return (0);
-}
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- printf ("write_buff not implemented\n");
- return (-1);
-}
diff --git a/board/gth2/gth2.c b/board/gth2/gth2.c
deleted file mode 100644
index ffeaf587b5..0000000000
--- a/board/gth2/gth2.c
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * (C) Copyright 2005
- * Thomas.Lange@corelatus.se
- *
- * 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 <common.h>
-#include <command.h>
-#include <asm/au1x00.h>
-#include <asm/addrspace.h>
-#include <asm/mipsregs.h>
-#include <watchdog.h>
-
-#include "ee_access.h"
-
-static int wdi_status = 0;
-
-unsigned long mips_io_port_base = 0;
-
-#define SDRAM_SIZE ((64*1024*1024)-(12*4096))
-
-
-#define SERIAL_LOG_BUFFER KSEG1ADDR(SDRAM_SIZE + (8*4096))
-
-void inline log_serial_char(char c){
- char *serial_log_buffer = (char*)SERIAL_LOG_BUFFER;
- int serial_log_offset;
- u32 *serial_log_offsetp = (u32*)SERIAL_LOG_BUFFER;
-
- serial_log_offset = *serial_log_offsetp;
-
- *(serial_log_buffer + serial_log_offset) = c;
-
- serial_log_offset++;
-
- if(serial_log_offset >= 4096){
- serial_log_offset = 4;
- }
- *serial_log_offsetp = serial_log_offset;
-}
-
-void init_log_serial(void){
- char *serial_log_buffer = (char*)SERIAL_LOG_BUFFER;
- u32 *serial_log_offsetp = (u32*)SERIAL_LOG_BUFFER;
-
- /* Copy buffer from last run */
- memcpy(serial_log_buffer + 4096,
- serial_log_buffer,
- 4096);
-
- memset(serial_log_buffer, 0, 4096);
-
- *serial_log_offsetp = 4;
-}
-
-
-void hw_watchdog_reset(void){
- volatile u32 *sys_outputset = (volatile u32*)SYS_OUTPUTSET;
- volatile u32 *sys_outputclear = (volatile u32*)SYS_OUTPUTCLR;
- if(wdi_status){
- *sys_outputset = GPIO_CPU_LED|GPIO_WDI;
- wdi_status = 0;
- }
- else{
- *sys_outputclear = GPIO_CPU_LED|GPIO_WDI;
- wdi_status = 1;
- }
-}
-
-long int initdram(int board_type)
-{
- /* Sdram is setup by assembler code */
- /* If memory could be changed, we should return the true value here */
-
- WATCHDOG_RESET();
-
- return (SDRAM_SIZE);
-}
-
-/* In cpu/mips/cpu.c */
-void write_one_tlb( int index, u32 pagemask, u32 hi, u32 low0, u32 low1 );
-
-void set_ledcard(u32 value){
- /* Clock 24 bits to led card */
- int i;
- volatile u32 *sys_outputset = (volatile u32*)SYS_OUTPUTSET;
- volatile u32 *sys_outputclr = (volatile u32*)SYS_OUTPUTCLR;
-
- /* Start with known values */
- *sys_outputclr = GPIO_LEDCLK|GPIO_LEDD;
-
- for(i=0;i<24;i++){
- if(value&0x00800000){
- *sys_outputset = GPIO_LEDD;
- }
- else{
- *sys_outputclr = GPIO_LEDD;
- }
- udelay(1);
- *sys_outputset = GPIO_LEDCLK;
- udelay(1);
- *sys_outputclr = GPIO_LEDCLK;
- udelay(1);
-
- value<<=1;
- }
- /* Data is enable output */
- *sys_outputset = GPIO_LEDD;
-}
-
-int checkboard (void)
-{
- volatile u32 *sys_counter = (volatile u32*)SYS_COUNTER_CNTRL;
- volatile u32 *sys_outputset = (volatile u32*)SYS_OUTPUTSET;
- volatile u32 *sys_outputclr = (volatile u32*)SYS_OUTPUTCLR;
- u32 proc_id;
-
- WATCHDOG_RESET();
-
- *sys_counter = 0x100; /* Enable 32 kHz oscillator for RTC/TOY */
-
- proc_id = read_32bit_cp0_register(CP0_PRID);
-
- switch (proc_id >> 24) {
- case 0:
- puts ("Board: GTH2\n");
- printf ("CPU: Au1000 500 MHz, id: 0x%02x, rev: 0x%02x\n",
- (proc_id >> 8) & 0xFF, proc_id & 0xFF);
- break;
- default:
- printf ("Unsupported cpu %d, proc_id=0x%x\n", proc_id >> 24, proc_id);
- }
-#ifdef CONFIG_IDE_PCMCIA
- /* PCMCIA is on a 36 bit physical address.
- We need to map it into a 32 bit addresses */
- write_one_tlb(20, /* index */
- 0x01ffe000, /* Pagemask, 16 MB pages */
- CFG_PCMCIA_IO_BASE, /* Hi */
- 0x3C000017, /* Lo0 */
- 0x3C200017); /* Lo1 */
-
- write_one_tlb(21, /* index */
- 0x01ffe000, /* Pagemask, 16 MB pages */
- CFG_PCMCIA_ATTR_BASE, /* Hi */
- 0x3D000017, /* Lo0 */
- 0x3D200017); /* Lo1 */
-
- write_one_tlb(22, /* index */
- 0x01ffe000, /* Pagemask, 16 MB pages */
- CFG_PCMCIA_MEM_ADDR, /* Hi */
- 0x3E000017, /* Lo0 */
- 0x3E200017); /* Lo1 */
-
-#endif /* CONFIG_IDE_PCMCIA */
-
- /* Wait for GPIO ports to become stable */
- udelay(5000); /* FIXME */
-
- /* Release reset of ethernet PHY chips */
- /* Always do this, because linux does not know about it */
- *sys_outputset = GPIO_ERESET;
-
- /* Kill FPGA:s */
- *sys_outputclr = GPIO_CACONFIG|GPIO_DPACONFIG;
- udelay(2);
- *sys_outputset = GPIO_CACONFIG|GPIO_DPACONFIG;
-
- /* Turn front led yellow */
- set_ledcard(0x00100000);
-
- return 0;
-}
-
-#define POWER_OFFSET 0xF0000
-#define SW_WATCHDOG_REASON 13
-
-#define BOOTDATA_OFFSET 0xF8000
-#define MAX_ATTEMPTS 5
-
-#define FAILSAFE_BOOT 1
-#define SYSTEM_BOOT 2
-#define SYSTEM2_BOOT 3
-
-#define WRITE_FLASH16(a, d) \
-do \
-{ \
- *((volatile u16 *) (a)) = (d);\
- } while(0)
-
-static void write_bootdata (volatile u16 * addr, u8 System, u8 Count)
-{
- u16 data;
- volatile u16 *flash = (u16 *) (CFG_FLASH_BASE);
-
- switch(System){
- case FAILSAFE_BOOT:
- printf ("Setting failsafe boot in flash\n");
- break;
- case SYSTEM_BOOT:
- printf ("Setting system boot in flash\n");
- break;
- case SYSTEM2_BOOT:
- printf ("Setting system2 boot in flash\n");
- break;
- default:
- printf ("Invalid system data %u, setting failsafe\n", System);
- System = FAILSAFE_BOOT;
- }
-
- if ((Count < 1) | (Count > MAX_ATTEMPTS)) {
- printf ("Invalid boot count %u, setting 1\n", Count);
- Count = 1;
- }
-
- printf ("Boot attempt %d\n", Count);
-
- data = (System << 8) | Count;
- /* AMD 16 bit */
- WRITE_FLASH16 (&flash[0x555], 0xAAAA);
- WRITE_FLASH16 (&flash[0x2AA], 0x5555);
- WRITE_FLASH16 (&flash[0x555], 0xA0A0);
-
- WRITE_FLASH16 (addr, data);
-}
-
-static int random_system(void){
- /* EEPROM read failed. Just try to choose one
- system release and hope it works */
-
- /* FIXME */
- return(SYSTEM_BOOT);
-}
-
-static int switch_system(int old_system){
- u8 Rx[10];
- u8 Tx[5];
- int valid_release;
-
- if(old_system==FAILSAFE_BOOT){
- /* Find out which system release to use */
-
- /* Copy from nvram to scratchpad */
- Tx[0] = RECALL_MEMORY;
- Tx[1] = 7; /* Page */
- if (ee_do_cpu_command (Tx, 2, NULL, 0, 1)) {
- printf ("EE user page 7 recall failed\n");
- return (random_system());
- }
-
- Tx[0] = READ_SCRATCHPAD;
- if (ee_do_cpu_command (Tx, 2, Rx, 9, 1)) {
- printf ("EE user page 7 read failed\n");
- return (random_system());
- }
- /* Crc in 9:th byte */
- if (!ee_crc_ok (Rx, 8, *(Rx + 8))) {
- printf ("EE read failed, page 7. CRC error\n");
- return (random_system());
- }
-
- valid_release = Rx[7];
- if((valid_release==0xFF)|
- ((valid_release&1) == 0)){
- return(SYSTEM_BOOT);
- }
- else{
- return(SYSTEM2_BOOT);
- }
- }
- else{
- return(FAILSAFE_BOOT);
- }
-}
-
-static void check_boot_tries (void)
-{
- /* Count the number of boot attemps
- switch system if too many */
-
- int i;
- volatile u16 *addr;
- volatile u16 data;
- u8 system = FAILSAFE_BOOT;
- u8 count;
-
- addr = (u16 *) (CFG_FLASH_BASE + BOOTDATA_OFFSET);
-
- if (*addr == 0xFFFF) {
- printf ("*** No bootdata exists. ***\n");
- write_bootdata (addr, FAILSAFE_BOOT, 1);
- } else {
- /* Search for latest written bootdata */
- i = 0;
- while ((*(addr + 1) != 0xFFFF) & (i < 8000)) {
- addr++;
- i++;
- }
- if (i >= 8000) {
- /* Whoa, dont write any more */
- printf ("*** No bootdata found. Not updating flash***\n");
- } else {
- /* See how many times we have tried to boot real system */
- data = *addr;
- system = data >> 8;
- count = data & 0xFF;
- if ((system != SYSTEM_BOOT) &
- (system != SYSTEM2_BOOT) &
- (system != FAILSAFE_BOOT)) {
- printf ("*** Wrong system %d\n", system);
- system = FAILSAFE_BOOT;
- count = 1;
- } else {
- switch (count) {
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- /* Try same system again if needed */
- count++;
- break;
-
- case 5:
- /* Switch system and reset tries */
- count = 1;
- system = switch_system(system);
- printf ("***Too many boot attempts, switching system***\n");
- break;
- default:
- /* Switch system, start over and hope it works */
- printf ("***Unexpected data on addr 0x%x, %u***\n",
- (u32) addr, data);
- count = 1;
- system = switch_system(system);
- }
- }
- write_bootdata (addr + 1, system, count);
- }
- }
- switch(system){
- case FAILSAFE_BOOT:
- printf ("Booting failsafe system\n");
- setenv ("bootargs", "panic=1 root=/dev/hda7");
- setenv ("bootcmd", "ide reset;disk 0x81000000 0:5;run addmisc;bootm");
- break;
-
- case SYSTEM_BOOT:
- printf ("Using normal system\n");
- setenv ("bootargs", "panic=1 root=/dev/hda4");
- setenv ("bootcmd", "ide reset;disk 0x81000000 0:2;run addmisc;bootm");
- break;
-
- case SYSTEM2_BOOT:
- printf ("Using normal system2\n");
- setenv ("bootargs", "panic=1 root=/dev/hda9");
- setenv ("bootcmd", "ide reset;disk 0x81000000 0:8;run addmisc;bootm");
- break;
- default:
- printf ("Invalid system %d\n", system);
- printf ("Hanging\n");
- while(1);
- }
-}
-
-int misc_init_r(void){
- u8 Rx[80];
- u8 Tx[5];
- int page;
- int read = 0;
-
- WATCHDOG_RESET();
-
- if (ee_init_cpu_data ()) {
- printf ("EEPROM init failed\n");
- return (0);
- }
-
- /* Check which release to boot */
- check_boot_tries ();
-
- /* Read the pages where ethernet address is stored */
-
- for (page = EE_USER_PAGE_0; page <= EE_USER_PAGE_0 + 2; page++) {
- /* Copy from nvram to scratchpad */
- Tx[0] = RECALL_MEMORY;
- Tx[1] = page;
- if (ee_do_cpu_command (Tx, 2, NULL, 0, 1)) {
- printf ("EE user page %d recall failed\n", page);
- return (0);
- }
-
- Tx[0] = READ_SCRATCHPAD;
- if (ee_do_cpu_command (Tx, 2, Rx + read, 9, 1)) {
- printf ("EE user page %d read failed\n", page);
- return (0);
- }
- /* Crc in 9:th byte */
- if (!ee_crc_ok (Rx + read, 8, *(Rx + read + 8))) {
- printf ("EE read failed, page %d. CRC error\n", page);
- return (0);
- }
- read += 8;
- }
-
- /* Add eos after eth addr */
- Rx[17] = 0;
-
- printf ("Ethernet addr read from eeprom: %s\n\n", Rx);
-
- if ((Rx[2] != ':') |
- (Rx[5] != ':') |
- (Rx[8] != ':') | (Rx[11] != ':') | (Rx[14] != ':')) {
- printf ("*** ethernet addr invalid, using default ***\n");
- } else {
- setenv ("ethaddr", Rx);
- }
- return (0);
-}
diff --git a/board/gth2/lowlevel_init.S b/board/gth2/lowlevel_init.S
deleted file mode 100644
index 983ff704ac..0000000000
--- a/board/gth2/lowlevel_init.S
+++ /dev/null
@@ -1,454 +0,0 @@
-/* Memory sub-system initialization code */
-
-#include <config.h>
-#include <version.h>
-#include <asm/regdef.h>
-#include <asm/au1x00.h>
-#include <asm/mipsregs.h>
-
-#define CP0_Config0 $16
-#define MEM_1MS ((CFG_MHZ) * 1000)
-#define GPIO_RJ1LY (1<<22)
-#define GPIO_CFRESET (1<<10)
-
- .text
- .set noreorder
- .set mips32
-
- .globl lowlevel_init
-lowlevel_init:
- /*
- * Step 2) Establish Status Register
- * (set BEV, clear ERL, clear EXL, clear IE)
- */
- li t1, 0x00400000
- mtc0 t1, CP0_STATUS
-
- /*
- * Step 3) Establish CP0 Config0
- * (set OD, set K0=3)
- */
- li t1, 0x00080003
- mtc0 t1, CP0_CONFIG
-
- /*
- * Step 4) Disable Watchpoint facilities
- */
- li t1, 0x00000000
- mtc0 t1, CP0_WATCHLO
- mtc0 t1, CP0_IWATCHLO
- /*
- * Step 5) Disable the performance counters
- */
- mtc0 zero, CP0_PERFORMANCE
- nop
-
- /*
- * Step 6) Establish EJTAG Debug register
- */
- mtc0 zero, CP0_DEBUG
- nop
-
- /*
- * Step 7) Establish Cause
- * (set IV bit)
- */
- li t1, 0x00800000
- mtc0 t1, CP0_CAUSE
-
- /* Establish Wired (and Random) */
- mtc0 zero, CP0_WIRED
- nop
-
- /* No workaround if running from ram */
- lui t0, 0xffc0
- lui t3, 0xbfc0
- and t1, ra, t0
- bne t1, t3, noCacheJump
- nop
-
- /*** From AMD YAMON ***/
- /*
- * Step 8) Initialize the caches
- */
- li t0, (16*1024)
- li t1, 32
- li t2, 0x80000000
- addu t3, t0, t2
-cacheloop:
- cache 0, 0(t2)
- cache 1, 0(t2)
- addu t2, t1
- bne t2, t3, cacheloop
- nop
-
- /* Save return address */
- move t3, ra
-
- /* Run from cacheable space now */
- bal cachehere
- nop
-cachehere:
- li t1, ~0x20000000 /* convert to KSEG0 */
- and t0, ra, t1
- addi t0, 5*4 /* 5 insns beyond cachehere */
- jr t0
- nop
-
- /* Restore return address */
- move ra, t3
-
- /*
- * Step 9) Initialize the TLB
- */
- li t0, 0 # index value
- li t1, 0x00000000 # entryhi value
- li t2, 32 # 32 entries
-
-tlbloop:
- /* Probe TLB for matching EntryHi */
- mtc0 t1, CP0_ENTRYHI
- tlbp
- nop
-
- /* Examine Index[P], 1=no matching entry */
- mfc0 t3, CP0_INDEX
- li t4, 0x80000000
- and t3, t4, t3
- addiu t1, t1, 1 # increment t1 (asid)
- beq zero, t3, tlbloop
- nop
-
- /* Initialize the TLB entry */
- mtc0 t0, CP0_INDEX
- mtc0 zero, CP0_ENTRYLO0
- mtc0 zero, CP0_ENTRYLO1
- mtc0 zero, CP0_PAGEMASK
- tlbwi
-
- /* Do it again */
- addiu t0, t0, 1
- bne t0, t2, tlbloop
- nop
-
- /* First setup pll:s to make serial work ok */
- /* We have a 12.5 MHz crystal */
- li t0, SYS_CPUPLL
- li t1, 0x28 /* CPU clock, 500 MHz */
- sw t1, 0(t0)
- sync
- nop
- nop
-
- /* wait 1mS for clocks to settle */
- li t1, MEM_1MS
-1: add t1, -1
- bne t1, zero, 1b
- nop
- /* Setup AUX PLL */
- li t0, SYS_AUXPLL
- li t1, 0
- sw t1, 0(t0) /* aux pll */
- sync
-
- /* Static memory controller */
- /* RCE0 - can not change while fetching, do so from icache */
- move t2, ra /* Store return address */
- bal getAddr
- nop
-
-getAddr:
- move t1, ra
- move ra, t2 /* Move return addess back */
-
- cache 0x14,0(t1)
- cache 0x14,32(t1)
- /*** /From YAMON ***/
-
-noCacheJump:
-
- /* Static memory controller */
-
- /* RCE0 AMD 29LV800 Flash */
- li t0, MEM_STCFG0
- li t1, 0x00000243
- sw t1, 0(t0)
-
- li t0, MEM_STTIME0
- li t1, 0x040181D7 /* FIXME */
- sw t1, 0(t0)
-
- li t0, MEM_STADDR0
- li t1, 0x11E03F80
- sw t1, 0(t0)
-
- /* RCE1 PCMCIA 250ns */
- li t0, MEM_STCFG1
- li t1, 0x00000002
- sw t1, 0(t0)
-
- li t0, MEM_STTIME1
- li t1, 0x280E3E07
- sw t1, 0(t0)
-
- li t0, MEM_STADDR1
- li t1, 0x10000000
- sw t1, 0(t0)
-
- /* RCE2 CP Altera */
- li t0, MEM_STCFG2
- li t1, 0x00000280 /* BE, EW */
- sw t1, 0(t0)
-
- li t0, MEM_STTIME2
- li t1, 0x0303000c
- sw t1, 0(t0)
-
- li t0, MEM_STADDR2
- li t1, 0x10c03f80 /* 1 MB */
- sw t1, 0(t0)
-
- /* RCE3 DP Altera */
- li t0, MEM_STCFG3
- li t1, 0x00000280 /* BE, EW */
- sw t1, 0(t0)
-
- li t0, MEM_STTIME3
- li t1, 0x0303000c
- sw t1, 0(t0)
-
- li t0, MEM_STADDR3
- li t1, 0x10e03f80 /* 1 MB */
- sw t1, 0(t0)
-
- sync
-
- /* Set peripherals to a known state */
- li t0, IC0_CFG0CLR
- li t1, 0xFFFFFFFF
- sw t1, 0(t0)
-
- li t0, IC0_CFG0CLR
- sw t1, 0(t0)
-
- li t0, IC0_CFG1CLR
- sw t1, 0(t0)
-
- li t0, IC0_CFG2CLR
- sw t1, 0(t0)
-
- li t0, IC0_SRCSET
- sw t1, 0(t0)
-
- li t0, IC0_ASSIGNSET
- sw t1, 0(t0)
-
- li t0, IC0_WAKECLR
- sw t1, 0(t0)
-
- li t0, IC0_RISINGCLR
- sw t1, 0(t0)
-
- li t0, IC0_FALLINGCLR
- sw t1, 0(t0)
-
- li t0, IC0_TESTBIT
- li t1, 0x00000000
- sw t1, 0(t0)
- sync
-
- li t0, IC1_CFG0CLR
- li t1, 0xFFFFFFFF
- sw t1, 0(t0)
-
- li t0, IC1_CFG0CLR
- sw t1, 0(t0)
-
- li t0, IC1_CFG1CLR
- sw t1, 0(t0)
-
- li t0, IC1_CFG2CLR
- sw t1, 0(t0)
-
- li t0, IC1_SRCSET
- sw t1, 0(t0)
-
- li t0, IC1_ASSIGNSET
- sw t1, 0(t0)
-
- li t0, IC1_WAKECLR
- sw t1, 0(t0)
-
- li t0, IC1_RISINGCLR
- sw t1, 0(t0)
-
- li t0, IC1_FALLINGCLR
- sw t1, 0(t0)
-
- li t0, IC1_TESTBIT
- li t1, 0x00000000
- sw t1, 0(t0)
- sync
-
- li t0, SYS_FREQCTRL0
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_FREQCTRL1
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_CLKSRC
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_PININPUTEN
- li t1, 0x00000000
- sw t1, 0(t0)
- sync
-
- li t0, 0xB1100100
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, 0xB1400100
- li t1, 0x00000000
- sw t1, 0(t0)
-
-
- li t0, SYS_WAKEMSK
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_WAKESRC
- li t1, 0x00000000
- sw t1, 0(t0)
-
- /* wait 1mS before setup */
- li t1, MEM_1MS
-1: add t1, -1
- bne t1, zero, 1b
- nop
-
-
-/* SDCS 0 SDRAM */
- li t0, MEM_SDMODE0
- li t1, 0x592CD1
- sw t1, 0(t0)
-
- li t0, MEM_SDMODE1
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, MEM_SDMODE2
- li t1, 0x00000000
- sw t1, 0(t0)
-
-/* 64 MB SDRAM at addr 0 */
- li t0, MEM_SDADDR0
- li t1, 0x001003F0
- sw t1, 0(t0)
-
-
- li t0, MEM_SDADDR1
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, MEM_SDADDR2
- li t1, 0x00000000
- sw t1, 0(t0)
-
- sync
-
- li t0, MEM_SDREFCFG
- li t1, 0x880007A1 /* Disable */
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDPRECMD
- sw zero, 0(t0)
- sync
-
- li t0, MEM_SDAUTOREF
- sw zero, 0(t0)
- sync
- sw zero, 0(t0)
- sync
-
- li t0, MEM_SDREFCFG
- li t1, 0x8A0007A1 /* Enable */
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD0
- li t1, 0x00000023
- sw t1, 0(t0)
- sync
-
- /* wait 1mS after setup */
- li t1, MEM_1MS
-1: add t1, -1
- bne t1, zero, 1b
- nop
-
- /* Setup GPIO pins */
-
- li t0, SYS_PINFUNC
- li t1, 0x00007025 /* 0x8080 */
- sw t1, 0(t0)
-
- li t0, SYS_TRIOUTCLR
- li t1, 0xFFFFFFFF /* 0x1FFF */
- sw t1, 0(t0)
-
- /* Turn yellow front led on */
- /* Release reset on CF */
- li t0, SYS_OUTPUTCLR
- li t1, GPIO_RJ1LG
- sw t1, 0(t0)
- li t0, SYS_OUTPUTSET
- li t1, GPIO_RJ1LY|GPIO_CFRESET
- sw t1, 0(t0)
- sync
- j clearmem
- nop
-
- .globl memtest
-memtest:
- /* Fill memory with address */
- li t0, 0x80000000
- li t1, 0xFFF000 /* 64 MB */
-mt0: sw t0, 0(t0)
- add t1, -1
- add t0, 4
- bne t1, zero, mt0
- nop
- nop
- /* Verify addr */
- li t0, 0x80000000
- li t1, 0xFFF000 /* 64 MB */
-mt1: lw t2, 0(t0)
- bne t0, t2, memhang
- add t1, -1
- add t0, 4
- bne t1, zero, mt1
- nop
- nop
- .globl clearmem
-clearmem:
- /* Clear memory */
- li t0, 0x80000000
- li t1, 0xFFF000 /* 64 MB */
-mtc: sw zero, 0(t0)
- add t1, -1
- add t0, 4
- bne t1, zero, mtc
- nop
- nop
-memtestend:
- j ra
- nop
-
-memhang:
- b memhang
- nop
diff --git a/board/gth2/u-boot.lds b/board/gth2/u-boot.lds
deleted file mode 100644
index 8ba0b6d4c1..0000000000
--- a/board/gth2/u-boot.lds
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * (C) Copyright 2003-2005
- * Wolfgang Denk 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_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
-*/
-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips")
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .sdata : { *(.sdata) }
-
- _gp = ALIGN(16);
-
- __got_start = .;
- .got : { *(.got) }
- __got_end = .;
-
- .sdata : { *(.sdata) }
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- uboot_end_data = .;
- num_got_entries = (__got_end - __got_start) >> 2;
-
- . = ALIGN(4);
- .sbss : { *(.sbss) }
- .bss : { *(.bss) }
- uboot_end = .;
-}
diff --git a/board/gw8260/Makefile b/board/gw8260/Makefile
deleted file mode 100644
index 17012dd71d..0000000000
--- a/board/gw8260/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := gw8260.o flash.o
-SOBJS :=
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/gw8260/config.mk b/board/gw8260/config.mk
deleted file mode 100644
index ca0540d701..0000000000
--- a/board/gw8260/config.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (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
-#
-
-#
-# MBX8xx boards
-#
-
-TEXT_BASE = 0x40000000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/gw8260/flash.c b/board/gw8260/flash.c
deleted file mode 100644
index 5620a1d8b7..0000000000
--- a/board/gw8260/flash.c
+++ /dev/null
@@ -1,523 +0,0 @@
-/*
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Oliver Brown <oliverb@alumni.utexas.net>
- *
- *--------------------------------------------------------------------
- * 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
- */
-
-/*********************************************************************/
-/* DESCRIPTION:
- * This file contains the flash routines for the GW8260 board.
- *
- *
- *
- * MODULE DEPENDENCY:
- * None
- *
- *
- * RESTRICTIONS/LIMITATIONS:
- *
- * Only supports the following flash devices:
- * AMD 29F080B
- * AMD 29F016D
- *
- * Copyright (c) 2001, Advent Networks, Inc.
- *
- */
-/*********************************************************************/
-
-#include <common.h>
-#include <mpc8260.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*********************************************************************/
-/* functions */
-/*********************************************************************/
-
-/*********************************************************************/
-/* NAME: flash_init() - initializes flash banks */
-/* */
-/* DESCRIPTION: */
-/* This function initializes the flash bank(s). */
-/* */
-/* RETURNS: */
-/* The size in bytes of the flash */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* */
-/* */
-/*********************************************************************/
-unsigned long flash_init (void)
-{
- unsigned long size;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* for now, only support the 4 MB Flash SIMM */
- size = flash_get_size((vu_long *)CFG_FLASH0_BASE, &flash_info[0]);
-
- /*
- * protect monitor and environment sectors
- */
-
-#if CFG_MONITOR_BASE >= CFG_FLASH0_BASE
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- return (CFG_FLASH0_SIZE * 1024 * 1024); /*size*/
-}
-
-/*********************************************************************/
-/* NAME: flash_print_info() - prints flash imformation */
-/* */
-/* DESCRIPTION: */
-/* This function prints the flash information. */
-/* */
-/* INPUTS: */
-/* flash_info_t *info - flash information structure */
-/* */
-/* OUTPUTS: */
-/* Displays flash information to console */
-/* */
-/* RETURNS: */
-/* None */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* */
-/* */
-/*********************************************************************/
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch ((info->flash_id >> 16) & 0xff) {
- case 0x1:
- printf ("AMD ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case AMD_ID_F040B:
- printf ("AM29F040B (4 Mbit)\n");
- break;
- case AMD_ID_F080B:
- printf ("AM29F080B (8 Mbit)\n");
- break;
- case AMD_ID_F016D:
- printf ("AM29F016D (16 Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*********************************************************************/
-/* The following code cannot be run from FLASH! */
-/*********************************************************************/
-
-/*********************************************************************/
-/* NAME: flash_get_size() - detects the flash size */
-/* */
-/* DESCRIPTION: */
-/* 1) Reads vendor ID and devices ID from the flash devices. */
-/* 2) Initializes flash info struct. */
-/* 3) Return the flash size */
-/* */
-/* INPUTS: */
-/* vu_long *addr - pointer to start of flash */
-/* flash_info_t *info - flash information structure */
-/* */
-/* OUTPUTS: */
-/* None */
-/* */
-/* RETURNS: */
-/* Size of the flash in bytes, or 0 if device id is unknown. */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* Only supports the following devices: */
-/* AM29F080D */
-/* AM29F016D */
-/* */
-/*********************************************************************/
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- vu_long vendor, devid;
- ulong base = (ulong)addr;
-
- /*printf("addr = %08lx\n", (unsigned long)addr); */
-
- /* Reset and Write auto select command: read Manufacturer ID */
- addr[0x0000] = 0xf0f0f0f0;
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x90909090;
- udelay (1000);
-
- vendor = addr[0];
- /*printf("vendor = %08lx\n", vendor); */
- if (vendor != 0x01010101) {
- info->size = 0;
- goto out;
- }
-
- devid = addr[1];
- /*printf("devid = %08lx\n", devid); */
-
- if ((devid & 0xff) == AMD_ID_F080B) {
- info->flash_id = (vendor & 0xff) << 16 | AMD_ID_F080B;
- /* we have 16 sectors with 64KB each x 4 */
- info->sector_count = 16;
- info->size = 4 * info->sector_count * 64*1024;
- } else if ((devid & 0xff) == AMD_ID_F016D){
- info->flash_id = (vendor & 0xff) << 16 | AMD_ID_F016D;
- /* we have 32 sectors with 64KB each x 4 */
- info->sector_count = 32;
- info->size = 4 * info->sector_count * 64*1024;
- } else {
- info->size = 0;
- goto out;
- }
- /*printf("sector count = %08x\n", info->sector_count); */
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* sector base address */
- info->start[i] = base + i * (info->size / info->sector_count);
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /* reset command */
- addr = (vu_long *)info->start[0];
-
- out:
- addr[0] = 0xf0f0f0f0;
-
- /*printf("size = %08x\n", info->size); */
- return info->size;
-}
-
-/*********************************************************************/
-/* NAME: flash_erase() - erases flash by sector */
-/* */
-/* DESCRIPTION: */
-/* This function erases flash sectors starting for s_first to */
-/* s_last. */
-/* */
-/* INPUTS: */
-/* flash_info_t *info - flash information structure */
-/* int s_first - first sector to erase */
-/* int s_last - last sector to erase */
-/* */
-/* OUTPUTS: */
-/* None */
-/* */
-/* RETURNS: */
-/* Returns 0 for success, 1 for failure. */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* */
-/*********************************************************************/
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x80808080;
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- udelay (100);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x30303030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ((addr[0] & 0x80808080) != 0x80808080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0xF0F0F0F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*********************************************************************/
-/* NAME: write_buff() - writes a buffer to flash */
-/* */
-/* DESCRIPTION: */
-/* This function copies a buffer, *src, to flash. */
-/* */
-/* INPUTS: */
-/* flash_info_t *info - flash information structure */
-/* uchar *src - pointer to buffer to write to flash */
-/* ulong addr - address to start write at */
-/* ulong cnt - number of bytes to write to flash */
-/* */
-/* OUTPUTS: */
-/* None */
-/* */
-/* RETURNS: */
-/* 0 - OK */
-/* 1 - write timeout */
-/* 2 - Flash not erased */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* */
-/*********************************************************************/
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; (i < 4) && (cnt > 0); ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; (cnt == 0) && (i < 4); ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; (i < 4) && (cnt > 0); ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; (i < 4); ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*********************************************************************/
-/* NAME: write_word() - writes a word to flash */
-/* */
-/* DESCRIPTION: */
-/* This writes a single word to flash. */
-/* */
-/* INPUTS: */
-/* flash_info_t *info - flash information structure */
-/* ulong dest - address to write */
-/* ulong data - data to write */
-/* */
-/* OUTPUTS: */
-/* None */
-/* */
-/* RETURNS: */
-/* 0 - OK */
-/* 1 - write timeout */
-/* 2 - Flash not erased */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* */
-/*********************************************************************/
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0xA0A0A0A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x80808080) != (data & 0x80808080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-/*********************************************************************/
-/* End of flash.c */
-/*********************************************************************/
diff --git a/board/gw8260/gw8260.c b/board/gw8260/gw8260.c
deleted file mode 100644
index 2719a9585f..0000000000
--- a/board/gw8260/gw8260.c
+++ /dev/null
@@ -1,659 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Jay Monkman <jtm@smoothsmoothie.com>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Oliver Brown <oliverb@alumni.utexas.net>
- *
- * 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
- */
-
-/*********************************************************************/
-/* DESCRIPTION:
- * This file contains the board routines for the GW8260 board.
- *
- * MODULE DEPENDENCY:
- * None
- *
- * RESTRICTIONS/LIMITATIONS:
- * None
- *
- * Copyright (c) 2001, Advent Networks, Inc.
- */
-/*********************************************************************/
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-
-/*
- * I/O Port configuration table
- *
- */
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 1, 0, 0, 1, 0, 0 }, /* TP14 */
- /* PA30 */ { 1, 1, 1, 1, 0, 0 }, /* US_RTS */
- /* PA29 */ { 1, 0, 0, 1, 0, 1 }, /* LSSI_DATA */
- /* PA28 */ { 1, 0, 0, 1, 0, 1 }, /* LSSI_CLK */
- /* PA27 */ { 1, 0, 0, 1, 0, 0 }, /* TP12 */
- /* PA26 */ { 1, 0, 0, 0, 0, 0 }, /* IO_STATUS */
- /* PA25 */ { 1, 0, 0, 0, 0, 0 }, /* IO_CLOCK */
- /* PA24 */ { 1, 0, 0, 0, 0, 0 }, /* IO_CONFIG */
- /* PA23 */ { 1, 0, 0, 0, 0, 0 }, /* IO_DONE */
- /* PA22 */ { 1, 0, 0, 0, 0, 0 }, /* IO_DATA */
- /* PA21 */ { 1, 1, 0, 1, 0, 0 }, /* US_TXD3 */
- /* PA20 */ { 1, 1, 0, 1, 0, 0 }, /* US_TXD2 */
- /* PA19 */ { 1, 1, 0, 1, 0, 0 }, /* US_TXD1 */
- /* PA18 */ { 1, 1, 0, 1, 0, 0 }, /* US_TXD0 */
- /* PA17 */ { 1, 1, 0, 0, 0, 0 }, /* DS_RXD0 */
- /* PA16 */ { 1, 1, 0, 0, 0, 0 }, /* DS_RXD1 */
- /* PA15 */ { 1, 1, 0, 0, 0, 0 }, /* DS_RXD2 */
- /* PA14 */ { 1, 1, 0, 0, 0, 0 }, /* DS_RXD3 */
- /* PA13 */ { 1, 0, 0, 1, 0, 0 }, /* SPARE7 */
- /* PA12 */ { 1, 0, 0, 1, 0, 0 }, /* SPARE6 */
- /* PA11 */ { 1, 0, 0, 1, 0, 0 }, /* SPARE5 */
- /* PA10 */ { 1, 0, 0, 1, 0, 0 }, /* SPARE4 */
- /* PA9 */ { 1, 0, 0, 1, 0, 0 }, /* SPARE3 */
- /* PA8 */ { 1, 0, 0, 1, 0, 0 }, /* SPARE2 */
- /* PA7 */ { 1, 0, 0, 0, 0, 0 }, /* LSSI_IN */
- /* PA6 */ { 1, 0, 0, 1, 0, 0 }, /* SPARE0 */
- /* PA5 */ { 1, 0, 0, 1, 0, 0 }, /* DEMOD_RESET_ */
- /* PA4 */ { 1, 0, 0, 1, 0, 0 }, /* MOD_RESET_ */
- /* PA3 */ { 1, 0, 0, 1, 0, 0 }, /* IO_RESET */
- /* PA2 */ { 1, 0, 0, 1, 0, 0 }, /* TX_ENABLE */
- /* PA1 */ { 1, 0, 0, 0, 0, 0 }, /* RX_LOCK */
- /* PA0 */ { 1, 0, 0, 1, 0, 1 } /* MPC_RESET_ */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FETH0_TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FETH0_RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FETH0_TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FETH0_RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FETH0_COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FETH0_CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FETH0_TXD3 */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FETH0_TXD2 */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FETH0_TXD1 */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FETH0_TXD0 */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FETH0_RXD0 */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FETH0_RXD1 */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FETH0_RXD2 */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FETH0_RXD3 */
- /* PB17 */ { 1, 1, 0, 0, 0, 0 }, /* FETH1_RX_DV */
- /* PB16 */ { 1, 1, 0, 0, 0, 0 }, /* FETH1_RX_ER */
- /* PB15 */ { 1, 1, 0, 1, 0, 0 }, /* FETH1_TX_ER */
- /* PB14 */ { 1, 1, 0, 1, 0, 0 }, /* FETH1_TX_EN */
- /* PB13 */ { 1, 1, 0, 0, 0, 0 }, /* FETH1_COL */
- /* PB12 */ { 1, 1, 0, 0, 0, 0 }, /* FETH1_CRS */
- /* PB11 */ { 1, 1, 0, 0, 0, 0 }, /* FETH1_RXD3 */
- /* PB10 */ { 1, 1, 0, 0, 0, 0 }, /* FETH1_RXD2 */
- /* PB9 */ { 1, 1, 0, 0, 0, 0 }, /* FETH1_RXD1 */
- /* PB8 */ { 1, 1, 0, 0, 0, 0 }, /* FETH1_RXD0 */
- /* PB7 */ { 1, 1, 0, 1, 0, 0 }, /* FETH1_TXD0 */
- /* PB6 */ { 1, 1, 0, 1, 0, 0 }, /* FETH1_TXD1 */
- /* PB5 */ { 1, 1, 0, 1, 0, 0 }, /* FETH1_TXD2 */
- /* PB4 */ { 1, 1, 0, 1, 0, 0 }, /* FETH1_TXD3 */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 1, 0, 0, 1, 0, 1 }, /* FAST_RESET_ */
- /* PC30 */ { 1, 0, 0, 1, 0, 1 }, /* FAST_PAUSE_ */
- /* PC29 */ { 1, 0, 0, 1, 0, 0 }, /* FAST_SLEW1 */
- /* PC28 */ { 1, 0, 0, 1, 0, 0 }, /* FAST_SLEW0 */
- /* PC27 */ { 1, 0, 0, 1, 0, 0 }, /* TP13 */
- /* PC26 */ { 1, 0, 0, 0, 0, 0 }, /* RXDECDFLG */
- /* PC25 */ { 1, 0, 0, 0, 0, 0 }, /* RXACQFAIL */
- /* PC24 */ { 1, 0, 0, 0, 0, 0 }, /* RXACQFLG */
- /* PC23 */ { 1, 0, 0, 1, 0, 0 }, /* WD_TCL */
- /* PC22 */ { 1, 0, 0, 1, 0, 0 }, /* WD_EN */
- /* PC21 */ { 1, 0, 0, 1, 0, 0 }, /* US_TXCLK */
- /* PC20 */ { 1, 0, 0, 0, 0, 0 }, /* DS_RXCLK */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FETH0_RX_CLK */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FETH0_TX_CLK */
- /* PC17 */ { 1, 1, 0, 0, 0, 0 }, /* FETH1_RX_CLK */
- /* PC16 */ { 1, 1, 0, 0, 0, 0 }, /* FETH1_TX_CLK */
- /* PC15 */ { 1, 0, 0, 1, 0, 0 }, /* TX_SHUTDOWN_ */
- /* PC14 */ { 1, 0, 0, 0, 0, 0 }, /* RS_232_DTR_ */
- /* PC13 */ { 1, 0, 0, 0, 0, 0 }, /* TXERR */
- /* PC12 */ { 1, 0, 0, 1, 0, 1 }, /* FETH1_MDDIS */
- /* PC11 */ { 1, 0, 0, 1, 0, 1 }, /* FETH0_MDDIS */
- /* PC10 */ { 1, 0, 0, 1, 0, 0 }, /* MDC */
- /* PC9 */ { 1, 0, 0, 1, 1, 1 }, /* MDIO */
- /* PC8 */ { 1, 0, 0, 1, 1, 1 }, /* SER_NUM */
- /* PC7 */ { 1, 1, 0, 0, 0, 0 }, /* US_CTS */
- /* PC6 */ { 1, 1, 0, 0, 0, 0 }, /* DS_CD_ */
- /* PC5 */ { 1, 0, 0, 1, 0, 0 }, /* FETH1_PWRDWN */
- /* PC4 */ { 1, 0, 0, 1, 0, 0 }, /* FETH0_PWRDWN */
- /* PC3 */ { 1, 0, 0, 1, 0, 0 }, /* MPULED3 */
- /* PC2 */ { 1, 0, 0, 1, 0, 0 }, /* MPULED2 */
- /* PC1 */ { 1, 0, 0, 1, 0, 0 }, /* MPULED1 */
- /* PC0 */ { 1, 0, 0, 1, 0, 1 }, /* MPULED0 */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD30 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD29 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD28 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD27 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD26 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD25 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD24 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD23 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD22 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD21 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD20 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD19 */ { 1, 1, 1, 0, 0, 0 }, /* not used */
- /* PD18 */ { 1, 1, 1, 0, 0, 0 }, /* not used */
- /* PD17 */ { 1, 1, 1, 0, 0, 0 }, /* not used */
- /* PD16 */ { 1, 1, 1, 0, 0, 0 }, /* not used */
- /* PD15 */ { 1, 1, 1, 0, 1, 1 }, /* SDRAM_SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 1 }, /* SDRAM_SCL */
- /* PD13 */ { 1, 0, 0, 1, 0, 0 }, /* MPULED7 */
- /* PD12 */ { 1, 0, 0, 1, 0, 0 }, /* MPULED6 */
- /* PD11 */ { 1, 0, 0, 1, 0, 0 }, /* MPULED5 */
- /* PD10 */ { 1, 0, 0, 1, 0, 0 }, /* MPULED4 */
- /* PD9 */ { 1, 1, 0, 1, 0, 0 }, /* RS232_TXD */
- /* PD8 */ { 1, 1, 0, 0, 0, 0 }, /* RD232_RXD */
- /* PD7 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD6 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD5 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD4 */ { 1, 0, 0, 0, 0, 0 }, /* not used */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-/*********************************************************************/
-/* NAME: checkboard() - Displays the board type and serial number */
-/* */
-/* OUTPUTS: */
-/* Displays the board type and serial number */
-/* */
-/* RETURNS: */
-/* Always returns 1 */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* */
-/* */
-/*********************************************************************/
-int checkboard (void)
-{
- char *str;
-
- puts ("Board: Advent Networks gw8260\n");
-
- str = getenv ("serial#");
- if (str != NULL) {
- printf ("SN: %s\n", str);
- }
- return 0;
-}
-
-
-#if defined (CFG_DRAM_TEST)
-/*********************************************************************/
-/* NAME: move64() - moves a double word (64-bit) */
-/* */
-/* DESCRIPTION: */
-/* this function performs a double word move from the data at */
-/* the source pointer to the location at the destination pointer. */
-/* */
-/* INPUTS: */
-/* unsigned long long *src - pointer to data to move */
-/* */
-/* OUTPUTS: */
-/* unsigned long long *dest - pointer to locate to move data */
-/* */
-/* RETURNS: */
-/* None */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* May cloober fr0. */
-/* */
-/*********************************************************************/
-static void move64 (unsigned long long *src, unsigned long long *dest)
-{
- asm ("lfd 0, 0(3)\n\t" /* fpr0 = *scr */
- "stfd 0, 0(4)" /* *dest = fpr0 */
- : : : "fr0"); /* Clobbers fr0 */
- return;
-}
-
-
-#if defined (CFG_DRAM_TEST_DATA)
-
-unsigned long long pattern[] = {
- 0xaaaaaaaaaaaaaaaaULL,
- 0xccccccccccccccccULL,
- 0xf0f0f0f0f0f0f0f0ULL,
- 0xff00ff00ff00ff00ULL,
- 0xffff0000ffff0000ULL,
- 0xffffffff00000000ULL,
- 0x00000000ffffffffULL,
- 0x0000ffff0000ffffULL,
- 0x00ff00ff00ff00ffULL,
- 0x0f0f0f0f0f0f0f0fULL,
- 0x3333333333333333ULL,
- 0x5555555555555555ULL,
-};
-
-/*********************************************************************/
-/* NAME: mem_test_data() - test data lines for shorts and opens */
-/* */
-/* DESCRIPTION: */
-/* Tests data lines for shorts and opens by forcing adjacent data */
-/* to opposite states. Because the data lines could be routed in */
-/* an arbitrary manner the must ensure test patterns ensure that */
-/* every case is tested. By using the following series of binary */
-/* patterns every combination of adjacent bits is test regardless */
-/* of routing. */
-/* */
-/* ...101010101010101010101010 */
-/* ...110011001100110011001100 */
-/* ...111100001111000011110000 */
-/* ...111111110000000011111111 */
-/* */
-/* Carrying this out, gives us six hex patterns as follows: */
-/* */
-/* 0xaaaaaaaaaaaaaaaa */
-/* 0xcccccccccccccccc */
-/* 0xf0f0f0f0f0f0f0f0 */
-/* 0xff00ff00ff00ff00 */
-/* 0xffff0000ffff0000 */
-/* 0xffffffff00000000 */
-/* */
-/* The number test patterns will always be given by: */
-/* */
-/* log(base 2)(number data bits) = log2 (64) = 6 */
-/* */
-/* To test for short and opens to other signals on our boards. we */
-/* simply */
-/* test with the 1's complemnt of the paterns as well. */
-/* */
-/* OUTPUTS: */
-/* Displays failing test pattern */
-/* */
-/* RETURNS: */
-/* 0 - Passed test */
-/* 1 - Failed test */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* Assumes only one one SDRAM bank */
-/* */
-/*********************************************************************/
-int mem_test_data (void)
-{
- unsigned long long *pmem = (unsigned long long *) CFG_SDRAM_BASE;
- unsigned long long temp64 = 0;
- int num_patterns = sizeof (pattern) / sizeof (pattern[0]);
- int i;
- unsigned int hi, lo;
-
- for (i = 0; i < num_patterns; i++) {
- move64 (&(pattern[i]), pmem);
- move64 (pmem, &temp64);
-
- /* hi = (temp64>>32) & 0xffffffff; */
- /* lo = temp64 & 0xffffffff; */
- /* printf("\ntemp64 = 0x%08x%08x", hi, lo); */
-
- hi = (pattern[i] >> 32) & 0xffffffff;
- lo = pattern[i] & 0xffffffff;
- /* printf("\npattern[%d] = 0x%08x%08x", i, hi, lo); */
-
- if (temp64 != pattern[i]) {
- printf ("\n Data Test Failed, pattern 0x%08x%08x",
- hi, lo);
- return 1;
- }
- }
-
- return 0;
-}
-#endif /* CFG_DRAM_TEST_DATA */
-
-#if defined (CFG_DRAM_TEST_ADDRESS)
-/*********************************************************************/
-/* NAME: mem_test_address() - test address lines */
-/* */
-/* DESCRIPTION: */
-/* This function performs a test to verify that each word im */
-/* memory is uniquly addressable. The test sequence is as follows: */
-/* */
-/* 1) write the address of each word to each word. */
-/* 2) verify that each location equals its address */
-/* */
-/* OUTPUTS: */
-/* Displays failing test pattern and address */
-/* */
-/* RETURNS: */
-/* 0 - Passed test */
-/* 1 - Failed test */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* */
-/* */
-/*********************************************************************/
-int mem_test_address (void)
-{
- volatile unsigned int *pmem =
- (volatile unsigned int *) CFG_SDRAM_BASE;
- const unsigned int size = (CFG_SDRAM_SIZE * 1024 * 1024) / 4;
- unsigned int i;
-
- /* write address to each location */
- for (i = 0; i < size; i++) {
- pmem[i] = i;
- }
-
- /* verify each loaction */
- for (i = 0; i < size; i++) {
- if (pmem[i] != i) {
- printf ("\n Address Test Failed at 0x%x", i);
- return 1;
- }
- }
- return 0;
-}
-#endif /* CFG_DRAM_TEST_ADDRESS */
-
-#if defined (CFG_DRAM_TEST_WALK)
-/*********************************************************************/
-/* NAME: mem_march() - memory march */
-/* */
-/* DESCRIPTION: */
-/* Marches up through memory. At each location verifies rmask if */
-/* read = 1. At each location write wmask if write = 1. Displays */
-/* failing address and pattern. */
-/* */
-/* INPUTS: */
-/* volatile unsigned long long * base - start address of test */
-/* unsigned int size - number of dwords(64-bit) to test */
-/* unsigned long long rmask - read verify mask */
-/* unsigned long long wmask - wrtie verify mask */
-/* short read - verifies rmask if read = 1 */
-/* short write - writes wmask if write = 1 */
-/* */
-/* OUTPUTS: */
-/* Displays failing test pattern and address */
-/* */
-/* RETURNS: */
-/* 0 - Passed test */
-/* 1 - Failed test */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* */
-/* */
-/*********************************************************************/
-int mem_march (volatile unsigned long long *base,
- unsigned int size,
- unsigned long long rmask,
- unsigned long long wmask, short read, short write)
-{
- unsigned int i;
- unsigned long long temp = 0;
- unsigned int hitemp, lotemp, himask, lomask;
-
- for (i = 0; i < size; i++) {
- if (read != 0) {
- /* temp = base[i]; */
- move64 ((unsigned long long *) &(base[i]), &temp);
- if (rmask != temp) {
- hitemp = (temp >> 32) & 0xffffffff;
- lotemp = temp & 0xffffffff;
- himask = (rmask >> 32) & 0xffffffff;
- lomask = rmask & 0xffffffff;
-
- printf ("\n Walking one's test failed: address = 0x%08x," "\n\texpected 0x%08x%08x, found 0x%08x%08x", i << 3, himask, lomask, hitemp, lotemp);
- return 1;
- }
- }
- if (write != 0) {
- /* base[i] = wmask; */
- move64 (&wmask, (unsigned long long *) &(base[i]));
- }
- }
- return 0;
-}
-#endif /* CFG_DRAM_TEST_WALK */
-
-/*********************************************************************/
-/* NAME: mem_test_walk() - a simple walking ones test */
-/* */
-/* DESCRIPTION: */
-/* Performs a walking ones through entire physical memory. The */
-/* test uses as series of memory marches, mem_march(), to verify */
-/* and write the test patterns to memory. The test sequence is as */
-/* follows: */
-/* 1) march writing 0000...0001 */
-/* 2) march verifying 0000...0001 , writing 0000...0010 */
-/* 3) repeat step 2 shifting masks left 1 bit each time unitl */
-/* the write mask equals 1000...0000 */
-/* 4) march verifying 1000...0000 */
-/* The test fails if any of the memory marches return a failure. */
-/* */
-/* OUTPUTS: */
-/* Displays which pass on the memory test is executing */
-/* */
-/* RETURNS: */
-/* 0 - Passed test */
-/* 1 - Failed test */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* */
-/* */
-/*********************************************************************/
-int mem_test_walk (void)
-{
- unsigned long long mask;
- volatile unsigned long long *pmem =
- (volatile unsigned long long *) CFG_SDRAM_BASE;
- const unsigned long size = (CFG_SDRAM_SIZE * 1024 * 1024) / 8;
-
- unsigned int i;
-
- mask = 0x01;
-
- printf ("Initial Pass");
- mem_march (pmem, size, 0x0, 0x1, 0, 1);
-
- printf ("\b\b\b\b\b\b\b\b\b\b\b\b");
- printf (" ");
- printf ("\b\b\b\b\b\b\b\b\b\b\b\b");
-
- for (i = 0; i < 63; i++) {
- printf ("Pass %2d", i + 2);
- if (mem_march (pmem, size, mask, mask << 1, 1, 1) != 0) {
- /*printf("mask: 0x%x, pass: %d, ", mask, i); */
- return 1;
- }
- mask = mask << 1;
- printf ("\b\b\b\b\b\b\b");
- }
-
- printf ("Last Pass");
- if (mem_march (pmem, size, 0, mask, 0, 1) != 0) {
- /* printf("mask: 0x%x", mask); */
- return 1;
- }
- printf ("\b\b\b\b\b\b\b\b\b");
- printf (" ");
- printf ("\b\b\b\b\b\b\b\b\b");
-
- return 0;
-}
-
-/*********************************************************************/
-/* NAME: testdram() - calls any enabled memory tests */
-/* */
-/* DESCRIPTION: */
-/* Runs memory tests if the environment test variables are set to */
-/* 'y'. */
-/* */
-/* INPUTS: */
-/* testdramdata - If set to 'y', data test is run. */
-/* testdramaddress - If set to 'y', address test is run. */
-/* testdramwalk - If set to 'y', walking ones test is run */
-/* */
-/* OUTPUTS: */
-/* None */
-/* */
-/* RETURNS: */
-/* 0 - Passed test */
-/* 1 - Failed test */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* */
-/* */
-/*********************************************************************/
-int testdram (void)
-{
- char *s;
- int rundata, runaddress, runwalk;
-
- s = getenv ("testdramdata");
- rundata = (s && (*s == 'y')) ? 1 : 0;
- s = getenv ("testdramaddress");
- runaddress = (s && (*s == 'y')) ? 1 : 0;
- s = getenv ("testdramwalk");
- runwalk = (s && (*s == 'y')) ? 1 : 0;
-
- if ((rundata == 1) || (runaddress == 1) || (runwalk == 1)) {
- printf ("Testing RAM ... ");
- }
-#ifdef CFG_DRAM_TEST_DATA
- if (rundata == 1) {
- if (mem_test_data () == 1) {
- return 1;
- }
- }
-#endif
-#ifdef CFG_DRAM_TEST_ADDRESS
- if (runaddress == 1) {
- if (mem_test_address () == 1) {
- return 1;
- }
- }
-#endif
-#ifdef CFG_DRAM_TEST_WALK
- if (runwalk == 1) {
- if (mem_test_walk () == 1) {
- return 1;
- }
- }
-#endif
- if ((rundata == 1) || (runaddress == 1) || (runwalk == 1)) {
- printf ("passed");
- }
- return 0;
-
-}
-#endif /* CFG_DRAM_TEST */
-
-/*********************************************************************/
-/* NAME: initdram() - initializes SDRAM controller */
-/* */
-/* DESCRIPTION: */
-/* Initializes the MPC8260's SDRAM controller. */
-/* */
-/* INPUTS: */
-/* CFG_IMMR - MPC8260 Internal memory map */
-/* CFG_SDRAM_BASE - Physical start address of SDRAM */
-/* CFG_PSDMR - SDRAM mode register */
-/* CFG_MPTPR - Memory refresh timer prescaler register */
-/* CFG_SDRAM0_SIZE - SDRAM size */
-/* */
-/* RETURNS: */
-/* SDRAM size in bytes */
-/* */
-/* RESTRICTIONS/LIMITATIONS: */
-/* */
-/* */
-/*********************************************************************/
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
- volatile uchar c = 0, *ramaddr = (uchar *) (CFG_SDRAM_BASE + 0x8);
- ulong psdmr = CFG_PSDMR;
- int i;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_mptpr = CFG_MPTPR;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++) {
- *ramaddr = c;
- }
- memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr = c;
-
- /* return total ram size */
- return (CFG_SDRAM0_SIZE * 1024 * 1024);
-}
-
-/*********************************************************************/
-/* End of gw8260.c */
-/*********************************************************************/
diff --git a/board/gw8260/u-boot.lds b/board/gw8260/u-boot.lds
deleted file mode 100644
index ab65cb11fc..0000000000
--- a/board/gw8260/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (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
- */
-
-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/mpc8260/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/hermes/Makefile b/board/hermes/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/hermes/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/hermes/config.mk b/board/hermes/config.mk
deleted file mode 100644
index 008165fa67..0000000000
--- a/board/hermes/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# Multidata HERMES-PRO ISDN Routers
-#
-
-TEXT_BASE = 0xFE000000
diff --git a/board/hermes/flash.c b/board/hermes/flash.c
deleted file mode 100644
index 799fe83f3e..0000000000
--- a/board/hermes/flash.c
+++ /dev/null
@@ -1,460 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_byte (flash_info_t *info, ulong dest, uchar data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size<<20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) |
- (memctl->memc_br0 & ~(BR_BA_MSK));
-
- /* Re-do sizing to get full correct info */
- size = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size;
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- uchar value;
- vu_char *caddr = (vu_char *)addr;
- ulong base = (ulong)addr;
-
-
- /* Write auto select command: read Manufacturer ID */
- caddr[0x0AAA] = 0xAA;
- caddr[0x0555] = 0x55;
- caddr[0x0AAA] = 0x90;
-
- value = caddr[0];
- switch (value) {
- case (AMD_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = caddr[2]; /* device ID */
-
- switch (value) {
- case (AMD_ID_LV400T & 0xFF):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case (AMD_ID_LV400B & 0xFF):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case (AMD_ID_LV800T & 0xFF):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800B & 0xFF):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV160T & 0xFF):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV160B & 0xFF):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-#if 0 /* enable when device IDs are available */
- case (AMD_ID_LV320T & 0xFF):
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV320B & 0xFF):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection: D0 = 1 if protected */
- caddr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = caddr[4] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- caddr = (vu_char *)info->start[0];
-
- *caddr = 0xF0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_char *addr = (vu_char*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0AAA] = 0xAA;
- addr[0x0555] = 0x55;
- addr[0x0AAA] = 0x80;
- addr[0x0AAA] = 0xAA;
- addr[0x0555] = 0x55;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_char*)(info->start[sect]);
- addr[0] = 0x30;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_char*)(info->start[l_sect]);
- while ((addr[0] & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (vu_char *)info->start[0];
- addr[0] = 0xF0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- int rc;
-
- while (cnt > 0) {
- if ((rc = write_byte(info, addr++, *src++)) != 0) {
- return (rc);
- }
- --cnt;
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte (flash_info_t *info, ulong dest, uchar data)
-{
- vu_char *addr = (vu_char*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_char *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0AAA] = 0xAA;
- addr[0x0555] = 0x55;
- addr[0x0AAA] = 0xA0;
-
- *((vu_char *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_char *)dest) & 0x80) != (data & 0x80)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/hermes/hermes.c b/board/hermes/hermes.c
deleted file mode 100644
index a523db1a48..0000000000
--- a/board/hermes/hermes.c
+++ /dev/null
@@ -1,605 +0,0 @@
-/*
- * (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 <common.h>
-#include <commproc.h>
-#include <mpc8xx.h>
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-# include <status_led.h>
-# define SHOW_BOOT_PROGRESS(arg) show_boot_progress(arg)
-#else
-# define SHOW_BOOT_PROGRESS(arg)
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-static ulong board_init (void);
-static void send_smi_frame (volatile scc_t * sp, volatile cbd_t * bd,
- uchar * msg);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] = {
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00,
- 0x1ff77c47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1fe77c35, 0xffaffc34, 0x1fa57c35, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
- 0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1f07fc04, 0xeeaebc00, 0x10ad4c00, 0xf0afcc00,
- 0xf0afcc00, 0xe1bb8c06, 0x1ff77c47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc84, 0xfffffc07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x7ffffc07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Test ID string (HERMES...)
- *
- * Return code for board revision and network speed
- */
-
-int checkboard (void)
-{
- char *s = getenv ("serial#");
- char *e;
-
- puts ("Board: ");
-
- if (!s || strncmp (s, "HERMES", 6)) {
- puts ("### No HW ID - assuming HERMES-PRO");
- } else {
- for (e = s; *e; ++e) {
- if (*e == ' ')
- break;
- }
-
- for (; s < e; ++s) {
- putc (*s);
- }
- }
-
- gd->board_type = board_init ();
-
- printf (" Rev. %ld.x\n", (gd->board_type >> 16));
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size, size8, size9;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Preliminary prescaler for refresh
- */
- memctl->memc_mptpr = 0x0400;
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller banks 1 to the SDRAM banks at preliminary address
- */
- memctl->memc_or1 = CFG_OR1_PRELIM;
- memctl->memc_br1 = CFG_BR1_PRELIM;
-
- /* HERMES-PRO boards have only one bank SDRAM */
-
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mamr = 0xD0802114;
- memctl->memc_mcr = 0x80002105;
- udelay (1);
- memctl->memc_mamr = 0xD0802118;
- memctl->memc_mcr = 0x80002130;
- udelay (1);
- memctl->memc_mamr = 0xD0802114;
- memctl->memc_mcr = 0x80002106;
-
- udelay (1000);
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL, (long *) SDRAM_BASE_PRELIM,
- SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE_PRELIM,
- SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size = size9;
-/* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */
- } else { /* back to 8 columns */
- size = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
-/* debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20); */
- }
-
- udelay (1000);
-
- memctl->memc_or1 = ((-size) & 0xFFFF0000) | SDRAM_TIMING;
- memctl->memc_br1 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- udelay (10000);
-
- return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#define PB_LED_3 0x00020000 /* Status LED's */
-#define PB_LED_2 0x00010000
-#define PB_LED_1 0x00008000
-#define PB_LED_0 0x00004000
-
-#define PB_LED_ALL (PB_LED_0 | PB_LED_1 | PB_LED_2 | PB_LED_3)
-
-#define PC_REP_SPD1 0x00000800
-#define PC_REP_SPD0 0x00000400
-
-#define PB_RESET_2081 0x00000020 /* Reset PEB2081 */
-
-#define PB_MAI_4 0x00000010 /* Configuration */
-#define PB_MAI_3 0x00000008
-#define PB_MAI_2 0x00000004
-#define PB_MAI_1 0x00000002
-#define PB_MAI_0 0x00000001
-
-#define PB_MAI_ALL (PB_MAI_0 | PB_MAI_1 | PB_MAI_2 | PB_MAI_3 | PB_MAI_4)
-
-
-#define PC_REP_MGRPRS 0x0200
-#define PC_REP_SPD 0x0040 /* Select 100 Mbps */
-#define PC_REP_RES 0x0004
-#define PC_BIT14 0x0002 /* ??? */
-#define PC_BIT15 0x0001 /* ??? ENDSL ?? */
-
-/* ------------------------------------------------------------------------- */
-
-static ulong board_init (void)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- ulong reg, revision, speed = 100;
- int ethspeed;
- char *s;
-
- if ((s = getenv ("ethspeed")) != NULL) {
- if (strcmp (s, "100") == 0) {
- ethspeed = 100;
- } else if (strcmp (s, "10") == 0) {
- ethspeed = 10;
- } else {
- ethspeed = 0;
- }
- } else {
- ethspeed = 0;
- }
-
- /* Configure Port B Output Pins => 0x0003cc3F */
- reg = PB_LED_ALL | PC_REP_SPD1 | PC_REP_SPD0 | PB_RESET_2081 |
- PB_MAI_ALL;
- immr->im_cpm.cp_pbpar &= ~reg;
- immr->im_cpm.cp_pbodr &= ~reg;
- immr->im_cpm.cp_pbdat &= ~reg; /* all 0 */
- immr->im_cpm.cp_pbdir |= reg;
-
- /* Check hardware revision */
- if ((immr->im_ioport.iop_pcdat & 0x0003) == 0x0003) {
- /*
- * Revision 3.x hardware
- */
- revision = 3;
-
- immr->im_ioport.iop_pcdat = 0x0240;
- immr->im_ioport.iop_pcdir = (PC_REP_MGRPRS | PC_REP_SPD | PC_REP_RES | PC_BIT14); /* = 0x0246 */
- immr->im_ioport.iop_pcdat |= PC_REP_RES;
- } else {
- immr->im_ioport.iop_pcdat = 0x0002;
- immr->im_ioport.iop_pcdir = (PC_REP_MGRPRS | PC_REP_RES | PC_BIT14 | PC_BIT15); /* = 0x0207 */
-
- if ((immr->im_ioport.iop_pcdat & PC_REP_SPD) == 0) {
- /*
- * Revision 2.x hardware: PC9 connected to PB21
- */
- revision = 2;
-
- if (ethspeed == 0) {
- /* both 10 and 100 Mbps allowed:
- * select 10 Mbps and autonegotiation
- */
- puts (" [10+100]");
- immr->im_cpm.cp_pbdat = 0; /* SPD1:SPD0 = 0:0 - autonegot. */
- speed = 10;
- } else if (ethspeed == 10) {
- /* we are asked for 10 Mbps,
- * so select 10 Mbps
- */
- puts (" [10]");
- immr->im_cpm.cp_pbdat = 0; /* ??? */
- speed = 10;
- } else {
- /* anything else:
- * select 100 Mbps
- */
- puts (" [100]");
- immr->im_cpm.cp_pbdat = PC_REP_SPD0 | PC_REP_SPD1;
- /* SPD1:SPD0 = 1:1 - 100 Mbps */
- speed = 100;
- }
- immr->im_ioport.iop_pcdat |= (PC_REP_RES | PC_BIT14);
-
- /* must be run from RAM */
- /* start_lxt980 (speed); */
- /*************************/
- } else {
- /*
- * Revision 1.x hardware
- */
- revision = 1;
-
- immr->im_ioport.iop_pcdat = PC_REP_MGRPRS | PC_BIT14; /* = 0x0202 */
- immr->im_ioport.iop_pcdir = (PC_REP_MGRPRS | PC_REP_SPD | PC_REP_RES | PC_BIT14 | PC_BIT15); /* = 0x0247 */
-
- if (ethspeed == 0) {
- /* both 10 and 100 Mbps allowed:
- * select 100 Mbps and autonegotiation
- */
- puts (" [10+100]");
- immr->im_cpm.cp_pbdat = 0; /* SPD1:SPD0 = 0:0 - autonegot. */
- immr->im_ioport.iop_pcdat |= PC_REP_SPD;
- } else if (ethspeed == 10) {
- /* we are asked for 10 Mbps,
- * so select 10 Mbps
- */
- puts (" [10]");
- immr->im_cpm.cp_pbdat = PC_REP_SPD0; /* SPD1:SPD0 = 0:1 - 10 Mbps */
- } else {
- /* anything else:
- * select 100 Mbps
- */
- puts (" [100]");
- immr->im_cpm.cp_pbdat = PC_REP_SPD0 | PC_REP_SPD1;
- /* SPD1:SPD0 = 1:1 - 100 Mbps */
- immr->im_ioport.iop_pcdat |= PC_REP_SPD;
- }
-
- immr->im_ioport.iop_pcdat |= PC_REP_RES;
- }
- }
- SHOW_BOOT_PROGRESS (0x00);
-
- return ((revision << 16) | (speed & 0xFFFF));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#define SCC_SM 1 /* Index => SCC2 */
-#define PROFF PROFF_SCC2
-
-#define SMI_MSGLEN 8 /* Length of SMI Messages */
-
-#define PHYGPCR_ADDR 0x109 /* Port Enable */
-#define PHYPCR_ADDR 0x132 /* PHY Port Control Reg. (port 1) */
-#define LEDPCR_ADDR 0x141 /* LED Port Control Reg. */
-#define RPRESET_ADDR 0x144 /* Repeater Reset */
-
-#define PHYPCR_SPEED 0x2000 /* on for 100 Mbps, off for 10 Mbps */
-#define PHYPCR_AN 0x1000 /* on to enable Auto-Negotiation */
-#define PHYPCR_REST_AN 0x0200 /* on to restart Auto-Negotiation */
-#define PHYPCR_FDX 0x0100 /* on for Full Duplex, off for HDX */
-#define PHYPCR_COLT 0x0080 /* on to enable COL signal test */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Must run from RAM:
- * uses parameter RAM area which is used for stack while running from ROM
- */
-void hermes_start_lxt980 (int speed)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile cpm8xx_t *cp = (cpm8xx_t *) & (immr->im_cpm);
- volatile scc_t *sp = (scc_t *) & (cp->cp_scc[SCC_SM]);
- volatile cbd_t *bd;
- volatile hdlc_pram_t *hp;
- uchar smimsg[SMI_MSGLEN];
- ushort phypcrval;
- uint bd_off;
- int pnr;
-
- printf ("LXT9880: %3d Mbps\n", speed);
-
- immr->im_ioport.iop_paodr |= 0x0008; /* init PAODR: PA12 (TXD2) open drain */
- immr->im_ioport.iop_papar |= 0x400c; /* init PAPAR: TXD2, RXD2, BRGO4 */
- immr->im_ioport.iop_padir &= 0xbff3; /* init PADIR: BRGO4 */
- immr->im_ioport.iop_padir |= 0x4000;
-
- /* get temporary BD; no need for permanent alloc */
- bd_off = dpram_base_align (8);
-
- bd = (cbd_t *) (immr->im_cpm.cp_dpmem + bd_off);
-
- bd->cbd_bufaddr = 0;
- bd->cbd_datlen = 0;
- bd->cbd_sc = BD_SC_WRAP | BD_SC_LAST | BD_SC_INTRPT | BD_SC_TC;
-
- /* init. baudrate generator BRG4 */
- cp->cp_brgc4 = (0x00010000 | (50 << 1)); /* output 1 MHz */
-
- cp->cp_sicr &= 0xFFFF00FF; /* SICR: mask SCC2 */
- cp->cp_sicr |= 0x00001B00; /* SICR: SCC2 clk BRG4 */
-
- /* init SCC_SM register */
- sp->scc_psmr = 0x0000; /* init PSMR: no additional flags */
- sp->scc_todr = 0x0000;
- sp->scc_dsr = 0x7e7e;
-
- /* init. SCC_SM parameter area */
- hp = (hdlc_pram_t *) & cp->cp_dparam[PROFF];
-
- hp->tbase = bd_off; /* offset from beginning of DPRAM */
-
- hp->rfcr = 0x18;
- hp->tfcr = 0x18;
- hp->mrblr = 10;
-
- hp->c_mask = 0x0000f0b8;
- hp->c_pres = 0x0000ffff;
-
- hp->disfc = 0;
- hp->crcec = 0;
- hp->abtsc = 0;
- hp->nmarc = 0;
- hp->retrc = 0;
-
- hp->mflr = 10;
-
- hp->rfthr = 1;
-
- hp->hmask = 0;
- hp->haddr1 = 0;
- hp->haddr2 = 0;
- hp->haddr3 = 0;
- hp->haddr4 = 0;
-
- cp->cp_cpcr = SCC_SM << 6 | 0x0001; /* SCC_SM: init TX/RX params */
- while (cp->cp_cpcr & CPM_CR_FLG);
-
- /* clear all outstanding SCC events */
- sp->scc_scce = ~0;
-
- /* enable transmitter: GSMR_L: TPL=2(16bits), TPP=3(all ones), ENT */
- sp->scc_gsmrh = 0;
- sp->scc_gsmrl |= SCC_GSMRL_TPL_16 | SCC_GSMRL_TPP_ALL1 |
- SCC_GSMRL_ENT | SCC_GSMRL_MODE_HDLC;
-
-#if 0
- smimsg[0] = 0x00; /* CHIP/HUB ID */
- smimsg[1] = 0x38; /* WRITE CMD */
- smimsg[2] = (RPRESET_ADDR << 4) & 0xf0;
- smimsg[3] = RPRESET_ADDR >> 4;
- smimsg[4] = 0x01;
- smimsg[5] = 0x00;
- smimsg[6] = 0x00;
- smimsg[7] = 0x00;
-
- send_smi_frame (sp, bd, smimsg);
-#endif
-
- smimsg[0] = 0x7f; /* BROADCAST */
- smimsg[1] = 0x34; /* ASSIGN HUB ID */
- smimsg[2] = 0x00;
- smimsg[3] = 0x00;
- smimsg[4] = 0x00; /* HUB ID = 0 */
- smimsg[5] = 0x00;
- smimsg[6] = 0x00;
- smimsg[7] = 0x00;
-
- send_smi_frame (sp, bd, smimsg);
-
- smimsg[0] = 0x7f; /* BROADCAST */
- smimsg[1] = 0x3c; /* SET ARBOUT TO 0 */
- smimsg[2] = 0x00; /* ADDRESS = 0 */
- smimsg[3] = 0x00;
- smimsg[4] = 0x00; /* DATA = 0 */
- smimsg[5] = 0x00;
- smimsg[6] = 0x00;
- smimsg[7] = 0x00;
-
- send_smi_frame (sp, bd, smimsg);
-
- if (speed == 100) {
- phypcrval = PHYPCR_SPEED; /* 100 MBIT, disable autoneg. */
- } else {
- phypcrval = 0; /* 10 MBIT, disable autoneg. */
- }
-
- /* send MSGs */
- for (pnr = 0; pnr < 8; pnr++) {
- smimsg[0] = 0x00; /* CHIP/HUB ID */
- smimsg[1] = 0x38; /* WRITE CMD */
- smimsg[2] = ((PHYPCR_ADDR + pnr) << 4) & 0xf0;
- smimsg[3] = (PHYPCR_ADDR + pnr) >> 4;
- smimsg[4] = (unsigned char) (phypcrval & 0xff);
- smimsg[5] = (unsigned char) (phypcrval >> 8);
- smimsg[6] = 0x00;
- smimsg[7] = 0x00;
-
- send_smi_frame (sp, bd, smimsg);
- }
-
- smimsg[0] = 0x00; /* CHIP/HUB ID */
- smimsg[1] = 0x38; /* WRITE CMD */
- smimsg[2] = (PHYGPCR_ADDR << 4) & 0xf0;
- smimsg[3] = PHYGPCR_ADDR >> 4;
- smimsg[4] = 0xff; /* enable port 1-8 */
- smimsg[5] = 0x01; /* enable MII1 (0x01) */
- smimsg[6] = 0x00;
- smimsg[7] = 0x00;
-
- send_smi_frame (sp, bd, smimsg);
-
- smimsg[0] = 0x00; /* CHIP/HUB ID */
- smimsg[1] = 0x38; /* WRITE CMD */
- smimsg[2] = (LEDPCR_ADDR << 4) & 0xf0;
- smimsg[3] = LEDPCR_ADDR >> 4;
- smimsg[4] = 0xaa; /* Port 1-8 Conf.bits = 10 (Hardware control) */
- smimsg[5] = 0xaa;
- smimsg[6] = 0x00;
- smimsg[7] = 0x00;
-
- send_smi_frame (sp, bd, smimsg);
-
- /*
- * Disable Transmitter (so that we can free the BD, too)
- */
- sp->scc_gsmrl &= ~SCC_GSMRL_ENT;
-}
-
-/* ------------------------------------------------------------------------- */
-
-static void send_smi_frame (volatile scc_t * sp, volatile cbd_t * bd,
- uchar * msg)
-{
-#ifdef DEBUG
- unsigned hub, chip, cmd, length, addr;
-
- hub = msg[0] & 0x1F;
- chip = msg[0] >> 5;
- cmd = msg[1] & 0x1F;
- length = (msg[1] >> 5) | ((msg[2] & 0x0F) << 3);
- addr = (msg[2] >> 4) | (msg[3] << 4);
-
- printf ("SMI send: Hub %02x Chip %x Cmd %02x Len %d Addr %03x: "
- "%02x %02x %02x %02x\n",
- hub, chip, cmd, length, addr, msg[4], msg[5], msg[6], msg[7]);
-#endif /* DEBUG */
-
- bd->cbd_bufaddr = (uint) msg;
- bd->cbd_datlen = SMI_MSGLEN;
- bd->cbd_sc |= BD_SC_READY;
-
- /* wait for msg transmitted */
- while ((sp->scc_scce & 0x0002) == 0);
- /* clear all events */
- sp->scc_scce = ~0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-void show_boot_progress (int status)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
-
- status ^= 0x0F;
- status = (status & 0x0F) << 14;
- immr->im_cpm.cp_pbdat = (immr->im_cpm.cp_pbdat & ~PB_LED_ALL) | status;
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/hermes/u-boot.lds b/board/hermes/u-boot.lds
deleted file mode 100644
index ef53ab7a0a..0000000000
--- a/board/hermes/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- cpu/mpc8xx/interrupts.o (.text)
- lib_ppc/time.o (.text)
- lib_ppc/ticks.o (.text)
- lib_ppc/cache.o (.text)
- lib_generic/crc32.o (.text)
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/hermes/u-boot.lds.debug b/board/hermes/u-boot.lds.debug
deleted file mode 100644
index a961fa47ba..0000000000
--- a/board/hermes/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- lib_ppc/ppcstring.o (.text)
- cpu/mpc8xx/interrupts.o (.text)
- lib_ppc/time.o (.text)
- lib_ppc/ticks.o (.text)
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/hidden_dragon/Makefile b/board/hidden_dragon/Makefile
deleted file mode 100644
index 5aa02d4a7f..0000000000
--- a/board/hidden_dragon/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/hidden_dragon/README b/board/hidden_dragon/README
deleted file mode 100644
index 529fe2be0e..0000000000
--- a/board/hidden_dragon/README
+++ /dev/null
@@ -1,60 +0,0 @@
-U-Boot for Hidden Dragon board
-------------------------------
-
-Hidden Dragon is a MPC824x-based board by Motorola. For the most
-part it is similar to Sandpoint8245 board. So unless otherwise
-mentioned, the codes in this directory are adapted from ../sandpoint
-directory.
-
-Apparently there are very few of this board out there. Even Motorola
-website does not have any info on it.
-
-RAM:
- start = 0x0000 0000
- size = 0x0200 0000 (32 MB)
-
-Flash:
- BANK ONE:
- start = 0xFFE0 0000
- size = 0x0020 0000 (2 MB)
- flash chip = 29LV160TE (1x16 Mbits or 2x8 Mbits)
- flash sectors = 16K, 2x8K, 32K, 31x64K
-
- BANK TWO:
- NONE
-
-The processor interrupt vectors reside on the first 256 bytes
-starting from address 0xFFF00000. The "reset vector" (first
-instruction executed after reset) is located on 0xFFF0 0100.
-
-U-Boot is configured to reside in flash starting at the address of
-0xFFF00000. The environment space is located in flash separately from
-U-Boot, at the second sector of the first flash bank, starting from
-0xFFE04000 until 0xFFE06000 (8KB).
-
-Network:
- - RTL8139 chip on the base board (SUPPORTED)
- - RTL8129 chip on the processor board (NOT SUPPORTED)
-
-Serial:
- - Two NS16550 compatible UART on the processor board (SUPPORTED)
- - One NS16550 compatible UART on the base board (UNTESTED)
-
-Misc:
- VIA686A PCI SuperIO peripheral controller
- - 2 USB ports (UNTESTED)
- - 2 PS2 ports (UNTESTED)
- - Parallel port (UNTESTED)
- - IDE & floppy interface (UNTESTED)
-
- S3 Savage4 video card (UNTESTED)
-
-TODO:
------
-- Support for the VIA686A based peripherals
-- The RTL8139 driver frequently gives rx error.
-- Support for RTL8129 network controller. (Why is the support removed from
- rtl8139.c driver?)
-
-(C) Copyright 2004
-Yusdi Santoso, Adaptec Inc., yusdi_santoso@adaptec.com
diff --git a/board/hidden_dragon/config.mk b/board/hidden_dragon/config.mk
deleted file mode 100644
index 5c36d05feb..0000000000
--- a/board/hidden_dragon/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (C) Copyright 2000-2005
-# 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
-#
-
-#
-# Hidden Dragon boards
-#
-
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/hidden_dragon/early_init.S b/board/hidden_dragon/early_init.S
deleted file mode 100644
index 07dafb716f..0000000000
--- a/board/hidden_dragon/early_init.S
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * (C) Copyright 2001
- * Thomas Koeller, tkoeller@gmx.net
- *
- * 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 __ASSEMBLY__
-#define __ASSEMBLY__ 1
-#endif
-
-#include <config.h>
-#include <asm/processor.h>
-#include <mpc824x.h>
-#include <ppc_asm.tmpl>
-
-#if defined(USE_DINK32)
- /* We are running from RAM, so do not clear the MCCR1_MEMGO bit! */
- #define MCCR1VAL ((CFG_ROMNAL << MCCR1_ROMNAL_SHIFT) | (CFG_ROMFAL << MCCR1_ROMFAL_SHIFT) | MCCR1_MEMGO)
-#else
- #define MCCR1VAL (CFG_ROMNAL << MCCR1_ROMNAL_SHIFT) | (CFG_ROMFAL << MCCR1_ROMFAL_SHIFT)
-#endif
-
- .text
-
- /* Values to program into memory controller registers */
-tbl: .long MCCR1, MCCR1VAL
- .long MCCR2, CFG_REFINT << MCCR2_REFINT_SHIFT
- .long MCCR3
- .long (((CFG_BSTOPRE & 0x000000f0) >> 4) << MCCR3_BSTOPRE2TO5_SHIFT) | \
- (CFG_REFREC << MCCR3_REFREC_SHIFT) | \
- (CFG_RDLAT << MCCR3_RDLAT_SHIFT)
- .long MCCR4
- .long (CFG_PRETOACT << MCCR4_PRETOACT_SHIFT) | (CFG_ACTTOPRE << MCCR4_ACTTOPRE_SHIFT) | \
- (CFG_REGISTERD_TYPE_BUFFER << 20) | \
- (((CFG_BSTOPRE & 0x00000300) >> 8) << MCCR4_BSTOPRE0TO1_SHIFT ) | \
- ((CFG_SDMODE_CAS_LAT << 4) | (CFG_SDMODE_WRAP << 3) | \
- (CFG_SDMODE_BURSTLEN) << MCCR4_SDMODE_SHIFT) | \
- (CFG_ACTTORW << MCCR4_ACTTORW_SHIFT) | \
- ((CFG_BSTOPRE & 0x0000000f) << MCCR4_BSTOPRE6TO9_SHIFT )
- .long MSAR1
- .long (((CFG_BANK0_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK1_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK2_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK3_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMSAR1
- .long (((CFG_BANK0_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK1_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK2_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK3_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long MSAR2
- .long (((CFG_BANK4_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK5_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK6_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK7_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMSAR2
- .long (((CFG_BANK4_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK5_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK6_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK7_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long MEAR1
- .long (((CFG_BANK0_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK1_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK2_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK3_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMEAR1
- .long (((CFG_BANK0_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK1_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK2_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK3_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long MEAR2
- .long (((CFG_BANK4_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK5_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK6_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK7_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMEAR2
- .long (((CFG_BANK4_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK5_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK6_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK7_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long 0
-
-
- /*
- * Early CPU initialization. Set up memory controller, so we can access any RAM at all. This
- * must be done in assembly, since we have no stack at this point.
- */
- .global early_init_f
-early_init_f:
- mflr r10
-
- /* basic memory controller configuration */
- lis r3, CONFIG_ADDR_HIGH
- lis r4, CONFIG_DATA_HIGH
- bl lab
-lab: mflr r5
- lwzu r0, tbl - lab(r5)
-loop: lwz r1, 4(r5)
- stwbrx r0, 0, r3
- eieio
- stwbrx r1, 0, r4
- eieio
- lwzu r0, 8(r5)
- cmpli cr0, 0, r0, 0
- bne cr0, loop
-
- /* set bank enable bits */
- lis r0, MBER@h
- ori r0, 0, MBER@l
- li r1, CFG_BANK_ENABLE
- stwbrx r0, 0, r3
- eieio
- stb r1, 0(r4)
- eieio
-
- /* delay loop */
- lis r0, 0x0003
- mtctr r0
-delay: bdnz delay
-
- /* enable memory controller */
- lis r0, MCCR1@h
- ori r0, 0, MCCR1@l
- stwbrx r0, 0, r3
- eieio
- lwbrx r0, 0, r4
- oris r0, 0, MCCR1_MEMGO@h
- stwbrx r0, 0, r4
- eieio
-
- /* set up stack pointer */
- lis r1, CFG_INIT_SP_OFFSET@h
- ori r1, r1, CFG_INIT_SP_OFFSET@l
-
- mtlr r10
- blr
diff --git a/board/hidden_dragon/flash.c b/board/hidden_dragon/flash.c
deleted file mode 100644
index 21c5a01c16..0000000000
--- a/board/hidden_dragon/flash.c
+++ /dev/null
@@ -1,575 +0,0 @@
-/*
- * (C) Copyright 2004
- * Yusdi Santoso, Adaptec Inc., yusdi_santoso@adaptec.com
- *
- * (C) Copyright 2000-2005
- * 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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <asm/pci_io.h>
-#include <w83c553f.h>
-
-#define ROM_CS0_START 0xFF800000
-#define ROM_CS1_START 0xFF000000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*flash command address offsets*/
-
-#define ADDR0 (0xAAA)
-#define ADDR1 (0x555)
-#define ADDR3 (0x001)
-
-#define FLASH_WORD_SIZE unsigned char
-
-/*-----------------------------------------------------------------------
- */
-
-static unsigned long flash_id (unsigned char mfct, unsigned char chip)
- __attribute__ ((const));
-
-typedef struct {
- FLASH_WORD_SIZE extval;
- unsigned short intval;
-} map_entry;
-
-static unsigned long flash_id (unsigned char mfct, unsigned char chip)
-{
- static const map_entry mfct_map[] = {
- {(FLASH_WORD_SIZE) AMD_MANUFACT,
- (unsigned short) ((unsigned long) FLASH_MAN_AMD >> 16)},
- {(FLASH_WORD_SIZE) FUJ_MANUFACT,
- (unsigned short) ((unsigned long) FLASH_MAN_FUJ >> 16)},
- {(FLASH_WORD_SIZE) STM_MANUFACT,
- (unsigned short) ((unsigned long) FLASH_MAN_STM >> 16)},
- {(FLASH_WORD_SIZE) MT_MANUFACT,
- (unsigned short) ((unsigned long) FLASH_MAN_MT >> 16)},
- {(FLASH_WORD_SIZE) INTEL_MANUFACT,
- (unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)},
- {(FLASH_WORD_SIZE) INTEL_ALT_MANU,
- (unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)}
- };
-
- static const map_entry chip_map[] = {
- {AMD_ID_F040B, FLASH_AM040},
- {(FLASH_WORD_SIZE) STM_ID_x800AB, FLASH_STM800AB}
- };
-
- const map_entry *p;
- unsigned long result = FLASH_UNKNOWN;
-
- /* find chip id */
- for (p = &chip_map[0];
- p < &chip_map[sizeof chip_map / sizeof chip_map[0]]; p++)
- if (p->extval == chip) {
- result = FLASH_VENDMASK | p->intval;
- break;
- }
-
- /* find vendor id */
- for (p = &mfct_map[0];
- p < &mfct_map[sizeof mfct_map / sizeof mfct_map[0]]; p++)
- if (p->extval == mfct) {
- result &= ~FLASH_VENDMASK;
- result |= (unsigned long) p->intval << 16;
- break;
- }
-
- return result;
-}
-
-unsigned long flash_init (void)
-{
- unsigned long i;
- unsigned char j;
- static const ulong flash_banks[] = CFG_FLASH_BANKS;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- flash_info_t *const pflinfo = &flash_info[i];
-
- pflinfo->flash_id = FLASH_UNKNOWN;
- pflinfo->size = 0;
- pflinfo->sector_count = 0;
- }
-
- /* Enable writes to Hidden Dragon flash */
- {
- register unsigned char temp;
-
- CONFIG_READ_BYTE (CFG_WINBOND_ISA_CFG_ADDR + WINBOND_CSCR,
- temp);
- temp &= ~0x20; /* clear BIOSWP bit */
- CONFIG_WRITE_BYTE (CFG_WINBOND_ISA_CFG_ADDR + WINBOND_CSCR,
- temp);
- }
-
- for (i = 0; i < sizeof flash_banks / sizeof flash_banks[0]; i++) {
- flash_info_t *const pflinfo = &flash_info[i];
- const unsigned long base_address = flash_banks[i];
- volatile FLASH_WORD_SIZE *const flash =
- (FLASH_WORD_SIZE *) base_address;
-
- flash[0xAAA << (3 * i)] = 0xaa;
- flash[0x555 << (3 * i)] = 0x55;
- flash[0xAAA << (3 * i)] = 0x90;
- __asm__ __volatile__ ("sync");
-
- pflinfo->flash_id =
- flash_id (flash[0x0], flash[0x2 + 14 * i]);
-
- switch (pflinfo->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- pflinfo->size = 0x00080000;
- pflinfo->sector_count = 8;
- for (j = 0; j < 8; j++) {
- pflinfo->start[j] =
- base_address + 0x00010000 * j;
- pflinfo->protect[j] = flash[(j << 16) | 0x2];
- }
- break;
- case FLASH_STM800AB:
- pflinfo->size = 0x00100000;
- pflinfo->sector_count = 19;
- pflinfo->start[0] = base_address;
- pflinfo->start[1] = base_address + 0x4000;
- pflinfo->start[2] = base_address + 0x6000;
- pflinfo->start[3] = base_address + 0x8000;
- for (j = 1; j < 16; j++) {
- pflinfo->start[j + 3] =
- base_address + 0x00010000 * j;
- }
- break;
- default:
- /* The chip used is not listed in flash_id
- TODO: Change this to explicitly detect the flash type
- */
- {
- int sector_addr = base_address;
-
- pflinfo->size = 0x00200000;
- pflinfo->sector_count = 35;
- pflinfo->start[0] = sector_addr;
- sector_addr += 0x4000; /* 16K */
- pflinfo->start[1] = sector_addr;
- sector_addr += 0x2000; /* 8K */
- pflinfo->start[2] = sector_addr;
- sector_addr += 0x2000; /* 8K */
- pflinfo->start[3] = sector_addr;
- sector_addr += 0x8000; /* 32K */
-
- for (j = 4; j < 35; j++) {
- pflinfo->start[j] = sector_addr;
- sector_addr += 0x10000; /* 64K */
- }
- }
- break;
- }
- /* Protect monitor and environment sectors
- */
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- /* reset device to read mode */
- flash[0x0000] = 0xf0;
- __asm__ __volatile__ ("sync");
- }
-
- /* only have 1 bank */
- return flash_info[0].size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- static const char unk[] = "Unknown";
- const char *mfct = unk, *type = unk;
- unsigned int i;
-
- if (info->flash_id != FLASH_UNKNOWN) {
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- mfct = "AMD";
- break;
- case FLASH_MAN_FUJ:
- mfct = "FUJITSU";
- break;
- case FLASH_MAN_STM:
- mfct = "STM";
- break;
- case FLASH_MAN_SST:
- mfct = "SST";
- break;
- case FLASH_MAN_BM:
- mfct = "Bright Microelectonics";
- break;
- case FLASH_MAN_INTEL:
- mfct = "Intel";
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- type = "AM29F040B (512K * 8, uniform sector size)";
- break;
- case FLASH_AM400B:
- type = "AM29LV400B (4 Mbit, bottom boot sect)";
- break;
- case FLASH_AM400T:
- type = "AM29LV400T (4 Mbit, top boot sector)";
- break;
- case FLASH_AM800B:
- type = "AM29LV800B (8 Mbit, bottom boot sect)";
- break;
- case FLASH_AM800T:
- type = "AM29LV800T (8 Mbit, top boot sector)";
- break;
- case FLASH_AM160T:
- type = "AM29LV160T (16 Mbit, top boot sector)";
- break;
- case FLASH_AM320B:
- type = "AM29LV320B (32 Mbit, bottom boot sect)";
- break;
- case FLASH_AM320T:
- type = "AM29LV320T (32 Mbit, top boot sector)";
- break;
- case FLASH_STM800AB:
- type = "M29W800AB (8 Mbit, bottom boot sect)";
- break;
- case FLASH_SST800A:
- type = "SST39LF/VF800 (8 Mbit, uniform sector size)";
- break;
- case FLASH_SST160A:
- type = "SST39LF/VF160 (16 Mbit, uniform sector size)";
- break;
- }
- }
-
- printf ("\n Brand: %s Type: %s\n"
- " Size: %lu KB in %d Sectors\n",
- mfct, type, info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i = 0; i < info->sector_count; i++) {
- unsigned long size;
- unsigned int erased;
- unsigned long *flash = (unsigned long *) info->start[i];
-
- /*
- * Check if whole sector is erased
- */
- size = (i != (info->sector_count - 1)) ?
- (info->start[i + 1] - info->start[i]) >> 2 :
- (info->start[0] + info->size - info->start[i]) >> 2;
-
- for (flash = (unsigned long *) info->start[i], erased = 1;
- (flash != (unsigned long *) info->start[i] + size)
- && erased; flash++)
- erased = *flash == ~0x0UL;
-
- printf ("%s %08lX %s %s",
- (i % 5) ? "" : "\n ",
- info->start[i],
- erased ? "E" : " ", info->protect[i] ? "RO" : " ");
- }
-
- puts ("\n");
- return;
-}
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *) (info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
- unsigned char sh8b;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > (FLASH_MAN_STM | FLASH_AMD_COMP))) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Check the ROM CS */
- if ((info->start[0] >= ROM_CS1_START)
- && (info->start[0] < ROM_CS0_START))
- sh8b = 3;
- else
- sh8b = 0;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00800080;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (FLASH_WORD_SIZE *) (info->start[0] +
- ((info->start[sect] -
- info->start[0]) << sh8b));
- if (info->flash_id & FLASH_MAN_SST) {
- addr[ADDR0 << sh8b] =
- (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] =
- (FLASH_WORD_SIZE) 0x00550055;
- addr[ADDR0 << sh8b] =
- (FLASH_WORD_SIZE) 0x00800080;
- addr[ADDR0 << sh8b] =
- (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] =
- (FLASH_WORD_SIZE) 0x00550055;
- addr[0] = (FLASH_WORD_SIZE) 0x00500050; /* block erase */
- udelay (30000); /* wait 30 ms */
- } else
- addr[0] = (FLASH_WORD_SIZE) 0x00300030; /* sector erase */
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (FLASH_WORD_SIZE *) (info->start[0] + ((info->start[l_sect] -
- info->
- start[0]) << sh8b));
- while ((addr[0] & (FLASH_WORD_SIZE) 0x00800080) !=
- (FLASH_WORD_SIZE) 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_word (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *) info->start[0];
- volatile FLASH_WORD_SIZE *dest2;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *) & data;
- ulong start;
- int flag;
- int i;
- unsigned char sh8b;
-
- /* Check the ROM CS */
- if ((info->start[0] >= ROM_CS1_START)
- && (info->start[0] < ROM_CS0_START))
- sh8b = 3;
- else
- sh8b = 0;
-
- dest2 = (FLASH_WORD_SIZE *) (((dest - info->start[0]) << sh8b) +
- info->start[0]);
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest2 & (FLASH_WORD_SIZE) data) != (FLASH_WORD_SIZE) data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- for (i = 0; i < 4 / sizeof (FLASH_WORD_SIZE); i++) {
- addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i << sh8b] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i << sh8b] & (FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE) 0x00800080)) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
diff --git a/board/hidden_dragon/hidden_dragon.c b/board/hidden_dragon/hidden_dragon.c
deleted file mode 100644
index daab8334ee..0000000000
--- a/board/hidden_dragon/hidden_dragon.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * (C) Copyright 2004
- * Yusdi Santoso, Adaptec Inc., yusdi_santoso@adaptec.com
- *
- * (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
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-
-int checkboard (void)
-{
- /*TODO: Check processor type */
-
- puts ( "Board: Hidden Dragon "
-#ifdef CONFIG_MPC8240
- "8240"
-#endif
-#ifdef CONFIG_MPC8245
- "8245"
-#endif
- " ##Test not implemented yet##\n");
- /* TODO: Implement board test */
- return 0;
-}
-
-long int initdram (int board_type)
-{
- long size;
- long new_bank0_end;
- long mear1;
- long emear1;
-
- size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
-
- new_bank0_end = size - 1;
- mear1 = mpc824x_mpc107_getreg(MEAR1);
- emear1 = mpc824x_mpc107_getreg(EMEAR1);
- mear1 = (mear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
- emear1 = (emear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
- mpc824x_mpc107_setreg(MEAR1, mear1);
- mpc824x_mpc107_setreg(EMEAR1, emear1);
-
- return (size);
-}
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_hidden_dragon_config_table[] = {
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0f, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x10, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
- PCI_ENET1_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_hidden_dragon_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
- pci_mpc824x_init(&hose);
-}
diff --git a/board/hidden_dragon/speed.h b/board/hidden_dragon/speed.h
deleted file mode 100644
index b66393bec5..0000000000
--- a/board/hidden_dragon/speed.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * (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
- */
-
-/*-----------------------------------------------------------------------
- * Timer value for timer 2, ICLK = 10
- *
- * SPEED_FCOUNT2 = GCLK / (16 * (TIMER_TMR_PS + 1))
- * SPEED_TMR3_PS = (GCLK / (16 * SPEED_FCOUNT3)) - 1
- *
- * SPEED_FCOUNT2 timer 2 counting frequency
- * GCLK CPU clock
- * SPEED_TMR2_PS prescaler
- */
-#define SPEED_TMR2_PS (250 - 1) /* divide by 250 */
-
-/*-----------------------------------------------------------------------
- * Timer value for PIT
- *
- * PIT_TIME = SPEED_PITC / PITRTCLK
- * PITRTCLK = 8192
- */
-#define SPEED_PITC (82 << 16) /* start counting from 82 */
-
-/*
- * The new value for PTA is calculated from
- *
- * PTA = (gclk * Trefresh) / (2 ^ (2 * DFBRG) * PTP * NCS)
- *
- * gclk CPU clock (not bus clock !)
- * Trefresh Refresh cycle * 4 (four word bursts used)
- * DFBRG For normal mode (no clock reduction) always 0
- * PTP Prescaler (already adjusted for no. of banks and 4K / 8K refresh)
- * NCS Number of SDRAM banks (chip selects) on this UPM.
- */
diff --git a/board/hidden_dragon/u-boot.lds b/board/hidden_dragon/u-boot.lds
deleted file mode 100644
index 2a5cd2ebd9..0000000000
--- a/board/hidden_dragon/u-boot.lds
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/hymod/Makefile b/board/hymod/Makefile
deleted file mode 100644
index 1fb7e79aa9..0000000000
--- a/board/hymod/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o bsp.o eeprom.o fetch.o input.o env.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/hymod/bsp.c b/board/hymod/bsp.c
deleted file mode 100644
index 6868f260c2..0000000000
--- a/board/hymod/bsp.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * (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
- *
- * hacked for Hymod FPGA support by Murray.Jensen@csiro.au, 29-Jan-01
- */
-
-#include <common.h>
-#include <command.h>
-#include <net.h>
-#include <asm/iopin_8260.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*-----------------------------------------------------------------------
- * Board Special Commands: FPGA load/store, EEPROM erase
- */
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-
-#define LOAD_SUCCESS 0
-#define LOAD_FAIL_NOCONF 1
-#define LOAD_FAIL_NOINIT 2
-#define LOAD_FAIL_NODONE 3
-
-#define STORE_SUCCESS 0
-
-/*
- * Programming the Hymod FPGAs
- *
- * The 8260 io port config table is set up so that the INIT pin is
- * held Low (Open Drain output 0) - this will delay the automatic
- * Power-On config until INIT is released (by making it an input).
- *
- * If the FPGA has been programmed before, then the assertion of PROGRAM
- * will initiate configuration (i.e. it begins clearing the RAM).
- *
- * When the FPGA is ready to receive configuration data (either after
- * releasing INIT after Power-On, or after asserting PROGRAM), it will
- * pull INIT high.
- *
- * Notes from Paul Dunn:
- *
- * 1. program pin should be forced low for >= 300ns
- * (about 20 bus clock cycles minimum).
- *
- * 2. then wait for init to go high, which signals
- * that the FPGA has cleared its internal memory
- * and is ready to load
- *
- * 3. perform load writes of entire config file
- *
- * 4. wait for done to go high, which should be
- * within a few bus clock cycles. If done has not
- * gone high after reasonable period, then load
- * has not worked (wait several ms?)
- */
-
-int
-fpga_load (int mezz, uchar *addr, ulong size)
-{
- hymod_conf_t *cp = &gd->bd->bi_hymod_conf;
- xlx_info_t *fp;
- xlx_iopins_t *fpgaio;
- volatile uchar *fpgabase;
- volatile uint cnt;
- uchar *eaddr = addr + size;
- int result;
-
- if (mezz)
- fp = &cp->mezz.xlx[0];
- else
- fp = &cp->main.xlx[0];
-
- if (!fp->mmap.prog.exists)
- return (LOAD_FAIL_NOCONF);
-
- fpgabase = (uchar *)fp->mmap.prog.base;
- fpgaio = &fp->iopins;
-
- /* set enable HIGH if required */
- if (fpgaio->enable_pin.flag)
- iopin_set_high (&fpgaio->enable_pin);
-
- /* ensure INIT is released (set it to be an input) */
- iopin_set_in (&fpgaio->init_pin);
-
- /* toggle PROG Low then High (will already be Low after Power-On) */
- iopin_set_low (&fpgaio->prog_pin);
- udelay (1); /* minimum 300ns - 1usec should do it */
- iopin_set_high (&fpgaio->prog_pin);
-
- /* wait for INIT High */
- cnt = 0;
- while (!iopin_is_high (&fpgaio->init_pin))
- if (++cnt == 10000000) {
- result = LOAD_FAIL_NOINIT;
- goto done;
- }
-
- /* write configuration data */
- while (addr < eaddr)
- *fpgabase = *addr++;
-
- /* wait for DONE High */
- cnt = 0;
- while (!iopin_is_high (&fpgaio->done_pin))
- if (++cnt == 100000000) {
- result = LOAD_FAIL_NODONE;
- goto done;
- }
-
- /* success */
- result = LOAD_SUCCESS;
-
- done:
-
- if (fpgaio->enable_pin.flag)
- iopin_set_low (&fpgaio->enable_pin);
-
- return (result);
-}
-
-/* ------------------------------------------------------------------------- */
-int
-do_fpga (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- uchar *addr, *save_addr;
- ulong size;
- int mezz, arg, result;
-
- switch (argc) {
-
- case 0:
- case 1:
- break;
-
- case 2:
- if (strcmp (argv[1], "info") == 0) {
- printf ("\nHymod FPGA Info...\n");
- printf ("\t\t\t\tAddress\t\tSize\n");
- printf ("\tMain Configuration:\t0x%08x\t%d\n",
- FPGA_MAIN_CFG_BASE, FPGA_MAIN_CFG_SIZE);
- printf ("\tMain Register:\t\t0x%08x\t%d\n",
- FPGA_MAIN_REG_BASE, FPGA_MAIN_REG_SIZE);
- printf ("\tMain Port:\t\t0x%08x\t%d\n",
- FPGA_MAIN_PORT_BASE, FPGA_MAIN_PORT_SIZE);
- printf ("\tMezz Configuration:\t0x%08x\t%d\n",
- FPGA_MEZZ_CFG_BASE, FPGA_MEZZ_CFG_SIZE);
- return 0;
- }
- break;
-
- case 3:
- if (strcmp (argv[1], "store") == 0) {
- addr = (uchar *) simple_strtoul (argv[2], NULL, 16);
-
- save_addr = addr;
-#if 0
- /* fpga readback unimplemented */
- while (more readback data)
- *addr++ = *fpga;
- result = error ? STORE_FAIL_XXX : STORE_SUCCESS;
-#else
- result = STORE_SUCCESS;
-#endif
-
- if (result == STORE_SUCCESS) {
- printf ("SUCCEEDED (%d bytes)\n",
- addr - save_addr);
- return 0;
- } else
- printf ("FAILED (%d bytes)\n",
- addr - save_addr);
- return 1;
- }
- break;
-
- case 4:
- if (strcmp (argv[1], "tftp") == 0) {
- copy_filename (BootFile, argv[2], sizeof (BootFile));
- load_addr = simple_strtoul (argv[3], NULL, 16);
- NetBootFileXferSize = 0;
-
- if (NetLoop (TFTP) <= 0) {
- printf ("tftp transfer failed - aborting "
- "fgpa load\n");
- return 1;
- }
-
- if (NetBootFileXferSize == 0) {
- printf ("can't determine file size - "
- "aborting fpga load\n");
- return 1;
- }
-
- printf ("File transfer succeeded - "
- "beginning fpga load...");
-
- result = fpga_load (0, (uchar *) load_addr,
- NetBootFileXferSize);
-
- if (result == LOAD_SUCCESS) {
- printf ("SUCCEEDED\n");
- return 0;
- } else if (result == LOAD_FAIL_NOCONF)
- printf ("FAILED (no CONF)\n");
- else if (result == LOAD_FAIL_NOINIT)
- printf ("FAILED (no INIT)\n");
- else
- printf ("FAILED (no DONE)\n");
- return 1;
-
- }
- /* fall through ... */
-
- case 5:
- if (strcmp (argv[1], "load") == 0) {
- if (argc == 5) {
- if (strcmp (argv[2], "main") == 0)
- mezz = 0;
- else if (strcmp (argv[2], "mezz") == 0)
- mezz = 1;
- else {
- printf ("FPGA type must be either "
- "`main' or `mezz'\n");
- return 1;
- }
- arg = 3;
- } else {
- mezz = 0;
- arg = 2;
- }
-
- addr = (uchar *) simple_strtoul (argv[arg++], NULL, 16);
- size = (ulong) simple_strtoul (argv[arg], NULL, 16);
-
- result = fpga_load (mezz, addr, size);
-
- if (result == LOAD_SUCCESS) {
- printf ("SUCCEEDED\n");
- return 0;
- } else if (result == LOAD_FAIL_NOCONF)
- printf ("FAILED (no CONF)\n");
- else if (result == LOAD_FAIL_NOINIT)
- printf ("FAILED (no INIT)\n");
- else
- printf ("FAILED (no DONE)\n");
- return 1;
- }
- break;
-
- default:
- break;
- }
-
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
-}
-U_BOOT_CMD(
- fpga, 6, 1, do_fpga,
- "fpga - FPGA sub-system\n",
- "load [type] addr size\n"
- " - write the configuration data at memory address `addr',\n"
- " size `size' bytes, into the FPGA of type `type' (either\n"
- " `main' or `mezz', default `main'). e.g.\n"
- " `fpga load 100000 7d8f'\n"
- " loads the main FPGA with config data at address 100000\n"
- " HEX, size 7d8f HEX (32143 DEC) bytes\n"
- "fpga tftp file addr\n"
- " - transfers `file' from the tftp server into memory at\n"
- " address `addr', then writes the entire file contents\n"
- " into the main FPGA\n"
- "fpga store addr\n"
- " - read configuration data from the main FPGA (the mezz\n"
- " FPGA is write-only), into address `addr'. There must be\n"
- " enough memory available at `addr' to hold all the config\n"
- " data - the size of which is determined by VC:???\n"
- "fpga info\n"
- " - print information about the Hymod FPGA, namely the\n"
- " memory addresses at which the four FPGA local bus\n"
- " address spaces appear in the physical address space\n"
-);
-/* ------------------------------------------------------------------------- */
-int
-do_eecl (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- uchar data[HYMOD_EEPROM_SIZE];
- uint addr = CFG_I2C_EEPROM_ADDR;
-
- switch (argc) {
-
- case 1:
- addr |= HYMOD_EEOFF_MAIN;
- break;
-
- case 2:
- if (strcmp (argv[1], "main") == 0) {
- addr |= HYMOD_EEOFF_MAIN;
- break;
- }
- if (strcmp (argv[1], "mezz") == 0) {
- addr |= HYMOD_EEOFF_MEZZ;
- break;
- }
- /* fall through ... */
-
- default:
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- memset (data, 0, HYMOD_EEPROM_SIZE);
-
- eeprom_write (addr, 0, data, HYMOD_EEPROM_SIZE);
-
- return 0;
-}
-U_BOOT_CMD(
- eeclear, 1, 0, do_eecl,
- "eeclear - Clear the eeprom on a Hymod board \n",
- "[type]\n"
- " - write zeroes into the EEPROM on the board of type `type'\n"
- " (`type' is either `main' or `mezz' - default `main')\n"
- " Note: the EEPROM write enable jumper must be installed\n"
-);
-
-/* ------------------------------------------------------------------------- */
-
-int
-do_htest (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-#if 0
- int rc;
-#endif
-#ifdef CONFIG_ETHER_LOOPBACK_TEST
- extern void eth_loopback_test (void);
-#endif /* CONFIG_ETHER_LOOPBACK_TEST */
-
- printf ("HYMOD tests - ensure loopbacks etc. are connected\n\n");
-
-#if 0
- /* Load FPGA with test program */
-
- printf ("Loading test FPGA program ...");
-
- rc = fpga_load (0, test_bitfile, sizeof (test_bitfile));
-
- switch (rc) {
-
- case LOAD_SUCCESS:
- printf (" SUCCEEDED\n");
- break;
-
- case LOAD_FAIL_NOCONF:
- printf (" FAILED (no configuration space defined)\n");
- return 1;
-
- case LOAD_FAIL_NOINIT:
- printf (" FAILED (timeout - no INIT signal seen)\n");
- return 1;
-
- case LOAD_FAIL_NODONE:
- printf (" FAILED (timeout - no DONE signal seen)\n");
- return 1;
-
- default:
- printf (" FAILED (unknown return code from fpga_load\n");
- return 1;
- }
-
- /* run Local Bus <=> Xilinx tests */
-
- /* tell Xilinx to run ZBT Ram, High Speed serial and Mezzanine tests */
-
- /* run SDRAM test */
-#endif
-
-#ifdef CONFIG_ETHER_LOOPBACK_TEST
- /* run Ethernet test */
- eth_loopback_test ();
-#endif /* CONFIG_ETHER_LOOPBACK_TEST */
-
- return 0;
-}
-
-#endif /* CFG_CMD_BSP */
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/hymod/config.mk b/board/hymod/config.mk
deleted file mode 100644
index 0a9985f337..0000000000
--- a/board/hymod/config.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# (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
-#
-
-#
-# HYMOD boards
-#
-
-TEXT_BASE = 0x40000000
-
-PLATFORM_CPPFLAGS += -I$(TOPDIR)
-
-OBJCFLAGS = --remove-section=.ppcenv
diff --git a/board/hymod/eeprom.c b/board/hymod/eeprom.c
deleted file mode 100644
index c9b9b18110..0000000000
--- a/board/hymod/eeprom.c
+++ /dev/null
@@ -1,694 +0,0 @@
-/*
- * (C) Copyright 2001
- * Murray Jensen, CSIRO-MIT, <Murray.Jensen@csiro.au>
- *
- * 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 <common.h>
-#include <mpc8260.h>
-
-/* imports from fetch.c */
-extern int fetch_and_parse (char *, ulong, int (*)(uchar *, uchar *));
-
-/* imports from input.c */
-extern int hymod_get_serno (const char *);
-
-/* this is relative to the root of the server's tftp directory */
-static char *def_bddb_cfgdir = "/hymod/bddb";
-
-static int
-hymod_eeprom_load (int which, hymod_eeprom_t *ep)
-{
- unsigned dev_addr = CFG_I2C_EEPROM_ADDR | \
- (which ? HYMOD_EEOFF_MEZZ : HYMOD_EEOFF_MAIN);
- unsigned offset = 0;
- uchar data[HYMOD_EEPROM_MAXLEN], *dp, *edp;
- hymod_eehdr_t hdr;
- ulong len, crc;
-
- memset (ep, 0, sizeof *ep);
-
- eeprom_read (dev_addr, offset, (uchar *)&hdr, sizeof (hdr));
- offset += sizeof (hdr);
-
- if (hdr.id != HYMOD_EEPROM_ID || hdr.ver > HYMOD_EEPROM_VER ||
- (len = hdr.len) > HYMOD_EEPROM_MAXLEN)
- return (0);
-
- eeprom_read (dev_addr, offset, data, len);
- offset += len;
-
- eeprom_read (dev_addr, offset, (uchar *)&crc, sizeof (ulong));
- offset += sizeof (ulong);
-
- if (crc32 (crc32 (0, (uchar *)&hdr, sizeof hdr), data, len) != crc)
- return (0);
-
- ep->ver = hdr.ver;
- dp = data; edp = dp + len;
-
- for (;;) {
- ulong rtyp;
- uchar rlen, *rdat;
-
- rtyp = *dp++;
- if ((rtyp & 0x80) == 0)
- rlen = *dp++;
- else {
- uchar islarge = rtyp & 0x40;
-
- rtyp = ((rtyp & 0x3f) << 8) | *dp++;
- if (islarge) {
- rtyp = (rtyp << 8) | *dp++;
- rtyp = (rtyp << 8) | *dp++;
- }
-
- rlen = *dp++;
- rlen = (rlen << 8) | *dp++;
- if (islarge) {
- rlen = (rlen << 8) | *dp++;
- rlen = (rlen << 8) | *dp++;
- }
- }
-
- if (rtyp == 0)
- break;
-
- rdat = dp;
- dp += rlen;
-
- if (dp > edp) /* error? */
- break;
-
- switch (rtyp) {
-
- case HYMOD_EEREC_SERNO: /* serial number */
- if (rlen == sizeof (ulong))
- ep->serno = \
- ((ulong)rdat[0] << 24) | \
- ((ulong)rdat[1] << 16) | \
- ((ulong)rdat[2] << 8) | \
- (ulong)rdat[3];
- break;
-
- case HYMOD_EEREC_DATE: /* date */
- if (rlen == sizeof (hymod_date_t)) {
- ep->date.year = ((ushort)rdat[0] << 8) | \
- (ushort)rdat[1];
- ep->date.month = rdat[2];
- ep->date.day = rdat[3];
- }
- break;
-
- case HYMOD_EEREC_BATCH: /* batch */
- if (rlen <= HYMOD_MAX_BATCH)
- memcpy (ep->batch, rdat, ep->batchlen = rlen);
- break;
-
- case HYMOD_EEREC_TYPE: /* board type */
- if (rlen == 1)
- ep->bdtype = *rdat;
- break;
-
- case HYMOD_EEREC_REV: /* board revision */
- if (rlen == 1)
- ep->bdrev = *rdat;
- break;
-
- case HYMOD_EEREC_SDRAM: /* sdram size(s) */
- if (rlen > 0 && rlen <= HYMOD_MAX_SDRAM) {
- int i;
-
- for (i = 0; i < rlen; i++)
- ep->sdramsz[i] = rdat[i];
- ep->nsdram = rlen;
- }
- break;
-
- case HYMOD_EEREC_FLASH: /* flash size(s) */
- if (rlen > 0 && rlen <= HYMOD_MAX_FLASH) {
- int i;
-
- for (i = 0; i < rlen; i++)
- ep->flashsz[i] = rdat[i];
- ep->nflash = rlen;
- }
- break;
-
- case HYMOD_EEREC_ZBT: /* zbt ram size(s) */
- if (rlen > 0 && rlen <= HYMOD_MAX_ZBT) {
- int i;
-
- for (i = 0; i < rlen; i++)
- ep->zbtsz[i] = rdat[i];
- ep->nzbt = rlen;
- }
- break;
-
- case HYMOD_EEREC_XLXTYP: /* xilinx fpga type(s) */
- if (rlen > 0 && rlen <= HYMOD_MAX_XLX) {
- int i;
-
- for (i = 0; i < rlen; i++)
- ep->xlx[i].type = rdat[i];
- ep->nxlx = rlen;
- }
- break;
-
- case HYMOD_EEREC_XLXSPD: /* xilinx fpga speed(s) */
- if (rlen > 0 && rlen <= HYMOD_MAX_XLX) {
- int i;
-
- for (i = 0; i < rlen; i++)
- ep->xlx[i].speed = rdat[i];
- }
- break;
-
- case HYMOD_EEREC_XLXTMP: /* xilinx fpga temperature(s) */
- if (rlen > 0 && rlen <= HYMOD_MAX_XLX) {
- int i;
-
- for (i = 0; i < rlen; i++)
- ep->xlx[i].temp = rdat[i];
- }
- break;
-
- case HYMOD_EEREC_XLXGRD: /* xilinx fpga grade(s) */
- if (rlen > 0 && rlen <= HYMOD_MAX_XLX) {
- int i;
-
- for (i = 0; i < rlen; i++)
- ep->xlx[i].grade = rdat[i];
- }
- break;
-
- case HYMOD_EEREC_CPUTYP: /* CPU type */
- if (rlen == 1)
- ep->mpc.type = *rdat;
- break;
-
- case HYMOD_EEREC_CPUSPD: /* CPU speed */
- if (rlen == 1)
- ep->mpc.cpuspd = *rdat;
- break;
-
- case HYMOD_EEREC_CPMSPD: /* CPM speed */
- if (rlen == 1)
- ep->mpc.cpmspd = *rdat;
- break;
-
- case HYMOD_EEREC_BUSSPD: /* bus speed */
- if (rlen == 1)
- ep->mpc.busspd = *rdat;
- break;
-
- case HYMOD_EEREC_HSTYPE: /* hs-serial chip type */
- if (rlen == 1)
- ep->hss.type = *rdat;
- break;
-
- case HYMOD_EEREC_HSCHIN: /* num hs-serial input chans */
- if (rlen == 1)
- ep->hss.nchin = *rdat;
- break;
-
- case HYMOD_EEREC_HSCHOUT: /* num hs-serial output chans */
- if (rlen == 1)
- ep->hss.nchout = *rdat;
- break;
-
- default: /* ignore */
- break;
- }
- }
-
- return (1);
-}
-
-/* maps an ascii "name=value" into a binary eeprom data record */
-typedef
- struct _eerec_map {
- char *name;
- uint type;
- uchar *(*handler) \
- (struct _eerec_map *, uchar *, uchar *, uchar *);
- uint length;
- uint maxlen;
- }
-eerec_map_t;
-
-static uchar *
-uint_handler (eerec_map_t *rp, uchar *val, uchar *dp, uchar *edp)
-{
- char *eval;
- ulong lval;
-
- lval = simple_strtol ((char *)val, &eval, 10);
-
- if ((uchar *)eval == val || *eval != '\0') {
- printf ("%s rec (%s) is not a valid uint\n", rp->name, val);
- return (NULL);
- }
-
- if (dp + 2 + rp->length > edp) {
- printf ("can't fit %s rec into eeprom\n", rp->name);
- return (NULL);
- }
-
- *dp++ = rp->type;
- *dp++ = rp->length;
-
- switch (rp->length) {
-
- case 1:
- if (lval >= 256) {
- printf ("%s rec value (%lu) out of range (0-255)\n",
- rp->name, lval);
- return (NULL);
- }
- *dp++ = lval;
- break;
-
- case 2:
- if (lval >= 65536) {
- printf ("%s rec value (%lu) out of range (0-65535)\n",
- rp->name, lval);
- return (NULL);
- }
- *dp++ = lval >> 8;
- *dp++ = lval;
- break;
-
- case 4:
- *dp++ = lval >> 24;
- *dp++ = lval >> 16;
- *dp++ = lval >> 8;
- *dp++ = lval;
- break;
-
- default:
- printf ("huh? rp->length not 1, 2 or 4! (%d)\n", rp->length);
- return (NULL);
- }
-
- return (dp);
-}
-
-static uchar *
-date_handler (eerec_map_t *rp, uchar *val, uchar *dp, uchar *edp)
-{
- hymod_date_t date;
- char *p = (char *)val;
- char *ep;
- ulong lval;
-
- lval = simple_strtol (p, &ep, 10);
- if (ep == p || *ep++ != '-') {
-bad_date:
- printf ("%s rec (%s) is not a valid date\n", rp->name, val);
- return (NULL);
- }
- if (lval >= 65536)
- goto bad_date;
- date.year = lval;
-
- lval = simple_strtol (p = ep, &ep, 10);
- if (ep == p || *ep++ != '-' || lval == 0 || lval > 12)
- goto bad_date;
- date.month = lval;
-
- lval = simple_strtol (p = ep, &ep, 10);
- if (ep == p || *ep != '\0' || lval == 0 || lval > 31)
- goto bad_date;
- date.day = lval;
-
- if (dp + 2 + rp->length > edp) {
- printf ("can't fit %s rec into eeprom\n", rp->name);
- return (NULL);
- }
-
- *dp++ = rp->type;
- *dp++ = rp->length;
- *dp++ = date.year >> 8;
- *dp++ = date.year;
- *dp++ = date.month;
- *dp++ = date.day;
-
- return (dp);
-}
-
-static uchar *
-string_handler (eerec_map_t *rp, uchar *val, uchar *dp, uchar *edp)
-{
- uint len;
-
- if ((len = strlen ((char *)val)) > rp->maxlen) {
- printf ("%s rec (%s) string is too long (%d>%d)\n",
- rp->name, val, len, rp->maxlen);
- return (NULL);
- }
-
- if (dp + 2 + len > edp) {
- printf ("can't fit %s rec into eeprom\n", rp->name);
- return (NULL);
- }
-
- *dp++ = rp->type;
- *dp++ = len;
- memcpy (dp, val, len);
- dp += len;
-
- return (dp);
-}
-
-static uchar *
-bytes_handler (eerec_map_t *rp, uchar *val, uchar *dp, uchar *edp)
-{
- uchar bytes[HYMOD_MAX_BYTES], nbytes, *p;
- char *ep;
-
- for (nbytes = 0, p = val; *p != '\0'; p = (uchar *)ep) {
- ulong lval;
-
- lval = simple_strtol ((char *)p, &ep, 10);
- if ((uchar *)ep == p || (*ep != '\0' && *ep != ',') || \
- lval >= 256) {
- printf ("%s rec (%s) byte array has invalid uint\n",
- rp->name, val);
- return (NULL);
- }
- if (nbytes >= HYMOD_MAX_BYTES) {
- printf ("%s rec (%s) byte array too long\n",
- rp->name, val);
- return (NULL);
- }
- bytes[nbytes++] = lval;
-
- if (*ep != '\0')
- ep++;
- }
-
- if (dp + 2 + nbytes > edp) {
- printf ("can't fit %s rec into eeprom\n", rp->name);
- return (NULL);
- }
-
- *dp++ = rp->type;
- *dp++ = nbytes;
- memcpy (dp, bytes, nbytes);
- dp += nbytes;
-
- return (dp);
-}
-
-static eerec_map_t eerec_map[] = {
- /* name type handler len max */
- { "serno", HYMOD_EEREC_SERNO, uint_handler, 4, 0 },
- { "date", HYMOD_EEREC_DATE, date_handler, 4, 0 },
- { "batch", HYMOD_EEREC_BATCH, string_handler, 0, HYMOD_MAX_BATCH },
- { "type", HYMOD_EEREC_TYPE, uint_handler, 1, 0 },
- { "rev", HYMOD_EEREC_REV, uint_handler, 1, 0 },
- { "sdram", HYMOD_EEREC_SDRAM, bytes_handler, 0, HYMOD_MAX_SDRAM },
- { "flash", HYMOD_EEREC_FLASH, bytes_handler, 0, HYMOD_MAX_FLASH },
- { "zbt", HYMOD_EEREC_ZBT, bytes_handler, 0, HYMOD_MAX_ZBT },
- { "xlxtyp", HYMOD_EEREC_XLXTYP, bytes_handler, 0, HYMOD_MAX_XLX },
- { "xlxspd", HYMOD_EEREC_XLXSPD, bytes_handler, 0, HYMOD_MAX_XLX },
- { "xlxtmp", HYMOD_EEREC_XLXTMP, bytes_handler, 0, HYMOD_MAX_XLX },
- { "xlxgrd", HYMOD_EEREC_XLXGRD, bytes_handler, 0, HYMOD_MAX_XLX },
- { "cputyp", HYMOD_EEREC_CPUTYP, uint_handler, 1, 0 },
- { "cpuspd", HYMOD_EEREC_CPUSPD, uint_handler, 1, 0 },
- { "cpmspd", HYMOD_EEREC_CPMSPD, uint_handler, 1, 0 },
- { "busspd", HYMOD_EEREC_BUSSPD, uint_handler, 1, 0 },
- { "hstype", HYMOD_EEREC_HSTYPE, uint_handler, 1, 0 },
- { "hschin", HYMOD_EEREC_HSCHIN, uint_handler, 1, 0 },
- { "hschout", HYMOD_EEREC_HSCHOUT, uint_handler, 1, 0 },
-};
-
-static int neerecs = sizeof eerec_map / sizeof eerec_map[0];
-
-static uchar data[HYMOD_EEPROM_SIZE], *sdp, *dp, *edp;
-
-static int
-eerec_callback (uchar *name, uchar *val)
-{
- eerec_map_t *rp;
-
- for (rp = eerec_map; rp < &eerec_map[neerecs]; rp++)
- if (strcmp ((char *)name, rp->name) == 0)
- break;
-
- if (rp >= &eerec_map[neerecs])
- return (0);
-
- if ((dp = (*rp->handler) (rp, val, dp, edp)) == NULL)
- return (0);
-
- return (1);
-}
-
-static int
-hymod_eeprom_fetch(int which, char *filename, ulong addr)
-{
- unsigned dev_addr = CFG_I2C_EEPROM_ADDR | \
- (which ? HYMOD_EEOFF_MEZZ : HYMOD_EEOFF_MAIN);
- hymod_eehdr_t *hp = (hymod_eehdr_t *)&data[0];
- ulong crc;
-
- memset (hp, 0, sizeof *hp);
- hp->id = HYMOD_EEPROM_ID;
- hp->ver = HYMOD_EEPROM_VER;
-
- dp = sdp = (uchar *)(hp + 1);
- edp = dp + HYMOD_EEPROM_MAXLEN;
-
- if (fetch_and_parse (filename, addr, eerec_callback) == 0)
- return (0);
-
- hp->len = dp - sdp;
-
- crc = crc32 (0, data, dp - data);
- memcpy (dp, &crc, sizeof (ulong));
- dp += sizeof (ulong);
-
- eeprom_write (dev_addr, 0, data, dp - data);
-
- return (1);
-}
-
-static char *type_vals[] = {
- "NONE", "IO", "CLP", "DSP", "INPUT", "ALT-INPUT", "DISPLAY"
-};
-
-static char *xlxtyp_vals[] = {
- "NONE", "XCV300E", "XCV400E", "XCV600E"
-};
-
-static char *xlxspd_vals[] = {
- "NONE", "6", "7", "8"
-};
-
-static char *xlxtmp_vals[] = {
- "NONE", "COM", "IND"
-};
-
-static char *xlxgrd_vals[] = {
- "NONE", "NORMAL", "ENGSAMP"
-};
-
-static char *cputyp_vals[] = {
- "NONE", "MPC8260"
-};
-
-static char *clk_vals[] = {
- "NONE", "33", "66", "100", "133", "166", "200"
-};
-
-static char *hstype_vals[] = {
- "NONE", "AMCC-S2064A"
-};
-
-static void
-print_mem (char *l, char *s, uchar n, uchar a[])
-{
- if (n > 0) {
- if (n == 1)
- printf ("%s%dMB %s", s, 1 << (a[0] - 20), l);
- else {
- ulong t = 0;
- int i;
-
- for (i = 0; i < n; i++)
- t += 1 << (a[i] - 20);
-
- printf ("%s%luMB %s (%d banks:", s, t, l, n);
-
- for (i = 0; i < n; i++)
- printf ("%dMB%s",
- 1 << (a[i] - 20),
- (i == n - 1) ? ")" : ",");
- }
- }
- else
- printf ("%sNO %s", s, l);
-}
-
-void
-hymod_eeprom_print (hymod_eeprom_t *ep)
-{
- int i;
-
- printf (" Hymod %s board, rev %03d\n",
- type_vals[ep->bdtype], ep->bdrev);
-
- printf (" serial #: %010lu, date %04d-%02d-%02d",
- ep->serno, ep->date.year, ep->date.month, ep->date.day);
- if (ep->batchlen > 0)
- printf (", batch \"%.*s\"", ep->batchlen, ep->batch);
- puts ("\n");
-
- switch (ep->bdtype) {
-
- case HYMOD_BDTYPE_IO:
- case HYMOD_BDTYPE_CLP:
- case HYMOD_BDTYPE_DSP:
- printf (" Motorola %s CPU, speeds: %s/%s/%s",
- cputyp_vals[ep->mpc.type], clk_vals[ep->mpc.cpuspd],
- clk_vals[ep->mpc.cpmspd], clk_vals[ep->mpc.busspd]);
-
- print_mem ("SDRAM", ", ", ep->nsdram, ep->sdramsz);
-
- print_mem ("FLASH", ", ", ep->nflash, ep->flashsz);
-
- puts ("\n");
-
- print_mem ("ZBT", " ", ep->nzbt, ep->zbtsz);
-
- if (ep->nxlx > 0) {
- hymod_xlx_t *xp;
-
- if (ep->nxlx == 1) {
- xp = &ep->xlx[0];
- printf (", Xilinx %s FPGA (%s/%s/%s)",
- xlxtyp_vals[xp->type],
- xlxspd_vals[xp->speed],
- xlxtmp_vals[xp->temp],
- xlxgrd_vals[xp->grade]);
- }
- else {
- printf (", %d Xilinx FPGAs (", ep->nxlx);
- for (i = 0; i < ep->nxlx; i++) {
- xp = &ep->xlx[i];
- printf ("%s[%s/%s/%s]%s",
- xlxtyp_vals[xp->type],
- xlxspd_vals[xp->speed],
- xlxtmp_vals[xp->temp],
- xlxgrd_vals[xp->grade],
- (i == ep->nxlx - 1) ? ")" : ", ");
- }
- }
- }
- else
- puts(", NO FPGAs");
-
- puts ("\n");
-
- if (ep->hss.type > 0)
- printf (" High Speed Serial: "
- "%s, %d input%s, %d output%s\n",
- hstype_vals[ep->hss.type],
- ep->hss.nchin,
- (ep->hss.nchin == 1 ? "" : "s"),
- ep->hss.nchout,
- (ep->hss.nchout == 1 ? "" : "s"));
- break;
-
- case HYMOD_BDTYPE_INPUT:
- case HYMOD_BDTYPE_ALTINPUT:
- case HYMOD_BDTYPE_DISPLAY:
- break;
-
- default:
- /* crap! */
- printf (" UNKNOWN BOARD TYPE: %d\n", ep->bdtype);
- break;
- }
-}
-
-int
-hymod_eeprom_read (int which, hymod_eeprom_t *ep)
-{
- char *label = which ? "mezzanine" : "main";
- unsigned dev_addr = CFG_I2C_EEPROM_ADDR | \
- (which ? HYMOD_EEOFF_MEZZ : HYMOD_EEOFF_MAIN);
- char filename[50], prompt[50], *dir;
- int serno, count = 0, rc;
-
- rc = eeprom_probe (dev_addr, 0);
-
- if (rc > 0) {
- printf ("*** probe for eeprom failed with code %d\n", rc);
- return (0);
- }
-
- if (rc < 0)
- return (rc);
-
- sprintf (prompt, "Enter %s board serial number: ", label);
-
- if ((dir = getenv ("bddb_cfgdir")) == NULL)
- dir = def_bddb_cfgdir;
-
- for (;;) {
- int rc;
-
- if (hymod_eeprom_load (which, ep))
- return (1);
-
- printf ("*** %s board EEPROM contents are %sinvalid\n",
- label, count == 0 ? "" : "STILL ");
-
- puts ("*** will fetch from server (Ctrl-C to abort)\n");
-
- serno = hymod_get_serno (prompt);
-
- if (serno < 0) {
- if (serno == -1)
- puts ("\n*** interrupted!");
- else
- puts ("\n*** timeout!");
- puts (" - ignoring eeprom contents\n");
- return (0);
- }
-
- sprintf (filename, "%s/%010d.cfg", dir, serno);
-
- printf ("*** fetching %s board EEPROM contents from server\n",
- label);
-
- rc = hymod_eeprom_fetch (which, filename, CFG_LOAD_ADDR);
-
- if (rc == 0) {
- puts ("*** fetch failed - ignoring eeprom contents\n");
- return (0);
- }
-
- count++;
- }
-}
diff --git a/board/hymod/env.c b/board/hymod/env.c
deleted file mode 100644
index 062553bfad..0000000000
--- a/board/hymod/env.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * (C) Copyright 2003
- * Murray Jensen, CSIRO-MIT, <Murray.Jensen@csiro.au>
- *
- * 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 <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* imports from fetch.c */
-extern int fetch_and_parse (char *, ulong, int (*)(uchar *, uchar *));
-
-/* this is relative to the root of the server's tftp directory */
-static char *def_global_env_path = "/hymod/global_env";
-
-static int
-env_callback (uchar *name, uchar *value)
-{
- hymod_conf_t *cp = &gd->bd->bi_hymod_conf;
- char ov[CFG_CBSIZE], nv[CFG_CBSIZE], *p, *q, *nn, c, *curver, *newver;
- int override = 1, append = 0, remove = 0, nnl, ovl, nvl;
-
- nn = (char *)name;
-
- if (*nn == '-') {
- override = 0;
- nn++;
- }
-
- while (*nn == ' ' || *nn == '\t')
- nn++;
-
- if ((nnl = strlen (nn)) == 0) {
- printf ("Empty name in global env file\n");
- return (0);
- }
-
- if ((c = nn[nnl - 1]) == '+' || c == '-') {
- if (c == '+')
- append = 1;
- else
- remove = 1;
- nn[--nnl] = '\0';
- }
-
- while (nnl > 0 && ((c = nn[nnl - 1]) == ' ' || c == '\t'))
- nn[--nnl] = '\0';
- if (nnl == 0) {
- printf ("Empty name in global env file\n");
- return (0);
- }
-
- p = (char *)value;
- q = nv;
-
- while ((c = *p) == ' ' || c == '\t')
- p++;
-
- nvl = strlen (p);
- while (nvl > 0 && ((c = p[nvl - 1]) == ' ' || c == '\t'))
- p[--nvl] = '\0';
-
- while ((*q = *p++) != '\0') {
- if (*q == '%') {
- switch (*p++) {
-
- case '\0': /* whoops - back up */
- p--;
- break;
-
- case '%': /* a single percent character */
- q++;
- break;
-
- case 's': /* main board serial number as string */
- q += sprintf (q, "%010lu",
- cp->main.eeprom.serno);
- break;
-
- case 'S': /* main board serial number as number */
- q += sprintf (q, "%lu", cp->main.eeprom.serno);
- break;
-
- default: /* ignore any others */
- break;
- }
- }
- else
- q++;
- }
-
- if ((nvl = q - nv) == 0) {
- setenv (nn, NULL);
- return (1);
- }
-
- if ((curver = getenv ("global_env_version")) == NULL)
- curver = "unknown";
-
- if ((newver = getenv ("new_genv_version")) == NULL || \
- strcmp (curver, newver) == 0) {
- if (strcmp (nn, "version") == 0)
- setenv ("new_genv_version", nv);
- return (1);
- }
-
- if ((p = getenv (nn)) != NULL) {
-
- strcpy (ov, p);
- ovl = strlen (ov);
-
- if (append) {
-
- if (strstr (ov, nv) == NULL) {
-
- printf ("Appending '%s' to env var '%s'\n",
- nv, nn);
-
- while (nvl >= 0) {
- nv[ovl + 1 + nvl] = nv[nvl];
- nvl--;
- }
-
- nv[ovl] = ' ';
-
- while (--ovl >= 0)
- nv[ovl] = ov[ovl];
-
- setenv (nn, nv);
- }
-
- return (1);
- }
-
- if (remove) {
-
- if (strstr (ov, nv) != NULL) {
-
- printf ("Removing '%s' from env var '%s'\n",
- nv, nn);
-
- while ((p = strstr (ov, nv)) != NULL) {
- q = p + nvl;
- if (*q == ' ')
- q++;
- strcpy(p, q);
- }
-
- setenv (nn, ov);
- }
-
- return (1);
- }
-
- if (!override || strcmp (ov, nv) == 0)
- return (1);
-
- printf ("Re-setting env cmd '%s' from '%s' to '%s'\n",
- nn, ov, nv);
- }
- else
- printf ("Setting env cmd '%s' to '%s'\n", nn, nv);
-
- setenv (nn, nv);
- return (1);
-}
-
-void
-hymod_check_env (void)
-{
- char *p, *path, *curver, *newver;
- int firsttime = 0, needsave = 0;
-
- if (getenv ("global_env_loaded") == NULL) {
- puts ("*** global environment has never been loaded\n");
- puts ("*** fetching from server");
- firsttime = 1;
- }
- else if ((p = getenv ("always_check_env")) != NULL &&
- strcmp (p, "yes") == 0)
- puts ("*** checking for updated global environment");
- else
- return;
-
- puts (" (Control-C to Abort)\n");
-
- if ((path = getenv ("global_env_path")) == NULL || *path == '\0')
- path = def_global_env_path;
-
- if (fetch_and_parse (path, CFG_LOAD_ADDR, env_callback) == 0) {
- puts ("*** Fetch of global environment failed!\n");
- return;
- }
-
- if ((newver = getenv ("new_genv_version")) == NULL) {
- puts ("*** Version number not set - contents ignored!\n");
- return;
- }
-
- if ((curver = getenv ("global_env_version")) == NULL || \
- strcmp (curver, newver) != 0) {
- setenv ("global_env_version", newver);
- needsave = 1;
- }
- else
- printf ("*** Global environment up-to-date (ver %s)\n", curver);
-
- setenv ("new_genv_version", NULL);
-
- if (firsttime) {
- setenv ("global_env_loaded", "yes");
- needsave = 1;
- }
-
- if (needsave)
- puts ("\n*** Remember to run the 'saveenv' "
- "command to save the changes\n\n");
-}
diff --git a/board/hymod/fetch.c b/board/hymod/fetch.c
deleted file mode 100644
index e121d5565e..0000000000
--- a/board/hymod/fetch.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * (C) Copyright 2001
- * Murray Jensen, CSIRO-MIT, <Murray.Jensen@csiro.au>
- *
- * 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 <common.h>
-#include <net.h>
-
-/* imports from input.c */
-extern int hymod_get_ethaddr (void);
-
-int
-fetch_and_parse (char *fn, ulong addr, int (*cback)(uchar *, uchar *))
-{
- char *ethaddr;
- uchar *fp, *efp;
- int rc, count = 0;
-
- while ((ethaddr = getenv ("ethaddr")) == NULL || *ethaddr == '\0') {
-
- printf ("*** Ethernet address is%s not set\n",
- count == 0 ? "" : " STILL");
-
- if ((rc = hymod_get_ethaddr ()) < 0) {
- if (rc == -1)
- puts ("\n*** interrupted!");
- else
- puts ("\n*** timeout!");
- printf (" - fetch of '%s' aborted\n", fn);
- return (0);
- }
-
- count++;
- }
-
- copy_filename (BootFile, fn, sizeof (BootFile));
- load_addr = addr;
- NetBootFileXferSize = 0;
-
- if (NetLoop (TFTP) == 0) {
- printf ("tftp transfer of file '%s' failed\n", fn);
- return (0);
- }
-
- if (NetBootFileXferSize == 0) {
- printf ("can't determine size of file '%s'\n", fn);
- return (0);
- }
-
- fp = (uchar *)load_addr;
- efp = fp + NetBootFileXferSize;
-
- do {
- uchar *name, *value;
-
- if (*fp == '#' || *fp == '\n') {
- /* skip this line */
- while (fp < efp && *fp++ != '\n')
- ;
- continue;
- }
-
- name = fp;
-
- while (fp < efp && *fp != '=' && *fp != '\n')
- fp++;
- if (fp >= efp)
- break;
- if (*fp == '\n') {
- fp++;
- continue;
- }
- *fp++ = '\0';
-
- value = fp;
-
- while (fp < efp && *fp != '\n')
- fp++;
- if (fp[-1] == '\r')
- fp[-1] = '\0';
- *fp++ = '\0'; /* ok if we go off the end here */
-
- if ((*cback)(name, value) == 0)
- return (0);
-
- } while (fp < efp);
-
- return (1);
-}
diff --git a/board/hymod/flash.c b/board/hymod/flash.c
deleted file mode 100644
index ad0a229d9f..0000000000
--- a/board/hymod/flash.c
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
- * (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
- *
- * Hacked for the Hymod board by Murray.Jensen@csiro.au, 20-Oct-00
- */
-
-#include <common.h>
-#include <mpc8260.h>
-#include <board/hymod/flash.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Protection Flags:
- */
-#define FLAG_PROTECT_SET 0x01
-#define FLAG_PROTECT_CLEAR 0x02
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * probe for flash bank at address "base" and store info about it
- * in the flash_info entry "fip". Fatal error if nothing there.
- */
-static void
-bank_probe (flash_info_t *fip, volatile bank_addr_t base)
-{
- volatile bank_addr_t addr;
- bank_word_t word;
- int i;
-
- /* reset the flash */
- *base = BANK_CMD_RST;
-
- /* put flash into read id mode */
- *base = BANK_CMD_RD_ID;
-
- /* check the manufacturer id - must be intel */
- word = *BANK_REG_MAN_CODE (base);
- if (word != BANK_FILL_WORD (INTEL_MANUFACT&0xff))
- panic ("\nbad manufacturer's code (0x%08lx) at addr 0x%08lx",
- (unsigned long)word, (unsigned long)base);
-
- /* check the device id */
- word = *BANK_REG_DEV_CODE (base);
- switch (word) {
-
- case BANK_FILL_WORD (INTEL_ID_28F320J5&0xff):
- fip->flash_id = FLASH_MAN_INTEL | FLASH_28F320J5;
- fip->sector_count = 32;
- break;
-
- case BANK_FILL_WORD (INTEL_ID_28F640J5&0xff):
- fip->flash_id = FLASH_MAN_INTEL | FLASH_28F640J5;
- fip->sector_count = 64;
- break;
-
- case BANK_FILL_WORD (INTEL_ID_28F320J3A&0xff):
- fip->flash_id = FLASH_MAN_INTEL | FLASH_28F320J3A;
- fip->sector_count = 32;
- break;
-
- case BANK_FILL_WORD (INTEL_ID_28F640J3A&0xff):
- fip->flash_id = FLASH_MAN_INTEL | FLASH_28F640J3A;
- fip->sector_count = 64;
- break;
-
- case BANK_FILL_WORD (INTEL_ID_28F128J3A&0xff):
- fip->flash_id = FLASH_MAN_INTEL | FLASH_28F128J3A;
- fip->sector_count = 128;
- break;
-
- default:
- panic ("\nbad device code (0x%08lx) at addr 0x%08lx",
- (unsigned long)word, (unsigned long)base);
- }
-
- if (fip->sector_count >= CFG_MAX_FLASH_SECT)
- panic ("\ntoo many sectors (%d) in flash at address 0x%08lx",
- fip->sector_count, (unsigned long)base);
-
- addr = base;
- for (i = 0; i < fip->sector_count; i++) {
- fip->start[i] = (unsigned long)addr;
- fip->protect[i] = 0;
- addr = BANK_ADDR_NEXT_BLK (addr);
- }
-
- fip->size = (bank_size_t)addr - (bank_size_t)base;
-
- /* reset the flash */
- *base = BANK_CMD_RST;
-}
-
-static void
-bank_reset (flash_info_t *info, int sect)
-{
- volatile bank_addr_t addr = (bank_addr_t)info->start[sect];
-
-#ifdef FLASH_DEBUG
- printf ("writing reset cmd to addr 0x%08lx\n", (unsigned long)addr);
-#endif
-
- *addr = BANK_CMD_RST;
-}
-
-static void
-bank_erase_init (flash_info_t *info, int sect)
-{
- volatile bank_addr_t addr = (bank_addr_t)info->start[sect];
- int flag;
-
-#ifdef FLASH_DEBUG
- printf ("erasing sector %d, addr = 0x%08lx\n",
- sect, (unsigned long)addr);
-#endif
-
- /* Disable intrs which might cause a timeout here */
- flag = disable_interrupts ();
-
-#ifdef FLASH_DEBUG
- printf ("writing erase cmd to addr 0x%08lx\n", (unsigned long)addr);
-#endif
- *addr = BANK_CMD_ERASE1;
- *addr = BANK_CMD_ERASE2;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-}
-
-static int
-bank_erase_poll (flash_info_t *info, int sect)
-{
- volatile bank_addr_t addr = (bank_addr_t)info->start[sect];
- bank_word_t stat = *addr;
-
-#ifdef FLASH_DEBUG
- printf ("checking status at addr 0x%08lx [0x%08lx]\n",
- (unsigned long)addr, (unsigned long)stat);
-#endif
-
- if ((stat & BANK_STAT_RDY) == BANK_STAT_RDY) {
- if ((stat & BANK_STAT_ERR) != 0) {
- printf ("failed on sector %d [0x%08lx] at "
- "address 0x%08lx\n", sect,
- (unsigned long)stat, (unsigned long)addr);
- *addr = BANK_CMD_CLR_STAT;
- return (-1);
- }
- else
- return (1);
- }
- else
- return (0);
-}
-
-static int
-bank_write_word (volatile bank_addr_t addr, bank_word_t value)
-{
- bank_word_t stat;
- ulong start;
- int flag, retval;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = BANK_CMD_PROG;
-
- *addr = value;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- retval = 0;
-
- /* data polling for D7 */
- start = get_timer (0);
- do {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- retval = 1;
- goto done;
- }
- stat = *addr;
- } while ((stat & BANK_STAT_RDY) != BANK_STAT_RDY);
-
- if ((stat & BANK_STAT_ERR) != 0) {
- printf ("flash program failed [0x%08lx] at address 0x%08lx\n",
- (unsigned long)stat, (unsigned long)addr);
- *addr = BANK_CMD_CLR_STAT;
- retval = 3;
- }
-
-done:
- /* reset to read mode */
- *addr = BANK_CMD_RST;
-
- return (retval);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long
-flash_init (void)
-{
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- bank_probe (&flash_info[0], (bank_addr_t)CFG_FLASH_BASE);
-
- /*
- * protect monitor and environment sectors
- */
-
-#if CFG_MONITOR_BASE == CFG_FLASH_BASE
- (void)flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#if defined(CFG_FLASH_ENV_ADDR)
- (void)flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_ENV_ADDR,
-#if defined(CFG_FLASH_ENV_BUF)
- CFG_FLASH_ENV_ADDR + CFG_FLASH_ENV_BUF - 1,
-#else
- CFG_FLASH_ENV_ADDR + CFG_FLASH_ENV_SIZE - 1,
-#endif
- &flash_info[0]);
-#endif
-
- return flash_info[0].size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void
-flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J5: printf ("28F320J5 (32 Mbit, 2 x 16bit)\n");
- break;
- case FLASH_28F640J5: printf ("28F640J5 (64 Mbit, 2 x 16bit)\n");
- break;
- case FLASH_28F320J3A: printf ("28F320J3A (32 Mbit, 2 x 16bit)\n");
- break;
- case FLASH_28F640J3A: printf ("28F640J3A (64 Mbit, 2 x 16bit)\n");
- break;
- case FLASH_28F128J3A: printf ("28F320J3A (128 Mbit, 2 x 16bit)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-/*-----------------------------------------------------------------------
- */
-
-int
-flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int prot, sect, haderr;
- ulong start, now, last;
- int rcode = 0;
-
-#ifdef FLASH_DEBUG
- printf ("\nflash_erase: erase %d sectors (%d to %d incl.) from\n"
- " Bank # %d: ", s_last - s_first + 1, s_first, s_last,
- (info - flash_info) + 1);
- flash_print_info (info);
-#endif
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sector%s will not be erased\n",
- prot, (prot > 1 ? "s" : ""));
- }
-
- start = get_timer (0);
- last = 0;
- haderr = 0;
-
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- ulong estart;
- int sectdone;
-
- bank_erase_init (info, sect);
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- estart = get_timer (start);
-
- do {
- now = get_timer (start);
-
- if (now - estart > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout (sect %d)\n", sect);
- haderr = 1;
- rcode = 1;
- break;
- }
-
-#ifndef FLASH_DEBUG
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
-#endif
-
- sectdone = bank_erase_poll (info, sect);
-
- if (sectdone < 0) {
- haderr = 1;
- rcode = 1;
- break;
- }
-
- } while (!sectdone);
-
- if (haderr)
- break;
- }
- }
-
- if (haderr > 0)
- printf (" failed\n");
- else
- printf (" done\n");
-
- /* reset to read mode */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- bank_reset (info, sect);
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 3 - Program failed
- */
-static int
-write_word (flash_info_t *info, ulong dest, ulong data)
-{
- /* Check if Flash is (sufficiently) erased */
- if ((*(ulong *)dest & data) != data)
- return (2);
-
- return (bank_write_word ((bank_addr_t)dest, (bank_word_t)data));
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 3 - Program failed
- */
-
-int
-write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/hymod/flash.h b/board/hymod/flash.h
deleted file mode 100644
index ee047fe6e1..0000000000
--- a/board/hymod/flash.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * (C) Copyright 2000
- * Murray Jensen, CSIRO-MIT, <Murray.Jensen@csiro.au>
- *
- * 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
- */
-
-/*************** DEFINES for Intel StrataFlash FLASH chip ********************/
-
-/* Commands */
-#define ISF_CMD_RST 0xFF /* reset flash */
-#define ISF_CMD_RD_ID 0x90 /* read the id and lock bits */
-#define ISF_CMD_RD_QUERY 0x98 /* read device capabilities */
-#define ISF_CMD_RD_STAT 0x70 /* read the status register */
-#define ISF_CMD_CLR_STAT 0x50 /* clear the staus register */
-#define ISF_CMD_WR_BUF 0xE8 /* clear the staus register */
-#define ISF_CMD_PROG 0x40 /* program word command */
-#define ISF_CMD_ERASE1 0x20 /* 1st word for block erase */
-#define ISF_CMD_ERASE2 0xD0 /* 2nd word for block erase */
-#define ISF_CMD_ERASE_SUSP 0xB0 /* suspend block erase */
-#define ISF_CMD_LOCK 0x60 /* 1st word for all lock cmds */
-#define ISF_CMD_SET_LOCK_BLK 0x01 /* 2nd wrd set block lock bit */
-#define ISF_CMD_SET_LOCK_MSTR 0xF1 /* 2nd wrd set master lck bit */
-#define ISF_CMD_CLR_LOCK_BLK 0xD0 /* 2nd wrd clear blk lck bit */
-
-/* status register bits */
-#define ISF_STAT_DPS 0x02 /* Device Protect Status */
-#define ISF_STAT_VPPS 0x08 /* VPP Status */
-#define ISF_STAT_PSLBS 0x10 /* Program+Set Lock Bit Stat */
-#define ISF_STAT_ECLBS 0x20 /* Erase+Clr Lock Bit Stat */
-#define ISF_STAT_ESS 0x40 /* Erase Suspend Status */
-#define ISF_STAT_RDY 0x80 /* WSM Mach Status, 1=rdy */
-
-#define ISF_STAT_ERR (ISF_STAT_VPPS | ISF_STAT_DPS | \
- ISF_STAT_ECLBS | ISF_STAT_PSLBS)
-
-/* register addresses, valid only following an ISF_CMD_RD_ID command */
-#define ISF_REG_MAN_CODE 0x00 /* manufacturer code */
-#define ISF_REG_DEV_CODE 0x01 /* device code */
-#define ISF_REG_BLK_LCK 0x02 /* block lock configuration */
-#define ISF_REG_MST_LCK 0x03 /* master lock configuration */
-
-/********************** DEFINES for Hymod Flash ******************************/
-
-/*
- * this code requires that the flash on any Hymod board appear as a bank
- * of two (identical) 16bit Intel StrataFlash chips with 64Kword erase
- * sectors (or blocks), running in x16 bit mode and connected side-by-side
- * to make a 32-bit wide bus.
- */
-
-typedef unsigned long bank_word_t;
-typedef bank_word_t bank_blk_t[64 * 1024];
-
-#define BANK_FILL_WORD(b) (((bank_word_t)(b) << 16) | (bank_word_t)(b))
-
-#ifdef EXAMPLE
-
-/* theoretically the following examples should also work */
-
-/* one flash chip in x8 mode with 128Kword sectors and 8bit bus */
-typedef unsigned char bank_word_t;
-typedef bank_word_t bank_blk_t[128 * 1024];
-#define BANK_FILL_WORD(b) ((bank_word_t)(b))
-
-/* four flash chips in x16 mode with 32Kword sectors and 64bit bus */
-typedef unsigned long long bank_word_t;
-typedef bank_word_t bank_blk_t[32 * 1024];
-#define BANK_FILL_WORD(b) ( \
- ((bank_word_t)(b) << 48) \
- ((bank_word_t)(b) << 32) \
- ((bank_word_t)(b) << 16) \
- ((bank_word_t)(b) << 0) \
- )
-
-#endif /* EXAMPLE */
-
-/* the sizes of these two types should probably be the same */
-typedef bank_word_t *bank_addr_t;
-typedef unsigned long bank_size_t;
-
-/* align bank addresses and sizes to bank word boundaries */
-#define BANK_ADDR_WORD_ALIGN(a) ((bank_addr_t)((bank_size_t)(a) \
- & ~(sizeof (bank_word_t) - 1)))
-#define BANK_SIZE_WORD_ALIGN(s) (((bank_size_t)(s) + sizeof (bank_word_t) - 1) \
- & ~(sizeof (bank_word_t) - 1))
-
-/* align bank addresses and sizes to bank block boundaries */
-#define BANK_ADDR_BLK_ALIGN(a) ((bank_addr_t)((bank_size_t)(a) \
- & ~(sizeof (bank_blk_t) - 1)))
-#define BANK_SIZE_BLK_ALIGN(s) (((bank_size_t)(s) + sizeof (bank_blk_t) - 1) \
- & ~(sizeof (bank_blk_t) - 1))
-
-/* add an offset to a bank address */
-#define BANK_ADDR_OFFSET(a, o) ((bank_addr_t)((bank_size_t)(a) + \
- (bank_size_t)(o)))
-
-/* adjust a bank address to start of next word, block or bank */
-#define BANK_ADDR_NEXT_WORD(a) BANK_ADDR_OFFSET(BANK_ADDR_WORD_ALIGN(a), \
- sizeof (bank_word_t))
-#define BANK_ADDR_NEXT_BLK(a) BANK_ADDR_OFFSET(BANK_ADDR_BLK_ALIGN(a), \
- sizeof (bank_blk_t))
-
-/* get bank address of register r given a bank base address a and block num b */
-#define BANK_ADDR_REG(a, b, r) BANK_ADDR_OFFSET(BANK_ADDR_OFFSET((a), \
- (bank_size_t)(b) * sizeof (bank_blk_t)), \
- (bank_size_t)(r) * sizeof (bank_word_t))
-
-/* make a bank word value for each StrataFlash value */
-
-/* Commands */
-#define BANK_CMD_RST BANK_FILL_WORD(ISF_CMD_RST)
-#define BANK_CMD_RD_ID BANK_FILL_WORD(ISF_CMD_RD_ID)
-#define BANK_CMD_RD_STAT BANK_FILL_WORD(ISF_CMD_RD_STAT)
-#define BANK_CMD_CLR_STAT BANK_FILL_WORD(ISF_CMD_CLR_STAT)
-#define BANK_CMD_ERASE1 BANK_FILL_WORD(ISF_CMD_ERASE1)
-#define BANK_CMD_ERASE2 BANK_FILL_WORD(ISF_CMD_ERASE2)
-#define BANK_CMD_PROG BANK_FILL_WORD(ISF_CMD_PROG)
-#define BANK_CMD_LOCK BANK_FILL_WORD(ISF_CMD_LOCK)
-#define BANK_CMD_SET_LOCK_BLK BANK_FILL_WORD(ISF_CMD_SET_LOCK_BLK)
-#define BANK_CMD_SET_LOCK_MSTR BANK_FILL_WORD(ISF_CMD_SET_LOCK_MSTR)
-#define BANK_CMD_CLR_LOCK_BLK BANK_FILL_WORD(ISF_CMD_CLR_LOCK_BLK)
-
-/* status register bits */
-#define BANK_STAT_DPS BANK_FILL_WORD(ISF_STAT_DPS)
-#define BANK_STAT_PSS BANK_FILL_WORD(ISF_STAT_PSS)
-#define BANK_STAT_VPPS BANK_FILL_WORD(ISF_STAT_VPPS)
-#define BANK_STAT_PSLBS BANK_FILL_WORD(ISF_STAT_PSLBS)
-#define BANK_STAT_ECLBS BANK_FILL_WORD(ISF_STAT_ECLBS)
-#define BANK_STAT_ESS BANK_FILL_WORD(ISF_STAT_ESS)
-#define BANK_STAT_RDY BANK_FILL_WORD(ISF_STAT_RDY)
-
-#define BANK_STAT_ERR BANK_FILL_WORD(ISF_STAT_ERR)
-
-/* make a bank register address for each StrataFlash register address */
-
-#define BANK_REG_MAN_CODE(a) BANK_ADDR_REG((a), 0, ISF_REG_MAN_CODE)
-#define BANK_REG_DEV_CODE(a) BANK_ADDR_REG((a), 0, ISF_REG_DEV_CODE)
-#define BANK_REG_BLK_LCK(a, b) BANK_ADDR_REG((a), (b), ISF_REG_BLK_LCK)
-#define BANK_REG_MST_LCK(a) BANK_ADDR_REG((a), 0, ISF_REG_MST_LCK)
diff --git a/board/hymod/global_env b/board/hymod/global_env
deleted file mode 100644
index f61d0807df..0000000000
--- a/board/hymod/global_env
+++ /dev/null
@@ -1,161 +0,0 @@
-# DONT FORGET TO CHANGE THE "version" VAR BELOW IF YOU MAKE CHANGES TO THIS FILE
-
-# (C) Copyright 2001
-# Murray Jensen, CSIRO-MIT, <Murray.Jensen@csiro.au>
-#
-# 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_env
-#
-# file used by Hymod boards to initialise the u-boot non-volatile
-# environment when u-boot is first run (it determines this by the
-# absence of the environment variable "global_env_loaded")
-#
-# format of this file is:
-#
-# 1. blank lines and lines beginning with '#' are ignored
-# 2. all other lines must have the form <name>=<value>
-# 3. if a percent appears anywhere, it is replaced like so:
-#
-# %s serial number of the main board (10 digit zero filled)
-# %S serial number of the main board (plain number)
-# %% a percentage character
-# ... otherwise the %x is discarded
-#
-# if first character in <name> is a dash ('-'), then an existing env var
-# will not be overwritten (the dash is removed). i.e. it is only set if
-# it does not exist
-#
-# if last character in <name> is a plus ('+'), then <value> will be appended
-# to any existing env var (the plus is ignored). Duplicates of <value> are
-# removed.
-#
-# similarly, if the last character in <name> is a minus ('-'), then any
-# occurences of <value> in the current value of <name> will removed (the
-# minus is ignored).
-#
-# leading and trailing whitespace is removed in both <name> and <value>
-# (after processing any initial or final plus/minus in <name>).
-#
-
-# MISCELLANEOUS PARAMETERS
-
-# version must always come first
-version=4
-
-# set the ip address based on the main board serial number
-ipaddr=192.168.1.%S
-serverip=192.168.1.254
-
-# stop auto execute after tftp (not a very good name really)
-autostart=no
-
-# setting this to "yes" forces the global_env file to be loaded and processed
-# if the current version is different to the version in the file
-always_check_env=no
-
-# BOOTING COMMANDS AND PARAMETERS
-
-# command to run when "auto-booting"
-bootcmd=bootm 40080000
-
-# how long the "countdown" to automatically running "bootcmd" is
-bootdelay=2
-
-# how long before it "times out" console input and attempts to run "bootcmd"
-bootretry=5
-
-# arguments passed to the boot program (i.e. linux kernel) via register 6
-# the linux kernel (v2.4) uses the following registers:
-# r3 - address of board information structure
-# r4 - address of initial ramdisk image (0 means no initrd)
-# r5 - size of initial ramdisk image
-# r6 - address of command line string
--bootargs=root=/dev/mtdblock5 rootfstype=squashfs ro
-
-# these four are for hymod linux integrated into our Sun network
-bootargs+=serialno=%S
-bootargs+=nisclient nisdomain=mlb.dmt.csiro.au nissrvadr=138.194.112.4
-bootargs+=nfsclient
-bootargs+=automount
-
-# start a web server by default
-bootargs+=webserver
-
-# give negotiation time to finish
-bootargs+=netsleep=5
-
-# then our ciscos don't pass packets for 25-30 secs after that, so
-# pinging the server until it responds prevents network connections
-# from failing...
-bootargs+=netping
-
-# these are old bootargs - we don't need them anymore
-bootargs-=preload=unix,i2c-cpm,i2c-dev
-bootargs-=ramdisk_size=32768
-bootargs-=ramdisk_size=24576
-
-# FLASH MANIPULATION COMMANDS
-
-#
-# 16M flash, 64 x 256K sectors, mapped at address 0x40000000
-#
-# Sector(s) Address Size Description
-#
-# 0 - 0 0x40000000 256K boot code
-# 1 - 1 0x40040000 256K non volatile environment
-# 2 - 4 0x40080000 768K linux kernel image
-# 5 - 7 0x40140000 768K alternate linux kernel image
-# 8 - 47 0x40200000 10M linux initial ramdisk image
-# 48 - 63 0x40c00000 4M ramdisk image for applications
-#
-
-fetchboot=tftp 100000 /hymod/u-boot.bin
-eraseboot=protect off 1:0 ; erase 1:0 ; protect on 1:0
-copyboot=protect off 1:0 ; cp.b 100000 40000000 40000 ; protect on 1:0
-cmpboot=cmp.b 100000 40000000 40000
-newboot=run fetchboot eraseboot copyboot cmpboot
-
-fetchlinux=tftp 100000 /hymod/linux.bin
-eraselinux=erase 1:2-4
-copylinux=cp.b 100000 40080000 ${filesize}
-cmplinux=cmp.b 100000 40080000 ${filesize}
-newlinux=run fetchlinux eraselinux copylinux cmplinux
-
-fetchaltlinux=tftp 100000 /hymod/altlinux.bin
-erasealtlinux=erase 1:5-7
-copyaltlinux=cp.b 100000 40140000 ${filesize}
-cmpaltlinux=cmp.b 100000 40140000 ${filesize}
-newaltlinux=run fetchaltlinux erasealtlinux copyaltlinux cmpaltlinux
-
-fetchroot=tftp 100000 /hymod/root.bin
-eraseroot=erase 1:8-47
-copyroot=cp.b 100000 40200000 ${filesize}
-cmproot=cmp.b 100000 40200000 ${filesize}
-newroot=run fetchroot eraseroot copyroot cmproot
-
-fetchard=tftp 100000 /hymod/apprd.bin
-eraseard=erase 1:48-63
-copyard=cp.b 100000 40c00000 ${filesize}
-cmpard=cmp.b 100000 40c00000 ${filesize}
-newapprd=run fetchard eraseard copyard cmpard
-
-# pass above map to linux mtd driver
-bootargs+=mtdparts=phys:256k(u-boot),256k(u-boot-env),768k(linux),768k(altlinux),10m(root),4m(hymod)
diff --git a/board/hymod/hymod.c b/board/hymod/hymod.c
deleted file mode 100644
index 5e98e9edb7..0000000000
--- a/board/hymod/hymod.c
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
- * (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
- *
- * Hacked for the Hymod board by Murray.Jensen@csiro.au, 20-Oct-00
- */
-
-#include <common.h>
-#include <mpc8260.h>
-#include <mpc8260_irq.h>
-#include <ioports.h>
-#include <i2c.h>
-#include <asm/iopin_8260.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-/* imports from eeprom.c */
-extern int hymod_eeprom_read (int, hymod_eeprom_t *);
-extern void hymod_eeprom_print (hymod_eeprom_t *);
-
-/* imports from env.c */
-extern void hymod_check_env (void);
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- {
- /* cnf par sor dir odr dat */
- { 1, 1, 1, 0, 0, 0 }, /* PA31: FCC1 MII COL */
- { 1, 1, 1, 0, 0, 0 }, /* PA30: FCC1 MII CRS */
- { 1, 1, 1, 1, 0, 0 }, /* PA29: FCC1 MII TX_ER */
- { 1, 1, 1, 1, 0, 0 }, /* PA28: FCC1 MII TX_EN */
- { 1, 1, 1, 0, 0, 0 }, /* PA27: FCC1 MII RX_DV */
- { 1, 1, 1, 0, 0, 0 }, /* PA26: FCC1 MII RX_ER */
- { 1, 0, 0, 1, 0, 0 }, /* PA25: FCC2 MII MDIO */
- { 1, 0, 0, 1, 0, 0 }, /* PA24: FCC2 MII MDC */
- { 1, 0, 0, 1, 0, 0 }, /* PA23: FCC3 MII MDIO */
- { 1, 0, 0, 1, 0, 0 }, /* PA22: FCC3 MII MDC */
- { 1, 1, 0, 1, 0, 0 }, /* PA21: FCC1 MII TxD[3] */
- { 1, 1, 0, 1, 0, 0 }, /* PA20: FCC1 MII TxD[2] */
- { 1, 1, 0, 1, 0, 0 }, /* PA19: FCC1 MII TxD[1] */
- { 1, 1, 0, 1, 0, 0 }, /* PA18: FCC1 MII TxD[0] */
- { 1, 1, 0, 0, 0, 0 }, /* PA17: FCC1 MII RxD[3] */
- { 1, 1, 0, 0, 0, 0 }, /* PA16: FCC1 MII RxD[2] */
- { 1, 1, 0, 0, 0, 0 }, /* PA15: FCC1 MII RxD[1] */
- { 1, 1, 0, 0, 0, 0 }, /* PA14: FCC1 MII RxD[0] */
- { 1, 0, 0, 1, 0, 0 }, /* PA13: FCC1 MII MDIO */
- { 1, 0, 0, 1, 0, 0 }, /* PA12: FCC1 MII MDC */
- { 1, 0, 0, 1, 0, 0 }, /* PA11: SEL_CD */
- { 1, 0, 0, 0, 0, 0 }, /* PA10: FLASH STS1 */
- { 1, 0, 0, 0, 0, 0 }, /* PA09: FLASH STS0 */
- { 1, 0, 0, 0, 0, 0 }, /* PA08: FLASH ~PE */
- { 1, 0, 0, 0, 0, 0 }, /* PA07: WATCH ~HRESET */
- { 1, 0, 0, 0, 1, 0 }, /* PA06: VC DONE */
- { 1, 0, 0, 1, 1, 0 }, /* PA05: VC INIT */
- { 1, 0, 0, 1, 0, 0 }, /* PA04: VC ~PROG */
- { 1, 0, 0, 1, 0, 0 }, /* PA03: VM ENABLE */
- { 1, 0, 0, 0, 1, 0 }, /* PA02: VM DONE */
- { 1, 0, 0, 1, 1, 0 }, /* PA01: VM INIT */
- { 1, 0, 0, 1, 0, 0 } /* PA00: VM ~PROG */
- },
-
- /* Port B configuration */
- {
- /* cnf par sor dir odr dat */
- { 1, 1, 0, 1, 0, 0 }, /* PB31: FCC2 MII TX_ER */
- { 1, 1, 0, 0, 0, 0 }, /* PB30: FCC2 MII RX_DV */
- { 1, 1, 1, 1, 0, 0 }, /* PB29: FCC2 MII TX_EN */
- { 1, 1, 0, 0, 0, 0 }, /* PB28: FCC2 MII RX_ER */
- { 1, 1, 0, 0, 0, 0 }, /* PB27: FCC2 MII COL */
- { 1, 1, 0, 0, 0, 0 }, /* PB26: FCC2 MII CRS */
- { 1, 1, 0, 1, 0, 0 }, /* PB25: FCC2 MII TxD[3] */
- { 1, 1, 0, 1, 0, 0 }, /* PB24: FCC2 MII TxD[2] */
- { 1, 1, 0, 1, 0, 0 }, /* PB23: FCC2 MII TxD[1] */
- { 1, 1, 0, 1, 0, 0 }, /* PB22: FCC2 MII TxD[0] */
- { 1, 1, 0, 0, 0, 0 }, /* PB21: FCC2 MII RxD[0] */
- { 1, 1, 0, 0, 0, 0 }, /* PB20: FCC2 MII RxD[1] */
- { 1, 1, 0, 0, 0, 0 }, /* PB19: FCC2 MII RxD[2] */
- { 1, 1, 0, 0, 0, 0 }, /* PB18: FCC2 MII RxD[3] */
- { 1, 1, 0, 0, 0, 0 }, /* PB17: FCC3 MII RX_DV */
- { 1, 1, 0, 0, 0, 0 }, /* PB16: FCC3 MII RX_ER */
- { 1, 1, 0, 1, 0, 0 }, /* PB15: FCC3 MII TX_ER */
- { 1, 1, 0, 1, 0, 0 }, /* PB14: FCC3 MII TX_EN */
- { 1, 1, 0, 0, 0, 0 }, /* PB13: FCC3 MII COL */
- { 1, 1, 0, 0, 0, 0 }, /* PB12: FCC3 MII CRS */
- { 1, 1, 0, 0, 0, 0 }, /* PB11: FCC3 MII RxD[3] */
- { 1, 1, 0, 0, 0, 0 }, /* PB10: FCC3 MII RxD[2] */
- { 1, 1, 0, 0, 0, 0 }, /* PB09: FCC3 MII RxD[1] */
- { 1, 1, 0, 0, 0, 0 }, /* PB08: FCC3 MII RxD[0] */
- { 1, 1, 0, 1, 0, 0 }, /* PB07: FCC3 MII TxD[3] */
- { 1, 1, 0, 1, 0, 0 }, /* PB06: FCC3 MII TxD[2] */
- { 1, 1, 0, 1, 0, 0 }, /* PB05: FCC3 MII TxD[1] */
- { 1, 1, 0, 1, 0, 0 }, /* PB04: FCC3 MII TxD[0] */
- { 0, 0, 0, 0, 0, 0 }, /* PB03: pin doesn't exist */
- { 0, 0, 0, 0, 0, 0 }, /* PB02: pin doesn't exist */
- { 0, 0, 0, 0, 0, 0 }, /* PB01: pin doesn't exist */
- { 0, 0, 0, 0, 0, 0 } /* PB00: pin doesn't exist */
- },
-
- /* Port C configuration */
- {
- /* cnf par sor dir odr dat */
- { 1, 0, 0, 0, 0, 0 }, /* PC31: MEZ ~IACK */
- { 0, 0, 0, 0, 0, 0 }, /* PC30: ? */
- { 1, 1, 0, 0, 0, 0 }, /* PC29: CLK SCCx */
- { 1, 1, 0, 0, 0, 0 }, /* PC28: CLK4 */
- { 1, 1, 0, 0, 0, 0 }, /* PC27: CLK SCCF */
- { 1, 1, 0, 0, 0, 0 }, /* PC26: CLK 32K */
- { 1, 1, 0, 0, 0, 0 }, /* PC25: BRG4/CLK7 */
- { 0, 0, 0, 0, 0, 0 }, /* PC24: ? */
- { 1, 1, 0, 0, 0, 0 }, /* PC23: CLK SCCx */
- { 1, 1, 0, 0, 0, 0 }, /* PC22: FCC1 MII RX_CLK */
- { 1, 1, 0, 0, 0, 0 }, /* PC21: FCC1 MII TX_CLK */
- { 1, 1, 0, 0, 0, 0 }, /* PC20: CLK SCCF */
- { 1, 1, 0, 0, 0, 0 }, /* PC19: FCC2 MII RX_CLK */
- { 1, 1, 0, 0, 0, 0 }, /* PC18: FCC2 MII TX_CLK */
- { 1, 1, 0, 0, 0, 0 }, /* PC17: FCC3 MII RX_CLK */
- { 1, 1, 0, 0, 0, 0 }, /* PC16: FCC3 MII TX_CLK */
- { 1, 0, 0, 0, 0, 0 }, /* PC15: SCC1 UART ~CTS */
- { 1, 0, 0, 0, 0, 0 }, /* PC14: SCC1 UART ~CD */
- { 1, 0, 0, 0, 0, 0 }, /* PC13: SCC2 UART ~CTS */
- { 1, 0, 0, 0, 0, 0 }, /* PC12: SCC2 UART ~CD */
- { 1, 0, 0, 1, 0, 0 }, /* PC11: SCC1 UART ~DTR */
- { 1, 0, 0, 1, 0, 0 }, /* PC10: SCC1 UART ~DSR */
- { 1, 0, 0, 1, 0, 0 }, /* PC09: SCC2 UART ~DTR */
- { 1, 0, 0, 1, 0, 0 }, /* PC08: SCC2 UART ~DSR */
- { 1, 0, 0, 0, 0, 0 }, /* PC07: TEMP ~ALERT */
- { 1, 0, 0, 0, 0, 0 }, /* PC06: FCC3 INT */
- { 1, 0, 0, 0, 0, 0 }, /* PC05: FCC2 INT */
- { 1, 0, 0, 0, 0, 0 }, /* PC04: FCC1 INT */
- { 0, 1, 1, 1, 0, 0 }, /* PC03: SDMA IDMA2 ~DACK */
- { 0, 1, 1, 0, 0, 0 }, /* PC02: SDMA IDMA2 ~DONE */
- { 0, 1, 0, 0, 0, 0 }, /* PC01: SDMA IDMA2 ~DREQ */
- { 1, 1, 0, 1, 0, 0 } /* PC00: BRG7 */
- },
-
- /* Port D configuration */
- {
- /* cnf par sor dir odr dat */
- { 1, 1, 0, 0, 0, 0 }, /* PD31: SCC1 UART RxD */
- { 1, 1, 1, 1, 0, 0 }, /* PD30: SCC1 UART TxD */
- { 1, 0, 0, 1, 0, 0 }, /* PD29: SCC1 UART ~RTS */
- { 1, 1, 0, 0, 0, 0 }, /* PD28: SCC2 UART RxD */
- { 1, 1, 0, 1, 0, 0 }, /* PD27: SCC2 UART TxD */
- { 1, 0, 0, 1, 0, 0 }, /* PD26: SCC2 UART ~RTS */
- { 1, 0, 0, 0, 0, 0 }, /* PD25: SCC1 UART ~RI */
- { 1, 0, 0, 0, 0, 0 }, /* PD24: SCC2 UART ~RI */
- { 1, 0, 0, 1, 0, 0 }, /* PD23: CLKGEN PD */
- { 1, 0, 0, 0, 0, 0 }, /* PD22: USER3 */
- { 1, 0, 0, 0, 0, 0 }, /* PD21: USER2 */
- { 1, 0, 0, 0, 0, 0 }, /* PD20: USER1 */
- { 1, 1, 1, 0, 0, 0 }, /* PD19: SPI ~SEL */
- { 1, 1, 1, 0, 0, 0 }, /* PD18: SPI CLK */
- { 1, 1, 1, 0, 0, 0 }, /* PD17: SPI MOSI */
- { 1, 1, 1, 0, 0, 0 }, /* PD16: SPI MISO */
- { 1, 1, 1, 0, 1, 0 }, /* PD15: I2C SDA */
- { 1, 1, 1, 0, 1, 0 }, /* PD14: I2C SCL */
- { 1, 0, 0, 1, 0, 1 }, /* PD13: TEMP ~STDBY */
- { 1, 0, 0, 1, 0, 1 }, /* PD12: FCC3 ~RESET */
- { 1, 0, 0, 1, 0, 1 }, /* PD11: FCC2 ~RESET */
- { 1, 0, 0, 1, 0, 1 }, /* PD10: FCC1 ~RESET */
- { 1, 0, 0, 0, 0, 0 }, /* PD09: PD9 */
- { 1, 0, 0, 0, 0, 0 }, /* PD08: PD8 */
- { 1, 0, 0, 1, 0, 1 }, /* PD07: PD7 */
- { 1, 0, 0, 1, 0, 1 }, /* PD06: PD6 */
- { 1, 0, 0, 1, 0, 1 }, /* PD05: PD5 */
- { 1, 0, 0, 1, 0, 1 }, /* PD04: PD4 */
- { 0, 0, 0, 0, 0, 0 }, /* PD03: pin doesn't exist */
- { 0, 0, 0, 0, 0, 0 }, /* PD02: pin doesn't exist */
- { 0, 0, 0, 0, 0, 0 }, /* PD01: pin doesn't exist */
- { 0, 0, 0, 0, 0, 0 } /* PD00: pin doesn't exist */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * AMI FS6377 Clock Generator configuration table
- *
- * the "fs6377_regs[]" table entries correspond to FS6377 registers
- * 0 - 15 (total of 16 bytes).
- *
- * the data is written to the FS6377 via the i2c bus using address in
- * "fs6377_addr" (address is 7 bits - R/W bit not included).
- *
- * The fs6377 has four clock outputs: A, B, C and D.
- *
- * Outputs C and D can each provide two different clock outputs C1/D1 or
- * C2/D2 depending on the state of the SEL_CD input which is connected to
- * the MPC8260 I/O port pin PA11. PA11 output (SEL_CD input) low (or 0)
- * selects C1/D1 and PA11 output (SEL_CD input) high (or 1) selects C2/D2.
- *
- * PA11 defaults to output low (or 0) in the i/o port config table above.
- *
- * Output A provides a 100MHz for the High Speed Serial chips. Output B
- * provides a 3.6864MHz clock for more accurate asynchronous serial bit
- * rates. Output C is routed to the mezzanine connector but is currently
- * unused - both C1 and C2 are set to 16MHz. Output D is used by both the
- * alt-input and display mezzanine boards for their video chips. The
- * alt-input board requires a clock of 24.576MHz and this is available on
- * D1 (PA11=SEL_CD=0). The display board requires a clock of 27MHz and this
- * is available on D2 (PA11=SEL_CD=1).
- *
- * So the default is a clock suitable for the alt-input board. PA11 is toggled
- * later in misc_init_r(), if a display board is detected.
- */
-
-uchar fs6377_addr = 0x5c;
-
-uchar fs6377_regs[16] = {
- 12, 75, 64, 25, 144, 128, 25, 192,
- 0, 16, 135, 192, 224, 64, 64, 192
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * special board initialisation, after clocks and timebase have been
- * set up but before environment and serial are initialised.
- *
- * added so that very early initialisations can be done using the i2c
- * driver (which requires the clocks, to calculate the dividers, and
- * the timebase, for udelay())
- */
-
-int
-board_postclk_init (void)
-{
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- /*
- * Initialise the FS6377 clock chip
- *
- * the secondary address is the register number from where to
- * start the write - I want to write all the registers
- *
- * don't bother checking return status - we have no console yet
- * to print it on, nor any RAM to store it in - it will be obvious
- * if this doesn't work
- */
- (void) i2c_write (fs6377_addr, 0, 1, fs6377_regs,
- sizeof (fs6377_regs));
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity: Hardwired to HYMOD
- */
-
-int
-checkboard (void)
-{
- puts ("Board: HYMOD\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * miscellaneous (early - while running in flash) initialisations.
- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-uint upmb_table[] = {
- /* Read Single Beat (RSS) - offset 0x00 */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* Read Burst (RBS) - offset 0x08 */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* Write Single Beat (WSS) - offset 0x18 */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* Write Burst (WSS) - offset 0x20 */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* Refresh Timer (PTS) - offset 0x30 */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* Exception Condition (EXS) - offset 0x3c */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_
-};
-
-uint upmc_table[] = {
- /* Read Single Beat (RSS) - offset 0x00 */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* Read Burst (RBS) - offset 0x08 */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* Write Single Beat (WSS) - offset 0x18 */
- 0xF0E00000, 0xF0A00000, 0x00A00000, 0x30A00000,
- 0xF0F40007, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* Write Burst (WSS) - offset 0x20 */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* Refresh Timer (PTS) - offset 0x30 */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /* Exception Condition (EXS) - offset 0x3c */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_
-};
-
-int
-misc_init_f (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
- printf ("UPMs: ");
-
- upmconfig (UPMB, upmb_table, sizeof upmb_table / sizeof upmb_table[0]);
- memctl->memc_mbmr = CFG_MBMR;
-
- upmconfig (UPMC, upmc_table, sizeof upmc_table / sizeof upmc_table[0]);
- memctl->memc_mcmr = CFG_MCMR;
-
- printf ("configured\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long
-initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
- volatile uchar c = 0, *ramaddr = (uchar *) (CFG_SDRAM_BASE + 0x8);
- ulong psdmr = CFG_PSDMR;
- int i;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are conÞgured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_mptpr = CFG_MPTPR;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr = c;
-
- return (CFG_SDRAM_SIZE << 20);
-}
-
-/* ------------------------------------------------------------------------- */
-/* miscellaneous initialisations after relocation into ram (misc_init_r) */
-/* */
-/* loads the data in the main board and mezzanine board eeproms into */
-/* the hymod configuration struct stored in the board information area. */
-/* */
-/* if the contents of either eeprom is invalid, prompts for a serial */
-/* number (and an ethernet address if required) then fetches a file */
-/* containing information to be stored in the eeprom from the tftp server */
-/* (the file name is based on the serial number and a built-in path) */
-
-int
-last_stage_init (void)
-{
- hymod_conf_t *cp = &gd->bd->bi_hymod_conf;
- int rc;
-
-#ifdef CONFIG_BOOT_RETRY_TIME
- /*
- * we use the readline () function, but we also want
- * command timeout enabled
- */
- init_cmd_timeout ();
-#endif
-
- memset ((void *) cp, 0, sizeof (*cp));
-
- /* set up main board config info */
-
- rc = hymod_eeprom_read (0, &cp->main.eeprom);
-
- puts ("EEPROM:main...");
- if (rc < 0)
- puts ("NOT PRESENT\n");
- else if (rc == 0)
- puts ("INVALID\n");
- else {
- cp->main.eeprom.valid = 1;
-
- printf ("OK (ver %u)\n", cp->main.eeprom.ver);
- hymod_eeprom_print (&cp->main.eeprom);
-
- /*
- * hard-wired assumption here: all hymod main boards will have
- * one xilinx fpga, with the interrupt line connected to IRQ2
- *
- * One day, this might be based on the board type
- */
-
- cp->main.xlx[0].mmap.prog.exists = 1;
- cp->main.xlx[0].mmap.prog.size = FPGA_MAIN_CFG_SIZE;
- cp->main.xlx[0].mmap.prog.base = FPGA_MAIN_CFG_BASE;
-
- cp->main.xlx[0].mmap.reg.exists = 1;
- cp->main.xlx[0].mmap.reg.size = FPGA_MAIN_REG_SIZE;
- cp->main.xlx[0].mmap.reg.base = FPGA_MAIN_REG_BASE;
-
- cp->main.xlx[0].mmap.port.exists = 1;
- cp->main.xlx[0].mmap.port.size = FPGA_MAIN_PORT_SIZE;
- cp->main.xlx[0].mmap.port.base = FPGA_MAIN_PORT_BASE;
-
- cp->main.xlx[0].iopins.prog_pin.port = FPGA_MAIN_PROG_PORT;
- cp->main.xlx[0].iopins.prog_pin.pin = FPGA_MAIN_PROG_PIN;
- cp->main.xlx[0].iopins.prog_pin.flag = 1;
- cp->main.xlx[0].iopins.init_pin.port = FPGA_MAIN_INIT_PORT;
- cp->main.xlx[0].iopins.init_pin.pin = FPGA_MAIN_INIT_PIN;
- cp->main.xlx[0].iopins.init_pin.flag = 1;
- cp->main.xlx[0].iopins.done_pin.port = FPGA_MAIN_DONE_PORT;
- cp->main.xlx[0].iopins.done_pin.pin = FPGA_MAIN_DONE_PIN;
- cp->main.xlx[0].iopins.done_pin.flag = 1;
-#ifdef FPGA_MAIN_ENABLE_PORT
- cp->main.xlx[0].iopins.enable_pin.port = FPGA_MAIN_ENABLE_PORT;
- cp->main.xlx[0].iopins.enable_pin.pin = FPGA_MAIN_ENABLE_PIN;
- cp->main.xlx[0].iopins.enable_pin.flag = 1;
-#endif
-
- cp->main.xlx[0].irq = FPGA_MAIN_IRQ;
- }
-
- /* set up mezzanine board config info */
-
- rc = hymod_eeprom_read (1, &cp->mezz.eeprom);
-
- puts ("EEPROM:mezz...");
- if (rc < 0)
- puts ("NOT PRESENT\n");
- else if (rc == 0)
- puts ("INVALID\n");
- else {
- cp->main.eeprom.valid = 1;
-
- printf ("OK (ver %u)\n", cp->mezz.eeprom.ver);
- hymod_eeprom_print (&cp->mezz.eeprom);
- }
-
- cp->crc = crc32 (0, (unsigned char *)cp, offsetof (hymod_conf_t, crc));
-
- hymod_check_env ();
-
- return (0);
-}
-
-#ifdef CONFIG_SHOW_ACTIVITY
-void board_show_activity (ulong timebase)
-{
-#ifdef CFG_HYMOD_DBLEDS
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile iop8260_t *iop = &immr->im_ioport;
- static int shift = 0;
-
- if ((timestamp % CFG_HZ) == 0) {
- if (++shift > 3)
- shift = 0;
- iop->iop_pdatd =
- (iop->iop_pdatd & ~0x0f000000) | (1 << (24 + shift));
- }
-#endif /* CFG_HYMOD_DBLEDS */
-}
-
-void show_activity(int arg)
-{
-}
-#endif /* CONFIG_SHOW_ACTIVITY */
diff --git a/board/hymod/hymod.h b/board/hymod/hymod.h
deleted file mode 100644
index 9d8d66271f..0000000000
--- a/board/hymod/hymod.h
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * (C) Copyright 2001
- * Murray Jensen, CSIRO-MIT, <Murray.Jensen@csiro.au>
- *
- * 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 _HYMOD_H_
-#define _HYMOD_H_
-
-#include <linux/config.h>
-#ifdef CONFIG_8260
-#include <asm/iopin_8260.h>
-#endif
-
-/*
- * hymod configuration data - passed by boot code via the board information
- * structure (only U-Boot has support for this at the moment)
- *
- * there are three types of data passed up from the boot monitor. the first
- * (type hymod_eeprom_t) is the eeprom data that was read off both the main
- * (or mother) board and the mezzanine board (if any). this data defines how
- * many Xilinx fpgas are on each board, and their types (among other things).
- * the second type of data (type xlx_mmap_t, one per Xilinx fpga) defines where
- * in the physical address space the various Xilinx fpga access regions have
- * been mapped by the boot rom. the third type of data (type xlx_iopins_t,
- * one per Xilinx fpga) defines which io port pins are connected to the various
- * signals required to program a Xilinx fpga.
- *
- * A ram/flash "bank" refers to memory controlled by the same chip select.
- *
- * the eeprom contents are defined as in technical note #2 - basically,
- * a header, zero or more records in no particular order, and a 32 bit crc
- * a record is 1 or more type bytes, a length byte and "length" bytes.
- */
-
-#define HYMOD_EEPROM_ID 0xAA /* eeprom id byte */
-#define HYMOD_EEPROM_VER 1 /* eeprom contents version (0-127) */
-#define HYMOD_EEPROM_SIZE 256 /* number of bytes in the eeprom */
-
-/* eeprom header */
-typedef
- struct {
- unsigned char id; /* eeprom id byte */
- unsigned char :1;
- unsigned char ver:7; /* eeprom contents version number */
- unsigned long len; /* total # of bytes btw hdr and crc */
- }
-hymod_eehdr_t;
-
-/* maximum number of bytes available for eeprom data records */
-#define HYMOD_EEPROM_MAXLEN (HYMOD_EEPROM_SIZE \
- - sizeof (hymod_eehdr_t) \
- - sizeof (unsigned long))
-
-/* eeprom data record */
-typedef
- union {
- struct {
- unsigned char topbit:1;
- unsigned char type:7;
- unsigned char len;
- unsigned char data[1]; /* variable length */
- } small;
- struct {
- unsigned short topbit:1;
- unsigned short nxtbit:1;
- unsigned short type:14;
- unsigned short len;
- unsigned char data[1]; /* variable length */
- } medium;
- struct {
- unsigned long topbit:1;
- unsigned long nxtbit:1;
- unsigned long type:30;
- unsigned long len;
- unsigned char data[1]; /* variable length */
- } large;
- }
-hymod_eerec_t;
-
-#define HYMOD_EEOFF_MAIN 0x00 /* i2c addr offset for main eeprom */
-#define HYMOD_EEOFF_MEZZ 0x04 /* i2c addr offset for mezz eepomr */
-
-/* eeprom record types */
-#define HYMOD_EEREC_SERNO 1 /* serial number */
-#define HYMOD_EEREC_DATE 2 /* date */
-#define HYMOD_EEREC_BATCH 3 /* batch id */
-#define HYMOD_EEREC_TYPE 4 /* board type */
-#define HYMOD_EEREC_REV 5 /* revision number */
-#define HYMOD_EEREC_SDRAM 6 /* sdram sizes */
-#define HYMOD_EEREC_FLASH 7 /* flash sizes */
-#define HYMOD_EEREC_ZBT 8 /* zbt ram sizes */
-#define HYMOD_EEREC_XLXTYP 9 /* Xilinx fpga types */
-#define HYMOD_EEREC_XLXSPD 10 /* Xilinx fpga speeds */
-#define HYMOD_EEREC_XLXTMP 11 /* Xilinx fpga temperatures */
-#define HYMOD_EEREC_XLXGRD 12 /* Xilinx fpga grades */
-#define HYMOD_EEREC_CPUTYP 13 /* Motorola CPU type */
-#define HYMOD_EEREC_CPUSPD 14 /* CPU speed */
-#define HYMOD_EEREC_BUSSPD 15 /* bus speed */
-#define HYMOD_EEREC_CPMSPD 16 /* CPM speed */
-#define HYMOD_EEREC_HSTYPE 17 /* high-speed serial chip type */
-#define HYMOD_EEREC_HSCHIN 18 /* high-speed serial input channels */
-#define HYMOD_EEREC_HSCHOUT 19 /* high-speed serial output channels */
-
-/* some dimensions */
-#define HYMOD_MAX_BATCH 32 /* max no. of bytes in batch id */
-#define HYMOD_MAX_SDRAM 4 /* max sdram "banks" on any board */
-#define HYMOD_MAX_FLASH 4 /* max flash "banks" on any board */
-#define HYMOD_MAX_ZBT 16 /* max ZBT rams on any board */
-#define HYMOD_MAX_XLX 4 /* max Xilinx fpgas on any board */
-
-#define HYMOD_MAX_BYTES 16 /* enough to store any bytes array */
-
-/* board types */
-#define HYMOD_BDTYPE_NONE 0 /* information not present */
-#define HYMOD_BDTYPE_IO 1 /* I/O main board */
-#define HYMOD_BDTYPE_CLP 2 /* CLP main board */
-#define HYMOD_BDTYPE_DSP 3 /* DSP main board */
-#define HYMOD_BDTYPE_INPUT 4 /* video input mezzanine board */
-#define HYMOD_BDTYPE_ALTINPUT 5 /* video input mezzanine board */
-#define HYMOD_BDTYPE_DISPLAY 6 /* video display mezzanine board */
-#define HYMOD_BDTYPE_MAX 7 /* first invalid value */
-
-/* Xilinx fpga types */
-#define HYMOD_XTYP_NONE 0 /* information not present */
-#define HYMOD_XTYP_XCV300E 1 /* Xilinx Virtex 300 */
-#define HYMOD_XTYP_XCV400E 2 /* Xilinx Virtex 400 */
-#define HYMOD_XTYP_XCV600E 3 /* Xilinx Virtex 600 */
-#define HYMOD_XTYP_MAX 4 /* first invalid value */
-
-/* Xilinx fpga speeds */
-#define HYMOD_XSPD_NONE 0 /* information not present */
-#define HYMOD_XSPD_SIX 1
-#define HYMOD_XSPD_SEVEN 2
-#define HYMOD_XSPD_EIGHT 3
-#define HYMOD_XSPD_MAX 4 /* first invalid value */
-
-/* Xilinx fpga temperatures */
-#define HYMOD_XTMP_NONE 0 /* information not present */
-#define HYMOD_XTMP_COM 1
-#define HYMOD_XTMP_IND 2
-#define HYMOD_XTMP_MAX 3 /* first invalid value */
-
-/* Xilinx fpga grades */
-#define HYMOD_XTMP_NONE 0 /* information not present */
-#define HYMOD_XTMP_NORMAL 1
-#define HYMOD_XTMP_ENGSAMP 2
-#define HYMOD_XTMP_MAX 3 /* first invalid value */
-
-/* CPU types */
-#define HYMOD_CPUTYPE_NONE 0 /* information not present */
-#define HYMOD_CPUTYPE_MPC8260 1 /* Motorola MPC8260 embedded powerpc */
-#define HYMOD_CPUTYPE_MAX 2 /* first invalid value */
-
-/* CPU/BUS/CPM clock speeds */
-#define HYMOD_CLKSPD_NONE 0 /* information not present */
-#define HYMOD_CLKSPD_33MHZ 1
-#define HYMOD_CLKSPD_66MHZ 2
-#define HYMOD_CLKSPD_100MHZ 3
-#define HYMOD_CLKSPD_133MHZ 4
-#define HYMOD_CLKSPD_166MHZ 5
-#define HYMOD_CLKSPD_200MHZ 6
-#define HYMOD_CLKSPD_MAX 7 /* first invalid value */
-
-/* high speed serial chip types */
-#define HYMOD_HSSTYPE_NONE 0 /* information not present */
-#define HYMOD_HSSTYPE_AMCC52064 1
-#define HYMOD_HSSTYPE_MAX 2 /* first invalid value */
-
-/* a date (yyyy-mm-dd) */
-typedef
- struct {
- unsigned short year;
- unsigned char month;
- unsigned char day;
- }
-hymod_date_t;
-
-/* describes a Xilinx fpga */
-typedef
- struct {
- unsigned char type; /* chip type */
- unsigned char speed; /* chip speed rating */
- unsigned char temp; /* chip temperature rating */
- unsigned char grade; /* chip grade */
- }
-hymod_xlx_t;
-
-/* describes a Motorola embedded processor */
-typedef
- struct {
- unsigned char type; /* CPU type */
- unsigned char cpuspd; /* speed of the PowerPC core */
- unsigned char busspd; /* speed of the system and 60x bus */
- unsigned char cpmspd; /* speed of the CPM co-processor */
- }
-hymod_mpc_t;
-
-/* info about high-speed (1Gbit) serial interface */
-typedef
- struct {
- unsigned char type; /* high-speed serial chip type */
- unsigned char nchin; /* number of input channels mounted */
- unsigned char nchout; /* number of output channels mounted */
- }
-hymod_hss_t;
-
-/*
- * this defines the contents of the serial eeprom that exists on every
- * hymod board, including mezzanine boards (the serial eeprom will be
- * faked for early development boards that don't have one)
- */
-
-typedef
- struct {
- unsigned char valid:1; /* contents of this struct is valid */
- unsigned char ver:7; /* eeprom contents version */
- unsigned char bdtype; /* board type */
- unsigned char bdrev; /* board revision */
- unsigned char batchlen; /* length of batch string below */
- unsigned long serno; /* serial number */
- hymod_date_t date; /* manufacture date */
- unsigned char batch[32]; /* manufacturer specific batch id */
- unsigned char nsdram; /* # of ram "banks" */
- unsigned char nflash; /* # of flash "banks" */
- unsigned char nzbt; /* # of ZBT rams */
- unsigned char nxlx; /* # of Xilinx fpgas */
- unsigned char sdramsz[HYMOD_MAX_SDRAM]; /* log2 of sdram size */
- unsigned char flashsz[HYMOD_MAX_FLASH]; /* log2 of flash size */
- unsigned char zbtsz[HYMOD_MAX_ZBT]; /* log2 of ZBT ram size */
- hymod_xlx_t xlx[HYMOD_MAX_XLX]; /* Xilinx fpga info */
- hymod_mpc_t mpc; /* Motorola MPC CPU info */
- hymod_hss_t hss; /* high-speed serial info */
- }
-hymod_eeprom_t;
-
-/*
- * this defines a region in the processor's physical address space
- */
-typedef
- struct {
- unsigned long exists:1; /* 1 if the region exists, 0 if not */
- unsigned long size:31; /* size in bytes */
- unsigned long base; /* base address */
- }
-xlx_prgn_t;
-
-/*
- * this defines where the various Xilinx fpga access regions are mapped
- * into the physical address space of the processor
- */
-typedef
- struct {
- xlx_prgn_t prog; /* program access region */
- xlx_prgn_t reg; /* register access region */
- xlx_prgn_t port; /* port access region */
- }
-xlx_mmap_t;
-
-/*
- * this defines which 8260 i/o port pins are connected to the various
- * signals required for programming a Xilinx fpga
- */
-typedef
- struct {
- iopin_t prog_pin; /* assert for >= 300ns to program */
- iopin_t init_pin; /* goes high when fpga is cleared */
- iopin_t done_pin; /* goes high when program is done */
- iopin_t enable_pin; /* some fpgas need enabling */
- }
-xlx_iopins_t;
-
-/* all info about one Xilinx chip */
-typedef
- struct {
- xlx_mmap_t mmap;
- xlx_iopins_t iopins;
- unsigned long irq:8; /* h/w intr req number for this fpga */
- }
-xlx_info_t;
-
-/* all info about one hymod board */
-typedef
- struct {
- hymod_eeprom_t eeprom;
- xlx_info_t xlx[HYMOD_MAX_XLX];
- }
-hymod_board_t;
-
-/*
- * this defines the configuration information of a hymod board-set
- * (main board + possible mezzanine board). In future, there may be
- * more than one mezzanine board (stackable?) - if so, add a "mezz2"
- * field, and so on... or make mezz an array?
- */
-typedef
- struct {
- unsigned long ver:8; /* version control */
- hymod_board_t main; /* main board info */
- hymod_board_t mezz; /* mezzanine board info */
- unsigned long crc; /* ensures kernel and boot prom agree */
- }
-hymod_conf_t;
-
-#endif /* _HYMOD_H_ */
diff --git a/board/hymod/input.c b/board/hymod/input.c
deleted file mode 100644
index 63aa13c4a9..0000000000
--- a/board/hymod/input.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * (C) Copyright 2003
- * Murray Jensen, CSIRO-MIT, <Murray.Jensen@csiro.au>
- *
- * 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 <common.h>
-
-/* imports from common/main.c */
-extern char console_buffer[CFG_CBSIZE];
-
-int
-hymod_get_serno (const char *prompt)
-{
- for (;;) {
- int n, serno;
- char *p;
-
-#ifdef CONFIG_BOOT_RETRY_TIME
- reset_cmd_timeout ();
-#endif
-
- n = readline (prompt);
-
- if (n < 0)
- return (n);
-
- if (n == 0)
- continue;
-
- serno = (int) simple_strtol (console_buffer, &p, 10);
-
- if (p > console_buffer && *p == '\0' && serno > 0)
- return (serno);
-
- printf ("Invalid number (%s) - please re-enter\n",
- console_buffer);
- }
-}
-
-int
-hymod_get_ethaddr (void)
-{
- for (;;) {
- int n;
-
-#ifdef CONFIG_BOOT_RETRY_TIME
- reset_cmd_timeout ();
-#endif
-
- n = readline ("Enter board ethernet address: ");
-
- if (n < 0)
- return (n);
-
- if (n == 0)
- continue;
-
- if (n == 17) {
- int i;
- char *p, *q;
- uchar ea[6];
-
- /* see if it looks like an ethernet address */
-
- p = console_buffer;
-
- for (i = 0; i < 6; i++) {
- char term = (i == 5 ? '\0' : ':');
-
- ea[i] = simple_strtol (p, &q, 16);
-
- if ((q - p) != 2 || *q++ != term)
- break;
-
- p = q;
- }
-
- if (i == 6) {
- /* it looks ok - set it */
- printf ("Setting ethernet addr to %s\n",
- console_buffer);
-
- setenv ("ethaddr", console_buffer);
-
- puts ("Remember to do a 'saveenv' to "
- "make it permanent\n");
-
- return (0);
- }
- }
-
- printf ("Invalid ethernet addr (%s) - please re-enter\n",
- console_buffer);
- }
-}
diff --git a/board/hymod/u-boot.lds b/board/hymod/u-boot.lds
deleted file mode 100644
index 337a3954d2..0000000000
--- a/board/hymod/u-boot.lds
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8260/start.o (.text)
-/*
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
-*/
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- . = ALIGN(256 * 1024);
- .ppcenv :
- {
- common/environment.o (.ppcenv)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/hymod/u-boot.lds.debug b/board/hymod/u-boot.lds.debug
deleted file mode 100644
index ddd4678ee8..0000000000
--- a/board/hymod/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/icecube/Makefile b/board/icecube/Makefile
deleted file mode 100644
index 7762ed3015..0000000000
--- a/board/icecube/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/icecube/config.mk b/board/icecube/config.mk
deleted file mode 100644
index 170779d6c1..0000000000
--- a/board/icecube/config.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2003
-# 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
-#
-
-#
-# IceCube board:
-#
-# Valid values for TEXT_BASE are:
-#
-# 0xFFF00000 boot high (standard configuration)
-# 0xFF000000 boot low for 16 MiB boards
-# 0xFF800000 boot low for 8 MiB boards
-# 0x00100000 boot from RAM (for testing only)
-#
-
-sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
-
-ifndef TEXT_BASE
-## Standard: boot high
-TEXT_BASE = 0xFFF00000
-## For testing: boot from RAM
-# TEXT_BASE = 0x00100000
-endif
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/icecube/flash.c b/board/icecube/flash.c
deleted file mode 100644
index 15e86d34f3..0000000000
--- a/board/icecube/flash.c
+++ /dev/null
@@ -1,493 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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 <common.h>
-
-#ifndef CFG_FLASH_CFI_DRIVER
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* NOTE - CONFIG_FLASH_16BIT means the CPU interface is 16-bit, it
- * has nothing to do with the flash chip being 8-bit or 16-bit.
- */
-#ifdef CONFIG_FLASH_16BIT
-typedef unsigned short FLASH_PORT_WIDTH;
-typedef volatile unsigned short FLASH_PORT_WIDTHV;
-#define FLASH_ID_MASK 0xFFFF
-#else
-typedef unsigned char FLASH_PORT_WIDTH;
-typedef volatile unsigned char FLASH_PORT_WIDTHV;
-#define FLASH_ID_MASK 0xFF
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define ORMASK(size) ((-size) & OR_AM_MSK)
-
-#define FLASH_CYCLE1 0x0555
-#define FLASH_CYCLE2 0x02aa
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(FPWV *addr, flash_info_t *info);
-static void flash_reset(flash_info_t *info);
-static int write_word_amd(flash_info_t *info, FPWV *dest, FPW data);
-static flash_info_t *flash_get_info(ulong base);
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- unsigned long size = 0;
- int i;
- extern void flash_preinit(void);
- extern void flash_afterinit(ulong);
- ulong flashbase = CFG_FLASH_BASE;
-
- flash_preinit();
-
- /* Init: no FLASHes known */
- for (i=0; i < CFG_MAX_FLASH_BANKS; ++i) {
- memset(&flash_info[i], 0, sizeof(flash_info_t));
-
- flash_info[i].size =
- flash_get_size((FPW *)flashbase, &flash_info[i]);
-
- size += flash_info[i].size;
- flashbase += 0x800000;
- }
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- flash_get_info(CFG_MONITOR_BASE));
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- flash_get_info(CFG_ENV_ADDR));
-#endif
-
-
- flash_afterinit(size);
- return size ? size : 1;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset(flash_info_t *info)
-{
- FPWV *base = (FPWV *)(info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- *base = (FPW)0x00FF00FF; /* Intel Read Mode */
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
- *base = (FPW)0x00F000F0; /* AMD Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static flash_info_t *flash_get_info(ulong base)
-{
- int i;
- flash_info_t * info;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i ++) {
- info = & flash_info[i];
- if (info->size &&
- info->start[0] <= base && base <= info->start[0] + info->size - 1)
- break;
- }
-
- return i == CFG_MAX_FLASH_BANKS ? 0 : info;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar *bootletter;
- char *fmt;
- uchar botbootletter[] = "B";
- uchar topbootletter[] = "T";
- uchar botboottype[] = "bottom boot sector";
- uchar topboottype[] = "top boot sector";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- /* check for top or bottom boot, if it applies */
- if (info->flash_id & FLASH_BTYPE) {
- boottype = botboottype;
- bootletter = botbootletter;
- }
- else {
- boottype = topboottype;
- bootletter = topbootletter;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMDLV065D:
- fmt = "29LV065 (64 Mbit, uniform sectors)\n";
- break;
- default:
- fmt = "Unknown Chip Type\n";
- break;
- }
-
- printf (fmt, bootletter, boottype);
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
-
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size (FPWV *addr, flash_info_t *info)
-{
- int i;
- FPWV* addr2;
-
- /* Write auto select command: read Manufacturer ID */
- /* Write auto select command sequence and test FLASH answer */
- addr[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE2] = (FPW)0x00550055; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE1] = (FPW)0x00900090; /* selects Intel or AMD */
-
- /* The manufacturer codes are only 1 byte, so just use 1 byte.
- * This works for any bus width and any FLASH device width.
- */
- udelay(100);
- switch (addr[0] & 0xff) {
-
- case (uchar)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case (uchar)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- /* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */
- if (info->flash_id != FLASH_UNKNOWN) switch ((FPW)addr[1]) {
-
- case (FPW)AMD_ID_LV065D:
- info->flash_id += FLASH_AMDLV065D;
- info->sector_count = 128;
- info->size = 0x00800000;
- for( i = 0; i < info->sector_count; i++ )
- info->start[i] = (ulong)addr + (i * 0x10000);
- break; /* => 8 or 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* => no or unknown flash */
- }
-
- /* test for real flash at bank 1 */
- addr2 = (FPW *)((ulong)addr | 0x800000);
- if (addr2 != addr &&
- ((addr2[0] & 0xff) == (addr[0] & 0xff)) && ((FPW)addr2[1] == (FPW)addr[1])) {
- /* Seems 2 banks are the same space (8Mb chip is installed,
- * J24 in default position (CS0)). Disable this (first) bank.
- */
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- }
- /* Put FLASH back in read mode */
- flash_reset(info);
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- FPWV *addr;
- int flag, prot, sect;
- int intel = (info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMDLV065D:
- break;
- case FLASH_UNKNOWN:
- default:
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- last = get_timer(0);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && rcode == 0; sect++) {
-
- if (info->protect[sect] != 0) /* protected, skip it */
- continue;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr = (FPWV *)(info->start[sect]);
- if (intel) {
- *addr = (FPW)0x00500050; /* clear status register */
- *addr = (FPW)0x00200020; /* erase setup */
- *addr = (FPW)0x00D000D0; /* erase confirm */
- }
- else {
- /* must be AMD style if not Intel */
- FPWV *base; /* first address in bank */
-
- base = (FPWV *)(info->start[0]);
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW)0x00800080; /* erase mode */
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- *addr = (FPW)0x00300030; /* erase sector */
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer(0);
-
- /* wait at least 50us for AMD, 80us for Intel.
- * Let's wait 1 ms.
- */
- udelay (1000);
-
- while ((*addr & (FPW)0x00800080) != (FPW)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
-
- if (intel) {
- /* suspend erase */
- *addr = (FPW)0x00B000B0;
- }
-
- flash_reset(info); /* reset to read mode */
- rcode = 1; /* failed */
- break;
- }
-
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) {/* every second */
- putc ('.');
- last = get_timer(0);
- }
- }
-
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) { /* every second */
- putc ('.');
- last = get_timer(0);
- }
-
- flash_reset(info); /* reset to read mode */
- }
-
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof(data), left -= sizeof(data) - bytes) {
-
- bytes = addr & (sizeof(data) - 1);
- addr &= ~(sizeof(data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits
- */
- for (i = 0; i < sizeof(data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left )
- data += *((uchar *)addr + i);
- else
- data += *src++;
- }
-
- /* write one word to the flash */
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- res = write_word_amd(info, (FPWV *)addr, data);
- break;
- default:
- /* unknown flash type, error! */
- printf ("missing or unknown FLASH type\n");
- res = 1; /* not really a timeout, but gives error */
- break;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd (flash_info_t *info, FPWV *dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
- FPWV *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
-
- base = (FPWV *)(info->start[0]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW)0x00A000A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- /* data polling for D7 */
- while (res == 0 && (*dest & (FPW)0x00800080) != (data & (FPW)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW)0x00F000F0; /* reset bank */
- res = 1;
- }
- }
-
- return (res);
-}
-#endif /*CFG_FLASH_CFI_DRIVER*/
diff --git a/board/icecube/icecube.c b/board/icecube/icecube.c
deleted file mode 100644
index 700c9d9323..0000000000
--- a/board/icecube/icecube.c
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#include <common.h>
-#include <mpc5xxx.h>
-#include <pci.h>
-#include <asm/processor.h>
-
-#if defined(CONFIG_OF_FLAT_TREE)
-#include <ft_build.h>
-#endif
-
-#if defined(CONFIG_LITE5200B)
-#include "mt46v32m16.h"
-#else
-# if defined(CONFIG_MPC5200_DDR)
-# include "mt46v16m16-75.h"
-# else
-#include "mt48lc16m16a2-75.h"
-# endif
-#endif
-#ifndef CFG_RAMBOOT
-static void sdram_start (int hi_addr)
-{
- long hi_addr_bit = hi_addr ? 0x01000000 : 0;
-
- /* unlock mode register */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000000 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* precharge all banks */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
-#if SDRAM_DDR
- /* set mode register: extended mode */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_EMODE;
- __asm__ volatile ("sync");
-
- /* set mode register: reset DLL */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE | 0x04000000;
- __asm__ volatile ("sync");
-#endif
-
- /* precharge all banks */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* auto refresh */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000004 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* set mode register */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE;
- __asm__ volatile ("sync");
-
- /* normal operation */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
- __asm__ volatile ("sync");
-}
-#endif
-
-/*
- * ATTENTION: Although partially referenced initdram does NOT make real use
- * use of CFG_SDRAM_BASE. The code does not work if CFG_SDRAM_BASE
- * is something else than 0x00000000.
- */
-
-#if defined(CONFIG_MPC5200)
-long int initdram (int board_type)
-{
- ulong dramsize = 0;
- ulong dramsize2 = 0;
- uint svr, pvr;
-
-#ifndef CFG_RAMBOOT
- ulong test1, test2;
-
- /* setup SDRAM chip selects */
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x0000001e;/* 2G at 0x0 */
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = 0x80000000;/* disabled */
- __asm__ volatile ("sync");
-
- /* setup config registers */
- *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
- *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
- __asm__ volatile ("sync");
-
-#if SDRAM_DDR
- /* set tap delay */
- *(vu_long *)MPC5XXX_CDM_PORCFG = SDRAM_TAPDELAY;
- __asm__ volatile ("sync");
-#endif
-
- /* find RAM size using SDRAM CS0 only */
- sdram_start(0);
- test1 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
- sdram_start(1);
- test2 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
- if (test1 > test2) {
- sdram_start(0);
- dramsize = test1;
- } else {
- dramsize = test2;
- }
-
- /* memory smaller than 1MB is impossible */
- if (dramsize < (1 << 20)) {
- dramsize = 0;
- }
-
- /* set SDRAM CS0 size according to the amount of RAM found */
- if (dramsize > 0) {
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x13 + __builtin_ffs(dramsize >> 20) - 1;
- } else {
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
- }
-
- /* let SDRAM CS1 start right after CS0 */
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e;/* 2G */
-
- /* find RAM size using SDRAM CS1 only */
- if (!dramsize)
- sdram_start(0);
- test2 = test1 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
- if (!dramsize) {
- sdram_start(1);
- test2 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
- }
- if (test1 > test2) {
- sdram_start(0);
- dramsize2 = test1;
- } else {
- dramsize2 = test2;
- }
-
- /* memory smaller than 1MB is impossible */
- if (dramsize2 < (1 << 20)) {
- dramsize2 = 0;
- }
-
- /* set SDRAM CS1 size according to the amount of RAM found */
- if (dramsize2 > 0) {
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize
- | (0x13 + __builtin_ffs(dramsize2 >> 20) - 1);
- } else {
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
- }
-
-#else /* CFG_RAMBOOT */
-
- /* retrieve size of memory connected to SDRAM CS0 */
- dramsize = *(vu_long *)MPC5XXX_SDRAM_CS0CFG & 0xFF;
- if (dramsize >= 0x13) {
- dramsize = (1 << (dramsize - 0x13)) << 20;
- } else {
- dramsize = 0;
- }
-
- /* retrieve size of memory connected to SDRAM CS1 */
- dramsize2 = *(vu_long *)MPC5XXX_SDRAM_CS1CFG & 0xFF;
- if (dramsize2 >= 0x13) {
- dramsize2 = (1 << (dramsize2 - 0x13)) << 20;
- } else {
- dramsize2 = 0;
- }
-
-#endif /* CFG_RAMBOOT */
-
- /*
- * On MPC5200B we need to set the special configuration delay in the
- * DDR controller. Please refer to Freescale's AN3221 "MPC5200B SDRAM
- * Initialization and Configuration", 3.3.1 SDelay--MBAR + 0x0190:
- *
- * "The SDelay should be written to a value of 0x00000004. It is
- * required to account for changes caused by normal wafer processing
- * parameters."
- */
- svr = get_svr();
- pvr = get_pvr();
- if ((SVR_MJREV(svr) >= 2) &&
- (PVR_MAJ(pvr) == 1) && (PVR_MIN(pvr) == 4)) {
-
- *(vu_long *)MPC5XXX_SDRAM_SDELAY = 0x04;
- __asm__ volatile ("sync");
- }
-
- return dramsize + dramsize2;
-}
-
-#elif defined(CONFIG_MGT5100)
-
-long int initdram (int board_type)
-{
- ulong dramsize = 0;
-#ifndef CFG_RAMBOOT
- ulong test1, test2;
-
- /* setup and enable SDRAM chip selects */
- *(vu_long *)MPC5XXX_SDRAM_START = 0x00000000;
- *(vu_long *)MPC5XXX_SDRAM_STOP = 0x0000ffff;/* 2G */
- *(vu_long *)MPC5XXX_ADDECR |= (1 << 22); /* Enable SDRAM */
- __asm__ volatile ("sync");
-
- /* setup config registers */
- *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
- *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
-
- /* address select register */
- *(vu_long *)MPC5XXX_SDRAM_XLBSEL = SDRAM_ADDRSEL;
- __asm__ volatile ("sync");
-
- /* find RAM size */
- sdram_start(0);
- test1 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
- sdram_start(1);
- test2 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
- if (test1 > test2) {
- sdram_start(0);
- dramsize = test1;
- } else {
- dramsize = test2;
- }
-
- /* set SDRAM end address according to size */
- *(vu_long *)MPC5XXX_SDRAM_STOP = ((dramsize - 1) >> 15);
-
-#else /* CFG_RAMBOOT */
-
- /* Retrieve amount of SDRAM available */
- dramsize = ((*(vu_long *)MPC5XXX_SDRAM_STOP + 1) << 15);
-
-#endif /* CFG_RAMBOOT */
-
- return dramsize;
-}
-
-#else
-#error Neither CONFIG_MPC5200 or CONFIG_MGT5100 defined
-#endif
-
-int checkboard (void)
-{
-#if defined (CONFIG_LITE5200B)
- puts ("Board: Freescale Lite5200B\n");
-#elif defined(CONFIG_MPC5200)
- puts ("Board: Motorola MPC5200 (IceCube)\n");
-#elif defined(CONFIG_MGT5100)
- puts ("Board: Motorola MGT5100 (IceCube)\n");
-#endif
- return 0;
-}
-
-void flash_preinit(void)
-{
- /*
- * Now, when we are in RAM, enable flash write
- * access for detection process.
- * Note that CS_BOOT cannot be cleared when
- * executing in flash.
- */
-#if defined(CONFIG_MGT5100)
- *(vu_long *)MPC5XXX_ADDECR &= ~(1 << 25); /* disable CS_BOOT */
- *(vu_long *)MPC5XXX_ADDECR |= (1 << 16); /* enable CS0 */
-#endif
- *(vu_long *)MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
-}
-
-void flash_afterinit(ulong size)
-{
- if (size == 0x800000) { /* adjust mapping */
- *(vu_long *)MPC5XXX_BOOTCS_START = *(vu_long *)MPC5XXX_CS0_START =
- START_REG(CFG_BOOTCS_START | size);
- *(vu_long *)MPC5XXX_BOOTCS_STOP = *(vu_long *)MPC5XXX_CS0_STOP =
- STOP_REG(CFG_BOOTCS_START | size, size);
- }
-}
-
-#ifdef CONFIG_PCI
-static struct pci_controller hose;
-
-extern void pci_mpc5xxx_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
- pci_mpc5xxx_init(&hose);
-}
-#endif
-
-#if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
-
-void init_ide_reset (void)
-{
- debug ("init_ide_reset\n");
-
- /* Configure PSC1_4 as GPIO output for ATA reset */
- *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC1_4;
- *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC1_4;
- /* Deassert reset */
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
-}
-
-void ide_set_reset (int idereset)
-{
- debug ("ide_reset(%d)\n", idereset);
-
- if (idereset) {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
- /* Make a delay. MPC5200 spec says 25 usec min */
- udelay(500000);
- } else {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
- }
-}
-#endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
-
-#if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP)
-void
-ft_board_setup(void *blob, bd_t *bd)
-{
- ft_cpu_setup(blob, bd);
-}
-#endif
diff --git a/board/icecube/mt46v16m16-75.h b/board/icecube/mt46v16m16-75.h
deleted file mode 100644
index 4c0f9a7406..0000000000
--- a/board/icecube/mt46v16m16-75.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#define SDRAM_DDR 1 /* is DDR */
-
-#if defined(CONFIG_MPC5200)
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE 0x018D0000
-#define SDRAM_EMODE 0x40090000
-#define SDRAM_CONTROL 0x705f0f00
-#define SDRAM_CONFIG1 0x73722930
-#define SDRAM_CONFIG2 0x47770000
-#define SDRAM_TAPDELAY 0x10000000
-
-#else
-#error CONFIG_MPC5200 not defined
-#endif
diff --git a/board/icecube/mt46v32m16.h b/board/icecube/mt46v32m16.h
deleted file mode 100644
index de2b48bc60..0000000000
--- a/board/icecube/mt46v32m16.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#define SDRAM_DDR 1 /* is DDR */
-
-#if defined(CONFIG_MPC5200)
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE 0x018D0000
-#define SDRAM_EMODE 0x40090000
-#define SDRAM_CONTROL 0x704f0f00
-#define SDRAM_CONFIG1 0x73722930
-#define SDRAM_CONFIG2 0x47770000
-#define SDRAM_TAPDELAY 0x10000000
-
-#else
-#error CONFIG_MPC5200 not defined
-#endif
diff --git a/board/icecube/mt48lc16m16a2-75.h b/board/icecube/mt48lc16m16a2-75.h
deleted file mode 100644
index ffdf0396a5..0000000000
--- a/board/icecube/mt48lc16m16a2-75.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#define SDRAM_DDR 0 /* is SDR */
-
-#if defined(CONFIG_MPC5200)
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE 0x00CD0000
-#define SDRAM_CONTROL 0x504F0000
-#define SDRAM_CONFIG1 0xD2322800
-#define SDRAM_CONFIG2 0x8AD70000
-
-#elif defined(CONFIG_MGT5100)
-/* Settings for XLB = 66 MHz */
-#define SDRAM_MODE 0x008D0000
-#define SDRAM_CONTROL 0x504F0000
-#define SDRAM_CONFIG1 0xC2222600
-#define SDRAM_CONFIG2 0x88B70004
-#define SDRAM_ADDRSEL 0x02000000
-
-#else
-#error Neither CONFIG_MPC5200 or CONFIG_MGT5100 defined
-#endif
diff --git a/board/icecube/u-boot.lds b/board/icecube/u-boot.lds
deleted file mode 100644
index f23432ecfa..0000000000
--- a/board/icecube/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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/mpc5xxx/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/icu862/Makefile b/board/icu862/Makefile
deleted file mode 100644
index 2b10b0c518..0000000000
--- a/board/icu862/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o pcmcia.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/icu862/config.mk b/board/icu862/config.mk
deleted file mode 100644
index 315e70d764..0000000000
--- a/board/icu862/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (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
-#
-
-#
-# ICU862 boards
-#
-
-TEXT_BASE = 0x40F00000
-OBJCFLAGS = --set-section-flags=.ppcenv=contents,alloc,load,data
diff --git a/board/icu862/flash.c b/board/icu862/flash.c
deleted file mode 100644
index ca5bcf31af..0000000000
--- a/board/icu862/flash.c
+++ /dev/null
@@ -1,617 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0,
- size_b0 >> 20);
- }
-
- if (FLASH_BASE1_PRELIM != 0x0) {
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: Bank 1 (0x%08lx = %ld MB)"
- " > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1 >> 20,
- size_b0, size_b0 >> 20);
-
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
- } else {
- size_b1 = 0;
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- &flash_info[0]);
-#endif
-
- /* ICU862 Board has only one Flash Bank */
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM033C)) {
- /* set sector offsets for uniform sector type */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00040000);
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- puts ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: puts ("AMD "); break;
- case FLASH_MAN_FUJ: puts ("FUJITSU "); break;
- case FLASH_MAN_BM: puts ("BRIGHT MICRO "); break;
- default: puts ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040: puts ("29F040/29LV040 (4 Mbit, uniform sectors)\n");
- break;
- case FLASH_AM400B: puts ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: puts ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: puts ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: puts ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: puts ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: puts ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: puts ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: puts ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_AM033C: puts ("AM29LV033C (32 Mbit)\n");
- break;
- default: puts ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- puts (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0) {
- puts ("\n ");
- }
-
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
-
- puts ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
-#if 0
- ulong base = (ulong)addr;
-#endif
- uchar value;
-
- /* Write auto select command: read Manufacturer ID */
-#if 0
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-#else
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x90909090;
-#endif
-
- value = addr[0];
-
- switch (value + (value << 16)) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- value = addr[1]; /* device ID */
-
- switch ((unsigned long)value) {
- case AMD_ID_F040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- case AMD_ID_LV033C:
- info->flash_id += FLASH_AM033C;
- info->sector_count = 64;
- info->size = 0x01000000;
- break; /* => 16Mb */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
-#if 0
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-#else
- flash_get_offsets ((ulong)addr, &flash_info[0]);
-#endif
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
-#if 1
- /* We don't know why it happens, but on ICU Board *
- * for AMD29033C flash we need to resend the command of *
- * reading flash protection for upper 8 Mb of flash */
- if ( i == 32 ) {
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x90909090;
- }
-#endif
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-#if 0
- *addr = 0x00F000F0; /* reset bank */
-#else
- *addr = 0xF0F0F0F0; /* reset bank */
-#endif
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- puts ("- missing\n");
- } else {
- puts ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- puts ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- puts ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
-#if 0
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-#else
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x80808080;
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
-#endif
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
-#if 0
- addr[0] = 0x00300030;
-#else
- addr[0] = 0x30303030;
-#endif
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
-#if 0
- while ((addr[0] & 0x00800080) != 0x00800080)
-#else
- while ((addr[0] & 0xFFFFFFFF) != 0xFFFFFFFF)
-#endif
- {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- puts ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
-#if 0
- addr[0] = 0x00F000F0; /* reset bank */
-#else
- addr[0] = 0xF0F0F0F0; /* reset bank */
-#endif
-
- puts (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
-#if 0
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-#else
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0xA0A0A0A0;
-#endif
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
-#if 0
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080))
-#else
- while ((*((vu_long *)dest) & 0x80808080) != (data & 0x80808080))
-#endif
- {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/icu862/icu862.c b/board/icu862/icu862.c
deleted file mode 100644
index 8da9d1c9a4..0000000000
--- a/board/icu862/icu862.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * (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 <common.h>
-#include <config.h>
-#include <mpc8xx.h>
-
-/*
- * Memory Controller Using
- *
- * CS0 - Flash memory (0x40000000)
- * CS1 - SDRAM (0x00000000}
- * CS2 - S/UNI Ultra ATM155
- * CS3 - IDT 77106 ATM25
- * CS4 - DSP HPI
- * CS5 - E1/T1 Interface device
- * CS6 - PCMCIA device
- * CS7 - PCMCIA device
- */
-
-/* ------------------------------------------------------------------------- */
-
-#define _not_used_ 0xffffffff
-
-const uint sdram_table[] = {
- /* single read. (offset 0 in upm RAM) */
- 0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00,
- 0x1ff77c47,
-
- /* MRS initialization (offset 5) */
-
- 0x1ff77c34, 0xefeabc34, 0x1fb57c35,
-
- /* burst read. (offset 8 in upm RAM) */
- 0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
- 0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* single write. (offset 18 in upm RAM) */
- 0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* burst write. (offset 20 in upm RAM) */
- 0x1f07fc04, 0xeeaebc00, 0x10ad7c00, 0xf0affc00,
- 0xf0affc00, 0xe1bbbc04, 0x1ff77c47, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* refresh. (offset 30 in upm RAM) */
- 0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc84, 0xfffffc07, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* exception. (offset 3c in upm RAM) */
- 0x7ffffc07, _not_used_, _not_used_, _not_used_
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: ICU862 Board\n");
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size8, size9;
- long int size_b0 = 0;
- unsigned long reg;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_8K;
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller bank 1 to the SDRAM bank at
- * preliminary address - these have to be modified after the
- * SDRAM size has been determined.
- */
- memctl->memc_or1 = CFG_OR1_PRELIM;
- memctl->memc_br1 = CFG_BR1_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80002105; /* SDRAM bank 0 */
- udelay (200);
- memctl->memc_mcr = 0x80002230; /* SDRAM bank 0 - execute twice */
- udelay (200);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL, SDRAM_BASE1_PRELIM,
- SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL, SDRAM_BASE1_PRELIM,
- SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size_b0 = size9;
-/* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */
- } else { /* back to 8 columns */
- size_b0 = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
-/* debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20); */
- }
-
- udelay (1000);
-
- /*
- * Adjust refresh rate depending on SDRAM type, both banks
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if ((size_b0 < 0x02000000)) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
- udelay (1000);
- }
-
- /*
- * Final mapping
- */
-
- memctl->memc_or1 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br1 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
-
- udelay (10000);
-
- return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
diff --git a/board/icu862/pcmcia.c b/board/icu862/pcmcia.c
deleted file mode 100644
index 20f653ba2b..0000000000
--- a/board/icu862/pcmcia.c
+++ /dev/null
@@ -1,268 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#undef CONFIG_PCMCIA
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-#define CONFIG_PCMCIA
-#endif
-
-#if (CONFIG_COMMANDS & CFG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-#define PCMCIA_BOARD_MSG "ICU862"
-
-static void cfg_port_B (void)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- uint reg;
-
- immap = (immap_t *)CFG_IMMR;
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
-
- /*
- * Configure Port B for TPS2205 PC-Card Power-Interface Switch
- *
- * Switch off all voltages, assert shutdown
- */
- reg = cp->cp_pbdat;
- reg |= (TPS2205_VPP_PGM | TPS2205_VPP_VCC | /* VAVPP => Hi-Z */
- TPS2205_VCC3 | TPS2205_VCC5 | /* VAVCC => Hi-Z */
- TPS2205_SHDN); /* enable switch */
- cp->cp_pbdat = reg;
-
- cp->cp_pbpar &= ~(TPS2205_INPUTS | TPS2205_OUTPUTS);
-
- reg = cp->cp_pbdir & ~(TPS2205_INPUTS);
- cp->cp_pbdir = reg | TPS2205_OUTPUTS;
-
- debug ("Set Port B: PAR: %08x DIR: %08x DAT: %08x\n",
- cp->cp_pbpar, cp->cp_pbdir, cp->cp_pbdat);
-}
-
-int pcmcia_hardware_enable(int slot)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- volatile sysconf8xx_t *sysp;
- uint reg, pipr, mask;
- int i;
-
- debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- udelay(10000);
-
- immap = (immap_t *)CFG_IMMR;
- sysp = (sysconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_siu_conf));
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
-
- /* Configure Port B for TPS2205 PC-Card Power-Interface Switch */
- cfg_port_B ();
-
- /*
- * Configure SIUMCR to enable PCMCIA port B
- * (VFLS[0:1] are not used for debugging, we connect FRZ# instead)
- */
- sysp->sc_siumcr &= ~SIUMCR_DBGC11; /* set DBGC to 00 */
-
- /* clear interrupt state, and disable interrupts */
- pcmp->pcmc_pscr = PCMCIA_MASK(_slot_);
- pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_);
-
- /*
- * Disable interrupts, DMA, and PCMCIA buffers
- * (isolate the interface) and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- /*
- * Make sure there is a card in the slot, then configure the interface.
- */
- udelay(10000);
- debug ("[%d] %s: PIPR(%p)=0x%x\n",
- __LINE__,__FUNCTION__,
- &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
- if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
- printf (" No Card found\n");
- return (1);
- }
-
- /*
- * Power On: Set VAVCC to 3.3V or 5V, set VAVPP to Hi-Z
- */
- mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot);
- pipr = pcmp->pcmc_pipr;
- debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",
- pipr,
- (reg&PCMCIA_VS1(slot))?"n":"ff",
- (reg&PCMCIA_VS2(slot))?"n":"ff");
-
- reg = cp->cp_pbdat;
- if ((pipr & mask) == mask) {
- reg |= (TPS2205_VPP_PGM | TPS2205_VPP_VCC | /* VAVPP => Hi-Z */
- TPS2205_VCC3); /* 3V off */
- reg &= ~(TPS2205_VCC5); /* 5V on */
- puts (" 5.0V card found: ");
- } else {
- reg |= (TPS2205_VPP_PGM | TPS2205_VPP_VCC | /* VAVPP => Hi-Z */
- TPS2205_VCC5); /* 5V off */
- reg &= ~(TPS2205_VCC3); /* 3V on */
- puts (" 3.3V card found: ");
- }
-
- debug ("\nPB DAT: %08x -> 3.3V %s 5.0V %s VPP_PGM %s VPP_VCC %s\n",
- reg,
- (reg & TPS2205_VCC3) ? "off" : "on",
- (reg & TPS2205_VCC5) ? "off" : "on",
- (reg & TPS2205_VPP_PGM) ? "off" : "on",
- (reg & TPS2205_VPP_VCC) ? "off" : "on" );
-
- cp->cp_pbdat = reg;
-
- /* Wait 500 ms; use this to check for over-current */
- for (i=0; i<5000; ++i) {
- if ((cp->cp_pbdat & TPS2205_OC) == 0) {
- printf (" *** Overcurrent - Safety shutdown ***\n");
- cp->cp_pbdat &= ~(TPS2205_SHDN);
- return (1);
- }
- udelay (100);
- }
-
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
-
- udelay(250000); /* some cards need >150 ms to come up :-( */
-
- debug ("# hardware_enable done\n");
-
- return (0);
-}
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
-
- debug ("hardware_disable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- immap = (immap_t *)CFG_IMMR;
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
-
- /* Shut down */
- cp->cp_pbdat &= ~(TPS2205_SHDN);
-
- /* Configure PCMCIA General Control Register */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
-
- udelay(10000);
-
- return (0);
-}
-#endif /* CFG_CMD_PCMCIA */
-
-
-int pcmcia_voltage_set(int slot, int vcc, int vpp)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
-
- debug ("voltage_set: "
- PCMCIA_BOARD_MSG
- " Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",
- 'A'+slot, vcc/10, vcc%10, vpp/10, vcc%10);
-
- immap = (immap_t *)CFG_IMMR;
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- /*
- * Disable PCMCIA buffers (isolate the interface)
- * and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- /*
- * Configure Port C pins for
- * 5 Volts Enable and 3 Volts enable,
- * Turn all power pins to Hi-Z
- */
- debug ("PCMCIA power OFF\n");
- cfg_port_B (); /* Enables switch, but all in Hi-Z */
-
- reg = cp->cp_pbdat;
-
- switch(vcc) {
- case 0: break; /* Switch off */
- case 33: reg &= ~TPS2205_VCC3; break; /* Switch on 3.3V */
- case 50: reg &= ~TPS2205_VCC5; break; /* Switch on 5.0V */
- default: goto done;
- }
-
- /* Checking supported voltages */
-
- debug ("PIPR: 0x%x --> %s\n",
- pcmp->pcmc_pipr,
- (pcmp->pcmc_pipr & 0x00008000) ? "only 5 V" : "can do 3.3V");
-
- cp->cp_pbdat = reg;
-
-#ifdef DEBUG
-{
- char *s;
-
- if ((reg & TPS2205_VCC3) == 0) {
- s = "at 3.3V";
- } else if ((reg & TPS2205_VCC5) == 0) {
- s = "at 5.0V";
- } else {
- s = "down";
- }
- printf ("PCMCIA powered %s\n", s);
-}
-#endif
-
-done:
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",
- slot+'A');
- return (0);
-}
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/icu862/u-boot.lds b/board/icu862/u-boot.lds
deleted file mode 100644
index 4bc50c50cb..0000000000
--- a/board/icu862/u-boot.lds
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
-/*
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/icu862/u-boot.lds.debug b/board/icu862/u-boot.lds.debug
deleted file mode 100644
index 87f228beed..0000000000
--- a/board/icu862/u-boot.lds.debug
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/idmr/Makefile b/board/idmr/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/idmr/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/idmr/config.mk b/board/idmr/config.mk
deleted file mode 100644
index f7c2258a85..0000000000
--- a/board/idmr/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# Coldfire contribution by Bernhard Kuhn <bkuhn@metrowerks.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
-#
-
-TEXT_BASE = 0xff800000
diff --git a/board/idmr/flash.c b/board/idmr/flash.c
deleted file mode 100644
index ba9b009e1c..0000000000
--- a/board/idmr/flash.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- * (C) Copyright 2000-2006
- * 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 <common.h>
-
-#define PHYS_FLASH_1 CFG_FLASH_BASE
-#define FLASH_BANK_SIZE 0x800000
-#define EN29LV640 0x227e227e
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf ("AMD: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (EN29LV640 & FLASH_TYPEMASK):
- printf ("EN29LV640 (16Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
- Done:
- return;
-}
-
-
-unsigned long flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (EN29LV640 & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic ("configured to many flash banks!\n");
-
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] = flashbase + 0x10000 * j;
- }
- size += flash_info[i].size;
- }
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + 0x30000, &flash_info[0]);
-
- return size;
-}
-
-
-#define CMD_READ_ARRAY 0x00F0
-#define CMD_UNLOCK1 0x00AA
-#define CMD_UNLOCK2 0x0055
-#define CMD_ERASE_SETUP 0x0080
-#define CMD_ERASE_CONFIRM 0x0030
-#define CMD_PROGRAM 0x00A0
-#define CMD_UNLOCK_BYPASS 0x0020
-
-#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555<<1)))
-#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA<<1)))
-
-#define BIT_ERASE_DONE 0x0080
-#define BIT_RDY_MASK 0x0080
-#define BIT_PROGRAM_ERROR 0x0020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- ulong result;
- int iflag, prot, sect;
- int rc = ERR_OK;
- int chip1;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (AMD_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- iflag = disable_interrupts ();
-
- printf ("\n");
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- set_timer (0);
-
- if (info->protect[sect] == 0) { /* not protected */
- volatile u16 *addr =
- (volatile u16 *) (info->start[sect]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- chip1 = 0;
-
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer (0) > CFG_FLASH_ERASE_TOUT * CFG_HZ / 1000) {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- chip1 = TMO;
- break;
- }
-
- if (!chip1
- && (result & 0xFFFF) & BIT_ERASE_DONE)
- chip1 = READY;
-
- } while (!chip1);
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- if (chip1 == ERR) {
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (chip1 == TMO) {
- rc = ERR_TIMOUT;
- goto outahere;
- }
-
- printf ("ok.\n");
- } else { /* it was protected */
-
- printf ("protected!\n");
- }
- }
-
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
- outahere:
- /* allow flash to settle - wait 10 ms */
- printf("Waiting 10 ms...");
- udelay (10000);
-
-/* for (i = 0; i < 10 * 1000 * 1000; ++i)
- asm(" nop");
-*/
-
- printf("done\n");
- if (iflag)
- enable_interrupts ();
-
-
- return rc;
-}
-
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile u16 *addr = (volatile u16 *) dest;
- ulong result;
- int rc = ERR_OK;
- int iflag;
- int chip1;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- iflag = disable_interrupts ();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- set_timer (0);
-
- /* wait until flash is ready */
- chip1 = 0;
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer (0) > CFG_FLASH_ERASE_TOUT * CFG_HZ / 1000) {
- chip1 = ERR | TMO;
- break;
- }
- if (!chip1 && ((result & 0x80) == (data & 0x80)))
- chip1 = READY;
-
- } while (!chip1);
-
- *addr = CMD_READ_ARRAY;
-
- if (chip1 == ERR || *addr != data)
- rc = ERR_PROG_ERROR;
-
- if (iflag)
- enable_interrupts ();
-
- return rc;
-}
-
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong wp, data;
- int rc;
-
- if (addr & 1) {
- printf ("unaligned destination not supported\n");
- return ERR_ALIGN;
- }
-
-#if 0
- if (cnt & 1) {
- printf ("odd transfer sizes not supported\n");
- return ERR_ALIGN;
- }
-#endif
-
- wp = addr;
-
- if (addr & 1) {
- data = (*((volatile u8 *) addr) << 8) | *((volatile u8 *)
- src);
- if ((rc = write_word (info, wp - 1, data)) != 0) {
- return (rc);
- }
- src += 1;
- wp += 1;
- cnt -= 1;
- }
-
- while (cnt >= 2) {
- data = *((volatile u16 *) src);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 1) {
- data = (*((volatile u8 *) src) << 8) |
- *((volatile u8 *) (wp + 1));
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 1;
- wp += 1;
- cnt -= 1;
- }
-
- return ERR_OK;
-}
diff --git a/board/idmr/idmr.c b/board/idmr/idmr.c
deleted file mode 100644
index 58cdba1e13..0000000000
--- a/board/idmr/idmr.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * (C) Copyright 2000-2006
- * 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 <common.h>
-#include <asm/m5271.h>
-#include <asm/immap_5271.h>
-
-int checkboard (void) {
- puts ("Board: iDMR\n");
- return 0;
-};
-
-long int initdram (int board_type) {
- int i;
-
- /*
- * After reset, CS0 is configured to cover entire address space. We
- * need to configure it to its proper values, so that writes to
- * CFG_SDRAM_BASE and vicinity during SDRAM controller setup below do
- * now fall under CS0 (see 16.3.1 of the MCF5271 Reference Manual).
- */
-
- /* Flash chipselect, CS0 */
- /* ;CSAR0: Flash at 0xFF800000 */
- mbar_writeShort(0x0080, 0xFF80);
-
- /* CSCR0: Flash 6 waits, 16bit */
- mbar_writeShort(0x008A, 0x1980);
-
- /* CSMR0: Flash 8MB, R/W, valid */
- mbar_writeLong(0x0084, 0x007F0001);
-
-
- /*
- * SDRAM configuration proper
- */
-
- /*
- * Address/Data Pin Assignment Reg.: enable address lines 23-21; do
- * not enable data pins D[15:0], as we have 16 bit port to SDRAM
- */
- mbar_writeByte(MCF_GPIO_PAR_AD,
- MCF_GPIO_AD_ADDR23 |
- MCF_GPIO_AD_ADDR22 |
- MCF_GPIO_AD_ADDR21);
-
- /* No need to configure BS pins - reset values are OK */
-
- /* Chip Select Pin Assignment Reg.: set CS[1-7] to GPIO */
- mbar_writeByte(MCF_GPIO_PAR_CS, 0x00);
-
- /* SDRAM Control Pin Assignment Reg. */
- mbar_writeByte(MCF_GPIO_PAR_SDRAM,
- MCF_GPIO_SDRAM_CSSDCS_00 | /* no matter: PAR_CS=0 */
- MCF_GPIO_SDRAM_SDWE |
- MCF_GPIO_SDRAM_SCAS |
- MCF_GPIO_SDRAM_SRAS |
- MCF_GPIO_SDRAM_SCKE |
- MCF_GPIO_SDRAM_SDCS_01);
-
- /*
- * Wait 100us. We run the bus at 50Mhz, one cycle is 20ns. So 5
- * iterations will do, but we do 10 just to be safe.
- */
- for (i = 0; i < 10; ++i)
- asm(" nop");
-
-
- /* 1. Initialize DRAM Control Register: DCR */
- mbar_writeShort(MCF_SDRAMC_DCR,
- MCF_SDRAMC_DCR_RTIM(0x10) | /* 65ns */
- MCF_SDRAMC_DCR_RC(0x60)); /* 1562 cycles */
-
-
- /*
- * 2. Initialize DACR0
- *
- * CL: 11 (CL=3: 0x03, 0x02; CL=2: 0x1)
- * CBM: cmd at A20, bank select bits 21 and up
- * PS: 16 bit
- */
- mbar_writeLong(MCF_SDRAMC_DACR0,
- MCF_SDRAMC_DACRn_BA(CFG_SDRAM_BASE>>18) |
- MCF_SDRAMC_DACRn_BA(0x00) |
- MCF_SDRAMC_DACRn_CASL(0x03) |
- MCF_SDRAMC_DACRn_CBM(0x03) |
- MCF_SDRAMC_DACRn_PS(0x03));
-
- /* Initialize DMR0 */
- mbar_writeLong(MCF_SDRAMC_DMR0,
- MCF_SDRAMC_DMRn_BAM_16M |
- MCF_SDRAMC_DMRn_V);
-
-
- /* 3. Set IP bit in DACR to initiate PALL command */
- mbar_writeLong(MCF_SDRAMC_DACR0,
- mbar_readLong(MCF_SDRAMC_DACR0) |
- MCF_SDRAMC_DACRn_IP);
-
- /* Write to this block to initiate precharge */
- *(volatile u16 *)(CFG_SDRAM_BASE) = 0xa5a5;
-
- /*
- * Wait at least 20ns to allow banks to precharge (t_RP = 20ns). We
- * wait a wee longer, just to be safe.
- */
- for (i = 0; i < 5; ++i)
- asm(" nop");
-
-
- /* 4. Set RE bit in DACR */
- mbar_writeLong(MCF_SDRAMC_DACR0,
- mbar_readLong(MCF_SDRAMC_DACR0) |
- MCF_SDRAMC_DACRn_RE);
-
- /*
- * Wait for at least 8 auto refresh cycles to occur, i.e. at least
- * 781 bus cycles.
- */
- for (i = 0; i < 1000; ++i)
- asm(" nop");
-
- /* Finish the configuration by issuing the MRS */
- mbar_writeLong(MCF_SDRAMC_DACR0,
- mbar_readLong(MCF_SDRAMC_DACR0) |
- MCF_SDRAMC_DACRn_MRS);
-
- /*
- * Write to the SDRAM Mode Register A0-A11 = 0x400
- *
- * Write Burst Mode = Programmed Burst Length
- * Op Mode = Standard Op
- * CAS Latency = 3
- * Burst Type = Sequential
- * Burst Length = 1
- */
- *(volatile u32 *)(CFG_SDRAM_BASE + 0x1800) = 0xa5a5a5a5;
-
- return CFG_SDRAM_SIZE * 1024 * 1024;
-};
-
-
-int testdram (void) {
-
- /* TODO: XXX XXX XXX */
- printf ("DRAM test not implemented!\n");
-
- return (0);
-}
diff --git a/board/idmr/u-boot.lds b/board/idmr/u-boot.lds
deleted file mode 100644
index 69f31793ad..0000000000
--- a/board/idmr/u-boot.lds
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_ARCH(m68k)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib);
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-GROUP(libgcc.a)
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mcf52x2/start.o (.text)
- lib_m68k/traps.o (.text)
- cpu/mcf52x2/interrupts.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.ppcenv)
-
- *(.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_start = .;
- *(.got)
- __got_end = .;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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 = .;
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- . = ALIGN(4);
- _ebss = .;
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/ids8247/Makefile b/board/ids8247/Makefile
deleted file mode 100644
index 4c9634c975..0000000000
--- a/board/ids8247/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2005
-# Heiko Schocher, DENX Software Engineering, <hs@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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ids8247/config.mk b/board/ids8247/config.mk
deleted file mode 100644
index 136cdb8641..0000000000
--- a/board/ids8247/config.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# (C) Copyright 2005
-# Heiko Schocher, DENX Software Engineering, <hs@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
-#
-
-#
-# IDS 8247 Board
-#
-
-# This should be equal to the CFG_FLASH_BASE define in config_IDS8247.h
-# for the "final" configuration, with U-Boot in flash, or the address
-# in RAM where U-Boot is loaded at for debugging.
-#
-TEXT_BASE = 0xfff00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/ids8247/flash.c b/board/ids8247/flash.c
deleted file mode 100644
index 4eba4b9687..0000000000
--- a/board/ids8247/flash.c
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * (C) Copyright 2005
- * Heiko Schocher, DENX Software Engineering, <hs@denx.de>
- *
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001-2005
- * 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
- */
-
-#undef DEBUG
-
-#include <common.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Protection Flags:
- */
-#define FLAG_PROTECT_SET 0x01
-#define FLAG_PROTECT_CLEAR 0x02
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH8
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#elif FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#else /* FLASH_PORT_WIDTH8 */
-#define FLASH_PORT_WIDTH uchar
-#define FLASH_PORT_WIDTHV vu_char
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPWV * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
- volatile immap_t * immr = (immap_t *)CFG_IMMR;
- volatile memctl8260_t *memctl = &immr->im_memctl;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
- size_b0 = flash_get_size ((FPW *) CFG_FLASH0_BASE, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 << 20);
- }
-
- memctl->memc_or0 = 0xff800060;
- memctl->memc_br0 = 0xff800801;
-
- flash_get_offsets (0xff800000, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- (void) flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000);
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J3A:
- printf ("28F320J3A\n");
- break;
- case FLASH_28F640J3A:
- printf ("28F640J3A\n");
- break;
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (FPWV * addr, flash_info_t * info)
-{
- FPW value;
-
- addr[0] = (FPW) 0x00900090;
-
- value = addr[0];
-
- debug ("Manuf. ID @ 0x%08lx: 0x%08lx\n", (ulong)addr, value);
-
- switch (value) {
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
-#ifdef FLASH_PORT_WIDTH8
- value = addr[2]; /* device ID */
-#else
- value = addr[1]; /* device ID */
-#endif
-
- debug ("Device ID @ 0x%08lx: 0x%08lx\n", (ulong)(&addr[1]), value);
-
- switch (value) {
- case (FPW) INTEL_ID_28F320J3A:
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (FPW) INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- }
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
-
- int i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#elif defined(FLASH_PORT_WIDTH32)
- wp = (addr & ~3);
- port_width = 4;
-#else
- wp = addr;
- port_width = 1;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- start = get_timer (0);
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
diff --git a/board/ids8247/ids8247.c b/board/ids8247/ids8247.c
deleted file mode 100644
index 7b9a83d0f9..0000000000
--- a/board/ids8247/ids8247.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * (C) Copyright 2005
- * Heiko Schocher, DENX Software Engineering, <hs@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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 0, 1, 1, 0, 0, 0 }, /* FCC1 COL */
- /* PA30 */ { 0, 1, 1, 0, 0, 0 }, /* FCC1 CRS */
- /* PA29 */ { 0, 1, 1, 1, 0, 0 }, /* FCC1 TXER */
- /* PA28 */ { 0, 1, 1, 1, 0, 0 }, /* FCC1 TXEN */
- /* PA27 */ { 0, 1, 1, 0, 0, 0 }, /* FCC1 RXDV */
- /* PA26 */ { 0, 1, 1, 0, 0, 0 }, /* FCC1 RXER */
- /* PA25 */ { 0, 0, 0, 0, 1, 0 }, /* 8247_P0 */
-#if defined(CONFIG_SOFT_I2C)
- /* PA24 */ { 1, 0, 0, 0, 1, 1 }, /* I2C_SDA2 */
- /* PA23 */ { 1, 0, 0, 1, 1, 1 }, /* I2C_SCL2 */
-#else /* normal I/O port pins */
- /* PA24 */ { 0, 0, 0, 1, 0, 0 }, /* PA24 */
- /* PA23 */ { 0, 0, 0, 1, 0, 0 }, /* PA23 */
-#endif
- /* PA22 */ { 0, 0, 0, 0, 1, 0 }, /* SMC2_DCD */
- /* PA21 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 TXD3 */
- /* PA20 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 TXD2 */
- /* PA19 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 TXD1 */
- /* PA18 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 TXD0 */
- /* PA17 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 RXD0 */
- /* PA16 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 RXD1 */
- /* PA15 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 RXD2 */
- /* PA14 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 RXD3 */
- /* PA13 */ { 0, 0, 0, 1, 1, 0 }, /* SMC2_RTS */
- /* PA12 */ { 0, 0, 0, 0, 1, 0 }, /* SMC2_CTS */
- /* PA11 */ { 0, 0, 0, 1, 1, 0 }, /* SMC2_DTR */
- /* PA10 */ { 0, 0, 0, 0, 1, 0 }, /* SMC2_DSR */
- /* PA9 */ { 0, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PA8 */ { 0, 1, 0, 0, 0, 0 }, /* SMC2 RXD */
- /* PA7 */ { 0, 0, 0, 1, 0, 0 }, /* PA7 */
- /* PA6 */ { 0, 0, 0, 1, 0, 0 }, /* PA6 */
- /* PA5 */ { 0, 0, 0, 1, 0, 0 }, /* PA5 */
- /* PA4 */ { 0, 0, 0, 1, 0, 0 }, /* PA4 */
- /* PA3 */ { 0, 0, 0, 1, 0, 0 }, /* PA3 */
- /* PA2 */ { 0, 0, 0, 1, 0, 0 }, /* PA2 */
- /* PA1 */ { 0, 0, 0, 1, 0, 0 }, /* PA1 */
- /* PA0 */ { 0, 0, 0, 1, 0, 0 } /* PA0 */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { 0, 0, 0, 0, 0, 0 }, /* PB17 */
- /* PB16 */ { 0, 0, 0, 0, 0, 0 }, /* PB16 */
- /* PB15 */ { 0, 0, 0, 0, 0, 0 }, /* PB15 */
- /* PB14 */ { 0, 0, 0, 0, 0, 0 }, /* PB14 */
- /* PB13 */ { 0, 0, 0, 0, 0, 0 }, /* PB13 */
- /* PB12 */ { 0, 0, 0, 0, 0, 0 }, /* PB12 */
- /* PB11 */ { 0, 0, 0, 0, 0, 0 }, /* PB11 */
- /* PB10 */ { 0, 0, 0, 0, 0, 0 }, /* PB10 */
- /* PB9 */ { 0, 0, 0, 0, 0, 0 }, /* PB9 */
- /* PB8 */ { 0, 0, 0, 0, 0, 0 }, /* PB8 */
- /* PB7 */ { 0, 0, 0, 0, 0, 0 }, /* PB7 */
- /* PB6 */ { 0, 0, 0, 0, 0, 0 }, /* PB6 */
- /* PB5 */ { 0, 0, 0, 0, 0, 0 }, /* PB5 */
- /* PB4 */ { 0, 0, 0, 0, 0, 0 }, /* PB4 */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 1, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 1, 0, 0 }, /* PC30 */
- /* PC29 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN *CLSN */
- /* PC28 */ { 0, 1, 1, 0, 0, 0 }, /* SYNC_OUT */
- /* PC27 */ { 0, 0, 0, 1, 0, 0 }, /* PC27 */
- /* PC26 */ { 0, 0, 0, 1, 0, 0 }, /* PC26 */
- /* PC25 */ { 0, 1, 1, 0, 0, 0 }, /* SYNC_IN */
- /* PC24 */ { 0, 0, 0, 1, 0, 0 }, /* PC24 */
- /* PC23 */ { 0, 1, 0, 1, 0, 0 }, /* ATMTFCLK */
- /* PC22 */ { 0, 1, 0, 0, 0, 0 }, /* ATMRFCLK */
- /* PC21 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN RXCLK */
- /* PC20 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN TXCLK */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_CLK */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII TX_CLK */
- /* PC17 */ { 0, 0, 0, 1, 0, 0 }, /* PC17 */
- /* PC16 */ { 0, 0, 0, 1, 0, 0 }, /* PC16 */
- /* PC15 */ { 0, 0, 0, 1, 0, 0 }, /* PC15 */
- /* PC14 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN *CD */
- /* PC13 */ { 0, 0, 0, 1, 0, 0 }, /* PC13 */
- /* PC12 */ { 0, 0, 0, 1, 0, 0 }, /* PC12 */
- /* PC11 */ { 0, 0, 0, 1, 0, 0 }, /* PC11 */
- /* PC10 */ { 0, 0, 0, 1, 0, 0 }, /* FCC2 MDC */
- /* PC9 */ { 0, 0, 0, 1, 0, 0 }, /* FCC2 MDIO */
- /* PC8 */ { 0, 0, 0, 1, 0, 0 }, /* PC8 */
- /* PC7 */ { 0, 0, 0, 1, 0, 0 }, /* PC7 */
- /* PC6 */ { 0, 0, 0, 1, 0, 0 }, /* PC6 */
- /* PC5 */ { 0, 0, 0, 1, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 1, 0, 0 }, /* PC4 */
- /* PC3 */ { 0, 0, 0, 1, 0, 0 }, /* PC3 */
- /* PC2 */ { 0, 0, 0, 1, 0, 1 }, /* ENET FDE */
- /* PC1 */ { 0, 0, 0, 1, 0, 0 }, /* ENET DSQE */
- /* PC0 */ { 0, 0, 0, 1, 0, 0 }, /* ENET LBK */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN RxD */
- /* PD30 */ { 0, 1, 1, 1, 0, 0 }, /* SCC1 EN TxD */
- /* PD29 */ { 0, 1, 0, 1, 0, 0 }, /* SCC1 EN TENA */
- /* PD28 */ { 0, 0, 0, 1, 0, 0 }, /* PD28 */
- /* PD27 */ { 0, 0, 0, 1, 0, 0 }, /* PD27 */
- /* PD26 */ { 0, 0, 0, 1, 0, 0 }, /* PD26 */
- /* PD25 */ { 0, 1, 0, 0, 0, 0 }, /* SCC3_RX */
- /* PD24 */ { 0, 1, 0, 1, 0, 0 }, /* SCC3_TX */
- /* PD23 */ { 0, 1, 0, 1, 0, 0 }, /* SCC3_RTS */
- /* PD22 */ { 0, 1, 0, 0, 0, 0 }, /* SCC4_RXD */
- /* PD21 */ { 0, 1, 0, 1, 0, 0 }, /* SCC4_TXD */
- /* PD20 */ { 0, 1, 0, 1, 0, 0 }, /* SCC4_RTS */
- /* PD19 */ { 0, 1, 1, 0, 0, 0 }, /* SPI_SEL */
- /* PD18 */ { 0, 1, 1, 0, 0, 0 }, /* SPI_CLK */
- /* PD17 */ { 0, 1, 1, 0, 0, 0 }, /* SPI_MOSI */
- /* PD16 */ { 0, 1, 1, 0, 0, 0 }, /* SPI_MISO */
-#if defined(CONFIG_HARD_I2C)
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA1 */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL1 */
-#else /* normal I/O port pins */
- /* PD15 */ { 0, 1, 1, 0, 1, 0 }, /* PD15 */
- /* PD14 */ { 0, 1, 1, 0, 1, 0 }, /* PD14 */
-#endif
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 0, 0, 0, 0, 0, 0 }, /* PD9 */
- /* PD8 */ { 0, 0, 0, 0, 0, 0 }, /* PD8 */
- /* PD7 */ { 0, 0, 0, 1, 0, 1 }, /* MII_MDIO */
- /* PD6 */ { 0, 0, 0, 1, 0, 1 }, /* PD6 */
- /* PD5 */ { 0, 0, 0, 1, 0, 1 }, /* PD5 */
- /* PD4 */ { 0, 0, 0, 1, 0, 1 }, /* PD4 */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
- puts ("Board: IDS 8247\n");
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
- ulong orx, volatile uchar * base)
-{
- volatile uchar c = 0xff;
- volatile uint *sdmr_ptr;
- volatile uint *orx_ptr;
- ulong maxsize, size;
- int i;
-
- /* We must be able to test a location outsize the maximum legal size
- * to find out THAT we are outside; but this address still has to be
- * mapped by the controller. That means, that the initial mapping has
- * to be (at least) twice as large as the maximum expected size.
- */
- maxsize = (1 + (~orx | 0x7fff)) / 2;
-
- sdmr_ptr = &memctl->memc_psdmr;
- orx_ptr = &memctl->memc_or2;
-
- *orx_ptr = orx;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- *sdmr_ptr = sdmr | PSDMR_OP_PREA;
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_MRW;
- *(base + CFG_MRS_OFFS) = c; /* setting MR on address lines */
-
- *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *base = c;
-
- size = get_ram_size((long *)base, maxsize);
- *orx_ptr = orx | ~(size - 1);
-
- return (size);
-}
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
- long psize, lsize;
-
- psize = 16 * 1024 * 1024;
- lsize = 0;
-
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_mptpr = CFG_MPTPR;
-
-#ifndef CFG_RAMBOOT
- /* 60x SDRAM setup:
- */
- psize = try_init (memctl, CFG_PSDMR, CFG_OR2,
- (uchar *) CFG_SDRAM_BASE);
-#endif /* CFG_RAMBOOT */
-
- icache_enable ();
-
- return (psize);
-}
-
-int misc_init_r (void)
-{
- gd->bd->bi_flashstart = 0xff800000;
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-extern ulong
-nand_probe (ulong physadr);
-
-void
-nand_init (void)
-{
- ulong totlen = 0;
-
- debug ("Probing at 0x%.8x\n", CFG_NAND0_BASE);
- totlen += nand_probe (CFG_NAND0_BASE);
-
- printf ("%4lu MB\n", totlen >>20);
-}
-
-#endif /* CFG_CMD_NAND */
diff --git a/board/ids8247/u-boot.lds b/board/ids8247/u-boot.lds
deleted file mode 100644
index 788aed3c6f..0000000000
--- a/board/ids8247/u-boot.lds
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * (C) Copyright 2001
- * Heiko Schocher, DENX Software Engineering, <hs@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/mpc8260/start.o (.text)
- *(.text)
- common/environment.o(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/impa7/Makefile b/board/impa7/Makefile
deleted file mode 100644
index b64d85f751..0000000000
--- a/board/impa7/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := impa7.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/impa7/config.mk b/board/impa7/config.mk
deleted file mode 100644
index 417d6a8e2c..0000000000
--- a/board/impa7/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (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
-#
-
-TEXT_BASE = 0xc1780000
diff --git a/board/impa7/flash.c b/board/impa7/flash.c
deleted file mode 100644
index ca76fe8327..0000000000
--- a/board/impa7/flash.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-
-#define FLASH_BANK_SIZE 0x800000
-#define MAIN_SECT_SIZE 0x20000
-#define PARAM_SECT_SIZE 0x4000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
- (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F320B3T & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else if (i == 1)
- flashbase = PHYS_FLASH_2;
- else
- panic ("configured too many flash banks!\n");
- for (j = 0; j < flash_info[i].sector_count; j++) {
- if (j <= 7) {
- flash_info[i].start[j] =
- flashbase + j * PARAM_SECT_SIZE;
- } else {
- flash_info[i].start[j] =
- flashbase + (j - 7) * MAIN_SECT_SIZE;
- }
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (INTEL_MANUFACT & FLASH_VENDMASK):
- printf ("Intel: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (INTEL_ID_28F320B3T & FLASH_TYPEMASK):
- printf ("28F320F3B (16Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
- Done:;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- int rc = ERR_OK;
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (INTEL_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *) (info->start[sect]);
-
- *addr = 0x00200020; /* erase setup */
- *addr = 0x00D000D0; /* erase confirm */
-
- while ((*addr & 0x00800080) != 0x00800080) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- *addr = 0x00B000B0; /* suspend erase */
- *addr = 0x00FF00FF; /* reset to read mode */
- rc = ERR_TIMOUT;
- goto outahere;
- }
- }
-
- *addr = 0x00FF00FF; /* reset to read mode */
- }
- printf ("ok.\n");
- }
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
- outahere:
-
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
-
- if (flag)
- enable_interrupts ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *) dest;
- ulong barf;
- int rc = ERR_OK;
- int flag;
-
- /* Check if Flash is (sufficiently) erased
- */
- if ((*addr & data) != data)
- return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
-
- /* clear status register command */
- *addr = 0x00500050;
-
- /* program set-up command */
- *addr = 0x00400040;
-
- /* latch address/data */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* read status register command */
- *addr = 0x00700070;
-
- /* wait while polling the status register */
- while ((*addr & 0x00800080) != 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- rc = ERR_TIMOUT;
- /* suspend program command */
- *addr = 0x00B000B0;
- goto outahere;
- }
-
- if (*addr & 0x003A003A) { /* check for error */
- barf = *addr;
- if (barf & 0x003A0000) {
- barf >>= 16;
- } else {
- barf &= 0x0000003A;
- }
- printf ("\nFlash write error %02lx at address %08lx\n", barf, (unsigned long) dest);
- if (barf & 0x0002) {
- printf ("Block locked, not erased.\n");
- rc = ERR_NOT_ERASED;
- goto outahere;
- }
- if (barf & 0x0010) {
- printf ("Programming error.\n");
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (barf & 0x0008) {
- printf ("Vpp Low error.\n");
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- }
-
-
- outahere:
- /* read array command */
- *addr = 0x00FF00FF;
-
- if (flag)
- enable_interrupts ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int l;
- int i, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = *((vu_long *) src);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 4;
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
-
- return write_word (info, wp, data);
-}
diff --git a/board/impa7/impa7.c b/board/impa7/impa7.c
deleted file mode 100644
index 3230dd48f0..0000000000
--- a/board/impa7/impa7.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-#include <clps7111.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* Activate LED flasher */
- IO_LEDFLSH = 0x40;
-
- /* arch number of EP7111 */
- gd->bd->bi_arch_number = MACH_TYPE_EDB7211;
-
- /* location of boot parameters for EP7111 */
- gd->bd->bi_boot_params = 0xc0020100;
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
-
- return (0);
-}
diff --git a/board/impa7/lowlevel_init.S b/board/impa7/lowlevel_init.S
deleted file mode 100644
index 7ce10a2019..0000000000
--- a/board/impa7/lowlevel_init.S
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Memory Setup stuff - taken from ???
- *
- * 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 <config.h>
-#include <version.h>
-
-
-/* some parameters for the board */
-
-SYSCON2: .long 0x80001100
-MEMCFG1: .long 0x80000180
-MEMCFG2: .long 0x800001C0
-DRFPR: .long 0x80000200
-
-syscon2_mask: .long 0x00000004
-memcfg1_val: .long 0x160c1414
-memcfg2_mask: .long 0x0000ffff @ only set lower 16 bits
-memcfg2_val: .long 0x00000000 @ upper 16 bits are reserved for CS7 + CS6
-drfpr_val: .long 0x00000081
-/* setting up the memory */
-
-.globl lowlevel_init
-lowlevel_init:
- /*
- * DRFPR
- * 64kHz DRAM refresh
- */
- ldr r0, DRFPR
- ldr r1, drfpr_val
- str r1, [r0]
-
- /*
- * SYSCON2: clear bit 2, DRAM is 32 bits wide
- */
- ldr r0, SYSCON2
- ldr r2, [r0]
- ldr r1, syscon2_mask
- bic r2, r2, r1
- str r2, [r0]
-
- /*
- * MEMCFG1
- * Setting up Keyboard at CS3, 8 Bit, 3 Waitstates
- * Setting up CS8900 (Ethernet) at CS2, 32 Bit, 5 Waitstates
- * Setting up flash at CS0 and CS1, 32 Bit, 3 Waitstates
- */
- ldr r0, MEMCFG1
- ldr r1, memcfg1_val
- str r1, [r0]
-
- /*
- * MEMCFG2
- * Setting up ? with 0
- *
- */
- ldr r0, MEMCFG2
- ldr r2, [r0]
- ldr r1, memcfg2_mask
- bic r2, r2, r1
- ldr r1, memcfg2_val
- orr r2, r2, r1
- str r2, [r0]
-
- /* everything is fine now */
- mov pc, lr
diff --git a/board/impa7/u-boot.lds b/board/impa7/u-boot.lds
deleted file mode 100644
index 1122d7521c..0000000000
--- a/board/impa7/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm720t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/incaip/Makefile b/board/incaip/Makefile
deleted file mode 100644
index afe02c27c6..0000000000
--- a/board/incaip/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-SOBJS = lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/incaip/config.mk b/board/incaip/config.mk
deleted file mode 100644
index 0cecc011e3..0000000000
--- a/board/incaip/config.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# (C) Copyright 2003
-# 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
-#
-
-#
-# INCA-IP board with MIPS 4Kc CPU core
-#
-
-# ROM version
-TEXT_BASE = 0xB0000000
-
-# RAM version
-#TEXT_BASE = 0x80100000
diff --git a/board/incaip/flash.c b/board/incaip/flash.c
deleted file mode 100644
index 520514dea3..0000000000
--- a/board/incaip/flash.c
+++ /dev/null
@@ -1,671 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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 <common.h>
-#include <asm/inca-ip.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* NOTE - CONFIG_FLASH_16BIT means the CPU interface is 16-bit, it
- * has nothing to do with the flash chip being 8-bit or 16-bit.
- */
-#ifdef CONFIG_FLASH_16BIT
-typedef unsigned short FLASH_PORT_WIDTH;
-typedef volatile unsigned short FLASH_PORT_WIDTHV;
-#define FLASH_ID_MASK 0xFFFF
-#else
-typedef unsigned long FLASH_PORT_WIDTH;
-typedef volatile unsigned long FLASH_PORT_WIDTHV;
-#define FLASH_ID_MASK 0xFFFFFFFF
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define ORMASK(size) ((-size) & OR_AM_MSK)
-
-#if 0
-#define FLASH_CYCLE1 0x0555
-#define FLASH_CYCLE2 0x02aa
-#else
-#define FLASH_CYCLE1 0x0554
-#define FLASH_CYCLE2 0x02ab
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(FPWV *addr, flash_info_t *info);
-static void flash_reset(flash_info_t *info);
-static int write_word_intel(flash_info_t *info, FPWV *dest, FPW data);
-static int write_word_amd(flash_info_t *info, FPWV *dest, FPW data);
-static void flash_get_offsets(ulong base, flash_info_t *info);
-static flash_info_t *flash_get_info(ulong base);
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- unsigned long size = 0;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i < CFG_MAX_FLASH_BANKS; ++i) {
- ulong flashbase = (i == 0) ? PHYS_FLASH_1 : PHYS_FLASH_2;
- ulong * buscon = (ulong *)
- ((i == 0) ? INCA_IP_EBU_EBU_BUSCON0 : INCA_IP_EBU_EBU_BUSCON2);
-
- /* Disable write protection */
- *buscon &= ~INCA_IP_EBU_EBU_BUSCON1_WRDIS;
-
-#if 1
- memset(&flash_info[i], 0, sizeof(flash_info_t));
-#endif
-
- flash_info[i].size =
- flash_get_size((FPW *)flashbase, &flash_info[i]);
-
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx\n",
- i, flash_info[i].size);
- }
-
- size += flash_info[i].size;
- }
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- flash_get_info(CFG_MONITOR_BASE));
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- flash_get_info(CFG_ENV_ADDR));
-#endif
-
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset(flash_info_t *info)
-{
- FPWV *base = (FPWV *)(info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- *base = (FPW)0x00FF00FF; /* Intel Read Mode */
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
- *base = (FPW)0x00F000F0; /* AMD Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL
- && (info->flash_id & FLASH_BTYPE)) {
- int bootsect_size; /* number of bytes/boot sector */
- int sect_size; /* number of bytes/regular sector */
-
- bootsect_size = 0x00002000 * (sizeof(FPW)/2);
- sect_size = 0x00010000 * (sizeof(FPW)/2);
-
- /* set sector offsets for bottom boot block type */
- for (i = 0; i < 8; ++i) {
- info->start[i] = base + (i * bootsect_size);
- }
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + ((i - 7) * sect_size);
- }
- }
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD
- && (info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U) {
-
- int sect_size; /* number of bytes/sector */
-
- sect_size = 0x00010000 * (sizeof(FPW)/2);
-
- /* set up sector start address table (uniform sector type) */
- for( i = 0; i < info->sector_count; i++ )
- info->start[i] = base + (i * sect_size);
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static flash_info_t *flash_get_info(ulong base)
-{
- int i;
- flash_info_t * info;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i ++) {
- info = & flash_info[i];
- if (info->start[0] <= base && base < info->start[0] + info->size)
- break;
- }
-
- return i == CFG_MAX_FLASH_BANKS ? 0 : info;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar *bootletter;
- char *fmt;
- uchar botbootletter[] = "B";
- uchar topbootletter[] = "T";
- uchar botboottype[] = "bottom boot sector";
- uchar topboottype[] = "top boot sector";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- /* check for top or bottom boot, if it applies */
- if (info->flash_id & FLASH_BTYPE) {
- boottype = botboottype;
- bootletter = botbootletter;
- }
- else {
- boottype = topboottype;
- bootletter = topbootletter;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM640U:
- fmt = "29LV641D (64 Mbit, uniform sectors)\n";
- break;
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- fmt = "28F800C3%s (8 Mbit, %s)\n";
- break;
- case FLASH_INTEL800B:
- case FLASH_INTEL800T:
- fmt = "28F800B3%s (8 Mbit, %s)\n";
- break;
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- fmt = "28F160C3%s (16 Mbit, %s)\n";
- break;
- case FLASH_INTEL160B:
- case FLASH_INTEL160T:
- fmt = "28F160B3%s (16 Mbit, %s)\n";
- break;
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- fmt = "28F320C3%s (32 Mbit, %s)\n";
- break;
- case FLASH_INTEL320B:
- case FLASH_INTEL320T:
- fmt = "28F320B3%s (32 Mbit, %s)\n";
- break;
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- fmt = "28F640C3%s (64 Mbit, %s)\n";
- break;
- case FLASH_INTEL640B:
- case FLASH_INTEL640T:
- fmt = "28F640B3%s (64 Mbit, %s)\n";
- break;
- default:
- fmt = "Unknown Chip Type\n";
- break;
- }
-
- printf (fmt, bootletter, boottype);
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
-
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size (FPWV *addr, flash_info_t *info)
-{
- /* Write auto select command: read Manufacturer ID */
-
- /* Write auto select command sequence and test FLASH answer */
- addr[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE2] = (FPW)0x00550055; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE1] = (FPW)0x00900090; /* selects Intel or AMD */
-
- /* The manufacturer codes are only 1 byte, so just use 1 byte.
- * This works for any bus width and any FLASH device width.
- */
- switch (addr[1] & 0xff) {
-
- case (uchar)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case (uchar)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- /* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */
- if (info->flash_id != FLASH_UNKNOWN) switch (addr[0]) {
-
- case (FPW)AMD_ID_LV640U: /* 29LV640 and 29LV641 have same ID */
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- case (FPW)INTEL_ID_28F800C3B:
- info->flash_id += FLASH_28F800C3B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof(FPW)/2);
- break; /* => 1 or 2 MB */
-
- case (FPW)INTEL_ID_28F800B3B:
- info->flash_id += FLASH_INTEL800B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof(FPW)/2);
- break; /* => 1 or 2 MB */
-
- case (FPW)INTEL_ID_28F160C3B:
- info->flash_id += FLASH_28F160C3B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof(FPW)/2);
- break; /* => 2 or 4 MB */
-
- case (FPW)INTEL_ID_28F160B3B:
- info->flash_id += FLASH_INTEL160B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof(FPW)/2);
- break; /* => 2 or 4 MB */
-
- case (FPW)INTEL_ID_28F320C3B:
- info->flash_id += FLASH_28F320C3B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof(FPW)/2);
- break; /* => 4 or 8 MB */
-
- case (FPW)INTEL_ID_28F320B3B:
- info->flash_id += FLASH_INTEL320B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof(FPW)/2);
- break; /* => 4 or 8 MB */
-
- case (FPW)INTEL_ID_28F640C3B:
- info->flash_id += FLASH_28F640C3B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- case (FPW)INTEL_ID_28F640B3B:
- info->flash_id += FLASH_INTEL640B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* => no or unknown flash */
- }
-
- flash_get_offsets((ulong)addr, info);
-
- /* Put FLASH back in read mode */
- flash_reset(info);
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- FPWV *addr;
- int flag, prot, sect;
- int intel = (info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_INTEL800B:
- case FLASH_INTEL160B:
- case FLASH_INTEL320B:
- case FLASH_INTEL640B:
- case FLASH_28F800C3B:
- case FLASH_28F160C3B:
- case FLASH_28F320C3B:
- case FLASH_28F640C3B:
- case FLASH_AM640U:
- break;
- case FLASH_UNKNOWN:
- default:
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- last = get_timer(0);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && rcode == 0; sect++) {
-
- if (info->protect[sect] != 0) /* protected, skip it */
- continue;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr = (FPWV *)(info->start[sect]);
- if (intel) {
- *addr = (FPW)0x00500050; /* clear status register */
- *addr = (FPW)0x00200020; /* erase setup */
- *addr = (FPW)0x00D000D0; /* erase confirm */
- }
- else {
- /* must be AMD style if not Intel */
- FPWV *base; /* first address in bank */
-
- base = (FPWV *)(info->start[0]);
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW)0x00800080; /* erase mode */
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- *addr = (FPW)0x00300030; /* erase sector */
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer(0);
-
- /* wait at least 50us for AMD, 80us for Intel.
- * Let's wait 1 ms.
- */
- udelay (1000);
-
- while ((*addr & (FPW)0x00800080) != (FPW)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
-
- if (intel) {
- /* suspend erase */
- *addr = (FPW)0x00B000B0;
- }
-
- flash_reset(info); /* reset to read mode */
- rcode = 1; /* failed */
- break;
- }
-
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) {/* every second */
- putc ('.');
- last = get_timer(0);
- }
- }
-
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) { /* every second */
- putc ('.');
- last = get_timer(0);
- }
-
- flash_reset(info); /* reset to read mode */
- }
-
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof(data), left -= sizeof(data) - bytes) {
-
- bytes = addr & (sizeof(data) - 1);
- addr &= ~(sizeof(data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits
- */
- for (i = 0; i < sizeof(data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left )
- data += *((uchar *)addr + i);
- else
- data += *src++;
- }
-
- /* write one word to the flash */
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- res = write_word_amd(info, (FPWV *)addr, data);
- break;
- case FLASH_MAN_INTEL:
- res = write_word_intel(info, (FPWV *)addr, data);
- break;
- default:
- /* unknown flash type, error! */
- printf ("missing or unknown FLASH type\n");
- res = 1; /* not really a timeout, but gives error */
- break;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd (flash_info_t *info, FPWV *dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
- FPWV *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
-
- base = (FPWV *)(info->start[0]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW)0x00A000A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- /* data polling for D7 */
- while (res == 0 && (*dest & (FPW)0x00800080) != (data & (FPW)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW)0x00F000F0; /* reset bank */
- res = 1;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for Intel FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_intel (flash_info_t *info, FPWV *dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *dest = (FPW)0x00500050; /* clear status register */
- *dest = (FPW)0x00FF00FF; /* make sure in read mode */
- *dest = (FPW)0x00400040; /* program setup */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- while (res == 0 && (*dest & (FPW)0x00800080) != (FPW)0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW)0x00B000B0; /* Suspend program */
- res = 1;
- }
- }
-
- if (res == 0 && (*dest & (FPW)0x00100010))
- res = 1; /* write failed, time out error is close enough */
-
- *dest = (FPW)0x00500050; /* clear status register */
- *dest = (FPW)0x00FF00FF; /* make sure in read mode */
-
- return (res);
-}
diff --git a/board/incaip/incaip.c b/board/incaip/incaip.c
deleted file mode 100644
index b5d9e00492..0000000000
--- a/board/incaip/incaip.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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 <common.h>
-#include <command.h>
-#include <asm/addrspace.h>
-#include <asm/inca-ip.h>
-
-
-extern uint incaip_get_cpuclk(void);
-
-static ulong max_sdram_size(void)
-{
- /* The only supported SDRAM data width is 16bit.
- */
-#define CFG_DW 2
-
- /* The only supported number of SDRAM banks is 4.
- */
-#define CFG_NB 4
-
- ulong cfgpb0 = *INCA_IP_SDRAM_MC_CFGPB0;
- int cols = cfgpb0 & 0xF;
- int rows = (cfgpb0 & 0xF0) >> 4;
- ulong size = (1 << (rows + cols)) * CFG_DW * CFG_NB;
-
- return size;
-}
-
-long int initdram(int board_type)
-{
- int rows, cols, best_val = *INCA_IP_SDRAM_MC_CFGPB0;
- ulong size, max_size = 0;
- ulong our_address;
-
- asm volatile ("move %0, $25" : "=r" (our_address) :);
-
- /* Can't probe for RAM size unless we are running from Flash.
- */
- if (PHYSADDR(our_address) < PHYSADDR(PHYS_FLASH_1))
- {
- return max_sdram_size();
- }
-
- for (cols = 0x8; cols <= 0xC; cols++)
- {
- for (rows = 0xB; rows <= 0xD; rows++)
- {
- *INCA_IP_SDRAM_MC_CFGPB0 = (0x14 << 8) |
- (rows << 4) | cols;
- size = get_ram_size((long *)CFG_SDRAM_BASE,
- max_sdram_size());
-
- if (size > max_size)
- {
- best_val = *INCA_IP_SDRAM_MC_CFGPB0;
- max_size = size;
- }
- }
- }
-
- *INCA_IP_SDRAM_MC_CFGPB0 = best_val;
- return max_size;
-}
-
-int checkboard (void)
-{
-
- unsigned long chipid = *INCA_IP_WDT_CHIPID;
- int part_num;
-
- puts ("Board: INCA-IP ");
- part_num = (chipid >> 12) & 0xffff;
- switch (part_num) {
- case 0xc0:
- printf ("Standard Version, ");
- break;
- case 0xc1:
- printf ("Basic Version, ");
- break;
- default:
- printf ("Unknown Part Number 0x%x ", part_num);
- break;
- }
-
- printf ("Chip V1.%ld, ", (chipid >> 28));
-
- printf("CPU Speed %d MHz\n", incaip_get_cpuclk()/1000000);
-
- return 0;
-}
diff --git a/board/incaip/lowlevel_init.S b/board/incaip/lowlevel_init.S
deleted file mode 100644
index 14d738aa1a..0000000000
--- a/board/incaip/lowlevel_init.S
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Memory sub-system initialization code for INCA-IP development board.
- *
- * Copyright (c) 2003 Wolfgang Denk <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 <config.h>
-#include <version.h>
-#include <asm/regdef.h>
-
-
-#define EBU_MODUL_BASE 0xB8000200
-#define EBU_CLC(value) 0x0000(value)
-#define EBU_CON(value) 0x0010(value)
-#define EBU_ADDSEL0(value) 0x0020(value)
-#define EBU_ADDSEL1(value) 0x0024(value)
-#define EBU_ADDSEL2(value) 0x0028(value)
-#define EBU_BUSCON0(value) 0x0060(value)
-#define EBU_BUSCON1(value) 0x0064(value)
-#define EBU_BUSCON2(value) 0x0068(value)
-
-#define MC_MODUL_BASE 0xBF800000
-#define MC_ERRCAUSE(value) 0x0100(value)
-#define MC_ERRADDR(value) 0x0108(value)
-#define MC_IOGP(value) 0x0800(value)
-#define MC_SELFRFSH(value) 0x0A00(value)
-#define MC_CTRLENA(value) 0x1000(value)
-#define MC_MRSCODE(value) 0x1008(value)
-#define MC_CFGDW(value) 0x1010(value)
-#define MC_CFGPB0(value) 0x1018(value)
-#define MC_LATENCY(value) 0x1038(value)
-#define MC_TREFRESH(value) 0x1040(value)
-
-#define CGU_MODUL_BASE 0xBF107000
-#define CGU_PLL1CR(value) 0x0008(value)
-#define CGU_DIVCR(value) 0x0010(value)
-#define CGU_MUXCR(value) 0x0014(value)
-#define CGU_PLL1SR(value) 0x000C(value)
-
- .set noreorder
-
-
-/*
- * void ebu_init(long)
- *
- * a0 has the clock value we are going to run at
- */
- .globl ebu_init
- .ent ebu_init
-ebu_init:
-__ebu_init:
-
- li t1, EBU_MODUL_BASE
- li t2, 0xA0000041
- sw t2, EBU_ADDSEL0(t1)
- li t2, 0xA0800041
- sw t2, EBU_ADDSEL2(t1)
- li t2, 0xBE0000F1
- sw t2, EBU_ADDSEL1(t1)
-
- li t3, 100000000
- beq a0, t3, 1f
- nop
- li t3, 133000000
- beq a0, t3, 2f
- nop
- li t3, 150000000
- beq a0, t3, 2f
- nop
- b 3f
- nop
-
- /* 100 MHz */
-1:
- li t2, 0x8841417D
- sw t2, EBU_BUSCON0(t1)
- sw t2, EBU_BUSCON2(t1)
- li t2, 0x684142BD
- b 3f
- sw t2, EBU_BUSCON1(t1) /* delay slot */
-
- /* 133 or 150 MHz */
-2:
- li t2, 0x8841417E
- sw t2, EBU_BUSCON0(t1)
- sw t2, EBU_BUSCON2(t1)
- li t2, 0x684143FD
- sw t2, EBU_BUSCON1(t1)
-3:
- j ra
- nop
-
- .end ebu_init
-
-
-/*
- * void cgu_init(long)
- *
- * a0 has the clock value
- */
- .globl cgu_init
- .ent cgu_init
-cgu_init:
-__cgu_init:
-
- li t1, CGU_MODUL_BASE
-
- li t3, 100000000
- beq a0, t3, 1f
- nop
- li t3, 133000000
- beq a0, t3, 2f
- nop
- li t3, 150000000
- beq a0, t3, 3f
- nop
- b 5f
- nop
-
- /* 100 MHz clock */
-1:
- li t2, 0x80000014
- sw t2, CGU_DIVCR(t1)
- li t2, 0x80000000
- sw t2, CGU_MUXCR(t1)
- li t2, 0x800B0001
- b 5f
- sw t2, CGU_PLL1CR(t1) /* delay slot */
-
- /* 133 MHz clock */
-2:
- li t2, 0x80000054
- sw t2, CGU_DIVCR(t1)
- li t2, 0x80000000
- sw t2, CGU_MUXCR(t1)
- li t2, 0x800B0001
- b 5f
- sw t2, CGU_PLL1CR(t1) /* delay slot */
-
- /* 150 MHz clock */
-3:
- li t2, 0x80000017
- sw t2, CGU_DIVCR(t1)
- li t2, 0xC00B0001
- sw t2, CGU_PLL1CR(t1)
- li t3, 0x80000000
-4:
- lw t2, CGU_PLL1SR(t1)
- and t2, t2, t3
- beq t2, zero, 4b
- nop
- li t2, 0x80000001
- sw t2, CGU_MUXCR(t1)
-5:
- j ra
- nop
-
- .end cgu_init
-
-
-/*
- * void sdram_init(long)
- *
- * a0 has the clock value
- */
- .globl sdram_init
- .ent sdram_init
-sdram_init:
-__sdram_init:
-
- li t1, MC_MODUL_BASE
-
-#if 0
- /* Disable memory controller before changing any of its registers */
- sw zero, MC_CTRLENA(t1)
-#endif
-
- li t2, 100000000
- beq a0, t2, 1f
- nop
- li t2, 133000000
- beq a0, t2, 2f
- nop
- li t2, 150000000
- beq a0, t2, 3f
- nop
- b 5f
- nop
-
- /* 100 MHz clock */
-1:
- /* Set clock ratio (clkrat=1:1, rddel=3) */
- li t2, 0x00000003
- sw t2, MC_IOGP(t1)
-
- /* Set sdram refresh rate (4K/64ms @ 100MHz) */
- li t2, 0x0000061A
- b 4f
- sw t2, MC_TREFRESH(t1)
-
- /* 133 MHz clock */
-2:
- /* Set clock ratio (clkrat=1:1, rddel=3) */
- li t2, 0x00000003
- sw t2, MC_IOGP(t1)
-
- /* Set sdram refresh rate (4K/64ms @ 133MHz) */
- li t2, 0x00000822
- b 4f
- sw t2, MC_TREFRESH(t1)
-
- /* 150 MHz clock */
-3:
- /* Set clock ratio (clkrat=3:2, rddel=4) */
- li t2, 0x00000014
- sw t2, MC_IOGP(t1)
-
- /* Set sdram refresh rate (4K/64ms @ 150MHz) */
- li t2, 0x00000927
- sw t2, MC_TREFRESH(t1)
-
-4:
- /* Clear Error log registers */
- sw zero, MC_ERRCAUSE(t1)
- sw zero, MC_ERRADDR(t1)
-
- /* Clear Power-down registers */
- sw zero, MC_SELFRFSH(t1)
-
- /* Set CAS Latency */
- li t2, 0x00000020 /* CL = 2 */
- sw t2, MC_MRSCODE(t1)
-
- /* Set word width to 16 bit */
- li t2, 0x2
- sw t2, MC_CFGDW(t1)
-
- /* Set CS0 to SDRAM parameters */
- li t2, 0x000014C9
- sw t2, MC_CFGPB0(t1)
-
- /* Set SDRAM latency parameters */
- li t2, 0x00026325 /* BC PC100 */
- sw t2, MC_LATENCY(t1)
-
-5:
- /* Finally enable the controller */
- li t2, 0x00000001
- sw t2, MC_CTRLENA(t1)
-
- j ra
- nop
-
- .end sdram_init
-
-
- .globl lowlevel_init
- .ent lowlevel_init
-lowlevel_init:
-
- /* EBU, CGU and SDRAM Initialization.
- */
- li a0, CPU_CLOCK_RATE
- move t0, ra
-
- /* We rely on the fact that neither ebu_init() nor cgu_init() nor sdram_init()
- * modify t0 and a0.
- */
- bal __cgu_init
- nop
- bal __ebu_init
- nop
- bal __sdram_init
- nop
- move ra, t0
-
- j ra
- nop
-
- .end lowlevel_init
diff --git a/board/incaip/u-boot.lds b/board/incaip/u-boot.lds
deleted file mode 100644
index 10c9917986..0000000000
--- a/board/incaip/u-boot.lds
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk 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_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
-*/
-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips")
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .sdata : { *(.sdata) }
-
- _gp = ALIGN(16);
-
- __got_start = .;
- .got : { *(.got) }
- __got_end = .;
-
- .sdata : { *(.sdata) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- uboot_end_data = .;
- num_got_entries = (__got_end - __got_start) >> 2;
-
- . = ALIGN(4);
- .sbss : { *(.sbss) }
- .bss : { *(.bss) }
- uboot_end = .;
-}
diff --git a/board/inka4x0/Makefile b/board/inka4x0/Makefile
deleted file mode 100644
index 8aa7e7c8e4..0000000000
--- a/board/inka4x0/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/inka4x0/config.mk b/board/inka4x0/config.mk
deleted file mode 100644
index cb19a7daef..0000000000
--- a/board/inka4x0/config.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# (C) Copyright 2004
-# 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
-#
-
-#
-# INKA 4X0 board:
-#
-# Valid values for TEXT_BASE are:
-#
-# 0xFFE00000 boot low
-#
-# 0x00100000 boot from RAM (for testing only)
-#
-
-ifndef TEXT_BASE
-## Standard: boot low
-TEXT_BASE = 0xFFE00000
-## For testing: boot from RAM
-#TEXT_BASE = 0x00100000
-endif
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/inka4x0/flash.c b/board/inka4x0/flash.c
deleted file mode 100644
index b13865530a..0000000000
--- a/board/inka4x0/flash.c
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.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 <common.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*
- * CPU to flash interface is 8-bit, so make declaration accordingly
- */
-typedef unsigned char FLASH_PORT_WIDTH;
-typedef volatile unsigned char FLASH_PORT_WIDTHV;
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define FLASH_CYCLE1 0x0555
-#define FLASH_CYCLE2 0x02aa
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(FPWV *addr, flash_info_t *info);
-static void flash_reset(flash_info_t *info);
-static int write_word_amd(flash_info_t *info, FPWV *dest, FPW data);
-static flash_info_t *flash_get_info(ulong base);
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- unsigned long size = 0;
- extern void flash_preinit(void);
- ulong flashbase = CFG_FLASH_BASE;
-
- flash_preinit();
-
- /* Init: no FLASHes known */
- memset(&flash_info[0], 0, sizeof(flash_info_t));
-
- flash_info[0].size =
- flash_get_size((FPW *)flashbase, &flash_info[0]);
-
- size = flash_info[0].size;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- flash_get_info(CFG_MONITOR_BASE));
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- flash_get_info(CFG_ENV_ADDR));
-#endif
-
- return size ? size : 1;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset(flash_info_t *info)
-{
- FPWV *base = (FPWV *)(info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- *base = (FPW)0x00FF00FF; /* Intel Read Mode */
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
- *base = (FPW)0x00F000F0; /* AMD Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static flash_info_t *flash_get_info(ulong base)
-{
- int i;
- flash_info_t * info;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i ++) {
- info = & flash_info[i];
- if (info->size && info->start[0] <= base &&
- base <= info->start[0] + info->size - 1)
- break;
- }
-
- return i == CFG_MAX_FLASH_BANKS ? 0 : info;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM116DB:
- printf ("AM29LV116DB (16Mbit, bottom boot sect)\n");
- break;
- case FLASH_AMLV128U:
- printf ("AM29LV128ML (128Mbit, uniform sector size)\n");
- break;
- case FLASH_AM160B:
- printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size (FPWV *addr, flash_info_t *info)
-{
- int i;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- /* Write auto select command sequence and test FLASH answer */
- addr[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE2] = (FPW)0x00550055; /* for AMD, Intel ignores this */
- addr[FLASH_CYCLE1] = (FPW)0x00900090; /* selects Intel or AMD */
-
- /* The manufacturer codes are only 1 byte, so just use 1 byte.
- * This works for any bus width and any FLASH device width.
- */
- udelay(100);
- switch (addr[0] & 0xff) {
-
- case (uchar)AMD_MANUFACT:
- debug ("Manufacturer: AMD (Spansion)\n");
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case (uchar)INTEL_MANUFACT:
- debug ("Manufacturer: Intel (not supported yet)\n");
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- /* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */
- if (info->flash_id != FLASH_UNKNOWN) switch ((FPW)addr[1]) {
-
- case (uchar)AMD_ID_LV116DB:
- debug ("Chip: AM29LV116DB\n");
- info->flash_id += FLASH_AM116DB;
- info->sector_count = 35;
- info->size = 0x00200000;
- /*
- * The first 4 sectors are 16 kB, 8 kB, 8 kB and 32 kB, all
- * the other ones are 64 kB
- */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for( i = 4; i < info->sector_count; i++ )
- info->start[i] =
- base + (i * (64 << 10)) - 0x00030000;
- break; /* => 2 MB */
-
- case (FPW)AMD_ID_LV160B:
- debug ("Chip: AM29LV160MB\n");
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- /*
- * The first 4 sectors are 16 kB, 8 kB, 8 kB and 32 kB, all
- * the other ones are 64 kB
- */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for( i = 4; i < info->sector_count; i++ )
- info->start[i] =
- base + (i * 2 * (64 << 10)) - 0x00060000;
- break; /* => 4 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- }
-
- /* Put FLASH back in read mode */
- flash_reset(info);
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- FPWV *addr = (FPWV*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- debug ("flash_erase: first: %d last: %d\n", s_first, s_last);
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = (FPW)0x00AA00AA;
- addr[0x02AA] = (FPW)0x00550055;
- addr[0x0555] = (FPW)0x00800080;
- addr[0x0555] = (FPW)0x00AA00AA;
- addr[0x02AA] = (FPW)0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (FPWV*)(info->start[sect]);
- addr[0] = (FPW)0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (FPWV*)(info->start[l_sect]);
- while ((addr[0] & (FPW)0x00800080) != (FPW)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (FPWV*)info->start[0];
- addr[0] = (FPW)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- int i, rc = 0;
-
- for (i = 0; i < cnt; i++)
- if ((rc = write_word_amd(info, (FPW *)(addr+i), src[i])) != 0) {
- return (rc);
- }
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd (flash_info_t *info, FPWV *dest, FPW data)
-{
- ulong start;
- int flag;
- FPWV *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- base = (FPWV *)(info->start[0]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- base[FLASH_CYCLE1] = (FPW)0x00AA00AA; /* unlock */
- base[FLASH_CYCLE2] = (FPW)0x00550055; /* unlock */
- base[FLASH_CYCLE1] = (FPW)0x00A000A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- /* data polling for D7 */
- while ((*dest & (FPW)0x00800080) != (data & (FPW)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW)0x00F000F0; /* reset bank */
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/inka4x0/inka4x0.c b/board/inka4x0/inka4x0.c
deleted file mode 100644
index d670cc35a0..0000000000
--- a/board/inka4x0/inka4x0.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.com.
- *
- * (C) Copyright 2004
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.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 <common.h>
-#include <mpc5xxx.h>
-#include <pci.h>
-
-#if defined(CONFIG_MPC5200_DDR)
-#include "mt46v16m16-75.h"
-#else
-#include "mt48lc16m16a2-75.h"
-#endif
-
-#ifndef CFG_RAMBOOT
-static void sdram_start (int hi_addr)
-{
- long hi_addr_bit = hi_addr ? 0x01000000 : 0;
-
- /* unlock mode register */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000000 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* precharge all banks */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
-#if SDRAM_DDR
- /* set mode register: extended mode */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_EMODE;
- __asm__ volatile ("sync");
-
- /* set mode register: reset DLL */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE | 0x04000000;
- __asm__ volatile ("sync");
-#endif
-
- /* precharge all banks */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* auto refresh */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000004 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* set mode register */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE;
- __asm__ volatile ("sync");
-
- /* normal operation */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
- __asm__ volatile ("sync");
-}
-#endif
-
-/*
- * ATTENTION: Although partially referenced initdram does NOT make real use
- * use of CFG_SDRAM_BASE. The code does not work if CFG_SDRAM_BASE
- * is something else than 0x00000000.
- */
-
-long int initdram (int board_type)
-{
- ulong dramsize = 0;
-#ifndef CFG_RAMBOOT
- ulong test1, test2;
-
- /* setup SDRAM chip selects */
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x0000001c; /* 512MB at 0x0 */
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = 0x40000000; /* disabled */
- __asm__ volatile ("sync");
-
- /* setup config registers */
- *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
- *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
- __asm__ volatile ("sync");
-
-#if SDRAM_DDR
- /* set tap delay */
- *(vu_long *)MPC5XXX_CDM_PORCFG = SDRAM_TAPDELAY;
- __asm__ volatile ("sync");
-#endif
-
- /* find RAM size using SDRAM CS0 only */
- sdram_start(0);
- test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x20000000);
- sdram_start(1);
- test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x20000000);
- if (test1 > test2) {
- sdram_start(0);
- dramsize = test1;
- } else {
- dramsize = test2;
- }
-
- /* memory smaller than 1MB is impossible */
- if (dramsize < (1 << 20)) {
- dramsize = 0;
- }
-
- /* set SDRAM CS0 size according to the amount of RAM found */
- if (dramsize > 0) {
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x13 +
- __builtin_ffs(dramsize >> 20) - 1;
- } else {
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
- }
-
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
-#else /* CFG_RAMBOOT */
-
- /* retrieve size of memory connected to SDRAM CS0 */
- dramsize = *(vu_long *)MPC5XXX_SDRAM_CS0CFG & 0xFF;
- if (dramsize >= 0x13) {
- dramsize = (1 << (dramsize - 0x13)) << 20;
- } else {
- dramsize = 0;
- }
-
- /* retrieve size of memory connected to SDRAM CS1 */
- dramsize2 = *(vu_long *)MPC5XXX_SDRAM_CS1CFG & 0xFF;
- if (dramsize2 >= 0x13) {
- dramsize2 = (1 << (dramsize2 - 0x13)) << 20;
- } else {
- dramsize2 = 0;
- }
-
-#endif /* CFG_RAMBOOT */
-
-/* return dramsize + dramsize2; */
- return dramsize;
-}
-
-int checkboard (void)
-{
- puts ("Board: INKA 4X0\n");
- return 0;
-}
-
-void flash_preinit(void)
-{
- /*
- * Now, when we are in RAM, enable flash write
- * access for detection process.
- * Note that CS_BOOT cannot be cleared when
- * executing in flash.
- */
- *(vu_long *)MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
-}
-
-int misc_init_f (void)
-{
- uchar tmp[10];
- int i, br;
-
- i = getenv_r("brightness", tmp, sizeof(tmp));
- br = (i > 0)
- ? (int) simple_strtoul (tmp, NULL, 10)
- : CFG_BRIGHTNESS;
- if (br > 255)
- br = 255;
-
- /* Initialize GPIO output pins.
- */
- /* Configure GPT as GPIO output (and set them as they control low-active LEDs */
- *(vu_long *)MPC5XXX_GPT0_ENABLE =
- *(vu_long *)MPC5XXX_GPT1_ENABLE =
- *(vu_long *)MPC5XXX_GPT2_ENABLE =
- *(vu_long *)MPC5XXX_GPT3_ENABLE =
- *(vu_long *)MPC5XXX_GPT4_ENABLE =
- *(vu_long *)MPC5XXX_GPT5_ENABLE = 0x34;
-
- /* Configure GPT7 as PWM timer, 1kHz, no ints. */
- *(vu_long *)MPC5XXX_GPT7_ENABLE = 0;/* Disable */
- *(vu_long *)MPC5XXX_GPT7_COUNTER = 0x020000fe;
- *(vu_long *)MPC5XXX_GPT7_PWMCFG = (br << 16);
- *(vu_long *)MPC5XXX_GPT7_ENABLE = 0x3;/* Enable PWM mode and start */
-
- /* Configure PSC3_6,7 as GPIO output */
- *(vu_long *)MPC5XXX_GPIO_ENABLE |= 0x00003000;
- *(vu_long *)MPC5XXX_GPIO_DIR |= 0x00003000;
-
- /* Configure PSC3_8 as GPIO output, no interrupt */
- *(vu_long *)MPC5XXX_GPIO_SI_ENABLE |= 0x04000000;
- *(vu_long *)MPC5XXX_GPIO_SI_DIR |= 0x04000000;
- *(vu_long *)MPC5XXX_GPIO_SI_IEN &= ~0x04000000;
-
- /* Configure PSC3_9 and GPIO_WKUP6,7 as GPIO output */
- *(vu_long *)MPC5XXX_WU_GPIO_ENABLE |= 0xc4000000;
- *(vu_long *)MPC5XXX_WU_GPIO_DIR |= 0xc4000000;
-
- /* Set LR mirror bit because it is low-active */
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_WKUP_7;
- /*
- * Reset Coral-P graphics controller
- */
- *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC3_9;
- *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC3_9;
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC3_9;
- return 0;
-}
-
-#ifdef CONFIG_PCI
-static struct pci_controller hose;
-
-extern void pci_mpc5xxx_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
- pci_mpc5xxx_init(&hose);
-}
-#endif
-
-#if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
-
-void init_ide_reset (void)
-{
- debug ("init_ide_reset\n");
-
- /* Configure PSC1_4 as GPIO output for ATA reset */
- *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC1_4;
- *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC1_4;
- /* Deassert reset */
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
-}
-
-void ide_set_reset (int idereset)
-{
- debug ("ide_reset(%d)\n", idereset);
-
- if (idereset) {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
- /* Make a delay. MPC5200 spec says 25 usec min */
- udelay(500000);
- } else {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
- }
-}
-#endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
diff --git a/board/inka4x0/mt46v16m16-75.h b/board/inka4x0/mt46v16m16-75.h
deleted file mode 100644
index f650faaa10..0000000000
--- a/board/inka4x0/mt46v16m16-75.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#define SDRAM_DDR 1 /* is DDR */
-
-#if defined(CONFIG_MPC5200)
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE 0x018D0000
-#define SDRAM_EMODE 0x40090000
-#define SDRAM_CONTROL 0x714f0f00
-#define SDRAM_CONFIG1 0x73722930
-#define SDRAM_CONFIG2 0x47770000
-#define SDRAM_TAPDELAY 0x10000000
-
-#else
-#error CONFIG_MPC5200 not defined
-#endif
diff --git a/board/inka4x0/mt48lc16m16a2-75.h b/board/inka4x0/mt48lc16m16a2-75.h
deleted file mode 100644
index 13a97ac462..0000000000
--- a/board/inka4x0/mt48lc16m16a2-75.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#define SDRAM_DDR 1 /* is SDR */
-
-#if defined(CONFIG_MPC5200)
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE 0x00CD0000
-/* #define SDRAM_MODE 0x008D0000 */ /* CAS latency 2 */
-#define SDRAM_CONTROL 0x504F0000
-#define SDRAM_CONFIG1 0xD2322800
-/* #define SDRAM_CONFIG1 0xD2222800 */ /* CAS latency 2 */
-/*#define SDRAM_CONFIG1 0xD7322800 */ /* SDRAM controller bug workaround */
-#define SDRAM_CONFIG2 0x8AD70000
-/*#define SDRAM_CONFIG2 0xDDD70000 */ /* SDRAM controller bug workaround */
-
-#elif defined(CONFIG_MGT5100)
-/* Settings for XLB = 66 MHz */
-#define SDRAM_MODE 0x008D0000
-#define SDRAM_CONTROL 0x504F0000
-#define SDRAM_CONFIG1 0xC2222600
-#define SDRAM_CONFIG2 0x88B70004
-#define SDRAM_ADDRSEL 0x02000000
-
-#else
-#error Neither CONFIG_MPC5200 or CONFIG_MGT5100 defined
-#endif
diff --git a/board/inka4x0/u-boot.lds b/board/inka4x0/u-boot.lds
deleted file mode 100644
index 123a14c5aa..0000000000
--- a/board/inka4x0/u-boot.lds
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc5xxx/start.o (.text)
- cpu/mpc5xxx/traps.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/time.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.ppcenv)
-
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/innokom/Makefile b/board/innokom/Makefile
deleted file mode 100644
index 71c6bba364..0000000000
--- a/board/innokom/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := innokom.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/innokom/config.mk b/board/innokom/config.mk
deleted file mode 100644
index 23543920c3..0000000000
--- a/board/innokom/config.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Linux-Kernel is expected to be at c000'8000, entry c000'8000
-#
-# we load ourself to c170'0000, the upper 1 MB of second bank
-#
-# download areas is c800'0000
-#
-
-# This is the address where U-Boot lives in flash:
-#TEXT_BASE = 0
-
-# FIXME: armboot does only work correctly when being compiled
-# for the addresses _after_ relocation to RAM!! Otherwhise the
-# .bss segment is assumed in flash...
-TEXT_BASE = 0xa1fe0000
diff --git a/board/innokom/flash.c b/board/innokom/flash.c
deleted file mode 100644
index 298acc86a3..0000000000
--- a/board/innokom/flash.c
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * Robert Schwebel, Pengutronix, <r.schwebel@pengutronix.de>
- *
- * (C) Copyright 2002
- * Auerswald GmbH & Co KG, Germany
- * Kai-Uwe Bloem <kai-uwe.bloem@auerswald.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 <common.h>
-#include <asm/arch/pxa-regs.h>
-
-/* Debugging macros ------------------------------------------------------ */
-
-#undef FLASH_DEBUG
-
-/* Some debug macros */
-#if (FLASH_DEBUG > 2 )
-#define PRINTK3(args...) printf(args)
-#else
-#define PRINTK3(args...)
-#endif
-
-#if FLASH_DEBUG > 1
-#define PRINTK2(args...) printf(args)
-#else
-#define PRINTK2(args...)
-#endif
-
-#ifdef FLASH_DEBUG
-#define PRINTK(args...) printf(args)
-#else
-#define PRINTK(args...)
-#endif
-
-/* ------------------------------------------------------------------------ */
-
-/* Development system: we have only 16 MB Flash */
-#ifdef CONFIG_MTD_INNOKOM_16MB
-#define FLASH_BANK_SIZE 0x01000000 /* 16 MB (during development) */
-#define MAIN_SECT_SIZE 0x00020000 /* 128k per sector */
-#endif
-
-/* Production system: we have 64 MB Flash */
-#ifdef CONFIG_MTD_INNOKOM_64MB
-#define FLASH_BANK_SIZE 0x04000000 /* 64 MB */
-#define MAIN_SECT_SIZE 0x00020000 /* 128k per sector */
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/**
- * flash_init: - initialize data structures for flash chips
- *
- * @return: size of the flash
- */
-
-ulong flash_init(void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
- flash_info[i].flash_id =
- (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F128J3 & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset(flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
-
- switch (i) {
- case 0:
- flashbase = PHYS_FLASH_1;
- break;
- default:
- panic("configured too many flash banks!\n");
- break;
- }
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] = flashbase + j*MAIN_SECT_SIZE;
- }
- size += flash_info[i].size;
- }
-
- /* Protect u-boot sectors */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + (256*1024) - 1,
- &flash_info[0]);
-
-#ifdef CFG_ENV_IS_IN_FLASH
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- return size;
-}
-
-
-/**
- * flash_print_info: - print information about the flash situation
- *
- * @param info:
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i, j;
-
- for (j=0; j<CFG_MAX_FLASH_BANKS; j++) {
-
- switch (info->flash_id & FLASH_VENDMASK) {
-
- case (INTEL_MANUFACT & FLASH_VENDMASK):
- printf("Intel: ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
-
- case (INTEL_ID_28F128J3 & FLASH_TYPEMASK):
- printf("28F128J3 (128Mbit)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- return;
- }
-
- printf(" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) printf ("\n ");
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- info++;
- }
-}
-
-
-/**
- * flash_erase: - erase flash sectors
- *
- */
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- int rc = ERR_OK;
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) != (INTEL_MANUFACT & FLASH_VENDMASK))
- return ERR_UNKNOWN_FLASH_VENDOR;
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) prot++;
- }
-
- if (prot) return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && !ctrlc(); sect++) {
-
- printf("Erasing sector %2d ... ", sect);
-
- PRINTK("\n");
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- if (info->protect[sect] == 0) { /* not protected */
- u16 * volatile addr = (u16 * volatile)(info->start[sect]);
-
- PRINTK("unlocking sector\n");
- *addr = 0x0060;
- *addr = 0x00d0;
- *addr = 0x00ff;
-
- PRINTK("erasing sector\n");
- *addr = 0x0020;
- PRINTK("confirming erase\n");
- *addr = 0x00D0;
-
- while ((*addr & 0x0080) != 0x0080) {
- PRINTK(".");
- if (get_timer_masked() > CFG_FLASH_ERASE_TOUT) {
- *addr = 0x00B0; /* suspend erase*/
- *addr = 0x00FF; /* read mode */
- rc = ERR_TIMOUT;
- goto outahere;
- }
- }
-
- PRINTK("clearing status register\n");
- *addr = 0x0050;
- PRINTK("resetting to read mode");
- *addr = 0x00FF;
- }
-
- printf("ok.\n");
- }
-
- if (ctrlc()) printf("User Interrupt!\n");
-
- outahere:
-
- /* allow flash to settle - wait 10 ms */
- udelay_masked(10000);
-
- if (flag) enable_interrupts();
-
- return rc;
-}
-
-
-/**
- * write_word: - copy memory to flash
- *
- * @param info:
- * @param dest:
- * @param data:
- * @return:
- */
-
-static int write_word (flash_info_t *info, ulong dest, ushort data)
-{
- volatile u16 *addr = (u16 *)dest, val;
- int rc = ERR_OK;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts();
-
- /* clear status register command */
- *addr = 0x50;
-
- /* program set-up command */
- *addr = 0x40;
-
- /* latch address/data */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- /* wait while polling the status register */
- while(((val = *addr) & 0x80) != 0x80) {
- if (get_timer_masked() > CFG_FLASH_WRITE_TOUT) {
- rc = ERR_TIMOUT;
- *addr = 0xB0; /* suspend program command */
- goto outahere;
- }
- }
-
- if(val & 0x1A) { /* check for error */
- printf("\nFlash write error %02x at address %08lx\n",
- (int)val, (unsigned long)dest);
- if(val & (1<<3)) {
- printf("Voltage range error.\n");
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if(val & (1<<1)) {
- printf("Device protect error.\n");
- rc = ERR_PROTECTED;
- goto outahere;
- }
- if(val & (1<<4)) {
- printf("Programming error.\n");
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
-
- outahere:
-
- *addr = 0xFF; /* read array command */
- if (flag) enable_interrupts();
-
- return rc;
-}
-
-
-/**
- * write_buf: - Copy memory to flash.
- *
- * @param info:
- * @param src: source of copy transaction
- * @param addr: where to copy to
- * @param cnt: number of bytes to copy
- *
- * @return error code
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- ushort data;
- int l;
- int i, rc;
-
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 8);
- }
- for (; i<2 && cnt>0; ++i) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 8);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 2) {
- /* data = *((vushort*)src); */
- data = *((ushort*)src);
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) return ERR_OK;
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<2 && cnt>0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- }
- for (; i<2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 8);
- }
-
- return write_word(info, wp, data);
-}
diff --git a/board/innokom/innokom.c b/board/innokom/innokom.c
deleted file mode 100644
index 7f8f47c3a2..0000000000
--- a/board/innokom/innokom.c
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * (C) Copyright 2002
- * Robert Schwebel, Pengutronix, r.schwebel@pengutronix.de
- * Kyle Harris, Nexus Technologies, Inc., kharris@nexus-tech.net
- * Marius Groeger, Sysgo Real-Time Solutions GmbH, mgroeger@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
- */
-
-#include <common.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/mach-types.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-# define SHOW_BOOT_PROGRESS(arg) show_boot_progress(arg)
-#else
-# define SHOW_BOOT_PROGRESS(arg)
-#endif
-
-/**
- * i2c_init_board - reset i2c bus. When the board is powercycled during a
- * bus transfer it might hang; for details see doc/I2C_Edge_Conditions.
- * The Innokom board has GPIO70 connected to SCLK which can be toggled
- * until all chips think that their current cycles are finished.
- */
-int i2c_init_board(void)
-{
- int i, icr;
-
- /* disable I2C controller first, otherwhise it thinks we want to */
- /* talk to the slave port... */
- icr = ICR; ICR &= ~(ICR_SCLE | ICR_IUE);
-
- /* set gpio pin low _before_ we change direction to output */
- GPCR(70) = GPIO_bit(70);
-
- /* now toggle between output=low and high-impedance */
- for (i = 0; i < 20; i++) {
- GPDR(70) |= GPIO_bit(70); /* output */
- udelay(10);
- GPDR(70) &= ~GPIO_bit(70); /* input */
- udelay(10);
- }
-
- ICR = icr;
-
- return 0;
-}
-
-
-/**
- * misc_init_r: - misc initialisation routines
- */
-
-int misc_init_r(void)
-{
- uchar *str;
-
- /* determine if the software update key is pressed during startup */
- if (GPLR0 & 0x00000800) {
- printf("using bootcmd_normal (sw-update button not pressed)\n");
- str = getenv("bootcmd_normal");
- } else {
- printf("using bootcmd_update (sw-update button pressed)\n");
- str = getenv("bootcmd_update");
- }
-
- setenv("bootcmd",str);
-
- return 0;
-}
-
-
-/**
- * board_init: - setup some data structures
- *
- * @return: 0 in case of success
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- gd->bd->bi_arch_number = MACH_TYPE_INNOKOM;
- gd->bd->bi_boot_params = 0xa0000100;
- gd->bd->bi_baudrate = CONFIG_BAUDRATE;
-
- return 0;
-}
-
-
-/**
- * dram_init: - setup dynamic RAM
- *
- * @return: 0 in case of success
- */
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return 0;
-}
-
-
-/**
- * innokom_set_led: - switch LEDs on or off
- *
- * @param led: LED to switch (0,1,2)
- * @param state: switch on (1) or off (0)
- */
-
-void innokom_set_led(int led, int state)
-{
- switch(led) {
-/*
- case 0: if (state==1) {
- GPCR0 |= CSB226_USER_LED0;
- } else if (state==0) {
- GPSR0 |= CSB226_USER_LED0;
- }
- break;
-
- case 1: if (state==1) {
- GPCR0 |= CSB226_USER_LED1;
- } else if (state==0) {
- GPSR0 |= CSB226_USER_LED1;
- }
- break;
-
- case 2: if (state==1) {
- GPCR0 |= CSB226_USER_LED2;
- } else if (state==0) {
- GPSR0 |= CSB226_USER_LED2;
- }
- break;
-*/
- }
-
- return;
-}
-
-
-/**
- * show_boot_progress: - indicate state of the boot process
- *
- * @param status: Status number - see README for details.
- *
- * The CSB226 does only have 3 LEDs, so we switch them on at the most
- * important states (1, 5, 15).
- */
-
-void show_boot_progress (int status)
-{
- switch(status) {
-/*
- case 1: csb226_set_led(0,1); break;
- case 5: csb226_set_led(1,1); break;
- case 15: csb226_set_led(2,1); break;
-*/
- }
-
- return;
-}
diff --git a/board/innokom/lowlevel_init.S b/board/innokom/lowlevel_init.S
deleted file mode 100644
index aa9dcba6fc..0000000000
--- a/board/innokom/lowlevel_init.S
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * Most of this taken from Redboot hal_platform_setup.h with cleanup
- *
- * NOTE: I haven't clean this up considerably, just enough to get it
- * running. See hal_platform_setup.h for the source. See
- * board/cradle/lowlevel_init.S for another PXA250 setup that is
- * much cleaner.
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-DRAM_SIZE: .long CFG_DRAM_SIZE
-
-/* wait for coprocessor write complete */
- .macro CPWAIT reg
- mrc p15,0,\reg,c2,c0,0
- mov \reg,\reg
- sub pc,pc,#4
- .endm
-
-_TEXT_BASE:
- .word TEXT_BASE
-
-
-/*
- * Memory setup
- */
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
- /* Set up GPIO pins first ----------------------------------------- */
-
- ldr r0, =GPSR0
- ldr r1, =CFG_GPSR0_VAL
- str r1, [r0]
-
- ldr r0, =GPSR1
- ldr r1, =CFG_GPSR1_VAL
- str r1, [r0]
-
- ldr r0, =GPSR2
- ldr r1, =CFG_GPSR2_VAL
- str r1, [r0]
-
- ldr r0, =GPCR0
- ldr r1, =CFG_GPCR0_VAL
- str r1, [r0]
-
- ldr r0, =GPCR1
- ldr r1, =CFG_GPCR1_VAL
- str r1, [r0]
-
- ldr r0, =GPCR2
- ldr r1, =CFG_GPCR2_VAL
- str r1, [r0]
-
- ldr r0, =GPDR0
- ldr r1, =CFG_GPDR0_VAL
- str r1, [r0]
-
- ldr r0, =GPDR1
- ldr r1, =CFG_GPDR1_VAL
- str r1, [r0]
-
- ldr r0, =GPDR2
- ldr r1, =CFG_GPDR2_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_L
- ldr r1, =CFG_GAFR0_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_U
- ldr r1, =CFG_GAFR0_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_L
- ldr r1, =CFG_GAFR1_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_U
- ldr r1, =CFG_GAFR1_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_L
- ldr r1, =CFG_GAFR2_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_U
- ldr r1, =CFG_GAFR2_U_VAL
- str r1, [r0]
-
- ldr r0, =PSSR /* enable GPIO pins */
- ldr r1, =CFG_PSSR_VAL
- str r1, [r0]
-
-/* ldr r3, =MSC1 / low - bank 2 Lubbock Registers / SRAM */
-/* ldr r2, =CFG_MSC1_VAL / high - bank 3 Ethernet Controller */
-/* str r2, [r3] / need to set MSC1 before trying to write to the HEX LEDs */
-/* ldr r2, [r3] / need to read it back to make sure the value latches (see MSC section of manual) */
-/* */
-/* ldr r1, =LED_BLANK */
-/* mov r0, #0xFF */
-/* str r0, [r1] / turn on hex leds */
-/* */
-/*loop: */
-/* */
-/* ldr r0, =0xB0070001 */
-/* ldr r1, =_LED */
-/* str r0, [r1] / hex display */
-
-
- /* ---------------------------------------------------------------- */
- /* Enable memory interface */
- /* */
- /* The sequence below is based on the recommended init steps */
- /* detailed in the Intel PXA250 Operating Systems Developers Guide, */
- /* Chapter 10. */
- /* ---------------------------------------------------------------- */
-
- /* ---------------------------------------------------------------- */
- /* Step 1: Wait for at least 200 microsedonds to allow internal */
- /* clocks to settle. Only necessary after hard reset... */
- /* FIXME: can be optimized later */
- /* ---------------------------------------------------------------- */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-mem_init:
-
- ldr r1, =MEMC_BASE /* get memory controller base addr. */
-
- /* ---------------------------------------------------------------- */
- /* Step 2a: Initialize Asynchronous static memory controller */
- /* ---------------------------------------------------------------- */
-
- /* MSC registers: timing, bus width, mem type */
-
- /* MSC0: nCS(0,1) */
- ldr r2, =CFG_MSC0_VAL
- str r2, [r1, #MSC0_OFFSET]
- ldr r2, [r1, #MSC0_OFFSET] /* read back to ensure */
- /* that data latches */
- /* MSC1: nCS(2,3) */
- ldr r2, =CFG_MSC1_VAL
- str r2, [r1, #MSC1_OFFSET]
- ldr r2, [r1, #MSC1_OFFSET]
-
- /* MSC2: nCS(4,5) */
- ldr r2, =CFG_MSC2_VAL
- str r2, [r1, #MSC2_OFFSET]
- ldr r2, [r1, #MSC2_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2b: Initialize Card Interface */
- /* ---------------------------------------------------------------- */
-
- /* MECR: Memory Expansion Card Register */
- ldr r2, =CFG_MECR_VAL
- str r2, [r1, #MECR_OFFSET]
- ldr r2, [r1, #MECR_OFFSET]
-
- /* MCMEM0: Card Interface slot 0 timing */
- ldr r2, =CFG_MCMEM0_VAL
- str r2, [r1, #MCMEM0_OFFSET]
- ldr r2, [r1, #MCMEM0_OFFSET]
-
- /* MCMEM1: Card Interface slot 1 timing */
- ldr r2, =CFG_MCMEM1_VAL
- str r2, [r1, #MCMEM1_OFFSET]
- ldr r2, [r1, #MCMEM1_OFFSET]
-
- /* MCATT0: Card Interface Attribute Space Timing, slot 0 */
- ldr r2, =CFG_MCATT0_VAL
- str r2, [r1, #MCATT0_OFFSET]
- ldr r2, [r1, #MCATT0_OFFSET]
-
- /* MCATT1: Card Interface Attribute Space Timing, slot 1 */
- ldr r2, =CFG_MCATT1_VAL
- str r2, [r1, #MCATT1_OFFSET]
- ldr r2, [r1, #MCATT1_OFFSET]
-
- /* MCIO0: Card Interface I/O Space Timing, slot 0 */
- ldr r2, =CFG_MCIO0_VAL
- str r2, [r1, #MCIO0_OFFSET]
- ldr r2, [r1, #MCIO0_OFFSET]
-
- /* MCIO1: Card Interface I/O Space Timing, slot 1 */
- ldr r2, =CFG_MCIO1_VAL
- str r2, [r1, #MCIO1_OFFSET]
- ldr r2, [r1, #MCIO1_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2c: Write FLYCNFG FIXME: what's that??? */
- /* ---------------------------------------------------------------- */
-
- /* test if we run from flash or RAM - RAM/BDI: don't setup RAM */
- adr r3, mem_init /* r0 <- current position of code */
- ldr r2, =mem_init
- cmp r3, r2 /* skip init if in place */
- beq initirqs
-
-
- /* ---------------------------------------------------------------- */
- /* Step 2d: Initialize Timing for Sync Memory (SDCLK0) */
- /* ---------------------------------------------------------------- */
-
- /* Before accessing MDREFR we need a valid DRI field, so we set */
- /* this to power on defaults + DRI field. */
-
- ldr r3, =CFG_MDREFR_VAL
- ldr r2, =0xFFF
- and r3, r3, r2
- ldr r4, =0x03ca4000
- orr r4, r4, r3
-
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
-
- /* ---------------------------------------------------------------- */
- /* Step 3: Initialize Synchronous Static Memory (Flash/Peripherals) */
- /* ---------------------------------------------------------------- */
-
- /* Initialize SXCNFG register. Assert the enable bits */
-
- /* Write SXMRS to cause an MRS command to all enabled banks of */
- /* synchronous static memory. Note that SXLCR need not be written */
- /* at this time. */
-
- /* FIXME: we use async mode for now */
-
-
- /* ---------------------------------------------------------------- */
- /* Step 4: Initialize SDRAM */
- /* ---------------------------------------------------------------- */
-
- /* Step 4a: assert MDREFR:K?RUN and configure */
- /* MDREFR:K1DB2 and MDREFR:K2DB2 as desired. */
-
- ldr r4, =CFG_MDREFR_VAL
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
- /* Step 4b: de-assert MDREFR:SLFRSH. */
-
- bic r4, r4, #(MDREFR_SLFRSH)
-
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
-
- /* Step 4c: assert MDREFR:E1PIN and E0PIO */
-
- orr r4, r4, #(MDREFR_E1PIN|MDREFR_E0PIN)
-
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
-
- /* Step 4d: write MDCNFG with MDCNFG:DEx deasserted (set to 0), to */
- /* configure but not enable each SDRAM partition pair. */
-
- ldr r4, =CFG_MDCNFG_VAL
- bic r4, r4, #(MDCNFG_DE0|MDCNFG_DE1)
-
- str r4, [r1, #MDCNFG_OFFSET] /* write back MDCNFG */
- ldr r4, [r1, #MDCNFG_OFFSET]
-
-
- /* Step 4e: Wait for the clock to the SDRAMs to stabilize, */
- /* 100..200 µsec. */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-
- /* Step 4f: Trigger a number (usually 8) refresh cycles by */
- /* attempting non-burst read or write accesses to disabled */
- /* SDRAM, as commonly specified in the power up sequence */
- /* documented in SDRAM data sheets. The address(es) used */
- /* for this purpose must not be cacheable. */
-
- /* There should 9 writes, since the first write doesn't */
- /* trigger a refresh cycle on PXA250. See Intel PXA250 and */
- /* PXA210 Processors Specification Update, */
- /* Jan 2003, Errata #116, page 30. */
-
-
- ldr r3, =CFG_DRAM_BASE
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
-
- /* Step 4g: Write MDCNFG with enable bits asserted */
- /* (MDCNFG:DEx set to 1). */
-
- ldr r3, [r1, #MDCNFG_OFFSET]
- orr r3, r3, #(MDCNFG_DE0|MDCNFG_DE1)
- str r3, [r1, #MDCNFG_OFFSET]
-
- /* Step 4h: Write MDMRS. */
-
- ldr r2, =CFG_MDMRS_VAL
- str r2, [r1, #MDMRS_OFFSET]
-
-
- /* We are finished with Intel's memory controller initialisation */
-
- /* ---------------------------------------------------------------- */
- /* Disable (mask) all interrupts at interrupt controller */
- /* ---------------------------------------------------------------- */
-
-initirqs:
-
- mov r1, #0 /* clear int. level register (IRQ, not FIQ) */
- ldr r2, =ICLR
- str r1, [r2]
-
- ldr r2, =ICMR /* mask all interrupts at the controller */
- str r1, [r2]
-
-
- /* ---------------------------------------------------------------- */
- /* Clock initialisation */
- /* ---------------------------------------------------------------- */
-
-initclks:
-
- /* Disable the peripheral clocks, and set the core clock frequency */
- /* (hard-coding at 398.12MHz for now). */
-
- /* Turn Off ALL on-chip peripheral clocks for re-configuration */
- /* Note: See label 'ENABLECLKS' for the re-enabling */
- ldr r1, =CKEN
- mov r2, #0
- str r2, [r1]
-
-
- /* default value in case no valid rotary switch setting is found */
- ldr r2, =(CCCR_L27|CCCR_M2|CCCR_N10) /* DEFAULT: {200/200/100} */
-
- /* ... and write the core clock config register */
- ldr r1, =CCCR
- str r2, [r1]
-
- /* enable the 32Khz oscillator for RTC and PowerManager */
-/*
- ldr r1, =OSCC
- mov r2, #OSCC_OON
- str r2, [r1]
-*/
- /* NOTE: spin here until OSCC.OOK get set, meaning the PLL */
- /* has settled. */
-60:
- ldr r2, [r1]
- ands r2, r2, #1
- beq 60b
-
- /* ---------------------------------------------------------------- */
- /* */
- /* ---------------------------------------------------------------- */
-
- /* Save SDRAM size */
- ldr r1, =DRAM_SIZE
- str r8, [r1]
-
- /* Interrupt init: Mask all interrupts */
- ldr r0, =ICMR /* enable no sources */
- mov r1, #0
- str r1, [r0]
-
- /* FIXME */
-
-#ifndef DEBUG
- /*Disable software and data breakpoints */
- mov r0,#0
- mcr p15,0,r0,c14,c8,0 /* ibcr0 */
- mcr p15,0,r0,c14,c9,0 /* ibcr1 */
- mcr p15,0,r0,c14,c4,0 /* dbcon */
-
- /*Enable all debug functionality */
- mov r0,#0x80000000
- mcr p14,0,r0,c10,c0,0 /* dcsr */
-#endif
-
- /* ---------------------------------------------------------------- */
- /* End lowlevel_init */
- /* ---------------------------------------------------------------- */
-
-endlowlevel_init:
-
- mov pc, lr
diff --git a/board/innokom/u-boot.lds b/board/innokom/u-boot.lds
deleted file mode 100644
index f0102391b3..0000000000
--- a/board/innokom/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/integratorap/Makefile b/board/integratorap/Makefile
deleted file mode 100644
index 505121e071..0000000000
--- a/board/integratorap/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2004
-# ARM Ltd.
-# Philippe Robin, <philippe.robin@arm.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
-#
-
-include $(TOPDIR)/config.mk
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS := integratorap.o flash.o
-SOBJS := lowlevel_init.o memsetup.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/integratorap/config.mk b/board/integratorap/config.mk
deleted file mode 100644
index e4c5c3b57a..0000000000
--- a/board/integratorap/config.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# image should be loaded at 0x01000000
-#
-
-TEXT_BASE = 0x01000000
-
-ifneq ($(OBJTREE),$(SRCTREE))
-# We are building u-boot in a separate directory, use generated
-# .lds script from OBJTREE directory.
-LDSCRIPT := $(OBJTREE)/board/$(BOARDDIR)/u-boot.lds
-endif
diff --git a/board/integratorap/flash.c b/board/integratorap/flash.c
deleted file mode 100644
index b120d63eb9..0000000000
--- a/board/integratorap/flash.c
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.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
- */
-
-#include <common.h>
-#include <linux/byteorder/swab.h>
-
-#define PHYS_FLASH_SECT_SIZE 0x00020000 /* 256 KB sectors (x2) */
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-
-/* Flash Organization Structure */
-typedef struct OrgDef {
- unsigned int sector_number;
- unsigned int sector_size;
-} OrgDef;
-
-
-/* Flash Organizations */
-OrgDef OrgIntel_28F256L18T[] = {
- {4, 32 * 1024}, /* 4 * 32kBytes sectors */
- {255, 128 * 1024}, /* 255 * 128kBytes sectors */
-};
-
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-unsigned long flash_init (void);
-static ulong flash_get_size (FPW * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-void inline spin_wheel (void);
-void flash_print_info (flash_info_t * info);
-void flash_unprotect_sectors (FPWV * addr);
-int flash_erase (flash_info_t * info, int s_first, int s_last);
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
- OrgDef *pOrgDef;
-
- pOrgDef = OrgIntel_28F256L18T;
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- if (i > 255) {
- info->start[i] = base + (i * 0x8000);
- info->protect[i] = 0;
- } else {
- info->start[i] = base +
- (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F256L18T:
- printf ("FLASH 28F256L18T\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
- switch (value) {
-
- case (FPW) (INTEL_ID_28F256L18T):
- info->flash_id += FLASH_28F256L18T;
- info->sector_count = 259;
- info->size = 0x02000000;
- break; /* => 32 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/* unprotects a sector for write and erase
- * on some intel parts, this unprotects the entire chip, but it
- * wont hurt to call this additional times per sector...
- */
-void flash_unprotect_sectors (FPWV * addr)
-{
-#define PD_FINTEL_WSMS_READY_MASK 0x0080
-
- *addr = (FPW) 0x00500050; /* clear status register */
-
- /* this sends the clear lock bit command */
- *addr = (FPW) 0x00600060;
- *addr = (FPW) 0x00D000D0;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- flash_unprotect_sectors (addr);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050;/* clear status register */
- *addr = (FPW) 0x00200020;/* erase setup */
- *addr = (FPW) 0x00D000D0;/* erase confirm */
-
- while (((status =
- *addr) & (FPW) 0x00800080) !=
- (FPW) 0x00800080) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- /* suspend erase */
- *addr = (FPW) 0x00B000B0;
- /* reset to read mode */
- *addr = (FPW) 0x00FF00FF;
- rcode = 1;
- break;
- }
- }
-
- /* clear status register cmd. */
- *addr = (FPW) 0x00500050;
- *addr = (FPW) 0x00FF00FF;/* resest to read mode */
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
- return (2);
- }
- flash_unprotect_sectors (addr);
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/integratorap/integratorap.c b/board/integratorap/integratorap.c
deleted file mode 100644
index e659907567..0000000000
--- a/board/integratorap/integratorap.c
+++ /dev/null
@@ -1,649 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.com>
- *
- * (C) Copyright 2004
- * ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.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
- */
-
-#include <common.h>
-
-#ifdef CONFIG_PCI
-#include <pci.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-void flash__init (void);
-void ether__init (void);
-void peripheral_power_enable (void);
-
-#if defined(CONFIG_SHOW_BOOT_PROGRESS)
-void show_boot_progress(int progress)
-{
- printf("Boot reached stage %d\n", progress);
-}
-#endif
-
-#define COMP_MODE_ENABLE ((unsigned int)0x0000EAEF)
-
-static inline void delay (unsigned long loops)
-{
- __asm__ volatile ("1:\n"
- "subs %0, %1, #1\n"
- "bne 1b":"=r" (loops):"0" (loops));
-}
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* arch number of Integrator Board */
- gd->bd->bi_arch_number = MACH_TYPE_INTEGRATOR;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x00000100;
-
- gd->flags = 0;
-
-#ifdef CONFIG_CM_REMAP
-extern void cm_remap(void);
- cm_remap(); /* remaps writeable memory to 0x00000000 */
-#endif
-
- icache_enable ();
-
- flash__init ();
- return 0;
-}
-
-
-int misc_init_r (void)
-{
-#ifdef CONFIG_PCI
- pci_init();
-#endif
- setenv("verify", "n");
- return (0);
-}
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifdef CONFIG_PCI
-
-#ifndef CONFIG_PCI_PNP
-
-static struct pci_config_table pci_integrator_config_table[] = {
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0f, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { }
-};
-#endif
-
-/* V3 access routines */
-#define _V3Write16(o,v) (*(volatile unsigned short *)(PCI_V3_BASE + (unsigned int)(o)) = (unsigned short)(v))
-#define _V3Read16(o) (*(volatile unsigned short *)(PCI_V3_BASE + (unsigned int)(o)))
-
-#define _V3Write32(o,v) (*(volatile unsigned int *)(PCI_V3_BASE + (unsigned int)(o)) = (unsigned int)(v))
-#define _V3Read32(o) (*(volatile unsigned int *)(PCI_V3_BASE + (unsigned int)(o)))
-
-/* Compute address necessary to access PCI config space for the given */
-/* bus and device. */
-#define PCI_CONFIG_ADDRESS( __bus, __devfn, __offset ) ({ \
- unsigned int __address, __devicebit; \
- unsigned short __mapaddress; \
- unsigned int __dev = PCI_DEV (__devfn); /* FIXME to check!! (slot?) */ \
- \
- if (__bus == 0) { \
- /* local bus segment so need a type 0 config cycle */ \
- /* build the PCI configuration "address" with one-hot in A31-A11 */ \
- __address = PCI_CONFIG_BASE; \
- __address |= ((__devfn & 0x07) << 8); \
- __address |= __offset & 0xFF; \
- __mapaddress = 0x000A; /* 101=>config cycle, 0=>A1=A0=0 */ \
- __devicebit = (1 << (__dev + 11)); \
- \
- if ((__devicebit & 0xFF000000) != 0) { \
- /* high order bits are handled by the MAP register */ \
- __mapaddress |= (__devicebit >> 16); \
- } else { \
- /* low order bits handled directly in the address */ \
- __address |= __devicebit; \
- } \
- } else { /* bus !=0 */ \
- /* not the local bus segment so need a type 1 config cycle */ \
- /* A31-A24 are don't care (so clear to 0) */ \
- __mapaddress = 0x000B; /* 101=>config cycle, 1=>A1&A0 from PCI_CFG */ \
- __address = PCI_CONFIG_BASE; \
- __address |= ((__bus & 0xFF) << 16); /* bits 23..16 = bus number */ \
- __address |= ((__dev & 0x1F) << 11); /* bits 15..11 = device number */ \
- __address |= ((__devfn & 0x07) << 8); /* bits 10..8 = function number */ \
- __address |= __offset & 0xFF; /* bits 7..0 = register number */ \
- } \
- _V3Write16 (V3_LB_MAP1, __mapaddress); \
- __address; \
-})
-
-/* _V3OpenConfigWindow - open V3 configuration window */
-#define _V3OpenConfigWindow() { \
- /* Set up base0 to see all 512Mbytes of memory space (not */ \
- /* prefetchable), this frees up base1 for re-use by configuration*/ \
- /* memory */ \
- \
- _V3Write32 (V3_LB_BASE0, ((INTEGRATOR_PCI_BASE & 0xFFF00000) | \
- 0x90 | V3_LB_BASE_M_ENABLE)); \
- /* Set up base1 to point into configuration space, note that MAP1 */ \
- /* register is set up by pciMakeConfigAddress(). */ \
- \
- _V3Write32 (V3_LB_BASE1, ((CPU_PCI_CNFG_ADRS & 0xFFF00000) | \
- 0x40 | V3_LB_BASE_M_ENABLE)); \
-}
-
-/* _V3CloseConfigWindow - close V3 configuration window */
-#define _V3CloseConfigWindow() { \
- /* Reassign base1 for use by prefetchable PCI memory */ \
- _V3Write32 (V3_LB_BASE1, (((INTEGRATOR_PCI_BASE + 0x10000000) & 0xFFF00000) \
- | 0x84 | V3_LB_BASE_M_ENABLE)); \
- _V3Write16 (V3_LB_MAP1, \
- (((INTEGRATOR_PCI_BASE + 0x10000000) & 0xFFF00000) >> 16) | 0x0006); \
- \
- /* And shrink base0 back to a 256M window (NOTE: MAP0 already correct) */ \
- \
- _V3Write32 (V3_LB_BASE0, ((INTEGRATOR_PCI_BASE & 0xFFF00000) | \
- 0x80 | V3_LB_BASE_M_ENABLE)); \
-}
-
-static int pci_integrator_read_byte (struct pci_controller *hose, pci_dev_t dev,
- int offset, unsigned char *val)
-{
- _V3OpenConfigWindow ();
- *val = *(volatile unsigned char *) PCI_CONFIG_ADDRESS (PCI_BUS (dev),
- PCI_FUNC (dev),
- offset);
- _V3CloseConfigWindow ();
-
- return 0;
-}
-
-static int pci_integrator_read__word (struct pci_controller *hose,
- pci_dev_t dev, int offset,
- unsigned short *val)
-{
- _V3OpenConfigWindow ();
- *val = *(volatile unsigned short *) PCI_CONFIG_ADDRESS (PCI_BUS (dev),
- PCI_FUNC (dev),
- offset);
- _V3CloseConfigWindow ();
-
- return 0;
-}
-
-static int pci_integrator_read_dword (struct pci_controller *hose,
- pci_dev_t dev, int offset,
- unsigned int *val)
-{
- _V3OpenConfigWindow ();
- *val = *(volatile unsigned short *) PCI_CONFIG_ADDRESS (PCI_BUS (dev),
- PCI_FUNC (dev),
- offset);
- *val |= (*(volatile unsigned int *)
- PCI_CONFIG_ADDRESS (PCI_BUS (dev), PCI_FUNC (dev),
- (offset + 2))) << 16;
- _V3CloseConfigWindow ();
-
- return 0;
-}
-
-static int pci_integrator_write_byte (struct pci_controller *hose,
- pci_dev_t dev, int offset,
- unsigned char val)
-{
- _V3OpenConfigWindow ();
- *(volatile unsigned char *) PCI_CONFIG_ADDRESS (PCI_BUS (dev),
- PCI_FUNC (dev),
- offset) = val;
- _V3CloseConfigWindow ();
-
- return 0;
-}
-
-static int pci_integrator_write_word (struct pci_controller *hose,
- pci_dev_t dev, int offset,
- unsigned short val)
-{
- _V3OpenConfigWindow ();
- *(volatile unsigned short *) PCI_CONFIG_ADDRESS (PCI_BUS (dev),
- PCI_FUNC (dev),
- offset) = val;
- _V3CloseConfigWindow ();
-
- return 0;
-}
-
-static int pci_integrator_write_dword (struct pci_controller *hose,
- pci_dev_t dev, int offset,
- unsigned int val)
-{
- _V3OpenConfigWindow ();
- *(volatile unsigned short *) PCI_CONFIG_ADDRESS (PCI_BUS (dev),
- PCI_FUNC (dev),
- offset) = (val & 0xFFFF);
- *(volatile unsigned short *) PCI_CONFIG_ADDRESS (PCI_BUS (dev),
- PCI_FUNC (dev),
- (offset + 2)) = ((val >> 16) & 0xFFFF);
- _V3CloseConfigWindow ();
-
- return 0;
-}
-/******************************
- * PCI initialisation
- ******************************/
-
-struct pci_controller integrator_hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_integrator_config_table,
-#endif
-};
-
-void pci_init_board (void)
-{
- volatile int i, j;
- struct pci_controller *hose = &integrator_hose;
-
- /* setting this register will take the V3 out of reset */
-
- *(volatile unsigned int *) (INTEGRATOR_SC_PCIENABLE) = 1;
-
- /* wait a few usecs to settle the device and the PCI bus */
-
- for (i = 0; i < 100; i++)
- j = i + 1;
-
- /* Now write the Base I/O Address Word to V3_BASE + 0x6C */
-
- *(volatile unsigned short *) (V3_BASE + V3_LB_IO_BASE) =
- (unsigned short) (V3_BASE >> 16);
-
- do {
- *(volatile unsigned char *) (V3_BASE + V3_MAIL_DATA) = 0xAA;
- *(volatile unsigned char *) (V3_BASE + V3_MAIL_DATA + 4) =
- 0x55;
- } while (*(volatile unsigned char *) (V3_BASE + V3_MAIL_DATA) != 0xAA
- || *(volatile unsigned char *) (V3_BASE + V3_MAIL_DATA +
- 4) != 0x55);
-
- /* Make sure that V3 register access is not locked, if it is, unlock it */
-
- if ((*(volatile unsigned short *) (V3_BASE + V3_SYSTEM) &
- V3_SYSTEM_M_LOCK)
- == V3_SYSTEM_M_LOCK)
- *(volatile unsigned short *) (V3_BASE + V3_SYSTEM) = 0xA05F;
-
- /* Ensure that the slave accesses from PCI are disabled while we */
- /* setup windows */
-
- *(volatile unsigned short *) (V3_BASE + V3_PCI_CMD) &=
- ~(V3_COMMAND_M_MEM_EN | V3_COMMAND_M_IO_EN);
-
- /* Clear RST_OUT to 0; keep the PCI bus in reset until we've finished */
-
- *(volatile unsigned short *) (V3_BASE + V3_SYSTEM) &=
- ~V3_SYSTEM_M_RST_OUT;
-
- /* Make all accesses from PCI space retry until we're ready for them */
-
- *(volatile unsigned short *) (V3_BASE + V3_PCI_CFG) |=
- V3_PCI_CFG_M_RETRY_EN;
-
- /* Set up any V3 PCI Configuration Registers that we absolutely have to */
- /* LB_CFG controls Local Bus protocol. */
- /* Enable LocalBus byte strobes for READ accesses too. */
- /* set bit 7 BE_IMODE and bit 6 BE_OMODE */
-
- *(volatile unsigned short *) (V3_BASE + V3_LB_CFG) |= 0x0C0;
-
- /* PCI_CMD controls overall PCI operation. */
- /* Enable PCI bus master. */
-
- *(volatile unsigned short *) (V3_BASE + V3_PCI_CMD) |= 0x04;
-
- /* PCI_MAP0 controls where the PCI to CPU memory window is on Local Bus */
-
- *(volatile unsigned int *) (V3_BASE + V3_PCI_MAP0) =
- (INTEGRATOR_BOOT_ROM_BASE) | (V3_PCI_MAP_M_ADR_SIZE_512M |
- V3_PCI_MAP_M_REG_EN |
- V3_PCI_MAP_M_ENABLE);
-
- /* PCI_BASE0 is the PCI address of the start of the window */
-
- *(volatile unsigned int *) (V3_BASE + V3_PCI_BASE0) =
- INTEGRATOR_BOOT_ROM_BASE;
-
- /* PCI_MAP1 is LOCAL address of the start of the window */
-
- *(volatile unsigned int *) (V3_BASE + V3_PCI_MAP1) =
- (INTEGRATOR_HDR0_SDRAM_BASE) | (V3_PCI_MAP_M_ADR_SIZE_1024M |
- V3_PCI_MAP_M_REG_EN |
- V3_PCI_MAP_M_ENABLE);
-
- /* PCI_BASE1 is the PCI address of the start of the window */
-
- *(volatile unsigned int *) (V3_BASE + V3_PCI_BASE1) =
- INTEGRATOR_HDR0_SDRAM_BASE;
-
- /* Set up the windows from local bus memory into PCI configuration, */
- /* I/O and Memory. */
- /* PCI I/O, LB_BASE2 and LB_MAP2 are used exclusively for this. */
-
- *(volatile unsigned short *) (V3_BASE + V3_LB_BASE2) =
- ((CPU_PCI_IO_ADRS >> 24) << 8) | V3_LB_BASE_M_ENABLE;
- *(volatile unsigned short *) (V3_BASE + V3_LB_MAP2) = 0;
-
- /* PCI Configuration, use LB_BASE1/LB_MAP1. */
-
- /* PCI Memory use LB_BASE0/LB_MAP0 and LB_BASE1/LB_MAP1 */
- /* Map first 256Mbytes as non-prefetchable via BASE0/MAP0 */
- /* (INTEGRATOR_PCI_BASE == PCI_MEM_BASE) */
-
- *(volatile unsigned int *) (V3_BASE + V3_LB_BASE0) =
- INTEGRATOR_PCI_BASE | (0x80 | V3_LB_BASE_M_ENABLE);
-
- *(volatile unsigned short *) (V3_BASE + V3_LB_MAP0) =
- ((INTEGRATOR_PCI_BASE >> 20) << 0x4) | 0x0006;
-
- /* Map second 256 Mbytes as prefetchable via BASE1/MAP1 */
-
- *(volatile unsigned int *) (V3_BASE + V3_LB_BASE1) =
- INTEGRATOR_PCI_BASE | (0x84 | V3_LB_BASE_M_ENABLE);
-
- *(volatile unsigned short *) (V3_BASE + V3_LB_MAP1) =
- (((INTEGRATOR_PCI_BASE + 0x10000000) >> 20) << 4) | 0x0006;
-
- /* Allow accesses to PCI Configuration space */
- /* and set up A1, A0 for type 1 config cycles */
-
- *(volatile unsigned short *) (V3_BASE + V3_PCI_CFG) =
- ((*(volatile unsigned short *) (V3_BASE + V3_PCI_CFG)) &
- ~(V3_PCI_CFG_M_RETRY_EN | V3_PCI_CFG_M_AD_LOW1)) |
- V3_PCI_CFG_M_AD_LOW0;
-
- /* now we can allow in PCI MEMORY accesses */
-
- *(volatile unsigned short *) (V3_BASE + V3_PCI_CMD) =
- (*(volatile unsigned short *) (V3_BASE + V3_PCI_CMD)) |
- V3_COMMAND_M_MEM_EN;
-
- /* Set RST_OUT to take the PCI bus is out of reset, PCI devices can */
- /* initialise and lock the V3 system register so that no one else */
- /* can play with it */
-
- *(volatile unsigned short *) (V3_BASE + V3_SYSTEM) =
- (*(volatile unsigned short *) (V3_BASE + V3_SYSTEM)) |
- V3_SYSTEM_M_RST_OUT;
-
- *(volatile unsigned short *) (V3_BASE + V3_SYSTEM) =
- (*(volatile unsigned short *) (V3_BASE + V3_SYSTEM)) |
- V3_SYSTEM_M_LOCK;
-
- /*
- * Register the hose
- */
- hose->first_busno = 0;
- hose->last_busno = 0xff;
-
- /* System memory space */
- pci_set_region (hose->regions + 0,
- 0x00000000, 0x40000000, 0x01000000,
- PCI_REGION_MEM | PCI_REGION_MEMORY);
-
- /* PCI Memory - config space */
- pci_set_region (hose->regions + 1,
- 0x00000000, 0x62000000, 0x01000000, PCI_REGION_MEM);
-
- /* PCI V3 regs */
- pci_set_region (hose->regions + 2,
- 0x00000000, 0x61000000, 0x00080000, PCI_REGION_MEM);
-
- /* PCI I/O space */
- pci_set_region (hose->regions + 3,
- 0x00000000, 0x60000000, 0x00010000, PCI_REGION_IO);
-
- pci_set_ops (hose,
- pci_integrator_read_byte,
- pci_integrator_read__word,
- pci_integrator_read_dword,
- pci_integrator_write_byte,
- pci_integrator_write_word, pci_integrator_write_dword);
-
- hose->region_count = 4;
-
- pci_register_hose (hose);
-
- pciauto_config_init (hose);
- pciauto_config_device (hose, 0);
-
- hose->last_busno = pci_hose_scan (hose);
-}
-#endif
-
-/******************************
- Routine:
- Description:
-******************************/
-void flash__init (void)
-{
-}
-/*************************************************************
- Routine:ether__init
- Description: take the Ethernet controller out of reset and wait
- for the EEPROM load to complete.
-*************************************************************/
-void ether__init (void)
-{
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
-#ifdef CONFIG_CM_SPD_DETECT
- {
-extern void dram_query(void);
- unsigned long cm_reg_sdram;
- unsigned long sdram_shift;
-
- dram_query(); /* Assembler accesses to CM registers */
- /* Queries the SPD values */
-
- /* Obtain the SDRAM size from the CM SDRAM register */
-
- cm_reg_sdram = *(volatile ulong *)(CM_BASE + OS_SDRAM);
- /* Register SDRAM size
- *
- * 0xXXXXXXbbb000bb 16 MB
- * 0xXXXXXXbbb001bb 32 MB
- * 0xXXXXXXbbb010bb 64 MB
- * 0xXXXXXXbbb011bb 128 MB
- * 0xXXXXXXbbb100bb 256 MB
- *
- */
- sdram_shift = ((cm_reg_sdram & 0x0000001C)/4)%4;
- gd->bd->bi_dram[0].size = 0x01000000 << sdram_shift;
-
- }
-#endif /* CM_SPD_DETECT */
-
- return 0;
-}
-
-/* The Integrator/AP timer1 is clocked at 24MHz
- * can be divided by 16 or 256
- * and is a 16-bit counter
- */
-/* U-Boot expects a 32 bit timer running at CFG_HZ*/
-static ulong timestamp; /* U-Boot ticks since startup */
-static ulong total_count = 0; /* Total timer count */
-static ulong lastdec; /* Timer reading at last call */
-static ulong div_clock = 256; /* Divisor applied to the timer clock */
-static ulong div_timer = 1; /* Divisor to convert timer reading
- * change to U-Boot ticks
- */
-/* CFG_HZ = CFG_HZ_CLOCK/(div_clock * div_timer) */
-
-#define TIMER_LOAD_VAL 0x0000FFFFL
-#define READ_TIMER ((*(volatile ulong *)(CFG_TIMERBASE+4)) & 0x0000FFFFL)
-
-/* all function return values in U-Boot ticks i.e. (1/CFG_HZ) sec
- * - unless otherwise stated
- */
-
-/* starts a counter
- * - the Integrator/AP timer issues an interrupt
- * each time it reaches zero
- */
-int interrupt_init (void)
-{
- /* Load timer with initial value */
- *(volatile ulong *)(CFG_TIMERBASE + 0) = TIMER_LOAD_VAL;
- /* Set timer to be
- * enabled 1
- * free-running 0
- * XX 00
- * divider 256 10
- * XX 00
- */
- *(volatile ulong *)(CFG_TIMERBASE + 8) = 0x00000088;
- total_count = 0;
- /* init the timestamp and lastdec value */
- reset_timer_masked();
-
- div_timer = CFG_HZ_CLOCK / CFG_HZ;
- div_timer /= div_clock;
-
- return (0);
-}
-
-/*
- * timer without interrupts
- */
-void reset_timer (void)
-{
- reset_timer_masked ();
-}
-
-ulong get_timer (ulong base_ticks)
-{
- return get_timer_masked () - base_ticks;
-}
-
-void set_timer (ulong ticks)
-{
- timestamp = ticks;
- total_count = ticks * div_timer;
- reset_timer_masked();
-}
-
-/* delay x useconds */
-void udelay (unsigned long usec)
-{
- ulong tmo, tmp;
-
- /* Convert to U-Boot ticks */
- tmo = usec * CFG_HZ;
- tmo /= (1000000L);
-
- tmp = get_timer_masked(); /* get current timestamp */
- tmo += tmp; /* wake up timestamp */
-
- while (get_timer_masked () < tmo) { /* loop till event */
- /*NOP*/;
- }
-}
-
-void reset_timer_masked (void)
-{
- /* reset time */
- lastdec = READ_TIMER; /* capture current decrementer value */
- timestamp = 0; /* start "advancing" time stamp from 0 */
-}
-
-/* converts the timer reading to U-Boot ticks */
-/* the timestamp is the number of ticks since reset */
-/* This routine does not detect wraps unless called regularly
- ASSUMES a call at least every 16 seconds to detect every reload */
-ulong get_timer_masked (void)
-{
- ulong now = READ_TIMER; /* current count */
-
- if (now > lastdec) {
- /* Must have wrapped */
- total_count += lastdec + TIMER_LOAD_VAL + 1 - now;
- } else {
- total_count += lastdec - now;
- }
- lastdec = now;
- timestamp = total_count/div_timer;
-
- return timestamp;
-}
-
-/* waits specified delay value and resets timestamp */
-void udelay_masked (unsigned long usec)
-{
- udelay(usec);
-}
-
-/*
- * This function is derived from PowerPC code (read timebase as long long).
- * On ARM it just returns the timer value.
- */
-unsigned long long get_ticks(void)
-{
- return get_timer(0);
-}
-
-/*
- * Return the timebase clock frequency
- * i.e. how often the timer decrements
- */
-ulong get_tbclk (void)
-{
- return CFG_HZ_CLOCK/div_clock;
-}
diff --git a/board/integratorap/lowlevel_init.S b/board/integratorap/lowlevel_init.S
deleted file mode 100644
index ab9589c95c..0000000000
--- a/board/integratorap/lowlevel_init.S
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Board specific setup info
- *
- * (C) Copyright 2004, ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.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
- */
-
-#include <config.h>
-#include <version.h>
-
- /* Reset using CM control register */
-.global reset_cpu
-reset_cpu:
- mov r0, #CM_BASE
- ldr r1,[r0,#OS_CTRL]
- orr r1,r1,#CMMASK_RESET
- str r1,[r0,#OS_CTRL]
-
-reset_failed:
- b reset_failed
-
-/* Set up the platform, once the cpu has been initialized */
-.globl lowlevel_init
-lowlevel_init:
- /* If U-Boot has been run after the ARM boot monitor
- * then all the necessary actions have been done
- * otherwise we are running from user flash mapped to 0x00000000
- * --- DO NOT REMAP BEFORE THE CODE HAS BEEN RELOCATED --
- * Changes to the (possibly soft) reset defaults of the processor
- * itself should be performed in cpu/arm<>/start.S
- * This function affects only the core module or board settings
- */
-
-#ifdef CONFIG_CM_INIT
- /* CM has an initialization register
- * - bits in it are wired into test-chip pins to force
- * reset defaults
- * - may need to change its contents for U-Boot
- */
-
- /* set the desired CM specific value */
- mov r2,#CMMASK_LOWVEC /* Vectors at 0x00000000 for all */
-
-#if defined (CONFIG_CM10200E) || defined (CONFIG_CM10220E)
- orr r2,r2,#CMMASK_INIT_102
-#else
-
-#if !defined (CONFIG_CM920T) && !defined (CONFIG_CM920T_ETM) && \
- !defined (CONFIG_CM940T)
-
-#ifdef CONFIG_CM_MULTIPLE_SSRAM
- /* set simple mapping */
- and r2,r2,#CMMASK_MAP_SIMPLE
-#endif /* #ifdef CONFIG_CM_MULTIPLE_SSRAM */
-
-#ifdef CONFIG_CM_TCRAM
- /* disable TCRAM */
- and r2,r2,#CMMASK_TCRAM_DISABLE
-#endif /* #ifdef CONFIG_CM_TCRAM */
-
-#if defined (CONFIG_CM926EJ_S) || defined (CONFIG_CM1026EJ_S) || \
- defined (CONFIG_CM1136JF_S)
-
- and r2,r2,#CMMASK_LE
-
-#endif /* cpu with little endian initialization */
-
- orr r2,r2,#CMMASK_CMxx6_COMMON
-
-#endif /* CMxx6 code */
-
-#endif /* ARM102xxE value */
-
- /* read CM_INIT */
- mov r0, #CM_BASE
- ldr r1, [r0, #OS_INIT]
- /* check against desired bit setting */
- and r3,r1,r2
- cmp r3,r2
- beq init_reg_OK
-
- /* lock for change */
- mov r3, #CMVAL_LOCK1
- add r3,r3,#CMVAL_LOCK2
- str r3, [r0, #OS_LOCK]
- /* set desired value */
- orr r1,r1,r2
- /* write & relock CM_INIT */
- str r1, [r0, #OS_INIT]
- mov r1, #CMVAL_UNLOCK
- str r1, [r0, #OS_LOCK]
-
- /* soft reset so new values used */
- b reset_cpu
-
-init_reg_OK:
-
-#endif /* CONFIG_CM_INIT */
-
- mov pc, lr
-
-#ifdef CONFIG_CM_SPD_DETECT
- /* Fast memory is available for the DRAM data
- * - ensure it has been transferred, then summarize the data
- * into a CM register
- */
-.globl dram_query
-dram_query:
- stmfd r13!,{r4-r6,lr}
- /* set up SDRAM info */
- /* - based on example code from the CM User Guide */
- mov r0, #CM_BASE
-
-readspdbit:
- ldr r1, [r0, #OS_SDRAM] /* read the SDRAM register */
- and r1, r1, #0x20 /* mask SPD bit (5) */
- cmp r1, #0x20 /* test if set */
- bne readspdbit
-
-setupsdram:
- add r0, r0, #OS_SPD /* address the copy of the SDP data */
- ldrb r1, [r0, #3] /* number of row address lines */
- ldrb r2, [r0, #4] /* number of column address lines */
- ldrb r3, [r0, #5] /* number of banks */
- ldrb r4, [r0, #31] /* module bank density */
- mul r5, r4, r3 /* size of SDRAM (MB divided by 4) */
- mov r5, r5, ASL#2 /* size in MB */
- mov r0, #CM_BASE /* reload for later code */
- cmp r5, #0x10 /* is it 16MB? */
- bne not16
- mov r6, #0x2 /* store size and CAS latency of 2 */
- b writesize
-
-not16:
- cmp r5, #0x20 /* is it 32MB? */
- bne not32
- mov r6, #0x6
- b writesize
-
-not32:
- cmp r5, #0x40 /* is it 64MB? */
- bne not64
- mov r6, #0xa
- b writesize
-
-not64:
- cmp r5, #0x80 /* is it 128MB? */
- bne not128
- mov r6, #0xe
- b writesize
-
-not128:
- /* if it is none of these sizes then it is either 256MB, or
- * there is no SDRAM fitted so default to 256MB
- */
- mov r6, #0x12
-
-writesize:
- mov r1, r1, ASL#8 /* row addr lines from SDRAM reg */
- orr r2, r1, r2, ASL#12 /* OR in column address lines */
- orr r3, r2, r3, ASL#16 /* OR in number of banks */
- orr r6, r6, r3 /* OR in size and CAS latency */
- str r6, [r0, #OS_SDRAM] /* store SDRAM parameters */
-
-#endif /* #ifdef CONFIG_CM_SPD_DETECT */
-
- ldmfd r13!,{r4-r6,pc} /* back to caller */
-
-#ifdef CONFIG_CM_REMAP
- /* CM remap bit is operational
- * - use it to map writeable memory at 0x00000000, in place of flash
- */
-.globl cm_remap
-cm_remap:
- stmfd r13!,{r4-r10,lr}
-
- mov r0, #CM_BASE
- ldr r1, [r0, #OS_CTRL]
- orr r1, r1, #CMMASK_REMAP /* set remap and led bits */
- str r1, [r0, #OS_CTRL]
-
- /* Now 0x00000000 is writeable, replace the vectors */
- ldr r0, =_start /* r0 <- start of vectors */
- ldr r2, =_armboot_start /* r2 <- past vectors */
- sub r1,r1,r1 /* destination 0x00000000 */
-
-copy_vec:
- ldmia r0!, {r3-r10} /* copy from source address [r0] */
- stmia r1!, {r3-r10} /* copy to target address [r1] */
- cmp r0, r2 /* until source end address [r2] */
- ble copy_vec
-
- ldmfd r13!,{r4-r10,pc} /* back to caller */
-
-#endif /* #ifdef CONFIG_CM_REMAP */
diff --git a/board/integratorap/memsetup.S b/board/integratorap/memsetup.S
deleted file mode 100644
index dfdc7848fd..0000000000
--- a/board/integratorap/memsetup.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Memory setup for integratorAP
- *
- * 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
- */
-/*
- * Memory setup
- * - the reset defaults are assumed sufficient
- */
-
-.globl memsetup
-memsetup:
- mov pc,lr
diff --git a/board/integratorap/split_by_variant.sh b/board/integratorap/split_by_variant.sh
deleted file mode 100755
index 53b0d1e340..0000000000
--- a/board/integratorap/split_by_variant.sh
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/bin/sh
-# ---------------------------------------------------------
-# Set the platform defines
-# ---------------------------------------------------------
-echo -n "/* Integrator configuration implied " > tmp.fil
-echo " by Makefile target */" >> tmp.fil
-echo -n "#define CONFIG_INTEGRATOR" >> tmp.fil
-echo " /* Integrator board */" >> tmp.fil
-echo -n "#define CONFIG_ARCH_INTEGRATOR" >> tmp.fil
-echo " 1 /* Integrator/AP */" >> tmp.fil
-# ---------------------------------------------------------
-# Set the core module defines according to Core Module
-# ---------------------------------------------------------
-cpu="arm_intcm"
-variant="unknown core module"
-
-if [ "$1" == "" ]
-then
- echo "$0:: No parameters - using arm_intcm"
-else
- case "$1" in
- ap7_config)
- cpu="arm_intcm"
- variant="unported core module CM7TDMI"
- ;;
-
- ap966)
- cpu="arm_intcm"
- variant="unported core module CM966E-S"
- ;;
-
- ap922_config)
- cpu="arm_intcm"
- variant="unported core module CM922T"
- ;;
-
- integratorap_config | \
- ap_config)
- cpu="arm_intcm"
- variant="unspecified core module"
- ;;
-
- ap720t_config)
- cpu="arm720t"
- echo -n "#define CONFIG_CM720T" >> tmp.fil
- echo " 1 /* CPU core is ARM720T */ " >> tmp.fil
- variant="Core module CM720T"
- ;;
-
- ap922_XA10_config)
- cpu="arm_intcm"
- variant="unported core module CM922T_XA10"
- echo -n "#define CONFIG_CM922T_XA10" >> tmp.fil
- echo " 1 /* CPU core is ARM922T_XA10 */" >> tmp.fil
- ;;
-
- ap920t_config)
- cpu="arm920t"
- variant="Core module CM920T"
- echo -n "#define CONFIG_CM920T" >> tmp.fil
- echo " 1 /* CPU core is ARM920T */" >> tmp.fil
- ;;
-
- ap926ejs_config)
- cpu="arm926ejs"
- variant="Core module CM926EJ-S"
- echo -n "#define CONFIG_CM926EJ_S" >> tmp.fil
- echo " 1 /* CPU core is ARM926EJ-S */ " >> tmp.fil
- ;;
-
- ap946es_config)
- cpu="arm946es"
- variant="Core module CM946E-S"
- echo -n "#define CONFIG_CM946E_S" >> tmp.fil
- echo " 1 /* CPU core is ARM946E-S */ " >> tmp.fil
- ;;
-
- *)
- echo "$0:: Unknown core module"
- variant="unknown core module"
- cpu="arm_intcm"
- ;;
-
- esac
-fi
-
-if [ "$cpu" == "arm_intcm" ]
-then
- echo "/* Core module undefined/not ported */" >> tmp.fil
- echo "#define CONFIG_ARM_INTCM 1" >> tmp.fil
- echo -n "#undef CONFIG_CM_MULTIPLE_SSRAM" >> tmp.fil
- echo -n " /* CM may not have " >> tmp.fil
- echo "multiple SSRAM mapping */" >> tmp.fil
- echo -n "#undef CONFIG_CM_SPD_DETECT " >> tmp.fil
- echo -n " /* CM may not support SPD " >> tmp.fil
- echo "query */" >> tmp.fil
- echo -n "#undef CONFIG_CM_REMAP " >> tmp.fil
- echo -n " /* CM may not support " >> tmp.fil
- echo "remapping */" >> tmp.fil
- echo -n "#undef CONFIG_CM_INIT " >> tmp.fil
- echo -n " /* CM may not have " >> tmp.fil
- echo "initialization reg */" >> tmp.fil
- echo -n "#undef CONFIG_CM_TCRAM " >> tmp.fil
- echo " /* CM may not have TCRAM */" >> tmp.fil
-fi
-
-mkdir -p ${obj}include
-mkdir -p ${obj}board/integratorap
-mv tmp.fil ${obj}include/config.h
-# ---------------------------------------------------------
-# Ensure correct core object loaded first in U-Boot image
-# ---------------------------------------------------------
-sed -r 's/CPU_FILE/cpu\/'$cpu'\/start.o/; s/#.*//' ${src}board/integratorap/u-boot.lds.template > ${obj}board/integratorap/u-boot.lds
-# ---------------------------------------------------------
-# Complete the configuration
-# ---------------------------------------------------------
-$MKCONFIG -a integratorap arm $cpu integratorap;
-echo "Variant:: $variant with core $cpu"
-
diff --git a/board/integratorap/u-boot.lds.template b/board/integratorap/u-boot.lds.template
deleted file mode 100644
index 0ec8087258..0000000000
--- a/board/integratorap/u-boot.lds.template
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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
- */
-# Template used during configuration to emsure the core module processor code,
-# from CPU_FILE, is placed at the start of the image */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
- . = ALIGN(4);
- .text :
- {
- CPU_FILE (.text)
- *(.text)
- }
- .rodata : { *(.rodata) }
- . = ALIGN(4);
- .data : { *(.data) }
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/integratorcp/Makefile b/board/integratorcp/Makefile
deleted file mode 100644
index e15ef73e2f..0000000000
--- a/board/integratorcp/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := integratorcp.o flash.o
-SOBJS := lowlevel_init.o memsetup.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/integratorcp/config.mk b/board/integratorcp/config.mk
deleted file mode 100644
index e4c5c3b57a..0000000000
--- a/board/integratorcp/config.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# image should be loaded at 0x01000000
-#
-
-TEXT_BASE = 0x01000000
-
-ifneq ($(OBJTREE),$(SRCTREE))
-# We are building u-boot in a separate directory, use generated
-# .lds script from OBJTREE directory.
-LDSCRIPT := $(OBJTREE)/board/$(BOARDDIR)/u-boot.lds
-endif
diff --git a/board/integratorcp/flash.c b/board/integratorcp/flash.c
deleted file mode 100644
index 4d6eff0bf1..0000000000
--- a/board/integratorcp/flash.c
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
- * (C) Copyright 2004
- * Xiaogeng (Shawn) Jin, Agilent Technologies, xiaogeng_jin@agilent.com
- *
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.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
- */
-
-#include <common.h>
-#include <linux/byteorder/swab.h>
-
-#define DEBUG
-
-#define PHYS_FLASH_SECT_SIZE 0x00040000 /* 256 KB sectors (x2) */
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-
-/* Flash Organization Structure */
-typedef struct OrgDef {
- unsigned int sector_number;
- unsigned int sector_size;
-} OrgDef;
-
-
-/* Flash Organizations */
-OrgDef OrgIntel_28F256L18T[] = {
- {4, 32 * 1024}, /* 4 * 32kBytes sectors */
- {255, 128 * 1024}, /* 255 * 128kBytes sectors */
-};
-
-/* CP control register base address */
-#define CPCR_BASE 0xCB000000
-#define CPCR_EXTRABANK 0x8
-#define CPCR_FLASHSIZE 0x4
-#define CPCR_FLWREN 0x2
-#define CPCR_FLVPPEN 0x1
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-unsigned long flash_init (void);
-static ulong flash_get_size (FPW * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-void inline spin_wheel (void);
-void flash_print_info (flash_info_t * info);
-void flash_unprotect_sectors (FPWV * addr);
-int flash_erase (flash_info_t * info, int s_first, int s_last);
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt);
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- int i, nbanks;
- ulong size = 0;
- vu_long *cpcr = (vu_long *)CPCR_BASE;
-
- /* Check if there is an extra bank of flash */
- if (cpcr[1] & CPCR_EXTRABANK)
- nbanks = 2;
- else
- nbanks = 1;
-
- if (nbanks > CFG_MAX_FLASH_BANKS)
- nbanks = CFG_MAX_FLASH_BANKS;
-
- /* Enable flash write */
- cpcr[1] |= 3;
-
- for (i = 0; i < nbanks; i++) {
- flash_get_size ((FPW *)(CFG_FLASH_BASE + size), &flash_info[i]);
- flash_get_offsets (CFG_FLASH_BASE + size, &flash_info[i]);
- size += flash_info[i].size;
- }
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection */
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[0]);
-#endif
-
- /* Protect SIB (0x24800000) and bootMonitor (0x24c00000) */
- flash_protect (FLAG_PROTECT_SET,
- flash_info[0].start[62],
- flash_info[0].start[63] + PHYS_FLASH_SECT_SIZE - 1,
- &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- /* Integrator CP board uses 28F640J3C or 28F128J3C parts,
- * which have the same device id numbers as 28F640J3A or
- * 28F128J3A
- */
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F256L18T:
- printf ("FLASH 28F256L18T\n");
- break;
- case FLASH_28F640J3A:
- printf ("FLASH 28F640J3C\n");
- break;
- case FLASH_28F128J3A:
- printf ("FLASH 28F128J3C\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
-{
- volatile FPW value;
- vu_long *cpcr = (vu_long *)CPCR_BASE;
- int nsects;
-
- /* Check the flash size */
- if (cpcr[1] & CPCR_FLASHSIZE)
- nsects = 128;
- else
- nsects = 64;
-
- if (nsects > CFG_MAX_FLASH_SECT)
- nsects = CFG_MAX_FLASH_SECT;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
- switch (value) {
-
- case (FPW) (INTEL_ID_28F256L18T):
- info->flash_id += FLASH_28F256L18T;
- info->sector_count = 259;
- info->size = 0x02000000;
- break; /* => 32 MB */
-
- case (FPW) (INTEL_ID_28F640J3A):
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = nsects;
- info->size = nsects * PHYS_FLASH_SECT_SIZE;
- break;
-
- case (FPW) (INTEL_ID_28F128J3A):
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = nsects;
- info->size = nsects * PHYS_FLASH_SECT_SIZE;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/* unprotects a sector for write and erase
- * on some intel parts, this unprotects the entire chip, but it
- * wont hurt to call this additional times per sector...
- */
-void flash_unprotect_sectors (FPWV * addr)
-{
- FPW status;
-
- *addr = (FPW) 0x00500050; /* clear status register */
-
- /* this sends the clear lock bit command */
- *addr = (FPW) 0x00600060;
- *addr = (FPW) 0x00D000D0;
-
- reset_timer_masked();
- while (((status = *addr) & (FPW)0x00800080) != 0x00800080) {
- if (get_timer_masked() > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout");
- break;
- }
- }
-
- *addr = (FPW) 0x00FF00FF;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* flash_unprotect_sectors (addr); */
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
- mb();
-
- udelay(1000); /* Let's wait 1 ms */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- *addr = (FPW)0x00700070;
- status = *addr;
- if ((status & (FPW) 0x00400040) == (FPW) 0x00400040) {
- /* erase suspended? Resume it */
- reset_timer_masked();
- *addr = (FPW) 0x00D000D0;
- } else {
-#ifdef DEBUG
- printf ("Timeout,0x%08x\n", status);
-#else
- printf("Timeout\n");
-#endif
-
- *addr = (FPW) 0x00500050;
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* resest to read mode */
- printf (" done\n");
- }
- }
-
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* flash_unprotect_sectors (addr); */
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- mb();
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
-#ifdef DEBUG
- *addr = (FPW) 0x00700070;
- status = *addr;
- printf("## status=0x%08x, addr=0x%08x\n", status, addr);
-#endif
- *addr = (FPW) 0x00500050; /* clear status register cmd */
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/integratorcp/integratorcp.c b/board/integratorcp/integratorcp.c
deleted file mode 100644
index d6d6e13d5a..0000000000
--- a/board/integratorcp/integratorcp.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.com>
- *
- * (C) Copyright 2004
- * ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.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
- */
-
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-void flash__init (void);
-void ether__init (void);
-void peripheral_power_enable (void);
-
-#if defined(CONFIG_SHOW_BOOT_PROGRESS)
-void show_boot_progress(int progress)
-{
- printf("Boot reached stage %d\n", progress);
-}
-#endif
-
-#define COMP_MODE_ENABLE ((unsigned int)0x0000EAEF)
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* arch number of Integrator Board */
- gd->bd->bi_arch_number = MACH_TYPE_CINTEGRATOR;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x00000100;
-
- gd->flags = 0;
-
-#ifdef CONFIG_CM_REMAP
-extern void cm_remap(void);
- cm_remap(); /* remaps writeable memory to 0x00000000 */
-#endif
-
- icache_enable ();
-
- flash__init ();
- ether__init ();
- return 0;
-}
-
-
-int misc_init_r (void)
-{
- setenv("verify", "n");
- return (0);
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-void flash__init (void)
-{
-}
-/*************************************************************
- Routine:ether__init
- Description: take the Ethernet controller out of reset and wait
- for the EEPROM load to complete.
-*************************************************************/
-void ether__init (void)
-{
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
-#ifdef CONFIG_CM_SPD_DETECT
- {
-extern void dram_query(void);
- unsigned long cm_reg_sdram;
- unsigned long sdram_shift;
-
- dram_query(); /* Assembler accesses to CM registers */
- /* Queries the SPD values */
-
- /* Obtain the SDRAM size from the CM SDRAM register */
-
- cm_reg_sdram = *(volatile ulong *)(CM_BASE + OS_SDRAM);
- /* Register SDRAM size
- *
- * 0xXXXXXXbbb000bb 16 MB
- * 0xXXXXXXbbb001bb 32 MB
- * 0xXXXXXXbbb010bb 64 MB
- * 0xXXXXXXbbb011bb 128 MB
- * 0xXXXXXXbbb100bb 256 MB
- *
- */
- sdram_shift = ((cm_reg_sdram & 0x0000001C)/4)%4;
- gd->bd->bi_dram[0].size = 0x01000000 << sdram_shift;
-
- }
-#endif /* CM_SPD_DETECT */
-
- return 0;
-}
-
-/* The Integrator/CP timer1 is clocked at 1MHz
- * can be divided by 16 or 256
- * and can be set up as a 32-bit timer
- */
-/* U-Boot expects a 32 bit timer, running at CFG_HZ */
-/* Keep total timer count to avoid losing decrements < div_timer */
-static unsigned long long total_count = 0;
-static unsigned long long lastdec; /* Timer reading at last call */
-static unsigned long long div_clock = 1; /* Divisor applied to timer clock */
-static unsigned long long div_timer = 1; /* Divisor to convert timer reading
- * change to U-Boot ticks
- */
-/* CFG_HZ = CFG_HZ_CLOCK/(div_clock * div_timer) */
-static ulong timestamp; /* U-Boot ticks since startup */
-
-#define TIMER_LOAD_VAL ((ulong)0xFFFFFFFF)
-#define READ_TIMER (*(volatile ulong *)(CFG_TIMERBASE+4))
-
-/* all function return values in U-Boot ticks i.e. (1/CFG_HZ) sec
- * - unless otherwise stated
- */
-
-/* starts up a counter
- * - the Integrator/CP timer can be set up to issue an interrupt */
-int interrupt_init (void)
-{
- /* Load timer with initial value */
- *(volatile ulong *)(CFG_TIMERBASE + 0) = TIMER_LOAD_VAL;
- /* Set timer to be
- * enabled 1
- * periodic 1
- * no interrupts 0
- * X 0
- * divider 1 00 == less rounding error
- * 32 bit 1
- * wrapping 0
- */
- *(volatile ulong *)(CFG_TIMERBASE + 8) = 0x000000C2;
- /* init the timestamp */
- total_count = 0ULL;
- reset_timer_masked();
-
- div_timer = (unsigned long long)(CFG_HZ_CLOCK / CFG_HZ);
- div_timer /= div_clock;
-
- return (0);
-}
-
-/*
- * timer without interrupts
- */
-void reset_timer (void)
-{
- reset_timer_masked ();
-}
-
-ulong get_timer (ulong base_ticks)
-{
- return get_timer_masked () - base_ticks;
-}
-
-void set_timer (ulong ticks)
-{
- timestamp = ticks;
- total_count = (unsigned long long)ticks * div_timer;
-}
-
-/* delay usec useconds */
-void udelay (unsigned long usec)
-{
- ulong tmo, tmp;
-
- /* Convert to U-Boot ticks */
- tmo = usec * CFG_HZ;
- tmo /= (1000000L);
-
- tmp = get_timer_masked(); /* get current timestamp */
- tmo += tmp; /* form target timestamp */
-
- while (get_timer_masked () < tmo) {/* loop till event */
- /*NOP*/;
- }
-}
-
-void reset_timer_masked (void)
-{
- /* capure current decrementer value */
- lastdec = (unsigned long long)READ_TIMER;
- /* start "advancing" time stamp from 0 */
- timestamp = 0L;
-}
-
-/* converts the timer reading to U-Boot ticks */
-/* the timestamp is the number of ticks since reset */
-ulong get_timer_masked (void)
-{
- /* get current count */
- unsigned long long now = (unsigned long long)READ_TIMER;
-
- if(now > lastdec) {
- /* Must have wrapped */
- total_count += lastdec + TIMER_LOAD_VAL + 1 - now;
- } else {
- total_count += lastdec - now;
- }
- lastdec = now;
- timestamp = (ulong)(total_count/div_timer);
-
- return timestamp;
-}
-
-/* waits specified delay value and resets timestamp */
-void udelay_masked (unsigned long usec)
-{
- udelay(usec);
-}
-
-/*
- * This function is derived from PowerPC code (read timebase as long long).
- * On ARM it just returns the timer value.
- */
-unsigned long long get_ticks(void)
-{
- return (unsigned long long)get_timer(0);
-}
-
-/*
- * Return the timebase clock frequency
- * i.e. how often the timer decrements
- */
-ulong get_tbclk (void)
-{
- return (ulong)(((unsigned long long)CFG_HZ_CLOCK)/div_clock);
-}
diff --git a/board/integratorcp/lowlevel_init.S b/board/integratorcp/lowlevel_init.S
deleted file mode 100644
index 18f7d2eaeb..0000000000
--- a/board/integratorcp/lowlevel_init.S
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Board specific setup info
- *
- * (C) Copyright 2003, ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.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
- */
-
-#include <config.h>
-#include <version.h>
-
-/* Reset using CM control register */
-.global reset_cpu
-reset_cpu:
- mov r0, #CM_BASE
- ldr r1,[r0,#OS_CTRL]
- orr r1,r1,#CMMASK_RESET
- str r1,[r0,#OS_CTRL]
-
-reset_failed:
- b reset_failed
-
-/* Set up the platform, once the cpu has been initialized */
-.globl lowlevel_init
-lowlevel_init:
- /* If U-Boot has been run after the ARM boot monitor
- * then all the necessary actions have been done
- * otherwise we are running from user flash mapped to 0x00000000
- * --- DO NOT REMAP BEFORE THE CODE HAS BEEN RELOCATED --
- * Changes to the (possibly soft) reset defaults of the processor
- * itself should be performed in cpu/arm<>/start.S
- * This function affects only the core module or board settings
- */
-
-#ifdef CONFIG_CM_INIT
- /* CM has an initialization register
- * - bits in it are wired into test-chip pins to force
- * reset defaults
- * - may need to change its contents for U-Boot
- */
-
- /* set the desired CM specific value */
- mov r2,#CMMASK_LOWVEC /* Vectors at 0x00000000 for all */
-
-#if defined (CONFIG_CM10200E) || defined (CONFIG_CM10220E)
- orr r2,r2,#CMMASK_INIT_102
-#else
-
-#if !defined (CONFIG_CM920T) && !defined (CONFIG_CM920T_ETM) && \
- !defined (CONFIG_CM940T)
- /* CMxx6 code */
-
-#ifdef CONFIG_CM_MULTIPLE_SSRAM
- /* set simple mapping */
- and r2,r2,#CMMASK_MAP_SIMPLE
-#endif /* #ifdef CONFIG_CM_MULTIPLE_SSRAM */
-
-#ifdef CONFIG_CM_TCRAM
- /* disable TCRAM */
- and r2,r2,#CMMASK_TCRAM_DISABLE
-#endif /* #ifdef CONFIG_CM_TCRAM */
-
-#if defined (CONFIG_CM926EJ_S) || defined (CONFIG_CM1026EJ_S) || \
- defined (CONFIG_CM1136JF_S)
-
- and r2,r2,#CMMASK_LE
-
-#endif /* cpu with little endian initialization */
-
- orr r2,r2,#CMMASK_CMxx6_COMMON
-
-#endif /* CMxx6 code */
-
-#endif /* ARM102xxE value */
-
- /* read CM_INIT */
- mov r0, #CM_BASE
- ldr r1, [r0, #OS_INIT]
- /* check against desired bit setting */
- and r3,r1,r2
- cmp r3,r2
- beq init_reg_OK
-
- /* lock for change */
- mov r3, #CMVAL_LOCK1
- and r3, r3, #CMVAL_LOCK2
- str r3, [r0, #OS_LOCK]
- /* set desired value */
- orr r1,r1,r2
- /* write & relock CM_INIT */
- str r1, [r0, #OS_INIT]
- mov r1, #CMVAL_UNLOCK
- str r1, [r0, #OS_LOCK]
-
- /* soft reset so new values used */
- b reset_cpu
-
-init_reg_OK:
-
-#endif /* CONFIG_CM_INIT */
-
- mov pc, lr
-
-#ifdef CONFIG_CM_SPD_DETECT
- /* Fast memory is available for the DRAM data
- * - ensure it has been transferred, then summarize the data
- * into a CM register
- */
-.globl dram_query
-dram_query:
- stmfd r13!,{r4-r6,lr}
- /* set up SDRAM info */
- /* - based on example code from the CM User Guide */
- mov r0, #CM_BASE
-
-readspdbit:
- ldr r1, [r0, #OS_SDRAM] /* read the SDRAM register */
- and r1, r1, #0x20 /* mask SPD bit (5) */
- cmp r1, #0x20 /* test if set */
- bne readspdbit
-
-setupsdram:
- add r0, r0, #OS_SPD /* address the copy of the SDP data */
- ldrb r1, [r0, #3] /* number of row address lines */
- ldrb r2, [r0, #4] /* number of column address lines */
- ldrb r3, [r0, #5] /* number of banks */
- ldrb r4, [r0, #31] /* module bank density */
- mul r5, r4, r3 /* size of SDRAM (MB divided by 4) */
- mov r5, r5, ASL#2 /* size in MB */
- mov r0, #CM_BASE /* reload for later code */
- cmp r5, #0x10 /* is it 16MB? */
- bne not16
- mov r6, #0x2 /* store size and CAS latency of 2 */
- b writesize
-
-not16:
- cmp r5, #0x20 /* is it 32MB? */
- bne not32
- mov r6, #0x6
- b writesize
-
-not32:
- cmp r5, #0x40 /* is it 64MB? */
- bne not64
- mov r6, #0xa
- b writesize
-
-not64:
- cmp r5, #0x80 /* is it 128MB? */
- bne not128
- mov r6, #0xe
- b writesize
-
-not128:
- /* if it is none of these sizes then it is either 256MB, or
- * there is no SDRAM fitted so default to 256MB
- */
- mov r6, #0x12
-
-writesize:
- mov r1, r1, ASL#8 /* row addr lines from SDRAM reg */
- orr r2, r1, r2, ASL#12 /* OR in column address lines */
- orr r3, r2, r3, ASL#16 /* OR in number of banks */
- orr r6, r6, r3 /* OR in size and CAS latency */
- str r6, [r0, #OS_SDRAM] /* store SDRAM parameters */
-
-#endif /* #ifdef CONFIG_CM_SPD_DETECT */
-
- ldmfd r13!,{r4-r6,pc} /* back to caller */
-
-#ifdef CONFIG_CM_REMAP
- /* CM remap bit is operational
- * - use it to map writeable memory at 0x00000000, in place of flash
- */
-.globl cm_remap
-cm_remap:
- stmfd r13!,{r4-r10,lr}
-
- mov r0, #CM_BASE
- ldr r1, [r0, #OS_CTRL]
- orr r1, r1, #CMMASK_REMAP /* set remap and led bits */
- str r1, [r0, #OS_CTRL]
-
- /* Now 0x00000000 is writeable, replace the vectors */
- ldr r0, =_start /* r0 <- start of vectors */
- ldr r2, =_armboot_start /* r2 <- past vectors */
- sub r1,r1,r1 /* destination 0x00000000 */
-
-copy_vec:
- ldmia r0!, {r3-r10} /* copy from source address [r0] */
- stmia r1!, {r3-r10} /* copy to target address [r1] */
- cmp r0, r2 /* until source end address [r2] */
- ble copy_vec
-
- ldmfd r13!,{r4-r10,pc} /* back to caller */
-
-#endif /* #ifdef CONFIG_CM_REMAP */
diff --git a/board/integratorcp/memsetup.S b/board/integratorcp/memsetup.S
deleted file mode 100644
index dfdc7848fd..0000000000
--- a/board/integratorcp/memsetup.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Memory setup for integratorAP
- *
- * 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
- */
-/*
- * Memory setup
- * - the reset defaults are assumed sufficient
- */
-
-.globl memsetup
-memsetup:
- mov pc,lr
diff --git a/board/integratorcp/split_by_variant.sh b/board/integratorcp/split_by_variant.sh
deleted file mode 100755
index 37ae517fc0..0000000000
--- a/board/integratorcp/split_by_variant.sh
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/sh
-# ---------------------------------------------------------
-# Set the platform defines
-# ---------------------------------------------------------
-echo -n "/* Integrator configuration implied " > tmp.fil
-echo " by Makefile target */" >> tmp.fil
-echo -n "#define CONFIG_INTEGRATOR" >> tmp.fil
-echo " /* Integrator board */" >> tmp.fil
-echo -n "#define CONFIG_ARCH_CINTEGRATOR" >> tmp.fil
-echo " 1 /* Integrator/CP */" >> tmp.fil
-
-cpu="arm_intcm"
-variant="unknown core module"
-
-if [ "$1" == "" ]
-then
- echo "$0:: No parameters - using arm_intcm"
-else
- case "$1" in
- ap966)
- cpu="arm_intcm"
- variant="unported core module CM966E-S"
- ;;
-
- ap922_config)
- cpu="arm_intcm"
- variant="unported core module CM922T"
- ;;
-
- integratorcp_config | \
- cp_config)
- cpu="arm_intcm"
- variant="unspecified core module"
- ;;
-
- cp922_XA10_config)
- cpu="arm_intcm"
- variant="unported core module CM922T_XA10"
- echo -n "#define CONFIG_CM922T_XA10" >> tmp.fil
- echo " 1 /* CPU core is ARM922T_XA10 */" >> tmp.fil
- ;;
-
- cp920t_config)
- cpu="arm920t"
- variant="Core module CM920T"
- echo -n "#define CONFIG_CM920T" >> tmp.fil
- echo " 1 /* CPU core is ARM920T */" >> tmp.fil
- ;;
-
- cp926ejs_config)
- cpu="arm926ejs"
- variant="Core module CM926EJ-S"
- echo -n "#define CONFIG_CM926EJ_S" >> tmp.fil
- echo " 1 /* CPU core is ARM926EJ-S */ " >> tmp.fil
- ;;
-
-
- cp946es_config)
- cpu="arm946es"
- variant="Core module CM946E-S"
- echo -n "#define CONFIG_CM946E_S" >> tmp.fil
- echo " 1 /* CPU core is ARM946E-S */ " >> tmp.fil
- ;;
-
- cp1136_config)
- cpu="arm1136"
- variant="Core module CM1136EJF-S"
- echo -n "#define CONFIG_CM1136EJF_S" >> tmp.fil
- echo " 1 /* CPU core is ARM1136JF-S */ " >> tmp.fil
- ;;
-
- *)
- echo "$0:: Unknown core module"
- variant="unknown core module"
- cpu="arm_intcm"
- ;;
-
- esac
-
-fi
-
-if [ "$cpu" == "arm_intcm" ]
-then
- echo "/* Core module undefined/not ported */" >> tmp.fil
- echo "#define CONFIG_ARM_INTCM 1" >> tmp.fil
- echo -n "#undef CONFIG_CM_MULTIPLE_SSRAM" >> tmp.fil
- echo -n " /* CM may not have " >> tmp.fil
- echo "multiple SSRAM mapping */" >> tmp.fil
- echo -n "#undef CONFIG_CM_SPD_DETECT " >> tmp.fil
- echo -n " /* CM may not support SPD " >> tmp.fil
- echo "query */" >> tmp.fil
- echo -n "#undef CONFIG_CM_REMAP " >> tmp.fil
- echo -n " /* CM may not support " >> tmp.fil
- echo "remapping */" >> tmp.fil
- echo -n "#undef CONFIG_CM_INIT " >> tmp.fil
- echo -n " /* CM may not have " >> tmp.fil
- echo "initialization reg */" >> tmp.fil
- echo -n "#undef CONFIG_CM_TCRAM " >> tmp.fil
- echo " /* CM may not have TCRAM */" >> tmp.fil
-fi
-
-mkdir -p ${obj}include
-mkdir -p ${obj}board/integratorcp
-mv tmp.fil ${obj}include/config.h
-# ---------------------------------------------------------
-# Ensure correct core object loaded first in U-Boot image
-# ---------------------------------------------------------
-sed -r 's/CPU_FILE/cpu\/'$cpu'\/start.o/; s/#.*//' ${src}board/integratorcp/u-boot.lds.template > ${obj}board/integratorcp/u-boot.lds
-# ---------------------------------------------------------
-# Complete the configuration
-# ---------------------------------------------------------
-$MKCONFIG -a integratorcp arm $cpu integratorcp;
-echo "Variant:: $variant with core $cpu"
-
diff --git a/board/integratorcp/u-boot.lds.template b/board/integratorcp/u-boot.lds.template
deleted file mode 100644
index 0ec8087258..0000000000
--- a/board/integratorcp/u-boot.lds.template
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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
- */
-# Template used during configuration to emsure the core module processor code,
-# from CPU_FILE, is placed at the start of the image */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
- . = ALIGN(4);
- .text :
- {
- CPU_FILE (.text)
- *(.text)
- }
- .rodata : { *(.rodata) }
- . = ALIGN(4);
- .data : { *(.data) }
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/ip860/Makefile b/board/ip860/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/ip860/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ip860/config.mk b/board/ip860/config.mk
deleted file mode 100644
index ea3b8735ef..0000000000
--- a/board/ip860/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# MicroSys IP860 VMEBus Systems
-#
-
-TEXT_BASE = 0x10000000
diff --git a/board/ip860/flash.c b/board/ip860/flash.c
deleted file mode 100644
index 2cf23b3e8c..0000000000
--- a/board/ip860/flash.c
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- volatile ip860_bcsr_t *bcsr = (ip860_bcsr_t *)BCSR_BASE;
- unsigned long size;
- int i;
-
- /* Init: enable write,
- * or we cannot even write flash commands
- */
- bcsr->bd_ctrl |= BD_CTRL_FLWE;
-
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size = flash_get_size((vu_long *)FLASH_BASE, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size<<20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (-size & 0xFFFF8000);
- memctl->memc_br1 = (CFG_FLASH_BASE & BR_BA_MSK) |
- (memctl->memc_br1 & ~(BR_BA_MSK));
-
- /* Re-do sizing to get full correct info */
- size = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* all possible flash types
- * (28F016SV, 28F160S3, 28F320S3)
- * have the same erase block size: 64 kB per chip,
- * of 128 kB per bank
- */
-
- /* set up sector start address table */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- base += 0x00020000;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL: printf ("Intel "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F016SV: printf ("28F016SV (16 Mbit, 32 x 64k)\n");
- break;
- case FLASH_28F160S3: printf ("28F160S3 (16 Mbit, 32 x 512K)\n");
- break;
- case FLASH_28F320S3: printf ("28F320S3 (32 Mbit, 64 x 512K)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write "Intelligent Identifier" command: read Manufacturer ID */
- *addr = 0x90909090;
-
- value = addr[0];
- switch (value) {
- case (MT_MANUFACT & 0x00FF00FF): /* MT or => Intel */
- case (INTEL_ALT_MANU & 0x00FF00FF):
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
- case (INTEL_ID_28F016S):
- info->flash_id += FLASH_28F016SV;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 2x2 MB */
-
- case (INTEL_ID_28F160S3):
- info->flash_id += FLASH_28F160S3;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 2x2 MB */
-
- case (INTEL_ID_28F320S3):
- info->flash_id += FLASH_28F320S3;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 2x4 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000);
- /* don't know how to check sector protection */
- info->protect[i] = 0;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (vu_long *)info->start[0];
-
- *addr = 0xFFFFFF; /* reset bank to read array mode */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *)(info->start[sect]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Single Block Erase Command */
- *addr = 0x20202020;
- /* Confirm */
- *addr = 0xD0D0D0D0;
- /* Resume Command, as per errata update */
- *addr = 0xD0D0D0D0;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while ((*addr & 0x00800080) != 0x00800080) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = 0xFFFFFFFF; /* reset bank */
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- /* reset to read mode */
- *addr = 0xFFFFFFFF;
- }
- }
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)dest;
- ulong start, csr;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Write Command */
- *addr = 0x10101010;
-
- /* Write Data */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- flag = 0;
- while (((csr = *addr) & 0x00800080) != 0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- flag = 1;
- break;
- }
- }
- if (csr & 0x00400040) {
-printf ("CSR indicates write error (%08lx) at %08lx\n", csr, (ulong)addr);
- flag = 1;
- }
-
- /* Clear Status Registers Command */
- *addr = 0x50505050;
- /* Reset to read array mode */
- *addr = 0xFFFFFFFF;
-
- return (flag);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/ip860/ip860.c b/board/ip860/ip860.c
deleted file mode 100644
index 9dd809b678..0000000000
--- a/board/ip860/ip860.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- * (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 <common.h>
-#include <commproc.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-unsigned long ip860_get_dram_size(void);
-unsigned long ip860_get_clk_freq (void);
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] = {
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00,
- 0x1ff77c47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1ff77c34, 0xefeabc34, 0x1fb57c35, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
- 0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1f07fc04, 0xeeaebc00, 0x10ad7c00, 0xf0affc00,
- 0xf0affc00, 0xe1bbbc04, 0x1ff77c47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc84, 0xfffffc07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x7ffffc07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-
-/* ------------------------------------------------------------------------- */
-int board_early_init_f(void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-/* init BCSR chipselect line for ip860_get_clk_freq() and ip860_get_dram_size() */
- memctl->memc_or4 = CFG_OR4;
- memctl->memc_br4 = CFG_BR4;
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- *
- * Test ID string (IP860...)
- */
-
-int checkboard (void)
-{
- unsigned char *s, *e;
- unsigned char buf[64];
- int i;
-
- puts ("Board: ");
-
- i = getenv_r ("serial#", (char *)buf, sizeof (buf));
- s = (i > 0) ? buf : NULL;
-
- if (!s || strncmp ((char *)s, "IP860", 5)) {
- puts ("### No HW ID - assuming IP860");
- } else {
- for (e = s; *e; ++e) {
- if (*e == ' ')
- break;
- }
-
- for (; s < e; ++s) {
- putc (*s);
- }
- }
-
- putc ('\n');
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size;
- ulong refresh_val;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Preliminary prescaler for refresh
- */
- if (ip860_get_clk_freq() == 50000000)
- {
- memctl->memc_mptpr = 0x0400;
- refresh_val = 0xC3000000;
- }
- else
- {
- memctl->memc_mptpr = 0x0200;
- refresh_val = 0x9C000000;
- }
-
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller banks 2 to the SDRAM address
- */
- memctl->memc_or2 = CFG_OR2;
- memctl->memc_br2 = CFG_BR2;
-
- /* IP860 boards have only one bank SDRAM */
-
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mamr = 0x00804114 | refresh_val;
- memctl->memc_mcr = 0x80004105; /* run precharge pattern from loc 5 */
- udelay(1);
- memctl->memc_mamr = 0x00804118 | refresh_val;
- memctl->memc_mcr = 0x80004130; /* run refresh pattern 8 times */
-
-
- udelay (1000);
-
- /*
- * Check SDRAM Memory Size
- */
- if (ip860_get_dram_size() == 16)
- size = dram_size (refresh_val | 0x00804114, SDRAM_BASE, SDRAM_MAX_SIZE);
- else
- size = dram_size (refresh_val | 0x00906114, SDRAM_BASE, SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- memctl->memc_or2 = ((-size) & 0xFFFF0000) | SDRAM_TIMING;
- memctl->memc_br2 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- udelay (10000);
-
- /*
- * Also, map other memory to correct position
- */
-
-#if (defined(CFG_OR1) && defined(CFG_BR1_PRELIM))
- memctl->memc_or1 = CFG_OR1;
- memctl->memc_br1 = CFG_BR1;
-#endif
-
-#if defined(CFG_OR3) && defined(CFG_BR3)
- memctl->memc_or3 = CFG_OR3;
- memctl->memc_br3 = CFG_BR3;
-#endif
-
-#if defined(CFG_OR4) && defined(CFG_BR4)
- memctl->memc_or4 = CFG_OR4;
- memctl->memc_br4 = CFG_BR4;
-#endif
-
-#if defined(CFG_OR5) && defined(CFG_BR5)
- memctl->memc_or5 = CFG_OR5;
- memctl->memc_br5 = CFG_BR5;
-#endif
-
-#if defined(CFG_OR6) && defined(CFG_BR6)
- memctl->memc_or6 = CFG_OR6;
- memctl->memc_br6 = CFG_BR6;
-#endif
-
-#if defined(CFG_OR7) && defined(CFG_BR7)
- memctl->memc_or7 = CFG_OR7;
- memctl->memc_br7 = CFG_BR7;
-#endif
-
- return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-void reset_phy (void)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- ulong mask = PB_ENET_RESET | PB_ENET_JABD;
- ulong reg;
-
- /* Make sure PHY is not in low-power mode */
- immr->im_cpm.cp_pbpar &= ~(mask); /* GPIO */
- immr->im_cpm.cp_pbodr &= ~(mask); /* active output */
-
- /* Set JABD low (no JABber Disable),
- * and RESET high (Reset PHY)
- */
- reg = immr->im_cpm.cp_pbdat;
- reg = (reg & ~PB_ENET_JABD) | PB_ENET_RESET;
- immr->im_cpm.cp_pbdat = reg;
-
- /* now drive outputs */
- immr->im_cpm.cp_pbdir |= mask; /* output */
- udelay (1000);
- /*
- * Release RESET signal
- */
- immr->im_cpm.cp_pbdat &= ~(PB_ENET_RESET);
- udelay (1000);
-}
-
-/* ------------------------------------------------------------------------- */
-
-unsigned long ip860_get_clk_freq(void)
-{
- volatile ip860_bcsr_t *bcsr = (ip860_bcsr_t *)BCSR_BASE;
- ulong temp;
- uchar sysclk;
-
- if ((bcsr->bd_status & 0x80) == 0x80) /* bd_rev valid ? */
- sysclk = (bcsr->bd_rev & 0x18) >> 3;
- else
- sysclk = 0x00;
-
- switch (sysclk)
- {
- case 0x00:
- temp = 50000000;
- break;
-
- case 0x01:
- temp = 80000000;
- break;
-
- default:
- temp = 50000000;
- break;
- }
-
- return (temp);
-
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-unsigned long ip860_get_dram_size(void)
-{
- volatile ip860_bcsr_t *bcsr = (ip860_bcsr_t *)BCSR_BASE;
- ulong temp;
- uchar dram_size;
-
- if ((bcsr->bd_status & 0x80) == 0x80) /* bd_rev valid ? */
- dram_size = (bcsr->bd_rev & 0xE0) >> 5;
- else
- dram_size = 0x00; /* default is 16 MB */
-
- switch (dram_size)
- {
- case 0x00:
- temp = 16;
- break;
-
- case 0x01:
- temp = 32;
- break;
-
- default:
- temp = 16;
- break;
- }
-
- return (temp);
-
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/ip860/u-boot.lds b/board/ip860/u-boot.lds
deleted file mode 100644
index 8cb2504435..0000000000
--- a/board/ip860/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- cpu/mpc8xx/interrupts.o (.text)
- lib_ppc/time.o (.text)
- lib_ppc/ticks.o (.text)
-/**
- . = env_offset;
- common/environment.o(.text)
-**/
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/ip860/u-boot.lds.debug b/board/ip860/u-boot.lds.debug
deleted file mode 100644
index 43d2b3bd60..0000000000
--- a/board/ip860/u-boot.lds.debug
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- lib_ppc/ppcstring.o (.text)
- cpu/mpc8xx/interrupts.o (.text)
- lib_ppc/time.o (.text)
- lib_ppc/ticks.o (.text)
-/**
- . = env_offset;
- common/environment.o(.text)
-**/
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/iphase4539/Makefile b/board/iphase4539/Makefile
deleted file mode 100644
index 3a28f5caf0..0000000000
--- a/board/iphase4539/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/iphase4539/config.mk b/board/iphase4539/config.mk
deleted file mode 100644
index 632c1d2ac6..0000000000
--- a/board/iphase4539/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (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
-#
-
-#
-# iphase4539 board
-#
-
-TEXT_BASE = 0xffb00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/iphase4539/flash.c b/board/iphase4539/flash.c
deleted file mode 100644
index 4eca46720c..0000000000
--- a/board/iphase4539/flash.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
- *
- * (C) Copyright 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Adapted for Interphase 4539 by 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 <config.h>
-#include <common.h>
-#include <flash.h>
-#include <asm/io.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-extern int hwc_flash_size(void);
-static ulong flash_get_size (u32 addr, flash_info_t *info);
-static int flash_get_offsets (u32 base, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_reset (u32 addr);
-
-#define out8(a,v) *(volatile unsigned char*)(a) = v
-#define in8(a) *(volatile unsigned char*)(a)
-#define in32(a) *(volatile unsigned long*)(a)
-#define iobarrier_rw() eieio()
-
-unsigned long flash_init (void)
-{
- unsigned int i;
- unsigned long flash_size = 0;
- unsigned long bank_size;
- unsigned int bank = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = 0;
- flash_info[i].size = 0;
- }
-
- /* Initialise the BOOT Flash */
- if (bank == CFG_MAX_FLASH_BANKS) {
- puts ("Warning: not all Flashes are initialised !");
- return flash_size;
- }
-
- bank_size = flash_get_size (CFG_FLASH_BASE, flash_info + bank);
- if (bank_size) {
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE && \
- CFG_MONITOR_BASE < CFG_FLASH_BASE + CFG_MAX_FLASH_SIZE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- flash_info + bank);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- flash_info + bank);
-#endif
-
- /* HWC protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + 0x10000 - 1,
- flash_info + bank);
-
- flash_size += bank_size;
- bank++;
- } else {
- puts ("Warning: the BOOT Flash is not initialised !");
- }
-
- return flash_size;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (u32 addr, flash_info_t *info)
-{
- volatile uchar value;
-#if 0
- int i;
-#endif
-
- /* Write auto select command: read Manufacturer ID */
- out8(addr + 0x0555, 0xAA);
- iobarrier_rw();
- udelay(10);
- out8(addr + 0x02AA, 0x55);
- iobarrier_rw();
- udelay(10);
- out8(addr + 0x0555, 0x90);
- iobarrier_rw();
- udelay(10);
-
- value = in8(addr);
- iobarrier_rw();
- udelay(10);
- switch (value | (value << 16)) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- flash_reset (addr);
- return 0;
- }
-
- value = in8(addr + 1); /* device ID */
- iobarrier_rw();
-
- switch (value) {
- case AMD_ID_LV033C:
- info->flash_id += FLASH_AM033C;
- info->size = hwc_flash_size();
- if (info->size > CFG_MAX_FLASH_SIZE) {
- printf("U-Boot supports only %d MB\n",
- CFG_MAX_FLASH_SIZE);
- info->size = CFG_MAX_FLASH_SIZE;
- }
- info->sector_count = info->size / 0x10000;
- break; /* => 4 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- flash_reset (addr);
- return (0); /* => no or unknown flash */
-
- }
-
- if (!flash_get_offsets (addr, info)) {
- flash_reset (addr);
- return 0;
- }
-
-#if 0
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- value = in8(info->start[i] + 2);
- iobarrier_rw();
- info->protect[i] = (value & 1) != 0;
- }
-#endif
-
- /*
- * Reset bank to read mode
- */
- flash_reset (addr);
-
- return (info->size);
-}
-
-static int flash_get_offsets (u32 base, flash_info_t *info)
-{
- unsigned int i, size;
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM033C:
- /* set sector offsets for uniform sector type */
- size = info->size / info->sector_count;
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + i * size;
- }
- break;
- default:
- return 0;
- }
-
- return 1;
-}
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile u32 addr = info->start[0];
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if (s_first < 0 || s_first > s_last) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN ||
- info->flash_id > FLASH_AMD_COMP) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- out8(addr + 0x555, 0xAA);
- iobarrier_rw();
- out8(addr + 0x2AA, 0x55);
- iobarrier_rw();
- out8(addr + 0x555, 0x80);
- iobarrier_rw();
- out8(addr + 0x555, 0xAA);
- iobarrier_rw();
- out8(addr + 0x2AA, 0x55);
- iobarrier_rw();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = info->start[sect];
- out8(addr, 0x30);
- iobarrier_rw();
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = info->start[l_sect];
- while ((in8(addr) & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- iobarrier_rw();
- }
-
-DONE:
- /* reset to read mode */
- flash_reset (info->start[0]);
-
- printf (" done\n");
- return 0;
-}
-
-/*
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile u32 addr = info->start[0];
- ulong start;
- int flag, i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((in32(dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* first, perform an unlock bypass command to speed up flash writes */
- out8(addr + 0x555, 0xAA);
- iobarrier_rw();
- out8(addr + 0x2AA, 0x55);
- iobarrier_rw();
- out8(addr + 0x555, 0x20);
- iobarrier_rw();
-
- /* write each byte out */
- for (i = 0; i < 4; i++) {
- char *data_ch = (char *)&data;
- out8(addr, 0xA0);
- iobarrier_rw();
- out8(dest+i, data_ch[i]);
- iobarrier_rw();
- udelay(10); /* XXX */
- }
-
- /* we're done, now do an unlock bypass reset */
- out8(addr, 0x90);
- iobarrier_rw();
- out8(addr, 0x00);
- iobarrier_rw();
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((in32(dest) & 0x80808080) != (data & 0x80808080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- iobarrier_rw();
- }
-
- flash_reset (addr);
-
- return (0);
-}
-
-/*
- * Reset bank to read mode
- */
-static void flash_reset (u32 addr)
-{
- out8(addr, 0xF0); /* reset bank */
- iobarrier_rw();
-}
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM033C: printf ("AM29LV033C (32 Mbit, uniform sectors)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size % 0x100000 == 0) {
- printf (" Size: %ld MB in %d Sectors\n",
- info->size / 0x100000, info->sector_count);
- }
- else if (info->size % 0x400 == 0) {
- printf (" Size: %ld KB in %d Sectors\n",
- info->size / 0x400, info->sector_count);
- }
- else {
- printf (" Size: %ld B in %d Sectors\n",
- info->size, info->sector_count);
- }
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
diff --git a/board/iphase4539/iphase4539.c b/board/iphase4539/iphase4539.c
deleted file mode 100644
index 0ca9cf5137..0000000000
--- a/board/iphase4539/iphase4539.c
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * (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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <asm/io.h>
-#include <asm/immap_8260.h>
-
-int hwc_flash_size (void);
-int hwc_local_sdram_size (void);
-int hwc_main_sdram_size (void);
-int hwc_serial_number (void);
-int hwc_mac_address (char *str);
-int hwc_manufact_date (char *str);
-int seeprom_read (int addr, uchar * data, int size);
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- *
- * The port definitions are taken from the old firmware (see
- * also SYS/H/4539.H):
- *
- * ppar psor pdir podr pdat
- * PA: 0x02ffffff 0x02c00000 0xfc403fe6 0x00000000 0x02403fc0
- * PB: 0x0fffdeb0 0x000000b0 0x0f032347 0x00000000 0x0f000290
- * PC: 0x030ffa55 0x030f0040 0xbcf005ea 0x00000000 0xc0c0ba7d
- * PD: 0x09c04e3c 0x01000e3c 0x0a7ff1c3 0x00000000 0x00ce0ae9
- */
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- {0, 1, 0, 0, 0, 0}, /* PA31 FCC1_TXENB SLAVE */
- {0, 1, 0, 1, 0, 0}, /* PA30 FCC1_TXCLAV SLAVE */
- {0, 1, 0, 1, 0, 0}, /* PA29 FCC1_TXSOC */
- {0, 1, 0, 0, 0, 0}, /* PA28 FCC1_RXENB SLAVE */
- {0, 1, 0, 0, 0, 0}, /* PA27 FCC1_RXSOC */
- {0, 1, 0, 1, 0, 0}, /* PA26 FCC1_RXCLAV SLAVE */
- {0, 1, 0, 1, 0, 1}, /* PA25 FCC1_TXD0 */
- {0, 1, 0, 1, 0, 1}, /* PA24 FCC1_TXD1 */
- {0, 1, 0, 1, 0, 1}, /* PA23 FCC1_TXD2 */
- {0, 1, 0, 1, 0, 1}, /* PA22 FCC1_TXD3 */
- {0, 1, 0, 1, 0, 1}, /* PA21 FCC1_TXD4 */
- {0, 1, 0, 1, 0, 1}, /* PA20 FCC1_TXD5 */
- {0, 1, 0, 1, 0, 1}, /* PA19 FCC1_TXD6 */
- {0, 1, 0, 1, 0, 1}, /* PA18 FCC1_TXD7 */
- {0, 1, 0, 0, 0, 0}, /* PA17 FCC1_RXD7 */
- {0, 1, 0, 0, 0, 0}, /* PA16 FCC1_RXD6 */
- {0, 1, 0, 0, 0, 0}, /* PA15 FCC1_RXD5 */
- {0, 1, 0, 0, 0, 0}, /* PA14 FCC1_RXD4 */
- {0, 1, 0, 0, 0, 0}, /* PA13 FCC1_RXD3 */
- {0, 1, 0, 0, 0, 0}, /* PA12 FCC1_RXD2 */
- {0, 1, 0, 0, 0, 0}, /* PA11 FCC1_RXD1 */
- {0, 1, 0, 0, 0, 0}, /* PA10 FCC1_RXD0 */
- {0, 1, 1, 1, 0, 1}, /* PA9 TDMA1_L1TXD */
- {0, 1, 1, 0, 0, 0}, /* PA8 TDMA1_L1RXD */
- {0, 0, 0, 0, 0, 0}, /* PA7 CONFIG0 */
- {0, 1, 1, 0, 0, 1}, /* PA6 TDMA1_L1RSYNC */
- {0, 0, 0, 1, 0, 0}, /* PA5 FCC2:RxAddr[2] */
- {0, 0, 0, 1, 0, 0}, /* PA4 FCC2:RxAddr[1] */
- {0, 0, 0, 1, 0, 0}, /* PA3 FCC2:RxAddr[0] */
- {0, 0, 0, 1, 0, 0}, /* PA2 FCC2:TxAddr[0] */
- {0, 0, 0, 1, 0, 0}, /* PA1 FCC2:TxAddr[1] */
- {0, 0, 0, 1, 0, 0} /* PA0 FCC2:TxAddr[2] */
- },
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- {0, 0, 0, 1, 0, 0}, /* PB31 FCC2_RXSOC */
- {0, 0, 0, 1, 0, 0}, /* PB30 FCC2_TXSOC */
- {0, 0, 0, 1, 0, 0}, /* PB29 FCC2_RXCLAV */
- {0, 0, 0, 0, 0, 0}, /* PB28 CONFIG2 */
- {0, 1, 1, 0, 0, 1}, /* PB27 FCC2_TXD0 */
- {0, 1, 1, 0, 0, 0}, /* PB26 FCC2_TXD1 */
- {0, 0, 0, 1, 0, 0}, /* PB25 FCC2_TXD4 */
- {0, 1, 1, 0, 0, 1}, /* PB24 FCC2_TXD5 */
- {0, 0, 0, 1, 0, 0}, /* PB23 FCC2_TXD6 */
- {0, 1, 0, 1, 0, 1}, /* PB22 FCC2_TXD7 */
- {0, 1, 0, 0, 0, 0}, /* PB21 FCC2_RXD7 */
- {0, 1, 0, 0, 0, 0}, /* PB20 FCC2_RXD6 */
- {0, 1, 0, 0, 0, 0}, /* PB19 FCC2_RXD5 */
- {0, 0, 0, 1, 0, 0}, /* PB18 FCC2_RXD4 */
- {1, 1, 0, 0, 0, 0}, /* PB17 FCC3_RX_DV */
- {1, 1, 0, 0, 0, 0}, /* PB16 FCC3_RX_ER */
- {1, 1, 0, 1, 0, 0}, /* PB15 FCC3_TX_ER */
- {1, 1, 0, 1, 0, 0}, /* PB14 FCC3_TX_EN */
- {1, 1, 0, 0, 0, 0}, /* PB13 FCC3_COL */
- {1, 1, 0, 0, 0, 0}, /* PB12 FCC3_CRS */
- {1, 1, 0, 0, 0, 0}, /* PB11 FCC3_RXD3 */
- {1, 1, 0, 0, 0, 0}, /* PB10 FCC3_RXD2 */
- {1, 1, 0, 0, 0, 0}, /* PB9 FCC3_RXD1 */
- {1, 1, 0, 0, 0, 0}, /* PB8 FCC3_RXD0 */
- {1, 1, 0, 1, 0, 1}, /* PB7 FCC3_TXD0 */
- {1, 1, 0, 1, 0, 1}, /* PB6 FCC3_TXD1 */
- {1, 1, 0, 1, 0, 1}, /* PB5 FCC3_TXD2 */
- {1, 1, 0, 1, 0, 1}, /* PB4 FCC3_TXD3 */
- {0, 0, 0, 0, 0, 0}, /* PB3 */
- {0, 0, 0, 0, 0, 0}, /* PB2 */
- {0, 0, 0, 0, 0, 0}, /* PB1 */
- {0, 0, 0, 0, 0, 0}, /* PB0 */
- },
- /* Port C configuration */
- { /* conf ppar psor pdir podr pdat */
- {0, 1, 0, 0, 0, 1}, /* PC31 CLK1 */
- {0, 0, 0, 1, 0, 0}, /* PC30 U1MASTER_N */
- {0, 1, 0, 0, 0, 1}, /* PC29 CLK3 */
- {0, 0, 0, 1, 0, 1}, /* PC28 -MT90220_RST */
- {0, 1, 0, 0, 0, 1}, /* PC27 CLK5 */
- {0, 0, 0, 1, 0, 1}, /* PC26 -QUADFALC_RST */
- {0, 1, 1, 1, 0, 1}, /* PC25 BRG4 */
- {1, 0, 0, 1, 0, 0}, /* PC24 MDIO */
- {1, 0, 0, 1, 0, 0}, /* PC23 MDC */
- {0, 1, 0, 0, 0, 1}, /* PC22 CLK10 */
- {0, 0, 0, 1, 0, 0}, /* PC21 */
- {0, 1, 0, 0, 0, 1}, /* PC20 CLK12 */
- {0, 1, 0, 0, 0, 1}, /* PC19 CLK13 */
- {1, 1, 0, 0, 0, 1}, /* PC18 CLK14 */
- {0, 1, 0, 0, 0, 0}, /* PC17 CLK15 */
- {1, 1, 0, 0, 0, 1}, /* PC16 CLK16 */
- {0, 1, 1, 0, 0, 0}, /* PC15 FCC1_TXADDR0 SLAVE */
- {0, 1, 1, 0, 0, 0}, /* PC14 FCC1_RXADDR0 SLAVE */
- {0, 1, 1, 0, 0, 0}, /* PC13 FCC1_TXADDR1 SLAVE */
- {0, 1, 1, 0, 0, 0}, /* PC12 FCC1_RXADDR1 SLAVE */
- {0, 0, 0, 1, 0, 0}, /* PC11 FCC2_RXD2 */
- {0, 0, 0, 1, 0, 0}, /* PC10 FCC2_RXD3 */
- {0, 0, 0, 1, 0, 1}, /* PC9 LTMODE */
- {0, 0, 0, 1, 0, 1}, /* PC8 SELSYNC */
- {0, 1, 1, 0, 0, 0}, /* PC7 FCC1_TXADDR2 SLAVE */
- {0, 1, 1, 0, 0, 0}, /* PC6 FCC1_RXADDR2 SLAVE */
- {0, 0, 0, 1, 0, 0}, /* PC5 FCC2_TXCLAV MASTER */
- {0, 0, 0, 1, 0, 0}, /* PC4 FCC2_RXENB MASTER */
- {0, 0, 0, 1, 0, 0}, /* PC3 FCC2_TXD2 */
- {0, 0, 0, 1, 0, 0}, /* PC2 FCC2_TXD3 */
- {0, 0, 0, 0, 0, 1}, /* PC1 PTMC -PTEENB */
- {0, 0, 0, 1, 0, 1}, /* PC0 COMCLK_N */
- },
- /* Port D configuration */
- { /* conf ppar psor pdir podr pdat */
- {0, 0, 0, 1, 0, 1}, /* PD31 -CAM_RST */
- {0, 0, 0, 1, 0, 0}, /* PD30 FCC2_TXENB */
- {0, 1, 1, 0, 0, 0}, /* PD29 FCC1_RXADDR3 SLAVE */
- {0, 1, 1, 0, 0, 1}, /* PD28 TDMC1_L1TXD */
- {0, 1, 1, 0, 0, 0}, /* PD27 TDMC1_L1RXD */
- {0, 1, 1, 0, 0, 1}, /* PD26 TDMC1_L1RSYNC */
- {0, 0, 0, 1, 0, 1}, /* PD25 LED0 -OFF */
- {0, 0, 0, 1, 0, 1}, /* PD24 LED5 -OFF */
- {1, 0, 0, 1, 0, 1}, /* PD23 -LXT971_RST */
- {0, 1, 1, 0, 0, 1}, /* PD22 TDMA2_L1TXD */
- {0, 1, 1, 0, 0, 0}, /* PD21 TDMA2_L1RXD */
- {0, 1, 1, 0, 0, 1}, /* PD20 TDMA2_L1RSYNC */
- {0, 0, 0, 1, 0, 0}, /* PD19 FCC2_TXADDR3 */
- {0, 0, 0, 1, 0, 0}, /* PD18 FCC2_RXADDR3 */
- {0, 1, 0, 1, 0, 0}, /* PD17 BRG2 */
- {0, 0, 0, 1, 0, 0}, /* PD16 */
- {0, 0, 0, 1, 0, 0}, /* PD15 PT2TO1 */
- {0, 0, 0, 1, 0, 1}, /* PD14 PT4TO3 */
- {0, 0, 0, 1, 0, 1}, /* PD13 -SWMODE */
- {0, 0, 0, 1, 0, 1}, /* PD12 -PTMODE */
- {0, 0, 0, 1, 0, 0}, /* PD11 FCC2_RXD0 */
- {0, 0, 0, 1, 0, 0}, /* PD10 FCC2_RXD1 */
- {1, 1, 0, 1, 0, 1}, /* PD9 SMC1_SMTXD */
- {1, 1, 0, 0, 0, 1}, /* PD8 SMC1_SMRXD */
- {0, 1, 1, 0, 0, 0}, /* PD7 FCC1_TXADDR3 SLAVE */
- {0, 0, 0, 1, 0, 0}, /* PD6 IMAMODE */
- {0, 0, 0, 0, 0, 0}, /* PD5 CONFIG2 */
- {0, 1, 0, 1, 0, 0}, /* PD4 BRG8 */
- {0, 0, 0, 0, 0, 0}, /* PD3 */
- {0, 0, 0, 0, 0, 0}, /* PD2 */
- {0, 0, 0, 0, 0, 0}, /* PD1 */
- {0, 0, 0, 0, 0, 0}, /* PD0 */
- }
-};
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
- volatile uchar *base;
- ulong maxsize;
- int i;
-
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_mptpr = CFG_MPTPR;
-
-#ifndef CFG_RAMBOOT
- immap->im_siu_conf.sc_ppc_acr = 0x00000026;
- immap->im_siu_conf.sc_ppc_alrh = 0x01276345;
- immap->im_siu_conf.sc_ppc_alrl = 0x89ABCDEF;
- immap->im_siu_conf.sc_lcl_acr = 0x00000000;
- immap->im_siu_conf.sc_lcl_alrh = 0x01234567;
- immap->im_siu_conf.sc_lcl_alrl = 0x89ABCDEF;
- immap->im_siu_conf.sc_tescr1 = 0x00004000;
- immap->im_siu_conf.sc_ltescr1 = 0x00004000;
-
- /* Init Main SDRAM */
-#define OP_VALUE 0x404A241A
-#define OP_VALUE_M (OP_VALUE & 0x87FFFFFF);
- base = (uchar *) CFG_SDRAM_BASE;
- memctl->memc_psdmr = 0x28000000 | OP_VALUE_M;
- *base = 0xFF;
- memctl->memc_psdmr = 0x08000000 | OP_VALUE_M;
- for (i = 0; i < 8; i++)
- *base = 0xFF;
- memctl->memc_psdmr = 0x18000000 | OP_VALUE_M;
- *(base + 0x110) = 0xFF;
- memctl->memc_psdmr = OP_VALUE;
- memctl->memc_lsdmr = 0x4086A522;
- *base = 0xFF;
-
- /* We must be able to test a location outsize the maximum legal size
- * to find out THAT we are outside; but this address still has to be
- * mapped by the controller. That means, that the initial mapping has
- * to be (at least) twice as large as the maximum expected size.
- */
- maxsize = (1 + (~memctl->memc_or1 | 0x7fff)) / 2;
-
- maxsize = get_ram_size((long *)base, maxsize);
-
- memctl->memc_or1 |= ~(maxsize - 1);
-
- if (maxsize != hwc_main_sdram_size ())
- printf ("Oops: memory test has not found all memory!\n");
-#endif
-
- icache_enable ();
- /* return total ram size of SDRAM */
- return (maxsize);
-}
-
-int checkboard (void)
-{
- char string[32];
-
- hwc_manufact_date (string);
-
- printf ("Board: Interphase 4539 (#%d %s)\n",
- hwc_serial_number (),
- string);
-
-#ifdef DEBUG
- printf ("Manufacturing date: %s\n", string);
- printf ("Serial number : %d\n", hwc_serial_number ());
- printf ("FLASH size : %d MB\n", hwc_flash_size () >> 20);
- printf ("Main SDRAM size : %d MB\n", hwc_main_sdram_size () >> 20);
- printf ("Local SDRAM size : %d MB\n", hwc_local_sdram_size () >> 20);
- hwc_mac_address (string);
- printf ("MAC address : %s\n", string);
-#endif
-
- return 0;
-}
-
-int misc_init_r (void)
-{
- char *s, str[32];
- int num;
-
- if ((s = getenv ("serial#")) == NULL &&
- (num = hwc_serial_number ()) != -1) {
- sprintf (str, "%06d", num);
- setenv ("serial#", str);
- }
- if ((s = getenv ("ethaddr")) == NULL && hwc_mac_address (str) == 0) {
- setenv ("ethaddr", str);
- }
- return (0);
-}
-
-/***************************************************************
- * We take some basic Hardware Configuration Parameter from the
- * Serial EEPROM conected to the PSpan bridge. We keep it as
- * simple as possible.
- */
-int hwc_flash_size (void)
-{
- uchar byte;
-
- if (!seeprom_read (0x40, &byte, sizeof (byte))) {
- switch ((byte >> 2) & 0x3) {
- case 0x1:
- return 0x0400000;
- break;
- case 0x2:
- return 0x0800000;
- break;
- case 0x3:
- return 0x1000000;
- default:
- return 0x0100000;
- }
- }
- return -1;
-}
-int hwc_local_sdram_size (void)
-{
- uchar byte;
-
- if (!seeprom_read (0x40, &byte, sizeof (byte))) {
- switch ((byte & 0x03)) {
- case 0x1:
- return 0x0800000;
- case 0x2:
- return 0x1000000;
- default:
- return 0; /* not present */
- }
- }
- return -1;
-}
-int hwc_main_sdram_size (void)
-{
- uchar byte;
-
- if (!seeprom_read (0x41, &byte, sizeof (byte))) {
- return 0x1000000 << ((byte >> 5) & 0x7);
- }
- return -1;
-}
-int hwc_serial_number (void)
-{
- int sn = -1;
-
- if (!seeprom_read (0xa0, (uchar *) &sn, sizeof (sn))) {
- sn = cpu_to_le32 (sn);
- }
- return sn;
-}
-int hwc_mac_address (char *str)
-{
- char mac[6];
-
- if (!seeprom_read (0xb0, (uchar *)mac, sizeof (mac))) {
- sprintf (str, "%02x:%02x:%02x:%02x:%02x:%02x\n",
- mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
- } else {
- strcpy (str, "ERROR");
- return -1;
- }
- return 0;
-}
-int hwc_manufact_date (char *str)
-{
- uchar byte;
- int value;
-
- if (seeprom_read (0x92, &byte, sizeof (byte)))
- goto out;
- value = byte;
- if (seeprom_read (0x93, &byte, sizeof (byte)))
- goto out;
- value += byte << 8;
- sprintf (str, "%02d/%02d/%04d",
- value & 0x1F, (value >> 5) & 0xF,
- 1980 + ((value >> 9) & 0x1FF));
- return 0;
-
- out:
- strcpy (str, "ERROR");
- return -1;
-}
-
-#define PSPAN_ADDR 0xF0020000
-#define EEPROM_REG 0x408
-#define EEPROM_READ_CMD 0xA000
-#define PSPAN_WRITE(a,v) \
- *((volatile unsigned long *)(PSPAN_ADDR+(a))) = v; eieio()
-#define PSPAN_READ(a) \
- *((volatile unsigned long *)(PSPAN_ADDR+(a)))
-
-int seeprom_read (int addr, uchar * data, int size)
-{
- ulong val, cmd;
- int i;
-
- for (i = 0; i < size; i++) {
-
- cmd = EEPROM_READ_CMD;
- cmd |= ((addr + i) << 24) & 0xff000000;
-
- /* Wait for ACT to authorize write */
- while ((val = PSPAN_READ (EEPROM_REG)) & 0x80)
- eieio ();
-
- /* Write command */
- PSPAN_WRITE (EEPROM_REG, cmd);
-
- /* Wait for data to be valid */
- while ((val = PSPAN_READ (EEPROM_REG)) & 0x80)
- eieio ();
- /* Do it twice, first read might be erratic */
- while ((val = PSPAN_READ (EEPROM_REG)) & 0x80)
- eieio ();
-
- /* Read error */
- if (val & 0x00000040) {
- return -1;
- } else {
- data[i] = (val >> 16) & 0xff;
- }
- }
- return 0;
-}
diff --git a/board/iphase4539/u-boot.lds b/board/iphase4539/u-boot.lds
deleted file mode 100644
index 4ea01eab66..0000000000
--- a/board/iphase4539/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (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/mpc8260/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/ivm/Makefile b/board/ivm/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/ivm/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ivm/config.mk b/board/ivm/config.mk
deleted file mode 100644
index 37e7185735..0000000000
--- a/board/ivm/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2000
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# Ulrich Lutz, Speech Design GmbH, ulutz@datalab.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
-#
-
-#
-# IVM boards
-#
-
-TEXT_BASE = 0xFF000000
diff --git a/board/ivm/flash.c b/board/ivm/flash.c
deleted file mode 100644
index 140ba2d530..0000000000
--- a/board/ivm/flash.c
+++ /dev/null
@@ -1,598 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0: "
- "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
- flash_info[0].flash_id,
- size_b0, size_b0<<20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | \
- BR_MS_GPCM | BR_PS_16 | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_MT:
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + ((i-3) * 0x00020000);
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
- return;
-
- case FLASH_MAN_SST:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00002000);
- }
- return;
-
- case FLASH_MAN_AMD:
- case FLASH_MAN_FUJ:
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
- return;
- default:
- printf ("Don't know sector ofsets for flash type 0x%lx\n",
- info->flash_id);
- return;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("Fujitsu "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_MT: printf ("MT "); break;
- case FLASH_MAN_INTEL: printf ("Intel "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_SST200A: printf ("39xF200A (2M = 128K x 16)\n");
- break;
- case FLASH_SST400A: printf ("39xF400A (4M = 256K x 16)\n");
- break;
- case FLASH_SST800A: printf ("39xF800A (8M = 512K x 16)\n");
- break;
- case FLASH_STM800AB: printf ("M29W800AB (8M = 512K x 16)\n");
- break;
- case FLASH_28F008S5: printf ("28F008S5 (1M = 64K x 16)\n");
- break;
- case FLASH_28F400_T: printf ("28F400B3 (4Mbit, top boot sector)\n");
- break;
- case FLASH_28F400_B: printf ("28F400B3 (4Mbit, bottom boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size >= (1 << 20)) {
- i = 20;
- } else {
- i = 10;
- }
- printf (" Size: %ld %cB in %d Sectors\n",
- info->size >> i,
- (i == 20) ? 'M' : 'k',
- info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- ushort value;
- vu_short *saddr = (vu_short *)addr;
-
- /* Read Manufacturer ID */
- saddr[0] = 0x0090;
- value = saddr[0];
-
- switch (value) {
- case (AMD_MANUFACT & 0xFFFF):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & 0xFFFF):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (SST_MANUFACT & 0xFFFF):
- info->flash_id = FLASH_MAN_SST;
- break;
- case (STM_MANUFACT & 0xFFFF):
- info->flash_id = FLASH_MAN_STM;
- break;
- case (MT_MANUFACT & 0xFFFF):
- info->flash_id = FLASH_MAN_MT;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- saddr[0] = 0x00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- value = saddr[1]; /* device ID */
-
- switch (value) {
- case (AMD_ID_LV400T & 0xFFFF):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV400B & 0xFFFF):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800T & 0xFFFF):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV800B & 0xFFFF):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV160T & 0xFFFF):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV160B & 0xFFFF):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case (AMD_ID_LV320T & 0xFFFF):
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (AMD_ID_LV320B & 0xFFFF):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- case (SST_ID_xF200A & 0xFFFF):
- info->flash_id += FLASH_SST200A;
- info->sector_count = 64; /* 39xF200A ID ( 2M = 128K x 16 ) */
- info->size = 0x00080000;
- break;
- case (SST_ID_xF400A & 0xFFFF):
- info->flash_id += FLASH_SST400A;
- info->sector_count = 128; /* 39xF400A ID ( 4M = 256K x 16 ) */
- info->size = 0x00100000;
- break;
- case (SST_ID_xF800A & 0xFFFF):
- info->flash_id += FLASH_SST800A;
- info->sector_count = 256; /* 39xF800A ID ( 8M = 512K x 16 ) */
- info->size = 0x00200000;
- break; /* => 2 MB */
- case (STM_ID_x800AB & 0xFFFF):
- info->flash_id += FLASH_STM800AB;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
- case (MT_ID_28F400_T & 0xFFFF):
- info->flash_id += FLASH_28F400_T;
- info->sector_count = 7;
- info->size = 0x00080000;
- break; /* => 512 kB */
- case (MT_ID_28F400_B & 0xFFFF):
- info->flash_id += FLASH_28F400_B;
- info->sector_count = 7;
- info->size = 0x00080000;
- break; /* => 512 kB */
- default:
- info->flash_id = FLASH_UNKNOWN;
- saddr[0] = 0x00FF; /* restore read mode */
- return (0); /* => no or unknown flash */
-
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- saddr[0] = 0x00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_MT) {
- printf ("Can erase only MT flash types - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_short *addr = (vu_short *)(info->start[sect]);
- unsigned short status;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = 0x0050; /* clear status register */
- *addr = 0x0020; /* erase setup */
- *addr = 0x00D0; /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = *addr) & 0x0080) != 0x0080) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = 0x00FF; /* reset to read mode */
- return 1;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- *addr = 0x00FF; /* reset to read mode */
- }
- }
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define FLASH_WIDTH 2 /* flash bus width in bytes */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- wp = (addr & ~(FLASH_WIDTH-1)); /* get lower FLASH_WIDTH aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<FLASH_WIDTH && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<FLASH_WIDTH; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_data(info, wp, data)) != 0) {
- return (rc);
- }
- wp += FLASH_WIDTH;
- }
-
- /*
- * handle FLASH_WIDTH aligned part
- */
- while (cnt >= FLASH_WIDTH) {
- data = 0;
- for (i=0; i<FLASH_WIDTH; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data(info, wp, data)) != 0) {
- return (rc);
- }
- wp += FLASH_WIDTH;
- cnt -= FLASH_WIDTH;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<FLASH_WIDTH && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<FLASH_WIDTH; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_data(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, ulong data)
-{
- vu_short *addr = (vu_short *)dest;
- ushort sdata = (ushort)data;
- ushort status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & sdata) != sdata) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = 0x0040; /* write setup */
- *addr = sdata;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- while (((status = *addr) & 0x0080) != 0x0080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *addr = 0x00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = 0x00FF; /* restore read mode */
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/ivm/ivm.c b/board/ivm/ivm.c
deleted file mode 100644
index 7927ea9a50..0000000000
--- a/board/ivm/ivm.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Ulrich Lutz, Speech Design GmbH, ulutz@datalab.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 <common.h>
-#include <mpc8xx.h>
-#include <commproc.h>
-
-#ifdef CONFIG_STATUS_LED
-# include <status_led.h>
-#endif
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-/*
- * 50 MHz SHARC access using UPM A
- */
-const uint sharc_table[] = {
- /*
- * Single Read. (Offset 0 in UPM RAM)
- */
- 0x0FF3FC04, 0x0FF3EC00, 0x7FFFEC04, 0xFFFFEC04,
- 0xFFFFEC05, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Read. (Offset 8 in UPM RAM)
- */
- /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPM RAM)
- */
- 0x0FAFFC04, 0x0FAFEC00, 0x7FFFEC04, 0xFFFFEC04,
- 0xFFFFEC05, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPM RAM)
- */
- /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPM RAM)
- */
- /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPM RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-
-/*
- * 50 MHz SDRAM access using UPM B
- */
-const uint sdram_table[] = {
- /*
- * Single Read. (Offset 0 in UPM RAM)
- */
- 0x0E26FC04, 0x11ADFC04, 0xEFBBBC00, 0x1FF77C45, /* last */
- _NOT_USED_,
- /*
- * SDRAM Initialization (offset 5 in UPM RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FF77C35, 0xEFEABC34, 0x1FB57C35, /* last */
- /*
- * Burst Read. (Offset 8 in UPM RAM)
- */
- 0x0E26FC04, 0x10ADFC04, 0xF0AFFC00, 0xF0AFFC00,
- 0xF1AFFC00, 0xEFBBBC00, 0x1FF77C45, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPM RAM)
- */
- 0x1F27FC04, 0xEEAEBC04, 0x01B93C00, 0x1FF77C45, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPM RAM)
- */
- 0x0E26BC00, 0x10AD7C00, 0xF0AFFC00, 0xF0AFFC00,
- 0xE1BBBC04, 0x1FF77C45, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPM RAM)
- */
- 0x1FF5FC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC84,
- 0xFFFFFC05, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPM RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- */
-
-int checkboard (void)
-{
-#ifdef CONFIG_IVMS8
- puts ("Board: IVMS8\n");
-#endif
-#ifdef CONFIG_IVML24
- puts ("Board: IVM-L8/24\n");
-#endif
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immr->im_memctl;
- long int size_b0;
-
- /* enable SDRAM clock ("switch on" SDRAM) */
- immr->im_cpm.cp_pbpar &= ~(CFG_PB_SDRAM_CLKE); /* GPIO */
- immr->im_cpm.cp_pbodr &= ~(CFG_PB_SDRAM_CLKE); /* active output */
- immr->im_cpm.cp_pbdir |= CFG_PB_SDRAM_CLKE; /* output */
- immr->im_cpm.cp_pbdat |= CFG_PB_SDRAM_CLKE; /* assert SDRAM CLKE */
- udelay (1);
-
- /*
- * Map controller bank 1 for ELIC SACCO
- */
- memctl->memc_or1 = CFG_OR1;
- memctl->memc_br1 = CFG_BR1;
-
- /*
- * Map controller bank 2 for ELIC EPIC
- */
- memctl->memc_or2 = CFG_OR2;
- memctl->memc_br2 = CFG_BR2;
-
- /*
- * Configure UPMA for SHARC
- */
- upmconfig (UPMA, (uint *) sharc_table,
- sizeof (sharc_table) / sizeof (uint));
-
-#if defined(CONFIG_IVML24)
- /*
- * Map controller bank 4 for HDLC Address space
- */
- memctl->memc_or4 = CFG_OR4;
- memctl->memc_br4 = CFG_BR4;
-#endif
-
- /*
- * Map controller bank 5 for SHARC
- */
- memctl->memc_or5 = CFG_OR5;
- memctl->memc_br5 = CFG_BR5;
-
- memctl->memc_mamr = 0x00001000;
-
- /*
- * Configure UPMB for SDRAM
- */
- upmconfig (UPMB, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- memctl->memc_mptpr = CFG_MPTPR_1BK_8K;
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller bank 3 to the SDRAM bank at preliminary address.
- */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
-
- memctl->memc_mbmr = CFG_MBMR_8COL; /* refresh not enabled yet */
-
- udelay (200);
- memctl->memc_mcr = 0x80806105; /* precharge */
- udelay (1);
- memctl->memc_mcr = 0x80806106; /* load mode register */
- udelay (1);
- memctl->memc_mcr = 0x80806130; /* autorefresh */
- udelay (1);
- memctl->memc_mcr = 0x80806130; /* autorefresh */
- udelay (1);
- memctl->memc_mcr = 0x80806130; /* autorefresh */
- udelay (1);
- memctl->memc_mcr = 0x80806130; /* autorefresh */
- udelay (1);
- memctl->memc_mcr = 0x80806130; /* autorefresh */
- udelay (1);
- memctl->memc_mcr = 0x80806130; /* autorefresh */
- udelay (1);
- memctl->memc_mcr = 0x80806130; /* autorefresh */
- udelay (1);
- memctl->memc_mcr = 0x80806130; /* autorefresh */
-
- memctl->memc_mbmr |= MBMR_PTBE; /* refresh enabled */
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- */
- size_b0 =
- dram_size (CFG_MBMR_8COL, (long *) SDRAM_BASE3_PRELIM,
- SDRAM_MAX_SIZE);
-
- memctl->memc_mbmr = CFG_MBMR_8COL | MBMR_PTBE;
-
- return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immr->im_memctl;
-
- memctl->memc_mbmr = mamr_value;
-
- return (get_ram_size (base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-void reset_phy (void)
-{
- immap_t *immr = (immap_t *) CFG_IMMR;
-
- /* De-assert Ethernet Powerdown */
- immr->im_cpm.cp_pbpar &= ~(CFG_PB_ETH_POWERDOWN); /* GPIO */
- immr->im_cpm.cp_pbodr &= ~(CFG_PB_ETH_POWERDOWN); /* active output */
- immr->im_cpm.cp_pbdir |= CFG_PB_ETH_POWERDOWN; /* output */
- immr->im_cpm.cp_pbdat &= ~(CFG_PB_ETH_POWERDOWN); /* Enable PHY power */
- udelay (1000);
-
- /*
- * RESET is implemented by a positive pulse of at least 1 us
- * at the reset pin.
- *
- * Configure RESET pins for NS DP83843 PHY, and RESET chip.
- *
- * Note: The RESET pin is high active, but there is an
- * inverter on the SPD823TS board...
- */
- immr->im_ioport.iop_pcpar &= ~(CFG_PC_ETH_RESET);
- immr->im_ioport.iop_pcdir |= CFG_PC_ETH_RESET;
- /* assert RESET signal of PHY */
- immr->im_ioport.iop_pcdat &= ~(CFG_PC_ETH_RESET);
- udelay (10);
- /* de-assert RESET signal of PHY */
- immr->im_ioport.iop_pcdat |= CFG_PC_ETH_RESET;
- udelay (10);
-}
-
-/* ------------------------------------------------------------------------- */
-
-void show_boot_progress (int status)
-{
-#if defined(CONFIG_STATUS_LED)
-# if defined(STATUS_LED_YELLOW)
- status_led_set (STATUS_LED_YELLOW,
- (status < 0) ? STATUS_LED_ON : STATUS_LED_OFF);
-# endif /* STATUS_LED_YELLOW */
-# if defined(STATUS_LED_BOOT)
- if (status == 6)
- status_led_set (STATUS_LED_BOOT, STATUS_LED_OFF);
-# endif /* STATUS_LED_BOOT */
-#endif /* CONFIG_STATUS_LED */
-}
-
-/* ------------------------------------------------------------------------- */
-
-void ide_set_reset (int on)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
-
- /*
- * Configure PC for IDE Reset Pin
- */
- if (on) { /* assert RESET */
- immr->im_ioport.iop_pcdat &= ~(CFG_PC_IDE_RESET);
- } else { /* release RESET */
- immr->im_ioport.iop_pcdat |= CFG_PC_IDE_RESET;
- }
-
- /* program port pin as GPIO output */
- immr->im_ioport.iop_pcpar &= ~(CFG_PC_IDE_RESET);
- immr->im_ioport.iop_pcso &= ~(CFG_PC_IDE_RESET);
- immr->im_ioport.iop_pcdir |= CFG_PC_IDE_RESET;
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/ivm/u-boot.lds b/board/ivm/u-boot.lds
deleted file mode 100644
index fdeabc59e7..0000000000
--- a/board/ivm/u-boot.lds
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * (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
- */
-
-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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FF) & 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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/ivm/u-boot.lds.debug b/board/ivm/u-boot.lds.debug
deleted file mode 100644
index 3214f3f0c8..0000000000
--- a/board/ivm/u-boot.lds.debug
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/ixdp425/Makefile b/board/ixdp425/Makefile
deleted file mode 100644
index 5d4feb0f70..0000000000
--- a/board/ixdp425/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := ixdp425.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ixdp425/config.mk b/board/ixdp425/config.mk
deleted file mode 100644
index d49c0e7e6d..0000000000
--- a/board/ixdp425/config.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-TEXT_BASE = 0x00f80000
-
-# include NPE ethernet driver
-BOARDLIBS = $(obj)cpu/ixp/npe/libnpe.a
diff --git a/board/ixdp425/flash.c b/board/ixdp425/flash.c
deleted file mode 100644
index 1d958c8c19..0000000000
--- a/board/ixdp425/flash.c
+++ /dev/null
@@ -1,427 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (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 <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) x
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-void inline spin_wheel (void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + _bss_start - _armboot_start,
- &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x02000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
-
- while (((status =
- *addr) & (FPW) 0x00800080) !=
- (FPW) 0x00800080) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = (FPW) 0x00500050; /* clear status register cmd. */
- *addr = (FPW) 0x00FF00FF; /* resest to read mode */
-
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr,
- (ulong) * addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/ixdp425/ixdp425.c b/board/ixdp425/ixdp425.c
deleted file mode 100644
index eaf7cdefe5..0000000000
--- a/board/ixdp425/ixdp425.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <asm/arch/ixp425.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-int board_post_init (void)
-{
- return (0);
-}
-
-int board_init (void)
-{
- /* arch number of IXDP */
- gd->bd->bi_arch_number = MACH_TYPE_IXDP425;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x00000100;
-
-#ifdef CONFIG_IXDPG425
- /* arch number of IXDP */
- gd->bd->bi_arch_number = MACH_TYPE_IXDPG425;
-
- /*
- * Get realtek RTL8305 switch and SLIC out of reset
- */
- GPIO_OUTPUT_SET(CFG_GPIO_SWITCH_RESET_N);
- GPIO_OUTPUT_ENABLE(CFG_GPIO_SWITCH_RESET_N);
- GPIO_OUTPUT_SET(CFG_GPIO_SLIC_RESET_N);
- GPIO_OUTPUT_ENABLE(CFG_GPIO_SLIC_RESET_N);
-
- /*
- * Setup GPIO's for PCI INTA & INTB
- */
- GPIO_OUTPUT_DISABLE(CFG_GPIO_PCI_INTA_N);
- GPIO_INT_ACT_LOW_SET(CFG_GPIO_PCI_INTA_N);
- GPIO_OUTPUT_DISABLE(CFG_GPIO_PCI_INTB_N);
- GPIO_INT_ACT_LOW_SET(CFG_GPIO_PCI_INTB_N);
-
- /*
- * Setup GPIO's for 33MHz clock output
- */
- *IXP425_GPIO_GPCLKR = 0x01FF01FF;
- GPIO_OUTPUT_ENABLE(CFG_GPIO_PCI_CLK);
- GPIO_OUTPUT_ENABLE(CFG_GPIO_EXTBUS_CLK);
-#endif
-
- return 0;
-}
-
-/*
- * Check Board Identity
- */
-int checkboard(void)
-{
- char *s = getenv("serial#");
-
-#ifdef CONFIG_IXDPG425
- puts("Board: IXDPG425 - Intel Network Gateway Reference Platform");
-#else
- puts("Board: IXDP425 - Intel Development Platform");
-#endif
-
- if (s != NULL) {
- puts(", serial# ");
- puts(s);
- }
- putc('\n');
-
- return (0);
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return (0);
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCI) || defined(CONFIG_PCI)
-extern struct pci_controller hose;
-extern void pci_ixp_init(struct pci_controller * hose);
-
-void pci_init_board(void)
-{
- extern void pci_ixp_init (struct pci_controller *hose);
-
- pci_ixp_init(&hose);
-}
-#endif
diff --git a/board/ixdp425/u-boot.lds b/board/ixdp425/u-boot.lds
deleted file mode 100644
index e2ceac7227..0000000000
--- a/board/ixdp425/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-bigarm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/ixp/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/jse/Makefile b/board/jse/Makefile
deleted file mode 100644
index e858c83f73..0000000000
--- a/board/jse/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Copyright 2004 Picture Elements, Inc.
-# Stephen Williams <steve@icarus.com>
-#
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o sdram.o flash.o host_bridge.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/jse/README.txt b/board/jse/README.txt
deleted file mode 100644
index 84497db70f..0000000000
--- a/board/jse/README.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-JSE Configuration Details
-
-Memory Bank 0 -- Flash chip
----------------------------
-
-0xfff00000 - 0xffffffff
-
-The flash chip is really only 512Kbytes, but the high address bit of
-the 1Meg region is ignored, so the flash is replicated through the
-region. Thus, this is consistent with a flash base address 0xfff80000.
-
-The placement at the end is to be consistent with reset behavior,
-where the processor itself initially uses this bus to load the branch
-vector and start running.
-
-On-Chip Memory
---------------
-
-0xf4000000 - 0xf4000fff
-
-The 405GPr includes a 4K on-chip memory that can be placed however
-software chooses. I choose to place the memory at this address, to
-keep it out of the cachable areas.
-
-
-Memory Bank 1 -- SystemACE Controller
--------------------------------------
-
-0xf0000000 - 0xf00fffff
-
-The SystemACE chip is along on peripheral bank CS#1. We don't need
-much space, but 1Meg is the smallest we can configure the chip to
-allocate. We need it far away from the flash region, because this
-region is set to be non-cached.
-
-
-Internal Peripherals
---------------------
-
-0xef600300 - 0xef6008ff
-
-These are scattered various peripherals internal to the PPC405GPr
-chip.
-
-SDRAM
------
-
-0x00000000 - 0x07ffffff (128 MBytes)
diff --git a/board/jse/config.mk b/board/jse/config.mk
deleted file mode 100644
index 03ec085010..0000000000
--- a/board/jse/config.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# (C) Copyright 2003 Picture Elements, Inc.
-#
-# 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
-#
-
-#
-# Picture Elements, Inc. JSE boards
-#
-
-TEXT_BASE = 0xFFF80000
diff --git a/board/jse/flash.c b/board/jse/flash.c
deleted file mode 100644
index c462fe0315..0000000000
--- a/board/jse/flash.c
+++ /dev/null
@@ -1,520 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-#if CFG_MAX_FLASH_BANKS != 1
-#error "CFG_MAX_FLASH_BANKS must be 1"
-#endif
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static int write_word (flash_info_t * info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-#define ADDR0 0x5555
-#define ADDR1 0x2aaa
-#define FLASH_WORD_SIZE unsigned char
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
-
- /* Init: no FLASHes known */
- flash_info[0].flash_id = FLASH_UNKNOWN;
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size ((vu_long *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 << 20);
- }
-
- /* Only one bank */
- /* Setup offsets */
- flash_get_offsets (FLASH_BASE0_PRELIM, &flash_info[0]);
-
- /* Monitor protection ON by default */
- (void) flash_protect (FLAG_PROTECT_SET,
- FLASH_BASE0_PRELIM,
- FLASH_BASE0_PRELIM + monitor_flash_len - 1,
- &flash_info[0]);
- flash_info[0].size = size_b0;
-
- return size_b0;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-/*
- * This implementation assumes that the flash chips are uniform sector
- * devices. This is true for all likely JSE devices.
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- unsigned idx;
- unsigned long sector_size = info->size / info->sector_count;
-
- for (idx = 0; idx < info->sector_count; idx += 1) {
- info->start[idx] = base + (idx * sector_size);
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf ("FUJITSU ");
- break;
- case FLASH_MAN_SST:
- printf ("SST ");
- break;
- case FLASH_MAN_STM:
- printf ("ST Micro ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- /* (Reduced table of only parts expected in JSE boards.) */
- switch (info->flash_id) {
- case FLASH_MAN_AMD | FLASH_AM040:
- printf ("AM29F040 (512 Kbit, uniform sector size)\n");
- break;
- case FLASH_MAN_STM | FLASH_AM040:
- printf ("MM29W040W (512 Kbit, uniform sector size)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count - 1))
- size = info->start[i + 1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *) info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k = 0; k < size; k++) {
- if (*flash++ != 0xffffffff) {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ", info->protect[i] ? "RO " : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info)
-{
- short i;
- FLASH_WORD_SIZE value;
- ulong base = (ulong) addr;
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *) addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00900090;
-
- value = addr2[0];
-
- switch (value) {
- case (FLASH_WORD_SIZE) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FLASH_WORD_SIZE) FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (FLASH_WORD_SIZE) SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case (FLASH_WORD_SIZE)STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- printf("Unknown flash manufacturer code: 0x%x\n", value);
- return (0); /* no or unknown flash */
- }
-
- value = addr2[1]; /* device ID */
-
- switch (value) {
- case (FLASH_WORD_SIZE) AMD_ID_F040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 ko */
- break;
- case (FLASH_WORD_SIZE) AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 ko */
- break;
- case (FLASH_WORD_SIZE)STM_ID_M29W040B: /* most likele JSE chip */
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 ko */
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* Calculate the sector offsets (Use JSE Optimized code). */
- flash_get_offsets(base, info);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile FLASH_WORD_SIZE *) (info->start[i]);
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (FLASH_WORD_SIZE *) info->start[0];
- *addr2 = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-int wait_for_DQ7 (flash_info_t * info, int sect)
-{
- ulong start, now, last;
- volatile FLASH_WORD_SIZE *addr =
- (FLASH_WORD_SIZE *) (info->start[sect]);
-
- start = get_timer (0);
- last = start;
- while ((addr[0] & (FLASH_WORD_SIZE) 0x00800080) !=
- (FLASH_WORD_SIZE) 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return -1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *) (info->start[0]);
- volatile FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- int i;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (FLASH_WORD_SIZE *) (info->start[sect]);
- printf ("Erasing sector %p\n", addr2); /* CLH */
-
- if ((info->flash_id & FLASH_VENDMASK) ==
- FLASH_MAN_SST) {
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (FLASH_WORD_SIZE) 0x00500050; /* block erase */
- for (i = 0; i < 50; i++)
- udelay (1000); /* wait 1 ms */
- } else {
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (FLASH_WORD_SIZE) 0x00300030; /* sector erase */
- }
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- wait_for_DQ7 (info, sect);
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
-#if 0
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
- wait_for_DQ7 (info, l_sect);
-
-DONE:
-#endif
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_word (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 =
- (FLASH_WORD_SIZE *) (info->start[0]);
- volatile FLASH_WORD_SIZE *dest2 = (FLASH_WORD_SIZE *) dest;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *) & data;
- ulong start;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile FLASH_WORD_SIZE *) dest) &
- (FLASH_WORD_SIZE) data) != (FLASH_WORD_SIZE) data) {
- return (2);
- }
-
- for (i = 0; i < 4 / sizeof (FLASH_WORD_SIZE); i++) {
- int flag;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE) 0x00800080)) {
-
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
diff --git a/board/jse/host_bridge.c b/board/jse/host_bridge.c
deleted file mode 100644
index 363be97a59..0000000000
--- a/board/jse/host_bridge.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2004 Picture Elements, Inc.
- * Stephen Williams (steve@icarus.com)
- *
- * This source code is free software; you can redistribute it
- * and/or modify it in source code form 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
- */
-#ident "$Id:$"
-
-# include <common.h>
-# include <pci.h>
-# include "jse_priv.h"
-
-/*
- * The JSE board has an Intel 21555 non-transparent bridge for
- * communication with the host. We need to render it harmless on the
- * JSE side, but leave it alone on the host (primary) side. Normally,
- * this will all be done before the host BIOS can gain access to the
- * board, due to the Primary Access Lockout bit.
- *
- * The host_bridge_init function is called as a late initialization
- * function, after most of the board is set up, including a PCI scan.
- */
-
-void host_bridge_init (void)
-{
- /* The bridge chip is at a fixed location. */
- pci_dev_t dev = PCI_BDF (0, 10, 0);
-
- /* Set PCI Class code --
- The primary side sees this class code at 0x08 in the
- primary config space. This must be something other then a
- bridge, or MS Windows starts doing weird stuff to me. */
- pci_write_config_dword (dev, 0x48, 0x04800000);
-
- /* Set subsystem ID --
- The primary side sees this value at 0x2c. We set it here so
- that the host can tell what sort of device this is:
- We are a Picture Elements [0x12c5] JSE [0x008a]. */
- pci_write_config_dword (dev, 0x6c, 0x008a12c5);
-
- /* Downstream (Primary-to-Secondary) BARs are set up mostly
- off. We need only the Memory-0 Bar so that the host can get
- at the CSR region to set up tables and the lot. */
-
- /* Downstream Memory 0 setup (4K for CSR) */
- pci_write_config_dword (dev, 0xac, 0xfffff000);
- /* Downstream Memory 1 setup (off) */
- pci_write_config_dword (dev, 0xb0, 0x00000000);
- /* Downstream Memory 2 setup (off) */
- pci_write_config_dword (dev, 0xb4, 0x00000000);
- /* Downstream Memory 3 setup (off) */
- pci_write_config_dword (dev, 0xb8, 0x00000000);
-
- /* Upstream (Secondary-to-Primary) BARs are used to get at
- host memory from the JSE card. Create two regions: a small
- one to manage individual word reads/writes, and a larger
- one for doing bulk frame moves. */
-
- /* Upstream Memory 0 Setup -- (BAR2) 4K non-prefetchable */
- pci_write_config_dword (dev, 0xc4, 0xfffff000);
- /* Upstream Memory 1 setup -- (BAR3) 4K non-prefetchable */
- pci_write_config_dword (dev, 0xc8, 0xfffff000);
-
- /* Upstream Memory 2 (BAR4) uses page translation, and is set
- up in CCR1. Configure for 4K pages. */
-
- /* Set CCR1,0 reigsters. This clears the Primary PCI Lockout
- bit as well, so we are done configuring after this
- point. Therefore, this must be the last step.
-
- CC1[15:12]= 0 (disable I2O message unit)
- CC1[11:8] = 0x5 (4K page size)
- CC0[11] = 1 (Secondary Clock Disable: disable clock)
- CC0[10] = 0 (Primary Access Lockout: allow primary access)
- */
- pci_write_config_dword (dev, 0xcc, 0x05000800);
-}
diff --git a/board/jse/init.S b/board/jse/init.S
deleted file mode 100644
index 231cd1caf5..0000000000
--- a/board/jse/init.S
+++ /dev/null
@@ -1,105 +0,0 @@
-/*------------------------------------------------------------------------+ */
-/* */
-/* This source code has been made available to you by IBM on an AS-IS */
-/* basis. Anyone receiving this source is licensed under IBM */
-/* copyrights to use it in any way he or she deems fit, including */
-/* copying it, modifying it, compiling it, and redistributing it either */
-/* with or without modifications. No license under IBM patents or */
-/* patent applications is to be implied by the copyright license. */
-/* */
-/* Any user of this software should understand that IBM cannot provide */
-/* technical support for this software and will not be responsible for */
-/* any consequences resulting from the use of this software. */
-/* */
-/* Any person who transfers this source code or any derivative work */
-/* must include the IBM copyright notice, this paragraph, and the */
-/* preceding two paragraphs in the transferred software. */
-/* */
-/* COPYRIGHT I B M CORPORATION 1995 */
-/* LICENSED MATERIAL - PROGRAM PROPERTY OF I B M */
-/*------------------------------------------------------------------------- */
-
-/*------------------------------------------------------------------------- */
-/* Function: ext_bus_cntlr_init */
-/* Description: Initializes the External Bus Controller for the external */
-/* peripherals. IMPORTANT: For pass1 this code must run from */
-/* cache since you can not reliably change a peripheral banks */
-/* timing register (pbxap) while running code from that bank. */
-/* For ex., since we are running from ROM on bank 0, we can NOT */
-/* execute the code that modifies bank 0 timings from ROM, so */
-/* we run it from cache. */
-/* */
-/* */
-/* The layout for the PEI JSE board: */
-/* Bank 0 - Flash and SRAM */
-/* Bank 1 - SystemACE */
-/* Bank 2 - not used */
-/* Bank 3 - not used */
-/* Bank 4 - not used */
-/* Bank 5 - not used */
-/* Bank 6 - not used */
-/* Bank 7 - not used */
-/*------------------------------------------------------------------------- */
-#include <ppc4xx.h>
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-#define cpc0_cr0 0xB1
-
- .globl ext_bus_cntlr_init
-ext_bus_cntlr_init:
- mflr r4 /* save link register */
- bl ..getAddr
-..getAddr:
- mflr r3 /* get address of ..getAddr */
- mtlr r4 /* restore link register */
- addi r4,0,14 /* set ctr to 10; used to prefetch */
- mtctr r4 /* 10 cache lines to fit this function */
- /* in cache (gives us 8x10=80 instrctns) */
-..ebcloop:
- icbt r0,r3 /* prefetch cache line for addr in r3 */
- addi r3,r3,32 /* move to next cache line */
- bdnz ..ebcloop /* continue for 10 cache lines */
-
- /*----------------------------------------------------------------- */
- /* Delay to ensure all accesses to ROM are complete before changing */
- /* bank 0 timings. 200usec should be enough. */
- /* 200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles */
- /*----------------------------------------------------------------- */
- addis r3,0,0x0
- ori r3,r3,0xA000 /* ensure 200usec have passed since reset */
- mtctr r3
-..spinlp:
- bdnz ..spinlp /* spin loop */
-
- /*----------------------------------------------------------------- */
- /* Memory Bank 0 (Flash) initialization */
- /*----------------------------------------------------------------- */
-
- addi r4,0,pb0ap
- mtdcr ebccfga,r4
- addis r4,0,0x9B01
- ori r4,r4,0x5480
- mtdcr ebccfgd,r4
-
- addi r4,0,pb0cr
- mtdcr ebccfga,r4
- addis r4,0,0xFFF1 /* BAS=0xFFF,BS=0x0(1MB),BU=0x3(R/W), */
- ori r4,r4,0x8000 /* BW=0x0( 8 bits) */
- mtdcr ebccfgd,r4
-
- blr
-
-
-/*----------------------------------------------------------------------- */
-/* Function: sdram_init */
-/* Description: This function is called by cpu/ppc4xx/start.S code */
-/* to get the SDRAM initialized. */
-/*----------------------------------------------------------------------- */
- .globl sdram_init
-sdram_init:
- blr
diff --git a/board/jse/jse.c b/board/jse/jse.c
deleted file mode 100644
index 9290814685..0000000000
--- a/board/jse/jse.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (c) 2004 Picture Elements, Inc.
- * Stephen Williams (steve@icarus.com)
- *
- * This source code is free software; you can redistribute it
- * and/or modify it in source code form 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 <common.h>
-# include <ppc4xx.h>
-# include <asm/processor.h>
-# include <asm/io.h>
-# include "jse_priv.h"
-
-/*
- * This function is run very early, out of flash, and before devices are
- * initialized. It is called by lib_ppc/board.c:board_init_f by virtue
- * of being in the init_sequence array.
- *
- * The SDRAM has been initialized already -- start.S:start called
- * init.S:init_sdram early on -- but it is not yet being used for
- * anything, not even stack. So be careful.
- */
-int board_early_init_f (void)
-{
- /*-------------------------------------------------------------------------+
- | Interrupt controller setup for the JSE board.
- | Note: IRQ 0-15 405GP internally generated; active high; level sensitive
- | IRQ 16 405GP internally generated; active low; level sensitive
- | IRQ 17-24 RESERVED/UNUSED
- | IRQ 25 (EXT IRQ 0) PCI SLOT 0; active low; level sensitive
- | IRQ 26 (EXT IRQ 1) PCI SLOT 1; active low; level sensitive
- | IRQ 27 (EXT IRQ 2) JP2C CHIP ; active low; level sensitive
- | IRQ 28 (EXT IRQ 3) PCI bridge; active low; level sensitive
- | IRQ 29 (EXT IRQ 4) SystemACE IRQ; active high
- | IRQ 30 (EXT IRQ 5) SystemACE BRdy (unused)
- | IRQ 31 (EXT IRQ 6) (unused)
- +-------------------------------------------------------------------------*/
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
- mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
- mtdcr (uicpr, 0xFFFFFF87); /* set int polarities */
- mtdcr (uictr, 0x10000000); /* set int trigger levels */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /* Configure the interface to the SystemACE MCU port.
- The SystemACE is fast, but there is no reason to have
- excessivly tight timings. So the settings are slightly
- generous. */
-
- /* EBC0_B1AP: BME=1, TWT=2, CSN=0, OEN=1,
- WBN=0, WBF=1, TH=0, RE=0, SOR=0, BEM=0, PEN=0 */
- mtdcr (ebccfga, pb1ap);
- mtdcr (ebccfgd, 0x01011000);
-
- /* EBC0_B1CR: BAS=x, BS=0(1MB), BU=3(R/W), BW=0(8bits) */
- mtdcr (ebccfga, pb1cr);
- mtdcr (ebccfgd, CFG_SYSTEMACE_BASE | 0x00018000);
-
- /* Enable the /PerWE output as /PerWE, instead of /PCIINT. */
- /* CPC0_CR1 |= PCIPW */
- mtdcr (0xb2, mfdcr (0xb2) | 0x00004000);
-
- return 0;
-}
-
-#ifdef CONFIG_BOARD_PRE_INIT
-int board_pre_init (void)
-{
- return board_early_init_f ();
-}
-
-#endif
-
-/*
- * This function is also called by lib_ppc/board.c:board_init_f (it is
- * also in the init_sequence array) but later. Many more things are
- * configured, but we are still running from flash.
- */
-int checkboard (void)
-{
- unsigned vers, status;
-
- /* check that the SystemACE chip is alive. */
- printf ("ACE: ");
- vers = readw (CFG_SYSTEMACE_BASE + 0x16);
- printf ("SystemACE %u.%u (build %u)",
- (vers >> 12) & 0x0f, (vers >> 8) & 0x0f, vers & 0xff);
-
- status = readl (CFG_SYSTEMACE_BASE + 0x04);
-#ifdef DEBUG
- printf (" STATUS=0x%08x", status);
-#endif
- /* If the flash card is present and there is an initial error,
- then force a restart of the program. */
- if (status & 0x00000010) {
- printf (" CFDETECT");
-
- if (status & 0x04) {
- /* CONTROLREG = CFGPROG */
- writew (0x1000, CFG_SYSTEMACE_BASE + 0x18);
- udelay (500);
- /* CONTROLREG = CFGRESET */
- writew (0x0080, CFG_SYSTEMACE_BASE + 0x18);
- udelay (500);
- writew (0x0000, CFG_SYSTEMACE_BASE + 0x18);
- /* CONTROLREG = CFGSTART */
- writew (0x0020, CFG_SYSTEMACE_BASE + 0x18);
-
- status = readl (CFG_SYSTEMACE_BASE + 0x04);
- }
- }
-
- /* Wait for the SystemACE to program its chain of devices. */
- while ((status & 0x84) == 0x00) {
- udelay (500);
- status = readl (CFG_SYSTEMACE_BASE + 0x04);
- }
-
- if (status & 0x04)
- printf (" CFG-ERROR");
- if (status & 0x80)
- printf (" CFGDONE");
-
- printf ("\n");
-
- /* Force /RTS to active. The board it not wired quite
- correctly to use cts/rtc flow control, so just force the
- /RST active and forget about it. */
- writeb (readb (0xef600404) | 0x03, 0xef600404);
-
- printf ("JSE: ready\n");
-
- return 0;
-}
-
-/* **** No more functions called by board_init_f. **** */
-
-/*
- * This function is called by lib_ppc/board.c:board_init_r. At this
- * point, basic setup is done, U-Boot has been moved into SDRAM and
- * PCI has been set up. From here we done late setup.
- */
-int misc_init_r (void)
-{
- host_bridge_init ();
- return 0;
-}
diff --git a/board/jse/jse_priv.h b/board/jse/jse_priv.h
deleted file mode 100644
index ed4894b939..0000000000
--- a/board/jse/jse_priv.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef __jse_priv_H
-#define __jse_prov_H
-/*
- * Copyright (c) 2004 Picture Elements, Inc.
- * Stephen Williams (steve@icarus.com)
- *
- * This source code is free software; you can redistribute it
- * and/or modify it in source code form 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
- */
-
-extern void host_bridge_init(void);
-
-#endif
diff --git a/board/jse/sdram.c b/board/jse/sdram.c
deleted file mode 100644
index 9060d979d0..0000000000
--- a/board/jse/sdram.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (c) 2004 Picture Elements, Inc.
- * Stephen Williams (steve@icarus.com)
- *
- * This source code is free software; you can redistribute it
- * and/or modify it in source code form 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 <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-# define SDRAM_LEN 0x08000000
-
-/*
- * this is even after checkboard. It returns the size of the SDRAM
- * that we have installed. This function is called by board_init_f
- * in lib_ppc/board.c to initialize the memory and return what I
- * found.
- */
-long int initdram (int board_type)
-{
- /* Configure the SDRAMS */
-
- /* disable memory controller */
- mtdcr (memcfga, mem_mcopt1);
- mtdcr (memcfgd, 0x00000000);
-
- udelay (500);
-
- /* Clear SDRAM0_BESR0 (Bus Error Syndrome Register) */
- mtdcr (memcfga, mem_besra);
- mtdcr (memcfgd, 0xffffffff);
-
- /* Clear SDRAM0_BESR1 (Bus Error Syndrome Register) */
- mtdcr (memcfga, mem_besrb);
- mtdcr (memcfgd, 0xffffffff);
-
- /* Clear SDRAM0_ECCCFG (disable ECC) */
- mtdcr (memcfga, mem_ecccf);
- mtdcr (memcfgd, 0x00000000);
-
- /* Clear SDRAM0_ECCESR (ECC Error Syndrome Register) */
- mtdcr (memcfga, mem_eccerr);
- mtdcr (memcfgd, 0xffffffff);
-
- /* Timing register: CASL=2, PTA=2, CTP=2, LDF=1, RFTA=5, RCD=2 */
- mtdcr (memcfga, mem_sdtr1);
- mtdcr (memcfgd, 0x010a4016);
-
- /* Memory Bank 0 Config == BA=0x00000000, SZ=64M, AM=3, BE=1 */
- mtdcr (memcfga, mem_mb0cf);
- mtdcr (memcfgd, 0x00084001);
-
- /* Memory Bank 1 Config == BA=0x04000000, SZ=64M, AM=3, BE=1 */
- mtdcr (memcfga, mem_mb1cf);
- mtdcr (memcfgd, 0x04084001);
-
- /* Memory Bank 2 Config == BE=0 */
- mtdcr (memcfga, mem_mb2cf);
- mtdcr (memcfgd, 0x00000000);
-
- /* Memory Bank 3 Config == BE=0 */
- mtdcr (memcfga, mem_mb3cf);
- mtdcr (memcfgd, 0x00000000);
-
- /* refresh timer = 0x400 */
- mtdcr (memcfga, mem_rtr);
- mtdcr (memcfgd, 0x04000000);
-
- /* Power management idle timer set to the default. */
- mtdcr (memcfga, mem_pmit);
- mtdcr (memcfgd, 0x07c00000);
-
- udelay (500);
-
- /* Enable banks (DCE=1, BPRF=1, ECCDD=1, EMDUL=1) */
- mtdcr (memcfga, mem_mcopt1);
- mtdcr (memcfgd, 0x80e00000);
-
- return SDRAM_LEN;
-}
-
-/*
- * The U-Boot core, as part of the initialization to prepare for
- * loading the monitor into SDRAM, requests of this function that the
- * memory be tested. Return 0 if the memory tests OK.
- */
-int testdram (void)
-{
- unsigned long idx;
- unsigned val;
- unsigned errors;
- volatile unsigned long *sdram;
-
-#ifdef DEBUG
- printf ("SDRAM Controller Registers --\n");
-
- mtdcr (memcfga, mem_mcopt1);
- val = mfdcr (memcfgd);
- printf (" SDRAM0_CFG : 0x%08x\n", val);
-
- mtdcr (memcfga, 0x24);
- val = mfdcr (memcfgd);
- printf (" SDRAM0_STATUS: 0x%08x\n", val);
-
- mtdcr (memcfga, mem_mb0cf);
- val = mfdcr (memcfgd);
- printf (" SDRAM0_B0CR : 0x%08x\n", val);
-
- mtdcr (memcfga, mem_mb1cf);
- val = mfdcr (memcfgd);
- printf (" SDRAM0_B1CR : 0x%08x\n", val);
-
- mtdcr (memcfga, mem_sdtr1);
- val = mfdcr (memcfgd);
- printf (" SDRAM0_TR : 0x%08x\n", val);
-
- mtdcr (memcfga, mem_rtr);
- val = mfdcr (memcfgd);
- printf (" SDRAM0_RTR : 0x%08x\n", val);
-#endif
-
- /* Wait for memory to be ready by testing MRSCMPbit
- bit. Really, there should already have been plenty of time,
- given it was started long ago. But, best to check. */
- for (idx = 0; idx < 1000000; idx += 1) {
- mtdcr (memcfga, 0x24);
- val = mfdcr (memcfgd);
- if (val & 0x80000000)
- break;
- }
-
- if (!(val & 0x80000000)) {
- printf ("SDRAM ERROR: SDRAM0_STATUS never set!\n");
- return 1;
- }
-
- /* Start memory test. */
- printf ("test: %u MB - ", SDRAM_LEN / 1048576);
-
- sdram = (unsigned long *) CFG_SDRAM_BASE;
-
- printf ("write - ");
- for (idx = 2; idx < SDRAM_LEN / 4; idx += 2) {
- sdram[idx + 0] = idx;
- sdram[idx + 1] = ~idx;
- }
-
- printf ("read - ");
- errors = 0;
- for (idx = 2; idx < SDRAM_LEN / 4; idx += 2) {
- if (sdram[idx + 0] != idx)
- errors += 1;
- if (sdram[idx + 1] != ~idx)
- errors += 1;
- if (errors > 0)
- break;
- }
-
- if (errors > 0) {
- printf ("NOT OK\n");
- printf ("FIRST ERROR at %p: 0x%08lx:0x%08lx != 0x%08lx:0x%08lx\n",
- sdram + idx, sdram[idx + 0], sdram[idx + 1], idx, ~idx);
- return 1;
- }
-
- printf ("ok\n");
- return 0;
-}
diff --git a/board/jse/u-boot.lds b/board/jse/u-boot.lds
deleted file mode 100644
index 60c111539d..0000000000
--- a/board/jse/u-boot.lds
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 : {
- /* The start.o file includes the initial jump vector that
- must be located in the beginning. It is the basic run-
- time function that calls all other functions. */
- cpu/ppc4xx/start.o (.text)
-
- board/jse/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/kup/common/flash.c b/board/kup/common/flash.c
deleted file mode 100644
index 903c88f06c..0000000000
--- a/board/kup/common/flash.c
+++ /dev/null
@@ -1,515 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 <common.h>
-#include <mpc8xx.h>
-
-#ifndef CFG_ENV_ADDR
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-#endif
-
-#define CONFIG_FLASH_16BIT
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V | BR_PS_16;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- vu_short *s_addr=(vu_short*)addr;
- s_addr[0x5555] = 0x00AA;
- s_addr[0x2AAA] = 0x0055;
- s_addr[0x5555] = 0x0090;
-
- value = s_addr[0];
- value = value|(value<<16);
-
- switch (value) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = s_addr[1];
- value = value|(value<<16);
-
- switch (value) {
- case FUJI_ID_29F800BA:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
-
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- s_addr = (volatile unsigned short *)(info->start[i]);
- info->protect[i] = s_addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- s_addr = (volatile unsigned short *)info->start[0];
- *s_addr = 0x00F0; /* reset bank */
- }
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect;
- ulong start, now, last;
-#ifdef CONFIG_FLASH_16BIT
- vu_short *s_addr = (vu_short*)addr;
-#endif
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-/*#ifndef CONFIG_FLASH_16BIT
- ulong type;
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_SST) && (type != FLASH_MAN_STM)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return;
- }
-#endif*/
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
-#ifdef CONFIG_FLASH_16BIT
- vu_short *s_sect_addr = (vu_short*)(info->start[sect]);
-#else
- vu_long *sect_addr = (vu_long*)(info->start[sect]);
-#endif
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
-#ifdef CONFIG_FLASH_16BIT
-
- /*printf("\ns_sect_addr=%x",s_sect_addr);*/
- s_addr[0x5555] = 0x00AA;
- s_addr[0x2AAA] = 0x0055;
- s_addr[0x5555] = 0x0080;
- s_addr[0x5555] = 0x00AA;
- s_addr[0x2AAA] = 0x0055;
- s_sect_addr[0] = 0x0030;
-#else
- addr[0x5555] = 0x00AA00AA;
- addr[0x2AAA] = 0x00550055;
- addr[0x5555] = 0x00800080;
- addr[0x5555] = 0x00AA00AA;
- addr[0x2AAA] = 0x00550055;
- sect_addr[0] = 0x00300030;
-#endif
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
-#ifdef CONFIG_FLASH_16BIT
- while ((s_sect_addr[0] & 0x0080) != 0x0080) {
-#else
- while ((sect_addr[0] & 0x00800080) != 0x00800080) {
-#endif
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- }
- }
-
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
-#ifdef CONFIG_FLASH_16BIT
- s_addr[0] = 0x00F0; /* reset bank */
-#else
- addr[0] = 0x00F000F0; /* reset bank */
-#endif
-
- printf (" done\n");
- return 0;
-}
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
-
-#ifdef CONFIG_FLASH_16BIT
- vu_short high_data;
- vu_short low_data;
- vu_short *s_addr = (vu_short*)addr;
-#endif
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
-#ifdef CONFIG_FLASH_16BIT
- /* Write the 16 higher-bits */
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- high_data = ((data>>16) & 0x0000ffff);
-
- s_addr[0x5555] = 0x00AA;
- s_addr[0x2AAA] = 0x0055;
- s_addr[0x5555] = 0x00A0;
-
- *((vu_short *)dest) = high_data;
-
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_short *)dest) & 0x0080) != (high_data & 0x0080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
-
- /* Write the 16 lower-bits */
-#endif
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-#ifdef CONFIG_FLASH_16BIT
- dest += 0x2;
- low_data = (data & 0x0000ffff);
-
- s_addr[0x5555] = 0x00AA;
- s_addr[0x2AAA] = 0x0055;
- s_addr[0x5555] = 0x00A0;
- *((vu_short *)dest) = low_data;
-
-#else
- addr[0x5555] = 0x00AA00AA;
- addr[0x2AAA] = 0x00550055;
- addr[0x5555] = 0x00A000A0;
- *((vu_long *)dest) = data;
-#endif
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
-
-#ifdef CONFIG_FLASH_16BIT
- while ((*((vu_short *)dest) & 0x0080) != (low_data & 0x0080)) {
-#else
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
-#endif
-
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/kup/common/kup.c b/board/kup/common/kup.c
deleted file mode 100644
index d018e3cc5d..0000000000
--- a/board/kup/common/kup.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * (C) Copyright 2004
- * Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.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 <common.h>
-#include <mpc8xx.h>
-#include "kup.h"
-
-int misc_init_f (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile sysconf8xx_t *siu = &immap->im_siu_conf;
-
- while (siu->sc_sipend & 0x20000000) {
- /* printf("waiting for 5V VCC\n"); */
- ;
- }
-
- /* RS232 / RS485 default is RS232 */
- immap->im_ioport.iop_padat &= ~(PA_RS485);
- immap->im_ioport.iop_papar &= ~(PA_RS485);
- immap->im_ioport.iop_paodr &= ~(PA_RS485);
- immap->im_ioport.iop_padir |= (PA_RS485);
- return (0);
-}
-
-
-#ifdef CONFIG_IDE_LED
-void ide_led (uchar led, uchar status)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
-
- /* We have one led for both pcmcia slots */
- if (status) { /* led on */
- immap->im_ioport.iop_padat &= ~(PA_LED_YELLOW);
- } else {
- immap->im_ioport.iop_padat |= (PA_LED_YELLOW);
- }
-}
-#endif
-
-void poweron_key (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
-
- immap->im_ioport.iop_pcpar &= ~(PC_SWITCH1);
- immap->im_ioport.iop_pcdir &= ~(PC_SWITCH1);
-
- if (immap->im_ioport.iop_pcdat & (PC_SWITCH1))
- setenv ("key1", "off");
- else
- setenv ("key1", "on");
-}
-
-#ifdef CONFIG_POST
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed (void)
-{
- return (0);
-}
-#endif
diff --git a/board/kup/common/kup.h b/board/kup/common/kup.h
deleted file mode 100644
index 70d7f01e68..0000000000
--- a/board/kup/common/kup.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (C) Copyright 2004
- * Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.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 __KUP_H
-#define __KUP_H
-
-#define PA_8 0x0080
-#define PA_11 0x0010
-#define PA_12 0x0008
-
-#define PB_14 0x00020000
-#define PB_17 0x00004000
-
-#define PC_9 0x0040
-
-#define PA_RS485 PA_11 /* SCC1: 0=RS232 1=RS485 */
-#define PA_LED_YELLOW PA_8
-#define BP_USB_VCC PB_14 /* VCC for USB devices 0=vcc on, 1=vcc off*/
-#define PB_LCD_PWM PB_17 /* PB 17 */
-#define PC_SWITCH1 PC_9 /* Reboot switch */
-
-extern void poweron_key (void);
-
-#endif /* __KUP_H */
diff --git a/board/kup/common/load_sernum_ethaddr.c b/board/kup/common/load_sernum_ethaddr.c
deleted file mode 100644
index b7b7499857..0000000000
--- a/board/kup/common/load_sernum_ethaddr.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 <common.h>
-#include <mpc8xx.h>
-
-/*-----------------------------------------------------------------------
- * Process Hardware Information Block:
- *
- * If we boot on a system fresh from factory, check if the Hardware
- * Information Block exists and save the information it contains.
- *
- * The KUP Hardware Information Block is defined as
- * follows:
- * - located in first flash bank
- * - starts at offset CFG_HWINFO_OFFSET
- * - size CFG_HWINFO_SIZE
- *
- * Internal structure:
- * - sequence of ASCII character lines
- * - fields separated by <CR><LF>
- * - last field terminated by NUL character (0x00)
- *
- * Fields in Hardware Information Block:
- * 1) Module Type
- * 2) MAC Address
- * 3) ....
- */
-
-
-#define ETHADDR_TOKEN "ethaddr="
-#define LCD_TOKEN "lcd="
-
-void load_sernum_ethaddr (void)
-{
- unsigned char *hwi;
- char *var;
- unsigned char hwi_stack[CFG_HWINFO_SIZE];
- char *p;
-
- hwi = (unsigned char *) (CFG_FLASH_BASE + CFG_HWINFO_OFFSET);
- if (*((unsigned long *) hwi) != (unsigned long) CFG_HWINFO_MAGIC) {
- printf ("HardwareInfo not found!\n");
- return;
- }
- memcpy (hwi_stack, hwi, CFG_HWINFO_SIZE);
-
- /*
- ** ethaddr
- */
- var = strstr ((char *)hwi_stack, ETHADDR_TOKEN);
- if (var) {
- var += sizeof (ETHADDR_TOKEN) - 1;
- p = strchr (var, '\r');
- if ((unsigned char *)p < hwi + CFG_HWINFO_SIZE) {
- *p = '\0';
- setenv ("ethaddr", var);
- *p = '\r';
- }
- }
- /*
- ** lcd
- */
- var = strstr ((char *)hwi_stack, LCD_TOKEN);
- if (var) {
- var += sizeof (LCD_TOKEN) - 1;
- p = strchr (var, '\r');
- if ((unsigned char *)p < hwi + CFG_HWINFO_SIZE) {
- *p = '\0';
- setenv ("lcd", var);
- *p = '\r';
- }
- }
-}
diff --git a/board/kup/common/pcmcia.c b/board/kup/common/pcmcia.c
deleted file mode 100644
index 1f61a0ecd1..0000000000
--- a/board/kup/common/pcmcia.c
+++ /dev/null
@@ -1,225 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#undef CONFIG_PCMCIA
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-#define CONFIG_PCMCIA
-#endif
-
-#if (CONFIG_COMMANDS & CFG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-#define PCMCIA_BOARD_MSG "KUP"
-
-#define KUP4K_PCMCIA_B_3V3 (0x00020000)
-
-int pcmcia_hardware_enable(int slot)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- volatile sysconf8xx_t *sysp;
- uint reg, mask;
-
- debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- udelay(10000);
-
- immap = (immap_t *)CFG_IMMR;
- sysp = (sysconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_siu_conf));
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
-
- /*
- * Configure SIUMCR to enable PCMCIA port B
- * (VFLS[0:1] are not used for debugging, we connect FRZ# instead)
- */
- sysp->sc_siumcr &= ~SIUMCR_DBGC11; /* set DBGC to 00 */
-
- /* clear interrupt state, and disable interrupts */
- pcmp->pcmc_pscr = PCMCIA_MASK(slot);
- pcmp->pcmc_per &= ~PCMCIA_MASK(slot);
-
- /*
- * Disable interrupts, DMA, and PCMCIA buffers
- * (isolate the interface) and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(slot) = reg;
- udelay(2500);
-
- /*
- * Configure Port B pins for
- * 3 Volts enable
- */
- if (slot) { /* Slot A is built-in */
- cp->cp_pbdir |= KUP4K_PCMCIA_B_3V3;
- cp->cp_pbpar &= ~KUP4K_PCMCIA_B_3V3;
- /* remove all power */
- cp->cp_pbdat |= KUP4K_PCMCIA_B_3V3; /* active low */
- }
- /*
- * Make sure there is a card in the slot, then configure the interface.
- */
- udelay(10000);
- debug ("[%d] %s: PIPR(%p)=0x%x\n",
- __LINE__,__FUNCTION__,
- &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
- if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
- printf (" No Card found\n");
- return (1);
- }
-
- /*
- * Power On.
- */
- printf("%s Slot %c:", slot ? "" : "\n", 'A' + slot);
- mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot);
- reg = pcmp->pcmc_pipr;
- debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",
- reg,
- (reg&PCMCIA_VS1(slot))?"n":"ff",
- (reg&PCMCIA_VS2(slot))?"n":"ff");
- if ((reg & mask) == mask) {
- puts (" 5.0V card found: NOT SUPPORTED !!!\n");
- } else {
- if(slot)
- cp->cp_pbdat &= ~KUP4K_PCMCIA_B_3V3;
- puts (" 3.3V card found: ");
- }
-#if 0
- /* VCC switch error flag, PCMCIA slot INPACK_ pin */
- cp->cp_pbdir &= ~(0x0020 | 0x0010);
- cp->cp_pbpar &= ~(0x0020 | 0x0010);
- udelay(500000);
-#endif
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(slot);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(slot) = reg;
-
- udelay(250000); /* some cards need >150 ms to come up :-( */
-
- debug ("# hardware_enable done\n");
-
- return (0);
-}
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
-
- debug ("hardware_disable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- immap = (immap_t *)CFG_IMMR;
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
-
- /* remove all power */
- if (slot)
- cp->cp_pbdat |= KUP4K_PCMCIA_B_3V3;
-
- /* Configure PCMCIA General Control Register */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(slot) = reg;
-
- udelay(10000);
-
- return (0);
-}
-#endif /* CFG_CMD_PCMCIA */
-
-
-int pcmcia_voltage_set(int slot, int vcc, int vpp)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
-
- debug ("voltage_set: " \
- PCMCIA_BOARD_MSG \
- " Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",
- 'A'+slot, vcc/10, vcc%10, vpp/10, vcc%10);
-
- if (!slot) /* Slot A is not configurable */
- return 0;
-
- immap = (immap_t *)CFG_IMMR;
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
-
- /*
- * Disable PCMCIA buffers (isolate the interface)
- * and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = PCMCIA_PGCRX(slot);
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(slot) = reg;
- udelay(500);
-
- debug ("PCMCIA power OFF\n");
- /*
- * Configure Port B pins for
- * 3 Volts enable
- */
- cp->cp_pbdir |= KUP4K_PCMCIA_B_3V3;
- cp->cp_pbpar &= ~KUP4K_PCMCIA_B_3V3;
- /* remove all power */
- cp->cp_pbdat |= KUP4K_PCMCIA_B_3V3; /* active low */
-
- switch(vcc) {
- case 0: break;
- case 33:
- cp->cp_pbdat &= ~KUP4K_PCMCIA_B_3V3;
- debug ("PCMCIA powered at 3.3V\n");
- break;
- case 50:
- debug ("PCMCIA: 5Volt vcc not supported\n");
- break;
- default:
- puts("PCMCIA: vcc not supported");
- break;
- }
- udelay(10000);
- /* Checking supported voltages */
-
- debug ("PIPR: 0x%x --> %s\n",
- pcmp->pcmc_pipr,
- (pcmp->pcmc_pipr & (0x80000000 >> (slot << 4)))
- ? "only 5 V --> NOT SUPPORTED"
- : "can do 3.3V");
-
-
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(slot);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(slot) = reg;
- udelay(500);
-
- debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",
- slot+'A');
- return (0);
-}
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/lantec/Makefile b/board/lantec/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/lantec/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/lantec/config.mk b/board/lantec/config.mk
deleted file mode 100644
index 05ea3b9140..0000000000
--- a/board/lantec/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# Lantec board (based on TQM8xxL config).
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/lantec/flash.c b/board/lantec/flash.c
deleted file mode 100644
index 0faa82cba4..0000000000
--- a/board/lantec/flash.c
+++ /dev/null
@@ -1,625 +0,0 @@
-/*
- * (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
- */
-
-/*
- * Derived from ../tqm8xx/flash.c
- * [Torsten Stevens, FHG IMS; Bruno Achauer, Exet AG]
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- DEBUGF("\n## Get flash bank 1 size @ 0x%08x\n",FLASH_BASE0_PRELIM);
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0: "
- "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
- flash_info[0].flash_id,
- size_b0, size_b0<<20);
- }
-
- DEBUGF("## Get flash bank 2 size @ 0x%08x\n",FLASH_BASE5_PRELIM);
-
- size_b1 = flash_get_size((vu_long *)FLASH_BASE5_PRELIM, &flash_info[1]);
-
- DEBUGF("## Prelim. Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-
- DEBUGF ("## Before remap: "
- "BR0: 0x%08x OR0: 0x%08x "
- "BR1: 0x%08x OR1: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0,
- memctl->memc_br1, memctl->memc_or1);
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | \
- BR_MS_GPCM | BR_PS_32 | BR_V;
-
- DEBUGF("## BR0: 0x%08x OR0: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0);
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- memctl->memc_or5 = CFG_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
- memctl->memc_br5 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_MS_GPCM | BR_PS_32 | BR_V;
-
- DEBUGF("## BR5: 0x%08x OR5: 0x%08x\n",
- memctl->memc_br5, memctl->memc_or5);
-
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(CFG_FLASH_BASE + size_b0),
- &flash_info[1]);
-
- flash_info[1].size = size_b1;
-
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[1]);
-#endif
- } else {
- memctl->memc_br5 = 0; /* invalidate bank */
- memctl->memc_or5 = 0; /* invalidate bank */
-
- DEBUGF("## DISABLE BR5: 0x%08x OR5: 0x%08x\n",
- memctl->memc_br5, memctl->memc_or5);
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- flash_info[1].size = 0;
- }
-
- DEBUGF("## Final Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-
- value = addr[0];
-
- switch (value) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ((addr[0] & 0x00800080) != 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/lantec/lantec.c b/board/lantec/lantec.c
deleted file mode 100644
index 417dbbb05b..0000000000
--- a/board/lantec/lantec.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * (C) Copyright 2001
- * Torsten Stevens, FHG IMS, stevens@ims.fhg.de
- * Bruno Achauer, Exet AG, bruno@exet-ag.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
- */
-
-/*
- * Derived from ../tqm8xx/tqm8xx.c
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] = {
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00,
- 0x1ff77c47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1ff77c35, 0xefeabc34, 0x1fb57c35, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
- 0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1f07fc04, 0xeeaebc00, 0x10ad7c00, 0xf0affc00,
- 0xf0affc00, 0xe1bbbc04, 0x1ff77c47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc84, 0xfffffc07, 0xfffffc07, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x7ffffc07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Test TQ ID string (TQM8xx...)
- * If present, check for "L" type (no second DRAM bank),
- * otherwise "L" type is assumed as default.
- *
- * Return 1 for "L" type, 0 else.
- */
-
-int checkboard (void)
-{
- printf ("Board: Lantec special edition rev.%d\n", CONFIG_LANTEC);
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size_b0;
- int i;
-
- /*
- * Configure UPMA for SDRAM
- */
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- memctl->memc_mptpr = CFG_MPTPR_1BK_8K /* XXX CFG_MPTPR XXX */ ;
-
- /* burst length=4, burst type=sequential, CAS latency=2 */
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller bank 3 to the SDRAM bank at preliminary address.
- */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
-
- /* initialize memory address register */
- memctl->memc_mamr = CFG_MAMR_8COL; /* refresh not enabled yet */
-
- /* mode initialization (offset 5) */
- udelay (200); /* 0x80006105 */
- memctl->memc_mcr =
- MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x05);
-
- /* run 2 refresh sequence with 4-beat refresh burst (offset 0x30) */
- udelay (1); /* 0x80006130 */
- memctl->memc_mcr =
- MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x30);
- udelay (1); /* 0x80006130 */
- memctl->memc_mcr =
- MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x30);
-
- udelay (1); /* 0x80006106 */
- memctl->memc_mcr =
- MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x06);
-
- memctl->memc_mamr |= MAMR_PTAE; /* refresh enabled */
-
- udelay (200);
-
- /* Need at least 10 DRAM accesses to stabilize */
- for (i = 0; i < 10; ++i) {
- volatile unsigned long *addr =
- (volatile unsigned long *) SDRAM_BASE3_PRELIM;
- unsigned long val;
-
- val = *(addr + i);
- *(addr + i) = val;
- }
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- */
- size_b0 = dram_size (CFG_MAMR_8COL,
- (long *) SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
-
- memctl->memc_mamr = CFG_MAMR_8COL | MAMR_PTAE;
-
- /*
- * Final mapping:
- */
-
- memctl->memc_or3 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br3 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
- udelay (1000);
-
- return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size (base, maxsize));
-}
diff --git a/board/lantec/u-boot.lds b/board/lantec/u-boot.lds
deleted file mode 100644
index 29ecabd9b3..0000000000
--- a/board/lantec/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/lantec/u-boot.lds.debug b/board/lantec/u-boot.lds.debug
deleted file mode 100644
index 65b25b926a..0000000000
--- a/board/lantec/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/lart/Makefile b/board/lart/Makefile
deleted file mode 100644
index cbc07bd88a..0000000000
--- a/board/lart/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := lart.o flash.o
-SOBJS := flashasm.o lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/lart/config.mk b/board/lart/config.mk
deleted file mode 100644
index 3033c4fba6..0000000000
--- a/board/lart/config.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# LART board with SA1100 cpu
-#
-# see http://www.lart.tudelft.nl/ for more information on LART
-#
-
-#
-# LART has 4 banks of 8 MB DRAM
-#
-# c000'0000
-# c100'0000
-# c800'0000
-# c900'0000
-#
-# Linux-Kernel is expected to be at c000'8000, entry c000'8000
-#
-# we load ourself to c178'0000, the upper 1 MB of second bank
-#
-# download areas is c800'0000
-#
-
-
-TEXT_BASE = 0xc1780000
diff --git a/board/lart/flash.c b/board/lart/flash.c
deleted file mode 100644
index 28c4531c02..0000000000
--- a/board/lart/flash.c
+++ /dev/null
@@ -1,474 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-
-ulong myflush(void);
-
-
-#define FLASH_BANK_SIZE 0x800000
-#define MAIN_SECT_SIZE 0x20000
-#define PARAM_SECT_SIZE 0x4000
-
-/* puzzle magic for lart
- * data_*_flash are def'd in flashasm.S
- */
-
-extern u32 data_from_flash(u32);
-extern u32 data_to_flash(u32);
-
-#define PUZZLE_FROM_FLASH(x) data_from_flash((x))
-#define PUZZLE_TO_FLASH(x) data_to_flash((x))
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-#define CMD_READ_ARRAY 0x00FF00FF
-#define CMD_IDENTIFY 0x00900090
-#define CMD_ERASE_SETUP 0x00200020
-#define CMD_ERASE_CONFIRM 0x00D000D0
-#define CMD_PROGRAM 0x00400040
-#define CMD_RESUME 0x00D000D0
-#define CMD_SUSPEND 0x00B000B0
-#define CMD_STATUS_READ 0x00700070
-#define CMD_STATUS_RESET 0x00500050
-
-#define BIT_BUSY 0x00800080
-#define BIT_ERASE_SUSPEND 0x00400040
-#define BIT_ERASE_ERROR 0x00200020
-#define BIT_PROGRAM_ERROR 0x00100010
-#define BIT_VPP_RANGE_ERROR 0x00080008
-#define BIT_PROGRAM_SUSPEND 0x00040004
-#define BIT_PROTECT_ERROR 0x00020002
-#define BIT_UNDEFINED 0x00010001
-
-#define BIT_SEQUENCE_ERROR 0x00300030
-#define BIT_TIMEOUT 0x80000000
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init(void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++)
- {
- ulong flashbase = 0;
- flash_info[i].flash_id =
- (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F160F3B & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset(flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic("configured too many flash banks!\n");
- for (j = 0; j < flash_info[i].sector_count; j++)
- {
- if (j <= 7)
- {
- flash_info[i].start[j] = flashbase + j * PARAM_SECT_SIZE;
- }
- else
- {
- flash_info[i].start[j] = flashbase + (j - 7)*MAIN_SECT_SIZE;
- }
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK)
- {
- case (INTEL_MANUFACT & FLASH_VENDMASK):
- printf("Intel: ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK)
- {
- case (INTEL_ID_28F160F3B & FLASH_TYPEMASK):
- printf("2x 28F160F3B (16Mbit)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf(" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++)
- {
- if ((i % 5) == 0)
- {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
-Done:
- ;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_error (ulong code)
-{
- /* Check bit patterns */
- /* SR.7=0 is busy, SR.7=1 is ready */
- /* all other flags indicate error on 1 */
- /* SR.0 is undefined */
- /* Timeout is our faked flag */
-
- /* sequence is described in Intel 290644-005 document */
-
- /* check Timeout */
- if (code & BIT_TIMEOUT)
- {
- printf ("Timeout\n");
- return ERR_TIMOUT;
- }
-
- /* check Busy, SR.7 */
- if (~code & BIT_BUSY)
- {
- printf ("Busy\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Vpp low, SR.3 */
- if (code & BIT_VPP_RANGE_ERROR)
- {
- printf ("Vpp range error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Device Protect Error, SR.1 */
- if (code & BIT_PROTECT_ERROR)
- {
- printf ("Device protect error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Command Seq Error, SR.4 & SR.5 */
- if (code & BIT_SEQUENCE_ERROR)
- {
- printf ("Command seqence error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Block Erase Error, SR.5 */
- if (code & BIT_ERASE_ERROR)
- {
- printf ("Block erase error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Program Error, SR.4 */
- if (code & BIT_PROGRAM_ERROR)
- {
- printf ("Program error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Block Erase Suspended, SR.6 */
- if (code & BIT_ERASE_SUSPEND)
- {
- printf ("Block erase suspended\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Program Suspended, SR.2 */
- if (code & BIT_PROGRAM_SUSPEND)
- {
- printf ("Program suspended\n");
- return ERR_PROG_ERROR;
- }
-
- /* OK, no error */
- return ERR_OK;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- ulong result;
- int iflag, cflag, prot, sect;
- int rc = ERR_OK;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (INTEL_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status();
- icache_disable();
- iflag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && !ctrlc(); sect++)
- {
- printf("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- if (info->protect[sect] == 0)
- { /* not protected */
- vu_long *addr = (vu_long *)(info->start[sect]);
-
- *addr = PUZZLE_TO_FLASH(CMD_STATUS_RESET);
- *addr = PUZZLE_TO_FLASH(CMD_ERASE_SETUP);
- *addr = PUZZLE_TO_FLASH(CMD_ERASE_CONFIRM);
-
- /* wait until flash is ready */
- do
- {
- /* check timeout */
- if (get_timer_masked() > CFG_FLASH_ERASE_TOUT)
- {
- *addr = PUZZLE_TO_FLASH(CMD_SUSPEND);
- result = BIT_TIMEOUT;
- break;
- }
-
- result = PUZZLE_FROM_FLASH(*addr);
- } while (~result & BIT_BUSY);
-
- *addr = PUZZLE_TO_FLASH(CMD_READ_ARRAY);
-
- if ((rc = flash_error(result)) != ERR_OK)
- goto outahere;
-
- printf("ok.\n");
- }
- else /* it was protected */
- {
- printf("protected!\n");
- }
- }
-
- if (ctrlc())
- printf("User Interrupt!\n");
-
-outahere:
- /* allow flash to settle - wait 10 ms */
- udelay_masked(10000);
-
- if (iflag)
- enable_interrupts();
-
- if (cflag)
- icache_enable();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)dest;
- ulong result;
- int rc = ERR_OK;
- int cflag, iflag;
-
- /* Check if Flash is (sufficiently) erased
- */
- result = PUZZLE_FROM_FLASH(*addr);
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status();
- icache_disable();
- iflag = disable_interrupts();
-
- *addr = PUZZLE_TO_FLASH(CMD_STATUS_RESET);
- *addr = PUZZLE_TO_FLASH(CMD_PROGRAM);
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- /* wait until flash is ready */
- do
- {
- /* check timeout */
- if (get_timer_masked() > CFG_FLASH_ERASE_TOUT)
- {
- *addr = PUZZLE_TO_FLASH(CMD_SUSPEND);
- result = BIT_TIMEOUT;
- break;
- }
-
- result = PUZZLE_FROM_FLASH(*addr);
- } while (~result & BIT_BUSY);
-
- *addr = PUZZLE_TO_FLASH(CMD_READ_ARRAY);
-
- rc = flash_error(result);
-
- if (iflag)
- enable_interrupts();
-
- if (cflag)
- icache_enable();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int l;
- int i, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = *((vu_long*)src);
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- src += 4;
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
-
- return write_word(info, wp, data);
-}
diff --git a/board/lart/flashasm.S b/board/lart/flashasm.S
deleted file mode 100644
index 9021972cb4..0000000000
--- a/board/lart/flashasm.S
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * flashasm.S: flash magic for LART
- *
- * Copyright (C) 1999 2000 2001 Jan-Derk bakker (J.D.Bakker@its.tudelft.nl)
- *
- * 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
- *
- */
-
-.text
-
-
-.globl data_to_flash
-.globl data_from_flash
- /* Subroutine that takes data in r0 and formats it so it will be in */
- /* the correct order for the internal flash */
- /* used for LART only */
-data_to_flash:
- mov r1, #0x0
-
- tst r0, #0x00000001
- orrne r1, r1, #0x00001000
- tst r0, #0x00000002
- orrne r1, r1, #0x00004000
- tst r0, #0x00000004
- orrne r1, r1, #0x00000800
- tst r0, #0x00000008
- orrne r1, r1, #0x00000200
- tst r0, #0x00000010
- orrne r1, r1, #0x00000001
- tst r0, #0x00000020
- orrne r1, r1, #0x00000004
- tst r0, #0x00000040
- orrne r1, r1, #0x00000080
- tst r0, #0x00000080
- orrne r1, r1, #0x00000020
-
- tst r0, #0x00000100
- orrne r1, r1, #0x00002000
- tst r0, #0x00000200
- orrne r1, r1, #0x00008000
- tst r0, #0x00000400
- orrne r1, r1, #0x00000400
- tst r0, #0x00000800
- orrne r1, r1, #0x00000100
- tst r0, #0x00001000
- orrne r1, r1, #0x00000002
- tst r0, #0x00002000
- orrne r1, r1, #0x00000008
- tst r0, #0x00004000
- orrne r1, r1, #0x00000040
- tst r0, #0x00008000
- orrne r1, r1, #0x00000010
-
- tst r0, #0x00010000
- orrne r1, r1, #0x00100000
- tst r0, #0x00020000
- orrne r1, r1, #0x00400000
- tst r0, #0x00040000
- orrne r1, r1, #0x00080000
- tst r0, #0x00080000
- orrne r1, r1, #0x00020000
- tst r0, #0x00100000
- orrne r1, r1, #0x01000000
- tst r0, #0x00200000
- orrne r1, r1, #0x04000000
- tst r0, #0x00400000
- orrne r1, r1, #0x80000000
- tst r0, #0x00800000
- orrne r1, r1, #0x20000000
-
- tst r0, #0x01000000
- orrne r1, r1, #0x00200000
- tst r0, #0x02000000
- orrne r1, r1, #0x00800000
- tst r0, #0x04000000
- orrne r1, r1, #0x00040000
- tst r0, #0x08000000
- orrne r1, r1, #0x00010000
- tst r0, #0x10000000
- orrne r1, r1, #0x02000000
- tst r0, #0x20000000
- orrne r1, r1, #0x08000000
- tst r0, #0x40000000
- orrne r1, r1, #0x40000000
- tst r0, #0x80000000
- orrne r1, r1, #0x10000000
-
- mov r0, r1
- mov pc, lr
-
- /* Takes data received from the flash, and unshuffles it. */
-data_from_flash:
- mov r1, #0x00
-
- tst r0, #0x00000001
- orrne r1, r1, #0x00000010
- tst r0, #0x00000002
- orrne r1, r1, #0x00001000
- tst r0, #0x00000004
- orrne r1, r1, #0x00000020
- tst r0, #0x00000008
- orrne r1, r1, #0x00002000
- tst r0, #0x00000010
- orrne r1, r1, #0x00008000
- tst r0, #0x00000020
- orrne r1, r1, #0x00000080
- tst r0, #0x00000040
- orrne r1, r1, #0x00004000
- tst r0, #0x00000080
- orrne r1, r1, #0x00000040
-
- tst r0, #0x00000100
- orrne r1, r1, #0x00000800
- tst r0, #0x00000200
- orrne r1, r1, #0x00000008
- tst r0, #0x00000400
- orrne r1, r1, #0x00000400
- tst r0, #0x00000800
- orrne r1, r1, #0x00000004
- tst r0, #0x00001000
- orrne r1, r1, #0x00000001
- tst r0, #0x00002000
- orrne r1, r1, #0x00000100
- tst r0, #0x00004000
- orrne r1, r1, #0x00000002
- tst r0, #0x00008000
- orrne r1, r1, #0x00000200
-
- tst r0, #0x00010000
- orrne r1, r1, #0x08000000
- tst r0, #0x00020000
- orrne r1, r1, #0x00080000
- tst r0, #0x00040000
- orrne r1, r1, #0x04000000
- tst r0, #0x00080000
- orrne r1, r1, #0x00040000
- tst r0, #0x00100000
- orrne r1, r1, #0x00010000
- tst r0, #0x00200000
- orrne r1, r1, #0x01000000
- tst r0, #0x00400000
- orrne r1, r1, #0x00020000
- tst r0, #0x00800000
- orrne r1, r1, #0x02000000
-
- tst r0, #0x01000000
- orrne r1, r1, #0x00100000
- tst r0, #0x02000000
- orrne r1, r1, #0x10000000
- tst r0, #0x04000000
- orrne r1, r1, #0x00200000
- tst r0, #0x08000000
- orrne r1, r1, #0x20000000
- tst r0, #0x10000000
- orrne r1, r1, #0x80000000
- tst r0, #0x20000000
- orrne r1, r1, #0x00800000
- tst r0, #0x40000000
- orrne r1, r1, #0x40000000
- tst r0, #0x80000000
- orrne r1, r1, #0x00400000
-
- mov r0, r1
- mov pc, lr
diff --git a/board/lart/lart.c b/board/lart/lart.c
deleted file mode 100644
index 8d534c8e67..0000000000
--- a/board/lart/lart.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* arch number of LART-Board */
- gd->bd->bi_arch_number = MACH_TYPE_LART;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xc0000100;
-
- return 0;
-}
-
-int dram_init (void)
-{
- bd_t *bd = gd->bd;
-
- bd->bi_dram[0].start = PHYS_SDRAM_1;
- bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- bd->bi_dram[1].start = PHYS_SDRAM_2;
- bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
- bd->bi_dram[2].start = PHYS_SDRAM_3;
- bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
- bd->bi_dram[3].start = PHYS_SDRAM_4;
- bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
-
- return (0);
-}
diff --git a/board/lart/lowlevel_init.S b/board/lart/lowlevel_init.S
deleted file mode 100644
index db9fd63def..0000000000
--- a/board/lart/lowlevel_init.S
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Memory Setup stuff - taken from blob memsetup.S
- *
- * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
- * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
- *
- * 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 <config.h>
-#include <version.h>
-
-
-/* some parameters for the board */
-
-MEM_BASE: .long 0xa0000000
-MEM_START: .long 0xc0000000
-
-#define MDCNFG 0x00
-#define MDCAS0 0x04
-#define MDCAS1 0x08
-#define MDCAS2 0x0c
-#define MSC0 0x10
-#define MSC1 0x14
-#define MECR 0x18
-
-mdcas0: .long 0xc71c703f
-mdcas1: .long 0xffc71c71
-mdcas2: .long 0xffffffff
-/* mdcnfg: .long 0x0bb2bcbf */
-mdcnfg: .long 0x0334b22f @ alt
-/* mcs0: .long 0xfff8fff8 */
-msc0: .long 0xad8c4888 @ alt
-mecr: .long 0x00060006
-/* mecr: .long 0x994a994a @ alt */
-
-/* setting up the memory */
-
-.globl lowlevel_init
-lowlevel_init:
- ldr r0, MEM_BASE
-
- /* Setup the flash memory */
- ldr r1, msc0
- str r1, [r0, #MSC0]
-
- /* Set up the DRAM */
-
- /* MDCAS0 */
- ldr r1, mdcas0
- str r1, [r0, #MDCAS0]
-
- /* MDCAS1 */
- ldr r1, mdcas1
- str r1, [r0, #MDCAS1]
-
- /* MDCAS2 */
- ldr r1, mdcas2
- str r1, [r0, #MDCAS2]
-
- /* MDCNFG */
- ldr r1, mdcnfg
- str r1, [r0, #MDCNFG]
-
- /* Set up PCMCIA space */
- ldr r1, mecr
- str r1, [r0, #MECR]
-
- /* Load something to activate bank */
- ldr r1, MEM_START
-
-.rept 8
- ldr r0, [r1]
-.endr
-
- /* everything is fine now */
- mov pc, lr
diff --git a/board/lart/u-boot.lds b/board/lart/u-boot.lds
deleted file mode 100644
index 258bece23c..0000000000
--- a/board/lart/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/sa1100/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/logodl/Makefile b/board/logodl/Makefile
deleted file mode 100644
index 0c88a6e590..0000000000
--- a/board/logodl/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := logodl.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/logodl/config.mk b/board/logodl/config.mk
deleted file mode 100644
index 76c382d57c..0000000000
--- a/board/logodl/config.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Linux-Kernel is expected to be at c000'8000, entry c000'8000
-#
-# we load ourself to c170'0000, the upper 1 MB of second bank
-#
-# download areas is c800'0000
-#
-
-#TEXT_BASE = 0
-
-# FIXME: armboot does only work correctly when being compiled
-# # for the addresses _after_ relocation to RAM!! Otherwhise the
-# # .bss segment is assumed in flash...
-#
-TEXT_BASE = 0x083E0000
diff --git a/board/logodl/flash.c b/board/logodl/flash.c
deleted file mode 100644
index a9477314dc..0000000000
--- a/board/logodl/flash.c
+++ /dev/null
@@ -1,829 +0,0 @@
-/*
- * (C) 2000 Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * (C) 2003 August Hoeraendl, Logotronic GmbH
- *
- * 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
- */
-
-#undef CONFIG_FLASH_16BIT
-
-#include <common.h>
-
-#define FLASH_BANK_SIZE 0x1000000
-#define MAIN_SECT_SIZE 0x20000 /* 2x64k = 128k per sector */
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* NOTE - CONFIG_FLASH_16BIT means the CPU interface is 16-bit, it
- * has nothing to do with the flash chip being 8-bit or 16-bit.
- */
-#ifdef CONFIG_FLASH_16BIT
-typedef unsigned short FLASH_PORT_WIDTH;
-typedef volatile unsigned short FLASH_PORT_WIDTHV;
-
-#define FLASH_ID_MASK 0xFFFF
-#else
-typedef unsigned long FLASH_PORT_WIDTH;
-typedef volatile unsigned long FLASH_PORT_WIDTHV;
-
-#define FLASH_ID_MASK 0xFFFFFFFF
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define ORMASK(size) ((-size) & OR_AM_MSK)
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(FPWV *addr, flash_info_t *info);
-static void flash_reset(flash_info_t *info);
-static int write_word_intel(flash_info_t *info, FPWV *dest, FPW data);
-static int write_word_amd(flash_info_t *info, FPWV *dest, FPW data);
-#define write_word(in, de, da) write_word_amd(in, de, da)
-static void flash_get_offsets(ulong base, flash_info_t *info);
-#ifdef CFG_FLASH_PROTECTION
-static void flash_sync_real_protect(flash_info_t *info);
-#endif
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-ulong flash_init(void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++)
- {
- ulong flashbase = 0;
- flash_info[i].flash_id =
- (FLASH_MAN_AMD & FLASH_VENDMASK) |
- (FLASH_AM640U & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset(flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- switch (i)
- {
- case 0:
- flashbase = PHYS_FLASH_1;
- break;
- case 1:
- flashbase = PHYS_FLASH_2;
- break;
- default:
- panic("configured too many flash banks!\n");
- break;
- }
- for (j = 0; j < flash_info[i].sector_count; j++)
- {
- flash_info[i].start[j] = flashbase + j*MAIN_SECT_SIZE;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + _bss_start - _armboot_start,
- &flash_info[0]);
-
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset(flash_info_t *info)
-{
- FPWV *base = (FPWV *)(info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- *base = (FPW)0x00FF00FF; /* Intel Read Mode */
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
- *base = (FPW)0x00F000F0; /* AMD Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL
- && (info->flash_id & FLASH_BTYPE)) {
- int bootsect_size; /* number of bytes/boot sector */
- int sect_size; /* number of bytes/regular sector */
-
- bootsect_size = 0x00002000 * (sizeof(FPW)/2);
- sect_size = 0x00010000 * (sizeof(FPW)/2);
-
- /* set sector offsets for bottom boot block type */
- for (i = 0; i < 8; ++i) {
- info->start[i] = base + (i * bootsect_size);
- }
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + ((i - 7) * sect_size);
- }
- }
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD
- && (info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U) {
-
- int sect_size; /* number of bytes/sector */
-
- sect_size = 0x00010000 * (sizeof(FPW)/2);
-
- /* set up sector start address table (uniform sector type) */
- for( i = 0; i < info->sector_count; i++ )
- info->start[i] = base + (i * sect_size);
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar *bootletter;
- uchar *fmt;
- uchar botbootletter[] = "B";
- uchar topbootletter[] = "T";
- uchar botboottype[] = "bottom boot sector";
- uchar topboottype[] = "top boot sector";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- /* check for top or bottom boot, if it applies */
- if (info->flash_id & FLASH_BTYPE) {
- boottype = botboottype;
- bootletter = botbootletter;
- }
- else {
- boottype = topboottype;
- bootletter = topbootletter;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM640U:
- fmt = "29LV641D (64 Mbit, uniform sectors)\n";
- break;
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- fmt = "28F800C3%s (8 Mbit, %s)\n";
- break;
- case FLASH_INTEL800B:
- case FLASH_INTEL800T:
- fmt = "28F800B3%s (8 Mbit, %s)\n";
- break;
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- fmt = "28F160C3%s (16 Mbit, %s)\n";
- break;
- case FLASH_INTEL160B:
- case FLASH_INTEL160T:
- fmt = "28F160B3%s (16 Mbit, %s)\n";
- break;
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- fmt = "28F320C3%s (32 Mbit, %s)\n";
- break;
- case FLASH_INTEL320B:
- case FLASH_INTEL320T:
- fmt = "28F320B3%s (32 Mbit, %s)\n";
- break;
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- fmt = "28F640C3%s (64 Mbit, %s)\n";
- break;
- case FLASH_INTEL640B:
- case FLASH_INTEL640T:
- fmt = "28F640B3%s (64 Mbit, %s)\n";
- break;
- default:
- fmt = "Unknown Chip Type\n";
- break;
- }
-
- printf (fmt, bootletter, boottype);
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
-
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size (FPWV *addr, flash_info_t *info)
-{
- /* Write auto select command: read Manufacturer ID */
-
- /* Write auto select command sequence and test FLASH answer */
- addr[0x0555] = (FPW)0x00AA00AA; /* for AMD, Intel ignores this */
- addr[0x02AA] = (FPW)0x00550055; /* for AMD, Intel ignores this */
- addr[0x0555] = (FPW)0x00900090; /* selects Intel or AMD */
-
- /* The manufacturer codes are only 1 byte, so just use 1 byte.
- * This works for any bus width and any FLASH device width.
- */
- switch (addr[0] & 0xff) {
-
- case (uchar)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case (uchar)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- /* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */
- if (info->flash_id != FLASH_UNKNOWN) switch (addr[1]) {
-
- case (FPW)AMD_ID_LV640U: /* 29LV640 and 29LV641 have same ID */
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- case (FPW)INTEL_ID_28F800C3B:
- info->flash_id += FLASH_28F800C3B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof(FPW)/2);
- break; /* => 1 or 2 MB */
-
- case (FPW)INTEL_ID_28F800B3B:
- info->flash_id += FLASH_INTEL800B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof(FPW)/2);
- break; /* => 1 or 2 MB */
-
- case (FPW)INTEL_ID_28F160C3B:
- info->flash_id += FLASH_28F160C3B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof(FPW)/2);
- break; /* => 2 or 4 MB */
-
- case (FPW)INTEL_ID_28F160B3B:
- info->flash_id += FLASH_INTEL160B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof(FPW)/2);
- break; /* => 2 or 4 MB */
-
- case (FPW)INTEL_ID_28F320C3B:
- info->flash_id += FLASH_28F320C3B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof(FPW)/2);
- break; /* => 4 or 8 MB */
-
- case (FPW)INTEL_ID_28F320B3B:
- info->flash_id += FLASH_INTEL320B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof(FPW)/2);
- break; /* => 4 or 8 MB */
-
- case (FPW)INTEL_ID_28F640C3B:
- info->flash_id += FLASH_28F640C3B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- case (FPW)INTEL_ID_28F640B3B:
- info->flash_id += FLASH_INTEL640B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* => no or unknown flash */
- }
-
- flash_get_offsets((ulong)addr, info);
-
- /* Put FLASH back in read mode */
- flash_reset(info);
-
- return (info->size);
-}
-
-#ifdef CFG_FLASH_PROTECTION
-/*-----------------------------------------------------------------------
- */
-
-static void flash_sync_real_protect(flash_info_t *info)
-{
- FPWV *addr = (FPWV *)(info->start[0]);
- FPWV *sect;
- int i;
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- /* check for protected sectors */
- *addr = (FPW)0x00900090;
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02.
- * D0 = 1 for each device if protected.
- * If at least one device is protected the sector is marked
- * protected, but mixed protected and unprotected devices
- * within a sector should never happen.
- */
- sect = (FPWV *)(info->start[i]);
- info->protect[i] = (sect[2] & (FPW)(0x00010001)) ? 1 : 0;
- }
-
- /* Put FLASH back in read mode */
- flash_reset(info);
- break;
-
- case FLASH_AM640U:
- default:
- /* no hardware protect that we support */
- break;
- }
-}
-#endif
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- FPWV *addr;
- int flag, prot, sect;
- int intel = (info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_INTEL800B:
- case FLASH_INTEL160B:
- case FLASH_INTEL320B:
- case FLASH_INTEL640B:
- case FLASH_28F800C3B:
- case FLASH_28F160C3B:
- case FLASH_28F320C3B:
- case FLASH_28F640C3B:
- case FLASH_AM640U:
- break;
- case FLASH_UNKNOWN:
- default:
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer(0);
- last = start;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && rcode == 0; sect++) {
-
- if (info->protect[sect] != 0) /* protected, skip it */
- continue;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr = (FPWV *)(info->start[sect]);
- if (intel) {
- *addr = (FPW)0x00500050; /* clear status register */
- *addr = (FPW)0x00200020; /* erase setup */
- *addr = (FPW)0x00D000D0; /* erase confirm */
- }
- else {
- /* must be AMD style if not Intel */
- FPWV *base; /* first address in bank */
-
- base = (FPWV *)(info->start[0]);
- base[0x0555] = (FPW)0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW)0x00550055; /* unlock */
- base[0x0555] = (FPW)0x00800080; /* erase mode */
- base[0x0555] = (FPW)0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW)0x00550055; /* unlock */
- *addr = (FPW)0x00300030; /* erase sector */
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 50us for AMD, 80us for Intel.
- * Let's wait 1 ms.
- */
- udelay (1000);
-
- while ((*addr & (FPW)0x00800080) != (FPW)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
-
- if (intel) {
- /* suspend erase */
- *addr = (FPW)0x00B000B0;
- }
-
- flash_reset(info); /* reset to read mode */
- rcode = 1; /* failed */
- break;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- flash_reset(info); /* reset to read mode */
- }
-
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int bad_write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof(data), left -= sizeof(data) - bytes) {
-
- bytes = addr & (sizeof(data) - 1);
- addr &= ~(sizeof(data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits
- */
- for (i = 0; i < sizeof(data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left )
- data += *((uchar *)addr + i);
- else
- data += *src++;
- }
-
- /* write one word to the flash */
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- res = write_word_amd(info, (FPWV *)addr, data);
- break;
- case FLASH_MAN_INTEL:
- res = write_word_intel(info, (FPWV *)addr, data);
- break;
- default:
- /* unknown flash type, error! */
- printf ("missing or unknown FLASH type\n");
- res = 1; /* not really a timeout, but gives error */
- break;
- }
- }
-
- return (res);
-}
-
-/**
- * write_buf: - Copy memory to flash.
- *
- * @param info:
- * @param src: source of copy transaction
- * @param addr: where to copy to
- * @param cnt: number of bytes to copy
- *
- * @return error code
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int l;
- int i, rc;
-
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 8);
- }
- for (; i<2 && cnt>0; ++i) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 8);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 2) {
- /* data = *((vushort*)src); */
- data = *((FPW*)src);
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- src += sizeof(FPW);
- wp += sizeof(FPW);
- cnt -= sizeof(FPW);
- }
-
- if (cnt == 0) return ERR_OK;
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<2 && cnt>0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- }
- for (; i<2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 8);
- }
-
- return write_word(info, wp, data);
-}
-
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd (flash_info_t *info, FPWV *dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
- FPWV *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
-
- base = (FPWV *)(info->start[0]);
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- base[0x0555] = (FPW)0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW)0x00550055; /* unlock */
- base[0x0555] = (FPW)0x00A000A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- /* data polling for D7 */
- while (res == 0 && (*dest & (FPW)0x00800080) != (data & (FPW)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW)0x00F000F0; /* reset bank */
- res = 1;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for Intel FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_intel (flash_info_t *info, FPWV *dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *dest = (FPW)0x00500050; /* clear status register */
- *dest = (FPW)0x00FF00FF; /* make sure in read mode */
- *dest = (FPW)0x00400040; /* program setup */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- while (res == 0 && (*dest & (FPW)0x00800080) != (FPW)0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW)0x00B000B0; /* Suspend program */
- res = 1;
- }
- }
-
- if (res == 0 && (*dest & (FPW)0x00100010))
- res = 1; /* write failed, time out error is close enough */
-
- *dest = (FPW)0x00500050; /* clear status register */
- *dest = (FPW)0x00FF00FF; /* make sure in read mode */
-
- return (res);
-}
-
-#ifdef CFG_FLASH_PROTECTION
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect (flash_info_t * info, long sector, int prot)
-{
- int rcode = 0; /* assume success */
- FPWV *addr; /* address of sector */
- FPW value;
-
- addr = (FPWV *) (info->start[sector]);
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- flash_reset (info); /* make sure in read mode */
- *addr = (FPW) 0x00600060L; /* lock command setup */
- if (prot)
- *addr = (FPW) 0x00010001L; /* lock sector */
- else
- *addr = (FPW) 0x00D000D0L; /* unlock sector */
- flash_reset (info); /* reset to read mode */
-
- /* now see if it really is locked/unlocked as requested */
- *addr = (FPW) 0x00900090;
- /* read sector protection at sector address, (A7 .. A0) = 0x02.
- * D0 = 1 for each device if protected.
- * If at least one device is protected the sector is marked
- * protected, but return failure. Mixed protected and
- * unprotected devices within a sector should never happen.
- */
- value = addr[2] & (FPW) 0x00010001;
- if (value == 0)
- info->protect[sector] = 0;
- else if (value == (FPW) 0x00010001)
- info->protect[sector] = 1;
- else {
- /* error, mixed protected and unprotected */
- rcode = 1;
- info->protect[sector] = 1;
- }
- if (info->protect[sector] != prot)
- rcode = 1; /* failed to protect/unprotect as requested */
-
- /* reload all protection bits from hardware for now */
- flash_sync_real_protect (info);
- break;
-
- case FLASH_AM640U:
- default:
- /* no hardware protect that we support */
- info->protect[sector] = prot;
- break;
- }
-
- return rcode;
-}
-#endif
diff --git a/board/logodl/logodl.c b/board/logodl/logodl.c
deleted file mode 100644
index 14fd28f56f..0000000000
--- a/board/logodl/logodl.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * (C) 2002 Kyle Harris <kharris@nexus-tech.net>, Nexus Technologies, Inc.
- * (C) 2002 Marius Groeger <mgroeger@sysgo.de>, Sysgo GmbH
- * (C) 2003 Robert Schwebel <r.schwebel@pengutronix.de>, Pengutronix
- *
- * 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 <common.h>
-#include <asm/arch/pxa-regs.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/**
- * board_init: - setup some data structures
- *
- * @return: 0 in case of success
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- gd->bd->bi_arch_number = MACH_TYPE_LOGODL;
- gd->bd->bi_boot_params = 0x08000100;
- gd->bd->bi_baudrate = CONFIG_BAUDRATE;
-
- (*((volatile short*)0x14800000)) = 0xff; /* power on eth0 */
- (*((volatile short*)0x14000000)) = 0xff; /* power on uart */
-
- return 0;
-}
-
-
-/**
- * dram_init: - setup dynamic RAM
- *
- * @return: 0 in case of success
- */
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return 0;
-}
-
-
-/**
- * logodl_set_led: - switch LEDs on or off
- *
- * @param led: LED to switch (0,1)
- * @param state: switch on (1) or off (0)
- */
-
-void logodl_set_led(int led, int state)
-{
- switch(led) {
-
- case 0:
- if (state==1) {
- CFG_LED_A_CR = CFG_LED_A_BIT;
- } else if (state==0) {
- CFG_LED_A_SR = CFG_LED_A_BIT;
- }
- break;
-
- case 1:
- if (state==1) {
- CFG_LED_B_CR = CFG_LED_B_BIT;
- } else if (state==0) {
- CFG_LED_B_SR = CFG_LED_B_BIT;
- }
- break;
- }
-
- return;
-}
-
-
-/**
- * show_boot_progress: - indicate state of the boot process
- *
- * @param status: Status number - see README for details.
- *
- * The LOGOTRONIC does only have 2 LEDs, so we switch them on at the most
- * important states (1, 5, 15).
- */
-
-void show_boot_progress (int status)
-{
- /*
- switch(status) {
- case 1: logodl_set_led(0,1); break;
- case 5: logodl_set_led(1,1); break;
- case 15: logodl_set_led(2,1); break;
- }
- */
- logodl_set_led(0, (status & 1)==1);
- logodl_set_led(1, (status & 2)==2);
-
- return;
-}
diff --git a/board/logodl/lowlevel_init.S b/board/logodl/lowlevel_init.S
deleted file mode 100644
index aa9dcba6fc..0000000000
--- a/board/logodl/lowlevel_init.S
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * Most of this taken from Redboot hal_platform_setup.h with cleanup
- *
- * NOTE: I haven't clean this up considerably, just enough to get it
- * running. See hal_platform_setup.h for the source. See
- * board/cradle/lowlevel_init.S for another PXA250 setup that is
- * much cleaner.
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-DRAM_SIZE: .long CFG_DRAM_SIZE
-
-/* wait for coprocessor write complete */
- .macro CPWAIT reg
- mrc p15,0,\reg,c2,c0,0
- mov \reg,\reg
- sub pc,pc,#4
- .endm
-
-_TEXT_BASE:
- .word TEXT_BASE
-
-
-/*
- * Memory setup
- */
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
- /* Set up GPIO pins first ----------------------------------------- */
-
- ldr r0, =GPSR0
- ldr r1, =CFG_GPSR0_VAL
- str r1, [r0]
-
- ldr r0, =GPSR1
- ldr r1, =CFG_GPSR1_VAL
- str r1, [r0]
-
- ldr r0, =GPSR2
- ldr r1, =CFG_GPSR2_VAL
- str r1, [r0]
-
- ldr r0, =GPCR0
- ldr r1, =CFG_GPCR0_VAL
- str r1, [r0]
-
- ldr r0, =GPCR1
- ldr r1, =CFG_GPCR1_VAL
- str r1, [r0]
-
- ldr r0, =GPCR2
- ldr r1, =CFG_GPCR2_VAL
- str r1, [r0]
-
- ldr r0, =GPDR0
- ldr r1, =CFG_GPDR0_VAL
- str r1, [r0]
-
- ldr r0, =GPDR1
- ldr r1, =CFG_GPDR1_VAL
- str r1, [r0]
-
- ldr r0, =GPDR2
- ldr r1, =CFG_GPDR2_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_L
- ldr r1, =CFG_GAFR0_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_U
- ldr r1, =CFG_GAFR0_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_L
- ldr r1, =CFG_GAFR1_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_U
- ldr r1, =CFG_GAFR1_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_L
- ldr r1, =CFG_GAFR2_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_U
- ldr r1, =CFG_GAFR2_U_VAL
- str r1, [r0]
-
- ldr r0, =PSSR /* enable GPIO pins */
- ldr r1, =CFG_PSSR_VAL
- str r1, [r0]
-
-/* ldr r3, =MSC1 / low - bank 2 Lubbock Registers / SRAM */
-/* ldr r2, =CFG_MSC1_VAL / high - bank 3 Ethernet Controller */
-/* str r2, [r3] / need to set MSC1 before trying to write to the HEX LEDs */
-/* ldr r2, [r3] / need to read it back to make sure the value latches (see MSC section of manual) */
-/* */
-/* ldr r1, =LED_BLANK */
-/* mov r0, #0xFF */
-/* str r0, [r1] / turn on hex leds */
-/* */
-/*loop: */
-/* */
-/* ldr r0, =0xB0070001 */
-/* ldr r1, =_LED */
-/* str r0, [r1] / hex display */
-
-
- /* ---------------------------------------------------------------- */
- /* Enable memory interface */
- /* */
- /* The sequence below is based on the recommended init steps */
- /* detailed in the Intel PXA250 Operating Systems Developers Guide, */
- /* Chapter 10. */
- /* ---------------------------------------------------------------- */
-
- /* ---------------------------------------------------------------- */
- /* Step 1: Wait for at least 200 microsedonds to allow internal */
- /* clocks to settle. Only necessary after hard reset... */
- /* FIXME: can be optimized later */
- /* ---------------------------------------------------------------- */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-mem_init:
-
- ldr r1, =MEMC_BASE /* get memory controller base addr. */
-
- /* ---------------------------------------------------------------- */
- /* Step 2a: Initialize Asynchronous static memory controller */
- /* ---------------------------------------------------------------- */
-
- /* MSC registers: timing, bus width, mem type */
-
- /* MSC0: nCS(0,1) */
- ldr r2, =CFG_MSC0_VAL
- str r2, [r1, #MSC0_OFFSET]
- ldr r2, [r1, #MSC0_OFFSET] /* read back to ensure */
- /* that data latches */
- /* MSC1: nCS(2,3) */
- ldr r2, =CFG_MSC1_VAL
- str r2, [r1, #MSC1_OFFSET]
- ldr r2, [r1, #MSC1_OFFSET]
-
- /* MSC2: nCS(4,5) */
- ldr r2, =CFG_MSC2_VAL
- str r2, [r1, #MSC2_OFFSET]
- ldr r2, [r1, #MSC2_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2b: Initialize Card Interface */
- /* ---------------------------------------------------------------- */
-
- /* MECR: Memory Expansion Card Register */
- ldr r2, =CFG_MECR_VAL
- str r2, [r1, #MECR_OFFSET]
- ldr r2, [r1, #MECR_OFFSET]
-
- /* MCMEM0: Card Interface slot 0 timing */
- ldr r2, =CFG_MCMEM0_VAL
- str r2, [r1, #MCMEM0_OFFSET]
- ldr r2, [r1, #MCMEM0_OFFSET]
-
- /* MCMEM1: Card Interface slot 1 timing */
- ldr r2, =CFG_MCMEM1_VAL
- str r2, [r1, #MCMEM1_OFFSET]
- ldr r2, [r1, #MCMEM1_OFFSET]
-
- /* MCATT0: Card Interface Attribute Space Timing, slot 0 */
- ldr r2, =CFG_MCATT0_VAL
- str r2, [r1, #MCATT0_OFFSET]
- ldr r2, [r1, #MCATT0_OFFSET]
-
- /* MCATT1: Card Interface Attribute Space Timing, slot 1 */
- ldr r2, =CFG_MCATT1_VAL
- str r2, [r1, #MCATT1_OFFSET]
- ldr r2, [r1, #MCATT1_OFFSET]
-
- /* MCIO0: Card Interface I/O Space Timing, slot 0 */
- ldr r2, =CFG_MCIO0_VAL
- str r2, [r1, #MCIO0_OFFSET]
- ldr r2, [r1, #MCIO0_OFFSET]
-
- /* MCIO1: Card Interface I/O Space Timing, slot 1 */
- ldr r2, =CFG_MCIO1_VAL
- str r2, [r1, #MCIO1_OFFSET]
- ldr r2, [r1, #MCIO1_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2c: Write FLYCNFG FIXME: what's that??? */
- /* ---------------------------------------------------------------- */
-
- /* test if we run from flash or RAM - RAM/BDI: don't setup RAM */
- adr r3, mem_init /* r0 <- current position of code */
- ldr r2, =mem_init
- cmp r3, r2 /* skip init if in place */
- beq initirqs
-
-
- /* ---------------------------------------------------------------- */
- /* Step 2d: Initialize Timing for Sync Memory (SDCLK0) */
- /* ---------------------------------------------------------------- */
-
- /* Before accessing MDREFR we need a valid DRI field, so we set */
- /* this to power on defaults + DRI field. */
-
- ldr r3, =CFG_MDREFR_VAL
- ldr r2, =0xFFF
- and r3, r3, r2
- ldr r4, =0x03ca4000
- orr r4, r4, r3
-
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
-
- /* ---------------------------------------------------------------- */
- /* Step 3: Initialize Synchronous Static Memory (Flash/Peripherals) */
- /* ---------------------------------------------------------------- */
-
- /* Initialize SXCNFG register. Assert the enable bits */
-
- /* Write SXMRS to cause an MRS command to all enabled banks of */
- /* synchronous static memory. Note that SXLCR need not be written */
- /* at this time. */
-
- /* FIXME: we use async mode for now */
-
-
- /* ---------------------------------------------------------------- */
- /* Step 4: Initialize SDRAM */
- /* ---------------------------------------------------------------- */
-
- /* Step 4a: assert MDREFR:K?RUN and configure */
- /* MDREFR:K1DB2 and MDREFR:K2DB2 as desired. */
-
- ldr r4, =CFG_MDREFR_VAL
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
- /* Step 4b: de-assert MDREFR:SLFRSH. */
-
- bic r4, r4, #(MDREFR_SLFRSH)
-
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
-
- /* Step 4c: assert MDREFR:E1PIN and E0PIO */
-
- orr r4, r4, #(MDREFR_E1PIN|MDREFR_E0PIN)
-
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
-
- /* Step 4d: write MDCNFG with MDCNFG:DEx deasserted (set to 0), to */
- /* configure but not enable each SDRAM partition pair. */
-
- ldr r4, =CFG_MDCNFG_VAL
- bic r4, r4, #(MDCNFG_DE0|MDCNFG_DE1)
-
- str r4, [r1, #MDCNFG_OFFSET] /* write back MDCNFG */
- ldr r4, [r1, #MDCNFG_OFFSET]
-
-
- /* Step 4e: Wait for the clock to the SDRAMs to stabilize, */
- /* 100..200 µsec. */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-
- /* Step 4f: Trigger a number (usually 8) refresh cycles by */
- /* attempting non-burst read or write accesses to disabled */
- /* SDRAM, as commonly specified in the power up sequence */
- /* documented in SDRAM data sheets. The address(es) used */
- /* for this purpose must not be cacheable. */
-
- /* There should 9 writes, since the first write doesn't */
- /* trigger a refresh cycle on PXA250. See Intel PXA250 and */
- /* PXA210 Processors Specification Update, */
- /* Jan 2003, Errata #116, page 30. */
-
-
- ldr r3, =CFG_DRAM_BASE
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
-
- /* Step 4g: Write MDCNFG with enable bits asserted */
- /* (MDCNFG:DEx set to 1). */
-
- ldr r3, [r1, #MDCNFG_OFFSET]
- orr r3, r3, #(MDCNFG_DE0|MDCNFG_DE1)
- str r3, [r1, #MDCNFG_OFFSET]
-
- /* Step 4h: Write MDMRS. */
-
- ldr r2, =CFG_MDMRS_VAL
- str r2, [r1, #MDMRS_OFFSET]
-
-
- /* We are finished with Intel's memory controller initialisation */
-
- /* ---------------------------------------------------------------- */
- /* Disable (mask) all interrupts at interrupt controller */
- /* ---------------------------------------------------------------- */
-
-initirqs:
-
- mov r1, #0 /* clear int. level register (IRQ, not FIQ) */
- ldr r2, =ICLR
- str r1, [r2]
-
- ldr r2, =ICMR /* mask all interrupts at the controller */
- str r1, [r2]
-
-
- /* ---------------------------------------------------------------- */
- /* Clock initialisation */
- /* ---------------------------------------------------------------- */
-
-initclks:
-
- /* Disable the peripheral clocks, and set the core clock frequency */
- /* (hard-coding at 398.12MHz for now). */
-
- /* Turn Off ALL on-chip peripheral clocks for re-configuration */
- /* Note: See label 'ENABLECLKS' for the re-enabling */
- ldr r1, =CKEN
- mov r2, #0
- str r2, [r1]
-
-
- /* default value in case no valid rotary switch setting is found */
- ldr r2, =(CCCR_L27|CCCR_M2|CCCR_N10) /* DEFAULT: {200/200/100} */
-
- /* ... and write the core clock config register */
- ldr r1, =CCCR
- str r2, [r1]
-
- /* enable the 32Khz oscillator for RTC and PowerManager */
-/*
- ldr r1, =OSCC
- mov r2, #OSCC_OON
- str r2, [r1]
-*/
- /* NOTE: spin here until OSCC.OOK get set, meaning the PLL */
- /* has settled. */
-60:
- ldr r2, [r1]
- ands r2, r2, #1
- beq 60b
-
- /* ---------------------------------------------------------------- */
- /* */
- /* ---------------------------------------------------------------- */
-
- /* Save SDRAM size */
- ldr r1, =DRAM_SIZE
- str r8, [r1]
-
- /* Interrupt init: Mask all interrupts */
- ldr r0, =ICMR /* enable no sources */
- mov r1, #0
- str r1, [r0]
-
- /* FIXME */
-
-#ifndef DEBUG
- /*Disable software and data breakpoints */
- mov r0,#0
- mcr p15,0,r0,c14,c8,0 /* ibcr0 */
- mcr p15,0,r0,c14,c9,0 /* ibcr1 */
- mcr p15,0,r0,c14,c4,0 /* dbcon */
-
- /*Enable all debug functionality */
- mov r0,#0x80000000
- mcr p14,0,r0,c10,c0,0 /* dcsr */
-#endif
-
- /* ---------------------------------------------------------------- */
- /* End lowlevel_init */
- /* ---------------------------------------------------------------- */
-
-endlowlevel_init:
-
- mov pc, lr
diff --git a/board/logodl/u-boot.lds b/board/logodl/u-boot.lds
deleted file mode 100644
index f0102391b3..0000000000
--- a/board/logodl/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/lpd7a40x/Makefile b/board/lpd7a40x/Makefile
deleted file mode 100644
index 0e302d961f..0000000000
--- a/board/lpd7a40x/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := lpd7a40x.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/lpd7a40x/config.mk b/board/lpd7a40x/config.mk
deleted file mode 100644
index bc03874a47..0000000000
--- a/board/lpd7a40x/config.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# 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
-#
-
-# Logic ZOOM LH7A400 SDK board w/Logic LH7A400-10 card engine
-# w/Sharp LH7A400 SoC (ARM920T) cpu
-#
-
-#
-# 32 or 64 MB SDRAM on SDCSC0 @ 0xc0000000
-#
-# Linux-Kernel is @ 0xC0008000, entry 0xc0008000
-# params @ 0xc0000100
-# optionally with a ramdisk at 0xc0300000
-#
-# we load ourself to 0xc1fc0000 (32M - 256K)
-#
-# download area is 0xc0f00000
-#
-
-TEXT_BASE = 0xc1fc0000
-#TEXT_BASE = 0x00000000
diff --git a/board/lpd7a40x/flash.c b/board/lpd7a40x/flash.c
deleted file mode 100644
index d18720e5b2..0000000000
--- a/board/lpd7a40x/flash.c
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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
- */
-
-/* #define DEBUG */
-
-#include <common.h>
-#include <environment.h>
-
-#define FLASH_BANK_SIZE 0x1000000 /* 16MB (2 x 8 MB) */
-#define MAIN_SECT_SIZE 0x40000 /* 256KB (2 x 128kB) */
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-#define CMD_READ_ARRAY 0x00FF00FF
-#define CMD_IDENTIFY 0x00900090
-#define CMD_ERASE_SETUP 0x00200020
-#define CMD_ERASE_CONFIRM 0x00D000D0
-#define CMD_PROGRAM 0x00400040
-#define CMD_RESUME 0x00D000D0
-#define CMD_SUSPEND 0x00B000B0
-#define CMD_STATUS_READ 0x00700070
-#define CMD_STATUS_RESET 0x00500050
-
-#define BIT_BUSY 0x00800080
-#define BIT_ERASE_SUSPEND 0x00400040
-#define BIT_ERASE_ERROR 0x00200020
-#define BIT_PROGRAM_ERROR 0x00100010
-#define BIT_VPP_RANGE_ERROR 0x00080008
-#define BIT_PROGRAM_SUSPEND 0x00040004
-#define BIT_PROTECT_ERROR 0x00020002
-#define BIT_UNDEFINED 0x00010001
-
-#define BIT_SEQUENCE_ERROR 0x00300030
-#define BIT_TIMEOUT 0x80000000
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
- (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F640J3A & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = CFG_FLASH_BASE;
- else
- panic ("configured too many flash banks!\n");
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] = flashbase;
-
- /* uniform sector size */
- flashbase += MAIN_SECT_SIZE;
- }
- size += flash_info[i].size;
- }
-
- /*
- * Protect monitor and environment sectors
- */
- flash_protect ( FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
-#ifdef CFG_ENV_ADDR_REDUND
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE_REDUND - 1,
- &flash_info[0]);
-#endif
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (INTEL_MANUFACT & FLASH_VENDMASK):
- printf ("Intel: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (INTEL_ID_28F640J3A & FLASH_TYPEMASK):
- printf ("2x 28F640J3A (64Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- return;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_error (ulong code)
-{
- /* Check bit patterns */
- /* SR.7=0 is busy, SR.7=1 is ready */
- /* all other flags indicate error on 1 */
- /* SR.0 is undefined */
- /* Timeout is our faked flag */
-
- /* sequence is described in Intel 290644-005 document */
-
- /* check Timeout */
- if (code & BIT_TIMEOUT) {
- puts ("Timeout\n");
- return ERR_TIMOUT;
- }
-
- /* check Busy, SR.7 */
- if (~code & BIT_BUSY) {
- puts ("Busy\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Vpp low, SR.3 */
- if (code & BIT_VPP_RANGE_ERROR) {
- puts ("Vpp range error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Device Protect Error, SR.1 */
- if (code & BIT_PROTECT_ERROR) {
- puts ("Device protect error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Command Seq Error, SR.4 & SR.5 */
- if (code & BIT_SEQUENCE_ERROR) {
- puts ("Command seqence error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Block Erase Error, SR.5 */
- if (code & BIT_ERASE_ERROR) {
- puts ("Block erase error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Program Error, SR.4 */
- if (code & BIT_PROGRAM_ERROR) {
- puts ("Program error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Block Erase Suspended, SR.6 */
- if (code & BIT_ERASE_SUSPEND) {
- puts ("Block erase suspended\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Program Suspended, SR.2 */
- if (code & BIT_PROGRAM_SUSPEND) {
- puts ("Program suspended\n");
- return ERR_PROG_ERROR;
- }
-
- /* OK, no error */
- return ERR_OK;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- ulong result, result1;
- int iflag, prot, sect;
- int rc = ERR_OK;
-
-#ifdef USE_920T_MMU
- int cflag;
-#endif
-
- debug ("flash_erase: s_first %d s_last %d\n", s_first, s_last);
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (INTEL_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-#ifdef USE_920T_MMU
- cflag = dcache_status ();
- dcache_disable ();
-#endif
- iflag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
-
- debug ("Erasing sector %2d @ %08lX... ",
- sect, info->start[sect]);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *) (info->start[sect]);
- ulong bsR7, bsR7_2, bsR5, bsR5_2;
-
- /* *addr = CMD_STATUS_RESET; */
- *addr = CMD_ERASE_SETUP;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- do {
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- *addr = CMD_STATUS_RESET;
- result = BIT_TIMEOUT;
- break;
- }
-
- *addr = CMD_STATUS_READ;
- result = *addr;
- bsR7 = result & (1 << 7);
- bsR7_2 = result & (1 << 23);
- } while (!bsR7 | !bsR7_2);
-
- *addr = CMD_STATUS_READ;
- result1 = *addr;
- bsR5 = result1 & (1 << 5);
- bsR5_2 = result1 & (1 << 21);
-#ifdef SAMSUNG_FLASH_DEBUG
- printf ("bsR5 %lx bsR5_2 %lx\n", bsR5, bsR5_2);
- if (bsR5 != 0 && bsR5_2 != 0)
- printf ("bsR5 %lx bsR5_2 %lx\n", bsR5, bsR5_2);
-#endif
-
- *addr = CMD_READ_ARRAY;
- *addr = CMD_RESUME;
-
- if ((rc = flash_error (result)) != ERR_OK)
- goto outahere;
-#if 0
- printf ("ok.\n");
- } else { /* it was protected */
-
- printf ("protected!\n");
-#endif
- }
- }
-
-outahere:
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
-
- if (iflag)
- enable_interrupts ();
-
-#ifdef USE_920T_MMU
- if (cflag)
- dcache_enable ();
-#endif
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *) dest;
- ulong result;
- int rc = ERR_OK;
- int iflag;
-
-#ifdef USE_920T_MMU
- int cflag;
-#endif
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-#ifdef USE_920T_MMU
- cflag = dcache_status ();
- dcache_disable ();
-#endif
- iflag = disable_interrupts ();
-
- /* *addr = CMD_STATUS_RESET; */
- *addr = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait until flash is ready */
- do {
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- *addr = CMD_SUSPEND;
- result = BIT_TIMEOUT;
- break;
- }
-
- *addr = CMD_STATUS_READ;
- result = *addr;
- } while (~result & BIT_BUSY);
-
- /* *addr = CMD_READ_ARRAY; */
- *addr = CMD_STATUS_READ;
- result = *addr;
-
- rc = flash_error (result);
-
- if (iflag)
- enable_interrupts ();
-
-#ifdef USE_920T_MMU
- if (cflag)
- dcache_enable ();
-#endif
- *addr = CMD_READ_ARRAY;
- *addr = CMD_RESUME;
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int l;
- int i, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = *((vu_long *) src);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 4;
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
-
- return write_word (info, wp, data);
-}
diff --git a/board/lpd7a40x/lowlevel_init.S b/board/lpd7a40x/lowlevel_init.S
deleted file mode 100644
index b3ed55ce35..0000000000
--- a/board/lpd7a40x/lowlevel_init.S
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Memory Setup - initialize memory controller(s) for devices required
- * to boot and relocate
- *
- * 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 <config.h>
-#include <version.h>
-
-
-/* memory controller */
-#define BCRX_DEFAULT (0x0000fbe0)
-#define BCRX_MW_8 (0x00000000)
-#define BCRX_MW_16 (0x10000000)
-#define BCRX_MW_32 (0x20000000)
-#define BCRX_PME (0x08000000)
-#define BCRX_WP (0x04000000)
-#define BCRX_WST2_SHIFT (11)
-#define BCRX_WST1_SHIFT (5)
-#define BCRX_IDCY_SHIFT (0)
-
-/* Bank0 Async Flash */
-#define BCR0 (0x80002000)
-#define BCR0_FLASH (BCRX_MW_32 | (0x08<<BCRX_WST2_SHIFT) | (0x0E<<BCRX_WST1_SHIFT))
-
-/* Bank1 Open */
-#define BCR1 (0x80002004)
-
-/* Bank2 Not used (EEPROM?) */
-#define BCR2 (0x80002008)
-
-/* Bank3 Not used */
-#define BCR3 (0x8000200C)
-
-/* Bank4 PC Card1 */
-
-/* Bank5 PC Card2 */
-
-/* Bank6 CPLD IO Controller Peripherals (slow) */
-#define BCR6 (0x80002018)
-#define BCR6_CPLD_SLOW (BCRX_DEFAULT | BCRX_MW_16)
-
-/* Bank7 CPLD IO Controller Peripherals (fast) */
-#define BCR7 (0x8000201C)
-#define BCR7_CPLD_FAST (BCRX_MW_16 | (0x16<<BCRX_WST2_SHIFT) | (0x16<<BCRX_WST1_SHIFT) | (0x2<<BCRX_IDCY_SHIFT))
-
-/* SDRAM */
-#define GBLCNFG (0x80002404)
-#define GC_CKE (0x80000000)
-#define GC_CKSD (0x40000000)
-#define GC_LCR (0x00000040)
-#define GC_SMEMBURST (0x00000020)
-#define GC_MRS (0x00000002)
-#define GC_INIT (0x00000001)
-
-#define GC_CMD_NORMAL (GC_CKE)
-#define GC_CMD_MODE (GC_CKE | GC_MRS)
-#define GC_CMD_SYNCFLASH_LOAD (GC_CKE | GC_MRS | GC_LCR)
-#define GC_CMD_PRECHARGEALL (GC_CKE | GC_INIT)
-#define GC_CMD_NOP (GC_CKE | GC_INIT | GC_MRS)
-
-#define RFSHTMR (0x80002408)
-#define RFSHTMR_INIT (10) /* period=100 ns, HCLK=100Mhz, (2048+1-15.6*66) */
-#define RFSHTMR_NORMAL (1500) /* period=15.6 us, HCLK=100Mhz, (2048+1-15.6*66) */
-
-#define SDCSCX_BASE (0x80002410)
-#define SDCSCX_DEFAULT (0x01220008)
-#define SDCSCX_AUTOPC (0x01000000)
-#define SDCSCX_RAS2CAS_2 (0x00200000)
-#define SDCSCX_RAS2CAS_3 (0x00300000)
-#define SDCSCX_WBL (0x00080000)
-#define SDCSCX_CASLAT_8 (0x00070000)
-#define SDCSCX_CASLAT_7 (0x00060000)
-#define SDCSCX_CASLAT_6 (0x00050000)
-#define SDCSCX_CASLAT_5 (0x00040000)
-#define SDCSCX_CASLAT_4 (0x00030000)
-#define SDCSCX_CASLAT_3 (0x00020000)
-#define SDCSCX_CASLAT_2 (0x00010000)
-#define SDCSCX_2KPAGE (0x00000040)
-#define SDCSCX_SROMLL (0x00000020)
-#define SDCSCX_SROM512 (0x00000010)
-#define SDCSCX_4BNK (0x00000008)
-#define SDCSCX_2BNK (0x00000000)
-#define SDCSCX_EBW_16 (0x00000004)
-#define SDCSCX_EBW_32 (0x00000000)
-
-#define SDRAM_BASE (0xC0000000)
-#define SDCSC_BANK_OFFSET (0x10000000)
-
-/*
- * The SDRAM DEVICE MODE PROGRAMMING VALUE
- */
-#define BURST_LENGTH_4 (2 << 10)
-#define BURST_LENGTH_8 (3 << 10)
-#define WBURST_LENGTH_BL (0 << 19)
-#define WBURST_LENGTH_SINGLE (1 << 19)
-#define CAS_2 (2 << 14)
-#define CAS_3 (3 << 14)
-#define BAT_SEQUENTIAL (0 << 13)
-#define BAT_INTERLEAVED (1 << 13)
-#define OPM_NORMAL (0 << 17)
-#define SDRAM_DEVICE_MODE (WBURST_LENGTH_BL|OPM_NORMAL|CAS_3|BAT_SEQUENTIAL|BURST_LENGTH_4)
-
-
-#define TIMER1_BASE (0x80000C00)
-
-/*
- * special lookup flags
- */
-#define DO_MEM_DELAY 1
-#define DO_MEM_READ 2
-
-_TEXT_BASE:
- .word TEXT_BASE
-
-.globl lowlevel_init
-lowlevel_init:
- mov r9, lr @ save return address
-
- /* memory control configuration */
- /* make r0 relative the current location so that it */
- /* reads INITMEM_DATA out of FLASH rather than memory ! */
- /* r0 = current word pointer */
- /* r1 = end word location, one word past last actual word */
- /* r3 = address for writes, special lookup flags */
- /* r4 = value for writes, delay constants, or read addresses */
- /* r2 = location for mem reads */
-
- ldr r0, =INITMEM_DATA
- ldr r1, _TEXT_BASE
- sub r0, r0, r1
- add r1, r0, #112
-
-mem_loop:
- cmp r1, r0
- moveq pc, r9 @ Done
-
- ldr r3, [r0], #4 @ Fetch Destination Register Address, or 1 for delay
- ldr r4, [r0], #4 @ value
-
- cmp r3, #DO_MEM_DELAY
- bleq mem_delay
- beq mem_loop
- cmp r3, #DO_MEM_READ
- ldreq r2, [r4]
- beq mem_loop
- str r4, [r3] @ normal register/ram store
- b mem_loop
-
-mem_delay:
- ldr r5, =TIMER1_BASE
- mov r6, r4, LSR #1 @ timer resolution is ~2us
- str r6, [r5]
- mov r6, #0x88 @ using 508.469KHz clock, enable
- str r6, [r5, #8]
-0: ldr r6, [r5, #4] @ timer value
- cmp r6, #0
- bne 0b
- mov r6, #0 @ disable timer
- str r6, [r5, #8]
- mov pc, lr
-
- .ltorg
-/* the literal pools origin */
-
-INITMEM_DATA:
- .word BCR0
- .word BCR0_FLASH
- .word BCR6
- .word BCR6_CPLD_SLOW
- .word BCR7
- .word BCR7_CPLD_FAST
- .word SDCSCX_BASE
- .word (SDCSCX_RAS2CAS_3 | SDCSCX_CASLAT_3 | SDCSCX_SROMLL | SDCSCX_4BNK | SDCSCX_EBW_32)
- .word GBLCNFG
- .word GC_CMD_NOP
- .word DO_MEM_DELAY
- .word 200
- .word GBLCNFG
- .word GC_CMD_PRECHARGEALL
- .word RFSHTMR
- .word RFSHTMR_INIT
- .word DO_MEM_DELAY
- .word 8
- .word RFSHTMR
- .word RFSHTMR_NORMAL
- .word GBLCNFG
- .word GC_CMD_MODE
- .word DO_MEM_READ
- .word (SDRAM_BASE | SDRAM_DEVICE_MODE)
- .word GBLCNFG
- .word GC_CMD_NORMAL
- .word SDCSCX_BASE
- .word (SDCSCX_AUTOPC | SDCSCX_RAS2CAS_3 | SDCSCX_CASLAT_3 | SDCSCX_SROMLL | SDCSCX_4BNK | SDCSCX_EBW_32)
diff --git a/board/lpd7a40x/lpd7a40x.c b/board/lpd7a40x/lpd7a40x.c
deleted file mode 100644
index e12bbf04fb..0000000000
--- a/board/lpd7a40x/lpd7a40x.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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 <common.h>
-#if defined(CONFIG_LH7A400)
-#include <lh7a400.h>
-#elif defined(CONFIG_LH7A404)
-#include <lh7a404.h>
-#else
-#error "No CPU defined!"
-#endif
-#include <asm/mach-types.h>
-
-#include <lpd7a400_cpld.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* set up the I/O ports */
-
- /* enable flash programming */
- *(LPD7A400_CPLD_REGPTR(LPD7A400_CPLD_FLASH_REG)) |= FLASH_FPEN;
-
- /* Auto wakeup, LCD disable, WLAN enable */
- *(LPD7A400_CPLD_REGPTR(LPD7A400_CPLD_CECTL_REG)) &=
- ~(CECTL_AWKP|CECTL_LCDV|CECTL_WLPE);
-
- /* Status LED 2 on (leds are active low) */
- *(LPD7A400_CPLD_REGPTR(LPD7A400_CPLD_EXTGPIO_REG)) =
- (EXTGPIO_STATUS1|EXTGPIO_GPIO1) & ~(EXTGPIO_STATUS2);
-
-#if defined(CONFIG_LH7A400)
- /* arch number of Logic-Board - MACH_TYPE_LPD7A400 */
- gd->bd->bi_arch_number = MACH_TYPE_LPD7A400;
-#elif defined(CONFIG_LH7A404)
- /* arch number of Logic-Board - MACH_TYPE_LPD7A400 */
- gd->bd->bi_arch_number = MACH_TYPE_LPD7A404;
-#endif
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xc0000100;
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return 0;
-}
diff --git a/board/lpd7a40x/u-boot.lds b/board/lpd7a40x/u-boot.lds
deleted file mode 100644
index 156b871e57..0000000000
--- a/board/lpd7a40x/u-boot.lds
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/lh7a40x/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/lubbock/Makefile b/board/lubbock/Makefile
deleted file mode 100644
index 8e397b411c..0000000000
--- a/board/lubbock/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := lubbock.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/lubbock/config.mk b/board/lubbock/config.mk
deleted file mode 100644
index 55c8b270a1..0000000000
--- a/board/lubbock/config.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-#TEXT_BASE = 0xa1700000
-TEXT_BASE = 0xa3080000
-#TEXT_BASE = 0
diff --git a/board/lubbock/flash.c b/board/lubbock/flash.c
deleted file mode 100644
index ba82892dde..0000000000
--- a/board/lubbock/flash.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (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 <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-void inline spin_wheel (void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- case 1:
- flash_get_size ((FPW *) PHYS_FLASH_2, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_2, &flash_info[i]);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect ( FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0] );
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0] );
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x02000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = 0x00500050; /* clear status register cmd. */
- *addr = 0x00FF00FF; /* resest to read mode */
-
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/lubbock/lowlevel_init.S b/board/lubbock/lowlevel_init.S
deleted file mode 100644
index 15276e89d0..0000000000
--- a/board/lubbock/lowlevel_init.S
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * Most of this taken from Redboot hal_platform_setup.h with cleanup
- *
- * NOTE: I haven't clean this up considerably, just enough to get it
- * running. See hal_platform_setup.h for the source. See
- * board/cradle/lowlevel_init.S for another PXA250 setup that is
- * much cleaner.
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-DRAM_SIZE: .long CFG_DRAM_SIZE
-
-/* wait for coprocessor write complete */
- .macro CPWAIT reg
- mrc p15,0,\reg,c2,c0,0
- mov \reg,\reg
- sub pc,pc,#4
- .endm
-
-
-/*
- * Memory setup
- */
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
- /* Set up GPIO pins first ----------------------------------------- */
-
- ldr r0, =GPSR0
- ldr r1, =CFG_GPSR0_VAL
- str r1, [r0]
-
- ldr r0, =GPSR1
- ldr r1, =CFG_GPSR1_VAL
- str r1, [r0]
-
- ldr r0, =GPSR2
- ldr r1, =CFG_GPSR2_VAL
- str r1, [r0]
-
- ldr r0, =GPCR0
- ldr r1, =CFG_GPCR0_VAL
- str r1, [r0]
-
- ldr r0, =GPCR1
- ldr r1, =CFG_GPCR1_VAL
- str r1, [r0]
-
- ldr r0, =GPCR2
- ldr r1, =CFG_GPCR2_VAL
- str r1, [r0]
-
- ldr r0, =GPDR0
- ldr r1, =CFG_GPDR0_VAL
- str r1, [r0]
-
- ldr r0, =GPDR1
- ldr r1, =CFG_GPDR1_VAL
- str r1, [r0]
-
- ldr r0, =GPDR2
- ldr r1, =CFG_GPDR2_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_L
- ldr r1, =CFG_GAFR0_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_U
- ldr r1, =CFG_GAFR0_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_L
- ldr r1, =CFG_GAFR1_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_U
- ldr r1, =CFG_GAFR1_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_L
- ldr r1, =CFG_GAFR2_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_U
- ldr r1, =CFG_GAFR2_U_VAL
- str r1, [r0]
-
- ldr r0, =PSSR /* enable GPIO pins */
- ldr r1, =CFG_PSSR_VAL
- str r1, [r0]
-
- /* ---------------------------------------------------------------- */
- /* Enable memory interface */
- /* */
- /* The sequence below is based on the recommended init steps */
- /* detailed in the Intel PXA250 Operating Systems Developers Guide, */
- /* Chapter 10. */
- /* ---------------------------------------------------------------- */
-
- /* ---------------------------------------------------------------- */
- /* Step 1: Wait for at least 200 microsedonds to allow internal */
- /* clocks to settle. Only necessary after hard reset... */
- /* FIXME: can be optimized later */
- /* ---------------------------------------------------------------- */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-mem_init:
-
- ldr r1, =MEMC_BASE /* get memory controller base addr. */
-
- /* ---------------------------------------------------------------- */
- /* Step 2a: Initialize Asynchronous static memory controller */
- /* ---------------------------------------------------------------- */
-
- /* MSC registers: timing, bus width, mem type */
-
- /* MSC0: nCS(0,1) */
- ldr r2, =CFG_MSC0_VAL
- str r2, [r1, #MSC0_OFFSET]
- ldr r2, [r1, #MSC0_OFFSET] /* read back to ensure */
- /* that data latches */
- /* MSC1: nCS(2,3) */
- ldr r2, =CFG_MSC1_VAL
- str r2, [r1, #MSC1_OFFSET]
- ldr r2, [r1, #MSC1_OFFSET]
-
- /* MSC2: nCS(4,5) */
- ldr r2, =CFG_MSC2_VAL
- str r2, [r1, #MSC2_OFFSET]
- ldr r2, [r1, #MSC2_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2b: Initialize Card Interface */
- /* ---------------------------------------------------------------- */
-
- /* MECR: Memory Expansion Card Register */
- ldr r2, =CFG_MECR_VAL
- str r2, [r1, #MECR_OFFSET]
- ldr r2, [r1, #MECR_OFFSET]
-
- /* MCMEM0: Card Interface slot 0 timing */
- ldr r2, =CFG_MCMEM0_VAL
- str r2, [r1, #MCMEM0_OFFSET]
- ldr r2, [r1, #MCMEM0_OFFSET]
-
- /* MCMEM1: Card Interface slot 1 timing */
- ldr r2, =CFG_MCMEM1_VAL
- str r2, [r1, #MCMEM1_OFFSET]
- ldr r2, [r1, #MCMEM1_OFFSET]
-
- /* MCATT0: Card Interface Attribute Space Timing, slot 0 */
- ldr r2, =CFG_MCATT0_VAL
- str r2, [r1, #MCATT0_OFFSET]
- ldr r2, [r1, #MCATT0_OFFSET]
-
- /* MCATT1: Card Interface Attribute Space Timing, slot 1 */
- ldr r2, =CFG_MCATT1_VAL
- str r2, [r1, #MCATT1_OFFSET]
- ldr r2, [r1, #MCATT1_OFFSET]
-
- /* MCIO0: Card Interface I/O Space Timing, slot 0 */
- ldr r2, =CFG_MCIO0_VAL
- str r2, [r1, #MCIO0_OFFSET]
- ldr r2, [r1, #MCIO0_OFFSET]
-
- /* MCIO1: Card Interface I/O Space Timing, slot 1 */
- ldr r2, =CFG_MCIO1_VAL
- str r2, [r1, #MCIO1_OFFSET]
- ldr r2, [r1, #MCIO1_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2c: Write FLYCNFG FIXME: what's that??? */
- /* ---------------------------------------------------------------- */
-
-
- /* ---------------------------------------------------------------- */
- /* Step 2d: Initialize Timing for Sync Memory (SDCLK0) */
- /* ---------------------------------------------------------------- */
-
- /* Before accessing MDREFR we need a valid DRI field, so we set */
- /* this to power on defaults + DRI field. */
-
- ldr r3, =CFG_MDREFR_VAL
- ldr r2, =0xFFF
- and r3, r3, r2
- ldr r4, =0x03ca4000
- orr r4, r4, r3
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
- /* Note: preserve the mdrefr value in r4 */
-
-
- /* ---------------------------------------------------------------- */
- /* Step 3: Initialize Synchronous Static Memory (Flash/Peripherals) */
- /* ---------------------------------------------------------------- */
-
- /* Initialize SXCNFG register. Assert the enable bits */
-
- /* Write SXMRS to cause an MRS command to all enabled banks of */
- /* synchronous static memory. Note that SXLCR need not be written */
- /* at this time. */
-
- /* FIXME: we use async mode for now */
-
-
- /* ---------------------------------------------------------------- */
- /* Step 4: Initialize SDRAM */
- /* ---------------------------------------------------------------- */
-
- /* set MDREFR according to user define with exception of a few bits */
-
- ldr r4, =CFG_MDREFR_VAL
- orr r4, r4, #(MDREFR_SLFRSH)
- bic r4, r4, #(MDREFR_E1PIN|MDREFR_E0PIN)
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
- /* Step 4b: de-assert MDREFR:SLFRSH. */
-
- bic r4, r4, #(MDREFR_SLFRSH)
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
-
- /* Step 4c: assert MDREFR:E1PIN and E0PIO as desired */
-
- ldr r4, =CFG_MDREFR_VAL
- str r4, [r1, #MDREFR_OFFSET] /* write back MDREFR */
- ldr r4, [r1, #MDREFR_OFFSET]
-
-
- /* Step 4d: write MDCNFG with MDCNFG:DEx deasserted (set to 0), to */
- /* configure but not enable each SDRAM partition pair. */
-
- ldr r4, =CFG_MDCNFG_VAL
- bic r4, r4, #(MDCNFG_DE0|MDCNFG_DE1)
-
- str r4, [r1, #MDCNFG_OFFSET] /* write back MDCNFG */
- ldr r4, [r1, #MDCNFG_OFFSET]
-
-
- /* Step 4e: Wait for the clock to the SDRAMs to stabilize, */
- /* 100..200 µsec. */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-
- /* Step 4f: Trigger a number (usually 8) refresh cycles by */
- /* attempting non-burst read or write accesses to disabled */
- /* SDRAM, as commonly specified in the power up sequence */
- /* documented in SDRAM data sheets. The address(es) used */
- /* for this purpose must not be cacheable. */
-
- ldr r3, =CFG_DRAM_BASE
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
-
-
- /* Step 4g: Write MDCNFG with enable bits asserted */
- /* (MDCNFG:DEx set to 1). */
-
- ldr r3, [r1, #MDCNFG_OFFSET]
- orr r3, r3, #(MDCNFG_DE0|MDCNFG_DE1)
- str r3, [r1, #MDCNFG_OFFSET]
-
- /* Step 4h: Write MDMRS. */
-
- ldr r2, =CFG_MDMRS_VAL
- str r2, [r1, #MDMRS_OFFSET]
-
-
- /* We are finished with Intel's memory controller initialisation */
-
-
- /* ---------------------------------------------------------------- */
- /* Disable (mask) all interrupts at interrupt controller */
- /* ---------------------------------------------------------------- */
-
-initirqs:
-
- mov r1, #0 /* clear int. level register (IRQ, not FIQ) */
- ldr r2, =ICLR
- str r1, [r2]
-
- ldr r2, =ICMR /* mask all interrupts at the controller */
- str r1, [r2]
-
-
- /* ---------------------------------------------------------------- */
- /* Clock initialisation */
- /* ---------------------------------------------------------------- */
-
-initclks:
-
- /* Disable the peripheral clocks, and set the core clock frequency */
- /* (hard-coding at 398.12MHz for now). */
-
- /* Turn Off ALL on-chip peripheral clocks for re-configuration */
- /* Note: See label 'ENABLECLKS' for the re-enabling */
- ldr r1, =CKEN
- mov r2, #0
- str r2, [r1]
-
-
- /* default value in case no valid rotary switch setting is found */
- ldr r2, =(CCCR_L27|CCCR_M2|CCCR_N10) /* DEFAULT: {200/200/100} */
-
- /* ... and write the core clock config register */
- ldr r1, =CCCR
- str r2, [r1]
-
-#ifdef RTC
- /* enable the 32Khz oscillator for RTC and PowerManager */
-
- ldr r1, =OSCC
- mov r2, #OSCC_OON
- str r2, [r1]
-
- /* NOTE: spin here until OSCC.OOK get set, meaning the PLL */
- /* has settled. */
-60:
- ldr r2, [r1]
- ands r2, r2, #1
- beq 60b
-#endif
-
- /* ---------------------------------------------------------------- */
- /* */
- /* ---------------------------------------------------------------- */
-
- /* Save SDRAM size */
- ldr r1, =DRAM_SIZE
- str r8, [r1]
-
- /* Interrupt init: Mask all interrupts */
- ldr r0, =ICMR /* enable no sources */
- mov r1, #0
- str r1, [r0]
-
- /* FIXME */
-
-#define NODEBUG
-#ifdef NODEBUG
- /*Disable software and data breakpoints */
- mov r0,#0
- mcr p15,0,r0,c14,c8,0 /* ibcr0 */
- mcr p15,0,r0,c14,c9,0 /* ibcr1 */
- mcr p15,0,r0,c14,c4,0 /* dbcon */
-
- /*Enable all debug functionality */
- mov r0,#0x80000000
- mcr p14,0,r0,c10,c0,0 /* dcsr */
-
-#endif
-
- /* ---------------------------------------------------------------- */
- /* End lowlevel_init */
- /* ---------------------------------------------------------------- */
-
-endlowlevel_init:
-
- mov pc, lr
diff --git a/board/lubbock/lubbock.c b/board/lubbock/lubbock.c
deleted file mode 100644
index 58291706c0..0000000000
--- a/board/lubbock/lubbock.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* arch number of Lubbock-Board */
- gd->bd->bi_arch_number = MACH_TYPE_LUBBOCK;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xa0000100;
-
- return 0;
-}
-
-int board_late_init(void)
-{
- setenv("stdout", "serial");
- setenv("stderr", "serial");
- return 0;
-}
-
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
- gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
- gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
- gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
- gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
-
- return 0;
-}
diff --git a/board/lubbock/u-boot.lds b/board/lubbock/u-boot.lds
deleted file mode 100644
index f0102391b3..0000000000
--- a/board/lubbock/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/lwmon/Makefile b/board/lwmon/Makefile
deleted file mode 100644
index 2b10b0c518..0000000000
--- a/board/lwmon/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o pcmcia.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/lwmon/README.keybd b/board/lwmon/README.keybd
deleted file mode 100644
index 54f0aeb81f..0000000000
--- a/board/lwmon/README.keybd
+++ /dev/null
@@ -1,126 +0,0 @@
-
-Tastaturabfrage:
-
-Die Implementierung / Decodierung beruht auf den Angaben aus dem Do-
-kument "PIC LWE-Tastatur" in der Fassung vom 9. 3. 2001, insbesonde-
-re Tabelle 3 im Kapitel 4.3 Tastencodes. In U-Boot werden die vom
-Keyboard-Controller gelesenen Daten hexadezimal codiert in der auto-
-matisch angelegten Environment-Variablen "keybd" übergeben. Ist kei-
-ne Taste gedrückt worden, steht dort:
-
- keybd=000000000000000000
-
-Der decodierte Tastencode ("keybd") kann mit den "bootargs" an den
-Linux-Kernel übergeben und dort z. B. in einem Device-Treiber oder
-einer Applikation ausgewertet werden.
-
-
-Sonderfunktionen beim Booten:
-
-Es lassen sich eine oder mehrere (beliebig viele) Tasten oder Tasten-
-kombinationen definieren, die Sonderfunktionen auslösen, wenn diese
-Tasten beim Booten (Reset) gedrückt sind.
-
-Wird eine eingestellte Taste bzw. Tastenkombination erkannt, so wird
-in U-Boot noch vor dem Start des "Countdown" und somit vor jedem an-
-deren Kommando der Inhalt einer dieser Taste bzw. Tastenkombination
-zugeordneten Environment-Variablen ausführen.
-
-
-Die Environment-Variable "magic_keys" wird als Liste von Zeichen ver-
-standen, die als Suffix an den Namen "key_magic" angefügt werden und
-so die Namen der Environment-Variablen definieren, mit denen die
-Tasten (-kombinationen) festgelegt werden:
-
-Ist "magic_keys" NICHT definiert, so wird nur die in der Environment-
-Variablen "key_magic" codierte Tasten (-kombination) geprüft, und
-ggf. der Inhalt der Environment-Variablen "key_cmd" ausgeführt (ge-
-nauer: der Inhalt von "key_cmd" wird der Variablen "preboot" zugewie-
-sen, die ausgeführt wird, unmittelbar bevor die interaktive Kommando-
-interpretation beginnt).
-
-Enthält "magic_keys" z. B. die Zeichenkette "0123CB*", so werden
-nacheinander folgende Aktionen ausgeführt:
-
- prüfe Tastencode ggf. führe aus Kommando
- in Variable in Variable
- -----------------------------------
- key_magic0 ==> key_cmd0
- key_magic1 ==> key_cmd1
- key_magic2 ==> key_cmd2
- key_magic3 ==> key_cmd3
- key_magicC ==> key_cmdC
- key_magicB ==> key_cmdB
- key_magicA ==> key_cmdA
- key_magic* ==> key_cmd*
-
-Hinweis: sobald ein aktivierter Tastencode erkannt wurde, wird die
-Bearbeitung abgebrochen; es wird daher höchstens eines der definier-
-ten Kommandos ausgeführt, wobei die Priorität durch die Suchreihen-
-folge festgelegt wird, also durch die Reihenfolge der Zeichen in der
-Varuiablen "magic_keys".
-
-
-Die Codierung der Tasten, die beim Booten gedrückt werden müssen, um
-eine Funktion auszulösen, erfolgt nach der Tastaturtabelle.
-
-Die Definitionen
-
- => setenv key_magic0 3a+3b
- => setenv key_cmd0 setenv bootdelay 30
-
-bedeuten dementsprechend, daß die Tasten mit den Codes 0x3A (Taste
-"F1") und 0x3B (Taste "F2") gleichzeitig gedrückt werden müssen. Sie
-können dort eine beliebige Tastenkombination eintragen (jeweils 2
-Zeichen für die Hex-Codes der Tasten, und '+' als Trennzeichen).
-
-Wird die eingestellte Tastenkombination erkannt, so wird in U-Boot
-noch vor dem Start des "Countdown" und somit vor jedem anderen Kom-
-mando das angebene Kommando ausgeführt und somit ein langes Boot-
-Delay eingetragen.
-
-Praktisch könnten Sie also in U-Boot "bootdelay" auf 0 setzen und
-somit stets ohne jede User-Interaktion automatisch booten, außer,
-wenn die beiden Tasten "F1" und "F2" beim Booten gedrückt werden:
-dann würde ein Boot-Delay von 30 Sekunden eingefügt.
-
-
-Hinweis: dem Zeichen '#' kommt innerhalb von "magic_keys" eine beson-
-dere Bedeutung zu: die dadurch definierte Key-Sequenz schaltet den
-Monitor in den "Debug-Modus" - das bedeutet zunächst, daß alle weite-
-ren Meldungen von U-Boot über das LCD-Display ausgegeben werden;
-außerdem kann man durch das mit dieser Tastenkombination verknüpfte
-Kommando z. B. die Linux-Bootmeldungen ebenfalls auf das LCD-Display
-legen, so daß der Boot-Vorgang direkt und ohne weitere Hilfsmittel
-analysiert werden kann.
-
-Beispiel:
-
-In U-Boot werden folgende Environment-Variablen gesetzt und abgespei-
-chert:
-
-(1) => setenv magic_keys 01234#X
-(2) => setenv key_cmd# setenv addfb setenv bootargs \\${bootargs} console=tty0 console=ttyS1,\\${baudrate}
-(3) => setenv nfsargs setenv bootargs root=/dev/nfs rw nfsroot=\${serverip}:\${rootpath}
-(4) => setenv addip setenv bootargs \${bootargs} ip=\${ipaddr}:\${serverip}:\${gatewayip}:\${netmask}:\${hostname}::off panic=1
-(5) => setenv addfb setenv bootargs \${bootargs} console=ttyS1,\${baudrate}
-(6) => setenv bootcmd bootp\;run nfsargs\;run addip\;run addfb\;bootm
-
-Hierbei wird die Linux Commandline (in der Variablen "bootargs") im
-Boot-Kommando "bootcmd" (6) schrittweise zusammengesetzt: zunächst
-werden die für Root-Filesystem über NFS erforderlichen Optionen ge-
-setzt ("run nfsargs", vgl. (3)), dann die Netzwerkkonfiguration an-
-gefügt ("run addip", vgl. (4)), und schließlich die Systemconsole
-definiert ("run addfb").
-
-Dabei wird im Normalfall die Definition (5) verwendt; wurde aller-
-dings beim Reset die entsprechende Taste gedrückt gehalten, so wird
-diese Definition bei der Ausführung des in (2) definierten Kommandos
-überschrieben, so daß Linux die Bootmeldungen auch über das Frame-
-buffer-Device (=LCD-Display) ausgibt.
-
-Beachten Sie die Verdoppelung der '\'-Escapes in der Definition von
-"key_cmd#" - diese ist erforderlich, weil der String _zweimal_ inter-
-pretiert wird: das erste Mal bei der Eingabe von "key_cmd#", das
-zweite Mal, wenn der String (als Inhalt von "preboot") ausgeführt
-wird.
diff --git a/board/lwmon/config.mk b/board/lwmon/config.mk
deleted file mode 100644
index dfa952add0..0000000000
--- a/board/lwmon/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (C) Copyright 2001
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# Ulrich Lutz, Speech Design GmbH, ulutz@datalab.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
-#
-
-#
-# LWE Monitorcontroller Litronic LCD IV boards
-#
-
-TEXT_BASE = 0x40000000
-#TEXT_BASE = 0x41000000
diff --git a/board/lwmon/flash.c b/board/lwmon/flash.c
deleted file mode 100644
index b894887c93..0000000000
--- a/board/lwmon/flash.c
+++ /dev/null
@@ -1,648 +0,0 @@
-/*
- * (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
- */
-
-/* #define DEBUG */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*---------------------------------------------------------------------*/
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, ulong data);
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-static int write_data_buf (flash_info_t * info, ulong dest, uchar * cp, int len);
-#endif
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- debug ("\n## Get flash bank 1 size @ 0x%08x\n",FLASH_BASE0_PRELIM);
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0: "
- "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
- flash_info[0].flash_id,
- size_b0, size_b0<<20);
- }
-
- debug ("## Get flash bank 2 size @ 0x%08x\n",FLASH_BASE1_PRELIM);
-
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- debug ("## Prelim. Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-
- debug ("## Before remap: "
- "BR0: 0x%08x OR0: 0x%08x "
- "BR1: 0x%08x OR1: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0,
- memctl->memc_br1, memctl->memc_or1);
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = (-size_b0 & 0xFFFF8000) | CFG_OR_TIMING_FLASH |
- OR_CSNT_SAM | OR_ACS_DIV1;
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_PS_32 | BR_V;
-
- debug ("## BR0: 0x%08x OR0: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0);
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- memctl->memc_or1 = (-size_b1 & 0xFFFF8000) | CFG_OR_TIMING_FLASH |
- OR_CSNT_SAM | OR_ACS_DIV1;
- memctl->memc_br1 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_PS_32 | BR_V;
-
- debug ("## BR1: 0x%08x OR1: 0x%08x\n",
- memctl->memc_br1, memctl->memc_or1);
-
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(CFG_FLASH_BASE + size_b0),
- &flash_info[1]);
-
- flash_info[1].size = size_b1;
-
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[1]);
-#endif
- } else {
- memctl->memc_br1 = 0; /* invalidate bank */
- memctl->memc_or1 = 0; /* invalidate bank */
-
- debug ("## DISABLE BR1: 0x%08x OR1: 0x%08x\n",
- memctl->memc_br1, memctl->memc_or1);
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- flash_info[1].size = 0;
- }
-
- debug ("## Final Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- base += 0x00020000 * 2; /* 128k * 2 chips per bank */
- }
- return;
-
- default:
- printf ("Don't know sector ofsets for flash type 0x%lx\n",
- info->flash_id);
- return;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("Fujitsu "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("Intel "); break;
- case FLASH_MAN_MT: printf ("MT "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J3A: printf ("28F320J3A (32Mbit = 128K x 32)\n");
- break;
- case FLASH_28F640J3A: printf ("28F640J3A (64Mbit = 128K x 64)\n");
- break;
- case FLASH_28F128J3A: printf ("28F128J3A (128Mbit = 128K x 128)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size >= (1 << 20)) {
- i = 20;
- } else {
- i = 10;
- }
- printf (" Size: %ld %cB in %d Sectors\n",
- info->size >> i,
- (i == 20) ? 'M' : 'k',
- info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- ulong value;
-
- /* Read Manufacturer ID */
- addr[0] = 0x00900090;
- value = addr[0];
-
- debug ("Manuf. ID @ 0x%08lx: 0x%08lx\n", (ulong)addr, value);
-
- switch (value) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- case INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- debug ("Device ID @ 0x%08lx: 0x%08lx\n", (ulong)(&addr[1]), value);
-
- switch (value) {
- case INTEL_ID_28F320J3A:
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000 * 2;
- break; /* => 8 MB */
-
- case INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000 * 2;
- break; /* => 16 MB */
-
- case INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000 * 2;
- break; /* => 32 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- addr[0] = 0x00FF00FF; /* restore read mode */
- return (0); /* => no or unknown flash */
-
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- debug ("flash_erase: first: %d last: %d\n", s_first, s_last);
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
- printf ("Can erase only Intel flash types - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *)(info->start[sect]);
- unsigned long status;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = 0x00600060; /* clear lock bit setup */
- *addr = 0x00D000D0; /* clear lock bit confirm */
-
- udelay (1000);
- /* This takes awfully long - up to 50 ms and more */
- while (((status = *addr) & 0x00800080) != 0x00800080) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = 0x00FF00FF; /* reset to read mode */
- return 1;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- udelay (1000); /* to trigger the watchdog */
- }
-
- *addr = 0x00500050; /* clear status register */
- *addr = 0x00200020; /* erase setup */
- *addr = 0x00D000D0; /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = *addr) & 0x00800080) != 0x00800080) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = 0x00B000B0; /* suspend erase */
- *addr = 0x00FF00FF; /* reset to read mode */
- return 1;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- udelay (1000); /* to trigger the watchdog */
- }
-
- *addr = 0x00FF00FF; /* reset to read mode */
- }
- }
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define FLASH_WIDTH 4 /* flash bus width in bytes */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- wp = (addr & ~(FLASH_WIDTH-1)); /* get lower FLASH_WIDTH aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<FLASH_WIDTH && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<FLASH_WIDTH; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_data(info, wp, data)) != 0) {
- return (rc);
- }
- wp += FLASH_WIDTH;
- }
-
- /*
- * handle FLASH_WIDTH aligned part
- */
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
- while(cnt >= FLASH_WIDTH) {
- i = CFG_FLASH_BUFFER_SIZE > cnt ?
- (cnt & ~(FLASH_WIDTH - 1)) : CFG_FLASH_BUFFER_SIZE;
- if((rc = write_data_buf(info, wp, src,i)) != 0)
- return rc;
- wp += i;
- src += i;
- cnt -=i;
- }
-#else
- while (cnt >= FLASH_WIDTH) {
- data = 0;
- for (i=0; i<FLASH_WIDTH; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data(info, wp, data)) != 0) {
- return (rc);
- }
- wp += FLASH_WIDTH;
- cnt -= FLASH_WIDTH;
- }
-#endif /* CFG_FLASH_USE_BUFFER_WRITE */
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<FLASH_WIDTH && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<FLASH_WIDTH; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_data(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Check flash status, returns:
- * 0 - OK
- * 1 - timeout
- */
-static int flash_status_check(vu_long *addr, ulong tout, char * prompt)
-{
- ulong status;
- ulong start;
-
- /* Wait for command completion */
- start = get_timer (0);
- while(((status = *addr) & 0x00800080) != 0x00800080) {
- if (get_timer(start) > tout) {
- printf("Flash %s timeout at address %p\n", prompt, addr);
- *addr = 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)dest;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = 0x00400040; /* write setup */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- if (flash_status_check(addr, CFG_FLASH_WRITE_TOUT, "write") != 0) {
- return (1);
- }
-
- *addr = 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-/*-----------------------------------------------------------------------
- * Write a buffer to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- */
-static int write_data_buf(flash_info_t * info, ulong dest, uchar * cp, int len)
-{
- vu_long *addr = (vu_long *)dest;
- int sector;
- int cnt;
- int retcode;
- vu_long * src = (vu_long *)cp;
- vu_long * dst = (vu_long *)dest;
-
- /* find sector */
- for(sector = info->sector_count - 1; sector >= 0; sector--) {
- if(dest >= info->start[sector])
- break;
- }
-
- *addr = 0x00500050; /* clear status */
- *addr = 0x00e800e8; /* write buffer */
-
- if((retcode = flash_status_check(addr, CFG_FLASH_BUFFER_WRITE_TOUT,
- "write to buffer")) == 0) {
- cnt = len / FLASH_WIDTH;
- *addr = (cnt-1) | ((cnt-1) << 16);
- while(cnt-- > 0) {
- *dst++ = *src++;
- }
- *addr = 0x00d000d0; /* write buffer confirm */
- retcode = flash_status_check(addr, CFG_FLASH_BUFFER_WRITE_TOUT,
- "buffer write");
- }
- *addr = 0x00FF00FF; /* restore read mode */
- *addr = 0x00500050; /* clear status */
- return retcode;
-}
-#endif /* CFG_USE_FLASH_BUFFER_WRITE */
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/lwmon/lwmon.c b/board/lwmon/lwmon.c
deleted file mode 100644
index 9e8ea2db19..0000000000
--- a/board/lwmon/lwmon.c
+++ /dev/null
@@ -1,1062 +0,0 @@
-/***********************************************************************
- *
-M* Modul: lwmon.c
-M*
-M* Content: LWMON specific U-Boot commands.
- *
- * (C) Copyright 2001, 2002
- * DENX Software Engineering
- * Wolfgang Denk, wd@denx.de
- * All rights reserved.
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@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
- ***********************************************************************/
-
-/*---------------------------- Headerfiles ----------------------------*/
-#include <common.h>
-#include <mpc8xx.h>
-#include <commproc.h>
-#include <i2c.h>
-#include <command.h>
-#include <malloc.h>
-#include <post.h>
-#include <serial.h>
-
-#include <linux/types.h>
-#include <linux/string.h> /* for strdup */
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*------------------------ Local prototypes ---------------------------*/
-static long int dram_size (long int, long int *, long int);
-static void kbd_init (void);
-static int compare_magic (uchar *kbd_data, uchar *str);
-
-
-/*--------------------- Local macros and constants --------------------*/
-#define _NOT_USED_ 0xFFFFFFFF
-
-#ifdef CONFIG_MODEM_SUPPORT
-static int key_pressed(void);
-extern void disable_putc(void);
-#endif /* CONFIG_MODEM_SUPPORT */
-
-/*
- * 66 MHz SDRAM access using UPM A
- */
-const uint sdram_table[] =
-{
-#if defined(CFG_MEMORY_75) || defined(CFG_MEMORY_8E)
- /*
- * Single Read. (Offset 0 in UPM RAM)
- */
- 0x1F0DFC04, 0xEEAFBC04, 0x11AF7C04, 0xEFBAFC00,
- 0x1FF5FC47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPM RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FF5FC34, 0xEFEABC34, 0x1FB57C35, /* last */
- /*
- * Burst Read. (Offset 8 in UPM RAM)
- */
- 0x1F0DFC04, 0xEEAFBC04, 0x10AF7C04, 0xF0AFFC00,
- 0xF0AFFC00, 0xF1AFFC00, 0xEFBAFC00, 0x1FF5FC47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPM RAM)
- */
- 0x1F2DFC04, 0xEEABBC00, 0x01B27C04, 0x1FF5FC47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPM RAM)
- */
- 0x1F0DFC04, 0xEEABBC00, 0x10A77C00, 0xF0AFFC00,
- 0xF0AFFC00, 0xE1BAFC04, 0x01FF5FC47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPM RAM)
- */
- 0x1FFD7C84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPM RAM)
- */
- 0x7FFFFC07, /* last */
- 0xFFFFFCFF, 0xFFFFFCFF, 0xFFFFFCFF,
-#endif
-#ifdef CFG_MEMORY_7E
- /*
- * Single Read. (Offset 0 in UPM RAM)
- */
- 0x0E2DBC04, 0x11AF7C04, 0xEFBAFC00, 0x1FF5FC47, /* last */
- _NOT_USED_,
- /*
- * SDRAM Initialization (offset 5 in UPM RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FF5FC34, 0xEFEABC34, 0x1FB57C35, /* last */
- /*
- * Burst Read. (Offset 8 in UPM RAM)
- */
- 0x0E2DBC04, 0x10AF7C04, 0xF0AFFC00, 0xF0AFFC00,
- 0xF1AFFC00, 0xEFBAFC00, 0x1FF5FC47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPM RAM)
- */
- 0x0E29BC04, 0x01B27C04, 0x1FF5FC47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPM RAM)
- */
- 0x0E29BC04, 0x10A77C00, 0xF0AFFC00, 0xF0AFFC00,
- 0xE1BAFC04, 0x1FF5FC47, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPM RAM)
- */
- 0x1FFD7C84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPM RAM)
- */
- 0x7FFFFC07, /* last */
- 0xFFFFFCFF, 0xFFFFFCFF, 0xFFFFFCFF,
-#endif
-};
-
-/*
- * Check Board Identity:
- *
- */
-
-/***********************************************************************
-F* Function: int checkboard (void) P*A*Z*
- *
-P* Parameters: none
-P*
-P* Returnvalue: int - 0 is always returned
- *
-Z* Intention: This function is the checkboard() method implementation
-Z* for the lwmon board. Only a standard message is printed.
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int checkboard (void)
-{
- puts ("Board: LICCON Konsole LCD3\n");
- return (0);
-}
-
-/***********************************************************************
-F* Function: long int initdram (int board_type) P*A*Z*
- *
-P* Parameters: int board_type
-P* - Usually type of the board - ignored here.
-P*
-P* Returnvalue: long int
-P* - Size of initialized memory
- *
-Z* Intention: This function is the initdram() method implementation
-Z* for the lwmon board.
-Z* The memory controller is initialized to access the
-Z* DRAM.
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-long int initdram (int board_type)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immr->im_memctl;
- long int size_b0;
- long int size8, size9;
- int i;
-
- /*
- * Configure UPMA for SDRAM
- */
- upmconfig (UPMA, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
-
- memctl->memc_mptpr = CFG_MPTPR;
-
- /* burst length=4, burst type=sequential, CAS latency=2 */
- memctl->memc_mar = CFG_MAR;
-
- /*
- * Map controller bank 3 to the SDRAM bank at preliminary address.
- */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
-
- /* initialize memory address register */
- memctl->memc_mamr = CFG_MAMR_8COL; /* refresh not enabled yet */
-
- /* mode initialization (offset 5) */
- udelay (200); /* 0x80006105 */
- memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x05);
-
- /* run 2 refresh sequence with 4-beat refresh burst (offset 0x30) */
- udelay (1); /* 0x80006130 */
- memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x30);
- udelay (1); /* 0x80006130 */
- memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x30);
-
- udelay (1); /* 0x80006106 */
- memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS3 | MCR_MLCF (1) | MCR_MAD (0x06);
-
- memctl->memc_mamr |= MAMR_PTAE; /* refresh enabled */
-
- udelay (200);
-
- /* Need at least 10 DRAM accesses to stabilize */
- for (i = 0; i < 10; ++i) {
- volatile unsigned long *addr =
- (volatile unsigned long *) SDRAM_BASE3_PRELIM;
- unsigned long val;
-
- val = *(addr + i);
- *(addr + i) = val;
- }
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL, (long *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL, (long *)SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size_b0 = size9;
- memctl->memc_mamr = CFG_MAMR_9COL | MAMR_PTAE;
- udelay (500);
- } else { /* back to 8 columns */
- size_b0 = size8;
- memctl->memc_mamr = CFG_MAMR_8COL | MAMR_PTAE;
- udelay (500);
- }
-
- /*
- * Final mapping:
- */
-
- memctl->memc_or3 = ((-size_b0) & 0xFFFF0000) |
- OR_CSNT_SAM | OR_G5LS | SDRAM_TIMING;
- memctl->memc_br3 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
- udelay (1000);
-
- return (size_b0);
-}
-
-/***********************************************************************
-F* Function: static long int dram_size (long int mamr_value,
-F* long int *base,
-F* long int maxsize) P*A*Z*
- *
-P* Parameters: long int mamr_value
-P* - Value for MAMR for the test
-P* long int *base
-P* - Base address for the test
-P* long int maxsize
-P* - Maximum size to test for
-P*
-P* Returnvalue: long int
-P* - Size of probed memory
- *
-Z* Intention: Check memory range for valid RAM. A simple memory test
-Z* determines the actually available RAM size between
-Z* addresses `base' and `base + maxsize'. Some (not all)
-Z* hardware errors are detected:
-Z* - short between address lines
-Z* - short between data lines
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-static long int dram_size (long int mamr_value, long int *base, long int maxsize)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immr->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#ifndef PB_ENET_TENA
-# define PB_ENET_TENA ((uint)0x00002000) /* PB 18 */
-#endif
-
-/***********************************************************************
-F* Function: int board_early_init_f (void) P*A*Z*
- *
-P* Parameters: none
-P*
-P* Returnvalue: int
-P* - 0 is always returned.
- *
-Z* Intention: This function is the board_early_init_f() method implementation
-Z* for the lwmon board.
-Z* Disable Ethernet TENA on Port B.
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int board_early_init_f (void)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
-
- /* Disable Ethernet TENA on Port B
- * Necessary because of pull up in COM3 port.
- *
- * This is just a preliminary fix, intended to turn off TENA
- * as soon as possible to avoid noise on the network. Once
- * I²C is running we will make sure the interface is
- * correctly initialized.
- */
- immr->im_cpm.cp_pbpar &= ~PB_ENET_TENA;
- immr->im_cpm.cp_pbodr &= ~PB_ENET_TENA;
- immr->im_cpm.cp_pbdat &= ~PB_ENET_TENA; /* set to 0 = disabled */
- immr->im_cpm.cp_pbdir |= PB_ENET_TENA;
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/***********************************************************************
-F* Function: void reset_phy (void) P*A*Z*
- *
-P* Parameters: none
-P*
-P* Returnvalue: none
- *
-Z* Intention: Reset the PHY. In the lwmon case we do this by the
-Z* signaling the PIC I/O expander.
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-void reset_phy (void)
-{
- uchar c;
-
-#ifdef DEBUG
- printf ("### Switch on Ethernet for SCC2 ###\n");
-#endif
- c = pic_read (0x61);
-#ifdef DEBUG
- printf ("Old PIC read: reg_61 = 0x%02x\n", c);
-#endif
- c |= 0x40; /* disable COM3 */
- c &= ~0x80; /* enable Ethernet */
- pic_write (0x61, c);
-#ifdef DEBUG
- c = pic_read (0x61);
- printf ("New PIC read: reg_61 = 0x%02x\n", c);
-#endif
- udelay (1000);
-}
-
-
-/*------------------------- Keyboard controller -----------------------*/
-/* command codes */
-#define KEYBD_CMD_READ_KEYS 0x01
-#define KEYBD_CMD_READ_VERSION 0x02
-#define KEYBD_CMD_READ_STATUS 0x03
-#define KEYBD_CMD_RESET_ERRORS 0x10
-
-/* status codes */
-#define KEYBD_STATUS_MASK 0x3F
-#define KEYBD_STATUS_H_RESET 0x20
-#define KEYBD_STATUS_BROWNOUT 0x10
-#define KEYBD_STATUS_WD_RESET 0x08
-#define KEYBD_STATUS_OVERLOAD 0x04
-#define KEYBD_STATUS_ILLEGAL_WR 0x02
-#define KEYBD_STATUS_ILLEGAL_RD 0x01
-
-/* Number of bytes returned from Keyboard Controller */
-#define KEYBD_VERSIONLEN 2 /* version information */
-#define KEYBD_DATALEN 9 /* normal key scan data */
-
-/* maximum number of "magic" key codes that can be assigned */
-
-static uchar kbd_addr = CFG_I2C_KEYBD_ADDR;
-
-static uchar *key_match (uchar *);
-
-#define KEYBD_SET_DEBUGMODE '#' /* Magic key to enable debug output */
-
-/***********************************************************************
-F* Function: int board_postclk_init (void) P*A*Z*
- *
-P* Parameters: none
-P*
-P* Returnvalue: int
-P* - 0 is always returned.
- *
-Z* Intention: This function is the board_postclk_init() method implementation
-Z* for the lwmon board.
- *
- ***********************************************************************/
-int board_postclk_init (void)
-{
- kbd_init();
-
-#ifdef CONFIG_MODEM_SUPPORT
- if (key_pressed()) {
- disable_putc(); /* modem doesn't understand banner etc */
- gd->do_mdm_init = 1;
- }
-#endif
-
- return (0);
-}
-
-struct serial_device * default_serial_console (void)
-{
- return gd->do_mdm_init ? &serial_scc_device : &serial_smc_device;
-}
-
-static void kbd_init (void)
-{
- uchar kbd_data[KEYBD_DATALEN];
- uchar tmp_data[KEYBD_DATALEN];
- uchar val, errcd;
- int i;
-
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- gd->kbd_status = 0;
-
- /* Forced by PIC. Delays <= 175us loose */
- udelay(1000);
-
- /* Read initial keyboard error code */
- val = KEYBD_CMD_READ_STATUS;
- i2c_write (kbd_addr, 0, 0, &val, 1);
- i2c_read (kbd_addr, 0, 0, &errcd, 1);
- /* clear unused bits */
- errcd &= KEYBD_STATUS_MASK;
- /* clear "irrelevant" bits. Recommended by Martin Rajek, LWN */
- errcd &= ~(KEYBD_STATUS_H_RESET|KEYBD_STATUS_BROWNOUT);
- if (errcd) {
- gd->kbd_status |= errcd << 8;
- }
- /* Reset error code and verify */
- val = KEYBD_CMD_RESET_ERRORS;
- i2c_write (kbd_addr, 0, 0, &val, 1);
- udelay(1000); /* delay NEEDED by keyboard PIC !!! */
-
- val = KEYBD_CMD_READ_STATUS;
- i2c_write (kbd_addr, 0, 0, &val, 1);
- i2c_read (kbd_addr, 0, 0, &val, 1);
-
- val &= KEYBD_STATUS_MASK; /* clear unused bits */
- if (val) { /* permanent error, report it */
- gd->kbd_status |= val;
- return;
- }
-
- /*
- * Read current keyboard state.
- *
- * After the error reset it may take some time before the
- * keyboard PIC picks up a valid keyboard scan - the total
- * scan time is approx. 1.6 ms (information by Martin Rajek,
- * 28 Sep 2002). We read a couple of times for the keyboard
- * to stabilize, using a big enough delay.
- * 10 times should be enough. If the data is still changing,
- * we use what we get :-(
- */
-
- memset (tmp_data, 0xFF, KEYBD_DATALEN); /* impossible value */
- for (i=0; i<10; ++i) {
- val = KEYBD_CMD_READ_KEYS;
- i2c_write (kbd_addr, 0, 0, &val, 1);
- i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
- if (memcmp(kbd_data, tmp_data, KEYBD_DATALEN) == 0) {
- /* consistent state, done */
- break;
- }
- /* remeber last state, delay, and retry */
- memcpy (tmp_data, kbd_data, KEYBD_DATALEN);
- udelay (5000);
- }
-}
-
-/***********************************************************************
-F* Function: int misc_init_r (void) P*A*Z*
- *
-P* Parameters: none
-P*
-P* Returnvalue: int
-P* - 0 is always returned, even in the case of a keyboard
-P* error.
- *
-Z* Intention: This function is the misc_init_r() method implementation
-Z* for the lwmon board.
-Z* The keyboard controller is initialized and the result
-Z* of a read copied to the environment variable "keybd".
-Z* If KEYBD_SET_DEBUGMODE is defined, a check is made for
-Z* this key, and if found display to the LCD will be enabled.
-Z* The keys in "keybd" are checked against the magic
-Z* keycommands defined in the environment.
-Z* See also key_match().
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int misc_init_r (void)
-{
- uchar kbd_data[KEYBD_DATALEN];
- char keybd_env[2 * KEYBD_DATALEN + 1];
- uchar kbd_init_status = gd->kbd_status >> 8;
- uchar kbd_status = gd->kbd_status;
- uchar val;
- char *str;
- int i;
-
- if (kbd_init_status) {
- printf ("KEYBD: Error %02X\n", kbd_init_status);
- }
- if (kbd_status) { /* permanent error, report it */
- printf ("*** Keyboard error code %02X ***\n", kbd_status);
- sprintf (keybd_env, "%02X", kbd_status);
- setenv ("keybd", keybd_env);
- return 0;
- }
-
- /*
- * Now we know that we have a working keyboard, so disable
- * all output to the LCD except when a key press is detected.
- */
-
- if ((console_assign (stdout, "serial") < 0) ||
- (console_assign (stderr, "serial") < 0)) {
- printf ("Can't assign serial port as output device\n");
- }
-
- /* Read Version */
- val = KEYBD_CMD_READ_VERSION;
- i2c_write (kbd_addr, 0, 0, &val, 1);
- i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_VERSIONLEN);
- printf ("KEYBD: Version %d.%d\n", kbd_data[0], kbd_data[1]);
-
- /* Read current keyboard state */
- val = KEYBD_CMD_READ_KEYS;
- i2c_write (kbd_addr, 0, 0, &val, 1);
- i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
- for (i = 0; i < KEYBD_DATALEN; ++i) {
- sprintf (keybd_env + i + i, "%02X", kbd_data[i]);
- }
- setenv ("keybd", keybd_env);
-
- str = strdup ((char *)key_match (kbd_data)); /* decode keys */
-#ifdef KEYBD_SET_DEBUGMODE
- if (kbd_data[0] == KEYBD_SET_DEBUGMODE) { /* set debug mode */
- if ((console_assign (stdout, "lcd") < 0) ||
- (console_assign (stderr, "lcd") < 0)) {
- printf ("Can't assign LCD display as output device\n");
- }
- }
-#endif /* KEYBD_SET_DEBUGMODE */
-#ifdef CONFIG_PREBOOT /* automatically configure "preboot" command on key match */
- setenv ("preboot", str); /* set or delete definition */
-#endif /* CONFIG_PREBOOT */
- if (str != NULL) {
- free (str);
- }
- return (0);
-}
-
-#ifdef CONFIG_PREBOOT
-
-static uchar kbd_magic_prefix[] = "key_magic";
-static uchar kbd_command_prefix[] = "key_cmd";
-
-static int compare_magic (uchar *kbd_data, uchar *str)
-{
- uchar compare[KEYBD_DATALEN-1];
- char *nxt;
- int i;
-
- /* Don't include modifier byte */
- memcpy (compare, kbd_data+1, KEYBD_DATALEN-1);
-
- for (; str != NULL; str = (*nxt) ? (uchar *)(nxt+1) : (uchar *)nxt) {
- uchar c;
- int k;
-
- c = (uchar) simple_strtoul ((char *)str, (char **) (&nxt), 16);
-
- if (str == (uchar *)nxt) { /* invalid character */
- break;
- }
-
- /*
- * Check if this key matches the input.
- * Set matches to zero, so they match only once
- * and we can find duplicates or extra keys
- */
- for (k = 0; k < sizeof(compare); ++k) {
- if (compare[k] == '\0') /* only non-zero entries */
- continue;
- if (c == compare[k]) { /* found matching key */
- compare[k] = '\0';
- break;
- }
- }
- if (k == sizeof(compare)) {
- return -1; /* unmatched key */
- }
- }
-
- /*
- * A full match leaves no keys in the `compare' array,
- */
- for (i = 0; i < sizeof(compare); ++i) {
- if (compare[i])
- {
- return -1;
- }
- }
-
- return 0;
-}
-
-/***********************************************************************
-F* Function: static uchar *key_match (uchar *kbd_data) P*A*Z*
- *
-P* Parameters: uchar *kbd_data
-P* - The keys to match against our magic definitions
-P*
-P* Returnvalue: uchar *
-P* - != NULL: Pointer to the corresponding command(s)
-P* NULL: No magic is about to happen
- *
-Z* Intention: Check if pressed key(s) match magic sequence,
-Z* and return the command string associated with that key(s).
-Z*
-Z* If no key press was decoded, NULL is returned.
-Z*
-Z* Note: the first character of the argument will be
-Z* overwritten with the "magic charcter code" of the
-Z* decoded key(s), or '\0'.
-Z*
-Z* Note: the string points to static environment data
-Z* and must be saved before you call any function that
-Z* modifies the environment.
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-static uchar *key_match (uchar *kbd_data)
-{
- char magic[sizeof (kbd_magic_prefix) + 1];
- uchar *suffix;
- char *kbd_magic_keys;
-
- /*
- * The following string defines the characters that can pe appended
- * to "key_magic" to form the names of environment variables that
- * hold "magic" key codes, i. e. such key codes that can cause
- * pre-boot actions. If the string is empty (""), then only
- * "key_magic" is checked (old behaviour); the string "125" causes
- * checks for "key_magic1", "key_magic2" and "key_magic5", etc.
- */
- if ((kbd_magic_keys = getenv ("magic_keys")) == NULL)
- kbd_magic_keys = "";
-
- /* loop over all magic keys;
- * use '\0' suffix in case of empty string
- */
- for (suffix=(uchar *)kbd_magic_keys; *suffix || suffix==(uchar *)kbd_magic_keys; ++suffix) {
- sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);
-#if 0
- printf ("### Check magic \"%s\"\n", magic);
-#endif
- if (compare_magic(kbd_data, (uchar *)getenv(magic)) == 0) {
- char cmd_name[sizeof (kbd_command_prefix) + 1];
- char *cmd;
-
- sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix);
-
- cmd = getenv (cmd_name);
-#if 0
- printf ("### Set PREBOOT to $(%s): \"%s\"\n",
- cmd_name, cmd ? cmd : "<<NULL>>");
-#endif
- *kbd_data = *suffix;
- return ((uchar *)cmd);
- }
- }
-#if 0
- printf ("### Delete PREBOOT\n");
-#endif
- *kbd_data = '\0';
- return (NULL);
-}
-#endif /* CONFIG_PREBOOT */
-
-/*---------------Board Special Commands: PIC read/write ---------------*/
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-/***********************************************************************
-F* Function: int do_pic (cmd_tbl_t *cmdtp, int flag,
-F* int argc, char *argv[]) P*A*Z*
- *
-P* Parameters: cmd_tbl_t *cmdtp
-P* - Pointer to our command table entry
-P* int flag
-P* - If the CMD_FLAG_REPEAT bit is set, then this call is
-P* a repetition
-P* int argc
-P* - Argument count
-P* char *argv[]
-P* - Array of the actual arguments
-P*
-P* Returnvalue: int
-P* - 0 The command was handled successfully
-P* 1 An error occurred
- *
-Z* Intention: Implement the "pic [read|write]" commands.
-Z* The read subcommand takes one argument, the register,
-Z* whereas the write command takes two, the register and
-Z* the new value.
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int do_pic (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- uchar reg, val;
-
- switch (argc) {
- case 3: /* PIC read reg */
- if (strcmp (argv[1], "read") != 0)
- break;
-
- reg = simple_strtoul (argv[2], NULL, 16);
-
- printf ("PIC read: reg %02x: %02x\n\n", reg, pic_read (reg));
-
- return 0;
- case 4: /* PIC write reg val */
- if (strcmp (argv[1], "write") != 0)
- break;
-
- reg = simple_strtoul (argv[2], NULL, 16);
- val = simple_strtoul (argv[3], NULL, 16);
-
- printf ("PIC write: reg %02x val 0x%02x: %02x => ",
- reg, val, pic_read (reg));
- pic_write (reg, val);
- printf ("%02x\n\n", pic_read (reg));
- return 0;
- default:
- break;
- }
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
-}
-U_BOOT_CMD(
- pic, 4, 1, do_pic,
- "pic - read and write PIC registers\n",
- "read reg - read PIC register `reg'\n"
- "pic write reg val - write value `val' to PIC register `reg'\n"
-);
-
-/***********************************************************************
-F* Function: int do_kbd (cmd_tbl_t *cmdtp, int flag,
-F* int argc, char *argv[]) P*A*Z*
- *
-P* Parameters: cmd_tbl_t *cmdtp
-P* - Pointer to our command table entry
-P* int flag
-P* - If the CMD_FLAG_REPEAT bit is set, then this call is
-P* a repetition
-P* int argc
-P* - Argument count
-P* char *argv[]
-P* - Array of the actual arguments
-P*
-P* Returnvalue: int
-P* - 0 is always returned.
- *
-Z* Intention: Implement the "kbd" command.
-Z* The keyboard status is read. The result is printed on
-Z* the console and written into the "keybd" environment
-Z* variable.
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- uchar kbd_data[KEYBD_DATALEN];
- char keybd_env[2 * KEYBD_DATALEN + 1];
- uchar val;
- int i;
-
-#if 0 /* Done in kbd_init */
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
-#endif
-
- /* Read keys */
- val = KEYBD_CMD_READ_KEYS;
- i2c_write (kbd_addr, 0, 0, &val, 1);
- i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
- puts ("Keys:");
- for (i = 0; i < KEYBD_DATALEN; ++i) {
- sprintf (keybd_env + i + i, "%02X", kbd_data[i]);
- printf (" %02x", kbd_data[i]);
- }
- putc ('\n');
- setenv ("keybd", keybd_env);
- return 0;
-}
-
-U_BOOT_CMD(
- kbd, 1, 1, do_kbd,
- "kbd - read keyboard status\n",
- NULL
-);
-
-/* Read and set LSB switch */
-#define CFG_PC_TXD1_ENA 0x0008 /* PC.12 */
-
-/***********************************************************************
-F* Function: int do_lsb (cmd_tbl_t *cmdtp, int flag,
-F* int argc, char *argv[]) P*A*Z*
- *
-P* Parameters: cmd_tbl_t *cmdtp
-P* - Pointer to our command table entry
-P* int flag
-P* - If the CMD_FLAG_REPEAT bit is set, then this call is
-P* a repetition
-P* int argc
-P* - Argument count
-P* char *argv[]
-P* - Array of the actual arguments
-P*
-P* Returnvalue: int
-P* - 0 The command was handled successfully
-P* 1 An error occurred
- *
-Z* Intention: Implement the "lsb [on|off]" commands.
-Z* The lsb is switched according to the first parameter by
-Z* by signaling the PIC I/O expander.
-Z* Called with no arguments, the current setting is
-Z* printed.
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int do_lsb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- uchar val;
- immap_t *immr = (immap_t *) CFG_IMMR;
-
- switch (argc) {
- case 1: /* lsb - print setting */
- val = pic_read (0x60);
- printf ("LSB is o%s\n", (val & 0x20) ? "n" : "ff");
- return 0;
- case 2: /* lsb on or lsb off - set switch */
- val = pic_read (0x60);
-
- if (strcmp (argv[1], "on") == 0) {
- val |= 0x20;
- immr->im_ioport.iop_pcpar &= ~(CFG_PC_TXD1_ENA);
- immr->im_ioport.iop_pcdat |= CFG_PC_TXD1_ENA;
- immr->im_ioport.iop_pcdir |= CFG_PC_TXD1_ENA;
- } else if (strcmp (argv[1], "off") == 0) {
- val &= ~0x20;
- immr->im_ioport.iop_pcpar &= ~(CFG_PC_TXD1_ENA);
- immr->im_ioport.iop_pcdat &= ~(CFG_PC_TXD1_ENA);
- immr->im_ioport.iop_pcdir |= CFG_PC_TXD1_ENA;
- } else {
- break;
- }
- pic_write (0x60, val);
- return 0;
- default:
- break;
- }
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
-}
-
-U_BOOT_CMD(
- lsb, 2, 1, do_lsb,
- "lsb - check and set LSB switch\n",
- "on - switch LSB on\n"
- "lsb off - switch LSB off\n"
- "lsb - print current setting\n"
-);
-
-#endif /* CFG_CMD_BSP */
-
-/*----------------------------- Utilities -----------------------------*/
-/***********************************************************************
-F* Function: uchar pic_read (uchar reg) P*A*Z*
- *
-P* Parameters: uchar reg
-P* - Register to read
-P*
-P* Returnvalue: uchar
-P* - Value read from register
- *
-Z* Intention: Read a register from the PIC I/O expander.
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-uchar pic_read (uchar reg)
-{
- return (i2c_reg_read (CFG_I2C_PICIO_ADDR, reg));
-}
-
-/***********************************************************************
-F* Function: void pic_write (uchar reg, uchar val) P*A*Z*
- *
-P* Parameters: uchar reg
-P* - Register to read
-P* uchar val
-P* - Value to write
-P*
-P* Returnvalue: none
- *
-Z* Intention: Write to a register on the PIC I/O expander.
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-void pic_write (uchar reg, uchar val)
-{
- i2c_reg_write (CFG_I2C_PICIO_ADDR, reg, val);
-}
-
-/*---------------------- Board Control Functions ----------------------*/
-/***********************************************************************
-F* Function: void board_poweroff (void) P*A*Z*
- *
-P* Parameters: none
-P*
-P* Returnvalue: none
- *
-Z* Intention: Turn off the battery power and loop endless, so this
-Z* should better be the last function you call...
- *
-D* Design: wd@denx.de
-C* Coding: wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-void board_poweroff (void)
-{
- /* Turn battery off */
- ((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat &= ~(1 << (31 - 13));
-
- while (1);
-}
-
-#ifdef CONFIG_MODEM_SUPPORT
-static int key_pressed(void)
-{
- uchar kbd_data[KEYBD_DATALEN];
- uchar val;
-
- /* Read keys */
- val = KEYBD_CMD_READ_KEYS;
- i2c_write (kbd_addr, 0, 0, &val, 1);
- i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
- return (compare_magic(kbd_data, (uchar *)CONFIG_MODEM_KEY_MAGIC) == 0);
-}
-#endif /* CONFIG_MODEM_SUPPORT */
-
-#ifdef CONFIG_POST
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed(void)
-{
- uchar kbd_data[KEYBD_DATALEN];
- uchar val;
-
- /* Read keys */
- val = KEYBD_CMD_READ_KEYS;
- i2c_write (kbd_addr, 0, 0, &val, 1);
- i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
- return (compare_magic(kbd_data, (uchar *)CONFIG_POST_KEY_MAGIC) == 0);
-}
-#endif
diff --git a/board/lwmon/pcmcia.c b/board/lwmon/pcmcia.c
deleted file mode 100644
index 2349286bb2..0000000000
--- a/board/lwmon/pcmcia.c
+++ /dev/null
@@ -1,240 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-#include <i2c.h>
-
-#undef CONFIG_PCMCIA
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-#define CONFIG_PCMCIA
-#endif
-
-#if (CONFIG_COMMANDS & CFG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-#define PCMCIA_BOARD_MSG "LWMON"
-
-/* #define's for MAX1604 Power Switch */
-#define MAX1604_OP_SUS 0x80
-#define MAX1604_VCCBON 0x40
-#define MAX1604_VCC_35 0x20
-#define MAX1604_VCCBHIZ 0x10
-#define MAX1604_VPPBON 0x08
-#define MAX1604_VPPBPBPGM 0x04
-#define MAX1604_VPPBHIZ 0x02
-/* reserved 0x01 */
-
-int pcmcia_hardware_enable(int slot)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- volatile sysconf8xx_t *sysp;
- uint reg, mask;
- uchar val;
-
-
- debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- /* Switch on PCMCIA port in PIC register 0x60 */
- reg = pic_read (0x60);
- debug ("[%d] PIC read: reg_60 = 0x%02x\n", __LINE__, reg);
- reg &= ~0x10;
- /* reg |= 0x08; Vpp not needed */
- pic_write (0x60, reg);
-#ifdef DEBUG
- reg = pic_read (0x60);
- printf ("[%d] PIC read: reg_60 = 0x%02x\n", __LINE__, reg);
-#endif
- udelay(10000);
-
- immap = (immap_t *)CFG_IMMR;
- sysp = (sysconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_siu_conf));
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
-
- /*
- * Configure SIUMCR to enable PCMCIA port B
- * (VFLS[0:1] are not used for debugging, we connect FRZ# instead)
- */
- sysp->sc_siumcr &= ~SIUMCR_DBGC11; /* set DBGC to 00 */
-
- /* clear interrupt state, and disable interrupts */
- pcmp->pcmc_pscr = PCMCIA_MASK(_slot_);
- pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_);
-
- /*
- * Disable interrupts, DMA, and PCMCIA buffers
- * (isolate the interface) and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- /*
- * Make sure there is a card in the slot, then configure the interface.
- */
- udelay(10000);
- debug ("[%d] %s: PIPR(%p)=0x%x\n",
- __LINE__,__FUNCTION__,
- &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
- if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
- printf (" No Card found\n");
- return (1);
- }
-
- /*
- * Power On.
- */
- mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot);
- reg = pcmp->pcmc_pipr;
- debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",
- reg,
- (reg&PCMCIA_VS1(slot))?"n":"ff",
- (reg&PCMCIA_VS2(slot))?"n":"ff");
- if ((reg & mask) == mask) {
- val = 0; /* VCCB3/5 = 0 ==> use Vx = 5.0 V */
- puts (" 5.0V card found: ");
- } else {
- val = MAX1604_VCC_35; /* VCCB3/5 = 1 ==> use Vy = 3.3 V */
- puts (" 3.3V card found: ");
- }
-
- /* switch VCC on */
- val |= MAX1604_OP_SUS | MAX1604_VCCBON;
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
- i2c_write (CFG_I2C_POWER_A_ADDR, 0, 0, &val, 1);
-
- udelay(500000);
-
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
-
- udelay(250000); /* some cards need >150 ms to come up :-( */
-
- debug ("# hardware_enable done\n");
-
- return (0);
-}
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
- volatile immap_t *immap;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
- uchar val;
-
- debug ("hardware_disable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- immap = (immap_t *)CFG_IMMR;
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
-
- /* remove all power, put output in high impedance state */
- val = MAX1604_VCCBHIZ | MAX1604_VPPBHIZ;
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
- i2c_write (CFG_I2C_POWER_A_ADDR, 0, 0, &val, 1);
-
- /* Configure PCMCIA General Control Register */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
-
- /* Switch off PCMCIA port in PIC register 0x60 */
- reg = pic_read (0x60);
- debug ("[%d] PIC read: reg_60 = 0x%02x\n", __LINE__, reg);
- reg |= 0x10;
- reg &= ~0x08;
- pic_write (0x60, reg);
-#ifdef DEBUG
- reg = pic_read (0x60);
- printf ("[%d] PIC read: reg_60 = 0x%02x\n", __LINE__, reg);
-#endif
- udelay(10000);
-
- return (0);
-}
-#endif /* CFG_CMD_PCMCIA */
-
-
-int pcmcia_voltage_set(int slot, int vcc, int vpp)
-{
- volatile immap_t *immap;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
- uchar val;
-
- debug ("voltage_set: "
- PCMCIA_BOARD_MSG
- " Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",
- 'A'+slot, vcc/10, vcc%10, vpp/10, vcc%10);
-
- immap = (immap_t *)CFG_IMMR;
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- /*
- * Disable PCMCIA buffers (isolate the interface)
- * and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- /*
- * Turn off all power (switch to high impedance)
- */
- debug ("PCMCIA power OFF\n");
- val = MAX1604_VCCBHIZ | MAX1604_VPPBHIZ;
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
- i2c_write (CFG_I2C_POWER_A_ADDR, 0, 0, &val, 1);
-
- val = 0;
- switch(vcc) {
- case 0: break;
- case 33: val = MAX1604_VCC_35; break;
- case 50: break;
- default: goto done;
- }
-
- /* Checking supported voltages */
-
- debug ("PIPR: 0x%x --> %s\n",
- pcmp->pcmc_pipr,
- (pcmp->pcmc_pipr & 0x00008000) ? "only 5 V" : "can do 3.3V");
-
- i2c_write (CFG_I2C_POWER_A_ADDR, 0, 0, &val, 1);
- if (val) {
- debug ("PCMCIA powered at %sV\n",
- (val & MAX1604_VCC_35) ? "3.3" : "5.0");
- } else {
- debug ("PCMCIA powered down\n");
- }
-
-done:
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",
- slot+'A');
- return (0);
-}
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/lwmon/u-boot.lds b/board/lwmon/u-boot.lds
deleted file mode 100644
index 6505d45561..0000000000
--- a/board/lwmon/u-boot.lds
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * (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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FF) & 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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/lwmon/u-boot.lds.debug b/board/lwmon/u-boot.lds.debug
deleted file mode 100644
index 828afbbced..0000000000
--- a/board/lwmon/u-boot.lds.debug
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/m5272c3/Makefile b/board/m5272c3/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/m5272c3/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/m5272c3/config.mk b/board/m5272c3/config.mk
deleted file mode 100644
index ccb2cf735d..0000000000
--- a/board/m5272c3/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (C) Copyright 2000-2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# Coldfire contribution by Bernhard Kuhn <bkuhn@metrowerks.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
-#
-
-TEXT_BASE = 0xffe00000
diff --git a/board/m5272c3/flash.c b/board/m5272c3/flash.c
deleted file mode 100644
index ea0b1fd7e0..0000000000
--- a/board/m5272c3/flash.c
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * (C) Copyright 2000-2003
- * 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 <common.h>
-
-#define PHYS_FLASH_1 CFG_FLASH_BASE
-#define FLASH_BANK_SIZE 0x200000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf ("AMD: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_PL160CB & FLASH_TYPEMASK):
- printf ("AM29PL160CB (16Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
- Done:
- return;
-}
-
-
-unsigned long flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_PL160CB & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic ("configured to many flash banks!\n");
-
- for (j = 0; j < flash_info[i].sector_count; j++) {
- if (j == 0) {
- /* 1st is 16 KiB */
- flash_info[i].start[j] = flashbase;
- }
- if ((j >= 1) && (j <= 2)) {
- /* 2nd and 3rd are 8 KiB */
- flash_info[i].start[j] =
- flashbase + 0x4000 + 0x2000 * (j - 1);
- }
- if (j == 3) {
- /* 4th is 224 KiB */
- flash_info[i].start[j] = flashbase + 0x8000;
- }
- if ((j >= 4) && (j <= 10)) {
- /* rest is 256 KiB */
- flash_info[i].start[j] =
- flashbase + 0x40000 + 0x40000 * (j -
- 4);
- }
- }
- size += flash_info[i].size;
- }
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + 0x3ffff, &flash_info[0]);
-
- return size;
-}
-
-
-#define CMD_READ_ARRAY 0x00F0
-#define CMD_UNLOCK1 0x00AA
-#define CMD_UNLOCK2 0x0055
-#define CMD_ERASE_SETUP 0x0080
-#define CMD_ERASE_CONFIRM 0x0030
-#define CMD_PROGRAM 0x00A0
-#define CMD_UNLOCK_BYPASS 0x0020
-
-#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555<<1)))
-#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA<<1)))
-
-#define BIT_ERASE_DONE 0x0080
-#define BIT_RDY_MASK 0x0080
-#define BIT_PROGRAM_ERROR 0x0020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- ulong result;
- int iflag, cflag, prot, sect;
- int rc = ERR_OK;
- int chip1;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (AMD_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- printf ("\n");
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- set_timer (0);
-
- if (info->protect[sect] == 0) { /* not protected */
- volatile u16 *addr =
- (volatile u16 *) (info->start[sect]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- chip1 = 0;
-
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer (0) > CFG_FLASH_ERASE_TOUT) {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- chip1 = TMO;
- break;
- }
-
- if (!chip1
- && (result & 0xFFFF) & BIT_ERASE_DONE)
- chip1 = READY;
-
- } while (!chip1);
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- if (chip1 == ERR) {
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (chip1 == TMO) {
- rc = ERR_TIMOUT;
- goto outahere;
- }
-
- printf ("ok.\n");
- } else { /* it was protected */
-
- printf ("protected!\n");
- }
- }
-
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
- outahere:
- /* allow flash to settle - wait 10 ms */
- udelay (10000);
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile u16 *addr = (volatile u16 *) dest;
- ulong result;
- int rc = ERR_OK;
- int cflag, iflag;
- int chip1;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- set_timer (0);
-
- /* wait until flash is ready */
- chip1 = 0;
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer (0) > CFG_FLASH_ERASE_TOUT) {
- chip1 = ERR | TMO;
- break;
- }
- if (!chip1 && ((result & 0x80) == (data & 0x80)))
- chip1 = READY;
-
- } while (!chip1);
-
- *addr = CMD_READ_ARRAY;
-
- if (chip1 == ERR || *addr != data)
- rc = ERR_PROG_ERROR;
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong wp, data;
- int rc;
-
- if (addr & 1) {
- printf ("unaligned destination not supported\n");
- return ERR_ALIGN;
- }
-
-#if 0
- if (cnt & 1) {
- printf ("odd transfer sizes not supported\n");
- return ERR_ALIGN;
- }
-#endif
-
- wp = addr;
-
- if (addr & 1) {
- data = (*((volatile u8 *) addr) << 8) | *((volatile u8 *)
- src);
- if ((rc = write_word (info, wp - 1, data)) != 0) {
- return (rc);
- }
- src += 1;
- wp += 1;
- cnt -= 1;
- }
-
- while (cnt >= 2) {
- data = *((volatile u16 *) src);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 1) {
- data = (*((volatile u8 *) src) << 8) |
- *((volatile u8 *) (wp + 1));
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 1;
- wp += 1;
- cnt -= 1;
- }
-
- return ERR_OK;
-}
diff --git a/board/m5272c3/m5272c3.c b/board/m5272c3/m5272c3.c
deleted file mode 100644
index 0dfeaf24f5..0000000000
--- a/board/m5272c3/m5272c3.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * (C) Copyright 2000-2003
- * 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 <common.h>
-#include <asm/m5272.h>
-#include <asm/immap_5272.h>
-
-
-int checkboard (void) {
- puts ("Board: ");
- puts("MOTOROLA MCF5272C3 EVB\n");
- return 0;
- };
-
-long int initdram (int board_type) {
- volatile sdramctrl_t * sdp = (sdramctrl_t *)(CFG_MBAR + MCFSIM_SDCR);
-
- sdp->sdram_sdtr = 0xf539;
- sdp->sdram_sdcr = 0x4211;
-
- /* Dummy write to start SDRAM */
- *((volatile unsigned long *)0) = 0;
-
- return CFG_SDRAM_SIZE * 1024 * 1024;
- };
-
-int testdram (void) {
- /* TODO: XXX XXX XXX */
- printf ("DRAM test not implemented!\n");
-
- return (0);
-}
diff --git a/board/m5272c3/u-boot.lds b/board/m5272c3/u-boot.lds
deleted file mode 100644
index f7dc070904..0000000000
--- a/board/m5272c3/u-boot.lds
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_ARCH(m68k)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mcf52x2/start.o (.text)
- lib_m68k/traps.o (.text)
- cpu/mcf52x2/interrupts.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- 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_start = .;
- *(.got)
- __got_end = .;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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 = .;
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- . = ALIGN(4);
- _ebss = .;
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/m5282evb/Makefile b/board/m5282evb/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/m5282evb/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/m5282evb/config.mk b/board/m5282evb/config.mk
deleted file mode 100644
index 848430736b..0000000000
--- a/board/m5282evb/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (C) Copyright 2000-2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# Coldfire contribution by Bernhard Kuhn <bkuhn@metrowerks.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
-#
-
-TEXT_BASE = 0x20000
diff --git a/board/m5282evb/flash.c b/board/m5282evb/flash.c
deleted file mode 100644
index 36a7c310f9..0000000000
--- a/board/m5282evb/flash.c
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * (C) Copyright 2000-2003
- * 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 <common.h>
-
-#define PHYS_FLASH_1 CFG_FLASH_BASE
-#define FLASH_BANK_SIZE 0x200000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf ("AMD: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_PL160CB & FLASH_TYPEMASK):
- printf ("AM29PL160CB (16Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
- Done:
- return;
-}
-
-
-unsigned long flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_PL160CB & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic ("configured to many flash banks!\n");
-
- for (j = 0; j < flash_info[i].sector_count; j++) {
- if (j == 0) {
- /* 1st is 16 KiB */
- flash_info[i].start[j] = flashbase;
- }
- if ((j >= 1) && (j <= 2)) {
- /* 2nd and 3rd are 8 KiB */
- flash_info[i].start[j] =
- flashbase + 0x4000 + 0x2000 * (j - 1);
- }
- if (j == 3) {
- /* 4th is 32 KiB */
- flash_info[i].start[j] = flashbase + 0x8000;
- }
- if ((j >= 4) && (j <= 34)) {
- /* rest is 256 KiB */
- flash_info[i].start[j] =
- flashbase + 0x10000 + 0x10000 * (j -
- 4);
- }
- }
- size += flash_info[i].size;
- }
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + 0xffff, &flash_info[0]);
-
- return size;
-}
-
-
-#define CMD_READ_ARRAY 0x00F0
-#define CMD_UNLOCK1 0x00AA
-#define CMD_UNLOCK2 0x0055
-#define CMD_ERASE_SETUP 0x0080
-#define CMD_ERASE_CONFIRM 0x0030
-#define CMD_PROGRAM 0x00A0
-#define CMD_UNLOCK_BYPASS 0x0020
-
-#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555<<1)))
-#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA<<1)))
-
-#define BIT_ERASE_DONE 0x0080
-#define BIT_RDY_MASK 0x0080
-#define BIT_PROGRAM_ERROR 0x0020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- ulong result;
- int iflag, cflag, prot, sect;
- int rc = ERR_OK;
- int chip1;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (AMD_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- printf ("\n");
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- set_timer (0);
-
- if (info->protect[sect] == 0) { /* not protected */
- volatile u16 *addr =
- (volatile u16 *) (info->start[sect]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- chip1 = 0;
-
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer (0) > CFG_FLASH_ERASE_TOUT) {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- chip1 = TMO;
- break;
- }
-
- if (!chip1
- && (result & 0xFFFF) & BIT_ERASE_DONE)
- chip1 = READY;
-
- } while (!chip1);
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- if (chip1 == ERR) {
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (chip1 == TMO) {
- rc = ERR_TIMOUT;
- goto outahere;
- }
-
- printf ("ok.\n");
- } else { /* it was protected */
-
- printf ("protected!\n");
- }
- }
-
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
- outahere:
- /* allow flash to settle - wait 10 ms */
- udelay (10000);
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile u16 *addr = (volatile u16 *) dest;
- ulong result;
- int rc = ERR_OK;
- int cflag, iflag;
- int chip1;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- set_timer (0);
-
- /* wait until flash is ready */
- chip1 = 0;
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer (0) > CFG_FLASH_ERASE_TOUT) {
- chip1 = ERR | TMO;
- break;
- }
- if (!chip1 && ((result & 0x80) == (data & 0x80)))
- chip1 = READY;
-
- } while (!chip1);
-
- *addr = CMD_READ_ARRAY;
-
- if (chip1 == ERR || *addr != data)
- rc = ERR_PROG_ERROR;
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong wp, data;
- int rc;
-
- if (addr & 1) {
- printf ("unaligned destination not supported\n");
- return ERR_ALIGN;
- }
-
-#if 0
- if (cnt & 1) {
- printf ("odd transfer sizes not supported\n");
- return ERR_ALIGN;
- }
-#endif
-
- wp = addr;
-
- if (addr & 1) {
- data = (*((volatile u8 *) addr) << 8) | *((volatile u8 *)
- src);
- if ((rc = write_word (info, wp - 1, data)) != 0) {
- return (rc);
- }
- src += 1;
- wp += 1;
- cnt -= 1;
- }
-
- while (cnt >= 2) {
- data = *((volatile u16 *) src);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 1) {
- data = (*((volatile u8 *) src) << 8) |
- *((volatile u8 *) (wp + 1));
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 1;
- wp += 1;
- cnt -= 1;
- }
-
- return ERR_OK;
-}
diff --git a/board/m5282evb/m5282evb.c b/board/m5282evb/m5282evb.c
deleted file mode 100644
index a08af68ae3..0000000000
--- a/board/m5282evb/m5282evb.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * (C) Copyright 2000-2003
- * 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 <common.h>
-
-int checkboard (void)
-{
- puts ("MOTOROLA M5272EVB Evaluation Board\n");
- return 0;
-}
-
-long int initdram (int board_type)
-{
- return 0x1000000;
-}
diff --git a/board/m5282evb/u-boot.lds b/board/m5282evb/u-boot.lds
deleted file mode 100644
index c461d20e51..0000000000
--- a/board/m5282evb/u-boot.lds
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * (C) Copyright 2000-2003
- * 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(m68k)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mcf52x2/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/string.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset; */
- 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_start = .;
- *(.got)
- __got_end = .;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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 = .;
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- . = ALIGN(4);
- _ebss = .;
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/mbx8xx/Makefile b/board/mbx8xx/Makefile
deleted file mode 100644
index d30cc62ac9..0000000000
--- a/board/mbx8xx/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o vpd.o pcmcia.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/mbx8xx/config.mk b/board/mbx8xx/config.mk
deleted file mode 100644
index d5e8ed264c..0000000000
--- a/board/mbx8xx/config.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (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
-#
-
-#
-# MBX8xx boards
-#
-
-TEXT_BASE = 0xfe000000
-/*TEXT_BASE = 0x00200000 */
diff --git a/board/mbx8xx/csr.h b/board/mbx8xx/csr.h
deleted file mode 100644
index 832e9241f7..0000000000
--- a/board/mbx8xx/csr.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef __csr_h
-#define __csr_h
-
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Control and Status Register definitions for the MBX
- *
- *--------------------------------------------------------------------
- * 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
- */
-
-/* bits for control register #1 / status register #1 */
-#define CSR1_ETEN 0x80 /* Ethernet Transceiver Enabled */
-#define CSR1_ELEN 0x40 /* Ethernet XCVR in Internal Loopback */
-#define CSR1_EAEN 0x20 /* Auto selection TP/AUI Enabled */
-#define CSR1_TPEN 0x10 /* TP manually selected */
-#define CSR1_FDDIS 0x08 /* Full Duplex Mode disabled */
-#define CSR1_FCTEN 0x04 /* Collision Testing of XCVR disabled */
-#define CSR1_COM1EN 0x02 /* COM1 signals routed to RS232 Transceiver */
-#define CSR1_XCVRDIS 0x01 /* Onboard RS232 Transceiver Disabled */
-
-/* bits for control register #2 */
-#define CR2_VDDSEL 0xC0 /* PCMCIA Supply Voltage */
-#define CR2_VPPSEL 0x30 /* PCMCIA Programming Voltage */
-#define CR2_BRDFAIL 0x08 /* Board fail */
-#define CR2_SWS1 0x04 /* Software Status #2 LED */
-#define CR2_SWS2 0x02 /* Software Status #2 LED */
-#define CR2_QSPANRST 0x01 /* Reset QSPAN */
-
-/* bits for status register #2 */
-#define SR2_VDDSEL 0xC0 /* PCMCIA Supply Voltage */
-#define SR2_VPPSEL 0x30 /* PCMCIA Programming Voltage */
-#define SR2_BATGD 0x08 /* Low Voltage indication for onboard bat */
-#define SR2_NVBATGD 0x04 /* Low Voltage indication for NVRAM */
-#define SR2_RDY 0x02 /* Flash programming status bit */
-#define SR2_FT 0x01 /* Reserved for Factory test purposes */
-
-#define MBX_CSR1 (*((uchar *)CFG_CSR_BASE))
-#define MBX_CSR2 (*((uchar *)CFG_CSR_BASE + 1))
-
-#endif /* __csr_h */
diff --git a/board/mbx8xx/dimm.h b/board/mbx8xx/dimm.h
deleted file mode 100644
index b40f112356..0000000000
--- a/board/mbx8xx/dimm.h
+++ /dev/null
@@ -1,98 +0,0 @@
-#ifndef __dimm_h
-#define __dimm_h
-
-/*
- * Module name: %M%
- * Description:
- * Serial Presence Detect Definitions Module
- * SCCS identification: %I%
- * Branch: %B%
- * Sequence: %S%
- * Date newest applied delta was created (MM/DD/YY): %G%
- * Time newest applied delta was created (HH:MM:SS): %U%
- * SCCS file name %F%
- * Fully qualified SCCS file name:
- * %P%
- * Copyright:
- * (C) COPYRIGHT MOTOROLA, INC. 1996
- * ALL RIGHTS RESERVED
- * Notes:
- * 1. All data was taken from an IBM application note titled
- * "Serial Presence Detect Definitions".
- * History:
- * Date Who
- *
- * 10/24/96 Rob Baxter
- * Initial release.
- *
- */
-
-/*
- * serial PD byte assignment address map (256 byte EEPROM)
- */
-typedef struct dimm
-{
- uchar n_bytes; /* 00 number of bytes written/used */
- uchar t_bytes; /* 01 total number of bytes in serial PD device */
- uchar fmt; /* 02 fundamental memory type (FPM/EDO/SDRAM) */
- uchar n_row; /* 03 number of rows */
- uchar n_col; /* 04 number of columns */
- uchar n_banks; /* 05 number of banks */
- uchar data_w_lo; /* 06 data width */
- uchar data_w_hi; /* 07 data width */
- uchar ifl; /* 08 interface levels */
- uchar a_ras; /* 09 RAS access */
- uchar a_cas; /* 0A CAS access */
- uchar ct; /* 0B configuration type (non-parity/parity/ECC) */
- uchar refresh_rt; /* 0C refresh rate/type */
- uchar p_dram_o; /* 0D primary DRAM organization */
- uchar s_dram_o; /* 0E secondary DRAM organization (parity/ECC-checkbits) */
- uchar reserved[17]; /* 0F reserved fields for future offerings */
- uchar ss_info[32]; /* 20 superset information (may be used in the future) */
- uchar m_info[64]; /* 40 manufacturer information (optional) */
- uchar unused[128]; /* 80 unused storage locations */
-} dimm_t;
-
-/*
- * memory type definitions
- */
-#define DIMM_MT_FPM 1 /* standard FPM (fast page mode) DRAM */
-#define DIMM_MT_EDO 2 /* EDO (extended data out) */
-#define DIMM_MT_PN 3 /* pipelined nibble */
-#define DIMM_MT_SDRAM 4 /* SDRAM (synchronous DRAM) */
-
-/*
- * row addresses definitions
- */
-#define DIMM_RA_RDNDNT (1<<7) /* redundant addressing */
-#define DIMM_RA_MASK 0x7f /* number of row addresses mask */
-
-/*
- * module interface levels definitions
- */
-#define DIMM_IFL_TTL 0 /* TTL/5V tolerant */
-#define DIMM_IFL_LVTTL 1 /* LVTTL (not 5V tolerant) */
-#define DIMM_IFL_HSTL15 2 /* HSTL 1.5 */
-#define DIMM_IFL_SSTL33 3 /* SSTL 3.3 */
-#define DIMM_IFL_SSTL25 4 /* SSTL 2.5 */
-
-/*
- * DIMM configuration type definitions
- */
-#define DIMM_CT_NONE 0 /* none */
-#define DIMM_CT_PARITY 1 /* parity */
-#define DIMM_CT_ECC 2 /* ECC */
-
-/*
- * row addresses definitions
- */
-#define DIMM_RRT_SR (1<<7) /* self refresh flag */
-#define DIMM_RRT_MASK 0x7f /* refresh rate mask */
-#define DIMM_RRT_NRML 0x00 /* normal (15.625us) */
-#define DIMM_RRT_R_3_9 0x01 /* reduced .25x (3.9us) */
-#define DIMM_RRT_R_7_8 0x02 /* reduced .5x (7.8us) */
-#define DIMM_RRT_E_31_3 0x03 /* extended 2x (31.3us) */
-#define DIMM_RRT_E_62_5 0x04 /* extended 4x (62.5us) */
-#define DIMM_RRT_E_125 0x05 /* extended 8x (125us) */
-
-#endif /* __dimm_h */
diff --git a/board/mbx8xx/flash.c b/board/mbx8xx/flash.c
deleted file mode 100644
index a491f7bf0b..0000000000
--- a/board/mbx8xx/flash.c
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for AM290[48]0B devices
- *
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-#include "vpd.h"
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size, totsize;
- int i;
- ulong addr;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- totsize = 0;
- addr = 0xfc000000;
- for(i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- size = flash_get_size((vu_long *)addr, &flash_info[i]);
- if (flash_info[i].flash_id == FLASH_UNKNOWN)
- break;
- totsize += size;
- addr += size;
- }
-
- addr = 0xfe000000;
- for(i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
-
- size = flash_get_size((vu_long *)addr, &flash_info[i]);
- if (flash_info[i].flash_id == FLASH_UNKNOWN)
- break;
- totsize += size;
- addr += size;
- }
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- return (totsize);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id >> 16) {
- case 0x1:
- printf ("AMD ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case AMD_ID_F040B:
- printf ("AM29F040B (4 Mbit)\n");
- break;
- case AMD_ID_F080B:
- printf ("AM29F080B (8 Mbit)\n");
- break;
- case AMD_ID_F016D:
- printf ("AM29F016D (16 Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong vendor, devid;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x90909090;
-
- vendor = addr[0];
- devid = addr[1] & 0xff;
-
- /* only support AMD */
- if (vendor != 0x01010101) {
- return 0;
- }
-
- vendor &= 0xf;
- devid &= 0xff;
-
- if (devid == AMD_ID_F040B) {
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 8;
- info->size = info->sector_count * 0x10000;
- }
- else if (devid == AMD_ID_F080B) {
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 16;
- info->size = 4 * info->sector_count * 0x10000;
- }
- else if (devid == AMD_ID_F016D) {
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 32;
- info->size = 4 * info->sector_count * 0x10000;
- }
- else {
- printf ("## Unknown Flash Type: %08lx\n", devid);
- return 0;
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* sector base address */
- info->start[i] = base + i * (info->size / info->sector_count);
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (vu_long *)info->start[0];
- addr[0] = 0xF0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0XAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x80808080;
- addr[0x0555] = 0XAAAAAAAA;
- addr[0x02AA] = 0x55555555;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x30303030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ((addr[0] & 0x80808080) != 0x80808080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0xF0F0F0F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0xA0A0A0A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x80808080) != (data & 0x80808080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/mbx8xx/mbx8xx.c b/board/mbx8xx/mbx8xx.c
deleted file mode 100644
index 9a9bf809ea..0000000000
--- a/board/mbx8xx/mbx8xx.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Board specific routines for the MBX
- *
- * - initialisation
- * - interface to VPD data (mac address, clock speeds)
- * - memory controller
- * - serial io initialisation
- * - ethernet io initialisation
- *
- * -----------------------------------------------------------------
- * 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 <common.h>
-#include <commproc.h>
-#include <mpc8xx.h>
-#include "dimm.h"
-#include "vpd.h"
-#include "csr.h"
-
-/* ------------------------------------------------------------------------- */
-
-static const uint sdram_table_40[] = {
- /* DRAM - single read. (offset 0 in upm RAM)
- */
- 0xCFAFC004, 0x0FAFC404, 0x0CAF0C04, 0x30AF0C00,
- 0xF1BF4805, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
- /* DRAM - burst read. (offset 8 in upm RAM)
- */
- 0xCFAFC004, 0x0FAFC404, 0x0CAF0C04, 0x03AF0C08,
- 0x0CAF0C04, 0x03AF0C08, 0x0CAF0C04, 0x03AF0C08,
- 0x0CAF0C04, 0x30AF0C00, 0xF3BF4805, 0xFFFFC005,
- 0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
- /* DRAM - single write. (offset 18 in upm RAM)
- */
- 0xCFFF0004, 0x0FFF0404, 0x0CFF0C00, 0x33FF4804,
- 0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
- /* DRAM - burst write. (offset 20 in upm RAM)
- */
- 0xCFFF0004, 0x0FFF0404, 0x0CFF0C00, 0x03FF0C0C,
- 0x0CFF0C00, 0x03FF0C0C, 0x0CFF0C00, 0x03FF0C0C,
- 0x0CFF0C00, 0x33FF4804, 0xFFFFC005, 0xFFFFC005,
- 0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
- /* refresh (offset 30 in upm RAM)
- */
- 0xFCFFC004, 0xC0FFC004, 0x01FFC004, 0x0FFFC004,
- 0x3FFFC004, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
- 0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
- /* exception. (offset 3c in upm RAM)
- */
- 0xFFFFC007, 0xFFFFC007, 0xFFFFC007, 0xFFFFC007,
-};
-
-static const uint sdram_table_50[] = {
- /* DRAM - single read. (offset 0 in upm RAM)
- */
- 0xCFAFC004, 0x0FAFC404, 0x0CAF8C04, 0x10AF0C04,
- 0xF0AF0C00, 0xF3BF4805, 0xFFFFC005, 0xFFFFC005,
-
- /* DRAM - burst read. (offset 8 in upm RAM)
- */
- 0xCFAFC004, 0X0FAFC404, 0X0CAF8C04, 0X00AF0C04,
- /* 0X07AF0C08, 0X0CAF0C04, 0X01AF0C04, 0X0FAF0C04, */
- 0X07AF0C08, 0X0CAF0C04, 0X01AF0C04, 0X0FAF0C08,
- 0X0CAF0C04, 0X01AF0C04, 0X0FAF0C08, 0X0CAF0C04,
- /* 0X10AF0C04, 0XF0AFC000, 0XF3FF4805, 0XFFFFC005, */
- 0X10AF0C04, 0XF0AFC000, 0XF3BF4805, 0XFFFFC005,
-
- /* DRAM - single write. (offset 18 in upm RAM)
- */
- 0xCFFF0004, 0x0FFF0404, 0x0CFF0C00, 0x13FF4804,
- 0xFFFFC004, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
- /* DRAM - burst write. (offset 20 in upm RAM)
- */
- 0xCFFF0004, 0x0FFF0404, 0x0CFF0C00, 0x03FF0C0C,
- 0x0CFF0C00, 0x03FF0C0C, 0x0CFF0C00, 0x03FF0C0C,
- 0x0CFF0C00, 0x13FF4804, 0xFFFFC004, 0xFFFFC005,
- 0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
- /* refresh (offset 30 in upm RAM)
- */
- 0xFCFFC004, 0xC0FFC004, 0x01FFC004, 0x0FFFC004,
- 0x1FFFC004, 0xFFFFC004, 0xFFFFC005, 0xFFFFC005,
- 0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
- /* exception. (offset 3c in upm RAM)
- */
- 0xFFFFC007, 0xFFFFC007, 0xFFFFC007, 0xFFFFC007,
-};
-
-/* ------------------------------------------------------------------------- */
-
-static unsigned int get_reffreq(void);
-static unsigned int board_get_cpufreq(void);
-
-void mbx_init (void)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immr->im_memctl;
- ulong speed, refclock, plprcr, sccr;
- ulong br0_32 = memctl->memc_br0 & 0x400;
-
- /* real-time clock status and control register */
- immr->im_sitk.sitk_rtcsck = KAPWR_KEY;
- immr->im_sit.sit_rtcsc = 0x00C3;
-
- /* SIEL and SIMASK Registers (see MBX PRG 2-3) */
- immr->im_siu_conf.sc_simask = 0x00000000;
- immr->im_siu_conf.sc_siel = 0xAAAA0000;
- immr->im_siu_conf.sc_tesr = 0xFFFFFFFF;
-
- /*
- * Prepare access to i2c bus. The MBX offers 3 devices on the i2c bus:
- * 1. Vital Product Data (contains clock speeds, MAC address etc, see vpd.h)
- * 2. RAM Specs (see dimm.h)
- * 2. DIMM Specs (see dimm.h)
- */
- vpd_init ();
-
- /* system clock and reset control register */
- immr->im_clkrstk.cark_sccrk = KAPWR_KEY;
- sccr = immr->im_clkrst.car_sccr;
- sccr &= SCCR_MASK;
- sccr |= CFG_SCCR;
- immr->im_clkrst.car_sccr = sccr;
-
- speed = board_get_cpufreq ();
- refclock = get_reffreq ();
-
-#if ((CFG_PLPRCR & PLPRCR_MF_MSK) != 0)
- plprcr = CFG_PLPRCR;
-#else
- plprcr = immr->im_clkrst.car_plprcr;
- plprcr &= PLPRCR_MF_MSK; /* isolate MF field */
- plprcr |= CFG_PLPRCR; /* reset control bits */
-#endif
-
-#ifdef CFG_USE_OSCCLK /* See doc/README.MBX ! */
- plprcr |= ((speed + refclock / 2) / refclock - 1) << 20;
-#endif
-
- immr->im_clkrstk.cark_plprcrk = KAPWR_KEY;
- immr->im_clkrst.car_plprcr = plprcr;
-
- /*
- * preliminary setup of memory controller:
- * - map Flash, otherwise configuration/status
- * registers won't be accessible when read
- * by board_init_f.
- * - map NVRAM and configuation/status registers.
- * - map pci registers.
- * - DON'T map ram yet, this is done in initdram().
- */
- switch (speed / 1000000) {
- case 40:
- memctl->memc_br0 = 0xFE000000 | br0_32 | 1;
- memctl->memc_or0 = 0xFF800930;
- memctl->memc_or4 = CFG_NVRAM_OR | 0x920;
- memctl->memc_br4 = CFG_NVRAM_BASE | 0x401;
- break;
- case 50:
- memctl->memc_br0 = 0xFE000000 | br0_32 | 1;
- memctl->memc_or0 = 0xFF800940;
- memctl->memc_or4 = CFG_NVRAM_OR | 0x930;
- memctl->memc_br4 = CFG_NVRAM_BASE | 0x401;
- break;
- default:
- hang ();
- break;
- }
-#ifdef CONFIG_USE_PCI
- memctl->memc_or5 = CFG_PCIMEM_OR;
- memctl->memc_br5 = CFG_PCIMEM_BASE | 0x001;
- memctl->memc_or6 = CFG_PCIBRIDGE_OR;
- memctl->memc_br6 = CFG_PCIBRIDGE_BASE | 0x001;
-#endif
- /*
- * FIXME: I do not understand why I have to call this to
- * initialise the control register here before booting from
- * the PCMCIA card but if I do not the Linux kernel falls
- * over in a big heap. If you can answer this question I
- * would like to know about it.
- */
- board_ether_init();
-}
-
-void board_serial_init (void)
-{
- MBX_CSR1 &= ~(CSR1_COM1EN | CSR1_XCVRDIS);
-}
-
-void board_ether_init (void)
-{
- MBX_CSR1 &= ~(CSR1_EAEN | CSR1_ELEN);
- MBX_CSR1 |= CSR1_ETEN | CSR1_TPEN | CSR1_FDDIS;
-}
-
-static unsigned int board_get_cpufreq (void)
-{
-#ifndef CONFIG_8xx_GCLK_FREQ
- vpd_packet_t *packet;
-
- packet = vpd_find_packet (VPD_PID_ICS);
- return *((ulong *) packet->data);
-#else
- return((unsigned int)CONFIG_8xx_GCLK_FREQ );
-#endif /* CONFIG_8xx_GCLK_FREQ */
-}
-
-static unsigned int get_reffreq (void)
-{
- vpd_packet_t *packet;
-
- packet = vpd_find_packet (VPD_PID_RCS);
- return *((ulong *) packet->data);
-}
-
-void board_get_enetaddr (uchar * addr)
-{
- int i;
- vpd_packet_t *packet;
-
- packet = vpd_find_packet (VPD_PID_EA);
- for (i = 0; i < 6; i++)
- addr[i] = packet->data[i];
-}
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- vpd_packet_t *packet;
- int i;
- const char *const fmt =
- "\n *** Warning: Low Battery Status - %s Battery ***";
-
- puts ("Board: ");
-
- packet = vpd_find_packet (VPD_PID_PID);
- for (i = 0; i < packet->size; i++) {
- serial_putc (packet->data[i]);
- }
- packet = vpd_find_packet (VPD_PID_MT);
- for (i = 0; i < packet->size; i++) {
- serial_putc (packet->data[i]);
- }
- serial_putc ('(');
- packet = vpd_find_packet (VPD_PID_FAN);
- for (i = 0; i < packet->size; i++) {
- serial_putc (packet->data[i]);
- }
- serial_putc (')');
-
- if (!(MBX_CSR2 & SR2_BATGD))
- printf (fmt, "On-Board");
- if (!(MBX_CSR2 & SR2_NVBATGD))
- printf (fmt, "NVRAM");
-
- serial_putc ('\n');
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-static ulong get_ramsize (dimm_t * dimm)
-{
- ulong size = 0;
-
- if (dimm->fmt == 1 || dimm->fmt == 2 || dimm->fmt == 3
- || dimm->fmt == 4) {
- size = (1 << (dimm->n_row + dimm->n_col)) * dimm->n_banks *
- ((dimm->data_w_hi << 8 | dimm->data_w_lo) / 8);
- }
-
- return size;
-}
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long ram_sz = 0;
- unsigned long dimm_sz = 0;
- dimm_t vpd_dimm, vpd_dram;
- unsigned int speed = board_get_cpufreq () / 1000000;
-
- if (vpd_read (0xa2, (uchar *) & vpd_dimm, sizeof (vpd_dimm), 0) > 0) {
- dimm_sz = get_ramsize (&vpd_dimm);
- }
- if (vpd_read (0xa6, (uchar *) & vpd_dram, sizeof (vpd_dram), 0) > 0) {
- ram_sz = get_ramsize (&vpd_dram);
- }
-
- /*
- * Only initialize memory controller when running from FLASH.
- * When running from RAM, don't touch it.
- */
- if ((ulong) initdram & 0xff000000) {
- ulong dimm_bank;
- ulong br0_32 = memctl->memc_br0 & 0x400;
-
- switch (speed) {
- case 40:
- upmconfig (UPMA, (uint *) sdram_table_40,
- sizeof (sdram_table_40) / sizeof (uint));
- memctl->memc_mptpr = 0x0200;
- memctl->memc_mamr = dimm_sz ? 0x06801000 : 0x13801000;
- memctl->memc_or7 = 0xff800930;
- memctl->memc_br7 = 0xfc000000 | (br0_32 ^ br0_32) | 1;
- break;
- case 50:
- upmconfig (UPMA, (uint *) sdram_table_50,
- sizeof (sdram_table_50) / sizeof (uint));
- memctl->memc_mptpr = 0x0200;
- memctl->memc_mamr = dimm_sz ? 0x08801000 : 0x1880100;
- memctl->memc_or7 = 0xff800940;
- memctl->memc_br7 = 0xfc000000 | (br0_32 ^ br0_32) | 1;
- break;
- default:
- hang ();
- break;
- }
-
- /* now map ram and dimm, largest one first */
- dimm_bank = dimm_sz / 2;
- if (!dimm_sz) {
- memctl->memc_or1 = ~(ram_sz - 1) | 0x400;
- memctl->memc_br1 = CFG_SDRAM_BASE | 0x81;
- memctl->memc_br2 = 0;
- memctl->memc_br3 = 0;
- } else if (ram_sz > dimm_bank) {
- memctl->memc_or1 = ~(ram_sz - 1) | 0x400;
- memctl->memc_br1 = CFG_SDRAM_BASE | 0x81;
- memctl->memc_or2 = ~(dimm_bank - 1) | 0x400;
- memctl->memc_br2 = (CFG_SDRAM_BASE + ram_sz) | 0x81;
- memctl->memc_or3 = ~(dimm_bank - 1) | 0x400;
- memctl->memc_br3 = (CFG_SDRAM_BASE + ram_sz + dimm_bank) \
- | 0x81;
- } else {
- memctl->memc_or2 = ~(dimm_bank - 1) | 0x400;
- memctl->memc_br2 = CFG_SDRAM_BASE | 0x81;
- memctl->memc_or3 = ~(dimm_bank - 1) | 0x400;
- memctl->memc_br3 = (CFG_SDRAM_BASE + dimm_bank) | 0x81;
- memctl->memc_or1 = ~(ram_sz - 1) | 0x400;
- memctl->memc_br1 = (CFG_SDRAM_BASE + dimm_sz) | 0x81;
- }
- }
-
- return ram_sz + dimm_sz;
-}
diff --git a/board/mbx8xx/pcmcia.c b/board/mbx8xx/pcmcia.c
deleted file mode 100644
index 132a68806d..0000000000
--- a/board/mbx8xx/pcmcia.c
+++ /dev/null
@@ -1,166 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#include "csr.h"
-
-#undef CONFIG_PCMCIA
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-#define CONFIG_PCMCIA
-#endif
-
-#if (CONFIG_COMMANDS & CFG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-/* A lot of this has been taken from the RPX code in this file it works from me.
- I have added the voltage selection for the MBX board. */
-
-/* MBX voltage bit in control register #2 */
-#define CR2_VPP12 ((uchar)0x10)
-#define CR2_VPPVDD ((uchar)0x20)
-#define CR2_VDD5 ((uchar)0x40)
-#define CR2_VDD3 ((uchar)0x80)
-
-#define PCMCIA_BOARD_MSG "MBX860"
-
-int pcmcia_voltage_set (int slot, int vcc, int vpp)
-{
- uchar reg = 0;
-
- debug ("voltage_set: PCMCIA_BOARD_MSG Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",
- 'A' + slot, vcc / 10, vcc % 10, vpp / 10, vcc % 10);
-
- switch (vcc) {
- case 0:
- break;
- case 33:
- reg |= CR2_VDD3;
- break;
- case 50:
- reg |= CR2_VDD5;
- break;
- default:
- return 1;
- }
-
- switch (vpp) {
- case 0:
- break;
- case 33:
- case 50:
- if (vcc == vpp) {
- reg |= CR2_VPPVDD;
- } else {
- return 1;
- }
- break;
- case 120:
- reg |= CR2_VPP12;
- break;
- default:
- return 1;
- }
-
- /* first, turn off all power */
- MBX_CSR2 &= ~(CR2_VDDSEL | CR2_VPPSEL);
-
- /* enable new powersettings */
- MBX_CSR2 |= reg;
- debug ("MBX_CSR2 read = 0x%02x\n", MBX_CSR2);
-
- return (0);
-}
-
-int pcmcia_hardware_enable (int slot)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- volatile sysconf8xx_t *sysp;
- uint reg, mask;
-
- debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n",
- 'A' + slot);
-
- udelay (10000);
-
- immap = (immap_t *) CFG_IMMR;
- sysp = (sysconf8xx_t *) (&(((immap_t *) CFG_IMMR)->im_siu_conf));
- pcmp = (pcmconf8xx_t *) (&(((immap_t *) CFG_IMMR)->im_pcmcia));
- cp = (cpm8xx_t *) (&(((immap_t *) CFG_IMMR)->im_cpm));
-
- /* clear interrupt state, and disable interrupts */
- pcmp->pcmc_pscr = PCMCIA_MASK (_slot_);
- pcmp->pcmc_per &= ~PCMCIA_MASK (_slot_);
-
- /*
- * Disable interrupts, DMA, and PCMCIA buffers
- * (isolate the interface) and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX (_slot_) = reg;
- udelay (500);
-
- /* remove all power */
- pcmcia_voltage_set (slot, 0, 0);
- /*
- * Make sure there is a card in the slot, then configure the interface.
- */
- udelay(10000);
- debug ("[%d] %s: PIPR(%p)=0x%x\n",
- __LINE__,__FUNCTION__,
- &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
-#ifndef CONFIG_HMI10
- if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
-#else
- if (pcmp->pcmc_pipr & (0x10000000 >> (slot << 4))) {
-#endif /* CONFIG_HMI10 */
- printf (" No Card found\n");
- return (1);
- }
-
- /*
- * Power On.
- */
- mask = PCMCIA_VS1 (_slot_) | PCMCIA_VS2 (_slot_);
- reg = pcmp->pcmc_pipr;
- debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n", reg,
- (reg & PCMCIA_VS1 (slot)) ? "n" : "ff",
- (reg & PCMCIA_VS2 (slot)) ? "n" : "ff");
-
- if ((reg & mask) == mask) {
- pcmcia_voltage_set (_slot_, 50, 0);
- printf (" 5.0V card found: ");
- } else {
- pcmcia_voltage_set (_slot_, 33, 0);
- printf (" 3.3V card found: ");
- }
-
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX (_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX (_slot_) = reg;
-
- udelay (250000); /* some cards need >150 ms to come up :-( */
-
- debug ("# hardware_enable done\n");
-
- return (0);
- }
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-int pcmcia_hardware_disable (int slot)
-{
- return 0; /* No hardware to disable */
-}
-#endif /* CFG_CMD_PCMCIA */
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/mbx8xx/u-boot.lds b/board/mbx8xx/u-boot.lds
deleted file mode 100644
index 1400cea157..0000000000
--- a/board/mbx8xx/u-boot.lds
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * (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
- */
-
-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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/mbx8xx/u-boot.lds.debug b/board/mbx8xx/u-boot.lds.debug
deleted file mode 100644
index 650572d4d0..0000000000
--- a/board/mbx8xx/u-boot.lds.debug
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/mbx8xx/vpd.c b/board/mbx8xx/vpd.c
deleted file mode 100644
index 6f883520cd..0000000000
--- a/board/mbx8xx/vpd.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Code in faintly related to linux/arch/ppc/8xx_io:
- * MPC8xx CPM I2C interface. Copyright (c) 1999 Dan Malek (dmalek@jlc.net).
- *
- * This file implements functions to read the MBX's Vital Product Data
- * (VPD). I can't use the more general i2c code in mpc8xx/... since I need
- * the VPD at a time where there is no RAM available yet. Hence the VPD is
- * read into a special area in the DPRAM (see config_MBX.h::CFG_DPRAMVPD).
- *
- * -----------------------------------------------------------------
- * 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 <common.h>
-#ifdef CONFIG_8xx
-#include <commproc.h>
-#endif
-#include "vpd.h"
-
-/* Location of receive/transmit buffer descriptors
- * Allocate one transmit bd and one receive bd.
- * IIC_BD_FREE points to free bd space which we'll use as tx buffer.
- */
-#define IIC_BD_TX1 (BD_IIC_START + 0*sizeof(cbd_t))
-#define IIC_BD_TX2 (BD_IIC_START + 1*sizeof(cbd_t))
-#define IIC_BD_RX (BD_IIC_START + 2*sizeof(cbd_t))
-#define IIC_BD_FREE (BD_IIC_START + 3*sizeof(cbd_t))
-
-/* FIXME -- replace 0x2000 with offsetof */
-#define VPD_P ((vpd_t *)(CFG_IMMR + 0x2000 + CFG_DPRAMVPD))
-
-/* transmit/receive buffers */
-#define IIC_RX_LENGTH 128
-
-#define WITH_MICROCODE_PATCH
-
-vpd_packet_t * vpd_find_packet(u_char ident)
-{
- vpd_packet_t *packet;
- vpd_t *vpd = VPD_P;
-
- packet = (vpd_packet_t *)&vpd->packets;
- while ((packet->identifier != ident) && packet->identifier != 0xFF)
- {
- packet = (vpd_packet_t *)((char *)packet + packet->size + 2);
- }
- return packet;
-}
-
-void vpd_init(void)
-{
- volatile immap_t *im = (immap_t *)CFG_IMMR;
- volatile cpm8xx_t *cp = &(im->im_cpm);
- volatile i2c8xx_t *i2c = (i2c8xx_t *)&(im->im_i2c);
- volatile iic_t *iip;
-#ifdef WITH_MICROCODE_PATCH
- ulong reloc = 0;
-#endif
-
- iip = (iic_t *)&cp->cp_dparam[PROFF_IIC];
-
- /*
- * kludge: when running from flash, no microcode patch can be
- * installed. However, the DPMEM usually contains non-zero
- * garbage at the relocatable patch base location, so lets clear
- * it now. This way the rest of the code can support the microcode
- * patch dynamically.
- */
- if ((ulong)vpd_init & 0xff000000)
- iip->iic_rpbase = 0;
-
-#ifdef WITH_MICROCODE_PATCH
- /* Check for and use a microcode relocation patch. */
- if ((reloc = iip->iic_rpbase))
- iip = (iic_t *)&cp->cp_dpmem[iip->iic_rpbase];
-#endif
- /* Initialize Port B IIC pins */
- cp->cp_pbpar |= 0x00000030;
- cp->cp_pbdir |= 0x00000030;
- cp->cp_pbodr |= 0x00000030;
-
- i2c->i2c_i2mod = 0x04; /* filter clock */
- i2c->i2c_i2add = 0x34; /* select an arbitrary (unique) address */
- i2c->i2c_i2brg = 0x07; /* make clock run maximum slow */
- i2c->i2c_i2cmr = 0x00; /* disable interrupts */
- i2c->i2c_i2cer = 0x1f; /* clear events */
- i2c->i2c_i2com = 0x01; /* configure i2c to work as master */
-
- if (vpd_read(0xa4, (uchar*)VPD_P, VPD_EEPROM_SIZE, 0) != VPD_EEPROM_SIZE)
- {
- hang();
- }
-}
-
-
-/* Read from I2C.
- * This is a two step process. First, we send the "dummy" write
- * to set the device offset for the read. Second, we perform
- * the read operation.
- */
-int vpd_read(uint iic_device, uchar *buf, int count, int offset)
-{
- volatile immap_t *im = (immap_t *)CFG_IMMR;
- volatile cpm8xx_t *cp = &(im->im_cpm);
- volatile i2c8xx_t *i2c = (i2c8xx_t *)&(im->im_i2c);
- volatile iic_t *iip;
- volatile cbd_t *tbdf1, *tbdf2, *rbdf;
- uchar *tb;
- uchar event;
-#ifdef WITH_MICROCODE_PATCH
- ulong reloc = 0;
-#endif
-
- iip = (iic_t *)&cp->cp_dparam[PROFF_IIC];
-#ifdef WITH_MICROCODE_PATCH
- /* Check for and use a microcode relocation patch. */
- if ((reloc = iip->iic_rpbase))
- iip = (iic_t *)&cp->cp_dpmem[iip->iic_rpbase];
-#endif
- tbdf1 = (cbd_t *)&cp->cp_dpmem[IIC_BD_TX1];
- tbdf2 = (cbd_t *)&cp->cp_dpmem[IIC_BD_TX2];
- rbdf = (cbd_t *)&cp->cp_dpmem[IIC_BD_RX];
-
- /* Send a "dummy write" operation. This is a write request with
- * only the offset sent, followed by another start condition.
- * This will ensure we start reading from the first location
- * of the EEPROM.
- */
- tb = (uchar*)&cp->cp_dpmem[IIC_BD_FREE];
- tb[0] = iic_device & 0xfe; /* device address */
- tb[1] = offset; /* offset */
- tbdf1->cbd_bufaddr = (uint)tb;
- tbdf1->cbd_datlen = 2;
- tbdf1->cbd_sc = 0x8400;
-
- tb += 2;
- tb[0] = iic_device | 1; /* device address */
- tbdf2->cbd_bufaddr = (uint)tb;
- tbdf2->cbd_datlen = count+1;
- tbdf2->cbd_sc = 0xbc00;
-
- rbdf->cbd_bufaddr = (uint)buf;
- rbdf->cbd_datlen = 0;
- rbdf->cbd_sc = 0xb000;
-
- iip->iic_tbase = IIC_BD_TX1;
- iip->iic_tbptr = IIC_BD_TX1;
- iip->iic_rbase = IIC_BD_RX;
- iip->iic_rbptr = IIC_BD_RX;
- iip->iic_rfcr = 0x15;
- iip->iic_tfcr = 0x15;
- iip->iic_mrblr = count;
- iip->iic_rstate = 0;
- iip->iic_tstate = 0;
-
- i2c->i2c_i2cer = 0x1f; /* clear event mask */
- i2c->i2c_i2mod |= 1; /* enable iic operation */
- i2c->i2c_i2com |= 0x80; /* start master */
-
- /* wait for IIC transfer */
- do {
- __asm__ volatile ("eieio");
- event = i2c->i2c_i2cer;
- } while (event == 0);
-
- if ((event & 0x10) || (event & 0x04)) {
- count = -1;
- goto bailout;
- }
-
-bailout:
- i2c->i2c_i2mod &= ~1; /* turn off iic operation */
- i2c->i2c_i2cer = 0x1f; /* clear event mask */
-
- return count;
-}
diff --git a/board/mbx8xx/vpd.h b/board/mbx8xx/vpd.h
deleted file mode 100644
index 1d9eb7fe20..0000000000
--- a/board/mbx8xx/vpd.h
+++ /dev/null
@@ -1,119 +0,0 @@
-#ifndef __vpd_h
-#define __vpd_h
-
-/*
- * Module name: %M%
- * Description:
- * Vital Product Data (VPD) Header Module
- * SCCS identification: %I%
- * Branch: %B%
- * Sequence: %S%
- * Date newest applied delta was created (MM/DD/YY): %G%
- * Time newest applied delta was created (HH:MM:SS): %U%
- * SCCS file name %F%
- * Fully qualified SCCS file name:
- * %P%
- * Copyright:
- * (C) COPYRIGHT MOTOROLA, INC. 1996
- * ALL RIGHTS RESERVED
- * Notes:
- * History:
- * Date Who
- *
- * 10/24/96 Rob Baxter
- * Initial release.
- *
- */
-
-#define VPD_EEPROM_SIZE 256 /* EEPROM size in bytes */
-
-/*
- * packet tuple identifiers
- *
- * 0x0D - 0xBF reserved
- * 0xC0 - 0xFE user defined
- */
-#define VPD_PID_GI 0x00 /* guaranteed illegal */
-#define VPD_PID_PID 0x01 /* product identifier (ASCII) */
-#define VPD_PID_FAN 0x02 /* factory assembly-number (ASCII) */
-#define VPD_PID_SN 0x03 /* serial-number (ASCII) */
-#define VPD_PID_PCO 0x04 /* product configuration options(binary) */
-#define VPD_PID_ICS 0x05 /* internal clock speed in HZ (integer) */
-#define VPD_PID_ECS 0x06 /* external clock speed in HZ (integer) */
-#define VPD_PID_RCS 0x07 /* reference clock speed in HZ(integer) */
-#define VPD_PID_EA 0x08 /* ethernet address (binary) */
-#define VPD_PID_MT 0x09 /* microprocessor type (ASCII) */
-#define VPD_PID_CRC 0x0A /* EEPROM CRC (integer) */
-#define VPD_PID_FMC 0x0B /* FLASH memory configuration (binary) */
-#define VPD_PID_VLSI 0x0C /* VLSI revisions/versions (binary) */
-#define VPD_PID_TERM 0xFF /* termination */
-
-/*
- * VPD structure (format)
- */
-#define VPD_EYE_SIZE 8 /* eyecatcher size */
-typedef struct vpd_header
-{
- uchar eyecatcher[VPD_EYE_SIZE]; /* eyecatcher - "MOTOROLA" */
- ushort size; /* size of EEPROM */
-} vpd_header_t;
-
-#define VPD_DATA_SIZE (VPD_EEPROM_SIZE-sizeof(vpd_header_t))
-typedef struct vpd
-{
- vpd_header_t header; /* header */
- uchar packets[VPD_DATA_SIZE]; /* data */
-} vpd_t;
-
-/*
- * packet tuple structure (format)
- */
-typedef struct vpd_packet
-{
- uchar identifier; /* identifier (PIDs above) */
- uchar size; /* size of the following data area */
- uchar data[1]; /* data (size is dependent upon PID) */
-} vpd_packet_t;
-
-/*
- * MBX product configuration options bit definitions
- *
- * Notes:
- * 1. The bit numbering is reversed in perspective with the C compiler.
- */
-#define PCO_BBRAM (1<<0) /* battery-backed RAM (BBRAM) and socket */
-#define PCO_BOOTROM (1<<1) /* boot ROM and socket (i.e., socketed FLASH) */
-#define PCO_KAPWR (1<<2) /* keep alive power source (lithium battey) and control circuit */
-#define PCO_ENET_TP (1<<3) /* ethernet twisted pair (TP) connector (RJ45) */
-#define PCO_ENET_AUI (1<<4) /* ethernet attachment unit interface (AUI) header */
-#define PCO_PCMCIA (1<<5) /* PCMCIA socket */
-#define PCO_DIMM (1<<6) /* DIMM module socket */
-#define PCO_DTT (1<<7) /* digital thermometer and thermostat (DTT) device */
-#define PCO_LCD (1<<8) /* liquid crystal display (LCD) device */
-#define PCO_PCI (1<<9) /* PCI-Bus bridge device (QSpan) and ISA-Bus bridge device (Winbond) */
-#define PCO_PCIO (1<<10) /* PC I/O (COM1, COM2, FDC, LPT, Keyboard/Mouse) */
-#define PCO_EIDE (1<<11) /* enhanced IDE (EIDE) header */
-#define PCO_FDC (1<<12) /* floppy disk controller (FDC) header */
-#define PCO_LPT_8XX (1<<13) /* parallel port header via MPC8xx */
-#define PCO_LPT_PCIO (1<<14) /* parallel port header via PC I/O */
-
-/*
- * FLASH memory configuration packet data
- */
-typedef struct vpd_fmc
-{
- ushort mid; /* manufacturer's idenitfier */
- ushort did; /* manufacturer's device idenitfier */
- uchar ddw; /* device data width (e.g., 8-bits, 16-bits) */
- uchar nod; /* number of devices present */
- uchar noc; /* number of columns */
- uchar cw; /* column width in bits */
- uchar wedw; /* write/erase data width */
-} vpd_fmc_t;
-
-/* function prototypes */
-extern void vpd_init(void);
-extern int vpd_read(uint iic_device, uchar *buf, int count, int offset);
-extern vpd_packet_t *vpd_find_packet(u_char ident);
-
-#endif /* __vpd_h */
diff --git a/board/ml2/Makefile b/board/ml2/Makefile
deleted file mode 100644
index 731e8fea11..0000000000
--- a/board/ml2/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o serial.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ml2/config.mk b/board/ml2/config.mk
deleted file mode 100644
index 41118d5529..0000000000
--- a/board/ml2/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (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
-#
-
-#
-# esd ADCIOP boards
-#
-
-#TEXT_BASE = 0xFFFE0000
-TEXT_BASE = 0x18000000
diff --git a/board/ml2/flash.c b/board/ml2/flash.c
deleted file mode 100644
index 87cb1ff18e..0000000000
--- a/board/ml2/flash.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * flash.c: Support code for the flash chips on the Xilinx ML2 board
- *
- * Copyright 2002 Mind NV
- *
- * http://www.mind.be/
- *
- * Author : Peter De Schrijver (p2@mind.be)
- *
- * This software may be used and distributed according to the terms of
- * the GNU General Public License (GPL) version 2, incorporated herein by
- * reference. Drivers based on or derived from this code fall under the GPL
- * and must retain the authorship, copyright and this license notice. This
- * file is not a complete program and may only be used when the entire program
- * is licensed under the GPL.
- *
- */
-
-#include <common.h>
-#include <asm/u-boot.h>
-#include <configs/ML2.h>
-
-#define FLASH_BANK_SIZE (64*1024*1024)
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-#define SECT_SIZE (512*1024)
-
-#define CMD_READ_ARRAY 0x00FF00FF00FF00FULL
-#define CMD_IDENTIFY 0x0090009000900090ULL
-#define CMD_ERASE_SETUP 0x0020002000200020ULL
-#define CMD_ERASE_CONFIRM 0x00D000D000D000D0ULL
-#define CMD_PROGRAM 0x0040004000400040ULL
-#define CMD_RESUME 0x00D000D000D000D0ULL
-#define CMD_SUSPEND 0x00B000B000B000B0ULL
-#define CMD_STATUS_READ 0x0070007000700070ULL
-#define CMD_STATUS_RESET 0x0050005000500050ULL
-
-#define BIT_BUSY 0x0080008000800080ULL
-#define BIT_ERASE_SUSPEND 0x004000400400040ULL
-#define BIT_ERASE_ERROR 0x0020002000200020ULL
-#define BIT_PROGRAM_ERROR 0x0010001000100010ULL
-#define BIT_VPP_RANGE_ERROR 0x0008000800080008ULL
-#define BIT_PROGRAM_SUSPEND 0x0004000400040004ULL
-#define BIT_PROTECT_ERROR 0x0002000200020002ULL
-#define BIT_UNDEFINED 0x0001000100010001ULL
-
-#define BIT_SEQUENCE_ERROR 0x0030003000300030ULL
-
-#define BIT_TIMEOUT 0x80000000
-
-
-inline void eieio(void) {
-
- __asm__ __volatile__ ("eieio" : : : "memory");
-
-}
-
-ulong flash_init(void) {
-
- int i, j;
- ulong size = 0;
-
- for(i=0;i<CFG_MAX_FLASH_BANKS;i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id = (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F128J3A & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset(flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i==0)
- flashbase = CFG_FLASH_BASE;
- else
- panic("configured too many flash banks!\n");
- for (j = 0; j < flash_info[i].sector_count; j++)
- flash_info[i].start[j]=flashbase + j * SECT_SIZE;
-
- size += flash_info[i].size;
- }
-
- return size;
-}
-
-void flash_print_info (flash_info_t *info) {
-
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (INTEL_MANUFACT & FLASH_VENDMASK):
- printf("Intel: ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (INTEL_ID_28F128J3A & FLASH_TYPEMASK):
- printf("4x 28F128J3A (128Mbit)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- break;
- }
-
- printf(" Size: %ld MB in %d Sectors\n", info->size >> 20, info->sector_count);
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0)
- printf("\n ");
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-}
-
-int flash_error (unsigned long long code) {
-
- if (code & BIT_TIMEOUT) {
- printf ("Timeout\n");
- return ERR_TIMOUT;
- }
-
- if (~code & BIT_BUSY) {
- printf ("Busy\n");
- return ERR_PROG_ERROR;
- }
-
- if (code & BIT_VPP_RANGE_ERROR) {
- printf ("Vpp range error\n");
- return ERR_PROG_ERROR;
- }
-
- if (code & BIT_PROTECT_ERROR) {
- printf ("Device protect error\n");
- return ERR_PROG_ERROR;
- }
-
- if (code & BIT_SEQUENCE_ERROR) {
- printf ("Command seqence error\n");
- return ERR_PROG_ERROR;
- }
-
- if (code & BIT_ERASE_ERROR) {
- printf ("Block erase error\n");
- return ERR_PROG_ERROR;
- }
-
- if (code & BIT_PROGRAM_ERROR) {
- printf ("Program error\n");
- return ERR_PROG_ERROR;
- }
-
- if (code & BIT_ERASE_SUSPEND) {
- printf ("Block erase suspended\n");
- return ERR_PROG_ERROR;
- }
-
- if (code & BIT_PROGRAM_SUSPEND) {
- printf ("Program suspended\n");
- return ERR_PROG_ERROR;
- }
-
- return ERR_OK;
-
-}
-
-int flash_erase (flash_info_t *info, int s_first, int s_last) {
-
- int rc = ERR_OK;
- int sect;
- unsigned long long result;
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last))
- return ERR_INVAL;
-
- if ((info->flash_id & FLASH_VENDMASK) != (INTEL_MANUFACT & FLASH_VENDMASK))
- return ERR_UNKNOWN_FLASH_VENDOR;
-
- for (sect=s_first; sect<=s_last; ++sect)
- if (info->protect[sect])
- return ERR_PROTECTED;
-
- for (sect = s_first; sect<=s_last && !ctrlc(); sect++) {
- volatile unsigned long long *addr=
- (unsigned long long *)(info->start[sect]);
-
- printf("Erasing sector %2d ... ", sect);
-
- *addr=CMD_STATUS_RESET;
- eieio();
- *addr=CMD_ERASE_SETUP;
- eieio();
- *addr=CMD_ERASE_CONFIRM;
- eieio();
-
- do {
- result = *addr;
- } while(~result & BIT_BUSY);
-
- *addr=CMD_READ_ARRAY;
-
- if ((rc = flash_error(result)) == ERR_OK)
- printf("ok.\n");
- else
- break;
- }
-
- if (ctrlc())
- printf("User Interrupt!\n");
-
- return rc;
-}
-
-static int write_word (flash_info_t *info, ulong dest, unsigned long long data) {
-
- volatile unsigned long long *addr=(unsigned long long *)dest;
- unsigned long long result;
- int rc = ERR_OK;
-
- result=*addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
- *addr=CMD_STATUS_RESET;
- eieio();
- *addr=CMD_PROGRAM;
- eieio();
- *addr=data;
- eieio();
-
- do {
- result=*addr;
- } while(~result & BIT_BUSY);
-
- *addr=CMD_READ_ARRAY;
-
- rc = flash_error(result);
-
- return rc;
-
-}
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt) {
-
- ulong cp, wp;
- unsigned long long data;
- int l;
- int i,rc;
-
- wp=(addr & ~7);
-
- if((l=addr-wp) != 0) {
- data=0;
- for(i=0,cp=wp;i<l;++i,++cp)
- data = (data >> 8) | (*(uchar *)cp << 24);
-
- for (; i<8 && cnt>0; ++i) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- ++cp;
- }
-
- for (; i<8; ++i, ++cp)
- data = (data >> 8) | (*(uchar *)cp << 24);
-
- if ((rc = write_word(info, wp, data)) != 0)
- return rc;
-
- wp+=8;
- }
-
- while(cnt>=8) {
- data=*((unsigned long long *)src);
- if ((rc = write_word(info, wp, data)) != 0)
- return rc;
- src+=8;
- wp+=8;
- cnt-=8;
- }
-
- if(cnt == 0)
- return ERR_OK;
-
- data = 0;
- for (i=0, cp=wp; i<8 && cnt>0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- }
- for (; i<8; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
-
- return write_word(info, wp, data);
-
-}
diff --git a/board/ml2/init.S b/board/ml2/init.S
deleted file mode 100644
index 80f98c5bd9..0000000000
--- a/board/ml2/init.S
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * init.S: Stubs for U-Boot initialization
- *
- * Copyright 2002 Mind NV
- *
- * http://www.mind.be/
- *
- * Author : Peter De Schrijver (p2@mind.be)
- *
- * This software may be used and distributed according to the terms of
- * the GNU General Public License (GPL) version 2, incorporated herein by
- * reference. Drivers based on or derived from this code fall under the GPL
- * and must retain the authorship, copyright and this license notice. This
- * file is not a complete program and may only be used when the entire
- * program is licensed under the GPL.
- *
- */
-
-#include <ppc4xx.h>
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-
- .globl ext_bus_cntlr_init
-ext_bus_cntlr_init:
- blr
-
- .globl sdram_init
-sdram_init:
- blr
diff --git a/board/ml2/ml2.c b/board/ml2/ml2.c
deleted file mode 100644
index f32e512d4f..0000000000
--- a/board/ml2/ml2.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * ml2.c: U-Boot platform support for Xilinx ML2 board
- *
- * Copyright 2002 Mind NV
- *
- * http://www.mind.be/
- *
- * Author : Peter De Schrijver (p2@mind.be)
- *
- * Derived from : Other platform support files in this tree
- *
- * This software may be used and distributed according to the terms of
- * the GNU General Public License (GPL) version 2, incorporated herein by
- * reference. Drivers based on or derived from this code fall under the GPL
- * and must retain the authorship, copyright and this license notice. This
- * file is not a complete program and may only be used when the entire
- * program is licensed under the GPL.
- *
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-
-int board_early_init_f (void)
-{
- return 0;
-}
-
-
-int checkboard (void)
-{
- char *s = getenv ("serial#");
- char *e;
-
- if (!s || strncmp (s, "ML2", 9)) {
- printf ("### No HW ID - assuming ML2");
- } else {
- for (e = s; *e; ++e) {
- if (*e == ' ')
- break;
- }
-
- for (; s < e; ++s) {
- putc (*s);
- }
- }
-
-
- putc ('\n');
-
- return (0);
-}
-
-
-long int initdram (int board_type)
-{
- return 32 * 1024 * 1024;
-}
-
-int testdram (void)
-{
- printf ("test: xxx MB - ok\n");
-
- return (0);
-}
diff --git a/board/ml2/serial.c b/board/ml2/serial.c
deleted file mode 100644
index 74687f12c6..0000000000
--- a/board/ml2/serial.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * (C) Copyright 2002
- * Peter De Schrijver (p2@mind.be), Mind Linux Solutions, NV.
- *
- * 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 <asm/u-boot.h>
-#include <asm/processor.h>
-#include <common.h>
-#include <command.h>
-#include <configs/ML2.h>
-
-#if (defined CFG_INIT_CHAN1) || (defined CFG_INIT_CHAN2)
-#include <ns16550.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if (defined CFG_INIT_CHAN1) || (defined CFG_INIT_CHAN2)
-const NS16550_t COM_PORTS[] = { (NS16550_t) CFG_NS16550_COM1,
- (NS16550_t) CFG_NS16550_COM2
-};
-#endif
-
-int serial_init (void)
-{
- int clock_divisor = CFG_NS16550_CLK / 16 / gd->baudrate;
-
-#ifdef CFG_INIT_CHAN1
- (void) NS16550_init (COM_PORTS[0], clock_divisor);
-#endif
-#ifdef CFG_INIT_CHAN2
- (void) NS16550_init (COM_PORTS[1], clock_divisor);
-#endif
- return 0;
-
-}
-
-void serial_putc (const char c)
-{
- if (c == '\n')
- NS16550_putc (COM_PORTS[CFG_DUART_CHAN], '\r');
-
- NS16550_putc (COM_PORTS[CFG_DUART_CHAN], c);
-}
-
-int serial_getc (void)
-{
- return NS16550_getc (COM_PORTS[CFG_DUART_CHAN]);
-}
-
-int serial_tstc (void)
-{
- return NS16550_tstc (COM_PORTS[CFG_DUART_CHAN]);
-}
-
-void serial_setbrg (void)
-{
- int clock_divisor = CFG_NS16550_CLK / 16 / gd->baudrate;
-
-#ifdef CFG_INIT_CHAN1
- NS16550_reinit (COM_PORTS[0], clock_divisor);
-#endif
-#ifdef CFG_INIT_CHAN2
- NS16550_reinit (COM_PORTS[1], clock_divisor);
-#endif
-}
-
-void serial_puts (const char *s)
-{
- while (*s) {
- serial_putc (*s++);
- }
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-void kgdb_serial_init (void)
-{
-}
-
-void putDebugChar (int c)
-{
- serial_putc (c);
-}
-
-void putDebugStr (const char *str)
-{
- serial_puts (str);
-}
-
-int getDebugChar (void)
-{
- return serial_getc ();
-}
-
-void kgdb_interruptible (int yes)
-{
- return;
-}
-#endif /* CFG_CMD_KGDB */
diff --git a/board/ml2/u-boot.lds b/board/ml2/u-boot.lds
deleted file mode 100644
index f8e9e33748..0000000000
--- a/board/ml2/u-boot.lds
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/ml2/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/4xx_enet.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/ml2/u-boot.lds.debug b/board/ml2/u-boot.lds.debug
deleted file mode 100644
index 1608f8cdaa..0000000000
--- a/board/ml2/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
-
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/modnet50/Makefile b/board/modnet50/Makefile
deleted file mode 100644
index 45141fd9e5..0000000000
--- a/board/modnet50/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := modnet50.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/modnet50/config.mk b/board/modnet50/config.mk
deleted file mode 100644
index 49d4836c0a..0000000000
--- a/board/modnet50/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (C) Copyright 2000-2004
-# 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
-#
-
-TEXT_BASE = 0x00f00000
-#CROSS_COMPILE = arm-elf-
diff --git a/board/modnet50/flash.c b/board/modnet50/flash.c
deleted file mode 100644
index a50639e09b..0000000000
--- a/board/modnet50/flash.c
+++ /dev/null
@@ -1,536 +0,0 @@
-/*
- * (C) Copyright 2002
- * MAZeT GmbH <www.mazet.de>
- * Stephan Linz <linz@mazet.de>, <linz@li-pro.net>
- *
- * The most stuff comes from PPCBoot and Linux.
- *
- * IMMS gGmbH <www.imms.de>
- * Thomas Elste <info@elste.org>
- *
- * Modifications for ModNET50 Board
- *
- * 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 <common.h>
-#include <asm/arch/netarm_registers.h>
-
-#define SCR (*(volatile unsigned int *)(NETARM_GEN_MODULE_BASE + NETARM_GEN_SYSTEM_CONTROL))
-
-#define ALIGN_ABORT_OFF SCR = SCR & ~NETARM_GEN_SYS_CFG_ALIGN_ABORT
-#define ALIGN_ABORT_ON SCR = SCR | NETARM_GEN_SYS_CFG_ALIGN_ABORT
-
-#define PROG_ADDR (0x555*2)
-#define SETUP_ADDR (0x555*2)
-#define ID_ADDR (0x555*2)
-#define UNLOCK_ADDR1 (0x555*2)
-#define UNLOCK_ADDR2 (0x2AA*2)
-
-#define UNLOCK_CMD1 (0xAA)
-#define UNLOCK_CMD2 (0x55)
-#define ERASE_SUSPEND_CMD (0xB0)
-#define ERASE_RESUME_CMD (0x30)
-#define RESET_CMD (0xF0)
-#define ID_CMD (0x90)
-#define SECERASE_CMD (0x30)
-#define CHIPERASE_CMD (0x10)
-#define PROG_CMD (0xa0)
-#define SETUP_CMD (0x80)
-
-#define DQ2 (0x04)
-#define DQ3 (DQ2*2)
-#define DQ5 (DQ3*4)
-#define DQ6 (DQ5*2)
-
-#define WRITE_UNLOCK(addr) { \
- *(volatile __u16*)(addr + UNLOCK_ADDR1) = (__u16)UNLOCK_CMD1; \
- *(volatile __u16*)(addr + UNLOCK_ADDR2) = (__u16)UNLOCK_CMD2; \
-}
-
-#define CONFIG_AM29_RESERVED (0)
-#define K (1024)
-#define MB (4)
-
-#define CELL_SIZE (64*K)
-#define DEVICE_SIZE (MB*K*K)
-#define CELLS_PER_DEVICE (DEVICE_SIZE/CELL_SIZE)
-#define RESERVED_CELLS (CONFIG_AM29_RESERVED*K)/CELL_SIZE
-#define MAX_FLASH_DEVICES (1)
-#define AVAIL_SIZE (DEVICE_SIZE*MAX_FLASH_DEVICES - RESERVED_CELLS*CELL_SIZE)
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-static __u16 toggling_bits;
-
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_get_size (ulong baseaddr, flash_info_t * info)
-{
- short i;
- __u16 flashtest;
-
- /* Write auto select command sequence and test FLASH answer */
- WRITE_UNLOCK (baseaddr);
- *(volatile __u16 *) (baseaddr + ID_ADDR) = (__u16) ID_CMD;
- flashtest /* manufacturer ID */ = *(volatile __u16 *) (baseaddr);
- *(volatile __u16 *) (baseaddr + ID_ADDR) = (__u16) RESET_CMD;
-
- switch ((__u32) ((flashtest << 16) + flashtest)) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD & FLASH_VENDMASK;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ & FLASH_VENDMASK;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- /* Write auto select command sequence and test FLASH answer */
- WRITE_UNLOCK (baseaddr);
- *(volatile __u16 *) (baseaddr + ID_ADDR) = (__u16) ID_CMD;
- flashtest /* device ID */ = *(volatile __u16 *) (baseaddr + 2);
- *(volatile __u16 *) (baseaddr + ID_ADDR) = (__u16) RESET_CMD;
-
- /* toggling_bits = (flashtest == TOSHIBA)?(DQ6):(DQ2|DQ6); */
- toggling_bits = (DQ2 | DQ6);
-
- switch ((__u32) ((flashtest << 16) + flashtest)) {
- case AMD_ID_LV160B:
- info->flash_id +=
- (FLASH_AM160LV | FLASH_AM160B) & FLASH_TYPEMASK;
- info->sector_count = CFG_MAX_FLASH_SECT;
- info->size = CFG_FLASH_SIZE;
- /* 1*16K Boot Block
- 2*8K Parameter Block
- 1*32K Small Main Block */
- info->start[0] = baseaddr;
- info->start[1] = baseaddr + 0x4000;
- info->start[2] = baseaddr + 0x6000;
- info->start[3] = baseaddr + 0x8000;
- for (i = 1; i < info->sector_count; i++)
- info->start[3 + i] = baseaddr + i * CFG_MAIN_SECT_SIZE;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* no or unknown flash */
- }
-
- for (i = 0; i < info->sector_count; i++) {
- /* Write auto select command sequence and test FLASH answer */
- WRITE_UNLOCK (info->start[i]);
- *(volatile __u16 *) (info->start[i] + ID_ADDR) = (__u16) ID_CMD;
- flashtest /* protected verify */ = *(volatile __u16 *) (info->start[i] + 4);
- *(volatile __u16 *) (info->start[i] + ID_ADDR) = (__u16) RESET_CMD;
- if (flashtest & 0x0001) {
- info->protect[i] = 1; /* D0 = 1 if protected */
- } else {
- info->protect[i] = 0;
- }
- }
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_init (void)
-{
- ulong size = 0;
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here (only one bank) */
- size = flash_get_size (CFG_FLASH_BASE, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN || size == 0) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size >> 20);
- }
-
- /*
- * protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf ("Fujitsu ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMDL323B:
- printf ("29DL323B (32 M, bottom sector)\n");
- break;
- case (FLASH_AM160LV | FLASH_AM160B):
- printf ("29LV160BE (1M x 16, bottom sector)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 4) == 0)
- printf ("\n ");
- printf (" S%02d @ 0x%08lX%s", i,
- info->start[i], info->protect[i] ? " !" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_check_protection (flash_info_t * info, int s_first, int s_last)
-{
- int sect, prot = 0;
-
- for (sect = s_first; sect <= s_last; sect++)
- if (info->protect[sect])
- prot++;
- if (prot)
- printf ("- can't erase %d protected sectors\n", prot);
- return prot;
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_check_erase_amd (ulong start)
-{
- __u16 v1, v2;
-
- v1 = *(volatile __u16 *) (start);
- v2 = *(volatile __u16 *) (start);
-
- if (((v1 ^ v2) & toggling_bits) == toggling_bits) {
- if (((v1 | v2) & DQ5) == DQ5) {
- printf ("[DQ5] ");
- /* OOPS: exceeded timing limits */
-
- v1 = *(volatile __u16 *) (start);
- v2 = *(volatile __u16 *) (start);
-
- if (((v1 ^ v2) & toggling_bits) == toggling_bits) {
-
- printf ("[%s] ",
- ((toggling_bits & (DQ2 | DQ6)) ==
- (DQ2 | DQ6)) ? "DQ2,DQ6" : "DQ6");
-
- /* OOPS: there is an erasure in progress,
- * try to reset chip */
- *(volatile __u16 *) (start) =
- (__u16) RESET_CMD;
-
- return 1; /* still busy */
- }
- }
- return 1; /* still busy */
- }
- return 0; /* be free */
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, sect, setup_offset = 0;
- int rc = ERR_OK;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- return ERR_UNKNOWN_FLASH_TYPE;
- }
-
- if ((s_first < 0) || (s_first > s_last)) {
- printf ("- no sectors to erase\n");
- return ERR_INVAL;
- }
-
- if (flash_check_protection (info, s_first, s_last))
- return ERR_PROTECTED;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_FUJ:
- case FLASH_MAN_AMD:
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (FLASH_AM160LV | FLASH_AM160B):
- setup_offset = UNLOCK_ADDR1; /* just the adress for setup_cmd differs */
- case FLASH_AMDL323B:
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc ();
- sect++) {
- printf ("Erasing sector %2d ... ", sect);
-
- if (info->protect[sect] == 0) {
- /* not protected */
- /* Write sector erase command sequence */
- WRITE_UNLOCK (info->start[0]);
- *(volatile __u16 *) (info->start[0] +
- setup_offset) =
- (__u16) SETUP_CMD;
- WRITE_UNLOCK (info->start[0]);
- *(volatile __u16 *) (info->
- start[sect]) =
- (__u16) SECERASE_CMD;
-
- /* wait some time */
- reset_timer_masked ();
- while (get_timer_masked () < 1000) {
- }
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
- while (flash_check_erase_amd (info->start[sect])) {
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- printf ("timeout!\n");
- /* OOPS: reach timeout,
- * try to reset chip
- */
- *(volatile __u16 *) (info-> start[sect]) = (__u16) RESET_CMD;
- rc = ERR_TIMOUT;
- goto outahere_323B;
- }
- }
- printf ("ok.\n");
- } else {
- printf ("protected!\n");
- }
- }
- if (ctrlc ())
- printf ("User Interrupt!\n");
-outahere_323B:
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
- if (flag)
- enable_interrupts ();
- return rc;
- default:
- printf ("- unknown chip type\n");
- return ERR_UNKNOWN_FLASH_TYPE;
- }
- break;
- default:
- printf ("- unknown vendor ");
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_check_write_amd (ulong dest)
-{
- __u16 v1, v2;
-
- v1 = *(volatile __u16 *) (dest);
- v2 = *(volatile __u16 *) (dest);
-
- /* DQ6 toggles during write */
- if (((v1 ^ v2) & DQ6) == DQ6) {
- if (((v1 | v2) & DQ5) == DQ5) {
- printf ("[DQ5] @ %08lX\n", dest);
-
- /* OOPS: exceeded timing limits,
- * try to reset chip */
- *(volatile __u16 *) (dest) = (__u16) RESET_CMD;
- return 0; /* be free */
- }
- return 1; /* still busy */
- }
-
- return 0; /* be free */
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-static int write_word (flash_info_t * info, ulong dest, ushort data)
-{
- int rc = ERR_OK;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*(__u16 *) (dest) & data) != data)
- return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
-
- /* Write program command sequence */
- WRITE_UNLOCK (info->start[0]);
-
- /* Flash dependend program seqence */
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_FUJ:
- case FLASH_MAN_AMD:
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (FLASH_AM160LV | FLASH_AM160B):
- *(volatile __u16 *) (info->start[0] + UNLOCK_ADDR1) =
- (__u16) PROG_CMD;
- *(volatile __u16 *) (dest) = (__u16) data;
- break;
- case FLASH_AMDL323B:
- *(volatile __u16 *) (dest) = (__u16) PROG_CMD;
- *(volatile __u16 *) (dest) = (__u16) data;
- break;
- }
- }
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- while (flash_check_write_amd (dest)) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- printf ("timeout! @ %08lX\n", dest);
- /* OOPS: reach timeout,
- * try to reset chip */
- *(volatile __u16 *) (dest) = (__u16) RESET_CMD;
-
- rc = ERR_TIMOUT;
- goto outahere_323B;
- }
- }
-
- /* Check if Flash was (accurately) written */
- if (*(__u16 *) (dest) != data)
- rc = ERR_PROG_ERROR;
-
-outahere_323B:
- if (flag)
- enable_interrupts ();
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- ushort data;
- int l;
- int i, rc;
-
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
- for (; i < 2 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 2) {
- data = *((ushort *) src);
- if ((rc = write_word (info, wp, data)) != 0)
- return (rc);
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0)
- return ERR_OK;
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- }
- for (; i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- return write_word (info, wp, data);
-}
diff --git a/board/modnet50/lowlevel_init.S b/board/modnet50/lowlevel_init.S
deleted file mode 100644
index c98c155458..0000000000
--- a/board/modnet50/lowlevel_init.S
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Memory Setup stuff - taken from Linux
- *
- * Copyright (c) 2002 Stephan Linz <linz@mazet.de>, <linz@li-pro.net>
- * (c) 2004 IMMS gGmbH <www.imms.de>, Thomas Elste <info@elste.org>
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/netarm_registers.h>
-
-
-/* some parameters for the board */
-#define FLASH_90ns_WAIT_STATES ((NETARM_PLL_COUNT_VAL + 2) / 3)
-#define FLASH_70ns_WAIT_STATES 4
-
-#define NETARM_MMAP_CS0_BASE (PHYS_FLASH_1)
-#if 1
-#define NETARM_MMAP_CS0_MASK (~(PHYS_FLASH_1_SIZE - 1))
-#else
-#define NETARM_MMAP_CS0_MASK (~(1000000 - 1))
-#endif
-#define NETARM_MMAP_CS1_BASE (PHYS_SDRAM_1)
-#define NETARM_MMAP_CS1_MASK (~(PHYS_SDRAM_1_SIZE - 1))
-#define NETARM_MMAP_CS2_BASE (PHYS_SDRAM_2)
-#define NETARM_MMAP_CS2_MASK (~(PHYS_SDRAM_2_SIZE - 1))
-#if defined(CONFIG_NETARM_EEPROM) && defined(PHYS_NVRAM_1) && defined(PHYS_NVRAM_SIZE)
-#define NETARM_MMAP_CS3_BASE (PHYS_NVRAM_1)
-#define NETARM_MMAP_CS3_MASK (~(PHYS_NVRAM_SIZE - 1))
-#endif
-#define NETARM_MMAP_CS4_BASE (PHYS_EXT_1)
-#define NETARM_MMAP_CS4_MASK (~(PHYS_EXT_SIZE - 1))
-
-/* setting up the memory */
-.globl lowlevel_init
-lowlevel_init:
-
-#if defined(CONFIG_MODNET50)
- ldr pc, =(_jump_to_high + NETARM_MMAP_CS0_BASE - TEXT_BASE)
-
-_jump_to_high:
- /*
- * MEM Config Reg
- * ---------------------------------------------------
- */
- ldr r0, =NETARM_MEM_MODULE_BASE
- ldr r1, =( NETARM_MEM_REFR_PERIOD_USEC(16) | \
- NETARM_MEM_CFG_REFRESH_EN | \
- NETARM_MEM_CFG_REFR_CYCLE_5CLKS )
- str r1, [r0, #+NETARM_MEM_MODULE_CONFIG]
-
-
-memsetup_cs0:
- /*
- * Base Addr / Option Reg 0 (Flash)
- * ---------------------------------------------------
- */
- ldr r1, =( NETARM_MEM_BAR_BASE(NETARM_MMAP_CS0_BASE) | \
- NETARM_MEM_BAR_DRAM_FP | \
- NETARM_MEM_BAR_DRAM_MUX_INT | \
- NETARM_MEM_BAR_DRAM_MUX_BAL | \
- NETARM_MEM_BAR_VALID )
- str r1, [r0, #+NETARM_MEM_CS0_BASE_ADDR]
-
- /* trust that the bus size for flash was strapped correctly */
- /* this saves the bus width in r2 and then ORs it back in */
- /* it's pretty safe assumption, otherwise it wouldn't boot */
- ldr r2, [r0, #+NETARM_MEM_CS0_OPTIONS]
- and r2, r2, #NETARM_MEM_OPT_BUS_SIZE_MASK
-
-/* just a test: assume 32 bit flash mem */
-/* mov r2, #NETARM_MEM_OPT_32BIT */
-
- ldr r1, =( NETARM_MEM_OPT_BASE_USE(NETARM_MMAP_CS0_MASK) | \
- NETARM_MEM_OPT_WAIT_STATES(FLASH_70ns_WAIT_STATES) | \
- NETARM_MEM_OPT_BCYC_4 | \
- NETARM_MEM_OPT_BSIZE_16 | \
- NETARM_MEM_OPT_16BIT | \
- NETARM_MEM_OPT_READ_ASYNC | \
- NETARM_MEM_OPT_WRITE_ASYNC )
-
- orr r1, r1, r2
- str r1, [r0, #+NETARM_MEM_CS0_OPTIONS]
-
-
-memsetup_cs1:
- /*
- * Base Addr / Option Reg 1 (DRAM #1)
- * ---------------------------------------------------
- */
-#ifdef CONFIG_NETARM_NET40_REV2
- /* we have to config SDRAM in burst mode */
- ldr r1, =( NETARM_MEM_OPT_BASE_USE(NETARM_MMAP_CS1_MASK) | \
- NETARM_MEM_OPT_BCYC_2 | \
- NETARM_MEM_OPT_BSIZE_16 | \
- NETARM_MEM_OPT_WAIT_STATES(0) | \
- NETARM_MEM_OPT_32BIT | \
- NETARM_MEM_OPT_READ_ASYNC | \
- NETARM_MEM_OPT_WRITE_ASYNC )
- str r1, [r0, #+NETARM_MEM_CS1_OPTIONS]
-
- ldr r1, =( NETARM_MEM_BAR_BASE(NETARM_MMAP_CS1_BASE) | \
- NETARM_MEM_BAR_DRAM_SYNC | \
- NETARM_MEM_BAR_DRAM_MUX_INT | \
- NETARM_MEM_BAR_DRAM_MUX_UNBAL | \
- NETARM_MEM_BAR_DRAM_SEL | \
- NETARM_MEM_BAR_BURST_EN | \
- NETARM_MEM_BAR_VALID )
- str r1, [r0, #+NETARM_MEM_CS1_BASE_ADDR]
-#else
- /* we have to config FPDRAM in burst mode with smaller burst access size */
- ldr r1, =( NETARM_MEM_OPT_BASE_USE(NETARM_MMAP_CS1_MASK) | \
- NETARM_MEM_OPT_BCYC_2 | \
- NETARM_MEM_OPT_BSIZE_16 | \
- NETARM_MEM_OPT_WAIT_STATES(0) | \
- NETARM_MEM_OPT_32BIT | \
- NETARM_MEM_OPT_READ_ASYNC | \
- NETARM_MEM_OPT_WRITE_ASYNC )
- str r1, [r0, #+NETARM_MEM_CS1_OPTIONS]
-
- ldr r1, =( NETARM_MEM_BAR_BASE(NETARM_MMAP_CS1_BASE) | \
- NETARM_MEM_BAR_DRAM_SYNC | \
- NETARM_MEM_BAR_DRAM_MUX_INT | \
- NETARM_MEM_BAR_DRAM_MUX_UNBAL | \
- NETARM_MEM_BAR_DRAM_SEL | \
- NETARM_MEM_BAR_BURST_EN | \
- NETARM_MEM_BAR_VALID )
- str r1, [r0, #+NETARM_MEM_CS1_BASE_ADDR]
-
-#endif /* CONFIG_NETARM_NET40_REV2 */
-
-
-memsetup_cs3:
- /*
- * Base Addr / Option Reg 3 (EEPROM, NVRAM)
- * ---------------------------------------------------
- */
-#if defined(CONFIG_NETARM_EEPROM) && defined(PHYS_NVRAM_1) && defined(PHYS_NVRAM_SIZE)
- ldr r1, =( NETARM_MEM_OPT_BASE_USE(NETARM_MMAP_CS3_MASK) | \
- NETARM_MEM_OPT_BCYC_3 | \
- NETARM_MEM_OPT_BSIZE_2 | \
- NETARM_MEM_OPT_WAIT_STATES(10) | \
- NETARM_MEM_OPT_8BIT | \
- NETARM_MEM_OPT_READ_ASYNC | \
- NETARM_MEM_OPT_WRITE_ASYNC )
- str r1, [r0, #+NETARM_MEM_CS3_OPTIONS]
-
- ldr r1, =( NETARM_MEM_BAR_BASE(NETARM_MMAP_CS3_BASE) | \
- NETARM_MEM_BAR_DRAM_FP | \
- NETARM_MEM_BAR_DRAM_MUX_INT | \
- NETARM_MEM_BAR_DRAM_MUX_BAL | \
- NETARM_MEM_BAR_VALID )
- str r1, [r0, #+NETARM_MEM_CS3_BASE_ADDR]
-#else
- /* we don't need EEPROM --> no config */
- ldr r1, =( 0 )
- str r1, [r0, #+NETARM_MEM_CS3_OPTIONS]
-
- ldr r1, =( 0 )
- str r1, [r0, #+NETARM_MEM_CS3_BASE_ADDR]
-#endif
-
-
-#else
-/*
-#error "missing CONFIG_MODNET50 (see your config.h)"
-*/
-#endif /* CONFIG_MODNET50 */
-
-
-lowlevel_init_end:
- /*
- * manipulate address in lr and ip to match new
- * address space
- */
- ldr r3, =(NETARM_MMAP_CS0_BASE)
- mov r0, lr
- add r0, r3, r0
- mov lr, r0
- mov r0, ip
- add r0, r3, r0
- mov ip, r0
-
- /* everything is fine now */
- mov pc, lr
diff --git a/board/modnet50/modnet50.c b/board/modnet50/modnet50.c
deleted file mode 100644
index 4544069c2f..0000000000
--- a/board/modnet50/modnet50.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* address for the kernel command line */
- gd->bd->bi_boot_params = 0x800;
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- if (CONFIG_NR_DRAM_BANKS == 2) {
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
- }
- return (0);
-}
diff --git a/board/modnet50/u-boot.lds b/board/modnet50/u-boot.lds
deleted file mode 100644
index 5b70a40aab..0000000000
--- a/board/modnet50/u-boot.lds
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm720t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_info 0 : { *(.debug_info) }
- .debug_line 0 : { *(.debug_line) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- .debug_aranges 0 : { *(.debug_aranges) }
-}
diff --git a/board/mousse/Makefile b/board/mousse/Makefile
deleted file mode 100644
index 3e719f0cc0..0000000000
--- a/board/mousse/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o m48t59y.o pci.o flash.o
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/mousse/README b/board/mousse/README
deleted file mode 100644
index d5dda7a8e7..0000000000
--- a/board/mousse/README
+++ /dev/null
@@ -1,346 +0,0 @@
-
-U-Boot for MOUSSE/MPC8240 (KAHLUA)
-----------------------------------
-James Dougherty (jfd@broadcom.com), 09/10/01
-
-The Broadcom/Vooha Mousse board is a 3U Compact PCI system board
-which uses the MPC8240, a 64MB SDRAM SIMM, and has onboard
-DEC 21143, NS16550 UART, an SGS M48T59Y TOD, and 4MB FLASH.
-See also: http://www.vooha.com/
-
-* NVRAM setenv/printenv/savenv supported.
-* Date Command
-* Serial Console support
-* Network support
-* FLASH of kernel images is supported.
-* FLASH of U-Boot to onboard and PLCC boot region.
-* Kernel command line options from NVRAM is supported.
-* IP PNP options supported.
-
-U-Boot Loading...
-
-
-U-Boot 1.0.5 (Sep 10 2001 - 00:22:25)
-
-CPU: MPC8240 Revision 1.1 at 198 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MOUSSE MPC8240/KAHLUA - CHRP (MAP B)
-Built: Sep 10 2001 at 01:01:50
-MPLD: Revision 127
-Local Bus: 33 MHz
-RTC: M48T589 TOD/NVRAM (8176) bytes
- Current date/time: 9/10/2001 0:18:52
-DRAM: 64 MB
-FLASH: 1.960 MB
-PCI: scanning bus0 ...
- bus dev fn venID devID class rev MBAR0 MBAR1 IPIN ILINE
- 00 00 00 1057 0003 060000 11 00000008 00000000 01 00
- 00 0d 00 1011 0019 020000 41 80000001 80000000 01 01
- 00 0e 00 105a 4d38 018000 01 a0000001 a0001001 01 03
-In: serial
-Out: serial
-Err: serial
-
-Hit any key to stop autoboot: 0
-=>
-
-I. Root FileSystem/IP Configuration
-
-bootcmd=tftp 100000 vmlinux.img;bootm
-bootdelay=3
-baudrate=9600
-ipaddr=<IP ADDRESS>
-netmask=<NETMASK>
-hostname=<NAME>
-serverip=<NFS SERVER IP ADDRESS>
-ethaddr=00:00:10:20:30:44
-nfsroot=<NFS SERVER IP ADDRESS>:/boot/root-fs
-gateway=<IP ADDRESS>
-root=/dev/nfs
-stdin=serial
-stdout=serial
-stderr=serial
-
-NVRAM environment variables.
-
-use the command:
-
-setenv <attribute> <value>
-
-type "saveenv" to write to NVRAM.
-
-
-II. To boot from a hard drive:
-
-setenv root /dev/hda1
-
-
-III. IP options which configure the network:
-
-ipaddr=<IP ADDRESS OF MACHINE>
-netmask=<NETMASK>
-hostname=mousse
-ethaddr=00:00:10:20:30:44
-gateway=<IP ADDRESS OF GATEWAY/ROUTER>
-
-
-IV. IP Options which configure NFS Root/Boot Support
-
-root=/dev/nfs
-serverip=<NFS SERVER IP ADDRESS>
-nfsroot=<NFS SERVER IP ADDRESS>:/boot/root-fs
-
-V. U-Boot Image Support
-
-The U-Boot boot loader assumes that after you build
-your kernel (vmlinux), you will create a U-Boot image
-using the following commands or script:
-
-#!/bin/csh
-/bin/touch vmlinux.img
-/bin/rm vmlinux.img
-set path=($TOOLBASE/bin $path)
-set path=($U_BOOT/tools $path)
-powerpc-linux-objcopy -S -O binary vmlinux vmlinux.bin
-gzip -vf vmlinux.bin
-mkimage -A ppc -O linux -T kernel -C gzip -a 0 -e 0 -n vmlinux.bin.gz -d vmlinux.bin.gz vmlinux.img
-ls -l vmlinux.img
-
-
-VI. ONBOARD FLASH Support
-
-FLASH support is provided for the onboard FLASH chip Bootrom area.
-U-Boot is loaded into either the ROM boot region of the FLASH chip,
-after first being boot-strapped from a pre-progammed AMD29F040 PLCC
-bootrom. The PLCC needs to be programmed with a ROM burner using
-AMD 29F040 ROM parts and the u-boot.bin or u-boot.hex (S-Record)
-images.
-
-The PLCC overlays this same region of flash as the onboard FLASH,
-the jumper J100 is a chip-select for which flash chip you want to
-progam. When jumper J100 is connected to pins 2-3, you boot from
-PLCC FLASH.
-
-To bringup a system, simply flash a flash an AMD29F040 PLCC
-bootrom, and put this in the PLCC socket. Move jumper J100 to
-pins 2-3 and boot from the PLCC.
-
-
-Now, while the system is running, move Jumper J100 to
-pins 1-2 and follow the procedure below to FLASH a bootrom
-(u-boot.bin) image into the onboard bootrom region (AMD29LV160DB):
-
-tftp 100000 u-boot.bin
-protect off FFF00000 FFF7FFFF
-erase FFF00000 FFF7FFFF
-cp.b 100000 FFF00000 \${filesize}\
-
-
-Here is an example:
-
-=>tftp 100000 u-boot.bin
-eth_halt
-eth0: DC21143 Ethernet adapter(bus=0, device=13, func=0)
-DEC Ethernet iobase=0x80000000
-ARP broadcast 1
-Filename 'u-boot.bin'.
-Load address: 0x100000
-Loading: #########################
-done
-Bytes transferred = 123220 (1e154 hex)
-eth_halt
-=>protect off FFF00000 FFF7FFFF
-Un-Protected 8 sectors
-=>erase FFF00000 FFF7FFFF
-Erase Flash from 0xfff00000 to 0xfff7ffff
-Erase FLASH[PLCC_BOOT] -8 sectors:........ done
-Erased 8 sectors
-=>cp.b 100000 FFF00000 1e154
-Copy to Flash... FLASH[PLCC_BOOT]:..done
-=>
-
-
-B. FLASH RAMDISK REGION
-
-FLASH support is provided for an Onboard 512K RAMDISK region.
-
-TThe following commands will FLASH a bootrom (u-boot.bin) image
-into the onboard FLASH region (AMD29LV160DB 2MB FLASH):
-
-tftp 100000 u-boot.bin
-protect off FFF80000 FFFFFFFF
-erase FFF80000 FFFFFFFF
-cp.b 100000 FFF80000 \${filesize}\
-
-
-C. FLASH KERNEL REGION (960KB)
-
-FLASH support is provided for the 960KB onboard FLASH1 segment.
-This allows flashing of kernel images which U-Boot can load
-and run (standalone) from the onboard FLASH chip. It also assumes
-
-The following commands will FLASH a kernel image to 0xffe10000
-
-tftp 100000 vmlinux.img
-protect off FFE10000 FFEFFFFF
-erase FFE10000 FFEFFFFF
-cp.b 100000 FFE10000 \${filesize}\
-reset
-
-Here is an example:
-
-
-=>tftp 100000 vmlinux.img
-eth_halt
-eth0: DC21143 Ethernet adapter(bus=0, device=13, func=0)
-DEC Ethernet iobase=0x80000000
-ARP broadcast 1
-TFTP from server 209.128.93.133; our IP address is 209.128.93.138
-Filename 'vmlinux.img'.
-Load address: 0x100000
-Loading: #####################################################################################################################################################
-done
-Bytes transferred = 760231 (b99a7 hex)
-eth_halt
-=>protect off FFE10000 FFEFFFFF
-Un-Protected 15 sectors
-=>erase FFE10000 FFEFFFFF
-Erase Flash from 0xffe10000 to 0xffefffff
-Erase FLASH[F0_SA3(KERNEL)] -15 sectors:............... done
-Erased 15 sectors
-=>cp.b 100000 FFE10000 b99a7
-Copy to Flash... FLASH[F0_SA3(KERNEL)]:............done
-=>
-
-
-When finished, use the command:
-
-bootm ffe10000
-
-to start the kernel.
-
-Finally, to make this the default boot command, use
-the following commands:
-
-setenv bootcmd bootm ffe10000
-savenv
-
-to make it automatically boot the kernel from FLASH.
-
-
-To go back to development mode (NFS boot)
-
-setenv bootcmd tftp 100000 vmlinux.img\;bootm
-savenv
-
-
-=>tftp 100000 vmlinux.img
-eth0: DC21143 Ethernet adapter(bus=0, device=13, func=0)
-DEC Ethernet iobase=0x80000000
-ARP broadcast 1
-Filename 'vmlinux.img'.
-Load address: 0x100000
-Loading: ####################################################################################################################################################
-done
-Bytes transferred = 752717 (b7c4d hex)
-eth_halt
-=>protect off FFE10000 FFEFFFFF
-Un-Protected 15 sectors
-=>erase FFE10000 FFEFFFFF
-Erase Flash from 0xffe10000 to 0xffefffff
-Erase FLASH[F0_SA3(KERNEL)] -15 sectors:............... done
-Erased 15 sectors
-=>cp.b 100000 FFE10000 b7c4d
-Copy to Flash... FLASH[F0_SA3(KERNEL)]:............done
-=>bootm ffe10000
-## Booting image at ffe10000 ...
- Image Name: vmlinux.bin.gz
- Image Type: PowerPC Linux Kernel Image (gzip compressed)
- Data Size: 752653 Bytes = 735 kB = 0 MB
- Load Address: 00000000
- Entry Point: 00000000
- Verifying Checksum ... OK
- Uncompressing Kernel Image ... OK
-Total memory = 64MB; using 0kB for hash table (at 00000000)
-Linux version 2.4.2_hhl20 (jfd@atlantis) (gcc version 2.95.2 19991024 (release)) #597 Wed Sep 5 23:23:23 PDT 2001
-cpu0: MPC8240/KAHLUA : MOUSSE Platform : 64MB RAM: MPLD Rev. 7f
-Sandpoint port (C) 2000, 2001 MontaVista Software, Inc. (source@mvista.com)
-IP PNP: 802.3 Ethernet Address=<0:0:10:20:30:44>
-NOTICE: mounting root file system via NFS
-On node 0 totalpages: 16384
-zone(0): 16384 pages.
-zone(1): 0 pages.
-zone(2): 0 pages.
-time_init: decrementer frequency = 16.665914 MHz
-time_init: MPC8240 PCI Bus frequency = 33.331828 MHz
-Calibrating delay loop... 133.12 BogoMIPS
-Memory: 62436k available (1336k kernel code, 500k data, 88k init, 0k highmem)
-Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes)
-Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)
-Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
-Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
-POSIX conformance testing by UNIFIX
-PCI: Probing PCI hardware
-Linux NET4.0 for Linux 2.4
-Based upon Swansea University Computer Society NET3.039
-Initializing RT netlink socket
-Starting kswapd v1.8
-pty: 256 Unix98 ptys configured
-block: queued sectors max/low 41394kB/13798kB, 128 slots per queue
-Uniform Multi-Platform E-IDE driver Revision: 6.31
-ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
-PDC20262: IDE controller on PCI bus 00 dev 70
-PDC20262: chipset revision 1
-PDC20262: not 100% native mode: will probe irqs later
-PDC20262: ROM enabled at 0x000d0000
-PDC20262: (U)DMA Burst Bit DISABLED Primary PCI Mode Secondary PCI Mode.
-PDC20262: FORCING BURST BIT 0x00 -> 0x01 ACTIVE
-PDC20262: irq=3 dev->irq=3
- ide0: BM-DMA at 0xbfff00-0xbfff07, BIOS settings: hda:DMA, hdb:DMA
- ide1: BM-DMA at 0xbfff08-0xbfff0f, BIOS settings: hdc:pio, hdd:pio
-hda: WDC WD300AB-00BVA0, ATA DISK drive
-hdc: SONY CD-RW CRX160E, ATAPI CD/DVD-ROM drive
-ide0 at 0xbfff78-0xbfff7f,0xbfff76 on irq 3
-ide1 at 0xbfff68-0xbfff6f,0xbfff66 on irq 3
-hda: 58633344 sectors (30020 MB) w/2048KiB Cache, CHS=58168/16/63, UDMA(66)
-hdc: ATAPI 32X CD-ROM CD-R/RW drive, 4096kB Cache
-Uniform CD-ROM driver Revision: 3.12
-Partition check:
- /dev/ide/host0/bus0/target0/lun0: p1 p2
-hd: unable to get major 3 for hard disk
-udf: registering filesystem
-loop: loaded (max 8 devices)
-Serial driver version 5.02 (2000-08-09) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled
-ttyS00 at 0xffe08080 (irq = 4) is a ST16650
-Linux Tulip driver version 0.9.13a (January 20, 2001)
-eth0: Digital DS21143 Tulip rev 65 at 0xbfff80, EEPROM not present, 00:00:10:20:30:44, IRQ 1.
-eth0: MII transceiver #0 config 3000 status 7829 advertising 01e1.
-NET4: Linux TCP/IP 1.0 for NET4.0
-IP Protocols: ICMP, UDP, TCP
-IP: routing cache hash table of 512 buckets, 4Kbytes
-TCP: Hash tables configured (established 4096 bind 4096)
-NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
-devfs: v0.102 (20000622) Richard Gooch (rgooch@atnf.csiro.au)
-devfs: boot_options: 0x0
-VFS: Mounted root (nfs filesystem).
-Mounted devfs on /dev
-Freeing unused kernel memory: 88k init 4k openfirmware
-eth0: Setting full-duplex based on MII#0 link partner capability of 45e1.
-INIT: version 2.78 booting
-INIT: Entering runlevel: 2
-
-
-Welcome to Linux/PPC
-MPC8240/MOUSSE
-
-
-mousse login: root
-Password:
-PAM_unix[13]: (login) session opened for user root by LOGIN(uid=0)
-Last login: Thu Sep 6 00:16:51 2001 on console
-
-
-Welcome to Linux/PPC
-MPC8240/MOUSSE
-
-
-mousse#
diff --git a/board/mousse/config.mk b/board/mousse/config.mk
deleted file mode 100644
index 64cffa4ee2..0000000000
--- a/board/mousse/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# MOUSSE boards
-#
-TEXT_BASE = 0xFFF00000
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/mousse/flash.c b/board/mousse/flash.c
deleted file mode 100644
index 2c32b8ffaa..0000000000
--- a/board/mousse/flash.c
+++ /dev/null
@@ -1,939 +0,0 @@
-/*
- * MOUSSE/MPC8240 Board definitions.
- * Flash Routines for MOUSSE onboard AMD29LV106DB devices
- *
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 1999, by Curt McDowell, 08-06-99, Broadcom Corp.
- * (C) Copyright 2001, James Dougherty, 07/18/01, Broadcom Corp.
- *
- * 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 <common.h>
-#include <mpc8xx.h>
-#include <malloc.h>
-#include "mousse.h"
-#include "flash.h"
-
-int flashLibDebug = 0;
-int flashLibInited = 0;
-
-#define OK 0
-#define ERROR -1
-#define STATUS int
-#define PRINTF if (flashLibDebug) printf
-#if 0
-#define PRIVATE static
-#else
-#define PRIVATE
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-#define SLEEP_DELAY 166
-#define FLASH_SECTOR_SIZE (64*1024)
-/***********************************************************************
- *
- * Virtual Flash Devices on Mousse board
- *
- * These must be kept in sync with the definitions in flashLib.h.
- *
- ***********************************************************************/
-
-PRIVATE flash_dev_t flashDev[] = {
- /* Bank 0 sector SA0 (16 kB) */
- { "SA0",FLASH0_BANK, FLASH0_SEG0_START, 1, 14,
- FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
- },
- /* Bank 0 sector SA1 (8 kB) */
- { "SA1", FLASH0_BANK, FLASH0_SEG0_START + 0x4000, 1, 13,
- FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
- },
- /* Bank 0 sector SA2 (8 kB) */
- { "SA2", FLASH0_BANK, FLASH0_SEG0_START + 0x6000, 1, 13,
- FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
- },
- /* Bank 0 sector SA3 is occluded by Mousse I/O devices */
- /* Bank 0 sectors SA4-SA18, after Mousse devices up to PLCC (960 kB) */
- { "KERNEL", FLASH0_BANK, FLASH0_SEG1_START, 15, 16,
- FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
- },
- /* Bank 0 sectors SA19-SA26, jumper can occlude this by PLCC (512 kB) */
- /* This is where the Kahlua boot vector and boot ROM code resides. */
- { "BOOT",FLASH0_BANK, FLASH0_SEG2_START, 8, 16,
- FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
- },
- /* Bank 0 sectors SA27-SA34 (512 kB) */
- { "RAMDISK",FLASH0_BANK, FLASH0_SEG3_START, 8, 16,
- FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
- },
-};
-
-int flashDevCount = (sizeof (flashDev) / sizeof (flashDev[0]));
-
-#define DEV(no) (&flashDev[no])
-#define DEV_NO(dev) ((dev) - flashDev)
-
-/***********************************************************************
- *
- * Private Flash Routines
- *
- ***********************************************************************/
-
-/*
- * The convention is:
- *
- * "addr" is always the PROM raw address, which is the address of an
- * 8-bit quantity for flash 0 and 16-bit quantity for flash 1.
- *
- * "pos" is always a logical byte position from the PROM beginning.
- */
-
-#define FLASH0_ADDR(dev, addr) \
- ((unsigned char *) ((dev)->base + (addr)))
-
-#define FLASH0_WRITE(dev, addr, value) \
- (*FLASH0_ADDR(dev, addr) = (value))
-
-#define FLASH0_READ(dev, addr) \
- (*FLASH0_ADDR(dev, addr))
-
-PRIVATE int flashCheck (flash_dev_t * dev)
-{
- if (!flashLibInited) {
- printf ("flashCheck: flashLib not initialized\n");
- return ERROR;
- }
-
- if (dev < &flashDev[0] || dev >= &flashDev[flashDevCount]) {
- printf ("flashCheck: Bad dev parameter\n");
- return ERROR;
- }
-
- if (!dev->found) {
- printf ("flashCheck: Device %d not available\n", DEV_NO (dev));
- return ERROR;
- }
-
- return OK;
-}
-
-PRIVATE void flashReset (flash_dev_t * dev)
-{
- PRINTF ("flashReset: dev=%d\n", DEV_NO (dev));
-
- if (dev->bank == FLASH0_BANK) {
- FLASH0_WRITE (dev, 0x555, 0xaa);
- FLASH0_WRITE (dev, 0xaaa, 0x55);
- FLASH0_WRITE (dev, 0x555, 0xf0);
- }
-
- udelay (SLEEP_DELAY);
-
- PRINTF ("flashReset: done\n");
-}
-
-PRIVATE int flashProbe (flash_dev_t * dev)
-{
- int rv, deviceID, vendorID;
-
- PRINTF ("flashProbe: dev=%d\n", DEV_NO (dev));
-
- if (dev->bank != FLASH0_BANK) {
- rv = ERROR;
- goto DONE;
- }
-
- FLASH0_WRITE (dev, 0xaaa, 0xaa);
- FLASH0_WRITE (dev, 0x555, 0x55);
- FLASH0_WRITE (dev, 0xaaa, 0x90);
-
- udelay (SLEEP_DELAY);
-
- vendorID = FLASH0_READ (dev, 0);
- deviceID = FLASH0_READ (dev, 2);
-
- FLASH0_WRITE (dev, 0, 0xf0);
-
- PRINTF ("flashProbe: vendor=0x%x device=0x%x\n", vendorID, deviceID);
-
- if (vendorID == dev->vendorID && deviceID == dev->deviceID)
- rv = OK;
- else
- rv = ERROR;
-
- DONE:
- PRINTF ("flashProbe: rv=%d\n", rv);
-
- return rv;
-}
-
-PRIVATE int flashWait (flash_dev_t * dev, int addr, int expect, int erase)
-{
- int rv = ERROR;
- int i, data;
- int polls;
-
-#if 0
- PRINTF ("flashWait: dev=%d addr=0x%x expect=0x%x erase=%d\n",
- DEV_NO (dev), addr, expect, erase);
-#endif
-
- if (dev->bank != FLASH0_BANK) {
- rv = ERROR;
- goto done;
- }
-
- if (erase)
- polls = FLASH_ERASE_SECTOR_TIMEOUT; /* Ticks */
- else
- polls = FLASH_PROGRAM_POLLS; /* Loops */
-
- for (i = 0; i < polls; i++) {
- if (erase)
- udelay (SLEEP_DELAY);
-
- data = FLASH0_READ (dev, addr);
-
- if (((data ^ expect) & 0x80) == 0) {
- rv = OK;
- goto done;
- }
-
- if (data & 0x20) {
- /*
- * If the 0x20 bit has come on, it could actually be because
- * the operation succeeded, so check the done bit again.
- */
-
- data = FLASH0_READ (dev, addr);
-
- if (((data ^ expect) & 0x80) == 0) {
- rv = OK;
- goto done;
- }
-
- printf ("flashWait: Program error (dev: %d, addr: 0x%x)\n",
- DEV_NO (dev), addr);
-
- flashReset (dev);
- rv = ERROR;
- goto done;
- }
- }
-
- printf ("flashWait: Timeout %s (dev: %d, addr: 0x%x)\n",
- erase ? "erasing sector" : "programming byte",
- DEV_NO (dev), addr);
-
- done:
-
-#if 0
- PRINTF ("flashWait: rv=%d\n", rv);
-#endif
-
- return rv;
-}
-
-/***********************************************************************
- *
- * Public Flash Routines
- *
- ***********************************************************************/
-
-STATUS flashLibInit (void)
-{
- int i;
-
- PRINTF ("flashLibInit: devices=%d\n", flashDevCount);
-
- for (i = 0; i < flashDevCount; i++) {
- flash_dev_t *dev = &flashDev[i];
-
- /*
- * For bank 1, probe both without and with byte swappage,
- * so that this module works on both old and new Mousse boards.
- */
-
- flashReset (dev);
-
- if (flashProbe (dev) != ERROR)
- dev->found = 1;
-
- flashReset (dev);
-
- if (flashProbe (dev) != ERROR)
- dev->found = 1;
-
- dev->swap = 0;
-
- if (dev->found) {
- PRINTF ("\n FLASH %s[%d]: iobase=0x%x - %d sectors %d KB",
- flashDev[i].name, i, flashDev[i].base,
- flashDev[i].sectors,
- (flashDev[i].sectors * FLASH_SECTOR_SIZE) / 1024);
-
- }
- }
-
- flashLibInited = 1;
-
- PRINTF ("flashLibInit: done\n");
-
- return OK;
-}
-
-STATUS flashEraseSector (flash_dev_t * dev, int sector)
-{
- int pos, addr;
-
- PRINTF ("flashErasesector: dev=%d sector=%d\n", DEV_NO (dev), sector);
-
- if (flashCheck (dev) == ERROR)
- return ERROR;
-
- if (sector < 0 || sector >= dev->sectors) {
- printf ("flashEraseSector: Sector out of range (dev: %d, sector: %d)\n", DEV_NO (dev), sector);
- return ERROR;
- }
-
- pos = FLASH_SECTOR_POS (dev, sector);
-
- if (dev->bank != FLASH0_BANK) {
- return ERROR;
- }
-
- addr = pos;
-
- FLASH0_WRITE (dev, 0xaaa, 0xaa);
- FLASH0_WRITE (dev, 0x555, 0x55);
- FLASH0_WRITE (dev, 0xaaa, 0x80);
- FLASH0_WRITE (dev, 0xaaa, 0xaa);
- FLASH0_WRITE (dev, 0x555, 0x55);
- FLASH0_WRITE (dev, addr, 0x30);
-
- return flashWait (dev, addr, 0xff, 1);
-}
-
-/*
- * Note: it takes about as long to flash all sectors together with Chip
- * Erase as it does to flash them one at a time (about 30 seconds for 2
- * MB). Also since we want to be able to treat subsets of sectors as if
- * they were complete devices, we don't use Chip Erase.
- */
-
-STATUS flashErase (flash_dev_t * dev)
-{
- int sector;
-
- PRINTF ("flashErase: dev=%d sectors=%d\n", DEV_NO (dev), dev->sectors);
-
- if (flashCheck (dev) == ERROR)
- return ERROR;
-
- for (sector = 0; sector < dev->sectors; sector++) {
- if (flashEraseSector (dev, sector) == ERROR)
- return ERROR;
- }
- return OK;
-}
-
-/*
- * Read and write bytes
- */
-
-STATUS flashRead (flash_dev_t * dev, int pos, char *buf, int len)
-{
- int addr, words;
-
- PRINTF ("flashRead: dev=%d pos=0x%x buf=0x%x len=0x%x\n",
- DEV_NO (dev), pos, (int) buf, len);
-
- if (flashCheck (dev) == ERROR)
- return ERROR;
-
- if (pos < 0 || len < 0 || pos + len > FLASH_MAX_POS (dev)) {
- printf ("flashRead: Position out of range "
- "(dev: %d, pos: 0x%x, len: 0x%x)\n",
- DEV_NO (dev), pos, len);
- return ERROR;
- }
-
- if (len == 0)
- return OK;
-
- if (dev->bank == FLASH0_BANK) {
- addr = pos;
- words = len;
-
- PRINTF ("flashRead: memcpy(0x%x, 0x%x, 0x%x)\n",
- (int) buf, (int) FLASH0_ADDR (dev, pos), len);
-
- memcpy (buf, FLASH0_ADDR (dev, addr), words);
-
- }
- PRINTF ("flashRead: rv=OK\n");
-
- return OK;
-}
-
-STATUS flashWrite (flash_dev_t * dev, int pos, char *buf, int len)
-{
- int addr, words;
-
- PRINTF ("flashWrite: dev=%d pos=0x%x buf=0x%x len=0x%x\n",
- DEV_NO (dev), pos, (int) buf, len);
-
- if (flashCheck (dev) == ERROR)
- return ERROR;
-
- if (pos < 0 || len < 0 || pos + len > FLASH_MAX_POS (dev)) {
- printf ("flashWrite: Position out of range "
- "(dev: %d, pos: 0x%x, len: 0x%x)\n",
- DEV_NO (dev), pos, len);
- return ERROR;
- }
-
- if (len == 0)
- return OK;
-
- if (dev->bank == FLASH0_BANK) {
- unsigned char tmp;
-
- addr = pos;
- words = len;
-
- while (words--) {
- tmp = *buf;
- if (~FLASH0_READ (dev, addr) & tmp) {
- printf ("flashWrite: Attempt to program 0 to 1 "
- "(dev: %d, addr: 0x%x, data: 0x%x)\n",
- DEV_NO (dev), addr, tmp);
- return ERROR;
- }
- FLASH0_WRITE (dev, 0xaaa, 0xaa);
- FLASH0_WRITE (dev, 0x555, 0x55);
- FLASH0_WRITE (dev, 0xaaa, 0xa0);
- FLASH0_WRITE (dev, addr, tmp);
- if (flashWait (dev, addr, tmp, 0) < 0)
- return ERROR;
- buf++;
- addr++;
- }
- }
-
- PRINTF ("flashWrite: rv=OK\n");
-
- return OK;
-}
-
-/*
- * flashWritable returns TRUE if a range contains all F's.
- */
-
-STATUS flashWritable (flash_dev_t * dev, int pos, int len)
-{
- int addr, words;
- int rv = ERROR;
-
- PRINTF ("flashWritable: dev=%d pos=0x%x len=0x%x\n",
- DEV_NO (dev), pos, len);
-
- if (flashCheck (dev) == ERROR)
- goto done;
-
- if (pos < 0 || len < 0 || pos + len > FLASH_MAX_POS (dev)) {
- printf ("flashWritable: Position out of range "
- "(dev: %d, pos: 0x%x, len: 0x%x)\n",
- DEV_NO (dev), pos, len);
- goto done;
- }
-
- if (len == 0) {
- rv = 1;
- goto done;
- }
-
- if (dev->bank == FLASH0_BANK) {
- addr = pos;
- words = len;
-
- while (words--) {
- if (FLASH0_READ (dev, addr) != 0xff) {
- rv = 0;
- goto done;
- }
- addr++;
- }
- }
-
- rv = 1;
-
- done:
- PRINTF ("flashWrite: rv=%d\n", rv);
- return rv;
-}
-
-
-/*
- * NOTE: the below code cannot run from FLASH!!!
- */
-/***********************************************************************
- *
- * Flash Diagnostics
- *
- ***********************************************************************/
-
-STATUS flashDiag (flash_dev_t * dev)
-{
- unsigned int *buf = 0;
- int i, len, sector;
- int rv = ERROR;
-
- if (flashCheck (dev) == ERROR)
- return ERROR;
-
- printf ("flashDiag: Testing device %d, "
- "base: 0x%x, %d sectors @ %d kB = %d kB\n",
- DEV_NO (dev), dev->base,
- dev->sectors,
- 1 << (dev->lgSectorSize - 10),
- dev->sectors << (dev->lgSectorSize - 10));
-
- len = 1 << dev->lgSectorSize;
-
- printf ("flashDiag: Erasing\n");
-
- if (flashErase (dev) == ERROR) {
- printf ("flashDiag: Erase failed\n");
- goto done;
- }
- printf ("%d bytes requested ...\n", len);
- buf = malloc (len);
- printf ("allocated %d bytes ...\n", len);
- if (buf == 0) {
- printf ("flashDiag: Out of memory\n");
- goto done;
- }
-
- /*
- * Write unique counting pattern to each sector
- */
-
- for (sector = 0; sector < dev->sectors; sector++) {
- printf ("flashDiag: Write sector %d\n", sector);
-
- for (i = 0; i < len / 4; i++)
- buf[i] = sector << 24 | i;
-
- if (flashWrite (dev,
- sector << dev->lgSectorSize,
- (char *) buf, len) == ERROR) {
- printf ("flashDiag: Write failed (dev: %d, sector: %d)\n",
- DEV_NO (dev), sector);
- goto done;
- }
- }
-
- /*
- * Verify
- */
-
- for (sector = 0; sector < dev->sectors; sector++) {
- printf ("flashDiag: Verify sector %d\n", sector);
-
- if (flashRead (dev,
- sector << dev->lgSectorSize,
- (char *) buf, len) == ERROR) {
- printf ("flashDiag: Read failed (dev: %d, sector: %d)\n",
- DEV_NO (dev), sector);
- goto done;
- }
-
- for (i = 0; i < len / 4; i++) {
- if (buf[i] != (sector << 24 | i)) {
- printf ("flashDiag: Verify error "
- "(dev: %d, sector: %d, offset: 0x%x)\n",
- DEV_NO (dev), sector, i);
- printf ("flashDiag: Expected 0x%08x, got 0x%08x\n",
- sector << 24 | i, buf[i]);
-
- goto done;
- }
- }
- }
-
- printf ("flashDiag: Erasing\n");
-
- if (flashErase (dev) == ERROR) {
- printf ("flashDiag: Final erase failed\n");
- goto done;
- }
-
- rv = OK;
-
- done:
- if (buf)
- free (buf);
-
- if (rv == OK)
- printf ("flashDiag: Device %d passed\n", DEV_NO (dev));
- else
- printf ("flashDiag: Device %d failed\n", DEV_NO (dev));
-
- return rv;
-}
-
-STATUS flashDiagAll (void)
-{
- int i;
- int rv = OK;
-
- PRINTF ("flashDiagAll: devices=%d\n", flashDevCount);
-
- for (i = 0; i < flashDevCount; i++) {
- flash_dev_t *dev = &flashDev[i];
-
- if (dev->found && flashDiag (dev) == ERROR)
- rv = ERROR;
- }
-
- if (rv == OK)
- printf ("flashDiagAll: Passed\n");
- else
- printf ("flashDiagAll: Failed because of earlier errors\n");
-
- return OK;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size = 0;
- flash_dev_t *dev = NULL;
-
- flashLibInit ();
-
- /*
- * Provide info for FLASH (up to 960K) of Kernel Image data.
- */
- dev = FLASH_DEV_BANK0_LOW;
- flash_info[FLASH_BANK_KERNEL].flash_id =
- (dev->vendorID << 16) | dev->deviceID;
- flash_info[FLASH_BANK_KERNEL].sector_count = dev->sectors;
- flash_info[FLASH_BANK_KERNEL].size =
- flash_info[FLASH_BANK_KERNEL].sector_count * FLASH_SECTOR_SIZE;
- flash_info[FLASH_BANK_KERNEL].start[FIRST_SECTOR] = dev->base;
- size += flash_info[FLASH_BANK_KERNEL].size;
-
- /*
- * Provide info for 512K PLCC FLASH ROM (U-Boot)
- */
- dev = FLASH_DEV_BANK0_BOOT;
- flash_info[FLASH_BANK_BOOT].flash_id =
- (dev->vendorID << 16) | dev->deviceID;
- flash_info[FLASH_BANK_BOOT].sector_count = dev->sectors;
- flash_info[FLASH_BANK_BOOT].size =
- flash_info[FLASH_BANK_BOOT].sector_count * FLASH_SECTOR_SIZE;
- flash_info[FLASH_BANK_BOOT].start[FIRST_SECTOR] = dev->base;
- size += flash_info[FLASH_BANK_BOOT].size;
-
-
- /*
- * Provide info for 512K FLASH0 segment (U-Boot)
- */
- dev = FLASH_DEV_BANK0_HIGH;
- flash_info[FLASH_BANK_AUX].flash_id =
- (dev->vendorID << 16) | dev->deviceID;
- flash_info[FLASH_BANK_AUX].sector_count = dev->sectors;
- flash_info[FLASH_BANK_AUX].size =
- flash_info[FLASH_BANK_AUX].sector_count * FLASH_SECTOR_SIZE;
- flash_info[FLASH_BANK_AUX].start[FIRST_SECTOR] = dev->base;
- size += flash_info[FLASH_BANK_AUX].size;
-
-
- return size;
-}
-
-/*
- * Get flash device from U-Boot flash info.
- */
-flash_dev_t *getFlashDevFromInfo (flash_info_t * info)
-{
- int i;
-
- if (!info)
- return NULL;
-
- for (i = 0; i < flashDevCount; i++) {
- flash_dev_t *dev = &flashDev[i];
-
- if (dev->found && (dev->base == info->start[0]))
- return dev;
- }
- printf ("ERROR: notice, no FLASH mapped at address 0x%x\n",
- (unsigned int) info->start[0]);
- return NULL;
-}
-
-ulong flash_get_size (vu_long * addr, flash_info_t * info)
-{
- int i;
-
- for (i = 0; i < flashDevCount; i++) {
- flash_dev_t *dev = &flashDev[i];
-
- if (dev->found) {
- if (dev->base == (unsigned int) addr) {
- info->flash_id = (dev->vendorID << 16) | dev->deviceID;
- info->sector_count = dev->sectors;
- info->size = info->sector_count * FLASH_SECTOR_SIZE;
- return dev->sectors * FLASH_SECTOR_SIZE;
- }
- }
- }
- return 0;
-}
-
-void flash_print_info (flash_info_t * info)
-{
- int i;
- unsigned int chip;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch ((info->flash_id >> 16) & 0xff) {
- case 0x1:
- printf ("AMD ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
- chip = (unsigned int) info->flash_id & 0x000000ff;
-
- switch (chip) {
-
- case AMD_ID_F040B:
- printf ("AM29F040B (4 Mbit)\n");
- break;
-
- case AMD_ID_LV160B:
- case FLASH_AM160LV:
- case 0x49:
- printf ("AM29LV160B (16 Mbit / 2M x 8bit)\n");
- break;
-
- default:
- printf ("Unknown Chip Type:0x%x\n", chip);
- break;
- }
-
- printf (" Size: %ld bytes in %d Sectors\n",
- info->size, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[FIRST_SECTOR] + i * FLASH_SECTOR_SIZE,
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-}
-
-
-/*
- * Erase a range of flash sectors.
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long *) (info->start[0]);
- int prot, sect, l_sect;
- flash_dev_t *dev = NULL;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Start erase on unprotected sectors */
- dev = getFlashDevFromInfo (info);
- if (dev) {
- printf ("Erase FLASH[%s] -%d sectors:", dev->name, dev->sectors);
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long *) (dev->base);
- /* printf("erase_sector: sector=%d, addr=0x%x\n",
- sect, addr); */
- printf (".");
- if (ERROR == flashEraseSector (dev, sect)) {
- printf ("ERROR: could not erase sector %d on FLASH[%s]\n", sect, dev->name);
- return 1;
- }
- }
- }
- }
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
-
- flash_dev_t *dev = getFlashDevFromInfo (info);
- int addr = dest - info->start[0];
-
- if (!dev)
- return 1;
-
- if (OK != flashWrite (dev, addr, (char *) &data, sizeof (ulong))) {
- printf ("ERROR: could not write to addr=0x%x, data=0x%x\n",
- (unsigned int) addr, (unsigned) data);
- return 1;
- }
-
- if ((addr % FLASH_SECTOR_SIZE) == 0)
- printf (".");
-
-
- PRINTF ("write_word:0x%x, base=0x%x, addr=0x%x, data=0x%x\n",
- (unsigned) info->start[0],
- (unsigned) dest,
- (unsigned) (dest - info->start[0]), (unsigned) data);
-
- return (0);
-}
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
- flash_dev_t *dev = getFlashDevFromInfo (info);
-
- if (dev) {
- printf ("FLASH[%s]:", dev->name);
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_word (info, wp, data));
- }
- return 1;
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/mousse/flash.h b/board/mousse/flash.h
deleted file mode 100644
index b7e4619c01..0000000000
--- a/board/mousse/flash.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef FLASH_LIB_H
-#define FLASH_LIB_H
-
-#include <common.h>
-
-/* PIO operations max */
-#define FLASH_PROGRAM_POLLS 100000
-
-/* 10 Seconds default */
-#define FLASH_ERASE_SECTOR_TIMEOUT (10*1000 /*SEC*/ )
-
-/* Flash device info structure */
-typedef struct flash_dev_s {
- char name[24]; /* Bank Name */
- int bank; /* Bank 0 or 1 */
- unsigned int base; /* Base address */
- int sectors; /* Sector count */
- int lgSectorSize; /* Log2(usable bytes/sector) */
- int vendorID; /* Expected vendor ID */
- int deviceID; /* Expected device ID */
- int found; /* Set if found by flashLibInit */
- int swap; /* Set for bank 1 if byte swap req'd */
-} flash_dev_t;
-
-#define FLASH_MAX_POS(dev) \
- ((dev)->sectors << (dev)->lgSectorSize)
-
-#define FLASH_SECTOR_POS(dev, sector) \
- ((sector) << (dev)->lgSectorSize)
-
-/* AMD 29F040 */
-#define FLASH0_BANK 0
-#define FLASH0_VENDOR_ID 0x01
-#define FLASH0_DEVICE_ID 0x49
-
-/* AMD29LV160DB */
-#define FLASH1_BANK 1
-#define FLASH1_VENDOR_ID 0x0001
-#define FLASH1_DEVICE_ID 0x2249
-
-extern flash_dev_t flashDev[];
-extern int flashDevCount;
-
-/*
- * Device pointers
- *
- * These must be kept in sync with the table in flashLib.c.
- */
-#define FLASH_DEV_BANK0_SA0 (&flashDev[0])
-#define FLASH_DEV_BANK0_SA1 (&flashDev[1])
-#define FLASH_DEV_BANK0_SA2 (&flashDev[2])
-#define FLASH_DEV_BANK0_LOW (&flashDev[3]) /* 960K */
-#define FLASH_DEV_BANK0_BOOT (&flashDev[4]) /* PLCC */
-#define FLASH_DEV_BANK0_HIGH (&flashDev[5]) /* 512K PLCC shadow */
-
-unsigned long flash_init(void);
-int flashEraseSector(flash_dev_t *dev, int sector);
-int flashErase(flash_dev_t *dev);
-int flashRead(flash_dev_t *dev, int pos, char *buf, int len);
-int flashWrite(flash_dev_t *dev, int pos, char *buf, int len);
-int flashWritable(flash_dev_t *dev, int pos, int len);
-int flashDiag(flash_dev_t *dev);
-int flashDiagAll(void);
-
-ulong flash_get_size (vu_long *addr, flash_info_t *info);
-void flash_print_info (flash_info_t *info);
-int flash_erase (flash_info_t *info, int s_first, int s_last);
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt);
-
-/*
- * Flash info indices.
- */
-#define FLASH_BANK_KERNEL 0
-#define FLASH_BANK_BOOT 1
-#define FLASH_BANK_AUX 2
-#define FIRST_SECTOR 0
-
-#endif /* !FLASH_LIB_H */
diff --git a/board/mousse/m48t59y.c b/board/mousse/m48t59y.c
deleted file mode 100644
index 37a6244198..0000000000
--- a/board/mousse/m48t59y.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * SGS M48-T59Y TOD/NVRAM Driver
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 1999, by Curt McDowell, 08-06-99, Broadcom Corp.
- *
- * (C) Copyright 2001, James Dougherty, 07/18/01, Broadcom Corp.
- *
- * 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
- */
-
-/*
- * SGS M48-T59Y TOD/NVRAM Driver
- *
- * The SGS M48 an 8K NVRAM starting at offset M48_BASE_ADDR and
- * continuing for 8176 bytes. After that starts the Time-Of-Day (TOD)
- * registers which are used to set/get the internal date/time functions.
- *
- * This module implements Y2K compliance by taking full year numbers
- * and translating back and forth from the TOD 2-digit year.
- *
- * NOTE: for proper interaction with an operating system, the TOD should
- * be used to store Universal Coordinated Time (GMT) and timezone
- * conversions should be used.
- *
- * Here is a diagram of the memory layout:
- *
- * +---------------------------------------------+ 0xffe0a000
- * | Non-volatile memory | .
- * | | .
- * | (8176 bytes of Non-volatile memory) | .
- * | | .
- * +---------------------------------------------+ 0xffe0bff0
- * | Flags |
- * +---------------------------------------------+ 0xffe0bff1
- * | Unused |
- * +---------------------------------------------+ 0xffe0bff2
- * | Alarm Seconds |
- * +---------------------------------------------+ 0xffe0bff3
- * | Alarm Minutes |
- * +---------------------------------------------+ 0xffe0bff4
- * | Alarm Date |
- * +---------------------------------------------+ 0xffe0bff5
- * | Interrupts |
- * +---------------------------------------------+ 0xffe0bff6
- * | WatchDog |
- * +---------------------------------------------+ 0xffe0bff7
- * | Calibration |
- * +---------------------------------------------+ 0xffe0bff8
- * | Seconds |
- * +---------------------------------------------+ 0xffe0bff9
- * | Minutes |
- * +---------------------------------------------+ 0xffe0bffa
- * | Hours |
- * +---------------------------------------------+ 0xffe0bffb
- * | Day |
- * +---------------------------------------------+ 0xffe0bffc
- * | Date |
- * +---------------------------------------------+ 0xffe0bffd
- * | Month |
- * +---------------------------------------------+ 0xffe0bffe
- * | Year (2 digits only) |
- * +---------------------------------------------+ 0xffe0bfff
- */
-#include <common.h>
-#include <rtc.h>
-#include "mousse.h"
-
-/*
- * Imported from mousse.h:
- *
- * TOD_REG_BASE Base of m48t59y TOD registers
- * SYS_TOD_UNPROTECT() Disable NVRAM write protect
- * SYS_TOD_PROTECT() Re-enable NVRAM write protect
- */
-
-#define YEAR 0xf
-#define MONTH 0xe
-#define DAY 0xd
-#define DAY_OF_WEEK 0xc
-#define HOUR 0xb
-#define MINUTE 0xa
-#define SECOND 0x9
-#define CONTROL 0x8
-#define WATCH 0x7
-#define INTCTL 0x6
-#define WD_DATE 0x5
-#define WD_HOUR 0x4
-#define WD_MIN 0x3
-#define WD_SEC 0x2
-#define _UNUSED 0x1
-#define FLAGS 0x0
-
-#define M48_ADDR ((volatile unsigned char *) TOD_REG_BASE)
-
-int m48_tod_init(void)
-{
- SYS_TOD_UNPROTECT();
-
- M48_ADDR[CONTROL] = 0;
- M48_ADDR[WATCH] = 0;
- M48_ADDR[INTCTL] = 0;
-
- /*
- * If the oscillator is currently stopped (as on a new part shipped
- * from the factory), start it running.
- *
- * Here is an example of the TOD bytes on a brand new M48T59Y part:
- * 00 00 00 00 00 00 00 00 00 88 8c c3 bf c8 f5 01
- */
-
- if (M48_ADDR[SECOND] & 0x80)
- M48_ADDR[SECOND] = 0;
-
- /* Is battery low */
- if ( M48_ADDR[FLAGS] & 0x10) {
- printf("NOTICE: Battery low on Real-Time Clock (replace SNAPHAT).\n");
- }
-
- SYS_TOD_PROTECT();
-
- return 0;
-}
-
-/*
- * m48_tod_set
- */
-
-static int to_bcd(int value)
-{
- return value / 10 * 16 + value % 10;
-}
-
-static int from_bcd(int value)
-{
- return value / 16 * 10 + value % 16;
-}
-
-static int day_of_week(int y, int m, int d) /* 0-6 ==> Sun-Sat */
-{
- static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
- y -= m < 3;
- return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
-}
-
-/*
- * Note: the TOD should store the current GMT
- */
-
-int m48_tod_set(int year, /* 1980-2079 */
- int month, /* 01-12 */
- int day, /* 01-31 */
- int hour, /* 00-23 */
- int minute, /* 00-59 */
- int second) /* 00-59 */
-
-{
- SYS_TOD_UNPROTECT();
-
- M48_ADDR[CONTROL] |= 0x80; /* Set WRITE bit */
-
- M48_ADDR[YEAR] = to_bcd(year % 100);
- M48_ADDR[MONTH] = to_bcd(month);
- M48_ADDR[DAY] = to_bcd(day);
- M48_ADDR[DAY_OF_WEEK] = day_of_week(year, month, day) + 1;
- M48_ADDR[HOUR] = to_bcd(hour);
- M48_ADDR[MINUTE] = to_bcd(minute);
- M48_ADDR[SECOND] = to_bcd(second);
-
- M48_ADDR[CONTROL] &= ~0x80; /* Clear WRITE bit */
-
- SYS_TOD_PROTECT();
-
- return 0;
-}
-
-/*
- * Note: the TOD should store the current GMT
- */
-
-int m48_tod_get(int *year, /* 1980-2079 */
- int *month, /* 01-12 */
- int *day, /* 01-31 */
- int *hour, /* 00-23 */
- int *minute, /* 00-59 */
- int *second) /* 00-59 */
-{
- int y;
-
- SYS_TOD_UNPROTECT();
-
- M48_ADDR[CONTROL] |= 0x40; /* Set READ bit */
-
- y = from_bcd(M48_ADDR[YEAR]);
- *year = y < 80 ? 2000 + y : 1900 + y;
- *month = from_bcd(M48_ADDR[MONTH]);
- *day = from_bcd(M48_ADDR[DAY]);
- /* day_of_week = M48_ADDR[DAY_OF_WEEK] & 0xf; */
- *hour = from_bcd(M48_ADDR[HOUR]);
- *minute = from_bcd(M48_ADDR[MINUTE]);
- *second = from_bcd(M48_ADDR[SECOND] & 0x7f);
-
- M48_ADDR[CONTROL] &= ~0x40; /* Clear READ bit */
-
- SYS_TOD_PROTECT();
-
- return 0;
-}
-
-int m48_tod_get_second(void)
-{
- return from_bcd(M48_ADDR[SECOND] & 0x7f);
-}
-
-/*
- * Watchdog function
- *
- * If usec is 0, the watchdog timer is disarmed.
- *
- * If usec is non-zero, the watchdog timer is armed (or re-armed) for
- * approximately usec microseconds (if the exact requested usec is
- * not supported by the chip, the next higher available value is used).
- *
- * Minimum watchdog timeout = 62500 usec
- * Maximum watchdog timeout = 124 sec (124000000 usec)
- */
-
-void m48_watchdog_arm(int usec)
-{
- int mpy, res;
-
- SYS_TOD_UNPROTECT();
-
- if (usec == 0) {
- res = 0;
- mpy = 0;
- } else if (usec < 2000000) { /* Resolution: 1/16s if below 2s */
- res = 0;
- mpy = (usec + 62499) / 62500;
- } else if (usec < 8000000) { /* Resolution: 1/4s if below 8s */
- res = 1;
- mpy = (usec + 249999) / 250000;
- } else if (usec < 32000000) { /* Resolution: 1s if below 32s */
- res = 2;
- mpy = (usec + 999999) / 1000000;
- } else { /* Resolution: 4s up to 124s */
- res = 3;
- mpy = (usec + 3999999) / 4000000;
- if (mpy > 31)
- mpy = 31;
- }
-
- M48_ADDR[WATCH] = (0x80 | /* Steer to RST signal (IRQ = N/C) */
- mpy << 2 |
- res);
-
- SYS_TOD_PROTECT();
-}
-
-/*
- * U-Boot RTC support.
- */
-void
-rtc_get( struct rtc_time *tmp )
-{
- m48_tod_get(&tmp->tm_year,
- &tmp->tm_mon,
- &tmp->tm_mday,
- &tmp->tm_hour,
- &tmp->tm_min,
- &tmp->tm_sec);
- tmp->tm_yday = 0;
- tmp->tm_isdst= 0;
-
-#ifdef RTC_DEBUG
- printf( "Get DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n",
- tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
- tmp->tm_hour, tmp->tm_min, tmp->tm_sec );
-#endif
-}
-
-void
-rtc_set( struct rtc_time *tmp )
-{
- m48_tod_set(tmp->tm_year, /* 1980-2079 */
- tmp->tm_mon, /* 01-12 */
- tmp->tm_mday, /* 01-31 */
- tmp->tm_hour, /* 00-23 */
- tmp->tm_min, /* 00-59 */
- tmp->tm_sec); /* 00-59 */
-
-#ifdef RTC_DEBUG
- printf( "Set DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n",
- tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
- tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
-#endif
-
-}
-
-void
-rtc_reset (void)
-{
- m48_tod_init();
-}
diff --git a/board/mousse/m48t59y.h b/board/mousse/m48t59y.h
deleted file mode 100644
index 717300d957..0000000000
--- a/board/mousse/m48t59y.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * SGS M48-T59Y TOD/NVRAM Driver
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 1999, by Curt McDowell, 08-06-99, Broadcom Corp.
- *
- * (C) Copyright 2001, James Dougherty, 07/18/01, Broadcom Corp.
- *
- * 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 __M48_T59_Y_H
-#define __M48_T59_Y_H
-
-/*
- * M48 T59Y -Timekeeping Battery backed SRAM.
- */
-
-int m48_tod_init(void);
-
-int m48_tod_set(int year,
- int month,
- int day,
- int hour,
- int minute,
- int second);
-
-int m48_tod_get(int *year,
- int *month,
- int *day,
- int *hour,
- int *minute,
- int *second);
-
-int m48_tod_get_second(void);
-
-void m48_watchdog_arm(int usec);
-
-#endif /*!__M48_T59_Y_H */
diff --git a/board/mousse/mousse.c b/board/mousse/mousse.c
deleted file mode 100644
index 7208a17c1a..0000000000
--- a/board/mousse/mousse.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * MOUSSE Board Support
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001
- * James Dougherty, jfd@cs.stanford.edu
- *
- * 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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-
-#include "mousse.h"
-#include "m48t59y.h"
-#include <pci.h>
-
-
-int checkboard (void)
-{
- ulong busfreq = get_bus_freq (0);
- char buf[32];
-
- puts ("Board: MOUSSE MPC8240/KAHLUA - CHRP (MAP B)\n");
- printf ("Built: %s at %s\n", __DATE__, __TIME__);
- printf ("MPLD: Revision %d\n", SYS_REVID_GET ());
- printf ("Local Bus: %s MHz\n", strmhz (buf, busfreq));
-
- return 0;
-}
-
-int checkflash (void)
-{
- printf ("checkflash\n");
- flash_init ();
- return 0;
-}
-
-long int initdram (int board_type)
-{
- return CFG_RAM_SIZE;
-}
-
-
-void get_tod (void)
-{
- int year, month, day, hour, minute, second;
-
- m48_tod_get (&year, &month, &day, &hour, &minute, &second);
-
- printf (" Current date/time: %d/%d/%d %d:%d:%d \n",
- month, day, year, hour, minute, second);
-
-}
-
-/*
- * EPIC, PCI, and I/O devices.
- * Initialize Mousse Platform, probe for PCI devices,
- * Query configuration parameters if not set.
- */
-int misc_init_f (void)
-{
- m48_tod_init (); /* Init SGS M48T59Y TOD/NVRAM */
- printf ("RTC: M48T589 TOD/NVRAM (%d) bytes\n", TOD_NVRAM_SIZE);
- get_tod ();
- return 0;
-}
diff --git a/board/mousse/mousse.h b/board/mousse/mousse.h
deleted file mode 100644
index 5468314eb7..0000000000
--- a/board/mousse/mousse.h
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * MOUSSE/MPC8240 Board definitions.
- * For more info, see http://www.vooha.com/
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001
- * James Dougherty (jfd@cs.stanford.edu)
- *
- * 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 __MOUSSE_H
-#define __MOUSSE_H
-
-/* System addresses */
-
-#define PCI_SPECIAL_BASE 0xfe000000
-#define PCI_SPECIAL_SIZE 0x01000000
-
-/* PORTX Device Addresses for Mousse */
-
-#define PORTX_DEV_BASE 0xff000000
-#define PORTX_DEV_SIZE 0x01000000
-
-#define ENET_DEV_BASE 0x80000000
-
-#define PLD_REG_BASE (PORTX_DEV_BASE | 0xe09000)
-#define PLD_REG(off) (*(volatile unsigned char *) \
- (PLD_REG_BASE + (off)))
-
-#define PLD_REVID_B1 0x7f
-#define PLD_REVID_B2 0x01
-
-/* MPLD */
-#define SYS_HARD_RESET() { for (;;) PLD_REG(0) = 0; } /* clr 0x80 bit */
-#define SYS_REVID_GET() ((int) PLD_REG(0) & 0x7f)
-#define SYS_LED_OFF() (PLD_REG(1) |= 0x80)
-#define SYS_LED_ON() (PLD_REG(1) &= ~0x80)
-#define SYS_WATCHDOG_IRQ3() (PLD_REG(2) |= 0x80)
-#define SYS_WATCHDOG_RESET() (PLD_REG(2) &= ~0x80)
-#define SYS_TOD_PROTECT() (PLD_REG(3) |= 0x80)
-#define SYS_TOD_UNPROTECT() (PLD_REG(3) &= ~0x80)
-
-/* SGS M48T59Y */
-#define TOD_BASE (PORTX_DEV_BASE | 0xe0a000)
-#define TOD_REG_BASE (TOD_BASE | 0x1ff0)
-#define TOD_NVRAM_BASE TOD_BASE
-#define TOD_NVRAM_SIZE 0x1ff0
-#define TOD_NVRAM_LIMIT (TOD_NVRAM_BASE + TOD_NVRAM_SIZE)
-
-/* NS16552 SIO */
-#define SERIAL_BASE(_x) (PORTX_DEV_BASE | 0xe08000 | ((_x) ? 0 : 0x80))
-#define N_SIO_CHANNELS 2
-#define N_COM_PORTS N_SIO_CHANNELS
-
-/*
- * On-board Dec21143 PCI Ethernet
- * Note: The PCI MBAR chosen here was used from MPC8240UM which states
- * that PCI memory is at: 0x80000 - 0xFDFFFFFF, if AMBOR[CPU_FD_ALIAS]
- * is set, then PCI memory maps 1-1 with this address range in the
- * correct byte order.
- */
-#define PCI_ENET_IOADDR 0x80000000
-#define PCI_ENET_MEMADDR 0x80000000
-
-/*
- * Flash Memory Layout
- *
- * 2 MB Flash Bank 0 runs in 8-bit mode. In Flash Bank 0, the 32 kB
- * sector SA3 is obscured by the 32 kB serial/TOD access space, and
- * the 64 kB sectors SA19-SA26 are obscured by the 512 kB PLCC
- * containing the fixed boot ROM. (If the 512 kB PLCC is
- * deconfigured by jumper, this window to Flash Bank 0 becomes
- * visible, but it still contains the fixed boot code and should be
- * considered read-only). Flash Bank 0 sectors SA0 (16 kB), SA1 (8
- * kB), and SA2 (8 kB) are currently unused.
- *
- * 2 MB Flash Bank 1 runs in 16-bit mode. Flash Bank 1 is fully
- * usable, but it's a 16-bit wide device on a 64-bit bus. Therefore
- * 16-bit words only exist at addresses that are multiples of 8. All
- * PROM data and control addresses must be multiplied by 8.
- *
- * See flashMap.c for description of flash filesystem layout.
- */
-
-/*
- * FLASH memory address space: 8-bit wide FLASH memory spaces.
- */
-#define FLASH0_SEG0_START 0xffe00000 /* Baby 32Kb segment */
-#define FLASH0_SEG0_END 0xffe07fff /* 16 kB + 8 kB + 8 kB */
-#define FLASH0_SEG0_SIZE 0x00008000 /* (sectors SA0-SA2) */
-
-#define FLASH0_SEG1_START 0xffe10000 /* 1MB - 64Kb FLASH0 seg */
-#define FLASH0_SEG1_END 0xffefffff /* 960 kB */
-#define FLASH0_SEG1_SIZE 0x000f0000
-
-#define FLASH0_SEG2_START 0xfff00000 /* Boot Loader stored here */
-#define FLASH0_SEG2_END 0xfff7ffff /* 512 kB FLASH0/PLCC seg */
-#define FLASH0_SEG2_SIZE 0x00080000
-
-#define FLASH0_SEG3_START 0xfff80000 /* 512 kB FLASH0 seg */
-#define FLASH0_SEG3_END 0xffffffff
-#define FLASH0_SEG3_SIZE 0x00080000
-
-/* Where Kahlua starts */
-#define FLASH_RESET_VECT 0xfff00100
-
-/*
- * CHRP / PREP (MAP A/B) definitions.
- */
-
-#define PREP_REG_ADDR 0x80000cf8 /* MPC107 Config, Map A */
-#define PREP_REG_DATA 0x80000cfc /* MPC107 Config, Map A */
-/* MPC107 (MPC8240 internal EUMBBAR mapped) */
-#define CHRP_REG_ADDR 0xfec00000 /* MPC106 Config, Map B */
-#define CHRP_REG_DATA 0xfee00000 /* MPC106 Config, Map B */
-
-/*
- * Mousse PCI IDSEL Assignments (Device Number)
- */
-#define MOUSSE_IDSEL_ENET 13 /* On-board 21143 Ethernet */
-#define MOUSSE_IDSEL_LPCI 14 /* On-board PCI slot */
-#define MOUSSE_IDSEL_82371 15 /* That other thing */
-#define MOUSSE_IDSEL_CPCI2 31 /* CPCI slot 2 */
-#define MOUSSE_IDSEL_CPCI3 30 /* CPCI slot 3 */
-#define MOUSSE_IDSEL_CPCI4 29 /* CPCI slot 4 */
-#define MOUSSE_IDSEL_CPCI5 28 /* CPCI slot 5 */
-#define MOUSSE_IDSEL_CPCI6 27 /* CPCI slot 6 */
-
-/*
- * Mousse Interrupt Mapping:
- *
- * IRQ1 Enet (intA|intB|intC|intD)
- * IRQ2 CPCI intA (See below)
- * IRQ3 Local PCI slot intA|intB|intC|intD
- * IRQ4 COM1 Serial port (Actually higher addressed port on duart)
- *
- * PCI Interrupt Mapping in CPCI chassis:
- *
- * | CPCI Slot
- * | 1 (CPU) 2 3 4 5 6
- * -----------+--------+-------+-------+-------+-------+-------+
- * intA | X X X
- * intB | X X X
- * intC | X X X
- * intD | X X X
- */
-
-
-#define EPIC_VECTOR_EXT0 0
-#define EPIC_VECTOR_EXT1 1
-#define EPIC_VECTOR_EXT2 2
-#define EPIC_VECTOR_EXT3 3
-#define EPIC_VECTOR_EXT4 4
-#define EPIC_VECTOR_TM0 16
-#define EPIC_VECTOR_TM1 17
-#define EPIC_VECTOR_TM2 18
-#define EPIC_VECTOR_TM3 19
-#define EPIC_VECTOR_I2C 20
-#define EPIC_VECTOR_DMA0 21
-#define EPIC_VECTOR_DMA1 22
-#define EPIC_VECTOR_I2O 23
-
-
-#define INT_VEC_IRQ0 0
-#define INT_NUM_IRQ0 INT_VEC_IRQ0
-#define MOUSSE_IRQ_ENET EPIC_VECTOR_EXT1 /* Hardwired */
-#define MOUSSE_IRQ_CPCI EPIC_VECTOR_EXT2 /* Hardwired */
-#define MOUSSE_IRQ_LPCI EPIC_VECTOR_EXT3 /* Hardwired */
-#define MOUSSE_IRQ_DUART EPIC_VECTOR_EXT4 /* Hardwired */
-
-/* Onboard DEC 21143 Ethernet */
-#define PCI_ENET_MEMADDR 0x80000000
-#define PCI_ENET_IOADDR 0x80000000
-
-/* Some other PCI device */
-#define PCI_SLOT_MEMADDR 0x81000000
-#define PCI_SLOT_IOADDR 0x81000000
-
-/* Promise ATA66 PCI Device (ATA controller) */
-#define PROMISE_MBAR0 0xa0000000
-#define PROMISE_MBAR1 (PROMISE_MBAR0 + 0x1000)
-#define PROMISE_MBAR2 (PROMISE_MBAR0 + 0x2000)
-#define PROMISE_MBAR3 (PROMISE_MBAR0 + 0x3000)
-#define PROMISE_MBAR4 (PROMISE_MBAR0 + 0x4000)
-#define PROMISE_MBAR5 (PROMISE_MBAR0 + 0x5000)
-
-/* ATA/66 Controller offsets */
-#define CFG_ATA_BASE_ADDR PROMISE_MBAR0
-#define CFG_IDE_MAXBUS 2 /* ide0/ide1 */
-#define CFG_IDE_MAXDEVICE 2 /* 2 drives per controller */
-#define CFG_ATA_IDE0_OFFSET 0
-#define CFG_ATA_IDE1_OFFSET 0x3000
-/*
- * Definitions for accessing IDE controller registers
- */
-#define CFG_ATA_DATA_OFFSET 0
-#define CFG_ATA_REG_OFFSET 0
-#define CFG_ATA_ALT_OFFSET (0x1000)
-
-/*
- * The constants ROM_TEXT_ADRS, ROM_SIZE, RAM_HIGH_ADRS, and RAM_LOW_ADRS
- * are defined in config.h and Makefile.
- * All definitions for these constants must be identical.
- */
-#define ROM_BASE_ADRS 0xfff00000 /* base address of ROM */
-#define ROM_TEXT_ADRS (ROM_BASE_ADRS+0x0100) /* with PC & SP */
-#define ROM_WARM_ADRS (ROM_TEXT_ADRS+0x0004) /* warm reboot entry */
-#define ROM_SIZE 0x00080000 /* 512KB ROM space */
-#define RAM_LOW_ADRS 0x00010000 /* RAM address for vxWorks */
-#define RAM_HIGH_ADRS 0x00c00000 /* RAM address for bootrom */
-
-/*
- * NVRAM configuration
- * NVRAM is implemented via the SGS Thomson M48T59Y
- * 64Kbit (8Kbx8) Timekeeper SRAM.
- * This 8KB NVRAM also has a TOD. See m48t59y.{h,c} for more information.
- */
-
-#define NV_RAM_ADRS TOD_NVRAM_BASE
-#define NV_RAM_INTRVL 1
-#define NV_RAM_WR_ENBL SYS_TOD_UNPROTECT()
-#define NV_RAM_WR_DSBL SYS_TOD_PROTECT()
-
-#define NV_OFF_BOOT0 0x0000 /* Boot string 0 (256b) */
-#define NV_OFF_BOOT1 0x0100 /* Boot string 1 (256b) */
-#define NV_OFF_BOOT2 0x0200 /* Boot string 2 (256b)*/
-#define NV_OFF_MACADDR 0x0400 /* 21143 MAC address (6b) */
-#define NV_OFF_ACTIVEBOOT 0x0406 /* Active boot string, 0 to 2 (1b) */
-#define NV_OFF_UNUSED1 0x0407 /* Unused (1b) */
-#define NV_OFF_BINDFIX 0x0408 /* See sysLib.c:sysBindFix() (1b) */
-#define NV_OFF_UNUSED2 0x0409 /* Unused (7b) */
-#define NV_OFF_TIMEZONE 0x0410 /* TIMEZONE env var (64b) */
-#define NV_OFF_VXWORKS_END 0x07FF /* 2047 VxWorks Total */
-#define NV_OFF_U_BOOT 0x0800 /* 2048 U-Boot boot-loader */
-#define NV_OFF_U_BOOT_ADDR (TOD_BASE + NV_OFF_U_BOOT) /* sysaddr*/
-#define NV_U_BOOT_ENV_SIZE 2048 /* 2K - U-Boot Total */
-#define NV_OFF__next_free (NV_U_BOOT_ENVSIZE +1)
-#define NV_RAM_SIZE 8176 /* NVRAM End */
-
-#endif /* __MOUSSE_H */
diff --git a/board/mousse/pci.c b/board/mousse/pci.c
deleted file mode 100644
index 4f393984ca..0000000000
--- a/board/mousse/pci.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001
- * James Dougherty (jfd@cs.stanford.edu)
- *
- * 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
- */
-
-/*
- * PCI Configuration space access support for MPC824x/MPC107 PCI Bridge
- */
-#include <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-
-#include "mousse.h"
-
-/*
- * Promise ATA/66 support.
- */
-#define XFER_PIO_4 0x0C /* 0000|1100 */
-#define XFER_PIO_3 0x0B /* 0000|1011 */
-#define XFER_PIO_2 0x0A /* 0000|1010 */
-#define XFER_PIO_1 0x09 /* 0000|1001 */
-#define XFER_PIO_0 0x08 /* 0000|1000 */
-#define XFER_PIO_SLOW 0x00 /* 0000|0000 */
-
-/* Promise Regs */
-#define REG_A 0x01
-#define REG_B 0x02
-#define REG_C 0x04
-#define REG_D 0x08
-
-void
-pdc202xx_decode_registers (unsigned char registers, unsigned char value)
-{
- unsigned char bit = 0, bit1 = 0, bit2 = 0;
- switch(registers) {
- case REG_A:
- bit2 = 0;
- printf(" A Register ");
- if (value & 0x80) printf("SYNC_IN ");
- if (value & 0x40) printf("ERRDY_EN ");
- if (value & 0x20) printf("IORDY_EN ");
- if (value & 0x10) printf("PREFETCH_EN ");
- if (value & 0x08) { printf("PA3 ");bit2 |= 0x08; }
- if (value & 0x04) { printf("PA2 ");bit2 |= 0x04; }
- if (value & 0x02) { printf("PA1 ");bit2 |= 0x02; }
- if (value & 0x01) { printf("PA0 ");bit2 |= 0x01; }
- printf("PIO(A) = %d ", bit2);
- break;
- case REG_B:
- bit1 = 0;bit2 = 0;
- printf(" B Register ");
- if (value & 0x80) { printf("MB2 ");bit1 |= 0x80; }
- if (value & 0x40) { printf("MB1 ");bit1 |= 0x40; }
- if (value & 0x20) { printf("MB0 ");bit1 |= 0x20; }
- printf("DMA(B) = %d ", bit1 >> 5);
- if (value & 0x10) printf("PIO_FORCED/PB4 ");
- if (value & 0x08) { printf("PB3 ");bit2 |= 0x08; }
- if (value & 0x04) { printf("PB2 ");bit2 |= 0x04; }
- if (value & 0x02) { printf("PB1 ");bit2 |= 0x02; }
- if (value & 0x01) { printf("PB0 ");bit2 |= 0x01; }
- printf("PIO(B) = %d ", bit2);
- break;
- case REG_C:
- bit2 = 0;
- printf(" C Register ");
- if (value & 0x80) printf("DMARQp ");
- if (value & 0x40) printf("IORDYp ");
- if (value & 0x20) printf("DMAR_EN ");
- if (value & 0x10) printf("DMAW_EN ");
-
- if (value & 0x08) { printf("MC3 ");bit2 |= 0x08; }
- if (value & 0x04) { printf("MC2 ");bit2 |= 0x04; }
- if (value & 0x02) { printf("MC1 ");bit2 |= 0x02; }
- if (value & 0x01) { printf("MC0 ");bit2 |= 0x01; }
- printf("DMA(C) = %d ", bit2);
- break;
- case REG_D:
- printf(" D Register ");
- break;
- default:
- return;
- }
- printf("\n %s ", (registers & REG_D) ? "DP" :
- (registers & REG_C) ? "CP" :
- (registers & REG_B) ? "BP" :
- (registers & REG_A) ? "AP" : "ERROR");
- for (bit=128;bit>0;bit/=2)
- printf("%s", (value & bit) ? "1" : "0");
- printf("\n");
-}
-
-/*
- * Promise ATA/66 Support: configure Promise ATA66 card in specified mode.
- */
-int
-pdc202xx_tune_chipset (pci_dev_t dev, int drive, unsigned char speed)
-{
- unsigned short drive_conf;
- int err = 0;
- unsigned char drive_pci, AP, BP, CP, DP;
- unsigned char TA = 0, TB = 0;
-
- switch (drive) {
- case 0: drive_pci = 0x60; break;
- case 1: drive_pci = 0x64; break;
- case 2: drive_pci = 0x68; break;
- case 3: drive_pci = 0x6c; break;
- default: return -1;
- }
-
- pci_read_config_word(dev, drive_pci, &drive_conf);
- pci_read_config_byte(dev, (drive_pci), &AP);
- pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
- pci_read_config_byte(dev, (drive_pci)|0x02, &CP);
- pci_read_config_byte(dev, (drive_pci)|0x03, &DP);
-
- if ((AP & 0x0F) || (BP & 0x07)) {
- /* clear PIO modes of lower 8421 bits of A Register */
- pci_write_config_byte(dev, (drive_pci), AP & ~0x0F);
- pci_read_config_byte(dev, (drive_pci), &AP);
-
- /* clear PIO modes of lower 421 bits of B Register */
- pci_write_config_byte(dev, (drive_pci)|0x01, BP & ~0x07);
- pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
-
- pci_read_config_byte(dev, (drive_pci), &AP);
- pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
- }
-
- pci_read_config_byte(dev, (drive_pci), &AP);
- pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
- pci_read_config_byte(dev, (drive_pci)|0x02, &CP);
-
- switch(speed) {
- case XFER_PIO_4: TA = 0x01; TB = 0x04; break;
- case XFER_PIO_3: TA = 0x02; TB = 0x06; break;
- case XFER_PIO_2: TA = 0x03; TB = 0x08; break;
- case XFER_PIO_1: TA = 0x05; TB = 0x0C; break;
- case XFER_PIO_0:
- default: TA = 0x09; TB = 0x13; break;
- }
-
- pci_write_config_byte(dev, (drive_pci), AP|TA);
- pci_write_config_byte(dev, (drive_pci)|0x01, BP|TB);
-
- pci_read_config_byte(dev, (drive_pci), &AP);
- pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
- pci_read_config_byte(dev, (drive_pci)|0x02, &CP);
- pci_read_config_byte(dev, (drive_pci)|0x03, &DP);
-
-
-#ifdef PDC202XX_DEBUG
- pdc202xx_decode_registers(REG_A, AP);
- pdc202xx_decode_registers(REG_B, BP);
- pdc202xx_decode_registers(REG_C, CP);
- pdc202xx_decode_registers(REG_D, DP);
-#endif
- return err;
-}
-/*
- * Show/Init PCI devices on the specified bus number.
- */
-
-void pci_mousse_fixup_irq(struct pci_controller *hose, pci_dev_t dev)
-{
- unsigned int line;
-
- switch(PCI_DEV(dev)) {
- case 0x0d:
- line = 0x00000101;
- break;
-
- case 0x0e:
- default:
- line = 0x00000303;
- break;
- }
-
- pci_write_config_dword(dev, PCI_INTERRUPT_LINE, line);
-}
-
-void pci_mousse_setup_pdc202xx(struct pci_controller *hose, pci_dev_t dev,
- struct pci_config_table *_)
-{
- unsigned short vendorId;
- unsigned int mbar0, cmd;
- int bar, a;
-
- pci_read_config_word(dev, PCI_VENDOR_ID, &vendorId);
-
- if(vendorId == PCI_VENDOR_ID_PROMISE || vendorId == PCI_VENDOR_ID_CMD){
- /* PDC 202xx card is handled differently, it is a bootable
- * device and needs all 5 MBAR's configured
- */
- for(bar = 0; bar < 5; bar++){
- pci_read_config_dword(dev, PCI_BASE_ADDRESS_0+bar*4, &mbar0);
- pci_write_config_dword(dev, PCI_BASE_ADDRESS_0+bar*4, ~0);
- pci_read_config_dword(dev, PCI_BASE_ADDRESS_0+bar*4, &mbar0);
-#ifdef DEBUG
- printf(" ATA_bar[%d] = %dbytes\n", bar,
- ~(mbar0 & PCI_BASE_ADDRESS_MEM_MASK) + 1);
-#endif
- }
-
- /* Program all BAR's */
- pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, PROMISE_MBAR0);
- pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, PROMISE_MBAR1);
- pci_write_config_dword(dev, PCI_BASE_ADDRESS_2, PROMISE_MBAR2);
- pci_write_config_dword(dev, PCI_BASE_ADDRESS_3, PROMISE_MBAR3);
- pci_write_config_dword(dev, PCI_BASE_ADDRESS_4, PROMISE_MBAR4);
- pci_write_config_dword(dev, PCI_BASE_ADDRESS_5, PROMISE_MBAR5);
-
- for(bar = 0; bar < 5; bar++){
- pci_read_config_dword(dev, PCI_BASE_ADDRESS_0+bar*4, &mbar0);
-#ifdef DEBUG
- printf(" ATA_bar[%d]@0x%x\n", bar, mbar0);
-#endif
- }
-
- /* Enable ROM Expansion base */
- pci_write_config_dword(dev, PCI_ROM_ADDRESS, PROMISE_MBAR5|1);
-
- /* Io enable, Memory enable, master enable */
- pci_read_config_dword(dev, PCI_COMMAND, &cmd);
- cmd &= ~0xffff0000;
- cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY | PCI_COMMAND_IO;
- pci_write_config_dword(dev, PCI_COMMAND, cmd);
-
- /* Breath some life into the controller */
- for( a = 0; a < 4; a++)
- pdc202xx_tune_chipset(dev, a, XFER_PIO_0);
- }
-}
-
-static struct pci_config_table pci_sandpoint_config_table[] = {
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 0x0e, 0x00,
- pci_mousse_setup_pdc202xx },
-#ifndef CONFIG_PCI_PNP
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 0x0d, 0x00,
- pci_cfgfunc_config_device, {PCI_ENET_IOADDR,
- PCI_ENET_MEMADDR,
- PCI_COMMAND_MEMORY |
- PCI_COMMAND_MASTER}},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- pci_cfgfunc_config_device, {PCI_SLOT_IOADDR,
- PCI_SLOT_MEMADDR,
- PCI_COMMAND_MEMORY |
- PCI_COMMAND_MASTER}},
-#endif
- { }
-};
-
-struct pci_controller hose = {
- config_table: pci_sandpoint_config_table,
- fixup_irq: pci_mousse_fixup_irq,
-};
-
-void pci_init_board(void)
-{
- pci_mpc824x_init(&hose);
-}
diff --git a/board/mousse/u-boot.lds b/board/mousse/u-boot.lds
deleted file mode 100644
index 57358b8a49..0000000000
--- a/board/mousse/u-boot.lds
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FF) & 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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/mousse/u-boot.lds.ram b/board/mousse/u-boot.lds.ram
deleted file mode 100644
index eb47ae670d..0000000000
--- a/board/mousse/u-boot.lds.ram
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * (C) Copyright 2000
- * Rob Taylor, Flying Pig Systems Ltd. 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
- */
-
-OUTPUT_ARCH(powerpc)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib);
-
-MEMORY {
- ram (!rx) : org = 0x00000000 , LENGTH = 8M
- code (!rx) : org = 0x00002000 , LENGTH = (4M - 0x2000)
- rom (rx) : org = 0xfff00000 , LENGTH = 512K
-}
-
-SECTIONS
-{
- _f_init = .;
- PROVIDE(_f_init = .);
- _f_init_rom = .;
- PROVIDE(_f_init_rom = .);
-
- .init : {
- cpu/mpc824x/start.o (.text)
- *(.init)
- } > ram
- _init_size = SIZEOF(.init);
- PROVIDE(_init_size = SIZEOF(.init));
-
- ENTRY(_start)
-
-/* _ftext = .;
- _ftext_rom = .;
- _text_size = SIZEOF(.text);
- */
- .text : {
- *(.text)
- *(.got1)
- } > ram
- .rodata : { *(.rodata) } > ram
- .dtors : { *(.dtors) } > ram
- .data : { *(.data) } > ram
- .sdata : { *(.sdata) } > ram
- .sdata2 : { *(.sdata2)
- *(.got)
- _GOT2_TABLE_ = .;
- *(.got2)
- _FIXUP_TABLE_ = .;
- *(.fixup)
- } > ram
- __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
- __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
- .sbss : { *(.sbss) } > ram
- .sbss2 : { *(.sbss2) } > ram
- .bss : { *(.bss) } > ram
- .debug : { *(.debug) } > ram
- .line : { *(.line) } > ram
- .symtab : { *(.symtab) } > ram
- .shrstrtab : { *(.shstrtab) } > ram
- .strtab : { *(.strtab) } > ram
- /* .reloc :
- {
- *(.got)
- _GOT2_TABLE_ = .;
- *(.got2)
- _FIXUP_TABLE_ = .;
- *(.fixup)
- } > ram
- */
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) } > ram
- __stop___ex_table = .;
-
-
- .ppcenv :
- {
- common/environment.o (.ppcenv)
- } > ram
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/mousse/u-boot.lds.rom b/board/mousse/u-boot.lds.rom
deleted file mode 100644
index 5a5722e81a..0000000000
--- a/board/mousse/u-boot.lds.rom
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- common/board.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FF) & 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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/mp2usb/Makefile b/board/mp2usb/Makefile
deleted file mode 100644
index 423d77da3b..0000000000
--- a/board/mp2usb/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := mp2usb.o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/mp2usb/config.mk b/board/mp2usb/config.mk
deleted file mode 100644
index e299bfd5ef..0000000000
--- a/board/mp2usb/config.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-TEXT_BASE = 0x27F00000
-## For testing: load at 0x20100000 and "go" at 0x201000A4
-#TEXT_BASE = 0x20100000
diff --git a/board/mp2usb/flash.c b/board/mp2usb/flash.c
deleted file mode 100644
index 89ced163bb..0000000000
--- a/board/mp2usb/flash.c
+++ /dev/null
@@ -1,552 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Modified for the MP2USB by (C) Copyright 2005 Eric Benard
- * ebenard@eukrea.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
- */
-
-#include <common.h>
-#include <linux/byteorder/swab.h>
-
-#define CFG_MAX_FLASH_BANKS 1
-#define PHYS_FLASH_SECT_SIZE 0x00020000 /* 128 KB sectors (x1) */
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/* Intel-compatible flash commands */
-#define INTEL_PROGRAM 0x00100010
-#define INTEL_ERASE 0x00200020
-#define INTEL_PROG 0x00400040
-#define INTEL_CLEAR 0x00500050
-#define INTEL_LOCKBIT 0x00600060
-#define INTEL_PROTECT 0x00010001
-#define INTEL_STATUS 0x00700070
-#define INTEL_READID 0x00900090
-#define INTEL_SUSPEND 0x00B000B0
-#define INTEL_CONFIRM 0x00D000D0
-#define INTEL_RESET 0xFFFFFFFF
-
-/* Intel-compatible flash status bits */
-#define INTEL_FINISHED 0x00800080
-#define INTEL_OK 0x00800080
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-void inline spin_wheel (void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect ( FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0] );
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0] );
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F640J3A:
- printf ("28F640J3A\n");
- break;
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) INTEL_RESET; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (FPW) INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) INTEL_RESET; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int prot, sect;
- ulong type, start, last;
- int rcode = 0;
- int cflag, iflag;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status ();
- icache_disable ();
- /* Disable interrupts which might cause a timeout here */
- iflag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) INTEL_CLEAR; /* clear status register */
- *addr = (FPW) INTEL_ERASE; /* erase setup */
- *addr = (FPW) INTEL_CONFIRM; /* erase confirm */
-
- while (((status = *addr) & (FPW) INTEL_FINISHED) != (FPW) INTEL_FINISHED) {
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) INTEL_SUSPEND; /* suspend erase */
- *addr = (FPW) INTEL_RESET; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = (FPWV)INTEL_CLEAR; /* clear status register cmd. */
- *addr = (FPWV)INTEL_RESET; /* resest to read mode */
-
- printf (" done\n");
- }
- }
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- /* get lower word aligned address */
- wp = (addr & ~1);
- port_width = 2;
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int cflag, iflag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
- return (2);
- }
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status ();
- icache_disable ();
- /* Disable interrupts which might cause a timeout here */
- iflag = disable_interrupts ();
-
- *addr = (FPW) INTEL_PROG; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) INTEL_FINISHED) != (FPW) INTEL_FINISHED) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) INTEL_RESET; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) INTEL_RESET; /* restore read mode */
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
-
-/*-----------------------------------------------------------------------
- * Set/Clear sector's lock bit, returns:
- * 0 - OK
- * 1 - Error (timeout, voltage problems, etc.)
- */
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
- int i;
- int rc = 0;
- FPWV *addr = (FPWV *)(info->start[sector]);
- int flag = disable_interrupts();
-
- *addr = (FPW) INTEL_CLEAR; /* Clear status register */
- if (prot) { /* Set sector lock bit */
- *addr = (FPW) INTEL_LOCKBIT; /* Sector lock bit */
- *addr = (FPW) INTEL_PROTECT; /* set */
- }
- else { /* Clear sector lock bit */
- *addr = (FPW) INTEL_LOCKBIT; /* All sectors lock bits */
- *addr = (FPW) INTEL_CONFIRM; /* clear */
- }
-
- reset_timer_masked ();
-
- while ((*addr & (FPW) INTEL_FINISHED) != (FPW) INTEL_FINISHED) {
- if (get_timer_masked () > CFG_FLASH_UNLOCK_TOUT) {
- printf("Flash lock bit operation timed out\n");
- rc = 1;
- break;
- }
- }
-
- if (*addr != (FPW) INTEL_OK) {
- printf("Flash lock bit operation failed at %08X, CSR=%08X\n",
- (uint)addr, (uint)*addr);
- rc = 1;
- }
-
- if (!rc)
- info->protect[sector] = prot;
-
- /*
- * Clear lock bit command clears all sectors lock bits, so
- * we have to restore lock bits of protected sectors.
- */
- if (!prot)
- {
- for (i = 0; i < info->sector_count; i++)
- {
- if (info->protect[i])
- {
- reset_timer_masked ();
- addr = (FPWV *) (info->start[i]);
- *addr = (FPW) INTEL_LOCKBIT; /* Sector lock bit */
- *addr = (FPW) INTEL_PROTECT; /* set */
- while ((*addr & (FPW) INTEL_FINISHED) != (FPW) INTEL_FINISHED)
- {
- if (get_timer_masked () > CFG_FLASH_UNLOCK_TOUT)
- {
- printf("Flash lock bit operation timed out\n");
- rc = 1;
- break;
- }
- }
- }
- }
- }
-
- if (flag)
- enable_interrupts();
-
- *addr = (FPW) INTEL_RESET; /* Reset to read array mode */
-
- return rc;
-}
diff --git a/board/mp2usb/mp2usb.c b/board/mp2usb/mp2usb.c
deleted file mode 100644
index 486d44c202..0000000000
--- a/board/mp2usb/mp2usb.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Modified for the MP2USB by (C) Copyright 2005 Eric Benard
- * ebenard@eukrea.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
- */
-
-#include <common.h>
-#include <asm/arch/AT91RM9200.h>
-#include <at91rm9200_net.h>
-#include <dm9161.h>
-#include <asm/mach-types.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* Enable Ctrlc */
- console_init_f ();
-
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* arch number of MP2USB-Board. */
- gd->bd->bi_arch_number = MACH_TYPE_MP2USB;
- /* adress of boot parameters */
- gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE;
- return 0;
-}
-
-#ifdef CONFIG_DRIVER_ETHER
-#if (CONFIG_COMMANDS & CFG_CMD_NET)
-
-/*
- * Name:
- * at91rm9200_GetPhyInterface
- * Description:
- * Initialise the interface functions to the PHY
- * Arguments:
- * None
- * Return value:
- * None
- */
-void at91rm9200_GetPhyInterface(AT91PS_PhyOps p_phyops)
-{
- p_phyops->Init = dm9161_InitPhy;
- p_phyops->IsPhyConnected = dm9161_IsPhyConnected;
- p_phyops->GetLinkSpeed = dm9161_GetLinkSpeed;
- p_phyops->AutoNegotiate = dm9161_AutoNegotiate;
-}
-
-#endif /* CONFIG_COMMANDS & CFG_CMD_NET */
-#endif /* CONFIG_DRIVER_ETHER */
diff --git a/board/mp2usb/u-boot.lds b/board/mp2usb/u-boot.lds
deleted file mode 100644
index 76df6b2af1..0000000000
--- a/board/mp2usb/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/mpc8260ads/Makefile b/board/mpc8260ads/Makefile
deleted file mode 100644
index de7d847a5f..0000000000
--- a/board/mpc8260ads/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/mpc8260ads/config.mk b/board/mpc8260ads/config.mk
deleted file mode 100644
index e99e181dda..0000000000
--- a/board/mpc8260ads/config.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# (C) Copyright 2001-2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Modified by, Stuart Hughes, Lineo Inc, stuarth@lineo.com
-#
-# Modified by, Yuli Barcohen, Arabella Software Ltd., yuli@arabellasw.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
-#
-
-#
-# MPC8260ADS, MPC8266ADS, and PQ2FADS-ZU/VR boards
-#
-
-sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
-
-ifndef TEXT_BASE
-## Standard: boot high
-TEXT_BASE = 0xFFF00000
-endif
diff --git a/board/mpc8260ads/flash.c b/board/mpc8260ads/flash.c
deleted file mode 100644
index 59997aac4f..0000000000
--- a/board/mpc8260ads/flash.c
+++ /dev/null
@@ -1,492 +0,0 @@
-/*
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001, Stuart Hughes, Lineo Inc, stuarth@lineo.com
- * Add support the Sharp chips on the mpc8260ads.
- * I started with board/ip860/flash.c and made changes I found in
- * the MTD project by David Schleef.
- *
- * (C) Copyright 2003 Arabella Software Ltd.
- * Yuli Barcohen <yuli@arabellasw.com>
- * Re-written to support multi-bank flash SIMMs.
- * Added support for real protection and JFFS2.
- *
- * 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 <common.h>
-
-/* Intel-compatible flash ID */
-#define INTEL_COMPAT 0x89898989
-#define INTEL_ALT 0xB0B0B0B0
-
-/* Intel-compatible flash commands */
-#define INTEL_PROGRAM 0x10101010
-#define INTEL_ERASE 0x20202020
-#define INTEL_CLEAR 0x50505050
-#define INTEL_LOCKBIT 0x60606060
-#define INTEL_PROTECT 0x01010101
-#define INTEL_STATUS 0x70707070
-#define INTEL_READID 0x90909090
-#define INTEL_CONFIRM 0xD0D0D0D0
-#define INTEL_RESET 0xFFFFFFFF
-
-/* Intel-compatible flash status bits */
-#define INTEL_FINISHED 0x80808080
-#define INTEL_OK 0x80808080
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * This board supports 32-bit wide flash SIMMs (4x8-bit configuration.)
- * Up to 32MB of flash supported (up to 4 banks.)
- * BCSR is used for flash presence detect (page 4-65 of the User's Manual)
- *
- * The following code can not run from flash!
- */
-unsigned long flash_init (void)
-{
- ulong size = 0, sect_start, sect_size = 0, bank_size;
- ushort sect_count = 0;
- int i, j, nbanks;
- vu_long *addr = (vu_long *)CFG_FLASH_BASE;
- vu_long *bcsr = (vu_long *)CFG_BCSR;
-
- switch (bcsr[2] & 0xF) {
- case 0:
- nbanks = 4;
- break;
- case 1:
- nbanks = 2;
- break;
- case 2:
- nbanks = 1;
- break;
- default: /* Unsupported configurations */
- nbanks = CFG_MAX_FLASH_BANKS;
- }
-
- if (nbanks > CFG_MAX_FLASH_BANKS)
- nbanks = CFG_MAX_FLASH_BANKS;
-
- for (i = 0; i < nbanks; i++) {
- *addr = INTEL_READID; /* Read Intelligent Identifier */
- if ((addr[0] == INTEL_COMPAT) || (addr[0] == INTEL_ALT)) {
- switch (addr[1]) {
- case SHARP_ID_28F016SCL:
- case SHARP_ID_28F016SCZ:
- flash_info[i].flash_id = FLASH_MAN_SHARP | FLASH_LH28F016SCT;
- sect_count = 32;
- sect_size = 0x40000;
- break;
- default:
- flash_info[i].flash_id = FLASH_UNKNOWN;
- sect_count = CFG_MAX_FLASH_SECT;
- sect_size =
- CFG_FLASH_SIZE / CFG_MAX_FLASH_BANKS / CFG_MAX_FLASH_SECT;
- }
- }
- else
- flash_info[i].flash_id = FLASH_UNKNOWN;
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf("### Unknown flash ID %08lX %08lX at address %08lX ###\n",
- addr[0], addr[1], (ulong)addr);
- size = 0;
- *addr = INTEL_RESET; /* Reset bank to Read Array mode */
- break;
- }
- flash_info[i].sector_count = sect_count;
- flash_info[i].size = bank_size = sect_size * sect_count;
- size += bank_size;
- sect_start = (ulong)addr;
- for (j = 0; j < sect_count; j++) {
- addr = (vu_long *)sect_start;
- flash_info[i].start[j] = sect_start;
- flash_info[i].protect[j] = (addr[2] == 0x01010101);
- sect_start += sect_size;
- }
- *addr = INTEL_RESET; /* Reset bank to Read Array mode */
- addr = (vu_long *)sect_start;
- }
-
- if (size == 0) { /* Unknown flash, fill with hard-coded values */
- sect_start = CFG_FLASH_BASE;
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].size = CFG_FLASH_SIZE / CFG_MAX_FLASH_BANKS;
- flash_info[i].sector_count = sect_count;
- for (j = 0; j < sect_count; j++) {
- flash_info[i].start[j] = sect_start;
- flash_info[i].protect[j] = 0;
- sect_start += sect_size;
- }
- }
- size = CFG_FLASH_SIZE;
- }
- else
- for (i = nbanks; i < CFG_MAX_FLASH_BANKS; i++) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].size = 0;
- flash_info[i].sector_count = 0;
- }
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL: printf ("Intel "); break;
- case FLASH_MAN_SHARP: printf ("Sharp "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F016SV: printf ("28F016SV (16 Mbit, 32 x 64k)\n");
- break;
- case FLASH_28F160S3: printf ("28F160S3 (16 Mbit, 32 x 512K)\n");
- break;
- case FLASH_28F320S3: printf ("28F320S3 (32 Mbit, 64 x 512K)\n");
- break;
- case FLASH_LH28F016SCT: printf ("28F016SC (16 Mbit, 32 x 64K)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ( ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL)
- && ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_SHARP) ) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *)(info->start[sect]);
-
- last = start = get_timer (0);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Clear Status Register */
- *addr = INTEL_CLEAR;
- /* Single Block Erase Command */
- *addr = INTEL_ERASE;
- /* Confirm */
- *addr = INTEL_CONFIRM;
-
- if((info->flash_id & FLASH_TYPEMASK) != FLASH_LH28F016SCT) {
- /* Resume Command, as per errata update */
- *addr = INTEL_CONFIRM;
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- while ((*addr & INTEL_FINISHED) != INTEL_FINISHED) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = INTEL_RESET; /* reset bank */
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- if (*addr != INTEL_OK) {
- printf("Block erase failed at %08X, CSR=%08X\n",
- (uint)addr, (uint)*addr);
- *addr = INTEL_RESET; /* reset bank */
- return 1;
- }
-
- /* reset to read mode */
- *addr = INTEL_RESET;
- }
- }
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- ulong start;
- int rc = 0;
- int flag;
- vu_long *addr = (vu_long *)dest;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- return (2);
- }
-
- *addr = INTEL_CLEAR; /* Clear status register */
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Write Command */
- *addr = INTEL_PROGRAM;
-
- /* Write Data */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*addr & INTEL_FINISHED) != INTEL_FINISHED) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- printf("Write timed out\n");
- rc = 1;
- break;
- }
- }
- if (*addr != INTEL_OK) {
- printf ("Write failed at %08X, CSR=%08X\n", (uint)addr, (uint)*addr);
- rc = 1;
- }
-
- *addr = INTEL_RESET; /* Reset to read array mode */
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- *(vu_long *)wp = INTEL_RESET; /* Reset to read array mode */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- rc = write_word(info, wp, data);
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Set/Clear sector's lock bit, returns:
- * 0 - OK
- * 1 - Error (timeout, voltage problems, etc.)
- */
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
- ulong start;
- int i;
- int rc = 0;
- vu_long *addr = (vu_long *)(info->start[sector]);
- int flag = disable_interrupts();
-
- *addr = INTEL_CLEAR; /* Clear status register */
- if (prot) { /* Set sector lock bit */
- *addr = INTEL_LOCKBIT; /* Sector lock bit */
- *addr = INTEL_PROTECT; /* set */
- }
- else { /* Clear sector lock bit */
- *addr = INTEL_LOCKBIT; /* All sectors lock bits */
- *addr = INTEL_CONFIRM; /* clear */
- }
-
- start = get_timer(0);
- while ((*addr & INTEL_FINISHED) != INTEL_FINISHED) {
- if (get_timer(start) > CFG_FLASH_UNLOCK_TOUT) {
- printf("Flash lock bit operation timed out\n");
- rc = 1;
- break;
- }
- }
-
- if (*addr != INTEL_OK) {
- printf("Flash lock bit operation failed at %08X, CSR=%08X\n",
- (uint)addr, (uint)*addr);
- rc = 1;
- }
-
- if (!rc)
- info->protect[sector] = prot;
-
- /*
- * Clear lock bit command clears all sectors lock bits, so
- * we have to restore lock bits of protected sectors.
- */
- if (!prot)
- for (i = 0; i < info->sector_count; i++)
- if (info->protect[i]) {
- addr = (vu_long *)(info->start[i]);
- *addr = INTEL_LOCKBIT; /* Sector lock bit */
- *addr = INTEL_PROTECT; /* set */
- udelay(CFG_FLASH_LOCK_TOUT * 1000);
- }
-
- if (flag)
- enable_interrupts();
-
- *addr = INTEL_RESET; /* Reset to read array mode */
-
- return rc;
-}
diff --git a/board/mpc8260ads/mpc8260ads.c b/board/mpc8260ads/mpc8260ads.c
deleted file mode 100644
index 93550e2ad0..0000000000
--- a/board/mpc8260ads/mpc8260ads.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Modified during 2001 by
- * Advanced Communications Technologies (Australia) Pty. Ltd.
- * Howard Walker, Tuong Vu-Dinh
- *
- * (C) Copyright 2001, Stuart Hughes, Lineo Inc, stuarth@lineo.com
- * Added support for the 16M dram simm on the 8260ads boards
- *
- * (C) Copyright 2003-2004 Arabella Software Ltd.
- * Yuli Barcohen <yuli@arabellasw.com>
- * Added support for SDRAM DIMMs SPD EEPROM, MII, Ethernet PHY init.
- *
- * Copyright (c) 2005 MontaVista Software, Inc.
- * Vitaly Bordug <vbordug@ru.mvista.com>
- * Added support for PCI.
- *
- * 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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <asm/m8260_pci.h>
-#include <i2c.h>
-#include <spd.h>
-#include <miiphy.h>
-#ifdef CONFIG_PCI
-#include <pci.h>
-#endif
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-#define CFG_FCC1 (CONFIG_ETHER_INDEX == 1)
-#define CFG_FCC2 (CONFIG_ETHER_INDEX == 2)
-#define CFG_FCC3 (CONFIG_ETHER_INDEX == 3)
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { CFG_FCC1, 1, 1, 0, 0, 0 }, /* FCC1 MII COL */
- /* PA30 */ { CFG_FCC1, 1, 1, 0, 0, 0 }, /* FCC1 MII CRS */
- /* PA29 */ { CFG_FCC1, 1, 1, 1, 0, 0 }, /* FCC1 MII TX_ER */
- /* PA28 */ { CFG_FCC1, 1, 1, 1, 0, 0 }, /* FCC1 MII TX_EN */
- /* PA27 */ { CFG_FCC1, 1, 1, 0, 0, 0 }, /* FCC1 MII RX_DV */
- /* PA26 */ { CFG_FCC1, 1, 1, 0, 0, 0 }, /* FCC1 MII RX_ER */
- /* PA25 */ { 0, 0, 0, 0, 0, 0 }, /* PA25 */
- /* PA24 */ { 0, 0, 0, 0, 0, 0 }, /* PA24 */
- /* PA23 */ { 0, 0, 0, 0, 0, 0 }, /* PA23 */
- /* PA22 */ { 0, 0, 0, 0, 0, 0 }, /* PA22 */
- /* PA21 */ { CFG_FCC1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[3] */
- /* PA20 */ { CFG_FCC1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[2] */
- /* PA19 */ { CFG_FCC1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[1] */
- /* PA18 */ { CFG_FCC1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[0] */
- /* PA17 */ { CFG_FCC1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[0] */
- /* PA16 */ { CFG_FCC1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[1] */
- /* PA15 */ { CFG_FCC1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[2] */
- /* PA14 */ { CFG_FCC1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[3] */
- /* PA13 */ { 0, 0, 0, 0, 0, 0 }, /* PA13 */
- /* PA12 */ { 0, 0, 0, 0, 0, 0 }, /* PA12 */
- /* PA11 */ { 0, 0, 0, 0, 0, 0 }, /* PA11 */
- /* PA10 */ { 0, 0, 0, 0, 0, 0 }, /* PA10 */
- /* PA9 */ { 0, 0, 0, 0, 0, 0 }, /* PA9 */
- /* PA8 */ { 0, 0, 0, 0, 0, 0 }, /* PA8 */
- /* PA7 */ { 0, 0, 0, 1, 0, 0 }, /* PA7 */
- /* PA6 */ { 0, 0, 0, 0, 0, 0 }, /* PA6 */
- /* PA5 */ { 0, 0, 0, 1, 0, 0 }, /* PA5 */
- /* PA4 */ { 0, 0, 0, 1, 0, 0 }, /* PA4 */
- /* PA3 */ { 0, 0, 0, 1, 0, 0 }, /* PA3 */
- /* PA2 */ { 0, 0, 0, 1, 0, 0 }, /* PA2 */
- /* PA1 */ { 0, 0, 0, 0, 0, 0 }, /* PA1 */
- /* PA0 */ { 0, 0, 0, 1, 0, 0 } /* PA0 */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { CFG_FCC2, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { CFG_FCC2, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { CFG_FCC2, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { CFG_FCC2, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { CFG_FCC2, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { CFG_FCC2, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { CFG_FCC3, 1, 0, 0, 0, 0 }, /* FCC3:RX_DIV */
- /* PB16 */ { CFG_FCC3, 1, 0, 0, 0, 0 }, /* FCC3:RX_ERR */
- /* PB15 */ { CFG_FCC3, 1, 0, 1, 0, 0 }, /* FCC3:TX_ERR */
- /* PB14 */ { CFG_FCC3, 1, 0, 1, 0, 0 }, /* FCC3:TX_EN */
- /* PB13 */ { CFG_FCC3, 1, 0, 0, 0, 0 }, /* FCC3:COL */
- /* PB12 */ { CFG_FCC3, 1, 0, 0, 0, 0 }, /* FCC3:CRS */
- /* PB11 */ { CFG_FCC3, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB10 */ { CFG_FCC3, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB9 */ { CFG_FCC3, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB8 */ { CFG_FCC3, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB7 */ { CFG_FCC3, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB6 */ { CFG_FCC3, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB5 */ { CFG_FCC3, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB4 */ { CFG_FCC3, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 0, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 0, 0, 0 }, /* PC30 */
- /* PC29 */ { 0, 0, 0, 0, 0, 0 }, /* PC29 */
- /* PC28 */ { 0, 0, 0, 0, 0, 0 }, /* PC28 */
- /* PC27 */ { 0, 0, 0, 0, 0, 0 }, /* PC27 */
- /* PC26 */ { 0, 0, 0, 0, 0, 0 }, /* PC26 */
- /* PC25 */ { 0, 0, 0, 0, 0, 0 }, /* PC25 */
- /* PC24 */ { 0, 0, 0, 0, 0, 0 }, /* PC24 */
- /* PC23 */ { 0, 0, 0, 0, 0, 0 }, /* PC23 */
- /* PC22 */ { CFG_FCC1, 1, 0, 0, 0, 0 }, /* FCC1 MII Tx Clock (CLK10) */
- /* PC21 */ { CFG_FCC1, 1, 0, 0, 0, 0 }, /* FCC1 MII Rx Clock (CLK11) */
- /* PC20 */ { 0, 0, 0, 0, 0, 0 }, /* PC20 */
-#if CONFIG_ADSTYPE == CFG_8272ADS
- /* PC19 */ { 1, 0, 0, 1, 0, 0 }, /* FETHMDC */
- /* PC18 */ { 1, 0, 0, 0, 0, 0 }, /* FETHMDIO */
- /* PC17 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII Rx Clock (CLK15) */
- /* PC16 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII Tx Clock (CLK16) */
-#else
- /* PC19 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII Rx Clock (CLK13) */
- /* PC18 */ { CFG_FCC2, 1, 0, 0, 0, 0 }, /* FCC2 MII Tx Clock (CLK14) */
- /* PC17 */ { 0, 0, 0, 0, 0, 0 }, /* PC17 */
- /* PC16 */ { 0, 0, 0, 0, 0, 0 }, /* PC16 */
-#endif /* CONFIG_ADSTYPE == CFG_8272ADS */
- /* PC15 */ { 0, 0, 0, 0, 0, 0 }, /* PC15 */
- /* PC14 */ { 0, 0, 0, 0, 0, 0 }, /* PC14 */
- /* PC13 */ { 0, 0, 0, 0, 0, 0 }, /* PC13 */
- /* PC12 */ { 0, 0, 0, 0, 0, 0 }, /* PC12 */
- /* PC11 */ { 0, 0, 0, 0, 0, 0 }, /* PC11 */
-#if CONFIG_ADSTYPE == CFG_8272ADS
- /* PC10 */ { 0, 0, 0, 0, 0, 0 }, /* PC10 */
- /* PC9 */ { 0, 0, 0, 0, 0, 0 }, /* PC9 */
-#else
- /* PC10 */ { 1, 0, 0, 1, 0, 0 }, /* FETHMDC */
- /* PC9 */ { 1, 0, 0, 0, 0, 0 }, /* FETHMDIO */
-#endif /* CONFIG_ADSTYPE == CFG_8272ADS */
- /* PC8 */ { 0, 0, 0, 0, 0, 0 }, /* PC8 */
- /* PC7 */ { 0, 0, 0, 0, 0, 0 }, /* PC7 */
- /* PC6 */ { 0, 0, 0, 0, 0, 0 }, /* PC6 */
- /* PC5 */ { 0, 0, 0, 0, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 0, 0, 0 }, /* PC4 */
- /* PC3 */ { 0, 0, 0, 0, 0, 0 }, /* PC3 */
- /* PC2 */ { 0, 0, 0, 0, 0, 0 }, /* PC2 */
- /* PC1 */ { 0, 0, 0, 0, 0, 0 }, /* PC1 */
- /* PC0 */ { 0, 0, 0, 0, 0, 0 }, /* PC0 */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 UART RxD */
- /* PD30 */ { 1, 1, 1, 1, 0, 0 }, /* SCC1 UART TxD */
- /* PD29 */ { 0, 0, 0, 0, 0, 0 }, /* PD29 */
- /* PD28 */ { 0, 1, 0, 0, 0, 0 }, /* PD28 */
- /* PD27 */ { 0, 1, 1, 1, 0, 0 }, /* PD27 */
- /* PD26 */ { 0, 0, 0, 1, 0, 0 }, /* PD26 */
- /* PD25 */ { 0, 0, 0, 1, 0, 0 }, /* PD25 */
- /* PD24 */ { 0, 0, 0, 1, 0, 0 }, /* PD24 */
- /* PD23 */ { 0, 0, 0, 1, 0, 0 }, /* PD23 */
- /* PD22 */ { 0, 0, 0, 1, 0, 0 }, /* PD22 */
- /* PD21 */ { 0, 0, 0, 1, 0, 0 }, /* PD21 */
- /* PD20 */ { 0, 0, 0, 1, 0, 0 }, /* PD20 */
- /* PD19 */ { 0, 0, 0, 1, 0, 0 }, /* PD19 */
- /* PD18 */ { 0, 0, 0, 1, 0, 0 }, /* PD18 */
- /* PD17 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXPRTY */
- /* PD16 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXPRTY */
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 0, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PD8 */ { 0, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PD7 */ { 0, 0, 0, 1, 0, 1 }, /* PD7 */
- /* PD6 */ { 0, 0, 0, 1, 0, 1 }, /* PD6 */
- /* PD5 */ { 0, 0, 0, 1, 0, 1 }, /* PD5 */
- /* PD4 */ { 0, 0, 0, 1, 0, 1 }, /* PD4 */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-void reset_phy (void)
-{
- vu_long *bcsr = (vu_long *)CFG_BCSR;
-
- /* Reset the PHY */
-#if CFG_PHY_ADDR == 0
- bcsr[1] &= ~(FETHIEN1 | FETH1_RST);
- udelay(2);
- bcsr[1] |= FETH1_RST;
-#else
- bcsr[3] &= ~(FETHIEN2 | FETH2_RST);
- udelay(2);
- bcsr[3] |= FETH2_RST;
-#endif /* CFG_PHY_ADDR == 0 */
- udelay(1000);
-#ifdef CONFIG_MII
-#if CONFIG_ADSTYPE >= CFG_PQ2FADS
- /*
- * Do not bypass Rx/Tx (de)scrambler (fix configuration error)
- * Enable autonegotiation.
- */
- bb_miiphy_write(NULL, CFG_PHY_ADDR, 16, 0x610);
- bb_miiphy_write(NULL, CFG_PHY_ADDR, PHY_BMCR,
- PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
-#else
- /*
- * Ethernet PHY is configured (by means of configuration pins)
- * to work at 10Mb/s only. We reconfigure it using MII
- * to advertise all capabilities, including 100Mb/s, and
- * restart autonegotiation.
- */
-
- /* Advertise all capabilities */
- bb_miiphy_write(NULL, CFG_PHY_ADDR, PHY_ANAR, 0x01E1);
-
- /* Do not bypass Rx/Tx (de)scrambler */
- bb_miiphy_write(NULL, CFG_PHY_ADDR, PHY_DCR, 0x0000);
-
- bb_miiphy_write(NULL, CFG_PHY_ADDR, PHY_BMCR,
- PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
-#endif /* CONFIG_ADSTYPE == CFG_PQ2FADS */
-#endif /* CONFIG_MII */
-}
-
-#ifdef CONFIG_PCI
-typedef struct pci_ic_s {
- unsigned long pci_int_stat;
- unsigned long pci_int_mask;
-}pci_ic_t;
-#endif
-
-int board_early_init_f (void)
-{
- vu_long *bcsr = (vu_long *)CFG_BCSR;
-
-#ifdef CONFIG_PCI
- volatile pci_ic_t* pci_ic = (pci_ic_t *) CFG_PCI_INT;
-
- /* mask alll the PCI interrupts */
- pci_ic->pci_int_mask |= 0xfff00000;
-#endif
-#if (CONFIG_CONS_INDEX == 1) || (CONFIG_KGDB_INDEX == 1)
- bcsr[1] &= ~RS232EN_1;
-#endif
-#if (CONFIG_CONS_INDEX > 1) || (CONFIG_KGDB_INDEX > 1)
- bcsr[1] &= ~RS232EN_2;
-#endif
-
-#if CONFIG_ADSTYPE != CFG_8260ADS /* PCI mode can be selected */
-#if CONFIG_ADSTYPE == CFG_PQ2FADS
- if ((bcsr[3] & BCSR_PCI_MODE) == 0) /* PCI mode selected by JP9 */
-#endif /* CONFIG_ADSTYPE == CFG_PQ2FADS */
- {
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
-
- immap->im_clkrst.car_sccr |= M826X_SCCR_PCI_MODE_EN;
- immap->im_siu_conf.sc_siumcr =
- (immap->im_siu_conf.sc_siumcr & ~SIUMCR_LBPC11)
- | SIUMCR_LBPC01;
- }
-#endif /* CONFIG_ADSTYPE != CFG_8260ADS */
-
- return 0;
-}
-
-#define ns2clk(ns) (ns / (1000000000 / CONFIG_8260_CLKIN) + 1)
-
-long int initdram (int board_type)
-{
-#if CONFIG_ADSTYPE == CFG_PQ2FADS
- long int msize = 32;
-#elif CONFIG_ADSTYPE == CFG_8272ADS
- long int msize = 64;
-#else
- long int msize = 16;
-#endif
-
-#ifndef CFG_RAMBOOT
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
- volatile uchar *ramaddr, c = 0xff;
- uint or;
- uint psdmr;
- uint psrt;
-
- int i;
-
- immap->im_siu_conf.sc_ppc_acr = 0x00000002;
- immap->im_siu_conf.sc_ppc_alrh = 0x01267893;
- immap->im_siu_conf.sc_tescr1 = 0x00004000;
-
- memctl->memc_mptpr = CFG_MPTPR;
-#ifdef CFG_LSDRAM_BASE
- /*
- Initialise local bus SDRAM only if the pins
- are configured as local bus pins and not as PCI.
- The configuration is determined by the HRCW.
- */
- if ((immap->im_siu_conf.sc_siumcr & SIUMCR_LBPC11) == SIUMCR_LBPC00) {
- memctl->memc_lsrt = CFG_LSRT;
-#if CONFIG_ADSTYPE == CFG_PQ2FADS /* CS3 */
- memctl->memc_or3 = 0xFF803280;
- memctl->memc_br3 = CFG_LSDRAM_BASE | 0x00001861;
-#else /* CS4 */
- memctl->memc_or4 = 0xFFC01480;
- memctl->memc_br4 = CFG_LSDRAM_BASE | 0x00001861;
-#endif /* CONFIG_ADSTYPE == CFG_PQ2FADS */
- memctl->memc_lsdmr = CFG_LSDMR | 0x28000000;
- ramaddr = (uchar *) CFG_LSDRAM_BASE;
- *ramaddr = c;
- memctl->memc_lsdmr = CFG_LSDMR | 0x08000000;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
- memctl->memc_lsdmr = CFG_LSDMR | 0x18000000;
- *ramaddr = c;
- memctl->memc_lsdmr = CFG_LSDMR | 0x40000000;
- }
-#endif /* CFG_LSDRAM_BASE */
-
- /* Init 60x bus SDRAM */
-#ifdef CONFIG_SPD_EEPROM
- {
- spd_eeprom_t spd;
- uint pbi, bsel, rowst, lsb, tmp;
-
- i2c_read (CONFIG_SPD_ADDR, 0, 1, (uchar *) & spd, sizeof (spd));
-
- /* Bank-based interleaving is not supported for physical bank
- sizes greater than 128MB which is encoded as 0x20 in SPD
- */
- pbi = (spd.row_dens > 32) ? 1 : CONFIG_SDRAM_PBI;
- msize = spd.nrows * (4 * spd.row_dens); /* Mixed size not supported */
- or = ~(msize - 1) << 20; /* SDAM */
- switch (spd.nbanks) { /* BPD */
- case 2:
- bsel = 1;
- break;
- case 4:
- bsel = 2;
- or |= 0x00002000;
- break;
- case 8:
- bsel = 3;
- or |= 0x00004000;
- break;
- }
- lsb = 3; /* For 64-bit port, lsb is 3 bits */
-
- if (pbi) { /* Bus partition depends on interleaving */
- rowst = 32 - (spd.nrow_addr + spd.ncol_addr + bsel + lsb);
- or |= (rowst << 9); /* ROWST */
- } else {
- rowst = 32 - (spd.nrow_addr + spd.ncol_addr + lsb);
- or |= ((rowst * 2 - 12) << 9); /* ROWST */
- }
- or |= ((spd.nrow_addr - 9) << 6); /* NUMR */
-
- psdmr = (pbi << 31); /* PBI */
- /* Bus multiplexing parameters */
- tmp = 32 - (lsb + spd.nrow_addr); /* Tables 10-19 and 10-20 */
- psdmr |= ((tmp - (rowst - 5) - 13) << 24); /* SDAM */
- psdmr |= ((tmp - 3 - 12) << 21); /* BSMA */
-
- tmp = (31 - lsb - 10) - tmp;
- /* Pin connected to SDA10 is (31 - lsb - 10).
- rowst is multiplexed over (32 - (lsb + spd.nrow_addr)),
- so (rowst + tmp) alternates with AP.
- */
- if (pbi) /* Table 10-7 */
- psdmr |= ((10 - (rowst + tmp)) << 18); /* SDA10 */
- else
- psdmr |= ((12 - (rowst + tmp)) << 18); /* SDA10 */
-
- /* SDRAM device-specific parameters */
- tmp = ns2clk (70); /* Refresh recovery is not in SPD, so assume 70ns */
- switch (tmp) { /* RFRC */
- case 1:
- case 2:
- psdmr |= (1 << 15);
- break;
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- psdmr |= ((tmp - 2) << 15);
- break;
- default:
- psdmr |= (7 << 15);
- }
- psdmr |= (ns2clk (spd.trp) % 8 << 12); /* PRETOACT */
- psdmr |= (ns2clk (spd.trcd) % 8 << 9); /* ACTTORW */
- /* BL=0 because for 64-bit SDRAM burst length must be 4 */
- /* LDOTOPRE ??? */
- for (i = 0, tmp = spd.write_lat; (i < 4) && ((tmp & 1) == 0); i++)
- tmp >>= 1;
- switch (i) { /* WRC */
- case 0:
- case 1:
- psdmr |= (1 << 4);
- break;
- case 2:
- case 3:
- psdmr |= (i << 4);
- break;
- }
- /* EAMUX=0 - no external address multiplexing */
- /* BUFCMD=0 - no external buffers */
- for (i = 1, tmp = spd.cas_lat; (i < 3) && ((tmp & 1) == 0); i++)
- tmp >>= 1;
- psdmr |= i; /* CL */
-
- switch (spd.refresh & 0x7F) {
- case 1:
- tmp = 3900;
- break;
- case 2:
- tmp = 7800;
- break;
- case 3:
- tmp = 31300;
- break;
- case 4:
- tmp = 62500;
- break;
- case 5:
- tmp = 125000;
- break;
- default:
- tmp = 15625;
- }
- psrt = tmp / (1000000000 / CONFIG_8260_CLKIN *
- ((memctl->memc_mptpr >> 8) + 1)) - 1;
-#ifdef SPD_DEBUG
- printf ("\nDIMM type: %-18.18s\n", spd.mpart);
- printf ("SPD size: %d\n", spd.info_size);
- printf ("EEPROM size: %d\n", 1 << spd.chip_size);
- printf ("Memory type: %d\n", spd.mem_type);
- printf ("Row addr: %d\n", spd.nrow_addr);
- printf ("Column addr: %d\n", spd.ncol_addr);
- printf ("# of rows: %d\n", spd.nrows);
- printf ("Row density: %d\n", spd.row_dens);
- printf ("# of banks: %d\n", spd.nbanks);
- printf ("Data width: %d\n",
- 256 * spd.dataw_msb + spd.dataw_lsb);
- printf ("Chip width: %d\n", spd.primw);
- printf ("Refresh rate: %02X\n", spd.refresh);
- printf ("CAS latencies: %02X\n", spd.cas_lat);
- printf ("Write latencies: %02X\n", spd.write_lat);
- printf ("tRP: %d\n", spd.trp);
- printf ("tRCD: %d\n", spd.trcd);
-
- printf ("OR=%X, PSDMR=%08X, PSRT=%0X\n", or, psdmr, psrt);
-#endif /* SPD_DEBUG */
- }
-#else /* !CONFIG_SPD_EEPROM */
- or = CFG_OR2;
- psdmr = CFG_PSDMR;
- psrt = CFG_PSRT;
-#endif /* CONFIG_SPD_EEPROM */
- memctl->memc_psrt = psrt;
- memctl->memc_or2 = or;
- memctl->memc_br2 = CFG_SDRAM_BASE | 0x00000041;
- ramaddr = (uchar *) CFG_SDRAM_BASE;
- memctl->memc_psdmr = psdmr | 0x28000000; /* Precharge all banks */
- *ramaddr = c;
- memctl->memc_psdmr = psdmr | 0x08000000; /* CBR refresh */
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | 0x18000000; /* Mode Register write */
- *ramaddr = c;
- memctl->memc_psdmr = psdmr | 0x40000000; /* Refresh enable */
- *ramaddr = c;
-#endif /* CFG_RAMBOOT */
-
- /* return total 60x bus SDRAM size */
- return (msize * 1024 * 1024);
-}
-
-int checkboard (void)
-{
-#if CONFIG_ADSTYPE == CFG_8260ADS
- puts ("Board: Motorola MPC8260ADS\n");
-#elif CONFIG_ADSTYPE == CFG_8266ADS
- puts ("Board: Motorola MPC8266ADS\n");
-#elif CONFIG_ADSTYPE == CFG_PQ2FADS
- puts ("Board: Motorola PQ2FADS-ZU\n");
-#elif CONFIG_ADSTYPE == CFG_8272ADS
- puts ("Board: Motorola MPC8272ADS\n");
-#else
- puts ("Board: unknown\n");
-#endif
- return 0;
-}
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
- pci_mpc8250_init(&hose);
-}
-#endif
diff --git a/board/mpc8260ads/u-boot.lds b/board/mpc8260ads/u-boot.lds
deleted file mode 100644
index bf8048d27e..0000000000
--- a/board/mpc8260ads/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Modified by Yuli Barcohen <yuli@arabellasw.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
- */
-
-OUTPUT_ARCH(powerpc)
-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/mpc8260/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
-ENTRY(_start)
diff --git a/board/mpc8266ads/Makefile b/board/mpc8266ads/Makefile
deleted file mode 100644
index 291a1c9566..0000000000
--- a/board/mpc8266ads/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/mpc8266ads/config.mk b/board/mpc8266ads/config.mk
deleted file mode 100644
index ecc2a7db61..0000000000
--- a/board/mpc8266ads/config.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# (C) Copyright 2001
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Modified by, Stuart Hughes, Lineo Inc, stuarth@lineo.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
-#
-
-#
-# mpc8260ads board
-#
-
-TEXT_BASE = 0xfe000000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/mpc8266ads/flash.c b/board/mpc8266ads/flash.c
deleted file mode 100644
index 9512c72a0b..0000000000
--- a/board/mpc8266ads/flash.c
+++ /dev/null
@@ -1,509 +0,0 @@
-/*
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001, Stuart Hughes, Lineo Inc, stuarth@lineo.com
- * Add support the Sharp chips on the mpc8260ads.
- * I started with board/ip860/flash.c and made changes I found in
- * the MTD project by David Schleef.
- *
- * 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 <common.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static int clear_block_lock_bit(vu_long * addr);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-#ifndef CONFIG_MPC8266ADS
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- volatile ip860_bcsr_t *bcsr = (ip860_bcsr_t *)BCSR_BASE;
-#endif
- unsigned long size;
- int i;
-
- /* Init: enable write,
- * or we cannot even write flash commands
- */
-#ifndef CONFIG_MPC8266ADS
- bcsr->bd_ctrl |= BD_CTRL_FLWE;
-#endif
-
-
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
-
- /* set the default sector offset */
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size = flash_get_size((vu_long *)FLASH_BASE, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size<<20);
- }
-
-#ifndef CONFIG_MPC8266ADS
- /* Remap FLASH according to real size */
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (-size & 0xFFFF8000);
- memctl->memc_br1 = (CFG_FLASH_BASE & BR_BA_MSK) |
- (memctl->memc_br1 & ~(BR_BA_MSK));
-#endif
- /* Re-do sizing to get full correct info */
- size = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL: printf ("Intel "); break;
- case FLASH_MAN_SHARP: printf ("Sharp "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F016SV: printf ("28F016SV (16 Mbit, 32 x 64k)\n");
- break;
- case FLASH_28F160S3: printf ("28F160S3 (16 Mbit, 32 x 512K)\n");
- break;
- case FLASH_28F320S3: printf ("28F320S3 (32 Mbit, 64 x 512K)\n");
- break;
- case FLASH_LH28F016SCT: printf ("28F016SC (16 Mbit, 32 x 64K)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
- ulong sector_offset;
-
- /* Write "Intelligent Identifier" command: read Manufacturer ID */
- *addr = 0x90909090;
-
- value = addr[0] & 0x00FF00FF;
- switch (value) {
- case MT_MANUFACT: /* SHARP, MT or => Intel */
- case INTEL_ALT_MANU:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- printf("unknown manufacturer: %x\n", (unsigned int)value);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
- case (INTEL_ID_28F016S):
- info->flash_id += FLASH_28F016SV;
- info->sector_count = 32;
- info->size = 0x00400000;
- sector_offset = 0x20000;
- break; /* => 2x2 MB */
-
- case (INTEL_ID_28F160S3):
- info->flash_id += FLASH_28F160S3;
- info->sector_count = 32;
- info->size = 0x00400000;
- sector_offset = 0x20000;
- break; /* => 2x2 MB */
-
- case (INTEL_ID_28F320S3):
- info->flash_id += FLASH_28F320S3;
- info->sector_count = 64;
- info->size = 0x00800000;
- sector_offset = 0x20000;
- break; /* => 2x4 MB */
-
- case SHARP_ID_28F016SCL:
- case SHARP_ID_28F016SCZ:
- info->flash_id = FLASH_MAN_SHARP | FLASH_LH28F016SCT;
- info->sector_count = 32;
- info->size = 0x00800000;
- sector_offset = 0x40000;
- break; /* => 4x2 MB */
-
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- base += sector_offset;
- /* don't know how to check sector protection */
- info->protect[i] = 0;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (vu_long *)info->start[0];
-
- *addr = 0xFFFFFF; /* reset bank to read array mode */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ( ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL)
- && ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_SHARP) ) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /* Make Sure Block Lock Bit is not set. */
- if(clear_block_lock_bit((vu_long *)(info->start[s_first]))){
- return 1;
- }
-
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *)(info->start[sect]);
-
- last = start = get_timer (0);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Reset Array */
- *addr = 0xffffffff;
- /* Clear Status Register */
- *addr = 0x50505050;
- /* Single Block Erase Command */
- *addr = 0x20202020;
- /* Confirm */
- *addr = 0xD0D0D0D0;
-
- if((info->flash_id & FLASH_TYPEMASK) != FLASH_LH28F016SCT) {
- /* Resume Command, as per errata update */
- *addr = 0xD0D0D0D0;
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
- while ((*addr & 0x80808080) != 0x80808080) {
- if(*addr & 0x20202020){
- printf("Error in Block Erase - Lock Bit may be set!\n");
- printf("Status Register = 0x%X\n", (uint)*addr);
- *addr = 0xFFFFFFFF; /* reset bank */
- return 1;
- }
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = 0xFFFFFFFF; /* reset bank */
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- /* reset to read mode */
- *addr = 0xFFFFFFFF;
- }
- }
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)dest;
- ulong start, csr;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Write Command */
- *addr = 0x10101010;
-
- /* Write Data */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- flag = 0;
- while (((csr = *addr) & 0x80808080) != 0x80808080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- flag = 1;
- break;
- }
- }
- if (csr & 0x40404040) {
- printf ("CSR indicates write error (%08lx) at %08lx\n", csr, (ulong)addr);
- flag = 1;
- }
-
- /* Clear Status Registers Command */
- *addr = 0x50505050;
- /* Reset to read array mode */
- *addr = 0xFFFFFFFF;
-
- return (flag);
-}
-
-/*-----------------------------------------------------------------------
- * Clear Block Lock Bit, returns:
- * 0 - OK
- * 1 - Timeout
- */
-
-static int clear_block_lock_bit(vu_long * addr)
-{
- ulong start, now;
-
- /* Reset Array */
- *addr = 0xffffffff;
- /* Clear Status Register */
- *addr = 0x50505050;
-
- *addr = 0x60606060;
- *addr = 0xd0d0d0d0;
-
- start = get_timer (0);
- while(*addr != 0x80808080){
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout on clearing Block Lock Bit\n");
- *addr = 0xFFFFFFFF; /* reset bank */
- return 1;
- }
- }
- return 0;
-}
diff --git a/board/mpc8266ads/mpc8266ads.c b/board/mpc8266ads/mpc8266ads.c
deleted file mode 100644
index 8f7273c41d..0000000000
--- a/board/mpc8266ads/mpc8266ads.c
+++ /dev/null
@@ -1,586 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Modified during 2001 by
- * Advanced Communications Technologies (Australia) Pty. Ltd.
- * Howard Walker, Tuong Vu-Dinh
- *
- * (C) Copyright 2001, Stuart Hughes, Lineo Inc, stuarth@lineo.com
- * Added support for the 16M dram simm on the 8260ads boards
- *
- * 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 <common.h>
-#include <ioports.h>
-#include <i2c.h>
-#include <mpc8260.h>
-#include <pci.h>
-
-/*
- * PBI Page Based Interleaving
- * PSDMR_PBI page based interleaving
- * 0 bank based interleaving
- * External Address Multiplexing (EAMUX) adds a clock to address cycles
- * (this can help with marginal board layouts)
- * PSDMR_EAMUX adds a clock
- * 0 no extra clock
- * Buffer Command (BUFCMD) adds a clock to command cycles.
- * PSDMR_BUFCMD adds a clock
- * 0 no extra clock
- */
-#define CONFIG_PBI 0
-#define PESSIMISTIC_SDRAM 0
-#define EAMUX 0 /* EST requires EAMUX */
-#define BUFCMD 0
-
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 TxENB */
- /* PA30 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 TxClav */
- /* PA29 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 TxSOC */
- /* PA28 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 RxENB */
- /* PA27 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 RxSOC */
- /* PA26 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 RxClav */
- /* PA25 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[0] */
- /* PA24 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[1] */
- /* PA23 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[2] */
- /* PA22 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[3] */
- /* PA21 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[4] */
- /* PA20 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[5] */
- /* PA19 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[6] */
- /* PA18 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[7] */
- /* PA17 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[7] */
- /* PA16 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[6] */
- /* PA15 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[5] */
- /* PA14 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[4] */
- /* PA13 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[3] */
- /* PA12 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[2] */
- /* PA11 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[1] */
- /* PA10 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[0] */
- /* PA9 */ { 0, 1, 1, 1, 0, 0 }, /* FCC1 L1TXD */
- /* PA8 */ { 0, 1, 1, 0, 0, 0 }, /* FCC1 L1RXD */
- /* PA7 */ { 0, 0, 0, 1, 0, 0 }, /* PA7 */
- /* PA6 */ { 1, 1, 1, 1, 0, 0 }, /* TDM A1 L1RSYNC */
- /* PA5 */ { 0, 0, 0, 1, 0, 0 }, /* PA5 */
- /* PA4 */ { 0, 0, 0, 1, 0, 0 }, /* PA4 */
- /* PA3 */ { 0, 0, 0, 1, 0, 0 }, /* PA3 */
- /* PA2 */ { 0, 0, 0, 1, 0, 0 }, /* PA2 */
- /* PA1 */ { 1, 0, 0, 0, 0, 0 }, /* FREERUN */
- /* PA0 */ { 0, 0, 0, 1, 0, 0 } /* PA0 */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RX_DIV */
- /* PB16 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RX_ERR */
- /* PB15 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TX_ERR */
- /* PB14 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TX_EN */
- /* PB13 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:COL */
- /* PB12 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:CRS */
- /* PB11 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB10 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB9 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB8 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB7 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB6 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB5 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB4 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 1, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 1, 0, 0 }, /* PC30 */
- /* PC29 */ { 0, 1, 1, 0, 0, 0 }, /* SCC1 EN *CLSN */
- /* PC28 */ { 0, 0, 0, 1, 0, 0 }, /* PC28 */
- /* PC27 */ { 0, 0, 0, 1, 0, 0 }, /* UART Clock in */
- /* PC26 */ { 0, 0, 0, 1, 0, 0 }, /* PC26 */
- /* PC25 */ { 0, 0, 0, 1, 0, 0 }, /* PC25 */
- /* PC24 */ { 0, 0, 0, 1, 0, 0 }, /* PC24 */
- /* PC23 */ { 0, 1, 0, 1, 0, 0 }, /* ATMTFCLK */
- /* PC22 */ { 0, 1, 0, 0, 0, 0 }, /* ATMRFCLK */
- /* PC21 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN RXCLK */
- /* PC20 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN TXCLK */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_CLK CLK13 */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC Tx Clock (CLK14) */
- /* PC17 */ { 0, 0, 0, 1, 0, 0 }, /* PC17 */
- /* PC16 */ { 0, 1, 0, 0, 0, 0 }, /* FCC Tx Clock (CLK16) */
- /* PC15 */ { 0, 0, 0, 1, 0, 0 }, /* PC15 */
- /* PC14 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN *CD */
- /* PC13 */ { 0, 0, 0, 1, 0, 0 }, /* PC13 */
- /* PC12 */ { 0, 1, 0, 1, 0, 0 }, /* PC12 */
- /* PC11 */ { 0, 0, 0, 1, 0, 0 }, /* LXT971 transmit control */
- /* PC10 */ { 1, 0, 0, 1, 0, 0 }, /* LXT970 FETHMDC */
- /* PC9 */ { 1, 0, 0, 0, 0, 0 }, /* LXT970 FETHMDIO */
- /* PC8 */ { 0, 0, 0, 1, 0, 0 }, /* PC8 */
- /* PC7 */ { 0, 0, 0, 1, 0, 0 }, /* PC7 */
- /* PC6 */ { 0, 0, 0, 1, 0, 0 }, /* PC6 */
- /* PC5 */ { 0, 0, 0, 1, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 1, 0, 0 }, /* PC4 */
- /* PC3 */ { 0, 0, 0, 1, 0, 0 }, /* PC3 */
- /* PC2 */ { 0, 0, 0, 1, 0, 1 }, /* ENET FDE */
- /* PC1 */ { 0, 0, 0, 1, 0, 0 }, /* ENET DSQE */
- /* PC0 */ { 0, 0, 0, 1, 0, 0 }, /* ENET LBK */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN RxD */
- /* PD30 */ { 1, 1, 1, 1, 0, 0 }, /* SCC1 EN TxD */
- /* PD29 */ { 0, 1, 0, 1, 0, 0 }, /* SCC1 EN TENA */
- /* PD28 */ { 0, 1, 0, 0, 0, 0 }, /* PD28 */
- /* PD27 */ { 0, 1, 1, 1, 0, 0 }, /* PD27 */
- /* PD26 */ { 0, 0, 0, 1, 0, 0 }, /* PD26 */
- /* PD25 */ { 0, 0, 0, 1, 0, 0 }, /* PD25 */
- /* PD24 */ { 0, 0, 0, 1, 0, 0 }, /* PD24 */
- /* PD23 */ { 0, 0, 0, 1, 0, 0 }, /* PD23 */
- /* PD22 */ { 0, 0, 0, 1, 0, 0 }, /* PD22 */
- /* PD21 */ { 0, 0, 0, 1, 0, 0 }, /* PD21 */
- /* PD20 */ { 0, 0, 0, 1, 0, 0 }, /* PD20 */
- /* PD19 */ { 0, 0, 0, 1, 0, 0 }, /* PD19 */
- /* PD18 */ { 0, 0, 0, 1, 0, 0 }, /* PD18 */
- /* PD17 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXPRTY */
- /* PD16 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXPRTY */
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PD8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PD7 */ { 0, 0, 0, 1, 0, 1 }, /* PD7 */
- /* PD6 */ { 0, 0, 0, 1, 0, 1 }, /* PD6 */
- /* PD5 */ { 0, 0, 0, 1, 0, 1 }, /* PD5 */
- /* PD4 */ { 0, 0, 0, 1, 0, 1 }, /* PD4 */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-typedef struct bscr_ {
- unsigned long bcsr0;
- unsigned long bcsr1;
- unsigned long bcsr2;
- unsigned long bcsr3;
- unsigned long bcsr4;
- unsigned long bcsr5;
- unsigned long bcsr6;
- unsigned long bcsr7;
-} bcsr_t;
-
-typedef struct pci_ic_s {
- unsigned long pci_int_stat;
- unsigned long pci_int_mask;
-} pci_ic_t;
-
-void reset_phy(void)
-{
- volatile bcsr_t *bcsr = (bcsr_t *)CFG_BCSR;
-
- /* reset the FEC port */
- bcsr->bcsr1 &= ~FETH_RST;
- bcsr->bcsr1 |= FETH_RST;
-}
-
-
-int board_early_init_f (void)
-{
- volatile bcsr_t *bcsr = (bcsr_t *)CFG_BCSR;
- volatile pci_ic_t *pci_ic = (pci_ic_t *) CFG_PCI_INT;
-
- bcsr->bcsr1 = ~FETHIEN & ~RS232EN_1 & ~RS232EN_2;
-
- /* mask all PCI interrupts */
- pci_ic->pci_int_mask |= 0xfff00000;
-
- return 0;
-}
-
-int checkboard(void)
-{
- puts ("Board: Motorola MPC8266ADS\n");
- return 0;
-}
-
-long int initdram(int board_type)
-{
- /* Autoinit part stolen from board/sacsng/sacsng.c */
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
- volatile uchar c = 0xff;
- volatile uchar *ramaddr = (uchar *)(CFG_SDRAM_BASE + 0x8);
- uint psdmr = CFG_PSDMR;
- int i;
-
- uint psrt = 0x21; /* for no SPD */
- uint chipselects = 1; /* for no SPD */
- uint sdram_size = CFG_SDRAM_SIZE * 1024 * 1024; /* for no SPD */
- uint or = CFG_OR2_PRELIM; /* for no SPD */
- uint data_width;
- uint rows;
- uint banks;
- uint cols;
- uint caslatency;
- uint width;
- uint rowst;
- uint sdam;
- uint bsma;
- uint sda10;
- u_char spd_size;
- u_char data;
- u_char cksum;
- int j;
-
- /* Keep the compiler from complaining about potentially uninitialized vars */
- data_width = rows = banks = cols = caslatency = 0;
-
- /*
- * Read the SDRAM SPD EEPROM via I2C.
- */
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- i2c_read(SDRAM_SPD_ADDR, 0, 1, &data, 1);
- spd_size = data;
- cksum = data;
- for(j = 1; j < 64; j++)
- { /* read only the checksummed bytes */
- /* note: the I2C address autoincrements when alen == 0 */
- i2c_read(SDRAM_SPD_ADDR, 0, 0, &data, 1);
- /*printf("addr %d = 0x%02x\n", j, data);*/
- if(j == 5) chipselects = data & 0x0F;
- else if(j == 6) data_width = data;
- else if(j == 7) data_width |= data << 8;
- else if(j == 3) rows = data & 0x0F;
- else if(j == 4) cols = data & 0x0F;
- else if(j == 12)
- {
- /*
- * Refresh rate: this assumes the prescaler is set to
- * approximately 0.39uSec per tick and the target refresh period
- * is about 85% of maximum.
- */
- switch(data & 0x7F)
- {
- default:
- case 0: psrt = 0x21; /* 15.625uS */ break;
- case 1: psrt = 0x07; /* 3.9uS */ break;
- case 2: psrt = 0x0F; /* 7.8uS */ break;
- case 3: psrt = 0x43; /* 31.3uS */ break;
- case 4: psrt = 0x87; /* 62.5uS */ break;
- case 5: psrt = 0xFF; /* 125uS */ break;
- }
- }
- else if(j == 17) banks = data;
- else if(j == 18)
- {
- caslatency = 3; /* default CL */
-# if(PESSIMISTIC_SDRAM)
- if((data & 0x04) != 0) caslatency = 3;
- else if((data & 0x02) != 0) caslatency = 2;
- else if((data & 0x01) != 0) caslatency = 1;
-# else
- if((data & 0x01) != 0) caslatency = 1;
- else if((data & 0x02) != 0) caslatency = 2;
- else if((data & 0x04) != 0) caslatency = 3;
-# endif
- else
- {
- printf ("WARNING: Unknown CAS latency 0x%02X, using 3\n",
- data);
- }
- }
- else if(j == 63)
- {
- if(data != cksum)
- {
- printf ("WARNING: Configuration data checksum failure:"
- " is 0x%02x, calculated 0x%02x\n",
- data, cksum);
- }
- }
- cksum += data;
- }
-
- /* We don't trust CL less than 2 (only saw it on an old 16MByte DIMM) */
- if(caslatency < 2) {
- printf("CL was %d, forcing to 2\n", caslatency);
- caslatency = 2;
- }
- if(rows > 14) {
- printf("This doesn't look good, rows = %d, should be <= 14\n", rows);
- rows = 14;
- }
- if(cols > 11) {
- printf("This doesn't look good, columns = %d, should be <= 11\n", cols);
- cols = 11;
- }
-
- if((data_width != 64) && (data_width != 72))
- {
- printf("WARNING: SDRAM width unsupported, is %d, expected 64 or 72.\n",
- data_width);
- }
- width = 3; /* 2^3 = 8 bytes = 64 bits wide */
- /*
- * Convert banks into log2(banks)
- */
- if (banks == 2) banks = 1;
- else if(banks == 4) banks = 2;
- else if(banks == 8) banks = 3;
-
-
- sdram_size = 1 << (rows + cols + banks + width);
- /* hack for high density memory (512MB per CS) */
- /* !!!!! Will ONLY work with Page Based Interleave !!!!!
- ( PSDMR[PBI] = 1 )
- */
- /* mamory actually has 11 column addresses, but the memory controller
- doesn't really care.
- the calculations that follow will however move the rows so that
- they are muxed one bit off if you use 11 bit columns.
- The solution is to tell the memory controller the correct size of the memory
- but change the number of columns to 10 afterwards.
- The 11th column addre will still be mucxed correctly onto the bus.
-
- Also be aware that the MPC8266ADS board Rev B has not connected
- Row addres 13 to anything.
-
- The fix is to connect ADD16 (from U37-47) to SADDR12 (U28-126)
- */
- if (cols > 10)
- cols = 10;
-
-#if(CONFIG_PBI == 0) /* bank-based interleaving */
- rowst = ((32 - 6) - (rows + cols + width)) * 2;
-#else
- rowst = 32 - (rows + banks + cols + width);
-#endif
-
- or = ~(sdram_size - 1) | /* SDAM address mask */
- ((banks-1) << 13) | /* banks per device */
- (rowst << 9) | /* rowst */
- ((rows - 9) << 6); /* numr */
-
-
- /*printf("memctl->memc_or2 = 0x%08x\n", or);*/
-
- /*
- * SDAM specifies the number of columns that are multiplexed
- * (reference AN2165/D), defined to be (columns - 6) for page
- * interleave, (columns - 8) for bank interleave.
- *
- * BSMA is 14 - max(rows, cols). The bank select lines come
- * into play above the highest "address" line going into the
- * the SDRAM.
- */
-#if(CONFIG_PBI == 0) /* bank-based interleaving */
- sdam = cols - 8;
- bsma = ((31 - width) - 14) - ((rows > cols) ? rows : cols);
- sda10 = sdam + 2;
-#else
- sdam = cols + banks - 8;
- bsma = ((31 - width) - 14) - ((rows > cols) ? rows : cols);
- sda10 = sdam;
-#endif
-#if(PESSIMISTIC_SDRAM)
- psdmr = (CONFIG_PBI |\
- PSDMR_RFEN |\
- PSDMR_RFRC_16_CLK |\
- PSDMR_PRETOACT_8W |\
- PSDMR_ACTTORW_8W |\
- PSDMR_WRC_4C |\
- PSDMR_EAMUX |\
- PSDMR_BUFCMD) |\
- caslatency |\
- ((caslatency - 1) << 6) | /* LDOTOPRE is CL - 1 */ \
- (sdam << 24) |\
- (bsma << 21) |\
- (sda10 << 18);
-#else
- psdmr = (CONFIG_PBI |\
- PSDMR_RFEN |\
- PSDMR_RFRC_7_CLK |\
- PSDMR_PRETOACT_3W | /* 1 for 7E parts (fast PC-133) */ \
- PSDMR_ACTTORW_2W | /* 1 for 7E parts (fast PC-133) */ \
- PSDMR_WRC_1C | /* 1 clock + 7nSec */
- EAMUX |\
- BUFCMD) |\
- caslatency |\
- ((caslatency - 1) << 6) | /* LDOTOPRE is CL - 1 */ \
- (sdam << 24) |\
- (bsma << 21) |\
- (sda10 << 18);
-#endif
- /*printf("psdmr = 0x%08x\n", psdmr);*/
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * Quote from Micron MT48LC8M16A2 data sheet:
- *
- * "...the SDRAM requires a 100uS delay prior to issuing any
- * command other than a COMMAND INHIBIT or NOP. Starting at some
- * point during this 100uS period and continuing at least through
- * the end of this period, COMMAND INHIBIT or NOP commands should
- * be applied."
- *
- * "Once the 100uS delay has been satisfied with at least one COMMAND
- * INHIBIT or NOP command having been applied, a /PRECHARGE command/
- * should be applied. All banks must then be precharged, thereby
- * placing the device in the all banks idle state."
- *
- * "Once in the idle state, /two/ AUTO REFRESH cycles must be
- * performed. After the AUTO REFRESH cycles are complete, the
- * SDRAM is ready for mode register programming."
- *
- * (/emphasis/ mine, gvb)
- *
- * The way I interpret this, Micron start up sequence is:
- * 1. Issue a PRECHARGE-BANK command (initial precharge)
- * 2. Issue a PRECHARGE-ALL-BANKS command ("all banks ... precharged")
- * 3. Issue two (presumably, doing eight is OK) CBR REFRESH commands
- * 4. Issue a MODE-SET command to initialize the mode register
- *
- * --------
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- memctl->memc_mptpr = CFG_MPTPR;
- memctl->memc_psrt = psrt;
-
- memctl->memc_br2 = CFG_BR2_PRELIM;
- memctl->memc_or2 = or;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr = c;
-
- /*
- * Do it a second time for the second set of chips if the DIMM has
- * two chip selects (double sided).
- */
- if(chipselects > 1)
- {
- ramaddr += sdram_size;
-
- memctl->memc_br3 = CFG_BR3_PRELIM + sdram_size;
- memctl->memc_or3 = or;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr = c;
- }
-
- /* print info */
- printf("SDRAM configuration read from SPD\n");
- printf("\tSize per side = %dMB\n", sdram_size >> 20);
- printf("\tOrganization: %d sides, %d banks, %d Columns, %d Rows, Data width = %d bits\n", chipselects, 1<<(banks), cols, rows, data_width);
- printf("\tRefresh rate = %d, CAS latency = %d", psrt, caslatency);
-#if(CONFIG_PBI == 0) /* bank-based interleaving */
- printf(", Using Bank Based Interleave\n");
-#else
- printf(", Using Page Based Interleave\n");
-#endif
- printf("\tTotal size: ");
-
- /* this delay only needed for original 16MB DIMM...
- * Not needed for any other memory configuration */
- if ((sdram_size * chipselects) == (16 *1024 *1024))
- udelay (250000);
- return (sdram_size * chipselects);
- /*return (16 * 1024 * 1024);*/
-}
-
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
- pci_mpc8250_init(&hose);
-}
-#endif
diff --git a/board/mpc8266ads/u-boot.lds b/board/mpc8266ads/u-boot.lds
deleted file mode 100644
index 2220758cb9..0000000000
--- a/board/mpc8266ads/u-boot.lds
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * (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/mpc8260/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/mpc8540eval/Makefile b/board/mpc8540eval/Makefile
deleted file mode 100644
index d649c60af1..0000000000
--- a/board/mpc8540eval/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o
-#COBJS := $(BOARD).o flash.o $(BOARD)_slave.o
-SOBJS := init.o
-#SOBJS :=
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(OBJS) $(SOBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/mpc8540eval/config.mk b/board/mpc8540eval/config.mk
deleted file mode 100644
index 68271bd700..0000000000
--- a/board/mpc8540eval/config.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Modified by Xianghua Xiao, X.Xiao@motorola.com
-# (C) Copyright 2002,Motorola 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
-#
-
-#
-# gda8540 board
-# default CCARBAR is at 0xff700000
-# assume U-Boot is less than 0.5MB
-#
-#TEXT_BASE = 0x1000000
-TEXT_BASE = 0xfff80000
-
-
-PLATFORM_CPPFLAGS += -DCONFIG_MPC85xx=1
-PLATFORM_CPPFLAGS += -DCONFIG_MPC8540=1
-PLATFORM_CPPFLAGS += -DCONFIG_E500=1
diff --git a/board/mpc8540eval/flash.c b/board/mpc8540eval/flash.c
deleted file mode 100644
index 7300a041a2..0000000000
--- a/board/mpc8540eval/flash.c
+++ /dev/null
@@ -1,892 +0,0 @@
-/*
- * (C) Copyright 2003 Motorola Inc.
- * Xianghua Xiao,(X.Xiao@motorola.com)
- *
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001, Stuart Hughes, Lineo Inc, stuarth@lineo.com
- * Add support the Sharp chips on the mpc8260ads.
- * I started with board/ip860/flash.c and made changes I found in
- * the MTD project by David Schleef.
- *
- * 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 <common.h>
-
-#if !defined(CFG_NO_FLASH)
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*
- * The variable should be in the flash info structure. Since it
- * is only used in this board specific file it is declared here.
- * In the future I think an endian flag should be part of the
- * flash_info_t structure. (Ron Alder)
- */
-static ulong big_endian = 0;
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_block (flash_info_t *info, uchar * src, ulong dest, ulong cnt);
-static int write_short (flash_info_t *info, ulong dest, ushort data);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static int clear_block_lock_bit(flash_info_t *info, vu_long * addr);
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size;
- int i;
-
- /* Init: enable write,
- * or we cannot even write flash commands
- */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
-
- /* set the default sector offset */
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size<<20);
- }
-
- /* Re-do sizing to get full correct info */
- size = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size;
-
-#if !defined(CONFIG_RAM_AS_FLASH)
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
-#endif
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL: printf ("Intel "); break;
- case FLASH_MAN_SHARP: printf ("Sharp "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F016SV: printf ("28F016SV (16 Mbit, 32 x 64k)\n");
- break;
- case FLASH_28F160S3: printf ("28F160S3 (16 Mbit, 32 x 512K)\n");
- break;
- case FLASH_28F320S3: printf ("28F320S3 (32 Mbit, 64 x 512K)\n");
- break;
- case FLASH_LH28F016SCT: printf ("28F016SC (16 Mbit, 32 x 64K)\n");
- break;
- case FLASH_28F640J3A: printf ("28F640J3A (64 Mbit, 64 x 128K)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
- /* only deal with 16 bit and 32 bit port width, 16bit chip */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value,va,vb,vc,vd;
- ulong base = (ulong)addr;
- ulong sector_offset;
-
-#ifdef DEBUG
- printf("Check flash at 0x%08x\n",(uint)addr);
-#endif
- /* Write "Intelligent Identifier" command: read Manufacturer ID */
- *addr = 0x90909090;
- udelay(20);
- asm("sync");
-
-#ifndef CFG_FLASH_CFI
- printf("Not define CFG_FLASH_CFI\n");
- return (0);
-#else
- value = addr[0];
- va=(value & 0xFF000000)>>24;
- vb=(value & 0x00FF0000)>>16;
- vc=(value & 0x0000FF00)>>8;
- vd=(value & 0x000000FF);
- if ((va==0) && (vb==0)) {
- printf("cannot identify Flash\n");
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
- else if ((va==0) && (vb!=0)) {
- big_endian = 1;
- info->chipwidth = FLASH_CFI_BY16;
- if(vb == vd) info->portwidth = FLASH_CFI_32BIT;
- else info->portwidth = FLASH_CFI_16BIT;
- }
- else if ((va!=0) && (vb==0)) {
- big_endian = 0;
- info->chipwidth = FLASH_CFI_BY16;
- if(va == vc) info->portwidth = FLASH_CFI_32BIT;
- else info->portwidth = FLASH_CFI_16BIT;
- }
- else if ((va!=0) && (vb!=0)) {
- big_endian = 1; /* no meaning for 8bit chip */
- info->chipwidth = FLASH_CFI_BY8;
- if(va == vb) info->portwidth = FLASH_CFI_16BIT;
- else info->portwidth = FLASH_CFI_8BIT;
- }
-#ifdef DEBUG
- switch (info->portwidth) {
- case FLASH_CFI_8BIT:
- printf("port width is 8 bit.\n");
- break;
- case FLASH_CFI_16BIT:
- printf("port width is 16 bit, ");
- break;
- case FLASH_CFI_32BIT:
- printf("port width is 32 bit, ");
- break;
- }
- switch (info->chipwidth) {
- case FLASH_CFI_BY16:
- printf("chip width is 16 bit, ");
- switch (big_endian) {
- case 0:
- printf("Little Endian.\n");
- break;
- case 1:
- printf("Big Endian.\n");
- break;
- }
- break;
- }
-#endif
-#endif /*#ifdef CFG_FLASH_CFI*/
-
- if (big_endian==0) value = (addr[0] & 0xFF000000) >>8;
- else value = (addr[0] & 0x00FF0000);
-#ifdef DEBUG
- printf("manufacturer=0x%x\n",(uint)(value>>16));
-#endif
- switch (value) {
- case MT_MANUFACT & 0xFFFF0000: /* SHARP, MT or => Intel */
- case INTEL_ALT_MANU & 0xFFFF0000:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- printf("unknown manufacturer: %x\n", (unsigned int)value);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- if (info->portwidth==FLASH_CFI_16BIT) {
- switch (big_endian) {
- case 0:
- value = (addr[0] & 0x0000FF00)>>8;
- break;
- case 1:
- value = (addr[0] & 0x000000FF);
- break;
- }
- }
- else if (info->portwidth == FLASH_CFI_32BIT) {
- switch (big_endian) {
- case 0:
- value = (addr[1] & 0x0000FF00)>>8;
- break;
- case 1:
- value = (addr[1] & 0x000000FF);
- break;
- }
- }
-
-#ifdef DEBUG
- printf("deviceID=0x%x\n",(uint)value);
-#endif
- switch (value) {
- case (INTEL_ID_28F016S & 0x0000FFFF):
- info->flash_id += FLASH_28F016SV;
- info->sector_count = 32;
- sector_offset = 0x10000;
- break; /* => 2 MB */
-
- case (INTEL_ID_28F160S3 & 0x0000FFFF):
- info->flash_id += FLASH_28F160S3;
- info->sector_count = 32;
- sector_offset = 0x10000;
- break; /* => 2 MB */
-
- case (INTEL_ID_28F320S3 & 0x0000FFFF):
- info->flash_id += FLASH_28F320S3;
- info->sector_count = 64;
- sector_offset = 0x10000;
- break; /* => 4 MB */
-
- case (INTEL_ID_28F640J3A & 0x0000FFFF):
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- sector_offset = 0x20000;
- break; /* => 8 MB */
-
- case SHARP_ID_28F016SCL & 0x0000FFFF:
- case SHARP_ID_28F016SCZ & 0x0000FFFF:
- info->flash_id = FLASH_MAN_SHARP | FLASH_LH28F016SCT;
- info->sector_count = 32;
- sector_offset = 0x10000;
- break; /* => 2 MB */
-
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- sector_offset = sector_offset * (info->portwidth / info->chipwidth);
- info->size = info->sector_count * sector_offset;
-
- /* set up sector start address table */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- base += sector_offset;
- /* don't know how to check sector protection */
- info->protect[i] = 0;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (vu_long *)info->start[0];
- *addr = 0xFFFFFF; /* reset bank to read array mode */
- asm("sync");
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last, ready, erase_err_status;
-
- if (big_endian == 1) {
- ready = 0x0080;
- erase_err_status = 0x00a0;
- }
- else {
- ready = 0x8000;
- erase_err_status = 0xa000;
- }
- if ((info->portwidth / info->chipwidth)==2) {
- ready += (ready <<16);
- erase_err_status += (erase_err_status <<16);
- }
-
-#ifdef DEBUG
- printf ("\nReady flag is 0x%lx\nErase error flag is 0x%lx", ready, erase_err_status);
-#endif
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ( ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL)
- && ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_SHARP) ) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-#ifdef DEBUG
- printf("\nFlash Erase:\n");
-#endif
- /* Make Sure Block Lock Bit is not set. */
- if(clear_block_lock_bit(info, (vu_long *)(info->start[s_first]))){
- return 1;
- }
-
- /* Start erase on unprotected sectors */
-#if defined(DEBUG)
- printf("Begin to erase now,s_first=0x%x s_last=0x%x...\n",s_first,s_last);
-#endif
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_short *addr16 = (vu_short *)(info->start[sect]);
- vu_long *addr = (vu_long *)(info->start[sect]);
- printf(".");
- switch (info->portwidth) {
- case FLASH_CFI_16BIT:
- asm("sync");
- last = start = get_timer (0);
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
- /* Reset Array */
- *addr16 = 0xffff;
- asm("sync");
- /* Clear Status Register */
- *addr16 = 0x5050;
- asm("sync");
- /* Single Block Erase Command */
- *addr16 = 0x2020;
- asm("sync");
- /* Confirm */
- *addr16 = 0xD0D0;
- asm("sync");
- if((info->flash_id & FLASH_TYPEMASK) != FLASH_LH28F016SCT) {
- /* Resume Command, as per errata update */
- *addr16 = 0xD0D0;
- asm("sync");
- }
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
- /* wait at least 80us - let's wait 1 ms */
- *addr16 = 0x7070;
- udelay (1000);
- while ((*addr16 & ready) != ready) {
- if((*addr16 & erase_err_status)== erase_err_status){
- printf("Error in Block Erase - Lock Bit may be set!\n");
- printf("Status Register = 0x%X\n", (uint)*addr16);
- *addr16 = 0xFFFF; /* reset bank */
- asm("sync");
- return 1;
- }
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr16 = 0xFFFF; /* reset bank */
- asm("sync");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- /* reset to read mode */
- *addr16 = 0xFFFF;
- asm("sync");
- break;
- case FLASH_CFI_32BIT:
- asm("sync");
- last = start = get_timer (0);
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
- /* Reset Array */
- *addr = 0xffffffff;
- asm("sync");
- /* Clear Status Register */
- *addr = 0x50505050;
- asm("sync");
- /* Single Block Erase Command */
- *addr = 0x20202020;
- asm("sync");
- /* Confirm */
- *addr = 0xD0D0D0D0;
- asm("sync");
- if((info->flash_id & FLASH_TYPEMASK) != FLASH_LH28F016SCT) {
- /* Resume Command, as per errata update */
- *addr = 0xD0D0D0D0;
- asm("sync");
- }
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
- /* wait at least 80us - let's wait 1 ms */
- *addr = 0x70707070;
- udelay (1000);
- while ((*addr & ready) != ready) {
- if((*addr & erase_err_status)==erase_err_status){
- printf("Error in Block Erase - Lock Bit may be set!\n");
- printf("Status Register = 0x%X\n", (uint)*addr);
- *addr = 0xFFFFFFFF; /* reset bank */
- asm("sync");
- return 1;
- }
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = 0xFFFFFFFF; /* reset bank */
- asm("sync");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- /* reset to read mode */
- *addr = 0xFFFFFFFF;
- asm("sync");
- break;
- } /* end switch */
- } /* end if */
- } /* end for */
-
- printf ("flash erase done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-#define FLASH_BLOCK_SIZE 32
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data, count, temp;
-/* ulong temp[FLASH_BLOCK_SIZE/4];*/
- int i, l, rc;
-
- count = cnt;
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- cp = wp;
- /* handle unaligned block bytes , flash block size = 16bytes */
- wp = (cp+FLASH_BLOCK_SIZE-1) & ~(FLASH_BLOCK_SIZE-1);
- if ((wp-cp)>=cnt) {
- if ((rc = write_block(info,src,cp,wp-cp)) !=0)
- return (rc);
- src += wp-cp;
- cnt -= wp-cp;
- }
- /* handle aligned block bytes */
- temp = 0;
- printf("\n");
- while ( cnt >= FLASH_BLOCK_SIZE) {
- if ((rc = write_block(info,src,cp,FLASH_BLOCK_SIZE)) !=0) {
- return (rc);
- }
- src += FLASH_BLOCK_SIZE;
- cp += FLASH_BLOCK_SIZE;
- cnt -= FLASH_BLOCK_SIZE;
- if (((count-cnt)>>10)>temp) {
- temp=(count-cnt)>>10;
- printf("\r%d KB",temp);
- }
- }
- printf("\n");
- wp = cp;
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-#undef FLASH_BLOCK_SIZE
-
-/*-----------------------------------------------------------------------
- * Write block to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * -1 Error
- */
-static int write_block(flash_info_t *info, uchar * src, ulong dest, ulong cnt)
-{
- vu_short *baddr, *addr = (vu_short *)dest;
- ushort data;
- ulong start, now, xsr,csr, ready;
- int flag;
-
- if (cnt==0) return 0;
- else if(cnt != (cnt& ~1)) return -1;
-
- /* Check if Flash is (sufficiently) erased */
- data = * src;
- data = (data<<8) | *(src+1);
- if ((*addr & data) != data) {
- return (2);
- }
- if (big_endian == 1) {
- ready = 0x0080;
- }
- else {
- ready = 0x8000;
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- do {
- /* Write Command */
- *addr = 0xe8e8;
- asm("sync");
- xsr = *addr;
- asm("sync");
- } while (!(xsr & ready)); /*wait until read */
- /*write count=BLOCK SIZE -1 */
- data=(cnt>>1)-1;
- data=(data<<8)|data;
- *addr = data; /* word mode, cnt/2 */
- asm("sync");
- baddr = addr;
- while(cnt) {
- data = * src++;
- data = (data<<8) | *src++;
- asm("sync");
- *baddr = data;
- asm("sync");
- ++baddr;
- cnt = cnt -2;
- }
- *addr = 0xd0d0; /* confirm write */
- start = get_timer(0);
- asm("sync");
- if (flag)
- enable_interrupts();
- /* data polling for D7 */
- flag = 0;
- while (((csr = *addr) & ready) != ready) {
- if ((now=get_timer(start)) > CFG_FLASH_WRITE_TOUT) {
- flag = 1;
- break;
- }
- }
- if (csr & 0x4040) {
- printf ("CSR indicates write error (%04x) at %08lx\n", csr, (ulong)addr);
- flag = 1;
- }
- /* Clear Status Registers Command */
- *addr = 0x5050;
- asm("sync");
- /* Reset to read array mode */
- *addr = 0xFFFF;
- asm("sync");
- return (flag);
-}
-
-
-/*-----------------------------------------------------------------------
- * Write a short word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_short (flash_info_t *info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short *)dest;
- ulong start, now, csr, ready;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Write Command */
- *addr = 0x1010;
- start = get_timer (0);
- asm("sync");
- /* Write Data */
- *addr = data;
- asm("sync");
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
- if (big_endian == 1) {
- ready = 0x0080;
- }
- else {
- ready = 0x8000;
- }
- /* data polling for D7 */
- flag = 0;
- while (((csr = *addr) & ready) != ready) {
- if ((now=get_timer(start)) > CFG_FLASH_WRITE_TOUT) {
- flag = 1;
- break;
- }
- }
- if (csr & 0x4040) {
- printf ("CSR indicates write error (%04x) at %08lx\n", csr, (ulong)addr);
- flag = 1;
- }
- /* Clear Status Registers Command */
- *addr = 0x5050;
- asm("sync");
- /* Reset to read array mode */
- *addr = 0xFFFF;
- asm("sync");
- return (flag);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)dest;
- ulong start, csr, ready;
- int flag=0;
-
- switch (info->portwidth) {
- case FLASH_CFI_32BIT:
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- if (big_endian == 1) {
- ready = 0x0080;
- }
- else {
- ready = 0x8000;
- }
- if ((info->portwidth / info->chipwidth)==2) {
- ready += (ready <<16);
- }
- else {
- ready = ready << 16;
- }
- /* Write Command */
- *addr = 0x10101010;
- asm("sync");
- /* Write Data */
- *addr = data;
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
- /* data polling for D7 */
- start = get_timer (0);
- flag = 0;
- while (((csr = *addr) & ready) != ready) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- flag = 1;
- break;
- }
- }
- if (csr & 0x40404040) {
- printf ("CSR indicates write error (%08lx) at %08lx\n", csr, (ulong)addr);
- flag = 1;
- }
- /* Clear Status Registers Command */
- *addr = 0x50505050;
- asm("sync");
- /* Reset to read array mode */
- *addr = 0xFFFFFFFF;
- asm("sync");
- break;
- case FLASH_CFI_16BIT:
- flag = write_short (info, dest, (unsigned short) (data>>16));
- if (flag == 0)
- flag = write_short (info, dest+2, (unsigned short) (data));
- break;
- }
- return (flag);
-}
-
-/*-----------------------------------------------------------------------
- * Clear Block Lock Bit, returns:
- * 0 - OK
- * 1 - Timeout
- */
-
-static int clear_block_lock_bit(flash_info_t * info, vu_long * addr)
-{
- ulong start, now, ready;
-
- /* Reset Array */
- *addr = 0xffffffff;
- asm("sync");
- /* Clear Status Register */
- *addr = 0x50505050;
- asm("sync");
-
- *addr = 0x60606060;
- asm("sync");
- *addr = 0xd0d0d0d0;
- asm("sync");
-
-
- if (big_endian == 1) {
- ready = 0x0080;
- }
- else {
- ready = 0x8000;
- }
- if ((info->portwidth / info->chipwidth)==2) {
- ready += (ready <<16);
- }
- else {
- ready = ready << 16;
- }
-#ifdef DEBUG
- printf ("%s: Ready flag is 0x%8lx\n", __FUNCTION__, ready);
-#endif
- *addr = 0x70707070; /* read status */
- start = get_timer (0);
- while((*addr & ready) != ready){
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout on clearing Block Lock Bit\n");
- *addr = 0xFFFFFFFF; /* reset bank */
- asm("sync");
- return 1;
- }
- }
- return 0;
-}
-
-#endif /* !CFG_NO_FLASH */
diff --git a/board/mpc8540eval/init.S b/board/mpc8540eval/init.S
deleted file mode 100644
index 8c2ca65a91..0000000000
--- a/board/mpc8540eval/init.S
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
-* Copyright (C) 2002,2003, Motorola Inc.
-* Xianghua Xiao <X.Xiao@motorola.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
-*/
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-#include <asm/cache.h>
-#include <asm/mmu.h>
-#include <config.h>
-#include <mpc85xx.h>
-
-#define entry_start \
- mflr r1 ; \
- bl 0f ;
-
-#define entry_end \
-0: mflr r0 ; \
- mtlr r1 ; \
- blr ;
-
-/* TLB1 entries configuration: */
-
- .section .bootpg, "ax"
- .globl tlb1_entry
-tlb1_entry:
- entry_start
-
- .long 0x0a /* the following data table uses a few of 16 TLB entries */
-
- .long TLB1_MAS0(1,1,0)
- .long TLB1_MAS1(1,1,0,0,BOOKE_PAGESZ_1M)
- .long TLB1_MAS2(((CFG_CCSRBAR>>12) & 0xfffff),0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(((CFG_CCSRBAR>>12) & 0xfffff),0,0,0,0,0,1,0,1,0,1)
-
- #if defined(CFG_FLASH_PORT_WIDTH_16)
- .long TLB1_MAS0(1,2,0)
- .long TLB1_MAS1(1,1,0,0,BOOKE_PAGESZ_4M)
- .long TLB1_MAS2(((CFG_FLASH_BASE>>12) & 0xfffff),0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(((CFG_FLASH_BASE>>12) & 0xfffff),0,0,0,0,0,1,0,1,0,1)
-
- .long TLB1_MAS0(1,3,0)
- .long TLB1_MAS1(1,1,0,0,BOOKE_PAGESZ_4M)
- .long TLB1_MAS2((((CFG_FLASH_BASE+0x400000)>>12)&0xfffff),0,0,0,0,1,0,1,0)
- .long TLB1_MAS3((((CFG_FLASH_BASE+0x400000)>>12)&0xfffff),0,0,0,0,0,1,0,1,0,1)
- #else
- .long TLB1_MAS0(1,2,0)
- .long TLB1_MAS1(1,1,0,0,BOOKE_PAGESZ_16M)
- .long TLB1_MAS2(((CFG_FLASH_BASE>>12) & 0xfffff),0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(((CFG_FLASH_BASE>>12) & 0xfffff),0,0,0,0,0,1,0,1,0,1)
-
- .long TLB1_MAS0(1,3,0)
- .long TLB1_MAS1(0,0,0,0,BOOKE_PAGESZ_1M)
- .long TLB1_MAS2(0,0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(0,0,0,0,0,0,1,0,1,0,1)
- #endif
-
- #if !defined(CONFIG_SPD_EEPROM)
- .long TLB1_MAS0(1,4,0)
- .long TLB1_MAS1(1,1,0,0,BOOKE_PAGESZ_64M)
- .long TLB1_MAS2(((CFG_DDR_SDRAM_BASE>>12) & 0xfffff),0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(((CFG_DDR_SDRAM_BASE>>12) & 0xfffff),0,0,0,0,0,1,0,1,0,1)
-
- .long TLB1_MAS0(1,5,0)
- .long TLB1_MAS1(1,1,0,0,BOOKE_PAGESZ_64M)
- .long TLB1_MAS2((((CFG_DDR_SDRAM_BASE+0x4000000)>>12) & 0xfffff),0,0,0,0,0,0,0,0)
- .long TLB1_MAS3((((CFG_DDR_SDRAM_BASE+0x4000000)>>12) & 0xfffff),0,0,0,0,0,1,0,1,0,1)
- #else
- .long TLB1_MAS0(1,4,0)
- .long TLB1_MAS1(0,0,0,0,BOOKE_PAGESZ_1M)
- .long TLB1_MAS2(0,0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(0,0,0,0,0,0,1,0,1,0,1)
-
- .long TLB1_MAS0(1,5,0)
- .long TLB1_MAS1(0,0,0,0,BOOKE_PAGESZ_1M)
- .long TLB1_MAS2(0,0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(0,0,0,0,0,0,1,0,1,0,1)
- #endif
-
- .long TLB1_MAS0(1,6,0)
- .long TLB1_MAS1(1,1,0,0,BOOKE_PAGESZ_64M)
- #if defined(CONFIG_RAM_AS_FLASH)
- .long TLB1_MAS2(((CFG_LBC_SDRAM_BASE>>12) & 0xfffff),0,0,0,0,1,0,1,0)
- #else
- .long TLB1_MAS2(((CFG_LBC_SDRAM_BASE>>12) & 0xfffff),0,0,0,0,0,0,0,0)
- #endif
- .long TLB1_MAS3(((CFG_LBC_SDRAM_BASE>>12) & 0xfffff),0,0,0,0,0,1,0,1,0,1)
-
- .long TLB1_MAS0(1,7,0)
- .long TLB1_MAS1(1,1,0,0,BOOKE_PAGESZ_16K)
- #ifdef CONFIG_L2_INIT_RAM
- .long TLB1_MAS2(((CFG_INIT_RAM_ADDR>>12) & 0xfffff),0,0,0,1,0,0,0,0)
- #else
- .long TLB1_MAS2(((CFG_INIT_RAM_ADDR>>12) & 0xfffff),0,0,0,0,0,0,0,0)
- #endif
- .long TLB1_MAS3(((CFG_INIT_RAM_ADDR>>12) & 0xfffff),0,0,0,0,0,1,0,1,0,1)
-
- .long TLB1_MAS0(1,8,0)
- .long TLB1_MAS1(1,1,0,0,BOOKE_PAGESZ_256M)
- .long TLB1_MAS2(((CFG_PCI_MEM_BASE>>12) & 0xfffff),0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(((CFG_PCI_MEM_BASE>>12) & 0xfffff),0,0,0,0,0,1,0,1,0,1)
-
- .long TLB1_MAS0(1,9,0)
- .long TLB1_MAS1(1,1,0,0,BOOKE_PAGESZ_16K)
- .long TLB1_MAS2(((CFG_BCSR>>12) & 0xfffff),0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(((CFG_BCSR>>12) & 0xfffff),0,0,0,0,0,1,0,1,0,1)
-
- #if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR)
- .long TLB1_MAS0(1,15,0)
- .long TLB1_MAS1(1,1,0,0,BOOKE_PAGESZ_1M)
- .long TLB1_MAS2(((CFG_CCSRBAR_DEFAULT>>12) & 0xfffff),0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(((CFG_CCSRBAR_DEFAULT>>12) & 0xfffff),0,0,0,0,0,1,0,1,0,1)
- #else
- .long TLB1_MAS0(1,15,0)
- .long TLB1_MAS1(0,0,0,0,BOOKE_PAGESZ_1M)
- .long TLB1_MAS2(0,0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(0,0,0,0,0,0,1,0,1,0,1)
- #endif
- entry_end
-
-/* LAW(Local Access Window) configuration:
- * 0000_0000-0800_0000: DDR(128M) -or- larger
- * f000_0000-f3ff_ffff: PCI(256M)
- * f400_0000-f7ff_ffff: RapidIO(128M)
- * f800_0000-ffff_ffff: localbus(128M)
- * f800_0000-fbff_ffff: LBC SDRAM(64M)
- * fc00_0000-fdef_ffff: LBC BCSR,RTC,etc(31M)
- * fdf0_0000-fdff_ffff: CCSRBAR(1M)
- * fe00_0000-ffff_ffff: Flash(32M)
- * Note: CCSRBAR and L2-as-SRAM don't need configure Local Access
- * Window.
- * Note: If flash is 8M at default position(last 8M),no LAW needed.
- */
-
-#if !defined(CONFIG_SPD_EEPROM)
-#define LAWBAR0 ((CFG_DDR_SDRAM_BASE>>12) & 0xfffff)
-#define LAWAR0 (LAWAR_EN | LAWAR_TRGT_IF_DDR | (LAWAR_SIZE & LAWAR_SIZE_128M))
-#else
-#define LAWBAR0 0
-#define LAWAR0 ((LAWAR_TRGT_IF_DDR | (LAWAR_SIZE & LAWAR_SIZE_128M)) & ~LAWAR_EN)
-#endif
-
-#define LAWBAR1 ((CFG_PCI_MEM_BASE>>12) & 0xfffff)
-#define LAWAR1 (LAWAR_EN | LAWAR_TRGT_IF_PCIX | (LAWAR_SIZE & LAWAR_SIZE_256M))
-
-#if !defined(CONFIG_RAM_AS_FLASH)
-#define LAWBAR2 ((CFG_LBC_SDRAM_BASE>>12) & 0xfffff)
-#define LAWAR2 (LAWAR_EN | LAWAR_TRGT_IF_LBC | (LAWAR_SIZE & LAWAR_SIZE_128M))
-#else
-#define LAWBAR2 0
-#define LAWAR2 ((LAWAR_TRGT_IF_LBC | (LAWAR_SIZE & LAWAR_SIZE_128M)) & ~LAWAR_EN)
-#endif
-
- .section .bootpg, "ax"
- .globl law_entry
-law_entry:
- entry_start
- .long 0x03
- .long LAWBAR0,LAWAR0,LAWBAR1,LAWAR1,LAWBAR2,LAWAR2
- entry_end
diff --git a/board/mpc8540eval/mpc8540eval.c b/board/mpc8540eval/mpc8540eval.c
deleted file mode 100644
index 3b3c8ed26d..0000000000
--- a/board/mpc8540eval/mpc8540eval.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * (C) Copyright 2002,2003, Motorola Inc.
- * Xianghua Xiao, (X.Xiao@motorola.com)
- *
- * (C) Copyright 2002 Scott McNutt <smcnutt@artesyncp.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/immap_85xx.h>
-#include <spd.h>
-
-extern long int spd_sdram (void);
-
-long int fixed_sdram (void);
-
-int board_pre_init (void)
-{
-#if defined(CONFIG_PCI)
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- volatile ccsr_pcix_t *pci = &immr->im_pcix;
-
- pci->peer &= 0xffffffdf; /* disable master abort */
-#endif
- return 0;
-}
-
-int checkboard (void)
-{
- sys_info_t sysinfo;
-
- get_sys_info (&sysinfo);
-
- printf ("Board: Freescale MPC8540EVAL Board\n");
- printf ("\tCPU: %lu MHz\n", sysinfo.freqProcessor / 1000000);
- printf ("\tCCB: %lu MHz\n", sysinfo.freqSystemBus / 1000000);
- printf ("\tDDR: %lu MHz\n", sysinfo.freqSystemBus / 2000000);
- if((CFG_LBC_LCRR & 0x0f) == 2 || (CFG_LBC_LCRR & 0x0f) == 4 \
- || (CFG_LBC_LCRR & 0x0f) == 8) {
- printf ("\tLBC: %lu MHz\n",
- sysinfo.freqSystemBus / 1000000/(CFG_LBC_LCRR & 0x0f));
- } else {
- printf("\tLBC: unknown\n");
- }
- printf("L1 D-cache 32KB, L1 I-cache 32KB enabled.\n");
- return (0);
-}
-
-long int initdram (int board_type)
-{
- long dram_size = 0;
- extern long spd_sdram (void);
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
-#if !defined(CONFIG_RAM_AS_FLASH)
- volatile ccsr_lbc_t *lbc= &immap->im_lbc;
- sys_info_t sysinfo;
- uint temp_lbcdll = 0;
-#endif
-#if !defined(CONFIG_RAM_AS_FLASH) || defined(CONFIG_DDR_DLL)
- volatile ccsr_gur_t *gur= &immap->im_gur;
-#endif
-
-#if defined(CONFIG_DDR_DLL)
- uint temp_ddrdll = 0;
-
- /* Work around to stabilize DDR DLL */
- temp_ddrdll = gur->ddrdllcr;
- gur->ddrdllcr = ((temp_ddrdll & 0xff) << 16) | 0x80000000;
- asm("sync;isync;msync");
-#endif
-
-#if defined(CONFIG_SPD_EEPROM)
- dram_size = spd_sdram ();
-#else
- dram_size = fixed_sdram ();
-#endif
-
-#if defined(CFG_RAMBOOT)
- return dram_size;
-#endif
-
-#if !defined(CONFIG_RAM_AS_FLASH) /* LocalBus is not emulating flash */
- get_sys_info(&sysinfo);
- /* if localbus freq is less than 66Mhz,we use bypass mode,otherwise use DLL */
- if(sysinfo.freqSystemBus/(CFG_LBC_LCRR & 0x0f) < 66000000) {
- lbc->lcrr = (CFG_LBC_LCRR & 0x0fffffff)| 0x80000000;
- } else {
- lbc->lcrr = CFG_LBC_LCRR & 0x7fffffff;
- udelay(200);
- temp_lbcdll = gur->lbcdllcr;
- gur->lbcdllcr = ((temp_lbcdll & 0xff) << 16 ) | 0x80000000;
- asm("sync;isync;msync");
- }
- lbc->or2 = CFG_OR2_PRELIM; /* 64MB SDRAM */
- lbc->br2 = CFG_BR2_PRELIM;
- lbc->lbcr = CFG_LBC_LBCR;
- lbc->lsdmr = CFG_LBC_LSDMR_1;
- asm("sync");
- * (ulong *)0 = 0x000000ff;
- lbc->lsdmr = CFG_LBC_LSDMR_2;
- asm("sync");
- * (ulong *)0 = 0x000000ff;
- lbc->lsdmr = CFG_LBC_LSDMR_3;
- asm("sync");
- * (ulong *)0 = 0x000000ff;
- lbc->lsdmr = CFG_LBC_LSDMR_4;
- asm("sync");
- * (ulong *)0 = 0x000000ff;
- lbc->lsdmr = CFG_LBC_LSDMR_5;
- asm("sync");
- lbc->lsrt = CFG_LBC_LSRT;
- asm("sync");
- lbc->mrtpr = CFG_LBC_MRTPR;
- asm("sync");
-#endif
-
-#if defined(CONFIG_DDR_ECC)
- {
- /* Initialize all of memory for ECC, then
- * enable errors */
- uint *p = 0;
- uint i = 0;
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile ccsr_ddr_t *ddr= &immap->im_ddr;
- dma_init();
- for (*p = 0; p < (uint *)(8 * 1024); p++) {
- if (((unsigned int)p & 0x1f) == 0) { dcbz(p); }
- *p = (unsigned int)0xdeadbeef;
- if (((unsigned int)p & 0x1c) == 0x1c) { dcbf(p); }
- }
-
- /* 8K */
- dma_xfer((uint *)0x2000,0x2000,(uint *)0);
- /* 16K */
- dma_xfer((uint *)0x4000,0x4000,(uint *)0);
- /* 32K */
- dma_xfer((uint *)0x8000,0x8000,(uint *)0);
- /* 64K */
- dma_xfer((uint *)0x10000,0x10000,(uint *)0);
- /* 128k */
- dma_xfer((uint *)0x20000,0x20000,(uint *)0);
- /* 256k */
- dma_xfer((uint *)0x40000,0x40000,(uint *)0);
- /* 512k */
- dma_xfer((uint *)0x80000,0x80000,(uint *)0);
- /* 1M */
- dma_xfer((uint *)0x100000,0x100000,(uint *)0);
- /* 2M */
- dma_xfer((uint *)0x200000,0x200000,(uint *)0);
- /* 4M */
- dma_xfer((uint *)0x400000,0x400000,(uint *)0);
-
- for (i = 1; i < dram_size / 0x800000; i++) {
- dma_xfer((uint *)(0x800000*i),0x800000,(uint *)0);
- }
-
- /* Enable errors for ECC */
- ddr->err_disable = 0x00000000;
- asm("sync;isync;msync");
- }
-#endif
-
- return dram_size;
-}
-
-#if defined(CFG_DRAM_TEST)
-int testdram (void)
-{
- uint *pstart = (uint *) CFG_MEMTEST_START;
- uint *pend = (uint *) CFG_MEMTEST_END;
- uint *p;
-
- printf("SDRAM test phase 1:\n");
- for (p = pstart; p < pend; p++)
- *p = 0xaaaaaaaa;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0xaaaaaaaa) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- printf("SDRAM test phase 2:\n");
- for (p = pstart; p < pend; p++)
- *p = 0x55555555;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0x55555555) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- printf("SDRAM test passed.\n");
- return 0;
-}
-#endif
-
-#if !defined(CONFIG_SPD_EEPROM)
-/*************************************************************************
- * fixed sdram init -- doesn't use serial presence detect.
- ************************************************************************/
-long int fixed_sdram (void)
-{
-#ifndef CFG_RAMBOOT
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile ccsr_ddr_t *ddr= &immap->im_ddr;
-
- ddr->cs0_bnds = CFG_DDR_CS0_BNDS;
- ddr->cs0_config = CFG_DDR_CS0_CONFIG;
- ddr->timing_cfg_1 = CFG_DDR_TIMING_1;
- ddr->timing_cfg_2 = CFG_DDR_TIMING_2;
- ddr->sdram_mode = CFG_DDR_MODE;
- ddr->sdram_interval = CFG_DDR_INTERVAL;
-#if defined (CONFIG_DDR_ECC)
- ddr->err_disable = 0x0000000D;
- ddr->err_sbe = 0x00ff0000;
-#endif
- asm("sync;isync;msync");
- udelay(500);
-#if defined (CONFIG_DDR_ECC)
- /* Enable ECC checking */
- ddr->sdram_cfg = (CFG_DDR_CONTROL | 0x20000000);
-#else
- ddr->sdram_cfg = CFG_DDR_CONTROL;
-#endif
- asm("sync; isync; msync");
- udelay(500);
-#endif
- return (CFG_SDRAM_SIZE * 1024 * 1024);
-}
-#endif /* !defined(CONFIG_SPD_EEPROM) */
diff --git a/board/mpc8540eval/u-boot.lds b/board/mpc8540eval/u-boot.lds
deleted file mode 100644
index 0755d0166b..0000000000
--- a/board/mpc8540eval/u-boot.lds
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * (C) Copyright 2002,2003, Motorola,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
- */
-
-/* Assumes that the size of u-boot is less than 512K and the
- * start address is aligned on a 512K block.
- * Boot page and reset vector is put at that end of the 512K block. */
-
-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: */
- .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/mpc85xx/start.o (.text)
- board/mpc8540eval/init.o (.text)
- cpu/mpc85xx/traps.o (.text)
- cpu/mpc85xx/interrupts.o (.text)
- cpu/mpc85xx/cpu_init.o (.text)
- cpu/mpc85xx/cpu.o (.text)
- cpu/mpc85xx/speed.o (.text)
- cpu/mpc85xx/pci.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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 = .);
-
- . = (. & 0xFFF80000) + 0x0007F000;
- .bootpg :
- {
- cpu/mpc85xx/start.o (.bootpg)
- board/mpc8540eval/init.o (.bootpg)
- } = 0xffff
-
- . = (. & 0xFFF80000) + 0x0007FFFC;
- .resetvec :
- {
- *(.resetvec)
- } = 0xffff
-
-}
diff --git a/board/mpl/common/common_util.c b/board/mpl/common/common_util.c
deleted file mode 100644
index 06d021a026..0000000000
--- a/board/mpl/common/common_util.c
+++ /dev/null
@@ -1,676 +0,0 @@
-/*
- * (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
- *
- */
-
-#include <common.h>
-#include <command.h>
-#include <video_fb.h>
-#include "common_util.h"
-#include <asm/processor.h>
-#include <asm/byteorder.h>
-#include <i2c.h>
-#include <devices.h>
-#include <pci.h>
-#include <malloc.h>
-#include <bzlib.h>
-
-#ifdef CONFIG_PIP405
-#include "../pip405/pip405.h"
-#include <405gp_pci.h>
-#endif
-#ifdef CONFIG_MIP405
-#include "../mip405/mip405.h"
-#include <405gp_pci.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if defined(CONFIG_PATI)
-#define FIRM_START 0xFFF00000
-#endif
-
-extern int gunzip(void *, int, uchar *, unsigned long *);
-extern int mem_test(ulong start, ulong ramsize, int quiet);
-
-#define I2C_BACKUP_ADDR 0x7C00 /* 0x200 bytes for backup */
-#define IMAGE_SIZE CFG_MONITOR_LEN /* ugly, but it works for now */
-
-extern flash_info_t flash_info[]; /* info for FLASH chips */
-
-static image_header_t header;
-
-
-static int
-mpl_prg(uchar *src, ulong size)
-{
- ulong start;
- flash_info_t *info;
- int i, rc;
-#if defined(CONFIG_PATI)
- int start_sect;
-#endif
-#if defined(CONFIG_PIP405) || defined(CONFIG_MIP405) || defined(CONFIG_PATI)
- char *copystr = (char *)src;
- ulong *magic = (ulong *)src;
-#endif
-
- info = &flash_info[0];
-
-#if defined(CONFIG_PIP405) || defined(CONFIG_MIP405) || defined(CONFIG_PATI)
- if (ntohl(magic[0]) != IH_MAGIC) {
- puts("Bad Magic number\n");
- return -1;
- }
- /* some more checks before we delete the Flash... */
- /* Checking the ISO_STRING prevents to program a
- * wrong Firmware Image into the flash.
- */
- i = 4; /* skip Magic number */
- while (1) {
- if (strncmp(&copystr[i], "MEV-", 4) == 0)
- break;
- if (i++ >= 0x100) {
- puts("Firmware Image for unknown Target\n");
- return -1;
- }
- }
- /* we have the ISO STRING, check */
- if (strncmp(&copystr[i], CONFIG_ISO_STRING, sizeof(CONFIG_ISO_STRING)-1) != 0) {
- printf("Wrong Firmware Image: %s\n", &copystr[i]);
- return -1;
- }
-#if !defined(CONFIG_PATI)
- start = 0 - size;
- for (i = info->sector_count-1; i > 0; i--) {
- info->protect[i] = 0; /* unprotect this sector */
- if (start >= info->start[i])
- break;
- }
- /* set-up flash location */
- /* now erase flash */
- printf("Erasing at %lx (sector %d) (start %lx)\n",
- start,i,info->start[i]);
- if ((rc = flash_erase (info, i, info->sector_count-1)) != 0) {
- puts("ERROR ");
- flash_perror(rc);
- return (1);
- }
-
-#else /* #if !defined(CONFIG_PATI */
- start = FIRM_START;
- start_sect = -1;
- for (i = 0; i < info->sector_count; i++) {
- if (start < info->start[i]) {
- start_sect = i - 1;
- break;
- }
- }
-
- info->protect[i - 1] = 0; /* unprotect this sector */
- for (; i < info->sector_count; i++) {
- if ((start + size) < info->start[i])
- break;
- info->protect[i] = 0; /* unprotect this sector */
- }
-
- i--;
- /* set-up flash location */
- /* now erase flash */
- printf ("Erasing at %lx to %lx (sector %d to %d) (%lx to %lx)\n",
- start, start + size, start_sect, i,
- info->start[start_sect], info->start[i]);
- if ((rc = flash_erase (info, start_sect, i)) != 0) {
- puts ("ERROR ");
- flash_perror (rc);
- return (1);
- }
-#endif /* defined(CONFIG_PATI) */
-
-#elif defined(CONFIG_VCMA9)
- start = 0;
- for (i = 0; i <info->sector_count; i++) {
- info->protect[i] = 0; /* unprotect this sector */
- if (size < info->start[i])
- break;
- }
- /* set-up flash location */
- /* now erase flash */
- printf("Erasing at %lx (sector %d) (start %lx)\n",
- start,0,info->start[0]);
- if ((rc = flash_erase (info, 0, i)) != 0) {
- puts("ERROR ");
- flash_perror(rc);
- return (1);
- }
-
-#endif
- printf("flash erased, programming from 0x%lx 0x%lx Bytes\n",
- (ulong)src, size);
- if ((rc = flash_write ((char *)src, start, size)) != 0) {
- puts("ERROR ");
- flash_perror(rc);
- return (1);
- }
- puts("OK programming done\n");
- return 0;
-}
-
-
-static int
-mpl_prg_image(uchar *ld_addr)
-{
- unsigned long len, checksum;
- uchar *data;
- image_header_t *hdr = &header;
- int rc;
-
- /* Copy header so we can blank CRC field for re-calculation */
- memcpy (&header, (char *)ld_addr, sizeof(image_header_t));
- if (ntohl(hdr->ih_magic) != IH_MAGIC) {
- puts("Bad Magic Number\n");
- return 1;
- }
- print_image_hdr(hdr);
- if (hdr->ih_os != IH_OS_U_BOOT) {
- puts("No U-Boot Image\n");
- return 1;
- }
- if (hdr->ih_type != IH_TYPE_FIRMWARE) {
- puts("No Firmware Image\n");
- return 1;
- }
- data = (uchar *)&header;
- len = sizeof(image_header_t);
- checksum = ntohl(hdr->ih_hcrc);
- hdr->ih_hcrc = 0;
- if (crc32 (0, (uchar *)data, len) != checksum) {
- puts("Bad Header Checksum\n");
- return 1;
- }
- data = ld_addr + sizeof(image_header_t);
- len = ntohl(hdr->ih_size);
- puts("Verifying Checksum ... ");
- if (crc32 (0, (uchar *)data, len) != ntohl(hdr->ih_dcrc)) {
- puts("Bad Data CRC\n");
- return 1;
- }
- puts("OK\n");
-
- if (hdr->ih_comp != IH_COMP_NONE) {
- uchar *buf;
- /* reserve space for uncompressed image */
- if ((buf = malloc(IMAGE_SIZE)) == NULL) {
- puts("Insufficient space for decompression\n");
- return 1;
- }
-
- switch (hdr->ih_comp) {
- case IH_COMP_GZIP:
- puts("Uncompressing (GZIP) ... ");
- rc = gunzip ((void *)(buf), IMAGE_SIZE, data, &len);
- if (rc != 0) {
- puts("GUNZIP ERROR\n");
- free(buf);
- return 1;
- }
- puts("OK\n");
- break;
-#ifdef CONFIG_BZIP2
- case IH_COMP_BZIP2:
- puts("Uncompressing (BZIP2) ... ");
- {
- uint retlen = IMAGE_SIZE;
- rc = BZ2_bzBuffToBuffDecompress ((char *)(buf), &retlen,
- (char *)data, len, 0, 0);
- len = retlen;
- }
- if (rc != BZ_OK) {
- printf ("BUNZIP2 ERROR: %d\n", rc);
- free(buf);
- return 1;
- }
- puts("OK\n");
- break;
-#endif
- default:
- printf ("Unimplemented compression type %d\n", hdr->ih_comp);
- free(buf);
- return 1;
- }
-
- rc = mpl_prg(buf, len);
- free(buf);
- } else {
- rc = mpl_prg(data, len);
- }
-
- return(rc);
-}
-
-#if !defined(CONFIG_PATI)
-void get_backup_values(backup_t *buf)
-{
- i2c_read(CFG_DEF_EEPROM_ADDR, I2C_BACKUP_ADDR,2,(void *)buf,sizeof(backup_t));
-}
-
-void set_backup_values(int overwrite)
-{
- backup_t back;
- int i;
-
- get_backup_values(&back);
- if(!overwrite) {
- if(strncmp(back.signature,"MPL\0",4)==0) {
- puts("Not possible to write Backup\n");
- return;
- }
- }
- memcpy(back.signature,"MPL\0",4);
- i = getenv_r("serial#",back.serial_name,16);
- if(i < 0) {
- puts("Not possible to write Backup\n");
- return;
- }
- back.serial_name[16]=0;
- i = getenv_r("ethaddr",back.eth_addr,20);
- if(i < 0) {
- puts("Not possible to write Backup\n");
- return;
- }
- back.eth_addr[20]=0;
- i2c_write(CFG_DEF_EEPROM_ADDR, I2C_BACKUP_ADDR,2,(void *)&back,sizeof(backup_t));
-}
-
-void clear_env_values(void)
-{
- backup_t back;
- unsigned char env_crc[4];
-
- memset(&back,0xff,sizeof(backup_t));
- memset(env_crc,0x00,4);
- i2c_write(CFG_DEF_EEPROM_ADDR,I2C_BACKUP_ADDR,2,(void *)&back,sizeof(backup_t));
- i2c_write(CFG_DEF_EEPROM_ADDR,CFG_ENV_OFFSET,2,(void *)env_crc,4);
-}
-
-/*
- * check crc of "older" environment
- */
-int check_env_old_size(ulong oldsize)
-{
- ulong crc, len, new;
- unsigned off;
- uchar buf[64];
-
- /* read old CRC */
- eeprom_read (CFG_DEF_EEPROM_ADDR,
- CFG_ENV_OFFSET,
- (uchar *)&crc, sizeof(ulong));
-
- new = 0;
- len = oldsize;
- off = sizeof(long);
- len = oldsize-off;
- while (len > 0) {
- int n = (len > sizeof(buf)) ? sizeof(buf) : len;
-
- eeprom_read (CFG_DEF_EEPROM_ADDR, CFG_ENV_OFFSET+off, buf, n);
- new = crc32 (new, buf, n);
- len -= n;
- off += n;
- }
-
- return (crc == new);
-}
-
-static ulong oldsizes[] = {
- 0x200,
- 0x800,
- 0
-};
-
-void copy_old_env(ulong size)
-{
- uchar name_buf[64];
- uchar value_buf[0x800];
- uchar c;
- ulong len;
- unsigned off;
- uchar *name, *value;
-
- name=&name_buf[0];
- value=&value_buf[0];
- len=size;
- off = sizeof(long);
- while (len > off) {
- eeprom_read (CFG_DEF_EEPROM_ADDR, CFG_ENV_OFFSET+off, &c, 1);
- if(c != '=') {
- *name++=c;
- off++;
- }
- else {
- *name++='\0';
- off++;
- do {
- eeprom_read (CFG_DEF_EEPROM_ADDR, CFG_ENV_OFFSET+off, &c, 1);
- *value++=c;
- off++;
- if(c == '\0')
- break;
- } while(len > off);
- name=&name_buf[0];
- value=&value_buf[0];
- if(strncmp((char *)name,"baudrate",8)!=0) {
- setenv((char *)name,(char *)value);
- }
-
- }
- }
-}
-
-
-void check_env(void)
-{
- char *s;
- int i=0;
- char buf[32];
- backup_t back;
-
- s=getenv("serial#");
- if(!s) {
- while(oldsizes[i]) {
- if(check_env_old_size(oldsizes[i]))
- break;
- i++;
- }
- if(!oldsizes[i]) {
- /* no old environment has been found */
- get_backup_values (&back);
- if (strncmp (back.signature, "MPL\0", 4) == 0) {
- sprintf (buf, "%s", back.serial_name);
- setenv ("serial#", buf);
- sprintf (buf, "%s", back.eth_addr);
- setenv ("ethaddr", buf);
- printf ("INFO: serial# and ethaddr recovered, use saveenv\n");
- return;
- }
- }
- else {
- copy_old_env(oldsizes[i]);
- puts("INFO: old environment ajusted, use saveenv\n");
- }
- }
- else {
- /* check if back up is set */
- get_backup_values(&back);
- if(strncmp(back.signature,"MPL\0",4)!=0) {
- set_backup_values(0);
- }
- }
-}
-
-
-extern device_t *stdio_devices[];
-extern char *stdio_names[];
-
-void show_stdio_dev(void)
-{
- /* Print information */
- puts("In: ");
- if (stdio_devices[stdin] == NULL) {
- puts("No input devices available!\n");
- } else {
- printf ("%s\n", stdio_devices[stdin]->name);
- }
-
- puts("Out: ");
- if (stdio_devices[stdout] == NULL) {
- puts("No output devices available!\n");
- } else {
- printf ("%s\n", stdio_devices[stdout]->name);
- }
-
- puts("Err: ");
- if (stdio_devices[stderr] == NULL) {
- puts("No error devices available!\n");
- } else {
- printf ("%s\n", stdio_devices[stderr]->name);
- }
-}
-
-#endif /* #if !defined(CONFIG_PATI) */
-
-int do_mplcommon(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- ulong size,src,ld_addr;
- int result;
-#if !defined(CONFIG_PATI)
- backup_t back;
- src = MULTI_PURPOSE_SOCKET_ADDR;
- size = IMAGE_SIZE;
-#endif
-
- if (strcmp(argv[1], "flash") == 0)
- {
-#if (CONFIG_COMMANDS & CFG_CMD_FDC)
- if (strcmp(argv[2], "floppy") == 0) {
- char *local_args[3];
- extern int do_fdcboot (cmd_tbl_t *, int, int, char *[]);
- puts("\nupdating bootloader image from floppy\n");
- local_args[0] = argv[0];
- if(argc==4) {
- local_args[1] = argv[3];
- local_args[2] = NULL;
- ld_addr=simple_strtoul(argv[3], NULL, 16);
- result=do_fdcboot(cmdtp, 0, 2, local_args);
- }
- else {
- local_args[1] = NULL;
- ld_addr=CFG_LOAD_ADDR;
- result=do_fdcboot(cmdtp, 0, 1, local_args);
- }
- result=mpl_prg_image((uchar *)ld_addr);
- return result;
- }
-#endif /* (CONFIG_COMMANDS & CFG_CMD_FDC) */
- if (strcmp(argv[2], "mem") == 0) {
- if(argc==4) {
- ld_addr=simple_strtoul(argv[3], NULL, 16);
- }
- else {
- ld_addr=load_addr;
- }
- printf ("\nupdating bootloader image from memory at %lX\n",ld_addr);
- result=mpl_prg_image((uchar *)ld_addr);
- return result;
- }
-#if !defined(CONFIG_PATI)
- if (strcmp(argv[2], "mps") == 0) {
- puts("\nupdating bootloader image from MPS\n");
- result=mpl_prg((uchar *)src,size);
- return result;
- }
-#endif /* #if !defined(CONFIG_PATI) */
- }
- if (strcmp(argv[1], "mem") == 0)
- {
- result=0;
- if(argc==3)
- {
- result = (int)simple_strtol(argv[2], NULL, 16);
- }
- src=(unsigned long)&result;
- src-=CFG_MEMTEST_START;
- src-=(100*1024); /* - 100k */
- src&=0xfff00000;
- size=0;
- do {
- size++;
- printf("\n\nPass %ld\n",size);
- mem_test(CFG_MEMTEST_START,src,1);
- if(ctrlc())
- break;
- if(result>0)
- result--;
-
- }while(result);
- return 0;
- }
-#if !defined(CONFIG_PATI)
- if (strcmp(argv[1], "clearenvvalues") == 0)
- {
- if (strcmp(argv[2], "yes") == 0)
- {
- clear_env_values();
- return 0;
- }
- }
- if (strcmp(argv[1], "getback") == 0) {
- get_backup_values(&back);
- back.signature[3]=0;
- back.serial_name[16]=0;
- back.eth_addr[20]=0;
- printf("GetBackUp: signature: %s\n",back.signature);
- printf(" serial#: %s\n",back.serial_name);
- printf(" ethaddr: %s\n",back.eth_addr);
- return 0;
- }
- if (strcmp(argv[1], "setback") == 0) {
- set_backup_values(1);
- return 0;
- }
-#endif
- printf("Usage:\n%s\n", cmdtp->usage);
- return 1;
-}
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_DOC)
-extern void doc_probe(ulong physadr);
-void doc_init (void)
-{
- doc_probe(MULTI_PURPOSE_SOCKET_ADDR);
-}
-#endif
-
-
-#ifdef CONFIG_VIDEO
-/******************************************************
- * Routines to display the Board information
- * to the screen (since the VGA will be initialized as last,
- * we must resend the infos)
- */
-
-#ifdef CONFIG_CONSOLE_EXTRA_INFO
-extern GraphicDevice ctfb;
-extern int get_boot_mode(void);
-
-void video_get_info_str (int line_number, char *info)
-{
- /* init video info strings for graphic console */
- PPC405_SYS_INFO sys_info;
- char rev;
- int i,boot;
- unsigned long pvr;
- char buf[64];
- char tmp[16];
- char cpustr[16];
- char *s, *e, bc;
- switch (line_number)
- {
- case 2:
- /* CPU and board infos */
- pvr=get_pvr();
- get_sys_info (&sys_info);
- switch (pvr) {
- case PVR_405GP_RB: rev='B'; break;
- case PVR_405GP_RC: rev='C'; break;
- case PVR_405GP_RD: rev='D'; break;
- case PVR_405GP_RE: rev='E'; break;
- case PVR_405GPR_RB: rev='B'; break;
- default: rev='?'; break;
- }
- if(pvr==PVR_405GPR_RB)
- sprintf(cpustr,"PPC405GPr %c",rev);
- else
- sprintf(cpustr,"PPC405GP %c",rev);
- /* Board info */
- i=0;
- s=getenv ("serial#");
-#ifdef CONFIG_PIP405
- if (!s || strncmp (s, "PIP405", 6)) {
- sprintf(buf,"### No HW ID - assuming PIP405");
- }
-#endif
-#ifdef CONFIG_MIP405
- if (!s || strncmp (s, "MIP405", 6)) {
- sprintf(buf,"### No HW ID - assuming MIP405");
- }
-#endif
- else {
- for (e = s; *e; ++e) {
- if (*e == ' ')
- break;
- }
- for (; s < e; ++s) {
- if (*s == '_') {
- ++s;
- break;
- }
- buf[i++]=*s;
- }
- sprintf(&buf[i]," SN ");
- i+=4;
- for (; s < e; ++s) {
- buf[i++]=*s;
- }
- buf[i++]=0;
- }
- sprintf (info," %s %s %s MHz (%lu/%lu/%lu MHz)",
- buf, cpustr,
- strmhz (tmp, gd->cpu_clk), sys_info.freqPLB / 1000000,
- sys_info.freqPLB / sys_info.pllOpbDiv / 1000000,
- sys_info.freqPLB / sys_info.pllExtBusDiv / 1000000);
- return;
- case 3:
- /* Memory Info */
- boot = get_boot_mode();
- bc = in8 (CONFIG_PORT_ADDR);
- sprintf(info, " %luMB RAM, %luMB Flash Cfg 0x%02X %s %s",
- gd->bd->bi_memsize / 0x100000,
- gd->bd->bi_flashsize / 0x100000,
- bc,
- (boot & BOOT_MPS) ? "MPS boot" : "Flash boot",
- ctfb.modeIdent);
- return;
- case 1:
- sprintf (buf, "%s",CONFIG_IDENT_STRING);
- sprintf (info, " %s", &buf[1]);
- return;
- }
- /* no more info lines */
- *info = 0;
- return;
-}
-#endif /* CONFIG_CONSOLE_EXTRA_INFO */
-
-#endif /* CONFIG_VIDEO */
diff --git a/board/mpl/common/common_util.h b/board/mpl/common/common_util.h
deleted file mode 100644
index 8f2ec03f6e..0000000000
--- a/board/mpl/common/common_util.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * (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 _COMMON_UTIL_H_
-#define _COMMON_UTIL_H_
-
-typedef struct {
- char signature[4];
- char serial_name[17]; /* "MIP405_1000xxxxx" */
- char eth_addr[21]; /* "00:60:C2:0a:00:00" */
-} backup_t;
-
-void get_backup_values(backup_t *buf);
-
-#if defined(CONFIG_PIP405) || defined(CONFIG_MIP405)
-#define BOOT_MPS 0x01
-#define BOOT_PCI 0x02
-#endif
-
-void show_stdio_dev(void);
-void check_env(void);
-#if (CONFIG_COMMANDS & CFG_CMD_DOC)
-void doc_init (void);
-#endif
-
-#endif /* _COMMON_UTIL_H_ */
diff --git a/board/mpl/common/flash.c b/board/mpl/common/flash.c
deleted file mode 100644
index fd430083e2..0000000000
--- a/board/mpl/common/flash.c
+++ /dev/null
@@ -1,882 +0,0 @@
-/*
- * (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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-/*
- * Modified 3/7/2001
- * - adapted for pip405, Denis Peter, MPL AG Switzerland
- * TODO:
- * clean-up
- */
-
-#include <common.h>
-
-#if !defined(CONFIG_PATI)
-#include <ppc4xx.h>
-#include <asm/processor.h>
-#include "common_util.h"
-#if defined(CONFIG_MIP405)
-#include "../mip405/mip405.h"
-#endif
-#if defined(CONFIG_PIP405)
-#include "../pip405/pip405.h"
-#endif
-#include <405gp_pci.h>
-#else /* defined(CONFIG_PATI) */
-#include <mpc5xx.h>
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-void unlock_intel_sectors(flash_info_t *info,ulong addr,ulong cnt);
-
-#define ADDR0 0x5555
-#define ADDR1 0x2aaa
-#define FLASH_WORD_SIZE unsigned short
-
-#define FALSE 0
-#define TRUE 1
-
-#if !defined(CONFIG_PATI)
-
-/*-----------------------------------------------------------------------
- * Some CS switching routines:
- *
- * On PIP/MIP405 we have 3 (4) possible boot mode
- *
- * - Boot from Flash (Flash CS = CS0, MPS CS = CS1)
- * - Boot from MPS (Flash CS = CS1, MPS CS = CS0)
- * - Boot from PCI with Flash map (Flash CS = CS0, MPS CS = CS1)
- * - Boot from PCI with MPS map (Flash CS = CS1, MPS CS = CS0)
- * The flash init is the first board specific routine which is called
- * after code relocation (running from SDRAM)
- * The first thing we do is to map the Flash CS to the Flash area and
- * the MPS CS to the MPS area. Since the flash size is unknown at this
- * point, we use the max flash size and the lowest flash address as base.
- *
- * After flash detection we adjust the size of the CS area accordingly.
- * The board_init_r will fill in wrong values in the board init structure,
- * but this will be fixed in the misc_init_r routine:
- * bd->bi_flashstart=0-flash_info[0].size
- * bd->bi_flashsize=flash_info[0].size-CFG_MONITOR_LEN
- * bd->bi_flashoffset=0
- *
- */
-int get_boot_mode(void)
-{
- unsigned long pbcr;
- int res = 0;
- pbcr = mfdcr (strap);
- if ((pbcr & PSR_ROM_WIDTH_MASK) == 0)
- /* boot via MPS or MPS mapping */
- res = BOOT_MPS;
- if(pbcr & PSR_ROM_LOC)
- /* boot via PCI.. */
- res |= BOOT_PCI;
- return res;
-}
-
-/* Map the flash high (in boot area)
- This code can only be executed from SDRAM (after relocation).
-*/
-void setup_cs_reloc(void)
-{
- int mode;
- /* Since we are relocated, we can set-up the CS finaly
- * but first of all, switch off PCI mapping (in case it was a PCI boot) */
- out32r(PMM0MA,0L);
- icache_enable (); /* we are relocated */
- /* get boot mode */
- mode=get_boot_mode();
- /* we map the flash high in every case */
- /* first findout on which cs the flash is */
- if(mode & BOOT_MPS) {
- /* map flash high on CS1 and MPS on CS0 */
- mtdcr (ebccfga, pb0ap);
- mtdcr (ebccfgd, MPS_AP);
- mtdcr (ebccfga, pb0cr);
- mtdcr (ebccfgd, MPS_CR);
- /* we use the default values (max values) for the flash
- * because its real size is not yet known */
- mtdcr (ebccfga, pb1ap);
- mtdcr (ebccfgd, FLASH_AP);
- mtdcr (ebccfga, pb1cr);
- mtdcr (ebccfgd, FLASH_CR_B);
- }
- else {
- /* map flash high on CS0 and MPS on CS1 */
- mtdcr (ebccfga, pb1ap);
- mtdcr (ebccfgd, MPS_AP);
- mtdcr (ebccfga, pb1cr);
- mtdcr (ebccfgd, MPS_CR);
- /* we use the default values (max values) for the flash
- * because its real size is not yet known */
- mtdcr (ebccfga, pb0ap);
- mtdcr (ebccfgd, FLASH_AP);
- mtdcr (ebccfga, pb0cr);
- mtdcr (ebccfgd, FLASH_CR_B);
- }
-}
-
-#endif /* #if !defined(CONFIG_PATI) */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
-
-#if !defined(CONFIG_PATI)
- unsigned long size_b1,flashcr,size_reg;
- int mode;
- extern char version_string;
- char *p=&version_string;
-
- /* Since we are relocated, we can set-up the CS finally */
- setup_cs_reloc();
- /* get and display boot mode */
- mode=get_boot_mode();
- if(mode & BOOT_PCI)
- printf("(PCI Boot %s Map) ",(mode & BOOT_MPS) ?
- "MPS" : "Flash");
- else
- printf("(%s Boot) ",(mode & BOOT_MPS) ?
- "MPS" : "Flash");
-#endif /* #if !defined(CONFIG_PATI) */
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)CFG_MONITOR_BASE, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
- /* protect the bootloader */
- /* Monitor protection ON by default */
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-#if !defined(CONFIG_PATI)
- /* protect reset vector */
- flash_info[0].protect[flash_info[0].sector_count-1] = 1;
- size_b1 = 0 ;
- flash_info[0].size = size_b0;
- /* set up flash cs according to the size */
- size_reg=(flash_info[0].size >>20);
- switch (size_reg) {
- case 0:
- case 1: i=0; break; /* <= 1MB */
- case 2: i=1; break; /* = 2MB */
- case 4: i=2; break; /* = 4MB */
- case 8: i=3; break; /* = 8MB */
- case 16: i=4; break; /* = 16MB */
- case 32: i=5; break; /* = 32MB */
- case 64: i=6; break; /* = 64MB */
- case 128: i=7; break; /*= 128MB */
- default:
- printf("\n #### ERROR, wrong size %ld MByte reset board #####\n",size_reg);
- while(1);
- }
- if(mode & BOOT_MPS) {
- /* flash is on CS1 */
- mtdcr(ebccfga, pb1cr);
- flashcr = mfdcr (ebccfgd);
- /* we map the flash high in every case */
- flashcr&=0x0001FFFF; /* mask out address bits */
- flashcr|= ((0-flash_info[0].size) & 0xFFF00000); /* start addr */
- flashcr|= (i << 17); /* size addr */
- mtdcr(ebccfga, pb1cr);
- mtdcr(ebccfgd, flashcr);
- }
- else {
- /* flash is on CS0 */
- mtdcr(ebccfga, pb0cr);
- flashcr = mfdcr (ebccfgd);
- /* we map the flash high in every case */
- flashcr&=0x0001FFFF; /* mask out address bits */
- flashcr|= ((0-flash_info[0].size) & 0xFFF00000); /* start addr */
- flashcr|= (i << 17); /* size addr */
- mtdcr(ebccfga, pb0cr);
- mtdcr(ebccfgd, flashcr);
- }
-#if 0
- /* enable this (PIP405/MIP405 only) if you want to test if
- the relocation has be done ok.
- This will disable both Chipselects */
- mtdcr (ebccfga, pb0cr);
- mtdcr (ebccfgd, 0L);
- mtdcr (ebccfga, pb1cr);
- mtdcr (ebccfgd, 0L);
- printf("CS0 & CS1 switched off for test\n");
-#endif
- /* patch version_string */
- for(i=0;i<0x100;i++) {
- if(*p=='\n') {
- *p=0;
- break;
- }
- p++;
- }
-#else /* #if !defined(CONFIG_PATI) */
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
-#endif /* #if !defined(CONFIG_PATI) */
- return (size_b0);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_INTEL: printf ("Intel "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040: printf ("AM29F040 (512 Kbit, uniform sector size)\n");
- break;
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_SST800A: printf ("SST39LF/VF800 (8 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST160A: printf ("SST39LF/VF160 (16 Mbit, uniform sector size)\n");
- break;
- case FLASH_INTEL320T: printf ("TE28F320C3 (32 Mbit, top sector size)\n");
- break;
- case FLASH_AM640U: printf ("AM29LV640U (64 Mbit, uniform sector size)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++) {
- if (*flash++ != 0xffffffff) {
- erased = 0;
- break;
- }
- }
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
-
-*/
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- FLASH_WORD_SIZE value;
- ulong base;
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00900090;
-
- value = addr2[0];
- /* printf("flash_get_size value: %x\n",value); */
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FLASH_WORD_SIZE)FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (FLASH_WORD_SIZE)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- case (FLASH_WORD_SIZE)SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
- value = addr2[1]; /* device ID */
- /* printf("Device value %x\n",value); */
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_ID_F040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 ko */
- break;
- case (FLASH_WORD_SIZE)AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
- case (FLASH_WORD_SIZE)AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
- case (FLASH_WORD_SIZE)AMD_ID_LV640U:
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#if 0 /* enable when device IDs are available */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#endif
- case (FLASH_WORD_SIZE)SST_ID_xF800A:
- info->flash_id += FLASH_SST800A;
- info->sector_count = 16;
- info->size = 0x00100000;
- break; /* => 1 MB */
- case (FLASH_WORD_SIZE)INTEL_ID_28F320C3T:
- info->flash_id += FLASH_INTEL320T;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
-
- case (FLASH_WORD_SIZE)SST_ID_xF160A:
- info->flash_id += FLASH_SST160A;
- info->sector_count = 32;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
- /* base address calculation */
- base=0-info->size;
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- (info->flash_id == FLASH_AM040) ||
- (info->flash_id == FLASH_AM640U)){
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- }
- else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- if(info->sector_count==71) {
-
- info->start[i--] = base + info->size - 0x00002000;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000A000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x0000E000;
- for (; i >= 0; i--)
- info->start[i] = base + i * 0x000010000;
- }
- else {
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--)
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (FLASH_WORD_SIZE *)info->start[0];
- *addr2 = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
- }
- return (info->size);
-}
-
-
-int wait_for_DQ7(flash_info_t *info, int sect)
-{
- ulong start, now, last;
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[sect]);
-
- start = get_timer (0);
- last = start;
- while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return ERR_TIMOUT;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- return ERR_OK;
-}
-
-int intel_wait_for_DQ7(flash_info_t *info, int sect)
-{
- ulong start, now, last, status;
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[sect]);
-
- start = get_timer (0);
- last = start;
- while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return ERR_TIMOUT;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- status = addr[0] & (FLASH_WORD_SIZE)0x00280028;
- /* clear status register */
- addr[0] = (FLASH_WORD_SIZE)0x00500050;
- /* check status for block erase fail and VPP low */
- return (status == 0 ? ERR_OK : ERR_NOT_ERASED);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
- volatile FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- int i, rcode = 0;
-
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (FLASH_WORD_SIZE *)(info->start[sect]);
- /* printf("Erasing sector %p\n", addr2); */ /* CLH */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (FLASH_WORD_SIZE)0x00500050; /* block erase */
- for (i=0; i<50; i++)
- udelay(1000); /* wait 1 ms */
- rcode |= wait_for_DQ7(info, sect);
- }
- else {
- if((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL){
- addr2[0] = (FLASH_WORD_SIZE)0x00600060; /* unlock sector */
- addr2[0] = (FLASH_WORD_SIZE)0x00D000D0; /* sector erase */
- intel_wait_for_DQ7(info, sect);
- addr2[0] = (FLASH_WORD_SIZE)0x00200020; /* sector erase */
- addr2[0] = (FLASH_WORD_SIZE)0x00D000D0; /* sector erase */
- rcode |= intel_wait_for_DQ7(info, sect);
- }
- else {
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (FLASH_WORD_SIZE)0x00300030; /* sector erase */
- rcode |= wait_for_DQ7(info, sect);
- }
- }
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- /* wait_for_DQ7(info, sect); */
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
-#if 0
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
- wait_for_DQ7(info, l_sect);
-
-DONE:
-#endif
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- if (!rcode)
- printf (" done\n");
-
- return rcode;
-}
-
-
-void unlock_intel_sectors(flash_info_t *info,ulong addr,ulong cnt)
-{
- int i;
- volatile FLASH_WORD_SIZE *addr2;
- long c;
- c= (long)cnt;
- for(i=info->sector_count-1;i>0;i--)
- {
- if(addr>=info->start[i])
- break;
- }
- do {
- addr2 = (FLASH_WORD_SIZE *)(info->start[i]);
- addr2[0] = (FLASH_WORD_SIZE)0x00600060; /* unlock sector setup */
- addr2[0] = (FLASH_WORD_SIZE)0x00D000D0; /* unlock sector */
- intel_wait_for_DQ7(info, i);
- i++;
- c-=(info->start[i]-info->start[i-1]);
- }while(c>0);
-}
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- if((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL){
- unlock_intel_sectors(info,addr,cnt);
- }
- wp = (addr & ~3); /* get lower word aligned address */
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- if((wp % 0x10000)==0)
- printf("."); /* show Progress */
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- rc=write_word(info, wp, data);
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static FLASH_WORD_SIZE *read_val = (FLASH_WORD_SIZE *)0x200000;
-
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)(info->start[0]);
- volatile FLASH_WORD_SIZE *dest2 = (FLASH_WORD_SIZE *)dest;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
- ulong start;
- int flag;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile FLASH_WORD_SIZE *)dest) &
- (FLASH_WORD_SIZE)data) != (FLASH_WORD_SIZE)data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
- for (i=0; i<4/sizeof(FLASH_WORD_SIZE); i++)
- {
- if((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL){
- /* intel style writting */
- dest2[i] = (FLASH_WORD_SIZE)0x00500050;
- dest2[i] = (FLASH_WORD_SIZE)0x00400040;
- *read_val++ = data2[i];
- dest2[i] = data2[i];
- if (flag)
- enable_interrupts();
- /* data polling for D7 */
- start = get_timer (0);
- udelay(10);
- while ((dest2[i] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080)
- {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT)
- return (1);
- }
- dest2[i] = (FLASH_WORD_SIZE)0x00FF00FF; /* return to read mode */
- udelay(10);
- dest2[i] = (FLASH_WORD_SIZE)0x00FF00FF; /* return to read mode */
- if(dest2[i]!=data2[i])
- printf("Error at %p 0x%04X != 0x%04X\n",&dest2[i],dest2[i],data2[i]);
- }
- else {
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00A000A0;
- dest2[i] = data2[i];
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (FLASH_WORD_SIZE)0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/mpl/common/isa.c b/board/mpl/common/isa.c
deleted file mode 100644
index 51b2773c71..0000000000
--- a/board/mpl/common/isa.c
+++ /dev/null
@@ -1,494 +0,0 @@
-/*
- * (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
- *
- *
- * TODO: clean-up
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <devices.h>
-#include "isa.h"
-#include "piix4_pci.h"
-#include "kbd.h"
-#include "video.h"
-
-
-#undef ISA_DEBUG
-
-#ifdef ISA_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#if defined(CONFIG_PIP405)
-
-extern int drv_isa_kbd_init (void);
-
-/* fdc (logical device 0) */
-const SIO_LOGDEV_TABLE sio_fdc[] = {
- {0x60, 3}, /* set IO to FDPort (3F0) */
- {0x61, 0xF0}, /* set IO to FDPort (3F0) */
- {0x70, 06}, /* set IRQ 6 for FDPort */
- {0x74, 02}, /* set DMA 2 for FDPort */
- {0xF0, 0x05}, /* set to PS2 type */
- {0xF1, 0x00}, /* default value */
- {0x30, 1}, /* and activate the device */
- {0xFF, 0} /* end of device table */
-};
-/* paralell port (logical device 3) */
-const SIO_LOGDEV_TABLE sio_pport[] = {
- {0x60, 3}, /* set IO to PPort (378) */
- {0x61, 0x78}, /* set IO to PPort (378) */
- {0x70, 07}, /* set IRQ 7 for PPort */
- {0xF1, 00}, /* set PPort to normal */
- {0x30, 1}, /* and activate the device */
- {0xFF, 0} /* end of device table */
-};
-/* paralell port (logical device 3) Floppy assigned to lpt */
-const SIO_LOGDEV_TABLE sio_pport_fdc[] = {
- {0x60, 3}, /* set IO to PPort (378) */
- {0x61, 0x78}, /* set IO to PPort (378) */
- {0x70, 07}, /* set IRQ 7 for PPort */
- {0xF1, 02}, /* set PPort to Floppy */
- {0x30, 1}, /* and activate the device */
- {0xFF, 0} /* end of device table */
-};
-/* uart 1 (logical device 4) */
-const SIO_LOGDEV_TABLE sio_com1[] = {
- {0x60, 3}, /* set IO to COM1 (3F8) */
- {0x61, 0xF8}, /* set IO to COM1 (3F8) */
- {0x70, 04}, /* set IRQ 4 for COM1 */
- {0x30, 1}, /* and activate the device */
- {0xFF, 0} /* end of device table */
-};
-/* uart 2 (logical device 5) */
-const SIO_LOGDEV_TABLE sio_com2[] = {
- {0x60, 2}, /* set IO to COM2 (2F8) */
- {0x61, 0xF8}, /* set IO to COM2 (2F8) */
- {0x70, 03}, /* set IRQ 3 for COM2 */
- {0x30, 1}, /* and activate the device */
- {0xFF, 0} /* end of device table */
-};
-
-/* keyboard controller (logical device 7) */
-const SIO_LOGDEV_TABLE sio_keyboard[] = {
- {0x70, 1}, /* set IRQ 1 for keyboard */
- {0x72, 12}, /* set IRQ 12 for mouse */
- {0xF0, 0}, /* disable Port92 (this is a PowerPC!!) */
- {0x30, 1}, /* and activate the device */
- {0xFF, 0} /* end of device table */
-};
-
-
-/*******************************************************************************
-* Config SuperIO FDC37C672
-********************************************************************************/
-unsigned char open_cfg_super_IO(int address)
-{
- out8(CFG_ISA_IO_BASE_ADDRESS | address,0x55); /* open config */
- out8(CFG_ISA_IO_BASE_ADDRESS | address,0x20); /* set address to DEV ID */
- if(in8(CFG_ISA_IO_BASE_ADDRESS | address | 0x1)==0x40) /* ok Device ID is correct */
- return TRUE;
- else
- return FALSE;
-}
-
-void close_cfg_super_IO(int address)
-{
- out8(CFG_ISA_IO_BASE_ADDRESS | address,0xAA); /* close config */
-}
-
-
-unsigned char read_cfg_super_IO(int address, unsigned char function, unsigned char regaddr)
-{
- /* assuming config reg is open */
- out8(CFG_ISA_IO_BASE_ADDRESS | address,0x7); /* points to the function reg */
- out8(CFG_ISA_IO_BASE_ADDRESS | address | 1,function); /* set the function no */
- out8(CFG_ISA_IO_BASE_ADDRESS | address,regaddr); /* sets the address in the function */
- return in8(CFG_ISA_IO_BASE_ADDRESS | address | 1);
-}
-
-void write_cfg_super_IO(int address, unsigned char function, unsigned char regaddr, unsigned char data)
-{
- /* assuming config reg is open */
- out8(CFG_ISA_IO_BASE_ADDRESS | address,0x7); /* points to the function reg */
- out8(CFG_ISA_IO_BASE_ADDRESS | address | 1,function); /* set the function no */
- out8(CFG_ISA_IO_BASE_ADDRESS | address,regaddr); /* sets the address in the function */
- out8(CFG_ISA_IO_BASE_ADDRESS | address | 1,data); /* writes the data */
-}
-
-void isa_write_table(SIO_LOGDEV_TABLE *ldt,unsigned char ldev)
-{
- while (ldt->index != 0xFF) {
- write_cfg_super_IO(SIO_CFG_PORT, ldev, ldt->index, ldt->val);
- ldt++;
- } /* endwhile */
-}
-
-void isa_sio_loadtable(void)
-{
- char *s = getenv("floppy");
- /* setup Floppy device 0*/
- isa_write_table((SIO_LOGDEV_TABLE *)&sio_fdc,0);
- /* setup parallel port device 3 */
- if(s && !strncmp(s, "lpt", 3)) {
- printf("SIO: Floppy assigned to LPT\n");
- /* floppy is assigned to the LPT */
- isa_write_table((SIO_LOGDEV_TABLE *)&sio_pport_fdc,3);
- }
- else {
- /*printf("Floppy assigned to internal port\n");*/
- isa_write_table((SIO_LOGDEV_TABLE *)&sio_pport,3);
- }
- /* setup Com1 port device 4 */
- isa_write_table((SIO_LOGDEV_TABLE *)&sio_com1,4);
- /* setup Com2 port device 5 */
- isa_write_table((SIO_LOGDEV_TABLE *)&sio_com2,5);
- /* setup keyboards device 7 */
- isa_write_table((SIO_LOGDEV_TABLE *)&sio_keyboard,7);
-}
-
-
-void isa_sio_setup(void)
-{
- if(open_cfg_super_IO(SIO_CFG_PORT)==TRUE)
- {
- isa_sio_loadtable();
- close_cfg_super_IO(0x3F0);
- }
-}
-#endif
-
-/******************************************************************************
- * IRQ Controller
- * we use the Vector mode
- */
-
-struct isa_irq_action {
- interrupt_handler_t *handler;
- void *arg;
- int count;
-};
-
-static struct isa_irq_action isa_irqs[16];
-
-
-/*
- * This contains the irq mask for both 8259A irq controllers,
- */
-static unsigned int cached_irq_mask = 0xfff9;
-
-#define cached_imr1 (unsigned char)cached_irq_mask
-#define cached_imr2 (unsigned char)(cached_irq_mask>>8)
-#define IMR_1 CFG_ISA_IO_BASE_ADDRESS + PIIX4_ISA_INT1_OCW1
-#define IMR_2 CFG_ISA_IO_BASE_ADDRESS + PIIX4_ISA_INT2_OCW1
-#define ICW1_1 CFG_ISA_IO_BASE_ADDRESS + PIIX4_ISA_INT1_ICW1
-#define ICW1_2 CFG_ISA_IO_BASE_ADDRESS + PIIX4_ISA_INT2_ICW1
-#define ICW2_1 CFG_ISA_IO_BASE_ADDRESS + PIIX4_ISA_INT1_ICW2
-#define ICW2_2 CFG_ISA_IO_BASE_ADDRESS + PIIX4_ISA_INT2_ICW2
-#define ICW3_1 ICW2_1
-#define ICW3_2 ICW2_2
-#define ICW4_1 ICW2_1
-#define ICW4_2 ICW2_2
-#define ISR_1 ICW1_1
-#define ISR_2 ICW1_2
-
-
-void disable_8259A_irq(unsigned int irq)
-{
- unsigned int mask = 1 << irq;
-
- cached_irq_mask |= mask;
- if (irq & 8)
- out8(IMR_2,cached_imr2);
- else
- out8(IMR_1,cached_imr1);
-}
-
-void enable_8259A_irq(unsigned int irq)
-{
- unsigned int mask = ~(1 << irq);
-
- cached_irq_mask &= mask;
- if (irq & 8)
- out8(IMR_2,cached_imr2);
- else
- out8(IMR_1,cached_imr1);
-}
-/*
-int i8259A_irq_pending(unsigned int irq)
-{
- unsigned int mask = 1<<irq;
- int ret;
-
- if (irq < 8)
- ret = inb(0x20) & mask;
- else
- ret = inb(0xA0) & (mask >> 8);
- spin_unlock_irqrestore(&i8259A_lock, flags);
-
- return ret;
-}
-*/
-
-/*
- * This function assumes to be called rarely. Switching between
- * 8259A registers is slow.
- */
-int i8259A_irq_real(unsigned int irq)
-{
- int value;
- int irqmask = 1<<irq;
-
- if (irq < 8) {
- out8(ISR_1,0x0B); /* ISR register */
- value = in8(ISR_1) & irqmask;
- out8(ISR_1,0x0A); /* back to the IRR register */
- return value;
- }
- out8(ISR_2,0x0B); /* ISR register */
- value = in8(ISR_2) & (irqmask >> 8);
- out8(ISR_2,0x0A); /* back to the IRR register */
- return value;
-}
-
-/*
- * Careful! The 8259A is a fragile beast, it pretty
- * much _has_ to be done exactly like this (mask it
- * first, _then_ send the EOI, and the order of EOI
- * to the two 8259s is important!
- */
-void mask_and_ack_8259A(unsigned int irq)
-{
- unsigned int irqmask = 1 << irq;
- unsigned int temp_irqmask = cached_irq_mask;
- /*
- * Lightweight spurious IRQ detection. We do not want
- * to overdo spurious IRQ handling - it's usually a sign
- * of hardware problems, so we only do the checks we can
- * do without slowing down good hardware unnecesserily.
- *
- * Note that IRQ7 and IRQ15 (the two spurious IRQs
- * usually resulting from the 8259A-1|2 PICs) occur
- * even if the IRQ is masked in the 8259A. Thus we
- * can check spurious 8259A IRQs without doing the
- * quite slow i8259A_irq_real() call for every IRQ.
- * This does not cover 100% of spurious interrupts,
- * but should be enough to warn the user that there
- * is something bad going on ...
- */
- if (temp_irqmask & irqmask)
- goto spurious_8259A_irq;
- temp_irqmask |= irqmask;
-
-handle_real_irq:
- if (irq & 8) {
- in8(IMR_2); /* DUMMY - (do we need this?) */
- out8(IMR_2,(unsigned char)(temp_irqmask>>8));
- out8(ISR_2,0x60+(irq&7));/* 'Specific EOI' to slave */
- out8(ISR_1,0x62); /* 'Specific EOI' to master-IRQ2 */
- out8(IMR_2,cached_imr2); /* turn it on again */
- } else {
- in8(IMR_1); /* DUMMY - (do we need this?) */
- out8(IMR_1,(unsigned char)temp_irqmask);
- out8(ISR_1,0x60+irq); /* 'Specific EOI' to master */
- out8(IMR_1,cached_imr1); /* turn it on again */
- }
-
- return;
-
-spurious_8259A_irq:
- /*
- * this is the slow path - should happen rarely.
- */
- if (i8259A_irq_real(irq))
- /*
- * oops, the IRQ _is_ in service according to the
- * 8259A - not spurious, go handle it.
- */
- goto handle_real_irq;
-
- {
- static int spurious_irq_mask;
- /*
- * At this point we can be sure the IRQ is spurious,
- * lets ACK and report it. [once per IRQ]
- */
- if (!(spurious_irq_mask & irqmask)) {
- PRINTF("spurious 8259A interrupt: IRQ%d.\n", irq);
- spurious_irq_mask |= irqmask;
- }
- /* irq_err_count++; */
- /*
- * Theoretically we do not have to handle this IRQ,
- * but in Linux this does not cause problems and is
- * simpler for us.
- */
- goto handle_real_irq;
- }
-}
-
-void init_8259A(void)
-{
- out8(IMR_1,0xff); /* mask all of 8259A-1 */
- out8(IMR_2,0xff); /* mask all of 8259A-2 */
-
- out8(ICW1_1,0x11); /* ICW1: select 8259A-1 init */
- out8(ICW2_1,0x20 + 0); /* ICW2: 8259A-1 IR0-7 mapped to 0x20-0x27 */
- out8(ICW3_1,0x04); /* 8259A-1 (the master) has a slave on IR2 */
- out8(ICW4_1,0x01); /* master expects normal EOI */
- out8(ICW1_2,0x11); /* ICW2: select 8259A-2 init */
- out8(ICW2_2,0x20 + 8); /* ICW2: 8259A-2 IR0-7 mapped to 0x28-0x2f */
- out8(ICW3_2,0x02); /* 8259A-2 is a slave on master's IR2 */
- out8(ICW4_2,0x01); /* (slave's support for AEOI in flat mode
- is to be investigated) */
- udelay(10000); /* wait for 8259A to initialize */
- out8(IMR_1,cached_imr1); /* restore master IRQ mask */
- udelay(10000); /* wait for 8259A to initialize */
- out8(IMR_2,cached_imr2); /* restore slave IRQ mask */
-}
-
-
-#define PCI_INT_ACK_ADDR 0xEED00000
-
-int handle_isa_int(void)
-{
- unsigned long irqack;
- unsigned char isr1,isr2,irq;
- /* first we acknokledge the int via the PCI bus */
- irqack=in32(PCI_INT_ACK_ADDR);
- /* now we get the ISRs */
- isr2=in8(ISR_2);
- isr1=in8(ISR_1);
- irq=(unsigned char)irqack;
- irq-=32;
-/* if((irq==7)&&((isr1&0x80)==0)) {
- PRINTF("IRQ7 detected but not in ISR\n");
- }
- else {
-*/ /* we should handle cascaded interrupts here also */
- {
-/* printf("ISA Irq %d\n",irq); */
- isa_irqs[irq].count++;
- if(irq!=2) { /* just swallow the cascade irq 2 */
- if (isa_irqs[irq].handler != NULL)
- (*isa_irqs[irq].handler)(isa_irqs[irq].arg); /* call isr */
- else {
- PRINTF ("bogus interrupt vector 0x%x\n", irq);
- }
- }
- }
- /* issue EOI instruction to clear the IRQ */
- mask_and_ack_8259A(irq);
- return 0;
-}
-
-
-/******************************************************************
- * Install and free an ISA interrupt handler.
- */
-
-void isa_irq_install_handler(int vec, interrupt_handler_t *handler, void *arg)
-{
- if (isa_irqs[vec].handler != NULL) {
- printf ("ISA Interrupt vector %d: handler 0x%x replacing 0x%x\n",
- vec, (uint)handler, (uint)isa_irqs[vec].handler);
- }
- isa_irqs[vec].handler = handler;
- isa_irqs[vec].arg = arg;
- enable_8259A_irq(vec);
- PRINTF ("Install ISA IRQ %d ==> %p, @ %p mask=%04x\n", vec, handler, &isa_irqs[vec].handler,cached_irq_mask);
-
-}
-
-void isa_irq_free_handler(int vec)
-{
- disable_8259A_irq(vec);
- isa_irqs[vec].handler = NULL;
- isa_irqs[vec].arg = NULL;
- PRINTF ("Free ISA IRQ %d mask=%04x\n", vec, cached_irq_mask);
-
-}
-
-/****************************************************************************/
-void isa_init_irq_contr(void)
-{
- int i;
- /* disable all Interrupts */
- /* first write icws controller 1 */
- for(i=0;i<16;i++)
- {
- isa_irqs[i].handler=NULL;
- isa_irqs[i].arg=NULL;
- isa_irqs[i].count=0;
- }
- init_8259A();
- out8(IMR_2,0xFF);
-}
-/*************************************************************************/
-
-void isa_show_irq(void)
-{
- int vec;
-
- printf ("\nISA Interrupt-Information:\n");
- printf ("Nr Routine Arg Count\n");
-
- for (vec=0; vec<16; vec++) {
- if (isa_irqs[vec].handler != NULL) {
- printf ("%02d %08lx %08lx %d\n",
- vec,
- (ulong)isa_irqs[vec].handler,
- (ulong)isa_irqs[vec].arg,
- isa_irqs[vec].count);
- }
- }
-}
-
-int isa_irq_get_count(int vec)
-{
- return(isa_irqs[vec].count);
-}
-
-/******************************************************************
- * Init the ISA bus and devices.
- */
-
-#if defined(CONFIG_PIP405)
-
-int isa_init(void)
-{
- isa_sio_setup();
- isa_init_irq_contr();
- drv_isa_kbd_init();
- return 0;
-}
-#endif
diff --git a/board/mpl/common/isa.h b/board/mpl/common/isa.h
deleted file mode 100644
index 28ed219153..0000000000
--- a/board/mpl/common/isa.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (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 _ISA_H_
-#define _ISA_H_
-/* Super IO */
-#define SIO_CFG_PORT 0x3F0 /* Config Port Address */
-
-#if defined(CONFIG_PIP405)
-/* 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);
-#endif
-
-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);
-void isa_init_irq_contr(void);
-void isa_show_irq(void);
-int isa_irq_get_count(int vec);
-
-
-#endif
diff --git a/board/mpl/common/kbd.c b/board/mpl/common/kbd.c
deleted file mode 100644
index 7724e241d1..0000000000
--- a/board/mpl/common/kbd.c
+++ /dev/null
@@ -1,647 +0,0 @@
-/*
- * (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
- *
- *
- * Source partly derived from:
- * linux/drivers/char/pc_keyb.c
- *
- *
- */
-#include <common.h>
-#include <asm/processor.h>
-#include <devices.h>
-#include "isa.h"
-#include "kbd.h"
-
-
-unsigned char kbd_read_status(void);
-unsigned char kbd_read_input(void);
-void kbd_send_data(unsigned char data);
-void disable_8259A_irq(unsigned int irq);
-void enable_8259A_irq(unsigned int irq);
-
-/* used only by send_data - set by keyboard_interrupt */
-
-
-#undef KBG_DEBUG
-
-#ifdef KBG_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-#define KBD_STAT_KOBF 0x01
-#define KBD_STAT_IBF 0x02
-#define KBD_STAT_SYS 0x04
-#define KBD_STAT_CD 0x08
-#define KBD_STAT_LOCK 0x10
-#define KBD_STAT_MOBF 0x20
-#define KBD_STAT_TI_OUT 0x40
-#define KBD_STAT_PARERR 0x80
-
-#define KBD_INIT_TIMEOUT 1000 /* Timeout in ms for initializing the keyboard */
-#define KBC_TIMEOUT 250 /* Timeout in ms for sending to keyboard controller */
-#define KBD_TIMEOUT 2000 /* Timeout in ms for keyboard command acknowledge */
-/*
- * Keyboard Controller Commands
- */
-
-#define KBD_CCMD_READ_MODE 0x20 /* Read mode bits */
-#define KBD_CCMD_WRITE_MODE 0x60 /* Write mode bits */
-#define KBD_CCMD_GET_VERSION 0xA1 /* Get controller version */
-#define KBD_CCMD_MOUSE_DISABLE 0xA7 /* Disable mouse interface */
-#define KBD_CCMD_MOUSE_ENABLE 0xA8 /* Enable mouse interface */
-#define KBD_CCMD_TEST_MOUSE 0xA9 /* Mouse interface test */
-#define KBD_CCMD_SELF_TEST 0xAA /* Controller self test */
-#define KBD_CCMD_KBD_TEST 0xAB /* Keyboard interface test */
-#define KBD_CCMD_KBD_DISABLE 0xAD /* Keyboard interface disable */
-#define KBD_CCMD_KBD_ENABLE 0xAE /* Keyboard interface enable */
-#define KBD_CCMD_WRITE_AUX_OBUF 0xD3 /* Write to output buffer as if
- initiated by the auxiliary device */
-#define KBD_CCMD_WRITE_MOUSE 0xD4 /* Write the following byte to the mouse */
-
-/*
- * Keyboard Commands
- */
-
-#define KBD_CMD_SET_LEDS 0xED /* Set keyboard leds */
-#define KBD_CMD_SET_RATE 0xF3 /* Set typematic rate */
-#define KBD_CMD_ENABLE 0xF4 /* Enable scanning */
-#define KBD_CMD_DISABLE 0xF5 /* Disable scanning */
-#define KBD_CMD_RESET 0xFF /* Reset */
-
-/*
- * Keyboard Replies
- */
-
-#define KBD_REPLY_POR 0xAA /* Power on reset */
-#define KBD_REPLY_ACK 0xFA /* Command ACK */
-#define KBD_REPLY_RESEND 0xFE /* Command NACK, send the cmd again */
-
-/*
- * Status Register Bits
- */
-
-#define KBD_STAT_OBF 0x01 /* Keyboard output buffer full */
-#define KBD_STAT_IBF 0x02 /* Keyboard input buffer full */
-#define KBD_STAT_SELFTEST 0x04 /* Self test successful */
-#define KBD_STAT_CMD 0x08 /* Last write was a command write (0=data) */
-#define KBD_STAT_UNLOCKED 0x10 /* Zero if keyboard locked */
-#define KBD_STAT_MOUSE_OBF 0x20 /* Mouse output buffer full */
-#define KBD_STAT_GTO 0x40 /* General receive/xmit timeout */
-#define KBD_STAT_PERR 0x80 /* Parity error */
-
-#define AUX_STAT_OBF (KBD_STAT_OBF | KBD_STAT_MOUSE_OBF)
-
-/*
- * Controller Mode Register Bits
- */
-
-#define KBD_MODE_KBD_INT 0x01 /* Keyboard data generate IRQ1 */
-#define KBD_MODE_MOUSE_INT 0x02 /* Mouse data generate IRQ12 */
-#define KBD_MODE_SYS 0x04 /* The system flag (?) */
-#define KBD_MODE_NO_KEYLOCK 0x08 /* The keylock doesn't affect the keyboard if set */
-#define KBD_MODE_DISABLE_KBD 0x10 /* Disable keyboard interface */
-#define KBD_MODE_DISABLE_MOUSE 0x20 /* Disable mouse interface */
-#define KBD_MODE_KCC 0x40 /* Scan code conversion to PC format */
-#define KBD_MODE_RFU 0x80
-
-
-#define KDB_DATA_PORT 0x60
-#define KDB_COMMAND_PORT 0x64
-
-#define LED_SCR 0x01 /* scroll lock led */
-#define LED_CAP 0x04 /* caps lock led */
-#define LED_NUM 0x02 /* num lock led */
-
-#define KBD_BUFFER_LEN 0x20 /* size of the keyboardbuffer */
-
-
-static volatile char kbd_buffer[KBD_BUFFER_LEN];
-static volatile int in_pointer = 0;
-static volatile int out_pointer = 0;
-
-
-static unsigned char num_lock = 0;
-static unsigned char caps_lock = 0;
-static unsigned char scroll_lock = 0;
-static unsigned char shift = 0;
-static unsigned char ctrl = 0;
-static unsigned char alt = 0;
-static unsigned char e0 = 0;
-static unsigned char leds = 0;
-
-#define DEVNAME "kbd"
-
-/* Simple translation table for the keys */
-
-static unsigned char kbd_plain_xlate[] = {
- 0xff,0x1b, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=','\b','\t', /* 0x00 - 0x0f */
- 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']','\r',0xff, 'a', 's', /* 0x10 - 0x1f */
- 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';','\'', '`',0xff,'\\', 'z', 'x', 'c', 'v', /* 0x20 - 0x2f */
- 'b', 'n', 'm', ',', '.', '/',0xff,0xff,0xff, ' ',0xff,0xff,0xff,0xff,0xff,0xff, /* 0x30 - 0x3f */
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff, '7', '8', '9', '-', '4', '5', '6', '+', '1', /* 0x40 - 0x4f */
- '2', '3', '0', '.',0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /* 0x50 - 0x5F */
- '\r',0xff,0xff
- };
-
-static unsigned char kbd_shift_xlate[] = {
- 0xff,0x1b, '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+','\b','\t', /* 0x00 - 0x0f */
- 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}','\r',0xff, 'A', 'S', /* 0x10 - 0x1f */
- 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', '~',0xff, '|', 'Z', 'X', 'C', 'V', /* 0x20 - 0x2f */
- 'B', 'N', 'M', '<', '>', '?',0xff,0xff,0xff, ' ',0xff,0xff,0xff,0xff,0xff,0xff, /* 0x30 - 0x3f */
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff, '7', '8', '9', '-', '4', '5', '6', '+', '1', /* 0x40 - 0x4f */
- '2', '3', '0', '.',0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /* 0x50 - 0x5F */
- '\r',0xff,0xff
- };
-
-static unsigned char kbd_ctrl_xlate[] = {
- 0xff,0x1b, '1',0x00, '3', '4', '5',0x1E, '7', '8', '9', '0',0x1F, '=','\b','\t', /* 0x00 - 0x0f */
- 0x11,0x17,0x05,0x12,0x14,0x18,0x15,0x09,0x0f,0x10,0x1b,0x1d,'\n',0xff,0x01,0x13, /* 0x10 - 0x1f */
- 0x04,0x06,0x08,0x09,0x0a,0x0b,0x0c, ';','\'', '~',0x00,0x1c,0x1a,0x18,0x03,0x16, /* 0x20 - 0x2f */
- 0x02,0x0e,0x0d, '<', '>', '?',0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff, /* 0x30 - 0x3f */
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff, '7', '8', '9', '-', '4', '5', '6', '+', '1', /* 0x40 - 0x4f */
- '2', '3', '0', '.',0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /* 0x50 - 0x5F */
- '\r',0xff,0xff
- };
-
-/******************************************************************
- * Init
- ******************************************************************/
-int isa_kbd_init(void)
-{
- char* result;
- result=kbd_initialize();
- if(result==NULL) {
- PRINTF("AT Keyboard initialized\n");
- irq_install_handler(25, (interrupt_handler_t *)handle_isa_int, NULL);
- isa_irq_install_handler(KBD_INTERRUPT, (interrupt_handler_t *)kbd_interrupt, NULL);
- return (1);
- }
- else {
- printf("%s\n",result);
- return (-1);
- }
-}
-
-#ifdef CFG_CONSOLE_OVERWRITE_ROUTINE
-extern int overwrite_console (void);
-#else
-int overwrite_console (void)
-{
- return (0);
-}
-#endif
-
-int drv_isa_kbd_init (void)
-{
- int error;
- device_t kbddev ;
- char *stdinname = getenv ("stdin");
-
- if(isa_kbd_init()==-1)
- return -1;
- memset (&kbddev, 0, sizeof(kbddev));
- strcpy(kbddev.name, DEVNAME);
- kbddev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;
- kbddev.putc = NULL ;
- kbddev.puts = NULL ;
- kbddev.getc = kbd_getc ;
- kbddev.tstc = kbd_testc ;
-
- error = device_register (&kbddev);
- if(error==0) {
- /* check if this is the standard input device */
- if(strcmp(stdinname,DEVNAME)==0) {
- /* reassign the console */
- if(overwrite_console()) {
- return 1;
- }
- error=console_assign(stdin,DEVNAME);
- if(error==0)
- return 1;
- else
- return error;
- }
- return 1;
- }
- return error;
-}
-
-/******************************************************************
- * Queue handling
- ******************************************************************/
-/* puts character in the queue and sets up the in and out pointer */
-void kbd_put_queue(char data)
-{
- if((in_pointer+1)==KBD_BUFFER_LEN) {
- if(out_pointer==0) {
- return; /* buffer full */
- } else{
- in_pointer=0;
- }
- } else {
- if((in_pointer+1)==out_pointer)
- return; /* buffer full */
- in_pointer++;
- }
- kbd_buffer[in_pointer]=data;
- return;
-}
-
-/* test if a character is in the queue */
-int kbd_testc(void)
-{
- if(in_pointer==out_pointer)
- return(0); /* no data */
- else
- return(1);
-}
-/* gets the character from the queue */
-int kbd_getc(void)
-{
- char c;
- while(in_pointer==out_pointer);
- if((out_pointer+1)==KBD_BUFFER_LEN)
- out_pointer=0;
- else
- out_pointer++;
- c=kbd_buffer[out_pointer];
- return (int)c;
-
-}
-
-
-/* set LEDs */
-
-void kbd_set_leds(void)
-{
- if(caps_lock==0)
- leds&=~LED_CAP; /* switch caps_lock off */
- else
- leds|=LED_CAP; /* switch on LED */
- if(num_lock==0)
- leds&=~LED_NUM; /* switch LED off */
- else
- leds|=LED_NUM; /* switch on LED */
- if(scroll_lock==0)
- leds&=~LED_SCR; /* switch LED off */
- else
- leds|=LED_SCR; /* switch on LED */
- kbd_send_data(KBD_CMD_SET_LEDS);
- kbd_send_data(leds);
-}
-
-
-void handle_keyboard_event(unsigned char scancode)
-{
- unsigned char keycode;
-
- /* Convert scancode to keycode */
- PRINTF("scancode %x\n",scancode);
- if(scancode==0xe0) {
- e0=1; /* special charakters */
- return;
- }
- if(e0==1) {
- e0=0; /* delete flag */
- if(!( ((scancode&0x7F)==0x38)|| /* the right ctrl key */
- ((scancode&0x7F)==0x1D)|| /* the right alt key */
- ((scancode&0x7F)==0x35)|| /* the right '/' key */
- ((scancode&0x7F)==0x1C) )) /* the right enter key */
- /* we swallow unknown e0 codes */
- return;
- }
- /* special cntrl keys */
- switch(scancode)
- {
- case 0x2A:
- case 0x36: /* shift pressed */
- shift=1;
- return; /* do nothing else */
- case 0xAA:
- case 0xB6: /* shift released */
- shift=0;
- return; /* do nothing else */
- case 0x38: /* alt pressed */
- alt=1;
- return; /* do nothing else */
- case 0xB8: /* alt released */
- alt=0;
- return; /* do nothing else */
- case 0x1d: /* ctrl pressed */
- ctrl=1;
- return; /* do nothing else */
- case 0x9d: /* ctrl released */
- ctrl=0;
- return; /* do nothing else */
- case 0x46: /* scrollock pressed */
- scroll_lock=~scroll_lock;
- kbd_set_leds();
- return; /* do nothing else */
- case 0x3A: /* capslock pressed */
- caps_lock=~caps_lock;
- kbd_set_leds();
- return;
- case 0x45: /* numlock pressed */
- num_lock=~num_lock;
- kbd_set_leds();
- return;
- case 0xC6: /* scroll lock released */
- case 0xC5: /* num lock released */
- case 0xBA: /* caps lock released */
- return; /* just swallow */
- }
- if((scancode&0x80)==0x80) /* key released */
- return;
- /* now, decide which table we need */
- if(scancode > (sizeof(kbd_plain_xlate)/sizeof(kbd_plain_xlate[0]))) { /* scancode not in list */
- PRINTF("unkown scancode %X\n",scancode);
- return; /* swallow it */
- }
- /* setup plain code first */
- keycode=kbd_plain_xlate[scancode];
- if(caps_lock==1) { /* caps_lock is pressed, overwrite plain code */
- if(scancode > (sizeof(kbd_shift_xlate)/sizeof(kbd_shift_xlate[0]))) { /* scancode not in list */
- PRINTF("unkown caps-locked scancode %X\n",scancode);
- return; /* swallow it */
- }
- keycode=kbd_shift_xlate[scancode];
- if(keycode<'A') { /* we only want the alphas capital */
- keycode=kbd_plain_xlate[scancode];
- }
- }
- if(shift==1) { /* shift overwrites caps_lock */
- if(scancode > (sizeof(kbd_shift_xlate)/sizeof(kbd_shift_xlate[0]))) { /* scancode not in list */
- PRINTF("unkown shifted scancode %X\n",scancode);
- return; /* swallow it */
- }
- keycode=kbd_shift_xlate[scancode];
- }
- if(ctrl==1) { /* ctrl overwrites caps_lock and shift */
- if(scancode > (sizeof(kbd_ctrl_xlate)/sizeof(kbd_ctrl_xlate[0]))) { /* scancode not in list */
- PRINTF("unkown ctrl scancode %X\n",scancode);
- return; /* swallow it */
- }
- keycode=kbd_ctrl_xlate[scancode];
- }
- /* check if valid keycode */
- if(keycode==0xff) {
- PRINTF("unkown scancode %X\n",scancode);
- return; /* swallow unknown codes */
- }
-
- kbd_put_queue(keycode);
- PRINTF("%x\n",keycode);
-}
-
-/*
- * This reads the keyboard status port, and does the
- * appropriate action.
- *
- */
-unsigned char handle_kbd_event(void)
-{
- unsigned char status = kbd_read_status();
- unsigned int work = 10000;
-
- while ((--work > 0) && (status & KBD_STAT_OBF)) {
- unsigned char scancode;
-
- scancode = kbd_read_input();
-
- /* Error bytes must be ignored to make the
- Synaptics touchpads compaq use work */
- /* Ignore error bytes */
- if (!(status & (KBD_STAT_GTO | KBD_STAT_PERR)))
- {
- if (status & KBD_STAT_MOUSE_OBF)
- ; /* not supported: handle_mouse_event(scancode); */
- else
- handle_keyboard_event(scancode);
- }
- status = kbd_read_status();
- }
- if (!work)
- PRINTF("pc_keyb: controller jammed (0x%02X).\n", status);
- return status;
-}
-
-
-/******************************************************************************
- * Lowlevel Part of keyboard section
- */
-unsigned char kbd_read_status(void)
-{
- return(in8(CFG_ISA_IO_BASE_ADDRESS + KDB_COMMAND_PORT));
-}
-
-unsigned char kbd_read_input(void)
-{
- return(in8(CFG_ISA_IO_BASE_ADDRESS + KDB_DATA_PORT));
-}
-
-void kbd_write_command(unsigned char cmd)
-{
- out8(CFG_ISA_IO_BASE_ADDRESS + KDB_COMMAND_PORT,cmd);
-}
-
-void kbd_write_output(unsigned char data)
-{
- out8(CFG_ISA_IO_BASE_ADDRESS + KDB_DATA_PORT, data);
-}
-
-int kbd_read_data(void)
-{
- int val;
- unsigned char status;
-
- val=-1;
- status = kbd_read_status();
- if (status & KBD_STAT_OBF) {
- val = kbd_read_input();
- if (status & (KBD_STAT_GTO | KBD_STAT_PERR))
- val = -2;
- }
- return val;
-}
-
-int kbd_wait_for_input(void)
-{
- unsigned long timeout;
- int val;
-
- timeout = KBD_TIMEOUT;
- val=kbd_read_data();
- while(val < 0)
- {
- if(timeout--==0)
- return -1;
- udelay(1000);
- val=kbd_read_data();
- }
- return val;
-}
-
-
-int kb_wait(void)
-{
- unsigned long timeout = KBC_TIMEOUT * 10;
-
- do {
- unsigned char status = handle_kbd_event();
- if (!(status & KBD_STAT_IBF))
- return 0; /* ok */
- udelay(1000);
- timeout--;
- } while (timeout);
- return 1;
-}
-
-void kbd_write_command_w(int data)
-{
- if(kb_wait())
- PRINTF("timeout in kbd_write_command_w\n");
- kbd_write_command(data);
-}
-
-void kbd_write_output_w(int data)
-{
- if(kb_wait())
- PRINTF("timeout in kbd_write_output_w\n");
- kbd_write_output(data);
-}
-
-void kbd_send_data(unsigned char data)
-{
- unsigned char status;
- disable_8259A_irq(1); /* disable interrupt */
- kbd_write_output_w(data);
- status = kbd_wait_for_input();
- if (status == KBD_REPLY_ACK)
- enable_8259A_irq(1); /* enable interrupt */
-}
-
-
-char * kbd_initialize(void)
-{
- int status;
-
- in_pointer = 0; /* delete in Buffer */
- out_pointer = 0;
- /*
- * Test the keyboard interface.
- * This seems to be the only way to get it going.
- * If the test is successful a x55 is placed in the input buffer.
- */
- kbd_write_command_w(KBD_CCMD_SELF_TEST);
- if (kbd_wait_for_input() != 0x55)
- return "Kbd: failed self test";
- /*
- * Perform a keyboard interface test. This causes the controller
- * to test the keyboard clock and data lines. The results of the
- * test are placed in the input buffer.
- */
- kbd_write_command_w(KBD_CCMD_KBD_TEST);
- if (kbd_wait_for_input() != 0x00)
- return "Kbd: interface failed self test";
- /*
- * Enable the keyboard by allowing the keyboard clock to run.
- */
- kbd_write_command_w(KBD_CCMD_KBD_ENABLE);
- status = kbd_wait_for_input();
- /*
- * Reset keyboard. If the read times out
- * then the assumption is that no keyboard is
- * plugged into the machine.
- * This defaults the keyboard to scan-code set 2.
- *
- * Set up to try again if the keyboard asks for RESEND.
- */
- do {
- kbd_write_output_w(KBD_CMD_RESET);
- status = kbd_wait_for_input();
- if (status == KBD_REPLY_ACK)
- break;
- if (status != KBD_REPLY_RESEND)
- {
- PRINTF("status: %X\n",status);
- return "Kbd: reset failed, no ACK";
- }
- } while (1);
- if (kbd_wait_for_input() != KBD_REPLY_POR)
- return "Kbd: reset failed, no POR";
-
- /*
- * Set keyboard controller mode. During this, the keyboard should be
- * in the disabled state.
- *
- * Set up to try again if the keyboard asks for RESEND.
- */
- do {
- kbd_write_output_w(KBD_CMD_DISABLE);
- status = kbd_wait_for_input();
- if (status == KBD_REPLY_ACK)
- break;
- if (status != KBD_REPLY_RESEND)
- return "Kbd: disable keyboard: no ACK";
- } while (1);
-
- kbd_write_command_w(KBD_CCMD_WRITE_MODE);
- kbd_write_output_w(KBD_MODE_KBD_INT
- | KBD_MODE_SYS
- | KBD_MODE_DISABLE_MOUSE
- | KBD_MODE_KCC);
-
- /* AMCC powerpc portables need this to use scan-code set 1 -- Cort */
- kbd_write_command_w(KBD_CCMD_READ_MODE);
- if (!(kbd_wait_for_input() & KBD_MODE_KCC)) {
- /*
- * If the controller does not support conversion,
- * Set the keyboard to scan-code set 1.
- */
- kbd_write_output_w(0xF0);
- kbd_wait_for_input();
- kbd_write_output_w(0x01);
- kbd_wait_for_input();
- }
- kbd_write_output_w(KBD_CMD_ENABLE);
- if (kbd_wait_for_input() != KBD_REPLY_ACK)
- return "Kbd: enable keyboard: no ACK";
-
- /*
- * Finally, set the typematic rate to maximum.
- */
- kbd_write_output_w(KBD_CMD_SET_RATE);
- if (kbd_wait_for_input() != KBD_REPLY_ACK)
- return "Kbd: Set rate: no ACK";
- kbd_write_output_w(0x00);
- if (kbd_wait_for_input() != KBD_REPLY_ACK)
- return "Kbd: Set rate: no ACK";
- return NULL;
-}
-
-void kbd_interrupt(void)
-{
- handle_kbd_event();
-}
diff --git a/board/mpl/common/kbd.h b/board/mpl/common/kbd.h
deleted file mode 100644
index 229ba615f8..0000000000
--- a/board/mpl/common/kbd.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * (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/memtst.c b/board/mpl/common/memtst.c
deleted file mode 100644
index ff1190ab21..0000000000
--- a/board/mpl/common/memtst.c
+++ /dev/null
@@ -1,591 +0,0 @@
-/*
- * (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
- *
- */
-
-/* NOT Used yet...
- add following code to PIP405.c :
-int testdram (void)
-{
- unsigned char s[32];
- int i;
-
- i = getenv_r ("testmem", s, 32);
- if (i != 0) {
- i = (int) simple_strtoul (s, NULL, 10);
- if ((i > 0) && (i < 0xf)) {
- printf ("testing ");
- i = mem_test (0, ramsize, i);
- if (i > 0)
- printf ("ERROR ");
- else
- printf ("Ok ");
- }
- }
- return (1);
-}
-*/
-
-
-#include <common.h>
-#include <asm/processor.h>
-#include <405gp_i2c.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define FALSE 0
-#define TRUE 1
-
-#define TEST_QUIET 8
-#define TEST_SHOW_PROG 4
-#define TEST_SHOW_ERR 2
-#define TEST_SHOW_ALL 1
-
-#define TESTPAT1 0xAA55AA55
-#define TESTPAT2 0x55AA55AA
-#define TEST_PASSED 0
-#define TEST_FAILED 1
-#define MEGABYTE (1024*1024)
-
-
-typedef struct {
- volatile unsigned long pat1;
- volatile unsigned long pat2;
-} RAM_MEMTEST_PATTERN2;
-
-typedef struct {
- volatile unsigned long addr;
-} RAM_MEMTEST_ADDRLINE;
-
-static __inline unsigned long Swap_32 (unsigned long val)
-{
- return (((val << 16) & 0xFFFF0000) | ((val >> 16) & 0x0000FFFF));
-}
-
-void testm_puts (int quiet, char *buf)
-{
- if ((quiet & TEST_SHOW_ALL) == TEST_SHOW_ALL)
- puts (buf);
-}
-
-
-void Write_Error (int mode, unsigned long addr, unsigned long expected,
- unsigned long actual)
-{
-
- char dispbuf[64];
-
- sprintf (dispbuf, "\n ERROR @ 0x%08lX: (exp: 0x%08lX act: 0x%08lX) ",
- addr, expected, actual);
- testm_puts (((mode & TEST_SHOW_ERR) ==
- TEST_SHOW_ERR) ? TEST_SHOW_ALL : mode, dispbuf);
-}
-
-
-/*
- * fills the memblock of <size> bytes from <startaddr> with pat1 and pat2
- */
-
-
-void RAM_MemTest_WritePattern2 (unsigned long startaddr,
- unsigned long size, unsigned long pat1,
- unsigned long pat2)
-{
- RAM_MEMTEST_PATTERN2 *p, *pe;
-
- p = (RAM_MEMTEST_PATTERN2 *) startaddr;
- pe = (RAM_MEMTEST_PATTERN2 *) (startaddr + size);
-
- while (p < pe) {
- p->pat1 = pat1;
- p->pat2 = pat2;
- p++;
- } /* endwhile */
-}
-
-/*
- * checks the memblock of <size> bytes from <startaddr> with pat1 and pat2
- * returns the address of the first error or NULL if all is well
- */
-
-void *RAM_MemTest_CheckPattern2 (int mode, unsigned long startaddr,
- unsigned long size, unsigned long pat1,
- unsigned long pat2)
-{
- RAM_MEMTEST_PATTERN2 *p, *pe;
- unsigned long actual1, actual2;
-
- p = (RAM_MEMTEST_PATTERN2 *) startaddr;
- pe = (RAM_MEMTEST_PATTERN2 *) (startaddr + size);
-
- while (p < pe) {
- actual1 = p->pat1;
- actual2 = p->pat2;
-
- if (actual1 != pat1) {
- Write_Error (mode, (unsigned long) &(p->pat1), pat1, actual1);
- return ((void *) &(p->pat1));
- }
- /* endif */
- if (actual2 != pat2) {
- Write_Error (mode, (unsigned long) &(p->pat2), pat2, actual2);
- return ((void *) &(p->pat2));
- }
- /* endif */
- p++;
- } /* endwhile */
-
- return (NULL);
-}
-
-/*
- * fills the memblock of <size> bytes from <startaddr> with the address
- */
-
-void RAM_MemTest_WriteAddrLine (unsigned long startaddr,
- unsigned long size, int swapped)
-{
- RAM_MEMTEST_ADDRLINE *p, *pe;
-
- p = (RAM_MEMTEST_ADDRLINE *) startaddr;
- pe = (RAM_MEMTEST_ADDRLINE *) (startaddr + size);
-
- if (!swapped) {
- while (p < pe) {
- p->addr = (unsigned long) p;
- p++;
- } /* endwhile */
- } else {
- while (p < pe) {
- p->addr = Swap_32 ((unsigned long) p);
- p++;
- } /* endwhile */
- } /* endif */
-}
-
-/*
- * checks the memblock of <size> bytes from <startaddr>
- * returns the address of the error or NULL if all is well
- */
-
-void *RAM_MemTest_CheckAddrLine (int mode, unsigned long startaddr,
- unsigned long size, int swapped)
-{
- RAM_MEMTEST_ADDRLINE *p, *pe;
- unsigned long actual, expected;
-
- p = (RAM_MEMTEST_ADDRLINE *) startaddr;
- pe = (RAM_MEMTEST_ADDRLINE *) (startaddr + size);
-
- if (!swapped) {
- while (p < pe) {
- actual = p->addr;
- expected = (unsigned long) p;
- if (actual != expected) {
- Write_Error (mode, (unsigned long) &(p->addr), expected,
- actual);
- return ((void *) &(p->addr));
- } /* endif */
- p++;
- } /* endwhile */
- } else {
- while (p < pe) {
- actual = p->addr;
- expected = Swap_32 ((unsigned long) p);
- if (actual != expected) {
- Write_Error (mode, (unsigned long) &(p->addr), expected,
- actual);
- return ((void *) &(p->addr));
- } /* endif */
- p++;
- } /* endwhile */
- } /* endif */
-
- return (NULL);
-}
-
-/*
- * checks the memblock of <size> bytes from <startaddr+size>
- * returns the address of the error or NULL if all is well
- */
-
-void *RAM_MemTest_CheckAddrLineReverse (int mode, unsigned long startaddr,
- unsigned long size, int swapped)
-{
- RAM_MEMTEST_ADDRLINE *p, *pe;
- unsigned long actual, expected;
-
- p = (RAM_MEMTEST_ADDRLINE *) (startaddr + size - sizeof (p->addr));
- pe = (RAM_MEMTEST_ADDRLINE *) startaddr;
-
- if (!swapped) {
- while (p > pe) {
- actual = p->addr;
- expected = (unsigned long) p;
- if (actual != expected) {
- Write_Error (mode, (unsigned long) &(p->addr), expected,
- actual);
- return ((void *) &(p->addr));
- } /* endif */
- p--;
- } /* endwhile */
- } else {
- while (p > pe) {
- actual = p->addr;
- expected = Swap_32 ((unsigned long) p);
- if (actual != expected) {
- Write_Error (mode, (unsigned long) &(p->addr), expected,
- actual);
- return ((void *) &(p->addr));
- } /* endif */
- p--;
- } /* endwhile */
- } /* endif */
-
- return (NULL);
-}
-
-/*
- * fills the memblock of <size> bytes from <startaddr> with walking bit pattern
- */
-
-void RAM_MemTest_WriteWalkBit (unsigned long startaddr, unsigned long size)
-{
- volatile unsigned long *p, *pe;
- unsigned long i;
-
- p = (unsigned long *) startaddr;
- pe = (unsigned long *) (startaddr + size);
- i = 0;
-
- while (p < pe) {
- *p = 1UL << i;
- i = (i + 1 + (((unsigned long) p) >> 7)) % 32;
- p++;
- } /* endwhile */
-}
-
-/*
- * checks the memblock of <size> bytes from <startaddr>
- * returns the address of the error or NULL if all is well
- */
-
-void *RAM_MemTest_CheckWalkBit (int mode, unsigned long startaddr,
- unsigned long size)
-{
- volatile unsigned long *p, *pe;
- unsigned long actual, expected;
- unsigned long i;
-
- p = (unsigned long *) startaddr;
- pe = (unsigned long *) (startaddr + size);
- i = 0;
-
- while (p < pe) {
- actual = *p;
- expected = (1UL << i);
- if (actual != expected) {
- Write_Error (mode, (unsigned long) p, expected, actual);
- return ((void *) p);
- } /* endif */
- i = (i + 1 + (((unsigned long) p) >> 7)) % 32;
- p++;
- } /* endwhile */
-
- return (NULL);
-}
-
-/*
- * fills the memblock of <size> bytes from <startaddr> with "random" pattern
- */
-
-void RAM_MemTest_WriteRandomPattern (unsigned long startaddr,
- unsigned long size,
- unsigned long *pat)
-{
- unsigned long i, p;
-
- p = *pat;
-
- for (i = 0; i < (size / 4); i++) {
- *(unsigned long *) (startaddr + i * 4) = p;
- if ((p % 2) > 0) {
- p ^= i;
- p >>= 1;
- p |= 0x80000000;
- } else {
- p ^= ~i;
- p >>= 1;
- } /* endif */
- } /* endfor */
- *pat = p;
-}
-
-/*
- * checks the memblock of <size> bytes from <startaddr>
- * returns the address of the error or NULL if all is well
- */
-
-void *RAM_MemTest_CheckRandomPattern (int mode, unsigned long startaddr,
- unsigned long size,
- unsigned long *pat)
-{
- void *perr = NULL;
- unsigned long i, p, p1;
-
- p = *pat;
-
- for (i = 0; i < (size / 4); i++) {
- p1 = *(unsigned long *) (startaddr + i * 4);
- if (p1 != p) {
- if (perr == NULL) {
- Write_Error (mode, startaddr + i * 4, p, p1);
- perr = (void *) (startaddr + i * 4);
- } /* endif */
- }
- /* endif */
- if ((p % 2) > 0) {
- p ^= i;
- p >>= 1;
- p |= 0x80000000;
- } else {
- p ^= ~i;
- p >>= 1;
- } /* endif */
- } /* endfor */
-
- *pat = p;
- return (perr);
-}
-
-
-void RAM_MemTest_WriteData1 (unsigned long startaddr, unsigned long size,
- unsigned long *pat)
-{
- RAM_MemTest_WritePattern2 (startaddr, size, TESTPAT1, TESTPAT2);
-}
-
-void *RAM_MemTest_CheckData1 (int mode, unsigned long startaddr,
- unsigned long size, unsigned long *pat)
-{
- return (RAM_MemTest_CheckPattern2
- (mode, startaddr, size, TESTPAT1, TESTPAT2));
-}
-
-void RAM_MemTest_WriteData2 (unsigned long startaddr, unsigned long size,
- unsigned long *pat)
-{
- RAM_MemTest_WritePattern2 (startaddr, size, TESTPAT2, TESTPAT1);
-}
-
-void *RAM_MemTest_CheckData2 (int mode, unsigned long startaddr,
- unsigned long size, unsigned long *pat)
-{
- return (RAM_MemTest_CheckPattern2
- (mode, startaddr, size, TESTPAT2, TESTPAT1));
-}
-
-void RAM_MemTest_WriteAddr1 (unsigned long startaddr, unsigned long size,
- unsigned long *pat)
-{
- RAM_MemTest_WriteAddrLine (startaddr, size, FALSE);
-}
-
-void *RAM_MemTest_Check1Addr1 (int mode, unsigned long startaddr,
- unsigned long size, unsigned long *pat)
-{
- return (RAM_MemTest_CheckAddrLine (mode, startaddr, size, FALSE));
-}
-
-void *RAM_MemTest_Check2Addr1 (int mode, unsigned long startaddr,
- unsigned long size, unsigned long *pat)
-{
- return (RAM_MemTest_CheckAddrLineReverse
- (mode, startaddr, size, FALSE));
-}
-
-void RAM_MemTest_WriteAddr2 (unsigned long startaddr, unsigned long size,
- unsigned long *pat)
-{
- RAM_MemTest_WriteAddrLine (startaddr, size, TRUE);
-}
-
-void *RAM_MemTest_Check1Addr2 (int mode, unsigned long startaddr,
- unsigned long size, unsigned long *pat)
-{
- return (RAM_MemTest_CheckAddrLine (mode, startaddr, size, TRUE));
-}
-
-void *RAM_MemTest_Check2Addr2 (int mode, unsigned long startaddr,
- unsigned long size, unsigned long *pat)
-{
- return (RAM_MemTest_CheckAddrLineReverse
- (mode, startaddr, size, TRUE));
-}
-
-
-typedef struct {
- void (*test_write) (unsigned long startaddr, unsigned long size,
- unsigned long *pat);
- char *test_write_desc;
- void *(*test_check1) (int mode, unsigned long startaddr,
- unsigned long size, unsigned long *pat);
- void *(*test_check2) (int mode, unsigned long startaddr,
- unsigned long size, unsigned long *pat);
-} RAM_MEMTEST_FUNC;
-
-
-#define TEST_STAGES 5
-static RAM_MEMTEST_FUNC test_stage[TEST_STAGES] = {
- {RAM_MemTest_WriteData1, "data test 1...\n", RAM_MemTest_CheckData1,
- NULL},
- {RAM_MemTest_WriteData2, "data test 2...\n", RAM_MemTest_CheckData2,
- NULL},
- {RAM_MemTest_WriteAddr1, "address line test...\n",
- RAM_MemTest_Check1Addr1, RAM_MemTest_Check2Addr1},
- {RAM_MemTest_WriteAddr2, "address line test (swapped)...\n",
- RAM_MemTest_Check1Addr2, RAM_MemTest_Check2Addr2},
- {RAM_MemTest_WriteRandomPattern, "random data test...\n",
- RAM_MemTest_CheckRandomPattern, NULL}
-};
-
-void mem_test_reloc(void)
-{
- unsigned long addr;
- int i;
- for (i=0; i< TEST_STAGES; i++) {
- addr = (ulong) (test_stage[i].test_write) + gd->reloc_off;
- test_stage[i].test_write=
- (void (*) (unsigned long startaddr, unsigned long size,
- unsigned long *pat))addr;
- addr = (ulong) (test_stage[i].test_write_desc) + gd->reloc_off;
- test_stage[i].test_write_desc=(char *)addr;
- if(test_stage[i].test_check1) {
- addr = (ulong) (test_stage[i].test_check1) + gd->reloc_off;
- test_stage[i].test_check1=
- (void *(*) (int mode, unsigned long startaddr,
- unsigned long size, unsigned long *pat))addr;
- }
- if(test_stage[i].test_check2) {
- addr = (ulong) (test_stage[i].test_check2) + gd->reloc_off;
- test_stage[i].test_check2=
- (void *(*) (int mode, unsigned long startaddr,
- unsigned long size, unsigned long *pat))addr;
- }
- }
-}
-
-
-int mem_test (unsigned long start, unsigned long ramsize, int quiet)
-{
- unsigned long errors, stage;
- unsigned long startaddr, size, i;
- const unsigned long blocksize = 0x80000; /* check in 512KB blocks */
- unsigned long *perr;
- unsigned long rdatapat;
- char dispbuf[80];
- int status = TEST_PASSED;
- int prog = 0;
-
- errors = 0;
- startaddr = start;
- size = ramsize;
- if ((quiet & TEST_SHOW_PROG) == TEST_SHOW_PROG) {
- prog++;
- printf (".");
- }
- sprintf (dispbuf, "\nMemory Test: addr = 0x%lx size = 0x%lx\n",
- startaddr, size);
- testm_puts (quiet, dispbuf);
- for (stage = 0; stage < TEST_STAGES; stage++) {
- sprintf (dispbuf, test_stage[stage].test_write_desc);
- testm_puts (quiet, dispbuf);
- /* fill SDRAM */
- rdatapat = 0x12345678;
- sprintf (dispbuf, "writing block: ");
- testm_puts (quiet, dispbuf);
- for (i = 0; i < size; i += blocksize) {
- sprintf (dispbuf, "%04lX\b\b\b\b", i / blocksize);
- testm_puts (quiet, dispbuf);
- test_stage[stage].test_write (startaddr + i, blocksize,
- &rdatapat);
- } /* endfor */
- sprintf (dispbuf, "\n");
- testm_puts (quiet, dispbuf);
- if ((quiet & TEST_SHOW_PROG) == TEST_SHOW_PROG) {
- prog++;
- printf (".");
- }
- /* check SDRAM */
- rdatapat = 0x12345678;
- sprintf (dispbuf, "checking block: ");
- testm_puts (quiet, dispbuf);
- for (i = 0; i < size; i += blocksize) {
- sprintf (dispbuf, "%04lX\b\b\b\b", i / blocksize);
- testm_puts (quiet, dispbuf);
- if ((perr =
- test_stage[stage].test_check1 (quiet, startaddr + i,
- blocksize,
- &rdatapat)) != NULL) {
- status = TEST_FAILED;
- } /* endif */
- } /* endfor */
- sprintf (dispbuf, "\n");
- testm_puts (quiet, dispbuf);
- if ((quiet & TEST_SHOW_PROG) == TEST_SHOW_PROG) {
- prog++;
- printf (".");
- }
- if (test_stage[stage].test_check2 != NULL) {
- /* check2 SDRAM */
- sprintf (dispbuf, "2nd checking block: ");
- rdatapat = 0x12345678;
- testm_puts (quiet, dispbuf);
- for (i = 0; i < size; i += blocksize) {
- sprintf (dispbuf, "%04lX\b\b\b\b", i / blocksize);
- testm_puts (quiet, dispbuf);
- if ((perr =
- test_stage[stage].test_check2 (quiet, startaddr + i,
- blocksize,
- &rdatapat)) != NULL) {
- status = TEST_FAILED;
- } /* endif */
- } /* endfor */
- sprintf (dispbuf, "\n");
- testm_puts (quiet, dispbuf);
- if ((quiet & TEST_SHOW_PROG) == TEST_SHOW_PROG) {
- prog++;
- printf (".");
- }
- }
-
- } /* next stage */
- if ((quiet & TEST_SHOW_PROG) == TEST_SHOW_PROG) {
- while (prog-- > 0)
- printf ("\b \b");
- }
-
- if (status == TEST_FAILED)
- errors++;
-
- return (errors);
-}
diff --git a/board/mpl/common/pci.c b/board/mpl/common/pci.c
deleted file mode 100644
index bde14beeb1..0000000000
--- a/board/mpl/common/pci.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*-----------------------------------------------------------------------------+
-|
-| This source code has been made available to you by IBM on an AS-IS
-| basis. Anyone receiving this source is licensed under IBM
-| copyrights to use it in any way he or she deems fit, including
-| copying it, modifying it, compiling it, and redistributing it either
-| with or without modifications. No license under IBM patents or
-| patent applications is to be implied by the copyright license.
-|
-| Any user of this software should understand that IBM cannot provide
-| technical support for this software and will not be responsible for
-| any consequences resulting from the use of this software.
-|
-| Any person who transfers this source code or any derivative work
-| must include the IBM copyright notice, this paragraph, and the
-| preceding two paragraphs in the transferred software.
-|
-| COPYRIGHT I B M CORPORATION 1995
-| LICENSED MATERIAL - PROGRAM PROPERTY OF I B M
-+-----------------------------------------------------------------------------*/
-/*
- * Adapted for PIP405 03.07.01
- * Denis Peter, MPL AG Switzerland, d.peter@mpl.ch
- *
- * TODO: Clean-up
- */
-
-#include <common.h>
-#include <pci.h>
-#include "isa.h"
-
-#ifdef CONFIG_405GP
-#ifdef CONFIG_PCI
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#include "piix4_pci.h"
-#include "pci_parts.h"
-
-void pci_pip405_write_regs(struct pci_controller *hose, pci_dev_t dev,
- struct pci_config_table *entry)
-{
- struct pci_pip405_config_entry *table;
- int i;
-
- table = (struct pci_pip405_config_entry*) entry->priv[0];
-
- for (i=0; table[i].width; i++)
- {
-#ifdef DEBUG
- printf("Reg 0x%02X Value 0x%08lX Width %02d written\n",
- table[i].index, table[i].val, table[i].width);
-#endif
-
- switch(table[i].width)
- {
- case 1: pci_hose_write_config_byte(hose, dev, table[i].index, table[i].val); break;
- case 2: pci_hose_write_config_word(hose, dev, table[i].index, table[i].val); break;
- case 4: pci_hose_write_config_dword(hose, dev, table[i].index, table[i].val); break;
- }
- }
-}
-
-
-static void pci_pip405_fixup_irq(struct pci_controller *hose, pci_dev_t dev)
-{
- unsigned char int_line = 0xff;
- unsigned char pin;
- /*
- * Write pci interrupt line register
- */
- if(PCI_DEV(dev)==0) /* Device0 = PPC405 -> skip */
- return;
- pci_hose_read_config_byte(hose, dev, PCI_INTERRUPT_PIN, &pin);
- if ((pin == 0) || (pin > 4))
- return;
-
- int_line = ((PCI_DEV(dev) + (pin-1) + 10) % 4) + 28;
- pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, int_line);
-#ifdef DEBUG
- printf("Fixup IRQ: dev %d (%x) int line %d 0x%x\n",
- PCI_DEV(dev),dev,int_line,int_line);
-#endif
-}
-
-extern void pci_405gp_init(struct pci_controller *hose);
-
-
-static struct pci_controller hose = {
- config_table: pci_pip405_config_table,
- fixup_irq: pci_pip405_fixup_irq,
-};
-
-
-static void reloc_pci_cfg_table(struct pci_config_table *table)
-{
- unsigned long addr;
-
- for (; table && table->vendor; table++) {
- addr = (ulong) (table->config_device) + gd->reloc_off;
-#ifdef DEBUG
- printf ("device \"%d\": 0x%08lx => 0x%08lx\n",
- table->device, (ulong) (table->config_device), addr);
-#endif
- table->config_device =
- (void (*)(struct pci_controller* hose, pci_dev_t dev,
- struct pci_config_table *))addr;
- table->priv[0]+=gd->reloc_off;
- }
-}
-
-void pci_init_board(void)
-{
- /*we want the ptrs to RAM not flash (ie don't use init list)*/
- hose.fixup_irq = pci_pip405_fixup_irq;
- hose.config_table = pci_pip405_config_table;
- reloc_pci_cfg_table(hose.config_table);
-#ifdef DEBUG
- printf("Init PCI: fixup_irq=%p config_table=%p hose=%p\n",pci_pip405_fixup_irq,pci_pip405_config_table,hose);
-#endif
- pci_405gp_init(&hose);
-}
-
-#endif /* CONFIG_PCI */
-#endif /* CONFIG_405GP */
diff --git a/board/mpl/common/pci_parts.h b/board/mpl/common/pci_parts.h
deleted file mode 100644
index 60008e2b24..0000000000
--- a/board/mpl/common/pci_parts.h
+++ /dev/null
@@ -1,193 +0,0 @@
- /*
- * (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 _PCI_PARTS_H_
-#define _PCI_PARTS_H_
-
-
-/* Board specific file containing:
- * - PCI Memory Mapping
- * - PCI IO Mapping
- * - PCI Interrupt Mapping
- */
-
-/* PIP405 PCI INT Routing:
- * IRQ0 VECTOR
- * PIXX4 IDSEL = AD16 INTA# 28 (Function 2 USB is INTD# = 31)
- * VGA IDSEL = AD17 INTB# 29
- * SCSI IDSEL = AD18 INTC# 30
- * PC104 IDSEL0 = AD20 INTA# 28
- * PC104 IDSEL1 = AD21 INTB# 29
- * PC104 IDSEL2 = AD22 INTC# 30
- * PC104 IDSEL3 = AD23 INTD# 31
- *
- * busdevfunc = EXXX XXXX BBBB BBBB DDDD DFFF RRRR RR00
- * ^ ^ ^ ^ ^
- * 31 23 15 10 7
- * E = Enabled
- * B = Bussnumber
- * D = Devicenumber (Device0 = AD10)
- * F = Functionnumber
- * R = Registernumber
- *
- * Device = (busdevfunc>>11) + 10
- * Vector = devicenumber % 4 + 28
- *
- */
-#define PCI_HIGHEST_ON_BOARD_ID 19
-/*#define PCI_DEV_NUMBER(x) (((x>>11) & 0x1f) + 10) */
-#define PCI_IRQ_VECTOR(x) ((PCI_DEV(x) + 10) % 4) + 28
-
-
-/* PCI Device List for PIP405 */
-
-/* Mapping:
- * +-------------+------------+------------+--------------------------------+
- * ¦ PCI MemAddr | PCI IOAddr | Local Addr | Device / Function |
- * +-------------+------------+------------+--------------------------------+
- * | 0x00000000 | | 0xA0000000 | ISA Memory (hard wired) |
- * | 0x00FFFFFF | | 0xA0FFFFFF | |
- * +-------------+------------+------------+--------------------------------+
- * | | 0x00000000 | 0xE8000000 | ISA IO (hard wired) |
- * | | 0x0000FFFF | 0xE800FFFF | |
- * +-------------+------------+------------+--------------------------------+
- * | 0x80000000 | | 0x80000000 | VGA Controller Memory |
- * | 0x80FFFFFF | | 0x80FFFFFF | |
- * +-------------+------------+------------+--------------------------------+
- * | 0x81000000 | | 0x81000000 | SCSI Controller Memory |
- * | 0x81FFFFFF | | 0x81FFFFFF | |
- * +-------------+------------+------------+--------------------------------+
- */
-
-struct pci_pip405_config_entry {
- int index; /* address */
- unsigned long val; /* value */
- int width; /* data size */
-};
-
-extern void pci_pip405_write_regs(struct pci_controller *,
- pci_dev_t,
- struct pci_config_table *);
-
-/* PIIX4 ISA Bridge Function 0 */
-static struct pci_pip405_config_entry piix4_isa_bridge_f0[] = {
- {PCI_CFG_PIIX4_SERIRQ, 0xD0, 1}, /* enable Continous SERIRQ Pin */
- {PCI_CFG_PIIX4_GENCFG, 0x00018041, 4}, /* enable SERIRQs, ISA, PNP, GPI11 */
- {PCI_CFG_PIIX4_TOM, 0xFE, 1}, /* Top of Memory */
- {PCI_CFG_PIIX4_XBCS, 0x02C4, 2}, /* disable all peri CS */
- {PCI_CFG_PIIX4_RTCCFG, 0x21, 1}, /* enable RTC */
-#if defined(CONFIG_PIP405)
- {PCI_CFG_PIIX4_MBDMA, 0x82, 1}, /* set MBDMA0 to DMA 2 */
- {PCI_CFG_PIIX4_MBDMA+1, 0x83, 1}, /* set MBDMA1 to DMA 3 */
-#endif
- {PCI_CFG_PIIX4_DLC, 0x0, 1}, /* disable passive release feature */
- { } /* end of device table */
-};
-
-/* PIIX4 IDE Controller Function 1 */
-static struct pci_pip405_config_entry piix4_ide_cntrl_f1[] = {
- {PCI_CFG_PIIX4_BMIBA, 0x0001000, 4}, /* set BMI to a valid address */
- {PCI_COMMAND, 0x0001, 2}, /* enable IO access */
-#if !defined(CONFIG_MIP405T)
- {PCI_CFG_PIIX4_IDETIM, 0x80008000, 4}, /* enable Both IDE channels */
-#else
- {PCI_CFG_PIIX4_IDETIM, 0x00008000, 4}, /* enable IDE channel0 */
-#endif
- { } /* end of device table */
-};
-
-/* PIIX4 USB Controller Function 2 */
-static struct pci_pip405_config_entry piix4_usb_cntrl_f2[] = {
-#if !defined(CONFIG_MIP405T)
- {PCI_INTERRUPT_LINE, 31, 1}, /* Int vector = 31 */
- {PCI_BASE_ADDRESS_4, 0x0000E001, 4}, /* Set IO Address to 0xe000 to 0xe01F */
- {PCI_LATENCY_TIMER, 0x80, 1}, /* Latency Timer 0x80 */
- {0xC0, 0x2000, 2}, /* Legacy support */
- {PCI_COMMAND, 0x0005, 2}, /* enable IO access and Master */
-#endif
- { } /* end of device table */
-};
-
-/* PIIX4 Power Management Function 3 */
-static struct pci_pip405_config_entry piix4_pmm_cntrl_f3[] = {
- {PCI_CFG_PIIX4_PMBA, 0x00004000, 4}, /* set PMBA to "valid" value */
- {PCI_CFG_PIIX4_SMBBA, 0x00005000, 4}, /* set SMBBA to "valid" value */
- {PCI_CFG_PIIX4_PMMISC, 0x01, 1}, /* enable PMBA IO access */
- {PCI_COMMAND, 0x0001, 2}, /* enable IO access */
- { } /* end of device table */
-};
-/* PPC405 Dummy only used to prevent autosetup on this host bridge */
-static struct pci_pip405_config_entry ppc405_dummy[] = {
- { } /* end of device table */
-};
-
-void pci_405gp_setup_vga(struct pci_controller *hose, pci_dev_t dev,
- struct pci_config_table *entry);
-
-
-static struct pci_config_table pci_pip405_config_table[]={
- {PCI_VENDOR_ID_IBM, /* 405 dummy */
- PCI_DEVICE_ID_IBM_405GP,
- PCI_ANY_ID,
- PCI_ANY_ID, PCI_ANY_ID, 0,
- pci_pip405_write_regs, {(unsigned long) ppc405_dummy}},
-
- {PCI_VENDOR_ID_INTEL, /* PIIX4 ISA Bridge Function 0 */
- PCI_DEVICE_ID_INTEL_82371AB_0,
- PCI_ANY_ID,
- PCI_ANY_ID, PCI_ANY_ID, 0,
- pci_pip405_write_regs, {(unsigned long) piix4_isa_bridge_f0}},
-
- {PCI_VENDOR_ID_INTEL, /* PIIX4 IDE Controller Function 1 */
- PCI_DEVICE_ID_INTEL_82371AB,
- PCI_ANY_ID,
- PCI_ANY_ID, PCI_ANY_ID, 1,
- pci_pip405_write_regs, {(unsigned long) piix4_ide_cntrl_f1}},
-
- {PCI_VENDOR_ID_INTEL, /* PIIX4 USB Controller Function 2 */
- PCI_DEVICE_ID_INTEL_82371AB_2,
- PCI_ANY_ID,
- PCI_ANY_ID, PCI_ANY_ID, 2,
- pci_pip405_write_regs, {(unsigned long) piix4_usb_cntrl_f2}},
-
- {PCI_VENDOR_ID_INTEL, /* PIIX4 USB Controller Function 3 */
- PCI_DEVICE_ID_INTEL_82371AB_3,
- PCI_ANY_ID,
- PCI_ANY_ID, PCI_ANY_ID, 3,
- pci_pip405_write_regs, {(unsigned long) piix4_pmm_cntrl_f3}},
-
- {PCI_ANY_ID,
- PCI_ANY_ID,
- PCI_CLASS_DISPLAY_VGA,
- PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- pci_405gp_setup_vga},
-
- {PCI_ANY_ID,
- PCI_ANY_ID,
- PCI_CLASS_NOT_DEFINED_VGA,
- PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- pci_405gp_setup_vga},
-
- { }
-};
-#endif /* _PCI_PARTS_H_ */
diff --git a/board/mpl/common/piix4_pci.h b/board/mpl/common/piix4_pci.h
deleted file mode 100644
index 0ff802e749..0000000000
--- a/board/mpl/common/piix4_pci.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * (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 _PIIX4_PCI_H
-#define _PIIX4_PCI_H
-
-/***************************************************************************
-* Defines PIIX4 Config Registers
-****************************************************************************/
-
-/* Function 0 ISA Bridge */
-#define PCI_CFG_PIIX4_IORT 0x4C /* 8 bit ISA Recovery Timer Reg (default 0x4D) */
-#define PCI_CFG_PIIX4_XBCS 0x4E /* 16 bit XBus Chip select reg (default 0x0003) */
-#define PCI_CFG_PIIX4_PIRQC 0x60 /* PCI IRQ Route Register 4 x 8bit (default )*/
-#define PCI_CFG_PIIX4_SERIRQ 0x64
-#define PCI_CFG_PIIX4_TOM 0x69
-#define PCI_CFG_PIIX4_MSTAT 0x6A
-#define PCI_CFG_PIIX4_MBDMA 0x76
-#define PCI_CFG_PIIX4_APICBS 0x80
-#define PCI_CFG_PIIX4_DLC 0x82
-#define PCI_CFG_PIIX4_PDMACFG 0x90
-#define PCI_CFG_PIIX4_DDMABS 0x92
-#define PCI_CFG_PIIX4_GENCFG 0xB0
-#define PCI_CFG_PIIX4_RTCCFG 0xCB
-
-/* IO Addresses */
-#define PIIX4_ISA_DMA1_CH0BA 0x00
-#define PIIX4_ISA_DMA1_CH0CA 0x01
-#define PIIX4_ISA_DMA1_CH1BA 0x02
-#define PIIX4_ISA_DMA1_CH1CA 0x03
-#define PIIX4_ISA_DMA1_CH2BA 0x04
-#define PIIX4_ISA_DMA1_CH2CA 0x05
-#define PIIX4_ISA_DMA1_CH3BA 0x06
-#define PIIX4_ISA_DMA1_CH3CA 0x07
-#define PIIX4_ISA_DMA1_CMDST 0x08
-#define PIIX4_ISA_DMA1_REQ 0x09
-#define PIIX4_ISA_DMA1_WSBM 0x0A
-#define PIIX4_ISA_DMA1_CH_MOD 0x0B
-#define PIIX4_ISA_DMA1_CLR_PT 0x0C
-#define PIIX4_ISA_DMA1_M_CLR 0x0D
-#define PIIX4_ISA_DMA1_CLR_M 0x0E
-#define PIIX4_ISA_DMA1_RWAMB 0x0F
-
-#define PIIX4_ISA_DMA2_CH0BA 0xC0
-#define PIIX4_ISA_DMA2_CH0CA 0xC1
-#define PIIX4_ISA_DMA2_CH1BA 0xC2
-#define PIIX4_ISA_DMA2_CH1CA 0xC3
-#define PIIX4_ISA_DMA2_CH2BA 0xC4
-#define PIIX4_ISA_DMA2_CH2CA 0xC5
-#define PIIX4_ISA_DMA2_CH3BA 0xC6
-#define PIIX4_ISA_DMA2_CH3CA 0xC7
-#define PIIX4_ISA_DMA2_CMDST 0xD0
-#define PIIX4_ISA_DMA2_REQ 0xD2
-#define PIIX4_ISA_DMA2_WSBM 0xD4
-#define PIIX4_ISA_DMA2_CH_MOD 0xD6
-#define PIIX4_ISA_DMA2_CLR_PT 0xD8
-#define PIIX4_ISA_DMA2_M_CLR 0xDA
-#define PIIX4_ISA_DMA2_CLR_M 0xDC
-#define PIIX4_ISA_DMA2_RWAMB 0xDE
-
-#define PIIX4_ISA_INT1_ICW1 0x20
-#define PIIX4_ISA_INT1_OCW2 0x20
-#define PIIX4_ISA_INT1_OCW3 0x20
-#define PIIX4_ISA_INT1_ICW2 0x21
-#define PIIX4_ISA_INT1_ICW3 0x21
-#define PIIX4_ISA_INT1_ICW4 0x21
-#define PIIX4_ISA_INT1_OCW1 0x21
-
-#define PIIX4_ISA_INT1_ELCR 0x4D0
-
-#define PIIX4_ISA_INT2_ICW1 0xA0
-#define PIIX4_ISA_INT2_OCW2 0xA0
-#define PIIX4_ISA_INT2_OCW3 0xA0
-#define PIIX4_ISA_INT2_ICW2 0xA1
-#define PIIX4_ISA_INT2_ICW3 0xA1
-#define PIIX4_ISA_INT2_ICW4 0xA1
-#define PIIX4_ISA_INT2_OCW1 0xA1
-#define PIIX4_ISA_INT2_IMR 0xA1 /* read only */
-
-#define PIIX4_ISA_INT2_ELCR 0x4D1
-
-#define PIIX4_ISA_TMR0_CNT_ST 0x40
-#define PIIX4_ISA_TMR1_CNT_ST 0x41
-#define PIIX4_ISA_TMR2_CNT_ST 0x42
-#define PIIX4_ISA_TMR_TCW 0x43
-
-#define PIIX4_ISA_RST_XBUS 0x60
-
-#define PIIX4_ISA_NMI_CNT_ST 0x61
-#define PIIX4_ISA_NMI_ENABLE 0x70
-
-#define PIIX4_ISA_RTC_INDEX 0x70
-#define PIIX4_ISA_RTC_DATA 0x71
-#define PIIX4_ISA_RTCEXT_IND 0x70
-#define PIIX4_ISA_RTCEXT_DATA 0x71
-
-#define PIIX4_ISA_DMA1_CH2LPG 0x81
-#define PIIX4_ISA_DMA1_CH3LPG 0x82
-#define PIIX4_ISA_DMA1_CH1LPG 0x83
-#define PIIX4_ISA_DMA1_CH0LPG 0x87
-#define PIIX4_ISA_DMA2_CH2LPG 0x89
-#define PIIX4_ISA_DMA2_CH3LPG 0x8A
-#define PIIX4_ISA_DMA2_CH1LPG 0x8B
-#define PIIX4_ISA_DMA2_LPGRFR 0x8F
-
-#define PIIX4_ISA_PORT_92 0x92
-
-#define PIIX4_ISA_APM_CONTRL 0xB2
-#define PIIX4_ISA_APM_STATUS 0xB3
-
-#define PIIX4_ISA_COCPU_ERROR 0xF0
-
-/* Function 1 IDE Controller */
-#define PCI_CFG_PIIX4_BMIBA 0x20
-#define PCI_CFG_PIIX4_IDETIM 0x40
-#define PCI_CFG_PIIX4_SIDETIM 0x44
-#define PCI_CFG_PIIX4_UDMACTL 0x48
-#define PCI_CFG_PIIX4_UDMATIM 0x4A
-
-/* Function 2 USB Controller */
-#define PCI_CFG_PIIX4_SBRNUM 0x60
-#define PCI_CFG_PIIX4_LEGSUP 0xC0
-
-/* Function 3 Power Management */
-#define PCI_CFG_PIIX4_PMBA 0x40
-#define PCI_CFG_PIIX4_CNTA 0x44
-#define PCI_CFG_PIIX4_CNTB 0x48
-#define PCI_CFG_PIIX4_GPICTL 0x4C
-#define PCI_CFG_PIIX4_DEVRESD 0x50
-#define PCI_CFG_PIIX4_DEVACTA 0x54
-#define PCI_CFG_PIIX4_DEVACTB 0x58
-#define PCI_CFG_PIIX4_DEVRESA 0x5C
-#define PCI_CFG_PIIX4_DEVRESB 0x60
-#define PCI_CFG_PIIX4_DEVRESC 0x64
-#define PCI_CFG_PIIX4_DEVRESE 0x68
-#define PCI_CFG_PIIX4_DEVRESF 0x6C
-#define PCI_CFG_PIIX4_DEVRESG 0x70
-#define PCI_CFG_PIIX4_DEVRESH 0x74
-#define PCI_CFG_PIIX4_DEVRESI 0x78
-#define PCI_CFG_PIIX4_PMMISC 0x80
-#define PCI_CFG_PIIX4_SMBBA 0x90
-
-
-#endif
diff --git a/board/mpl/common/usb_uhci.c b/board/mpl/common/usb_uhci.c
deleted file mode 100644
index 84c91c44b6..0000000000
--- a/board/mpl/common/usb_uhci.c
+++ /dev/null
@@ -1,1169 +0,0 @@
-/*
- * Part of this code has been derived from linux:
- * Universal Host Controller Interface driver for USB (take II).
- *
- * (c) 1999-2001 Georg Acher, acher@in.tum.de (executive slave) (base guitar)
- * Deti Fliegl, deti@fliegl.de (executive slave) (lead voice)
- * Thomas Sailer, sailer@ife.ee.ethz.ch (chief consultant) (cheer leader)
- * Roman Weissgaerber, weissg@vienna.at (virt root hub) (studio porter)
- * (c) 2000 Yggdrasil Computing, Inc. (port of new PCI interface support
- * from usb-ohci.c by Adam Richter, adam@yggdrasil.com).
- * (C) 2000 David Brownell, david-b@pacbell.net (usb-ohci.c)
- *
- * HW-initalization based on material of
- *
- * (C) Copyright 1999 Linus Torvalds
- * (C) Copyright 1999 Johannes Erdfelt
- * (C) Copyright 1999 Randy Dunlap
- * (C) Copyright 1999 Gregory P. Smith
- *
- *
- * Adapted for U-Boot:
- * (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
- *
- *
- */
-
-/**********************************************************************
- * How it works:
- * -------------
- * The framelist / Transfer descriptor / Queue Heads are similar like
- * in the linux usb_uhci.c.
- *
- * During initialization, the following skeleton is allocated in init_skel:
- *
- * framespecific | common chain
- *
- * framelist[]
- * [ 0 ]-----> TD ---------\
- * [ 1 ]-----> TD ----------> TD ------> QH -------> QH -------> QH ---> NULL
- * ... TD ---------/
- * [1023]-----> TD --------/
- *
- * ^^ ^^ ^^ ^^ ^^
- * 7 TDs for 1 TD for Start of Start of End Chain
- * INT (2-128ms) 1ms-INT CTRL Chain BULK Chain
- *
- *
- * Since this is a bootloader, the isochronous transfer descriptor have been removed.
- *
- * Interrupt Transfers.
- * --------------------
- * For Interupt transfers USB_MAX_TEMP_INT_TD Transfer descriptor are available. They
- * will be inserted after the appropriate (depending the interval setting) skeleton TD.
- * If an interrupt has been detected the dev->irqhandler is called. The status and number
- * of transfered bytes is stored in dev->irq_status resp. dev->irq_act_len. If the
- * dev->irqhandler returns 0, the interrupt TD is removed and disabled. If an 1 is returned,
- * the interrupt TD will be reactivated.
- *
- * Control Transfers
- * -----------------
- * Control Transfers are issued by filling the tmp_td with the appropriate data and connect
- * them to the qh_cntrl queue header. Before other control/bulk transfers can be issued,
- * the programm has to wait for completion. This does not allows asynchronous data transfer.
- *
- * Bulk Transfers
- * --------------
- * Bulk Transfers are issued by filling the tmp_td with the appropriate data and connect
- * them to the qh_bulk queue header. Before other control/bulk transfers can be issued,
- * the programm has to wait for completion. This does not allows asynchronous data transfer.
- *
- *
- */
-
-#include <common.h>
-#include <pci.h>
-
-#ifdef CONFIG_USB_UHCI
-
-#include <usb.h>
-#include "usb_uhci.h"
-
-#define USB_MAX_TEMP_TD 128 /* number of temporary TDs for bulk and control transfers */
-#define USB_MAX_TEMP_INT_TD 32 /* number of temporary TDs for Interrupt transfers */
-
-
-#undef USB_UHCI_DEBUG
-
-#ifdef USB_UHCI_DEBUG
-#define USB_UHCI_PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define USB_UHCI_PRINTF(fmt,args...)
-#endif
-
-
-static int irqvec = -1; /* irq vector, if -1 uhci is stopped / reseted */
-unsigned int usb_base_addr; /* base address */
-
-static uhci_td_t td_int[8]; /* Interrupt Transfer descriptors */
-static uhci_qh_t qh_cntrl; /* control Queue Head */
-static uhci_qh_t qh_bulk; /* bulk Queue Head */
-static uhci_qh_t qh_end; /* end Queue Head */
-static uhci_td_t td_last; /* last TD (linked with end chain) */
-
-/* temporary tds */
-static uhci_td_t tmp_td[USB_MAX_TEMP_TD]; /* temporary bulk/control td's */
-static uhci_td_t tmp_int_td[USB_MAX_TEMP_INT_TD]; /* temporary interrupt td's */
-
-static unsigned long framelist[1024] __attribute__ ((aligned (0x1000))); /* frame list */
-
-static struct virt_root_hub rh; /* struct for root hub */
-
-/**********************************************************************
- * some forward decleration
- */
-int uhci_submit_rh_msg(struct usb_device *dev, unsigned long pipe,
- void *buffer, int transfer_len,struct devrequest *setup);
-
-/* fill a td with the approproiate data. Link, status, info and buffer
- * are used by the USB controller itselfes, dev is used to identify the
- * "connected" device
- */
-void usb_fill_td(uhci_td_t* td,unsigned long link,unsigned long status,
- unsigned long info, unsigned long buffer, unsigned long dev)
-{
- td->link=swap_32(link);
- td->status=swap_32(status);
- td->info=swap_32(info);
- td->buffer=swap_32(buffer);
- td->dev_ptr=dev;
-}
-
-/* fill a qh with the approproiate data. Head and element are used by the USB controller
- * itselfes. As soon as a valid dev_ptr is filled, a td chain is connected to the qh.
- * Please note, that after completion of the td chain, the entry element is removed /
- * marked invalid by the USB controller.
- */
-void usb_fill_qh(uhci_qh_t* qh,unsigned long head,unsigned long element)
-{
- qh->head=swap_32(head);
- qh->element=swap_32(element);
- qh->dev_ptr=0L;
-}
-
-/* get the status of a td->status
- */
-unsigned long usb_uhci_td_stat(unsigned long status)
-{
- unsigned long result=0;
- result |= (status & TD_CTRL_NAK) ? USB_ST_NAK_REC : 0;
- result |= (status & TD_CTRL_STALLED) ? USB_ST_STALLED : 0;
- result |= (status & TD_CTRL_DBUFERR) ? USB_ST_BUF_ERR : 0;
- result |= (status & TD_CTRL_BABBLE) ? USB_ST_BABBLE_DET : 0;
- result |= (status & TD_CTRL_CRCTIMEO) ? USB_ST_CRC_ERR : 0;
- result |= (status & TD_CTRL_BITSTUFF) ? USB_ST_BIT_ERR : 0;
- result |= (status & TD_CTRL_ACTIVE) ? USB_ST_NOT_PROC : 0;
- return result;
-}
-
-/* get the status and the transfered len of a td chain.
- * called from the completion handler
- */
-int usb_get_td_status(uhci_td_t *td,struct usb_device *dev)
-{
- unsigned long temp,info;
- unsigned long stat;
- uhci_td_t *mytd=td;
-
- if(dev->devnum==rh.devnum)
- return 0;
- dev->act_len=0;
- stat=0;
- do {
- temp=swap_32((unsigned long)mytd->status);
- stat=usb_uhci_td_stat(temp);
- info=swap_32((unsigned long)mytd->info);
- if(((info & 0xff)!= USB_PID_SETUP) &&
- (((info >> 21) & 0x7ff)!= 0x7ff) &&
- (temp & 0x7FF)!=0x7ff)
- { /* if not setup and not null data pack */
- dev->act_len+=(temp & 0x7FF) + 1; /* the transfered len is act_len + 1 */
- }
- if(stat) { /* status no ok */
- dev->status=stat;
- return -1;
- }
- temp=swap_32((unsigned long)mytd->link);
- mytd=(uhci_td_t *)(temp & 0xfffffff0);
- }while((temp & 0x1)==0); /* process all TDs */
- dev->status=stat;
- return 0; /* Ok */
-}
-
-
-/*-------------------------------------------------------------------
- * LOW LEVEL STUFF
- * assembles QHs und TDs for control, bulk and iso
- *-------------------------------------------------------------------*/
-
-/* Submits a control message. That is a Setup, Data and Status transfer.
- * Routine does not wait for completion.
- */
-int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
- int transfer_len,struct devrequest *setup)
-{
- unsigned long destination, status;
- int maxsze = usb_maxpacket(dev, pipe);
- unsigned long dataptr;
- int len;
- int pktsze;
- int i=0;
-
- if (!maxsze) {
- USB_UHCI_PRINTF("uhci_submit_control_urb: pipesize for pipe %lx is zero\n", pipe);
- return -1;
- }
- if(((pipe>>8)&0x7f)==rh.devnum) {
- /* this is the root hub -> redirect it */
- return uhci_submit_rh_msg(dev,pipe,buffer,transfer_len,setup);
- }
- USB_UHCI_PRINTF("uhci_submit_control start len %x, maxsize %x\n",transfer_len,maxsze);
- /* The "pipe" thing contains the destination in bits 8--18 */
- destination = (pipe & PIPE_DEVEP_MASK) | USB_PID_SETUP; /* Setup stage */
- /* 3 errors */
- status = (pipe & TD_CTRL_LS) | TD_CTRL_ACTIVE | (3 << 27);
- /* (urb->transfer_flags & USB_DISABLE_SPD ? 0 : TD_CTRL_SPD); */
- /* Build the TD for the control request, try forever, 8 bytes of data */
- usb_fill_td(&tmp_td[i],UHCI_PTR_TERM ,status, destination | (7 << 21),(unsigned long)setup,(unsigned long)dev);
-#if 0
- {
- char *sp=(char *)setup;
- printf("SETUP to pipe %lx: %x %x %x %x %x %x %x %x\n", pipe,
- sp[0],sp[1],sp[2],sp[3],sp[4],sp[5],sp[6],sp[7]);
- }
-#endif
- dataptr = (unsigned long)buffer;
- len=transfer_len;
-
- /* If direction is "send", change the frame from SETUP (0x2D)
- to OUT (0xE1). Else change it from SETUP to IN (0x69). */
- destination = (pipe & PIPE_DEVEP_MASK) | ((pipe & USB_DIR_IN)==0 ? USB_PID_OUT : USB_PID_IN);
- while (len > 0) {
- /* data stage */
- pktsze = len;
- i++;
- if (pktsze > maxsze)
- pktsze = maxsze;
- destination ^= 1 << TD_TOKEN_TOGGLE; /* toggle DATA0/1 */
- usb_fill_td(&tmp_td[i],UHCI_PTR_TERM, status, destination | ((pktsze - 1) << 21),dataptr,(unsigned long)dev); /* Status, pktsze bytes of data */
- tmp_td[i-1].link=swap_32((unsigned long)&tmp_td[i]);
-
- dataptr += pktsze;
- len -= pktsze;
- }
-
- /* Build the final TD for control status */
- /* It's only IN if the pipe is out AND we aren't expecting data */
-
- destination &= ~UHCI_PID;
- if (((pipe & USB_DIR_IN)==0) || (transfer_len == 0))
- destination |= USB_PID_IN;
- else
- destination |= USB_PID_OUT;
- destination |= 1 << TD_TOKEN_TOGGLE; /* End in Data1 */
- i++;
- status &=~TD_CTRL_SPD;
- /* no limit on errors on final packet , 0 bytes of data */
- usb_fill_td(&tmp_td[i],UHCI_PTR_TERM, status | TD_CTRL_IOC, destination | (UHCI_NULL_DATA_SIZE << 21),0,(unsigned long)dev);
- tmp_td[i-1].link=swap_32((unsigned long)&tmp_td[i]); /* queue status td */
- /* usb_show_td(i+1);*/
- USB_UHCI_PRINTF("uhci_submit_control end (%d tmp_tds used)\n",i);
- /* first mark the control QH element terminated */
- qh_cntrl.element=0xffffffffL;
- /* set qh active */
- qh_cntrl.dev_ptr=(unsigned long)dev;
- /* fill in tmp_td_chain */
- qh_cntrl.element=swap_32((unsigned long)&tmp_td[0]);
- return 0;
-}
-
-/*-------------------------------------------------------------------
- * Prepare TDs for bulk transfers.
- */
-int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer,int transfer_len)
-{
- unsigned long destination, status,info;
- unsigned long dataptr;
- int maxsze = usb_maxpacket(dev, pipe);
- int len;
- int i=0;
-
- if(transfer_len < 0) {
- printf("Negative transfer length in submit_bulk\n");
- return -1;
- }
- if (!maxsze)
- return -1;
- /* The "pipe" thing contains the destination in bits 8--18. */
- destination = (pipe & PIPE_DEVEP_MASK) | usb_packetid (pipe);
- /* 3 errors */
- status = (pipe & TD_CTRL_LS) | TD_CTRL_ACTIVE | (3 << 27);
- /* ((urb->transfer_flags & USB_DISABLE_SPD) ? 0 : TD_CTRL_SPD) | (3 << 27); */
- /* Build the TDs for the bulk request */
- len = transfer_len;
- dataptr = (unsigned long)buffer;
- do {
- int pktsze = len;
- if (pktsze > maxsze)
- pktsze = maxsze;
- /* pktsze bytes of data */
- info = destination | (((pktsze - 1)&UHCI_NULL_DATA_SIZE) << 21) |
- (usb_gettoggle (dev, usb_pipeendpoint (pipe), usb_pipeout (pipe)) << TD_TOKEN_TOGGLE);
-
- if((len-pktsze)==0)
- status |= TD_CTRL_IOC; /* last one generates INT */
-
- usb_fill_td(&tmp_td[i],UHCI_PTR_TERM, status, info,dataptr,(unsigned long)dev); /* Status, pktsze bytes of data */
- if(i>0)
- tmp_td[i-1].link=swap_32((unsigned long)&tmp_td[i]);
- i++;
- dataptr += pktsze;
- len -= pktsze;
- usb_dotoggle (dev, usb_pipeendpoint (pipe), usb_pipeout (pipe));
- } while (len > 0);
- /* first mark the bulk QH element terminated */
- qh_bulk.element=0xffffffffL;
- /* set qh active */
- qh_bulk.dev_ptr=(unsigned long)dev;
- /* fill in tmp_td_chain */
- qh_bulk.element=swap_32((unsigned long)&tmp_td[0]);
- return 0;
-}
-
-
-/* search a free interrupt td
- */
-uhci_td_t *uhci_alloc_int_td(void)
-{
- int i;
- for(i=0;i<USB_MAX_TEMP_INT_TD;i++) {
- if(tmp_int_td[i].dev_ptr==0) /* no device assigned -> free TD */
- return &tmp_int_td[i];
- }
- return NULL;
-}
-
-#if 0
-void uhci_show_temp_int_td(void)
-{
- int i;
- for(i=0;i<USB_MAX_TEMP_INT_TD;i++) {
- if((tmp_int_td[i].dev_ptr&0x01)!=0x1L) /* no device assigned -> free TD */
- printf("temp_td %d is assigned to dev %lx\n",i,tmp_int_td[i].dev_ptr);
- }
- printf("all others temp_tds are free\n");
-}
-#endif
-/*-------------------------------------------------------------------
- * submits USB interrupt (ie. polling ;-)
- */
-int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer,int transfer_len, int interval)
-{
- int nint, n;
- unsigned long status, destination;
- unsigned long info,tmp;
- uhci_td_t *mytd;
- if (interval < 0 || interval >= 256)
- return -1;
-
- if (interval == 0)
- nint = 0;
- else {
- for (nint = 0, n = 1; nint <= 8; nint++, n += n) /* round interval down to 2^n */
- {
- if(interval < n) {
- interval = n / 2;
- break;
- }
- }
- nint--;
- }
-
- USB_UHCI_PRINTF("Rounded interval to %i, chain %i\n", interval, nint);
- mytd=uhci_alloc_int_td();
- if(mytd==NULL) {
- printf("No free INT TDs found\n");
- return -1;
- }
- status = (pipe & TD_CTRL_LS) | TD_CTRL_ACTIVE | TD_CTRL_IOC | (3 << 27);
-/* (urb->transfer_flags & USB_DISABLE_SPD ? 0 : TD_CTRL_SPD) | (3 << 27);
-*/
-
- destination =(pipe & PIPE_DEVEP_MASK) | usb_packetid (pipe) | (((transfer_len - 1) & 0x7ff) << 21);
-
- info = destination | (usb_gettoggle(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe)) << TD_TOKEN_TOGGLE);
- tmp = swap_32(td_int[nint].link);
- usb_fill_td(mytd,tmp,status, info,(unsigned long)buffer,(unsigned long)dev);
- /* Link it */
- tmp = swap_32((unsigned long)mytd);
- td_int[nint].link=tmp;
-
- usb_dotoggle (dev, usb_pipeendpoint (pipe), usb_pipeout (pipe));
-
- return 0;
-}
-
-/**********************************************************************
- * Low Level functions
- */
-
-
-void reset_hc(void)
-{
-
- /* Global reset for 100ms */
- out16r( usb_base_addr + USBPORTSC1,0x0204);
- out16r( usb_base_addr + USBPORTSC2,0x0204);
- out16r( usb_base_addr + USBCMD,USBCMD_GRESET | USBCMD_RS);
- /* Turn off all interrupts */
- out16r(usb_base_addr + USBINTR,0);
- wait_ms(50);
- out16r( usb_base_addr + USBCMD,0);
- wait_ms(10);
-}
-
-void start_hc(void)
-{
- int timeout = 1000;
-
- while(in16r(usb_base_addr + USBCMD) & USBCMD_HCRESET) {
- if (!--timeout) {
- printf("USBCMD_HCRESET timed out!\n");
- break;
- }
- }
- /* Turn on all interrupts */
- out16r(usb_base_addr + USBINTR,USBINTR_TIMEOUT | USBINTR_RESUME | USBINTR_IOC | USBINTR_SP);
- /* Start at frame 0 */
- out16r(usb_base_addr + USBFRNUM,0);
- /* set Framebuffer base address */
- out32r(usb_base_addr+USBFLBASEADD,(unsigned long)&framelist);
- /* Run and mark it configured with a 64-byte max packet */
- out16r(usb_base_addr + USBCMD,USBCMD_RS | USBCMD_CF | USBCMD_MAXP);
-}
-
-/* Initialize the skeleton
- */
-void usb_init_skel(void)
-{
- unsigned long temp;
- int n;
-
- for(n=0;n<USB_MAX_TEMP_INT_TD;n++)
- tmp_int_td[n].dev_ptr=0L; /* no devices connected */
- /* last td */
- usb_fill_td(&td_last,UHCI_PTR_TERM,TD_CTRL_IOC ,0,0,0L);
- /* usb_fill_td(&td_last,UHCI_PTR_TERM,0,0,0); */
- /* End Queue Header */
- usb_fill_qh(&qh_end,UHCI_PTR_TERM,(unsigned long)&td_last);
- /* Bulk Queue Header */
- temp=(unsigned long)&qh_end;
- usb_fill_qh(&qh_bulk,temp | UHCI_PTR_QH,UHCI_PTR_TERM);
- /* Control Queue Header */
- temp=(unsigned long)&qh_bulk;
- usb_fill_qh(&qh_cntrl, temp | UHCI_PTR_QH,UHCI_PTR_TERM);
- /* 1ms Interrupt td */
- temp=(unsigned long)&qh_cntrl;
- usb_fill_td(&td_int[0],temp | UHCI_PTR_QH,0,0,0,0L);
- temp=(unsigned long)&td_int[0];
- for(n=1; n<8; n++)
- usb_fill_td(&td_int[n],temp,0,0,0,0L);
- for (n = 0; n < 1024; n++) {
- /* link all framelist pointers to one of the interrupts */
- int m, o;
- if ((n&127)==127)
- framelist[n]= swap_32((unsigned long)&td_int[0]);
- else
- for (o = 1, m = 2; m <= 128; o++, m += m)
- if ((n & (m - 1)) == ((m - 1) / 2))
- framelist[n]= swap_32((unsigned long)&td_int[o]);
- }
-}
-
-/* check the common skeleton for completed transfers, and update the status
- * of the "connected" device. Called from the IRQ routine.
- */
-void usb_check_skel(void)
-{
- struct usb_device *dev;
- /* start with the control qh */
- if(qh_cntrl.dev_ptr!=0) /* it's a device assigned check if this caused IRQ */
- {
- dev=(struct usb_device *)qh_cntrl.dev_ptr;
- usb_get_td_status(&tmp_td[0],dev); /* update status */
- if(!(dev->status & USB_ST_NOT_PROC)) { /* is not active anymore, disconnect devices */
- qh_cntrl.dev_ptr=0;
- }
- }
- /* now process the bulk */
- if(qh_bulk.dev_ptr!=0) /* it's a device assigned check if this caused IRQ */
- {
- dev=(struct usb_device *)qh_bulk.dev_ptr;
- usb_get_td_status(&tmp_td[0],dev); /* update status */
- if(!(dev->status & USB_ST_NOT_PROC)) { /* is not active anymore, disconnect devices */
- qh_bulk.dev_ptr=0;
- }
- }
-}
-
-/* check the interrupt chain, ubdate the status of the appropriate device,
- * call the appropriate irqhandler and reactivate the TD if the irqhandler
- * returns with 1
- */
-void usb_check_int_chain(void)
-{
- int i,res;
- unsigned long link,status;
- struct usb_device *dev;
- uhci_td_t *td,*prevtd;
-
- for(i=0;i<8;i++) {
- prevtd=&td_int[i]; /* the first previous td is the skeleton td */
- link=swap_32(td_int[i].link) & 0xfffffff0; /* next in chain */
- td=(uhci_td_t *)link; /* assign it */
- /* all interrupt TDs are finally linked to the td_int[0].
- * so we process all until we find the td_int[0].
- * if int0 chain points to a QH, we're also done
- */
- while(((i>0) && (link != (unsigned long)&td_int[0])) ||
- ((i==0) && !(swap_32(td->link) & UHCI_PTR_QH)))
- {
- /* check if a device is assigned with this td */
- status=swap_32(td->status);
- if((td->dev_ptr!=0L) && !(status & TD_CTRL_ACTIVE)) {
- /* td is not active and a device is assigned -> call irqhandler */
- dev=(struct usb_device *)td->dev_ptr;
- dev->irq_act_len=((status & 0x7FF)==0x7FF) ? 0 : (status & 0x7FF) + 1; /* transfered length */
- dev->irq_status=usb_uhci_td_stat(status); /* get status */
- res=dev->irq_handle(dev); /* call irqhandler */
- if(res==1) {
- /* reactivate */
- status|=TD_CTRL_ACTIVE;
- td->status=swap_32(status);
- prevtd=td; /* previous td = this td */
- }
- else {
- prevtd->link=td->link; /* link previous td directly to the nex td -> unlinked */
- /* remove device pointer */
- td->dev_ptr=0L;
- }
- } /* if we call the irq handler */
- link=swap_32(td->link) & 0xfffffff0; /* next in chain */
- td=(uhci_td_t *)link; /* assign it */
- } /* process all td in this int chain */
- } /* next interrupt chain */
-}
-
-
-/* usb interrupt service routine.
- */
-void handle_usb_interrupt(void)
-{
- unsigned short status;
-
- /*
- * Read the interrupt status, and write it back to clear the
- * interrupt cause
- */
-
- status = in16r(usb_base_addr + USBSTS);
-
- if (!status) /* shared interrupt, not mine */
- return;
- if (status != 1) {
- /* remove host controller halted state */
- if ((status&0x20) && ((in16r(usb_base_addr+USBCMD) && USBCMD_RS)==0)) {
- out16r(usb_base_addr + USBCMD, USBCMD_RS | in16r(usb_base_addr + USBCMD));
- }
- }
- usb_check_int_chain(); /* call interrupt handlers for int tds */
- usb_check_skel(); /* call completion handler for common transfer routines */
- out16r(usb_base_addr+USBSTS,status);
-}
-
-
-/* init uhci
- */
-int usb_lowlevel_init(void)
-{
- unsigned char temp;
- int busdevfunc;
-
- busdevfunc=pci_find_device(USB_UHCI_VEND_ID,USB_UHCI_DEV_ID,0); /* get PCI Device ID */
- if(busdevfunc==-1) {
- printf("Error USB UHCI (%04X,%04X) not found\n",USB_UHCI_VEND_ID,USB_UHCI_DEV_ID);
- return -1;
- }
- pci_read_config_byte(busdevfunc,PCI_INTERRUPT_LINE,&temp);
- irqvec = temp;
- irq_free_handler(irqvec);
- USB_UHCI_PRINTF("Interrupt Line = %d, is %d\n",irqvec);
- pci_read_config_byte(busdevfunc,PCI_INTERRUPT_PIN,&temp);
- USB_UHCI_PRINTF("Interrupt Pin = %ld\n",temp);
- pci_read_config_dword(busdevfunc,PCI_BASE_ADDRESS_4,&usb_base_addr);
- USB_UHCI_PRINTF("IO Base Address = 0x%lx\n",usb_base_addr);
- usb_base_addr&=0xFFFFFFF0;
- usb_base_addr+=CFG_ISA_IO_BASE_ADDRESS;
- rh.devnum = 0;
- usb_init_skel();
- reset_hc();
- start_hc();
- irq_install_handler(irqvec, (interrupt_handler_t *)handle_usb_interrupt, NULL);
- return 0;
-}
-
-/* stop uhci
- */
-int usb_lowlevel_stop(void)
-{
- if(irqvec==-1)
- return 1;
- irq_free_handler(irqvec);
- reset_hc();
- irqvec=-1;
- return 0;
-}
-
-/*******************************************************************************************
- * Virtual Root Hub
- * Since the uhci does not have a real HUB, we simulate one ;-)
- */
-#undef USB_RH_DEBUG
-
-#ifdef USB_RH_DEBUG
-#define USB_RH_PRINTF(fmt,args...) printf (fmt ,##args)
-static void usb_display_wValue(unsigned short wValue,unsigned short wIndex);
-static void usb_display_Req(unsigned short req);
-#else
-#define USB_RH_PRINTF(fmt,args...)
-static void usb_display_wValue(unsigned short wValue,unsigned short wIndex) {}
-static void usb_display_Req(unsigned short req) {}
-#endif
-
-static unsigned char root_hub_dev_des[] =
-{
- 0x12, /* __u8 bLength; */
- 0x01, /* __u8 bDescriptorType; Device */
- 0x00, /* __u16 bcdUSB; v1.0 */
- 0x01,
- 0x09, /* __u8 bDeviceClass; HUB_CLASSCODE */
- 0x00, /* __u8 bDeviceSubClass; */
- 0x00, /* __u8 bDeviceProtocol; */
- 0x08, /* __u8 bMaxPacketSize0; 8 Bytes */
- 0x00, /* __u16 idVendor; */
- 0x00,
- 0x00, /* __u16 idProduct; */
- 0x00,
- 0x00, /* __u16 bcdDevice; */
- 0x00,
- 0x01, /* __u8 iManufacturer; */
- 0x00, /* __u8 iProduct; */
- 0x00, /* __u8 iSerialNumber; */
- 0x01 /* __u8 bNumConfigurations; */
-};
-
-
-/* Configuration descriptor */
-static unsigned char root_hub_config_des[] =
-{
- 0x09, /* __u8 bLength; */
- 0x02, /* __u8 bDescriptorType; Configuration */
- 0x19, /* __u16 wTotalLength; */
- 0x00,
- 0x01, /* __u8 bNumInterfaces; */
- 0x01, /* __u8 bConfigurationValue; */
- 0x00, /* __u8 iConfiguration; */
- 0x40, /* __u8 bmAttributes;
- Bit 7: Bus-powered, 6: Self-powered, 5 Remote-wakwup, 4..0: resvd */
- 0x00, /* __u8 MaxPower; */
-
- /* interface */
- 0x09, /* __u8 if_bLength; */
- 0x04, /* __u8 if_bDescriptorType; Interface */
- 0x00, /* __u8 if_bInterfaceNumber; */
- 0x00, /* __u8 if_bAlternateSetting; */
- 0x01, /* __u8 if_bNumEndpoints; */
- 0x09, /* __u8 if_bInterfaceClass; HUB_CLASSCODE */
- 0x00, /* __u8 if_bInterfaceSubClass; */
- 0x00, /* __u8 if_bInterfaceProtocol; */
- 0x00, /* __u8 if_iInterface; */
-
- /* endpoint */
- 0x07, /* __u8 ep_bLength; */
- 0x05, /* __u8 ep_bDescriptorType; Endpoint */
- 0x81, /* __u8 ep_bEndpointAddress; IN Endpoint 1 */
- 0x03, /* __u8 ep_bmAttributes; Interrupt */
- 0x08, /* __u16 ep_wMaxPacketSize; 8 Bytes */
- 0x00,
- 0xff /* __u8 ep_bInterval; 255 ms */
-};
-
-
-static unsigned char root_hub_hub_des[] =
-{
- 0x09, /* __u8 bLength; */
- 0x29, /* __u8 bDescriptorType; Hub-descriptor */
- 0x02, /* __u8 bNbrPorts; */
- 0x00, /* __u16 wHubCharacteristics; */
- 0x00,
- 0x01, /* __u8 bPwrOn2pwrGood; 2ms */
- 0x00, /* __u8 bHubContrCurrent; 0 mA */
- 0x00, /* __u8 DeviceRemovable; *** 7 Ports max *** */
- 0xff /* __u8 PortPwrCtrlMask; *** 7 ports max *** */
-};
-
-static unsigned char root_hub_str_index0[] =
-{
- 0x04, /* __u8 bLength; */
- 0x03, /* __u8 bDescriptorType; String-descriptor */
- 0x09, /* __u8 lang ID */
- 0x04, /* __u8 lang ID */
-};
-
-static unsigned char root_hub_str_index1[] =
-{
- 28, /* __u8 bLength; */
- 0x03, /* __u8 bDescriptorType; String-descriptor */
- 'U', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'H', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'C', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'I', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- ' ', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'R', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'o', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'o', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 't', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- ' ', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'H', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'u', /* __u8 Unicode */
- 0, /* __u8 Unicode */
- 'b', /* __u8 Unicode */
- 0, /* __u8 Unicode */
-};
-
-
-/*
- * Root Hub Control Pipe (interrupt Pipes are not supported)
- */
-
-
-int uhci_submit_rh_msg(struct usb_device *dev, unsigned long pipe, void *buffer,int transfer_len,struct devrequest *cmd)
-{
- void *data = buffer;
- int leni = transfer_len;
- int len = 0;
- int status = 0;
- int stat = 0;
- int i;
-
- unsigned short cstatus;
-
- unsigned short bmRType_bReq;
- unsigned short wValue;
- unsigned short wIndex;
- unsigned short wLength;
-
- if ((pipe & PIPE_INTERRUPT) == PIPE_INTERRUPT) {
- printf("Root-Hub submit IRQ: NOT implemented\n");
-#if 0
- uhci->rh.urb = urb;
- uhci->rh.send = 1;
- uhci->rh.interval = urb->interval;
- rh_init_int_timer (urb);
-#endif
- return 0;
- }
- bmRType_bReq = cmd->requesttype | cmd->request << 8;
- wValue = swap_16(cmd->value);
- wIndex = swap_16(cmd->index);
- wLength = swap_16(cmd->length);
- usb_display_Req(bmRType_bReq);
- for (i = 0; i < 8; i++)
- rh.c_p_r[i] = 0;
- USB_RH_PRINTF("Root-Hub: adr: %2x cmd(%1x): %02x%02x %04x %04x %04x\n",
- dev->devnum, 8, cmd->requesttype,cmd->request, wValue, wIndex, wLength);
-
- switch (bmRType_bReq) {
- /* Request Destination:
- without flags: Device,
- RH_INTERFACE: interface,
- RH_ENDPOINT: endpoint,
- RH_CLASS means HUB here,
- RH_OTHER | RH_CLASS almost ever means HUB_PORT here
- */
-
- case RH_GET_STATUS:
- *(unsigned short *) data = swap_16(1);
- len=2;
- break;
- case RH_GET_STATUS | RH_INTERFACE:
- *(unsigned short *) data = swap_16(0);
- len=2;
- break;
- case RH_GET_STATUS | RH_ENDPOINT:
- *(unsigned short *) data = swap_16(0);
- len=2;
- break;
- case RH_GET_STATUS | RH_CLASS:
- *(unsigned long *) data = swap_32(0);
- len=4;
- break; /* hub power ** */
- case RH_GET_STATUS | RH_OTHER | RH_CLASS:
-
- status = in16r(usb_base_addr + USBPORTSC1 + 2 * (wIndex - 1));
- cstatus = ((status & USBPORTSC_CSC) >> (1 - 0)) |
- ((status & USBPORTSC_PEC) >> (3 - 1)) |
- (rh.c_p_r[wIndex - 1] << (0 + 4));
- status = (status & USBPORTSC_CCS) |
- ((status & USBPORTSC_PE) >> (2 - 1)) |
- ((status & USBPORTSC_SUSP) >> (12 - 2)) |
- ((status & USBPORTSC_PR) >> (9 - 4)) |
- (1 << 8) | /* power on ** */
- ((status & USBPORTSC_LSDA) << (-8 + 9));
-
- *(unsigned short *) data = swap_16(status);
- *(unsigned short *) (data + 2) = swap_16(cstatus);
- len=4;
- break;
- case RH_CLEAR_FEATURE | RH_ENDPOINT:
- switch (wValue) {
- case (RH_ENDPOINT_STALL):
- len=0;
- break;
- }
- break;
-
- case RH_CLEAR_FEATURE | RH_CLASS:
- switch (wValue) {
- case (RH_C_HUB_OVER_CURRENT):
- len=0; /* hub power over current ** */
- break;
- }
- break;
-
- case RH_CLEAR_FEATURE | RH_OTHER | RH_CLASS:
- usb_display_wValue(wValue,wIndex);
- switch (wValue) {
- case (RH_PORT_ENABLE):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) & ~USBPORTSC_PE;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_PORT_SUSPEND):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) & ~USBPORTSC_SUSP;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_PORT_POWER):
- len=0; /* port power ** */
- break;
- case (RH_C_PORT_CONNECTION):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) | USBPORTSC_CSC;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_C_PORT_ENABLE):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) | USBPORTSC_PEC;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_C_PORT_SUSPEND):
-/*** WR_RH_PORTSTAT(RH_PS_PSSC); */
- len=0;
- break;
- case (RH_C_PORT_OVER_CURRENT):
- len=0;
- break;
- case (RH_C_PORT_RESET):
- rh.c_p_r[wIndex - 1] = 0;
- len=0;
- break;
- }
- break;
- case RH_SET_FEATURE | RH_OTHER | RH_CLASS:
- usb_display_wValue(wValue,wIndex);
- switch (wValue) {
- case (RH_PORT_SUSPEND):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) | USBPORTSC_SUSP;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_PORT_RESET):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) | USBPORTSC_PR;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- wait_ms(10);
- status = (status & 0xfff5) & ~USBPORTSC_PR;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- udelay(10);
- status = (status & 0xfff5) | USBPORTSC_PE;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- wait_ms(10);
- status = (status & 0xfff5) | 0xa;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- case (RH_PORT_POWER):
- len=0; /* port power ** */
- break;
- case (RH_PORT_ENABLE):
- status = in16r(usb_base_addr+USBPORTSC1+2*(wIndex-1));
- status = (status & 0xfff5) | USBPORTSC_PE;
- out16r(usb_base_addr+USBPORTSC1+2*(wIndex-1),status);
- len=0;
- break;
- }
- break;
-
- case RH_SET_ADDRESS:
- rh.devnum = wValue;
- len=0;
- break;
- case RH_GET_DESCRIPTOR:
- switch ((wValue & 0xff00) >> 8) {
- case (0x01): /* device descriptor */
- i=sizeof(root_hub_config_des);
- status=i > wLength ? wLength : i;
- len = leni > status ? status : leni;
- memcpy (data, root_hub_dev_des, len);
- break;
- case (0x02): /* configuration descriptor */
- i=sizeof(root_hub_config_des);
- status=i > wLength ? wLength : i;
- len = leni > status ? status : leni;
- memcpy (data, root_hub_config_des, len);
- break;
- case (0x03): /*string descriptors */
- if(wValue==0x0300) {
- i=sizeof(root_hub_str_index0);
- status = i > wLength ? wLength : i;
- len = leni > status ? status : leni;
- memcpy (data, root_hub_str_index0, len);
- break;
- }
- if(wValue==0x0301) {
- i=sizeof(root_hub_str_index1);
- status = i > wLength ? wLength : i;
- len = leni > status ? status : leni;
- memcpy (data, root_hub_str_index1, len);
- break;
- }
- stat = USB_ST_STALLED;
- }
- break;
-
- case RH_GET_DESCRIPTOR | RH_CLASS:
- root_hub_hub_des[2] = 2;
- i=sizeof(root_hub_hub_des);
- status= i > wLength ? wLength : i;
- len = leni > status ? status : leni;
- memcpy (data, root_hub_hub_des, len);
- break;
- case RH_GET_CONFIGURATION:
- *(unsigned char *) data = 0x01;
- len = 1;
- break;
- case RH_SET_CONFIGURATION:
- len=0;
- break;
- default:
- stat = USB_ST_STALLED;
- }
- USB_RH_PRINTF("Root-Hub stat %lx port1: %x port2: %x\n\n",stat,
- in16r(usb_base_addr + USBPORTSC1), in16r(usb_base_addr + USBPORTSC2));
- dev->act_len=len;
- dev->status=stat;
- return stat;
-
-}
-
-/********************************************************************************
- * Some Debug Routines
- */
-
-#ifdef USB_RH_DEBUG
-
-static void usb_display_Req(unsigned short req)
-{
- USB_RH_PRINTF("- Root-Hub Request: ");
- switch (req) {
- case RH_GET_STATUS:
- USB_RH_PRINTF("Get Status ");
- break;
- case RH_GET_STATUS | RH_INTERFACE:
- USB_RH_PRINTF("Get Status Interface ");
- break;
- case RH_GET_STATUS | RH_ENDPOINT:
- USB_RH_PRINTF("Get Status Endpoint ");
- break;
- case RH_GET_STATUS | RH_CLASS:
- USB_RH_PRINTF("Get Status Class");
- break; /* hub power ** */
- case RH_GET_STATUS | RH_OTHER | RH_CLASS:
- USB_RH_PRINTF("Get Status Class Others");
- break;
- case RH_CLEAR_FEATURE | RH_ENDPOINT:
- USB_RH_PRINTF("Clear Feature Endpoint ");
- break;
- case RH_CLEAR_FEATURE | RH_CLASS:
- USB_RH_PRINTF("Clear Feature Class ");
- break;
- case RH_CLEAR_FEATURE | RH_OTHER | RH_CLASS:
- USB_RH_PRINTF("Clear Feature Other Class ");
- break;
- case RH_SET_FEATURE | RH_OTHER | RH_CLASS:
- USB_RH_PRINTF("Set Feature Other Class ");
- break;
- case RH_SET_ADDRESS:
- USB_RH_PRINTF("Set Address ");
- break;
- case RH_GET_DESCRIPTOR:
- USB_RH_PRINTF("Get Descriptor ");
- break;
- case RH_GET_DESCRIPTOR | RH_CLASS:
- USB_RH_PRINTF("Get Descriptor Class ");
- break;
- case RH_GET_CONFIGURATION:
- USB_RH_PRINTF("Get Configuration ");
- break;
- case RH_SET_CONFIGURATION:
- USB_RH_PRINTF("Get Configuration ");
- break;
- default:
- USB_RH_PRINTF("****UNKNOWN**** 0x%04X ",req);
- }
- USB_RH_PRINTF("\n");
-
-}
-
-static void usb_display_wValue(unsigned short wValue,unsigned short wIndex)
-{
- switch (wValue) {
- case (RH_PORT_ENABLE):
- USB_RH_PRINTF("Root-Hub: Enable Port %d\n",wIndex);
- break;
- case (RH_PORT_SUSPEND):
- USB_RH_PRINTF("Root-Hub: Suspend Port %d\n",wIndex);
- break;
- case (RH_PORT_POWER):
- USB_RH_PRINTF("Root-Hub: Port Power %d\n",wIndex);
- break;
- case (RH_C_PORT_CONNECTION):
- USB_RH_PRINTF("Root-Hub: C Port Connection Port %d\n",wIndex);
- break;
- case (RH_C_PORT_ENABLE):
- USB_RH_PRINTF("Root-Hub: C Port Enable Port %d\n",wIndex);
- break;
- case (RH_C_PORT_SUSPEND):
- USB_RH_PRINTF("Root-Hub: C Port Suspend Port %d\n",wIndex);
- break;
- case (RH_C_PORT_OVER_CURRENT):
- USB_RH_PRINTF("Root-Hub: C Port Over Current Port %d\n",wIndex);
- break;
- case (RH_C_PORT_RESET):
- USB_RH_PRINTF("Root-Hub: C Port reset Port %d\n",wIndex);
- break;
- default:
- USB_RH_PRINTF("Root-Hub: unknown %x %x\n",wValue,wIndex);
- break;
- }
-}
-
-#endif
-
-
-#ifdef USB_UHCI_DEBUG
-
-static int usb_display_td(uhci_td_t *td)
-{
- unsigned long tmp;
- int valid;
-
- printf("TD at %p:\n",td);
-
- tmp=swap_32(td->link);
- printf("Link points to 0x%08lX, %s first, %s, %s\n",tmp&0xfffffff0,
- ((tmp & 0x4)==0x4) ? "Depth" : "Breath",
- ((tmp & 0x2)==0x2) ? "QH" : "TD",
- ((tmp & 0x1)==0x1) ? "invalid" : "valid");
- valid=((tmp & 0x1)==0x0);
- tmp=swap_32(td->status);
- printf(" %s %ld Errors %s %s %s \n %s %s %s %s %s %s\n Len 0x%lX\n",
- (((tmp>>29)&0x1)==0x1) ? "SPD Enable" : "SPD Disable",
- ((tmp>>28)&0x3),
- (((tmp>>26)&0x1)==0x1) ? "Low Speed" : "Full Speed",
- (((tmp>>25)&0x1)==0x1) ? "ISO " : "",
- (((tmp>>24)&0x1)==0x1) ? "IOC " : "",
- (((tmp>>23)&0x1)==0x1) ? "Active " : "Inactive ",
- (((tmp>>22)&0x1)==0x1) ? "Stalled" : "",
- (((tmp>>21)&0x1)==0x1) ? "Data Buffer Error" : "",
- (((tmp>>20)&0x1)==0x1) ? "Babble" : "",
- (((tmp>>19)&0x1)==0x1) ? "NAK" : "",
- (((tmp>>18)&0x1)==0x1) ? "Bitstuff Error" : "",
- (tmp&0x7ff));
- tmp=swap_32(td->info);
- printf(" MaxLen 0x%lX\n",((tmp>>21)&0x7FF));
- printf(" %s Endpoint 0x%lX Dev Addr 0x%lX PID 0x%lX\n",((tmp>>19)&0x1)==0x1 ? "TOGGLE" : "",
- ((tmp>>15)&0xF),((tmp>>8)&0x7F),tmp&0xFF);
- tmp=swap_32(td->buffer);
- printf(" Buffer 0x%08lX\n",tmp);
- printf(" DEV %08lX\n",td->dev_ptr);
- return valid;
-}
-
-
-void usb_show_td(int max)
-{
- int i;
- if(max>0) {
- for(i=0;i<max;i++) {
- usb_display_td(&tmp_td[i]);
- }
- }
- else {
- i=0;
- do {
- printf("tmp_td[%d]\n",i);
- }while(usb_display_td(&tmp_td[i++]));
- }
-}
-
-
-#endif
-#endif /* CONFIG_USB_UHCI */
-
-/* EOF */
diff --git a/board/mpl/common/usb_uhci.h b/board/mpl/common/usb_uhci.h
deleted file mode 100644
index af8083751e..0000000000
--- a/board/mpl/common/usb_uhci.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * (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/vcma9/Makefile b/board/mpl/vcma9/Makefile
deleted file mode 100644
index 209322e51c..0000000000
--- a/board/mpl/vcma9/Makefile
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS := vcma9.o flash.o cmd_vcma9.o
-COBJS += ../common/common_util.o ../common/memtst.o
-
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/mpl/vcma9/cmd_vcma9.c b/board/mpl/vcma9/cmd_vcma9.c
deleted file mode 100644
index 44b4112554..0000000000
--- a/board/mpl/vcma9/cmd_vcma9.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * (C) Copyright 2002
- * Denis Peter, MPL AG Switzerland, d.peter@mpl.ch
- *
- * adapted for VCMA9
- * David Mueller, ELSOFT AG, d.mueller@elsoft.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
- *
- */
-
-#include <common.h>
-#include <command.h>
-#include "vcma9.h"
-#include "../common/common_util.h"
-
-#if defined(CONFIG_DRIVER_CS8900)
-#include <../drivers/cs8900.h>
-
-static uchar cs8900_chksum(ushort data)
-{
- return((data >> 8) & 0x00FF) + (data & 0x00FF);
-}
-
-#endif
-
-extern void print_vcma9_info(void);
-extern int vcma9_cantest(int);
-extern int vcma9_nandtest(void);
-extern int vcma9_nanderase(void);
-extern int vcma9_nandread(ulong);
-extern int vcma9_nandwrite(ulong);
-extern int vcma9_dactest(int);
-extern int do_mplcommon(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-
-/* ------------------------------------------------------------------------- */
-
-int do_vcma9(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- DECLARE_GLOBAL_DATA_PTR;
-
- if (strcmp(argv[1], "info") == 0)
- {
- print_vcma9_info();
- return 0;
- }
-#if defined(CONFIG_DRIVER_CS8900)
- if (strcmp(argv[1], "cs8900") == 0) {
- if (strcmp(argv[2], "read") == 0) {
- uchar addr; ushort data;
-
- addr = simple_strtoul(argv[3], NULL, 16);
- cs8900_e2prom_read(addr, &data);
- printf("0x%2.2X: 0x%4.4X\n", addr, data);
- } else if (strcmp(argv[2], "write") == 0) {
- uchar addr; ushort data;
-
- addr = simple_strtoul(argv[3], NULL, 16);
- data = simple_strtoul(argv[4], NULL, 16);
- cs8900_e2prom_write(addr, data);
- } else if (strcmp(argv[2], "setaddr") == 0) {
- uchar addr, i, csum; ushort data;
-
- /* check for valid ethaddr */
- for (i = 0; i < 6; i++)
- if (gd->bd->bi_enetaddr[i] != 0)
- break;
-
- if (i < 6) {
- addr = 1;
- data = 0x2158;
- cs8900_e2prom_write(addr, data);
- csum = cs8900_chksum(data);
- addr++;
- for (i = 0; i < 6; i+=2) {
- data = gd->bd->bi_enetaddr[i+1] << 8 |
- gd->bd->bi_enetaddr[i];
- cs8900_e2prom_write(addr, data);
- csum += cs8900_chksum(data);
- addr++;
- }
- /* calculate header link byte */
- data = 0xA100 | (addr * 2);
- cs8900_e2prom_write(0, data);
- csum += cs8900_chksum(data);
- /* write checksum word */
- cs8900_e2prom_write(addr, (0 - csum) << 8);
- } else {
- puts("\nplease defined 'ethaddr'\n");
- }
- } else if (strcmp(argv[2], "dump") == 0) {
- uchar addr = 0, endaddr, csum; ushort data;
-
- puts("Dump of CS8900 config device: ");
- cs8900_e2prom_read(addr, &data);
- if ((data & 0xE000) == 0xA000) {
- endaddr = (data & 0x00FF) / 2;
- csum = cs8900_chksum(data);
- for (addr = 1; addr <= endaddr; addr++) {
- cs8900_e2prom_read(addr, &data);
- printf("\n0x%2.2X: 0x%4.4X", addr, data);
- csum += cs8900_chksum(data);
- }
- printf("\nChecksum: %s", (csum == 0) ? "ok" : "wrong");
- } else {
- puts("no valid config found");
- }
- puts("\n");
- }
-
- return 0;
- }
-#endif
-#if 0
- if (strcmp(argv[1], "cantest") == 0) {
- if (argc >= 3)
- vcma9_cantest(strcmp(argv[2], "s") ? 0 : 1);
- else
- vcma9_cantest(0);
- return 0;
- }
- if (strcmp(argv[1], "nandtest") == 0) {
- vcma9_nandtest();
- return 0;
- }
- if (strcmp(argv[1], "nanderase") == 0) {
- vcma9_nanderase();
- return 0;
- }
- if (strcmp(argv[1], "nandread") == 0) {
- ulong offset = 0;
-
- if (argc >= 3)
- offset = simple_strtoul(argv[2], NULL, 16);
-
- vcma9_nandread(offset);
- return 0;
- }
- if (strcmp(argv[1], "nandwrite") == 0) {
- ulong offset = 0;
-
- if (argc >= 3)
- offset = simple_strtoul(argv[2], NULL, 16);
-
- vcma9_nandwrite(offset);
- return 0;
- }
- if (strcmp(argv[1], "dactest") == 0) {
- if (argc >= 3)
- vcma9_dactest(strcmp(argv[2], "s") ? 0 : 1);
- else
- vcma9_dactest(0);
- return 0;
- }
-#endif
-
- return (do_mplcommon(cmdtp, flag, argc, argv));
-}
-
-U_BOOT_CMD(
- vcma9, 6, 1, do_vcma9,
- "vcma9 - VCMA9 specific commands\n",
- "flash mem [SrcAddr]\n - updates U-Boot with image in memory\n"
-);
diff --git a/board/mpl/vcma9/config.mk b/board/mpl/vcma9/config.mk
deleted file mode 100644
index 1fa09c97b2..0000000000
--- a/board/mpl/vcma9/config.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# (C) Copyright 2002, 2003
-# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-#
-# MPL VCMA9 board with S3C2410X (ARM920T) cpu
-#
-# see http://www.mpl.ch/ for more information about the MPL VCMA9
-#
-
-#
-# MPL VCMA9 has 1 bank of minimal 16 MB DRAM
-# from 0x30000000
-#
-# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
-# optionally with a ramdisk at 3040'0000
-#
-# we load ourself to 33F8'0000
-#
-# download area is 3080'0000
-#
-
-
-#TEXT_BASE = 0x30F80000
-TEXT_BASE = 0x33F80000
diff --git a/board/mpl/vcma9/flash.c b/board/mpl/vcma9/flash.c
deleted file mode 100644
index ccfe1768f6..0000000000
--- a/board/mpl/vcma9/flash.c
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@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
- */
-
-#include <common.h>
-
-ulong myflush (void);
-
-
-#define FLASH_BANK_SIZE PHYS_FLASH_SIZE
-#define MAIN_SECT_SIZE 0x10000 /* 64 KB */
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-#define CMD_READ_ARRAY 0x000000F0
-#define CMD_UNLOCK1 0x000000AA
-#define CMD_UNLOCK2 0x00000055
-#define CMD_ERASE_SETUP 0x00000080
-#define CMD_ERASE_CONFIRM 0x00000030
-#define CMD_PROGRAM 0x000000A0
-#define CMD_UNLOCK_BYPASS 0x00000020
-
-#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555 << 1)))
-#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA << 1)))
-
-#define BIT_ERASE_DONE 0x00000080
-#define BIT_RDY_MASK 0x00000080
-#define BIT_PROGRAM_ERROR 0x00000020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
-#if defined(CONFIG_AMD_LV400)
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV400B & FLASH_TYPEMASK);
-#elif defined(CONFIG_AMD_LV800)
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV800B & FLASH_TYPEMASK);
-#else
-#error "Unknown flash configured"
-#endif
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic ("configured too many flash banks!\n");
- for (j = 0; j < flash_info[i].sector_count; j++) {
- if (j <= 3) {
- /* 1st one is 16 KB */
- if (j == 0) {
- flash_info[i].start[j] =
- flashbase + 0;
- }
-
- /* 2nd and 3rd are both 8 KB */
- if ((j == 1) || (j == 2)) {
- flash_info[i].start[j] =
- flashbase + 0x4000 + (j -
- 1) *
- 0x2000;
- }
-
- /* 4th 32 KB */
- if (j == 3) {
- flash_info[i].start[j] =
- flashbase + 0x8000;
- }
- } else {
- flash_info[i].start[j] =
- flashbase + (j - 3) * MAIN_SECT_SIZE;
- }
- }
- size += flash_info[i].size;
- }
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- puts ("AMD: ");
- break;
- default:
- puts ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_LV400B & FLASH_TYPEMASK):
- puts ("1x Amd29LV400BB (4Mbit)\n");
- break;
- case (AMD_ID_LV800B & FLASH_TYPEMASK):
- puts ("1x Amd29LV800BB (8Mbit)\n");
- break;
- default:
- puts ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- puts (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- puts ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- puts ("\n");
-
-Done: ;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- ushort result;
- int iflag, cflag, prot, sect;
- int rc = ERR_OK;
- int chip;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (AMD_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- if (info->protect[sect] == 0) { /* not protected */
- vu_short *addr = (vu_short *) (info->start[sect]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- chip = 0;
-
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- chip = TMO;
- break;
- }
-
- if (!chip
- && (result & 0xFFFF) & BIT_ERASE_DONE)
- chip = READY;
-
- if (!chip
- && (result & 0xFFFF) & BIT_PROGRAM_ERROR)
- chip = ERR;
-
- } while (!chip);
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- if (chip == ERR) {
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (chip == TMO) {
- rc = ERR_TIMOUT;
- goto outahere;
- }
-
- puts ("ok.\n");
- } else { /* it was protected */
-
- puts ("protected!\n");
- }
- }
-
- if (ctrlc ())
- puts ("User Interrupt!\n");
-
- outahere:
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-volatile static int write_hword (flash_info_t * info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short *) dest;
- ushort result;
- int rc = ERR_OK;
- int cflag, iflag;
- int chip;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait until flash is ready */
- chip = 0;
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- chip = ERR | TMO;
- break;
- }
- if (!chip && ((result & 0x80) == (data & 0x80)))
- chip = READY;
-
- if (!chip && ((result & 0xFFFF) & BIT_PROGRAM_ERROR)) {
- result = *addr;
-
- if ((result & 0x80) == (data & 0x80))
- chip = READY;
- else
- chip = ERR;
- }
-
- } while (!chip);
-
- *addr = CMD_READ_ARRAY;
-
- if (chip == ERR || *addr != data)
- rc = ERR_PROG_ERROR;
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- int l;
- int i, rc;
- ushort data;
-
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
- for (; i < 2 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- if ((rc = write_hword (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 2) {
- data = *((vu_short *) src);
- if ((rc = write_hword (info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- }
- for (; i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- return write_hword (info, wp, data);
-}
diff --git a/board/mpl/vcma9/lowlevel_init.S b/board/mpl/vcma9/lowlevel_init.S
deleted file mode 100644
index a02335314b..0000000000
--- a/board/mpl/vcma9/lowlevel_init.S
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Memory Setup stuff - taken from blob memsetup.S
- *
- * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
- * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
- *
- * Modified for the Samsung SMDK2410 by
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.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
- */
-
-
-#include <config.h>
-#include <version.h>
-
-
-/* some parameters for the board */
-
-#define BWSCON 0x48000000
-#define PLD_BASE 0x2C000000
-#define SDRAM_REG 0x2C000106
-
-/* BWSCON */
-#define DW8 (0x0)
-#define DW16 (0x1)
-#define DW32 (0x2)
-#define WAIT (0x1<<2)
-#define UBLB (0x1<<3)
-
-/* BANKSIZE */
-#define BURST_EN (0x1<<7)
-
-#define B1_BWSCON (DW16)
-#define B2_BWSCON (DW32)
-#define B3_BWSCON (DW32)
-#define B4_BWSCON (DW16 + WAIT + UBLB)
-#define B5_BWSCON (DW8 + UBLB)
-#define B6_BWSCON (DW32)
-#define B7_BWSCON (DW32)
-
-/* BANK0CON */
-#define B0_Tacs 0x0 /* 0clk */
-#define B0_Tcos 0x1 /* 1clk */
-/*#define B0_Tcos 0x0 0clk */
-#define B0_Tacc 0x7 /* 14clk */
-/*#define B0_Tacc 0x5 8clk */
-#define B0_Tcoh 0x0 /* 0clk */
-#define B0_Tah 0x0 /* 0clk */
-#define B0_Tacp 0x0 /* page mode is not used */
-#define B0_PMC 0x0 /* page mode disabled */
-
-/* BANK1CON */
-#define B1_Tacs 0x0 /* 0clk */
-#define B1_Tcos 0x1 /* 1clk */
-/*#define B1_Tcos 0x0 0clk */
-#define B1_Tacc 0x7 /* 14clk */
-/*#define B1_Tacc 0x5 8clk */
-#define B1_Tcoh 0x0 /* 0clk */
-#define B1_Tah 0x0 /* 0clk */
-#define B1_Tacp 0x0 /* page mode is not used */
-#define B1_PMC 0x0 /* page mode disabled */
-
-#define B2_Tacs 0x3 /* 4clk */
-#define B2_Tcos 0x3 /* 4clk */
-#define B2_Tacc 0x7 /* 14clk */
-#define B2_Tcoh 0x3 /* 4clk */
-#define B2_Tah 0x3 /* 4clk */
-#define B2_Tacp 0x0 /* page mode is not used */
-#define B2_PMC 0x0 /* page mode disabled */
-
-#define B3_Tacs 0x3 /* 4clk */
-#define B3_Tcos 0x3 /* 4clk */
-#define B3_Tacc 0x7 /* 14clk */
-#define B3_Tcoh 0x3 /* 4clk */
-#define B3_Tah 0x3 /* 4clk */
-#define B3_Tacp 0x0 /* page mode is not used */
-#define B3_PMC 0x0 /* page mode disabled */
-
-#define B4_Tacs 0x3 /* 4clk */
-#define B4_Tcos 0x1 /* 1clk */
-#define B4_Tacc 0x7 /* 14clk */
-#define B4_Tcoh 0x1 /* 1clk */
-#define B4_Tah 0x0 /* 0clk */
-#define B4_Tacp 0x0 /* page mode is not used */
-#define B4_PMC 0x0 /* page mode disabled */
-
-#define B5_Tacs 0x0 /* 0clk */
-#define B5_Tcos 0x3 /* 4clk */
-#define B5_Tacc 0x5 /* 8clk */
-#define B5_Tcoh 0x2 /* 2clk */
-#define B5_Tah 0x1 /* 1clk */
-#define B5_Tacp 0x0 /* page mode is not used */
-#define B5_PMC 0x0 /* page mode disabled */
-
-#define B6_MT 0x3 /* SDRAM */
-#define B6_Trcd 0x1 /* 3clk */
-#define B6_SCAN 0x2 /* 10bit */
-
-#define B7_MT 0x3 /* SDRAM */
-#define B7_Trcd 0x1 /* 3clk */
-#define B7_SCAN 0x2 /* 10bit */
-
-/* REFRESH parameter */
-#define REFEN 0x1 /* Refresh enable */
-#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
-#define Trp 0x0 /* 2clk */
-#define Trc 0x3 /* 7clk */
-#define Tchr 0x2 /* 3clk */
-#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
-/**************************************/
-
-_TEXT_BASE:
- .word TEXT_BASE
-
-.globl lowlevel_init
-lowlevel_init:
- /* memory control configuration */
- /* make r0 relative the current location so that it */
- /* reads SMRDATA out of FLASH rather than memory ! */
- ldr r0, =CSDATA
- ldr r1, _TEXT_BASE
- sub r0, r0, r1
- ldr r1, =BWSCON /* Bus Width Status Controller */
- add r2, r0, #CSDATA_END-CSDATA
-0:
- ldr r3, [r0], #4
- str r3, [r1], #4
- cmp r2, r0
- bne 0b
-
- /* PLD access is now possible */
- /* r0 == SDRAMDATA */
- /* r1 == SDRAM controller regs */
- ldr r2, =PLD_BASE
- ldrb r3, [r2, #SDRAM_REG-PLD_BASE]
- mov r4, #SDRAMDATA1_END-SDRAMDATA
- /* calculate start and end point */
- mla r0, r3, r4, r0
- add r2, r0, r4
-0:
- ldr r3, [r0], #4
- str r3, [r1], #4
- cmp r2, r0
- bne 0b
-
- /* everything is fine now */
- mov pc, lr
-
- .ltorg
-/* the literal pools origin */
-
-CSDATA:
- .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
- .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
- .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
- .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
- .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
- .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
- .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
-CSDATA_END:
-
-SDRAMDATA:
-/* 4Mx8x4 */
- .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
- .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
- .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
- .word 0x32 + BURST_EN
- .word 0x30
- .word 0x30
-SDRAMDATA1_END:
-
-/* 8Mx8x4 (not implemented yet) */
- .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
- .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
- .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
- .word 0x32 + BURST_EN
- .word 0x30
- .word 0x30
-
-/* 2Mx8x4 (not implemented yet) */
- .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
- .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
- .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
- .word 0x32 + BURST_EN
- .word 0x30
- .word 0x30
-
-/* 4Mx8x2 (not implemented yet) */
- .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
- .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
- .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
- .word 0x32 + BURST_EN
- .word 0x30
- .word 0x30
diff --git a/board/mpl/vcma9/u-boot.lds b/board/mpl/vcma9/u-boot.lds
deleted file mode 100644
index f4fbf969c3..0000000000
--- a/board/mpl/vcma9/u-boot.lds
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/mpl/vcma9/vcma9.c b/board/mpl/vcma9/vcma9.c
deleted file mode 100644
index 0d2003d2fc..0000000000
--- a/board/mpl/vcma9/vcma9.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.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
- */
-
-#include <common.h>
-#include <s3c2410.h>
-#include <i2c.h>
-
-#include "vcma9.h"
-#include "../common/common_util.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define FCLK_SPEED 1
-
-#if FCLK_SPEED==0 /* Fout = 203MHz, Fin = 12MHz for Audio */
-#define M_MDIV 0xC3
-#define M_PDIV 0x4
-#define M_SDIV 0x1
-#elif FCLK_SPEED==1 /* Fout = 202.8MHz */
-#define M_MDIV 0xA1
-#define M_PDIV 0x3
-#define M_SDIV 0x1
-#endif
-
-#define USB_CLOCK 1
-
-#if USB_CLOCK==0
-#define U_M_MDIV 0xA1
-#define U_M_PDIV 0x3
-#define U_M_SDIV 0x1
-#elif USB_CLOCK==1
-#define U_M_MDIV 0x48
-#define U_M_PDIV 0x3
-#define U_M_SDIV 0x2
-#endif
-
-static inline void delay(unsigned long loops)
-{
- __asm__ volatile ("1:\n"
- "subs %0, %1, #1\n"
- "bne 1b":"=r" (loops):"0" (loops));
-}
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init(void)
-{
- S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* to reduce PLL lock time, adjust the LOCKTIME register */
- clk_power->LOCKTIME = 0xFFFFFF;
-
- /* configure MPLL */
- clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
-
- /* some delay between MPLL and UPLL */
- delay (4000);
-
- /* configure UPLL */
- clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
-
- /* some delay between MPLL and UPLL */
- delay (8000);
-
- /* set up the I/O ports */
- gpio->GPACON = 0x007FFFFF;
- gpio->GPBCON = 0x002AAAAA;
- gpio->GPBUP = 0x000002BF;
- gpio->GPCCON = 0xAAAAAAAA;
- gpio->GPCUP = 0x0000FFFF;
- gpio->GPDCON = 0xAAAAAAAA;
- gpio->GPDUP = 0x0000FFFF;
- gpio->GPECON = 0xAAAAAAAA;
- gpio->GPEUP = 0x000037F7;
- gpio->GPFCON = 0x00000000;
- gpio->GPFUP = 0x00000000;
- gpio->GPGCON = 0xFFEAFF5A;
- gpio->GPGUP = 0x0000F0DC;
- gpio->GPHCON = 0x0028AAAA;
- gpio->GPHUP = 0x00000656;
-
- /* setup correct IRQ modes for NIC */
- gpio->EXTINT2 = (gpio->EXTINT2 & ~(7<<8)) | (4<<8); /* rising edge mode */
-
- /* select USB port 2 to be host or device (fix to host for now) */
- gpio->MISCCR |= 0x08;
-
- /* init serial */
- gd->baudrate = CONFIG_BAUDRATE;
- gd->have_console = 1;
- serial_init();
-
- /* arch number of VCMA9-Board */
- gd->bd->bi_arch_number = MACH_TYPE_MPL_VCMA9;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x30000100;
-
- icache_enable();
- dcache_enable();
-
- return 0;
-}
-
-/*
- * NAND flash initialization.
- */
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-extern ulong
-nand_probe(ulong physadr);
-
-
-static inline void NF_Reset(void)
-{
- int i;
-
- NF_SetCE(NFCE_LOW);
- NF_Cmd(0xFF); /* reset command */
- for(i = 0; i < 10; i++); /* tWB = 100ns. */
- NF_WaitRB(); /* wait 200~500us; */
- NF_SetCE(NFCE_HIGH);
-}
-
-
-static inline void NF_Init(void)
-{
-#if 0 /* a little bit too optimistic */
-#define TACLS 0
-#define TWRPH0 3
-#define TWRPH1 0
-#else
-#define TACLS 0
-#define TWRPH0 4
-#define TWRPH1 2
-#endif
-
- NF_Conf((1<<15)|(0<<14)|(0<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0));
- /*nand->NFCONF = (1<<15)|(1<<14)|(1<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0); */
- /* 1 1 1 1, 1 xxx, r xxx, r xxx */
- /* En 512B 4step ECCR nFCE=H tACLS tWRPH0 tWRPH1 */
-
- NF_Reset();
-}
-
-void
-nand_init(void)
-{
- S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
-
- NF_Init();
-#ifdef DEBUG
- printf("NAND flash probing at 0x%.8lX\n", (ulong)nand);
-#endif
- printf ("%4lu MB\n", nand_probe((ulong)nand) >> 20);
-}
-#endif
-
-/*
- * Get some Board/PLD Info
- */
-
-static u8 Get_PLD_ID(void)
-{
- VCMA9_PLD * const pld = VCMA9_GetBase_PLD();
-
- return(pld->ID);
-}
-
-static u8 Get_PLD_BOARD(void)
-{
- VCMA9_PLD * const pld = VCMA9_GetBase_PLD();
-
- return(pld->BOARD);
-}
-
-static u8 Get_PLD_SDRAM(void)
-{
- VCMA9_PLD * const pld = VCMA9_GetBase_PLD();
-
- return(pld->SDRAM);
-}
-
-static u8 Get_PLD_Version(void)
-{
- return((Get_PLD_ID() >> 4) & 0x0F);
-}
-
-static u8 Get_PLD_Revision(void)
-{
- return(Get_PLD_ID() & 0x0F);
-}
-
-#if 0 /* not used */
-static int Get_Board_Config(void)
-{
- u8 config = Get_PLD_BOARD() & 0x03;
-
- if (config == 3)
- return 1;
- else
- return 0;
-}
-#endif
-
-static uchar Get_Board_PCB(void)
-{
- return(((Get_PLD_BOARD() >> 4) & 0x03) + 'A');
-}
-
-static u8 Get_SDRAM_ChipNr(void)
-{
- switch ((Get_PLD_SDRAM() >> 4) & 0x0F) {
- case 0: return 4;
- case 1: return 1;
- case 2: return 2;
- default: return 0;
- }
-}
-
-static ulong Get_SDRAM_ChipSize(void)
-{
- switch (Get_PLD_SDRAM() & 0x0F) {
- case 0: return 16 * (1024*1024);
- case 1: return 32 * (1024*1024);
- case 2: return 8 * (1024*1024);
- case 3: return 8 * (1024*1024);
- default: return 0;
- }
-}
-static const char * Get_SDRAM_ChipGeom(void)
-{
- switch (Get_PLD_SDRAM() & 0x0F) {
- case 0: return "4Mx8x4";
- case 1: return "8Mx8x4";
- case 2: return "2Mx8x4";
- case 3: return "4Mx8x2";
- default: return "unknown";
- }
-}
-
-static void Show_VCMA9_Info(char *board_name, char *serial)
-{
- printf("Board: %s SN: %s PCB Rev: %c PLD(%d,%d)\n",
- board_name, serial, Get_Board_PCB(), Get_PLD_Version(), Get_PLD_Revision());
- printf("SDRAM: %d chips %s\n", Get_SDRAM_ChipNr(), Get_SDRAM_ChipGeom());
-}
-
-int dram_init(void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = Get_SDRAM_ChipSize() * Get_SDRAM_ChipNr();
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard(void)
-{
- unsigned char s[50];
- int i;
- backup_t *b = (backup_t *) s;
-
- i = getenv_r("serial#", s, 32);
- if ((i < 0) || strncmp (s, "VCMA9", 5)) {
- get_backup_values (b);
- if (strncmp (b->signature, "MPL\0", 4) != 0) {
- puts ("### No HW ID - assuming VCMA9");
- } else {
- b->serial_name[5] = 0;
- Show_VCMA9_Info(b->serial_name, &b->serial_name[6]);
- }
- } else {
- s[5] = 0;
- Show_VCMA9_Info(s, &s[6]);
- }
- /*printf("\n");*/
- return(0);
-}
-
-
-extern void mem_test_reloc(void);
-
-int last_stage_init(void)
-{
- mem_test_reloc();
- checkboard();
- show_stdio_dev();
- check_env();
- return 0;
-}
-
-/***************************************************************************
- * some helping routines
- */
-#if !CONFIG_USB_KEYBOARD
-int overwrite_console(void)
-{
- /* return TRUE if console should be overwritten */
- return 0;
-}
-#endif
-
-/************************************************************************
-* Print VCMA9 Info
-************************************************************************/
-void print_vcma9_info(void)
-{
- unsigned char s[50];
- int i;
-
- if ((i = getenv_r("serial#", s, 32)) < 0) {
- puts ("### No HW ID - assuming VCMA9");
- printf("i %d", i*24);
- } else {
- s[5] = 0;
- Show_VCMA9_Info(s, &s[6]);
- }
-}
diff --git a/board/mpl/vcma9/vcma9.h b/board/mpl/vcma9/vcma9.h
deleted file mode 100644
index c0167d5168..0000000000
--- a/board/mpl/vcma9/vcma9.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * (C) Copyright 2002, 2003
- * David Mueller, ELSOFT AG, d.mueller@elsoft.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 VCMA9
- *****************************************************************************/
-
-#include <s3c2410.h>
-
-extern int mem_test(unsigned long start, unsigned long ramsize,int mode);
-
-void print_vcma9_info(void);
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-typedef enum {
- NFCE_LOW,
- NFCE_HIGH
-} NFCE_STATE;
-
-static inline void NF_Conf(u16 conf)
-{
- S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
-
- nand->NFCONF = conf;
-}
-
-static inline void NF_Cmd(u8 cmd)
-{
- S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
-
- nand->NFCMD = cmd;
-}
-
-static inline void NF_CmdW(u8 cmd)
-{
- NF_Cmd(cmd);
- udelay(1);
-}
-
-static inline void NF_Addr(u8 addr)
-{
- S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
-
- nand->NFADDR = addr;
-}
-
-static inline void NF_SetCE(NFCE_STATE s)
-{
- S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
-
- switch (s) {
- case NFCE_LOW:
- nand->NFCONF &= ~(1<<11);
- break;
-
- case NFCE_HIGH:
- nand->NFCONF |= (1<<11);
- break;
- }
-}
-
-static inline void NF_WaitRB(void)
-{
- S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
-
- while (!(nand->NFSTAT & (1<<0)));
-}
-
-static inline void NF_Write(u8 data)
-{
- S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
-
- nand->NFDATA = data;
-}
-
-static inline u8 NF_Read(void)
-{
- S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
-
- return(nand->NFDATA);
-}
-
-static inline void NF_Init_ECC(void)
-{
- S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
-
- nand->NFCONF |= (1<<12);
-}
-
-static inline u32 NF_Read_ECC(void)
-{
- S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
-
- return(nand->NFECC);
-}
-
-#endif
-
-/* VCMA9 PLD regsiters */
-typedef struct {
- S3C24X0_REG8 ID;
- S3C24X0_REG8 NIC;
- S3C24X0_REG8 CAN;
- S3C24X0_REG8 MISC;
- S3C24X0_REG8 GPCD;
- S3C24X0_REG8 BOARD;
- S3C24X0_REG8 SDRAM;
-} /*__attribute__((__packed__))*/ VCMA9_PLD;
-
-#define VCMA9_PLD_BASE 0x2C000100
-static inline VCMA9_PLD * const VCMA9_GetBase_PLD(void)
-{
- return (VCMA9_PLD * const)VCMA9_PLD_BASE;
-}
diff --git a/board/musenki/Makefile b/board/musenki/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/musenki/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/musenki/README b/board/musenki/README
deleted file mode 100644
index 135a01aa0b..0000000000
--- a/board/musenki/README
+++ /dev/null
@@ -1,298 +0,0 @@
-U-Boot for a Musenki M-3/M-1 board
----------------------------
-
-Musenki M-1 and M-3 have two banks of flash of 4MB or 8MB each.
-
-In board's notation, bank 0 is the one at the address of 0xFF800000
-and bank 1 is the one at the address of 0xFF000000.
-
-On power-up the processor jumps to the address of 0xFFF00100, the last
-megabyte of the bank 0 of flash.
-
-Thus, U-Boot is configured to reside in flash starting at the address of
-0xFFF00000. The environment space is located in flash separately from
-U-Boot, at the address of 0xFF800000.
-
-There is a Davicom 9102A on-board, but I don't have it working yet.
-
-U-Boot test results
---------------------
-
-x.x Operation on all available serial consoles
-
-x.x.x CONFIG_CONS_INDEX 1
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU: MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM: 32 MB
-FLASH: 4 MB
-In: serial
-Out: serial
-Err: serial
-Hit any key to stop autoboot: 0
-=> help
-autoscr - run script from memory
-base - print or set address offset
-bdinfo - print Board Info structure
-bootm - boot application image from memory
-bootp - boot image via network using BootP/TFTP protocol
-bootd - boot default, i.e., run 'bootcmd'
-cmp - memory compare
-coninfo - print console devices and informations
-cp - memory copy
-crc32 - checksum calculation
-dcache - enable or disable data cache
-echo - echo args to console
-erase - erase FLASH memory
-flinfo - print FLASH memory information
-go - start application at address 'addr'
-help - print online help
-icache - enable or disable instruction cache
-iminfo - print header information for application image
-loadb - load binary file over serial line (kermit mode)
-loads - load S-Record file over serial line
-loop - infinite loop on address range
-md - memory display
-mm - memory modify (auto-incrementing)
-mtest - simple RAM test
-mw - memory write (fill)
-nm - memory modify (constant address)
-printenv- print environment variables
-protect - enable or disable FLASH write protection
-rarpboot- boot image via network using RARP/TFTP protocol
-reset - Perform RESET of the CPU
-run - run commands in an environment variable
-saveenv - save environment variables to persistent storage
-setenv - set environment variables
-tftpboot- boot image via network using TFTP protocol
- and env variables ipaddr and serverip
-version - print monitor version
-? - alias for 'help'
-
-
-x.x.x CONFIG_CONS_INDEX 2
-
-**** NOT TESTED ****
-
-x.x Flash Driver Operation
-
-
-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU: MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM: 32 MB
-FLASH: 4 MB
-*** Warning - bad CRC, using default environment
-
-In: serial
-Out: serial
-Err: serial
-Hit any key to stop autoboot: 0
-=>
-=> md ff800000
-ff800000: 46989bf8 626f6f74 636d643d 626f6f74 F...bootcmd=boot
-ff800010: 6d204646 38323030 30300062 6f6f7464 m FF820000.bootd
-ff800020: 656c6179 3d350062 61756472 6174653d elay=5.baudrate=
-ff800030: 39363030 00636c6f 636b735f 696e5f6d 9600.clocks_in_m
-ff800040: 687a3d31 00737464 696e3d73 65726961 hz=1.stdin=seria
-ff800050: 6c007374 646f7574 3d736572 69616c00 l.stdout=serial.
-ff800060: 73746465 72723d73 65726961 6c006970 stderr=serial.ip
-ff800070: 61646472 3d313932 2e313638 2e302e34 addr=192.168.0.4
-ff800080: 32007365 72766572 69703d31 39322e31 2.serverip=192.1
-ff800090: 36382e30 2e380000 00000000 00000000 68.0.8..........
-ff8000a0: 00000000 00000000 00000000 00000000 ................
-ff8000b0: 00000000 00000000 00000000 00000000 ................
-ff8000c0: 00000000 00000000 00000000 00000000 ................
-ff8000d0: 00000000 00000000 00000000 00000000 ................
-ff8000e0: 00000000 00000000 00000000 00000000 ................
-ff8000f0: 00000000 00000000 00000000 00000000 ................
-=> protect off ff800000 ff81ffff
-Un-Protected 1 sectors
-=> erase ff800000 ff81ffff
-Erase Flash from 0xff800000 to 0xff81ffff
- done
-Erased 1 sectors
-=> md ff800000
-ff800000: ffffffff ffffffff ffffffff ffffffff ................
-ff800010: ffffffff ffffffff ffffffff ffffffff ................
-ff800020: ffffffff ffffffff ffffffff ffffffff ................
-ff800030: ffffffff ffffffff ffffffff ffffffff ................
-ff800040: ffffffff ffffffff ffffffff ffffffff ................
-ff800050: ffffffff ffffffff ffffffff ffffffff ................
-ff800060: ffffffff ffffffff ffffffff ffffffff ................
-ff800070: ffffffff ffffffff ffffffff ffffffff ................
-ff800080: ffffffff ffffffff ffffffff ffffffff ................
-ff800090: ffffffff ffffffff ffffffff ffffffff ................
-ff8000a0: ffffffff ffffffff ffffffff ffffffff ................
-ff8000b0: ffffffff ffffffff ffffffff ffffffff ................
-ff8000c0: ffffffff ffffffff ffffffff ffffffff ................
-ff8000d0: ffffffff ffffffff ffffffff ffffffff ................
-ff8000e0: ffffffff ffffffff ffffffff ffffffff ................
-ff8000f0: ffffffff ffffffff ffffffff ffffffff ................
-
-x.x.x Information
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU: MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM: 32 MB
-FLASH: 4 MB
-*** Warning - bad CRC, using default environment
-
-In: serial
-Out: serial
-Err: serial
-Hit any key to stop autoboot: 0
-=> flinfo
-
-Bank # 1: Intel 28F320J3A (32Mbit = 128K x 32)
- Size: 4 MB in 32 Sectors
- Sector Start Addresses:
- FF800000 (RO) FF820000 FF840000 FF860000 FF880000
- FF8A0000 FF8C0000 FF8E0000 FF900000 FF920000
- FF940000 FF960000 FF980000 FF9A0000 FF9C0000
- FF9E0000 FFA00000 FFA20000 FFA40000 FFA60000
- FFA80000 FFAA0000 FFAC0000 FFAE0000 FFB00000
- FFB20000 FFB40000 FFB60000 FFB80000 FFBA0000
- FFBC0000 FFBE0000
-
-Bank # 2: missing or unknown FLASH type
-=>
-
-
-x.x.x Flash Programming
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU: MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM: 32 MB
-FLASH: 4 MB
-
-In: serial
-Out: serial
-Err: serial
-Hit any key to stop autoboot: 0
-=>
-=>
-=>
-=> protect off ff800000 ff81ffff
-Un-Protected 1 sectors
-=> cp 0 ff800000 20
-Copy to Flash... done
-=> md ff800000
-ff800000: 37ce33ec 33cc334c 33c031cc 33cc35cc 7.3.3.3L3.1.3.5.
-ff800010: 33ec13ce 30ccb3ec b3c833c4 31c836cc 3...0.....3.1.6.
-ff800020: 33cc3b9d 31ec33ee 13ecf3cc 338833ec 3.;.1.3.....3.3.
-ff800030: 234c33ec 32cc22cc 33883bdc 534433cc #L3.2.".3.;.SD3.
-ff800040: 33cc30c8 31cc32ec 338c33cc 330c33dc 3.0.1.2.3.3.3.3.
-ff800050: 33cc13dc 334c534c b1c433d8 128c13cc 3...3LSL..3.....
-ff800060: 37ec36cd 33dc33cc bbc9f7e8 bbcc77cc 7.6.3.3.......w.
-ff800070: 314c0adc 139c30ed 33cc334c 33c833ec 1L....0.3.3L3.3.
-ff800080: ffffffff ffffffff ffffffff ffffffff ................
-ff800090: ffffffff ffffffff ffffffff ffffffff ................
-ff8000a0: ffffffff ffffffff ffffffff ffffffff ................
-ff8000b0: ffffffff ffffffff ffffffff ffffffff ................
-ff8000c0: ffffffff ffffffff ffffffff ffffffff ................
-ff8000d0: ffffffff ffffffff ffffffff ffffffff ................
-ff8000e0: ffffffff ffffffff ffffffff ffffffff ................
-ff8000f0: ffffffff ffffffff ffffffff ffffffff ................
-
-
-x.x.x Storage of environment variables in flash
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU: MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM: 32 MB
-FLASH: 4 MB
-In: serial
-Out: serial
-Err: serial
-Hit any key to stop autoboot: 0
-=> printenv
-bootcmd=bootm FF820000
-bootdelay=5
-baudrate=9600
-clocks_in_mhz=1
-stdin=serial
-stdout=serial
-stderr=serial
-
-Environment size: 106/16380 bytes
-=> setenv myvar 1234
-=> saveenv
-Un-Protected 1 sectors
-Erasing Flash...
- done
-Erased 1 sectors
-Saving Environment to Flash...
-Protected 1 sectors
-=> reset
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU: MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM: 32 MB
-FLASH: 4 MB
-In: serial
-Out: serial
-Err: serial
-Hit any key to stop autoboot: 0
-=> printenv
-bootcmd=bootm FF820000
-bootdelay=5
-baudrate=9600
-clocks_in_mhz=1
-myvar=1234
-stdin=serial
-stdout=serial
-stderr=serial
-
-Environment size: 117/16380 bytes
-
-x.x Image Download and run over serial port
-
-
-U-Boot 1.1.1 (Nov 20 2001 - 15:55:32)
-
-CPU: MPC8245 Revision 16.20 at 250 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MUSENKI Local Bus at 100 MHz
-DRAM: 32 MB
-FLASH: 4 MB
-In: serial
-Out: serial
-Err: serial
-Hit any key to stop autoboot: 0
-=> loads
-## Ready for S-Record download ...
-
-## First Load Addr = 0x00040000
-## Last Load Addr = 0x00050177
-## Total Size = 0x00010178 = 65912 Bytes
-## Start Addr = 0x00040004
-=> go 40004
-## Starting application at 0x00040004 ...
-Hello World
-argc = 1
-argv[0] = "40004"
-argv[1] = "<NULL>"
-Hit any key to exit ...
-
-## Application terminated, rc = 0x0
-
-
-x.x Image download and run over ethernet interface
-
-untested (not working yet, actually)
diff --git a/board/musenki/config.mk b/board/musenki/config.mk
deleted file mode 100644
index 18673e16d4..0000000000
--- a/board/musenki/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (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
-#
-
-#
-# CU824 board
-#
-
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/musenki/flash.c b/board/musenki/flash.c
deleted file mode 100644
index cd33d8ed33..0000000000
--- a/board/musenki/flash.c
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc824x.h>
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_char *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, uchar *dest, uchar data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-
-/*
- * don't ask. its stupid, but more than one soul has had to live with this mistake
- * "swaptab[i]" is the value of "i" with the bits reversed.
- */
-
-#define MUSENKI_BROKEN_FLASH 1
-
-#ifdef MUSENKI_BROKEN_FLASH
-unsigned char swaptab[256] = {
- 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
- 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
- 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
- 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
- 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
- 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
- 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
- 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
- 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
- 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
- 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
- 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
- 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
- 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
- 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
- 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
- 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
- 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
- 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
- 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
- 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
- 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
- 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
- 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
- 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
- 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
- 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
- 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
- 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
- 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
- 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
- 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
-};
-
-#define BS(b) (swaptab[b])
-
-#else
-
-#define BS(b) (b)
-
-#endif
-
-#define BYTEME(x) ((x) & 0xFF)
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- DEBUGF("\n## Get flash bank 1 size @ 0x%08x\n",CFG_FLASH_BASE0_PRELIM);
-
- size_b0 = flash_get_size((vu_char *)CFG_FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0: "
- "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
- flash_info[0].flash_id,
- size_b0, size_b0<<20);
- }
-
- DEBUGF("## Get flash bank 2 size @ 0x%08x\n",CFG_FLASH_BASE1_PRELIM);
- size_b1 = flash_get_size((vu_char *)CFG_FLASH_BASE1_PRELIM, &flash_info[1]);
-
- DEBUGF("## Prelim. Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- DEBUGF("protect monitor %x @ %x\n", CFG_MONITOR_BASE, monitor_flash_len);
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- DEBUGF("protect environtment %x @ %x\n", CFG_ENV_ADDR, CFG_ENV_SECT_SIZE);
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- flash_info[1].size = size_b1;
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[1]);
-#endif
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- flash_info[1].size = 0;
- }
-
- DEBUGF("## Final Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- base += 0x00020000; /* 128k per bank */
- }
- return;
-
- default:
- printf ("Don't know sector ofsets for flash type 0x%lx\n", info->flash_id);
- return;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("Fujitsu "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("Intel "); break;
- case FLASH_MAN_MT: printf ("MT "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J3A: printf ("28F320J3A (32Mbit = 128K x 32)\n");
- break;
- case FLASH_28F640J3A: printf ("28F640J3A (64Mbit = 128K x 64)\n");
- break;
- case FLASH_28F128J3A: printf ("28F128J3A (128Mbit = 128K x 128)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size >= (1 << 20)) {
- i = 20;
- } else {
- i = 10;
- }
- printf (" Size: %ld %cB in %d Sectors\n",
- info->size >> i,
- (i == 20) ? 'M' : 'k',
- info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_char *addr, flash_info_t *info)
-{
- vu_char manuf, device;
-
- addr[0] = BS(0x90);
- manuf = BS(addr[0]);
- DEBUGF("Manuf. ID @ 0x%08lx: 0x%08x\n", (vu_char *)addr, manuf);
-
- switch (manuf) {
- case BYTEME(AMD_MANUFACT):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case BYTEME(FUJ_MANUFACT):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case BYTEME(SST_MANUFACT):
- info->flash_id = FLASH_MAN_SST;
- break;
- case BYTEME(STM_MANUFACT):
- info->flash_id = FLASH_MAN_STM;
- break;
- case BYTEME(INTEL_MANUFACT):
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = BS(0xFF); /* restore read mode, (yes, BS is a NOP) */
- return 0; /* no or unknown flash */
- }
-
- device = BS(addr[2]); /* device ID */
-
- DEBUGF("Device ID @ 0x%08x: 0x%08x\n", (&addr[1]), device);
-
- switch (device) {
- case BYTEME(INTEL_ID_28F320J3A):
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case BYTEME(INTEL_ID_28F640J3A):
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case BYTEME(INTEL_ID_28F128J3A):
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- addr[0] = BS(0xFF); /* restore read mode (yes, a NOP) */
- return 0; /* => no or unknown flash */
-
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = BS(0xFF); /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
- printf ("Can erase only Intel flash types - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_char *addr = (vu_char *)(info->start[sect]);
- unsigned long status;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = BS(0x50); /* clear status register */
- *addr = BS(0x20); /* erase setup */
- *addr = BS(0xD0); /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = BS(*addr)) & BYTEME(0x00800080)) != BYTEME(0x00800080)) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = BS(0xB0); /* suspend erase */
- *addr = BS(0xFF); /* reset to read mode */
- return 1;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- *addr = BS(0xFF); /* reset to read mode */
- }
- }
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define FLASH_WIDTH 1 /* flash bus width in bytes */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- uchar *wp = (uchar *)addr;
- int rc;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- while (cnt > 0) {
- if ((rc = write_data(info, wp, *src)) != 0) {
- return rc;
- }
- wp++;
- src++;
- cnt--;
- }
-
- return cnt;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, uchar *dest, uchar data)
-{
- vu_char *addr = (vu_char *)dest;
- ulong status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((BS(*addr) & data) != data) {
- return 2;
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = BS(0x40); /* write setup */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
- start = get_timer (0);
-
- while (((status = BS(*addr)) & BYTEME(0x00800080)) != BYTEME(0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *addr = BS(0xFF); /* restore read mode */
- return 1;
- }
- }
-
- *addr = BS(0xFF); /* restore read mode */
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/musenki/musenki.c b/board/musenki/musenki.c
deleted file mode 100644
index 88ef83ac12..0000000000
--- a/board/musenki/musenki.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * (C) Copyright 2001
- * 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
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-
-int checkboard (void)
-{
- ulong busfreq = get_bus_freq(0);
- char buf[32];
-
- printf("Board: MUSENKI Local Bus at %s MHz\n", strmhz(buf, busfreq));
- return 0;
-
-}
-
-#if 0 /* NOT USED */
-int checkflash (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("## Test not implemented yet ##\n");
-
- return (0);
-}
-#endif
-
-long int initdram (int board_type)
-{
- long size;
- long new_bank0_end;
- long mear1;
- long emear1;
-
- size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
-
- new_bank0_end = size - 1;
- mear1 = mpc824x_mpc107_getreg(MEAR1);
- emear1 = mpc824x_mpc107_getreg(EMEAR1);
- mear1 = (mear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
- emear1 = (emear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
- mpc824x_mpc107_setreg(MEAR1, mear1);
- mpc824x_mpc107_setreg(EMEAR1, emear1);
-
- return (size);
-}
-
-/*
- * Initialize PCI Devices
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_sandpoint_config_table[] = {
-#if 0
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- 0x0, 0x0, 0x0, /* unknown eth0 divice */
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_IO |
- PCI_COMMAND_MEMORY |
- PCI_COMMAND_MASTER }},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- 0x0, 0x0, 0x0, /* unknown eth1 device */
- pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
- PCI_ENET1_MEMADDR,
- PCI_COMMAND_IO |
- PCI_COMMAND_MEMORY |
- PCI_COMMAND_MASTER }},
-#endif
- { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_sandpoint_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
- pci_mpc824x_init(&hose);
-}
diff --git a/board/musenki/u-boot.lds b/board/musenki/u-boot.lds
deleted file mode 100644
index 7c051095f8..0000000000
--- a/board/musenki/u-boot.lds
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/mvblue/Makefile b/board/mvblue/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/mvblue/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/mvblue/config.mk b/board/mvblue/config.mk
deleted file mode 100644
index 6e0ce4efbf..0000000000
--- a/board/mvblue/config.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# (C) Copyright 2001-2003
-# 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
-#
-
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/mvblue/flash.c b/board/mvblue/flash.c
deleted file mode 100644
index 8df573aa0b..0000000000
--- a/board/mvblue/flash.c
+++ /dev/null
@@ -1,583 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * (C) Copyright 2001-2003
- *
- * Changes for MATRIX Vision mvBLUE devices
- * MATRIX Vision GmbH / hg,as info@matrix-vision.de
- *
- * 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 <common.h>
-#include <mpc824x.h>
-
-#if 0
- #define mvdebug(p) printf ##p
-#else
- #define mvdebug(p)
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-#define FLASH_BUS_WIDTH 8
-
-#if (FLASH_BUS_WIDTH==32)
- #define FLASH_DATA_MASK 0xffffffff
- #define FLASH_SHIFT 1
- #define FDT vu_long
-#elif (FLASH_BUS_WIDTH==16)
- #define FLASH_DATA_MASK 0xff
- #define FLASH_SHIFT 0
- #define FDT vu_short
-#elif (FLASH_BUS_WIDTH==8)
- #define FLASH_DATA_MASK 0xff
- #define FLASH_SHIFT 0
- #define FDT vu_char
-#else
- #error FLASH_BUS_WIDTH undefined
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *address, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
- int i;
-
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- size_b0 = flash_get_size((vu_long *)0xffc00000, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH : Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- flash_get_offsets (0xffc00000, &flash_info[0]);
- flash_info[0].size = size_b0;
-
- /* monitor protection OFF by default */
- flash_protect ( FLAG_PROTECT_CLEAR, 0xffc00000, 0x2000, flash_info );
-
- return size_b0;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE)
- { /* bottom boot sector types - these are the useful ones! */
- /* set sector offsets for bottom boot block type */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B)
- { /* AMDLV320B has 8 x 8k bottom boot sectors */
- for (i = 0; i < 8; i++) /* +8k */
- info->start[i] = base + (i * (0x00002000 << FLASH_SHIFT));
- for (; i < info->sector_count; i++) /* +64k */
- info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT)) - (0x00070000 << FLASH_SHIFT);
- }
- else
- { /* other types have 4 bottom boot sectors (16,8,8,32) */
- i = 0;
- info->start[i++] = base + 0x00000000; /* - */
- info->start[i++] = base + (0x00004000 << FLASH_SHIFT); /* +16k */
- info->start[i++] = base + (0x00006000 << FLASH_SHIFT); /* +8k */
- info->start[i++] = base + (0x00008000 << FLASH_SHIFT); /* +8k */
- info->start[i++] = base + (0x00010000 << FLASH_SHIFT); /* +32k */
- for (; i < info->sector_count; i++) /* +64k */
- info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT)) - (0x00030000 << FLASH_SHIFT);
- }
- }
- else
- { /* top boot sector types - not so useful */
- /* set sector offsets for top boot block type */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T)
- { /* AMDLV320T has 8 x 8k top boot sectors */
- for (i = 0; i < info->sector_count - 8; i++) /* +64k */
- info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT));
- for (; i < info->sector_count; i++) /* +8k */
- info->start[i] = base + (i * (0x00002000 << FLASH_SHIFT));
- }
- else
- { /* other types have 4 top boot sectors (32,8,8,16) */
- for (i = 0; i < info->sector_count - 4; i++) /* +64k */
- info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT));
-
- info->start[i++] = base + info->size - (0x00010000 << FLASH_SHIFT); /* -32k */
- info->start[i++] = base + info->size - (0x00008000 << FLASH_SHIFT); /* -8k */
- info->start[i++] = base + info->size - (0x00006000 << FLASH_SHIFT); /* -8k */
- info->start[i] = base + info->size - (0x00004000 << FLASH_SHIFT); /* -16k */
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_STM: printf ("ST "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_STMW320DB: printf ("M29W320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_STMW320DT: printf ("M29W320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n", info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s", info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-#define AMD_ID_LV160T_MVS (AMD_ID_LV160T & FLASH_DATA_MASK)
-#define AMD_ID_LV160B_MVS (AMD_ID_LV160B & FLASH_DATA_MASK)
-#define AMD_ID_LV320T_MVS (AMD_ID_LV320T & FLASH_DATA_MASK)
-#define AMD_ID_LV320B_MVS (AMD_ID_LV320B & FLASH_DATA_MASK)
-#define STM_ID_W320DT_MVS (STM_ID_29W320DT & FLASH_DATA_MASK)
-#define STM_ID_W320DB_MVS (STM_ID_29W320DB & FLASH_DATA_MASK)
-#define AMD_MANUFACT_MVS (AMD_MANUFACT & FLASH_DATA_MASK)
-#define FUJ_MANUFACT_MVS (FUJ_MANUFACT & FLASH_DATA_MASK)
-#define STM_MANUFACT_MVS (STM_MANUFACT & FLASH_DATA_MASK)
-
-#if (FLASH_BUS_WIDTH >= 16)
- #define AUTOSELECT_ADDR1 0x0555
- #define AUTOSELECT_ADDR2 0x02AA
- #define AUTOSELECT_ADDR3 AUTOSELECT_ADDR1
-#else
- #define AUTOSELECT_ADDR1 0x0AAA
- #define AUTOSELECT_ADDR2 0x0555
- #define AUTOSELECT_ADDR3 AUTOSELECT_ADDR1
-#endif
-
-#define AUTOSELECT_DATA1 (0x00AA00AA & FLASH_DATA_MASK)
-#define AUTOSELECT_DATA2 (0x00550055 & FLASH_DATA_MASK)
-#define AUTOSELECT_DATA3 (0x00900090 & FLASH_DATA_MASK)
-
-#define RESET_BANK_DATA (0x00F000F0 & FLASH_DATA_MASK)
-
-
-static ulong flash_get_size (vu_long *address, flash_info_t *info)
-{
- short i;
- FDT value;
- FDT *addr = (FDT *)address;
-
- ulong base = (ulong)address;
- addr[AUTOSELECT_ADDR1] = AUTOSELECT_DATA1;
- addr[AUTOSELECT_ADDR2] = AUTOSELECT_DATA2;
- addr[AUTOSELECT_ADDR3] = AUTOSELECT_DATA3;
- __asm__ __volatile__("sync");
-
- udelay(180);
-
- value = addr[0]; /* manufacturer ID */
- switch (value) {
- case AMD_MANUFACT_MVS:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT_MVS:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case STM_MANUFACT_MVS:
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-#if (FLASH_BUS_WIDTH >= 16)
- value = addr[1]; /* device ID */
-#else
- value = addr[2]; /* device ID */
-#endif
-
- switch (value) {
- case AMD_ID_LV160T_MVS:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 37;
- info->size = (0x00200000 << FLASH_SHIFT);
- break; /* => 2 or 4 MB */
-
- case AMD_ID_LV160B_MVS:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 37;
- info->size = (0x00200000 << FLASH_SHIFT);
- break; /* => 2 or 4 MB */
-
- case AMD_ID_LV320T_MVS:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 71;
- info->size = (0x00400000 << FLASH_SHIFT);
- break; /* => 4 or 8 MB */
-
- case AMD_ID_LV320B_MVS:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = (0x00400000 << FLASH_SHIFT);
- break; /* => 4 or 8MB */
-
- case STM_ID_W320DT_MVS:
- info->flash_id += FLASH_STMW320DT;
- info->sector_count = 67;
- info->size = (0x00400000 << FLASH_SHIFT);
- break; /* => 4 or 8 MB */
-
- case STM_ID_W320DB_MVS:
- info->flash_id += FLASH_STMW320DB;
- info->sector_count = 67;
- info->size = (0x00400000 << FLASH_SHIFT);
- break; /* => 4 or 8MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- flash_get_offsets (base, info);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (FDT *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (FDT *)info->start[0];
- *addr = RESET_BANK_DATA; /* reset bank */
- }
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-#if (FLASH_BUS_WIDTH >= 16)
- #define ERASE_ADDR1 0x0555
- #define ERASE_ADDR2 0x02AA
-#else
- #define ERASE_ADDR1 0x0AAA
- #define ERASE_ADDR2 0x0555
-#endif
-
-#define ERASE_ADDR3 ERASE_ADDR1
-#define ERASE_ADDR4 ERASE_ADDR1
-#define ERASE_ADDR5 ERASE_ADDR2
-
-#define ERASE_DATA1 (0x00AA00AA & FLASH_DATA_MASK)
-#define ERASE_DATA2 (0x00550055 & FLASH_DATA_MASK)
-#define ERASE_DATA3 (0x00800080 & FLASH_DATA_MASK)
-#define ERASE_DATA4 ERASE_DATA1
-#define ERASE_DATA5 ERASE_DATA2
-
-#define ERASE_SECTOR_DATA (0x00300030 & FLASH_DATA_MASK)
-#define ERASE_CHIP_DATA (0x00100010 & FLASH_DATA_MASK)
-#define ERASE_CONFIRM_DATA (0x00800080 & FLASH_DATA_MASK)
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- FDT *addr = (FDT *)(info->start[0]);
-
- int prot, sect, l_sect, flag;
- ulong start, now, last;
-
- __asm__ __volatile__ ("sync");
- addr[0] = 0xf0;
- udelay(1000);
-
- printf("\nflash_erase: first = %d @ 0x%08lx\n", s_first, info->start[s_first] );
- printf(" last = %d @ 0x%08lx\n", s_last , info->start[s_last ] );
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) || (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n", info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[ERASE_ADDR1] = ERASE_DATA1;
- addr[ERASE_ADDR2] = ERASE_DATA2;
- addr[ERASE_ADDR3] = ERASE_DATA3;
- addr[ERASE_ADDR4] = ERASE_DATA4;
- addr[ERASE_ADDR5] = ERASE_DATA5;
-
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) {
- addr = (FDT *)(info->start[sect]);
- addr[0] = ERASE_SECTOR_DATA;
- l_sect = sect;
- }
- }
-
- if (flag)
- enable_interrupts();
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (FDT *)(info->start[l_sect]);
-
- while ((addr[0] & ERASE_CONFIRM_DATA) != ERASE_CONFIRM_DATA) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-#define BUFF_INC 4
- ulong cp, wp, data;
- int i, l, rc;
-
- mvdebug (("+write_buff %p ==> 0x%08lx, count = 0x%08lx\n", src, addr, cnt));
-
- wp = (addr & ~3); /* get lower word aligned address */
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- mvdebug ((" handle unaligned start bytes (cnt = 0x%08lx)\n", cnt));
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<BUFF_INC && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<BUFF_INC; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += BUFF_INC;
- }
-
- /*
- * handle (half)word aligned part
- */
- mvdebug ((" handle word aligned part (cnt = 0x%08lx)\n", cnt));
- while (cnt >= BUFF_INC) {
- data = 0;
- for (i=0; i<BUFF_INC; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += BUFF_INC;
- cnt -= BUFF_INC;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- mvdebug ((" handle unaligned tail bytes (cnt = 0x%08lx)\n", cnt));
- data = 0;
- for (i=0, cp=wp; i<BUFF_INC && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<BUFF_INC; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-#if (FLASH_BUS_WIDTH >= 16)
- #define WRITE_ADDR1 0x0555
- #define WRITE_ADDR2 0x02AA
-#else
- #define WRITE_ADDR1 0x0AAA
- #define WRITE_ADDR2 0x0555
- #define WRITE_ADDR3 WRITE_ADDR1
-#endif
-
-#define WRITE_DATA1 (0x00AA00AA & FLASH_DATA_MASK)
-#define WRITE_DATA2 (0x00550055 & FLASH_DATA_MASK)
-#define WRITE_DATA3 (0x00A000A0 & FLASH_DATA_MASK)
-
-#define WRITE_CONFIRM_DATA ERASE_CONFIRM_DATA
-
-/*-----------------------------------------------------------------------
- * Write a byte to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_char (flash_info_t *info, ulong dest, uchar data)
-{
- vu_char *addr = (vu_char *)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_char *)dest) & data) != data) {
- printf(" *** ERROR: Flash not erased !\n");
- return (2);
- }
- flag = disable_interrupts();
-
- addr[WRITE_ADDR1] = WRITE_DATA1;
- addr[WRITE_ADDR2] = WRITE_DATA2;
- addr[WRITE_ADDR3] = WRITE_DATA3;
- *((vu_char *)dest) = data;
-
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- addr = (vu_char *)dest;
- while (( (*addr) & WRITE_CONFIRM_DATA) != (data & WRITE_CONFIRM_DATA)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- printf(" *** ERROR: Flash write timeout !");
- return (1);
- }
- }
- mvdebug (("-write_byte\n"));
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- int i,
- result = 0;
-
- mvdebug (("+write_word : 0x%08lx @ 0x%08lx\n", data, dest));
- for ( i=0; (i < 4) && (result == 0); i++, dest+=1 )
- result = write_char (info, dest, (data >> (8*(3-i))) & 0xff );
- mvdebug (("-write_word\n"));
- return result;
-}
-/*---------------------------------------------------------------- */
diff --git a/board/mvblue/mvblue.c b/board/mvblue/mvblue.c
deleted file mode 100644
index ee8f3e3015..0000000000
--- a/board/mvblue/mvblue.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * GNU General Public License for more details.
- *
- * MATRIX Vision GmbH / June 2002-Nov 2003
- * Andre Schwarz
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/io.h>
-#include <ns16550.h>
-
-#ifdef CONFIG_PCI
-#include <pci.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-u32 get_BoardType (void);
-
-#define PCI_CONFIG(b,d,f,r) cpu_to_le32(0x80000000 | ((b&0xff)<<16) \
- | ((d&0x1f)<<11) \
- | ((f&0x7)<<7) \
- | (r&0xfc) )
-
-int mv_pci_read (int bus, int dev, int func, int reg)
-{
- *(u32 *) (0xfec00cf8) = PCI_CONFIG (bus, dev, func, reg);
- asm ("sync");
- return cpu_to_le32 (*(u32 *) (0xfee00cfc));
-}
-
-u32 get_BoardType ()
-{
- return (mv_pci_read (0, 0xe, 0, 0) == 0x06801095 ? 0 : 1);
-}
-
-void init_2nd_DUART (void)
-{
- NS16550_t console = (NS16550_t) CFG_NS16550_COM2;
- int clock_divisor = CFG_NS16550_CLK / 16 / CONFIG_BAUDRATE;
-
- *(u8 *) (0xfc004511) = 0x1;
- NS16550_init (console, clock_divisor);
-}
-void hw_watchdog_reset (void)
-{
- if (get_BoardType () == 0) {
- *(u32 *) (0xff000005) = 0;
- asm ("sync");
- }
-}
-int checkboard (void)
-{
- ulong busfreq = get_bus_freq (0);
- char buf[32];
- u32 BoardType = get_BoardType ();
- char *BoardName[2] = { "mvBlueBOX", "mvBlueLYNX" };
- char *p;
- bd_t *bd = gd->bd;
-
- hw_watchdog_reset ();
-
- printf ("U-Boot (%s) running on mvBLUE device.\n", MV_VERSION);
- printf (" Found %s running at %s MHz memory clock.\n",
- BoardName[BoardType], strmhz (buf, busfreq));
-
- init_2nd_DUART ();
-
- if ((p = getenv ("console_nr")) != NULL) {
- unsigned long con_nr = simple_strtoul (p, NULL, 10) & 3;
-
- bd->bi_baudrate &= ~3;
- bd->bi_baudrate |= con_nr & 3;
- }
- return 0;
-}
-
-long int initdram (int board_type)
-{
- long size;
- long new_bank0_end;
- long mear1;
- long emear1;
-
- size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
-
- new_bank0_end = size - 1;
- mear1 = mpc824x_mpc107_getreg(MEAR1);
- emear1 = mpc824x_mpc107_getreg(EMEAR1);
- mear1 = (mear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
- emear1 = (emear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
- mpc824x_mpc107_setreg(MEAR1, mear1);
- mpc824x_mpc107_setreg(EMEAR1, emear1);
-
- return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-u8 *dhcp_vendorex_prep (u8 * e)
-{
- char *ptr;
-
- /* DHCP vendor-class-identifier = 60 */
- if ((ptr = getenv ("dhcp_vendor-class-identifier"))) {
- *e++ = 60;
- *e++ = strlen (ptr);
- while (*ptr)
- *e++ = *ptr++;
- }
- /* my DHCP_CLIENT_IDENTIFIER = 61 */
- if ((ptr = getenv ("dhcp_client_id"))) {
- *e++ = 61;
- *e++ = strlen (ptr);
- while (*ptr)
- *e++ = *ptr++;
- }
- return e;
-}
-
-u8 *dhcp_vendorex_proc (u8 * popt)
-{
- return NULL;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Initialize PCI Devices
- */
-#ifdef CONFIG_PCI
-void pci_mvblue_clear_base (struct pci_controller *hose, pci_dev_t dev)
-{
- u32 cnt;
-
- printf ("clear base @ dev/func 0x%02x/0x%02x ... ", PCI_DEV (dev),
- PCI_FUNC (dev));
- for (cnt = 0; cnt < 6; cnt++)
- pci_hose_write_config_dword (hose, dev, 0x10 + (4 * cnt),
- 0x0);
- printf ("done\n");
-}
-
-void duart_setup (u32 base, u16 divisor)
-{
- printf ("duart setup ...");
- out_8 ((u8 *) (CFG_ISA_IO + base + 3), 0x80);
- out_8 ((u8 *) (CFG_ISA_IO + base + 0), divisor & 0xff);
- out_8 ((u8 *) (CFG_ISA_IO + base + 1), divisor >> 8);
- out_8 ((u8 *) (CFG_ISA_IO + base + 3), 0x03);
- out_8 ((u8 *) (CFG_ISA_IO + base + 4), 0x03);
- out_8 ((u8 *) (CFG_ISA_IO + base + 2), 0x07);
- printf ("done\n");
-}
-
-void pci_mvblue_fixup_irq_behind_bridge (struct pci_controller *hose,
- pci_dev_t bridge, unsigned char irq)
-{
- pci_dev_t d;
- unsigned char bus;
- unsigned short vendor, class;
-
- pci_hose_read_config_byte (hose, bridge, PCI_SECONDARY_BUS, &bus);
- for (d = PCI_BDF (bus, 0, 0);
- d < PCI_BDF (bus, PCI_MAX_PCI_DEVICES - 1,
- PCI_MAX_PCI_FUNCTIONS - 1);
- d += PCI_BDF (0, 0, 1)) {
- pci_hose_read_config_word (hose, d, PCI_VENDOR_ID, &vendor);
- if (vendor != 0xffff && vendor != 0x0000) {
- pci_hose_read_config_word (hose, d, PCI_CLASS_DEVICE,
- &class);
- if (class == PCI_CLASS_BRIDGE_PCI)
- pci_mvblue_fixup_irq_behind_bridge (hose, d,
- irq);
- else
- pci_hose_write_config_byte (hose, d,
- PCI_INTERRUPT_LINE,
- irq);
- }
- }
-}
-
-#define MV_MAX_PCI_BUSSES 3
-#define SLOT0_IRQ 3
-#define SLOT1_IRQ 4
-void pci_mvblue_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
-{
- unsigned char line = 0xff;
- unsigned short class;
-
- if (PCI_BUS (dev) == 0) {
- switch (PCI_DEV (dev)) {
- case 0xd:
- if (get_BoardType () == 0) {
- line = 1;
- } else
- /* mvBL */
- line = 2;
- break;
- case 0xe:
- /* mvBB: IDE */
- line = 2;
- pci_hose_write_config_byte (hose, dev, 0x8a, 0x20);
- break;
- case 0xf:
- /* mvBB: Slot0 (Grabber) */
- pci_hose_read_config_word (hose, dev,
- PCI_CLASS_DEVICE, &class);
- if (class == PCI_CLASS_BRIDGE_PCI) {
- pci_mvblue_fixup_irq_behind_bridge (hose, dev,
- SLOT0_IRQ);
- line = 0xff;
- } else
- line = SLOT0_IRQ;
- break;
- case 0x10:
- /* mvBB: Slot1 */
- pci_hose_read_config_word (hose, dev,
- PCI_CLASS_DEVICE, &class);
- if (class == PCI_CLASS_BRIDGE_PCI) {
- pci_mvblue_fixup_irq_behind_bridge (hose, dev,
- SLOT1_IRQ);
- line = 0xff;
- } else
- line = SLOT1_IRQ;
- break;
- default:
- printf ("***pci_scan: illegal dev = 0x%08x\n",
- PCI_DEV (dev));
- line = 0xff;
- break;
- }
- pci_hose_write_config_byte (hose, dev, PCI_INTERRUPT_LINE,
- line);
- }
-}
-
-struct pci_controller hose = {
- fixup_irq:pci_mvblue_fixup_irq
-};
-
-void pci_init_board (void)
-{
- pci_mpc824x_init (&hose);
-}
-#endif
diff --git a/board/mvblue/u-boot.lds b/board/mvblue/u-boot.lds
deleted file mode 100644
index 7c051095f8..0000000000
--- a/board/mvblue/u-boot.lds
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/mvs1/Makefile b/board/mvs1/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/mvs1/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/mvs1/README b/board/mvs1/README
deleted file mode 100644
index 69520bd7ed..0000000000
--- a/board/mvs1/README
+++ /dev/null
@@ -1,14 +0,0 @@
-This port is for the MATRIX Vision mvSensor.
-It is an mpc823-based universal image processing board
-with CMOS or CCD sensor, 4MB FLASH and 16-64MB RAM.
-
-See http://www.matrix-vision.de for more details or mail...
-
-mvsensor@matrix-vision.de
-
-Howard Gray
-MATRIX Vision GmbH
-Talstr. 16
-D-71570
-Oppenweiler
-Germany
diff --git a/board/mvs1/config.mk b/board/mvs1/config.mk
deleted file mode 100644
index 9d6080b84a..0000000000
--- a/board/mvs1/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# TQM8xxL boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/mvs1/flash.c b/board/mvs1/flash.c
deleted file mode 100644
index 0845943587..0000000000
--- a/board/mvs1/flash.c
+++ /dev/null
@@ -1,719 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Changes for MATRIX Vision MVsensor (C) Copyright 2001
- * MATRIX Vision GmbH / hg, info@matrix-vision.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 <common.h>
-#include <mpc8xx.h>
-
-#undef MVDEBUG
-#ifdef MVDEBUG
-#define mvdebug debug
-#else
-#define mvdebug(p) do {} while (0)
-#endif
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-
-#ifdef CONFIG_MVS_16BIT_FLASH
- #define FLASH_DATA_MASK 0xffff
- #define FLASH_SHIFT 0
-#else
- #define FLASH_DATA_MASK 0xffffffff
- #define FLASH_SHIFT 1
-#endif
-
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *address, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
-#if defined (FLASH_BASE1_PRELIM)
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-#else
- size_b1 = 0;
-#endif
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
-#ifdef CONFIG_MVS_16BIT_FLASH
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_PS_16 | BR_MS_GPCM | BR_V;
-#else
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_PS_32 | BR_MS_GPCM | BR_V;
-#endif
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE+monitor_flash_len-1,
- &flash_info[0]);
-
- if (size_b1) {
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
-#ifdef CONFIG_MVS_16BIT_FLASH
- memctl->memc_br1 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_PS_16 | BR_MS_GPCM | BR_V;
-#else
- memctl->memc_br1 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_PS_32 | BR_MS_GPCM | BR_V;
-#endif
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(CFG_FLASH_BASE + size_b0),
- &flash_info[1]);
-
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
-
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE+monitor_flash_len-1,
- &flash_info[1]);
- } else {
- memctl->memc_br1 = 0; /* invalidate bank */
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE)
- { /* bottom boot sector types - these are the useful ones! */
- /* set sector offsets for bottom boot block type */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B)
- { /* AMDLV320B has 8 x 8k bottom boot sectors */
- for (i = 0; i < 8; i++) /* +8k */
- info->start[i] = base + (i * (0x00002000 << FLASH_SHIFT));
- for (; i < info->sector_count; i++) /* +64k */
- info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT)) - (0x00070000 << FLASH_SHIFT);
- }
- else
- { /* other types have 4 bottom boot sectors (16,8,8,32) */
- i = 0;
- info->start[i++] = base + 0x00000000; /* - */
- info->start[i++] = base + (0x00004000 << FLASH_SHIFT); /* +16k */
- info->start[i++] = base + (0x00006000 << FLASH_SHIFT); /* +8k */
- info->start[i++] = base + (0x00008000 << FLASH_SHIFT); /* +8k */
- info->start[i++] = base + (0x00010000 << FLASH_SHIFT); /* +32k */
- for (; i < info->sector_count; i++) /* +64k */
- info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT)) - (0x00030000 << FLASH_SHIFT);
- }
- }
- else
- { /* top boot sector types - not so useful */
- /* set sector offsets for top boot block type */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T)
- { /* AMDLV320T has 8 x 8k top boot sectors */
- for (i = 0; i < info->sector_count - 8; i++) /* +64k */
- info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT));
- for (; i < info->sector_count; i++) /* +8k */
- info->start[i] = base + (i * (0x00002000 << FLASH_SHIFT));
- }
- else
- { /* other types have 4 top boot sectors (32,8,8,16) */
- for (i = 0; i < info->sector_count - 4; i++) /* +64k */
- info->start[i] = base + (i * (0x00010000 << FLASH_SHIFT));
-
- info->start[i++] = base + info->size - (0x00010000 << FLASH_SHIFT); /* -32k */
- info->start[i++] = base + info->size - (0x00008000 << FLASH_SHIFT); /* -8k */
- info->start[i++] = base + info->size - (0x00006000 << FLASH_SHIFT); /* -8k */
- info->start[i] = base + info->size - (0x00004000 << FLASH_SHIFT); /* -16k */
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_STM: printf ("ST "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_STMW320DB: printf ("M29W320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_STMW320DT: printf ("M29W320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-#define AMD_ID_LV160T_MVS (AMD_ID_LV160T & FLASH_DATA_MASK)
-#define AMD_ID_LV160B_MVS (AMD_ID_LV160B & FLASH_DATA_MASK)
-#define AMD_ID_LV320T_MVS (AMD_ID_LV320T & FLASH_DATA_MASK)
-#define AMD_ID_LV320B_MVS (AMD_ID_LV320B & FLASH_DATA_MASK)
-#define STM_ID_W320DT_MVS (STM_ID_29W320DT & FLASH_DATA_MASK)
-#define STM_ID_W320DB_MVS (STM_ID_29W320DB & FLASH_DATA_MASK)
-#define AMD_MANUFACT_MVS (AMD_MANUFACT & FLASH_DATA_MASK)
-#define FUJ_MANUFACT_MVS (FUJ_MANUFACT & FLASH_DATA_MASK)
-#define STM_MANUFACT_MVS (STM_MANUFACT & FLASH_DATA_MASK)
-
-#define AUTOSELECT_ADDR1 0x0555
-#define AUTOSELECT_ADDR2 0x02AA
-#define AUTOSELECT_ADDR3 AUTOSELECT_ADDR1
-
-#define AUTOSELECT_DATA1 (0x00AA00AA & FLASH_DATA_MASK)
-#define AUTOSELECT_DATA2 (0x00550055 & FLASH_DATA_MASK)
-#define AUTOSELECT_DATA3 (0x00900090 & FLASH_DATA_MASK)
-
-#define RESET_BANK_DATA (0x00F000F0 & FLASH_DATA_MASK)
-
-static ulong flash_get_size (vu_long *address, flash_info_t *info)
-{
- short i;
-#ifdef CONFIG_MVS_16BIT_FLASH
- ushort value;
- vu_short *addr = (vu_short *)address;
-#else
- ulong value;
- vu_long *addr = (vu_long *)address;
-#endif
- ulong base = (ulong)address;
-
- /* Write auto select command: read Manufacturer ID */
- addr[AUTOSELECT_ADDR1] = AUTOSELECT_DATA1;
- addr[AUTOSELECT_ADDR2] = AUTOSELECT_DATA2;
- addr[AUTOSELECT_ADDR3] = AUTOSELECT_DATA3;
-
- value = addr[0]; /* manufacturer ID */
- switch (value) {
- case AMD_MANUFACT_MVS:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT_MVS:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case STM_MANUFACT_MVS:
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
- switch (value) {
- case AMD_ID_LV160T_MVS:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 37;
- info->size = (0x00200000 << FLASH_SHIFT);
- break; /* => 2 or 4 MB */
-
- case AMD_ID_LV160B_MVS:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 37;
- info->size = (0x00200000 << FLASH_SHIFT);
- break; /* => 2 or 4 MB */
-
- case AMD_ID_LV320T_MVS:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 71;
- info->size = (0x00400000 << FLASH_SHIFT);
- break; /* => 4 or 8 MB */
-
- case AMD_ID_LV320B_MVS:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = (0x00400000 << FLASH_SHIFT);
- break; /* => 4 or 8MB */
-
- case STM_ID_W320DT_MVS:
- info->flash_id += FLASH_STMW320DT;
- info->sector_count = 67;
- info->size = (0x00400000 << FLASH_SHIFT);
- break; /* => 4 or 8 MB */
-
- case STM_ID_W320DB_MVS:
- info->flash_id += FLASH_STMW320DB;
- info->sector_count = 67;
- info->size = (0x00400000 << FLASH_SHIFT);
- break; /* => 4 or 8MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- flash_get_offsets (base, info);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
-#ifdef CONFIG_MVS_16BIT_FLASH
- addr = (vu_short *)(info->start[i]);
-#else
- addr = (vu_long *)(info->start[i]);
-#endif
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
-#ifdef CONFIG_MVS_16BIT_FLASH
- addr = (vu_short *)info->start[0];
-#else
- addr = (vu_long *)info->start[0];
-#endif
- *addr = RESET_BANK_DATA; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-#define ERASE_ADDR1 0x0555
-#define ERASE_ADDR2 0x02AA
-#define ERASE_ADDR3 ERASE_ADDR1
-#define ERASE_ADDR4 ERASE_ADDR1
-#define ERASE_ADDR5 ERASE_ADDR2
-
-#define ERASE_DATA1 (0x00AA00AA & FLASH_DATA_MASK)
-#define ERASE_DATA2 (0x00550055 & FLASH_DATA_MASK)
-#define ERASE_DATA3 (0x00800080 & FLASH_DATA_MASK)
-#define ERASE_DATA4 ERASE_DATA1
-#define ERASE_DATA5 ERASE_DATA2
-
-#define ERASE_SECTOR_DATA (0x00300030 & FLASH_DATA_MASK)
-#define ERASE_CHIP_DATA (0x00100010 & FLASH_DATA_MASK)
-#define ERASE_CONFIRM_DATA (0x00800080 & FLASH_DATA_MASK)
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-#ifdef CONFIG_MVS_16BIT_FLASH
- vu_short *addr = (vu_short *)(info->start[0]);
-#else
- vu_long *addr = (vu_long *)(info->start[0]);
-#endif
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[ERASE_ADDR1] = ERASE_DATA1;
- addr[ERASE_ADDR2] = ERASE_DATA2;
- addr[ERASE_ADDR3] = ERASE_DATA3;
- addr[ERASE_ADDR4] = ERASE_DATA4;
- addr[ERASE_ADDR5] = ERASE_DATA5;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
-#ifdef CONFIG_MVS_16BIT_FLASH
- addr = (vu_short *)(info->start[sect]);
-#else
- addr = (vu_long *)(info->start[sect]);
-#endif
- addr[0] = ERASE_SECTOR_DATA;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
-#ifdef CONFIG_MVS_16BIT_FLASH
- addr = (vu_short *)(info->start[l_sect]);
-#else
- addr = (vu_long *)(info->start[l_sect]);
-#endif
- while ((addr[0] & ERASE_CONFIRM_DATA) != ERASE_CONFIRM_DATA) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
-#ifdef CONFIG_MVS_16BIT_FLASH
- addr = (vu_short *)info->start[0];
-#else
- addr = (vu_long *)info->start[0];
-#endif
- addr[0] = RESET_BANK_DATA; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-#define BUFF_INC 4
- ulong cp, wp, data;
- int i, l, rc;
-
- mvdebug (("+write_buff %p ==> 0x%08lx, count = 0x%08lx\n", src, addr, cnt));
-
- wp = (addr & ~3); /* get lower word aligned address */
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- mvdebug ((" handle unaligned start bytes (cnt = 0x%08%lx)\n", cnt));
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<BUFF_INC && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<BUFF_INC; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += BUFF_INC;
- }
-
- /*
- * handle (half)word aligned part
- */
- mvdebug ((" handle word aligned part (cnt = 0x%08%lx)\n", cnt));
- while (cnt >= BUFF_INC) {
- data = 0;
- for (i=0; i<BUFF_INC; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += BUFF_INC;
- cnt -= BUFF_INC;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- mvdebug ((" handle unaligned tail bytes (cnt = 0x%08%lx)\n", cnt));
- data = 0;
- for (i=0, cp=wp; i<BUFF_INC && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<BUFF_INC; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-#define WRITE_ADDR1 0x0555
-#define WRITE_ADDR2 0x02AA
-#define WRITE_ADDR3 WRITE_ADDR1
-
-#define WRITE_DATA1 (0x00AA00AA & FLASH_DATA_MASK)
-#define WRITE_DATA2 (0x00550055 & FLASH_DATA_MASK)
-#define WRITE_DATA3 (0x00A000A0 & FLASH_DATA_MASK)
-
-#define WRITE_CONFIRM_DATA ERASE_CONFIRM_DATA
-
-#ifndef CONFIG_MVS_16BIT_FLASH
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)(info->start[0]);
- ulong start;
- int flag;
-
- mvdebug (("+write_word (to 0x%08lx)\n", dest));
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[WRITE_ADDR1] = WRITE_DATA1;
- addr[WRITE_ADDR2] = WRITE_DATA2;
- addr[WRITE_ADDR3] = WRITE_DATA3;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- addr = (vu_long *)dest;
- while ((*addr & WRITE_CONFIRM_DATA) != (data & WRITE_CONFIRM_DATA)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
- mvdebug (("-write_word\n"));
- return (0);
-}
-#else /* CONFIG_MVS_16BIT_FLASH */
-/*-----------------------------------------------------------------------
- * Write a halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_halfword (flash_info_t *info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short *)(info->start[0]);
- ulong start;
- int flag;
-
- mvdebug (("+write_halfword (to 0x%08lx)\n", dest));
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_short *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[WRITE_ADDR1] = WRITE_DATA1;
- addr[WRITE_ADDR2] = WRITE_DATA2;
- addr[WRITE_ADDR3] = WRITE_DATA3;
-
- *((vu_short *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- addr = (vu_short *)dest;
- while ((*addr & WRITE_CONFIRM_DATA) != (data & WRITE_CONFIRM_DATA)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- mvdebug (("-write_halfword\n"));
- return (0);
-}
-
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- int result = 0;
-
- if (write_halfword (info, dest, (data & ~FLASH_DATA_MASK) >> 16) == 0)
- {
- dest += 2;
- data = data & FLASH_DATA_MASK;
- result = write_halfword (info, dest, data);
- }
- return result;
-}
-#endif
-/*-----------------------------------------------------------------------
- */
diff --git a/board/mvs1/mvs1.c b/board/mvs1/mvs1.c
deleted file mode 100644
index f8a8cb7578..0000000000
--- a/board/mvs1/mvs1.c
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Changes for MATRIX Vision MVsensor (C) Copyright 2001
- * MATRIX Vision GmbH / hg, info@matrix-vision.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 <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] =
-{
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEAFBC04, 0x11AF7C04, 0xEFBAFC00,
- 0x1FF5FC47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FF5FC34, 0xEFEABC34, 0x1FB57C35, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEAFBC04, 0x10AF7C04, 0xF0AFFC00,
- 0xF0AFFC00, 0xF1AFFC00, 0xEFBAFC00, 0x1FF5FC47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x1F0DFC04 /*0x1F2DFC04??*/, 0xEEABBC00, 0x01B27C04, 0x1FF5FC47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEABBC00, 0x10A77C00, 0xF0AFFC00,
- 0xF0AFFC00, 0xE1BAFC04, 0x1FF5FC47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1FFD7C84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: MATRIX Vision MVsensor\n");
- return 0;
-}
-
-
-#ifdef DO_RAM_TEST
-/* ------------------------------------------------------------------------- */
-
-/*
- * Test SDRAM by writing its address to itself and reading several times
-*/
-#define READ_RUNS 4
-static void test_dram (unsigned long *start, unsigned long *end)
-{
- unsigned long *addr;
- unsigned long value;
- int read_runs, errors, addr_errors;
-
- printf ("\nChecking SDRAM from %p to %p\n", start, end);
- udelay (1000000);
- for (addr = start; addr < end; addr++)
- *addr = (unsigned long) addr;
-
- for (addr = start, addr_errors = 0; addr < end; addr++) {
- for (read_runs = READ_RUNS, errors = 0; read_runs > 0; read_runs--) {
- if ((value = *addr) != (unsigned long) addr)
- errors++;
- }
- if (errors > 0) {
- addr_errors++;
- printf ("SDRAM errors (%d) at %p, last read = %ld\n",
- errors, addr, value);
- udelay (10000);
- }
- }
- printf ("SDRAM check finished, total errors = %d\n", addr_errors);
-}
-#endif /* DO_RAM_TEST */
-
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size_b0, size_b1, size8, size9;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_8K;
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller banks 2 and 3 to the SDRAM banks 2 and 3 at
- * preliminary addresses - these have to be modified after the
- * SDRAM size has been determined.
- */
- memctl->memc_or2 = CFG_OR2_PRELIM;
- memctl->memc_br2 = CFG_BR2_PRELIM;
-
-#if defined (CFG_OR3_PRELIM) && defined (CFG_BR3_PRELIM)
- if (board_type == 0) { /* "L" type boards have only one bank SDRAM */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
- }
-#endif
-
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80004105; /* SDRAM bank 0 */
- udelay (1);
- memctl->memc_mcr = 0x80004230; /* SDRAM bank 0 - execute twice */
- udelay (1);
-
- if (board_type == 0) { /* "L" type boards have only one bank SDRAM */
- memctl->memc_mcr = 0x80006105; /* SDRAM bank 1 */
- udelay (1);
- memctl->memc_mcr = 0x80006230; /* SDRAM bank 1 - execute twice */
- udelay (1);
- }
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL, SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-
- udelay (1000);
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL, SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size_b0 = size9;
- } else { /* back to 8 columns */
- size_b0 = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
- }
-
- if (board_type == 0) { /* "L" type boards have only one bank SDRAM */
- /*
- * Check Bank 1 Memory Size
- * use current column settings
- * [9 column SDRAM may also be used in 8 column mode,
- * but then only half the real size will be used.]
- */
-#if defined (SDRAM_BASE3_PRELIM)
- size_b1 =
- dram_size (memctl->memc_mamr, (ulong *) SDRAM_BASE3_PRELIM,
- SDRAM_MAX_SIZE);
-#else
- size_b1 = 0;
-#endif
- } else {
- size_b1 = 0;
- }
-
- udelay (1000);
-
- /*
- * Adjust refresh rate depending on SDRAM type, both banks
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if ((size_b0 < 0x02000000) && (size_b1 < 0x02000000)) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
- udelay (1000);
- }
-
- /*
- * Final mapping: map bigger bank first
- */
- if (size_b1 > size_b0) { /* SDRAM Bank 1 is bigger - map first */
-
- memctl->memc_or3 = ((-size_b1) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br3 =
- (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- if (size_b0 > 0) {
- /*
- * Position Bank 0 immediately above Bank 1
- */
- memctl->memc_or2 =
- ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 =
- ((CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V)
- + size_b1;
- } else {
- unsigned long reg;
-
- /*
- * No bank 0
- *
- * invalidate bank
- */
- memctl->memc_br2 = 0;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
- }
-
- } else { /* SDRAM Bank 0 is bigger - map first */
-
- memctl->memc_or2 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 =
- (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- if (size_b1 > 0) {
- /*
- * Position Bank 1 immediately above Bank 0
- */
- memctl->memc_or3 =
- ((-size_b1) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br3 =
- ((CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V)
- + size_b0;
- } else {
- unsigned long reg;
-
- /*
- * No bank 1
- *
- * invalidate bank
- */
- memctl->memc_br3 = 0;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
- }
- }
-
- udelay (10000);
-
-#ifdef DO_RAM_TEST
- if (size_b0 > 0)
- test_dram ((unsigned long *) CFG_SDRAM_BASE,
- (unsigned long *) (CFG_SDRAM_BASE + size_b0));
-#endif
-
- return (size_b0 + size_b1);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-u8 *dhcp_vendorex_prep (u8 * e)
-{
- char *ptr;
-
-/* DHCP vendor-class-identifier = 60 */
- if ((ptr = getenv ("dhcp_vendor-class-identifier"))) {
- *e++ = 60;
- *e++ = strlen (ptr);
- while (*ptr)
- *e++ = *ptr++;
- }
-/* my DHCP_CLIENT_IDENTIFIER = 61 */
- if ((ptr = getenv ("dhcp_client_id"))) {
- *e++ = 61;
- *e++ = strlen (ptr);
- while (*ptr)
- *e++ = *ptr++;
- }
-
- return e;
-}
-
-
-/* ------------------------------------------------------------------------- */
-u8 *dhcp_vendorex_proc (u8 * popt)
-{
- return NULL;
-}
diff --git a/board/mvs1/u-boot.lds b/board/mvs1/u-boot.lds
deleted file mode 100644
index a04de3d85b..0000000000
--- a/board/mvs1/u-boot.lds
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_generic/ctype.o (.text)
- lib_generic/string.o (.text)
- lib_ppc/extable.o (.text)
- lib_ppc/kgdb.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/mvs1/u-boot.lds.debug b/board/mvs1/u-boot.lds.debug
deleted file mode 100644
index ddd4678ee8..0000000000
--- a/board/mvs1/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/mx1fs2/Makefile b/board/mx1fs2/Makefile
deleted file mode 100644
index 516a8b90f3..0000000000
--- a/board/mx1fs2/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := mx1fs2.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/mx1fs2/config.mk b/board/mx1fs2/config.mk
deleted file mode 100644
index 59ab542465..0000000000
--- a/board/mx1fs2/config.mk
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# This config file is used for compilation of IMX sources
-#
-# You might change location of U-Boot in memory by setting right TEXT_BASE.
-# This allows for example having one copy located at the end of ram and stored
-# in flash device and later on while developing use other location to test
-# the code in RAM device only.
-#
-
-TEXT_BASE = 0x08f00000
diff --git a/board/mx1fs2/flash.c b/board/mx1fs2/flash.c
deleted file mode 100644
index 38063106e2..0000000000
--- a/board/mx1fs2/flash.c
+++ /dev/null
@@ -1,849 +0,0 @@
-/*
- * (C) 2000-2004 Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * (C) 2003 August Hoeraendl, Logotronic GmbH
- *
- * 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
- */
-
-#undef CONFIG_FLASH_16BIT
-
-#include <common.h>
-
-#define FLASH_BANK_SIZE MX1FS2_FLASH_BANK_SIZE
-#define MAIN_SECT_SIZE MX1FS2_FLASH_SECT_SIZE
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*
- * NOTE - CONFIG_FLASH_16BIT means the CPU interface is 16-bit, it
- * has nothing to do with the flash chip being 8-bit or 16-bit.
- */
-#ifdef CONFIG_FLASH_16BIT
-typedef unsigned short FLASH_PORT_WIDTH;
-typedef volatile unsigned short FLASH_PORT_WIDTHV;
-
-#define FLASH_ID_MASK 0xFFFF
-#else
-typedef unsigned long FLASH_PORT_WIDTH;
-typedef volatile unsigned long FLASH_PORT_WIDTHV;
-
-#define FLASH_ID_MASK 0xFFFFFFFF
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define ORMASK(size) ((-size) & OR_AM_MSK)
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-#if 0
-static ulong flash_get_size(FPWV * addr, flash_info_t * info);
-static void flash_get_offsets(ulong base, flash_info_t * info);
-#endif
-static void flash_reset(flash_info_t * info);
-static int write_word_intel(flash_info_t * info, FPWV * dest, FPW data);
-static int write_word_amd(flash_info_t * info, FPWV * dest, FPW data);
-#define write_word(in, de, da) write_word_amd(in, de, da)
-#ifdef CFG_FLASH_PROTECTION
-static void flash_sync_real_protect(flash_info_t * info);
-#endif
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-ulong
-flash_init(void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
- flash_info[i].flash_id =
- (FLASH_MAN_AMD & FLASH_VENDMASK) |
- (FLASH_AM640U & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset(flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- switch (i) {
- case 0:
- flashbase = MX1FS2_FLASH_BASE;
- break;
- default:
- panic("configured too many flash banks!\n");
- break;
- }
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] = flashbase + j * MAIN_SECT_SIZE;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + _bss_start - _armboot_start,
- &flash_info[0]);
-
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void
-flash_reset(flash_info_t * info)
-{
- FPWV *base = (FPWV *) (info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- *base = (FPW) 0x00FF00FF; /* Intel Read Mode */
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
- *base = (FPW) 0x00F000F0; /* AMD Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-#if 0
-static void
-flash_get_offsets(ulong base, flash_info_t * info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL
- && (info->flash_id & FLASH_BTYPE)) {
- int bootsect_size; /* number of bytes/boot sector */
- int sect_size; /* number of bytes/regular sector */
-
- bootsect_size = 0x00002000 * (sizeof (FPW) / 2);
- sect_size = 0x00010000 * (sizeof (FPW) / 2);
-
- /* set sector offsets for bottom boot block type */
- for (i = 0; i < 8; ++i) {
- info->start[i] = base + (i * bootsect_size);
- }
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + ((i - 7) * sect_size);
- }
- } else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD
- && (info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U) {
-
- int sect_size; /* number of bytes/sector */
-
- sect_size = 0x00010000 * (sizeof (FPW) / 2);
-
- /* set up sector start address table (uniform sector type) */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * sect_size);
- }
-}
-#endif /* 0 */
-
-/*-----------------------------------------------------------------------
- */
-
-void
-flash_print_info(flash_info_t * info)
-{
- int i;
- uchar *boottype;
- uchar *bootletter;
- uchar *fmt;
- uchar botbootletter[] = "B";
- uchar topbootletter[] = "T";
- uchar botboottype[] = "bottom boot sector";
- uchar topboottype[] = "top boot sector";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf("AMD ");
- break;
- case FLASH_MAN_BM:
- printf("BRIGHT MICRO ");
- break;
- case FLASH_MAN_FUJ:
- printf("FUJITSU ");
- break;
- case FLASH_MAN_SST:
- printf("SST ");
- break;
- case FLASH_MAN_STM:
- printf("STM ");
- break;
- case FLASH_MAN_INTEL:
- printf("INTEL ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- /* check for top or bottom boot, if it applies */
- if (info->flash_id & FLASH_BTYPE) {
- boottype = botboottype;
- bootletter = botbootletter;
- } else {
- boottype = topboottype;
- bootletter = topbootletter;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM640U:
- fmt = "29LV641D (64 Mbit, uniform sectors)\n";
- break;
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- fmt = "28F800C3%s (8 Mbit, %s)\n";
- break;
- case FLASH_INTEL800B:
- case FLASH_INTEL800T:
- fmt = "28F800B3%s (8 Mbit, %s)\n";
- break;
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- fmt = "28F160C3%s (16 Mbit, %s)\n";
- break;
- case FLASH_INTEL160B:
- case FLASH_INTEL160T:
- fmt = "28F160B3%s (16 Mbit, %s)\n";
- break;
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- fmt = "28F320C3%s (32 Mbit, %s)\n";
- break;
- case FLASH_INTEL320B:
- case FLASH_INTEL320T:
- fmt = "28F320B3%s (32 Mbit, %s)\n";
- break;
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- fmt = "28F640C3%s (64 Mbit, %s)\n";
- break;
- case FLASH_INTEL640B:
- case FLASH_INTEL640T:
- fmt = "28F640B3%s (64 Mbit, %s)\n";
- break;
- default:
- fmt = "Unknown Chip Type\n";
- break;
- }
-
- printf(fmt, bootletter, boottype);
-
- printf(" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
-
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0) {
- printf("\n ");
- }
-
- printf(" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
-
- printf("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-#if 0
-ulong
-flash_get_size(FPWV * addr, flash_info_t * info)
-{
- /* Write auto select command: read Manufacturer ID */
-
- /* Write auto select command sequence and test FLASH answer */
- addr[0x0555] = (FPW) 0x00AA00AA; /* for AMD, Intel ignores this */
- addr[0x02AA] = (FPW) 0x00550055; /* for AMD, Intel ignores this */
- addr[0x0555] = (FPW) 0x00900090; /* selects Intel or AMD */
-
- /* The manufacturer codes are only 1 byte, so just use 1 byte.
- * This works for any bus width and any FLASH device width.
- */
- switch (addr[0] & 0xff) {
-
- case (uchar) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case (uchar) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- /* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */
- if (info->flash_id != FLASH_UNKNOWN)
- switch (addr[1]) {
-
- case (FPW) AMD_ID_LV640U: /* 29LV640 and 29LV641 have same ID */
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x00800000 * (sizeof (FPW) / 2);
- break; /* => 8 or 16 MB */
-
- case (FPW) INTEL_ID_28F800C3B:
- info->flash_id += FLASH_28F800C3B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof (FPW) / 2);
- break; /* => 1 or 2 MB */
-
- case (FPW) INTEL_ID_28F800B3B:
- info->flash_id += FLASH_INTEL800B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof (FPW) / 2);
- break; /* => 1 or 2 MB */
-
- case (FPW) INTEL_ID_28F160C3B:
- info->flash_id += FLASH_28F160C3B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof (FPW) / 2);
- break; /* => 2 or 4 MB */
-
- case (FPW) INTEL_ID_28F160B3B:
- info->flash_id += FLASH_INTEL160B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof (FPW) / 2);
- break; /* => 2 or 4 MB */
-
- case (FPW) INTEL_ID_28F320C3B:
- info->flash_id += FLASH_28F320C3B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof (FPW) / 2);
- break; /* => 4 or 8 MB */
-
- case (FPW) INTEL_ID_28F320B3B:
- info->flash_id += FLASH_INTEL320B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof (FPW) / 2);
- break; /* => 4 or 8 MB */
-
- case (FPW) INTEL_ID_28F640C3B:
- info->flash_id += FLASH_28F640C3B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof (FPW) / 2);
- break; /* => 8 or 16 MB */
-
- case (FPW) INTEL_ID_28F640B3B:
- info->flash_id += FLASH_INTEL640B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof (FPW) / 2);
- break; /* => 8 or 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* => no or unknown flash */
- }
-
- flash_get_offsets((ulong) addr, info);
-
- /* Put FLASH back in read mode */
- flash_reset(info);
-
- return (info->size);
-}
-#endif /* 0 */
-
-#ifdef CFG_FLASH_PROTECTION
-/*-----------------------------------------------------------------------
- */
-
-static void
-flash_sync_real_protect(flash_info_t * info)
-{
- FPWV *addr = (FPWV *) (info->start[0]);
- FPWV *sect;
- int i;
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- /* check for protected sectors */
- *addr = (FPW) 0x00900090;
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02.
- * D0 = 1 for each device if protected.
- * If at least one device is protected the sector is marked
- * protected, but mixed protected and unprotected devices
- * within a sector should never happen.
- */
- sect = (FPWV *) (info->start[i]);
- info->protect[i] =
- (sect[2] & (FPW) (0x00010001)) ? 1 : 0;
- }
-
- /* Put FLASH back in read mode */
- flash_reset(info);
- break;
-
- case FLASH_AM640U:
- default:
- /* no hardware protect that we support */
- break;
- }
-}
-#endif
-
-/*-----------------------------------------------------------------------
- */
-
-int
-flash_erase(flash_info_t * info, int s_first, int s_last)
-{
- FPWV *addr;
- int flag, prot, sect;
- int intel = (info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("- missing\n");
- } else {
- printf("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_INTEL800B:
- case FLASH_INTEL160B:
- case FLASH_INTEL320B:
- case FLASH_INTEL640B:
- case FLASH_28F800C3B:
- case FLASH_28F160C3B:
- case FLASH_28F320C3B:
- case FLASH_28F640C3B:
- case FLASH_AM640U:
- break;
- case FLASH_UNKNOWN:
- default:
- printf("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf("\n");
- }
-
- start = get_timer(0);
- last = start;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && rcode == 0; sect++) {
-
- if (info->protect[sect] != 0) /* protected, skip it */
- continue;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr = (FPWV *) (info->start[sect]);
- if (intel) {
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
- } else {
- /* must be AMD style if not Intel */
- FPWV *base; /* first address in bank */
-
- base = (FPWV *) (info->start[0]);
- base[0x0555] = (FPW) 0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW) 0x00550055; /* unlock */
- base[0x0555] = (FPW) 0x00800080; /* erase mode */
- base[0x0555] = (FPW) 0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW) 0x00550055; /* unlock */
- *addr = (FPW) 0x00300030; /* erase sector */
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 50us for AMD, 80us for Intel.
- * Let's wait 1 ms.
- */
- udelay(1000);
-
- while ((*addr & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if ((now = get_timer(0)) - start > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
-
- if (intel) {
- /* suspend erase */
- *addr = (FPW) 0x00B000B0;
- }
-
- flash_reset(info); /* reset to read mode */
- rcode = 1; /* failed */
- break;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc('.');
- last = now;
- }
- }
-
- flash_reset(info); /* reset to read mode */
- }
-
- printf(" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int
-bad_write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof (data), left -= sizeof (data) - bytes) {
-
- bytes = addr & (sizeof (data) - 1);
- addr &= ~(sizeof (data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits
- */
- for (i = 0; i < sizeof (data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left)
- data += *((uchar *) addr + i);
- else
- data += *src++;
- }
-
- /* write one word to the flash */
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- res = write_word_amd(info, (FPWV *) addr, data);
- break;
- case FLASH_MAN_INTEL:
- res = write_word_intel(info, (FPWV *) addr, data);
- break;
- default:
- /* unknown flash type, error! */
- printf("missing or unknown FLASH type\n");
- res = 1; /* not really a timeout, but gives error */
- break;
- }
- }
-
- return (res);
-}
-
-/**
- * write_buf: - Copy memory to flash.
- *
- * @param info:
- * @param src: source of copy transaction
- * @param addr: where to copy to
- * @param cnt: number of bytes to copy
- *
- * @return error code
- */
-
-int
-write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int l;
- int i, rc;
-
- wp = (addr & ~1); /* get lower word aligned address */
-
- /* handle unaligned start bytes */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
- for (; i < 2 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- if ((rc = write_word(info, (FPWV *)wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /* handle word aligned part */
- while (cnt >= 2) {
- /* data = *((vushort*)src); */
- data = *((FPW *) src);
- if ((rc = write_word(info, (FPWV *)wp, data)) != 0) {
- return (rc);
- }
- src += sizeof (FPW);
- wp += sizeof (FPW);
- cnt -= sizeof (FPW);
- }
-
- if (cnt == 0)
- return ERR_OK;
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- }
- for (; i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- return write_word(info, (FPWV *)wp, data);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int
-write_word_amd(flash_info_t * info, FPWV * dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
- FPWV *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- base = (FPWV *) (info->start[0]);
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- base[0x0555] = (FPW) 0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW) 0x00550055; /* unlock */
- base[0x0555] = (FPW) 0x00A000A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer(0);
-
- /* data polling for D7 */
- while (res == 0
- && (*dest & (FPW) 0x00800080) != (data & (FPW) 0x00800080)) {
- if (get_timer(0) - start > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW) 0x00F000F0; /* reset bank */
- printf("SHA timeout\n");
- res = 1;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for Intel FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int
-write_word_intel(flash_info_t * info, FPWV * dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *dest = (FPW) 0x00500050; /* clear status register */
- *dest = (FPW) 0x00FF00FF; /* make sure in read mode */
- *dest = (FPW) 0x00400040; /* program setup */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer(0);
-
- while (res == 0 && (*dest & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW) 0x00B000B0; /* Suspend program */
- res = 1;
- }
- }
-
- if (res == 0 && (*dest & (FPW) 0x00100010))
- res = 1; /* write failed, time out error is close enough */
-
- *dest = (FPW) 0x00500050; /* clear status register */
- *dest = (FPW) 0x00FF00FF; /* make sure in read mode */
-
- return (res);
-}
-
-#ifdef CFG_FLASH_PROTECTION
-/*-----------------------------------------------------------------------
- */
-int
-flash_real_protect(flash_info_t * info, long sector, int prot)
-{
- int rcode = 0; /* assume success */
- FPWV *addr; /* address of sector */
- FPW value;
-
- addr = (FPWV *) (info->start[sector]);
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- flash_reset(info); /* make sure in read mode */
- *addr = (FPW) 0x00600060L; /* lock command setup */
- if (prot)
- *addr = (FPW) 0x00010001L; /* lock sector */
- else
- *addr = (FPW) 0x00D000D0L; /* unlock sector */
- flash_reset(info); /* reset to read mode */
-
- /* now see if it really is locked/unlocked as requested */
- *addr = (FPW) 0x00900090;
- /* read sector protection at sector address, (A7 .. A0) = 0x02.
- * D0 = 1 for each device if protected.
- * If at least one device is protected the sector is marked
- * protected, but return failure. Mixed protected and
- * unprotected devices within a sector should never happen.
- */
- value = addr[2] & (FPW) 0x00010001;
- if (value == 0)
- info->protect[sector] = 0;
- else if (value == (FPW) 0x00010001)
- info->protect[sector] = 1;
- else {
- /* error, mixed protected and unprotected */
- rcode = 1;
- info->protect[sector] = 1;
- }
- if (info->protect[sector] != prot)
- rcode = 1; /* failed to protect/unprotect as requested */
-
- /* reload all protection bits from hardware for now */
- flash_sync_real_protect(info);
- break;
-
- case FLASH_AM640U:
- default:
- /* no hardware protect that we support */
- info->protect[sector] = prot;
- break;
- }
-
- return rcode;
-}
-#endif
diff --git a/board/mx1fs2/intel.h b/board/mx1fs2/intel.h
deleted file mode 100644
index 8db5dd4f64..0000000000
--- a/board/mx1fs2/intel.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2002 ETC s.r.o.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the ETC s.r.o. nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Written by Marcel Telka <marcel@telka.sk>, 2002.
- *
- * Documentation:
- * [1] Intel Corporation, "3 Volt Intel Strata Flash Memory 28F128J3A, 28F640J3A,
- * 28F320J3A (x8/x16)", April 2002, Order Number: 290667-011
- * [2] Intel Corporation, "3 Volt Synchronous Intel Strata Flash Memory 28F640K3, 28F640K18,
- * 28F128K3, 28F128K18, 28F256K3, 28F256K18 (x16)", June 2002, Order Number: 290737-005
- *
- * This file is taken from OpenWinCE project hosted by SourceForge.net
- *
- */
-
-#ifndef FLASH_INTEL_H
-#define FLASH_INTEL_H
-
-#include <common.h>
-
-/* Intel CFI commands - see Table 4. in [1] and Table 3. in [2] */
-
-#define CFI_INTEL_CMD_READ_ARRAY 0xFF /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_READ_IDENTIFIER 0x90 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_READ_QUERY 0x98 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_READ_STATUS_REGISTER 0x70 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_CLEAR_STATUS_REGISTER 0x50 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_PROGRAM1 0x40 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_PROGRAM2 0x10 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_WRITE_TO_BUFFER 0xE8 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_CONFIRM 0xD0 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_BLOCK_ERASE 0x20 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_SUSPEND 0xB0 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_RESUME 0xD0 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_LOCK_SETUP 0x60 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_LOCK_BLOCK 0x01 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_UNLOCK_BLOCK 0xD0 /* 28FxxxJ3A - unlocks all blocks, 28FFxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_LOCK_DOWN_BLOCK 0x2F /* 28FxxxK3, 28FxxxK18 */
-
-/* Intel CFI Status Register bits - see Table 6. in [1] and Table 7. in [2] */
-
-#define CFI_INTEL_SR_READY 1 << 7 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_ERASE_SUSPEND 1 << 6 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_ERASE_ERROR 1 << 5 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_PROGRAM_ERROR 1 << 4 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_VPEN_ERROR 1 << 3 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_PROGRAM_SUSPEND 1 << 2 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_BLOCK_LOCKED 1 << 1 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_BEFP 1 << 0 /* 28FxxxK3, 28FxxxK18 */
-
-/* Intel flash device ID codes for 28FxxxJ3A - see Table 5. in [1] */
-
-#define CFI_CHIP_INTEL_28F320J3A 0x0016
-#define CFI_CHIPN_INTEL_28F320J3A "28F320J3A"
-#define CFI_CHIP_INTEL_28F640J3A 0x0017
-#define CFI_CHIPN_INTEL_28F640J3A "28F640J3A"
-#define CFI_CHIP_INTEL_28F128J3A 0x0018
-#define CFI_CHIPN_INTEL_28F128J3A "28F128J3A"
-
-/* Intel flash device ID codes for 28FxxxK3 and 28FxxxK18 - see Table 8. in [2] */
-
-#define CFI_CHIP_INTEL_28F640K3 0x8801
-#define CFI_CHIPN_INTEL_28F640K3 "28F640K3"
-#define CFI_CHIP_INTEL_28F128K3 0x8802
-#define CFI_CHIPN_INTEL_28F128K3 "28F128K3"
-#define CFI_CHIP_INTEL_28F256K3 0x8803
-#define CFI_CHIPN_INTEL_28F256K3 "28F256K3"
-#define CFI_CHIP_INTEL_28F640K18 0x8805
-#define CFI_CHIPN_INTEL_28F640K18 "28F640K18"
-#define CFI_CHIP_INTEL_28F128K18 0x8806
-#define CFI_CHIPN_INTEL_28F128K18 "28F128K18"
-#define CFI_CHIP_INTEL_28F256K18 0x8807
-#define CFI_CHIPN_INTEL_28F256K18 "28F256K18"
-
-#endif /* FLASH_INTEL_H */
diff --git a/board/mx1fs2/lowlevel_init.S b/board/mx1fs2/lowlevel_init.S
deleted file mode 100644
index 8211beb3f8..0000000000
--- a/board/mx1fs2/lowlevel_init.S
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2004 Sascha Hauer, Pengutronix
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/imx-regs.h>
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
-/* Change PERCLK1DIV to 14 ie 14+1 */
- ldr r0, =PCDR
- ldr r1, =CFG_PCDR_VAL
- str r1, [r0]
-
-/* set MCU PLL Control Register 0 */
-
- ldr r0, =MPCTL0
- ldr r1, =CFG_MPCTL0_VAL
- str r1, [r0]
-
-/* set MCU PLL Control Register 1 */
-
- ldr r0, =MPCTL1
- ldr r1, =CFG_MPCTL1_VAL
- str r1, [r0]
-
-/* set mpll restart bit */
- ldr r0, =CSCR
- ldr r1, [r0]
- orr r1,r1,#(1<<21)
- str r1, [r0]
-
- mov r2,#0x10
-1:
- mov r3,#0x2000
-2:
- subs r3,r3,#1
- bne 2b
-
- subs r2,r2,#1
- bne 1b
-
-/* set System PLL Control Register 0 */
-
- ldr r0, =SPCTL0
- ldr r1, =CFG_SPCTL0_VAL
- str r1, [r0]
-
-/* set System PLL Control Register 1 */
-
- ldr r0, =SPCTL1
- ldr r1, =CFG_SPCTL1_VAL
- str r1, [r0]
-
-/* set spll restart bit */
- ldr r0, =CSCR
- ldr r1, [r0]
- orr r1,r1,#(1<<22)
- str r1, [r0]
-
- mov r2,#0x10
-1:
- mov r3,#0x2000
-2:
- subs r3,r3,#1
- bne 2b
-
- subs r2,r2,#1
- bne 1b
-
- ldr r0, =CSCR
- ldr r1, =CFG_CSCR_VAL
- str r1, [r0]
-
- ldr r0, =GPCR
- ldr r1, =CFG_GPCR_VAL
- str r1, [r0]
-
-/*
- * I have now read the ARM920 DataSheet back-to-Back, and have stumbled upon
- * this.....
- *
- * It would appear that from a Cold-Boot the ARM920T enters "FastBus" mode CP15
- * register 1, this stops it using the output of the PLL and thus runs at the
- * slow rate. Unless you place the Core into "Asynch" mode, the CPU will never
- * use the value set in the CM_OSC registers...regardless of what you set it
- * too! Thus, although i thought i was running at 140MHz, i'm actually running
- * at 40!..
- *
- * Slapping this into my bootloader does the trick...
- *
- * MRC p15,0,r0,c1,c0,0 ; read core configuration register
- * ORR r0,r0,#0xC0000000 ; set asynchronous clocks and not fastbus mode
- * MCR p15,0,r0,c1,c0,0 ; write modified value to core configuration
- * register
- *
- */
- MRC p15,0,r0,c1,c0,0
-/* ORR r0,r0,#0xC0000000 async mode */
-/* ORR r0,r0,#0x40000000 sync mode */
- ORR r0,r0,#0xC0000000
- MCR p15,0,r0,c1,c0,0
-
- ldr r0, =GIUS(0)
- ldr r1, =CFG_GIUS_A_VAL
- str r1, [r0]
-
- ldr r0, =FMCR
- ldr r1, =CFG_FMCR_VAL
- str r1, [r0]
-
- ldr r0, =CS0U
- ldr r1, =CFG_CS0U_VAL
- str r1, [r0]
-
- ldr r0, =CS0L
- ldr r1, =CFG_CS0L_VAL
- str r1, [r0]
-
- ldr r0, =CS1U
- ldr r1, =CFG_CS1U_VAL
- str r1, [r0]
-
- ldr r0, =CS1L
- ldr r1, =CFG_CS1L_VAL
- str r1, [r0]
-
- ldr r0, =CS4U
- ldr r1, =CFG_CS4U_VAL
- str r1, [r0]
-
- ldr r0, =CS4L
- ldr r1, =CFG_CS4L_VAL
- str r1, [r0]
-
- ldr r0, =CS5U
- ldr r1, =CFG_CS5U_VAL
- str r1, [r0]
-
- ldr r0, =CS5L
- ldr r1, =CFG_CS5L_VAL
- str r1, [r0]
-
-/* SDRAM Setup */
-
- ldr r1,=0x00221000 /* adr of SDCTRL0 */
- ldr r0,=0x92120200
- str r0,[r1,#0] /* put in precharge command mode */
- ldr r2,=0x08200000 /* adr for precharge cmd */
- ldr r0,[r2,#0] /* precharge */
- ldr r0,=0xA2120200
- ldr r2,=0x08000000 /* start of SDRAM */
- str r0,[r1,#0] /* put in auto-refresh mode */
- ldr r0,[r2,#0] /* auto-refresh */
- ldr r0,[r2,#0] /* auto-refresh */
- ldr r0,[r2,#0] /* auto-refresh */
- ldr r0,[r2,#0] /* auto-refresh */
- ldr r0,[r2,#0] /* auto-refresh */
- ldr r0,[r2,#0] /* auto-refresh */
- ldr r0,[r2,#0] /* auto-refresh */
- ldr r0,=0xB2120200
- ldr r2,=0x08111800
- str r0,[r1,#0] /* setup for mode register of SDRAM */
- ldr r0,[r2,#0] /* program mode register */
- ldr r0,=0x82124267
- str r0,[r1,#0] /* back to normal operation */
-
- mov pc,r10
diff --git a/board/mx1fs2/mx1fs2.c b/board/mx1fs2/mx1fs2.c
deleted file mode 100644
index 1c026f0f7a..0000000000
--- a/board/mx1fs2/mx1fs2.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2004 Sascha Hauer, Pengutronix
- *
- * 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 <common.h>
-#include <asm/arch/imx-regs.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define SHOW_BOOT_PROGRESS(arg) show_boot_progress(arg)
-
-extern void imx_gpio_mode(int gpio_mode);
-
-static void logo_init(void)
-{
- imx_gpio_mode(PD15_PF_LD0);
- imx_gpio_mode(PD16_PF_LD1);
- imx_gpio_mode(PD17_PF_LD2);
- imx_gpio_mode(PD18_PF_LD3);
- imx_gpio_mode(PD19_PF_LD4);
- imx_gpio_mode(PD20_PF_LD5);
- imx_gpio_mode(PD21_PF_LD6);
- imx_gpio_mode(PD22_PF_LD7);
- imx_gpio_mode(PD23_PF_LD8);
- imx_gpio_mode(PD24_PF_LD9);
- imx_gpio_mode(PD25_PF_LD10);
- imx_gpio_mode(PD26_PF_LD11);
- imx_gpio_mode(PD27_PF_LD12);
- imx_gpio_mode(PD28_PF_LD13);
- imx_gpio_mode(PD29_PF_LD14);
- imx_gpio_mode(PD30_PF_LD15);
- imx_gpio_mode(PD14_PF_FLM_VSYNC);
- imx_gpio_mode(PD13_PF_LP_HSYNC);
- imx_gpio_mode(PD6_PF_LSCLK);
- imx_gpio_mode(GPIO_PORTD | GPIO_OUT | GPIO_GPIO);
- imx_gpio_mode(PD11_PF_CONTRAST);
- imx_gpio_mode(PD10_PF_SPL_SPR);
-
- LCDC_RMCR = 0x00000000;
- LCDC_PCR = PCR_COLOR | PCR_PBSIZ_8 | PCR_BPIX_16 | PCR_PCD(5);
- LCDC_HCR = HCR_H_WIDTH(2);
- LCDC_VCR = VCR_V_WIDTH(2);
-
- LCDC_PWMR = 0x00000380; /* contrast to 0x80 middle (is best !!!) */
- LCDC_SSA = 0x10040000; /* image in flash */
-
- LCDC_SIZE = SIZE_XMAX(320) | SIZE_YMAX(240); /* screen size */
-
- LCDC_VPW = 0x000000A0; /* Virtual Page Width Register */
- LCDC_POS = 0x00000000; /* panning offset 0 (0 pixel offset) */
-
- /* disable Cursor */
- LCDC_CPOS = 0x00000000;
-
- /* fixed burst length */
- LCDC_DMACR = DMACR_BURST | DMACR_HM(8) | DMACR_TM(2);
-
- /* enable LCD */
- DR(3) |= 0x00001000;
- LCDC_RMCR = RMCR_LCDC_EN;
-
-}
-
-int
-board_init(void)
-{
- gd->bd->bi_arch_number = MACH_TYPE_MX1FS2;
- gd->bd->bi_boot_params = 0x08000100;
-serial_init();
- logo_init();
- return 0;
-}
-
-int
-dram_init(void)
-{
-#if ( CONFIG_NR_DRAM_BANKS > 0 )
- gd->bd->bi_dram[0].start = MX1FS2_SDRAM_1;
- gd->bd->bi_dram[0].size = MX1FS2_SDRAM_1_SIZE;
-#endif
- return 0;
-}
-
-/**
- * show_boot_progress: - indicate state of the boot process
- *
- * @param status: Status number - see README for details.
- *
- */
-
-void
-show_boot_progress(int status)
-{
- /* We use this as a hook to disable serial ports just before booting
- * This way we suppress the "uncompressing linux..." message
- */
-#ifdef CONFIG_SILENT_CONSOLE
- if( status == 8) {
- if( getenv("silent") != NULL ) {
- *(volatile unsigned long *)0x206080 &= ~1;
- *(volatile unsigned long *)0x207080 &= ~1;
- }
- }
-#endif
- return;
-}
diff --git a/board/mx1fs2/u-boot.lds b/board/mx1fs2/u-boot.lds
deleted file mode 100644
index 1d1669cdea..0000000000
--- a/board/mx1fs2/u-boot.lds
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/nc650/Makefile b/board/nc650/Makefile
deleted file mode 100644
index e4006e7bdd..0000000000
--- a/board/nc650/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# (C) Copyright 2006 Detlev Zundel, dzu@denx.de
-# (C) Copyright 2004-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o nand.o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/nc650/config.mk b/board/nc650/config.mk
deleted file mode 100644
index 52c8ffe353..0000000000
--- a/board/nc650/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (C) Copyright 2006 Detlev Zundel, dzu@denx.de
-# (C) Copyright 2004
-# 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
-#
-
-#
-# NC650 board
-#
-
-TEXT_BASE = 0x40700000
-BOARDLIBS = $(obj)drivers/nand/libnand.a
diff --git a/board/nc650/flash.c b/board/nc650/flash.c
deleted file mode 100644
index 8d7c172657..0000000000
--- a/board/nc650/flash.c
+++ /dev/null
@@ -1,542 +0,0 @@
-/*
- * (C) Copyright 2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (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
- */
-
-#undef DEBUG
-
-#include <common.h>
-#include <mpc8xx.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifndef CFG_OR_TIMING_FLASH_AT_50MHZ
-#define CFG_OR_TIMING_FLASH_AT_50MHZ (OR_ACS_DIV1 | OR_TRLX | OR_CSNT_SAM | \
- OR_SCY_2_CLK | OR_EHTR | OR_BI)
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Protection Flags:
- */
-#define FLAG_PROTECT_SET 0x01
-#define FLAG_PROTECT_CLEAR 0x02
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH8
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#elif FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#else /* FLASH_PORT_WIDTH8 */
-#define FLASH_PORT_WIDTH uchar
-#define FLASH_PORT_WIDTHV vu_char
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPWV * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0;
- int i;
-#ifdef CFG_OR_TIMING_FLASH_AT_50MHZ
- int scy, trlx, flash_or_timing, clk_diff;
-
- scy = (CFG_OR_TIMING_FLASH_AT_50MHZ & OR_SCY_MSK) >> 4;
- if (CFG_OR_TIMING_FLASH_AT_50MHZ & OR_TRLX) {
- trlx = OR_TRLX;
- scy *= 2;
- } else
- trlx = 0;
-
- /* We assume that each 10MHz of bus clock require 1-clk SCY
- * adjustment.
- */
- clk_diff = (gd->bus_clk / 1000000) - 50;
-
- /* We need proper rounding here. This is what the "+5" and "-5"
- * are here for.
- */
- if (clk_diff >= 0)
- scy += (clk_diff + 5) / 10;
- else
- scy += (clk_diff - 5) / 10;
-
- /* For bus frequencies above 50MHz, we want to use relaxed
- * timing (OR_TRLX).
- */
- if (gd->bus_clk >= 50000000)
- trlx = OR_TRLX;
- else
- trlx = 0;
-
- if (trlx)
- scy /= 2;
-
- if (scy > 0xf)
- scy = 0xf;
- if (scy < 1)
- scy = 1;
-
- flash_or_timing = (scy << 4) | trlx |
- (CFG_OR_TIMING_FLASH_AT_50MHZ & ~(OR_TRLX | OR_SCY_MSK));
-#endif
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
- size_b0 = flash_get_size ((FPW *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 << 20);
- }
-
- /* Remap FLASH according to real size */
-#ifndef CFG_OR_TIMING_FLASH_AT_50MHZ
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
-#else
- memctl->memc_or0 = flash_or_timing | (-size_b0 & OR_AM_MSK);
-#endif
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_PS_8 | BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size ((FPW *) CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- (void) flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000);
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J3A:
- printf ("28F320J3A\n");
- break;
- case FLASH_28F640J3A:
- printf ("28F640J3A\n");
- break;
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (FPWV * addr, flash_info_t * info)
-{
- FPW value;
-
- addr[0] = (FPW) 0x00900090;
-
- value = addr[0];
-
- debug ("Manuf. ID @ 0x%08lx: 0x%08lx\n", (ulong)addr, value);
-
- switch (value) {
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
-#ifdef FLASH_PORT_WIDTH8
- value = addr[2]; /* device ID */
-#else
- value = addr[1]; /* device ID */
-#endif
-
- debug ("Device ID @ 0x%08lx: 0x%08lx\n", (ulong)(&addr[1]), value);
-
- switch (value) {
- case (FPW) INTEL_ID_28F320J3A:
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (FPW) INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- }
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
-
- int i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#elif defined(FLASH_PORT_WIDTH32)
- wp = (addr & ~3);
- port_width = 4;
-#else
- wp = addr;
- port_width = 1;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- start = get_timer (0);
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
diff --git a/board/nc650/nand.c b/board/nc650/nand.c
deleted file mode 100644
index 6bb7c31437..0000000000
--- a/board/nc650/nand.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * (C) Copyright 2006 Detlev Zundel, dzu@denx.de
- * (C) Copyright 2006 DENX Software Engineering
- *
- * 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 <common.h>
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-
-#include <nand.h>
-
-#if defined(CONFIG_IDS852_REV1)
-/*
- * hardware specific access to control-lines
- */
-static void nc650_hwcontrol(struct mtd_info *mtd, int cmd)
-{
- struct nand_chip *this = mtd->priv;
-
- switch(cmd) {
- case NAND_CTL_SETCLE:
- this->IO_ADDR_W += 2;
- break;
- case NAND_CTL_CLRCLE:
- this->IO_ADDR_W -= 2;
- break;
- case NAND_CTL_SETALE:
- this->IO_ADDR_W += 1;
- break;
- case NAND_CTL_CLRALE:
- this->IO_ADDR_W -= 1;
- break;
- case NAND_CTL_SETNCE:
- case NAND_CTL_CLRNCE:
- /* nop */
- break;
- }
-}
-#elif defined(CONFIG_IDS852_REV2)
-/*
- * hardware specific access to control-lines
- */
-static void nc650_hwcontrol(struct mtd_info *mtd, int cmd)
-{
- struct nand_chip *this = mtd->priv;
-
- switch(cmd) {
- case NAND_CTL_SETCLE:
- *(((volatile __u8 *) this->IO_ADDR_W) + 0xa) = 0;
- break;
- case NAND_CTL_CLRCLE:
- *(((volatile __u8 *) this->IO_ADDR_W) + 0x8) = 0;
- break;
- case NAND_CTL_SETALE:
- *(((volatile __u8 *) this->IO_ADDR_W) + 0x9) = 0;
- break;
- case NAND_CTL_CLRALE:
- *(((volatile __u8 *) this->IO_ADDR_W) + 0x8) = 0;
- break;
- case NAND_CTL_SETNCE:
- *(((volatile __u8 *) this->IO_ADDR_W) + 0x8) = 0;
- break;
- case NAND_CTL_CLRNCE:
- *(((volatile __u8 *) this->IO_ADDR_W) + 0xc) = 0;
- break;
- }
-}
-#else
-#error Unknown IDS852 module revision
-#endif
-
-/*
- * Board-specific NAND initialization. The following members of the
- * argument are board-specific (per include/linux/mtd/nand.h):
- * - IO_ADDR_R?: address to read the 8 I/O lines of the flash device
- * - IO_ADDR_W?: address to write the 8 I/O lines of the flash device
- * - hwcontrol: hardwarespecific function for accesing control-lines
- * - dev_ready: hardwarespecific function for accesing device ready/busy line
- * - enable_hwecc?: function to enable (reset) hardware ecc generator. Must
- * only be provided if a hardware ECC is available
- * - eccmode: mode of ecc, see defines
- * - chip_delay: chip dependent delay for transfering data from array to
- * read regs (tR)
- * - options: various chip options. They can partly be set to inform
- * nand_scan about special functionality. See the defines for further
- * explanation
- * Members with a "?" were not set in the merged testing-NAND branch,
- * so they are not set here either.
- */
-int board_nand_init(struct nand_chip *nand)
-{
-
- nand->hwcontrol = nc650_hwcontrol;
- nand->eccmode = NAND_ECC_SOFT;
- nand->chip_delay = 12;
-/* nand->options = NAND_SAMSUNG_LP_OPTIONS;*/
- return 0;
-}
-#endif /* (CONFIG_COMMANDS & CFG_CMD_NAND) */
diff --git a/board/nc650/nc650.c b/board/nc650/nc650.c
deleted file mode 100644
index 8a6b5b00a9..0000000000
--- a/board/nc650/nc650.c
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * (C) Copyright 2006 Detlev Zundel, dzu@denx.de
- * (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 <common.h>
-#include <config.h>
-#include <mpc8xx.h>
-
-/*
- * Memory Controller Using
- *
- * CS0 - Flash memory (0x40000000)
- * CS3 - SDRAM (0x00000000}
- */
-
-/* ------------------------------------------------------------------------- */
-
-#define _not_used_ 0xffffffff
-
-const uint sdram_table[] = {
- /* single read. (offset 0 in upm RAM) */
- 0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00,
- 0x1ff77c47,
-
- /* MRS initialization (offset 5) */
-
- 0x1ff77c34, 0xefeabc34, 0x1fb57c35,
-
- /* burst read. (offset 8 in upm RAM) */
- 0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
- 0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* single write. (offset 18 in upm RAM) */
- 0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* burst write. (offset 20 in upm RAM) */
- 0x1f07fc04, 0xeeaebc00, 0x10ad7c00, 0xf0affc00,
- 0xf0affc00, 0xe1bbbc04, 0x1ff77c47, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* refresh. (offset 30 in upm RAM) */
- 0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc84, 0xfffffc07, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* exception. (offset 3c in upm RAM) */
- 0x7ffffc07, _not_used_, _not_used_, _not_used_
-};
-
-const uint nand_flash_table[] = {
- /* single read. (offset 0 in upm RAM) */
- 0x0ff3fc04, 0x0ff3fc04, 0x0ff3fc04, 0x0ffffc04,
- 0xfffffc00, 0xfffffc05, 0xfffffc05, 0xfffffc05,
-
- /* burst read. (offset 8 in upm RAM) */
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
-
- /* single write. (offset 18 in upm RAM) */
- 0x00fffc04, 0x00fffc04, 0x00fffc04, 0x0ffffc04,
- 0x0ffffc84, 0x0ffffc84, 0xfffffc00, 0xfffffc05,
-
- /* burst write. (offset 20 in upm RAM) */
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
-
- /* refresh. (offset 30 in upm RAM) */
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
-
- /* exception. (offset 3c in upm RAM) */
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-#if !defined(CONFIG_CP850)
- puts ("Board: NC650");
-#else
- puts ("Board: CP850");
-#endif
-#if defined(CONFIG_IDS852_REV1)
- puts (" with IDS852 rev 1 module\n");
-#elif defined(CONFIG_IDS852_REV2)
- puts (" with IDS852 rev 2 module\n");
-#endif
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size8, size9;
- long int size_b0 = 0;
- unsigned long reg;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_8K;
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller bank 1 to the SDRAM bank at
- * preliminary address - these have to be modified after the
- * SDRAM size has been determined.
- */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80006105; /* SDRAM bank 0 */
- udelay (200);
- memctl->memc_mcr = 0x80006230; /* SDRAM bank 0 - execute twice */
- udelay (200);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE3_PRELIM,
- SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE3_PRELIM,
- SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- if (size8 < size9) {
- size_b0 = size9;
- } else {
- size_b0 = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
- }
-
- /*
- * Adjust refresh rate depending on SDRAM type, both banks.
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if ((size_b0 < 0x02000000)) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
- udelay (1000);
- }
-
- /*
- * Final mapping
- */
-
- memctl->memc_or3 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br3 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
-
- udelay (10000);
-
- /* Configure UPMB for NAND flash access */
- upmconfig (UPMB, (uint *) nand_flash_table,
- sizeof (nand_flash_table) / sizeof (uint));
-
- memctl->memc_mbmr = CFG_MBMR_NAND;
-
- return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base, long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
-
-
-#if defined(CONFIG_CP850)
-
-#define DPRAM_VARNAME "KP850DIP"
-#define PARAM_ADDR 0x7C0
-#define NAME_ADDR 0x7F8
-#define BOARD_NAME "KP01"
-#define DEFAULT_LB "241111"
-
-int misc_init_r(void)
-{
- int iCompatMode = 0;
- char *pParam = NULL;
- char *envlb;
-
- /*
- First byte in CPLD read address space signals compatibility mode
- 0 - cp850
- 1 - kp852
- */
- pParam = (char*)(CFG_CPLD_BASE);
- if( *pParam != 0)
- iCompatMode = 1;
-
- if ( iCompatMode != 0) {
- /*
- In KP852 compatibility mode we have to write to
- DPRAM as early as possible the binary coded
- line config and board name.
- The line config is derived from the environment
- variable DPRAM_VARNAME by converting from ASCII
- to binary per character.
- */
- if ( (envlb = getenv ( DPRAM_VARNAME )) == 0) {
- setenv( DPRAM_VARNAME, DEFAULT_LB);
- envlb = DEFAULT_LB;
- }
-
- /* Status string */
- printf("Mode: KP852(LB=%s)\n", envlb);
-
- /* copy appl init */
- pParam = (char*)(DPRAM_BASE_ADDR + PARAM_ADDR);
- while (*envlb) {
- *(pParam++) = *(envlb++) - '0';
- }
- *pParam = '\0';
-
- /* copy board id */
- pParam = (char*)(DPRAM_BASE_ADDR + NAME_ADDR);
- strcpy( pParam, BOARD_NAME);
- } else {
- puts("Mode: CP850\n");
- }
-
- return 0;
-}
-#endif
diff --git a/board/nc650/u-boot.lds b/board/nc650/u-boot.lds
deleted file mode 100644
index ca449181eb..0000000000
--- a/board/nc650/u-boot.lds
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * (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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/nc650/u-boot.lds.debug b/board/nc650/u-boot.lds.debug
deleted file mode 100644
index 2228a2005a..0000000000
--- a/board/nc650/u-boot.lds.debug
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * (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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/netphone/Makefile b/board/netphone/Makefile
deleted file mode 100644
index df7d3123b9..0000000000
--- a/board/netphone/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o phone_console.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/netphone/config.mk b/board/netphone/config.mk
deleted file mode 100644
index 8497ebc812..0000000000
--- a/board/netphone/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (C) Copyright 2000-2004
-# 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
-#
-
-#
-# netVia Boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/netphone/flash.c b/board/netphone/flash.c
deleted file mode 100644
index 0c81140f23..0000000000
--- a/board/netphone/flash.c
+++ /dev/null
@@ -1,529 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-static int write_byte(flash_info_t * info, ulong dest, uchar data);
-static void flash_get_offsets(ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init(void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size;
-#if CONFIG_NETPHONE_VERSION == 2
- unsigned long size1;
-#endif
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i)
- flash_info[i].flash_id = FLASH_UNKNOWN;
-
- size = flash_get_size((vu_long *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size << 20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | (memctl->memc_br0 & ~(BR_BA_MSK));
-
- /* Re-do sizing to get full correct info */
- size = flash_get_size((vu_long *) CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets(CFG_FLASH_BASE, &flash_info[0]);
-
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE, CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-
-#ifdef CFG_ENV_ADDR_REDUND
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE_REDUND - 1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size;
-
-#if CONFIG_NETPHONE_VERSION == 2
- size1 = flash_get_size((vu_long *) FLASH_BASE4_PRELIM, &flash_info[1]);
- if (size1 > 0) {
- if (flash_info[1].flash_id == FLASH_UNKNOWN)
- printf("## Unknown FLASH on Bank 1 - Size = 0x%08lx = %ld MB\n", size1, size1 << 20);
-
- /* Remap FLASH according to real size */
- memctl->memc_or4 = CFG_OR_TIMING_FLASH | (-size1 & 0xFFFF8000);
- memctl->memc_br4 = (CFG_FLASH_BASE4 & BR_BA_MSK) | (memctl->memc_br4 & ~(BR_BA_MSK));
-
- /* Re-do sizing to get full correct info */
- size1 = flash_get_size((vu_long *) CFG_FLASH_BASE4, &flash_info[1]);
-
- flash_get_offsets(CFG_FLASH_BASE4, &flash_info[1]);
-
- size += size1;
- } else
- memctl->memc_br4 &= ~BR_V;
-#endif
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets(ulong base, flash_info_t * info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000);
- }
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf("FUJITSU ");
- break;
- case FLASH_MAN_MX:
- printf("MXIC ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- printf("AM29LV040B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400B:
- printf("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T:
- printf("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B:
- printf("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T:
- printf("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B:
- printf("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T:
- printf("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B:
- printf("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- break;
- }
-
- printf(" Size: %ld MB in %d Sectors\n", info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf("\n ");
- printf(" %08lX%s", info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size(vu_long * addr, flash_info_t * info)
-{
- short i;
- uchar mid;
- uchar pid;
- vu_char *caddr = (vu_char *) addr;
- ulong base = (ulong) addr;
-
- /* Write auto select command: read Manufacturer ID */
- caddr[0x0555] = 0xAA;
- caddr[0x02AA] = 0x55;
- caddr[0x0555] = 0x90;
-
- mid = caddr[0];
- switch (mid) {
- case (AMD_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (MX_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_MX;
- break;
- case (STM_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- pid = caddr[1]; /* device ID */
- switch (pid) {
- case (AMD_ID_LV400T & 0xFF):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case (AMD_ID_LV400B & 0xFF):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case (AMD_ID_LV800T & 0xFF):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800B & 0xFF):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV160T & 0xFF):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV160B & 0xFF):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV040B & 0xFF):
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break;
-
- case (STM_ID_M29W040B & 0xFF):
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break;
-
-#if 0 /* enable when device IDs are available */
- case (AMD_ID_LV320T & 0xFF):
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV320B & 0xFF):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- printf(" ");
- /* set up sector start address table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000);
- }
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection: D0 = 1 if protected */
- caddr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = caddr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- caddr = (vu_char *) info->start[0];
-
- caddr[0x0555] = 0xAA;
- caddr[0x02AA] = 0x55;
- caddr[0x0555] = 0xF0;
-
- udelay(20000);
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-{
- vu_char *addr = (vu_char *) (info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("- missing\n");
- } else {
- printf("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf("Can't erase unknown flash type %08lx - aborted\n", info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x80;
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_char *) (info->start[sect]);
- addr[0] = 0x30;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay(1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer(0);
- last = start;
- addr = (vu_char *) (info->start[l_sect]);
- while ((addr[0] & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (vu_char *) info->start[0];
- addr[0] = 0xF0; /* reset bank */
-
- printf(" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- int rc;
-
- while (cnt > 0) {
- if ((rc = write_byte(info, addr++, *src++)) != 0) {
- return (rc);
- }
- --cnt;
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte(flash_info_t * info, ulong dest, uchar data)
-{
- vu_char *addr = (vu_char *) (info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_char *) dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0xA0;
-
- *((vu_char *) dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer(0);
- while ((*((vu_char *) dest) & 0x80) != (data & 0x80)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/netphone/netphone.c b/board/netphone/netphone.c
deleted file mode 100644
index 297de97a55..0000000000
--- a/board/netphone/netphone.c
+++ /dev/null
@@ -1,722 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Pantelis Antoniou, Intracom S.A., panto@intracom.gr
- * 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
- */
-
-/*
- * Pantelis Antoniou, Intracom S.A., panto@intracom.gr
- * U-Boot port on NetTA4 board
- */
-
-#include <common.h>
-#include <miiphy.h>
-#include <sed156x.h>
-#include <status_led.h>
-
-#include "mpc8xx.h"
-
-#ifdef CONFIG_HW_WATCHDOG
-#include <watchdog.h>
-#endif
-
-int fec8xx_miiphy_read(char *devname, unsigned char addr,
- unsigned char reg, unsigned short *value);
-int fec8xx_miiphy_write(char *devname, unsigned char addr,
- unsigned char reg, unsigned short value);
-
-/****************************************************************/
-
-/* some sane bit macros */
-#define _BD(_b) (1U << (31-(_b)))
-#define _BDR(_l, _h) (((((1U << (31-(_l))) - 1) << 1) | 1) & ~((1U << (31-(_h))) - 1))
-
-#define _BW(_b) (1U << (15-(_b)))
-#define _BWR(_l, _h) (((((1U << (15-(_l))) - 1) << 1) | 1) & ~((1U << (15-(_h))) - 1))
-
-#define _BB(_b) (1U << (7-(_b)))
-#define _BBR(_l, _h) (((((1U << (7-(_l))) - 1) << 1) | 1) & ~((1U << (7-(_h))) - 1))
-
-#define _B(_b) _BD(_b)
-#define _BR(_l, _h) _BDR(_l, _h)
-
-/****************************************************************/
-
-/*
- * Check Board Identity:
- *
- * Return 1 always.
- */
-
-int checkboard(void)
-{
- printf ("Intracom NetPhone V%d\n", CONFIG_NETPHONE_VERSION);
- return (0);
-}
-
-/****************************************************************/
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-/****************************************************************/
-
-#define CS_0000 0x00000000
-#define CS_0001 0x10000000
-#define CS_0010 0x20000000
-#define CS_0011 0x30000000
-#define CS_0100 0x40000000
-#define CS_0101 0x50000000
-#define CS_0110 0x60000000
-#define CS_0111 0x70000000
-#define CS_1000 0x80000000
-#define CS_1001 0x90000000
-#define CS_1010 0xA0000000
-#define CS_1011 0xB0000000
-#define CS_1100 0xC0000000
-#define CS_1101 0xD0000000
-#define CS_1110 0xE0000000
-#define CS_1111 0xF0000000
-
-#define BS_0000 0x00000000
-#define BS_0001 0x01000000
-#define BS_0010 0x02000000
-#define BS_0011 0x03000000
-#define BS_0100 0x04000000
-#define BS_0101 0x05000000
-#define BS_0110 0x06000000
-#define BS_0111 0x07000000
-#define BS_1000 0x08000000
-#define BS_1001 0x09000000
-#define BS_1010 0x0A000000
-#define BS_1011 0x0B000000
-#define BS_1100 0x0C000000
-#define BS_1101 0x0D000000
-#define BS_1110 0x0E000000
-#define BS_1111 0x0F000000
-
-#define GPL0_AAAA 0x00000000
-#define GPL0_AAA0 0x00200000
-#define GPL0_AAA1 0x00300000
-#define GPL0_000A 0x00800000
-#define GPL0_0000 0x00A00000
-#define GPL0_0001 0x00B00000
-#define GPL0_111A 0x00C00000
-#define GPL0_1110 0x00E00000
-#define GPL0_1111 0x00F00000
-
-#define GPL1_0000 0x00000000
-#define GPL1_0001 0x00040000
-#define GPL1_1110 0x00080000
-#define GPL1_1111 0x000C0000
-
-#define GPL2_0000 0x00000000
-#define GPL2_0001 0x00010000
-#define GPL2_1110 0x00020000
-#define GPL2_1111 0x00030000
-
-#define GPL3_0000 0x00000000
-#define GPL3_0001 0x00004000
-#define GPL3_1110 0x00008000
-#define GPL3_1111 0x0000C000
-
-#define GPL4_0000 0x00000000
-#define GPL4_0001 0x00001000
-#define GPL4_1110 0x00002000
-#define GPL4_1111 0x00003000
-
-#define GPL5_0000 0x00000000
-#define GPL5_0001 0x00000400
-#define GPL5_1110 0x00000800
-#define GPL5_1111 0x00000C00
-#define LOOP 0x00000080
-
-#define EXEN 0x00000040
-
-#define AMX_COL 0x00000000
-#define AMX_ROW 0x00000020
-#define AMX_MAR 0x00000030
-
-#define NA 0x00000008
-
-#define UTA 0x00000004
-
-#define TODT 0x00000002
-
-#define LAST 0x00000001
-
-#define A10_AAAA GPL0_AAAA
-#define A10_AAA0 GPL0_AAA0
-#define A10_AAA1 GPL0_AAA1
-#define A10_000A GPL0_000A
-#define A10_0000 GPL0_0000
-#define A10_0001 GPL0_0001
-#define A10_111A GPL0_111A
-#define A10_1110 GPL0_1110
-#define A10_1111 GPL0_1111
-
-#define RAS_0000 GPL1_0000
-#define RAS_0001 GPL1_0001
-#define RAS_1110 GPL1_1110
-#define RAS_1111 GPL1_1111
-
-#define CAS_0000 GPL2_0000
-#define CAS_0001 GPL2_0001
-#define CAS_1110 GPL2_1110
-#define CAS_1111 GPL2_1111
-
-#define WE_0000 GPL3_0000
-#define WE_0001 GPL3_0001
-#define WE_1110 GPL3_1110
-#define WE_1111 GPL3_1111
-
-/* #define CAS_LATENCY 3 */
-#define CAS_LATENCY 2
-
-const uint sdram_table[0x40] = {
-
-#if CAS_LATENCY == 3
- /* RSS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0000 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_,
-
- /* RBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WSS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0000 | BS_0001 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL | UTA, /* WRITE */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL, /* WRITE */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0001 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-#endif
-
-#if CAS_LATENCY == 2
- /* RSS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_0001 | A10_0000 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_1110 | BS_1111 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
- /* RBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0001 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1110 | BS_1111 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WSS */
- CS_0001 | BS_1111 | A10_AAA0 | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1110 | AMX_COL, /* NOP */
- CS_0000 | BS_0001 | A10_0001 | RAS_1110 | CAS_0001 | WE_0000 | AMX_COL | UTA, /* WRITE */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_,
-
- /* WBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1110 | AMX_COL, /* NOP */
- CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_0001 | AMX_COL, /* WRITE */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1110 | BS_0001 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
-#endif
-
- /* UPT */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_0001 | WE_1111 | AMX_COL | UTA | LOOP, /* ATRFR */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | LOOP, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
- /* EXC */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | LAST,
- _NOT_USED_,
-
- /* REG */
- CS_1110 | BS_1111 | A10_1110 | RAS_1110 | CAS_1110 | WE_1110 | AMX_MAR | UTA,
- CS_0001 | BS_1111 | A10_0001 | RAS_0001 | CAS_0001 | WE_0001 | AMX_MAR | UTA | LAST,
-};
-
-#if CONFIG_NETPHONE_VERSION == 2
-static const uint nandcs_table[0x40] = {
- /* RSS */
- CS_1000 | GPL4_1111 | GPL5_1111 | UTA,
- CS_0000 | GPL4_1110 | GPL5_1111 | UTA,
- CS_0000 | GPL4_0000 | GPL5_1111 | UTA,
- CS_0000 | GPL4_0000 | GPL5_1111 | UTA,
- CS_0000 | GPL4_0000 | GPL5_1111,
- CS_0000 | GPL4_0001 | GPL5_1111 | UTA,
- CS_0000 | GPL4_1111 | GPL5_1111 | UTA,
- CS_0011 | GPL4_1111 | GPL5_1111 | UTA | LAST, /* NOP */
-
- /* RBS */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WSS */
- CS_1000 | GPL4_1111 | GPL5_1110 | UTA,
- CS_0000 | GPL4_1111 | GPL5_0000 | UTA,
- CS_0000 | GPL4_1111 | GPL5_0000 | UTA,
- CS_0000 | GPL4_1111 | GPL5_0000 | UTA,
- CS_0000 | GPL4_1111 | GPL5_0001 | UTA,
- CS_0000 | GPL4_1111 | GPL5_1111 | UTA,
- CS_0000 | GPL4_1111 | GPL5_1111,
- CS_0011 | GPL4_1111 | GPL5_1111 | UTA | LAST,
-
- /* WBS */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* UPT */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* EXC */
- CS_0001 | LAST,
- _NOT_USED_,
-
- /* REG */
- CS_1110 ,
- CS_0001 | LAST,
-};
-#endif
-
-/* 0xC8 = 0b11001000 , CAS3, >> 2 = 0b00 11 0 010 */
-/* 0x88 = 0b10001000 , CAS2, >> 2 = 0b00 10 0 010 */
-#define MAR_SDRAM_INIT ((CAS_LATENCY << 6) | 0x00000008LU)
-
-/* 8 */
-#define CFG_MAMR ((CFG_MAMR_PTA << MAMR_PTA_SHIFT) | MAMR_PTAE | \
- MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 | \
- MAMR_RLFA_1X | MAMR_WLFA_1X | MAMR_TLFA_4X)
-
-void check_ram(unsigned int addr, unsigned int size)
-{
- unsigned int i, j, v, vv;
- volatile unsigned int *p;
- unsigned int pv;
-
- p = (unsigned int *)addr;
- pv = (unsigned int)p;
- for (i = 0; i < size / sizeof(unsigned int); i++, pv += sizeof(unsigned int))
- *p++ = pv;
-
- p = (unsigned int *)addr;
- for (i = 0; i < size / sizeof(unsigned int); i++) {
- v = (unsigned int)p;
- vv = *p;
- if (vv != v) {
- printf("%p: read %08x instead of %08x\n", p, vv, v);
- hang();
- }
- p++;
- }
-
- for (j = 0; j < 5; j++) {
- switch (j) {
- case 0: v = 0x00000000; break;
- case 1: v = 0xffffffff; break;
- case 2: v = 0x55555555; break;
- case 3: v = 0xaaaaaaaa; break;
- default:v = 0xdeadbeef; break;
- }
- p = (unsigned int *)addr;
- for (i = 0; i < size / sizeof(unsigned int); i++) {
- *p = v;
- vv = *p;
- if (vv != v) {
- printf("%p: read %08x instead of %08x\n", p, vv, v);
- hang();
- }
- *p = ~v;
- p++;
- }
- }
-}
-
-long int initdram(int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size;
-
- upmconfig(UPMB, (uint *) sdram_table, sizeof(sdram_table) / sizeof(sdram_table[0]));
-
- /*
- * Preliminary prescaler for refresh
- */
- memctl->memc_mptpr = MPTPR_PTP_DIV8;
-
- memctl->memc_mar = MAR_SDRAM_INIT; /* 32-bit address to be output on the address bus if AMX = 0b11 */
-
- /*
- * Map controller bank 3 to the SDRAM bank at preliminary address.
- */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
-
- memctl->memc_mbmr = CFG_MAMR & ~MAMR_PTAE; /* no refresh yet */
-
- udelay(200);
-
- /* perform SDRAM initialisation sequence */
- memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_B | MCR_MB_CS3 | MCR_MLCF(1) | MCR_MAD(0x3C); /* precharge all */
- udelay(1);
-
- memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_B | MCR_MB_CS3 | MCR_MLCF(2) | MCR_MAD(0x30); /* refresh 2 times(0) */
- udelay(1);
-
- memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_B | MCR_MB_CS3 | MCR_MLCF(1) | MCR_MAD(0x3E); /* exception program (write mar)*/
- udelay(1);
-
- memctl->memc_mbmr |= MAMR_PTAE; /* enable refresh */
-
- udelay(10000);
-
- {
- u32 d1, d2;
-
- d1 = 0xAA55AA55;
- *(volatile u32 *)0 = d1;
- d2 = *(volatile u32 *)0;
- if (d1 != d2) {
- printf("DRAM fails: wrote 0x%08x read 0x%08x\n", d1, d2);
- hang();
- }
-
- d1 = 0x55AA55AA;
- *(volatile u32 *)0 = d1;
- d2 = *(volatile u32 *)0;
- if (d1 != d2) {
- printf("DRAM fails: wrote 0x%08x read 0x%08x\n", d1, d2);
- hang();
- }
- }
-
- size = get_ram_size((long *)0, SDRAM_MAX_SIZE);
-
- if (size == 0) {
- printf("SIZE is zero: LOOP on 0\n");
- for (;;) {
- *(volatile u32 *)0 = 0;
- (void)*(volatile u32 *)0;
- }
- }
-
- return size;
-}
-
-/* ------------------------------------------------------------------------- */
-
-void reset_phys(void)
-{
- int phyno;
- unsigned short v;
-
- udelay(10000);
- /* reset the damn phys */
- mii_init();
-
- for (phyno = 0; phyno < 32; ++phyno) {
- fec8xx_miiphy_read(NULL, phyno, PHY_PHYIDR1, &v);
- if (v == 0xFFFF)
- continue;
- fec8xx_miiphy_write(NULL, phyno, PHY_BMCR, PHY_BMCR_POWD);
- udelay(10000);
- fec8xx_miiphy_write(NULL, phyno, PHY_BMCR,
- PHY_BMCR_RESET | PHY_BMCR_AUTON);
- udelay(10000);
- }
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* GP = general purpose, SP = special purpose (on chip peripheral) */
-
-/* bits that can have a special purpose or can be configured as inputs/outputs */
-#define PA_GP_INMASK 0
-#define PA_GP_OUTMASK (_BW(3) | _BW(7) | _BW(10) | _BW(14) | _BW(15))
-#define PA_SP_MASK 0
-#define PA_ODR_VAL 0
-#define PA_GP_OUTVAL (_BW(3) | _BW(14) | _BW(15))
-#define PA_SP_DIRVAL 0
-
-#define PB_GP_INMASK _B(28)
-#define PB_GP_OUTMASK (_B(19) | _B(23) | _B(26) | _B(27) | _B(29) | _B(30))
-#define PB_SP_MASK (_BR(22, 25))
-#define PB_ODR_VAL 0
-#define PB_GP_OUTVAL (_B(26) | _B(27) | _B(29) | _B(30))
-#define PB_SP_DIRVAL 0
-
-#if CONFIG_NETPHONE_VERSION == 1
-#define PC_GP_INMASK _BW(12)
-#define PC_GP_OUTMASK (_BW(10) | _BW(11) | _BW(13) | _BW(15))
-#elif CONFIG_NETPHONE_VERSION == 2
-#define PC_GP_INMASK (_BW(13) | _BW(15))
-#define PC_GP_OUTMASK (_BW(10) | _BW(11) | _BW(12))
-#endif
-#define PC_SP_MASK 0
-#define PC_SOVAL 0
-#define PC_INTVAL 0
-#define PC_GP_OUTVAL (_BW(10) | _BW(11))
-#define PC_SP_DIRVAL 0
-
-#if CONFIG_NETPHONE_VERSION == 1
-#define PE_GP_INMASK _B(31)
-#define PE_GP_OUTMASK (_B(17) | _B(18) |_B(20) | _B(24) | _B(27) | _B(28) | _B(29) | _B(30))
-#define PE_GP_OUTVAL (_B(20) | _B(24) | _B(27) | _B(28))
-#elif CONFIG_NETPHONE_VERSION == 2
-#define PE_GP_INMASK _BR(28, 31)
-#define PE_GP_OUTMASK (_B(17) | _B(18) |_B(20) | _B(24) | _B(27))
-#define PE_GP_OUTVAL (_B(20) | _B(24) | _B(27))
-#endif
-#define PE_SP_MASK 0
-#define PE_ODR_VAL 0
-#define PE_SP_DIRVAL 0
-
-int board_early_init_f(void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile iop8xx_t *ioport = &immap->im_ioport;
- volatile cpm8xx_t *cpm = &immap->im_cpm;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- /* NAND chip select */
-#if CONFIG_NETPHONE_VERSION == 1
- memctl->memc_or1 = ((0xFFFFFFFFLU & ~(NAND_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_SCY_8_CLK | OR_EHTR | OR_TRLX);
- memctl->memc_br1 = ((NAND_BASE & BR_BA_MSK) | BR_PS_8 | BR_V);
-#elif CONFIG_NETPHONE_VERSION == 2
- upmconfig(UPMA, (uint *) nandcs_table, sizeof(nandcs_table) / sizeof(nandcs_table[0]));
- memctl->memc_or1 = ((0xFFFFFFFFLU & ~(NAND_SIZE - 1)) | OR_BI | OR_G5LS);
- memctl->memc_br1 = ((NAND_BASE & BR_BA_MSK) | BR_PS_8 | BR_V | BR_MS_UPMA);
- memctl->memc_mamr = 0; /* all clear */
-#endif
-
- /* DSP chip select */
- memctl->memc_or2 = ((0xFFFFFFFFLU & ~(DSP_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_ACS_DIV2 | OR_SETA | OR_TRLX);
- memctl->memc_br2 = ((DSP_BASE & BR_BA_MSK) | BR_PS_16 | BR_V);
-
-#if CONFIG_NETPHONE_VERSION == 1
- memctl->memc_br4 &= ~BR_V;
-#endif
- memctl->memc_br5 &= ~BR_V;
- memctl->memc_br6 &= ~BR_V;
- memctl->memc_br7 &= ~BR_V;
-
- ioport->iop_padat = PA_GP_OUTVAL;
- ioport->iop_paodr = PA_ODR_VAL;
- ioport->iop_padir = PA_GP_OUTMASK | PA_SP_DIRVAL;
- ioport->iop_papar = PA_SP_MASK;
-
- cpm->cp_pbdat = PB_GP_OUTVAL;
- cpm->cp_pbodr = PB_ODR_VAL;
- cpm->cp_pbdir = PB_GP_OUTMASK | PB_SP_DIRVAL;
- cpm->cp_pbpar = PB_SP_MASK;
-
- ioport->iop_pcdat = PC_GP_OUTVAL;
- ioport->iop_pcdir = PC_GP_OUTMASK | PC_SP_DIRVAL;
- ioport->iop_pcso = PC_SOVAL;
- ioport->iop_pcint = PC_INTVAL;
- ioport->iop_pcpar = PC_SP_MASK;
-
- cpm->cp_pedat = PE_GP_OUTVAL;
- cpm->cp_peodr = PE_ODR_VAL;
- cpm->cp_pedir = PE_GP_OUTMASK | PE_SP_DIRVAL;
- cpm->cp_pepar = PE_SP_MASK;
-
- return 0;
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-
-#include <linux/mtd/nand_legacy.h>
-
-extern ulong nand_probe(ulong physadr);
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- unsigned long totlen;
-
- totlen = nand_probe(CFG_NAND_BASE);
- printf ("%4lu MB\n", totlen >> 20);
-}
-#endif
-
-#ifdef CONFIG_HW_WATCHDOG
-
-void hw_watchdog_reset(void)
-{
- /* XXX add here the really funky stuff */
-}
-
-#endif
-
-#ifdef CONFIG_SHOW_ACTIVITY
-
-static volatile int left_to_poll = PHONE_CONSOLE_POLL_HZ; /* poll */
-
-/* called from timer interrupt every 1/CFG_HZ sec */
-void board_show_activity(ulong timestamp)
-{
- if (left_to_poll > -PHONE_CONSOLE_POLL_HZ)
- --left_to_poll;
-}
-
-extern void phone_console_do_poll(void);
-
-static void do_poll(void)
-{
- unsigned int base;
-
- while (left_to_poll <= 0) {
- phone_console_do_poll();
- base = left_to_poll + PHONE_CONSOLE_POLL_HZ;
- do {
- left_to_poll = base;
- } while (base != left_to_poll);
- }
-}
-
-/* called when looping */
-void show_activity(int arg)
-{
- do_poll();
-}
-
-#endif
-
-#if defined(CFG_CONSOLE_IS_IN_ENV) && defined(CFG_CONSOLE_OVERWRITE_ROUTINE)
-int overwrite_console(void)
-{
- /* printf("overwrite_console called\n"); */
- return 0;
-}
-#endif
-
-extern int drv_phone_init(void);
-extern int drv_phone_use_me(void);
-extern int drv_phone_is_idle(void);
-
-int misc_init_r(void)
-{
- return drv_phone_init();
-}
-
-int last_stage_init(void)
-{
- int i;
-
-#if CONFIG_NETPHONE_VERSION == 2
- /* assert peripheral reset */
- ((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat &= ~_BW(12);
- for (i = 0; i < 10; i++)
- udelay(1000);
- ((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat |= _BW(12);
-#endif
- reset_phys();
-
- /* check in order to enable the local console */
- left_to_poll = PHONE_CONSOLE_POLL_HZ;
- i = CFG_HZ * 2;
- while (i > 0) {
-
- if (tstc()) {
- getc();
- break;
- }
-
- do_poll();
-
- if (drv_phone_use_me()) {
- status_led_set(0, STATUS_LED_ON);
- while (!drv_phone_is_idle()) {
- do_poll();
- udelay(1000000 / CFG_HZ);
- }
-
- console_assign(stdin, "phone");
- console_assign(stdout, "phone");
- console_assign(stderr, "phone");
- setenv("bootdelay", "-1");
- break;
- }
-
- udelay(1000000 / CFG_HZ);
- i--;
- left_to_poll--;
- }
- left_to_poll = PHONE_CONSOLE_POLL_HZ;
-
- return 0;
-}
diff --git a/board/netphone/phone_console.c b/board/netphone/phone_console.c
deleted file mode 100644
index 408ada0169..0000000000
--- a/board/netphone/phone_console.c
+++ /dev/null
@@ -1,1144 +0,0 @@
-/*
- * (C) Copyright 2004 Intracom S.A.
- * Pantelis Antoniou <panto@intracom.gr>
- *
- * 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
- */
-
-/*
- * phone_console.c
- *
- * A phone based console
- *
- * Virtual display of 80x24 characters.
- * The actual display is much smaller and panned to show the virtual one.
- * Input is made by a numeric keypad utilizing the input method of
- * mobile phones. Sorry no T9 lexicons...
- *
- */
-
-#include <common.h>
-
-#include <version.h>
-#include <linux/types.h>
-#include <devices.h>
-
-#include <sed156x.h>
-
-/*************************************************************************************************/
-
-#define ROWS 24
-#define COLS 80
-
-#define REFRESH_HZ (CFG_HZ/50) /* refresh every 20ms */
-#define BLINK_HZ (CFG_HZ/2) /* cursor blink every 500ms */
-
-/*************************************************************************************************/
-
-#define DISPLAY_BACKLIT_PORT ((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat
-#define DISPLAY_BACKLIT_MASK 0x0010
-
-/*************************************************************************************************/
-
-#define KP_STABLE_HZ (CFG_HZ/100) /* stable for 10ms */
-#define KP_REPEAT_DELAY_HZ (CFG_HZ/4) /* delay before repeat 250ms */
-#define KP_REPEAT_HZ (CFG_HZ/20) /* repeat every 50ms */
-#define KP_FORCE_DELAY_HZ (CFG_HZ/2) /* key was force pressed */
-#define KP_IDLE_DELAY_HZ (CFG_HZ/2) /* key was released and idle */
-
-#if CONFIG_NETPHONE_VERSION == 1
-#define KP_SPI_RXD_PORT (((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat)
-#define KP_SPI_RXD_MASK 0x0008
-
-#define KP_SPI_TXD_PORT (((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat)
-#define KP_SPI_TXD_MASK 0x0004
-
-#define KP_SPI_CLK_PORT (((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat)
-#define KP_SPI_CLK_MASK 0x0001
-#elif CONFIG_NETPHONE_VERSION == 2
-#define KP_SPI_RXD_PORT (((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbdat)
-#define KP_SPI_RXD_MASK 0x00000008
-
-#define KP_SPI_TXD_PORT (((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbdat)
-#define KP_SPI_TXD_MASK 0x00000004
-
-#define KP_SPI_CLK_PORT (((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbdat)
-#define KP_SPI_CLK_MASK 0x00000002
-#endif
-
-#define KP_CS_PORT (((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pedat)
-#define KP_CS_MASK 0x00000010
-
-#define KP_SPI_RXD() (KP_SPI_RXD_PORT & KP_SPI_RXD_MASK)
-
-#define KP_SPI_TXD(x) \
- do { \
- if (x) \
- KP_SPI_TXD_PORT |= KP_SPI_TXD_MASK; \
- else \
- KP_SPI_TXD_PORT &= ~KP_SPI_TXD_MASK; \
- } while(0)
-
-#define KP_SPI_CLK(x) \
- do { \
- if (x) \
- KP_SPI_CLK_PORT |= KP_SPI_CLK_MASK; \
- else \
- KP_SPI_CLK_PORT &= ~KP_SPI_CLK_MASK; \
- } while(0)
-
-#define KP_SPI_CLK_TOGGLE() (KP_SPI_CLK_PORT ^= KP_SPI_CLK_MASK)
-
-#define KP_SPI_BIT_DELAY() /* no delay */
-
-#define KP_CS(x) \
- do { \
- if (x) \
- KP_CS_PORT |= KP_CS_MASK; \
- else \
- KP_CS_PORT &= ~KP_CS_MASK; \
- } while(0)
-
-#define KP_ROWS 7
-#define KP_COLS 4
-
-#define KP_ROWS_MASK ((1 << KP_ROWS) - 1)
-#define KP_COLS_MASK ((1 << KP_COLS) - 1)
-
-#define SCAN 0
-#define SCAN_FILTER 1
-#define SCAN_COL 2
-#define SCAN_COL_FILTER 3
-#define PRESSED 4
-
-#define KP_F1 0 /* leftmost dot (tab) */
-#define KP_F2 1 /* middle left dot */
-#define KP_F3 2 /* up */
-#define KP_F4 3 /* middle right dot */
-#define KP_F5 4 /* rightmost dot */
-#define KP_F6 5 /* C */
-#define KP_F7 6 /* left */
-#define KP_F8 7 /* down */
-#define KP_F9 8 /* right */
-#define KP_F10 9 /* enter */
-#define KP_F11 10 /* R */
-#define KP_F12 11 /* save */
-#define KP_F13 12 /* redial */
-#define KP_F14 13 /* speaker */
-#define KP_F15 14 /* unused */
-#define KP_F16 15 /* unused */
-
-#define KP_RELEASE -1 /* key depressed */
-#define KP_FORCE -2 /* key was pressed for more than force hz */
-#define KP_IDLE -3 /* key was released and idle */
-
-#define KP_1 '1'
-#define KP_2 '2'
-#define KP_3 '3'
-#define KP_4 '4'
-#define KP_5 '5'
-#define KP_6 '6'
-#define KP_7 '7'
-#define KP_8 '8'
-#define KP_9 '9'
-#define KP_0 '0'
-#define KP_STAR '*'
-#define KP_HASH '#'
-
-/*************************************************************************************************/
-
-static int curs_disabled;
-static int curs_col, curs_row;
-static int disp_col, disp_row;
-
-static int width, height;
-
-/* the simulated vty buffer */
-static char vty_buf[ROWS * COLS];
-static char last_visible_buf[ROWS * COLS]; /* worst case */
-static char *last_visible_curs_ptr;
-static int last_visible_curs_rev;
-static int blinked_state;
-static int last_input_mode;
-static int refresh_time;
-static int blink_time;
-static char last_fast_punct;
-
-/*************************************************************************************************/
-
-#define IM_SMALL 0
-#define IM_CAPITAL 1
-#define IM_NUMBER 2
-
-static int input_mode;
-static char fast_punct;
-static int tab_indicator;
-static const char *fast_punct_list = ",.:;*";
-
-static const char *input_mode_txt[] = { "abc", "ABC", "123" };
-
-static const char *punct = ".,!;?'\"-()@/:_+&%*=<>$[]{}\\~^#|";
-static const char *whspace = " 0\n";
-/* per mode character select (for 2-9) */
-static const char *digits_sel[2][8] = {
- { /* small */
- "abc2", /* 2 */
- "def3", /* 3 */
- "ghi4", /* 4 */
- "jkl5", /* 5 */
- "mno6", /* 6 */
- "pqrs7", /* 7 */
- "tuv8", /* 8 */
- "wxyz9", /* 9 */
- }, { /* capital */
- "ABC2", /* 2 */
- "DEF3", /* 3 */
- "GHI4", /* 4 */
- "JKL5", /* 5 */
- "MNO6", /* 6 */
- "PQRS7", /* 7 */
- "TUV8", /* 8 */
- "WXYZ9", /* 9 */
- }
-};
-
-/*****************************************************************************/
-
-static void update(void);
-static void ensure_visible(int col, int row, int dx, int dy);
-
-static void console_init(void)
-{
- curs_disabled = 0;
- curs_col = 0;
- curs_row = 0;
-
- disp_col = 0;
- disp_row = 0;
-
- input_mode = IM_SMALL;
- fast_punct = ',';
- last_fast_punct = '\0';
- refresh_time = REFRESH_HZ;
- blink_time = BLINK_HZ;
-
- memset(vty_buf, ' ', sizeof(vty_buf));
-
- memset(last_visible_buf, ' ', sizeof(last_visible_buf));
- last_visible_curs_ptr = NULL;
- last_input_mode = -1;
- last_visible_curs_rev = 0;
-
- blinked_state = 0;
-
- sed156x_init();
- width = sed156x_text_width;
- height = sed156x_text_height - 1;
-
- tab_indicator = 0;
-}
-
-/*****************************************************************************/
-
-void phone_putc(const char c);
-
-/*****************************************************************************/
-
-static int queued_char = -1;
-static int enabled = 0;
-
-/*****************************************************************************/
-
-/* flush buffers */
-int phone_start(void)
-{
- console_init();
-
- update();
- sed156x_sync();
-
- enabled = 1;
- queued_char = 'U' - '@';
-
- /* backlit on */
- DISPLAY_BACKLIT_PORT &= ~DISPLAY_BACKLIT_MASK;
-
- return 0;
-}
-
-int phone_stop(void)
-{
- enabled = 0;
-
- sed156x_clear();
- sed156x_sync();
-
- /* backlit off */
- DISPLAY_BACKLIT_PORT |= DISPLAY_BACKLIT_MASK;
-
- return 0;
-}
-
-void phone_puts(const char *s)
-{
- int count = strlen(s);
-
- while (count--)
- phone_putc(*s++);
-}
-
-int phone_tstc(void)
-{
- return queued_char >= 0 ? 1 : 0;
-}
-
-int phone_getc(void)
-{
- int r;
-
- if (queued_char < 0)
- return -1;
-
- r = queued_char;
- queued_char = -1;
-
- return r;
-}
-
-/*****************************************************************************/
-
-int drv_phone_init(void)
-{
- device_t console_dev;
-
- console_init();
-
- memset(&console_dev, 0, sizeof(console_dev));
- strcpy(console_dev.name, "phone");
- console_dev.ext = DEV_EXT_VIDEO; /* Video extensions */
- console_dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;
- console_dev.start = phone_start;
- console_dev.stop = phone_stop;
- console_dev.putc = phone_putc; /* 'putc' function */
- console_dev.puts = phone_puts; /* 'puts' function */
- console_dev.tstc = phone_tstc; /* 'tstc' function */
- console_dev.getc = phone_getc; /* 'getc' function */
-
- if (device_register(&console_dev) == 0)
- return 1;
-
- return 0;
-}
-
-static int use_me;
-
-int drv_phone_use_me(void)
-{
- return use_me;
-}
-
-static void kp_do_poll(void);
-
-void phone_console_do_poll(void)
-{
- int i, x, y;
-
- kp_do_poll();
-
- if (enabled) {
- /* do the blink */
- blink_time -= PHONE_CONSOLE_POLL_HZ;
- if (blink_time <= 0) {
- blink_time += BLINK_HZ;
- if (last_visible_curs_ptr) {
- i = last_visible_curs_ptr - last_visible_buf;
- x = i % width; y = i / width;
- sed156x_reverse_at(x, y, 1);
- last_visible_curs_rev ^= 1;
- }
- }
-
- /* do the refresh */
- refresh_time -= PHONE_CONSOLE_POLL_HZ;
- if (refresh_time <= 0) {
- refresh_time += REFRESH_HZ;
- sed156x_sync();
- }
- }
-
-}
-
-static int last_scancode = -1;
-static int forced_scancode = 0;
-static int input_state = -1;
-static int input_scancode = -1;
-static int input_selected_char = -1;
-static char input_covered_char;
-
-static void putchar_at_cursor(char c)
-{
- vty_buf[curs_row * COLS + curs_col] = c;
- ensure_visible(curs_col, curs_row, 1, 1);
-}
-
-static char getchar_at_cursor(void)
-{
- return vty_buf[curs_row * COLS + curs_col];
-}
-
-static void queue_input_char(char c)
-{
- if (c <= 0)
- return;
-
- queued_char = c;
-}
-
-static void terminate_input(void)
-{
- if (input_state < 0)
- return;
-
- if (input_selected_char >= 0)
- queue_input_char(input_selected_char);
-
- input_state = -1;
- input_selected_char = -1;
- putchar_at_cursor(input_covered_char);
-
- curs_disabled = 0;
- blink_time = BLINK_HZ;
- update();
-}
-
-static void handle_enabled_scancode(int scancode)
-{
- char c;
- int new_disp_col, new_disp_row;
- const char *sel;
-
-
- switch (scancode) {
-
- /* key was released */
- case KP_RELEASE:
- forced_scancode = 0;
- break;
-
- /* key was forced */
- case KP_FORCE:
-
- switch (last_scancode) {
- case '#':
- if (input_mode == IM_NUMBER) {
- input_mode = IM_CAPITAL;
- /* queue backspace to erase # */
- queue_input_char('\b');
- } else {
- input_mode = IM_NUMBER;
- fast_punct = '*';
- }
- update();
- break;
-
- case '0': case '1':
- case '2': case '3': case '4': case '5':
- case '6': case '7': case '8': case '9':
-
- if (input_state < 0)
- break;
-
- input_selected_char = last_scancode;
- putchar_at_cursor((char)input_selected_char);
- terminate_input();
-
- break;
-
- default:
- break;
- }
-
- break;
-
- /* release and idle */
- case KP_IDLE:
- input_scancode = -1;
- if (input_state < 0)
- break;
- terminate_input();
- break;
-
- /* change input mode */
- case '#':
- if (last_scancode == '#') /* no repeat */
- break;
-
- if (input_mode == IM_NUMBER) {
- input_scancode = scancode;
- input_state = 0;
- input_selected_char = scancode;
- input_covered_char = getchar_at_cursor();
- putchar_at_cursor((char)input_selected_char);
- terminate_input();
- break;
- }
-
- if (input_mode == IM_SMALL)
- input_mode = IM_CAPITAL;
- else
- input_mode = IM_SMALL;
-
- update();
- break;
-
- case '*':
- /* no repeat */
- if (last_scancode == scancode)
- break;
-
- if (input_state >= 0)
- terminate_input();
-
- input_scancode = fast_punct;
- input_state = 0;
- input_selected_char = input_scancode;
- input_covered_char = getchar_at_cursor();
- putchar_at_cursor((char)input_selected_char);
- terminate_input();
-
- break;
-
- case '0': case '1':
- case '2': case '3': case '4': case '5':
- case '6': case '7': case '8': case '9':
-
- /* no repeat */
- if (last_scancode == scancode)
- break;
-
- if (input_mode == IM_NUMBER) {
- input_scancode = scancode;
- input_state = 0;
- input_selected_char = scancode;
- input_covered_char = getchar_at_cursor();
- putchar_at_cursor((char)input_selected_char);
- terminate_input();
- break;
- }
-
- if (input_state >= 0 && input_scancode != scancode)
- terminate_input();
-
- if (input_state < 0) {
- curs_disabled = 1;
- input_scancode = scancode;
- input_state = 0;
- input_covered_char = getchar_at_cursor();
- } else
- input_state++;
-
- if (scancode == '0')
- sel = whspace;
- else if (scancode == '1')
- sel = punct;
- else
- sel = digits_sel[input_mode][scancode - '2'];
- c = *(sel + input_state);
- if (c == '\0') {
- input_state = 0;
- c = *sel;
- }
-
- input_selected_char = (int)c;
- putchar_at_cursor((char)input_selected_char);
- update();
-
- break;
-
- /* move visible display */
- case KP_F3: case KP_F8: case KP_F7: case KP_F9:
-
- new_disp_col = disp_col;
- new_disp_row = disp_row;
-
- switch (scancode) {
- /* up */
- case KP_F3:
- if (new_disp_row <= 0)
- break;
- new_disp_row--;
- break;
-
- /* down */
- case KP_F8:
- if (new_disp_row >= ROWS - height)
- break;
- new_disp_row++;
- break;
-
- /* left */
- case KP_F7:
- if (new_disp_col <= 0)
- break;
- new_disp_col--;
- break;
-
- /* right */
- case KP_F9:
- if (new_disp_col >= COLS - width)
- break;
- new_disp_col++;
- break;
- }
-
- /* no change? */
- if (disp_col == new_disp_col && disp_row == new_disp_row)
- break;
-
- disp_col = new_disp_col;
- disp_row = new_disp_row;
- update();
-
- break;
-
- case KP_F6: /* backspace */
- /* inputing something; no backspace sent, just cancel input */
- if (input_state >= 0) {
- input_selected_char = -1; /* cancel */
- terminate_input();
- break;
- }
- queue_input_char('\b');
- break;
-
- case KP_F10: /* enter */
- /* inputing something; first cancel input */
- if (input_state >= 0)
- terminate_input();
- queue_input_char('\r');
- break;
-
- case KP_F11: /* R -> Ctrl-C (abort) */
- if (input_state >= 0)
- terminate_input();
- queue_input_char('C' - 'Q'); /* ctrl-c */
- break;
-
- case KP_F5: /* F% -> Ctrl-U (clear line) */
- if (input_state >= 0)
- terminate_input();
- queue_input_char('U' - 'Q'); /* ctrl-c */
- break;
-
-
- case KP_F1: /* tab */
- /* inputing something; first cancel input */
- if (input_state >= 0)
- terminate_input();
- queue_input_char('\t');
- break;
-
- case KP_F2: /* change fast punct */
- sel = strchr(fast_punct_list, fast_punct);
- if (sel == NULL)
- sel = &fast_punct_list[0];
- sel++;
- if (*sel == '\0')
- sel = &fast_punct_list[0];
- fast_punct = *sel;
- update();
- break;
-
-
- }
-
- if (scancode != KP_FORCE && scancode != KP_IDLE) /* don't record forced or idle scancode */
- last_scancode = scancode;
-}
-
-static void scancode_action(int scancode)
-{
-#if 0
- if (scancode == KP_RELEASE)
- printf(" RELEASE\n");
- else if (scancode == KP_FORCE)
- printf(" FORCE\n");
- else if (scancode == KP_IDLE)
- printf(" IDLE\n");
- else if (scancode < 32)
- printf(" F%d", scancode + 1);
- else
- printf(" %c", (char)scancode);
- printf("\n");
-#endif
-
- if (enabled) {
- handle_enabled_scancode(scancode);
- return;
- }
-
- if (scancode == KP_FORCE && last_scancode == '*')
- use_me = 1;
-
- last_scancode = scancode;
-}
-
-/**************************************************************************************/
-
-/* update the display; make sure to update only the differences */
-static void update(void)
-{
- int i;
- char *s, *e, *t, *r, *b, *cp;
-
- if (input_mode != last_input_mode)
- sed156x_output_at(sed156x_text_width - 3, sed156x_text_height - 1, input_mode_txt[input_mode], 3);
-
- if (tab_indicator == 0) {
- sed156x_output_at(0, sed156x_text_height - 1, "\\t", 2);
- tab_indicator = 1;
- }
-
- if (fast_punct != last_fast_punct)
- sed156x_output_at(4, sed156x_text_height - 1, &fast_punct, 1);
-
- if (curs_disabled ||
- curs_col < disp_col || curs_col >= (disp_col + width) ||
- curs_row < disp_row || curs_row >= (disp_row + height)) {
- cp = NULL;
- } else
- cp = last_visible_buf + (curs_row - disp_row) * width + (curs_col - disp_col);
-
-
- /* printf("(%d,%d) (%d,%d) %s\n", curs_col, curs_row, disp_col, disp_row, cp ? "YES" : "no"); */
-
- /* clear previous cursor */
- if (last_visible_curs_ptr && last_visible_curs_rev == 0) {
- i = last_visible_curs_ptr - last_visible_buf;
- sed156x_reverse_at(i % width, i / width, 1);
- }
-
- b = vty_buf + disp_row * COLS + disp_col;
- t = last_visible_buf;
- for (i = 0; i < height; i++) {
- s = b;
- e = b + width;
- /* update only the differences */
- do {
- while (s < e && *s == *t) {
- s++;
- t++;
- }
- if (s == e) /* no more */
- break;
-
- /* find run */
- r = s;
- while (s < e && *s != *t)
- *t++ = *s++;
-
- /* and update */
- sed156x_output_at(r - b, i, r, s - r);
-
- } while (s < e);
-
- b += COLS;
- }
-
- /* set cursor */
- if (cp) {
- last_visible_curs_ptr = cp;
- i = last_visible_curs_ptr - last_visible_buf;
- sed156x_reverse_at(i % width, i / width, 1);
- last_visible_curs_rev = 0;
- } else {
- last_visible_curs_ptr = NULL;
- }
-
- last_input_mode = input_mode;
- last_fast_punct = fast_punct;
-}
-
-/* ensure visibility; the trick is to minimize the screen movement */
-static void ensure_visible(int col, int row, int dx, int dy)
-{
- int x1, y1, x2, y2, a1, b1, a2, b2;
-
- /* clamp visible region */
- if (col < 0) {
- dx -= col;
- col = 0;
- if (dx <= 0)
- dx = 1;
- }
-
- if (row < 0) {
- dy -= row;
- row = 0;
- if (dy <= 0)
- dy = 1;
- }
-
- if (col + dx > COLS)
- dx = COLS - col;
-
- if (row + dy > ROWS)
- dy = ROWS - row;
-
-
- /* move to easier to use vars */
- x1 = disp_col; y1 = disp_row;
- x2 = x1 + width; y2 = y1 + height;
- a1 = col; b1 = row;
- a2 = a1 + dx; b2 = b1 + dy;
-
- /* printf("(%d,%d) - (%d,%d) : (%d, %d) - (%d, %d)\n", x1, y1, x2, y2, a1, b1, a2, b2); */
-
- if (a2 > x2) {
- /* move to the right */
- x2 = a2;
- x1 = x2 - width;
- if (x1 < 0) {
- x1 = 0;
- x2 = width;
- }
- } else if (a1 < x1) {
- /* move to the left */
- x1 = a1;
- x2 = x1 + width;
- if (x2 > COLS) {
- x2 = COLS;
- x1 = x2 - width;
- }
- }
-
- if (b2 > y2) {
- /* move down */
- y2 = b2;
- y1 = y2 - height;
- if (y1 < 0) {
- y1 = 0;
- y2 = height;
- }
- } else if (b1 < y1) {
- /* move up */
- y1 = b1;
- y2 = y1 + width;
- if (y2 > ROWS) {
- y2 = ROWS;
- y1 = y2 - height;
- }
- }
-
- /* printf("(%d,%d) - (%d,%d) : (%d, %d) - (%d, %d)\n", x1, y1, x2, y2, a1, b1, a2, b2); */
-
- /* no movement? */
- if (disp_col == x1 && disp_row == y1)
- return;
-
- disp_col = x1;
- disp_row = y1;
-}
-
-/**************************************************************************************/
-
-static void newline(void)
-{
- curs_col = 0;
- if (curs_row + 1 < ROWS)
- curs_row++;
- else {
- memmove(vty_buf, vty_buf + COLS, COLS * (ROWS - 1));
- memset(vty_buf + (ROWS - 1) * COLS, ' ', COLS);
- }
-}
-
-void phone_putc(const char c)
-{
- int i;
-
- if (input_mode != -1) {
- input_selected_char = -1;
- terminate_input();
- }
-
- curs_disabled = 1;
- update();
-
- blink_time = BLINK_HZ;
-
- switch (c) {
- case '\a': /* ignore bell */
- case '\r': /* ignore carriage return */
- break;
-
- case '\n': /* next line */
- newline();
- ensure_visible(curs_col, curs_row, 1, 1);
- break;
-
- case 9: /* tab 8 */
- /* move to tab */
- i = curs_col;
- i |= 0x0008;
- i &= ~0x0007;
-
- if (i < COLS)
- curs_col = i;
- else
- newline();
-
- ensure_visible(curs_col, curs_row, 1, 1);
- break;
-
- case 8: /* backspace */
- if (curs_col <= 0)
- break;
- curs_col--;
-
- /* make sure that we see a couple of characters before */
- if (curs_col > 4)
- ensure_visible(curs_col - 4, curs_row, 4, 1);
- else
- ensure_visible(curs_col, curs_row, 1, 1);
-
- break;
-
- default: /* draw the char */
- putchar_at_cursor(c);
-
- /*
- * check for newline
- */
- if (curs_col + 1 < COLS)
- curs_col++;
- else
- newline();
-
- ensure_visible(curs_col, curs_row, 1, 1);
-
- break;
- }
-
- curs_disabled = 0;
- blink_time = BLINK_HZ;
- update();
-}
-
-/**************************************************************************************/
-
-static inline unsigned int kp_transfer(unsigned int val)
-{
- unsigned int rx;
- int b;
-
- rx = 0; b = 8;
- while (--b >= 0) {
- KP_SPI_TXD(val & 0x80);
- val <<= 1;
- KP_SPI_CLK_TOGGLE();
- KP_SPI_BIT_DELAY();
- rx <<= 1;
- if (KP_SPI_RXD())
- rx |= 1;
- KP_SPI_CLK_TOGGLE();
- KP_SPI_BIT_DELAY();
- }
-
- return rx;
-}
-
-unsigned int kp_data_transfer(unsigned int val)
-{
- KP_SPI_CLK(1);
- KP_CS(0);
- val = kp_transfer(val);
- KP_CS(1);
-
- return val;
-}
-
-unsigned int kp_get_col_mask(unsigned int row_mask)
-{
- unsigned int val, col_mask;
-
- val = 0x80 | (row_mask & 0x7F);
- (void)kp_data_transfer(val);
-#if CONFIG_NETPHONE_VERSION == 1
- col_mask = kp_data_transfer(val) & 0x0F;
-#elif CONFIG_NETPHONE_VERSION == 2
- col_mask = ((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pedat & 0x0f;
- /* XXX FUCK FUCK FUCK FUCK FUCK!!!! */
- col_mask = ((col_mask & 0x08) >> 3) | /* BKBR1 */
- ((col_mask & 0x04) << 1) | /* BKBR2 */
- (col_mask & 0x02) | /* BKBR3 */
- ((col_mask & 0x01) << 2); /* BKBR4 */
-
-#endif
- /* printf("col_mask(row_mask = 0x%x) -> col_mask = 0x%x\n", row_mask, col_mask); */
-
- return col_mask;
-}
-
-/**************************************************************************************/
-
-static const int kp_scancodes[KP_ROWS * KP_COLS] = {
- KP_F1, KP_F3, KP_F4, KP_F2,
- KP_F6, KP_F8, KP_F9, KP_F7,
- KP_1, KP_3, KP_F11, KP_2,
- KP_4, KP_6, KP_F12, KP_5,
- KP_7, KP_9, KP_F13, KP_8,
- KP_STAR, KP_HASH, KP_F14, KP_0,
- KP_F5, KP_F15, KP_F16, KP_F10,
-};
-
-static const int kp_repeats[KP_ROWS * KP_COLS] = {
- 0, 1, 0, 0,
- 0, 1, 1, 1,
- 1, 1, 0, 1,
- 1, 1, 0, 1,
- 1, 1, 0, 1,
- 1, 1, 0, 1,
- 0, 0, 0, 1,
-};
-
-static int kp_state = SCAN;
-static int kp_last_col_mask;
-static int kp_cur_row, kp_cur_col;
-static int kp_scancode;
-static int kp_stable;
-static int kp_repeat;
-static int kp_repeat_time;
-static int kp_force_time;
-static int kp_idle_time;
-
-static void kp_do_poll(void)
-{
- unsigned int col_mask;
- int col;
-
- switch (kp_state) {
- case SCAN:
- if (kp_idle_time > 0) {
- kp_idle_time -= PHONE_CONSOLE_POLL_HZ;
- if (kp_idle_time <= 0)
- scancode_action(KP_IDLE);
- }
-
- col_mask = kp_get_col_mask(KP_ROWS_MASK);
- if (col_mask == KP_COLS_MASK)
- break; /* nothing */
- kp_last_col_mask = col_mask;
- kp_stable = 0;
- kp_state = SCAN_FILTER;
- break;
-
- case SCAN_FILTER:
- col_mask = kp_get_col_mask(KP_ROWS_MASK);
- if (col_mask != kp_last_col_mask) {
- kp_state = SCAN;
- break;
- }
-
- kp_stable += PHONE_CONSOLE_POLL_HZ;
- if (kp_stable < KP_STABLE_HZ)
- break;
-
- kp_cur_row = 0;
- kp_stable = 0;
- kp_state = SCAN_COL;
-
- (void)kp_get_col_mask(1 << kp_cur_row);
- break;
-
- case SCAN_COL:
- col_mask = kp_get_col_mask(1 << kp_cur_row);
- if (col_mask == KP_COLS_MASK) {
- if (++kp_cur_row >= KP_ROWS) {
- kp_state = SCAN;
- break;
- }
- kp_get_col_mask(1 << kp_cur_row);
- break;
- }
- kp_last_col_mask = col_mask;
- kp_stable = 0;
- kp_state = SCAN_COL_FILTER;
- break;
-
- case SCAN_COL_FILTER:
- col_mask = kp_get_col_mask(1 << kp_cur_row);
- if (col_mask != kp_last_col_mask || col_mask == KP_COLS_MASK) {
- kp_state = SCAN;
- break;
- }
-
- kp_stable += PHONE_CONSOLE_POLL_HZ;
- if (kp_stable < KP_STABLE_HZ)
- break;
-
- for (col = 0; col < KP_COLS; col++)
- if ((col_mask & (1 << col)) == 0)
- break;
- kp_cur_col = col;
- kp_state = PRESSED;
- kp_scancode = kp_scancodes[kp_cur_row * KP_COLS + kp_cur_col];
- kp_repeat = kp_repeats[kp_cur_row * KP_COLS + kp_cur_col];
-
- if (kp_repeat)
- kp_repeat_time = KP_REPEAT_DELAY_HZ;
- kp_force_time = KP_FORCE_DELAY_HZ;
-
- scancode_action(kp_scancode);
-
- break;
-
- case PRESSED:
- col_mask = kp_get_col_mask(1 << kp_cur_row);
- if (col_mask != kp_last_col_mask) {
- kp_state = SCAN;
- scancode_action(KP_RELEASE);
- kp_idle_time = KP_IDLE_DELAY_HZ;
- break;
- }
-
- if (kp_repeat) {
- kp_repeat_time -= PHONE_CONSOLE_POLL_HZ;
- if (kp_repeat_time <= 0) {
- kp_repeat_time += KP_REPEAT_HZ;
- scancode_action(kp_scancode);
- }
- }
-
- if (kp_force_time > 0) {
- kp_force_time -= PHONE_CONSOLE_POLL_HZ;
- if (kp_force_time <= 0)
- scancode_action(KP_FORCE);
- }
-
- break;
- }
-}
-
-/**************************************************************************************/
-
-int drv_phone_is_idle(void)
-{
- return kp_state == SCAN;
-}
diff --git a/board/netphone/u-boot.lds b/board/netphone/u-boot.lds
deleted file mode 100644
index 9f2901c869..0000000000
--- a/board/netphone/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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)
- cpu/mpc8xx/traps.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/time.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/netphone/u-boot.lds.debug b/board/netphone/u-boot.lds.debug
deleted file mode 100644
index 004e7fd354..0000000000
--- a/board/netphone/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/netstar/Makefile b/board/netstar/Makefile
deleted file mode 100644
index 88da2b9483..0000000000
--- a/board/netstar/Makefile
+++ /dev/null
@@ -1,96 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2005
-# Ladislav Michl, 2N Telekomunikace, michl@2n.cz
-#
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := netstar.o flash.o nand.o
-SOBJS := setup.o crcek.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.c \
- eeprom_start.S
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
-LOAD_ADDR = 0x10400000
-LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/eeprom.lds
-lnk = $(if $(obj),$(obj),.)
-
-HOST_CFLAGS = -Wall -pedantic -I$(TOPDIR)/include
-
-all: $(obj).depend $(LIB) $(obj)eeprom.srec $(obj)eeprom.bin \
- $(obj)crcek.srec $(obj)crcek.bin $(obj)crcit
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $^
-
-$(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o
- cd $(lnk) && $(LD) -T $(LDSCRIPT) -g -Ttext $(LOAD_ADDR) \
- -o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
- -L$(obj)../../examples -lstubs \
- -L$(obj)../../lib_generic -lgeneric \
- -L$(gcclibdir) -lgcc
- $(OBJCOPY) -O srec $(<:.o=) $@
-
-$(obj)eeprom.bin: $(obj)eeprom.srec
- $(OBJCOPY) -I srec -O binary $< $@ 2>/dev/null
-
-$(obj)crcek.srec: $(obj)crcek.o
- $(LD) -g -Ttext 0x00000000 \
- -o $(<:.o=) -e crcek $^
- $(OBJCOPY) -O srec $(<:.o=) $@
-
-$(obj)crcek.bin: $(obj)crcek.srec
- $(OBJCOPY) -I srec -O binary $< $@ 2>/dev/null
-
-$(obj)crcit: $(obj)crcit.o $(obj)crc32.o
- $(HOSTCC) $(HOST_CFLAGS) -o $@ $^
-
-$(obj)crcit.o: crcit.c
- $(HOSTCC) $(HOST_CFLAGS) -o $@ -c $<
-
-$(obj)crc32.o: $(OBJTREE)/tools/crc32.c
- $(HOSTCC) $(HOST_CFLAGS) -DUSE_HOSTCC -o $@ -c $<
-
-clean:
- rm -f $(SOBJS) $(OBJS) $(obj)eeprom $(obj)eeprom.srec \
- $(obj)eeprom.bin $(obj)crcek $(obj)crcek.srec \
- $(obj)crcek.bin
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/netstar/config.mk b/board/netstar/config.mk
deleted file mode 100644
index 8b73e97598..0000000000
--- a/board/netstar/config.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# Linux-Kernel is expected to be at 1000'8000,
-# entry 1000'8000 (mem base + reserved)
-#
-# We load ourself to internal RAM at 2001'2000
-# Check map file when changing TEXT_BASE.
-# Everything has fit into 192kB internal SRAM!
-#
-
-# XXX TEXT_BASE = 0x20012000
-TEXT_BASE = 0x13FC0000
diff --git a/board/netstar/crcek.S b/board/netstar/crcek.S
deleted file mode 100644
index a74abf9a09..0000000000
--- a/board/netstar/crcek.S
+++ /dev/null
@@ -1,241 +0,0 @@
-/**
- * (C) Copyright 2005
- * 2N Telekomunikace, Ladislav Michl <michl@2n.cz>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2.
- *
- * Image layout looks like following:
- * u32 - size
- * u32 - version
- * ... - data
- * u32 - crc32
- */
-
-#include <config.h>
-#include "crcek.h"
-
-/**
- * do_crc32 - calculate CRC32 of given buffer
- * r0 - crc
- * r1 - pointer to buffer
- * r2 - buffer len
- */
- .macro do_crc32
- ldr r5, FFFFFFFF
- eor r0, r0, r5
- adr r3, CRC32_TABLE
-1:
- ldrb r4, [r1], #1
- eor r4, r4, r0
- and r4, r4, #0xff
- ldr r4, [r3, r4, lsl#2]
- eor r0, r4, r0, lsr#8
- subs r2, r2, #0x1
- bne 1b
- eor r0, r0, r5
- .endm
-
- .macro crcuj, offset, size
- mov r0, #0
- ldr r1, \offset
- ldr r2, [r1], #4
- cmp r2, r0 @ no data, no problem
- beq 2f
- tst r2, #3 @ unaligned size
- bne 2f
- ldr r3, \size
- cmp r2, r3 @ bogus size
- bhi 2f
- do_crc32
- ldr r1, [r1]
-2:
- cmp r0, r1
- .endm
-
- .macro wait, reg
- mov \reg, #0x100000
-3:
- subs \reg, \reg, #0x1
- bne 3b
- .endm
-
-.text
-.globl crcek
-crcek:
- /* Enable I-cache */
- mrc p15, 0, r1, c0, c0, 0 @ read C15 ID register
- mrc p15, 0, r1, c0, c0, 1 @ read C15 Cache information register
- mrc p15, 0, r1, c1, c0, 0 @ read C15 Control register
- orr r1, r1, #0x1000 @ enable I-cache, map interrupt vector 0xffff0000
- mcr p15, 0, r1, c1, c0, 0 @ write C15 Control register
- mov r1, #0x00
- mcr p15, 0, r1, c7, c5, 0 @ Flush I-cache
- nop
- nop
- nop
- nop
-
- /* Setup clocking mode */
- ldr r0, MPU_CLKM_BASE @ base of CLOCK unit
- ldrh r1, [r0, #0x18] @ ARM_SYST - get reset status
- bic r1, r1, #(7 << 11) @ clear clock select
- orr r1, r1, #(2 << 11) @ set synchronous scalable
- mov r2, #0
-loop:
- cmp r2, #1 @ this loop will wait for at least 100 cycles
- streqh r1, [r0, #0x18] @ before issuing next request from MPU
- add r2, r2, #1 @ on the 1st run code is loaded into I-cache
- cmp r2, #16 @ and second run will set clocking mode
- bne loop
- nop
-
- /* Setup clock dividers */
- ldr r1, CKCTL_VAL
- orr r1, r1, #0x2000 @ enable DSP clock
- strh r1, [r0] @ setup clock divisors
-
- /* Setup DPLL to generate requested freq */
- ldr r0, DPLL1_BASE @ base of DPLL1 register
- mov r1, #0x0010 @ set PLL_ENABLE
- orr r1, r1, #0x2000 @ set IOB to new locking
- orr r1, r1, #(OMAP5910_DPLL_MUL << 7) @ setup multiplier CLKREF
- orr r1, r1, #(OMAP5910_DPLL_DIV << 5) @ setup divider CLKREF
- strh r1, [r0] @ write
-
-locking:
- ldrh r1, [r0] @ get DPLL value
- tst r1, #0x01
- beq locking @ while LOCK not set
-
- /* Enable clock */
- ldr r0, MPU_CLKM_BASE @ base of CLOCK unit
- mov r1, #(1 << 10) @ disable idle mode do not check
- @ nWAKEUP pin, other remain active
- strh r1, [r0, #0x04]
- ldr r1, EN_CLK_VAL
- strh r1, [r0, #0x08]
- mov r1, #0x003f @ FLASH.RP not enabled in idle and
- strh r1, [r0, #0x0c] @ max delayed ( 32 x CLKIN )
-
-
- mov r6, #0
- crcuj _LOADER1_OFFSET, _LOADER_SIZE
- bne crc1_bad
- orr r6, r6, #1
-crc1_bad:
- crcuj _LOADER2_OFFSET, _LOADER_SIZE
- bne crc2_bad
- orr r6, r6, #2
-crc2_bad:
- ldr r3, _LOADER1_OFFSET
- ldr r4, _LOADER2_OFFSET
- teq r6, #3
- bne one_is_bad @ one of them (or both) has bad crc
- ldr r1, [r3, #4]
- ldr r2, [r4, #4]
- cmp r1, r2 @ boot 2nd loader if versions differ
- beq boot_1st
- b boot_2nd
-one_is_bad:
- tst r6, #1
- bne boot_1st
- tst r6, #2
- bne boot_2nd
-@ We are doomed, so let user know.
-hell:
- ldr r0, GPIO_BASE @ configure GPIO pins
- ldr r1, GPIO_DIRECTION
- strh r1, [r0, #0x08]
-blink_loop:
- mov r1, #0x08
- strh r1, [r0, #0x04]
- wait r3
- mov r1, #0x10
- strh r1, [r0, #0x04]
- wait r3
- b blink_loop
-boot_1st:
- add pc, r3, #8
-boot_2nd:
- add pc, r4, #8
-
-_LOADER_SIZE:
- .word LOADER_SIZE - 8 @ minus size and crc32
-_LOADER1_OFFSET:
- .word LOADER1_OFFSET
-_LOADER2_OFFSET:
- .word LOADER2_OFFSET
-
-FFFFFFFF:
- .word 0xffffffff
-CRC32_TABLE:
- .word 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419
- .word 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4
- .word 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07
- .word 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de
- .word 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856
- .word 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9
- .word 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4
- .word 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b
- .word 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3
- .word 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a
- .word 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599
- .word 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924
- .word 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190
- .word 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f
- .word 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e
- .word 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01
- .word 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed
- .word 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950
- .word 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3
- .word 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2
- .word 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a
- .word 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5
- .word 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010
- .word 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f
- .word 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17
- .word 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6
- .word 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615
- .word 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8
- .word 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344
- .word 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb
- .word 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a
- .word 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5
- .word 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1
- .word 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c
- .word 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef
- .word 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236
- .word 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe
- .word 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31
- .word 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c
- .word 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713
- .word 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b
- .word 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242
- .word 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1
- .word 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c
- .word 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278
- .word 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7
- .word 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66
- .word 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9
- .word 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605
- .word 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8
- .word 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b
- .word 0x2d02ef8d
-
-GPIO_BASE:
- .word 0xfffce000
-MPU_CLKM_BASE:
- .word 0xfffece00
-DPLL1_BASE:
- .word 0xfffecf00
-
-CKCTL_VAL:
- .word OMAP5910_ARM_CKCTL
-EN_CLK_VAL:
- .word OMAP5910_ARM_EN_CLK
-GPIO_DIRECTION:
- .word 0x0000ffe7
-
-.end
diff --git a/board/netstar/crcek.h b/board/netstar/crcek.h
deleted file mode 100644
index 30c08602f5..0000000000
--- a/board/netstar/crcek.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#define LOADER_SIZE (448 * 1024)
-#define LOADER1_OFFSET (128 * 1024)
-#define LOADER2_OFFSET (LOADER1_OFFSET + LOADER_SIZE)
diff --git a/board/netstar/crcit.c b/board/netstar/crcit.c
deleted file mode 100644
index ce98e20267..0000000000
--- a/board/netstar/crcit.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * (C) Copyright 2005
- * 2N Telekomunikace, Ladislav Michl <michl@2n.cz>
- *
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "crcek.h"
-
-extern unsigned long crc32(unsigned long, const unsigned char *, unsigned int);
-
-uint32_t data[LOADER_SIZE/4 + 3];
-
-int doit(char *path, unsigned version)
-{
- uint32_t *p;
- ssize_t size;
- int fd;
-
- fd = open(path, O_RDONLY);
- if (fd == -1) {
- perror("Error opening file");
- return EXIT_FAILURE;
- }
- p = data + 2;
- size = read(fd, p, LOADER_SIZE + 4);
- if (size == -1) {
- perror("Error reading file");
- return EXIT_FAILURE;
- }
- if (size > LOADER_SIZE) {
- fprintf(stderr, "File too large\n");
- return EXIT_FAILURE;
- }
- size = (((size - 1) >> 2) + 1) << 2;
- data[0] = size + 4; /* add size of version field */
- data[1] = version;
- data[(size >> 2) + 2] = crc32(0, (unsigned char *)(data + 1), data[0]);
- close(fd);
-
- if (write(STDOUT_FILENO, data, size + 3*4) == -1) {
- perror("Error writing file");
- return EXIT_FAILURE;
- }
-
- return EXIT_SUCCESS;
-}
-
-int main(int argc, char **argv)
-{
- if (argc == 2) {
- return doit(argv[1], 0);
- } else if ((argc == 4) && (strcmp(argv[1], "-v") == 0)) {
- char *endptr, *nptr = argv[2];
- unsigned ver = strtoul(nptr, &endptr, 0);
- if (*nptr != '\0' && *endptr == '\0')
- return doit(argv[3], ver);
- }
- fprintf(stderr, "Usage: crcit [-v version] <image>\n");
-
- return EXIT_FAILURE;
-}
diff --git a/board/netstar/eeprom.c b/board/netstar/eeprom.c
deleted file mode 100644
index fef3822aae..0000000000
--- a/board/netstar/eeprom.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * (C) Copyright 2005
- * Ladislav Michl, 2N Telekomunikace, michl@2n.cz
- *
- * 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 version 2 as
- * published by the Free Software Foundation.
- *
- * 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
- *
- * Some code shamelessly stolen back from Robin Getz.
- */
-
-#define DEBUG
-
-#include <common.h>
-#include <exports.h>
-#include "../drivers/smc91111.h"
-
-#define SMC_BASE_ADDRESS CONFIG_SMC91111_BASE
-
-static u16 read_eeprom_reg(u16 reg)
-{
- int timeout;
-
- SMC_SELECT_BANK(2);
- SMC_outw(reg, PTR_REG);
-
- SMC_SELECT_BANK(1);
- SMC_outw(SMC_inw (CTL_REG) | CTL_EEPROM_SELECT | CTL_RELOAD,
- CTL_REG);
- timeout = 100;
- while((SMC_inw (CTL_REG) & CTL_RELOAD) && --timeout)
- udelay(100);
- if (timeout == 0) {
- printf("Timeout Reading EEPROM register %02x\n", reg);
- return 0;
- }
-
- return SMC_inw (GP_REG);
-}
-
-static int write_eeprom_reg(u16 value, u16 reg)
-{
- int timeout;
-
- SMC_SELECT_BANK(2);
- SMC_outw(reg, PTR_REG);
-
- SMC_SELECT_BANK(1);
- SMC_outw(value, GP_REG);
- SMC_outw(SMC_inw (CTL_REG) | CTL_EEPROM_SELECT | CTL_STORE, CTL_REG);
- timeout = 100;
- while ((SMC_inw(CTL_REG) & CTL_STORE) && --timeout)
- udelay (100);
- if (timeout == 0) {
- printf("Timeout Writing EEPROM register %02x\n", reg);
- return 0;
- }
-
- return 1;
-}
-
-static int write_data(u16 *buf, int len)
-{
- u16 reg = 0x23;
-
- while (len--)
- write_eeprom_reg(*buf++, reg++);
-
- return 0;
-}
-
-static int verify_macaddr(char *s)
-{
- u16 reg;
- int i, err = 0;
-
- printf("MAC Address: ");
- err = i = 0;
- for (i = 0; i < 3; i++) {
- reg = read_eeprom_reg(0x20 + i);
- printf("%02x:%02x%c", reg & 0xff, reg >> 8, i != 2 ? ':' : '\n');
- if (s)
- err |= reg != ((u16 *)s)[i];
- }
-
- return err ? 0 : 1;
-}
-
-static int set_mac(char *s)
-{
- int i;
- char *e, eaddr[6];
-
- /* turn string into mac value */
- for (i = 0; i < 6; i++) {
- eaddr[i] = simple_strtoul(s, &e, 16);
- s = (*e) ? e+1 : e;
- }
-
- for (i = 0; i < 3; i++)
- write_eeprom_reg(*(((u16 *)eaddr) + i), 0x20 + i);
-
- return 0;
-}
-
-static int parse_element(char *s, unsigned char *buf, int len)
-{
- int cnt;
- char *p, num[3];
- unsigned char id;
-
- id = simple_strtoul(s, &p, 16);
- if (*p++ != ':')
- return -1;
- cnt = 2;
- num[2] = 0;
- for (; *p; p += 2) {
- if (p[1] == 0)
- return -2;
- if (cnt + 3 > len)
- return -3;
- num[0] = p[0];
- num[1] = p[1];
- buf[cnt++] = simple_strtoul(num, NULL, 16);
- }
- buf[0] = id;
- buf[1] = cnt - 2;
-
- return cnt;
-}
-
-extern int crcek(void);
-
-int eeprom(int argc, char *argv[])
-{
- int i, len, ret;
- unsigned char buf[58], *p;
-
- app_startup(argv);
- if (get_version() != XF_VERSION) {
- printf("Wrong XF_VERSION.\n");
- printf("Application expects ABI version %d\n", XF_VERSION);
- printf("Actual U-Boot ABI version %d\n", (int)get_version());
- return 1;
- }
-
- return crcek();
-
- if ((SMC_inw (BANK_SELECT) & 0xFF00) != 0x3300) {
- printf("SMSC91111 not found.\n");
- return 2;
- }
-
- /* Called without parameters - print MAC address */
- if (argc < 2) {
- verify_macaddr(NULL);
- return 0;
- }
-
- /* Print help message */
- if (argv[1][1] == 'h') {
- printf("VoiceBlue EEPROM writer\n");
- printf("Built: %s at %s\n", __DATE__ , __TIME__ );
- printf("Usage:\n\t<mac_address> [<element_1>] [<...>]\n");
- return 0;
- }
-
- /* Try to parse information elements */
- len = sizeof(buf);
- p = buf;
- for (i = 2; i < argc; i++) {
- ret = parse_element(argv[i], p, len);
- switch (ret) {
- case -1:
- printf("Element %d: malformed\n", i - 1);
- return 3;
- case -2:
- printf("Element %d: odd character count\n", i - 1);
- return 3;
- case -3:
- printf("Out of EEPROM memory\n");
- return 3;
- default:
- p += ret;
- len -= ret;
- }
- }
-
- /* First argument (MAC) is mandatory */
- set_mac(argv[1]);
- if (verify_macaddr(argv[1])) {
- printf("*** MAC address does not match! ***\n");
- return 4;
- }
-
- while (len--)
- *p++ = 0;
-
- write_data((u16 *)buf, sizeof(buf) >> 1);
-
- return 0;
-}
diff --git a/board/netstar/eeprom.lds b/board/netstar/eeprom.lds
deleted file mode 100644
index 317550dbad..0000000000
--- a/board/netstar/eeprom.lds
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
- * (C) Copyright 2005
- * Ladislav Michl, 2N Telekomunikace, <michl@2n.cz>
- *
- * 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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = ALIGN(4);
- .text :
- {
- eeprom_start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/netstar/eeprom_start.S b/board/netstar/eeprom_start.S
deleted file mode 100644
index 75d9f0558f..0000000000
--- a/board/netstar/eeprom_start.S
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 2005 2N Telekomunikace
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
- *
- */
-
-.globl _start
-_start: b eeprom
-
-#include "crcek.h"
-
-/**
- * do_crc32 - calculate CRC32 of given buffer
- * r0 - crc
- * r1 - pointer to buffer
- * r2 - buffer len
- */
- .macro do_crc32
- ldr r5, FFFFFFFF
- eor r0, r0, r5
- adr r3, CRC32_TABLE
-1:
- ldrb r4, [r1], #1
- eor r4, r4, r0
- and r4, r4, #0xff
- ldr r4, [r3, r4, lsl#2]
- eor r0, r4, r0, lsr#8
- subs r2, r2, #0x1
- bne 1b
- eor r0, r0, r5
- .endm
-
- .macro crcuj, offset, size
- ldr r1, \offset
- ldr r2, [r1]
- cmp r2, #0 @ no data, no problem
- beq 2f
- mov r7, #1
- tst r2, #3 @ unaligned size
- bne 2f
- mov r7, #2
- ldr r0, \size
- cmp r2, r0 @ bogus size
- bhi 2f
- mov r7, #3
- add r1, r1, #4
- mov r0, #0
- do_crc32
- ldr r1, [r1]
-2:
- cmp r0, r1
- .endm
-
- .macro wait, reg
- mov \reg, #0x1000
-3:
- subs \reg, \reg, #0x1
- bne 3b
-
- .endm
-.text
-.globl crcek
-crcek:
- mov r6, #0
-@ crcuj _LOADER1_OFFSET, _LOADER_SIZE
-@ bne crc1_bad
-@ orr r6, r6, #1
-crc1_bad:
- crcuj _LOADER2_OFFSET, _LOADER_SIZE
- bne crc2_bad
- orr r6, r6, #2
-crc2_bad:
-@ mov r0, r6
- mov pc, lr
- ldr r3, _LOADER1_OFFSET
- ldr r4, _LOADER2_OFFSET
- tst r6, #3
- beq one_is_bad @ one of them (or both) has bad crc
- ldr r1, [r3, #4]
- ldr r2, [r4, #4]
- cmp r1, r2 @ boot 2nd loader if versions differ
- beq boot_1st
- b boot_2nd
-one_is_bad:
- tst r6, #1
- bne boot_1st
- tst r6, #2
- bne boot_2nd
-@ We are doomed, so let user know.
- ldr r0, GPIO_BASE @ configure GPIO pins
- ldr r1, GPIO_DIRECTION
- strh r1, [r0, #0x08]
-blink_loop:
- mov r1, #0x08
- strh r1, [r0, #0x04]
- wait r3
- mov r1, #0x10
- strh r1, [r0, #0x04]
- wait r3
- b blink_loop
-boot_1st:
- add pc, r3, #8
-boot_2nd:
- add pc, r4, #8
-
-_LOADER_SIZE:
- .word LOADER_SIZE - 8 @ minus size and crc32
-_LOADER1_OFFSET:
- .word LOADER1_OFFSET
-_LOADER2_OFFSET:
- .word LOADER2_OFFSET
-
-FFFFFFFF:
- .word 0xffffffff
-CRC32_TABLE:
- .word 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419
- .word 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4
- .word 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07
- .word 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de
- .word 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856
- .word 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9
- .word 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4
- .word 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b
- .word 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3
- .word 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a
- .word 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599
- .word 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924
- .word 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190
- .word 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f
- .word 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e
- .word 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01
- .word 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed
- .word 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950
- .word 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3
- .word 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2
- .word 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a
- .word 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5
- .word 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010
- .word 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f
- .word 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17
- .word 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6
- .word 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615
- .word 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8
- .word 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344
- .word 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb
- .word 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a
- .word 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5
- .word 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1
- .word 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c
- .word 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef
- .word 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236
- .word 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe
- .word 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31
- .word 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c
- .word 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713
- .word 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b
- .word 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242
- .word 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1
- .word 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c
- .word 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278
- .word 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7
- .word 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66
- .word 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9
- .word 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605
- .word 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8
- .word 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b
- .word 0x2d02ef8d
-
-GPIO_BASE:
- .word 0xfffce000
-GPIO_DIRECTION:
- .word 0x0000ffe7
-
-.end
diff --git a/board/netstar/flash.c b/board/netstar/flash.c
deleted file mode 100644
index 692c416780..0000000000
--- a/board/netstar/flash.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@sysgo.de>
- *
- * (C) Copyright 2005
- * 2N Telekomunikace, a.s. <www.2n.cz>
- * Ladislav Michl <michl@2n.cz>
- *
- * 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 <common.h>
-
-/*#if 0 */
-#if (PHYS_SDRAM_1_SIZE != SZ_32M)
-
-#include "crcek.h"
-
-#if (CFG_MAX_FLASH_BANKS > 1)
-#error There is always only _one_ flash chip
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-#define CMD_READ_ARRAY 0x000000f0
-#define CMD_UNLOCK1 0x000000aa
-#define CMD_UNLOCK2 0x00000055
-#define CMD_ERASE_SETUP 0x00000080
-#define CMD_ERASE_CONFIRM 0x00000030
-#define CMD_PROGRAM 0x000000a0
-#define CMD_UNLOCK_BYPASS 0x00000020
-
-#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555 << 1)))
-#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002aa << 1)))
-
-#define BIT_ERASE_DONE 0x00000080
-#define BIT_RDY_MASK 0x00000080
-#define BIT_PROGRAM_ERROR 0x00000020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init(void)
-{
- int i;
-
- flash_info[0].flash_id = (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV800B & FLASH_TYPEMASK);
- flash_info[0].size = PHYS_FLASH_1_SIZE;
- flash_info[0].sector_count = CFG_MAX_FLASH_SECT;
- memset(flash_info[0].protect, 0, CFG_MAX_FLASH_SECT);
-
- for (i = 0; i < flash_info[0].sector_count; i++) {
- switch (i) {
- case 0: /* 16kB */
- flash_info[0].start[0] = CFG_FLASH_BASE;
- break;
- case 1: /* 8kB */
- flash_info[0].start[1] = CFG_FLASH_BASE + 0x4000;
- break;
- case 2: /* 8kB */
- flash_info[0].start[2] = CFG_FLASH_BASE + 0x4000 +
- 0x2000;
- break;
- case 3: /* 32 KB */
- flash_info[0].start[3] = CFG_FLASH_BASE + 0x4000 +
- 2 * 0x2000;
- break;
- case 4:
- flash_info[0].start[4] = CFG_FLASH_BASE + 0x4000 +
- 2 * 0x2000 + 0x8000;
- break;
- default: /* 64kB */
- flash_info[0].start[i] = flash_info[0].start[i-1] +
- 0x10000;
- break;
- }
- }
-
- /* U-Boot */
- flash_protect(FLAG_PROTECT_SET,
- LOADER1_OFFSET,
- LOADER1_OFFSET + LOADER_SIZE - 1, flash_info);
- /* Protect crcek, env and r_env as well */
- flash_protect(FLAG_PROTECT_SET, 0, 0x8000 - 1, flash_info);
-
- return flash_info[0].size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t *info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- puts("AMD: ");
- break;
- default:
- puts("Unknown vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_LV800B & FLASH_TYPEMASK):
- puts("AM29LV800BB (8Mb)\n");
- break;
- default:
- puts("Unknown chip type\n");
- return;
- }
-
- printf(" Size: %ld MB in %d sectors\n",
- info->size >> 20, info->sector_count);
-
- puts(" Sector start addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0)
- puts("\n ");
-
- printf(" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- puts("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- ushort result;
- int prot, sect;
- int rc = ERR_OK;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last))
- return ERR_INVAL;
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (AMD_MANUFACT & FLASH_VENDMASK))
- return ERR_UNKNOWN_FLASH_VENDOR;
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect)
- if (info->protect[sect])
- prot++;
-
- if (prot)
- printf("- Warning: %d protected sectors will not be erased!\n",
- prot);
- else
- putc('\n');
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_short *addr = (vu_short *) (info->start[sect]);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- while (1) {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked() > CFG_FLASH_ERASE_TOUT) {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- rc = ERR_TIMOUT;
- break;
- }
-
- if ((result & 0xfff) & BIT_ERASE_DONE)
- break;
-
- if ((result & 0xffff) & BIT_PROGRAM_ERROR) {
- rc = ERR_PROG_ERROR;
- break;
- }
- }
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- if (rc != ERR_OK)
- goto out;
-
- putc('.');
- }
- }
-out:
- /* allow flash to settle - wait 10 ms */
- udelay_masked(10000);
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_hword(flash_info_t *info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short *) dest;
- ushort result;
- int rc = ERR_OK;
-
- /* check if flash is (sufficiently) erased */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- /* wait until flash is ready */
- while (1) {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- rc = ERR_TIMOUT;
- break;
- }
-
- if ((result & 0x80) == (data & 0x80))
- break;
-
- if ((result & 0xffff) & BIT_PROGRAM_ERROR) {
- result = *addr;
-
- if ((result & 0x80) != (data & 0x80))
- rc = ERR_PROG_ERROR;
- }
- }
-
- *addr = CMD_READ_ARRAY;
-
- if (*addr != data)
- rc = ERR_PROG_ERROR;
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- int l;
- int i, rc;
- ushort data;
-
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp)
- data = (data >> 8) | (*(uchar *) cp << 8);
- for (; i < 2 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 2; ++i, ++cp)
- data = (data >> 8) | (*(uchar *) cp << 8);
-
- if ((rc = write_hword(info, wp, data)) != 0)
- return (rc);
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 2) {
- data = *((vu_short *) src);
- if ((rc = write_hword(info, wp, data)) != 0)
- return (rc);
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0)
- return ERR_OK;
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- }
- for (; i < 2; ++i, ++cp)
- data = (data >> 8) | (*(uchar *) cp << 8);
-
- return write_hword(info, wp, data);
-}
-
-#endif
diff --git a/board/netstar/nand.c b/board/netstar/nand.c
deleted file mode 100644
index 78523654eb..0000000000
--- a/board/netstar/nand.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * (C) Copyright 2005 2N TELEKOMUNIKACE, Ladislav Michl
- *
- * 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 <common.h>
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-
-#include <nand.h>
-
-/*
- * hardware specific access to control-lines
- */
-#define MASK_CLE 0x02
-#define MASK_ALE 0x04
-
-static void netstar_nand_hwcontrol(struct mtd_info *mtd, int cmd)
-{
- struct nand_chip *this = mtd->priv;
- ulong IO_ADDR_W = (ulong) this->IO_ADDR_W;
-
- IO_ADDR_W &= ~(MASK_ALE|MASK_CLE);
- switch (cmd) {
- case NAND_CTL_SETCLE: IO_ADDR_W |= MASK_CLE; break;
- case NAND_CTL_SETALE: IO_ADDR_W |= MASK_ALE; break;
- }
- this->IO_ADDR_W = (void *) IO_ADDR_W;
-}
-
-/*
- * chip R/B detection
- */
-/***
-static int netstar_nand_ready(struct mtd_info *mtd)
-{
- return (*(volatile ushort *)GPIO_DATA_INPUT_REG) & 0x02;
-}
-***/
-
-int board_nand_init(struct nand_chip *nand)
-{
- nand->options = NAND_SAMSUNG_LP_OPTIONS;
- nand->eccmode = NAND_ECC_SOFT;
- nand->hwcontrol = netstar_nand_hwcontrol;
-/* nand->dev_ready = netstar_nand_ready; */
- nand->chip_delay = 18;
- return 0;
-}
-#endif
diff --git a/board/netstar/netstar.c b/board/netstar/netstar.c
deleted file mode 100644
index f52afe50c7..0000000000
--- a/board/netstar/netstar.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * (C) Copyright 2005 2N TELEKOMUNIKACE, Ladislav Michl
- *
- * 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 <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_init(void)
-{
- /* arch number of NetStar board */
- gd->bd->bi_arch_number = MACH_TYPE_NETSTAR;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x10000100;
-
- return 0;
-}
-
-int dram_init(void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- /* Take the Ethernet controller out of reset and wait
- * for the EEPROM load to complete. */
- *((volatile unsigned short *) GPIO_DATA_OUTPUT_REG) |= 0x80;
- udelay(10); /* doesn't work before interrupt_init call */
- *((volatile unsigned short *) GPIO_DATA_OUTPUT_REG) &= ~0x80;
- udelay(500);
-
- return 0;
-}
-
-int misc_init_r(void)
-{
- return 0;
-}
-
-int board_late_init(void)
-{
- return 0;
-}
diff --git a/board/netstar/setup.S b/board/netstar/setup.S
deleted file mode 100644
index 5dacc9cc45..0000000000
--- a/board/netstar/setup.S
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * Board specific setup info
- *
- * (C) Copyright 2004 Ales Jindra <jindra@2n.cz>
- * (C) Copyright 2005 Ladislav Michl <michl@2n.cz>
- *
- * 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 <config.h>
-#include <version.h>
-
-_TEXT_BASE:
- .word TEXT_BASE /* SDRAM load addr from config.mk */
-
-OMAP5910_LPG1_BASE: .word 0xfffbd000
-OMAP5910_TIPB_SWITCHES_BASE: .word 0xfffbc800
-OMAP5910_MPU_TC_BASE: .word 0xfffecc00
-OMAP5910_MPU_CLKM_BASE: .word 0xfffece00
-OMAP5910_ULPD_PWR_MNG_BASE: .word 0xfffe0800
-OMAP5910_DPLL1_BASE: .word 0xfffecf00
-OMAP5910_GPIO_BASE: .word 0xfffce000
-OMAP5910_MPU_WD_TIMER_BASE: .word 0xfffec800
-OMAP5910_MPUI_BASE: .word 0xfffec900
-
-_OMAP5910_ARM_CKCTL: .word OMAP5910_ARM_CKCTL
-_OMAP5910_ARM_EN_CLK: .word OMAP5910_ARM_EN_CLK
-
-OMAP5910_MPUI_CTRL: .word 0x0000ff1b
-
-VAL_EMIFS_CS0_CONFIG: .word 0x00009090
-VAL_EMIFS_CS1_CONFIG: .word 0x00003031
-VAL_EMIFS_CS2_CONFIG: .word 0x0000a0a1
-VAL_EMIFS_CS3_CONFIG: .word 0x0000c0c0
-VAL_EMIFS_DYN_WAIT: .word 0x00000000
-/* autorefresh counter 0x246 ((64000000/13.4)-400)/8192) */
- /* SLRF SD_RET ARE SDRAM_TYPE ARCV SDRAM_FREQUENCY PWD CLK */
-
-#if (PHYS_SDRAM_1_SIZE == SZ_32M)
-VAL_EMIFF_SDRAM_CONFIG: .word ((0 << 0) | (0 << 1) | (3 << 2) | (0xf << 4) | (0x246 << 8) | (0 << 24) | (0 << 26) | (0 << 27))
-#else
-VAL_EMIFF_SDRAM_CONFIG: .word ((0 << 0) | (0 << 1) | (3 << 2) | (0xd << 4) | (0x246 << 8) | (0 << 24) | (0 << 26) | (0 << 27))
-#endif
-
-VAL_EMIFF_SDRAM_CONFIG2: .word 0x00000003
-VAL_EMIFF_MRS: .word 0x00000037
-
-/*
- * GPIO04 - Green LED (Red LED is connected to LED Pulse Generator)
- * GPIO07 - LAN91C111 reset
- */
-GPIO_DIRECTION:
- .word 0x0000ff6f
-/*
- * Disable everything (green LED is connected via invertor)
- */
-GPIO_OUTPUT:
- .word 0x00000010
-
-MUX_CONFIG_BASE:
- .word 0xfffe1000
-
-MUX_CONFIG_VALUES:
- .align 4
- .word 0x00000000 @ FUNC_MUX_CTRL_0
- .word 0x00000000 @ FUNC_MUX_CTRL_1
- .word 0x00000000 @ FUNC_MUX_CTRL_2
- .word 0x00000000 @ FUNC_MUX_CTRL_3
- .word 0x00000000 @ FUNC_MUX_CTRL_4
- .word 0x02080480 @ FUNC_MUX_CTRL_5
- .word 0x0100001c @ FUNC_MUX_CTRL_6
- .word 0x0004800b @ FUNC_MUX_CTRL_7
- .word 0x10001200 @ FUNC_MUX_CTRL_8
- .word 0x01201012 @ FUNC_MUX_CTRL_9
- .word 0x02082248 @ FUNC_MUX_CTRL_A
- .word 0x00000248 @ FUNC_MUX_CTRL_B
- .word 0x12240000 @ FUNC_MUX_CTRL_C
- .word 0x00002000 @ FUNC_MUX_CTRL_D
- .word 0x00000000 @ PULL_DWN_CTRL_0
- .word 0x00000800 @ PULL_DWN_CTRL_1
- .word 0x01801000 @ PULL_DWN_CTRL_2
- .word 0x00000000 @ PULL_DWN_CTRL_3
- .word 0x00000000 @ GATE_INH_CTRL_0
- .word 0x00000000 @ VOLTAGE_CTRL_0
- .word 0x00000000 @ TEST_DBG_CTRL_0
- .word 0x00000006 @ MOD_CONF_CTRL_0
- .word 0x0000eaef @ COMP_MODE_CTRL_0
-
-MUX_CONFIG_OFFSETS:
- .align 1
- .byte 0x00 @ FUNC_MUX_CTRL_0
- .byte 0x04 @ FUNC_MUX_CTRL_1
- .byte 0x08 @ FUNC_MUX_CTRL_2
- .byte 0x10 @ FUNC_MUX_CTRL_3
- .byte 0x14 @ FUNC_MUX_CTRL_4
- .byte 0x18 @ FUNC_MUX_CTRL_5
- .byte 0x1c @ FUNC_MUX_CTRL_6
- .byte 0x20 @ FUNC_MUX_CTRL_7
- .byte 0x24 @ FUNC_MUX_CTRL_8
- .byte 0x28 @ FUNC_MUX_CTRL_9
- .byte 0x2c @ FUNC_MUX_CTRL_A
- .byte 0x30 @ FUNC_MUX_CTRL_B
- .byte 0x34 @ FUNC_MUX_CTRL_C
- .byte 0x38 @ FUNC_MUX_CTRL_D
- .byte 0x40 @ PULL_DWN_CTRL_0
- .byte 0x44 @ PULL_DWN_CTRL_1
- .byte 0x48 @ PULL_DWN_CTRL_2
- .byte 0x4c @ PULL_DWN_CTRL_3
- .byte 0x50 @ GATE_INH_CTRL_0
- .byte 0x60 @ VOLTAGE_CTRL_0
- .byte 0x70 @ TEST_DBG_CTRL_0
- .byte 0x80 @ MOD_CONF_CTRL_0
- .byte 0x0c @ COMP_MODE_CTRL_0
- .byte 0xff
-
-.globl lowlevel_init
-lowlevel_init:
- /* Improve performance a bit... */
- mrc p15, 0, r1, c0, c0, 0 @ read C15 ID register
- mrc p15, 0, r1, c0, c0, 1 @ read C15 Cache information register
- mrc p15, 0, r1, c1, c0, 0 @ read C15 Control register
- orr r1, r1, #0x1000 @ enable I-cache, map interrupt vector 0xffff0000
- mcr p15, 0, r1, c1, c0, 0 @ write C15 Control register
- mov r1, #0x00
- mcr p15, 0, r1, c7, c5, 0 @ Flush I-cache
- nop
- nop
- nop
- nop
-
- /* Setup clocking mode */
- ldr r0, OMAP5910_MPU_CLKM_BASE @ base of CLOCK unit
- ldrh r1, [r0, #0x18] @ ARM_SYST - get reset status
- bic r1, r1, #(7 << 11) @ clear clock select
- orr r1, r1, #(2 << 11) @ set synchronous scalable
- mov r2, #0
-loop:
- cmp r2, #1 @ this loop will wait for at least 100 cycles
- streqh r1, [r0, #0x18] @ before issuing next request from MPU
- add r2, r2, #1 @ on the 1st run code is loaded into I-cache
- cmp r2, #16 @ and second run will set clocking mode
- bne loop
- nop
-
- /* Setup clock dividers */
- ldr r1, _OMAP5910_ARM_CKCTL
- orr r1, r1, #0x2000 @ enable DSP clock
- strh r1, [r0] @ setup clock divisors
-
- /* Setup DPLL to generate requested freq */
- ldr r0, OMAP5910_DPLL1_BASE @ base of DPLL1 register
- mov r1, #0x0010 @ set PLL_ENABLE
- orr r1, r1, #0x2000 @ set IOB to new locking
- orr r1, r1, #(OMAP5910_DPLL_MUL << 7) @ setup multiplier CLKREF
- orr r1, r1, #(OMAP5910_DPLL_DIV << 5) @ setup divider CLKREF
- strh r1, [r0] @ write
-
-locking:
- ldrh r1, [r0] @ get DPLL value
- tst r1, #0x01
- beq locking @ while LOCK not set
-
- /* Enable clock */
- ldr r0, OMAP5910_MPU_CLKM_BASE @ base of CLOCK unit
- mov r1, #(1 << 10) @ disable idle mode do not check
- @ nWAKEUP pin, other remain active
- strh r1, [r0, #0x04]
- ldr r1, _OMAP5910_ARM_EN_CLK
- strh r1, [r0, #0x08]
- mov r1, #0x003f @ FLASH.RP not enabled in idle and
- strh r1, [r0, #0x0c] @ max delayed ( 32 x CLKIN )
-
- /* Configure 5910 pins functions to match our board. */
- ldr r0, MUX_CONFIG_BASE
- adr r1, MUX_CONFIG_VALUES
- adr r2, MUX_CONFIG_OFFSETS
-next_mux_cfg:
- ldrb r3, [r2], #1
- ldr r4, [r1], #4
- cmp r3, #0xff
- strne r4, [r0, r3]
- bne next_mux_cfg
-
- /* Configure GPIO pins (also disables Green LED) */
- ldr r0, OMAP5910_GPIO_BASE
- ldr r1, GPIO_OUTPUT
- strh r1, [r0, #0x04]
- ldr r1, GPIO_DIRECTION
- strh r1, [r0, #0x08]
-
- /* EnablePeripherals */
- ldr r0, OMAP5910_MPU_CLKM_BASE @ CLOCK unit
- mov r1, #0x0001 @ Peripheral enable
- strh r1, [r0, #0x14]
-
- /* Program LED Pulse Generator */
- ldr r0, OMAP5910_LPG1_BASE @ 1st LED Pulse Generator
- mov r1, #0x7F @ Set obscure frequency in
- strb r1, [r0, #0x00] @ LCR
- mov r1, #0x01 @ Enable clock (CLK_EN) in
- strb r1, [r0, #0x04] @ PMR
-
- /* TIPB Lock UART1 */
- ldr r0, OMAP5910_TIPB_SWITCHES_BASE @ prepare base of TIPB switches
- mov r1, #1 @ ARM allocated
- strh r1, [r0,#0x04] @ clear IRQ line and status bits
- strh r1, [r0,#0x00]
- ldrh r1, [r0,#0x04]
-
- /* Disable watchdog */
- ldr r0, OMAP5910_MPU_WD_TIMER_BASE
- mov r1, #0xf5
- strh r1, [r0, #0x8]
- mov r1, #0xa0
- strh r1, [r0, #0x8]
-
- /* Enable MCLK */
- ldr r0, OMAP5910_ULPD_PWR_MNG_BASE
- mov r1, #0x6
- strh r1, [r0, #0x34]
- strh r1, [r0, #0x34]
-
- /* Setup clock divisors */
- ldr r0, OMAP5910_ULPD_PWR_MNG_BASE @ base of ULDPL DPLL1 register
-
- mov r1, #0x0010 @ set PLL_ENABLE
- orr r1, r1, #0x2000 @ set IOB to new locking
- strh r1, [r0] @ write
-
-ulocking:
- ldrh r1, [r0] @ get DPLL value
- tst r1, #1
- beq ulocking @ while LOCK not set
-
- /* EMIF init */
- ldr r0, OMAP5910_MPU_TC_BASE
- ldrh r1, [r0, #0x0c] @ EMIFS_CONFIG_REG
- bic r1, r1, #0x0c @ pwr down disabled, flash WP
- orr r1, r1, #0x01
- str r1, [r0, #0x0c]
-
- ldr r1, VAL_EMIFS_CS0_CONFIG
- str r1, [r0, #0x10] @ EMIFS_CS0_CONFIG
- ldr r1, VAL_EMIFS_CS1_CONFIG
- str r1, [r0, #0x14] @ EMIFS_CS1_CONFIG
- ldr r1, VAL_EMIFS_CS2_CONFIG
- str r1, [r0, #0x18] @ EMIFS_CS2_CONFIG
- ldr r1, VAL_EMIFS_CS3_CONFIG
- str r1, [r0, #0x1c] @ EMIFS_CS3_CONFIG
- ldr r1, VAL_EMIFS_DYN_WAIT
- str r1, [r0, #0x40] @ EMIFS_CFG_DYN_WAIT
-
- /* Setup SDRAM */
- ldr r1, VAL_EMIFF_SDRAM_CONFIG
- str r1, [r0, #0x20] @ EMIFF_SDRAM_CONFIG
- ldr r1, VAL_EMIFF_SDRAM_CONFIG2
- str r1, [r0, #0x3c] @ EMIFF_SDRAM_CONFIG2
- ldr r1, VAL_EMIFF_MRS
- str r1, [r0, #0x24] @ EMIFF_MRS
- /* SDRAM needs 100us to stabilize */
- mov r0, #0x4000
-sdelay:
- subs r0, r0, #0x1
- bne sdelay
-
- /* back to arch calling code */
- mov pc, lr
-.end
diff --git a/board/netstar/u-boot.lds b/board/netstar/u-boot.lds
deleted file mode 100644
index 8317f72d06..0000000000
--- a/board/netstar/u-boot.lds
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm925t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/netta/Makefile b/board/netta/Makefile
deleted file mode 100644
index 96374ba3fc..0000000000
--- a/board/netta/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o dsp.o codec.o pcmcia.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/netta/codec.c b/board/netta/codec.c
deleted file mode 100644
index 01ab14bc52..0000000000
--- a/board/netta/codec.c
+++ /dev/null
@@ -1,1484 +0,0 @@
-/*
- * CODEC
- */
-
-#include <common.h>
-#include <post.h>
-
-#include "mpc8xx.h"
-
-/***********************************************/
-
-#define MAX_DUSLIC 4
-
-#define NUM_CHANNELS 2
-#define MAX_SLICS (MAX_DUSLIC * NUM_CHANNELS)
-
-/***********************************************/
-
-#define SOP_READ_CH_0 0xC4 /* Read SOP Register for Channel A */
-#define SOP_READ_CH_1 0xCC /* Read SOP Register for Channel B */
-#define SOP_WRITE_CH_0 0x44 /* Write SOP Register for Channel A */
-#define SOP_WRITE_CH_1 0x4C /* Write SOP Register for Channel B */
-
-#define COP_READ_CH_0 0xC5
-#define COP_READ_CH_1 0xCD
-#define COP_WRITE_CH_0 0x45
-#define COP_WRITE_CH_1 0x4D
-
-#define POP_READ_CH_0 0xC6
-#define POP_READ_CH_1 0xCE
-#define POP_WRITE_CH_0 0x46
-#define POP_WRITE_CH_1 0x4E
-
-#define RST_CMD_DUSLIC_CHIP 0x40 /* OR 0x48 */
-#define RST_CMD_DUSLIC_CH_A 0x41
-#define RST_CMD_DUSLIC_CH_B 0x49
-
-#define PCM_RESYNC_CMD_CH_A 0x42
-#define PCM_RESYNC_CMD_CH_B 0x4A
-
-#define ACTIVE_HOOK_LEV_4 0
-#define ACTIVE_HOOK_LEV_12 1
-
-#define SLIC_P_NORMAL 0x01
-
-/************************************************/
-
-#define CODSP_WR 0x00
-#define CODSP_RD 0x80
-#define CODSP_OP 0x40
-#define CODSP_ADR(x) (((unsigned char)(x) & 7) << 3)
-#define CODSP_M(x) ((unsigned char)(x) & 7)
-#define CODSP_CMD(x) ((unsigned char)(x) & 7)
-
-/************************************************/
-
-/* command indication ops */
-#define CODSP_M_SLEEP_PWRDN 7
-#define CODSP_M_PWRDN_HIZ 0
-#define CODSP_M_ANY_ACT 2
-#define CODSP_M_RING 5
-#define CODSP_M_ACT_MET 6
-#define CODSP_M_GND_START 4
-#define CODSP_M_RING_PAUSE 1
-
-/* single byte commands */
-#define CODSP_CMD_SOFT_RESET CODSP_CMD(0)
-#define CODSP_CMD_RESET_CH CODSP_CMD(1)
-#define CODSP_CMD_RESYNC CODSP_CMD(2)
-
-/* two byte commands */
-#define CODSP_CMD_SOP CODSP_CMD(4)
-#define CODSP_CMD_COP CODSP_CMD(5)
-#define CODSP_CMD_POP CODSP_CMD(6)
-
-/************************************************/
-
-/* read as 4-bytes */
-#define CODSP_INTREG_INT_CH 0x80000000
-#define CODSP_INTREG_HOOK 0x40000000
-#define CODSP_INTREG_GNDK 0x20000000
-#define CODSP_INTREG_GNDP 0x10000000
-#define CODSP_INTREG_ICON 0x08000000
-#define CODSP_INTREG_VRTLIM 0x04000000
-#define CODSP_INTREG_OTEMP 0x02000000
-#define CODSP_INTREG_SYNC_FAIL 0x01000000
-#define CODSP_INTREG_LM_THRES 0x00800000
-#define CODSP_INTREG_READY 0x00400000
-#define CODSP_INTREG_RSTAT 0x00200000
-#define CODSP_INTREG_LM_OK 0x00100000
-#define CODSP_INTREG_IO4_DU 0x00080000
-#define CODSP_INTREG_IO3_DU 0x00040000
-#define CODSP_INTREG_IO2_DU 0x00020000
-#define CODSP_INTREG_IO1_DU 0x00010000
-#define CODSP_INTREG_DTMF_OK 0x00008000
-#define CODSP_INTREG_DTMF_KEY4 0x00004000
-#define CODSP_INTREG_DTMF_KEY3 0x00002000
-#define CODSP_INTREG_DTMF_KEY2 0x00001000
-#define CODSP_INTREG_DTMF_KEY1 0x00000800
-#define CODSP_INTREG_DTMF_KEY0 0x00000400
-#define CODSP_INTREG_UTDR_OK 0x00000200
-#define CODSP_INTREG_UTDX_OK 0x00000100
-#define CODSP_INTREG_EDSP_FAIL 0x00000080
-#define CODSP_INTREG_CIS_BOF 0x00000008
-#define CODSP_INTREG_CIS_BUF 0x00000004
-#define CODSP_INTREG_CIS_REQ 0x00000002
-#define CODSP_INTREG_CIS_ACT 0x00000001
-
-/************************************************/
-
-/* ======== SOP REG ADDRESSES =======*/
-
-#define REVISION_ADDR 0x00
-#define PCMC1_ADDR 0x05
-#define XCR_ADDR 0x06
-#define INTREG1_ADDR 0x07
-#define INTREG2_ADDR 0x08
-#define INTREG3_ADDR 0x09
-#define INTREG4_ADDR 0x0A
-#define LMRES1_ADDR 0x0D
-#define MASK_ADDR 0x11
-#define IOCTL3_ADDR 0x14
-#define BCR1_ADDR 0x15
-#define BCR2_ADDR 0x16
-#define BCR3_ADDR 0x17
-#define BCR4_ADDR 0x18
-#define BCR5_ADDR 0x19
-#define DSCR_ADDR 0x1A
-#define LMCR1_ADDR 0x1C
-#define LMCR2_ADDR 0x1D
-#define LMCR3_ADDR 0x1E
-#define OFR1_ADDR 0x1F
-#define PCMR1_ADDR 0x21
-#define PCMX1_ADDR 0x25
-#define TSTR3_ADDR 0x2B
-#define TSTR4_ADDR 0x2C
-#define TSTR5_ADDR 0x2D
-
-/* ========= POP REG ADDRESSES ========*/
-
-#define CIS_DAT_ADDR 0x00
-
-#define LEC_LEN_ADDR 0x3A
-#define LEC_POWR_ADDR 0x3B
-#define LEC_DELP_ADDR 0x3C
-#define LEC_DELQ_ADDR 0x3D
-#define LEC_GAIN_XI_ADDR 0x3E
-#define LEC_GAIN_RI_ADDR 0x3F
-#define LEC_GAIN_XO_ADDR 0x40
-#define LEC_RES_1_ADDR 0x41
-#define LEC_RES_2_ADDR 0x42
-
-#define NLP_POW_LPF_ADDR 0x30
-#define NLP_POW_LPS_ADDR 0x31
-#define NLP_BN_LEV_X_ADDR 0x32
-#define NLP_BN_LEV_R_ADDR 0x33
-#define NLP_BN_INC_ADDR 0x34
-#define NLP_BN_DEC_ADDR 0x35
-#define NLP_BN_MAX_ADDR 0x36
-#define NLP_BN_ADJ_ADDR 0x37
-#define NLP_RE_MIN_ERLL_ADDR 0x38
-#define NLP_RE_EST_ERLL_ADDR 0x39
-#define NLP_SD_LEV_X_ADDR 0x3A
-#define NLP_SD_LEV_R_ADDR 0x3B
-#define NLP_SD_LEV_BN_ADDR 0x3C
-#define NLP_SD_LEV_RE_ADDR 0x3D
-#define NLP_SD_OT_DT_ADDR 0x3E
-#define NLP_ERL_LIN_LP_ADDR 0x3F
-#define NLP_ERL_LEC_LP_ADDR 0x40
-#define NLP_CT_LEV_RE_ADDR 0x41
-#define NLP_CTRL_ADDR 0x42
-
-#define UTD_CF_H_ADDR 0x4B
-#define UTD_CF_L_ADDR 0x4C
-#define UTD_BW_H_ADDR 0x4D
-#define UTD_BW_L_ADDR 0x4E
-#define UTD_NLEV_ADDR 0x4F
-#define UTD_SLEV_H_ADDR 0x50
-#define UTD_SLEV_L_ADDR 0x51
-#define UTD_DELT_ADDR 0x52
-#define UTD_RBRK_ADDR 0x53
-#define UTD_RTIME_ADDR 0x54
-#define UTD_EBRK_ADDR 0x55
-#define UTD_ETIME_ADDR 0x56
-
-#define DTMF_LEV_ADDR 0x30
-#define DTMF_TWI_ADDR 0x31
-#define DTMF_NCF_H_ADDR 0x32
-#define DTMF_NCF_L_ADDR 0x33
-#define DTMF_NBW_H_ADDR 0x34
-#define DTMF_NBW_L_ADDR 0x35
-#define DTMF_GAIN_ADDR 0x36
-#define DTMF_RES1_ADDR 0x37
-#define DTMF_RES2_ADDR 0x38
-#define DTMF_RES3_ADDR 0x39
-
-#define CIS_LEV_H_ADDR 0x43
-#define CIS_LEV_L_ADDR 0x44
-#define CIS_BRS_ADDR 0x45
-#define CIS_SEIZ_H_ADDR 0x46
-#define CIS_SEIZ_L_ADDR 0x47
-#define CIS_MARK_H_ADDR 0x48
-#define CIS_MARK_L_ADDR 0x49
-#define CIS_LEC_MODE_ADDR 0x4A
-
-/*=====================================*/
-
-#define HOOK_LEV_ACT_START_ADDR 0x89
-#define RO1_START_ADDR 0x70
-#define RO2_START_ADDR 0x95
-#define RO3_START_ADDR 0x96
-
-#define TG1_FREQ_START_ADDR 0x38
-#define TG1_GAIN_START_ADDR 0x39
-#define TG1_BANDPASS_START_ADDR 0x3B
-#define TG1_BANDPASS_END_ADDR 0x3D
-
-#define TG2_FREQ_START_ADDR 0x40
-#define TG2_GAIN_START_ADDR 0x41
-#define TG2_BANDPASS_START_ADDR 0x43
-#define TG2_BANDPASS_END_ADDR 0x45
-
-/*====================================*/
-
-#define PCM_HW_B 0x80
-#define PCM_HW_A 0x00
-#define PCM_TIME_SLOT_0 0x00 /* Byte 0 of PCM Frame (by default is assigned to channel A ) */
-#define PCM_TIME_SLOT_1 0x01 /* Byte 1 of PCM Frame (by default is assigned to channel B ) */
-#define PCM_TIME_SLOT_4 0x04 /* Byte 4 of PCM Frame (Corresponds to B1 of the Second GCI ) */
-
-#define RX_LEV_ADDR 0x28
-#define TX_LEV_ADDR 0x30
-#define Ik1_ADDR 0x83
-
-#define AR_ROW 3 /* Is the row (AR Params) of the ac_Coeff array in SMS_CODEC_Defaults struct */
-#define AX_ROW 6 /* Is the row (AX Params) of the ac_Coeff array in SMS_CODEC_Defaults struct */
-#define DCF_ROW 0 /* Is the row (DCF Params) of the dc_Coeff array in SMS_CODEC_Defaults struct */
-
-/* Mark the start byte of Duslic parameters that we use with configurator */
-#define Ik1_START_BYTE 3
-#define RX_LEV_START_BYTE 0
-#define TX_LEV_START_BYTE 0
-
-/************************************************/
-
-#define INTREG4_CIS_ACT (1 << 0)
-
-#define BCR1_SLEEP 0x20
-#define BCR1_REVPOL 0x10
-#define BCR1_ACTR 0x08
-#define BCR1_ACTL 0x04
-#define BCR1_SLIC_MASK 0x03
-
-#define BCR2_HARD_POL_REV 0x40
-#define BCR2_TTX 0x20
-#define BCR2_TTX_12K 0x10
-#define BCR2_HIMAN 0x08
-#define BCR2_PDOT 0x01
-
-#define BCR3_PCMX_EN (1 << 4)
-
-#define BCR5_DTMF_EN (1 << 0)
-#define BCR5_DTMF_SRC (1 << 1)
-#define BCR5_LEC_EN (1 << 2)
-#define BCR5_LEC_OUT (1 << 3)
-#define BCR5_CIS_EN (1 << 4)
-#define BCR5_CIS_AUTO (1 << 5)
-#define BCR5_UTDX_EN (1 << 6)
-#define BCR5_UTDR_EN (1 << 7)
-
-#define DSCR_TG1_EN (1 << 0)
-#define DSCR_TG2_EN (1 << 1)
-#define DSCR_PTG (1 << 2)
-#define DSCR_COR8 (1 << 3)
-#define DSCR_DG_KEY(x) (((x) & 0x0F) << 4)
-
-#define CIS_LEC_MODE_CIS_V23 (1 << 0)
-#define CIS_LEC_MODE_CIS_FRM (1 << 1)
-#define CIS_LEC_MODE_NLP_EN (1 << 2)
-#define CIS_LEC_MODE_UTDR_SUM (1 << 4)
-#define CIS_LEC_MODE_UTDX_SUM (1 << 5)
-#define CIS_LEC_MODE_LEC_FREEZE (1 << 6)
-#define CIS_LEC_MODE_LEC_ADAPT (1 << 7)
-
-#define TSTR4_COR_64 (1 << 5)
-
-#define TSTR3_AC_DLB_8K (1 << 2)
-#define TSTR3_AC_DLB_32K (1 << 3)
-#define TSTR3_AC_DLB_4M (1 << 5)
-
-
-#define LMCR1_TEST_EN (1 << 7)
-#define LMCR1_LM_EN (1 << 6)
-#define LMCR1_LM_THM (1 << 5)
-#define LMCR1_LM_ONCE (1 << 2)
-#define LMCR1_LM_MASK (1 << 1)
-
-#define LMCR2_LM_RECT (1 << 5)
-#define LMCR2_LM_SEL_VDD 0x0D
-#define LMCR2_LM_SEL_IO3 0x0A
-#define LMCR2_LM_SEL_IO4 0x0B
-#define LMCR2_LM_SEL_IO4_MINUS_IO3 0x0F
-
-#define LMCR3_RTR_SEL (1 << 6)
-
-#define LMCR3_RNG_OFFSET_NONE 0x00
-#define LMCR3_RNG_OFFSET_1 0x01
-#define LMCR3_RNG_OFFSET_2 0x02
-#define LMCR3_RNG_OFFSET_3 0x03
-
-#define TSTR5_DC_HOLD (1 << 3)
-
-/************************************************/
-
-#define TARGET_ONHOOK_BATH_x100 4600 /* 46.0 Volt */
-#define TARGET_ONHOOK_BATL_x100 2500 /* 25.0 Volt */
-#define TARGET_V_DIVIDER_RATIO_x100 21376L /* (R1+R2)/R2 = 213.76 */
-#define DIVIDER_RATIO_ACCURx100 (22 * 100)
-#define V_AD_x10000 10834L /* VAD = 1.0834 */
-#define TARGET_VDDx100 330 /* VDD = 3.3 * 10 */
-#define VDD_MAX_DIFFx100 20 /* VDD Accur = 0.2*100 */
-
-#define RMS_MULTIPLIERx100 111 /* pi/(2xsqrt(2)) = 1.11*/
-#define K_INTDC_RECT_ON 4 /* When Rectifier is ON this value is necessary(2^4) */
-#define K_INTDC_RECT_OFF 2 /* 2^2 */
-#define RNG_FREQ 25
-#define SAMPLING_FREQ (2000L)
-#define N_SAMPLES (SAMPLING_FREQ/RNG_FREQ) /* for Ring Freq =25Hz (40ms Integration Period)[Sampling rate 2KHz -->1 Sample every 500us] */
-#define HOOK_THRESH_RING_START_ADDR 0x8B
-#define RING_PARAMS_START_ADDR 0x70
-
-#define V_OUT_BATH_MAX_DIFFx100 300 /* 3.0 x100 */
-#define V_OUT_BATL_MAX_DIFFx100 400 /* 4.0 x100 */
-#define MAX_V_RING_MEANx100 50
-#define TARGET_V_RING_RMSx100 2720
-#define V_RMS_RING_MAX_DIFFx100 250
-
-#define LM_OK_SRC_IRG_2 (1 << 4)
-
-/************************************************/
-
-#define PORTB (((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbdat)
-#define PORTC (((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat)
-#define PORTD (((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pddat)
-
-#define _PORTD_SET(mask, state) \
- do { \
- if (state) \
- PORTD |= mask; \
- else \
- PORTD &= ~mask; \
- } while (0)
-
-#define _PORTB_SET(mask, state) \
- do { \
- if (state) \
- PORTB |= mask; \
- else \
- PORTB &= ~mask; \
- } while (0)
-
-#define _PORTB_TGL(mask) do { PORTB ^= mask; } while (0)
-#define _PORTB_GET(mask) (!!(PORTB & mask))
-
-#define _PORTC_GET(mask) (!!(PORTC & mask))
-
-/* port B */
-#define SPI_RXD (1 << (31 - 28))
-#define SPI_TXD (1 << (31 - 29))
-#define SPI_CLK (1 << (31 - 30))
-
-/* port C */
-#define COM_HOOK1 (1 << (15 - 9))
-#define COM_HOOK2 (1 << (15 - 10))
-
-#ifndef CONFIG_NETTA_SWAPHOOK
-
-#define COM_HOOK3 (1 << (15 - 11))
-#define COM_HOOK4 (1 << (15 - 12))
-
-#else
-
-#define COM_HOOK3 (1 << (15 - 12))
-#define COM_HOOK4 (1 << (15 - 11))
-
-#endif
-
-/* port D */
-#define SPIENC1 (1 << (15 - 9))
-#define SPIENC2 (1 << (15 - 10))
-#define SPIENC3 (1 << (15 - 11))
-#define SPIENC4 (1 << (15 - 14))
-
-#define SPI_DELAY() udelay(1)
-
-static inline unsigned int __SPI_Transfer(unsigned int tx)
-{
- unsigned int rx;
- int b;
-
- rx = 0; b = 8;
- while (--b >= 0) {
- _PORTB_SET(SPI_TXD, tx & 0x80);
- tx <<= 1;
- _PORTB_TGL(SPI_CLK);
- SPI_DELAY();
- rx <<= 1;
- rx |= _PORTB_GET(SPI_RXD);
- _PORTB_TGL(SPI_CLK);
- SPI_DELAY();
- }
-
- return rx;
-}
-
-static const char *codsp_dtmf_map = "D1234567890*#ABC";
-
-static const int spienc_mask_tab[4] = { SPIENC1, SPIENC2, SPIENC3, SPIENC4 };
-static const int com_hook_mask_tab[4] = { COM_HOOK1, COM_HOOK2, COM_HOOK3, COM_HOOK4 };
-
-static unsigned int codsp_send(int duslic_id, const unsigned char *cmd, int cmdlen, unsigned char *res, int reslen)
-{
- unsigned int rx;
- int i;
-
- /* just some sanity checks */
- if (cmd == 0 || cmdlen < 0)
- return -1;
-
- _PORTD_SET(spienc_mask_tab[duslic_id], 0);
-
- /* first 2 bytes are without response */
- i = 2;
- while (i-- > 0 && cmdlen-- > 0)
- __SPI_Transfer(*cmd++);
-
- while (cmdlen-- > 0) {
- rx = __SPI_Transfer(*cmd++);
- if (res != 0 && reslen-- > 0)
- *res++ = (unsigned char)rx;
- }
- if (res != 0) {
- while (reslen-- > 0)
- *res++ = __SPI_Transfer(0xFF);
- }
-
- _PORTD_SET(spienc_mask_tab[duslic_id], 1);
-
- return 0;
-}
-
-/****************************************************************************/
-
-void codsp_set_ciop_m(int duslic_id, int channel, unsigned char m)
-{
- unsigned char cmd = CODSP_WR | CODSP_ADR(channel) | CODSP_M(m);
- codsp_send(duslic_id, &cmd, 1, 0, 0);
-}
-
-void codsp_reset_chip(int duslic_id)
-{
- static const unsigned char cmd = CODSP_WR | CODSP_OP | CODSP_CMD_SOFT_RESET;
- codsp_send(duslic_id, &cmd, 1, 0, 0);
-}
-
-void codsp_reset_channel(int duslic_id, int channel)
-{
- unsigned char cmd = CODSP_WR | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_RESET_CH;
- codsp_send(duslic_id, &cmd, 1, 0, 0);
-}
-
-void codsp_resync_channel(int duslic_id, int channel)
-{
- unsigned char cmd = CODSP_WR | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_RESYNC;
- codsp_send(duslic_id, &cmd, 1, 0, 0);
-}
-
-/****************************************************************************/
-
-void codsp_write_sop_char(int duslic_id, int channel, unsigned char regno, unsigned char val)
-{
- unsigned char cmd[3];
-
- cmd[0] = CODSP_WR | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_SOP;
- cmd[1] = regno;
- cmd[2] = val;
-
- codsp_send(duslic_id, cmd, 3, 0, 0);
-}
-
-void codsp_write_sop_short(int duslic_id, int channel, unsigned char regno, unsigned short val)
-{
- unsigned char cmd[4];
-
- cmd[0] = CODSP_WR | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_SOP;
- cmd[1] = regno;
- cmd[2] = (unsigned char)(val >> 8);
- cmd[3] = (unsigned char)val;
-
- codsp_send(duslic_id, cmd, 4, 0, 0);
-}
-
-void codsp_write_sop_int(int duslic_id, int channel, unsigned char regno, unsigned int val)
-{
- unsigned char cmd[5];
-
- cmd[0] = CODSP_WR | CODSP_ADR(channel) | CODSP_CMD_SOP;
- cmd[1] = regno;
- cmd[2] = (unsigned char)(val >> 24);
- cmd[3] = (unsigned char)(val >> 16);
- cmd[4] = (unsigned char)(val >> 8);
- cmd[5] = (unsigned char)val;
-
- codsp_send(duslic_id, cmd, 6, 0, 0);
-}
-
-unsigned char codsp_read_sop_char(int duslic_id, int channel, unsigned char regno)
-{
- unsigned char cmd[3];
- unsigned char res[2];
-
- cmd[0] = CODSP_RD | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_SOP;
- cmd[1] = regno;
-
- codsp_send(duslic_id, cmd, 2, res, 2);
-
- return res[1];
-}
-
-unsigned short codsp_read_sop_short(int duslic_id, int channel, unsigned char regno)
-{
- unsigned char cmd[2];
- unsigned char res[3];
-
- cmd[0] = CODSP_RD | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_SOP;
- cmd[1] = regno;
-
- codsp_send(duslic_id, cmd, 2, res, 3);
-
- return ((unsigned short)res[1] << 8) | res[2];
-}
-
-unsigned int codsp_read_sop_int(int duslic_id, int channel, unsigned char regno)
-{
- unsigned char cmd[2];
- unsigned char res[5];
-
- cmd[0] = CODSP_RD | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_SOP;
- cmd[1] = regno;
-
- codsp_send(duslic_id, cmd, 2, res, 5);
-
- return ((unsigned int)res[1] << 24) | ((unsigned int)res[2] << 16) | ((unsigned int)res[3] << 8) | res[4];
-}
-
-/****************************************************************************/
-
-void codsp_write_cop_block(int duslic_id, int channel, unsigned char addr, const unsigned char *block)
-{
- unsigned char cmd[10];
-
- cmd[0] = CODSP_WR | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_COP;
- cmd[1] = addr;
- memcpy(cmd + 2, block, 8);
- codsp_send(duslic_id, cmd, 10, 0, 0);
-}
-
-void codsp_write_cop_char(int duslic_id, int channel, unsigned char addr, unsigned char val)
-{
- unsigned char cmd[3];
-
- cmd[0] = CODSP_WR | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_COP;
- cmd[1] = addr;
- cmd[2] = val;
- codsp_send(duslic_id, cmd, 3, 0, 0);
-}
-
-void codsp_write_cop_short(int duslic_id, int channel, unsigned char addr, unsigned short val)
-{
- unsigned char cmd[3];
-
- cmd[0] = CODSP_WR | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_COP;
- cmd[1] = addr;
- cmd[2] = (unsigned char)(val >> 8);
- cmd[3] = (unsigned char)val;
-
- codsp_send(duslic_id, cmd, 4, 0, 0);
-}
-
-void codsp_read_cop_block(int duslic_id, int channel, unsigned char addr, unsigned char *block)
-{
- unsigned char cmd[2];
- unsigned char res[9];
-
- cmd[0] = CODSP_RD | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_COP;
- cmd[1] = addr;
- codsp_send(duslic_id, cmd, 2, res, 9);
- memcpy(block, res + 1, 8);
-}
-
-unsigned char codsp_read_cop_char(int duslic_id, int channel, unsigned char addr)
-{
- unsigned char cmd[2];
- unsigned char res[2];
-
- cmd[0] = CODSP_RD | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_COP;
- cmd[1] = addr;
- codsp_send(duslic_id, cmd, 2, res, 2);
- return res[1];
-}
-
-unsigned short codsp_read_cop_short(int duslic_id, int channel, unsigned char addr)
-{
- unsigned char cmd[2];
- unsigned char res[3];
-
- cmd[0] = CODSP_RD | CODSP_OP | CODSP_ADR(channel) | CODSP_CMD_COP;
- cmd[1] = addr;
-
- codsp_send(duslic_id, cmd, 2, res, 3);
-
- return ((unsigned short)res[1] << 8) | res[2];
-}
-
-/****************************************************************************/
-
-#define MAX_POP_BLOCK 50
-
-void codsp_write_pop_block (int duslic_id, int channel, unsigned char addr,
- const unsigned char *block, int len)
-{
- unsigned char cmd[2 + MAX_POP_BLOCK];
-
- if (len > MAX_POP_BLOCK) /* truncate */
- len = MAX_POP_BLOCK;
-
- cmd[0] = CODSP_WR | CODSP_OP | CODSP_ADR (channel) | CODSP_CMD_POP;
- cmd[1] = addr;
- memcpy (cmd + 2, block, len);
- codsp_send (duslic_id, cmd, 2 + len, 0, 0);
-}
-
-void codsp_write_pop_char (int duslic_id, int channel, unsigned char regno,
- unsigned char val)
-{
- unsigned char cmd[3];
-
- cmd[0] = CODSP_WR | CODSP_OP | CODSP_ADR (channel) | CODSP_CMD_POP;
- cmd[1] = regno;
- cmd[2] = val;
-
- codsp_send (duslic_id, cmd, 3, 0, 0);
-}
-
-void codsp_write_pop_short (int duslic_id, int channel, unsigned char regno,
- unsigned short val)
-{
- unsigned char cmd[4];
-
- cmd[0] = CODSP_WR | CODSP_OP | CODSP_ADR (channel) | CODSP_CMD_POP;
- cmd[1] = regno;
- cmd[2] = (unsigned char) (val >> 8);
- cmd[3] = (unsigned char) val;
-
- codsp_send (duslic_id, cmd, 4, 0, 0);
-}
-
-void codsp_write_pop_int (int duslic_id, int channel, unsigned char regno,
- unsigned int val)
-{
- unsigned char cmd[5];
-
- cmd[0] = CODSP_WR | CODSP_ADR (channel) | CODSP_CMD_POP;
- cmd[1] = regno;
- cmd[2] = (unsigned char) (val >> 24);
- cmd[3] = (unsigned char) (val >> 16);
- cmd[4] = (unsigned char) (val >> 8);
- cmd[5] = (unsigned char) val;
-
- codsp_send (duslic_id, cmd, 6, 0, 0);
-}
-
-unsigned char codsp_read_pop_char (int duslic_id, int channel,
- unsigned char regno)
-{
- unsigned char cmd[3];
- unsigned char res[2];
-
- cmd[0] = CODSP_RD | CODSP_OP | CODSP_ADR (channel) | CODSP_CMD_POP;
- cmd[1] = regno;
-
- codsp_send (duslic_id, cmd, 2, res, 2);
-
- return res[1];
-}
-
-unsigned short codsp_read_pop_short (int duslic_id, int channel,
- unsigned char regno)
-{
- unsigned char cmd[2];
- unsigned char res[3];
-
- cmd[0] = CODSP_RD | CODSP_OP | CODSP_ADR (channel) | CODSP_CMD_POP;
- cmd[1] = regno;
-
- codsp_send (duslic_id, cmd, 2, res, 3);
-
- return ((unsigned short) res[1] << 8) | res[2];
-}
-
-unsigned int codsp_read_pop_int (int duslic_id, int channel,
- unsigned char regno)
-{
- unsigned char cmd[2];
- unsigned char res[5];
-
- cmd[0] = CODSP_RD | CODSP_OP | CODSP_ADR (channel) | CODSP_CMD_POP;
- cmd[1] = regno;
-
- codsp_send (duslic_id, cmd, 2, res, 5);
-
- return (((unsigned int) res[1] << 24) |
- ((unsigned int) res[2] << 16) |
- ((unsigned int) res[3] << 8) |
- res[4] );
-}
-/****************************************************************************/
-
-struct _coeffs {
- unsigned char addr;
- unsigned char values[8];
-};
-
-struct _coeffs ac_coeffs[11] = {
- { 0x60, {0xAD,0xDA,0xB5,0x9B,0xC7,0x2A,0x9D,0x00} }, /* 0x60 IM-Filter part 1 */
- { 0x68, {0x10,0x00,0xA9,0x82,0x0D,0x77,0x0A,0x00} }, /* 0x68 IM-Filter part 2 */
- { 0x18, {0x08,0xC0,0xD2,0xAB,0xA5,0xE2,0xAB,0x07} }, /* 0x18 FRR-Filter */
- { 0x28, {0x44,0x93,0xF5,0x92,0x88,0x00,0x00,0x00} }, /* 0x28 AR-Filter */
- { 0x48, {0x96,0x38,0x29,0x96,0xC9,0x2B,0x8B,0x00} }, /* 0x48 LPR-Filter */
- { 0x20, {0x08,0xB0,0xDA,0x9D,0xA7,0xFA,0x93,0x06} }, /* 0x20 FRX-Filter */
- { 0x30, {0xBA,0xAC,0x00,0x01,0x85,0x50,0xC0,0x1A} }, /* 0x30 AX-Filter */
- { 0x50, {0x96,0x38,0x29,0xF5,0xFA,0x2B,0x8B,0x00} }, /* 0x50 LPX-Filter */
- { 0x00, {0x00,0x08,0x08,0x81,0x00,0x80,0x00,0x08} }, /* 0x00 TH-Filter part 1 */
- { 0x08, {0x81,0x00,0x80,0x00,0xD7,0x33,0xBA,0x01} }, /* 0x08 TH-Filter part 2 */
- { 0x10, {0xB3,0x6C,0xDC,0xA3,0xA4,0xE5,0x88,0x00} } /* 0x10 TH-Filter part 3 */
-};
-
-struct _coeffs ac_coeffs_0dB[11] = {
- { 0x60, {0xAC,0x2A,0xB5,0x9A,0xB7,0x2A,0x9D,0x00} },
- { 0x68, {0x10,0x00,0xA9,0x82,0x0D,0x83,0x0A,0x00} },
- { 0x18, {0x08,0x20,0xD4,0xA4,0x65,0xEE,0x92,0x07} },
- { 0x28, {0x2B,0xAB,0x36,0xA5,0x88,0x00,0x00,0x00} },
- { 0x48, {0xAB,0xE9,0x4E,0x32,0xAB,0x25,0xA5,0x03} },
- { 0x20, {0x08,0x20,0xDB,0x9C,0xA7,0xFA,0xB4,0x07} },
- { 0x30, {0xF3,0x10,0x07,0x60,0x85,0x40,0xC0,0x1A} },
- { 0x50, {0x96,0x38,0x29,0x97,0x39,0x19,0x8B,0x00} },
- { 0x00, {0x00,0x08,0x08,0x81,0x00,0x80,0x00,0x08} },
- { 0x08, {0x81,0x00,0x80,0x00,0x47,0x3C,0xD2,0x01} },
- { 0x10, {0x62,0xDB,0x4A,0x87,0x73,0x28,0x88,0x00} }
-};
-
-struct _coeffs dc_coeffs[9] = {
- { 0x80, {0x25,0x59,0x9C,0x23,0x24,0x23,0x32,0x1C} }, /* 0x80 DC-Parameter */
- { 0x70, {0x90,0x30,0x1B,0xC0,0x33,0x43,0xAC,0x02} }, /* 0x70 Ringing */
- { 0x90, {0x3F,0xC3,0x2E,0x3A,0x80,0x90,0x00,0x09} }, /* 0x90 LP-Filters */
- { 0x88, {0xAF,0x80,0x27,0x7B,0x01,0x4C,0x7B,0x02} }, /* 0x88 Hook Levels */
- { 0x78, {0x00,0xC0,0x6D,0x7A,0xB3,0x78,0x89,0x00} }, /* 0x78 Ramp Generator */
- { 0x58, {0xA5,0x44,0x34,0xDB,0x0E,0xA2,0x2A,0x00} }, /* 0x58 TTX */
- { 0x38, {0x33,0x49,0x9A,0x65,0xBB,0x00,0x00,0x00} }, /* 0x38 TG1 */
- { 0x40, {0x33,0x49,0x9A,0x65,0xBB,0x00,0x00,0x00} }, /* 0x40 TG2 */
- { 0x98, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} } /* 0x98 Reserved */
-};
-
-void program_coeffs(int duslic_id, int channel, struct _coeffs *coeffs, int tab_size)
-{
- int i;
-
- for (i = 0; i < tab_size; i++)
- codsp_write_cop_block(duslic_id, channel, coeffs[i].addr, coeffs[i].values);
-}
-
-#define SS_OPEN_CIRCUIT 0
-#define SS_RING_PAUSE 1
-#define SS_ACTIVE 2
-#define SS_ACTIVE_HIGH 3
-#define SS_ACTIVE_RING 4
-#define SS_RINGING 5
-#define SS_ACTIVE_WITH_METERING 6
-#define SS_ONHOOKTRNSM 7
-#define SS_STANDBY 8
-#define SS_MAX 8
-
-static void codsp_set_slic(int duslic_id, int channel, int state)
-{
- unsigned char v;
-
- v = codsp_read_sop_char(duslic_id, channel, BCR1_ADDR);
-
- switch (state) {
-
- case SS_ACTIVE:
- codsp_write_sop_char(duslic_id, channel, BCR1_ADDR, (v & ~BCR1_ACTR) | BCR1_ACTL);
- codsp_set_ciop_m(duslic_id, channel, CODSP_M_ANY_ACT);
- break;
-
- case SS_ACTIVE_HIGH:
- codsp_write_sop_char(duslic_id, channel, BCR1_ADDR, v & ~(BCR1_ACTR | BCR1_ACTL));
- codsp_set_ciop_m(duslic_id, channel, CODSP_M_ANY_ACT);
- break;
-
- case SS_ACTIVE_RING:
- case SS_ONHOOKTRNSM:
- codsp_write_sop_char(duslic_id, channel, BCR1_ADDR, (v & ~BCR1_ACTL) | BCR1_ACTR);
- codsp_set_ciop_m(duslic_id, channel, CODSP_M_ANY_ACT);
- break;
-
- case SS_STANDBY:
- codsp_write_sop_char(duslic_id, channel, BCR1_ADDR, v & ~(BCR1_ACTL | BCR1_ACTR));
- codsp_set_ciop_m(duslic_id, channel, CODSP_M_SLEEP_PWRDN);
- break;
-
- case SS_OPEN_CIRCUIT:
- codsp_set_ciop_m(duslic_id, channel, CODSP_M_PWRDN_HIZ);
- break;
-
- case SS_RINGING:
- codsp_set_ciop_m(duslic_id, channel, CODSP_M_RING);
- break;
-
- case SS_RING_PAUSE:
- codsp_set_ciop_m(duslic_id, channel, CODSP_M_RING_PAUSE);
- break;
- }
-}
-
-const unsigned char Ring_Sin_28Vrms_25Hz[8] = { 0x90, 0x30, 0x1B, 0xC0, 0xC3, 0x9C, 0x88, 0x00 };
-const unsigned char Max_HookRingTh[3] = { 0x7B, 0x41, 0x62 };
-
-void retrieve_slic_state(int slic_id)
-{
- int duslic_id = slic_id >> 1;
- int channel = slic_id & 1;
-
- /* Retrieve the state of the SLICs */
- codsp_write_sop_char(duslic_id, channel, LMCR2_ADDR, 0x00);
-
- /* wait at least 1000us to clear the LM_OK and 500us to set the LM_OK ==> for the LM to make the first Measurement */
- udelay(10000);
-
- codsp_write_sop_char(duslic_id, channel, LMCR1_ADDR, LMCR1_LM_THM | LMCR1_LM_MASK);
- codsp_set_slic(duslic_id, channel, SS_ACTIVE_HIGH);
- codsp_write_sop_char(duslic_id, channel, LMCR3_ADDR, 0x40);
-
- /* Program Default Hook Ring thresholds */
- codsp_write_cop_block(duslic_id, channel, dc_coeffs[1].addr, dc_coeffs[1].values);
-
- /* Now program Hook Threshold while Ring and ac RingTrip to max values */
- codsp_write_cop_block(duslic_id, channel, dc_coeffs[3].addr, dc_coeffs[3].values);
-
- codsp_write_sop_short(duslic_id, channel, OFR1_ADDR, 0x0000);
-
- udelay(40000);
-}
-
-int wait_level_metering_finish(int duslic_id, int channel)
-{
- int cnt;
-
- for (cnt = 0; cnt < 1000 &&
- (codsp_read_sop_char(duslic_id, channel, INTREG2_ADDR) & LM_OK_SRC_IRG_2) == 0; cnt++) { }
-
- return cnt != 1000;
-}
-
-int measure_on_hook_voltages(int slic_id, long *vdd,
- long *v_oh_H, long *v_oh_L, long *ring_mean_v, long *ring_rms_v)
-{
- short LM_Result, Offset_Compensation; /* Signed 16 bit */
- long int VDD, VDD_diff, V_in, V_out, Divider_Ratio, Vout_diff ;
- unsigned char err_mask = 0;
- int duslic_id = slic_id >> 1;
- int channel = slic_id & 1;
- int i;
-
- /* measure VDD */
- /* Now select the VDD level Measurement (but first of all Hold the DC characteristic) */
- codsp_write_sop_char(duslic_id, channel, TSTR5_ADDR, TSTR5_DC_HOLD);
-
- /* Activate Test Mode ==> To Enable DC Hold !!! */
- /* (else the LMRES is treated as Feeding Current and the Feeding voltage changes */
- /* imediatelly (after 500us when the LMRES Registers is updated for the first time after selection of (IO4-IO3) measurement !!!!))*/
- codsp_write_sop_char(duslic_id, channel, LMCR1_ADDR, LMCR1_TEST_EN | LMCR1_LM_THM | LMCR1_LM_MASK);
-
- udelay(40000);
-
- /* Now I Can select what to measure by DC Level Meter (select IO4-IO3) */
- codsp_write_sop_char(duslic_id, channel, LMCR2_ADDR, LMCR2_LM_SEL_VDD);
-
- /* wait at least 1000us to clear the LM_OK and 500us to set the LM_OK ==> for the LM to make the first Measurement */
- udelay(10000);
-
- /* Now Read the LM Result Registers */
- LM_Result = codsp_read_sop_short(duslic_id, channel, LMRES1_ADDR);
- VDD = (-1)*((((long int)LM_Result) * 390L ) >> 15) ; /* VDDx100 */
-
- *vdd = VDD;
-
- VDD_diff = VDD - TARGET_VDDx100;
-
- if (VDD_diff < 0)
- VDD_diff = -VDD_diff;
-
- if (VDD_diff > VDD_MAX_DIFFx100)
- err_mask |= 1;
-
- Divider_Ratio = TARGET_V_DIVIDER_RATIO_x100;
-
- codsp_write_sop_char(duslic_id, channel, LMCR2_ADDR, 0x00);
- codsp_write_sop_char(duslic_id, channel, LMCR1_ADDR, LMCR1_LM_THM | LMCR1_LM_MASK);
-
- codsp_set_slic(duslic_id, channel, SS_ACTIVE_HIGH); /* Go back to ONHOOK Voltage */
-
- udelay(40000);
-
- codsp_write_sop_char(duslic_id, channel,
- LMCR1_ADDR, LMCR1_TEST_EN | LMCR1_LM_THM | LMCR1_LM_MASK);
-
- udelay(40000);
-
- /* Now I Can select what to measure by DC Level Meter (select IO4-IO3) */
- codsp_write_sop_char(duslic_id, channel, LMCR2_ADDR, LMCR2_LM_SEL_IO4_MINUS_IO3);
-
- /* wait at least 1000us to clear the LM_OK and 500us to set the LM_OK ==> for the LM to make the first Measurement */
- udelay(10000);
-
- /* Now Read the LM Result Registers */
- LM_Result = codsp_read_sop_short(duslic_id, channel, LMRES1_ADDR);
- V_in = (-1)* ((((long int)LM_Result) * V_AD_x10000 ) >> 15) ; /* Vin x 10000*/
-
- V_out = (V_in * Divider_Ratio) / 10000L ; /* Vout x100 */
-
- *v_oh_H = V_out;
-
- Vout_diff = V_out - TARGET_ONHOOK_BATH_x100;
-
- if (Vout_diff < 0)
- Vout_diff = -Vout_diff;
-
- if (Vout_diff > V_OUT_BATH_MAX_DIFFx100)
- err_mask |= 2;
-
- codsp_set_slic(duslic_id, channel, SS_ACTIVE); /* Go back to ONHOOK Voltage */
-
- udelay(40000);
-
- /* Now Read the LM Result Registers */
- LM_Result = codsp_read_sop_short(duslic_id, channel, LMRES1_ADDR);
-
- V_in = (-1)* ((((long int)LM_Result) * V_AD_x10000 ) >> 15) ; /* Vin x 10000*/
-
- V_out = (V_in * Divider_Ratio) / 10000L ; /* Vout x100 */
-
- *v_oh_L = V_out;
-
- Vout_diff = V_out - TARGET_ONHOOK_BATL_x100;
-
- if (Vout_diff < 0)
- Vout_diff = -Vout_diff;
-
- if (Vout_diff > V_OUT_BATL_MAX_DIFFx100)
- err_mask |= 4;
-
- /* perform ring tests */
-
- codsp_write_sop_char(duslic_id, channel, LMCR2_ADDR, 0x00);
- codsp_write_sop_char(duslic_id, channel, LMCR1_ADDR, LMCR1_LM_THM | LMCR1_LM_MASK);
-
- udelay(40000);
-
- codsp_write_sop_char(duslic_id, channel, LMCR3_ADDR, LMCR3_RTR_SEL | LMCR3_RNG_OFFSET_NONE);
-
- /* Now program RO1 =0V , Ring Amplitude and frequency and shift factor K = 1 (LMDC=0x0088)*/
- codsp_write_cop_block(duslic_id, channel, RING_PARAMS_START_ADDR, Ring_Sin_28Vrms_25Hz);
-
- /* By Default RO1 is selected when ringing RNG-OFFSET = 00 */
-
- /* Now program Hook Threshold while Ring and ac RingTrip to max values */
- for(i = 0; i < sizeof(Max_HookRingTh); i++)
- codsp_write_cop_char(duslic_id, channel, HOOK_THRESH_RING_START_ADDR + i, Max_HookRingTh[i]);
-
- codsp_write_sop_short(duslic_id, channel, OFR1_ADDR, 0x0000);
-
- codsp_set_slic(duslic_id, channel, SS_RING_PAUSE); /* Start Ringing */
-
- /* select source for the levelmeter to be IO4-IO3 */
- codsp_write_sop_char(duslic_id, channel, LMCR2_ADDR, LMCR2_LM_SEL_IO4_MINUS_IO3);
-
- udelay(40000);
-
- /* Before Enabling Level Meter Programm the apropriate shift factor K_INTDC=(4 if Rectifier Enabled and 2 if Rectifier Disabled) */
- codsp_write_cop_char(duslic_id, channel, RING_PARAMS_START_ADDR + 7, K_INTDC_RECT_OFF);
-
- udelay(10000);
-
- /* Enable LevelMeter to Integrate only once (Rectifier Disabled) */
- codsp_write_sop_char(duslic_id, channel,
- LMCR1_ADDR, LMCR1_LM_THM | LMCR1_LM_MASK | LMCR1_LM_EN | LMCR1_LM_ONCE);
-
- udelay(40000); /* Integration Period == Ring Period = 40ms (for 25Hz Ring) */
-
- if (wait_level_metering_finish(duslic_id, channel)) {
-
- udelay(10000); /* To be sure that Integration Results are Valid wait at least 500us !!! */
-
- /* Now Read the LM Result Registers (Will be valid until LM_EN becomes zero again( after that the Result is updated every 500us) ) */
- Offset_Compensation = codsp_read_sop_short(duslic_id, channel, LMRES1_ADDR);
- Offset_Compensation = (-1) * ((Offset_Compensation * (1 << K_INTDC_RECT_OFF)) / N_SAMPLES);
-
- /* Disable LevelMeter ==> In order to be able to restart Integrator again (for the next integration) */
- codsp_write_sop_char(duslic_id, channel, LMCR1_ADDR, LMCR1_LM_THM | LMCR1_LM_MASK | LMCR1_LM_ONCE);
-
- /* Now programm Integrator Offset Registers !!! */
- codsp_write_sop_short(duslic_id, channel, OFR1_ADDR, Offset_Compensation);
-
- codsp_set_slic(duslic_id, channel, SS_RINGING); /* Start Ringing */
-
- udelay(40000);
-
- /* Reenable Level Meter Integrator (The Result will be valid after Integration Period=Ring Period and until LN_EN become zero again) */
- codsp_write_sop_char(duslic_id, channel,
- LMCR1_ADDR, LMCR1_LM_THM | LMCR1_LM_MASK | LMCR1_LM_EN | LMCR1_LM_ONCE);
-
- udelay(40000); /* Integration Period == Ring Period = 40ms (for 25Hz Ring) */
-
- /* Poll the LM_OK bit to see when Integration Result is Ready */
- if (wait_level_metering_finish(duslic_id, channel)) {
-
- udelay(10000); /* wait at least 500us to be sure that the Integration Result are valid !!! */
-
- /* Now Read the LM Result Registers (They will hold their value until LM_EN become zero again */
- /* ==>After that Result Regs will be updated every 500us !!!) */
- LM_Result = codsp_read_sop_short(duslic_id, channel, LMRES1_ADDR);
- V_in = (-1) * ( ( (((long int)LM_Result) * V_AD_x10000) / N_SAMPLES) >> (15 - K_INTDC_RECT_OFF)) ; /* Vin x 10000*/
-
- V_out = (V_in * Divider_Ratio) / 10000L ; /* Vout x100 */
-
- if (V_out < 0)
- V_out= -V_out;
-
- if (V_out > MAX_V_RING_MEANx100)
- err_mask |= 8;
-
- *ring_mean_v = V_out;
- } else {
- err_mask |= 8;
- *ring_mean_v = 0;
- }
- } else {
- err_mask |= 8;
- *ring_mean_v = 0;
- }
-
- /* Disable LevelMeter ==> In order to be able to restart Integrator again (for the next integration) */
- codsp_write_sop_char(duslic_id, channel, LMCR1_ADDR,
- LMCR1_LM_THM | LMCR1_LM_MASK | LMCR1_LM_ONCE);
- codsp_write_sop_short(duslic_id, channel, OFR1_ADDR, 0x0000);
-
- codsp_set_slic(duslic_id, channel, SS_RING_PAUSE); /* Start Ringing */
-
- /* Now Enable Rectifier */
- /* select source for the levelmeter to be IO4-IO3 */
- codsp_write_sop_char(duslic_id, channel, LMCR2_ADDR,
- LMCR2_LM_SEL_IO4_MINUS_IO3 | LMCR2_LM_RECT);
-
- /* Program the apropriate shift factor K_INTDC (in order to avoid Overflow at Integtation Result !!!) */
- codsp_write_cop_char(duslic_id, channel, RING_PARAMS_START_ADDR + 7, K_INTDC_RECT_ON);
-
- udelay(40000);
-
- /* Reenable Level Meter Integrator (The Result will be valid after Integration Period=Ring Period and until LN_EN become zero again) */
- codsp_write_sop_char(duslic_id, channel, LMCR1_ADDR,
- LMCR1_LM_THM | LMCR1_LM_MASK | LMCR1_LM_EN | LMCR1_LM_ONCE);
-
- udelay(40000);
-
- /* Poll the LM_OK bit to see when Integration Result is Ready */
- if (wait_level_metering_finish(duslic_id, channel)) {
-
- udelay(10000);
-
- /* Now Read the LM Result Registers (They will hold their value until LM_EN become zero again */
- /* ==>After that Result Regs will be updated every 500us !!!) */
- Offset_Compensation = codsp_read_sop_short(duslic_id, channel, LMRES1_ADDR);
- Offset_Compensation = (-1) * ((Offset_Compensation * (1 << K_INTDC_RECT_ON)) / N_SAMPLES);
-
- /* Disable LevelMeter ==> In order to be able to restart Integrator again (for the next integration) */
- codsp_write_sop_char(duslic_id, channel, LMCR1_ADDR, LMCR1_LM_THM | LMCR1_LM_MASK | LMCR1_LM_ONCE);
-
- /* Now programm Integrator Offset Registers !!! */
- codsp_write_sop_short(duslic_id, channel, OFR1_ADDR, Offset_Compensation);
-
- /* Be sure that a Ring is generated !!!! */
- codsp_set_slic(duslic_id, channel, SS_RINGING); /* Start Ringing again */
-
- udelay(40000);
-
- /* Reenable Level Meter Integrator (The Result will be valid after Integration Period=Ring Period and until LN_EN become zero again) */
- codsp_write_sop_char(duslic_id, channel, LMCR1_ADDR,
- LMCR1_LM_THM | LMCR1_LM_MASK | LMCR1_LM_EN | LMCR1_LM_ONCE);
-
- udelay(40000);
-
- /* Poll the LM_OK bit to see when Integration Result is Ready */
- if (wait_level_metering_finish(duslic_id, channel)) {
-
- udelay(10000);
-
- /* Now Read the LM Result Registers (They will hold their value until LM_EN become zero again */
- /* ==>After that Result Regs will be updated every 500us !!!) */
- LM_Result = codsp_read_sop_short(duslic_id, channel, LMRES1_ADDR);
- V_in = (-1) * ( ( (((long int)LM_Result) * V_AD_x10000) / N_SAMPLES) >> (15 - K_INTDC_RECT_ON) ) ; /* Vin x 10000*/
-
- V_out = (((V_in * Divider_Ratio) / 10000L) * RMS_MULTIPLIERx100) / 100 ; /* Vout_RMS x100 */
- if (V_out < 0)
- V_out = -V_out;
-
- Vout_diff = (V_out - TARGET_V_RING_RMSx100);
-
- if (Vout_diff < 0)
- Vout_diff = -Vout_diff;
-
- if (Vout_diff > V_RMS_RING_MAX_DIFFx100)
- err_mask |= 16;
-
- *ring_rms_v = V_out;
- } else {
- err_mask |= 16;
- *ring_rms_v = 0;
- }
- } else {
- err_mask |= 16;
- *ring_rms_v = 0;
- }
- /* Disable LevelMeter ==> In order to be able to restart Integrator again (for the next integration) */
- codsp_write_sop_char(duslic_id, channel, LMCR1_ADDR, LMCR1_LM_THM | LMCR1_LM_MASK);
-
- retrieve_slic_state(slic_id);
-
- return(err_mask);
-}
-
-int test_dtmf(int slic_id)
-{
- unsigned char code;
- unsigned char b;
- unsigned int intreg;
- int duslic_id = slic_id >> 1;
- int channel = slic_id & 1;
-
- for (code = 0; code < 16; code++) {
- b = codsp_read_sop_char(duslic_id, channel, DSCR_ADDR);
- codsp_write_sop_char(duslic_id, channel, DSCR_ADDR,
- (b & ~(DSCR_PTG | DSCR_DG_KEY(15))) | DSCR_DG_KEY(code) | DSCR_TG1_EN | DSCR_TG2_EN);
- udelay(80000);
-
- intreg = codsp_read_sop_int(duslic_id, channel, INTREG1_ADDR);
- if ((intreg & CODSP_INTREG_INT_CH) == 0)
- break;
-
- if ((intreg & CODSP_INTREG_DTMF_OK) == 0 ||
- codsp_dtmf_map[(intreg >> 10) & 15] != codsp_dtmf_map[code])
- break;
-
- b = codsp_read_sop_char(duslic_id, channel, DSCR_ADDR);
- codsp_write_sop_char(duslic_id, channel, DSCR_ADDR,
- b & ~(DSCR_COR8 | DSCR_TG1_EN | DSCR_TG2_EN));
-
- udelay(80000);
-
- intreg = codsp_read_sop_int(duslic_id, channel, INTREG1_ADDR); /* for dtmf_pause irq */
- }
-
- if (code != 16) {
- b = codsp_read_sop_char(duslic_id, channel, DSCR_ADDR); /* stop dtmf */
- codsp_write_sop_char(duslic_id, channel, DSCR_ADDR,
- b & ~(DSCR_COR8 | DSCR_TG1_EN | DSCR_TG2_EN));
- return(1);
- }
-
- return(0);
-}
-
-void data_up_persist_time(int duslic_id, int channel, int time_ms)
-{
- unsigned char b;
-
- b = codsp_read_sop_char(duslic_id, channel, IOCTL3_ADDR);
- b = (b & 0x0F) | ((time_ms & 0x0F) << 4);
- codsp_write_sop_char(duslic_id, channel, IOCTL3_ADDR, b);
-}
-
-static void program_dtmf_params(int duslic_id, int channel)
-{
- unsigned char b;
-
- codsp_write_pop_char(duslic_id, channel, DTMF_LEV_ADDR, 0x10);
- codsp_write_pop_char(duslic_id, channel, DTMF_TWI_ADDR, 0x0C);
- codsp_write_pop_char(duslic_id, channel, DTMF_NCF_H_ADDR, 0x79);
- codsp_write_pop_char(duslic_id, channel, DTMF_NCF_L_ADDR, 0x10);
- codsp_write_pop_char(duslic_id, channel, DTMF_NBW_H_ADDR, 0x02);
- codsp_write_pop_char(duslic_id, channel, DTMF_NBW_L_ADDR, 0xFB);
- codsp_write_pop_char(duslic_id, channel, DTMF_GAIN_ADDR, 0x91);
- codsp_write_pop_char(duslic_id, channel, DTMF_RES1_ADDR, 0x00);
- codsp_write_pop_char(duslic_id, channel, DTMF_RES2_ADDR, 0x00);
- codsp_write_pop_char(duslic_id, channel, DTMF_RES3_ADDR, 0x00);
-
- b = codsp_read_sop_char(duslic_id, channel, BCR5_ADDR);
- codsp_write_sop_char(duslic_id, channel, BCR5_ADDR, b | BCR5_DTMF_EN);
-}
-
-static void codsp_channel_full_reset(int duslic_id, int channel)
-{
-
- program_coeffs(duslic_id, channel, ac_coeffs, sizeof(ac_coeffs) / sizeof(struct _coeffs));
- program_coeffs(duslic_id, channel, dc_coeffs, sizeof(dc_coeffs) / sizeof(struct _coeffs));
-
- /* program basic configuration registers */
- codsp_write_sop_char(duslic_id, channel, BCR1_ADDR, 0x01);
- codsp_write_sop_char(duslic_id, channel, BCR2_ADDR, 0x41);
- codsp_write_sop_char(duslic_id, channel, BCR3_ADDR, 0x43);
- codsp_write_sop_char(duslic_id, channel, BCR4_ADDR, 0x00);
- codsp_write_sop_char(duslic_id, channel, BCR5_ADDR, 0x00);
-
- codsp_write_sop_char(duslic_id, channel, DSCR_ADDR, 0x04); /* PG */
-
- program_dtmf_params(duslic_id, channel);
-
- codsp_write_sop_char(duslic_id, channel, LMCR3_ADDR, 0x40); /* RingTRip_SEL */
-
- data_up_persist_time(duslic_id, channel, 4);
-
- codsp_write_sop_char(duslic_id, channel, MASK_ADDR, 0xFF); /* All interrupts masked */
-
- codsp_set_slic(duslic_id, channel, SS_ACTIVE_HIGH);
-}
-
-static int codsp_chip_full_reset(int duslic_id)
-{
- int i, cnt;
- int intreg[NUM_CHANNELS];
- unsigned char pcm_resync;
- unsigned char revision;
-
- codsp_reset_chip(duslic_id);
-
- udelay(2000);
-
- for (i = 0; i < NUM_CHANNELS; i++)
- intreg[i] = codsp_read_sop_int(duslic_id, i, INTREG1_ADDR);
-
- udelay(1500);
-
- if (_PORTC_GET(com_hook_mask_tab[duslic_id]) == 0) {
- printf("_HOOK(%d) stayed low\n", duslic_id);
- return -1;
- }
-
- for (pcm_resync = 0, i = 0; i < NUM_CHANNELS; i++) {
- if (intreg[i] & CODSP_INTREG_SYNC_FAIL)
- pcm_resync |= 1 << i;
- }
-
- for (cnt = 0; cnt < 5 && pcm_resync; cnt++) {
- for (i = 0; i < NUM_CHANNELS; i++)
- codsp_resync_channel(duslic_id, i);
-
- udelay(2000);
-
- pcm_resync = 0;
-
- for (i = 0; i < NUM_CHANNELS; i++) {
- if (codsp_read_sop_int(duslic_id, i, INTREG1_ADDR) & CODSP_INTREG_SYNC_FAIL)
- pcm_resync |= 1 << i;
- }
- }
-
- if (cnt == 5) {
- printf("PCM_Resync(%u) not completed\n", duslic_id);
- return -2;
- }
-
- revision = codsp_read_sop_char(duslic_id, 0, REVISION_ADDR);
- printf("DuSLIC#%d hardware version %d.%d\r\n", duslic_id, (revision & 0xF0) >> 4, revision & 0x0F);
-
- codsp_write_sop_char(duslic_id, 0, XCR_ADDR, 0x80); /* EDSP_EN */
-
- for (i = 0; i < NUM_CHANNELS; i++) {
- codsp_write_sop_char(duslic_id, i, PCMC1_ADDR, 0x01);
- codsp_channel_full_reset(duslic_id, i);
- }
-
- return 0;
-}
-
-int slic_self_test(int duslic_mask)
-{
- int slic;
- int i;
- int r;
- long vdd, v_oh_H, v_oh_L, ring_mean_v, ring_rms_v;
- const char *err_txt[] = { "VDD", "V_OH_H", "V_OH_L", "V_RING_MEAN", "V_RING_RMS" };
- int error = 0;
-
- for (slic = 0; slic < MAX_SLICS; slic++) { /* voltages self test */
- if (duslic_mask & (1 << (slic >> 1))) {
- r = measure_on_hook_voltages(slic, &vdd,
- &v_oh_H, &v_oh_L, &ring_mean_v, &ring_rms_v);
-
- printf("SLIC %u measured voltages (x100):\n\t"
- "VDD = %ld\tV_OH_H = %ld\tV_OH_L = %ld\tV_RING_MEAN = %ld\tV_RING_RMS = %ld\n",
- slic, vdd, v_oh_H, v_oh_L, ring_mean_v, ring_rms_v);
-
- if (r != 0)
- error |= 1 << slic;
-
- for (i = 0; i < 5; i++)
- if (r & (1 << i))
- printf("\t%s out of range\n", err_txt[i]);
- }
- }
-
- for (slic = 0; slic < MAX_SLICS; slic++) { /* voice path self test */
- if (duslic_mask & (1 << (slic >> 1))) {
- printf("SLIC %u VOICE PATH...CHECKING", slic);
- printf("\rSLIC %u VOICE PATH...%s\n", slic,
- (r = test_dtmf(slic)) != 0 ? "FAILED " : "PASSED ");
-
- if (r != 0)
- error |= 1 << slic;
- }
- }
-
- return(error);
-}
-
-#if defined(CONFIG_NETTA_ISDN)
-
-#define SPIENS1 (1 << (31 - 15))
-#define SPIENS2 (1 << (31 - 19))
-
-static const int spiens_mask_tab[2] = { SPIENS1, SPIENS2 };
-int s_initialized = 0;
-
-static inline unsigned int s_transfer_internal(int s_id, unsigned int address, unsigned int value)
-{
- unsigned int rx, v;
-
- _PORTB_SET(spiens_mask_tab[s_id], 0);
-
- rx = __SPI_Transfer(address);
-
- switch (address & 0xF0) {
- case 0x60: /* write byte register */
- case 0x70:
- rx = __SPI_Transfer(value);
- break;
-
- case 0xE0: /* read R6 register */
- v = __SPI_Transfer(0);
-
- rx = (rx << 8) | v;
-
- break;
-
- case 0xF0: /* read byte register */
- rx = __SPI_Transfer(0);
-
- break;
- }
-
- _PORTB_SET(spiens_mask_tab[s_id], 1);
-
- return rx;
-}
-
-static void s_write_BR(int s_id, unsigned int regno, unsigned int val)
-{
- unsigned int address;
- unsigned int v;
-
- address = 0x70 | (regno & 15);
- val &= 0xff;
-
- v = s_transfer_internal(s_id, address, val);
-}
-
-static void s_write_OR(int s_id, unsigned int regno, unsigned int val)
-{
- unsigned int address;
- unsigned int v;
-
- address = 0x70 | (regno & 15);
- val &= 0xff;
-
- v = s_transfer_internal(s_id, address, val);
-}
-
-static void s_write_NR(int s_id, unsigned int regno, unsigned int val)
-{
- unsigned int address;
- unsigned int v;
-
- address = (regno & 7) << 4;
- val &= 0xf;
-
- v = s_transfer_internal(s_id, address | val, 0x00);
-}
-
-#define BR7_IFR 0x08 /* IDL2 free run */
-#define BR7_ICSLSB 0x04 /* IDL2 clock speed LSB */
-
-#define BR15_OVRL_REG_EN 0x80
-#define OR7_D3VR 0x80 /* disable 3V regulator */
-
-#define OR8_TEME 0x10 /* TE mode enable */
-#define OR8_MME 0x08 /* master mode enable */
-
-void s_initialize(void)
-{
- int s_id;
-
- for (s_id = 0; s_id < 2; s_id++) {
- s_write_BR(s_id, 7, BR7_IFR | BR7_ICSLSB);
- s_write_BR(s_id, 15, BR15_OVRL_REG_EN);
- s_write_OR(s_id, 8, OR8_TEME | OR8_MME);
- s_write_OR(s_id, 7, OR7_D3VR);
- s_write_OR(s_id, 6, 0);
- s_write_BR(s_id, 15, 0);
- s_write_NR(s_id, 3, 0);
- }
-}
-
-#endif
-
-int board_post_codec(int flags)
-{
- int j;
- int r;
- int duslic_mask;
-
- printf("board_post_dsp\n");
-
-#if defined(CONFIG_NETTA_ISDN)
- if (s_initialized == 0) {
- s_initialize();
- s_initialized = 1;
-
- printf("s_initialized\n");
-
- udelay(20000);
- }
-#endif
- duslic_mask = 0;
-
- for (j = 0; j < MAX_DUSLIC; j++) {
- if (codsp_chip_full_reset(j) < 0)
- printf("Error initializing DuSLIC#%d\n", j);
- else
- duslic_mask |= 1 << j;
- }
-
- if (duslic_mask != 0) {
- printf("Testing SLICs...\n");
-
- r = slic_self_test(duslic_mask);
- for (j = 0; j < MAX_SLICS; j++) {
- if (duslic_mask & (1 << (j >> 1)))
- printf("SLIC %u...%s\n", j, r & (1 << j) ? "FAULTY" : "OK");
- }
- }
- printf("DuSLIC self test finished\n");
-
- return 0; /* return -1 on error */
-}
diff --git a/board/netta/config.mk b/board/netta/config.mk
deleted file mode 100644
index 8497ebc812..0000000000
--- a/board/netta/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (C) Copyright 2000-2004
-# 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
-#
-
-#
-# netVia Boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/netta/dsp.c b/board/netta/dsp.c
deleted file mode 100644
index 66e0b85e6c..0000000000
--- a/board/netta/dsp.c
+++ /dev/null
@@ -1,1208 +0,0 @@
-/*
- * Intracom TI6711/TI6412 DSP
- */
-
-#include <common.h>
-#include <post.h>
-
-#include "mpc8xx.h"
-
-struct ram_range {
- u32 start;
- u32 size;
-};
-
-#if defined(CONFIG_NETTA_6412)
-
-static const struct ram_range int_ram[] = {
- { 0x00000000U, 0x00040000U },
-};
-
-static const struct ram_range ext_ram[] = {
- { 0x80000000U, 0x00100000U },
-};
-
-static const struct ram_range ranges[] = {
- { 0x00000000U, 0x00040000U },
- { 0x80000000U, 0x00100000U },
-};
-
-static inline u16 bit_invert(u16 d)
-{
- register u8 i;
- register u16 r;
- register u16 bit;
-
- r = 0;
- for (i = 0; i < 16; i++) {
- bit = d & (1 << i);
- if (bit != 0)
- r |= 1 << (15 - i);
- }
- return r;
-}
-
-#else
-
-static const struct ram_range int_ram[] = {
- { 0x00000000U, 0x00010000U },
-};
-
-static const struct ram_range ext_ram[] = {
- { 0x80000000U, 0x00100000U },
-};
-
-static const struct ram_range ranges[] = {
- { 0x00000000U, 0x00010000U },
- { 0x80000000U, 0x00100000U },
-};
-
-#endif
-
-/*******************************************************************************************************/
-
-static inline int addr_in_int_ram(u32 addr)
-{
- int i;
-
- for (i = 0; i < sizeof(int_ram)/sizeof(int_ram[0]); i++)
- if (addr >= int_ram[i].start && addr < int_ram[i].start + int_ram[i].size)
- return 1;
-
- return 0;
-}
-
-static inline int addr_in_ext_ram(u32 addr)
-{
- int i;
-
- for (i = 0; i < sizeof(ext_ram)/sizeof(ext_ram[0]); i++)
- if (addr >= ext_ram[i].start && addr < ext_ram[i].start + ext_ram[i].size)
- return 1;
-
- return 0;
-}
-
-/*******************************************************************************************************/
-
-#define DSP_HPIC 0x0
-#define DSP_HPIA 0x4
-#define DSP_HPID1 0x8
-#define DSP_HPID2 0xC
-
-static u32 dummy_delay;
-static volatile u32 *ti6711_delay = &dummy_delay;
-
-static inline void dsp_go_slow(void)
-{
- volatile memctl8xx_t *memctl = &((immap_t *)CFG_IMMR)->im_memctl;
-#if defined(CONFIG_NETTA_6412)
- memctl->memc_or6 |= OR_SCY_15_CLK | OR_TRLX;
-#else
- memctl->memc_or2 |= OR_SCY_15_CLK | OR_TRLX;
-#endif
- memctl->memc_or5 |= OR_SCY_15_CLK | OR_TRLX;
-
- ti6711_delay = (u32 *)DUMMY_BASE;
-}
-
-static inline void dsp_go_fast(void)
-{
- volatile memctl8xx_t *memctl = &((immap_t *)CFG_IMMR)->im_memctl;
-#if defined(CONFIG_NETTA_6412)
- memctl->memc_or6 = (memctl->memc_or6 & ~(OR_SCY_15_CLK | OR_TRLX)) | OR_SCY_0_CLK;
-#else
- memctl->memc_or2 = (memctl->memc_or2 & ~(OR_SCY_15_CLK | OR_TRLX)) | OR_SCY_3_CLK;
-#endif
- memctl->memc_or5 = (memctl->memc_or5 & ~(OR_SCY_15_CLK | OR_TRLX)) | OR_SCY_0_CLK;
-
- ti6711_delay = &dummy_delay;
-}
-
-/*******************************************************************************************************/
-
-static inline void dsp_delay(void)
-{
- /* perform ti6711_delay chip select read to have a small delay */
- (void) *(volatile u32 *)ti6711_delay;
-}
-
-static inline u16 dsp_read_hpic(void)
-{
-#if defined(CONFIG_NETTA_6412)
- return bit_invert(*((volatile u16 *)DSP_BASE));
-#else
- return *((volatile u16 *)DSP_BASE);
-#endif
-}
-
-static inline void dsp_write_hpic(u16 val)
-{
-#if defined(CONFIG_NETTA_6412)
- *((volatile u16 *)DSP_BASE) = bit_invert(val);
-#else
- *((volatile u16 *)DSP_BASE) = val;
-#endif
-}
-
-static inline void dsp_reset(void)
-{
-#if defined(CONFIG_NETTA_6412)
- ((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pddat &= ~(1 << (15 - 15));
- udelay(500);
- ((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pddat |= (1 << (15 - 15));
- udelay(500);
-#else
- ((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pddat &= ~(1 << (15 - 7));
- udelay(250);
- ((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pddat |= (1 << (15 - 7));
- udelay(250);
-#endif
-}
-
-static inline u32 dsp_read_hpic_word(u32 addr)
-{
- u32 val;
- volatile u16 *p;
-#if defined(CONFIG_NETTA_6412)
- p = (volatile u16 *)((volatile u8 *)DSP_BASE + addr);
-
- val = ((u32) bit_invert(p[0]) << 16);
- /* dsp_delay(); */
-
- val |= bit_invert(p[1]);
- /* dsp_delay(); */
-#else
- p = (volatile u16 *)((volatile u8 *)DSP_BASE + addr);
-
- val = ((u32) p[0] << 16);
- dsp_delay();
-
- val |= p[1];
- dsp_delay();
-#endif
- return val;
-}
-
-static inline u16 dsp_read_hpic_hi_hword(u32 addr)
-{
-#if defined(CONFIG_NETTA_6412)
- return bit_invert(*(volatile u16 *)((volatile u8 *)DSP_BASE + addr));
-#else
- return *(volatile u16 *)((volatile u8 *)DSP_BASE + addr);
-#endif
-}
-
-static inline u16 dsp_read_hpic_lo_hword(u32 addr)
-{
-#if defined(CONFIG_NETTA_6412)
- return bit_invert(*(volatile u16 *)((volatile u8 *)DSP_BASE + addr + 2));
-#else
- return *(volatile u16 *)((volatile u8 *)DSP_BASE + addr + 2);
-#endif
-}
-
-static inline void dsp_wait_hrdy(void)
-{
- int i;
-
- i = 0;
-#if defined(CONFIG_NETTA_6412)
- while (i < 1000 && (dsp_read_hpic_word(DSP_HPIC) & 0x08) == 0) {
-#else
- while (i < 1000 && (dsp_read_hpic() & 0x08) == 0) {
-#endif
- dsp_delay();
- i++;
- }
-}
-
-static inline void dsp_write_hpic_word(u32 addr, u32 val)
-{
- volatile u16 *p;
-#if defined(CONFIG_NETTA_6412)
- p = (volatile u16 *)((volatile u8 *)DSP_BASE + addr);
- p[0] = bit_invert((u16)(val >> 16));
- /* dsp_delay(); */
-
- p[1] = bit_invert((u16)val);
- /* dsp_delay(); */
-#else
- p = (volatile u16 *)((volatile u8 *)DSP_BASE + addr);
- p[0] = (u16)(val >> 16);
- dsp_delay();
-
- p[1] = (u16)val;
- dsp_delay();
-#endif
-}
-
-static inline void dsp_write_hpic_hi_hword(u32 addr, u16 val_h)
-{
-#if defined(CONFIG_NETTA_6412)
- *(volatile u16 *)((volatile u8 *)DSP_BASE + addr) = bit_invert(val_h);
-#else
-
- *(volatile u16 *)((volatile u8 *)DSP_BASE + addr) = val_h;
-#endif
-}
-
-static inline void dsp_write_hpic_lo_hword(u32 addr, u16 val_l)
-{
-#if defined(CONFIG_NETTA_6412)
- *(volatile u16 *)((volatile u8 *)DSP_BASE + addr + 2) = bit_invert(val_l);
-#else
- *(volatile u16 *)((volatile u8 *)DSP_BASE + addr + 2) = val_l;
-#endif
-}
-
-/********************************************************************/
-
-static inline void c62_write_word(u32 addr, u32 val)
-{
- dsp_write_hpic_hi_hword(DSP_HPIA, (u16)(addr >> 16));
-#if !defined(CONFIG_NETTA_6412)
- dsp_delay();
-#endif
- dsp_write_hpic_lo_hword(DSP_HPIA, (u16)addr);
-#if !defined(CONFIG_NETTA_6412)
- dsp_delay();
-#endif
-
- dsp_wait_hrdy();
-#if !defined(CONFIG_NETTA_6412)
- dsp_delay();
-#endif
- dsp_write_hpic_hi_hword(DSP_HPID2, (u16)(val >> 16));
-#if !defined(CONFIG_NETTA_6412)
- dsp_delay();
-
- /* dsp_wait_hrdy();
- dsp_delay(); */
-#endif
- dsp_write_hpic_lo_hword(DSP_HPID2, (u16)val);
-#if !defined(CONFIG_NETTA_6412)
- dsp_delay();
-#endif
-}
-
-static u32 c62_read_word(u32 addr)
-{
- u32 val;
-
- dsp_write_hpic_hi_hword(DSP_HPIA, (u16)(addr >> 16));
-#if !defined(CONFIG_NETTA_6412)
- dsp_delay();
-#endif
- dsp_write_hpic_lo_hword(DSP_HPIA, (u16)addr);
-#if !defined(CONFIG_NETTA_6412)
- dsp_delay();
-#endif
-
- /* FETCH */
-#if defined(CONFIG_NETTA_6412)
- dsp_write_hpic_word(DSP_HPIC, 0x00100010);
-#else
- dsp_write_hpic(0x10);
- dsp_delay();
-#endif
- dsp_wait_hrdy();
-#if !defined(CONFIG_NETTA_6412)
- dsp_delay();
-#endif
- val = (u32)dsp_read_hpic_hi_hword(DSP_HPID2) << 16;
-#if !defined(CONFIG_NETTA_6412)
- dsp_delay();
-
- /* dsp_wait_hrdy();
- dsp_delay(); */
-#endif
- val |= dsp_read_hpic_lo_hword(DSP_HPID2);
-#if !defined(CONFIG_NETTA_6412)
- dsp_delay();
-#endif
- return val;
-}
-
-static inline void c62_read(u32 addr, u32 *buffer, int numdata)
-{
- int i;
-
- if (numdata <= 0)
- return;
-
- for (i = 0; i < numdata; i++) {
- *buffer++ = c62_read_word(addr);
- addr += 4;
- }
-}
-
-static inline u32 c62_checksum(u32 addr, int numdata)
-{
- int i;
- u32 chksum;
-
- chksum = 0;
- for (i = 0; i < numdata; i++) {
- chksum += c62_read_word(addr);
- addr += 4;
- }
-
- return chksum;
-}
-
-static inline void c62_write(u32 addr, const u32 *buffer, int numdata)
-{
- int i;
-
- if (numdata <= 0)
- return;
-
- for (i = 0; i < numdata; i++) {
- c62_write_word(addr, *buffer++);
- addr += 4;
- }
-}
-
-static inline int c62_write_word_validated(u32 addr, u32 val)
-{
- c62_write_word(addr, val);
- return c62_read_word(addr) == val ? 0 : -1;
-}
-
-static inline int c62_write_validated(u32 addr, const u32 *buffer, int numdata)
-{
- int i, r;
-
- if (numdata <= 0)
- return 0;
-
- for (i = 0; i < numdata; i++) {
- r = c62_write_word_validated(addr, *buffer++);
- if (r < 0)
- return r;
- addr += 4;
- }
- return 0;
-}
-
-#if defined(CONFIG_NETTA_6412)
-
-#define DRAM_REGS_BASE 0x1800000
-
-#define GBLCTL DRAM_REGS_BASE
-#define CECTL1 (DRAM_REGS_BASE + 0x4)
-#define CECTL0 (DRAM_REGS_BASE + 0x8)
-#define CECTL2 (DRAM_REGS_BASE + 0x10)
-#define CECTL3 (DRAM_REGS_BASE + 0x14)
-#define SDCTL (DRAM_REGS_BASE + 0x18)
-#define SDTIM (DRAM_REGS_BASE + 0x1C)
-#define SDEXT (DRAM_REGS_BASE + 0x20)
-#define SESEC1 (DRAM_REGS_BASE + 0x44)
-#define SESEC0 (DRAM_REGS_BASE + 0x48)
-#define SESEC2 (DRAM_REGS_BASE + 0x50)
-#define SESEC3 (DRAM_REGS_BASE + 0x54)
-
-#define MAR128 0x1848200
-#define MAR129 0x1848204
-
-void dsp_dram_initialize(void)
-{
- c62_write_word(GBLCTL, 0x120E4);
- c62_write_word(CECTL1, 0x18);
- c62_write_word(CECTL0, 0xD0);
- c62_write_word(CECTL2, 0x18);
- c62_write_word(CECTL3, 0x18);
- c62_write_word(SDCTL, 0x47115000);
- c62_write_word(SDTIM, 1536);
- c62_write_word(SDEXT, 0x534A9);
-#if 0
- c62_write_word(SESEC1, 0);
- c62_write_word(SESEC0, 0);
- c62_write_word(SESEC2, 0);
- c62_write_word(SESEC3, 0);
-#endif
- c62_write_word(MAR128, 1);
- c62_write_word(MAR129, 0);
-}
-
-#endif
-
-static inline void dsp_init_hpic(void)
-{
- int i;
- volatile u16 *p;
-#if defined(CONFIG_NETTA_6412)
- dsp_go_fast();
-#else
- dsp_go_slow();
-#endif
- i = 0;
-#if defined(CONFIG_NETTA_6412)
- while (i < 1000 && (dsp_read_hpic_word(DSP_HPIC) & 0x08) == 0) {
-#else
- while (i < 1000 && (dsp_read_hpic() & 0x08) == 0) {
-#endif
- dsp_delay();
- i++;
- }
-
- if (i == 1000)
- printf("HRDY stuck\n");
-
- dsp_delay();
-
- /* write control register */
- p = (volatile u16 *)DSP_BASE;
- p[0] = 0x0000;
- dsp_delay();
- p[1] = 0x0000;
- dsp_delay();
-
-#if !defined(CONFIG_NETTA_6412)
- dsp_go_fast();
-#endif
-}
-
-/***********************************************************************************************************/
-
-#if !defined(CONFIG_NETTA_6412)
-
-static const u8 bootstrap_rbin[5084] = {
- 0x52, 0x42, 0x49, 0x4e, 0xc5, 0xa9, 0x9f, 0x1a, 0x00, 0x00, 0x00, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x11, 0xc0, 0x00, 0x17, 0x94, 0x2a, 0x00, 0x00, 0x00, 0x6a,
- 0x00, 0x00, 0x03, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
- 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x17, 0x94, 0x2a, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x03, 0x62,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x18, 0x00, 0xe2,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x00, 0xe2, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x90, 0x10, 0x5a,
- 0x00, 0x19, 0x2e, 0x28, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x64,
- 0x02, 0x00, 0x00, 0xaa, 0x02, 0x10, 0xac, 0xe2, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x9f, 0x7a,
- 0x30, 0x00, 0x08, 0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x28,
- 0x00, 0x00, 0xc6, 0x69, 0x02, 0x16, 0x4c, 0xa2, 0x02, 0x00, 0x90, 0x7a,
- 0x00, 0x10, 0x02, 0xe4, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0xd6, 0xc8,
- 0x00, 0x10, 0x02, 0xf4, 0x03, 0x10, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00,
- 0x03, 0x1a, 0xf7, 0xca, 0x03, 0x10, 0x02, 0xf6, 0x00, 0x00, 0x04, 0x28,
- 0x00, 0x00, 0xc6, 0x69, 0x02, 0x16, 0x4c, 0xa2, 0x02, 0x00, 0x90, 0x7a,
- 0x02, 0x90, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00, 0x02, 0x97, 0xcf, 0x5a,
- 0x02, 0x90, 0x02, 0xf6, 0x02, 0x90, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00,
- 0x02, 0x96, 0x10, 0xca, 0x02, 0x90, 0x02, 0xf6, 0x00, 0x0c, 0x03, 0x62,
- 0x00, 0x00, 0x80, 0x00, 0x02, 0x90, 0x10, 0x5a, 0x00, 0x00, 0x04, 0x28,
- 0x00, 0x00, 0xc6, 0x69, 0x02, 0x16, 0x4c, 0xa2, 0x02, 0x00, 0x90, 0x7a,
- 0x03, 0x10, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00, 0x03, 0x18, 0x2f, 0xda,
- 0x03, 0x10, 0x02, 0xf6, 0x03, 0x10, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00,
- 0x03, 0x1a, 0x10, 0x8a, 0x03, 0x10, 0x02, 0xf6, 0x00, 0x19, 0x2e, 0x28,
- 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x64, 0x03, 0x00, 0x00, 0xaa,
- 0x02, 0x98, 0xac, 0xe2, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x64,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xbf, 0x7a, 0x22, 0x90, 0x02, 0xe6,
- 0x00, 0x00, 0x60, 0x00, 0x22, 0x96, 0xd6, 0x8a, 0x22, 0x90, 0x02, 0xf6,
- 0x22, 0x90, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00, 0x22, 0x96, 0xf7, 0x8a,
- 0x22, 0x90, 0x02, 0xf6, 0x00, 0x0c, 0x03, 0x62, 0x00, 0x00, 0x80, 0x00,
- 0x00, 0x0c, 0x03, 0x62, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0c, 0x03, 0x62,
- 0x00, 0x00, 0x80, 0x00, 0x00, 0x19, 0x2e, 0x28, 0x00, 0x00, 0x00, 0x68,
- 0x00, 0x00, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x64,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x4f, 0x58, 0x02, 0x00, 0x12, 0x2a,
- 0x02, 0x00, 0xc8, 0x6a, 0x02, 0x90, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00,
- 0x02, 0x95, 0x8c, 0xca, 0x02, 0x90, 0x02, 0xf6, 0x00, 0x00, 0x12, 0x28,
- 0x00, 0x00, 0xc8, 0x68, 0x02, 0x00, 0x02, 0x66, 0x00, 0x00, 0x60, 0x00,
- 0x02, 0x11, 0xad, 0xca, 0x02, 0x00, 0x02, 0x76, 0x92, 0x00, 0x12, 0x2a,
- 0x92, 0x00, 0xc8, 0x6a, 0x92, 0x90, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00,
- 0x92, 0x95, 0x6b, 0xca, 0x92, 0x90, 0x02, 0xf6, 0x80, 0x00, 0x12, 0x28,
- 0x80, 0x00, 0xc8, 0x68, 0x82, 0x00, 0x02, 0x66, 0x80, 0x00, 0x12, 0x28,
- 0x80, 0x00, 0xc8, 0x68, 0x00, 0x00, 0x20, 0x00, 0x82, 0x11, 0x6b, 0x8a,
- 0x82, 0x00, 0x02, 0x76, 0x02, 0x00, 0x12, 0x2a, 0x02, 0x00, 0xc8, 0x6a,
- 0x02, 0x90, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00, 0x02, 0x95, 0x4a, 0xca,
- 0x02, 0x90, 0x02, 0xf6, 0x90, 0x00, 0x12, 0x28, 0x90, 0x00, 0xc8, 0x68,
- 0x92, 0x00, 0x02, 0x66, 0x00, 0x00, 0x60, 0x00, 0x92, 0x11, 0x29, 0xca,
- 0x92, 0x00, 0x02, 0x76, 0x82, 0x00, 0x12, 0x2a, 0x82, 0x00, 0xc8, 0x6a,
- 0x82, 0x10, 0x02, 0xe6, 0x80, 0x00, 0x12, 0x28, 0x80, 0x00, 0xc8, 0x68,
- 0x00, 0x00, 0x20, 0x00, 0x82, 0x11, 0x29, 0x8a, 0x82, 0x00, 0x02, 0x76,
- 0x00, 0x00, 0x12, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x02, 0x00, 0x02, 0x66,
- 0x00, 0x00, 0x60, 0x00, 0x02, 0x11, 0x08, 0xca, 0x02, 0x00, 0x02, 0x76,
- 0x02, 0x00, 0x12, 0x2a, 0x02, 0x00, 0xc8, 0x6a, 0x02, 0x90, 0x02, 0xe6,
- 0x00, 0x00, 0x60, 0x00, 0x02, 0x97, 0x6f, 0x5a, 0x02, 0x90, 0x02, 0xf6,
- 0x00, 0x00, 0x12, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x01, 0x80, 0x02, 0x64,
- 0x00, 0x00, 0x60, 0x00, 0x02, 0x0e, 0xff, 0x5a, 0x02, 0x00, 0x02, 0x76,
- 0x02, 0x00, 0x12, 0x2a, 0x02, 0x00, 0xc8, 0x6a, 0x00, 0x10, 0x02, 0xe4,
- 0x00, 0x00, 0x60, 0x00, 0x02, 0x83, 0xbf, 0x5a, 0x02, 0x90, 0x02, 0xf6,
- 0x00, 0x00, 0x12, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x01, 0x80, 0x02, 0x64,
- 0x00, 0x00, 0x60, 0x00, 0x02, 0x0f, 0xdf, 0x5a, 0x02, 0x00, 0x02, 0x76,
- 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x02, 0x00, 0x02, 0x66,
- 0x00, 0x00, 0x60, 0x00, 0x02, 0x12, 0xf7, 0xca, 0x02, 0x00, 0x02, 0x76,
- 0x02, 0x00, 0x04, 0x2a, 0x02, 0x00, 0xc8, 0x6a, 0x02, 0x90, 0x02, 0xe6,
- 0x00, 0x00, 0x60, 0x00, 0x02, 0x96, 0xd6, 0xca, 0x02, 0x90, 0x02, 0xf6,
- 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x02, 0x00, 0x02, 0x66,
- 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x10, 0x85, 0xca, 0x02, 0x00, 0x02, 0x76, 0x00, 0x00, 0x04, 0x28,
- 0x00, 0x00, 0xc8, 0x68, 0x02, 0x80, 0x02, 0x66, 0x02, 0x00, 0x04, 0x2a,
- 0x02, 0x00, 0xc8, 0x6a, 0x00, 0x00, 0x20, 0x00, 0x02, 0x96, 0x95, 0xca,
- 0x02, 0x90, 0x02, 0xf6, 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0xc8, 0x68,
- 0x01, 0x80, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00, 0x02, 0x0f, 0xdf, 0x5a,
- 0x02, 0x00, 0x02, 0x76, 0x02, 0x00, 0x04, 0x2a, 0x02, 0x00, 0xc8, 0x6a,
- 0x02, 0x90, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00, 0x02, 0x96, 0x10, 0xca,
- 0x02, 0x90, 0x02, 0xf6, 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0xc8, 0x68,
- 0x02, 0x00, 0x02, 0x66, 0x00, 0x00, 0x60, 0x00, 0x02, 0x11, 0xef, 0xca,
- 0x02, 0x00, 0x02, 0x76, 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0xc8, 0x68,
- 0x02, 0x80, 0x02, 0x66, 0x02, 0x00, 0x04, 0x2a, 0x02, 0x00, 0xc8, 0x6a,
- 0x00, 0x00, 0x20, 0x00, 0x02, 0x95, 0xae, 0xca, 0x02, 0x90, 0x02, 0xf6,
- 0x02, 0x00, 0x06, 0x2a, 0x02, 0x00, 0xc8, 0x6a, 0x02, 0x10, 0x02, 0xe6,
- 0x00, 0x00, 0x06, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x10, 0x21, 0x0a, 0x02, 0x00, 0x02, 0x76, 0x00, 0x00, 0x06, 0x28,
- 0x00, 0x00, 0xc8, 0x68, 0x01, 0x80, 0x02, 0x64, 0x00, 0x00, 0x06, 0x28,
- 0x00, 0x00, 0xc8, 0x68, 0x00, 0x00, 0x20, 0x00, 0x01, 0x8d, 0xae, 0xc8,
- 0x01, 0x8d, 0x0c, 0x88, 0x01, 0x80, 0x02, 0x74, 0x00, 0x00, 0x06, 0x28,
- 0x00, 0x00, 0xc8, 0x68, 0x02, 0x00, 0x02, 0x66, 0x00, 0x00, 0x06, 0x28,
- 0x00, 0x00, 0xc8, 0x68, 0x00, 0x00, 0x20, 0x00, 0x02, 0x10, 0xa7, 0xca,
- 0x02, 0x00, 0x02, 0x76, 0x00, 0x00, 0x06, 0x28, 0x00, 0x00, 0xc8, 0x68,
- 0x00, 0x00, 0x02, 0x64, 0x02, 0x00, 0x06, 0x2a, 0x02, 0x00, 0xc8, 0x6a,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x02, 0x31, 0xc8, 0x00, 0x02, 0x10, 0x88,
- 0x00, 0x10, 0x02, 0xf4, 0x00, 0x00, 0x06, 0x28, 0x00, 0x00, 0xc8, 0x68,
- 0x02, 0x80, 0x02, 0x66, 0x02, 0x00, 0x06, 0x2a, 0x02, 0x00, 0xc8, 0x6a,
- 0x00, 0x00, 0x20, 0x00, 0x02, 0x96, 0x74, 0xca, 0x02, 0x90, 0x02, 0xf6,
- 0x00, 0x00, 0x06, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x02, 0x80, 0x02, 0x66,
- 0x02, 0x00, 0x06, 0x2a, 0x02, 0x00, 0xc8, 0x6a, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x96, 0x52, 0x8a, 0x02, 0x90, 0x02, 0xf6, 0x02, 0x00, 0x08, 0x2a,
- 0x02, 0x00, 0xc8, 0x6a, 0x02, 0x10, 0x02, 0xe6, 0x00, 0x00, 0x08, 0x28,
- 0x00, 0x00, 0xc8, 0x68, 0x00, 0x00, 0x20, 0x00, 0x02, 0x10, 0x21, 0x0a,
- 0x02, 0x00, 0x02, 0x76, 0x00, 0x00, 0x08, 0x28, 0x00, 0x00, 0xc8, 0x68,
- 0x00, 0x00, 0x02, 0x64, 0x02, 0x00, 0x08, 0x2a, 0x02, 0x00, 0xc8, 0x6a,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0xae, 0xc8, 0x00, 0x01, 0x0c, 0x88,
- 0x00, 0x10, 0x02, 0xf4, 0x02, 0x00, 0x08, 0x2a, 0x02, 0x00, 0xc8, 0x6a,
- 0x02, 0x10, 0x02, 0xe6, 0x00, 0x00, 0x08, 0x28, 0x00, 0x00, 0xc8, 0x68,
- 0x00, 0x00, 0x20, 0x00, 0x02, 0x10, 0xa7, 0xca, 0x02, 0x00, 0x02, 0x76,
- 0x02, 0x00, 0x08, 0x2a, 0x02, 0x00, 0xc8, 0x6a, 0x02, 0x90, 0x02, 0xe6,
- 0x02, 0x00, 0x08, 0x2a, 0x02, 0x00, 0xc8, 0x6a, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x96, 0x31, 0xca, 0x02, 0x96, 0x10, 0x8a, 0x02, 0x90, 0x02, 0xf6,
- 0x02, 0x00, 0x08, 0x2a, 0x02, 0x00, 0xc8, 0x6a, 0x02, 0x10, 0x02, 0xe6,
- 0x00, 0x00, 0x08, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x12, 0x74, 0xca, 0x02, 0x00, 0x02, 0x76, 0x02, 0x00, 0x08, 0x2a,
- 0x02, 0x00, 0xc8, 0x6a, 0x02, 0x90, 0x02, 0xe6, 0x02, 0x00, 0x08, 0x2a,
- 0x02, 0x00, 0xc8, 0x6a, 0x00, 0x00, 0x20, 0x00, 0x02, 0x96, 0x52, 0x8a,
- 0x02, 0x90, 0x02, 0xf6, 0x90, 0x00, 0x1b, 0x10, 0x90, 0x19, 0x2e, 0x28,
- 0x90, 0x00, 0x00, 0x68, 0x90, 0x00, 0x02, 0x64, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x0a, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x01, 0x80, 0x02, 0x64,
- 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0a, 0x28, 0x01, 0x8f, 0xbd, 0x88,
- 0x00, 0x00, 0xc8, 0x68, 0x01, 0x80, 0x02, 0x74, 0x00, 0x00, 0x0a, 0x28,
- 0x00, 0x00, 0xc8, 0x68, 0x00, 0x00, 0x02, 0x64, 0x02, 0x00, 0x0a, 0x2a,
- 0x02, 0x00, 0xc8, 0x6a, 0x00, 0x00, 0x20, 0x00, 0x00, 0x03, 0x9c, 0x88,
- 0x00, 0x10, 0x02, 0xf4, 0x02, 0x00, 0x0a, 0x2a, 0x02, 0x00, 0xc8, 0x6a,
- 0x00, 0x10, 0x02, 0xe4, 0x02, 0x00, 0x0a, 0x2a, 0x02, 0x00, 0xc8, 0x6a,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x03, 0x1b, 0xc8, 0x00, 0x02, 0x17, 0x88,
- 0x00, 0x10, 0x02, 0xf4, 0x00, 0x19, 0x2e, 0x28, 0x00, 0x00, 0x00, 0x68,
- 0x00, 0x00, 0x02, 0x64, 0x02, 0x00, 0x0a, 0x2a, 0x02, 0x00, 0xc8, 0x6a,
- 0x02, 0x10, 0x02, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x01, 0x82, 0x42, 0x64,
- 0x00, 0x00, 0x0a, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x10, 0x07, 0xca, 0x02, 0x0c, 0x9f, 0xfa, 0x02, 0x00, 0x02, 0x76,
- 0x00, 0x19, 0x2e, 0x28, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x64,
- 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x80, 0x58, 0x03, 0x00, 0x10, 0x2a,
- 0x02, 0x04, 0x03, 0xe2, 0x02, 0x18, 0x56, 0x15, 0x02, 0x93, 0xcf, 0x5a,
- 0x00, 0x94, 0x03, 0xa2, 0x02, 0x18, 0x56, 0x14, 0x00, 0x00, 0x20, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x98, 0x56, 0x15, 0x00, 0x90, 0x4a, 0x58,
- 0x81, 0x98, 0xa0, 0x14, 0x04, 0x04, 0x00, 0x59, 0x00, 0x00, 0x06, 0x12,
- 0x00, 0x90, 0x4a, 0x59, 0x02, 0x98, 0x56, 0x15, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1b, 0x40, 0x5b, 0x03, 0x80, 0x00, 0xf9, 0x02, 0x00, 0x00, 0xa9,
- 0x81, 0x98, 0xa0, 0x14, 0x01, 0x20, 0x00, 0x59, 0x04, 0x04, 0x01, 0xa1,
- 0x20, 0x00, 0x02, 0x13, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x10, 0x6c, 0xe1,
- 0x00, 0x94, 0x4a, 0x59, 0x02, 0x98, 0x56, 0x14, 0xa3, 0x9c, 0x0f, 0xf9,
- 0x20, 0x03, 0xe0, 0x5b, 0x81, 0x98, 0xa0, 0x14, 0x04, 0x04, 0x00, 0x59,
- 0x01, 0x20, 0x01, 0xa0, 0x00, 0x94, 0x4a, 0x59, 0xa0, 0x10, 0x6c, 0xe0,
- 0xa3, 0x9c, 0x0f, 0xf9, 0x81, 0x98, 0x60, 0x14, 0x04, 0x04, 0x00, 0x59,
- 0x01, 0x20, 0x01, 0xa0, 0x00, 0x94, 0x4a, 0x59, 0xa0, 0x10, 0x6c, 0xe0,
- 0xa3, 0x9c, 0x0f, 0xf9, 0x81, 0x98, 0x20, 0x14, 0x02, 0x84, 0x00, 0x59,
- 0x01, 0x20, 0x01, 0xa0, 0xa0, 0x10, 0x6c, 0xe0, 0x01, 0x14, 0x01, 0xa1,
- 0xa3, 0x9c, 0x0f, 0xf8, 0x00, 0x90, 0x03, 0xa2, 0xa0, 0x10, 0x6c, 0xe0,
- 0xa3, 0x9c, 0x0f, 0xf8, 0x02, 0x00, 0x0c, 0x2b, 0x00, 0x00, 0x00, 0xa8,
- 0x02, 0x00, 0xc8, 0x6b, 0x00, 0x00, 0x01, 0xe8, 0x00, 0x10, 0x02, 0xf4,
- 0x02, 0x00, 0x0e, 0x2a, 0x02, 0x00, 0xc8, 0x6a, 0x03, 0x90, 0x02, 0xf4,
- 0x00, 0x00, 0x10, 0x28, 0x00, 0x00, 0xc8, 0x68, 0x03, 0x80, 0x02, 0x74,
- 0x00, 0x0c, 0x03, 0x62, 0x00, 0x00, 0x80, 0x00, 0x00, 0x19, 0x2e, 0x28,
- 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x2f, 0x58,
- 0x02, 0x00, 0x12, 0x2a, 0x02, 0x00, 0xc6, 0x6a, 0x02, 0x90, 0x02, 0xe6,
- 0x00, 0x00, 0x60, 0x00, 0x02, 0x95, 0x8c, 0xca, 0x02, 0x90, 0x02, 0xf6,
- 0x00, 0x00, 0x12, 0x28, 0x00, 0x00, 0xc6, 0x68, 0x02, 0x00, 0x02, 0x66,
- 0x00, 0x00, 0x60, 0x00, 0x02, 0x11, 0xad, 0xca, 0x02, 0x00, 0x02, 0x76,
- 0x92, 0x00, 0x12, 0x2a, 0x92, 0x00, 0xc6, 0x6a, 0x92, 0x90, 0x02, 0xe6,
- 0x00, 0x00, 0x60, 0x00, 0x92, 0x95, 0x6b, 0xca, 0x92, 0x90, 0x02, 0xf6,
- 0x80, 0x00, 0x12, 0x28, 0x80, 0x00, 0xc6, 0x68, 0x82, 0x00, 0x02, 0x66,
- 0x80, 0x00, 0x12, 0x28, 0x80, 0x00, 0xc6, 0x68, 0x00, 0x00, 0x20, 0x00,
- 0x82, 0x11, 0x6b, 0x8a, 0x82, 0x00, 0x02, 0x76, 0x02, 0x00, 0x12, 0x2a,
- 0x02, 0x00, 0xc6, 0x6a, 0x02, 0x90, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00,
- 0x02, 0x95, 0x4a, 0xca, 0x02, 0x90, 0x02, 0xf6, 0x90, 0x00, 0x12, 0x28,
- 0x90, 0x00, 0xc6, 0x68, 0x92, 0x00, 0x02, 0x66, 0x00, 0x00, 0x60, 0x00,
- 0x92, 0x11, 0x29, 0xca, 0x92, 0x00, 0x02, 0x76, 0x82, 0x00, 0x12, 0x2a,
- 0x82, 0x00, 0xc6, 0x6a, 0x82, 0x10, 0x02, 0xe6, 0x80, 0x00, 0x12, 0x28,
- 0x80, 0x00, 0xc6, 0x68, 0x00, 0x00, 0x20, 0x00, 0x82, 0x11, 0x29, 0x8a,
- 0x82, 0x00, 0x02, 0x76, 0x00, 0x00, 0x12, 0x28, 0x00, 0x00, 0xc6, 0x68,
- 0x02, 0x00, 0x02, 0x66, 0x00, 0x00, 0x60, 0x00, 0x02, 0x11, 0x08, 0xca,
- 0x02, 0x00, 0x02, 0x76, 0x02, 0x00, 0x12, 0x2a, 0x02, 0x00, 0xc6, 0x6a,
- 0x02, 0x90, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00, 0x02, 0x97, 0x6f, 0x5a,
- 0x02, 0x90, 0x02, 0xf6, 0x00, 0x00, 0x12, 0x28, 0x00, 0x00, 0xc6, 0x68,
- 0x01, 0x80, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00, 0x02, 0x0e, 0xff, 0x5a,
- 0x02, 0x00, 0x02, 0x76, 0x02, 0x00, 0x12, 0x2a, 0x02, 0x00, 0xc6, 0x6a,
- 0x00, 0x10, 0x02, 0xe4, 0x00, 0x00, 0x60, 0x00, 0x02, 0x83, 0xbf, 0x5a,
- 0x02, 0x90, 0x02, 0xf6, 0x00, 0x00, 0x12, 0x28, 0x00, 0x00, 0xc6, 0x68,
- 0x01, 0x80, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00, 0x02, 0x0f, 0xdf, 0x5a,
- 0x02, 0x00, 0x02, 0x76, 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0xc6, 0x68,
- 0x02, 0x00, 0x02, 0x66, 0x00, 0x00, 0x60, 0x00, 0x02, 0x12, 0xf7, 0xca,
- 0x02, 0x00, 0x02, 0x76, 0x02, 0x00, 0x04, 0x2a, 0x02, 0x00, 0xc6, 0x6a,
- 0x02, 0x90, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00, 0x02, 0x96, 0xd6, 0xca,
- 0x02, 0x90, 0x02, 0xf6, 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0xc6, 0x68,
- 0x02, 0x00, 0x02, 0x66, 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0xc6, 0x68,
- 0x00, 0x00, 0x20, 0x00, 0x02, 0x10, 0x85, 0xca, 0x02, 0x00, 0x02, 0x76,
- 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0xc6, 0x68, 0x02, 0x80, 0x02, 0x66,
- 0x02, 0x00, 0x04, 0x2a, 0x02, 0x00, 0xc6, 0x6a, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x96, 0x95, 0xca, 0x02, 0x90, 0x02, 0xf6, 0x00, 0x00, 0x04, 0x28,
- 0x00, 0x00, 0xc6, 0x68, 0x01, 0x80, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00,
- 0x02, 0x0f, 0xdf, 0x5a, 0x02, 0x00, 0x02, 0x76, 0x02, 0x00, 0x04, 0x2a,
- 0x02, 0x00, 0xc6, 0x6a, 0x02, 0x90, 0x02, 0xe6, 0x00, 0x00, 0x60, 0x00,
- 0x02, 0x96, 0x10, 0xca, 0x02, 0x90, 0x02, 0xf6, 0x00, 0x00, 0x04, 0x28,
- 0x00, 0x00, 0xc6, 0x68, 0x02, 0x00, 0x02, 0x66, 0x00, 0x00, 0x60, 0x00,
- 0x02, 0x11, 0xef, 0xca, 0x02, 0x00, 0x02, 0x76, 0x00, 0x00, 0x04, 0x28,
- 0x00, 0x00, 0xc6, 0x68, 0x02, 0x80, 0x02, 0x66, 0x02, 0x00, 0x04, 0x2a,
- 0x02, 0x00, 0xc6, 0x6a, 0x00, 0x00, 0x20, 0x00, 0x02, 0x95, 0xae, 0xca,
- 0x02, 0x90, 0x02, 0xf6, 0x02, 0x00, 0x06, 0x2a, 0x02, 0x00, 0xc6, 0x6a,
- 0x02, 0x10, 0x02, 0xe6, 0x00, 0x00, 0x06, 0x28, 0x00, 0x00, 0xc6, 0x68,
- 0x00, 0x00, 0x20, 0x00, 0x02, 0x10, 0x21, 0x0a, 0x02, 0x00, 0x02, 0x76,
- 0x00, 0x00, 0x06, 0x28, 0x00, 0x00, 0xc6, 0x68, 0x01, 0x80, 0x02, 0x64,
- 0x00, 0x00, 0x06, 0x28, 0x00, 0x00, 0xc6, 0x68, 0x00, 0x00, 0x20, 0x00,
- 0x01, 0x8d, 0xae, 0xc8, 0x01, 0x8d, 0x0c, 0x88, 0x01, 0x80, 0x02, 0x74,
- 0x00, 0x00, 0x06, 0x28, 0x00, 0x00, 0xc6, 0x68, 0x02, 0x00, 0x02, 0x66,
- 0x00, 0x00, 0x06, 0x28, 0x00, 0x00, 0xc6, 0x68, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x10, 0xa7, 0xca, 0x02, 0x00, 0x02, 0x76, 0x00, 0x00, 0x06, 0x28,
- 0x00, 0x00, 0xc6, 0x68, 0x00, 0x00, 0x02, 0x64, 0x02, 0x00, 0x06, 0x2a,
- 0x02, 0x00, 0xc6, 0x6a, 0x00, 0x00, 0x20, 0x00, 0x00, 0x02, 0x31, 0xc8,
- 0x00, 0x02, 0x10, 0x88, 0x00, 0x10, 0x02, 0xf4, 0x00, 0x00, 0x06, 0x28,
- 0x00, 0x00, 0xc6, 0x68, 0x02, 0x80, 0x02, 0x66, 0x02, 0x00, 0x06, 0x2a,
- 0x02, 0x00, 0xc6, 0x6a, 0x00, 0x00, 0x20, 0x00, 0x02, 0x96, 0x74, 0xca,
- 0x02, 0x90, 0x02, 0xf6, 0x00, 0x00, 0x06, 0x28, 0x00, 0x00, 0xc6, 0x68,
- 0x02, 0x80, 0x02, 0x66, 0x02, 0x00, 0x06, 0x2a, 0x02, 0x00, 0xc6, 0x6a,
- 0x00, 0x00, 0x20, 0x00, 0x02, 0x96, 0x52, 0x8a, 0x02, 0x90, 0x02, 0xf6,
- 0x02, 0x00, 0x08, 0x2a, 0x02, 0x00, 0xc6, 0x6a, 0x02, 0x10, 0x02, 0xe6,
- 0x00, 0x00, 0x08, 0x28, 0x00, 0x00, 0xc6, 0x68, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x10, 0x21, 0x0a, 0x02, 0x00, 0x02, 0x76, 0x00, 0x00, 0x08, 0x28,
- 0x00, 0x00, 0xc6, 0x68, 0x00, 0x00, 0x02, 0x64, 0x02, 0x00, 0x08, 0x2a,
- 0x02, 0x00, 0xc6, 0x6a, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0xae, 0xc8,
- 0x00, 0x01, 0x0c, 0x88, 0x00, 0x10, 0x02, 0xf4, 0x02, 0x00, 0x08, 0x2a,
- 0x02, 0x00, 0xc6, 0x6a, 0x02, 0x10, 0x02, 0xe6, 0x00, 0x00, 0x08, 0x28,
- 0x00, 0x00, 0xc6, 0x68, 0x00, 0x00, 0x20, 0x00, 0x02, 0x10, 0xa7, 0xca,
- 0x02, 0x00, 0x02, 0x76, 0x02, 0x00, 0x08, 0x2a, 0x02, 0x00, 0xc6, 0x6a,
- 0x02, 0x90, 0x02, 0xe6, 0x02, 0x00, 0x08, 0x2a, 0x02, 0x00, 0xc6, 0x6a,
- 0x00, 0x00, 0x20, 0x00, 0x02, 0x96, 0x31, 0xca, 0x02, 0x96, 0x10, 0x8a,
- 0x02, 0x90, 0x02, 0xf6, 0x02, 0x00, 0x08, 0x2a, 0x02, 0x00, 0xc6, 0x6a,
- 0x02, 0x10, 0x02, 0xe6, 0x00, 0x00, 0x08, 0x28, 0x00, 0x00, 0xc6, 0x68,
- 0x00, 0x00, 0x20, 0x00, 0x02, 0x12, 0x74, 0xca, 0x02, 0x00, 0x02, 0x76,
- 0x02, 0x00, 0x08, 0x2a, 0x02, 0x00, 0xc6, 0x6a, 0x02, 0x90, 0x02, 0xe6,
- 0x02, 0x00, 0x08, 0x2a, 0x02, 0x00, 0xc6, 0x6a, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x96, 0x52, 0x8a, 0x02, 0x90, 0x02, 0xf6, 0x90, 0x00, 0x19, 0x90,
- 0x90, 0x19, 0x2e, 0x28, 0x90, 0x00, 0x00, 0x68, 0x90, 0x00, 0x02, 0x64,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0a, 0x28, 0x00, 0x00, 0xc6, 0x68,
- 0x01, 0x80, 0x02, 0x64, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0a, 0x28,
- 0x01, 0x8f, 0xbd, 0x88, 0x00, 0x00, 0xc6, 0x68, 0x01, 0x80, 0x02, 0x74,
- 0x00, 0x00, 0x0a, 0x28, 0x00, 0x00, 0xc6, 0x68, 0x00, 0x00, 0x02, 0x64,
- 0x02, 0x00, 0x0a, 0x2a, 0x02, 0x00, 0xc6, 0x6a, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x03, 0x9c, 0x88, 0x00, 0x10, 0x02, 0xf4, 0x02, 0x00, 0x0a, 0x2a,
- 0x02, 0x00, 0xc6, 0x6a, 0x00, 0x10, 0x02, 0xe4, 0x02, 0x00, 0x0a, 0x2a,
- 0x02, 0x00, 0xc6, 0x6a, 0x00, 0x00, 0x20, 0x00, 0x00, 0x03, 0x1b, 0xc8,
- 0x00, 0x02, 0x17, 0x88, 0x00, 0x10, 0x02, 0xf4, 0x00, 0x19, 0x2e, 0x28,
- 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x64, 0x02, 0x00, 0x0a, 0x2a,
- 0x02, 0x00, 0xc6, 0x6a, 0x02, 0x10, 0x02, 0xe6, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x82, 0x22, 0x64, 0x00, 0x00, 0x0a, 0x28, 0x00, 0x00, 0xc6, 0x68,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x07, 0xca, 0x02, 0x0c, 0x9f, 0xfa,
- 0x02, 0x00, 0x02, 0x76, 0x00, 0x19, 0x2e, 0x28, 0x00, 0x00, 0x00, 0x68,
- 0x00, 0x00, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x80, 0x58,
- 0x03, 0x00, 0x10, 0x2a, 0x02, 0x04, 0x03, 0xe3, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x18, 0x56, 0x15, 0x02, 0x93, 0xcf, 0x5a, 0x00, 0x94, 0x03, 0xa2,
- 0x02, 0x18, 0x56, 0x14, 0x00, 0x00, 0x20, 0x00, 0x02, 0x98, 0x56, 0x15,
- 0x00, 0x90, 0x2a, 0x58, 0x81, 0x98, 0xa0, 0x14, 0x04, 0x04, 0x00, 0x59,
- 0x00, 0x00, 0x04, 0x12, 0x00, 0x90, 0x2a, 0x59, 0x02, 0x98, 0x56, 0x14,
- 0x00, 0x1b, 0x40, 0x5b, 0x03, 0x80, 0x00, 0xf9, 0x02, 0x00, 0x00, 0xa9,
- 0x81, 0x98, 0xa0, 0x14, 0x01, 0x20, 0x00, 0x59, 0x04, 0x04, 0x01, 0xa1,
- 0x20, 0x00, 0x00, 0x12, 0xa0, 0x10, 0x6c, 0xe1, 0x00, 0x94, 0x2a, 0x59,
- 0x02, 0x98, 0x56, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0xa3, 0x9c, 0x0f, 0xf9, 0x20, 0x03, 0xe0, 0x5b, 0x81, 0x98, 0xa0, 0x14,
- 0x04, 0x04, 0x00, 0x59, 0x01, 0x20, 0x01, 0xa0, 0x00, 0x94, 0x2a, 0x59,
- 0xa0, 0x10, 0x6c, 0xe1, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x9c, 0x0f, 0xf9,
- 0x81, 0x98, 0x60, 0x14, 0x04, 0x04, 0x00, 0x59, 0x01, 0x20, 0x01, 0xa0,
- 0x00, 0x94, 0x2a, 0x59, 0xa0, 0x10, 0x6c, 0xe0, 0xa3, 0x9c, 0x0f, 0xf9,
- 0x81, 0x98, 0x20, 0x14, 0x02, 0x84, 0x00, 0x59, 0x01, 0x20, 0x01, 0xa0,
- 0xa0, 0x10, 0x6c, 0xe0, 0x01, 0x14, 0x01, 0xa1, 0xa3, 0x9c, 0x0f, 0xf8,
- 0x00, 0x90, 0x03, 0xa2, 0xa0, 0x10, 0x6c, 0xe0, 0xa3, 0x9c, 0x0f, 0xf8,
- 0x02, 0x00, 0x0c, 0x2b, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0xc6, 0x6b,
- 0x00, 0x00, 0x01, 0xe8, 0x00, 0x10, 0x02, 0xf4, 0x02, 0x00, 0x0e, 0x2a,
- 0x02, 0x00, 0xc6, 0x6a, 0x03, 0x90, 0x02, 0xf4, 0x00, 0x00, 0x10, 0x28,
- 0x00, 0x00, 0xc6, 0x68, 0x03, 0x80, 0x02, 0x74, 0x00, 0x0c, 0x03, 0x62,
- 0x00, 0x00, 0x80, 0x00, 0x00, 0x0c, 0x03, 0x62, 0x00, 0x00, 0x80, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0xc0, 0x69,
- 0x02, 0x00, 0x10, 0x2a, 0x02, 0x00, 0x02, 0x76, 0x00, 0x0c, 0x03, 0x62,
- 0x00, 0x00, 0x80, 0x00, 0x01, 0xbc, 0x54, 0xf6, 0x02, 0x04, 0x03, 0xe2,
- 0x02, 0x13, 0xcf, 0x5a, 0x00, 0x90, 0x03, 0xa2, 0x02, 0x18, 0x50, 0x2a,
- 0x02, 0x00, 0x00, 0x6a, 0x00, 0x10, 0x03, 0x62, 0x01, 0x97, 0x30, 0x2a,
- 0x01, 0x80, 0x00, 0x6a, 0x00, 0x00, 0x40, 0x00, 0x00, 0x17, 0xb4, 0x28,
- 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x13, 0x62, 0x01, 0x97, 0x3c, 0x2a,
- 0x01, 0x80, 0x00, 0x6a, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x04, 0x29,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x69, 0x02, 0x00, 0x10, 0x2a,
- 0x02, 0x00, 0x02, 0x76, 0x00, 0x14, 0x4e, 0x28, 0x00, 0x00, 0x00, 0x68,
- 0x00, 0x00, 0x13, 0x62, 0x01, 0x97, 0x52, 0x2a, 0x01, 0x80, 0x00, 0x6a,
- 0x00, 0x00, 0x40, 0x00, 0x00, 0x11, 0x94, 0x28, 0x00, 0x00, 0x00, 0x68,
- 0x00, 0x00, 0x13, 0x62, 0x01, 0x97, 0x5e, 0x2a, 0x01, 0x80, 0x00, 0x6a,
- 0x00, 0x00, 0x40, 0x00, 0x02, 0x11, 0x4c, 0x2a, 0x02, 0x00, 0x00, 0x6a,
- 0x00, 0x10, 0x03, 0x62, 0x01, 0x97, 0x6c, 0x2a, 0x01, 0x80, 0x00, 0x6a,
- 0x02, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x20, 0x00, 0x00, 0x11, 0x4c, 0x28,
- 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x13, 0x62, 0x01, 0x97, 0x7a, 0x2a,
- 0x01, 0x80, 0x00, 0x6a, 0x02, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x04, 0x03, 0xe2, 0x00, 0x12, 0x00, 0x28, 0x02, 0x00, 0x9f, 0xfa,
- 0x00, 0x90, 0x03, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
- 0x01, 0xbc, 0x52, 0xe6, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0c, 0x03, 0x62,
- 0x00, 0x00, 0x80, 0x00, 0x07, 0xae, 0xfe, 0x2a, 0x07, 0x80, 0x00, 0x6a,
- 0x00, 0x10, 0x00, 0x28, 0x02, 0x80, 0x13, 0xa2, 0x0f, 0xff, 0xe3, 0x12,
- 0x00, 0x00, 0x80, 0x00, 0x00, 0x0c, 0x03, 0x62, 0x00, 0x00, 0x80, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0c, 0x03, 0x62, 0x00, 0x00, 0x80, 0x00, 0x00, 0x19, 0x30, 0x28,
- 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x80, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00, 0x90, 0x00, 0x20, 0x90,
- 0x01, 0x04, 0x2a, 0x58, 0x00, 0x00, 0x60, 0x00, 0xa0, 0x00, 0x0a, 0x10,
- 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0xfa, 0x02, 0x00, 0xc0, 0x6a,
- 0x02, 0x90, 0x02, 0xe6, 0x03, 0x00, 0x08, 0x2a, 0x00, 0x00, 0x40, 0x00,
- 0x02, 0x94, 0xcd, 0xfa, 0x02, 0x90, 0x02, 0xf6, 0x00, 0x00, 0x00, 0xf8,
- 0x00, 0x00, 0xc0, 0x68, 0x01, 0x80, 0x02, 0x64, 0x00, 0x00, 0x60, 0x00,
- 0x01, 0x8d, 0x0d, 0xd8, 0x01, 0x80, 0x02, 0x74, 0x0f, 0xff, 0xfa, 0x90,
- 0x00, 0x00, 0x80, 0x00, 0x02, 0x60, 0x80, 0x2a, 0x02, 0x00, 0xdb, 0xeb,
- 0x01, 0x80, 0x00, 0xf8, 0x01, 0x90, 0x02, 0xf4, 0x02, 0x60, 0x80, 0x2a,
- 0x02, 0x00, 0xdb, 0xeb, 0x02, 0x00, 0x04, 0x28, 0x02, 0x10, 0x02, 0xf4,
- 0x02, 0x00, 0x22, 0x66, 0x02, 0x60, 0x88, 0x28, 0x02, 0x00, 0xdb, 0xe8,
- 0x00, 0x00, 0x20, 0x00, 0x02, 0x10, 0x02, 0x76, 0x02, 0x80, 0x42, 0x66,
- 0x02, 0x60, 0x8a, 0x2a, 0x02, 0x00, 0xdb, 0xea, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x90, 0x02, 0xf6, 0x02, 0x00, 0xc2, 0x66, 0x02, 0x60, 0x92, 0x28,
- 0x02, 0x00, 0xdb, 0xe8, 0x00, 0x00, 0x20, 0x00, 0x02, 0x10, 0x02, 0x76,
- 0x02, 0x80, 0x62, 0x66, 0x02, 0x60, 0x8c, 0x2a, 0x02, 0x00, 0xdb, 0xea,
- 0x00, 0x00, 0x20, 0x00, 0x02, 0x90, 0x02, 0xf6, 0x02, 0x00, 0x82, 0x66,
- 0x02, 0x60, 0x8e, 0x28, 0x02, 0x00, 0xdb, 0xe8, 0x00, 0x00, 0x20, 0x00,
- 0x02, 0x10, 0x02, 0x76, 0x00, 0x00, 0xa2, 0x64, 0x02, 0x60, 0x90, 0x2a,
- 0x02, 0x00, 0xdb, 0xea, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x02, 0xf4,
- 0x02, 0x60, 0x80, 0x2a, 0x02, 0x00, 0xdb, 0xea, 0x01, 0x90, 0x02, 0xf4,
- 0x02, 0x60, 0x80, 0x2a, 0x02, 0x00, 0xdb, 0xeb, 0x00, 0x00, 0x00, 0xa8,
- 0x00, 0x10, 0x02, 0xf4, 0x00, 0x0c, 0x03, 0x62, 0x00, 0x00, 0x80, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x19, 0x2a, 0x2a,
- 0x02, 0x84, 0x20, 0xfb, 0x02, 0x00, 0x00, 0x6a, 0x02, 0x90, 0x02, 0xf6,
- 0x02, 0x98, 0xe0, 0x2a, 0x02, 0x19, 0x2c, 0x2a, 0x02, 0x00, 0x00, 0x6b,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x29, 0x02, 0x80, 0x00, 0x6a,
- 0x03, 0x94, 0x10, 0x59, 0x00, 0x10, 0x02, 0xf4, 0x00, 0x00, 0x12, 0xaa,
- 0x00, 0x80, 0x00, 0xa8, 0x04, 0x08, 0x00, 0x28, 0x04, 0x00, 0x00, 0x68,
- 0x20, 0x03, 0xe0, 0x5b, 0x90, 0x14, 0x02, 0x64, 0x20, 0x00, 0x00, 0x12,
- 0x93, 0x1c, 0x36, 0x74, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x02, 0x65,
- 0x02, 0x19, 0x2a, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x79,
- 0x01, 0xa0, 0x36, 0x65, 0x02, 0x00, 0x00, 0x68, 0x80, 0x87, 0xe0, 0x59,
- 0x90, 0x14, 0x02, 0x75, 0x02, 0x90, 0x01, 0xa0, 0x00, 0x14, 0x02, 0x64,
- 0x00, 0x00, 0x40, 0x00, 0x03, 0x1c, 0x36, 0x74, 0x00, 0x00, 0x60, 0x78,
- 0x00, 0x14, 0x02, 0x74, 0x00, 0x19, 0x2a, 0x28, 0x00, 0x00, 0x00, 0x68,
- 0x00, 0x18, 0xe0, 0x29, 0x00, 0x00, 0x02, 0x66, 0x00, 0x00, 0x00, 0x68,
- 0x00, 0x00, 0x40, 0x00, 0x31, 0x80, 0x80, 0x59, 0x32, 0x19, 0x2e, 0x2a,
- 0x32, 0x00, 0x00, 0x6a, 0x31, 0x90, 0x02, 0xf4, 0x30, 0x02, 0x9d, 0x41,
- 0x32, 0x19, 0x30, 0x2a, 0x32, 0x00, 0x00, 0x6a, 0x30, 0x10, 0x02, 0xf4,
- 0x30, 0x00, 0x09, 0x12, 0x00, 0x00, 0x80, 0x00, 0x02, 0x80, 0x00, 0xfa,
- 0x02, 0x80, 0xc0, 0x6a, 0x03, 0x14, 0x02, 0xe6, 0x02, 0x00, 0x08, 0x2a,
- 0x00, 0x00, 0x40, 0x00, 0x02, 0x18, 0x8d, 0xfa, 0x02, 0x14, 0x02, 0xf6,
- 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x68, 0x01, 0x80, 0x02, 0x64,
- 0x00, 0x00, 0x60, 0x00, 0x01, 0x8d, 0x0d, 0xd8, 0x01, 0x80, 0x02, 0x74,
- 0x0f, 0xff, 0xf9, 0x90, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0c, 0x03, 0x62,
- 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-static int load_bootstrap(void)
-{
- const u8 *s = bootstrap_rbin;
- u32 l = sizeof(bootstrap_rbin);
- const u8 *data, *hdr, *h;
- u32 chksum, chksum2;
- int i, j, rangenr;
- u32 start, length;
-
- if (l < 12) {
- printf("bootstrap image corrupted. (too short header)\n");
- return -1;
- }
-
- chksum = ((u32)s[4] << 24) | ((u32)s[5] << 16) | ((u32)s[ 6] << 8) | (u32)s[ 7];
- rangenr = ((u32)s[8] << 24) | ((u32)s[9] << 16) | ((u32)s[10] << 8) | (u32)s[11];
- s += 12; l -= 12;
-
- hdr = s;
- s += 8 * rangenr; l -= 8 * rangenr;
- data = s;
-
- /* validate bootstrap image */
- h = hdr; s = data; chksum2 = 0;
- for (i = 0; i < rangenr; i++) {
- start = ((u32)h[0] << 24) | ((u32)h[1] << 16) | ((u32)h[2] << 8) | (u32)h[3];
- length = ((u32)h[4] << 24) | ((u32)h[5] << 16) | ((u32)h[6] << 8) | (u32)h[7];
- h += 8;
-
- /* too short */
- if (l < length) {
- printf("bootstrap image corrupted. (too short data)\n");
- return -1;
- }
- l -= length;
-
- j = (int)length / 4;
- while (j-- > 0) {
- chksum2 += ((u32)s[0] << 24) | ((u32)s[1] << 16) | ((u32)s[2] << 8) | (u32)s[3];
- s += 4;
- }
- }
-
- /* checksum must match */
- if (chksum != chksum2) {
- printf("bootstrap image corrupted. (checksum error)\n");
- return -1;
- }
-
- /* nothing must be left */
- if (l != 0) {
- printf("bootstrap image corrupted. (garbage at the end)\n");
- return -1;
- }
-
- /* write the image */
- h = hdr;
- s = data;
- for (i = 0; i < rangenr; i++) {
- start = ((u32)h[0] << 24) | ((u32)h[1] << 16) | ((u32)h[2] << 8) | (u32)h[3];
- length = ((u32)h[4] << 24) | ((u32)h[5] << 16) | ((u32)h[6] << 8) | (u32)h[7];
- h += 8;
- c62_write(start, (u32 *)s, length / 4);
- s += length;
- }
-
- /* and now validate checksum */
- h = hdr;
- s = data;
- chksum2 = 0;
- for (i = 0; i < rangenr; i++) {
- start = ((u32)h[0] << 24) | ((u32)h[1] << 16) | ((u32)h[2] << 8) | (u32)h[3];
- length = ((u32)h[4] << 24) | ((u32)h[5] << 16) | ((u32)h[6] << 8) | (u32)h[7];
- h += 8;
- chksum2 += c62_checksum(start, length / 4);
- s += length;
- }
-
- /* checksum must match */
- if (chksum != chksum2) {
- printf("bootstrap in DSP memory is corrupted\n");
- return -1;
- }
-
- return 0;
-}
-
-struct host_init {
- u32 master_mode;
- struct {
- u8 port_id;
- u8 slot_id;
- } ch_serial_map[32];
- u32 clk_divider[2];
- /* pll */
- u32 initmode;
- u32 pllm;
- u32 div[4];
- u32 oscdiv1;
- u32 unused[10];
-};
-
-const struct host_init hi_default = {
- .master_mode =
-#if !defined(CONFIG_NETTA_ISDN)
- -1,
-#else
- 0,
-#endif
-
- .ch_serial_map = {
- [ 0] = { .port_id = 2, .slot_id = 16 },
- [ 1] = { .port_id = 2, .slot_id = 17 },
- [ 2] = { .port_id = 2, .slot_id = 18 },
- [ 3] = { .port_id = 2, .slot_id = 19 },
- [ 4] = { .port_id = 2, .slot_id = 20 },
- [ 5] = { .port_id = 2, .slot_id = 21 },
- [ 6] = { .port_id = 2, .slot_id = 22 },
- [ 7] = { .port_id = 2, .slot_id = 23 },
- [ 8] = { .port_id = 2, .slot_id = 24 },
- [ 9] = { .port_id = 2, .slot_id = 25 },
- [10] = { .port_id = 2, .slot_id = 26 },
- [11] = { .port_id = 2, .slot_id = 27 },
- [12] = { .port_id = 2, .slot_id = 28 },
- [13] = { .port_id = 2, .slot_id = 29 },
- [14] = { .port_id = 2, .slot_id = 30 },
- [15] = { .port_id = 2, .slot_id = 31 },
- },
-
- /*
- dsp_clk(xin, pllm) = xin * pllm
- serial_clk(xin, pllm, div) = (dsp_clk(xin, pllm) / 2) / (div + 1)
- */
-
- .clk_divider = {
- [0] = 47, /* must be 2048Hz */
- [1] = 47,
- },
-
- .initmode = 1,
- .pllm =
-#if !defined(CONFIG_NETTA_ISDN)
- 8, /* for =~ 25MHz 8 */
-#else
- 4,
-#endif
- .div = {
- [0] = 0x8000,
- [1] = 0x8000, /* for =~ 25MHz 0x8000 */
- [2] = 0x8001, /* for =~ 25MHz 0x8001 */
- [3] = 0x8001, /* for =~ 25MHz 0x8001 */
- },
-
- .oscdiv1 = 0,
-};
-
-static void hi_write(const struct host_init *hi)
-{
- u32 hi_buf[1 + sizeof(*hi) / sizeof(u32)];
- u32 *s;
- u32 chksum;
- int i;
-
- memset(hi_buf, 0, sizeof(hi_buf));
-
- s = hi_buf;
- s++;
- *s++ = hi->master_mode;
- for (i = 0; i < (sizeof(hi->ch_serial_map) / sizeof(hi->ch_serial_map[0])) / 2; i++)
- *s++ = ((u32)hi->ch_serial_map[i * 2 + 1].slot_id << 24) | ((u32)hi->ch_serial_map[i * 2 + 1].port_id << 16) |
- ((u32)hi->ch_serial_map[i * 2 + 0].slot_id << 8) | (u32)hi->ch_serial_map[i * 2 + 0].port_id;
-
- for (i = 0; i < sizeof(hi->clk_divider)/sizeof(hi->clk_divider[0]); i++)
- *s++ = hi->clk_divider[i];
-
- *s++ = hi->initmode;
- *s++ = hi->pllm;
- for (i = 0; i < sizeof(hi->div)/sizeof(hi->div[0]); i++)
- *s++ = hi->div[i];
- *s++ = hi->oscdiv1;
-
- chksum = 0;
- for (i = 1; i < sizeof(hi_buf)/sizeof(hi_buf[0]); i++)
- chksum += hi_buf[i];
- hi_buf[0] = -chksum;
-
- c62_write(0x1000, hi_buf, sizeof(hi_buf) / sizeof(hi_buf[0]));
-}
-
-static void run_bootstrap(void)
-{
- dsp_go_slow();
-
- hi_write(&hi_default);
-
- /* signal interrupt */
- dsp_write_hpic(0x0002);
- dsp_delay();
-
- dsp_go_fast();
-}
-
-#endif
-
-/***********************************************************************************************************/
-
-int board_post_dsp(int flags)
-{
- u32 ramS, ramE;
- u32 data, data2;
- int i, j, k;
-#if !defined(CONFIG_NETTA_6412)
- int r;
-#endif
- dsp_reset();
- dsp_init_hpic();
-#if !defined(CONFIG_NETTA_6412)
- dsp_go_slow();
-#endif
- data = 0x11223344;
- dsp_write_hpic_word(DSP_HPIA, data);
- data2 = dsp_read_hpic_word(DSP_HPIA);
- if (data2 != 0x11223344) {
- printf("HPIA: ** ERROR; wrote 0x%08X read 0x%08X **\n", data, data2);
- goto err;
- }
-
- data = 0xFFEEDDCC;
- dsp_write_hpic_word(DSP_HPIA, data);
- data2 = dsp_read_hpic_word(DSP_HPIA);
- if (data2 != 0xFFEEDDCC) {
- printf("HPIA: ** ERROR; wrote 0x%08X read 0x%08X **\n", data, data2);
- goto err;
- }
-#if defined(CONFIG_NETTA_6412)
- dsp_dram_initialize();
-#else
- r = load_bootstrap();
- if (r < 0) {
- printf("BOOTSTRAP: ** ERROR ** failed to load\n");
- goto err;
- }
-
- run_bootstrap();
-
- dsp_go_fast();
-#endif
- printf(" ");
-
- /* test RAMs */
- for (k = 0; k < sizeof(ranges)/sizeof(ranges[0]); k++) {
-
- ramS = ranges[k].start;
- ramE = ranges[k].start + ranges[k].size;
-
- for (j = 0; j < 3; j++) {
-
- printf("\b\b\b\bR%d.%d", k, j);
-
- for (i = ramS; i < ramE; i += 4) {
-
- data = 0;
- switch (j) {
- case 0: data = 0xAA55AA55; break;
- case 1: data = 0x55AA55AA; break;
- case 2: data = (u32)i; break;
- }
-
- c62_write_word(i, data);
- data2 = c62_read_word(i);
- if (data != data2) {
- printf(" ** ERROR at 0x%08X; wrote 0x%08X read 0x%08X **\n", i, data, data2);
- goto err;
- }
- }
- }
- }
-
- printf("\b\b\b\b \b\b\b\bOK\n");
-#if !defined(CONFIG_NETTA_6412)
- /* XXX assume that this works */
- load_bootstrap();
- run_bootstrap();
- dsp_go_fast();
-#endif
- return 0;
-
-err:
- return -1;
-}
-
-int board_dsp_reset(void)
-{
-#if !defined(CONFIG_NETTA_6412)
- int r;
-#endif
- dsp_reset();
- dsp_init_hpic();
-#if defined(CONFIG_NETTA_6412)
- dsp_dram_initialize();
-#else
- dsp_go_slow();
- r = load_bootstrap();
- if (r < 0)
- return r;
-
- run_bootstrap();
- dsp_go_fast();
-#endif
- return 0;
-}
diff --git a/board/netta/flash.c b/board/netta/flash.c
deleted file mode 100644
index ca3e061c27..0000000000
--- a/board/netta/flash.c
+++ /dev/null
@@ -1,508 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-static int write_byte(flash_info_t * info, ulong dest, uchar data);
-static void flash_get_offsets(ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init(void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size;
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i)
- flash_info[i].flash_id = FLASH_UNKNOWN;
-
- size = flash_get_size((vu_long *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n", size, size << 20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | (memctl->memc_br0 & ~(BR_BA_MSK));
-
- /* Re-do sizing to get full correct info */
- size = flash_get_size((vu_long *) CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets(CFG_FLASH_BASE, &flash_info[0]);
-
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE, CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-
-#ifdef CFG_ENV_ADDR_REDUND
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE_REDUND - 1,
- &flash_info[0]);
-#endif
-
-
- flash_info[0].size = size;
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets(ulong base, flash_info_t * info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000);
- }
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf("FUJITSU ");
- break;
- case FLASH_MAN_MX:
- printf("MXIC ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- printf("AM29LV040B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400B:
- printf("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T:
- printf("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B:
- printf("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T:
- printf("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B:
- printf("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T:
- printf("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B:
- printf("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- break;
- }
-
- printf(" Size: %ld MB in %d Sectors\n", info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf("\n ");
- printf(" %08lX%s", info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size(vu_long * addr, flash_info_t * info)
-{
- short i;
- uchar mid;
- uchar pid;
- vu_char *caddr = (vu_char *) addr;
- ulong base = (ulong) addr;
-
-
- /* Write auto select command: read Manufacturer ID */
- caddr[0x0555] = 0xAA;
- caddr[0x02AA] = 0x55;
- caddr[0x0555] = 0x90;
-
- mid = caddr[0];
- switch (mid) {
- case (AMD_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (MX_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_MX;
- break;
- case (STM_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- pid = caddr[1]; /* device ID */
- switch (pid) {
- case (AMD_ID_LV400T & 0xFF):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case (AMD_ID_LV400B & 0xFF):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case (AMD_ID_LV800T & 0xFF):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800B & 0xFF):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV160T & 0xFF):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV160B & 0xFF):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV040B & 0xFF):
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break;
-
- case (STM_ID_M29W040B & 0xFF):
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break;
-
-#if 0 /* enable when device IDs are available */
- case (AMD_ID_LV320T & 0xFF):
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV320B & 0xFF):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- printf(" ");
- /* set up sector start address table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000);
- }
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection: D0 = 1 if protected */
- caddr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = caddr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- caddr = (vu_char *) info->start[0];
-
- caddr[0x0555] = 0xAA;
- caddr[0x02AA] = 0x55;
- caddr[0x0555] = 0xF0;
-
- udelay(20000);
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-{
- vu_char *addr = (vu_char *) (info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("- missing\n");
- } else {
- printf("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf("Can't erase unknown flash type %08lx - aborted\n", info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x80;
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_char *) (info->start[sect]);
- addr[0] = 0x30;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay(1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer(0);
- last = start;
- addr = (vu_char *) (info->start[l_sect]);
- while ((addr[0] & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (vu_char *) info->start[0];
- addr[0] = 0xF0; /* reset bank */
-
- printf(" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- int rc;
-
- while (cnt > 0) {
- if ((rc = write_byte(info, addr++, *src++)) != 0) {
- return (rc);
- }
- --cnt;
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte(flash_info_t * info, ulong dest, uchar data)
-{
- vu_char *addr = (vu_char *) (info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_char *) dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0xA0;
-
- *((vu_char *) dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer(0);
- while ((*((vu_char *) dest) & 0x80) != (data & 0x80)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/netta/netta.c b/board/netta/netta.c
deleted file mode 100644
index 4923e3adda..0000000000
--- a/board/netta/netta.c
+++ /dev/null
@@ -1,600 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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
- */
-
-/*
- * Pantelis Antoniou, Intracom S.A., panto@intracom.gr
- * U-Boot port on NetTA4 board
- */
-
-#include <common.h>
-#include <miiphy.h>
-
-#include "mpc8xx.h"
-
-#ifdef CONFIG_HW_WATCHDOG
-#include <watchdog.h>
-#endif
-
-int fec8xx_miiphy_read(char *devname, unsigned char addr,
- unsigned char reg, unsigned short *value);
-int fec8xx_miiphy_write(char *devname, unsigned char addr,
- unsigned char reg, unsigned short value);
-
-/****************************************************************/
-
-/* some sane bit macros */
-#define _BD(_b) (1U << (31-(_b)))
-#define _BDR(_l, _h) (((((1U << (31-(_l))) - 1) << 1) | 1) & ~((1U << (31-(_h))) - 1))
-
-#define _BW(_b) (1U << (15-(_b)))
-#define _BWR(_l, _h) (((((1U << (15-(_l))) - 1) << 1) | 1) & ~((1U << (15-(_h))) - 1))
-
-#define _BB(_b) (1U << (7-(_b)))
-#define _BBR(_l, _h) (((((1U << (7-(_l))) - 1) << 1) | 1) & ~((1U << (7-(_h))) - 1))
-
-#define _B(_b) _BD(_b)
-#define _BR(_l, _h) _BDR(_l, _h)
-
-/****************************************************************/
-
-/*
- * Check Board Identity:
- *
- * Return 1 always.
- */
-
-int checkboard(void)
-{
- printf ("Intracom NETTA"
-#if defined(CONFIG_NETTA_ISDN)
- " with ISDN support"
-#endif
-#if defined(CONFIG_NETTA_6412)
- " (DSP:TI6412)"
-#else
- " (DSP:TI6711)"
-#endif
- "\n"
- );
- return (0);
-}
-
-/****************************************************************/
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-/****************************************************************/
-
-#define CS_0000 0x00000000
-#define CS_0001 0x10000000
-#define CS_0010 0x20000000
-#define CS_0011 0x30000000
-#define CS_0100 0x40000000
-#define CS_0101 0x50000000
-#define CS_0110 0x60000000
-#define CS_0111 0x70000000
-#define CS_1000 0x80000000
-#define CS_1001 0x90000000
-#define CS_1010 0xA0000000
-#define CS_1011 0xB0000000
-#define CS_1100 0xC0000000
-#define CS_1101 0xD0000000
-#define CS_1110 0xE0000000
-#define CS_1111 0xF0000000
-
-#define BS_0000 0x00000000
-#define BS_0001 0x01000000
-#define BS_0010 0x02000000
-#define BS_0011 0x03000000
-#define BS_0100 0x04000000
-#define BS_0101 0x05000000
-#define BS_0110 0x06000000
-#define BS_0111 0x07000000
-#define BS_1000 0x08000000
-#define BS_1001 0x09000000
-#define BS_1010 0x0A000000
-#define BS_1011 0x0B000000
-#define BS_1100 0x0C000000
-#define BS_1101 0x0D000000
-#define BS_1110 0x0E000000
-#define BS_1111 0x0F000000
-
-#define A10_AAAA 0x00000000
-#define A10_AAA0 0x00200000
-#define A10_AAA1 0x00300000
-#define A10_000A 0x00800000
-#define A10_0000 0x00A00000
-#define A10_0001 0x00B00000
-#define A10_111A 0x00C00000
-#define A10_1110 0x00E00000
-#define A10_1111 0x00F00000
-
-#define RAS_0000 0x00000000
-#define RAS_0001 0x00040000
-#define RAS_1110 0x00080000
-#define RAS_1111 0x000C0000
-
-#define CAS_0000 0x00000000
-#define CAS_0001 0x00010000
-#define CAS_1110 0x00020000
-#define CAS_1111 0x00030000
-
-#define WE_0000 0x00000000
-#define WE_0001 0x00004000
-#define WE_1110 0x00008000
-#define WE_1111 0x0000C000
-
-#define GPL4_0000 0x00000000
-#define GPL4_0001 0x00001000
-#define GPL4_1110 0x00002000
-#define GPL4_1111 0x00003000
-
-#define GPL5_0000 0x00000000
-#define GPL5_0001 0x00000400
-#define GPL5_1110 0x00000800
-#define GPL5_1111 0x00000C00
-#define LOOP 0x00000080
-
-#define EXEN 0x00000040
-
-#define AMX_COL 0x00000000
-#define AMX_ROW 0x00000020
-#define AMX_MAR 0x00000030
-
-#define NA 0x00000008
-
-#define UTA 0x00000004
-
-#define TODT 0x00000002
-
-#define LAST 0x00000001
-
-/* #define CAS_LATENCY 3 */
-#define CAS_LATENCY 2
-
-const uint sdram_table[0x40] = {
-
-#if CAS_LATENCY == 3
- /* RSS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0000 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_,
-
- /* RBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WSS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0000 | BS_0001 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL | UTA, /* WRITE */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL, /* WRITE */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0001 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-#endif
-
-#if CAS_LATENCY == 2
- /* RSS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_0001 | A10_0000 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_1110 | BS_1111 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
- /* RBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0001 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1110 | BS_1111 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WSS */
- CS_0001 | BS_1111 | A10_AAA0 | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1110 | AMX_COL, /* NOP */
- CS_0000 | BS_0001 | A10_0001 | RAS_1110 | CAS_0001 | WE_0000 | AMX_COL | UTA, /* WRITE */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_,
-
- /* WBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1110 | AMX_COL, /* NOP */
- CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_0001 | AMX_COL, /* WRITE */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1110 | BS_0001 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
-#endif
-
- /* UPT */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_0001 | WE_1111 | AMX_COL | UTA | LOOP, /* ATRFR */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | LOOP, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
- /* EXC */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | LAST,
- _NOT_USED_,
-
- /* REG */
- CS_1110 | BS_1111 | A10_1110 | RAS_1110 | CAS_1110 | WE_1110 | AMX_MAR | UTA,
- CS_0001 | BS_1111 | A10_0001 | RAS_0001 | CAS_0001 | WE_0001 | AMX_MAR | UTA | LAST,
-};
-
-/* 0xC8 = 0b11001000 , CAS3, >> 2 = 0b00 11 0 010 */
-/* 0x88 = 0b10001000 , CAS2, >> 2 = 0b00 10 0 010 */
-#define MAR_SDRAM_INIT ((CAS_LATENCY << 6) | 0x00000008LU)
-
-/* 8 */
-#define CFG_MAMR ((CFG_MAMR_PTA << MAMR_PTA_SHIFT) | MAMR_PTAE | \
- MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 | \
- MAMR_RLFA_1X | MAMR_WLFA_1X | MAMR_TLFA_4X)
-
-void check_ram(unsigned int addr, unsigned int size)
-{
- unsigned int i, j, v, vv;
- volatile unsigned int *p;
- unsigned int pv;
-
- p = (unsigned int *)addr;
- pv = (unsigned int)p;
- for (i = 0; i < size / sizeof(unsigned int); i++, pv += sizeof(unsigned int))
- *p++ = pv;
-
- p = (unsigned int *)addr;
- for (i = 0; i < size / sizeof(unsigned int); i++) {
- v = (unsigned int)p;
- vv = *p;
- if (vv != v) {
- printf("%p: read %08x instead of %08x\n", p, vv, v);
- hang();
- }
- p++;
- }
-
- for (j = 0; j < 5; j++) {
- switch (j) {
- case 0: v = 0x00000000; break;
- case 1: v = 0xffffffff; break;
- case 2: v = 0x55555555; break;
- case 3: v = 0xaaaaaaaa; break;
- default:v = 0xdeadbeef; break;
- }
- p = (unsigned int *)addr;
- for (i = 0; i < size / sizeof(unsigned int); i++) {
- *p = v;
- vv = *p;
- if (vv != v) {
- printf("%p: read %08x instead of %08x\n", p, vv, v);
- hang();
- }
- *p = ~v;
- p++;
- }
- }
-}
-
-long int initdram(int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size;
-
- upmconfig(UPMB, (uint *) sdram_table, sizeof(sdram_table) / sizeof(uint));
-
- /*
- * Preliminary prescaler for refresh
- */
- memctl->memc_mptpr = MPTPR_PTP_DIV8;
-
- memctl->memc_mar = MAR_SDRAM_INIT; /* 32-bit address to be output on the address bus if AMX = 0b11 */
-
- /*
- * Map controller bank 3 to the SDRAM bank at preliminary address.
- */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
-
- memctl->memc_mbmr = CFG_MAMR & ~MAMR_PTAE; /* no refresh yet */
-
- udelay(200);
-
- /* perform SDRAM initialisation sequence */
- memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_B | MCR_MB_CS3 | MCR_MLCF(1) | MCR_MAD(0x3C); /* precharge all */
- udelay(1);
-
- memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_B | MCR_MB_CS3 | MCR_MLCF(2) | MCR_MAD(0x30); /* refresh 2 times(0) */
- udelay(1);
-
- memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_B | MCR_MB_CS3 | MCR_MLCF(1) | MCR_MAD(0x3E); /* exception program (write mar)*/
- udelay(1);
-
- memctl->memc_mbmr |= MAMR_PTAE; /* enable refresh */
-
- udelay(10000);
-
- {
- u32 d1, d2;
-
- d1 = 0xAA55AA55;
- *(volatile u32 *)0 = d1;
- d2 = *(volatile u32 *)0;
- if (d1 != d2) {
- printf("DRAM fails: wrote 0x%08x read 0x%08x\n", d1, d2);
- hang();
- }
-
- d1 = 0x55AA55AA;
- *(volatile u32 *)0 = d1;
- d2 = *(volatile u32 *)0;
- if (d1 != d2) {
- printf("DRAM fails: wrote 0x%08x read 0x%08x\n", d1, d2);
- hang();
- }
- }
-
- size = get_ram_size((long *)0, SDRAM_MAX_SIZE);
-
-#if 0
- printf("check 0\n");
- check_ram(( 0 << 20), (2 << 20));
- printf("check 16\n");
- check_ram((16 << 20), (2 << 20));
- printf("check 32\n");
- check_ram((32 << 20), (2 << 20));
- printf("check 48\n");
- check_ram((48 << 20), (2 << 20));
-#endif
-
- if (size == 0) {
- printf("SIZE is zero: LOOP on 0\n");
- for (;;) {
- *(volatile u32 *)0 = 0;
- (void)*(volatile u32 *)0;
- }
- }
-
- return size;
-}
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_r(void)
-{
- return(0);
-}
-
-void reset_phys(void)
-{
- int phyno;
- unsigned short v;
-
- /* reset the damn phys */
- mii_init();
-
- for (phyno = 0; phyno < 32; ++phyno) {
- fec8xx_miiphy_read(NULL, phyno, PHY_PHYIDR1, &v);
- if (v == 0xFFFF)
- continue;
- fec8xx_miiphy_write(NULL, phyno, PHY_BMCR, PHY_BMCR_POWD);
- udelay(10000);
- fec8xx_miiphy_write(NULL, phyno, PHY_BMCR,
- PHY_BMCR_RESET | PHY_BMCR_AUTON);
- udelay(10000);
- }
-}
-
-extern int board_dsp_reset(void);
-
-int last_stage_init(void)
-{
- int r;
-
- reset_phys();
- r = board_dsp_reset();
- if (r < 0)
- printf("*** WARNING *** DSP reset failed (run diagnostics)\n");
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* GP = general purpose, SP = special purpose (on chip peripheral) */
-
-/* bits that can have a special purpose or can be configured as inputs/outputs */
-#define PA_GP_INMASK (_BWR(3) | _BWR(7, 9) | _BW(11))
-#define PA_GP_OUTMASK (_BW(6) | _BW(10) | _BWR(12, 15))
-#define PA_SP_MASK (_BWR(0, 2) | _BWR(4, 5))
-#define PA_ODR_VAL 0
-#define PA_GP_OUTVAL (_BW(13) | _BWR(14, 15))
-#define PA_SP_DIRVAL 0
-
-#define PB_GP_INMASK (_B(28) | _B(31))
-#define PB_GP_OUTMASK (_BR(15, 19) | _BR(26, 27) | _BR(29, 30))
-#define PB_SP_MASK (_BR(22, 25))
-#define PB_ODR_VAL 0
-#define PB_GP_OUTVAL (_BR(15, 19) | _BR(26, 27) | _BR(29, 31))
-#define PB_SP_DIRVAL 0
-
-#define PC_GP_INMASK (_BW(5) | _BW(7) | _BW(8) | _BWR(9, 11) | _BWR(13, 15))
-#define PC_GP_OUTMASK (_BW(6) | _BW(12))
-#define PC_SP_MASK (_BW(4) | _BW(8))
-#define PC_SOVAL 0
-#define PC_INTVAL _BW(7)
-#define PC_GP_OUTVAL (_BW(6) | _BW(12))
-#define PC_SP_DIRVAL 0
-
-#define PD_GP_INMASK 0
-#define PD_GP_OUTMASK _BWR(3, 15)
-#define PD_SP_MASK 0
-
-#if defined(CONFIG_NETTA_6412)
-
-#define PD_GP_OUTVAL (_BWR(5, 7) | _BW(9) | _BW(11) | _BW(15))
-
-#else
-
-#define PD_GP_OUTVAL (_BWR(5, 7) | _BW(9) | _BW(11))
-
-#endif
-
-#define PD_SP_DIRVAL 0
-
-int board_early_init_f(void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile iop8xx_t *ioport = &immap->im_ioport;
- volatile cpm8xx_t *cpm = &immap->im_cpm;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- /* CS1: NAND chip select */
- memctl->memc_or1 = ((0xFFFFFFFFLU & ~(NAND_SIZE - 1)) | OR_BI | OR_SCY_2_CLK | OR_TRLX | OR_ACS_DIV2) ;
- memctl->memc_br1 = ((NAND_BASE & BR_BA_MSK) | BR_PS_8 | BR_V);
-#if !defined(CONFIG_NETTA_6412)
- /* CS2: DSP */
- memctl->memc_or2 = ((0xFFFFFFFFLU & ~(DSP_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_SCY_7_CLK | OR_ACS_DIV2);
- memctl->memc_br2 = ((DSP_BASE & BR_BA_MSK) | BR_PS_16 | BR_V);
-#else
- /* CS6: DSP */
- memctl->memc_or6 = ((0xFFFFFFFFLU & ~(DSP_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_SCY_7_CLK | OR_ACS_DIV2);
- memctl->memc_br6 = ((DSP_BASE & BR_BA_MSK) | BR_PS_16 | BR_V);
-#endif
- /* CS4: External register chip select */
- memctl->memc_or4 = ((0xFFFFFFFFLU & ~(ER_SIZE - 1)) | OR_BI | OR_SCY_4_CLK);
- memctl->memc_br4 = ((ER_BASE & BR_BA_MSK) | BR_PS_32 | BR_V);
-
- /* CS5: dummy for accurate delay */
- memctl->memc_or5 = ((0xFFFFFFFFLU & ~(DUMMY_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_SCY_0_CLK | OR_ACS_DIV2);
- memctl->memc_br5 = ((DUMMY_BASE & BR_BA_MSK) | BR_PS_32 | BR_V);
-
- ioport->iop_padat = PA_GP_OUTVAL;
- ioport->iop_paodr = PA_ODR_VAL;
- ioport->iop_padir = PA_GP_OUTMASK | PA_SP_DIRVAL;
- ioport->iop_papar = PA_SP_MASK;
-
- cpm->cp_pbdat = PB_GP_OUTVAL;
- cpm->cp_pbodr = PB_ODR_VAL;
- cpm->cp_pbdir = PB_GP_OUTMASK | PB_SP_DIRVAL;
- cpm->cp_pbpar = PB_SP_MASK;
-
- ioport->iop_pcdat = PC_GP_OUTVAL;
- ioport->iop_pcdir = PC_GP_OUTMASK | PC_SP_DIRVAL;
- ioport->iop_pcso = PC_SOVAL;
- ioport->iop_pcint = PC_INTVAL;
- ioport->iop_pcpar = PC_SP_MASK;
-
- ioport->iop_pddat = PD_GP_OUTVAL;
- ioport->iop_pddir = PD_GP_OUTMASK | PD_SP_DIRVAL;
- ioport->iop_pdpar = PD_SP_MASK;
-
- /* ioport->iop_pddat |= (1 << (15 - 6)) | (1 << (15 - 7)); */
-
- return 0;
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND) && defined(CFG_NAND_LEGACY)
-
-#include <linux/mtd/nand_legacy.h>
-
-extern ulong nand_probe(ulong physadr);
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- unsigned long totlen = nand_probe(CFG_NAND_BASE);
-
- printf ("%4lu MB\n", totlen >> 20);
-}
-#endif
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-
-int pcmcia_init(void)
-{
- return 0;
-}
-
-#endif
-
-#ifdef CONFIG_POST
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed(void)
-{
- return 0; /* No hotkeys supported */
-}
-#endif
-
-#ifdef CONFIG_HW_WATCHDOG
-
-void hw_watchdog_reset(void)
-{
- /* XXX add here the really funky stuff */
-}
-
-#endif
diff --git a/board/netta/pcmcia.c b/board/netta/pcmcia.c
deleted file mode 100644
index a3709f7f77..0000000000
--- a/board/netta/pcmcia.c
+++ /dev/null
@@ -1,370 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#undef CONFIG_PCMCIA
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-#define CONFIG_PCMCIA
-#endif
-
-#if (CONFIG_COMMANDS & CFG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-/* some sane bit macros */
-#define _BD(_b) (1U << (31-(_b)))
-#define _BDR(_l, _h) (((((1U << (31-(_l))) - 1) << 1) | 1) & ~((1U << (31-(_h))) - 1))
-
-#define _BW(_b) (1U << (15-(_b)))
-#define _BWR(_l, _h) (((((1U << (15-(_l))) - 1) << 1) | 1) & ~((1U << (15-(_h))) - 1))
-
-#define _BB(_b) (1U << (7-(_b)))
-#define _BBR(_l, _h) (((((1U << (7-(_l))) - 1) << 1) | 1) & ~((1U << (7-(_h))) - 1))
-
-#define _B(_b) _BD(_b)
-#define _BR(_l, _h) _BDR(_l, _h)
-
-#define PCMCIA_BOARD_MSG "NETTA"
-
-static const unsigned short vppd_masks[2] = { _BW(14), _BW(15) };
-
-static void cfg_vppd(int no)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- unsigned short mask;
-
- if ((unsigned int)no >= sizeof(vppd_masks)/sizeof(vppd_masks[0]))
- return;
-
- mask = vppd_masks[no];
-
- immap->im_ioport.iop_papar &= ~mask;
- immap->im_ioport.iop_paodr &= ~mask;
- immap->im_ioport.iop_padir |= mask;
-}
-
-static void set_vppd(int no, int what)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- unsigned short mask;
-
- if ((unsigned int)no >= sizeof(vppd_masks)/sizeof(vppd_masks[0]))
- return;
-
- mask = vppd_masks[no];
-
- if (what)
- immap->im_ioport.iop_padat |= mask;
- else
- immap->im_ioport.iop_padat &= ~mask;
-}
-
-static const unsigned short vccd_masks[2] = { _BW(10), _BW(6) };
-
-static void cfg_vccd(int no)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- unsigned short mask;
-
- if ((unsigned int)no >= sizeof(vccd_masks)/sizeof(vccd_masks[0]))
- return;
-
- mask = vccd_masks[no];
-
- immap->im_ioport.iop_papar &= ~mask;
- immap->im_ioport.iop_paodr &= ~mask;
- immap->im_ioport.iop_padir |= mask;
-}
-
-static void set_vccd(int no, int what)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- unsigned short mask;
-
- if ((unsigned int)no >= sizeof(vccd_masks)/sizeof(vccd_masks[0]))
- return;
-
- mask = vccd_masks[no];
-
- if (what)
- immap->im_ioport.iop_padat |= mask;
- else
- immap->im_ioport.iop_padat &= ~mask;
-}
-
-static const unsigned short oc_mask = _BW(8);
-
-static void cfg_oc(void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- unsigned short mask = oc_mask;
-
- immap->im_ioport.iop_pcdir &= ~mask;
- immap->im_ioport.iop_pcso &= ~mask;
- immap->im_ioport.iop_pcint &= ~mask;
- immap->im_ioport.iop_pcpar &= ~mask;
-}
-
-static int get_oc(void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- unsigned short mask = oc_mask;
- int what;
-
- what = !!(immap->im_ioport.iop_pcdat & mask);;
- return what;
-}
-
-static const unsigned short shdn_mask = _BW(12);
-
-static void cfg_shdn(void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- unsigned short mask;
-
- mask = shdn_mask;
-
- immap->im_ioport.iop_papar &= ~mask;
- immap->im_ioport.iop_paodr &= ~mask;
- immap->im_ioport.iop_padir |= mask;
-}
-
-static void set_shdn(int what)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- unsigned short mask;
-
- mask = shdn_mask;
-
- if (what)
- immap->im_ioport.iop_padat |= mask;
- else
- immap->im_ioport.iop_padat &= ~mask;
-}
-
-static void cfg_ports (void)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
-
- immap = (immap_t *)CFG_IMMR;
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
-
-
- cfg_vppd(0); cfg_vppd(1); /* VPPD0,VPPD1 VAVPP => Hi-Z */
- cfg_vccd(0); cfg_vccd(1); /* 3V and 5V off */
- cfg_shdn();
- cfg_oc();
-
- /*
- * Configure Port A for TPS2211 PC-Card Power-Interface Switch
- *
- * Switch off all voltages, assert shutdown
- */
- set_vppd(0, 1); set_vppd(1, 1);
- set_vccd(0, 0); set_vccd(1, 0);
- set_shdn(1);
-
- udelay(100000);
-}
-
-int pcmcia_hardware_enable(int slot)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- volatile sysconf8xx_t *sysp;
- uint reg, pipr, mask;
- int i;
-
- debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- udelay(10000);
-
- immap = (immap_t *)CFG_IMMR;
- sysp = (sysconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_siu_conf));
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
-
- /* Configure Ports for TPS2211A PC-Card Power-Interface Switch */
- cfg_ports ();
-
- /* clear interrupt state, and disable interrupts */
- pcmp->pcmc_pscr = PCMCIA_MASK(_slot_);
- pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_);
-
- /*
- * Disable interrupts, DMA, and PCMCIA buffers
- * (isolate the interface) and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
-
- udelay(500);
-
- /*
- * Make sure there is a card in the slot, then configure the interface.
- */
- udelay(10000);
- debug ("[%d] %s: PIPR(%p)=0x%x\n",
- __LINE__,__FUNCTION__,
- &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
- if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
- printf (" No Card found\n");
- return (1);
- }
-
- /*
- * Power On: Set VAVCC to 3.3V or 5V, set VAVPP to Hi-Z
- */
- mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot);
- pipr = pcmp->pcmc_pipr;
- debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",
- pipr,
- (reg&PCMCIA_VS1(slot))?"n":"ff",
- (reg&PCMCIA_VS2(slot))?"n":"ff");
-
- if ((pipr & mask) == mask) {
- set_vppd(0, 1); set_vppd(1, 1); /* VAVPP => Hi-Z */
- set_vccd(0, 0); set_vccd(1, 1); /* 5V on, 3V off */
- puts (" 5.0V card found: ");
- } else {
- set_vppd(0, 1); set_vppd(1, 1); /* VAVPP => Hi-Z */
- set_vccd(0, 1); set_vccd(1, 0); /* 5V off, 3V on */
- puts (" 3.3V card found: ");
- }
-
- /* Wait 500 ms; use this to check for over-current */
- for (i=0; i<5000; ++i) {
- if (!get_oc()) {
- printf (" *** Overcurrent - Safety shutdown ***\n");
- set_vccd(0, 0); set_vccd(1, 0); /* VAVPP => Hi-Z */
- return (1);
- }
- udelay (100);
- }
-
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
-
- udelay(250000); /* some cards need >150 ms to come up :-( */
-
- debug ("# hardware_enable done\n");
-
- return (0);
-}
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
- volatile immap_t *immap;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
-
- debug ("hardware_disable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- immap = (immap_t *)CFG_IMMR;
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
-
- /* Configure PCMCIA General Control Register */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
-
- /* All voltages off / Hi-Z */
- set_vppd(0, 1); set_vppd(1, 1);
- set_vccd(0, 1); set_vccd(1, 1);
-
- udelay(10000);
-
- return (0);
-}
-#endif /* CFG_CMD_PCMCIA */
-
-
-int pcmcia_voltage_set(int slot, int vcc, int vpp)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
- ushort sreg;
-
- debug ("voltage_set: "
- PCMCIA_BOARD_MSG
- " Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",
- 'A'+slot, vcc/10, vcc%10, vpp/10, vcc%10);
-
- immap = (immap_t *)CFG_IMMR;
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- /*
- * Disable PCMCIA buffers (isolate the interface)
- * and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- /*
- * Configure Port C pins for
- * 5 Volts Enable and 3 Volts enable,
- * Turn all power pins to Hi-Z
- */
- debug ("PCMCIA power OFF\n");
- cfg_ports (); /* Enables switch, but all in Hi-Z */
-
- sreg = immap->im_ioport.iop_pcdat;
- set_vppd(0, 1); set_vppd(1, 1);
-
- switch(vcc) {
- case 0:
- break; /* Switch off */
-
- case 33:
- set_vccd(0, 1); set_vccd(1, 0);
- break;
-
- case 50:
- set_vccd(0, 0); set_vccd(1, 1);
- break;
-
- default:
- goto done;
- }
-
- /* Checking supported voltages */
-
- debug ("PIPR: 0x%x --> %s\n",
- pcmp->pcmc_pipr,
- (pcmp->pcmc_pipr & 0x00008000) ? "only 5 V" : "can do 3.3V");
-
-done:
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",
- slot+'A');
- return (0);
-}
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/netta/u-boot.lds b/board/netta/u-boot.lds
deleted file mode 100644
index 9f2901c869..0000000000
--- a/board/netta/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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)
- cpu/mpc8xx/traps.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/time.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/netta/u-boot.lds.debug b/board/netta/u-boot.lds.debug
deleted file mode 100644
index 004e7fd354..0000000000
--- a/board/netta/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/netta2/Makefile b/board/netta2/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/netta2/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/netta2/config.mk b/board/netta2/config.mk
deleted file mode 100644
index 8497ebc812..0000000000
--- a/board/netta2/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (C) Copyright 2000-2004
-# 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
-#
-
-#
-# netVia Boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/netta2/flash.c b/board/netta2/flash.c
deleted file mode 100644
index a1c87f5131..0000000000
--- a/board/netta2/flash.c
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-static int write_byte(flash_info_t * info, ulong dest, uchar data);
-static void flash_get_offsets(ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init(void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size;
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i)
- flash_info[i].flash_id = FLASH_UNKNOWN;
-
- size = flash_get_size((vu_long *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size << 20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | (memctl->memc_br0 & ~(BR_BA_MSK));
-
- /* Re-do sizing to get full correct info */
- size = flash_get_size((vu_long *) CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets(CFG_FLASH_BASE, &flash_info[0]);
-
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE, CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-
-#ifdef CFG_ENV_ADDR_REDUND
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE_REDUND - 1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size;
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets(ulong base, flash_info_t * info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000);
- }
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf("FUJITSU ");
- break;
- case FLASH_MAN_MX:
- printf("MXIC ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- printf("AM29LV040B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400B:
- printf("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T:
- printf("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B:
- printf("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T:
- printf("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B:
- printf("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T:
- printf("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B:
- printf("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- break;
- }
-
- printf(" Size: %ld MB in %d Sectors\n", info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf("\n ");
- printf(" %08lX%s", info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size(vu_long * addr, flash_info_t * info)
-{
- short i;
- uchar mid;
- uchar pid;
- vu_char *caddr = (vu_char *) addr;
- ulong base = (ulong) addr;
-
- /* Write auto select command: read Manufacturer ID */
- caddr[0x0555] = 0xAA;
- caddr[0x02AA] = 0x55;
- caddr[0x0555] = 0x90;
-
- mid = caddr[0];
- switch (mid) {
- case (AMD_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (MX_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_MX;
- break;
- case (STM_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- pid = caddr[1]; /* device ID */
- switch (pid) {
- case (AMD_ID_LV400T & 0xFF):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case (AMD_ID_LV400B & 0xFF):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case (AMD_ID_LV800T & 0xFF):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800B & 0xFF):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV160T & 0xFF):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV160B & 0xFF):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV040B & 0xFF):
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break;
-
- case (STM_ID_M29W040B & 0xFF):
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break;
-
-#if 0 /* enable when device IDs are available */
- case (AMD_ID_LV320T & 0xFF):
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV320B & 0xFF):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- printf(" ");
- /* set up sector start address table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000);
- }
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection: D0 = 1 if protected */
- caddr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = caddr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- caddr = (vu_char *) info->start[0];
-
- caddr[0x0555] = 0xAA;
- caddr[0x02AA] = 0x55;
- caddr[0x0555] = 0xF0;
-
- udelay(20000);
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-{
- vu_char *addr = (vu_char *) (info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("- missing\n");
- } else {
- printf("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf("Can't erase unknown flash type %08lx - aborted\n", info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x80;
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_char *) (info->start[sect]);
- addr[0] = 0x30;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay(1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer(0);
- last = start;
- addr = (vu_char *) (info->start[l_sect]);
- while ((addr[0] & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (vu_char *) info->start[0];
- addr[0] = 0xF0; /* reset bank */
-
- printf(" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- int rc;
-
- while (cnt > 0) {
- if ((rc = write_byte(info, addr++, *src++)) != 0) {
- return (rc);
- }
- --cnt;
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte(flash_info_t * info, ulong dest, uchar data)
-{
- vu_char *addr = (vu_char *) (info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_char *) dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0xA0;
-
- *((vu_char *) dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer(0);
- while ((*((vu_char *) dest) & 0x80) != (data & 0x80)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/netta2/netta2.c b/board/netta2/netta2.c
deleted file mode 100644
index 3ca7bd3c86..0000000000
--- a/board/netta2/netta2.c
+++ /dev/null
@@ -1,670 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Pantelis Antoniou, Intracom S.A., panto@intracom.gr
- * 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
- */
-
-/*
- * Pantelis Antoniou, Intracom S.A., panto@intracom.gr
- * U-Boot port on NetTA4 board
- */
-
-#include <common.h>
-#include <miiphy.h>
-
-#include "mpc8xx.h"
-
-#ifdef CONFIG_HW_WATCHDOG
-#include <watchdog.h>
-#endif
-
-int fec8xx_miiphy_read(char *devname, unsigned char addr,
- unsigned char reg, unsigned short *value);
-int fec8xx_miiphy_write(char *devname, unsigned char addr,
- unsigned char reg, unsigned short value);
-
-/****************************************************************/
-
-/* some sane bit macros */
-#define _BD(_b) (1U << (31-(_b)))
-#define _BDR(_l, _h) (((((1U << (31-(_l))) - 1) << 1) | 1) & ~((1U << (31-(_h))) - 1))
-
-#define _BW(_b) (1U << (15-(_b)))
-#define _BWR(_l, _h) (((((1U << (15-(_l))) - 1) << 1) | 1) & ~((1U << (15-(_h))) - 1))
-
-#define _BB(_b) (1U << (7-(_b)))
-#define _BBR(_l, _h) (((((1U << (7-(_l))) - 1) << 1) | 1) & ~((1U << (7-(_h))) - 1))
-
-#define _B(_b) _BD(_b)
-#define _BR(_l, _h) _BDR(_l, _h)
-
-/****************************************************************/
-
-/*
- * Check Board Identity:
- *
- * Return 1 always.
- */
-
-int checkboard(void)
-{
- printf ("Intracom NetTA2 V%d\n", CONFIG_NETTA2_VERSION);
- return (0);
-}
-
-/****************************************************************/
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-/****************************************************************/
-
-#define CS_0000 0x00000000
-#define CS_0001 0x10000000
-#define CS_0010 0x20000000
-#define CS_0011 0x30000000
-#define CS_0100 0x40000000
-#define CS_0101 0x50000000
-#define CS_0110 0x60000000
-#define CS_0111 0x70000000
-#define CS_1000 0x80000000
-#define CS_1001 0x90000000
-#define CS_1010 0xA0000000
-#define CS_1011 0xB0000000
-#define CS_1100 0xC0000000
-#define CS_1101 0xD0000000
-#define CS_1110 0xE0000000
-#define CS_1111 0xF0000000
-
-#define BS_0000 0x00000000
-#define BS_0001 0x01000000
-#define BS_0010 0x02000000
-#define BS_0011 0x03000000
-#define BS_0100 0x04000000
-#define BS_0101 0x05000000
-#define BS_0110 0x06000000
-#define BS_0111 0x07000000
-#define BS_1000 0x08000000
-#define BS_1001 0x09000000
-#define BS_1010 0x0A000000
-#define BS_1011 0x0B000000
-#define BS_1100 0x0C000000
-#define BS_1101 0x0D000000
-#define BS_1110 0x0E000000
-#define BS_1111 0x0F000000
-
-#define GPL0_AAAA 0x00000000
-#define GPL0_AAA0 0x00200000
-#define GPL0_AAA1 0x00300000
-#define GPL0_000A 0x00800000
-#define GPL0_0000 0x00A00000
-#define GPL0_0001 0x00B00000
-#define GPL0_111A 0x00C00000
-#define GPL0_1110 0x00E00000
-#define GPL0_1111 0x00F00000
-
-#define GPL1_0000 0x00000000
-#define GPL1_0001 0x00040000
-#define GPL1_1110 0x00080000
-#define GPL1_1111 0x000C0000
-
-#define GPL2_0000 0x00000000
-#define GPL2_0001 0x00010000
-#define GPL2_1110 0x00020000
-#define GPL2_1111 0x00030000
-
-#define GPL3_0000 0x00000000
-#define GPL3_0001 0x00004000
-#define GPL3_1110 0x00008000
-#define GPL3_1111 0x0000C000
-
-#define GPL4_0000 0x00000000
-#define GPL4_0001 0x00001000
-#define GPL4_1110 0x00002000
-#define GPL4_1111 0x00003000
-
-#define GPL5_0000 0x00000000
-#define GPL5_0001 0x00000400
-#define GPL5_1110 0x00000800
-#define GPL5_1111 0x00000C00
-#define LOOP 0x00000080
-
-#define EXEN 0x00000040
-
-#define AMX_COL 0x00000000
-#define AMX_ROW 0x00000020
-#define AMX_MAR 0x00000030
-
-#define NA 0x00000008
-
-#define UTA 0x00000004
-
-#define TODT 0x00000002
-
-#define LAST 0x00000001
-
-#define A10_AAAA GPL0_AAAA
-#define A10_AAA0 GPL0_AAA0
-#define A10_AAA1 GPL0_AAA1
-#define A10_000A GPL0_000A
-#define A10_0000 GPL0_0000
-#define A10_0001 GPL0_0001
-#define A10_111A GPL0_111A
-#define A10_1110 GPL0_1110
-#define A10_1111 GPL0_1111
-
-#define RAS_0000 GPL1_0000
-#define RAS_0001 GPL1_0001
-#define RAS_1110 GPL1_1110
-#define RAS_1111 GPL1_1111
-
-#define CAS_0000 GPL2_0000
-#define CAS_0001 GPL2_0001
-#define CAS_1110 GPL2_1110
-#define CAS_1111 GPL2_1111
-
-#define WE_0000 GPL3_0000
-#define WE_0001 GPL3_0001
-#define WE_1110 GPL3_1110
-#define WE_1111 GPL3_1111
-
-/* #define CAS_LATENCY 3 */
-#define CAS_LATENCY 2
-
-const uint sdram_table[0x40] = {
-
-#if CAS_LATENCY == 3
- /* RSS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0000 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_,
-
- /* RBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WSS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0000 | BS_0001 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL | UTA, /* WRITE */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL, /* WRITE */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0001 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-#endif
-
-#if CAS_LATENCY == 2
- /* RSS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_0001 | A10_0000 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_1110 | BS_1111 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
- /* RBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0001 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1110 | BS_1111 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WSS */
- CS_0001 | BS_1111 | A10_AAA0 | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1110 | AMX_COL, /* NOP */
- CS_0000 | BS_0001 | A10_0001 | RAS_1110 | CAS_0001 | WE_0000 | AMX_COL | UTA, /* WRITE */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_,
-
- /* WBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1110 | AMX_COL, /* NOP */
- CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_0001 | AMX_COL, /* WRITE */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1110 | BS_0001 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
-#endif
-
- /* UPT */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_0001 | WE_1111 | AMX_COL | UTA | LOOP, /* ATRFR */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | LOOP, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
- /* EXC */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | LAST,
- _NOT_USED_,
-
- /* REG */
- CS_1110 | BS_1111 | A10_1110 | RAS_1110 | CAS_1110 | WE_1110 | AMX_MAR | UTA,
- CS_0001 | BS_1111 | A10_0001 | RAS_0001 | CAS_0001 | WE_0001 | AMX_MAR | UTA | LAST,
-};
-
-#if CONFIG_NETTA2_VERSION == 2
-static const uint nandcs_table[0x40] = {
- /* RSS */
- CS_1000 | GPL4_1111 | GPL5_1111 | UTA,
- CS_0000 | GPL4_1110 | GPL5_1111 | UTA,
- CS_0000 | GPL4_0000 | GPL5_1111 | UTA,
- CS_0000 | GPL4_0000 | GPL5_1111 | UTA,
- CS_0000 | GPL4_0000 | GPL5_1111,
- CS_0000 | GPL4_0001 | GPL5_1111 | UTA,
- CS_0000 | GPL4_1111 | GPL5_1111 | UTA,
- CS_0011 | GPL4_1111 | GPL5_1111 | UTA | LAST, /* NOP */
-
- /* RBS */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WSS */
- CS_1000 | GPL4_1111 | GPL5_1110 | UTA,
- CS_0000 | GPL4_1111 | GPL5_0000 | UTA,
- CS_0000 | GPL4_1111 | GPL5_0000 | UTA,
- CS_0000 | GPL4_1111 | GPL5_0000 | UTA,
- CS_0000 | GPL4_1111 | GPL5_0001 | UTA,
- CS_0000 | GPL4_1111 | GPL5_1111 | UTA,
- CS_0000 | GPL4_1111 | GPL5_1111,
- CS_0011 | GPL4_1111 | GPL5_1111 | UTA | LAST,
-
- /* WBS */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* UPT */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* EXC */
- CS_0001 | LAST,
- _NOT_USED_,
-
- /* REG */
- CS_1110 ,
- CS_0001 | LAST,
-};
-#endif
-
-/* 0xC8 = 0b11001000 , CAS3, >> 2 = 0b00 11 0 010 */
-/* 0x88 = 0b10001000 , CAS2, >> 2 = 0b00 10 0 010 */
-#define MAR_SDRAM_INIT ((CAS_LATENCY << 6) | 0x00000008LU)
-
-/* 8 */
-#define CFG_MAMR ((CFG_MAMR_PTA << MAMR_PTA_SHIFT) | MAMR_PTAE | \
- MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 | \
- MAMR_RLFA_1X | MAMR_WLFA_1X | MAMR_TLFA_4X)
-
-void check_ram(unsigned int addr, unsigned int size)
-{
- unsigned int i, j, v, vv;
- volatile unsigned int *p;
- unsigned int pv;
-
- p = (unsigned int *)addr;
- pv = (unsigned int)p;
- for (i = 0; i < size / sizeof(unsigned int); i++, pv += sizeof(unsigned int))
- *p++ = pv;
-
- p = (unsigned int *)addr;
- for (i = 0; i < size / sizeof(unsigned int); i++) {
- v = (unsigned int)p;
- vv = *p;
- if (vv != v) {
- printf("%p: read %08x instead of %08x\n", p, vv, v);
- hang();
- }
- p++;
- }
-
- for (j = 0; j < 5; j++) {
- switch (j) {
- case 0: v = 0x00000000; break;
- case 1: v = 0xffffffff; break;
- case 2: v = 0x55555555; break;
- case 3: v = 0xaaaaaaaa; break;
- default:v = 0xdeadbeef; break;
- }
- p = (unsigned int *)addr;
- for (i = 0; i < size / sizeof(unsigned int); i++) {
- *p = v;
- vv = *p;
- if (vv != v) {
- printf("%p: read %08x instead of %08x\n", p, vv, v);
- hang();
- }
- *p = ~v;
- p++;
- }
- }
-}
-
-long int initdram(int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size;
-
- upmconfig(UPMB, (uint *) sdram_table, sizeof(sdram_table) / sizeof(sdram_table[0]));
-
- /*
- * Preliminary prescaler for refresh
- */
- memctl->memc_mptpr = MPTPR_PTP_DIV8;
-
- memctl->memc_mar = MAR_SDRAM_INIT; /* 32-bit address to be output on the address bus if AMX = 0b11 */
-
- /*
- * Map controller bank 3 to the SDRAM bank at preliminary address.
- */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
-
- memctl->memc_mbmr = CFG_MAMR & ~MAMR_PTAE; /* no refresh yet */
-
- udelay(200);
-
- /* perform SDRAM initialisation sequence */
- memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_B | MCR_MB_CS3 | MCR_MLCF(1) | MCR_MAD(0x3C); /* precharge all */
- udelay(1);
-
- memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_B | MCR_MB_CS3 | MCR_MLCF(2) | MCR_MAD(0x30); /* refresh 2 times(0) */
- udelay(1);
-
- memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_B | MCR_MB_CS3 | MCR_MLCF(1) | MCR_MAD(0x3E); /* exception program (write mar)*/
- udelay(1);
-
- memctl->memc_mbmr |= MAMR_PTAE; /* enable refresh */
-
- udelay(10000);
-
- {
- u32 d1, d2;
-
- d1 = 0xAA55AA55;
- *(volatile u32 *)0 = d1;
- d2 = *(volatile u32 *)0;
- if (d1 != d2) {
- printf("DRAM fails: wrote 0x%08x read 0x%08x\n", d1, d2);
- hang();
- }
-
- d1 = 0x55AA55AA;
- *(volatile u32 *)0 = d1;
- d2 = *(volatile u32 *)0;
- if (d1 != d2) {
- printf("DRAM fails: wrote 0x%08x read 0x%08x\n", d1, d2);
- hang();
- }
- }
-
- size = get_ram_size((long *)0, SDRAM_MAX_SIZE);
-
- if (size == 0) {
- printf("SIZE is zero: LOOP on 0\n");
- for (;;) {
- *(volatile u32 *)0 = 0;
- (void)*(volatile u32 *)0;
- }
- }
-
- return size;
-}
-
-/* ------------------------------------------------------------------------- */
-
-void reset_phys(void)
-{
- int phyno;
- unsigned short v;
-
- udelay(10000);
- /* reset the damn phys */
- mii_init();
-
- for (phyno = 0; phyno < 32; ++phyno) {
- fec8xx_miiphy_read(NULL, phyno, PHY_PHYIDR1, &v);
- if (v == 0xFFFF)
- continue;
- fec8xx_miiphy_write(NULL, phyno, PHY_BMCR, PHY_BMCR_POWD);
- udelay(10000);
- fec8xx_miiphy_write(NULL, phyno, PHY_BMCR,
- PHY_BMCR_RESET | PHY_BMCR_AUTON);
- udelay(10000);
- }
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* GP = general purpose, SP = special purpose (on chip peripheral) */
-
-/* bits that can have a special purpose or can be configured as inputs/outputs */
-#define PA_GP_INMASK 0
-#define PA_GP_OUTMASK (_BW(3) | _BW(7) | _BW(10) | _BW(14) | _BW(15))
-#define PA_SP_MASK 0
-#define PA_ODR_VAL 0
-#define PA_GP_OUTVAL (_BW(3) | _BW(14) | _BW(15))
-#define PA_SP_DIRVAL 0
-
-#define PB_GP_INMASK _B(28)
-#define PB_GP_OUTMASK (_B(19) | _B(23) | _B(26) | _B(27) | _B(29) | _B(30))
-#define PB_SP_MASK (_BR(22, 25))
-#define PB_ODR_VAL 0
-#define PB_GP_OUTVAL (_B(26) | _B(27) | _B(29) | _B(30))
-#define PB_SP_DIRVAL 0
-
-#if CONFIG_NETTA2_VERSION == 1
-#define PC_GP_INMASK _BW(12)
-#define PC_GP_OUTMASK (_BW(10) | _BW(11) | _BW(13) | _BW(15))
-#elif CONFIG_NETTA2_VERSION == 2
-#define PC_GP_INMASK (_BW(13) | _BW(15))
-#define PC_GP_OUTMASK (_BW(10) | _BW(11) | _BW(12))
-#endif
-#define PC_SP_MASK 0
-#define PC_SOVAL 0
-#define PC_INTVAL 0
-#define PC_GP_OUTVAL (_BW(10) | _BW(11))
-#define PC_SP_DIRVAL 0
-
-#if CONFIG_NETTA2_VERSION == 1
-#define PE_GP_INMASK _B(31)
-#define PE_GP_OUTMASK (_B(17) | _B(18) |_B(20) | _B(24) | _B(27) | _B(28) | _B(29) | _B(30))
-#define PE_GP_OUTVAL (_B(20) | _B(24) | _B(27) | _B(28))
-#elif CONFIG_NETTA2_VERSION == 2
-#define PE_GP_INMASK _BR(28, 31)
-#define PE_GP_OUTMASK (_B(17) | _B(18) |_B(20) | _B(24) | _B(27))
-#define PE_GP_OUTVAL (_B(20) | _B(24) | _B(27))
-#endif
-#define PE_SP_MASK 0
-#define PE_ODR_VAL 0
-#define PE_SP_DIRVAL 0
-
-int board_early_init_f(void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile iop8xx_t *ioport = &immap->im_ioport;
- volatile cpm8xx_t *cpm = &immap->im_cpm;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- /* NAND chip select */
-#if CONFIG_NETTA2_VERSION == 1
- memctl->memc_or1 = ((0xFFFFFFFFLU & ~(NAND_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_SCY_8_CLK | OR_EHTR | OR_TRLX);
- memctl->memc_br1 = ((NAND_BASE & BR_BA_MSK) | BR_PS_8 | BR_V);
-#elif CONFIG_NETTA2_VERSION == 2
- upmconfig(UPMA, (uint *) nandcs_table, sizeof(nandcs_table) / sizeof(nandcs_table[0]));
- memctl->memc_or1 = ((0xFFFFFFFFLU & ~(NAND_SIZE - 1)) | OR_BI | OR_G5LS);
- memctl->memc_br1 = ((NAND_BASE & BR_BA_MSK) | BR_PS_8 | BR_V | BR_MS_UPMA);
- memctl->memc_mamr = 0; /* all clear */
-#endif
-
- /* DSP chip select */
- memctl->memc_or2 = ((0xFFFFFFFFLU & ~(DSP_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_ACS_DIV2 | OR_SETA | OR_TRLX);
- memctl->memc_br2 = ((DSP_BASE & BR_BA_MSK) | BR_PS_16 | BR_V);
-
-#if CONFIG_NETTA2_VERSION == 1
- memctl->memc_br4 &= ~BR_V;
-#endif
- memctl->memc_br5 &= ~BR_V;
- memctl->memc_br6 &= ~BR_V;
- memctl->memc_br7 &= ~BR_V;
-
- ioport->iop_padat = PA_GP_OUTVAL;
- ioport->iop_paodr = PA_ODR_VAL;
- ioport->iop_padir = PA_GP_OUTMASK | PA_SP_DIRVAL;
- ioport->iop_papar = PA_SP_MASK;
-
- cpm->cp_pbdat = PB_GP_OUTVAL;
- cpm->cp_pbodr = PB_ODR_VAL;
- cpm->cp_pbdir = PB_GP_OUTMASK | PB_SP_DIRVAL;
- cpm->cp_pbpar = PB_SP_MASK;
-
- ioport->iop_pcdat = PC_GP_OUTVAL;
- ioport->iop_pcdir = PC_GP_OUTMASK | PC_SP_DIRVAL;
- ioport->iop_pcso = PC_SOVAL;
- ioport->iop_pcint = PC_INTVAL;
- ioport->iop_pcpar = PC_SP_MASK;
-
- cpm->cp_pedat = PE_GP_OUTVAL;
- cpm->cp_peodr = PE_ODR_VAL;
- cpm->cp_pedir = PE_GP_OUTMASK | PE_SP_DIRVAL;
- cpm->cp_pepar = PE_SP_MASK;
-
- return 0;
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-
-#include <linux/mtd/nand_legacy.h>
-
-extern ulong nand_probe(ulong physadr);
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- unsigned long totlen;
-
- totlen = nand_probe(CFG_NAND_BASE);
- printf ("%4lu MB\n", totlen >> 20);
-}
-#endif
-
-#ifdef CONFIG_HW_WATCHDOG
-
-void hw_watchdog_reset(void)
-{
- /* XXX add here the really funky stuff */
-}
-
-#endif
-
-#ifdef CONFIG_SHOW_ACTIVITY
-
-/* called from timer interrupt every 1/CFG_HZ sec */
-void board_show_activity(ulong timestamp)
-{
-}
-
-/* called when looping */
-void show_activity(int arg)
-{
-}
-
-#endif
-
-#if defined(CFG_CONSOLE_IS_IN_ENV) && defined(CFG_CONSOLE_OVERWRITE_ROUTINE)
-int overwrite_console(void)
-{
- /* printf("overwrite_console called\n"); */
- return 0;
-}
-#endif
-
-extern int drv_phone_init(void);
-extern int drv_phone_use_me(void);
-extern int drv_phone_is_idle(void);
-
-int misc_init_r(void)
-{
- return 0;
-}
-
-int last_stage_init(void)
-{
-#if CONFIG_NETTA2_VERSION == 2
- int i;
-#endif
-
-#if CONFIG_NETTA2_VERSION == 2
- /* assert peripheral reset */
- ((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat &= ~_BW(12);
- for (i = 0; i < 10; i++)
- udelay(1000);
- ((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat |= _BW(12);
-#endif
- reset_phys();
-
- return 0;
-}
diff --git a/board/netta2/u-boot.lds b/board/netta2/u-boot.lds
deleted file mode 100644
index 9f2901c869..0000000000
--- a/board/netta2/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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)
- cpu/mpc8xx/traps.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/time.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/netta2/u-boot.lds.debug b/board/netta2/u-boot.lds.debug
deleted file mode 100644
index 004e7fd354..0000000000
--- a/board/netta2/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/netvia/Makefile b/board/netvia/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/netvia/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/netvia/config.mk b/board/netvia/config.mk
deleted file mode 100644
index 9dddaad54b..0000000000
--- a/board/netvia/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# netVia Boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/netvia/flash.c b/board/netvia/flash.c
deleted file mode 100644
index d31f7707f7..0000000000
--- a/board/netvia/flash.c
+++ /dev/null
@@ -1,511 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-static int write_byte(flash_info_t * info, ulong dest, uchar data);
-static void flash_get_offsets(ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init(void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size;
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i)
- flash_info[i].flash_id = FLASH_UNKNOWN;
-
- size = flash_get_size((vu_long *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n", size, size << 20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | (memctl->memc_br0 & ~(BR_BA_MSK));
-
- /* Re-do sizing to get full correct info */
- size = flash_get_size((vu_long *) CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets(CFG_FLASH_BASE, &flash_info[0]);
-
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE, CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-
-#ifdef CFG_ENV_ADDR_REDUND
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE_REDUND - 1,
- &flash_info[0]);
-#endif
-
-
- flash_info[0].size = size;
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets(ulong base, flash_info_t * info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000);
- }
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf("FUJITSU ");
- break;
- case FLASH_MAN_MX:
- printf("MXIC ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- printf("AM29LV040B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400B:
- printf("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T:
- printf("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B:
- printf("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T:
- printf("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B:
- printf("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T:
- printf("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B:
- printf("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- break;
- }
-
- printf(" Size: %ld MB in %d Sectors\n", info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf("\n ");
- printf(" %08lX%s", info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size(vu_long * addr, flash_info_t * info)
-{
- short i;
- uchar mid;
- uchar pid;
- vu_char *caddr = (vu_char *) addr;
- ulong base = (ulong) addr;
-
-
- /* Write auto select command: read Manufacturer ID */
- caddr[0x0555] = 0xAA;
- caddr[0x02AA] = 0x55;
- caddr[0x0555] = 0x90;
-
- mid = caddr[0];
- switch (mid) {
- case (AMD_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (MX_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_MX;
- break;
- case (STM_MANUFACT & 0xFF):
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- pid = caddr[1]; /* device ID */
- switch (pid) {
- case (AMD_ID_LV400T & 0xFF):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case (AMD_ID_LV400B & 0xFF):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case (AMD_ID_LV800T & 0xFF):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800B & 0xFF):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV160T & 0xFF):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV160B & 0xFF):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV040B & 0xFF):
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break;
-
- case (STM_ID_M29W040B & 0xFF):
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break;
-
-#if 0 /* enable when device IDs are available */
- case (AMD_ID_LV320T & 0xFF):
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV320B & 0xFF):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- printf(" ");
- /* set up sector start address table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000);
- }
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection: D0 = 1 if protected */
- caddr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = caddr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- caddr = (vu_char *) info->start[0];
-
- caddr[0x0555] = 0xAA;
- caddr[0x02AA] = 0x55;
- caddr[0x0555] = 0xF0;
-
- udelay(20000);
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-{
- vu_char *addr = (vu_char *) (info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("- missing\n");
- } else {
- printf("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf("Can't erase unknown flash type %08lx - aborted\n", info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x80;
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_char *) (info->start[sect]);
- addr[0] = 0x30;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay(1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer(0);
- last = start;
- addr = (vu_char *) (info->start[l_sect]);
- while ((addr[0] & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (vu_char *) info->start[0];
- addr[0] = 0xF0; /* reset bank */
-
- printf(" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- int rc;
-
- while (cnt > 0) {
- if ((rc = write_byte(info, addr++, *src++)) != 0) {
- return (rc);
- }
- --cnt;
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte(flash_info_t * info, ulong dest, uchar data)
-{
- vu_char *addr = (vu_char *) (info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_char *) dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0xA0;
-
- *((vu_char *) dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer(0);
- while ((*((vu_char *) dest) & 0x80) != (data & 0x80)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/netvia/netvia.c b/board/netvia/netvia.c
deleted file mode 100644
index 3e6c61663f..0000000000
--- a/board/netvia/netvia.c
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * (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
- */
-
-/*
- * Pantelis Antoniou, Intracom S.A., panto@intracom.gr
- * U-Boot port on NetVia board
- */
-
-#include <common.h>
-#include "mpc8xx.h"
-
-/****************************************************************/
-
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
-/* last value written to the external register; we cannot read back */
-unsigned int last_er_val;
-#endif
-
-/****************************************************************/
-
-/****************************************************************/
-
-/* some sane bit macros */
-#define _BD(_b) (1U << (31-(_b)))
-#define _BDR(_l, _h) (((((1U << (31-(_l))) - 1) << 1) | 1) & ~((1U << (31-(_h))) - 1))
-
-#define _BW(_b) (1U << (15-(_b)))
-#define _BWR(_l, _h) (((((1U << (15-(_l))) - 1) << 1) | 1) & ~((1U << (15-(_h))) - 1))
-
-#define _BB(_b) (1U << (7-(_b)))
-#define _BBR(_l, _h) (((((1U << (7-(_l))) - 1) << 1) | 1) & ~((1U << (7-(_h))) - 1))
-
-#define _B(_b) _BD(_b)
-#define _BR(_l, _h) _BDR(_l, _h)
-
-/****************************************************************/
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-/****************************************************************/
-
-#define CS_0000 0x00000000
-#define CS_0001 0x10000000
-#define CS_0010 0x20000000
-#define CS_0011 0x30000000
-#define CS_0100 0x40000000
-#define CS_0101 0x50000000
-#define CS_0110 0x60000000
-#define CS_0111 0x70000000
-#define CS_1000 0x80000000
-#define CS_1001 0x90000000
-#define CS_1010 0xA0000000
-#define CS_1011 0xB0000000
-#define CS_1100 0xC0000000
-#define CS_1101 0xD0000000
-#define CS_1110 0xE0000000
-#define CS_1111 0xF0000000
-
-#define BS_0000 0x00000000
-#define BS_0001 0x01000000
-#define BS_0010 0x02000000
-#define BS_0011 0x03000000
-#define BS_0100 0x04000000
-#define BS_0101 0x05000000
-#define BS_0110 0x06000000
-#define BS_0111 0x07000000
-#define BS_1000 0x08000000
-#define BS_1001 0x09000000
-#define BS_1010 0x0A000000
-#define BS_1011 0x0B000000
-#define BS_1100 0x0C000000
-#define BS_1101 0x0D000000
-#define BS_1110 0x0E000000
-#define BS_1111 0x0F000000
-
-#define A10_AAAA 0x00000000
-#define A10_AAA0 0x00200000
-#define A10_AAA1 0x00300000
-#define A10_000A 0x00800000
-#define A10_0000 0x00A00000
-#define A10_0001 0x00B00000
-#define A10_111A 0x00C00000
-#define A10_1110 0x00E00000
-#define A10_1111 0x00F00000
-
-#define RAS_0000 0x00000000
-#define RAS_0001 0x00040000
-#define RAS_1110 0x00080000
-#define RAS_1111 0x000C0000
-
-#define CAS_0000 0x00000000
-#define CAS_0001 0x00010000
-#define CAS_1110 0x00020000
-#define CAS_1111 0x00030000
-
-#define WE_0000 0x00000000
-#define WE_0001 0x00004000
-#define WE_1110 0x00008000
-#define WE_1111 0x0000C000
-
-#define GPL4_0000 0x00000000
-#define GPL4_0001 0x00001000
-#define GPL4_1110 0x00002000
-#define GPL4_1111 0x00003000
-
-#define GPL5_0000 0x00000000
-#define GPL5_0001 0x00000400
-#define GPL5_1110 0x00000800
-#define GPL5_1111 0x00000C00
-#define LOOP 0x00000080
-
-#define EXEN 0x00000040
-
-#define AMX_COL 0x00000000
-#define AMX_ROW 0x00000020
-#define AMX_MAR 0x00000030
-
-#define NA 0x00000008
-
-#define UTA 0x00000004
-
-#define TODT 0x00000002
-
-#define LAST 0x00000001
-
-const uint sdram_table[0x40] = {
- /* RSS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0000 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_,
-
- /* RBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WSS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA,
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,
- CS_0000 | BS_0001 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL | UTA,
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* WBS */
- CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */
- CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL, /* WRITE */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_1111 | BS_0001 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /* UPT */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_0001 | WE_1111 | AMX_COL | LOOP,
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL,
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | LOOP,
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | LAST,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_,
-
- /* EXC */
- CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL,
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | TODT | LAST,
-
- /* REG */
- CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1110 | AMX_MAR,
- CS_0001 | BS_1111 | A10_0001 | RAS_0001 | CAS_0001 | WE_0001 | AMX_MAR | TODT | LAST,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Test ETX ID string (ETX_xxx...)
- *
- * Return 1 always.
- */
-
-int checkboard(void)
-{
-#if !defined(CONFIG_NETVIA_VERSION) || CONFIG_NETVIA_VERSION == 1
- printf ("NETVIA v1\n");
-#else
- printf ("NETVIA v2+\n");
-#endif
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* 0xC8 = 0b11001000 , CAS3, >> 2 = 0b00 11 0 010 */
-#define MAR_SDRAM_INIT 0x000000C8LU
-
-#define MCR_OP(x) ((unsigned long)((x) & 3) << (31-1))
-#define MCR_OP_MASK MCR_OP(3)
-
-#define MCR_UM(x) ((unsigned long)((x) & 1) << (31 - 8))
-#define MCR_UM_MASK MCR_UM(1)
-#define MCR_UM_UPMA MCR_UM(0)
-#define MCR_UM_UPMB MCR_UM(1)
-
-#define MCR_MB(x) ((unsigned long)((x) & 7) << (31 - 18))
-#define MCR_MB_MASK MCR_MB(7)
-#define MCR_MB_CS(x) MCR_MB(x)
-
-#define MCR_MCLF(x) ((unsigned long)((x) & 15) << (31 - 23))
-#define MCR_MCLF_MASK MCR_MCLF(15)
-
-long int initdram(int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size;
-
- upmconfig(UPMA, (uint *) sdram_table, sizeof(sdram_table) / sizeof(uint));
-
- /*
- * Preliminary prescaler for refresh
- */
- memctl->memc_mptpr = CFG_MPTPR_1BK_8K;
-
- memctl->memc_mar = MAR_SDRAM_INIT; /* 32-bit address to be output on the address bus if AMX = 0b11 */
-
- /*
- * Map controller bank 3 to the SDRAM bank at preliminary address.
- */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_9COL & ~MAMR_PTAE; /* no refresh yet */
-
- udelay(200);
-
- /* perform SDRAM initialisation sequence */
- memctl->memc_mcr = MCR_OP_RUN | MCR_UM_UPMA | MCR_MB_CS3 | MCR_MCLF(1) | MCR_MAD(0x3C); /* precharge all */
- udelay(1);
- memctl->memc_mcr = MCR_OP_RUN | MCR_UM_UPMA | MCR_MB_CS3 | MCR_MCLF(0) | MCR_MAD(0x30); /* refresh 16 times(0) */
- udelay(1);
- memctl->memc_mcr = MCR_OP_RUN | MCR_UM_UPMA | MCR_MB_CS3 | MCR_MCLF(1) | MCR_MAD(0x3E); /* exception program (write mar) */
- udelay(1);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay(1000);
-
- memctl->memc_mamr = CFG_MAMR_9COL;
-
- size = SDRAM_MAX_SIZE;
-
- udelay(10000);
-
- return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_r(void)
-{
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
- last_er_val = 0xffffffff;
-#endif
- return(0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* GP = general purpose, SP = special purpose (on chip peripheral) */
-
-/* bits that can have a special purpose or can be configured as inputs/outputs */
-#define PA_GP_INMASK 0
-#define PA_GP_OUTMASK (_BW(5) | _BWR(14, 15))
-#define PA_SP_MASK (_BW(4) | _BWR(6, 13))
-#define PA_ODR_VAL 0
-#define PA_GP_OUTVAL _BW(5)
-#define PA_SP_DIRVAL 0
-
-#define PB_GP_INMASK _B(28)
-#define PB_GP_OUTMASK (_BR(16, 19) | _BR(26, 27) | _BR(29, 31))
-#define PB_SP_MASK _BR(22, 25)
-#define PB_ODR_VAL 0
-#define PB_GP_OUTVAL (_BR(16, 19) | _BR(26, 27) | _BR(29, 31))
-#define PB_SP_DIRVAL 0
-
-#if !defined(CONFIG_NETVIA_VERSION) || CONFIG_NETVIA_VERSION == 1
-
-#define PC_GP_INMASK (_BWR(5, 7) | _BWR(9, 10) | _BW(13))
-#define PC_GP_OUTMASK _BW(12)
-#define PC_SP_MASK (_BW(4) | _BW(8))
-#define PC_SOVAL 0
-#define PC_INTVAL 0
-#define PC_GP_OUTVAL 0
-#define PC_SP_DIRVAL 0
-
-#define PD_GP_INMASK 0
-#define PD_GP_OUTMASK _BWR(3, 15)
-#define PD_SP_MASK 0
-#define PD_GP_OUTVAL (_BW(3) | _BW(5) | _BW(7) | _BWR(8, 15))
-#define PD_SP_DIRVAL 0
-
-#elif CONFIG_NETVIA_VERSION >= 2
-
-#define PC_GP_INMASK (_BW(5) | _BW(7) | _BWR(9, 11) | _BWR(13, 15))
-#define PC_GP_OUTMASK (_BW(6) | _BW(12))
-#define PC_SP_MASK (_BW(4) | _BW(8))
-#define PC_SOVAL 0
-#define PC_INTVAL _BW(7)
-#define PC_GP_OUTVAL (_BW(6) | _BW(12))
-#define PC_SP_DIRVAL 0
-
-#define PD_GP_INMASK 0
-#define PD_GP_OUTMASK _BWR(3, 15)
-#define PD_SP_MASK 0
-#define PD_GP_OUTVAL (_BW(3) | _BW(5) | _BW(9) | _BW(11))
-#define PD_SP_DIRVAL 0
-
-#else
-#error Unknown NETVIA board version.
-#endif
-
-int board_early_init_f(void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile iop8xx_t *ioport = &immap->im_ioport;
- volatile cpm8xx_t *cpm = &immap->im_cpm;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- /* DSP0 chip select */
- memctl->memc_or4 = ((0xFFFFFFFFLU & ~(DSP_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_ACS_DIV2 | OR_SETA | OR_TRLX);
- memctl->memc_br4 = ((DSP0_BASE & BR_BA_MSK) | BR_PS_16 | BR_V);
-
- /* DSP1 chip select */
- memctl->memc_or5 = ((0xFFFFFFFFLU & ~(DSP_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_ACS_DIV2 | OR_SETA | OR_TRLX);
- memctl->memc_br5 = ((DSP1_BASE & BR_BA_MSK) | BR_PS_16 | BR_V);
-
- /* FPGA chip select */
- memctl->memc_or6 = ((0xFFFFFFFFLU & ~(FPGA_SIZE - 1)) | OR_BI | OR_SCY_1_CLK);
- memctl->memc_br6 = ((FPGA_BASE & BR_BA_MSK) | BR_PS_8 | BR_V);
-
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
- /* NAND chip select */
- memctl->memc_or1 = ((0xFFFFFFFFLU & ~(NAND_SIZE - 1)) | OR_CSNT_SAM | OR_BI | OR_SCY_8_CLK | OR_EHTR | OR_TRLX);
- memctl->memc_br1 = ((NAND_BASE & BR_BA_MSK) | BR_PS_8 | BR_V);
-
- /* kill this chip select */
- memctl->memc_br2 &= ~BR_V; /* invalid */
-
- /* external reg chip select */
- memctl->memc_or7 = ((0xFFFFFFFFLU & ~(ER_SIZE - 1)) | OR_BI | OR_SCY_4_CLK);
- memctl->memc_br7 = ((ER_BASE & BR_BA_MSK) | BR_PS_32 | BR_V);
-#endif
-
- ioport->iop_padat = PA_GP_OUTVAL;
- ioport->iop_paodr = PA_ODR_VAL;
- ioport->iop_padir = PA_GP_OUTMASK | PA_SP_DIRVAL;
- ioport->iop_papar = PA_SP_MASK;
-
- cpm->cp_pbdat = PB_GP_OUTVAL;
- cpm->cp_pbodr = PB_ODR_VAL;
- cpm->cp_pbdir = PB_GP_OUTMASK | PB_SP_DIRVAL;
- cpm->cp_pbpar = PB_SP_MASK;
-
- ioport->iop_pcdat = PC_GP_OUTVAL;
- ioport->iop_pcdir = PC_GP_OUTMASK | PC_SP_DIRVAL;
- ioport->iop_pcso = PC_SOVAL;
- ioport->iop_pcint = PC_INTVAL;
- ioport->iop_pcpar = PC_SP_MASK;
-
- ioport->iop_pddat = PD_GP_OUTVAL;
- ioport->iop_pddir = PD_GP_OUTMASK | PD_SP_DIRVAL;
- ioport->iop_pdpar = PD_SP_MASK;
-
-#if defined(CONFIG_NETVIA_VERSION) && CONFIG_NETVIA_VERSION >= 2
- /* external register init */
- *(volatile uint *)ER_BASE = 0xFFFFFFFF;
-#endif
-
- return 0;
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-
-#include <linux/mtd/nand_legacy.h>
-
-extern ulong nand_probe(ulong physadr);
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-
-void nand_init(void)
-{
- unsigned long totlen = nand_probe(CFG_NAND_BASE);
-
- printf ("%4lu MB\n", totlen >> 20);
-}
-#endif
diff --git a/board/netvia/u-boot.lds b/board/netvia/u-boot.lds
deleted file mode 100644
index dc69db6ad0..0000000000
--- a/board/netvia/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (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
- */
-
-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)
- cpu/mpc8xx/traps.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/time.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/netvia/u-boot.lds.debug b/board/netvia/u-boot.lds.debug
deleted file mode 100644
index 96569bfd9a..0000000000
--- a/board/netvia/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/ns9750dev/Makefile b/board/ns9750dev/Makefile
deleted file mode 100644
index b5203775a8..0000000000
--- a/board/ns9750dev/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := ns9750dev.o flash.o led.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ns9750dev/config.mk b/board/ns9750dev/config.mk
deleted file mode 100644
index 6a22cee51a..0000000000
--- a/board/ns9750dev/config.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-#######################################################################
-#
-# Copyright (C) 2004 by FS Forth-Systeme GmbH.
-# Markus Pietrek <mpietrek@fsforth.de>
-#
-# @TODO
-# Linux-Kernel is expected to be at 0000'8000, entry 0000'8000
-# optionally with a ramdisk at 0080'0000
-#
-# we load ourself to 0078'0000
-#
-# download area is 0060'0000
-#
-
-
-TEXT_BASE = 0x00780000
diff --git a/board/ns9750dev/flash.c b/board/ns9750dev/flash.c
deleted file mode 100644
index e7d65157f7..0000000000
--- a/board/ns9750dev/flash.c
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.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
- */
-
-#include <common.h>
-#include <linux/byteorder/swab.h>
-
-#define PHYS_FLASH_SECT_SIZE 0x00020000 /* 256 KB sectors (x2) */
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-
-/* Flash Organization Structure */
-typedef struct OrgDef {
- unsigned int sector_number;
- unsigned int sector_size;
-} OrgDef;
-
-
-/* Flash Organizations */
-OrgDef OrgIntel_28F256L18T[] = {
- {4, 32 * 1024}, /* 4 * 32kBytes sectors */
- {255, 128 * 1024}, /* 255 * 128kBytes sectors */
-};
-
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-unsigned long flash_init (void);
-static ulong flash_get_size (FPW * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-void inline spin_wheel (void);
-void flash_print_info (flash_info_t * info);
-void flash_unprotect_sectors (FPWV * addr);
-int flash_erase (flash_info_t * info, int s_first, int s_last);
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1, &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
- OrgDef *pOrgDef;
-
- pOrgDef = OrgIntel_28F256L18T;
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- if (i > 255) {
- info->start[i] = base + (i * 0x8000);
- info->protect[i] = 0;
- } else {
- info->start[i] = base +
- (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F256L18T:
- printf ("FLASH 28F256L18T\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
- switch (value) {
-
- case (FPW) (INTEL_ID_28F256L18T):
- info->flash_id += FLASH_28F256L18T;
- info->sector_count = 259;
- info->size = 0x02000000;
- break; /* => 32 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/* unprotects a sector for write and erase
- * on some intel parts, this unprotects the entire chip, but it
- * wont hurt to call this additional times per sector...
- */
-void flash_unprotect_sectors (FPWV * addr)
-{
-#define PD_FINTEL_WSMS_READY_MASK 0x0080
-
- *addr = (FPW) 0x00500050; /* clear status register */
-
- /* this sends the clear lock bit command */
- *addr = (FPW) 0x00600060;
- *addr = (FPW) 0x00D000D0;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- flash_unprotect_sectors (addr);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050;/* clear status register */
- *addr = (FPW) 0x00200020;/* erase setup */
- *addr = (FPW) 0x00D000D0;/* erase confirm */
-
- while (((status =
- *addr) & (FPW) 0x00800080) !=
- (FPW) 0x00800080) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- /* suspend erase */
- *addr = (FPW) 0x00B000B0;
- /* reset to read mode */
- *addr = (FPW) 0x00FF00FF;
- rcode = 1;
- break;
- }
- }
-
- /* clear status register cmd. */
- *addr = (FPW) 0x00500050;
- *addr = (FPW) 0x00FF00FF;/* resest to read mode */
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
- return (2);
- }
- flash_unprotect_sectors (addr);
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/ns9750dev/led.c b/board/ns9750dev/led.c
deleted file mode 100644
index b85c869d85..0000000000
--- a/board/ns9750dev/led.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/***********************************************************************
- *
- * Copyright (C) 2004 by FS Forth-Systeme GmbH.
- * All rights reserved.
- *
- * $Id: led.c,v 1.1 2004/02/16 10:37:20 mpietrek Exp $
- * @Author: Markus Pietrek
- * @Descr: Defines helper functions for toggeling LEDs
- * @Usage:
- * @References: [1]
- *
- * 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
- *
- ***********************************************************************/
-
-#ifdef CONFIG_STATUS_LED
-
-#include <ns9750_bbus.h>
-
-static inline void __led_init( led_id_t mask, int state )
-{
- XXXX;
-}
-
-static inline void __led_toggle( led_id_t mask )
-{
-}
-
-static inline void __led_set( led_id_t mask, int state )
-{
-}
-
-#endif /* CONFIG_STATUS_LED */
diff --git a/board/ns9750dev/lowlevel_init.S b/board/ns9750dev/lowlevel_init.S
deleted file mode 100644
index 3a0978663a..0000000000
--- a/board/ns9750dev/lowlevel_init.S
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Board specific setup info
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.com>
- *
- * Modified for the NS9750 DevBoard by
- * (C) Copyright 2004 by FS Forth-Systeme GmbH.
- * Markus Pietrek <mpietrek@fsforth.de>
- * @References: [1] NS9750 Hardware Reference/December 2003
- * [2] ns9750_a.cmd from MAJIC configuration
- *
- * 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 <config.h>
-#include <version.h>
-
-#if defined(CONFIG_NS9750DEV)
-# ifndef CONFIG_SKIP_LOWLEVEL_INIT
-# include <./ns9750_sys.h>
-# include <./ns9750_mem.h>
-# endif
-#endif
-
-/***********************************************************************
- * @Function: write_register_block
- * @Return: nothing
- * @Descr: Copies the register block of register_offset:register value to
- * the registers at base r0. The block is assumed to start in RAM at r1
- * and end at r2. The linked RAM base address of U-Boot is assumed to be
- * in r5 while the ROM base address we are running from is r6
- * Uses r3 and r4 as tempory registers
- ***********************************************************************/
-
-.macro write_register_block
- @@ map the addresses to high memory
- sub r1, r1, r5
- add r1, r1, r6
- sub r2, r2, r5
- add r2, r2, r6
-
- @@ copy all
-1:
- @@ Write register/value pair starting at [r1] to register base r0
- ldr r3, [r1], #4
- ldr r4, [r1], #4
- str r4, [r0,r3]
- cmp r1, r2
- blt 1b
-.endm
-
-_TEXT_BASE:
- .word TEXT_BASE @ sdram load addr from config.mk
-_PHYS_FLASH:
- .word PHYS_FLASH_1 @ real flash address (without mirroring)
-_CAS_LATENCY:
- .word 0x00022000 @ for CAS2 latency
-
-#ifndef CONFIG_SKIP_LOWLEVEL_INIT
-.globl lowlevel_init
-lowlevel_init:
-
- /* U-Boot may be linked to RAM at 0x780000. But this code will run in
- flash from 0x0. But in order to enable RAM we have to disable the
- mirror bit, therefore we have to jump to our real flash address
- beginning at PHYS_FLASH_1 (CS4 Base). Therefore,
- _run_at_real_flash_address may be 0x500003b0 while be linked to
- 0x7803b0. So we must modify our linked addresses */
-
- @@ branch to high memory address, away from 0x0
- ldr r5, _TEXT_BASE
- ldr r6, _PHYS_FLASH
- ldr r0, =_run_at_real_flash_address
- sub r0, r0, r5
- add r0, r0, r6
- mov pc, r0
- nop @ for pipelining
-
-_run_at_real_flash_address:
- @@ now we are running > PHYS_FLASH_1, safe to enable memory controller
-
- @@ Write Memory Configuration Registers
-
- ldr r0, _NS9750_MEM_MODULE_BASE
- ldr r1, =_MEM_CONFIG_START
- ldr r2, =_MEM_CONFIG_END
-
- write_register_block
-
- @@ Give SDRAM some time to settle
- @@ @TODO. According to [2] it should be 2 AHB cycles. Check
-
- ldr r1, =0x50
-_sdram_settle:
- subs r1, r1, #1
- bne _sdram_settle
-
-_enable_mappings:
- @@ Enable SDRAM Mode
-
- ldr r1, =_MEM_MODE_START
- ldr r2, =_MEM_MODE_END
-
- write_register_block
-
- ldr r3, _CAS_LATENCY @ perform one read from SDRAM
- ldr r3, [r3]
-
- @@ Enable SDRAM and memory mappings
-
- ldr r1, =_MEM_ENABLE_START
- ldr r2, =_MEM_ENABLE_END
-
- write_register_block
-
- @@ Activate AHB monitor
-
- ldr r0, =NS9750_SYS_MODULE_BASE
- ldr r1, =_AHB_MONITOR_START
- ldr r2, =_AHB_MONITOR_END
-
- write_register_block
-_relocate_lr:
- /* lr and ip (from cpu_init_crit) are still based on 0x0, relocate it to
- PHYS_FLASH. */
- mov r1, ip
- add r1, r1, r6
- mov ip, r1
-
- mov r1, lr
- add r1, r1, r6
- mov lr, r1
-
- @@ back to arch calling code
- mov pc, lr
-
- .ltorg
-
-_NS9750_MEM_MODULE_BASE:
- .word NS9750_MEM_MODULE_BASE
-
-_MEM_CONFIG_START:
- /* Table of 2 32bit entries. First word is register address offset
- relative to NS9750_MEM_MODULE_BASE, second one is value. They are
- written in order of appearance */
-
- @@ Register values taken from [2]
- .word NS9750_MEM_CTRL
- .word NS9750_MEM_CTRL_E
-
- .word NS9750_MEM_DYN_REFRESH
- .word (0x6 & NS9750_MEM_DYN_REFRESH_MA)
-
- .word NS9750_MEM_DYN_READ_CFG
- .word (0x1 & NS9750_MEM_DYN_READ_CFG_MA)
-
- .word NS9750_MEM_DYN_TRP
- .word (0x1 & NS9750_MEM_DYN_TRP_MA)
-
- .word NS9750_MEM_DYN_TRAS
- .word (0x4 & NS9750_MEM_DYN_TRAS_MA)
-
- .word NS9750_MEM_DYN_TAPR
- .word (0x1 & NS9750_MEM_DYN_TRAS_MA)
-
- .word NS9750_MEM_DYN_TDAL
- .word (0x5 & NS9750_MEM_DYN_TDAL_MA)
-
- .word NS9750_MEM_DYN_TWR
- .word (0x1 & NS9750_MEM_DYN_TWR_MA)
-
- .word NS9750_MEM_DYN_TRC
- .word (0x6 & NS9750_MEM_DYN_TRC_MA)
-
- .word NS9750_MEM_DYN_TRFC
- .word (0x6 & NS9750_MEM_DYN_TRFC_MA)
-
- .word NS9750_MEM_DYN_TRRD
- .word (0x1 & NS9750_MEM_DYN_TRRD_MA)
-
- .word NS9750_MEM_DYN_TMRD
- .word (0x1 & NS9750_MEM_DYN_TMRD_MA)
-
- @@ CS 4
- .word NS9750_MEM_DYN_CFG(0)
- .word (NS9750_MEM_DYN_CFG_AM | \
- (0x280 & NS9750_MEM_DYN_CFG_AM_MA))
-
- .word NS9750_MEM_DYN_RAS_CAS(0)
- .word ((0x200 & NS9750_MEM_DYN_RAS_CAS_CAS_MA) | \
- (0x03 & NS9750_MEM_DYN_RAS_CAS_RAS_MA))
-
- @@ CS 5
- .word NS9750_MEM_DYN_CFG(1)
- .word (NS9750_MEM_DYN_CFG_AM | \
- (0x280 & NS9750_MEM_DYN_CFG_AM_MA))
-
- .word NS9750_MEM_DYN_RAS_CAS(1)
- .word ((0x200 & NS9750_MEM_DYN_RAS_CAS_CAS_MA) | \
- (0x03 & NS9750_MEM_DYN_RAS_CAS_RAS_MA))
-
- @@ CS 6
- .word NS9750_MEM_DYN_CFG(2)
- .word (NS9750_MEM_DYN_CFG_AM | \
- (0x280 & NS9750_MEM_DYN_CFG_AM_MA))
-
- .word NS9750_MEM_DYN_RAS_CAS(2)
- .word ((0x200 & NS9750_MEM_DYN_RAS_CAS_CAS_MA) | \
- (0x03 & NS9750_MEM_DYN_RAS_CAS_RAS_MA))
-
- @@ CS 7
- .word NS9750_MEM_DYN_CFG(3)
- .word (NS9750_MEM_DYN_CFG_AM | \
- (0x280 & NS9750_MEM_DYN_CFG_AM_MA))
-
- .word NS9750_MEM_DYN_RAS_CAS(3)
- .word ((0x200 & NS9750_MEM_DYN_RAS_CAS_CAS_MA) | \
- (0x03 & NS9750_MEM_DYN_RAS_CAS_RAS_MA))
-
- .word NS9750_MEM_DYN_CTRL
- .word (NS9750_MEM_DYN_CTRL_I_PALL | \
- NS9750_MEM_DYN_CTRL_SR | \
- NS9750_MEM_DYN_CTRL_CE )
-
- .word NS9750_MEM_DYN_REFRESH
- .word (0x1 & NS9750_MEM_DYN_REFRESH_MA)
- @@ No further register settings after refresh
-_MEM_CONFIG_END:
-
-_MEM_MODE_START:
- .word NS9750_MEM_DYN_REFRESH
- .word (0x30 & NS9750_MEM_DYN_REFRESH_MA)
-
- .word NS9750_MEM_DYN_CTRL
- .word (NS9750_MEM_DYN_CTRL_I_MODE | \
- NS9750_MEM_DYN_CTRL_SR | \
- NS9750_MEM_DYN_CTRL_CE )
-_MEM_MODE_END:
-
-_MEM_ENABLE_START:
- .word NS9750_MEM_DYN_CTRL
- .word (NS9750_MEM_DYN_CTRL_I_NORMAL | \
- NS9750_MEM_DYN_CTRL_SR | \
- NS9750_MEM_DYN_CTRL_CE )
-
- @@ CS 4
- .word NS9750_MEM_DYN_CFG(0)
- .word (NS9750_MEM_DYN_CFG_BDMC | \
- NS9750_MEM_DYN_CFG_AM | \
- (0x280 & NS9750_MEM_DYN_CFG_AM_MA))
-
- @@ CS 5
- .word NS9750_MEM_DYN_CFG(1)
- .word (NS9750_MEM_DYN_CFG_BDMC | \
- NS9750_MEM_DYN_CFG_AM | \
- (0x280 & NS9750_MEM_DYN_CFG_AM_MA))
-
- @@ CS 6
- .word NS9750_MEM_DYN_CFG(2)
- .word (NS9750_MEM_DYN_CFG_BDMC | \
- NS9750_MEM_DYN_CFG_AM | \
- (0x280 & NS9750_MEM_DYN_CFG_AM_MA))
-
- @@ CS 7
- .word NS9750_MEM_DYN_CFG(3)
- .word (NS9750_MEM_DYN_CFG_BDMC | \
- NS9750_MEM_DYN_CFG_AM | \
- (0x280 & NS9750_MEM_DYN_CFG_AM_MA))
-_MEM_ENABLE_END:
-
-_AHB_MONITOR_START:
- .word NS9750_SYS_AHB_TIMEOUT
- .word 0x01000100 @ @TODO not calculated yet
-
- .word NS9750_SYS_AHB_MON
- .word (NS9750_SYS_AHB_MON_BMTC_GEN_IRQ | \
- NS9750_SYS_AHB_MON_BATC_GEN_IRQ)
-_AHB_MONITOR_END:
-
-#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
diff --git a/board/ns9750dev/ns9750dev.c b/board/ns9750dev/ns9750dev.c
deleted file mode 100644
index 1dd348a0c3..0000000000
--- a/board/ns9750dev/ns9750dev.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.com>
- *
- * Copyright (C) 2004 by FS Forth-Systeme GmbH.
- * All rights reserved.
- * Markus Pietrek <mpietrek@fsforth.de>
- * derived from omap1610innovator.c
- * @References: [1] NS9750 Hardware Reference/December 2003
- *
- * 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 <common.h>
-#if defined(CONFIG_NS9750DEV)
-# include <./configs/ns9750dev.h>
-# include <./ns9750_bbus.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-void flash__init( void );
-void ether__init( void );
-
-static inline void delay( unsigned long loops )
-{
- __asm__ volatile ("1:\n"
- "subs %0, %1, #1\n"
- "bne 1b":"=r" (loops):"0" (loops));
-}
-
-
-/***********************************************************************
- * @Function: board_init
- * @Return: 0
- * @Descr: Enables BBUS modules and other devices
- ***********************************************************************/
-
-int board_init( void )
-{
- /* Active BBUS modules */
- *get_bbus_reg_addr( NS9750_BBUS_MASTER_RESET ) = 0;
-
-#warning Please register your machine at http://www.arm.linux.org.uk/developer/machines/?action=new
- /* arch number of OMAP 1510-Board */
- /* to be changed for OMAP 1610 Board */
- gd->bd->bi_arch_number = 234;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x10000100;
-
-
-/* this speeds up your boot a quite a bit. However to make it
- * work, you need make sure your kernel startup flush bug is fixed.
- * ... rkw ...
- */
- icache_enable();
-
- flash__init();
- ether__init();
- return 0;
-}
-
-
-int misc_init_r (void)
-{
- /* currently empty */
- return (0);
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-void flash__init (void)
-{
-}
-/*************************************************************
- Routine:ether__init
- Description: take the Ethernet controller out of reset and wait
- for the EEPROM load to complete.
-*************************************************************/
-void ether__init (void)
-{
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
-#if CONFIG_NR_DRAM_BANKS > 1
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
-#endif
- return 0;
-}
diff --git a/board/ns9750dev/u-boot.lds b/board/ns9750dev/u-boot.lds
deleted file mode 100644
index 8ebb6519ff..0000000000
--- a/board/ns9750dev/u-boot.lds
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm926ejs/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = . ;
-
-}
diff --git a/board/nx823/Makefile b/board/nx823/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/nx823/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/nx823/config.mk b/board/nx823/config.mk
deleted file mode 100644
index 3b3ea1e237..0000000000
--- a/board/nx823/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# Nexus boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/nx823/flash.c b/board/nx823/flash.c
deleted file mode 100644
index 581925e48b..0000000000
--- a/board/nx823/flash.c
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-extern u_long *my_sernum; /* from nx823.c */
-
-/*-----------------------------------------------------------------------
- * Protection Flags:
- */
-#define FLAG_PROTECT_SET 0x01
-#define FLAG_PROTECT_CLEAR 0x02
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
- size_b0 = flash_get_size((FPW *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_PS_16 | BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((FPW *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE+monitor_flash_len-1,
- &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000);
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J3A:
- printf ("28F320J3A\n"); break;
- case FLASH_28F640J3A:
- printf ("28F640J3A\n"); break;
- case FLASH_28F128J3A:
- printf ("28F128J3A\n"); break;
- default: printf ("Unknown Chip Type\n"); break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (FPW *addr, flash_info_t *info)
-{
- FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW)0x00AA00AA;
- addr[0x2AAA] = (FPW)0x00550055;
- addr[0x5555] = (FPW)0x00900090;
-
- value = addr[0];
-
- switch (value) {
- case (FPW)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW)0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
- case (FPW)INTEL_ID_28F320J3A:
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (FPW)INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (FPW)INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW)0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *)(info->start[sect]);
- FPW status;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = (FPW)0x00500050; /* clear status register */
- *addr = (FPW)0x00200020; /* erase setup */
- *addr = (FPW)0x00D000D0; /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = *addr) & (FPW)0x00800080) != (FPW)0x00800080) {
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW)0x00B000B0; /* suspend erase */
- *addr = (FPW)0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- *addr = (FPW)0x00FF00FF; /* reset to read mode */
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /* save sernum if needed */
- if (addr >= CFG_FLASH_SN_SECTOR && addr < CFG_FLASH_SN_BASE)
- {
- u_long dest = CFG_FLASH_SN_BASE;
- u_short *sn = (u_short *)my_sernum;
-
- printf("(saving sernum)");
- for (i=0; i<4; i++)
- {
- if ((rc = write_data(info, dest, sn[i])) != 0) {
- return (rc);
- }
- dest += port_width;
- }
- }
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<port_width && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_data(info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i=0; i<port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data(info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800)
- {
- putc('.');
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<port_width && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_data(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *)dest;
- ulong status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf("not erased at %08lx (%x)\n",(ulong)addr,*addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = (FPW)0x00400040; /* write setup */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- while (((status = *addr) & (FPW)0x00800080) != (FPW)0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW)0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW)0x00FF00FF; /* restore read mode */
-
- return (0);
-}
diff --git a/board/nx823/nx823.c b/board/nx823/nx823.c
deleted file mode 100644
index 4a426ec498..0000000000
--- a/board/nx823/nx823.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001-2002
- * 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 <common.h>
-#include <malloc.h>
-#include <mpc8xx.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static long int dram_size (long int, long int *, long int);
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] = {
-#if (MPC8XX_SPEED <= 50000000L)
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x0F07EC04, 0x01BBD804, 0x1FF7F440, 0xFFFFFC07,
- 0xFFFFFFFF,
-
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FE7F434, 0xEFABE834, 0x1FA7D435,
-
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x0F07EC04, 0x10EFDC04, 0xF0AFFC00, 0xF0AFFC00,
- 0xF1AFFC00, 0xFFAFFC40, 0xFFAFFC07, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x0E07E804, 0x01BBD000, 0x1FF7F447, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x0E07E800, 0x10EFD400, 0xF0AFFC00, 0xF0AFFC00,
- 0xF1AFFC47, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1FF7DC84, 0xFFFFFC04, 0xFFFFFC84, 0xFFFFFC07,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x7FFFFC07, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
-#else
-
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAFEC04, 0x11AFDC04, 0xEFBBF800,
- 0x1FF7F447,
-
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FF7F434, 0xEFEBE834, 0x1FB7D435,
-
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAFEC04, 0x10AFDC04, 0xF0AFFC00,
- 0xF0AFFC00, 0xF1AFFC00, 0xEFBBF800, 0x1FF7F447,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAFE800, 0x01BBD004, 0x1FF7F447,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAFE800, 0x10AFD400, 0xF0AFFC00,
- 0xF0AFFC00, 0xE1BBF804, 0x1FF7F447, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1FF7DC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-#endif
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- */
-
-int checkboard (void)
-{
- printf ("Board: Nexus NX823");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size_b0, size_b1, size8, size9;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Up to 2 Banks of 64Mbit x 2 devices
- * Initial builds only have 1
- */
- memctl->memc_mptpr = CFG_MPTPR_1BK_4K;
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller SDRAM bank 0
- */
- memctl->memc_or1 = CFG_OR1_PRELIM;
- memctl->memc_br1 = CFG_BR1_PRELIM;
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
- udelay (200);
-
- /*
- * Map controller SDRAM bank 1
- */
- memctl->memc_or2 = CFG_OR2_PRELIM;
- memctl->memc_br2 = CFG_BR2_PRELIM;
-
- /*
- * Perform SDRAM initializsation sequence
- */
- memctl->memc_mcr = 0x80002105; /* SDRAM bank 0 */
- udelay (1);
- memctl->memc_mcr = 0x80002230; /* SDRAM bank 0 - execute twice */
- udelay (1);
-
- memctl->memc_mcr = 0x80004105; /* SDRAM bank 1 */
- udelay (1);
- memctl->memc_mcr = 0x80004230; /* SDRAM bank 1 - execute twice */
- udelay (1);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
- udelay (1000);
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_8K;
-
- memctl->memc_mar = 0x00000088;
-
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL, (long *) SDRAM_BASE1_PRELIM,
- SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE1_PRELIM,
- SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size_b0 = size9;
-/* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */
- } else { /* back to 8 columns */
- size_b0 = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
-/* debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20); */
- }
-
- /*
- * Check Bank 1 Memory Size
- * use current column settings
- * [9 column SDRAM may also be used in 8 column mode,
- * but then only half the real size will be used.]
- */
- size_b1 = dram_size (memctl->memc_mamr, (long *) SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-/* debug ("SDRAM Bank 1: %ld MB\n", size8 >> 20); */
-
- udelay (1000);
-
- /*
- * Adjust refresh rate depending on SDRAM type, both banks
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if ((size_b0 < 0x02000000) && (size_b1 < 0x02000000)) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
- udelay (1000);
- }
-
- /*
- * Final mapping: map bigger bank first
- */
- if (size_b1 > size_b0) { /* SDRAM Bank 1 is bigger - map first */
-
- memctl->memc_or2 =
- ((-size_b1) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 =
- (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- if (size_b0 > 0) {
- /*
- * Position Bank 0 immediately above Bank 1
- */
- memctl->memc_or1 =
- ((-size_b0) & 0xFFFF0000) |
- CFG_OR_TIMING_SDRAM;
- memctl->memc_br1 =
- ((CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA |
- BR_V)
- + size_b1;
- } else {
- unsigned long reg;
-
- /*
- * No bank 0
- *
- * invalidate bank
- */
- memctl->memc_br1 = 0;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
- }
-
- } else { /* SDRAM Bank 0 is bigger - map first */
-
- memctl->memc_or1 =
- ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br1 =
- (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- if (size_b1 > 0) {
- /*
- * Position Bank 1 immediately above Bank 0
- */
- memctl->memc_or2 =
- ((-size_b1) & 0xFFFF0000) |
- CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 =
- ((CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA |
- BR_V)
- + size_b0;
- } else {
- unsigned long reg;
-
- /*
- * No bank 1
- *
- * invalidate bank
- */
- memctl->memc_br2 = 0;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
- }
- }
-
- udelay (10000);
-
- return (size_b0 + size_b1);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size (base, maxsize));
-}
-
-u_long *my_sernum;
-
-int misc_init_r (void)
-{
- char tmp[50];
- u_char *e = gd->bd->bi_enetaddr;
-
- /* save serial numbre from flash (uniquely programmed) */
- my_sernum = malloc (8);
- memcpy (my_sernum, gd->bd->bi_sernum, 8);
-
- /* save env variables according to sernum */
- sprintf (tmp, "%08lx%08lx", my_sernum[0], my_sernum[1]);
- setenv ("serial#", tmp);
-
- sprintf (tmp, "%02x:%02x:%02x:%02x:%02x:%02x", e[0], e[1], e[2], e[3],
- e[4], e[5]);
- setenv ("ethaddr", tmp);
- return (0);
-}
-
-void load_sernum_ethaddr (void)
-{
- int i;
- bd_t *bd = gd->bd;
-
- for (i = 0; i < 8; i++) {
- bd->bi_sernum[i] = *(u_char *) (CFG_FLASH_SN_BASE + i);
- }
- bd->bi_enetaddr[0] = 0x10;
- bd->bi_enetaddr[1] = 0x20;
- bd->bi_enetaddr[2] = 0x30;
- bd->bi_enetaddr[3] = bd->bi_sernum[1] << 4 | bd->bi_sernum[2];
- bd->bi_enetaddr[4] = bd->bi_sernum[5];
- bd->bi_enetaddr[5] = bd->bi_sernum[6];
-}
diff --git a/board/nx823/u-boot.lds b/board/nx823/u-boot.lds
deleted file mode 100644
index 7099fc40de..0000000000
--- a/board/nx823/u-boot.lds
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * (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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/nx823/u-boot.lds.debug b/board/nx823/u-boot.lds.debug
deleted file mode 100644
index 3165d56345..0000000000
--- a/board/nx823/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/o2dnt/Makefile b/board/o2dnt/Makefile
deleted file mode 100644
index f356bd39c7..0000000000
--- a/board/o2dnt/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#
-# (C) Copyright 2005-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/o2dnt/config.mk b/board/o2dnt/config.mk
deleted file mode 100644
index b873376804..0000000000
--- a/board/o2dnt/config.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# (C) Copyright 2005
-# 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
-#
-
-# boot low for 16 MiB boards
-TEXT_BASE = 0xFF000000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/o2dnt/flash.c b/board/o2dnt/flash.c
deleted file mode 100644
index 037d28732d..0000000000
--- a/board/o2dnt/flash.c
+++ /dev/null
@@ -1,587 +0,0 @@
-/*
- * (C) Copyright 2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * flash_real_protect() routine based on boards/alaska/flash.c
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * 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 <common.h>
-
-/* Intel-compatible flash commands */
-#define INTEL_ERASE 0x20
-#define INTEL_PROGRAM 0x40
-#define INTEL_CLEAR 0x50
-#define INTEL_LOCKBIT 0x60
-#define INTEL_PROTECT 0x01
-#define INTEL_STATUS 0x70
-#define INTEL_READID 0x90
-#define INTEL_READID 0x90
-#define INTEL_SUSPEND 0xB0
-#define INTEL_CONFIRM 0xD0
-#define INTEL_RESET 0xFF
-
-/* Intel-compatible flash status bits */
-#define INTEL_FINISHED 0x80
-#define INTEL_OK 0x80
-
-typedef unsigned char FLASH_PORT_WIDTH;
-typedef volatile unsigned char FLASH_PORT_WIDTHV;
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-#define FLASH_ID_MASK 0xFF
-
-#define ORMASK(size) ((-size) & OR_AM_MSK)
-
-#define FLASH_CYCLE1 0x0555
-#define FLASH_CYCLE2 0x02aa
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(FPWV *addr, flash_info_t *info);
-static void flash_reset(flash_info_t *info);
-static flash_info_t *flash_get_info(ulong base);
-static int write_data (flash_info_t *info, FPWV *dest, FPW data); /* O2D */
-static void flash_sync_real_protect (flash_info_t * info);
-static unsigned char intel_sector_protected (flash_info_t *info, ushort sector);
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- unsigned long size = 0;
- int i;
- extern void flash_preinit(void);
- extern void flash_afterinit(ulong);
-
- flash_preinit();
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- memset(&flash_info[i], 0, sizeof(flash_info_t));
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Query flash chip */
- flash_info[0].size =
- flash_get_size((FPW *)CFG_FLASH_BASE, &flash_info[0]);
- size += flash_info[0].size;
-
- /* get the h/w and s/w protection status in sync */
- flash_sync_real_protect(&flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- flash_get_info(CFG_MONITOR_BASE));
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- flash_get_info(CFG_ENV_ADDR));
-#endif
-
-
- flash_afterinit(size);
- return (size ? size : 1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset(flash_info_t *info)
-{
- FPWV *base = (FPWV *)(info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- *base = (FPW) INTEL_RESET; /* Intel Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static flash_info_t *flash_get_info(ulong base)
-{
- int i;
- flash_info_t * info;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i ++) {
- info = & flash_info[i];
- if (info->size &&
- info->start[0] <= base &&
- base <= info->start[0] + info->size - 1)
- break;
- }
-
- return (i == CFG_MAX_FLASH_BANKS ? 0 : info);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar *bootletter;
- char *fmt;
- uchar botbootletter[] = "B";
- uchar topbootletter[] = "T";
- uchar botboottype[] = "bottom boot sector";
- uchar topboottype[] = "top boot sector";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- /* check for top or bottom boot, if it applies */
- if (info->flash_id & FLASH_BTYPE) {
- boottype = botboottype;
- bootletter = botbootletter;
- } else {
- boottype = topboottype;
- bootletter = topbootletter;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- fmt = "28F128J3 (128 Mbit, uniform sectors)\n";
- break;
- default:
- fmt = "Unknown Chip Type\n";
- break;
- }
-
- printf (fmt, bootletter, boottype);
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-ulong flash_get_size (FPWV *addr, flash_info_t *info)
-{
- int i;
-
- /* Write auto select command: read Manufacturer ID */
- /* Write auto select command sequence and test FLASH answer */
- addr[FLASH_CYCLE1] = (FPW) INTEL_READID; /* selects Intel or AMD */
-
- /* The manufacturer codes are only 1 byte, so just use 1 byte.
- * This works for any bus width and any FLASH device width.
- */
- udelay(100);
- switch (addr[0] & 0xff) {
- case (uchar)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- /* Strataflash is configurable to 8/16bit Bus,
- * but the Query-Structure is Word-orientated */
- if (info->flash_id != FLASH_UNKNOWN) {
- switch ((FPW)addr[2]) {
- case (FPW)INTEL_ID_28F128J3:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- for( i = 0; i < info->sector_count; i++ )
- info->start[i] = (ulong)addr + (i * 0x20000);
- break; /* => Intel Strataflash 16MB */
- default:
- printf("Flash_id != %xd\n", (FPW)addr[2]);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* => no or unknown flash */
- }
- }
-
- /* Put FLASH back in read mode */
- flash_reset(info);
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- FPWV *addr;
- int flag, prot, sect;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- break;
- case FLASH_UNKNOWN:
- default:
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect)
- if (info->protect[sect])
- prot++;
-
- if (prot)
- printf ("- Warning: %d protected sectors will not be erased!",
- prot);
-
- printf ("\n");
- last = get_timer(0);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && rcode == 0; sect++) {
-
- if (info->protect[sect] != 0) /* protected, skip it */
- continue;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr = (FPWV *)(info->start[sect]);
- *addr = (FPW) INTEL_CLEAR; /* clear status register */
- *addr = (FPW) INTEL_ERASE; /* erase setup */
- *addr = (FPW) INTEL_CONFIRM; /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer(0);
-
- /* wait at least 80us for Intel - let's wait 1 ms */
- udelay (1000);
-
- while ((*addr & (FPW) INTEL_FINISHED) != (FPW) INTEL_FINISHED) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) INTEL_SUSPEND;/* suspend erase */
- flash_reset(info); /* reset to read mode */
- rcode = 1; /* failed */
- break;
- }
-
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) { /* every second */
- putc ('.');
- last = get_timer(0);
- }
- }
-
- flash_reset(info); /* reset to read mode */
- }
-
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof(data), left -= sizeof(data) - bytes) {
-
- bytes = addr & (sizeof(data) - 1);
- addr &= ~(sizeof(data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits */
- for (i = 0; i < sizeof(data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left )
- data += *((uchar *)addr + i);
- else
- data += *src++;
- }
-
- /* write one word to the flash */
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- res = write_data(info, (FPWV *)addr, data);
- break;
- default:
- /* unknown flash type, error! */
- printf ("missing or unknown FLASH type\n");
- res = 1; /* not really a timeout, but gives error */
- break;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, FPWV *dest, FPW data)
-{
- FPWV *addr = dest;
- ulong status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) INTEL_PROGRAM; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- start = get_timer(0);
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) INTEL_FINISHED) != (FPW) INTEL_FINISHED) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) INTEL_RESET; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) INTEL_RESET; /* restore read mode */
- if (flag)
- enable_interrupts();
-
- return (0);
-}
-
-
-/*-----------------------------------------------------------------------
- * Set/Clear sector's lock bit, returns:
- * 0 - OK
- * 1 - Error (timeout, voltage problems, etc.)
- */
-int flash_real_protect (flash_info_t * info, long sector, int prot)
-{
- ulong start;
- int i;
- int rc = 0;
- FPWV *addr = (FPWV *) (info->start[sector]);
- int flag = disable_interrupts ();
-
- *addr = INTEL_CLEAR; /* Clear status register */
- if (prot) { /* Set sector lock bit */
- *addr = INTEL_LOCKBIT; /* Sector lock bit */
- *addr = INTEL_PROTECT; /* set */
- } else { /* Clear sector lock bit */
- *addr = INTEL_LOCKBIT; /* All sectors lock bits */
- *addr = INTEL_CONFIRM; /* clear */
- }
-
- start = get_timer (0);
-
- while ((*addr & INTEL_FINISHED) != INTEL_FINISHED) {
- if (get_timer (start) > CFG_FLASH_UNLOCK_TOUT) {
- printf ("Flash lock bit operation timed out\n");
- rc = 1;
- break;
- }
- }
-
- if (*addr != INTEL_OK) {
- printf ("Flash lock bit operation failed at %08X, CSR=%08X\n",
- (uint) addr, (uint) * addr);
- rc = 1;
- }
-
- if (!rc)
- info->protect[sector] = prot;
-
- /*
- * Clear lock bit command clears all sectors lock bits, so
- * we have to restore lock bits of protected sectors.
- */
- if (!prot) {
- for (i = 0; i < info->sector_count; i++) {
- if (info->protect[i]) {
- start = get_timer (0);
- addr = (FPWV *) (info->start[i]);
- *addr = INTEL_LOCKBIT; /* Sector lock bit */
- *addr = INTEL_PROTECT; /* set */
- while ((*addr & INTEL_FINISHED) !=
- INTEL_FINISHED) {
- if (get_timer (start) >
- CFG_FLASH_UNLOCK_TOUT) {
- printf ("Flash lock bit operation timed out\n");
- rc = 1;
- break;
- }
- }
- }
- }
- }
-
- if (flag)
- enable_interrupts ();
-
- *addr = INTEL_RESET; /* Reset to read array mode */
-
- return rc;
-}
-
-
-/*
- * This function gets the u-boot flash sector protection status
- * (flash_info_t.protect[]) in sync with the sector protection
- * status stored in hardware.
- */
-static void flash_sync_real_protect (flash_info_t * info)
-{
- int i;
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- for (i = 0; i < info->sector_count; ++i) {
- info->protect[i] = intel_sector_protected(info, i);
- }
- break;
- default:
- /* no h/w protect support */
- break;
- }
-}
-
-
-/*
- * checks if "sector" in bank "info" is protected. Should work on intel
- * strata flash chips 28FxxxJ3x in 8-bit mode.
- * Returns 1 if sector is protected (or timed-out while trying to read
- * protection status), 0 if it is not.
- */
-static unsigned char intel_sector_protected (flash_info_t *info, ushort sector)
-{
- FPWV *addr;
- FPWV *lock_conf_addr;
- ulong start;
- unsigned char ret;
-
- /*
- * first, wait for the WSM to be finished. The rationale for
- * waiting for the WSM to become idle for at most
- * CFG_FLASH_ERASE_TOUT is as follows. The WSM can be busy
- * because of: (1) erase, (2) program or (3) lock bit
- * configuration. So we just wait for the longest timeout of
- * the (1)-(3), i.e. the erase timeout.
- */
-
- /* wait at least 35ns (W12) before issuing Read Status Register */
- udelay(1);
- addr = (FPWV *) info->start[sector];
- *addr = (FPW) INTEL_STATUS;
-
- start = get_timer (0);
- while ((*addr & (FPW) INTEL_FINISHED) != (FPW) INTEL_FINISHED) {
- if (get_timer (start) > CFG_FLASH_ERASE_TOUT) {
- *addr = (FPW) INTEL_RESET; /* restore read mode */
- printf("WSM busy too long, can't get prot status\n");
- return 1;
- }
- }
-
- /* issue the Read Identifier Codes command */
- *addr = (FPW) INTEL_READID;
-
- /* wait at least 35ns (W12) before reading */
- udelay(1);
-
- /* Intel example code uses offset of 4 for 8-bit flash */
- lock_conf_addr = (FPWV *) info->start[sector] + 4;
- ret = (*lock_conf_addr & (FPW) INTEL_PROTECT) ? 1 : 0;
-
- /* put flash back in read mode */
- *addr = (FPW) INTEL_RESET;
-
- return ret;
-}
diff --git a/board/o2dnt/o2dnt.c b/board/o2dnt/o2dnt.c
deleted file mode 100644
index 81a27002f4..0000000000
--- a/board/o2dnt/o2dnt.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * (C) Copyright 2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#include <common.h>
-#include <mpc5xxx.h>
-#include <pci.h>
-
-#define SDRAM_MODE 0x00CD0000
-#define SDRAM_CONTROL 0x504F0000
-#define SDRAM_CONFIG1 0xD2322800
-#define SDRAM_CONFIG2 0x8AD70000
-
-static void sdram_start (int hi_addr)
-{
- long hi_addr_bit = hi_addr ? 0x01000000 : 0;
-
- /* unlock mode register */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000000 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* precharge all banks */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* precharge all banks */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* auto refresh */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000004 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* set mode register */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE;
- __asm__ volatile ("sync");
-
- /* normal operation */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
- __asm__ volatile ("sync");
-}
-
-/*
- * ATTENTION: Although partially referenced initdram does NOT make real use
- * use of CFG_SDRAM_BASE. The code does not work if CFG_SDRAM_BASE
- * is something else than 0x00000000.
- */
-long int initdram (int board_type)
-{
- ulong dramsize = 0;
- ulong dramsize2 = 0;
- ulong test1, test2;
-
- /* setup SDRAM chip selects */
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x0000001e;/* 2G at 0x0 */
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = 0x80000000;/* disabled */
- __asm__ volatile ("sync");
-
- /* setup config registers */
- *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
- *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
- __asm__ volatile ("sync");
-
- /* find RAM size using SDRAM CS0 only */
- sdram_start(0);
- test1 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
- sdram_start(1);
- test2 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
- if (test1 > test2) {
- sdram_start(0);
- dramsize = test1;
- } else {
- dramsize = test2;
- }
-
- /* memory smaller than 1MB is impossible */
- if (dramsize < (1 << 20)) {
- dramsize = 0;
- }
-
- /* set SDRAM CS0 size according to the amount of RAM found */
- if (dramsize > 0)
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x13 + __builtin_ffs(dramsize >> 20) - 1;
- else
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
-
- /* let SDRAM CS1 start right after CS0 */
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e;/* 2G */
-
- /* find RAM size using SDRAM CS1 only */
- if (!dramsize)
- sdram_start(0);
-
- test2 = test1 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
-
- if (!dramsize) {
- sdram_start(1);
- test2 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
- }
-
- if (test1 > test2) {
- sdram_start(0);
- dramsize2 = test1;
- } else {
- dramsize2 = test2;
- }
-
- /* memory smaller than 1MB is impossible */
- if (dramsize2 < (1 << 20))
- dramsize2 = 0;
-
- /* set SDRAM CS1 size according to the amount of RAM found */
- if (dramsize2 > 0) {
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize
- | (0x13 + __builtin_ffs(dramsize2 >> 20) - 1);
- } else {
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
- }
-
- return dramsize + dramsize2;
-}
-
-int checkboard (void)
-{
- puts ("Board: O2DNT\n");
- return 0;
-}
-
-void flash_preinit(void)
-{
- /*
- * Now, when we are in RAM, enable flash write
- * access for detection process.
- * Note that CS_BOOT cannot be cleared when
- * executing in flash.
- */
- *(vu_long *)MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
-}
-
-void flash_afterinit(ulong size)
-{
- if (size == 0x800000) { /* adjust mapping */
- *(vu_long *)MPC5XXX_BOOTCS_START = *(vu_long *)MPC5XXX_CS0_START =
- START_REG(CFG_BOOTCS_START | size);
-
- *(vu_long *)MPC5XXX_BOOTCS_STOP = *(vu_long *)MPC5XXX_CS0_STOP =
- STOP_REG(CFG_BOOTCS_START | size, size);
- }
-}
-
-#ifdef CONFIG_PCI
-static struct pci_controller hose;
-
-extern void pci_mpc5xxx_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
- pci_mpc5xxx_init(&hose);
-}
-#endif
diff --git a/board/o2dnt/u-boot.lds b/board/o2dnt/u-boot.lds
deleted file mode 100644
index 88dc118e8f..0000000000
--- a/board/o2dnt/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2005
- * 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/mpc5xxx/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/omap1610inn/Makefile b/board/omap1610inn/Makefile
deleted file mode 100644
index c375bc1353..0000000000
--- a/board/omap1610inn/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := omap1610innovator.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/omap1610inn/config.mk b/board/omap1610inn/config.mk
deleted file mode 100644
index 80976efc6b..0000000000
--- a/board/omap1610inn/config.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-#
-# (C) Copyright 2003
-# Texas Instruments, <www.ti.com>
-# Kshitij Gupta <Kshitij@ti.com>
-#
-# TI Innovator board with OMAP1610 (ARM925EJS) cpu
-# see http://www.ti.com/ for more information on Texas Instruments
-#
-# Innovator has 1 bank of 256 MB SDRAM
-# Physical Address:
-# 1000'0000 to 2000'0000
-#
-#
-# Linux-Kernel is expected to be at 1000'8000, entry 1000'8000
-# (mem base + reserved)
-#
-# we load ourself to 1108'0000
-#
-#
-
-
-TEXT_BASE = 0x11080000
diff --git a/board/omap1610inn/flash.c b/board/omap1610inn/flash.c
deleted file mode 100644
index c8e4c9e25a..0000000000
--- a/board/omap1610inn/flash.c
+++ /dev/null
@@ -1,493 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.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
- */
-
-#include <common.h>
-#include <linux/byteorder/swab.h>
-
-#define PHYS_FLASH_SECT_SIZE 0x00020000 /* 256 KB sectors (x2) */
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-
-/* Flash Organization Structure */
-typedef struct OrgDef {
- unsigned int sector_number;
- unsigned int sector_size;
-} OrgDef;
-
-
-/* Flash Organizations */
-OrgDef OrgIntel_28F256L18T[] = {
- {4, 32 * 1024}, /* 4 * 32kBytes sectors */
- {255, 128 * 1024}, /* 255 * 128kBytes sectors */
-};
-
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-unsigned long flash_init (void);
-static ulong flash_get_size (FPW * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-void inline spin_wheel (void);
-void flash_print_info (flash_info_t * info);
-void flash_unprotect_sectors (FPWV * addr);
-int flash_erase (flash_info_t * info, int s_first, int s_last);
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt);
-void flash_unlock(flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) CFG_FLASH_BASE, &flash_info[i]);
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[i]);
- /* to reset the lock bit */
- flash_unlock(&flash_info[i]);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1, &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_unlock(flash_info_t * info)
-{
- int j;
- for (j=2;j<CFG_MAX_FLASH_SECT;j++){
- FPWV *addr = (FPWV *) (info->start[j]);
- flash_unprotect_sectors (addr);
- *addr = (FPW) 0x00500050;/* clear status register */
- *addr = (FPW) 0x00FF00FF;/* resest to read mode */
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
- OrgDef *pOrgDef;
-
- pOrgDef = OrgIntel_28F256L18T;
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- if (i > 255) {
- info->start[i] = base + (i * 0x8000);
- info->protect[i] = 0;
- } else {
- info->start[i] = base +
- (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F256L18T:
- printf ("FLASH 28F256L18T\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
- switch (value) {
-
- case (FPW) (INTEL_ID_28F256L18T):
- info->flash_id += FLASH_28F256L18T;
- info->sector_count = 259;
- info->size = 0x02000000;
- break; /* => 32 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/* unprotects a sector for write and erase
- * on some intel parts, this unprotects the entire chip, but it
- * wont hurt to call this additional times per sector...
- */
-void flash_unprotect_sectors (FPWV * addr)
-{
-#define PD_FINTEL_WSMS_READY_MASK 0x0080
-
- *addr = (FPW) 0x00500050; /* clear status register */
-
- /* this sends the clear lock bit command */
- *addr = (FPW) 0x00600060;
- *addr = (FPW) 0x00D000D0;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- flash_unprotect_sectors (addr);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050;/* clear status register */
- *addr = (FPW) 0x00200020;/* erase setup */
- *addr = (FPW) 0x00D000D0;/* erase confirm */
-
- while (((status =
- *addr) & (FPW) 0x00800080) !=
- (FPW) 0x00800080) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- /* suspend erase */
- *addr = (FPW) 0x00B000B0;
- /* reset to read mode */
- *addr = (FPW) 0x00FF00FF;
- rcode = 1;
- break;
- }
- }
-
- /* clear status register cmd. */
- *addr = (FPW) 0x00500050;
- *addr = (FPW) 0x00FF00FF;/* resest to read mode */
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/omap1610inn/lowlevel_init.S b/board/omap1610inn/lowlevel_init.S
deleted file mode 100644
index cc8347fa14..0000000000
--- a/board/omap1610inn/lowlevel_init.S
+++ /dev/null
@@ -1,452 +0,0 @@
-/*
- * Board specific setup info
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.com>
- *
- * Modified for OMAP 1610 H2 board by Nishant Kamat, Jan 2004
- *
- * 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 <config.h>
-#include <version.h>
-
-#if defined(CONFIG_OMAP1610)
-#include <./configs/omap1510.h>
-#endif
-
-
-_TEXT_BASE:
- .word TEXT_BASE /* sdram load addr from config.mk */
-
-.globl lowlevel_init
-lowlevel_init:
-
-
- /*------------------------------------------------------*
- *mask all IRQs by setting all bits in the INTMR default*
- *------------------------------------------------------*/
- mov r1, #0xffffffff
- ldr r0, =REG_IHL1_MIR
- str r1, [r0]
- ldr r0, =REG_IHL2_MIR
- str r1, [r0]
-
- /*------------------------------------------------------*
- * Set up ARM CLM registers (IDLECT1) *
- *------------------------------------------------------*/
- ldr r0, REG_ARM_IDLECT1
- ldr r1, VAL_ARM_IDLECT1
- str r1, [r0]
-
- /*------------------------------------------------------*
- * Set up ARM CLM registers (IDLECT2) *
- *------------------------------------------------------*/
- ldr r0, REG_ARM_IDLECT2
- ldr r1, VAL_ARM_IDLECT2
- str r1, [r0]
-
- /*------------------------------------------------------*
- * Set up ARM CLM registers (IDLECT3) *
- *------------------------------------------------------*/
- ldr r0, REG_ARM_IDLECT3
- ldr r1, VAL_ARM_IDLECT3
- str r1, [r0]
-
-#ifdef CONFIG_CS_AUTOBOOT /* do the setup depending on boot mode */
- ldr r0, CONF_STATUS
- ldr r1, [r0]
- tst r1, #0x02
- beq disable_wd /* booting from RAM, skip setup */
-#endif
-
- mov r1, #0x01 /* PER_EN bit */
- ldr r0, REG_ARM_RSTCT2
- strh r1, [r0] /* CLKM; Peripheral reset. */
-
- /* Set CLKM to Sync-Scalable */
- /* I supposedly need to enable the dsp clock before switching */
- mov r1, #0x0000
- ldr r0, REG_ARM_SYSST
- strh r1, [r0]
- mov r0, #0x400
-1:
- subs r0, r0, #0x1 /* wait for any bubbles to finish */
- bne 1b
- ldr r1, VAL_ARM_CKCTL
- ldr r0, REG_ARM_CKCTL
- strh r1, [r0]
-
- /* a few nops to let settle */
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
-
- /* setup DPLL 1 */
- /* Ramp up the clock to 96Mhz */
- ldr r1, VAL_DPLL1_CTL
- ldr r0, REG_DPLL1_CTL
- strh r1, [r0]
- ands r1, r1, #0x10 /* Check if PLL is enabled. */
- beq lock_end /* Do not look for lock if BYPASS selected */
-2:
- ldrh r1, [r0]
- ands r1, r1, #0x01 /* Check the LOCK bit.*/
- beq 2b /* loop until bit goes hi. */
-lock_end:
-
-
- /*------------------------------------------------------*
- * Turn off the watchdog during init... *
- *------------------------------------------------------*/
-disable_wd:
- ldr r0, REG_WATCHDOG
- ldr r1, WATCHDOG_VAL1
- str r1, [r0]
- ldr r1, WATCHDOG_VAL2
- str r1, [r0]
- ldr r0, REG_WSPRDOG
- ldr r1, WSPRDOG_VAL1
- str r1, [r0]
- ldr r0, REG_WWPSDOG
-
-watch1Wait:
- ldr r1, [r0]
- tst r1, #0x10
- bne watch1Wait
-
- ldr r0, REG_WSPRDOG
- ldr r1, WSPRDOG_VAL2
- str r1, [r0]
- ldr r0, REG_WWPSDOG
-watch2Wait:
- ldr r1, [r0]
- tst r1, #0x10
- bne watch2Wait
-
-
- /* Set memory timings corresponding to the new clock speed */
-
- /* Check execution location to determine current execution location
- * and branch to appropriate initialization code.
- */
- /* Load physical SDRAM base. */
- mov r0, #0x10000000
- /* Get current execution location. */
- mov r1, pc
- /* Compare. */
- cmp r1, r0
- /* Skip over EMIF-fast initialization if running from SDRAM. */
- bge skip_sdram
-
- /*
- * Delay for SDRAM initialization.
- */
- mov r3, #0x1800 /* value should be checked */
-3:
- subs r3, r3, #0x1 /* Decrement count */
- bne 3b
-
-
- /*
- * Set SDRAM control values. Disable refresh before MRS command.
- */
-
- /* mobile ddr operation */
- ldr r0, REG_SDRAM_OPERATION
- mov r2, #07
- str r2, [r0]
-
- /* config register */
- ldr r0, REG_SDRAM_CONFIG
- ldr r1, SDRAM_CONFIG_VAL
- str r1, [r0]
-
- /* manual command register */
- ldr r0, REG_SDRAM_MANUAL_CMD
- /* issue set cke high */
- mov r1, #CMD_SDRAM_CKE_SET_HIGH
- str r1, [r0]
- /* issue nop */
- mov r1, #CMD_SDRAM_NOP
- str r1, [r0]
-
- mov r2, #0x0100
-waitMDDR1:
- subs r2, r2, #1
- bne waitMDDR1 /* delay loop */
-
- /* issue precharge */
- mov r1, #CMD_SDRAM_PRECHARGE
- str r1, [r0]
-
- /* issue autorefresh x 2 */
- mov r1, #CMD_SDRAM_AUTOREFRESH
- str r1, [r0]
- str r1, [r0]
-
- /* mrs register ddr mobile */
- ldr r0, REG_SDRAM_MRS
- mov r1, #0x33
- str r1, [r0]
-
- /* emrs1 low-power register */
- ldr r0, REG_SDRAM_EMRS1
- /* self refresh on all banks */
- mov r1, #0
- str r1, [r0]
-
- ldr r0, REG_DLL_URD_CONTROL
- ldr r1, DLL_URD_CONTROL_VAL
- str r1, [r0]
-
- ldr r0, REG_DLL_LRD_CONTROL
- ldr r1, DLL_LRD_CONTROL_VAL
- str r1, [r0]
-
- ldr r0, REG_DLL_WRT_CONTROL
- ldr r1, DLL_WRT_CONTROL_VAL
- str r1, [r0]
-
- /* delay loop */
- mov r2, #0x0100
-waitMDDR2:
- subs r2, r2, #1
- bne waitMDDR2
-
- /*
- * Delay for SDRAM initialization.
- */
- mov r3, #0x1800
-4:
- subs r3, r3, #1 /* Decrement count. */
- bne 4b
- b common_tc
-
-skip_sdram:
-
- ldr r0, REG_SDRAM_CONFIG
- ldr r1, SDRAM_CONFIG_VAL
- str r1, [r0]
-
-common_tc:
- /* slow interface */
- ldr r1, VAL_TC_EMIFS_CS0_CONFIG
- ldr r0, REG_TC_EMIFS_CS0_CONFIG
- str r1, [r0] /* Chip Select 0 */
-
- ldr r1, VAL_TC_EMIFS_CS1_CONFIG
- ldr r0, REG_TC_EMIFS_CS1_CONFIG
- str r1, [r0] /* Chip Select 1 */
- ldr r1, VAL_TC_EMIFS_CS3_CONFIG
- ldr r0, REG_TC_EMIFS_CS3_CONFIG
- str r1, [r0] /* Chip Select 3 */
-
-#ifdef CONFIG_H2_OMAP1610
- /* inserting additional 2 clock cycle hold time for LAN */
- ldr r0, REG_TC_EMIFS_CS1_ADVANCED
- ldr r1, VAL_TC_EMIFS_CS1_ADVANCED
- str r1, [r0]
-#endif
- /* Start MPU Timer 1 */
- ldr r0, REG_MPU_LOAD_TIMER
- ldr r1, VAL_MPU_LOAD_TIMER
- str r1, [r0]
-
- ldr r0, REG_MPU_CNTL_TIMER
- ldr r1, VAL_MPU_CNTL_TIMER
- str r1, [r0]
-
- /* back to arch calling code */
- mov pc, lr
-
- /* the literal pools origin */
- .ltorg
-
-#ifdef CONFIG_CS_AUTOBOOT
-CONF_STATUS:
- .word 0xfffe1130 /* 32 bits */
-#endif
-
-REG_TC_EMIFS_CONFIG: /* 32 bits */
- .word 0xfffecc0c
-REG_TC_EMIFS_CS0_CONFIG: /* 32 bits */
- .word 0xfffecc10
-REG_TC_EMIFS_CS1_CONFIG: /* 32 bits */
- .word 0xfffecc14
-REG_TC_EMIFS_CS2_CONFIG: /* 32 bits */
- .word 0xfffecc18
-REG_TC_EMIFS_CS3_CONFIG: /* 32 bits */
- .word 0xfffecc1c
-
-#ifdef CONFIG_H2_OMAP1610
-REG_TC_EMIFS_CS1_ADVANCED: /* 32 bits */
- .word 0xfffecc54
-#endif
-
-/* MPU clock/reset/power mode control registers */
-REG_ARM_CKCTL: /* 16 bits */
- .word 0xfffece00
-
-REG_ARM_IDLECT3: /* 16 bits */
- .word 0xfffece24
-REG_ARM_IDLECT2: /* 16 bits */
- .word 0xfffece08
-REG_ARM_IDLECT1: /* 16 bits */
- .word 0xfffece04
-
-REG_ARM_RSTCT2: /* 16 bits */
- .word 0xfffece14
-REG_ARM_SYSST: /* 16 bits */
- .word 0xfffece18
-/* DPLL control registers */
-REG_DPLL1_CTL: /* 16 bits */
- .word 0xfffecf00
-
-/* Watch Dog register */
-/* secure watchdog stop */
-REG_WSPRDOG:
- .word 0xfffeb048
-/* watchdog write pending */
-REG_WWPSDOG:
- .word 0xfffeb034
-
-WSPRDOG_VAL1:
- .word 0x0000aaaa
-WSPRDOG_VAL2:
- .word 0x00005555
-
-/* SDRAM config is: auto refresh enabled, 16 bit 4 bank,
- counter @8192 rows, 10 ns, 8 burst */
-REG_SDRAM_CONFIG:
- .word 0xfffecc20
-
-/* Operation register */
-REG_SDRAM_OPERATION:
- .word 0xfffecc80
-
-/* Manual command register */
-REG_SDRAM_MANUAL_CMD:
- .word 0xfffecc84
-
-/* SDRAM MRS (New) config is: CAS latency is 2, burst length 8 */
-REG_SDRAM_MRS:
- .word 0xfffecc70
-
-/* SDRAM MRS (New) config is: CAS latency is 2, burst length 8 */
-REG_SDRAM_EMRS1:
- .word 0xfffecc78
-
-/* WRT DLL register */
-REG_DLL_WRT_CONTROL:
- .word 0xfffecc68
-DLL_WRT_CONTROL_VAL:
- .word 0x03f00002
-
-/* URD DLL register */
-REG_DLL_URD_CONTROL:
- .word 0xfffeccc0
-DLL_URD_CONTROL_VAL:
- .word 0x00800002
-
-/* LRD DLL register */
-REG_DLL_LRD_CONTROL:
- .word 0xfffecccc
-
-REG_WATCHDOG:
- .word 0xfffec808
-
-REG_MPU_LOAD_TIMER:
- .word 0xfffec504
-REG_MPU_CNTL_TIMER:
- .word 0xfffec500
-
-/* 96 MHz Samsung Mobile DDR */
-SDRAM_CONFIG_VAL:
- .word 0x001200f4
-
-DLL_LRD_CONTROL_VAL:
- .word 0x00800002
-
-VAL_ARM_CKCTL:
- .word 0x3000
-VAL_DPLL1_CTL:
- .word 0x2830
-
-#ifdef CONFIG_INNOVATOROMAP1610
-VAL_TC_EMIFS_CS0_CONFIG:
- .word 0x002130b0
-VAL_TC_EMIFS_CS1_CONFIG:
- .word 0x00001131
-VAL_TC_EMIFS_CS2_CONFIG:
- .word 0x000055f0
-VAL_TC_EMIFS_CS3_CONFIG:
- .word 0x88011131
-#endif
-
-#ifdef CONFIG_H2_OMAP1610
-VAL_TC_EMIFS_CS0_CONFIG:
- .word 0x00203331
-VAL_TC_EMIFS_CS1_CONFIG:
- .word 0x8180fff3
-VAL_TC_EMIFS_CS2_CONFIG:
- .word 0xf800f22a
-VAL_TC_EMIFS_CS3_CONFIG:
- .word 0x88011131
-VAL_TC_EMIFS_CS1_ADVANCED:
- .word 0x00000022
-#endif
-
-VAL_TC_EMIFF_SDRAM_CONFIG:
- .word 0x010290fc
-VAL_TC_EMIFF_MRS:
- .word 0x00000027
-
-VAL_ARM_IDLECT1:
- .word 0x00000400
-
-VAL_ARM_IDLECT2:
- .word 0x00000886
-VAL_ARM_IDLECT3:
- .word 0x00000015
-
-WATCHDOG_VAL1:
- .word 0x000000f5
-WATCHDOG_VAL2:
- .word 0x000000a0
-
-VAL_MPU_LOAD_TIMER:
- .word 0xffffffff
-VAL_MPU_CNTL_TIMER:
- .word 0xffffffa1
-
-/* command values */
-.equ CMD_SDRAM_NOP, 0x00000000
-.equ CMD_SDRAM_PRECHARGE, 0x00000001
-.equ CMD_SDRAM_AUTOREFRESH, 0x00000002
-.equ CMD_SDRAM_CKE_SET_HIGH, 0x00000007
diff --git a/board/omap1610inn/omap1610innovator.c b/board/omap1610inn/omap1610innovator.c
deleted file mode 100644
index 8dbe686a89..0000000000
--- a/board/omap1610inn/omap1610innovator.c
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.com>
- *
- * Modified for OMAP 1610 H2 board by Nishant Kamat, Jan 2004
- *
- * 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 <common.h>
-#if defined(CONFIG_OMAP1610)
-#include <./configs/omap1510.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_CS_AUTOBOOT
-unsigned long omap_flash_base;
-#endif
-
-void flash__init (void);
-void ether__init (void);
-void set_muxconf_regs (void);
-void peripheral_power_enable (void);
-
-#define COMP_MODE_ENABLE ((unsigned int)0x0000EAEF)
-
-static inline void delay (unsigned long loops)
-{
- __asm__ volatile ("1:\n"
- "subs %0, %1, #1\n"
- "bne 1b":"=r" (loops):"0" (loops));
-}
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- if (machine_is_omap_h2())
- gd->bd->bi_arch_number = MACH_TYPE_OMAP_H2;
- else if (machine_is_omap_innovator())
- gd->bd->bi_arch_number = MACH_TYPE_OMAP_INNOVATOR;
- else
- gd->bd->bi_arch_number = MACH_TYPE_OMAP_GENERIC;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x10000100;
-
- /* Configure MUX settings */
- set_muxconf_regs ();
- peripheral_power_enable ();
-
-/* this speeds up your boot a quite a bit. However to make it
- * work, you need make sure your kernel startup flush bug is fixed.
- * ... rkw ...
- */
- icache_enable ();
-
- flash__init ();
- ether__init ();
- return 0;
-}
-
-
-int misc_init_r (void)
-{
- /* currently empty */
- return (0);
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-void flash__init (void)
-{
-#define EMIFS_GlB_Config_REG 0xfffecc0c
- unsigned int regval;
-
-#ifdef CONFIG_CS_AUTOBOOT
- /* Check swapping of CS0 and CS3, set flash base accordingly */
- omap_flash_base = ((*((u32 *)OMAP_EMIFS_CONFIG_REG) & 0x02) == 0) ?
- PHYS_FLASH_1_BM0 : PHYS_FLASH_1_BM1;
-#endif
- regval = *((volatile unsigned int *) EMIFS_GlB_Config_REG);
- /* Turn off write protection for flash devices. */
- regval = regval | 0x0001;
- *((volatile unsigned int *) EMIFS_GlB_Config_REG) = regval;
-}
-/*************************************************************
- Routine:ether__init
- Description: take the Ethernet controller out of reset and wait
- for the EEPROM load to complete.
-*************************************************************/
-void ether__init (void)
-{
-#define ETH_CONTROL_REG 0x0400030b
-
-#ifdef CONFIG_H2_OMAP1610
- #define LAN_RESET_REGISTER 0x0400001c
-
- /* The debug board on which the lan chip resides may not be powered
- * ON at the same time as the OMAP chip. So wait in a loop until the
- * lan reset register (on the debug board) is available (powered on)
- * and reset the lan chip.
- */
-
- *((volatile unsigned short *) LAN_RESET_REGISTER) = 0x0000;
- do {
- *((volatile unsigned short *) LAN_RESET_REGISTER) = 0x0001;
- udelay (3);
- } while (*((volatile unsigned short *) LAN_RESET_REGISTER) != 0x0001);
-
- do {
- *((volatile unsigned short *) LAN_RESET_REGISTER) = 0x0000;
- udelay (3);
- } while (*((volatile unsigned short *) LAN_RESET_REGISTER) != 0x0000);
-#endif
-
- *((volatile unsigned char *) ETH_CONTROL_REG) &= ~0x01;
- udelay (3);
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return 0;
-}
-
-/******************************************************
- Routine: set_muxconf_regs
- Description: Setting up the configuration Mux registers
- specific to the hardware
-*******************************************************/
-void set_muxconf_regs (void)
-{
- volatile unsigned int *MuxConfReg;
- /* set each registers to its reset value; */
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_0);
- /* setup for UART1 */
- *MuxConfReg &= ~(0x02000000); /* bit 25 */
- /* setup for UART2 */
- *MuxConfReg &= ~(0x01000000); /* bit 24 */
- /* Disable Uwire CS Hi-Z */
- *MuxConfReg |= 0x08000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_3);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_4);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_5);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_6);
- /*setup mux for UART3 */
- *MuxConfReg |= 0x00000001; /* bit3, 1, 0 (mux0 5,5,26) */
- *MuxConfReg &= ~0x0000003e;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_7);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_8);
- /* Disable Uwire CS Hi-Z */
- *MuxConfReg |= 0x00001200; /*bit 9 for CS0 12 for CS3 */
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_9);
- /* Need to turn on bits 21 and 12 in FUNC_MUX_CTRL_9 so the */
- /* hardware will actually use TX and RTS based on bit 25 in */
- /* FUNC_MUX_CTRL_0. I told you this thing was screwy! */
- *MuxConfReg |= 0x00201000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_A);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_B);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_C);
- /* setup for UART2 */
- /* Need to turn on bits 27 and 24 in FUNC_MUX_CTRL_C so the */
- /* hardware will actually use TX and RTS based on bit 24 in */
- /* FUNC_MUX_CTRL_0. */
- *MuxConfReg |= 0x09000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) PULL_DWN_CTRL_0);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) PULL_DWN_CTRL_1);
- *MuxConfReg = 0x00000000;
- /* mux setup for SD/MMC driver */
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) PULL_DWN_CTRL_2);
- *MuxConfReg &= 0xFFFE0FFF;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) PULL_DWN_CTRL_3);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) MOD_CONF_CTRL_0);
- /* bit 13 for MMC2 XOR_CLK */
- *MuxConfReg &= ~(0x00002000);
- /* bit 29 for UART 1 */
- *MuxConfReg &= ~(0x00002000);
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) FUNC_MUX_CTRL_0);
- /* Configure for USB. Turn on VBUS_CTRL and VBUS_MODE. */
- *MuxConfReg |= 0x000C0000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int)USB_TRANSCEIVER_CTRL);
- *MuxConfReg &= ~(0x00000070);
- *MuxConfReg &= ~(0x00000008);
- *MuxConfReg |= 0x00000003;
- *MuxConfReg |= 0x00000180;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) MOD_CONF_CTRL_0);
- /* bit 17, software controls VBUS */
- *MuxConfReg &= ~(0x00020000);
- /* Enable USB 48 and 12M clocks */
- *MuxConfReg |= 0x00000200;
- *MuxConfReg &= ~(0x00000180);
- /*2.75V for MMCSDIO1 */
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) VOLTAGE_CTRL_0);
- *MuxConfReg = 0x00001FE7;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) PU_PD_SEL_0);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) PU_PD_SEL_1);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) PU_PD_SEL_2);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) PU_PD_SEL_3);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) PU_PD_SEL_4);
- *MuxConfReg = 0x00000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) PULL_DWN_CTRL_4);
- *MuxConfReg = 0x00000000;
- /* Turn on UART2 48 MHZ clock */
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) MOD_CONF_CTRL_0);
- *MuxConfReg |= 0x40000000;
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) USB_OTG_CTRL);
- /* setup for USB VBus detection OMAP161x */
- *MuxConfReg |= 0x00040000; /* bit 18 */
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int) PU_PD_SEL_2);
- /* PullUps for SD/MMC driver */
- *MuxConfReg |= ~(0xFFFE0FFF);
- MuxConfReg =
- (volatile unsigned int *) ((unsigned int)COMP_MODE_CTRL_0);
- *MuxConfReg = COMP_MODE_ENABLE;
-}
-
-/******************************************************
- Routine: peripheral_power_enable
- Description: Enable the power for UART1
-*******************************************************/
-void peripheral_power_enable (void)
-{
-#define UART1_48MHZ_ENABLE ((unsigned short)0x0200)
-#define SW_CLOCK_REQUEST ((volatile unsigned short *)0xFFFE0834)
-
- *SW_CLOCK_REQUEST |= UART1_48MHZ_ENABLE;
-}
diff --git a/board/omap1610inn/u-boot.lds b/board/omap1610inn/u-boot.lds
deleted file mode 100644
index 710b2a2d6e..0000000000
--- a/board/omap1610inn/u-boot.lds
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
- . = ALIGN(4);
- .text :
- {
- cpu/arm926ejs/start.o (.text)
- *(.text)
- }
- . = ALIGN(4);
- .rodata : { *(.rodata) }
- . = ALIGN(4);
- .data : { *(.data) }
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/omap2420h4/Makefile b/board/omap2420h4/Makefile
deleted file mode 100644
index 2f2645a76b..0000000000
--- a/board/omap2420h4/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := omap2420h4.o mem.o sys_info.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/omap2420h4/config.mk b/board/omap2420h4/config.mk
deleted file mode 100644
index 3edcde0188..0000000000
--- a/board/omap2420h4/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (C) Copyright 2004
-# Texas Instruments, <www.ti.com>
-#
-# TI H4 board with OMAP2420 (ARM1136) cpu
-# see http://www.ti.com/ for more information on Texas Instruments
-#
-# H4 has 1 bank of 32MB or 64MB mDDR-SDRAM on CS0
-# H4 has 1 bank of 32MB or 00MB mDDR-SDRAM on CS1
-# Physical Address:
-# 8000'0000 (bank0)
-# A000/0000 (bank1) ES2 will be configurable
-# Linux-Kernel is expected to be at 8000'8000, entry 8000'8000
-# (mem base + reserved)
-
-# For use with external or internal boots.
-TEXT_BASE = 0x80e80000
-
-# Used with full SRAM boot.
-# This is either with a GP system or a signed boot image.
-# easiest, and safest way to go if you can.
-#TEXT_BASE = 0x40270000
-
-
-# Handy to get symbols to debug ROM version.
-#TEXT_BASE = 0x0
-#TEXT_BASE = 0x08000000
-#TEXT_BASE = 0x04000000
diff --git a/board/omap2420h4/flash.c b/board/omap2420h4/flash.c
deleted file mode 100644
index d5e106a5ea..0000000000
--- a/board/omap2420h4/flash.c
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.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
- */
-
-#include <common.h>
-#include <asm/arch/sizes.h>
-#include <linux/byteorder/swab.h>
-
-#define PHYS_FLASH_SECT_SIZE SZ_128K
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-# define FLASH_PORT_WIDTH ushort
-# define FLASH_PORT_WIDTHV vu_short
-# define SWAP(x) __swab16(x)
-#else
-# define FLASH_PORT_WIDTH ulong
-# define FLASH_PORT_WIDTHV vu_long
-# define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-
-/* Flash Organization Structure */
-typedef struct OrgDef {
- unsigned int sector_number;
- unsigned int sector_size;
-} OrgDef;
-
-
-/* Flash Organizations */
-OrgDef OrgIntel_28F256L18T[] = {
- {4, SZ_32K}, /* 4 * 32kBytes sectors */
- {255, SZ_128K}, /* 255 * 128kBytes sectors */
-};
-
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-unsigned long flash_init (void);
-static ulong flash_get_size (FPW * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-void inline spin_wheel (void);
-void flash_print_info (flash_info_t * info);
-void flash_unprotect_sectors (FPWV * addr);
-int flash_erase (flash_info_t * info, int s_first, int s_last);
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt);
-void flash_unlock(flash_info_t * info, int bank);
-int flash_probe(void);
-
-/*-----------------------------------------------------------------------
- */
-
-/* see if flash is ok */
-int flash_probe(void)
-{
- return(flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[0]));
-}
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- /* to reset the lock bit */
- flash_unlock(&flash_info[i],i);
- break;
- case 1:
- flash_get_size ((FPW *) PHYS_FLASH_2, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_2, &flash_info[i]);
- /* to reset the lock bit */
- flash_unlock(&flash_info[i],i);
- break;
-
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1, &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-#endif
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_unlock(flash_info_t * info, int bank)
-{
- int j;
- if (!bank)
- j=2; /* leave 0,1 locked for boot bank */
- else
- j=0; /* get the whole bank for #2 */
-
- for (;j<CFG_MAX_FLASH_SECT;j++) {
- FPWV *addr = (FPWV *) (info->start[j]);
- if (addr == NULL) {
- printf("Warning Flash probe failed\n");
- break;
- }
- flash_unprotect_sectors (addr);
- *addr = (FPW) 0x00500050;/* clear status register */
- *addr = (FPW) 0x00FF00FF;/* resest to read mode */
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
- volatile int r; /* gcc 3.4.0-1 strangeness, need to follow up.*/
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- if (i > 254) { /* 255,256,257,258 */
- r=i;
- info->start[i] = base + (((r-(int)255) * SZ_32K) + (255*PHYS_FLASH_SECT_SIZE));
- info->protect[i] = 0;
- } else {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F256L18T:
- printf ("FLASH 28F256L18T\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
-{
- volatile FPW value;
- /* mb(); this one makes ARM11 err go away, but I want it :) as a guide to problems */
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0] & 0xFF; /* just looking for 89 (8989 is hw pat)*/
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return(0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
- switch (value) {
-
- case (FPW) (INTEL_ID_28F256L18T): /* 880D */
- info->flash_id += FLASH_28F256L18T;
- info->sector_count = 259; /*0-258*/
- info->size = SZ_32M;
- break; /* => 32 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return(info->size);
-}
-
-
-/* unprotects a sector for write and erase
- * on some intel parts, this unprotects the entire chip, but it
- * wont hurt to call this additional times per sector...
- */
-void flash_unprotect_sectors (FPWV * addr)
-{
-#define PD_FINTEL_WSMS_READY_MASK 0x0080
-
- *addr = (FPW) 0x00500050; /* clear status register */
-
- /* this sends the clear lock bit command */
- *addr = (FPW) 0x00600060;
- *addr = (FPW) 0x00D000D0;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int prot, sect;
- ulong type, start, last;
- int rcode = 0;
-#ifdef CONFIG_USE_IRQ
- int iflag;
-#endif
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-
- start = get_timer (0);
- last = start;
-
-#ifdef CONFIG_USE_IRQ
- /* Disable interrupts which might cause a timeout here */
- iflag = disable_interrupts ();
-#endif
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- flash_unprotect_sectors (addr);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050;/* clear status register */
- *addr = (FPW) 0x00200020;/* erase setup */
- *addr = (FPW) 0x00D000D0;/* erase confirm */
-
- while (((status =
- *addr) & (FPW) 0x00800080) !=
- (FPW) 0x00800080) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- /* suspend erase */
- *addr = (FPW) 0x00B000B0;
- /* reset to read mode */
- *addr = (FPW) 0x00FF00FF;
- rcode = 1;
- break;
- }
- }
-
- /* clear status register cmd. */
- *addr = (FPW) 0x00500050;
- *addr = (FPW) 0x00FF00FF;/* resest to read mode */
- printf (" done\n");
- }
- }
-#ifdef CONFIG_USE_IRQ
- if (iflag)
- enable_interrupts();
-#endif
-
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return(rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return(rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return(0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return(write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
-#ifdef CONFIG_USE_IRQ
- int iflag;
-#endif
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
- return(2);
- }
- /* Disable interrupts which might cause a timeout here */
-#ifdef CONFIG_USE_IRQ
- iflag = disable_interrupts ();
-#endif
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return(1);
- }
- }
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
-#ifdef CONFIG_USE_IRQ
- if (iflag)
- enable_interrupts();
-#endif
-
- return(0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/omap2420h4/lowlevel_init.S b/board/omap2420h4/lowlevel_init.S
deleted file mode 100644
index 9752fc488d..0000000000
--- a/board/omap2420h4/lowlevel_init.S
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Board specific setup info
- *
- * (C) Copyright 2004
- * Texas Instruments, <www.ti.com>
- * Richard Woodruff <r-woodruff2@ti.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
- */
-
-#include <config.h>
-#include <version.h>
-#include <asm/arch/omap2420.h>
-#include <asm/arch/mem.h>
-#include <asm/arch/clocks.h>
-
-_TEXT_BASE:
- .word TEXT_BASE /* sdram load addr from config.mk */
-
-/**************************************************************************
- * cpy_clk_code: relocates clock code into SRAM where its safer to execute
- * R1 = SRAM destination address.
- *************************************************************************/
-.global cpy_clk_code
- cpy_clk_code:
- /* Copy DPLL code into SRAM */
- adr r0, go_to_speed /* get addr of clock setting code */
- mov r2, #384 /* r2 size to copy (div by 32 bytes) */
- mov r1, r1 /* r1 <- dest address (passed in) */
- add r2, r2, r0 /* r2 <- source end address */
-next2:
- ldmia r0!, {r3-r10} /* copy from source address [r0] */
- stmia r1!, {r3-r10} /* copy to target address [r1] */
- cmp r0, r2 /* until source end address [r2] */
- bne next2
- mov pc, lr /* back to caller */
-
-/* ****************************************************************************
- * go_to_speed: -Moves to bypass, -Commits clock dividers, -puts dpll at speed
- * -executed from SRAM.
- * R0 = PRCM_CLKCFG_CTRL - addr of valid reg
- * R1 = CM_CLKEN_PLL - addr dpll ctlr reg
- * R2 = dpll value
- * R3 = CM_IDLEST_CKGEN - addr dpll lock wait
- ******************************************************************************/
-.global go_to_speed
- go_to_speed:
- sub sp, sp, #0x4 /* get some stack space */
- str r4, [sp] /* save r4's value */
-
- /* move into fast relock bypass */
- ldr r8, pll_ctl_add
- mov r4, #0x2
- str r4, [r8]
- ldr r4, pll_stat
-block:
- ldr r8, [r4] /* wait for bypass to take effect */
- and r8, r8, #0x3
- cmp r8, #0x1
- bne block
-
- /* set new dpll dividers _after_ in bypass */
- ldr r4, pll_div_add
- ldr r8, pll_div_val
- str r8, [r4]
-
- /* now prepare GPMC (flash) for new dpll speed */
- /* flash needs to be stable when we jump back to it */
- ldr r4, cfg3_0_addr
- ldr r8, cfg3_0_val
- str r8, [r4]
- ldr r4, cfg4_0_addr
- ldr r8, cfg4_0_val
- str r8, [r4]
- ldr r4, cfg1_0_addr
- ldr r8, [r4]
- orr r8, r8, #0x3 /* up gpmc divider */
- str r8, [r4]
-
- /* setup to 2x loop though code. The first loop pre-loads the
- * icache, the 2nd commits the prcm config, and locks the dpll
- */
- mov r4, #0x1000 /* spin spin spin */
- mov r8, #0x4 /* first pass condition & set registers */
- cmp r8, #0x4
-2:
- ldrne r8, [r3] /* DPLL lock check */
- and r8, r8, #0x7
- cmp r8, #0x2
- beq 4f
-3:
- subeq r8, r8, #0x1
- streq r8, [r0] /* commit dividers (2nd time) */
- nop
-lloop1:
- sub r4, r4, #0x1 /* Loop currently necessary else bad jumps */
- nop
- cmp r4, #0x0
- bne lloop1
- mov r4, #0x40000
- cmp r8, #0x1
- nop
- streq r2, [r1] /* lock dpll (2nd time) */
- nop
-lloop2:
- sub r4, r4, #0x1 /* loop currently necessary else bad jumps */
- nop
- cmp r4, #0x0
- bne lloop2
- mov r4, #0x40000
- cmp r8, #0x1
- nop
- ldreq r8, [r3] /* get lock condition for dpll */
- cmp r8, #0x4 /* first time though? */
- bne 2b
- moveq r8, #0x2 /* set to dpll check condition. */
- beq 3b /* if condition not true branch */
-4:
- ldr r4, [sp]
- add sp, sp, #0x4 /* return stack space */
- mov pc, lr /* back to caller, locked */
-
-_go_to_speed: .word go_to_speed
-
-/* these constants need to be close for PIC code */
-cfg3_0_addr:
- .word GPMC_CONFIG3_0
-cfg3_0_val:
- .word H4_24XX_GPMC_CONFIG3_0
-cfg4_0_addr:
- .word GPMC_CONFIG4_0
-cfg4_0_val:
- .word H4_24XX_GPMC_CONFIG4_0
-cfg1_0_addr:
- .word GPMC_CONFIG1_0
-pll_ctl_add:
- .word CM_CLKEN_PLL
-pll_stat:
- .word CM_IDLEST_CKGEN
-pll_div_add:
- .word CM_CLKSEL1_PLL
-pll_div_val:
- .word DPLL_VAL /* DPLL setting (300MHz default) */
-
-.globl lowlevel_init
-lowlevel_init:
- ldr sp, SRAM_STACK
- str ip, [sp] /* stash old link register */
- mov ip, lr /* save link reg across call */
- bl s_init /* go setup pll,mux,memory */
- ldr ip, [sp] /* restore save ip */
- mov lr, ip /* restore link reg */
-
- /* map interrupt controller */
- ldr r0, VAL_INTH_SETUP
- mcr p15, 0, r0, c15, c2, 4
-
- /* back to arch calling code */
- mov pc, lr
-
- /* the literal pools origin */
- .ltorg
-
-REG_CONTROL_STATUS:
- .word CONTROL_STATUS
-VAL_INTH_SETUP:
- .word PERIFERAL_PORT_BASE
-SRAM_STACK:
- .word LOW_LEVEL_SRAM_STACK
diff --git a/board/omap2420h4/mem.c b/board/omap2420h4/mem.c
deleted file mode 100644
index 62eb6e38a3..0000000000
--- a/board/omap2420h4/mem.c
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
- * (C) Copyright 2004
- * Texas Instruments, <www.ti.com>
- * Richard Woodruff <r-woodruff2@ti.com>
- *
- * 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 <common.h>
-#include <asm/arch/omap2420.h>
-#include <asm/io.h>
-#include <asm/arch/bits.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/mem.h>
-#include <asm/arch/clocks.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/sys_info.h>
-
-/************************************************************
- * sdelay() - simple spin loop. Will be constant time as
- * its generally used in 12MHz bypass conditions only. This
- * is necessary until timers are accessible.
- *
- * not inline to increase chances its in cache when called
- *************************************************************/
-void sdelay (unsigned long loops)
-{
- __asm__ volatile ("1:\n" "subs %0, %1, #1\n"
- "bne 1b":"=r" (loops):"0" (loops));
-}
-
-/*********************************************************************************
- * prcm_init() - inits clocks for PRCM as defined in clocks.h (config II default).
- * -- called from SRAM, or Flash (using temp SRAM stack).
- *********************************************************************************/
-void prcm_init(void)
-{
- u32 div;
- void (*f_lock_pll) (u32, u32, u32, u32);
- extern void *_end_vect, *_start;
-
- f_lock_pll = (void *)((u32)&_end_vect - (u32)&_start + SRAM_VECT_CODE);
-
- __raw_writel(0, CM_FCLKEN1_CORE); /* stop all clocks to reduce ringing */
- __raw_writel(0, CM_FCLKEN2_CORE); /* may not be necessary */
- __raw_writel(0, CM_ICLKEN1_CORE);
- __raw_writel(0, CM_ICLKEN2_CORE);
-
- __raw_writel(DPLL_OUT, CM_CLKSEL2_PLL); /* set DPLL out */
- __raw_writel(MPU_DIV, CM_CLKSEL_MPU); /* set MPU divider */
- __raw_writel(DSP_DIV, CM_CLKSEL_DSP); /* set dsp and iva dividers */
- __raw_writel(GFX_DIV, CM_CLKSEL_GFX); /* set gfx dividers */
-
- div = BUS_DIV;
- __raw_writel(div, CM_CLKSEL1_CORE);/* set L3/L4/USB/Display/Vlnc/SSi dividers */
- sdelay(1000);
-
- if(running_in_sram()){
- /* If running fully from SRAM this is OK. The Flash bus drops out for just a little.
- * but then comes back. If running from Flash this sequence kills you, thus you need
- * to run it using CONFIG_PARTIAL_SRAM.
- */
- __raw_writel(MODE_BYPASS_FAST, CM_CLKEN_PLL); /* go to bypass, fast relock */
- wait_on_value(BIT0|BIT1, BIT0, CM_IDLEST_CKGEN, LDELAY); /* wait till in bypass */
- sdelay(1000);
- /* set clock selection and dpll dividers. */
- __raw_writel(DPLL_VAL, CM_CLKSEL1_PLL); /* set pll for target rate */
- __raw_writel(COMMIT_DIVIDERS, PRCM_CLKCFG_CTRL); /* commit dividers */
- sdelay(10000);
- __raw_writel(DPLL_LOCK, CM_CLKEN_PLL); /* enable dpll */
- sdelay(10000);
- wait_on_value(BIT0|BIT1, BIT1, CM_IDLEST_CKGEN, LDELAY); /*wait for dpll lock */
- }else if(running_in_flash()){
- /* if running from flash, need to jump to small relocated code area in SRAM.
- * This is the only safe spot to do configurations from.
- */
- (*f_lock_pll)(PRCM_CLKCFG_CTRL, CM_CLKEN_PLL, DPLL_LOCK, CM_IDLEST_CKGEN);
- }
-
- __raw_writel(DPLL_LOCK|APLL_LOCK, CM_CLKEN_PLL); /* enable apll */
- wait_on_value(BIT8, BIT8, CM_IDLEST_CKGEN, LDELAY); /* wait for apll lock */
- sdelay(1000);
-}
-
-/**************************************************************************
- * make_cs1_contiguous() - for es2 and above remap cs1 behind cs0 to allow
- * command line mem=xyz use all memory with out discontigious support
- * compiled in. Could do it at the ATAG, but there really is two banks...
- * Called as part of 2nd phase DDR init.
- **************************************************************************/
-void make_cs1_contiguous(void)
-{
- u32 size, a_add_low, a_add_high;
-
- size = get_sdr_cs_size(SDRC_CS0_OSET);
- size /= SZ_32M; /* find size to offset CS1 */
- a_add_high = (size & 3) << 8; /* set up low field */
- a_add_low = (size & 0x3C) >> 2; /* set up high field */
- __raw_writel((a_add_high|a_add_low),SDRC_CS_CFG);
-
-}
-
-/********************************************************
- * mem_ok() - test used to see if timings are correct
- * for a part. Helps in gussing which part
- * we are currently using.
- *******************************************************/
-u32 mem_ok(void)
-{
- u32 val1, val2;
- u32 pattern = 0x12345678;
-
- __raw_writel(0x0,OMAP2420_SDRC_CS0+0x400); /* clear pos A */
- __raw_writel(pattern, OMAP2420_SDRC_CS0); /* pattern to pos B */
- __raw_writel(0x0,OMAP2420_SDRC_CS0+4); /* remove pattern off the bus */
- val1 = __raw_readl(OMAP2420_SDRC_CS0+0x400); /* get pos A value */
- val2 = __raw_readl(OMAP2420_SDRC_CS0); /* get val2 */
-
- if ((val1 != 0) || (val2 != pattern)) /* see if pos A value changed*/
- return(0);
- else
- return(1);
-}
-
-
-/********************************************************
- * sdrc_init() - init the sdrc chip selects CS0 and CS1
- * - early init routines, called from flash or
- * SRAM.
- *******************************************************/
-void sdrc_init(void)
-{
- #define EARLY_INIT 1
- do_sdrc_init(SDRC_CS0_OSET, EARLY_INIT); /* only init up first bank here */
-}
-
-/*************************************************************************
- * do_sdrc_init(): initialize the SDRAM for use.
- * -called from low level code with stack only.
- * -code sets up SDRAM timing and muxing for 2422 or 2420.
- * -optimal settings can be placed here, or redone after i2c
- * inspection of board info
- *
- * This is a bit ugly, but should handle all memory moduels
- * used with the H4. The first time though this code from s_init()
- * we configure the first chip select. Later on we come back and
- * will configure the 2nd chip select if it exists.
- *
- **************************************************************************/
-void do_sdrc_init(u32 offset, u32 early)
-{
- u32 cpu, dllen=0, rev, common=0, cs0=0, pmask=0, pass_type, mtype;
- sdrc_data_t *sdata; /* do not change type */
- u32 a, b, r;
-
- static const sdrc_data_t sdrc_2422 =
- {
- H4_2422_SDRC_SHARING, H4_2422_SDRC_MDCFG_0_DDR, 0 , H4_2422_SDRC_ACTIM_CTRLA_0,
- H4_2422_SDRC_ACTIM_CTRLB_0, H4_2422_SDRC_RFR_CTRL, H4_2422_SDRC_MR_0_DDR,
- 0, H4_2422_SDRC_DLLAB_CTRL
- };
- static const sdrc_data_t sdrc_2420 =
- {
- H4_2420_SDRC_SHARING, H4_2420_SDRC_MDCFG_0_DDR, H4_2420_SDRC_MDCFG_0_SDR,
- H4_2420_SDRC_ACTIM_CTRLA_0, H4_2420_SDRC_ACTIM_CTRLB_0,
- H4_2420_SDRC_RFR_CTRL, H4_2420_SDRC_MR_0_DDR, H4_2420_SDRC_MR_0_SDR,
- H4_2420_SDRC_DLLAB_CTRL
- };
-
- if (offset == SDRC_CS0_OSET)
- cs0 = common = 1; /* int regs shared between both chip select */
-
- cpu = get_cpu_type();
- rev = get_cpu_rev();
-
- /* warning generated, though code generation is correct. this may bite later,
- * but is ok for now. there is only so much C code you can do on stack only
- * operation.
- */
- if (cpu == CPU_2422){
- sdata = (sdrc_data_t *)&sdrc_2422;
- pass_type = STACKED;
- } else{
- sdata = (sdrc_data_t *)&sdrc_2420;
- pass_type = IP_DDR;
- }
-
- __asm__ __volatile__("": : :"memory"); /* limit compiler scope */
-
- /* u-boot is compiled to run in DDR or SRAM at 8xxxxxxx or 4xxxxxxx.
- * If we are running in flash prior to relocation and we use data
- * here which is not pc relative we need to get the address correct.
- * We need to find the current flash mapping to dress up the initial
- * pointer load. As long as this is const data we should be ok.
- */
- if((early) && running_in_flash()){
- sdata = (sdrc_data_t *)(((u32)sdata & 0x0003FFFF) | get_gpmc0_base());
- /* NOR internal boot offset is 0x4000 from xloader signature */
- if(running_from_internal_boot())
- sdata = (sdrc_data_t *)((u32)sdata + 0x4000);
- }
-
- if (!early && (((mtype = get_mem_type()) == DDR_COMBO)||(mtype == DDR_STACKED))) {
- if(mtype == DDR_COMBO){
- pmask = BIT2;/* combo part has a shared CKE signal, can't use feature */
- pass_type = COMBO_DDR; /* CS1 config */
- __raw_writel((__raw_readl(SDRC_POWER)) & ~pmask, SDRC_POWER);
- }
- if(rev != CPU_2420_2422_ES1) /* for es2 and above smooth things out */
- make_cs1_contiguous();
- }
-
-next_mem_type:
- if (common) { /* do a SDRC reset between types to clear regs*/
- __raw_writel(SOFTRESET, SDRC_SYSCONFIG); /* reset sdrc */
- wait_on_value(BIT0, BIT0, SDRC_STATUS, 12000000);/* wait till reset done set */
- __raw_writel(0, SDRC_SYSCONFIG); /* clear soft reset */
- __raw_writel(sdata->sdrc_sharing, SDRC_SHARING);
-#ifdef POWER_SAVE
- __raw_writel(__raw_readl(SMS_SYSCONFIG)|SMART_IDLE, SMS_SYSCONFIG);
- __raw_writel(sdata->sdrc_sharing|SMART_IDLE, SDRC_SHARING);
- __raw_writel((__raw_readl(SDRC_POWER)|BIT6), SDRC_POWER);
-#endif
- }
-
- if ((pass_type == IP_DDR) || (pass_type == STACKED)) /* (IP ddr-CS0),(2422-CS0/CS1) */
- __raw_writel(sdata->sdrc_mdcfg_0_ddr, SDRC_MCFG_0+offset);
- else if (pass_type == COMBO_DDR){ /* (combo-CS0/CS1) */
- __raw_writel(H4_2420_COMBO_MDCFG_0_DDR,SDRC_MCFG_0+offset);
- } else if (pass_type == IP_SDR){ /* ip sdr-CS0 */
- __raw_writel(sdata->sdrc_mdcfg_0_sdr, SDRC_MCFG_0+offset);
- }
-
- a = sdata->sdrc_actim_ctrla_0;
- b = sdata->sdrc_actim_ctrlb_0;
- r = sdata->sdrc_dllab_ctrl;
-
- /* work around ES1 DDR issues */
- if((pass_type != IP_SDR) && (rev == CPU_2420_2422_ES1)){
- a = H4_242x_SDRC_ACTIM_CTRLA_0_ES1;
- b = H4_242x_SDRC_ACTIM_CTRLB_0_ES1;
- r = H4_242x_SDRC_RFR_CTRL_ES1;
- }
-
- if (cs0) {
- __raw_writel(a, SDRC_ACTIM_CTRLA_0);
- __raw_writel(b, SDRC_ACTIM_CTRLB_0);
- } else {
- __raw_writel(a, SDRC_ACTIM_CTRLA_1);
- __raw_writel(b, SDRC_ACTIM_CTRLB_1);
- }
- __raw_writel(r, SDRC_RFR_CTRL+offset);
-
- /* init sequence for mDDR/mSDR using manual commands (DDR is a bit different) */
- __raw_writel(CMD_NOP, SDRC_MANUAL_0+offset);
- sdelay(5000); /* susposed to be 100us per design spec for mddr/msdr */
- __raw_writel(CMD_PRECHARGE, SDRC_MANUAL_0+offset);
- __raw_writel(CMD_AUTOREFRESH, SDRC_MANUAL_0+offset);
- __raw_writel(CMD_AUTOREFRESH, SDRC_MANUAL_0+offset);
-
- /*
- * CSx SDRC Mode Register
- * Burst length = (4 - DDR) (2-SDR)
- * Serial mode
- * CAS latency = x
- */
- if(pass_type == IP_SDR)
- __raw_writel(sdata->sdrc_mr_0_sdr, SDRC_MR_0+offset);
- else
- __raw_writel(sdata->sdrc_mr_0_ddr, SDRC_MR_0+offset);
-
- /* NOTE: ES1 242x _BUG_ DLL + External Bandwidth fix*/
- if (rev == CPU_2420_2422_ES1){
- dllen = (BIT0|BIT3); /* es1 clear both bit0 and bit3 */
- __raw_writel((__raw_readl(SMS_CLASS_ARB0)|BURSTCOMPLETE_GROUP7)
- ,SMS_CLASS_ARB0);/* enable bust complete for lcd */
- }
- else
- dllen = BIT0|BIT1; /* es2, clear bit0, and 1 (set phase to 72) */
-
- /* enable & load up DLL with good value for 75MHz, and set phase to 90
- * ES1 recommends 90 phase, ES2 recommends 72 phase.
- */
- if (common && (pass_type != IP_SDR)) {
- __raw_writel(sdata->sdrc_dllab_ctrl, SDRC_DLLA_CTRL);
- __raw_writel(sdata->sdrc_dllab_ctrl & ~(BIT2|dllen), SDRC_DLLA_CTRL);
- __raw_writel(sdata->sdrc_dllab_ctrl, SDRC_DLLB_CTRL);
- __raw_writel(sdata->sdrc_dllab_ctrl & ~(BIT2|dllen) , SDRC_DLLB_CTRL);
- }
- sdelay(90000);
-
- if(mem_ok())
- return; /* STACKED, other configued type */
- ++pass_type; /* IPDDR->COMBODDR->IPSDR for CS0 */
- goto next_mem_type;
-}
-
-/*****************************************************
- * gpmc_init(): init gpmc bus
- * Init GPMC for x16, MuxMode (SDRAM in x32).
- * This code can only be executed from SRAM or SDRAM.
- *****************************************************/
-void gpmc_init(void)
-{
- u32 mux=0, mtype, mwidth, rev, tval;
-
- rev = get_cpu_rev();
- if (rev == CPU_2420_2422_ES1)
- tval = 1;
- else
- tval = 0; /* disable bit switched meaning */
-
- /* global settings */
- __raw_writel(0x10, GPMC_SYSCONFIG); /* smart idle */
- __raw_writel(0x0, GPMC_IRQENABLE); /* isr's sources masked */
- __raw_writel(tval, GPMC_TIMEOUT_CONTROL);/* timeout disable */
-#ifdef CFG_NAND_BOOT
- __raw_writel(0x001, GPMC_CONFIG); /* set nWP, disable limited addr */
-#else
- __raw_writel(0x111, GPMC_CONFIG); /* set nWP, disable limited addr */
-#endif
-
- /* discover bus connection from sysboot */
- if (is_gpmc_muxed() == GPMC_MUXED)
- mux = BIT9;
- mtype = get_gpmc0_type();
- mwidth = get_gpmc0_width();
-
- /* setup cs0 */
- __raw_writel(0x0, GPMC_CONFIG7_0); /* disable current map */
- sdelay(1000);
-
-#ifdef CFG_NAND_BOOT
- __raw_writel(H4_24XX_GPMC_CONFIG1_0|mtype|mwidth, GPMC_CONFIG1_0);
-#else
- __raw_writel(H4_24XX_GPMC_CONFIG1_0|mux|mtype|mwidth, GPMC_CONFIG1_0);
-#endif
-
-#ifdef PRCM_CONFIG_III
- __raw_writel(H4_24XX_GPMC_CONFIG2_0, GPMC_CONFIG2_0);
-#endif
- __raw_writel(H4_24XX_GPMC_CONFIG3_0, GPMC_CONFIG3_0);
- __raw_writel(H4_24XX_GPMC_CONFIG4_0, GPMC_CONFIG4_0);
-#ifdef PRCM_CONFIG_III
- __raw_writel(H4_24XX_GPMC_CONFIG5_0, GPMC_CONFIG5_0);
- __raw_writel(H4_24XX_GPMC_CONFIG6_0, GPMC_CONFIG6_0);
-#endif
- __raw_writel(H4_24XX_GPMC_CONFIG7_0, GPMC_CONFIG7_0);/* enable new mapping */
- sdelay(2000);
-
- /* setup cs1 */
- __raw_writel(0, GPMC_CONFIG7_1); /* disable any mapping */
- sdelay(1000);
- __raw_writel(H4_24XX_GPMC_CONFIG1_1|mux, GPMC_CONFIG1_1);
- __raw_writel(H4_24XX_GPMC_CONFIG2_1, GPMC_CONFIG2_1);
- __raw_writel(H4_24XX_GPMC_CONFIG3_1, GPMC_CONFIG3_1);
- __raw_writel(H4_24XX_GPMC_CONFIG4_1, GPMC_CONFIG4_1);
- __raw_writel(H4_24XX_GPMC_CONFIG5_1, GPMC_CONFIG5_1);
- __raw_writel(H4_24XX_GPMC_CONFIG6_1, GPMC_CONFIG6_1);
- __raw_writel(H4_24XX_GPMC_CONFIG7_1, GPMC_CONFIG7_1); /* enable mapping */
- sdelay(2000);
-}
diff --git a/board/omap2420h4/omap2420h4.c b/board/omap2420h4/omap2420h4.c
deleted file mode 100644
index f7f75e0fe1..0000000000
--- a/board/omap2420h4/omap2420h4.c
+++ /dev/null
@@ -1,867 +0,0 @@
-/*
- * (C) Copyright 2004
- * Texas Instruments, <www.ti.com>
- * Richard Woodruff <r-woodruff2@ti.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
- */
-#include <common.h>
-#include <asm/arch/omap2420.h>
-#include <asm/io.h>
-#include <asm/arch/bits.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/sys_info.h>
-#include <asm/arch/mem.h>
-#include <i2c.h>
-#include <asm/mach-types.h>
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand_legacy.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-void wait_for_command_complete(unsigned int wd_base);
-
-/*******************************************************
- * Routine: delay
- * Description: spinning delay to use before udelay works
- ******************************************************/
-static inline void delay (unsigned long loops)
-{
- __asm__ volatile ("1:\n" "subs %0, %1, #1\n"
- "bne 1b":"=r" (loops):"0" (loops));
-}
-
-/*****************************************
- * Routine: board_init
- * Description: Early hardware init.
- *****************************************/
-int board_init (void)
-{
- gpmc_init(); /* in SRAM or SDRM, finish GPMC */
-
- gd->bd->bi_arch_number = MACH_TYPE_OMAP_H4; /* board id for linux */
- gd->bd->bi_boot_params = (OMAP2420_SDRC_CS0+0x100); /* adress of boot parameters */
-
- return 0;
-}
-
-/**********************************************************
- * Routine: try_unlock_sram()
- * Description: If chip is GP type, unlock the SRAM for
- * general use.
- ***********************************************************/
-void try_unlock_sram(void)
-{
- /* if GP device unlock device SRAM for general use */
- if (get_device_type() == GP_DEVICE) {
- __raw_writel(0xFF, A_REQINFOPERM0);
- __raw_writel(0xCFDE, A_READPERM0);
- __raw_writel(0xCFDE, A_WRITEPERM0);
- }
-}
-
-/**********************************************************
- * Routine: s_init
- * Description: Does early system init of muxing and clocks.
- * - Called path is with sram stack.
- **********************************************************/
-void s_init(void)
-{
- int in_sdram = running_in_sdram();
-
- watchdog_init();
- set_muxconf_regs();
- delay(100);
- try_unlock_sram();
-
- if(!in_sdram)
- prcm_init();
-
- peripheral_enable();
- icache_enable();
- if (!in_sdram)
- sdrc_init();
-}
-
-/*******************************************************
- * Routine: misc_init_r
- * Description: Init ethernet (done here so udelay works)
- ********************************************************/
-int misc_init_r (void)
-{
- ether_init(); /* better done here so timers are init'ed */
- return(0);
-}
-
-/****************************************
- * Routine: watchdog_init
- * Description: Shut down watch dogs
- *****************************************/
-void watchdog_init(void)
-{
- /* There are 4 watch dogs. 1 secure, and 3 general purpose.
- * The ROM takes care of the secure one. Of the 3 GP ones,
- * 1 can reset us directly, the other 2 only generate MPU interrupts.
- */
- __raw_writel(WD_UNLOCK1 ,WD2_BASE+WSPR);
- wait_for_command_complete(WD2_BASE);
- __raw_writel(WD_UNLOCK2 ,WD2_BASE+WSPR);
-
-#if MPU_WD_CLOCKED /* value 0x10 stick on aptix, BIT4 polarity seems oppsite*/
- __raw_writel(WD_UNLOCK1 ,WD3_BASE+WSPR);
- wait_for_command_complete(WD3_BASE);
- __raw_writel(WD_UNLOCK2 ,WD3_BASE+WSPR);
-
- __raw_writel(WD_UNLOCK1 ,WD4_BASE+WSPR);
- wait_for_command_complete(WD4_BASE);
- __raw_writel(WD_UNLOCK2 ,WD4_BASE+WSPR);
-#endif
-}
-
-/******************************************************
- * Routine: wait_for_command_complete
- * Description: Wait for posting to finish on watchdog
- ******************************************************/
-void wait_for_command_complete(unsigned int wd_base)
-{
- int pending = 1;
- do {
- pending = __raw_readl(wd_base+WWPS);
- } while (pending);
-}
-
-/*******************************************************************
- * Routine:ether_init
- * Description: take the Ethernet controller out of reset and wait
- * for the EEPROM load to complete.
- ******************************************************************/
-void ether_init (void)
-{
-#ifdef CONFIG_DRIVER_LAN91C96
- int cnt = 20;
-
- __raw_writeb(0x3,OMAP2420_CTRL_BASE+0x10a); /*protect->gpio95 */
-
- __raw_writew(0x0, LAN_RESET_REGISTER);
- do {
- __raw_writew(0x1, LAN_RESET_REGISTER);
- udelay (100);
- if (cnt == 0)
- goto h4reset_err_out;
- --cnt;
- } while (__raw_readw(LAN_RESET_REGISTER) != 0x1);
-
- cnt = 20;
-
- do {
- __raw_writew(0x0, LAN_RESET_REGISTER);
- udelay (100);
- if (cnt == 0)
- goto h4reset_err_out;
- --cnt;
- } while (__raw_readw(LAN_RESET_REGISTER) != 0x0000);
- udelay (1000);
-
- *((volatile unsigned char *) ETH_CONTROL_REG) &= ~0x01;
- udelay (1000);
-
- h4reset_err_out:
- return;
-#endif
-}
-
-/**********************************************
- * Routine: dram_init
- * Description: sets uboots idea of sdram size
- **********************************************/
-int dram_init (void)
-{
- unsigned int size0=0,size1=0;
- u32 mtype, btype, rev, cpu;
- u8 chg_on = 0x5; /* enable charge of back up battery */
- u8 vmode_on = 0x8C;
- #define NOT_EARLY 0
-
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE); /* need this a bit early */
-
- btype = get_board_type();
- mtype = get_mem_type();
- rev = get_cpu_rev();
- cpu = get_cpu_type();
-
- display_board_info(btype);
- if (btype == BOARD_H4_MENELAUS){
- update_mux(btype,mtype); /* combo part on menelaus */
- i2c_write(I2C_MENELAUS, 0x20, 1, &chg_on, 1); /*fix POR reset bug */
- i2c_write(I2C_MENELAUS, 0x2, 1, &vmode_on, 1); /* VCORE change on VMODE */
- }
-
- if ((mtype == DDR_COMBO) || (mtype == DDR_STACKED)) {
- do_sdrc_init(SDRC_CS1_OSET, NOT_EARLY); /* init other chip select */
- }
- size0 = get_sdr_cs_size(SDRC_CS0_OSET);
- size1 = get_sdr_cs_size(SDRC_CS1_OSET);
-
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = size0;
- if(rev == CPU_2420_2422_ES1) /* ES1's 128MB remap granularity isn't worth doing */
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- else /* ES2 and above can remap at 32MB granularity */
- gd->bd->bi_dram[1].start = PHYS_SDRAM_1+size0;
- gd->bd->bi_dram[1].size = size1;
-
- return 0;
-}
-
-/**********************************************************
- * Routine: set_muxconf_regs
- * Description: Setting up the configuration Mux registers
- * specific to the hardware
- *********************************************************/
-void set_muxconf_regs (void)
-{
- muxSetupSDRC();
- muxSetupGPMC();
- muxSetupUsb0();
- muxSetupUart3();
- muxSetupI2C1();
- muxSetupUART1();
- muxSetupLCD();
- muxSetupCamera();
- muxSetupMMCSD();
- muxSetupTouchScreen();
- muxSetupHDQ();
-}
-
-/*****************************************************************
- * Routine: peripheral_enable
- * Description: Enable the clks & power for perifs (GPT2, UART1,...)
- ******************************************************************/
-void peripheral_enable(void)
-{
- unsigned int v, if_clks=0, func_clks=0;
-
- /* Enable GP2 timer.*/
- if_clks |= BIT4;
- func_clks |= BIT4;
- v = __raw_readl(CM_CLKSEL2_CORE) | 0x4; /* Sys_clk input OMAP2420_GPT2 */
- __raw_writel(v, CM_CLKSEL2_CORE);
- __raw_writel(0x1, CM_CLKSEL_WKUP);
-
-#ifdef CFG_NS16550
- /* Enable UART1 clock */
- func_clks |= BIT21;
- if_clks |= BIT21;
-#endif
- v = __raw_readl(CM_ICLKEN1_CORE) | if_clks; /* Interface clocks on */
- __raw_writel(v,CM_ICLKEN1_CORE );
- v = __raw_readl(CM_FCLKEN1_CORE) | func_clks; /* Functional Clocks on */
- __raw_writel(v, CM_FCLKEN1_CORE);
- delay(1000);
-
-#ifndef KERNEL_UPDATED
- {
-#define V1 0xffffffff
-#define V2 0x00000007
-
- __raw_writel(V1, CM_FCLKEN1_CORE);
- __raw_writel(V2, CM_FCLKEN2_CORE);
- __raw_writel(V1, CM_ICLKEN1_CORE);
- __raw_writel(V1, CM_ICLKEN2_CORE);
- }
-#endif
-}
-
-/****************************************
- * Routine: muxSetupUsb0 (ostboot)
- * Description: Setup usb muxing
- *****************************************/
-void muxSetupUsb0(void)
-{
- volatile uint8 *MuxConfigReg;
- volatile uint32 *otgCtrlReg;
-
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_USB0_PUEN;
- *MuxConfigReg &= (uint8)(~0x1F);
-
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_USB0_VP;
- *MuxConfigReg &= (uint8)(~0x1F);
-
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_USB0_VM;
- *MuxConfigReg &= (uint8)(~0x1F);
-
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_USB0_RCV;
- *MuxConfigReg &= (uint8)(~0x1F);
-
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_USB0_TXEN;
- *MuxConfigReg &= (uint8)(~0x1F);
-
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_USB0_SE0;
- *MuxConfigReg &= (uint8)(~0x1F);
-
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_USB0_DAT;
- *MuxConfigReg &= (uint8)(~0x1F);
-
- /* setup for USB VBus detection */
- otgCtrlReg = (volatile uint32 *)USB_OTG_CTRL;
- *otgCtrlReg |= 0x00040000; /* bit 18 */
-}
-
-/****************************************
- * Routine: muxSetupUart3 (ostboot)
- * Description: Setup uart3 muxing
- *****************************************/
-void muxSetupUart3(void)
-{
- volatile uint8 *MuxConfigReg;
-
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_UART3_TX_IRTX;
- *MuxConfigReg &= (uint8)(~0x1F);
-
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_UART3_RX_IRRX;
- *MuxConfigReg &= (uint8)(~0x1F);
-}
-
-/****************************************
- * Routine: muxSetupI2C1 (ostboot)
- * Description: Setup i2c muxing
- *****************************************/
-void muxSetupI2C1(void)
-{
- volatile unsigned char *MuxConfigReg;
-
- /* I2C1 Clock pin configuration, PIN = M19 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_I2C1_SCL;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* I2C1 Data pin configuration, PIN = L15 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_I2C1_SDA;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* Pull-up required on data line */
- /* external pull-up already present. */
- /* *MuxConfigReg |= 0x18 ;*/ /* Mode = 0, PullTypeSel=PU, PullUDEnable=Enabled */
-}
-
-/****************************************
- * Routine: muxSetupUART1 (ostboot)
- * Description: Set up uart1 muxing
- *****************************************/
-void muxSetupUART1(void)
-{
- volatile unsigned char *MuxConfigReg;
-
- /* UART1_CTS pin configuration, PIN = D21 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_UART1_CTS;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* UART1_RTS pin configuration, PIN = H21 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_UART1_RTS;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* UART1_TX pin configuration, PIN = L20 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_UART1_TX;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* UART1_RX pin configuration, PIN = T21 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_UART1_RX;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-}
-
-/****************************************
- * Routine: muxSetupLCD (ostboot)
- * Description: Setup lcd muxing
- *****************************************/
-void muxSetupLCD(void)
-{
- volatile unsigned char *MuxConfigReg;
-
- /* LCD_D0 pin configuration, PIN = Y7 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D0;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D1 pin configuration, PIN = P10 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D1;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D2 pin configuration, PIN = V8 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D2;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D3 pin configuration, PIN = Y8 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D3;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D4 pin configuration, PIN = W8 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D4;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D5 pin configuration, PIN = R10 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D5;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D6 pin configuration, PIN = Y9 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D6;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D7 pin configuration, PIN = V9 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D7;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D8 pin configuration, PIN = W9 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D8;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D9 pin configuration, PIN = P11 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D9;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D10 pin configuration, PIN = V10 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D10;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D11 pin configuration, PIN = Y10 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D11;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D12 pin configuration, PIN = W10 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D12;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D13 pin configuration, PIN = R11 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D13;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D14 pin configuration, PIN = V11 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D14;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D15 pin configuration, PIN = W11 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D15;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D16 pin configuration, PIN = P12 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D16;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_D17 pin configuration, PIN = R12 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_D17;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_PCLK pin configuration, PIN = W6 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_PCLK;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_VSYNC pin configuration, PIN = V7 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_VSYNC;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_HSYNC pin configuration, PIN = Y6 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_HSYNC;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* LCD_ACBIAS pin configuration, PIN = W7 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_DSS_ACBIAS;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-}
-
-/****************************************
- * Routine: muxSetupCamera (ostboot)
- * Description: Setup camera muxing
- *****************************************/
-void muxSetupCamera(void)
-{
- volatile unsigned char *MuxConfigReg;
-
- /* CAMERA_RSTZ pin configuration, PIN = Y16 */
- /* CAM_RST is connected through the I2C IO expander.*/
- /* MuxConfigReg = (volatile unsigned char *), CONTROL_PADCONF_SYS_NRESWARM*/
- /* *MuxConfigReg = 0x00 ; / * Mode = 0, PUPD=Disabled */
-
- /* CAMERA_XCLK pin configuration, PIN = U3 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_XCLK;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_LCLK pin configuration, PIN = V5 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_LCLK;
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_VSYNC pin configuration, PIN = U2 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_VS,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_HSYNC pin configuration, PIN = T3 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_HS,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_DAT0 pin configuration, PIN = T4 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_D0,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_DAT1 pin configuration, PIN = V2 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_D1,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_DAT2 pin configuration, PIN = V3 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_D2,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_DAT3 pin configuration, PIN = U4 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_D3,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_DAT4 pin configuration, PIN = W2 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_D4,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_DAT5 pin configuration, PIN = V4 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_D5,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_DAT6 pin configuration, PIN = W3 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_D6,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_DAT7 pin configuration, PIN = Y2 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_D7,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_DAT8 pin configuration, PIN = Y4 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_D8,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* CAMERA_DAT9 pin configuration, PIN = V6 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_CAM_D9,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-}
-
-/****************************************
- * Routine: muxSetupMMCSD (ostboot)
- * Description: set up MMC muxing
- *****************************************/
-void muxSetupMMCSD(void)
-{
- volatile unsigned char *MuxConfigReg;
-
- /* SDMMC_CLKI pin configuration, PIN = H15 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_CLKI,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* SDMMC_CLKO pin configuration, PIN = G19 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_CLKO,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* SDMMC_CMD pin configuration, PIN = H18 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_CMD,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
- /* External pull-ups are present. */
- /* *MuxConfigReg |= 0x18 ; #/ PullUDEnable=Enabled, PullTypeSel=PU */
-
- /* SDMMC_DAT0 pin configuration, PIN = F20 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_DAT0,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
- /* External pull-ups are present. */
- /* *MuxConfigReg |= 0x18 ; #/ PullUDEnable=Enabled, PullTypeSel=PU */
-
- /* SDMMC_DAT1 pin configuration, PIN = H14 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_DAT1,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
- /* External pull-ups are present. */
- /* *MuxConfigReg |= 0x18 ; #/ PullUDEnable=Enabled, PullTypeSel=PU */
-
- /* SDMMC_DAT2 pin configuration, PIN = E19 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_DAT2,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
- /* External pull-ups are present. */
- /* *MuxConfigReg |= 0x18 ; #/ PullUDEnable=Enabled, PullTypeSel=PU */
-
- /* SDMMC_DAT3 pin configuration, PIN = D19 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_DAT3,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
- /* External pull-ups are present. */
- /* *MuxConfigReg |= 0x18 ; #/ PullUDEnable=Enabled, PullTypeSel=PU */
-
- /* SDMMC_DDIR0 pin configuration, PIN = F19 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_DAT_DIR0,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* SDMMC_DDIR1 pin configuration, PIN = E20 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_DAT_DIR1,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* SDMMC_DDIR2 pin configuration, PIN = F18 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_DAT_DIR2,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* SDMMC_DDIR3 pin configuration, PIN = E18 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_DAT_DIR3,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* SDMMC_CDIR pin configuration, PIN = G18 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MMC_CMD_DIR,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* MMC_CD pin configuration, PIN = B3 ---2420IP ONLY---*/
- /* MMC_CD for 2422IP=K1 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_SDRC_A14,
- *MuxConfigReg = 0x03 ; /* Mode = 3, PUPD=Disabled */
-
- /* MMC_WP pin configuration, PIN = B4 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_SDRC_A13,
- *MuxConfigReg = 0x03 ; /* Mode = 3, PUPD=Disabled */
-}
-
-/******************************************
- * Routine: muxSetupTouchScreen (ostboot)
- * Description: Set up touch screen muxing
- *******************************************/
-void muxSetupTouchScreen(void)
-{
- volatile unsigned char *MuxConfigReg;
-
- /* SPI1_CLK pin configuration, PIN = U18 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_SPI1_CLK,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* SPI1_MOSI pin configuration, PIN = V20 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_SPI1_SIMO,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* SPI1_MISO pin configuration, PIN = T18 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_SPI1_SOMI,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* SPI1_nCS0 pin configuration, PIN = U19 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_SPI1_NCS0,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-
- /* PEN_IRQ pin configuration, PIN = P20 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_MCBSP1_FSR,
- *MuxConfigReg = 0x03 ; /* Mode = 3, PUPD=Disabled */
-}
-
-/****************************************
- * Routine: muxSetupHDQ (ostboot)
- * Description: setup 1wire mux
- *****************************************/
-void muxSetupHDQ(void)
-{
- volatile unsigned char *MuxConfigReg;
-
- /* HDQ_SIO pin configuration, PIN = N18 */
- MuxConfigReg = (volatile unsigned char *)CONTROL_PADCONF_HDQ_SIO,
- *MuxConfigReg = 0x00 ; /* Mode = 0, PUPD=Disabled */
-}
-
-/***************************************************************
- * Routine: muxSetupGPMC (ostboot)
- * Description: Configures balls which cam up in protected mode
- ***************************************************************/
-void muxSetupGPMC(void)
-{
- volatile uint8 *MuxConfigReg;
- volatile unsigned int *MCR = (volatile unsigned int *)0x4800008C;
-
- /* gpmc_io_dir */
- *MCR = 0x19000000;
-
- /* NOR FLASH CS0 */
- /* signal - Gpmc_clk; pin - J4; offset - 0x0088; mode - 0; Byte-3 Pull/up - N/A */
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_GPMC_D2_BYTE3,
- *MuxConfigReg = 0x00 ;
-
- /* signal - Gpmc_iodir; pin - n2; offset - 0x008C; mode - 1; Byte-3 Pull/up - N/A */
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_GPMC_NCS0_BYTE3,
- *MuxConfigReg = 0x01 ;
-
- /* MPDB(Multi Port Debug Port) CS1 */
- /* signal - gpmc_ncs1; pin - N8; offset - 0x008C; mode - 0; Byte-1 Pull/up - N/A */
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_GPMC_NCS0_BYTE1,
- *MuxConfigReg = 0x00 ;
-
- /* signal - Gpmc_ncs2; pin - E2; offset - 0x008C; mode - 0; Byte-2 Pull/up - N/A */
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_GPMC_NCS0_BYTE2,
- *MuxConfigReg = 0x00 ;
-}
-
-/****************************************************************
- * Routine: muxSetupSDRC (ostboot)
- * Description: Configures balls which come up in protected mode
- ****************************************************************/
-void muxSetupSDRC(void)
-{
- volatile uint8 *MuxConfigReg;
-
- /* signal - sdrc_ncs1; pin - C12; offset - 0x00A0; mode - 0; Byte-1 Pull/up - N/A */
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_SDRC_NCS0_BYTE1,
- *MuxConfigReg = 0x00 ;
-
- /* signal - sdrc_a12; pin - D11; offset - 0x0030; mode - 0; Byte-2 Pull/up - N/A */
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_SDRC_A14_BYTE2,
- *MuxConfigReg = 0x00 ;
-
- /* signal - sdrc_cke1; pin - B13; offset - 0x00A0; mode - 0; Byte-3 Pull/up - N/A */
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_SDRC_NCS0_BYTE3,
- *MuxConfigReg = 0x00;
-
- if (get_cpu_type() == CPU_2422) {
- MuxConfigReg = (volatile uint8 *)CONTROL_PADCONF_SDRC_A14_BYTE0,
- *MuxConfigReg = 0x1b;
- }
-}
-
-/*****************************************************************************
- * Routine: update_mux()
- * Description: Update balls which are different beween boards. All should be
- * updated to match functionaly. However, I'm only updating ones
- * which I'll be using for now. When power comes into play they
- * all need updating.
- *****************************************************************************/
-void update_mux(u32 btype,u32 mtype)
-{
- u32 cpu, base = OMAP2420_CTRL_BASE;
- cpu = get_cpu_type();
-
- if (btype == BOARD_H4_MENELAUS) {
- if (cpu == CPU_2420) {
- /* PIN = B3, GPIO.0->KBR5, mode 3, (pun?),-DO-*/
- __raw_writeb(0x3, base+0x30);
- /* PIN = B13, GPIO.38->KBC6, mode 3, (pun?)-DO-*/
- __raw_writeb(0x3, base+0xa3);
- /* PIN = F1, GPIO.25->HSUSBxx mode 3, (for external HS USB)*/
- /* PIN = H1, GPIO.26->HSUSBxx mode 3, (for external HS USB)*/
- /* PIN = K1, GPMC_ncs6 mode 0, (on board nand access)*/
- /* PIN = L2, GPMC_ncs67 mode 0, (for external HS USB)*/
- /* PIN = M1 (HSUSBOTG) */
- /* PIN = P1, GPIO.35->MEN_POK mode 3, (menelaus powerok)-DO-*/
- __raw_writeb(0x3, base+0x9d);
- /* PIN = U32, (WLAN_CLKREQ) */
- /* PIN = Y11, WLAN */
- /* PIN = AA4, GPIO.15->KBC2, mode 3, -DO- */
- __raw_writeb(0x3, base+0xe7);
- /* PIN = AA8, mDOC */
- /* PIN = AA10, BT */
- /* PIN = AA13, WLAN */
- /* PIN = M18 GPIO.96->MMC2_WP mode 3 -DO- */
- __raw_writeb(0x3, base+0x10e);
- /* PIN = N19 GPIO.98->WLAN_INT mode 3 -DO- */
- __raw_writeb(0x3, base+0x110);
- /* PIN = J15 HHUSB */
- /* PIN = H19 HSUSB */
- /* PIN = W13, P13, R13, W16 ... */
- /* PIN = V12 GPIO.25->I2C_CAMEN mode 3 -DO- */
- __raw_writeb(0x3, base+0xde);
- /* PIN = W19 sys_nirq->MENELAUS_INT mode 0 -DO- */
- __raw_writeb(0x0, base+0x12c);
- /* PIN = AA17->sys_clkreq mode 0 -DO- */
- __raw_writeb(0x0, base+0x136);
- } else if (cpu == CPU_2422) {
- /* PIN = B3, GPIO.0->nc, mode 3, set above (pun?)*/
- /* PIN = B13, GPIO.cke1->nc, mode 0, set above, (pun?)*/
- /* PIN = F1, GPIO.25->HSUSBxx mode 3, (for external HS USB)*/
- /* PIN = H1, GPIO.26->HSUSBxx mode 3, (for external HS USB)*/
- /* PIN = K1, GPMC_ncs6 mode 0, (on board nand access)*/
- __raw_writeb(0x0, base+0x92);
- /* PIN = L2, GPMC_ncs67 mode 0, (for external HS USB)*/
- /* PIN = M1 (HSUSBOTG) */
- /* PIN = P1, GPIO.35->MEN_POK mode 3, (menelaus powerok)-DO-*/
- __raw_writeb(0x3, base+0x10c);
- /* PIN = U32, (WLAN_CLKREQ) */
- /* PIN = AA4, GPIO.15->KBC2, mode 3, -DO- */
- __raw_writeb(0x3, base+0x30);
- /* PIN = AA8, mDOC */
- /* PIN = AA10, BT */
- /* PIN = AA12, WLAN */
- /* PIN = M18 GPIO.96->MMC2_WP mode 3 -DO- */
- __raw_writeb(0x3, base+0x10e);
- /* PIN = N19 GPIO.98->WLAN_INT mode 3 -DO- */
- __raw_writeb(0x3, base+0x110);
- /* PIN = J15 HHUSB */
- /* PIN = H19 HSUSB */
- /* PIN = W13, P13, R13, W16 ... */
- /* PIN = V12 GPIO.25->I2C_CAMEN mode 3 -DO- */
- __raw_writeb(0x3, base+0xde);
- /* PIN = W19 sys_nirq->MENELAUS_INT mode 0 -DO- */
- __raw_writeb(0x0, base+0x12c);
- /* PIN = AA17->sys_clkreq mode 0 -DO- */
- __raw_writeb(0x0, base+0x136);
- }
-
- } else if (btype == BOARD_H4_SDP) {
- if (cpu == CPU_2420) {
- /* PIN = B3, GPIO.0->nc mode 3, set above (pun?)*/
- /* PIN = B13, GPIO.cke1->nc, mode 0, set above, (pun?)*/
- /* Pin = Y11 VLNQ */
- /* Pin = AA4 VLNQ */
- /* Pin = AA6 VLNQ */
- /* Pin = AA8 VLNQ */
- /* Pin = AA10 VLNQ */
- /* Pin = AA12 VLNQ */
- /* PIN = M18 GPIO.96->KBR5 mode 3 -DO- */
- __raw_writeb(0x3, base+0x10e);
- /* PIN = N19 GPIO.98->KBC6 mode 3 -DO- */
- __raw_writeb(0x3, base+0x110);
- /* PIN = J15 MDOC_nDMAREQ */
- /* PIN = H19 GPIO.100->KBC2 mode 3 -DO- */
- __raw_writeb(0x3, base+0x114);
- /* PIN = W13, V12, P13, R13, W19, W16 ... */
- /* PIN = AA17 sys_clkreq->bt_clk_req mode 0 */
- } else if (cpu == CPU_2422) {
- /* PIN = B3, GPIO.0->MMC_CD, mode 3, set above */
- /* PIN = B13, GPIO.38->wlan_int, mode 3, (pun?)*/
- /* Pin = Y11 VLNQ */
- /* Pin = AA4 VLNQ */
- /* Pin = AA6 VLNQ */
- /* Pin = AA8 VLNQ */
- /* Pin = AA10 VLNQ */
- /* Pin = AA12 VLNQ */
- /* PIN = M18 GPIO.96->KBR5 mode 3 -DO- */
- __raw_writeb(0x3, base+0x10e);
- /* PIN = N19 GPIO.98->KBC6 mode 3 -DO- */
- __raw_writeb(0x3, base+0x110);
- /* PIN = J15 MDOC_nDMAREQ */
- /* PIN = H19 GPIO.100->KBC2 mode 3 -DO- */
- __raw_writeb(0x3, base+0x114);
- /* PIN = W13, V12, P13, R13, W19, W16 ... */
- /* PIN = AA17 sys_clkreq->bt_clk_req mode 0 */
- }
- }
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-void nand_init(void)
-{
- extern flash_info_t flash_info[];
-
- nand_probe(CFG_NAND_ADDR);
- if (nand_dev_desc[0].ChipID != NAND_ChipID_UNKNOWN) {
- print_size(nand_dev_desc[0].totlen, "\n");
- }
-
-#ifdef CFG_JFFS2_MEM_NAND
- flash_info[CFG_JFFS2_FIRST_BANK].flash_id = nand_dev_desc[0].id;
- flash_info[CFG_JFFS2_FIRST_BANK].size = 1024*1024*2; /* only read kernel single meg partition */
- flash_info[CFG_JFFS2_FIRST_BANK].sector_count = 1024; /* 1024 blocks in 16meg chip (use less for raw/copied partition) */
- flash_info[CFG_JFFS2_FIRST_BANK].start[0] = 0x80200000; /* ?, ram for now, open question, copy to RAM or adapt for NAND */
-#endif
-}
-#endif
diff --git a/board/omap2420h4/sys_info.c b/board/omap2420h4/sys_info.c
deleted file mode 100644
index a9f72412a7..0000000000
--- a/board/omap2420h4/sys_info.c
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * (C) Copyright 2004
- * Texas Instruments, <www.ti.com>
- * Richard Woodruff <r-woodruff2@ti.com>
- *
- * 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 <common.h>
-#include <asm/arch/omap2420.h>
-#include <asm/io.h>
-#include <asm/arch/bits.h>
-#include <asm/arch/mem.h> /* get mem tables */
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/sys_info.h>
-#include <i2c.h>
-
-/**************************************************************************
- * get_prod_id() - get id info from chips
- ***************************************************************************/
-static u32 get_prod_id(void)
-{
- u32 p;
- p = __raw_readl(PRODUCTION_ID); /* get production ID */
- return((p & CPU_242X_PID_MASK) >> 16);
-}
-
-/**************************************************************************
- * get_cpu_type() - low level get cpu type
- * - no C globals yet.
- * - just looking to say if this is a 2422 or 2420 or ...
- * - to start with we will look at switch settings..
- * - 2422 id's same as 2420 for ES1 will rely on H4 board characteristics
- * (mux for 2420, non-mux for 2422).
- ***************************************************************************/
-u32 get_cpu_type(void)
-{
- u32 v;
-
- switch(get_prod_id()){
- case 1:;/* 2420 */
- case 2: return(CPU_2420); break; /* 2420 pop */
- case 4: return(CPU_2422); break;
- case 8: return(CPU_2423); break;
- default: break; /* early 2420/2422's unmarked */
- }
-
- v = __raw_readl(TAP_IDCODE_REG);
- v &= CPU_24XX_ID_MASK;
- if (v == CPU_2420_CHIPID) { /* currently 2420 and 2422 have same id */
- if (is_gpmc_muxed() == GPMC_MUXED) /* if mux'ed */
- return(CPU_2420);
- else
- return(CPU_2422);
- } else
- return(CPU_2420); /* don't know, say 2420 */
-}
-
-/******************************************
- * get_cpu_rev(void) - extract version info
- ******************************************/
-u32 get_cpu_rev(void)
-{
- u32 v;
- v = __raw_readl(TAP_IDCODE_REG);
- v = v >> 28;
- return(v+1); /* currently 2422 and 2420 match up */
-}
-/****************************************************
- * is_mem_sdr() - return 1 if mem type in use is SDR
- ****************************************************/
-u32 is_mem_sdr(void)
-{
- volatile u32 *burst = (volatile u32 *)(SDRC_MR_0+SDRC_CS0_OSET);
- if(*burst == H4_2420_SDRC_MR_0_SDR)
- return(1);
- return(0);
-}
-
-/***********************************************************
- * get_mem_type() - identify type of mDDR part used.
- * 2422 uses stacked DDR, 2 parts CS0/CS1.
- * 2420 may have 1 or 2, no good way to know...only init 1...
- * when eeprom data is up we can select 1 more.
- *************************************************************/
-u32 get_mem_type(void)
-{
- u32 cpu, sdr = is_mem_sdr();
-
- cpu = get_cpu_type();
- if (cpu == CPU_2422 || cpu == CPU_2423)
- return(DDR_STACKED);
-
- if(get_prod_id() == 0x2)
- return(XDR_POP);
-
- if (get_board_type() == BOARD_H4_MENELAUS)
- if(sdr)
- return(SDR_DISCRETE);
- else
- return(DDR_COMBO);
- else
- if(sdr) /* SDP + SDR kit */
- return(SDR_DISCRETE);
- else
- return(DDR_DISCRETE); /* origional SDP */
-}
-
-/***********************************************************************
- * get_cs0_size() - get size of chip select 0/1
- ************************************************************************/
-u32 get_sdr_cs_size(u32 offset)
-{
- u32 size;
- size = __raw_readl(SDRC_MCFG_0+offset) >> 8; /* get ram size field */
- size &= 0x2FF; /* remove unwanted bits */
- size *= SZ_2M; /* find size in MB */
- return(size);
-}
-
-/***********************************************************************
- * get_board_type() - get board type based on current production stats.
- * --- NOTE: 2 I2C EEPROMs will someday be populated with proper info.
- * when they are available we can get info from there. This should
- * be correct of all known boards up until today.
- ************************************************************************/
-u32 get_board_type(void)
-{
- if (i2c_probe(I2C_MENELAUS) == 0)
- return(BOARD_H4_MENELAUS);
- else
- return(BOARD_H4_SDP);
-}
-
-/******************************************************************
- * get_sysboot_value() - get init word settings (dip switch on h4)
- ******************************************************************/
-inline u32 get_sysboot_value(void)
-{
- return(0x00000FFF & __raw_readl(CONTROL_STATUS));
-}
-
-/***************************************************************************
- * get_gpmc0_base() - Return current address hardware will be
- * fetching from. The below effectively gives what is correct, its a bit
- * mis-leading compared to the TRM. For the most general case the mask
- * needs to be also taken into account this does work in practice.
- * - for u-boot we currently map:
- * -- 0 to nothing,
- * -- 4 to flash
- * -- 8 to enent
- * -- c to wifi
- ****************************************************************************/
-u32 get_gpmc0_base(void)
-{
- u32 b;
-
- b = __raw_readl(GPMC_CONFIG7_0);
- b &= 0x1F; /* keep base [5:0] */
- b = b << 24; /* ret 0x0b000000 */
- return(b);
-}
-
-/*****************************************************************
- * is_gpmc_muxed() - tells if address/data lines are multiplexed
- *****************************************************************/
-u32 is_gpmc_muxed(void)
-{
- u32 mux;
- mux = get_sysboot_value();
- if ((mux & (BIT0 | BIT1 | BIT2 | BIT3)) == (BIT0 | BIT2 | BIT3))
- return(GPMC_MUXED); /* NAND Boot mode */
- if (mux & BIT1) /* if mux'ed */
- return(GPMC_MUXED);
- else
- return(GPMC_NONMUXED);
-}
-
-/************************************************************************
- * get_gpmc0_type() - read sysboot lines to see type of memory attached
- ************************************************************************/
-u32 get_gpmc0_type(void)
-{
- u32 type;
- type = get_sysboot_value();
- if ((type & (BIT3|BIT2)) == (BIT3|BIT2))
- return(TYPE_NAND);
- else
- return(TYPE_NOR);
-}
-
-/*******************************************************************
- * get_gpmc0_width() - See if bus is in x8 or x16 (mainly for nand)
- *******************************************************************/
-u32 get_gpmc0_width(void)
-{
- u32 width;
- width = get_sysboot_value();
- if ((width & 0xF) == (BIT3|BIT2))
- return(WIDTH_8BIT);
- else
- return(WIDTH_16BIT);
-}
-
-/*********************************************************************
- * wait_on_value() - common routine to allow waiting for changes in
- * volatile regs.
- *********************************************************************/
-u32 wait_on_value(u32 read_bit_mask, u32 match_value, u32 read_addr, u32 bound)
-{
- u32 i = 0, val;
- do {
- ++i;
- val = __raw_readl(read_addr) & read_bit_mask;
- if (val == match_value)
- return(1);
- if (i==bound)
- return(0);
- } while (1);
-}
-
-/*********************************************************************
- * display_board_info() - print banner with board info.
- *********************************************************************/
-void display_board_info(u32 btype)
-{
- char cpu_2420[] = "2420"; /* cpu type */
- char cpu_2422[] = "2422";
- char cpu_2423[] = "2423";
- char db_men[] = "Menelaus"; /* board type */
- char db_ip[] = "IP";
- char mem_sdr[] = "mSDR"; /* memory type */
- char mem_ddr[] = "mDDR";
- char t_tst[] = "TST"; /* security level */
- char t_emu[] = "EMU";
- char t_hs[] = "HS";
- char t_gp[] = "GP";
- char unk[] = "?";
-
- char *cpu_s, *db_s, *mem_s, *sec_s;
- u32 cpu, rev, sec;
-
- rev = get_cpu_rev();
- cpu = get_cpu_type();
- sec = get_device_type();
-
- if(is_mem_sdr())
- mem_s = mem_sdr;
- else
- mem_s = mem_ddr;
-
- if(cpu == CPU_2423)
- cpu_s = cpu_2423;
- else if (cpu == CPU_2422)
- cpu_s = cpu_2422;
- else
- cpu_s = cpu_2420;
-
- if(btype == BOARD_H4_MENELAUS)
- db_s = db_men;
- else
- db_s = db_ip;
-
- switch(sec){
- case TST_DEVICE: sec_s = t_tst; break;
- case EMU_DEVICE: sec_s = t_emu; break;
- case HS_DEVICE: sec_s = t_hs; break;
- case GP_DEVICE: sec_s = t_gp; break;
- default: sec_s = unk;
- }
-
- printf("OMAP%s-%s revision %d\n", cpu_s, sec_s, rev-1);
- printf("TI H4 SDP Base Board + %s Daughter Board + %s \n", db_s, mem_s);
-}
-
-/*************************************************************************
- * get_board_rev() - setup to pass kernel board revision information
- * 0 = 242x IP platform (first 2xx boards)
- * 1 = 242x Menelaus platfrom.
- *************************************************************************/
-u32 get_board_rev(void)
-{
- u32 rev = 0;
- u32 btype = get_board_type();
-
- if (btype == BOARD_H4_MENELAUS){
- rev = 1;
- }
- return(rev);
-}
-
-/********************************************************
- * get_base(); get upper addr of current execution
- *******************************************************/
-u32 get_base(void)
-{
- u32 val;
- __asm__ __volatile__("mov %0, pc \n" : "=r" (val) : : "memory");
- val &= 0xF0000000;
- val >>= 28;
- return(val);
-}
-
-/********************************************************
- * get_base2(); get 2upper addr of current execution
- *******************************************************/
-u32 get_base2(void)
-{
- u32 val;
- __asm__ __volatile__("mov %0, pc \n" : "=r" (val) : : "memory");
- val &= 0xFF000000;
- val >>= 24;
- return(val);
-}
-
-/********************************************************
- * running_in_flash() - tell if currently running in
- * flash.
- *******************************************************/
-u32 running_in_flash(void)
-{
- if (get_base() < 4)
- return(1); /* in flash */
- return(0); /* running in SRAM or SDRAM */
-}
-
-/********************************************************
- * running_in_sram() - tell if currently running in
- * sram.
- *******************************************************/
-u32 running_in_sram(void)
-{
- if (get_base() == 4)
- return(1); /* in SRAM */
- return(0); /* running in FLASH or SDRAM */
-}
-/********************************************************
- * running_in_sdram() - tell if currently running in
- * flash.
- *******************************************************/
-u32 running_in_sdram(void)
-{
- if (get_base() > 4)
- return(1); /* in sdram */
- return(0); /* running in SRAM or FLASH */
-}
-
-/*************************************************************
- * running_from_internal_boot() - am I a signed NOR image.
- *************************************************************/
-u32 running_from_internal_boot(void)
-{
- u32 v, base;
-
- v = get_sysboot_value() & BIT3;
- base = get_base2();
- /* if running at mask rom flash address and
- * sysboot3 says this was an internal boot
- */
- if ((base == 0x08) && v)
- return(1);
- else
- return(0);
-}
-
-/*************************************************************
- * get_device_type(): tell if GP/HS/EMU/TST
- *************************************************************/
-u32 get_device_type(void)
-{
- int mode;
- mode = __raw_readl(CONTROL_STATUS) & (BIT10|BIT9|BIT8);
- return(mode >>= 8);
-}
diff --git a/board/omap2420h4/u-boot.lds b/board/omap2420h4/u-boot.lds
deleted file mode 100644
index 1460adcdd8..0000000000
--- a/board/omap2420h4/u-boot.lds
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * January 2004 - Changed to support H4 device
- * Copyright (c) 2004 Texas Instruments
- *
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm1136/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/omap730p2/Makefile b/board/omap730p2/Makefile
deleted file mode 100644
index 104ff4e912..0000000000
--- a/board/omap730p2/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := omap730p2.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/omap730p2/config.mk b/board/omap730p2/config.mk
deleted file mode 100644
index 16bff6f271..0000000000
--- a/board/omap730p2/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-#
-# (C) Copyright 2003
-# Texas Instruments, <www.ti.com>
-# Kshitij Gupta <Kshitij@ti.com>
-#
-# TI Perseus 2 board with OMAP720 (ARM925EJS) cpu
-# see http://www.ti.com/ for more information on Texas Instruments
-#
-# Innovator has 1 bank of 256 MB SDRAM
-# Physical Address:
-# 1000'0000 to 2000'0000
-#
-#
-# Linux-Kernel is expected to be at 1000'8000, entry 1000'8000
-# (mem base + reserved)
-#
-# we load ourself to 1108'0000
-#
-#
-
-TEXT_BASE = 0x11080000
diff --git a/board/omap730p2/flash.c b/board/omap730p2/flash.c
deleted file mode 100644
index e7d65157f7..0000000000
--- a/board/omap730p2/flash.c
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.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
- */
-
-#include <common.h>
-#include <linux/byteorder/swab.h>
-
-#define PHYS_FLASH_SECT_SIZE 0x00020000 /* 256 KB sectors (x2) */
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-
-/* Flash Organization Structure */
-typedef struct OrgDef {
- unsigned int sector_number;
- unsigned int sector_size;
-} OrgDef;
-
-
-/* Flash Organizations */
-OrgDef OrgIntel_28F256L18T[] = {
- {4, 32 * 1024}, /* 4 * 32kBytes sectors */
- {255, 128 * 1024}, /* 255 * 128kBytes sectors */
-};
-
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-unsigned long flash_init (void);
-static ulong flash_get_size (FPW * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-void inline spin_wheel (void);
-void flash_print_info (flash_info_t * info);
-void flash_unprotect_sectors (FPWV * addr);
-int flash_erase (flash_info_t * info, int s_first, int s_last);
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1, &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
- OrgDef *pOrgDef;
-
- pOrgDef = OrgIntel_28F256L18T;
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- if (i > 255) {
- info->start[i] = base + (i * 0x8000);
- info->protect[i] = 0;
- } else {
- info->start[i] = base +
- (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F256L18T:
- printf ("FLASH 28F256L18T\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
- switch (value) {
-
- case (FPW) (INTEL_ID_28F256L18T):
- info->flash_id += FLASH_28F256L18T;
- info->sector_count = 259;
- info->size = 0x02000000;
- break; /* => 32 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/* unprotects a sector for write and erase
- * on some intel parts, this unprotects the entire chip, but it
- * wont hurt to call this additional times per sector...
- */
-void flash_unprotect_sectors (FPWV * addr)
-{
-#define PD_FINTEL_WSMS_READY_MASK 0x0080
-
- *addr = (FPW) 0x00500050; /* clear status register */
-
- /* this sends the clear lock bit command */
- *addr = (FPW) 0x00600060;
- *addr = (FPW) 0x00D000D0;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- flash_unprotect_sectors (addr);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050;/* clear status register */
- *addr = (FPW) 0x00200020;/* erase setup */
- *addr = (FPW) 0x00D000D0;/* erase confirm */
-
- while (((status =
- *addr) & (FPW) 0x00800080) !=
- (FPW) 0x00800080) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- /* suspend erase */
- *addr = (FPW) 0x00B000B0;
- /* reset to read mode */
- *addr = (FPW) 0x00FF00FF;
- rcode = 1;
- break;
- }
- }
-
- /* clear status register cmd. */
- *addr = (FPW) 0x00500050;
- *addr = (FPW) 0x00FF00FF;/* resest to read mode */
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
- return (2);
- }
- flash_unprotect_sectors (addr);
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/omap730p2/lowlevel_init.S b/board/omap730p2/lowlevel_init.S
deleted file mode 100644
index 9ab71cf551..0000000000
--- a/board/omap730p2/lowlevel_init.S
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Board specific setup info
- *
- * (C) Copyright 2003-2004
- *
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.com>
- *
- * Modified for OMAP 1610 H2 board by Nishant Kamat, Jan 2004
- *
- * Modified for OMAP730 P2 Board by Dave Peverley, MPC-Data Limited
- * (http://www.mpc-data.co.uk)
- *
- * TODO : Tidy up and change to use system register defines
- * from omap730.h where possible.
- *
- * 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 <config.h>
-#include <version.h>
-
-#if defined(CONFIG_OMAP730)
-#include <./configs/omap730.h>
-#endif
-
-_TEXT_BASE:
- .word TEXT_BASE /* sdram load addr from config.mk */
-
-.globl lowlevel_init
-lowlevel_init:
- /* Save callers address in r11 - r11 must never be modified */
- mov r11, lr
-
- /*------------------------------------------------------*
- *mask all IRQs by setting all bits in the INTMR default*
- *------------------------------------------------------*/
- mov r1, #0xffffffff
- ldr r0, =REG_IHL1_MIR
- str r1, [r0]
- ldr r0, =REG_IHL2_MIR
- str r1, [r0]
-
- /*------------------------------------------------------*
- * Set up ARM CLM registers (IDLECT1) *
- *------------------------------------------------------*/
- ldr r0, REG_ARM_IDLECT1
- ldr r1, VAL_ARM_IDLECT1
- str r1, [r0]
-
- /*------------------------------------------------------*
- * Set up ARM CLM registers (IDLECT2) *
- *------------------------------------------------------*/
- ldr r0, REG_ARM_IDLECT2
- ldr r1, VAL_ARM_IDLECT2
- str r1, [r0]
-
- /*------------------------------------------------------*
- * Set up ARM CLM registers (IDLECT3) *
- *------------------------------------------------------*/
- ldr r0, REG_ARM_IDLECT3
- ldr r1, VAL_ARM_IDLECT3
- str r1, [r0]
-
-
- mov r1, #0x01 /* PER_EN bit */
- ldr r0, REG_ARM_RSTCT2
- strh r1, [r0] /* CLKM; Peripheral reset. */
-
- /* Set CLKM to Sync-Scalable */
- /* I supposedly need to enable the dsp clock before switching */
- mov r1, #0x1000
- ldr r0, REG_ARM_SYSST
- strh r1, [r0]
- mov r0, #0x400
-1:
- subs r0, r0, #0x1 /* wait for any bubbles to finish */
- bne 1b
- ldr r1, VAL_ARM_CKCTL
- ldr r0, REG_ARM_CKCTL
- strh r1, [r0]
-
- /* a few nops to let settle */
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
-
- /* setup DPLL 1 */
- /* Ramp up the clock to 96Mhz */
- ldr r1, VAL_DPLL1_CTL
- ldr r0, REG_DPLL1_CTL
- strh r1, [r0]
- ands r1, r1, #0x10 /* Check if PLL is enabled. */
- beq lock_end /* Do not look for lock if BYPASS selected */
-2:
- ldrh r1, [r0]
- ands r1, r1, #0x01 /* Check the LOCK bit.*/
- beq 2b /* loop until bit goes hi. */
-lock_end:
-
- /*------------------------------------------------------*
- * Turn off the watchdog during init... *
- *------------------------------------------------------*/
- ldr r0, REG_WATCHDOG
- ldr r1, WATCHDOG_VAL1
- str r1, [r0]
- ldr r1, WATCHDOG_VAL2
- str r1, [r0]
- ldr r0, REG_WSPRDOG
- ldr r1, WSPRDOG_VAL1
- str r1, [r0]
- ldr r0, REG_WWPSDOG
-
-watch1Wait:
- ldr r1, [r0]
- tst r1, #0x10
- bne watch1Wait
-
- ldr r0, REG_WSPRDOG
- ldr r1, WSPRDOG_VAL2
- str r1, [r0]
- ldr r0, REG_WWPSDOG
-watch2Wait:
- ldr r1, [r0]
- tst r1, #0x10
- bne watch2Wait
-
- /* Set memory timings corresponding to the new clock speed */
-
- /* Check execution location to determine current execution location
- * and branch to appropriate initialization code.
- */
- /* Compare physical SDRAM base & current execution location. */
- and r0, pc, #0xF0000000
- /* Compare. */
- cmp r0, #0
- /* Skip over EMIF-fast initialization if running from SDRAM. */
- bne skip_sdram
-
- /*
- * Delay for SDRAM initialization.
- */
- mov r3, #0x1800 /* value should be checked */
-3:
- subs r3, r3, #0x1 /* Decrement count */
- bne 3b
-
- ldr r0, REG_SDRAM_CONFIG
- ldr r1, SDRAM_CONFIG_VAL
- str r1, [r0]
-
- ldr r0, REG_SDRAM_MRS_LEGACY
- ldr r1, SDRAM_MRS_VAL
- str r1, [r0]
-
-skip_sdram:
-
-common_tc:
- /* slow interface */
- ldr r1, VAL_TC_EMIFS_CS0_CONFIG
- ldr r0, REG_TC_EMIFS_CS0_CONFIG
- str r1, [r0] /* Chip Select 0 */
-
- ldr r1, VAL_TC_EMIFS_CS1_CONFIG
- ldr r0, REG_TC_EMIFS_CS1_CONFIG
- str r1, [r0] /* Chip Select 1 */
- ldr r1, VAL_TC_EMIFS_CS2_CONFIG
- ldr r0, REG_TC_EMIFS_CS2_CONFIG
- str r1, [r0] /* Chip Select 2 */
- ldr r1, VAL_TC_EMIFS_CS3_CONFIG
- ldr r0, REG_TC_EMIFS_CS3_CONFIG
- str r1, [r0] /* Chip Select 3 */
-
- /* 48MHz clock request for UART1 */
- ldr r1, PERSEUS2_CONFIG_BASE
- ldrh r0, [r1, #CONFIG_PCC_CONF]
- orr r0, r0, #CONF_MOD_UART1_CLK_MODE_R
- strh r0, [r1, #CONFIG_PCC_CONF]
-
- /* Initialize public and private rheas
- * - set access factor 2 on both rhea / strobe
- * - disable write buffer on strb0, enable write buffer on strb1
- */
-
- ldr R0, REG_RHEA_PUB_CTL
- ldr R1, REG_RHEA_PRIV_CTL
- ldr R2, VAL_RHEA_CTL
- strh R2, [R0]
- strh R2, [R1]
- mov R3, #2 /* disable write buffer on strb0, enable write buffer on strb1 */
- strh R3, [R0, #0x08] /* arm rhea control reg */
- strh R3, [R1, #0x08]
-
- /* enable IRQ and FIQ */
-
- mrs r4, CPSR
- bic r4, r4, #IRQ_MASK
- bic r4, r4, #FIQ_MASK
- msr CPSR, r4
-
- /* set TAP CONF to TRI EMULATION */
-
- ldr r1, [r0, #CONFIG_MODE2]
- bic r1, r1, #0x18
- orr r1, r1, #0x10
- str r1, [r0, #CONFIG_MODE2]
-
- /* set tdbgen to 1 */
-
- ldr r0, PERSEUS2_CONFIG_BASE
- ldr r1, [r0, #CONFIG_MODE1]
- mov r2, #0x10000
- orr r1, r1, r2
- str r1, [r0, #CONFIG_MODE1]
-
-#ifdef CONFIG_P2_OMAP1610
- /* inserting additional 2 clock cycle hold time for LAN */
- ldr r0, REG_TC_EMIFS_CS1_ADVANCED
- ldr r1, VAL_TC_EMIFS_CS1_ADVANCED
- str r1, [r0]
-#endif
- /* Start MPU Timer 1 */
- ldr r0, REG_MPU_LOAD_TIMER
- ldr r1, VAL_MPU_LOAD_TIMER
- str r1, [r0]
-
- ldr r0, REG_MPU_CNTL_TIMER
- ldr r1, VAL_MPU_CNTL_TIMER
- str r1, [r0]
-
- /* back to arch calling code */
- mov pc, r11
-
- /* the literal pools origin */
- .ltorg
-
-REG_TC_EMIFS_CONFIG: /* 32 bits */
- .word 0xfffecc0c
-REG_TC_EMIFS_CS0_CONFIG: /* 32 bits */
- .word 0xfffecc10
-REG_TC_EMIFS_CS1_CONFIG: /* 32 bits */
- .word 0xfffecc14
-REG_TC_EMIFS_CS2_CONFIG: /* 32 bits */
- .word 0xfffecc18
-REG_TC_EMIFS_CS3_CONFIG: /* 32 bits */
- .word 0xfffecc1c
-
-#ifdef CONFIG_P2_OMAP730
-REG_TC_EMIFS_CS1_ADVANCED: /* 32 bits */
- .word 0xfffecc54
-#endif
-
-/* MPU clock/reset/power mode control registers */
-REG_ARM_CKCTL: /* 16 bits */
- .word 0xfffece00
-
-REG_ARM_IDLECT3: /* 16 bits */
- .word 0xfffece24
-REG_ARM_IDLECT2: /* 16 bits */
- .word 0xfffece08
-REG_ARM_IDLECT1: /* 16 bits */
- .word 0xfffece04
-
-REG_ARM_RSTCT2: /* 16 bits */
- .word 0xfffece14
-REG_ARM_SYSST: /* 16 bits */
- .word 0xfffece18
-/* DPLL control registers */
-REG_DPLL1_CTL: /* 16 bits */
- .word 0xfffecf00
-
-/* Watch Dog register */
-/* secure watchdog stop */
-REG_WSPRDOG:
- .word 0xfffeb048
-/* watchdog write pending */
-REG_WWPSDOG:
- .word 0xfffeb034
-
-WSPRDOG_VAL1:
- .word 0x0000aaaa
-WSPRDOG_VAL2:
- .word 0x00005555
-
-/* SDRAM config is: auto refresh enabled, 16 bit 4 bank,
- counter @8192 rows, 10 ns, 8 burst */
-REG_SDRAM_CONFIG:
- .word 0xfffecc20
-
-REG_SDRAM_MRS_LEGACY:
- .word 0xfffecc24
-
-REG_WATCHDOG:
- .word 0xfffec808
-
-REG_MPU_LOAD_TIMER:
- .word 0xfffec504
-REG_MPU_CNTL_TIMER:
- .word 0xfffec500
-
-/* Public and private rhea bridge registers definition */
-
-REG_RHEA_PUB_CTL:
- .word 0xFFFECA00
-
-REG_RHEA_PRIV_CTL:
- .word 0xFFFED300
-
-/* EMIFF SDRAM Configuration register
- - self refresh disable
- - auto refresh enabled
- - SDRAM type 64 Mb, 16 bits bus 4 banks
- - power down enabled
- - SDRAM clock disabled
- */
-SDRAM_CONFIG_VAL:
- .word 0x0C017DF4
-
-/* Burst full page length ; cas latency = 3 */
-SDRAM_MRS_VAL:
- .word 0x00000037
-
-VAL_ARM_CKCTL:
- .word 0x6505
-VAL_DPLL1_CTL:
- .word 0x3412
-
-#ifdef CONFIG_P2_OMAP730
-VAL_TC_EMIFS_CS0_CONFIG:
- .word 0x0000FFF3
-VAL_TC_EMIFS_CS1_CONFIG:
- .word 0x00004278
-VAL_TC_EMIFS_CS2_CONFIG:
- .word 0x00004278
-VAL_TC_EMIFS_CS3_CONFIG:
- .word 0x00004278
-VAL_TC_EMIFS_CS1_ADVANCED:
- .word 0x00000022
-#endif
-
-VAL_ARM_IDLECT1:
- .word 0x00000400
-VAL_ARM_IDLECT2:
- .word 0x00000886
-VAL_ARM_IDLECT3:
- .word 0x00000015
-
-WATCHDOG_VAL1:
- .word 0x000000f5
-WATCHDOG_VAL2:
- .word 0x000000a0
-
-VAL_MPU_LOAD_TIMER:
- .word 0xffffffff
-VAL_MPU_CNTL_TIMER:
- .word 0xffffffa1
-
-VAL_RHEA_CTL:
- .word 0xFF22
-
-/* Config Register vals */
-PERSEUS2_CONFIG_BASE:
- .word 0xFFFE1000
-
-.equ CONFIG_PCC_CONF, 0xB4
-.equ CONFIG_MODE1, 0x10
-.equ CONFIG_MODE2, 0x14
-.equ CONF_MOD_UART1_CLK_MODE_R, 0x0A
-
-/* misc values */
-.equ IRQ_MASK, 0x80 /* IRQ mask value */
-.equ FIQ_MASK, 0x40 /* FIQ mask value */
diff --git a/board/omap730p2/omap730p2.c b/board/omap730p2/omap730p2.c
deleted file mode 100644
index 309d667585..0000000000
--- a/board/omap730p2/omap730p2.c
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.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
- */
-
-#include <common.h>
-#if defined(CONFIG_OMAP730)
-#include <./configs/omap730.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int test_boot_mode(void);
-void spin_up_leds(void);
-void flash__init (void);
-void ether__init (void);
-void set_muxconf_regs (void);
-void peripheral_power_enable (void);
-
-#define FLASH_ON_CS0 1
-#define FLASH_ON_CS3 0
-
-static inline void delay (unsigned long loops)
-{
- __asm__ volatile ("1:\n"
- "subs %0, %1, #1\n"
- "bne 1b":"=r" (loops):"0" (loops));
-}
-
-int test_boot_mode(void)
-{
- /* Check for CS0 and CS3 address decode swapping */
- if (*((volatile int *)EMIFS_CONFIG) & 0x00000002)
- return(FLASH_ON_CS3);
- else
- return(FLASH_ON_CS0);
-}
-
-/* Toggle backup LED indication */
-void toggle_backup_led(void)
-{
- static int backupLEDState = 0; /* Init variable so that the LED will be ON the first time */
- volatile unsigned int *IOConfReg;
-
-
- IOConfReg = (volatile unsigned int *) ((unsigned int) OMAP730_GPIO_BASE_5 + GPIO_DATA_OUTPUT);
-
- if (backupLEDState != 0) {
- *IOConfReg &= (0xFFFFEFFF);
- backupLEDState = 0;
- } else {
- *IOConfReg |= (0x00001000);
- backupLEDState = 1;
- }
-}
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* arch number of OMAP 730 P2 Board - Same as the Innovator! */
- gd->bd->bi_arch_number = MACH_TYPE_OMAP_PERSEUS2;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x10000100;
-
- /* Configure MUX settings */
- set_muxconf_regs ();
-
- peripheral_power_enable ();
-
- /* Backup LED indication via GPIO_140 -> Red led if MUX correctly setup */
- toggle_backup_led();
-
- /* Hold GSM in reset until needed */
- *((volatile unsigned short *)M_CTL) &= ~1;
-
- /*
- * CSx timings, GPIO Mux ... setup
- */
-
- /* Flash: CS0 timings setup */
- *((volatile unsigned int *) FLASH_CFG_0) = 0x0000fff3;
- *((volatile unsigned int *) FLASH_ACFG_0_1) = 0x00000088;
-
- /* Ethernet support trough the debug board */
- /* CS1 timings setup */
- *((volatile unsigned int *) FLASH_CFG_1) = 0x0000fff3;
- *((volatile unsigned int *) FLASH_ACFG_0_1) = 0x00000000;
-
- /* this speeds up your boot a quite a bit. However to make it
- * work, you need make sure your kernel startup flush bug is fixed.
- * ... rkw ...
- */
- icache_enable ();
-
- flash__init ();
- ether__init ();
-
- return 0;
-}
-
-int misc_init_r (void)
-{
- /* currently empty */
- return (0);
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-void flash__init (void)
-{
- unsigned int regval;
-
- regval = *((volatile unsigned int *) EMIFS_CONFIG);
- /* Turn off write protection for flash devices. */
- regval = regval | 0x0001;
- *((volatile unsigned int *) EMIFS_CONFIG) = regval;
-}
-
-/*************************************************************
- Routine:ether__init
- Description: take the Ethernet controller out of reset and wait
- for the EEPROM load to complete.
-*************************************************************/
-void ether__init (void)
-{
-#define LAN_RESET_REGISTER 0x0400001c
-
- *((volatile unsigned short *) LAN_RESET_REGISTER) = 0x0000;
- do {
- *((volatile unsigned short *) LAN_RESET_REGISTER) = 0x0001;
- udelay (100);
- } while (*((volatile unsigned short *) LAN_RESET_REGISTER) != 0x0001);
-
- do {
- *((volatile unsigned short *) LAN_RESET_REGISTER) = 0x0000;
- udelay (100);
- } while (*((volatile unsigned short *) LAN_RESET_REGISTER) != 0x0000);
-
-#define ETH_CONTROL_REG 0x0400030b
-
- *((volatile unsigned char *) ETH_CONTROL_REG) &= ~0x01;
- udelay (100);
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return 0;
-}
-
-/******************************************************
- Routine: set_muxconf_regs
- Description: Setting up the configuration Mux registers
- specific to the hardware
-*******************************************************/
-void set_muxconf_regs (void)
-{
- volatile unsigned int *MuxConfReg;
- /* set each registers to its reset value; */
-
- /*
- * Backup LED Indication
- */
-
- /* Configure MUXed pin. Mode 6: GPIO_140 */
- MuxConfReg = (volatile unsigned int *) (PERSEUS2_IO_CONF10);
- *MuxConfReg &= (0xFFFFFF1F); /* Clear D_MPU_LPG1 */
- *MuxConfReg |= 0x000000C0; /* Set D_MPU_LPG1 to 0x6 */
-
- /* Configure GPIO_140 as output */
- MuxConfReg = (volatile unsigned int *) ((unsigned int) OMAP730_GPIO_BASE_5 + GPIO_DIRECTION_CONTROL);
- *MuxConfReg &= (0xFFFFEFFF); /* Clear direction (output) for GPIO 140 */
-
- /*
- * Configure GPIOs for battery charge & feedback
- */
-
- /* Configure MUXed pin. Mode 6: GPIO_35 */
- MuxConfReg = (volatile unsigned int *) (PERSEUS2_IO_CONF3);
- *MuxConfReg &= 0xFFFFFFF1; /* Clear M_CLK_OUT */
- *MuxConfReg |= 0x0000000C; /* Set M_CLK_OUT = 0x6 (GPIOs) */
-
- /* Configure MUXed pin. Mode 6: GPIO_72,73,74 */
- MuxConfReg = (volatile unsigned int *) (PERSEUS2_IO_CONF5);
- *MuxConfReg &= 0xFFFF1FFF; /* Clear D_DDR */
- *MuxConfReg |= 0x0000C000; /* Set D_DDR = 0x6 (GPIOs) */
-
- MuxConfReg = (volatile unsigned int *) ((unsigned int) OMAP730_GPIO_BASE_3 + GPIO_DIRECTION_CONTROL);
- *MuxConfReg |= 0x00000100; /* Configure GPIO_72 as input */
- *MuxConfReg &= 0xFFFFFDFF; /* Configure GPIO_73 as output */
-
- /*
- * Allow battery charge
- */
-
- MuxConfReg = (volatile unsigned int *) ((unsigned int) OMAP730_GPIO_BASE_3 + GPIO_DATA_OUTPUT);
- *MuxConfReg &= (0xFFFFFDFF); /* Clear GPIO_73 pin */
-
- /*
- * Configure MPU_EXT_NIRQ IO in IO_CONF9 register,
- * It is used as the Ethernet controller interrupt
- */
- MuxConfReg = (volatile unsigned int *) (PERSEUS2_IO_CONF9);
- *MuxConfReg &= 0x1FFFFFFF;
-}
-
-/******************************************************
- Routine: peripheral_power_enable
- Description: Enable the power for UART1
-*******************************************************/
-void peripheral_power_enable (void)
-{
- volatile unsigned int *MuxConfReg;
-
-
- /* Set up pins used by UART */
-
- /* Start UART clock (48MHz) */
- MuxConfReg = (volatile unsigned int *) (PERSEUS_PCC_CONF_REG);
- *MuxConfReg &= (0xFFFFFFF7);
- *MuxConfReg |= (0x00000008);
-
- /* Get the UART pin in mode0 */
- MuxConfReg = (volatile unsigned int *) (PERSEUS2_IO_CONF3);
- *MuxConfReg &= (0xFF1FFFFF);
- *MuxConfReg &= (0xF1FFFFFF);
-}
diff --git a/board/omap730p2/u-boot.lds b/board/omap730p2/u-boot.lds
deleted file mode 100644
index 710b2a2d6e..0000000000
--- a/board/omap730p2/u-boot.lds
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
- . = ALIGN(4);
- .text :
- {
- cpu/arm926ejs/start.o (.text)
- *(.text)
- }
- . = ALIGN(4);
- .rodata : { *(.rodata) }
- . = ALIGN(4);
- .data : { *(.data) }
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/oxc/Makefile b/board/oxc/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/oxc/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/oxc/config.mk b/board/oxc/config.mk
deleted file mode 100644
index 7a5bcfc190..0000000000
--- a/board/oxc/config.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# (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
-#
-
-#
-# OXC boards
-#
-
-#TEXT_BASE = 0x00090000
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/oxc/flash.c b/board/oxc/flash.c
deleted file mode 100644
index 795b7ccff9..0000000000
--- a/board/oxc/flash.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for STM29W320DB/STM29W800D flash chips
- *
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-static ulong flash_get_size (vu_char *addr, flash_info_t *info);
-static int write_byte (flash_info_t *info, ulong dest, uchar data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /*
- * We use the following trick here: since flash is cyclically
- * mapped in the 0xFF800000-0xFFFFFFFF area, we detect the type
- * and the size of flash using 0xFF800000 as the base address,
- * and then call flash_get_size() again to fill flash_info.
- */
- size = flash_get_size((vu_char *)CFG_FLASH_PRELIMBASE, &flash_info[0]);
- if (size)
- {
- flash_get_size((vu_char *)(-size), &flash_info[0]);
- }
-
-#if (CFG_MONITOR_BASE >= CFG_FLASH_PRELIMBASE)
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_STM:
- printf ("ST ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_STM320DB:
- printf ("M29W320DB (32 Mbit)\n");
- break;
- case FLASH_STM800DB:
- printf ("M29W800DB (8 Mbit, bottom boot block)\n");
- break;
- case FLASH_STM800DT:
- printf ("M29W800DT (8 Mbit, top boot block)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_char *addr, flash_info_t *info)
-{
- short i;
- uchar vendor, devid;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0AAA] = 0xAA;
- addr[0x0555] = 0x55;
- addr[0x0AAA] = 0x90;
-
- udelay(1000);
-
- vendor = addr[0];
- devid = addr[2];
-
- /* only support STM */
- if ((vendor << 16) != FLASH_MAN_STM) {
- return 0;
- }
-
- if (devid == FLASH_STM320DB) {
- /* MPC8240 can address maximum 2Mb of flash, that is why the MSB
- * lead is grounded and we can access only 2 first Mb */
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 32;
- info->size = info->sector_count * 0x10000;
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + i * 0x10000;
- }
- }
- else if (devid == FLASH_STM800DB) {
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 19;
- info->size = 0x100000;
- info->start[0] = 0x0000;
- info->start[1] = 0x4000;
- info->start[2] = 0x6000;
- info->start[3] = 0x8000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i-3) * 0x10000;
- }
- }
- else if (devid == FLASH_STM800DT) {
- info->flash_id = vendor << 16 | devid;
- info->sector_count = 19;
- info->size = 0x100000;
- for (i = 0; i < info->sector_count-4; i++) {
- info->start[i] = base + i * 0x10000;
- }
- info->start[i] = base + i * 0x10000;
- info->start[i+1] = base + i * 0x10000 + 0x8000;
- info->start[i+2] = base + i * 0x10000 + 0xa000;
- info->start[i+3] = base + i * 0x10000 + 0xc000;
- }
- else {
- return 0;
- }
-
- /* mark all sectors as unprotected */
- for (i = 0; i < info->sector_count; i++) {
- info->protect[i] = 0;
- }
-
- /* Issue the reset command */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr[0] = 0xF0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_char *addr = (vu_char *)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0AAA] = 0xAA;
- addr[0x0555] = 0x55;
- addr[0x0AAA] = 0x80;
- addr[0x0AAA] = 0xAA;
- addr[0x0555] = 0x55;
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_char *)(info->start[sect]);
- addr[0] = 0x30;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_char *)(info->start[l_sect]);
- while ((addr[0] & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (volatile unsigned char *)info->start[0];
- addr[0] = 0xF0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- int rc;
-
- while (cnt > 0) {
- if ((rc = write_byte(info, addr, *src)) != 0) {
- return (rc);
- }
- addr++;
- src++;
- cnt--;
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Write a byte to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_byte (flash_info_t *info, ulong dest, uchar data)
-{
- vu_char *addr = (vu_char *)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_char *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0AAA] = 0xAA;
- addr[0x0555] = 0x55;
- addr[0x0AAA] = 0xA0;
-
- *((vu_char *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_char *)dest) & 0x80) != (data & 0x80)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/oxc/oxc.c b/board/oxc/oxc.c
deleted file mode 100644
index 6cc3cc5a3e..0000000000
--- a/board/oxc/oxc.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * (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
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-#include <i2c.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int checkboard (void)
-{
- puts ( "Board: OXC8240\n" );
- return 0;
-}
-
-long int initdram (int board_type)
-{
-#ifndef CFG_RAMBOOT
- long size;
- long new_bank0_end;
- long mear1;
- long emear1;
-
- size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
-
- new_bank0_end = size - 1;
- mear1 = mpc824x_mpc107_getreg(MEAR1);
- emear1 = mpc824x_mpc107_getreg(EMEAR1);
- mear1 = (mear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
- emear1 = (emear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
- mpc824x_mpc107_setreg(MEAR1, mear1);
- mpc824x_mpc107_setreg(EMEAR1, emear1);
-
- return (size);
-#else
- /* if U-Boot starts from RAM, then suppose we have 16Mb of RAM */
- return (16 << 20);
-#endif
-}
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_oxc_config_table[] = {
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x14, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x15, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
- PCI_ENET1_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { }
-};
-#endif
-
-static struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_oxc_config_table,
-#endif
-};
-
-void pci_init_board (void)
-{
- pci_mpc824x_init(&hose);
-}
-
-int board_early_init_f (void)
-{
- *(volatile unsigned char *)(CFG_CPLD_RESET) = 0x89;
- return 0;
-}
-
-#ifdef CONFIG_WATCHDOG
-void oxc_wdt_reset(void)
-{
- *(volatile unsigned char *)(CFG_CPLD_WATCHDOG) = 0xff;
-}
-
-void watchdog_reset(void)
-{
- int re_enable = disable_interrupts();
-
- oxc_wdt_reset();
- if (re_enable)
- enable_interrupts();
-}
-#endif
-
-static int oxc_get_expander(unsigned char addr, unsigned char * val)
-{
- return i2c_read(addr, 0, 0, val, 1);
-}
-
-static int oxc_set_expander(unsigned char addr, unsigned char val)
-{
- return i2c_write(addr, 0, 0, &val, 1);
-}
-
-static int expander0alive = 0;
-
-#ifdef CONFIG_SHOW_ACTIVITY
-static int ledtoggle = 0;
-static int ledstatus = 1;
-
-void oxc_toggle_activeled(void)
-{
- ledtoggle++;
-}
-
-void board_show_activity (ulong timestamp)
-{
- if ((timestamp % (CFG_HZ / 10)) == 0)
- oxc_toggle_activeled ();
-}
-
-void show_activity(int arg)
-{
- static unsigned char led = 0;
- unsigned char val;
-
- if (!expander0alive) return;
-
- if ((ledtoggle > (2 * arg)) && ledstatus) {
- led ^= 0x80;
- oxc_get_expander(CFG_I2C_EXPANDER0_ADDR, &val);
- udelay(200);
- oxc_set_expander(CFG_I2C_EXPANDER0_ADDR, (val & 0x7F) | led);
- ledtoggle = 0;
- }
-}
-#endif
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-void show_boot_progress(int arg)
-{
- unsigned char val;
-
- if (!expander0alive) return;
-
- if (arg > 0 && ledstatus) {
- ledstatus = 0;
- oxc_get_expander(CFG_I2C_EXPANDER0_ADDR, &val);
- udelay(200);
- oxc_set_expander(CFG_I2C_EXPANDER0_ADDR, val | 0x80);
- } else if (arg < 0) {
- oxc_get_expander(CFG_I2C_EXPANDER0_ADDR, &val);
- udelay(200);
- oxc_set_expander(CFG_I2C_EXPANDER0_ADDR, val & 0x7F);
- ledstatus = 1;
- }
-}
-#endif
-
-int misc_init_r (void)
-{
- /* check whether the i2c expander #0 is accessible */
- if (!oxc_set_expander(CFG_I2C_EXPANDER0_ADDR, 0x7F)) {
- udelay(200);
- expander0alive = 1;
- }
-
-#ifdef CFG_OXC_GENERATE_IP
- {
- char str[32];
- unsigned long ip = CFG_OXC_IPMASK;
- bd_t *bd = gd->bd;
-
- if (expander0alive) {
- unsigned char val;
-
- if (!oxc_get_expander(CFG_I2C_EXPANDER0_ADDR, &val)) {
- ip = (ip & 0xffffff00) | ((val & 0x7c) >> 2);
- }
- }
-
- if ((ip & 0xff) < 3) {
- /* if fail, set x.x.x.254 */
- ip = (ip & 0xffffff00) | 0xfe;
- }
-
- bd->bi_ip_addr = ip;
- sprintf(str, "%ld.%ld.%ld.%ld",
- (bd->bi_ip_addr & 0xff000000) >> 24,
- (bd->bi_ip_addr & 0x00ff0000) >> 16,
- (bd->bi_ip_addr & 0x0000ff00) >> 8,
- (bd->bi_ip_addr & 0x000000ff));
- setenv("ipaddr", str);
- printf("ip: %s\n", str);
- }
-#endif
- return (0);
-}
diff --git a/board/oxc/u-boot.lds b/board/oxc/u-boot.lds
deleted file mode 100644
index 2a5cd2ebd9..0000000000
--- a/board/oxc/u-boot.lds
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/pb1x00/Makefile b/board/pb1x00/Makefile
deleted file mode 100644
index f7d58416c9..0000000000
--- a/board/pb1x00/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-SOBJS = memsetup.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/pb1x00/README b/board/pb1x00/README
deleted file mode 100644
index b37ff3616b..0000000000
--- a/board/pb1x00/README
+++ /dev/null
@@ -1,63 +0,0 @@
-By Thomas.Lange@corelatus.se 2004-Oct-05
-----------------------------------------
-DbAu1xx0 are development boards from AMD containing
-an Alchemy AU1xx0 series cpu with mips32 core.
-Existing cpu:s are Au1000, Au1100, Au1500 and Au1550
-
-Limitations & comments
-----------------------
-Support was originally big endian only.
-I have not tested, but several u-boot users report working
-configurations in little endian mode.
-
-I named the board dbau1x00, to allow
-support for all three development boards
-( dbau1000, dbau1100 and dbau1500 ).
-Now there is a new board called dbau1550 also, which
-should be supported RSN.
-
-I only have a dbau1000, so my testing is limited
-to this board.
-
-The board has two different flash banks, that can
-be selected via dip switch. This makes it possible
-to test new bootloaders without thrashing the YAMON
-boot loader delivered with board.
-
-NOTE! When you switch between the two boot flashes, the
-base addresses will be swapped.
-Have this in mind when you compile u-boot. TEXT_BASE has
-to match the address where u-boot is located when you
-actually launch.
-
-Ethernet only supported for mac0.
-
-PCMCIA only supported for slot 0, only 3.3V.
-
-PCMCIA IDE tested with Sandisk Compact Flash and
-IBM microdrive.
-
-###################################
-######## NOTE!!!!!! #########
-###################################
-If you partition a disk on another system (e.g. laptop),
-all bytes will be swapped on 16bit level when using
-PCMCIA and running cpu in big endian mode!!!!
-
-This is probably due to an error in Au1000 chip.
-
-Solution:
-
-a) Boot via network and partition disk directly from
-dbau1x00. The endian will then be correct.
-
-b) Partition disk on "laptop" and fill it with all files
-you need. Then write a simple program that endian swaps
-whole disk,
-
-Example:
-Original "laptop" byte order:
-B0 B1 B2 B3 B4 B5 B6 B7 B8 B9...
-
-Dbau1000 byte order will then be:
-B1 B0 B3 B2 B5 B4 B7 B6 B9 B8...
diff --git a/board/pb1x00/config.mk b/board/pb1x00/config.mk
deleted file mode 100644
index 396a0454ad..0000000000
--- a/board/pb1x00/config.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# (C) Copyright 2003
-# 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
-#
-
-#
-# AMD development board AMD Alchemy Pb1x00, MIPS32 core
-#
-
-# ROM version
-#TEXT_BASE = 0xbfc00000
-
-# SDRAM version
-TEXT_BASE = 0x83800000
diff --git a/board/pb1x00/flash.c b/board/pb1x00/flash.c
deleted file mode 100644
index 3cf29e844b..0000000000
--- a/board/pb1x00/flash.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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 <common.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- printf ("Skipping flash_init\n");
- return (0);
-}
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- printf ("write_buff not implemented\n");
- return (-1);
-}
diff --git a/board/pb1x00/memsetup.S b/board/pb1x00/memsetup.S
deleted file mode 100644
index 44f02b9555..0000000000
--- a/board/pb1x00/memsetup.S
+++ /dev/null
@@ -1,392 +0,0 @@
-/* Memory sub-system initialization code */
-
-#include <config.h>
-#include <version.h>
-#include <asm/regdef.h>
-#include <asm/au1x00.h>
-#include <asm/mipsregs.h>
-
-#define AU1500_SYS_ADDR 0xB1900000
-#define sys_endian 0x0038
-#define CP0_Config0 $16
-#define MEM_1MS ((396000000/1000000) * 1000)
-
- .text
- .set noreorder
- .set mips32
-
- .globl memsetup
-memsetup:
- /*
- * Step 1) Establish CPU endian mode.
- * NOTE: A fair amount of code is necessary on the Pb1000 to
- * obtain the value of Switch S8.1 which is used to determine
- * endian at run-time.
- */
-
- /* RCE1 */
- li t0, MEM_STCFG1
- li t1, 0x00000083
- sw t1, 0(t0)
-
- li t0, MEM_STTIME1
- li t1, 0x33030A10
- sw t1, 0(t0)
-
- li t0, MEM_STADDR1
- li t1, 0x11803E40
- sw t1, 0(t0)
-
- /* Set DSTRB bits so switch will read correctly */
- li t1, 0xBE00000C
- lw t2, 0(t1)
- or t2, t2, 0x00000300
- sw t2, 0(t1)
-
- /* Check switch setting */
- li t1, 0xBE000014
- lw t2, 0(t1)
- and t2, t2, 0x00000100
- bne t2, zero, big_endian
- nop
-
-little_endian:
-
- /* Change Au1 core to little endian */
- li t0, AU1500_SYS_ADDR
- li t1, 1
- sw t1, sys_endian(t0)
- mfc0 t2, CP0_CONFIG
- mtc0 t2, CP0_CONFIG
- nop
- nop
-
- /* Big Endian is default so nothing to do but fall through */
-
-big_endian:
-
- /*
- * Step 2) Establish Status Register
- * (set BEV, clear ERL, clear EXL, clear IE)
- */
- li t1, 0x00400000
- mtc0 t1, CP0_STATUS
-
- /*
- * Step 3) Establish CP0 Config0
- * (set OD, set K0=3)
- */
- li t1, 0x00080003
- mtc0 t1, CP0_CONFIG
-
- /*
- * Step 4) Disable Watchpoint facilities
- */
- li t1, 0x00000000
- mtc0 t1, CP0_WATCHLO
- mtc0 t1, CP0_IWATCHLO
- /*
- * Step 5) Disable the performance counters
- */
- mtc0 zero, CP0_PERFORMANCE
- nop
-
- /*
- * Step 6) Establish EJTAG Debug register
- */
- mtc0 zero, CP0_DEBUG
- nop
-
- /*
- * Step 7) Establish Cause
- * (set IV bit)
- */
- li t1, 0x00800000
- mtc0 t1, CP0_CAUSE
-
- /* Establish Wired (and Random) */
- mtc0 zero, CP0_WIRED
- nop
-
- /* First setup pll:s to make serial work ok */
- /* We have a 12 MHz crystal */
- li t0, SYS_CPUPLL
- li t1, 0x21 /* 396 MHz */
- sw t1, 0(t0)
- sync
- nop
- nop
-
- /* wait 1mS for clocks to settle */
- li t1, MEM_1MS
-1: add t1, -1
- bne t1, zero, 1b
- nop
- /* Setup AUX PLL */
- li t0, SYS_AUXPLL
- li t1, 8 /* 96 MHz */
- sw t1, 0(t0) /* aux pll */
- sync
-
- /* Static memory controller */
-
- /* RCE0 8MB AMD29D323 Flash */
- li t0, MEM_STCFG0
- li t1, 0x00001403
- sw t1, 0(t0)
-
- li t0, MEM_STTIME0
- li t1, 0xFFFFFFDD
- sw t1, 0(t0)
-
- li t0, MEM_STADDR0
- li t1, 0x11F83FE0
- sw t1, 0(t0)
-
- /* RCE1 CPLD Board Logic */
- li t0, MEM_STCFG1
- li t1, 0x00000083
- sw t1, 0(t0)
-
- li t0, MEM_STTIME1
- li t1, 0x33030A10
- sw t1, 0(t0)
-
- li t0, MEM_STADDR1
- li t1, 0x11803E40
- sw t1, 0(t0)
-
- /* RCE2 CPLD Board Logic */
- li t0, MEM_STCFG2
- li t1, 0x00000004
- sw t1, 0(t0)
-
- li t0, MEM_STTIME2
- li t1, 0x08061908
- sw t1, 0(t0)
-
- li t0, MEM_STADDR2
- li t1, 0x12A03FC0
- sw t1, 0(t0)
-
- /* RCE3 PCMCIA 250ns */
- li t0, MEM_STCFG3
- li t1, 0x00000002
- sw t1, 0(t0)
-
- li t0, MEM_STTIME3
- li t1, 0x280E3E07
- sw t1, 0(t0)
-
- li t0, MEM_STADDR3
- li t1, 0x10000000
- sw t1, 0(t0)
-
- sync
-
- /* Set peripherals to a known state */
- li t0, IC0_CFG0CLR
- li t1, 0xFFFFFFFF
- sw t1, 0(t0)
-
- li t0, IC0_CFG0CLR
- sw t1, 0(t0)
-
- li t0, IC0_CFG1CLR
- sw t1, 0(t0)
-
- li t0, IC0_CFG2CLR
- sw t1, 0(t0)
-
- li t0, IC0_SRCSET
- sw t1, 0(t0)
-
- li t0, IC0_ASSIGNSET
- sw t1, 0(t0)
-
- li t0, IC0_WAKECLR
- sw t1, 0(t0)
-
- li t0, IC0_RISINGCLR
- sw t1, 0(t0)
-
- li t0, IC0_FALLINGCLR
- sw t1, 0(t0)
-
- li t0, IC0_TESTBIT
- li t1, 0x00000000
- sw t1, 0(t0)
- sync
-
- li t0, IC1_CFG0CLR
- li t1, 0xFFFFFFFF
- sw t1, 0(t0)
-
- li t0, IC1_CFG0CLR
- sw t1, 0(t0)
-
- li t0, IC1_CFG1CLR
- sw t1, 0(t0)
-
- li t0, IC1_CFG2CLR
- sw t1, 0(t0)
-
- li t0, IC1_SRCSET
- sw t1, 0(t0)
-
- li t0, IC1_ASSIGNSET
- sw t1, 0(t0)
-
- li t0, IC1_WAKECLR
- sw t1, 0(t0)
-
- li t0, IC1_RISINGCLR
- sw t1, 0(t0)
-
- li t0, IC1_FALLINGCLR
- sw t1, 0(t0)
-
- li t0, IC1_TESTBIT
- li t1, 0x00000000
- sw t1, 0(t0)
- sync
-
- li t0, SYS_FREQCTRL0
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_FREQCTRL1
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_CLKSRC
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_PININPUTEN
- li t1, 0x00000000
- sw t1, 0(t0)
- sync
-
- li t0, 0xB1100100
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, 0xB1400100
- li t1, 0x00000000
- sw t1, 0(t0)
-
-
- li t0, SYS_WAKEMSK
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, SYS_WAKESRC
- li t1, 0x00000000
- sw t1, 0(t0)
-
- /* wait 1mS before setup */
- li t1, MEM_1MS
-1: add t1, -1
- bne t1, zero, 1b
- nop
-
- /*
- * Skip memory setup if we are running from memory
- */
- li t0, 0x90000000
- sub t0, ra, t0
- bltz t0, skip_memsetup
- nop
-
- /*
- * SDCS0 - Not used, for SMROM
- * SDCS1 - 32MB Micron 48LCBM16A2
- * SDCS2 - 32MB Micron 48LCBM16A2
- */
- li t0, MEM_SDMODE0
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, MEM_SDMODE1
- li t1, 0x00552229
- sw t1, 0(t0)
-
- li t0, MEM_SDMODE2
- li t1, 0x00552229
- sw t1, 0(t0)
-
- li t0, MEM_SDADDR0
- li t1, 0x00000000
- sw t1, 0(t0)
-
- li t0, MEM_SDADDR1
- li t1, 0x001003F8
- sw t1, 0(t0)
-
- li t0, MEM_SDADDR2
- li t1, 0x001023F8
- sw t1, 0(t0)
-
- sync
-
- li t0, MEM_SDREFCFG
- li t1, 0x74000c30 /* Disable */
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDPRECMD
- sw zero, 0(t0)
- sync
-
- li t0, MEM_SDAUTOREF
- sw zero, 0(t0)
- sync
- sw zero, 0(t0)
- sync
-
- li t0, MEM_SDREFCFG
- li t1, 0x76000c30 /* Enable */
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD0
- li t1, 0x00000023
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD1
- li t1, 0x00000023
- sw t1, 0(t0)
- sync
-
- li t0, MEM_SDWRMD2
- li t1, 0x00000023
- sw t1, 0(t0)
- sync
-
- /* wait 1mS after setup */
- li t1, MEM_1MS
-1: add t1, -1
- bne t1, zero, 1b
- nop
-
-skip_memsetup:
-
- li t0, SYS_PINFUNC
- li t1, 0/*0x00008080*/
- sw t1, 0(t0)
-
- /*
- li t0, SYS_TRIOUTCLR
- li t1, 0x00001FFF
- sw t1, 0(t0)
-
- li t0, SYS_OUTPUTCLR
- li t1, 0x00008000
- sw t1, 0(t0)
- */
- sync
-
- j ra
- nop
diff --git a/board/pb1x00/pb1x00.c b/board/pb1x00/pb1x00.c
deleted file mode 100644
index 40ac2a4d7c..0000000000
--- a/board/pb1x00/pb1x00.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * (C) Copyright 2003
- * Thomas.Lange@corelatus.se
- *
- * 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 <common.h>
-#include <command.h>
-#include <asm/au1x00.h>
-#include <asm/mipsregs.h>
-
-long int initdram(int board_type)
-{
- /* Sdram is setup by assembler code */
- /* If memory could be changed, we should return the true value here */
- return 64*1024*1024;
-}
-
-#define BCSR_PCMCIA_PC0DRVEN 0x0010
-#define BCSR_PCMCIA_PC0RST 0x0080
-
-/* In cpu/mips/cpu.c */
-void write_one_tlb( int index, u32 pagemask, u32 hi, u32 low0, u32 low1 );
-
-int checkboard (void)
-{
- u16 status;
- /* volatile u32 *pcmcia_bcsr = (u32*)(DB1000_BCSR_ADDR+0x10); */
- volatile u32 *sys_counter = (volatile u32*)SYS_COUNTER_CNTRL;
- u32 proc_id;
-
- *sys_counter = 0x100; /* Enable 32 kHz oscillator for RTC/TOY */
-
- proc_id = read_32bit_cp0_register(CP0_PRID);
-
- switch (proc_id >> 24) {
- case 0:
- puts ("Board: Pb1000\n");
- printf ("CPU: Au1000 396 MHz, id: 0x%02x, rev: 0x%02x\n",
- (proc_id >> 8) & 0xFF, proc_id & 0xFF);
- break;
- case 1:
- puts ("Board: Pb1500\n");
- printf ("CPU: Au1500, id: 0x%02x, rev: 0x%02x\n",
- (proc_id >> 8) & 0xFF, proc_id & 0xFF);
- break;
- case 2:
- puts ("Board: Pb1100\n");
- printf ("CPU: Au1100, id: 0x%02x, rev: 0x%02x\n",
- (proc_id >> 8) & 0xFF, proc_id & 0xFF);
- break;
- default:
- printf ("Unsupported cpu %d, proc_id=0x%x\n", proc_id >> 24, proc_id);
- }
-#if defined(CONFIG_IDE_PCMCIA) && 0
- /* Enable 3.3 V on slot 0 ( VCC )
- No 5V */
- status = 4;
- *pcmcia_bcsr = status;
-
- status |= BCSR_PCMCIA_PC0DRVEN;
- *pcmcia_bcsr = status;
- au_sync();
-
- udelay(300*1000);
-
- status |= BCSR_PCMCIA_PC0RST;
- *pcmcia_bcsr = status;
- au_sync();
-
- udelay(100*1000);
-
- /* PCMCIA is on a 36 bit physical address.
- We need to map it into a 32 bit addresses */
-
-#if 0
- /* We dont need theese unless we run whole pcmcia package */
- write_one_tlb(20, /* index */
- 0x01ffe000, /* Pagemask, 16 MB pages */
- CFG_PCMCIA_IO_BASE, /* Hi */
- 0x3C000017, /* Lo0 */
- 0x3C200017); /* Lo1 */
-
- write_one_tlb(21, /* index */
- 0x01ffe000, /* Pagemask, 16 MB pages */
- CFG_PCMCIA_ATTR_BASE, /* Hi */
- 0x3D000017, /* Lo0 */
- 0x3D200017); /* Lo1 */
-#endif /* 0 */
- write_one_tlb(22, /* index */
- 0x01ffe000, /* Pagemask, 16 MB pages */
- CFG_PCMCIA_MEM_ADDR, /* Hi */
- 0x3E000017, /* Lo0 */
- 0x3E200017); /* Lo1 */
-#endif /* CONFIG_IDE_PCMCIA */
-
- return 0;
-}
diff --git a/board/pb1x00/u-boot.lds b/board/pb1x00/u-boot.lds
deleted file mode 100644
index a2d19a84c9..0000000000
--- a/board/pb1x00/u-boot.lds
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk 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_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
-*/
-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips")
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .sdata : { *(.sdata) }
-
- _gp = ALIGN(16);
-
- __got_start = .;
- .got : { *(.got) }
- __got_end = .;
-
- .sdata : { *(.sdata) }
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- uboot_end_data = .;
- num_got_entries = (__got_end - __got_start) >> 2;
-
- . = ALIGN(4);
- .sbss : { *(.sbss) }
- .bss : { *(.bss) }
- uboot_end = .;
-}
diff --git a/board/pcippc2/Makefile b/board/pcippc2/Makefile
deleted file mode 100644
index a6ae906de9..0000000000
--- a/board/pcippc2/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o cpc710_pci.o flash.o sconsole.o \
- fpga_serial.o pcippc2_fpga.o cpc710_init_ram.o i2c.o
-
-SOBJS =
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/pcippc2/config.mk b/board/pcippc2/config.mk
deleted file mode 100644
index 92d37c9366..0000000000
--- a/board/pcippc2/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (C) Copyright 2002
-# 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
-#
-
-#
-# PCIPPC-2 boards
-#
-
-TEXT_BASE = 0xfff00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/pcippc2/cpc710.h b/board/pcippc2/cpc710.h
deleted file mode 100644
index 81672709bb..0000000000
--- a/board/pcippc2/cpc710.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 _CPC710_H_
-#define _CPC710_H_
-
-/* Revision */
-#define CPC710_TYPE_100 0x80
-#define CPC710_TYPE_100P 0x90
-
-/* System control area */
-#define HW_PHYS_SCA 0xff000000
-
-#define HW_SCA_CPC0 0x000000
-#define HW_SCA_SDRAM0 0x000000
-#define HW_SCA_DMA0 0x1C0000
-
-#define HW_PHYS_CPC0 (HW_PHYS_SCA + HW_SCA_CPC0)
-#define HW_PHYS_SDRAM0 (HW_PHYS_SCA + HW_SCA_SDRAM0)
-
-#define HW_CPC0_PCICNFR 0x000c
-#define HW_CPC0_RSTR 0x0010
-#define HW_CPC0_SPOR 0x00e8
-#define HW_CPC0_UCTL 0x1000
-#define HW_CPC0_SIOC0 0x1020
-#define HW_CPC0_ABCNTL 0x1030
-#define HW_CPC0_SESR 0x1060
-#define HW_CPC0_SEAR 0x1070
-#define HW_CPC0_PGCHP 0x1100
-#define HW_CPC0_RGBAN0 0x1110
-#define HW_CPC0_RGBAN1 0x1120
-
-#define HW_CPC0_GPDIR 0x1130
-#define HW_CPC0_GPIN 0x1140
-#define HW_CPC0_GPOUT 0x1150
-
-#define HW_CPC0_ATAS 0x1160
-
-#define HW_CPC0_PCIBAR 0x200018
-#define HW_CPC0_PCIENB 0x201000
-
-#define HW_SDRAM0_MCCR 0x1200
-#define HW_SDRAM0_MESR 0x1220
-#define HW_SDRAM0_MEAR 0x1230
-
-#define HW_SDRAM0_MCER0 0x1300
-#define HW_SDRAM0_MCER1 0x1310
-#define HW_SDRAM0_MCER2 0x1320
-#define HW_SDRAM0_MCER3 0x1330
-#define HW_SDRAM0_MCER4 0x1340
-#define HW_SDRAM0_MCER5 0x1350
-#define HW_SDRAM0_MCER6 0x1360
-#define HW_SDRAM0_MCER7 0x1370
-
-#define HW_BRIDGE_PCIDG 0xf6120
-#define HW_BRIDGE_INTACK 0xf7700
-#define HW_BRIDGE_PIBAR 0xf7800
-#define HW_BRIDGE_PMBAR 0xf7810
-#define HW_BRIDGE_CRR 0xf7ef0
-#define HW_BRIDGE_PR 0xf7f20
-#define HW_BRIDGE_ACR 0xf7f30
-#define HW_BRIDGE_MSIZE 0xf7f40
-#define HW_BRIDGE_IOSIZE 0xf7f60
-#define HW_BRIDGE_SMBAR 0xf7f80
-#define HW_BRIDGE_SIBAR 0xf7fc0
-#define HW_BRIDGE_CFGADDR 0xf8000
-#define HW_BRIDGE_CFGDATA 0xf8010
-#define HW_BRIDGE_PSSIZE 0xf8100
-#define HW_BRIDGE_BARPS 0xf8120
-#define HW_BRIDGE_PSBAR 0xf8140
-
-/* Configuration space registers */
-#define CPC710_BUS_NUMBER 0x40
-#define CPC710_SUB_BUS_NUMBER 0x41
-
-#endif
diff --git a/board/pcippc2/cpc710_init_ram.c b/board/pcippc2/cpc710_init_ram.c
deleted file mode 100644
index 57ed8f087f..0000000000
--- a/board/pcippc2/cpc710_init_ram.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 <config.h>
-#include <common.h>
-#include <asm/io.h>
-
-#include "pcippc2.h"
-#include "i2c.h"
-
-typedef struct cpc710_mem_org_s
-{
- u8 rows;
- u8 cols;
- u8 banks2;
- u8 org;
-} cpc710_mem_org_t;
-
-static int cpc710_compute_mcer (u32 * mcer,
- unsigned long *
- size,
- unsigned int sdram);
-static int cpc710_eeprom_checksum (unsigned int sdram);
-static u8 cpc710_eeprom_read (unsigned int sdram,
- unsigned int offset);
-
-static u32 cpc710_mcer_mem [] =
-{
- 0x000003f3, /* 18 lines, 4 Mb */
- 0x000003e3, /* 19 lines, 8 Mb */
- 0x000003c3, /* 20 lines, 16 Mb */
- 0x00000383, /* 21 lines, 32 Mb */
- 0x00000303, /* 22 lines, 64 Mb */
- 0x00000203, /* 23 lines, 128 Mb */
- 0x00000003, /* 24 lines, 256 Mb */
- 0x00000002, /* 25 lines, 512 Mb */
- 0x00000001 /* 26 lines, 1024 Mb */
-};
-static cpc710_mem_org_t cpc710_mem_org [] =
-{
- { 0x0c, 0x09, 0x02, 0x00 }, /* 0000: 12/ 9/2 */
- { 0x0d, 0x09, 0x02, 0x00 }, /* 0000: 13/ 9/2 */
- { 0x0d, 0x0a, 0x02, 0x00 }, /* 0000: 13/10/2 */
- { 0x0d, 0x0b, 0x02, 0x00 }, /* 0000: 13/11/2 */
- { 0x0d, 0x0c, 0x02, 0x00 }, /* 0000: 13/12/2 */
- { 0x0e, 0x0c, 0x02, 0x00 }, /* 0000: 14/12/2 */
- { 0x0b, 0x08, 0x02, 0x01 }, /* 0001: 11/ 8/2 */
- { 0x0b, 0x09, 0x01, 0x02 }, /* 0010: 11/ 9/1 */
- { 0x0b, 0x0a, 0x01, 0x03 }, /* 0011: 11/10/1 */
- { 0x0c, 0x08, 0x02, 0x04 }, /* 0100: 12/ 8/2 */
- { 0x0c, 0x0a, 0x02, 0x05 }, /* 0101: 12/10/2 */
- { 0x0d, 0x08, 0x01, 0x06 }, /* 0110: 13/ 8/1 */
- { 0x0d, 0x08, 0x02, 0x07 }, /* 0111: 13/ 8/2 */
- { 0x0d, 0x09, 0x01, 0x08 }, /* 1000: 13/ 9/1 */
- { 0x0d, 0x0a, 0x01, 0x09 }, /* 1001: 13/10/1 */
- { 0x0b, 0x08, 0x01, 0x0a }, /* 1010: 11/ 8/1 */
- { 0x0c, 0x08, 0x01, 0x0b }, /* 1011: 12/ 8/1 */
- { 0x0c, 0x09, 0x01, 0x0c }, /* 1100: 12/ 9/1 */
- { 0x0e, 0x09, 0x02, 0x0d }, /* 1101: 14/ 9/2 */
- { 0x0e, 0x0a, 0x02, 0x0e }, /* 1110: 14/10/2 */
- { 0x0e, 0x0b, 0x02, 0x0f } /* 1111: 14/11/2 */
-};
-
-unsigned long cpc710_ram_init (void)
-{
- unsigned long memsize = 0;
- unsigned long bank_size;
- u32 mcer;
-
-#ifndef CFG_RAMBOOT
- /* Clear memory banks
- */
- out32(REG(SDRAM0, MCER0), 0);
- out32(REG(SDRAM0, MCER1), 0);
- out32(REG(SDRAM0, MCER2), 0);
- out32(REG(SDRAM0, MCER3), 0);
- out32(REG(SDRAM0, MCER4), 0);
- out32(REG(SDRAM0, MCER5), 0);
- out32(REG(SDRAM0, MCER6), 0);
- out32(REG(SDRAM0, MCER7), 0);
- iobarrier_rw();
-
- /* Disable memory
- */
- out32(REG(SDRAM0,MCCR), 0x13b06000);
- iobarrier_rw();
-#endif
-
- /* Only the first memory bank is initialised now
- */
- if (! cpc710_compute_mcer(& mcer, & bank_size, 0))
- {
- puts("Unsupported SDRAM type !\n");
- hang();
- }
- memsize += bank_size;
-#ifndef CFG_RAMBOOT
- /* Enable bank, zero start
- */
- out32(REG(SDRAM0, MCER0), mcer | 0x80000000);
- iobarrier_rw();
-#endif
-
-#ifndef CFG_RAMBOOT
- /* Enable memory
- */
- out32(REG(SDRAM0, MCCR), in32(REG(SDRAM0, MCCR)) | 0x80000000);
-
- /* Wait until initialisation finished
- */
- while (! (in32 (REG(SDRAM0, MCCR)) & 0x20000000))
- {
- iobarrier_rw();
- }
-
- /* Clear Memory Error Status and Address registers
- */
- out32(REG(SDRAM0, MESR), 0);
- out32(REG(SDRAM0, MEAR), 0);
- iobarrier_rw();
-
- /* ECC is not configured now
- */
-#endif
-
- /* Memory size counter
- */
- out32(REG(CPC0, RGBAN1), memsize);
-
- return memsize;
-}
-
-static int cpc710_compute_mcer (
- u32 * mcer,
- unsigned long * size,
- unsigned int sdram)
-{
- u8 rows;
- u8 cols;
- u8 banks2;
- unsigned int lines;
- u32 mc = 0;
- unsigned int i;
- cpc710_mem_org_t * org = 0;
-
-
- if (! i2c_reset())
- {
- puts("Can't reset I2C!\n");
- hang();
- }
-
- if (! cpc710_eeprom_checksum(sdram))
- {
- puts("Invalid EEPROM checksum !\n");
- hang();
- }
-
- rows = cpc710_eeprom_read(sdram, 3);
- cols = cpc710_eeprom_read(sdram, 4);
- /* Can be 2 or 4 banks; divide by 2
- */
- banks2 = cpc710_eeprom_read(sdram, 17) / 2;
-
- lines = rows + cols + banks2;
-
- if (lines < 18 || lines > 26)
- {
- /* Unsupported configuration
- */
- return 0;
- }
-
-
- mc |= cpc710_mcer_mem [lines - 18] << 6;
-
- for (i = 0; i < sizeof(cpc710_mem_org) / sizeof(cpc710_mem_org_t); i++)
- {
- cpc710_mem_org_t * corg = cpc710_mem_org + i;
-
- if (corg->rows == rows && corg->cols == cols && corg->banks2 == banks2)
- {
- org = corg;
-
- break;
- }
- }
-
- if (! org)
- {
- /* Unsupported configuration
- */
- return 0;
- }
-
- mc |= (u32) org->org << 2;
-
- /* Supported configuration
- */
- *mcer = mc;
- *size = 1l << (lines + 4);
-
- return 1;
-}
-
-static int cpc710_eeprom_checksum (
- unsigned int sdram)
-{
- u8 sum = 0;
- unsigned int i;
-
- for (i = 0; i < 63; i++)
- {
- sum += cpc710_eeprom_read(sdram, i);
- }
-
- return sum == cpc710_eeprom_read(sdram, 63);
-}
-
-static u8 cpc710_eeprom_read (
- unsigned int sdram,
- unsigned int offset)
-{
- u8 dev = (sdram << 1) | 0xa0;
- u8 data;
-
- if (! i2c_read_byte(& data, dev,offset))
- {
- puts("I2C error !\n");
- hang();
- }
-
- return data;
-}
diff --git a/board/pcippc2/cpc710_pci.c b/board/pcippc2/cpc710_pci.c
deleted file mode 100644
index bed8aeab09..0000000000
--- a/board/pcippc2/cpc710_pci.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 <config.h>
-#include <common.h>
-#include <asm/io.h>
-#include <pci.h>
-
-#include "hardware.h"
-#include "pcippc2.h"
-
-struct pci_controller local_hose, cpci_hose;
-
-static u32 cpc710_mapped_ram;
-
- /* Enable PCI retry timeouts
- */
-void cpc710_pci_enable_timeout (void)
-{
- out32(BRIDGE(LOCAL, CFGADDR), 0x50000080);
- iobarrier_rw();
- out32(BRIDGE(LOCAL, CFGDATA), 0x32000000);
- iobarrier_rw();
-
- out32(BRIDGE(CPCI, CFGADDR), 0x50000180);
- iobarrier_rw();
- out32(BRIDGE(CPCI, CFGDATA), 0x32000000);
- iobarrier_rw();
-}
-
-void cpc710_pci_init (void)
-{
- u32 sdram_size = pcippc2_sdram_size();
-
- cpc710_mapped_ram = sdram_size < PCI_MEMORY_MAXSIZE ?
- sdram_size : PCI_MEMORY_MAXSIZE;
-
- /* Select the local PCI
- */
- out32(REG(CPC0, PCICNFR), 0x80000002);
- iobarrier_rw();
-
- out32(REG(CPC0, PCIBAR), BRIDGE_LOCAL_PHYS);
- iobarrier_rw();
-
- /* Enable PCI bridge address decoding
- */
- out32(REG(CPC0, PCIENB), 0x80000000);
- iobarrier_rw();
-
- /* Select the CPCI bridge
- */
- out32(REG(CPC0, PCICNFR), 0x80000003);
- iobarrier_rw();
-
- out32(REG(CPC0, PCIBAR), BRIDGE_CPCI_PHYS);
- iobarrier_rw();
-
- /* Enable PCI bridge address decoding
- */
- out32(REG(CPC0, PCIENB), 0x80000000);
- iobarrier_rw();
-
- /* Disable configuration accesses
- */
- out32(REG(CPC0, PCICNFR), 0x80000000);
- iobarrier_rw();
-
- /* Initialise the local PCI
- */
- out32(BRIDGE(LOCAL, CRR), 0x7c000000);
- iobarrier_rw();
- out32(BRIDGE(LOCAL, PCIDG), 0x40000000);
- iobarrier_rw();
- out32(BRIDGE(LOCAL, PIBAR), BRIDGE_LOCAL_IO_BUS);
- out32(BRIDGE(LOCAL, SIBAR), BRIDGE_LOCAL_IO_PHYS);
- out32(BRIDGE(LOCAL, IOSIZE), -BRIDGE_LOCAL_IO_SIZE);
- iobarrier_rw();
- out32(BRIDGE(LOCAL, PMBAR), BRIDGE_LOCAL_MEM_BUS);
- out32(BRIDGE(LOCAL, SMBAR), BRIDGE_LOCAL_MEM_PHYS);
- out32(BRIDGE(LOCAL, MSIZE), -BRIDGE_LOCAL_MEM_SIZE);
- iobarrier_rw();
- out32(BRIDGE(LOCAL, PR), 0x00ffe000);
- iobarrier_rw();
- out32(BRIDGE(LOCAL, ACR), 0xfe000000);
- iobarrier_rw();
- out32(BRIDGE(LOCAL, PSBAR), PCI_MEMORY_BUS >> 24);
- out32(BRIDGE(LOCAL, BARPS), PCI_MEMORY_PHYS >> 24);
- out32(BRIDGE(LOCAL, PSSIZE), 256 - (cpc710_mapped_ram >> 24));
- iobarrier_rw();
-
- /* Initialise the CPCI bridge
- */
- out32(BRIDGE(CPCI, CRR), 0x7c000000);
- iobarrier_rw();
- out32(BRIDGE(CPCI, PCIDG), 0xC0000000);
- iobarrier_rw();
- out32(BRIDGE(CPCI, PIBAR), BRIDGE_CPCI_IO_BUS);
- out32(BRIDGE(CPCI, SIBAR), BRIDGE_CPCI_IO_PHYS);
- out32(BRIDGE(CPCI, IOSIZE), -BRIDGE_CPCI_IO_SIZE);
- iobarrier_rw();
- out32(BRIDGE(CPCI, PMBAR), BRIDGE_CPCI_MEM_BUS);
- out32(BRIDGE(CPCI, SMBAR), BRIDGE_CPCI_MEM_PHYS);
- out32(BRIDGE(CPCI, MSIZE), -BRIDGE_CPCI_MEM_SIZE);
- iobarrier_rw();
- out32(BRIDGE(CPCI, PR), 0x80ffe000);
- iobarrier_rw();
- out32(BRIDGE(CPCI, ACR), 0xdf000000);
- iobarrier_rw();
- out32(BRIDGE(CPCI, PSBAR), PCI_MEMORY_BUS >> 24);
- out32(BRIDGE(CPCI, BARPS), PCI_MEMORY_PHYS >> 24);
- out32(BRIDGE(CPCI, PSSIZE), 256 - (cpc710_mapped_ram >> 24));
- iobarrier_rw();
-
- /* Local PCI
- */
-
- out32(BRIDGE(LOCAL, CFGADDR), 0x04000080);
- iobarrier_rw();
- out32(BRIDGE(LOCAL, CFGDATA), 0x56010000);
- iobarrier_rw();
-
- out32(BRIDGE(LOCAL, CFGADDR), 0x0c000080);
- iobarrier_rw();
- out32(BRIDGE(LOCAL, CFGDATA), PCI_LATENCY_TIMER_VAL << 16);
- iobarrier_rw();
-
- /* Set bus and subbus numbers
- */
- out32(BRIDGE(LOCAL, CFGADDR), 0x40000080);
- iobarrier_rw();
- out32(BRIDGE(LOCAL, CFGDATA), 0x00000000);
- iobarrier_rw();
-
- out32(BRIDGE(LOCAL, CFGADDR), 0x50000080);
- iobarrier_rw();
- /* PCI retry timeouts will be enabled later
- */
- out32(BRIDGE(LOCAL, CFGDATA), 0x00000000);
- iobarrier_rw();
-
- /* CPCI
- */
-
- /* Set bus and subbus numbers
- */
- out32(BRIDGE(CPCI, CFGADDR), 0x40000080);
- iobarrier_rw();
- out32(BRIDGE(CPCI, CFGDATA), 0x01010000);
- iobarrier_rw();
-
- out32(BRIDGE(CPCI, CFGADDR), 0x04000180);
- iobarrier_rw();
- out32(BRIDGE(CPCI, CFGDATA), 0x56010000);
- iobarrier_rw();
-
- out32(BRIDGE(CPCI, CFGADDR), 0x0c000180);
- iobarrier_rw();
- out32(BRIDGE(CPCI, CFGDATA), PCI_LATENCY_TIMER_VAL << 16);
- iobarrier_rw();
-
- /* Write to the PSBAR */
- out32(BRIDGE(CPCI, CFGADDR), 0x10000180);
- iobarrier_rw();
- out32(BRIDGE(CPCI, CFGDATA), cpu_to_le32(PCI_MEMORY_BUS));
- iobarrier_rw();
-
- /* Set bus and subbus numbers
- */
- out32(BRIDGE(CPCI, CFGADDR), 0x40000180);
- iobarrier_rw();
- out32(BRIDGE(CPCI, CFGDATA), 0x01ff0000);
- iobarrier_rw();
-
- out32(BRIDGE(CPCI, CFGADDR), 0x50000180);
- iobarrier_rw();
- out32(BRIDGE(CPCI, CFGDATA), 0x32000000);
- /* PCI retry timeouts will be enabled later
- */
- out32(BRIDGE(CPCI, CFGDATA), 0x00000000);
- iobarrier_rw();
-
- /* Remove reset on the PCI buses
- */
- out32(BRIDGE(LOCAL, CRR), 0xfc000000);
- iobarrier_rw();
- out32(BRIDGE(CPCI, CRR), 0xfc000000);
- iobarrier_rw();
-
- local_hose.first_busno = 0;
- local_hose.last_busno = 0xff;
-
- /* System memory space */
- pci_set_region(local_hose.regions + 0,
- PCI_MEMORY_BUS,
- PCI_MEMORY_PHYS,
- PCI_MEMORY_MAXSIZE,
- PCI_REGION_MEM | PCI_REGION_MEMORY);
-
- /* PCI memory space */
- pci_set_region(local_hose.regions + 1,
- BRIDGE_LOCAL_MEM_BUS,
- BRIDGE_LOCAL_MEM_PHYS,
- BRIDGE_LOCAL_MEM_SIZE,
- PCI_REGION_MEM);
-
- /* PCI I/O space */
- pci_set_region(local_hose.regions + 2,
- BRIDGE_LOCAL_IO_BUS,
- BRIDGE_LOCAL_IO_PHYS,
- BRIDGE_LOCAL_IO_SIZE,
- PCI_REGION_IO);
-
- local_hose.region_count = 3;
-
- pci_setup_indirect(&local_hose,
- BRIDGE_LOCAL_PHYS + HW_BRIDGE_CFGADDR,
- BRIDGE_LOCAL_PHYS + HW_BRIDGE_CFGDATA);
-
- pci_register_hose(&local_hose);
-
- /* Initialize PCI32 bus registers */
- pci_hose_write_config_byte(&local_hose,
- PCI_BDF(local_hose.first_busno,0,0),
- CPC710_BUS_NUMBER,
- local_hose.first_busno);
- pci_hose_write_config_byte(&local_hose,
- PCI_BDF(local_hose.first_busno,0,0),
- CPC710_SUB_BUS_NUMBER,
- local_hose.last_busno);
-
- local_hose.last_busno = pci_hose_scan(&local_hose);
-
- /* Write out correct max subordinate bus number for local hose */
- pci_hose_write_config_byte(&local_hose,
- PCI_BDF(local_hose.first_busno,0,0),
- CPC710_SUB_BUS_NUMBER,
- local_hose.last_busno);
-
- cpci_hose.first_busno = local_hose.last_busno + 1;
- cpci_hose.last_busno = 0xff;
-
- /* System memory space */
- pci_set_region(cpci_hose.regions + 0,
- PCI_MEMORY_BUS,
- PCI_MEMORY_PHYS,
- PCI_MEMORY_MAXSIZE,
- PCI_REGION_MEMORY);
-
- /* PCI memory space */
- pci_set_region(cpci_hose.regions + 1,
- BRIDGE_CPCI_MEM_BUS,
- BRIDGE_CPCI_MEM_PHYS,
- BRIDGE_CPCI_MEM_SIZE,
- PCI_REGION_MEM);
-
- /* PCI I/O space */
- pci_set_region(cpci_hose.regions + 2,
- BRIDGE_CPCI_IO_BUS,
- BRIDGE_CPCI_IO_PHYS,
- BRIDGE_CPCI_IO_SIZE,
- PCI_REGION_IO);
-
- cpci_hose.region_count = 3;
-
- pci_setup_indirect(&cpci_hose,
- BRIDGE_CPCI_PHYS + HW_BRIDGE_CFGADDR,
- BRIDGE_CPCI_PHYS + HW_BRIDGE_CFGDATA);
-
- pci_register_hose(&cpci_hose);
-
- /* Initialize PCI64 bus registers */
- pci_hose_write_config_byte(&cpci_hose,
- PCI_BDF(cpci_hose.first_busno,0,0),
- CPC710_BUS_NUMBER,
- cpci_hose.first_busno);
- pci_hose_write_config_byte(&cpci_hose,
- PCI_BDF(cpci_hose.first_busno,0,0),
- CPC710_SUB_BUS_NUMBER,
- cpci_hose.last_busno);
-
- cpci_hose.last_busno = pci_hose_scan(&cpci_hose);
-
- /* Write out correct max subordinate bus number for cpci hose */
- pci_hose_write_config_byte(&cpci_hose,
- PCI_BDF(cpci_hose.first_busno,0,0),
- CPC710_SUB_BUS_NUMBER,
- cpci_hose.last_busno);
-}
diff --git a/board/pcippc2/cpc710_pci.h b/board/pcippc2/cpc710_pci.h
deleted file mode 100644
index 24d0db6345..0000000000
--- a/board/pcippc2/cpc710_pci.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 _CPC710_PCI_H_
-#define _CPC710_PCI_H_
-
-#define PCI_MEMORY_PHYS 0x00000000
-#define PCI_MEMORY_BUS 0x80000000
-#define PCI_MEMORY_MAXSIZE 0x20000000
-
-#define BRIDGE_CPCI_PHYS 0xff500000
-#define BRIDGE_CPCI_MEM_SIZE 0x08000000
-#define BRIDGE_CPCI_MEM_PHYS 0xf0000000
-#define BRIDGE_CPCI_MEM_BUS 0x00000000
-#define BRIDGE_CPCI_IO_SIZE 0x02000000
-#define BRIDGE_CPCI_IO_PHYS 0xfc000000
-#define BRIDGE_CPCI_IO_BUS 0x00000000
-
-#define BRIDGE_LOCAL_PHYS 0xff400000
-#define BRIDGE_LOCAL_MEM_SIZE 0x04000000
-#define BRIDGE_LOCAL_MEM_PHYS 0xf8000000
-#define BRIDGE_LOCAL_MEM_BUS 0x40000000
-#define BRIDGE_LOCAL_IO_SIZE 0x01000000
-#define BRIDGE_LOCAL_IO_PHYS 0xfe000000
-#define BRIDGE_LOCAL_IO_BUS 0x04000000
-
-#define BRIDGE(r, x) (BRIDGE_##r##_PHYS + HW_BRIDGE_##x)
-
-#define PCI_LATENCY_TIMER_VAL 0xff
-
-#endif
diff --git a/board/pcippc2/flash.c b/board/pcippc2/flash.c
deleted file mode 100644
index 8c01415fae..0000000000
--- a/board/pcippc2/flash.c
+++ /dev/null
@@ -1,573 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
- *
- * (C) Copyright 2002
- * 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 <config.h>
-#include <common.h>
-#include <flash.h>
-#include <asm/io.h>
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-static ulong flash_get_size (ulong addr, flash_info_t *info);
-static int flash_get_offsets (ulong base, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_reset (ulong addr);
-
-unsigned long flash_init (void)
-{
- unsigned int i;
- unsigned long flash_size = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = 0;
- flash_info[i].size = 0;
- }
-
- DEBUGF("\n## Get flash size @ 0x%08x\n", CFG_FLASH_BASE);
-
- flash_size = flash_get_size (CFG_FLASH_BASE, flash_info);
-
- DEBUGF("## Flash bank size: %08lx\n", flash_size);
-
- if (flash_size) {
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE && \
- CFG_MONITOR_BASE < CFG_FLASH_BASE + CFG_FLASH_MAX_SIZE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[0]);
-#endif
-
- } else {
- puts ("Warning: the BOOT Flash is not initialised !");
- }
-
- return flash_size;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (ulong addr, flash_info_t *info)
-{
- short i;
- uchar value;
-
- /* Write auto select command: read Manufacturer ID */
- out8(addr + 0x0555, 0xAA);
- iobarrier_rw();
- out8(addr + 0x02AA, 0x55);
- iobarrier_rw();
- out8(addr + 0x0555, 0x90);
- iobarrier_rw();
-
- value = in8(addr);
- iobarrier_rw();
-
- DEBUGF("Manuf. ID @ 0x%08lx: 0x%08x\n", (ulong)addr, value);
-
- switch (value | (value << 16)) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
-
- case STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- flash_reset (addr);
- return 0;
- }
-
- value = in8(addr + 1); /* device ID */
- iobarrier_rw();
-
- DEBUGF("Device ID @ 0x%08lx: 0x%08x\n", addr+1, value);
-
- switch ((ulong)value) {
- case AMD_ID_F040B:
- DEBUGF("Am29F040B\n");
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case AMD_ID_LV040B:
- DEBUGF("Am29LV040B\n");
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- case AMD_ID_LV400T:
- DEBUGF("Am29LV400T\n");
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- DEBUGF("Am29LV400B\n");
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- DEBUGF("Am29LV800T\n");
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- DEBUGF("Am29LV400B\n");
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- DEBUGF("Am29LV160T\n");
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- DEBUGF("Am29LV160B\n");
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV320T:
- DEBUGF("Am29LV320T\n");
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
-#if 0
- /* Has the same ID as AMD_ID_LV320T, to be fixed */
- case AMD_ID_LV320B:
- DEBUGF("Am29LV320B\n");
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
-
- case AMD_ID_LV033C:
- DEBUGF("Am29LV033C\n");
- info->flash_id += FLASH_AM033C;
- info->sector_count = 64;
- info->size = 0x01000000;
- break; /* => 16Mb */
-
- case STM_ID_F040B:
- DEBUGF("M29F040B\n");
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- flash_reset (addr);
- return (0); /* => no or unknown flash */
-
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- if (! flash_get_offsets (addr, info)) {
- flash_reset (addr);
- return 0;
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- value = in8(info->start[i] + 2);
- iobarrier_rw();
- info->protect[i] = (value & 1) != 0;
- }
-
- /*
- * Reset bank to read mode
- */
- flash_reset (addr);
-
- return (info->size);
-}
-
-static int flash_get_offsets (ulong base, flash_info_t *info)
-{
- unsigned int i;
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- /* set sector offsets for uniform sector type */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + i * info->size /
- info->sector_count;
- }
- break;
- default:
- return 0;
- }
-
- return 1;
-}
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile ulong addr = info->start[0];
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if (s_first < 0 || s_first > s_last) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- out8(addr + 0x555, 0xAA);
- iobarrier_rw();
- out8(addr + 0x2AA, 0x55);
- iobarrier_rw();
- out8(addr + 0x555, 0x80);
- iobarrier_rw();
- out8(addr + 0x555, 0xAA);
- iobarrier_rw();
- out8(addr + 0x2AA, 0x55);
- iobarrier_rw();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = info->start[sect];
- out8(addr, 0x30);
- iobarrier_rw();
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = info->start[l_sect];
-
- DEBUGF ("Start erase timeout: %d\n", CFG_FLASH_ERASE_TOUT);
-
- while ((in8(addr) & 0x80) != 0x80) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- flash_reset (info->start[0]);
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- iobarrier_rw();
- }
-
-DONE:
- /* reset to read mode */
- flash_reset (info->start[0]);
-
- printf (" done\n");
- return 0;
-}
-
-/*
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile ulong addr = info->start[0];
- ulong start;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((in32(dest) & data) != data) {
- return (2);
- }
-
- /* write each byte out */
- for (i = 0; i < 4; i++) {
- char *data_ch = (char *)&data;
- int flag = disable_interrupts();
-
- out8(addr + 0x555, 0xAA);
- iobarrier_rw();
- out8(addr + 0x2AA, 0x55);
- iobarrier_rw();
- out8(addr + 0x555, 0xA0);
- iobarrier_rw();
- out8(dest+i, data_ch[i]);
- iobarrier_rw();
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((in8(dest+i) & 0x80) != (data_ch[i] & 0x80)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- flash_reset (addr);
- return (1);
- }
- iobarrier_rw();
- }
- }
-
- flash_reset (addr);
- return (0);
-}
-
-/*
- * Reset bank to read mode
- */
-static void flash_reset (ulong addr)
-{
- out8(addr, 0xF0); /* reset bank */
- iobarrier_rw();
-}
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- case FLASH_MAN_STM: printf ("SGS THOMSON "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040: printf ("29F040 or 29LV040 (4 Mbit, uniform sectors)\n");
- break;
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size % 0x100000 == 0) {
- printf (" Size: %ld MB in %d Sectors\n",
- info->size / 0x100000, info->sector_count);
- } else if (info->size % 0x400 == 0) {
- printf (" Size: %ld KB in %d Sectors\n",
- info->size / 0x400, info->sector_count);
- } else {
- printf (" Size: %ld B in %d Sectors\n",
- info->size, info->sector_count);
- }
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
diff --git a/board/pcippc2/fpga_serial.c b/board/pcippc2/fpga_serial.c
deleted file mode 100644
index 5f89d9b125..0000000000
--- a/board/pcippc2/fpga_serial.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 <config.h>
-#include <common.h>
-#include <asm/io.h>
-
-#include "fpga_serial.h"
-#include "hardware.h"
-#include "pcippc2.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
- /* 8 data, 1 stop, no parity
- */
-#define LCRVAL 0x03
- /* RTS/DTR
- */
-#define MCRVAL 0x03
- /* Clear & enable FIFOs
- */
-#define FCRVAL 0x07
-
-static void fpga_serial_wait (void);
-static void fpga_serial_print (char c);
-
-void fpga_serial_init (int baudrate)
-{
- int clock_divisor = 115200 / baudrate;
-
- out8 (FPGA (INT, SERIAL_CONFIG), 0x24);
- iobarrier_rw ();
-
- fpga_serial_wait ();
-
- out8 (UART (IER), 0);
- out8 (UART (LCR), LCRVAL | 0x80);
- iobarrier_rw ();
- out8 (UART (DLL), clock_divisor & 0xff);
- out8 (UART (DLM), clock_divisor >> 8);
- iobarrier_rw ();
- out8 (UART (LCR), LCRVAL);
- iobarrier_rw ();
- out8 (UART (MCR), MCRVAL);
- out8 (UART (FCR), FCRVAL);
- iobarrier_rw ();
-}
-
-void fpga_serial_putc (char c)
-{
- if (c) {
- fpga_serial_print (c);
- }
-}
-
-void fpga_serial_puts (const char *s)
-{
- while (*s) {
- fpga_serial_print (*s++);
- }
-}
-
-int fpga_serial_getc (void)
-{
- while ((in8 (UART (LSR)) & 0x01) == 0);
-
- return in8 (UART (RBR));
-}
-
-int fpga_serial_tstc (void)
-{
- return (in8 (UART (LSR)) & 0x01) != 0;
-}
-
-void fpga_serial_setbrg (void)
-{
- int clock_divisor = 115200 / gd->baudrate;
-
- fpga_serial_wait ();
-
- out8 (UART (LCR), LCRVAL | 0x80);
- iobarrier_rw ();
- out8 (UART (DLL), clock_divisor & 0xff);
- out8 (UART (DLM), clock_divisor >> 8);
- iobarrier_rw ();
- out8 (UART (LCR), LCRVAL);
- iobarrier_rw ();
-}
-
-static void fpga_serial_wait (void)
-{
- while ((in8 (UART (LSR)) & 0x40) == 0);
-}
-
-static void fpga_serial_print (char c)
-{
- if (c == '\n') {
- while ((in8 (UART (LSR)) & 0x20) == 0);
-
- out8 (UART (THR), '\r');
- iobarrier_rw ();
- }
-
- while ((in8 (UART (LSR)) & 0x20) == 0);
-
- out8 (UART (THR), c);
- iobarrier_rw ();
-
- if (c == '\n') {
- fpga_serial_wait ();
- }
-}
diff --git a/board/pcippc2/fpga_serial.h b/board/pcippc2/fpga_serial.h
deleted file mode 100644
index 92c9cdd331..0000000000
--- a/board/pcippc2/fpga_serial.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 _FPGA_SERIAL_H_
-#define _FPGA_SERIAL_H_
-
-extern void fpga_serial_init (int);
-extern void fpga_serial_putc (char);
-extern void fpga_serial_puts (const char *);
-extern int fpga_serial_getc (void);
-extern int fpga_serial_tstc (void);
-extern void fpga_serial_setbrg (void);
-
-#endif
diff --git a/board/pcippc2/hardware.h b/board/pcippc2/hardware.h
deleted file mode 100644
index 489929dd0c..0000000000
--- a/board/pcippc2/hardware.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 _HARDWARE_H_
-#define _HARDWARE_H_
-
-#include "cpc710.h"
-#include "cpc710_pci.h"
-#include "pcippc2_fpga.h"
-#include "ns16550.h"
-
-#define REG(r, x) (HW_PHYS_##r + HW_##r##_##x)
-
- /* Address map:
- *
- * 0x00000000-0x20000000 SDRAM
- * 0x40000000-0x00008000 Init RAM in the CPU DCache
- * 0xf0000000-0xf8000000 CPCI MEM
- * 0xf8000000-0xfc000000 Local PCI MEM
- * 0xfc000000-0xfe000000 CPCI I/O
- * 0xfe000000-0xff000000 Local PCI I/O
- * 0xff000000-0xff201000 System configuration space
- * 0xff400000-0xff500000 Local PCI bridge space
- * 0xff500000-0xff600000 CPCI bridge space
- * 0xfff00000-0xfff80000 Boot Flash
- */
-
-#endif
diff --git a/board/pcippc2/i2c.c b/board/pcippc2/i2c.c
deleted file mode 100644
index 36b1d0f44d..0000000000
--- a/board/pcippc2/i2c.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 <config.h>
-#include <common.h>
-#include <asm/io.h>
-
-#include "hardware.h"
-#include "i2c.h"
-
-static void i2c_start (void);
-static void i2c_stop (void);
-static int i2c_write (u8 data);
-static void i2c_read (u8 * data);
-
-static inline void i2c_port_start (void);
-static inline void i2c_clock (unsigned int val);
-static inline void i2c_data (unsigned int val);
-static inline unsigned int
- i2c_in (void);
-static inline void i2c_write_bit (unsigned int val);
-static inline unsigned int
- i2c_read_bit (void);
-
-static inline void i2c_udelay (unsigned int time);
-
-int i2c_read_byte (
- u8 * data,
- u8 dev,
- u8 offset)
-{
- int err = 0;
-
- i2c_start();
-
- err = ! i2c_write(dev);
-
- if (! err)
- {
- err = ! i2c_write(offset);
- }
-
- if (! err)
- {
- i2c_start();
- }
-
- if (! err)
- {
- err = ! i2c_write(dev | 0x01);
- }
-
- if (! err)
- {
- i2c_read(data);
- }
-
- i2c_stop();
-
- return ! err;
-}
-
-static inline void i2c_udelay (
- unsigned int time)
-{
- int v;
-
- asm volatile("mtdec %0" : : "r" (time * ((CFG_BUS_CLK / 4) / 1000000)));
-
- do
- {
- asm volatile("isync; mfdec %0" : "=r" (v));
- } while (v >= 0);
-}
-
- /* Low-level hardware access
- */
-
-#define BIT_GPDATA 0x80000000
-#define BIT_GPCLK 0x40000000
-
-static inline void i2c_port_start (void)
-{
- out32(REG(CPC0, GPDIR), in32(REG(CPC0, GPDIR)) & ~(BIT_GPCLK | BIT_GPDATA));
- out32(REG(CPC0, GPOUT), in32(REG(CPC0, GPOUT)) & ~(BIT_GPCLK | BIT_GPDATA));
- iobarrier_rw();
-
- i2c_udelay(1);
-}
-
-static inline void i2c_clock (
- unsigned int val)
-{
- if (val)
- {
- out32(REG(CPC0, GPDIR), in32(REG(CPC0, GPDIR)) & ~BIT_GPCLK);
- }
- else
- {
- out32(REG(CPC0, GPDIR), in32(REG(CPC0, GPDIR)) | BIT_GPCLK);
- }
-
- iobarrier_rw();
-
- i2c_udelay(1);
-}
-
-static inline void i2c_data (
- unsigned int val)
-{
- if (val)
- {
- out32(REG(CPC0, GPDIR), in32(REG(CPC0, GPDIR)) & ~BIT_GPDATA);
- }
- else
- {
- out32(REG(CPC0, GPDIR), in32(REG(CPC0, GPDIR)) | BIT_GPDATA);
- }
-
- iobarrier_rw();
-
- i2c_udelay(1);
-}
-
-static inline unsigned int i2c_in (void)
-{
- unsigned int val = ((in32(REG(CPC0, GPIN)) & BIT_GPDATA) != 0)?1:0;
-
- iobarrier_rw();
-
- return val;
-}
-
-
- /* Protocol implementation
- */
-
-static inline void i2c_write_bit (
- unsigned int val)
-{
- i2c_data(val);
- i2c_udelay(10);
- i2c_clock(1);
- i2c_udelay(10);
- i2c_clock(0);
- i2c_udelay(10);
-}
-
-static inline unsigned int i2c_read_bit (void)
-{
- unsigned int val;
-
- i2c_data(1);
- i2c_udelay(10);
-
- i2c_clock(1);
- i2c_udelay(10);
-
- val = i2c_in();
-
- i2c_clock(0);
- i2c_udelay(10);
-
- return val;
-}
-
-unsigned int i2c_reset (void)
-{
- unsigned int val;
- int i;
-
- i2c_port_start();
-
- i=0;
- do {
- i2c_udelay(10);
- i2c_clock(0);
- i2c_udelay(10);
- i2c_clock(1);
- i2c_udelay(10);
- val = i2c_in();
- i++;
- } while ((i<9)&&(val==0));
- return (val);
-}
-
-
-static void i2c_start (void)
-{
- i2c_data(1);
- i2c_clock(1);
- i2c_udelay(10);
- i2c_data(0);
- i2c_udelay(10);
- i2c_clock(0);
- i2c_udelay(10);
-}
-
-static void i2c_stop (void)
-{
- i2c_data(0);
- i2c_udelay(10);
- i2c_clock(1);
- i2c_udelay(10);
- i2c_data(1);
- i2c_udelay(10);
-}
-
-static int i2c_write (
- u8 data)
-{
- unsigned int i;
-
- for (i = 0; i < 8; i++)
- {
- i2c_write_bit(data >> 7);
- data <<= 1;
- }
-
- return i2c_read_bit() == 0;
-}
-
-static void i2c_read (
- u8 * data)
-{
- unsigned int i;
- u8 val = 0;
-
- for (i = 0; i < 8; i++)
- {
- val <<= 1;
- val |= i2c_read_bit();
- }
-
- *data = val;
- i2c_write_bit(1); /* NoAck */
-}
diff --git a/board/pcippc2/i2c.h b/board/pcippc2/i2c.h
deleted file mode 100644
index 1224b42899..0000000000
--- a/board/pcippc2/i2c.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 _I2C_H_
-#define _I2C_H_
-
-#include <common.h>
-
-extern int i2c_read_byte (u8 * data,
- u8 dev,
- u8 offset);
-
-extern unsigned int i2c_reset (void);
-
-
-#endif
diff --git a/board/pcippc2/ns16550.h b/board/pcippc2/ns16550.h
deleted file mode 100644
index 7023f13a35..0000000000
--- a/board/pcippc2/ns16550.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 _NS16550_H_
-#define _NS16550_H_
-
-#define NS16550_RBR 0x00
-#define NS16550_IER 0x01
-#define NS16550_FCR 0x02
-#define NS16550_LCR 0x03
-#define NS16550_MCR 0x04
-#define NS16550_LSR 0x05
-#define NS16550_MSR 0x06
-#define NS16550_SCR 0x07
-
-#define NS16550_THR NS16550_RBR
-#define NS16550_IIR NS16550_FCR
-#define NS16550_DLL NS16550_RBR
-#define NS16550_DLM NS16550_IER
-
-#endif
diff --git a/board/pcippc2/pcippc2.c b/board/pcippc2/pcippc2.c
deleted file mode 100644
index a216c55bc6..0000000000
--- a/board/pcippc2/pcippc2.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 <config.h>
-#include <common.h>
-#include <command.h>
-#include <asm/io.h>
-#include <linux/mtd/doc2000.h>
-#include <watchdog.h>
-#include <pci.h>
-
-#include "hardware.h"
-#include "pcippc2.h"
-#include "sconsole.h"
-#include "fpga_serial.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if defined(CONFIG_WATCHDOG)
-
-static int pcippc2_wdt_init_done = 0;
-
-void pcippc2_wdt_init (void);
-
-#endif
-
- /* Check board identity
- */
-int checkboard (void)
-{
-#ifdef CONFIG_PCIPPC2
- puts ("Board: Gespac PCIPPC-2\n");
-#else
- puts ("Board: Gespac PCIPPC-6\n");
-#endif
- return 0;
-}
-
- /* RAM size is stored in CPC0_RGBAN1
- */
-u32 pcippc2_sdram_size (void)
-{
- return in32 (REG (CPC0, RGBAN1));
-}
-
-long initdram (int board_type)
-{
- return cpc710_ram_init ();
-}
-
-int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- out32 (REG (CPC0, SPOR), 0);
- iobarrier_rw ();
- while (1);
- /* notreached */
- return (-1);
-}
-
-int board_early_init_f (void)
-{
- out32 (REG (CPC0, RSTR), 0xC0000000);
- iobarrier_rw ();
-
- out32 (REG (CPC0, RSTR), 0xF0000000);
- iobarrier_rw ();
-
- out32 (REG (CPC0, UCTL), 0x00F80000);
-
- out32 (REG (CPC0, SIOC0), 0x30000000);
-
- out32 (REG (CPC0, ABCNTL), 0x00000000);
-
- out32 (REG (CPC0, SESR), 0x00000000);
- out32 (REG (CPC0, SEAR), 0x00000000);
-
- /* Detect IBM Avignon CPC710 Revision */
- if ((in32 (REG (CPC0, UCTL)) & 0x000000F0) == CPC710_TYPE_100P)
- out32 (REG (CPC0, PGCHP), 0xA0000040);
- else
- out32 (REG (CPC0, PGCHP), 0x80800040);
-
-
- out32 (REG (CPC0, ATAS), 0x709C2508);
-
- iobarrier_rw ();
-
- return 0;
-}
-
-void after_reloc (ulong dest_addr)
-{
- /* Jump to the main U-Boot board init code
- */
- board_init_r ((gd_t *)gd, dest_addr);
-}
-
-int misc_init_r (void)
-{
- pcippc2_fpga_init ();
-
- pcippc2_cpci3264_init ();
-
-#if defined(CONFIG_WATCHDOG)
- pcippc2_wdt_init ();
-#endif
-
- fpga_serial_init (sconsole_get_baudrate ());
-
- sconsole_putc = fpga_serial_putc;
- sconsole_puts = fpga_serial_puts;
- sconsole_getc = fpga_serial_getc;
- sconsole_tstc = fpga_serial_tstc;
- sconsole_setbrg = fpga_serial_setbrg;
-
- sconsole_flush ();
- return (0);
-}
-
-void pci_init_board (void)
-{
- cpc710_pci_init ();
-
- /* FPGA requires no retry timeouts to be enabled
- */
- cpc710_pci_enable_timeout ();
-}
-
-void doc_init (void)
-{
- doc_probe (pcippc2_fpga1_phys + HW_FPGA1_DOC);
-}
-
-void pcippc2_cpci3264_init (void)
-{
- pci_dev_t bdf = pci_find_device(FPGA_VENDOR_ID, FPGA_DEVICE_ID, 0);
-
- if (bdf == -1)
- {
- puts("Unable to find FPGA !\n");
- hang();
- }
-
- if((in32(pcippc2_fpga0_phys + HW_FPGA0_BOARD) & 0x01000000) == 0x01000000)
- /* 32-bits Compact PCI bus - LSB bit */
- {
- iobarrier_rw();
- out32(BRIDGE(CPCI, PCIDG), 0x40000000); /* 32-bits bridge, Pipeline */
- iobarrier_rw();
- }
-}
-
-#if defined(CONFIG_WATCHDOG)
-
-void pcippc2_wdt_init (void)
-{
- out16r (FPGA (WDT, PROG), 0xffff);
- out8 (FPGA (WDT, CTRL), 0x1);
-
- pcippc2_wdt_init_done = 1;
-}
-
-void pcippc2_wdt_done (void)
-{
- out8 (FPGA (WDT, CTRL), 0x0);
-
- pcippc2_wdt_init_done = 0;
-}
-
-void pcippc2_wdt_reset (void)
-{
- if (pcippc2_wdt_init_done == 1)
- out8 (FPGA (WDT, REFRESH), 0x56);
-}
-
-void watchdog_reset (void)
-{
- int re_enable = disable_interrupts ();
-
- pcippc2_wdt_reset ();
- if (re_enable)
- enable_interrupts ();
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-int do_wd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- switch (argc) {
- case 1:
- printf ("Watchdog timer status is %s\n",
- pcippc2_wdt_init_done == 1 ? "on" : "off");
-
- return 0;
- case 2:
- if (!strcmp(argv[1],"on")) {
- pcippc2_wdt_init();
- printf("Watchdog timer now is on\n");
-
- return 0;
-
- } else if (!strcmp(argv[1],"off")) {
- pcippc2_wdt_done();
- printf("Watchdog timer now is off\n");
-
- return 0;
-
- } else
- break;
- default:
- break;
- }
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
-}
-
-U_BOOT_CMD(
- wd, 2, 1, do_wd,
- "wd - check and set watchdog\n",
- "on - switch watchDog on\n"
- "wd off - switch watchdog off\n"
- "wd - print current status\n"
-);
-
-#endif /* CFG_CMD_BSP */
-#endif /* CONFIG_WATCHDOG */
diff --git a/board/pcippc2/pcippc2.h b/board/pcippc2/pcippc2.h
deleted file mode 100644
index 3820bbec61..0000000000
--- a/board/pcippc2/pcippc2.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 _PCIPPC2_H_
-#define _PCIPPC2_H_
-
-#include <config.h>
-#include <common.h>
-
-#include "hardware.h"
-
-#define FPGA(r, p) (pcippc2_fpga0_phys + HW_FPGA0_##r##_##p)
-#define UART(r) (pcippc2_fpga0_phys + HW_FPGA0_UART1 + NS16550_##r * 4)
-#define RTC(r) (pcippc2_fpga1_phys + HW_FPGA1_RTC + r)
-
-extern u32 pcippc2_fpga0_phys;
-extern u32 pcippc2_fpga1_phys;
-
-extern u32 pcippc2_sdram_size (void);
-
-extern void pcippc2_fpga_init (void);
-
-extern void pcippc2_cpci3264_init (void);
-
-extern void cpc710_pci_init (void);
-extern void cpc710_pci_enable_timeout (void);
-
-extern unsigned long
- cpc710_ram_init (void);
-
-#endif
diff --git a/board/pcippc2/pcippc2_fpga.c b/board/pcippc2/pcippc2_fpga.c
deleted file mode 100644
index 7f6739ddab..0000000000
--- a/board/pcippc2/pcippc2_fpga.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 <config.h>
-#include <common.h>
-#include <asm/io.h>
-
-#include "pci.h"
-
-#include "hardware.h"
-#include "pcippc2.h"
-
-u32 pcippc2_fpga0_phys;
-u32 pcippc2_fpga1_phys;
-
-void pcippc2_fpga_init (void)
-{
- pci_dev_t bdf = pci_find_device(FPGA_VENDOR_ID, FPGA_DEVICE_ID, 0);
- unsigned int addr;
- u16 cmd;
-
- if (bdf == -1)
- {
- puts("Unable to find FPGA !\n");
- hang();
- }
-
- pci_read_config_word(bdf, PCI_COMMAND, &cmd);
- if ((cmd & (PCI_COMMAND_MEMORY | PCI_COMMAND_IO)) != (PCI_COMMAND_MEMORY | PCI_COMMAND_IO))
- {
- puts("FPGA is not configured !\n");
- hang();
- }
-
- pci_read_config_dword(bdf, PCI_BASE_ADDRESS_0, &addr);
- if (addr & 0x1)
- {
- /* IO space
- */
- pcippc2_fpga0_phys = pci_io_to_phys(bdf, addr & 0xfffffffc);
- }
- else
- {
- /* Memory space
- */
- pcippc2_fpga0_phys = pci_mem_to_phys(bdf, addr & 0xfffffff0);
- }
-
- pci_read_config_dword(bdf, PCI_BASE_ADDRESS_1, &addr);
- if (addr & 0x1)
- {
- /* IO space
- */
- pcippc2_fpga1_phys = pci_io_to_phys(bdf, addr & 0xfffffffc);
- }
- else
- {
- /* Memory space
- */
- pcippc2_fpga1_phys = pci_mem_to_phys(bdf, addr & 0xfffffff0);
- }
-
- /* Interrupts are not used
- */
- out32(FPGA(INT, INTR_MASK), 0xffffffff);
- iobarrier_rw();
-}
diff --git a/board/pcippc2/pcippc2_fpga.h b/board/pcippc2/pcippc2_fpga.h
deleted file mode 100644
index 850c331973..0000000000
--- a/board/pcippc2/pcippc2_fpga.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 _PCIPPC2_FPGA_H_
-#define _PCIPPC2_FPGA_H_
-
-#define FPGA_VENDOR_ID 0x1310
-#define FPGA_DEVICE_ID 0x000d
-
-#define HW_FPGA0_INT 0x0000
-#define HW_FPGA0_BOARD 0x0060
-#define HW_FPGA0_UART1 0x0080
-#define HW_FPGA0_UART2 0x0100
-#define HW_FPGA0_RTC 0x2000
-#define HW_FPGA0_DOC 0x4000
-#define HW_FPGA1_RTC 0x0000
-#define HW_FPGA1_DOC 0x4000
-
-#define HW_FPGA0_INT_INTR_MASK 0x30
-#define HW_FPGA0_INT_INTR_STATUS 0x34
-#define HW_FPGA0_INT_INTR_EOI 0x40
-#define HW_FPGA0_INT_SERIAL_CONFIG 0x5c
-
-#define HW_FPGA0_WDT_CTRL 0x44
-#define HW_FPGA0_WDT_PROG 0x48
-#define HW_FPGA0_WDT_VAL 0x4c
-#define HW_FPGA0_WDT_REFRESH 0x50
-
-#endif
diff --git a/board/pcippc2/sconsole.c b/board/pcippc2/sconsole.c
deleted file mode 100644
index 3b190699f0..0000000000
--- a/board/pcippc2/sconsole.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 <config.h>
-#include <common.h>
-
-#include "sconsole.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-void (*sconsole_putc) (char) = 0;
-void (*sconsole_puts) (const char *) = 0;
-int (*sconsole_getc) (void) = 0;
-int (*sconsole_tstc) (void) = 0;
-void (*sconsole_setbrg) (void) = 0;
-
-int serial_init (void)
-{
- sconsole_buffer_t *sb = SCONSOLE_BUFFER;
-
- sb->pos = 0;
- sb->size = 0;
- sb->baud = gd->baudrate;
- sb->max_size = CFG_SCONSOLE_SIZE - sizeof (sconsole_buffer_t);
-
- return (0);
-}
-
-void serial_putc (char c)
-{
- if (sconsole_putc) {
- (*sconsole_putc) (c);
- } else {
- sconsole_buffer_t *sb = SCONSOLE_BUFFER;
-
- if (c) {
- sb->data[sb->pos++] = c;
- if (sb->pos == sb->max_size) {
- sb->pos = 0;
- }
- if (sb->size < sb->max_size) {
- sb->size++;
- }
- }
- }
-}
-
-void serial_puts (const char *s)
-{
- if (sconsole_puts) {
- (*sconsole_puts) (s);
- } else {
- sconsole_buffer_t *sb = SCONSOLE_BUFFER;
-
- while (*s) {
- sb->data[sb->pos++] = *s++;
- if (sb->pos == sb->max_size) {
- sb->pos = 0;
- }
- if (sb->size < sb->max_size) {
- sb->size++;
- }
- }
- }
-}
-
-int serial_getc (void)
-{
- if (sconsole_getc) {
- return (*sconsole_getc) ();
- } else {
- return 0;
- }
-}
-
-int serial_tstc (void)
-{
- if (sconsole_tstc) {
- return (*sconsole_tstc) ();
- } else {
- return 0;
- }
-}
-
-void serial_setbrg (void)
-{
- if (sconsole_setbrg) {
- (*sconsole_setbrg) ();
- } else {
- sconsole_buffer_t *sb = SCONSOLE_BUFFER;
-
- sb->baud = gd->baudrate;
- }
-}
-
-int sconsole_get_baudrate (void)
-{
- sconsole_buffer_t *sb = SCONSOLE_BUFFER;
-
- return sb->baud;
-}
-
-void sconsole_flush (void)
-{
- if (sconsole_putc) {
- sconsole_buffer_t *sb = SCONSOLE_BUFFER;
- unsigned int end = sb->pos < sb->size
- ? sb->pos + sb->max_size - sb->size
- : sb->pos - sb->size;
-
- while (sb->size) {
- (*sconsole_putc) (sb->data[end++]);
- if (end == sb->max_size) {
- end = 0;
- }
- sb->size--;
- }
- }
-}
diff --git a/board/pcippc2/sconsole.h b/board/pcippc2/sconsole.h
deleted file mode 100644
index 40fd75b81b..0000000000
--- a/board/pcippc2/sconsole.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 _SCONSOLE_H_
-#define _SCONSOLE_H_
-
-#include <config.h>
-
-typedef struct sconsole_buffer_s
-{
- unsigned long size;
- unsigned long max_size;
- unsigned long pos;
- unsigned long baud;
- char data [1];
-} sconsole_buffer_t;
-
-#define SCONSOLE_BUFFER ((sconsole_buffer_t *) CFG_SCONSOLE_ADDR)
-
-extern void (* sconsole_putc) (char);
-extern void (* sconsole_puts) (const char *);
-extern int (* sconsole_getc) (void);
-extern int (* sconsole_tstc) (void);
-extern void (* sconsole_setbrg) (void);
-
-extern void sconsole_flush (void);
-extern int sconsole_get_baudrate (void);
-
-#endif
diff --git a/board/pcippc2/u-boot.lds b/board/pcippc2/u-boot.lds
deleted file mode 100644
index 5c8cd5a882..0000000000
--- a/board/pcippc2/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
- *
- * (C) Copyright 2002
- * 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
- */
-
-/*
- * u-boot.lds - linker script for U-Boot on the Galileo Eval Board.
- */
-
-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/74xx_7xx/start.o (.text)
-
-/* store the environment in a seperate sector in the boot flash */
-/* . = env_offset; */
-/* common/environment.o(.text) */
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/pcs440ep/Makefile b/board/pcs440ep/Makefile
deleted file mode 100644
index 2a3cfbe1b3..0000000000
--- a/board/pcs440ep/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/pcs440ep/config.mk b/board/pcs440ep/config.mk
deleted file mode 100644
index 319c4fa214..0000000000
--- a/board/pcs440ep/config.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2006
-# 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
-#
-
-#
-# PCS440EP board
-#
-
-#TEXT_BASE = 0x00001000
-
-ifeq ($(ramsym),1)
-TEXT_BASE = 0xFBD00000
-else
-TEXT_BASE = 0xFFFA0000
-endif
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/pcs440ep/flash.c b/board/pcs440ep/flash.c
deleted file mode 100644
index ece54781b9..0000000000
--- a/board/pcs440ep/flash.c
+++ /dev/null
@@ -1,608 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@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 <common.h>
-#include <asm/processor.h>
-
-#ifndef CFG_FLASH_READ0
-#define CFG_FLASH_READ0 0x0000 /* 0 is standard */
-#define CFG_FLASH_READ1 0x0001 /* 1 is standard */
-#define CFG_FLASH_READ2 0x0002 /* 2 is standard */
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*
- * Functions
- */
-static int write_word(flash_info_t *info, ulong dest, ulong data);
-static ulong flash_get_size(vu_long *addr, flash_info_t *info);
-
-unsigned long flash_init(void)
-{
- unsigned long size_b0, size_b1;
- int i;
- unsigned long base_b0, base_b1;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- base_b0 = FLASH_BASE0_PRELIM;
- size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 << 20);
- }
-
- base_b1 = FLASH_BASE1_PRELIM;
- size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
- return (size_b0 + size_b1);
-}
-
-void flash_print_info(flash_info_t *info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_EXCEL: printf ("Excel Semiconductor "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM040: printf ("AM29LV040B (4 Mbit, uniform sector size)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 M, top sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 M, bottom sector)\n");
- break;
- case FLASH_AMDL322T: printf ("AM29DL322T (32 M, top sector)\n");
- break;
- case FLASH_AMDL322B: printf ("AM29DL322B (32 M, bottom sector)\n");
- break;
- case FLASH_AMDL323T: printf ("AM29DL323T (32 M, top sector)\n");
- break;
- case FLASH_AMDL323B: printf ("AM29DL323B (32 M, bottom sector)\n");
- break;
- case FLASH_SST020: printf ("SST39LF/VF020 (2 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST040: printf ("SST39LF/VF040 (4 Mbit, uniform sector size)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
-#ifdef CFG_FLASH_EMPTY_INFO
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++) {
- if (*flash++ != 0xffffffff) {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- /* print empty and read-only info */
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
-#else
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
-#endif
-
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size(vu_long *addr, flash_info_t *info)
-{
- short i;
- short n;
- volatile CFG_FLASH_WORD_SIZE value;
- ulong base = (ulong)addr;
- volatile CFG_FLASH_WORD_SIZE *addr2 = (volatile CFG_FLASH_WORD_SIZE *)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00900090;
-
- value = addr2[CFG_FLASH_READ0];
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (CFG_FLASH_WORD_SIZE)FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (CFG_FLASH_WORD_SIZE)SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case (CFG_FLASH_WORD_SIZE)EXCEL_MANUFACT:
- info->flash_id = FLASH_MAN_EXCEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[CFG_FLASH_READ1]; /* device ID */
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 0.5 MB */
- break;
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL322T:
- info->flash_id += FLASH_AMDL322T;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL322B:
- info->flash_id += FLASH_AMDL322B;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL323T:
- info->flash_id += FLASH_AMDL323T;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL323B:
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF020:
- info->flash_id += FLASH_SST020;
- info->sector_count = 64;
- info->size = 0x00040000;
- break; /* => 256 kB */
-
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF040:
- info->flash_id += FLASH_SST040;
- info->sector_count = 128;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00001000);
- } else if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324B)) {
- /* set sector offsets for bottom boot block type */
- for (i=0; i<8; ++i) { /* 8 x 8k boot sectors */
- info->start[i] = base;
- base += 8 << 10;
- }
- while (i < info->sector_count) { /* 64k regular sectors */
- info->start[i] = base;
- base += 64 << 10;
- ++i;
- }
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324T)) {
- /* set sector offsets for top boot block type */
- base += info->size;
- i = info->sector_count;
- for (n=0; n<8; ++n) { /* 8 x 8k boot sectors */
- base -= 8 << 10;
- --i;
- info->start[i] = base;
- }
- while (i > 0) { /* 64k regular sectors */
- base -= 64 << 10;
- --i;
- info->start[i] = base;
- }
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_AMD)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[CFG_FLASH_READ2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (CFG_FLASH_WORD_SIZE *)info->start[0];
- *addr2 = (CFG_FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *)(info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN)
- printf ("- missing\n");
- else
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect)
- if (info->protect[sect])
- prot++;
-
- if (prot)
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- else
- printf ("\n");
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *)(info->start[sect]);
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE)0x00300030; /* sector erase */
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- flag = 0;
- }
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((addr2[0] & (CFG_FLASH_WORD_SIZE)0x00800080) !=
- (CFG_FLASH_WORD_SIZE)0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT)
- return (1);
- }
- } else {
- if (sect == s_first) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- }
- addr2[0] = (CFG_FLASH_WORD_SIZE)0x00300030; /* sector erase */
- }
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (CFG_FLASH_WORD_SIZE *)(info->start[l_sect]);
- while ((addr[0] & (CFG_FLASH_WORD_SIZE)0x00800080) != (CFG_FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (CFG_FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (CFG_FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i)
- data = (data << 8) | *src++;
- if ((rc = write_word(info, wp, data)) != 0)
- return (rc);
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0)
- return (0);
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp)
- data = (data << 8) | (*(uchar *)cp);
-
- return (write_word(info, wp, data));
-}
-
-/*
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word(flash_info_t *info, ulong dest, ulong data)
-{
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *)(info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *)dest;
- volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *)&data;
- ulong start;
- int flag;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data)
- return (2);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- for (i=0; i<4/sizeof(CFG_FLASH_WORD_SIZE); i++) {
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (CFG_FLASH_WORD_SIZE)0x00800080) !=
- (data2[i] & (CFG_FLASH_WORD_SIZE)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT)
- return (1);
- }
- }
-
- return (0);
-}
diff --git a/board/pcs440ep/init.S b/board/pcs440ep/init.S
deleted file mode 100644
index 0eee4d8099..0000000000
--- a/board/pcs440ep/init.S
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@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 <ppc_asm.tmpl>
-#include <config.h>
-
-/* General */
-#define TLB_VALID 0x00000200
-
-/* Supported page sizes */
-
-#define SZ_1K 0x00000000
-#define SZ_4K 0x00000010
-#define SZ_16K 0x00000020
-#define SZ_64K 0x00000030
-#define SZ_256K 0x00000040
-#define SZ_1M 0x00000050
-#define SZ_8M 0x00000060
-#define SZ_16M 0x00000070
-#define SZ_256M 0x00000090
-
-/* Storage attributes */
-#define SA_W 0x00000800 /* Write-through */
-#define SA_I 0x00000400 /* Caching inhibited */
-#define SA_M 0x00000200 /* Memory coherence */
-#define SA_G 0x00000100 /* Guarded */
-#define SA_E 0x00000080 /* Endian */
-
-/* Access control */
-#define AC_X 0x00000024 /* Execute */
-#define AC_W 0x00000012 /* Write */
-#define AC_R 0x00000009 /* Read */
-
-/* Some handy macros */
-
-#define EPN(e) ((e) & 0xfffffc00)
-#define TLB0(epn,sz) ( (EPN((epn)) | (sz) | TLB_VALID ) )
-#define TLB1(rpn,erpn) ( ((rpn)&0xfffffc00) | (erpn) )
-#define TLB2(a) ( (a)&0x00000fbf )
-
-#define tlbtab_start\
- mflr r1 ;\
- bl 0f ;
-
-#define tlbtab_end\
- .long 0, 0, 0 ; \
-0: mflr r0 ; \
- mtlr r1 ; \
- blr ;
-
-#define tlbentry(epn,sz,rpn,erpn,attr)\
- .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr)
-
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- * Pointer to the table is returned in r1
- *
- *************************************************************************/
-
- .section .bootpg,"ax"
- .globl tlbtab
-
-tlbtab:
- tlbtab_start
-
- /*
- * BOOT_CS (FLASH) must be first. Before relocation SA_I can be off to use the
- * speed up boot process. It is patched after relocation to enable SA_I
- */
- tlbentry( CFG_BOOT_BASE_ADDR, SZ_256M, CFG_BOOT_BASE_ADDR, 0, AC_R|AC_W|AC_X|SA_G/*|SA_I*/)
-
- /* TLB-entry for init-ram in dcache (SA_I must be turned off!) */
- tlbentry( CFG_INIT_RAM_ADDR, SZ_64K, CFG_INIT_RAM_ADDR, 0, AC_R|AC_W|AC_X|SA_G )
-
- tlbentry( CFG_SDRAM_BASE, SZ_256M, CFG_SDRAM_BASE, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
- tlbentry( CFG_PCI_BASE, SZ_256M, CFG_PCI_BASE, 0, AC_R|AC_W|SA_G|SA_I )
-
- /* PCI */
- tlbentry( CFG_PCI_MEMBASE, SZ_256M, CFG_PCI_MEMBASE, 0, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_PCI_MEMBASE1, SZ_256M, CFG_PCI_MEMBASE1, 0, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_PCI_MEMBASE2, SZ_256M, CFG_PCI_MEMBASE2, 0, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_PCI_MEMBASE3, SZ_256M, CFG_PCI_MEMBASE3, 0, AC_R|AC_W|SA_G|SA_I )
-
- /* USB 2.0 Device */
- tlbentry( CFG_USB_DEVICE, SZ_1K, 0x50000000, 0, AC_R|AC_W|SA_G|SA_I )
-
- tlbtab_end
diff --git a/board/pcs440ep/pcs440ep.c b/board/pcs440ep/pcs440ep.c
deleted file mode 100644
index 8858f0a5e5..0000000000
--- a/board/pcs440ep/pcs440ep.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@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 <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-#include <spd_sdram.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-static void set_leds(int val)
-{
- unsigned char led[16] = {0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe,
- 0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf};
- out32(GPIO0_OR, (in32(GPIO0_OR) & ~0x78000000) | (led[val] << 27));
-}
-
-int board_early_init_f(void)
-{
- register uint reg;
-
- set_leds(0); /* display boot info counter */
-
- /*--------------------------------------------------------------------
- * Setup the external bus controller/chip selects
- *-------------------------------------------------------------------*/
- mtdcr(ebccfga, xbcfg);
- reg = mfdcr(ebccfgd);
- mtdcr(ebccfgd, reg | 0x04000000); /* Set ATC */
-
- /*--------------------------------------------------------------------
- * GPIO's are alreay setup in cpu/ppc4xx/cpu_init.c
- * via define from board config file.
- *-------------------------------------------------------------------*/
-
- /*--------------------------------------------------------------------
- * Setup the interrupt controller polarities, triggers, etc.
- *-------------------------------------------------------------------*/
- mtdcr(uic0sr, 0xffffffff); /* clear all */
- mtdcr(uic0er, 0x00000000); /* disable all */
- mtdcr(uic0cr, 0x00000001); /* UIC1 crit is critical */
- mtdcr(uic0pr, 0xfffffe1f); /* per ref-board manual */
- mtdcr(uic0tr, 0x01c00000); /* per ref-board manual */
- mtdcr(uic0vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr(uic0sr, 0xffffffff); /* clear all */
-
- mtdcr(uic1sr, 0xffffffff); /* clear all */
- mtdcr(uic1er, 0x00000000); /* disable all */
- mtdcr(uic1cr, 0x00000000); /* all non-critical */
- mtdcr(uic1pr, 0xffffe0ff); /* per ref-board manual */
- mtdcr(uic1tr, 0x00ffc000); /* per ref-board manual */
- mtdcr(uic1vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr(uic1sr, 0xffffffff); /* clear all */
-
- /*--------------------------------------------------------------------
- * Setup other serial configuration
- *-------------------------------------------------------------------*/
- mfsdr(sdr_pci0, reg);
- mtsdr(sdr_pci0, 0x80000000 | reg); /* PCI arbiter enabled */
- mtsdr(sdr_pfc0, 0x00000100); /* Pin function: enable GPIO49-63 */
- mtsdr(sdr_pfc1, 0x00048000); /* Pin function: UART0 has 4 pins, select IRQ5 */
-
- return 0;
-}
-
-int misc_init_r (void)
-{
- uint pbcr;
- int size_val = 0;
-
- /* Re-do sizing to get full correct info */
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- switch (gd->bd->bi_flashsize) {
- case 1 << 20:
- size_val = 0;
- break;
- case 2 << 20:
- size_val = 1;
- break;
- case 4 << 20:
- size_val = 2;
- break;
- case 8 << 20:
- size_val = 3;
- break;
- case 16 << 20:
- size_val = 4;
- break;
- case 32 << 20:
- size_val = 5;
- break;
- case 64 << 20:
- size_val = 6;
- break;
- case 128 << 20:
- size_val = 7;
- break;
- }
- pbcr = (pbcr & 0x0001ffff) | gd->bd->bi_flashstart | (size_val << 17);
- mtdcr(ebccfga, pb0cr);
- mtdcr(ebccfgd, pbcr);
-
- /* adjust flash start and offset */
- gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
- gd->bd->bi_flashoffset = 0;
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- -CFG_MONITOR_LEN,
- 0xffffffff,
- &flash_info[1]);
-
- /* Env protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + 2*CFG_ENV_SECT_SIZE - 1,
- &flash_info[1]);
-
- return 0;
-}
-
-int checkboard(void)
-{
- char *s = getenv("serial#");
-
- printf("Board: PCS440EP");
- if (s != NULL) {
- puts(", serial# ");
- puts(s);
- }
- putc('\n');
-
- return (0);
-}
-
-long int initdram (int board_type)
-{
- long dram_size = 0;
-
- set_leds(1); /* display boot info counter */
- dram_size = spd_sdram();
- set_leds(2); /* display boot info counter */
-
- return dram_size;
-}
-
-#if defined(CFG_DRAM_TEST)
-int testdram(void)
-{
- unsigned long *mem = (unsigned long *)0;
- const unsigned long kend = (1024 / sizeof(unsigned long));
- unsigned long k, n;
-
- mtmsr(0);
-
- for (k = 0; k < CFG_KBYTES_SDRAM;
- ++k, mem += (1024 / sizeof(unsigned long))) {
- if ((k & 1023) == 0) {
- printf("%3d MB\r", k / 1024);
- }
-
- memset(mem, 0xaaaaaaaa, 1024);
- for (n = 0; n < kend; ++n) {
- if (mem[n] != 0xaaaaaaaa) {
- printf("SDRAM test fails at: %08x\n",
- (uint) & mem[n]);
- return 1;
- }
- }
-
- memset(mem, 0x55555555, 1024);
- for (n = 0; n < kend; ++n) {
- if (mem[n] != 0x55555555) {
- printf("SDRAM test fails at: %08x\n",
- (uint) & mem[n]);
- return 1;
- }
- }
- }
- printf("SDRAM test passes\n");
- return 0;
-}
-#endif
-
-/*************************************************************************
- * pci_pre_init
- *
- * This routine is called just prior to registering the hose and gives
- * the board the opportunity to check things. Returning a value of zero
- * indicates that things are bad & PCI initialization should be aborted.
- *
- * Different boards may wish to customize the pci controller structure
- * (add regions, override default access routines, etc) or perform
- * certain pre-initialization actions.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
-int pci_pre_init(struct pci_controller *hose)
-{
- unsigned long addr;
-
- /*-------------------------------------------------------------------------+
- | Set priority for all PLB3 devices to 0.
- | Set PLB3 arbiter to fair mode.
- +-------------------------------------------------------------------------*/
- mfsdr(sdr_amp1, addr);
- mtsdr(sdr_amp1, (addr & 0x000000FF) | 0x0000FF00);
- addr = mfdcr(plb3_acr);
- mtdcr(plb3_acr, addr | 0x80000000);
-
- /*-------------------------------------------------------------------------+
- | Set priority for all PLB4 devices to 0.
- +-------------------------------------------------------------------------*/
- mfsdr(sdr_amp0, addr);
- mtsdr(sdr_amp0, (addr & 0x000000FF) | 0x0000FF00);
- addr = mfdcr(plb4_acr) | 0xa0000000; /* Was 0x8---- */
- mtdcr(plb4_acr, addr);
-
- /*-------------------------------------------------------------------------+
- | Set Nebula PLB4 arbiter to fair mode.
- +-------------------------------------------------------------------------*/
- /* Segment0 */
- addr = (mfdcr(plb0_acr) & ~plb0_acr_ppm_mask) | plb0_acr_ppm_fair;
- addr = (addr & ~plb0_acr_hbu_mask) | plb0_acr_hbu_enabled;
- addr = (addr & ~plb0_acr_rdp_mask) | plb0_acr_rdp_4deep;
- addr = (addr & ~plb0_acr_wrp_mask) | plb0_acr_wrp_2deep;
- mtdcr(plb0_acr, addr);
-
- /* Segment1 */
- addr = (mfdcr(plb1_acr) & ~plb1_acr_ppm_mask) | plb1_acr_ppm_fair;
- addr = (addr & ~plb1_acr_hbu_mask) | plb1_acr_hbu_enabled;
- addr = (addr & ~plb1_acr_rdp_mask) | plb1_acr_rdp_4deep;
- addr = (addr & ~plb1_acr_wrp_mask) | plb1_acr_wrp_2deep;
- mtdcr(plb1_acr, addr);
-
- return 1;
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT) */
-
-/*************************************************************************
- * pci_target_init
- *
- * The bootstrap configuration provides default settings for the pci
- * inbound map (PIM). But the bootstrap config choices are limited and
- * may not be sufficient for a given board.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT)
-void pci_target_init(struct pci_controller *hose)
-{
- /*--------------------------------------------------------------------------+
- * Set up Direct MMIO registers
- *--------------------------------------------------------------------------*/
- /*--------------------------------------------------------------------------+
- | PowerPC440 EP PCI Master configuration.
- | Map one 1Gig range of PLB/processor addresses to PCI memory space.
- | PLB address 0xA0000000-0xDFFFFFFF ==> PCI address 0xA0000000-0xDFFFFFFF
- | Use byte reversed out routines to handle endianess.
- | Make this region non-prefetchable.
- +--------------------------------------------------------------------------*/
- out32r(PCIX0_PMM0MA, 0x00000000); /* PMM0 Mask/Attribute - disabled b4 setting */
- out32r(PCIX0_PMM0LA, CFG_PCI_MEMBASE); /* PMM0 Local Address */
- out32r(PCIX0_PMM0PCILA, CFG_PCI_MEMBASE); /* PMM0 PCI Low Address */
- out32r(PCIX0_PMM0PCIHA, 0x00000000); /* PMM0 PCI High Address */
- out32r(PCIX0_PMM0MA, 0xE0000001); /* 512M + No prefetching, and enable region */
-
- out32r(PCIX0_PMM1MA, 0x00000000); /* PMM0 Mask/Attribute - disabled b4 setting */
- out32r(PCIX0_PMM1LA, CFG_PCI_MEMBASE2); /* PMM0 Local Address */
- out32r(PCIX0_PMM1PCILA, CFG_PCI_MEMBASE2); /* PMM0 PCI Low Address */
- out32r(PCIX0_PMM1PCIHA, 0x00000000); /* PMM0 PCI High Address */
- out32r(PCIX0_PMM1MA, 0xE0000001); /* 512M + No prefetching, and enable region */
-
- out32r(PCIX0_PTM1MS, 0x00000001); /* Memory Size/Attribute */
- out32r(PCIX0_PTM1LA, 0); /* Local Addr. Reg */
- out32r(PCIX0_PTM2MS, 0); /* Memory Size/Attribute */
- out32r(PCIX0_PTM2LA, 0); /* Local Addr. Reg */
-
- /*--------------------------------------------------------------------------+
- * Set up Configuration registers
- *--------------------------------------------------------------------------*/
-
- /* Program the board's subsystem id/vendor id */
- pci_write_config_word(0, PCI_SUBSYSTEM_VENDOR_ID,
- CFG_PCI_SUBSYS_VENDORID);
- pci_write_config_word(0, PCI_SUBSYSTEM_ID, CFG_PCI_SUBSYS_ID);
-
- /* Configure command register as bus master */
- pci_write_config_word(0, PCI_COMMAND, PCI_COMMAND_MASTER);
-
- /* 240nS PCI clock */
- pci_write_config_word(0, PCI_LATENCY_TIMER, 1);
-
- /* No error reporting */
- pci_write_config_word(0, PCI_ERREN, 0);
-
- pci_write_config_dword(0, PCI_BRDGOPT2, 0x00000101);
-
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT) */
-
-/*************************************************************************
- * pci_master_init
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_MASTER_INIT)
-void pci_master_init(struct pci_controller *hose)
-{
- unsigned short temp_short;
-
- /*--------------------------------------------------------------------------+
- | Write the PowerPC440 EP PCI Configuration regs.
- | Enable PowerPC440 EP to be a master on the PCI bus (PMM).
- | Enable PowerPC440 EP to act as a PCI memory target (PTM).
- +--------------------------------------------------------------------------*/
- pci_read_config_word(0, PCI_COMMAND, &temp_short);
- pci_write_config_word(0, PCI_COMMAND,
- temp_short | PCI_COMMAND_MASTER |
- PCI_COMMAND_MEMORY);
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_MASTER_INIT) */
-
-/*************************************************************************
- * is_pci_host
- *
- * This routine is called to determine if a pci scan should be
- * performed. With various hardware environments (especially cPCI and
- * PPMC) it's insufficient to depend on the state of the arbiter enable
- * bit in the strap register, or generic host/adapter assumptions.
- *
- * Rather than hard-code a bad assumption in the general 440 code, the
- * 440 pci code requires the board to decide at runtime.
- *
- * Return 0 for adapter mode, non-zero for host (monarch) mode.
- *
- *
- ************************************************************************/
-#if defined(CONFIG_PCI)
-int is_pci_host(struct pci_controller *hose)
-{
- /* PCS440EP is always configured as host. */
- return (1);
-}
-#endif /* defined(CONFIG_PCI) */
-
-/*************************************************************************
- * hw_watchdog_reset
- *
- * This routine is called to reset (keep alive) the watchdog timer
- *
- ************************************************************************/
-#if defined(CONFIG_HW_WATCHDOG)
-void hw_watchdog_reset(void)
-{
-
-}
-#endif
diff --git a/board/pcs440ep/u-boot.lds b/board/pcs440ep/u-boot.lds
deleted file mode 100644
index 6ab476ab14..0000000000
--- a/board/pcs440ep/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (C) Copyright 2006
- * 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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- .bootpg 0xFFFFF000 :
- {
- cpu/ppc4xx/start.o (.bootpg)
- } = 0xffff
-
- /* 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/ppc4xx/start.o (.text)
- board/pcs440ep/init.o (.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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/pleb2/Makefile b/board/pleb2/Makefile
deleted file mode 100644
index fef0eb3094..0000000000
--- a/board/pleb2/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := pleb2.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/pleb2/config.mk b/board/pleb2/config.mk
deleted file mode 100644
index 6958a636a6..0000000000
--- a/board/pleb2/config.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-TEXT_BASE = 0xa1F80000
-#TEXT_BASE = 0xa3080000
-#TEXT_BASE = 0
diff --git a/board/pleb2/flash.c b/board/pleb2/flash.c
deleted file mode 100644
index 97271d921e..0000000000
--- a/board/pleb2/flash.c
+++ /dev/null
@@ -1,814 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-/* environment.h defines the various CFG_ENV_... values in terms
- * of whichever ones are given in the configuration file.
- */
-#include <environment.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* NOTE - CONFIG_FLASH_16BIT means the CPU interface is 16-bit, it
- * has nothing to do with the flash chip being 8-bit or 16-bit.
- */
-#ifdef CONFIG_FLASH_16BIT
-typedef unsigned short FLASH_PORT_WIDTH;
-typedef volatile unsigned short FLASH_PORT_WIDTHV;
-
-#define FLASH_ID_MASK 0xFFFF
-#else
-typedef unsigned long FLASH_PORT_WIDTH;
-typedef volatile unsigned long FLASH_PORT_WIDTHV;
-
-#define FLASH_ID_MASK 0xFFFFFFFF
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define ORMASK(size) ((-size) & OR_AM_MSK)
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPWV * addr, flash_info_t * info);
-static void flash_reset (flash_info_t * info);
-static int write_word_intel (flash_info_t * info, FPWV * dest, FPW data);
-static int write_word_amd (flash_info_t * info, FPWV * dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-#ifdef CFG_FLASH_PROTECTION
-static void flash_sync_real_protect (flash_info_t * info);
-#endif
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- unsigned long size_b;
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- size_b = flash_get_size ((FPW *) CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size_b;
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx\n",
- size_b);
- }
-
- /* Do this again (was done already in flast_get_size), just
- * in case we move it when remap the FLASH.
- */
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#ifdef CFG_FLASH_PROTECTION
- /* read the hardware protection status (if any) into the
- * protection array in flash_info.
- */
- flash_sync_real_protect (&flash_info[0]);
-#endif
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_ADDR
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_ADDR_REDUND
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE_REDUND - 1,
- &flash_info[0]);
-#endif
-
- return (size_b);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset (flash_info_t * info)
-{
- FPWV *base = (FPWV *) (info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- *base = (FPW) 0x00FF00FF; /* Intel Read Mode */
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
- *base = (FPW) 0x00F000F0; /* AMD Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL
- && (info->flash_id & FLASH_BTYPE)) {
- int bootsect_size; /* number of bytes/boot sector */
- int sect_size; /* number of bytes/regular sector */
-
- bootsect_size = 0x00002000 * (sizeof (FPW) / 2);
- sect_size = 0x00010000 * (sizeof (FPW) / 2);
-
- /* set sector offsets for bottom boot block type */
- for (i = 0; i < 8; ++i) {
- info->start[i] = base + (i * bootsect_size);
- }
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + ((i - 7) * sect_size);
- }
- } else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD
- && (info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U) {
-
- int sect_size; /* number of bytes/sector */
-
- sect_size = 0x00010000 * (sizeof (FPW) / 2);
-
- /* set up sector start address table (uniform sector type) */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * sect_size);
- } else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD
- && (info->flash_id & FLASH_TYPEMASK) == FLASH_AM800T) {
-
- int sect_size; /* number of bytes/sector */
-
- sect_size = 0x00010000 * (sizeof (FPW) / 2);
-
- /* set up sector start address table (top boot sector type) */
- for (i = 0; i < info->sector_count - 3; i++)
- info->start[i] = base + (i * sect_size);
- i = info->sector_count - 1;
- info->start[i--] =
- base + (info->size - 0x00004000) * (sizeof (FPW) / 2);
- info->start[i--] =
- base + (info->size - 0x00006000) * (sizeof (FPW) / 2);
- info->start[i--] =
- base + (info->size - 0x00008000) * (sizeof (FPW) / 2);
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t * info)
-{
- int i;
- uchar *boottype;
- uchar *bootletter;
- uchar *fmt;
- uchar botbootletter[] = "B";
- uchar topbootletter[] = "T";
- uchar botboottype[] = "bottom boot sector";
- uchar topboottype[] = "top boot sector";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- case FLASH_MAN_BM:
- printf ("BRIGHT MICRO ");
- break;
- case FLASH_MAN_FUJ:
- printf ("FUJITSU ");
- break;
- case FLASH_MAN_SST:
- printf ("SST ");
- break;
- case FLASH_MAN_STM:
- printf ("STM ");
- break;
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- /* check for top or bottom boot, if it applies */
- if (info->flash_id & FLASH_BTYPE) {
- boottype = botboottype;
- bootletter = botbootletter;
- } else {
- boottype = topboottype;
- bootletter = topbootletter;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM800T:
- fmt = "29LV800B%s (8 Mbit, %s)\n";
- break;
- case FLASH_AM640U:
- fmt = "29LV641D (64 Mbit, uniform sectors)\n";
- break;
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- fmt = "28F800C3%s (8 Mbit, %s)\n";
- break;
- case FLASH_INTEL800B:
- case FLASH_INTEL800T:
- fmt = "28F800B3%s (8 Mbit, %s)\n";
- break;
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- fmt = "28F160C3%s (16 Mbit, %s)\n";
- break;
- case FLASH_INTEL160B:
- case FLASH_INTEL160T:
- fmt = "28F160B3%s (16 Mbit, %s)\n";
- break;
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- fmt = "28F320C3%s (32 Mbit, %s)\n";
- break;
- case FLASH_INTEL320B:
- case FLASH_INTEL320T:
- fmt = "28F320B3%s (32 Mbit, %s)\n";
- break;
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- fmt = "28F640C3%s (64 Mbit, %s)\n";
- break;
- case FLASH_INTEL640B:
- case FLASH_INTEL640T:
- fmt = "28F640B3%s (64 Mbit, %s)\n";
- break;
- default:
- fmt = "Unknown Chip Type\n";
- break;
- }
-
- printf (fmt, bootletter, boottype);
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
-
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size (FPWV * addr, flash_info_t * info)
-{
- /* Write auto select command: read Manufacturer ID */
-
- /* Write auto select command sequence and test FLASH answer */
- addr[0x0555] = (FPW) 0x00AA00AA; /* for AMD, Intel ignores this */
- addr[0x02AA] = (FPW) 0x00550055; /* for AMD, Intel ignores this */
- addr[0x0555] = (FPW) 0x00900090; /* selects Intel or AMD */
-
- /* The manufacturer codes are only 1 byte, so just use 1 byte.
- * This works for any bus width and any FLASH device width.
- */
- switch (addr[0] & 0xff) {
-
- case (uchar) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case (uchar) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- /* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */
- if (info->flash_id != FLASH_UNKNOWN)
- switch (addr[1]) {
-
- case (FPW) AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000 * (sizeof (FPW) / 2);
- break; /* => 1 or 2 MiB */
-
- case (FPW) AMD_ID_LV640U: /* 29LV640 and 29LV641 have same ID */
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x00800000 * (sizeof (FPW) / 2);
- break; /* => 8 or 16 MB */
-
- case (FPW) INTEL_ID_28F800C3B:
- info->flash_id += FLASH_28F800C3B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof (FPW) / 2);
- break; /* => 1 or 2 MB */
-
- case (FPW) INTEL_ID_28F800B3B:
- info->flash_id += FLASH_INTEL800B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof (FPW) / 2);
- break; /* => 1 or 2 MB */
-
- case (FPW) INTEL_ID_28F160C3B:
- info->flash_id += FLASH_28F160C3B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof (FPW) / 2);
- break; /* => 2 or 4 MB */
-
- case (FPW) INTEL_ID_28F160B3B:
- info->flash_id += FLASH_INTEL160B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof (FPW) / 2);
- break; /* => 2 or 4 MB */
-
- case (FPW) INTEL_ID_28F320C3B:
- info->flash_id += FLASH_28F320C3B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof (FPW) / 2);
- break; /* => 4 or 8 MB */
-
- case (FPW) INTEL_ID_28F320B3B:
- info->flash_id += FLASH_INTEL320B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof (FPW) / 2);
- break; /* => 4 or 8 MB */
-
- case (FPW) INTEL_ID_28F640C3B:
- info->flash_id += FLASH_28F640C3B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof (FPW) / 2);
- break; /* => 8 or 16 MB */
-
- case (FPW) INTEL_ID_28F640B3B:
- info->flash_id += FLASH_INTEL640B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof (FPW) / 2);
- break; /* => 8 or 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* => no or unknown flash */
- }
-
- flash_get_offsets ((ulong) addr, info);
-
- /* Put FLASH back in read mode */
- flash_reset (info);
-
- return (info->size);
-}
-
-#ifdef CFG_FLASH_PROTECTION
-/*-----------------------------------------------------------------------
- */
-
-static void flash_sync_real_protect (flash_info_t * info)
-{
- FPWV *addr = (FPWV *) (info->start[0]);
- FPWV *sect;
- int i;
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- /* check for protected sectors */
- *addr = (FPW) 0x00900090;
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02.
- * D0 = 1 for each device if protected.
- * If at least one device is protected the sector is marked
- * protected, but mixed protected and unprotected devices
- * within a sector should never happen.
- */
- sect = (FPWV *) (info->start[i]);
- info->protect[i] =
- (sect[2] & (FPW) (0x00010001)) ? 1 : 0;
- }
-
- /* Put FLASH back in read mode */
- flash_reset (info);
- break;
-
- case FLASH_AM640U:
- case FLASH_AM800T:
- default:
- /* no hardware protect that we support */
- break;
- }
-}
-#endif
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- FPWV *addr;
- int flag, prot, sect;
- int intel = (info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL;
- ulong now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_INTEL800B:
- case FLASH_INTEL160B:
- case FLASH_INTEL320B:
- case FLASH_INTEL640B:
- case FLASH_28F800C3B:
- case FLASH_28F160C3B:
- case FLASH_28F320C3B:
- case FLASH_28F640C3B:
- case FLASH_AM640U:
- case FLASH_AM800T:
- break;
- case FLASH_UNKNOWN:
- default:
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- reset_timer_masked ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && rcode == 0; sect++) {
-
- if (info->protect[sect] != 0) /* protected, skip it */
- continue;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- reset_timer_masked ();
- last = 0;
-
- addr = (FPWV *) (info->start[sect]);
- if (intel) {
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
- } else {
- /* must be AMD style if not Intel */
- FPWV *base; /* first address in bank */
-
- base = (FPWV *) (info->start[0]);
- base[0x0555] = (FPW) 0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW) 0x00550055; /* unlock */
- base[0x0555] = (FPW) 0x00800080; /* erase mode */
- base[0x0555] = (FPW) 0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW) 0x00550055; /* unlock */
- *addr = (FPW) 0x00300030; /* erase sector */
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 50us for AMD, 80us for Intel.
- * Let's wait 1 ms.
- */
- udelay (1000);
-
- while ((*addr & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if ((now =
- get_timer_masked ()) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
-
- if (intel) {
- /* suspend erase */
- *addr = (FPW) 0x00B000B0;
- }
-
- flash_reset (info); /* reset to read mode */
- rcode = 1; /* failed */
- break;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1 * CFG_HZ) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- flash_reset (info); /* reset to read mode */
- }
-
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof (data), left -= sizeof (data) - bytes) {
-
- bytes = addr & (sizeof (data) - 1);
- addr &= ~(sizeof (data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits
- */
-#ifdef CFG_LITTLE_ENDIAN
- for (i = 0; i < sizeof (data); i++) {
- data >>= 8;
- if (i < bytes || i - bytes >= left)
- data += (*((uchar *) addr + i)) << 24;
- else
- data += (*src++) << 24;
- }
-#else
- for (i = 0; i < sizeof (data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left)
- data += *((uchar *) addr + i);
- else
- data += *src++;
- }
-#endif
-
- /* write one word to the flash */
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- res = write_word_amd (info, (FPWV *) addr, data);
- break;
- case FLASH_MAN_INTEL:
- res = write_word_intel (info, (FPWV *) addr, data);
- break;
- default:
- /* unknown flash type, error! */
- printf ("missing or unknown FLASH type\n");
- res = 1; /* not really a timeout, but gives error */
- break;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd (flash_info_t * info, FPWV * dest, FPW data)
-{
- int flag;
- int res = 0; /* result, assume success */
- FPWV *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
-
- base = (FPWV *) (info->start[0]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- base[0x0555] = (FPW) 0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW) 0x00550055; /* unlock */
- base[0x0555] = (FPW) 0x00A000A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- reset_timer_masked ();
-
- /* data polling for D7 */
- while (res == 0
- && (*dest & (FPW) 0x00800080) != (data & (FPW) 0x00800080)) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW) 0x00F000F0; /* reset bank */
- res = 1;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for Intel FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_intel (flash_info_t * info, FPWV * dest, FPW data)
-{
- int flag;
- int res = 0; /* result, assume success */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *dest = (FPW) 0x00500050; /* clear status register */
- *dest = (FPW) 0x00FF00FF; /* make sure in read mode */
- *dest = (FPW) 0x00400040; /* program setup */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- reset_timer_masked ();
-
- while (res == 0 && (*dest & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW) 0x00B000B0; /* Suspend program */
- res = 1;
- }
- }
-
- if (res == 0 && (*dest & (FPW) 0x00100010))
- res = 1; /* write failed, time out error is close enough */
-
- *dest = (FPW) 0x00500050; /* clear status register */
- *dest = (FPW) 0x00FF00FF; /* make sure in read mode */
-
- return (res);
-}
-
-#ifdef CFG_FLASH_PROTECTION
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect (flash_info_t * info, long sector, int prot)
-{
- int rcode = 0; /* assume success */
- FPWV *addr; /* address of sector */
- FPW value;
-
- addr = (FPWV *) (info->start[sector]);
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- flash_reset (info); /* make sure in read mode */
- *addr = (FPW) 0x00600060L; /* lock command setup */
- if (prot)
- *addr = (FPW) 0x00010001L; /* lock sector */
- else
- *addr = (FPW) 0x00D000D0L; /* unlock sector */
- flash_reset (info); /* reset to read mode */
-
- /* now see if it really is locked/unlocked as requested */
- *addr = (FPW) 0x00900090;
- /* read sector protection at sector address, (A7 .. A0) = 0x02.
- * D0 = 1 for each device if protected.
- * If at least one device is protected the sector is marked
- * protected, but return failure. Mixed protected and
- * unprotected devices within a sector should never happen.
- */
- value = addr[2] & (FPW) 0x00010001;
- if (value == 0)
- info->protect[sector] = 0;
- else if (value == (FPW) 0x00010001)
- info->protect[sector] = 1;
- else {
- /* error, mixed protected and unprotected */
- rcode = 1;
- info->protect[sector] = 1;
- }
- if (info->protect[sector] != prot)
- rcode = 1; /* failed to protect/unprotect as requested */
-
- /* reload all protection bits from hardware for now */
- flash_sync_real_protect (info);
- break;
-
- case FLASH_AM640U:
- case FLASH_AM800T:
- default:
- /* no hardware protect that we support */
- info->protect[sector] = prot;
- break;
- }
-
- return rcode;
-}
-#endif
diff --git a/board/pleb2/lowlevel_init.S b/board/pleb2/lowlevel_init.S
deleted file mode 100644
index add2c531ab..0000000000
--- a/board/pleb2/lowlevel_init.S
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
- * Most of this taken from Redboot hal_platform_setup.h with cleanup
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-DRAM_SIZE: .long CFG_DRAM_SIZE
-
-/* wait for coprocessor write complete */
- .macro CPWAIT reg
- mrc p15,0,\reg,c2,c0,0
- mov \reg,\reg
- sub pc,pc,#4
- .endm
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
- /* Set up GPIO pins first */
-
- ldr r0, =GPSR0
- ldr r1, =CFG_GPSR0_VAL
- str r1, [r0]
-
- ldr r0, =GPSR1
- ldr r1, =CFG_GPSR1_VAL
- str r1, [r0]
-
- ldr r0, =GPSR2
- ldr r1, =CFG_GPSR2_VAL
- str r1, [r0]
-
- ldr r0, =GPCR0
- ldr r1, =CFG_GPCR0_VAL
- str r1, [r0]
-
- ldr r0, =GPCR1
- ldr r1, =CFG_GPCR1_VAL
- str r1, [r0]
-
- ldr r0, =GPCR2
- ldr r1, =CFG_GPCR2_VAL
- str r1, [r0]
-
- ldr r0, =GRER0
- ldr r1, =CFG_GRER0_VAL
- str r1, [r0]
-
- ldr r0, =GRER1
- ldr r1, =CFG_GRER1_VAL
- str r1, [r0]
-
- ldr r0, =GRER2
- ldr r1, =CFG_GRER2_VAL
- str r1, [r0]
-
- ldr r0, =GFER0
- ldr r1, =CFG_GFER0_VAL
- str r1, [r0]
-
- ldr r0, =GFER1
- ldr r1, =CFG_GFER1_VAL
- str r1, [r0]
-
- ldr r0, =GFER2
- ldr r1, =CFG_GFER2_VAL
- str r1, [r0]
-
- ldr r0, =GPDR0
- ldr r1, =CFG_GPDR0_VAL
- str r1, [r0]
-
- ldr r0, =GPDR1
- ldr r1, =CFG_GPDR1_VAL
- str r1, [r0]
-
- ldr r0, =GPDR2
- ldr r1, =CFG_GPDR2_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_L
- ldr r1, =CFG_GAFR0_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_U
- ldr r1, =CFG_GAFR0_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_L
- ldr r1, =CFG_GAFR1_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_U
- ldr r1, =CFG_GAFR1_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_L
- ldr r1, =CFG_GAFR2_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_U
- ldr r1, =CFG_GAFR2_U_VAL
- str r1, [r0]
-
- /* enable GPIO pins */
- ldr r0, =PSSR
- ldr r1, =CFG_PSSR_VAL
- str r1, [r0]
-
-
-/*********************************************************************
- Initlialize Memory Controller
-
- See PXA250 Operating System Developer's Guide
-
- pause for 200 uSecs- allow internal clocks to settle
- *Note: only need this if hard reset... doing it anyway for now
-*/
-
- @ Step 1
- @ ---- Wait 200 usec
- ldr r3, =OSCR @ reset the OS Timer Count to zero
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 @ really 0x2E1 is about 200usec, so 0x300 should be plenty
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-mem_init:
- @ get memory controller base address
- ldr r1, =MEMC_BASE
-
-@****************************************************************************
-@ Step 2
-@
-
- @ Step 2a
- @ write msc0, read back to ensure data latches
- @
- ldr r2, =CFG_MSC0_VAL
- str r2, [r1, #MSC0_OFFSET]
- ldr r2, [r1, #MSC0_OFFSET]
-
- @ write msc1
- ldr r2, =CFG_MSC1_VAL
- str r2, [r1, #MSC1_OFFSET]
- ldr r2, [r1, #MSC1_OFFSET]
-
- @ write msc2
- ldr r2, =CFG_MSC2_VAL
- str r2, [r1, #MSC2_OFFSET]
- ldr r2, [r1, #MSC2_OFFSET]
-
-
-@ Step 2b
- @ write mecr
- ldr r2, =CFG_MECR_VAL
- str r2, [r1, #MECR_OFFSET]
-
- @ write mcmem0
- ldr r2, =CFG_MCMEM0_VAL
- str r2, [r1, #MCMEM0_OFFSET]
-
- @ write mcmem1
- ldr r2, =CFG_MCMEM1_VAL
- str r2, [r1, #MCMEM1_OFFSET]
-
- @ write mcatt0
- ldr r2, =CFG_MCATT0_VAL
- str r2, [r1, #MCATT0_OFFSET]
-
- @ write mcatt1
- ldr r2, =CFG_MCATT1_VAL
- str r2, [r1, #MCATT1_OFFSET]
-
- @ write mcio0
- ldr r2, =CFG_MCIO0_VAL
- str r2, [r1, #MCIO0_OFFSET]
-
- @ write mcio1
- ldr r2, =CFG_MCIO1_VAL
- str r2, [r1, #MCIO1_OFFSET]
-
-@ Step 2c
- @ fly-by-dma is defeatured on this part
- @ write flycnfg
- @ldr r2, =CFG_FLYCNFG_VAL
- @str r2, [r1, #FLYCNFG_OFFSET]
-
-/* FIXME Does this sequence really make sense */
-#ifdef REDBOOT_WAY
- @ Step 2d
- @ get the mdrefr settings
- ldr r3, =CFG_MDREFR_VAL
-
- @ extract DRI field (we need a valid DRI field)
- @
- ldr r2, =0xFFF
-
- @ valid DRI field in r3
- @
- and r3, r3, r2
-
- @ get the reset state of MDREFR
- @
- ldr r4, [r1, #MDREFR_OFFSET]
-
- @ clear the DRI field
- @
- bic r4, r4, r2
-
- @ insert the valid DRI field loaded above
- @
- orr r4, r4, r3
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ *Note: preserve the mdrefr value in r4 *
-
-@****************************************************************************
-@ Step 3
-@
-@ NO SRAM
-
- mov pc, r10
-
-
-@****************************************************************************
-@ Step 4
-@
-
- @ Assumes previous mdrefr value in r4, if not then read current mdrefr
-
- @ clear the free-running clock bits
- @ (clear K0Free, K1Free, K2Free
- @
- bic r4, r4, #(0x00800000 | 0x01000000 | 0x02000000)
-
- @ set K0RUN for CPLD clock
- @
- orr r4, r4, #0x00002000
-
- @ set K1RUN if bank 0 installed
- @
- orr r4, r4, #0x00010000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
-
- @ deassert SLFRSH
- @
- bic r4, r4, #0x00400000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ assert E1PIN
- @
- orr r4, r4, #0x00008000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
- nop
- nop
-#else
- @ Step 2d
- @ get the mdrefr settings
- ldr r3, =CFG_MDREFR_VAL
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ Step 4
-
- @ set K0RUN for CPLD clock
- @
- orr r4, r4, #0x00002000
-
- @ set K1RUN for bank 0
- @
- orr r4, r4, #0x00010000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
-
- @ deassert SLFRSH
- @
- bic r4, r4, #0x00400000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ assert E1PIN
- @
- orr r4, r4, #0x00008000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
- nop
- nop
-#endif
-
- @ Step 4d
- @ fetch platform value of mdcnfg
- @
- ldr r2, =CFG_MDCNFG_VAL
-
- @ disable all sdram banks
- @
- bic r2, r2, #(MDCNFG_DE0 | MDCNFG_DE1)
- bic r2, r2, #(MDCNFG_DE2 | MDCNFG_DE3)
-
- @ program banks 0/1 for bus width
- @
- bic r2, r2, #MDCNFG_DWID0 @0=32-bit
-
- @ write initial value of mdcnfg, w/o enabling sdram banks
- @
- str r2, [r1, #MDCNFG_OFFSET]
-
- @ Step 4e
- @ pause for 200 uSecs
- @
- ldr r3, =OSCR @ reset the OS Timer Count to zero
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 @ really 0x2E1 is about 200usec, so 0x300 should be plenty
- 1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
- /* Why is this here??? */
- mov r0, #0x78 @turn everything off
- mcr p15, 0, r0, c1, c0, 0 @(caches off, MMU off, etc.)
-
- @ Step 4f
- @ Access memory *not yet enabled* for CBR refresh cycles (8)
- @ - CBR is generated for all banks
-
- ldr r2, =CFG_DRAM_BASE
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
-
- @ Step 4g
- @get memory controller base address
- @
- ldr r1, =MEMC_BASE
-
- @fetch current mdcnfg value
- @
- ldr r3, [r1, #MDCNFG_OFFSET]
-
- @enable sdram bank 0 if installed (must do for any populated bank)
- @
- orr r3, r3, #MDCNFG_DE0
-
- @write back mdcnfg, enabling the sdram bank(s)
- @
- str r3, [r1, #MDCNFG_OFFSET]
-
- @ Step 4h
- @ write mdmrs
- @
- ldr r2, =CFG_MDMRS_VAL
- str r2, [r1, #MDMRS_OFFSET]
-
- @ Done Memory Init
-
- /*SET_LED 6 */
-
- @********************************************************************
- @ Disable (mask) all interrupts at the interrupt controller
- @
-
- @ clear the interrupt level register (use IRQ, not FIQ)
- @
- mov r1, #0
- ldr r2, =ICLR
- str r1, [r2]
-
- @ Set interrupt mask register
- @
- ldr r1, =CFG_ICMR_VAL
- ldr r2, =ICMR
- str r1, [r2]
-
- @ ********************************************************************
- @ Disable the peripheral clocks, and set the core clock
- @
-
- @ Turn Off ALL on-chip peripheral clocks for re-configuration
- @
- ldr r1, =CKEN
- mov r2, #0
- str r2, [r1]
-
- @ set core clocks
- @
- ldr r2, =CFG_CCCR_VAL
- ldr r1, =CCCR
- str r2, [r1]
-
- #ifdef ENABLE32KHZ
- @ enable the 32Khz oscillator for RTC and PowerManager
- @
- ldr r1, =OSCC
- mov r2, #OSCC_OON
- str r2, [r1]
-
- @ NOTE: spin here until OSCC.OOK get set,
- @ meaning the PLL has settled.
- @
-60:
- ldr r2, [r1]
- ands r2, r2, #1
- beq 60b
-#endif
-
- @ Turn on needed clocks
- @
- ldr r1, =CKEN
- ldr r2, =CFG_CKEN_VAL
- str r2, [r1]
-
- /*SET_LED 7 */
-
-/* Is this needed???? */
-#define NODEBUG
-#ifdef NODEBUG
- /*Disable software and data breakpoints */
- mov r0,#0
- mcr p15,0,r0,c14,c8,0 /* ibcr0 */
- mcr p15,0,r0,c14,c9,0 /* ibcr1 */
- mcr p15,0,r0,c14,c4,0 /* dbcon */
-
- /*Enable all debug functionality */
- mov r0,#0x80000000
- mcr p14,0,r0,c10,c0,0 /* dcsr */
-
-#endif
-
- mov pc, r10
-
-@ End lowlevel_init
diff --git a/board/pleb2/pleb2.c b/board/pleb2/pleb2.c
deleted file mode 100644
index dc6fac46d3..0000000000
--- a/board/pleb2/pleb2.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-#include <asm-arm/mach-types.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* arch number of Lubbock-Board */
- gd->bd->bi_arch_number = MACH_TYPE_PLEB2;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xa0000100;
-
- return 0;
-}
-
-int board_late_init(void)
-{
- setenv("stdout", "serial");
- setenv("stderr", "serial");
- return 0;
-}
-
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
- gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
- gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
- gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
- gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
-
- return 0;
-}
diff --git a/board/pleb2/u-boot.lds b/board/pleb2/u-boot.lds
deleted file mode 100644
index f0102391b3..0000000000
--- a/board/pleb2/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/pm520/Makefile b/board/pm520/Makefile
deleted file mode 100644
index 7762ed3015..0000000000
--- a/board/pm520/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/pm520/config.mk b/board/pm520/config.mk
deleted file mode 100644
index ad689f33be..0000000000
--- a/board/pm520/config.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# (C) Copyright 2003-2004
-# 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
-#
-
-#
-# PM520 board
-#
-
-TEXT_BASE = 0xfff00000
-# TEXT_BASE = 0x00100000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/pm520/flash.c b/board/pm520/flash.c
deleted file mode 100644
index 38f579bc59..0000000000
--- a/board/pm520/flash.c
+++ /dev/null
@@ -1,668 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001-2004
- * 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 <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) (x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) (x)
-#endif
-
-/* Intel-compatible flash ID */
-#define INTEL_COMPAT 0x00890089
-#define INTEL_ALT 0x00B000B0
-
-/* Intel-compatible flash commands */
-#define INTEL_PROGRAM 0x00100010
-#define INTEL_ERASE 0x00200020
-#define INTEL_CLEAR 0x00500050
-#define INTEL_LOCKBIT 0x00600060
-#define INTEL_PROTECT 0x00010001
-#define INTEL_STATUS 0x00700070
-#define INTEL_READID 0x00900090
-#define INTEL_CONFIRM 0x00D000D0
-#define INTEL_RESET 0xFFFFFFFF
-
-/* Intel-compatible flash status bits */
-#define INTEL_FINISHED 0x00800080
-#define INTEL_OK 0x00800080
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-void inline spin_wheel (void);
-static void flash_sync_real_protect (flash_info_t * info);
-static unsigned char intel_sector_protected (flash_info_t *info, ushort sector);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
- extern void flash_preinit(void);
- extern void flash_afterinit(ulong, ulong);
- ulong flashbase = CFG_FLASH_BASE;
-
- flash_preinit();
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- memset(&flash_info[i], 0, sizeof(flash_info_t));
- flash_get_size ((FPW *) flashbase, &flash_info[i]);
- flash_get_offsets (flash_info[i].start[0], &flash_info[i]);
- break;
- default:
- panic ("configured to many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
-
- /* get the h/w and s/w protection status in sync */
- flash_sync_real_protect(&flash_info[i]);
- }
-
- /* Protect monitor and environment sectors
- */
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
-#ifndef CONFIG_BOOT_ROM
- flash_protect ( FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0] );
-#endif
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0] );
-#endif
-
- flash_afterinit(flash_info[0].start[0], flash_info[0].size);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F256J3A:
- printf ("28F256J3A\n");
- break;
-
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
-
- case FLASH_28F640J3A:
- printf ("28F640J3A\n");
- break;
-
- case FLASH_28F320J3A:
- printf ("28F320J3A\n");
- break;
-
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- udelay(100);
-
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (FPW) INTEL_ID_28F256J3A:
- info->flash_id += FLASH_28F256J3A;
- /* In U-Boot we support only 32 MB (no bank-switching) */
- info->sector_count = 256 / 2;
- info->size = 0x04000000 / 2;
- info->start[0] = CFG_FLASH_BASE + 0x02000000;
- break; /* => 32 MB */
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x02000000;
- info->start[0] = CFG_FLASH_BASE + 0x02000000;
- break; /* => 32 MB */
-
- case (FPW) INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x01000000;
- info->start[0] = CFG_FLASH_BASE + 0x03000000;
- break; /* => 16 MB */
-
- case (FPW) INTEL_ID_28F320J3A:
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x800000;
- info->start[0] = CFG_FLASH_BASE + 0x03800000;
- break; /* => 8 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*
- * This function gets the u-boot flash sector protection status
- * (flash_info_t.protect[]) in sync with the sector protection
- * status stored in hardware.
- */
-static void flash_sync_real_protect (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_TYPEMASK) {
-
- case FLASH_28F256J3A:
- case FLASH_28F128J3A:
- case FLASH_28F640J3A:
- case FLASH_28F320J3A:
- for (i = 0; i < info->sector_count; ++i) {
- info->protect[i] = intel_sector_protected(info, i);
- }
- break;
- default:
- /* no h/w protect support */
- break;
- }
-}
-
-
-/*
- * checks if "sector" in bank "info" is protected. Should work on intel
- * strata flash chips 28FxxxJ3x in 8-bit mode.
- * Returns 1 if sector is protected (or timed-out while trying to read
- * protection status), 0 if it is not.
- */
-static unsigned char intel_sector_protected (flash_info_t *info, ushort sector)
-{
- FPWV *addr;
- FPWV *lock_conf_addr;
- ulong start;
- unsigned char ret;
-
- /*
- * first, wait for the WSM to be finished. The rationale for
- * waiting for the WSM to become idle for at most
- * CFG_FLASH_ERASE_TOUT is as follows. The WSM can be busy
- * because of: (1) erase, (2) program or (3) lock bit
- * configuration. So we just wait for the longest timeout of
- * the (1)-(3), i.e. the erase timeout.
- */
-
- /* wait at least 35ns (W12) before issuing Read Status Register */
- udelay(1);
- addr = (FPWV *) info->start[sector];
- *addr = (FPW) INTEL_STATUS;
-
- start = get_timer (0);
- while ((*addr & (FPW) INTEL_FINISHED) != (FPW) INTEL_FINISHED) {
- if (get_timer (start) > CFG_FLASH_ERASE_TOUT) {
- *addr = (FPW) INTEL_RESET; /* restore read mode */
- printf("WSM busy too long, can't get prot status\n");
- return 1;
- }
- }
-
- /* issue the Read Identifier Codes command */
- *addr = (FPW) INTEL_READID;
-
- /* wait at least 35ns (W12) before reading */
- udelay(1);
-
- /* Intel example code uses offset of 2 for 16 bit flash */
- lock_conf_addr = (FPWV *) info->start[sector] + 2;
- ret = (*lock_conf_addr & (FPW) INTEL_PROTECT) ? 1 : 0;
-
- /* put flash back in read mode */
- *addr = (FPW) INTEL_RESET;
-
- return ret;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- start = get_timer(0);
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer(start) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = 0x00500050; /* clear status register cmd. */
- *addr = 0x00FF00FF; /* resest to read mode */
-
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- start = get_timer(0);
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
-
-/*-----------------------------------------------------------------------
- * Set/Clear sector's lock bit, returns:
- * 0 - OK
- * 1 - Error (timeout, voltage problems, etc.)
- */
-int flash_real_protect (flash_info_t *info, long sector, int prot)
-{
- ulong start;
- int i;
- int rc = 0;
- vu_long *addr = (vu_long *)(info->start[sector]);
- int flag = disable_interrupts();
-
- *addr = INTEL_CLEAR; /* Clear status register */
- if (prot) { /* Set sector lock bit */
- *addr = INTEL_LOCKBIT; /* Sector lock bit */
- *addr = INTEL_PROTECT; /* set */
- }
- else { /* Clear sector lock bit */
- *addr = INTEL_LOCKBIT; /* All sectors lock bits */
- *addr = INTEL_CONFIRM; /* clear */
- }
-
- start = get_timer(0);
-
- while ((*addr & INTEL_FINISHED) != INTEL_FINISHED) {
- if (get_timer(start) > CFG_FLASH_UNLOCK_TOUT) {
- printf("Flash lock bit operation timed out\n");
- rc = 1;
- break;
- }
- }
-
- if (*addr != INTEL_OK) {
- printf("Flash lock bit operation failed at %08X, CSR=%08X\n",
- (uint)addr, (uint)*addr);
- rc = 1;
- }
-
- if (!rc)
- info->protect[sector] = prot;
-
- /*
- * Clear lock bit command clears all sectors lock bits, so
- * we have to restore lock bits of protected sectors.
- * WARNING: code below re-locks sectors only for one bank (info).
- * This causes problems on boards where several banks share
- * the same chip, as sectors in othere banks will be unlocked
- * but not re-locked. It works fine on pm520 though, as there
- * is only one chip and one bank.
- */
- if (!prot)
- {
- for (i = 0; i < info->sector_count; i++)
- {
- if (info->protect[i])
- {
- start = get_timer(0);
- addr = (vu_long *)(info->start[i]);
- *addr = INTEL_LOCKBIT; /* Sector lock bit */
- *addr = INTEL_PROTECT; /* set */
- while ((*addr & INTEL_FINISHED) != INTEL_FINISHED)
- {
- if (get_timer(start) > CFG_FLASH_UNLOCK_TOUT)
- {
- printf("Flash lock bit operation timed out\n");
- rc = 1;
- break;
- }
- }
- }
- }
- /*
- * get the s/w sector protection status in sync with the h/w,
- * in case something went wrong during the re-locking.
- */
- flash_sync_real_protect(info); /* resets flash to read mode */
- }
-
- if (flag)
- enable_interrupts();
-
- *addr = INTEL_RESET; /* Reset to read array mode */
-
- return rc;
-}
diff --git a/board/pm520/mt46v16m16-75.h b/board/pm520/mt46v16m16-75.h
deleted file mode 100644
index f650faaa10..0000000000
--- a/board/pm520/mt46v16m16-75.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#define SDRAM_DDR 1 /* is DDR */
-
-#if defined(CONFIG_MPC5200)
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE 0x018D0000
-#define SDRAM_EMODE 0x40090000
-#define SDRAM_CONTROL 0x714f0f00
-#define SDRAM_CONFIG1 0x73722930
-#define SDRAM_CONFIG2 0x47770000
-#define SDRAM_TAPDELAY 0x10000000
-
-#else
-#error CONFIG_MPC5200 not defined
-#endif
diff --git a/board/pm520/mt48lc16m16a2-75.h b/board/pm520/mt48lc16m16a2-75.h
deleted file mode 100644
index ffdf0396a5..0000000000
--- a/board/pm520/mt48lc16m16a2-75.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#define SDRAM_DDR 0 /* is SDR */
-
-#if defined(CONFIG_MPC5200)
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE 0x00CD0000
-#define SDRAM_CONTROL 0x504F0000
-#define SDRAM_CONFIG1 0xD2322800
-#define SDRAM_CONFIG2 0x8AD70000
-
-#elif defined(CONFIG_MGT5100)
-/* Settings for XLB = 66 MHz */
-#define SDRAM_MODE 0x008D0000
-#define SDRAM_CONTROL 0x504F0000
-#define SDRAM_CONFIG1 0xC2222600
-#define SDRAM_CONFIG2 0x88B70004
-#define SDRAM_ADDRSEL 0x02000000
-
-#else
-#error Neither CONFIG_MPC5200 or CONFIG_MGT5100 defined
-#endif
diff --git a/board/pm520/pm520.c b/board/pm520/pm520.c
deleted file mode 100644
index 65c529192a..0000000000
--- a/board/pm520/pm520.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#include <common.h>
-#include <mpc5xxx.h>
-#include <pci.h>
-
-#if defined(CONFIG_MPC5200_DDR)
-#include "mt46v16m16-75.h"
-#else
-#include "mt48lc16m16a2-75.h"
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifndef CFG_RAMBOOT
-static void sdram_start (int hi_addr)
-{
- long hi_addr_bit = hi_addr ? 0x01000000 : 0;
-
- /* unlock mode register */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000000 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* precharge all banks */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
-#if SDRAM_DDR
- /* set mode register: extended mode */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_EMODE;
- __asm__ volatile ("sync");
-
- /* set mode register: reset DLL */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE | 0x04000000;
- __asm__ volatile ("sync");
-#endif
-
- /* precharge all banks */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* auto refresh */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000004 | hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* set mode register */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE;
- __asm__ volatile ("sync");
-
- /* normal operation */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
- __asm__ volatile ("sync");
-}
-#endif
-
-/*
- * ATTENTION: Although partially referenced initdram does NOT make real use
- * use of CFG_SDRAM_BASE. The code does not work if CFG_SDRAM_BASE
- * is something else than 0x00000000.
- */
-
-#if defined(CONFIG_MPC5200)
-long int initdram (int board_type)
-{
- ulong dramsize = 0;
- ulong dramsize2 = 0;
-#ifndef CFG_RAMBOOT
- ulong test1, test2;
-
- /* setup SDRAM chip selects */
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x0000001e;/* 2G at 0x0 */
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = 0x80000000;/* disabled */
- __asm__ volatile ("sync");
-
- /* setup config registers */
- *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
- *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
- __asm__ volatile ("sync");
-
-#if SDRAM_DDR
- /* set tap delay */
- *(vu_long *)MPC5XXX_CDM_PORCFG = SDRAM_TAPDELAY;
- __asm__ volatile ("sync");
-#endif
-
- /* find RAM size using SDRAM CS0 only */
- sdram_start(0);
- test1 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
- sdram_start(1);
- test2 = get_ram_size((long *)CFG_SDRAM_BASE, 0x80000000);
- if (test1 > test2) {
- sdram_start(0);
- dramsize = test1;
- } else {
- dramsize = test2;
- }
-
- /* memory smaller than 1MB is impossible */
- if (dramsize < (1 << 20)) {
- dramsize = 0;
- }
-
- /* set SDRAM CS0 size according to the amount of RAM found */
- if (dramsize > 0) {
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x13 + __builtin_ffs(dramsize >> 20) - 1;
- } else {
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
- }
-
- /* let SDRAM CS1 start right after CS0 */
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e;/* 2G */
-
- /* find RAM size using SDRAM CS1 only */
- if (!dramsize)
- sdram_start(0);
- test2 = test1 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
- if (!dramsize) {
- sdram_start(1);
- test2 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
- }
- if (test1 > test2) {
- sdram_start(0);
- dramsize2 = test1;
- } else {
- dramsize2 = test2;
- }
-
- /* memory smaller than 1MB is impossible */
- if (dramsize2 < (1 << 20)) {
- dramsize2 = 0;
- }
-
- /* set SDRAM CS1 size according to the amount of RAM found */
- if (dramsize2 > 0) {
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize
- | (0x13 + __builtin_ffs(dramsize2 >> 20) - 1);
- } else {
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
- }
-
-#else /* CFG_RAMBOOT */
-
- /* retrieve size of memory connected to SDRAM CS0 */
- dramsize = *(vu_long *)MPC5XXX_SDRAM_CS0CFG & 0xFF;
- if (dramsize >= 0x13) {
- dramsize = (1 << (dramsize - 0x13)) << 20;
- } else {
- dramsize = 0;
- }
-
- /* retrieve size of memory connected to SDRAM CS1 */
- dramsize2 = *(vu_long *)MPC5XXX_SDRAM_CS1CFG & 0xFF;
- if (dramsize2 >= 0x13) {
- dramsize2 = (1 << (dramsize2 - 0x13)) << 20;
- } else {
- dramsize2 = 0;
- }
-
-#endif /* CFG_RAMBOOT */
-
- return dramsize + dramsize2;
-}
-
-#elif defined(CONFIG_MGT5100)
-
-long int initdram (int board_type)
-{
- ulong dramsize = 0;
-#ifndef CFG_RAMBOOT
- ulong test1, test2;
-
- /* setup and enable SDRAM chip selects */
- *(vu_long *)MPC5XXX_SDRAM_START = 0x00000000;
- *(vu_long *)MPC5XXX_SDRAM_STOP = 0x0000ffff;/* 2G */
- *(vu_long *)MPC5XXX_ADDECR |= (1 << 22); /* Enable SDRAM */
- __asm__ volatile ("sync");
-
- /* setup config registers */
- *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
- *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
-
- /* address select register */
- *(vu_long *)MPC5XXX_SDRAM_XLBSEL = SDRAM_ADDRSEL;
- __asm__ volatile ("sync");
-
- /* find RAM size */
- sdram_start(0);
- test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
- sdram_start(1);
- test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
- if (test1 > test2) {
- sdram_start(0);
- dramsize = test1;
- } else {
- dramsize = test2;
- }
-
- /* set SDRAM end address according to size */
- *(vu_long *)MPC5XXX_SDRAM_STOP = ((dramsize - 1) >> 15);
-
-#else /* CFG_RAMBOOT */
-
- /* Retrieve amount of SDRAM available */
- dramsize = ((*(vu_long *)MPC5XXX_SDRAM_STOP + 1) << 15);
-
-#endif /* CFG_RAMBOOT */
-
- return dramsize;
-}
-
-#else
-#error Neither CONFIG_MPC5200 or CONFIG_MGT5100 defined
-#endif
-
-int checkboard (void)
-{
-#if defined(CONFIG_MPC5200)
- puts ("Board: MicroSys PM520 \n");
-#elif defined(CONFIG_MGT5100)
- puts ("Board: MicroSys PM510 \n");
-#endif
- return 0;
-}
-
-void flash_preinit(void)
-{
- /*
- * Now, when we are in RAM, enable flash write
- * access for detection process.
- * Note that CS_BOOT cannot be cleared when
- * executing in flash.
- */
-#if defined(CONFIG_MGT5100)
- *(vu_long *)MPC5XXX_ADDECR &= ~(1 << 25); /* disable CS_BOOT */
- *(vu_long *)MPC5XXX_ADDECR |= (1 << 16); /* enable CS0 */
-#endif
- *(vu_long *)MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
-}
-
-void flash_afterinit(ulong start, ulong size)
-{
-#if defined(CONFIG_BOOT_ROM)
- /* adjust mapping */
- *(vu_long *)MPC5XXX_CS1_START =
- START_REG(start);
- *(vu_long *)MPC5XXX_CS1_STOP =
- STOP_REG(start, size);
-#else
- /* adjust mapping */
- *(vu_long *)MPC5XXX_BOOTCS_START = *(vu_long *)MPC5XXX_CS0_START =
- START_REG(start);
- *(vu_long *)MPC5XXX_BOOTCS_STOP = *(vu_long *)MPC5XXX_CS0_STOP =
- STOP_REG(start, size);
-#endif
-}
-
-
-extern flash_info_t flash_info[]; /* info for FLASH chips */
-
-int misc_init_r (void)
-{
- /* adjust flash start */
- gd->bd->bi_flashstart = flash_info[0].start[0];
- return (0);
-}
-
-#ifdef CONFIG_PCI
-static struct pci_controller hose;
-
-extern void pci_mpc5xxx_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
- pci_mpc5xxx_init(&hose);
-}
-#endif
-
-#if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
-
-void init_ide_reset (void)
-{
- debug ("init_ide_reset\n");
-
-}
-
-void ide_set_reset (int idereset)
-{
- debug ("ide_reset(%d)\n", idereset);
-
-}
-#endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
-
-#if (CONFIG_COMMANDS & CFG_CMD_DOC)
-extern void doc_probe (ulong physadr);
-void doc_init (void)
-{
- doc_probe (CFG_DOC_BASE);
-}
-#endif
diff --git a/board/pm520/u-boot.lds b/board/pm520/u-boot.lds
deleted file mode 100644
index 3cc2968487..0000000000
--- a/board/pm520/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * 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/mpc5xxx/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/pm826/Makefile b/board/pm826/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/pm826/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/pm826/config.mk b/board/pm826/config.mk
deleted file mode 100644
index 48ac299fae..0000000000
--- a/board/pm826/config.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# (C) Copyright 2001-2004
-# 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
-#
-
-#
-# MicroSys PM826 board:
-#
-
-
-sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
-
-ifndef TEXT_BASE
-## Standard: boot 64-bit flash
-TEXT_BASE = 0xFF000000
-
-endif
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/pm826/flash.c b/board/pm826/flash.c
deleted file mode 100644
index fee07cf353..0000000000
--- a/board/pm826/flash.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * (C) Copyright 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for Intel devices
- *
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_get_size (volatile unsigned long *baseaddr,
- flash_info_t * info)
-{
- short i;
- unsigned long flashtest_h, flashtest_l;
-
- info->sector_count = info->size = 0;
- info->flash_id = FLASH_UNKNOWN;
-
- /* Write query command sequence and test FLASH answer
- */
- baseaddr[0] = 0x00980098;
- baseaddr[1] = 0x00980098;
-
- flashtest_h = baseaddr[0]; /* manufacturer ID */
- flashtest_l = baseaddr[1];
-
- if (flashtest_h != INTEL_MANUFACT || flashtest_l != INTEL_MANUFACT)
- return (0); /* no or unknown flash */
-
- flashtest_h = baseaddr[2]; /* device ID */
- flashtest_l = baseaddr[3];
-
- if (flashtest_h != flashtest_l)
- return (0);
-
- switch (flashtest_h) {
- case INTEL_ID_28F160C3B:
- info->flash_id = FLASH_28F160C3B;
- info->sector_count = 39;
- info->size = 0x00800000; /* 4 * 2 MB = 8 MB */
- break;
- case INTEL_ID_28F160F3B:
- info->flash_id = FLASH_28F160F3B;
- info->sector_count = 39;
- info->size = 0x00800000; /* 4 * 2 MB = 8 MB */
- break;
- case INTEL_ID_28F640C3B:
- info->flash_id = FLASH_28F640C3B;
- info->sector_count = 135;
- info->size = 0x02000000; /* 16 * 2 MB = 32 MB */
- break;
- default:
- return (0); /* no or unknown flash */
- }
-
- info->flash_id |= INTEL_MANUFACT << 16; /* set manufacturer offset */
-
- if (info->flash_id & FLASH_BTYPE) {
- volatile unsigned long *tmp = baseaddr;
-
- /* set up sector start adress table (bottom sector type)
- * AND unlock the sectors (if our chip is 160C3 or 640C3)
- */
- for (i = 0; i < info->sector_count; i++) {
- if (((info->flash_id & FLASH_TYPEMASK) == FLASH_28F160C3B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F640C3B)) {
- tmp[0] = 0x00600060;
- tmp[1] = 0x00600060;
- tmp[0] = 0x00D000D0;
- tmp[1] = 0x00D000D0;
- }
- info->start[i] = (uint) tmp;
- tmp += i < 8 ? 0x2000 : 0x10000; /* pointer arith */
- }
- }
-
- memset (info->protect, 0, info->sector_count);
-
- baseaddr[0] = 0x00FF00FF;
- baseaddr[1] = 0x00FF00FF;
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size_b0 = 0;
- int i;
-
- /* Init: no FLASHes known
- */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here (only one bank) */
-
- size_b0 = flash_get_size ((ulong *) CFG_FLASH0_BASE, &flash_info[0]);
- if (flash_info[0].flash_id == FLASH_UNKNOWN || size_b0 == 0) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 >> 20);
- }
-
- /* protect monitor and environment sectors
- */
-
-#ifndef CONFIG_BOOT_ROM
- /* If U-Boot is booted from ROM the CFG_MONITOR_BASE > CFG_FLASH0_BASE
- * but we shouldn't protect it.
- */
-
-# if CFG_MONITOR_BASE >= CFG_FLASH0_BASE
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]
- );
-# endif
-#endif /* CONFIG_BOOT_ROM */
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch ((info->flash_id >> 16) & 0xff) {
- case 0x89:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F160C3B:
- printf ("28F160C3B (16 M, bottom sector)\n");
- break;
- case FLASH_28F160F3B:
- printf ("28F160F3B (16 M, bottom sector)\n");
- break;
- case FLASH_28F640C3B:
- printf ("28F640C3B (64 M, bottom sector)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /* Start erase on unprotected sectors
- */
- for (sect = s_first; sect <= s_last; sect++) {
- volatile ulong *addr =
- (volatile unsigned long *) info->start[sect];
-
- start = get_timer (0);
- last = start;
- if (info->protect[sect] == 0) {
- /* Disable interrupts which might cause a timeout here
- */
- flag = disable_interrupts ();
-
- /* Erase the block
- */
- addr[0] = 0x00200020;
- addr[1] = 0x00200020;
- addr[0] = 0x00D000D0;
- addr[1] = 0x00D000D0;
-
- /* re-enable interrupts if necessary
- */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms
- */
- udelay (1000);
-
- last = start;
- while ((addr[0] & 0x00800080) != 0x00800080 ||
- (addr[1] & 0x00800080) != 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout (erase suspended!)\n");
- /* Suspend erase
- */
- addr[0] = 0x00B000B0;
- addr[1] = 0x00B000B0;
- goto DONE;
- }
- /* show that we're waiting
- */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
- if (addr[0] & 0x00220022 || addr[1] & 0x00220022) {
- printf ("*** ERROR: erase failed!\n");
- goto DONE;
- }
- }
- /* Clear status register and reset to read mode
- */
- addr[0] = 0x00500050;
- addr[1] = 0x00500050;
- addr[0] = 0x00FF00FF;
- addr[1] = 0x00FF00FF;
- }
-
- printf (" done\n");
-
-DONE:
- return 0;
-}
-
-static int write_word (flash_info_t *, volatile unsigned long *, ulong);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong v;
- int i, l, cc = cnt, res = 0;
-
-
- for (v=0; cc > 0; addr += 4, cc -= 4 - l) {
- l = (addr & 3);
- addr &= ~3;
-
- for (i = 0; i < 4; i++) {
- v = (v << 8) + (i < l || i - l >= cc ?
- *((unsigned char *) addr + i) : *src++);
- }
-
- if ((res = write_word (info, (volatile unsigned long *) addr, v)) != 0)
- break;
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, volatile unsigned long *addr,
- ulong data)
-{
- int flag, res = 0;
- ulong start;
-
- /* Check if Flash is (sufficiently) erased
- */
- if ((*addr & data) != data)
- return (2);
-
- /* Disable interrupts which might cause a timeout here
- */
- flag = disable_interrupts ();
-
- *addr = 0x00400040;
- *addr = data;
-
- /* re-enable interrupts if necessary
- */
- if (flag)
- enable_interrupts ();
-
- start = get_timer (0);
- while ((*addr & 0x00800080) != 0x00800080) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- /* Suspend program
- */
- *addr = 0x00B000B0;
- res = 1;
- goto OUT;
- }
- }
-
- if (*addr & 0x00220022) {
- printf ("*** ERROR: program failed!\n");
- res = 1;
- }
-
-OUT:
- /* Clear status register and reset to read mode
- */
- *addr = 0x00500050;
- *addr = 0x00FF00FF;
-
- return (res);
-}
diff --git a/board/pm826/pm826.c b/board/pm826/pm826.c
deleted file mode 100644
index 7514cd77bb..0000000000
--- a/board/pm826/pm826.c
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * (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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <pci.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 COL */
- /* PA30 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 CRS */
- /* PA29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 TXER */
- /* PA28 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 TXEN */
- /* PA27 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 RXDV */
- /* PA26 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 RXER */
- /* PA25 */ { 0, 0, 0, 1, 0, 0 }, /* PA25 */
- /* PA24 */ { 0, 0, 0, 1, 0, 0 }, /* PA24 */
- /* PA23 */ { 0, 0, 0, 1, 0, 0 }, /* PA23 */
- /* PA22 */ { 0, 0, 0, 1, 0, 0 }, /* PA22 */
- /* PA21 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 TXD3 */
- /* PA20 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 TXD2 */
- /* PA19 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 TXD1 */
- /* PA18 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 TXD0 */
- /* PA17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RXD0 */
- /* PA16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RXD1*/
- /* PA15 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RXD2 */
- /* PA14 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RXD3 */
- /* PA13 */ { 0, 0, 0, 1, 0, 0 }, /* PA13 */
- /* PA12 */ { 0, 0, 0, 1, 0, 0 }, /* PA12 */
- /* PA11 */ { 0, 0, 0, 1, 0, 0 }, /* PA11 */
- /* PA10 */ { 0, 0, 0, 1, 0, 0 }, /* PA10 */
- /* PA9 */ { 0, 1, 0, 1, 0, 0 }, /* PA9 */
- /* PA8 */ { 0, 1, 0, 0, 0, 0 }, /* PA8 */
- /* PA7 */ { 0, 0, 0, 1, 0, 0 }, /* PA7 */
- /* PA6 */ { 0, 0, 0, 1, 0, 0 }, /* PA6 */
- /* PA5 */ { 0, 0, 0, 1, 0, 0 }, /* PA5 */
- /* PA4 */ { 0, 0, 0, 1, 0, 0 }, /* PA4 */
- /* PA3 */ { 0, 0, 0, 1, 0, 0 }, /* PA3 */
- /* PA2 */ { 0, 0, 0, 1, 0, 0 }, /* PA2 */
- /* PA1 */ { 0, 0, 0, 1, 0, 0 }, /* PA1 */
- /* PA0 */ { 0, 0, 0, 1, 0, 0 } /* PA0 */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 TX_EN */
-#if defined(CONFIG_ETHER_ON_SCC) && (CONFIG_ETHER_INDEX == 1)
-#ifdef CONFIG_ETHER_ON_FCC2
-#error "SCC1 conflicts with FCC2"
-#endif
- /* PB28 */ { 1, 1, 1, 1, 0, 0 }, /* SCC1 TXD */
-#else
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RX_ER */
-#endif
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RxD[3] */
- /* PB17 */ { 0, 0, 0, 0, 0, 0 }, /* PB17 */
- /* PB16 */ { 0, 0, 0, 0, 0, 0 }, /* PB16 */
- /* PB15 */ { 1, 1, 0, 0, 0, 0 }, /* SCC2 RXD */
- /* PB14 */ { 1, 1, 0, 0, 0, 0 }, /* SCC3 RXD */
- /* PB13 */ { 0, 0, 0, 0, 0, 0 }, /* PB13 */
- /* PB12 */ { 0, 0, 0, 0, 0, 0 }, /* PB12 */
- /* PB11 */ { 0, 0, 0, 0, 0, 0 }, /* PB11 */
- /* PB10 */ { 0, 0, 0, 0, 0, 0 }, /* PB10 */
- /* PB9 */ { 0, 0, 0, 0, 0, 0 }, /* PB9 */
- /* PB8 */ { 1, 1, 1, 1, 0, 0 }, /* SCC3 TXD */
- /* PB7 */ { 0, 0, 0, 0, 0, 0 }, /* PB7 */
- /* PB6 */ { 0, 0, 0, 0, 0, 0 }, /* PB6 */
- /* PB5 */ { 0, 0, 0, 0, 0, 0 }, /* PB5 */
- /* PB4 */ { 0, 0, 0, 0, 0, 0 }, /* PB4 */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 1, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 1, 0, 0 }, /* PC30 */
- /* PC29 */ { 0, 1, 1, 0, 0, 0 }, /* SCC1 CTS */
- /* PC28 */ { 0, 0, 0, 1, 0, 0 }, /* SCC2 CTS */
- /* PC27 */ { 0, 0, 0, 1, 0, 0 }, /* PC27 */
- /* PC26 */ { 0, 0, 0, 1, 0, 0 }, /* PC26 */
- /* PC25 */ { 0, 0, 0, 1, 0, 0 }, /* PC25 */
- /* PC24 */ { 0, 0, 0, 1, 0, 0 }, /* PC24 */
- /* PC23 */ { 0, 1, 0, 1, 0, 0 }, /* PC23 */
- /* PC22 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 TXCK */
- /* PC21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RXCK */
- /* PC20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 TXCK(2) */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RXCK */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 TXCK */
- /* PC17 */ { 0, 0, 0, 1, 0, 0 }, /* PC17 */
- /* PC16 */ { 0, 0, 0, 1, 0, 0 }, /* PC16 */
- /* PC15 */ { 1, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PC14 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 DCD */
- /* PC13 */ { 0, 0, 0, 1, 0, 0 }, /* PC13 */
- /* PC12 */ { 0, 0, 0, 1, 0, 0 }, /* SCC2 DCD */
- /* PC11 */ { 0, 0, 0, 1, 0, 0 }, /* SCC3 CTS */
- /* PC10 */ { 0, 0, 0, 1, 0, 0 }, /* SCC3 DCD */
- /* PC9 */ { 0, 0, 0, 1, 0, 0 }, /* SCC4 CTS */
- /* PC8 */ { 0, 0, 0, 1, 0, 0 }, /* SCC4 DCD */
- /* PC7 */ { 0, 0, 0, 1, 0, 0 }, /* PC7 */
- /* PC6 */ { 0, 0, 0, 1, 0, 0 }, /* PC6 */
- /* PC5 */ { 0, 0, 0, 1, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 1, 0, 0 }, /* PC4 */
- /* PC3 */ { 0, 0, 0, 1, 0, 0 }, /* PC3 */
- /* PC2 */ { 0, 0, 0, 1, 0, 1 }, /* PC2 */
- /* PC1 */ { 0, 0, 0, 1, 0, 0 }, /* PC1 */
- /* PC0 */ { 0, 0, 0, 1, 0, 0 }, /* PC0 */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 RXD */
- /* PD30 */ { 0, 1, 1, 1, 0, 0 }, /* PD30 */
- /* PD29 */ { 0, 1, 0, 1, 0, 0 }, /* SCC1 RTS */
- /* PD28 */ { 0, 0, 0, 1, 0, 0 }, /* PD28 */
- /* PD27 */ { 0, 1, 0, 1, 0, 0 }, /* SCC2 RTS */
- /* PD26 */ { 0, 0, 0, 1, 0, 0 }, /* PD26 */
- /* PD25 */ { 0, 0, 0, 1, 0, 0 }, /* PD25 */
- /* PD24 */ { 0, 0, 0, 1, 0, 0 }, /* PD24 */
- /* PD23 */ { 0, 0, 0, 1, 0, 0 }, /* SCC3 RTS */
- /* PD22 */ { 1, 1, 0, 0, 0, 0 }, /* SCC4 RXD */
- /* PD21 */ { 1, 1, 0, 1, 0, 0 }, /* SCC4 TXD */
- /* PD20 */ { 0, 0, 1, 1, 0, 0 }, /* SCC4 RTS */
- /* PD19 */ { 0, 0, 0, 1, 0, 0 }, /* PD19 */
- /* PD18 */ { 0, 0, 0, 1, 0, 0 }, /* PD18 */
- /* PD17 */ { 0, 1, 0, 0, 0, 0 }, /* PD17 */
- /* PD16 */ { 0, 1, 0, 1, 0, 0 }, /* PD16 */
-#if defined(CONFIG_SOFT_I2C)
- /* PD15 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SDA */
- /* PD14 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#else /* normal I/O port pins */
- /* PD15 */ { 0, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 0, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#endif
-#endif
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 0, 1, 0, 1, 0, 0 }, /* PD9 */
- /* PD8 */ { 0, 1, 0, 0, 0, 0 }, /* PD8 */
- /* PD7 */ { 0, 0, 0, 1, 0, 1 }, /* PD7 */
- /* PD6 */ { 0, 0, 0, 1, 0, 1 }, /* PD6 */
- /* PD5 */ { 0, 0, 0, 1, 0, 1 }, /* PD5 */
- /* PD4 */ { 1, 1, 1, 0, 0, 0 }, /* SMC2 RXD */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
- puts ("Board: PM826\n");
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
- ulong orx, volatile uchar * base)
-{
- volatile uchar c = 0xff;
- volatile uint *sdmr_ptr;
- volatile uint *orx_ptr;
- ulong maxsize, size;
- int i;
-
- /* We must be able to test a location outsize the maximum legal size
- * to find out THAT we are outside; but this address still has to be
- * mapped by the controller. That means, that the initial mapping has
- * to be (at least) twice as large as the maximum expected size.
- */
- maxsize = (1 + (~orx | 0x7fff)) / 2;
-
- sdmr_ptr = &memctl->memc_psdmr;
- orx_ptr = &memctl->memc_or2;
-
- *orx_ptr = orx;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- *sdmr_ptr = sdmr | PSDMR_OP_PREA;
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_MRW;
- *(base + CFG_MRS_OFFS) = c; /* setting MR on address lines */
-
- *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *base = c;
-
- size = get_ram_size((long *)base, maxsize);
-
- *orx_ptr = orx | ~(size - 1);
-
- return (size);
-}
-
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CFG_RAMBOOT
- ulong size8, size9;
-#endif
- ulong psize = 32 * 1024 * 1024;
-
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_mptpr = CFG_MPTPR;
-
-#ifndef CFG_RAMBOOT
- size8 = try_init (memctl, CFG_PSDMR_8COL, CFG_OR2_8COL,
- (uchar *) CFG_SDRAM_BASE);
- size9 = try_init (memctl, CFG_PSDMR_9COL, CFG_OR2_9COL,
- (uchar *) CFG_SDRAM_BASE);
-
- if (size8 < size9) {
- psize = size9;
- printf ("(60x:9COL) ");
- } else {
- psize = try_init (memctl, CFG_PSDMR_8COL, CFG_OR2_8COL,
- (uchar *) CFG_SDRAM_BASE);
- printf ("(60x:8COL) ");
- }
-#endif
- return (psize);
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_DOC)
-extern void doc_probe (ulong physadr);
-void doc_init (void)
-{
- doc_probe (CFG_DOC_BASE);
-}
-#endif
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
- pci_mpc8250_init(&hose);
-}
-#endif
diff --git a/board/pm826/u-boot.lds b/board/pm826/u-boot.lds
deleted file mode 100644
index 05f29c6ed0..0000000000
--- a/board/pm826/u-boot.lds
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * (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/mpc8260/start.o (.text)
- *(.text)
- common/environment.o(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/pm828/Makefile b/board/pm828/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/pm828/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/pm828/config.mk b/board/pm828/config.mk
deleted file mode 100644
index 6288431a53..0000000000
--- a/board/pm828/config.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# (C) Copyright 2003-2004
-# 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
-#
-
-#
-# MicroSys PM828 board:
-#
-
-
-sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
-
-ifndef TEXT_BASE
-## Standard: boot 64-bit flash
-TEXT_BASE = 0x40000000
-
-endif
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/pm828/flash.c b/board/pm828/flash.c
deleted file mode 100644
index 1f21b3e9cb..0000000000
--- a/board/pm828/flash.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for Intel devices
- *
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_get_size (volatile unsigned long *baseaddr,
- flash_info_t * info)
-{
- short i;
- unsigned long flashtest_h, flashtest_l;
-
- info->sector_count = info->size = 0;
- info->flash_id = FLASH_UNKNOWN;
-
- /* Write query command sequence and test FLASH answer
- */
- baseaddr[0] = 0x00980098;
- baseaddr[1] = 0x00980098;
-
- flashtest_h = baseaddr[0]; /* manufacturer ID */
- flashtest_l = baseaddr[1];
-
- if (flashtest_h != INTEL_MANUFACT || flashtest_l != INTEL_MANUFACT)
- return (0); /* no or unknown flash */
-
- flashtest_h = baseaddr[2]; /* device ID */
- flashtest_l = baseaddr[3];
-
- if (flashtest_h != flashtest_l)
- return (0);
-
- switch (flashtest_h) {
- case INTEL_ID_28F160C3B:
- info->flash_id = FLASH_28F160C3B;
- info->sector_count = 39;
- info->size = 0x00800000; /* 4 * 2 MB = 8 MB */
- break;
- case INTEL_ID_28F160F3B:
- info->flash_id = FLASH_28F160F3B;
- info->sector_count = 39;
- info->size = 0x00800000; /* 4 * 2 MB = 8 MB */
- break;
- case INTEL_ID_28F640C3B:
- info->flash_id = FLASH_28F640C3B;
- info->sector_count = 135;
- info->size = 0x02000000; /* 16 * 2 MB = 32 MB */
- break;
- default:
- return (0); /* no or unknown flash */
- }
-
- info->flash_id |= INTEL_MANUFACT << 16; /* set manufacturer offset */
-
- if (info->flash_id & FLASH_BTYPE) {
- volatile unsigned long *tmp = baseaddr;
-
- /* set up sector start adress table (bottom sector type)
- * AND unlock the sectors (if our chip is 160C3 or 640c3)
- */
- for (i = 0; i < info->sector_count; i++) {
- if (((info->flash_id & FLASH_TYPEMASK) == FLASH_28F160C3B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F640C3B)) {
- tmp[0] = 0x00600060;
- tmp[1] = 0x00600060;
- tmp[0] = 0x00D000D0;
- tmp[1] = 0x00D000D0;
- }
- info->start[i] = (uint) tmp;
- tmp += i < 8 ? 0x2000 : 0x10000; /* pointer arith */
- }
- }
-
- memset (info->protect, 0, info->sector_count);
-
- baseaddr[0] = 0x00FF00FF;
- baseaddr[1] = 0x00FF00FF;
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size_b0 = 0;
- int i;
-
- /* Init: no FLASHes known
- */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here (only one bank) */
-
- size_b0 = flash_get_size ((ulong *) CFG_FLASH0_BASE, &flash_info[0]);
- if (flash_info[0].flash_id == FLASH_UNKNOWN || size_b0 == 0) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 >> 20);
- }
-
- /* protect monitor and environment sectors
- */
-
-#ifndef CONFIG_BOOT_ROM
- /* If U-Boot is booted from ROM the CFG_MONITOR_BASE > CFG_FLASH0_BASE
- * but we shouldn't protect it.
- */
-
-# if CFG_MONITOR_BASE >= CFG_FLASH0_BASE
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]
- );
-# endif
-#endif /* CONFIG_BOOT_ROM */
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch ((info->flash_id >> 16) & 0xff) {
- case 0x89:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F160C3B:
- printf ("28F160C3B (16 M, bottom sector)\n");
- break;
- case FLASH_28F160F3B:
- printf ("28F160F3B (16 M, bottom sector)\n");
- break;
- case FLASH_28F640C3B:
- printf ("28F640C3B (64 M, bottom sector)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /* Start erase on unprotected sectors
- */
- for (sect = s_first; sect <= s_last; sect++) {
- volatile ulong *addr =
- (volatile unsigned long *) info->start[sect];
-
- start = get_timer (0);
- last = start;
- if (info->protect[sect] == 0) {
- /* Disable interrupts which might cause a timeout here
- */
- flag = disable_interrupts ();
-
- /* Erase the block
- */
- addr[0] = 0x00200020;
- addr[1] = 0x00200020;
- addr[0] = 0x00D000D0;
- addr[1] = 0x00D000D0;
-
- /* re-enable interrupts if necessary
- */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms
- */
- udelay (1000);
-
- last = start;
- while ((addr[0] & 0x00800080) != 0x00800080 ||
- (addr[1] & 0x00800080) != 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout (erase suspended!)\n");
- /* Suspend erase
- */
- addr[0] = 0x00B000B0;
- addr[1] = 0x00B000B0;
- goto DONE;
- }
- /* show that we're waiting
- */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
- if (addr[0] & 0x00220022 || addr[1] & 0x00220022) {
- printf ("*** ERROR: erase failed!\n");
- goto DONE;
- }
- }
- /* Clear status register and reset to read mode
- */
- addr[0] = 0x00500050;
- addr[1] = 0x00500050;
- addr[0] = 0x00FF00FF;
- addr[1] = 0x00FF00FF;
- }
-
- printf (" done\n");
-
-DONE:
- return 0;
-}
-
-static int write_word (flash_info_t *, volatile unsigned long *, ulong);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong v;
- int i, l, cc = cnt, res = 0;
-
-
- for (v=0; cc > 0; addr += 4, cc -= 4 - l) {
- l = (addr & 3);
- addr &= ~3;
-
- for (i = 0; i < 4; i++) {
- v = (v << 8) + (i < l || i - l >= cc ?
- *((unsigned char *) addr + i) : *src++);
- }
-
- if ((res = write_word (info, (volatile unsigned long *) addr, v)) != 0)
- break;
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, volatile unsigned long *addr,
- ulong data)
-{
- int flag, res = 0;
- ulong start;
-
- /* Check if Flash is (sufficiently) erased
- */
- if ((*addr & data) != data)
- return (2);
-
- /* Disable interrupts which might cause a timeout here
- */
- flag = disable_interrupts ();
-
- *addr = 0x00400040;
- *addr = data;
-
- /* re-enable interrupts if necessary
- */
- if (flag)
- enable_interrupts ();
-
- start = get_timer (0);
- while ((*addr & 0x00800080) != 0x00800080) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- /* Suspend program
- */
- *addr = 0x00B000B0;
- res = 1;
- goto OUT;
- }
- }
-
- if (*addr & 0x00220022) {
- printf ("*** ERROR: program failed!\n");
- res = 1;
- }
-
-OUT:
- /* Clear status register and reset to read mode
- */
- *addr = 0x00500050;
- *addr = 0x00FF00FF;
-
- return (res);
-}
diff --git a/board/pm828/pm828.c b/board/pm828/pm828.c
deleted file mode 100644
index 31932742a8..0000000000
--- a/board/pm828/pm828.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * 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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <pci.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 COL */
- /* PA30 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 CRS */
- /* PA29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 TXER */
- /* PA28 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 TXEN */
- /* PA27 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 RXDV */
- /* PA26 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 RXER */
- /* PA25 */ { 0, 0, 0, 1, 0, 0 }, /* PA25 */
- /* PA24 */ { 0, 0, 0, 1, 0, 0 }, /* PA24 */
- /* PA23 */ { 0, 0, 0, 1, 0, 0 }, /* PA23 */
- /* PA22 */ { 0, 0, 0, 1, 0, 0 }, /* PA22 */
- /* PA21 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 TXD3 */
- /* PA20 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 TXD2 */
- /* PA19 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 TXD1 */
- /* PA18 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 TXD0 */
- /* PA17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RXD0 */
- /* PA16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RXD1*/
- /* PA15 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RXD2 */
- /* PA14 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RXD3 */
- /* PA13 */ { 0, 0, 0, 1, 0, 0 }, /* PA13 */
- /* PA12 */ { 0, 0, 0, 1, 0, 0 }, /* PA12 */
- /* PA11 */ { 0, 0, 0, 1, 0, 0 }, /* PA11 */
- /* PA10 */ { 0, 0, 0, 1, 0, 0 }, /* PA10 */
- /* PA9 */ { 0, 1, 0, 1, 0, 0 }, /* PA9 */
- /* PA8 */ { 0, 1, 0, 0, 0, 0 }, /* PA8 */
- /* PA7 */ { 0, 0, 0, 1, 0, 0 }, /* PA7 */
- /* PA6 */ { 0, 0, 0, 1, 0, 0 }, /* PA6 */
- /* PA5 */ { 0, 0, 0, 1, 0, 0 }, /* PA5 */
- /* PA4 */ { 0, 0, 0, 1, 0, 0 }, /* PA4 */
- /* PA3 */ { 0, 0, 0, 1, 0, 0 }, /* PA3 */
- /* PA2 */ { 0, 0, 0, 1, 0, 0 }, /* PA2 */
- /* PA1 */ { 0, 0, 0, 1, 0, 0 }, /* PA1 */
- /* PA0 */ { 0, 0, 0, 1, 0, 0 } /* PA0 */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 TX_EN */
-#if defined(CONFIG_ETHER_ON_SCC) && (CONFIG_ETHER_INDEX == 1)
-#ifdef CONFIG_ETHER_ON_FCC2
-#error "SCC1 conflicts with FCC2"
-#endif
- /* PB28 */ { 1, 1, 1, 1, 0, 0 }, /* SCC1 TXD */
-#else
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RX_ER */
-#endif
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RxD[3] */
- /* PB17 */ { 0, 0, 0, 0, 0, 0 }, /* PB17 */
- /* PB16 */ { 0, 0, 0, 0, 0, 0 }, /* PB16 */
- /* PB15 */ { 1, 1, 0, 0, 0, 0 }, /* SCC2 RXD */
- /* PB14 */ { 1, 1, 0, 0, 0, 0 }, /* SCC3 RXD */
- /* PB13 */ { 0, 0, 0, 0, 0, 0 }, /* PB13 */
- /* PB12 */ { 0, 0, 0, 0, 0, 0 }, /* PB12 */
- /* PB11 */ { 0, 0, 0, 0, 0, 0 }, /* PB11 */
- /* PB10 */ { 0, 0, 0, 0, 0, 0 }, /* PB10 */
- /* PB9 */ { 0, 0, 0, 0, 0, 0 }, /* PB9 */
- /* PB8 */ { 1, 1, 1, 1, 0, 0 }, /* SCC3 TXD */
- /* PB7 */ { 0, 0, 0, 0, 0, 0 }, /* PB7 */
- /* PB6 */ { 0, 0, 0, 0, 0, 0 }, /* PB6 */
- /* PB5 */ { 0, 0, 0, 0, 0, 0 }, /* PB5 */
- /* PB4 */ { 0, 0, 0, 0, 0, 0 }, /* PB4 */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 1, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 1, 0, 0 }, /* PC30 */
- /* PC29 */ { 0, 1, 1, 0, 0, 0 }, /* SCC1 CTS */
- /* PC28 */ { 0, 0, 0, 1, 0, 0 }, /* SCC2 CTS */
- /* PC27 */ { 0, 0, 0, 1, 0, 0 }, /* PC27 */
- /* PC26 */ { 0, 0, 0, 1, 0, 0 }, /* PC26 */
- /* PC25 */ { 0, 0, 0, 1, 0, 0 }, /* PC25 */
- /* PC24 */ { 0, 0, 0, 1, 0, 0 }, /* PC24 */
- /* PC23 */ { 0, 1, 0, 1, 0, 0 }, /* PC23 */
- /* PC22 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 TXCK */
- /* PC21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 RXCK */
- /* PC20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 TXCK(2) */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 RXCK */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 TXCK */
- /* PC17 */ { 0, 0, 0, 1, 0, 0 }, /* PC17 */
- /* PC16 */ { 0, 0, 0, 1, 0, 0 }, /* PC16 */
- /* PC15 */ { 1, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PC14 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 DCD */
- /* PC13 */ { 0, 0, 0, 1, 0, 0 }, /* PC13 */
- /* PC12 */ { 0, 0, 0, 1, 0, 0 }, /* SCC2 DCD */
- /* PC11 */ { 0, 0, 0, 1, 0, 0 }, /* SCC3 CTS */
- /* PC10 */ { 0, 0, 0, 1, 0, 0 }, /* SCC3 DCD */
- /* PC9 */ { 0, 0, 0, 1, 0, 0 }, /* SCC4 CTS */
- /* PC8 */ { 0, 0, 0, 1, 0, 0 }, /* SCC4 DCD */
- /* PC7 */ { 0, 0, 0, 1, 0, 0 }, /* PC7 */
- /* PC6 */ { 0, 0, 0, 1, 0, 0 }, /* PC6 */
- /* PC5 */ { 0, 0, 0, 1, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 1, 0, 0 }, /* PC4 */
- /* PC3 */ { 0, 0, 0, 1, 0, 0 }, /* PC3 */
- /* PC2 */ { 0, 0, 0, 1, 0, 1 }, /* PC2 */
- /* PC1 */ { 0, 0, 0, 1, 0, 0 }, /* PC1 */
- /* PC0 */ { 0, 0, 0, 1, 0, 0 }, /* PC0 */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 RXD */
- /* PD30 */ { 0, 1, 1, 1, 0, 0 }, /* PD30 */
- /* PD29 */ { 0, 1, 0, 1, 0, 0 }, /* SCC1 RTS */
- /* PD28 */ { 0, 0, 0, 1, 0, 0 }, /* PD28 */
- /* PD27 */ { 0, 1, 0, 1, 0, 0 }, /* SCC2 RTS */
- /* PD26 */ { 0, 0, 0, 1, 0, 0 }, /* PD26 */
- /* PD25 */ { 0, 0, 0, 1, 0, 0 }, /* PD25 */
- /* PD24 */ { 0, 0, 0, 1, 0, 0 }, /* PD24 */
- /* PD23 */ { 0, 0, 0, 1, 0, 0 }, /* SCC3 RTS */
- /* PD22 */ { 1, 1, 0, 0, 0, 0 }, /* SCC4 RXD */
- /* PD21 */ { 1, 1, 0, 1, 0, 0 }, /* SCC4 TXD */
- /* PD20 */ { 0, 0, 1, 1, 0, 0 }, /* SCC4 RTS */
- /* PD19 */ { 0, 0, 0, 1, 0, 0 }, /* PD19 */
- /* PD18 */ { 0, 0, 0, 1, 0, 0 }, /* PD18 */
- /* PD17 */ { 0, 1, 0, 0, 0, 0 }, /* PD17 */
- /* PD16 */ { 0, 1, 0, 1, 0, 0 }, /* PD16 */
-#if defined(CONFIG_SOFT_I2C)
- /* PD15 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SDA */
- /* PD14 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#else /* normal I/O port pins */
- /* PD15 */ { 0, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 0, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#endif
-#endif
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 0, 1, 0, 1, 0, 0 }, /* PD9 */
- /* PD8 */ { 0, 1, 0, 0, 0, 0 }, /* PD8 */
- /* PD7 */ { 0, 0, 0, 1, 0, 1 }, /* PD7 */
- /* PD6 */ { 0, 0, 0, 1, 0, 1 }, /* PD6 */
- /* PD5 */ { 0, 0, 0, 1, 0, 1 }, /* PD5 */
- /* PD4 */ { 1, 1, 1, 0, 0, 0 }, /* SMC2 RXD */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
- puts ("Board: PM828\n");
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
- ulong orx, volatile uchar * base)
-{
- volatile uchar c = 0xff;
- volatile ulong cnt, val;
- volatile ulong *addr;
- volatile uint *sdmr_ptr;
- volatile uint *orx_ptr;
- int i;
- ulong save[32]; /* to make test non-destructive */
- ulong maxsize;
-
- /* We must be able to test a location outsize the maximum legal size
- * to find out THAT we are outside; but this address still has to be
- * mapped by the controller. That means, that the initial mapping has
- * to be (at least) twice as large as the maximum expected size.
- */
- maxsize = (1 + (~orx | 0x7fff)) / 2;
-
- sdmr_ptr = &memctl->memc_psdmr;
- orx_ptr = &memctl->memc_or2;
-
- *orx_ptr = orx;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- *sdmr_ptr = sdmr | PSDMR_OP_PREA;
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_MRW;
- *(base + CFG_MRS_OFFS) = c; /* setting MR on address lines */
-
- *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *base = c;
-
- /*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
- i = 0;
- for (cnt = maxsize / sizeof (long); cnt > 0; cnt >>= 1) {
- addr = (volatile ulong *) base + cnt; /* pointer arith! */
- save[i++] = *addr;
- *addr = ~cnt;
- }
-
- addr = (volatile ulong *) base;
- save[i] = *addr;
- *addr = 0;
-
- if ((val = *addr) != 0) {
- *addr = save[i];
- return (0);
- }
-
- for (cnt = 1; cnt <= maxsize / sizeof (long); cnt <<= 1) {
- addr = (volatile ulong *) base + cnt; /* pointer arith! */
- val = *addr;
- *addr = save[--i];
- if (val != ~cnt) {
- /* Write the actual size to ORx
- */
- *orx_ptr = orx | ~(cnt * sizeof (long) - 1);
- return (cnt * sizeof (long));
- }
- }
- return (maxsize);
-}
-
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CFG_RAMBOOT
- ulong size8, size9;
-#endif
- ulong psize = 32 * 1024 * 1024;
-
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_mptpr = CFG_MPTPR;
-
-#ifndef CFG_RAMBOOT
- size8 = try_init (memctl, CFG_PSDMR_8COL, CFG_OR2_8COL,
- (uchar *) CFG_SDRAM_BASE);
- size9 = try_init (memctl, CFG_PSDMR_9COL, CFG_OR2_9COL,
- (uchar *) CFG_SDRAM_BASE);
-
- if (size8 < size9) {
- psize = size9;
- printf ("(60x:9COL) ");
- } else {
- psize = try_init (memctl, CFG_PSDMR_8COL, CFG_OR2_8COL,
- (uchar *) CFG_SDRAM_BASE);
- printf ("(60x:8COL) ");
- }
-#endif
- return (psize);
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_DOC)
-extern void doc_probe (ulong physadr);
-void doc_init (void)
-{
- doc_probe (CFG_DOC_BASE);
-}
-#endif
-
-#ifdef CONFIG_PCI
-struct pci_controller hose;
-
-extern void pci_mpc8250_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
- pci_mpc8250_init(&hose);
-}
-#endif
diff --git a/board/pm828/u-boot.lds b/board/pm828/u-boot.lds
deleted file mode 100644
index 928c1cf393..0000000000
--- a/board/pm828/u-boot.lds
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * (C) Copyright 2001-2004
- * 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/mpc8260/start.o (.text)
- *(.text)
- common/environment.o(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/ppmc7xx/Makefile b/board/ppmc7xx/Makefile
deleted file mode 100644
index 5fbefeb71c..0000000000
--- a/board/ppmc7xx/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-SOBJS := init.o
-
-COBJS := ppmc7xx.o pci.o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ppmc7xx/config.mk b/board/ppmc7xx/config.mk
deleted file mode 100644
index b5b46dc56b..0000000000
--- a/board/ppmc7xx/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (C) Copyright 2005
-# Richard Danter, Wind River Systems
-#
-# (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
-
-TEXT_BASE = 0xFFF00000
-TEXT_END = 0xFFF40000
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/ppmc7xx/flash.c b/board/ppmc7xx/flash.c
deleted file mode 100644
index 4be6f13644..0000000000
--- a/board/ppmc7xx/flash.c
+++ /dev/null
@@ -1,494 +0,0 @@
-/*
- * flash.c
- * -------
- *
- * Flash programming routines for the Wind River PPMC 74xx/7xx
- * based on flash.c from the TQM8260 board.
- *
- * By Richard Danter (richard.danter@windriver.com)
- * Copyright (C) 2005 Wind River Systems
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <74xx_7xx.h>
-
-#define DWORD unsigned long long
-
-/* Local function prototypes */
-static int write_dword (flash_info_t* info, ulong dest, unsigned char *pdata);
-static void write_via_fpu (volatile DWORD* addr, DWORD* data);
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-void flash_reset (void)
-{
- unsigned long msr;
- DWORD cmd_reset = 0x00F000F000F000F0LL;
-
- if (flash_info[0].flash_id != FLASH_UNKNOWN) {
- msr = get_msr ();
- set_msr (msr | MSR_FP);
-
- write_via_fpu ((DWORD*)flash_info[0].start[0], &cmd_reset );
-
- set_msr (msr);
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_get_size (ulong baseaddr, flash_info_t * info)
-{
- int i;
- unsigned long msr;
- DWORD flashtest;
- DWORD cmd_select[3] = { 0x00AA00AA00AA00AALL, 0x0055005500550055LL,
- 0x0090009000900090LL };
-
- /* Enable FPU */
- msr = get_msr ();
- set_msr (msr | MSR_FP);
-
- /* Write auto-select command sequence */
- write_via_fpu ((DWORD*)(baseaddr + (0x0555 << 3)), &cmd_select[0] );
- write_via_fpu ((DWORD*)(baseaddr + (0x02AA << 3)), &cmd_select[1] );
- write_via_fpu ((DWORD*)(baseaddr + (0x0555 << 3)), &cmd_select[2] );
-
- /* Restore FPU */
- set_msr (msr);
-
- /* Read manufacturer ID */
- flashtest = *(volatile DWORD*)baseaddr;
- switch ((int)flashtest) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- /* No, faulty or unknown flash */
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0);
- }
-
- /* Read device ID */
- flashtest = *(volatile DWORD*)(baseaddr + 8);
- switch ((long)flashtest) {
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00400000;
- break;
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00400000;
- break;
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00800000;
- break;
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00800000;
- break;
- case AMD_ID_DL322T:
- info->flash_id += FLASH_AMDL322T;
- info->sector_count = 71;
- info->size = 0x01000000;
- break;
- case AMD_ID_DL322B:
- info->flash_id += FLASH_AMDL322B;
- info->sector_count = 71;
- info->size = 0x01000000;
- break;
- case AMD_ID_DL323T:
- info->flash_id += FLASH_AMDL323T;
- info->sector_count = 71;
- info->size = 0x01000000;
- break;
- case AMD_ID_DL323B:
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x01000000;
- break;
- case AMD_ID_LV640U:
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x02000000;
- break;
- default:
- /* Unknown flash type */
- info->flash_id = FLASH_UNKNOWN;
- return (0);
- }
-
- if ((long)flashtest == AMD_ID_LV640U) {
- /* set up sector start adress table (uniform sector type) */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = baseaddr + (i * 0x00040000);
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set up sector start adress table (bottom sector type) */
- info->start[0] = baseaddr + 0x00000000;
- info->start[1] = baseaddr + 0x00010000;
- info->start[2] = baseaddr + 0x00018000;
- info->start[3] = baseaddr + 0x00020000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = baseaddr + (i * 0x00040000) - 0x000C0000;
- }
- } else {
- /* set up sector start adress table (top sector type) */
- i = info->sector_count - 1;
- info->start[i--] = baseaddr + info->size - 0x00010000;
- info->start[i--] = baseaddr + info->size - 0x00018000;
- info->start[i--] = baseaddr + info->size - 0x00020000;
- for (; i >= 0; i--) {
- info->start[i] = baseaddr + i * 0x00040000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- if (*(volatile DWORD*)(info->start[i] + 16) & 0x0001000100010001LL) {
- info->protect[i] = 1; /* D0 = 1 if protected */
- } else {
- info->protect[i] = 0;
- }
- }
-
- flash_reset ();
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size_b0 = 0;
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here (only one bank) */
- size_b0 = flash_get_size (CFG_FLASH_BASE, &flash_info[0]);
- if (flash_info[0].flash_id == FLASH_UNKNOWN || size_b0 == 0) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 >> 20);
- }
-
- /*
- * protect monitor and environment sectors
- */
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf ("FUJITSU ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM800T:
- printf ("29LV800T (8 M, top sector)\n");
- break;
- case FLASH_AM800B:
- printf ("29LV800T (8 M, bottom sector)\n");
- break;
- case FLASH_AM160T:
- printf ("29LV160T (16 M, top sector)\n");
- break;
- case FLASH_AM160B:
- printf ("29LV160B (16 M, bottom sector)\n");
- break;
- case FLASH_AMDL322T:
- printf ("29DL322T (32 M, top sector)\n");
- break;
- case FLASH_AMDL322B:
- printf ("29DL322B (32 M, bottom sector)\n");
- break;
- case FLASH_AMDL323T:
- printf ("29DL323T (32 M, top sector)\n");
- break;
- case FLASH_AMDL323B:
- printf ("29DL323B (32 M, bottom sector)\n");
- break;
- case FLASH_AM640U:
- printf ("29LV640D (64 M, uniform sector)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect, l_sect;
- ulong start, now, last;
- unsigned long msr;
- DWORD cmd_erase[6] = { 0x00AA00AA00AA00AALL, 0x0055005500550055LL,
- 0x0080008000800080LL, 0x00AA00AA00AA00AALL,
- 0x0055005500550055LL, 0x0030003000300030LL };
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Enable FPU */
- msr = get_msr();
- set_msr ( msr | MSR_FP );
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- write_via_fpu ((DWORD*)(info->start[0] + (0x0555 << 3)), &cmd_erase[0] );
- write_via_fpu ((DWORD*)(info->start[0] + (0x02AA << 3)), &cmd_erase[1] );
- write_via_fpu ((DWORD*)(info->start[0] + (0x0555 << 3)), &cmd_erase[2] );
- write_via_fpu ((DWORD*)(info->start[0] + (0x0555 << 3)), &cmd_erase[3] );
- write_via_fpu ((DWORD*)(info->start[0] + (0x02AA << 3)), &cmd_erase[4] );
- udelay (1000);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- write_via_fpu ((DWORD*)info->start[sect], &cmd_erase[5] );
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* Restore FPU */
- set_msr (msr);
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- while ((*(volatile DWORD*)info->start[l_sect] & 0x0080008000800080LL )
- != 0x0080008000800080LL )
- {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- flash_reset ();
-
- printf (" done\n");
- return 0;
-}
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong dp;
- static unsigned char bb[8];
- int i, l, rc, cc = cnt;
-
- dp = (addr & ~7); /* get lower dword aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - dp) != 0) {
- for (i = 0; i < 8; i++)
- bb[i] = (i < l || (i - l) >= cc) ? *(char*)(dp + i) : *src++;
- if ((rc = write_dword (info, dp, bb)) != 0) {
- return (rc);
- }
- dp += 8;
- cc -= 8 - l;
- }
-
- /*
- * handle word aligned part
- */
- while (cc >= 8) {
- if ((rc = write_dword (info, dp, src)) != 0) {
- return (rc);
- }
- dp += 8;
- src += 8;
- cc -= 8;
- }
-
- if (cc <= 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- for (i = 0; i < 8; i++) {
- bb[i] = (i < cc) ? *src++ : *(char*)(dp + i);
- }
- return (write_dword (info, dp, bb));
-}
-
-/*-----------------------------------------------------------------------
- * Write a dword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_dword (flash_info_t * info, ulong dest, unsigned char *pdata)
-{
- ulong start;
- unsigned long msr;
- int flag, i;
- DWORD data;
- DWORD cmd_write[3] = { 0x00AA00AA00AA00AALL, 0x0055005500550055LL,
- 0x00A000A000A000A0LL };
-
- for (data = 0, i = 0; i < 8; i++)
- data = (data << 8) + *pdata++;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*(DWORD*)dest & data) != data) {
- return (2);
- }
-
- /* Enable FPU */
- msr = get_msr();
- set_msr( msr | MSR_FP );
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- write_via_fpu ((DWORD*)(info->start[0] + (0x0555 << 3)), &cmd_write[0] );
- write_via_fpu ((DWORD*)(info->start[0] + (0x02AA << 3)), &cmd_write[1] );
- write_via_fpu ((DWORD*)(info->start[0] + (0x0555 << 3)), &cmd_write[2] );
- write_via_fpu ((DWORD*)dest, &data );
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* Restore FPU */
- set_msr(msr);
-
- /* data polling for D7 */
- start = get_timer (0);
- while (*(volatile DWORD*)dest != data ) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void write_via_fpu (volatile DWORD* addr, DWORD* data)
-{
- __asm__ __volatile__ ("lfd 1, 0(%0)"::"r" (data));
- __asm__ __volatile__ ("stfd 1, 0(%0)"::"r" (addr));
- __asm__ __volatile__ ("eieio");
-}
diff --git a/board/ppmc7xx/init.S b/board/ppmc7xx/init.S
deleted file mode 100644
index 99a818ad02..0000000000
--- a/board/ppmc7xx/init.S
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * init.S
- * ------
- *
- * Wind River PPMC 7xx/74xx init code.
- *
- * By Richard Danter (richard.danter@windriver.com)
- * Copyright (C) 2005 Wind River Systems
- *
- * NOTE: The following code was generated automatically by Workbench
- * from the ppmc7400_107.reg register file.
- */
-
-#include <ppc_asm.tmpl>
-
-
-.globl board_asm_init
-board_asm_init:
-
- lis r4,0xFEC0
- ori r4,r4,0x0000
- lis r5,0xFEE0
- ori r5,r5,0x0000
- lis r3,0x8000 # ADDR_00
- ori r3,r3,0x0000
- stwbrx r3,0,r4
- li r3,0x1057 # VENDOR
- li r8, 0x0
- sthbrx r3,r8,r5
- lis r3,0x8000 # ADDR_02
- ori r3,r3,0x0002
- stwbrx r3,0,r4
- li r3,0x0004 # ID
- li r8, 0x2
- sthbrx r3,r8,r5
- lis r3,0x8000 # ADDR_04
- ori r3,r3,0x0004
- stwbrx r3,0,r4
- li r3,0x0006 # PCICMD
- li r8, 0x0
- sthbrx r3,r8,r5
- lis r3,0x8000 # ADDR_06
- ori r3,r3,0x0006
- stwbrx r3,0,r4
- li r3,0x00A0 # PCISTAT
- li r8, 0x2
- sthbrx r3,r8,r5
- lis r3,0x8000 # ADDR_08
- ori r3,r3,0x0008
- stwbrx r3,0,r4
- li r3,0x10 # REVID
- stb r3,0x0(r5)
- lis r3,0x8000 # ADDR_09
- ori r3,r3,0x0009
- stwbrx r3,0,r4
- li r3,0x00 # PROGIR
- stb r3,0x1(r5)
- lis r3,0x8000 # ADDR_0A
- ori r3,r3,0x000A
- stwbrx r3,0,r4
- li r3,0x00 # SUBCCODE
- stb r3,0x2(r5)
- lis r3,0x8000 # ADDR_0B
- ori r3,r3,0x000B
- stwbrx r3,0,r4
- li r3,0x06 # PBCCR
- stb r3,0x3(r5)
- lis r3,0x8000 # ADDR_0C
- ori r3,r3,0x000C
- stwbrx r3,0,r4
- li r3,0x08 # PCLSR
- stb r3,0x0(r5)
- lis r3,0x8000 # ADDR_0D
- ori r3,r3,0x000D
- stwbrx r3,0,r4
- li r3,0x00 # PLTR
- stb r3,0x1(r5)
- lis r3,0x8000 # ADDR_0E
- ori r3,r3,0x000E
- stwbrx r3,0,r4
- li r3,0x00 # HEADTYPE
- stb r3,0x2(r5)
- lis r3,0x8000 # ADDR_0F
- ori r3,r3,0x000F
- stwbrx r3,0,r4
- li r3,0x00 # BISTCTRL
- stb r3,0x3(r5)
- lis r3,0x8000 # ADDR_10
- ori r3,r3,0x0010
- stwbrx r3,0,r4
- lis r3,0x0000 # LMBAR
- ori r3,r3,0x0008
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_14
- ori r3,r3,0x0014
- stwbrx r3,0,r4
- lis r3,0xF000 # PCSRBAR
- ori r3,r3,0x0000
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_3C
- ori r3,r3,0x003C
- stwbrx r3,0,r4
- li r3,0x00 # ILR
- stb r3,0x0(r5)
- lis r3,0x8000 # ADDR_3D
- ori r3,r3,0x003D
- stwbrx r3,0,r4
- li r3,0x01 # INTPIN
- stb r3,0x1(r5)
- lis r3,0x8000 # ADDR_3E
- ori r3,r3,0x003E
- stwbrx r3,0,r4
- li r3,0x00 # MIN_GNT
- stb r3,0x2(r5)
- lis r3,0x8000 # ADDR_3F
- ori r3,r3,0x003F
- stwbrx r3,0,r4
- li r3,0x00 # MAX_LAT
- stb r3,0x3(r5)
- lis r3,0x8000 # ADDR_40
- ori r3,r3,0x0040
- stwbrx r3,0,r4
- li r3,0x00 # BUSNB
- stb r3,0x0(r5)
- lis r3,0x8000 # ADDR_41
- ori r3,r3,0x0041
- stwbrx r3,0,r4
- li r3,0x00 # SBUSNB
- stb r3,0x1(r5)
- lis r3,0x8000 # ADDR_46
- ori r3,r3,0x0046
- stwbrx r3,0,r4
-# li r3,0xE080 # PCIARB
- li r3,-0x1F80 # PCIARB
- li r8, 0x2
- sthbrx r3,r8,r5
- lis r3,0x8000 # ADDR_70
- ori r3,r3,0x0070
- stwbrx r3,0,r4
- li r3,0x0000 # PMCR1
- li r8, 0x0
- sthbrx r3,r8,r5
- lis r3,0x8000 # ADDR_72
- ori r3,r3,0x0072
- stwbrx r3,0,r4
- li r3,0xC0 # PMCR2
- stb r3,0x2(r5)
- lis r3,0x8000 # ADDR_73
- ori r3,r3,0x0073
- stwbrx r3,0,r4
- li r3,0xEF # ODCR
- stb r3,0x3(r5)
- lis r3,0x8000 # ADDR_74
- ori r3,r3,0x0074
- stwbrx r3,0,r4
- li r3,0x7D00 # CLKDCR
- li r8, 0x0
- sthbrx r3,r8,r5
- lis r3,0x8000 # ADDR_76
- ori r3,r3,0x0076
- stwbrx r3,0,r4
- li r3,0x00 # MDCR
- stb r3,0x2(r5)
- lis r6,0xFCE0
- ori r6,r6,0x0000 # r6 is the EUMBAR Base Address
- lis r3,0x8000 # ADDR_78
- ori r3,r3,0x0078
- stwbrx r3,0,r4
- lis r3,0xFCE0 # EUMBBAR
- ori r3,r3,0x0000
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_80
- ori r3,r3,0x0080
- stwbrx r3,0,r4
- lis r3,0xFFFF # MSADDR1
- ori r3,r3,0x4000
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_84
- ori r3,r3,0x0084
- stwbrx r3,0,r4
- lis r3,0xFFFF # MSADDR2
- ori r3,r3,0xFFFF
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_88
- ori r3,r3,0x0088
- stwbrx r3,0,r4
- lis r3,0x0303 # EMSADDR1
- ori r3,r3,0x0000
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_8C
- ori r3,r3,0x008C
- stwbrx r3,0,r4
- lis r3,0x0303 # EMSADDR2
- ori r3,r3,0x0303
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_90
- ori r3,r3,0x0090
- stwbrx r3,0,r4
- lis r3,0xFFFF # EMEADDR1
- ori r3,r3,0x7F3F
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_94
- ori r3,r3,0x0094
- stwbrx r3,0,r4
- lis r3,0xFFFF # EMEADDR2
- ori r3,r3,0xFFFF
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_98
- ori r3,r3,0x0098
- stwbrx r3,0,r4
- lis r3,0x0303 # EXTEMEM1
- ori r3,r3,0x0000
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_9C
- ori r3,r3,0x009C
- stwbrx r3,0,r4
- lis r3,0x0303 # EXTEMEM2
- ori r3,r3,0x0303
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_A0
- ori r3,r3,0x00A0
- stwbrx r3,0,r4
- li r3,0x03 # MEMBNKEN
- stb r3,0x0(r5)
- lis r3,0x8000 # ADDR_A3
- ori r3,r3,0x00A3
- stwbrx r3,0,r4
- li r3,0x00 # MEMPMODE
- stb r3,0x3(r5)
- lis r3,0x8000 # ADDR_B8
- ori r3,r3,0x00B8
- stwbrx r3,0,r4
- li r3,0x00 # ECCCNT
- stb r3,0x0(r5)
- lis r3,0x8000 # ADDR_B9
- ori r3,r3,0x00B9
- stwbrx r3,0,r4
- li r3,0x00 # ECCTRG
- stb r3,0x1(r5)
- lis r3,0x8000 # ADDR_C0
- ori r3,r3,0x00C0
- stwbrx r3,0,r4
- li r3,0xFF # ERRENR1
- stb r3,0x0(r5)
- lis r3,0x8000 # ADDR_C1
- ori r3,r3,0x00C1
- stwbrx r3,0,r4
- li r3,0x00 # ERRDR1
- stb r3,0x1(r5)
- lis r3,0x8000 # ADDR_C3
- ori r3,r3,0x00C3
- stwbrx r3,0,r4
- li r3,0x50 # IPBESR
- stb r3,0x3(r5)
- lis r3,0x8000 # ADDR_C4
- ori r3,r3,0x00C4
- stwbrx r3,0,r4
- li r3,0xBF # ERRENR2
- stb r3,0x0(r5)
- lis r3,0x8000 # ADDR_C5
- ori r3,r3,0x00C5
- stwbrx r3,0,r4
- li r3,0x00 # ERRDR2
- stb r3,0x1(r5)
- lis r3,0x8000 # ADDR_C7
- ori r3,r3,0x00C7
- stwbrx r3,0,r4
- li r3,0x00 # PCIBESR
- stb r3,0x3(r5)
- lis r3,0x8000 # ADDR_C8
- ori r3,r3,0x00C8
- stwbrx r3,0,r4
- lis r3,0x0000 # BERRADDR
- ori r3,r3,0xE0FE
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_E0
- ori r3,r3,0x00E0
- stwbrx r3,0,r4
- li r3,0xC0 # AMBOR
- stb r3,0x0(r5)
- lis r3,0x8000 # ADDR_F4
- ori r3,r3,0x00F4
- stwbrx r3,0,r4
- lis r3,0x0000 # MCCR2
- ori r3,r3,0x020C
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_F8
- ori r3,r3,0x00F8
- stwbrx r3,0,r4
- lis r3,0x0230 # MCCR3
- ori r3,r3,0x0000
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_FC
- ori r3,r3,0x00FC
- stwbrx r3,0,r4
- lis r3,0x2532 # MCCR4
- ori r3,r3,0x2220
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_F0
- ori r3,r3,0x00F0
- stwbrx r3,0,r4
- lis r3,0xFFC8 # MCCR1
- ori r3,r3,0x0000
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_A8
- ori r3,r3,0x00A8
- stwbrx r3,0,r4
- lis r3,0xFF14 # PICR1
- ori r3,r3,0x1CC8
- li r8, 0x0
- stwbrx r3,r8,r5
- lis r3,0x8000 # ADDR_AC
- ori r3,r3,0x00AC
- stwbrx r3,0,r4
- lis r3,0x0000 # PICR2
- ori r3,r3,0x0000
- li r8, 0x0
- stwbrx r3,r8,r5
-
- blr
diff --git a/board/ppmc7xx/pci.c b/board/ppmc7xx/pci.c
deleted file mode 100644
index 5b115ea617..0000000000
--- a/board/ppmc7xx/pci.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * (C) Copyright 2002 ELTEC Elektronik AG
- * Frank Gottschling <fgottschling@eltec.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
- */
-
-/*
- * PCI initialisation for the MPC10x.
- */
-
-#include <common.h>
-#include <pci.h>
-#include <mpc106.h>
-
-#ifdef CONFIG_PCI
-
-struct pci_controller local_hose;
-
-void pci_init_board(void)
-{
- struct pci_controller* hose = (struct pci_controller *)&local_hose;
- u16 reg16;
-
- hose->first_busno = 0;
- hose->last_busno = 0xff;
-
- pci_set_region(hose->regions + 0,
- CFG_PCI_MEMORY_BUS,
- CFG_PCI_MEMORY_PHYS,
- CFG_PCI_MEMORY_SIZE,
- PCI_REGION_MEM | PCI_REGION_MEMORY);
-
- /* PCI memory space */
- pci_set_region(hose->regions + 1,
- CFG_PCI_MEM_BUS,
- CFG_PCI_MEM_PHYS,
- CFG_PCI_MEM_SIZE,
- PCI_REGION_MEM);
-
- /* ISA/PCI memory space */
- pci_set_region(hose->regions + 2,
- CFG_ISA_MEM_BUS,
- CFG_ISA_MEM_PHYS,
- CFG_ISA_MEM_SIZE,
- PCI_REGION_MEM);
-
- /* PCI I/O space */
- pci_set_region(hose->regions + 3,
- CFG_PCI_IO_BUS,
- CFG_PCI_IO_PHYS,
- CFG_PCI_IO_SIZE,
- PCI_REGION_IO);
-
- /* ISA/PCI I/O space */
- pci_set_region(hose->regions + 4,
- CFG_ISA_IO_BUS,
- CFG_ISA_IO_PHYS,
- CFG_ISA_IO_SIZE,
- PCI_REGION_IO);
-
- hose->region_count = 5;
-
- pci_setup_indirect(hose,
- MPC106_REG_ADDR,
- MPC106_REG_DATA);
-
- pci_register_hose(hose);
-
- hose->last_busno = pci_hose_scan(hose);
-
- /* Initialises the MPC10x PCI Configuration regs. */
- pci_read_config_word (PCI_BDF(0,0,0), PCI_COMMAND, &reg16);
- reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
- pci_write_config_word(PCI_BDF(0,0,0), PCI_COMMAND, reg16);
-
- /* Clear non-reserved bits in status register */
- pci_write_config_word(PCI_BDF(0,0,0), PCI_STATUS, 0xffff);
-}
-
-#endif /* CONFIG_PCI */
diff --git a/board/ppmc7xx/ppmc7xx.c b/board/ppmc7xx/ppmc7xx.c
deleted file mode 100644
index 402ac5e201..0000000000
--- a/board/ppmc7xx/ppmc7xx.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * ppmc7xx.c
- * ---------
- *
- * Main board-specific routines for Wind River PPMC 7xx/74xx board.
- *
- * By Richard Danter (richard.danter@windriver.com)
- * Copyright (C) 2005 Wind River Systems
- */
-
-#include <common.h>
-#include <command.h>
-
-
-/* Define some MPC107 (memory controller) registers */
-#define MPC107_EUMB_GCR 0xfce41020
-#define MPC107_EUMB_IACKR 0xfce600a0
-
-
-/* Function prototypes */
-extern void unlock_ram_in_cache( void );
-extern void _start_warm(void);
-
-
-/*
- * initdram()
- *
- * This function normally initialises the (S)DRAM of the system. For this board
- * the SDRAM was already initialised by board_asm_init (see init.S) so we just
- * return the size of RAM.
- */
-long initdram( int board_type )
-{
- return CFG_SDRAM_SIZE;
-}
-
-
-/*
- * after_reloc()
- *
- * This is called after U-Boot has been copied from Flash/ROM to RAM. It gives
- * us an opportunity to do some additional setup before the rest of the system
- * is initialised. We don't need to do anything, so we just call board_init_r()
- * which should never return.
- */
-void after_reloc( ulong dest_addr, gd_t* gd )
-{
- /* Jump to the main U-Boot board init code */
- board_init_r( gd, dest_addr );
-}
-
-
-/*
- * checkboard()
- *
- * We could do some board level checks here, such as working out what version
- * it is, but for this board we simply display it's name (on the console).
- */
-int checkboard( void )
-{
- puts( "Board: Wind River PPMC 7xx/74xx\n" );
- return 0;
-}
-
-
-/*
- * misc_init_r
- *
- * Used for other setup which needs to be done late in the bring-up phase.
- */
-int misc_init_r( void )
-{
- /* Reset the EPIC and clear pending interrupts */
- out32r(MPC107_EUMB_GCR, 0xa0000000);
- while( in32r( MPC107_EUMB_GCR ) & 0x80000000 );
- out32r( MPC107_EUMB_GCR, 0x20000000 );
- while( in32r( MPC107_EUMB_IACKR ) != 0xff );
-
- /* Enable the I-Cache */
- icache_enable();
-
- return 0;
-}
-
-
-/*
- * do_reset()
- *
- * Shell command to reset the board.
- */
-void do_reset( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[] )
-{
- printf( "Resetting...\n" );
-
- /* Disabe and invalidate cache */
- icache_disable();
- dcache_disable();
-
- /* Jump to warm start (in RAM) */
- _start_warm();
-
- /* Should never get here */
- while(1);
-}
diff --git a/board/ppmc7xx/u-boot.lds b/board/ppmc7xx/u-boot.lds
deleted file mode 100644
index 0dfa8c0005..0000000000
--- a/board/ppmc7xx/u-boot.lds
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@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
- */
-
-/*
- * u-boot.lds - linker script for U-Boot on the Galileo Eval Board.
- */
-
-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/74xx_7xx/start.o (.text)
-
-/* store the environment in a seperate sector in the boot flash */
-/* . = env_offset; */
-/* common/environment.o(.text) */
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- }
- .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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __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/ppmc8260/Makefile b/board/ppmc8260/Makefile
deleted file mode 100644
index 7fd545b9d5..0000000000
--- a/board/ppmc8260/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := ppmc8260.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ppmc8260/config.mk b/board/ppmc8260/config.mk
deleted file mode 100644
index d06fcead27..0000000000
--- a/board/ppmc8260/config.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (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
-#
-
-#
-# MBX8xx boards
-#
-
-TEXT_BASE = 0xfe000000
-TEXT_END = 0xfe080000
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/ppmc8260/ppmc8260.c b/board/ppmc8260/ppmc8260.c
deleted file mode 100644
index 2b20c26f17..0000000000
--- a/board/ppmc8260/ppmc8260.c
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Jay Monkman <jtm@smoothsmoothie.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
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 *ATMTXEN */
- /* PA30 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMTCA */
- /* PA29 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMTSOC */
- /* PA28 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 *ATMRXEN */
- /* PA27 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMRSOC */
- /* PA26 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMRCA */
- /* PA25 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[0] */
- /* PA24 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[1] */
- /* PA23 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[2] */
- /* PA22 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[3] */
- /* PA21 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[4] */
- /* PA20 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[5] */
- /* PA19 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[6] */
- /* PA18 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[7] */
- /* PA17 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[7] */
- /* PA16 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[6] */
- /* PA15 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[5] */
- /* PA14 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[4] */
- /* PA13 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[3] */
- /* PA12 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[2] */
- /* PA11 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[1] */
- /* PA10 */ { 0, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[0] */
- /* PA9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PA8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC2 RXD */
- /* PA7 */ { 1, 0, 0, 1, 0, 0 }, /* TDM_A1:L1TSYNC */
- /* PA6 */ { 1, 0, 0, 1, 0, 0 }, /* TDN_A1:L1RSYNC */
- /* PA5 */ { 0, 0, 0, 0, 0, 0 }, /* PA5 */
- /* PA4 */ { 0, 0, 0, 0, 0, 0 }, /* PA4 */
- /* PA3 */ { 0, 0, 0, 0, 0, 0 }, /* PA3 */
- /* PA2 */ { 0, 0, 0, 0, 0, 0 }, /* PA2 */
- /* PA1 */ { 0, 0, 0, 0, 0, 0 }, /* PA1 */
- /* PA0 */ { 0, 0, 0, 0, 0, 0 } /* PA0 */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { 0, 0, 0, 0, 0, 0 }, /* PB17 */
- /* PB16 */ { 1, 0, 0, 0, 0, 0 }, /* TDM_A1:L1CLK0 */
- /* PB15 */ { 1, 0, 0, 1, 0, 1 }, /* /FETHRST */
- /* PB14 */ { 1, 0, 0, 1, 0, 0 }, /* FETHDIS */
- /* PB13 */ { 0, 0, 0, 0, 0, 0 }, /* PB13 */
- /* PB12 */ { 1, 0, 0, 1, 0, 0 }, /* TDM_B1:L1CLK0 */
- /* PB11 */ { 1, 0, 0, 1, 0, 0 }, /* TDM_D1:L1TXD */
- /* PB10 */ { 1, 0, 0, 1, 0, 0 }, /* TDM_D1:L1RXD */
- /* PB9 */ { 1, 0, 0, 1, 0, 0 }, /* TDM_D1:L1TSYNC */
- /* PB8 */ { 1, 0, 0, 1, 0, 0 }, /* TDM_D1:L1RSYNC */
- /* PB7 */ { 0, 0, 0, 0, 0, 0 }, /* PB7 */
- /* PB6 */ { 0, 0, 0, 0, 0, 0 }, /* PB6 */
- /* PB5 */ { 0, 0, 0, 0, 0, 0 }, /* PB5 */
- /* PB4 */ { 0, 0, 0, 0, 0, 0 }, /* PB4 */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 0, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 0, 0, 0 }, /* PC30 */
- /* PC29 */ { 0, 0, 0, 0, 0, 0 }, /* PC28 */
- /* PC28 */ { 1, 1, 0, 0, 0, 0 }, /* CLK4 */
- /* PC27 */ { 0, 0, 0, 0, 0, 0 }, /* PC27 */
- /* PC26 */ { 0, 0, 0, 0, 0, 0 }, /* PC26 */
- /* PC25 */ { 1, 1, 0, 0, 0, 0 }, /* CLK7 */
- /* PC24 */ { 0, 0, 0, 0, 0, 0 }, /* PC24 */
- /* PC23 */ { 1, 0, 0, 1, 0, 0 }, /* ATMTFCLK */
- /* PC22 */ { 0, 0, 0, 0, 0, 0 }, /* PC22 */
- /* PC21 */ { 0, 0, 0, 0, 0, 0 }, /* PC23 */
- /* PC20 */ { 0, 0, 0, 0, 0, 0 }, /* PC24 */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_CLK */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII TX_CLK */
- /* PC17 */ { 0, 0, 0, 0, 0, 0 }, /* PC17 */
- /* PC16 */ { 0, 0, 0, 0, 0, 0 }, /* PC16 */
- /* PC15 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1:TxAddr[0] */
- /* PC14 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1:RxAddr[0] */
- /* PC13 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1:TxAddr[1] */
- /* PC12 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1:RxAddr[1] */
- /* PC11 */ { 1, 1, 0, 1, 0, 0 }, /* TDM_D1:L1CLK0 */
- /* PC10 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MDC */
- /* PC9 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MDIO */
- /* PC8 */ { 0, 0, 0, 0, 0, 0 }, /* PC8 */
- /* PC7 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1:TxAddr[2]*/
- /* PC6 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1:RxAddr[2] */
- /* PC5 */ { 0, 0, 0, 0, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 0, 0, 0 }, /* PC4 */
- /* PC3 */ { 1, 0, 0, 1, 0, 0 }, /* IDMA2:DACK */
- /* PC2 */ { 1, 0, 0, 1, 0, 0 }, /* IDMA2:DONE */
- /* PC1 */ { 1, 0, 0, 1, 0, 0 }, /* IDMA2:DREQ */
- /* PC0 */ { 1, 0, 0, 1, 0, 0 }, /* IDMA1:DREQ */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 0, 0, 0, 0, 0, 0 }, /* PD31 */
- /* PD30 */ { 0, 0, 0, 0, 0, 0 }, /* PD30 */
- /* PD29 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1:RxAddr[3] */
- /* PD28 */ { 0, 0, 0, 0, 0, 0 }, /* PD28 */
- /* PD27 */ { 0, 0, 0, 0, 0, 0 }, /* PD27 */
- /* PD26 */ { 1, 0, 0, 1, 0, 0 }, /* TDM_C1:L1RSYNC */
- /* PD25 */ { 0, 0, 0, 0, 0, 0 }, /* PD25 */
- /* PD24 */ { 0, 0, 0, 0, 0, 0 }, /* PD24 */
- /* PD23 */ { 0, 0, 0, 0, 0, 0 }, /* PD23 */
- /* PD22 */ { 0, 0, 0, 0, 0, 0 }, /* PD22 */
- /* PD21 */ { 0, 0, 0, 0, 0, 0 }, /* PD21 */
- /* PD20 */ { 0, 0, 0, 0, 0, 0 }, /* PD20 */
- /* PD19 */ { 0, 0, 0, 0, 0, 0 }, /* PD19 */
- /* PD18 */ { 0, 0, 0, 0, 0, 0 }, /* PD19 */
- /* PD17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXPRTY */
- /* PD16 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXPRTY */
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
- /* PD13 */ { 1, 0, 0, 0, 0, 0 }, /* TDM_B1:L1TXD */
- /* PD12 */ { 1, 0, 0, 0, 0, 0 }, /* TDM_B1:L1RXD */
- /* PD11 */ { 1, 0, 0, 0, 0, 0 }, /* TDM_B1:L1TSYNC */
- /* PD10 */ { 1, 0, 0, 0, 0, 0 }, /* TDM_B1:L1RSYNC*/
- /* PD9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC1:TXD */
- /* PD8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1:RXD */
- /* PD7 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1:SMSYN */
- /* PD6 */ { 1, 0, 0, 1, 0, 0 }, /* IDMA1:DACK */
- /* PD5 */ { 1, 0, 0, 1, 0, 0 }, /* IDMA1:DONE */
- /* PD4 */ { 0, 0, 0, 0, 0, 0 }, /* PD4 */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: Wind River PPMC8260\n");
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
- volatile uchar c = 0xff;
- volatile uchar *ramaddr0 = (uchar *) (CFG_SDRAM0_BASE);
- volatile uchar *ramaddr1 = (uchar *) (CFG_SDRAM1_BASE);
- ulong psdmr = CFG_PSDMR;
- volatile uchar *ramaddr2 = (uchar *) (CFG_SDRAM2_BASE);
- ulong lsdmr = CFG_LSDMR;
- int i;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_mptpr = CFG_MPTPR;
-
-#ifndef CFG_RAMBOOT
- memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
- *ramaddr0++ = c;
- *ramaddr1++ = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++) {
- *ramaddr0++ = c;
- *ramaddr1++ = c;
- }
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
- ramaddr0 = (uchar *) (CFG_SDRAM0_BASE + 0x110);
- ramaddr1 = (uchar *) (CFG_SDRAM1_BASE + 0x110);
- *ramaddr0 = c;
- *ramaddr1 = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr0 = c;
- *ramaddr1 = c;
-
- memctl->memc_lsdmr = lsdmr | PSDMR_OP_PREA;
- *ramaddr2++ = c;
-
- memctl->memc_lsdmr = lsdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++) {
- *ramaddr2++ = c;
- }
-
- memctl->memc_lsdmr = lsdmr | PSDMR_OP_MRW;
- *ramaddr2++ = c;
-
- memctl->memc_lsdmr = lsdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr2 = c;
-#endif
-
- /* return total ram size */
- return ((CFG_SDRAM0_SIZE + CFG_SDRAM1_SIZE) * 1024 * 1024);
-}
-
-#ifdef CONFIG_MISC_INIT_R
-/* ------------------------------------------------------------------------- */
-int misc_init_r (void)
-{
-#ifdef CFG_LED_BASE
- uchar ds = *(unsigned char *) (CFG_LED_BASE + 1);
- uchar ss;
- uchar tmp[64];
- int res;
-
- if ((ds != 0) && (ds != 0xff)) {
- res = getenv_r ("ethaddr", (char *)tmp, sizeof (tmp));
- if (res > 0) {
- ss = ((ds >> 4) & 0x0f);
- ss += ss < 0x0a ? '0' : ('a' - 10);
- tmp[15] = ss;
-
- ss = (ds & 0x0f);
- ss += ss < 0x0a ? '0' : ('a' - 10);
- tmp[16] = ss;
-
- tmp[17] = '\0';
- setenv ("ethaddr", (char *)tmp);
- /* set the led to show the address */
- *((unsigned char *) (CFG_LED_BASE + 1)) = ds;
- }
- }
-#endif /* CFG_LED_BASE */
- return (0);
-}
-#endif /* CONFIG_MISC_INIT_R */
diff --git a/board/ppmc8260/strataflash.c b/board/ppmc8260/strataflash.c
deleted file mode 100644
index f9abfac73f..0000000000
--- a/board/ppmc8260/strataflash.c
+++ /dev/null
@@ -1,752 +0,0 @@
-/*
- * (C) Copyright 2002
- * Brad Kemp, Seranoa Networks, Brad.Kemp@seranoa.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
- */
-
-#include <common.h>
-#include <mpc8260.h>
-#include <asm/processor.h>
-
-#undef DEBUG_FLASH
-/*
- * This file implements a Common Flash Interface (CFI) driver for U-Boot.
- * The width of the port and the width of the chips are determined at initialization.
- * These widths are used to calculate the address for access CFI data structures.
- * It has been tested on an Intel Strataflash implementation.
- *
- * References
- * JEDEC Standard JESD68 - Common Flash Interface (CFI)
- * JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
- * Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
- * Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
- *
- * TODO
- * Use Primary Extended Query table (PRI) and Alternate Algorithm Query Table (ALT) to determine if protection is available
- * Add support for other command sets Use the PRI and ALT to determine command set
- * Verify erase and program timeouts.
- */
-
-#define FLASH_CMD_CFI 0x98
-#define FLASH_CMD_READ_ID 0x90
-#define FLASH_CMD_RESET 0xff
-#define FLASH_CMD_BLOCK_ERASE 0x20
-#define FLASH_CMD_ERASE_CONFIRM 0xD0
-#define FLASH_CMD_WRITE 0x40
-#define FLASH_CMD_PROTECT 0x60
-#define FLASH_CMD_PROTECT_SET 0x01
-#define FLASH_CMD_PROTECT_CLEAR 0xD0
-#define FLASH_CMD_CLEAR_STATUS 0x50
-#define FLASH_CMD_WRITE_TO_BUFFER 0xE8
-#define FLASH_CMD_WRITE_BUFFER_CONFIRM 0xD0
-
-#define FLASH_STATUS_DONE 0x80
-#define FLASH_STATUS_ESS 0x40
-#define FLASH_STATUS_ECLBS 0x20
-#define FLASH_STATUS_PSLBS 0x10
-#define FLASH_STATUS_VPENS 0x08
-#define FLASH_STATUS_PSS 0x04
-#define FLASH_STATUS_DPS 0x02
-#define FLASH_STATUS_R 0x01
-#define FLASH_STATUS_PROTECT 0x01
-
-#define FLASH_OFFSET_CFI 0x55
-#define FLASH_OFFSET_CFI_RESP 0x10
-#define FLASH_OFFSET_WTOUT 0x1F
-#define FLASH_OFFSET_WBTOUT 0x20
-#define FLASH_OFFSET_ETOUT 0x21
-#define FLASH_OFFSET_CETOUT 0x22
-#define FLASH_OFFSET_WMAX_TOUT 0x23
-#define FLASH_OFFSET_WBMAX_TOUT 0x24
-#define FLASH_OFFSET_EMAX_TOUT 0x25
-#define FLASH_OFFSET_CEMAX_TOUT 0x26
-#define FLASH_OFFSET_SIZE 0x27
-#define FLASH_OFFSET_INTERFACE 0x28
-#define FLASH_OFFSET_BUFFER_SIZE 0x2A
-#define FLASH_OFFSET_NUM_ERASE_REGIONS 0x2C
-#define FLASH_OFFSET_ERASE_REGIONS 0x2D
-#define FLASH_OFFSET_PROTECT 0x02
-#define FLASH_OFFSET_USER_PROTECTION 0x85
-#define FLASH_OFFSET_INTEL_PROTECTION 0x81
-
-
-#define FLASH_MAN_CFI 0x01000000
-
-
-typedef union {
- unsigned char c;
- unsigned short w;
- unsigned long l;
-} cfiword_t;
-
-typedef union {
- unsigned char * cp;
- unsigned short *wp;
- unsigned long *lp;
-} cfiptr_t;
-
-#define NUM_ERASE_REGIONS 4
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c);
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf);
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_detect_cfi(flash_info_t * info);
-static ulong flash_get_size (ulong base, int banknum);
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword);
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt);
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len);
-#endif
-/*-----------------------------------------------------------------------
- * create an address based on the offset and the port width
- */
-inline uchar * flash_make_addr(flash_info_t * info, int sect, int offset)
-{
- return ((uchar *)(info->start[sect] + (offset * info->portwidth)));
-}
-/*-----------------------------------------------------------------------
- * read a character at a port width address
- */
-inline uchar flash_read_uchar(flash_info_t * info, uchar offset)
-{
- uchar *cp;
- cp = flash_make_addr(info, 0, offset);
- return (cp[info->portwidth - 1]);
-}
-
-/*-----------------------------------------------------------------------
- * read a short word by swapping for ppc format.
- */
-ushort flash_read_ushort(flash_info_t * info, int sect, uchar offset)
-{
- uchar * addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ((addr[(2*info->portwidth) - 1] << 8) | addr[info->portwidth - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- * read a long word by picking the least significant byte of each maiximum
- * port size word. Swap for ppc format.
- */
-ulong flash_read_long(flash_info_t * info, int sect, uchar offset)
-{
- uchar * addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ( (addr[(2*info->portwidth) - 1] << 24 ) | (addr[(info->portwidth) -1] << 16) |
- (addr[(4*info->portwidth) - 1] << 8) | addr[(3*info->portwidth) - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size;
- int i;
- unsigned long address;
-
-
- /* The flash is positioned back to back, with the demultiplexing of the chip
- * based on the A24 address line.
- *
- */
-
- address = CFG_FLASH_BASE;
- size = 0;
-
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- size += flash_info[i].size = flash_get_size(address, i);
- address += CFG_FLASH_INCREMENT;
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",i,
- flash_info[0].size, flash_info[i].size<<20);
- }
- }
-
- /* Monitor protection ON by default */
-#if (CFG_MONITOR_BASE >= CFG_FLASH_BASE)
- for(i=0; flash_info[0].start[i] < CFG_MONITOR_BASE+monitor_flash_len-1; i++)
- (void)flash_real_protect(&flash_info[0], i, 1);
-#endif
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int rcode = 0;
- int prot;
- int sect;
-
- if( info->flash_id != FLASH_MAN_CFI) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
- if ((s_first < 0) || (s_first > s_last)) {
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- flash_write_cmd(info, sect, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sect, 0, FLASH_CMD_BLOCK_ERASE);
- flash_write_cmd(info, sect, 0, FLASH_CMD_ERASE_CONFIRM);
-
- if(flash_full_status_check(info, sect, info->erase_blk_tout, "erase")) {
- rcode = 1;
- } else
- printf(".");
- }
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id != FLASH_MAN_CFI) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- printf("CFI conformant FLASH (%d x %d)",
- (info->portwidth << 3 ), (info->chipwidth << 3 ));
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
- printf(" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n",
- info->erase_blk_tout, info->write_tout, info->buffer_write_tout, info->buffer_size);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n");
- printf (" %08lX%5s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong wp;
- ulong cp;
- int aln;
- cfiword_t cword;
- int i, rc;
-
- /* get lower aligned address */
- wp = (addr & ~(info->portwidth - 1));
-
- /* handle unaligned start */
- if((aln = addr - wp) != 0) {
- cword.l = 0;
- cp = wp;
- for(i=0;i<aln; ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *)cp));
-
- for(; (i< info->portwidth) && (cnt > 0) ; i++) {
- flash_add_byte(info, &cword, *src++);
- cnt--;
- cp++;
- }
- for(; (cnt == 0) && (i < info->portwidth); ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *)cp));
- if((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp = cp;
- }
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
- while(cnt >= info->portwidth) {
- i = info->buffer_size > cnt? cnt: info->buffer_size;
- if((rc = flash_write_cfibuffer(info, wp, src,i)) != ERR_OK)
- return rc;
- wp += i;
- src += i;
- cnt -=i;
- }
-#else
- /* handle the aligned part */
- while(cnt >= info->portwidth) {
- cword.l = 0;
- for(i = 0; i < info->portwidth; i++) {
- flash_add_byte(info, &cword, *src++);
- }
- if((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp += info->portwidth;
- cnt -= info->portwidth;
- }
-#endif /* CFG_FLASH_USE_BUFFER_WRITE */
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- cword.l = 0;
- for (i=0, cp=wp; (i<info->portwidth) && (cnt>0); ++i, ++cp) {
- flash_add_byte(info, &cword, *src++);
- --cnt;
- }
- for (; i<info->portwidth; ++i, ++cp) {
- flash_add_byte(info, & cword, (*(uchar *)cp));
- }
-
- return flash_write_cfiword(info, wp, cword);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
- int retcode = 0;
-
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT);
- if(prot)
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_SET);
- else
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_CLEAR);
-
- if((retcode = flash_full_status_check(info, sector, info->erase_blk_tout,
- prot?"protect":"unprotect")) == 0) {
-
- info->protect[sector] = prot;
- /* Intel's unprotect unprotects all locking */
- if(prot == 0) {
- int i;
- for(i = 0 ; i<info->sector_count; i++) {
- if(info->protect[i])
- flash_real_protect(info, i, 1);
- }
- }
- }
-
- return retcode;
-}
-/*-----------------------------------------------------------------------
- * wait for XSR.7 to be set. Time out with an error if it does not.
- * This routine does not set the flash to read-array mode.
- */
-static int flash_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
- ulong start;
-
- /* Wait for command completion */
- start = get_timer (0);
- while(!flash_isset(info, sector, 0, FLASH_STATUS_DONE)) {
- if (get_timer(start) > info->erase_blk_tout) {
- printf("Flash %s timeout at address %lx\n", prompt, info->start[sector]);
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return ERR_TIMOUT;
- }
- }
- return ERR_OK;
-}
-/*-----------------------------------------------------------------------
- * Wait for XSR.7 to be set, if it times out print an error, otherwise do a full status check.
- * This routine sets the flash to read-array mode.
- */
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
- int retcode;
- retcode = flash_status_check(info, sector, tout, prompt);
- if((retcode == ERR_OK) && !flash_isequal(info,sector, 0, FLASH_STATUS_DONE)) {
- retcode = ERR_INVAL;
- printf("Flash %s error at address %lx\n", prompt,info->start[sector]);
- if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS | FLASH_STATUS_PSLBS)){
- printf("Command Sequence Error.\n");
- } else if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS)){
- printf("Block Erase Error.\n");
- retcode = ERR_NOT_ERASED;
- } else if (flash_isset(info, sector, 0, FLASH_STATUS_PSLBS)) {
- printf("Locking Error\n");
- }
- if(flash_isset(info, sector, 0, FLASH_STATUS_DPS)){
- printf("Block locked.\n");
- retcode = ERR_PROTECTED;
- }
- if(flash_isset(info, sector, 0, FLASH_STATUS_VPENS))
- printf("Vpp Low Error.\n");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return retcode;
-}
-/*-----------------------------------------------------------------------
- */
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c)
-{
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cword->c = c;
- break;
- case FLASH_CFI_16BIT:
- cword->w = (cword->w << 8) | c;
- break;
- case FLASH_CFI_32BIT:
- cword->l = (cword->l << 8) | c;
- }
-}
-
-
-/*-----------------------------------------------------------------------
- * make a proper sized command based on the port and chip widths
- */
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf)
-{
- int i;
- uchar *cp = (uchar *)cmdbuf;
- for(i=0; i< info->portwidth; i++)
- *cp++ = ((i+1) % info->chipwidth) ? '\0':cmd;
-}
-
-/*
- * Write a proper sized command to the correct address
- */
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
-
- volatile cfiptr_t addr;
- cfiword_t cword;
- addr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- *addr.cp = cword.c;
- break;
- case FLASH_CFI_16BIT:
- *addr.wp = cword.w;
- break;
- case FLASH_CFI_32BIT:
- *addr.lp = cword.l;
- break;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = (cptr.cp[0] == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = (cptr.wp[0] == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = (cptr.lp[0] == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-/*-----------------------------------------------------------------------
- */
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-
-/*-----------------------------------------------------------------------
- * detect if flash is compatible with the Common Flash Interface (CFI)
- * http://www.jedec.org/download/search/jesd68.pdf
- *
-*/
-static int flash_detect_cfi(flash_info_t * info)
-{
-
- for(info->portwidth=FLASH_CFI_8BIT; info->portwidth <= FLASH_CFI_32BIT;
- info->portwidth <<= 1) {
- for(info->chipwidth =FLASH_CFI_BY8;
- info->chipwidth <= info->portwidth;
- info->chipwidth <<= 1) {
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
- flash_write_cmd(info, 0, FLASH_OFFSET_CFI, FLASH_CMD_CFI);
- if(flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP,'Q') &&
- flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 1, 'R') &&
- flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 2, 'Y'))
- return 1;
- }
- }
- return 0;
-}
-/*
- * The following code cannot be run from FLASH!
- *
- */
-static ulong flash_get_size (ulong base, int banknum)
-{
- flash_info_t * info = &flash_info[banknum];
- int i, j;
- int sect_cnt;
- unsigned long sector;
- unsigned long tmp;
- int size_ratio;
- uchar num_erase_regions;
- int erase_region_size;
- int erase_region_count;
-
- info->start[0] = base;
-
- if(flash_detect_cfi(info)){
- size_ratio = info->portwidth / info->chipwidth;
- num_erase_regions = flash_read_uchar(info, FLASH_OFFSET_NUM_ERASE_REGIONS);
-#ifdef DEBUG_FLASH
- printf("found %d erase regions\n", num_erase_regions);
-#endif
- sect_cnt = 0;
- sector = base;
- for(i = 0 ; i < num_erase_regions; i++) {
- if(i > NUM_ERASE_REGIONS) {
- printf("%d erase regions found, only %d used\n",
- num_erase_regions, NUM_ERASE_REGIONS);
- break;
- }
- tmp = flash_read_long(info, 0, FLASH_OFFSET_ERASE_REGIONS);
- erase_region_size = (tmp & 0xffff)? ((tmp & 0xffff) * 256): 128;
- tmp >>= 16;
- erase_region_count = (tmp & 0xffff) +1;
- for(j = 0; j< erase_region_count; j++) {
- info->start[sect_cnt] = sector;
- sector += (erase_region_size * size_ratio);
- info->protect[sect_cnt] = flash_isset(info, sect_cnt, FLASH_OFFSET_PROTECT, FLASH_STATUS_PROTECT);
- sect_cnt++;
- }
- }
-
- info->sector_count = sect_cnt;
- /* multiply the size by the number of chips */
- info->size = (1 << flash_read_uchar(info, FLASH_OFFSET_SIZE)) * size_ratio;
- info->buffer_size = (1 << flash_read_ushort(info, 0, FLASH_OFFSET_BUFFER_SIZE));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_ETOUT);
- info->erase_blk_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_EMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WBTOUT);
- info->buffer_write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WBMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WTOUT);
- info->write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WMAX_TOUT)))/ 1000;
- info->flash_id = FLASH_MAN_CFI;
- }
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
- return(info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
-{
-
- cfiptr_t ctladdr;
- cfiptr_t cptr;
- int flag;
-
- ctladdr.cp = flash_make_addr(info, 0, 0);
- cptr.cp = (uchar *)dest;
-
-
- /* Check if Flash is (sufficiently) erased */
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- flag = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- flag = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- flag = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- return 2;
- }
- if(!flag)
- return 2;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, 0, 0, FLASH_CMD_WRITE);
-
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cptr.cp[0] = cword.c;
- break;
- case FLASH_CFI_16BIT:
- cptr.wp[0] = cword.w;
- break;
- case FLASH_CFI_32BIT:
- cptr.lp[0] = cword.l;
- break;
- }
-
- /* re-enable interrupts if necessary */
- if(flag)
- enable_interrupts();
-
- return flash_full_status_check(info, 0, info->write_tout, "write");
-}
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-
-/* loop through the sectors from the highest address
- * when the passed address is greater or equal to the sector address
- * we have a match
- */
-static int find_sector(flash_info_t *info, ulong addr)
-{
- int sector;
- for(sector = info->sector_count - 1; sector >= 0; sector--) {
- if(addr >= info->start[sector])
- break;
- }
- return sector;
-}
-
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len)
-{
-
- int sector;
- int cnt;
- int retcode;
- volatile cfiptr_t src;
- volatile cfiptr_t dst;
-
- src.cp = cp;
- dst.cp = (uchar *)dest;
- sector = find_sector(info, dest);
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_TO_BUFFER);
- if((retcode = flash_status_check(info, sector, info->buffer_write_tout,
- "write to buffer")) == ERR_OK) {
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cnt = len;
- break;
- case FLASH_CFI_16BIT:
- cnt = len >> 1;
- break;
- case FLASH_CFI_32BIT:
- cnt = len >> 2;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- flash_write_cmd(info, sector, 0, (uchar)cnt-1);
- while(cnt-- > 0) {
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- *dst.cp++ = *src.cp++;
- break;
- case FLASH_CFI_16BIT:
- *dst.wp++ = *src.wp++;
- break;
- case FLASH_CFI_32BIT:
- *dst.lp++ = *src.lp++;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_BUFFER_CONFIRM);
- retcode = flash_full_status_check(info, sector, info->buffer_write_tout,
- "buffer write");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- return retcode;
-}
-#endif /* CFG_USE_FLASH_BUFFER_WRITE */
diff --git a/board/ppmc8260/u-boot.lds b/board/ppmc8260/u-boot.lds
deleted file mode 100644
index 84d4b78b9e..0000000000
--- a/board/ppmc8260/u-boot.lds
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * (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
- */
-
-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/mpc8260/start.o (.text)
- *(.text)
- common/environment.o(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/prodrive/common/flash.c b/board/prodrive/common/flash.c
deleted file mode 100644
index 363631fd84..0000000000
--- a/board/prodrive/common/flash.c
+++ /dev/null
@@ -1,560 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@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 <common.h>
-#include <asm/processor.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*
- * Functions
- */
-static int write_word(flash_info_t *info, ulong dest, ulong data);
-
-void flash_print_info(flash_info_t *info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("ST "); break;
- case FLASH_MAN_EXCEL: printf ("Excel Semiconductor "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 M, top sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 M, bottom sector)\n");
- break;
- case FLASH_AMDL322T: printf ("AM29DL322T (32 M, top sector)\n");
- break;
- case FLASH_AMDL322B: printf ("AM29DL322B (32 M, bottom sector)\n");
- break;
- case FLASH_AMDL323T: printf ("AM29DL323T (32 M, top sector)\n");
- break;
- case FLASH_AMDL323B: printf ("AM29DL323B (32 M, bottom sector)\n");
- break;
- case FLASH_SST020: printf ("SST39LF/VF020 (2 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST040: printf ("SST39LF/VF040 (4 Mbit, uniform sector size)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
-#ifdef CFG_FLASH_EMPTY_INFO
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++) {
- if (*flash++ != 0xffffffff) {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- /* print empty and read-only info */
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
-#else
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
-#endif
-
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size(vu_long *addr, flash_info_t *info)
-{
- short i;
- short n;
- CFG_FLASH_WORD_SIZE value;
- ulong base = (ulong)addr;
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00900090;
-
- value = addr2[CFG_FLASH_READ0];
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (CFG_FLASH_WORD_SIZE)FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (CFG_FLASH_WORD_SIZE)SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case (CFG_FLASH_WORD_SIZE)STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- case (CFG_FLASH_WORD_SIZE)EXCEL_MANUFACT:
- info->flash_id = FLASH_MAN_EXCEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[CFG_FLASH_READ1]; /* device ID */
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL322T:
- info->flash_id += FLASH_AMDL322T;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL322B:
- info->flash_id += FLASH_AMDL322B;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL323T:
- info->flash_id += FLASH_AMDL323T;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)AMD_ID_DL323B:
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x00400000; break; /* => 4 MB */
-
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF020:
- info->flash_id += FLASH_SST020;
- info->sector_count = 64;
- info->size = 0x00040000;
- break; /* => 256 kB */
-
- case (CFG_FLASH_WORD_SIZE)SST_ID_xF040:
- info->flash_id += FLASH_SST040;
- info->sector_count = 128;
- info->size = 0x00080000;
- break; /* => 512 kB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00001000);
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324B)) {
- /* set sector offsets for bottom boot block type */
- for (i=0; i<8; ++i) { /* 8 x 8k boot sectors */
- info->start[i] = base;
- base += 8 << 10;
- }
- while (i < info->sector_count) { /* 64k regular sectors */
- info->start[i] = base;
- base += 64 << 10;
- ++i;
- }
- } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
- ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324T)) {
- /* set sector offsets for top boot block type */
- base += info->size;
- i = info->sector_count;
- for (n=0; n<8; ++n) { /* 8 x 8k boot sectors */
- base -= 8 << 10;
- --i;
- info->start[i] = base;
- }
- while (i > 0) { /* 64k regular sectors */
- base -= 64 << 10;
- --i;
- info->start[i] = base;
- }
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_AMD)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[CFG_FLASH_READ2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (CFG_FLASH_WORD_SIZE *)info->start[0];
- *addr2 = (CFG_FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *)(info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN)
- printf ("- missing\n");
- else
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect)
- if (info->protect[sect])
- prot++;
-
- if (prot)
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- else
- printf ("\n");
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *)(info->start[sect]);
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE)0x00300030; /* sector erase */
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- flag = 0;
- }
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((addr2[0] & (CFG_FLASH_WORD_SIZE)0x00800080) !=
- (CFG_FLASH_WORD_SIZE)0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT)
- return (1);
- }
- } else {
- if (sect == s_first) {
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- }
- addr2[0] = (CFG_FLASH_WORD_SIZE)0x00300030; /* sector erase */
- }
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (CFG_FLASH_WORD_SIZE *)(info->start[l_sect]);
- while ((addr[0] & (CFG_FLASH_WORD_SIZE)0x00800080) != (CFG_FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (CFG_FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (CFG_FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i)
- data = (data << 8) | *src++;
- if ((rc = write_word(info, wp, data)) != 0)
- return (rc);
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0)
- return (0);
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp)
- data = (data << 8) | (*(uchar *)cp);
-
- return (write_word(info, wp, data));
-}
-
-/*
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word(flash_info_t *info, ulong dest, ulong data)
-{
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *)(info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *)dest;
- volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *)&data;
- ulong start;
- int flag;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data)
- return (2);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- for (i=0; i<4/sizeof(CFG_FLASH_WORD_SIZE); i++) {
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE)0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE)0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (CFG_FLASH_WORD_SIZE)0x00800080) !=
- (data2[i] & (CFG_FLASH_WORD_SIZE)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT)
- return (1);
- }
- }
-
- return (0);
-}
diff --git a/board/prodrive/common/fpga.c b/board/prodrive/common/fpga.c
deleted file mode 100644
index f9412a21eb..0000000000
--- a/board/prodrive/common/fpga.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * (C) Copyright 2001-2004
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef FPGA_DEBUG
-#define DBG(x...) printf(x)
-#else
-#define DBG(x...)
-#endif /* DEBUG */
-
-#define FPGA_PRG CFG_FPGA_PRG /* FPGA program pin (cpu output)*/
-#define FPGA_CLK CFG_FPGA_CLK /* FPGA clk pin (cpu output) */
-#define FPGA_DATA CFG_FPGA_DATA /* FPGA data pin (cpu output) */
-#define FPGA_DONE CFG_FPGA_DONE /* FPGA done pin (cpu input) */
-#define FPGA_INIT CFG_FPGA_INIT /* FPGA init pin (cpu input) */
-
-#define ERROR_FPGA_PRG_INIT_LOW -1 /* Timeout after PRG* asserted */
-#define ERROR_FPGA_PRG_INIT_HIGH -2 /* Timeout after PRG* deasserted */
-#define ERROR_FPGA_PRG_DONE -3 /* Timeout after programming */
-
-#ifndef OLD_VAL
-# define OLD_VAL 0
-#endif
-
-#if 0 /* test-only */
-#define FPGA_WRITE_1 { \
- SET_FPGA(OLD_VAL | FPGA_PRG | 0 | FPGA_DATA); /* set clock to 0 */ \
- SET_FPGA(OLD_VAL | FPGA_PRG | 0 | FPGA_DATA); /* set data to 1 */ \
- SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | FPGA_DATA); /* set clock to 1 */ \
- SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | FPGA_DATA);} /* set data to 1 */
-
-#define FPGA_WRITE_0 { \
- SET_FPGA(OLD_VAL | FPGA_PRG | 0 | FPGA_DATA); /* set clock to 0 */ \
- SET_FPGA(OLD_VAL | FPGA_PRG | 0 | 0 ); /* set data to 0 */ \
- SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | 0 ); /* set clock to 1 */ \
- SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | FPGA_DATA);} /* set data to 1 */
-#else
-#define FPGA_WRITE_1 { \
- SET_FPGA(OLD_VAL | FPGA_PRG | 0 | FPGA_DATA); /* set data to 1 */ \
- SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | FPGA_DATA);} /* set data to 1 */
-
-#define FPGA_WRITE_0 { \
- SET_FPGA(OLD_VAL | FPGA_PRG | 0 | 0 ); /* set data to 0 */ \
- SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | 0 );} /* set data to 1 */
-#endif
-
-static int fpga_boot(unsigned char *fpgadata, int size)
-{
- int i,index,len;
- int count;
- int j;
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = fpgadata[index];
- DBG("FPGA: %s\n", &(fpgadata[index+1]));
- index += len+3;
- }
-
- /* search for preamble 0xFFFFFFFF */
- while (1) {
- if ((fpgadata[index] == 0xff) && (fpgadata[index+1] == 0xff) &&
- (fpgadata[index+2] == 0xff) && (fpgadata[index+3] == 0xff))
- break; /* preamble found */
- else
- index++;
- }
-
- DBG("FPGA: configdata starts at position 0x%x\n",index);
- DBG("FPGA: length of fpga-data %d\n", size-index);
-
- /*
- * Setup port pins for fpga programming
- */
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA); /* set pins to high */
-
- DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
- DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
- /*
- * Init fpga by asserting and deasserting PROGRAM*
- */
- SET_FPGA(0 | FPGA_CLK | FPGA_DATA); /* set prog active */
-
- /* Wait for FPGA init line low */
- count = 0;
- while (FPGA_INIT_STATE) {
- udelay(1000); /* wait 1ms */
- /* Check for timeout - 100us max, so use 3ms */
- if (count++ > 3) {
- DBG("FPGA: Booting failed!\n");
- return ERROR_FPGA_PRG_INIT_LOW;
- }
- }
-
- DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
- DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
- /* deassert PROGRAM* */
- SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA); /* set prog inactive */
-
- /* Wait for FPGA end of init period . */
- count = 0;
- while (!(FPGA_INIT_STATE)) {
- udelay(1000); /* wait 1ms */
- /* Check for timeout */
- if (count++ > 3) {
- DBG("FPGA: Booting failed!\n");
- return ERROR_FPGA_PRG_INIT_HIGH;
- }
- }
-
- DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
- DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
- DBG("write configuration data into fpga\n");
- /* write configuration-data into fpga... */
-
- /*
- * Load uncompressed image into fpga
- */
- for (i=index; i<size; i++) {
- for (j=0; j<8; j++) {
- if ((fpgadata[i] & 0x80) == 0x80) {
- FPGA_WRITE_1;
- } else {
- FPGA_WRITE_0;
- }
- fpgadata[i] <<= 1;
- }
- }
-
- DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
- DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
- /*
- * Check if fpga's DONE signal - correctly booted ?
- */
-
- /* Wait for FPGA end of programming period . */
- count = 0;
- while (!(FPGA_DONE_STATE)) {
- udelay(1000); /* wait 1ms */
- /* Check for timeout */
- if (count++ > 3) {
- DBG("FPGA: Booting failed!\n");
- return ERROR_FPGA_PRG_DONE;
- }
- }
-
- DBG("FPGA: Booting successful!\n");
- return 0;
-}
diff --git a/board/prodrive/pdnb3/Makefile b/board/prodrive/pdnb3/Makefile
deleted file mode 100644
index 096db6f7af..0000000000
--- a/board/prodrive/pdnb3/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := flash.o pdnb3.o nand.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/prodrive/pdnb3/config.mk b/board/prodrive/pdnb3/config.mk
deleted file mode 100644
index 767075884a..0000000000
--- a/board/prodrive/pdnb3/config.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-TEXT_BASE = 0x01f00000
-
-# include NPE ethernet driver
-BOARDLIBS = $(obj)cpu/ixp/npe/libnpe.a
diff --git a/board/prodrive/pdnb3/flash.c b/board/prodrive/pdnb3/flash.c
deleted file mode 100644
index d0e5fe703b..0000000000
--- a/board/prodrive/pdnb3/flash.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@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 <common.h>
-#include <asm/arch/ixp425.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*
- * Prototypes
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-
-static inline ulong ld(ulong x)
-{
- ulong k = 0;
-
- while (x >>= 1)
- ++k;
-
- return k;
-}
-
-unsigned long flash_init(void)
-{
- unsigned long size;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; i++)
- flash_info[i].flash_id = FLASH_UNKNOWN;
-
- size = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN)
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size<<20);
-
- /* Reconfigure CS0 to actual FLASH size */
- *IXP425_EXP_CS0 = (*IXP425_EXP_CS0 & ~0x00003C00) | ((ld(size) - 9) << 10);
-
- /* Monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE, CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[CFG_MAX_FLASH_BANKS - 1]);
-
- /* Environment protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[CFG_MAX_FLASH_BANKS - 1]);
-
- /* Redundant environment protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE_REDUND - 1,
- &flash_info[CFG_MAX_FLASH_BANKS - 1]);
-
- flash_info[0].size = size;
-
- return size;
-}
diff --git a/board/prodrive/pdnb3/nand.c b/board/prodrive/pdnb3/nand.c
deleted file mode 100644
index 92f9c01902..0000000000
--- a/board/prodrive/pdnb3/nand.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@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 <common.h>
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-
-#include <nand.h>
-
-struct pdnb3_ndfc_regs {
- uchar cmd;
- uchar wait;
- uchar addr;
- uchar term;
- uchar data;
-};
-
-static u8 hwctl;
-static struct pdnb3_ndfc_regs *pdnb3_ndfc;
-
-#define readb(addr) *(volatile u_char *)(addr)
-#define readl(addr) *(volatile u_long *)(addr)
-#define writeb(d,addr) *(volatile u_char *)(addr) = (d)
-
-/*
- * The PDNB3 has a NAND Flash Controller (NDFC) that handles all accesses to
- * the NAND devices. The NDFC has command, address and data registers that
- * when accessed will set up the NAND flash pins appropriately. We'll use the
- * hwcontrol function to save the configuration in a global variable.
- * We can then use this information in the read and write functions to
- * determine which NDFC register to access.
- *
- * There is one NAND devices on the board, a Hynix HY27US08561A (32 MByte).
- */
-static void pdnb3_nand_hwcontrol(struct mtd_info *mtd, int cmd)
-{
- switch (cmd) {
- case NAND_CTL_SETCLE:
- hwctl |= 0x1;
- break;
- case NAND_CTL_CLRCLE:
- hwctl &= ~0x1;
- break;
-
- case NAND_CTL_SETALE:
- hwctl |= 0x2;
- break;
- case NAND_CTL_CLRALE:
- hwctl &= ~0x2;
- break;
-
- case NAND_CTL_SETNCE:
- break;
- case NAND_CTL_CLRNCE:
- writeb(0x00, &(pdnb3_ndfc->term));
- break;
- }
-}
-
-static void pdnb3_nand_write_byte(struct mtd_info *mtd, u_char byte)
-{
- if (hwctl & 0x1)
- writeb(byte, &(pdnb3_ndfc->cmd));
- else if (hwctl & 0x2)
- writeb(byte, &(pdnb3_ndfc->addr));
- else
- writeb(byte, &(pdnb3_ndfc->data));
-}
-
-static u_char pdnb3_nand_read_byte(struct mtd_info *mtd)
-{
- return readb(&(pdnb3_ndfc->data));
-}
-
-static void pdnb3_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
-{
- int i;
-
- for (i = 0; i < len; i++) {
- if (hwctl & 0x1)
- writeb(buf[i], &(pdnb3_ndfc->cmd));
- else if (hwctl & 0x2)
- writeb(buf[i], &(pdnb3_ndfc->addr));
- else
- writeb(buf[i], &(pdnb3_ndfc->data));
- }
-}
-
-static void pdnb3_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
-{
- int i;
-
- if (len % 4) {
- for (i = 0; i < len; i++)
- buf[i] = readb(&(pdnb3_ndfc->data));
- } else {
- ulong *ptr = (ulong *)buf;
- int count = len >> 2;
-
- for (i = 0; i < count; i++)
- *ptr++ = readl(&(pdnb3_ndfc->data));
- }
-}
-
-static int pdnb3_nand_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
-{
- int i;
-
- for (i = 0; i < len; i++)
- if (buf[i] != readb(&(pdnb3_ndfc->data)))
- return i;
-
- return 0;
-}
-
-static int pdnb3_nand_dev_ready(struct mtd_info *mtd)
-{
- volatile u_char val;
-
- /*
- * Blocking read to wait for NAND to be ready
- */
- val = readb(&(pdnb3_ndfc->wait));
-
- /*
- * Return always true
- */
- return 1;
-}
-
-int board_nand_init(struct nand_chip *nand)
-{
- pdnb3_ndfc = (struct pdnb3_ndfc_regs *)CFG_NAND_BASE;
-
- nand->eccmode = NAND_ECC_SOFT;
-
- /* Set address of NAND IO lines (Using Linear Data Access Region) */
- nand->IO_ADDR_R = (void __iomem *) ((ulong) pdnb3_ndfc + 0x4);
- nand->IO_ADDR_W = (void __iomem *) ((ulong) pdnb3_ndfc + 0x4);
- /* Reference hardware control function */
- nand->hwcontrol = pdnb3_nand_hwcontrol;
- /* Set command delay time */
- nand->hwcontrol = pdnb3_nand_hwcontrol;
- nand->write_byte = pdnb3_nand_write_byte;
- nand->read_byte = pdnb3_nand_read_byte;
- nand->write_buf = pdnb3_nand_write_buf;
- nand->read_buf = pdnb3_nand_read_buf;
- nand->verify_buf = pdnb3_nand_verify_buf;
- nand->dev_ready = pdnb3_nand_dev_ready;
- return 0;
-}
-#endif
diff --git a/board/prodrive/pdnb3/pdnb3.c b/board/prodrive/pdnb3/pdnb3.c
deleted file mode 100644
index e2fed5d748..0000000000
--- a/board/prodrive/pdnb3/pdnb3.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@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 <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <asm/arch/ixp425.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* Prototypes */
-int gunzip(void *, int, unsigned char *, unsigned long *);
-int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-
-/* predefine these here for FPGA programming (before including fpga.c) */
-#define SET_FPGA(data) *IXP425_GPIO_GPOUTR = (data)
-#define FPGA_DONE_STATE (*IXP425_GPIO_GPINR & CFG_FPGA_DONE)
-#define FPGA_INIT_STATE (*IXP425_GPIO_GPINR & CFG_FPGA_INIT)
-#define OLD_VAL old_val
-
-static unsigned long old_val = 0;
-
-/*
- * include common fpga code (for prodrive boards)
- */
-#include "../common/fpga.c"
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-int board_post_init(void)
-{
- return (0);
-}
-
-int board_init(void)
-{
- /* arch number of PDNB3 */
- gd->bd->bi_arch_number = MACH_TYPE_PDNB3;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x00000100;
-
- GPIO_OUTPUT_SET(CFG_GPIO_FPGA_RESET);
- GPIO_OUTPUT_ENABLE(CFG_GPIO_FPGA_RESET);
-
- GPIO_OUTPUT_SET(CFG_GPIO_SYS_RUNNING);
- GPIO_OUTPUT_ENABLE(CFG_GPIO_SYS_RUNNING);
-
- /*
- * Setup GPIO's for FPGA programming
- */
- GPIO_OUTPUT_CLEAR(CFG_GPIO_PRG);
- GPIO_OUTPUT_CLEAR(CFG_GPIO_CLK);
- GPIO_OUTPUT_CLEAR(CFG_GPIO_DATA);
- GPIO_OUTPUT_ENABLE(CFG_GPIO_PRG);
- GPIO_OUTPUT_ENABLE(CFG_GPIO_CLK);
- GPIO_OUTPUT_ENABLE(CFG_GPIO_DATA);
- GPIO_OUTPUT_DISABLE(CFG_GPIO_INIT);
- GPIO_OUTPUT_DISABLE(CFG_GPIO_DONE);
-
- /*
- * Setup GPIO's for interrupts
- */
- GPIO_OUTPUT_DISABLE(CFG_GPIO_PCI_INTA);
- GPIO_INT_ACT_LOW_SET(CFG_GPIO_PCI_INTA);
- GPIO_OUTPUT_DISABLE(CFG_GPIO_PCI_INTB);
- GPIO_INT_ACT_LOW_SET(CFG_GPIO_PCI_INTB);
- GPIO_OUTPUT_DISABLE(CFG_GPIO_RESTORE_INT);
- GPIO_INT_ACT_LOW_SET(CFG_GPIO_RESTORE_INT);
- GPIO_OUTPUT_DISABLE(CFG_GPIO_RESTART_INT);
- GPIO_INT_ACT_LOW_SET(CFG_GPIO_RESTART_INT);
-
- /*
- * Setup GPIO's for 33MHz clock output
- */
- *IXP425_GPIO_GPCLKR = 0x01FF0000;
- GPIO_OUTPUT_ENABLE(CFG_GPIO_CLK_33M);
-
- /*
- * Setup other chip select's
- */
- *IXP425_EXP_CS1 = CFG_EXP_CS1;
-
- return 0;
-}
-
-/*
- * Check Board Identity
- */
-int checkboard(void)
-{
- char *s = getenv("serial#");
-
- puts("Board: PDNB3");
-
- if (s != NULL) {
- puts(", serial# ");
- puts(s);
- }
- putc('\n');
-
- return (0);
-}
-
-int dram_init(void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return (0);
-}
-
-int do_fpga_boot(unsigned char *fpgadata)
-{
- unsigned char *dst;
- int status;
- int index;
- int i;
- ulong len = CFG_MALLOC_LEN;
-
- /*
- * Setup GPIO's for FPGA programming
- */
- GPIO_OUTPUT_CLEAR(CFG_GPIO_PRG);
- GPIO_OUTPUT_CLEAR(CFG_GPIO_CLK);
- GPIO_OUTPUT_CLEAR(CFG_GPIO_DATA);
-
- /*
- * Save value so no readback is required upon programming
- */
- old_val = *IXP425_GPIO_GPOUTR;
-
- /*
- * First try to decompress fpga image (gzip compressed?)
- */
- dst = malloc(CFG_FPGA_MAX_SIZE);
- if (gunzip(dst, CFG_FPGA_MAX_SIZE, (uchar *)fpgadata, &len) != 0) {
- printf("Error: Image has to be gzipp'ed!\n");
- return -1;
- }
-
- status = fpga_boot(dst, len);
- if (status != 0) {
- printf("\nFPGA: Booting failed ");
- switch (status) {
- case ERROR_FPGA_PRG_INIT_LOW:
- printf("(Timeout: INIT not low after asserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_INIT_HIGH:
- printf("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
- break;
- case ERROR_FPGA_PRG_DONE:
- printf("(Timeout: DONE not high after programming FPGA)\n ");
- break;
- }
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("FPGA: %s\n", &(dst[index+1]));
- index += len+3;
- }
- putc ('\n');
- /* delayed reboot */
- for (i=5; i>0; i--) {
- printf("Rebooting in %2d seconds \r",i);
- for (index=0;index<1000;index++)
- udelay(1000);
- }
- putc('\n');
- do_reset(NULL, 0, 0, NULL);
- }
-
- puts("FPGA: ");
-
- /* display infos on fpgaimage */
- index = 15;
- for (i=0; i<4; i++) {
- len = dst[index];
- printf("%s ", &(dst[index+1]));
- index += len+3;
- }
- putc('\n');
-
- free(dst);
-
- /*
- * Reset FPGA
- */
- GPIO_OUTPUT_CLEAR(CFG_GPIO_FPGA_RESET);
- udelay(10);
- GPIO_OUTPUT_SET(CFG_GPIO_FPGA_RESET);
-
- return (0);
-}
-
-int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- ulong addr;
-
- if (argc < 2) {
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- addr = simple_strtoul(argv[1], NULL, 16);
-
- return do_fpga_boot((unsigned char *)addr);
-}
-
-U_BOOT_CMD(
- fpga, 2, 0, do_fpga,
- "fpga - boot FPGA\n",
- "address size\n - boot FPGA with gzipped image at <address>\n"
-);
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCI) || defined(CONFIG_PCI)
-extern struct pci_controller hose;
-extern void pci_ixp_init(struct pci_controller * hose);
-
-void pci_init_board(void)
-{
- extern void pci_ixp_init (struct pci_controller *hose);
-
- pci_ixp_init(&hose);
-}
-#endif
diff --git a/board/prodrive/pdnb3/u-boot.lds b/board/prodrive/pdnb3/u-boot.lds
deleted file mode 100644
index f05f09344c..0000000000
--- a/board/prodrive/pdnb3/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (C) Copyright 2006
- * 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_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-bigarm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/ixp/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/purple/Makefile b/board/purple/Makefile
deleted file mode 100644
index 29844ba967..0000000000
--- a/board/purple/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o sconsole.o
-SOBJS = lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/purple/config.mk b/board/purple/config.mk
deleted file mode 100644
index ea478edb18..0000000000
--- a/board/purple/config.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# (C) Copyright 2003
-# 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
-#
-
-#
-# Purple board with MIPS 5Kc CPU core
-#
-
-# ROM version
-TEXT_BASE = 0xB0000000
-
-# RAM version
-#TEXT_BASE = 0x80100000
diff --git a/board/purple/flash.c b/board/purple/flash.c
deleted file mode 100644
index 7522580808..0000000000
--- a/board/purple/flash.c
+++ /dev/null
@@ -1,596 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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 <common.h>
-#include <asm/inca-ip.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-typedef unsigned long FLASH_PORT_WIDTH;
-typedef volatile unsigned long FLASH_PORT_WIDTHV;
-
-#define FLASH_ID_MASK 0xFFFFFFFF
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define ORMASK(size) ((-size) & OR_AM_MSK)
-
-#define FLASH29_REG_ADRS(reg) ((FPWV *)PHYS_FLASH_1 + (reg))
-
-/* FLASH29 command register addresses */
-
-#define FLASH29_REG_FIRST_CYCLE FLASH29_REG_ADRS (0x1555)
-#define FLASH29_REG_SECOND_CYCLE FLASH29_REG_ADRS (0x2aaa)
-#define FLASH29_REG_THIRD_CYCLE FLASH29_REG_ADRS (0x3555)
-#define FLASH29_REG_FOURTH_CYCLE FLASH29_REG_ADRS (0x4555)
-#define FLASH29_REG_FIFTH_CYCLE FLASH29_REG_ADRS (0x5aaa)
-#define FLASH29_REG_SIXTH_CYCLE FLASH29_REG_ADRS (0x6555)
-
-/* FLASH29 command definitions */
-
-#define FLASH29_CMD_FIRST 0xaaaaaaaa
-#define FLASH29_CMD_SECOND 0x55555555
-#define FLASH29_CMD_FOURTH 0xaaaaaaaa
-#define FLASH29_CMD_FIFTH 0x55555555
-#define FLASH29_CMD_SIXTH 0x10101010
-
-#define FLASH29_CMD_SECTOR 0x30303030
-#define FLASH29_CMD_PROGRAM 0xa0a0a0a0
-#define FLASH29_CMD_CHIP_ERASE 0x80808080
-#define FLASH29_CMD_READ_RESET 0xf0f0f0f0
-#define FLASH29_CMD_AUTOSELECT 0x90909090
-#define FLASH29_CMD_READ 0x70707070
-
-#define IN_RAM_CMD_READ 0x1
-#define IN_RAM_CMD_WRITE 0x2
-
-#define FLASH_WRITE_CMD ((ulong)(flash_write_cmd) & 0x7)+0xbf008000
-#define FLASH_READ_CMD ((ulong)(flash_read_cmd) & 0x7)+0xbf008000
-
-typedef void (*FUNCPTR_CP)(ulong *source, ulong *destination, ulong nlongs);
-typedef void (*FUNCPTR_RD)(int cmd, FPWV * pFA, char * string, int strLen);
-typedef void (*FUNCPTR_WR)(int cmd, FPWV * pFA, FPW value);
-
-static ulong flash_get_size(FPWV *addr, flash_info_t *info);
-static int write_word(flash_info_t *info, FPWV *dest, FPW data);
-static void flash_get_offsets(ulong base, flash_info_t *info);
-static flash_info_t *flash_get_info(ulong base);
-
-static void load_cmd(ulong cmd);
-static ulong in_ram_cmd = 0;
-
-
-/******************************************************************************
-*
-* Don't change the program architecture
-* This architecture assure the program
-* can be relocated to scratch ram
-*/
-static void flash_read_cmd(int cmd, FPWV * pFA, char * string, int strLen)
-{
- int i,j;
- FPW temp,temp1;
- FPWV *str;
-
- str = (FPWV *)string;
-
- j= strLen/4;
-
- if(cmd == FLASH29_CMD_AUTOSELECT)
- {
- *(FLASH29_REG_FIRST_CYCLE) = FLASH29_CMD_FIRST;
- *(FLASH29_REG_SECOND_CYCLE) = FLASH29_CMD_SECOND;
- *(FLASH29_REG_THIRD_CYCLE) = FLASH29_CMD_AUTOSELECT;
- }
-
- if(cmd == FLASH29_CMD_READ)
- {
- i = 0;
- while(i<j)
- {
- temp = *pFA++;
- temp1 = *(int *)0xa0000000;
- *(int *)0xbf0081f8 = temp1 + temp;
- *str++ = temp;
- i++;
- }
- }
-
- if(cmd == FLASH29_CMD_READ_RESET)
- {
- *(FLASH29_REG_FIRST_CYCLE) = FLASH29_CMD_FIRST;
- *(FLASH29_REG_SECOND_CYCLE) = FLASH29_CMD_SECOND;
- *(FLASH29_REG_THIRD_CYCLE) = FLASH29_CMD_READ_RESET;
- }
-
- *(int *)0xbf0081f8 = *(int *)0xa0000000; /* dummy read switch back to sdram interface */
-}
-
-/******************************************************************************
-*
-* Don't change the program architecture
-* This architecture assure the program
-* can be relocated to scratch ram
-*/
-static void flash_write_cmd(int cmd, FPWV * pFA, FPW value)
-{
- *(FLASH29_REG_FIRST_CYCLE) = FLASH29_CMD_FIRST;
- *(FLASH29_REG_SECOND_CYCLE) = FLASH29_CMD_SECOND;
-
- if (cmd == FLASH29_CMD_SECTOR)
- {
- *(FLASH29_REG_THIRD_CYCLE) = FLASH29_CMD_CHIP_ERASE;
- *(FLASH29_REG_FOURTH_CYCLE) = FLASH29_CMD_FOURTH;
- *(FLASH29_REG_FIFTH_CYCLE) = FLASH29_CMD_FIFTH;
- *pFA = FLASH29_CMD_SECTOR;
- }
-
- if (cmd == FLASH29_CMD_SIXTH)
- {
- *(FLASH29_REG_THIRD_CYCLE) = FLASH29_CMD_CHIP_ERASE;
- *(FLASH29_REG_FOURTH_CYCLE) = FLASH29_CMD_FOURTH;
- *(FLASH29_REG_FIFTH_CYCLE) = FLASH29_CMD_FIFTH;
- *(FLASH29_REG_SIXTH_CYCLE) = FLASH29_CMD_SIXTH;
- }
-
- if (cmd == FLASH29_CMD_PROGRAM)
- {
- *(FLASH29_REG_THIRD_CYCLE) = FLASH29_CMD_PROGRAM;
- *pFA = value;
- }
-
- if (cmd == FLASH29_CMD_READ_RESET)
- {
- *(FLASH29_REG_THIRD_CYCLE) = FLASH29_CMD_READ_RESET;
- }
-
- *(int *)0xbf0081f8 = *(int *)0xa0000000; /* dummy read switch back to sdram interface */
-}
-
-static void load_cmd(ulong cmd)
-{
- ulong *src;
- ulong *dst;
- FUNCPTR_CP absEntry;
- ulong func;
-
- if (in_ram_cmd & cmd) return;
-
- if (cmd == IN_RAM_CMD_READ)
- {
- func = (ulong)flash_read_cmd;
- }
- else
- {
- func = (ulong)flash_write_cmd;
- }
-
- src = (ulong *)(func & 0xfffffff8);
- dst = (ulong *)0xbf008000;
- absEntry = (FUNCPTR_CP)(0xbf0081d0);
- absEntry(src,dst,0x38);
-
- in_ram_cmd = cmd;
-}
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- unsigned long size = 0;
- int i;
-
- load_cmd(IN_RAM_CMD_READ);
-
- /* Init: no FLASHes known */
- for (i=0; i < CFG_MAX_FLASH_BANKS; ++i) {
- ulong flashbase = PHYS_FLASH_1;
- ulong * buscon = (ulong *) INCA_IP_EBU_EBU_BUSCON0;
-
- /* Disable write protection */
- *buscon &= ~INCA_IP_EBU_EBU_BUSCON1_WRDIS;
-
-#if 1
- memset(&flash_info[i], 0, sizeof(flash_info_t));
-#endif
-
- flash_info[i].size =
- flash_get_size((FPW *)flashbase, &flash_info[i]);
-
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx\n",
- i, flash_info[i].size);
- }
-
- size += flash_info[i].size;
- }
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- flash_get_info(CFG_MONITOR_BASE));
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- flash_get_info(CFG_ENV_ADDR));
-#endif
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD
- && (info->flash_id & FLASH_TYPEMASK) == FLASH_AM160B) {
-
- int bootsect_size[4]; /* number of bytes/boot sector */
- int sect_size; /* number of bytes/regular sector */
-
- bootsect_size[0] = 0x00008000;
- bootsect_size[1] = 0x00004000;
- bootsect_size[2] = 0x00004000;
- bootsect_size[3] = 0x00010000;
- sect_size = 0x00020000;
-
- /* set sector offsets for bottom boot block type */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- base += i < 4 ? bootsect_size[i] : sect_size;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static flash_info_t *flash_get_info(ulong base)
-{
- int i;
- flash_info_t * info;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i ++) {
- info = & flash_info[i];
- if (info->start[0] <= base && base < info->start[0] + info->size)
- break;
- }
-
- return i == CFG_MAX_FLASH_BANKS ? 0 : info;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar *bootletter;
- uchar *fmt;
- uchar botbootletter[] = "B";
- uchar topbootletter[] = "T";
- uchar botboottype[] = "bottom boot sector";
- uchar topboottype[] = "top boot sector";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- /* check for top or bottom boot, if it applies */
- if (info->flash_id & FLASH_BTYPE) {
- boottype = botboottype;
- bootletter = botbootletter;
- }
- else {
- boottype = topboottype;
- bootletter = topbootletter;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM160B:
- fmt = "29LV160B%s (16 Mbit, %s)\n";
- break;
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- fmt = "28F800C3%s (8 Mbit, %s)\n";
- break;
- case FLASH_INTEL800B:
- case FLASH_INTEL800T:
- fmt = "28F800B3%s (8 Mbit, %s)\n";
- break;
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- fmt = "28F160C3%s (16 Mbit, %s)\n";
- break;
- case FLASH_INTEL160B:
- case FLASH_INTEL160T:
- fmt = "28F160B3%s (16 Mbit, %s)\n";
- break;
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- fmt = "28F320C3%s (32 Mbit, %s)\n";
- break;
- case FLASH_INTEL320B:
- case FLASH_INTEL320T:
- fmt = "28F320B3%s (32 Mbit, %s)\n";
- break;
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- fmt = "28F640C3%s (64 Mbit, %s)\n";
- break;
- case FLASH_INTEL640B:
- case FLASH_INTEL640T:
- fmt = "28F640B3%s (64 Mbit, %s)\n";
- break;
- default:
- fmt = "Unknown Chip Type\n";
- break;
- }
-
- printf (fmt, bootletter, boottype);
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
-
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size (FPWV *addr, flash_info_t *info)
-{
- FUNCPTR_RD absEntry;
- FPW retValue;
- int flag;
-
- load_cmd(IN_RAM_CMD_READ);
- absEntry = (FUNCPTR_RD)FLASH_READ_CMD;
-
- flag = disable_interrupts();
- absEntry(FLASH29_CMD_AUTOSELECT,0,0,0);
- if (flag) enable_interrupts();
-
- udelay(100);
-
- flag = disable_interrupts();
- absEntry(FLASH29_CMD_READ, addr + 1, (char *)&retValue, sizeof(retValue));
- absEntry(FLASH29_CMD_READ_RESET,0,0,0);
- if (flag) enable_interrupts();
-
- udelay(100);
-
- switch (retValue) {
-
- case (FPW)AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 8 or 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* => no or unknown flash */
- }
-
- flash_get_offsets((ulong)addr, info);
-
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- FPWV *addr;
- int flag, prot, sect;
- ulong start, now, last;
- int rcode = 0;
- FUNCPTR_WR absEntry;
-
- load_cmd(IN_RAM_CMD_WRITE);
- absEntry = (FUNCPTR_WR)FLASH_WRITE_CMD;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM160B:
- break;
- case FLASH_UNKNOWN:
- default:
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- last = get_timer(0);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && rcode == 0; sect++) {
-
- if (info->protect[sect] != 0) /* protected, skip it */
- continue;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr = (FPWV *)(info->start[sect]);
- absEntry(FLASH29_CMD_SECTOR, addr, 0);
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer(0);
-
- while ((now = get_timer(start)) <= CFG_FLASH_ERASE_TOUT) {
-
- /* show that we're waiting */
- if ((get_timer(last)) > CFG_HZ) {/* every second */
- putc ('.');
- last = get_timer(0);
- }
- }
-
- flag = disable_interrupts();
- absEntry(FLASH29_CMD_READ_RESET,0,0);
- if (flag)
- enable_interrupts();
- }
-
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof(data), left -= sizeof(data) - bytes) {
-
- bytes = addr & (sizeof(data) - 1);
- addr &= ~(sizeof(data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits
- */
- for (i = 0; i < sizeof(data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left )
- data += *((uchar *)addr + i);
- else
- data += *src++;
- }
-
- res = write_word(info, (FPWV *)addr, data);
- }
-
- return (res);
-}
-
-static int write_word (flash_info_t *info, FPWV *dest, FPW data)
-{
- int res = 0; /* result, assume success */
- FUNCPTR_WR absEntry;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- if (info->start[0] != PHYS_FLASH_1)
- {
- return (3);
- }
-
- load_cmd(IN_RAM_CMD_WRITE);
- absEntry = (FUNCPTR_WR)FLASH_WRITE_CMD;
-
- flag = disable_interrupts();
- absEntry(FLASH29_CMD_PROGRAM,dest,data);
- if (flag) enable_interrupts();
-
- udelay(100);
-
- flag = disable_interrupts();
- absEntry(FLASH29_CMD_READ_RESET,0,0);
- if (flag) enable_interrupts();
-
- return (res);
-}
diff --git a/board/purple/lowlevel_init.S b/board/purple/lowlevel_init.S
deleted file mode 100644
index 668124a784..0000000000
--- a/board/purple/lowlevel_init.S
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Memory sub-system initialization code for PURPLE development board.
- *
- * Copyright (c) 2003 Wolfgang Denk <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 <config.h>
-#include <version.h>
-#include <asm/regdef.h>
-
-#define MC_IOGP 0xBF800800
-
- .globl lowlevel_init
-lowlevel_init:
- li t0, MC_IOGP
- li t1, 0xf24
- sw t1, 0(t0)
- j ra
- nop
diff --git a/board/purple/purple.c b/board/purple/purple.c
deleted file mode 100644
index 4c3e5b44b5..0000000000
--- a/board/purple/purple.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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 <common.h>
-#include <command.h>
-#include <asm/inca-ip.h>
-#include <asm/regdef.h>
-#include <asm/mipsregs.h>
-#include <asm/addrspace.h>
-#include <asm/cacheops.h>
-
-#include "sconsole.h"
-
-#define cache_unroll(base,op) \
- __asm__ __volatile__(" \
- .set noreorder; \
- .set mips3; \
- cache %1, (%0); \
- .set mips0; \
- .set reorder" \
- : \
- : "r" (base), \
- "i" (op));
-
-typedef void (*FUNCPTR)(ulong *source, ulong *destination, ulong nlongs);
-
-extern void asc_serial_init (void);
-extern void asc_serial_putc (char);
-extern void asc_serial_puts (const char *);
-extern int asc_serial_getc (void);
-extern int asc_serial_tstc (void);
-extern void asc_serial_setbrg (void);
-
-static void sdram_timing_init (ulong size)
-{
- register uint pass;
- register uint done;
- register uint count;
- register uint p0, p1, p2, p3, p4;
- register uint addr;
-
-#define WRITE_MC_IOGP_1 *(uint *)0xbf800800 = (p1<<14)+(p2<<13)+(p4<<8)+(p0<<4)+p3;
-#define WRITE_MC_IOGP_2 *(uint *)0xbf800800 = (p1<<14)+(p2<<13)+((p4-16)<<8)+(p0<<4)+p3;
-
- done = 0;
- p0 = 2;
- while (p0 < 4 && done == 0) {
- p1 = 0;
- while (p1 < 2 && done == 0) {
- p2 = 0;
- while (p2 < 2 && done == 0) {
- p3 = 0;
- while (p3 < 16 && done == 0) {
- count = 0;
- p4 = 0;
- while (p4 < 32 && done == 0) {
- WRITE_MC_IOGP_1;
-
- for (addr = KSEG1 + 0x4000;
- addr < KSEG1ADDR (size);
- addr = addr + 4) {
- *(uint *) addr = 0xaa55aa55;
- }
-
- pass = 1;
-
- for (addr = KSEG1 + 0x4000;
- addr < KSEG1ADDR (size) && pass == 1;
- addr = addr + 4) {
- if (*(uint *) addr != 0xaa55aa55)
- pass = 0;
- }
-
- if (pass == 1) {
- count++;
- } else {
- count = 0;
- }
-
- if (count == 32) {
- WRITE_MC_IOGP_2;
- done = 1;
- }
- p4++;
- }
- p3++;
- }
- p2++;
- }
- p1++;
- }
- p0++;
- if (p0 == 1)
- p0++;
- }
-}
-
-long int initdram(int board_type)
-{
- /* The only supported number of SDRAM banks is 4.
- */
-#define CFG_NB 4
-
- ulong cfgpb0 = *INCA_IP_SDRAM_MC_CFGPB0;
- ulong cfgdw = *INCA_IP_SDRAM_MC_CFGDW;
- int cols = cfgpb0 & 0xF;
- int rows = (cfgpb0 & 0xF0) >> 4;
- int dw = cfgdw & 0xF;
- ulong size = (1 << (rows + cols)) * (1 << (dw - 1)) * CFG_NB;
- void (* sdram_init) (ulong);
-
- sdram_init = (void (*)(ulong)) KSEG0ADDR(&sdram_timing_init);
-
- sdram_init(0x10000);
-
- return size;
-}
-
-int checkboard (void)
-{
-
- unsigned long chipid = *(unsigned long *)0xB800C800;
-
- printf ("Board: Purple PLB 2800 chip version %ld, ", chipid & 0xF);
-
- printf("CPU Speed %d MHz\n", CPU_CLOCK_RATE/1000000);
-
- return 0;
-}
-
-int misc_init_r (void)
-{
- asc_serial_init ();
-
- sconsole_putc = asc_serial_putc;
- sconsole_puts = asc_serial_puts;
- sconsole_getc = asc_serial_getc;
- sconsole_tstc = asc_serial_tstc;
- sconsole_setbrg = asc_serial_setbrg;
-
- sconsole_flush ();
- return (0);
-}
-
-/*******************************************************************************
-*
-* copydwords - copy one buffer to another a long at a time
-*
-* This routine copies the first <nlongs> longs from <source> to <destination>.
-*/
-static void copydwords (ulong *source, ulong *destination, ulong nlongs)
-{
- ulong temp,temp1;
- ulong *dstend = destination + nlongs;
-
- while (destination < dstend)
- {
- temp = *source++;
- /* dummy read from sdram */
- temp1 = *(ulong *)0xa0000000;
- /* avoid optimization from compliler */
- *(ulong *)0xbf0081f8 = temp1 + temp;
- *destination++ = temp;
-
- }
-}
-
-/*******************************************************************************
-*
-* copyLongs - copy one buffer to another a long at a time
-*
-* This routine copies the first <nlongs> longs from <source> to <destination>.
-*/
-static void copyLongs (ulong *source, ulong *destination, ulong nlongs)
-{
- FUNCPTR absEntry;
-
- absEntry = (FUNCPTR)(0xbf008000+((ulong)copydwords & 0x7));
- absEntry(source, destination, nlongs);
-}
-
-/*******************************************************************************
-*
-* programLoad - load program into ram
-*
-* This routine load copydwords into ram
-*
-*/
-static void programLoad(void)
-{
- FUNCPTR absEntry;
- ulong *src,*dst;
-
- src = (ulong *)(TEXT_BASE + 0x428);
- dst = (ulong *)0xbf0081d0;
-
- absEntry = (FUNCPTR)(TEXT_BASE + 0x400);
- absEntry(src,dst,0x6);
-
- src = (ulong *)((ulong)copydwords & 0xfffffff8);
- dst = (ulong *)0xbf008000;
-
- absEntry(src,dst,0x38);
-}
-
-/*******************************************************************************
-*
-* copy_code - copy u-boot image from flash to RAM
-*
-* This routine is needed to solve flash problems on this board
-*
-*/
-void copy_code (ulong dest_addr)
-{
- extern long uboot_end_data;
- unsigned long start;
- unsigned long end;
-
- /* load copydwords into ram
- */
- programLoad();
-
- /* copy u-boot code
- */
- copyLongs((ulong *)CFG_MONITOR_BASE,
- (ulong *)dest_addr,
- ((ulong)&uboot_end_data - CFG_MONITOR_BASE + 3) / 4);
-
-
- /* flush caches
- */
-
- start = KSEG0;
- end = start + CFG_DCACHE_SIZE;
- while(start < end) {
- cache_unroll(start,Index_Writeback_Inv_D);
- start += CFG_CACHELINE_SIZE;
- }
-
- start = KSEG0;
- end = start + CFG_ICACHE_SIZE;
- while(start < end) {
- cache_unroll(start,Index_Invalidate_I);
- start += CFG_CACHELINE_SIZE;
- }
-}
diff --git a/board/purple/sconsole.c b/board/purple/sconsole.c
deleted file mode 100644
index f52d50d0a5..0000000000
--- a/board/purple/sconsole.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 <config.h>
-#include <common.h>
-
-#include "sconsole.h"
-
-void (*sconsole_putc) (char) = 0;
-void (*sconsole_puts) (const char *) = 0;
-int (*sconsole_getc) (void) = 0;
-int (*sconsole_tstc) (void) = 0;
-void (*sconsole_setbrg) (void) = 0;
-
-int serial_init (void)
-{
- sconsole_buffer_t *sb = SCONSOLE_BUFFER;
-
- sb->pos = 0;
- sb->size = 0;
- sb->max_size = CFG_SCONSOLE_SIZE - sizeof (sconsole_buffer_t);
-
- return (0);
-}
-
-void serial_putc (char c)
-{
- if (sconsole_putc) {
- (*sconsole_putc) (c);
- } else {
- sconsole_buffer_t *sb = SCONSOLE_BUFFER;
-
- if (c) {
- sb->data[sb->pos++] = c;
- if (sb->pos == sb->max_size) {
- sb->pos = 0;
- }
- if (sb->size < sb->max_size) {
- sb->size++;
- }
- }
- }
-}
-
-void serial_puts (const char *s)
-{
- if (sconsole_puts) {
- (*sconsole_puts) (s);
- } else {
- sconsole_buffer_t *sb = SCONSOLE_BUFFER;
-
- while (*s) {
- sb->data[sb->pos++] = *s++;
- if (sb->pos == sb->max_size) {
- sb->pos = 0;
- }
- if (sb->size < sb->max_size) {
- sb->size++;
- }
- }
- }
-}
-
-int serial_getc (void)
-{
- if (sconsole_getc) {
- return (*sconsole_getc) ();
- } else {
- return 0;
- }
-}
-
-int serial_tstc (void)
-{
- if (sconsole_tstc) {
- return (*sconsole_tstc) ();
- } else {
- return 0;
- }
-}
-
-void serial_setbrg (void)
-{
- if (sconsole_setbrg) {
- (*sconsole_setbrg) ();
- }
-}
-
-void sconsole_flush (void)
-{
- if (sconsole_putc) {
- sconsole_buffer_t *sb = SCONSOLE_BUFFER;
- unsigned int end = sb->pos < sb->size
- ? sb->pos + sb->max_size - sb->size
- : sb->pos - sb->size;
-
- while (sb->size) {
- (*sconsole_putc) (sb->data[end++]);
- if (end == sb->max_size) {
- end = 0;
- }
- sb->size--;
- }
- }
-}
diff --git a/board/purple/sconsole.h b/board/purple/sconsole.h
deleted file mode 100644
index d441f37fcf..0000000000
--- a/board/purple/sconsole.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * (C) Copyright 2002
- * 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 _SCONSOLE_H_
-#define _SCONSOLE_H_
-
-#include <config.h>
-
-typedef struct sconsole_buffer_s
-{
- unsigned long size;
- unsigned long max_size;
- unsigned long pos;
- char data [1];
-} sconsole_buffer_t;
-
-#define SCONSOLE_BUFFER ((sconsole_buffer_t *) CFG_SCONSOLE_ADDR)
-
-extern void (* sconsole_putc) (char);
-extern void (* sconsole_puts) (const char *);
-extern int (* sconsole_getc) (void);
-extern int (* sconsole_tstc) (void);
-extern void (* sconsole_setbrg) (void);
-
-extern void sconsole_flush (void);
-
-#endif
diff --git a/board/purple/u-boot.lds b/board/purple/u-boot.lds
deleted file mode 100644
index 1bdac1f4a6..0000000000
--- a/board/purple/u-boot.lds
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk 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_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
-*/
-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips")
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/mips/start.o (.text)
- board/purple/lowlevel_init.o (.text)
- cpu/mips/cache.o (.text)
- common/main.o (.text)
- common/dlmalloc.o (.text)
- common/cmd_boot.o (.text)
- lib_generic/zlib.o (.text)
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.ppcenv)
-
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .sdata : { *(.sdata) }
-
- _gp = ALIGN(16);
-
- __got_start = .;
- .got : { *(.got) }
- __got_end = .;
-
- .sdata : { *(.sdata) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- uboot_end_data = .;
- num_got_entries = (__got_end - __got_start) >> 2;
-
- . = ALIGN(4);
- .sbss : { *(.sbss) }
- .bss : { *(.bss) }
- uboot_end = .;
-}
diff --git a/board/r360mpi/Makefile b/board/r360mpi/Makefile
deleted file mode 100644
index 9f34ad1c08..0000000000
--- a/board/r360mpi/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o pcmcia.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/r360mpi/config.mk b/board/r360mpi/config.mk
deleted file mode 100644
index 9d6080b84a..0000000000
--- a/board/r360mpi/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# TQM8xxL boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/r360mpi/flash.c b/board/r360mpi/flash.c
deleted file mode 100644
index 9b42960c7d..0000000000
--- a/board/r360mpi/flash.c
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (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
- */
-
-/* #define DEBUG */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Protection Flags:
- */
-#define FLAG_PROTECT_SET 0x01
-#define FLAG_PROTECT_CLEAR 0x02
-
-/* Board support for 1 or 2 flash devices */
-#undef FLASH_PORT_WIDTH32
-#define FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0;
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
- size_b0 = flash_get_size ((FPW *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 << 20);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_PS_16 | BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size ((FPW *) CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- (void) flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size_b0;
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000);
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J3A:
- printf ("28F320J3A\n");
- break;
- case FLASH_28F640J3A:
- printf ("28F640J3A\n");
- break;
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
-{
- FPW value;
-
- /* Make sure Block Lock Bits get cleared */
- addr[0] = (FPW) 0x00FF00FF;
- addr[0] = (FPW) 0x00600060;
- addr[0] = (FPW) 0x00D000D0;
- addr[0] = (FPW) 0x00FF00FF;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- value = addr[0];
-
- debug ("Manuf. ID @ 0x%08lx: 0x%08lx\n", (ulong)addr, value);
-
- switch (value) {
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- debug ("Device ID @ 0x%08lx: 0x%08lx\n", (ulong)(&addr[1]), value);
-
- switch (value) {
- case (FPW) INTEL_ID_28F320J3A:
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (FPW) INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- }
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
-
- int i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, data)) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- start = get_timer (0);
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
diff --git a/board/r360mpi/pcmcia.c b/board/r360mpi/pcmcia.c
deleted file mode 100644
index 7d34ac80ae..0000000000
--- a/board/r360mpi/pcmcia.c
+++ /dev/null
@@ -1,236 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#undef CONFIG_PCMCIA
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-#define CONFIG_PCMCIA
-#endif
-
-#if (CONFIG_COMMANDS & CFG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
-#define CONFIG_PCMCIA
-#endif
-
-#ifdef CONFIG_PCMCIA
-
-#define PCMCIA_BOARD_MSG "R360MPI"
-
-int pcmcia_hardware_enable(int slot)
-{
- volatile immap_t *immap;
- volatile cpm8xx_t *cp;
- volatile pcmconf8xx_t *pcmp;
- volatile sysconf8xx_t *sysp;
- uint reg, mask;
-
- debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- udelay(10000);
-
- immap = (immap_t *)CFG_IMMR;
- sysp = (sysconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_siu_conf));
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- cp = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));
-
- /*
- * Configure SIUMCR to enable PCMCIA port B
- * (VFLS[0:1] are not used for debugging, we connect FRZ# instead)
- */
- sysp->sc_siumcr &= ~SIUMCR_DBGC11; /* set DBGC to 00 */
-
- /* clear interrupt state, and disable interrupts */
- pcmp->pcmc_pscr = PCMCIA_MASK(_slot_);
- pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_);
-
- /*
- * Disable interrupts, DMA, and PCMCIA buffers
- * (isolate the interface) and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- /*
- * Configure Ports A, B & C pins for
- * 5 Volts Enable and 3 Volts enable
- */
- immap->im_ioport.iop_pcpar &= ~(0x0400);
- immap->im_ioport.iop_pcso &= ~(0x0400);/*
- immap->im_ioport.iop_pcdir |= 0x0400;*/
-
- immap->im_ioport.iop_papar &= ~(0x0200);/*
- immap->im_ioport.iop_padir |= 0x0200;*/
-#if 0
- immap->im_ioport.iop_pbpar &= ~(0xC000);
- immap->im_ioport.iop_pbdir &= ~(0xC000);
-#endif
- /* remove all power */
-
- immap->im_ioport.iop_pcdat |= 0x0400;
- immap->im_ioport.iop_padat |= 0x0200;
-
- /*
- * Make sure there is a card in the slot, then configure the interface.
- */
- udelay(10000);
- debug ("[%d] %s: PIPR(%p)=0x%x\n",
- __LINE__,__FUNCTION__,
- &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);
- if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {
- printf (" No Card found\n");
- return (1);
- }
-
- /*
- * Power On.
- */
- mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot);
- reg = pcmp->pcmc_pipr;
- debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",
- reg,
- (reg&PCMCIA_VS1(slot))?"n":"ff",
- (reg&PCMCIA_VS2(slot))?"n":"ff");
- if ((reg & mask) == mask) {
- immap->im_ioport.iop_pcdat &= ~(0x4000);
- puts (" 5.0V card found: ");
- } else {
- immap->im_ioport.iop_padat &= ~(0x0002);
- puts (" 3.3V card found: ");
- }
- immap->im_ioport.iop_pcdir |= 0x0400;
- immap->im_ioport.iop_padir |= 0x0200;
-#if 0
- /* VCC switch error flag, PCMCIA slot INPACK_ pin */
- cp->cp_pbdir &= ~(0x0020 | 0x0010);
- cp->cp_pbpar &= ~(0x0020 | 0x0010);
- udelay(500000);
-#endif
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
-
- udelay(250000); /* some cards need >150 ms to come up :-( */
-
- debug ("# hardware_enable done\n");
-
- return (0);
-}
-
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-int pcmcia_hardware_disable(int slot)
-{
- volatile immap_t *immap;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
-
- debug ("hardware_disable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);
-
- immap = (immap_t *)CFG_IMMR;
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
-
- /* remove all power */
- immap->im_ioport.iop_pcdat |= 0x0400;
- immap->im_ioport.iop_padat |= 0x0200;
-
- /* Configure PCMCIA General Control Register */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = 0;
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
-
- udelay(10000);
-
- return (0);
-}
-#endif /* CFG_CMD_PCMCIA */
-
-
-int pcmcia_voltage_set(int slot, int vcc, int vpp)
-{
- volatile immap_t *immap;
- volatile pcmconf8xx_t *pcmp;
- u_long reg;
-
- debug ("voltage_set: "
- PCMCIA_BOARD_MSG
- " Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",
- 'A'+slot, vcc/10, vcc%10, vpp/10, vcc%10);
-
- immap = (immap_t *)CFG_IMMR;
- pcmp = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));
- /*
- * Disable PCMCIA buffers (isolate the interface)
- * and assert RESET signal
- */
- debug ("Disable PCMCIA buffers and assert RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg |= __MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg |= __MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- /*
- * Configure Ports A & C pins for
- * 5 Volts Enable and 3 Volts enable,
- * Turn off all power
- */
- debug ("PCMCIA power OFF\n");
- immap->im_ioport.iop_pcpar &= ~(0x0400);
- immap->im_ioport.iop_pcso &= ~(0x0400);/*
- immap->im_ioport.iop_pcdir |= 0x0400;*/
-
- immap->im_ioport.iop_papar &= ~(0x0200);/*
- immap->im_ioport.iop_padir |= 0x0200;*/
-
- immap->im_ioport.iop_pcdat |= 0x0400;
- immap->im_ioport.iop_padat |= 0x0200;
-
- reg = 0;
- switch(vcc) {
- case 0: break;
- case 33: reg |= 0x0200; break;
- case 50: reg |= 0x0400; break;
- default: goto done;
- }
-
- /* Checking supported voltages */
-
- debug ("PIPR: 0x%x --> %s\n",
- pcmp->pcmc_pipr,
- (pcmp->pcmc_pipr & 0x00008000) ? "only 5 V" : "can do 3.3V");
-
- if (reg & 0x0200)
- immap->im_ioport.iop_pcdat &= !reg;
- if (reg & 0x0400)
- immap->im_ioport.iop_padat &= !reg;
- immap->im_ioport.iop_pcdir |= 0x0200;
- immap->im_ioport.iop_padir |= 0x0400;
- if (reg) {
- debug ("PCMCIA powered at %sV\n",
- (reg&0x0400) ? "5.0" : "3.3");
- } else {
- debug ("PCMCIA powered down\n");
- }
-
-done:
- debug ("Enable PCMCIA buffers and stop RESET\n");
- reg = PCMCIA_PGCRX(_slot_);
- reg &= ~__MY_PCMCIA_GCRX_CXRESET; /* active high */
- reg &= ~__MY_PCMCIA_GCRX_CXOE; /* active low */
- PCMCIA_PGCRX(_slot_) = reg;
- udelay(500);
-
- debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",
- slot+'A');
- return (0);
-}
-
-#endif /* CCONFIG_PCMCIA */
diff --git a/board/r360mpi/r360mpi.c b/board/r360mpi/r360mpi.c
deleted file mode 100644
index ffb4c0ecf9..0000000000
--- a/board/r360mpi/r360mpi.c
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * 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 <common.h>
-#include <config.h>
-#include <mpc8xx.h>
-#include <i2c.h>
-
-#include <commproc.h>
-#include <command.h>
-#include <malloc.h>
-
-#include <linux/types.h>
-#include <linux/string.h> /* for strdup */
-
-
-/*
- * Memory Controller Using
- *
- * CS0 - Flash memory (0x40000000)
- * CS1 - FLASH memory (0x????????)
- * CS2 - SDRAM (0x00000000)
- * CS3 -
- * CS4 -
- * CS5 -
- * CS6 - PCMCIA device
- * CS7 - PCMCIA device
- */
-
-/* ------------------------------------------------------------------------- */
-
-#define _not_used_ 0xffffffff
-
-const uint sdram_table[]=
-{
- /* single read. (offset 0 in upm RAM) */
- 0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00,
- 0x1ff77c47,
-
- /* MRS initialization (offset 5) */
-
- 0x1ff77c34, 0xefeabc34, 0x1fb57c35,
-
- /* burst read. (offset 8 in upm RAM) */
- 0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
- 0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* single write. (offset 18 in upm RAM) */
- 0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* burst write. (offset 20 in upm RAM) */
- 0x1f07fc04, 0xeeaebc00, 0x10ad7c00, 0xf0affc00,
- 0xf0affc00, 0xe1bbbc04, 0x1ff77c47, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* refresh. (offset 30 in upm RAM) */
- 0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc84, 0xfffffc07, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* exception. (offset 3c in upm RAM) */
- 0x7ffffc07, _not_used_, _not_used_, _not_used_ };
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: R360 MPI Board\n");
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size8, size9;
- long int size_b0 = 0;
- unsigned long reg;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_8K;
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller bank 2 to the SDRAM bank at
- * preliminary address - these have to be modified after the
- * SDRAM size has been determined.
- */
- memctl->memc_or2 = CFG_OR2_PRELIM;
- memctl->memc_br2 = CFG_BR2_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80004105; /* SDRAM bank 0 */
- udelay (200);
- memctl->memc_mcr = 0x80004230; /* SDRAM bank 0 - execute twice */
- udelay (200);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /*
- * Check Bank 2 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL, (long *) SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE2_PRELIM,
- SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size_b0 = size9;
-/* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */
- } else { /* back to 8 columns */
- size_b0 = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
-/* debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20); */
- }
-
- udelay (1000);
-
- /*
- * Adjust refresh rate depending on SDRAM type, both banks
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if ((size_b0 < 0x02000000)) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
- udelay (1000);
- }
-
- /*
- * Final mapping
- */
-
- memctl->memc_or1 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br1 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
-
- udelay (10000);
-
-#ifdef CONFIG_CAN_DRIVER
- /* Initialize OR3 / BR3 */
- memctl->memc_or3 = CFG_OR3_CAN; /* switch GPLB_5 to GPLA_5 */
- memctl->memc_br3 = CFG_BR3_CAN;
-
- /* Initialize MBMR */
- memctl->memc_mbmr = MBMR_GPL_B4DIS; /* GPL_B4 works as UPWAITB */
-
- /* Initialize UPMB for CAN: single read */
- memctl->memc_mdr = 0xFFFFC004;
- memctl->memc_mcr = 0x0100 | UPMB;
-
- memctl->memc_mdr = 0x0FFFD004;
- memctl->memc_mcr = 0x0101 | UPMB;
-
- memctl->memc_mdr = 0x0FFFC000;
- memctl->memc_mcr = 0x0102 | UPMB;
-
- memctl->memc_mdr = 0x3FFFC004;
- memctl->memc_mcr = 0x0103 | UPMB;
-
- memctl->memc_mdr = 0xFFFFDC05;
- memctl->memc_mcr = 0x0104 | UPMB;
-
- /* Initialize UPMB for CAN: single write */
- memctl->memc_mdr = 0xFFFCC004;
- memctl->memc_mcr = 0x0118 | UPMB;
-
- memctl->memc_mdr = 0xCFFCD004;
- memctl->memc_mcr = 0x0119 | UPMB;
-
- memctl->memc_mdr = 0x0FFCC000;
- memctl->memc_mcr = 0x011A | UPMB;
-
- memctl->memc_mdr = 0x7FFCC004;
- memctl->memc_mcr = 0x011B | UPMB;
-
- memctl->memc_mdr = 0xFFFDCC05;
- memctl->memc_mcr = 0x011C | UPMB;
-#endif
-
- return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value,
- long int *base, long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-void r360_i2c_lcd_write (uchar data0, uchar data1)
-{
- if (i2c_write (CFG_I2C_LCD_ADDR, data0, 1, &data1, 1)) {
- printf("Can't write lcd data 0x%02X 0x%02X.\n", data0, data1);
- }
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*-----------------------------------------------------------------------
- * Keyboard Controller
- */
-
-/* Number of bytes returned from Keyboard Controller */
-#define KEYBD_KEY_MAX 16 /* maximum key number */
-#define KEYBD_DATALEN ((KEYBD_KEY_MAX + 7) / 8) /* normal key scan data */
-
-static uchar *key_match (uchar *);
-
-int misc_init_r (void)
-{
- char kbd_data[KEYBD_DATALEN];
- char keybd_env[2 * KEYBD_DATALEN + 1];
- char *str;
- int i;
-
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- i2c_read (CFG_I2C_KEY_ADDR, 0, 0, (uchar *)kbd_data, KEYBD_DATALEN);
-
- for (i = 0; i < KEYBD_DATALEN; ++i) {
- sprintf (keybd_env + i + i, "%02X", kbd_data[i]);
- }
- setenv ("keybd", keybd_env);
-
- str = strdup ((char *)key_match ((uchar *)keybd_env)); /* decode keys */
-
-#ifdef CONFIG_PREBOOT /* automatically configure "preboot" command on key match */
- setenv ("preboot", str); /* set or delete definition */
-#endif /* CONFIG_PREBOOT */
- if (str != NULL) {
- free (str);
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- * Check if pressed key(s) match magic sequence,
- * and return the command string associated with that key(s).
- *
- * If no key press was decoded, NULL is returned.
- *
- * Note: the first character of the argument will be overwritten with
- * the "magic charcter code" of the decoded key(s), or '\0'.
- *
- *
- * Note: the string points to static environment data and must be
- * saved before you call any function that modifies the environment.
- */
-#ifdef CONFIG_PREBOOT
-
-static uchar kbd_magic_prefix[] = "key_magic";
-static uchar kbd_command_prefix[] = "key_cmd";
-
-static uchar *key_match (uchar * kbd_str)
-{
- uchar magic[sizeof (kbd_magic_prefix) + 1];
- uchar cmd_name[sizeof (kbd_command_prefix) + 1];
- uchar *str, *suffix;
- uchar *kbd_magic_keys;
- char *cmd;
-
- /*
- * The following string defines the characters that can pe appended
- * to "key_magic" to form the names of environment variables that
- * hold "magic" key codes, i. e. such key codes that can cause
- * pre-boot actions. If the string is empty (""), then only
- * "key_magic" is checked (old behaviour); the string "125" causes
- * checks for "key_magic1", "key_magic2" and "key_magic5", etc.
- */
- if ((kbd_magic_keys = (uchar *)getenv ("magic_keys")) != NULL) {
- /* loop over all magic keys;
- * use '\0' suffix in case of empty string
- */
- for (suffix = kbd_magic_keys;
- *suffix || suffix == kbd_magic_keys;
- ++suffix) {
- sprintf ((char *)magic, "%s%c", kbd_magic_prefix, *suffix);
-
-#if 0
- printf ("### Check magic \"%s\"\n", magic);
-#endif
-
- if ((str = (uchar *)getenv ((char *)magic)) != 0) {
-
-#if 0
- printf ("### Compare \"%s\" \"%s\"\n",
- kbd_str, str);
-#endif
- if (strcmp ((char *)kbd_str, (char *)str) == 0) {
- sprintf ((char *)cmd_name, "%s%c",
- kbd_command_prefix,
- *suffix);
-
- if ((cmd = getenv ((char *)cmd_name)) != 0) {
-#if 0
- printf ("### Set PREBOOT to $(%s): \"%s\"\n",
- cmd_name, cmd);
-#endif
- return ((uchar *)cmd);
- }
- }
- }
- }
- }
-#if 0
- printf ("### Delete PREBOOT\n");
-#endif
- *kbd_str = '\0';
- return (NULL);
-}
-#endif /* CONFIG_PREBOOT */
-
-/* Read Keyboard status */
-int do_kbd (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- uchar kbd_data[KEYBD_DATALEN];
- uchar keybd_env[2 * KEYBD_DATALEN + 1];
- int i;
-
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- /* Read keys */
- i2c_read (CFG_I2C_KEY_ADDR, 0, 0, kbd_data, KEYBD_DATALEN);
-
- puts ("Keys:");
- for (i = 0; i < KEYBD_DATALEN; ++i) {
- sprintf ((char *)(keybd_env + i + i), "%02X", kbd_data[i]);
- printf (" %02x", kbd_data[i]);
- }
- putc ('\n');
- setenv ("keybd", (char *)keybd_env);
- return 0;
-}
-
-U_BOOT_CMD(
- kbd, 1, 1, do_kbd,
- "kbd - read keyboard status\n",
- NULL
-);
diff --git a/board/r360mpi/u-boot.lds b/board/r360mpi/u-boot.lds
deleted file mode 100644
index 8b06af78e4..0000000000
--- a/board/r360mpi/u-boot.lds
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- cpu/mpc8xx/cpu_init.o (.text)
- cpu/mpc8xx/interrupts.o (.text)
- cpu/mpc8xx/traps.o (.text)
-/***
- . = env_offset;
- common/environment.o (.text)
-***/
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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 = .);
- . = ALIGN(128 * 1024);
- .ppcenv :
- {
- common/environment.o (.ppcenv)
- }
-}
diff --git a/board/rbc823/Makefile b/board/rbc823/Makefile
deleted file mode 100644
index 2182bc9769..0000000000
--- a/board/rbc823/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o kbd.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/rbc823/config.mk b/board/rbc823/config.mk
deleted file mode 100644
index 199ea3c1f0..0000000000
--- a/board/rbc823/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# RBC823 boards
-#
-
-TEXT_BASE = 0xFFF00000
diff --git a/board/rbc823/flash.c b/board/rbc823/flash.c
deleted file mode 100644
index 84ae5c1b5d..0000000000
--- a/board/rbc823/flash.c
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i < CFG_MAX_FLASH_BANKS; ++i)
- flash_info[i].flash_id = FLASH_UNKNOWN;
-
- /* Detect size */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- /* Setup offsets */
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* Monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- size_b1 = 0 ;
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- * Fix this to support variable sector sizes
-*/
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- /* set sector offsets for bottom boot block type */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN)
- {
- puts ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK)
- {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK)
- {
- case FLASH_AM040: printf ("29F040 or 29LV040 (4 Mbit, uniform sectors)\n");
- break;
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- if (info->size >> 20) {
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
- } else {
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10,
- info->sector_count);
- }
-
- puts (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i)
- {
- if ((i % 5) == 0)
- {
- puts ("\n ");
- }
-
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
-
- putc ('\n');
- return;
-}
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- volatile unsigned char *caddr;
- char value;
-
- caddr = (volatile unsigned char *)addr ;
-
- /* Write auto select command: read Manufacturer ID */
-
-#if 0
- printf("Base address is: %08x\n", caddr);
-#endif
-
- caddr[0x0555] = 0xAA;
- caddr[0x02AA] = 0x55;
- caddr[0x0555] = 0x90;
-
- value = caddr[0];
-
-#if 0
- printf("Manufact ID: %02x\n", value);
-#endif
- switch (value)
- {
- case 0x01: /*AMD_MANUFACT*/
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case 0x04: /*FUJ_MANUFACT*/
- info->flash_id = FLASH_MAN_FUJ;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- value = caddr[1]; /* device ID */
-#if 0
- printf("Device ID: %02x\n", value);
-#endif
- switch (value)
- {
- case AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 512Kb */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- flash_get_offsets ((ulong)addr, &flash_info[0]);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++)
- {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- caddr = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = caddr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN)
- {
- caddr = (volatile unsigned char *)info->start[0];
- *caddr = 0xF0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile unsigned char *addr = (volatile unsigned char *)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0x80;
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (volatile unsigned char *)(info->start[sect]);
- addr[0] = 0x30;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (volatile unsigned char *)(info->start[l_sect]);
-
- while ((addr[0] & 0xFF) != 0xFF)
- {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned char *)info->start[0];
-
- addr[0] = 0xF0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile unsigned char *addr = (volatile unsigned char*)(info->start[0]),
- *cdest,*cdata;
- ulong start;
- int flag, count = 4 ;
-
- cdest = (volatile unsigned char *)dest ;
- cdata = (volatile unsigned char *)&data ;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
- while(count--)
- {
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAA;
- addr[0x02AA] = 0x55;
- addr[0x0555] = 0xA0;
-
- *cdest = *cdata;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*cdest ^ *cdata) & 0x80)
- {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
- cdata++ ;
- cdest++ ;
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/rbc823/kbd.c b/board/rbc823/kbd.c
deleted file mode 100644
index 6d530f6b43..0000000000
--- a/board/rbc823/kbd.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * (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
- */
-
-/* Modified by Udi Finkelstein
- *
- * This file includes communication routines for SMC1 that can run even if
- * SMC2 have already been initialized.
- */
-
-#include <common.h>
-#include <watchdog.h>
-#include <commproc.h>
-#include <devices.h>
-#include <lcd.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define SMC_INDEX 0
-#define PROFF_SMC PROFF_SMC1
-#define CPM_CR_CH_SMC CPM_CR_CH_SMC1
-
-#define RBC823_KBD_BAUDRATE 38400
-#define CPM_KEYBOARD_BASE 0x1000
-/*
- * Minimal serial functions needed to use one of the SMC ports
- * as serial console interface.
- */
-
-void smc1_setbrg (void)
-{
- volatile immap_t *im = (immap_t *)CFG_IMMR;
- volatile cpm8xx_t *cp = &(im->im_cpm);
-
- /* Set up the baud rate generator.
- * See 8xx_io/commproc.c for details.
- *
- * Wire BRG2 to SMC1, BRG1 to SMC2
- */
-
- cp->cp_simode = 0x00001000;
-
- cp->cp_brgc2 =
- (((gd->cpu_clk / 16 / RBC823_KBD_BAUDRATE)-1) << 1) | CPM_BRG_EN;
-}
-
-int smc1_init (void)
-{
- volatile immap_t *im = (immap_t *)CFG_IMMR;
- volatile smc_t *sp;
- volatile smc_uart_t *up;
- volatile cbd_t *tbdf, *rbdf;
- volatile cpm8xx_t *cp = &(im->im_cpm);
- uint dpaddr;
-
- /* initialize pointers to SMC */
-
- sp = (smc_t *) &(cp->cp_smc[SMC_INDEX]);
- up = (smc_uart_t *) &cp->cp_dparam[PROFF_SMC];
-
- /* Disable transmitter/receiver.
- */
- sp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
-
- /* Enable SDMA.
- */
- im->im_siu_conf.sc_sdcr = 1;
-
- /* clear error conditions */
-#ifdef CFG_SDSR
- im->im_sdma.sdma_sdsr = CFG_SDSR;
-#else
- im->im_sdma.sdma_sdsr = 0x83;
-#endif
-
- /* clear SDMA interrupt mask */
-#ifdef CFG_SDMR
- im->im_sdma.sdma_sdmr = CFG_SDMR;
-#else
- im->im_sdma.sdma_sdmr = 0x00;
-#endif
-
- /* Use Port B for SMC1 instead of other functions.
- */
- cp->cp_pbpar |= 0x000000c0;
- cp->cp_pbdir &= ~0x000000c0;
- cp->cp_pbodr &= ~0x000000c0;
-
- /* Set the physical address of the host memory buffers in
- * the buffer descriptors.
- */
-
-#ifdef CFG_ALLOC_DPRAM
- dpaddr = dpram_alloc_align (sizeof(cbd_t)*2 + 2, 8) ;
-#else
- dpaddr = CPM_KEYBOARD_BASE ;
-#endif
-
- /* Allocate space for two buffer descriptors in the DP ram.
- * For now, this address seems OK, but it may have to
- * change with newer versions of the firmware.
- * damm: allocating space after the two buffers for rx/tx data
- */
-
- rbdf = (cbd_t *)&cp->cp_dpmem[dpaddr];
- rbdf->cbd_bufaddr = (uint) (rbdf+2);
- rbdf->cbd_sc = 0;
- tbdf = rbdf + 1;
- tbdf->cbd_bufaddr = ((uint) (rbdf+2)) + 1;
- tbdf->cbd_sc = 0;
-
- /* Set up the uart parameters in the parameter ram.
- */
- up->smc_rbase = dpaddr;
- up->smc_tbase = dpaddr+sizeof(cbd_t);
- up->smc_rfcr = SMC_EB;
- up->smc_tfcr = SMC_EB;
-
- /* Set UART mode, 8 bit, no parity, one stop.
- * Enable receive and transmit.
- */
- sp->smc_smcmr = smcr_mk_clen(9) | SMCMR_SM_UART;
-
- /* Mask all interrupts and remove anything pending.
- */
- sp->smc_smcm = 0;
- sp->smc_smce = 0xff;
-
- /* Set up the baud rate generator.
- */
- smc1_setbrg ();
-
- /* Make the first buffer the only buffer.
- */
- tbdf->cbd_sc |= BD_SC_WRAP;
- rbdf->cbd_sc |= BD_SC_EMPTY | BD_SC_WRAP;
-
- /* Single character receive.
- */
- up->smc_mrblr = 1;
- up->smc_maxidl = 0;
-
- /* Initialize Tx/Rx parameters.
- */
-
- while (cp->cp_cpcr & CPM_CR_FLG) /* wait if cp is busy */
- ;
-
- cp->cp_cpcr = mk_cr_cmd(CPM_CR_CH_SMC, CPM_CR_INIT_TRX) | CPM_CR_FLG;
-
- while (cp->cp_cpcr & CPM_CR_FLG) /* wait if cp is busy */
- ;
-
- /* Enable transmitter/receiver.
- */
- sp->smc_smcmr |= SMCMR_REN | SMCMR_TEN;
-
- return (0);
-}
-
-void smc1_putc(const char c)
-{
- volatile cbd_t *tbdf;
- volatile char *buf;
- volatile smc_uart_t *up;
- volatile immap_t *im = (immap_t *)CFG_IMMR;
- volatile cpm8xx_t *cpmp = &(im->im_cpm);
-
- up = (smc_uart_t *)&cpmp->cp_dparam[PROFF_SMC];
-
- tbdf = (cbd_t *)&cpmp->cp_dpmem[up->smc_tbase];
-
- /* Wait for last character to go.
- */
-
- buf = (char *)tbdf->cbd_bufaddr;
-
- *buf = c;
- tbdf->cbd_datlen = 1;
- tbdf->cbd_sc |= BD_SC_READY;
- __asm__("eieio");
-
- while (tbdf->cbd_sc & BD_SC_READY) {
- WATCHDOG_RESET ();
- __asm__("eieio");
- }
-}
-
-int smc1_getc(void)
-{
- volatile cbd_t *rbdf;
- volatile unsigned char *buf;
- volatile smc_uart_t *up;
- volatile immap_t *im = (immap_t *)CFG_IMMR;
- volatile cpm8xx_t *cpmp = &(im->im_cpm);
- unsigned char c;
-
- up = (smc_uart_t *)&cpmp->cp_dparam[PROFF_SMC];
-
- rbdf = (cbd_t *)&cpmp->cp_dpmem[up->smc_rbase];
-
- /* Wait for character to show up.
- */
- buf = (unsigned char *)rbdf->cbd_bufaddr;
-
- while (rbdf->cbd_sc & BD_SC_EMPTY)
- WATCHDOG_RESET ();
-
- c = *buf;
- rbdf->cbd_sc |= BD_SC_EMPTY;
-
- return(c);
-}
-
-int smc1_tstc(void)
-{
- volatile cbd_t *rbdf;
- volatile smc_uart_t *up;
- volatile immap_t *im = (immap_t *)CFG_IMMR;
- volatile cpm8xx_t *cpmp = &(im->im_cpm);
-
- up = (smc_uart_t *)&cpmp->cp_dparam[PROFF_SMC];
-
- rbdf = (cbd_t *)&cpmp->cp_dpmem[up->smc_rbase];
-
- return(!(rbdf->cbd_sc & BD_SC_EMPTY));
-}
-
-/* search for keyboard and register it if found */
-int drv_keyboard_init(void)
-{
- int error = 0;
- device_t kbd_dev;
-
- if (0) {
- /* register the keyboard */
- memset (&kbd_dev, 0, sizeof(device_t));
- strcpy(kbd_dev.name, "kbd");
- kbd_dev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;
- kbd_dev.putc = NULL;
- kbd_dev.puts = NULL;
- kbd_dev.getc = smc1_getc;
- kbd_dev.tstc = smc1_tstc;
- error = device_register (&kbd_dev);
- } else {
- lcd_is_enabled = 0;
- lcd_disable();
- }
- return error;
-}
diff --git a/board/rbc823/rbc823.c b/board/rbc823/rbc823.c
deleted file mode 100644
index 9e60c2b646..0000000000
--- a/board/rbc823/rbc823.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * (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 <common.h>
-#include "mpc8xx.h"
-#include <linux/mtd/doc2000.h>
-
-extern int kbd_init(void);
-extern int drv_kbd_init(void);
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] =
-{
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEFC04, 0x11ADFC04, 0xEFBBBC00,
- 0x1FF77C47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FF77C34, 0xEFEABC34, 0x1FB57C35, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEFC04, 0x10ADFC04, 0xF0AFFC00,
- 0xF0AFFC00, 0xF1AFFC00, 0xEFBBBC00, 0x1FF77C47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x1F27FC04, 0xEEAEBC00, 0x01B93C04, 0x1FF77C47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEBC00, 0x10AD7C00, 0xF0AFFC00,
- 0xF0AFFC00, 0xE1BBBC04, 0x1FF77C47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1FF5FC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x1FF7FC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-const uint static_table[] =
-{
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x0FFFFC04, 0x0FF3FC04, 0x0FF3CC04, 0x0FF3CC04,
- 0x0FF3EC04, 0x0FF3CC00, 0x0FF7FC04, 0x3FFFFC04,
- 0xFFFFFC04, 0xFFFFFC05, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x0FFFFC04, 0x00FFFC04, 0x00FFFC04, 0x00FFFC04,
- 0x01FFFC00, 0x3FFFFC04, 0xFFFFFC04, 0xFFFFFC05, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- *
- * Test TQ ID string (TQM8xx...)
- * If present, check for "L" type (no second DRAM bank),
- * otherwise "L" type is assumed as default.
- *
- * Return 1 for "L" type, 0 else.
- */
-
-int checkboard (void)
-{
- char *s = getenv ("serial#");
-
- if (!s || strncmp (s, "TQM8", 4)) {
- printf ("### No HW ID - assuming RBC823\n");
- return (0);
- }
-
- puts (s);
- putc ('\n');
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size_b0, size8, size9;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * 1 Bank of 64Mbit x 2 devices
- */
- memctl->memc_mptpr = CFG_MPTPR_1BK_4K;
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller SDRAM bank 0
- */
- memctl->memc_or4 = CFG_OR4_PRELIM;
- memctl->memc_br4 = CFG_BR4_PRELIM;
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
- udelay (200);
-
- /*
- * Perform SDRAM initializsation sequence
- */
- memctl->memc_mcr = 0x80008105; /* SDRAM bank 0 */
- udelay (1);
- memctl->memc_mamr = (CFG_MAMR_8COL & ~(MAMR_TLFA_MSK)) | MAMR_TLFA_8X;
- udelay (200);
- memctl->memc_mcr = 0x80008130; /* SDRAM bank 0 - execute twice */
- udelay (1);
- memctl->memc_mamr = (CFG_MAMR_8COL & ~(MAMR_TLFA_MSK)) | MAMR_TLFA_4X;
- udelay (200);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
- udelay (1000);
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K; /* 16: but should be: CFG_MPTPR_1BK_4K */
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL, (long *) SDRAM_BASE4_PRELIM,
- SDRAM_MAX_SIZE);
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE4_PRELIM,
- SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size_b0 = size9;
-/* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */
- } else { /* back to 8 columns */
- size_b0 = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
-/* debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size >> 20); */
- }
-
- udelay (1000);
-
- /*
- * Adjust refresh rate depending on SDRAM type, both banks
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if ((size_b0 < 0x02000000)) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
- udelay (1000);
- }
-
- /* SDRAM Bank 0 is bigger - map first */
-
- memctl->memc_or4 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br4 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- udelay (10000);
-
- return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size (base, maxsize));
-}
-
-void doc_init (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- upmconfig (UPMB, (uint *) static_table,
- sizeof (static_table) / sizeof (uint));
- memctl->memc_mbmr = MAMR_DSA_1_CYCL;
-
- doc_probe (FLASH_BASE1_PRELIM);
-}
diff --git a/board/rbc823/u-boot.lds b/board/rbc823/u-boot.lds
deleted file mode 100644
index 68ca85644e..0000000000
--- a/board/rbc823/u-boot.lds
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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/rmu/Makefile b/board/rmu/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/rmu/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/rmu/config.mk b/board/rmu/config.mk
deleted file mode 100644
index 7cb374eb85..0000000000
--- a/board/rmu/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# RMU boards
-#
-
-TEXT_BASE = 0xfff00000
diff --git a/board/rmu/flash.c b/board/rmu/flash.c
deleted file mode 100644
index 0f2c327a1c..0000000000
--- a/board/rmu/flash.c
+++ /dev/null
@@ -1,540 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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
- */
-
-/* #define DEBUG */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0 ;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- debug ("\n## Get flash bank size @ 0x%08x\n", FLASH_BASE_PRELIM);
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE_PRELIM, &flash_info[0]);
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- debug ("## Before remap: BR0: 0x%08x OR0: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0);
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-
- debug ("## BR0: 0x%08x OR0: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0);
-
- /* Re-do sizing to get full correct info */
-
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- &flash_info[0]);
-#endif
-
-#if defined(CFG_ENV_ADDR_REDUND) || defined(CFG_ENV_OFFSET_REDUND)
- debug ("Protect redundand environment: %08lx ... %08lx\n",
- (ulong)CFG_ENV_ADDR_REDUND,
- (ulong)CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE - 1);
-
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE_REDUND - 1,
- &flash_info[0]);
-#endif
-
- flash_info[0].size = size_b0;
-
- debug ("## Final Flash bank size: %08lx\n", size_b0);
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00010000;
- info->start[2] = base + 0x00018000;
- info->start[3] = base + 0x00020000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + ((i-3) * 0x00040000) ;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00010000;
- info->start[i--] = base + info->size - 0x00018000;
- info->start[i--] = base + info->size - 0x00020000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00040000;
- }
- }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0xAAA] = 0xAAAAAAAA ;
- addr[0x555] = 0x55555555 ;
- addr[0xAAA] = 0x90909090 ;
-
- value = addr[0] ;
-
- debug ("Manuf. ID @ 0x%08lx: 0x%08lx\n", (ulong)addr, value);
-
- switch (value & 0x00FF00FF) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[2] ; /* device ID */
-
- debug ("Device ID @ 0x%08lx: 0x%08lx\n", (ulong)(&addr[1]), value);
-
- switch (value & 0x00FF00FF) {
- case (AMD_ID_LV400T & 0x00FF00FF):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV400B & 0x00FF00FF):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800T & 0x00FF00FF):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV800B & 0x00FF00FF):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00400000; /*%%% Size doubled by yooth */
- break; /* => 4 MB */
-
- case (AMD_ID_LV160T & 0x00FF00FF):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV160B & 0x00FF00FF):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00800000;
- break; /* => 8 MB */
- case (AMD_ID_LV320T & 0x00FF00FF):
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (AMD_ID_LV320B & 0x00FF00FF):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x01000000;
- break; /* => 16 MB */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00010000;
- info->start[2] = base + 0x00018000;
- info->start[3] = base + 0x00020000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + ((i-3) * 0x00040000) ;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00010000;
- info->start[i--] = base + info->size - 0x00018000;
- info->start[i--] = base + info->size - 0x00020000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00040000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[4] & 1 ;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0xF0F0F0F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- debug ("flash_erase: first: %d last: %d\n", s_first, s_last);
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
- addr[0xAAA] = 0x80808080;
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long *)(info->start[sect]) ;
- addr[0] = 0x30303030 ;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long *)(info->start[l_sect]);
- while ((addr[0] & 0x80808080) != 0x80808080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (vu_long *)info->start[0];
- addr[0] = 0xF0F0F0F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0xAAA] = 0xAAAAAAAA;
- addr[0x555] = 0x55555555;
- addr[0xAAA] = 0xA0A0A0A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x80808080) != (data & 0x80808080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/rmu/rmu.c b/board/rmu/rmu.c
deleted file mode 100644
index 8cb03c7f84..0000000000
--- a/board/rmu/rmu.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFCC25
-
-const uint sdram_table[] =
-{
- /*
- * Single Read. (Offset 00h in UPMA RAM)
- */
- 0x0F03CC04, 0x00ACCC24, 0x1FF74C20, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Burst Read. (Offset 08h in UPMA RAM)
- */
- 0x0F03CC04, 0x00ACCC24, 0x00FFCC20, 0x00FFCC20,
- 0x01FFCC20, 0x1FF74C20, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Single Write. (Offset 18h in UPMA RAM)
- */
- 0x0F03CC02, 0x00AC0C24, 0x1FF74C25, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Burst Write. (Offset 20h in UPMA RAM)
- */
- 0x0F03CC00, 0x00AC0C20, 0x00FFFC20, 0x00FFFC22,
- 0x01FFFC24, 0x1FF74C25, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Refresh. (Offset 30h in UPMA RAM)
- * (Initialization code at 0x36)
- */
- 0x0FF0CC24, 0xFFFFCC24, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, 0xEFFB8C34, 0x0FF74C34,
- 0x0FFACCB4, 0x0FF5CC34, 0x0FFFCC34, 0x0FFFCCB4,
-
- /*
- * Exception. (Offset 3Ch in UPMA RAM)
- */
- 0x0FEA8C34, 0x1FB54C34, 0xFFFFCC34, _NOT_USED_
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: RMU\n") ;
- return (0) ;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size9;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /* Refresh clock prescalar */
- memctl->memc_mptpr = CFG_MPTPR;
-
- memctl->memc_mar = 0x00000088;
-
- /* Map controller banks 1 to the SDRAM bank */
- memctl->memc_or1 = CFG_OR1_PRELIM;
- memctl->memc_br1 = CFG_BR1_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_9COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80002136; /* SDRAM bank 0 */
- udelay (1);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /* Check Bank 0 Memory Size,
- * 9 column mode
- */
-
- size9 = dram_size (CFG_MAMR_9COL, (long *) SDRAM_BASE_PRELIM,
- SDRAM_MAX_SIZE);
-
- /*
- * Final mapping:
- */
-
- memctl->memc_or1 = ((-size9) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- udelay (1000);
-
- return (size9);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
diff --git a/board/rmu/u-boot.lds b/board/rmu/u-boot.lds
deleted file mode 100644
index 049f9901f7..0000000000
--- a/board/rmu/u-boot.lds
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-/* XXX ?
- . = env_offset;
-*/
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/rmu/u-boot.lds.debug b/board/rmu/u-boot.lds.debug
deleted file mode 100644
index 894b9bd25b..0000000000
--- a/board/rmu/u-boot.lds.debug
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/rpxsuper/Makefile b/board/rpxsuper/Makefile
deleted file mode 100644
index 4b0dc25d57..0000000000
--- a/board/rpxsuper/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := rpxsuper.o flash.o mii_phy.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/rpxsuper/config.mk b/board/rpxsuper/config.mk
deleted file mode 100644
index 4b8c5d31f7..0000000000
--- a/board/rpxsuper/config.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (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
-#
-
-#
-# MBX8xx boards
-#
-
-TEXT_BASE = 0x80F00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/rpxsuper/flash.c b/board/rpxsuper/flash.c
deleted file mode 100644
index d80e778622..0000000000
--- a/board/rpxsuper/flash.c
+++ /dev/null
@@ -1,434 +0,0 @@
-/*
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for AMD 29F080B devices
- * Added support for 64bit and AMD 29DL323B
- *
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-#include <asm/io.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-#define RD_SWP32(x) in_le32((volatile u32*)x)
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* for now, only support the 4 MB Flash SIMM */
- size = flash_get_size((vu_long *)CFG_FLASH0_BASE, &flash_info[0]);
-
- /*
- * protect monitor and environment sectors
- */
-
-#if CFG_MONITOR_BASE >= CFG_FLASH0_BASE
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- return /*size*/ (CFG_FLASH0_SIZE * 1024 * 1024);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf ("AMD ");
- break;
- case (FUJ_MANUFACT & FLASH_VENDMASK):
- printf ("FUJITSU ");
- break;
- case (SST_MANUFACT & FLASH_VENDMASK):
- printf ("SST ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_DL323B & FLASH_TYPEMASK):
- printf("AM29DL323B (32 MBit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0) printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- vu_long vendor[2], devid[2];
- ulong base = (ulong)addr;
-
- /* Reset and Write auto select command: read Manufacturer ID */
- addr[0] = 0xf0f0f0f0;
- addr[2 * 0x0555] = 0xAAAAAAAA;
- addr[2 * 0x02AA] = 0x55555555;
- addr[2 * 0x0555] = 0x90909090;
- addr[1] = 0xf0f0f0f0;
- addr[2 * 0x0555 + 1] = 0xAAAAAAAA;
- addr[2 * 0x02AA + 1] = 0x55555555;
- addr[2 * 0x0555 + 1] = 0x90909090;
- udelay (1000);
-
- vendor[0] = RD_SWP32(&addr[0]);
- vendor[1] = RD_SWP32(&addr[1]);
- if (vendor[0] != vendor[1] || vendor[0] != AMD_MANUFACT) {
- info->size = 0;
- goto out;
- }
-
- devid[0] = RD_SWP32(&addr[2]);
- devid[1] = RD_SWP32(&addr[3]);
-
- if (devid[0] == AMD_ID_DL323B) {
- /*
- * we have 2 Banks
- * Bank 1 (23 Sectors): 0-7=8kbyte, 8-22=64kbyte
- * Bank 2 (48 Sectors): 23-70=64kbyte
- */
- info->flash_id = (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_DL323B & FLASH_TYPEMASK);
- info->sector_count = 71;
- info->size = 4 * (8 * 8 + 63 * 64) * 1024;
- }
- else {
- info->size = 0;
- goto out;
- }
-
- /* set up sector start address table */
- for (i = 0; i < 8; i++) {
- info->start[i] = base + (i * 0x8000);
- }
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x40000) + 8 * 0x8000 - 8 * 0x40000;
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address */
- addr = (volatile unsigned long *)(info->start[i]);
- addr[2 * 0x0555] = 0xAAAAAAAA;
- addr[2 * 0x02AA] = 0x55555555;
- addr[2 * 0x0555] = 0x90909090;
- addr[2 * 0x0555 + 1] = 0xAAAAAAAA;
- addr[2 * 0x02AA + 1] = 0x55555555;
- addr[2 * 0x0555 + 1] = 0x90909090;
- udelay (1000);
- base = RD_SWP32(&addr[4]);
- base |= RD_SWP32(&addr[5]);
- info->protect[i] = base & 0x00010001 ? 1 : 0;
- }
- addr = (vu_long*)info->start[0];
-
-out:
- /* reset command */
- addr[0] = 0xf0f0f0f0;
- addr[1] = 0xf0f0f0f0;
-
- return info->size;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[2 * 0x0555] = 0xAAAAAAAA;
- addr[2 * 0x02AA] = 0x55555555;
- addr[2 * 0x0555] = 0x80808080;
- addr[2 * 0x0555] = 0xAAAAAAAA;
- addr[2 * 0x02AA] = 0x55555555;
- addr[2 * 0x0555 + 1] = 0xAAAAAAAA;
- addr[2 * 0x02AA + 1] = 0x55555555;
- addr[2 * 0x0555 + 1] = 0x80808080;
- addr[2 * 0x0555 + 1] = 0xAAAAAAAA;
- addr[2 * 0x02AA + 1] = 0x55555555;
- udelay (100);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x30303030;
- addr[1] = 0x30303030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ( (addr[0] & 0x80808080) != 0x80808080 ||
- (addr[1] & 0x80808080) != 0x80808080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0xF0F0F0F0; /* reset bank */
- addr[1] = 0xF0F0F0F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- if ((dest & 0x00000004) == 0) {
- addr[2 * 0x0555] = 0xAAAAAAAA;
- addr[2 * 0x02AA] = 0x55555555;
- addr[2 * 0x0555] = 0xA0A0A0A0;
- }
- else {
- addr[2 * 0x0555 + 1] = 0xAAAAAAAA;
- addr[2 * 0x02AA + 1] = 0x55555555;
- addr[2 * 0x0555 + 1] = 0xA0A0A0A0;
- }
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x80808080) != (data & 0x80808080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/rpxsuper/mii_phy.c b/board/rpxsuper/mii_phy.c
deleted file mode 100644
index ef99affff9..0000000000
--- a/board/rpxsuper/mii_phy.c
+++ /dev/null
@@ -1,107 +0,0 @@
-#include <common.h>
-#include <mii_phy.h>
-#include "rpxsuper.h"
-
-#define MII_MDIO 0x01
-#define MII_MDCK 0x02
-#define MII_MDIR 0x04
-
-void
-mii_discover_phy(void)
-{
- int known;
- unsigned short phy_reg;
- unsigned long phy_id;
-
- known = 0;
- printf("Discovering phy @ 0: ");
- phy_id = mii_phy_read(2) << 16;
- phy_id |= mii_phy_read(3);
- if ((phy_id & 0xFFFFFC00) == 0x00137800) {
- printf("Level One ");
- if ((phy_id & 0x000003F0) == 0xE0) {
- printf("LXT971A Revision %d\n", (int)(phy_id & 0xF));
- known = 1;
- }
- else printf("unknown type\n");
- }
- else printf("unknown OUI = 0x%08lX\n", phy_id);
-
- phy_reg = mii_phy_read(1);
- if (!(phy_reg & 0x0004)) printf("Link is down\n");
- if (!(phy_reg & 0x0020)) printf("Auto-negotiation not complete\n");
- if (phy_reg & 0x0002) printf("Jabber condition detected\n");
- if (phy_reg & 0x0010) printf("Remote fault condition detected \n");
-
- if (known) {
- phy_reg = mii_phy_read(17);
- if (phy_reg & 0x0400)
- printf("Phy operating at %d MBit/s in %s-duplex mode\n",
- phy_reg & 0x4000 ? 100 : 10,
- phy_reg & 0x0200 ? "full" : "half");
- else
- printf("bad link!!\n");
-/*
-left off: no link, green 100MBit, yellow 10MBit
-right off: no activity, green full-duplex, yellow half-duplex
-*/
- mii_phy_write(20, 0x0452);
- }
-}
-
-unsigned short
-mii_phy_read(unsigned short reg)
-{
- int i;
- unsigned short tmp, val = 0, adr = 0;
- t_rpx_regs *regs = (t_rpx_regs*)CFG_REGS_BASE;
-
- tmp = 0x6002 | (adr << 7) | (reg << 2);
- regs->bcsr4 = 0xC3;
- for (i = 0; i < 64; i++) {
- regs->bcsr4 ^= MII_MDCK;
- }
- for (i = 0; i < 16; i++) {
- regs->bcsr4 &= ~MII_MDCK;
- if (tmp & 0x8000) regs->bcsr4 |= MII_MDIO;
- else regs->bcsr4 &= ~MII_MDIO;
- regs->bcsr4 |= MII_MDCK;
- tmp <<= 1;
- }
- regs->bcsr4 |= MII_MDIR;
- for (i = 0; i < 16; i++) {
- val <<= 1;
- regs->bcsr4 = MII_MDIO | (regs->bcsr4 | MII_MDCK);
- if (regs->bcsr4 & MII_MDIO) val |= 1;
- regs->bcsr4 = MII_MDIO | (regs->bcsr4 &= ~MII_MDCK);
- }
- return val;
-}
-
-void
-mii_phy_write(unsigned short reg, unsigned short val)
-{
- int i;
- unsigned short tmp, adr = 0;
- t_rpx_regs *regs = (t_rpx_regs*)CFG_REGS_BASE;
-
- tmp = 0x5002 | (adr << 7) | (reg << 2);
- regs->bcsr4 = 0xC3;
- for (i = 0; i < 64; i++) {
- regs->bcsr4 ^= MII_MDCK;
- }
- for (i = 0; i < 16; i++) {
- regs->bcsr4 &= ~MII_MDCK;
- if (tmp & 0x8000) regs->bcsr4 |= MII_MDIO;
- else regs->bcsr4 &= ~MII_MDIO;
- regs->bcsr4 |= MII_MDCK;
- tmp <<= 1;
- }
- for (i = 0; i < 16; i++) {
- regs->bcsr4 &= ~MII_MDCK;
- if (val & 0x8000) regs->bcsr4 |= MII_MDIO;
- else regs->bcsr4 &= ~MII_MDIO;
- regs->bcsr4 |= MII_MDCK;
- val <<= 1;
- }
-}
diff --git a/board/rpxsuper/readme b/board/rpxsuper/readme
deleted file mode 100644
index 21267bdd8c..0000000000
--- a/board/rpxsuper/readme
+++ /dev/null
@@ -1,30 +0,0 @@
-Hi,
-
-so this is the port to the Embedded Planet RPX Super Board.
-
-ATTENTION
-This code is only tested on the AY-Version, which is an early release with some
-hardware bugs. The main problem is that this board uses the default Hard Reset
-Configuration Word and not the 4 bytes located at start of FLASH because at
-0xFE000000 is no FLASH. The FLASH consists out of 4 chips each 16bits wide. Be
-carefull, the bytes are swapped. So DQ0-7 is the high byte, DQ8-15 ist the low
-byte.
-
-The icache can only manually be enabled after reset.
-The FLASH and main SDRAM is working with icache enabled.
-The local SDRAM can only be used as data memory when icache is enabled.
-If U-Boot runs in local SDRAM, TFTP does not work.
-The functions in mii_phy.c are all working. Call mii_phy_discover() out of
-eth_init() and solve the linker error.
-I2C, RTC/NVRAM and PCMCIA are not working yet.
-
-TODO
-The 32MB local SDRAM is working but not shown in the startup messages of
-U-Boot. If you locate U-Boot or any other program to this area it won't run.
-Turning the ichache off does not solve this problem.
-
-As I won't buy another RPX Super there might be some little work to do for you
-getting this U-Boot port running on the final board.
-
-
-frank.morauf@salzbrenner.com
diff --git a/board/rpxsuper/rpxsuper.c b/board/rpxsuper/rpxsuper.c
deleted file mode 100644
index b4331f1cde..0000000000
--- a/board/rpxsuper/rpxsuper.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Jay Monkman <jtm@smoothsmoothie.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
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include "rpxsuper.h"
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 *ATMTXEN */
- /* PA30 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMTCA */
- /* PA29 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMTSOC */
- /* PA28 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 *ATMRXEN */
- /* PA27 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMRSOC */
- /* PA26 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMRCA */
- /* PA25 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[0] */
- /* PA24 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[1] */
- /* PA23 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[2] */
- /* PA22 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[3] */
- /* PA21 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[4] */
- /* PA20 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[5] */
- /* PA19 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[6] */
- /* PA18 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXD[7] */
- /* PA17 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[7] */
- /* PA16 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[6] */
- /* PA15 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[5] */
- /* PA14 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[4] */
- /* PA13 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[3] */
- /* PA12 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[2] */
- /* PA11 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[1] */
- /* PA10 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXD[0] */
- /* PA9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PA8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC2 RXD */
- /* PA7 */ { 1, 0, 0, 0, 0, 0 }, /* PA7 */
- /* PA6 */ { 1, 0, 0, 0, 0, 0 }, /* PA6 */
- /* PA5 */ { 1, 0, 0, 0, 0, 0 }, /* PA5 */
- /* PA4 */ { 1, 0, 0, 0, 0, 0 }, /* PA4 */
- /* PA3 */ { 1, 0, 0, 0, 0, 0 }, /* PA3 */
- /* PA2 */ { 1, 0, 0, 0, 0, 0 }, /* PA2 */
- /* PA1 */ { 1, 0, 0, 0, 0, 0 }, /* PA1 */
- /* PA0 */ { 1, 0, 0, 0, 0, 0 } /* PA0 */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RX_DV */
- /* PB16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RX_ER */
- /* PB15 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TX_ER */
- /* PB14 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TX_EN */
- /* PB13 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII COL */
- /* PB12 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII CRS */
- /* PB11 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[3] */
- /* PB10 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[2] */
- /* PB9 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[1] */
- /* PB8 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[0] */
- /* PB7 */ { 0, 0, 0, 0, 0, 0 }, /* PB7 */
- /* PB6 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[1] */
- /* PB5 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[2] */
- /* PB4 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[3] */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 1, 0, 0, 1, 0, 0 }, /* PC31 */
- /* PC30 */ { 1, 0, 0, 1, 0, 0 }, /* PC30 */
- /* PC29 */ { 1, 1, 1, 0, 0, 0 }, /* SCC1 EN *CLSN */
- /* PC28 */ { 1, 0, 0, 1, 0, 0 }, /* PC28 */
- /* PC27 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[0] */
- /* PC26 */ { 1, 0, 0, 1, 0, 0 }, /* PC26 */
- /* PC25 */ { 1, 0, 0, 1, 0, 0 }, /* PC25 */
- /* PC24 */ { 1, 0, 0, 1, 0, 0 }, /* PC24 */
- /* PC23 */ { 1, 1, 0, 1, 0, 0 }, /* ATMTFCLK */
- /* PC22 */ { 1, 1, 0, 0, 0, 0 }, /* ATMRFCLK */
- /* PC21 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN RXCLK */
- /* PC20 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN TXCLK */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_CLK */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII TX_CLK */
- /* PC17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RX_CLK */
- /* PC16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII TX_CLK */
- /* PC15 */ { 1, 0, 0, 0, 0, 0 }, /* PC15 */
- /* PC14 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN *CD */
- /* PC13 */ { 1, 0, 0, 1, 0, 0 }, /* PC13 */
- /* PC12 */ { 1, 0, 0, 1, 0, 0 }, /* PC12 */
- /* PC11 */ { 1, 0, 0, 1, 0, 0 }, /* PC11 */
- /* PC10 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MDC */
- /* PC9 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MDIO */
- /* PC8 */ { 1, 0, 0, 1, 0, 0 }, /* PC8 */
- /* PC7 */ { 1, 0, 0, 1, 0, 0 }, /* PC7 */
- /* PC6 */ { 1, 0, 0, 1, 0, 0 }, /* PC6 */
- /* PC5 */ { 1, 0, 0, 1, 0, 0 }, /* PC5 */
- /* PC4 */ { 1, 0, 0, 1, 0, 0 }, /* PC4 */
- /* PC3 */ { 1, 0, 0, 1, 0, 0 }, /* PC3 */
- /* PC2 */ { 1, 0, 0, 1, 0, 1 }, /* ENET FDE */
- /* PC1 */ { 1, 0, 0, 1, 0, 0 }, /* ENET DSQE */
- /* PC0 */ { 1, 0, 0, 1, 0, 0 }, /* ENET LBK */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 0, 0, 0, 0, 0 }, /* SCC1 EN RxD */
- /* PD30 */ { 1, 0, 0, 0, 0, 0 }, /* SCC1 EN TxD */
- /* PD29 */ { 1, 0, 0, 0, 0, 0 }, /* SCC1 EN TENA */
- /* PD28 */ { 1, 0, 0, 0, 0, 0 }, /* PD28 */
- /* PD27 */ { 1, 0, 0, 0, 0, 0 }, /* PD27 */
- /* PD26 */ { 1, 0, 0, 0, 0, 0 }, /* PD26 */
- /* PD25 */ { 1, 0, 0, 0, 0, 0 }, /* PD25 */
- /* PD24 */ { 1, 0, 0, 0, 0, 0 }, /* PD24 */
- /* PD23 */ { 1, 0, 0, 0, 0, 0 }, /* PD23 */
- /* PD22 */ { 1, 0, 0, 0, 0, 0 }, /* PD22 */
- /* PD21 */ { 1, 0, 0, 0, 0, 0 }, /* PD21 */
- /* PD20 */ { 1, 0, 0, 0, 0, 0 }, /* PD20 */
- /* PD19 */ { 1, 0, 0, 0, 0, 0 }, /* PD19 */
- /* PD18 */ { 1, 0, 0, 0, 0, 0 }, /* PD19 */
- /* PD17 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMRXPRTY */
- /* PD16 */ { 1, 0, 0, 0, 0, 0 }, /* FCC1 ATMTXPRTY */
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
- /* PD13 */ { 1, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 1, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 1, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 1, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PD8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PD7 */ { 1, 0, 0, 0, 0, 0 }, /* PD7 */
- /* PD6 */ { 1, 0, 0, 0, 0, 0 }, /* PD6 */
- /* PD5 */ { 1, 0, 0, 0, 0, 0 }, /* PD5 */
- /* PD4 */ { 1, 0, 0, 0, 0, 0 }, /* PD4 */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Setup CS4 to enable the Board Control/Status registers.
- * Otherwise the smcs won't work.
-*/
-int board_early_init_f (void)
-{
- volatile t_rpx_regs *regs = (t_rpx_regs*)CFG_REGS_BASE;
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
- memctl->memc_br4 = CFG_BR4_PRELIM;
- memctl->memc_or4 = CFG_OR4_PRELIM;
- regs->bcsr1 = 0x70; /* to enable terminal no SMC1 */
- regs->bcsr2 = 0x20; /* mut be written to enable writing FLASH */
- return 0;
-}
-
-void
-reset_phy(void)
-{
- volatile t_rpx_regs *regs = (t_rpx_regs*)CFG_REGS_BASE;
- regs->bcsr4 = 0xC3;
-}
-
-/*
- * Check Board Identity:
- */
-
-int checkboard(void)
-{
- volatile t_rpx_regs *regs = (t_rpx_regs*)CFG_REGS_BASE;
- printf ("Board: Embedded Planet RPX Super, Revision %d\n",
- regs->bcsr0 >> 4);
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram(int board_type)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
- volatile uchar c = 0, *ramaddr;
- ulong psdmr, lsdmr, bcr;
- long size = 0;
- int i;
-
- psdmr = CFG_PSDMR;
- lsdmr = CFG_LSDMR;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- size = CFG_SDRAM0_SIZE;
- bcr = immap->im_siu_conf.sc_bcr;
- immap->im_siu_conf.sc_bcr = (bcr & ~BCR_EBM);
-
- memctl->memc_mptpr = CFG_MPTPR;
-
- ramaddr = (uchar *)(CFG_SDRAM0_BASE);
- memctl->memc_psrt = CFG_PSRT;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr = c;
-
- immap->im_siu_conf.sc_bcr = bcr;
-
-#ifndef CFG_RAMBOOT
-/* size += CFG_SDRAM1_SIZE; */
- ramaddr = (uchar *)(CFG_SDRAM1_BASE);
- memctl->memc_lsrt = CFG_LSRT;
-
- memctl->memc_lsdmr = lsdmr | PSDMR_OP_PREA;
- *ramaddr = c;
-
- memctl->memc_lsdmr = lsdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- memctl->memc_lsdmr = lsdmr | PSDMR_OP_MRW;
- *ramaddr = c;
-
- memctl->memc_lsdmr = lsdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr = c;
-#endif
-
- /* return total ram size */
- return (size * 1024 * 1024);
-}
diff --git a/board/rpxsuper/rpxsuper.h b/board/rpxsuper/rpxsuper.h
deleted file mode 100644
index af31060a7b..0000000000
--- a/board/rpxsuper/rpxsuper.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef __RPX8260_H__
-#define __RPX8260_H__
-
-typedef struct tt_rpx_regs
-{
- volatile unsigned char bcsr0;
- volatile unsigned char bcsr1;
- volatile unsigned char bcsr2;
- volatile unsigned char bcsr3;
- volatile unsigned char bcsr4;
- volatile unsigned char bcsr5;
- volatile unsigned char bcsr6;
- volatile unsigned char bcsr7;
- volatile unsigned char bcsr8;
- volatile unsigned char bcsr9;
- volatile unsigned char bcsr10;
- volatile unsigned char bcsr11;
- volatile unsigned char bcsr12;
- volatile unsigned char bcsr13;
- volatile unsigned char bcsr14;
- volatile unsigned char bcsr15;
-} t_rpx_regs;
-typedef t_rpx_regs* tp_rpx_regs;
-
-#endif
diff --git a/board/rpxsuper/u-boot.lds b/board/rpxsuper/u-boot.lds
deleted file mode 100644
index 9e623d0b93..0000000000
--- a/board/rpxsuper/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (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
- */
-
-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/mpc8260/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/rsdproto/Makefile b/board/rsdproto/Makefile
deleted file mode 100644
index 5c9c33c9fb..0000000000
--- a/board/rsdproto/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := rsdproto.o flash.o
-SOBJS := flash_asm.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak $(obj).depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/rsdproto/config.mk b/board/rsdproto/config.mk
deleted file mode 100644
index 5844ec1ea4..0000000000
--- a/board/rsdproto/config.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (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
-#
-
-#
-# MBX8xx boards
-#
-
-TEXT_BASE = 0xff000000
-/*TEXT_BASE = 0x00200000 */
diff --git a/board/rsdproto/flash.c b/board/rsdproto/flash.c
deleted file mode 100644
index 5ad3218520..0000000000
--- a/board/rsdproto/flash.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for AM290[48]0B devices
- *
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-
-/* flash hardware ids */
-#define VENDOR_AMD 0x0001
-#define AMD_29DL323C_B 0x2253
-
-/* Define this to include autoselect sequence in flash_init(). Does NOT
- * work when executing from flash itself, so this should be turned
- * on only when debugging the RAM version.
- */
-#undef WITH_AUTOSELECT
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if 1
-#define D(x)
-#else
-#define D(x) printf x
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-static unsigned char write_ull(flash_info_t *info,
- unsigned long address,
- volatile unsigned long long data);
-
-/* from flash_asm.S */
-extern void ull_write(unsigned long long volatile *address,
- unsigned long long volatile *data);
-extern void ull_read(unsigned long long volatile *address,
- unsigned long long volatile *data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong addr;
-
-#ifdef WITH_AUTOSELECT
- {
- unsigned long long *f_addr = (unsigned long long *)PHYS_FLASH;
- unsigned long long f_command, vendor, device;
- /* Perform Autoselect */
- f_command = 0x00AA00AA00AA00AAULL;
- ull_write(&f_addr[0x555], &f_command);
- f_command = 0x0055005500550055ULL;
- ull_write(&f_addr[0x2AA], &f_command);
- f_command = 0x0090009000900090ULL;
- ull_write(&f_addr[0x555], &f_command);
- ull_read(&f_addr[0], &vendor);
- vendor &= 0xffff;
- ull_read(&f_addr[1], &device);
- device &= 0xffff;
- f_command = 0x00F000F000F000F0ULL;
- ull_write(&f_addr[0x555], &f_command);
- if (vendor != VENDOR_AMD || device != AMD_29DL323C_B)
- return 0;
- }
-#endif
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* 1st bank: 8 x 32 KB sectors */
- flash_info[0].flash_id = VENDOR_AMD << 16 | AMD_29DL323C_B;
- flash_info[0].sector_count = 8;
- flash_info[0].size = flash_info[0].sector_count * 32 * 1024;
- addr = PHYS_FLASH;
- for(i = 0; i < flash_info[0].sector_count; i++) {
- flash_info[0].start[i] = addr;
- addr += flash_info[0].size / flash_info[0].sector_count;
- }
- /* 1st bank: 63 x 256 KB sectors */
- flash_info[1].flash_id = VENDOR_AMD << 16 | AMD_29DL323C_B;
- flash_info[1].sector_count = 63;
- flash_info[1].size = flash_info[1].sector_count * 256 * 1024;
- for(i = 0; i < flash_info[1].sector_count; i++) {
- flash_info[1].start[i] = addr;
- addr += flash_info[1].size / flash_info[1].sector_count;
- }
-
- /*
- * protect monitor and environment sectors
- */
-
-#if CFG_MONITOR_BASE >= PHYS_FLASH
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[1]);
-#endif
-
- return flash_info[0].size + flash_info[1].size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id >> 16) {
- case VENDOR_AMD:
- printf ("AMD ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case AMD_29DL323C_B:
- printf ("AM29DL323CB (32 Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect, l_sect;
- ulong start;
- unsigned long long volatile *f_addr;
- unsigned long long volatile f_command;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- f_addr = (unsigned long long *)info->start[0];
- f_command = 0x00AA00AA00AA00AAULL;
- ull_write(&f_addr[0x555], &f_command);
- f_command = 0x0055005500550055ULL;
- ull_write(&f_addr[0x2AA], &f_command);
- f_command = 0x0080008000800080ULL;
- ull_write(&f_addr[0x555], &f_command);
- f_command = 0x00AA00AA00AA00AAULL;
- ull_write(&f_addr[0x555], &f_command);
- f_command = 0x0055005500550055ULL;
- ull_write(&f_addr[0x2AA], &f_command);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (l_sect = -1, sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
-
- f_addr =
- (unsigned long long *)(info->start[sect]);
- f_command = 0x0030003000300030ULL;
- ull_write(f_addr, &f_command);
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
- do
- {
- if (get_timer(start) > CFG_FLASH_ERASE_TOUT)
- { /* write reset command, command address is unimportant */
- /* this command turns the flash back to read mode */
- f_addr =
- (unsigned long long *)(info->start[l_sect]);
- f_command = 0x00F000F000F000F0ULL;
- ull_write(f_addr, &f_command);
- printf (" timeout\n");
- return 1;
- }
- } while(*f_addr != 0xFFFFFFFFFFFFFFFFULL);
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- unsigned long cp, wp;
- unsigned long long data;
- int i, l, rc;
-
- wp = (addr & ~7); /* get lower long long aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<8 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<8; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_ull(info, wp, data)) != 0) {
- return rc;
- }
- wp += 4;
- }
-
- /*
- * handle long long aligned part
- */
- while (cnt >= 8) {
- data = 0;
- for (i=0; i<8; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_ull(info, wp, data)) != 0) {
- return rc;
- }
- wp += 8;
- cnt -= 8;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<8 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<8; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return write_ull(info, wp, data);
-}
-
-/*---------------------------------------------------------------------------
-*
-* FUNCTION NAME: write_ull
-*
-* DESCRIPTION: writes 8 bytes to flash
-*
-* EXTERNAL EFFECT: nothing
-*
-* PARAMETERS: 32 bit long pointer to address, 64 bit long pointer to data
-*
-* RETURNS: 0 if OK, 1 if timeout, 4 if parameter error
-*--------------------------------------------------------------------------*/
-
-static unsigned char write_ull(flash_info_t *info,
- unsigned long address,
- volatile unsigned long long data)
-{
- static unsigned long long f_command;
- static unsigned long long *f_addr;
- ulong start;
-
- /* address muss be 8-aligned! */
- if (address & 0x7)
- return ERR_ALIGN;
-
- f_addr = (unsigned long long *)info->start[0];
- f_command = 0x00AA00AA00AA00AAULL;
- ull_write(&f_addr[0x555], &f_command);
- f_command = 0x0055005500550055ULL;
- ull_write(&f_addr[0x2AA], &f_command);
- f_command = 0x00A000A000A000A0ULL;
- ull_write(&f_addr[0x555], &f_command);
-
- f_addr = (unsigned long long *)address;
- f_command = data;
- ull_write(f_addr, &f_command);
-
- start = get_timer (0);
- do
- {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT)
- {
- /* write reset command, command address is unimportant */
- /* this command turns the flash back to read mode */
- f_addr = (unsigned long long *)info->start[0];
- f_command = 0x00F000F000F000F0ULL;
- ull_write(f_addr, &f_command);
- return ERR_TIMOUT;
- }
- } while(*((unsigned long long *)address) != data);
-
- return 0;
-}
diff --git a/board/rsdproto/flash_asm.S b/board/rsdproto/flash_asm.S
deleted file mode 100644
index 557cac0279..0000000000
--- a/board/rsdproto/flash_asm.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * -*- mode:c -*-
- *
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * void ull_write(unsigned long long volatile *address,
- * unsigned long long volatile *data)
- * r3 = address
- * r4 = data
- *
- * void ull_read(unsigned long long volatile *address,
- * unsigned long long volatile *data)
- * r3 = address
- * r4 = data
- *
- * Uses the floating point unit to read and write 64 bit wide
- * data (unsigned long long) on the 60x bus. This is necessary
- * because all 4 flash chips use the /WE line from byte lane 0
- *
- * IMPORTANT: data should always be 8-aligned, otherwise an exception will
- * occur.
- */
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
- .globl ull_write
-ull_write:
- lfd 0,0(r4)
- stfd 0,0(r3)
- blr
-
- .globl ull_read
-ull_read:
- lfd 0, 0(r3)
- stfd 0, 0(r4)
- blr
diff --git a/board/rsdproto/rsdproto.c b/board/rsdproto/rsdproto.c
deleted file mode 100644
index bf4fd5305f..0000000000
--- a/board/rsdproto/rsdproto.c
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <i2c.h>
-
-/* define to initialise the SDRAM on the local bus */
-#undef INIT_LOCAL_BUS_SDRAM
-
-/* I2C Bus adresses for PPC & Protocol board */
-#define PPC8260_I2C_ADR 0x30 /*(0)011.0000 */
-#define LM84_PPC_I2C_ADR 0x2A /*(0)010.1010 */
-#define LM84_SHARC_I2C_ADR 0x29 /*(0)010.1001 */
-#define VIRTEX_I2C_ADR 0x25 /*(0)010.0101 */
-#define X24645_PPC_I2C_ADR 0x00 /*(0)00X.XXXX -> be careful ! No other i2c-chip should have an adress beginning with (0)00 !!! */
-#define RS5C372_PPC_I2C_ADR 0x32 /*(0)011.0010 -> this adress is programmed by the manufacturer and cannot be changed !!! */
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 0, 0, 0, 0, 0, 0 },
- /* PA30 */ { 0, 0, 0, 0, 0, 0 },
- /* PA29 */ { 0, 0, 0, 0, 0, 0 },
- /* PA28 */ { 0, 0, 0, 0, 0, 0 },
- /* PA27 */ { 0, 0, 0, 0, 0, 0 },
- /* PA26 */ { 0, 0, 0, 0, 0, 0 },
- /* PA25 */ { 0, 0, 0, 0, 0, 0 },
- /* PA24 */ { 0, 0, 0, 0, 0, 0 },
- /* PA23 */ { 0, 0, 0, 0, 0, 0 },
- /* PA22 */ { 0, 0, 0, 0, 0, 0 },
- /* PA21 */ { 0, 0, 0, 0, 0, 0 },
- /* PA20 */ { 0, 0, 0, 0, 0, 0 },
- /* PA19 */ { 0, 0, 0, 0, 0, 0 },
- /* PA18 */ { 0, 0, 0, 0, 0, 0 },
- /* PA17 */ { 0, 0, 0, 0, 0, 0 },
- /* PA16 */ { 0, 0, 0, 0, 0, 0 },
- /* PA15 */ { 0, 0, 0, 0, 0, 0 },
- /* PA14 */ { 0, 0, 0, 0, 0, 0 },
- /* PA13 */ { 0, 0, 0, 0, 0, 0 },
- /* PA12 */ { 0, 0, 0, 0, 0, 0 },
- /* PA11 */ { 0, 0, 0, 0, 0, 0 },
- /* PA10 */ { 0, 0, 0, 0, 0, 0 },
- /* PA9 */ { 0, 0, 0, 0, 0, 0 },
- /* PA8 */ { 0, 0, 0, 0, 0, 0 },
- /* PA7 */ { 0, 0, 0, 0, 0, 0 },
- /* PA6 */ { 0, 0, 0, 0, 0, 0 },
- /* PA5 */ { 0, 0, 0, 0, 0, 0 },
- /* PA4 */ { 0, 0, 0, 0, 0, 0 },
- /* PA3 */ { 0, 0, 0, 0, 0, 0 },
- /* PA2 */ { 0, 0, 0, 0, 0, 0 },
- /* PA1 */ { 0, 0, 0, 0, 0, 0 },
- /* PA0 */ { 0, 0, 0, 0, 0, 0 }
- },
-
-
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { 0, 0, 0, 0, 0, 0 },
- /* PB16 */ { 0, 0, 0, 0, 0, 0 },
- /* PB15 */ { 0, 0, 0, 0, 0, 0 },
- /* PB14 */ { 0, 0, 0, 0, 0, 0 },
- /* PB13 */ { 0, 0, 0, 0, 0, 0 },
- /* PB12 */ { 0, 0, 0, 0, 0, 0 },
- /* PB11 */ { 0, 0, 0, 0, 0, 0 },
- /* PB10 */ { 0, 0, 0, 0, 0, 0 },
- /* PB9 */ { 0, 0, 0, 0, 0, 0 },
- /* PB8 */ { 0, 0, 0, 0, 0, 0 },
- /* PB7 */ { 0, 0, 0, 0, 0, 0 },
- /* PB6 */ { 0, 0, 0, 0, 0, 0 },
- /* PB5 */ { 0, 0, 0, 0, 0, 0 },
- /* PB4 */ { 0, 0, 0, 0, 0, 0 },
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
-
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 0, 0, 0 },
- /* PC30 */ { 0, 0, 0, 0, 0, 0 },
- /* PC29 */ { 0, 0, 0, 0, 0, 0 },
- /* PC28 */ { 0, 0, 0, 0, 0, 0 },
- /* PC27 */ { 0, 0, 0, 0, 0, 0 },
- /* PC26 */ { 0, 0, 0, 0, 0, 0 },
- /* PC25 */ { 0, 0, 0, 0, 0, 0 },
- /* PC24 */ { 0, 0, 0, 0, 0, 0 },
- /* PC23 */ { 0, 0, 0, 0, 0, 0 },
- /* PC22 */ { 0, 0, 0, 0, 0, 0 },
- /* PC21 */ { 0, 0, 0, 0, 0, 0 },
- /* PC20 */ { 0, 0, 0, 0, 0, 0 },
- /* PC19 */ { 1, 1, 0, 0, 0, 0 },
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* ETHRXCLK: CLK14 */
- /* PC17 */ { 0, 0, 0, 0, 0, 0 }, /* ETHTXCLK: CLK15 */
- /* PC16 */ { 0, 0, 0, 0, 0, 0 },
- /* PC15 */ { 0, 0, 0, 0, 0, 0 },
- /* PC14 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 UART CD/ */
- /* PC13 */ { 0, 0, 0, 0, 0, 0 },
- /* PC12 */ { 0, 0, 0, 0, 0, 0 },
- /* PC11 */ { 0, 0, 0, 0, 0, 0 },
- /* PC10 */ { 1, 0, 0, 1, 0, 0 }, /* ETHMDC: GP */
- /* PC9 */ { 1, 0, 0, 1, 0, 0 }, /* ETHMDIO: GP */
- /* PC8 */ { 0, 0, 0, 0, 0, 0 },
- /* PC7 */ { 0, 0, 0, 0, 0, 0 },
- /* PC6 */ { 0, 0, 0, 0, 0, 0 },
- /* PC5 */ { 0, 0, 0, 0, 0, 0 },
- /* PC4 */ { 0, 0, 0, 0, 0, 0 },
- /* PC3 */ { 0, 0, 0, 0, 0, 0 },
- /* PC2 */ { 0, 0, 0, 0, 0, 0 },
- /* PC1 */ { 0, 0, 0, 0, 0, 0 },
- /* PC0 */ { 0, 0, 0, 0, 0, 0 }
- },
-
-
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 UART RxD */
- /* PD30 */ { 1, 1, 1, 1, 0, 0 }, /* SCC1 UART TxD */
- /* PD29 */ { 0, 0, 0, 0, 0, 0 },
- /* PD28 */ { 0, 0, 0, 0, 0, 0 },
- /* PD27 */ { 0, 0, 0, 0, 0, 0 },
- /* PD26 */ { 0, 0, 0, 0, 0, 0 },
- /* PD25 */ { 0, 0, 0, 0, 0, 0 },
- /* PD24 */ { 0, 0, 0, 0, 0, 0 },
- /* PD23 */ { 0, 0, 0, 0, 0, 0 },
- /* PD22 */ { 0, 0, 0, 0, 0, 0 },
- /* PD21 */ { 0, 0, 0, 0, 0, 0 },
- /* PD20 */ { 0, 0, 0, 0, 0, 0 },
- /* PD19 */ { 0, 0, 0, 0, 0, 0 },
- /* PD18 */ { 0, 0, 0, 0, 0, 0 },
- /* PD17 */ { 0, 0, 0, 0, 0, 0 },
- /* PD16 */ { 0, 0, 0, 0, 0, 0 },
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
- /* PD13 */ { 0, 0, 0, 0, 0, 0 },
- /* PD12 */ { 0, 0, 0, 0, 0, 0 },
- /* PD11 */ { 0, 0, 0, 0, 0, 0 },
- /* PD10 */ { 0, 0, 0, 0, 0, 0 },
- /* PD9 */ { 0, 0, 0, 0, 0, 0 },
- /* PD8 */ { 0, 0, 0, 0, 0, 0 },
- /* PD7 */ { 0, 0, 0, 0, 0, 0 },
- /* PD6 */ { 0, 0, 0, 0, 0, 0 },
- /* PD5 */ { 0, 0, 0, 0, 0, 0 },
- /* PD4 */ { 0, 0, 0, 0, 0, 0 },
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-struct tm {
- unsigned int tm_sec;
- unsigned int tm_min;
- unsigned int tm_hour;
- unsigned int tm_wday;
- unsigned int tm_mday;
- unsigned int tm_mon;
- unsigned int tm_year;
-};
-
-void read_RS5C372_time (struct tm *timedate)
-{
- unsigned char buffer[8];
-
-#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
-
- if (i2c_read (RS5C372_PPC_I2C_ADR, 0, 1, buffer, sizeof (buffer))) {
- timedate->tm_sec = BCD_TO_BIN (buffer[0]);
- timedate->tm_min = BCD_TO_BIN (buffer[1]);
- timedate->tm_hour = BCD_TO_BIN (buffer[2]);
- timedate->tm_wday = BCD_TO_BIN (buffer[3]);
- timedate->tm_mday = BCD_TO_BIN (buffer[4]);
- timedate->tm_mon = BCD_TO_BIN (buffer[5]);
- timedate->tm_year = BCD_TO_BIN (buffer[6]) + 2000;
- } else {
- /*printf("i2c error %02x\n", rc); */
- memset (timedate, 0, sizeof (struct tm));
- }
-}
-
-/* ------------------------------------------------------------------------- */
-
-int read_LM84_temp (int address)
-{
- unsigned char buffer[8];
- /*int rc;*/
-
- if (i2c_read (address, 0, 1, buffer, 1)) {
- return (int) buffer[0];
- } else {
- /*printf("i2c error %02x\n", rc); */
- return -42;
- }
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- struct tm timedate;
- unsigned int ppctemp, prottemp;
-
- puts ("Board: Rohde & Schwarz 8260 Protocol Board\n");
-
- /* initialise i2c */
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- read_RS5C372_time (&timedate);
- printf (" Time: %02d:%02d:%02d\n",
- timedate.tm_hour, timedate.tm_min, timedate.tm_sec);
- printf (" Date: %02d-%02d-%04d\n",
- timedate.tm_mday, timedate.tm_mon, timedate.tm_year);
- ppctemp = read_LM84_temp (LM84_PPC_I2C_ADR);
- prottemp = read_LM84_temp (LM84_SHARC_I2C_ADR);
- printf (" Temp: PPC %d C, Protocol Board %d C\n",
- ppctemp, prottemp);
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Miscelaneous platform dependent initialisations while still
- * running in flash
- */
-
-int misc_init_f (void)
-{
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifdef INIT_LOCAL_BUS_SDRAM
- volatile uchar *ramaddr8;
-#endif
- volatile ulong *ramaddr32;
- ulong sdmr;
- int i;
-
- /*
- * Only initialize SDRAM when running from FLASH.
- * When running from RAM, don't touch it.
- */
- if ((ulong) initdram & 0xff000000) {
- immap->im_siu_conf.sc_ppc_acr = 0x02;
- immap->im_siu_conf.sc_ppc_alrh = 0x01267893;
- immap->im_siu_conf.sc_ppc_alrl = 0x89ABCDEF;
- immap->im_siu_conf.sc_lcl_acr = 0x02;
- immap->im_siu_conf.sc_lcl_alrh = 0x01234567;
- immap->im_siu_conf.sc_lcl_alrl = 0x89ABCDEF;
- /*
- * Program local/60x bus Transfer Error Status and Control Regs:
- * Disable parity errors
- */
- immap->im_siu_conf.sc_tescr1 = 0x00040000;
- immap->im_siu_conf.sc_ltescr1 = 0x00040000;
-
- /*
- * Perform Power-Up Initialisation of SDRAM (see 8260 UM, 10.4.2)
- *
- * The appropriate BRx/ORx registers have already
- * been set when we get here (see cpu_init_f). The
- * SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
- memctl->memc_mptpr = 0x2000;
- memctl->memc_mar = 0x0200;
-#ifdef INIT_LOCAL_BUS_SDRAM
- /* initialise local bus ram
- *
- * (using the PSRMR_ definitions is NOT an error here
- * - the LSDMR has the same fields as the PSDMR!)
- */
- memctl->memc_lsrt = 0x0b;
- memctl->memc_lurt = 0x00;
- ramaddr = (uchar *) PHYS_SDRAM_LOCAL;
- sdmr = CFG_LSDMR & ~(PSDMR_OP_MSK | PSDMR_RFEN | PSDMR_PBI);
- memctl->memc_lsdmr = sdmr | PSDMR_OP_PREA;
- *ramaddr = 0xff;
- for (i = 0; i < 8; i++) {
- memctl->memc_lsdmr = sdmr | PSDMR_OP_CBRR;
- *ramaddr = 0xff;
- }
- memctl->memc_lsdmr = sdmr | PSDMR_OP_MRW;
- *ramaddr = 0xff;
- memctl->memc_lsdmr = CFG_LSDMR | PSDMR_OP_NORM;
-#endif
- /* initialise 60x bus ram */
- memctl->memc_psrt = 0x0b;
- memctl->memc_purt = 0x08;
- ramaddr32 = (ulong *) PHYS_SDRAM_60X;
- sdmr = CFG_PSDMR & ~(PSDMR_OP_MSK | PSDMR_RFEN | PSDMR_PBI);
- memctl->memc_psdmr = sdmr | PSDMR_OP_PREA;
- ramaddr32[0] = 0x00ff00ff;
- ramaddr32[1] = 0x00ff00ff;
- memctl->memc_psdmr = sdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++) {
- ramaddr32[0] = 0x00ff00ff;
- ramaddr32[1] = 0x00ff00ff;
- }
- memctl->memc_psdmr = sdmr | PSDMR_OP_MRW;
- ramaddr32[0] = 0x00ff00ff;
- ramaddr32[1] = 0x00ff00ff;
- memctl->memc_psdmr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- }
-
- /* return the size of the 60x bus ram */
- return PHYS_SDRAM_60X_SIZE;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Miscelaneous platform dependent initialisations after monitor
- * has been relocated into ram
- */
-
-int misc_init_r (void)
-{
- printf ("misc_init_r\n");
- return (0);
-}
diff --git a/board/rsdproto/u-boot.lds b/board/rsdproto/u-boot.lds
deleted file mode 100644
index 70fc3a5d27..0000000000
--- a/board/rsdproto/u-boot.lds
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * (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
- */
-
-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/mpc8260/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- /*. = env_offset; */
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/sacsng/Makefile b/board/sacsng/Makefile
deleted file mode 100644
index 9bb9c15525..0000000000
--- a/board/sacsng/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := sacsng.o flash.o clkinit.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/sacsng/clkinit.c b/board/sacsng/clkinit.c
deleted file mode 100644
index edb775df2e..0000000000
--- a/board/sacsng/clkinit.c
+++ /dev/null
@@ -1,1025 +0,0 @@
-/*
- * (C) Copyright 2002
- * Custom IDEAS, Inc. <www.cideas.com>
- * Jon Diekema <diekema@cideas.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
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <asm/cpm_8260.h>
-#include <configs/sacsng.h>
-
-#include "clkinit.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int Daq64xSampling = 0;
-
-
-void Daq_BRG_Reset(uint brg)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- volatile uint *brg_ptr;
-
- brg_ptr = (uint *)&immr->im_brgc1;
-
- if (brg >= 5) {
- brg_ptr = (uint *)&immr->im_brgc5;
- brg -= 4;
- }
- brg_ptr += brg;
- *brg_ptr |= CPM_BRG_RST;
- *brg_ptr &= ~CPM_BRG_RST;
-}
-
-void Daq_BRG_Disable(uint brg)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- volatile uint *brg_ptr;
-
- brg_ptr = (uint *)&immr->im_brgc1;
-
- if (brg >= 5) {
- brg_ptr = (uint *)&immr->im_brgc5;
- brg -= 4;
- }
- brg_ptr += brg;
- *brg_ptr &= ~CPM_BRG_EN;
-}
-
-void Daq_BRG_Enable(uint brg)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- volatile uint *brg_ptr;
-
- brg_ptr = (uint *)&immr->im_brgc1;
- if (brg >= 5) {
- brg_ptr = (uint *)&immr->im_brgc5;
- brg -= 4;
- }
- brg_ptr += brg;
- *brg_ptr |= CPM_BRG_EN;
-}
-
-uint Daq_BRG_Get_Div16(uint brg)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- uint *brg_ptr;
-
- brg_ptr = (uint *)&immr->im_brgc1;
- if (brg >= 5) {
- brg_ptr = (uint *)&immr->im_brgc5;
- brg -= 4;
- }
- brg_ptr += brg;
-
- if (*brg_ptr & CPM_BRG_DIV16) {
- /* DIV16 active */
- return (TRUE);
- }
- else {
- /* DIV16 inactive */
- return (FALSE);
- }
-}
-
-void Daq_BRG_Set_Div16(uint brg, uint div16)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- uint *brg_ptr;
-
- brg_ptr = (uint *)&immr->im_brgc1;
- if (brg >= 5) {
- brg_ptr = (uint *)&immr->im_brgc5;
- brg -= 4;
- }
- brg_ptr += brg;
-
- if (div16) {
- /* DIV16 active */
- *brg_ptr |= CPM_BRG_DIV16;
- }
- else {
- /* DIV16 inactive */
- *brg_ptr &= ~CPM_BRG_DIV16;
- }
-}
-
-uint Daq_BRG_Get_Count(uint brg)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- uint *brg_ptr;
- uint brg_cnt;
-
- brg_ptr = (uint *)&immr->im_brgc1;
- if (brg >= 5) {
- brg_ptr = (uint *)&immr->im_brgc5;
- brg -= 4;
- }
- brg_ptr += brg;
-
- /* Get the clock divider
- *
- * Note: A clock divider of 0 means divide by 1,
- * therefore we need to add 1 to the count.
- */
- brg_cnt = (*brg_ptr & CPM_BRG_CD_MASK) >> CPM_BRG_DIV16_SHIFT;
- brg_cnt++;
- if (*brg_ptr & CPM_BRG_DIV16) {
- brg_cnt *= 16;
- }
-
- return (brg_cnt);
-}
-
-void Daq_BRG_Set_Count(uint brg, uint brg_cnt)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- uint *brg_ptr;
-
- brg_ptr = (uint *)&immr->im_brgc1;
- if (brg >= 5) {
- brg_ptr = (uint *)&immr->im_brgc5;
- brg -= 4;
- }
- brg_ptr += brg;
-
- /*
- * Note: A clock divider of 0 means divide by 1,
- * therefore we need to subtract 1 from the count.
- */
- if (brg_cnt > 4096) {
- /* Prescale = Divide by 16 */
- *brg_ptr = (*brg_ptr & ~CPM_BRG_CD_MASK) |
- (((brg_cnt / 16) - 1) << CPM_BRG_DIV16_SHIFT);
- *brg_ptr |= CPM_BRG_DIV16;
- }
- else {
- /* Prescale = Divide by 1 */
- *brg_ptr = (*brg_ptr & ~CPM_BRG_CD_MASK) |
- ((brg_cnt - 1) << CPM_BRG_DIV16_SHIFT);
- *brg_ptr &= ~CPM_BRG_DIV16;
- }
-}
-
-uint Daq_BRG_Get_ExtClk(uint brg)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- uint *brg_ptr;
-
- brg_ptr = (uint *)&immr->im_brgc1;
- if (brg >= 5) {
- brg_ptr = (uint *)&immr->im_brgc5;
- brg -= 4;
- }
- brg_ptr += brg;
-
- return ((*brg_ptr & CPM_BRG_EXTC_MASK) >> CPM_BRG_EXTC_SHIFT);
-}
-
-char* Daq_BRG_Get_ExtClk_Description(uint brg)
-{
- uint extc;
-
- extc = Daq_BRG_Get_ExtClk(brg);
-
- switch (brg + 1) {
- case 1:
- case 2:
- case 5:
- case 6: {
- switch (extc) {
- case 0: {
- return ("BRG_INT");
- }
- case 1: {
- return ("CLK3");
- }
- case 2: {
- return ("CLK5");
- }
- }
- return ("??1245??");
- }
- case 3:
- case 4:
- case 7:
- case 8: {
- switch (extc) {
- case 0: {
- return ("BRG_INT");
- }
- case 1: {
- return ("CLK9");
- }
- case 2: {
- return ("CLK15");
- }
- }
- return ("??3478??");
- }
- }
- return ("??9876??");
-}
-
-void Daq_BRG_Set_ExtClk(uint brg, uint extc)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- uint *brg_ptr;
-
- brg_ptr = (uint *)&immr->im_brgc1;
- if (brg >= 5) {
- brg_ptr = (uint *)&immr->im_brgc5;
- brg -= 4;
- }
- brg_ptr += brg;
-
- *brg_ptr = (*brg_ptr & ~CPM_BRG_EXTC_MASK) |
- ((extc << CPM_BRG_EXTC_SHIFT) & CPM_BRG_EXTC_MASK);
-}
-
-uint Daq_BRG_Rate(uint brg)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- uint *brg_ptr;
- uint brg_cnt;
- uint brg_freq = 0;
-
- brg_ptr = (uint *)&immr->im_brgc1;
- brg_ptr += brg;
- if (brg >= 5) {
- brg_ptr = (uint *)&immr->im_brgc5;
- brg_ptr += (brg - 4);
- }
-
- brg_cnt = Daq_BRG_Get_Count(brg);
-
- switch (Daq_BRG_Get_ExtClk(brg)) {
- case CPM_BRG_EXTC_CLK3:
- case CPM_BRG_EXTC_CLK5: {
- brg_freq = brg_cnt;
- break;
- }
- default: {
- brg_freq = (uint)BRG_INT_CLK / brg_cnt;
- }
- }
- return (brg_freq);
-}
-
-uint Daq_Get_SampleRate(void)
-{
- /*
- * Read the BRG's to return the actual sample rate.
- */
- return (Daq_BRG_Rate(MCLK_BRG) / (MCLK_DIVISOR * SCLK_DIVISOR));
-}
-
-void Daq_Init_Clocks(int sample_rate, int sample_64x)
-{
- volatile ioport_t *iopa = ioport_addr((immap_t *)CFG_IMMR, 0 /* port A */);
- uint mclk_divisor; /* MCLK divisor */
- int flag; /* Interrupt state */
-
- /* Save off the clocking data */
- Daq64xSampling = sample_64x;
-
- /*
- * Limit the sample rate to some sensible values.
- */
- if (sample_rate > MAX_64x_SAMPLE_RATE) {
- sample_rate = MAX_64x_SAMPLE_RATE;
- }
- if (sample_rate < MIN_SAMPLE_RATE) {
- sample_rate = MIN_SAMPLE_RATE;
- }
-
- /*
- * Initialize the MCLK/SCLK/LRCLK baud rate generators.
- */
-
- /* Setup MCLK */
- Daq_BRG_Set_ExtClk(MCLK_BRG, CPM_BRG_EXTC_BRGCLK);
-
- /* Setup SCLK */
-# ifdef RUN_SCLK_ON_BRG_INT
- Daq_BRG_Set_ExtClk(SCLK_BRG, CPM_BRG_EXTC_BRGCLK);
-# else
- Daq_BRG_Set_ExtClk(SCLK_BRG, CPM_BRG_EXTC_CLK9);
-# endif
-
- /* Setup LRCLK */
-# ifdef RUN_LRCLK_ON_BRG_INT
- Daq_BRG_Set_ExtClk(LRCLK_BRG, CPM_BRG_EXTC_BRGCLK);
-# else
- Daq_BRG_Set_ExtClk(LRCLK_BRG, CPM_BRG_EXTC_CLK5);
-# endif
-
- /*
- * Dynamically adjust MCLK based on the new sample rate.
- */
-
- /* Compute the divisors */
- mclk_divisor = BRG_INT_CLK / (sample_rate * MCLK_DIVISOR * SCLK_DIVISOR);
-
- /*
- * Disable interrupt and save the current state
- */
- flag = disable_interrupts();
-
- /* Setup MCLK */
- Daq_BRG_Set_Count(MCLK_BRG, mclk_divisor);
-
- /* Setup SCLK */
-# ifdef RUN_SCLK_ON_BRG_INT
- Daq_BRG_Set_Count(SCLK_BRG, mclk_divisor * MCLK_DIVISOR);
-# else
- Daq_BRG_Set_Count(SCLK_BRG, MCLK_DIVISOR);
-# endif
-
-# ifdef RUN_LRCLK_ON_BRG_INT
- Daq_BRG_Set_Count(LRCLK_BRG,
- mclk_divisor * MCLK_DIVISOR * SCLK_DIVISOR);
-# else
- Daq_BRG_Set_Count(LRCLK_BRG, SCLK_DIVISOR);
-# endif
-
- /*
- * Restore the Interrupt state
- */
- if (flag) {
- enable_interrupts();
- }
-
- /* Enable the clock drivers */
- iopa->pdat &= ~SLRCLK_EN_MASK;
-}
-
-void Daq_Stop_Clocks(void)
-
-{
-#ifdef TIGHTEN_UP_BRG_TIMING
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- register uint mclk_brg; /* MCLK BRG value */
- register uint sclk_brg; /* SCLK BRG value */
- register uint lrclk_brg; /* LRCLK BRG value */
- unsigned long flag; /* Interrupt flags */
-#endif
-
-# ifdef TIGHTEN_UP_BRG_TIMING
- /*
- * Obtain MCLK BRG reset/disabled value
- */
-# if (MCLK_BRG == 0)
- mclk_brg = (*IM_BRGC1 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 1)
- mclk_brg = (*IM_BRGC2 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 2)
- mclk_brg = (*IM_BRGC3 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 3)
- mclk_brg = (*IM_BRGC4 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 4)
- mclk_brg = (*IM_BRGC5 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 5)
- mclk_brg = (*IM_BRGC6 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 6)
- mclk_brg = (*IM_BRGC7 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 7)
- mclk_brg = (*IM_BRGC8 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-
- /*
- * Obtain SCLK BRG reset/disabled value
- */
-# if (SCLK_BRG == 0)
- sclk_brg = (*IM_BRGC1 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 1)
- sclk_brg = (*IM_BRGC2 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 2)
- sclk_brg = (*IM_BRGC3 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 3)
- sclk_brg = (*IM_BRGC4 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 4)
- sclk_brg = (*IM_BRGC5 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 5)
- sclk_brg = (*IM_BRGC6 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 6)
- sclk_brg = (*IM_BRGC7 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 7)
- sclk_brg = (*IM_BRGC8 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-
- /*
- * Obtain LRCLK BRG reset/disabled value
- */
-# if (LRCLK_BRG == 0)
- lrclk_brg = (*IM_BRGC1 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 1)
- lrclk_brg = (*IM_BRGC2 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 2)
- lrclk_brg = (*IM_BRGC3 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 3)
- lrclk_brg = (*IM_BRGC4 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 4)
- lrclk_brg = (*IM_BRGC5 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 5)
- lrclk_brg = (*IM_BRGC6 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 6)
- lrclk_brg = (*IM_BRGC7 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 7)
- lrclk_brg = (*IM_BRGC8 | CPM_BRG_RST) & ~CPM_BRG_EN;
-# endif
-
- /*
- * Disable interrupt and save the current state
- */
- flag = disable_interrupts();
-
- /*
- * Set reset on MCLK BRG
- */
-# if (MCLK_BRG == 0)
- *IM_BRGC1 = mclk_brg;
-# endif
-# if (MCLK_BRG == 1)
- *IM_BRGC2 = mclk_brg;
-# endif
-# if (MCLK_BRG == 2)
- *IM_BRGC3 = mclk_brg;
-# endif
-# if (MCLK_BRG == 3)
- *IM_BRGC4 = mclk_brg;
-# endif
-# if (MCLK_BRG == 4)
- *IM_BRGC5 = mclk_brg;
-# endif
-# if (MCLK_BRG == 5)
- *IM_BRGC6 = mclk_brg;
-# endif
-# if (MCLK_BRG == 6)
- *IM_BRGC7 = mclk_brg;
-# endif
-# if (MCLK_BRG == 7)
- *IM_BRGC8 = mclk_brg;
-# endif
-
- /*
- * Set reset on SCLK BRG
- */
-# if (SCLK_BRG == 0)
- *IM_BRGC1 = sclk_brg;
-# endif
-# if (SCLK_BRG == 1)
- *IM_BRGC2 = sclk_brg;
-# endif
-# if (SCLK_BRG == 2)
- *IM_BRGC3 = sclk_brg;
-# endif
-# if (SCLK_BRG == 3)
- *IM_BRGC4 = sclk_brg;
-# endif
-# if (SCLK_BRG == 4)
- *IM_BRGC5 = sclk_brg;
-# endif
-# if (SCLK_BRG == 5)
- *IM_BRGC6 = sclk_brg;
-# endif
-# if (SCLK_BRG == 6)
- *IM_BRGC7 = sclk_brg;
-# endif
-# if (SCLK_BRG == 7)
- *IM_BRGC8 = sclk_brg;
-# endif
-
- /*
- * Set reset on LRCLK BRG
- */
-# if (LRCLK_BRG == 0)
- *IM_BRGC1 = lrclk_brg;
-# endif
-# if (LRCLK_BRG == 1)
- *IM_BRGC2 = lrclk_brg;
-# endif
-# if (LRCLK_BRG == 2)
- *IM_BRGC3 = lrclk_brg;
-# endif
-# if (LRCLK_BRG == 3)
- *IM_BRGC4 = lrclk_brg;
-# endif
-# if (LRCLK_BRG == 4)
- *IM_BRGC5 = lrclk_brg;
-# endif
-# if (LRCLK_BRG == 5)
- *IM_BRGC6 = lrclk_brg;
-# endif
-# if (LRCLK_BRG == 6)
- *IM_BRGC7 = lrclk_brg;
-# endif
-# if (LRCLK_BRG == 7)
- *IM_BRGC8 = lrclk_brg;
-# endif
-
- /*
- * Clear reset on MCLK BRG
- */
-# if (MCLK_BRG == 0)
- *IM_BRGC1 = mclk_brg & ~CPM_BRG_RST;
-# endif
-# if (MCLK_BRG == 1)
- *IM_BRGC2 = mclk_brg & ~CPM_BRG_RST;
-# endif
-# if (MCLK_BRG == 2)
- *IM_BRGC3 = mclk_brg & ~CPM_BRG_RST;
-# endif
-# if (MCLK_BRG == 3)
- *IM_BRGC4 = mclk_brg & ~CPM_BRG_RST;
-# endif
-# if (MCLK_BRG == 4)
- *IM_BRGC5 = mclk_brg & ~CPM_BRG_RST;
-# endif
-# if (MCLK_BRG == 5)
- *IM_BRGC6 = mclk_brg & ~CPM_BRG_RST;
-# endif
-# if (MCLK_BRG == 6)
- *IM_BRGC7 = mclk_brg & ~CPM_BRG_RST;
-# endif
-# if (MCLK_BRG == 7)
- *IM_BRGC8 = mclk_brg & ~CPM_BRG_RST;
-# endif
-
- /*
- * Clear reset on SCLK BRG
- */
-# if (SCLK_BRG == 0)
- *IM_BRGC1 = sclk_brg & ~CPM_BRG_RST;
-# endif
-# if (SCLK_BRG == 1)
- *IM_BRGC2 = sclk_brg & ~CPM_BRG_RST;
-# endif
-# if (SCLK_BRG == 2)
- *IM_BRGC3 = sclk_brg & ~CPM_BRG_RST;
-# endif
-# if (SCLK_BRG == 3)
- *IM_BRGC4 = sclk_brg & ~CPM_BRG_RST;
-# endif
-# if (SCLK_BRG == 4)
- *IM_BRGC5 = sclk_brg & ~CPM_BRG_RST;
-# endif
-# if (SCLK_BRG == 5)
- *IM_BRGC6 = sclk_brg & ~CPM_BRG_RST;
-# endif
-# if (SCLK_BRG == 6)
- *IM_BRGC7 = sclk_brg & ~CPM_BRG_RST;
-# endif
-# if (SCLK_BRG == 7)
- *IM_BRGC8 = sclk_brg & ~CPM_BRG_RST;
-# endif
-
- /*
- * Clear reset on LRCLK BRG
- */
-# if (LRCLK_BRG == 0)
- *IM_BRGC1 = lrclk_brg & ~CPM_BRG_RST;
-# endif
-# if (LRCLK_BRG == 1)
- *IM_BRGC2 = lrclk_brg & ~CPM_BRG_RST;
-# endif
-# if (LRCLK_BRG == 2)
- *IM_BRGC3 = lrclk_brg & ~CPM_BRG_RST;
-# endif
-# if (LRCLK_BRG == 3)
- *IM_BRGC4 = lrclk_brg & ~CPM_BRG_RST;
-# endif
-# if (LRCLK_BRG == 4)
- *IM_BRGC5 = lrclk_brg & ~CPM_BRG_RST;
-# endif
-# if (LRCLK_BRG == 5)
- *IM_BRGC6 = lrclk_brg & ~CPM_BRG_RST;
-# endif
-# if (LRCLK_BRG == 6)
- *IM_BRGC7 = lrclk_brg & ~CPM_BRG_RST;
-# endif
-# if (LRCLK_BRG == 7)
- *IM_BRGC8 = lrclk_brg & ~CPM_BRG_RST;
-# endif
-
- /*
- * Restore the Interrupt state
- */
- if (flag) {
- enable_interrupts();
- }
-# else
- /*
- * Reset the clocks
- */
- Daq_BRG_Reset(MCLK_BRG);
- Daq_BRG_Reset(SCLK_BRG);
- Daq_BRG_Reset(LRCLK_BRG);
-# endif
-}
-
-void Daq_Start_Clocks(int sample_rate)
-
-{
-#ifdef TIGHTEN_UP_BRG_TIMING
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
-
- register uint mclk_brg; /* MCLK BRG value */
- register uint sclk_brg; /* SCLK BRG value */
- register uint temp_lrclk_brg; /* Temporary LRCLK BRG value */
- register uint real_lrclk_brg; /* Permanent LRCLK BRG value */
- uint lrclk_brg; /* LRCLK BRG value */
- unsigned long flags; /* Interrupt flags */
- uint sclk_cnt; /* SCLK count */
- uint delay_cnt; /* Delay count */
-#endif
-
-# ifdef TIGHTEN_UP_BRG_TIMING
- /*
- * Obtain the enabled MCLK BRG value
- */
-# if (MCLK_BRG == 0)
- mclk_brg = (*IM_BRGC1 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 1)
- mclk_brg = (*IM_BRGC2 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 2)
- mclk_brg = (*IM_BRGC3 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 3)
- mclk_brg = (*IM_BRGC4 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 4)
- mclk_brg = (*IM_BRGC5 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 5)
- mclk_brg = (*IM_BRGC6 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 6)
- mclk_brg = (*IM_BRGC7 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (MCLK_BRG == 7)
- mclk_brg = (*IM_BRGC8 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-
- /*
- * Obtain the enabled SCLK BRG value
- */
-# if (SCLK_BRG == 0)
- sclk_brg = (*IM_BRGC1 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 1)
- sclk_brg = (*IM_BRGC2 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 2)
- sclk_brg = (*IM_BRGC3 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 3)
- sclk_brg = (*IM_BRGC4 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 4)
- sclk_brg = (*IM_BRGC5 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 5)
- sclk_brg = (*IM_BRGC6 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 6)
- sclk_brg = (*IM_BRGC7 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (SCLK_BRG == 7)
- sclk_brg = (*IM_BRGC8 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-
- /*
- * Obtain the enabled LRCLK BRG value
- */
-# if (LRCLK_BRG == 0)
- lrclk_brg = (*IM_BRGC1 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 1)
- lrclk_brg = (*IM_BRGC2 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 2)
- lrclk_brg = (*IM_BRGC3 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 3)
- lrclk_brg = (*IM_BRGC4 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 4)
- lrclk_brg = (*IM_BRGC5 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 5)
- lrclk_brg = (*IM_BRGC6 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 6)
- lrclk_brg = (*IM_BRGC7 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-# if (LRCLK_BRG == 7)
- lrclk_brg = (*IM_BRGC8 & ~CPM_BRG_RST) | CPM_BRG_EN;
-# endif
-
- /* Save off the real LRCLK value */
- real_lrclk_brg = lrclk_brg;
-
- /* Obtain the current SCLK count */
- sclk_cnt = ((sclk_brg & 0x00001FFE) >> 1) + 1;
-
- /* Compute the delay as a function of SCLK count */
- delay_cnt = ((sclk_cnt / 4) - 2) * 10 + 6;
- if (DaqSampleRate == 43402) {
- delay_cnt++;
- }
-
- /* Clear out the count */
- temp_lrclk_brg = sclk_brg & ~0x00001FFE;
-
- /* Insert the count */
- temp_lrclk_brg |= ((delay_cnt + (sclk_cnt / 2) - 1) << 1) & 0x00001FFE;
-
- /*
- * Disable interrupt and save the current state
- */
- flag = disable_interrupts();
-
- /*
- * Enable MCLK BRG
- */
-# if (MCLK_BRG == 0)
- *IM_BRGC1 = mclk_brg;
-# endif
-# if (MCLK_BRG == 1)
- *IM_BRGC2 = mclk_brg;
-# endif
-# if (MCLK_BRG == 2)
- *IM_BRGC3 = mclk_brg;
-# endif
-# if (MCLK_BRG == 3)
- *IM_BRGC4 = mclk_brg;
-# endif
-# if (MCLK_BRG == 4)
- *IM_BRGC5 = mclk_brg;
-# endif
-# if (MCLK_BRG == 5)
- *IM_BRGC6 = mclk_brg;
-# endif
-# if (MCLK_BRG == 6)
- *IM_BRGC7 = mclk_brg;
-# endif
-# if (MCLK_BRG == 7)
- *IM_BRGC8 = mclk_brg;
-# endif
-
- /*
- * Enable SCLK BRG
- */
-# if (SCLK_BRG == 0)
- *IM_BRGC1 = sclk_brg;
-# endif
-# if (SCLK_BRG == 1)
- *IM_BRGC2 = sclk_brg;
-# endif
-# if (SCLK_BRG == 2)
- *IM_BRGC3 = sclk_brg;
-# endif
-# if (SCLK_BRG == 3)
- *IM_BRGC4 = sclk_brg;
-# endif
-# if (SCLK_BRG == 4)
- *IM_BRGC5 = sclk_brg;
-# endif
-# if (SCLK_BRG == 5)
- *IM_BRGC6 = sclk_brg;
-# endif
-# if (SCLK_BRG == 6)
- *IM_BRGC7 = sclk_brg;
-# endif
-# if (SCLK_BRG == 7)
- *IM_BRGC8 = sclk_brg;
-# endif
-
- /*
- * Enable LRCLK BRG (1st time - temporary)
- */
-# if (LRCLK_BRG == 0)
- *IM_BRGC1 = temp_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 1)
- *IM_BRGC2 = temp_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 2)
- *IM_BRGC3 = temp_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 3)
- *IM_BRGC4 = temp_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 4)
- *IM_BRGC5 = temp_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 5)
- *IM_BRGC6 = temp_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 6)
- *IM_BRGC7 = temp_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 7)
- *IM_BRGC8 = temp_lrclk_brg;
-# endif
-
- /*
- * Enable LRCLK BRG (2nd time - permanent)
- */
-# if (LRCLK_BRG == 0)
- *IM_BRGC1 = real_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 1)
- *IM_BRGC2 = real_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 2)
- *IM_BRGC3 = real_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 3)
- *IM_BRGC4 = real_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 4)
- *IM_BRGC5 = real_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 5)
- *IM_BRGC6 = real_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 6)
- *IM_BRGC7 = real_lrclk_brg;
-# endif
-# if (LRCLK_BRG == 7)
- *IM_BRGC8 = real_lrclk_brg;
-# endif
-
- /*
- * Restore the Interrupt state
- */
- if (flag) {
- enable_interrupts();
- }
-# else
- /*
- * Enable the clocks
- */
- Daq_BRG_Enable(LRCLK_BRG);
- Daq_BRG_Enable(SCLK_BRG);
- Daq_BRG_Enable(MCLK_BRG);
-# endif
-}
-
-void Daq_Display_Clocks(void)
-
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- uint mclk_divisor; /* Detected MCLK divisor */
- uint sclk_divisor; /* Detected SCLK divisor */
-
- printf("\nBRG:\n");
- if (immr->im_brgc4 != 0) {
- printf("\tbrgc4\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, MCLK\n",
- immr->im_brgc4,
- (uint)&(immr->im_brgc4),
- Daq_BRG_Get_Count(3),
- Daq_BRG_Get_ExtClk(3),
- Daq_BRG_Get_ExtClk_Description(3));
- }
- if (immr->im_brgc8 != 0) {
- printf("\tbrgc8\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, SCLK\n",
- immr->im_brgc8,
- (uint)&(immr->im_brgc8),
- Daq_BRG_Get_Count(7),
- Daq_BRG_Get_ExtClk(7),
- Daq_BRG_Get_ExtClk_Description(7));
- }
- if (immr->im_brgc6 != 0) {
- printf("\tbrgc6\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, LRCLK\n",
- immr->im_brgc6,
- (uint)&(immr->im_brgc6),
- Daq_BRG_Get_Count(5),
- Daq_BRG_Get_ExtClk(5),
- Daq_BRG_Get_ExtClk_Description(5));
- }
- if (immr->im_brgc1 != 0) {
- printf("\tbrgc1\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, SMC1\n",
- immr->im_brgc1,
- (uint)&(immr->im_brgc1),
- Daq_BRG_Get_Count(0),
- Daq_BRG_Get_ExtClk(0),
- Daq_BRG_Get_ExtClk_Description(0));
- }
- if (immr->im_brgc2 != 0) {
- printf("\tbrgc2\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, SMC2\n",
- immr->im_brgc2,
- (uint)&(immr->im_brgc2),
- Daq_BRG_Get_Count(1),
- Daq_BRG_Get_ExtClk(1),
- Daq_BRG_Get_ExtClk_Description(1));
- }
- if (immr->im_brgc3 != 0) {
- printf("\tbrgc3\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, SCC1\n",
- immr->im_brgc3,
- (uint)&(immr->im_brgc3),
- Daq_BRG_Get_Count(2),
- Daq_BRG_Get_ExtClk(2),
- Daq_BRG_Get_ExtClk_Description(2));
- }
- if (immr->im_brgc5 != 0) {
- printf("\tbrgc5\t0x%08x @ 0x%08x, %5d count, %d extc, %8s\n",
- immr->im_brgc5,
- (uint)&(immr->im_brgc5),
- Daq_BRG_Get_Count(4),
- Daq_BRG_Get_ExtClk(4),
- Daq_BRG_Get_ExtClk_Description(4));
- }
- if (immr->im_brgc7 != 0) {
- printf("\tbrgc7\t0x%08x @ 0x%08x, %5d count, %d extc, %8s\n",
- immr->im_brgc7,
- (uint)&(immr->im_brgc7),
- Daq_BRG_Get_Count(6),
- Daq_BRG_Get_ExtClk(6),
- Daq_BRG_Get_ExtClk_Description(6));
- }
-
-# ifdef RUN_SCLK_ON_BRG_INT
- mclk_divisor = Daq_BRG_Rate(MCLK_BRG) / Daq_BRG_Rate(SCLK_BRG);
-# else
- mclk_divisor = Daq_BRG_Get_Count(SCLK_BRG);
-# endif
-# ifdef RUN_LRCLK_ON_BRG_INT
- sclk_divisor = Daq_BRG_Rate(SCLK_BRG) / Daq_BRG_Rate(LRCLK_BRG);
-# else
- sclk_divisor = Daq_BRG_Get_Count(LRCLK_BRG);
-# endif
-
- printf("\nADC/DAC Clocking (%d/%d):\n", sclk_divisor, mclk_divisor);
- printf("\tMCLK %8d Hz, or %3dx SCLK, or %3dx LRCLK\n",
- Daq_BRG_Rate(MCLK_BRG),
- mclk_divisor,
- mclk_divisor * sclk_divisor);
-# ifdef RUN_SCLK_ON_BRG_INT
- printf("\tSCLK %8d Hz, or %3dx LRCLK\n",
- Daq_BRG_Rate(SCLK_BRG),
- sclk_divisor);
-# else
- printf("\tSCLK %8d Hz, or %3dx LRCLK\n",
- Daq_BRG_Rate(MCLK_BRG) / mclk_divisor,
- sclk_divisor);
-# endif
-# ifdef RUN_LRCLK_ON_BRG_INT
- printf("\tLRCLK %8d Hz\n",
- Daq_BRG_Rate(LRCLK_BRG));
-# else
-# ifdef RUN_SCLK_ON_BRG_INT
- printf("\tLRCLK %8d Hz\n",
- Daq_BRG_Rate(SCLK_BRG) / sclk_divisor);
-# else
- printf("\tLRCLK %8d Hz\n",
- Daq_BRG_Rate(MCLK_BRG) / (mclk_divisor * sclk_divisor));
-# endif
-# endif
- printf("\n");
-}
diff --git a/board/sacsng/clkinit.h b/board/sacsng/clkinit.h
deleted file mode 100644
index 011638f2fa..0000000000
--- a/board/sacsng/clkinit.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * (C) Copyright 2002
- * Custom IDEAS, Inc. <www.cideas.com>
- * Jon Diekema <diekema@cideas.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
- */
-
-#ifndef FALSE
-#define FALSE 0
-#define TRUE (!FALSE)
-#endif
-
-#define SLRCLK_EN_MASK 0x00040000 /* PA13 - SLRCLK_EN* */
-
-#define MIN_SAMPLE_RATE 4000 /* Minimum sample rate */
-#define MAX_128x_SAMPLE_RATE 43402 /* Maximum 128x sample rate */
-#define MAX_64x_SAMPLE_RATE 86805 /* Maximum 64x sample rate */
-
-#define KHZ ((uint)1000)
-#define MHZ ((uint)(1000 * KHZ))
-
-#define MCLK_BRG 3 /* MCLK, Master CLocK for the A/D & D/A */
-#define SCLK_BRG 7 /* SCLK, Sample CLocK for the A/D & D/A */
-#define LRCLK_BRG 5 /* LRCLK, L/R CLocK for the A/D & D/A */
- /* 0 == BRG1 (used for SMC1) */
- /* 1 == BRG2 (used for SMC2) */
- /* 2 == BRG3 (used for SCC1) */
- /* 3 == BRG4 (MCLK) */
- /* 4 == BRG5 */
- /* 5 == BRG6 (LRCLK) */
- /* 6 == BRG7 */
- /* 7 == BRG8 (SCLK) */
-
-#define MCLK_DIVISOR 4 /* SCLK = MCLK / MCLK_DIVISOR */
-#define SCLK_DIVISOR (Daq64xSampling ? 64 : 128)
- /* LRCLK = SCLK / SCLK_DIVISOR */
-
-#define TIGHTEN_UP_BRG_EN_TIMING /* Tighten up the BRG enable timing */
-#define RUN_SCLK_ON_BRG_INT /* Run SCLK on BRG_INT instead of MCLK */
- /* The 8260 (Mask B.3) seems to have */
- /* problems generating SCLK from MCLK */
- /* via CLK9. */
-#define RUN_LRCLK_ON_BRG_INT /* Run LRCLK on BRG_INT instead of SCLK */
- /* The 8260 (Mask B.3) seems to have */
- /* problems generating LRCLK from SCLK */
-
-#define NUM_LRCLKS_TO_STABILIZE 1 /* Number of LRCLK period (sample) */
- /* to wait for the clock to stabilize */
-
-#define CPM_CLK (gd->bd->bi_cpmfreq)
-#define DFBRG 4
-#define BRG_INT_CLK (CPM_CLK * 2 / DFBRG)
- /* BRG = CPM * 2 / DFBRG (Sect 9.8) */
- /* BRG = CPM * 2 / 4 */
- /* BRG = CPM / 2 */
-
-#define CPM_BRG_EXTC_MASK ((uint)0x0000C000)
-#define CPM_BRG_EXTC_SHIFT 14
-
-#define CPM_BRG_DIV16_MASK ((uint)0x00000001)
-#define CPM_BRG_DIV16_SHIFT 1
-
-#define CPM_BRG_EXTC_BRGCLK 0
-#define CPM_BRG_EXTC_CLK3 1
-#define CPM_BRG_EXTC_CLK9 CPM_BRG_EXTC_CLK3
-#define CPM_BRG_EXTC_CLK5 2
-#define CPM_BRG_EXTC_CLK15 CPM_BRG_EXTC_CLK5
-
-#define IM_BRGC1 ((uint *)0xf00119f0)
-#define IM_BRGC2 ((uint *)0xf00119f4)
-#define IM_BRGC3 ((uint *)0xf00119f8)
-#define IM_BRGC4 ((uint *)0xf00119fc)
-#define IM_BRGC5 ((uint *)0xf00115f0)
-#define IM_BRGC6 ((uint *)0xf00115f4)
-#define IM_BRGC7 ((uint *)0xf00115f8)
-#define IM_BRGC8 ((uint *)0xf00115fc)
-
-/*
- * External declarations
- */
-
-extern int Daq64xSampling;
-
-extern void Daq_BRG_Reset(uint brg);
-extern void Daq_BRG_Run(uint brg);
-
-extern void Daq_BRG_Disable(uint brg);
-extern void Daq_BRG_Enable(uint brg);
-
-extern uint Daq_BRG_Get_Div16(uint brg);
-extern void Daq_BRG_Set_Div16(uint brg, uint div16);
-
-extern uint Daq_BRG_Get_Count(uint brg);
-extern void Daq_BRG_Set_Count(uint brg, uint brg_cnt);
-
-extern uint Daq_BRG_Get_ExtClk(uint brg);
-extern char* Daq_BRG_Get_ExtClk_Description(uint brg);
-extern void Daq_BRG_Set_ExtClk(uint brg, uint extc);
-
-extern uint Daq_BRG_Rate(uint brg);
-
-extern uint Daq_Get_SampleRate(void);
-
-extern void Daq_Init_Clocks(int sample_rate, int sample_64x);
-extern void Daq_Stop_Clocks(void);
-extern void Daq_Start_Clocks(int sample_rate);
-extern void Daq_Display_Clocks(void);
diff --git a/board/sacsng/config.mk b/board/sacsng/config.mk
deleted file mode 100644
index 220b218a7d..0000000000
--- a/board/sacsng/config.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (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
-#
-
-#
-# 82xx boards
-#
-
-TEXT_BASE = 0x40000000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/sacsng/flash.c b/board/sacsng/flash.c
deleted file mode 100644
index 52e01def5b..0000000000
--- a/board/sacsng/flash.c
+++ /dev/null
@@ -1,523 +0,0 @@
-/*
- * (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 <common.h>
-#include <configs/sacsng.h>
-
-
-#undef DEBUG
-
-#ifndef CFG_ENV_ADDR
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-#endif
-#ifndef CFG_ENV_SIZE
-#define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-#endif
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_short *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- size_b0 = flash_get_size((vu_short *)CFG_FLASH0_BASE, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- size_b1 = flash_get_size((vu_short *)CFG_FLASH1_BASE, &flash_info[1]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- &flash_info[1]);
-#endif
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- /*
- * We only report the primary flash for U-Boot's use.
- */
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_short *addr, flash_info_t *info)
-{
- short i;
- ushort value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0xAAAA;
- addr[0x02AA] = 0x5555;
- addr[0x0555] = 0x9090;
- __asm__ __volatile__(" sync\n ");
-
- value = addr[0];
-#ifdef DEBUG
- printf("Flash manufacturer 0x%04X\n", value);
-#endif
-
- if(value == (ushort)AMD_MANUFACT) {
- info->flash_id = FLASH_MAN_AMD;
- } else if (value == (ushort)FUJ_MANUFACT) {
- info->flash_id = FLASH_MAN_FUJ;
- } else {
-#ifdef DEBUG
- printf("Unknown flash manufacturer 0x%04X\n", value);
-#endif
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-#ifdef DEBUG
- printf("Flash type 0x%04X\n", value);
-#endif
-
- if(value == (ushort)AMD_ID_LV400T) {
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000; /* => 0.5 MB */
- } else if(value == (ushort)AMD_ID_LV400B) {
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000; /* => 0.5 MB */
- } else if(value == (ushort)AMD_ID_LV800T) {
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000; /* => 1 MB */
- } else if(value == (ushort)AMD_ID_LV800B) {
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000; /* => 1 MB */
- } else if(value == (ushort)AMD_ID_LV160T) {
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000; /* => 2 MB */
- } else if(value == (ushort)AMD_ID_LV160B) {
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000; /* => 2 MB */
- } else if(value == (ushort)AMD_ID_LV320T) {
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00400000; /* => 4 MB */
- } else if(value == (ushort)AMD_ID_LV320B) {
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00400000; /* => 4 MB */
- } else {
-#ifdef DEBUG
- printf("Unknown flash type 0x%04X\n", value);
- info->size = CFG_FLASH_SIZE;
-#else
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-#endif
- }
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + ((i - 3) * 0x00010000);
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + (i * 0x00010000);
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned short *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned short *)info->start[0];
-
- }
-
- addr[0] = 0xF0F0; /* reset bank */
- __asm__ __volatile__(" sync\n ");
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_short *addr = (vu_short*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAAAA;
- addr[0x02AA] = 0x5555;
- addr[0x0555] = 0x8080;
- addr[0x0555] = 0xAAAA;
- addr[0x02AA] = 0x5555;
- __asm__ __volatile__(" sync\n ");
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_short*)(info->start[sect]);
- addr[0] = 0x3030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_short*)(info->start[l_sect]);
- while ((addr[0] & 0x0080) != 0x0080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- addr[0] = 0xF0F0; /* reset bank */
- __asm__ __volatile__(" sync\n ");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (vu_short*)info->start[0];
- addr[0] = 0xF0F0; /* reset bank */
- __asm__ __volatile__(" sync\n ");
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_short *addr = (vu_short*)(info->start[0]);
- ulong start;
- int flag;
- int j;
-
- /* Check if Flash is (sufficiently) erased */
- if (((*(vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* The original routine was designed to write 32 bit words to
- * 32 bit wide memory. We have 16 bit wide memory so we do
- * two writes. We write the LSB first at dest+2 and then the
- * MSB at dest (lousy big endian).
- */
- dest += 2;
- for(j = 0; j < 2; j++) {
- addr[0x0555] = 0xAAAA;
- addr[0x02AA] = 0x5555;
- addr[0x0555] = 0xA0A0;
- __asm__ __volatile__(" sync\n ");
-
- *((vu_short *)dest) = (ushort)data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while (*(vu_short *)dest != (ushort)data) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- dest -= 2;
- data >>= 16;
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/sacsng/ioconfig.h b/board/sacsng/ioconfig.h
deleted file mode 100644
index be1ce7c835..0000000000
--- a/board/sacsng/ioconfig.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * I/O Port configuration table
- *
- * If conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-#ifdef SKIP
-#undef SKIP
-#endif
-
-#ifdef CONF
-#undef CONF
-#endif
-
-#ifdef DIN
-#undef DIN
-#endif
-
-#ifdef DOUT
-#undef DOUT
-#endif
-
-#ifdef GPIO
-#undef GPIO
-#endif
-
-#ifdef SPEC
-#undef SPEC
-#endif
-
-#ifdef ACTV
-#undef ACTV
-#endif
-
-#ifdef OPEN
-#undef OPEN
-#endif
-
-#define SKIP 0 /* SKIP over this port */
-#define CONF 1 /* CONFiguration the port */
-
-#define DIN 0 /* PDIRx 0: Direction IN */
-#define DOUT 1 /* PDIRx 1: Direction OUT */
-
-#define GPIO 0 /* PPARx 0: General Purpose I/O */
-#define SPEC 1 /* PPARx 1: dedicated to a peripheral function, */
- /* i.e. the port has a SPECial use. */
-
-#define ACTV 0 /* PODRx 0: ACTiVely driven as an output */
-#define OPEN 1 /* PODRx 1: OPEN-drain driver */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* RODIS8* */
- /* PA30 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* RODIS7* */
- /* PA29 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* RODIS6* */
- /* PA28 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* RODIS5* */
- /* PA27 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* RODIS4* */
- /* PA26 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* RODIS3* */
- /* PA25 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* RODIS2* */
- /* PA24 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* RODIS1* */
- /* PA23 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* ODIS_EN* */
- /* PA22 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* STLED2_EN* */
- /* PA21 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* STLED1_EN* */
- /* PA20 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* PLED3_EN* */
- /* PA19 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* PLED2_EN* */
- /* PA18 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* PLED1_EN* */
- /* PA17 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PA16 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* DAC_RST* */
- /* PA15 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* CH34SDATA_PU */
- /* PA14 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* CH12SDATA_PU */
- /* PA13 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* SLRCLK_EN* */
- /* PA12 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* MTRX_4ACDC* */
- /* PA11 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* MTRX_4TEDS* */
- /* PA10 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* MTRX_4XTDS* */
- /* PA9 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* MTRX_3ACDC* */
- /* PA8 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* MTRX_3TEDS* */
- /* PA7 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* MTRX_3XTDS* */
- /* PA6 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* MTRX_2ACDC* */
- /* PA5 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* MTRX_2TEDS* */
- /* PA4 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* MTRX_2XTDS* */
- /* PA3 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PA2 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* MTRX_1ACDC* */
- /* PA1 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* MTRX_1TEDS* */
- /* PA0 */ { CONF, GPIO, 0, DOUT, ACTV, 1 } /* MTRX_1XTDS* */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* FCC2 MII_TX_ER */
- /* PB30 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* FCC2 MII_RX_DV */
- /* PB29 */ { CONF, SPEC, 1, DOUT, ACTV, 0 }, /* FCC2 MII_TX_EN */
- /* PB28 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* FCC2 MII_RX_ER */
- /* PB27 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* FCC2 MII_COL */
- /* PB26 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* FCC2 MII_CRS */
- /* PB25 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* FCC2 MII_TXD3 */
- /* PB24 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* FCC2 MII_TXD2 */
- /* PB23 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* FCC2 MII_TXD1 */
- /* PB22 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* FCC2 MII_TXD0 */
- /* PB21 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* FCC2 MII_RXD0 */
- /* PB20 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* FCC2 MII_RXD1 */
- /* PB19 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* FCC2 MII_RXD2 */
- /* PB18 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* FCC2 MII_RXD3 */
- /* PB17 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PB16 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PB15 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PB14 */ { CONF, SPEC, 1, DIN, ACTV, 0 }, /* L1RXDC1, BSDATA_ADC12 */
- /* PB13 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PB12 */ { CONF, SPEC, 1, DIN, ACTV, 0 }, /* L1RSYNCC1, LRCLK */
- /* PB11 */ { CONF, SPEC, 1, DIN, ACTV, 0 }, /* L1TXDD1, RSDATA_DAC12 */
- /* PB10 */ { CONF, SPEC, 1, DIN, ACTV, 0 }, /* L1RXDD1, BSDATA_ADC34 */
- /* PB9 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PB8 */ { CONF, SPEC, 1, DIN, ACTV, 0 }, /* L1RSYNCD1, LRCLK */
- /* PB7 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PB6 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* XCITE_SHDN */
- /* PB5 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* TRIGGER */
- /* PB4 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* ARM */
- /* PB3 */ { SKIP, GPIO, 0, DIN, ACTV, 0 }, /* pin doesn't exist */
- /* PB2 */ { SKIP, GPIO, 0, DIN, ACTV, 0 }, /* pin doesn't exist */
- /* PB1 */ { SKIP, GPIO, 0, DIN, ACTV, 0 }, /* pin doesn't exist */
- /* PB0 */ { SKIP, GPIO, 0, DIN, ACTV, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PC30 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PC29 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* CLK3, MCLK */
- /* PC28 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* TOUT2* */
-#ifdef QQQ
- /* PC28 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* TOUT2* */
-#endif
- /* PC27 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* CLK5, SCLK */
- /* PC26 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PC25 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* CLK7, SCLK */
- /* PC24 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PC23 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* CLK9, MCLK */
- /* PC22 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PC21 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* BRGO6 (LRCLK) */
- /* PC20 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PC19 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* CLK13, MII_RXCLK */
- /* PC18 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* CLK14, MII_TXCLK */
- /* PC17 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* BRGO8 (SCLK) */
- /* PC16 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PC15 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* SMC2_TX */
- /* PC14 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PC13 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PC12 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* TDM_STRB3 */
- /* PC11 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PC10 */ { CONF, SPEC, 1, DOUT, ACTV, 0 }, /* TDM_STRB4 */
- /* PC9 */ { CONF, GPIO, 0, DIN, ACTV, 0 }, /* BPDIS_IN3 */
- /* PC8 */ { CONF, GPIO, 0, DIN, ACTV, 0 }, /* BPDIS_IN2 */
- /* PC7 */ { CONF, GPIO, 0, DIN, ACTV, 0 }, /* BPDIS_IN1 */
- /* PC6 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PC5 */ { CONF, GPIO, 0, DIN, ACTV, 0 }, /* BTST_IN2* */
- /* PC4 */ { CONF, GPIO, 0, DIN, ACTV, 0 }, /* BTST_IN1* */
- /* PC3 */ { CONF, GPIO, 0, DIN, ACTV, 0 }, /* MUSH_STAT */
- /* PC2 */ { CONF, GPIO, 0, DIN, ACTV, 0 }, /* OUTDRV_STAT */
- /* PC1 */ { CONF, GPIO, 0, DOUT, OPEN, 1 }, /* PHY_MDIO */
- /* PC0 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* PHY_MDC */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* SCC1_RX */
- /* PD30 */ { CONF, SPEC, 1, DOUT, ACTV, 0 }, /* SCC1_TX */
- /* PD29 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PD28 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PD27 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PD26 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PD25 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PD24 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PD23 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PD22 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PD21 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PD20 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* SPI_ADC_CS* */
- /* PD19 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* SPI_DAC_CS* */
-#if defined(CONFIG_SOFT_SPI)
- /* PD18 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* SPI_CLK */
- /* PD17 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* SPI_MOSI */
- /* PD16 */ { CONF, GPIO, 0, DIN, ACTV, 0 }, /* SPI_MISO */
-#else
- /* PD18 */ { CONF, SPEC, 1, DOUT, ACTV, 0 }, /* SPI_CLK */
- /* PD17 */ { CONF, SPEC, 1, DOUT, ACTV, 0 }, /* SPI_MOSI */
- /* PD16 */ { CONF, SPEC, 1, DIN, ACTV, 0 }, /* SPI_MISO */
-#endif
-#if defined(CONFIG_SOFT_I2C)
- /* PD15 */ { CONF, GPIO, 0, DOUT, OPEN, 1 }, /* I2C_SDA */
- /* PD14 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* I2C_SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
- /* PD15 */ { CONF, SPEC, 1, DIN, OPEN, 0 }, /* I2C_SDA */
- /* PD14 */ { CONF, SPEC, 1, DIN, OPEN, 0 }, /* I2C_SCL */
-#else /* normal I/O port pins */
- /* PD15 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* I2C_SDA */
- /* PD14 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* I2C_SCL */
-#endif
-#endif
- /* PD13 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* TDM_STRB1 */
- /* PD12 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* TDM_STRB2 */
- /* PD11 */ { CONF, GPIO, 0, DOUT, ACTV, 0 }, /* N/C */
- /* PD10 */ { CONF, SPEC, 1, DOUT, ACTV, 0 }, /* BRGO4 (MCLK) */
- /* PD9 */ { CONF, SPEC, 0, DOUT, ACTV, 0 }, /* SMC1_TX */
- /* PD8 */ { CONF, SPEC, 0, DIN, ACTV, 0 }, /* SMC1_RX */
- /* PD7 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* N/C */
- /* PD6 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* N/C */
- /* PD5 */ { CONF, GPIO, 0, DOUT, ACTV, 1 }, /* N/C */
- /* PD4 */ { CONF, SPEC, 1, DOUT, ACTV, 1 }, /* SMC2_RX */
- /* PD3 */ { SKIP, GPIO, 0, DIN, ACTV, 0 }, /* pin doesn't exist */
- /* PD2 */ { SKIP, GPIO, 0, DIN, ACTV, 0 }, /* pin doesn't exist */
- /* PD1 */ { SKIP, GPIO, 0, DIN, ACTV, 0 }, /* pin doesn't exist */
- /* PD0 */ { SKIP, GPIO, 0, DIN, ACTV, 0 } /* pin doesn't exist */
- }
-};
diff --git a/board/sacsng/sacsng.c b/board/sacsng/sacsng.c
deleted file mode 100644
index e50b747923..0000000000
--- a/board/sacsng/sacsng.c
+++ /dev/null
@@ -1,890 +0,0 @@
-/*
- * (C) Copyright 2002
- * Custom IDEAS, Inc. <www.cideas.com>
- * Gerald Van Baren <vanbaren@cideas.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
- */
-
-#include <asm/u-boot.h>
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <i2c.h>
-#include <spi.h>
-#include <command.h>
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-#include <status_led.h>
-#endif
-
-#ifdef CONFIG_ETHER_LOOPBACK_TEST
-extern void eth_loopback_test(void);
-#endif /* CONFIG_ETHER_LOOPBACK_TEST */
-
-extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-
-#include "clkinit.h"
-#include "ioconfig.h" /* I/O configuration table */
-
-/*
- * PBI Page Based Interleaving
- * PSDMR_PBI page based interleaving
- * 0 bank based interleaving
- * External Address Multiplexing (EAMUX) adds a clock to address cycles
- * (this can help with marginal board layouts)
- * PSDMR_EAMUX adds a clock
- * 0 no extra clock
- * Buffer Command (BUFCMD) adds a clock to command cycles.
- * PSDMR_BUFCMD adds a clock
- * 0 no extra clock
- */
-#define CONFIG_PBI PSDMR_PBI
-#define PESSIMISTIC_SDRAM 0
-#define EAMUX 0 /* EST requires EAMUX */
-#define BUFCMD 0
-
-/*
- * ADC/DAC Defines:
- */
-#define INITIAL_SAMPLE_RATE 10016 /* Initial Daq sample rate */
-#define INITIAL_RIGHT_JUST 0 /* Initial DAC right justification */
-#define INITIAL_MCLK_DIVIDE 0 /* Initial MCLK Divide */
-#define INITIAL_SAMPLE_64X 1 /* Initial 64x clocking mode */
-#define INITIAL_SAMPLE_128X 0 /* Initial 128x clocking mode */
-
-/*
- * ADC Defines:
- */
-#define I2C_ADC_1_ADDR 0x0E /* I2C Address of the ADC #1 */
-#define I2C_ADC_2_ADDR 0x0F /* I2C Address of the ADC #2 */
-
-#define ADC_SDATA1_MASK 0x00020000 /* PA14 - CH12SDATA_PU */
-#define ADC_SDATA2_MASK 0x00010000 /* PA15 - CH34SDATA_PU */
-
-#define ADC_VREF_CAP 100 /* VREF capacitor in uF */
-#define ADC_INITIAL_DELAY (10 * ADC_VREF_CAP) /* 10 usec per uF, in usec */
-#define ADC_SDATA_DELAY 100 /* ADC SDATA release delay in usec */
-#define ADC_CAL_DELAY (1000000 / INITIAL_SAMPLE_RATE * 4500)
- /* Wait at least 4100 LRCLK's */
-
-#define ADC_REG1_FRAME_START 0x80 /* Frame start */
-#define ADC_REG1_GROUND_CAL 0x40 /* Ground calibration enable */
-#define ADC_REG1_ANA_MOD_PDOWN 0x20 /* Analog modulator section in power down */
-#define ADC_REG1_DIG_MOD_PDOWN 0x10 /* Digital modulator section in power down */
-
-#define ADC_REG2_128x 0x80 /* Oversample at 128x */
-#define ADC_REG2_CAL 0x40 /* System calibration enable */
-#define ADC_REG2_CHANGE_SIGN 0x20 /* Change sign enable */
-#define ADC_REG2_LR_DISABLE 0x10 /* Left/Right output disable */
-#define ADC_REG2_HIGH_PASS_DIS 0x08 /* High pass filter disable */
-#define ADC_REG2_SLAVE_MODE 0x04 /* Slave mode */
-#define ADC_REG2_DFS 0x02 /* Digital format select */
-#define ADC_REG2_MUTE 0x01 /* Mute */
-
-#define ADC_REG7_ADDR_ENABLE 0x80 /* Address enable */
-#define ADC_REG7_PEAK_ENABLE 0x40 /* Peak enable */
-#define ADC_REG7_PEAK_UPDATE 0x20 /* Peak update */
-#define ADC_REG7_PEAK_FORMAT 0x10 /* Peak display format */
-#define ADC_REG7_DIG_FILT_PDOWN 0x04 /* Digital filter power down enable */
-#define ADC_REG7_FIR2_IN_EN 0x02 /* External FIR2 input enable */
-#define ADC_REG7_PSYCHO_EN 0x01 /* External pyscho filter input enable */
-
-/*
- * DAC Defines:
- */
-
-#define I2C_DAC_ADDR 0x11 /* I2C Address of the DAC */
-
-#define DAC_RST_MASK 0x00008000 /* PA16 - DAC_RST* */
-#define DAC_RESET_DELAY 100 /* DAC reset delay in usec */
-#define DAC_INITIAL_DELAY 5000 /* DAC initialization delay in usec */
-
-#define DAC_REG1_AMUTE 0x80 /* Auto-mute */
-
-#define DAC_REG1_LEFT_JUST_24_BIT (0 << 4) /* Fmt 0: Left justified 24 bit */
-#define DAC_REG1_I2S_24_BIT (1 << 4) /* Fmt 1: I2S up to 24 bit */
-#define DAC_REG1_RIGHT_JUST_16BIT (2 << 4) /* Fmt 2: Right justified 16 bit */
-#define DAC_REG1_RIGHT_JUST_24BIT (3 << 4) /* Fmt 3: Right justified 24 bit */
-#define DAC_REG1_RIGHT_JUST_20BIT (4 << 4) /* Fmt 4: Right justified 20 bit */
-#define DAC_REG1_RIGHT_JUST_18BIT (5 << 4) /* Fmt 5: Right justified 18 bit */
-
-#define DAC_REG1_DEM_NO (0 << 2) /* No De-emphasis */
-#define DAC_REG1_DEM_44KHZ (1 << 2) /* 44.1KHz De-emphasis */
-#define DAC_REG1_DEM_48KHZ (2 << 2) /* 48KHz De-emphasis */
-#define DAC_REG1_DEM_32KHZ (3 << 2) /* 32KHz De-emphasis */
-
-#define DAC_REG1_SINGLE 0 /* 4- 50KHz sample rate */
-#define DAC_REG1_DOUBLE 1 /* 50-100KHz sample rate */
-#define DAC_REG1_QUAD 2 /* 100-200KHz sample rate */
-#define DAC_REG1_DSD 3 /* Direct Stream Data, DSD */
-
-#define DAC_REG5_INVERT_A 0x80 /* Invert channel A */
-#define DAC_REG5_INVERT_B 0x40 /* Invert channel B */
-#define DAC_REG5_I2C_MODE 0x20 /* Control port (I2C) mode */
-#define DAC_REG5_POWER_DOWN 0x10 /* Power down mode */
-#define DAC_REG5_MUTEC_A_B 0x08 /* Mutec A=B */
-#define DAC_REG5_FREEZE 0x04 /* Freeze */
-#define DAC_REG5_MCLK_DIV 0x02 /* MCLK divide by 2 */
-#define DAC_REG5_RESERVED 0x01 /* Reserved */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard(void)
-{
- printf ("SACSng\n");
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram(int board_type)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
- volatile uchar c = 0;
- volatile uchar *ramaddr = (uchar *)(CFG_SDRAM_BASE + 0x8);
- uint psdmr = CFG_PSDMR;
- int i;
- uint psrt = 14; /* for no SPD */
- uint chipselects = 1; /* for no SPD */
- uint sdram_size = CFG_SDRAM0_SIZE * 1024 * 1024; /* for no SPD */
- uint or = CFG_OR2_PRELIM; /* for no SPD */
-#ifdef SDRAM_SPD_ADDR
- uint data_width;
- uint rows;
- uint banks;
- uint cols;
- uint caslatency;
- uint width;
- uint rowst;
- uint sdam;
- uint bsma;
- uint sda10;
- u_char spd_size;
- u_char data;
- u_char cksum;
- int j;
-#endif
-
-#ifdef SDRAM_SPD_ADDR
- /* Keep the compiler from complaining about potentially uninitialized vars */
- data_width = chipselects = rows = banks = cols = caslatency = psrt = 0;
-
- /*
- * Read the SDRAM SPD EEPROM via I2C.
- */
- i2c_read(SDRAM_SPD_ADDR, 0, 1, &data, 1);
- spd_size = data;
- cksum = data;
- for(j = 1; j < 64; j++) { /* read only the checksummed bytes */
- /* note: the I2C address autoincrements when alen == 0 */
- i2c_read(SDRAM_SPD_ADDR, 0, 0, &data, 1);
- if(j == 5) chipselects = data & 0x0F;
- else if(j == 6) data_width = data;
- else if(j == 7) data_width |= data << 8;
- else if(j == 3) rows = data & 0x0F;
- else if(j == 4) cols = data & 0x0F;
- else if(j == 12) {
- /*
- * Refresh rate: this assumes the prescaler is set to
- * approximately 1uSec per tick.
- */
- switch(data & 0x7F) {
- default:
- case 0: psrt = 14 ; /* 15.625uS */ break;
- case 1: psrt = 2; /* 3.9uS */ break;
- case 2: psrt = 6; /* 7.8uS */ break;
- case 3: psrt = 29; /* 31.3uS */ break;
- case 4: psrt = 60; /* 62.5uS */ break;
- case 5: psrt = 120; /* 125uS */ break;
- }
- }
- else if(j == 17) banks = data;
- else if(j == 18) {
- caslatency = 3; /* default CL */
-#if(PESSIMISTIC_SDRAM)
- if((data & 0x04) != 0) caslatency = 3;
- else if((data & 0x02) != 0) caslatency = 2;
- else if((data & 0x01) != 0) caslatency = 1;
-#else
- if((data & 0x01) != 0) caslatency = 1;
- else if((data & 0x02) != 0) caslatency = 2;
- else if((data & 0x04) != 0) caslatency = 3;
-#endif
- else {
- printf ("WARNING: Unknown CAS latency 0x%02X, using 3\n",
- data);
- }
- }
- else if(j == 63) {
- if(data != cksum) {
- printf ("WARNING: Configuration data checksum failure:"
- " is 0x%02x, calculated 0x%02x\n",
- data, cksum);
- }
- }
- cksum += data;
- }
-
- /* We don't trust CL less than 2 (only saw it on an old 16MByte DIMM) */
- if(caslatency < 2) {
- printf("WARNING: CL was %d, forcing to 2\n", caslatency);
- caslatency = 2;
- }
- if(rows > 14) {
- printf("WARNING: This doesn't look good, rows = %d, should be <= 14\n", rows);
- rows = 14;
- }
- if(cols > 11) {
- printf("WARNING: This doesn't look good, columns = %d, should be <= 11\n", cols);
- cols = 11;
- }
-
- if((data_width != 64) && (data_width != 72))
- {
- printf("WARNING: SDRAM width unsupported, is %d, expected 64 or 72.\n",
- data_width);
- }
- width = 3; /* 2^3 = 8 bytes = 64 bits wide */
- /*
- * Convert banks into log2(banks)
- */
- if (banks == 2) banks = 1;
- else if(banks == 4) banks = 2;
- else if(banks == 8) banks = 3;
-
- sdram_size = 1 << (rows + cols + banks + width);
-
-#if(CONFIG_PBI == 0) /* bank-based interleaving */
- rowst = ((32 - 6) - (rows + cols + width)) * 2;
-#else
- rowst = 32 - (rows + banks + cols + width);
-#endif
-
- or = ~(sdram_size - 1) | /* SDAM address mask */
- ((banks-1) << 13) | /* banks per device */
- (rowst << 9) | /* rowst */
- ((rows - 9) << 6); /* numr */
-
- memctl->memc_or2 = or;
-
- /*
- * SDAM specifies the number of columns that are multiplexed
- * (reference AN2165/D), defined to be (columns - 6) for page
- * interleave, (columns - 8) for bank interleave.
- *
- * BSMA is 14 - max(rows, cols). The bank select lines come
- * into play above the highest "address" line going into the
- * the SDRAM.
- */
-#if(CONFIG_PBI == 0) /* bank-based interleaving */
- sdam = cols - 8;
- bsma = ((31 - width) - 14) - ((rows > cols) ? rows : cols);
- sda10 = sdam + 2;
-#else
- sdam = cols - 6;
- bsma = ((31 - width) - 14) - ((rows > cols) ? rows : cols);
- sda10 = sdam;
-#endif
-#if(PESSIMISTIC_SDRAM)
- psdmr = (CONFIG_PBI |\
- PSDMR_RFEN |\
- PSDMR_RFRC_16_CLK |\
- PSDMR_PRETOACT_8W |\
- PSDMR_ACTTORW_8W |\
- PSDMR_WRC_4C |\
- PSDMR_EAMUX |\
- PSDMR_BUFCMD) |\
- caslatency |\
- ((caslatency - 1) << 6) | /* LDOTOPRE is CL - 1 */ \
- (sdam << 24) |\
- (bsma << 21) |\
- (sda10 << 18);
-#else
- psdmr = (CONFIG_PBI |\
- PSDMR_RFEN |\
- PSDMR_RFRC_7_CLK |\
- PSDMR_PRETOACT_3W | /* 1 for 7E parts (fast PC-133) */ \
- PSDMR_ACTTORW_2W | /* 1 for 7E parts (fast PC-133) */ \
- PSDMR_WRC_1C | /* 1 clock + 7nSec */
- EAMUX |\
- BUFCMD) |\
- caslatency |\
- ((caslatency - 1) << 6) | /* LDOTOPRE is CL - 1 */ \
- (sdam << 24) |\
- (bsma << 21) |\
- (sda10 << 18);
-#endif
-#endif
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * Quote from Micron MT48LC8M16A2 data sheet:
- *
- * "...the SDRAM requires a 100uS delay prior to issuing any
- * command other than a COMMAND INHIBIT or NOP. Starting at some
- * point during this 100uS period and continuing at least through
- * the end of this period, COMMAND INHIBIT or NOP commands should
- * be applied."
- *
- * "Once the 100uS delay has been satisfied with at least one COMMAND
- * INHIBIT or NOP command having been applied, a /PRECHARGE command/
- * should be applied. All banks must then be precharged, thereby
- * placing the device in the all banks idle state."
- *
- * "Once in the idle state, /two/ AUTO REFRESH cycles must be
- * performed. After the AUTO REFRESH cycles are complete, the
- * SDRAM is ready for mode register programming."
- *
- * (/emphasis/ mine, gvb)
- *
- * The way I interpret this, Micron start up sequence is:
- * 1. Issue a PRECHARGE-BANK command (initial precharge)
- * 2. Issue a PRECHARGE-ALL-BANKS command ("all banks ... precharged")
- * 3. Issue two (presumably, doing eight is OK) CBR REFRESH commands
- * 4. Issue a MODE-SET command to initialize the mode register
- *
- * --------
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- memctl->memc_mptpr = CFG_MPTPR;
- memctl->memc_psrt = psrt;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr = c;
-
- /*
- * Do it a second time for the second set of chips if the DIMM has
- * two chip selects (double sided).
- */
- if(chipselects > 1) {
- ramaddr += sdram_size;
-
- memctl->memc_br3 = CFG_BR3_PRELIM + sdram_size;
- memctl->memc_or3 = or;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr = c;
- }
-
- /* return total ram size */
- return (sdram_size * chipselects);
-}
-
-/*-----------------------------------------------------------------------
- * Board Control Functions
- */
-void board_poweroff (void)
-{
- while (1); /* hang forever */
-}
-
-
-#ifdef CONFIG_MISC_INIT_R
-/* ------------------------------------------------------------------------- */
-int misc_init_r(void)
-{
- /*
- * Note: iop is used by the I2C macros, and iopa by the ADC/DAC initialization.
- */
- volatile ioport_t *iopa = ioport_addr((immap_t *)CFG_IMMR, 0 /* port A */);
- volatile ioport_t *iop = ioport_addr((immap_t *)CFG_IMMR, I2C_PORT);
-
- int reg; /* I2C register value */
- char *ep; /* Environment pointer */
- char str_buf[12] ; /* sprintf output buffer */
- int sample_rate; /* ADC/DAC sample rate */
- int sample_64x; /* Use 64/4 clocking for the ADC/DAC */
- int sample_128x; /* Use 128/4 clocking for the ADC/DAC */
- int right_just; /* Is the data to the DAC right justified? */
- int mclk_divide; /* MCLK Divide */
- int quiet; /* Quiet or minimal output mode */
-
- quiet = 0;
- if ((ep = getenv("quiet")) != NULL) {
- quiet = simple_strtol(ep, NULL, 10);
- }
- else {
- setenv("quiet", "0");
- }
-
- /*
- * SACSng custom initialization:
- * Start the ADC and DAC clocks, since the Crystal parts do not
- * work on the I2C bus until the clocks are running.
- */
-
- sample_rate = INITIAL_SAMPLE_RATE;
- if ((ep = getenv("DaqSampleRate")) != NULL) {
- sample_rate = simple_strtol(ep, NULL, 10);
- }
-
- sample_64x = INITIAL_SAMPLE_64X;
- sample_128x = INITIAL_SAMPLE_128X;
- if ((ep = getenv("Daq64xSampling")) != NULL) {
- sample_64x = simple_strtol(ep, NULL, 10);
- if (sample_64x) {
- sample_128x = 0;
- }
- else {
- sample_128x = 1;
- }
- }
- else {
- if ((ep = getenv("Daq128xSampling")) != NULL) {
- sample_128x = simple_strtol(ep, NULL, 10);
- if (sample_128x) {
- sample_64x = 0;
- }
- else {
- sample_64x = 1;
- }
- }
- }
-
- /*
- * Stop the clocks and wait for at least 1 LRCLK period
- * to make sure the clocking has really stopped.
- */
- Daq_Stop_Clocks();
- udelay((1000000 / sample_rate) * NUM_LRCLKS_TO_STABILIZE);
-
- /*
- * Initialize the clocks with the new rates
- */
- Daq_Init_Clocks(sample_rate, sample_64x);
- sample_rate = Daq_Get_SampleRate();
-
- /*
- * Start the clocks and wait for at least 1 LRCLK period
- * to make sure the clocking has become stable.
- */
- Daq_Start_Clocks(sample_rate);
- udelay((1000000 / sample_rate) * NUM_LRCLKS_TO_STABILIZE);
-
- sprintf(str_buf, "%d", sample_rate);
- setenv("DaqSampleRate", str_buf);
-
- if (sample_64x) {
- setenv("Daq64xSampling", "1");
- setenv("Daq128xSampling", NULL);
- }
- else {
- setenv("Daq64xSampling", NULL);
- setenv("Daq128xSampling", "1");
- }
-
- /*
- * Display the ADC/DAC clocking information
- */
- if (!quiet) {
- Daq_Display_Clocks();
- }
-
- /*
- * Determine the DAC data justification
- */
-
- right_just = INITIAL_RIGHT_JUST;
- if ((ep = getenv("DaqDACRightJustified")) != NULL) {
- right_just = simple_strtol(ep, NULL, 10);
- }
-
- sprintf(str_buf, "%d", right_just);
- setenv("DaqDACRightJustified", str_buf);
-
- /*
- * Determine the DAC MCLK Divide
- */
-
- mclk_divide = INITIAL_MCLK_DIVIDE;
- if ((ep = getenv("DaqDACMClockDivide")) != NULL) {
- mclk_divide = simple_strtol(ep, NULL, 10);
- }
-
- sprintf(str_buf, "%d", mclk_divide);
- setenv("DaqDACMClockDivide", str_buf);
-
- /*
- * Initializing the I2C address in the Crystal A/Ds:
- *
- * 1) Wait for VREF cap to settle (10uSec per uF)
- * 2) Release pullup on SDATA
- * 3) Write the I2C address to register 6
- * 4) Enable address matching by setting the MSB in register 7
- */
-
- if (!quiet) {
- printf("Initializing the ADC...\n");
- }
- udelay(ADC_INITIAL_DELAY); /* 10uSec per uF of VREF cap */
-
- iopa->pdat &= ~ADC_SDATA1_MASK; /* release SDATA1 */
- udelay(ADC_SDATA_DELAY); /* arbitrary settling time */
-
- i2c_reg_write(0x00, 0x06, I2C_ADC_1_ADDR); /* set address */
- i2c_reg_write(I2C_ADC_1_ADDR, 0x07, /* turn on ADDREN */
- ADC_REG7_ADDR_ENABLE);
-
- i2c_reg_write(I2C_ADC_1_ADDR, 0x02, /* 128x, slave mode, !HPEN */
- (sample_64x ? 0 : ADC_REG2_128x) |
- ADC_REG2_HIGH_PASS_DIS |
- ADC_REG2_SLAVE_MODE);
-
- reg = i2c_reg_read(I2C_ADC_1_ADDR, 0x06) & 0x7F;
- if(reg != I2C_ADC_1_ADDR)
- printf("Init of ADC U10 failed: address is 0x%02X should be 0x%02X\n",
- reg, I2C_ADC_1_ADDR);
-
- iopa->pdat &= ~ADC_SDATA2_MASK; /* release SDATA2 */
- udelay(ADC_SDATA_DELAY); /* arbitrary settling time */
-
- i2c_reg_write(0x00, 0x06, I2C_ADC_2_ADDR); /* set address (do not set ADDREN yet) */
-
- i2c_reg_write(I2C_ADC_2_ADDR, 0x02, /* 64x, slave mode, !HPEN */
- (sample_64x ? 0 : ADC_REG2_128x) |
- ADC_REG2_HIGH_PASS_DIS |
- ADC_REG2_SLAVE_MODE);
-
- reg = i2c_reg_read(I2C_ADC_2_ADDR, 0x06) & 0x7F;
- if(reg != I2C_ADC_2_ADDR)
- printf("Init of ADC U15 failed: address is 0x%02X should be 0x%02X\n",
- reg, I2C_ADC_2_ADDR);
-
- i2c_reg_write(I2C_ADC_1_ADDR, 0x01, /* set FSTART and GNDCAL */
- ADC_REG1_FRAME_START |
- ADC_REG1_GROUND_CAL);
-
- i2c_reg_write(I2C_ADC_1_ADDR, 0x02, /* Start calibration */
- (sample_64x ? 0 : ADC_REG2_128x) |
- ADC_REG2_CAL |
- ADC_REG2_HIGH_PASS_DIS |
- ADC_REG2_SLAVE_MODE);
-
- udelay(ADC_CAL_DELAY); /* a minimum of 4100 LRCLKs */
- i2c_reg_write(I2C_ADC_1_ADDR, 0x01, 0x00); /* remove GNDCAL */
-
- /*
- * Now that we have synchronized the ADC's, enable address
- * selection on the second ADC as well as the first.
- */
- i2c_reg_write(I2C_ADC_2_ADDR, 0x07, ADC_REG7_ADDR_ENABLE);
-
- /*
- * Initialize the Crystal DAC
- *
- * Two of the config lines are used for I2C so we have to set them
- * to the proper initialization state without inadvertantly
- * sending an I2C "start" sequence. When we bring the I2C back to
- * the normal state, we send an I2C "stop" sequence.
- */
- if (!quiet) {
- printf("Initializing the DAC...\n");
- }
-
- /*
- * Bring the I2C clock and data lines low for initialization
- */
- I2C_SCL(0);
- I2C_DELAY;
- I2C_SDA(0);
- I2C_ACTIVE;
- I2C_DELAY;
-
- /* Reset the DAC */
- iopa->pdat &= ~DAC_RST_MASK;
- udelay(DAC_RESET_DELAY);
-
- /* Release the DAC reset */
- iopa->pdat |= DAC_RST_MASK;
- udelay(DAC_INITIAL_DELAY);
-
- /*
- * Cause the DAC to:
- * Enable control port (I2C mode)
- * Going into power down
- */
- i2c_reg_write(I2C_DAC_ADDR, 0x05,
- DAC_REG5_I2C_MODE |
- DAC_REG5_POWER_DOWN);
-
- /*
- * Cause the DAC to:
- * Enable control port (I2C mode)
- * Going into power down
- * . MCLK divide by 1
- * . MCLK divide by 2
- */
- i2c_reg_write(I2C_DAC_ADDR, 0x05,
- DAC_REG5_I2C_MODE |
- DAC_REG5_POWER_DOWN |
- (mclk_divide ? DAC_REG5_MCLK_DIV : 0));
-
- /*
- * Cause the DAC to:
- * Auto-mute disabled
- * . Format 0, left justified 24 bits
- * . Format 3, right justified 24 bits
- * No de-emphasis
- * . Single speed mode
- * . Double speed mode
- */
- i2c_reg_write(I2C_DAC_ADDR, 0x01,
- (right_just ? DAC_REG1_RIGHT_JUST_24BIT :
- DAC_REG1_LEFT_JUST_24_BIT) |
- DAC_REG1_DEM_NO |
- (sample_rate >= 50000 ? DAC_REG1_DOUBLE : DAC_REG1_SINGLE));
-
- sprintf(str_buf, "%d",
- sample_rate >= 50000 ? DAC_REG1_DOUBLE : DAC_REG1_SINGLE);
- setenv("DaqDACFunctionalMode", str_buf);
-
- /*
- * Cause the DAC to:
- * Enable control port (I2C mode)
- * Remove power down
- * . MCLK divide by 1
- * . MCLK divide by 2
- */
- i2c_reg_write(I2C_DAC_ADDR, 0x05,
- DAC_REG5_I2C_MODE |
- (mclk_divide ? DAC_REG5_MCLK_DIV : 0));
-
- /*
- * Create a I2C stop condition:
- * low->high on data while clock is high.
- */
- I2C_SCL(1);
- I2C_DELAY;
- I2C_SDA(1);
- I2C_DELAY;
- I2C_TRISTATE;
-
- if (!quiet) {
- printf("\n");
- }
-
-#ifdef CONFIG_ETHER_LOOPBACK_TEST
- /*
- * Run the Ethernet loopback test
- */
- eth_loopback_test ();
-#endif /* CONFIG_ETHER_LOOPBACK_TEST */
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
- /*
- * Turn off the RED fail LED now that we are up and running.
- */
- status_led_set(STATUS_LED_RED, STATUS_LED_OFF);
-#endif
-
- return 0;
-}
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-/*
- * Show boot status: flash the LED if something goes wrong, indicating
- * that last thing that worked and thus, by implication, what is broken.
- *
- * This stores the last OK value in RAM so this will not work properly
- * before RAM is initialized. Since it is being used for indicating
- * boot status (i.e. after RAM is initialized), that is OK.
- */
-static void flash_code(uchar number, uchar modulo, uchar digits)
-{
- int j;
-
- /*
- * Recursively do upper digits.
- */
- if(digits > 1) {
- flash_code(number / modulo, modulo, digits - 1);
- }
-
- number = number % modulo;
-
- /*
- * Zero is indicated by one long flash (dash).
- */
- if(number == 0) {
- status_led_set(STATUS_LED_BOOT, STATUS_LED_ON);
- udelay(1000000);
- status_led_set(STATUS_LED_BOOT, STATUS_LED_OFF);
- udelay(200000);
- } else {
- /*
- * Non-zero is indicated by short flashes, one per count.
- */
- for(j = 0; j < number; j++) {
- status_led_set(STATUS_LED_BOOT, STATUS_LED_ON);
- udelay(100000);
- status_led_set(STATUS_LED_BOOT, STATUS_LED_OFF);
- udelay(200000);
- }
- }
- /*
- * Inter-digit pause: we've already waited 200 mSec, wait 1 sec total
- */
- udelay(700000);
-}
-
-static int last_boot_progress;
-
-void show_boot_progress (int status)
-{
- int i,j;
- if(status > 0) {
- last_boot_progress = status;
- } else {
- /*
- * If a specific failure code is given, flash this code
- * else just use the last success code we've seen
- */
- if(status < -1)
- last_boot_progress = -status;
-
- /*
- * Flash this code 5 times
- */
- for(j=0; j<5; j++) {
- /*
- * Houston, we have a problem.
- * Blink the last OK status which indicates where things failed.
- */
- status_led_set(STATUS_LED_RED, STATUS_LED_ON);
- flash_code(last_boot_progress, 5, 3);
-
- /*
- * Delay 5 seconds between repetitions,
- * with the fault LED blinking
- */
- for(i=0; i<5; i++) {
- status_led_set(STATUS_LED_RED, STATUS_LED_OFF);
- udelay(500000);
- status_led_set(STATUS_LED_RED, STATUS_LED_ON);
- udelay(500000);
- }
- }
-
- /*
- * Reset the board to retry initialization.
- */
- do_reset (NULL, 0, 0, NULL);
- }
-}
-#endif /* CONFIG_SHOW_BOOT_PROGRESS */
-
-
-/*
- * The following are used to control the SPI chip selects for the SPI command.
- */
-#if (CONFIG_COMMANDS & CFG_CMD_SPI)
-
-#define SPI_ADC_CS_MASK 0x00000800
-#define SPI_DAC_CS_MASK 0x00001000
-
-void spi_adc_chipsel(int cs)
-{
- volatile ioport_t *iopd = ioport_addr((immap_t *)CFG_IMMR, 3 /* port D */);
-
- if(cs)
- iopd->pdat &= ~SPI_ADC_CS_MASK; /* activate the chip select */
- else
- iopd->pdat |= SPI_ADC_CS_MASK; /* deactivate the chip select */
-}
-
-void spi_dac_chipsel(int cs)
-{
- volatile ioport_t *iopd = ioport_addr((immap_t *)CFG_IMMR, 3 /* port D */);
-
- if(cs)
- iopd->pdat &= ~SPI_DAC_CS_MASK; /* activate the chip select */
- else
- iopd->pdat |= SPI_DAC_CS_MASK; /* deactivate the chip select */
-}
-
-/*
- * The SPI command uses this table of functions for controlling the SPI
- * chip selects: it calls the appropriate function to control the SPI
- * chip selects.
- */
-spi_chipsel_type spi_chipsel[] = {
- spi_adc_chipsel,
- spi_dac_chipsel
-};
-int spi_chipsel_cnt = sizeof(spi_chipsel) / sizeof(spi_chipsel[0]);
-
-#endif /* CFG_CMD_SPI */
-
-#endif /* CONFIG_MISC_INIT_R */
-
-#ifdef CONFIG_POST
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed(void)
-{
- return 0; /* No hotkeys supported */
-}
-
-#endif
diff --git a/board/sacsng/u-boot.lds b/board/sacsng/u-boot.lds
deleted file mode 100644
index 9e623d0b93..0000000000
--- a/board/sacsng/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (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
- */
-
-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/mpc8260/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/sandburst/common/flash.c b/board/sandburst/common/flash.c
deleted file mode 100644
index 762fb738fd..0000000000
--- a/board/sandburst/common/flash.c
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- * (C) Copyright 2002-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002 Jun Gu <jung@artesyncp.com>
- * Add support for Am29F016D and dynamic switch setting.
- *
- * 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
- */
-/*
- * Ported from Ebony flash support
- * Travis B. Sawyer
- * Sandburst Corporation
- */
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-
-#undef DEBUG
-#ifdef DEBUG
-#define DEBUGF(x...) printf(x)
-#else
-#define DEBUGF(x...)
-#endif /* DEBUG */
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-static unsigned long flash_addr_table[8][CFG_MAX_FLASH_BANKS] = {
- {0xfff80000} /* Boot Flash */
-};
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-
-#define ADDR0 0x5555
-#define ADDR1 0x2aaa
-#define FLASH_WORD_SIZE unsigned char
-
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long total_b = 0;
- unsigned long size_b[CFG_MAX_FLASH_BANKS];
- unsigned short index = 0;
- int i;
-
-
- DEBUGF("\n");
- DEBUGF("FLASH: Index: %d\n", index);
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
-
- /* check whether the address is 0 */
- if (flash_addr_table[index][i] == 0) {
- continue;
- }
-
- /* call flash_get_size() to initialize sector address */
- size_b[i] = flash_get_size(
- (vu_long *)flash_addr_table[index][i], &flash_info[i]);
- flash_info[i].size = size_b[i];
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
- i, size_b[i], size_b[i]<<20);
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
- }
-
- total_b += flash_info[i].size;
- }
-
- return total_b;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040: printf ("AM29F040 (512 Kbit, uniform sector size)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++)
- {
- if (*flash++ != 0xffffffff)
- {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " "
- );
- }
- printf ("\n");
- return;
- }
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- FLASH_WORD_SIZE value;
- ulong base = (ulong)addr;
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)addr;
-
- DEBUGF("FLASH ADDR: %08x\n", (unsigned)addr );
-
- /* Write auto select command: read Manufacturer ID */
- udelay(10000);
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- udelay(1000);
- addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- udelay(1000);
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00900090;
- udelay(1000);
-
- value = addr2[0];
-
- DEBUGF("FLASH MANUFACT: %x\n", value);
-
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[1]; /* device ID */
-
- DEBUGF("\nFLASH DEVICEID: %x\n", value);
-
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000; /* => 512 kb */
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if (info->flash_id == FLASH_AM040) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
- }
-
- /* reset to return to reading data */
- addr2[0] = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (FLASH_WORD_SIZE *)info->start[0];
- *addr2 = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-int wait_for_DQ7(flash_info_t *info, int sect)
-{
- ulong start, now, last;
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[sect]);
-
- start = get_timer (0);
- last = start;
- while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return -1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
- volatile FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- int i;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (FLASH_WORD_SIZE *)(info->start[sect]);
- DEBUGF("Erasing sector %p\n", addr2);
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (FLASH_WORD_SIZE)0x00500050; /* block erase */
- for (i=0; i<50; i++)
- udelay(1000); /* wait 1 ms */
- } else {
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (FLASH_WORD_SIZE)0x00300030; /* sector erase */
- }
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- wait_for_DQ7(info, sect);
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *) (info->start[0]);
- volatile FLASH_WORD_SIZE *dest2 = (FLASH_WORD_SIZE *) dest;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *) & data;
- ulong start;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile FLASH_WORD_SIZE *) dest) &
- (FLASH_WORD_SIZE) data) != (FLASH_WORD_SIZE) data) {
- return (2);
- }
-
- for (i = 0; i < 4 / sizeof (FLASH_WORD_SIZE); i++) {
- int flag;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE) 0x00800080)) {
-
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
diff --git a/board/sandburst/common/ppc440gx_i2c.c b/board/sandburst/common/ppc440gx_i2c.c
deleted file mode 100644
index 859dd7afe5..0000000000
--- a/board/sandburst/common/ppc440gx_i2c.c
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- * Copyright (C) 2005 Sandburst Corporation
- *
- * 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
- */
-
-/*
- * Ported from cpu/ppc4xx/i2c.c by AS HARNOIS by
- * Travis B. Sawyer
- * Sandburst Corporation.
- */
-#include <common.h>
-#include <ppc4xx.h>
-#if defined(CONFIG_440)
-# include <440_i2c.h>
-#else
-# include <405gp_i2c.h>
-#endif
-#include <i2c.h>
-#include <440_i2c.h>
-#include <command.h>
-#include "ppc440gx_i2c.h"
-
-#ifdef CONFIG_I2C_BUS1
-
-#define IIC_OK 0
-#define IIC_NOK 1
-#define IIC_NOK_LA 2 /* Lost arbitration */
-#define IIC_NOK_ICT 3 /* Incomplete transfer */
-#define IIC_NOK_XFRA 4 /* Transfer aborted */
-#define IIC_NOK_DATA 5 /* No data in buffer */
-#define IIC_NOK_TOUT 6 /* Transfer timeout */
-
-#define IIC_TIMEOUT 1 /* 1 second */
-#if defined(CFG_I2C_NOPROBES)
-static uchar i2c_no_probes[] = CFG_I2C_NOPROBES;
-#endif
-
-static void _i2c_bus1_reset (void)
-{
- int i, status;
-
- /* Reset status register */
- /* write 1 in SCMP and IRQA to clear these fields */
- out8 (IIC_STS1, 0x0A);
-
- /* write 1 in IRQP IRQD LA ICT XFRA to clear these fields */
- out8 (IIC_EXTSTS1, 0x8F);
- __asm__ volatile ("eieio");
-
- /*
- * Get current state, reset bus
- * only if no transfers are pending.
- */
- i = 10;
- do {
- /* Get status */
- status = in8 (IIC_STS1);
- udelay (500); /* 500us */
- i--;
- } while ((status & IIC_STS_PT) && (i > 0));
- /* Soft reset controller */
- status = in8 (IIC_XTCNTLSS1);
- out8 (IIC_XTCNTLSS1, (status | IIC_XTCNTLSS_SRST));
- __asm__ volatile ("eieio");
-
- /* make sure where in initial state, data hi, clock hi */
- out8 (IIC_DIRECTCNTL1, 0xC);
- for (i = 0; i < 10; i++) {
- if ((in8 (IIC_DIRECTCNTL1) & 0x3) != 0x3) {
- /* clock until we get to known state */
- out8 (IIC_DIRECTCNTL1, 0x8); /* clock lo */
- udelay (100); /* 100us */
- out8 (IIC_DIRECTCNTL1, 0xC); /* clock hi */
- udelay (100); /* 100us */
- } else {
- break;
- }
- }
- /* send start condition */
- out8 (IIC_DIRECTCNTL1, 0x4);
- udelay (1000); /* 1ms */
- /* send stop condition */
- out8 (IIC_DIRECTCNTL1, 0xC);
- udelay (1000); /* 1ms */
- /* Unreset controller */
- out8 (IIC_XTCNTLSS1, (status & ~IIC_XTCNTLSS_SRST));
- udelay (1000); /* 1ms */
-}
-
-void i2c1_init (int speed, int slaveadd)
-{
- sys_info_t sysInfo;
- unsigned long freqOPB;
- int val, divisor;
-
-#ifdef CFG_I2C_INIT_BOARD
- /* call board specific i2c bus reset routine before accessing the */
- /* environment, which might be in a chip on that bus. For details */
- /* about this problem see doc/I2C_Edge_Conditions. */
- i2c_init_board();
-#endif
-
- /* Handle possible failed I2C state */
- /* FIXME: put this into i2c_init_board()? */
- _i2c_bus1_reset ();
-
- /* clear lo master address */
- out8 (IIC_LMADR1, 0);
-
- /* clear hi master address */
- out8 (IIC_HMADR1, 0);
-
- /* clear lo slave address */
- out8 (IIC_LSADR1, 0);
-
- /* clear hi slave address */
- out8 (IIC_HSADR1, 0);
-
- /* Clock divide Register */
- /* get OPB frequency */
- get_sys_info (&sysInfo);
- freqOPB = sysInfo.freqPLB / sysInfo.pllOpbDiv;
- /* set divisor according to freqOPB */
- divisor = (freqOPB - 1) / 10000000;
- if (divisor == 0)
- divisor = 1;
- out8 (IIC_CLKDIV1, divisor);
-
- /* no interrupts */
- out8 (IIC_INTRMSK1, 0);
-
- /* clear transfer count */
- out8 (IIC_XFRCNT1, 0);
-
- /* clear extended control & stat */
- /* write 1 in SRC SRS SWC SWS to clear these fields */
- out8 (IIC_XTCNTLSS1, 0xF0);
-
- /* Mode Control Register
- Flush Slave/Master data buffer */
- out8 (IIC_MDCNTL1, IIC_MDCNTL_FSDB | IIC_MDCNTL_FMDB);
- __asm__ volatile ("eieio");
-
-
- val = in8(IIC_MDCNTL1);
- __asm__ volatile ("eieio");
-
- /* Ignore General Call, slave transfers are ignored,
- disable interrupts, exit unknown bus state, enable hold
- SCL
- 100kHz normaly or FastMode for 400kHz and above
- */
-
- val |= IIC_MDCNTL_EUBS|IIC_MDCNTL_HSCL;
- if( speed >= 400000 ){
- val |= IIC_MDCNTL_FSM;
- }
- out8 (IIC_MDCNTL1, val);
-
- /* clear control reg */
- out8 (IIC_CNTL1, 0x00);
- __asm__ volatile ("eieio");
-
-}
-
-/*
- This code tries to use the features of the 405GP i2c
- controller. It will transfer up to 4 bytes in one pass
- on the loop. It only does out8(lbz) to the buffer when it
- is possible to do out16(lhz) transfers.
-
- cmd_type is 0 for write 1 for read.
-
- addr_len can take any value from 0-255, it is only limited
- by the char, we could make it larger if needed. If it is
- 0 we skip the address write cycle.
-
- Typical case is a Write of an addr followd by a Read. The
- IBM FAQ does not cover this. On the last byte of the write
- we don't set the creg CHT bit, and on the first bytes of the
- read we set the RPST bit.
-
- It does not support address only transfers, there must be
- a data part. If you want to write the address yourself, put
- it in the data pointer.
-
- It does not support transfer to/from address 0.
-
- It does not check XFRCNT.
-*/
-static
-int i2c_transfer1(unsigned char cmd_type,
- unsigned char chip,
- unsigned char addr[],
- unsigned char addr_len,
- unsigned char data[],
- unsigned short data_len )
-{
- unsigned char* ptr;
- int reading;
- int tran,cnt;
- int result;
- int status;
- int i;
- uchar creg;
-
- if( data == 0 || data_len == 0 ){
- /*Don't support data transfer of no length or to address 0*/
- printf( "i2c_transfer: bad call\n" );
- return IIC_NOK;
- }
- if( addr && addr_len ){
- ptr = addr;
- cnt = addr_len;
- reading = 0;
- }else{
- ptr = data;
- cnt = data_len;
- reading = cmd_type;
- }
-
- /*Clear Stop Complete Bit*/
- out8(IIC_STS1,IIC_STS_SCMP);
- /* Check init */
- i=10;
- do {
- /* Get status */
- status = in8(IIC_STS1);
- __asm__ volatile("eieio");
- i--;
- } while ((status & IIC_STS_PT) && (i>0));
-
- if (status & IIC_STS_PT) {
- result = IIC_NOK_TOUT;
- return(result);
- }
- /*flush the Master/Slave Databuffers*/
- out8(IIC_MDCNTL1, ((in8(IIC_MDCNTL1))|IIC_MDCNTL_FMDB|IIC_MDCNTL_FSDB));
- /*need to wait 4 OPB clocks? code below should take that long*/
-
- /* 7-bit adressing */
- out8(IIC_HMADR1,0);
- out8(IIC_LMADR1, chip);
- __asm__ volatile("eieio");
-
- tran = 0;
- result = IIC_OK;
- creg = 0;
-
- while ( tran != cnt && (result == IIC_OK)) {
- int bc,j;
-
- /* Control register =
- Normal transfer, 7-bits adressing, Transfer up to bc bytes, Normal start,
- Transfer is a sequence of transfers
- */
- creg |= IIC_CNTL_PT;
-
- bc = (cnt - tran) > 4 ? 4 :
- cnt - tran;
- creg |= (bc-1)<<4;
- /* if the real cmd type is write continue trans*/
- if ( (!cmd_type && (ptr == addr)) || ((tran+bc) != cnt) )
- creg |= IIC_CNTL_CHT;
-
- if (reading)
- creg |= IIC_CNTL_READ;
- else {
- for(j=0; j<bc; j++) {
- /* Set buffer */
- out8(IIC_MDBUF1,ptr[tran+j]);
- __asm__ volatile("eieio");
- }
- }
- out8(IIC_CNTL1, creg );
- __asm__ volatile("eieio");
-
- /* Transfer is in progress
- we have to wait for upto 5 bytes of data
- 1 byte chip address+r/w bit then bc bytes
- of data.
- udelay(10) is 1 bit time at 100khz
- Doubled for slop. 20 is too small.
- */
- i=2*5*8;
- do {
- /* Get status */
- status = in8(IIC_STS1);
- __asm__ volatile("eieio");
- udelay (10);
- i--;
- } while ((status & IIC_STS_PT) && !(status & IIC_STS_ERR)
- && (i>0));
-
- if (status & IIC_STS_ERR) {
- result = IIC_NOK;
- status = in8 (IIC_EXTSTS1);
- /* Lost arbitration? */
- if (status & IIC_EXTSTS_LA)
- result = IIC_NOK_LA;
- /* Incomplete transfer? */
- if (status & IIC_EXTSTS_ICT)
- result = IIC_NOK_ICT;
- /* Transfer aborted? */
- if (status & IIC_EXTSTS_XFRA)
- result = IIC_NOK_XFRA;
- } else if ( status & IIC_STS_PT) {
- result = IIC_NOK_TOUT;
- }
- /* Command is reading => get buffer */
- if ((reading) && (result == IIC_OK)) {
- /* Are there data in buffer */
- if (status & IIC_STS_MDBS) {
- /*
- even if we have data we have to wait 4OPB clocks
- for it to hit the front of the FIFO, after that
- we can just read. We should check XFCNT here and
- if the FIFO is full there is no need to wait.
- */
- udelay (1);
- for(j=0;j<bc;j++) {
- ptr[tran+j] = in8(IIC_MDBUF1);
- __asm__ volatile("eieio");
- }
- } else
- result = IIC_NOK_DATA;
- }
- creg = 0;
- tran+=bc;
- if( ptr == addr && tran == cnt ) {
- ptr = data;
- cnt = data_len;
- tran = 0;
- reading = cmd_type;
- if( reading )
- creg = IIC_CNTL_RPST;
- }
- }
- return (result);
-}
-
-int i2c_probe1 (uchar chip)
-{
- uchar buf[1];
-
- buf[0] = 0;
-
- /*
- * What is needed is to send the chip address and verify that the
- * address was <ACK>ed (i.e. there was a chip at that address which
- * drove the data line low).
- */
- return(i2c_transfer1 (1, chip << 1, 0,0, buf, 1) != 0);
-}
-
-
-int i2c_read1 (uchar chip, uint addr, int alen, uchar * buffer, int len)
-{
- uchar xaddr[4];
- int ret;
-
- if ( alen > 4 ) {
- printf ("I2C read: addr len %d not supported\n", alen);
- return 1;
- }
-
- if ( alen > 0 ) {
- xaddr[0] = (addr >> 24) & 0xFF;
- xaddr[1] = (addr >> 16) & 0xFF;
- xaddr[2] = (addr >> 8) & 0xFF;
- xaddr[3] = addr & 0xFF;
- }
-
-
-#ifdef CFG_I2C_EEPROM_ADDR_OVERFLOW
- /*
- * EEPROM chips that implement "address overflow" are ones
- * like Catalyst 24WC04/08/16 which has 9/10/11 bits of
- * address and the extra bits end up in the "chip address"
- * bit slots. This makes a 24WC08 (1Kbyte) chip look like
- * four 256 byte chips.
- *
- * Note that we consider the length of the address field to
- * still be one byte because the extra address bits are
- * hidden in the chip address.
- */
- if( alen > 0 )
- chip |= ((addr >> (alen * 8)) & CFG_I2C_EEPROM_ADDR_OVERFLOW);
-#endif
- if( (ret = i2c_transfer1( 1, chip<<1, &xaddr[4-alen], alen, buffer, len )) != 0) {
- printf( "I2c read: failed %d\n", ret);
- return 1;
- }
- return 0;
-}
-
-int i2c_write1 (uchar chip, uint addr, int alen, uchar * buffer, int len)
-{
- uchar xaddr[4];
-
- if ( alen > 4 ) {
- printf ("I2C write: addr len %d not supported\n", alen);
- return 1;
-
- }
- if ( alen > 0 ) {
- xaddr[0] = (addr >> 24) & 0xFF;
- xaddr[1] = (addr >> 16) & 0xFF;
- xaddr[2] = (addr >> 8) & 0xFF;
- xaddr[3] = addr & 0xFF;
- }
-
-#ifdef CFG_I2C_EEPROM_ADDR_OVERFLOW
- /*
- * EEPROM chips that implement "address overflow" are ones
- * like Catalyst 24WC04/08/16 which has 9/10/11 bits of
- * address and the extra bits end up in the "chip address"
- * bit slots. This makes a 24WC08 (1Kbyte) chip look like
- * four 256 byte chips.
- *
- * Note that we consider the length of the address field to
- * still be one byte because the extra address bits are
- * hidden in the chip address.
- */
- if( alen > 0 )
- chip |= ((addr >> (alen * 8)) & CFG_I2C_EEPROM_ADDR_OVERFLOW);
-#endif
-
- return (i2c_transfer1( 0, chip<<1, &xaddr[4-alen], alen, buffer, len ) != 0);
-}
-
-/*-----------------------------------------------------------------------
- * Read a register
- */
-uchar i2c_reg_read1(uchar i2c_addr, uchar reg)
-{
- uchar buf;
-
- i2c_read1(i2c_addr, reg, 1, &buf, (uchar)1);
-
- return(buf);
-}
-
-/*-----------------------------------------------------------------------
- * Write a register
- */
-void i2c_reg_write1(uchar i2c_addr, uchar reg, uchar val)
-{
- i2c_write1(i2c_addr, reg, 1, &val, 1);
-}
-
-
-int do_i2c1_probe(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int j;
-#if defined(CFG_I2C_NOPROBES)
- int k, skip;
-#endif
-
- puts ("Valid chip addresses:");
- for(j = 0; j < 128; j++) {
-#if defined(CFG_I2C_NOPROBES)
- skip = 0;
- for (k = 0; k < sizeof(i2c_no_probes); k++){
- if (j == i2c_no_probes[k]){
- skip = 1;
- break;
- }
- }
- if (skip)
- continue;
-#endif
- if(i2c_probe1(j) == 0) {
- printf(" %02X", j);
- }
- }
- putc ('\n');
-
-#if defined(CFG_I2C_NOPROBES)
- puts ("Excluded chip addresses:");
- for( k = 0; k < sizeof(i2c_no_probes); k++ )
- printf(" %02X", i2c_no_probes[k] );
- putc ('\n');
-#endif
-
- return 0;
-}
-
-U_BOOT_CMD(
- iprobe1, 1, 1, do_i2c1_probe,
- "iprobe1 - probe to discover valid I2C chip addresses\n",
- "\n -discover valid I2C chip addresses\n"
-);
-
-#endif /* CONFIG_I2C_BUS1 */
diff --git a/board/sandburst/common/ppc440gx_i2c.h b/board/sandburst/common/ppc440gx_i2c.h
deleted file mode 100644
index cd4fc86661..0000000000
--- a/board/sandburst/common/ppc440gx_i2c.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2005 Sandburst Corporation
- *
- * 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
- */
-
-/*
- * Ported from i2c driver for ppc4xx by AS HARNOIS by
- * Travis B. Sawyer
- * Sandburst Corporation
- */
-#include <common.h>
-#include <ppc4xx.h>
-#if defined(CONFIG_440)
-# include <440_i2c.h>
-#else
-# include <405gp_i2c.h>
-#endif
-#include <i2c.h>
-
-#ifdef CONFIG_HARD_I2C
-
-#define I2C_BUS1_BASE_ADDR (CFG_PERIPHERAL_BASE + 0x00000500)
-#define I2C_REGISTERS_BUS1_BASE_ADDRESS I2C_BUS1_BASE_ADDR
-#define IIC_MDBUF1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICMDBUF)
-#define IIC_SDBUF1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICSDBUF)
-#define IIC_LMADR1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICLMADR)
-#define IIC_HMADR1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICHMADR)
-#define IIC_CNTL1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICCNTL)
-#define IIC_MDCNTL1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICMDCNTL)
-#define IIC_STS1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICSTS)
-#define IIC_EXTSTS1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICEXTSTS)
-#define IIC_LSADR1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICLSADR)
-#define IIC_HSADR1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICHSADR)
-#define IIC_CLKDIV1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICCLKDIV)
-#define IIC_INTRMSK1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICINTRMSK)
-#define IIC_XFRCNT1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICXFRCNT)
-#define IIC_XTCNTLSS1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICXTCNTLSS)
-#define IIC_DIRECTCNTL1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICDIRECTCNTL)
-
-void i2c1_init (int speed, int slaveadd);
-int i2c_probe1 (uchar chip);
-int i2c_read1 (uchar chip, uint addr, int alen, uchar * buffer, int len);
-int i2c_write1 (uchar chip, uint addr, int alen, uchar * buffer, int len);
-uchar i2c_reg_read1(uchar i2c_addr, uchar reg);
-void i2c_reg_write1(uchar i2c_addr, uchar reg, uchar val);
-
-#endif /* CONFIG_HARD_I2C */
diff --git a/board/sandburst/common/sb_common.c b/board/sandburst/common/sb_common.c
deleted file mode 100644
index 7816472516..0000000000
--- a/board/sandburst/common/sb_common.c
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- * Copyright (C) 2005 Sandburst Corporation
- *
- * 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 <config.h>
-#include <common.h>
-#include <command.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <spd_sdram.h>
-#include <i2c.h>
-#include "ppc440gx_i2c.h"
-#include "sb_common.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-long int fixed_sdram (void);
-
-/*************************************************************************
- * metrobox_get_master
- *
- * PRI_N - active low signal. If the GPIO pin is low we are the master
- *
- ************************************************************************/
-int sbcommon_get_master(void)
-{
- ppc440_gpio_regs_t *gpio_regs;
-
- gpio_regs = (ppc440_gpio_regs_t *)CFG_GPIO_BASE;
-
- if (gpio_regs->in & SBCOMMON_GPIO_PRI_N) {
- return 0;
- }
- else {
- return 1;
- }
-}
-
-/*************************************************************************
- * metrobox_secondary_present
- *
- * Figure out if secondary/slave board is present
- *
- ************************************************************************/
-int sbcommon_secondary_present(void)
-{
- ppc440_gpio_regs_t *gpio_regs;
-
- gpio_regs = (ppc440_gpio_regs_t *)CFG_GPIO_BASE;
-
- if (gpio_regs->in & SBCOMMON_GPIO_SEC_PRES)
- return 0;
- else
- return 1;
-}
-
-/*************************************************************************
- * sbcommon_get_serial_number
- *
- * Retrieve the board serial number via the mac address in eeprom
- *
- ************************************************************************/
-unsigned short sbcommon_get_serial_number(void)
-{
- unsigned char buff[0x100];
- unsigned short sernum;
-
- /* Get the board serial number from eeprom */
- /* Initialize I2C */
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- /* Read 256 bytes in EEPROM */
- i2c_read (0x50, 0, 1, buff, 0x100);
-
- memcpy(&sernum, &buff[0xF4], 2);
- sernum /= 32;
-
- return (sernum);
-}
-
-/*************************************************************************
- * sbcommon_fans
- *
- * Spin up fans 2 & 3 to get some air moving. OS will take care
- * of the rest. This is mostly a precaution...
- *
- * Assumes i2c bus 1 is ready.
- *
- ************************************************************************/
-void sbcommon_fans(void)
-{
- /*
- * Attempt to turn on 2 of the fans...
- * Need to go through the bridge
- */
- puts ("FANS: ");
-
- /* select fan4 through the bridge */
- i2c_reg_write1(0x73, /* addr */
- 0x00, /* reg */
- 0x08); /* val = bus 4 */
-
- /* Turn on FAN 4 */
- i2c_reg_write1(0x2e,
- 1,
- 0x80);
-
- i2c_reg_write1(0x2e,
- 0,
- 0x19);
-
- /* Deselect bus 4 on the bridge */
- i2c_reg_write1(0x73,
- 0x00,
- 0x00);
-
- /* select fan3 through the bridge */
- i2c_reg_write1(0x73, /* addr */
- 0x00, /* reg */
- 0x04); /* val = bus 3 */
-
- /* Turn on FAN 3 */
- i2c_reg_write1(0x2e,
- 1,
- 0x80);
-
- i2c_reg_write1(0x2e,
- 0,
- 0x19);
-
- /* Deselect bus 3 on the bridge */
- i2c_reg_write1(0x73,
- 0x00,
- 0x00);
-
- /* select fan2 through the bridge */
- i2c_reg_write1(0x73, /* addr */
- 0x00, /* reg */
- 0x02); /* val = bus 4 */
-
- /* Turn on FAN 2 */
- i2c_reg_write1(0x2e,
- 1,
- 0x80);
-
- i2c_reg_write1(0x2e,
- 0,
- 0x19);
-
- /* Deselect bus 2 on the bridge */
- i2c_reg_write1(0x73,
- 0x00,
- 0x00);
-
- /* select fan1 through the bridge */
- i2c_reg_write1(0x73, /* addr */
- 0x00, /* reg */
- 0x01); /* val = bus 0 */
-
- /* Turn on FAN 1 */
- i2c_reg_write1(0x2e,
- 1,
- 0x80);
-
- i2c_reg_write1(0x2e,
- 0,
- 0x19);
-
- /* Deselect bus 1 on the bridge */
- i2c_reg_write1(0x73,
- 0x00,
- 0x00);
-
- puts ("on\n");
-
- return;
-
-}
-
-/*************************************************************************
- * initdram
- *
- * Initialize sdram
- *
- ************************************************************************/
-long int initdram (int board_type)
-{
- long dram_size = 0;
-
-#if defined(CONFIG_SPD_EEPROM)
- dram_size = spd_sdram ();
-#else
- dram_size = fixed_sdram ();
-#endif
- return dram_size;
-}
-
-
-/*************************************************************************
- * testdram
- *
- *
- ************************************************************************/
-#if defined(CFG_DRAM_TEST)
-int testdram (void)
-{
- uint *pstart = (uint *) CFG_MEMTEST_START;
- uint *pend = (uint *) CFG_MEMTEST_END;
- uint *p;
-
- printf("Testing SDRAM: ");
- for (p = pstart; p < pend; p++)
- *p = 0xaaaaaaaa;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0xaaaaaaaa) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- for (p = pstart; p < pend; p++)
- *p = 0x55555555;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0x55555555) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- printf("OK\n");
- return 0;
-}
-#endif
-
-#if !defined(CONFIG_SPD_EEPROM)
-/*************************************************************************
- * fixed sdram init -- doesn't use serial presence detect.
- *
- * Assumes: 128 MB, non-ECC, non-registered
- * PLB @ 133 MHz
- *
- ************************************************************************/
-long int fixed_sdram (void)
-{
- uint reg;
-
- /*--------------------------------------------------------------------
- * Setup some default
- *------------------------------------------------------------------*/
- mtsdram (mem_uabba, 0x00000000); /* ubba=0 (default) */
- mtsdram (mem_slio, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
- mtsdram (mem_devopt, 0x00000000); /* dll=0 ds=0 (normal) */
- mtsdram (mem_wddctr, 0x00000000); /* wrcp=0 dcd=0 */
- mtsdram (mem_clktr, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
-
- /*--------------------------------------------------------------------
- * Setup for board-specific specific mem
- *------------------------------------------------------------------*/
- /*
- * Following for CAS Latency = 2.5 @ 133 MHz PLB
- */
- mtsdram (mem_b0cr, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
- mtsdram (mem_tr0, 0x410a4012); /* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */
- /* RA=10 RD=3 */
- mtsdram (mem_tr1, 0x8080082f); /* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */
- mtsdram (mem_rtr, 0x08200000); /* Rate 15.625 ns @ 133 MHz PLB */
- mtsdram (mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM */
- udelay (400); /* Delay 200 usecs (min) */
-
- /*--------------------------------------------------------------------
- * Enable the controller, then wait for DCEN to complete
- *------------------------------------------------------------------*/
- mtsdram (mem_cfg0, 0x86000000); /* DCEN=1, PMUD=1, 64-bit */
- for (;;) {
- mfsdram (mem_mcsts, reg);
- if (reg & 0x80000000)
- break;
- }
-
- return (128 * 1024 * 1024); /* 128 MB */
-}
-#endif /* !defined(CONFIG_SPD_EEPROM) */
-
-
-/*************************************************************************
- * pci_pre_init
- *
- * This routine is called just prior to registering the hose and gives
- * the board the opportunity to check things. Returning a value of zero
- * indicates that things are bad & PCI initialization should be aborted.
- *
- * Different boards may wish to customize the pci controller structure
- * (add regions, override default access routines, etc) or perform
- * certain pre-initialization actions.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
-int pci_pre_init(struct pci_controller * hose )
-{
- unsigned long strap;
-
- /*--------------------------------------------------------------------------+
- * The metrobox is always configured as the host & requires the
- * PCI arbiter to be enabled.
- *--------------------------------------------------------------------------*/
- mfsdr(sdr_sdstp1, strap);
- if( (strap & SDR0_SDSTP1_PAE_MASK) == 0 ){
- printf("PCI: SDR0_STRP1[%08lX] - PCI Arbiter disabled.\n",strap);
- return 0;
- }
-
- return 1;
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT) */
-
-/*************************************************************************
- * pci_target_init
- *
- * The bootstrap configuration provides default settings for the pci
- * inbound map (PIM). But the bootstrap config choices are limited and
- * may not be sufficient for a given board.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT)
-void pci_target_init(struct pci_controller * hose )
-{
- /*--------------------------------------------------------------------------+
- * Disable everything
- *--------------------------------------------------------------------------*/
- out32r( PCIX0_PIM0SA, 0 ); /* disable */
- out32r( PCIX0_PIM1SA, 0 ); /* disable */
- out32r( PCIX0_PIM2SA, 0 ); /* disable */
- out32r( PCIX0_EROMBA, 0 ); /* disable expansion rom */
-
- /*--------------------------------------------------------------------------+
- * Map all of SDRAM to PCI address 0x0000_0000. Note that the 440 strapping
- * options to not support sizes such as 128/256 MB.
- *--------------------------------------------------------------------------*/
- out32r( PCIX0_PIM0LAL, CFG_SDRAM_BASE );
- out32r( PCIX0_PIM0LAH, 0 );
- out32r( PCIX0_PIM0SA, ~(gd->ram_size - 1) | 1 );
-
- out32r( PCIX0_BAR0, 0 );
-
- /*--------------------------------------------------------------------------+
- * Program the board's subsystem id/vendor id
- *--------------------------------------------------------------------------*/
- out16r( PCIX0_SBSYSVID, CFG_PCI_SUBSYS_VENDORID );
- out16r( PCIX0_SBSYSID, CFG_PCI_SUBSYS_DEVICEID );
-
- out16r( PCIX0_CMD, in16r(PCIX0_CMD) | PCI_COMMAND_MEMORY );
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT) */
-
-
-/*************************************************************************
- * is_pci_host
- *
- *
- ************************************************************************/
-#if defined(CONFIG_PCI)
-int is_pci_host(struct pci_controller *hose)
-{
- /* The metrobox is always configured as host. */
- return(1);
-}
-#endif /* defined(CONFIG_PCI) */
-
-/*************************************************************************
- * board_get_enetaddr
- *
- * Get the ethernet MAC address for the management ethernet from the
- * strap EEPROM. Note that is the BASE address for the range of
- * external ethernet MACs on the board. The base + 31 is the actual
- * mgmt mac address.
- *
- ************************************************************************/
-static int macaddr_idx = 0;
-
-void board_get_enetaddr (uchar * enet)
-{
- int i;
- unsigned short tmp;
- unsigned char buff[0x100], *cp;
-
- if (0 == macaddr_idx) {
-
- /* Initialize I2C */
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- /* Read 256 bytes in EEPROM */
- i2c_read (0x50, 0, 1, buff, 0x100);
-
- cp = &buff[0xF0];
-
- for (i = 0; i < 6; i++,cp++)
- enet[i] = *cp;
-
- memcpy(&tmp, &enet[4], 2);
- tmp += 31;
- memcpy(&enet[4], &tmp, 2);
-
- macaddr_idx++;
- } else {
- enet[0] = 0x02;
- enet[1] = 0x00;
- enet[2] = 0x00;
- enet[3] = 0x00;
- enet[4] = 0x00;
- if (1 == sbcommon_get_master() ) {
- /* Master/Primary card */
- enet[5] = 0x01;
- } else {
- /* Slave/Secondary card */
- enet [5] = 0x02;
- }
- }
-
- return;
-}
-
-#ifdef CONFIG_POST
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed(void)
-{
-
- return (ctrlc());
-}
-#endif
diff --git a/board/sandburst/common/sb_common.h b/board/sandburst/common/sb_common.h
deleted file mode 100644
index 888e4f01eb..0000000000
--- a/board/sandburst/common/sb_common.h
+++ /dev/null
@@ -1,76 +0,0 @@
-#ifndef __SBCOMMON_H__
-#define __SBCOMMON_H__
-/*
- * Copyright (C) 2005 Sandburst Corporation
- *
- * 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 <config.h>
-#include <common.h>
-#include <command.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <spd_sdram.h>
-#include <i2c.h>
-#include "ppc440gx_i2c.h"
-
-/*
- * GPIO Settings
- */
-/* Chassis settings */
-#define SBCOMMON_GPIO_PRI_N 0x00001000 /* 0 = Chassis Master, 1 = Slave */
-#define SBCOMMON_GPIO_SEC_PRES 0x00000800 /* 1 = Other board present */
-
-/* Debug LEDs */
-#define SBCOMMON_GPIO_DBGLED_0 0x00000400
-#define SBCOMMON_GPIO_DBGLED_1 0x00000200
-#define SBCOMMON_GPIO_DBGLED_2 0x00100000
-#define SBCOMMON_GPIO_DBGLED_3 0x00000100
-
-#define SBCOMMON_GPIO_DBGLEDS (SBCOMMON_GPIO_DBGLED_0 | \
- SBCOMMON_GPIO_DBGLED_1 | \
- SBCOMMON_GPIO_DBGLED_2 | \
- SBCOMMON_GPIO_DBGLED_3)
-
-#define SBCOMMON_GPIO_SYS_FAULT 0x00000080
-#define SBCOMMON_GPIO_SYS_OTEMP 0x00000040
-#define SBCOMMON_GPIO_SYS_STATUS 0x00000020
-
-#define SBCOMMON_GPIO_SYS_LEDS (SBCOMMON_GPIO_SYS_STATUS)
-
-#define SBCOMMON_GPIO_LEDS (SBCOMMON_GPIO_DBGLED_0 | \
- SBCOMMON_GPIO_DBGLED_1 | \
- SBCOMMON_GPIO_DBGLED_2 | \
- SBCOMMON_GPIO_DBGLED_3 | \
- SBCOMMON_GPIO_SYS_STATUS)
-
-typedef struct ppc440_gpio_regs {
- volatile unsigned long out;
- volatile unsigned long tri_state;
- volatile unsigned long dummy[4];
- volatile unsigned long open_drain;
- volatile unsigned long in;
-} __attribute__((packed)) ppc440_gpio_regs_t;
-
-int sbcommon_get_master(void);
-int sbcommon_secondary_present(void);
-unsigned short sbcommon_get_serial_number(void);
-void sbcommon_fans(void);
-
-#endif /* __SBCOMMON_H__ */
diff --git a/board/sandpoint/Makefile b/board/sandpoint/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/sandpoint/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/sandpoint/README b/board/sandpoint/README
deleted file mode 100644
index 9e48168a24..0000000000
--- a/board/sandpoint/README
+++ /dev/null
@@ -1,15 +0,0 @@
-This port of U-Boot will run on a Motorola Sandpoint 3 development
-system equipped with a Unity X4 PPMC card (MPC8240 CPU) only. It is a
-snapshot of work in progress and far from being completed. In order
-to run it on the target system, it has to be downloaded using the
-DINK32 monitor program that came with your Sandpoint system. Please
-note that DINK32 does not accept the S-Record file created by the
-U-Boot build process unmodified, because it contains CR/LF line
-terminators. You have to strip the CR characters first. There is a
-tiny script named 'dinkdl' I created for this purpose.
-
-The Sandpoint port is based on the work of Rob Taylor, who does not
-seem to maintain it any more. I can be reached by mail as
-tkoeller@gmx.net.
-
-Thomas Koeller
diff --git a/board/sandpoint/config.mk b/board/sandpoint/config.mk
deleted file mode 100644
index b3f65ebe58..0000000000
--- a/board/sandpoint/config.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# (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
-#
-
-#
-# Sandpoint boards
-#
-
-#TEXT_BASE = 0x00090000
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/sandpoint/dinkdl b/board/sandpoint/dinkdl
deleted file mode 100644
index f281452eb3..0000000000
--- a/board/sandpoint/dinkdl
+++ /dev/null
@@ -1,2 +0,0 @@
-#! /bin/bash
-tr -d "\r" <$1 >/dev/tts/1
diff --git a/board/sandpoint/early_init.S b/board/sandpoint/early_init.S
deleted file mode 100644
index 07dafb716f..0000000000
--- a/board/sandpoint/early_init.S
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * (C) Copyright 2001
- * Thomas Koeller, tkoeller@gmx.net
- *
- * 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 __ASSEMBLY__
-#define __ASSEMBLY__ 1
-#endif
-
-#include <config.h>
-#include <asm/processor.h>
-#include <mpc824x.h>
-#include <ppc_asm.tmpl>
-
-#if defined(USE_DINK32)
- /* We are running from RAM, so do not clear the MCCR1_MEMGO bit! */
- #define MCCR1VAL ((CFG_ROMNAL << MCCR1_ROMNAL_SHIFT) | (CFG_ROMFAL << MCCR1_ROMFAL_SHIFT) | MCCR1_MEMGO)
-#else
- #define MCCR1VAL (CFG_ROMNAL << MCCR1_ROMNAL_SHIFT) | (CFG_ROMFAL << MCCR1_ROMFAL_SHIFT)
-#endif
-
- .text
-
- /* Values to program into memory controller registers */
-tbl: .long MCCR1, MCCR1VAL
- .long MCCR2, CFG_REFINT << MCCR2_REFINT_SHIFT
- .long MCCR3
- .long (((CFG_BSTOPRE & 0x000000f0) >> 4) << MCCR3_BSTOPRE2TO5_SHIFT) | \
- (CFG_REFREC << MCCR3_REFREC_SHIFT) | \
- (CFG_RDLAT << MCCR3_RDLAT_SHIFT)
- .long MCCR4
- .long (CFG_PRETOACT << MCCR4_PRETOACT_SHIFT) | (CFG_ACTTOPRE << MCCR4_ACTTOPRE_SHIFT) | \
- (CFG_REGISTERD_TYPE_BUFFER << 20) | \
- (((CFG_BSTOPRE & 0x00000300) >> 8) << MCCR4_BSTOPRE0TO1_SHIFT ) | \
- ((CFG_SDMODE_CAS_LAT << 4) | (CFG_SDMODE_WRAP << 3) | \
- (CFG_SDMODE_BURSTLEN) << MCCR4_SDMODE_SHIFT) | \
- (CFG_ACTTORW << MCCR4_ACTTORW_SHIFT) | \
- ((CFG_BSTOPRE & 0x0000000f) << MCCR4_BSTOPRE6TO9_SHIFT )
- .long MSAR1
- .long (((CFG_BANK0_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK1_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK2_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK3_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMSAR1
- .long (((CFG_BANK0_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK1_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK2_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK3_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long MSAR2
- .long (((CFG_BANK4_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK5_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK6_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK7_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMSAR2
- .long (((CFG_BANK4_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK5_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK6_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK7_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long MEAR1
- .long (((CFG_BANK0_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK1_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK2_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK3_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMEAR1
- .long (((CFG_BANK0_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK1_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK2_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK3_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long MEAR2
- .long (((CFG_BANK4_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 0) | \
- (((CFG_BANK5_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 8) | \
- (((CFG_BANK6_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 16) | \
- (((CFG_BANK7_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) << 24)
- .long EMEAR2
- .long (((CFG_BANK4_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 0) | \
- (((CFG_BANK5_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 8) | \
- (((CFG_BANK6_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 16) | \
- (((CFG_BANK7_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) << 24)
- .long 0
-
-
- /*
- * Early CPU initialization. Set up memory controller, so we can access any RAM at all. This
- * must be done in assembly, since we have no stack at this point.
- */
- .global early_init_f
-early_init_f:
- mflr r10
-
- /* basic memory controller configuration */
- lis r3, CONFIG_ADDR_HIGH
- lis r4, CONFIG_DATA_HIGH
- bl lab
-lab: mflr r5
- lwzu r0, tbl - lab(r5)
-loop: lwz r1, 4(r5)
- stwbrx r0, 0, r3
- eieio
- stwbrx r1, 0, r4
- eieio
- lwzu r0, 8(r5)
- cmpli cr0, 0, r0, 0
- bne cr0, loop
-
- /* set bank enable bits */
- lis r0, MBER@h
- ori r0, 0, MBER@l
- li r1, CFG_BANK_ENABLE
- stwbrx r0, 0, r3
- eieio
- stb r1, 0(r4)
- eieio
-
- /* delay loop */
- lis r0, 0x0003
- mtctr r0
-delay: bdnz delay
-
- /* enable memory controller */
- lis r0, MCCR1@h
- ori r0, 0, MCCR1@l
- stwbrx r0, 0, r3
- eieio
- lwbrx r0, 0, r4
- oris r0, 0, MCCR1_MEMGO@h
- stwbrx r0, 0, r4
- eieio
-
- /* set up stack pointer */
- lis r1, CFG_INIT_SP_OFFSET@h
- ori r1, r1, CFG_INIT_SP_OFFSET@l
-
- mtlr r10
- blr
diff --git a/board/sandpoint/flash.c b/board/sandpoint/flash.c
deleted file mode 100644
index a9f73ff0dc..0000000000
--- a/board/sandpoint/flash.c
+++ /dev/null
@@ -1,764 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <asm/pci_io.h>
-#include <w83c553f.h>
-
-#define ROM_CS0_START 0xFF800000
-#define ROM_CS1_START 0xFF000000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-#if 0
-static void flash_get_offsets (ulong base, flash_info_t *info);
-#endif /* 0 */
-
-/*flash command address offsets*/
-
-#if 0
-#define ADDR0 (0x555)
-#define ADDR1 (0x2AA)
-#define ADDR3 (0x001)
-#else
-#define ADDR0 (0xAAA)
-#define ADDR1 (0x555)
-#define ADDR3 (0x001)
-#endif
-
-#define FLASH_WORD_SIZE unsigned char
-
-/*-----------------------------------------------------------------------
- */
-
-#if 0
-static int byte_parity_odd(unsigned char x) __attribute__ ((const));
-#endif /* 0 */
-static unsigned long flash_id(unsigned char mfct, unsigned char chip) __attribute__ ((const));
-
-typedef struct
-{
- FLASH_WORD_SIZE extval;
- unsigned short intval;
-} map_entry;
-
-#if 0
-static int
-byte_parity_odd(unsigned char x)
-{
- x ^= x >> 4;
- x ^= x >> 2;
- x ^= x >> 1;
- return (x & 0x1) != 0;
-}
-#endif /* 0 */
-
-
-static unsigned long
-flash_id(unsigned char mfct, unsigned char chip)
-{
- static const map_entry mfct_map[] =
- {
- {(FLASH_WORD_SIZE) AMD_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_AMD >> 16)},
- {(FLASH_WORD_SIZE) FUJ_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_FUJ >> 16)},
- {(FLASH_WORD_SIZE) STM_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_STM >> 16)},
- {(FLASH_WORD_SIZE) MT_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_MT >> 16)},
- {(FLASH_WORD_SIZE) INTEL_MANUFACT,(unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)},
- {(FLASH_WORD_SIZE) INTEL_ALT_MANU,(unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)}
- };
-
- static const map_entry chip_map[] =
- {
- {AMD_ID_F040B, FLASH_AM040},
- {(FLASH_WORD_SIZE) STM_ID_x800AB, FLASH_STM800AB}
- };
-
- const map_entry *p;
- unsigned long result = FLASH_UNKNOWN;
-
- /* find chip id */
- for(p = &chip_map[0]; p < &chip_map[sizeof chip_map / sizeof chip_map[0]]; p++)
- if(p->extval == chip)
- {
- result = FLASH_VENDMASK | p->intval;
- break;
- }
-
- /* find vendor id */
- for(p = &mfct_map[0]; p < &mfct_map[sizeof mfct_map / sizeof mfct_map[0]]; p++)
- if(p->extval == mfct)
- {
- result &= ~FLASH_VENDMASK;
- result |= (unsigned long) p->intval << 16;
- break;
- }
-
- return result;
-}
-
-
-unsigned long
-flash_init(void)
-{
- unsigned long i;
- unsigned char j;
- static const ulong flash_banks[] = CFG_FLASH_BANKS;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++)
- {
- flash_info_t * const pflinfo = &flash_info[i];
- pflinfo->flash_id = FLASH_UNKNOWN;
- pflinfo->size = 0;
- pflinfo->sector_count = 0;
- }
-
- /* Enable writes to Sandpoint flash */
- {
- register unsigned char temp;
- CONFIG_READ_BYTE(CFG_WINBOND_ISA_CFG_ADDR + WINBOND_CSCR, temp);
- temp &= ~0x20; /* clear BIOSWP bit */
- CONFIG_WRITE_BYTE(CFG_WINBOND_ISA_CFG_ADDR + WINBOND_CSCR, temp);
- }
-
- for(i = 0; i < sizeof flash_banks / sizeof flash_banks[0]; i++)
- {
- flash_info_t * const pflinfo = &flash_info[i];
- const unsigned long base_address = flash_banks[i];
- volatile FLASH_WORD_SIZE * const flash = (FLASH_WORD_SIZE *) base_address;
-#if 0
- volatile FLASH_WORD_SIZE * addr2;
-#endif
-#if 0
- /* write autoselect sequence */
- flash[0x5555] = 0xaa;
- flash[0x2aaa] = 0x55;
- flash[0x5555] = 0x90;
-#else
- flash[0xAAA << (3 * i)] = 0xaa;
- flash[0x555 << (3 * i)] = 0x55;
- flash[0xAAA << (3 * i)] = 0x90;
-#endif
- __asm__ __volatile__("sync");
-
-#if 0
- pflinfo->flash_id = flash_id(flash[0x0], flash[0x1]);
-#else
- pflinfo->flash_id = flash_id(flash[0x0], flash[0x2 + 14 * i]);
-#endif
-
- switch(pflinfo->flash_id & FLASH_TYPEMASK)
- {
- case FLASH_AM040:
- pflinfo->size = 0x00080000;
- pflinfo->sector_count = 8;
- for(j = 0; j < 8; j++)
- {
- pflinfo->start[j] = base_address + 0x00010000 * j;
- pflinfo->protect[j] = flash[(j << 16) | 0x2];
- }
- break;
- case FLASH_STM800AB:
- pflinfo->size = 0x00100000;
- pflinfo->sector_count = 19;
- pflinfo->start[0] = base_address;
- pflinfo->start[1] = base_address + 0x4000;
- pflinfo->start[2] = base_address + 0x6000;
- pflinfo->start[3] = base_address + 0x8000;
- for(j = 1; j < 16; j++)
- {
- pflinfo->start[j+3] = base_address + 0x00010000 * j;
- }
-#if 0
- /* check for protected sectors */
- for (j = 0; j < pflinfo->sector_count; j++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile FLASH_WORD_SIZE *)(pflinfo->start[j]);
- if (pflinfo->flash_id & FLASH_MAN_SST)
- pflinfo->protect[j] = 0;
- else
- pflinfo->protect[j] = addr2[2] & 1;
- }
-#endif
- break;
- }
- /* Protect monitor and environment sectors
- */
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- /* reset device to read mode */
- flash[0x0000] = 0xf0;
- __asm__ __volatile__("sync");
- }
-
- return flash_info[0].size + flash_info[1].size;
-}
-
-#if 0
-static void
-flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_MAN_SST)
- {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- }
- else
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
-}
-#endif /* 0 */
-
-/*-----------------------------------------------------------------------
- */
-void
-flash_print_info(flash_info_t *info)
-{
- static const char unk[] = "Unknown";
- const char *mfct = unk, *type = unk;
- unsigned int i;
-
- if(info->flash_id != FLASH_UNKNOWN)
- {
- switch(info->flash_id & FLASH_VENDMASK)
- {
- case FLASH_MAN_AMD: mfct = "AMD"; break;
- case FLASH_MAN_FUJ: mfct = "FUJITSU"; break;
- case FLASH_MAN_STM: mfct = "STM"; break;
- case FLASH_MAN_SST: mfct = "SST"; break;
- case FLASH_MAN_BM: mfct = "Bright Microelectonics"; break;
- case FLASH_MAN_INTEL: mfct = "Intel"; break;
- }
-
- switch(info->flash_id & FLASH_TYPEMASK)
- {
- case FLASH_AM040: type = "AM29F040B (512K * 8, uniform sector size)"; break;
- case FLASH_AM400B: type = "AM29LV400B (4 Mbit, bottom boot sect)"; break;
- case FLASH_AM400T: type = "AM29LV400T (4 Mbit, top boot sector)"; break;
- case FLASH_AM800B: type = "AM29LV800B (8 Mbit, bottom boot sect)"; break;
- case FLASH_AM800T: type = "AM29LV800T (8 Mbit, top boot sector)"; break;
- case FLASH_AM160T: type = "AM29LV160T (16 Mbit, top boot sector)"; break;
- case FLASH_AM320B: type = "AM29LV320B (32 Mbit, bottom boot sect)"; break;
- case FLASH_AM320T: type = "AM29LV320T (32 Mbit, top boot sector)"; break;
- case FLASH_STM800AB: type = "M29W800AB (8 Mbit, bottom boot sect)"; break;
- case FLASH_SST800A: type = "SST39LF/VF800 (8 Mbit, uniform sector size)"; break;
- case FLASH_SST160A: type = "SST39LF/VF160 (16 Mbit, uniform sector size)"; break;
- }
- }
-
- printf(
- "\n Brand: %s Type: %s\n"
- " Size: %lu KB in %d Sectors\n",
- mfct,
- type,
- info->size >> 10,
- info->sector_count
- );
-
- printf (" Sector Start Addresses:");
-
- for (i = 0; i < info->sector_count; i++)
- {
- unsigned long size;
- unsigned int erased;
- unsigned long * flash = (unsigned long *) info->start[i];
-
- /*
- * Check if whole sector is erased
- */
- size =
- (i != (info->sector_count - 1)) ?
- (info->start[i + 1] - info->start[i]) >> 2 :
- (info->start[0] + info->size - info->start[i]) >> 2;
-
- for(
- flash = (unsigned long *) info->start[i], erased = 1;
- (flash != (unsigned long *) info->start[i] + size) && erased;
- flash++
- )
- erased = *flash == ~0x0UL;
-
- printf(
- "%s %08lX %s %s",
- (i % 5) ? "" : "\n ",
- info->start[i],
- erased ? "E" : " ",
- info->protect[i] ? "RO" : " "
- );
- }
-
- puts("\n");
- return;
-}
-
-#if 0
-
-/*
- * The following code cannot be run from FLASH!
- */
-ulong
-flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- FLASH_WORD_SIZE value;
- ulong base = (ulong)addr;
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)addr;
-
- printf("flash_get_size: \n");
- /* Write auto select command: read Manufacturer ID */
- eieio();
- addr2[ADDR0] = (FLASH_WORD_SIZE)0xAA;
- addr2[ADDR1] = (FLASH_WORD_SIZE)0x55;
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x90;
- value = addr2[0];
-
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FLASH_WORD_SIZE)FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (FLASH_WORD_SIZE)SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
- printf("recognised manufacturer");
-
- value = addr2[ADDR3]; /* device ID */
- debug ("\ndev_code=%x\n", value);
-
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE)SST_ID_xF800A:
- info->flash_id += FLASH_SST800A;
- info->sector_count = 16;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE)SST_ID_xF160A:
- info->flash_id += FLASH_SST160A;
- info->sector_count = 32;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE)AMD_ID_F040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- printf("flash id %lx; sector count %x, size %lx\n", info->flash_id,info->sector_count,info->size);
- /* set up sector start address table */
- if (info->flash_id & FLASH_MAN_SST)
- {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- }
- else
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- if (info->flash_id & FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (FLASH_WORD_SIZE *)info->start[0];
- *addr2 = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-#endif
-
-
-int
-flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
- unsigned char sh8b;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > (FLASH_MAN_STM | FLASH_AMD_COMP))) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Check the ROM CS */
- if ((info->start[0] >= ROM_CS1_START) && (info->start[0] < ROM_CS0_START))
- sh8b = 3;
- else
- sh8b = 0;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (FLASH_WORD_SIZE *)(info->start[0] + (
- (info->start[sect] - info->start[0]) << sh8b));
- if (info->flash_id & FLASH_MAN_SST)
- {
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
- addr[0] = (FLASH_WORD_SIZE)0x00500050; /* block erase */
- udelay(30000); /* wait 30 ms */
- }
- else
- addr[0] = (FLASH_WORD_SIZE)0x00300030; /* sector erase */
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (FLASH_WORD_SIZE *)(info->start[0] + (
- (info->start[l_sect] - info->start[0]) << sh8b));
- while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)info->start[0];
- volatile FLASH_WORD_SIZE *dest2;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
- ulong start;
- int flag;
- int i;
- unsigned char sh8b;
-
- /* Check the ROM CS */
- if ((info->start[0] >= ROM_CS1_START) && (info->start[0] < ROM_CS0_START))
- sh8b = 3;
- else
- sh8b = 0;
-
- dest2 = (FLASH_WORD_SIZE *)(((dest - info->start[0]) << sh8b) +
- info->start[0]);
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest2 & (FLASH_WORD_SIZE)data) != (FLASH_WORD_SIZE)data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- for (i=0; i<4/sizeof(FLASH_WORD_SIZE); i++)
- {
- addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr2[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
- addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00A000A0;
-
- dest2[i << sh8b] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i << sh8b] & (FLASH_WORD_SIZE)0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/sandpoint/sandpoint.c b/board/sandpoint/sandpoint.c
deleted file mode 100644
index d3445bd92d..0000000000
--- a/board/sandpoint/sandpoint.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * (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
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-
-int checkboard (void)
-{
- /*TODO: Check processor type */
-
- puts ( "Board: Sandpoint "
-#ifdef CONFIG_MPC8240
- "8240"
-#endif
-#ifdef CONFIG_MPC8245
- "8245"
-#endif
- " Unity ##Test not implemented yet##\n");
- return 0;
-}
-
-#if 0 /* NOT USED */
-int checkflash (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("## Test not implemented yet ##\n");
-
- return (0);
-}
-#endif
-
-long int initdram (int board_type)
-{
- long size;
- long new_bank0_end;
- long mear1;
- long emear1;
-
- size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
-
- new_bank0_end = size - 1;
- mear1 = mpc824x_mpc107_getreg(MEAR1);
- emear1 = mpc824x_mpc107_getreg(EMEAR1);
- mear1 = (mear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
- emear1 = (emear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
- mpc824x_mpc107_setreg(MEAR1, mear1);
- mpc824x_mpc107_setreg(EMEAR1, emear1);
-
- return (size);
-}
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_sandpoint_config_table[] = {
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0f, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x10, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
- PCI_ENET1_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_sandpoint_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
- pci_mpc824x_init(&hose);
-}
diff --git a/board/sandpoint/speed.h b/board/sandpoint/speed.h
deleted file mode 100644
index b66393bec5..0000000000
--- a/board/sandpoint/speed.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * (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
- */
-
-/*-----------------------------------------------------------------------
- * Timer value for timer 2, ICLK = 10
- *
- * SPEED_FCOUNT2 = GCLK / (16 * (TIMER_TMR_PS + 1))
- * SPEED_TMR3_PS = (GCLK / (16 * SPEED_FCOUNT3)) - 1
- *
- * SPEED_FCOUNT2 timer 2 counting frequency
- * GCLK CPU clock
- * SPEED_TMR2_PS prescaler
- */
-#define SPEED_TMR2_PS (250 - 1) /* divide by 250 */
-
-/*-----------------------------------------------------------------------
- * Timer value for PIT
- *
- * PIT_TIME = SPEED_PITC / PITRTCLK
- * PITRTCLK = 8192
- */
-#define SPEED_PITC (82 << 16) /* start counting from 82 */
-
-/*
- * The new value for PTA is calculated from
- *
- * PTA = (gclk * Trefresh) / (2 ^ (2 * DFBRG) * PTP * NCS)
- *
- * gclk CPU clock (not bus clock !)
- * Trefresh Refresh cycle * 4 (four word bursts used)
- * DFBRG For normal mode (no clock reduction) always 0
- * PTP Prescaler (already adjusted for no. of banks and 4K / 8K refresh)
- * NCS Number of SDRAM banks (chip selects) on this UPM.
- */
diff --git a/board/sandpoint/u-boot.lds b/board/sandpoint/u-boot.lds
deleted file mode 100644
index 2a5cd2ebd9..0000000000
--- a/board/sandpoint/u-boot.lds
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/sbc2410x/Makefile b/board/sbc2410x/Makefile
deleted file mode 100644
index a68c3832af..0000000000
--- a/board/sbc2410x/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := sbc2410x.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/sbc2410x/config.mk b/board/sbc2410x/config.mk
deleted file mode 100644
index f244e642c2..0000000000
--- a/board/sbc2410x/config.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-#
-# SAMSUNG SMDK2410 board with S3C2410X (ARM920T) cpu
-#
-# see http://www.samsung.com/ for more information on SAMSUNG
-#
-
-#
-# SMDK2410 has 1 bank of 64 MB DRAM
-#
-# 3000'0000 to 3400'0000
-#
-# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
-# optionally with a ramdisk at 3080'0000
-#
-# we load ourself to 33F8'0000
-#
-# download area is 3300'0000
-
-TEXT_BASE = 0x33F80000
diff --git a/board/sbc2410x/flash.c b/board/sbc2410x/flash.c
deleted file mode 100644
index f2718f256f..0000000000
--- a/board/sbc2410x/flash.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@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
- */
-
-#include <common.h>
-
-ulong myflush (void);
-
-#define FLASH_BANK_SIZE PHYS_FLASH_SIZE
-#define MAIN_SECT_SIZE 0x10000 /* 64 KB */
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-#define CMD_READ_ARRAY 0x000000F0
-#define CMD_UNLOCK1 0x000000AA
-#define CMD_UNLOCK2 0x00000055
-#define CMD_ERASE_SETUP 0x00000080
-#define CMD_ERASE_CONFIRM 0x00000030
-#define CMD_PROGRAM 0x000000A0
-#define CMD_UNLOCK_BYPASS 0x00000020
-
-#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555 << 1)))
-#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA << 1)))
-
-#define BIT_ERASE_DONE 0x00000080
-#define BIT_RDY_MASK 0x00000080
-#define BIT_PROGRAM_ERROR 0x00000020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
-#if defined(CONFIG_AMD_LV400)
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV400B & FLASH_TYPEMASK);
-#elif defined(CONFIG_AMD_LV800)
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV800B & FLASH_TYPEMASK);
-#else
-#error "Unknown flash configured"
-#endif
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic ("configured too many flash banks!\n");
- for (j = 0; j < flash_info[i].sector_count; j++) {
- if (j <= 3) {
- /* 1st one is 16 KB */
- if (j == 0) {
- flash_info[i].start[j] =
- flashbase + 0;
- }
-
- /* 2nd and 3rd are both 8 KB */
- if ((j == 1) || (j == 2)) {
- flash_info[i].start[j] =
- flashbase + 0x4000 + (j -
- 1) *
- 0x2000;
- }
-
- /* 4th 32 KB */
- if (j == 3) {
- flash_info[i].start[j] =
- flashbase + 0x8000;
- }
- } else {
- flash_info[i].start[j] =
- flashbase + (j - 3) * MAIN_SECT_SIZE;
- }
- }
- size += flash_info[i].size;
- }
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf ("AMD: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_LV400B & FLASH_TYPEMASK):
- printf ("1x Amd29LV400BB (4Mbit)\n");
- break;
- case (AMD_ID_LV800B & FLASH_TYPEMASK):
- printf ("1x Amd29LV800BB (8Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
- Done:;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- ushort result;
- int iflag, cflag, prot, sect;
- int rc = ERR_OK;
- int chip;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (AMD_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- if (info->protect[sect] == 0) { /* not protected */
- vu_short *addr = (vu_short *) (info->start[sect]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- chip = 0;
-
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- chip = TMO;
- break;
- }
-
- if (!chip
- && (result & 0xFFFF) & BIT_ERASE_DONE)
- chip = READY;
-
- if (!chip
- && (result & 0xFFFF) & BIT_PROGRAM_ERROR)
- chip = ERR;
-
- } while (!chip);
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- if (chip == ERR) {
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (chip == TMO) {
- rc = ERR_TIMOUT;
- goto outahere;
- }
-
- printf ("ok.\n");
- } else { /* it was protected */
-
- printf ("protected!\n");
- }
- }
-
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
- outahere:
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-volatile static int write_hword (flash_info_t * info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short *) dest;
- ushort result;
- int rc = ERR_OK;
- int cflag, iflag;
- int chip;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_UNLOCK_BYPASS;
- *addr = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait until flash is ready */
- chip = 0;
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- chip = ERR | TMO;
- break;
- }
- if (!chip && ((result & 0x80) == (data & 0x80)))
- chip = READY;
-
- if (!chip && ((result & 0xFFFF) & BIT_PROGRAM_ERROR)) {
- result = *addr;
-
- if ((result & 0x80) == (data & 0x80))
- chip = READY;
- else
- chip = ERR;
- }
-
- } while (!chip);
-
- *addr = CMD_READ_ARRAY;
-
- if (chip == ERR || *addr != data)
- rc = ERR_PROG_ERROR;
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- int l;
- int i, rc;
- ushort data;
-
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
- for (; i < 2 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- if ((rc = write_hword (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 2) {
- data = *((vu_short *) src);
- if ((rc = write_hword (info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- }
- for (; i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- return write_hword (info, wp, data);
-}
diff --git a/board/sbc2410x/lowlevel_init.S b/board/sbc2410x/lowlevel_init.S
deleted file mode 100644
index 3df63cdae9..0000000000
--- a/board/sbc2410x/lowlevel_init.S
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Memory Setup stuff - taken from blob memsetup.S
- *
- * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
- * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
- *
- * Modified for the Samsung SMDK2410 by
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
- *
- * Modified for the friendly-arm SBC-2410X by
- * (C) Copyright 2005
- * JinHua Luo, GuangDong Linux Center, <luo.jinhua@gd-linux.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
- */
-
-#include <config.h>
-#include <version.h>
-
-/*
- * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
- *
- * Copyright (C) 2002 Samsung Electronics SW.LEE <hitchcar@sec.samsung.com>
- */
-
-#define BWSCON 0x48000000
-
-/* BWSCON */
-#define DW8 (0x0)
-#define DW16 (0x1)
-#define DW32 (0x2)
-#define WAIT (0x1<<2)
-#define UBLB (0x1<<3)
-
-#define B1_BWSCON (DW16)
-#define B2_BWSCON (DW16)
-#define B3_BWSCON (DW16 + WAIT + UBLB)
-#define B4_BWSCON (DW16)
-#define B5_BWSCON (DW16)
-#define B6_BWSCON (DW32)
-#define B7_BWSCON (DW32)
-
-#define B0_Tacs 0x0
-#define B0_Tcos 0x0
-#define B0_Tacc 0x7
-#define B0_Tcoh 0x0
-#define B0_Tah 0x0
-#define B0_Tacp 0x0
-#define B0_PMC 0x0
-
-#define B1_Tacs 0x0
-#define B1_Tcos 0x0
-#define B1_Tacc 0x7
-#define B1_Tcoh 0x0
-#define B1_Tah 0x0
-#define B1_Tacp 0x0
-#define B1_PMC 0x0
-
-#define B2_Tacs 0x0
-#define B2_Tcos 0x0
-#define B2_Tacc 0x7
-#define B2_Tcoh 0x0
-#define B2_Tah 0x0
-#define B2_Tacp 0x0
-#define B2_PMC 0x0
-
-#define B3_Tacs 0xc
-#define B3_Tcos 0x7
-#define B3_Tacc 0xf
-#define B3_Tcoh 0x1
-#define B3_Tah 0x0
-#define B3_Tacp 0x0
-#define B3_PMC 0x0
-
-#define B4_Tacs 0x0
-#define B4_Tcos 0x0
-#define B4_Tacc 0x7
-#define B4_Tcoh 0x0
-#define B4_Tah 0x0
-#define B4_Tacp 0x0
-#define B4_PMC 0x0
-
-#define B5_Tacs 0xc
-#define B5_Tcos 0x7
-#define B5_Tacc 0xf
-#define B5_Tcoh 0x1
-#define B5_Tah 0x0
-#define B5_Tacp 0x0
-#define B5_PMC 0x0
-
-#define B6_MT 0x3 /* SDRAM */
-#define B6_Trcd 0x1
-#define B6_SCAN 0x1 /* 9bit */
-
-#define B7_MT 0x3 /* SDRAM */
-#define B7_Trcd 0x1 /* 3clk */
-#define B7_SCAN 0x1 /* 9bit */
-
-/* REFRESH parameter */
-#define REFEN 0x1 /* Refresh enable */
-#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
-#define Trp 0x0 /* 2clk */
-#define Trc 0x3 /* 7clk */
-#define Tchr 0x2 /* 3clk */
-#define REFCNT 0x0459
-/**************************************/
-
-_TEXT_BASE:
- .word TEXT_BASE
-
-.globl lowlevel_init
-lowlevel_init:
- /* memory control configuration */
- /* make r0 relative the current location so that it */
- /* reads SMRDATA out of FLASH rather than memory ! */
- ldr r0, =SMRDATA
- ldr r1, _TEXT_BASE
- sub r0, r0, r1
- ldr r1, =BWSCON /* Bus Width Status Controller */
- add r2, r0, #13*4
-0:
- ldr r3, [r0], #4
- str r3, [r1], #4
- cmp r2, r0
- bne 0b
-
- /* everything is fine now */
- mov pc, lr
-
- .ltorg
-/* the literal pools origin */
-
-SMRDATA:
- .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
- .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
- .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
- .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
- .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
- .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
- .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
- .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
- .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
- .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
- .word 0xb2
- .word 0x30
- .word 0x30
diff --git a/board/sbc2410x/sbc2410x.c b/board/sbc2410x/sbc2410x.c
deleted file mode 100644
index 7030985b29..0000000000
--- a/board/sbc2410x/sbc2410x.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
- *
- * (C) Copyright 2005
- * JinHua Luo, GuangDong Linux Center, <luo.jinhua@gd-linux.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
- */
-
-#include <common.h>
-#include <s3c2410.h>
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand.h>
-#endif
-
-/* ------------------------------------------------------------------------- */
-
-#define FCLK_SPEED 1
-
-#if FCLK_SPEED==0 /* Fout = 203MHz, Fin = 12MHz for Audio */
-#define M_MDIV 0xC3
-#define M_PDIV 0x4
-#define M_SDIV 0x1
-#elif FCLK_SPEED==1 /* Fout = 202.8MHz */
-#define M_MDIV 0x5c
-#define M_PDIV 0x4
-#define M_SDIV 0x0
-#endif
-
-#define USB_CLOCK 1
-
-#if USB_CLOCK==0
-#define U_M_MDIV 0xA1
-#define U_M_PDIV 0x3
-#define U_M_SDIV 0x1
-#elif USB_CLOCK==1
-#define U_M_MDIV 0x48
-#define U_M_PDIV 0x3
-#define U_M_SDIV 0x2
-#endif
-
-static inline void delay (unsigned long loops)
-{
- __asm__ volatile ("1:\n"
- "subs %0, %1, #1\n"
- "bne 1b":"=r" (loops):"0" (loops));
-}
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- DECLARE_GLOBAL_DATA_PTR;
- S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* to reduce PLL lock time, adjust the LOCKTIME register */
- clk_power->LOCKTIME = 0xFFFFFF;
-
- /* configure MPLL */
- clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
-
- /* some delay between MPLL and UPLL */
- delay (4000);
-
- /* configure UPLL */
- clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
-
- /* some delay between MPLL and UPLL */
- delay (8000);
-
- /* set up the I/O ports */
- gpio->GPACON = 0x007FFFFF;
- gpio->GPBCON = 0x00044556;
- gpio->GPBUP = 0x000007FF;
- gpio->GPCCON = 0xAAAAAAAA;
- gpio->GPCUP = 0x0000FFFF;
- gpio->GPDCON = 0xAAAAAAAA;
- gpio->GPDUP = 0x0000FFFF;
- gpio->GPECON = 0xAAAAAAAA;
- gpio->GPEUP = 0x0000FFFF;
- gpio->GPFCON = 0x000055AA;
- gpio->GPFUP = 0x000000FF;
- gpio->GPGCON = 0xFF95FF3A;
- gpio->GPGUP = 0x0000FFFF;
- gpio->GPHCON = 0x0016FAAA;
- gpio->GPHUP = 0x000007FF;
-
- gpio->EXTINT0=0x22222222;
- gpio->EXTINT1=0x22222222;
- gpio->EXTINT2=0x22222222;
-
- /* arch number of SMDK2410-Board */
- gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x30000100;
-
- icache_enable();
- dcache_enable();
-
- return 0;
-}
-
-int dram_init (void)
-{
- DECLARE_GLOBAL_DATA_PTR;
-
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return 0;
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-extern ulong nand_probe(ulong physadr);
-
-static inline void NF_Reset(void)
-{
- int i;
-
- NF_SetCE(NFCE_LOW);
- NF_Cmd(0xFF); /* reset command */
- for(i = 0; i < 10; i++); /* tWB = 100ns. */
- NF_WaitRB(); /* wait 200~500us; */
- NF_SetCE(NFCE_HIGH);
-}
-
-static inline void NF_Init(void)
-{
-#if 1
-#define TACLS 0
-#define TWRPH0 3
-#define TWRPH1 0
-#else
-#define TACLS 0
-#define TWRPH0 4
-#define TWRPH1 2
-#endif
-
- NF_Conf((1<<15)|(0<<14)|(0<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0));
- /*nand->NFCONF = (1<<15)|(1<<14)|(1<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0); */
- /* 1 1 1 1, 1 xxx, r xxx, r xxx */
- /* En 512B 4step ECCR nFCE=H tACLS tWRPH0 tWRPH1 */
-
- NF_Reset();
-}
-
-void nand_init(void)
-{
- S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
-
- NF_Init();
-#ifdef DEBUG
- printf("NAND flash probing at 0x%.8lX\n", (ulong)nand);
-#endif
- printf ("%4lu MB\n", nand_probe((ulong)nand) >> 20);
-}
-#endif /* CONFIG_COMMANDS & CFG_CMD_NAND */
diff --git a/board/sbc2410x/u-boot.lds b/board/sbc2410x/u-boot.lds
deleted file mode 100644
index 76df6b2af1..0000000000
--- a/board/sbc2410x/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/sbc405/Makefile b/board/sbc405/Makefile
deleted file mode 100644
index 3c5aa8680a..0000000000
--- a/board/sbc405/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o strataflash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/sbc405/config.mk b/board/sbc405/config.mk
deleted file mode 100644
index bd57217811..0000000000
--- a/board/sbc405/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# Wind River sbc405 boards
-#
-
-TEXT_BASE = 0xFFFC0000
diff --git a/board/sbc405/sbc405.c b/board/sbc405/sbc405.c
deleted file mode 100644
index 0ae6d0ba45..0000000000
--- a/board/sbc405/sbc405.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * (C) Copyright 2001
- *
- * 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 <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-#include <spd_sdram.h>
-
-
-int board_early_init_f (void)
-{
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
- */
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr(uicer, 0x00000000); /* disable all ints */
- mtdcr(uiccr, 0x00000000); /* set all to be non-critical*/
- mtdcr(uicpr, 0xFFFFFF81); /* set int polarities */
- mtdcr(uictr, 0x10000000); /* set int trigger levels */
- mtdcr(uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority*/
- mtdcr(uicsr, 0xFFFFFFFF); /* clear all ints */
-
- /*
- * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
- */
- mtebc (epcr, 0xa8400000);
-
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_f (void)
-{
- return 0; /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
- return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof(str));
-
- puts ("Board: ");
-
- if (i == -1) {
- puts ("### No HW ID - assuming sbc405");
- } else {
- puts(str);
- }
-
- putc ('\n');
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- return spd_sdram ();
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
- /* TODO: XXX XXX XXX */
- printf ("test: 64 MB - ok\n");
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/sbc405/strataflash.c b/board/sbc405/strataflash.c
deleted file mode 100644
index d21d885fae..0000000000
--- a/board/sbc405/strataflash.c
+++ /dev/null
@@ -1,793 +0,0 @@
-/*
- * (C) Copyright 2002
- * Brad Kemp, Seranoa Networks, Brad.Kemp@seranoa.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
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-#undef DEBUG_FLASH
-/*
- * This file implements a Common Flash Interface (CFI) driver for ppcboot.
- * The width of the port and the width of the chips are determined at initialization.
- * These widths are used to calculate the address for access CFI data structures.
- * It has been tested on an Intel Strataflash implementation.
- *
- * References
- * JEDEC Standard JESD68 - Common Flash Interface (CFI)
- * JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
- * Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
- * Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
- *
- * TODO
- * Use Primary Extended Query table (PRI) and Alternate Algorithm Query Table (ALT) to determine if protection is available
- * Add support for other command sets Use the PRI and ALT to determine command set
- * Verify erase and program timeouts.
- */
-
-#define FLASH_CMD_CFI 0x98
-#define FLASH_CMD_READ_ID 0x90
-#define FLASH_CMD_RESET 0xff
-#define FLASH_CMD_BLOCK_ERASE 0x20
-#define FLASH_CMD_ERASE_CONFIRM 0xD0
-#define FLASH_CMD_WRITE 0x40
-#define FLASH_CMD_PROTECT 0x60
-#define FLASH_CMD_PROTECT_SET 0x01
-#define FLASH_CMD_PROTECT_CLEAR 0xD0
-#define FLASH_CMD_CLEAR_STATUS 0x50
-#define FLASH_CMD_WRITE_TO_BUFFER 0xE8
-#define FLASH_CMD_WRITE_BUFFER_CONFIRM 0xD0
-
-#define FLASH_STATUS_DONE 0x80
-#define FLASH_STATUS_ESS 0x40
-#define FLASH_STATUS_ECLBS 0x20
-#define FLASH_STATUS_PSLBS 0x10
-#define FLASH_STATUS_VPENS 0x08
-#define FLASH_STATUS_PSS 0x04
-#define FLASH_STATUS_DPS 0x02
-#define FLASH_STATUS_R 0x01
-#define FLASH_STATUS_PROTECT 0x01
-
-#define FLASH_OFFSET_CFI 0x55
-#define FLASH_OFFSET_CFI_RESP 0x10
-#define FLASH_OFFSET_WTOUT 0x1F
-#define FLASH_OFFSET_WBTOUT 0x20
-#define FLASH_OFFSET_ETOUT 0x21
-#define FLASH_OFFSET_CETOUT 0x22
-#define FLASH_OFFSET_WMAX_TOUT 0x23
-#define FLASH_OFFSET_WBMAX_TOUT 0x24
-#define FLASH_OFFSET_EMAX_TOUT 0x25
-#define FLASH_OFFSET_CEMAX_TOUT 0x26
-#define FLASH_OFFSET_SIZE 0x27
-#define FLASH_OFFSET_INTERFACE 0x28
-#define FLASH_OFFSET_BUFFER_SIZE 0x2A
-#define FLASH_OFFSET_NUM_ERASE_REGIONS 0x2C
-#define FLASH_OFFSET_ERASE_REGIONS 0x2D
-#define FLASH_OFFSET_PROTECT 0x02
-#define FLASH_OFFSET_USER_PROTECTION 0x85
-#define FLASH_OFFSET_INTEL_PROTECTION 0x81
-
-
-#define FLASH_MAN_CFI 0x01000000
-
-
-typedef union {
- unsigned char c;
- unsigned short w;
- unsigned long l;
-} cfiword_t;
-
-typedef union {
- unsigned char * cp;
- unsigned short *wp;
- unsigned long *lp;
-} cfiptr_t;
-
-#define NUM_ERASE_REGIONS 4
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c);
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf);
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_detect_cfi(flash_info_t * info);
-static ulong flash_get_size (ulong base, int banknum);
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword);
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt);
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len);
-#endif
-/*-----------------------------------------------------------------------
- * create an address based on the offset and the port width
- */
-inline uchar * flash_make_addr(flash_info_t * info, int sect, int offset)
-{
- return ((uchar *)(info->start[sect] + (offset * info->portwidth)));
-}
-/*-----------------------------------------------------------------------
- * read a character at a port width address
- */
-inline uchar flash_read_uchar(flash_info_t * info, uchar offset)
-{
- uchar *cp;
- cp = flash_make_addr(info, 0, offset);
- return (cp[info->portwidth - 1]);
-}
-
-/*-----------------------------------------------------------------------
- * read a short word by swapping for ppc format.
- */
-ushort flash_read_ushort(flash_info_t * info, int sect, uchar offset)
-{
- uchar * addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ((addr[(2*info->portwidth) - 1] << 8) | addr[info->portwidth - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- * read a long word by picking the least significant byte of each maiximum
- * port size word. Swap for ppc format.
- */
-ulong flash_read_long(flash_info_t * info, int sect, uchar offset)
-{
- uchar * addr;
-
- addr = flash_make_addr(info, sect, offset);
- return ( (addr[(2*info->portwidth) - 1] << 24 ) | (addr[(info->portwidth) -1] << 16) |
- (addr[(4*info->portwidth) - 1] << 8) | addr[(3*info->portwidth) - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size;
- int i;
- unsigned long address;
-
-
- /* The flash is positioned back to back, with the demultiplexing of the chip
- * based on the A24 address line.
- *
- */
-
- address = CFG_FLASH_BASE;
- size = 0;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- size += flash_info[i].size = flash_get_size(address, i);
- address += CFG_FLASH_INCREMENT;
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",i,
- flash_info[0].size, flash_info[i].size<<20);
- }
- }
-
-#if 0 /* test-only */
- /* Monitor protection ON by default */
-#if (CFG_MONITOR_BASE >= CFG_FLASH_BASE)
- for(i=0; flash_info[0].start[i] < CFG_MONITOR_BASE+CFG_MONITOR_LEN-1; i++)
- (void)flash_real_protect(&flash_info[0], i, 1);
-#endif
-#else
- /* monitor protection ON by default */
- flash_protect (FLAG_PROTECT_SET,
- - CFG_MONITOR_LEN,
- - 1, &flash_info[1]);
-#endif
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int rcode = 0;
- int prot;
- int sect;
-
- if( info->flash_id != FLASH_MAN_CFI) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
- if ((s_first < 0) || (s_first > s_last)) {
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- flash_write_cmd(info, sect, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sect, 0, FLASH_CMD_BLOCK_ERASE);
- flash_write_cmd(info, sect, 0, FLASH_CMD_ERASE_CONFIRM);
-
- if(flash_full_status_check(info, sect, info->erase_blk_tout, "erase")) {
- rcode = 1;
- } else
- printf(".");
- }
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id != FLASH_MAN_CFI) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- printf("CFI conformant FLASH (%d x %d)",
- (info->portwidth << 3 ), (info->chipwidth << 3 ));
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
- printf(" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n",
- info->erase_blk_tout, info->write_tout, info->buffer_write_tout, info->buffer_size);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
-#ifdef CFG_FLASH_EMPTY_INFO
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++)
- {
- if (*flash++ != 0xffffffff)
- {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- /* print empty and read-only info */
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
-#else
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
-#endif
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong wp;
- ulong cp;
- int aln;
- cfiword_t cword;
- int i, rc;
-
- /* get lower aligned address */
- wp = (addr & ~(info->portwidth - 1));
-
- /* handle unaligned start */
- if((aln = addr - wp) != 0) {
- cword.l = 0;
- cp = wp;
- for(i=0;i<aln; ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *)cp));
-
- for(; (i< info->portwidth) && (cnt > 0) ; i++) {
- flash_add_byte(info, &cword, *src++);
- cnt--;
- cp++;
- }
- for(; (cnt == 0) && (i < info->portwidth); ++i, ++cp)
- flash_add_byte(info, &cword, (*(uchar *)cp));
- if((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp = cp;
- }
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
- while(cnt >= info->portwidth) {
- i = info->buffer_size > cnt? cnt: info->buffer_size;
- if((rc = flash_write_cfibuffer(info, wp, src,i)) != ERR_OK)
- return rc;
- wp += i;
- src += i;
- cnt -=i;
- }
-#else
- /* handle the aligned part */
- while(cnt >= info->portwidth) {
- cword.l = 0;
- for(i = 0; i < info->portwidth; i++) {
- flash_add_byte(info, &cword, *src++);
- }
- if((rc = flash_write_cfiword(info, wp, cword)) != 0)
- return rc;
- wp += info->portwidth;
- cnt -= info->portwidth;
- }
-#endif /* CFG_FLASH_USE_BUFFER_WRITE */
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- cword.l = 0;
- for (i=0, cp=wp; (i<info->portwidth) && (cnt>0); ++i, ++cp) {
- flash_add_byte(info, &cword, *src++);
- --cnt;
- }
- for (; i<info->portwidth; ++i, ++cp) {
- flash_add_byte(info, & cword, (*(uchar *)cp));
- }
-
- return flash_write_cfiword(info, wp, cword);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
- int retcode = 0;
-
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT);
- if(prot)
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_SET);
- else
- flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_CLEAR);
-
- if((retcode = flash_full_status_check(info, sector, info->erase_blk_tout,
- prot?"protect":"unprotect")) == 0) {
-
- info->protect[sector] = prot;
- /* Intel's unprotect unprotects all locking */
- if(prot == 0) {
- int i;
- for(i = 0 ; i<info->sector_count; i++) {
- if(info->protect[i])
- flash_real_protect(info, i, 1);
- }
- }
- }
-
- return retcode;
-}
-/*-----------------------------------------------------------------------
- * wait for XSR.7 to be set. Time out with an error if it does not.
- * This routine does not set the flash to read-array mode.
- */
-static int flash_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
- ulong start;
-
- /* Wait for command completion */
- start = get_timer (0);
- while(!flash_isset(info, sector, 0, FLASH_STATUS_DONE)) {
- if (get_timer(start) > info->erase_blk_tout) {
- printf("Flash %s timeout at address %lx\n", prompt, info->start[sector]);
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return ERR_TIMOUT;
- }
- }
- return ERR_OK;
-}
-/*-----------------------------------------------------------------------
- * Wait for XSR.7 to be set, if it times out print an error, otherwise do a full status check.
- * This routine sets the flash to read-array mode.
- */
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
- int retcode;
- retcode = flash_status_check(info, sector, tout, prompt);
- if((retcode == ERR_OK) && !flash_isequal(info,sector, 0, FLASH_STATUS_DONE)) {
- retcode = ERR_INVAL;
- printf("Flash %s error at address %lx\n", prompt,info->start[sector]);
- if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS | FLASH_STATUS_PSLBS)){
- printf("Command Sequence Error.\n");
- } else if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS)){
- printf("Block Erase Error.\n");
- retcode = ERR_NOT_ERASED;
- } else if (flash_isset(info, sector, 0, FLASH_STATUS_PSLBS)) {
- printf("Locking Error\n");
- }
- if(flash_isset(info, sector, 0, FLASH_STATUS_DPS)){
- printf("Block locked.\n");
- retcode = ERR_PROTECTED;
- }
- if(flash_isset(info, sector, 0, FLASH_STATUS_VPENS))
- printf("Vpp Low Error.\n");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
- return retcode;
-}
-/*-----------------------------------------------------------------------
- */
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c)
-{
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cword->c = c;
- break;
- case FLASH_CFI_16BIT:
- cword->w = (cword->w << 8) | c;
- break;
- case FLASH_CFI_32BIT:
- cword->l = (cword->l << 8) | c;
- }
-}
-
-
-/*-----------------------------------------------------------------------
- * make a proper sized command based on the port and chip widths
- */
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf)
-{
- int i;
- uchar *cp = (uchar *)cmdbuf;
- for(i=0; i< info->portwidth; i++)
- *cp++ = ((i+1) % info->chipwidth) ? '\0':cmd;
-}
-
-/*
- * Write a proper sized command to the correct address
- */
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
-
- volatile cfiptr_t addr;
- cfiword_t cword;
- addr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- *addr.cp = cword.c;
- break;
- case FLASH_CFI_16BIT:
- *addr.wp = cword.w;
- break;
- case FLASH_CFI_32BIT:
- *addr.lp = cword.l;
- break;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = (cptr.cp[0] == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = (cptr.wp[0] == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = (cptr.lp[0] == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-/*-----------------------------------------------------------------------
- */
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
- cfiptr_t cptr;
- cfiword_t cword;
- int retval;
- cptr.cp = flash_make_addr(info, sect, offset);
- flash_make_cmd(info, cmd, &cword);
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- retval = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- retval = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- retval = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- retval = 0;
- break;
- }
- return retval;
-}
-
-/*-----------------------------------------------------------------------
- * detect if flash is compatible with the Common Flash Interface (CFI)
- * http://www.jedec.org/download/search/jesd68.pdf
- *
-*/
-static int flash_detect_cfi(flash_info_t * info)
-{
-
- for(info->portwidth=FLASH_CFI_8BIT; info->portwidth <= FLASH_CFI_32BIT;
- info->portwidth <<= 1) {
- for(info->chipwidth =FLASH_CFI_BY8;
- info->chipwidth <= info->portwidth;
- info->chipwidth <<= 1) {
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
- flash_write_cmd(info, 0, FLASH_OFFSET_CFI, FLASH_CMD_CFI);
- if(flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP,'Q') &&
- flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 1, 'R') &&
- flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 2, 'Y'))
- return 1;
- }
- }
- return 0;
-}
-/*
- * The following code cannot be run from FLASH!
- *
- */
-static ulong flash_get_size (ulong base, int banknum)
-{
- flash_info_t * info = &flash_info[banknum];
- int i, j;
- int sect_cnt;
- unsigned long sector;
- unsigned long tmp;
- int size_ratio;
- uchar num_erase_regions;
- int erase_region_size;
- int erase_region_count;
-
- info->start[0] = base;
-
- if(flash_detect_cfi(info)){
-#ifdef DEBUG_FLASH
- printf("portwidth=%d chipwidth=%d\n", info->portwidth, info->chipwidth); /* test-only */
-#endif
- size_ratio = info->portwidth / info->chipwidth;
- num_erase_regions = flash_read_uchar(info, FLASH_OFFSET_NUM_ERASE_REGIONS);
-#ifdef DEBUG_FLASH
- printf("found %d erase regions\n", num_erase_regions);
-#endif
- sect_cnt = 0;
- sector = base;
- for(i = 0 ; i < num_erase_regions; i++) {
- if(i > NUM_ERASE_REGIONS) {
- printf("%d erase regions found, only %d used\n",
- num_erase_regions, NUM_ERASE_REGIONS);
- break;
- }
- tmp = flash_read_long(info, 0, FLASH_OFFSET_ERASE_REGIONS);
- erase_region_size = (tmp & 0xffff)? ((tmp & 0xffff) * 256): 128;
- tmp >>= 16;
- erase_region_count = (tmp & 0xffff) +1;
- for(j = 0; j< erase_region_count; j++) {
- info->start[sect_cnt] = sector;
- sector += (erase_region_size * size_ratio);
- info->protect[sect_cnt] = flash_isset(info, sect_cnt, FLASH_OFFSET_PROTECT, FLASH_STATUS_PROTECT);
- sect_cnt++;
- }
- }
-
- info->sector_count = sect_cnt;
- /* multiply the size by the number of chips */
- info->size = (1 << flash_read_uchar(info, FLASH_OFFSET_SIZE)) * size_ratio;
- info->buffer_size = (1 << flash_read_ushort(info, 0, FLASH_OFFSET_BUFFER_SIZE));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_ETOUT);
- info->erase_blk_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_EMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WBTOUT);
- info->buffer_write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WBMAX_TOUT)));
- tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WTOUT);
- info->write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WMAX_TOUT)))/ 1000;
- info->flash_id = FLASH_MAN_CFI;
- }
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
- return(info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
-{
-
- cfiptr_t ctladdr;
- cfiptr_t cptr;
- int flag;
-
- ctladdr.cp = flash_make_addr(info, 0, 0);
- cptr.cp = (uchar *)dest;
-
-
- /* Check if Flash is (sufficiently) erased */
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- flag = ((cptr.cp[0] & cword.c) == cword.c);
- break;
- case FLASH_CFI_16BIT:
- flag = ((cptr.wp[0] & cword.w) == cword.w);
- break;
- case FLASH_CFI_32BIT:
- flag = ((cptr.lp[0] & cword.l) == cword.l);
- break;
- default:
- return 2;
- }
- if(!flag)
- return 2;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- flash_write_cmd(info, 0, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, 0, 0, FLASH_CMD_WRITE);
-
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cptr.cp[0] = cword.c;
- break;
- case FLASH_CFI_16BIT:
- cptr.wp[0] = cword.w;
- break;
- case FLASH_CFI_32BIT:
- cptr.lp[0] = cword.l;
- break;
- }
-
- /* re-enable interrupts if necessary */
- if(flag)
- enable_interrupts();
-
- return flash_full_status_check(info, 0, info->write_tout, "write");
-}
-
-#ifdef CFG_FLASH_USE_BUFFER_WRITE
-
-/* loop through the sectors from the highest address
- * when the passed address is greater or equal to the sector address
- * we have a match
- */
-static int find_sector(flash_info_t *info, ulong addr)
-{
- int sector;
- for(sector = info->sector_count - 1; sector >= 0; sector--) {
- if(addr >= info->start[sector])
- break;
- }
- return sector;
-}
-
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len)
-{
-
- int sector;
- int cnt;
- int retcode;
- volatile cfiptr_t src;
- volatile cfiptr_t dst;
-
- src.cp = cp;
- dst.cp = (uchar *)dest;
- sector = find_sector(info, dest);
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_TO_BUFFER);
- if((retcode = flash_status_check(info, sector, info->buffer_write_tout,
- "write to buffer")) == ERR_OK) {
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- cnt = len;
- break;
- case FLASH_CFI_16BIT:
- cnt = len >> 1;
- break;
- case FLASH_CFI_32BIT:
- cnt = len >> 2;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- flash_write_cmd(info, sector, 0, (uchar)cnt-1);
- while(cnt-- > 0) {
- switch(info->portwidth) {
- case FLASH_CFI_8BIT:
- *dst.cp++ = *src.cp++;
- break;
- case FLASH_CFI_16BIT:
- *dst.wp++ = *src.wp++;
- break;
- case FLASH_CFI_32BIT:
- *dst.lp++ = *src.lp++;
- break;
- default:
- return ERR_INVAL;
- break;
- }
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_BUFFER_CONFIRM);
- retcode = flash_full_status_check(info, sector, info->buffer_write_tout,
- "buffer write");
- }
- flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
- return retcode;
-}
-#endif /* CFG_USE_FLASH_BUFFER_WRITE */
diff --git a/board/sbc405/u-boot.lds b/board/sbc405/u-boot.lds
deleted file mode 100644
index 39fba61684..0000000000
--- a/board/sbc405/u-boot.lds
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * (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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- cpu/ppc4xx/4xx_enet.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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/sbc8240/Makefile b/board/sbc8240/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/sbc8240/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/sbc8240/README b/board/sbc8240/README
deleted file mode 100644
index 71595b4bff..0000000000
--- a/board/sbc8240/README
+++ /dev/null
@@ -1,140 +0,0 @@
-The supported features of the SBC8240/8245 board are:
- 8240 or 8245 processor
- 66MHz & 100MHz bus speed
- Decrementer timer
- 1 UART channel (Console channel)
- 8240 Interrupt Controller
- 8240 PCI bridge
- 8240 Memory Controller
- SDRAM (16, 64 MB Memory DIMM)
- FLASH 512K On board
- FLASH 4MB On board
-
-
-Memory Map from CPU point of view:
-
- Start Size Access to
- -----------------------------------------------------
- 0x00000000 64MB SDRAM DIMM
- 0xFF000000 4MB On Board FLASH
- 0xFFF00000 512K On Board FLASH or SRAM (Configured by jumper)
- 0xFFE00000 8K EEPROM
- 0xFFE80000 8Bit LED
- 0xFFF80000 8Bit UART
-
-
-Setting the board Jumpers & Switches:
-
- In order to get the board running with the default configuration the
- jumpers need to be set as follows:
-
- General Jumpers:
- ____________________________________________
- | Jumpers | Jumpers | Jumpers |
- |-------------|--------------|---------------|
- |JP1 1-2 | JP14 1-2 | JP27 1-2 |
- |JP5 Open | JP15 1-2 | JP28 2-3 |
- |JP8 1-2 | JP16 1-2 | JP33 Open |
- |JP9 1-2 | JP17 1-2 | JP37 Close |
- |JP10 1-2 | JP18 1-2 | |
- |JP11 2-3 | JP19 1-2 | |
- |JP12 1-2 | JP20 1-2 | |
- |JP13 1-2 | JP25 Open | |
- |_____________|______________|_______________|
-
- Bus speed Jumpers:
- _________________________
- | 100MHz Bus | 66 MHz Bus |
- |------------|------------|
- | JP2 1-2 | JP2 1-2 |
- | JP3 1-2 | JP3 2-3 |
- | JP4 1-2 | JP4 2-3 |
- | JP6 1-2 | JP6 2-3 |
- | JP7 1-2 | JP7 1-2 |
- |____________|____________|
-
-
-U-Boot 1.1.2 (Jun 24 2004 - 17:01:04)
-
-CPU: MPC8240 Revision 1.1 at 247.500 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: sbc8240 Revision 255 Local Bus at 99 MHz
-DRAM: 64 MB
-FLASH: 512 kB
- 00 11 8086 1229 0200 00
-In: serial
-Out: serial
-Err: serial
-Net: i82559#0
-
-Welcome to U-Boot for the sbc8240
-
-Type ? or help to get on-line help
-
-Hit any key to stop autoboot: 0
-=> printenv
-bootcmd=version;echo;tftpboot $loadaddr $loadfile;bootvx
-bootdelay=5
-baudrate=9600
-ethaddr=DE:AD:BE:EF:01:01
-ipaddr=192.168.193.102
-preboot=echo;echo Welcome to U-Boot for the sbc8240;echo;echo Type "? or help" to get on-line help;echo
-netmask=255.255.255.248
-clocks_in_mhz=1
-bootargs=$fei(0,0)host:/T221ppc/target/config/sbc8240/vxWorks.st e=192.168.193.102 h=192.168.193.99 u=target pw=hello f=0x08 tn=sbc8240 o=fei
-ipaddr=192.168.193.102
-loadfile=vxWorks.st
-loadaddr=0x01000000
-net_load=tftpboot $loadaddr $loadfile
-serverip=192.168.193.99
-ethact=i82559#0
-stdin=serial
-stdout=serial
-stderr=serial
-
-Environment size: 631/16380 bytes
-=> boot
-
-U-Boot 1.1.2 (Jun 24 2004 - 17:01:04)
-
-Using i82559#0 device
-TFTP from server 192.168.193.99; our IP address is 192.168.193.102
-Filename 'vxWorks.st'.
-Load address: 0x1000000
-Loading: #################################################################
- #################################################################
- ##############################################################
-done
-Bytes transferred = 979927 (ef3d7 hex)
-## Ethernet MAC address not copied to NV RAM
-Loading .text @ 0x00100000 (758848 bytes)
-Loading .data @ 0x001b9440 (79904 bytes)
-Clearing .bss @ 0x001ccc60 (20288 bytes)
-## Using bootline (@ 0x4200): $fei(0,0)host:/T221ppc/target/config/sbc8240/vxWorks.st e=192.168.193.102 h=192.168.193.99 u=target pw=hello f=0x08 tn=sbc8240 o=fei
-## Starting vxWorks at 0x00100000 ...
-
-Adding 2845 symbols for standalone.
-
-
- ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
- ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
- ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
- ]]]]]]]]]]] ]]]] ]]]]]]]]]] ]] ]]]] (R)
- ] ]]]]]]]]] ]]]]]] ]]]]]]]] ]] ]]]]
- ]] ]]]]]]] ]]]]]]]] ]]]]]] ] ]] ]]]]
- ]]] ]]]]] ] ]]] ] ]]]] ]]] ]]]]]]]]] ]]]] ]] ]]]] ]] ]]]]]
- ]]]] ]]] ]] ] ]]] ]] ]]]]] ]]]]]] ]] ]]]]]]] ]]]] ]] ]]]]
- ]]]]] ] ]]]] ]]]]] ]]]]]]]] ]]]] ]] ]]]] ]]]]]]] ]]]]
- ]]]]]] ]]]]] ]]]]]] ] ]]]]] ]]]] ]] ]]]] ]]]]]]]] ]]]]
- ]]]]]]] ]]]]] ] ]]]]]] ] ]]] ]]]] ]] ]]]] ]]]] ]]]] ]]]]
- ]]]]]]]] ]]]]] ]]] ]]]]]]] ] ]]]]]]] ]]]] ]]]] ]]]] ]]]]]
- ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
- ]]]]]]]]]]]]]]]]]]]]]]]]]]]]] Development System
- ]]]]]]]]]]]]]]]]]]]]]]]]]]]]
- ]]]]]]]]]]]]]]]]]]]]]]]]]]] VxWorks version 5.5.1
- ]]]]]]]]]]]]]]]]]]]]]]]]]] KERNEL: WIND version 2.6
- ]]]]]]]]]]]]]]]]]]]]]]]]] Copyright Wind River Systems, Inc., 1984-2003
-
- CPU: MPC8240 -- Wind River BSP. SBC8240 Board. Processor #0.
- Memory Size: 0x2000000. BSP version 1.2/28.
-
-->
diff --git a/board/sbc8240/config.mk b/board/sbc8240/config.mk
deleted file mode 100644
index 1e97960520..0000000000
--- a/board/sbc8240/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (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
-#
-
-#
-# sbc8240 board
-#
-
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/sbc8240/flash.c b/board/sbc8240/flash.c
deleted file mode 100644
index dec615683e..0000000000
--- a/board/sbc8240/flash.c
+++ /dev/null
@@ -1,638 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-
-#if CFG_MAX_FLASH_BANKS != 1
-#error "CFG_MAX_FLASH_BANKS must be 1"
-#endif
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info);
-static int write_word (flash_info_t * info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-#define ADDR0 0x5555
-#define ADDR1 0x2aaa
-#define FLASH_WORD_SIZE unsigned char
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0;
-
- /* Init: no FLASHes known */
- flash_info[0].flash_id = FLASH_UNKNOWN;
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size ((vu_long *) FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 << 20);
- }
-
- /* Only one bank */
- /* Setup offsets */
- flash_get_offsets (FLASH_BASE0_PRELIM, &flash_info[0]);
-
- /* Monitor protection ON by default */
- (void) flash_protect (FLAG_PROTECT_SET,
- FLASH_BASE0_PRELIM,
- FLASH_BASE0_PRELIM + monitor_flash_len - 1,
- &flash_info[0]);
- flash_info[0].size = size_b0;
-
- return size_b0;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- (info->flash_id == FLASH_AM040)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf ("FUJITSU ");
- break;
- case FLASH_MAN_SST:
- printf ("SST ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- printf ("AM29F040 (512 Kbit, uniform sector size)\n");
- break;
- case FLASH_AM400B:
- printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T:
- printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B:
- printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T:
- printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B:
- printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T:
- printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B:
- printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_SST800A:
- printf ("SST39LF/VF800 (8 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST160A:
- printf ("SST39LF/VF160 (16 Mbit, uniform sector size)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count - 1))
- size = info->start[i + 1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *) info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k = 0; k < size; k++) {
- if (*flash++ != 0xffffffff) {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ", info->protect[i] ? "RO " : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_long * addr, flash_info_t * info)
-{
- short i;
- FLASH_WORD_SIZE value;
- ulong base = (ulong) addr;
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *) addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00900090;
-
- value = addr2[0];
-
- switch (value) {
- case (FLASH_WORD_SIZE) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FLASH_WORD_SIZE) FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (FLASH_WORD_SIZE) SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[1]; /* device ID */
-
- switch (value) {
- case (FLASH_WORD_SIZE) AMD_ID_F040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 ko */
- break;
- case (FLASH_WORD_SIZE) AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x0080000; /* => 512 ko */
- break;
- case (FLASH_WORD_SIZE) AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00080000;
- break; /* => 0.5 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 2 MB */
-#if 0 /* enable when device IDs are available */
- case (FLASH_WORD_SIZE) AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (FLASH_WORD_SIZE) AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#endif
- case (FLASH_WORD_SIZE) SST_ID_xF800A:
- info->flash_id += FLASH_SST800A;
- info->sector_count = 16;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (FLASH_WORD_SIZE) SST_ID_xF160A:
- info->flash_id += FLASH_SST160A;
- info->sector_count = 32;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- (info->flash_id == FLASH_AM040)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile FLASH_WORD_SIZE *) (info->start[i]);
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr2 = (FLASH_WORD_SIZE *) info->start[0];
- *addr2 = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-int wait_for_DQ7 (flash_info_t * info, int sect)
-{
- ulong start, now, last;
- volatile FLASH_WORD_SIZE *addr =
- (FLASH_WORD_SIZE *) (info->start[sect]);
-
- start = get_timer (0);
- last = start;
- while ((addr[0] & (FLASH_WORD_SIZE) 0x00800080) !=
- (FLASH_WORD_SIZE) 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return -1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *) (info->start[0]);
- volatile FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- int i;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (FLASH_WORD_SIZE *) (info->start[sect]);
- printf ("Erasing sector %p\n", addr2); /* CLH */
-
- if ((info->flash_id & FLASH_VENDMASK) ==
- FLASH_MAN_SST) {
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (FLASH_WORD_SIZE) 0x00500050; /* block erase */
- for (i = 0; i < 50; i++)
- udelay (1000); /* wait 1 ms */
- } else {
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (FLASH_WORD_SIZE) 0x00300030; /* sector erase */
- }
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- wait_for_DQ7 (info, sect);
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
-#if 0
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
- wait_for_DQ7 (info, l_sect);
-
- DONE:
-#endif
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_word (info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 =
- (FLASH_WORD_SIZE *) (info->start[0]);
- volatile FLASH_WORD_SIZE *dest2 = (FLASH_WORD_SIZE *) dest;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *) & data;
- ulong start;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile FLASH_WORD_SIZE *) dest) &
- (FLASH_WORD_SIZE) data) != (FLASH_WORD_SIZE) data) {
- return (2);
- }
-
- for (i = 0; i < 4 / sizeof (FLASH_WORD_SIZE); i++) {
- int flag;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE) 0x00800080)) {
-
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
diff --git a/board/sbc8240/sbc8240.c b/board/sbc8240/sbc8240.c
deleted file mode 100644
index 8a52f67418..0000000000
--- a/board/sbc8240/sbc8240.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * (C) Copyright 2001
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
- *
- * (C) Copyright 2001, 2002
- * 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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <pci.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define BOARD_REV_REG 0xFE80002B
-
-int checkboard (void)
-{
- char revision = *(volatile char *)(BOARD_REV_REG);
- char buf[32];
-
- puts ("Board: sbc8240 ");
- printf("Revision %d ", revision);
- printf("Local Bus at %s MHz\n", strmhz(buf, gd->bus_clk));
-
- return 0;
-}
-
-long int initdram(int board_type)
-{
- long size;
- long new_bank0_end;
- long mear1;
- long emear1;
-
- size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
-
- new_bank0_end = size - 1;
- mear1 = mpc824x_mpc107_getreg(MEAR1);
- emear1 = mpc824x_mpc107_getreg(EMEAR1);
- mear1 = (mear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
- emear1 = (emear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
- mpc824x_mpc107_setreg(MEAR1, mear1);
- mpc824x_mpc107_setreg(EMEAR1, emear1);
-
- return (size);
-}
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_sandpoint_config_table[] = {
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0f, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
-
- { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_sandpoint_config_table,
-#endif
-};
-
-void pci_init_board(void)
-{
- pci_mpc824x_init(&hose);
-}
-
-#ifdef CONFIG_MISC_INIT_R
-/* ------------------------------------------------------------------------- */
-int misc_init_r (void)
-{
-#ifdef CFG_LED_BASE
- *((unsigned char *) (CFG_LED_BASE)) = 0xFF;
-#endif /* CFG_LED_BASE */
-
- return (0);
-}
-#endif /* CONFIG_MISC_INIT_R */
diff --git a/board/sbc8240/u-boot.lds b/board/sbc8240/u-boot.lds
deleted file mode 100644
index 7be85e4410..0000000000
--- a/board/sbc8240/u-boot.lds
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/sbc8260/Makefile b/board/sbc8260/Makefile
deleted file mode 100644
index 422dbc7139..0000000000
--- a/board/sbc8260/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := sbc8260.o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/sbc8260/config.mk b/board/sbc8260/config.mk
deleted file mode 100644
index 1f18260ddb..0000000000
--- a/board/sbc8260/config.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (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
-#
-
-#
-# MBX8xx boards
-#
-
-TEXT_BASE = 0x40000000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/sbc8260/flash.c b/board/sbc8260/flash.c
deleted file mode 100644
index 9a8b95225f..0000000000
--- a/board/sbc8260/flash.c
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for AMD 29F080B devices
- *
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* for now, only support the 4 MB Flash SIMM */
- size = flash_get_size((vu_long *)CFG_FLASH0_BASE, &flash_info[0]);
-
- /*
- * protect monitor and environment sectors
- */
-
-#if CFG_MONITOR_BASE >= CFG_FLASH0_BASE
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
-
- return /*size*/ (CFG_FLASH0_SIZE * 1024 * 1024);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch ((info->flash_id >> 16) & 0xff) {
- case 0x1:
- printf ("AMD ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case AMD_ID_F040B:
- printf ("AM29F040B (4 Mbit)\n");
- break;
- case AMD_ID_F080B:
- printf ("AM29F080B (8 Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- vu_long vendor, devid;
- ulong base = (ulong)addr;
-
-/* printf("addr = %08lx\n", (unsigned long)addr); */
-
- /* Reset and Write auto select command: read Manufacturer ID */
- addr[0] = 0xf0f0f0f0;
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x90909090;
- udelay (1000);
-
- vendor = addr[0];
-/* printf("vendor = %08lx\n", vendor); */
- if (vendor != 0x01010101) {
- info->size = 0;
- goto out;
- }
-
- devid = addr[1];
-/* printf("devid = %08lx\n", devid); */
-
- if ((devid & 0xff) == AMD_ID_F080B) {
- info->flash_id = (vendor & 0xff) << 16 | AMD_ID_F080B;
- /* we have 16 sectors with 64KB each x 4 */
- info->sector_count = 16;
- info->size = 4 * info->sector_count * 64*1024;
- }
- else {
- info->size = 0;
- goto out;
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* sector base address */
- info->start[i] = base + i * (info->size / info->sector_count);
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /* reset command */
- addr = (vu_long *)info->start[0];
-
-out:
- addr[0] = 0xf0f0f0f0;
-
- return info->size;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0x80808080;
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- udelay (100);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x30303030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ((addr[0] & 0x80808080) != 0x80808080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0xF0F0F0F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0xAAAAAAAA;
- addr[0x02AA] = 0x55555555;
- addr[0x0555] = 0xA0A0A0A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x80808080) != (data & 0x80808080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/sbc8260/sbc8260.c b/board/sbc8260/sbc8260.c
deleted file mode 100644
index 48aefa010e..0000000000
--- a/board/sbc8260/sbc8260.c
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2001
- * Advent Networks, Inc. <http://www.adventnetworks.com>
- * Jay Monkman <jtm@smoothsmoothie.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
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 *ATMTXEN */
- /* PA30 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMTCA */
- /* PA29 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMTSOC */
- /* PA28 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 *ATMRXEN */
- /* PA27 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMRSOC */
- /* PA26 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMRCA */
- /* PA25 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[0] */
- /* PA24 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[1] */
- /* PA23 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[2] */
- /* PA22 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[3] */
- /* PA21 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[4] */
- /* PA20 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[5] */
- /* PA19 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[6] */
- /* PA18 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[7] */
- /* PA17 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[7] */
- /* PA16 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[6] */
- /* PA15 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[5] */
- /* PA14 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[4] */
- /* PA13 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[3] */
- /* PA12 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[2] */
- /* PA11 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[1] */
- /* PA10 */ { 1, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[0] */
- /* PA9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PA8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC2 RXD */
- /* PA7 */ { 1, 0, 0, 1, 0, 0 }, /* PA7 */
- /* PA6 */ { 1, 0, 0, 1, 0, 0 }, /* PA6 */
- /* PA5 */ { 1, 0, 0, 1, 0, 0 }, /* PA5 */
- /* PA4 */ { 1, 0, 0, 1, 0, 0 }, /* PA4 */
- /* PA3 */ { 1, 0, 0, 1, 0, 0 }, /* PA3 */
- /* PA2 */ { 1, 0, 0, 1, 0, 0 }, /* PA2 */
- /* PA1 */ { 1, 0, 0, 1, 0, 0 }, /* PA1 */
- /* PA0 */ { 1, 0, 0, 1, 0, 0 } /* PA0 */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { 1, 0, 0, 1, 0, 0 }, /* PB17 */
- /* PB16 */ { 1, 0, 0, 1, 0, 0 }, /* PB16 */
- /* PB15 */ { 1, 0, 0, 1, 0, 0 }, /* PB15 */
- /* PB14 */ { 1, 0, 0, 1, 0, 0 }, /* PB14 */
- /* PB13 */ { 1, 0, 0, 1, 0, 0 }, /* PB13 */
- /* PB12 */ { 1, 0, 0, 1, 0, 0 }, /* PB12 */
- /* PB11 */ { 1, 0, 0, 1, 0, 0 }, /* PB11 */
- /* PB10 */ { 1, 0, 0, 1, 0, 0 }, /* PB10 */
- /* PB9 */ { 1, 0, 0, 1, 0, 0 }, /* PB9 */
- /* PB8 */ { 1, 0, 0, 1, 0, 0 }, /* PB8 */
- /* PB7 */ { 1, 0, 0, 1, 0, 0 }, /* PB7 */
- /* PB6 */ { 1, 0, 0, 1, 0, 0 }, /* PB6 */
- /* PB5 */ { 1, 0, 0, 1, 0, 0 }, /* PB5 */
- /* PB4 */ { 1, 0, 0, 1, 0, 0 }, /* PB4 */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 1, 0, 0, 1, 0, 0 }, /* PC31 */
- /* PC30 */ { 1, 0, 0, 1, 0, 0 }, /* PC30 */
- /* PC29 */ { 1, 1, 1, 0, 0, 0 }, /* SCC1 EN *CLSN */
- /* PC28 */ { 1, 0, 0, 1, 0, 0 }, /* PC28 */
- /* PC27 */ { 1, 0, 0, 1, 0, 0 }, /* PC27 */
- /* PC26 */ { 1, 0, 0, 1, 0, 0 }, /* PC26 */
- /* PC25 */ { 1, 0, 0, 1, 0, 0 }, /* PC25 */
- /* PC24 */ { 1, 0, 0, 1, 0, 0 }, /* PC24 */
- /* PC23 */ { 1, 1, 0, 1, 0, 0 }, /* ATMTFCLK */
- /* PC22 */ { 1, 1, 0, 0, 0, 0 }, /* ATMRFCLK */
- /* PC21 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN RXCLK */
- /* PC20 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN TXCLK */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_CLK */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII TX_CLK */
- /* PC17 */ { 1, 0, 0, 1, 0, 0 }, /* PC17 */
- /* PC16 */ { 1, 0, 0, 1, 0, 0 }, /* PC16 */
- /* PC15 */ { 1, 0, 0, 1, 0, 0 }, /* PC15 */
- /* PC14 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN *CD */
- /* PC13 */ { 1, 0, 0, 1, 0, 0 }, /* PC13 */
- /* PC12 */ { 1, 0, 0, 1, 0, 0 }, /* PC12 */
- /* PC11 */ { 1, 0, 0, 1, 0, 0 }, /* PC11 */
- /* PC10 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MDC */
- /* PC9 */ { 1, 0, 0, 1, 0, 0 }, /* FCC2 MDIO */
- /* PC8 */ { 1, 0, 0, 1, 0, 0 }, /* PC8 */
- /* PC7 */ { 1, 0, 0, 1, 0, 0 }, /* PC7 */
- /* PC6 */ { 1, 0, 0, 1, 0, 0 }, /* PC6 */
- /* PC5 */ { 1, 0, 0, 1, 0, 0 }, /* PC5 */
- /* PC4 */ { 1, 0, 0, 1, 0, 0 }, /* PC4 */
- /* PC3 */ { 1, 0, 0, 1, 0, 0 }, /* PC3 */
- /* PC2 */ { 1, 0, 0, 1, 0, 1 }, /* ENET FDE */
- /* PC1 */ { 1, 0, 0, 1, 0, 0 }, /* ENET DSQE */
- /* PC0 */ { 1, 0, 0, 1, 0, 0 }, /* ENET LBK */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN RxD */
- /* PD30 */ { 1, 1, 1, 1, 0, 0 }, /* SCC1 EN TxD */
- /* PD29 */ { 1, 1, 0, 1, 0, 0 }, /* SCC1 EN TENA */
- /* PD28 */ { 1, 0, 0, 1, 0, 0 }, /* PD28 */
- /* PD27 */ { 1, 0, 0, 1, 0, 0 }, /* PD27 */
- /* PD26 */ { 1, 0, 0, 1, 0, 0 }, /* PD26 */
- /* PD25 */ { 1, 0, 0, 1, 0, 0 }, /* PD25 */
- /* PD24 */ { 1, 0, 0, 1, 0, 0 }, /* PD24 */
- /* PD23 */ { 1, 0, 0, 1, 0, 0 }, /* PD23 */
- /* PD22 */ { 1, 0, 0, 1, 0, 0 }, /* PD22 */
- /* PD21 */ { 1, 0, 0, 1, 0, 0 }, /* PD21 */
- /* PD20 */ { 1, 0, 0, 1, 0, 0 }, /* PD20 */
- /* PD19 */ { 1, 0, 0, 1, 0, 0 }, /* PD19 */
- /* PD18 */ { 1, 0, 0, 1, 0, 0 }, /* PD18 */
- /* PD17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXPRTY */
- /* PD16 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXPRTY */
-#if defined(CONFIG_SOFT_I2C)
- /* PD15 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SDA */
- /* PD14 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#else /* normal I/O port pins */
- /* PD15 */ { 1, 0, 0, 1, 0, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 0, 0, 1, 0, 0 }, /* I2C SCL */
-#endif
-#endif
- /* PD13 */ { 1, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 1, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 1, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 1, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PD8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PD7 */ { 1, 0, 0, 1, 0, 1 }, /* PD7 */
- /* PD6 */ { 1, 0, 0, 1, 0, 1 }, /* PD6 */
- /* PD5 */ { 1, 0, 0, 1, 0, 1 }, /* PD5 */
- /* PD4 */ { 1, 0, 0, 1, 0, 1 }, /* PD4 */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: EST SBC8260\n");
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
- volatile uchar c = 0, *ramaddr = (uchar *) (CFG_SDRAM_BASE + 0x8);
- ulong psdmr = CFG_PSDMR;
- int i;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_mptpr = CFG_MPTPR;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_PREA;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;
- *ramaddr = c;
-
- memctl->memc_psdmr = psdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *ramaddr = c;
-
- /* return total ram size */
- return (CFG_SDRAM0_SIZE * 1024 * 1024);
-}
-
-#ifdef CONFIG_MISC_INIT_R
-/* ------------------------------------------------------------------------- */
-int misc_init_r (void)
-{
-#ifdef CFG_LED_BASE
- uchar ds = *(unsigned char *) (CFG_LED_BASE + 1);
- uchar ss;
- uchar tmp[64];
- int res;
-
- if ((ds != 0) && (ds != 0xff)) {
- res = getenv_r ("ethaddr", tmp, sizeof (tmp));
- if (res > 0) {
- ss = ((ds >> 4) & 0x0f);
- ss += ss < 0x0a ? '0' : ('a' - 10);
- tmp[15] = ss;
-
- ss = (ds & 0x0f);
- ss += ss < 0x0a ? '0' : ('a' - 10);
- tmp[16] = ss;
-
- tmp[17] = '\0';
- setenv ("ethaddr", tmp);
- /* set the led to show the address */
- *((unsigned char *) (CFG_LED_BASE + 1)) = ds;
- }
- }
-#endif /* CFG_LED_BASE */
- return (0);
-}
-#endif /* CONFIG_MISC_INIT_R */
diff --git a/board/sbc8260/u-boot.lds b/board/sbc8260/u-boot.lds
deleted file mode 100644
index 9e623d0b93..0000000000
--- a/board/sbc8260/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (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
- */
-
-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/mpc8260/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/sc520_cdp/Makefile b/board/sc520_cdp/Makefile
deleted file mode 100644
index e19be51c30..0000000000
--- a/board/sc520_cdp/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2002
-# Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
-#
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := sc520_cdp.o flash.o
-SOBJS := sc520_cdp_asm.o sc520_cdp_asm16.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/sc520_cdp/config.mk b/board/sc520_cdp/config.mk
deleted file mode 100644
index 2253815647..0000000000
--- a/board/sc520_cdp/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (C) Copyright 2002
-# Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
-#
-# 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
-#
-
-
-TEXT_BASE = 0x387c0000
diff --git a/board/sc520_cdp/flash.c b/board/sc520_cdp/flash.c
deleted file mode 100644
index d52a847c73..0000000000
--- a/board/sc520_cdp/flash.c
+++ /dev/null
@@ -1,637 +0,0 @@
-/*
- * (C) Copyright 2002, 2003
- * Daniel Engström, Omicron Ceti AB, daniel@omicron.se
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@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
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <pci.h>
-#include <asm/ic/sc520.h>
-
-#define PROBE_BUFFER_SIZE 1024
-static unsigned char buffer[PROBE_BUFFER_SIZE];
-
-#define SC520_MAX_FLASH_BANKS 3
-#define SC520_FLASH_BANK0_BASE 0x38000000 /* BOOTCS */
-#define SC520_FLASH_BANK1_BASE 0x30000000 /* ROMCS0 */
-#define SC520_FLASH_BANK2_BASE 0x28000000 /* ROMCS1 */
-#define SC520_FLASH_BANKSIZE 0x8000000
-
-#define AMD29LV016B_SIZE 0x200000
-#define AMD29LV016B_SECTORS 32
-
-flash_info_t flash_info[SC520_MAX_FLASH_BANKS];
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-/*-----------------------------------------------------------------------
- */
-
-
-static u32 _probe_flash(u32 addr, u32 bw, int il)
-{
- u32 result=0;
-
- /* First do an unlock cycle for the benefit of
- * devices that need it */
-
- switch (bw) {
-
- case 1:
- *(volatile u8*)(addr+0x5555) = 0xaa;
- *(volatile u8*)(addr+0x2aaa) = 0x55;
- *(volatile u8*)(addr+0x5555) = 0x90;
-
- /* Read vendor */
- result = *(volatile u8*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u8*)(addr+2);
-
- /* Return device to data mode */
- *(volatile u8*)addr = 0xff;
- *(volatile u8*)(addr+0x5555), 0xf0;
- break;
-
- case 2:
- *(volatile u16*)(addr+0xaaaa) = 0xaaaa;
- *(volatile u16*)(addr+0x5554) = 0x5555;
-
- /* Issue identification command */
- if (il == 2) {
- *(volatile u16*)(addr+0xaaaa) = 0x9090;
-
- /* Read vendor */
- result = *(volatile u8*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u8*)(addr+2);
-
- /* Return device to data mode */
- *(volatile u16*)addr = 0xffff;
- *(volatile u16*)(addr+0xaaaa), 0xf0f0;
-
- } else {
- *(volatile u8*)(addr+0xaaaa) = 0x90;
- /* Read vendor */
- result = *(volatile u16*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u16*)(addr+2);
-
- /* Return device to data mode */
- *(volatile u8*)addr = 0xff;
- *(volatile u8*)(addr+0xaaaa), 0xf0;
- }
-
- break;
-
- case 4:
- *(volatile u32*)(addr+0x5554) = 0xaaaaaaaa;
- *(volatile u32*)(addr+0xaaa8) = 0x55555555;
-
- switch (il) {
- case 1:
- /* Issue identification command */
- *(volatile u8*)(addr+0x5554) = 0x90;
-
- /* Read vendor */
- result = *(volatile u16*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u16*)(addr+4);
-
- /* Return device to data mode */
- *(volatile u8*)addr = 0xff;
- *(volatile u8*)(addr+0x5554), 0xf0;
- break;
-
- case 2:
- /* Issue identification command */
- *(volatile u32*)(addr + 0x5554) = 0x00900090;
-
- /* Read vendor */
- result = *(volatile u16*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u16*)(addr+4);
-
- /* Return device to data mode */
- *(volatile u32*)addr = 0x00ff00ff;
- *(volatile u32*)(addr+0x5554), 0x00f000f0;
- break;
-
- case 4:
- /* Issue identification command */
- *(volatile u32*)(addr+0x5554) = 0x90909090;
-
- /* Read vendor */
- result = *(volatile u8*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u8*)(addr+4);
-
- /* Return device to data mode */
- *(volatile u32*)addr = 0xffffffff;
- *(volatile u32*)(addr+0x5554), 0xf0f0f0f0;
- break;
- }
- break;
- }
-
-
- return result;
-}
-
-extern int _probe_flash_end;
-asm ("_probe_flash_end:\n"
- ".long 0\n");
-
-static int identify_flash(unsigned address, int width)
-{
- int is;
- int device;
- int vendor;
- int size;
- unsigned res;
-
- u32 (*_probe_flash_ptr)(u32 a, u32 bw, int il);
-
- size = (unsigned)&_probe_flash_end - (unsigned)_probe_flash;
-
- if (size > PROBE_BUFFER_SIZE) {
- printf("_probe_flash() routine too large (%d) %p - %p\n",
- size, &_probe_flash_end, _probe_flash);
- return 0;
- }
-
- memcpy(buffer, _probe_flash, size);
- _probe_flash_ptr = (void*)buffer;
-
- is = disable_interrupts();
- res = _probe_flash_ptr(address, width, 1);
- if (is) {
- enable_interrupts();
- }
-
-
- vendor = res >> 16;
- device = res & 0xffff;
-
-
- return res;
-}
-
-ulong flash_init(void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < SC520_MAX_FLASH_BANKS; i++) {
- unsigned id;
- ulong flashbase = 0;
- int sectsize = 0;
-
- memset(flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- switch (i) {
- case 0:
- flashbase = SC520_FLASH_BANK0_BASE;
- break;
- case 1:
- flashbase = SC520_FLASH_BANK1_BASE;
- break;
- case 2:
- flashbase = SC520_FLASH_BANK2_BASE;
- break;
- default:
- panic("configured too many flash banks!\n");
- }
-
- id = identify_flash(flashbase, 4);
- switch (id & 0x00ff00ff) {
- case 0x000100c8:
- /* 29LV016B/29LV017B */
- flash_info[i].flash_id =
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV016B & FLASH_TYPEMASK);
-
- flash_info[i].size = AMD29LV016B_SIZE*4;
- flash_info[i].sector_count = AMD29LV016B_SECTORS;
- sectsize = (AMD29LV016B_SIZE*4)/AMD29LV016B_SECTORS;
- printf("Bank %d: 4 x AMD 29LV017B\n", i);
- break;
-
-
- default:
- printf("Bank %d have unknown flash %08x\n", i, id);
- flash_info[i].flash_id = FLASH_UNKNOWN;
- continue;
- }
-
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] = flashbase + j * sectsize;
- }
- size += flash_info[i].size;
-
- flash_protect(FLAG_PROTECT_CLEAR,
- flash_info[i].start[0],
- flash_info[i].start[0] + flash_info[i].size - 1,
- &flash_info[i]);
- }
-
- /*
- * Protect monitor and environment sectors
- */
- flash_protect(FLAG_PROTECT_SET,
- i386boot_start,
- i386boot_end,
- &flash_info[0]);
-#ifdef CFG_ENV_ADDR
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t *info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
-
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf("AMD: ");
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_LV016B & FLASH_TYPEMASK):
- printf("4x AMD29LV017B (4x16Mbit)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- goto done;
- break;
- }
-
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
-
- printf(" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
-done: ;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/* this needs to be inlined, the SWTMRMMILLI register is reset by each read */
-#define __udelay(delay) \
-{ \
- unsigned micro; \
- unsigned milli=0; \
- \
- micro = *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI); \
- \
- for (;;) { \
- \
- milli += *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI); \
- micro = *(volatile u16*)(0xfffef000+SC520_SWTMRMICRO); \
- \
- if ((delay) <= (micro + (milli * 1000))) { \
- break; \
- } \
- } \
-} while (0)
-
-static u32 _amd_erase_flash(u32 addr, u32 sector)
-{
- unsigned elapsed;
-
- /* Issue erase */
- *(volatile u32*)(addr + 0x5554) = 0xAAAAAAAA;
- *(volatile u32*)(addr + 0xaaa8) = 0x55555555;
- *(volatile u32*)(addr + 0x5554) = 0x80808080;
- /* And one unlock */
- *(volatile u32*)(addr + 0x5554) = 0xAAAAAAAA;
- *(volatile u32*)(addr + 0xaaa8) = 0x55555555;
- /* Sector erase command comes last */
- *(volatile u32*)(addr + sector) = 0x30303030;
-
- elapsed = *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI); /* dummy read */
- elapsed = 0;
- __udelay(50);
- while (((*(volatile u32*)(addr + sector)) & 0x80808080) != 0x80808080) {
-
- elapsed += *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI);
- if (elapsed > ((CFG_FLASH_ERASE_TOUT/CFG_HZ) * 1000)) {
- *(volatile u32*)(addr) = 0xf0f0f0f0;
- return 1;
- }
- }
-
- *(volatile u32*)(addr) = 0xf0f0f0f0;
-
- return 0;
-}
-
-extern int _amd_erase_flash_end;
-asm ("_amd_erase_flash_end:\n"
- ".long 0\n");
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- u32 (*_erase_flash_ptr)(u32 a, u32 so);
- int prot;
- int sect;
- unsigned size;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("- missing\n");
- } else {
- printf("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == (AMD_MANUFACT & FLASH_VENDMASK)) {
- size = (unsigned)&_amd_erase_flash_end - (unsigned)_amd_erase_flash;
-
- if (size > PROBE_BUFFER_SIZE) {
- printf("_amd_erase_flash() routine too large (%d) %p - %p\n",
- size, &_amd_erase_flash_end, _amd_erase_flash);
- return 0;
- }
-
- memcpy(buffer, _amd_erase_flash, size);
- _erase_flash_ptr = (void*)buffer;
-
- } else {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
-
- if (info->protect[sect] == 0) { /* not protected */
- int res;
- int flag;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- res = _erase_flash_ptr(info->start[0], info->start[sect]-info->start[0]);
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
-
- if (res) {
- printf("Erase timed out, sector %d\n", sect);
- return res;
- }
-
- putc('.');
- }
- }
-
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int _amd_write_word(unsigned start, unsigned dest, unsigned data)
-{
- volatile u32 *addr2 = (u32*)start;
- volatile u32 *dest2 = (u32*)dest;
- volatile u32 *data2 = (u32*)&data;
- unsigned elapsed;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile u32*)dest) & (u32)data) != (u32)data) {
- return 2;
- }
-
- addr2[0x5554] = 0xAAAAAAAA;
- addr2[0xaaa8] = 0x55555555;
- addr2[0x5554] = 0xA0A0A0A0;
-
- dest2[0] = data;
-
- elapsed = *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI); /* dummy read */
- elapsed = 0;
-
- /* data polling for D7 */
- while ((dest2[0] & 0x80808080) != (data2[0] & 0x80808080)) {
- elapsed += *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI);
- if (elapsed > ((CFG_FLASH_WRITE_TOUT/CFG_HZ) * 1000)) {
- addr2[0] = 0xf0f0f0f0;
- return 1;
- }
- }
-
-
- addr2[0] = 0xf0f0f0f0;
-
- return 0;
-}
-
-extern int _amd_write_word_end;
-asm ("_amd_write_word_end:\n"
- ".long 0\n");
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 3 - Unsupported flash type
- */
-
-int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
- int flag;
- u32 (*_write_word_ptr)(unsigned start, unsigned dest, unsigned data);
- unsigned size;
-
- if ((info->flash_id & FLASH_VENDMASK) == (AMD_MANUFACT & FLASH_VENDMASK)) {
- size = (unsigned)&_amd_write_word_end - (unsigned)_amd_write_word;
-
- if (size > PROBE_BUFFER_SIZE) {
- printf("_amd_write_word() routine too large (%d) %p - %p\n",
- size, &_amd_write_word_end, _amd_write_word);
- return 0;
- }
-
- memcpy(buffer, _amd_write_word, size);
- _write_word_ptr = (void*)buffer;
-
- } else {
- printf ("Can't program unknown flash type - aborted\n");
- return 3;
- }
-
-
- wp = (addr & ~3); /* get lower word aligned address */
-
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data |= (*(uchar *)cp) << (8*i);
- }
- for (; i<4 && cnt>0; ++i) {
- data |= *src++ << (8*i);
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data |= (*(uchar *)cp) << (8*i);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- rc = _write_word_ptr(info->start[0], wp, data);
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
- if (rc != 0) {
- return rc;
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
-
- for (i=0; i<4; ++i) {
- data |= *src++ << (8*i);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- rc = _write_word_ptr(info->start[0], wp, data);
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
- if (rc != 0) {
- return rc;
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return 0;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data |= *src++ << (8*i);
- --cnt;
- }
-
- for (; i<4; ++i, ++cp) {
- data |= (*(uchar *)cp) << (8*i);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- rc = _write_word_ptr(info->start[0], wp, data);
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
- return rc;
-
-}
diff --git a/board/sc520_cdp/flash_old.c b/board/sc520_cdp/flash_old.c
deleted file mode 100644
index 3c0f6d6a68..0000000000
--- a/board/sc520_cdp/flash_old.c
+++ /dev/null
@@ -1,458 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB, daniel@omicron.se
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@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
- */
-
-#include <common.h>
-#include <asm/io.h>
-
-ulong myflush(void);
-
-
-#define SC520_MAX_FLASH_BANKS 3
-#define SC520_FLASH_BANK0_BASE 0x38000000 /* BOOTCS */
-#define SC520_FLASH_BANK1_BASE 0x30000000 /* ROMCS0 */
-#define SC520_FLASH_BANK2_BASE 0x28000000 /* ROMCS1 */
-#define SC520_FLASH_BANKSIZE 0x8000000
-
-#define AMD29LV016_SIZE 0x200000
-#define AMD29LV016_SECTORS 32
-
-flash_info_t flash_info[SC520_MAX_FLASH_BANKS];
-
-#define CMD_READ_ARRAY 0x00F000F0
-#define CMD_UNLOCK1 0x00AA00AA
-#define CMD_UNLOCK2 0x00550055
-#define CMD_ERASE_SETUP 0x00800080
-#define CMD_ERASE_CONFIRM 0x00300030
-#define CMD_PROGRAM 0x00A000A0
-#define CMD_UNLOCK_BYPASS 0x00200020
-
-
-#define BIT_ERASE_DONE 0x00800080
-#define BIT_RDY_MASK 0x00800080
-#define BIT_PROGRAM_ERROR 0x00200020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init(void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < SC520_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
- int sectsize = 0;
- if (i==0 || i==2) {
- /* FixMe: this assumes that bank 0 and 2
- * are mapped to the two 8Mb banks */
- flash_info[i].flash_id =
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV016B & FLASH_TYPEMASK);
-
- flash_info[i].size = AMD29LV016_SIZE*4;
- flash_info[i].sector_count = AMD29LV016_SECTORS;
- sectsize = (AMD29LV016_SIZE*4)/AMD29LV016_SECTORS;
- } else {
- /* FixMe: this assumes that bank1 is unmapped
- * (or mapped to the same flash bank as BOOTCS) */
- flash_info[i].flash_id = 0;
- flash_info[i].size = 0;
- flash_info[i].sector_count = 0;
- sectsize=0;
- }
- memset(flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- switch (i) {
- case 0:
- flashbase = SC520_FLASH_BANK0_BASE;
- break;
- case 1:
- flashbase = SC520_FLASH_BANK1_BASE;
- break;
- case 2:
- flashbase = SC520_FLASH_BANK0_BASE;
- break;
- default:
- panic("configured too many flash banks!\n");
- }
-
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] = sectsize;
- flash_info[i].start[j] = flashbase + j * sectsize;
- }
- size += flash_info[i].size;
- }
-
- /*
- * Protect monitor and environment sectors
- */
- flash_protect(FLAG_PROTECT_SET,
- i386boot_start-SC520_FLASH_BANK0_BASE,
- i386boot_end-SC520_FLASH_BANK0_BASE,
- &flash_info[0]);
-
-#ifdef CFG_ENV_ADDR
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t *info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf("AMD: ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_LV016B & FLASH_TYPEMASK):
- printf("4x Amd29LV016B (16Mbit)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- goto done;
- break;
- }
-
- printf(" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
- done:
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- ulong result;
- int iflag, prot, sect;
- int rc = ERR_OK;
- int chip1, chip2;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return ERR_UNKNOWN_FLASH_TYPE;
- }
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (AMD_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- return ERR_PROTECTED;
- }
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- iflag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && !ctrlc(); sect++) {
- printf("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer();
-
- if (info->protect[sect] == 0) {
- /* not protected */
- ulong addr = info->start[sect];
-
- writel(CMD_UNLOCK1, addr + 1);
- writel(CMD_UNLOCK2, addr + 2);
- writel(CMD_ERASE_SETUP, addr + 1);
-
- writel(CMD_UNLOCK1, addr + 1);
- writel(CMD_UNLOCK2, addr + 2);
- writel(CMD_ERASE_CONFIRM, addr);
-
-
- /* wait until flash is ready */
- chip1 = chip2 = 0;
-
- do {
- result = readl(addr);
-
- /* check timeout */
- if (get_timer(0) > CFG_FLASH_ERASE_TOUT) {
- writel(CMD_READ_ARRAY, addr + 1);
- chip1 = TMO;
- break;
- }
-
- if (!chip1 && (result & 0xFFFF) & BIT_ERASE_DONE) {
- chip1 = READY;
- }
-
- if (!chip1 && (result & 0xFFFF) & BIT_PROGRAM_ERROR) {
- chip1 = ERR;
- }
-
- if (!chip2 && (result >> 16) & BIT_ERASE_DONE) {
- chip2 = READY;
- }
-
- if (!chip2 && (result >> 16) & BIT_PROGRAM_ERROR) {
- chip2 = ERR;
- }
-
- } while (!chip1 || !chip2);
-
- writel(CMD_READ_ARRAY, addr + 1);
-
- if (chip1 == ERR || chip2 == ERR) {
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
-
- if (chip1 == TMO) {
- rc = ERR_TIMOUT;
- goto outahere;
- }
-
- printf("ok.\n");
- } else { /* it was protected */
-
- printf("protected!\n");
- }
- }
-
- if (ctrlc()) {
- printf("User Interrupt!\n");
- }
-
-outahere:
- /* allow flash to settle - wait 10 ms */
- udelay(10000);
-
- if (iflag) {
- enable_interrupts();
- }
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-volatile static int write_word(flash_info_t *info, ulong dest, ulong data)
-{
- ulong addr = dest;
- ulong result;
- int rc = ERR_OK;
- int iflag;
- int chip1, chip2;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = readl(addr);
- if ((result & data) != data) {
- return ERR_NOT_ERASED;
- }
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- iflag = disable_interrupts();
-
- writel(CMD_UNLOCK1, addr + 1);
- writel(CMD_UNLOCK2, addr + 2);
- writel(CMD_UNLOCK_BYPASS, addr + 1);
- writel(addr, CMD_PROGRAM);
- writel(addr, data);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer();
-
- /* wait until flash is ready */
- chip1 = chip2 = 0;
- do {
- result = readl(addr);
-
- /* check timeout */
- if (get_timer(0) > CFG_FLASH_ERASE_TOUT) {
- chip1 = ERR | TMO;
- break;
- }
-
- if (!chip1 && ((result & 0x80) == (data & 0x80))) {
- chip1 = READY;
- }
-
- if (!chip1 && ((result & 0xFFFF) & BIT_PROGRAM_ERROR)) {
- result = readl(addr);
-
- if ((result & 0x80) == (data & 0x80)) {
- chip1 = READY;
- } else {
- chip1 = ERR;
- }
- }
-
- if (!chip2 && ((result & (0x80 << 16)) == (data & (0x80 << 16)))) {
- chip2 = READY;
- }
-
- if (!chip2 && ((result >> 16) & BIT_PROGRAM_ERROR)) {
- result = readl(addr);
-
- if ((result & (0x80 << 16)) == (data & (0x80 << 16))) {
- chip2 = READY;
- } else {
- chip2 = ERR;
- }
- }
-
- } while (!chip1 || !chip2);
-
- writel(CMD_READ_ARRAY, addr);
-
- if (chip1 == ERR || chip2 == ERR || readl(addr) != data) {
- rc = ERR_PROG_ERROR;
- }
-
- if (iflag) {
- enable_interrupts();
- }
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int l;
- int i, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return rc;
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = *((vu_long*)src);
- if ((rc = write_word(info, wp, data)) != 0) {
- return rc;
- }
- src += 4;
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
-
- return write_word(info, wp, data);
-}
diff --git a/board/sc520_cdp/sc520_cdp.c b/board/sc520_cdp/sc520_cdp.c
deleted file mode 100644
index b6add59bb4..0000000000
--- a/board/sc520_cdp/sc520_cdp.c
+++ /dev/null
@@ -1,630 +0,0 @@
-/*
- *
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB <daniel@omicron.se>.
- *
- * 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 <common.h>
-#include <pci.h>
-#include <asm/io.h>
-#include <asm/pci.h>
-#include <asm/ic/sc520.h>
-#include <asm/ic/ali512x.h>
-#include <spi.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#undef SC520_CDP_DEBUG
-
-#ifdef SC520_CDP_DEBUG
-#define PRINTF(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Theory:
- * We first set up all IRQs to be non-pci, edge triggered,
- * when we later enumerate the pci bus and pci_sc520_fixup_irq() gets
- * called we reallocate irqs to the pci bus with sc520_pci_set_irq()
- * as needed. Whe choose the irqs to gram from a configurable list
- * inside pci_sc520_fixup_irq() (If this list contains stupid irq's
- * such as 0 thngas will not work)
- */
-
-static void irq_init(void)
-{
- /* disable global interrupt mode */
- write_mmcr_byte(SC520_PICICR, 0x40);
-
- /* set all irqs to edge */
- write_mmcr_byte(SC520_MPICMODE, 0x00);
- write_mmcr_byte(SC520_SL1PICMODE, 0x00);
- write_mmcr_byte(SC520_SL2PICMODE, 0x00);
-
- /* active low polarity on PIC interrupt pins,
- * active high polarity on all other irq pins */
- write_mmcr_word(SC520_INTPINPOL, 0x0000);
-
- /* set irq number mapping */
- write_mmcr_byte(SC520_GPTMR0MAP, SC520_IRQ_DISABLED); /* disable GP timer 0 INT */
- write_mmcr_byte(SC520_GPTMR1MAP, SC520_IRQ_DISABLED); /* disable GP timer 1 INT */
- write_mmcr_byte(SC520_GPTMR2MAP, SC520_IRQ_DISABLED); /* disable GP timer 2 INT */
- write_mmcr_byte(SC520_PIT0MAP, SC520_IRQ0); /* Set PIT timer 0 INT to IRQ0 */
- write_mmcr_byte(SC520_PIT1MAP, SC520_IRQ_DISABLED); /* disable PIT timer 1 INT */
- write_mmcr_byte(SC520_PIT2MAP, SC520_IRQ_DISABLED); /* disable PIT timer 2 INT */
- write_mmcr_byte(SC520_PCIINTAMAP, SC520_IRQ_DISABLED); /* disable PCI INT A */
- write_mmcr_byte(SC520_PCIINTBMAP, SC520_IRQ_DISABLED); /* disable PCI INT B */
- write_mmcr_byte(SC520_PCIINTCMAP, SC520_IRQ_DISABLED); /* disable PCI INT C */
- write_mmcr_byte(SC520_PCIINTDMAP, SC520_IRQ_DISABLED); /* disable PCI INT D */
- write_mmcr_byte(SC520_DMABCINTMAP, SC520_IRQ_DISABLED); /* disable DMA INT */
- write_mmcr_byte(SC520_SSIMAP, SC520_IRQ_DISABLED); /* disable Synchronius serial INT */
- write_mmcr_byte(SC520_WDTMAP, SC520_IRQ_DISABLED); /* disable Watchdog INT */
- write_mmcr_byte(SC520_RTCMAP, SC520_IRQ8); /* Set RTC int to 8 */
- write_mmcr_byte(SC520_WPVMAP, SC520_IRQ_DISABLED); /* disable write protect INT */
- write_mmcr_byte(SC520_ICEMAP, SC520_IRQ1); /* Set ICE Debug Serielport INT to IRQ1 */
- write_mmcr_byte(SC520_FERRMAP,SC520_IRQ13); /* Set FP error INT to IRQ13 */
-
- if (CFG_USE_SIO_UART) {
- write_mmcr_byte(SC520_UART1MAP, SC520_IRQ_DISABLED); /* disable internal UART1 INT */
- write_mmcr_byte(SC520_UART2MAP, SC520_IRQ_DISABLED); /* disable internal UART2 INT */
- write_mmcr_byte(SC520_GP3IMAP, SC520_IRQ3); /* Set GPIRQ3 (ISA IRQ3) to IRQ3 */
- write_mmcr_byte(SC520_GP4IMAP, SC520_IRQ4); /* Set GPIRQ4 (ISA IRQ4) to IRQ4 */
- } else {
- write_mmcr_byte(SC520_UART1MAP, SC520_IRQ4); /* Set internal UART2 INT to IRQ4 */
- write_mmcr_byte(SC520_UART2MAP, SC520_IRQ3); /* Set internal UART2 INT to IRQ3 */
- write_mmcr_byte(SC520_GP3IMAP, SC520_IRQ_DISABLED); /* disable GPIRQ3 (ISA IRQ3) */
- write_mmcr_byte(SC520_GP4IMAP, SC520_IRQ_DISABLED); /* disable GPIRQ4 (ISA IRQ4) */
- }
-
- write_mmcr_byte(SC520_GP1IMAP, SC520_IRQ1); /* Set GPIRQ1 (SIO IRQ1) to IRQ1 */
- write_mmcr_byte(SC520_GP5IMAP, SC520_IRQ5); /* Set GPIRQ5 (ISA IRQ5) to IRQ5 */
- write_mmcr_byte(SC520_GP6IMAP, SC520_IRQ6); /* Set GPIRQ6 (ISA IRQ6) to IRQ6 */
- write_mmcr_byte(SC520_GP7IMAP, SC520_IRQ7); /* Set GPIRQ7 (ISA IRQ7) to IRQ7 */
- write_mmcr_byte(SC520_GP8IMAP, SC520_IRQ8); /* Set GPIRQ8 (SIO IRQ8) to IRQ8 */
- write_mmcr_byte(SC520_GP9IMAP, SC520_IRQ9); /* Set GPIRQ9 (ISA IRQ2) to IRQ9 */
- write_mmcr_byte(SC520_GP0IMAP, SC520_IRQ11); /* Set GPIRQ0 (ISA IRQ11) to IRQ10 */
- write_mmcr_byte(SC520_GP2IMAP, SC520_IRQ12); /* Set GPIRQ2 (ISA IRQ12) to IRQ12 */
- write_mmcr_byte(SC520_GP10IMAP,SC520_IRQ14); /* Set GPIRQ10 (ISA IRQ14) to IRQ14 */
-
- write_mmcr_word(SC520_PCIHOSTMAP, 0x11f); /* Map PCI hostbridge INT to NMI */
- write_mmcr_word(SC520_ECCMAP, 0x100); /* Map SDRAM ECC failure INT to NMI */
-
-}
-
-
-/* PCI stuff */
-static void pci_sc520_cdp_fixup_irq(struct pci_controller *hose, pci_dev_t dev)
-{
- /* a configurable lists of irqs to steal
- * when we need one (a board with more pci interrupt pins
- * would use a larger table */
- static int irq_list[] = {
- CFG_FIRST_PCI_IRQ,
- CFG_SECOND_PCI_IRQ,
- CFG_THIRD_PCI_IRQ,
- CFG_FORTH_PCI_IRQ
- };
- static int next_irq_index=0;
-
- char tmp_pin;
- int pin;
-
- pci_hose_read_config_byte(hose, dev, PCI_INTERRUPT_PIN, &tmp_pin);
- pin = tmp_pin;
-
- pin-=1; /* pci config space use 1-based numbering */
- if (-1 == pin) {
- return; /* device use no irq */
- }
-
-
- /* map device number + pin to a pin on the sc520 */
- switch (PCI_DEV(dev)) {
- case 20:
- pin+=SC520_PCI_INTA;
- break;
-
- case 19:
- pin+=SC520_PCI_INTB;
- break;
-
- case 18:
- pin+=SC520_PCI_INTC;
- break;
-
- case 17:
- pin+=SC520_PCI_INTD;
- break;
-
- default:
- return;
- }
-
- pin&=3; /* wrap around */
-
- if (sc520_pci_ints[pin] == -1) {
- /* re-route one interrupt for us */
- if (next_irq_index > 3) {
- return;
- }
- if (pci_sc520_set_irq(pin, irq_list[next_irq_index])) {
- return;
- }
- next_irq_index++;
- }
-
-
- if (-1 != sc520_pci_ints[pin]) {
- pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE,
- sc520_pci_ints[pin]);
- }
- PRINTF("fixup_irq: device %d pin %c irq %d\n",
- PCI_DEV(dev), 'A' + pin, sc520_pci_ints[pin]);
-}
-
-static struct pci_controller sc520_cdp_hose = {
- fixup_irq: pci_sc520_cdp_fixup_irq,
-};
-
-void pci_init_board(void)
-{
- pci_sc520_init(&sc520_cdp_hose);
-}
-
-
-static void silence_uart(int port)
-{
- outb(0, port+1);
-}
-
-void setup_ali_sio(int uart_primary)
-{
- ali512x_init();
-
- ali512x_set_fdc(ALI_ENABLED, 0x3f2, 6, 0);
- ali512x_set_pp(ALI_ENABLED, 0x278, 7, 3);
- ali512x_set_uart(ALI_ENABLED, ALI_UART1, uart_primary?0x3f8:0x3e8, 4);
- ali512x_set_uart(ALI_ENABLED, ALI_UART2, uart_primary?0x2f8:0x2e8, 3);
- ali512x_set_rtc(ALI_DISABLED, 0, 0);
- ali512x_set_kbc(ALI_ENABLED, 1, 12);
- ali512x_set_cio(ALI_ENABLED);
-
- /* IrDa pins */
- ali512x_cio_function(12, 1, 0, 0);
- ali512x_cio_function(13, 1, 0, 0);
-
- /* SSI chip select pins */
- ali512x_cio_function(14, 0, 0, 0); /* SSI_CS */
- ali512x_cio_function(15, 0, 0, 0); /* SSI_MV */
- ali512x_cio_function(16, 0, 0, 0); /* SSI_SPI# */
-
- /* Board REV pins */
- ali512x_cio_function(20, 0, 0, 1);
- ali512x_cio_function(21, 0, 0, 1);
- ali512x_cio_function(22, 0, 0, 1);
- ali512x_cio_function(23, 0, 0, 1);
-}
-
-
-/* set up the ISA bus timing and system address mappings */
-static void bus_init(void)
-{
-
- /* set up the GP IO pins */
- write_mmcr_word(SC520_PIOPFS31_16, 0xf7ff); /* set the GPIO pin function 31-16 reg */
- write_mmcr_word(SC520_PIOPFS15_0, 0xffff); /* set the GPIO pin function 15-0 reg */
- write_mmcr_byte(SC520_CSPFS, 0xf8); /* set the CS pin function reg */
- write_mmcr_byte(SC520_CLKSEL, 0x70);
-
-
- write_mmcr_byte(SC520_GPCSRT, 1); /* set the GP CS offset */
- write_mmcr_byte(SC520_GPCSPW, 3); /* set the GP CS pulse width */
- write_mmcr_byte(SC520_GPCSOFF, 1); /* set the GP CS offset */
- write_mmcr_byte(SC520_GPRDW, 3); /* set the RD pulse width */
- write_mmcr_byte(SC520_GPRDOFF, 1); /* set the GP RD offset */
- write_mmcr_byte(SC520_GPWRW, 3); /* set the GP WR pulse width */
- write_mmcr_byte(SC520_GPWROFF, 1); /* set the GP WR offset */
-
- write_mmcr_word(SC520_BOOTCSCTL, 0x1823); /* set up timing of BOOTCS */
- write_mmcr_word(SC520_ROMCS1CTL, 0x1823); /* set up timing of ROMCS1 */
- write_mmcr_word(SC520_ROMCS2CTL, 0x1823); /* set up timing of ROMCS2 */
-
- /* adjust the memory map:
- * by default the first 256MB (0x00000000 - 0x0fffffff) is mapped to SDRAM
- * and 256MB to 1G-128k (0x1000000 - 0x37ffffff) is mapped to PCI mmio
- * we need to map 1G-128k - 1G (0x38000000 - 0x3fffffff) to CS1 */
-
-
- /* SRAM = GPCS3 128k @ d0000-effff*/
- write_mmcr_long(SC520_PAR2, 0x4e00400d);
-
- /* IDE0 = GPCS6 1f0-1f7 */
- write_mmcr_long(SC520_PAR3, 0x380801f0);
-
- /* IDE1 = GPCS7 3f6 */
- write_mmcr_long(SC520_PAR4, 0x3c0003f6);
- /* bootcs */
- write_mmcr_long(SC520_PAR12, 0x8bffe800);
- /* romcs2 */
- write_mmcr_long(SC520_PAR13, 0xcbfff000);
- /* romcs1 */
- write_mmcr_long(SC520_PAR14, 0xabfff800);
- /* 680 LEDS */
- write_mmcr_long(SC520_PAR15, 0x30000640);
-
- write_mmcr_byte(SC520_ADDDECCTL, 0);
-
- asm ("wbinvd\n"); /* Flush cache, req. after setting the unchached attribute ona PAR */
-
- if (CFG_USE_SIO_UART) {
- write_mmcr_byte(SC520_ADDDECCTL, read_mmcr_byte(SC520_ADDDECCTL) | UART2_DIS|UART1_DIS);
- setup_ali_sio(1);
- } else {
- write_mmcr_byte(SC520_ADDDECCTL, read_mmcr_byte(SC520_ADDDECCTL) & ~(UART2_DIS|UART1_DIS));
- setup_ali_sio(0);
- silence_uart(0x3e8);
- silence_uart(0x2e8);
- }
-
-}
-
-/* GPCS usage
- * GPCS0 PIO27 (NMI)
- * GPCS1 ROMCS1
- * GPCS2 ROMCS2
- * GPCS3 SRAMCS PAR2
- * GPCS4 unused PAR3
- * GPCS5 unused PAR4
- * GPCS6 IDE
- * GPCS7 IDE
- */
-
-
-/* par usage:
- * PAR0 legacy_video
- * PAR1 PCI ROM mapping
- * PAR2 SRAM
- * PAR3 IDE
- * PAR4 IDE
- * PAR5 legacy_video
- * PAR6 legacy_video
- * PAR7 legacy_video
- * PAR8 legacy_video
- * PAR9 legacy_video
- * PAR10 legacy_video
- * PAR11 ISAROM
- * PAR12 BOOTCS
- * PAR13 ROMCS1
- * PAR14 ROMCS2
- * PAR15 Port 0x680 LED display
- */
-
-/*
- * This function should map a chunk of size bytes
- * of the system address space to the ISA bus
- *
- * The function will return the memory address
- * as seen by the host (which may very will be the
- * same as the bus address)
- */
-u32 isa_map_rom(u32 bus_addr, int size)
-{
- u32 par;
-
- PRINTF("isa_map_rom asked to map %d bytes at %x\n",
- size, bus_addr);
-
- par = size;
- if (par < 0x80000) {
- par = 0x80000;
- }
- par >>= 12;
- par--;
- par&=0x7f;
- par <<= 18;
- par |= (bus_addr>>12);
- par |= 0x50000000;
-
- PRINTF ("setting PAR11 to %x\n", par);
-
- /* Map rom 0x10000 with PAR1 */
- write_mmcr_long(SC520_PAR11, par);
-
- return bus_addr;
-}
-
-/*
- * this function removed any mapping created
- * with pci_get_rom_window()
- */
-void isa_unmap_rom(u32 addr)
-{
- PRINTF("isa_unmap_rom asked to unmap %x", addr);
- if ((addr>>12) == (read_mmcr_long(SC520_PAR11)&0x3ffff)) {
- write_mmcr_long(SC520_PAR11, 0);
- PRINTF(" done\n");
- return;
- }
- PRINTF(" not ours\n");
-}
-
-#ifdef CONFIG_PCI
-#define PCI_ROM_TEMP_SPACE 0x10000
-/*
- * This function should map a chunk of size bytes
- * of the system address space to the PCI bus,
- * suitable to map PCI ROMS (bus address < 16M)
- * the function will return the host memory address
- * which should be converted into a bus address
- * before used to configure the PCI rom address
- * decoder
- */
-u32 pci_get_rom_window(struct pci_controller *hose, int size)
-{
- u32 par;
-
- par = size;
- if (par < 0x80000) {
- par = 0x80000;
- }
- par >>= 16;
- par--;
- par&=0x7ff;
- par <<= 14;
- par |= (PCI_ROM_TEMP_SPACE>>16);
- par |= 0x72000000;
-
- PRINTF ("setting PAR1 to %x\n", par);
-
- /* Map rom 0x10000 with PAR1 */
- write_mmcr_long(SC520_PAR1, par);
-
- return PCI_ROM_TEMP_SPACE;
-}
-
-/*
- * this function removed any mapping created
- * with pci_get_rom_window()
- */
-void pci_remove_rom_window(struct pci_controller *hose, u32 addr)
-{
- PRINTF("pci_remove_rom_window: %x", addr);
- if (addr == PCI_ROM_TEMP_SPACE) {
- write_mmcr_long(SC520_PAR1, 0);
- PRINTF(" done\n");
- return;
- }
- PRINTF(" not ours\n");
-
-}
-
-/*
- * This function is called in order to provide acces to the
- * legacy video I/O ports on the PCI bus.
- * After this function accesses to I/O ports 0x3b0-0x3bb and
- * 0x3c0-0x3df shuld result in transactions on the PCI bus.
- *
- */
-int pci_enable_legacy_video_ports(struct pci_controller *hose)
-{
- /* Map video memory to 0xa0000*/
- write_mmcr_long(SC520_PAR0, 0x7200400a);
-
- /* forward all I/O accesses to PCI */
- write_mmcr_byte(SC520_ADDDECCTL,
- read_mmcr_byte(SC520_ADDDECCTL) | IO_HOLE_DEST_PCI);
-
-
- /* so we map away all io ports to pci (only way to access pci io
- * below 0x400. But then we have to map back the portions that we dont
- * use so that the generate cycles on the GPIO bus where the sio and
- * ISA slots are connected, this requre the use of several PAR registers
- */
-
- /* bring 0x100 - 0x1ef back to ISA using PAR5 */
- write_mmcr_long(SC520_PAR5, 0x30ef0100);
-
- /* IDE use 1f0-1f7 */
-
- /* bring 0x1f8 - 0x2f7 back to ISA using PAR6 */
- write_mmcr_long(SC520_PAR6, 0x30ff01f8);
-
- /* com2 use 2f8-2ff */
-
- /* bring 0x300 - 0x3af back to ISA using PAR7 */
- write_mmcr_long(SC520_PAR7, 0x30af0300);
-
- /* vga use 3b0-3bb */
-
- /* bring 0x3bc - 0x3bf back to ISA using PAR8 */
- write_mmcr_long(SC520_PAR8, 0x300303bc);
-
- /* vga use 3c0-3df */
-
- /* bring 0x3e0 - 0x3f5 back to ISA using PAR9 */
- write_mmcr_long(SC520_PAR9, 0x301503e0);
-
- /* ide use 3f6 */
-
- /* bring 0x3f7 back to ISA using PAR10 */
- write_mmcr_long(SC520_PAR10, 0x300003f7);
-
- /* com1 use 3f8-3ff */
-
- return 0;
-}
-#endif
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init(void)
-{
- init_sc520();
- bus_init();
- irq_init();
-
- /* max drive current on SDRAM */
- write_mmcr_word(SC520_DSCTL, 0x0100);
-
- /* enter debug mode after next reset (only if jumper is also set) */
- write_mmcr_byte(SC520_RESCFG, 0x08);
- /* configure the software timer to 33.333MHz */
- write_mmcr_byte(SC520_SWTMRCFG, 0);
- gd->bus_clk = 33333000;
-
- return 0;
-}
-
-int dram_init(void)
-{
- init_sc520_dram();
- return 0;
-}
-
-void show_boot_progress(int val)
-{
- outb(val&0xff, 0x80);
- outb((val&0xff00)>>8, 0x680);
-}
-
-
-int last_stage_init(void)
-{
- int minor;
- int major;
-
- major = minor = 0;
- major |= ali512x_cio_in(23)?2:0;
- major |= ali512x_cio_in(22)?1:0;
- minor |= ali512x_cio_in(21)?2:0;
- minor |= ali512x_cio_in(20)?1:0;
-
- printf("AMD SC520 CDP revision %d.%d\n", major, minor);
-
- return 0;
-}
-
-
-void ssi_chip_select(int dev)
-{
-
- /* Spunk board: SPI EEPROM is active-low, MW EEPROM and AUX are active high */
- switch (dev) {
- case 1: /* SPI EEPROM */
- ali512x_cio_out(16, 0);
- break;
-
- case 2: /* MW EEPROM */
- ali512x_cio_out(15, 1);
- break;
-
- case 3: /* AUX */
- ali512x_cio_out(14, 1);
- break;
-
- case 0:
- ali512x_cio_out(16, 1);
- ali512x_cio_out(15, 0);
- ali512x_cio_out(14, 0);
- break;
-
- default:
- printf("Illegal SSI device requested: %d\n", dev);
- }
-}
-
-void spi_eeprom_probe(int x)
-{
-}
-
-int spi_eeprom_read(int x, int offset, char *buffer, int len)
-{
- return 0;
-}
-
-int spi_eeprom_write(int x, int offset, char *buffer, int len)
-{
- return 0;
-}
-
-void spi_init_f(void)
-{
-#ifdef CONFIG_SC520_CDP_USE_SPI
- spi_eeprom_probe(1);
-#endif
-#ifdef CONFIG_SC520_CDP_USE_MW
- mw_eeprom_probe(2);
-#endif
-}
-
-ssize_t spi_read(uchar *addr, int alen, uchar *buffer, int len)
-{
- int offset;
- int i;
- ssize_t res;
-
- offset = 0;
- for (i=0;i<alen;i++) {
- offset <<= 8;
- offset |= addr[i];
- }
-
-#ifdef CONFIG_SC520_CDP_USE_SPI
- res = spi_eeprom_read(1, offset, buffer, len);
-#endif
-#ifdef CONFIG_SC520_CDP_USE_MW
- res = mw_eeprom_read(2, offset, buffer, len);
-#endif
-#if !defined(CONFIG_SC520_CDP_USE_SPI) && !defined(CONFIG_SC520_CDP_USE_MW)
- res = 0;
-#endif
- return res;
-}
-
-ssize_t spi_write(uchar *addr, int alen, uchar *buffer, int len)
-{
- int offset;
- int i;
- ssize_t res;
-
- offset = 0;
- for (i=0;i<alen;i++) {
- offset <<= 8;
- offset |= addr[i];
- }
-
-#ifdef CONFIG_SC520_CDP_USE_SPI
- res = spi_eeprom_write(1, offset, buffer, len);
-#endif
-#ifdef CONFIG_SC520_CDP_USE_MW
- res = mw_eeprom_write(2, offset, buffer, len);
-#endif
-#if !defined(CONFIG_SC520_CDP_USE_SPI) && !defined(CONFIG_SC520_CDP_USE_MW)
- res = 0;
-#endif
- return res;
-}
diff --git a/board/sc520_cdp/sc520_cdp_asm.S b/board/sc520_cdp/sc520_cdp_asm.S
deleted file mode 100644
index be7b2bb482..0000000000
--- a/board/sc520_cdp/sc520_cdp_asm.S
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB <daniel@omicron.se>.
- *
- * 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
- */
-
-/* now setup the General purpose bus to give us access to the LEDs.
- * We can then use the leds to display status information.
- */
-
-sc520_cdp_registers:
-/* size offset value */
-.word 1 ; .word 0x040 ; .long 0x00 /* SDRAM buffer control */
-.word 2 ; .word 0xc08 ; .long 0x0001 /* GP CS offset */
-.word 2 ; .word 0xc09 ; .long 0x0003 /* GP CS width */
-.word 2 ; .word 0xc0a ; .long 0x0001 /* GP CS width */
-.word 2 ; .word 0xc0b ; .long 0x0003 /* GP RD pulse width */
-.word 2 ; .word 0xc0c ; .long 0x0001 /* GP RD offse */
-.word 2 ; .word 0xc0d ; .long 0x0003 /* GP WR pulse width */
-.word 2 ; .word 0xc0e ; .long 0x0001 /* GP WR offset */
-.word 2 ; .word 0xc2c ; .long 0x0000 /* GPIO directionreg */
-.word 2 ; .word 0xc2a ; .long 0x0000 /* GPIO directionreg */
-.word 2 ; .word 0xc22 ; .long 0xffff /* GPIO pin function 31-16 reg */
-.word 2 ; .word 0xc20 ; .long 0xffff /* GPIO pin function 15-0 reg */
-.word 2 ; .word 0x0c4 ; .long 0x28000680 /* PAR 15 for access to led 680 */
-.word 0 ; .word 0x000 ; .long 0x00
-
-/* board early intialization */
-.globl early_board_init
-early_board_init:
- movl $sc520_cdp_registers,%esi
-init_loop:
- movl $0xfffef000,%edi /* MMCR base to edi */
- movw (%esi), %bx /* load sizer to bx */
- cmpw $0, %bx /* if sie is 0 we're done */
- je done
- xorl %edx,%edx
- movw 2(%esi), %dx /* load MMCR offset to dx */
- addl %edx, %edi /* add offset to base in edi */
- movl 4(%esi), %eax /* load value in eax */
- cmpw $1, %bx
- je byte /* byte op? */
- cmpw $2, %bx
- je word /* word op? */
- movl %eax, (%edi) /* must be long, then */
- jmp next
-byte: movb %al,(%edi)
- jmp next
-word: movw %ax,(%edi)
-next: addl $8, %esi /* advance esi */
- jmp init_loop
-
- /* the leds ad 0x80 and 0x680 should now work */
-done: movb $0x88, %al
- out %al, $0x80
- movw $0x680, %dx
- out %al, %dx
-
- jmp *%ebp /* return to caller */
-
-
-.globl __show_boot_progress
-__show_boot_progress:
- out %al, $0x80
- xchg %al, %ah
- movw $0x680, %dx
- out %al, %dx
- jmp *%ebp
diff --git a/board/sc520_cdp/sc520_cdp_asm16.S b/board/sc520_cdp/sc520_cdp_asm16.S
deleted file mode 100644
index a3e700a626..0000000000
--- a/board/sc520_cdp/sc520_cdp_asm16.S
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB <daniel@omicron.se>.
- *
- * 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
- */
-
-/*
- * 16bit initialization code.
- * This code have to map the area of the boot flash
- * that is used by U-boot to its final destination.
- */
-
-.text
-.section .start16, "ax"
-.code16
-.globl board_init16
-board_init16:
- /* Alias MMCR to 0xdf000 */
- movw $0xfffc, %dx
- movl $0x800df0cb, %eax
- outl %eax, %dx
-
- /* Set ds to point to MMCR alias */
- movw $0xdf00, %ax
- movw %ax, %ds
-
- /* Map the entire flash at 0x38000000
- * (with BOOTCS and PAR14, use 0xabfff800 for ROMCS1) */
- movl $0xc0, %edi
- movl $0x8bfff800, %eax
- movl %eax, (%di)
-
- /* Disable SDRAM write buffer */
- movw $0x40,%di
- xorw %ax,%ax
- movb %al, (%di)
-
- /* Disabe MMCR alias */
- movw $0xfffc, %dx
- movl $0x000000cb, %eax
- outl %eax, %dx
-
- /* the return address is tored in bp */
- jmp *%bp
-
-
-.section .bios, "ax"
-.code16
-.globl realmode_reset
-realmode_reset:
- /* Alias MMCR to 0xdf000 */
- movw $0xfffc, %dx
- movl $0x800df0cb, %eax
- outl %eax, %dx
-
- /* Set ds to point to MMCR alias */
- movw $0xdf00, %ax
- movw %ax, %ds
-
- /* issue software reset thorugh MMCR */
- movl $0xd72, %edi
- movb $0x01, %al
- movb %al, (%di)
-
-1: hlt
- jmp 1
diff --git a/board/sc520_cdp/u-boot.lds b/board/sc520_cdp/u-boot.lds
deleted file mode 100644
index 72164a1c8e..0000000000
--- a/board/sc520_cdp/u-boot.lds
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
- *
- * 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_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
-OUTPUT_ARCH(i386)
-ENTRY(_start)
-
-SECTIONS
-{
- . = 0x387c0000; /* Where bootcode in the flash is mapped */
- .text : { *(.text); }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) *(.rodata.str1.1) *(.rodata.str1.32) }
-
- . = 0x400000; /* Ram data segment to use */
- _i386boot_romdata_dest = ABSOLUTE(.);
- .data : AT ( LOADADDR(.rodata) + SIZEOF(.rodata) ) { *(.data) }
- _i386boot_romdata_start = LOADADDR(.data);
-
- . = ALIGN(4);
- .got : AT ( LOADADDR(.data) + SIZEOF(.data) ) { *(.got) }
- _i386boot_romdata_size = SIZEOF(.data) + SIZEOF(.got);
-
-
- . = ALIGN(4);
- _i386boot_bss_start = ABSOLUTE(.);
- .bss : { *(.bss) }
- _i386boot_bss_size = SIZEOF(.bss);
-
-
- /* 16bit realmode trampoline code */
- .realmode 0x7c0 : AT ( LOADADDR(.got) + SIZEOF(.got) ) { *(.realmode) }
-
- _i386boot_realmode = LOADADDR(.realmode);
- _i386boot_realmode_size = SIZEOF(.realmode);
-
- /* 16bit BIOS emulation code (just enough to boot Linux) */
- .bios 0 : AT ( LOADADDR(.realmode) + SIZEOF(.realmode) ) { *(.bios) }
-
- _i386boot_bios = LOADADDR(.bios);
- _i386boot_bios_size = SIZEOF(.bios);
-
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- /* The load addresses below assumes that the flash
- * will be mapped so that 0x387f0000 == 0xffff0000
- * at reset time
- *
- * The fe00 and ff00 offsets of the start32 and start16
- * segments are arbitrary, the just have to be mapped
- * at reset and the code have to fit.
- * The fff0 offset of reset is important, however.
- */
-
-
- . = 0xfffffe00;
- .start32 : AT (0x387ffe00) { *(.start32); }
-
- . = 0xff00;
- .start16 : AT (0x387fff00) { *(.start16); }
-
- . = 0xfff0;
- .reset : AT (0x387ffff0) { *(.reset); }
- _i386boot_end = (LOADADDR(.reset) + SIZEOF(.reset) );
-}
diff --git a/board/sc520_spunk/Makefile b/board/sc520_spunk/Makefile
deleted file mode 100644
index bfb77e8f8b..0000000000
--- a/board/sc520_spunk/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2002
-# Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
-#
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := sc520_spunk.o flash.o
-SOBJS := sc520_spunk_asm.o sc520_spunk_asm16.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/sc520_spunk/config.mk b/board/sc520_spunk/config.mk
deleted file mode 100644
index 2253815647..0000000000
--- a/board/sc520_spunk/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (C) Copyright 2002
-# Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
-#
-# 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
-#
-
-
-TEXT_BASE = 0x387c0000
diff --git a/board/sc520_spunk/flash.c b/board/sc520_spunk/flash.c
deleted file mode 100644
index 4942e598d3..0000000000
--- a/board/sc520_spunk/flash.c
+++ /dev/null
@@ -1,809 +0,0 @@
-/*
- * (C) Copyright 2002, 2003
- * Daniel Engström, Omicron Ceti AB, daniel@omicron.se
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@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
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <pci.h>
-#include <asm/ic/sc520.h>
-
-#define PROBE_BUFFER_SIZE 1024
-static unsigned char buffer[PROBE_BUFFER_SIZE];
-
-
-#define SC520_MAX_FLASH_BANKS 1
-#define SC520_FLASH_BANK0_BASE 0x38000000 /* BOOTCS */
-#define SC520_FLASH_BANKSIZE 0x8000000
-
-#define A29LV641DH_SIZE 0x800000
-#define A29LV641DH_SECTORS 128
-
-#define A29LV641MH_SIZE 0x800000
-#define A29LV641MH_SECTORS 128
-
-#define I28F320J3A_SIZE 0x400000
-#define I28F320J3A_SECTORS 32
-
-#define I28F640J3A_SIZE 0x800000
-#define I28F640J3A_SECTORS 64
-
-#define I28F128J3A_SIZE 0x1000000
-#define I28F128J3A_SECTORS 128
-
-flash_info_t flash_info[SC520_MAX_FLASH_BANKS];
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-/*-----------------------------------------------------------------------
- */
-
-
-static u32 _probe_flash(u32 addr, u32 bw, int il)
-{
- u32 result=0;
-
- /* First do an unlock cycle for the benefit of
- * devices that need it */
-
- switch (bw) {
-
- case 1:
- *(volatile u8*)(addr+0x5555) = 0xaa;
- *(volatile u8*)(addr+0x2aaa) = 0x55;
- *(volatile u8*)(addr+0x5555) = 0x90;
-
- /* Read vendor */
- result = *(volatile u8*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u8*)(addr+2);
-
- /* Return device to data mode */
- *(volatile u8*)addr = 0xff;
- *(volatile u8*)(addr+0x5555), 0xf0;
- break;
-
- case 2:
- *(volatile u16*)(addr+0xaaaa) = 0xaaaa;
- *(volatile u16*)(addr+0x5554) = 0x5555;
-
- /* Issue identification command */
- if (il == 2) {
- *(volatile u16*)(addr+0xaaaa) = 0x9090;
-
- /* Read vendor */
- result = *(volatile u8*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u8*)(addr+2);
-
- /* Return device to data mode */
- *(volatile u16*)addr = 0xffff;
- *(volatile u16*)(addr+0xaaaa), 0xf0f0;
-
- } else {
- *(volatile u8*)(addr+0xaaaa) = 0x90;
- /* Read vendor */
- result = *(volatile u16*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u16*)(addr+2);
-
- /* Return device to data mode */
- *(volatile u8*)addr = 0xff;
- *(volatile u8*)(addr+0xaaaa), 0xf0;
- }
-
- break;
-
- case 4:
- *(volatile u32*)(addr+0x5554) = 0xaaaaaaaa;
- *(volatile u32*)(addr+0xaaa8) = 0x55555555;
-
- switch (il) {
- case 1:
- /* Issue identification command */
- *(volatile u8*)(addr+0x5554) = 0x90;
-
- /* Read vendor */
- result = *(volatile u16*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u16*)(addr+4);
-
- /* Return device to data mode */
- *(volatile u8*)addr = 0xff;
- *(volatile u8*)(addr+0x5554), 0xf0;
- break;
-
- case 2:
- /* Issue identification command */
- *(volatile u32*)(addr + 0x5554) = 0x00900090;
-
- /* Read vendor */
- result = *(volatile u16*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u16*)(addr+4);
-
- /* Return device to data mode */
- *(volatile u32*)addr = 0x00ff00ff;
- *(volatile u32*)(addr+0x5554), 0x00f000f0;
- break;
-
- case 4:
- /* Issue identification command */
- *(volatile u32*)(addr+0x5554) = 0x90909090;
-
- /* Read vendor */
- result = *(volatile u8*)addr;
- result <<= 16;
-
- /* Read device */
- result |= *(volatile u8*)(addr+4);
-
- /* Return device to data mode */
- *(volatile u32*)addr = 0xffffffff;
- *(volatile u32*)(addr+0x5554), 0xf0f0f0f0;
- break;
- }
- break;
- }
-
-
- return result;
-}
-
-extern int _probe_flash_end;
-asm ("_probe_flash_end:\n"
- ".long 0\n");
-
-static int identify_flash(unsigned address, int width)
-{
- int is;
- int device;
- int vendor;
- int size;
- unsigned res;
-
- u32 (*_probe_flash_ptr)(u32 a, u32 bw, int il);
-
- size = (unsigned)&_probe_flash_end - (unsigned)_probe_flash;
-
- if (size > PROBE_BUFFER_SIZE) {
- printf("_probe_flash() routine too large (%d) %p - %p\n",
- size, &_probe_flash_end, _probe_flash);
- return 0;
- }
-
- memcpy(buffer, _probe_flash, size);
- _probe_flash_ptr = (void*)buffer;
-
- is = disable_interrupts();
- res = _probe_flash_ptr(address, width, 1);
- if (is) {
- enable_interrupts();
- }
-
-
- vendor = res >> 16;
- device = res & 0xffff;
-
-
- return res;
-}
-
-ulong flash_init(void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < SC520_MAX_FLASH_BANKS; i++) {
- unsigned id;
- ulong flashbase = 0;
- int sectsize = 0;
-
- memset(flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- switch (i) {
- case 0:
- flashbase = SC520_FLASH_BANK0_BASE;
- break;
- default:
- panic("configured too many flash banks!\n");
- }
-
- id = identify_flash(flashbase, 2);
- switch (id) {
- case 0x000122d7:
- /* 29LV641DH */
- flash_info[i].flash_id =
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV640U & FLASH_TYPEMASK);
-
- flash_info[i].size = A29LV641DH_SIZE;
- flash_info[i].sector_count = A29LV641DH_SECTORS;
- sectsize = A29LV641DH_SIZE/A29LV641DH_SECTORS;
- printf("Bank %d: AMD 29LV641DH\n", i);
- break;
-
- case 0x0001227E:
- /* 29LV641MH */
- flash_info[i].flash_id =
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_DL640 & FLASH_TYPEMASK);
-
- flash_info[i].size = A29LV641MH_SIZE;
- flash_info[i].sector_count = A29LV641MH_SECTORS;
- sectsize = A29LV641MH_SIZE/A29LV641MH_SECTORS;
- printf("Bank %d: AMD 29LV641MH\n", i);
- break;
-
- case 0x00890016:
- /* 28F320J3A */
- flash_info[i].flash_id =
- (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F320J3A & FLASH_TYPEMASK);
-
- flash_info[i].size = I28F320J3A_SIZE;
- flash_info[i].sector_count = I28F320J3A_SECTORS;
- sectsize = I28F320J3A_SIZE/I28F320J3A_SECTORS;
- printf("Bank %d: Intel 28F320J3A\n", i);
- break;
-
- case 0x00890017:
- /* 28F640J3A */
- flash_info[i].flash_id =
- (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F640J3A & FLASH_TYPEMASK);
-
- flash_info[i].size = I28F640J3A_SIZE;
- flash_info[i].sector_count = I28F640J3A_SECTORS;
- sectsize = I28F640J3A_SIZE/I28F640J3A_SECTORS;
- printf("Bank %d: Intel 28F640J3A\n", i);
- break;
-
- case 0x00890018:
- /* 28F128J3A */
- flash_info[i].flash_id =
- (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F128J3A & FLASH_TYPEMASK);
-
- flash_info[i].size = I28F128J3A_SIZE;
- flash_info[i].sector_count = I28F128J3A_SECTORS;
- sectsize = I28F128J3A_SIZE/I28F128J3A_SECTORS;
- printf("Bank %d: Intel 28F128J3A\n", i);
- break;
-
- default:
- printf("Bank %d have unknown flash %08x\n", i, id);
- flash_info[i].flash_id = FLASH_UNKNOWN;
- continue;
- }
-
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] = flashbase + j * sectsize;
- }
- size += flash_info[i].size;
-
- flash_protect(FLAG_PROTECT_CLEAR,
- flash_info[i].start[0],
- flash_info[i].start[0] + flash_info[i].size - 1,
- &flash_info[i]);
- }
-
- /*
- * Protect monitor and environment sectors
- */
- flash_protect(FLAG_PROTECT_SET,
- i386boot_start,
- i386boot_end,
- &flash_info[0]);
-#ifdef CFG_ENV_ADDR
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t *info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (INTEL_MANUFACT & FLASH_VENDMASK):
- printf("INTEL: ");
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (INTEL_ID_28F320J3A & FLASH_TYPEMASK):
- printf("1x I28F320J3A (32Mbit)\n");
- break;
- case (INTEL_ID_28F640J3A & FLASH_TYPEMASK):
- printf("1x I28F640J3A (64Mbit)\n");
- break;
- case (INTEL_ID_28F128J3A & FLASH_TYPEMASK):
- printf("1x I28F128J3A (128Mbit)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- goto done;
- break;
- }
-
- break;
-
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf("AMD: ");
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_LV640U & FLASH_TYPEMASK):
- printf("1x AMD29LV641DH (64Mbit)\n");
- break;
- case (AMD_ID_DL640 & FLASH_TYPEMASK):
- printf("1x AMD29LV641MH (64Mbit)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- goto done;
- break;
- }
-
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
-
- printf(" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
- done:
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-static u32 _amd_erase_flash(u32 addr, u32 sector)
-{
- unsigned elapsed;
-
- /* Issue erase */
- *(volatile u16*)(addr + 0xaaaa) = 0x00AA;
- *(volatile u16*)(addr + 0x5554) = 0x0055;
- *(volatile u16*)(addr + 0xaaaa) = 0x0080;
- /* And one unlock */
- *(volatile u16*)(addr + 0xaaaa) = 0x00AA;
- *(volatile u16*)(addr + 0x5554) = 0x0055;
- /* Sector erase command comes last */
- *(volatile u16*)(addr + sector) = 0x0030;
-
- elapsed = *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI); /* dummy read */
- elapsed = 0;
- while (((*(volatile u16*)(addr + sector)) & 0x0080) != 0x0080) {
-
- elapsed += *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI);
- if (elapsed > ((CFG_FLASH_ERASE_TOUT/CFG_HZ) * 1000)) {
- *(volatile u16*)(addr) = 0x00f0;
- return 1;
- }
- }
-
- *(volatile u16*)(addr) = 0x00f0;
-
- return 0;
-}
-
-extern int _amd_erase_flash_end;
-asm ("_amd_erase_flash_end:\n"
- ".long 0\n");
-
-/* this needs to be inlined, the SWTMRMMILLI register is reset by each read */
-#define __udelay(delay) \
-{ \
- unsigned micro; \
- unsigned milli=0; \
- \
- micro = *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI); \
- \
- for (;;) { \
- \
- milli += *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI); \
- micro = *(volatile u16*)(0xfffef000+SC520_SWTMRMICRO); \
- \
- if ((delay) <= (micro + (milli * 1000))) { \
- break; \
- } \
- } \
-} while (0)
-
-static u32 _intel_erase_flash(u32 addr, u32 sector)
-{
- unsigned elapsed;
-
- *(volatile u16*)(addr + sector) = 0x0050; /* clear status register */
- *(volatile u16*)(addr + sector) = 0x0020; /* erase setup */
- *(volatile u16*)(addr + sector) = 0x00D0; /* erase confirm */
-
-
- /* Wait at least 80us - let's wait 1 ms */
- __udelay(1000);
-
- elapsed = 0;
- while (((*(volatile u16*)(addr + sector)) & 0x0080) != 0x0080) {
- elapsed += *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI);
- if (elapsed > ((CFG_FLASH_ERASE_TOUT/CFG_HZ) * 1000)) {
- *(volatile u16*)(addr + sector) = 0x00B0; /* suspend erase */
- *(volatile u16*)(addr + sector) = 0x00FF; /* reset to read mode */
- return 1;
- }
- }
-
- *(volatile u16*)(addr + sector) = 0x00FF; /* reset to read mode */
-
- return 0;
-}
-
-
-extern int _intel_erase_flash_end;
-asm ("_intel_erase_flash_end:\n"
- ".long 0\n");
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- u32 (*_erase_flash_ptr)(u32 a, u32 so);
- int prot;
- int sect;
- unsigned size;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("- missing\n");
- } else {
- printf("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == (AMD_MANUFACT & FLASH_VENDMASK)) {
- size = (unsigned)&_amd_erase_flash_end - (unsigned)_amd_erase_flash;
-
- if (size > PROBE_BUFFER_SIZE) {
- printf("_amd_erase_flash() routine too large (%d) %p - %p\n",
- size, &_amd_erase_flash_end, _amd_erase_flash);
- return 0;
- }
-
- memcpy(buffer, _amd_erase_flash, size);
- _erase_flash_ptr = (void*)buffer;
-
- } else if ((info->flash_id & FLASH_VENDMASK) == (INTEL_MANUFACT & FLASH_VENDMASK)) {
- size = (unsigned)&_intel_erase_flash_end - (unsigned)_intel_erase_flash;
-
- if (size > PROBE_BUFFER_SIZE) {
- printf("_intel_erase_flash() routine too large (%d) %p - %p\n",
- size, &_intel_erase_flash_end, _intel_erase_flash);
- return 0;
- }
-
- memcpy(buffer, _intel_erase_flash, size);
- _erase_flash_ptr = (void*)buffer;
- } else {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
-
- if (info->protect[sect] == 0) { /* not protected */
- int res;
- int flag;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- res = _erase_flash_ptr(info->start[0], info->start[sect]-info->start[0]);
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
-
- if (res) {
- printf("Erase timed out, sector %d\n", sect);
- return res;
- }
-
- putc('.');
- }
- }
-
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int _amd_write_word(unsigned start, unsigned dest, unsigned data)
-{
- volatile u16 *addr2 = (u16*)start;
- volatile u16 *dest2 = (u16*)dest;
- volatile u16 *data2 = (u16*)&data;
- int i;
- unsigned elapsed;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile u16*)dest) & (u16)data) != (u16)data) {
- return 2;
- }
-
- for (i = 0; i < 2; i++) {
-
-
- addr2[0x5555] = 0x00AA;
- addr2[0x2aaa] = 0x0055;
- addr2[0x5555] = 0x00A0;
-
- dest2[i] = (data >> (i*16)) & 0xffff;
-
- elapsed = *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI); /* dummy read */
- elapsed = 0;
-
- /* data polling for D7 */
- while ((dest2[i] & 0x0080) != (data2[i] & 0x0080)) {
- elapsed += *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI);
- if (elapsed > ((CFG_FLASH_WRITE_TOUT/CFG_HZ) * 1000)) {
- addr2[i] = 0x00f0;
- return 1;
- }
- }
- }
-
- addr2[i] = 0x00f0;
-
- return 0;
-}
-
-extern int _amd_write_word_end;
-asm ("_amd_write_word_end:\n"
- ".long 0\n");
-
-
-static int _intel_write_word(unsigned start, unsigned dest, unsigned data)
-{
- int i;
- unsigned elapsed;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile u16*)dest) & (u16)data) != (u16)data) {
- return 2;
- }
-
- for (i = 0; i < 2; i++) {
-
- *(volatile u16*)(dest+2*i) = 0x0040; /* write setup */
- *(volatile u16*)(dest+2*i) = (data >> (i*16)) & 0xffff;
-
- elapsed = *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI); /* dummy read */
- elapsed = 0;
-
- /* data polling for D7 */
- while ((*(volatile u16*)dest & 0x0080) != 0x0080) {
- elapsed += *(volatile u16*)(0xfffef000+SC520_SWTMRMILLI);
- if (elapsed > ((CFG_FLASH_WRITE_TOUT/CFG_HZ) * 1000)) {
- *(volatile u16*)dest = 0x00ff;
- return 1;
- }
- }
- }
-
- *(volatile u16*)dest = 0x00ff;
-
-
- return 0;
-
-}
-
-extern int _intel_write_word_end;
-asm ("_intel_write_word_end:\n"
- ".long 0\n");
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 3 - Unsupported flash type
- */
-
-int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
- int flag;
- u32 (*_write_word_ptr)(unsigned start, unsigned dest, unsigned data);
- unsigned size;
-
- if ((info->flash_id & FLASH_VENDMASK) == (AMD_MANUFACT & FLASH_VENDMASK)) {
- size = (unsigned)&_amd_write_word_end - (unsigned)_amd_write_word;
-
- if (size > PROBE_BUFFER_SIZE) {
- printf("_amd_write_word() routine too large (%d) %p - %p\n",
- size, &_amd_write_word_end, _amd_write_word);
- return 0;
- }
-
- memcpy(buffer, _amd_write_word, size);
- _write_word_ptr = (void*)buffer;
-
- } else if ((info->flash_id & FLASH_VENDMASK) == (INTEL_MANUFACT & FLASH_VENDMASK)) {
- size = (unsigned)&_intel_write_word_end - (unsigned)_intel_write_word;
-
- if (size > PROBE_BUFFER_SIZE) {
- printf("_intel_write_word() routine too large (%d) %p - %p\n",
- size, &_intel_write_word_end, _intel_write_word);
- return 0;
- }
-
- memcpy(buffer, _intel_write_word, size);
- _write_word_ptr = (void*)buffer;
- } else {
- printf ("Can't program unknown flash type - aborted\n");
- return 3;
- }
-
-
- wp = (addr & ~3); /* get lower word aligned address */
-
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data |= (*(uchar *)cp) << (8*i);
- }
- for (; i<4 && cnt>0; ++i) {
- data |= *src++ << (8*i);
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data |= (*(uchar *)cp) << (8*i);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- rc = _write_word_ptr(info->start[0], wp, data);
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
- if (rc != 0) {
- return rc;
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
-
- for (i=0; i<4; ++i) {
- data |= *src++ << (8*i);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- rc = _write_word_ptr(info->start[0], wp, data);
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
- if (rc != 0) {
- return rc;
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return 0;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data |= *src++ << (8*i);
- --cnt;
- }
-
- for (; i<4; ++i, ++cp) {
- data |= (*(uchar *)cp) << (8*i);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- rc = _write_word_ptr(info->start[0], wp, data);
-
- /* re-enable interrupts if necessary */
- if (flag) {
- enable_interrupts();
- }
-
- return rc;
-
-}
diff --git a/board/sc520_spunk/sc520_spunk.c b/board/sc520_spunk/sc520_spunk.c
deleted file mode 100644
index ed226fd642..0000000000
--- a/board/sc520_spunk/sc520_spunk.c
+++ /dev/null
@@ -1,677 +0,0 @@
-/*
- *
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB <daniel@omicron.se>.
- *
- * 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 <common.h>
-#include <pci.h>
-#include <ssi.h>
-#include <asm/io.h>
-#include <asm/pci.h>
-#include <asm/ic/sc520.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Theory:
- * We first set up all IRQs to be non-pci, edge triggered,
- * when we later enumerate the pci bus and pci_sc520_fixup_irq() gets
- * called we reallocate irqs to the pci bus with sc520_pci_set_irq()
- * as needed. Whe choose the irqs to gram from a configurable list
- * inside pci_sc520_fixup_irq() (If this list contains stupid irq's
- * such as 0 thngas will not work)
- */
-
-static void irq_init(void)
-{
- /* disable global interrupt mode */
- write_mmcr_byte(SC520_PICICR, 0x40);
-
- /* set all irqs to edge */
- write_mmcr_byte(SC520_MPICMODE, 0x00);
- write_mmcr_byte(SC520_SL1PICMODE, 0x00);
- write_mmcr_byte(SC520_SL2PICMODE, 0x00);
-
- /* active low polarity on PIC interrupt pins,
- * active high polarity on all other irq pins */
- write_mmcr_word(SC520_INTPINPOL, 0x0000);
-
- /* set irq number mapping */
- write_mmcr_byte(SC520_GPTMR0MAP, SC520_IRQ_DISABLED); /* disable GP timer 0 INT */
- write_mmcr_byte(SC520_GPTMR1MAP, SC520_IRQ_DISABLED); /* disable GP timer 1 INT */
- write_mmcr_byte(SC520_GPTMR2MAP, SC520_IRQ_DISABLED); /* disable GP timer 2 INT */
- write_mmcr_byte(SC520_PIT0MAP, SC520_IRQ0); /* Set PIT timer 0 INT to IRQ0 */
- write_mmcr_byte(SC520_PIT1MAP, SC520_IRQ_DISABLED); /* disable PIT timer 1 INT */
- write_mmcr_byte(SC520_PIT2MAP, SC520_IRQ_DISABLED); /* disable PIT timer 2 INT */
- write_mmcr_byte(SC520_PCIINTAMAP, SC520_IRQ_DISABLED); /* disable PCI INT A */
- write_mmcr_byte(SC520_PCIINTBMAP, SC520_IRQ_DISABLED); /* disable PCI INT B */
- write_mmcr_byte(SC520_PCIINTCMAP, SC520_IRQ_DISABLED); /* disable PCI INT C */
- write_mmcr_byte(SC520_PCIINTDMAP, SC520_IRQ_DISABLED); /* disable PCI INT D */
- write_mmcr_byte(SC520_DMABCINTMAP, SC520_IRQ_DISABLED); /* disable DMA INT */
- write_mmcr_byte(SC520_SSIMAP, SC520_IRQ6); /* Set Synchronius serial INT to IRQ6*/
- write_mmcr_byte(SC520_WDTMAP, SC520_IRQ_DISABLED); /* disable Watchdog INT */
- write_mmcr_byte(SC520_RTCMAP, SC520_IRQ8); /* Set RTC int to 8 */
- write_mmcr_byte(SC520_WPVMAP, SC520_IRQ_DISABLED); /* disable write protect INT */
- write_mmcr_byte(SC520_ICEMAP, SC520_IRQ1); /* Set ICE Debug Serielport INT to IRQ1 */
- write_mmcr_byte(SC520_FERRMAP,SC520_IRQ13); /* Set FP error INT to IRQ13 */
-
- write_mmcr_byte(SC520_UART1MAP, SC520_IRQ4); /* Set internal UART2 INT to IRQ4 */
- write_mmcr_byte(SC520_UART2MAP, SC520_IRQ3); /* Set internal UART2 INT to IRQ3 */
-
- write_mmcr_byte(SC520_GP0IMAP, SC520_IRQ7); /* Set GPIRQ0 (PC-Card AUX IRQ) to IRQ7 */
- write_mmcr_byte(SC520_GP1IMAP, SC520_IRQ14); /* Set GPIRQ1 (CF IRQ) to IRQ14 */
- write_mmcr_byte(SC520_GP3IMAP, SC520_IRQ5); /* Set GPIRQ3 ( CAN IRQ ) ti IRQ5 */
- write_mmcr_byte(SC520_GP4IMAP, SC520_IRQ_DISABLED); /* disbale GIRQ4 ( IRR IRQ ) */
- write_mmcr_byte(SC520_GP5IMAP, SC520_IRQ_DISABLED); /* disable GPIRQ5 */
- write_mmcr_byte(SC520_GP6IMAP, SC520_IRQ_DISABLED); /* disable GPIRQ6 */
- write_mmcr_byte(SC520_GP7IMAP, SC520_IRQ_DISABLED); /* disable GPIRQ7 */
- write_mmcr_byte(SC520_GP8IMAP, SC520_IRQ_DISABLED); /* disable GPIRQ8 */
- write_mmcr_byte(SC520_GP9IMAP, SC520_IRQ_DISABLED); /* disable GPIRQ9 */
- write_mmcr_byte(SC520_GP2IMAP, SC520_IRQ_DISABLED); /* disable GPIRQ2 */
- write_mmcr_byte(SC520_GP10IMAP,SC520_IRQ_DISABLED); /* disable GPIRQ10 */
-
- write_mmcr_word(SC520_PCIHOSTMAP, 0x11f); /* Map PCI hostbridge INT to NMI */
- write_mmcr_word(SC520_ECCMAP, 0x100); /* Map SDRAM ECC failure INT to NMI */
-
-}
-
-
-/* PCI stuff */
-static void pci_sc520_spunk_fixup_irq(struct pci_controller *hose, pci_dev_t dev)
-{
- int version = read_mmcr_byte(SC520_SYSINFO);
-
- /* a configurable lists of irqs to steal
- * when we need one (a board with more pci interrupt pins
- * would use a larger table */
- static int irq_list[] = {
- CFG_FIRST_PCI_IRQ,
- CFG_SECOND_PCI_IRQ,
- CFG_THIRD_PCI_IRQ,
- CFG_FORTH_PCI_IRQ
- };
- static int next_irq_index=0;
-
- char tmp_pin;
- int pin;
-
- pci_hose_read_config_byte(hose, dev, PCI_INTERRUPT_PIN, &tmp_pin);
- pin = tmp_pin;
-
- pin-=1; /* pci config space use 1-based numbering */
- if (-1 == pin) {
- return; /* device use no irq */
- }
-
-
- /* map device number + pin to a pin on the sc520 */
- switch (PCI_DEV(dev)) {
- case 6: /* ETH0 */
- pin+=SC520_PCI_INTA;
- break;
-
- case 7: /* ETH1 */
- pin+=SC520_PCI_INTB;
- break;
-
- case 8: /* Crypto */
- pin+=SC520_PCI_INTC;
- break;
-
- case 9: /* PMC slot */
- pin+=SC520_PCI_INTD;
- break;
-
- case 10: /* PC-Card */
-
- if (version < 10) {
- pin+=SC520_PCI_INTD;
- } else {
- pin+=SC520_PCI_INTC;
- }
- break;
-
- default:
- return;
- }
-
- pin&=3; /* wrap around */
-
- if (sc520_pci_ints[pin] == -1) {
- /* re-route one interrupt for us */
- if (next_irq_index > 3) {
- return;
- }
- if (pci_sc520_set_irq(pin, irq_list[next_irq_index])) {
- return;
- }
- next_irq_index++;
- }
-
-
- if (-1 != sc520_pci_ints[pin]) {
- pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE,
- sc520_pci_ints[pin]);
- }
-#if 0
- printf("fixup_irq: device %d pin %c irq %d\n",
- PCI_DEV(dev), 'A' + pin, sc520_pci_ints[pin]);
-#endif
-}
-
-
-static void pci_sc520_spunk_configure_cardbus(struct pci_controller *hose,
- pci_dev_t dev, struct pci_config_table *te)
-{
- u32 io_base;
- u32 temp;
-
- pciauto_config_device(hose, dev);
-
- pci_hose_write_config_word(hose, dev, PCI_COMMAND, 0x07); /* enable device */
- pci_hose_write_config_byte(hose, dev, 0x0c, 0x10); /* cacheline size */
- pci_hose_write_config_byte(hose, dev, 0x0d, 0x40); /* latency timer */
- pci_hose_write_config_byte(hose, dev, 0x1b, 0x40); /* cardbus latency timer */
- pci_hose_write_config_word(hose, dev, PCI_BRIDGE_CONTROL, 0x0040); /* reset cardbus */
- pci_hose_write_config_word(hose, dev, PCI_BRIDGE_CONTROL, 0x0080); /* route interrupts though ExCA */
- pci_hose_write_config_word(hose, dev, 0x44, 0x3e0); /* map legacy I/O port to 0x3e0 */
-
- pci_hose_read_config_dword(hose, dev, 0x80, &temp); /* System control */
- pci_hose_write_config_dword(hose, dev, 0x80, temp | 0x60); /* System control: disable clockrun */
- /* route MF0 to ~INT and MF3 to IRQ7
- * reserve all others */
- pci_hose_write_config_dword(hose, dev, 0x8c, 0x00007002);
- pci_hose_write_config_byte(hose, dev, 0x91, 0x00); /* card control */
- pci_hose_write_config_byte(hose, dev, 0x92, 0x62); /* device control */
-
- if (te->device != 0xac56) {
- pci_hose_write_config_byte(hose, dev, 0x93, 0x21); /* async interrupt enable */
- pci_hose_write_config_word(hose, dev, 0xa8, 0x0000); /* reset GPIO */
- pci_hose_write_config_word(hose, dev, 0xac, 0x0000); /* reset GPIO */
- pci_hose_write_config_word(hose, dev, 0xaa, 0x0000); /* reset GPIO */
- pci_hose_write_config_word(hose, dev, 0xae, 0x0000); /* reset GPIO */
- } else {
- pci_hose_write_config_byte(hose, dev, 0x93, 0x20); /* */
- }
- pci_hose_write_config_word(hose, dev, 0xa4, 0x8000); /* reset power management */
-
-
- pci_hose_read_config_dword(hose, dev, PCI_BASE_ADDRESS_0, &io_base);
- io_base &= ~0xfL;
-
- writeb(0x07, io_base+0x803); /* route CSC irq though ExCA and enable IRQ7 */
- writel(0, io_base+0x10); /* CLKRUN default */
- writel(0, io_base+0x20); /* CLKRUN default */
-
-}
-
-
-static struct pci_config_table pci_sc520_spunk_config_table[] = {
- { 0x104c, 0xac50, PCI_ANY_ID, 0, 0x0a, 0, pci_sc520_spunk_configure_cardbus, { 0, 0, 0} },
- { 0x104c, 0xac56, PCI_ANY_ID, 0, 0x0a, 0, pci_sc520_spunk_configure_cardbus, { 0, 0, 0} },
- { 0, 0, 0, 0, 0, 0, NULL, {0,0,0}}
-};
-
-static struct pci_controller sc520_spunk_hose = {
- fixup_irq: pci_sc520_spunk_fixup_irq,
- config_table: pci_sc520_spunk_config_table,
- first_busno: 0x00,
- last_busno: 0xff,
-};
-
-void pci_init_board(void)
-{
- pci_sc520_init(&sc520_spunk_hose);
-}
-
-
-/* set up the ISA bus timing and system address mappings */
-static void bus_init(void)
-{
- /* versions
- * 0 Hyglo versions 0.95 and 0.96 (large baords)
- * ?? Hyglo version 0.97 (small board)
- * 10 Spunk board
- */
- int version = read_mmcr_byte(SC520_SYSINFO);
-
- if (version) {
- /* set up the GP IO pins (for the Spunk board) */
- write_mmcr_word(SC520_PIOPFS31_16, 0xfff0); /* set the GPIO pin function 31-16 reg */
- write_mmcr_word(SC520_PIOPFS15_0, 0x000f); /* set the GPIO pin function 15-0 reg */
- write_mmcr_word(SC520_PIODIR31_16, 0x000f); /* set the GPIO direction 31-16 reg */
- write_mmcr_word(SC520_PIODIR15_0, 0x1ff0); /* set the GPIO direction 15-0 reg */
- write_mmcr_byte(SC520_CSPFS, 0xc0); /* set the CS pin function reg */
- write_mmcr_byte(SC520_CLKSEL, 0x70);
-
- write_mmcr_word(SC520_PIOCLR31_16, 0x0003); /* reset SSI chip-selects */
- write_mmcr_word(SC520_PIOSET31_16, 0x000c);
-
- } else {
- /* set up the GP IO pins (for the Hyglo board) */
- write_mmcr_word(SC520_PIOPFS31_16, 0xffc0); /* set the GPIO pin function 31-16 reg */
- write_mmcr_word(SC520_PIOPFS15_0, 0x1e7f); /* set the GPIO pin function 15-0 reg */
- write_mmcr_word(SC520_PIODIR31_16, 0x003f); /* set the GPIO direction 31-16 reg */
- write_mmcr_word(SC520_PIODIR15_0, 0xe180); /* set the GPIO direction 15-0 reg */
- write_mmcr_byte(SC520_CSPFS, 0x00); /* set the CS pin function reg */
- write_mmcr_byte(SC520_CLKSEL, 0x70);
-
- write_mmcr_word(SC520_PIOCLR15_0, 0x0180); /* reset SSI chip-selects */
- }
-
- write_mmcr_byte(SC520_GPCSRT, 1); /* set the GP CS offset */
- write_mmcr_byte(SC520_GPCSPW, 3); /* set the GP CS pulse width */
- write_mmcr_byte(SC520_GPCSOFF, 1); /* set the GP CS offset */
- write_mmcr_byte(SC520_GPRDW, 3); /* set the RD pulse width */
- write_mmcr_byte(SC520_GPRDOFF, 1); /* set the GP RD offset */
- write_mmcr_byte(SC520_GPWRW, 3); /* set the GP WR pulse width */
- write_mmcr_byte(SC520_GPWROFF, 1); /* set the GP WR offset */
-
- write_mmcr_word(SC520_BOOTCSCTL, 0x0407); /* set up timing of BOOTCS */
-
- /* adjust the memory map:
- * by default the first 256MB (0x00000000 - 0x0fffffff) is mapped to SDRAM
- * and 256MB to 1G-128k (0x1000000 - 0x37ffffff) is mapped to PCI mmio
- * we need to map 1G-128k - 1G (0x38000000 - 0x3fffffff) to CS1 */
-
-
- /* bootcs */
- write_mmcr_long(SC520_PAR12, 0x8bffe800);
-
- /* IDE0 = GPCS6 1f0-1f7 */
- write_mmcr_long(SC520_PAR3, 0x380801f0);
-
- /* IDE1 = GPCS7 3f6 */
- write_mmcr_long(SC520_PAR4, 0x3c0003f6);
-
- asm ("wbinvd\n"); /* Flush cache, req. after setting the unchached attribute ona PAR */
-
- write_mmcr_byte(SC520_ADDDECCTL, read_mmcr_byte(SC520_ADDDECCTL) & ~(UART2_DIS|UART1_DIS));
-
-}
-
-
-/* par usage:
- * PAR0 (legacy_video)
- * PAR1 (PCI ROM mapping)
- * PAR2
- * PAR3 IDE
- * PAR4 IDE
- * PAR5 (legacy_video)
- * PAR6
- * PAR7 (legacy_video)
- * PAR8 (legacy_video)
- * PAR9 (legacy_video)
- * PAR10
- * PAR11 (ISAROM)
- * PAR12 BOOTCS
- * PAR13
- * PAR14
- * PAR15
- */
-
-/*
- * This function should map a chunk of size bytes
- * of the system address space to the ISA bus
- *
- * The function will return the memory address
- * as seen by the host (which may very will be the
- * same as the bus address)
- */
-u32 isa_map_rom(u32 bus_addr, int size)
-{
- u32 par;
-
- printf("isa_map_rom asked to map %d bytes at %x\n",
- size, bus_addr);
-
- par = size;
- if (par < 0x80000) {
- par = 0x80000;
- }
- par >>= 12;
- par--;
- par&=0x7f;
- par <<= 18;
- par |= (bus_addr>>12);
- par |= 0x50000000;
-
- printf ("setting PAR11 to %x\n", par);
-
- /* Map rom 0x10000 with PAR1 */
- write_mmcr_long(SC520_PAR11, par);
-
- return bus_addr;
-}
-
-/*
- * this function removed any mapping created
- * with pci_get_rom_window()
- */
-void isa_unmap_rom(u32 addr)
-{
- printf("isa_unmap_rom asked to unmap %x", addr);
- if ((addr>>12) == (read_mmcr_long(SC520_PAR11)&0x3ffff)) {
- write_mmcr_long(SC520_PAR11, 0);
- printf(" done\n");
- return;
- }
- printf(" not ours\n");
-}
-
-#ifdef CONFIG_PCI
-#define PCI_ROM_TEMP_SPACE 0x10000
-/*
- * This function should map a chunk of size bytes
- * of the system address space to the PCI bus,
- * suitable to map PCI ROMS (bus address < 16M)
- * the function will return the host memory address
- * which should be converted into a bus address
- * before used to configure the PCI rom address
- * decoder
- */
-u32 pci_get_rom_window(struct pci_controller *hose, int size)
-{
- u32 par;
-
- par = size;
- if (par < 0x80000) {
- par = 0x80000;
- }
- par >>= 16;
- par--;
- par&=0x7ff;
- par <<= 14;
- par |= (PCI_ROM_TEMP_SPACE>>16);
- par |= 0x72000000;
-
- printf ("setting PAR1 to %x\n", par);
-
- /* Map rom 0x10000 with PAR1 */
- write_mmcr_long(SC520_PAR1, par);
-
- return PCI_ROM_TEMP_SPACE;
-}
-
-/*
- * this function removed any mapping created
- * with pci_get_rom_window()
- */
-void pci_remove_rom_window(struct pci_controller *hose, u32 addr)
-{
- printf("pci_remove_rom_window: %x", addr);
- if (addr == PCI_ROM_TEMP_SPACE) {
- write_mmcr_long(SC520_PAR1, 0);
- printf(" done\n");
- return;
- }
- printf(" not ours\n");
-
-}
-
-/*
- * This function is called in order to provide acces to the
- * legacy video I/O ports on the PCI bus.
- * After this function accesses to I/O ports 0x3b0-0x3bb and
- * 0x3c0-0x3df shuld result in transactions on the PCI bus.
- *
- */
-int pci_enable_legacy_video_ports(struct pci_controller *hose)
-{
- /* Map video memory to 0xa0000*/
- write_mmcr_long(SC520_PAR0, 0x7200400a);
-
- /* forward all I/O accesses to PCI */
- write_mmcr_byte(SC520_ADDDECCTL,
- read_mmcr_byte(SC520_ADDDECCTL) | IO_HOLE_DEST_PCI);
-
-
- /* so we map away all io ports to pci (only way to access pci io
- * below 0x400. But then we have to map back the portions that we dont
- * use so that the generate cycles on the GPIO bus where the sio and
- * ISA slots are connected, this requre the use of several PAR registers
- */
-
- /* bring 0x100 - 0x2f7 back to ISA using PAR5 */
- write_mmcr_long(SC520_PAR5, 0x31f70100);
-
- /* com2 use 2f8-2ff */
-
- /* bring 0x300 - 0x3af back to ISA using PAR7 */
- write_mmcr_long(SC520_PAR7, 0x30af0300);
-
- /* vga use 3b0-3bb */
-
- /* bring 0x3bc - 0x3bf back to ISA using PAR8 */
- write_mmcr_long(SC520_PAR8, 0x300303bc);
-
- /* vga use 3c0-3df */
-
- /* bring 0x3e0 - 0x3f7 back to ISA using PAR9 */
- write_mmcr_long(SC520_PAR9, 0x301703e0);
-
- /* com1 use 3f8-3ff */
-
- return 0;
-}
-#endif
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init(void)
-{
- init_sc520();
- bus_init();
- irq_init();
-
- /* max drive current on SDRAM */
- write_mmcr_word(SC520_DSCTL, 0x0100);
-
- /* enter debug mode after next reset (only if jumper is also set) */
- write_mmcr_byte(SC520_RESCFG, 0x08);
- /* configure the software timer to 33.000MHz */
- write_mmcr_byte(SC520_SWTMRCFG, 1);
- gd->bus_clk = 33000000;
-
- return 0;
-}
-
-int dram_init(void)
-{
- init_sc520_dram();
- return 0;
-}
-
-void show_boot_progress(int val)
-{
- int version = read_mmcr_byte(SC520_SYSINFO);
-
- if (version == 0) {
- /* PIO31-PIO16 Data */
- write_mmcr_word(SC520_PIODATA31_16,
- (read_mmcr_word(SC520_PIODATA31_16) & 0xffc0)| ((val&0x7e)>>1)); /* 0x1f8 >> 3 */
-
- /* PIO0-PIO15 Data */
- write_mmcr_word(SC520_PIODATA15_0,
- (read_mmcr_word(SC520_PIODATA15_0) & 0x1fff)| ((val&0x7)<<13));
- } else {
- /* newer boards use PIO4-PIO12 */
- /* PIO0-PIO15 Data */
-#if 0
- val = (val & 0x007) | ((val & 0x038) << 3) | ((val & 0x1c0) >> 3);
-#else
- val = (val & 0x007) | ((val & 0x07e) << 2);
-#endif
- write_mmcr_word(SC520_PIODATA15_0,
- (read_mmcr_word(SC520_PIODATA15_0) & 0xe00f) | ((val&0x01ff)<<4));
- }
-}
-
-
-int last_stage_init(void)
-{
-
- int version = read_mmcr_byte(SC520_SYSINFO);
-
- printf("Omicron Ceti SC520 Spunk revision %x\n", version);
-
-#if 0
- if (version) {
- int x, y;
-
- printf("eeprom probe %d\n", spi_eeprom_probe(1));
-
- spi_eeprom_read(1, 0, (u8*)&x, 2);
- spi_eeprom_read(1, 1, (u8*)&y, 2);
- printf("eeprom bytes %04x%04x\n", x, y);
- x ^= 0xffff;
- y ^= 0xffff;
- spi_eeprom_write(1, 0, (u8*)&x, 2);
- spi_eeprom_write(1, 1, (u8*)&y, 2);
-
- spi_eeprom_read(1, 0, (u8*)&x, 2);
- spi_eeprom_read(1, 1, (u8*)&y, 2);
- printf("eeprom bytes %04x%04x\n", x, y);
-
- } else {
- int x, y;
-
- printf("eeprom probe %d\n", mw_eeprom_probe(1));
-
- mw_eeprom_read(1, 0, (u8*)&x, 2);
- mw_eeprom_read(1, 1, (u8*)&y, 2);
- printf("eeprom bytes %04x%04x\n", x, y);
-
- x ^= 0xffff;
- y ^= 0xffff;
- mw_eeprom_write(1, 0, (u8*)&x, 2);
- mw_eeprom_write(1, 1, (u8*)&y, 2);
-
- mw_eeprom_read(1, 0, (u8*)&x, 2);
- mw_eeprom_read(1, 1, (u8*)&y, 2);
- printf("eeprom bytes %04x%04x\n", x, y);
-
-
- }
-#endif
-
- ds1722_probe(2);
-
- return 0;
-}
-
-void ssi_chip_select(int dev)
-{
- int version = read_mmcr_byte(SC520_SYSINFO);
-
- if (version) {
- /* Spunk board: EEPROM and CAN are actove-low, TEMP and AUX are active high */
- switch (dev) {
- case 1: /* EEPROM */
- write_mmcr_word(SC520_PIOCLR31_16, 0x0004);
- break;
-
- case 2: /* Temp Probe */
- write_mmcr_word(SC520_PIOSET31_16, 0x0002);
- break;
-
- case 3: /* CAN */
- write_mmcr_word(SC520_PIOCLR31_16, 0x0008);
- break;
-
- case 4: /* AUX */
- write_mmcr_word(SC520_PIOSET31_16, 0x0001);
- break;
-
- case 0:
- write_mmcr_word(SC520_PIOCLR31_16, 0x0003);
- write_mmcr_word(SC520_PIOSET31_16, 0x000c);
- break;
-
- default:
- printf("Illegal SSI device requested: %d\n", dev);
- }
- } else {
-
- /* Globox board: Both EEPROM and TEMP are active-high */
-
- switch (dev) {
- case 1: /* EEPROM */
- write_mmcr_word(SC520_PIOSET15_0, 0x0100);
- break;
-
- case 2: /* Temp Probe */
- write_mmcr_word(SC520_PIOSET15_0, 0x0080);
- break;
-
- case 0:
- write_mmcr_word(SC520_PIOCLR15_0, 0x0180);
- break;
-
- default:
- printf("Illegal SSI device requested: %d\n", dev);
- }
- }
-}
-
-
-void spi_init_f(void)
-{
- read_mmcr_byte(SC520_SYSINFO) ?
- spi_eeprom_probe(1) :
- mw_eeprom_probe(1);
-
-}
-
-ssize_t spi_read(uchar *addr, int alen, uchar *buffer, int len)
-{
- int offset;
- int i;
-
- offset = 0;
- for (i=0;i<alen;i++) {
- offset <<= 8;
- offset |= addr[i];
- }
-
- return read_mmcr_byte(SC520_SYSINFO) ?
- spi_eeprom_read(1, offset, buffer, len) :
- mw_eeprom_read(1, offset, buffer, len);
-}
-
-ssize_t spi_write(uchar *addr, int alen, uchar *buffer, int len)
-{
- int offset;
- int i;
-
- offset = 0;
- for (i=0;i<alen;i++) {
- offset <<= 8;
- offset |= addr[i];
- }
-
- return read_mmcr_byte(SC520_SYSINFO) ?
- spi_eeprom_write(1, offset, buffer, len) :
- mw_eeprom_write(1, offset, buffer, len);
-}
diff --git a/board/sc520_spunk/sc520_spunk_asm.S b/board/sc520_spunk/sc520_spunk_asm.S
deleted file mode 100644
index 8b3410399b..0000000000
--- a/board/sc520_spunk/sc520_spunk_asm.S
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB <daniel@omicron.se>.
- *
- * 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
- */
-
-/* now setup the General purpose bus to give us access to the LEDs.
- * We can then use the leds to display status information.
- */
-
-sc520_cdp_registers:
-/* size offset value */
-.word 1 ; .word 0x040 ; .long 0x00 /* SDRAM buffer control */
-.word 2 ; .word 0xc08 ; .long 0x0001 /* GP CS offset */
-.word 2 ; .word 0xc09 ; .long 0x0003 /* GP CS width */
-.word 2 ; .word 0xc0a ; .long 0x0001 /* GP CS width */
-.word 2 ; .word 0xc0b ; .long 0x0003 /* GP RD pulse width */
-.word 2 ; .word 0xc0c ; .long 0x0001 /* GP RD offse */
-.word 2 ; .word 0xc0d ; .long 0x0003 /* GP WR pulse width */
-.word 2 ; .word 0xc0e ; .long 0x0001 /* GP WR offset */
-.word 2 ; .word 0xc2c ; .long 0x003f /* GPIO directionreg 31-16 */
-.word 2 ; .word 0xc2a ; .long 0xe000 /* GPIO directionreg 15-0 */
-.word 2 ; .word 0xc22 ; .long 0xffc0 /* GPIO pin function 31-16 reg */
-.word 2 ; .word 0xc20 ; .long 0x1fff /* GPIO pin function 15-0 reg */
-.word 0 ; .word 0x000 ; .long 0x00
-
-/* board early intialization */
-.globl early_board_init
-early_board_init:
- movl $sc520_cdp_registers,%esi
-init_loop:
- movl $0xfffef000,%edi /* MMCR base to edi */
- movw (%esi), %bx /* load size to bx */
- cmpw $0, %bx /* if size is 0 we're done */
- je done
- xorl %edx,%edx
- movw 2(%esi), %dx /* load MMCR offset to dx */
- addl %edx, %edi /* add offset to base in edi */
- movl 4(%esi), %eax /* load value in eax */
- cmpw $1, %bx
- je byte /* byte op? */
- cmpw $2, %bx
- je word /* word op? */
- movl %eax, (%edi) /* must be long, then */
- jmp next
-byte: movb %al,(%edi)
- jmp next
-word: movw %ax,(%edi)
-next: addl $8, %esi /* advance esi */
- jmp init_loop
-
- /* light all leds */
-done: movl $0xfffefc32,%edx
- movw $0000,(%edx)
-
- jmp *%ebp /* return to caller */
-
-
-.globl __show_boot_progress
-__show_boot_progress:
- movl $0xfffefc32,%edx
- xorw $0xffff, %ax
- movw %ax,(%edx)
- jmp *%ebp
diff --git a/board/sc520_spunk/sc520_spunk_asm16.S b/board/sc520_spunk/sc520_spunk_asm16.S
deleted file mode 100644
index 8bb1766b50..0000000000
--- a/board/sc520_spunk/sc520_spunk_asm16.S
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB <daniel@omicron.se>.
- *
- * 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
- */
-
-/*
- * 16bit initialization code.
- * This code have to map the area of the boot flash
- * that is used by U-boot to its final destination.
- */
-
-.text
-.section .start16, "ax"
-.code16
-.globl board_init16
-board_init16:
- /* Alias MMCR to 0xdf000 */
- movw $0xfffc, %dx
- movl $0x800df0cb, %eax
- outl %eax, %dx
-
- /* Set ds to point to MMCR alias */
- movw $0xdf00, %ax
- movw %ax, %ds
-
- /* Map the entire flash at 0x38000000
- * (with BOOTCS and PAR14, use 0xabfff800 for ROMCS1) */
- movl $0xc0, %edi
- movl $0x8bfff800, %eax
- movl %eax, (%di)
-
- /* Disable SDRAM write buffer */
- movw $0x40,%di
- xorw %ax,%ax
- movb %al, (%di)
-
- /* Disabe MMCR alias */
- movw $0xfffc, %dx
- movl $0x000000cb, %eax
- outl %eax, %dx
-
- /* the return address is stored in bp */
- jmp *%bp
-
-
-.section .bios, "ax"
-.code16
-.globl realmode_reset
-realmode_reset:
- /* Alias MMCR to 0xdf000 */
- movw $0xfffc, %dx
- movl $0x800df0cb, %eax
- outl %eax, %dx
-
- /* Set ds to point to MMCR alias */
- movw $0xdf00, %ax
- movw %ax, %ds
-
- /* issue software reset thorugh MMCR */
- movl $0xd72, %edi
- movb $0x01, %al
- movb %al, (%di)
-
-1: hlt
- jmp 1
diff --git a/board/sc520_spunk/u-boot.lds b/board/sc520_spunk/u-boot.lds
deleted file mode 100644
index 127d707e6b..0000000000
--- a/board/sc520_spunk/u-boot.lds
+++ /dev/null
@@ -1,92 +0,0 @@
-
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
- *
- * 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_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
-OUTPUT_ARCH(i386)
-ENTRY(_start)
-
-SECTIONS
-{
- . = 0x387c0000; /* Where bootcode in the flash is mapped */
- .text : { *(.text); }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = 0x400000; /* Ram data segment to use */
- _i386boot_romdata_dest = ABSOLUTE(.);
- .data : AT ( LOADADDR(.rodata) + SIZEOF(.rodata) ) { *(.data) }
- _i386boot_romdata_start = LOADADDR(.data);
-
- . = ALIGN(4);
- .got : AT ( LOADADDR(.data) + SIZEOF(.data) ) { *(.got) }
- _i386boot_romdata_size = SIZEOF(.data) + SIZEOF(.got);
-
-
- . = ALIGN(4);
- _i386boot_bss_start = ABSOLUTE(.);
- .bss : { *(.bss) }
- _i386boot_bss_size = SIZEOF(.bss);
-
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- /* 16bit realmode trampoline code */
- .realmode 0x7c0 : AT ( LOADADDR(.got) + SIZEOF(.got) ) { *(.realmode) }
-
- _i386boot_realmode = LOADADDR(.realmode);
- _i386boot_realmode_size = SIZEOF(.realmode);
-
- /* 16bit BIOS emulation code (just enough to boot Linux) */
- .bios 0 : AT ( LOADADDR(.realmode) + SIZEOF(.realmode) ) { *(.bios) }
-
- _i386boot_bios = LOADADDR(.bios);
- _i386boot_bios_size = SIZEOF(.bios);
-
-
- /* The load addresses below assumes that the flash
- * will be mapped so that 0x387f0000 == 0xffff0000
- * at reset time
- *
- * The fe00 and ff00 offsets of the start32 and start16
- * segments are arbitrary, the just have to be mapped
- * at reset and the code have to fit.
- * The fff0 offset of reset is important, however.
- */
-
-
- . = 0xfffffe00;
- .start32 : AT (0x387ffe00) { *(.start32); }
-
- . = 0xff00;
- .start16 : AT (0x387fff00) { *(.start16); }
-
- . = 0xfff0;
- .reset : AT (0x387ffff0) { *(.reset); }
- _i386boot_end = (LOADADDR(.reset) + SIZEOF(.reset) );
-}
diff --git a/board/scb9328/Makefile b/board/scb9328/Makefile
deleted file mode 100644
index 85b6b0474c..0000000000
--- a/board/scb9328/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := scb9328.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/scb9328/config.mk b/board/scb9328/config.mk
deleted file mode 100644
index 8d1d79ac90..0000000000
--- a/board/scb9328/config.mk
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# This config file is used for compilation of scb93328 sources
-#
-# You might change location of U-Boot in memory by setting right TEXT_BASE.
-# This allows for example having one copy located at the end of ram and stored
-# in flash device and later on while developing use other location to test
-# the code in RAM device only.
-#
-
-TEXT_BASE = 0x08f00000
diff --git a/board/scb9328/flash.c b/board/scb9328/flash.c
deleted file mode 100644
index 1b56f8c6aa..0000000000
--- a/board/scb9328/flash.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * Copyright (C) 2003 ETC s.r.o.
- *
- * This code was inspired by Marius Groeger and Kyle Harris code
- * available in other board ports for U-Boot
- *
- * 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
- *
- * Written by Peter Figuli <peposh@etc.sk>, 2003.
- *
- */
-
-#include <common.h>
-#include "intel.h"
-
-
-/*
- * This code should handle CFI FLASH memory device. This code is very
- * minimalistic approach without many essential error handling code as well.
- * Because U-Boot actually is missing smart handling of FLASH device,
- * we just set flash_id to anything else to FLASH_UNKNOW, so common code
- * can call us without any restrictions.
- * TODO: Add CFI Query, to be able to determine FLASH device.
- * TODO: Add error handling code
- * NOTE: This code was tested with BUS_WIDTH 4 and ITERLEAVE 2 only, but
- * hopefully may work with other configurations.
- */
-
-#if ( SCB9328_FLASH_BUS_WIDTH == 1 )
-# define FLASH_BUS vu_char
-# if ( SCB9328_FLASH_INTERLEAVE == 1 )
-# define FLASH_CMD( x ) x
-# else
-# error "With 8bit bus only one chip is allowed"
-# endif
-
-
-#elif ( SCB9328_FLASH_BUS_WIDTH == 2 )
-# define FLASH_BUS vu_short
-# if ( SCB9328_FLASH_INTERLEAVE == 1 )
-# define FLASH_CMD( x ) x
-# elif ( SCB9328_FLASH_INTERLEAVE == 2 )
-# define FLASH_CMD( x ) (( x << 8 )| x )
-# else
-# error "With 16bit bus only 1 or 2 chip(s) are allowed"
-# endif
-
-
-#elif ( SCB9328_FLASH_BUS_WIDTH == 4 )
-# define FLASH_BUS vu_long
-# if ( SCB9328_FLASH_INTERLEAVE == 1 )
-# define FLASH_CMD( x ) x
-# elif ( SCB9328_FLASH_INTERLEAVE == 2 )
-# define FLASH_CMD( x ) (( x << 16 )| x )
-# elif ( SCB9328_FLASH_INTERLEAVE == 4 )
-# define FLASH_CMD( x ) (( x << 24 )|( x << 16 ) ( x << 8 )| x )
-# else
-# error "With 32bit bus only 1,2 or 4 chip(s) are allowed"
-# endif
-
-#else
-# error "Flash bus width might be 1,2,4 for 8,16,32 bit configuration"
-#endif
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-static FLASH_BUS flash_status_reg (void)
-{
-
- FLASH_BUS *addr = (FLASH_BUS *) 0;
-
- *addr = FLASH_CMD (CFI_INTEL_CMD_READ_STATUS_REGISTER);
-
- return *addr;
-}
-
-static int flash_ready (ulong timeout)
-{
- int ok = 1;
-
- reset_timer_masked ();
- while ((flash_status_reg () & FLASH_CMD (CFI_INTEL_SR_READY)) !=
- FLASH_CMD (CFI_INTEL_SR_READY)) {
- if (get_timer_masked () > timeout && timeout != 0) {
- ok = 0;
- break;
- }
- }
- return ok;
-}
-
-#if ( CFG_MAX_FLASH_BANKS != 1 )
-# error "SCB9328 platform has only one flash bank!"
-#endif
-
-
-ulong flash_init (void)
-{
- int i;
- unsigned long address = SCB9328_FLASH_BASE;
-
- flash_info[0].size = SCB9328_FLASH_BANK_SIZE;
- flash_info[0].sector_count = CFG_MAX_FLASH_SECT;
- flash_info[0].flash_id = INTEL_MANUFACT;
- memset (flash_info[0].protect, 0, CFG_MAX_FLASH_SECT);
-
- for (i = 0; i < CFG_MAX_FLASH_SECT; i++) {
- flash_info[0].start[i] = address;
-#ifdef SCB9328_FLASH_UNLOCK
- /* Some devices are hw locked after start. */
- *((FLASH_BUS *) address) = FLASH_CMD (CFI_INTEL_CMD_LOCK_SETUP);
- *((FLASH_BUS *) address) = FLASH_CMD (CFI_INTEL_CMD_UNLOCK_BLOCK);
- flash_ready (0);
- *((FLASH_BUS *) address) = FLASH_CMD (CFI_INTEL_CMD_READ_ARRAY);
-#endif
- address += SCB9328_FLASH_SECT_SIZE;
- }
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return SCB9328_FLASH_BANK_SIZE;
-}
-
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- printf (" Intel vendor\n");
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if (!(i % 5)) {
- printf ("\n");
- }
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-}
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, non_protected = 0, sector;
- int rc = ERR_OK;
-
- FLASH_BUS *address;
-
- for (sector = s_first; sector <= s_last; sector++) {
- if (!info->protect[sector]) {
- non_protected++;
- }
- }
-
- if (!non_protected) {
- return ERR_PROTECTED;
- }
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
-
-
- /* Start erase on unprotected sectors */
- for (sector = s_first; sector <= s_last && !ctrlc (); sector++) {
- if (info->protect[sector]) {
- printf ("Protected sector %2d skipping...\n", sector);
- continue;
- } else {
- printf ("Erasing sector %2d ... ", sector);
- }
-
- address = (FLASH_BUS *) (info->start[sector]);
-
- *address = FLASH_CMD (CFI_INTEL_CMD_BLOCK_ERASE);
- *address = FLASH_CMD (CFI_INTEL_CMD_CONFIRM);
- if (flash_ready (CFG_FLASH_ERASE_TOUT)) {
- *address = FLASH_CMD (CFI_INTEL_CMD_CLEAR_STATUS_REGISTER);
- printf ("ok.\n");
- } else {
- *address = FLASH_CMD (CFI_INTEL_CMD_SUSPEND);
- rc = ERR_TIMOUT;
- printf ("timeout! Aborting...\n");
- break;
- }
- *address = FLASH_CMD (CFI_INTEL_CMD_READ_ARRAY);
- }
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
- if (flag) {
- enable_interrupts ();
- }
-
- return rc;
-}
-
-static int write_data (flash_info_t * info, ulong dest, FLASH_BUS data)
-{
- FLASH_BUS *address = (FLASH_BUS *) dest;
- int rc = ERR_OK;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*address & data) != data) {
- return ERR_NOT_ERASED;
- }
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-
- flag = disable_interrupts ();
-
- *address = FLASH_CMD (CFI_INTEL_CMD_CLEAR_STATUS_REGISTER);
- *address = FLASH_CMD (CFI_INTEL_CMD_PROGRAM1);
- *address = data;
-
- if (!flash_ready (CFG_FLASH_WRITE_TOUT)) {
- *address = FLASH_CMD (CFI_INTEL_CMD_SUSPEND);
- rc = ERR_TIMOUT;
- printf ("timeout! Aborting...\n");
- }
-
- *address = FLASH_CMD (CFI_INTEL_CMD_READ_ARRAY);
- if (flag) {
- enable_interrupts ();
- }
-
- return rc;
-}
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong read_addr, write_addr;
- FLASH_BUS data;
- int i, result = ERR_OK;
-
-
- read_addr = addr & ~(sizeof (FLASH_BUS) - 1);
- write_addr = read_addr;
- if (read_addr != addr) {
- data = 0;
- for (i = 0; i < sizeof (FLASH_BUS); i++) {
- if (read_addr < addr || cnt == 0) {
- data |= *((uchar *) read_addr) << i * 8;
- } else {
- data |= (*src++) << i * 8;
- cnt--;
- }
- read_addr++;
- }
- if ((result = write_data (info, write_addr, data)) != ERR_OK) {
- return result;
- }
- write_addr += sizeof (FLASH_BUS);
- }
- for (; cnt >= sizeof (FLASH_BUS); cnt -= sizeof (FLASH_BUS)) {
- if ((result = write_data (info, write_addr,
- *((FLASH_BUS *) src))) != ERR_OK) {
- return result;
- }
- write_addr += sizeof (FLASH_BUS);
- src += sizeof (FLASH_BUS);
- }
- if (cnt > 0) {
- read_addr = write_addr;
- data = 0;
- for (i = 0; i < sizeof (FLASH_BUS); i++) {
- if (cnt > 0) {
- data |= (*src++) << i * 8;
- cnt--;
- } else {
- data |= *((uchar *) read_addr) << i * 8;
- }
- read_addr++;
- }
- if ((result = write_data (info, write_addr, data)) != 0) {
- return result;
- }
- }
- return ERR_OK;
-}
diff --git a/board/scb9328/intel.h b/board/scb9328/intel.h
deleted file mode 100644
index 77498b6e1d..0000000000
--- a/board/scb9328/intel.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2002 ETC s.r.o.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the ETC s.r.o. nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Written by Marcel Telka <marcel@telka.sk>, 2002.
- *
- * Documentation:
- * [1] Intel Corporation, "3 Volt Intel Strata Flash Memory 28F128J3A, 28F640J3A,
- * 28F320J3A (x8/x16)", April 2002, Order Number: 290667-011
- * [2] Intel Corporation, "3 Volt Synchronous Intel Strata Flash Memory 28F640K3, 28F640K18,
- * 28F128K3, 28F128K18, 28F256K3, 28F256K18 (x16)", June 2002, Order Number: 290737-005
- *
- * This file is taken from OpenWinCE project hosted by SourceForge.net
- *
- */
-
-#ifndef FLASH_INTEL_H
-#define FLASH_INTEL_H
-
-#include <common.h>
-
-/* Intel CFI commands - see Table 4. in [1] and Table 3. in [2] */
-
-#define CFI_INTEL_CMD_READ_ARRAY 0xFF /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_READ_IDENTIFIER 0x90 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_READ_QUERY 0x98 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_READ_STATUS_REGISTER 0x70 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_CLEAR_STATUS_REGISTER 0x50 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_PROGRAM1 0x40 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_PROGRAM2 0x10 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_WRITE_TO_BUFFER 0xE8 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_CONFIRM 0xD0 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_BLOCK_ERASE 0x20 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_SUSPEND 0xB0 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_RESUME 0xD0 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_LOCK_SETUP 0x60 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_LOCK_BLOCK 0x01 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_UNLOCK_BLOCK 0xD0 /* 28FxxxJ3A - unlocks all blocks, 28FFxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_LOCK_DOWN_BLOCK 0x2F /* 28FxxxK3, 28FxxxK18 */
-
-/* Intel CFI Status Register bits - see Table 6. in [1] and Table 7. in [2] */
-
-#define CFI_INTEL_SR_READY 1 << 7 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_ERASE_SUSPEND 1 << 6 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_ERASE_ERROR 1 << 5 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_PROGRAM_ERROR 1 << 4 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_VPEN_ERROR 1 << 3 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_PROGRAM_SUSPEND 1 << 2 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_BLOCK_LOCKED 1 << 1 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_BEFP 1 << 0 /* 28FxxxK3, 28FxxxK18 */
-
-/* Intel flash device ID codes for 28FxxxJ3A - see Table 5. in [1] */
-
-#define CFI_CHIP_INTEL_28F320J3A 0x0016
-#define CFI_CHIPN_INTEL_28F320J3A "28F320J3A"
-#define CFI_CHIP_INTEL_28F640J3A 0x0017
-#define CFI_CHIPN_INTEL_28F640J3A "28F640J3A"
-#define CFI_CHIP_INTEL_28F128J3A 0x0018
-#define CFI_CHIPN_INTEL_28F128J3A "28F128J3A"
-
-/* Intel flash device ID codes for 28FxxxK3 and 28FxxxK18 - see Table 8. in [2] */
-
-#define CFI_CHIP_INTEL_28F640K3 0x8801
-#define CFI_CHIPN_INTEL_28F640K3 "28F640K3"
-#define CFI_CHIP_INTEL_28F128K3 0x8802
-#define CFI_CHIPN_INTEL_28F128K3 "28F128K3"
-#define CFI_CHIP_INTEL_28F256K3 0x8803
-#define CFI_CHIPN_INTEL_28F256K3 "28F256K3"
-#define CFI_CHIP_INTEL_28F640K18 0x8805
-#define CFI_CHIPN_INTEL_28F640K18 "28F640K18"
-#define CFI_CHIP_INTEL_28F128K18 0x8806
-#define CFI_CHIPN_INTEL_28F128K18 "28F128K18"
-#define CFI_CHIP_INTEL_28F256K18 0x8807
-#define CFI_CHIPN_INTEL_28F256K18 "28F256K18"
-
-#endif /* FLASH_INTEL_H */
diff --git a/board/scb9328/lowlevel_init.S b/board/scb9328/lowlevel_init.S
deleted file mode 100644
index ba3b6d2418..0000000000
--- a/board/scb9328/lowlevel_init.S
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2004 Sascha Hauer, Synertronixx GmbH
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/imx-regs.h>
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
-/* Change PERCLK1DIV to 14 ie 14+1 */
- ldr r0, =PCDR
- ldr r1, =CFG_PCDR_VAL
- str r1, [r0]
-
-/* set MCU PLL Control Register 0 */
-
- ldr r0, =MPCTL0
- ldr r1, =CFG_MPCTL0_VAL
- str r1, [r0]
-
-/* set mpll restart bit */
- ldr r0, =CSCR
- ldr r1, [r0]
- orr r1,r1,#(1<<21)
- str r1, [r0]
-
- mov r2,#0x10
-1:
- mov r3,#0x2000
-2:
- subs r3,r3,#1
- bne 2b
-
- subs r2,r2,#1
- bne 1b
-
-/* set System PLL Control Register 0 */
-
- ldr r0, =SPCTL0
- ldr r1, =CFG_SPCTL0_VAL
- str r1, [r0]
-
-/* set spll restart bit */
- ldr r0, =CSCR
- ldr r1, [r0]
- orr r1,r1,#(1<<22)
- str r1, [r0]
-
- mov r2,#0x10
-1:
- mov r3,#0x2000
-2:
- subs r3,r3,#1
- bne 2b
-
- subs r2,r2,#1
- bne 1b
-
- ldr r0, =CSCR
- ldr r1, =CFG_CSCR_VAL
- str r1, [r0]
-
-/* I have now read the ARM920 DataSheet back-to-Back, and have stumbled upon
- *this.....
- *
- * It would appear that from a Cold-Boot the ARM920T enters "FastBus" mode CP15
- * register 1, this stops it using the output of the PLL and thus runs at the
- * slow rate. Unless you place the Core into "Asynch" mode, the CPU will never
- * use the value set in the CM_OSC registers...regardless of what you set it
- * too! Thus, although i thought i was running at 140MHz, i'm actually running
- * at 40!..
-
- * Slapping this into my bootloader does the trick...
-
- * MRC p15,0,r0,c1,c0,0 ; read core configuration register
- * ORR r0,r0,#0xC0000000 ; set asynchronous clocks and not fastbus mode
- * MCR p15,0,r0,c1,c0,0 ; write modified value to core configuration
- * register
- */
- MRC p15,0,r0,c1,c0,0
- ORR r0,r0,#0xC0000000
- MCR p15,0,r0,c1,c0,0
-
- ldr r0, =GPR(0)
- ldr r1, =CFG_GPR_A_VAL
- str r1, [r0]
-
- ldr r0, =GIUS(0)
- ldr r1, =CFG_GIUS_A_VAL
- str r1, [r0]
-
-/* CS3 becomes CS3 by clearing reset default bit 1 in FMCR */
-
- ldr r0, =FMCR
- ldr r1, =CFG_FMCR_VAL
- str r1, [r0]
-
- ldr r0, =CS0U
- ldr r1, =CFG_CS0U_VAL
- str r1, [r0]
-
- ldr r0, =CS0L
- ldr r1, =CFG_CS0L_VAL
- str r1, [r0]
-
- ldr r0, =CS1U
- ldr r1, =CFG_CS1U_VAL
- str r1, [r0]
-
- ldr r0, =CS1L
- ldr r1, =CFG_CS1L_VAL
- str r1, [r0]
-
- ldr r0, =CS2U
- ldr r1, =CFG_CS2U_VAL
- str r1, [r0]
-
- ldr r0, =CS2L
- ldr r1, =CFG_CS2L_VAL
- str r1, [r0]
-
- ldr r0, =CS3U
- ldr r1, =CFG_CS3U_VAL
- str r1, [r0]
-
- ldr r0, =CS3L
- ldr r1, =CFG_CS3L_VAL
- str r1, [r0]
-
- ldr r0, =CS4U
- ldr r1, =CFG_CS4U_VAL
- str r1, [r0]
-
- ldr r0, =CS4L
- ldr r1, =CFG_CS4L_VAL
- str r1, [r0]
-
- ldr r0, =CS5U
- ldr r1, =CFG_CS5U_VAL
- str r1, [r0]
-
- ldr r0, =CS5L
- ldr r1, =CFG_CS5L_VAL
- str r1, [r0]
-
-/* SDRAM Setup */
-
- ldr r0, =SDCTL0
- ldr r1, =PRECHARGE_CMD
- str r1, [r0]
-
- ldr r0, =0x08200000
- ldr r1, =0x0 /* Issue Precharge all Command */
- str r1, [r0]
-
- ldr r0, =SDCTL0
- ldr r1, =AUTOREFRESH_CMD
- str r1, [r0]
-
- ldr r0, =0x08000000
- ldr r1, =0x0 /* Issue AutoRefresh Command */
- str r1, [r0]
- str r1, [r0]
- str r1, [r0]
- str r1, [r0]
- str r1, [r0]
- str r1, [r0]
- str r1, [r0]
- str r1, [r0]
-
- ldr r0, =SDCTL0
- ldr r1, =0xb10a8300
- str r1, [r0]
-
- ldr r0, =0x08223000 /* CAS Latency 2 */
- ldr r1, =0x0 /* Issue Mode Register Command, Burst Length = 8 */
- str r1, [r0]
-
- ldr r0, =SDCTL0
- ldr r1, =0x810a8200 /* Set to Normal Mode CAS 2 */
- str r1, [r0]
-
- mov pc,r10
diff --git a/board/scb9328/scb9328.c b/board/scb9328/scb9328.c
deleted file mode 100644
index 3f6831be5e..0000000000
--- a/board/scb9328/scb9328.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2004 Sascha Hauer, Synertronixx GmbH
- *
- * 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 <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-# define SHOW_BOOT_PROGRESS(arg) show_boot_progress(arg)
-#else
-# define SHOW_BOOT_PROGRESS(arg)
-#endif
-
-int board_init (void)
-{
- gd->bd->bi_arch_number = MACH_TYPE_SCB9328;
- gd->bd->bi_boot_params = 0x08000100;
-
- return 0;
-}
-
-int dram_init (void)
-{
-#if ( CONFIG_NR_DRAM_BANKS > 0 )
- gd->bd->bi_dram[0].start = SCB9328_SDRAM_1;
- gd->bd->bi_dram[0].size = SCB9328_SDRAM_1_SIZE;
-#endif
-#if ( CONFIG_NR_DRAM_BANKS > 1 )
- gd->bd->bi_dram[1].start = SCB9328_SDRAM_2;
- gd->bd->bi_dram[1].size = SCB9328_SDRAM_2_SIZE;
-#endif
-#if ( CONFIG_NR_DRAM_BANKS > 2 )
- gd->bd->bi_dram[2].start = SCB9328_SDRAM_3;
- gd->bd->bi_dram[2].size = SCB9328_SDRAM_3_SIZE;
-#endif
-#if ( CONFIG_NR_DRAM_BANKS > 3 )
- gd->bd->bi_dram[3].start = SCB9328_SDRAM_4;
- gd->bd->bi_dram[3].size = SCB9328_SDRAM_4_SIZE;
-#endif
- return 0;
-}
-
-/**
- * show_boot_progress: - indicate state of the boot process
- *
- * @param status: Status number - see README for details.
- *
- * The CSB226 does only have 3 LEDs, so we switch them on at the most
- * important states (1, 5, 15).
- */
-
-void show_boot_progress (int status)
-{
- return;
-}
diff --git a/board/scb9328/u-boot.lds b/board/scb9328/u-boot.lds
deleted file mode 100644
index 1d1669cdea..0000000000
--- a/board/scb9328/u-boot.lds
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/shannon/Makefile b/board/shannon/Makefile
deleted file mode 100644
index 37774a90c4..0000000000
--- a/board/shannon/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := shannon.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/shannon/config.mk b/board/shannon/config.mk
deleted file mode 100644
index ca45733af0..0000000000
--- a/board/shannon/config.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# LART board with SA1100 cpu
-#
-# see http://www.lart.tudelft.nl/ for more information on LART
-#
-
-#
-# Tuxscreen has 4 banks of 4 MB DRAM each
-#
-# c000'0000
-# c800'0000
-# d000'0000
-# d800'0000
-#
-# Linux-Kernel is expected to be at c000'8000, entry c000'8000
-#
-# we load ourself to d838'0000, the upper 1 MB of the last (4th) bank
-#
-# download areas is c800'0000
-#
-
-
-TEXT_BASE = 0xd8380000
diff --git a/board/shannon/flash.c b/board/shannon/flash.c
deleted file mode 100644
index 475b76b30b..0000000000
--- a/board/shannon/flash.c
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@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
- */
-
-#include <common.h>
-
-ulong myflush(void);
-
-
-#define FLASH_BANK_SIZE 0x400000 /* 4 MB */
-#define MAIN_SECT_SIZE 0x20000 /* 128 KB */
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-#define CMD_READ_ARRAY 0x00F000F0
-#define CMD_UNLOCK1 0x00AA00AA
-#define CMD_UNLOCK2 0x00550055
-#define CMD_ERASE_SETUP 0x00800080
-#define CMD_ERASE_CONFIRM 0x00300030
-#define CMD_PROGRAM 0x00A000A0
-#define CMD_UNLOCK_BYPASS 0x00200020
-
-#define MEM_FLASH_ADDR1 (*(volatile u32 *)(CFG_FLASH_BASE + (0x00000555 << 2)))
-#define MEM_FLASH_ADDR2 (*(volatile u32 *)(CFG_FLASH_BASE + (0x000002AA << 2)))
-
-#define BIT_ERASE_DONE 0x00800080
-#define BIT_RDY_MASK 0x00800080
-#define BIT_PROGRAM_ERROR 0x00200020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init(void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++)
- {
- ulong flashbase = 0;
- flash_info[i].flash_id =
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV160B & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset(flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic("configured too many flash banks!\n");
- for (j = 0; j < flash_info[i].sector_count; j++)
- {
-
- if (j <= 3)
- {
- /* 1st one is 32 KB */
- if (j == 0)
- {
- flash_info[i].start[j] = flashbase + 0;
- }
-
- /* 2nd and 3rd are both 16 KB */
- if ((j == 1) || (j == 2))
- {
- flash_info[i].start[j] = flashbase + 0x8000 + (j-1)*0x4000;
- }
-
- /* 4th 64 KB */
- if (j == 3)
- {
- flash_info[i].start[j] = flashbase + 0x10000;
- }
- }
- else
- {
- flash_info[i].start[j] = flashbase + (j - 3)*MAIN_SECT_SIZE;
- }
- }
- size += flash_info[i].size;
- }
-
- /*
- * Protect monitor and environment sectors
- * Inferno is complicated, it's hardware locked
- */
-#ifdef CONFIG_INFERNO
- /* first one, 0x00000 to 0x07fff */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE + 0x00000,
- CFG_FLASH_BASE + 0x08000 - 1,
- &flash_info[0]);
-
- /* third to 10th, 0x0c000 - 0xdffff */
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE + 0x0c000,
- CFG_FLASH_BASE + 0xe0000 - 1,
- &flash_info[0]);
-#else
- flash_protect(FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1,
- &flash_info[0]);
-#endif
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK)
- {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf("AMD: ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK)
- {
- case (AMD_ID_LV160B & FLASH_TYPEMASK):
- printf("2x Amd29F160BB (16Mbit)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf(" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++)
- {
- if ((i % 5) == 0)
- {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
-Done:
- ;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- ulong result;
- int iflag, cflag, prot, sect;
- int rc = ERR_OK;
- int chip1, chip2;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (AMD_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status();
- icache_disable();
- iflag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && !ctrlc(); sect++)
- {
- printf("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- if (info->protect[sect] == 0)
- { /* not protected */
- vu_long *addr = (vu_long *)(info->start[sect]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- chip1 = chip2 = 0;
-
- do
- {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked() > CFG_FLASH_ERASE_TOUT)
- {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- chip1 = TMO;
- break;
- }
-
- if (!chip1 && (result & 0xFFFF) & BIT_ERASE_DONE)
- chip1 = READY;
-
- if (!chip1 && (result & 0xFFFF) & BIT_PROGRAM_ERROR)
- chip1 = ERR;
-
- if (!chip2 && (result >> 16) & BIT_ERASE_DONE)
- chip2 = READY;
-
- if (!chip2 && (result >> 16) & BIT_PROGRAM_ERROR)
- chip2 = ERR;
-
- } while (!chip1 || !chip2);
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- if (chip1 == ERR || chip2 == ERR)
- {
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (chip1 == TMO)
- {
- rc = ERR_TIMOUT;
- goto outahere;
- }
-
- printf("ok.\n");
- }
- else /* it was protected */
- {
- printf("protected!\n");
- }
- }
-
- if (ctrlc())
- printf("User Interrupt!\n");
-
-outahere:
- /* allow flash to settle - wait 10 ms */
- udelay_masked(10000);
-
- if (iflag)
- enable_interrupts();
-
- if (cflag)
- icache_enable();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)dest;
- ulong result;
- int rc = ERR_OK;
- int cflag, iflag;
- int chip1, chip2;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status();
- icache_disable();
- iflag = disable_interrupts();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_UNLOCK_BYPASS;
- *addr = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked();
-
- /* wait until flash is ready */
- chip1 = chip2 = 0;
- do
- {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked() > CFG_FLASH_ERASE_TOUT)
- {
- chip1 = ERR | TMO;
- break;
- }
- if (!chip1 && ((result & 0x80) == (data & 0x80)))
- chip1 = READY;
-
- if (!chip1 && ((result & 0xFFFF) & BIT_PROGRAM_ERROR))
- {
- result = *addr;
-
- if ((result & 0x80) == (data & 0x80))
- chip1 = READY;
- else
- chip1 = ERR;
- }
-
- if (!chip2 && ((result & (0x80 << 16)) == (data & (0x80 << 16))))
- chip2 = READY;
-
- if (!chip2 && ((result >> 16) & BIT_PROGRAM_ERROR))
- {
- result = *addr;
-
- if ((result & (0x80 << 16)) == (data & (0x80 << 16)))
- chip2 = READY;
- else
- chip2 = ERR;
- }
-
- } while (!chip1 || !chip2);
-
- *addr = CMD_READ_ARRAY;
-
- if (chip1 == ERR || chip2 == ERR || *addr != data)
- rc = ERR_PROG_ERROR;
-
- if (iflag)
- enable_interrupts();
-
- if (cflag)
- icache_enable();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int l;
- int i, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = *((vu_long*)src);
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- src += 4;
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *)cp << 24);
- }
-
- return write_word(info, wp, data);
-}
diff --git a/board/shannon/lowlevel_init.S b/board/shannon/lowlevel_init.S
deleted file mode 100644
index 0655c42d3b..0000000000
--- a/board/shannon/lowlevel_init.S
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Memory Setup stuff - taken from blob memsetup.S
- *
- * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
- * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
- *
- * 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 <config.h>
-#include <version.h>
-
-
-/* some parameters for the board */
-
-MEM_BASE: .long 0xa0000000
-MEM_START: .long 0xc0000000
-
-#define MDCNFG 0x00
-#define MDCAS0 0x04
-#define MDCAS1 0x08
-#define MDCAS2 0x0c
-#define MSC0 0x10
-#define MSC1 0x14
-#define MECR 0x18
-
-mdcas0: .long 0xc71c703f @ cccccccf
-mdcas1: .long 0xffc71c71 @ fffffffc
-mdcas2: .long 0xffffffff @ ffffffff
-mdcnfg: .long 0x0334b21f @ 9326991f
-msc0: .long 0xfff84458 @ 42304230
-msc1: .long 0xffffffff @ 20182018
-mecr: .long 0x7fff7fff @ 01000000
-
-/* setting up the memory */
-
-.globl lowlevel_init
-lowlevel_init:
- ldr r0, MEM_BASE
-
- /* Setup the flash memory */
- ldr r1, msc0
- str r1, [r0, #MSC0]
-
- /* Set up the DRAM */
-
- /* MDCAS0 */
- ldr r1, mdcas0
- str r1, [r0, #MDCAS0]
-
- /* MDCAS1 */
- ldr r1, mdcas1
- str r1, [r0, #MDCAS1]
-
- /* MDCAS2 */
- ldr r1, mdcas2
- str r1, [r0, #MDCAS2]
-
- /* MDCNFG */
- ldr r1, mdcnfg
- str r1, [r0, #MDCNFG]
-
- /* Set up PCMCIA space */
- ldr r1, mecr
- str r1, [r0, #MECR]
-
- /* Load something to activate bank */
- ldr r1, MEM_START
-
-.rept 8
- ldr r0, [r1]
-.endr
-
- /* everything is fine now */
- mov pc, lr
diff --git a/board/shannon/shannon.c b/board/shannon/shannon.c
deleted file mode 100644
index 8cd1fc34c6..0000000000
--- a/board/shannon/shannon.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@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
- */
-
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* but if we use InfernoLoader, we must do some inits here */
-
-#ifdef CONFIG_INFERNO
- {
- unsigned long temp;
- __asm__ __volatile__(/* disable MMU, enable icache */
- "mrc p15, 0, %0, c1, c0\n"
- "bic %0, %0, #0x00002000\n"
- "bic %0, %0, #0x0000000f\n"
- "orr %0, %0, #0x00001000\n"
- "orr %0, %0, #0x00000002\n"
- "mcr p15, 0, %0, c1, c0\n"
- /* flush caches */
- "mov %0, #0\n"
- "mcr p15, 0, %0, c7, c7, 0\n"
- "mcr p15, 0, %0, c8, c7, 0\n"
- : "=r" (temp)
- :
- : "memory");
- /* setup PCMCIA timing */
- temp = 0xa0000018;
- *(unsigned long *)temp = 0x00060006;
-
- }
-#endif /* CONFIG_INFERNO */
-
- /* arch number for shannon */
- gd->bd->bi_arch_number = MACH_TYPE_SHANNON;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xc0000100;
-
- return 0;
-}
-
-int dram_init (void)
-{
-#if defined(PHYS_SDRAM_1) || defined(PHYS_SDRAM_2) || \
- defined(PHYS_SDRAM_3) || defined(PHYS_SDRAM_4)
- bd_t *bd = gd->bd;
-#endif
-
-#ifdef PHYS_SDRAM_1
- bd->bi_dram[0].start = PHYS_SDRAM_1;
- bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-#endif
-
-#ifdef PHYS_SDRAM_2
- bd->bi_dram[1].start = PHYS_SDRAM_2;
- bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
-#endif
-
-#ifdef PHYS_SDRAM_3
- bd->bi_dram[2].start = PHYS_SDRAM_3;
- bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
-#endif
-
-#ifdef PHYS_SDRAM_4
- bd->bi_dram[3].start = PHYS_SDRAM_4;
- bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
-#endif
-
- return (0);
-}
diff --git a/board/shannon/u-boot.lds b/board/shannon/u-boot.lds
deleted file mode 100644
index 258bece23c..0000000000
--- a/board/shannon/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/sa1100/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/siemens/CCM/Makefile b/board/siemens/CCM/Makefile
deleted file mode 100644
index e053c7d661..0000000000
--- a/board/siemens/CCM/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-$(shell mkdir -p $(obj)../../tqm8xx)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = ccm.o flash.o fpga_ccm.o ../common/fpga.o \
- ../../tqm8xx/load_sernum_ethaddr.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/siemens/CCM/ccm.c b/board/siemens/CCM/ccm.c
deleted file mode 100644
index 5a32e45e28..0000000000
--- a/board/siemens/CCM/ccm.c
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-#include <commproc.h>
-#include <command.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-void can_driver_enable (void);
-void can_driver_disable (void);
-
-int fpga_init(void);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] =
-{
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEAFBC04, 0x11AF7C04, 0xEFBAFC00,
- 0x1FF5FC47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FF5FC34, 0xEFEABC34, 0x1FB57C35, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEAFBC04, 0x10AF7C04, 0xF0AFFC00,
- 0xF0AFFC00, 0xF1AFFC00, 0xEFBAFC00, 0x1FF5FC47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEABBC00, 0x01B27C04, 0x1FF5FC47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEABBC00, 0x10A77C00, 0xF0AFFC00,
- 0xF0AFFC00, 0xE1BAFC04, 0x1FF5FC47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1FFD7C84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Always return 1 (no second DRAM bank since based on TQM8xxL module)
- */
-
-int checkboard (void)
-{
- unsigned char *s;
- unsigned char buf[64];
-
- s = (getenv_r ("serial#", (char *)&buf, sizeof(buf)) > 0) ? buf : NULL;
-
- puts ("Board: Siemens CCM");
-
- if (s) {
- puts (" (");
-
- for (; *s; ++s) {
- if (*s == ' ')
- break;
- putc (*s);
- }
- putc (')');
- }
-
- putc ('\n');
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * If Power-On-Reset switch off the Red and Green LED: At reset, the
- * data direction registers are cleared and must therefore be restored.
- */
-#define RSR_CSRS 0x08000000
-
-int power_on_reset(void)
-{
- /* Test Reset Status Register */
- return ((volatile immap_t *)CFG_IMMR)->im_clkrst.car_rsr & RSR_CSRS ? 0:1;
-}
-
-#define PB_LED_GREEN 0x10000 /* red LED is on PB.15 */
-#define PB_LED_RED 0x20000 /* red LED is on PB.14 */
-#define PB_LEDS (PB_LED_GREEN | PB_LED_RED);
-
-static void init_leds (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
-
- immap->im_cpm.cp_pbpar &= ~PB_LEDS;
- immap->im_cpm.cp_pbodr &= ~PB_LEDS;
- immap->im_cpm.cp_pbdir |= PB_LEDS;
- /* Check stop reset status */
- if (power_on_reset()) {
- immap->im_cpm.cp_pbdat &= ~PB_LEDS;
- }
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size8, size9;
- long int size = 0;
- unsigned long reg;
-
- upmconfig(UPMA, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_8K;
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller banks 2 and 3 to the SDRAM banks 2 and 3 at
- * preliminary addresses - these have to be modified after the
- * SDRAM size has been determined.
- */
- memctl->memc_or2 = CFG_OR2_PRELIM;
- memctl->memc_br2 = CFG_BR2_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay(200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80004105; /* SDRAM bank 0 */
- udelay(1);
- memctl->memc_mcr = 0x80004230; /* SDRAM bank 0 - execute twice */
- udelay(1);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL, SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL, SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
-
- if (size8 < size9) { /* leave configuration at 9 columns */
- size = size9;
-/* debug ("SDRAM in 9 column mode: %ld MB\n", size >> 20); */
- } else { /* back to 8 columns */
- size = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay(500);
-/* debug ("SDRAM in 8 column mode: %ld MB\n", size >> 20); */
- }
-
- udelay (1000);
-
- /*
- * Adjust refresh rate depending on SDRAM type
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if (size < 0x02000000) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
- udelay(1000);
- }
-
- /*
- * Final mapping
- */
-
- memctl->memc_or2 = ((-size) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
-
- can_driver_enable ();
- init_leds ();
-
- udelay(10000);
-
- return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Warning - both the PUMA load mode and the CAN driver use UPM B,
- * so make sure only one of both is active.
- */
-void can_driver_enable (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- /* Initialize MBMR */
- memctl->memc_mbmr = MBMR_GPL_B4DIS; /* GPL_B4 ouput line Disable */
-
- /* Initialize UPMB for CAN: single read */
- memctl->memc_mdr = 0xFFFFC004;
- memctl->memc_mcr = 0x0100 | UPMB;
-
- memctl->memc_mdr = 0x0FFFD004;
- memctl->memc_mcr = 0x0101 | UPMB;
-
- memctl->memc_mdr = 0x0FFFC000;
- memctl->memc_mcr = 0x0102 | UPMB;
-
- memctl->memc_mdr = 0x3FFFC004;
- memctl->memc_mcr = 0x0103 | UPMB;
-
- memctl->memc_mdr = 0xFFFFDC05;
- memctl->memc_mcr = 0x0104 | UPMB;
-
- /* Initialize UPMB for CAN: single write */
- memctl->memc_mdr = 0xFFFCC004;
- memctl->memc_mcr = 0x0118 | UPMB;
-
- memctl->memc_mdr = 0xCFFCD004;
- memctl->memc_mcr = 0x0119 | UPMB;
-
- memctl->memc_mdr = 0x0FFCC000;
- memctl->memc_mcr = 0x011A | UPMB;
-
- memctl->memc_mdr = 0x7FFCC004;
- memctl->memc_mcr = 0x011B | UPMB;
-
- memctl->memc_mdr = 0xFFFDCC05;
- memctl->memc_mcr = 0x011C | UPMB;
-
- /* Initialize OR3 / BR3 for CAN Bus Controller */
- memctl->memc_or3 = CFG_OR3_CAN;
- memctl->memc_br3 = CFG_BR3_CAN;
-}
-
-void can_driver_disable (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- /* Reset OR3 / BR3 to disable CAN Bus Controller */
- memctl->memc_br3 = 0;
- memctl->memc_or3 = 0;
-
- memctl->memc_mbmr = 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base, long int maxsize)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#define ETH_CFG_BITS (CFG_PB_ETH_CFG1 | CFG_PB_ETH_CFG2 | CFG_PB_ETH_CFG3 )
-
-#define ETH_ALL_BITS (ETH_CFG_BITS | CFG_PB_ETH_POWERDOWN)
-
-void reset_phy(void)
-{
- immap_t *immr = (immap_t *)CFG_IMMR;
- ulong value;
-
- /* Configure all needed port pins for GPIO */
-#ifdef CFG_ETH_MDDIS_VALUE
- immr->im_ioport.iop_padat |= CFG_PA_ETH_MDDIS;
-#else
- immr->im_ioport.iop_padat &= ~(CFG_PA_ETH_MDDIS | CFG_PA_ETH_RESET); /* Set low */
-#endif
- immr->im_ioport.iop_papar &= ~(CFG_PA_ETH_MDDIS | CFG_PA_ETH_RESET); /* GPIO */
- immr->im_ioport.iop_paodr &= ~(CFG_PA_ETH_MDDIS | CFG_PA_ETH_RESET); /* active output */
- immr->im_ioport.iop_padir |= CFG_PA_ETH_MDDIS | CFG_PA_ETH_RESET; /* output */
-
- immr->im_cpm.cp_pbpar &= ~(ETH_ALL_BITS); /* GPIO */
- immr->im_cpm.cp_pbodr &= ~(ETH_ALL_BITS); /* active output */
-
- value = immr->im_cpm.cp_pbdat;
-
- /* Assert Powerdown and Reset signals */
- value |= CFG_PB_ETH_POWERDOWN;
-
- /* PHY configuration includes MDDIS and CFG1 ... CFG3 */
-#ifdef CFG_ETH_CFG1_VALUE
- value |= CFG_PB_ETH_CFG1;
-#else
- value &= ~(CFG_PB_ETH_CFG1);
-#endif
-#ifdef CFG_ETH_CFG2_VALUE
- value |= CFG_PB_ETH_CFG2;
-#else
- value &= ~(CFG_PB_ETH_CFG2);
-#endif
-#ifdef CFG_ETH_CFG3_VALUE
- value |= CFG_PB_ETH_CFG3;
-#else
- value &= ~(CFG_PB_ETH_CFG3);
-#endif
-
- /* Drive output signals to initial state */
- immr->im_cpm.cp_pbdat = value;
- immr->im_cpm.cp_pbdir |= ETH_ALL_BITS;
- udelay (10000);
-
- /* De-assert Ethernet Powerdown */
- immr->im_cpm.cp_pbdat &= ~(CFG_PB_ETH_POWERDOWN); /* Enable PHY power */
- udelay (10000);
-
- /* de-assert RESET signal of PHY */
- immr->im_ioport.iop_padat |= CFG_PA_ETH_RESET;
- udelay (1000);
-}
-
-
-int misc_init_r (void)
-{
- fpga_init();
- return (0);
-}
-/* ------------------------------------------------------------------------- */
diff --git a/board/siemens/CCM/config.mk b/board/siemens/CCM/config.mk
deleted file mode 100644
index 9c72c79d3b..0000000000
--- a/board/siemens/CCM/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# TQM8xxL boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/siemens/CCM/flash.c b/board/siemens/CCM/flash.c
deleted file mode 100644
index 9c32785b48..0000000000
--- a/board/siemens/CCM/flash.c
+++ /dev/null
@@ -1,553 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
- memctl->memc_br1 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(CFG_FLASH_BASE + size_b0),
- &flash_info[1]);
-
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
- } else {
- memctl->memc_br1 = 0; /* invalidate bank */
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-
- value = addr[0];
-
- switch (value) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ((addr[0] & 0x00800080) != 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/siemens/CCM/fpga_ccm.c b/board/siemens/CCM/fpga_ccm.c
deleted file mode 100644
index 11b97bcaa3..0000000000
--- a/board/siemens/CCM/fpga_ccm.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * (C) Copyright 2002
- * Wolfgang Grandegger, DENX Software Engineering, 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 <common.h>
-#include <mpc8xx.h>
-#include <commproc.h>
-#include <common.h>
-
-#include "../common/fpga.h"
-
-fpga_t fpga_list[] = {
- { "PUMA" , PUMA_CONF_BASE ,
- CFG_PC_PUMA_INIT , CFG_PC_PUMA_PROG , CFG_PC_PUMA_DONE }
-};
-int fpga_count = sizeof(fpga_list) / sizeof(fpga_t);
-
-void can_driver_enable (void);
-void can_driver_disable (void);
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-/*
- * PUMA access using UPM B
- */
-const uint puma_table[] =
-{
- /*
- * Single Read. (Offset 0 in UPM RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_,
- /*
- * Precharge and MRS
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Read. (Offset 8 in UPM RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPM RAM)
- */
- 0x0FFCF804, 0x0FFCF400, 0x3FFDFC47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPM RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPM RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPM RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-
-ulong fpga_control (fpga_t* fpga, int cmd)
-{
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immr->im_memctl;
-
- switch (cmd) {
- case FPGA_INIT_IS_HIGH:
- immr->im_ioport.iop_pcdir &= ~fpga->init_mask; /* input */
- return (immr->im_ioport.iop_pcdat & fpga->init_mask) ? 1:0;
-
- case FPGA_INIT_SET_LOW:
- immr->im_ioport.iop_pcdir |= fpga->init_mask; /* output */
- immr->im_ioport.iop_pcdat &= ~fpga->init_mask;
- break;
-
- case FPGA_INIT_SET_HIGH:
- immr->im_ioport.iop_pcdir |= fpga->init_mask; /* output */
- immr->im_ioport.iop_pcdat |= fpga->init_mask;
- break;
-
- case FPGA_PROG_SET_LOW:
- immr->im_ioport.iop_pcdat &= ~fpga->prog_mask;
- break;
-
- case FPGA_PROG_SET_HIGH:
- immr->im_ioport.iop_pcdat |= fpga->prog_mask;
- break;
-
- case FPGA_DONE_IS_HIGH:
- return (immr->im_ioport.iop_pcdat & fpga->done_mask) ? 1:0;
-
- case FPGA_READ_MODE:
- /* disable FPGA in memory controller */
- memctl->memc_br4 = 0;
- memctl->memc_or4 = PUMA_CONF_OR_READ;
- memctl->memc_br4 = PUMA_CONF_BR_READ;
-
- /* (re-) enable CAN drivers */
- can_driver_enable ();
-
- break;
-
- case FPGA_LOAD_MODE:
- /* disable FPGA in memory controller */
- memctl->memc_br4 = 0;
- /*
- * We must disable the CAN drivers first because
- * they use UPM B, too.
- */
- can_driver_disable ();
- /*
- * Configure UPMB for FPGA
- */
- upmconfig(UPMB,(uint *)puma_table,sizeof(puma_table)/sizeof(uint));
- memctl->memc_or4 = PUMA_CONF_OR_LOAD;
- memctl->memc_br4 = PUMA_CONF_BR_LOAD;
- break;
-
- case FPGA_GET_ID:
- return *(volatile ulong *)fpga->conf_base;
-
- case FPGA_INIT_PORTS:
- immr->im_ioport.iop_pcpar &= ~fpga->init_mask; /* INIT I/O */
- immr->im_ioport.iop_pcso &= ~fpga->init_mask;
- immr->im_ioport.iop_pcdir &= ~fpga->init_mask;
-
- immr->im_ioport.iop_pcpar &= ~fpga->prog_mask; /* PROG Output */
- immr->im_ioport.iop_pcso &= ~fpga->prog_mask;
- immr->im_ioport.iop_pcdir |= fpga->prog_mask;
-
- immr->im_ioport.iop_pcpar &= ~fpga->done_mask; /* DONE Input */
- immr->im_ioport.iop_pcso &= ~fpga->done_mask;
- immr->im_ioport.iop_pcdir &= ~fpga->done_mask;
-
- break;
-
- }
- return 0;
-}
diff --git a/board/siemens/CCM/u-boot.lds b/board/siemens/CCM/u-boot.lds
deleted file mode 100644
index cdf550f67b..0000000000
--- a/board/siemens/CCM/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/CCM/u-boot.lds.debug b/board/siemens/CCM/u-boot.lds.debug
deleted file mode 100644
index 3b50272ea6..0000000000
--- a/board/siemens/CCM/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-/*
- . = env_offset;
- common/environment.o(.text)
-*/
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/siemens/IAD210/IAD210.c b/board/siemens/IAD210/IAD210.c
deleted file mode 100644
index e498937b65..0000000000
--- a/board/siemens/IAD210/IAD210.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * (C) Copyright 2001
- * Paul Geerinckx
- *
- * 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 <common.h>
-#include <mpc8xx.h>
-#include "atm.h"
-#include <i2c.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-/* used PLD registers */
-# define PLD_GCR1_REG (unsigned char *) (0x10000000 + 0)
-# define PLD_EXT_RES (unsigned char *) (0x10000000 + 10)
-# define PLD_EXT_FETH (unsigned char *) (0x10000000 + 11)
-# define PLD_EXT_LED (unsigned char *) (0x10000000 + 12)
-# define PLD_EXT_X21 (unsigned char *) (0x10000000 + 13)
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] = {
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0xFE2DB004, 0xF0AA7004, 0xF0A5F400, 0xF3AFFC47, /* last */
- _NOT_USED_,
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0xFFFAF834, 0xFFE5B435, /* last */
- _NOT_USED_,
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0xFE2DB004, 0xF0AF7404, 0xF0AFFC00, 0xF0AFFC00,
- 0xF0AFFC00, 0xF0AAF800, 0xF1A5E447, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0xFE29B300, 0xF1A27304, 0xFFA5F747, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEABBC00, 0x10A77C00, 0xF0AFFC00,
- 0xF1AAF804, 0xFFA5F447, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0xFFAC3884, 0xFFAC3404, 0xFFAFFC04, 0xFFAFFC84,
- 0xFFAFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * MRS sequence (Offset 38 in UPMA RAM)
- */
- 0xFFAAB834, 0xFFA57434, 0xFFAFFC05, /* last */
- _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0xFFAFFC04, 0xFFAFFC05, /* last */
- _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- volatile iop8xx_t *iop = &immap->im_ioport;
- volatile fec_t *fecp = &immap->im_cpm.cp_fec;
- long int size;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR;
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller banks 2 and 3 to the SDRAM banks 2 and 3 at
- * preliminary addresses - these have to be modified after the
- * SDRAM size has been determined.
- */
- memctl->memc_or2 = CFG_OR2_PRELIM;
- memctl->memc_br2 = CFG_BR2_PRELIM;
-
- memctl->memc_mamr = CFG_MAMR & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80004105; /* SDRAM bank 0 */
- udelay (1);
- memctl->memc_mcr = 0x80004230; /* SDRAM bank 0 - execute twice */
- udelay (1);
-
- memctl->memc_mcr = 0x80004105; /* SDRAM precharge */
- udelay (1);
- memctl->memc_mcr = 0x80004030; /* SDRAM 16x autorefresh */
- udelay (1);
- memctl->memc_mcr = 0x80004138; /* SDRAM upload parameters */
- udelay (1);
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- */
- size = dram_size (CFG_MAMR, (long *) SDRAM_BASE_PRELIM,
- SDRAM_MAX_SIZE);
-
- udelay (1000);
-
-
- memctl->memc_mamr = CFG_MAMR;
- udelay (1000);
-
- /*
- * Final mapping
- */
- memctl->memc_or2 = ((-size) & 0xFFFF0000) | CFG_OR2_PRELIM;
- memctl->memc_br2 = ((CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V);
-
- udelay (10000);
-
- /* prepare pin multiplexing for fast ethernet */
-
- atmLoad ();
- fecp->fec_ecntrl = 0x00000004; /* rev D3 pinmux SET */
- iop->iop_pdpar |= 0x0080; /* set pin as MII_clock */
-
-
- return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size (base, maxsize));
-}
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- return (0);
-}
-
-void board_serial_init (void)
-{
- ; /* nothing to do here */
-}
-
-void board_ether_init (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile iop8xx_t *iop = &immap->im_ioport;
- volatile fec_t *fecp = &immap->im_cpm.cp_fec;
-
- atmLoad ();
- fecp->fec_ecntrl = 0x00000004; /* rev D3 pinmux SET */
- iop->iop_pdpar |= 0x0080; /* set pin as MII_clock */
-}
-
-int board_early_init_f (void)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile cpmtimer8xx_t *timers = &immap->im_cpmtimer;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- volatile iop8xx_t *iop = &immap->im_ioport;
-
- /* configure the LED timing output pins - port A pin 4 */
- iop->iop_papar = 0x0800;
- iop->iop_padir = 0x0800;
-
- /* start timer 2 for the 4hz LED blink rate */
- timers->cpmt_tmr2 = 0xff2c; /* 4hz for 64mhz */
- timers->cpmt_trr2 = 0x000003d0; /* clk/16 , prescale=256 */
- timers->cpmt_tgcr = 0x00000810; /* run timer 2 */
-
- /* chip select for PLD access */
- memctl->memc_br6 = 0x10000401;
- memctl->memc_or6 = 0xFC000908;
-
- /* PLD initial values ( set LEDs, remove reset on LXT) */
-
- *PLD_GCR1_REG = 0x06;
- *PLD_EXT_RES = 0xC0;
- *PLD_EXT_FETH = 0x40;
- *PLD_EXT_LED = 0xFF;
- *PLD_EXT_X21 = 0x04;
- return 0;
-}
-
-void board_get_enetaddr (uchar * addr)
-{
- int i;
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile cpm8xx_t *cpm = &immap->im_cpm;
- unsigned int rccrtmp;
-
- char default_mac_addr[] = { 0x00, 0x08, 0x01, 0x02, 0x03, 0x04 };
-
- for (i = 0; i < 6; i++)
- addr[i] = default_mac_addr[i];
-
- printf ("There is an error in the i2c driver .. /n");
- printf ("You need to fix it first....../n");
-
- rccrtmp = cpm->cp_rccr;
- cpm->cp_rccr |= 0x0020;
-
- i2c_reg_read (0xa0, 0);
- printf ("seep = '-%c-%c-%c-%c-%c-%c-'\n",
- i2c_reg_read (0xa0, 0), i2c_reg_read (0xa0, 0),
- i2c_reg_read (0xa0, 0), i2c_reg_read (0xa0, 0),
- i2c_reg_read (0xa0, 0), i2c_reg_read (0xa0, 0));
-
- cpm->cp_rccr = rccrtmp;
-}
diff --git a/board/siemens/IAD210/Makefile b/board/siemens/IAD210/Makefile
deleted file mode 100644
index aa1510e1cc..0000000000
--- a/board/siemens/IAD210/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o atm.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/siemens/IAD210/atm.c b/board/siemens/IAD210/atm.c
deleted file mode 100644
index c77e35912e..0000000000
--- a/board/siemens/IAD210/atm.c
+++ /dev/null
@@ -1,653 +0,0 @@
-
-#include <common.h>
-#include <mpc8xx.h>
-#include <commproc.h>
-
-#include "atm.h"
-#include <linux/stddef.h>
-
-#define SYNC __asm__("sync")
-#define ALIGN(p, a) ((char *)(((uint32)(p)+(a)-1) & ~((uint32)(a)-1)))
-
-#define FALSE 1
-#define TRUE 0
-#define OK 0
-#define ERROR -1
-
-struct atm_connection_t g_conn[NUM_CONNECTIONS] =
-{
- { NULL, 10, NULL, 10, NULL, NULL, NULL, NULL }, /* OAM */
-};
-
-struct atm_driver_t g_atm =
-{
- FALSE, /* loaded */
- FALSE, /* started */
- NULL, /* csram */
- 0, /* csram_size */
- NULL, /* am_top */
- NULL, /* ap_top */
- NULL, /* int_reload_ptr */
- NULL, /* int_serv_ptr */
- NULL, /* rbd_base_ptr */
- NULL, /* tbd_base_ptr */
- 0 /* linerate */
-};
-
-char csram[1024]; /* more than enough for doing nothing*/
-
-int atmLoad(void);
-void atmUnload(void);
-int atmMemInit(void);
-void atmIntInit(void);
-void atmApcInit(void);
-void atmAmtInit(void);
-void atmCpmInit(void);
-void atmUtpInit(void);
-
-/*****************************************************************************
- *
- * FUNCTION NAME: atmLoad
- *
- * DESCRIPTION: Basic ATM initialization.
- *
- * PARAMETERS: none
- *
- * RETURNS: OK or ERROR
- *
- ****************************************************************************/
-int atmLoad()
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile cpmtimer8xx_t *timers = &immap->im_cpmtimer;
- volatile iop8xx_t *iop = &immap->im_ioport;
-
- timers->cpmt_tgcr &= 0x0FFF; SYNC; /* Disable Timer 4 */
- immap->im_cpm.cp_scc[4].scc_gsmrl = 0x0; SYNC; /* Disable SCC4 */
- iop->iop_pdpar &= 0x3FFF; SYNC; /* Disable SAR and UTOPIA */
-
- if ( atmMemInit() != OK ) return ERROR;
-
- atmIntInit();
- atmApcInit();
- atmAmtInit();
- atmCpmInit();
- atmUtpInit();
-
- g_atm.loaded = TRUE;
-
- return OK;
-}
-
-/*****************************************************************************
- *
- * FUNCTION NAME: atmUnload
- *
- * DESCRIPTION: Disables ATM and UTOPIA.
- *
- * PARAMETERS: none
- *
- * RETURNS: void
- *
- ****************************************************************************/
-void atmUnload()
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile cpmtimer8xx_t *timers = &immap->im_cpmtimer;
- volatile iop8xx_t *iop = &immap->im_ioport;
-
- timers->cpmt_tgcr &= 0x0FFF; SYNC; /* Disable Timer 4 */
- immap->im_cpm.cp_scc[4].scc_gsmrl = 0x0; SYNC; /* Disable SCC4 */
- iop->iop_pdpar &= 0x3FFF; SYNC; /* Disable SAR and UTOPIA */
- g_atm.loaded = FALSE;
-}
-
-/*****************************************************************************
- *
- * FUNCTION NAME: atmMemInit
- *
- * DESCRIPTION:
- *
- * The ATM driver uses the following resources:
- *
- * A. Memory in DPRAM to hold
- *
- * 1/ CT = Connection Table ( RCT & TCT )
- * 2/ TCTE = Transmit Connection Table Extension
- * 3/ MPHYPT = Multi-PHY Pointing Table
- * 4/ APCP = APC Parameter Table
- * 5/ APCT_PRIO_1 = APC Table ( priority 1 for AAL1/2 )
- * 6/ APCT_PRIO_2 = APC Table ( priority 2 for VBR )
- * 7/ APCT_PRIO_3 = APC Table ( priority 3 for UBR )
- * 8/ TQ = Transmit Queue
- * 9/ AM = Address Matching Table
- * 10/ AP = Address Pointing Table
- *
- * B. Memory in cache safe RAM to hold
- *
- * 1/ INT = Interrupt Queue
- * 2/ RBD = Receive Buffer Descriptors
- * 3/ TBD = Transmit Buffer Descriptors
- *
- * This function
- * 1. clears the ATM DPRAM area,
- * 2. Allocates and clears cache safe memory,
- * 3. Initializes 'g_conn'.
- *
- * PARAMETERS: none
- *
- * RETURNS: OK or ERROR
- *
- ****************************************************************************/
-int atmMemInit()
-{
- int i;
- unsigned immr = CFG_IMMR;
- int total_num_rbd = 0;
- int total_num_tbd = 0;
-
- memset((char *)CFG_IMMR + 0x2000 + ATM_DPRAM_BEGIN, 0x00, ATM_DPRAM_SIZE);
-
- g_atm.csram_size = NUM_INT_ENTRIES * SIZE_OF_INT_ENTRY;
-
- for ( i = 0; i < NUM_CONNECTIONS; ++i ) {
- total_num_rbd += g_conn[i].num_rbd;
- total_num_tbd += g_conn[i].num_tbd;
- }
-
- g_atm.csram_size += total_num_rbd * SIZE_OF_RBD + total_num_tbd * SIZE_OF_TBD + 4;
-
- g_atm.csram = &csram[0];
- memset(&(g_atm.csram), 0x00, g_atm.csram_size);
-
- g_atm.int_reload_ptr = (uint32 *)ALIGN(g_atm.csram, 4);
- g_atm.rbd_base_ptr = (struct atm_bd_t *)(g_atm.int_reload_ptr + NUM_INT_ENTRIES);
- g_atm.tbd_base_ptr = (struct atm_bd_t *)(g_atm.rbd_base_ptr + total_num_rbd);
-
- g_conn[0].rbd_ptr = g_atm.rbd_base_ptr;
- g_conn[0].tbd_ptr = g_atm.tbd_base_ptr;
- g_conn[0].ct_ptr = CT_PTR(immr);
- g_conn[0].tcte_ptr = TCTE_PTR(immr);
-
- return OK;
-}
-
-/*****************************************************************************
- *
- * FUNCTION NAME: atmIntInit
- *
- * DESCRIPTION:
- *
- * Initialization of the MPC860 ESAR Interrupt Queue.
- * This function
- * - clears all entries in the INT,
- * - sets the WRAP bit of the last INT entry,
- * - initializes the 'int_serv_ptr' attribuut of the AtmDriver structure
- * to the first INT entry.
- *
- * PARAMETERS: none
- *
- * RETURNS: void
- *
- * REMARKS:
- *
- * - The INT resides in external cache safe memory.
- * - The base address of the INT is stored in g_atm.int_reload_ptr.
- * - The number of entries in the INT is given by NUM_INT_ENTRIES.
- * - The INTBASE field in SAR Parameter RAM is set by atmCpmInit().
- *
- ****************************************************************************/
-void atmIntInit()
-{
- int i;
- for ( i = 0; i < NUM_INT_ENTRIES - 1; ++i) g_atm.int_reload_ptr[i] = 0;
- g_atm.int_reload_ptr[i] = INT_WRAP;
- g_atm.int_serv_ptr = g_atm.int_reload_ptr;
-}
-
-/*****************************************************************************
- *
- * FUNCTION NAME: atmApcInit
- *
- * DESCRIPTION:
- *
- * This function initializes the following ATM Pace Controller related
- * data structures:
- *
- * - 1 MPHY Pointing Table (contains only one entry)
- * - 3 APC Parameter Tables (one PHY with 3 priorities)
- * - 3 APC Tables (one table for each priority)
- * - 1 Transmit Queue (one transmit queue per PHY)
- *
- * PARAMETERS: none
- *
- * RETURNS: void
- *
- ****************************************************************************/
-void atmApcInit()
-{
- int i;
- /* unsigned immr = CFG_IMMR; */
- uint16 * mphypt_ptr = MPHYPT_PTR(CFG_IMMR);
- struct apc_params_t * apcp_ptr = APCP_PTR(CFG_IMMR);
- uint16 * apct_prio1_ptr = APCT1_PTR(CFG_IMMR);
- uint16 * tq_ptr = TQ_PTR(CFG_IMMR);
- /***************************************************/
- /* Initialize MPHY Pointing Table (only one entry) */
- /***************************************************/
- *mphypt_ptr = APCP_BASE;
-
- /********************************************/
- /* Initialize APC parameters for priority 1 */
- /********************************************/
- apcp_ptr->apct_base1 = APCT_PRIO_1_BASE;
- apcp_ptr->apct_end1 = APCT_PRIO_1_BASE + NUM_APCT_PRIO_1_ENTRIES * 2;
- apcp_ptr->apct_ptr1 = APCT_PRIO_1_BASE;
- apcp_ptr->apct_sptr1 = APCT_PRIO_1_BASE;
- apcp_ptr->etqbase = TQ_BASE;
- apcp_ptr->etqend = TQ_BASE + ( NUM_TQ_ENTRIES - 1 ) * 2;
- apcp_ptr->etqaptr = TQ_BASE;
- apcp_ptr->etqtptr = TQ_BASE;
- apcp_ptr->apc_mi = 8;
- apcp_ptr->ncits = 0x0100; /* NCITS = 1 */
- apcp_ptr->apcnt = 0;
- apcp_ptr->reserved1 = 0;
- apcp_ptr->eapcst = 0x2009; /* LAST, ESAR, MPHY */
- apcp_ptr->ptp_counter = 0;
- apcp_ptr->ptp_txch = 0;
- apcp_ptr->reserved2 = 0;
-
-
- /***************************************************/
- /* Initialize APC Tables with empty slots (0xFFFF) */
- /***************************************************/
- for ( i = 0; i < NUM_APCT_PRIO_1_ENTRIES; ++i ) *(apct_prio1_ptr++) = 0xFFFF;
-
- /************************/
- /* Clear Transmit Queue */
- /************************/
- for ( i = 0; i < NUM_TQ_ENTRIES; ++i ) *(tq_ptr++) = 0;
-}
-
-/*****************************************************************************
- *
- * FUNCTION NAME: atmAmtInit
- *
- * DESCRIPTION:
- *
- * This function clears the first entry in the Address Matching Table and
- * lets the first entry in the Address Pointing table point to the first
- * entry in the TCT table (i.e. the raw cell channel).
- *
- * PARAMETERS: none
- *
- * RETURNS: void
- *
- * REMARKS:
- *
- * The values for the AMBASE, AMEND and APBASE registers in SAR parameter
- * RAM are initialized by atmCpmInit().
- *
- ****************************************************************************/
-void atmAmtInit()
-{
- unsigned immr = CFG_IMMR;
-
- g_atm.am_top = AM_PTR(immr);
- g_atm.ap_top = AP_PTR(immr);
-
- *(g_atm.ap_top--) = CT_BASE;
- *(g_atm.am_top--) = 0;
-}
-
-/*****************************************************************************
- *
- * FUNCTION NAME: atmCpmInit
- *
- * DESCRIPTION:
- *
- * This function initializes the Utopia Interface Parameter RAM Map
- * (SCC4, ATM Protocol) of the Communication Processor Modudule.
- *
- * PARAMETERS: none
- *
- * RETURNS: void
- *
- ****************************************************************************/
-void atmCpmInit()
-{
- unsigned immr = CFG_IMMR;
-
- memset((char *)immr + 0x3F00, 0x00, 0xC0);
-
- /*-----------------------------------------------------------------*/
- /* RBDBASE - Receive buffer descriptors base address */
- /* The RBDs reside in cache safe external memory. */
- /*-----------------------------------------------------------------*/
- *RBDBASE(immr) = (uint32)g_atm.rbd_base_ptr;
-
- /*-----------------------------------------------------------------*/
- /* SRFCR - SAR receive function code */
- /* 0-2 rsvd = 000 */
- /* 3-4 BO = 11 Byte ordering (big endian). */
- /* 5-7 FC = 000 Value driven on the address type signals AT[1-3] */
- /* when the SDMA channel accesses memory. */
- /*-----------------------------------------------------------------*/
- *SRFCR(immr) = 0x18;
-
- /*-----------------------------------------------------------------*/
- /* SRSTATE - SAR receive status */
- /* 0 EXT = 0 Extended mode off. */
- /* 1 ACP = 0 Valid only if EXT = 1. */
- /* 2 EC = 0 Standard 53-byte ATM cell. */
- /* 3 SNC = 0 In sync. Must be set to 0 during initialization. */
- /* 4 ESAR = 1 Enhanced SAR functionality enabled. */
- /* 5 MCF = 1 Management Cell Filter active. */
- /* 6 SER = 0 UTOPIA mode. */
- /* 7 MPY = 1 Multiple PHY mode. */
- /*-----------------------------------------------------------------*/
- *SRSTATE(immr) = 0x0D;
-
- /*-----------------------------------------------------------------*/
- /* MRBLR - Maximum receive buffer length register. */
- /* Must be cleared for ATM operation (see also SMRBLR). */
- /*-----------------------------------------------------------------*/
- *MRBLR(immr) = 0;
-
- /*-----------------------------------------------------------------*/
- /* RSTATE - SCC internal receive state parameters */
- /* The first byte must be initialized with the value of SRFCR. */
- /*-----------------------------------------------------------------*/
- *RSTATE(immr) = (uint32)(*SRFCR(immr)) << 24;
-
- /*-----------------------------------------------------------------*/
- /* STFCR - SAR transmit function code */
- /* 0-2 rsvd = 000 */
- /* 3-4 BO = 11 Byte ordering (big endian). */
- /* 5-7 FC = 000 Value driven on the address type signals AT[1-3] */
- /* when the SDMA channel accesses memory. */
- /*-----------------------------------------------------------------*/
- *STFCR(immr) = 0x18;
-
- /*-----------------------------------------------------------------*/
- /* SRSTATE - SAR transmit status */
- /* 0 EXT = 0 : Extended mode off */
- /* 1 rsvd = 0 : */
- /* 2 EC = 0 : Standard 53-byte ATM cell */
- /* 3 rsvd = 0 : */
- /* 4 ESAR = 1 : Enhanced SAR functionality enabled */
- /* 5 rsvd = 0 : */
- /* 6 SER = 0 : UTOPIA mode */
- /* 7 MPY = 1 : Multiple PHY mode */
- /*-----------------------------------------------------------------*/
- *STSTATE(immr) = 0x09;
-
- /*-----------------------------------------------------------------*/
- /* TBDBASE - Transmit buffer descriptors base address */
- /* The TBDs reside in cache safe external memory. */
- /*-----------------------------------------------------------------*/
- *TBDBASE(immr) = (uint32)g_atm.tbd_base_ptr;
-
- /*-----------------------------------------------------------------*/
- /* TSTATE - SCC internal transmit state parameters */
- /* The first byte must be initialized with the value of STFCR. */
- /*-----------------------------------------------------------------*/
- *TSTATE(immr) = (uint32)(*STFCR(immr)) << 24;
-
- /*-----------------------------------------------------------------*/
- /* CTBASE - Connection table base address */
- /* Offset from the beginning of DPRAM (64-byte aligned). */
- /*-----------------------------------------------------------------*/
- *CTBASE(immr) = CT_BASE;
-
- /*-----------------------------------------------------------------*/
- /* INTBASE - Interrupt queue base pointer. */
- /* The interrupt queue resides in cache safe external memory. */
- /*-----------------------------------------------------------------*/
- *INTBASE(immr) = (uint32)g_atm.int_reload_ptr;
-
- /*-----------------------------------------------------------------*/
- /* INTPTR - Pointer into interrupt queue. */
- /* Initialize to INTBASE. */
- /*-----------------------------------------------------------------*/
- *INTPTR(immr) = *INTBASE(immr);
-
- /*-----------------------------------------------------------------*/
- /* C_MASK - Constant mask for CRC32 */
- /* Must be initialized to 0xDEBB20E3. */
- /*-----------------------------------------------------------------*/
- *C_MASK(immr) = 0xDEBB20E3;
-
- /*-----------------------------------------------------------------*/
- /* INT_ICNT - Interrupt threshold value */
- /*-----------------------------------------------------------------*/
- *INT_ICNT(immr) = 1;
-
- /*-----------------------------------------------------------------*/
- /* INT_CNT - Interrupt counter */
- /* Initalize to INT_ICNT. Decremented for each interrupt entry */
- /* reported in the interrupt queue. On zero an interrupt is */
- /* signaled to the host by setting the GINT bit in the event */
- /* register. The counter is reinitialized with INT_ICNT. */
- /*-----------------------------------------------------------------*/
- *INT_CNT(immr) = *INT_ICNT(immr);
-
- /*-----------------------------------------------------------------*/
- /* SMRBLR - SAR maximum receive buffer length register. */
- /* Must be a multiple of 48 bytes. Common for all ATM connections. */
- /*-----------------------------------------------------------------*/
- *SMRBLR(immr) = SAR_RXB_SIZE;
-
- /*-----------------------------------------------------------------*/
- /* APCST - APC status register. */
- /* 0 rsvd 0 */
- /* 1-2 CSER 11 Initialize with the same value as NSER. */
- /* 3-4 NSER 11 Next serial or UTOPIA channel. */
- /* 5-7 rsvd 000 */
- /* 8-10 rsvd 000 */
- /* 11 rsvd 0 */
- /* 12 ESAR 1 UTOPIA Level 2 MPHY enabled. */
- /* 13 DIS 0 APC disable. Must be initiazed to 0. */
- /* 14 PL2 0 Not used. */
- /* 15 MPY 1 Multiple PHY mode on. */
- /*-----------------------------------------------------------------*/
- *APCST(immr) = 0x7809;
-
- /*-----------------------------------------------------------------*/
- /* APCPTR - Pointer to the APC parameter table */
- /* In MPHY master mode this parameter points to the MPHY pointing */
- /* table. 2-byte aligned. */
- /*-----------------------------------------------------------------*/
- *APCPTR(immr) = MPHYPT_BASE;
-
- /*-----------------------------------------------------------------*/
- /* HMASK - Header mask */
- /* Each incoming cell is masked with HMASK before being compared */
- /* to the entries in the address matching table. */
- /*-----------------------------------------------------------------*/
- *HMASK(immr) = AM_HMASK;
-
- /*-----------------------------------------------------------------*/
- /* AMBASE - Address matching table base address */
- /*-----------------------------------------------------------------*/
- *AMBASE(immr) = AM_BASE;
-
- /*-----------------------------------------------------------------*/
- /* AMEND - Address matching table end address */
- /*-----------------------------------------------------------------*/
- *AMEND(immr) = AM_BASE;
-
- /*-----------------------------------------------------------------*/
- /* APBASE - Address pointing table base address */
- /*-----------------------------------------------------------------*/
- *APBASE(immr) = AP_BASE;
-
- /*-----------------------------------------------------------------*/
- /* MPHYST - MPHY status register */
- /* 0-1 rsvd 00 */
- /* 2-6 NMPHY 00000 1 PHY */
- /* 7-9 rsvd 000 */
- /* 10-14 CMPHY 00000 Initialize with same value as NMPHY */
- /*-----------------------------------------------------------------*/
- *MPHYST(immr) = 0x0000;
-
- /*-----------------------------------------------------------------*/
- /* TCTEBASE - Transmit connection table extension base address */
- /* Offset from the beginning of DPRAM (32-byte aligned). */
- /*-----------------------------------------------------------------*/
- *TCTEBASE(immr) = TCTE_BASE;
-
- /*-----------------------------------------------------------------*/
- /* Clear not used registers. */
- /*-----------------------------------------------------------------*/
-}
-
-/*****************************************************************************
- *
- * FUNCTION NAME: atmUtpInit
- *
- * DESCRIPTION:
- *
- * This function initializes the ATM interface for
- *
- * - UTOPIA mode
- * - muxed bus
- * - master operation
- * - multi PHY (because of a bug in the MPC860P rev. E.0)
- * - internal clock = SYSCLK / 2
- *
- * EXTERNAL EFFECTS:
- *
- * After calling this function, the MPC860ESAR UTOPIA bus is
- * active and uses the following ports/pins:
- *
- * Port Pin Signal Description
- * ------ --- ------- -------------------------------------------
- * PB[15] R17 TxClav Transmit cell available input/output signal
- * PC[15] D16 RxClav Receive cell available input/output signal
- * PD[15] U17 UTPB[0] UTOPIA bus bit 0 input/output signal
- * PD[14] V19 UTPB[1] UTOPIA bus bit 1 input/output signal
- * PD[13] V18 UTPB[2] UTOPIA bus bit 2 input/output signal
- * PD[12] R16 UTPB[3] UTOPIA bus bit 3 input/output signal
- * PD[11] T16 RXENB Receive enable input/output signal
- * PD[10] W18 TXENB Transmit enable input/output signal
- * PD[9] V17 UTPCLK UTOPIA clock input/output signal
- * PD[7] T15 UTPB[4] UTOPIA bus bit 4 input/output signal
- * PD[6] V16 UTPB[5] UTOPIA bus bit 5 input/output signal
- * PD[5] U15 UTPB[6] UTOPIA bus bit 6 input/output signal
- * PD[4] U16 UTPB[7] UTOPIA bus bit 7 input/output signal
- * PD[3] W16 SOC Start of cell input/output signal
- *
- * PARAMETERS: none
- *
- * RETURNS: void
- *
- * REMARK:
- *
- * The ATM parameters and data structures must be configured before
- * initializing the UTOPIA port. The UTOPIA port activates immediately
- * upon initialization, and if its associated data structures are not
- * initialized, the CPM will lock up.
- *
- ****************************************************************************/
-void atmUtpInit()
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile iop8xx_t *iop = &immap->im_ioport;
- volatile car8xx_t *car = &immap->im_clkrst;
- volatile cpm8xx_t *cpm = &immap->im_cpm;
- int flag;
-
- flag = disable_interrupts();
-
- /*-----------------------------------------------------------------*/
- /* SCCR - System Clock Control Register */
- /* */
- /* The UTOPIA clock can be selected to be internal clock or */
- /* external clock (selected by the UTOPIA mode register). */
- /* In case of internal clock, the UTOPIA clock is derived from */
- /* the system frequency divided by two dividers. */
- /* Bits 27-31 of the SCCR register are defined to control the */
- /* UTOPIA clock. */
- /* */
- /* SCCR[27:29] DFUTP Division factor. Divide the system clock */
- /* by 2^DFUTP. */
- /* SCCR[30:31] DFAUTP Additional division factor. Divide the */
- /* system clock by the following value: */
- /* 00 = divide by 1 */
- /* 00 = divide by 3 */
- /* 10 = divide by 5 */
- /* 11 = divide by 7 */
- /* */
- /* Note that the UTOPIA clock must be programmed as to operate */
- /* within the range SYSCLK/10 .. 50Mhz. */
- /*-----------------------------------------------------------------*/
- car->car_sccr &= 0xFFFFFFE0;
- car->car_sccr |= 0x00000008; /* UTPCLK = SYSCLK / 4 */
-
- /*-----------------------------------------------------------------*/
- /* RCCR - RISC Controller Configuration Register */
- /* */
- /* RCCR[8] DR1M IDMA Request 0 Mode */
- /* 0 = edge sensitive */
- /* 1 = level sensitive */
- /* RCCR[9] DR0M IDMA Request 0 Mode */
- /* 0 = edge sensitive */
- /* 1 = level sensitive */
- /* RCCR[10:11] DRQP IDMA Request Priority */
- /* 00 = IDMA req. have more prio. than SCCs */
- /* 01 = IDMA req. have less prio. then SCCs */
- /* 10 = IDMA requests have the lowest prio. */
- /* 11 = reserved */
- /* */
- /* The RCCR[DR0M] and RCCR[DR1M] bits must be set to enable UTOPIA */
- /* operation. Also, program RCCR[DPQP] to 01 to give SCC transfers */
- /* higher priority. */
- /*-----------------------------------------------------------------*/
- cpm->cp_rccr &= 0xFF0F;
- cpm->cp_rccr |= 0x00D0;
-
- /*-----------------------------------------------------------------*/
- /* Port B - TxClav Signal */
- /*-----------------------------------------------------------------*/
- cpm->cp_pbpar |= 0x00010000; /* PBPAR[15] = 1 */
- cpm->cp_pbdir &= 0xFFFEFFFF; /* PBDIR[15] = 0 */
-
- /*-----------------------------------------------------------------*/
- /* UTOPIA Mode Register */
- /* */
- /* - muxed bus (master operation only) */
- /* - multi PHY (because of a bug in the MPC860P rev.E.0) */
- /* - internal clock */
- /* - no loopback */
- /* - do no activate statistical counters */
- /*-----------------------------------------------------------------*/
- iop->utmode = 0x00000004; SYNC;
-
- /*-----------------------------------------------------------------*/
- /* Port D - UTOPIA Data and Control Signals */
- /* */
- /* 15-12 UTPB[0:3] UTOPIA bus bit 0 - 3 input/output signals */
- /* 11 RXENB UTOPIA receive enable input/output signal */
- /* 10 TXENB UTOPIA transmit enable input/output signal */
- /* 9 TUPCLK UTOPIA clock input/output signal */
- /* 8 MII-MDC Used by MII in simult. MII and UTOPIA operation */
- /* 7-4 UTPB[4:7] UTOPIA bus bit 4 - 7 input/output signals */
- /* 3 SOC UTOPIA Start of cell input/output signal */
- /* 2 Reserved */
- /* 1 Enable UTOPIA mode */
- /* 0 Enable SAR */
- /*-----------------------------------------------------------------*/
- iop->iop_pdpar |= 0xDF7F; SYNC;
- iop->iop_pddir &= 0x2080; SYNC;
-
- /*-----------------------------------------------------------------*/
- /* Port C - RxClav Signal */
- /*-----------------------------------------------------------------*/
- iop->iop_pcpar |= 0x0001; /* PCPAR[15] = 1 */
- iop->iop_pcdir &= 0xFFFE; /* PCDIR[15] = 0 */
- iop->iop_pcso &= 0xFFFE; /* PCSO[15] = 0 */
-
- if (flag)
- enable_interrupts();
-}
diff --git a/board/siemens/IAD210/atm.h b/board/siemens/IAD210/atm.h
deleted file mode 100644
index 71b049725d..0000000000
--- a/board/siemens/IAD210/atm.h
+++ /dev/null
@@ -1,287 +0,0 @@
-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/board/siemens/IAD210/config.mk b/board/siemens/IAD210/config.mk
deleted file mode 100644
index c30abcb274..0000000000
--- a/board/siemens/IAD210/config.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# (C) Copyright 2000
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# (C) Copyright 2000, 2001, 2002
-# 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
-#
-
-#
-# iad210 boards
-#
-
-TEXT_BASE = 0x08000000
-/*TEXT_BASE = 0x00200000 */
diff --git a/board/siemens/IAD210/flash.c b/board/siemens/IAD210/flash.c
deleted file mode 100644
index 110858d3c3..0000000000
--- a/board/siemens/IAD210/flash.c
+++ /dev/null
@@ -1,502 +0,0 @@
-/*
- * (C) Copyright 2000, 2001, 2002
- * 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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size<<20);
- }
-
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size & 0xFFFF8000);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size;
-
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-
- value = addr[0];
-
- switch (value) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ((addr[0] & 0x00800080) != 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/siemens/IAD210/u-boot.lds b/board/siemens/IAD210/u-boot.lds
deleted file mode 100644
index 42e1b83b95..0000000000
--- a/board/siemens/IAD210/u-boot.lds
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * (C) Copyright 2000, 2001, 2002
- * 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- cpu/mpc8xx/interrupts.o (.text)
- lib_ppc/time.o (.text)
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/SCM/Makefile b/board/siemens/SCM/Makefile
deleted file mode 100644
index edc1820007..0000000000
--- a/board/siemens/SCM/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-$(shell mkdir -p $(obj)../../tqm8xx/)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = scm.o flash.o fpga_scm.o ../common/fpga.o \
- ../../tqm8xx/load_sernum_ethaddr.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/siemens/SCM/config.mk b/board/siemens/SCM/config.mk
deleted file mode 100644
index 855ae38f81..0000000000
--- a/board/siemens/SCM/config.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# (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
-#
-
-#
-# Siemens SCM boards
-#
-
-# This should be equal to the CFG_FLASH_BASE define in config_SCM.h
-# for the "final" configuration, with U-Boot in flash, or the address
-# in RAM where U-Boot is loaded at for debugging.
-#
-TEXT_BASE = 0x40000000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/siemens/SCM/flash.c b/board/siemens/SCM/flash.c
deleted file mode 100644
index 056fe810b3..0000000000
--- a/board/siemens/SCM/flash.c
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
- * (C) Copyright 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for AMD devices on the TQM8260 board
- *
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-
-#define V_ULONG(a) (*(volatile unsigned long *)( a ))
-#define V_BYTE(a) (*(volatile unsigned char *)( a ))
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-/*-----------------------------------------------------------------------
- */
-void flash_reset (void)
-{
- if (flash_info[0].flash_id != FLASH_UNKNOWN) {
- V_ULONG (flash_info[0].start[0]) = 0x00F000F0;
- V_ULONG (flash_info[0].start[0] + 4) = 0x00F000F0;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_get_size (ulong baseaddr, flash_info_t * info)
-{
- short i;
- unsigned long flashtest_h, flashtest_l;
-
- /* Write auto select command sequence and test FLASH answer */
- V_ULONG (baseaddr + ((ulong) 0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (baseaddr + ((ulong) 0x02AA << 3)) = 0x00550055;
- V_ULONG (baseaddr + ((ulong) 0x0555 << 3)) = 0x00900090;
- V_ULONG (baseaddr + 4 + ((ulong) 0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (baseaddr + 4 + ((ulong) 0x02AA << 3)) = 0x00550055;
- V_ULONG (baseaddr + 4 + ((ulong) 0x0555 << 3)) = 0x00900090;
-
- flashtest_h = V_ULONG (baseaddr); /* manufacturer ID */
- flashtest_l = V_ULONG (baseaddr + 4);
-
- switch ((int) flashtest_h) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- flashtest_h = V_ULONG (baseaddr + 8); /* device ID */
- flashtest_l = V_ULONG (baseaddr + 12);
- if (flashtest_h != flashtest_l) {
- info->flash_id = FLASH_UNKNOWN;
- } else {
- switch (flashtest_h) {
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00400000;
- break; /* 4 * 1 MB = 4 MB */
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00400000;
- break; /* 4 * 1 MB = 4 MB */
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00800000;
- break; /* 4 * 2 MB = 8 MB */
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00800000;
- break; /* 4 * 2 MB = 8 MB */
- case AMD_ID_DL322T:
- info->flash_id += FLASH_AMDL322T;
- info->sector_count = 71;
- info->size = 0x01000000;
- break; /* 4 * 4 MB = 16 MB */
- case AMD_ID_DL322B:
- info->flash_id += FLASH_AMDL322B;
- info->sector_count = 71;
- info->size = 0x01000000;
- break; /* 4 * 4 MB = 16 MB */
- case AMD_ID_DL323T:
- info->flash_id += FLASH_AMDL323T;
- info->sector_count = 71;
- info->size = 0x01000000;
- break; /* 4 * 4 MB = 16 MB */
- case AMD_ID_DL323B:
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x01000000;
- break; /* 4 * 4 MB = 16 MB */
- case AMD_ID_LV640U:
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x02000000;
- break; /* 4 * 8 MB = 32 MB */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* no or unknown flash */
- }
- }
-
- if (flashtest_h == AMD_ID_LV640U) {
-
- /* set up sector start adress table (uniform sector type) */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = baseaddr + (i * 0x00040000);
-
- } else if (info->flash_id & FLASH_BTYPE) {
-
- /* set up sector start adress table (bottom sector type) */
- info->start[0] = baseaddr + 0x00000000;
- info->start[1] = baseaddr + 0x00010000;
- info->start[2] = baseaddr + 0x00018000;
- info->start[3] = baseaddr + 0x00020000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = baseaddr + (i * 0x00040000) - 0x000C0000;
- }
-
- } else {
-
- /* set up sector start adress table (top sector type) */
- i = info->sector_count - 1;
- info->start[i--] = baseaddr + info->size - 0x00010000;
- info->start[i--] = baseaddr + info->size - 0x00018000;
- info->start[i--] = baseaddr + info->size - 0x00020000;
- for (; i >= 0; i--) {
- info->start[i] = baseaddr + i * 0x00040000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- if ((V_ULONG (info->start[i] + 16) & 0x00010001) ||
- (V_ULONG (info->start[i] + 20) & 0x00010001)) {
- info->protect[i] = 1; /* D0 = 1 if protected */
- } else {
- info->protect[i] = 0;
- }
- }
-
- flash_reset ();
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size_b0 = 0;
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here (only one bank) */
-
- size_b0 = flash_get_size (CFG_FLASH0_BASE, &flash_info[0]);
- if (flash_info[0].flash_id == FLASH_UNKNOWN || size_b0 == 0) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 >> 20);
- }
-
- /*
- * protect monitor and environment sectors
- */
-
-#if CFG_MONITOR_BASE >= CFG_FLASH0_BASE
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf ("FUJITSU ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM800T:
- printf ("29LV800T (8 M, top sector)\n");
- break;
- case FLASH_AM800B:
- printf ("29LV800T (8 M, bottom sector)\n");
- break;
- case FLASH_AM160T:
- printf ("29LV160T (16 M, top sector)\n");
- break;
- case FLASH_AM160B:
- printf ("29LV160B (16 M, bottom sector)\n");
- break;
- case FLASH_AMDL322T:
- printf ("29DL322T (32 M, top sector)\n");
- break;
- case FLASH_AMDL322B:
- printf ("29DL322B (32 M, bottom sector)\n");
- break;
- case FLASH_AMDL323T:
- printf ("29DL323T (32 M, top sector)\n");
- break;
- case FLASH_AMDL323B:
- printf ("29DL323B (32 M, bottom sector)\n");
- break;
- case FLASH_AM640U:
- printf ("29LV640D (64 M, uniform sector)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- V_ULONG (info->start[0] + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + (0x02AA << 3)) = 0x00550055;
- V_ULONG (info->start[0] + (0x0555 << 3)) = 0x00800080;
- V_ULONG (info->start[0] + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + (0x02AA << 3)) = 0x00550055;
- V_ULONG (info->start[0] + 4 + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + 4 + (0x02AA << 3)) = 0x00550055;
- V_ULONG (info->start[0] + 4 + (0x0555 << 3)) = 0x00800080;
- V_ULONG (info->start[0] + 4 + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + 4 + (0x02AA << 3)) = 0x00550055;
- udelay (1000);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- V_ULONG (info->start[sect]) = 0x00300030;
- V_ULONG (info->start[sect] + 4) = 0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- while ((V_ULONG (info->start[l_sect]) & 0x00800080) != 0x00800080 ||
- (V_ULONG (info->start[l_sect] + 4) & 0x00800080) != 0x00800080)
- {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- flash_reset ();
-
- printf (" done\n");
- return 0;
-}
-
-static int write_dword (flash_info_t *, ulong, unsigned char *);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong dp;
- static unsigned char bb[8];
- int i, l, rc, cc = cnt;
-
- dp = (addr & ~7); /* get lower dword aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - dp) != 0) {
- for (i = 0; i < 8; i++)
- bb[i] = (i < l || (i - l) >= cc) ? V_BYTE (dp + i) : *src++;
- if ((rc = write_dword (info, dp, bb)) != 0) {
- return (rc);
- }
- dp += 8;
- cc -= 8 - l;
- }
-
- /*
- * handle word aligned part
- */
- while (cc >= 8) {
- if ((rc = write_dword (info, dp, src)) != 0) {
- return (rc);
- }
- dp += 8;
- src += 8;
- cc -= 8;
- }
-
- if (cc <= 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- for (i = 0; i < 8; i++) {
- bb[i] = (i < cc) ? *src++ : V_BYTE (dp + i);
- }
- return (write_dword (info, dp, bb));
-}
-
-/*-----------------------------------------------------------------------
- * Write a dword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_dword (flash_info_t * info, ulong dest, unsigned char *pdata)
-{
- ulong start, cl, ch;
- int flag, i;
-
- for (ch = 0, i = 0; i < 4; i++)
- ch = (ch << 8) + *pdata++; /* high word */
- for (cl = 0, i = 0; i < 4; i++)
- cl = (cl << 8) + *pdata++; /* low word */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *) dest) & ch) != ch
- || (*((vu_long *) (dest + 4)) & cl) != cl) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- V_ULONG (info->start[0] + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + (0x02AA << 3)) = 0x00550055;
- V_ULONG (info->start[0] + (0x0555 << 3)) = 0x00A000A0;
- V_ULONG (dest) = ch;
- V_ULONG (info->start[0] + 4 + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + 4 + (0x02AA << 3)) = 0x00550055;
- V_ULONG (info->start[0] + 4 + (0x0555 << 3)) = 0x00A000A0;
- V_ULONG (dest + 4) = cl;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
- while (((V_ULONG (dest) & 0x00800080) != (ch & 0x00800080)) ||
- ((V_ULONG (dest + 4) & 0x00800080) != (cl & 0x00800080))) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/siemens/SCM/fpga_scm.c b/board/siemens/SCM/fpga_scm.c
deleted file mode 100644
index 661bf66c66..0000000000
--- a/board/siemens/SCM/fpga_scm.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * (C) Copyright 2002
- * Wolfgang Grandegger, DENX Software Engineering, 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 <common.h>
-#include <mpc8260.h>
-#include <common.h>
-#include "../common/fpga.h"
-
-fpga_t fpga_list[] = {
- {"FIOX", CFG_FIOX_BASE,
- CFG_PD_FIOX_INIT, CFG_PD_FIOX_PROG, CFG_PD_FIOX_DONE}
- ,
- {"FDOHM", CFG_FDOHM_BASE,
- CFG_PD_FDOHM_INIT, CFG_PD_FDOHM_PROG, CFG_PD_FDOHM_DONE}
-};
-int fpga_count = sizeof (fpga_list) / sizeof (fpga_t);
-
-
-ulong fpga_control (fpga_t * fpga, int cmd)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
-
- switch (cmd) {
- case FPGA_INIT_IS_HIGH:
- immr->im_ioport.iop_pdird &= ~fpga->init_mask; /* input */
- return (immr->im_ioport.iop_pdatd & fpga->init_mask) ? 1 : 0;
-
- case FPGA_INIT_SET_LOW:
- immr->im_ioport.iop_pdird |= fpga->init_mask; /* output */
- immr->im_ioport.iop_pdatd &= ~fpga->init_mask;
- break;
-
- case FPGA_INIT_SET_HIGH:
- immr->im_ioport.iop_pdird |= fpga->init_mask; /* output */
- immr->im_ioport.iop_pdatd |= fpga->init_mask;
- break;
-
- case FPGA_PROG_SET_LOW:
- immr->im_ioport.iop_pdatd &= ~fpga->prog_mask;
- break;
-
- case FPGA_PROG_SET_HIGH:
- immr->im_ioport.iop_pdatd |= fpga->prog_mask;
- break;
-
- case FPGA_DONE_IS_HIGH:
- return (immr->im_ioport.iop_pdatd & fpga->done_mask) ? 1 : 0;
-
- case FPGA_READ_MODE:
- break;
-
- case FPGA_LOAD_MODE:
- break;
-
- case FPGA_GET_ID:
- if (fpga->conf_base == CFG_FIOX_BASE) {
- ulong ver =
- *(volatile ulong *) (fpga->conf_base + 0x10);
- return ((ver >> 10) & 0xf) + ((ver >> 2) & 0xf0);
- } else if (fpga->conf_base == CFG_FDOHM_BASE) {
- return (*(volatile ushort *) fpga->conf_base) & 0xff;
- } else {
- return *(volatile ulong *) fpga->conf_base;
- }
-
- case FPGA_INIT_PORTS:
- immr->im_ioport.iop_ppard &= ~fpga->init_mask; /* INIT I/O */
- immr->im_ioport.iop_psord &= ~fpga->init_mask;
- immr->im_ioport.iop_pdird &= ~fpga->init_mask;
-
- immr->im_ioport.iop_ppard &= ~fpga->prog_mask; /* PROG Output */
- immr->im_ioport.iop_psord &= ~fpga->prog_mask;
- immr->im_ioport.iop_pdird |= fpga->prog_mask;
-
- immr->im_ioport.iop_ppard &= ~fpga->done_mask; /* DONE Input */
- immr->im_ioport.iop_psord &= ~fpga->done_mask;
- immr->im_ioport.iop_pdird &= ~fpga->done_mask;
-
- break;
-
- }
- return 0;
-}
diff --git a/board/siemens/SCM/scm.c b/board/siemens/SCM/scm.c
deleted file mode 100644
index 8783aafe9a..0000000000
--- a/board/siemens/SCM/scm.c
+++ /dev/null
@@ -1,540 +0,0 @@
-/*
- * (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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-
-#include "scm.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static void config_scoh_cs(void);
-extern int fpga_init(void);
-
-#if 0
-#define DEBUGF(fmt,args...) printf (fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII COL */
- /* PA30 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII CRS */
- /* PA29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 MII TX_ER */
- /* PA28 */ { 1, 1, 1, 1, 0, 0 }, /* FCC1 MII TX_EN */
- /* PA27 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII RX_DV */
- /* PA26 */ { 1, 1, 1, 0, 0, 0 }, /* FCC1 MII RX_ER */
- /* PA25 */ { 0, 0, 0, 1, 0, 0 },
- /* PA24 */ { 0, 0, 0, 1, 0, 0 },
- /* PA23 */ { 0, 0, 0, 1, 0, 0 },
- /* PA22 */ { 0, 0, 0, 1, 0, 0 },
- /* PA21 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[3] */
- /* PA20 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[2] */
- /* PA19 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[1] */
- /* PA18 */ { 1, 1, 0, 1, 0, 0 }, /* FCC1 MII TxD[0] */
- /* PA17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[0] */
- /* PA16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[1]*/
- /* PA15 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[2] */
- /* PA14 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RxD[3] */
- /* PA13 */ { 0, 0, 0, 1, 0, 0 },
- /* PA12 */ { 0, 0, 0, 1, 0, 0 },
- /* PA11 */ { 0, 0, 0, 1, 0, 0 },
- /* PA10 */ { 0, 0, 0, 1, 0, 0 },
- /* PA9 */ { 1, 1, 1, 1, 0, 0 }, /* TDM_A1 L1TXD0 */
- /* PA8 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_A1 L1RXD0 */
- /* PA7 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_A1 L1TSYNC */
- /* PA6 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_A1 L1RSYNC */
- /* PA5 */ { 1, 0, 0, 0, 0, 0 }, /* FIOX_FPGA_PR */
- /* PA4 */ { 1, 0, 0, 0, 0, 0 }, /* DOHM_FPGA_PR */
- /* PA3 */ { 1, 1, 0, 0, 0, 0 }, /* TDM RXCLK4 */
- /* PA2 */ { 1, 1, 0, 0, 0, 0 }, /* TDM TXCLK4 */
- /* PA1 */ { 0, 0, 0, 1, 0, 0 },
- /* PA0 */ { 1, 0, 0, 0, 0, 0 } /* BUSY */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 0, 0, 1, 0, 0 }, /* EQ_ALARM_MIN */
- /* PB30 */ { 1, 0, 0, 1, 0, 0 }, /* EQ_ALARM_MAJ */
- /* PB29 */ { 1, 0, 0, 1, 0, 0 }, /* COM_ALARM_MIN */
- /* PB28 */ { 1, 0, 0, 1, 0, 0 }, /* COM_ALARM_MAJ */
- /* PB27 */ { 0, 1, 0, 0, 0, 0 },
- /* PB26 */ { 0, 1, 0, 0, 0, 0 },
- /* PB25 */ { 1, 0, 0, 1, 0, 0 }, /* LED_GREEN_L */
- /* PB24 */ { 1, 0, 0, 1, 0, 0 }, /* LED_RED_L */
- /* PB23 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_D2 L1TXD */
- /* PB22 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_D2 L1RXD */
- /* PB21 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_D2 L1TSYNC */
- /* PB20 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_D2 L1RSYNC */
- /* PB19 */ { 1, 0, 0, 0, 0, 0 }, /* UID */
- /* PB18 */ { 0, 1, 0, 0, 0, 0 },
- /* PB17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RX_DV */
- /* PB16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RX_ER */
- /* PB15 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TX_ER */
- /* PB14 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TX_EN */
- /* PB13 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII COL */
- /* PB12 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII CRS */
- /* PB11 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[3] */
- /* PB10 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[2] */
- /* PB9 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[1] */
- /* PB8 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RxD[0] */
- /* PB7 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[3] */
- /* PB6 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[2] */
- /* PB5 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[1] */
- /* PB4 */ { 1, 1, 0, 1, 0, 0 }, /* FCC3 MII TxD[0] */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 1, 1, 0, 0, 0, 0 }, /* TDM RXCLK1 */
- /* PC30 */ { 1, 1, 0, 0, 0, 0 }, /* TDM TXCLK1 */
- /* PC29 */ { 1, 1, 0, 0, 0, 0 }, /* TDM RXCLK3 */
- /* PC28 */ { 1, 1, 0, 0, 0, 0 }, /* TDM TXCLK3 */
- /* PC27 */ { 1, 1, 0, 0, 0, 0 }, /* TDM RXCLK2 */
- /* PC26 */ { 1, 1, 0, 0, 0, 0 }, /* TDM TXCLK2 */
- /* PC25 */ { 0, 0, 0, 1, 0, 0 },
- /* PC24 */ { 0, 0, 0, 1, 0, 0 },
- /* PC23 */ { 0, 1, 0, 1, 0, 0 },
- /* PC22 */ { 0, 1, 0, 0, 0, 0 },
- /* PC21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII TX_CLK */
- /* PC20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC1 MII RX_CLK */
- /* PC19 */ { 0, 1, 0, 0, 0, 0 },
- /* PC18 */ { 0, 1, 0, 0, 0, 0 },
- /* PC17 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII RX_CLK */
- /* PC16 */ { 1, 1, 0, 0, 0, 0 }, /* FCC3 MII TX_CLK */
- /* PC15 */ { 0, 0, 0, 1, 0, 0 },
- /* PC14 */ { 0, 1, 0, 0, 0, 0 },
- /* PC13 */ { 0, 0, 0, 1, 0, 0 }, /* RES_PHY_L */
- /* PC12 */ { 0, 0, 0, 1, 0, 0 },
- /* PC11 */ { 0, 0, 0, 1, 0, 0 },
- /* PC10 */ { 0, 0, 0, 1, 0, 0 },
- /* PC9 */ { 0, 1, 1, 0, 0, 0 }, /* TDM_A2 L1TSYNC */
- /* PC8 */ { 0, 0, 0, 0, 0, 0 }, /* FEP_RDY */
- /* PC7 */ { 0, 0, 0, 0, 0, 0 },
- /* PC6 */ { 0, 0, 0, 0, 0, 0 }, /* UC4_ALARM_L */
- /* PC5 */ { 0, 0, 0, 0, 0, 0 }, /* UC3_ALARM_L */
- /* PC4 */ { 0, 0, 0, 0, 0, 0 }, /* UC2_ALARM_L */
- /* PC3 */ { 0, 0, 0, 1, 0, 0 }, /* RES_MISC_L */
- /* PC2 */ { 0, 0, 0, 1, 0, 0 }, /* RES_OH_L */
- /* PC1 */ { 0, 0, 0, 1, 0, 0 }, /* RES_DOHM_L */
- /* PC0 */ { 0, 0, 0, 1, 0, 0 }, /* RES_FIOX_L */
- },
-
- /* Port D configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN RxD */
- /* PD30 */ { 1, 1, 1, 1, 0, 0 }, /* SCC1 EN TxD */
- /* PD29 */ { 0, 0, 0, 0, 0, 0 }, /* INIT_F */
- /* PD28 */ { 0, 0, 0, 1, 0, 0 }, /* DONE_F */
- /* PD27 */ { 0, 0, 0, 0, 0, 0 }, /* INIT_D */
- /* PD26 */ { 0, 0, 0, 1, 0, 0 }, /* DONE_D */
- /* PD25 */ { 0, 0, 0, 1, 0, 0 },
- /* PD24 */ { 0, 0, 0, 1, 0, 0 },
- /* PD23 */ { 0, 0, 0, 1, 0, 0 },
- /* PD22 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_A2 L1TXD */
- /* PD21 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_A2 L1RXD */
- /* PD20 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_A2 L1RSYNC */
- /* PD19 */ { 1, 1, 1, 0, 0, 0 }, /* SPI SPISEL */
- /* PD18 */ { 1, 1, 1, 0, 0, 0 }, /* SPI SPICLK */
- /* PD17 */ { 1, 1, 1, 0, 0, 0 }, /* SPI SPIMOSI */
- /* PD16 */ { 1, 1, 1, 0, 0, 0 }, /* SPI SPIMOSO */
-#if defined(CONFIG_SOFT_I2C)
- /* PD15 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SDA */
- /* PD14 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#else /* normal I/O port pins */
- /* PD15 */ { 0, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 0, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#endif
-#endif
- /* PD13 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_B1 L1TXD */
- /* PD12 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_B1 L1RXD */
- /* PD11 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_B1 L1TSYNC */
- /* PD10 */ { 1, 1, 1, 0, 0, 0 }, /* TDM_B1 L1RSYNC */
- /* PD9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PD8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PD7 */ { 0, 0, 0, 1, 0, 1 },
- /* PD6 */ { 0, 0, 0, 1, 0, 1 },
- /* PD5 */ { 0, 0, 0, 1, 0, 0 }, /* PROG_F */
- /* PD4 */ { 0, 0, 0, 1, 0, 0 }, /* PROG_D */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof (str));
-
- puts ("Board: ");
-
- if (!i || strncmp (str, "TQM8260", 7)) {
- puts ("### No HW ID - assuming TQM8260\n");
- return (0);
- }
-
- puts (str);
- putc ('\n');
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
- ulong orx, volatile uchar * base)
-{
- volatile uchar c = 0xff;
- volatile uint *sdmr_ptr;
- volatile uint *orx_ptr;
- ulong maxsize, size;
- int i;
-
- /* We must be able to test a location outsize the maximum legal size
- * to find out THAT we are outside; but this address still has to be
- * mapped by the controller. That means, that the initial mapping has
- * to be (at least) twice as large as the maximum expected size.
- */
- maxsize = (1 + (~orx | 0x7fff)) / 2;
-
- /* Since CFG_SDRAM_BASE is always 0 (??), we assume that
- * we are configuring CS1 if base != 0
- */
- sdmr_ptr = base ? &memctl->memc_lsdmr : &memctl->memc_psdmr;
- orx_ptr = base ? &memctl->memc_or2 : &memctl->memc_or1;
-
- *orx_ptr = orx;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- *sdmr_ptr = sdmr | PSDMR_OP_PREA;
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_MRW;
- *(base + CFG_MRS_OFFS) = c; /* setting MR on address lines */
-
- *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *base = c;
-
- size = get_ram_size((long *)base, maxsize);
-
- *orx_ptr = orx | ~(size - 1);
-
- return (size);
-}
-
-/*
- * Test Power-On-Reset.
- */
-int power_on_reset (void)
-{
- /* Test Reset Status Register */
- return gd->reset_status & RSR_CSRS ? 0 : 1;
-}
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CFG_RAMBOOT
- long size8, size9;
-#endif
- long psize, lsize;
-
- psize = 16 * 1024 * 1024;
- lsize = 0;
-
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_mptpr = CFG_MPTPR;
-
-#if 0 /* Just for debugging */
-#define prt_br_or(brX,orX) do { \
- ulong start = memctl->memc_ ## brX & 0xFFFF8000; \
- ulong sizem = ~memctl->memc_ ## orX | 0x00007FFF; \
- printf ("\n" \
- #brX " 0x%08x " #orX " 0x%08x " \
- "==> 0x%08lx ... 0x%08lx = %ld MB\n", \
- memctl->memc_ ## brX, memctl->memc_ ## orX, \
- start, start+sizem, (sizem+1)>>20); \
- } while (0)
- prt_br_or (br0, or0);
- prt_br_or (br1, or1);
- prt_br_or (br2, or2);
- prt_br_or (br3, or3);
-#endif
-
-#ifndef CFG_RAMBOOT
- /* 60x SDRAM setup:
- */
- size8 = try_init (memctl, CFG_PSDMR_8COL, CFG_OR1_8COL,
- (uchar *) CFG_SDRAM_BASE);
- size9 = try_init (memctl, CFG_PSDMR_9COL, CFG_OR1_9COL,
- (uchar *) CFG_SDRAM_BASE);
-
- if (size8 < size9) {
- psize = size9;
- printf ("(60x:9COL - %ld MB, ", psize >> 20);
- } else {
- psize = try_init (memctl, CFG_PSDMR_8COL, CFG_OR1_8COL,
- (uchar *) CFG_SDRAM_BASE);
- printf ("(60x:8COL - %ld MB, ", psize >> 20);
- }
-
- /* Local SDRAM setup:
- */
-#ifdef CFG_INIT_LOCAL_SDRAM
- memctl->memc_lsrt = CFG_LSRT;
- size8 = try_init (memctl, CFG_LSDMR_8COL, CFG_OR2_8COL,
- (uchar *) SDRAM_BASE2_PRELIM);
- size9 = try_init (memctl, CFG_LSDMR_9COL, CFG_OR2_9COL,
- (uchar *) SDRAM_BASE2_PRELIM);
-
- if (size8 < size9) {
- lsize = size9;
- printf ("Local:9COL - %ld MB) using ", lsize >> 20);
- } else {
- lsize = try_init (memctl, CFG_LSDMR_8COL, CFG_OR2_8COL,
- (uchar *) SDRAM_BASE2_PRELIM);
- printf ("Local:8COL - %ld MB) using ", lsize >> 20);
- }
-
-#if 0
- /* Set up BR2 so that the local SDRAM goes
- * right after the 60x SDRAM
- */
- memctl->memc_br2 = (CFG_BR2_PRELIM & ~BRx_BA_MSK) |
- (CFG_SDRAM_BASE + psize);
-#endif
-#endif /* CFG_INIT_LOCAL_SDRAM */
-#endif /* CFG_RAMBOOT */
-
- icache_enable ();
-
- config_scoh_cs ();
-
- return (psize);
-}
-
-/* ------------------------------------------------------------------------- */
-
-static void config_scoh_cs (void)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immr->im_memctl;
- volatile can_reg_t *can = (volatile can_reg_t *) CFG_CAN0_BASE;
- volatile uint tmp, i;
-
- /* Initialize OR3 / BR3 for CAN Bus Controller 0 */
- memctl->memc_or3 = CFG_CAN0_OR3;
- memctl->memc_br3 = CFG_CAN0_BR3;
- /* Initialize OR4 / BR4 for CAN Bus Controller 1 */
- memctl->memc_or4 = CFG_CAN1_OR4;
- memctl->memc_br4 = CFG_CAN1_BR4;
-
- /* Initialize MAMR to write in the array at address 0x0 */
- memctl->memc_mamr = 0x00 | MxMR_OP_WARR | MxMR_GPL_x4DIS;
-
- /* Initialize UPMA for CAN: single read */
- memctl->memc_mdr = 0xcffeec00;
- udelay (1); /* Necessary to have the data correct in the UPM array!!!! */
- /* The read on the CAN controller write the data of mdr in UPMA array. */
- /* The index to the array will be incremented automatically
- through this read */
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x0ffcec00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x0ffcec00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x0ffcec00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x0ffcec00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x0ffcfc00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x0ffcfc00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0xfffdec07;
- udelay (1);
- tmp = can->cpu_interface;
-
-
- /* Initialize MAMR to write in the array at address 0x18 */
- memctl->memc_mamr = 0x18 | MxMR_OP_WARR | MxMR_GPL_x4DIS;
-
- /* Initialize UPMA for CAN: single write */
- memctl->memc_mdr = 0xfcffec00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x00ffec00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x00ffec00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x00ffec00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x00ffec00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x00fffc00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x00fffc00;
- udelay (1);
- tmp = can->cpu_interface;
-
- memctl->memc_mdr = 0x30ffec07;
- udelay (1);
- tmp = can->cpu_interface;
-
- /* Initialize MAMR */
- memctl->memc_mamr = MxMR_GPL_x4DIS; /* GPL_B4 ouput line Disable */
-
-
- /* Initialize OR5 / BR5 for the extended EEPROM Bank0 */
- memctl->memc_or5 = CFG_EXTPROM_OR5;
- memctl->memc_br5 = CFG_EXTPROM_BR5;
- /* Initialize OR6 / BR6 for the extended EEPROM Bank1 */
- memctl->memc_or6 = CFG_EXTPROM_OR6;
- memctl->memc_br6 = CFG_EXTPROM_BR6;
-
- /* Initialize OR7 / BR7 for the Glue Logic */
- memctl->memc_or7 = CFG_FIOX_OR7;
- memctl->memc_br7 = CFG_FIOX_BR7;
-
- /* Initialize OR8 / BR8 for the DOH Logic */
- memctl->memc_or8 = CFG_FDOHM_OR8;
- memctl->memc_br8 = CFG_FDOHM_BR8;
-
- DEBUGF ("OR0 %08x BR0 %08x\n", memctl->memc_or0, memctl->memc_br0);
- DEBUGF ("OR1 %08x BR1 %08x\n", memctl->memc_or1, memctl->memc_br1);
- DEBUGF ("OR2 %08x BR2 %08x\n", memctl->memc_or2, memctl->memc_br2);
- DEBUGF ("OR3 %08x BR3 %08x\n", memctl->memc_or3, memctl->memc_br3);
- DEBUGF ("OR4 %08x BR4 %08x\n", memctl->memc_or4, memctl->memc_br4);
- DEBUGF ("OR5 %08x BR5 %08x\n", memctl->memc_or5, memctl->memc_br5);
- DEBUGF ("OR6 %08x BR6 %08x\n", memctl->memc_or6, memctl->memc_br6);
- DEBUGF ("OR7 %08x BR7 %08x\n", memctl->memc_or7, memctl->memc_br7);
- DEBUGF ("OR8 %08x BR8 %08x\n", memctl->memc_or8, memctl->memc_br8);
-
- DEBUGF ("UPMA addr 0x0\n");
- memctl->memc_mamr = 0x00 | MxMR_OP_RARR | MxMR_GPL_x4DIS;
- for (i = 0; i < 0x8; i++) {
- tmp = can->cpu_interface;
- udelay (1);
- DEBUGF (" %08x ", memctl->memc_mdr);
- }
- DEBUGF ("\nUPMA addr 0x18\n");
- memctl->memc_mamr = 0x18 | MxMR_OP_RARR | MxMR_GPL_x4DIS;
- for (i = 0; i < 0x8; i++) {
- tmp = can->cpu_interface;
- udelay (1);
- DEBUGF (" %08x ", memctl->memc_mdr);
- }
- DEBUGF ("\n");
- memctl->memc_mamr = MxMR_GPL_x4DIS;
-}
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_r (void)
-{
- fpga_init ();
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/siemens/SCM/scm.h b/board/siemens/SCM/scm.h
deleted file mode 100644
index 70c12e6cce..0000000000
--- a/board/siemens/SCM/scm.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * (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
- */
-
-#ifndef __SCM_H
-#define __SCM_H
-
-/*----------------*/
-/* CAN Structures */
-/*----------------*/
-
-/* Message */
-typedef struct can_msg {
- uchar ctrl_0;
- uchar ctrl_1;
- uchar arbit_0;
- uchar arbit_1;
- uchar arbit_2;
- uchar arbit_3;
- uchar config;
- uchar data[8];
-} can_msg_t;
-
-/* CAN Register */
-typedef struct can_reg {
- uchar ctrl;
- uchar status;
- uchar cpu_interface;
- uchar resv0;
- ushort high_speed_rd;
- ushort gbl_mask_std;
- uint gbl_mask_extd;
- uint msg15_mask;
- can_msg_t msg1 __attribute__ ((packed));
- uchar clkout;
- can_msg_t msg2 __attribute__ ((packed));
- uchar bus_config;
- can_msg_t msg3 __attribute__ ((packed));
- uchar bit_timing_0;
- can_msg_t msg4 __attribute__ ((packed));
- uchar bit_timing_1;
- can_msg_t msg5 __attribute__ ((packed));
- uchar interrupt;
- can_msg_t msg6 __attribute__ ((packed));
- uchar resv1;
- can_msg_t msg7 __attribute__ ((packed));
- uchar resv2;
- can_msg_t msg8 __attribute__ ((packed));
- uchar resv3;
- can_msg_t msg9 __attribute__ ((packed));
- uchar p1conf;
- can_msg_t msg10 __attribute__ ((packed));
- uchar p2conf;
- can_msg_t msg11 __attribute__ ((packed));
- uchar p1in;
- can_msg_t msg12 __attribute__ ((packed));
- uchar p2in;
- can_msg_t msg13 __attribute__ ((packed));
- uchar p1out;
- can_msg_t msg14 __attribute__ ((packed));
- uchar p2out;
- can_msg_t msg15 __attribute__ ((packed));
- uchar ser_res_addr;
- uchar resv_cs[0x8000-0x100]; /* 0x8000 is the min size for CS */
-} can_reg_t;
-
-
-#endif /* __SCM_H */
diff --git a/board/siemens/SCM/u-boot.lds b/board/siemens/SCM/u-boot.lds
deleted file mode 100644
index 05f29c6ed0..0000000000
--- a/board/siemens/SCM/u-boot.lds
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * (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/mpc8260/start.o (.text)
- *(.text)
- common/environment.o(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/siemens/pcu_e/Makefile b/board/siemens/pcu_e/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/siemens/pcu_e/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/siemens/pcu_e/config.mk b/board/siemens/pcu_e/config.mk
deleted file mode 100644
index 10f37734ae..0000000000
--- a/board/siemens/pcu_e/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# Siemens PCU E Boards
-#
-
-TEXT_BASE = 0xFFF00000
diff --git a/board/siemens/pcu_e/flash.c b/board/siemens/pcu_e/flash.c
deleted file mode 100644
index 05c364bb23..0000000000
--- a/board/siemens/pcu_e/flash.c
+++ /dev/null
@@ -1,700 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- *
- * The PCU E uses an address map where flash banks are aligned top
- * down, so that the "first" flash bank ends at top of memory, and
- * the monitor entry point is at address (0xFFF00100). The second
- * flash bank is mapped immediately below bank 0.
- *
- * This is NOT in conformance to the "official" memory map!
- *
- */
-
-#define PCU_MONITOR_BASE ( (flash_info[0].start[0] + flash_info[0].size - 1) \
- - (0xFFFFFFFF - CFG_MONITOR_BASE) )
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long base, size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- /*
- * Warning:
- *
- * Since the PCU E memory map assigns flash banks top down,
- * we swap the numbering later if both banks are equipped,
- * so they look like a contiguous area of memory.
- */
- DEBUGF("\n## Get flash bank 1 size @ 0x%08x\n",FLASH_BASE0_PRELIM);
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- DEBUGF("## Get flash bank 2 size @ 0x%08x\n",FLASH_BASE6_PRELIM);
- size_b1 = flash_get_size((vu_long *)FLASH_BASE6_PRELIM, &flash_info[1]);
-
- DEBUGF("## Prelim. Flash bank sizes: %08lx + 0x%08lx\n", size_b0, size_b1);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-
- DEBUGF ("## Before remap: "
- "BR0: 0x%08x OR0: 0x%08x "
- "BR6: 0x%08x OR6: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0,
- memctl->memc_br6, memctl->memc_or6);
-
- /* Remap FLASH according to real size */
- base = 0 - size_b0;
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
- memctl->memc_br0 = (base & BR_BA_MSK) | BR_PS_16 | BR_MS_GPCM | BR_V;
-
- DEBUGF("## BR0: 0x%08x OR0: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0);
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)base, &flash_info[0]);
- base = 0 - size_b0;
-
- flash_info[0].size = size_b0;
-
- flash_get_offsets (base, &flash_info[0]);
-
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- PCU_MONITOR_BASE,
- PCU_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- flash_info_t tmp_info;
-
- memctl->memc_or6 = CFG_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
- memctl->memc_br6 = ((base - size_b1) & BR_BA_MSK) |
- BR_PS_16 | BR_MS_GPCM | BR_V;
-
- DEBUGF("## New BR6: 0x%08x OR6: 0x%08x\n",
- memctl->memc_br6, memctl->memc_or6);
-
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(base - size_b1),
- &flash_info[1]);
- base -= size_b1;
-
- flash_get_offsets (base, &flash_info[1]);
-
- flash_info[1].size = size_b1;
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[1]);
-#endif
- /*
- * Swap bank numbers so that addresses are in ascending order
- */
- tmp_info = flash_info[0];
- flash_info[0] = flash_info[1];
- flash_info[1] = tmp_info;
- } else {
- memctl->memc_br1 = 0; /* invalidate bank */
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
-
- DEBUGF("## Final Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
- short n;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_AMD) {
- return;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMDL322T:
- case FLASH_AMDL323T:
- case FLASH_AMDL324T:
- /* set sector offsets for top boot block type */
-
- base += info->size;
- i = info->sector_count;
- for (n=0; n<8; ++n) { /* 8 x 8k boot sectors */
- base -= 8 << 10;
- --i;
- info->start[i] = base;
- }
- while (i > 0) { /* 64k regular sectors */
- base -= 64 << 10;
- --i;
- info->start[i] = base;
- }
- return;
- case FLASH_AMDL322B:
- case FLASH_AMDL323B:
- case FLASH_AMDL324B:
- /* set sector offsets for bottom boot block type */
- for (i=0; i<8; ++i) { /* 8 x 8k boot sectors */
- info->start[i] = base;
- base += 8 << 10;
- }
- while (base < info->size) { /* 64k regular sectors */
- info->start[i] = base;
- base += 64 << 10;
- ++i;
- }
- return;
- case FLASH_AMDL640:
- /* set sector offsets for dual boot block type */
- for (i=0; i<8; ++i) { /* 8 x 8k boot sectors */
- info->start[i] = base;
- base += 8 << 10;
- }
- n = info->sector_count - 8;
- while (i < n) { /* 64k regular sectors */
- info->start[i] = base;
- base += 64 << 10;
- ++i;
- }
- while (i < info->sector_count) { /* 8 x 8k boot sectors */
- info->start[i] = base;
- base += 8 << 10;
- ++i;
- }
- return;
- default:
- return;
- }
- /* NOTREACHED */
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMDL322B: printf ("AM29DL322B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AMDL322T: printf ("AM29DL322T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_AMDL323B: printf ("AM29DL323B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AMDL323T: printf ("AM29DL323T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_AMDL324B: printf ("AM29DL324B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AMDL324T: printf ("AM29DL324T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_AMDL640: printf ("AM29DL640D (64 Mbit, dual boot sector)\n");
- break;
- default: printf ("Unknown Chip Type 0x%lX\n",
- info->flash_id);
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ushort value;
- vu_short *saddr = (vu_short *)addr;
-
- /* Write auto select command: read Manufacturer ID */
- saddr[0x0555] = 0x00AA;
- saddr[0x02AA] = 0x0055;
- saddr[0x0555] = 0x0090;
-
- value = saddr[0];
-
- DEBUGF("Manuf. ID @ 0x%08lx: 0x%04x\n", (ulong)addr, value);
-
- switch (value) {
- case (AMD_MANUFACT & 0xFFFF):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & 0xFFFF):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- DEBUGF("Unknown Manufacturer ID\n");
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = saddr[1]; /* device ID */
-
- DEBUGF("Device ID @ 0x%08lx: 0x%04x\n", (ulong)(&addr[1]), value);
-
- switch (value) {
-
- case (AMD_ID_DL322T & 0xFFFF):
- info->flash_id += FLASH_AMDL322T;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 8 MB */
-
- case (AMD_ID_DL322B & 0xFFFF):
- info->flash_id += FLASH_AMDL322B;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 8 MB */
-
- case (AMD_ID_DL323T & 0xFFFF):
- info->flash_id += FLASH_AMDL323T;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 8 MB */
-
- case (AMD_ID_DL323B & 0xFFFF):
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 8 MB */
-
- case (AMD_ID_DL324T & 0xFFFF):
- info->flash_id += FLASH_AMDL324T;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 8 MB */
-
- case (AMD_ID_DL324B & 0xFFFF):
- info->flash_id += FLASH_AMDL324B;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 8 MB */
- case (AMD_ID_DL640 & 0xFFFF):
- info->flash_id += FLASH_AMDL640;
- info->sector_count = 142;
- info->size = 0x00800000;
- break;
- default:
- DEBUGF("Unknown Device ID\n");
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- flash_get_offsets ((ulong)addr, info);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
-#if 0
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- saddr = (vu_short *)(info->start[i]);
- info->protect[i] = saddr[2] & 1;
-#else
- info->protect[i] =0;
-#endif
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- saddr = (vu_short *)info->start[0];
- *saddr = 0x00F0; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_short *addr = (vu_short*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x0080;
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_short*)(info->start[sect]);
- addr[0] = 0x0030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_short*)(info->start[l_sect]);
- while ((addr[0] & 0x0080) != 0x0080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (vu_short *)info->start[0];
- addr[0] = 0x00F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-#define FLASH_WIDTH 2 /* flash bus width in bytes */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~(FLASH_WIDTH-1)); /* get lower FLASH_WIDTH aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<FLASH_WIDTH && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<FLASH_WIDTH; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_data(info, wp, data)) != 0) {
- return (rc);
- }
- wp += FLASH_WIDTH;
- }
-
- /*
- * handle FLASH_WIDTH aligned part
- */
- while (cnt >= FLASH_WIDTH) {
- data = 0;
- for (i=0; i<FLASH_WIDTH; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data(info, wp, data)) != 0) {
- return (rc);
- }
- wp += FLASH_WIDTH;
- cnt -= FLASH_WIDTH;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<FLASH_WIDTH && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<FLASH_WIDTH; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_data(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, ulong data)
-{
- vu_short *addr = (vu_short*)(info->start[0]);
- vu_short *sdest = (vu_short *)dest;
- ushort sdata = (ushort)data;
- ushort sval;
- ulong start, passed;
- int flag, rc;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*sdest & sdata) != sdata) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x00A0;
-
-#ifdef WORKAROUND_FOR_BROKEN_HARDWARE
- /* work around the timeout bugs */
- udelay(20);
-#endif
-
- *sdest = sdata;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- rc = 0;
- /* data polling for D7 */
- start = get_timer (0);
-
- for (passed=0; passed < CFG_FLASH_WRITE_TOUT; passed=get_timer(start)) {
-
- sval = *sdest;
-
- if ((sval & 0x0080) == (sdata & 0x0080))
- break;
-
- if ((sval & 0x0020) == 0) /* DQ5: Timeout? */
- continue;
-
- sval = *sdest;
-
- if ((sval & 0x0080) != (sdata & 0x0080))
- rc = 1;
-
- break;
- }
-
- if (rc) {
- DEBUGF ("Program cycle failed @ addr 0x%08lX: val %04X data %04X\n",
- dest, sval, sdata);
- }
-
- if (passed >= CFG_FLASH_WRITE_TOUT) {
- DEBUGF ("Timeout @ addr 0x%08lX: val %04X data %04X\n",
- dest, sval, sdata);
- rc = 1;
- }
-
- /* reset to read mode */
- addr = (vu_short *)info->start[0];
- addr[0] = 0x00F0; /* reset bank */
-
- return (rc);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/siemens/pcu_e/pcu_e.c b/board/siemens/pcu_e/pcu_e.c
deleted file mode 100644
index 3f05e4a6ab..0000000000
--- a/board/siemens/pcu_e/pcu_e.c
+++ /dev/null
@@ -1,563 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-#include <commproc.h>
-#include <i2c.h>
-#include <command.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-static void puma_status (void);
-static void puma_set_mode (int mode);
-static int puma_init_done (void);
-static void puma_load (ulong addr, ulong len);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-/*
- * 50 MHz SDRAM access using UPM A
- */
-const uint sdram_table[] = {
- /*
- * Single Read. (Offset 0 in UPM RAM)
- */
- 0x1f0dfc04, 0xeeafbc04, 0x11af7c04, 0xefbeec00,
- 0x1ffddc47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPM RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1ffddc35, 0xefceac34, 0x1f3d5c35, /* last */
- /*
- * Burst Read. (Offset 8 in UPM RAM)
- */
- 0x1f0dfc04, 0xeeafbc04, 0x10af7c04, 0xf0affc00,
- 0xf0affc00, 0xf1affc00, 0xefbeec00, 0x1ffddc47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
- /*
- * Single Write. (Offset 18 in UPM RAM)
- */
- 0x1f0dfc04, 0xeeafac00, 0x01be4c04, 0x1ffddc47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPM RAM)
- */
- 0x1f0dfc04, 0xeeafac00, 0x10af5c00, 0xf0affc00,
- 0xf0affc00, 0xe1beec04, 0x1ffddc47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPM RAM)
- */
- 0x1ffd7c84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc84, 0xfffffc07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPM RAM)
- */
- 0x7ffffc07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * PUMA access using UPM B
- */
-const uint puma_table[] = {
- /*
- * Single Read. (Offset 0 in UPM RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_,
- /*
- * Precharge and MRS
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Read. (Offset 8 in UPM RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPM RAM)
- */
- 0x0ffff804, 0x0ffff400, 0x3ffffc47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPM RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPM RAM)
- */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPM RAM)
- */
- 0x7ffffc07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- */
-
-int checkboard (void)
-{
- puts ("Board: Siemens PCU E\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immr->im_memctl;
- long int size_b0, reg;
- int i;
-
- /*
- * Configure UPMA for SDRAM
- */
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- memctl->memc_mptpr = CFG_MPTPR;
-
- /* burst length=4, burst type=sequential, CAS latency=2 */
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller bank 2 to the SDRAM bank at preliminary address.
- */
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- memctl->memc_or5 = CFG_OR5_PRELIM;
- memctl->memc_br5 = CFG_BR5_PRELIM;
-#else /* XXX */
- memctl->memc_or2 = CFG_OR2_PRELIM;
- memctl->memc_br2 = CFG_BR2_PRELIM;
-#endif /* XXX */
-
- /* initialize memory address register */
- memctl->memc_mamr = CFG_MAMR; /* refresh not enabled yet */
-
- /* mode initialization (offset 5) */
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- udelay (200); /* 0x8000A105 */
- memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS5 | MCR_MLCF (1) | MCR_MAD (0x05);
-#else /* XXX */
- udelay (200); /* 0x80004105 */
- memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS2 | MCR_MLCF (1) | MCR_MAD (0x05);
-#endif /* XXX */
-
- /* run 2 refresh sequence with 4-beat refresh burst (offset 0x30) */
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- udelay (1); /* 0x8000A830 */
- memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS5 | MCR_MLCF (8) | MCR_MAD (0x30);
-#else /* XXX */
- udelay (1); /* 0x80004830 */
- memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS2 | MCR_MLCF (8) | MCR_MAD (0x30);
-#endif /* XXX */
-
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- udelay (1); /* 0x8000A106 */
- memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS5 | MCR_MLCF (1) | MCR_MAD (0x06);
-#else /* XXX */
- udelay (1); /* 0x80004106 */
- memctl->memc_mcr = MCR_OP_RUN | MCR_MB_CS2 | MCR_MLCF (1) | MCR_MAD (0x06);
-#endif /* XXX */
-
- reg = memctl->memc_mamr;
- reg &= ~MAMR_TLFA_MSK; /* switch timer loop ... */
- reg |= MAMR_TLFA_4X; /* ... to 4x */
- reg |= MAMR_PTAE; /* enable refresh */
- memctl->memc_mamr = reg;
-
- udelay (200);
-
- /* Need at least 10 DRAM accesses to stabilize */
- for (i = 0; i < 10; ++i) {
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- volatile unsigned long *addr =
- (volatile unsigned long *) SDRAM_BASE5_PRELIM;
-#else /* XXX */
- volatile unsigned long *addr =
- (volatile unsigned long *) SDRAM_BASE2_PRELIM;
-#endif /* XXX */
- unsigned long val;
-
- val = *(addr + i);
- *(addr + i) = val;
- }
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- */
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- size_b0 = dram_size (CFG_MAMR, (long *) SDRAM_BASE5_PRELIM, SDRAM_MAX_SIZE);
-#else /* XXX */
- size_b0 = dram_size (CFG_MAMR, (long *) SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
-#endif /* XXX */
-
- memctl->memc_mamr = CFG_MAMR | MAMR_PTAE;
-
- /*
- * Final mapping:
- */
-
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- memctl->memc_or5 = ((-size_b0) & 0xFFFF0000) | SDRAM_TIMING;
- memctl->memc_br5 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-#else /* XXX */
- memctl->memc_or2 = ((-size_b0) & 0xFFFF0000) | SDRAM_TIMING;
- memctl->memc_br2 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-#endif /* XXX */
- udelay (1000);
-
- /*
- * Configure UPMB for PUMA
- */
- upmconfig (UPMB, (uint *) puma_table,
- sizeof (puma_table) / sizeof (uint));
-
- return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immr->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size (base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
-#define ETH_CFG_BITS (CFG_PB_ETH_CFG1 | CFG_PB_ETH_CFG2 | CFG_PB_ETH_CFG3 )
-#else /* XXX */
-#define ETH_CFG_BITS (CFG_PB_ETH_MDDIS | CFG_PB_ETH_CFG1 | \
- CFG_PB_ETH_CFG2 | CFG_PB_ETH_CFG3 )
-#endif /* XXX */
-
-#define ETH_ALL_BITS (ETH_CFG_BITS | CFG_PB_ETH_POWERDOWN | CFG_PB_ETH_RESET)
-
-void reset_phy (void)
-{
- immap_t *immr = (immap_t *) CFG_IMMR;
- ulong value;
-
- /* Configure all needed port pins for GPIO */
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
-# ifdef CFG_ETH_MDDIS_VALUE
- immr->im_ioport.iop_padat |= CFG_PA_ETH_MDDIS;
-# else
- immr->im_ioport.iop_padat &= ~(CFG_PA_ETH_MDDIS); /* Set low */
-# endif
- immr->im_ioport.iop_papar &= ~(CFG_PA_ETH_MDDIS); /* GPIO */
- immr->im_ioport.iop_paodr &= ~(CFG_PA_ETH_MDDIS); /* active output */
- immr->im_ioport.iop_padir |= CFG_PA_ETH_MDDIS; /* output */
-#endif /* XXX */
- immr->im_cpm.cp_pbpar &= ~(ETH_ALL_BITS); /* GPIO */
- immr->im_cpm.cp_pbodr &= ~(ETH_ALL_BITS); /* active output */
-
- value = immr->im_cpm.cp_pbdat;
-
- /* Assert Powerdown and Reset signals */
- value |= CFG_PB_ETH_POWERDOWN;
- value &= ~(CFG_PB_ETH_RESET);
-
- /* PHY configuration includes MDDIS and CFG1 ... CFG3 */
-#if !PCU_E_WITH_SWAPPED_CS
-# ifdef CFG_ETH_MDDIS_VALUE
- value |= CFG_PB_ETH_MDDIS;
-# else
- value &= ~(CFG_PB_ETH_MDDIS);
-# endif
-#endif
-#ifdef CFG_ETH_CFG1_VALUE
- value |= CFG_PB_ETH_CFG1;
-#else
- value &= ~(CFG_PB_ETH_CFG1);
-#endif
-#ifdef CFG_ETH_CFG2_VALUE
- value |= CFG_PB_ETH_CFG2;
-#else
- value &= ~(CFG_PB_ETH_CFG2);
-#endif
-#ifdef CFG_ETH_CFG3_VALUE
- value |= CFG_PB_ETH_CFG3;
-#else
- value &= ~(CFG_PB_ETH_CFG3);
-#endif
-
- /* Drive output signals to initial state */
- immr->im_cpm.cp_pbdat = value;
- immr->im_cpm.cp_pbdir |= ETH_ALL_BITS;
- udelay (10000);
-
- /* De-assert Ethernet Powerdown */
- immr->im_cpm.cp_pbdat &= ~(CFG_PB_ETH_POWERDOWN); /* Enable PHY power */
- udelay (10000);
-
- /* de-assert RESET signal of PHY */
- immr->im_cpm.cp_pbdat |= CFG_PB_ETH_RESET;
- udelay (1000);
-}
-
-/*-----------------------------------------------------------------------
- * Board Special Commands: access functions for "PUMA" FPGA
- */
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-
-#define PUMA_READ_MODE 0
-#define PUMA_LOAD_MODE 1
-
-int do_puma (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- ulong addr, len;
-
- switch (argc) {
- case 2: /* PUMA reset */
- if (strncmp (argv[1], "stat", 4) == 0) { /* Reset */
- puma_status ();
- return 0;
- }
- break;
- case 4: /* PUMA load addr len */
- if (strcmp (argv[1], "load") != 0)
- break;
-
- addr = simple_strtoul (argv[2], NULL, 16);
- len = simple_strtoul (argv[3], NULL, 16);
-
- printf ("PUMA load: addr %08lX len %ld (0x%lX): ",
- addr, len, len);
- puma_load (addr, len);
-
- return 0;
- default:
- break;
- }
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
-}
-
-U_BOOT_CMD (puma, 4, 1, do_puma,
- "puma - access PUMA FPGA\n",
- "status - print PUMA status\n"
- "puma load addr len - load PUMA configuration data\n");
-
-#endif /* CFG_CMD_BSP */
-
-/* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
-
-static void puma_set_mode (int mode)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immr->im_memctl;
-
- /* disable PUMA in memory controller */
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- memctl->memc_br3 = 0;
-#else /* XXX */
- memctl->memc_br4 = 0;
-#endif /* XXX */
-
- switch (mode) {
- case PUMA_READ_MODE:
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- memctl->memc_or3 = PUMA_CONF_OR_READ;
- memctl->memc_br3 = PUMA_CONF_BR_READ;
-#else /* XXX */
- memctl->memc_or4 = PUMA_CONF_OR_READ;
- memctl->memc_br4 = PUMA_CONF_BR_READ;
-#endif /* XXX */
- break;
- case PUMA_LOAD_MODE:
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- memctl->memc_or3 = PUMA_CONF_OR_LOAD;
- memctl->memc_br3 = PUMA_CONF_BR_LOAD;
-#else /* XXX */
- memctl->memc_or4 = PUMA_CONF_OR_READ;
- memctl->memc_br4 = PUMA_CONF_BR_READ;
-#endif /* XXX */
- break;
- }
-}
-
-/* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
-
-#define PUMA_INIT_TIMEOUT 1000 /* max. 1000 ms = 1 second */
-
-static void puma_load (ulong addr, ulong len)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
- volatile uchar *fpga_addr = (volatile uchar *) PUMA_CONF_BASE; /* XXX ??? */
- uchar *data = (uchar *) addr;
- int i;
-
- /* align length */
- if (len & 1)
- ++len;
-
- /* Reset FPGA */
- immr->im_ioport.iop_pcpar &= ~(CFG_PC_PUMA_INIT); /* make input */
- immr->im_ioport.iop_pcso &= ~(CFG_PC_PUMA_INIT);
- immr->im_ioport.iop_pcdir &= ~(CFG_PC_PUMA_INIT);
-
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- immr->im_cpm.cp_pbpar &= ~(CFG_PB_PUMA_PROG); /* GPIO */
- immr->im_cpm.cp_pbodr &= ~(CFG_PB_PUMA_PROG); /* active output */
- immr->im_cpm.cp_pbdat &= ~(CFG_PB_PUMA_PROG); /* Set low */
- immr->im_cpm.cp_pbdir |= CFG_PB_PUMA_PROG; /* output */
-#else
- immr->im_ioport.iop_papar &= ~(CFG_PA_PUMA_PROG); /* GPIO */
- immr->im_ioport.iop_padat &= ~(CFG_PA_PUMA_PROG); /* Set low */
- immr->im_ioport.iop_paodr &= ~(CFG_PA_PUMA_PROG); /* active output */
- immr->im_ioport.iop_padir |= CFG_PA_PUMA_PROG; /* output */
-#endif /* XXX */
- udelay (100);
-
-#if PCU_E_WITH_SWAPPED_CS /* XXX */
- immr->im_cpm.cp_pbdat |= CFG_PB_PUMA_PROG; /* release reset */
-#else
- immr->im_ioport.iop_padat |= CFG_PA_PUMA_PROG; /* release reset */
-#endif /* XXX */
-
- /* wait until INIT indicates completion of reset */
- for (i = 0; i < PUMA_INIT_TIMEOUT; ++i) {
- udelay (1000);
- if (immr->im_ioport.iop_pcdat & CFG_PC_PUMA_INIT)
- break;
- }
- if (i == PUMA_INIT_TIMEOUT) {
- printf ("*** PUMA init timeout ***\n");
- return;
- }
-
- puma_set_mode (PUMA_LOAD_MODE);
-
- while (len--)
- *fpga_addr = *data++;
-
- puma_set_mode (PUMA_READ_MODE);
-
- puma_status ();
-}
-
-/* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
-
-static void puma_status (void)
-{
- /* Check state */
- printf ("PUMA initialization is %scomplete\n",
- puma_init_done ()? "" : "NOT ");
-}
-
-/* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
-
-static int puma_init_done (void)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
-
- /* make sure pin is GPIO input */
- immr->im_ioport.iop_pcpar &= ~(CFG_PC_PUMA_DONE);
- immr->im_ioport.iop_pcso &= ~(CFG_PC_PUMA_DONE);
- immr->im_ioport.iop_pcdir &= ~(CFG_PC_PUMA_DONE);
-
- return (immr->im_ioport.iop_pcdat & CFG_PC_PUMA_DONE) ? 1 : 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_r (void)
-{
- ulong addr = 0;
- ulong len = 0;
- char *s;
-
- printf ("PUMA: ");
- if (puma_init_done ()) {
- printf ("initialized\n");
- return 0;
- }
-
- if ((s = getenv ("puma_addr")) != NULL)
- addr = simple_strtoul (s, NULL, 16);
-
- if ((s = getenv ("puma_len")) != NULL)
- len = simple_strtoul (s, NULL, 16);
-
- if ((!addr) || (!len)) {
- printf ("net list undefined\n");
- return 0;
- }
-
- printf ("loading... ");
-
- puma_load (addr, len);
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/siemens/pcu_e/u-boot.lds b/board/siemens/pcu_e/u-boot.lds
deleted file mode 100644
index 6505d45561..0000000000
--- a/board/siemens/pcu_e/u-boot.lds
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * (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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FF) & 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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/pcu_e/u-boot.lds.debug b/board/siemens/pcu_e/u-boot.lds.debug
deleted file mode 100644
index 828afbbced..0000000000
--- a/board/siemens/pcu_e/u-boot.lds.debug
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/sixnet/Makefile b/board/sixnet/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/sixnet/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/sixnet/config.mk b/board/sixnet/config.mk
deleted file mode 100644
index 0cd8f44148..0000000000
--- a/board/sixnet/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# SIXNET boards
-#
-
-TEXT_BASE = 0xF8000000
diff --git a/board/sixnet/flash.c b/board/sixnet/flash.c
deleted file mode 100644
index 61d758085c..0000000000
--- a/board/sixnet/flash.c
+++ /dev/null
@@ -1,790 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-/* environment.h defines the various CFG_ENV_... values in terms
- * of whichever ones are given in the configuration file.
- */
-#include <environment.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* NOTE - CONFIG_FLASH_16BIT means the CPU interface is 16-bit, it
- * has nothing to do with the flash chip being 8-bit or 16-bit.
- */
-#ifdef CONFIG_FLASH_16BIT
-typedef unsigned short FLASH_PORT_WIDTH;
-typedef volatile unsigned short FLASH_PORT_WIDTHV;
-#define FLASH_ID_MASK 0xFFFF
-#else
-typedef unsigned long FLASH_PORT_WIDTH;
-typedef volatile unsigned long FLASH_PORT_WIDTHV;
-#define FLASH_ID_MASK 0xFFFFFFFF
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define ORMASK(size) ((-size) & OR_AM_MSK)
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(FPWV *addr, flash_info_t *info);
-static void flash_reset(flash_info_t *info);
-static int write_word_intel(flash_info_t *info, FPWV *dest, FPW data);
-static int write_word_amd(flash_info_t *info, FPWV *dest, FPW data);
-static void flash_get_offsets(ulong base, flash_info_t *info);
-#ifdef CFG_FLASH_PROTECTION
-static void flash_sync_real_protect(flash_info_t *info);
-#endif
-
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- size_b = flash_get_size((FPW *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size_b;
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx\n",size_b);
- }
-
- /* Remap FLASH according to real size, so only at proper address */
- memctl->memc_or0 = (memctl->memc_or0 & ~OR_AM_MSK) | ORMASK(size_b);
-
- /* Do this again (was done already in flast_get_size), just
- * in case we move it when remap the FLASH.
- */
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#ifdef CFG_FLASH_PROTECTION
- /* read the hardware protection status (if any) into the
- * protection array in flash_info.
- */
- flash_sync_real_protect(&flash_info[0]);
-#endif
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_ADDR
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_ADDR_REDUND
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE_REDUND - 1,
- &flash_info[0]);
-#endif
-
- return (size_b);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_reset(flash_info_t *info)
-{
- FPWV *base = (FPWV *)(info->start[0]);
-
- /* Put FLASH back in read mode */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL)
- *base = (FPW)0x00FF00FF; /* Intel Read Mode */
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
- *base = (FPW)0x00F000F0; /* AMD Read Mode */
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL
- && (info->flash_id & FLASH_BTYPE)) {
- int bootsect_size; /* number of bytes/boot sector */
- int sect_size; /* number of bytes/regular sector */
-
- bootsect_size = 0x00002000 * (sizeof(FPW)/2);
- sect_size = 0x00010000 * (sizeof(FPW)/2);
-
- /* set sector offsets for bottom boot block type */
- for (i = 0; i < 8; ++i) {
- info->start[i] = base + (i * bootsect_size);
- }
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + ((i - 7) * sect_size);
- }
- }
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD
- && (info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U) {
-
- int sect_size; /* number of bytes/sector */
-
- sect_size = 0x00010000 * (sizeof(FPW)/2);
-
- /* set up sector start address table (uniform sector type) */
- for( i = 0; i < info->sector_count; i++ )
- info->start[i] = base + (i * sect_size);
- }
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD
- && (info->flash_id & FLASH_TYPEMASK) == FLASH_AM800T) {
-
- int sect_size; /* number of bytes/sector */
-
- sect_size = 0x00010000 * (sizeof(FPW)/2);
-
- /* set up sector start address table (top boot sector type) */
- for (i = 0; i < info->sector_count - 3; i++)
- info->start[i] = base + (i * sect_size);
- i = info->sector_count - 1;
- info->start[i--] = base + (info->size - 0x00004000) * (sizeof(FPW)/2);
- info->start[i--] = base + (info->size - 0x00006000) * (sizeof(FPW)/2);
- info->start[i--] = base + (info->size - 0x00008000) * (sizeof(FPW)/2);
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar *bootletter;
- char *fmt;
- uchar botbootletter[] = "B";
- uchar topbootletter[] = "T";
- uchar botboottype[] = "bottom boot sector";
- uchar topboottype[] = "top boot sector";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- /* check for top or bottom boot, if it applies */
- if (info->flash_id & FLASH_BTYPE) {
- boottype = botboottype;
- bootletter = botbootletter;
- }
- else {
- boottype = topboottype;
- bootletter = topbootletter;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM800T:
- fmt = "29LV800B%s (8 Mbit, %s)\n";
- break;
- case FLASH_AM640U:
- fmt = "29LV641D (64 Mbit, uniform sectors)\n";
- break;
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- fmt = "28F800C3%s (8 Mbit, %s)\n";
- break;
- case FLASH_INTEL800B:
- case FLASH_INTEL800T:
- fmt = "28F800B3%s (8 Mbit, %s)\n";
- break;
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- fmt = "28F160C3%s (16 Mbit, %s)\n";
- break;
- case FLASH_INTEL160B:
- case FLASH_INTEL160T:
- fmt = "28F160B3%s (16 Mbit, %s)\n";
- break;
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- fmt = "28F320C3%s (32 Mbit, %s)\n";
- break;
- case FLASH_INTEL320B:
- case FLASH_INTEL320T:
- fmt = "28F320B3%s (32 Mbit, %s)\n";
- break;
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- fmt = "28F640C3%s (64 Mbit, %s)\n";
- break;
- case FLASH_INTEL640B:
- case FLASH_INTEL640T:
- fmt = "28F640B3%s (64 Mbit, %s)\n";
- break;
- default:
- fmt = "Unknown Chip Type\n";
- break;
- }
-
- printf (fmt, bootletter, boottype);
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20,
- info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
-
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-ulong flash_get_size (FPWV *addr, flash_info_t *info)
-{
- /* Write auto select command: read Manufacturer ID */
-
- /* Write auto select command sequence and test FLASH answer */
- addr[0x0555] = (FPW)0x00AA00AA; /* for AMD, Intel ignores this */
- addr[0x02AA] = (FPW)0x00550055; /* for AMD, Intel ignores this */
- addr[0x0555] = (FPW)0x00900090; /* selects Intel or AMD */
-
- /* The manufacturer codes are only 1 byte, so just use 1 byte.
- * This works for any bus width and any FLASH device width.
- */
- switch (addr[0] & 0xff) {
-
- case (uchar)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
-
- case (uchar)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- break;
- }
-
- /* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */
- if (info->flash_id != FLASH_UNKNOWN) switch (addr[1]) {
-
- case (FPW)AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00100000 * (sizeof(FPW)/2);
- break; /* => 1 or 2 MiB */
-
- case (FPW)AMD_ID_LV640U: /* 29LV640 and 29LV641 have same ID */
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- case (FPW)INTEL_ID_28F800C3B:
- info->flash_id += FLASH_28F800C3B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof(FPW)/2);
- break; /* => 1 or 2 MB */
-
- case (FPW)INTEL_ID_28F800B3B:
- info->flash_id += FLASH_INTEL800B;
- info->sector_count = 23;
- info->size = 0x00100000 * (sizeof(FPW)/2);
- break; /* => 1 or 2 MB */
-
- case (FPW)INTEL_ID_28F160C3B:
- info->flash_id += FLASH_28F160C3B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof(FPW)/2);
- break; /* => 2 or 4 MB */
-
- case (FPW)INTEL_ID_28F160B3B:
- info->flash_id += FLASH_INTEL160B;
- info->sector_count = 39;
- info->size = 0x00200000 * (sizeof(FPW)/2);
- break; /* => 2 or 4 MB */
-
- case (FPW)INTEL_ID_28F320C3B:
- info->flash_id += FLASH_28F320C3B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof(FPW)/2);
- break; /* => 4 or 8 MB */
-
- case (FPW)INTEL_ID_28F320B3B:
- info->flash_id += FLASH_INTEL320B;
- info->sector_count = 71;
- info->size = 0x00400000 * (sizeof(FPW)/2);
- break; /* => 4 or 8 MB */
-
- case (FPW)INTEL_ID_28F640C3B:
- info->flash_id += FLASH_28F640C3B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- case (FPW)INTEL_ID_28F640B3B:
- info->flash_id += FLASH_INTEL640B;
- info->sector_count = 135;
- info->size = 0x00800000 * (sizeof(FPW)/2);
- break; /* => 8 or 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* => no or unknown flash */
- }
-
- flash_get_offsets((ulong)addr, info);
-
- /* Put FLASH back in read mode */
- flash_reset(info);
-
- return (info->size);
-}
-
-#ifdef CFG_FLASH_PROTECTION
-/*-----------------------------------------------------------------------
- */
-
-static void flash_sync_real_protect(flash_info_t *info)
-{
- FPWV *addr = (FPWV *)(info->start[0]);
- FPWV *sect;
- int i;
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- /* check for protected sectors */
- *addr = (FPW)0x00900090;
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02.
- * D0 = 1 for each device if protected.
- * If at least one device is protected the sector is marked
- * protected, but mixed protected and unprotected devices
- * within a sector should never happen.
- */
- sect = (FPWV *)(info->start[i]);
- info->protect[i] = (sect[2] & (FPW)(0x00010001)) ? 1 : 0;
- }
-
- /* Put FLASH back in read mode */
- flash_reset(info);
- break;
-
- case FLASH_AM640U:
- case FLASH_AM800T:
- default:
- /* no hardware protect that we support */
- break;
- }
-}
-#endif
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- FPWV *addr;
- int flag, prot, sect;
- int intel = (info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_INTEL800B:
- case FLASH_INTEL160B:
- case FLASH_INTEL320B:
- case FLASH_INTEL640B:
- case FLASH_28F800C3B:
- case FLASH_28F160C3B:
- case FLASH_28F320C3B:
- case FLASH_28F640C3B:
- case FLASH_AM640U:
- case FLASH_AM800T:
- break;
- case FLASH_UNKNOWN:
- default:
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer(0);
- last = start;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last && rcode == 0; sect++) {
-
- if (info->protect[sect] != 0) /* protected, skip it */
- continue;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr = (FPWV *)(info->start[sect]);
- if (intel) {
- *addr = (FPW)0x00500050; /* clear status register */
- *addr = (FPW)0x00200020; /* erase setup */
- *addr = (FPW)0x00D000D0; /* erase confirm */
- }
- else {
- /* must be AMD style if not Intel */
- FPWV *base; /* first address in bank */
-
- base = (FPWV *)(info->start[0]);
- base[0x0555] = (FPW)0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW)0x00550055; /* unlock */
- base[0x0555] = (FPW)0x00800080; /* erase mode */
- base[0x0555] = (FPW)0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW)0x00550055; /* unlock */
- *addr = (FPW)0x00300030; /* erase sector */
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 50us for AMD, 80us for Intel.
- * Let's wait 1 ms.
- */
- udelay (1000);
-
- while ((*addr & (FPW)0x00800080) != (FPW)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
-
- if (intel) {
- /* suspend erase */
- *addr = (FPW)0x00B000B0;
- }
-
- flash_reset(info); /* reset to read mode */
- rcode = 1; /* failed */
- break;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- flash_reset(info); /* reset to read mode */
- }
-
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- FPW data = 0; /* 16 or 32 bit word, matches flash bus width on MPC8XX */
- int bytes; /* number of bytes to program in current word */
- int left; /* number of bytes left to program */
- int i, res;
-
- for (left = cnt, res = 0;
- left > 0 && res == 0;
- addr += sizeof(data), left -= sizeof(data) - bytes) {
-
- bytes = addr & (sizeof(data) - 1);
- addr &= ~(sizeof(data) - 1);
-
- /* combine source and destination data so can program
- * an entire word of 16 or 32 bits
- */
- for (i = 0; i < sizeof(data); i++) {
- data <<= 8;
- if (i < bytes || i - bytes >= left )
- data += *((uchar *)addr + i);
- else
- data += *src++;
- }
-
- /* write one word to the flash */
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- res = write_word_amd(info, (FPWV *)addr, data);
- break;
- case FLASH_MAN_INTEL:
- res = write_word_intel(info, (FPWV *)addr, data);
- break;
- default:
- /* unknown flash type, error! */
- printf ("missing or unknown FLASH type\n");
- res = 1; /* not really a timeout, but gives error */
- break;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for AMD FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_amd (flash_info_t *info, FPWV *dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
- FPWV *base; /* first address in flash bank */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
-
- base = (FPWV *)(info->start[0]);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- base[0x0555] = (FPW)0x00AA00AA; /* unlock */
- base[0x02AA] = (FPW)0x00550055; /* unlock */
- base[0x0555] = (FPW)0x00A000A0; /* selects program mode */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- /* data polling for D7 */
- while (res == 0 && (*dest & (FPW)0x00800080) != (data & (FPW)0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW)0x00F000F0; /* reset bank */
- res = 1;
- }
- }
-
- return (res);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash for Intel FLASH
- * A word is 16 or 32 bits, whichever the bus width of the flash bank
- * (not an individual chip) is.
- *
- * returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word_intel (flash_info_t *info, FPWV *dest, FPW data)
-{
- ulong start;
- int flag;
- int res = 0; /* result, assume success */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *dest = (FPW)0x00500050; /* clear status register */
- *dest = (FPW)0x00FF00FF; /* make sure in read mode */
- *dest = (FPW)0x00400040; /* program setup */
-
- *dest = data; /* start programming the data */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- while (res == 0 && (*dest & (FPW)0x00800080) != (FPW)0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *dest = (FPW)0x00B000B0; /* Suspend program */
- res = 1;
- }
- }
-
- if (res == 0 && (*dest & (FPW)0x00100010))
- res = 1; /* write failed, time out error is close enough */
-
- *dest = (FPW)0x00500050; /* clear status register */
- *dest = (FPW)0x00FF00FF; /* make sure in read mode */
-
- return (res);
-}
-
-#ifdef CFG_FLASH_PROTECTION
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect (flash_info_t * info, long sector, int prot)
-{
- int rcode = 0; /* assume success */
- FPWV *addr; /* address of sector */
- FPW value;
-
- addr = (FPWV *) (info->start[sector]);
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F800C3B:
- case FLASH_28F800C3T:
- case FLASH_28F160C3B:
- case FLASH_28F160C3T:
- case FLASH_28F320C3B:
- case FLASH_28F320C3T:
- case FLASH_28F640C3B:
- case FLASH_28F640C3T:
- flash_reset (info); /* make sure in read mode */
- *addr = (FPW) 0x00600060L; /* lock command setup */
- if (prot)
- *addr = (FPW) 0x00010001L; /* lock sector */
- else
- *addr = (FPW) 0x00D000D0L; /* unlock sector */
- flash_reset (info); /* reset to read mode */
-
- /* now see if it really is locked/unlocked as requested */
- *addr = (FPW) 0x00900090;
- /* read sector protection at sector address, (A7 .. A0) = 0x02.
- * D0 = 1 for each device if protected.
- * If at least one device is protected the sector is marked
- * protected, but return failure. Mixed protected and
- * unprotected devices within a sector should never happen.
- */
- value = addr[2] & (FPW) 0x00010001;
- if (value == 0)
- info->protect[sector] = 0;
- else if (value == (FPW) 0x00010001)
- info->protect[sector] = 1;
- else {
- /* error, mixed protected and unprotected */
- rcode = 1;
- info->protect[sector] = 1;
- }
- if (info->protect[sector] != prot)
- rcode = 1; /* failed to protect/unprotect as requested */
-
- /* reload all protection bits from hardware for now */
- flash_sync_real_protect (info);
- break;
-
- case FLASH_AM640U:
- case FLASH_AM800T:
- default:
- /* no hardware protect that we support */
- info->protect[sector] = prot;
- break;
- }
-
- return rcode;
-}
-#endif
diff --git a/board/sixnet/fpgadata.c b/board/sixnet/fpgadata.c
deleted file mode 100644
index 2d3a7b3358..0000000000
--- a/board/sixnet/fpgadata.c
+++ /dev/null
@@ -1,1719 +0,0 @@
- 0xff, 0x87, 0xff, 0x88, 0x7f, 0xff, 0xf9, 0xff,
- 0xff, 0xf5, 0xff, 0x8f, 0xff, 0xf0, 0x8f, 0xf9,
- 0xff, 0xef, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xff, 0xf0,
- 0xff, 0xff, 0xff, 0xff, 0x8f, 0x7f, 0xf1, 0xcf,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef,
- 0x7f, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x77, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0x86, 0xf6, 0xf0, 0xff,
- 0xf0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x0f, 0x7f,
- 0xc1, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xf8, 0xff, 0xff, 0xf6, 0xf0, 0xff, 0xff,
- 0x7f, 0x8f, 0x7f, 0xf0, 0xff, 0x0f, 0x7f, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0xff, 0xf8, 0xf7, 0x8f, 0xcf, 0xf0, 0xf6, 0xff,
- 0xff, 0xef, 0xff, 0xfb, 0x7f, 0x2f, 0x1f, 0x71,
- 0xf5, 0xff, 0xff, 0xef, 0x7f,
- 0xff, 0x7f, 0xff, 0xf7, 0xf6, 0xfe, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xf7, 0x7f, 0x77, 0xf7, 0xff, 0xfb,
- 0x0f, 0xff, 0xf0, 0xff, 0xff, 0x7f, 0xff, 0xff,
- 0xfe, 0xff, 0x8f, 0x7f, 0xf1,
- 0xff, 0xff, 0xfa, 0xce, 0xff, 0xfd, 0xff, 0xff,
- 0x9f, 0xff, 0x8e, 0xff, 0xf0, 0xbf, 0x7f, 0xf5,
- 0xff, 0xef, 0x9f, 0xfd, 0x81,
- 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
- 0xff, 0xef, 0x9f, 0xfb, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0x7f,
- 0xff, 0x77, 0xfa, 0xb6, 0xff, 0x78, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xbf, 0xfd, 0x0f, 0x7f, 0xf1,
- 0xff, 0xff, 0xff, 0xff, 0x8f,
- 0xff, 0xf6, 0xf7, 0xf6, 0x7f, 0xbf, 0xff, 0xff,
- 0xff, 0xff, 0xef, 0xbf, 0xf2, 0x7f, 0xef, 0xff,
- 0xfe, 0xfb, 0xff, 0xef, 0xff,
- 0xff, 0xf7, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf,
- 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x7f, 0xff, 0xff,
- 0xff, 0xf7, 0xff, 0xf7, 0xcf, 0x8f, 0xff, 0xf0,
- 0xef, 0xf9, 0xfb, 0xff, 0xff, 0xff, 0x9f, 0x0f,
- 0x65, 0xe1, 0xfb, 0x7b, 0xf3,
- 0xff, 0xf7, 0xf6, 0xfe, 0xff, 0x8f, 0xf6, 0xe8,
- 0xf6, 0xf1, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff,
- 0x6f, 0x61, 0xf1, 0xfb, 0xff,
- 0xff, 0xde, 0x8f, 0x8f, 0xf0, 0xf0, 0xff, 0xff,
- 0xf7, 0xbf, 0xff, 0xd4, 0x8f, 0x0f, 0x71, 0xc1,
- 0x6f, 0xd1, 0xeb, 0x5f, 0xfd,
- 0xff, 0x9f, 0xff, 0xfb, 0xff, 0x8f, 0x9f, 0xf7,
- 0x9f, 0xff, 0xf4, 0xb7, 0xfd, 0xff, 0xfe, 0x8f,
- 0xbf, 0x71, 0x1f, 0xff, 0x7f,
- 0xff, 0xfd, 0x87, 0x87, 0xf0, 0x70, 0x1f, 0xf7,
- 0xbf, 0xff, 0xff, 0xff, 0x8f, 0x0f, 0x71, 0x81,
- 0xbf, 0x3e, 0x7f, 0x7f, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0x7f, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xf1, 0xff, 0xff, 0xff, 0xff,
- 0xbf, 0xff, 0x07, 0xff, 0xf0, 0xff, 0xff, 0xff,
- 0xfe, 0xff, 0xff, 0xf7, 0x8d, 0x7f, 0xf1, 0xff,
- 0xff, 0x9f, 0x6f, 0xf1, 0xff,
- 0xbf, 0x71, 0x87, 0xfe, 0xf0, 0x8f, 0x8f, 0xf0,
- 0xfb, 0xcb, 0xff, 0xf0, 0x8f, 0x7f, 0xf1, 0x8f,
- 0x1e, 0xe1, 0x7e, 0x91, 0x7f,
- 0xbf, 0x1a, 0xff, 0x71, 0xff, 0x9f, 0x8f, 0xf6,
- 0xf8, 0xdf, 0xf7, 0xf4, 0xff, 0xff, 0xff, 0x8f,
- 0x1f, 0xf0, 0x7f, 0x97, 0xff,
- 0xbf, 0x97, 0xff, 0xfb, 0xbf, 0xdf, 0xff, 0xf7,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xdf,
- 0xf9, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xdf, 0xff, 0xf1, 0xff,
- 0xff, 0x9f, 0xfc, 0xfb, 0xff, 0xf0, 0xfe, 0xff,
- 0xff, 0xff, 0x9d, 0xff, 0xf4, 0xcf, 0xff, 0x7f,
- 0xf7, 0xff, 0xff, 0xff, 0xcf,
- 0xff, 0x97, 0xff, 0xfa, 0xff, 0x8f, 0xf8, 0xf0,
- 0xff, 0xff, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0x0f,
- 0x7f, 0xe1, 0xff, 0xf1, 0xff,
- 0xff, 0x83, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0x6f, 0x7f, 0x77, 0x7d, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0x6f, 0xf1,
- 0xff, 0xd7, 0xff, 0xfe, 0xff, 0xff, 0x9f, 0xfd,
- 0x78, 0xef, 0xff, 0xbf, 0xff, 0xf5, 0xff, 0xff,
- 0xbf, 0x0f, 0x79, 0xd1, 0xff,
- 0xff, 0xd2, 0xff, 0x72, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0xfe, 0x70, 0x9d, 0xff, 0xf4, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0xbf, 0x7f,
- 0xff, 0x07, 0xff, 0x78, 0xff, 0x9f, 0xff, 0xfe,
- 0xff, 0x77, 0x7f, 0x8f, 0x7f, 0xf0, 0xff, 0x8f,
- 0x7f, 0xe1, 0x0f, 0x71, 0xf1,
- 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0xfd, 0xff, 0xba, 0x7f, 0xff, 0xff, 0xff,
- 0xff, 0xef, 0x7f, 0xa1, 0x7f,
- 0xff, 0xbd, 0x7f, 0xf7, 0xf9, 0xfd, 0xfb, 0xff,
- 0xff, 0x8f, 0xbf, 0xb7, 0x8f, 0xaf, 0xdf, 0xff,
- 0xff, 0xff, 0xff, 0x5f, 0xeb,
- 0xbf, 0xfd, 0xf8, 0xff, 0xff, 0xfb, 0xff, 0xfb,
- 0xff, 0xf7, 0xcf, 0xfb, 0xf0, 0xff, 0xff, 0xdf,
- 0xff, 0xff, 0xef, 0x7f, 0xab,
- 0xff, 0xfd, 0xfa, 0xbf, 0x8f, 0xbf, 0xca, 0xfe,
- 0xff, 0xff, 0xdf, 0x6f, 0xd4, 0xf6, 0x0f, 0x3f,
- 0x11, 0xf9, 0xff, 0x7f, 0x8b,
- 0xbf, 0xff, 0x8f, 0xff, 0xc0, 0xfb, 0xf5, 0xef,
- 0xf7, 0x7f, 0xff, 0xff, 0xfb, 0x7f, 0xff, 0x7f,
- 0xff, 0x6f, 0xff, 0xff, 0xff,
- 0xbf, 0x87, 0xbb, 0xf8, 0xfb, 0xcf, 0xfe, 0xfe,
- 0xff, 0xef, 0xff, 0xfb, 0x7f, 0xff, 0xff, 0x8f,
- 0xff, 0xe1, 0x7f, 0x7b, 0xff,
- 0xbf, 0x80, 0x89, 0x88, 0xb0, 0xf5, 0xf0, 0xff,
- 0xf7, 0xdf, 0xfe, 0x7c, 0x8f, 0x0f, 0x71, 0xe1,
- 0xff, 0xf1, 0xe5, 0x0e, 0x2b,
- 0xff, 0xff, 0xff, 0xbf, 0xff, 0xcf, 0xf5, 0x9f,
- 0xff, 0xff, 0xfe, 0xff, 0x8f, 0x7f, 0x71, 0x8f,
- 0xff, 0x91, 0x7f, 0xfb, 0xff,
- 0xff, 0x7f, 0x7f, 0xcf, 0x8a, 0xff, 0xf0, 0xff,
- 0x57, 0xfe, 0xfb, 0x8f, 0xff, 0xf0, 0xff, 0x7e,
- 0xff, 0xff, 0x9a, 0xff, 0xf1,
- 0xff, 0xff, 0xcf, 0xb7, 0xce, 0xff, 0xf4, 0xff,
- 0xff, 0x7f, 0xf7, 0xfb, 0xff, 0xfe, 0xff, 0x7f,
- 0xff, 0xfd, 0xfe, 0x75, 0xfd,
- 0xff, 0xef, 0xcf, 0xff, 0xf5, 0xff, 0xf5, 0xff,
- 0xf7, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff,
- 0xcf, 0x7f, 0x31, 0x7f, 0xff,
- 0x3f, 0x78, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x0f, 0x0f, 0xf1, 0xf1, 0xdf, 0xff, 0xff,
- 0xff, 0x9f, 0xff, 0x84, 0x0e,
- 0xff, 0xf8, 0x7f, 0xf7, 0x7f, 0xff, 0xff, 0x8f,
- 0x8f, 0x80, 0xf1, 0xf1, 0xff, 0xff, 0xff, 0xff,
- 0xfe, 0x9f, 0x8e, 0x05, 0x71,
- 0xbf, 0xf8, 0xf8, 0xff, 0x7f, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0x8f, 0xf1, 0xf1, 0xff, 0xff, 0xff,
- 0xfe, 0xff, 0xff, 0x8f, 0x0f,
- 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0x8f, 0xf1, 0xf1, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8e, 0x0f, 0x71,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x7f, 0xf7, 0xff, 0xff, 0x8f, 0xff,
- 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0x7f, 0xf0, 0xff, 0xff,
- 0x7f, 0xf8, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x9f, 0xff, 0x8f, 0x7e,
- 0xbf, 0xff, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xfe, 0xff, 0x8f,
- 0xff, 0x87, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0xff, 0xf0, 0x8f, 0xff, 0xf0, 0xff, 0xff,
- 0xff, 0xff, 0x8e, 0x7f, 0xf1,
- 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0x3f, 0xff, 0xf8, 0xff, 0x8f, 0x7f, 0xf0, 0x8f,
- 0xff, 0xf0, 0x0f, 0xff, 0x70, 0xff, 0x8f, 0x7e,
- 0xf1, 0xdf, 0xff, 0xfb, 0x8e,
- 0xff, 0x80, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xaf, 0x7f, 0x84, 0xff, 0xf1, 0xff, 0xfe,
- 0xff, 0xff, 0xfe, 0x8f, 0x7f,
- 0xff, 0x80, 0xff, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0x7f, 0x8f, 0xff, 0x81, 0x7f, 0xf0, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0x7f, 0xf0, 0xdf, 0xdf, 0xff, 0xdf, 0xff,
- 0xff, 0xff, 0x8f, 0x7f, 0xf1,
- 0xff, 0xfd, 0xff, 0xff, 0xff, 0x0f, 0xff, 0x80,
- 0xff, 0xf0, 0xff, 0xff, 0xdf, 0xff, 0xdf, 0x8e,
- 0x0f, 0x01, 0x71, 0xf1, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xdf, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xfe,
- 0xbf, 0x87, 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0xff, 0x8f, 0x8f, 0xd0, 0xf0, 0xdf, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0x8f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x7f, 0xff, 0xff,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
- 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xfe,
- 0xff, 0xdf, 0xff, 0xfb, 0xff,
- 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfd,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xaf, 0xfe, 0xf5, 0xff, 0xff,
- 0xff, 0xff, 0x0f, 0x8f, 0xf0, 0x80, 0xff, 0xf0,
- 0xff, 0xff, 0xff, 0xff, 0x1f, 0xaf, 0x71, 0xa7,
- 0x6f, 0xf5, 0xfe, 0xff, 0xff,
- 0xff, 0x77, 0x79, 0x8f, 0xff, 0xf0, 0x8f, 0xff,
- 0x00, 0xff, 0xd0, 0x4f, 0x3d, 0xf0, 0xf7, 0xfd,
- 0x8f, 0x7f, 0x81, 0x7f, 0xd1,
- 0xff, 0xcd, 0xff, 0xff, 0x8f, 0x0f, 0x70, 0xf0,
- 0xff, 0x7f, 0x7f, 0xff, 0xff, 0xdb, 0x8d, 0x4b,
- 0x73, 0xf9, 0xff, 0xdf, 0xff,
- 0x3f, 0xfc, 0xff, 0x8f, 0xff, 0xf2, 0x8f, 0x8f,
- 0x70, 0x7a, 0x3f, 0xbc, 0xf7, 0xdb, 0xff, 0xf9,
- 0xff, 0xff, 0xff, 0xff, 0xee,
- 0xff, 0xe8, 0xf7, 0x8f, 0xfd, 0x80, 0xff, 0xf0,
- 0x9f, 0xa5, 0x7a, 0xf4, 0x6f, 0x3f, 0xcf, 0x07,
- 0x6a, 0xe1, 0xff, 0x8f, 0x7f,
- 0xff, 0xff, 0x77, 0xf1, 0x8f, 0x8f, 0xf0, 0xf0,
- 0xbf, 0xff, 0xe7, 0x7f, 0x8f, 0x24, 0x03, 0x77,
- 0xf3, 0xff, 0xfe, 0xff, 0xff,
- 0xbf, 0x9f, 0x77, 0x8b, 0xff, 0xf0, 0xff, 0xef,
- 0x7d, 0x7f, 0xff, 0x9f, 0xeb, 0x3d, 0xff, 0xf7,
- 0xff, 0xfb, 0xfe, 0xff, 0xdf,
- 0xff, 0xff, 0x77, 0xff, 0x8f, 0x8f, 0xf0, 0xf0,
- 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, 0x5d,
- 0xf5, 0xbb, 0xef, 0xff, 0xff,
- 0xff, 0x7f, 0x8f, 0x8f, 0xf0, 0xf8, 0xff, 0xff,
- 0xf7, 0x7f, 0xff, 0xff, 0xaf, 0xbf, 0x75, 0xb7,
- 0xff, 0xf7, 0xff, 0xff, 0xff,
- 0xff, 0x7f, 0x87, 0x7f, 0xf8, 0xff, 0xf7, 0xf7,
- 0x8f, 0xff, 0xf0, 0x7f, 0xf7, 0xff, 0xad, 0xff,
- 0xf7, 0xee, 0x9f, 0xff, 0xf5,
- 0xff, 0xf8, 0x07, 0xff, 0x80, 0x8f, 0x80, 0x80,
- 0xf0, 0x8f, 0x7f, 0x70, 0x4f, 0x0f, 0x79, 0xf1,
- 0xfd, 0xff, 0xef, 0x8f, 0x7f,
- 0xbf, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0xff, 0xd0, 0xbf, 0xdb, 0xe5,
- 0x3b, 0xfe, 0xf7, 0xff, 0x8f,
- 0xff, 0xff, 0x8f, 0x77, 0x80, 0xff, 0xf0, 0xff,
- 0xff, 0x7f, 0xff, 0xff, 0xbd, 0xef, 0x07, 0x7f,
- 0xf1, 0xfe, 0xff, 0xfe, 0xff,
- 0x7f, 0x7f, 0xff, 0xf7, 0xf7, 0xff, 0xf7, 0x8f,
- 0xbf, 0x70, 0xf5, 0x7f, 0xff, 0xef, 0x3f, 0x7d,
- 0xf7, 0xff, 0xff, 0xfe, 0xfe,
- 0xff, 0x97, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff,
- 0x7e, 0xff, 0xff, 0x9f, 0xdf, 0xf7, 0x3b, 0xff,
- 0xf7, 0xff, 0x7f, 0xfe, 0xff,
- 0x3f, 0x78, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x1f, 0x1f, 0xf1, 0xf1, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x80, 0x0e,
- 0xff, 0xf8, 0x7f, 0xff, 0x7f, 0xff, 0xff, 0x8f,
- 0x9f, 0x80, 0xe1, 0xf1, 0xff, 0xff, 0xef, 0xff,
- 0xfe, 0x9f, 0x0e, 0x01, 0x71,
- 0xbf, 0xf8, 0xf8, 0xff, 0x7f, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0x8f, 0xf1, 0xf1, 0xff, 0xff, 0xef,
- 0xfe, 0xef, 0xff, 0x8f, 0x0f,
- 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x9f, 0x8f, 0xf1, 0xf1, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8e, 0x0f, 0x71,
- 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xef, 0xff, 0xff, 0xef, 0xfe, 0xef,
- 0xef, 0xff, 0xff, 0xef, 0xff,
- 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0x8f, 0xff,
- 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0x7f, 0xe0, 0xff, 0xff,
- 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x7e,
- 0xbf, 0xff, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0xff, 0xf0, 0xef, 0xff, 0xff,
- 0xff, 0xff, 0xee, 0xef, 0x9f,
- 0xff, 0x07, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0xff, 0xf0, 0x8f, 0xff, 0xe0, 0xff, 0xff,
- 0xff, 0xef, 0x8e, 0x7f, 0xf1,
- 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff,
- 0xef, 0xff, 0xfe, 0x8f, 0x7f,
- 0x3f, 0xff, 0xf8, 0xff, 0x8f, 0x7f, 0xf0, 0xdf,
- 0xff, 0xf0, 0x0f, 0xff, 0x70, 0xff, 0x8f, 0x7e,
- 0xe1, 0xdf, 0xff, 0xf7, 0x8e,
- 0xff, 0x80, 0x7f, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0xff, 0x8f, 0x7f, 0x80, 0xff, 0xf1, 0xff, 0xff,
- 0xff, 0xef, 0xfe, 0x8f, 0x7f,
- 0xff, 0x80, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0x8f, 0xff, 0x81, 0x7f, 0xf0, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0xff, 0x7f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff,
- 0x1f, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0x7e, 0xf1,
- 0xff, 0xff, 0xff, 0xf7, 0xff, 0x0f, 0x8f, 0x80,
- 0xf7, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e,
- 0x6f, 0x91, 0x71, 0xf1, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xff, 0xef, 0xff, 0xff,
- 0xbf, 0x87, 0xf8, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0x8f, 0xf0, 0xf0, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xdf, 0x8f,
- 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xfe,
- 0xff, 0xef, 0xff, 0xd7, 0xff,
- 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0x8f, 0xff,
- 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff,
- 0xff, 0xfe, 0xf9, 0xdf, 0xff,
- 0xff, 0xff, 0x8f, 0xbf, 0xf7, 0x9f, 0xf8, 0xf0,
- 0xff, 0xff, 0x77, 0xff, 0x0e, 0x1f, 0x61, 0x81,
- 0x7f, 0xf1, 0xfe, 0xff, 0xff,
- 0xff, 0x7f, 0xb9, 0xcf, 0xff, 0xff, 0x0f, 0xff,
- 0x00, 0xff, 0xd0, 0x7f, 0x75, 0x8b, 0x7f, 0xf1,
- 0x8f, 0x7f, 0x80, 0x7e, 0x91,
- 0xff, 0xbf, 0xdf, 0xff, 0xa7, 0x47, 0x70, 0xf7,
- 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x8f, 0x0f,
- 0x61, 0xf1, 0xef, 0xff, 0xff,
- 0x7f, 0xfe, 0xef, 0x5f, 0xf7, 0xff, 0xff, 0xff,
- 0xff, 0xe7, 0xb7, 0xfc, 0xeb, 0x9f, 0x7f, 0xf1,
- 0x9f, 0x0f, 0x71, 0xf1, 0xee,
- 0xff, 0xf0, 0xf7, 0x3f, 0xef, 0x97, 0xf8, 0xe8,
- 0xff, 0x9f, 0x7f, 0xf0, 0x7f, 0x9f, 0x6f, 0x91,
- 0x7e, 0xf1, 0x9f, 0x8f, 0x57,
- 0xff, 0xff, 0x26, 0xb9, 0xb8, 0xff, 0xf0, 0xff,
- 0xff, 0xff, 0xf7, 0x7f, 0x6f, 0xf4, 0x9f, 0x1f,
- 0x71, 0xe1, 0xfe, 0x7f, 0xff,
- 0xbf, 0xff, 0x71, 0xbb, 0xe8, 0xff, 0xff, 0xf8,
- 0xbf, 0xff, 0xaf, 0xff, 0xf8, 0x9d, 0x6f, 0xf1,
- 0xbf, 0xff, 0xb7, 0xff, 0xbd,
- 0xbf, 0xff, 0xff, 0xdf, 0x97, 0xc7, 0xf7, 0xf0,
- 0xff, 0xff, 0x93, 0xff, 0xff, 0xef, 0xcf, 0x5f,
- 0xf1, 0xf7, 0xdf, 0xf5, 0x9f,
- 0xff, 0xff, 0x87, 0xbf, 0xe0, 0xbf, 0xf7, 0xff,
- 0xf7, 0x7f, 0xff, 0xff, 0x8f, 0x5f, 0x21, 0xb1,
- 0xff, 0x6d, 0xff, 0xef, 0xff,
- 0xff, 0xff, 0xd7, 0xff, 0xb8, 0xff, 0xff, 0xff,
- 0x3f, 0xef, 0xf0, 0x7f, 0xd7, 0x7f, 0xf1, 0xff,
- 0xef, 0xee, 0xbf, 0x7f, 0xf1,
- 0xff, 0xf8, 0x47, 0x0f, 0xc7, 0xf0, 0x7f, 0xf0,
- 0xf0, 0x90, 0x7f, 0x70, 0x8f, 0x2f, 0xc1, 0x0f,
- 0x11, 0x1f, 0xef, 0xaf, 0x7f,
- 0xbf, 0x7f, 0xf0, 0x9f, 0xe7, 0xf7, 0x38, 0xff,
- 0xff, 0xff, 0x8f, 0x7f, 0xf0, 0xaf, 0xff, 0xff,
- 0xbf, 0xfe, 0xfd, 0xdf, 0x8f,
- 0xff, 0xff, 0xbf, 0xf7, 0x8f, 0xff, 0xf7, 0xff,
- 0xeb, 0xff, 0xff, 0xff, 0x8d, 0x3f, 0x81, 0x7f,
- 0xd1, 0xfe, 0xdf, 0xfe, 0xff,
- 0x7f, 0xff, 0xff, 0xdf, 0xa8, 0xff, 0xf0, 0xff,
- 0xff, 0xf0, 0xf7, 0xff, 0xff, 0xff, 0xef, 0xef,
- 0xef, 0x9f, 0x7f, 0x7e, 0xfe,
- 0xff, 0xff, 0xef, 0xff, 0xa7, 0x77, 0xff, 0xff,
- 0xef, 0xff, 0xff, 0xdf, 0xff, 0xe7, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xfe, 0xff,
- 0x3f, 0x78, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xbf,
- 0xff, 0x0f, 0x0f, 0xf1, 0xe1, 0xff, 0xff, 0xef,
- 0xef, 0xff, 0xff, 0x8e, 0x0e,
- 0xff, 0xf8, 0x7f, 0xff, 0x7f, 0xff, 0xff, 0x8f,
- 0x8f, 0x80, 0xf1, 0xf1, 0xef, 0xaf, 0xaf, 0xff,
- 0xee, 0xdf, 0x0e, 0x01, 0x71,
- 0xbf, 0xf8, 0xf8, 0xff, 0x7f, 0xff, 0xff, 0xff,
- 0xef, 0x8f, 0x9f, 0xf1, 0xe1, 0xff, 0xaf, 0xef,
- 0xfe, 0xff, 0xff, 0x8f, 0x0f,
- 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x9f, 0x9f, 0xf1, 0xf1, 0xef, 0xff, 0xaf, 0xff,
- 0xff, 0xff, 0x8e, 0x0f, 0x71,
- 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xef, 0xbf, 0xef, 0xff,
- 0xef, 0xbf, 0xff, 0xef, 0xff,
- 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0x8f, 0xff,
- 0xf0, 0xff, 0xff, 0xff, 0xef, 0xff, 0xef, 0xfe,
- 0xcf, 0x3f, 0xf0, 0xff, 0xff,
- 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
- 0xff, 0x88, 0xff, 0xf0, 0xff, 0xff, 0xef, 0xfe,
- 0xff, 0xff, 0xff, 0x8f, 0x6e,
- 0xbf, 0xff, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0xff, 0xe0, 0xff, 0xef, 0xff,
- 0xff, 0xff, 0xee, 0xef, 0x9f,
- 0xff, 0x8f, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0xff, 0xf0, 0x8f, 0xff, 0xa0, 0xff, 0xfe,
- 0xff, 0xbf, 0x8e, 0x6f, 0xf1,
- 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x6f,
- 0x3f, 0xff, 0xf8, 0xff, 0x8f, 0x7f, 0xf0, 0xcf,
- 0xff, 0xb0, 0x0f, 0xaf, 0x70, 0xff, 0x8f, 0x7e,
- 0xf1, 0xff, 0xff, 0xf1, 0x9e,
- 0xff, 0x80, 0x7f, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0xef, 0x8f, 0x7f, 0x90, 0xff, 0xf1, 0xff, 0xff,
- 0xff, 0xaf, 0xfe, 0x8f, 0x7f,
- 0xff, 0x80, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x3f, 0xdf, 0xff, 0x81, 0x7f, 0xf0, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x9f, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xbf, 0x7e, 0xf1,
- 0xff, 0xff, 0x7f, 0xff, 0xff, 0x0f, 0xaf, 0x80,
- 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde,
- 0x0f, 0x91, 0x7f, 0xf1, 0xff,
- 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfe,
- 0xff, 0xff, 0xbf, 0xff, 0xfb,
- 0xbf, 0x87, 0xf8, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0xff, 0xdf, 0x8f, 0x8f, 0xf0, 0xf0, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0x8f,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0xff, 0xff, 0xdf, 0xbf, 0xff, 0xef, 0xff,
- 0xff, 0xaf, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xdf, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xaf, 0xff,
- 0xf0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff,
- 0xdf, 0xfe, 0xfe, 0xff, 0xff,
- 0xff, 0xff, 0x0f, 0x8f, 0xf0, 0x8f, 0xff, 0xf0,
- 0xf9, 0xff, 0xf7, 0xff, 0x0f, 0x5f, 0x29, 0x89,
- 0x77, 0xf1, 0xfa, 0xff, 0xde,
- 0xff, 0xc3, 0x3f, 0x4b, 0x7f, 0xe9, 0x0f, 0xff,
- 0x00, 0xff, 0x90, 0x0f, 0xd7, 0xff, 0x7f, 0xf9,
- 0x8f, 0x7f, 0x81, 0x7f, 0x81,
- 0xff, 0xff, 0xfb, 0x7d, 0x80, 0x46, 0x76, 0xf0,
- 0xff, 0xff, 0x6f, 0xff, 0xff, 0xad, 0xcf, 0x3f,
- 0x71, 0xf9, 0xff, 0xff, 0xff,
- 0x3f, 0xba, 0xff, 0xc7, 0xf7, 0xb9, 0xcf, 0xde,
- 0x77, 0xb7, 0x77, 0xfe, 0xff, 0xbf, 0x6f, 0xf9,
- 0xff, 0x7e, 0x79, 0xb9, 0xfe,
- 0xff, 0xe4, 0xf7, 0x8f, 0xfe, 0x07, 0xfe, 0xf8,
- 0xff, 0x89, 0x7f, 0xe8, 0x7f, 0xd7, 0x7f, 0x99,
- 0x76, 0xf1, 0xff, 0x0f, 0x7b,
- 0xbf, 0xff, 0xb6, 0xb9, 0x8f, 0xdf, 0xf6, 0xff,
- 0xff, 0xf7, 0xff, 0xff, 0x8f, 0xdd, 0x87, 0x7f,
- 0x71, 0xf1, 0xfe, 0xff, 0xff,
- 0xff, 0x7f, 0xf1, 0x8a, 0xff, 0xff, 0xff, 0xff,
- 0xbf, 0xff, 0xcf, 0xfb, 0xe8, 0x9d, 0x77, 0xa9,
- 0xff, 0x77, 0xda, 0x7f, 0xff,
- 0xbf, 0xff, 0xf7, 0xf7, 0x86, 0xe5, 0xf0, 0xe0,
- 0xff, 0xff, 0xbf, 0xff, 0xff, 0xef, 0x8f, 0x7f,
- 0xbd, 0xff, 0xff, 0xff, 0x8f,
- 0xff, 0xef, 0x86, 0x8f, 0xf0, 0xff, 0xf6, 0x9f,
- 0xff, 0x7f, 0xff, 0xff, 0xcf, 0x1f, 0x71, 0xdd,
- 0x7f, 0xe1, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xc7, 0xf7, 0xb9, 0xff, 0xff, 0xfa,
- 0x3f, 0xef, 0xf0, 0xff, 0xef, 0x7f, 0xd5, 0xff,
- 0xfb, 0xff, 0xf7, 0x6e, 0xf1,
- 0xff, 0xfc, 0xc7, 0xbf, 0xc8, 0xc0, 0x59, 0xff,
- 0xdf, 0xff, 0x7b, 0xf0, 0xa7, 0x1f, 0xa9, 0x77,
- 0x79, 0x71, 0x11, 0xff, 0x79,
- 0xbf, 0xfb, 0x70, 0xbf, 0xff, 0xf9, 0x37, 0xbe,
- 0xff, 0xff, 0x8f, 0x7f, 0xf4, 0x9f, 0xff, 0xff,
- 0xd7, 0x7f, 0xff, 0xff, 0xaf,
- 0xff, 0xff, 0x9e, 0xf7, 0x9f, 0xfe, 0xe4, 0xff,
- 0xcf, 0xcf, 0xff, 0xff, 0xdf, 0x7f, 0x8d, 0x7f,
- 0xf9, 0xfa, 0xdf, 0x9f, 0xef,
- 0x7f, 0xef, 0xff, 0xff, 0xbe, 0xfd, 0xd2, 0xdf,
- 0xff, 0x7e, 0xf7, 0xff, 0xff, 0xab, 0x97, 0xef,
- 0xf3, 0xfe, 0x7f, 0x71, 0xfe,
- 0xff, 0x9f, 0xff, 0xff, 0xb6, 0xfb, 0xf7, 0xff,
- 0xff, 0xf7, 0xff, 0xbf, 0xff, 0xb7, 0xdb, 0xff,
- 0xbb, 0xef, 0xff, 0xff, 0xff,
- 0x3f, 0x68, 0xfe, 0xfd, 0xfb, 0xff, 0xff, 0xef,
- 0xf1, 0x1e, 0x1b, 0xf1, 0xf5, 0xff, 0xff, 0xff,
- 0xff, 0x9f, 0xfb, 0x9a, 0x36,
- 0xff, 0xfc, 0x7d, 0xff, 0x73, 0xf7, 0xff, 0xaf,
- 0x9f, 0x94, 0xfd, 0xf5, 0xff, 0xf7, 0xff, 0xfb,
- 0xfe, 0xef, 0x3e, 0x07, 0x4d,
- 0xbf, 0xe8, 0xf8, 0xff, 0x7f, 0xff, 0xf7, 0xf7,
- 0xf1, 0x8f, 0xaf, 0xd1, 0xf7, 0xf9, 0xfd, 0xff,
- 0xf8, 0xdf, 0xfb, 0x8f, 0x2f,
- 0xff, 0xf8, 0x7f, 0xff, 0xf7, 0xf7, 0xff, 0xff,
- 0xa7, 0xaf, 0xf7, 0xf3, 0xdf, 0xff, 0xfd, 0xff,
- 0xfd, 0xff, 0xae, 0x0f, 0x71,
- 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf3, 0xf3,
- 0xff, 0xf3, 0xff, 0xf7, 0xfb, 0xf3, 0xff, 0xff,
- 0xff, 0xeb, 0xff, 0xf3, 0xdb,
- 0xff, 0xeb, 0x7b, 0xfb, 0xf7, 0xff, 0x8b, 0xf7,
- 0xfc, 0xf7, 0xfb, 0xff, 0xfb, 0xf3, 0xff, 0xff,
- 0x8b, 0x7f, 0xd4, 0xfb, 0xff,
- 0x7f, 0xec, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf7,
- 0xff, 0x8e, 0xff, 0xf8, 0xf7, 0xfb, 0xfd, 0xff,
- 0xfd, 0x9f, 0xf7, 0x9f, 0x7e,
- 0xbf, 0xfb, 0x7c, 0xff, 0xf7, 0xff, 0xff, 0xfb,
- 0xfb, 0xf1, 0x8f, 0xf3, 0xdc, 0xf7, 0xfd, 0xff,
- 0xe9, 0xeb, 0xef, 0xc3, 0xb7,
- 0xff, 0x07, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xf7,
- 0x8f, 0xff, 0xf4, 0x8f, 0xfb, 0xfc, 0xff, 0xef,
- 0xff, 0xf7, 0x8f, 0x7f, 0xd1,
- 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff,
- 0xf3, 0x89, 0xef, 0xf8, 0xff, 0xf7, 0xff, 0xef,
- 0xef, 0xf7, 0xf3, 0xab, 0x7f,
- 0x3f, 0xf9, 0x7e, 0xf9, 0x8f, 0x7f, 0xf0, 0xef,
- 0xff, 0xfc, 0x1b, 0xff, 0x7c, 0xff, 0x8f, 0x6e,
- 0xf1, 0xf7, 0x73, 0xff, 0xa6,
- 0xff, 0x80, 0x7f, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0xf9, 0x8f, 0x7f, 0x84, 0xff, 0xf1, 0xff, 0xff,
- 0xff, 0xff, 0xfa, 0x8f, 0x7f,
- 0xff, 0x96, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff,
- 0x57, 0xaf, 0xfb, 0x85, 0x7f, 0xf4, 0xff, 0xfe,
- 0xef, 0xff, 0xef, 0xbf, 0x53,
- 0xff, 0x7d, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff,
- 0x97, 0x71, 0xf8, 0xff, 0xff, 0xff, 0xdb, 0xef,
- 0xef, 0xe7, 0x97, 0x72, 0xfd,
- 0xff, 0xff, 0xff, 0xff, 0xf3, 0x0f, 0xe3, 0x86,
- 0xf0, 0xf4, 0xfb, 0xff, 0xdf, 0xff, 0xfb, 0x8e,
- 0x0b, 0xa5, 0x72, 0xf9, 0xff,
- 0xff, 0xfb, 0xff, 0xff, 0xf7, 0xff, 0xf3, 0xff,
- 0xf7, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xfb, 0xee,
- 0xfb, 0xff, 0xef, 0xff, 0xff,
- 0xbf, 0x82, 0xf8, 0xf8, 0xf7, 0x7f, 0xf7, 0xff,
- 0xff, 0xef, 0x87, 0x87, 0xf0, 0xf0, 0xfb, 0xff,
- 0xfb, 0xf7, 0xef, 0xef, 0x87,
- 0xff, 0xf6, 0xff, 0xfa, 0xf1, 0xef, 0xf3, 0xf7,
- 0x7f, 0xff, 0xff, 0xef, 0xff, 0xf7, 0xff, 0xff,
- 0xfb, 0xf7, 0xff, 0xfe, 0xff,
- 0xff, 0xf7, 0xfb, 0xf2, 0xf3, 0xff, 0xf1, 0xf7,
- 0xff, 0xef, 0xf7, 0xef, 0xf7, 0xf7, 0xff, 0xfe,
- 0xff, 0xff, 0xef, 0xff, 0xe7,
- 0xff, 0xfb, 0xfb, 0xff, 0xf5, 0xef, 0xf7, 0xff,
- 0xff, 0xff, 0xff, 0xf7, 0x77, 0xff, 0xff, 0xfe,
- 0xff, 0xf7, 0xff, 0xef, 0xef,
- 0xff, 0xff, 0xff, 0xff, 0xf7, 0xef, 0xe5, 0xff,
- 0xfe, 0x61, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x9f, 0xef, 0xef, 0xf3, 0xf7,
- 0xff, 0xff, 0x0f, 0x9f, 0xfa, 0x87, 0xff, 0xf6,
- 0xeb, 0xff, 0xff, 0xef, 0x0f, 0x6f, 0xfd, 0x0d,
- 0x53, 0xf1, 0xf3, 0xff, 0xff,
- 0xbf, 0x1b, 0x7f, 0x96, 0xfe, 0xff, 0x8f, 0xfb,
- 0x00, 0xff, 0xb0, 0x17, 0x7c, 0x8f, 0xff, 0xfd,
- 0x8f, 0x7f, 0x81, 0x7e, 0xf1,
- 0xff, 0xfd, 0xed, 0xee, 0x9e, 0x0b, 0x79, 0xff,
- 0xfb, 0x77, 0x5b, 0xff, 0x9f, 0xff, 0x4f, 0x0f,
- 0x71, 0xf0, 0xdb, 0xff, 0xf7,
- 0x7f, 0xe7, 0xef, 0x18, 0xff, 0xff, 0x9d, 0x8e,
- 0x67, 0xbf, 0x4f, 0xff, 0xff, 0xae, 0xff, 0xf1,
- 0xeb, 0xef, 0xfd, 0xad, 0xf6,
- 0xff, 0xfc, 0xf7, 0x1f, 0xff, 0x9f, 0xfb, 0xfc,
- 0xff, 0x8f, 0x77, 0xec, 0x5f, 0x6f, 0xdf, 0x25,
- 0x7e, 0xd9, 0xe6, 0x97, 0x3f,
- 0xff, 0xf7, 0x67, 0xec, 0x92, 0xbe, 0xf1, 0xfb,
- 0xff, 0x7f, 0xdf, 0x7b, 0x5e, 0x7d, 0xe7, 0x5f,
- 0xf1, 0xf1, 0xfb, 0xff, 0xf7,
- 0xbf, 0xf7, 0x71, 0x9a, 0xfd, 0xff, 0xf7, 0xfb,
- 0x5f, 0x7f, 0xaf, 0xdf, 0xf9, 0xe7, 0x77, 0xdd,
- 0x6f, 0xf7, 0xbb, 0xff, 0x8b,
- 0xbf, 0xff, 0x77, 0xff, 0x93, 0xfe, 0xf8, 0xfe,
- 0xbf, 0xfe, 0xbf, 0xff, 0xff, 0xbf, 0xab, 0x7f,
- 0xfd, 0xff, 0xcf, 0x67, 0xff,
- 0xff, 0x7f, 0x07, 0x9f, 0xe4, 0xdb, 0xff, 0xf1,
- 0xf7, 0x7f, 0xff, 0xff, 0x8f, 0x6f, 0xd1, 0x6d,
- 0x73, 0xff, 0xff, 0xfb, 0xff,
- 0xff, 0x6f, 0x9f, 0x7b, 0xfd, 0xff, 0xf6, 0xfd,
- 0x27, 0xff, 0xfc, 0xff, 0xaf, 0xff, 0xfd, 0xfe,
- 0x7f, 0xdf, 0xff, 0x7f, 0xef,
- 0xff, 0xfe, 0x81, 0xe7, 0x93, 0x91, 0x83, 0x85,
- 0xef, 0x8f, 0x7f, 0x74, 0x8d, 0x1b, 0x2d, 0xe2,
- 0xcd, 0xe5, 0xb5, 0x9f, 0x77,
- 0xbf, 0x7f, 0xe4, 0xef, 0xff, 0xf7, 0xdb, 0xfd,
- 0x7f, 0xfe, 0xab, 0x7f, 0xfc, 0xbf, 0xff, 0xde,
- 0x77, 0xfb, 0xdf, 0xef, 0xbf,
- 0xff, 0xff, 0x1e, 0x7f, 0x8f, 0xff, 0x92, 0xf3,
- 0xdf, 0x7b, 0xff, 0x7b, 0xff, 0xdb, 0x3d, 0x5f,
- 0xf9, 0xf6, 0xff, 0xf2, 0xf7,
- 0x7f, 0x7f, 0xff, 0xff, 0xef, 0xd2, 0xf0, 0xb7,
- 0xfb, 0x7f, 0xfc, 0x77, 0xd7, 0x3f, 0xc7, 0x7f,
- 0xf3, 0xe7, 0xff, 0xfd, 0xfe,
- 0xff, 0xff, 0xef, 0x7b, 0xef, 0xf5, 0xda, 0xff,
- 0x7c, 0xff, 0xff, 0xff, 0xff, 0x7b, 0xeb, 0xfb,
- 0xef, 0xff, 0xef, 0xff, 0xff,
- 0x3f, 0x60, 0xfc, 0xfb, 0xf7, 0xff, 0xff, 0xff,
- 0xfb, 0x00, 0x0f, 0xf1, 0xf5, 0xfb, 0xff, 0xff,
- 0xff, 0xff, 0xf3, 0x86, 0x3e,
- 0xff, 0xf8, 0x7f, 0xfb, 0x73, 0xff, 0xff, 0x9f,
- 0xab, 0x8c, 0xf5, 0xd1, 0xff, 0xfb, 0xff, 0xff,
- 0xfe, 0xeb, 0x36, 0x0d, 0x49,
- 0xbf, 0xf0, 0xfc, 0xfb, 0x73, 0xff, 0xf3, 0xff,
- 0xff, 0xab, 0xa7, 0xf1, 0xf9, 0xff, 0xf7, 0xdf,
- 0xfa, 0xfb, 0xff, 0xa7, 0x3f,
- 0xff, 0xf8, 0x7f, 0xff, 0xfb, 0xfb, 0xfb, 0xff,
- 0xaf, 0x8f, 0xf9, 0xf9, 0xdf, 0xdf, 0xf7, 0xdb,
- 0xff, 0xff, 0xba, 0x2f, 0x69,
- 0xff, 0xe7, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xfb,
- 0xff, 0xfb, 0xd7, 0xff, 0xdf, 0xf7, 0xd7, 0xdf,
- 0xf3, 0xdb, 0xff, 0xdb, 0xff,
- 0xff, 0xe3, 0x7b, 0xf9, 0xfb, 0xff, 0x8f, 0xfb,
- 0xf8, 0xff, 0xff, 0xef, 0xdf, 0xf3, 0xd7, 0xdf,
- 0xa3, 0x5b, 0xc4, 0xfb, 0xef,
- 0x7f, 0xe0, 0xfd, 0xfb, 0xfb, 0xff, 0xfb, 0xeb,
- 0xff, 0x8c, 0xeb, 0xf0, 0xd3, 0xff, 0xd7, 0xff,
- 0xf7, 0xbb, 0x7f, 0x8f, 0x7e,
- 0xbf, 0xfb, 0x6c, 0xfb, 0xfb, 0xff, 0xfb, 0xff,
- 0xfb, 0xf3, 0x8b, 0xf3, 0xf4, 0xf7, 0xd7, 0xff,
- 0xf3, 0xff, 0xfe, 0xc2, 0xbf,
- 0xff, 0x87, 0x7f, 0xfa, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0xff, 0xf0, 0x8f, 0xff, 0xf4, 0xff, 0xdf,
- 0xff, 0xfb, 0x8f, 0x7f, 0xc5,
- 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
- 0xf3, 0x87, 0xef, 0xfc, 0xfd, 0xfb, 0xff, 0xff,
- 0xdf, 0xff, 0xfb, 0xab, 0x7f,
- 0x3f, 0xf3, 0xfa, 0xf9, 0x8f, 0x7f, 0xf0, 0xeb,
- 0xfb, 0xec, 0x1f, 0xcf, 0x7e, 0xff, 0x8f, 0x5e,
- 0xd1, 0xbf, 0xff, 0xfe, 0xaa,
- 0xff, 0x80, 0x7d, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0xf7, 0x8f, 0x5f, 0x8c, 0xff, 0xf1, 0xff, 0xff,
- 0xff, 0xff, 0xfa, 0x9f, 0x6f,
- 0xff, 0x9a, 0xfd, 0xfc, 0xff, 0xff, 0xff, 0xff,
- 0x6f, 0xbf, 0xd7, 0x89, 0x7f, 0xf4, 0xff, 0xfe,
- 0xff, 0xff, 0xdf, 0xbf, 0x6f,
- 0xff, 0xfd, 0xff, 0xff, 0xef, 0xff, 0xfb, 0xff,
- 0x2b, 0x73, 0xf0, 0xf3, 0xff, 0xff, 0xc3, 0xff,
- 0xff, 0xff, 0x8b, 0x62, 0xfd,
- 0xff, 0xef, 0xff, 0xff, 0xfb, 0x0f, 0x8b, 0x8e,
- 0xf0, 0xdc, 0xf7, 0xff, 0xff, 0xff, 0xfb, 0xae,
- 0x43, 0xa9, 0x73, 0xf9, 0xfb,
- 0x7f, 0xf9, 0xff, 0xff, 0xfd, 0xff, 0xf9, 0xff,
- 0xfb, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xf3, 0xfe,
- 0xf3, 0xff, 0xff, 0xff, 0xff,
- 0xbf, 0x87, 0xf8, 0xf8, 0xf9, 0x7f, 0xf9, 0xff,
- 0xff, 0x7f, 0x8f, 0x8f, 0xf0, 0xf0, 0xf3, 0xff,
- 0xf3, 0xfb, 0xff, 0xff, 0x8f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff,
- 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff,
- 0xfb, 0xef, 0xff, 0xff, 0xff,
- 0xff, 0x7f, 0xff, 0xf7, 0xf9, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfe,
- 0xf3, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xf1, 0xff,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xfe,
- 0xfb, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x7f, 0xff, 0xf1, 0xff, 0x85, 0xff,
- 0xfe, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff,
- 0xf3, 0xde, 0xff, 0xf3, 0xff,
- 0xbf, 0xff, 0x0f, 0x9f, 0xfa, 0x9f, 0xeb, 0xf2,
- 0xe7, 0xff, 0x7b, 0xff, 0x4f, 0x73, 0x31, 0x81,
- 0x5f, 0xf1, 0xfe, 0xff, 0xbf,
- 0xff, 0xaf, 0x7f, 0x94, 0xfb, 0xfe, 0x8f, 0xff,
- 0x00, 0xff, 0xf0, 0xef, 0xef, 0x5f, 0xfb, 0xf5,
- 0x8f, 0x7f, 0x81, 0x5e, 0xf1,
- 0xff, 0xf9, 0xff, 0xef, 0x86, 0x0f, 0x71, 0xf6,
- 0xff, 0x7f, 0x7f, 0x97, 0xcf, 0xfd, 0xbf, 0x5f,
- 0xf9, 0xf1, 0xf3, 0xff, 0xff,
- 0x3f, 0xdb, 0xed, 0x1e, 0xff, 0xf6, 0x95, 0x9a,
- 0x6f, 0x3d, 0xff, 0xf8, 0xfb, 0xdf, 0xf7, 0xfd,
- 0xfb, 0xf7, 0xfd, 0xed, 0xde,
- 0x7f, 0xf0, 0xf7, 0x87, 0x7f, 0x9b, 0xff, 0xec,
- 0x9f, 0xbf, 0x7f, 0xcd, 0x7f, 0xf7, 0x3b, 0xad,
- 0x7e, 0xf8, 0xff, 0xbb, 0x79,
- 0xff, 0xff, 0xe3, 0x7c, 0x01, 0x8d, 0xf5, 0xfb,
- 0xe7, 0xf7, 0xff, 0xff, 0x9e, 0x7d, 0x0f, 0x7f,
- 0xf1, 0xcd, 0xfe, 0xf7, 0xff,
- 0x3f, 0xd7, 0xf4, 0x9a, 0xf7, 0xed, 0xff, 0xf3,
- 0xb7, 0xff, 0xef, 0xff, 0xbd, 0xe7, 0x5f, 0xbd,
- 0xff, 0xef, 0xfe, 0x7f, 0xf1,
- 0x3f, 0xff, 0xe7, 0xff, 0xcf, 0xfa, 0xf8, 0xff,
- 0xff, 0xdf, 0xbf, 0xfe, 0xdf, 0xff, 0xd3, 0x1f,
- 0xfd, 0xef, 0x7f, 0xff, 0xcf,
- 0x7f, 0xff, 0x93, 0xdf, 0xf0, 0xef, 0xf3, 0xd4,
- 0x77, 0x6f, 0xff, 0xff, 0xbf, 0x7f, 0x7d, 0xfd,
- 0x7f, 0x7d, 0xff, 0xff, 0xf7,
- 0xff, 0xf7, 0xdf, 0xfb, 0xbc, 0xef, 0xff, 0xfd,
- 0xff, 0xff, 0xfc, 0x7f, 0xb7, 0xff, 0xfd, 0x5f,
- 0xcf, 0xff, 0xef, 0x7f, 0xfd,
- 0xff, 0xee, 0x87, 0xef, 0x92, 0xf0, 0x7e, 0xe5,
- 0xbf, 0x8f, 0x7f, 0x60, 0xd9, 0xdb, 0x71, 0xb3,
- 0x2d, 0x49, 0x6c, 0x29, 0x7f,
- 0xbf, 0xff, 0xe4, 0x6f, 0xf3, 0xfa, 0x57, 0xfd,
- 0xff, 0xfe, 0xb7, 0x7f, 0xfc, 0xff, 0x73, 0xdf,
- 0xf3, 0x7f, 0xfd, 0xff, 0xbf,
- 0xff, 0xef, 0x8b, 0x7f, 0x8f, 0xff, 0xf2, 0xff,
- 0xff, 0xf7, 0xfb, 0xff, 0xff, 0xdf, 0xed, 0xef,
- 0xf1, 0xf7, 0xfd, 0xdf, 0xf7,
- 0xff, 0xff, 0xff, 0xf7, 0xe7, 0xe6, 0xf1, 0xff,
- 0xdf, 0xfb, 0xe9, 0xfe, 0xbf, 0xff, 0xbf, 0x5f,
- 0xff, 0xbf, 0x0e, 0x75, 0xfa,
- 0xff, 0xff, 0xff, 0x6f, 0xfb, 0xf9, 0xff, 0xff,
- 0xf3, 0xff, 0xfb, 0xbf, 0xef, 0xff, 0xf3, 0x7f,
- 0xff, 0xff, 0xff, 0xfb, 0xff,
- 0xff, 0x38, 0xf8, 0xf7, 0xff, 0xff, 0xdf, 0x9f,
- 0xf7, 0x0b, 0x0f, 0xf5, 0xf5, 0xff, 0xff, 0xff,
- 0xbf, 0xf7, 0xf3, 0x8e, 0x0e,
- 0xbf, 0xe8, 0x6f, 0xef, 0x7f, 0xff, 0xdf, 0xdf,
- 0xef, 0x88, 0xf5, 0x91, 0xfb, 0xff, 0xff, 0xbf,
- 0xfe, 0xbf, 0xa6, 0x81, 0x71,
- 0xff, 0xf0, 0xf8, 0xff, 0x67, 0xef, 0xff, 0xb7,
- 0xf7, 0x8f, 0x2f, 0xd1, 0x41, 0xff, 0xcf, 0x5f,
- 0xfe, 0xff, 0x7b, 0x8f, 0x9f,
- 0xff, 0xf8, 0x6f, 0xef, 0xf7, 0xe7, 0xff, 0xff,
- 0xbf, 0x8f, 0xd1, 0xf1, 0xcf, 0xdf, 0xcf, 0xdf,
- 0xff, 0xff, 0x9f, 0x8f, 0xe1,
- 0xff, 0xe7, 0xff, 0xf7, 0xe7, 0x6f, 0xf7, 0xe7,
- 0xe7, 0x77, 0xef, 0xef, 0x6f, 0xff, 0xff, 0xdf,
- 0xff, 0xdf, 0xdf, 0xff, 0xff,
- 0xff, 0xa7, 0x6f, 0xff, 0xf7, 0xef, 0x97, 0xe7,
- 0xf0, 0xef, 0x7f, 0xaf, 0x4f, 0xff, 0xff, 0xdf,
- 0xbf, 0x5f, 0xe0, 0x7f, 0xef,
- 0x7f, 0xa0, 0xef, 0xff, 0xe7, 0xff, 0xf7, 0xf7,
- 0xff, 0x8b, 0xbf, 0xf8, 0xdf, 0xff, 0xcf, 0x7e,
- 0xff, 0xdf, 0x7f, 0x8e, 0x5f,
- 0xff, 0xff, 0x38, 0xff, 0xf7, 0xff, 0xf7, 0xf7,
- 0xf7, 0xf7, 0x8f, 0xf7, 0xf8, 0xf7, 0xcf, 0xff,
- 0xff, 0xff, 0xfe, 0xcb, 0x3f,
- 0x3f, 0x9f, 0x7f, 0xf8, 0xff, 0xef, 0xff, 0xff,
- 0x8f, 0xff, 0xf0, 0xaf, 0xff, 0xf0, 0xff, 0xdf,
- 0xff, 0xff, 0xae, 0x7f, 0xc1,
- 0x7f, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xef, 0xff,
- 0xf7, 0xbf, 0xbf, 0xd0, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0xff, 0xff, 0x9b, 0xff,
- 0x7f, 0xcf, 0xf8, 0xff, 0x8f, 0x6f, 0xe0, 0xd7,
- 0xf7, 0xf7, 0xff, 0xfe, 0xf0, 0xfe, 0x8f, 0x5e,
- 0xd1, 0xff, 0xdf, 0xdf, 0xbe,
- 0xff, 0x84, 0x7f, 0xf8, 0xff, 0x7f, 0xdf, 0xff,
- 0xff, 0xaf, 0x7f, 0x81, 0x7f, 0xf5, 0xff, 0xff,
- 0xff, 0xff, 0xfa, 0x9f, 0x3f,
- 0xff, 0xd8, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0x0f, 0xff, 0x85, 0x7f, 0xf0, 0xff, 0xfe,
- 0xbf, 0xff, 0xdf, 0x6f, 0xbf,
- 0xff, 0xff, 0xff, 0xff, 0xaf, 0xff, 0xf7, 0xdf,
- 0xf7, 0x47, 0xf4, 0xff, 0xef, 0xff, 0xdf, 0x7f,
- 0xff, 0xbf, 0xcf, 0x5a, 0xf1,
- 0xff, 0xbf, 0xbf, 0xff, 0xff, 0x3f, 0x8f, 0xc0,
- 0xf3, 0xd1, 0xff, 0xfb, 0xef, 0xff, 0xdf, 0xbe,
- 0x0f, 0x25, 0xe9, 0xd1, 0xff,
- 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xf7,
- 0x2f, 0xaf, 0xf3, 0xfb, 0xef, 0xff, 0xff, 0xfe,
- 0xff, 0xff, 0xcf, 0xbf, 0xfb,
- 0xbf, 0x87, 0xf8, 0xf8, 0xdf, 0x7f, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0x8f, 0xe0, 0xf0, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0x8f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xeb, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xfe,
- 0xfb, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xdf, 0xf7, 0xff, 0xff, 0xcf, 0xff,
- 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xfe,
- 0xcf, 0xff, 0x7b, 0xfd, 0xff,
- 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xff, 0xbf, 0xff,
- 0xfb, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xef, 0xff,
- 0xfb, 0xbe, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0xff, 0xf0, 0xd4, 0xbf, 0xf0,
- 0xbf, 0xff, 0xff, 0xff, 0x93, 0x2f, 0xfd, 0xad,
- 0xf7, 0x75, 0xff, 0xff, 0xfe,
- 0xbf, 0x7f, 0xff, 0x9a, 0xff, 0xf4, 0x0f, 0xff,
- 0x00, 0xde, 0xf0, 0xf3, 0xf9, 0xbf, 0x7d, 0xff,
- 0x8f, 0x7f, 0x81, 0x0f, 0xd1,
- 0xff, 0xfb, 0xdf, 0xee, 0x8b, 0x0b, 0x78, 0xf0,
- 0xff, 0xfa, 0x7f, 0xbf, 0xff, 0xd5, 0x8f, 0x8f,
- 0xe1, 0xf7, 0xfb, 0xfb, 0xff,
- 0x7f, 0xb7, 0x99, 0xef, 0xdf, 0xf4, 0xff, 0xff,
- 0xe4, 0xf4, 0x5d, 0xf6, 0xef, 0x9f, 0xef, 0xf7,
- 0x3b, 0x3f, 0xdf, 0xbf, 0xec,
- 0xff, 0xec, 0xf7, 0xb9, 0x6b, 0xbc, 0xfb, 0xf7,
- 0xef, 0xff, 0x7e, 0xfd, 0x7e, 0xbb, 0xdf, 0x85,
- 0xfe, 0xf7, 0xff, 0x7b, 0x7f,
- 0xff, 0xff, 0xa7, 0xee, 0xe7, 0x5f, 0xe0, 0xf0,
- 0xff, 0xff, 0xff, 0x5f, 0xe6, 0x6f, 0x81, 0x8d,
- 0xd5, 0xf7, 0xbf, 0xef, 0xb6,
- 0xff, 0xd7, 0xf4, 0xee, 0xb7, 0x7c, 0xff, 0xd7,
- 0xaf, 0x7f, 0xed, 0x9f, 0xe5, 0xbf, 0xf7, 0x7d,
- 0xfb, 0xb7, 0xad, 0xd7, 0xfd,
- 0xbf, 0xff, 0xff, 0xc7, 0x8b, 0xff, 0xf0, 0xf6,
- 0xff, 0xfd, 0xfb, 0xff, 0xdf, 0xbe, 0x0f, 0x7f,
- 0xd5, 0xf7, 0xff, 0xf2, 0xfe,
- 0xff, 0xff, 0xc5, 0xff, 0xf0, 0x7c, 0xff, 0xad,
- 0x7f, 0x7f, 0xef, 0xff, 0xcf, 0x4f, 0xf1, 0xf5,
- 0x7b, 0xdd, 0xff, 0xdf, 0xff,
- 0xff, 0x77, 0xef, 0xff, 0xd8, 0xbf, 0xf7, 0xf3,
- 0x5f, 0xfb, 0xf9, 0x7f, 0xe7, 0xff, 0xd7, 0x7f,
- 0xad, 0xff, 0xfb, 0xfb, 0xf3,
- 0xff, 0xcc, 0x95, 0x8f, 0xd8, 0xf3, 0xfc, 0xbc,
- 0xdc, 0xdf, 0xbb, 0x44, 0x8b, 0xcb, 0x87, 0xb1,
- 0xb7, 0xa7, 0x97, 0xee, 0xf3,
- 0xff, 0x7f, 0xb4, 0xbf, 0xff, 0xc7, 0x7f, 0xcb,
- 0xfd, 0xbf, 0x7f, 0x7f, 0x74, 0xe7, 0xdf, 0xf5,
- 0xbb, 0xcf, 0xed, 0xfe, 0xfd,
- 0xff, 0x3f, 0xfb, 0x77, 0xcc, 0xbb, 0xf0, 0xfb,
- 0xff, 0xef, 0xbe, 0xff, 0xcf, 0xff, 0x85, 0x3f,
- 0xb5, 0xff, 0xf7, 0x37, 0x7f,
- 0x3f, 0xf7, 0xbf, 0xcf, 0x9f, 0xd7, 0xf7, 0xef,
- 0xff, 0x78, 0xe7, 0xff, 0xff, 0xff, 0x1f, 0x7f,
- 0x65, 0xbf, 0xbf, 0xff, 0xe7,
- 0xff, 0xff, 0xff, 0xff, 0xdb, 0xf7, 0xdf, 0xff,
- 0x77, 0x7f, 0xff, 0xff, 0xbf, 0xbf, 0xde, 0x77,
- 0xdd, 0xff, 0xff, 0xfe, 0xff,
- 0xbf, 0x68, 0xf8, 0xff, 0xf7, 0xff, 0xcf, 0xcf,
- 0xf3, 0x17, 0x3f, 0xd5, 0xdd, 0xf7, 0xff, 0xff,
- 0xcf, 0xdf, 0x73, 0x95, 0x3f,
- 0xff, 0xac, 0x6f, 0xef, 0x77, 0xdf, 0xff, 0xf7,
- 0xbb, 0x85, 0xdd, 0xe1, 0xf7, 0xfb, 0x7b, 0xdf,
- 0xfe, 0xff, 0xb7, 0x9f, 0x79,
- 0xff, 0xd8, 0xac, 0xfb, 0x47, 0xaf, 0xeb, 0xf7,
- 0xff, 0xaf, 0x2e, 0x70, 0xd9, 0xf7, 0xfb, 0xdf,
- 0xea, 0xfb, 0xfb, 0x1b, 0x5f,
- 0xff, 0xf8, 0x6f, 0xaf, 0xd7, 0xb7, 0xeb, 0xff,
- 0xe7, 0xaf, 0x7c, 0x70, 0xfb, 0xdf, 0xff, 0x7b,
- 0xfb, 0xff, 0xda, 0x9f, 0xf9,
- 0xff, 0x95, 0xbb, 0xfd, 0xc7, 0xcf, 0xfb, 0x83,
- 0xef, 0xf3, 0xbf, 0xcf, 0x47, 0xf7, 0xe7, 0x1f,
- 0xd7, 0x8b, 0x6f, 0x33, 0xbe,
- 0xff, 0xc7, 0x6f, 0xfd, 0x97, 0x2f, 0xeb, 0xb7,
- 0xdc, 0x77, 0xd7, 0x1f, 0x67, 0xf7, 0xe7, 0x9e,
- 0xe7, 0xdb, 0x34, 0xdb, 0xfb,
- 0x7f, 0xa8, 0xef, 0xff, 0xe7, 0xef, 0xff, 0xf7,
- 0xff, 0x8b, 0xbf, 0xd8, 0xef, 0xff, 0xe7, 0xdf,
- 0xf7, 0xfb, 0xf7, 0x9f, 0x66,
- 0xff, 0xfb, 0x6c, 0xff, 0xb7, 0x9f, 0xcf, 0xcb,
- 0xbb, 0x93, 0xaf, 0xff, 0xa8, 0xff, 0xc7, 0x3f,
- 0xa7, 0xcf, 0xfe, 0xe3, 0x3f,
- 0x3f, 0xdf, 0x7b, 0xfa, 0xff, 0xff, 0xff, 0xf7,
- 0x8f, 0x3f, 0xd0, 0xd3, 0x7f, 0xfc, 0xff, 0x8e,
- 0xff, 0xf3, 0x8f, 0x4e, 0xe4,
- 0x7f, 0xb8, 0xff, 0xff, 0xff, 0xef, 0x8f, 0xdf,
- 0xf3, 0xbb, 0x3f, 0xe0, 0xf3, 0xff, 0xff, 0xef,
- 0x8f, 0xd7, 0xf3, 0xab, 0xef,
- 0x7f, 0x8f, 0xf8, 0xfb, 0x8f, 0x6f, 0xa0, 0xff,
- 0xff, 0xdc, 0xff, 0x5f, 0xfc, 0xf3, 0x8f, 0x6e,
- 0xb1, 0xf7, 0xf7, 0xf7, 0x3e,
- 0xff, 0x90, 0x7b, 0xf8, 0xff, 0x7f, 0xdf, 0xff,
- 0xfb, 0x9f, 0x7f, 0xa0, 0xf3, 0xf1, 0xff, 0xff,
- 0xdf, 0xff, 0xdb, 0xbf, 0x3f,
- 0xff, 0xdc, 0xfb, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x77, 0xaf, 0xff, 0xad, 0xf3, 0xf8, 0xff, 0xfe,
- 0xef, 0xff, 0xff, 0x6f, 0xbf,
- 0xff, 0xff, 0xcf, 0xff, 0xa3, 0xff, 0xaf, 0xcf,
- 0x93, 0xc3, 0x74, 0xef, 0xdf, 0xff, 0xab, 0x2f,
- 0xe7, 0xc7, 0xf3, 0x73, 0x79,
- 0xff, 0xff, 0xcf, 0xff, 0xc3, 0x7f, 0x83, 0xe4,
- 0xd3, 0xbc, 0x7b, 0xdb, 0xdf, 0x7f, 0x8b, 0x8e,
- 0x83, 0x01, 0x51, 0xd5, 0x7b,
- 0xff, 0xfb, 0xdf, 0xff, 0xc3, 0xef, 0xb3, 0xff,
- 0xb7, 0xff, 0xfe, 0xbf, 0xdf, 0xff, 0x8b, 0x6e,
- 0xf3, 0xfb, 0xb7, 0x1f, 0xfe,
- 0xbf, 0x82, 0xc8, 0xf8, 0xd3, 0x7f, 0xf3, 0xfb,
- 0xff, 0xef, 0x87, 0x87, 0xd0, 0x70, 0x8b, 0xff,
- 0xf3, 0xff, 0xef, 0xef, 0x87,
- 0xff, 0xff, 0xff, 0xff, 0x47, 0xff, 0xf3, 0xff,
- 0x7f, 0xff, 0xff, 0xff, 0xdf, 0x7f, 0xcb, 0xef,
- 0xf2, 0xf7, 0xff, 0xff, 0xff,
- 0xff, 0xf7, 0xef, 0xf2, 0xf7, 0xff, 0xf7, 0xff,
- 0xff, 0xff, 0xf7, 0xef, 0xdf, 0xf7, 0xca, 0x7f,
- 0xf3, 0xf7, 0xef, 0xff, 0xf6,
- 0xff, 0xfa, 0xfb, 0xff, 0xe7, 0xff, 0xf7, 0xff,
- 0xff, 0xef, 0xff, 0xf7, 0x57, 0x7f, 0xca, 0xef,
- 0xf3, 0xff, 0xff, 0xef, 0xef,
- 0xff, 0xf6, 0xeb, 0xfa, 0xf7, 0xff, 0xf7, 0x8f,
- 0xff, 0xe3, 0xf7, 0xef, 0xd7, 0xf7, 0xcb, 0x7f,
- 0xf3, 0x8f, 0x6c, 0xf2, 0xe7,
- 0xff, 0xff, 0x2f, 0xff, 0xf1, 0x9d, 0x9e, 0xf4,
- 0xff, 0xff, 0xff, 0xef, 0x0f, 0xff, 0xf1, 0x09,
- 0x3f, 0xf9, 0xbf, 0xf7, 0xfb,
- 0xff, 0xef, 0x7f, 0xf6, 0xfb, 0xf5, 0x0f, 0xdf,
- 0x00, 0xff, 0xd0, 0xbf, 0xc0, 0xbf, 0xf9, 0xff,
- 0x8f, 0x7f, 0x81, 0x6f, 0xe1,
- 0xff, 0xff, 0x9e, 0xaf, 0xf7, 0x0f, 0x18, 0xd9,
- 0xbf, 0x6f, 0x37, 0xef, 0x8f, 0xff, 0x9e, 0x06,
- 0x75, 0xf7, 0xf6, 0xff, 0xef,
- 0x7f, 0xf7, 0xcf, 0xbb, 0xfb, 0x6d, 0xfb, 0xef,
- 0x7d, 0xe9, 0xff, 0xff, 0xbf, 0xc2, 0xf7, 0x6f,
- 0xff, 0xdc, 0xff, 0xf3, 0xfa,
- 0x7f, 0x6f, 0xf7, 0xf9, 0xff, 0x6d, 0xfe, 0x9c,
- 0xbf, 0xbf, 0x7d, 0xe2, 0x7f, 0x77, 0x9f, 0xcd,
- 0xb7, 0xb5, 0xff, 0xff, 0x7f,
- 0x7f, 0xff, 0x87, 0xae, 0x86, 0xdf, 0xc0, 0xfd,
- 0xfb, 0xfa, 0xff, 0xff, 0x8e, 0x6d, 0xd5, 0x3d,
- 0xf1, 0xff, 0xfe, 0xef, 0xff,
- 0xff, 0x3f, 0xd2, 0xa4, 0xfe, 0xd9, 0xf7, 0xfe,
- 0xdf, 0xff, 0xcb, 0xff, 0xdd, 0x7e, 0xbb, 0xdd,
- 0x5f, 0xf7, 0xbf, 0xff, 0xed,
- 0xff, 0xfe, 0xf5, 0xff, 0xb7, 0xf6, 0xb4, 0xae,
- 0xfe, 0xef, 0xf7, 0xff, 0xff, 0x8f, 0x07, 0x7b,
- 0xfb, 0xff, 0x7f, 0xff, 0xf7,
- 0xff, 0x7b, 0xa3, 0xbf, 0xe3, 0xff, 0xff, 0xf7,
- 0xf7, 0xfd, 0xdf, 0xff, 0x8f, 0x7f, 0x9b, 0xdf,
- 0xfb, 0xef, 0xfe, 0xff, 0x3f,
- 0xff, 0x6f, 0xff, 0x7f, 0xb3, 0x7f, 0xdf, 0xbd,
- 0x78, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xef, 0xff,
- 0xdf, 0xee, 0x9d, 0xfd, 0xef,
- 0xff, 0xf8, 0x05, 0x8e, 0xb0, 0x58, 0xf7, 0xfc,
- 0xa4, 0x85, 0xdd, 0xbc, 0x0b, 0x05, 0x61, 0xf8,
- 0xb7, 0xff, 0xeb, 0xef, 0x7f,
- 0xbf, 0xff, 0xc7, 0xbb, 0xd8, 0x6f, 0x79, 0xde,
- 0xff, 0xff, 0xcf, 0xff, 0xba, 0xaf, 0xd9, 0x7b,
- 0xfd, 0xff, 0xf5, 0xdf, 0xbf,
- 0xff, 0xff, 0xaf, 0x7f, 0x88, 0x7f, 0xf0, 0xea,
- 0xfe, 0x7f, 0xf2, 0xff, 0xdf, 0xd7, 0x4f, 0x7f,
- 0xe3, 0xde, 0xff, 0xff, 0xf7,
- 0xff, 0x7d, 0x6f, 0x5f, 0xab, 0xff, 0x7a, 0xb6,
- 0xbf, 0x78, 0xdd, 0x7f, 0xde, 0xef, 0x4b, 0x9b,
- 0xeb, 0x7f, 0x76, 0x9f, 0xac,
- 0xff, 0xcf, 0xff, 0xff, 0xb7, 0x7f, 0xae, 0xef,
- 0xdb, 0xef, 0xff, 0xf7, 0xff, 0xfb, 0xe7, 0xfe,
- 0xbf, 0x7e, 0xfb, 0xf7, 0xfb,
- 0xff, 0xff, 0xff, 0xff, 0xcf, 0xbf, 0xff, 0xff,
- 0xf3, 0xff, 0xff, 0xff, 0xff, 0xef, 0xd7, 0xff,
- 0xe9, 0xef, 0xf2, 0xfe, 0xff,
- 0xff, 0xff, 0xff, 0xef, 0xff, 0x8d, 0xaf, 0xf2,
- 0x71, 0xff, 0xfe, 0xff, 0xff, 0x7f, 0xff, 0xcf,
- 0x0f, 0x75, 0xf1, 0xff, 0xff,
- 0x3f, 0x78, 0xbc, 0xfb, 0xfe, 0xff, 0xff, 0xbf,
- 0xf3, 0x0f, 0x3f, 0xc9, 0xe9, 0x7f, 0xf7, 0xdf,
- 0xff, 0xff, 0x57, 0x82, 0x2e,
- 0xff, 0xf8, 0x7f, 0xfb, 0x7a, 0xfb, 0xff, 0xff,
- 0xeb, 0x87, 0x9b, 0xf1, 0xe5, 0x7f, 0x75, 0x7f,
- 0xfe, 0xff, 0xbe, 0x39, 0x79,
- 0xff, 0xcd, 0xbf, 0xfd, 0x7e, 0xff, 0xfb, 0xf4,
- 0xf7, 0xed, 0x6f, 0xf3, 0x6b, 0xf7, 0xd7, 0xbf,
- 0xfe, 0xfd, 0xf7, 0x8f, 0xef,
- 0xff, 0xf8, 0x7a, 0xff, 0xfa, 0xf0, 0xff, 0xff,
- 0xe6, 0x8f, 0x9b, 0xf1, 0xad, 0xbf, 0xf7, 0xfd,
- 0xbf, 0xfd, 0xef, 0x8f, 0x3f,
- 0xbf, 0xff, 0xad, 0xfb, 0xf4, 0xbf, 0xf3, 0x90,
- 0xdd, 0xf0, 0xfa, 0xcf, 0xe7, 0xf2, 0xf7, 0x7f,
- 0xff, 0xad, 0xff, 0xf5, 0xdf,
- 0xff, 0xcb, 0x7b, 0xfa, 0xd2, 0x7f, 0xc7, 0xf3,
- 0xa9, 0xf7, 0xe7, 0x8b, 0xe7, 0xf1, 0xf7, 0x3f,
- 0x8f, 0x7f, 0xb0, 0xdf, 0xfd,
- 0x7f, 0xf8, 0xff, 0xfb, 0xf2, 0xff, 0xd2, 0xe3,
- 0xdf, 0x87, 0xd3, 0xf0, 0xed, 0xff, 0xf7, 0x7f,
- 0xff, 0xef, 0x77, 0xaa, 0x7f,
- 0xbf, 0xea, 0xfc, 0xfb, 0xb3, 0xbf, 0xb3, 0xff,
- 0xd8, 0x93, 0xab, 0xf1, 0xac, 0xff, 0xf7, 0x3f,
- 0xaf, 0xef, 0xed, 0xc7, 0xad,
- 0xff, 0xd6, 0xff, 0xfd, 0xff, 0xdf, 0xff, 0xf4,
- 0x8f, 0xbf, 0xb1, 0xed, 0xf5, 0xfb, 0xff, 0xef,
- 0xff, 0xf5, 0x8f, 0xdf, 0xf1,
- 0xff, 0xf8, 0xfe, 0xfb, 0xff, 0xdf, 0x9f, 0xf8,
- 0xf0, 0xef, 0xff, 0xd0, 0xfd, 0xf7, 0xff, 0xef,
- 0xaf, 0xf5, 0xf7, 0xce, 0x7f,
- 0x7f, 0x83, 0x7d, 0xfa, 0x8f, 0x5f, 0xd0, 0xcb,
- 0xe9, 0xbb, 0x76, 0x9f, 0x7b, 0xf7, 0x8f, 0x6e,
- 0xb1, 0xd5, 0xf7, 0x5f, 0xc6,
- 0xff, 0xa3, 0x7f, 0xfc, 0xff, 0x7f, 0xff, 0xff,
- 0xdf, 0x9f, 0x7f, 0xa8, 0x77, 0xf5, 0xff, 0xfe,
- 0xff, 0xff, 0xfe, 0x7f, 0x2d,
- 0xff, 0x96, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff,
- 0x37, 0x6f, 0xfd, 0xaf, 0x77, 0xf8, 0xff, 0xff,
- 0xef, 0xff, 0xff, 0xff, 0x4b,
- 0xff, 0x72, 0xaf, 0xff, 0xe5, 0xdf, 0x99, 0xfc,
- 0x10, 0x63, 0xf0, 0xef, 0xef, 0x7f, 0x8b, 0xef,
- 0xaf, 0xe7, 0xf5, 0xf7, 0x7d,
- 0xff, 0xef, 0x8f, 0xff, 0xa1, 0x4f, 0x81, 0xe7,
- 0xb0, 0xfa, 0xfe, 0xd7, 0xcf, 0xff, 0xca, 0xcf,
- 0x0b, 0x85, 0x71, 0xfa, 0xff,
- 0xff, 0xdd, 0xef, 0xff, 0xa4, 0xdf, 0xb1, 0xdc,
- 0xd3, 0xff, 0xf8, 0xff, 0xcf, 0x7f, 0xcb, 0x7f,
- 0xff, 0xf5, 0xff, 0xbf, 0xfd,
- 0xbf, 0x82, 0xc8, 0xf8, 0xe1, 0x7f, 0xf0, 0xdf,
- 0xff, 0xef, 0x87, 0x87, 0xc0, 0xf0, 0xca, 0x2f,
- 0xfb, 0xff, 0xef, 0xee, 0x97,
- 0xff, 0xff, 0x8f, 0xfa, 0xa5, 0xdf, 0xd1, 0xf7,
- 0x7f, 0xff, 0xff, 0xff, 0xff, 0x77, 0xdb, 0xef,
- 0xff, 0xf5, 0xfd, 0xff, 0xff,
- 0xff, 0xf6, 0x8b, 0xf2, 0x94, 0xff, 0xf1, 0xf7,
- 0xff, 0xff, 0xf7, 0xef, 0xd7, 0xf7, 0xdf, 0xee,
- 0xfb, 0xff, 0xef, 0xff, 0xf7,
- 0xff, 0xf3, 0xcb, 0xff, 0xe6, 0xff, 0xf1, 0xef,
- 0xff, 0xef, 0xff, 0xe7, 0xd7, 0x7f, 0xdb, 0x7e,
- 0xfd, 0xf7, 0xff, 0xef, 0xef,
- 0xff, 0xfe, 0xcf, 0xff, 0xc4, 0xff, 0xf2, 0x9f,
- 0xff, 0xe0, 0xf7, 0xff, 0xdf, 0xff, 0xdf, 0x7f,
- 0xdb, 0xac, 0xef, 0xf1, 0xf7,
- 0x7f, 0xef, 0x0f, 0x5f, 0xb4, 0x8f, 0xff, 0xf6,
- 0xfd, 0xff, 0x6f, 0xff, 0x8f, 0xff, 0xe9, 0x8d,
- 0x7f, 0xf1, 0xd1, 0xf7, 0xfe,
- 0xff, 0xe7, 0x7f, 0x87, 0xfd, 0xe7, 0x8f, 0x9b,
- 0x00, 0xff, 0xb0, 0x7d, 0xfd, 0xcf, 0xfb, 0xfd,
- 0x8f, 0x7f, 0x81, 0x6d, 0xd1,
- 0xff, 0xbc, 0xed, 0xff, 0x86, 0x6e, 0x10, 0xf1,
- 0xf4, 0x5f, 0x7f, 0xfe, 0x9f, 0x37, 0xc3, 0x8f,
- 0xf7, 0xe5, 0xfb, 0xff, 0xff,
- 0x7f, 0xfe, 0xff, 0xfd, 0x97, 0xff, 0xfb, 0xff,
- 0x3f, 0xff, 0xf9, 0xc3, 0x1f, 0xf8, 0xff, 0xb5,
- 0x5f, 0xef, 0xdc, 0xff, 0xbe,
- 0xff, 0xcb, 0xe7, 0xfd, 0x69, 0xe7, 0xfc, 0xb6,
- 0xef, 0x9a, 0x77, 0xb6, 0x67, 0xdf, 0xef, 0xf7,
- 0xfe, 0xdf, 0xff, 0xf5, 0x7f,
- 0xff, 0xf7, 0x97, 0xbe, 0xf4, 0xff, 0xf1, 0xba,
- 0xfe, 0xff, 0x97, 0x7f, 0xbf, 0x77, 0x55, 0xdf,
- 0xd9, 0xf1, 0xff, 0xdf, 0xff,
- 0xbf, 0xbf, 0x72, 0xf2, 0xdd, 0xff, 0xe4, 0xff,
- 0x7f, 0xef, 0xff, 0xf7, 0xfe, 0xfb, 0xb9, 0xff,
- 0xff, 0xf5, 0xff, 0xfb, 0x96,
- 0xff, 0x7f, 0xf7, 0xef, 0x83, 0xf7, 0xf7, 0xff,
- 0xdf, 0xff, 0xf7, 0xfd, 0xd5, 0x9f, 0x0f, 0x7f,
- 0xf0, 0xfb, 0xae, 0xff, 0xec,
- 0xff, 0x7b, 0x85, 0xf7, 0xf3, 0xef, 0xff, 0xf7,
- 0xff, 0xed, 0xff, 0xe7, 0x8f, 0x7f, 0xc7, 0x97,
- 0x3f, 0xfc, 0xff, 0xf7, 0xde,
- 0xff, 0xfd, 0x8b, 0xff, 0xf7, 0x1f, 0xfb, 0xff,
- 0x2f, 0xfb, 0xf7, 0xff, 0xbf, 0xff, 0xff, 0x6f,
- 0xf7, 0xf9, 0xe7, 0xff, 0x33,
- 0xff, 0x9e, 0xe7, 0x8b, 0xf0, 0x50, 0xf1, 0xde,
- 0xff, 0x9f, 0x1b, 0x28, 0x1b, 0x8d, 0xb4, 0xe1,
- 0xf5, 0xf3, 0xfe, 0xef, 0xfa,
- 0xff, 0x7f, 0xf6, 0xff, 0xfe, 0x07, 0xec, 0xfb,
- 0x7f, 0xff, 0xfd, 0xff, 0xd6, 0x8f, 0xff, 0xf9,
- 0xff, 0x37, 0x7f, 0xfb, 0xdd,
- 0xff, 0xff, 0xff, 0x63, 0xef, 0xdf, 0xfa, 0xf1,
- 0xff, 0xfc, 0xfe, 0xdf, 0xfb, 0xff, 0x8f, 0x7f,
- 0xf9, 0xeb, 0xef, 0xfd, 0xff,
- 0x7f, 0x7f, 0xfb, 0xe7, 0x9f, 0x9b, 0xe5, 0xcf,
- 0xfd, 0xf7, 0xcf, 0xff, 0xf3, 0xbf, 0x5f, 0x5d,
- 0x67, 0x9f, 0xdf, 0x7f, 0xf9,
- 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xf5, 0xdf,
- 0x5f, 0xfb, 0xfb, 0xbf, 0xcf, 0xdf, 0xfb, 0x7f,
- 0xb7, 0xff, 0xfb, 0xff, 0xf7,
- 0x3f, 0x78, 0xfc, 0xf3, 0xff, 0xff, 0xdf, 0xbf,
- 0xf3, 0x05, 0x3f, 0xc1, 0xf1, 0xff, 0xf7, 0xef,
- 0xef, 0xff, 0xfb, 0x97, 0x1f,
- 0xff, 0xd8, 0x7f, 0xfb, 0x7b, 0xfb, 0xf7, 0xbf,
- 0xbb, 0x8e, 0xd3, 0xe1, 0xff, 0xfd, 0xf7, 0xed,
- 0xfe, 0x8b, 0x5e, 0x0f, 0x69,
- 0xbf, 0xf8, 0xfc, 0xfb, 0x7b, 0xff, 0xdf, 0xed,
- 0xf7, 0x8f, 0xbf, 0xce, 0xfe, 0xff, 0xf3, 0xff,
- 0xf6, 0xff, 0xfe, 0x8f, 0x0f,
- 0xff, 0xfc, 0x7d, 0xff, 0xff, 0xfd, 0xf3, 0xff,
- 0xbf, 0x8f, 0xe3, 0xf0, 0xfe, 0xff, 0xfb, 0xff,
- 0xff, 0xff, 0xae, 0x0f, 0x5d,
- 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xd1,
- 0xfd, 0xf1, 0xd3, 0xdd, 0xfd, 0xf1, 0xfb, 0xff,
- 0xfb, 0xfd, 0xff, 0xfd, 0xf6,
- 0xff, 0xff, 0x7f, 0xfe, 0xfd, 0xff, 0x87, 0xff,
- 0xcc, 0xf3, 0xdf, 0xcb, 0xff, 0xfb, 0xfb, 0xff,
- 0x8b, 0x7f, 0xfa, 0xff, 0xff,
- 0x7f, 0xf8, 0xfe, 0xff, 0xef, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0xff, 0xe8, 0xff, 0xff, 0xf9, 0xff,
- 0xfb, 0xaf, 0x7f, 0x8f, 0x7e,
- 0xbf, 0xfb, 0x78, 0xff, 0xff, 0xff, 0xd7, 0xd3,
- 0xfd, 0xc3, 0x95, 0xc5, 0xf8, 0xff, 0xfb, 0xff,
- 0xfb, 0xff, 0xfc, 0xf2, 0x8f,
- 0xff, 0x8b, 0x7b, 0xff, 0xff, 0xdf, 0xff, 0xfd,
- 0x8f, 0xef, 0xf4, 0xb7, 0xff, 0xfe, 0xff, 0xfe,
- 0xff, 0xff, 0x8f, 0x6f, 0xf4,
- 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xdf, 0xdf, 0xfd,
- 0xf1, 0xb3, 0xff, 0xd8, 0xff, 0xfd, 0xff, 0xff,
- 0xff, 0xfd, 0xf5, 0x87, 0x7f,
- 0x3f, 0xef, 0xff, 0xff, 0x8f, 0x5f, 0xf0, 0xff,
- 0xf1, 0xef, 0x39, 0xc7, 0x7e, 0xf3, 0x8f, 0x7e,
- 0xf1, 0xbd, 0xed, 0xfa, 0x9a,
- 0xff, 0x98, 0x7f, 0xfa, 0xff, 0x7f, 0xff, 0xff,
- 0xf3, 0x8f, 0x5f, 0x8a, 0xfb, 0xf1, 0xff, 0xff,
- 0xff, 0xff, 0xf7, 0xaf, 0x5f,
- 0xff, 0x86, 0xff, 0xfc, 0xff, 0xff, 0xdf, 0xff,
- 0x7f, 0xbf, 0xcb, 0xbd, 0x77, 0xf2, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0xbf, 0x77,
- 0xff, 0xff, 0xef, 0xff, 0xed, 0xdf, 0xff, 0xdd,
- 0x11, 0x73, 0xfc, 0xfc, 0xef, 0xff, 0xfb, 0xff,
- 0xfd, 0xfd, 0x9d, 0xf3, 0xff,
- 0xff, 0xf9, 0xef, 0xff, 0xf3, 0x0f, 0x83, 0x9e,
- 0xf0, 0xf0, 0xff, 0xed, 0xef, 0xff, 0xe9, 0x8e,
- 0x7b, 0x9d, 0x70, 0xe9, 0xf7,
- 0xff, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf3, 0xf9,
- 0xf7, 0xff, 0xfb, 0xf3, 0xef, 0xfd, 0xeb, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0xf8,
- 0x3f, 0x87, 0xec, 0xf8, 0xe5, 0x7f, 0xfb, 0xff,
- 0xff, 0xff, 0x8f, 0x87, 0xe8, 0xf0, 0xeb, 0xff,
- 0xff, 0xfd, 0xff, 0xff, 0x97,
- 0xff, 0xff, 0xef, 0xff, 0xed, 0xdf, 0xd3, 0xbf,
- 0x7f, 0xfe, 0xff, 0xff, 0xef, 0xff, 0xe3, 0xef,
- 0xff, 0xff, 0xff, 0xfe, 0xff,
- 0xff, 0x77, 0xef, 0xfa, 0xe7, 0xff, 0xfb, 0xff,
- 0xff, 0xff, 0xef, 0xef, 0xef, 0xf7, 0xea, 0xfe,
- 0xf3, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xf7, 0xeb, 0xf3, 0xef, 0xff, 0xf3, 0xff,
- 0xf1, 0x7f, 0xff, 0xe7, 0xe7, 0xf7, 0xea, 0xee,
- 0xf7, 0xff, 0xf1, 0xff, 0xe7,
- 0xff, 0xfb, 0x6f, 0xf6, 0xe5, 0xff, 0xeb, 0xdf,
- 0xef, 0xff, 0xff, 0xf7, 0xef, 0xff, 0xe3, 0xef,
- 0xff, 0xfe, 0xff, 0xfe, 0xf7,
- 0x7f, 0xff, 0x4f, 0x5f, 0xe1, 0xc7, 0xef, 0xf1,
- 0xfe, 0x7f, 0x7b, 0xff, 0x6f, 0xff, 0x93, 0x0b,
- 0x7f, 0xf1, 0xfa, 0xdf, 0xff,
- 0xff, 0xfb, 0x7f, 0xdf, 0xf7, 0xef, 0x8f, 0xff,
- 0x00, 0xef, 0xf0, 0xdf, 0x7f, 0xef, 0xff, 0xfb,
- 0x8f, 0x7f, 0x81, 0x6f, 0xd1,
- 0xff, 0xde, 0xff, 0xef, 0xb9, 0x49, 0x74, 0xf3,
- 0xef, 0x7b, 0x7f, 0xff, 0xeb, 0xf7, 0x85, 0x67,
- 0xf1, 0xf0, 0xe1, 0xff, 0xf7,
- 0x3f, 0xab, 0xff, 0xc4, 0xbb, 0xff, 0x8c, 0x9d,
- 0x7e, 0x3a, 0xb5, 0xbb, 0xe3, 0xfb, 0xf3, 0xcd,
- 0xe3, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xdc, 0xf7, 0xf8, 0x77, 0x8f, 0xf7, 0xfe,
- 0x9f, 0x97, 0x7a, 0xf2, 0x7f, 0xfb, 0x8f, 0x1f,
- 0x7d, 0xfd, 0xef, 0xb1, 0x7d,
- 0xff, 0xef, 0xa6, 0xef, 0x98, 0x9d, 0xf0, 0xf4,
- 0xf4, 0xff, 0xff, 0x7f, 0x8f, 0x7f, 0x89, 0x7f,
- 0xe7, 0xff, 0xff, 0xf7, 0xfb,
- 0xbf, 0xa7, 0xb7, 0xdf, 0xba, 0xfd, 0xfe, 0xeb,
- 0xff, 0xff, 0xc4, 0xef, 0x8f, 0x7c, 0xf7, 0x8f,
- 0x7f, 0xf9, 0xfb, 0xff, 0xfb,
- 0xff, 0xff, 0xff, 0xeb, 0x87, 0xfd, 0xf4, 0xf7,
- 0x6f, 0xff, 0xbf, 0xff, 0xff, 0xef, 0xef, 0xdf,
- 0xff, 0xff, 0xff, 0xf7, 0xff,
- 0xff, 0xf7, 0x85, 0xdb, 0xf2, 0xbf, 0xd7, 0xff,
- 0xff, 0xfd, 0xff, 0xff, 0x8f, 0x7f, 0xf1, 0xaf,
- 0x7d, 0xff, 0xf7, 0xeb, 0xff,
- 0xbf, 0xfd, 0x8f, 0xff, 0xfa, 0x3f, 0xff, 0xf6,
- 0xb7, 0xff, 0xfe, 0xfb, 0x8f, 0x7f, 0xff, 0xff,
- 0xf3, 0xee, 0xbf, 0x7f, 0xff,
- 0xff, 0x67, 0xc6, 0xaf, 0xc3, 0x74, 0xf7, 0xfe,
- 0xee, 0x8a, 0x37, 0x6e, 0xec, 0x87, 0x71, 0x91,
- 0x13, 0x7d, 0xec, 0x87, 0xff,
- 0xbf, 0x7b, 0xf0, 0xef, 0xfb, 0x3f, 0xb7, 0xfc,
- 0xff, 0xff, 0x97, 0x7d, 0xe8, 0xef, 0x9d, 0x77,
- 0xfd, 0xfb, 0xff, 0xfb, 0xbf,
- 0xff, 0xff, 0xde, 0x77, 0xcd, 0xff, 0xf1, 0xfb,
- 0xff, 0xff, 0xf9, 0xe3, 0xff, 0xff, 0xef, 0xff,
- 0xff, 0xfc, 0xcf, 0xff, 0xf3,
- 0x7f, 0xff, 0xfe, 0x77, 0xaf, 0xf7, 0xf8, 0xef,
- 0xff, 0x76, 0xfa, 0xff, 0x99, 0x6d, 0x9f, 0x6f,
- 0xf1, 0xbf, 0x7f, 0x7f, 0xfc,
- 0xff, 0xff, 0xef, 0xbf, 0xeb, 0xfa, 0xdd, 0xef,
- 0xbc, 0xfd, 0xfd, 0xdf, 0xff, 0xf7, 0xff, 0xff,
- 0xd1, 0xfe, 0xff, 0xfb, 0xff,
- 0x3f, 0x70, 0xf8, 0xff, 0xf5, 0xff, 0xff, 0x9f,
- 0xf3, 0x09, 0x1f, 0xe1, 0xf3, 0xfd, 0xfd, 0xff,
- 0xef, 0xff, 0xf7, 0x8e, 0x1e,
- 0xff, 0xf8, 0x7f, 0xff, 0x77, 0xff, 0xff, 0x9b,
- 0x8f, 0x8e, 0xfb, 0xf1, 0xef, 0xe5, 0xfd, 0xef,
- 0xfe, 0x9f, 0x16, 0x03, 0x61,
- 0xbf, 0xf8, 0xfa, 0xfd, 0x73, 0xff, 0xff, 0xf7,
- 0xf7, 0x8d, 0x9f, 0xe1, 0xf1, 0xff, 0xef, 0xff,
- 0xfc, 0xff, 0xff, 0x8f, 0x0f,
- 0xff, 0xf8, 0x7f, 0xff, 0xf7, 0xf7, 0xfd, 0xff,
- 0x9f, 0x8f, 0xe1, 0xf1, 0xef, 0xff, 0xff, 0xff,
- 0xfd, 0xff, 0x8e, 0x0f, 0x7d,
- 0xff, 0xf7, 0xf9, 0xfe, 0xf3, 0x7f, 0xff, 0xf7,
- 0xf7, 0xf3, 0xfd, 0xef, 0xff, 0xf9, 0xed, 0xff,
- 0xff, 0xef, 0xff, 0xf7, 0xff,
- 0xff, 0xf7, 0x7e, 0xfe, 0xf7, 0xff, 0x8b, 0xf7,
- 0xfc, 0xeb, 0xeb, 0xed, 0xeb, 0xf9, 0xfd, 0xff,
- 0x8f, 0x7f, 0xf2, 0xfe, 0xed,
- 0x7f, 0xf8, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xf7,
- 0xf7, 0x8d, 0xff, 0xe8, 0xff, 0xfd, 0xef, 0xfe,
- 0xfd, 0xdf, 0xf6, 0x8f, 0x6f,
- 0xbf, 0xff, 0x78, 0xff, 0xf7, 0xff, 0xfb, 0xff,
- 0xff, 0xe3, 0x9f, 0xe5, 0xea, 0xf5, 0xfd, 0xff,
- 0xed, 0xef, 0xff, 0xf7, 0x8f,
- 0xff, 0x07, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xf7,
- 0x8f, 0xff, 0xf3, 0x93, 0xff, 0xff, 0xff, 0xef,
- 0xff, 0xf7, 0x8f, 0x7f, 0xf3,
- 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xf7, 0x8b, 0xff, 0xe8, 0xfb, 0xff, 0xff, 0xef,
- 0xef, 0xf7, 0xf5, 0x8e, 0x7f,
- 0x3f, 0xec, 0xf9, 0xfc, 0x8f, 0x7f, 0xf0, 0xef,
- 0xef, 0xff, 0x1d, 0xed, 0x7e, 0xfd, 0x8f, 0x6e,
- 0xf1, 0xd7, 0xf7, 0xde, 0x8c,
- 0xff, 0x80, 0x7f, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0xfb, 0x8f, 0x6f, 0x90, 0xff, 0xf3, 0xff, 0xff,
- 0xff, 0xff, 0xfe, 0x8f, 0x7f,
- 0xff, 0x87, 0xfb, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0x9f, 0xff, 0x93, 0x7f, 0xf2, 0xff, 0xfe,
- 0xef, 0xff, 0xff, 0x9f, 0x69,
- 0xff, 0xfb, 0xef, 0xff, 0xf6, 0xff, 0xff, 0xff,
- 0x1f, 0x73, 0xfe, 0xf6, 0xff, 0xff, 0xff, 0xef,
- 0xef, 0xe7, 0x97, 0x77, 0xf7,
- 0xff, 0xff, 0xff, 0xff, 0xe7, 0x1f, 0x86, 0x95,
- 0xf0, 0xf6, 0xf7, 0xff, 0xff, 0xff, 0xfe, 0x8f,
- 0x6d, 0x93, 0x71, 0xf8, 0xfd,
- 0xff, 0xfe, 0xef, 0xfd, 0xf2, 0xff, 0xf6, 0xff,
- 0x6f, 0xef, 0xf7, 0xfd, 0xff, 0xff, 0xfd, 0xff,
- 0xfd, 0xff, 0xef, 0xff, 0xf5,
- 0x3f, 0x82, 0xf8, 0xf8, 0xe6, 0x7f, 0xf2, 0xff,
- 0xff, 0xff, 0x87, 0x87, 0xf0, 0xf0, 0xfc, 0xef,
- 0xfd, 0xf7, 0xef, 0xee, 0x87,
- 0xff, 0xff, 0xef, 0xff, 0xe7, 0xff, 0xf6, 0xf7,
- 0x7f, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef,
- 0xff, 0xf7, 0xff, 0xff, 0xff,
- 0xff, 0xf7, 0xff, 0xf2, 0xe6, 0xff, 0xf5, 0xf7,
- 0xff, 0xff, 0xff, 0xe7, 0xff, 0xf7, 0xff, 0xfe,
- 0xff, 0xf7, 0xef, 0xff, 0xf7,
- 0xff, 0xfa, 0xeb, 0xff, 0xe3, 0xff, 0xf5, 0xff,
- 0xff, 0xff, 0xf7, 0xef, 0xf7, 0xff, 0xfd, 0xee,
- 0xfd, 0xff, 0xff, 0xef, 0xef,
- 0xff, 0xf6, 0xfb, 0x7a, 0xe7, 0xff, 0x91, 0xef,
- 0xff, 0xe2, 0xff, 0xf7, 0xf7, 0xf7, 0xfd, 0xff,
- 0xfd, 0xef, 0xeb, 0xf5, 0xe7,
- 0xff, 0xff, 0x8f, 0xbe, 0xf1, 0x93, 0xfd, 0xf1,
- 0xff, 0xff, 0xff, 0xff, 0x2e, 0x2f, 0x59, 0x8f,
- 0x6f, 0xf9, 0xf7, 0xff, 0xfa,
- 0xff, 0x4f, 0xbf, 0xc4, 0xfb, 0xf5, 0x0f, 0xff,
- 0x00, 0xff, 0xd0, 0x7f, 0x70, 0xaf, 0x7f, 0xff,
- 0x8f, 0x7f, 0x81, 0x7f, 0xb1,
- 0xff, 0xff, 0xda, 0xff, 0x2f, 0x4f, 0x7e, 0xf9,
- 0xfb, 0xff, 0x5f, 0xef, 0xff, 0xff, 0x99, 0x29,
- 0x71, 0xf1, 0xed, 0xff, 0xff,
- 0x3f, 0xb7, 0xef, 0xdf, 0xff, 0xf9, 0xfe, 0xfd,
- 0xff, 0xff, 0xb7, 0x9f, 0xff, 0xab, 0x73, 0xfd,
- 0xad, 0x3c, 0x6b, 0xff, 0xfa,
- 0xff, 0xe8, 0xf7, 0xbf, 0x6f, 0x8f, 0xff, 0xfe,
- 0xff, 0x87, 0x7f, 0xe0, 0x7f, 0xbf, 0x5f, 0x93,
- 0x7e, 0xe4, 0xf6, 0x97, 0x7b,
- 0xff, 0xdf, 0x27, 0xaf, 0xa7, 0xff, 0xf4, 0xf6,
- 0xff, 0xff, 0xff, 0x5f, 0xdf, 0xfb, 0x87, 0x1f,
- 0x70, 0xf3, 0xfe, 0x7f, 0xfb,
- 0xbf, 0xb7, 0x61, 0xb5, 0xfc, 0xff, 0xf7, 0xff,
- 0xbf, 0xff, 0xa2, 0xff, 0xd8, 0xa1, 0x77, 0xdf,
- 0xe6, 0xff, 0xff, 0x7e, 0xc4,
- 0xff, 0xff, 0xf6, 0xd7, 0x97, 0xdb, 0xe8, 0xff,
- 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xb9, 0x3b,
- 0xf8, 0xff, 0xef, 0xe7, 0xbe,
- 0xff, 0xff, 0x86, 0xbf, 0xe2, 0xad, 0xff, 0xff,
- 0xff, 0xff, 0x9f, 0xff, 0x8f, 0x3f, 0x63, 0xcf,
- 0x7b, 0xfe, 0xff, 0xfd, 0xfe,
- 0xff, 0xff, 0xdf, 0xff, 0xba, 0x7f, 0xf7, 0xee,
- 0x17, 0xf7, 0xee, 0xef, 0x97, 0x7f, 0xf7, 0xff,
- 0xff, 0xfd, 0x9e, 0x77, 0xf3,
- 0xff, 0xfb, 0xc3, 0x8f, 0xc1, 0x70, 0x71, 0xff,
- 0xf7, 0x9f, 0x77, 0x7e, 0xb6, 0x4f, 0xb9, 0x01,
- 0x1f, 0x1b, 0x7a, 0x9a, 0x7e,
- 0xbf, 0xff, 0xf0, 0x9f, 0xef, 0x79, 0x3f, 0xf6,
- 0xff, 0xfd, 0x9d, 0x7b, 0xf2, 0xff, 0xc9, 0xf3,
- 0xff, 0x7d, 0xfb, 0xfd, 0xbf,
- 0xff, 0xfd, 0xbf, 0x77, 0x8f, 0xff, 0xf1, 0xf7,
- 0xff, 0xff, 0xff, 0xfd, 0xbb, 0x7f, 0xbf, 0x6f,
- 0xf3, 0xfe, 0xff, 0xe7, 0xbf,
- 0x7f, 0xff, 0xff, 0x5f, 0xaf, 0xf1, 0xfc, 0xf7,
- 0xff, 0x77, 0xfe, 0xff, 0xdf, 0xff, 0xdf, 0xff,
- 0xe3, 0x9e, 0x7f, 0x7a, 0xe3,
- 0xff, 0xff, 0x6f, 0xff, 0xaf, 0xfc, 0xff, 0xff,
- 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xf3, 0xfb,
- 0xf7, 0xff, 0xf9, 0xfe, 0xff,
- 0x3f, 0x70, 0xf8, 0xff, 0xf7, 0xff, 0xff, 0xff,
- 0xff, 0x0f, 0x0f, 0xf1, 0xf1, 0xff, 0xf7, 0xff,
- 0xef, 0xff, 0xf7, 0x8c, 0x1e,
- 0xff, 0xf8, 0x7f, 0xff, 0x7f, 0xf7, 0xff, 0x8f,
- 0x8f, 0x88, 0xf1, 0xf1, 0xef, 0xff, 0xf7, 0xff,
- 0xee, 0x97, 0x1e, 0x01, 0x61,
- 0xbf, 0xf0, 0xfa, 0xfd, 0x75, 0xff, 0xf5, 0xff,
- 0xff, 0x8f, 0x9f, 0xe1, 0xf1, 0xff, 0xf7, 0xef,
- 0xfe, 0xff, 0xff, 0x8f, 0x1f,
- 0xff, 0xfa, 0x7f, 0xff, 0xfd, 0xff, 0xfd, 0xff,
- 0x9f, 0x9f, 0xf9, 0xf9, 0xff, 0xef, 0xf7, 0xff,
- 0xff, 0xff, 0x9e, 0x0f, 0x75,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
- 0xff, 0xf7, 0xf7, 0xff, 0xef, 0xf7, 0xe7, 0xef,
- 0xef, 0xef, 0xff, 0xff, 0xef,
- 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x8f, 0xff,
- 0xf8, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xe7, 0xef,
- 0x9f, 0x6f, 0xf0, 0xff, 0xff,
- 0x7f, 0xf8, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0x8f,
- 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xff, 0xf7, 0xef,
- 0xf7, 0xff, 0xff, 0x9d, 0x7e,
- 0xbf, 0xff, 0x78, 0xff, 0xfd, 0xff, 0xfd, 0xf7,
- 0xff, 0xf7, 0x8f, 0xf7, 0xf0, 0xf7, 0xf7, 0xff,
- 0xf7, 0xef, 0xfe, 0xe7, 0x9f,
- 0xff, 0x8f, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0xff, 0xf8, 0x8f, 0xff, 0xf8, 0xff, 0xef,
- 0xff, 0xff, 0x8e, 0x6f, 0xe1,
- 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xf7, 0x87, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff,
- 0xef, 0xef, 0xff, 0x9f, 0x7f,
- 0x3f, 0xff, 0xf8, 0xff, 0x8f, 0x7f, 0xf0, 0x9f,
- 0xf7, 0xfb, 0x07, 0xe7, 0x78, 0xf7, 0x8f, 0x7e,
- 0xf1, 0x9f, 0x7f, 0xff, 0x9e,
- 0xff, 0x80, 0x7f, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0xf7, 0x8f, 0x6f, 0x80, 0xff, 0xf1, 0xff, 0xff,
- 0xef, 0xff, 0xfe, 0x9f, 0x7f,
- 0xff, 0x88, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0x9f, 0xef, 0x81, 0x7f, 0xf0, 0xff, 0xfe,
- 0xff, 0xff, 0xef, 0x9f, 0x7f,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x97, 0x77, 0xf8, 0xff, 0xef, 0xff, 0xf7, 0xff,
- 0xef, 0xef, 0x8f, 0x76, 0xf1,
- 0xff, 0xff, 0xff, 0xff, 0xf7, 0x0f, 0xf7, 0x88,
- 0xf7, 0xf0, 0xff, 0xff, 0xef, 0xff, 0xef, 0x8e,
- 0x07, 0x99, 0x61, 0xe1, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf7,
- 0xff, 0xff, 0xf7, 0xf7, 0xef, 0xff, 0xe7, 0xee,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xbf, 0x87, 0xf8, 0xf8, 0xff, 0x7f, 0xf7, 0xff,
- 0xff, 0xff, 0x8f, 0x8f, 0xe0, 0xf0, 0xef, 0xff,
- 0xf7, 0xff, 0xff, 0xff, 0x8f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff,
- 0x7f, 0xff, 0xff, 0xff, 0xef, 0xff, 0xe7, 0xff,
- 0xf6, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xf7, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xef, 0xff,
- 0xf7, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0x6f, 0xff, 0xe7, 0xff,
- 0xf7, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xf7, 0xff,
- 0xff, 0xf7, 0xff, 0xff, 0xef, 0xff, 0xef, 0xff,
- 0x97, 0xee, 0xf9, 0xf7, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0x80, 0x88, 0xff, 0xf8,
- 0xff, 0xff, 0xf7, 0xff, 0x0f, 0x1f, 0x79, 0x9b,
- 0x7f, 0xf0, 0xfe, 0xff, 0xff,
- 0xff, 0x4f, 0x7b, 0xf7, 0xf7, 0xf8, 0x0f, 0xff,
- 0x00, 0xff, 0xd0, 0x4f, 0x75, 0x8c, 0x79, 0xff,
- 0x8f, 0x7f, 0x81, 0x7e, 0xb1,
- 0xff, 0xf7, 0xff, 0xfe, 0x8f, 0x7f, 0x70, 0xf0,
- 0xff, 0xf7, 0x7f, 0xff, 0xf7, 0xff, 0x84, 0x0e,
- 0x73, 0xff, 0xf7, 0xff, 0xff,
- 0x3f, 0xbd, 0xfd, 0xfb, 0xf7, 0xe8, 0xff, 0xff,
- 0x78, 0xf0, 0x3f, 0xbf, 0xe3, 0x9b, 0x6f, 0xff,
- 0x97, 0x1f, 0x7f, 0xcf, 0xfe,
- 0xff, 0xf8, 0xf7, 0xff, 0x8f, 0x80, 0xff, 0xf8,
- 0xff, 0x8f, 0x78, 0xf0, 0x7f, 0x9f, 0x7f, 0x9b,
- 0x7f, 0xf1, 0xff, 0x97, 0x7f,
- 0xff, 0xff, 0x07, 0xff, 0x87, 0x7f, 0xf0, 0xf8,
- 0xff, 0x7f, 0xfb, 0x7f, 0xee, 0xfb, 0x99, 0x19,
- 0x73, 0xef, 0xf7, 0xef, 0xff,
- 0xbf, 0x87, 0x04, 0xfc, 0xff, 0x08, 0xf7, 0xff,
- 0x7b, 0x7f, 0x8e, 0x8f, 0xf9, 0x98, 0x6f, 0xf3,
- 0xff, 0xef, 0xff, 0xff, 0xdf,
- 0xff, 0xff, 0x73, 0xff, 0xf7, 0x9f, 0xf8, 0xfb,
- 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x3d,
- 0x61, 0xff, 0xef, 0xff, 0xff,
- 0xff, 0x7f, 0x07, 0xff, 0xf8, 0x78, 0xff, 0xee,
- 0xfb, 0xff, 0xff, 0xff, 0x87, 0x1f, 0x71, 0xe3,
- 0xff, 0xfb, 0xff, 0xff, 0xff,
- 0xff, 0x77, 0x8b, 0x7f, 0xf8, 0x7f, 0xff, 0xff,
- 0x07, 0xe7, 0xfa, 0x77, 0x8f, 0x7f, 0xff, 0xef,
- 0xf1, 0xef, 0x9f, 0x77, 0xf9,
- 0xff, 0xf8, 0x73, 0x8f, 0xf8, 0x0f, 0x88, 0x88,
- 0xf8, 0x98, 0x77, 0x78, 0x8f, 0x6f, 0x87, 0x7b,
- 0xf7, 0xff, 0xef, 0x87, 0x6f,
- 0xbf, 0x7f, 0xf0, 0xff, 0x8f, 0x7f, 0xff, 0xff,
- 0x7e, 0xff, 0x9f, 0x7f, 0xf0, 0xff, 0xff, 0xeb,
- 0xef, 0xff, 0xfb, 0xff, 0x9f,
- 0xff, 0xff, 0xff, 0x77, 0xf8, 0x7f, 0xf8, 0xf7,
- 0xff, 0x7f, 0xf7, 0xff, 0x9f, 0x7f, 0x9b, 0x6f,
- 0xf1, 0xfe, 0xff, 0xfe, 0xff,
- 0x7f, 0x7f, 0x8f, 0xff, 0x8f, 0xff, 0x7f, 0x8f,
- 0xff, 0x70, 0xfb, 0x6f, 0xff, 0xff, 0xff, 0xf5,
- 0xf9, 0xff, 0xff, 0xff, 0xf4,
- 0xff, 0x87, 0xff, 0x74, 0xff, 0x7f, 0xff, 0xff,
- 0x7e, 0xff, 0xff, 0x8f, 0xff, 0xf1, 0xff, 0xff,
- 0xe9, 0xff, 0xf7, 0xff, 0xff,
- 0xbf, 0x78, 0xf8, 0x7f, 0xf7, 0xff, 0xff, 0xff,
- 0xf7, 0x07, 0x1f, 0xe1, 0xf1, 0xff, 0xf7, 0xff,
- 0xef, 0xef, 0xff, 0x8e, 0x0f,
- 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87,
- 0x9f, 0x88, 0xf1, 0xe1, 0xff, 0xef, 0xf7, 0xef,
- 0xfe, 0x9f, 0x0f, 0x09, 0x71,
- 0xbf, 0xf0, 0xf8, 0xff, 0x77, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0x8f, 0xf0, 0xf0, 0xff, 0xf7, 0xff,
- 0xfe, 0xf7, 0xff, 0x8e, 0x1f,
- 0x7f, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0x8f, 0xf9, 0xf8, 0xfe, 0xff, 0xe7, 0xf7,
- 0xff, 0xff, 0x96, 0x0f, 0x61,
- 0x7f, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xf7, 0xef, 0xff, 0xf7, 0xe7, 0xef,
- 0xff, 0xe7, 0xff, 0xf7, 0xfe,
- 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0x8f, 0xff,
- 0xf8, 0xef, 0xef, 0xef, 0xff, 0xf7, 0xf7, 0xff,
- 0x9f, 0x67, 0xf0, 0xff, 0xff,
- 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f,
- 0xff, 0x8f, 0xff, 0xe0, 0xf7, 0xff, 0xf7, 0xfe,
- 0xf7, 0xf7, 0xff, 0x8f, 0x6e,
- 0x3f, 0xfb, 0x7c, 0xff, 0xff, 0xff, 0xf7, 0xff,
- 0xff, 0xe7, 0x9f, 0xef, 0xf0, 0xff, 0xe7, 0xef,
- 0xf7, 0xef, 0xf6, 0xf6, 0x87,
- 0xff, 0x07, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0xff, 0xf4, 0x9f, 0xff, 0xfc, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0x7f, 0xf0,
- 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xf7, 0x87, 0xff, 0xe8, 0xff, 0xf7, 0xff, 0xff,
- 0xef, 0xe7, 0xf7, 0x8f, 0x6f,
- 0x3f, 0xff, 0xfc, 0xff, 0x8f, 0x7f, 0xf0, 0xcf,
- 0xef, 0xe8, 0x1b, 0xef, 0x7c, 0xff, 0x8f, 0x7e,
- 0xe1, 0x97, 0x77, 0xff, 0x9e,
- 0xff, 0x80, 0x7f, 0xfc, 0xff, 0x7f, 0xff, 0xff,
- 0xf7, 0x8f, 0x7f, 0x80, 0xff, 0xf1, 0xff, 0xfe,
- 0xef, 0xff, 0xff, 0x9f, 0x7f,
- 0xff, 0x84, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x6f, 0x9f, 0xff, 0x91, 0x7f, 0xf0, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0xff, 0xfb, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff,
- 0x1f, 0x77, 0xf8, 0xf7, 0xef, 0xff, 0xf7, 0xff,
- 0xf7, 0xef, 0x87, 0x67, 0xf1,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x8b, 0x8c,
- 0xf0, 0xf8, 0xf7, 0xff, 0xef, 0xff, 0xe7, 0x9e,
- 0x67, 0x89, 0x77, 0xf1, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff,
- 0xff, 0xef, 0xfb, 0xff, 0xef, 0xff, 0xe7, 0xff,
- 0xf7, 0xf7, 0xff, 0xff, 0xf7,
- 0xbf, 0x87, 0xf8, 0xf8, 0xf7, 0x7f, 0xfb, 0xff,
- 0xff, 0xff, 0x8f, 0x8f, 0xe0, 0xf0, 0xe7, 0xfe,
- 0xf7, 0xff, 0xff, 0xff, 0x8e,
- 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfb, 0xff,
- 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff,
- 0xf7, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xf7, 0xfb, 0xff, 0xfb, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff,
- 0xf7, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x7f, 0xf7, 0xff, 0x8b, 0xff,
- 0xfc, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xee, 0xff, 0xf6, 0xff,
- 0xff, 0xf7, 0x8f, 0xbf, 0xf9, 0x8f, 0xff, 0xf0,
- 0xff, 0xff, 0x7f, 0xff, 0x1f, 0x1f, 0x71, 0x89,
- 0x7f, 0xf1, 0xff, 0xff, 0xff,
- 0xff, 0x4f, 0xb8, 0xc6, 0xfb, 0xfd, 0x0f, 0xff,
- 0x00, 0xff, 0xd0, 0x7f, 0x79, 0x90, 0x7f, 0xf9,
- 0x8f, 0x7f, 0x81, 0x7f, 0x81,
- 0xff, 0xff, 0xcf, 0xff, 0xb0, 0x4f, 0x77, 0xf4,
- 0xff, 0xff, 0x7f, 0xe7, 0xee, 0xff, 0x97, 0x07,
- 0x69, 0xf1, 0xf7, 0xff, 0xff,
- 0x3f, 0xba, 0xff, 0x4d, 0xfe, 0xe5, 0xff, 0xff,
- 0x7f, 0xef, 0xbf, 0x9f, 0xe7, 0x9f, 0x77, 0xe9,
- 0x9f, 0x1f, 0x79, 0xc1, 0xfe,
- 0xff, 0xf8, 0xf7, 0x3f, 0xff, 0x9f, 0xf7, 0xf8,
- 0xff, 0x87, 0x7f, 0xf0, 0x7f, 0x97, 0x7f, 0x89,
- 0x7e, 0xf1, 0xff, 0x9f, 0x7f,
- 0xff, 0xff, 0x37, 0xbf, 0xb3, 0x7f, 0xf2, 0xff,
- 0xff, 0xf7, 0xff, 0x7f, 0x7b, 0xfe, 0x87, 0x1f,
- 0x71, 0xf1, 0xff, 0x7f, 0xfb,
- 0xff, 0xff, 0x70, 0xb7, 0xfe, 0x7b, 0xff, 0xf3,
- 0xbf, 0xf7, 0xff, 0xff, 0xf9, 0x9f, 0x7f, 0xf1,
- 0xff, 0xf7, 0xff, 0xff, 0xfb,
- 0xbf, 0xff, 0xf4, 0xcf, 0x87, 0xd8, 0xf8, 0xf8,
- 0xff, 0xff, 0x8f, 0xff, 0xe9, 0xff, 0x8f, 0x1f,
- 0x71, 0xff, 0xef, 0xff, 0x8d,
- 0xff, 0xff, 0x87, 0xbf, 0xf9, 0x3f, 0xff, 0xf7,
- 0xff, 0xff, 0xff, 0xff, 0x9f, 0x1f, 0x71, 0xf9,
- 0xff, 0x7b, 0xff, 0xfe, 0xff,
- 0xff, 0xff, 0xcb, 0xff, 0xbd, 0x7f, 0xfb, 0xff,
- 0x8f, 0xff, 0xf8, 0x7f, 0x9f, 0x7f, 0xf1, 0xef,
- 0xff, 0xf7, 0x8f, 0x7f, 0xf9,
- 0xff, 0xf8, 0x43, 0x8f, 0xc4, 0x75, 0x7d, 0xff,
- 0xff, 0x97, 0x7f, 0x78, 0x8f, 0x6f, 0x99, 0x17,
- 0x19, 0x71, 0xf9, 0x8f, 0x6f,
- 0xbf, 0x7f, 0xf0, 0x8f, 0xf6, 0x7d, 0x37, 0xff,
- 0xff, 0xff, 0x9f, 0x7f, 0xe0, 0xff, 0xff, 0xef,
- 0xff, 0xf7, 0xfb, 0xff, 0x8f,
- 0xff, 0xff, 0xbf, 0x77, 0x8e, 0xff, 0xf0, 0xff,
- 0xff, 0xf7, 0xf7, 0x7f, 0x97, 0x7f, 0x99, 0x7f,
- 0xf9, 0xfe, 0xff, 0xfe, 0xff,
- 0x7f, 0xff, 0xff, 0xcf, 0xbf, 0xf9, 0xfa, 0xff,
- 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xf7, 0x8f, 0x7f, 0x71, 0xf6,
- 0xff, 0xff, 0xff, 0x7f, 0xb7, 0xfe, 0xfb, 0xff,
- 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
- 0xff, 0xff, 0xf7, 0xff, 0xff,
- 0x3f, 0x78, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x8f,
- 0xff, 0x08, 0x0f, 0xf1, 0xf1, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8e, 0x0e,
- 0xff, 0xf8, 0x7f, 0xff, 0x7f, 0xff, 0xff, 0x8f,
- 0x8f, 0x80, 0xf1, 0xf1, 0xff, 0xff, 0xff, 0xff,
- 0xfe, 0x8f, 0x0e, 0x01, 0x71,
- 0xbf, 0xf8, 0xf8, 0xff, 0x7f, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0x8f, 0xf1, 0xf1, 0xff, 0xff, 0xff,
- 0xfe, 0xff, 0xff, 0x8f, 0x0f,
- 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0x8f, 0xf1, 0xf1, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8e, 0x0f, 0x71,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x8f, 0xff,
- 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0x7f, 0xf0, 0xff, 0xff,
- 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f,
- 0xff, 0x88, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x7e,
- 0xbf, 0xff, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xf7, 0x8f, 0xf7, 0xf0, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xfe, 0xff, 0x8f,
- 0xff, 0x87, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0xff, 0xf8, 0x8f, 0xf7, 0xf8, 0xff, 0xff,
- 0xff, 0xff, 0x8e, 0x7f, 0xf1,
- 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x87, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0x3f, 0xff, 0xf8, 0xff, 0x8f, 0x7f, 0xf0, 0xdf,
- 0xff, 0xf6, 0x07, 0xff, 0x78, 0xff, 0x8f, 0x7e,
- 0xf1, 0x9f, 0x7f, 0xfd, 0x8e,
- 0xff, 0x80, 0x7f, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0xf7, 0x8f, 0x7f, 0x80, 0xff, 0xf1, 0xff, 0xff,
- 0xff, 0xff, 0xfe, 0x8f, 0x7f,
- 0xff, 0x80, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0x8f, 0xff, 0x81, 0x7f, 0xf0, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0x77, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0x6e, 0xf1,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x8f, 0x88,
- 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8e,
- 0x7f, 0x81, 0x7f, 0xf1, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xbf, 0x87, 0xf8, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0x8f, 0xf0, 0xf0, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0x8f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xf7, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x87, 0xff,
- 0xf8, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xfe, 0xfe, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x3f, 0x8f, 0xf0, 0x85, 0xff, 0xf0,
- 0xff, 0xff, 0xff, 0x7f, 0x0d, 0x0f, 0x71, 0x81,
- 0x7e, 0xf1, 0xfe, 0xff, 0xff,
- 0xff, 0x5f, 0x3d, 0xf0, 0xf5, 0xfa, 0x0f, 0xff,
- 0x00, 0xff, 0x80, 0x0f, 0xf1, 0x88, 0x7f, 0xf1,
- 0x8f, 0x7e, 0x81, 0x7e, 0xc1,
- 0xff, 0xff, 0xff, 0xff, 0xba, 0x4f, 0x75, 0xfa,
- 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x8f, 0x0f,
- 0x71, 0xf1, 0xff, 0xff, 0xff,
- 0x3f, 0xbf, 0xff, 0xcf, 0xff, 0xfa, 0xff, 0xfe,
- 0x7f, 0xdf, 0x7f, 0xf4, 0xff, 0x8f, 0x7f, 0xf1,
- 0x8f, 0x0f, 0x71, 0xf1, 0xbe,
- 0xff, 0xf8, 0xf7, 0xbb, 0x7f, 0x85, 0xff, 0xf0,
- 0xff, 0x8f, 0x7f, 0xf0, 0x7f, 0x87, 0x7f, 0x81,
- 0x7e, 0xf1, 0x8f, 0x0f, 0x71,
- 0xff, 0xff, 0x87, 0x8f, 0x8d, 0xfd, 0xf5, 0xff,
- 0xfb, 0xff, 0xff, 0xff, 0xf7, 0xfe, 0x8f, 0x0f,
- 0x71, 0xf1, 0xfe, 0x7f, 0xf7,
- 0xbf, 0x07, 0xc0, 0xbf, 0xf7, 0xfd, 0xff, 0xff,
- 0xbf, 0xff, 0x85, 0x8f, 0xf9, 0x8f, 0x7f, 0xf1,
- 0xff, 0x7f, 0xf6, 0xff, 0x83,
- 0xff, 0xff, 0xf4, 0xff, 0x8f, 0xda, 0xf0, 0xb6,
- 0xdf, 0xfd, 0xf6, 0xff, 0xf9, 0xff, 0x8f, 0x1f,
- 0x71, 0xfd, 0x8f, 0x7b, 0xfd,
- 0xff, 0xff, 0xb7, 0x8f, 0xf0, 0xbd, 0xff, 0xfd,
- 0xf7, 0xff, 0xff, 0xff, 0x8f, 0x0f, 0x71, 0xf1,
- 0xff, 0x7b, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xba, 0x7f, 0xf5, 0xf7,
- 0x0f, 0xf7, 0xf0, 0x7f, 0x87, 0x7f, 0xf1, 0xff,
- 0xff, 0xfe, 0x8f, 0x7f, 0xf1,
- 0xff, 0xf8, 0x47, 0x8f, 0xca, 0x70, 0x7a, 0xff,
- 0xff, 0x8f, 0x7f, 0x70, 0x8f, 0x7f, 0x81, 0x0e,
- 0x01, 0x01, 0x71, 0x81, 0x7f,
- 0xbf, 0x7f, 0xf0, 0x8f, 0xff, 0x70, 0x3f, 0xff,
- 0xfd, 0xfe, 0x8f, 0x7f, 0xf0, 0xff, 0xff, 0xff,
- 0xff, 0xfe, 0xfb, 0xff, 0x8f,
- 0xff, 0xff, 0xbf, 0x7f, 0x85, 0x7f, 0xf0, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0x8f, 0x7f, 0x81, 0x7f,
- 0x81, 0xfe, 0xf1, 0xff, 0xff,
- 0x7f, 0xff, 0xff, 0xcf, 0x87, 0xfa, 0x75, 0xff,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0x7f, 0x70, 0xfe,
- 0xff, 0x87, 0xff, 0x4b, 0xbf, 0x7f, 0xfd, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xfe, 0xff, 0xfe, 0xff,
- 0x3f, 0x78, 0xf8, 0xf7, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0x0f, 0x71, 0xf1, 0xff, 0x7f, 0xff,
- 0xff, 0xff, 0xff, 0x8e, 0x0e,
- 0xff, 0xf8, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0x8f,
- 0x8f, 0x00, 0x71, 0xf1, 0xff, 0xff, 0xff, 0xff,
- 0xfe, 0x8f, 0x0e, 0x01, 0x71,
- 0xbf, 0xf8, 0xf8, 0xff, 0x7f, 0xff, 0x7f, 0xff,
- 0xff, 0x8f, 0x0f, 0x71, 0xf1, 0xff, 0xff, 0xff,
- 0xfe, 0xff, 0xff, 0x8f, 0x0f,
- 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0x0f, 0x71, 0xf1, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8e, 0x0f, 0x71,
- 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x7f, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x7f, 0xff, 0xff, 0x7f, 0x8f, 0xff,
- 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0x7f, 0xf0, 0xff, 0xff,
- 0x7f, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff,
- 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x7e,
- 0xbf, 0xff, 0x78, 0xff, 0xff, 0xff, 0x7f, 0xff,
- 0xff, 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xfe, 0xff, 0x8f,
- 0xff, 0x07, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0xff, 0xf0, 0x8f, 0xff, 0xf0, 0xff, 0xff,
- 0xff, 0xff, 0x8e, 0x7f, 0xf1,
- 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0x3f, 0xff, 0xf8, 0xff, 0x8f, 0x7f, 0xf0, 0x8f,
- 0xff, 0xfc, 0x8f, 0xff, 0xf0, 0xff, 0x8f, 0x7e,
- 0xf1, 0x8f, 0x7f, 0xf3, 0x8e,
- 0xff, 0x80, 0x7f, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0xff, 0x8f, 0x7f, 0x80, 0x7f, 0xf1, 0xff, 0xff,
- 0xff, 0xff, 0xfe, 0x8f, 0x7f,
- 0xff, 0x80, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff,
- 0x7f, 0x8f, 0x7f, 0x81, 0x7f, 0xf0, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0x7f, 0xf1,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0x80,
- 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x8e,
- 0x0f, 0x01, 0x71, 0xf0, 0xff,
- 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xef, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xff, 0xff, 0xff, 0xf7,
- 0xbf, 0x87, 0xf8, 0xf8, 0xff, 0x7f, 0xff, 0xff,
- 0x7f, 0x7f, 0x8f, 0x8f, 0xf0, 0xf0, 0xfe, 0xff,
- 0xff, 0xff, 0xff, 0xfe, 0x8f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7e,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7e,
- 0xff, 0xff, 0x7f, 0xff, 0xff,
- 0xff, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0xff, 0xff,
- 0x7f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f,
- 0x8f, 0xfe, 0xf0, 0xff, 0xff,
- 0xbf, 0xff, 0x0e, 0x8f, 0x70, 0x80, 0xff, 0xf0,
- 0xff, 0xff, 0xff, 0xff, 0x0f, 0x7f, 0xf1, 0x0f,
- 0x7f, 0xf1, 0xfe, 0xff, 0x9f,
- 0xbf, 0x1f, 0xfb, 0x0c, 0xff, 0xf0, 0x8f, 0xff,
- 0x00, 0xff, 0xb0, 0x3f, 0x71, 0x80, 0xff, 0xf1,
- 0x8f, 0x7f, 0x81, 0x7e, 0xc1,
- 0xff, 0xff, 0xff, 0x7f, 0x8f, 0x0f, 0x70, 0xf0,
- 0x8f, 0x7f, 0x70, 0xcf, 0x8f, 0xff, 0x71, 0x0f,
- 0x7e, 0xf1, 0x8f, 0x7f, 0xf1,
- 0x7f, 0xff, 0x7f, 0x0f, 0xff, 0x78, 0x8f, 0x8f,
- 0x70, 0x70, 0x7f, 0xfe, 0xff, 0x8f, 0xff, 0x70,
- 0xff, 0xfe, 0xff, 0xff, 0xbe,
- 0xff, 0xf8, 0xf7, 0x0b, 0xf7, 0x88, 0xf7, 0xf0,
- 0x8f, 0x8f, 0x70, 0xf0, 0x7e, 0x73, 0xff, 0x8f,
- 0x7e, 0xf0, 0xff, 0x8f, 0x7f,
- 0xff, 0x78, 0x77, 0xff, 0x8f, 0x8f, 0xf0, 0xf0,
- 0xff, 0x8f, 0x77, 0x70, 0x77, 0x7f, 0xff, 0x7f,
- 0xff, 0xff, 0xfe, 0x8f, 0x7f,
- 0xff, 0xff, 0x77, 0x8f, 0xff, 0xf0, 0xff, 0xff,
- 0x77, 0x7f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xef, 0x7f, 0xff, 0xbf,
- 0xbf, 0xff, 0x74, 0xff, 0xff, 0x8f, 0xff, 0xfc,
- 0x0f, 0xf3, 0x8c, 0xff, 0xfd, 0xff, 0xff, 0x8f,
- 0x7f, 0xf1, 0x8f, 0x7d, 0x83,
- 0xff, 0x7f, 0x77, 0xff, 0xff, 0xff, 0xff, 0xfb,
- 0xf7, 0x7f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x78, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff,
- 0x0f, 0x8f, 0x70, 0x70, 0xf7, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8e, 0x0f, 0x71,
- 0xff, 0xf8, 0xf7, 0x7f, 0xff, 0x8f, 0x8f, 0x80,
- 0x80, 0x81, 0x70, 0x70, 0x7f, 0xff, 0xff, 0xff,
- 0xff, 0x6f, 0x8f, 0x0f, 0x71,
- 0xbf, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x7b, 0xff, 0x9f, 0xff, 0x70, 0xff, 0xff, 0xff,
- 0xff, 0x7f, 0xff, 0xfe, 0x8f,
- 0xff, 0x87, 0x7f, 0x78, 0xfe, 0xff, 0x9e, 0xff,
- 0xf2, 0x7f, 0xff, 0x0f, 0xff, 0xf0, 0xff, 0xef,
- 0xff, 0x7f, 0xff, 0xff, 0xff,
- 0x7f, 0x7f, 0xff, 0x7f, 0xff, 0xff, 0xfe, 0x8f,
- 0xff, 0x70, 0xff, 0x7f, 0xff, 0xff, 0xdf, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xfe,
- 0xff, 0xff, 0x7f, 0xf7, 0xff, 0xfe, 0xff, 0xff,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x7f, 0x7f, 0x8f, 0x8f, 0xf0, 0xf0,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xaf, 0x0f,
- 0x70, 0xd1, 0xff, 0xf8, 0xfe,
- 0xff, 0xff, 0xff, 0xf7, 0xaf, 0x8f, 0xfa, 0xf0,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x8f, 0x0f,
- 0x79, 0xe1, 0xff, 0xfe, 0xff,
- 0xbf, 0xff, 0xff, 0x7a, 0x8f, 0xff, 0xf0, 0xef,
- 0xff, 0xfb, 0xff, 0xaf, 0xff, 0xfb, 0x8f, 0x7f,
- 0xf1, 0xdf, 0xff, 0xf9, 0xff,
- 0xbf, 0xff, 0xff, 0xf7, 0xff, 0xaf, 0xff, 0xba,
- 0xaf, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xef, 0xdf,
- 0xff, 0xfd, 0xbe, 0xf7, 0xf5,
- 0xff, 0xf8, 0xff, 0xff, 0x8f, 0xff, 0xf0, 0xff,
- 0xff, 0x8f, 0xf7, 0xf0, 0xff, 0xff, 0x8f, 0x3f,
- 0x11, 0xeb, 0xdb, 0xcf, 0x7f,
- 0xbf, 0xf0, 0x8f, 0x87, 0xf0, 0xf0, 0xff, 0xbf,
- 0xff, 0x8f, 0xff, 0xf1, 0x8f, 0x0f, 0x31, 0xf1,
- 0x9f, 0xdf, 0xf9, 0x85, 0x7f,
- 0xbf, 0xff, 0x8f, 0x7f, 0xf0, 0xff, 0xff, 0xff,
- 0xee, 0xff, 0xfb, 0xf7, 0x8f, 0x7f, 0xb1, 0xff,
- 0xff, 0xff, 0xff, 0xdf, 0xfd,
- 0xff, 0xff, 0xff, 0x8f, 0x8f, 0xf0, 0x80, 0xff,
- 0xf0, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x2f, 0x71,
- 0xc1, 0x7f, 0xf1, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0xff, 0xf0, 0xff, 0xbf,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x7f, 0xd1,
- 0x9f, 0xff, 0x7b, 0xb7, 0xff,
- 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xfe, 0x8f, 0xff, 0xf1, 0xff, 0xff,
- 0xff, 0xff, 0xbf, 0xb7, 0xff,
- 0xff, 0xa4, 0xf7, 0x88, 0xff, 0xf0, 0xaf, 0xbf,
- 0xfb, 0xef, 0xff, 0xf7, 0xff, 0x8f, 0x7f, 0xf1,
- 0xff, 0xdd, 0xf7, 0x97, 0x7f,
- 0xff, 0xff, 0xf7, 0xff, 0x8f, 0xff, 0xf0, 0xff,
- 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0xf1, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xf7, 0xaf, 0x0f, 0xa0, 0xf0,
- 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x0f,
- 0x71, 0xb1, 0x37, 0xf7, 0xff,
- 0xff, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff,
- 0xff, 0x8f, 0xff, 0xf0, 0xfe, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x7f,
- 0xbf, 0xff, 0xf8, 0xf7, 0xff, 0xa7, 0xff, 0xf0,
- 0xff, 0xff, 0x8f, 0xfe, 0xf0, 0xff, 0xff, 0x8f,
- 0x7f, 0xf1, 0xff, 0xff, 0xcf,
- 0xff, 0xff, 0xf7, 0x9f, 0xf7, 0xf3, 0xff, 0xff,
- 0xff, 0xff, 0x7f, 0xff, 0xff, 0xbf, 0x7f, 0xf9,
- 0xff, 0xfe, 0xff, 0xff, 0xdf,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f,
- 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xbf, 0xbf,
- 0xff, 0xff, 0xff, 0xaf, 0xff, 0xf0, 0xff, 0xff,
- 0x9f, 0xfe, 0xf1, 0xff, 0xff, 0xcf, 0x7f, 0xf1,
- 0xff, 0xff, 0xdf, 0xff, 0xf1,
- 0xbf, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0xff, 0xf0, 0xbf, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0x6f,
- 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0x7f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xbf,
- 0xff, 0xf8, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xcf, 0xff,
- 0xff, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0x8f, 0xef, 0xe0, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x8f, 0x3f,
- 0xff, 0xdf, 0xf7, 0xff, 0x0f, 0xfe, 0xf0, 0xff,
- 0xff, 0xff, 0xff, 0xef, 0xff, 0xdf, 0x8e, 0x7f,
- 0xf1, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xbf, 0xbf, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x8f, 0xff, 0xf1, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xef, 0xff, 0xbf, 0x7f, 0xe1, 0xff,
- 0xdf, 0xff, 0x7f, 0xff, 0xbf,
- 0xff, 0xa7, 0xff, 0x88, 0xff, 0xf1, 0xfe, 0xff,
- 0xff, 0xff, 0xff, 0x1f, 0xff, 0xf0, 0xcf, 0xb1,
- 0xff, 0xef, 0xff, 0x7f, 0xff,
diff --git a/board/sixnet/sixnet.c b/board/sixnet/sixnet.c
deleted file mode 100644
index a4cb4dcf09..0000000000
--- a/board/sixnet/sixnet.c
+++ /dev/null
@@ -1,603 +0,0 @@
-/*
- * (C) Copyright 2001, 2002
- * Dave Ellis, SIXNET, dge@sixnetio.com.
- * Based on code by:
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * and other contributors to U-Boot. 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 <common.h>
-#include <config.h>
-#include <jffs2/jffs2.h>
-#include <mpc8xx.h>
-#include <net.h> /* for eth_init() */
-#include <rtc.h>
-#include "sixnet.h"
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-# include <status_led.h>
-#endif
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#include <linux/mtd/nand_legacy.h>
-extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE];
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define ORMASK(size) ((-size) & OR_AM_MSK)
-
-static long ram_size(ulong *, long);
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-void show_boot_progress (int status)
-{
-#if defined(CONFIG_STATUS_LED)
-# if defined(STATUS_LED_BOOT)
- if (status == 15) {
- /* ready to transfer to kernel, make sure LED is proper state */
- status_led_set(STATUS_LED_BOOT, CONFIG_BOOT_LED_STATE);
- }
-# endif /* STATUS_LED_BOOT */
-#endif /* CONFIG_STATUS_LED */
-}
-#endif
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- * returns 0 if recognized, -1 if unknown
- */
-
-int checkboard (void)
-{
- puts ("Board: SIXNET SXNI855T\n");
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)
-#error "SXNI855T has no PCMCIA port"
-#endif /* CFG_CMD_PCMCIA */
-
-/* ------------------------------------------------------------------------- */
-
-#define _not_used_ 0xffffffff
-
-/* UPMB table for dual UART. */
-
-/* this table is for 50MHz operation, it should work at all lower speeds */
-const uint duart_table[] =
-{
- /* single read. (offset 0 in upm RAM) */
- 0xfffffc04, 0x0ffffc04, 0x0ff3fc04, 0x0ff3fc04,
- 0x0ff3fc00, 0x0ff3fc04, 0xfffffc04, 0xfffffc05,
-
- /* burst read. (offset 8 in upm RAM) */
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* single write. (offset 18 in upm RAM) */
- 0xfffffc04, 0x0ffffc04, 0x00fffc04, 0x00fffc04,
- 0x00fffc04, 0x00fffc00, 0xfffffc04, 0xfffffc05,
-
- /* burst write. (offset 20 in upm RAM) */
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* refresh. (offset 30 in upm RAM) */
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* exception. (offset 3c in upm RAM) */
- _not_used_, _not_used_, _not_used_, _not_used_,
-};
-
-/* Load FPGA very early in boot sequence, since it must be
- * loaded before the 16C2550 serial channels can be used as
- * console channels.
- *
- * Note: Much of the configuration is not complete. The
- * stack is in DPRAM since SDRAM has not been initialized,
- * so the stack must be kept small. Global variables
- * are still in FLASH, so they cannot be written.
- * Only the FLASH, DPRAM, immap and FPGA can be addressed,
- * the other chip selects may not have been initialized.
- * The clocks have been initialized, so udelay() can be
- * used.
- */
-#define FPGA_DONE 0x0080 /* PA8, input, high when FPGA load complete */
-#define FPGA_PROGRAM_L 0x0040 /* PA9, output, low to reset, high to start */
-#define FPGA_INIT_L 0x0020 /* PA10, input, low indicates not ready */
-#define fpga (*(volatile unsigned char *)(CFG_FPGA_PROG)) /* FPGA port */
-
-int board_postclk_init (void)
-{
-
- /* the data to load to the XCSxxXL FPGA */
- static const unsigned char fpgadata[] = {
-# include "fpgadata.c"
- };
-
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-#define porta (immap->im_ioport.iop_padat)
- const unsigned char* pdata;
-
- /* /INITFPGA and DONEFPGA signals are inputs */
- immap->im_ioport.iop_padir &= ~(FPGA_INIT_L | FPGA_DONE);
-
- /* Force output pin to begin at 0, /PROGRAM asserted (0) resets FPGA */
- porta &= ~FPGA_PROGRAM_L;
-
- /* Set FPGA as an output */
- immap->im_ioport.iop_padir |= FPGA_PROGRAM_L;
-
- /* delay a little to make sure FPGA sees it, really
- * only need less than a microsecond.
- */
- udelay(10);
-
- /* unassert /PROGRAM */
- porta |= FPGA_PROGRAM_L;
-
- /* delay while FPGA does last erase, indicated by
- * /INITFPGA going high. This should happen within a
- * few milliseconds.
- */
- /* ### FIXME - a timeout check would be good, maybe flash
- * the status LED to indicate the error?
- */
- while ((porta & FPGA_INIT_L) == 0)
- ; /* waiting */
-
- /* write program data to FPGA at the programming address
- * so extra /CS1 strobes at end of configuration don't actually
- * write to any registers.
- */
- fpga = 0xff; /* first write is ignored */
- fpga = 0xff; /* fill byte */
- fpga = 0xff; /* fill byte */
- fpga = 0x4f; /* preamble code */
- fpga = 0x80; fpga = 0xaf; fpga = 0x9b; /* length (ignored) */
- fpga = 0x4b; /* field check code */
-
- pdata = fpgadata;
- /* while no error write out each of the 28 byte frames */
- while ((porta & (FPGA_INIT_L | FPGA_DONE)) == FPGA_INIT_L
- && pdata < fpgadata + sizeof(fpgadata)) {
-
- fpga = 0x4f; /* preamble code */
-
- /* 21 bytes of data in a frame */
- fpga = *(pdata++); fpga = *(pdata++);
- fpga = *(pdata++); fpga = *(pdata++);
- fpga = *(pdata++); fpga = *(pdata++);
- fpga = *(pdata++); fpga = *(pdata++);
- fpga = *(pdata++); fpga = *(pdata++);
- fpga = *(pdata++); fpga = *(pdata++);
- fpga = *(pdata++); fpga = *(pdata++);
- fpga = *(pdata++); fpga = *(pdata++);
- fpga = *(pdata++); fpga = *(pdata++);
- fpga = *(pdata++); fpga = *(pdata++);
- fpga = *(pdata++);
-
- fpga = 0x4b; /* field check code */
- fpga = 0xff; /* extended write cycle */
- fpga = 0x4b; /* extended write cycle
- * (actually 0x4b from bitgen.exe)
- */
- fpga = 0xff; /* extended write cycle */
- fpga = 0xff; /* extended write cycle */
- fpga = 0xff; /* extended write cycle */
- }
-
- fpga = 0xff; /* startup byte */
- fpga = 0xff; /* startup byte */
- fpga = 0xff; /* startup byte */
- fpga = 0xff; /* startup byte */
-
-#if 0 /* ### FIXME */
- /* If didn't load all the data or FPGA_DONE is low the load failed.
- * Maybe someday stop here and flash the status LED? The console
- * is not configured, so can't print an error message. Can't write
- * global variables to set a flag (except gd?).
- * For now it must work.
- */
-#endif
-
- /* Now that the FPGA is loaded, set up the Dual UART chip
- * selects. Must be done here since it may be used as the console.
- */
- upmconfig(UPMB, (uint *)duart_table, sizeof(duart_table)/sizeof(uint));
-
- memctl->memc_mbmr = DUART_MBMR;
- memctl->memc_or5 = DUART_OR_VALUE;
- memctl->memc_br5 = DUART_BR5_VALUE;
- memctl->memc_or6 = DUART_OR_VALUE;
- memctl->memc_br6 = DUART_BR6_VALUE;
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* base address for SRAM, assume 32-bit port, valid */
-#define NVRAM_BR_VALUE (CFG_SRAM_BASE | BR_PS_32 | BR_V)
-
-/* up to 64MB - will be adjusted for actual size */
-#define NVRAM_OR_PRELIM (ORMASK(CFG_SRAM_SIZE) \
- | OR_CSNT_SAM | OR_ACS_DIV4 | OR_BI | OR_SCY_5_CLK | OR_EHTR)
-/*
- * Miscellaneous platform dependent initializations after running in RAM.
- */
-
-int misc_init_r (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- char* s;
- char* e;
- int reg;
- bd_t *bd = gd->bd;
-
- memctl->memc_or2 = NVRAM_OR_PRELIM;
- memctl->memc_br2 = NVRAM_BR_VALUE;
-
- /* Is there any SRAM? Is it 16 or 32 bits wide? */
-
- /* First look for 32-bit SRAM */
- bd->bi_sramsize = ram_size((ulong*)CFG_SRAM_BASE, CFG_SRAM_SIZE);
-
- if (bd->bi_sramsize == 0) {
- /* no 32-bit SRAM, but there could be 16-bit SRAM since
- * it would report size 0 when configured for 32-bit bus.
- * Try again with a 16-bit bus.
- */
- memctl->memc_br2 |= BR_PS_16;
- bd->bi_sramsize = ram_size((ulong*)CFG_SRAM_BASE, CFG_SRAM_SIZE);
- }
-
- if (bd->bi_sramsize == 0) {
- memctl->memc_br2 = 0; /* disable select since nothing there */
- }
- else {
- /* adjust or2 for actual size of SRAM */
- memctl->memc_or2 |= ORMASK(bd->bi_sramsize);
- bd->bi_sramstart = CFG_SRAM_BASE;
- printf("SRAM: %lu KB\n", bd->bi_sramsize >> 10);
- }
-
-
- /* set standard MPC8xx clock so kernel will see the time
- * even if it doesn't have a DS1306 clock driver.
- * This helps with experimenting with standard kernels.
- */
- {
- ulong tim;
- struct rtc_time tmp;
-
- rtc_get(&tmp); /* get time from DS1306 RTC */
-
- /* convert to seconds since 1970 */
- tim = mktime(tmp.tm_year, tmp.tm_mon, tmp.tm_mday,
- tmp.tm_hour, tmp.tm_min, tmp.tm_sec);
-
- immap->im_sitk.sitk_rtck = KAPWR_KEY;
- immap->im_sit.sit_rtc = tim;
- }
-
- /* set up ethernet address for SCC ethernet. If eth1addr
- * is present it gets a unique address, otherwise it
- * shares the FEC address.
- */
- s = getenv("eth1addr");
- if (s == NULL)
- s = getenv("ethaddr");
- for (reg=0; reg<6; ++reg) {
- bd->bi_enet1addr[reg] = s ? simple_strtoul(s, &e, 16) : 0;
- if (s)
- s = (*e) ? e+1 : e;
- }
-
- return (0);
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-void nand_init(void)
-{
- unsigned long totlen = nand_probe(CFG_DFLASH_BASE);
-
- printf ("%4lu MB\n", totlen >> 20);
-}
-#endif
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'.
- *
- * The memory size MUST be a power of 2 for this to work.
- *
- * The only memory modified is 8 bytes at offset 0. This is important
- * since for the SRAM this location is reserved for autosizing, so if
- * it is modified and the board is reset before ram_size() completes
- * no damage is done. Normally even the memory at 0 is preserved. The
- * higher SRAM addresses may contain battery backed RAM disk data which
- * must never be corrupted.
- */
-
-static long ram_size(ulong *base, long maxsize)
-{
- volatile long *test_addr;
- volatile ulong *base_addr = base;
- ulong ofs; /* byte offset from base_addr */
- ulong save; /* to make test non-destructive */
- ulong save2; /* to make test non-destructive */
- long ramsize = -1; /* size not determined yet */
-
- save = *base_addr; /* save value at 0 so can restore */
- save2 = *(base_addr+1); /* save value at 4 so can restore */
-
- /* is any SRAM present? */
- *base_addr = 0x5555aaaa;
-
- /* It is important to drive the data bus with different data so
- * it doesn't remember the value and look like RAM that isn't there.
- */
- *(base_addr + 1) = 0xaaaa5555; /* use write to modify data bus */
-
- if (*base_addr != 0x5555aaaa)
- ramsize = 0; /* no RAM present, or defective */
- else {
- *base_addr = 0xaaaa5555;
- *(base_addr + 1) = 0x5555aaaa; /* use write to modify data bus */
- if (*base_addr != 0xaaaa5555)
- ramsize = 0; /* no RAM present, or defective */
- }
-
- /* now size it if any is present */
- for (ofs = 4; ofs < maxsize && ramsize < 0; ofs <<= 1) {
- test_addr = (long*)((long)base_addr + ofs); /* location to test */
-
- *base_addr = ~*test_addr;
- if (*base_addr == *test_addr)
- ramsize = ofs; /* wrapped back to 0, so this is the size */
- }
-
- *base_addr = save; /* restore value at 0 */
- *(base_addr+1) = save2; /* restore value at 4 */
- return (ramsize);
-}
-
-/* ------------------------------------------------------------------------- */
-/* sdram table based on the FADS manual */
-/* for chip MB811171622A-100 */
-
-/* this table is for 50MHz operation, it should work at all lower speeds */
-
-const uint sdram_table[] =
-{
- /* single read. (offset 0 in upm RAM) */
- 0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00,
- 0x1ff77c47,
-
- /* precharge and Mode Register Set initialization (offset 5).
- * This is also entered at offset 6 to do Mode Register Set
- * without the precharge.
- */
- 0x1ff77c34, 0xefeabc34, 0x1fb57c35,
-
- /* burst read. (offset 8 in upm RAM) */
- 0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
- 0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* single write. (offset 18 in upm RAM) */
- /* FADS had 0x1f27fc04, ...
- * but most other boards have 0x1f07fc04, which
- * sets GPL0 from A11MPC to 0 1/4 clock earlier,
- * like the single read.
- * This seems better so I am going with the change.
- */
- 0x1f07fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* burst write. (offset 20 in upm RAM) */
- 0x1f07fc04, 0xeeaebc00, 0x10ad7c00, 0xf0affc00,
- 0xf0affc00, 0xe1bbbc04, 0x1ff77c47, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* refresh. (offset 30 in upm RAM) */
- 0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
- 0xfffffc84, 0xfffffc07, _not_used_, _not_used_,
- _not_used_, _not_used_, _not_used_, _not_used_,
-
- /* exception. (offset 3c in upm RAM) */
- 0x7ffffc07, _not_used_, _not_used_, _not_used_ };
-
-/* ------------------------------------------------------------------------- */
-
-#define SDRAM_MAX_SIZE 0x10000000 /* max 256 MB SDRAM */
-
-/* precharge and set Mode Register */
-#define SDRAM_MCR_PRE (MCR_OP_RUN | MCR_UPM_A | /* select UPM */ \
- MCR_MB_CS3 | /* chip select */ \
- MCR_MLCF(1) | MCR_MAD(5)) /* 1 time at 0x05 */
-
-/* set Mode Register, no precharge */
-#define SDRAM_MCR_MRS (MCR_OP_RUN | MCR_UPM_A | /* select UPM */ \
- MCR_MB_CS3 | /* chip select */ \
- MCR_MLCF(1) | MCR_MAD(6)) /* 1 time at 0x06 */
-
-/* runs refresh loop twice so get 8 refresh cycles */
-#define SDRAM_MCR_REFR (MCR_OP_RUN | MCR_UPM_A | /* select UPM */ \
- MCR_MB_CS3 | /* chip select */ \
- MCR_MLCF(2) | MCR_MAD(0x30)) /* twice at 0x30 */
-
-/* MAMR values work in either mamr or mbmr */
-#define SDRAM_MAMR_BASE /* refresh at 50MHz */ \
- ((195 << MAMR_PTA_SHIFT) | MAMR_PTAE \
- | MAMR_DSA_1_CYCL /* 1 cycle disable */ \
- | MAMR_RLFA_1X /* Read loop 1 time */ \
- | MAMR_WLFA_1X /* Write loop 1 time */ \
- | MAMR_TLFA_4X) /* Timer loop 4 times */
-/* 8 column SDRAM */
-#define SDRAM_MAMR_8COL (SDRAM_MAMR_BASE \
- | MAMR_AMA_TYPE_0 /* Address MUX 0 */ \
- | MAMR_G0CLA_A11) /* GPL0 A11[MPC] */
-
-/* 9 column SDRAM */
-#define SDRAM_MAMR_9COL (SDRAM_MAMR_BASE \
- | MAMR_AMA_TYPE_1 /* Address MUX 1 */ \
- | MAMR_G0CLA_A10) /* GPL0 A10[MPC] */
-
-/* base address 0, 32-bit port, SDRAM UPM, valid */
-#define SDRAM_BR_VALUE (BR_PS_32 | BR_MS_UPMA | BR_V)
-
-/* up to 256MB, SAM, G5LS - will be adjusted for actual size */
-#define SDRAM_OR_PRELIM (ORMASK(SDRAM_MAX_SIZE) | OR_CSNT_SAM | OR_G5LS)
-
-/* This is the Mode Select Register value for the SDRAM.
- * Burst length: 4
- * Burst Type: sequential
- * CAS Latency: 2
- * Write Burst Length: burst
- */
-#define SDRAM_MODE 0x22 /* CAS latency 2, burst length 4 */
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram(int board_type)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- uint size_sdram = 0;
- uint size_sdram9 = 0;
- uint base = 0; /* SDRAM must start at 0 */
- int i;
-
- upmconfig(UPMA, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
-
- /* Configure the refresh (mostly). This needs to be
- * based upon processor clock speed and optimized to provide
- * the highest level of performance.
- *
- * Preliminary prescaler for refresh.
- * This value is selected for four cycles in 31.2 us,
- * which gives 8192 cycles in 64 milliseconds.
- * This may be too fast, but works for any memory.
- * It is adjusted to 4096 cycles in 64 milliseconds if
- * possible once we know what memory we have.
- *
- * We have to be careful changing UPM registers after we
- * ask it to run these commands.
- *
- * PTA - periodic timer period for our design is
- * 50 MHz x 31.2us
- * --------------- = 195
- * 1 x 8 x 1
- *
- * 50MHz clock
- * 31.2us refresh interval
- * SCCR[DFBRG] 0
- * PTP divide by 8
- * 1 chip select
- */
- memctl->memc_mptpr = MPTPR_PTP_DIV8; /* 0x0800 */
- memctl->memc_mamr = SDRAM_MAMR_8COL & (~MAMR_PTAE); /* no refresh yet */
-
- /* The SDRAM Mode Register value is shifted left 2 bits since
- * A30 and A31 don't connect to the SDRAM for 32-bit wide memory.
- */
- memctl->memc_mar = SDRAM_MODE << 2; /* MRS code */
- udelay(200); /* SDRAM needs 200uS before set it up */
-
- /* Now run the precharge/nop/mrs commands. */
- memctl->memc_mcr = SDRAM_MCR_PRE;
- udelay(2);
-
- /* Run 8 refresh cycles (2 sets of 4) */
- memctl->memc_mcr = SDRAM_MCR_REFR; /* run refresh twice */
- udelay(2);
-
- /* some brands want Mode Register set after the refresh
- * cycles. This shouldn't hurt anything for the brands
- * that were happy with the first time we set it.
- */
- memctl->memc_mcr = SDRAM_MCR_MRS;
- udelay(2);
-
- memctl->memc_mamr = SDRAM_MAMR_8COL; /* enable refresh */
- memctl->memc_or3 = SDRAM_OR_PRELIM;
- memctl->memc_br3 = SDRAM_BR_VALUE + base;
-
- /* Some brands need at least 10 DRAM accesses to stabilize.
- * It wont hurt the brands that don't.
- */
- for (i=0; i<10; ++i) {
- volatile ulong *addr = (volatile ulong *)base;
- ulong val;
-
- val = *(addr + i);
- *(addr + i) = val;
- }
-
- /* Check SDRAM memory Size in 8 column mode.
- * For a 9 column memory we will get half the actual size.
- */
- size_sdram = ram_size((ulong *)0, SDRAM_MAX_SIZE);
-
- /* Check SDRAM memory Size in 9 column mode.
- * For an 8 column memory we will see at most 4 megabytes.
- */
- memctl->memc_mamr = SDRAM_MAMR_9COL;
- size_sdram9 = ram_size((ulong *)0, SDRAM_MAX_SIZE);
-
- if (size_sdram < size_sdram9) /* leave configuration at 9 columns */
- size_sdram = size_sdram9;
- else /* go back to 8 columns */
- memctl->memc_mamr = SDRAM_MAMR_8COL;
-
- /* adjust or3 for actual size of SDRAM
- */
- memctl->memc_or3 |= ORMASK(size_sdram);
-
- /* Adjust refresh rate depending on SDRAM type.
- * For types > 128 MBit (32 Mbyte for 2 x16 devices) leave
- * it at the current (fast) rate.
- * For 16, 64 and 128 MBit half the rate will do.
- */
- if (size_sdram <= 32 * 1024 * 1024)
- memctl->memc_mptpr = MPTPR_PTP_DIV16; /* 0x0400 */
-
- return (size_sdram);
-}
diff --git a/board/sixnet/sixnet.h b/board/sixnet/sixnet.h
deleted file mode 100644
index e631874972..0000000000
--- a/board/sixnet/sixnet.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * (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
- */
-
-/*
- * Memory map:
- *
- * ff100000 -> ff13ffff : FPGA CS1
- * ff030000 -> ff03ffff : EXPANSION CS7
- * ff020000 -> ff02ffff : DATA FLASH CS4
- * ff018000 -> ff01ffff : UART B CS6/UPMB
- * ff010000 -> ff017fff : UART A CS5/UPMB
- * ff000000 -> ff00ffff : IMAP internal to the MPC855T
- * f8000000 -> fbffffff : FLASH CS0 up to 64MB
- * f4000000 -> f7ffffff : NVSRAM CS2 up to 64MB
- * 00000000 -> 0fffffff : SDRAM CS3/UPMA up to 256MB
- */
diff --git a/board/sixnet/u-boot.lds b/board/sixnet/u-boot.lds
deleted file mode 100644
index 1513a8517d..0000000000
--- a/board/sixnet/u-boot.lds
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * (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
- */
-
-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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/sl8245/Makefile b/board/sl8245/Makefile
deleted file mode 100644
index d3db1a90e2..0000000000
--- a/board/sl8245/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/sl8245/config.mk b/board/sl8245/config.mk
deleted file mode 100644
index 022512b0dd..0000000000
--- a/board/sl8245/config.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# (C) Copyright 2001 - 2003
-# 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
-#
-
-#
-# SL8245 board
-#
-
-TEXT_BASE = 0xFFF00000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
-PLATFORM_LIBS += $(shell $(CC) -print-libgcc-file-name)
diff --git a/board/sl8245/flash.c b/board/sl8245/flash.c
deleted file mode 100644
index 553dc98226..0000000000
--- a/board/sl8245/flash.c
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
- * (C) Copyright 2001 - 2003
- * 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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-#define FLASH_BANK_SIZE 0x800000
-#define MAIN_SECT_SIZE 0x40000
-#define PARAM_SECT1_SIZE 0x20000
-#define PARAM_SECT23_SIZE 0x8000
-#define PARAM_SECT4_SIZE 0x10000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-static int write_data (flash_info_t *info, ulong dest, ulong *data);
-static void write_via_fpu(vu_long *addr, ulong *data);
-static __inline__ unsigned long get_msr(void);
-static __inline__ void set_msr(unsigned long msr);
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-/*---------------------------------------------------------------------*/
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-#define __align__ __attribute__ ((aligned (8)))
-static __align__ ulong precmd0[2] = { 0x00aa00aa, 0x00aa00aa };
-static __align__ ulong precmd1[2] = { 0x00550055, 0x00550055 };
-static __align__ ulong cmdid[2] = { 0x00900090, 0x00900090 };
-static __align__ ulong cmderase[2] = { 0x00800080, 0x00800080 };
-static __align__ ulong cmdersusp[2] = { 0x00b000b0, 0x00b000b0 };
-static __align__ ulong cmdsecter[2] = { 0x00300030, 0x00300030 };
-static __align__ ulong cmdprog[2] = { 0x00a000a0, 0x00a000a0 };
-static __align__ ulong cmdres[2] = { 0x00f000f0, 0x00f000f0 };
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- vu_long *addr = (vu_long *) (CFG_FLASH_BASE + i * FLASH_BANK_SIZE);
-
- write_via_fpu (&addr[0xaaa], precmd0);
- write_via_fpu (&addr[0x554], precmd1);
- write_via_fpu (&addr[0xaaa], cmdid);
-
- DEBUGF ("Flash bank # %d:\n"
- "\tManuf. ID @ 0x%08lX: 0x%08lX\n"
- "\tDevice ID @ 0x%08lX: 0x%08lX\n",
- i,
- (ulong) (&addr[0]), addr[0],
- (ulong) (&addr[2]), addr[2]);
-
- if ((addr[0] == addr[1]) && (addr[0] == AMD_MANUFACT) &&
- (addr[2] == addr[3]) && (addr[2] == AMD_ID_LV160T)) {
- flash_info[i].flash_id = (FLASH_MAN_AMD & FLASH_VENDMASK) |
- (FLASH_AM160T & FLASH_TYPEMASK);
- } else {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- write_via_fpu (addr, cmdres);
- goto Done;
- }
-
- DEBUGF ("flash_id = 0x%08lX\n", flash_info[i].flash_id);
-
- write_via_fpu (addr, cmdres);
-
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- for (j = 0; j < 32; j++) {
- flash_info[i].start[j] = CFG_FLASH_BASE +
- i * FLASH_BANK_SIZE + j * MAIN_SECT_SIZE;
- }
- flash_info[i].start[32] =
- flash_info[i].start[31] + PARAM_SECT1_SIZE;
- flash_info[i].start[33] =
- flash_info[i].start[32] + PARAM_SECT23_SIZE;
- flash_info[i].start[34] =
- flash_info[i].start[33] + PARAM_SECT23_SIZE;
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE + FLASH_BANK_SIZE
- flash_protect ( FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[1]);
-#else
- flash_protect ( FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-#if CFG_ENV_ADDR >= CFG_FLASH_BASE + FLASH_BANK_SIZE
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[1]);
-#else
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-#endif
-
-Done:
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch ((i = info->flash_id & FLASH_VENDMASK)) {
- case (FLASH_MAN_AMD & FLASH_VENDMASK):
- printf ("Intel: ");
- break;
- default:
- printf ("Unknown Vendor 0x%04x ", i);
- break;
- }
-
- switch ((i = info->flash_id & FLASH_TYPEMASK)) {
- case (FLASH_AM160T & FLASH_TYPEMASK):
- printf ("AM29LV160BT (16Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type 0x%04x\n", i);
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
- Done:
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- DEBUGF ("Erase flash bank %d sect %d ... %d\n",
- info - &flash_info[0], s_first, s_last);
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (FLASH_MAN_AMD & FLASH_VENDMASK)) {
- printf ("Can erase only AMD flash types - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *) (info->start[sect]);
-
- DEBUGF ("Erase sect %d @ 0x%08lX\n", sect, (ulong) addr);
-
- /* Disable interrupts which might cause a timeout
- * here.
- */
- flag = disable_interrupts ();
-
- write_via_fpu (&addr[0xaaa], precmd0);
- write_via_fpu (&addr[0x554], precmd1);
- write_via_fpu (&addr[0xaaa], cmderase);
- write_via_fpu (&addr[0xaaa], precmd0);
- write_via_fpu (&addr[0x554], precmd1);
- write_via_fpu (&addr[0xaaa], cmdsecter);
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((addr[0] & 0x00800080) != 0x00800080) ||
- ((addr[1] & 0x00800080) != 0x00800080)) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- write_via_fpu (addr, cmdersusp);
- write_via_fpu (addr, cmdres);
- return 1;
- }
-
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- write_via_fpu (addr, cmdres);
- }
- }
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-#define FLASH_WIDTH 8 /* flash bus width in bytes */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong wp, cp, msr;
- int l, rc, i;
- ulong data[2];
- ulong *datah = &data[0];
- ulong *datal = &data[1];
-
- DEBUGF ("Flash write_buff: @ 0x%08lx, src 0x%08lx len %ld\n",
- addr, (ulong) src, cnt);
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- msr = get_msr ();
- set_msr (msr | MSR_FP);
-
- wp = (addr & ~(FLASH_WIDTH - 1)); /* get lower aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- *datah = *datal = 0;
-
- for (i = 0, cp = wp; i < l; i++, cp++) {
- if (i >= 4) {
- *datah = (*datah << 8) | ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datal << 8) | (*(uchar *) cp);
- }
- for (; i < FLASH_WIDTH && cnt > 0; ++i) {
- char tmp;
-
- tmp = *src;
-
- src++;
-
- if (i >= 4) {
- *datah = (*datah << 8) | ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datal << 8) | tmp;
-
- --cnt;
- ++cp;
- }
-
- for (; cnt == 0 && i < FLASH_WIDTH; ++i, ++cp) {
- if (i >= 4) {
- *datah = (*datah << 8) | ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datah << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, data)) != 0) {
- set_msr (msr);
- return (rc);
- }
-
- wp += FLASH_WIDTH;
- }
-
- /*
- * handle FLASH_WIDTH aligned part
- */
- while (cnt >= FLASH_WIDTH) {
- *datah = *(ulong *) src;
- *datal = *(ulong *) (src + 4);
- if ((rc = write_data (info, wp, data)) != 0) {
- set_msr (msr);
- return (rc);
- }
- wp += FLASH_WIDTH;
- cnt -= FLASH_WIDTH;
- src += FLASH_WIDTH;
- }
-
- if (cnt == 0) {
- set_msr (msr);
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- *datah = *datal = 0;
- for (i = 0, cp = wp; i < FLASH_WIDTH && cnt > 0; ++i, ++cp) {
- char tmp;
-
- tmp = *src;
-
- src++;
-
- if (i >= 4) {
- *datah = (*datah << 8) | ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datal << 8) | tmp;
-
- --cnt;
- }
-
- for (; i < FLASH_WIDTH; ++i, ++cp) {
- if (i >= 4) {
- *datah = (*datah << 8) | ((*datal & 0xFF000000) >> 24);
- }
-
- *datal = (*datal << 8) | (*(uchar *) cp);
- }
-
- rc = write_data (info, wp, data);
- set_msr (msr);
-
- return (rc);
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, ulong * data)
-{
- vu_long *chip = (vu_long *) (info->start[0]);
- vu_long *addr = (vu_long *) dest;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if (((addr[0] & data[0]) != data[0]) ||
- ((addr[1] & data[1]) != data[1])) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- write_via_fpu (&chip[0xaaa], precmd0);
- write_via_fpu (&chip[0x554], precmd1);
- write_via_fpu (&chip[0xaaa], cmdprog);
- write_via_fpu (addr, data);
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- start = get_timer (0);
-
- while (((addr[0] & 0x00800080) != (data[0] & 0x00800080)) ||
- ((addr[1] & 0x00800080) != (data[1] & 0x00800080))) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- write_via_fpu (chip, cmdres);
- return (1);
- }
- }
-
- write_via_fpu (chip, cmdres);
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void write_via_fpu (vu_long * addr, ulong * data)
-{
- __asm__ __volatile__ ("lfd 1, 0(%0)"::"r" (data));
- __asm__ __volatile__ ("stfd 1, 0(%0)"::"r" (addr));
-}
-
-/*-----------------------------------------------------------------------
- */
-static __inline__ unsigned long get_msr (void)
-{
- unsigned long msr;
-
- __asm__ __volatile__ ("mfmsr %0":"=r" (msr):);
-
- return msr;
-}
-
-static __inline__ void set_msr (unsigned long msr)
-{
- __asm__ __volatile__ ("mtmsr %0"::"r" (msr));
-}
diff --git a/board/sl8245/sl8245.c b/board/sl8245/sl8245.c
deleted file mode 100644
index 593eb4ee80..0000000000
--- a/board/sl8245/sl8245.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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 <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-
-int checkboard (void)
-{
- ulong busfreq = get_bus_freq(0);
- char buf[32];
-
- printf("Board: SL8245, local bus @ %s MHz\n", strmhz(buf, busfreq));
- return 0;
-}
-
-long int initdram (int board_type)
-{
-#ifndef CFG_RAMBOOT
- long size;
- long new_bank0_end;
- long mear1;
- long emear1;
-
- size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
-
- new_bank0_end = size - 1;
- mear1 = mpc824x_mpc107_getreg(MEAR1);
- emear1 = mpc824x_mpc107_getreg(EMEAR1);
- mear1 = (mear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
- emear1 = (emear1 & 0xFFFFFF00) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
- mpc824x_mpc107_setreg(MEAR1, mear1);
- mpc824x_mpc107_setreg(EMEAR1, emear1);
-
- return (size);
-#else
- return CFG_MAX_RAM_SIZE;
-#endif
-}
-
-static struct pci_controller hose;
-
-void pci_init_board(void)
-{
- pci_mpc824x_init(&hose);
-}
diff --git a/board/sl8245/u-boot.lds b/board/sl8245/u-boot.lds
deleted file mode 100644
index acb9ffda3b..0000000000
--- a/board/sl8245/u-boot.lds
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * (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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/smdk2400/Makefile b/board/smdk2400/Makefile
deleted file mode 100644
index 57c76e5b30..0000000000
--- a/board/smdk2400/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := smdk2400.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/smdk2400/config.mk b/board/smdk2400/config.mk
deleted file mode 100644
index 82400bf8ab..0000000000
--- a/board/smdk2400/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-#
-# SAMSUNG board with S3C2400X (ARM920T) CPU
-#
-# see http://www.samsung.com/ for more information on SAMSUNG
-#
-
-#
-# SAMSUNG has 1 bank of 32 MB DRAM
-#
-# 0C00'0000 to 0E00'0000
-#
-# Linux-Kernel is expected to be at 0cf0'0000, entry 0cf0'0000
-# optionally with a ramdisk at 0c80'0000
-#
-# we load ourself to 0CF80000 (must be high enough not to be
-# overwritten by the uncompessing Linux kernel)
-#
-# download area is 0C80'0000
-#
-
-
-TEXT_BASE = 0x0CF80000
diff --git a/board/smdk2400/flash.c b/board/smdk2400/flash.c
deleted file mode 100644
index fd9992d366..0000000000
--- a/board/smdk2400/flash.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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
- */
-
-/* #define DEBUG */
-
-#include <common.h>
-#include <environment.h>
-
-#define FLASH_BANK_SIZE 0x1000000 /* 2 x 8 MB */
-#define MAIN_SECT_SIZE 0x40000 /* 2 x 128 kB */
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-#define CMD_READ_ARRAY 0x00FF00FF
-#define CMD_IDENTIFY 0x00900090
-#define CMD_ERASE_SETUP 0x00200020
-#define CMD_ERASE_CONFIRM 0x00D000D0
-#define CMD_PROGRAM 0x00400040
-#define CMD_RESUME 0x00D000D0
-#define CMD_SUSPEND 0x00B000B0
-#define CMD_STATUS_READ 0x00700070
-#define CMD_STATUS_RESET 0x00500050
-
-#define BIT_BUSY 0x00800080
-#define BIT_ERASE_SUSPEND 0x00400040
-#define BIT_ERASE_ERROR 0x00200020
-#define BIT_PROGRAM_ERROR 0x00100010
-#define BIT_VPP_RANGE_ERROR 0x00080008
-#define BIT_PROGRAM_SUSPEND 0x00040004
-#define BIT_PROTECT_ERROR 0x00020002
-#define BIT_UNDEFINED 0x00010001
-
-#define BIT_SEQUENCE_ERROR 0x00300030
-#define BIT_TIMEOUT 0x80000000
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
- (INTEL_MANUFACT & FLASH_VENDMASK) |
- (INTEL_ID_28F640J3A & FLASH_TYPEMASK);
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = CFG_FLASH_BASE;
- else
- panic ("configured too many flash banks!\n");
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] = flashbase;
-
- /* uniform sector size */
- flashbase += MAIN_SECT_SIZE;
- }
- size += flash_info[i].size;
- }
-
- /*
- * Protect monitor and environment sectors
- */
- flash_protect ( FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
-#ifdef CFG_ENV_ADDR_REDUND
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE_REDUND - 1,
- &flash_info[0]);
-#endif
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (INTEL_MANUFACT & FLASH_VENDMASK):
- printf ("Intel: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (INTEL_ID_28F640J3A & FLASH_TYPEMASK):
- printf ("2x 28F640J3A (64Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
-Done: ;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_error (ulong code)
-{
- /* Check bit patterns */
- /* SR.7=0 is busy, SR.7=1 is ready */
- /* all other flags indicate error on 1 */
- /* SR.0 is undefined */
- /* Timeout is our faked flag */
-
- /* sequence is described in Intel 290644-005 document */
-
- /* check Timeout */
- if (code & BIT_TIMEOUT) {
- puts ("Timeout\n");
- return ERR_TIMOUT;
- }
-
- /* check Busy, SR.7 */
- if (~code & BIT_BUSY) {
- puts ("Busy\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Vpp low, SR.3 */
- if (code & BIT_VPP_RANGE_ERROR) {
- puts ("Vpp range error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Device Protect Error, SR.1 */
- if (code & BIT_PROTECT_ERROR) {
- puts ("Device protect error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Command Seq Error, SR.4 & SR.5 */
- if (code & BIT_SEQUENCE_ERROR) {
- puts ("Command seqence error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Block Erase Error, SR.5 */
- if (code & BIT_ERASE_ERROR) {
- puts ("Block erase error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Program Error, SR.4 */
- if (code & BIT_PROGRAM_ERROR) {
- puts ("Program error\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Block Erase Suspended, SR.6 */
- if (code & BIT_ERASE_SUSPEND) {
- puts ("Block erase suspended\n");
- return ERR_PROG_ERROR;
- }
-
- /* check Program Suspended, SR.2 */
- if (code & BIT_PROGRAM_SUSPEND) {
- puts ("Program suspended\n");
- return ERR_PROG_ERROR;
- }
-
- /* OK, no error */
- return ERR_OK;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- ulong result, result1;
- int iflag, prot, sect;
- int rc = ERR_OK;
-
-#ifdef USE_920T_MMU
- int cflag;
-#endif
-
- debug ("flash_erase: s_first %d s_last %d\n", s_first, s_last);
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (INTEL_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-#ifdef USE_920T_MMU
- cflag = dcache_status ();
- dcache_disable ();
-#endif
- iflag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
-
- debug ("Erasing sector %2d @ %08lX... ",
- sect, info->start[sect]);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *) (info->start[sect]);
- ulong bsR7, bsR7_2, bsR5, bsR5_2;
-
- /* *addr = CMD_STATUS_RESET; */
- *addr = CMD_ERASE_SETUP;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- do {
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- *addr = CMD_STATUS_RESET;
- result = BIT_TIMEOUT;
- break;
- }
-
- *addr = CMD_STATUS_READ;
- result = *addr;
- bsR7 = result & (1 << 7);
- bsR7_2 = result & (1 << 23);
- } while (!bsR7 | !bsR7_2);
-
- *addr = CMD_STATUS_READ;
- result1 = *addr;
- bsR5 = result1 & (1 << 5);
- bsR5_2 = result1 & (1 << 21);
-#ifdef SAMSUNG_FLASH_DEBUG
- printf ("bsR5 %lx bsR5_2 %lx\n", bsR5, bsR5_2);
- if (bsR5 != 0 && bsR5_2 != 0)
- printf ("bsR5 %lx bsR5_2 %lx\n", bsR5, bsR5_2);
-#endif
-
- *addr = CMD_READ_ARRAY;
- *addr = CMD_RESUME;
-
- if ((rc = flash_error (result)) != ERR_OK)
- goto outahere;
-#if 0
- printf ("ok.\n");
- } else { /* it was protected */
-
- printf ("protected!\n");
-#endif
- }
- }
-
-outahere:
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
-
- if (iflag)
- enable_interrupts ();
-
-#ifdef USE_920T_MMU
- if (cflag)
- dcache_enable ();
-#endif
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *) dest;
- ulong result;
- int rc = ERR_OK;
- int iflag;
-
-#ifdef USE_920T_MMU
- int cflag;
-#endif
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-#ifdef USE_920T_MMU
- cflag = dcache_status ();
- dcache_disable ();
-#endif
- iflag = disable_interrupts ();
-
- /* *addr = CMD_STATUS_RESET; */
- *addr = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait until flash is ready */
- do {
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- *addr = CMD_SUSPEND;
- result = BIT_TIMEOUT;
- break;
- }
-
- *addr = CMD_STATUS_READ;
- result = *addr;
- } while (~result & BIT_BUSY);
-
- /* *addr = CMD_READ_ARRAY; */
- *addr = CMD_STATUS_READ;
- result = *addr;
-
- rc = flash_error (result);
-
- if (iflag)
- enable_interrupts ();
-
-#ifdef USE_920T_MMU
- if (cflag)
- dcache_enable ();
-#endif
- *addr = CMD_READ_ARRAY;
- *addr = CMD_RESUME;
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int l;
- int i, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = *((vu_long *) src);
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- src += 4;
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
-
- return write_word (info, wp, data);
-}
diff --git a/board/smdk2400/lowlevel_init.S b/board/smdk2400/lowlevel_init.S
deleted file mode 100644
index a5de806af5..0000000000
--- a/board/smdk2400/lowlevel_init.S
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Memory Setup stuff - taken from blob memsetup.S
- *
- * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
- * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
- *
- * Modified for the Samsung development board by
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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 <config.h>
-#include <version.h>
-
-
-/* some parameters for the board */
-
-/*
- *
- * Taken from linux/arch/arm/boot/compressed/head-s3c2400.S
- *
- * Copyright (C) 2001 Samsung Electronics by chc, 010406
- *
- * S3C2400 specific tweaks.
- *
- */
-
-/* memory controller */
-#define BWSCON 0x14000000
-#define BANKCON3 0x14000010 /* for cs8900, ethernet */
-
-/* Bank0 */
-#define B0_Tacs 0x0 /* 0 clk */
-#define B0_Tcos 0x0 /* 0 clk */
-#define B0_Tacc 0x7 /* 14 clk */
-#define B0_Tcoh 0x0 /* 0 clk */
-#define B0_Tah 0x0 /* 0 clk */
-#define B0_Tacp 0x0
-#define B0_PMC 0x0 /* normal */
-
-/* Bank1 */
-#define B1_Tacs 0x0 /* 0 clk */
-#define B1_Tcos 0x0 /* 0 clk */
-#define B1_Tacc 0x7 /* 14 clk */
-#define B1_Tcoh 0x0 /* 0 clk */
-#define B1_Tah 0x0 /* 0 clk */
-#define B1_Tacp 0x0
-#define B1_PMC 0x0 /* normal */
-
-/* Bank2 */
-#define B2_Tacs 0x0 /* 0 clk */
-#define B2_Tcos 0x0 /* 0 clk */
-#define B2_Tacc 0x7 /* 14 clk */
-#define B2_Tcoh 0x0 /* 0 clk */
-#define B2_Tah 0x0 /* 0 clk */
-#define B2_Tacp 0x0
-#define B2_PMC 0x0 /* normal */
-
-/* Bank3 - setup for the cs8900 */
-#define B3_Tacs 0x0 /* 0 clk */
-#define B3_Tcos 0x3 /* 4 clk */
-#define B3_Tacc 0x7 /* 14 clk */
-#define B3_Tcoh 0x1 /* 1 clk */
-#define B3_Tah 0x0 /* 0 clk */
-#define B3_Tacp 0x3 /* 6 clk */
-#define B3_PMC 0x0 /* normal */
-
-/* Bank4 */
-#define B4_Tacs 0x0 /* 0 clk */
-#define B4_Tcos 0x0 /* 0 clk */
-#define B4_Tacc 0x7 /* 14 clk */
-#define B4_Tcoh 0x0 /* 0 clk */
-#define B4_Tah 0x0 /* 0 clk */
-#define B4_Tacp 0x0
-#define B4_PMC 0x0 /* normal */
-
-/* Bank5 */
-#define B5_Tacs 0x0 /* 0 clk */
-#define B5_Tcos 0x0 /* 0 clk */
-#define B5_Tacc 0x7 /* 14 clk */
-#define B5_Tcoh 0x0 /* 0 clk */
-#define B5_Tah 0x0 /* 0 clk */
-#define B5_Tacp 0x0
-#define B5_PMC 0x0 /* normal */
-
-/* Bank6 */
-#define B6_MT 0x3 /* SDRAM */
-#define B6_Trcd 0x1 /* 3clk */
-#define B6_SCAN 0x1 /* 9 bit */
-
-/* Bank7 */
-#define B7_MT 0x3 /* SDRAM */
-#define B7_Trcd 0x1 /* 3clk */
-#define B7_SCAN 0x1 /* 9 bit */
-
-/* refresh parameter */
-#define REFEN 0x1 /* enable refresh */
-#define TREFMD 0x0 /* CBR(CAS before RAS)/auto refresh */
-#define Trp 0x0 /* 2 clk */
-#define Trc 0x3 /* 7 clk */
-#define Tchr 0x2 /* 3 clk */
-
-#define REFCNT 1113 /* period=15.6 us, HCLK=60Mhz, (2048+1-15.6*66) */
-
-
-_TEXT_BASE:
- .word TEXT_BASE
-
-.globl lowlevel_init
-lowlevel_init:
- /* memory control configuration */
- /* make r0 relative the current location so that it */
- /* reads SMRDATA out of FLASH rather than memory ! */
- ldr r0, =SMRDATA
- ldr r1, _TEXT_BASE
- sub r0, r0, r1
- ldr r1, =BWSCON /* Bus Width Status Controller */
- add r2, r0, #52
-0:
- ldr r3, [r0], #4
- str r3, [r1], #4
- cmp r2, r0
- bne 0b
-
- /* everything is fine now */
- mov pc, lr
-
- .ltorg
-/* the literal pools origin */
-
-SMRDATA:
- .word 0x2211d114 /* d->Ethernet, BUSWIDTH=32 */
- .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC)) /* GCS0 */
- .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC)) /* GCS1 */
- .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC)) /* GCS2 */
- .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC)) /* GCS3 */
- .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC)) /* GCS4 */
- .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC)) /* GCS5 */
- .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN)) /* GCS6 */
- .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN)) /* GCS7 */
- .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
- .word 0x10 /* BUSWIDTH=32, SCLK power saving mode, BANKSIZE 32M/32M */
- .word 0x30 /* MRSR6, CL=3clk */
- .word 0x30 /* MRSR7 */
diff --git a/board/smdk2400/smdk2400.c b/board/smdk2400/smdk2400.c
deleted file mode 100644
index 4d1f1a63cd..0000000000
--- a/board/smdk2400/smdk2400.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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 <common.h>
-#include <s3c2400.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_MODEM_SUPPORT
-static int key_pressed(void);
-int mdm_init (bd_t *);
-extern void disable_putc(void);
-extern void enable_putc(void);
-extern int hwflow_onoff(int);
-extern int do_mdm_init; /* defined in common/main.c */
-#endif /* CONFIG_MODEM_SUPPORT */
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* memory and cpu-speed are setup before relocation */
- /* change the clock to be 50 MHz 1:1:1 */
- clk_power->MPLLCON = 0x5c042;
- clk_power->CLKDIVN = 0;
- /* set up the I/O ports */
- gpio->PACON = 0x3ffff;
- gpio->PBCON = 0xaaaaaaaa;
- gpio->PBUP = 0xffff;
- gpio->PECON = 0x0;
- gpio->PEUP = 0x0;
-#ifdef CONFIG_HWFLOW
- /*CTS[0] RTS[0] INPUT INPUT TXD[0] INPUT RXD[0] */
- /* 10, 10, 00, 00, 10, 00, 10 */
- gpio->PFCON=0xa22;
- /* Disable pull-up on Rx, Tx, CTS and RTS pins */
- gpio->PFUP=0x35;
-#else
- /*INPUT INPUT INPUT INPUT TXD[0] INPUT RXD[0] */
- /* 00, 00, 00, 00, 10, 00, 10 */
- gpio->PFCON = 0x22;
- /* Disable pull-up on Rx and Tx pins */
- gpio->PFUP = 0x5;
-#endif /* CONFIG_HWFLOW */
- gpio->PGCON = 0x0;
- gpio->PGUP = 0x0;
- gpio->OPENCR = 0x0;
-
- /* arch number of SAMSUNG-Board to MACH_TYPE_SMDK2400 */
- gd->bd->bi_arch_number = MACH_TYPE_SMDK2400;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x0C000100;
-
-#ifdef CONFIG_MODEM_SUPPORT
- if (key_pressed()) {
- disable_putc(); /* modem doesn't understand banner etc */
- do_mdm_init = 1;
- }
-#endif /* CONFIG_MODEM_SUPPORT */
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return 0;
-}
-
-#ifdef CONFIG_MODEM_SUPPORT
-static int key_pressed(void)
-{
- int rc;
- if (1) { /* check for button push here, now just return 1 */
- rc = 1;
- }
-
- return rc;
-}
-#endif /* CONFIG_MODEM_SUPPORT */
diff --git a/board/smdk2400/u-boot.lds b/board/smdk2400/u-boot.lds
deleted file mode 100644
index f4fbf969c3..0000000000
--- a/board/smdk2400/u-boot.lds
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/smdk2410/Makefile b/board/smdk2410/Makefile
deleted file mode 100644
index 8617b27f6e..0000000000
--- a/board/smdk2410/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := smdk2410.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/smdk2410/config.mk b/board/smdk2410/config.mk
deleted file mode 100644
index 1af85daa4c..0000000000
--- a/board/smdk2410/config.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-#
-# SAMSUNG SMDK2410 board with S3C2410X (ARM920T) cpu
-#
-# see http://www.samsung.com/ for more information on SAMSUNG
-#
-
-#
-# SMDK2410 has 1 bank of 64 MB DRAM
-#
-# 3000'0000 to 3400'0000
-#
-# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
-# optionally with a ramdisk at 3080'0000
-#
-# we load ourself to 33F8'0000
-#
-# download area is 3300'0000
-#
-
-
-TEXT_BASE = 0x33F80000
diff --git a/board/smdk2410/flash.c b/board/smdk2410/flash.c
deleted file mode 100644
index 993946be93..0000000000
--- a/board/smdk2410/flash.c
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@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
- */
-
-#include <common.h>
-
-ulong myflush (void);
-
-
-#define FLASH_BANK_SIZE PHYS_FLASH_SIZE
-#define MAIN_SECT_SIZE 0x10000 /* 64 KB */
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-#define CMD_READ_ARRAY 0x000000F0
-#define CMD_UNLOCK1 0x000000AA
-#define CMD_UNLOCK2 0x00000055
-#define CMD_ERASE_SETUP 0x00000080
-#define CMD_ERASE_CONFIRM 0x00000030
-#define CMD_PROGRAM 0x000000A0
-#define CMD_UNLOCK_BYPASS 0x00000020
-
-#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555 << 1)))
-#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA << 1)))
-
-#define BIT_ERASE_DONE 0x00000080
-#define BIT_RDY_MASK 0x00000080
-#define BIT_PROGRAM_ERROR 0x00000020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- ulong flashbase = 0;
-
- flash_info[i].flash_id =
-#if defined(CONFIG_AMD_LV400)
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV400B & FLASH_TYPEMASK);
-#elif defined(CONFIG_AMD_LV800)
- (AMD_MANUFACT & FLASH_VENDMASK) |
- (AMD_ID_LV800B & FLASH_TYPEMASK);
-#else
-#error "Unknown flash configured"
-#endif
- flash_info[i].size = FLASH_BANK_SIZE;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
- if (i == 0)
- flashbase = PHYS_FLASH_1;
- else
- panic ("configured too many flash banks!\n");
- for (j = 0; j < flash_info[i].sector_count; j++) {
- if (j <= 3) {
- /* 1st one is 16 KB */
- if (j == 0) {
- flash_info[i].start[j] =
- flashbase + 0;
- }
-
- /* 2nd and 3rd are both 8 KB */
- if ((j == 1) || (j == 2)) {
- flash_info[i].start[j] =
- flashbase + 0x4000 + (j -
- 1) *
- 0x2000;
- }
-
- /* 4th 32 KB */
- if (j == 3) {
- flash_info[i].start[j] =
- flashbase + 0x8000;
- }
- } else {
- flash_info[i].start[j] =
- flashbase + (j - 3) * MAIN_SECT_SIZE;
- }
- }
- size += flash_info[i].size;
- }
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (AMD_MANUFACT & FLASH_VENDMASK):
- printf ("AMD: ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (AMD_ID_LV400B & FLASH_TYPEMASK):
- printf ("1x Amd29LV400BB (4Mbit)\n");
- break;
- case (AMD_ID_LV800B & FLASH_TYPEMASK):
- printf ("1x Amd29LV800BB (8Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
- Done:;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- ushort result;
- int iflag, cflag, prot, sect;
- int rc = ERR_OK;
- int chip;
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) !=
- (AMD_MANUFACT & FLASH_VENDMASK)) {
- return ERR_UNKNOWN_FLASH_VENDOR;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot)
- return ERR_PROTECTED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- if (info->protect[sect] == 0) { /* not protected */
- vu_short *addr = (vu_short *) (info->start[sect]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- chip = 0;
-
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- chip = TMO;
- break;
- }
-
- if (!chip
- && (result & 0xFFFF) & BIT_ERASE_DONE)
- chip = READY;
-
- if (!chip
- && (result & 0xFFFF) & BIT_PROGRAM_ERROR)
- chip = ERR;
-
- } while (!chip);
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- if (chip == ERR) {
- rc = ERR_PROG_ERROR;
- goto outahere;
- }
- if (chip == TMO) {
- rc = ERR_TIMOUT;
- goto outahere;
- }
-
- printf ("ok.\n");
- } else { /* it was protected */
-
- printf ("protected!\n");
- }
- }
-
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
- outahere:
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-volatile static int write_hword (flash_info_t * info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short *) dest;
- ushort result;
- int rc = ERR_OK;
- int cflag, iflag;
- int chip;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- cflag = icache_status ();
- icache_disable ();
- iflag = disable_interrupts ();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_UNLOCK_BYPASS;
- *addr = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait until flash is ready */
- chip = 0;
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- chip = ERR | TMO;
- break;
- }
- if (!chip && ((result & 0x80) == (data & 0x80)))
- chip = READY;
-
- if (!chip && ((result & 0xFFFF) & BIT_PROGRAM_ERROR)) {
- result = *addr;
-
- if ((result & 0x80) == (data & 0x80))
- chip = READY;
- else
- chip = ERR;
- }
-
- } while (!chip);
-
- *addr = CMD_READ_ARRAY;
-
- if (chip == ERR || *addr != data)
- rc = ERR_PROG_ERROR;
-
- if (iflag)
- enable_interrupts ();
-
- if (cflag)
- icache_enable ();
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- int l;
- int i, rc;
- ushort data;
-
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
- for (; i < 2 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- if ((rc = write_hword (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 2) {
- data = *((vu_short *) src);
- if ((rc = write_hword (info, wp, data)) != 0) {
- return (rc);
- }
- src += 2;
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- return ERR_OK;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 8);
- --cnt;
- }
- for (; i < 2; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 8);
- }
-
- return write_hword (info, wp, data);
-}
diff --git a/board/smdk2410/lowlevel_init.S b/board/smdk2410/lowlevel_init.S
deleted file mode 100644
index 310f2a0a94..0000000000
--- a/board/smdk2410/lowlevel_init.S
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Memory Setup stuff - taken from blob memsetup.S
- *
- * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
- * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
- *
- * Modified for the Samsung SMDK2410 by
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.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
- */
-
-
-#include <config.h>
-#include <version.h>
-
-
-/* some parameters for the board */
-
-/*
- *
- * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
- *
- * Copyright (C) 2002 Samsung Electronics SW.LEE <hitchcar@sec.samsung.com>
- *
- */
-
-#define BWSCON 0x48000000
-
-/* BWSCON */
-#define DW8 (0x0)
-#define DW16 (0x1)
-#define DW32 (0x2)
-#define WAIT (0x1<<2)
-#define UBLB (0x1<<3)
-
-#define B1_BWSCON (DW32)
-#define B2_BWSCON (DW16)
-#define B3_BWSCON (DW16 + WAIT + UBLB)
-#define B4_BWSCON (DW16)
-#define B5_BWSCON (DW16)
-#define B6_BWSCON (DW32)
-#define B7_BWSCON (DW32)
-
-/* BANK0CON */
-#define B0_Tacs 0x0 /* 0clk */
-#define B0_Tcos 0x0 /* 0clk */
-#define B0_Tacc 0x7 /* 14clk */
-#define B0_Tcoh 0x0 /* 0clk */
-#define B0_Tah 0x0 /* 0clk */
-#define B0_Tacp 0x0
-#define B0_PMC 0x0 /* normal */
-
-/* BANK1CON */
-#define B1_Tacs 0x0 /* 0clk */
-#define B1_Tcos 0x0 /* 0clk */
-#define B1_Tacc 0x7 /* 14clk */
-#define B1_Tcoh 0x0 /* 0clk */
-#define B1_Tah 0x0 /* 0clk */
-#define B1_Tacp 0x0
-#define B1_PMC 0x0
-
-#define B2_Tacs 0x0
-#define B2_Tcos 0x0
-#define B2_Tacc 0x7
-#define B2_Tcoh 0x0
-#define B2_Tah 0x0
-#define B2_Tacp 0x0
-#define B2_PMC 0x0
-
-#define B3_Tacs 0x0 /* 0clk */
-#define B3_Tcos 0x3 /* 4clk */
-#define B3_Tacc 0x7 /* 14clk */
-#define B3_Tcoh 0x1 /* 1clk */
-#define B3_Tah 0x0 /* 0clk */
-#define B3_Tacp 0x3 /* 6clk */
-#define B3_PMC 0x0 /* normal */
-
-#define B4_Tacs 0x0 /* 0clk */
-#define B4_Tcos 0x0 /* 0clk */
-#define B4_Tacc 0x7 /* 14clk */
-#define B4_Tcoh 0x0 /* 0clk */
-#define B4_Tah 0x0 /* 0clk */
-#define B4_Tacp 0x0
-#define B4_PMC 0x0 /* normal */
-
-#define B5_Tacs 0x0 /* 0clk */
-#define B5_Tcos 0x0 /* 0clk */
-#define B5_Tacc 0x7 /* 14clk */
-#define B5_Tcoh 0x0 /* 0clk */
-#define B5_Tah 0x0 /* 0clk */
-#define B5_Tacp 0x0
-#define B5_PMC 0x0 /* normal */
-
-#define B6_MT 0x3 /* SDRAM */
-#define B6_Trcd 0x1
-#define B6_SCAN 0x1 /* 9bit */
-
-#define B7_MT 0x3 /* SDRAM */
-#define B7_Trcd 0x1 /* 3clk */
-#define B7_SCAN 0x1 /* 9bit */
-
-/* REFRESH parameter */
-#define REFEN 0x1 /* Refresh enable */
-#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
-#define Trp 0x0 /* 2clk */
-#define Trc 0x3 /* 7clk */
-#define Tchr 0x2 /* 3clk */
-#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
-/**************************************/
-
-_TEXT_BASE:
- .word TEXT_BASE
-
-.globl lowlevel_init
-lowlevel_init:
- /* memory control configuration */
- /* make r0 relative the current location so that it */
- /* reads SMRDATA out of FLASH rather than memory ! */
- ldr r0, =SMRDATA
- ldr r1, _TEXT_BASE
- sub r0, r0, r1
- ldr r1, =BWSCON /* Bus Width Status Controller */
- add r2, r0, #13*4
-0:
- ldr r3, [r0], #4
- str r3, [r1], #4
- cmp r2, r0
- bne 0b
-
- /* everything is fine now */
- mov pc, lr
-
- .ltorg
-/* the literal pools origin */
-
-SMRDATA:
- .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
- .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
- .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
- .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
- .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
- .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
- .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
- .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
- .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
- .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
- .word 0x32
- .word 0x30
- .word 0x30
diff --git a/board/smdk2410/smdk2410.c b/board/smdk2410/smdk2410.c
deleted file mode 100644
index 802348d236..0000000000
--- a/board/smdk2410/smdk2410.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.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
- */
-
-#include <common.h>
-#include <s3c2410.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define FCLK_SPEED 1
-
-#if FCLK_SPEED==0 /* Fout = 203MHz, Fin = 12MHz for Audio */
-#define M_MDIV 0xC3
-#define M_PDIV 0x4
-#define M_SDIV 0x1
-#elif FCLK_SPEED==1 /* Fout = 202.8MHz */
-#define M_MDIV 0xA1
-#define M_PDIV 0x3
-#define M_SDIV 0x1
-#endif
-
-#define USB_CLOCK 1
-
-#if USB_CLOCK==0
-#define U_M_MDIV 0xA1
-#define U_M_PDIV 0x3
-#define U_M_SDIV 0x1
-#elif USB_CLOCK==1
-#define U_M_MDIV 0x48
-#define U_M_PDIV 0x3
-#define U_M_SDIV 0x2
-#endif
-
-static inline void delay (unsigned long loops)
-{
- __asm__ volatile ("1:\n"
- "subs %0, %1, #1\n"
- "bne 1b":"=r" (loops):"0" (loops));
-}
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* to reduce PLL lock time, adjust the LOCKTIME register */
- clk_power->LOCKTIME = 0xFFFFFF;
-
- /* configure MPLL */
- clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
-
- /* some delay between MPLL and UPLL */
- delay (4000);
-
- /* configure UPLL */
- clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
-
- /* some delay between MPLL and UPLL */
- delay (8000);
-
- /* set up the I/O ports */
- gpio->GPACON = 0x007FFFFF;
- gpio->GPBCON = 0x00044555;
- gpio->GPBUP = 0x000007FF;
- gpio->GPCCON = 0xAAAAAAAA;
- gpio->GPCUP = 0x0000FFFF;
- gpio->GPDCON = 0xAAAAAAAA;
- gpio->GPDUP = 0x0000FFFF;
- gpio->GPECON = 0xAAAAAAAA;
- gpio->GPEUP = 0x0000FFFF;
- gpio->GPFCON = 0x000055AA;
- gpio->GPFUP = 0x000000FF;
- gpio->GPGCON = 0xFF95FFBA;
- gpio->GPGUP = 0x0000FFFF;
- gpio->GPHCON = 0x002AFAAA;
- gpio->GPHUP = 0x000007FF;
-
- /* arch number of SMDK2410-Board */
- gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x30000100;
-
- icache_enable();
- dcache_enable();
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return 0;
-}
diff --git a/board/smdk2410/u-boot.lds b/board/smdk2410/u-boot.lds
deleted file mode 100644
index f4fbf969c3..0000000000
--- a/board/smdk2410/u-boot.lds
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/snmc/qs850/Makefile b/board/snmc/qs850/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/snmc/qs850/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/snmc/qs850/config.mk b/board/snmc/qs850/config.mk
deleted file mode 100644
index 905f692698..0000000000
--- a/board/snmc/qs850/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2002-2003
-# Simple Network Magic Corporation, dnevil@snmc.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
-#
-
-#
-# QS850
-# Start address of Bootloader in Flash
-#
-
-TEXT_BASE = 0xFFF00000
diff --git a/board/snmc/qs850/flash.c b/board/snmc/qs850/flash.c
deleted file mode 100644
index d2f169b88e..0000000000
--- a/board/snmc/qs850/flash.c
+++ /dev/null
@@ -1,616 +0,0 @@
-/*
- * (C) Copyright 2003
- * MuLogic B.V.
- *
- * (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 <common.h>
-#include <ppc4xx.h>
-#include <asm/u-boot.h>
-#include <asm/processor.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-
-#define FLASH_WORD_SIZE unsigned long
-#define FLASH_ID_MASK 0xFFFFFFFF
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-/* stolen from esteem192e/flash.c */
-ulong flash_get_size (volatile FLASH_WORD_SIZE *addr, flash_info_t *info);
-
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
- uint pbcr;
- unsigned long base_b0, base_b1;
- volatile FLASH_WORD_SIZE* flash_base;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here */
- /* Test for 8M Flash first */
- debug ("\n## Get flash bank 1 size @ 0x%08x\n",FLASH_BASE0_8M_PRELIM);
- flash_base = (volatile FLASH_WORD_SIZE*)(FLASH_BASE0_8M_PRELIM);
- size_b0 = flash_get_size(flash_base, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- return 0;
- }
-
- if (size_b0 < 8*1024*1024) {
- /* Not quite 8M, try 4M Flash base address */
- debug ("\n## Get flash bank 1 size @ 0x%08x\n",FLASH_BASE0_4M_PRELIM);
- flash_base = (volatile FLASH_WORD_SIZE*)(FLASH_BASE0_4M_PRELIM);
- size_b0 = flash_get_size(flash_base, &flash_info[0]);
- }
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- return 0;
- }
-
- /* Only one bank */
- if (CFG_MAX_FLASH_BANKS == 1) {
- /* Setup offsets */
- flash_get_offsets ((ulong)flash_base, &flash_info[0]);
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET, CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+CFG_MONITOR_LEN-1, &flash_info[0]);
- size_b1 = 0 ;
- flash_info[0].size = size_b0;
- return(size_b0);
- }
-
- /* We have 2 banks */
- size_b1 = flash_get_size(flash_base, &flash_info[1]);
-
- /* Re-do sizing to get full correct info */
- if (size_b1) {
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b1 = -size_b1;
- pbcr = (pbcr & 0x0001ffff) | base_b1 | (((size_b1/1024/1024)-1)<<17);
- mtdcr(ebccfgd, pbcr);
- }
-
- if (size_b0) {
- mtdcr(ebccfga, pb1cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb1cr);
- base_b0 = base_b1 - size_b0;
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (((size_b0/1024/1024)-1)<<17);
- mtdcr(ebccfgd, pbcr);
- }
-
- size_b0 = flash_get_size((volatile FLASH_WORD_SIZE *)base_b0, &flash_info[0]);
- flash_get_offsets (base_b0, &flash_info[0]);
-
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET, CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+CFG_MONITOR_LEN-1, &flash_info[0]);
-
- if (size_b1) {
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((volatile FLASH_WORD_SIZE *)base_b1, &flash_info[1]);
- flash_get_offsets (base_b1, &flash_info[1]);
-
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET, base_b1+size_b1-CFG_MONITOR_LEN,
- base_b1+size_b1-1, &flash_info[1]);
-
- /* monitor protection OFF by default (one is enough) */
- (void)flash_protect(FLAG_PROTECT_CLEAR, base_b0+size_b0-CFG_MONITOR_LEN,
- base_b0+size_b0-1, &flash_info[0]);
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
- return (size_b0 + size_b1);
-}
-
-
-/*-----------------------------------------------------------------------
- This code is specific to the AM29DL163/AM29DL232 for the QS850/QS823.
- */
-
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
- long large_sect_size;
- long small_sect_size;
-
- /* set up sector start adress table */
- large_sect_size = info->size / (info->sector_count - 8 + 1);
- small_sect_size = large_sect_size / 8;
-
- if (info->flash_id & FLASH_BTYPE) {
-
- /* set sector offsets for bottom boot block type */
- for (i = 0; i < 7; i++) {
- info->start[i] = base;
- base += small_sect_size;
- }
-
- for (; i < info->sector_count; i++) {
- info->start[i] = base;
- base += large_sect_size;
- }
- }
- else
- {
- /* set sector offsets for top boot block type */
- for (i = 0; i < (info->sector_count - 8); i++) {
- info->start[i] = base;
- base += large_sect_size;
- }
-
- for (; i < info->sector_count; i++) {
- info->start[i] = base;
- base += small_sect_size;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar botboot[]=", bottom boot sect)\n";
- uchar topboot[]=", top boot sector)\n";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf ("FUJITSU ");
- break;
- case FLASH_MAN_SST:
- printf ("SST ");
- break;
- case FLASH_MAN_STM:
- printf ("STM ");
- break;
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- if (info->flash_id & 0x0001 ) {
- boottype = botboot;
- } else {
- boottype = topboot;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM160B:
- printf ("AM29LV160B (16 Mbit%s",boottype);
- break;
- case FLASH_AM160T:
- printf ("AM29LV160T (16 Mbit%s",boottype);
- break;
- case FLASH_AMDL163T:
- printf ("AM29DL163T (16 Mbit%s",boottype);
- break;
- case FLASH_AMDL163B:
- printf ("AM29DL163B (16 Mbit%s",boottype);
- break;
- case FLASH_AM320B:
- printf ("AM29LV320B (32 Mbit%s",boottype);
- break;
- case FLASH_AM320T:
- printf ("AM29LV320T (32 Mbit%s",boottype);
- break;
- case FLASH_AMDL323T:
- printf ("AM29DL323T (32 Mbit%s",boottype);
- break;
- case FLASH_AMDL323B:
- printf ("AM29DL323B (32 Mbit%s",boottype);
- break;
- case FLASH_AMDL322T:
- printf ("AM29DL322T (32 Mbit%s",boottype);
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-
-/*-----------------------------------------------------------------------
- * The following code cannot be run from FLASH!
- */
-ulong flash_get_size (volatile FLASH_WORD_SIZE *addr, flash_info_t *info)
-{
- short i;
- ulong base = (ulong)addr;
- FLASH_WORD_SIZE value;
-
- /* Write auto select command: read Manufacturer ID */
-
- /*
- * Note: if it is an AMD flash and the word at addr[0000]
- * is 0x00890089 this routine will think it is an Intel
- * flash device and may(most likely) cause trouble.
- */
-
- addr[0x0000] = 0x00900090;
- if(addr[0x0000] != 0x00890089){
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
- }
- value = addr[0];
-
- switch (value) {
- case (AMD_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (STM_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_STM;
- break;
- case (SST_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_SST;
- break;
- case (INTEL_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
- case (AMD_ID_LV160T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV160B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_DL163T & FLASH_ID_MASK):
- info->flash_id += FLASH_AMDL163T;
- info->sector_count = 39;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_DL163B & FLASH_ID_MASK):
- info->flash_id += FLASH_AMDL163B;
- info->sector_count = 39;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_DL323T & FLASH_ID_MASK):
- info->flash_id += FLASH_AMDL323T;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (AMD_ID_DL323B & FLASH_ID_MASK):
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (AMD_ID_DL322T & FLASH_ID_MASK):
- info->flash_id += FLASH_AMDL322T;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- default:
- /* FIXME*/
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- flash_get_offsets(base, info);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile FLASH_WORD_SIZE *)info->start[0];
- *addr = (0x00FF00FF & FLASH_ID_MASK); /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr=(volatile FLASH_WORD_SIZE*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP) ) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (volatile FLASH_WORD_SIZE *)(info->start[sect]);
- addr[0] = (0x00300030 & FLASH_ID_MASK);
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (volatile FLASH_WORD_SIZE*)(info->start[l_sect]);
- while ((addr[0] & (0x00800080&FLASH_ID_MASK)) !=
- (0x00800080&FLASH_ID_MASK) )
- {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (0x00F000F0 & FLASH_ID_MASK); /* reset bank */
-
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int l;
- int i, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* AMD stuff */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer(0);
-
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
- return (0);
-}
diff --git a/board/snmc/qs850/qs850.c b/board/snmc/qs850/qs850.c
deleted file mode 100644
index 637f1250e9..0000000000
--- a/board/snmc/qs850/qs850.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * (C) Copyright 2003
- * MuLogic B.V.
- *
- * (C) Copyright 2002
- * Simple Network Magic Corporation, dnevil@snmc.com
- *
- * (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 <common.h>
-#include <asm/u-boot.h>
-#include <commproc.h>
-#include "mpc8xx.h"
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-const uint sdram_table[] =
-{
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x0f07cc04, 0x00adcc04, 0x00a74c00, 0x00bfcc04,
- 0x1fffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x0ff7fc04, 0x0ffffc04, 0x00bdfc04, 0x00fffc00,
- 0x00fffc00, 0x00fffc00, 0x0ff77c00, 0x1ffffc05,
- 0x1ffffc05, 0x1ffffc05, 0x1ffffc05, 0x1ffffc05,
- 0x1ffffc05, 0x1ffffc05, 0x1ffffc05, 0x1ffffc05,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x0f07cc04, 0x0fafcc00, 0x01ad0c04, 0x1ff74c07,
- 0xffffcc05, 0xffffcc05, 0xffffcc05, 0xffffcc05,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x0ff7fc04, 0x0ffffc00, 0x00bd7c00, 0x00fffc00,
- 0x00fffc00, 0x00fffc00, 0x0ffffc04, 0x0ff77c04,
- 0x1ffffc05, 0x1ffffc05, 0x1ffffc05, 0x1ffffc05,
- 0x1ffffc05, 0x1ffffc05, 0x1ffffc05, 0x1ffffc05,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0xffffcc04, 0x1ff5cc84, 0xffffcc04, 0xffffcc04,
- 0xffffcc84, 0xffffcc05, 0xffffcc04, 0xffffcc04,
- 0xffffcc04, 0xffffcc04, 0xffffcc04, 0xffffcc04,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x1ff74c04, 0xffffcc07, 0xffffaa34, 0x1fb54a37
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Test ID string (QS850, QS823, ...)
- *
- * Always return 1
- */
-
-int checkboard (void)
-{
- char *s, *e;
- char buf[64];
- int i;
-
- i = getenv_r("serial#", buf, sizeof(buf));
- s = (i>0) ? buf : NULL;
-
-#ifdef CONFIG_QS850
- if (!s || strncmp(s, "QS850", 5)) {
- puts ("### No HW ID - assuming QS850");
-#endif
-#ifdef CONFIG_QS823
- if (!s || strncmp(s, "QS823", 5)) {
- puts ("### No HW ID - assuming QS823");
-#endif
- } else {
- for (e=s; *e; ++e) {
- if (*e == ' ')
- break;
- }
-
- for ( ; s<e; ++s) {
- putc (*s);
- }
- }
- putc ('\n');
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-/* SDRAM Mode Register Definitions */
-
-/* Set SDRAM Burst Length to 4 (010) */
-/* See Motorola MPC850 User Manual, Page 13-14 */
-#define SDRAM_BURST_LENGTH (2)
-
-/* Set Wrap Type to Sequential (0) */
-/* See Motorola MPC850 User Manual, Page 13-14 */
-#define SDRAM_WRAP_TYPE (0 << 3)
-
-/* Set /CAS Latentcy to 2 clocks */
-#define SDRAM_CAS_LATENTCY (2 << 4)
-
-/* The Mode Register value must be shifted left by 2, since it is */
-/* placed on the address bus, and the 2 LSBs are ignored for 32-bit accesses */
-#define SDRAM_MODE_REG ((SDRAM_BURST_LENGTH|SDRAM_WRAP_TYPE|SDRAM_CAS_LATENTCY) << 2)
-
-#define UPMA_RUN(loops,index) (0x80002000 + (loops<<8) + index)
-
-/* Please note a value of zero = 16 loops */
-#define REFRESH_INIT_LOOPS (0)
-
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size;
-
- upmconfig(UPMA, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
-
- /*
- * Prescaler for refresh
- */
- memctl->memc_mptpr = CFG_MPTPR;
-
- /*
- * Map controller bank 1 to the SDRAM address
- */
- memctl->memc_or1 = CFG_OR1;
- memctl->memc_br1 = CFG_BR1;
- udelay(1000);
-
- /* perform SDRAM initialization sequence */
- memctl->memc_mamr = CFG_16M_MAMR;
- udelay(100);
-
- /* Program the SDRAM's Mode Register */
- memctl->memc_mar = SDRAM_MODE_REG;
-
- /* Run the Prechard Pattern at 0x3C */
- memctl->memc_mcr = UPMA_RUN(1,0x3c);
- udelay(1);
-
- /* Run the Refresh program residing at MAD index 0x30 */
- /* This contains the CBR Refresh command with a loop */
- /* The SDRAM must be refreshed at least 2 times */
- /* Please note a value of zero = 16 loops */
- memctl->memc_mcr = UPMA_RUN(REFRESH_INIT_LOOPS,0x30);
- udelay(1);
-
- /* Run the Exception program residing at MAD index 0x3E */
- /* This contains the Write Mode Register command */
- /* The Write Mode Register command uses the value written to MAR */
- memctl->memc_mcr = UPMA_RUN(1,0x3e);
-
- udelay (1000);
-
- /*
- * Check for 32M SDRAM Memory Size
- */
- size = dram_size(CFG_32M_MAMR|MAMR_PTAE,
- (long *)SDRAM_BASE, SDRAM_32M_MAX_SIZE);
- udelay (1000);
-
- /*
- * Check for 16M SDRAM Memory Size
- */
- if (size != SDRAM_32M_MAX_SIZE) {
- size = dram_size(CFG_16M_MAMR|MAMR_PTAE,
- (long *)SDRAM_BASE, SDRAM_16M_MAX_SIZE);
- udelay (1000);
- }
-
- udelay(10000);
- return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base, long int maxsize)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
diff --git a/board/snmc/qs850/u-boot.lds b/board/snmc/qs850/u-boot.lds
deleted file mode 100644
index cb3f456a0e..0000000000
--- a/board/snmc/qs850/u-boot.lds
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- cpu/mpc8xx/traps.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/time.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.ppcenv)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/snmc/qs860t/Makefile b/board/snmc/qs860t/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/snmc/qs860t/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/snmc/qs860t/config.mk b/board/snmc/qs860t/config.mk
deleted file mode 100644
index f6ab2607b4..0000000000
--- a/board/snmc/qs860t/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2002
-# Simple Network Magic Corporation, dnevil@snmc.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
-#
-
-#
-# QS860T
-# Start address of 512K Socketed Flash
-#
-
-TEXT_BASE = 0xFFF00000
diff --git a/board/snmc/qs860t/flash.c b/board/snmc/qs860t/flash.c
deleted file mode 100644
index c84d08d628..0000000000
--- a/board/snmc/qs860t/flash.c
+++ /dev/null
@@ -1,1120 +0,0 @@
-/*
- * (C) Copyright 2003
- * MuLogic B.V.
- *
- * (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 <common.h>
-#include <ppc4xx.h>
-#include <asm/u-boot.h>
-#include <asm/processor.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-
-#ifdef CFG_FLASH_16BIT
-#define FLASH_WORD_SIZE unsigned short
-#define FLASH_ID_MASK 0xFFFF
-#else
-#define FLASH_WORD_SIZE unsigned long
-#define FLASH_ID_MASK 0xFFFFFFFF
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-/* stolen from esteem192e/flash.c */
-ulong flash_get_size (volatile FLASH_WORD_SIZE *addr, flash_info_t *info);
-
-#ifndef CFG_FLASH_16BIT
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-#else
-static int write_short (flash_info_t *info, ulong dest, ushort data);
-#endif
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
- uint pbcr;
- unsigned long base_b0, base_b1;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((volatile FLASH_WORD_SIZE *)FLASH_BASE1_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- /* Only one bank */
- if (CFG_MAX_FLASH_BANKS == 1)
- {
- /* Setup offsets */
- flash_get_offsets (FLASH_BASE1_PRELIM, &flash_info[0]);
-
- /* Monitor protection ON by default */
-#if 0 /* sand: */
- (void)flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE1_PRELIM-CFG_MONITOR_LEN+size_b0,
- FLASH_BASE1_PRELIM-1+size_b0,
- &flash_info[0]);
-#else
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+CFG_MONITOR_LEN-1,
- &flash_info[0]);
-#endif
- size_b1 = 0 ;
- flash_info[0].size = size_b0;
- }
- /* 2 banks */
- else
- {
- size_b1 = flash_get_size((volatile FLASH_WORD_SIZE *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- /* Re-do sizing to get full correct info */
- if (size_b1)
- {
- mtdcr(ebccfga, pb0cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb0cr);
- base_b1 = -size_b1;
- pbcr = (pbcr & 0x0001ffff) | base_b1 | (((size_b1/1024/1024)-1)<<17);
- mtdcr(ebccfgd, pbcr);
- }
-
- if (size_b0)
- {
- mtdcr(ebccfga, pb1cr);
- pbcr = mfdcr(ebccfgd);
- mtdcr(ebccfga, pb1cr);
- base_b0 = base_b1 - size_b0;
- pbcr = (pbcr & 0x0001ffff) | base_b0 | (((size_b0/1024/1024)-1)<<17);
- mtdcr(ebccfgd, pbcr);
- }
-
- size_b0 = flash_get_size((volatile FLASH_WORD_SIZE *)base_b0, &flash_info[0]);
-
- flash_get_offsets (base_b0, &flash_info[0]);
-
- /* monitor protection ON by default */
-#if 0 /* sand: */
- (void)flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE1_PRELIM-CFG_MONITOR_LEN+size_b0,
- FLASH_BASE1_PRELIM-1+size_b0,
- &flash_info[0]);
-#else
- (void)flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+CFG_MONITOR_LEN-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((volatile FLASH_WORD_SIZE *)base_b1, &flash_info[1]);
-
- flash_get_offsets (base_b1, &flash_info[1]);
-
- /* monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- base_b1+size_b1-CFG_MONITOR_LEN,
- base_b1+size_b1-1,
- &flash_info[1]);
- /* monitor protection OFF by default (one is enough) */
- (void)flash_protect(FLAG_PROTECT_CLEAR,
- base_b0+size_b0-CFG_MONITOR_LEN,
- base_b0+size_b0-1,
- &flash_info[0]);
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
- }/* else 2 banks */
- return (size_b0 + size_b1);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start adress table */
- if ((info->flash_id & FLASH_TYPEMASK) == INTEL_ID_28F320J3A ||
- (info->flash_id & FLASH_TYPEMASK) == INTEL_ID_28F640J3A ||
- (info->flash_id & FLASH_TYPEMASK) == INTEL_ID_28F128J3A) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * info->size/info->sector_count);
- }
- }
- else if (info->flash_id & FLASH_BTYPE) {
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CFG_FLASH_16BIT
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00008000;
- info->start[3] = base + 0x0000C000;
- info->start[4] = base + 0x00010000;
- info->start[5] = base + 0x00014000;
- info->start[6] = base + 0x00018000;
- info->start[7] = base + 0x0001C000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x000E0000;
- }
- } else {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- }
-#else
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00002000;
- info->start[2] = base + 0x00004000;
- info->start[3] = base + 0x00006000;
- info->start[4] = base + 0x00008000;
- info->start[5] = base + 0x0000A000;
- info->start[6] = base + 0x0000C000;
- info->start[7] = base + 0x0000E000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00070000;
- }
- } else {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- }
-#endif
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CFG_FLASH_16BIT
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- info->start[i--] = base + info->size - 0x00014000;
- info->start[i--] = base + info->size - 0x00018000;
- info->start[i--] = base + info->size - 0x0001C000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- } else {
-
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-#else
- info->start[i--] = base + info->size - 0x00002000;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000A000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x0000E000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- } else {
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-#endif
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- int i;
- uchar *boottype;
- uchar botboot[]=", bottom boot sect)\n";
- uchar topboot[]=", top boot sector)\n";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- case FLASH_MAN_STM: printf ("STM "); break;
- case FLASH_MAN_INTEL: printf ("INTEL "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- if (info->flash_id & 0x0001 ) {
- boottype = botboot;
- } else {
- boottype = topboot;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit%s",boottype);
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit%s",boottype);
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit%s",boottype);
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit%s",boottype);
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit%s",boottype);
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit%s",boottype);
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit%s",boottype);
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit%s",boottype);
- break;
- case FLASH_INTEL800B: printf ("INTEL28F800B (8 Mbit%s",boottype);
- break;
- case FLASH_INTEL800T: printf ("INTEL28F800T (8 Mbit%s",boottype);
- break;
- case FLASH_INTEL160B: printf ("INTEL28F160B (16 Mbit%s",boottype);
- break;
- case FLASH_INTEL160T: printf ("INTEL28F160T (16 Mbit%s",boottype);
- break;
- case FLASH_INTEL320B: printf ("INTEL28F320B (32 Mbit%s",boottype);
- break;
- case FLASH_INTEL320T: printf ("INTEL28F320T (32 Mbit%s",boottype);
- break;
- case FLASH_AMDL322T: printf ("AM29DL322T (32 Mbit%s",boottype);
- break;
-
-#if 0 /* enable when devices are available */
-
- case FLASH_INTEL640B: printf ("INTEL28F640B (64 Mbit%s",boottype);
- break;
- case FLASH_INTEL640T: printf ("INTEL28F640T (64 Mbit%s",boottype);
- break;
-#endif
- case INTEL_ID_28F320J3A: printf ("INTEL28F320JA3 (32 Mbit%s",boottype);
- break;
- case INTEL_ID_28F640J3A: printf ("INTEL28F640JA3 (64 Mbit%s",boottype);
- break;
- case INTEL_ID_28F128J3A: printf ("INTEL28F128JA3 (128 Mbit%s",boottype);
- break;
-
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-ulong flash_get_size (volatile FLASH_WORD_SIZE *addr, flash_info_t *info)
-{
- short i;
- ulong base = (ulong)addr;
- FLASH_WORD_SIZE value;
-
- /* Write auto select command: read Manufacturer ID */
-
-
-#ifndef CFG_FLASH_16BIT
-
- /*
- * Note: if it is an AMD flash and the word at addr[0000]
- * is 0x00890089 this routine will think it is an Intel
- * flash device and may(most likely) cause trouble.
- */
-
- addr[0x0000] = 0x00900090;
- if(addr[0x0000] != 0x00890089){
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-#else
-
- /*
- * Note: if it is an AMD flash and the word at addr[0000]
- * is 0x0089 this routine will think it is an Intel
- * flash device and may(most likely) cause trouble.
- */
-
- addr[0x0000] = 0x0090;
-
- if(addr[0x0000] != 0x0089){
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x0090;
-#endif
- }
- value = addr[0];
-
- switch (value) {
- case (AMD_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (STM_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_STM;
- break;
- case (SST_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_SST;
- break;
- case (INTEL_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
-
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (AMD_ID_LV400T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV400B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV800B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV160T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV160B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case (AMD_ID_LV320T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (AMD_ID_LV320B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
-
- case (AMD_ID_DL322T & FLASH_ID_MASK):
- info->flash_id += FLASH_AMDL322T;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (INTEL_ID_28F800B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL800T;
- info->sector_count = 23;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (INTEL_ID_28F800B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL800B;
- info->sector_count = 23;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (INTEL_ID_28F160B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL160T;
- info->sector_count = 39;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (INTEL_ID_28F160B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL160B;
- info->sector_count = 39;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (INTEL_ID_28F320B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL320T;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (INTEL_ID_28F320B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
-#if 0 /* enable when devices are available */
- case (INTEL_ID_28F320B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL320T;
- info->sector_count = 135;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- case (INTEL_ID_28F320B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 135;
- info->size = 0x01000000;
- break; /* => 16 MB */
-#endif
- case (INTEL_ID_28F320J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 32 MBit */
- case (INTEL_ID_28F640J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 64 MBit */
- case (INTEL_ID_28F128J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 128 MBit */
-
- default:
- /* FIXME*/
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- flash_get_offsets(base, info);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile FLASH_WORD_SIZE *)info->start[0];
- if( (info->flash_id & 0xFF00) == FLASH_MAN_INTEL){
- *addr = (0x00F000F0 & FLASH_ID_MASK); /* reset bank */
- } else {
- *addr = (0x00FF00FF & FLASH_ID_MASK); /* reset bank */
- }
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-
- volatile FLASH_WORD_SIZE *addr=(volatile FLASH_WORD_SIZE*)(info->start[0]);
- int flag, prot, sect, l_sect, barf;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- ((info->flash_id > FLASH_AMD_COMP) &&
- ( (info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL ) ) ){
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
- if(info->flash_id < FLASH_AMD_COMP) {
-#ifndef CFG_FLASH_16BIT
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-#else
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x0080;
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
-#endif
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (volatile FLASH_WORD_SIZE *)(info->start[sect]);
- addr[0] = (0x00300030 & FLASH_ID_MASK);
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (volatile FLASH_WORD_SIZE*)(info->start[l_sect]);
- while ((addr[0] & (0x00800080&FLASH_ID_MASK)) !=
- (0x00800080&FLASH_ID_MASK) )
- {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (0x00F000F0 & FLASH_ID_MASK); /* reset bank */
- } else {
-
-
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- barf = 0;
-#ifndef CFG_FLASH_16BIT
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x00200020;
- addr[0] = 0x00D000D0;
- while(!(addr[0] & 0x00800080)); /* wait for error or finish */
- if( addr[0] & 0x003A003A) { /* check for error */
- barf = addr[0] & 0x003A0000;
- if( barf ) {
- barf >>=16;
- } else {
- barf = addr[0] & 0x0000003A;
- }
- }
-#else
- addr = (vu_short*)(info->start[sect]);
- addr[0] = 0x0020;
- addr[0] = 0x00D0;
- while(!(addr[0] & 0x0080)); /* wait for error or finish */
- if( addr[0] & 0x003A) /* check for error */
- barf = addr[0] & 0x003A;
-#endif
- if(barf) {
- printf("\nFlash error in sector at %lx\n",(unsigned long)addr);
- if(barf & 0x0002) printf("Block locked, not erased.\n");
- if((barf & 0x0030) == 0x0030)
- printf("Command Sequence error.\n");
- if((barf & 0x0030) == 0x0020)
- printf("Block Erase error.\n");
- if(barf & 0x0008) printf("Vpp Low error.\n");
- rcode = 1;
- } else printf(".");
- l_sect = sect;
- }
- addr = (volatile FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (0x00FF00FF & FLASH_ID_MASK); /* reset bank */
-
- }
-
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*flash_info_t *addr2info (ulong addr)
-{
- flash_info_t *info;
- int i;
-
- for (i=0, info=&flash_info[0]; i<CFG_MAX_FLASH_BANKS; ++i, ++info) {
- if ((addr >= info->start[0]) &&
- (addr < (info->start[0] + info->size)) ) {
- return (info);
- }
- }
-
- return (NULL);
-}
-*/
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- * Make sure all target addresses are within Flash bounds,
- * and no protected sectors are hit.
- * Returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - target range includes protected sectors
- * 8 - target address not in Flash memory
- */
-
-/*int flash_write (uchar *src, ulong addr, ulong cnt)
-{
- int i;
- ulong end = addr + cnt - 1;
- flash_info_t *info_first = addr2info (addr);
- flash_info_t *info_last = addr2info (end );
- flash_info_t *info;
-
- if (cnt == 0) {
- return (0);
- }
-
- if (!info_first || !info_last) {
- return (8);
- }
-
- for (info = info_first; info <= info_last; ++info) {
- ulong b_end = info->start[0] + info->size;*/ /* bank end addr */
-/* short s_end = info->sector_count - 1;
- for (i=0; i<info->sector_count; ++i) {
- ulong e_addr = (i == s_end) ? b_end : info->start[i + 1];
-
- if ((end >= info->start[i]) && (addr < e_addr) &&
- (info->protect[i] != 0) ) {
- return (4);
- }
- }
- }
-
-*/ /* finally write data to flash */
-/* for (info = info_first; info <= info_last && cnt>0; ++info) {
- ulong len;
-
- len = info->start[0] + info->size - addr;
- if (len > cnt)
- len = cnt;
- if ((i = write_buff(info, src, addr, len)) != 0) {
- return (i);
- }
- cnt -= len;
- addr += len;
- src += len;
- }
- return (0);
-}
-*/
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-#ifndef CFG_FLASH_16BIT
- ulong cp, wp, data;
- int l;
-#else
- ulong cp, wp;
- ushort data;
-#endif
- int i, rc;
-
-#ifndef CFG_FLASH_16BIT
-
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-
-#else
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start byte
- */
- if (addr - wp) {
- data = 0;
- data = (data << 8) | *src++;
- --cnt;
- if ((rc = write_short(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
-/* l = 0; used for debuging */
- while (cnt >= 2) {
- data = 0;
- for (i=0; i<2; ++i) {
- data = (data << 8) | *src++;
- }
-
-/* if(!l){
- printf("%x",data);
- l = 1;
- } used for debuging */
-
- if ((rc = write_short(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<2 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<2; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_short(info, wp, data));
-
-
-#endif
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-#ifndef CFG_FLASH_16BIT
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start,barf;
- int flag;
-
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- if(info->flash_id > FLASH_AMD_COMP) {
- /* AMD stuff */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
- } else {
- /* intel stuff */
- *addr = 0x00400040;
- }
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
-
- if(info->flash_id > FLASH_AMD_COMP) {
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- } else {
- while(!(addr[0] & 0x00800080)) { /* wait for error or finish */
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
-
- if( addr[0] & 0x003A003A) { /* check for error */
- barf = addr[0] & 0x003A0000;
- if( barf ) {
- barf >>=16;
- } else {
- barf = addr[0] & 0x0000003A;
- }
- printf("\nFlash write error at address %lx\n",(unsigned long)dest);
- if(barf & 0x0002) printf("Block locked, not erased.\n");
- if(barf & 0x0010) printf("Programming error.\n");
- if(barf & 0x0008) printf("Vpp Low error.\n");
- return(2);
- }
- }
-
- return (0);
-}
-
-#else
-
-static int write_short (flash_info_t *info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short*)(info->start[0]);
- ulong start,barf;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_short *)dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- if(info->flash_id < FLASH_AMD_COMP) {
- /* AMD stuff */
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x00A0;
- } else {
- /* intel stuff */
- *addr = 0x00D0;
- *addr = 0x0040;
- }
- *((vu_short *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
-
- if(info->flash_id < FLASH_AMD_COMP) {
- /* AMD stuff */
- while ((*((vu_short *)dest) & 0x0080) != (data & 0x0080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
- } else {
- /* intel stuff */
- while(!(addr[0] & 0x0080)){ /* wait for error or finish */
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) return (1);
- }
-
- if( addr[0] & 0x003A) { /* check for error */
- barf = addr[0] & 0x003A;
- printf("\nFlash write error at address %lx\n",(unsigned long)dest);
- if(barf & 0x0002) printf("Block locked, not erased.\n");
- if(barf & 0x0010) printf("Programming error.\n");
- if(barf & 0x0008) printf("Vpp Low error.\n");
- return(2);
- }
- *addr = 0x00B0;
- *addr = 0x0070;
- while(!(addr[0] & 0x0080)){ /* wait for error or finish */
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) return (1);
- }
- *addr = 0x00FF;
- }
- return (0);
-}
-
-
-#endif
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/snmc/qs860t/qs860t.c b/board/snmc/qs860t/qs860t.c
deleted file mode 100644
index a11d863010..0000000000
--- a/board/snmc/qs860t/qs860t.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * (C) Copyright 2003
- * MuLogic B.V.
- *
- * (C) Copyright 2002
- * Simple Network Magic Corporation, dnevil@snmc.com
- *
- * (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 <common.h>
-#include <asm/u-boot.h>
-#include <commproc.h>
-#include "mpc8xx.h"
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-const uint sdram_table[] =
-{
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEFC04, 0x11ADFC04, 0xEFBBBC00,
- 0x1FF77C47, 0x1FF77C35, 0xEFEABC34, 0x1FB57C35,
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEFC04, 0x10ADFC04, 0xF0AFFC00,
- 0xF0AFFC00, 0xF1AFFC00, 0xEFBBBC00, 0x1FF77C47,
- 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04,
- 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x1F27FC04, 0xEEAEBC00, 0x01B93C04, 0x1FF77C47,
- 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1F07FC04, 0xEEAEBC00, 0x10AD7C00, 0xF0AFFC00,
- 0xF0AFFC00, 0xE1BBBC04, 0x1FF77C47, 0xFFFFEC04,
- 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04,
- 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1FF5FC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, 0xFFFFEC04, 0xFFFFEC04,
- 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x7FFFFC07, 0xFFFFEC04, 0xFFFFEC04, 0xFFFFEC04
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Test ID string (QS860T...)
- *
- * Always return 1
- */
-
-int checkboard (void)
-{
- char *s, *e;
- char buf[64];
- int i;
-
- i = getenv_r("serial#", buf, sizeof(buf));
- s = (i>0) ? buf : NULL;
-
- if (!s || strncmp(s, "QS860T", 6)) {
- puts ("### No HW ID - assuming QS860T");
- } else {
- for (e=s; *e; ++e) {
- if (*e == ' ')
- break;
- }
-
- for ( ; s<e; ++s) {
- putc (*s);
- }
- }
- putc ('\n');
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size;
-
- upmconfig(UPMB, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
-
- /*
- * Prescaler for refresh
- */
- memctl->memc_mptpr = 0x0400;
-
- /*
- * Map controller bank 2 to the SDRAM address
- */
- memctl->memc_or2 = CFG_OR2;
- memctl->memc_br2 = CFG_BR2;
- udelay(200);
-
- /* perform SDRAM initialization sequence */
- memctl->memc_mbmr = CFG_16M_MBMR;
- udelay(100);
-
- memctl->memc_mar = 0x00000088;
- memctl->memc_mcr = 0x80804105; /* run precharge pattern */
- udelay(1);
-
- /* Run two refresh cycles on SDRAM */
- memctl->memc_mbmr = 0x18802118;
- memctl->memc_mcr = 0x80804130;
- memctl->memc_mbmr = 0x18802114;
- memctl->memc_mcr = 0x80804106;
-
- udelay (1000);
-
-#if 0
- /*
- * Check for 64M SDRAM Memory Size
- */
- size = dram_size (CFG_64M_MBMR, (ulong *)SDRAM_BASE, SDRAM_64M_MAX_SIZE);
- udelay (1000);
-
- /*
- * Check for 16M SDRAM Memory Size
- */
- if (size != SDRAM_64M_MAX_SIZE) {
-#endif
- size = dram_size (CFG_16M_MBMR, (long *)SDRAM_BASE, SDRAM_16M_MAX_SIZE);
- udelay (1000);
-#if 0
- }
-
- memctl->memc_or2 = ((-size) & 0xFFFF0000) | SDRAM_TIMING;
-#endif
-
-
- udelay(10000);
-
-
-#if 0
-
- /*
- * Also, map other memory to correct position
- */
-
- /*
- * Map the 8M Intel Flash device to chip select 1
- */
- memctl->memc_or1 = CFG_OR1;
- memctl->memc_br1 = CFG_BR1;
-
-
- /*
- * Map 64K NVRAM, Sipex Device, NAND Ctl Reg, and LED Ctl Reg
- * to chip select 3
- */
- memctl->memc_or3 = CFG_OR3;
- memctl->memc_br3 = CFG_BR3;
-
- /*
- * Map chip selects 4, 5, 6, & 7 for external expansion connector
- */
- memctl->memc_or4 = CFG_OR4;
- memctl->memc_br4 = CFG_BR4;
-
- memctl->memc_or5 = CFG_OR5;
- memctl->memc_br5 = CFG_BR5;
-
- memctl->memc_or6 = CFG_OR6;
- memctl->memc_br6 = CFG_BR6;
-
- memctl->memc_or7 = CFG_OR7;
- memctl->memc_br7 = CFG_BR7;
-
-#endif
-
- return (size);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mbmr_value, long int *base, long int maxsize)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mbmr = mbmr_value;
-
- return (get_ram_size(base, maxsize));
-}
diff --git a/board/snmc/qs860t/u-boot.lds b/board/snmc/qs860t/u-boot.lds
deleted file mode 100644
index cb3f456a0e..0000000000
--- a/board/snmc/qs860t/u-boot.lds
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- cpu/mpc8xx/traps.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/time.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.ppcenv)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/spd8xx/Makefile b/board/spd8xx/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/spd8xx/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/spd8xx/config.mk b/board/spd8xx/config.mk
deleted file mode 100644
index e1e01929b3..0000000000
--- a/board/spd8xx/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2000
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# Ulrich Lutz, Speech Design GmbH, ulutz@datalab.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
-#
-
-#
-# SPD823TS boards
-#
-
-TEXT_BASE = 0xFF000000
diff --git a/board/spd8xx/flash.c b/board/spd8xx/flash.c
deleted file mode 100644
index 8c0bb4f567..0000000000
--- a/board/spd8xx/flash.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- /* All Speech Design board memory (DRAM and EPROM) initialisation is
- done in dram_init().
- The caller of ths function here expects the total size and will hang,
- if we give here back 0. So we return the EPROM size. */
-
- return (1024 * 1024); /* 1 MB */
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t *info)
-{
- printf("no FLASH memory in MPC823TS board\n");
- return;
-}
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- return 1;
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/spd8xx/spd8xx.c b/board/spd8xx/spd8xx.c
deleted file mode 100644
index c79b9b0dd5..0000000000
--- a/board/spd8xx/spd8xx.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- * Ulrich Lutz, Speech Design GmbH, ulutz@datalab.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 <common.h>
-#include <mpc8xx.h>
-#include <commproc.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sharc_table[] = {
- /*
- * Single Read. (Offset 0 in UPM RAM)
- */
- 0x0FF3FC04, 0x0FF3EC00, 0x7FFFEC04, 0xFFFFEC04,
- 0xFFFFEC05, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Read. (Offset 8 in UPM RAM)
- */
- /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPM RAM)
- */
- 0x0FAFFC04, 0x0FAFEC00, 0x7FFFEC04, 0xFFFFEC04,
- 0xFFFFEC05, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPM RAM)
- */
- /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPM RAM)
- */
- /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPM RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-
-const uint sdram_table[] = {
- /*
- * Single Read. (Offset 0 in UPM RAM)
- */
- 0x1F07FC04, 0xEEAEFC04, 0x11ADFC04, 0xEFBBBC00,
- 0x1FF77C47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPM RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FF77C35, 0xEFEABC34, 0x1FB57C35, /* last */
- /*
- * Burst Read. (Offset 8 in UPM RAM)
- */
- 0x1F07FC04, 0xEEAEFC04, 0x10ADFC04, 0xF0AFFC00,
- 0xF0AFFC00, 0xF1AFFC00, 0xEFBBBC00, 0x1FF77C47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPM RAM)
- */
- 0x1F27FC04, 0xEEAEBC00, 0x01B93C04, 0x1FF77C47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPM RAM)
- */
- 0x1F07FC04, 0xEEAEBC00, 0x10AD7C00, 0xF0AFFC00,
- 0xF0AFFC00, 0xE1BBBC04, 0x1FF77C47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPM RAM)
- */
- 0x1FF5FC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPM RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- */
-
-int checkboard (void)
-{
- puts ("Board: SPD823TS\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size_b0;
-
-#if 0
- /*
- * Map controller bank 2 to the SRAM bank at preliminary address.
- */
- memctl->memc_or2 = CFG_OR2;
- memctl->memc_br2 = CFG_BR2;
-#endif
-
- /*
- * Map controller bank 4 to the PER8 bank.
- */
- memctl->memc_or4 = CFG_OR4;
- memctl->memc_br4 = CFG_BR4;
-
-#if 0
- /* Configure SHARC at UMA */
- upmconfig (UPMA, (uint *) sharc_table,
- sizeof (sharc_table) / sizeof (uint));
- /* Map controller bank 5 to the SHARC */
- memctl->memc_or5 = CFG_OR5;
- memctl->memc_br5 = CFG_BR5;
-#endif
-
- memctl->memc_mamr = 0x00001000;
-
- /* Configure SDRAM at UMB */
- upmconfig (UPMB, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- memctl->memc_mptpr = CFG_MPTPR_1BK_8K;
-
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller bank 3 to the SDRAM bank at preliminary address.
- */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
-
- memctl->memc_mbmr = CFG_MBMR_8COL; /* refresh not enabled yet */
-
- udelay (200);
- memctl->memc_mcr = 0x80806105;
- udelay (1);
- memctl->memc_mcr = 0x80806130;
- udelay (1);
- memctl->memc_mcr = 0x80806130;
- udelay (1);
- memctl->memc_mcr = 0x80806106;
-
- memctl->memc_mbmr |= MBMR_PTBE; /* refresh enabled */
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- */
- size_b0 =
- dram_size (CFG_MBMR_8COL, SDRAM_BASE3_PRELIM,
- SDRAM_MAX_SIZE);
-
- memctl->memc_mbmr = CFG_MBMR_8COL | MBMR_PTBE;
-
- return (size_b0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base,
- long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mbmr = mamr_value;
-
- return (get_ram_size (base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-void reset_phy (void)
-{
- immap_t *immr = (immap_t *) CFG_IMMR;
- ushort sreg;
-
- /* Configure extra port pins for NS DP83843 PHY */
- immr->im_ioport.iop_papar &= ~(PA_ENET_MDC | PA_ENET_MDIO);
-
- sreg = immr->im_ioport.iop_padir;
- sreg |= PA_ENET_MDC; /* Mgmt. Data Clock is Output */
- sreg &= ~(PA_ENET_MDIO); /* Mgmt. Data I/O is bidirect. => Input */
- immr->im_ioport.iop_padir = sreg;
-
- immr->im_ioport.iop_padat &= ~(PA_ENET_MDC); /* set MDC = 0 */
-
- /*
- * RESET in implemented by a positive pulse of at least 1 us
- * at the reset pin.
- *
- * Configure RESET pins for NS DP83843 PHY, and RESET chip.
- *
- * Note: The RESET pin is high active, but there is an
- * inverter on the SPD823TS board...
- */
- immr->im_ioport.iop_pcpar &= ~(PC_ENET_RESET);
- immr->im_ioport.iop_pcdir |= PC_ENET_RESET;
- /* assert RESET signal of PHY */
- immr->im_ioport.iop_pcdat &= ~(PC_ENET_RESET);
- udelay (10);
- /* de-assert RESET signal of PHY */
- immr->im_ioport.iop_pcdat |= PC_ENET_RESET;
- udelay (10);
-}
-
-/* ------------------------------------------------------------------------- */
-
-void ide_set_reset (int on)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
-
- /*
- * Configure PC for IDE Reset Pin
- */
- if (on) { /* assert RESET */
- immr->im_ioport.iop_pcdat &= ~(CFG_PC_IDE_RESET);
- } else { /* release RESET */
- immr->im_ioport.iop_pcdat |= CFG_PC_IDE_RESET;
- }
-
- /* program port pin as GPIO output */
- immr->im_ioport.iop_pcpar &= ~(CFG_PC_IDE_RESET);
- immr->im_ioport.iop_pcso &= ~(CFG_PC_IDE_RESET);
- immr->im_ioport.iop_pcdir |= CFG_PC_IDE_RESET;
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/spd8xx/u-boot.lds b/board/spd8xx/u-boot.lds
deleted file mode 100644
index f9150ab3d1..0000000000
--- a/board/spd8xx/u-boot.lds
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * (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
- */
-
-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)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FF) & 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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/spd8xx/u-boot.lds.debug b/board/spd8xx/u-boot.lds.debug
deleted file mode 100644
index 650572d4d0..0000000000
--- a/board/spd8xx/u-boot.lds.debug
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/ssv/adnpesc1/Makefile b/board/ssv/adnpesc1/Makefile
deleted file mode 100644
index 5b87b75e76..0000000000
--- a/board/ssv/adnpesc1/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o misc.o
-SOBJS := vectors.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/ssv/adnpesc1/adnpesc1.c b/board/ssv/adnpesc1/adnpesc1.c
deleted file mode 100644
index 2f704a0af9..0000000000
--- a/board/ssv/adnpesc1/adnpesc1.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * (C) Copyright 2004, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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 <common.h>
-#include <nios-io.h>
-#include <spi.h>
-
-#if defined(CONFIG_HW_WATCHDOG)
-extern void ssv_wd_pio_init(void); /* comes from ../common/wd_pio.c
- included by ./misc.c */
-#endif
-
-void _default_hdlr (void)
-{
- printf ("default_hdlr\n");
-}
-
-int board_early_init_f (void)
-{
-#if defined(CONFIG_HW_WATCHDOG)
- ssv_wd_pio_init();
-#endif
- return 0;
-}
-
-int checkboard (void)
-{
- puts ( "Board: SSV DilNetPC ADNP/ESC1"
-#if defined(CONFIG_DNPEVA2)
- " on DNP/EVA2"
-#endif
- "\n");
-#if defined(CONFIG_NIOS_BASE_32)
- puts ("Conf.: SSV Base 32 (nios_32)\n");
-#endif
-
- return 0;
-}
-
-long int initdram (int board_type)
-{
- return (0);
-}
-
-/*
- * The following are used to control the SPI chip selects for the SPI command.
- */
-#if (CONFIG_COMMANDS & CFG_CMD_SPI) && CONFIG_NIOS_SPI
-
-#define SPI_RTC_CS_MASK 0x00000001
-
-void spi_rtc_chipsel(int cs)
-{
- nios_spi_t *spi = (nios_spi_t *)CFG_NIOS_SPIBASE;
-
- if (cs)
- spi->slaveselect = SPI_RTC_CS_MASK; /* activate (1) */
- else
- spi->slaveselect = 0; /* deactivate (0) */
-}
-
-/*
- * The SPI command uses this table of functions for controlling the SPI
- * chip selects: it calls the appropriate function to control the SPI
- * chip selects.
- */
-spi_chipsel_type spi_chipsel[] = {
- spi_rtc_chipsel
-};
-int spi_chipsel_cnt = sizeof(spi_chipsel) / sizeof(spi_chipsel[0]);
-
-#endif /* CFG_CMD_SPI */
-
-#if defined(CONFIG_POST)
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed(void)
-{
- return 0; /* No hotkeys supported */
-}
-#endif /* CONFIG_POST */
diff --git a/board/ssv/adnpesc1/config.mk b/board/ssv/adnpesc1/config.mk
deleted file mode 100644
index 7d8eb03d82..0000000000
--- a/board/ssv/adnpesc1/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# (C) Copyright 2004
-# Li-Pro.Net <www.li-pro.net>
-# Stephan Linz <linz@li-pro.net>
-#
-# 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
-#
-
-TEXT_BASE = 0x02fc0000 # ATTENTION: notice your CFG_MONITOR_LEN setting
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
diff --git a/board/ssv/adnpesc1/flash.c b/board/ssv/adnpesc1/flash.c
deleted file mode 100644
index fd8379b1b8..0000000000
--- a/board/ssv/adnpesc1/flash.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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 <common.h>
-#include <nios.h>
-
-/*
- * include common flash code (for ssv boards)
- */
-#include "../common/flash.c"
-
-/*---------------------------------------------------------------------*/
-#define BANKSZ (8 * 1024 * 1024)
-#define SECTSZ (64 * 1024)
-#define UBOOTSECS ((CFG_MONITOR_LEN + CFG_ENV_SIZE) / SECTSZ)
-#define UBOOTAREA (UBOOTSECS * 64 * 1024) /* monitor / env area */
-
-/*---------------------------------------------------------------------*/
-unsigned long flash_init (void)
-{
- int i;
- unsigned long addr;
- flash_info_t *fli = &flash_info[0];
-
- fli->size = BANKSZ;
- fli->sector_count = CFG_MAX_FLASH_SECT;
- fli->flash_id = FLASH_MAN_AMD + FLASH_AMLV640U;
-
- addr = CFG_FLASH_BASE;
- for (i = 0; i < fli->sector_count; ++i) {
- fli->start[i] = addr;
- addr += SECTSZ;
-
- /* Protect monitor / environment area */
- if (addr <= (CFG_FLASH_BASE + UBOOTAREA))
- fli->protect[i] = 1;
- else
- fli->protect[i] = 0;
- }
-
- return (BANKSZ);
-}
diff --git a/board/ssv/adnpesc1/misc.c b/board/ssv/adnpesc1/misc.c
deleted file mode 100644
index 1c5fcb9fca..0000000000
--- a/board/ssv/adnpesc1/misc.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * (C) Copyright 2003, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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
- *
- * board/ssv/adnpesc1/misc.c
- *
- * miscellaneous board interfaces / drivers
- */
-
-#include <common.h>
-
-#if defined(CONFIG_STATUS_LED)
-#include "../common/cmd_sled.c"
-#endif
-
-#if defined(CONFIG_HW_WATCHDOG)
-#include "../common/wd_pio.c"
-#endif
-
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
-#include "../common/post.c"
-#endif
diff --git a/board/ssv/adnpesc1/u-boot.lds b/board/ssv/adnpesc1/u-boot.lds
deleted file mode 100644
index 8b01f45e55..0000000000
--- a/board/ssv/adnpesc1/u-boot.lds
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * (C) Copyright 2003, Psyent Corporation <www.psyent.com>
- * Scott McNutt <smcnutt@psyent.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
- */
-
-
-OUTPUT_FORMAT("elf32-nios")
-OUTPUT_ARCH(nios)
-ENTRY(_start)
-
-SECTIONS
-{
- .text :
- {
- cpu/nios/start.o (.text)
- *(.text)
- }
- __text_end = .;
-
- . = ALIGN(4);
- .rodata :
- {
- *(.rodata)
- }
- __rodata_end = .;
-
- . = ALIGN(4);
- .data :
- {
- *(.data)
- }
- . = ALIGN(4);
- __data_end = .;
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd :
- {
- *(.u_boot_cmd)
- }
- . = ALIGN(4);
- __u_boot_cmd_end = .;
-
- __bss_start = .;
- . = ALIGN(4);
- .bss :
- {
- *(.bss)
- }
- . = ALIGN(4);
- __bss_end = .;
-}
diff --git a/board/ssv/adnpesc1/vectors.S b/board/ssv/adnpesc1/vectors.S
deleted file mode 100644
index fb7e17e43e..0000000000
--- a/board/ssv/adnpesc1/vectors.S
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (C) Copyright 2004, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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 <config.h>
-
-
-/*************************************************************************
- * Exception Vector Table
- *
- * This could have gone in the cpu soure tree, but the whole point of
- * Nios is customization -- and polluting the cpu source tree with
- * board-specific ifdef's really defeats the purpose, no? With this in
- * the board-specific tree, each board has the freedom to organize
- * vectors/traps, etc anyway it wants. The init code copies this table
- * to the proper location.
- *
- * Each board can do what it likes here. But there are four "standard"
- * handlers availble:
- *
- * _cwp_lolimit -Handles register window underflows.
- * _cwp_hilimit -Handles register window overflows.
- * _timebase_int -Increments the timebase.
- * _def_xhandler -Default exception handler.
- *
- * _timebase_int handles a Nios Timer interrupt and increments the
- * timestamp used for the get_timer(), reset_timer(), etc. routines. It
- * expects the timer to be configured like the standard-32 low priority
- * timer.
- *
- * _def_xhandler dispatches exceptions/traps via the external_interrupt()
- * routine. This lets you use the irq_install_handler() and handle your
- * interrupts/traps with code written in C.
- ************************************************************************/
-
- .data
- .global _vectors
- .align 4
-_vectors:
-
-#if defined(CFG_NIOS_CPU_OCI_BASE)
- /* OCI does the reset job */
- .long _def_xhandler@h /* Vector 0 - NMI / Reset */
-#else
- /* there is no OCI, so we have to do a direct reset jump here */
- .long CFG_NIOS_CPU_RST_VECT /* Vector 0 - Reset to GERMS */
-#endif
- .long _cwp_lolimit@h /* Vector 1 - underflow */
- .long _cwp_hilimit@h /* Vector 2 - overflow */
-
- .long _def_xhandler@h /* Vector 3 - GNUPro debug */
- .long _def_xhandler@h /* Vector 4 - GNUPro debug */
- .long _def_xhandler@h /* Vector 5 - GNUPro debug */
- .long _def_xhandler@h /* Vector 6 - future reserved */
- .long _def_xhandler@h /* Vector 7 - future reserved */
- .long _def_xhandler@h /* Vector 8 - future reserved */
- .long _def_xhandler@h /* Vector 9 - future reserved */
- .long _def_xhandler@h /* Vector 10 - future reserved */
- .long _def_xhandler@h /* Vector 11 - future reserved */
- .long _def_xhandler@h /* Vector 12 - future reserved */
- .long _def_xhandler@h /* Vector 13 - future reserved */
- .long _def_xhandler@h /* Vector 14 - future reserved */
- .long _def_xhandler@h /* Vector 15 - future reserved */
-#if (CFG_NIOS_TMRIRQ == 16)
- .long _timebase_int@h /* Vector 16 - lopri timer*/
-#else
- .long _def_xhandler@h /* Vector 16 */
-#endif
- .long _def_xhandler@h /* Vector 17 */
- .long _def_xhandler@h /* Vector 18 */
- .long _def_xhandler@h /* Vector 19 */
- .long _def_xhandler@h /* Vector 20 */
- .long _def_xhandler@h /* Vector 21 */
- .long _def_xhandler@h /* Vector 22 */
- .long _def_xhandler@h /* Vector 23 */
- .long _def_xhandler@h /* Vector 24 */
- .long _def_xhandler@h /* Vector 25 */
- .long _def_xhandler@h /* Vector 26 */
- .long _def_xhandler@h /* Vector 27 */
- .long _def_xhandler@h /* Vector 28 */
- .long _def_xhandler@h /* Vector 29 */
- .long _def_xhandler@h /* Vector 30 */
- .long _def_xhandler@h /* Vector 31 */
- .long _def_xhandler@h /* Vector 32 */
- .long _def_xhandler@h /* Vector 33 */
- .long _def_xhandler@h /* Vector 34 */
- .long _def_xhandler@h /* Vector 35 */
- .long _def_xhandler@h /* Vector 36 */
- .long _def_xhandler@h /* Vector 37 */
- .long _def_xhandler@h /* Vector 38 */
- .long _def_xhandler@h /* Vector 39 */
- .long _def_xhandler@h /* Vector 40 */
- .long _def_xhandler@h /* Vector 41 */
- .long _def_xhandler@h /* Vector 42 */
- .long _def_xhandler@h /* Vector 43 */
- .long _def_xhandler@h /* Vector 44 */
- .long _def_xhandler@h /* Vector 45 */
- .long _def_xhandler@h /* Vector 46 */
- .long _def_xhandler@h /* Vector 47 */
- .long _def_xhandler@h /* Vector 48 */
- .long _def_xhandler@h /* Vector 49 */
-#if (CFG_NIOS_TMRIRQ == 50)
- .long _timebase_int@h /* Vector 50 - lopri timer*/
-#else
- .long _def_xhandler@h /* Vector 50 */
-#endif
- .long _def_xhandler@h /* Vector 51 */
- .long _def_xhandler@h /* Vector 52 */
- .long _def_xhandler@h /* Vector 53 */
- .long _def_xhandler@h /* Vector 54 */
- .long _def_xhandler@h /* Vector 55 */
- .long _def_xhandler@h /* Vector 56 */
- .long _def_xhandler@h /* Vector 57 */
- .long _def_xhandler@h /* Vector 58 */
- .long _def_xhandler@h /* Vector 59 */
- .long _def_xhandler@h /* Vector 60 */
- .long _def_xhandler@h /* Vector 61 */
- .long _def_xhandler@h /* Vector 62 */
- .long _def_xhandler@h /* Vector 63 */
diff --git a/board/ssv/common/cmd_sled.c b/board/ssv/common/cmd_sled.c
deleted file mode 100644
index d61fa3ed47..0000000000
--- a/board/ssv/common/cmd_sled.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * (C) Copyright 2004, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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 <common.h>
-#include <command.h>
-#include <status_led.h>
-
-#if defined(CONFIG_STATUS_LED)
-
-/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- * !!!!! Q u i c k & D i r t y H a c k !!!!!
- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- * !!!!! !!!!!
- * !!!!! Next type definition was coming from original !!!!!
- * !!!!! status LED driver drivers/status_led.c and !!!!!
- * !!!!! should exported for using here. !!!!!
- * !!!!! !!!!!
- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
-
-typedef struct {
- led_id_t mask;
- int state;
- int period;
- int cnt;
-} led_dev_t;
-
-extern led_dev_t led_dev[];
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-int do_sled (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- int led_id = 0;
-
- if (argc > 1) {
-#ifdef STATUS_LED_BOOT
- if (!strcmp (argv[1], "boot")) {
- led_id = STATUS_LED_BOOT + 1;
- }
-#endif
-#ifdef STATUS_LED_RED
- if (!strcmp (argv[1], "red")) {
- led_id = STATUS_LED_RED + 1;
- }
-#endif
-#ifdef STATUS_LED_YELLOW
- if (!strcmp (argv[1], "yellow")) {
- led_id = STATUS_LED_YELLOW + 1;
- }
-#endif
-#ifdef STATUS_LED_GREEN
- if (!strcmp (argv[1], "green")) {
- led_id = STATUS_LED_GREEN + 1;
- }
-#endif
- }
-
- switch (argc) {
- case 1:
-#if (STATUS_LED_BITS > 3)
- for (; led_id < 4; led_id++)
-#elif (STATUS_LED_BITS > 2)
- for (; led_id < 3; led_id++)
-#elif (STATUS_LED_BITS > 1)
- for (; led_id < 2; led_id++)
-#elif (STATUS_LED_BITS > 0)
- for (; led_id < 1; led_id++)
-#else
-#error "*** STATUS_LED_BITS not correct defined ***"
-#endif
- {
- printf ("Status LED '%s' is %s\n",
- led_id == STATUS_LED_BOOT ? "boot"
- : led_id == STATUS_LED_RED ? "red"
- : led_id == STATUS_LED_YELLOW ? "yellow"
- : led_id ==
- STATUS_LED_GREEN ? "green" : "unknown",
- led_dev[led_id].state ==
- STATUS_LED_ON ? "on" : led_dev[led_id].
- state ==
- STATUS_LED_OFF ? "off" : led_dev[led_id].
- state ==
- STATUS_LED_BLINKING ? "blinking" : "unknown");
- }
- return 0;
- case 2:
- if (led_id) {
- printf ("Status LED '%s' is %s\n", argv[1],
- led_dev[led_id - 1].state ==
- STATUS_LED_ON ? "on" : led_dev[led_id -
- 1].state ==
- STATUS_LED_OFF ? "off" : led_dev[led_id -
- 1].state ==
- STATUS_LED_BLINKING ? "blinking" : "unknown");
- return 0;
- } else
- break;
- case 3:
- if (led_id) {
- if (!strcmp (argv[2], "on")) {
- status_led_set (led_id - 1, STATUS_LED_ON);
- return 0;
- } else if (!strcmp (argv[2], "off")) {
- status_led_set (led_id - 1, STATUS_LED_OFF);
- return 0;
- } else if (!strcmp (argv[2], "blink")) {
- status_led_set (led_id - 1,
- STATUS_LED_BLINKING);
- return 0;
- } else
- break;
- } else
- break;
- default:
- break;
- }
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
-}
-
-#ifdef STATUS_LED_BOOT
-#ifdef STATUS_LED_RED
-#ifdef STATUS_LED_YELLOW
-#ifdef STATUS_LED_GREEN
-#define __NAME_STR " - name: boot|red|yellow|green\n"
-#else
-#define __NAME_STR " - name: boot|red|yellow\n"
-#endif
-#else
-#define __NAME_STR " - name: boot|red\n"
-#endif
-#else
-#define __NAME_STR " - name: boot\n"
-#endif
-#else
-#define __NAME_STR " - name: (no such defined)\n"
-#endif
-
-U_BOOT_CMD (sled, 3, 0, do_sled,
- "sled - check and set status led\n",
- "sled [name [state]]\n" __NAME_STR " - state: on|off|blink\n");
-#endif /* CFG_CMD_BSP */
-#endif /* CONFIG_STATUS_LED */
diff --git a/board/ssv/common/flash.c b/board/ssv/common/flash.c
deleted file mode 100644
index 70cab7fa20..0000000000
--- a/board/ssv/common/flash.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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 <common.h>
-#include <watchdog.h>
-#include <nios.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-/*--------------------------------------------------------------------*/
-void flash_print_info (flash_info_t * info)
-{
- int i, k;
- unsigned long size;
- int erased;
- volatile unsigned char *flash;
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
-
- /* Check if whole sector is erased */
- if (i != (info->sector_count - 1))
- size = info->start[i + 1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned char *) info->start[i];
- for (k = 0; k < size; k++) {
- if (*flash++ != 0xff) {
- erased = 0;
- break;
- }
- }
-
- /* Print the info */
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s%s", info->start[i], erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
- }
- printf ("\n");
-}
-
-/*-------------------------------------------------------------------*/
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int prot, sect, wait;
- unsigned oldpri;
- ulong start;
-
- /* Some sanity checking */
- if ((s_first < 0) || (s_first > s_last)) {
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-#ifdef DEBUG
- for (sect = s_first; sect <= s_last; sect++) {
- printf("- Erase: Sect: %i @ 0x%08x\n", sect, info->start[sect]);
- }
-#endif
-
- /* NOTE: disabling interrupts on Nios can be very bad since it
- * also disables the LO_LIMIT exception. It's better here to
- * set the interrupt priority to 3 & restore it when we're done.
- */
- oldpri = ipri (3);
-
- /* It's ok to erase multiple sectors provided we don't delay more
- * than 50 usec between cmds ... at which point the erase time-out
- * occurs. So don't go and put printf() calls in the loop ... it
- * won't be very helpful ;-)
- */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
- *addr = 0xf0;
- *(addr+0xAAA/2) = 0xaa;
- *(addr+0x554/2) = 0x55;
- *(addr+0xAAA/2) = 0x80;
- *(addr+0xAAA/2) = 0xaa;
- *(addr+0x554/2) = 0x55;
- *addr2 = 0x30;
- /* Now just wait for 0xffff & provide some user
- * feedback while we wait. Here we have to grant
- * timer interrupts. Otherwise get_timer() can't
- * work right. */
- ipri(oldpri);
- start = get_timer (0);
- while (*addr2 != 0xffff) {
- for (wait = 8; wait; wait--) {
- udelay (125 * 1000);
- }
- putc ('.');
- if (get_timer (start) > CFG_FLASH_ERASE_TOUT) {
- printf ("timeout\n");
- return 1;
- }
- }
- oldpri = ipri (3); /* disallow non important irqs again */
- }
- }
-
- printf ("\n");
- *addr = 0xf0;
-
- /* Restore interrupt priority */
- ipri (oldpri);
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * srcbuffer, ulong addr, ulong cnt)
-{
-
- volatile CFG_FLASH_WORD_SIZE *cmd = (vu_short *) info->start[0];
- volatile CFG_FLASH_WORD_SIZE *dst = (vu_short *) addr;
- CFG_FLASH_WORD_SIZE *src = (void *) srcbuffer;
- CFG_FLASH_WORD_SIZE b;
- unsigned oldpri;
- ulong start;
-
- cnt /= sizeof(CFG_FLASH_WORD_SIZE);
- while (cnt) {
- /* Check for sufficient erase */
- b = *src;
- if ((*dst & b) != b) {
- printf ("%02x : %02x\n", *dst, b);
- return (2);
- }
-
- /* Disable interrupts other than window underflow
- * (interrupt priority 2)
- */
- oldpri = ipri (3);
- *(cmd+0xAAA/2) = 0xaa;
- *(cmd+0x554/2) = 0x55;
- *(cmd+0xAAA/2) = 0xa0;
- ipri (oldpri);
- *dst = b;
-
- /* Verify write */
- start = get_timer (0);
- while (*dst != b) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- *cmd = 0xf0;
- return 1;
- }
- }
- dst++;
- src++;
- cnt--;
- }
-
- *cmd = 0xf0;
- return (0);
-}
diff --git a/board/ssv/common/post.c b/board/ssv/common/post.c
deleted file mode 100644
index a5f29c1a30..0000000000
--- a/board/ssv/common/post.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (C) Copyright 2004, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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 <common.h>
-
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
-
-#if !defined(CFG_NIOS_POST_WORD_ADDR)
-#error "*** CFG_NIOS_POST_WORD_ADDR not defined ***"
-#endif
-
-void post_word_store (ulong a)
-{
- volatile void *save_addr = (void *)(CFG_NIOS_POST_WORD_ADDR);
- *(volatile ulong *) save_addr = a;
-}
-
-ulong post_word_load (void)
-{
- volatile void *save_addr = (void *)(CFG_NIOS_POST_WORD_ADDR);
- return *(volatile ulong *) save_addr;
-}
-
-#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/
diff --git a/board/ssv/common/wd_pio.c b/board/ssv/common/wd_pio.c
deleted file mode 100644
index 3215ac96aa..0000000000
--- a/board/ssv/common/wd_pio.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * (C) Copyright 2004, Li-Pro.Net <www.li-pro.net>
- * Stephan Linz <linz@li-pro.net>
- *
- * 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 <common.h>
-#include <command.h>
-#include <nios.h>
-#include <nios-io.h>
-
-#if defined(CONFIG_HW_WATCHDOG)
-
-#if !defined(CONFIG_HW_WDENA_BASE)
-#error "*** CONFIG_HW_WDENA_BASE not defined ***"
-#if !defined(CONFIG_HW_WDENA_BIT)
-#error "*** CONFIG_HW_WDENA_BIT not defined ***"
-#endif
-#endif
-
-#if !defined(CONFIG_HW_WDTOG_BASE)
-#error "*** CONFIG_HW_WDTOG_BASE not defined ***"
-#if !defined(CONFIG_HW_WDTOG_BIT)
-#error "*** CONFIG_HW_WDTOG_BIT not defined ***"
-#endif
-#endif
-
-#ifdef CONFIG_HW_WDPORT_WRONLY /* emulate read access */
-static unsigned __wd_ena_pio_portval = 0;
-#endif
-
-#define WD_PIO_INIT_DONE(V) ((V) & (1 << CONFIG_HW_WDENA_BIT))
-
-void ssv_wd_pio_init(void)
-{
- nios_pio_t *ena_piop = (nios_pio_t*)CONFIG_HW_WDENA_BASE;
- nios_pio_t *trg_piop = (nios_pio_t*)CONFIG_HW_WDTOG_BASE;
-
- trg_piop->data &= ~(1 << CONFIG_HW_WDTOG_BIT);
-
-#ifdef CONFIG_HW_WDPORT_WRONLY /* emulate read access */
-
- __wd_ena_pio_portval |= (1 << CONFIG_HW_WDENA_BIT);
- ena_piop->data = __wd_ena_pio_portval;
-
-#else /* !CONFIG_HW_WDPORT_WRONLY */
-
- trg_piop->direction |= (1 << CONFIG_HW_WDTOG_BIT);
-
- ena_piop->data |= (1 << CONFIG_HW_WDENA_BIT);
- ena_piop->direction |= (1 << CONFIG_HW_WDENA_BIT);
-
-#endif /* CONFIG_HW_WDPORT_WRONLY */
-}
-
-void ssv_wd_pio_done(void)
-{
- nios_pio_t *piop = (nios_pio_t*)CONFIG_HW_WDENA_BASE;
-
-#ifdef CONFIG_HW_WDPORT_WRONLY /* emulate read access */
-
- __wd_ena_pio_portval &= ~(1 << CONFIG_HW_WDENA_BIT);
- piop->data = __wd_ena_pio_portval;
-
-#else /* !CONFIG_HW_WDPORT_WRONLY */
-
- piop->data &= ~(1 << CONFIG_HW_WDENA_BIT);
-
-#endif /* CONFIG_HW_WDPORT_WRONLY */
-}
-
-void ssv_wd_pio_reset(void)
-{
- nios_pio_t *trg_piop = (nios_pio_t*)CONFIG_HW_WDTOG_BASE;
-
-#ifdef CONFIG_HW_WDPORT_WRONLY
- if (WD_PIO_INIT_DONE(__wd_ena_pio_portval))
-#else
- nios_pio_t *ena_piop = (nios_pio_t*)CONFIG_HW_WDENA_BASE;
-
- if (WD_PIO_INIT_DONE(ena_piop->data))
-#endif
- {
- trg_piop->data |= (1 << CONFIG_HW_WDTOG_BIT);
- trg_piop->data &= ~(1 << CONFIG_HW_WDTOG_BIT);
- }
-}
-
-void hw_watchdog_reset(void)
-{
- int re_enable = disable_interrupts ();
-
- ssv_wd_pio_reset();
- if (re_enable)
- enable_interrupts ();
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-int do_wd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- nios_pio_t *ena_piop = (nios_pio_t*)CONFIG_HW_WDENA_BASE;
-
- switch (argc)
- {
- case 1:
- printf ("Watchdog timer status is %s\n",
-#ifdef CONFIG_HW_WDPORT_WRONLY
- WD_PIO_INIT_DONE(__wd_ena_pio_portval)
-#else
- WD_PIO_INIT_DONE(ena_piop->data)
-#endif
- ? "on" : "off");
- return 0;
- case 2:
- if (!strcmp(argv[1],"on"))
- {
- ssv_wd_pio_init();
- printf("Watchdog timer now is on\n");
- return 0;
- }
- else if (!strcmp(argv[1],"off"))
- {
- ssv_wd_pio_done();
- printf("Watchdog timer now is off\n");
- return 0;
- }
- break;
- default:
- break;
- }
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
-}
-
-U_BOOT_CMD(
- wd, 2, 1, do_wd,
- "wd - check and set watchdog\n",
- "on - switch watchDog on\n"
- "wd off - switch watchdog off\n"
- "wd - print current status\n"
-);
-#endif /* CFG_CMD_BSP */
-#endif /* CONFIG_HW_WATCHDOG */
diff --git a/board/stxgp3/Makefile b/board/stxgp3/Makefile
deleted file mode 100644
index 7d52f8cac1..0000000000
--- a/board/stxgp3/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o flash.o
-SOBJS := init.o
-#SOBJS :=
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(OBJS) $(SOBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/stxgp3/config.mk b/board/stxgp3/config.mk
deleted file mode 100644
index 2427818e0a..0000000000
--- a/board/stxgp3/config.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Modified by Xianghua Xiao, X.Xiao@motorola.com
-# (C) Copyright 2002,2003 Motorola Inc.
-#
-# Copied from ADS85xx for STx GP3 - Dan Malek
-#
-# 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
-#
-
-#
-# default CCARBAR is at 0xff700000
-# assume U-Boot is less than 0.5MB
-#
-TEXT_BASE = 0xfff80000
-
-PLATFORM_CPPFLAGS += -DCONFIG_MPC85xx=1
-PLATFORM_CPPFLAGS += -DCONFIG_E500=1
diff --git a/board/stxgp3/flash.c b/board/stxgp3/flash.c
deleted file mode 100644
index 032989ba56..0000000000
--- a/board/stxgp3/flash.c
+++ /dev/null
@@ -1,515 +0,0 @@
-/*
- * (C) Copyright 2003, Dan Malek, Embedded Edge, LLC. <dan@embeddededge.com>
- * Copied from ADS85xx.
- * Updated to support the Silicon Tx GP3 8560. We should only find
- * two Intel 28F640 parts in 16-bit mode (i.e. 32-bit wide flash),
- * but I left other code here in case people order custom boards.
- *
- * (C) Copyright 2003 Motorola Inc.
- * Xianghua Xiao,(X.Xiao@motorola.com)
- *
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001, Stuart Hughes, Lineo Inc, stuarth@lineo.com
- * Add support the Sharp chips on the mpc8260ads.
- * I started with board/ip860/flash.c and made changes I found in
- * the MTD project by David Schleef.
- *
- * 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 <common.h>
-
-#if !defined(CFG_NO_FLASH)
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-#undef DEBUG
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static int clear_block_lock_bit(vu_long * addr);
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size;
- int i;
-
- /* Init: enable write,
- * or we cannot even write flash commands
- */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
-
- /* set the default sector offset */
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size, size<<20);
- }
-
- /* Re-do sizing to get full correct info */
- size = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
-#endif
- return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL: printf ("Intel "); break;
- case FLASH_MAN_SHARP: printf ("Sharp "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F640C3T: printf ("28F640C3T (64 Mbit x 2, 128 x 128k)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
- ulong sector_offset;
-
-#ifdef DEBUG
- printf("Check flash at 0x%08x\n",(uint)addr);
-#endif
- /* Write "Intelligent Identifier" command: read Manufacturer ID */
- *addr = 0x90909090;
- udelay(20);
- asm("sync");
-
- value = addr[0] & 0x00FF00FF;
-
-#ifdef DEBUG
- printf("manufacturer=0x%x\n",(uint)value);
-#endif
- switch (value) {
- case MT_MANUFACT: /* SHARP, MT or => Intel */
- case INTEL_ALT_MANU:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- printf("unknown manufacturer: %x\n", (unsigned int)value);
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
-#ifdef DEBUG
- printf("deviceID=0x%x\n",(uint)value);
-#endif
- switch (value) {
-
- case (INTEL_ID_28F640C3T):
- info->flash_id += FLASH_28F640C3T;
- info->sector_count = 135;
- info->size = 0x01000000;
- sector_offset = 0x20000;
- break; /* => 2x8 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table
- * The first 127 blocks are large, the last 8 are small.
- */
- for (i = 0; i < 127; i++) {
- info->start[i] = base;
- base += sector_offset;
- /* Sectors are locked upon reset */
- info->protect[i] = 0;
- }
- for (i = 127; i < 135; i++) {
- info->start[i] = base;
- base += 0x4000;
- /* Sectors are locked upon reset */
- info->protect[i] = 0;
- }
-
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (vu_long *)info->start[0];
- *addr = 0xFFFFFF; /* reset bank to read array mode */
- asm("sync");
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ( ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL)
- && ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_SHARP) ) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
-#ifdef DEBUG
- printf("\nFlash Erase:\n");
-#endif
- /* Make Sure Block Lock Bit is not set. */
- if(clear_block_lock_bit((vu_long *)(info->start[s_first]))){
- return 1;
- }
-
- /* Start erase on unprotected sectors */
-#if defined(DEBUG)
- printf("Begin to erase now,s_first=0x%x s_last=0x%x...\n",s_first,s_last);
-#endif
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *)(info->start[sect]);
- asm("sync");
-
- last = start = get_timer (0);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Reset Array */
- *addr = 0xffffffff;
- asm("sync");
- /* Clear Status Register */
- *addr = 0x50505050;
- asm("sync");
- /* Single Block Erase Command */
- *addr = 0x20202020;
- asm("sync");
- /* Confirm */
- *addr = 0xD0D0D0D0;
- asm("sync");
-
- if((info->flash_id & FLASH_TYPEMASK) != FLASH_LH28F016SCT) {
- /* Resume Command, as per errata update */
- *addr = 0xD0D0D0D0;
- asm("sync");
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
- while ((*addr & 0x00800080) != 0x00800080) {
- if(*addr & 0x00200020){
- printf("Error in Block Erase - Lock Bit may be set!\n");
- printf("Status Register = 0x%X\n", (uint)*addr);
- *addr = 0xFFFFFFFF; /* reset bank */
- asm("sync");
- return 1;
- }
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = 0xFFFFFFFF; /* reset bank */
- asm("sync");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
- /* reset to read mode */
- *addr = 0xFFFFFFFF;
- asm("sync");
- }
- }
-
- printf ("flash erase done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)dest;
- ulong start, csr;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Write Command */
- *addr = 0x10101010;
- asm("sync");
-
- /* Write Data */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- flag = 0;
-
- while (((csr = *addr) & 0x00800080) != 0x00800080) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- flag = 1;
- break;
- }
- }
- if (csr & 0x40404040) {
- printf ("CSR indicates write error (%08lx) at %08lx\n", csr, (ulong)addr);
- flag = 1;
- }
-
- /* Clear Status Registers Command */
- *addr = 0x50505050;
- asm("sync");
- /* Reset to read array mode */
- *addr = 0xFFFFFFFF;
- asm("sync");
-
- return (flag);
-}
-
-/*-----------------------------------------------------------------------
- * Clear Block Lock Bit, returns:
- * 0 - OK
- * 1 - Timeout
- */
-
-static int clear_block_lock_bit(vu_long * addr)
-{
- ulong start, now;
-
- /* Reset Array */
- *addr = 0xffffffff;
- asm("sync");
- /* Clear Status Register */
- *addr = 0x50505050;
- asm("sync");
-
- *addr = 0x60606060;
- asm("sync");
- *addr = 0xd0d0d0d0;
- asm("sync");
-
- start = get_timer (0);
- while((*addr & 0x00800080) != 0x00800080){
- if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout on clearing Block Lock Bit\n");
- *addr = 0xFFFFFFFF; /* reset bank */
- asm("sync");
- return 1;
- }
- }
- return 0;
-}
-
-#endif /* !CFG_NO_FLASH */
diff --git a/board/stxgp3/init.S b/board/stxgp3/init.S
deleted file mode 100644
index d504289bb2..0000000000
--- a/board/stxgp3/init.S
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright (C) 2004 Embedded Edge, LLC
- * Dan Malek <dan@embeddededge.com>
- * Copied from ADS85xx.
- * Updates for Silicon Tx GP3 8560. We only support 32-bit flash
- * and DDR with SPD EEPROM configuration.
- *
- * Copyright 2004 Freescale Semiconductor.
- * Copyright (C) 2002,2003, Motorola Inc.
- * Xianghua Xiao <X.Xiao@motorola.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
- */
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-#include <asm/cache.h>
-#include <asm/mmu.h>
-#include <config.h>
-#include <mpc85xx.h>
-
-
-/*
- * TLB0 and TLB1 Entries
- *
- * Out of reset, TLB1's Entry 0 maps the highest 4K for CCSRBAR.
- * However, CCSRBAR is then relocated to CFG_CCSRBAR right after
- * these TLB entries are established.
- *
- * The TLB entries for DDR are dynamically setup in spd_sdram()
- * and use TLB1 Entries 8 through 15 as needed according to the
- * size of DDR memory.
- *
- * MAS0: tlbsel, esel, nv
- * MAS1: valid, iprot, tid, ts, tsize
- * MAS2: epn, sharen, x0, x1, w, i, m, g, e
- * MAS3: rpn, u0-u3, ux, sx, uw, sw, ur, sr
- */
-
-#define entry_start \
- mflr r1 ; \
- bl 0f ;
-
-#define entry_end \
-0: mflr r0 ; \
- mtlr r1 ; \
- blr ;
-
-
- .section .bootpg, "ax"
- .globl tlb1_entry
-tlb1_entry:
- entry_start
-
- /*
- * Number of TLB0 and TLB1 entries in the following table
- */
- .long 13
-
-#if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR)
- /*
- * TLB0 4K Non-cacheable, guarded
- * 0xff700000 4K Initial CCSRBAR mapping
- *
- * This ends up at a TLB0 Index==0 entry, and must not collide
- * with other TLB0 Entries.
- */
- .long TLB1_MAS0(0, 0, 0)
- .long TLB1_MAS1(1, 0, 0, 0, 0)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_CCSRBAR_DEFAULT), 0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_CCSRBAR_DEFAULT), 0,0,0,0,0,1,0,1,0,1)
-#else
-#error("Update the number of table entries in tlb1_entry")
-#endif
-
- /*
- * TLB0 16K Cacheable, non-guarded
- * 0xd001_0000 16K Temporary Global data for initialization
- *
- * Use four 4K TLB0 entries. These entries must be cacheable
- * as they provide the bootstrap memory before the memory
- * controler and real memory have been configured.
- *
- * These entries end up at TLB0 Indicies 0x10, 0x14, 0x18 and 0x1c,
- * and must not collide with other TLB0 entries.
- */
- .long TLB1_MAS0(0, 0, 0)
- .long TLB1_MAS1(1, 0, 0, 0, 0)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_INIT_RAM_ADDR), \
- 0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_INIT_RAM_ADDR), \
- 0,0,0,0,0,1,0,1,0,1)
-
- .long TLB1_MAS0(0, 0, 0)
- .long TLB1_MAS1(1, 0, 0, 0, 0)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_INIT_RAM_ADDR + 4 * 1024), \
- 0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_INIT_RAM_ADDR + 4 * 1024), \
- 0,0,0,0,0,1,0,1,0,1)
-
- .long TLB1_MAS0(0, 0, 0)
- .long TLB1_MAS1(1, 0, 0, 0, 0)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_INIT_RAM_ADDR + 8 * 1024), \
- 0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_INIT_RAM_ADDR + 8 * 1024), \
- 0,0,0,0,0,1,0,1,0,1)
-
- .long TLB1_MAS0(0, 0, 0)
- .long TLB1_MAS1(1, 0, 0, 0, 0)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_INIT_RAM_ADDR + 12 * 1024), \
- 0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_INIT_RAM_ADDR + 12 * 1024), \
- 0,0,0,0,0,1,0,1,0,1)
-
-
- /*
- * TLB 0: 16M Non-cacheable, guarded
- * 0xff000000 16M FLASH
- * Out of reset this entry is only 4K.
- */
- .long TLB1_MAS0(1, 0, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_16M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_FLASH_BASE), 0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_FLASH_BASE), 0,0,0,0,0,1,0,1,0,1)
-
- /*
- * TLB 1: 256M Non-cacheable, guarded
- * 0x80000000 256M PCI1 MEM First half
- */
- .long TLB1_MAS0(1, 1, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_PCI1_MEM_BASE), 0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_PCI1_MEM_BASE), 0,0,0,0,0,1,0,1,0,1)
-
- /*
- * TLB 2: 256M Non-cacheable, guarded
- * 0x90000000 256M PCI1 MEM Second half
- */
- .long TLB1_MAS0(1, 2, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_PCI1_MEM_BASE + 0x10000000), \
- 0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_PCI1_MEM_BASE + 0x10000000), \
- 0,0,0,0,0,1,0,1,0,1)
-
- /*
- * TLB 3: 256M Non-cacheable, guarded
- * 0xc0000000 256M Rapid IO MEM First half
- */
- .long TLB1_MAS0(1, 3, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_RIO_MEM_BASE), 0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_RIO_MEM_BASE), 0,0,0,0,0,1,0,1,0,1)
-
- /*
- * TLB 4: 256M Non-cacheable, guarded
- * 0xd0000000 256M Rapid IO MEM Second half
- */
- .long TLB1_MAS0(1, 4, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_RIO_MEM_BASE + 0x10000000), \
- 0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_RIO_MEM_BASE + 0x10000000), \
- 0,0,0,0,0,1,0,1,0,1)
-
- /*
- * TLB 5: 64M Non-cacheable, guarded
- * 0xe000_0000 1M CCSRBAR
- * 0xe200_0000 16M PCI1 IO
- */
- .long TLB1_MAS0(1, 5, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_CCSRBAR), 0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_CCSRBAR), 0,0,0,0,0,1,0,1,0,1)
-
- /*
- * TLB 6: 64M Cacheable, non-guarded
- * 0xf000_0000 64M LBC SDRAM
- */
- .long TLB1_MAS0(1, 6, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_LBC_SDRAM_BASE), 0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_LBC_SDRAM_BASE), 0,0,0,0,0,1,0,1,0,1)
-
- /*
- * TLB 7: 16K Non-cacheable, guarded
- * 0xfc000000 16K Configuration Latch register
- */
- .long TLB1_MAS0(1, 7, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64K)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_LBC_LCLDEVS_BASE), 0,0,0,0,1,0,1,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_LBC_LCLDEVS_BASE), 0,0,0,0,0,1,0,1,0,1)
-
-#if !defined(CONFIG_SPD_EEPROM)
- /*
- * TLB 8, 9: 128M DDR
- * 0x00000000 64M DDR System memory
- * 0x04000000 64M DDR System memory
- * Without SPD EEPROM configured DDR, this must be setup manually.
- * Make sure the TLB count at the top of this table is correct.
- * Likely it needs to be increased by two for these entries.
- */
-#error("Update the number of table entries in tlb1_entry")
- .long TLB1_MAS0(1, 8, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_DDR_SDRAM_BASE), 0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_DDR_SDRAM_BASE), 0,0,0,0,0,1,0,1,0,1)
-
- .long TLB1_MAS0(1, 9, 0)
- .long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64M)
- .long TLB1_MAS2(E500_TLB_EPN(CFG_DDR_SDRAM_BASE + 0x4000000),
- 0,0,0,0,0,0,0,0)
- .long TLB1_MAS3(E500_TLB_RPN(CFG_DDR_SDRAM_BASE + 0x4000000),
- 0,0,0,0,0,1,0,1,0,1)
-#endif
-
- entry_end
-
-/*
- * LAW(Local Access Window) configuration:
- *
- * 0x0000_0000 0x7fff_ffff DDR 2G
- * 0x8000_0000 0x9fff_ffff PCI1 MEM 512M
- * 0xc000_0000 0xdfff_ffff RapidIO 512M
- * 0xe000_0000 0xe000_ffff CCSR 1M
- * 0xe200_0000 0xe2ff_ffff PCI1 IO 16M
- * 0xf000_0000 0xf7ff_ffff SDRAM 128M
- * 0xfc00_0000 0xfc00_ffff Config Latch 64K
- * 0xff00_0000 0xffff_ffff FLASH (boot bank) 16M
- *
- * Notes:
- * CCSRBAR and L2-as-SRAM don't need a configured Local Access Window.
- * If flash is 8M at default position (last 8M), no LAW needed.
- */
-
-#if !defined(CONFIG_SPD_EEPROM)
-#define LAWBAR0 ((CFG_DDR_SDRAM_BASE>>12) & 0xfffff)
-#define LAWAR0 (LAWAR_EN | LAWAR_TRGT_IF_DDR | (LAWAR_SIZE & LAWAR_SIZE_128M))
-#else
-#define LAWBAR0 0
-#define LAWAR0 ((LAWAR_TRGT_IF_DDR | (LAWAR_SIZE & LAWAR_SIZE_128M)) & ~LAWAR_EN)
-#endif
-
-#define LAWBAR1 ((CFG_PCI1_MEM_BASE>>12) & 0xfffff)
-#define LAWAR1 (LAWAR_EN | LAWAR_TRGT_IF_PCIX | (LAWAR_SIZE & LAWAR_SIZE_512M))
-
-/*
- * This is not so much the SDRAM map as it is the whole localbus map.
- */
-#define LAWBAR2 ((CFG_LBC_SDRAM_BASE>>12) & 0xfffff)
-#define LAWAR2 (LAWAR_EN | LAWAR_TRGT_IF_LBC | (LAWAR_SIZE & LAWAR_SIZE_256M))
-
-#define LAWBAR3 ((CFG_PCI1_IO_BASE>>12) & 0xfffff)
-#define LAWAR3 (LAWAR_EN | LAWAR_TRGT_IF_PCIX | (LAWAR_SIZE & LAWAR_SIZE_16M))
-
-/*
- * Rapid IO at 0xc000_0000 for 512 M
- */
-#define LAWBAR4 ((CFG_RIO_MEM_BASE>>12) & 0xfffff)
-#define LAWAR4 (LAWAR_EN | LAWAR_TRGT_IF_RIO | (LAWAR_SIZE & LAWAR_SIZE_512M))
-
-
- .section .bootpg, "ax"
- .globl law_entry
-law_entry:
- entry_start
- .long 0x05
- .long LAWBAR0,LAWAR0,LAWBAR1,LAWAR1,LAWBAR2,LAWAR2,LAWBAR3,LAWAR3
- .long LAWBAR4,LAWAR4
- entry_end
diff --git a/board/stxgp3/stxgp3.c b/board/stxgp3/stxgp3.c
deleted file mode 100644
index a58c043b62..0000000000
--- a/board/stxgp3/stxgp3.c
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * (C) Copyright 2003, Embedded Edge, LLC
- * Dan Malek, <dan@embeddededge.com>
- * Copied from ADS85xx.
- * Updates for Silicon Tx GP3 8560
- *
- * (C) Copyright 2003,Motorola Inc.
- * Xianghua Xiao, (X.Xiao@motorola.com)
- *
- * (C) Copyright 2002 Scott McNutt <smcnutt@artesyncp.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
- */
-
-
-extern long int spd_sdram (void);
-
-#include <common.h>
-#include <pci.h>
-#include <asm/processor.h>
-#include <asm/immap_85xx.h>
-#include <ioports.h>
-#include <asm/io.h>
-#include <spd.h>
-#include <miiphy.h>
-
-long int fixed_sdram (void);
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 TxENB */
- /* PA30 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 TxClav */
- /* PA29 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 TxSOC */
- /* PA28 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 RxENB */
- /* PA27 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 RxSOC */
- /* PA26 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 RxClav */
- /* PA25 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[0] */
- /* PA24 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[1] */
- /* PA23 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[2] */
- /* PA22 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[3] */
- /* PA21 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[4] */
- /* PA20 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[5] */
- /* PA19 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[6] */
- /* PA18 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXD[7] */
- /* PA17 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[7] */
- /* PA16 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[6] */
- /* PA15 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[5] */
- /* PA14 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[4] */
- /* PA13 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[3] */
- /* PA12 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[2] */
- /* PA11 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[1] */
- /* PA10 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXD[0] */
- /* PA9 */ { 0, 1, 1, 1, 0, 0 }, /* FCC1 L1TXD */
- /* PA8 */ { 0, 1, 1, 0, 0, 0 }, /* FCC1 L1RXD */
- /* PA7 */ { 0, 0, 0, 1, 0, 0 }, /* PA7 */
- /* PA6 */ { 0, 1, 1, 1, 0, 0 }, /* TDM A1 L1RSYNC */
- /* PA5 */ { 0, 0, 0, 1, 0, 0 }, /* PA5 */
- /* PA4 */ { 0, 0, 0, 1, 0, 0 }, /* PA4 */
- /* PA3 */ { 0, 0, 0, 1, 0, 0 }, /* PA3 */
- /* PA2 */ { 0, 0, 0, 1, 0, 0 }, /* PA2 */
- /* PA1 */ { 1, 0, 0, 0, 0, 0 }, /* FREERUN */
- /* PA0 */ { 0, 0, 0, 1, 0, 0 } /* PA0 */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RX_DIV */
- /* PB16 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RX_ERR */
- /* PB15 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TX_ERR */
- /* PB14 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TX_EN */
- /* PB13 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:COL */
- /* PB12 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:CRS */
- /* PB11 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB10 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB9 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB8 */ { 0, 1, 0, 0, 0, 0 }, /* FCC3:RXD */
- /* PB7 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB6 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB5 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB4 */ { 0, 1, 0, 1, 0, 0 }, /* FCC3:TXD */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 1, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 1, 0, 0 }, /* PC30 */
- /* PC29 */ { 0, 1, 1, 0, 0, 0 }, /* SCC1 EN *CLSN */
- /* PC28 */ { 0, 0, 0, 1, 0, 0 }, /* PC28 */
- /* PC27 */ { 0, 0, 0, 1, 0, 0 }, /* UART Clock in */
- /* PC26 */ { 0, 0, 0, 1, 0, 0 }, /* PC26 */
- /* PC25 */ { 0, 0, 0, 1, 0, 0 }, /* PC25 */
- /* PC24 */ { 0, 0, 0, 1, 0, 0 }, /* PC24 */
- /* PC23 */ { 0, 1, 0, 1, 0, 0 }, /* ATMTFCLK */
- /* PC22 */ { 0, 1, 0, 0, 0, 0 }, /* ATMRFCLK */
- /* PC21 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN RXCLK */
- /* PC20 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN TXCLK */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_CLK CLK13 */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC Tx Clock (CLK14) */
- /* PC17 */ { 0, 0, 0, 1, 0, 0 }, /* PC17 */
- /* PC16 */ { 0, 1, 0, 0, 0, 0 }, /* FCC Tx Clock (CLK16) */
- /* PC15 */ { 0, 1, 0, 0, 0, 0 }, /* PC15 */
- /* PC14 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN *CD */
- /* PC13 */ { 0, 0, 0, 1, 0, 0 }, /* PC13 */
- /* PC12 */ { 0, 1, 0, 1, 0, 0 }, /* PC12 */
- /* PC11 */ { 0, 0, 0, 1, 0, 0 }, /* LXT971 transmit control */
- /* PC10 */ { 0, 0, 0, 1, 0, 0 }, /* FETHMDC */
- /* PC9 */ { 0, 0, 0, 0, 0, 0 }, /* FETHMDIO */
- /* PC8 */ { 0, 0, 0, 1, 0, 0 }, /* PC8 */
- /* PC7 */ { 0, 0, 0, 1, 0, 0 }, /* PC7 */
- /* PC6 */ { 0, 0, 0, 1, 0, 0 }, /* PC6 */
- /* PC5 */ { 0, 0, 0, 1, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 1, 0, 0 }, /* PC4 */
- /* PC3 */ { 0, 0, 0, 1, 0, 0 }, /* PC3 */
- /* PC2 */ { 0, 0, 0, 1, 0, 1 }, /* ENET FDE */
- /* PC1 */ { 0, 0, 0, 1, 0, 0 }, /* ENET DSQE */
- /* PC0 */ { 0, 0, 0, 1, 0, 0 }, /* ENET LBK */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 0, 1, 0, 0, 0, 0 }, /* SCC1 EN RxD */
- /* PD30 */ { 0, 1, 1, 1, 0, 0 }, /* SCC1 EN TxD */
- /* PD29 */ { 0, 1, 0, 1, 0, 0 }, /* SCC1 EN TENA */
- /* PD28 */ { 1, 1, 0, 0, 0, 0 }, /* SCC2 RxD */
- /* PD27 */ { 1, 1, 0, 1, 0, 0 }, /* SCC2 TxD */
- /* PD26 */ { 0, 0, 0, 1, 0, 0 }, /* PD26 */
- /* PD25 */ { 0, 0, 0, 1, 0, 0 }, /* PD25 */
- /* PD24 */ { 0, 0, 0, 1, 0, 0 }, /* PD24 */
- /* PD23 */ { 0, 0, 0, 1, 0, 0 }, /* PD23 */
- /* PD22 */ { 0, 0, 0, 1, 0, 0 }, /* PD22 */
- /* PD21 */ { 0, 0, 0, 1, 0, 0 }, /* PD21 */
- /* PD20 */ { 0, 0, 0, 1, 0, 0 }, /* PD20 */
- /* PD19 */ { 0, 0, 0, 1, 0, 0 }, /* PD19 */
- /* PD18 */ { 0, 0, 0, 1, 0, 0 }, /* PD18 */
- /* PD17 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXPRTY */
- /* PD16 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXPRTY */
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 0, 0 }, /* I2C CLK */
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 0, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PD8 */ { 0, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PD7 */ { 0, 0, 0, 1, 0, 1 }, /* PD7 */
- /* PD6 */ { 0, 0, 0, 1, 0, 1 }, /* PD6 */
- /* PD5 */ { 0, 0, 0, 1, 0, 1 }, /* PD5 */
- /* PD4 */ { 0, 0, 0, 1, 0, 1 }, /* PD4 */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-static uint64_t next_led_update;
-static uint led_bit;
-
-int
-board_early_init_f(void)
-{
-#if defined(CONFIG_PCI)
- volatile immap_t *immr = (immap_t *)CFG_IMMR;
- volatile ccsr_pcix_t *pci = &immr->im_pcix;
-
- pci->peer &= 0xfffffffdf; /* disable master abort */
-#endif
- return 0;
-}
-
-void
-reset_phy(void)
-{
- volatile uint *blatch;
-
- blatch = (volatile uint *)CFG_LBC_LCLDEVS_BASE;
-
- /* reset Giga bit Ethernet port if needed here */
-
- *blatch &= ~0x000000c0;
- udelay(100);
- *blatch = 0x000000c1; /* Light one led, too */
- udelay(1000);
-
-#if 0 /* This is the port we really want to use for debugging. */
- /* reset the CPM FEC port */
-#if (CONFIG_ETHER_INDEX == 2)
- bcsr->bcsr2 &= ~FETH2_RST;
- udelay(2);
- bcsr->bcsr2 |= FETH2_RST;
- udelay(1000);
-#elif (CONFIG_ETHER_INDEX == 3)
- bcsr->bcsr3 &= ~FETH3_RST;
- udelay(2);
- bcsr->bcsr3 |= FETH3_RST;
- udelay(1000);
-#endif
-#if defined(CONFIG_MII) && defined(CONFIG_ETHER_ON_FCC)
- /* reset PHY */
- miiphy_reset("FCC1 ETHERNET", 0x0);
-
- /* change PHY address to 0x02 */
- bb_miiphy_write(NULL, 0, PHY_MIPSCR, 0xf028);
-
- bb_miiphy_write(NULL, 0x02, PHY_BMCR,
- PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
-#endif /* CONFIG_MII */
-#endif
-}
-
-int
-checkboard(void)
-{
- printf ("Board: Silicon Tx GPPP 8560 Board\n");
- return (0);
-}
-
-/* Blinkin' LEDS for Robert.
-*/
-void
-show_activity(int flag)
-{
- volatile uint *blatch;
-
- if (next_led_update > get_ticks())
- return;
-
- blatch = (volatile uint *)CFG_LBC_LCLDEVS_BASE;
-
- led_bit >>= 1;
- if (led_bit == 0)
- led_bit = 0x08;
- *blatch = (0xc0 | led_bit);
- eieio();
- next_led_update += (get_tbclk() / 4);
-}
-
-long int
-initdram (int board_type)
-{
- long dram_size = 0;
- extern long spd_sdram (void);
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
-
-#if defined(CONFIG_DDR_DLL)
- {
- volatile ccsr_gur_t *gur= &immap->im_gur;
- uint temp_ddrdll = 0;
-
- /* Work around to stabilize DDR DLL */
- temp_ddrdll = gur->ddrdllcr;
- gur->ddrdllcr = ((temp_ddrdll & 0xff) << 16) | 0x80000000;
- asm("sync;isync;msync");
- }
-#endif
-
- dram_size = spd_sdram ();
-
-#if defined(CONFIG_DDR_ECC)
- /* Initialize and enable DDR ECC.
- */
- ddr_enable_ecc(dram_size);
-#endif
-
- return dram_size;
-}
-
-
-#if defined(CFG_DRAM_TEST)
-int testdram (void)
-{
- uint *pstart = (uint *) CFG_MEMTEST_START;
- uint *pend = (uint *) CFG_MEMTEST_END;
- uint *p;
-
- printf("SDRAM test phase 1:\n");
- for (p = pstart; p < pend; p++)
- *p = 0xaaaaaaaa;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0xaaaaaaaa) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- printf("SDRAM test phase 2:\n");
- for (p = pstart; p < pend; p++)
- *p = 0x55555555;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0x55555555) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- printf("SDRAM test passed.\n");
- return 0;
-}
-#endif
-
-#if defined(CONFIG_PCI)
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_stxgp3_config_table[] = {
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
- PCI_IDSEL_NUMBER, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER
- } },
- { }
-};
-#endif
-
-
-static struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_stxgp3_config_table,
-#endif
-};
-
-#endif /* CONFIG_PCI */
-
-
-void
-pci_init_board(void)
-{
-#ifdef CONFIG_PCI
- pci_mpc85xx_init(&hose);
-#endif /* CONFIG_PCI */
-}
diff --git a/board/stxgp3/u-boot.lds b/board/stxgp3/u-boot.lds
deleted file mode 100644
index 1bbf20ae29..0000000000
--- a/board/stxgp3/u-boot.lds
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * (C) Copyright 2003 Embedded Edge, LLC
- * Dan Malek, <dan@embeddededge.com>
- * Copied from ADS85xx.
- * Updates for Silicon Tx GP3 8560.
- *
- * (C) Copyright 2002,2003,Motorola,Inc.
- * Xianghua Xiao, X.Xiao@motorola.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
- */
-
-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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- .bootpg 0xFFFFF000 :
- {
- cpu/mpc85xx/start.o (.bootpg)
- board/stxgp3/init.o (.bootpg)
- } = 0xffff
-
- /* 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/mpc85xx/start.o (.text)
- board/stxgp3/init.o (.text)
- cpu/mpc85xx/commproc.o (.text)
- cpu/mpc85xx/traps.o (.text)
- cpu/mpc85xx/interrupts.o (.text)
- cpu/mpc85xx/serial_scc.o (.text)
- cpu/mpc85xx/ether_fcc.o (.text)
- cpu/mpc85xx/cpu_init.o (.text)
- cpu/mpc85xx/cpu.o (.text)
- cpu/mpc85xx/speed.o (.text)
- cpu/mpc85xx/spd_sdram.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = .;
- __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/svm_sc8xx/Makefile b/board/svm_sc8xx/Makefile
deleted file mode 100644
index cf07cf40fd..0000000000
--- a/board/svm_sc8xx/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/svm_sc8xx/config.mk b/board/svm_sc8xx/config.mk
deleted file mode 100644
index 4bec9cbe84..0000000000
--- a/board/svm_sc8xx/config.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# (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
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/svm_sc8xx/flash.c b/board/svm_sc8xx/flash.c
deleted file mode 100644
index 25e61dd5e5..0000000000
--- a/board/svm_sc8xx/flash.c
+++ /dev/null
@@ -1,797 +0,0 @@
-/*
- * 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 <common.h>
-#include <mpc8xx.h>
-
-#ifndef CFG_ENV_ADDR
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-#if 0
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-#endif
-#ifdef CONFIG_BOOT_8B
-static int my_in_8( unsigned char *addr);
-static void my_out_8( unsigned char *addr, int val);
-#endif
-#ifdef CONFIG_BOOT_16B
-static int my_in_be16( unsigned short *addr);
-static void my_out_be16( unsigned short *addr, int val);
-#endif
-#ifdef CONFIG_BOOT_32B
-static unsigned my_in_be32( unsigned *addr);
-static void my_out_be32( unsigned *addr, int val);
-#endif
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
- size_b0=0;
- size_b1=0;
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-#ifdef CFG_DOC_BASE
-#ifndef CONFIG_FEL8xx_AT
- memctl->memc_or5 = (0xffff8000 | CFG_OR_TIMING_DOC ); /* 32k bytes */
- memctl->memc_br5 = CFG_DOC_BASE | 0x401;
-#else
- memctl->memc_or3 = (0xffff8000 | CFG_OR_TIMING_DOC ); /* 32k bytes */
- memctl->memc_br3 = CFG_DOC_BASE | 0x401;
-#endif
-#endif
-#if defined( CONFIG_BOOT_8B)
-/* memctl->memc_or0 = 0xfff80ff4; /###* 4MB bytes */
-/* memctl->memc_br0 = 0x40000401; */
- size_b0 = 0x80000; /* 512 K */
- flash_info[0].flash_id = FLASH_MAN_AMD | FLASH_AM040;
- flash_info[0].sector_count = 8;
- flash_info[0].size = 0x00080000;
- /* set up sector start address table */
- for (i = 0; i < flash_info[0].sector_count; i++)
- flash_info[0].start[i] = 0x40000000 + (i * 0x10000);
- /* protect all sectors */
- for (i = 0; i < flash_info[0].sector_count; i++)
- flash_info[0].protect[i] = 0x1;
-#elif defined (CONFIG_BOOT_16B)
-/* memctl->memc_or0 = 0xfff80ff4; /###* 4MB bytes */
-/* memctl->memc_br0 = 0x40000401; */
- size_b0 = 0x400000; /* 4MB , assume AMD29LV320B */
- flash_info[0].flash_id = FLASH_MAN_AMD | FLASH_AM320B;
- flash_info[0].sector_count = 67;
- flash_info[0].size = 0x00400000;
- /* set up sector start address table */
- flash_info[0].start[0] = 0x40000000 ;
- flash_info[0].start[1] = 0x40000000 + 0x4000;
- flash_info[0].start[2] = 0x40000000 + 0x6000;
- flash_info[0].start[3] = 0x40000000 + 0x8000;
- for (i = 4; i < flash_info[0].sector_count; i++)
- flash_info[0].start[i] = 0x40000000 + 0x10000 + ((i-4) * 0x10000);
- /* protect all sectors */
- for (i = 0; i < flash_info[0].sector_count; i++)
- flash_info[0].protect[i] = 0x1;
-#endif
-
-
-#ifdef CONFIG_BOOT_32B
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
- memctl->memc_br1 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_MS_GPCM | BR_V;
-
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(CFG_FLASH_BASE + size_b0),
- &flash_info[1]);
-
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- &flash_info[1]);
-#endif
- } else {
- memctl->memc_br1 = 0; /* invalidate bank */
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
-
-#endif /* CONFIG_BOOT_32B */
-
- return (size_b0 + size_b1);
-}
-#if 0
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-}
-#endif
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-#if 0
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-
- value = addr[0];
-
- switch (value) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-#endif
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect,in_mid,in_did;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-#if defined (CONFIG_BOOT_8B )
- my_out_8( (unsigned char * ) ((ulong)addr+0x555) , 0xaa );
- my_out_8( (unsigned char * ) ((ulong)addr+0x2aa) , 0x55 );
- my_out_8( (unsigned char * ) ((ulong)addr+0x555) , 0x90 );
- in_mid=my_in_8( (unsigned char * ) addr );
- in_did=my_in_8( (unsigned char * ) ((ulong)addr+1) );
- printf(" man ID=0x%x, dev ID=0x%x.\n",in_mid,in_did );
- my_out_8( (unsigned char *)addr, 0xf0);
- udelay(1);
- my_out_8( (unsigned char *) ((ulong)addr+0x555),0xaa );
- my_out_8( (unsigned char *) ((ulong)addr+0x2aa),0x55 );
- my_out_8( (unsigned char *) ((ulong)addr+0x555),0x80 );
- my_out_8( (unsigned char *) ((ulong)addr+0x555),0xaa );
- my_out_8( (unsigned char *) ((ulong)addr+0x2aa),0x55 );
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- /*addr[0] = 0x00300030; */
- my_out_8( (unsigned char *) ((ulong)addr),0x30 );
- l_sect = sect;
- }
- }
-#elif defined(CONFIG_BOOT_16B )
- my_out_be16( (unsigned short * ) ((ulong)addr+ (0xaaa)) , 0xaa );
- my_out_be16( (unsigned short * ) ((ulong)addr+ (0x554)) , 0x55 );
- my_out_be16( (unsigned short * ) ((ulong)addr+ (0xaaa)) , 0x90 );
- in_mid=my_in_be16( (unsigned short * ) addr );
- in_did=my_in_be16 ( (unsigned short * ) ((ulong)addr+2) );
- printf(" man ID=0x%x, dev ID=0x%x.\n",in_mid,in_did );
- my_out_be16( (unsigned short *)addr, 0xf0);
- udelay(1);
- my_out_be16( (unsigned short *) ((ulong)addr+ 0xaaa),0xaa );
- my_out_be16( (unsigned short *) ((ulong)addr+0x554),0x55 );
- my_out_be16( (unsigned short *) ((ulong)addr+0xaaa),0x80 );
- my_out_be16( (unsigned short *) ((ulong)addr+0xaaa),0xaa );
- my_out_be16( (unsigned short *) ((ulong)addr+0x554),0x55 );
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- my_out_be16( (unsigned short *) ((ulong)addr),0x30 );
- l_sect = sect;
- }
- }
-
-#elif defined(CONFIG_BOOT_32B)
- my_out_be32( (unsigned * ) ((ulong)addr+0x1554) , 0xaa );
- my_out_be32( (unsigned * ) ((ulong)addr+0xaa8) , 0x55 );
- my_out_be32( (unsigned *) ((ulong)addr+0x1554) , 0x90 );
- in_mid=my_in_be32( (unsigned * ) addr );
- in_did=my_in_be32( (unsigned * ) ((ulong)addr+4) );
- printf(" man ID=0x%x, dev ID=0x%x.\n",in_mid,in_did );
- my_out_be32( (unsigned *)addr, 0xf0);
- udelay(1);
- my_out_be32( (unsigned *) ((ulong)addr+0x1554),0xaa );
- my_out_be32( (unsigned *) ((ulong)addr+0xaa8),0x55 );
- my_out_be32( (unsigned *) ((ulong)addr+0x1554),0x80 );
- my_out_be32( (unsigned *) ((ulong)addr+0x1554),0xaa );
- my_out_be32( (unsigned *) ((ulong)addr+0xaa8),0x55 );
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- my_out_be32( (unsigned *) ((ulong)addr),0x00300030 );
- l_sect = sect;
- }
- }
-
-#else
-# error CONFIG_BOOT_(size)B missing.
-#endif
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
-#if defined (CONFIG_BOOT_8B)
- while ( (my_in_8((unsigned char *)addr) & 0x80) != 0x80 )
-#elif defined(CONFIG_BOOT_16B )
- while ( (my_in_be16((unsigned short *)addr) & 0x0080) != 0x0080 )
-#elif defined(CONFIG_BOOT_32B)
- while ( (my_in_be32((unsigned *)addr) & 0x00800080) != 0x00800080 )
-#else
-# error CONFIG_BOOT_(size)B missing.
-#endif
- {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
-#if defined (CONFIG_BOOT_8B)
- my_out_8( (unsigned char *)addr, 0xf0);
-#elif defined(CONFIG_BOOT_16B )
- my_out_be16( (unsigned short * ) addr , 0x00f0 );
-#elif defined(CONFIG_BOOT_32B)
- my_out_be32 ( (unsigned *)addr, 0x00F000F0 ); /* reset bank */
-#else
-# error CONFIG_BOOT_(size)B missing.
-#endif
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- ulong addr = (ulong)(info->start[0]);
- ulong start,last;
- int flag;
- ulong i;
- int data_short[2];
-
- /* Check if Flash is (sufficiently) erased */
- if ( ((ulong) *(ulong *)dest & data) != data ) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-#if defined(CONFIG_BOOT_8B)
-#ifdef DEBUG
- {
- int in_mid,in_did;
- my_out_8( (unsigned char * ) (addr+0x555) , 0xaa );
- my_out_8( (unsigned char * ) (addr+0x2aa) , 0x55 );
- my_out_8( (unsigned char * ) (addr+0x555) , 0x90 );
- in_mid=my_in_8( (unsigned char * ) addr );
- in_did=my_in_8( (unsigned char * ) (addr+1) );
- printf(" man ID=0x%x, dev ID=0x%x.\n",in_mid,in_did );
- my_out_8( (unsigned char *)addr, 0xf0);
- udelay(1);
- }
-#endif
- {
- int data_ch[4];
- data_ch[0]=(int ) ((data>>24) & 0xff);
- data_ch[1]=(int ) ((data>>16) &0xff );
- data_ch[2]=(int ) ((data >>8) & 0xff);
- data_ch[3]=(int ) (data & 0xff);
- for (i=0;i<4;i++ ){
- my_out_8( (unsigned char *) (addr+0x555),0xaa);
- my_out_8((unsigned char *) (addr+0x2aa),0x55);
- my_out_8( (unsigned char *) (addr+0x555),0xa0);
- my_out_8((unsigned char *) (dest+i) ,data_ch[i]);
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
- last = start;
- while( ( my_in_8((unsigned char *) (dest+i)) ) != ( data_ch[i] ) ) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT ) {
- return 1;
- }
- }
- }/* for */
- }
-#elif defined( CONFIG_BOOT_16B)
- data_short[0]=(int) (data>>16) & 0xffff;
- data_short[1]=(int ) data & 0xffff ;
- for (i=0;i<2;i++ ){
- my_out_be16( (unsigned short *) ((ulong)addr+ 0xaaa),0xaa );
- my_out_be16( (unsigned short *) ((ulong)addr+ 0x554),0x55 );
- my_out_be16( (unsigned short *) ((ulong)addr+ 0xaaa),0xa0 );
- my_out_be16( (unsigned short *) (dest+(i*2)) ,data_short[i]);
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
- start = get_timer (0);
- last = start;
- while( ( my_in_be16((unsigned short *) (dest+(i*2))) ) != ( data_short[i] ) ) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT ) {
- return 1;
- }
- }
- }
-#elif defined( CONFIG_BOOT_32B)
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-#endif
-
-
- return (0);
-}
-#ifdef CONFIG_BOOT_8B
-static int my_in_8 ( unsigned char *addr)
-{
- int ret;
- __asm__ __volatile__("lbz%U1%X1 %0,%1; eieio" : "=r" (ret) : "m" (*addr));
- return ret;
-}
-
-static void my_out_8 ( unsigned char *addr, int val)
-{
- __asm__ __volatile__("stb%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val));
-}
-#endif
-#ifdef CONFIG_BOOT_16B
-static int my_in_be16( unsigned short *addr)
-{
- int ret;
- __asm__ __volatile__("lhz%U1%X1 %0,%1; eieio" : "=r" (ret) : "m" (*addr));
- return ret;
-}
-static void my_out_be16( unsigned short *addr, int val)
-{
- __asm__ __volatile__("sth%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val));
-}
-#endif
-#ifdef CONFIG_BOOT_32B
-static unsigned my_in_be32( unsigned *addr)
-{
- unsigned ret;
- __asm__ __volatile__("lwz%U1%X1 %0,%1; eieio" : "=r" (ret) : "m" (*addr));
- return ret;
-}
-static void my_out_be32( unsigned *addr, int val)
-{
- __asm__ __volatile__("stw%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val));
-}
-#endif
diff --git a/board/svm_sc8xx/svm_sc8xx.c b/board/svm_sc8xx/svm_sc8xx.c
deleted file mode 100644
index 9bb9fd019f..0000000000
--- a/board/svm_sc8xx/svm_sc8xx.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * (C) Copyright 2000, 2001, 2002
- * 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 <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-const uint sdram_table[] =
-{
-/*-----------------
- UPM A contents:
------------------ */
-/*---------------------------------------------------
- Read Single Beat Cycle. Offset 0 in the RAM array.
----------------------------------------------------- */
-0x1f07fc04, 0xeeaefc04, 0x11adfc04, 0xefbbbc00 ,
-0x1ff77c47, 0x1ff77c35, 0xefeabc34, 0x1fb57c35 ,
-/*------------------------------------------------
- Read Burst Cycle. Offset 0x8 in the RAM array.
------------------------------------------------- */
-0x1f07fc04, 0xeeaefc04, 0x10adfc04, 0xf0affc00,
-0xf0affc00, 0xf1affc00, 0xefbbbc00, 0x1ff77c47,
-0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
-0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
-/*-------------------------------------------------------
- Write Single Beat Cycle. Offset 0x18 in the RAM array
-------------------------------------------------------- */
-0x1f27fc04, 0xeeaebc00, 0x01b93c04, 0x1ff77c47 ,
-0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff ,
-/*-------------------------------------------------
- Write Burst Cycle. Offset 0x20 in the RAM array
-------------------------------------------------- */
-0x1f07fc04, 0xeeaebc00, 0x10ad7c00, 0xf0affc00,
-0xf0affc00, 0xe1bbbc04, 0x1ff77c47, 0xffffffff,
-0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff ,
-0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff ,
-/*------------------------------------------------------------------------
- Periodic Timer Expired. For DRAM refresh. Offset 0x30 in the RAM array
------------------------------------------------------------------------- */
-0x1ff5fc84, 0xfffffc04, 0xfffffc04, 0xfffffc04,
-0xfffffc84, 0xfffffc07, 0xffffffff, 0xffffffff,
-0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff ,
-/*-----------
-* Exception:
-* ----------- */
-0x7ffefc07, 0xffffffff, 0xffffffff, 0xffffffff ,
-};
-
-/* ------------------------------------------------------------------------- */
-/*
- * Check Board Identity:
- *
- * Test ID string (SVM8...)
- *
- * Return 1 for "SC8xx" type, 0 else.
- */
-
-int checkboard (void)
-{
- char *s = getenv("serial#");
- int board_type;
-
- if (!s || strncmp(s, "SVM8", 4)) {
- printf ("### No HW ID - assuming SVM SC8xx\n");
- return (0);
- }
-
- board_type = 1;
-
- for (; *s; ++s) {
- if (*s == ' ')
- break;
- putc (*s);
- }
-
- putc ('\n');
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size_b0 = 0;
-
- upmconfig(UPMA, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
-
- memctl->memc_mptpr = CFG_MPTPR;
-#if defined (CONFIG_SDRAM_16M)
- memctl->memc_mamr = 0x00802114 | CFG_MxMR_PTx;
- memctl->memc_mcr = 0x80002105; /* SDRAM bank 0 */
- udelay(1);
- memctl->memc_mcr = 0x80002830;
- udelay(1);
- memctl->memc_mar = 0x00000088;
- udelay(1);
- memctl->memc_mcr = 0x80002106;
- udelay(1);
- memctl->memc_or1 = 0xff000a00;
- size_b0 = 0x01000000;
-#elif defined (CONFIG_SDRAM_32M)
- memctl->memc_mamr = 0x00904114 | CFG_MxMR_PTx;
- memctl->memc_mcr = 0x80002105; /* SDRAM bank 0 */
- udelay(1);
- memctl->memc_mcr = 0x80002830;
- udelay(1);
- memctl->memc_mar = 0x00000088;
- udelay(1);
- memctl->memc_mcr = 0x80002106;
- udelay(1);
- memctl->memc_or1 = 0xfe000a00;
- size_b0 = 0x02000000;
-#elif defined (CONFIG_SDRAM_64M)
- memctl->memc_mamr = 0x00a04114 | CFG_MxMR_PTx;
- memctl->memc_mcr = 0x80002105; /* SDRAM bank 0 */
- udelay(1);
- memctl->memc_mcr = 0x80002830;
- udelay(1);
- memctl->memc_mar = 0x00000088;
- udelay(1);
- memctl->memc_mcr = 0x80002106;
- udelay(1);
- memctl->memc_or1 = 0xfc000a00;
- size_b0 = 0x04000000;
-#else
-#error SDRAM size configuration missing.
-#endif
- memctl->memc_br1 = 0x00000081;
- udelay(200);
- return (size_b0 );
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_DOC)
-extern void doc_probe (ulong physadr);
-void doc_init (void)
-{
- doc_probe (CFG_DOC_BASE);
-}
-#endif
diff --git a/board/svm_sc8xx/u-boot.lds b/board/svm_sc8xx/u-boot.lds
deleted file mode 100644
index d7f7dc1329..0000000000
--- a/board/svm_sc8xx/u-boot.lds
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- cpu/mpc8xx/traps.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/time.o (.text)
-
- . = env_offset;
- common/environment.o (.ppcenv)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/svm_sc8xx/u-boot.lds.debug b/board/svm_sc8xx/u-boot.lds.debug
deleted file mode 100644
index 894b9bd25b..0000000000
--- a/board/svm_sc8xx/u-boot.lds.debug
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/tb0229/Makefile b/board/tb0229/Makefile
deleted file mode 100644
index 1f6f517260..0000000000
--- a/board/tb0229/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# (C) Masami Komiya <mkomiya@sonare.it> 2004
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o vr4131-pci.o
-SOBJS = lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/tb0229/config.mk b/board/tb0229/config.mk
deleted file mode 100644
index 9a508502c2..0000000000
--- a/board/tb0229/config.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# (C) Masami Komiya <mkomiya@sonare.it> 2004
-#
-# (C) Copyright 2003
-# 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
-#
-
-# ROM version
-TEXT_BASE = 0xBFC00000
-
-# RAM version
-#TEXT_BASE = 0x80400000
diff --git a/board/tb0229/flash.c b/board/tb0229/flash.c
deleted file mode 100644
index e9f6418c4e..0000000000
--- a/board/tb0229/flash.c
+++ /dev/null
@@ -1,1198 +0,0 @@
-/*
- * (C) Masami Komiya <mkomiya@sonare.it> 2004
- *
- * (C) Copyright 2001-2004
- * 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 <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-
-#ifdef CFG_FLASH_16BIT
-#define FLASH_WORD_SIZE unsigned short
-#define FLASH_ID_MASK 0xFFFF
-#else
-#define FLASH_WORD_SIZE unsigned long
-#define FLASH_ID_MASK 0xFFFFFFFF
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-/* stolen from esteem192e/flash.c */
-ulong flash_get_size (volatile FLASH_WORD_SIZE * addr, flash_info_t * info);
-
-#ifndef CFG_FLASH_16BIT
-static int write_word (flash_info_t * info, ulong dest, ulong data);
-#else
-static int write_short (flash_info_t * info, ulong dest, ushort data);
-#endif
-static void flash_get_offsets (ulong base, flash_info_t * info);
-
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long size_b0, size_b1;
- int i;
- uint pbcr;
- unsigned long base_b0, base_b1;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- size_b0 =
- flash_get_size ((volatile FLASH_WORD_SIZE *) CFG_FLASH_BASE,
- &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n", size_b0, size_b0 << 20);
- }
-
- /* Only one bank */
- if (CFG_MAX_FLASH_BANKS == 1) {
- /* Setup offsets */
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- /* Monitor protection ON by default */
-#if 0 /* sand: */
- (void) flash_protect (FLAG_PROTECT_SET,
- FLASH_BASE0_PRELIM - monitor_flash_len +
- size_b0,
- FLASH_BASE0_PRELIM - 1 + size_b0,
- &flash_info[0]);
-#else
- (void) flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len -
- 1, &flash_info[0]);
-#endif
- size_b1 = 0;
- flash_info[0].size = size_b0;
- }
-#ifdef CFG_FLASH_BASE_2
- /* 2 banks */
- else {
- size_b1 =
- flash_get_size ((volatile FLASH_WORD_SIZE *)
- CFG_FLASH_BASE_2, &flash_info[1]);
-
- /* Re-do sizing to get full correct info */
-
- if (size_b1) {
- mtdcr (ebccfga, pb0cr);
- pbcr = mfdcr (ebccfgd);
- mtdcr (ebccfga, pb0cr);
- base_b1 = -size_b1;
- pbcr = (pbcr & 0x0001ffff) | base_b1 |
- (((size_b1 / 1024 / 1024) - 1) << 17);
- mtdcr (ebccfgd, pbcr);
- /* printf("pb1cr = %x\n", pbcr); */
- }
-
- if (size_b0) {
- mtdcr (ebccfga, pb1cr);
- pbcr = mfdcr (ebccfgd);
- mtdcr (ebccfga, pb1cr);
- base_b0 = base_b1 - size_b0;
- pbcr = (pbcr & 0x0001ffff) | base_b0 |
- (((size_b0 / 1024 / 1024) - 1) << 17);
- mtdcr (ebccfgd, pbcr);
- /* printf("pb0cr = %x\n", pbcr); */
- }
-
- size_b0 =
- flash_get_size ((volatile FLASH_WORD_SIZE *) base_b0,
- &flash_info[0]);
-
- flash_get_offsets (base_b0, &flash_info[0]);
-
- /* monitor protection ON by default */
-#if 0 /* sand: */
- (void) flash_protect (FLAG_PROTECT_SET,
- FLASH_BASE0_PRELIM - monitor_flash_len +
- size_b0,
- FLASH_BASE0_PRELIM - 1 + size_b0,
- &flash_info[0]);
-#else
- (void) flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len -
- 1, &flash_info[0]);
-#endif
-
- if (size_b1) {
- /* Re-do sizing to get full correct info */
- size_b1 =
- flash_get_size ((volatile FLASH_WORD_SIZE *)
- base_b1, &flash_info[1]);
-
- flash_get_offsets (base_b1, &flash_info[1]);
-
- /* monitor protection ON by default */
- (void) flash_protect (FLAG_PROTECT_SET,
- base_b1 + size_b1 -
- monitor_flash_len,
- base_b1 + size_b1 - 1,
- &flash_info[1]);
- /* monitor protection OFF by default (one is enough) */
- (void) flash_protect (FLAG_PROTECT_CLEAR,
- base_b0 + size_b0 -
- monitor_flash_len,
- base_b0 + size_b0 - 1,
- &flash_info[0]);
- } else {
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- }
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
- } /* else 2 banks */
-#endif
- return (size_b0 + size_b1);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
-
- /* set up sector start adress table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_28F320J3A ||
- (info->flash_id & FLASH_TYPEMASK) == FLASH_28F640J3A ||
- (info->flash_id & FLASH_TYPEMASK) == FLASH_28F128J3A) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * info->size / info->sector_count);
- }
- } else if (info->flash_id & FLASH_BTYPE) {
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CFG_FLASH_16BIT
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00008000;
- info->start[3] = base + 0x0000C000;
- info->start[4] = base + 0x00010000;
- info->start[5] = base + 0x00014000;
- info->start[6] = base + 0x00018000;
- info->start[7] = base + 0x0001C000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00020000) - 0x000E0000;
- }
- } else {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00020000) - 0x00060000;
- }
- }
-#else
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00002000;
- info->start[2] = base + 0x00004000;
- info->start[3] = base + 0x00006000;
- info->start[4] = base + 0x00008000;
- info->start[5] = base + 0x0000A000;
- info->start[6] = base + 0x0000C000;
- info->start[7] = base + 0x0000E000;
- for (i = 8; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00010000) - 0x00070000;
- }
- } else {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] =
- base + (i * 0x00010000) - 0x00030000;
- }
- }
-#endif
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-
-#ifndef CFG_FLASH_16BIT
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- info->start[i--] = base + info->size - 0x00014000;
- info->start[i--] = base + info->size - 0x00018000;
- info->start[i--] = base + info->size - 0x0001C000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
-
- } else {
-
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-#else
- info->start[i--] = base + info->size - 0x00002000;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000A000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x0000E000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
-
- } else {
-
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
-#endif
- }
-
-
-}
-
-/*-----------------------------------------------------------------------
- */
-
-void flash_print_info (flash_info_t * info)
-{
- int i;
- uchar *boottype;
- uchar botboot[] = ", bottom boot sect)\n";
- uchar topboot[] = ", top boot sector)\n";
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf ("FUJITSU ");
- break;
- case FLASH_MAN_SST:
- printf ("SST ");
- break;
- case FLASH_MAN_STM:
- printf ("STM ");
- break;
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- if (info->flash_id & 0x0001) {
- boottype = botboot;
- } else {
- boottype = topboot;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B:
- printf ("AM29LV400B (4 Mbit%s", boottype);
- break;
- case FLASH_AM400T:
- printf ("AM29LV400T (4 Mbit%s", boottype);
- break;
- case FLASH_AM800B:
- printf ("AM29LV800B (8 Mbit%s", boottype);
- break;
- case FLASH_AM800T:
- printf ("AM29LV800T (8 Mbit%s", boottype);
- break;
- case FLASH_AM160B:
- printf ("AM29LV160B (16 Mbit%s", boottype);
- break;
- case FLASH_AM160T:
- printf ("AM29LV160T (16 Mbit%s", boottype);
- break;
- case FLASH_AM320B:
- printf ("AM29LV320B (32 Mbit%s", boottype);
- break;
- case FLASH_AM320T:
- printf ("AM29LV320T (32 Mbit%s", boottype);
- break;
- case FLASH_INTEL800B:
- printf ("INTEL28F800B (8 Mbit%s", boottype);
- break;
- case FLASH_INTEL800T:
- printf ("INTEL28F800T (8 Mbit%s", boottype);
- break;
- case FLASH_INTEL160B:
- printf ("INTEL28F160B (16 Mbit%s", boottype);
- break;
- case FLASH_INTEL160T:
- printf ("INTEL28F160T (16 Mbit%s", boottype);
- break;
- case FLASH_INTEL320B:
- printf ("INTEL28F320B (32 Mbit%s", boottype);
- break;
- case FLASH_INTEL320T:
- printf ("INTEL28F320T (32 Mbit%s", boottype);
- break;
-
-#if 0 /* enable when devices are available */
-
- case FLASH_INTEL640B:
- printf ("INTEL28F640B (64 Mbit%s", boottype);
- break;
- case FLASH_INTEL640T:
- printf ("INTEL28F640T (64 Mbit%s", boottype);
- break;
-#endif
- case FLASH_28F320J3A:
- printf ("INTEL28F320J3A (32 Mbit%s", boottype);
- break;
- case FLASH_28F640J3A:
- printf ("INTEL28F640J3A (64 Mbit%s", boottype);
- break;
- case FLASH_28F128J3A:
- printf ("INTEL28F128J3A (128 Mbit%s", boottype);
- break;
-
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-ulong flash_get_size (volatile FLASH_WORD_SIZE * addr, flash_info_t * info)
-{
- short i;
- ulong base = (ulong) addr;
- FLASH_WORD_SIZE value;
-
- /* Write auto select command: read Manufacturer ID */
-
-
-#ifndef CFG_FLASH_16BIT
-
- /*
- * Note: if it is an AMD flash and the word at addr[0000]
- * is 0x00890089 this routine will think it is an Intel
- * flash device and may(most likely) cause trouble.
- */
-
- addr[0x0000] = 0x00900090;
- if (addr[0x0000] != 0x00890089) {
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-#else
-
- /*
- * Note: if it is an AMD flash and the word at addr[0000]
- * is 0x0089 this routine will think it is an Intel
- * flash device and may(most likely) cause trouble.
- */
-
- addr[0x0000] = 0x0090;
-
- if (addr[0x0000] != 0x0089) {
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x0090;
-#endif
- }
- value = addr[0];
-
- switch (value) {
- case (AMD_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FUJ_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (STM_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_STM;
- break;
- case (SST_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_SST;
- break;
- case (INTEL_MANUFACT & FLASH_ID_MASK):
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
-
- }
-
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (AMD_ID_LV400T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV400B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case (AMD_ID_LV800T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV800B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (AMD_ID_LV160T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (AMD_ID_LV160B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case (AMD_ID_LV320T & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (AMD_ID_LV320B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
-
- case (INTEL_ID_28F800B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL800T;
- info->sector_count = 23;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (INTEL_ID_28F800B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL800B;
- info->sector_count = 23;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case (INTEL_ID_28F160B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL160T;
- info->sector_count = 39;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (INTEL_ID_28F160B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL160B;
- info->sector_count = 39;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case (INTEL_ID_28F320B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL320T;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case (INTEL_ID_28F320B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
-#if 0 /* enable when devices are available */
- case (INTEL_ID_28F320B3T & FLASH_ID_MASK):
- info->flash_id += FLASH_INTEL320T;
- info->sector_count = 135;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- case (INTEL_ID_28F320B3B & FLASH_ID_MASK):
- info->flash_id += FLASH_AM320B;
- info->sector_count = 135;
- info->size = 0x01000000;
- break; /* => 16 MB */
-#endif
- case (INTEL_ID_28F320J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000;
- break; /* => 32 MBit */
- case (INTEL_ID_28F640J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000;
- break; /* => 64 MBit */
- case (INTEL_ID_28F128J3A & FLASH_ID_MASK):
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000;
- break; /* => 128 MBit */
-
- default:
- /* FIXME */
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- flash_get_offsets (base, info);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile FLASH_WORD_SIZE *) (info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile FLASH_WORD_SIZE *) info->start[0];
- if ((info->flash_id & 0xFF00) == FLASH_MAN_INTEL) {
- *addr = (0x00F000F0 & FLASH_ID_MASK); /* reset bank */
- } else {
- *addr = (0x00FF00FF & FLASH_ID_MASK); /* reset bank */
- }
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-
- volatile FLASH_WORD_SIZE *addr =
- (volatile FLASH_WORD_SIZE *) (info->start[0]);
- int flag, prot, sect, l_sect, barf;
- ulong start, now, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- ((info->flash_id > FLASH_AMD_COMP) &&
- ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL))) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
- if (info->flash_id < FLASH_AMD_COMP) {
-#ifndef CFG_FLASH_16BIT
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-#else
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x0080;
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
-#endif
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (volatile FLASH_WORD_SIZE *) (info->
- start
- [sect]);
- addr[0] = (0x00300030 & FLASH_ID_MASK);
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (volatile FLASH_WORD_SIZE *) (info->start[l_sect]);
- while ((addr[0] & (0x00800080 & FLASH_ID_MASK)) !=
- (0x00800080 & FLASH_ID_MASK)) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (volatile FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (0x00F000F0 & FLASH_ID_MASK); /* reset bank */
- } else {
-
-
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- barf = 0;
-#ifndef CFG_FLASH_16BIT
- addr = (vu_long *) (info->start[sect]);
- addr[0] = 0x00500050;
- addr[0] = 0x00200020;
- addr[0] = 0x00D000D0;
- while (!(addr[0] & 0x00800080)); /* wait for error or finish */
- if (addr[0] & 0x003A003A) { /* check for error */
- barf = addr[0] & 0x003A0000;
- if (barf) {
- barf >>= 16;
- } else {
- barf = addr[0] & 0x0000003A;
- }
- }
-#else
- addr = (vu_short *) (info->start[sect]);
- addr[0] = 0x0050; /* clear status register */
- addr[0] = 0x0020;
- addr[0] = 0x00D0;
- while (!(addr[0] & 0x0080)); /* wait for error or finish */
- if (addr[0] & 0x003A) /* check for error */
- barf = addr[0] & 0x003A;
-#endif
- if (barf) {
- printf ("\nFlash error in sector at %lx\n", (unsigned long) addr);
- if (barf & 0x0002)
- printf ("Block locked, not erased.\n");
- if ((barf & 0x0030) == 0x0030)
- printf ("Command Sequence error.\n");
- if ((barf & 0x0030) == 0x0020)
- printf ("Block Erase error.\n");
- if (barf & 0x0008)
- printf ("Vpp Low error.\n");
- rcode = 1;
- } else
- printf (".");
- l_sect = sect;
- }
- addr = (volatile FLASH_WORD_SIZE *) info->start[0];
-#ifndef CFG_FLASH_16BIT
- addr[0] = (0x00FF00FF & FLASH_ID_MASK); /* reset bank */
-#else
- addr[0] = (0x00FF & FLASH_ID_MASK); /* reset bank */
-#endif
- }
-
- }
- printf (" done\n");
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-/*flash_info_t *addr2info (ulong addr)
-{
- flash_info_t *info;
- int i;
-
- for (i=0, info=&flash_info[0]; i<CFG_MAX_FLASH_BANKS; ++i, ++info) {
- if ((addr >= info->start[0]) &&
- (addr < (info->start[0] + info->size)) ) {
- return (info);
- }
- }
-
- return (NULL);
-}
-*/
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- * Make sure all target addresses are within Flash bounds,
- * and no protected sectors are hit.
- * Returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - target range includes protected sectors
- * 8 - target address not in Flash memory
- */
-
-/*int flash_write (uchar *src, ulong addr, ulong cnt)
-{
- int i;
- ulong end = addr + cnt - 1;
- flash_info_t *info_first = addr2info (addr);
- flash_info_t *info_last = addr2info (end );
- flash_info_t *info;
-
- if (cnt == 0) {
- return (0);
- }
-
- if (!info_first || !info_last) {
- return (8);
- }
-
- for (info = info_first; info <= info_last; ++info) {
- ulong b_end = info->start[0] + info->size;*/ /* bank end addr */
-/* short s_end = info->sector_count - 1;
- for (i=0; i<info->sector_count; ++i) {
- ulong e_addr = (i == s_end) ? b_end : info->start[i + 1];
-
- if ((end >= info->start[i]) && (addr < e_addr) &&
- (info->protect[i] != 0) ) {
- return (4);
- }
- }
- }
-
-*/ /* finally write data to flash */
-/* for (info = info_first; info <= info_last && cnt>0; ++info) {
- ulong len;
-
- len = info->start[0] + info->size - addr;
- if (len > cnt)
- len = cnt;
- if ((i = write_buff(info, src, addr, len)) != 0) {
- return (i);
- }
- cnt -= len;
- addr += len;
- src += len;
- }
- return (0);
-}
-*/
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-#ifndef CFG_FLASH_16BIT
- ulong cp, wp, data;
- int l;
-#else
- ulong cp, wp;
- ushort data;
-#endif
- int i, rc;
-
-#ifndef CFG_FLASH_16BIT
-
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_word (info, wp, data));
-
-#else
- wp = (addr & ~1); /* get lower word aligned address */
-
- /*
- * handle unaligned start byte
- */
- if (addr - wp) {
- data = 0;
- data = (data << 8) | *src++;
- --cnt;
- if ((rc = write_short (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- }
-
- /*
- * handle word aligned part
- */
-/* l = 0; used for debuging */
- while (cnt >= 2) {
- data = 0;
- for (i = 0; i < 2; ++i) {
- data = (data << 8) | *src++;
- }
-
-/* if(!l){
- printf("%x",data);
- l = 1;
- } used for debuging */
-
- if ((rc = write_short (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 2;
- cnt -= 2;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 2; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_short (info, wp, data));
-
-
-#endif
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-#ifndef CFG_FLASH_16BIT
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *) (info->start[0]);
- ulong start, barf;
- int flag;
-
-#if defined (__MIPSEL__)
- data = cpu_to_be32 (data);
-#endif
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *) dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- if (info->flash_id < FLASH_AMD_COMP) {
- /* AMD stuff */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
- } else {
- /* intel stuff */
- *addr = 0x00400040;
- }
-
- *((vu_long *) dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
-
- if (info->flash_id < FLASH_AMD_COMP) {
-
- while ((*((vu_long *) dest) & 0x00800080) !=
- (data & 0x00800080)) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- printf ("timeout\n");
- return (1);
- }
- }
-
- } else {
-
- while (!(addr[0] & 0x00800080)) { /* wait for error or finish */
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- printf ("timeout\n");
- return (1);
- }
- }
-
- if (addr[0] & 0x003A003A) { /* check for error */
- barf = addr[0] & 0x003A0000;
- if (barf) {
- barf >>= 16;
- } else {
- barf = addr[0] & 0x0000003A;
- }
- printf ("\nFlash write error at address %lx\n",
- (unsigned long) dest);
- if (barf & 0x0002)
- printf ("Block locked, not erased.\n");
- if (barf & 0x0010)
- printf ("Programming error.\n");
- if (barf & 0x0008)
- printf ("Vpp Low error.\n");
- return (2);
- }
-
-
- }
-
- return (0);
-}
-
-#else
-
-static int write_short (flash_info_t * info, ulong dest, ushort data)
-{
- vu_short *addr = (vu_short *) (info->start[0]);
- ulong start, barf;
- int flag;
-
-#if defined (__MIPSEL__)
- data = cpu_to_be16 (data);
-#endif
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_short *) dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- if (info->flash_id < FLASH_AMD_COMP) {
- /* AMD stuff */
- addr[0x0555] = 0x00AA;
- addr[0x02AA] = 0x0055;
- addr[0x0555] = 0x00A0;
- } else {
- /* intel stuff */
- *addr = 0x00D0;
- *addr = 0x0040;
- }
- *((vu_short *) dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
-
- if (info->flash_id < FLASH_AMD_COMP) {
- /* AMD stuff */
- while ((*((vu_short *) dest) & 0x0080) != (data & 0x0080)) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
- } else {
- /* intel stuff */
- while (!(addr[0] & 0x0080)) { /* wait for error or finish */
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT)
- return (1);
- }
-
- if (addr[0] & 0x003A) { /* check for error */
- barf = addr[0] & 0x003A;
- printf ("\nFlash write error at address %lx\n",
- (unsigned long) dest);
- if (barf & 0x0002)
- printf ("Block locked, not erased.\n");
- if (barf & 0x0010)
- printf ("Programming error.\n");
- if (barf & 0x0008)
- printf ("Vpp Low error.\n");
- return (2);
- }
- *addr = 0x00B0;
- *addr = 0x0070;
- while (!(addr[0] & 0x0080)) { /* wait for error or finish */
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT)
- return (1);
- }
-
- *addr = 0x00FF;
-
- }
-
- return (0);
-
-}
-#endif
diff --git a/board/tb0229/lowlevel_init.S b/board/tb0229/lowlevel_init.S
deleted file mode 100644
index df318067b9..0000000000
--- a/board/tb0229/lowlevel_init.S
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Memory sub-system initialization code for TANBAC Evaluation board TB0229.
- *
- * Copyright (c) 2003 Masami Komiya <mkomiya@sonare.it>
- *
- * 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, or (at
- * your option) any later version.
- */
-
-#include <config.h>
-#include <version.h>
-#include <asm/regdef.h>
-
-
- .globl lowlevel_init
-lowlevel_init:
-
- /* BCUCNTREG1 = 0x0040 */
- la t0, 0xaf000000
- li t1, 0x0040
- sh t1, 0(t0)
-
- /* ROMSIZEREG = 0x3333 */
- la t0, 0xaf000004
- li t1, 0x3333
- sh t1, 0(t0)
-
- /* ROMSPEEDREG = 0x3003 */
- la t0, 0xaf000006
- li t1, 0x3003
- sh t1, 0(t0)
-
- /* BCUCNTREG3 = 0 */
- la t0, 0xaf000016
- li t1, 0x0000
- sh t1, 0(t0)
-
- /* CMUCLKMSK */
- la t0, 0xaf000060
- li t1, 0x39a2
- sh t1, 0(t0)
-
- /* PMUCNTREG */
- la t0, 0xaf0000c2
- li t1, 0x0006
- sh t1, 0(t0)
-
- /* SDRAMMODEREG = 0x8029 */
- la t0, 0xaf000400
- li t1, 0x8029
- sh t1, 0(t0)
-
- /* SDRAMCNTREG = 0x2322 */
- la t0, 0xaf000402
- li t1, 0x2322
- sh t1, 0(t0)
-
- /* BCURFCNTREG = 0x0106 */
- la t0, 0xaf000404
- li t1, 0x0106
- sh t1, 0(t0)
-
- /* RAMSZEREG = 0x5555 (64MB Bank) */
- la t0, 0xaf000408
- li t1, 0x5555
- sh t1, 0(t0)
-
- j ra
- nop
diff --git a/board/tb0229/tb0229.c b/board/tb0229/tb0229.c
deleted file mode 100644
index e7914bd15b..0000000000
--- a/board/tb0229/tb0229.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Board initialize code for TANBAC Evaluation board TB0229.
- *
- * (C) Masami Komiya <mkomiya@sonare.it> 2004
- *
- * 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, or (at
- * your option) any later version.
- */
-
-#include <common.h>
-#include <command.h>
-#include <asm/addrspace.h>
-#include <asm/inca-ip.h>
-#include <pci.h>
-
-unsigned long mips_io_port_base = 0;
-
-#if defined(CONFIG_PCI)
-static struct pci_controller hose;
-
-void pci_init_board (void)
-{
- init_vr4131_pci(&hose);
-}
-#endif
-
-
-long int initdram(int board_type)
-{
- return get_ram_size (CFG_SDRAM_BASE, 0x8000000);
-}
-
-
-int checkboard (void)
-{
- printf("Board: TANBAC TB0229 ");
- printf("(CPU Speed %d MHz)\n", (int)CPU_CLOCK_RATE/1000000);
-
- return 0;
-}
diff --git a/board/tb0229/u-boot.lds b/board/tb0229/u-boot.lds
deleted file mode 100644
index 30a2bc57ea..0000000000
--- a/board/tb0229/u-boot.lds
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * (C) Masami Komiya <mkomiya@sonare.it> 2004
- *
- * (C) Copyright 2003
- * Wolfgang Denk 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_FORMAT("elf32-tradlittlemips", "elf32-tradlittlemips", "elf32-tradlittlemips")
-
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .sdata : { *(.sdata) }
-
- _gp = ALIGN(16);
-
- __got_start = .;
- .got : { *(.got) }
- __got_end = .;
-
- .sdata : { *(.sdata) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- uboot_end_data = .;
- num_got_entries = (__got_end - __got_start) >> 2;
-
- . = ALIGN(4);
- .sbss : { *(.sbss) }
- .bss : { *(.bss) }
- uboot_end = .;
-}
diff --git a/board/tb0229/vr4131-pci.c b/board/tb0229/vr4131-pci.c
deleted file mode 100644
index 0ee4bf30ea..0000000000
--- a/board/tb0229/vr4131-pci.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * VR4131 PCIU support code for TANBAC Evaluation board TB0229.
- *
- * (C) Masami Komiya <mkomiya@sonare.it> 2004
- *
- * 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, or (at
- * your option) any later version.
- */
-
-#include <common.h>
-#include <pci.h>
-#include <asm/addrspace.h>
-
-#define VR4131_PCIMMAW1REG (volatile unsigned int*)(KSEG1 + 0x0f000c00)
-#define VR4131_PCIMMAW2REG (volatile unsigned int*)(KSEG1 + 0x0f000c04)
-#define VR4131_PCITAW1REG (volatile unsigned int*)(KSEG1 + 0x0f000c08)
-#define VR4131_PCITAW2REG (volatile unsigned int*)(KSEG1 + 0x0f000c0c)
-#define VR4131_PCIMIOAWREG (volatile unsigned int*)(KSEG1 + 0x0f000c10)
-#define VR4131_PCICONFDREG (volatile unsigned int*)(KSEG1 + 0x0f000c14)
-#define VR4131_PCICONFAREG (volatile unsigned int*)(KSEG1 + 0x0f000c18)
-#define VR4131_PCIMAILREG (volatile unsigned int*)(KSEG1 + 0x0f000c1c)
-#define VR4131_BUSERRADREG (volatile unsigned int*)(KSEG1 + 0x0f000c24)
-#define VR4131_INTCNTSTAREG (volatile unsigned int*)(KSEG1 + 0x0f000c28)
-#define VR4131_PCIEXACCREG (volatile unsigned int*)(KSEG1 + 0x0f000c2c)
-#define VR4131_PCIRECONTREG (volatile unsigned int*)(KSEG1 + 0x0f000c30)
-#define VR4131_PCIENREG (volatile unsigned int*)(KSEG1 + 0x0f000c34)
-#define VR4131_PCICLKSELREG (volatile unsigned int*)(KSEG1 + 0x0f000c38)
-#define VR4131_PCITRDYREG (volatile unsigned int*)(KSEG1 + 0x0f000c3c)
-#define VR4131_PCICLKRUNREG (volatile unsigned int*)(KSEG1 + 0x0f000c60)
-#define VR4131_PCIHOSTCONFIG (volatile unsigned int*)(KSEG1 + 0x0f000d00)
-#define VR4131_VENDORIDREG (volatile unsigned int*)(KSEG1 + 0x0f000d00)
-#define VR4131_DEVICEIDREG (volatile unsigned int*)(KSEG1 + 0x0f000d00)
-#define VR4131_COMMANDREG (volatile unsigned int*)(KSEG1 + 0x0f000d04)
-#define VR4131_STATUSREG (volatile unsigned int*)(KSEG1 + 0x0f000d04)
-#define VR4131_REVREG (volatile unsigned int*)(KSEG1 + 0x0f000d08)
-#define VR4131_CLASSREG (volatile unsigned int*)(KSEG1 + 0x0f000d08)
-#define VR4131_CACHELSREG (volatile unsigned int*)(KSEG1 + 0x0f000d0c)
-#define VR4131_LATTIMERRG (volatile unsigned int*)(KSEG1 + 0x0f000d0c)
-#define VR4131_MAILBAREG (volatile unsigned int*)(KSEG1 + 0x0f000d10)
-#define VR4131_PCIMBA1REG (volatile unsigned int*)(KSEG1 + 0x0f000d14)
-#define VR4131_PCIMBA2REG (volatile unsigned int*)(KSEG1 + 0x0f000d18)
-
-/*#define VR41XX_PCIIRQ_OFFSET (VR41XX_IRQ_MAX + 1) */
-/*#define VR41XX_PCIIRQ_MAX (VR41XX_IRQ_MAX + 12) */
-/*#define VR4122_PCI_HOST_BASE 0xa0000000 */
-
-volatile unsigned int *pciconfigaddr;
-volatile unsigned int *pciconfigdata;
-
-#define PCI_ACCESS_READ 0
-#define PCI_ACCESS_WRITE 1
-
-/*
- * Access PCI Configuration Register for VR4131
- */
-
-static int vr4131_pci_config_access (u8 access_type, u32 dev, u32 reg,
- u32 * data)
-{
- u32 bus;
- u32 device;
-
- bus = ((dev & 0xff0000) >> 16);
- device = ((dev & 0xf800) >> 11);
-
- if (bus == 0) {
- /* Type 0 Configuration */
- *VR4131_PCICONFAREG = (u32) (1UL << device | (reg & 0xfc));
- } else {
- /* Type 1 Configuration */
- *VR4131_PCICONFAREG = (u32) (dev | ((reg / 4) << 2) | 1);
- }
-
- if (access_type == PCI_ACCESS_WRITE) {
- *VR4131_PCICONFDREG = *data;
- } else {
- *data = *VR4131_PCICONFDREG;
- }
-
- return (0);
-}
-
-static int vr4131_pci_read_config_byte (u32 hose, u32 dev, u32 reg, u8 * val)
-{
- u32 data;
-
- if (vr4131_pci_config_access (PCI_ACCESS_READ, dev, reg, &data))
- return -1;
-
- *val = (data >> ((reg & 3) << 3)) & 0xff;
-
- return 0;
-}
-
-
-static int vr4131_pci_read_config_word (u32 hose, u32 dev, u32 reg, u16 * val)
-{
- u32 data;
-
- if (reg & 1)
- return -1;
-
- if (vr4131_pci_config_access (PCI_ACCESS_READ, dev, reg, &data))
- return -1;
-
- *val = (data >> ((reg & 3) << 3)) & 0xffff;
-
- return 0;
-}
-
-
-static int vr4131_pci_read_config_dword (u32 hose, u32 dev, u32 reg,
- u32 * val)
-{
- u32 data = 0;
-
- if (reg & 3)
- return -1;
-
- if (vr4131_pci_config_access (PCI_ACCESS_READ, dev, reg, &data))
- return -1;
-
- *val = data;
-
- return (0);
-}
-
-static int vr4131_pci_write_config_byte (u32 hose, u32 dev, u32 reg, u8 val)
-{
- u32 data = 0;
-
- if (vr4131_pci_config_access (PCI_ACCESS_READ, dev, reg, &data))
- return -1;
-
- data = (data & ~(0xff << ((reg & 3) << 3))) | (val <<
- ((reg & 3) << 3));
-
- if (vr4131_pci_config_access (PCI_ACCESS_WRITE, dev, reg, &data))
- return -1;
-
- return 0;
-}
-
-
-static int vr4131_pci_write_config_word (u32 hose, u32 dev, u32 reg, u16 val)
-{
- u32 data = 0;
-
- if (reg & 1)
- return -1;
-
- if (vr4131_pci_config_access (PCI_ACCESS_READ, dev, reg, &data))
- return -1;
-
- data = (data & ~(0xffff << ((reg & 3) << 3))) | (val <<
- ((reg & 3) << 3));
-
- if (vr4131_pci_config_access (PCI_ACCESS_WRITE, dev, reg, &data))
- return -1;
-
- return 0;
-}
-
-static int vr4131_pci_write_config_dword (u32 hose, u32 dev, u32 reg, u32 val)
-{
- u32 data;
-
- if (reg & 3) {
- return -1;
- }
-
- data = val;
-
- if (vr4131_pci_config_access (PCI_ACCESS_WRITE, dev, reg, &data))
- return -1;
-
- return (0);
-}
-
-
-/*
- * Initialize VR4131 PCIU
- */
-
-vr4131_pciu_init ()
-{
- /* PCI clock */
- *VR4131_PCICLKSELREG = 0x00000002;
-
- /* PCI memory and I/O space */
- *VR4131_PCIMMAW1REG = 0x100F9010;
- *VR4131_PCIMMAW2REG = 0x140FD014;
- *VR4131_PCIMIOAWREG = 0x160FD000;
-
- /* Target memory window */
- *VR4131_PCITAW1REG = 0x00081000; /* 64MB */
- *VR4131_PCITAW2REG = 0x00000000;
-
- *VR4131_MAILBAREG = 0UL;
- *VR4131_PCIMBA1REG = 0UL;
-
- *VR4131_PCITRDYREG = 0x00008004;
-
- *VR4131_PCIENREG = 0x00000004; /* PCI enable */
- *VR4131_COMMANDREG = 0x02000007;
-}
-
-/*
- * Initialize Module
- */
-
-void init_vr4131_pci (struct pci_controller *hose)
-{
- hose->first_busno = 0;
- hose->last_busno = 0xff;
-
- vr4131_pciu_init (); /* Initialize VR4131 PCIU */
-
- /* PCI memory space #1 */
- pci_set_region (hose->regions + 0,
- 0x10000000, 0xb0000000, 0x04000000, PCI_REGION_MEM);
-
- /* PCI memory space #2 */
- pci_set_region (hose->regions + 1,
- 0x14000000, 0xb4000000, 0x02000000, PCI_REGION_MEM);
-
-
- /* PCI I/O space */
- pci_set_region (hose->regions + 2,
- 0x16000000, 0xb6000000, 0x02000000, PCI_REGION_IO);
-
- /* System memory space */
- pci_set_region (hose->regions + 3,
- 0x00000000,
- 0x80000000,
- 0x04000000, PCI_REGION_MEM | PCI_REGION_MEMORY);
-
- hose->region_count = 4;
-
- hose->read_byte = vr4131_pci_read_config_byte;
- hose->read_word = vr4131_pci_read_config_word;
- hose->read_dword = vr4131_pci_read_config_dword;
- hose->write_byte = vr4131_pci_write_config_byte;
- hose->write_word = vr4131_pci_write_config_word;
- hose->write_dword = vr4131_pci_write_config_dword;
-
- pci_register_hose (hose);
-
- hose->last_busno = pci_hose_scan (hose);
-
- return;
-}
diff --git a/board/tqm5200/Makefile b/board/tqm5200/Makefile
deleted file mode 100644
index a5ce7bd46f..0000000000
--- a/board/tqm5200/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := $(BOARD).o cmd_stk52xx.o cmd_tb5200.o cam5200_flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-cam5200_flash.o: cam5200_flash.c
- $(CC) $(CFLAGS) -fno-strict-aliasing -c -o $@ $<
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/tqm5200/cam5200_flash.c b/board/tqm5200/cam5200_flash.c
deleted file mode 100644
index 8c3f62e398..0000000000
--- a/board/tqm5200/cam5200_flash.c
+++ /dev/null
@@ -1,786 +0,0 @@
-/*
- * (C) Copyright 2006
- * 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 <common.h>
-#include <mpc5xxx.h>
-#include <asm/processor.h>
-
-#ifdef CONFIG_CAM5200
-
-#if 0
-#define DEBUGF(x...) printf(x)
-#else
-#define DEBUGF(x...)
-#endif
-
-#define swap16(x) __swab16(x)
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*
- * CAM5200 is a TQM5200B based board. Additionally it also features
- * a NIOS cpu. The NIOS CPU peripherals are accessible through MPC5xxx
- * Local Bus on CS5. This includes 32 bit wide RAM and SRAM as well as
- * 16 bit wide flash device. Big Endian order on a 32 bit CS5 makes
- * access to flash chip slightly more complicated as additional byte
- * swapping is necessary within each 16 bit wide flash 'word'.
- *
- * This driver's task is to handle both flash devices: 32 bit TQM5200B
- * flash chip and 16 bit NIOS cpu flash chip. In the below
- * flash_addr_table table we use least significant address bit to mark
- * 16 bit flash bank and two sets of routines *_32 and *_16 to handle
- * specifics of both flashes.
- */
-static unsigned long flash_addr_table[][CFG_MAX_FLASH_BANKS] = {
- {CFG_BOOTCS_START, CFG_CS5_START | 1}
-};
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word(flash_info_t * info, ulong dest, ulong data);
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-static int write_word_32(flash_info_t * info, ulong dest, ulong data);
-static int write_word_16(flash_info_t * info, ulong dest, ulong data);
-static int flash_erase_32(flash_info_t * info, int s_first, int s_last);
-static int flash_erase_16(flash_info_t * info, int s_first, int s_last);
-static ulong flash_get_size_32(vu_long * addr, flash_info_t * info);
-static ulong flash_get_size_16(vu_long * addr, flash_info_t * info);
-#endif
-
-void flash_print_info(flash_info_t * info)
-{
- int i, k;
- int size, erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf("FUJITSU ");
- break;
- default:
- printf("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_S29GL128N:
- printf ("S29GL128N (256 Mbit, uniform sector size)\n");
- break;
- case FLASH_AM320B:
- printf ("29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T:
- printf ("29LV320T (32 Mbit, top boot sect)\n");
- break;
- default:
- printf("Unknown Chip Type\n");
- break;
- }
-
- printf(" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf(" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count - 1))
- size = info->start[i + 1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
-
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
-
- for (k = 0; k < size; k++) {
- if (*flash++ != 0xffffffff) {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf("\n ");
-
- printf(" %08lX%s%s", info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " ");
- }
- printf("\n");
- return;
-}
-
-
-/*
- * The following code cannot be run from FLASH!
- */
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-static ulong flash_get_size(vu_long * addr, flash_info_t * info)
-{
-
- DEBUGF("get_size: FLASH ADDR %08lx\n", addr);
-
- /* bit 0 used for big flash marking */
- if ((ulong)addr & 0x1)
- return flash_get_size_16((vu_long *)((ulong)addr & 0xfffffffe), info);
- else
- return flash_get_size_32(addr, info);
-}
-
-static ulong flash_get_size_32(vu_long * addr, flash_info_t * info)
-#else
-static ulong flash_get_size(vu_long * addr, flash_info_t * info)
-#endif
-{
- short i;
- CFG_FLASH_WORD_SIZE value;
- ulong base = (ulong) addr;
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) addr;
-
- DEBUGF("get_size32: FLASH ADDR: %08x\n", (unsigned)addr);
-
- /* Write auto select command: read Manufacturer ID */
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00900090;
- udelay(1000);
-
- value = addr2[0];
- DEBUGF("FLASH MANUFACT: %x\n", value);
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr2[1]; /* device ID */
- DEBUGF("\nFLASH DEVICEID: %x\n", value);
-
- switch (value) {
- case AMD_ID_MIRROR:
- DEBUGF("Mirror Bit flash: addr[14] = %08lX addr[15] = %08lX\n",
- addr[14], addr[15]);
- switch(addr[14]) {
- case AMD_ID_GL128N_2:
- if (addr[15] != AMD_ID_GL128N_3) {
- DEBUGF("Chip: S29GL128N -> unknown\n");
- info->flash_id = FLASH_UNKNOWN;
- } else {
- DEBUGF("Chip: S29GL128N\n");
- info->flash_id += FLASH_S29GL128N;
- info->sector_count = 128;
- info->size = 0x02000000;
- }
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- return(0);
- }
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00040000);
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
-
- info->protect[i] = addr2[2] & 1;
- }
-
- /* issue bank reset to return to read mode */
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0;
-
- return (info->size);
-}
-
-static int wait_for_DQ7_32(flash_info_t * info, int sect)
-{
- ulong start, now, last;
- volatile CFG_FLASH_WORD_SIZE *addr =
- (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- start = get_timer(0);
- last = start;
- while ((addr[0] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
- (CFG_FLASH_WORD_SIZE) 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- return -1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc('.');
- last = now;
- }
- }
- return 0;
-}
-
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-{
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) {
- return flash_erase_16(info, s_first, s_last);
- } else {
- return flash_erase_32(info, s_first, s_last);
- }
-}
-
-static int flash_erase_32(flash_info_t * info, int s_first, int s_last)
-#else
-int flash_erase(flash_info_t * info, int s_first, int s_last)
-#endif
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN)
- printf("- missing\n");
- else
- printf("- no sectors to erase\n");
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot)
- printf("- Warning: %d protected sectors will not be erased!", prot);
-
- printf("\n");
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00800080;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00300030; /* sector erase */
-
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- wait_for_DQ7_32(info, sect);
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay(1000);
-
- /* reset to read mode */
- addr = (CFG_FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
- printf(" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff(flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp)
- data = (data << 8) | (*(uchar *) cp);
-
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
-
- for (; cnt == 0 && i < 4; ++i, ++cp)
- data = (data << 8) | (*(uchar *) cp);
-
- if ((rc = write_word(info, wp, data)) != 0)
- return (rc);
-
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i)
- data = (data << 8) | *src++;
-
- if ((rc = write_word(info, wp, data)) != 0)
- return (rc);
-
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0)
- return (0);
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp)
- data = (data << 8) | (*(uchar *) cp);
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-static int write_word(flash_info_t * info, ulong dest, ulong data)
-{
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) {
- return write_word_16(info, dest, data);
- } else {
- return write_word_32(info, dest, data);
- }
-}
-
-static int write_word_32(flash_info_t * info, ulong dest, ulong data)
-#else
-static int write_word(flash_info_t * info, ulong dest, ulong data)
-#endif
-{
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *) dest;
- volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *) & data;
- ulong start;
- int i, flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data)
- return (2);
-
- for (i = 0; i < 4 / sizeof(CFG_FLASH_WORD_SIZE); i++) {
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer(0);
- while ((dest2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080)) {
-
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT)
- return (1);
- }
- }
-
- return (0);
-}
-
-#ifdef CFG_FLASH_2ND_16BIT_DEV
-
-#undef CFG_FLASH_WORD_SIZE
-#define CFG_FLASH_WORD_SIZE unsigned short
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size_16(vu_long * addr, flash_info_t * info)
-{
- short i;
- CFG_FLASH_WORD_SIZE value;
- ulong base = (ulong) addr;
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) addr;
-
- DEBUGF("get_size16: FLASH ADDR: %08x\n", (unsigned)addr);
-
- /* issue bank reset to return to read mode */
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0xF000F000;
-
- /* Write auto select command: read Manufacturer ID */
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAA00AA00;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55005500;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x90009000;
- udelay(1000);
-
- value = swap16(addr2[0]);
- DEBUGF("FLASH MANUFACT: %x\n", value);
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE) AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (CFG_FLASH_WORD_SIZE) FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = swap16(addr2[1]); /* device ID */
- DEBUGF("\nFLASH DEVICEID: %x\n", value);
-
- switch (value) {
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
- case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 71;
- info->size = 0x00400000;
- break; /* => 4 MB */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00002000;
- info->start[2] = base + 0x00004000;
- info->start[3] = base + 0x00006000;
- info->start[4] = base + 0x00008000;
- info->start[5] = base + 0x0000a000;
- info->start[6] = base + 0x0000c000;
- info->start[7] = base + 0x0000e000;
-
- for (i = 8; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000) - 0x00070000;
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00002000;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000a000;
- info->start[i--] = base + info->size - 0x0000c000;
- info->start[i--] = base + info->size - 0x0000e000;
-
- for (; i >= 0; i--)
- info->start[i] = base + i * 0x00010000;
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
-
- info->protect[i] = addr2[2] & 1;
- }
-
- /* issue bank reset to return to read mode */
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0xF000F000;
-
- return (info->size);
-}
-
-static int wait_for_DQ7_16(flash_info_t * info, int sect)
-{
- ulong start, now, last;
- volatile CFG_FLASH_WORD_SIZE *addr =
- (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- start = get_timer(0);
- last = start;
- while ((addr[0] & (CFG_FLASH_WORD_SIZE) 0x80008000) !=
- (CFG_FLASH_WORD_SIZE) 0x80008000) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf("Timeout\n");
- return -1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc('.');
- last = now;
- }
- }
- return 0;
-}
-
-static int flash_erase_16(flash_info_t * info, int s_first, int s_last)
-{
- volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN)
- printf("- missing\n");
- else
- printf("- no sectors to erase\n");
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot)
- printf("- Warning: %d protected sectors will not be erased!", prot);
-
- printf("\n");
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
-
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAA00AA00;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55005500;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x80008000;
- addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAA00AA00;
- addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55005500;
- addr2[0] = (CFG_FLASH_WORD_SIZE) 0x30003000; /* sector erase */
-
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- wait_for_DQ7_16(info, sect);
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay(1000);
-
- /* reset to read mode */
- addr = (CFG_FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (CFG_FLASH_WORD_SIZE) 0xF000F000; /* reset bank */
-
- printf(" done\n");
- return 0;
-}
-
-static int write_word_16(flash_info_t * info, ulong dest, ulong data)
-{
- volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
- volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *) dest;
- volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *) & data;
- ulong start;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- for (i = 0; i < 4 / sizeof(CFG_FLASH_WORD_SIZE); i++) {
- if ((dest2[i] & swap16(data2[i])) != swap16(data2[i]))
- return (2);
- }
-
- for (i = 0; i < 4 / sizeof(CFG_FLASH_WORD_SIZE); i++) {
- int flag;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAA00AA00;
- addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55005500;
- addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xA000A000;
-
- dest2[i] = swap16(data2[i]);
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer(0);
- while ((dest2[i] & (CFG_FLASH_WORD_SIZE) 0x80008000) !=
- (swap16(data2[i]) & (CFG_FLASH_WORD_SIZE) 0x80008000)) {
-
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-#endif /* CFG_FLASH_2ND_16BIT_DEV */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size(vu_long * addr, flash_info_t * info);
-static int write_word(flash_info_t * info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init(void)
-{
- unsigned long total_b = 0;
- unsigned long size_b[CFG_MAX_FLASH_BANKS];
- unsigned short index = 0;
- int i;
-
- DEBUGF("\n");
- DEBUGF("FLASH: Index: %d\n", index);
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
-
- /* check whether the address is 0 */
- if (flash_addr_table[index][i] == 0)
- continue;
-
- /* call flash_get_size() to initialize sector address */
- size_b[i] = flash_get_size((vu_long *) flash_addr_table[index][i],
- &flash_info[i]);
-
- flash_info[i].size = size_b[i];
-
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
- i+1, size_b[i], size_b[i] << 20);
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
- }
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET, CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + CFG_MONITOR_LEN - 1,
- &flash_info[i]);
-#if defined(CFG_ENV_IS_IN_FLASH)
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[i]);
-#if defined(CFG_ENV_ADDR_REDUND)
- (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1,
- &flash_info[i]);
-#endif
-#endif
- total_b += flash_info[i].size;
- }
-
- return total_b;
-}
-#endif /* ifdef CONFIG_CAM5200 */
diff --git a/board/tqm5200/cmd_stk52xx.c b/board/tqm5200/cmd_stk52xx.c
deleted file mode 100755
index 7af69f21a2..0000000000
--- a/board/tqm5200/cmd_stk52xx.c
+++ /dev/null
@@ -1,1244 +0,0 @@
-/*
- * (C) Copyright 2005
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.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
- */
-
-/*
- * STK52XX specific functions
- */
-/*#define DEBUG*/
-
-#include <common.h>
-#include <command.h>
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-
-#if defined(CONFIG_STK52XX) || defined(CONFIG_FO300)
-#define DEFAULT_VOL 45
-#define DEFAULT_FREQ 500
-#define DEFAULT_DURATION 200
-#define LEFT 1
-#define RIGHT 2
-#define LEFT_RIGHT 3
-#define BL_OFF 0
-#define BL_ON 1
-
-#define SM501_GPIO_CTRL_LOW 0x00000008UL
-#define SM501_GPIO_CTRL_HIGH 0x0000000CUL
-#define SM501_POWER_MODE0_GATE 0x00000040UL
-#define SM501_POWER_MODE1_GATE 0x00000048UL
-#define POWER_MODE_GATE_GPIO_PWM_I2C 0x00000040UL
-#define SM501_GPIO_DATA_LOW 0x00010000UL
-#define SM501_GPIO_DATA_HIGH 0x00010004UL
-#define SM501_GPIO_DATA_DIR_LOW 0x00010008UL
-#define SM501_GPIO_DATA_DIR_HIGH 0x0001000CUL
-#define SM501_PANEL_DISPLAY_CONTROL 0x00080000UL
-
-static int i2s_squarewave(unsigned long duration, unsigned int freq,
- unsigned int channel);
-static int i2s_sawtooth(unsigned long duration, unsigned int freq,
- unsigned int channel);
-static void spi_init(void);
-static int spi_transmit(unsigned char data);
-static void pcm1772_write_reg(unsigned char addr, unsigned char data);
-static void set_attenuation(unsigned char attenuation);
-
-static void spi_init(void)
-{
- struct mpc5xxx_spi *spi = (struct mpc5xxx_spi*)MPC5XXX_SPI;
- struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio*)MPC5XXX_GPIO;
-
- /* PSC3 as SPI and GPIOs */
- gpio->port_config &= 0xFFFFF0FF;
- gpio->port_config |= 0x00000800;
- /*
- * Its important to use the correct order when initializing the
- * registers
- */
- spi->ddr = 0x0F; /* set all SPI pins as output */
- spi->pdr = 0x08; /* set SS high */
- spi->cr1 = 0x50; /* SPI is master, SS is general purpose output */
- spi->cr2 = 0x00; /* normal operation */
- spi->brr = 0xFF; /* baud rate: IPB clock / 2048 */
-}
-
-static int spi_transmit(unsigned char data)
-{
- int dummy;
- struct mpc5xxx_spi *spi = (struct mpc5xxx_spi*)MPC5XXX_SPI;
-
- spi->dr = data;
- /* wait for SPI transmission completed */
- while(!(spi->sr & 0x80))
- {
- if (spi->sr & 0x40) /* if write collision occured */
- {
- /* do dummy read to clear status register */
- dummy = spi->dr;
- printf ("SPI write collision\n");
- return -1;
- }
- }
- return (spi->dr);
-}
-
-static void pcm1772_write_reg(unsigned char addr, unsigned char data)
-{
- struct mpc5xxx_spi *spi = (struct mpc5xxx_spi*)MPC5XXX_SPI;
-
- spi->pdr = 0x00; /* Set SS low */
- spi_transmit(addr);
- spi_transmit(data);
- /* wait some time to meet MS# hold time of PCM1772 */
- udelay (1);
- spi->pdr = 0x08; /* set SS high */
-}
-
-static void set_attenuation(unsigned char attenuation)
-{
- pcm1772_write_reg(0x01, attenuation); /* left channel */
- debug ("PCM1772 attenuation left set to %d.\n", attenuation);
- pcm1772_write_reg(0x02, attenuation); /* right channel */
- debug ("PCM1772 attenuation right set to %d.\n", attenuation);
-}
-
-void amplifier_init(void)
-{
- static int init_done = 0;
- int i;
- struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio*)MPC5XXX_GPIO;
-
- /* Do this only once, because of the long time delay */
- if (!init_done) {
- /* configure PCM1772 audio format as I2S */
- pcm1772_write_reg(0x03, 0x01);
- /* enable audio amplifier */
- gpio->sint_gpioe |= 0x02; /* PSC3_5 as GPIO */
- gpio->sint_ode &= ~0x02; /* PSC3_5 is not open Drain */
- gpio->sint_dvo &= ~0x02; /* PSC3_5 is LOW */
- gpio->sint_ddr |= 0x02; /* PSC3_5 as output */
- /*
- * wait some time to allow amplifier to recover from shutdown
- * mode.
- */
- for(i = 0; i < 350; i++)
- udelay(1000);
- /*
- * The used amplifier (LM4867) has a so called "pop and click"
- * elmination filter. The input signal of the amplifier must
- * exceed a certain level once after power up to activate the
- * generation of the output signal. This is achieved by
- * sending a low frequent (nearly inaudible) sawtooth with a
- * sufficient signal level.
- */
- set_attenuation(50);
- i2s_sawtooth (200, 5, LEFT_RIGHT);
- init_done = 1;
- }
-}
-
-static void i2s_init(void)
-{
- unsigned long i;
- struct mpc5xxx_psc *psc = (struct mpc5xxx_psc*)MPC5XXX_PSC2;;
- struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio*)MPC5XXX_GPIO;
-
- gpio->port_config |= 0x00000070; /* PSC2 ports as Codec with MCLK */
- psc->command = (PSC_RX_DISABLE | PSC_TX_DISABLE);
- psc->sicr = 0x22E00000; /* 16 bit data; I2S */
-
- *(vu_long *)(CFG_MBAR + 0x22C) = 0x805d; /* PSC2 CDM MCLK config; MCLK
- * 5.617 MHz */
- *(vu_long *)(CFG_MBAR + 0x214) |= 0x00000040; /* CDM clock enable
- * register */
- psc->ccr = 0x1F03; /* 16 bit data width; 5.617MHz MCLK */
- psc->ctur = 0x0F; /* 16 bit frame width */
-
- for(i=0;i<128;i++)
- {
- psc->psc_buffer_32 = 0; /* clear tx fifo */
- }
-}
-
-static int i2s_play_wave(unsigned long addr, unsigned long len)
-{
- unsigned long i;
- unsigned char *wave_file = (uchar *)addr + 44; /* quick'n dirty: skip
- * wav header*/
- unsigned char swapped[4];
- struct mpc5xxx_psc *psc = (struct mpc5xxx_psc*)MPC5XXX_PSC2;
-
- /*
- * play wave file in memory; bytes/words are be swapped
- */
- psc->command = (PSC_RX_ENABLE | PSC_TX_ENABLE);
-
- for(i = 0;i < (len / 4); i++) {
- swapped[3]=*wave_file++;
- swapped[2]=*wave_file++;
- swapped[1]=*wave_file++;
- swapped[0]=*wave_file++;
- psc->psc_buffer_32 = *((unsigned long*)swapped);
- while (psc->tfnum > 400) {
- if(ctrlc())
- return 0;
- }
- }
- while (psc->tfnum > 0); /* wait for fifo empty */
- udelay (100);
- psc->command = (PSC_RX_DISABLE | PSC_TX_DISABLE);
- return 0;
-}
-
-static int i2s_sawtooth(unsigned long duration, unsigned int freq,
- unsigned int channel)
-{
- long i,j;
- unsigned long data;
- struct mpc5xxx_psc *psc = (struct mpc5xxx_psc*)MPC5XXX_PSC2;
-
- psc->command = (PSC_RX_ENABLE | PSC_TX_ENABLE);
-
- /*
- * Generate sawtooth. Start with middle level up to highest level. Then
- * go to lowest level and back to middle level.
- */
- for(j = 0; j < ((duration * freq) / 1000); j++) {
- for(i = 0; i <= 0x7FFF; i += (0x7FFF/(44100/(freq*4)))) {
- data = (i & 0xFFFF);
- /* data format: right data left data) */
- if (channel == LEFT_RIGHT)
- data |= (data<<16);
- if (channel == RIGHT)
- data = (data<<16);
- psc->psc_buffer_32 = data;
- while (psc->tfnum > 400);
- }
- for(i = 0x7FFF; i >= -0x7FFF; i -= (0xFFFF/(44100/(freq*2)))) {
- data = (i & 0xFFFF);
- /* data format: right data left data) */
- if (channel == LEFT_RIGHT)
- data |= (data<<16);
- if (channel == RIGHT)
- data = (data<<16);
- psc->psc_buffer_32 = data;
- while (psc->tfnum > 400);
- }
- for(i = -0x7FFF; i <= 0; i += (0x7FFF/(44100/(freq*4)))) {
- data = (i & 0xFFFF);
- /* data format: right data left data) */
- if (channel == LEFT_RIGHT)
- data |= (data<<16);
- if (channel == RIGHT)
- data = (data<<16);
- psc->psc_buffer_32 = data;
- while (psc->tfnum > 400);
- }
- }
- while (psc->tfnum > 0); /* wait for fifo empty */
- udelay (100);
- psc->command = (PSC_RX_DISABLE | PSC_TX_DISABLE);
-
- return 0;
-}
-
-static int i2s_squarewave(unsigned long duration, unsigned int freq,
- unsigned int channel)
-{
- long i,j;
- unsigned long data;
- struct mpc5xxx_psc *psc = (struct mpc5xxx_psc*)MPC5XXX_PSC2;
-
- psc->command = (PSC_RX_ENABLE | PSC_TX_ENABLE);
-
- /*
- * Generate sqarewave. Start with high level, duty cycle 1:1.
- */
- for(j = 0; j < ((duration * freq) / 1000); j++) {
- for(i = 0; i < (44100/(freq*2)); i ++) {
- data = 0x7FFF;
- /* data format: right data left data) */
- if (channel == LEFT_RIGHT)
- data |= (data<<16);
- if (channel == RIGHT)
- data = (data<<16);
- psc->psc_buffer_32 = data;
- while (psc->tfnum > 400);
- }
- for(i = 0; i < (44100/(freq*2)); i ++) {
- data = 0x8000;
- /* data format: right data left data) */
- if (channel == LEFT_RIGHT)
- data |= (data<<16);
- if (channel == RIGHT)
- data = (data<<16);
- psc->psc_buffer_32 = data;
- while (psc->tfnum > 400);
- }
- }
- while (psc->tfnum > 0); /* wait for fifo empty */
- udelay (100);
- psc->command = (PSC_RX_DISABLE | PSC_TX_DISABLE);
-
- return 0;
-}
-
-static int cmd_sound(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned long reg, val, duration;
- char *tmp;
- unsigned int freq, channel;
- unsigned char volume;
- int rcode = 1;
-
-#ifdef CONFIG_STK52XX_REV100
- printf ("Revision 100 of STK52XX not supported!\n");
- return 1;
-#endif
- spi_init();
- i2s_init();
- amplifier_init();
-
- if ((tmp = getenv ("volume")) != NULL) {
- volume = simple_strtoul (tmp, NULL, 10);
- } else {
- volume = DEFAULT_VOL;
- }
- set_attenuation(volume);
-
- switch (argc) {
- case 0:
- case 1:
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- case 2:
- if (strncmp(argv[1],"saw",3) == 0) {
- printf ("Play sawtooth\n");
- rcode = i2s_sawtooth (DEFAULT_DURATION, DEFAULT_FREQ,
- LEFT_RIGHT);
- return rcode;
- } else if (strncmp(argv[1],"squ",3) == 0) {
- printf ("Play squarewave\n");
- rcode = i2s_squarewave (DEFAULT_DURATION, DEFAULT_FREQ,
- LEFT_RIGHT);
- return rcode;
- }
-
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- case 3:
- if (strncmp(argv[1],"saw",3) == 0) {
- duration = simple_strtoul(argv[2], NULL, 10);
- printf ("Play sawtooth\n");
- rcode = i2s_sawtooth (duration, DEFAULT_FREQ,
- LEFT_RIGHT);
- return rcode;
- } else if (strncmp(argv[1],"squ",3) == 0) {
- duration = simple_strtoul(argv[2], NULL, 10);
- printf ("Play squarewave\n");
- rcode = i2s_squarewave (duration, DEFAULT_FREQ,
- LEFT_RIGHT);
- return rcode;
- }
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- case 4:
- if (strncmp(argv[1],"saw",3) == 0) {
- duration = simple_strtoul(argv[2], NULL, 10);
- freq = (unsigned int)simple_strtoul(argv[3], NULL, 10);
- printf ("Play sawtooth\n");
- rcode = i2s_sawtooth (duration, freq,
- LEFT_RIGHT);
- return rcode;
- } else if (strncmp(argv[1],"squ",3) == 0) {
- duration = simple_strtoul(argv[2], NULL, 10);
- freq = (unsigned int)simple_strtoul(argv[3], NULL, 10);
- printf ("Play squarewave\n");
- rcode = i2s_squarewave (duration, freq,
- LEFT_RIGHT);
- return rcode;
- } else if (strcmp(argv[1],"pcm1772") == 0) {
- reg = simple_strtoul(argv[2], NULL, 10);
- val = simple_strtoul(argv[3], NULL, 10);
- printf("Set PCM1772 %lu. %lu\n", reg, val);
- pcm1772_write_reg((uchar)reg, (uchar)val);
- return 0;
- }
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- case 5:
- if (strncmp(argv[1],"saw",3) == 0) {
- duration = simple_strtoul(argv[2], NULL, 10);
- freq = (unsigned int)simple_strtoul(argv[3], NULL, 10);
- if (strncmp(argv[4],"l",1) == 0)
- channel = LEFT;
- else if (strncmp(argv[4],"r",1) == 0)
- channel = RIGHT;
- else
- channel = LEFT_RIGHT;
- printf ("Play squarewave\n");
- rcode = i2s_sawtooth (duration, freq,
- channel);
- return rcode;
- } else if (strncmp(argv[1],"squ",3) == 0) {
- duration = simple_strtoul(argv[2], NULL, 10);
- freq = (unsigned int)simple_strtoul(argv[3], NULL, 10);
- if (strncmp(argv[4],"l",1) == 0)
- channel = LEFT;
- else if (strncmp(argv[4],"r",1) == 0)
- channel = RIGHT;
- else
- channel = LEFT_RIGHT;
- printf ("Play squarewave\n");
- rcode = i2s_squarewave (duration, freq,
- channel);
- return rcode;
- }
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
- printf ("Usage:\nsound cmd [arg1] [arg2] ...\n");
- return 1;
-}
-
-static int cmd_wav(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned long length, addr;
- unsigned char volume;
- int rcode = 1;
- char *tmp;
-
-#ifdef CONFIG_STK52XX_REV100
- printf ("Revision 100 of STK52XX not supported!\n");
- return 1;
-#endif
- spi_init();
- i2s_init();
- amplifier_init();
-
- switch (argc) {
-
- case 3:
- length = simple_strtoul(argv[2], NULL, 16);
- addr = simple_strtoul(argv[1], NULL, 16);
- break;
-
- case 2:
- if ((tmp = getenv ("filesize")) != NULL) {
- length = simple_strtoul (tmp, NULL, 16);
- } else {
- puts ("No filesize provided\n");
- return 1;
- }
- addr = simple_strtoul(argv[1], NULL, 16);
-
- case 1:
- if ((tmp = getenv ("filesize")) != NULL) {
- length = simple_strtoul (tmp, NULL, 16);
- } else {
- puts ("No filesize provided\n");
- return 1;
- }
- if ((tmp = getenv ("loadaddr")) != NULL) {
- addr = simple_strtoul (tmp, NULL, 16);
- } else {
- puts ("No loadaddr provided\n");
- return 1;
- }
- break;
-
- default:
- printf("Usage:\nwav <addr> <length[s]\n");
- return 1;
- break;
- }
-
- if ((tmp = getenv ("volume")) != NULL) {
- volume = simple_strtoul (tmp, NULL, 10);
- } else {
- volume = DEFAULT_VOL;
- }
- set_attenuation(volume);
-
- printf("Play wave file at %#p with length %#x\n", addr, length);
- rcode = i2s_play_wave(addr, length);
-
- return rcode;
-}
-
-static int cmd_beep(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- unsigned char volume;
- unsigned int channel;
- int rcode;
- char *tmp;
-
-#ifdef CONFIG_STK52XX_REV100
- printf ("Revision 100 of STK52XX not supported!\n");
- return 1;
-#endif
- spi_init();
- i2s_init();
- amplifier_init();
-
- switch (argc) {
- case 0:
- case 1:
- channel = LEFT_RIGHT;
- break;
- case 2:
- if (strncmp(argv[1],"l",1) == 0)
- channel = LEFT;
- else if (strncmp(argv[1],"r",1) == 0)
- channel = RIGHT;
- else
- channel = LEFT_RIGHT;
- break;
- default:
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- if ((tmp = getenv ("volume")) != NULL) {
- volume = simple_strtoul (tmp, NULL, 10);
- } else {
- volume = DEFAULT_VOL;
- }
- set_attenuation(volume);
-
- printf("Beep on ");
- if (channel == LEFT)
- printf ("left ");
- else if (channel == RIGHT)
- printf ("right ");
- else
- printf ("left and right ");
- printf ("channel\n");
-
- rcode = i2s_squarewave (DEFAULT_DURATION, DEFAULT_FREQ, channel);
-
- return rcode;
-}
-#endif
-
-#if defined(CONFIG_STK52XX)
-void led_init(void)
-{
- struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5XXX_GPIO;
- struct mpc5xxx_gpt_0_7 *gpt = (struct mpc5xxx_gpt_0_7 *)MPC5XXX_GPT;
-
- /* configure PSC3 for SPI and GPIO */
- gpio->port_config &= ~(0x00000F00);
- gpio->port_config |= 0x00000800;
-
- gpio->simple_gpioe &= ~(0x00000F00);
- gpio->simple_gpioe |= 0x00000F00;
-
- gpio->simple_ddr &= ~(0x00000F00);
- gpio->simple_ddr |= 0x00000F00;
-
- /* configure timer 4-7 for simple GPIO output */
- gpt->gpt4.emsr |= 0x00000024;
- gpt->gpt5.emsr |= 0x00000024;
- gpt->gpt6.emsr |= 0x00000024;
- gpt->gpt7.emsr |= 0x00000024;
-
-
- /* enable SM501 GPIO control (in both power modes) */
- *(vu_long *) (SM501_MMIO_BASE+SM501_POWER_MODE0_GATE) |=
- POWER_MODE_GATE_GPIO_PWM_I2C;
- *(vu_long *) (SM501_MMIO_BASE+SM501_POWER_MODE1_GATE) |=
- POWER_MODE_GATE_GPIO_PWM_I2C;
-
- /* configure SM501 gpio pins 24-27 as output */
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_CTRL_LOW) &= ~(0xF << 24);
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_DIR_LOW) |= (0xF << 24);
-
- /* configure SM501 gpio pins 48-51 as output */
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_DIR_HIGH) |= (0xF << 16);
-}
-
-/*
- * return 1 if led number unknown
- * return 0 else
- */
-int do_led(char *argv[])
-{
- struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5XXX_GPIO;
- struct mpc5xxx_gpt_0_7 *gpt = (struct mpc5xxx_gpt_0_7 *)MPC5XXX_GPT;
-
- switch (simple_strtoul(argv[2], NULL, 10)) {
-
- case 0:
- if (strcmp (argv[3], "on") == 0) {
- gpio->simple_dvo |= (1 << 8);
- } else {
- gpio->simple_dvo &= ~(1 << 8);
- }
- break;
-
- case 1:
- if (strcmp (argv[3], "on") == 0) {
- gpio->simple_dvo |= (1 << 9);
- } else {
- gpio->simple_dvo &= ~(1 << 9);
- }
- break;
-
- case 2:
- if (strcmp (argv[3], "on") == 0) {
- gpio->simple_dvo |= (1 << 10);
- } else {
- gpio->simple_dvo &= ~(1 << 10);
- }
- break;
-
- case 3:
- if (strcmp (argv[3], "on") == 0) {
- gpio->simple_dvo |= (1 << 11);
- } else {
- gpio->simple_dvo &= ~(1 << 11);
- }
- break;
-
- case 4:
- if (strcmp (argv[3], "on") == 0) {
- gpt->gpt4.emsr |= (1 << 4);
- } else {
- gpt->gpt4.emsr &= ~(1 << 4);
- }
- break;
-
- case 5:
- if (strcmp (argv[3], "on") == 0) {
- gpt->gpt5.emsr |= (1 << 4);
- } else {
- gpt->gpt5.emsr &= ~(1 << 4);
- }
- break;
-
- case 6:
- if (strcmp (argv[3], "on") == 0) {
- gpt->gpt6.emsr |= (1 << 4);
- } else {
- gpt->gpt6.emsr &= ~(1 << 4);
- }
- break;
-
- case 7:
- if (strcmp (argv[3], "on") == 0) {
- gpt->gpt7.emsr |= (1 << 4);
- } else {
- gpt->gpt7.emsr &= ~(1 << 4);
- }
- break;
-
- case 24:
- if (strcmp (argv[3], "on") == 0) {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_LOW) |=
- (0x1 << 24);
- } else {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_LOW) &=
- ~(0x1 << 24);
- }
- break;
-
- case 25:
- if (strcmp (argv[3], "on") == 0) {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_LOW) |=
- (0x1 << 25);
- } else {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_LOW) &=
- ~(0x1 << 25);
- }
- break;
-
- case 26:
- if (strcmp (argv[3], "on") == 0) {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_LOW) |=
- (0x1 << 26);
- } else {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_LOW) &=
- ~(0x1 << 26);
- }
- break;
-
- case 27:
- if (strcmp (argv[3], "on") == 0) {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_LOW) |=
- (0x1 << 27);
- } else {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_LOW) &=
- ~(0x1 << 27);
- }
- break;
-
- case 48:
- if (strcmp (argv[3], "on") == 0) {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_HIGH) |=
- (0x1 << 16);
- } else {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_HIGH) &=
- ~(0x1 << 16);
- }
- break;
-
- case 49:
- if (strcmp (argv[3], "on") == 0) {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_HIGH) |=
- (0x1 << 17);
- } else {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_HIGH) &=
- ~(0x1 << 17);
- }
- break;
-
- case 50:
- if (strcmp (argv[3], "on") == 0) {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_HIGH) |=
- (0x1 << 18);
- } else {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_HIGH) &=
- ~(0x1 << 18);
- }
- break;
-
- case 51:
- if (strcmp (argv[3], "on") == 0) {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_HIGH) |=
- (0x1 << 19);
- } else {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_HIGH) &=
- ~(0x1 << 19);
- }
- break;
-
- default:
- printf ("%s: invalid led number %s\n", __FUNCTION__, argv[2]);
- return 1;
- }
-
- return 0;
-}
-#endif
-
-#if defined(CONFIG_STK52XX) || defined(CONFIG_FO300)
-/*
- * return 1 on CAN initialization failure
- * return 0 if no failure
- */
-int can_init(void)
-{
- static int init_done = 0;
- int i;
- struct mpc5xxx_mscan *can1 =
- (struct mpc5xxx_mscan *)(CFG_MBAR + 0x0900);
- struct mpc5xxx_mscan *can2 =
- (struct mpc5xxx_mscan *)(CFG_MBAR + 0x0980);
-
- /* GPIO configuration of the CAN pins is done in TQM5200.h */
-
- if (!init_done) {
- /* init CAN 1 */
- can1->canctl1 |= 0x80; /* CAN enable */
- udelay(100);
-
- i = 0;
- can1->canctl0 |= 0x02; /* sleep mode */
- /* wait until sleep mode reached */
- while (!(can1->canctl1 & 0x02)) {
- udelay(10);
- i++;
- if (i == 10) {
- printf ("%s: CAN1 initialize error, "
- "can not enter sleep mode!\n",
- __FUNCTION__);
- return 1;
- }
- }
- i = 0;
- can1->canctl0 = 0x01; /* enter init mode */
- /* wait until init mode reached */
- while (!(can1->canctl1 & 0x01)) {
- udelay(10);
- i++;
- if (i == 10) {
- printf ("%s: CAN1 initialize error, "
- "can not enter init mode!\n",
- __FUNCTION__);
- return 1;
- }
- }
- can1->canctl1 = 0x80;
- can1->canctl1 |= 0x40;
- can1->canbtr0 = 0x0F;
- can1->canbtr1 = 0x7F;
- can1->canidac &= ~(0x30);
- can1->canidar1 = 0x00;
- can1->canidar3 = 0x00;
- can1->canidar5 = 0x00;
- can1->canidar7 = 0x00;
- can1->canidmr0 = 0xFF;
- can1->canidmr1 = 0xFF;
- can1->canidmr2 = 0xFF;
- can1->canidmr3 = 0xFF;
- can1->canidmr4 = 0xFF;
- can1->canidmr5 = 0xFF;
- can1->canidmr6 = 0xFF;
- can1->canidmr7 = 0xFF;
-
- i = 0;
- can1->canctl0 &= ~(0x01); /* leave init mode */
- can1->canctl0 &= ~(0x02);
- /* wait until init and sleep mode left */
- while ((can1->canctl1 & 0x01) || (can1->canctl1 & 0x02)) {
- udelay(10);
- i++;
- if (i == 10) {
- printf ("%s: CAN1 initialize error, "
- "can not leave init/sleep mode!\n",
- __FUNCTION__);
- return 1;
- }
- }
-
- /* init CAN 2 */
- can2->canctl1 |= 0x80; /* CAN enable */
- udelay(100);
-
- i = 0;
- can2->canctl0 |= 0x02; /* sleep mode */
- /* wait until sleep mode reached */
- while (!(can2->canctl1 & 0x02)) {
- udelay(10);
- i++;
- if (i == 10) {
- printf ("%s: CAN2 initialize error, "
- "can not enter sleep mode!\n",
- __FUNCTION__);
- return 1;
- }
- }
- i = 0;
- can2->canctl0 = 0x01; /* enter init mode */
- /* wait until init mode reached */
- while (!(can2->canctl1 & 0x01)) {
- udelay(10);
- i++;
- if (i == 10) {
- printf ("%s: CAN2 initialize error, "
- "can not enter init mode!\n",
- __FUNCTION__);
- return 1;
- }
- }
- can2->canctl1 = 0x80;
- can2->canctl1 |= 0x40;
- can2->canbtr0 = 0x0F;
- can2->canbtr1 = 0x7F;
- can2->canidac &= ~(0x30);
- can2->canidar1 = 0x00;
- can2->canidar3 = 0x00;
- can2->canidar5 = 0x00;
- can2->canidar7 = 0x00;
- can2->canidmr0 = 0xFF;
- can2->canidmr1 = 0xFF;
- can2->canidmr2 = 0xFF;
- can2->canidmr3 = 0xFF;
- can2->canidmr4 = 0xFF;
- can2->canidmr5 = 0xFF;
- can2->canidmr6 = 0xFF;
- can2->canidmr7 = 0xFF;
- can2->canctl0 &= ~(0x01); /* leave init mode */
- can2->canctl0 &= ~(0x02);
-
- i = 0;
- /* wait until init mode left */
- while ((can2->canctl1 & 0x01) || (can2->canctl1 & 0x02)) {
- udelay(10);
- i++;
- if (i == 10) {
- printf ("%s: CAN2 initialize error, "
- "can not leave init/sleep mode!\n",
- __FUNCTION__);
- return 1;
- }
- }
- init_done = 1;
- }
- return 0;
-}
-
-/*
- * return 1 on CAN failure
- * return 0 if no failure
- */
-int do_can(char *argv[])
-{
- int i;
- struct mpc5xxx_mscan *can1 =
- (struct mpc5xxx_mscan *)(CFG_MBAR + 0x0900);
- struct mpc5xxx_mscan *can2 =
- (struct mpc5xxx_mscan *)(CFG_MBAR + 0x0980);
-
- /* send a message on CAN1 */
- can1->cantbsel = 0x01;
- can1->cantxfg.idr[0] = 0x55;
- can1->cantxfg.idr[1] = 0x00;
- can1->cantxfg.idr[1] &= ~0x8;
- can1->cantxfg.idr[1] &= ~0x10;
- can1->cantxfg.dsr[0] = 0xCC;
- can1->cantxfg.dlr = 1;
- can1->cantxfg.tbpr = 0;
- can1->cantflg = 0x01;
-
- i = 0;
- while ((can1->cantflg & 0x01) == 0) {
- i++;
- if (i == 10) {
- printf ("%s: CAN1 send timeout, "
- "can not send message!\n",
- __FUNCTION__);
- return 1;
- }
- udelay(1000);
- }
- udelay(1000);
-
- i = 0;
- while (!(can2->canrflg & 0x01)) {
- i++;
- if (i == 10) {
- printf ("%s: CAN2 receive timeout, "
- "no message received!\n",
- __FUNCTION__);
- return 1;
- }
- udelay(1000);
- }
-
- if (can2->canrxfg.dsr[0] != 0xCC) {
- printf ("%s: CAN2 receive error, "
- "data mismatch!\n",
- __FUNCTION__);
- return 1;
- }
-
- /* send a message on CAN2 */
- can2->cantbsel = 0x01;
- can2->cantxfg.idr[0] = 0x55;
- can2->cantxfg.idr[1] = 0x00;
- can2->cantxfg.idr[1] &= ~0x8;
- can2->cantxfg.idr[1] &= ~0x10;
- can2->cantxfg.dsr[0] = 0xCC;
- can2->cantxfg.dlr = 1;
- can2->cantxfg.tbpr = 0;
- can2->cantflg = 0x01;
-
- i = 0;
- while ((can2->cantflg & 0x01) == 0) {
- i++;
- if (i == 10) {
- printf ("%s: CAN2 send error, "
- "can not send message!\n",
- __FUNCTION__);
- return 1;
- }
- udelay(1000);
- }
- udelay(1000);
-
- i = 0;
- while (!(can1->canrflg & 0x01)) {
- i++;
- if (i == 10) {
- printf ("%s: CAN1 receive timeout, "
- "no message received!\n",
- __FUNCTION__);
- return 1;
- }
- udelay(1000);
- }
-
- if (can1->canrxfg.dsr[0] != 0xCC) {
- printf ("%s: CAN1 receive error 0x%02x\n",
- __FUNCTION__, (can1->canrxfg.dsr[0]));
- return 1;
- }
-
- return 0;
-}
-
-/*
- * return 1 if rs232 port unknown
- * return 2 on txd/rxd failure (only rs232 2)
- * return 3 on rts/cts failure
- * return 0 if no failure
- */
-int do_rs232(char *argv[])
-{
- int error_status = 0;
- struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5XXX_GPIO;
- struct mpc5xxx_psc *psc1 = (struct mpc5xxx_psc *)MPC5XXX_PSC1;
-
- switch (simple_strtoul(argv[2], NULL, 10)) {
-
- case 1:
- /* check RTS <-> CTS loop */
- /* set rts to 0 */
- psc1->op1 |= 0x01;
-
- /* wait some time before requesting status */
- udelay(10);
-
- /* check status at cts */
- if ((psc1->ip & 0x01) != 0) {
- error_status = 3;
- printf ("%s: failure at rs232_1, cts status is %d "
- "(should be 0)\n",
- __FUNCTION__, (psc1->ip & 0x01));
- }
-
- /* set rts to 1 */
- psc1->op0 |= 0x01;
-
- /* wait some time before requesting status */
- udelay(10);
-
- /* check status at cts */
- if ((psc1->ip & 0x01) != 1) {
- error_status = 3;
- printf ("%s: failure at rs232_1, cts status is %d "
- "(should be 1)\n",
- __FUNCTION__, (psc1->ip & 0x01));
- }
-
- break;
-
- case 2:
- /* set PSC3_0, PSC3_2 as output and PSC3_1, PSC3_3 as input */
- gpio->simple_ddr &= ~(0x00000F00);
- gpio->simple_ddr |= 0x00000500;
-
- /* check TXD <-> RXD loop */
- /* set TXD to 1 */
- gpio->simple_dvo |= (1 << 8);
-
- /* wait some time before requesting status */
- udelay(10);
-
- if ((gpio->simple_ival & 0x00000200) != 0x00000200) {
- error_status = 2;
- printf ("%s: failure at rs232_2, rxd status is %d "
- "(should be 1)\n",
- __FUNCTION__,
- (gpio->simple_ival & 0x00000200) >> 9);
- }
-
- /* set TXD to 0 */
- gpio->simple_dvo &= ~(1 << 8);
-
- /* wait some time before requesting status */
- udelay(10);
-
- if ((gpio->simple_ival & 0x00000200) != 0x00000000) {
- error_status = 2;
- printf ("%s: failure at rs232_2, rxd status is %d "
- "(should be 0)\n",
- __FUNCTION__,
- (gpio->simple_ival & 0x00000200) >> 9);
- }
-
- /* check RTS <-> CTS loop */
- /* set RTS to 1 */
- gpio->simple_dvo |= (1 << 10);
-
- /* wait some time before requesting status */
- udelay(10);
-
- if ((gpio->simple_ival & 0x00000800) != 0x00000800) {
- error_status = 3;
- printf ("%s: failure at rs232_2, cts status is %d "
- "(should be 1)\n",
- __FUNCTION__,
- (gpio->simple_ival & 0x00000800) >> 11);
- }
-
- /* set RTS to 0 */
- gpio->simple_dvo &= ~(1 << 10);
-
- /* wait some time before requesting status */
- udelay(10);
-
- if ((gpio->simple_ival & 0x00000800) != 0x00000000) {
- error_status = 3;
- printf ("%s: failure at rs232_2, cts status is %d "
- "(should be 0)\n",
- __FUNCTION__,
- (gpio->simple_ival & 0x00000800) >> 11);
- }
-
- /* set PSC3_0, PSC3_1, PSC3_2 and PSC3_3 as output */
- gpio->simple_ddr &= ~(0x00000F00);
- gpio->simple_ddr |= 0x00000F00;
- break;
-
- default:
- printf ("%s: invalid rs232 number %s\n", __FUNCTION__, argv[2]);
- error_status = 1;
- break;
- }
-
- return error_status;
-}
-
-#ifndef CONFIG_FO300
-static void sm501_backlight (unsigned int state)
-{
- if (state == BL_ON) {
- *(vu_long *)(SM501_MMIO_BASE+SM501_PANEL_DISPLAY_CONTROL) |=
- (1 << 26) | (1 << 27);
- } else if (state == BL_OFF)
- *(vu_long *)(SM501_MMIO_BASE+SM501_PANEL_DISPLAY_CONTROL) &=
- ~((1 << 26) | (1 << 27));
-}
-#endif
-
-int cmd_fkt(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int rcode;
-
-#ifdef CONFIG_STK52XX_REV100
- printf ("Revision 100 of STK52XX not supported!\n");
- return 1;
-#endif
-#if defined(CONFIG_STK52XX)
- led_init();
-#endif
- can_init();
-
- switch (argc) {
-
- case 0:
- case 1:
- break;
-
- case 2:
- if (strncmp (argv[1], "can", 3) == 0) {
- rcode = do_can (argv);
- if (rcode == 0)
- printf ("OK\n");
- else
- printf ("Error\n");
- return rcode;
- }
- break;
-
- case 3:
- if (strncmp (argv[1], "rs232", 3) == 0) {
- rcode = do_rs232 (argv);
- if (rcode == 0)
- printf ("OK\n");
- else
- printf ("Error\n");
- return rcode;
-#ifndef CONFIG_FO300
- } else if (strncmp (argv[1], "backlight", 4) == 0) {
- if (strncmp (argv[2], "on", 2) == 0) {
- sm501_backlight (BL_ON);
- return 0;
- }
- else if (strncmp (argv[2], "off", 3) == 0) {
- sm501_backlight (BL_OFF);
- return 0;
- }
-#endif
- }
- break;
-
-#if defined(CONFIG_STK52XX)
- case 4:
- if (strcmp (argv[1], "led") == 0) {
- return (do_led (argv));
- }
- break;
-#endif
-
- default:
- break;
- }
-
- printf ("Usage:\nfkt cmd [arg1] [arg2] ...\n");
- return 1;
-}
-
-
-U_BOOT_CMD(
- sound , 5, 1, cmd_sound,
- "sound - Sound sub-system\n",
- "saw [duration] [freq] [channel]\n"
- " - generate sawtooth for 'duration' ms with frequency 'freq'\n"
- " on left \"l\" or right \"r\" channel\n"
- "sound square [duration] [freq] [channel]\n"
- " - generate squarewave for 'duration' ms with frequency 'freq'\n"
- " on left \"l\" or right \"r\" channel\n"
- "pcm1772 reg val\n"
-);
-
-U_BOOT_CMD(
- wav , 3, 1, cmd_wav,
- "wav - play wav file\n",
- "[addr] [bytes]\n"
- " - play wav file at address 'addr' with length 'bytes'\n"
-);
-
-U_BOOT_CMD(
- beep , 2, 1, cmd_beep,
- "beep - play short beep\n",
- "[channel]\n"
- " - play short beep on \"l\"eft or \"r\"ight channel\n"
-);
-#endif /* CONFIG_STK52XX || CONFIG_FO300 */
-
-#if defined(CONFIG_STK52XX)
-U_BOOT_CMD(
- fkt , 4, 1, cmd_fkt,
- "fkt - Function test routines\n",
- "led number on/off\n"
- " - 'number's like printed on STK52XX board\n"
- "fkt can\n"
- " - loopback plug for X83 required\n"
- "fkt rs232 number\n"
- " - loopback plug(s) for X2 required\n"
- "fkt backlight on/off\n"
- " - switch backlight on or off\n"
-);
-#elif defined(CONFIG_FO300)
-U_BOOT_CMD(
- fkt , 3, 1, cmd_fkt,
- "fkt - Function test routines\n",
- "fkt can\n"
- " - loopback plug for X16/X29 required\n"
- "fkt rs232 number\n"
- " - loopback plug(s) for X21/X22 required\n"
-);
-#endif
-#endif /* CFG_CMD_BSP */
diff --git a/board/tqm5200/cmd_tb5200.c b/board/tqm5200/cmd_tb5200.c
deleted file mode 100644
index 8784b1f800..0000000000
--- a/board/tqm5200/cmd_tb5200.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * (C) Copyright 2005 - 2006
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.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
- */
-
-/*
- * TB5200 specific functions
- */
-/*#define DEBUG*/
-
-#include <common.h>
-#include <command.h>
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-#if defined (CONFIG_TB5200)
-
-#define SM501_PANEL_DISPLAY_CONTROL 0x00080000UL
-
-static void led_init(void)
-{
- struct mpc5xxx_gpt_0_7 *gpt = (struct mpc5xxx_gpt_0_7 *)MPC5XXX_GPT;
-
- /* configure timer 4 for simple GPIO output */
- gpt->gpt4.emsr |= 0x00000024;
-}
-
-int cmd_led(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- struct mpc5xxx_gpt_0_7 *gpt = (struct mpc5xxx_gpt_0_7 *)MPC5XXX_GPT;
-
- led_init();
-
- if (strcmp (argv[1], "on") == 0) {
- debug ("switch status LED on\n");
- gpt->gpt4.emsr |= (1 << 4);
- } else if (strcmp (argv[1], "off") == 0) {
- debug ("switch status LED off\n");
- gpt->gpt4.emsr &= ~(1 << 4);
- } else {
- printf ("Usage:\nled on/off\n");
- return 1;
- }
-
- return 0;
-}
-
-static void sm501_backlight (unsigned int state)
-{
- if (state == 1) {
- *(vu_long *)(SM501_MMIO_BASE+SM501_PANEL_DISPLAY_CONTROL) |=
- (1 << 26) | (1 << 27);
- } else if (state == 0)
- *(vu_long *)(SM501_MMIO_BASE+SM501_PANEL_DISPLAY_CONTROL) &=
- ~((1 << 26) | (1 << 27));
-}
-
-int cmd_backlight(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- if (strcmp (argv[1], "on") == 0) {
- debug ("switch backlight on\n");
- sm501_backlight (1);
- } else if (strcmp (argv[1], "off") == 0) {
- debug ("switch backlight off\n");
- sm501_backlight (0);
- } else {
- printf ("Usage:\nbacklight on/off\n");
- return 1;
- }
-
- return 0;
-}
-
-U_BOOT_CMD(
- led , 2, 1, cmd_led,
- "led - switch status LED on or off\n",
- "on/off\n"
-);
-
-U_BOOT_CMD(
- backlight , 2, 1, cmd_backlight,
- "backlight - switch backlight on or off\n",
- "on/off\n"
- );
-
-#endif /* CONFIG_STK52XX */
-#endif /* CFG_CMD_BSP */
diff --git a/board/tqm5200/config.mk b/board/tqm5200/config.mk
deleted file mode 100644
index d72dfe7481..0000000000
--- a/board/tqm5200/config.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# (C) Copyright 2004
-# 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
-#
-
-#
-# TQM5200 board:
-#
-# Valid values for TEXT_BASE are:
-#
-# 0xFC000000 boot low (standard configuration with room for max 64 MByte
-# Flash ROM)
-# 0xFFF00000 boot high (for a backup copy of U-Boot)
-# 0x00100000 boot from RAM (for testing only)
-#
-
-sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
-
-ifndef TEXT_BASE
-## Standard: boot low
-TEXT_BASE = 0xFC000000
-## For a backup copy of U-Boot at the end of flash: boot high
-# TEXT_BASE = 0xFFF00000
-## For testing: boot from RAM
-# TEXT_BASE = 0x00100000
-endif
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/tqm5200/mt48lc16m16a2-75.h b/board/tqm5200/mt48lc16m16a2-75.h
deleted file mode 100644
index 3f1e1691bb..0000000000
--- a/board/tqm5200/mt48lc16m16a2-75.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.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
- */
-
-#define SDRAM_DDR 0 /* is SDR */
-
-#if defined(CONFIG_MPC5200)
-/* Settings for XLB = 132 MHz */
-#define SDRAM_MODE 0x00CD0000
-/* #define SDRAM_MODE 0x008D0000 */ /* CAS latency 2 */
-#define SDRAM_CONTROL 0x504F0000
-#define SDRAM_CONFIG1 0xD2322800
-/* #define SDRAM_CONFIG1 0xD2222800 */ /* CAS latency 2 */
-/*#define SDRAM_CONFIG1 0xD7322800 */ /* SDRAM controller bug workaround */
-#define SDRAM_CONFIG2 0x8AD70000
-/*#define SDRAM_CONFIG2 0xDDD70000 */ /* SDRAM controller bug workaround */
-
-#elif defined(CONFIG_MGT5100)
-/* Settings for XLB = 66 MHz */
-#define SDRAM_MODE 0x008D0000
-#define SDRAM_CONTROL 0x504F0000
-#define SDRAM_CONFIG1 0xC2222600
-#define SDRAM_CONFIG2 0x88B70004
-#define SDRAM_ADDRSEL 0x02000000
-
-#else
-#error Neither CONFIG_MPC5200 or CONFIG_MGT5100 defined
-#endif
diff --git a/board/tqm5200/tqm5200.c b/board/tqm5200/tqm5200.c
deleted file mode 100644
index a4322b6661..0000000000
--- a/board/tqm5200/tqm5200.c
+++ /dev/null
@@ -1,777 +0,0 @@
-/*
- * (C) Copyright 2003-2006
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2004
- * Mark Jonas, Freescale Semiconductor, mark.jonas@motorola.com.
- *
- * (C) Copyright 2004-2006
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.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 <common.h>
-#include <mpc5xxx.h>
-#include <pci.h>
-#include <asm/processor.h>
-
-#ifdef CONFIG_VIDEO_SM501
-#include <sm501.h>
-#endif
-
-#if defined(CONFIG_MPC5200_DDR)
-#include "mt46v16m16-75.h"
-#else
-#include "mt48lc16m16a2-75.h"
-#endif
-
-#ifdef CONFIG_PS2MULT
-void ps2mult_early_init(void);
-#endif
-
-#ifndef CFG_RAMBOOT
-static void sdram_start (int hi_addr)
-{
- long hi_addr_bit = hi_addr ? 0x01000000 : 0;
-
- /* unlock mode register */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000000 |
- hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* precharge all banks */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 |
- hi_addr_bit;
- __asm__ volatile ("sync");
-
-#if SDRAM_DDR
- /* set mode register: extended mode */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_EMODE;
- __asm__ volatile ("sync");
-
- /* set mode register: reset DLL */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE | 0x04000000;
- __asm__ volatile ("sync");
-#endif
-
- /* precharge all banks */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000002 |
- hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* auto refresh */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | 0x80000004 |
- hi_addr_bit;
- __asm__ volatile ("sync");
-
- /* set mode register */
- *(vu_long *)MPC5XXX_SDRAM_MODE = SDRAM_MODE;
- __asm__ volatile ("sync");
-
- /* normal operation */
- *(vu_long *)MPC5XXX_SDRAM_CTRL = SDRAM_CONTROL | hi_addr_bit;
- __asm__ volatile ("sync");
-}
-#endif
-
-/*
- * ATTENTION: Although partially referenced initdram does NOT make real use
- * use of CFG_SDRAM_BASE. The code does not work if CFG_SDRAM_BASE
- * is something else than 0x00000000.
- */
-
-#if defined(CONFIG_MPC5200)
-long int initdram (int board_type)
-{
- ulong dramsize = 0;
- ulong dramsize2 = 0;
- uint svr, pvr;
-
-#ifndef CFG_RAMBOOT
- ulong test1, test2;
-
- /* setup SDRAM chip selects */
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x0000001c; /* 512MB at 0x0 */
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = 0x40000000; /* disabled */
- __asm__ volatile ("sync");
-
- /* setup config registers */
- *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
- *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
- __asm__ volatile ("sync");
-
-#if SDRAM_DDR
- /* set tap delay */
- *(vu_long *)MPC5XXX_CDM_PORCFG = SDRAM_TAPDELAY;
- __asm__ volatile ("sync");
-#endif
-
- /* find RAM size using SDRAM CS0 only */
- sdram_start(0);
- test1 = get_ram_size((long *)CFG_SDRAM_BASE, 0x20000000);
- sdram_start(1);
- test2 = get_ram_size((long *)CFG_SDRAM_BASE, 0x20000000);
- if (test1 > test2) {
- sdram_start(0);
- dramsize = test1;
- } else {
- dramsize = test2;
- }
-
- /* memory smaller than 1MB is impossible */
- if (dramsize < (1 << 20)) {
- dramsize = 0;
- }
-
- /* set SDRAM CS0 size according to the amount of RAM found */
- if (dramsize > 0) {
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x13 +
- __builtin_ffs(dramsize >> 20) - 1;
- } else {
- *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
- }
-
- /* let SDRAM CS1 start right after CS0 */
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001c; /* 512MB */
-
- /* find RAM size using SDRAM CS1 only */
- sdram_start(0);
- test1 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x20000000);
- sdram_start(1);
- test2 = get_ram_size((long *)(CFG_SDRAM_BASE + dramsize), 0x20000000);
- if (test1 > test2) {
- sdram_start(0);
- dramsize2 = test1;
- } else {
- dramsize2 = test2;
- }
-
- /* memory smaller than 1MB is impossible */
- if (dramsize2 < (1 << 20)) {
- dramsize2 = 0;
- }
-
- /* set SDRAM CS1 size according to the amount of RAM found */
- if (dramsize2 > 0) {
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize
- | (0x13 + __builtin_ffs(dramsize2 >> 20) - 1);
- } else {
- *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
- }
-
-#else /* CFG_RAMBOOT */
-
- /* retrieve size of memory connected to SDRAM CS0 */
- dramsize = *(vu_long *)MPC5XXX_SDRAM_CS0CFG & 0xFF;
- if (dramsize >= 0x13) {
- dramsize = (1 << (dramsize - 0x13)) << 20;
- } else {
- dramsize = 0;
- }
-
- /* retrieve size of memory connected to SDRAM CS1 */
- dramsize2 = *(vu_long *)MPC5XXX_SDRAM_CS1CFG & 0xFF;
- if (dramsize2 >= 0x13) {
- dramsize2 = (1 << (dramsize2 - 0x13)) << 20;
- } else {
- dramsize2 = 0;
- }
-#endif /* CFG_RAMBOOT */
-
- /*
- * On MPC5200B we need to set the special configuration delay in the
- * DDR controller. Please refer to Freescale's AN3221 "MPC5200B SDRAM
- * Initialization and Configuration", 3.3.1 SDelay--MBAR + 0x0190:
- *
- * "The SDelay should be written to a value of 0x00000004. It is
- * required to account for changes caused by normal wafer processing
- * parameters."
- */
- svr = get_svr();
- pvr = get_pvr();
- if ((SVR_MJREV(svr) >= 2) &&
- (PVR_MAJ(pvr) == 1) && (PVR_MIN(pvr) == 4)) {
-
- *(vu_long *)MPC5XXX_SDRAM_SDELAY = 0x04;
- __asm__ volatile ("sync");
- }
-
-#if defined(CONFIG_TQM5200_B)
- return dramsize + dramsize2;
-#else
- return dramsize;
-#endif /* CONFIG_TQM5200_B */
-}
-
-#elif defined(CONFIG_MGT5100)
-
-long int initdram (int board_type)
-{
- ulong dramsize = 0;
-#ifndef CFG_RAMBOOT
- ulong test1, test2;
-
- /* setup and enable SDRAM chip selects */
- *(vu_long *)MPC5XXX_SDRAM_START = 0x00000000;
- *(vu_long *)MPC5XXX_SDRAM_STOP = 0x0000ffff;/* 2G */
- *(vu_long *)MPC5XXX_ADDECR |= (1 << 22); /* Enable SDRAM */
- __asm__ volatile ("sync");
-
- /* setup config registers */
- *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = SDRAM_CONFIG1;
- *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = SDRAM_CONFIG2;
-
- /* address select register */
- *(vu_long *)MPC5XXX_SDRAM_XLBSEL = SDRAM_ADDRSEL;
- __asm__ volatile ("sync");
-
- /* find RAM size */
- sdram_start(0);
- test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
- sdram_start(1);
- test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
- if (test1 > test2) {
- sdram_start(0);
- dramsize = test1;
- } else {
- dramsize = test2;
- }
-
- /* set SDRAM end address according to size */
- *(vu_long *)MPC5XXX_SDRAM_STOP = ((dramsize - 1) >> 15);
-
-#else /* CFG_RAMBOOT */
-
- /* Retrieve amount of SDRAM available */
- dramsize = ((*(vu_long *)MPC5XXX_SDRAM_STOP + 1) << 15);
-
-#endif /* CFG_RAMBOOT */
-
- return dramsize;
-}
-
-#else
-#error Neither CONFIG_MPC5200 or CONFIG_MGT5100 defined
-#endif
-
-int checkboard (void)
-{
-#if defined(CONFIG_AEVFIFO)
- puts ("Board: AEVFIFO\n");
- return 0;
-#endif
-
-#if defined(CONFIG_TQM5200S)
-# define MODULE_NAME "TQM5200S"
-#else
-# define MODULE_NAME "TQM5200"
-#endif
-
-#if defined(CONFIG_STK52XX)
-# define CARRIER_NAME "STK52xx"
-#elif defined(CONFIG_TB5200)
-# define CARRIER_NAME "TB5200"
-#elif defined(CONFIG_CAM5200)
-# define CARRIER_NAME "CAM5200"
-#elif defined(CONFIG_FO300)
-# define CARRIER_NAME "FO300"
-#else
-# error "UNKNOWN"
-#endif
-
- puts ( "Board: " MODULE_NAME " (TQ-Components GmbH)\n"
- " on a " CARRIER_NAME " carrier board\n");
-
- return 0;
-}
-
-#undef MODULE_NAME
-#undef CARRIER_NAME
-
-void flash_preinit(void)
-{
- /*
- * Now, when we are in RAM, enable flash write
- * access for detection process.
- * Note that CS_BOOT cannot be cleared when
- * executing in flash.
- */
-#if defined(CONFIG_MGT5100)
- *(vu_long *)MPC5XXX_ADDECR &= ~(1 << 25); /* disable CS_BOOT */
- *(vu_long *)MPC5XXX_ADDECR |= (1 << 16); /* enable CS0 */
-#endif
- *(vu_long *)MPC5XXX_BOOTCS_CFG &= ~0x1; /* clear RO */
-}
-
-
-#ifdef CONFIG_PCI
-static struct pci_controller hose;
-
-extern void pci_mpc5xxx_init(struct pci_controller *);
-
-void pci_init_board(void)
-{
- pci_mpc5xxx_init(&hose);
-}
-#endif
-
-#if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
-
-#if defined (CONFIG_MINIFAP)
-#define SM501_POWER_MODE0_GATE 0x00000040UL
-#define SM501_POWER_MODE1_GATE 0x00000048UL
-#define POWER_MODE_GATE_GPIO_PWM_I2C 0x00000040UL
-#define SM501_GPIO_DATA_DIR_HIGH 0x0001000CUL
-#define SM501_GPIO_DATA_HIGH 0x00010004UL
-#define SM501_GPIO_51 0x00080000UL
-#endif /* CONFIG MINIFAP */
-
-void init_ide_reset (void)
-{
- debug ("init_ide_reset\n");
-
-#if defined (CONFIG_MINIFAP)
- /* Configure GPIO_51 of the SM501 grafic controller as ATA reset */
-
- /* enable GPIO control (in both power modes) */
- *(vu_long *) (SM501_MMIO_BASE+SM501_POWER_MODE0_GATE) |=
- POWER_MODE_GATE_GPIO_PWM_I2C;
- *(vu_long *) (SM501_MMIO_BASE+SM501_POWER_MODE1_GATE) |=
- POWER_MODE_GATE_GPIO_PWM_I2C;
- /* configure GPIO51 as output */
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_DIR_HIGH) |=
- SM501_GPIO_51;
-#else
- /* Configure PSC1_4 as GPIO output for ATA reset */
- *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC1_4;
- *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC1_4;
-#endif
-}
-
-void ide_set_reset (int idereset)
-{
- debug ("ide_reset(%d)\n", idereset);
-
-#if defined (CONFIG_MINIFAP)
- if (idereset) {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_HIGH) &=
- ~SM501_GPIO_51;
- } else {
- *(vu_long *) (SM501_MMIO_BASE+SM501_GPIO_DATA_HIGH) |=
- SM501_GPIO_51;
- }
-#else
- if (idereset) {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
- } else {
- *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |= GPIO_PSC1_4;
- }
-#endif
-}
-#endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
-
-#ifdef CONFIG_POST
-/*
- * Reads GPIO pin PSC6_3. A keypress is reported, if PSC6_3 is low. If PSC6_3
- * is left open, no keypress is detected.
- */
-int post_hotkeys_pressed(void)
-{
-#ifdef CONFIG_STK52XX
- struct mpc5xxx_gpio *gpio;
-
- gpio = (struct mpc5xxx_gpio*) MPC5XXX_GPIO;
-
- /*
- * Configure PSC6_1 and PSC6_3 as GPIO. PSC6 then couldn't be used in
- * CODEC or UART mode. Consumer IrDA should still be possible.
- */
- gpio->port_config &= ~(0x07000000);
- gpio->port_config |= 0x03000000;
-
- /* Enable GPIO for GPIO_IRDA_1 (IR_USB_CLK pin) = PSC6_3 */
- gpio->simple_gpioe |= 0x20000000;
-
- /* Configure GPIO_IRDA_1 as input */
- gpio->simple_ddr &= ~(0x20000000);
-
- return ((gpio->simple_ival & 0x20000000) ? 0 : 1);
-#else
- return 0;
-#endif
-}
-#endif
-
-#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
-
-void post_word_store (ulong a)
-{
- volatile ulong *save_addr =
- (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE);
-
- *save_addr = a;
-}
-
-ulong post_word_load (void)
-{
- volatile ulong *save_addr =
- (volatile ulong *)(MPC5XXX_SRAM + MPC5XXX_SRAM_POST_SIZE);
-
- return *save_addr;
-}
-#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/
-
-#ifdef CONFIG_PS2MULT
-#ifdef CONFIG_BOARD_EARLY_INIT_R
-int board_early_init_r (void)
-{
- ps2mult_early_init();
- return (0);
-}
-#endif
-#endif /* CONFIG_PS2MULT */
-
-#ifdef CONFIG_FO300
-int silent_boot (void)
-{
- vu_long timer3_status;
-
- /* Configure GPT3 as GPIO input */
- *(vu_long *)MPC5XXX_GPT3_ENABLE = 0x00000004;
-
- /* Read in TIMER_3 pin status */
- timer3_status = *(vu_long *)MPC5XXX_GPT3_STATUS;
-
-#ifdef FO300_SILENT_CONSOLE_WHEN_S1_CLOSED
- /* Force silent console mode if S1 switch
- * is in closed position (TIMER_3 pin status is LOW). */
- if (MPC5XXX_GPT_GPIO_PIN(timer3_status) == 0)
- return 1;
-#else
- /* Force silent console mode if S1 switch
- * is in open position (TIMER_3 pin status is HIGH). */
- if (MPC5XXX_GPT_GPIO_PIN(timer3_status) == 1)
- return 1;
-#endif
-
- return 0;
-}
-
-int board_early_init_f (void)
-{
- DECLARE_GLOBAL_DATA_PTR;
-
- if (silent_boot())
- gd->flags |= GD_FLG_SILENT;
-
- return 0;
-}
-#endif /* CONFIG_FO300 */
-
-int last_stage_init (void)
-{
- /*
- * auto scan for really existing devices and re-set chip select
- * configuration.
- */
- u16 save, tmp;
- int restore;
-
- /*
- * Check for SRAM and SRAM size
- */
-
- /* save original SRAM content */
- save = *(volatile u16 *)CFG_CS2_START;
- restore = 1;
-
- /* write test pattern to SRAM */
- *(volatile u16 *)CFG_CS2_START = 0xA5A5;
- __asm__ volatile ("sync");
- /*
- * Put a different pattern on the data lines: otherwise they may float
- * long enough to read back what we wrote.
- */
- tmp = *(volatile u16 *)CFG_FLASH_BASE;
- if (tmp == 0xA5A5)
- puts ("!! possible error in SRAM detection\n");
-
- if (*(volatile u16 *)CFG_CS2_START != 0xA5A5) {
- /* no SRAM at all, disable cs */
- *(vu_long *)MPC5XXX_ADDECR &= ~(1 << 18);
- *(vu_long *)MPC5XXX_CS2_START = 0x0000FFFF;
- *(vu_long *)MPC5XXX_CS2_STOP = 0x0000FFFF;
- restore = 0;
- __asm__ volatile ("sync");
- } else if (*(volatile u16 *)(CFG_CS2_START + (1<<19)) == 0xA5A5) {
- /* make sure that we access a mirrored address */
- *(volatile u16 *)CFG_CS2_START = 0x1111;
- __asm__ volatile ("sync");
- if (*(volatile u16 *)(CFG_CS2_START + (1<<19)) == 0x1111) {
- /* SRAM size = 512 kByte */
- *(vu_long *)MPC5XXX_CS2_STOP = STOP_REG(CFG_CS2_START,
- 0x80000);
- __asm__ volatile ("sync");
- puts ("SRAM: 512 kB\n");
- }
- else
- puts ("!! possible error in SRAM detection\n");
- } else {
- puts ("SRAM: 1 MB\n");
- }
- /* restore origianl SRAM content */
- if (restore) {
- *(volatile u16 *)CFG_CS2_START = save;
- __asm__ volatile ("sync");
- }
-
- /*
- * Check for Grafic Controller
- */
-
- /* save origianl FB content */
- save = *(volatile u16 *)CFG_CS1_START;
- restore = 1;
-
- /* write test pattern to FB memory */
- *(volatile u16 *)CFG_CS1_START = 0xA5A5;
- __asm__ volatile ("sync");
- /*
- * Put a different pattern on the data lines: otherwise they may float
- * long enough to read back what we wrote.
- */
- tmp = *(volatile u16 *)CFG_FLASH_BASE;
- if (tmp == 0xA5A5)
- puts ("!! possible error in grafic controller detection\n");
-
- if (*(volatile u16 *)CFG_CS1_START != 0xA5A5) {
- /* no grafic controller at all, disable cs */
- *(vu_long *)MPC5XXX_ADDECR &= ~(1 << 17);
- *(vu_long *)MPC5XXX_CS1_START = 0x0000FFFF;
- *(vu_long *)MPC5XXX_CS1_STOP = 0x0000FFFF;
- restore = 0;
- __asm__ volatile ("sync");
- } else {
- puts ("VGA: SMI501 (Voyager) with 8 MB\n");
- }
- /* restore origianl FB content */
- if (restore) {
- *(volatile u16 *)CFG_CS1_START = save;
- __asm__ volatile ("sync");
- }
-
-#ifdef CONFIG_FO300
- if (silent_boot()) {
- setenv("bootdelay", "0");
- disable_ctrlc(1);
- }
-#endif
-
- return 0;
-}
-
-#ifdef CONFIG_VIDEO_SM501
-
-#ifdef CONFIG_FO300
-#define DISPLAY_WIDTH 800
-#else
-#define DISPLAY_WIDTH 640
-#endif
-#define DISPLAY_HEIGHT 480
-
-#ifdef CONFIG_VIDEO_SM501_8BPP
-#error CONFIG_VIDEO_SM501_8BPP not supported.
-#endif /* CONFIG_VIDEO_SM501_8BPP */
-
-#ifdef CONFIG_VIDEO_SM501_16BPP
-#error CONFIG_VIDEO_SM501_16BPP not supported.
-#endif /* CONFIG_VIDEO_SM501_16BPP */
-#ifdef CONFIG_VIDEO_SM501_32BPP
-static const SMI_REGS init_regs [] =
-{
-#if 0 /* CRT only */
- {0x00004, 0x0},
- {0x00048, 0x00021807},
- {0x0004C, 0x10090a01},
- {0x00054, 0x1},
- {0x00040, 0x00021807},
- {0x00044, 0x10090a01},
- {0x00054, 0x0},
- {0x80200, 0x00010000},
- {0x80204, 0x0},
- {0x80208, 0x0A000A00},
- {0x8020C, 0x02fa027f},
- {0x80210, 0x004a028b},
- {0x80214, 0x020c01df},
- {0x80218, 0x000201e9},
- {0x80200, 0x00013306},
-#else /* panel + CRT */
-#ifdef CONFIG_FO300
- {0x00004, 0x0},
- {0x00048, 0x00021807},
- {0x0004C, 0x301a0a01},
- {0x00054, 0x1},
- {0x00040, 0x00021807},
- {0x00044, 0x091a0a01},
- {0x00054, 0x0},
- {0x80000, 0x0f013106},
- {0x80004, 0xc428bb17},
- {0x8000C, 0x00000000},
- {0x80010, 0x0C800C80},
- {0x80014, 0x03200000},
- {0x80018, 0x01e00000},
- {0x8001C, 0x00000000},
- {0x80020, 0x01e00320},
- {0x80024, 0x042a031f},
- {0x80028, 0x0086034a},
- {0x8002C, 0x020c01df},
- {0x80030, 0x000201ea},
- {0x80200, 0x00010000},
-#else
- {0x00004, 0x0},
- {0x00048, 0x00021807},
- {0x0004C, 0x091a0a01},
- {0x00054, 0x1},
- {0x00040, 0x00021807},
- {0x00044, 0x091a0a01},
- {0x00054, 0x0},
- {0x80000, 0x0f013106},
- {0x80004, 0xc428bb17},
- {0x8000C, 0x00000000},
- {0x80010, 0x0a000a00},
- {0x80014, 0x02800000},
- {0x80018, 0x01e00000},
- {0x8001C, 0x00000000},
- {0x80020, 0x01e00280},
- {0x80024, 0x02fa027f},
- {0x80028, 0x004a028b},
- {0x8002C, 0x020c01df},
- {0x80030, 0x000201e9},
- {0x80200, 0x00010000},
-#endif /* #ifdef CONFIG_FO300 */
-#endif
- {0, 0}
-};
-#endif /* CONFIG_VIDEO_SM501_32BPP */
-
-#ifdef CONFIG_CONSOLE_EXTRA_INFO
-/*
- * Return text to be printed besides the logo.
- */
-void video_get_info_str (int line_number, char *info)
-{
- if (line_number == 1) {
- strcpy (info, " Board: TQM5200 (TQ-Components GmbH)");
-#if defined (CONFIG_STK52XX) || defined (CONFIG_TB5200) || defined(CONFIG_FO300)
- } else if (line_number == 2) {
-#if defined (CONFIG_STK52XX)
- strcpy (info, " on a STK52xx carrier board");
-#endif
-#if defined (CONFIG_TB5200)
- strcpy (info, " on a TB5200 carrier board");
-#endif
-#if defined (CONFIG_FO300)
- strcpy (info, " on a FO300 carrier board");
-#endif
-#endif
- }
- else {
- info [0] = '\0';
- }
-}
-#endif
-
-/*
- * Returns SM501 register base address. First thing called in the
- * driver. Checks if SM501 is physically present.
- */
-unsigned int board_video_init (void)
-{
- u16 save, tmp;
- int restore, ret;
-
- /*
- * Check for Grafic Controller
- */
-
- /* save origianl FB content */
- save = *(volatile u16 *)CFG_CS1_START;
- restore = 1;
-
- /* write test pattern to FB memory */
- *(volatile u16 *)CFG_CS1_START = 0xA5A5;
- __asm__ volatile ("sync");
- /*
- * Put a different pattern on the data lines: otherwise they may float
- * long enough to read back what we wrote.
- */
- tmp = *(volatile u16 *)CFG_FLASH_BASE;
- if (tmp == 0xA5A5)
- puts ("!! possible error in grafic controller detection\n");
-
- if (*(volatile u16 *)CFG_CS1_START != 0xA5A5) {
- /* no grafic controller found */
- restore = 0;
- ret = 0;
- } else {
- ret = SM501_MMIO_BASE;
- }
-
- if (restore) {
- *(volatile u16 *)CFG_CS1_START = save;
- __asm__ volatile ("sync");
- }
- return ret;
-}
-
-/*
- * Returns SM501 framebuffer address
- */
-unsigned int board_video_get_fb (void)
-{
- return SM501_FB_BASE;
-}
-
-/*
- * Called after initializing the SM501 and before clearing the screen.
- */
-void board_validate_screen (unsigned int base)
-{
-}
-
-/*
- * Return a pointer to the initialization sequence.
- */
-const SMI_REGS *board_get_regs (void)
-{
- return init_regs;
-}
-
-int board_get_width (void)
-{
- return DISPLAY_WIDTH;
-}
-
-int board_get_height (void)
-{
- return DISPLAY_HEIGHT;
-}
-
-#endif /* CONFIG_VIDEO_SM501 */
diff --git a/board/tqm5200/u-boot.lds b/board/tqm5200/u-boot.lds
deleted file mode 100644
index 3cc2968487..0000000000
--- a/board/tqm5200/u-boot.lds
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * (C) Copyright 2003-2004
- * 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/mpc5xxx/start.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/tqm8260/Makefile b/board/tqm8260/Makefile
deleted file mode 100644
index 61221fdca2..0000000000
--- a/board/tqm8260/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../tqm8xx/)
-endif
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o ../tqm8xx/load_sernum_ethaddr.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/tqm8260/config.mk b/board/tqm8260/config.mk
deleted file mode 100644
index 1fe99524c6..0000000000
--- a/board/tqm8260/config.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# (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
-#
-
-#
-# TQM8260 boards
-#
-
-# This should be equal to the CFG_FLASH_BASE define in config_TQM8260.h
-# for the "final" configuration, with U-Boot in flash, or the address
-# in RAM where U-Boot is loaded at for debugging.
-#
-TEXT_BASE = 0x40000000
-
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)
diff --git a/board/tqm8260/flash.c b/board/tqm8260/flash.c
deleted file mode 100644
index 056fe810b3..0000000000
--- a/board/tqm8260/flash.c
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
- * (C) Copyright 2001, 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for AMD devices on the TQM8260 board
- *
- *--------------------------------------------------------------------
- * 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 <common.h>
-#include <mpc8xx.h>
-
-#define V_ULONG(a) (*(volatile unsigned long *)( a ))
-#define V_BYTE(a) (*(volatile unsigned char *)( a ))
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-/*-----------------------------------------------------------------------
- */
-void flash_reset (void)
-{
- if (flash_info[0].flash_id != FLASH_UNKNOWN) {
- V_ULONG (flash_info[0].start[0]) = 0x00F000F0;
- V_ULONG (flash_info[0].start[0] + 4) = 0x00F000F0;
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-ulong flash_get_size (ulong baseaddr, flash_info_t * info)
-{
- short i;
- unsigned long flashtest_h, flashtest_l;
-
- /* Write auto select command sequence and test FLASH answer */
- V_ULONG (baseaddr + ((ulong) 0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (baseaddr + ((ulong) 0x02AA << 3)) = 0x00550055;
- V_ULONG (baseaddr + ((ulong) 0x0555 << 3)) = 0x00900090;
- V_ULONG (baseaddr + 4 + ((ulong) 0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (baseaddr + 4 + ((ulong) 0x02AA << 3)) = 0x00550055;
- V_ULONG (baseaddr + 4 + ((ulong) 0x0555 << 3)) = 0x00900090;
-
- flashtest_h = V_ULONG (baseaddr); /* manufacturer ID */
- flashtest_l = V_ULONG (baseaddr + 4);
-
- switch ((int) flashtest_h) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- flashtest_h = V_ULONG (baseaddr + 8); /* device ID */
- flashtest_l = V_ULONG (baseaddr + 12);
- if (flashtest_h != flashtest_l) {
- info->flash_id = FLASH_UNKNOWN;
- } else {
- switch (flashtest_h) {
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00400000;
- break; /* 4 * 1 MB = 4 MB */
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00400000;
- break; /* 4 * 1 MB = 4 MB */
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00800000;
- break; /* 4 * 2 MB = 8 MB */
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00800000;
- break; /* 4 * 2 MB = 8 MB */
- case AMD_ID_DL322T:
- info->flash_id += FLASH_AMDL322T;
- info->sector_count = 71;
- info->size = 0x01000000;
- break; /* 4 * 4 MB = 16 MB */
- case AMD_ID_DL322B:
- info->flash_id += FLASH_AMDL322B;
- info->sector_count = 71;
- info->size = 0x01000000;
- break; /* 4 * 4 MB = 16 MB */
- case AMD_ID_DL323T:
- info->flash_id += FLASH_AMDL323T;
- info->sector_count = 71;
- info->size = 0x01000000;
- break; /* 4 * 4 MB = 16 MB */
- case AMD_ID_DL323B:
- info->flash_id += FLASH_AMDL323B;
- info->sector_count = 71;
- info->size = 0x01000000;
- break; /* 4 * 4 MB = 16 MB */
- case AMD_ID_LV640U:
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x02000000;
- break; /* 4 * 8 MB = 32 MB */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* no or unknown flash */
- }
- }
-
- if (flashtest_h == AMD_ID_LV640U) {
-
- /* set up sector start adress table (uniform sector type) */
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = baseaddr + (i * 0x00040000);
-
- } else if (info->flash_id & FLASH_BTYPE) {
-
- /* set up sector start adress table (bottom sector type) */
- info->start[0] = baseaddr + 0x00000000;
- info->start[1] = baseaddr + 0x00010000;
- info->start[2] = baseaddr + 0x00018000;
- info->start[3] = baseaddr + 0x00020000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = baseaddr + (i * 0x00040000) - 0x000C0000;
- }
-
- } else {
-
- /* set up sector start adress table (top sector type) */
- i = info->sector_count - 1;
- info->start[i--] = baseaddr + info->size - 0x00010000;
- info->start[i--] = baseaddr + info->size - 0x00018000;
- info->start[i--] = baseaddr + info->size - 0x00020000;
- for (; i >= 0; i--) {
- info->start[i] = baseaddr + i * 0x00040000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- if ((V_ULONG (info->start[i] + 16) & 0x00010001) ||
- (V_ULONG (info->start[i] + 20) & 0x00010001)) {
- info->protect[i] = 1; /* D0 = 1 if protected */
- } else {
- info->protect[i] = 0;
- }
- }
-
- flash_reset ();
- return (info->size);
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- unsigned long size_b0 = 0;
- int i;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here (only one bank) */
-
- size_b0 = flash_get_size (CFG_FLASH0_BASE, &flash_info[0]);
- if (flash_info[0].flash_id == FLASH_UNKNOWN || size_b0 == 0) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0 >> 20);
- }
-
- /*
- * protect monitor and environment sectors
- */
-
-#if CFG_MONITOR_BASE >= CFG_FLASH0_BASE
- flash_protect (FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1, &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
- return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- printf ("AMD ");
- break;
- case FLASH_MAN_FUJ:
- printf ("FUJITSU ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM800T:
- printf ("29LV800T (8 M, top sector)\n");
- break;
- case FLASH_AM800B:
- printf ("29LV800T (8 M, bottom sector)\n");
- break;
- case FLASH_AM160T:
- printf ("29LV160T (16 M, top sector)\n");
- break;
- case FLASH_AM160B:
- printf ("29LV160B (16 M, bottom sector)\n");
- break;
- case FLASH_AMDL322T:
- printf ("29DL322T (32 M, top sector)\n");
- break;
- case FLASH_AMDL322B:
- printf ("29DL322B (32 M, bottom sector)\n");
- break;
- case FLASH_AMDL323T:
- printf ("29DL323T (32 M, top sector)\n");
- break;
- case FLASH_AMDL323B:
- printf ("29DL323B (32 M, bottom sector)\n");
- break;
- case FLASH_AM640U:
- printf ("29LV640D (64 M, uniform sector)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect])
- prot++;
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- V_ULONG (info->start[0] + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + (0x02AA << 3)) = 0x00550055;
- V_ULONG (info->start[0] + (0x0555 << 3)) = 0x00800080;
- V_ULONG (info->start[0] + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + (0x02AA << 3)) = 0x00550055;
- V_ULONG (info->start[0] + 4 + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + 4 + (0x02AA << 3)) = 0x00550055;
- V_ULONG (info->start[0] + 4 + (0x0555 << 3)) = 0x00800080;
- V_ULONG (info->start[0] + 4 + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + 4 + (0x02AA << 3)) = 0x00550055;
- udelay (1000);
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- V_ULONG (info->start[sect]) = 0x00300030;
- V_ULONG (info->start[sect] + 4) = 0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- while ((V_ULONG (info->start[l_sect]) & 0x00800080) != 0x00800080 ||
- (V_ULONG (info->start[l_sect] + 4) & 0x00800080) != 0x00800080)
- {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- flash_reset ();
-
- printf (" done\n");
- return 0;
-}
-
-static int write_dword (flash_info_t *, ulong, unsigned char *);
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong dp;
- static unsigned char bb[8];
- int i, l, rc, cc = cnt;
-
- dp = (addr & ~7); /* get lower dword aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - dp) != 0) {
- for (i = 0; i < 8; i++)
- bb[i] = (i < l || (i - l) >= cc) ? V_BYTE (dp + i) : *src++;
- if ((rc = write_dword (info, dp, bb)) != 0) {
- return (rc);
- }
- dp += 8;
- cc -= 8 - l;
- }
-
- /*
- * handle word aligned part
- */
- while (cc >= 8) {
- if ((rc = write_dword (info, dp, src)) != 0) {
- return (rc);
- }
- dp += 8;
- src += 8;
- cc -= 8;
- }
-
- if (cc <= 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- for (i = 0; i < 8; i++) {
- bb[i] = (i < cc) ? *src++ : V_BYTE (dp + i);
- }
- return (write_dword (info, dp, bb));
-}
-
-/*-----------------------------------------------------------------------
- * Write a dword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_dword (flash_info_t * info, ulong dest, unsigned char *pdata)
-{
- ulong start, cl, ch;
- int flag, i;
-
- for (ch = 0, i = 0; i < 4; i++)
- ch = (ch << 8) + *pdata++; /* high word */
- for (cl = 0, i = 0; i < 4; i++)
- cl = (cl << 8) + *pdata++; /* low word */
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *) dest) & ch) != ch
- || (*((vu_long *) (dest + 4)) & cl) != cl) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- V_ULONG (info->start[0] + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + (0x02AA << 3)) = 0x00550055;
- V_ULONG (info->start[0] + (0x0555 << 3)) = 0x00A000A0;
- V_ULONG (dest) = ch;
- V_ULONG (info->start[0] + 4 + (0x0555 << 3)) = 0x00AA00AA;
- V_ULONG (info->start[0] + 4 + (0x02AA << 3)) = 0x00550055;
- V_ULONG (info->start[0] + 4 + (0x0555 << 3)) = 0x00A000A0;
- V_ULONG (dest + 4) = cl;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
- while (((V_ULONG (dest) & 0x00800080) != (ch & 0x00800080)) ||
- ((V_ULONG (dest + 4) & 0x00800080) != (cl & 0x00800080))) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/tqm8260/tqm8260.c b/board/tqm8260/tqm8260.c
deleted file mode 100644
index 029863b7d9..0000000000
--- a/board/tqm8260/tqm8260.c
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- * (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 <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
- /* Port A configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PA31 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 *ATMTXEN */
- /* PA30 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMTCA */
- /* PA29 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMTSOC */
- /* PA28 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 *ATMRXEN */
- /* PA27 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMRSOC */
- /* PA26 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMRCA */
- /* PA25 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[0] */
- /* PA24 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[1] */
- /* PA23 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[2] */
- /* PA22 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[3] */
- /* PA21 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[4] */
- /* PA20 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[5] */
- /* PA19 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[6] */
- /* PA18 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMTXD[7] */
- /* PA17 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[7] */
- /* PA16 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[6] */
- /* PA15 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[5] */
- /* PA14 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[4] */
- /* PA13 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[3] */
- /* PA12 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[2] */
- /* PA11 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[1] */
- /* PA10 */ { 0, 0, 0, 1, 0, 0 }, /* FCC1 ATMRXD[0] */
- /* PA9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC2 TXD */
- /* PA8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC2 RXD */
- /* PA7 */ { 0, 0, 0, 1, 0, 0 }, /* PA7 */
- /* PA6 */ { 0, 0, 0, 1, 0, 0 }, /* PA6 */
- /* PA5 */ { 0, 0, 0, 1, 0, 0 }, /* PA5 */
- /* PA4 */ { 0, 0, 0, 1, 0, 0 }, /* PA4 */
- /* PA3 */ { 0, 0, 0, 1, 0, 0 }, /* PA3 */
- /* PA2 */ { 0, 0, 0, 1, 0, 0 }, /* PA2 */
- /* PA1 */ { 0, 0, 0, 1, 0, 0 }, /* PA1 */
- /* PA0 */ { 0, 0, 0, 1, 0, 0 } /* PA0 */
- },
-
- /* Port B configuration */
- { /* conf ppar psor pdir podr pdat */
- /* PB31 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TX_ER */
- /* PB30 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_DV */
- /* PB29 */ { 1, 1, 1, 1, 0, 0 }, /* FCC2 MII TX_EN */
- /* PB28 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_ER */
- /* PB27 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII COL */
- /* PB26 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII CRS */
- /* PB25 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[3] */
- /* PB24 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[2] */
- /* PB23 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[1] */
- /* PB22 */ { 1, 1, 0, 1, 0, 0 }, /* FCC2 MII TxD[0] */
- /* PB21 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[0] */
- /* PB20 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[1] */
- /* PB19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[2] */
- /* PB18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RxD[3] */
- /* PB17 */ { 0, 0, 0, 0, 0, 0 }, /* PB17 */
- /* PB16 */ { 0, 0, 0, 0, 0, 0 }, /* PB16 */
- /* PB15 */ { 0, 0, 0, 0, 0, 0 }, /* PB15 */
- /* PB14 */ { 0, 0, 0, 0, 0, 0 }, /* PB14 */
- /* PB13 */ { 0, 0, 0, 0, 0, 0 }, /* PB13 */
- /* PB12 */ { 0, 0, 0, 0, 0, 0 }, /* PB12 */
- /* PB11 */ { 0, 0, 0, 0, 0, 0 }, /* PB11 */
- /* PB10 */ { 0, 0, 0, 0, 0, 0 }, /* PB10 */
- /* PB9 */ { 0, 0, 0, 0, 0, 0 }, /* PB9 */
- /* PB8 */ { 0, 0, 0, 0, 0, 0 }, /* PB8 */
- /* PB7 */ { 0, 0, 0, 0, 0, 0 }, /* PB7 */
- /* PB6 */ { 0, 0, 0, 0, 0, 0 }, /* PB6 */
- /* PB5 */ { 0, 0, 0, 0, 0, 0 }, /* PB5 */
- /* PB4 */ { 0, 0, 0, 0, 0, 0 }, /* PB4 */
- /* PB3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PB0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- },
-
- /* Port C */
- { /* conf ppar psor pdir podr pdat */
- /* PC31 */ { 0, 0, 0, 1, 0, 0 }, /* PC31 */
- /* PC30 */ { 0, 0, 0, 1, 0, 0 }, /* PC30 */
- /* PC29 */ { 1, 1, 1, 0, 0, 0 }, /* SCC1 EN *CLSN */
- /* PC28 */ { 0, 0, 0, 1, 0, 0 }, /* PC28 */
- /* PC27 */ { 0, 0, 0, 1, 0, 0 }, /* PC27 */
- /* PC26 */ { 0, 0, 0, 1, 0, 0 }, /* PC26 */
- /* PC25 */ { 0, 0, 0, 1, 0, 0 }, /* PC25 */
- /* PC24 */ { 0, 0, 0, 1, 0, 0 }, /* PC24 */
- /* PC23 */ { 0, 1, 0, 1, 0, 0 }, /* ATMTFCLK */
- /* PC22 */ { 0, 1, 0, 0, 0, 0 }, /* ATMRFCLK */
- /* PC21 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN RXCLK */
- /* PC20 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN TXCLK */
- /* PC19 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII RX_CLK */
- /* PC18 */ { 1, 1, 0, 0, 0, 0 }, /* FCC2 MII TX_CLK */
- /* PC17 */ { 0, 0, 0, 1, 0, 0 }, /* PC17 */
- /* PC16 */ { 0, 0, 0, 1, 0, 0 }, /* PC16 */
- /* PC15 */ { 0, 0, 0, 1, 0, 0 }, /* PC15 */
- /* PC14 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN *CD */
- /* PC13 */ { 0, 0, 0, 1, 0, 0 }, /* PC13 */
- /* PC12 */ { 0, 0, 0, 1, 0, 0 }, /* PC12 */
- /* PC11 */ { 0, 0, 0, 1, 0, 0 }, /* PC11 */
- /* PC10 */ { 0, 0, 0, 1, 0, 0 }, /* FCC2 MDC */
- /* PC9 */ { 0, 0, 0, 1, 0, 0 }, /* FCC2 MDIO */
- /* PC8 */ { 0, 0, 0, 1, 0, 0 }, /* PC8 */
- /* PC7 */ { 0, 0, 0, 1, 0, 0 }, /* PC7 */
- /* PC6 */ { 0, 0, 0, 1, 0, 0 }, /* PC6 */
- /* PC5 */ { 0, 0, 0, 1, 0, 0 }, /* PC5 */
- /* PC4 */ { 0, 0, 0, 1, 0, 0 }, /* PC4 */
- /* PC3 */ { 0, 0, 0, 1, 0, 0 }, /* PC3 */
- /* PC2 */ { 0, 0, 0, 1, 0, 1 }, /* ENET FDE */
- /* PC1 */ { 0, 0, 0, 1, 0, 0 }, /* ENET DSQE */
- /* PC0 */ { 0, 0, 0, 1, 0, 0 }, /* ENET LBK */
- },
-
- /* Port D */
- { /* conf ppar psor pdir podr pdat */
- /* PD31 */ { 1, 1, 0, 0, 0, 0 }, /* SCC1 EN RxD */
- /* PD30 */ { 1, 1, 1, 1, 0, 0 }, /* SCC1 EN TxD */
- /* PD29 */ { 1, 1, 0, 1, 0, 0 }, /* SCC1 EN TENA */
- /* PD28 */ { 0, 0, 0, 1, 0, 0 }, /* PD28 */
- /* PD27 */ { 0, 0, 0, 1, 0, 0 }, /* PD27 */
- /* PD26 */ { 0, 0, 0, 1, 0, 0 }, /* PD26 */
- /* PD25 */ { 0, 0, 0, 1, 0, 0 }, /* PD25 */
- /* PD24 */ { 0, 0, 0, 1, 0, 0 }, /* PD24 */
- /* PD23 */ { 0, 0, 0, 1, 0, 0 }, /* PD23 */
- /* PD22 */ { 0, 0, 0, 1, 0, 0 }, /* PD22 */
- /* PD21 */ { 0, 0, 0, 1, 0, 0 }, /* PD21 */
- /* PD20 */ { 0, 0, 0, 1, 0, 0 }, /* PD20 */
- /* PD19 */ { 0, 0, 0, 1, 0, 0 }, /* PD19 */
- /* PD18 */ { 0, 0, 0, 1, 0, 0 }, /* PD19 */
- /* PD17 */ { 0, 1, 0, 0, 0, 0 }, /* FCC1 ATMRXPRTY */
- /* PD16 */ { 0, 1, 0, 1, 0, 0 }, /* FCC1 ATMTXPRTY */
-#if defined(CONFIG_SOFT_I2C)
- /* PD15 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SDA */
- /* PD14 */ { 1, 0, 0, 1, 1, 1 }, /* I2C SCL */
-#else
-#if defined(CONFIG_HARD_I2C)
- /* PD15 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 1, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#else /* normal I/O port pins */
- /* PD15 */ { 0, 1, 1, 0, 1, 0 }, /* I2C SDA */
- /* PD14 */ { 0, 1, 1, 0, 1, 0 }, /* I2C SCL */
-#endif
-#endif
- /* PD13 */ { 0, 0, 0, 0, 0, 0 }, /* PD13 */
- /* PD12 */ { 0, 0, 0, 0, 0, 0 }, /* PD12 */
- /* PD11 */ { 0, 0, 0, 0, 0, 0 }, /* PD11 */
- /* PD10 */ { 0, 0, 0, 0, 0, 0 }, /* PD10 */
- /* PD9 */ { 1, 1, 0, 1, 0, 0 }, /* SMC1 TXD */
- /* PD8 */ { 1, 1, 0, 0, 0, 0 }, /* SMC1 RXD */
- /* PD7 */ { 0, 0, 0, 1, 0, 1 }, /* PD7 */
- /* PD6 */ { 0, 0, 0, 1, 0, 1 }, /* PD6 */
- /* PD5 */ { 0, 0, 0, 1, 0, 1 }, /* PD5 */
- /* PD4 */ { 0, 0, 0, 1, 0, 1 }, /* PD4 */
- /* PD3 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD2 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD1 */ { 0, 0, 0, 0, 0, 0 }, /* pin doesn't exist */
- /* PD0 */ { 0, 0, 0, 0, 0, 0 } /* pin doesn't exist */
- }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/* Check Board Identity:
- */
-int checkboard (void)
-{
- char str[64];
- int i = getenv_r ("serial#", str, sizeof (str));
-
- puts ("Board: ");
-
- if (!i || strncmp (str, "TQM82", 5)) {
- puts ("### No HW ID - assuming TQM8260\n");
- return (0);
- }
-
- puts (str);
- putc ('\n');
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
- *
- * This routine performs standard 8260 initialization sequence
- * and calculates the available memory size. It may be called
- * several times to try different SDRAM configurations on both
- * 60x and local buses.
- */
-static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
- ulong orx, volatile uchar * base)
-{
- volatile uchar c = 0xff;
- volatile uint *sdmr_ptr;
- volatile uint *orx_ptr;
- ulong maxsize, size;
- int i;
-
- /* We must be able to test a location outsize the maximum legal size
- * to find out THAT we are outside; but this address still has to be
- * mapped by the controller. That means, that the initial mapping has
- * to be (at least) twice as large as the maximum expected size.
- */
- maxsize = (1 + (~orx | 0x7fff)) / 2;
-
- /* Since CFG_SDRAM_BASE is always 0 (??), we assume that
- * we are configuring CS1 if base != 0
- */
- sdmr_ptr = base ? &memctl->memc_lsdmr : &memctl->memc_psdmr;
- orx_ptr = base ? &memctl->memc_or2 : &memctl->memc_or1;
-
- *orx_ptr = orx;
-
- /*
- * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
- *
- * "At system reset, initialization software must set up the
- * programmable parameters in the memory controller banks registers
- * (ORx, BRx, P/LSDMR). After all memory parameters are configured,
- * system software should execute the following initialization sequence
- * for each SDRAM device.
- *
- * 1. Issue a PRECHARGE-ALL-BANKS command
- * 2. Issue eight CBR REFRESH commands
- * 3. Issue a MODE-SET command to initialize the mode register
- *
- * The initial commands are executed by setting P/LSDMR[OP] and
- * accessing the SDRAM with a single-byte transaction."
- *
- * The appropriate BRx/ORx registers have already been set when we
- * get here. The SDRAM can be accessed at the address CFG_SDRAM_BASE.
- */
-
- *sdmr_ptr = sdmr | PSDMR_OP_PREA;
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
- for (i = 0; i < 8; i++)
- *base = c;
-
- *sdmr_ptr = sdmr | PSDMR_OP_MRW;
- *(base + CFG_MRS_OFFS) = c; /* setting MR on address lines */
-
- *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
- *base = c;
-
- size = get_ram_size((long *)base, maxsize);
- *orx_ptr = orx | ~(size - 1);
-
- return (size);
-}
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8260_t *memctl = &immap->im_memctl;
-
-#ifndef CFG_RAMBOOT
- long size8, size9;
-#endif
- long psize, lsize;
-
- psize = 16 * 1024 * 1024;
- lsize = 0;
-
- memctl->memc_psrt = CFG_PSRT;
- memctl->memc_mptpr = CFG_MPTPR;
-
-#if 0 /* Just for debugging */
-#define prt_br_or(brX,orX) do { \
- ulong start = memctl->memc_ ## brX & 0xFFFF8000; \
- ulong sizem = ~memctl->memc_ ## orX | 0x00007FFF; \
- printf ("\n" \
- #brX " 0x%08x " #orX " 0x%08x " \
- "==> 0x%08lx ... 0x%08lx = %ld MB\n", \
- memctl->memc_ ## brX, memctl->memc_ ## orX, \
- start, start+sizem, (sizem+1)>>20); \
- } while (0)
- prt_br_or (br0, or0);
- prt_br_or (br1, or1);
- prt_br_or (br2, or2);
- prt_br_or (br3, or3);
-#endif
-
-#ifndef CFG_RAMBOOT
- /* 60x SDRAM setup:
- */
- size8 = try_init (memctl, CFG_PSDMR_8COL, CFG_OR1_8COL,
- (uchar *) CFG_SDRAM_BASE);
- size9 = try_init (memctl, CFG_PSDMR_9COL, CFG_OR1_9COL,
- (uchar *) CFG_SDRAM_BASE);
-
- if (size8 < size9) {
- psize = size9;
- printf ("(60x:9COL - %ld MB, ", psize >> 20);
- } else {
- psize = try_init (memctl, CFG_PSDMR_8COL, CFG_OR1_8COL,
- (uchar *) CFG_SDRAM_BASE);
- printf ("(60x:8COL - %ld MB, ", psize >> 20);
- }
-
- /* Local SDRAM setup:
- */
-#ifdef CFG_INIT_LOCAL_SDRAM
- memctl->memc_lsrt = CFG_LSRT;
- size8 = try_init (memctl, CFG_LSDMR_8COL, CFG_OR2_8COL,
- (uchar *) SDRAM_BASE2_PRELIM);
- size9 = try_init (memctl, CFG_LSDMR_9COL, CFG_OR2_9COL,
- (uchar *) SDRAM_BASE2_PRELIM);
-
- if (size8 < size9) {
- lsize = size9;
- printf ("Local:9COL - %ld MB) using ", lsize >> 20);
- } else {
- lsize = try_init (memctl, CFG_LSDMR_8COL, CFG_OR2_8COL,
- (uchar *) SDRAM_BASE2_PRELIM);
- printf ("Local:8COL - %ld MB) using ", lsize >> 20);
- }
-
-#if 0
- /* Set up BR2 so that the local SDRAM goes
- * right after the 60x SDRAM
- */
- memctl->memc_br2 = (CFG_BR2_PRELIM & ~BRx_BA_MSK) |
- (CFG_SDRAM_BASE + psize);
-#endif
-#endif /* CFG_INIT_LOCAL_SDRAM */
-#endif /* CFG_RAMBOOT */
-
- icache_enable ();
-
- return (psize);
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/tqm8260/u-boot.lds b/board/tqm8260/u-boot.lds
deleted file mode 100644
index 05f29c6ed0..0000000000
--- a/board/tqm8260/u-boot.lds
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * (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/mpc8260/start.o (.text)
- *(.text)
- common/environment.o(.text)
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/tqm8xx/Makefile b/board/tqm8xx/Makefile
deleted file mode 100644
index b48934b429..0000000000
--- a/board/tqm8xx/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o load_sernum_ethaddr.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/tqm8xx/config.mk b/board/tqm8xx/config.mk
deleted file mode 100644
index 9d6080b84a..0000000000
--- a/board/tqm8xx/config.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# (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
-#
-
-#
-# TQM8xxL boards
-#
-
-TEXT_BASE = 0x40000000
diff --git a/board/tqm8xx/flash.c b/board/tqm8xx/flash.c
deleted file mode 100644
index db0a7e5eb8..0000000000
--- a/board/tqm8xx/flash.c
+++ /dev/null
@@ -1,830 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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
- */
-
-#if 0
-#define DEBUG
-#endif
-
-#include <common.h>
-#include <mpc8xx.h>
-#include <environment.h>
-
-#include <asm/processor.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if defined(CONFIG_TQM8xxL) && !defined(CONFIG_TQM866M) \
- && !defined(CONFIG_TQM885D)
-# ifndef CFG_OR_TIMING_FLASH_AT_50MHZ
-# define CFG_OR_TIMING_FLASH_AT_50MHZ (OR_ACS_DIV1 | OR_TRLX | OR_CSNT_SAM | \
- OR_SCY_2_CLK | OR_EHTR | OR_BI)
-# endif
-#endif /* CONFIG_TQM8xxL/M, !TQM866M, !TQM885D */
-
-#ifndef CFG_ENV_ADDR
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-#endif
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
-#ifdef CFG_OR_TIMING_FLASH_AT_50MHZ
- int scy, trlx, flash_or_timing, clk_diff;
-
- scy = (CFG_OR_TIMING_FLASH_AT_50MHZ & OR_SCY_MSK) >> 4;
- if (CFG_OR_TIMING_FLASH_AT_50MHZ & OR_TRLX) {
- trlx = OR_TRLX;
- scy *= 2;
- } else
- trlx = 0;
-
- /* We assume that each 10MHz of bus clock require 1-clk SCY
- * adjustment.
- */
- clk_diff = (gd->bus_clk / 1000000) - 50;
-
- /* We need proper rounding here. This is what the "+5" and "-5"
- * are here for.
- */
- if (clk_diff >= 0)
- scy += (clk_diff + 5) / 10;
- else
- scy += (clk_diff - 5) / 10;
-
- /* For bus frequencies above 50MHz, we want to use relaxed timing
- * (OR_TRLX).
- */
- if (gd->bus_clk >= 50000000)
- trlx = OR_TRLX;
- else
- trlx = 0;
-
- if (trlx)
- scy /= 2;
-
- if (scy > 0xf)
- scy = 0xf;
- if (scy < 1)
- scy = 1;
-
- flash_or_timing = (scy << 4) | trlx |
- (CFG_OR_TIMING_FLASH_AT_50MHZ & ~(OR_TRLX | OR_SCY_MSK));
-#endif
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- debug ("\n## Get flash bank 1 size @ 0x%08x\n",FLASH_BASE0_PRELIM);
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- debug ("## Get flash bank 2 size @ 0x%08x\n",FLASH_BASE1_PRELIM);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- debug ("## Prelim. Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-
- debug ("## Before remap: "
- "BR0: 0x%08x OR0: 0x%08x "
- "BR1: 0x%08x OR1: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0,
- memctl->memc_br1, memctl->memc_or1);
-
- /* Remap FLASH according to real size */
-#ifndef CFG_OR_TIMING_FLASH_AT_50MHZ
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
-#else
- memctl->memc_or0 = flash_or_timing | (-size_b0 & OR_AM_MSK);
-#endif
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-
- debug ("## BR0: 0x%08x OR0: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0);
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- debug ("Protect monitor: %08lx ... %08lx\n",
- (ulong)CFG_MONITOR_BASE,
- (ulong)CFG_MONITOR_BASE + monitor_flash_len - 1);
-
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
-# ifdef CFG_ENV_ADDR_REDUND
- debug ("Protect primary environment: %08lx ... %08lx\n",
- (ulong)CFG_ENV_ADDR,
- (ulong)CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1);
-# else
- debug ("Protect environment: %08lx ... %08lx\n",
- (ulong)CFG_ENV_ADDR,
- (ulong)CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1);
-# endif
-
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_ADDR_REDUND
- debug ("Protect redundand environment: %08lx ... %08lx\n",
- (ulong)CFG_ENV_ADDR_REDUND,
- (ulong)CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1);
-
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
-#ifndef CFG_OR_TIMING_FLASH_AT_50MHZ
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
-#else
- memctl->memc_or1 = flash_or_timing | (-size_b1 & 0xFFFF8000);
-#endif
- memctl->memc_br1 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_MS_GPCM | BR_V;
-
- debug ("## BR1: 0x%08x OR1: 0x%08x\n",
- memctl->memc_br1, memctl->memc_or1);
-
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(CFG_FLASH_BASE + size_b0),
- &flash_info[1]);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
- &flash_info[1]);
-#endif
- } else {
- memctl->memc_br1 = 0; /* invalidate bank */
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- flash_info[1].size = 0;
-
- debug ("## DISABLE BR1: 0x%08x OR1: 0x%08x\n",
- memctl->memc_br1, memctl->memc_or1);
- }
-
- debug ("## Final Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
-#ifdef CONFIG_TQM8xxM /* mirror bit flash */
- case FLASH_AMLV128U: printf ("AM29LV128ML (128Mbit, uniform sector size)\n");
- break;
- case FLASH_AMLV320U: printf ("AM29LV320ML (32Mbit, uniform sector size)\n");
- break;
- case FLASH_AMLV640U: printf ("AM29LV640ML (64Mbit, uniform sector size)\n");
- break;
- case FLASH_AMLV320B: printf ("AM29LV320MB (32Mbit, bottom boot sect)\n");
- break;
-# else /* ! TQM8xxM */
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
-#endif /* TQM8xxM */
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AMDL163B: printf ("AM29DL163B (16 Mbit, bottom boot sect)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-
- value = addr[0];
-
- debug ("Manuf. ID @ 0x%08lx: 0x%08lx\n", (ulong)addr, value);
-
- switch (value) {
- case AMD_MANUFACT:
- debug ("Manufacturer: AMD\n");
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- debug ("Manufacturer: FUJITSU\n");
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- debug ("Manufacturer: *** unknown ***\n");
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- debug ("Device ID @ 0x%08lx: 0x%08lx\n", (ulong)(&addr[1]), value);
-
- switch (value) {
-#ifdef CONFIG_TQM8xxM /* mirror bit flash */
- case AMD_ID_MIRROR:
- debug ("Mirror Bit flash: addr[14] = %08lX addr[15] = %08lX\n",
- addr[14], addr[15]);
- /* Special case for AMLV320MH/L */
- if ((addr[14] & 0x00ff00ff) == 0x001d001d &&
- (addr[15] & 0x00ff00ff) == 0x00000000) {
- debug ("Chip: AMLV320MH/L\n");
- info->flash_id += FLASH_AMLV320U;
- info->sector_count = 64;
- info->size = 0x00800000; /* => 8 MB */
- break;
- }
- switch(addr[14]) {
- case AMD_ID_LV128U_2:
- if (addr[15] != AMD_ID_LV128U_3) {
- debug ("Chip: AMLV128U -> unknown\n");
- info->flash_id = FLASH_UNKNOWN;
- } else {
- debug ("Chip: AMLV128U\n");
- info->flash_id += FLASH_AMLV128U;
- info->sector_count = 256;
- info->size = 0x02000000;
- }
- break; /* => 32 MB */
- case AMD_ID_LV640U_2:
- if (addr[15] != AMD_ID_LV640U_3) {
- debug ("Chip: AMLV640U -> unknown\n");
- info->flash_id = FLASH_UNKNOWN;
- } else {
- debug ("Chip: AMLV640U\n");
- info->flash_id += FLASH_AMLV640U;
- info->sector_count = 128;
- info->size = 0x01000000;
- }
- break; /* => 16 MB */
- case AMD_ID_LV320B_2:
- if (addr[15] != AMD_ID_LV320B_3) {
- debug ("Chip: AMLV320B -> unknown\n");
- info->flash_id = FLASH_UNKNOWN;
- } else {
- debug ("Chip: AMLV320B\n");
- info->flash_id += FLASH_AMLV320B;
- info->sector_count = 71;
- info->size = 0x00800000;
- }
- break; /* => 8 MB */
- default:
- debug ("Chip: *** unknown ***\n");
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
- break;
-# else /* ! TQM8xxM */
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif /* TQM8xxM */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_DL163B:
- info->flash_id += FLASH_AMDL163B;
- info->sector_count = 39;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- switch (value) {
-#ifdef CONFIG_TQM8xxM /* mirror bit flash */
- case AMD_ID_MIRROR:
- switch (info->flash_id & FLASH_TYPEMASK) {
- /* only known types here - no default */
- case FLASH_AMLV128U:
- case FLASH_AMLV640U:
- case FLASH_AMLV320U:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- base += 0x20000;
- }
- break;
- case FLASH_AMLV320B:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- /*
- * The first 8 sectors are 8 kB,
- * all the other ones are 64 kB
- */
- base += (i < 8)
- ? 2 * ( 8 << 10)
- : 2 * (64 << 10);
- }
- break;
- }
- break;
-# else /* ! TQM8xxM */
- case AMD_ID_LV400B:
- case AMD_ID_LV800B:
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- break;
- case AMD_ID_LV400T:
- case AMD_ID_LV800T:
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- break;
- case AMD_ID_LV320B:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- /*
- * The first 8 sectors are 8 kB,
- * all the other ones are 64 kB
- */
- base += (i < 8)
- ? 2 * ( 8 << 10)
- : 2 * (64 << 10);
- }
- break;
- case AMD_ID_LV320T:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- /*
- * The last 8 sectors are 8 kB,
- * all the other ones are 64 kB
- */
- base += (i < (info->sector_count - 8))
- ? 2 * (64 << 10)
- : 2 * ( 8 << 10);
- }
- break;
-#endif /* TQM8xxM */
- case AMD_ID_LV160B:
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- break;
- case AMD_ID_LV160T:
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- break;
- case AMD_ID_DL163B:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- /*
- * The first 8 sectors are 8 kB,
- * all the other ones are 64 kB
- */
- base += (i < 8)
- ? 2 * ( 8 << 10)
- : 2 * (64 << 10);
- }
- break;
- default:
- return (0);
- break;
- }
-
-#if 0
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-#endif
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- debug ("flash_erase: first: %d last: %d\n", s_first, s_last);
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ((addr[0] & 0x00800080) != 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/tqm8xx/load_sernum_ethaddr.c b/board/tqm8xx/load_sernum_ethaddr.c
deleted file mode 100644
index 143f36801d..0000000000
--- a/board/tqm8xx/load_sernum_ethaddr.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * (C) Copyright 2000, 2001, 2002
- * 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 <common.h>
-#include <mpc8xx.h>
-
-/*-----------------------------------------------------------------------
- * Process Hardware Information Block:
- *
- * If we boot on a system fresh from factory, check if the Hardware
- * Information Block exists and save the information it contains.
- *
- * The TQM8xxL / TQM82xx Hardware Information Block is defined as
- * follows:
- * - located in first flash bank
- * - starts at offset 0x0003FFC0
- * - size 0x00000040
- *
- * Internal structure:
- * - sequence of ASCII character strings
- * - fields separated by a single space character (0x20)
- * - last field terminated by NUL character (0x00)
- * - remaining space filled with NUL characters (0x00)
- *
- * Fields in Hardware Information Block:
- * 1) Module Type
- * 2) Serial Number
- * 3) First MAC Address
- * 4) Number of additional MAC addresses
- */
-
-void load_sernum_ethaddr (void)
-{
- unsigned char *hwi;
- unsigned char serial [CFG_HWINFO_SIZE];
- unsigned char ethaddr[CFG_HWINFO_SIZE];
- unsigned short ih, is, ie, part;
-
- hwi = (unsigned char *)(CFG_FLASH_BASE + CFG_HWINFO_OFFSET);
- ih = is = ie = 0;
-
- if (*((unsigned long *)hwi) != (unsigned long)CFG_HWINFO_MAGIC) {
- return;
- }
-
- part = 1;
-
- /* copy serial # / MAC address */
- while ((hwi[ih] != '\0') && (ih < CFG_HWINFO_SIZE)) {
- if (hwi[ih] < ' ' || hwi[ih] > '~') { /* ASCII strings! */
- return;
- }
- switch (part) {
- default: /* Copy serial # */
- if (hwi[ih] == ' ') {
- ++part;
- }
- serial[is++] = hwi[ih];
- break;
- case 3: /* Copy MAC address */
- if (hwi[ih] == ' ') {
- ++part;
- break;
- }
- ethaddr[ie++] = hwi[ih];
- if ((ie % 3) == 2)
- ethaddr[ie++] = ':';
- break;
- }
- ++ih;
- }
- serial[is] = '\0';
- if (ie && ethaddr[ie-1] == ':')
- --ie;
- ethaddr[ie] = '\0';
-
- /* set serial# and ethaddr if not yet defined */
- if (getenv("serial#") == NULL) {
- setenv ((char *)"serial#", (char *)serial);
- }
-
- if (getenv("ethaddr") == NULL) {
- setenv ((char *)"ethaddr", (char *)ethaddr);
- }
-}
diff --git a/board/tqm8xx/tqm8xx.c b/board/tqm8xx/tqm8xx.c
deleted file mode 100644
index 6b206f8a18..0000000000
--- a/board/tqm8xx/tqm8xx.c
+++ /dev/null
@@ -1,504 +0,0 @@
-/*
- * (C) Copyright 2000-2006
- * 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
- */
-
-#if 0
-#define DEBUG
-#endif
-
-#include <common.h>
-#include <mpc8xx.h>
-#ifdef CONFIG_PS2MULT
-#include <ps2mult.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static long int dram_size (long int, long int *, long int);
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint sdram_table[] =
-{
- /*
- * Single Read. (Offset 0 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEAFBC04, 0x11AF7C04, 0xEFBAFC00,
- 0x1FF5FC47, /* last */
- /*
- * SDRAM Initialization (offset 5 in UPMA RAM)
- *
- * This is no UPM entry point. The following definition uses
- * the remaining space to establish an initialization
- * sequence, which is executed by a RUN command.
- *
- */
- 0x1FF5FC34, 0xEFEABC34, 0x1FB57C35, /* last */
- /*
- * Burst Read. (Offset 8 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEAFBC04, 0x10AF7C04, 0xF0AFFC00,
- 0xF0AFFC00, 0xF1AFFC00, 0xEFBAFC00, 0x1FF5FC47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Single Write. (Offset 18 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEABBC00, 0x01B27C04, 0x1FF5FC47, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Burst Write. (Offset 20 in UPMA RAM)
- */
- 0x1F0DFC04, 0xEEABBC00, 0x10A77C00, 0xF0AFFC00,
- 0xF0AFFC00, 0xE1BAFC04, 0x1FF5FC47, /* last */
- _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Refresh (Offset 30 in UPMA RAM)
- */
- 0x1FFD7C84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, /* last */
- _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- /*
- * Exception. (Offset 3c in UPMA RAM)
- */
- 0x7FFFFC07, /* last */
- _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Test TQ ID string (TQM8xx...)
- * If present, check for "L" type (no second DRAM bank),
- * otherwise "L" type is assumed as default.
- *
- * Set board_type to 'L' for "L" type, 'M' for "M" type, 0 else.
- */
-
-int checkboard (void)
-{
- char *s = getenv ("serial#");
-
- puts ("Board: ");
-
- if (!s || strncmp (s, "TQM8", 4)) {
- puts ("### No HW ID - assuming TQM8xxL\n");
- return (0);
- }
-
- if ((*(s + 6) == 'L')) { /* a TQM8xxL type */
- gd->board_type = 'L';
- }
-
- if ((*(s + 6) == 'M')) { /* a TQM8xxM type */
- gd->board_type = 'M';
- }
-
- if ((*(s + 6) == 'D')) { /* a TQM885D type */
- gd->board_type = 'D';
- }
-
- for (; *s; ++s) {
- if (*s == ' ')
- break;
- putc (*s);
- }
-#ifdef CONFIG_VIRTLAB2
- puts (" (Virtlab2)");
-#endif
- putc ('\n');
-
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- long int size8, size9, size10;
- long int size_b0 = 0;
- long int size_b1 = 0;
-
- upmconfig (UPMA, (uint *) sdram_table,
- sizeof (sdram_table) / sizeof (uint));
-
- /*
- * Preliminary prescaler for refresh (depends on number of
- * banks): This value is selected for four cycles every 62.4 us
- * with two SDRAM banks or four cycles every 31.2 us with one
- * bank. It will be adjusted after memory sizing.
- */
- memctl->memc_mptpr = CFG_MPTPR_2BK_8K;
-
- /*
- * The following value is used as an address (i.e. opcode) for
- * the LOAD MODE REGISTER COMMAND during SDRAM initialisation. If
- * the port size is 32bit the SDRAM does NOT "see" the lower two
- * address lines, i.e. mar=0x00000088 -> opcode=0x00000022 for
- * MICRON SDRAMs:
- * -> 0 00 010 0 010
- * | | | | +- Burst Length = 4
- * | | | +----- Burst Type = Sequential
- * | | +------- CAS Latency = 2
- * | +----------- Operating Mode = Standard
- * +-------------- Write Burst Mode = Programmed Burst Length
- */
- memctl->memc_mar = 0x00000088;
-
- /*
- * Map controller banks 2 and 3 to the SDRAM banks 2 and 3 at
- * preliminary addresses - these have to be modified after the
- * SDRAM size has been determined.
- */
- memctl->memc_or2 = CFG_OR2_PRELIM;
- memctl->memc_br2 = CFG_BR2_PRELIM;
-
-#ifndef CONFIG_CAN_DRIVER
- if ((board_type != 'L') &&
- (board_type != 'M') &&
- (board_type != 'D') ) { /* "L" and "M" type boards have only one bank SDRAM */
- memctl->memc_or3 = CFG_OR3_PRELIM;
- memctl->memc_br3 = CFG_BR3_PRELIM;
- }
-#endif /* CONFIG_CAN_DRIVER */
-
- memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */
-
- udelay (200);
-
- /* perform SDRAM initializsation sequence */
-
- memctl->memc_mcr = 0x80004105; /* SDRAM bank 0 */
- udelay (1);
- memctl->memc_mcr = 0x80004230; /* SDRAM bank 0 - execute twice */
- udelay (1);
-
-#ifndef CONFIG_CAN_DRIVER
- if ((board_type != 'L') &&
- (board_type != 'M') &&
- (board_type != 'D') ) { /* only one SDRAM bank on L, M and D modules */
- memctl->memc_mcr = 0x80006105; /* SDRAM bank 1 */
- udelay (1);
- memctl->memc_mcr = 0x80006230; /* SDRAM bank 1 - execute twice */
- udelay (1);
- }
-#endif /* CONFIG_CAN_DRIVER */
-
- memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
- udelay (1000);
-
- /*
- * Check Bank 0 Memory Size for re-configuration
- *
- * try 8 column mode
- */
- size8 = dram_size (CFG_MAMR_8COL, SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
- debug ("SDRAM Bank 0 in 8 column mode: %ld MB\n", size8 >> 20);
-
- udelay (1000);
-
- /*
- * try 9 column mode
- */
- size9 = dram_size (CFG_MAMR_9COL, SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
- debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size9 >> 20);
-
- udelay(1000);
-
-#if defined(CFG_MAMR_10COL)
- /*
- * try 10 column mode
- */
- size10 = dram_size (CFG_MAMR_10COL, SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE);
- debug ("SDRAM Bank 0 in 10 column mode: %ld MB\n", size10 >> 20);
-#else
- size10 = 0;
-#endif /* CFG_MAMR_10COL */
-
- if ((size8 < size10) && (size9 < size10)) {
- size_b0 = size10;
- } else if ((size8 < size9) && (size10 < size9)) {
- size_b0 = size9;
- memctl->memc_mamr = CFG_MAMR_9COL;
- udelay (500);
- } else {
- size_b0 = size8;
- memctl->memc_mamr = CFG_MAMR_8COL;
- udelay (500);
- }
- debug ("SDRAM Bank 0: %ld MB\n", size_b0 >> 20);
-
-#ifndef CONFIG_CAN_DRIVER
- if ((board_type != 'L') &&
- (board_type != 'M') &&
- (board_type != 'D') ) { /* "L" and "M" type boards have only one bank SDRAM */
- /*
- * Check Bank 1 Memory Size
- * use current column settings
- * [9 column SDRAM may also be used in 8 column mode,
- * but then only half the real size will be used.]
- */
- size_b1 = dram_size (memctl->memc_mamr, (long int *)SDRAM_BASE3_PRELIM,
- SDRAM_MAX_SIZE);
- debug ("SDRAM Bank 1: %ld MB\n", size_b1 >> 20);
- } else {
- size_b1 = 0;
- }
-#endif /* CONFIG_CAN_DRIVER */
-
- udelay (1000);
-
- /*
- * Adjust refresh rate depending on SDRAM type, both banks
- * For types > 128 MBit leave it at the current (fast) rate
- */
- if ((size_b0 < 0x02000000) && (size_b1 < 0x02000000)) {
- /* reduce to 15.6 us (62.4 us / quad) */
- memctl->memc_mptpr = CFG_MPTPR_2BK_4K;
- udelay (1000);
- }
-
- /*
- * Final mapping: map bigger bank first
- */
- if (size_b1 > size_b0) { /* SDRAM Bank 1 is bigger - map first */
-
- memctl->memc_or3 = ((-size_b1) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br3 = (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- if (size_b0 > 0) {
- /*
- * Position Bank 0 immediately above Bank 1
- */
- memctl->memc_or2 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 = ((CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V)
- + size_b1;
- } else {
- unsigned long reg;
-
- /*
- * No bank 0
- *
- * invalidate bank
- */
- memctl->memc_br2 = 0;
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
- }
-
- } else { /* SDRAM Bank 0 is bigger - map first */
-
- memctl->memc_or2 = ((-size_b0) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br2 =
- (CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
- if (size_b1 > 0) {
- /*
- * Position Bank 1 immediately above Bank 0
- */
- memctl->memc_or3 =
- ((-size_b1) & 0xFFFF0000) | CFG_OR_TIMING_SDRAM;
- memctl->memc_br3 =
- ((CFG_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V)
- + size_b0;
- } else {
- unsigned long reg;
-
-#ifndef CONFIG_CAN_DRIVER
- /*
- * No bank 1
- *
- * invalidate bank
- */
- memctl->memc_br3 = 0;
-#endif /* CONFIG_CAN_DRIVER */
-
- /* adjust refresh rate depending on SDRAM type, one bank */
- reg = memctl->memc_mptpr;
- reg >>= 1; /* reduce to CFG_MPTPR_1BK_8K / _4K */
- memctl->memc_mptpr = reg;
- }
- }
-
- udelay (10000);
-
-#ifdef CONFIG_CAN_DRIVER
- /* Initialize OR3 / BR3 */
- memctl->memc_or3 = CFG_OR3_CAN;
- memctl->memc_br3 = CFG_BR3_CAN;
-
- /* Initialize MBMR */
- memctl->memc_mbmr = MBMR_GPL_B4DIS; /* GPL_B4 ouput line Disable */
-
- /* Initialize UPMB for CAN: single read */
- memctl->memc_mdr = 0xFFFFC004;
- memctl->memc_mcr = 0x0100 | UPMB;
-
- memctl->memc_mdr = 0x0FFFD004;
- memctl->memc_mcr = 0x0101 | UPMB;
-
- memctl->memc_mdr = 0x0FFFC000;
- memctl->memc_mcr = 0x0102 | UPMB;
-
- memctl->memc_mdr = 0x3FFFC004;
- memctl->memc_mcr = 0x0103 | UPMB;
-
- memctl->memc_mdr = 0xFFFFDC05;
- memctl->memc_mcr = 0x0104 | UPMB;
-
- /* Initialize UPMB for CAN: single write */
- memctl->memc_mdr = 0xFFFCC004;
- memctl->memc_mcr = 0x0118 | UPMB;
-
- memctl->memc_mdr = 0xCFFCD004;
- memctl->memc_mcr = 0x0119 | UPMB;
-
- memctl->memc_mdr = 0x0FFCC000;
- memctl->memc_mcr = 0x011A | UPMB;
-
- memctl->memc_mdr = 0x7FFCC004;
- memctl->memc_mcr = 0x011B | UPMB;
-
- memctl->memc_mdr = 0xFFFDCC05;
- memctl->memc_mcr = 0x011C | UPMB;
-#endif /* CONFIG_CAN_DRIVER */
-
-#ifdef CONFIG_ISP1362_USB
- /* Initialize OR5 / BR5 */
- memctl->memc_or5 = CFG_OR5_ISP1362;
- memctl->memc_br5 = CFG_BR5_ISP1362;
-#endif /* CONFIG_ISP1362_USB */
-
-
- return (size_b0 + size_b1);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check memory range for valid RAM. A simple memory test determines
- * the actually available RAM size between addresses `base' and
- * `base + maxsize'. Some (not all) hardware errors are detected:
- * - short between address lines
- * - short between data lines
- */
-
-static long int dram_size (long int mamr_value, long int *base, long int maxsize)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- memctl->memc_mamr = mamr_value;
-
- return (get_ram_size(base, maxsize));
-}
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef CONFIG_PS2MULT
-
-#ifdef CONFIG_HMI10
-#define BASE_BAUD ( 1843200 / 16 )
-struct serial_state rs_table[] = {
- { BASE_BAUD, 4, (void*)0xec140000 },
- { BASE_BAUD, 2, (void*)0xec150000 },
- { BASE_BAUD, 6, (void*)0xec160000 },
- { BASE_BAUD, 10, (void*)0xec170000 },
-};
-
-#ifdef CONFIG_BOARD_EARLY_INIT_R
-int board_early_init_r (void)
-{
- ps2mult_early_init();
- return (0);
-}
-#endif
-#endif /* CONFIG_HMI10 */
-
-#endif /* CONFIG_PS2MULT */
-
-/* ---------------------------------------------------------------------------- */
-/* HMI10 specific stuff */
-/* ---------------------------------------------------------------------------- */
-#ifdef CONFIG_HMI10
-
-int misc_init_r (void)
-{
-# ifdef CONFIG_IDE_LED
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
-
- /* Configure PA15 as output port */
- immap->im_ioport.iop_padir |= 0x0001;
- immap->im_ioport.iop_paodr |= 0x0001;
- immap->im_ioport.iop_papar &= ~0x0001;
- immap->im_ioport.iop_padat &= ~0x0001; /* turn it off */
-# endif
- return (0);
-}
-
-# ifdef CONFIG_IDE_LED
-void ide_led (uchar led, uchar status)
-{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
-
- /* We have one led for both pcmcia slots */
- if (status) { /* led on */
- immap->im_ioport.iop_padat |= 0x0001;
- } else {
- immap->im_ioport.iop_padat &= ~0x0001;
- }
-}
-# endif
-#endif /* CONFIG_HMI10 */
-
-/* ---------------------------------------------------------------------------- */
-/* NSCU specific stuff */
-/* ---------------------------------------------------------------------------- */
-#ifdef CONFIG_NSCU
-
-int misc_init_r (void)
-{
- volatile immap_t *immr = (immap_t *) CFG_IMMR;
-
- /* wake up ethernet module */
- immr->im_ioport.iop_pcpar &= ~0x0004; /* GPIO pin */
- immr->im_ioport.iop_pcdir |= 0x0004; /* output */
- immr->im_ioport.iop_pcso &= ~0x0004; /* for clarity */
- immr->im_ioport.iop_pcdat |= 0x0004; /* enable */
-
- return (0);
-}
-#endif /* CONFIG_NSCU */
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/tqm8xx/u-boot.lds b/board/tqm8xx/u-boot.lds
deleted file mode 100644
index d526d1d07d..0000000000
--- a/board/tqm8xx/u-boot.lds
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- cpu/mpc8xx/traps.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/time.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.ppcenv)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/tqm8xx/u-boot.lds.debug b/board/tqm8xx/u-boot.lds.debug
deleted file mode 100644
index ddd4678ee8..0000000000
--- a/board/tqm8xx/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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
- */
-
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/trab/Makefile b/board/trab/Makefile
deleted file mode 100644
index 868ca4281f..0000000000
--- a/board/trab/Makefile
+++ /dev/null
@@ -1,73 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := trab.o flash.o vfd.o cmd_trab.o memory.o tsc2000.o auto_update.o
-SOBJS := lowlevel_init.o
-
-COBJS_FKT := trab_fkt.o rs485.o tsc2000.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) $(COBJS_FKT:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-OBJS_FKT := $(addprefix $(obj),$(COBJS_FKT))
-
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
-LOAD_ADDR = 0xc100000
-
-#########################################################################
-
-all: $(LIB) $(obj)trab_fkt.srec $(obj)trab_fkt.bin
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-$(obj)trab_fkt.srec: $(OBJS_FKT) $(LIB)
- $(LD) -g -Ttext $(LOAD_ADDR) -o $(<:.o=) -e trab_fkt $^ $(LIB) \
- -L$(obj)../../examples -lstubs \
- -L$(obj)../../lib_generic -lgeneric \
- -L$(gcclibdir) -lgcc
- $(OBJCOPY) -O srec $(<:.o=) $@
-
-$(obj)trab_fkt.bin: $(obj)trab_fkt.srec
- $(OBJCOPY) -I srec -O binary $< $@
-
-clean:
- rm -f $(SOBJS) $(OBJS) $(OBJS_FKT)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/trab/Pt1000_temp_data.h b/board/trab/Pt1000_temp_data.h
deleted file mode 100644
index 17e9ed7ae8..0000000000
--- a/board/trab/Pt1000_temp_data.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Data file for tsc2000 driver.
- * Copyright (C) 2002, 2003 DENX Software Engineering, Wolfgang Denk, wd@denx.de
- */
-
-#ifndef _PT1000_TEMP_DATA_H
-#define _PT1000_TEMP_DATA_H
-
-long Pt1000_temp_table[][2] = {
- /* For quick range checking the largest element
- * is placed at index 0.
- * U, nV T, C*100
- */
- { 44000000 , 12165 },
- { -10000000 , -2644 },
- { -9000000 , -2381 },
- { -8000000 , -2118 },
- { -7000000 , -1855 },
- { -6000000 , -1591 },
- { -5000000 , -1327 },
- { -4000000 , -1063 },
- { -3000000 , -798 },
- { -2000000 , -532 },
- { -1000000 , -266 },
- { 0 , 000 },
- { 1000000 , 267 },
- { 2000000 , 534 },
- { 3000000 , 802 },
- { 4000000 , 1070 },
- { 5000000 , 1338 },
- { 6000000 , 1607 },
- { 7000000 , 1876 },
- { 8000000 , 2146 },
- { 9000000 , 2416 },
- { 10000000 , 2687 },
- { 11000000 , 2958 },
- { 12000000 , 3230 },
- { 13000000 , 3502 },
- { 14000000 , 3774 },
- { 15000000 , 4047 },
- { 16000000 , 4321 },
- { 17000000 , 4595 },
- { 18000000 , 4869 },
- { 19000000 , 5144 },
- { 20000000 , 5419 },
- { 21000000 , 5694 },
- { 22000000 , 5971 },
- { 23000000 , 6247 },
- { 24000000 , 6524 },
- { 25000000 , 6802 },
- { 26000000 , 7080 },
- { 27000000 , 7358 },
- { 28000000 , 7637 },
- { 29000000 , 7916 },
- { 30000000 , 8196 },
- { 31000000 , 8476 },
- { 32000000 , 8757 },
- { 33000000 , 9039 },
- { 34000000 , 9320 },
- { 35000000 , 9602 },
- { 36000000 , 9885 },
- { 37000000 , 10168 },
- { 38000000 , 10452 },
- { 39000000 , 10736 },
- { 40000000 , 11021 },
- { 41000000 , 11306 },
- { 42000000 , 11592 },
- { 43000000 , 11879 },
- { 44000000 , 12165 },
-};
-#endif /* _PT1000_TEMP_DATA_H */
diff --git a/board/trab/README.kbd b/board/trab/README.kbd
deleted file mode 100644
index 3db00bccec..0000000000
--- a/board/trab/README.kbd
+++ /dev/null
@@ -1,44 +0,0 @@
-
-The TRAB keyboard implementation is similar to that for LWMON and
-R360MPI boards. The only difference concerns key naming. There are 4
-keys on TRAB: 1, 2, 3, 4.
-
-1) The "kbd" command provides information about the current state of
- the keys. For example,
-
- TRAB # kbd
- Keys: 1 0 1 0
-
- means that keys 1 and 3 are pressed. The keyboard status is also
- stored in the "keybd" environment variable. In this example we get
-
- keybd=1010
-
-2) The "preboot" variable is set according to current environment
- settings and keys pressed. This is an example:
-
- TRAB # setenv magic_keys XY
- TRAB # setenv key_magicX 12
- TRAB # setenv key_cmdX echo ## Keys 1 + 2 pressed ##\;echo
- TRAB # setenv key_magicY 13
- TRAB # setenv key_cmdY echo ## Keys 1 + 3 pressed ##\;echo
-
- Here "magic_keys=XY" means that the "key_magicX" and "key_magicY"
- variables will be checked for a match. Each variable "key_magic*"
- defines a set of keys. In the our example, if keys 1 and 3 are
- pressed during reset, then "key_magicY" matches, so the "preboot"
- variable will be set to the contents of "key_cmdY":
-
- preboot=echo ## Keys 1 + 3 pressed ##;echo
-
-3) The TRAB board has optional modem support. When a certain key
- combination is pressed on the keyboard at power-on, the firmware
- performs the necessary initialization of the modem and allows for
- dial-in. The key combination is specified in the
- "include/configs/trab.h" file. For example:
-
- #define CONFIG_MODEM_KEY_MAGIC "23"
-
- means that modem will be initialized if and only if both keys 2, 3
- are pressed. Note that the format of this string is similar to the
- format of "key_magic*" environment variables described above.
diff --git a/board/trab/auto_update.c b/board/trab/auto_update.c
deleted file mode 100644
index d2c8d44a79..0000000000
--- a/board/trab/auto_update.c
+++ /dev/null
@@ -1,657 +0,0 @@
-/*
- * (C) Copyright 2003
- * Gary Jennejohn, DENX Software Engineering, gj@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 <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <image.h>
-#include <asm/byteorder.h>
-#include <usb.h>
-
-#ifdef CFG_HUSH_PARSER
-#include <hush.h>
-#endif
-
-#ifdef CONFIG_AUTO_UPDATE
-
-#ifndef CONFIG_USB_OHCI
-#error "must define CONFIG_USB_OHCI"
-#endif
-
-#ifndef CONFIG_USB_STORAGE
-#error "must define CONFIG_USB_STORAGE"
-#endif
-
-#ifndef CFG_HUSH_PARSER
-#error "must define CFG_HUSH_PARSER"
-#endif
-
-#if !(CONFIG_COMMANDS & CFG_CMD_FAT)
-#error "must define CFG_CMD_FAT"
-#endif
-
-/*
- * Check whether a USB memory stick is plugged in.
- * If one is found:
- * 1) if prepare.img ist found load it into memory. If it is
- * valid then run it.
- * 2) if preinst.img is found load it into memory. If it is
- * valid then run it. Update the EEPROM.
- * 3) if firmw_01.img is found load it into memory. If it is valid,
- * burn it into FLASH and update the EEPROM.
- * 4) if kernl_01.img is found load it into memory. If it is valid,
- * burn it into FLASH and update the EEPROM.
- * 5) if app.img is found load it into memory. If it is valid,
- * burn it into FLASH and update the EEPROM.
- * 6) if disk.img is found load it into memory. If it is valid,
- * burn it into FLASH and update the EEPROM.
- * 7) if postinst.img is found load it into memory. If it is
- * valid then run it. Update the EEPROM.
- */
-
-#undef AU_DEBUG
-
-#undef debug
-#ifdef AU_DEBUG
-#define debug(fmt,args...) printf (fmt ,##args)
-#else
-#define debug(fmt,args...)
-#endif /* AU_DEBUG */
-
-/* possible names of files on the USB stick. */
-#define AU_PREPARE "prepare.img"
-#define AU_PREINST "preinst.img"
-#define AU_FIRMWARE "firmw_01.img"
-#define AU_KERNEL "kernl_01.img"
-#define AU_APP "app.img"
-#define AU_DISK "disk.img"
-#define AU_POSTINST "postinst.img"
-
-struct flash_layout
-{
- long start;
- long end;
-};
-
-/* layout of the FLASH. ST = start address, ND = end address. */
-#ifndef CONFIG_FLASH_8MB /* 16 MB Flash, 32 MB RAM */
-#define AU_FL_FIRMWARE_ST 0x00000000
-#define AU_FL_FIRMWARE_ND 0x0009FFFF
-#define AU_FL_VFD_ST 0x000A0000
-#define AU_FL_VFD_ND 0x000BFFFF
-#define AU_FL_KERNEL_ST 0x000C0000
-#define AU_FL_KERNEL_ND 0x001BFFFF
-#define AU_FL_APP_ST 0x001C0000
-#define AU_FL_APP_ND 0x005BFFFF
-#define AU_FL_DISK_ST 0x005C0000
-#define AU_FL_DISK_ND 0x00FFFFFF
-#else /* 8 MB Flash, 32 MB RAM */
-#define AU_FL_FIRMWARE_ST 0x00000000
-#define AU_FL_FIRMWARE_ND 0x0005FFFF
-#define AU_FL_KERNEL_ST 0x00060000
-#define AU_FL_KERNEL_ND 0x0013FFFF
-#define AU_FL_APP_ST 0x00140000
-#define AU_FL_APP_ND 0x0067FFFF
-#define AU_FL_DISK_ST 0x00680000
-#define AU_FL_DISK_ND 0x007DFFFF
-#define AU_FL_VFD_ST 0x007E0000
-#define AU_FL_VFD_ND 0x007FFFFF
-#endif /* CONFIG_FLASH_8MB */
-
-/* a structure with the offsets to values in the EEPROM */
-struct eeprom_layout
-{
- int time;
- int size;
- int dcrc;
-};
-
-/* layout of the EEPROM - offset from the start. All entries are 32 bit. */
-#define AU_EEPROM_TIME_PREINST 64
-#define AU_EEPROM_SIZE_PREINST 68
-#define AU_EEPROM_DCRC_PREINST 72
-#define AU_EEPROM_TIME_FIRMWARE 76
-#define AU_EEPROM_SIZE_FIRMWARE 80
-#define AU_EEPROM_DCRC_FIRMWARE 84
-#define AU_EEPROM_TIME_KERNEL 88
-#define AU_EEPROM_SIZE_KERNEL 92
-#define AU_EEPROM_DCRC_KERNEL 96
-#define AU_EEPROM_TIME_APP 100
-#define AU_EEPROM_SIZE_APP 104
-#define AU_EEPROM_DCRC_APP 108
-#define AU_EEPROM_TIME_DISK 112
-#define AU_EEPROM_SIZE_DISK 116
-#define AU_EEPROM_DCRC_DISK 120
-#define AU_EEPROM_TIME_POSTINST 124
-#define AU_EEPROM_SIZE_POSTINST 128
-#define AU_EEPROM_DCRC_POSTINST 132
-
-static int au_usb_stor_curr_dev; /* current device */
-
-/* index of each file in the following arrays */
-#define IDX_PREPARE 0
-#define IDX_PREINST 1
-#define IDX_FIRMWARE 2
-#define IDX_KERNEL 3
-#define IDX_APP 4
-#define IDX_DISK 5
-#define IDX_POSTINST 6
-/* max. number of files which could interest us */
-#define AU_MAXFILES 7
-/* pointers to file names */
-char *aufile[AU_MAXFILES];
-/* sizes of flash areas for each file */
-long ausize[AU_MAXFILES];
-/* offsets into the EEEPROM */
-struct eeprom_layout auee_off[AU_MAXFILES] = { \
- {0}, \
- {AU_EEPROM_TIME_PREINST, AU_EEPROM_SIZE_PREINST, AU_EEPROM_DCRC_PREINST,}, \
- {AU_EEPROM_TIME_FIRMWARE, AU_EEPROM_SIZE_FIRMWARE, AU_EEPROM_DCRC_FIRMWARE,}, \
- {AU_EEPROM_TIME_KERNEL, AU_EEPROM_SIZE_KERNEL, AU_EEPROM_DCRC_KERNEL,}, \
- {AU_EEPROM_TIME_APP, AU_EEPROM_SIZE_APP, AU_EEPROM_DCRC_APP,}, \
- {AU_EEPROM_TIME_DISK, AU_EEPROM_SIZE_DISK, AU_EEPROM_DCRC_DISK,}, \
- {AU_EEPROM_TIME_POSTINST, AU_EEPROM_SIZE_POSTINST, AU_EEPROM_DCRC_POSTINST,} \
- };
-/* array of flash areas start and end addresses */
-struct flash_layout aufl_layout[AU_MAXFILES - 3] = { \
- {AU_FL_FIRMWARE_ST, AU_FL_FIRMWARE_ND,}, \
- {AU_FL_KERNEL_ST, AU_FL_KERNEL_ND,}, \
- {AU_FL_APP_ST, AU_FL_APP_ND,}, \
- {AU_FL_DISK_ST, AU_FL_DISK_ND,}, \
-};
-/* convert the index into aufile[] to an index into aufl_layout[] */
-#define FIDX_TO_LIDX(idx) ((idx) - 2)
-
-/* where to load files into memory */
-#define LOAD_ADDR ((unsigned char *)0x0C100000)
-/* the app is the largest image */
-#define MAX_LOADSZ ausize[IDX_APP]
-
-/* externals */
-extern int fat_register_device(block_dev_desc_t *, int);
-extern int file_fat_detectfs(void);
-extern long file_fat_read(const char *, void *, unsigned long);
-extern int i2c_read (unsigned char, unsigned int, int , unsigned char* , int);
-extern int i2c_write (uchar, uint, int , uchar* , int);
-#ifdef CONFIG_VFD
-extern int trab_vfd (ulong);
-extern int transfer_pic(unsigned char, unsigned char *, int, int);
-#endif
-extern int flash_sect_erase(ulong, ulong);
-extern int flash_sect_protect (int, ulong, ulong);
-extern int flash_write (char *, ulong, ulong);
-/* change char* to void* to shutup the compiler */
-extern int i2c_write_multiple (uchar, uint, int, void *, int);
-extern int i2c_read_multiple (uchar, uint, int, void *, int);
-extern block_dev_desc_t *get_dev (char*, int);
-extern int u_boot_hush_start(void);
-
-int
-au_check_cksum_valid(int idx, long nbytes)
-{
- image_header_t *hdr;
- unsigned long checksum;
-
- hdr = (image_header_t *)LOAD_ADDR;
-
- if (nbytes != (sizeof(*hdr) + ntohl(hdr->ih_size)))
- {
- printf ("Image %s bad total SIZE\n", aufile[idx]);
- return -1;
- }
- /* check the data CRC */
- checksum = ntohl(hdr->ih_dcrc);
-
- if (crc32 (0, (uchar *)(LOAD_ADDR + sizeof(*hdr)), ntohl(hdr->ih_size))
- != checksum)
- {
- printf ("Image %s bad data checksum\n", aufile[idx]);
- return -1;
- }
- return 0;
-}
-
-int
-au_check_header_valid(int idx, long nbytes)
-{
- image_header_t *hdr;
- unsigned long checksum;
- unsigned char buf[4];
-
- hdr = (image_header_t *)LOAD_ADDR;
- /* check the easy ones first */
-#undef CHECK_VALID_DEBUG
-#ifdef CHECK_VALID_DEBUG
- printf("magic %#x %#x ", ntohl(hdr->ih_magic), IH_MAGIC);
- printf("arch %#x %#x ", hdr->ih_arch, IH_CPU_ARM);
- printf("size %#x %#lx ", ntohl(hdr->ih_size), nbytes);
- printf("type %#x %#x ", hdr->ih_type, IH_TYPE_KERNEL);
-#endif
- if (nbytes < sizeof(*hdr))
- {
- printf ("Image %s bad header SIZE\n", aufile[idx]);
- return -1;
- }
- if (ntohl(hdr->ih_magic) != IH_MAGIC || hdr->ih_arch != IH_CPU_ARM)
- {
- printf ("Image %s bad MAGIC or ARCH\n", aufile[idx]);
- return -1;
- }
- /* check the hdr CRC */
- checksum = ntohl(hdr->ih_hcrc);
- hdr->ih_hcrc = 0;
-
- if (crc32 (0, (uchar *)hdr, sizeof(*hdr)) != checksum) {
- printf ("Image %s bad header checksum\n", aufile[idx]);
- return -1;
- }
- hdr->ih_hcrc = htonl(checksum);
- /* check the type - could do this all in one gigantic if() */
- if ((idx == IDX_FIRMWARE) && (hdr->ih_type != IH_TYPE_FIRMWARE)) {
- printf ("Image %s wrong type\n", aufile[idx]);
- return -1;
- }
- if ((idx == IDX_KERNEL) && (hdr->ih_type != IH_TYPE_KERNEL)) {
- printf ("Image %s wrong type\n", aufile[idx]);
- return -1;
- }
- if ((idx == IDX_DISK) && (hdr->ih_type != IH_TYPE_FILESYSTEM)) {
- printf ("Image %s wrong type\n", aufile[idx]);
- return -1;
- }
- if ((idx == IDX_APP) && (hdr->ih_type != IH_TYPE_RAMDISK)
- && (hdr->ih_type != IH_TYPE_FILESYSTEM)) {
- printf ("Image %s wrong type\n", aufile[idx]);
- return -1;
- }
- if ((idx == IDX_PREPARE || idx == IDX_PREINST || idx == IDX_POSTINST)
- && (hdr->ih_type != IH_TYPE_SCRIPT))
- {
- printf ("Image %s wrong type\n", aufile[idx]);
- return -1;
- }
- /* special case for prepare.img */
- if (idx == IDX_PREPARE)
- return 0;
- /* recycle checksum */
- checksum = ntohl(hdr->ih_size);
- /* for kernel and app the image header must also fit into flash */
- if ((idx != IDX_DISK) && (idx != IDX_FIRMWARE))
- checksum += sizeof(*hdr);
- /* check the size does not exceed space in flash. HUSH scripts */
- /* all have ausize[] set to 0 */
- if ((ausize[idx] != 0) && (ausize[idx] < checksum)) {
- printf ("Image %s is bigger than FLASH\n", aufile[idx]);
- return -1;
- }
- /* check the time stamp from the EEPROM */
- /* read it in */
- i2c_read_multiple(0x54, auee_off[idx].time, 1, buf, sizeof(buf));
-#ifdef CHECK_VALID_DEBUG
- printf ("buf[0] %#x buf[1] %#x buf[2] %#x buf[3] %#x "
- "as int %#x time %#x\n",
- buf[0], buf[1], buf[2], buf[3],
- *((unsigned int *)buf), ntohl(hdr->ih_time));
-#endif
- /* check it */
- if (*((unsigned int *)buf) >= ntohl(hdr->ih_time)) {
- printf ("Image %s is too old\n", aufile[idx]);
- return -1;
- }
-
- return 0;
-}
-
-/* power control defines */
-#define CPLD_VFD_BK ((volatile char *)0x04038002)
-#define POWER_OFF (1 << 1)
-
-int
-au_do_update(int idx, long sz)
-{
- image_header_t *hdr;
- char *addr;
- long start, end;
- int off, rc;
- uint nbytes;
-
- hdr = (image_header_t *)LOAD_ADDR;
-
- /* disable the power switch */
- *CPLD_VFD_BK |= POWER_OFF;
-
- /* execute a script */
- if (hdr->ih_type == IH_TYPE_SCRIPT) {
- addr = (char *)((char *)hdr + sizeof(*hdr));
- /* stick a NULL at the end of the script, otherwise */
- /* parse_string_outer() runs off the end. */
- addr[ntohl(hdr->ih_size)] = 0;
- addr += 8;
- parse_string_outer(addr, FLAG_PARSE_SEMICOLON);
- return 0;
- }
-
- start = aufl_layout[FIDX_TO_LIDX(idx)].start;
- end = aufl_layout[FIDX_TO_LIDX(idx)].end;
-
- /* unprotect the address range */
- /* this assumes that ONLY the firmware is protected! */
- if (idx == IDX_FIRMWARE) {
-#undef AU_UPDATE_TEST
-#ifdef AU_UPDATE_TEST
- /* erase it where Linux goes */
- start = aufl_layout[1].start;
- end = aufl_layout[1].end;
-#endif
- flash_sect_protect(0, start, end);
- }
-
- /*
- * erase the address range.
- */
- debug ("flash_sect_erase(%lx, %lx);\n", start, end);
- flash_sect_erase(start, end);
- wait_ms(100);
- /* strip the header - except for the kernel and ramdisk */
- if (hdr->ih_type == IH_TYPE_KERNEL || hdr->ih_type == IH_TYPE_RAMDISK) {
- addr = (char *)hdr;
- off = sizeof(*hdr);
- nbytes = sizeof(*hdr) + ntohl(hdr->ih_size);
- } else {
- addr = (char *)((char *)hdr + sizeof(*hdr));
-#ifdef AU_UPDATE_TEST
- /* copy it to where Linux goes */
- if (idx == IDX_FIRMWARE)
- start = aufl_layout[1].start;
-#endif
- off = 0;
- nbytes = ntohl(hdr->ih_size);
- }
-
- /* copy the data from RAM to FLASH */
- debug ("flash_write(%p, %lx %x)\n", addr, start, nbytes);
- rc = flash_write(addr, start, nbytes);
- if (rc != 0) {
- printf("Flashing failed due to error %d\n", rc);
- return -1;
- }
-
- /* check the dcrc of the copy */
- if (crc32 (0, (uchar *)(start + off), ntohl(hdr->ih_size)) != ntohl(hdr->ih_dcrc)) {
- printf ("Image %s Bad Data Checksum After COPY\n", aufile[idx]);
- return -1;
- }
-
- /* protect the address range */
- /* this assumes that ONLY the firmware is protected! */
- if (idx == IDX_FIRMWARE)
- flash_sect_protect(1, start, end);
- return 0;
-}
-
-int
-au_update_eeprom(int idx)
-{
- image_header_t *hdr;
- int off;
- uint32_t val;
-
- /* special case for prepare.img */
- if (idx == IDX_PREPARE) {
- /* enable the power switch */
- *CPLD_VFD_BK &= ~POWER_OFF;
- return 0;
- }
-
- hdr = (image_header_t *)LOAD_ADDR;
- /* write the time field into EEPROM */
- off = auee_off[idx].time;
- val = ntohl(hdr->ih_time);
- i2c_write_multiple(0x54, off, 1, &val, sizeof(val));
- /* write the size field into EEPROM */
- off = auee_off[idx].size;
- val = ntohl(hdr->ih_size);
- i2c_write_multiple(0x54, off, 1, &val, sizeof(val));
- /* write the dcrc field into EEPROM */
- off = auee_off[idx].dcrc;
- val = ntohl(hdr->ih_dcrc);
- i2c_write_multiple(0x54, off, 1, &val, sizeof(val));
- /* enable the power switch */
- *CPLD_VFD_BK &= ~POWER_OFF;
- return 0;
-}
-
-/*
- * this is called from board_init() after the hardware has been set up
- * and is usable. That seems like a good time to do this.
- * Right now the return value is ignored.
- */
-int
-do_auto_update(void)
-{
- block_dev_desc_t *stor_dev;
- long sz;
- int i, res, bitmap_first, cnt, old_ctrlc, got_ctrlc;
- char *env;
- long start, end;
-
-#undef ERASE_EEPROM
-#ifdef ERASE_EEPROM
- int arr[18];
- memset(arr, 0, sizeof(arr));
- i2c_write_multiple(0x54, 64, 1, arr, sizeof(arr));
-#endif
- au_usb_stor_curr_dev = -1;
- /* start USB */
- if (usb_stop() < 0) {
- debug ("usb_stop failed\n");
- return -1;
- }
- if (usb_init() < 0) {
- debug ("usb_init failed\n");
- return -1;
- }
- /*
- * check whether a storage device is attached (assume that it's
- * a USB memory stick, since nothing else should be attached).
- */
- au_usb_stor_curr_dev = usb_stor_scan(0);
- if (au_usb_stor_curr_dev == -1) {
- debug ("No device found. Not initialized?\n");
- return -1;
- }
- /* check whether it has a partition table */
- stor_dev = get_dev("usb", 0);
- if (stor_dev == NULL) {
- debug ("uknown device type\n");
- return -1;
- }
- if (fat_register_device(stor_dev, 1) != 0) {
- debug ("Unable to use USB %d:%d for fatls\n",
- au_usb_stor_curr_dev, 1);
- return -1;
- }
- if (file_fat_detectfs() != 0) {
- debug ("file_fat_detectfs failed\n");
- }
-
- /* initialize the array of file names */
- memset(aufile, 0, sizeof(aufile));
- aufile[IDX_PREPARE] = AU_PREPARE;
- aufile[IDX_PREINST] = AU_PREINST;
- aufile[IDX_FIRMWARE] = AU_FIRMWARE;
- aufile[IDX_KERNEL] = AU_KERNEL;
- aufile[IDX_APP] = AU_APP;
- aufile[IDX_DISK] = AU_DISK;
- aufile[IDX_POSTINST] = AU_POSTINST;
- /* initialize the array of flash sizes */
- memset(ausize, 0, sizeof(ausize));
- ausize[IDX_FIRMWARE] = (AU_FL_FIRMWARE_ND + 1) - AU_FL_FIRMWARE_ST;
- ausize[IDX_KERNEL] = (AU_FL_KERNEL_ND + 1) - AU_FL_KERNEL_ST;
- ausize[IDX_APP] = (AU_FL_APP_ND + 1) - AU_FL_APP_ST;
- ausize[IDX_DISK] = (AU_FL_DISK_ND + 1) - AU_FL_DISK_ST;
- /*
- * now check whether start and end are defined using environment
- * variables.
- */
- start = -1;
- end = 0;
- env = getenv("firmware_st");
- if (env != NULL)
- start = simple_strtoul(env, NULL, 16);
- env = getenv("firmware_nd");
- if (env != NULL)
- end = simple_strtoul(env, NULL, 16);
- if (start >= 0 && end && end > start) {
- ausize[IDX_FIRMWARE] = (end + 1) - start;
- aufl_layout[0].start = start;
- aufl_layout[0].end = end;
- }
- start = -1;
- end = 0;
- env = getenv("kernel_st");
- if (env != NULL)
- start = simple_strtoul(env, NULL, 16);
- env = getenv("kernel_nd");
- if (env != NULL)
- end = simple_strtoul(env, NULL, 16);
- if (start >= 0 && end && end > start) {
- ausize[IDX_KERNEL] = (end + 1) - start;
- aufl_layout[1].start = start;
- aufl_layout[1].end = end;
- }
- start = -1;
- end = 0;
- env = getenv("app_st");
- if (env != NULL)
- start = simple_strtoul(env, NULL, 16);
- env = getenv("app_nd");
- if (env != NULL)
- end = simple_strtoul(env, NULL, 16);
- if (start >= 0 && end && end > start) {
- ausize[IDX_APP] = (end + 1) - start;
- aufl_layout[2].start = start;
- aufl_layout[2].end = end;
- }
- start = -1;
- end = 0;
- env = getenv("disk_st");
- if (env != NULL)
- start = simple_strtoul(env, NULL, 16);
- env = getenv("disk_nd");
- if (env != NULL)
- end = simple_strtoul(env, NULL, 16);
- if (start >= 0 && end && end > start) {
- ausize[IDX_DISK] = (end + 1) - start;
- aufl_layout[3].start = start;
- aufl_layout[3].end = end;
- }
- /* make certain that HUSH is runnable */
- u_boot_hush_start();
- /* make sure that we see CTRL-C and save the old state */
- old_ctrlc = disable_ctrlc(0);
-
- bitmap_first = 0;
- /* just loop thru all the possible files */
- for (i = 0; i < AU_MAXFILES; i++) {
- /* just read the header */
- sz = file_fat_read(aufile[i], LOAD_ADDR, sizeof(image_header_t));
- debug ("read %s sz %ld hdr %d\n",
- aufile[i], sz, sizeof(image_header_t));
- if (sz <= 0 || sz < sizeof(image_header_t)) {
- debug ("%s not found\n", aufile[i]);
- continue;
- }
- if (au_check_header_valid(i, sz) < 0) {
- debug ("%s header not valid\n", aufile[i]);
- continue;
- }
- sz = file_fat_read(aufile[i], LOAD_ADDR, MAX_LOADSZ);
- debug ("read %s sz %ld hdr %d\n",
- aufile[i], sz, sizeof(image_header_t));
- if (sz <= 0 || sz <= sizeof(image_header_t)) {
- debug ("%s not found\n", aufile[i]);
- continue;
- }
- if (au_check_cksum_valid(i, sz) < 0) {
- debug ("%s checksum not valid\n", aufile[i]);
- continue;
- }
-#ifdef CONFIG_VFD
- /* now that we have a valid file we can display the */
- /* bitmap. */
- if (bitmap_first == 0) {
- env = getenv("bitmap2");
- if (env == NULL) {
- trab_vfd(0);
- } else {
- /* not so simple - bitmap2 is supposed to */
- /* contain the address of the bitmap */
- env = (char *)simple_strtoul(env, NULL, 16);
-/* NOTE: these are taken from vfd_logo.h. If that file changes then */
-/* these defines MUST also be updated! These may be wrong for bitmap2. */
-#define VFD_LOGO_WIDTH 112
-#define VFD_LOGO_HEIGHT 72
- /* must call transfer_pic directly */
- transfer_pic(3, (unsigned char *)env,
- VFD_LOGO_HEIGHT, VFD_LOGO_WIDTH);
- }
- bitmap_first = 1;
- }
-#endif
- /* this is really not a good idea, but it's what the */
- /* customer wants. */
- cnt = 0;
- got_ctrlc = 0;
- do {
- res = au_do_update(i, sz);
- /* let the user break out of the loop */
- if (ctrlc() || had_ctrlc()) {
- clear_ctrlc();
- if (res < 0)
- got_ctrlc = 1;
- break;
- }
- cnt++;
-#ifdef AU_TEST_ONLY
- } while (res < 0 && cnt < 3);
- if (cnt < 3)
-#else
- } while (res < 0);
-#endif
- /*
- * it doesn't make sense to update the EEPROM if the
- * update was interrupted by the user due to errors.
- */
- if (got_ctrlc == 0)
- au_update_eeprom(i);
- else
- /* enable the power switch */
- *CPLD_VFD_BK &= ~POWER_OFF;
- }
- usb_stop();
- /* restore the old state */
- disable_ctrlc(old_ctrlc);
- return 0;
-}
-#endif /* CONFIG_AUTO_UPDATE */
diff --git a/board/trab/cmd_trab.c b/board/trab/cmd_trab.c
deleted file mode 100644
index b82c8edef7..0000000000
--- a/board/trab/cmd_trab.c
+++ /dev/null
@@ -1,896 +0,0 @@
-/*
- * (C) Copyright 2003
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.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
- */
-
-#undef DEBUG
-
-#include <common.h>
-#include <command.h>
-#include <s3c2400.h>
-#include <rtc.h>
-
-/*
- * TRAB board specific commands. Especially commands for burn-in and function
- * test.
- */
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-
-/* limits for valid range of VCC5V in mV */
-#define VCC5V_MIN 4500
-#define VCC5V_MAX 5500
-
-/*
- * Test strings for EEPROM test. Length of string 2 must not exceed length of
- * string 1. Otherwise a buffer overrun could occur!
- */
-#define EEPROM_TEST_STRING_1 "0987654321 :tset a si siht"
-#define EEPROM_TEST_STRING_2 "this is a test: 1234567890"
-
-/*
- * min/max limits for valid contact temperature during burn in test (in
- * degree Centigrade * 100)
- */
-#define MIN_CONTACT_TEMP -1000
-#define MAX_CONTACT_TEMP +9000
-
-/* blinking frequency of status LED */
-#define LED_BLINK_FREQ 5
-
-/* delay time between burn in cycles in seconds */
-#ifndef BURN_IN_CYCLE_DELAY /* if not defined in include/configs/trab.h */
-#define BURN_IN_CYCLE_DELAY 5
-#endif
-
-/* physical SRAM parameters */
-#define SRAM_ADDR 0x02000000 /* GCS1 */
-#define SRAM_SIZE 0x40000 /* 256 kByte */
-
-/* CPLD-Register for controlling TRAB hardware functions */
-#define CPLD_BUTTONS ((volatile unsigned long *)0x04020000)
-#define CPLD_FILL_LEVEL ((volatile unsigned long *)0x04008000)
-#define CPLD_ROTARY_SWITCH ((volatile unsigned long *)0x04018000)
-#define CPLD_RS485_RE ((volatile unsigned long *)0x04028000)
-
-/* I2C EEPROM device address */
-#define I2C_EEPROM_DEV_ADDR 0x54
-
-/* EEPROM address map */
-#define EE_ADDR_TEST 192
-#define EE_ADDR_MAX_CYCLES 256
-#define EE_ADDR_STATUS 258
-#define EE_ADDR_PASS_CYCLES 259
-#define EE_ADDR_FIRST_ERROR_CYCLE 261
-#define EE_ADDR_FIRST_ERROR_NUM 263
-#define EE_ADDR_FIRST_ERROR_NAME 264
-#define EE_ADDR_ACT_CYCLE 280
-
-/* Bit definitions for ADCCON */
-#define ADC_ENABLE_START 0x1
-#define ADC_READ_START 0x2
-#define ADC_STDBM 0x4
-#define ADC_INP_AIN0 (0x0 << 3)
-#define ADC_INP_AIN1 (0x1 << 3)
-#define ADC_INP_AIN2 (0x2 << 3)
-#define ADC_INP_AIN3 (0x3 << 3)
-#define ADC_INP_AIN4 (0x4 << 3)
-#define ADC_INP_AIN5 (0x5 << 3)
-#define ADC_INP_AIN6 (0x6 << 3)
-#define ADC_INP_AIN7 (0x7 << 3)
-#define ADC_PRSCEN 0x4000
-#define ADC_ECFLG 0x800
-
-/* misc */
-
-/* externals */
-extern int memory_post_tests (unsigned long start, unsigned long size);
-extern int i2c_write (uchar, uint, int , uchar* , int);
-extern int i2c_read (uchar, uint, int , uchar* , int);
-extern void tsc2000_reg_init (void);
-extern s32 tsc2000_contact_temp (void);
-extern void spi_init(void);
-
-/* function declarations */
-int do_dip (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-int do_vcc5v (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-int do_burn_in (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-int do_contact_temp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-int do_burn_in_status (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-int i2c_write_multiple (uchar chip, uint addr, int alen,
- uchar *buffer, int len);
-int i2c_read_multiple (uchar chip, uint addr, int alen,
- uchar *buffer, int len);
-int do_temp_log (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
-
-/* helper functions */
-static void adc_init (void);
-static int adc_read (unsigned int channel);
-static int read_dip (void);
-static int read_vcc5v (void);
-static int test_dip (void);
-static int test_vcc5v (void);
-static int test_rotary_switch (void);
-static int test_sram (void);
-static int test_eeprom (void);
-static int test_contact_temp (void);
-static void led_set (unsigned int);
-static void led_blink (void);
-static void led_init (void);
-static void sdelay (unsigned long seconds); /* delay in seconds */
-static int dummy (void);
-static int read_max_cycles(void);
-static void test_function_table_init (void);
-static void global_vars_init (void);
-static int global_vars_write_to_eeprom (void);
-
-/* globals */
-u16 max_cycles;
-u8 status;
-u16 pass_cycles;
-u16 first_error_cycle;
-u8 first_error_num;
-char first_error_name[16];
-u16 act_cycle;
-
-typedef struct test_function_s {
- char *name;
- int (*pf)(void);
-} test_function_t;
-
-/* max number of Burn In Functions */
-#define BIF_MAX 6
-
-/* table with burn in functions */
-test_function_t test_function[BIF_MAX];
-
-
-int do_burn_in (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int i;
- int cycle_status;
-
- if (argc > 1) {
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- led_init ();
- global_vars_init ();
- test_function_table_init ();
- spi_init ();
-
- if (global_vars_write_to_eeprom () != 0) {
- printf ("%s: error writing global_vars to eeprom\n",
- __FUNCTION__);
- return (1);
- }
-
- if (read_max_cycles () != 0) {
- printf ("%s: error reading max_cycles from eeprom\n",
- __FUNCTION__);
- return (1);
- }
-
- if (max_cycles == 0) {
- printf ("%s: error, burn in max_cycles = 0\n", __FUNCTION__);
- return (1);
- }
-
- status = 0;
- for (act_cycle = 1; act_cycle <= max_cycles; act_cycle++) {
-
- cycle_status = 0;
-
- /*
- * avoid timestamp overflow problem after about 68 minutes of
- * udelay() time.
- */
- reset_timer_masked ();
- for (i = 0; i < BIF_MAX; i++) {
-
- /* call test function */
- if ((*test_function[i].pf)() != 0) {
- printf ("error in %s test\n",
- test_function[i].name);
-
- /* is it the first error? */
- if (status == 0) {
- status = 1;
- first_error_cycle = act_cycle;
-
- /* do not use error_num 0 */
- first_error_num = i+1;
- strncpy (first_error_name,
- test_function[i].name,
- sizeof (first_error_name));
- led_set (0);
- }
- cycle_status = 1;
- }
- }
- /* were all tests of actual cycle OK? */
- if (cycle_status == 0)
- pass_cycles++;
-
- /* set status LED if no error is occoured since yet */
- if (status == 0)
- led_set (1);
-
- printf ("%s: cycle %d finished\n", __FUNCTION__, act_cycle);
-
- /* pause between cycles */
- sdelay (BURN_IN_CYCLE_DELAY);
- }
-
- if (global_vars_write_to_eeprom () != 0) {
- led_set (0);
- printf ("%s: error writing global_vars to eeprom\n",
- __FUNCTION__);
- status = 1;
- }
-
- if (status == 0) {
- led_blink (); /* endless loop!! */
- return (0);
- } else {
- led_set (0);
- return (1);
- }
-}
-
-U_BOOT_CMD(
- burn_in, 1, 1, do_burn_in,
- "burn_in - start burn-in test application on TRAB\n",
- "\n"
- " - start burn-in test application\n"
- " The burn-in test could took a while to finish!\n"
- " The content of the onboard EEPROM is modified!\n"
-);
-
-
-int do_dip (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int i, dip;
-
- if (argc > 1) {
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- if ((dip = read_dip ()) == -1) {
- return 1;
- }
-
- for (i = 0; i < 4; i++) {
- if ((dip & (1 << i)) == 0)
- printf("0");
- else
- printf("1");
- }
- printf("\n");
-
- return 0;
-}
-
-U_BOOT_CMD(
- dip, 1, 1, do_dip,
- "dip - read dip switch on TRAB\n",
- "\n"
- " - read state of dip switch (S1) on TRAB board\n"
- " read sequence: 1-2-3-4; ON=1; OFF=0; e.g.: \"0100\"\n"
-);
-
-
-int do_vcc5v (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int vcc5v;
-
- if (argc > 1) {
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- if ((vcc5v = read_vcc5v ()) == -1) {
- return (1);
- }
-
- printf ("%d", (vcc5v / 1000));
- printf (".%d", (vcc5v % 1000) / 100);
- printf ("%d V\n", (vcc5v % 100) / 10) ;
-
- return 0;
-}
-
-U_BOOT_CMD(
- vcc5v, 1, 1, do_vcc5v,
- "vcc5v - read VCC5V on TRAB\n",
- "\n"
- " - read actual value of voltage VCC5V\n"
-);
-
-
-int do_contact_temp (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int contact_temp;
-
- if (argc > 1) {
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- spi_init ();
-
- contact_temp = tsc2000_contact_temp();
- printf ("%d degree C * 100\n", contact_temp) ;
-
- return 0;
-}
-
-U_BOOT_CMD(
- c_temp, 1, 1, do_contact_temp,
- "c_temp - read contact temperature on TRAB\n",
- "\n"
- " - reads the onboard temperature (=contact temperature)\n"
-);
-
-
-int do_burn_in_status (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- if (argc > 1) {
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_STATUS, 1,
- (unsigned char*) &status, 1)) {
- return (1);
- }
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_PASS_CYCLES, 1,
- (unsigned char*) &pass_cycles, 2)) {
- return (1);
- }
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_FIRST_ERROR_CYCLE,
- 1, (unsigned char*) &first_error_cycle, 2)) {
- return (1);
- }
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_FIRST_ERROR_NUM,
- 1, (unsigned char*) &first_error_num, 1)) {
- return (1);
- }
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_FIRST_ERROR_NAME,
- 1, (unsigned char*)first_error_name,
- sizeof (first_error_name))) {
- return (1);
- }
-
- if (read_max_cycles () != 0) {
- return (1);
- }
-
- printf ("max_cycles = %d\n", max_cycles);
- printf ("status = %d\n", status);
- printf ("pass_cycles = %d\n", pass_cycles);
- printf ("first_error_cycle = %d\n", first_error_cycle);
- printf ("first_error_num = %d\n", first_error_num);
- printf ("first_error_name = %.*s\n",(int) sizeof(first_error_name),
- first_error_name);
-
- return 0;
-}
-
-U_BOOT_CMD(
- bis, 1, 1, do_burn_in_status,
- "bis - print burn in status on TRAB\n",
- "\n"
- " - prints the status variables of the last burn in test\n"
- " stored in the onboard EEPROM on TRAB board\n"
-);
-
-static int read_dip (void)
-{
- unsigned int result = 0;
- int adc_val;
- int i;
-
- /***********************************************************
- DIP switch connection (according to wa4-cpu.sp.301.pdf, page 3):
- SW1 - AIN4
- SW2 - AIN5
- SW3 - AIN6
- SW4 - AIN7
-
- "On" DIP switch position short-circuits the voltage from
- the input channel (i.e. '0' conversion result means "on").
- *************************************************************/
-
- for (i = 7; i > 3; i--) {
-
- if ((adc_val = adc_read (i)) == -1) {
- printf ("%s: Channel %d could not be read\n",
- __FUNCTION__, i);
- return (-1);
- }
-
- /*
- * Input voltage (switch open) is 1.8 V.
- * (Vin_High/VRef)*adc_res = (1,8V/2,5V)*1023) = 736
- * Set trigger at halve that value.
- */
- if (adc_val < 368)
- result |= (1 << (i-4));
- }
- return (result);
-}
-
-
-static int read_vcc5v (void)
-{
- s32 result;
-
- /* VCC5V is connected to channel 2 */
-
- if ((result = adc_read (2)) == -1) {
- printf ("%s: VCC5V could not be read\n", __FUNCTION__);
- return (-1);
- }
- /*
- * Calculate voltage value. Split in two parts because there is no
- * floating point support. VCC5V is connected over an resistor divider:
- * VCC5V=ADCval*2,5V/1023*(10K+30K)/10K.
- */
- result = result * 10 * 1000 / 1023; /* result in mV */
-
- return (result);
-}
-
-
-static int test_dip (void)
-{
- static int first_run = 1;
- static int first_dip;
-
- if (first_run) {
- if ((first_dip = read_dip ()) == -1) {
- return (1);
- }
- first_run = 0;
- debug ("%s: first_dip=%d\n", __FUNCTION__, first_dip);
- }
- if (first_dip != read_dip ()) {
- return (1);
- } else {
- return (0);
- }
-}
-
-
-static int test_vcc5v (void)
-{
- int vcc5v;
-
- if ((vcc5v = read_vcc5v ()) == -1) {
- return (1);
- }
-
- if ((vcc5v > VCC5V_MAX) || (vcc5v < VCC5V_MIN)) {
- printf ("%s: vcc5v[V/100]=%d\n", __FUNCTION__, vcc5v);
- return (1);
- } else {
- return (0);
- }
-}
-
-
-static int test_rotary_switch (void)
-{
- static int first_run = 1;
- static int first_rs;
-
- if (first_run) {
- /*
- * clear bits in CPLD, because they have random values after
- * power-up or reset.
- */
- *CPLD_ROTARY_SWITCH |= (1 << 16) | (1 << 17);
-
- first_rs = ((*CPLD_ROTARY_SWITCH >> 16) & 0x7);
- first_run = 0;
- debug ("%s: first_rs=%d\n", __FUNCTION__, first_rs);
- }
-
- if (first_rs != ((*CPLD_ROTARY_SWITCH >> 16) & 0x7)) {
- return (1);
- } else {
- return (0);
- }
-}
-
-
-static int test_sram (void)
-{
- return (memory_post_tests (SRAM_ADDR, SRAM_SIZE));
-}
-
-
-static int test_eeprom (void)
-{
- unsigned char temp[sizeof (EEPROM_TEST_STRING_1)];
- int result = 0;
-
- /* write test string 1, read back and verify */
- if (i2c_write_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_TEST, 1,
- (unsigned char*)EEPROM_TEST_STRING_1,
- sizeof (EEPROM_TEST_STRING_1))) {
- return (1);
- }
-
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_TEST, 1,
- temp, sizeof (EEPROM_TEST_STRING_1))) {
- return (1);
- }
-
- if (strcmp ((char *)temp, EEPROM_TEST_STRING_1) != 0) {
- result = 1;
- printf ("%s: error; read_str = \"%s\"\n", __FUNCTION__, temp);
- }
-
- /* write test string 2, read back and verify */
- if (result == 0) {
- if (i2c_write_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_TEST, 1,
- (unsigned char*)EEPROM_TEST_STRING_2,
- sizeof (EEPROM_TEST_STRING_2))) {
- return (1);
- }
-
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_TEST, 1,
- temp, sizeof (EEPROM_TEST_STRING_2))) {
- return (1);
- }
-
- if (strcmp ((char *)temp, EEPROM_TEST_STRING_2) != 0) {
- result = 1;
- printf ("%s: error; read str = \"%s\"\n",
- __FUNCTION__, temp);
- }
- }
- return (result);
-}
-
-
-static int test_contact_temp (void)
-{
- int contact_temp;
-
- contact_temp = tsc2000_contact_temp ();
-
- if ((contact_temp < MIN_CONTACT_TEMP)
- || (contact_temp > MAX_CONTACT_TEMP))
- return (1);
- else
- return (0);
-}
-
-
-int i2c_write_multiple (uchar chip, uint addr, int alen,
- uchar *buffer, int len)
-{
- int i;
-
- if (alen != 1) {
- printf ("%s: addr len other than 1 not supported\n",
- __FUNCTION__);
- return (1);
- }
-
- for (i = 0; i < len; i++) {
- if (i2c_write (chip, addr+i, alen, buffer+i, 1)) {
- printf ("%s: could not write to i2c device %d"
- ", addr %d\n", __FUNCTION__, chip, addr);
- return (1);
- }
-#if 0
- printf ("chip=%#x, addr+i=%#x+%d=%p, alen=%d, *buffer+i="
- "%#x+%d=%p=\"%.1s\"\n", chip, addr, i, addr+i,
- alen, buffer, i, buffer+i, buffer+i);
-#endif
-
- udelay (30000);
- }
- return (0);
-}
-
-
-int i2c_read_multiple ( uchar chip, uint addr, int alen,
- uchar *buffer, int len)
-{
- int i;
-
- if (alen != 1) {
- printf ("%s: addr len other than 1 not supported\n",
- __FUNCTION__);
- return (1);
- }
-
- for (i = 0; i < len; i++) {
- if (i2c_read (chip, addr+i, alen, buffer+i, 1)) {
- printf ("%s: could not read from i2c device %#x"
- ", addr %d\n", __FUNCTION__, chip, addr);
- return (1);
- }
- }
- return (0);
-}
-
-
-static int adc_read (unsigned int channel)
-{
- int j = 1000; /* timeout value for wait loop in us */
- int result;
- S3C2400_ADC *padc;
-
- padc = S3C2400_GetBase_ADC();
- channel &= 0x7;
-
- adc_init ();
-
- padc->ADCCON &= ~ADC_STDBM; /* select normal mode */
- padc->ADCCON &= ~(0x7 << 3); /* clear the channel bits */
- padc->ADCCON |= ((channel << 3) | ADC_ENABLE_START);
-
- while (j--) {
- if ((padc->ADCCON & ADC_ENABLE_START) == 0)
- break;
- udelay (1);
- }
-
- if (j == 0) {
- printf("%s: ADC timeout\n", __FUNCTION__);
- padc->ADCCON |= ADC_STDBM; /* select standby mode */
- return -1;
- }
-
- result = padc->ADCDAT & 0x3FF;
-
- padc->ADCCON |= ADC_STDBM; /* select standby mode */
-
- debug ("%s: channel %d, result[DIGIT]=%d\n", __FUNCTION__,
- (padc->ADCCON >> 3) & 0x7, result);
-
- /*
- * Wait for ADC to be ready for next conversion. This delay value was
- * estimated, because the datasheet does not specify a value.
- */
- udelay (1000);
-
- return (result);
-}
-
-
-static void adc_init (void)
-{
- S3C2400_ADC *padc;
-
- padc = S3C2400_GetBase_ADC();
-
- padc->ADCCON &= ~(0xff << 6); /* clear prescaler bits */
- padc->ADCCON |= ((65 << 6) | ADC_PRSCEN); /* set prescaler */
-
- /*
- * Wait some time to avoid problem with very first call of
- * adc_read(). Without this delay, sometimes the first read
- * adc value is 0. Perhaps because the adjustment of prescaler
- * takes some clock cycles?
- */
- udelay (1000);
-
- return;
-}
-
-
-static void led_set (unsigned int state)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- led_init ();
-
- switch (state) {
- case 0: /* turn LED off */
- gpio->PADAT |= (1 << 12);
- break;
- case 1: /* turn LED on */
- gpio->PADAT &= ~(1 << 12);
- break;
- default:
- break;
- }
-}
-
-static void led_blink (void)
-{
- led_init ();
-
- /* blink LED. This function does not return! */
- while (1) {
- reset_timer_masked ();
- led_set (1);
- udelay (1000000 / LED_BLINK_FREQ / 2);
- led_set (0);
- udelay (1000000 / LED_BLINK_FREQ / 2);
- }
-}
-
-
-static void led_init (void)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* configure GPA12 as output and set to High -> LED off */
- gpio->PACON &= ~(1 << 12);
- gpio->PADAT |= (1 << 12);
-}
-
-
-static void sdelay (unsigned long seconds)
-{
- unsigned long i;
-
- for (i = 0; i < seconds; i++) {
- udelay (1000000);
- }
-}
-
-
-static int global_vars_write_to_eeprom (void)
-{
- if (i2c_write_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_STATUS, 1,
- (unsigned char*) &status, 1)) {
- return (1);
- }
- if (i2c_write_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_PASS_CYCLES, 1,
- (unsigned char*) &pass_cycles, 2)) {
- return (1);
- }
- if (i2c_write_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_FIRST_ERROR_CYCLE,
- 1, (unsigned char*) &first_error_cycle, 2)) {
- return (1);
- }
- if (i2c_write_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_FIRST_ERROR_NUM,
- 1, (unsigned char*) &first_error_num, 1)) {
- return (1);
- }
- if (i2c_write_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_FIRST_ERROR_NAME,
- 1, (unsigned char*) first_error_name,
- sizeof(first_error_name))) {
- return (1);
- }
- return (0);
-}
-
-static void global_vars_init (void)
-{
- status = 1; /* error */
- pass_cycles = 0;
- first_error_cycle = 0;
- first_error_num = 0;
- first_error_name[0] = '\0';
- act_cycle = 0;
- max_cycles = 0;
-}
-
-
-static void test_function_table_init (void)
-{
- int i;
-
- for (i = 0; i < BIF_MAX; i++)
- test_function[i].pf = dummy;
-
- /*
- * the length of "name" must not exceed 16, including the '\0'
- * termination. See also the EEPROM address map.
- */
- test_function[0].pf = test_dip;
- test_function[0].name = "dip";
-
- test_function[1].pf = test_vcc5v;
- test_function[1].name = "vcc5v";
-
- test_function[2].pf = test_rotary_switch;
- test_function[2].name = "rotary_switch";
-
- test_function[3].pf = test_sram;
- test_function[3].name = "sram";
-
- test_function[4].pf = test_eeprom;
- test_function[4].name = "eeprom";
-
- test_function[5].pf = test_contact_temp;
- test_function[5].name = "contact_temp";
-}
-
-
-static int read_max_cycles (void)
-{
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, EE_ADDR_MAX_CYCLES, 1,
- (unsigned char *) &max_cycles, 2) != 0) {
- return (1);
- }
-
- return (0);
-}
-
-static int dummy(void)
-{
- return (0);
-}
-
-int do_temp_log (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
- int contact_temp;
- int delay = 0;
-#if (CONFIG_COMMANDS & CFG_CMD_DATE)
- struct rtc_time tm;
-#endif
-
- if (argc > 2) {
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- if (argc > 1) {
- delay = simple_strtoul(argv[1], NULL, 10);
- }
-
- spi_init ();
- while (1) {
-
-#if (CONFIG_COMMANDS & CFG_CMD_DATE)
- rtc_get (&tm);
- printf ("%4d-%02d-%02d %2d:%02d:%02d - ",
- tm.tm_year, tm.tm_mon, tm.tm_mday,
- tm.tm_hour, tm.tm_min, tm.tm_sec);
-#endif
-
- contact_temp = tsc2000_contact_temp();
- printf ("%d\n", contact_temp) ;
-
- if (delay != 0)
- /*
- * reset timer to avoid timestamp overflow problem
- * after about 68 minutes of udelay() time.
- */
- reset_timer_masked ();
- sdelay (delay);
- }
-
- return 0;
-}
-
-U_BOOT_CMD(
- tlog, 2, 1, do_temp_log,
- "tlog - log contact temperature [1/100 C] to console (endlessly)\n",
- "delay\n"
- " - contact temperature [1/100 C] is printed endlessly to console\n"
- " <delay> specifies the seconds to wait between two measurements\n"
- " For each measurment a timestamp is printeted\n"
-);
-
-#endif /* CFG_CMD_BSP */
diff --git a/board/trab/config.mk b/board/trab/config.mk
deleted file mode 100644
index 800cc28a11..0000000000
--- a/board/trab/config.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-#
-# TRAB board with S3C2400X (arm920t) cpu
-#
-# see http://www.samsung.com/ for more information on SAMSUNG
-#
-
-#
-# TRAB has 1 bank of 16 MB or 32 MB DRAM
-#
-# 0c00'0000 to 0e00'0000
-#
-# Linux-Kernel is expected to be at 0c00'8000, entry 0c00'8000
-#
-# we load ourself to 0CF0'0000 / 0DF0'0000
-#
-# download areas is 0C80'0000
-#
-
-sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
-
-ifndef TEXT_BASE
-TEXT_BASE = 0x0DF40000
-endif
diff --git a/board/trab/flash.c b/board/trab/flash.c
deleted file mode 100644
index 3e8f105a03..0000000000
--- a/board/trab/flash.c
+++ /dev/null
@@ -1,569 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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
- */
-
-/* #define DEBUG */
-
-#include <common.h>
-#include <environment.h>
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-
-#define CMD_READ_ARRAY 0x00F000F0
-#define CMD_UNLOCK1 0x00AA00AA
-#define CMD_UNLOCK2 0x00550055
-#define CMD_ERASE_SETUP 0x00800080
-#define CMD_ERASE_CONFIRM 0x00300030
-#define CMD_PROGRAM 0x00A000A0
-#define CMD_UNLOCK_BYPASS 0x00200020
-#define CMD_READ_MANF_ID 0x00900090
-#define CMD_UNLOCK_BYPASS_RES1 0x00900090
-#define CMD_UNLOCK_BYPASS_RES2 0x00000000
-
-#define MEM_FLASH_ADDR (*(volatile u32 *)CFG_FLASH_BASE)
-#define MEM_FLASH_ADDR1 (*(volatile u32 *)(CFG_FLASH_BASE + (0x00000555 << 2)))
-#define MEM_FLASH_ADDR2 (*(volatile u32 *)(CFG_FLASH_BASE + (0x000002AA << 2)))
-
-#define BIT_ERASE_DONE 0x00800080
-#define BIT_RDY_MASK 0x00800080
-#define BIT_PROGRAM_ERROR 0x00200020
-#define BIT_TIMEOUT 0x80000000 /* our flag */
-
-#define READY 1
-#define ERR 2
-#define TMO 4
-
-/*-----------------------------------------------------------------------
- */
-
-ulong flash_init (void)
-{
- int i, j;
- ulong size = 0;
-
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- ulong flashbase = 0;
- flash_info_t *info = &flash_info[i];
-
- /* Init: no FLASHes known */
- info->flash_id = FLASH_UNKNOWN;
-
- size += flash_get_size (CFG_FLASH_BASE, info);
-
- if (i == 0)
- flashbase = CFG_FLASH_BASE;
- else
- panic ("configured too many flash banks!\n");
- for (j = 0; j < info->sector_count; j++) {
-
- info->protect[j] = 0;
- info->start[j] = flashbase;
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (FLASH_AM320B & FLASH_TYPEMASK):
- case (FLASH_MXLV320B & FLASH_TYPEMASK):
- /* Boot sector type: 8 x 8 + N x 128 kB */
- flashbase += (j < 8) ? 0x4000 : 0x20000;
- break;
- case (FLASH_AM640U & FLASH_TYPEMASK):
- /* Uniform sector type: 128 kB */
- flashbase += 0x20000;
- break;
- default:
- printf ("## Bad flash chip type 0x%04lX\n",
- info->flash_id & FLASH_TYPEMASK);
- }
- }
- }
-
- /*
- * Protect monitor and environment sectors
- */
- flash_protect ( FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
-#ifdef CFG_ENV_ADDR_REDUND
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR_REDUND,
- CFG_ENV_ADDR_REDUND + CFG_ENV_SIZE_REDUND - 1,
- &flash_info[0]);
-#endif
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (FLASH_MAN_AMD & FLASH_VENDMASK):
- printf ("AMD "); break;
- case (FLASH_MAN_FUJ & FLASH_VENDMASK):
- printf ("FUJITSU "); break;
- case (FLASH_MAN_MX & FLASH_VENDMASK):
- printf ("MACRONIX "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case (FLASH_AM320B & FLASH_TYPEMASK):
- printf ("2x Am29LV320DB (32Mbit)\n");
- break;
- case (FLASH_MXLV320B & FLASH_TYPEMASK):
- printf ("2x MX29LV320DB (32Mbit)\n");
- break;
- case (FLASH_AM640U & FLASH_TYPEMASK):
- printf ("2x Am29LV640D (64Mbit)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- goto Done;
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if ((i % 5) == 0) {
- printf ("\n ");
- }
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-
-Done: ;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- ulong result;
-
-#if 0
- int cflag;
-#endif
- int iflag, prot, sect;
- int rc = ERR_OK;
- int chip1, chip2;
-
- debug ("flash_erase: s_first %d s_last %d\n", s_first, s_last);
-
- /* first look for protection bits */
-
- if (info->flash_id == FLASH_UNKNOWN)
- return ERR_UNKNOWN_FLASH_TYPE;
-
- if ((s_first < 0) || (s_first > s_last)) {
- return ERR_INVAL;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case (FLASH_MAN_AMD & FLASH_VENDMASK): break; /* OK */
- case (FLASH_MAN_FUJ & FLASH_VENDMASK): break; /* OK */
- case (FLASH_MAN_MX & FLASH_VENDMASK): break; /* OK */
- default:
- debug ("## flash_erase: unknown manufacturer\n");
- return (ERR_UNKNOWN_FLASH_VENDOR);
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-#if 0
- cflag = icache_status ();
- icache_disable ();
-#endif
- iflag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
-
- debug ("Erasing sector %2d @ %08lX... ",
- sect, info->start[sect]);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *) (info->start[sect]);
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- *addr = CMD_ERASE_CONFIRM;
-
- /* wait until flash is ready */
- chip1 = chip2 = 0;
-
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
- chip1 = TMO;
- break;
- }
-
- if (!chip1 && (result & 0xFFFF) & BIT_ERASE_DONE)
- chip1 = READY;
-
- if (!chip1 && (result & 0xFFFF) & BIT_PROGRAM_ERROR)
- chip1 = ERR;
-
- if (!chip2 && (result >> 16) & BIT_ERASE_DONE)
- chip2 = READY;
-
- if (!chip2 && (result >> 16) & BIT_PROGRAM_ERROR)
- chip2 = ERR;
-
- } while (!chip1 || !chip2);
-
- MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-
- if (chip1 == ERR || chip2 == ERR) {
- rc = ERR_PROG_ERROR;
- printf ("Flash erase error\n");
- goto outahere;
- }
- if (chip1 == TMO) {
- rc = ERR_TIMOUT;
- printf ("Flash erase timeout error\n");
- goto outahere;
- }
- }
- }
-
-outahere:
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
-
- if (iflag)
- enable_interrupts ();
-
-#if 0
- if (cflag)
- icache_enable ();
-#endif
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash
- */
-
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *) dest;
- ulong result;
- int rc = ERR_OK;
-
-#if 0
- int cflag;
-#endif
- int iflag;
- int chip1, chip2;
-
- /*
- * Check if Flash is (sufficiently) erased
- */
- result = *addr;
- if ((result & data) != data)
- return ERR_NOT_ERASED;
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-#if 0
- cflag = icache_status ();
- icache_disable ();
-#endif
- iflag = disable_interrupts ();
-
- MEM_FLASH_ADDR1 = CMD_UNLOCK1;
- MEM_FLASH_ADDR2 = CMD_UNLOCK2;
- MEM_FLASH_ADDR1 = CMD_PROGRAM;
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait until flash is ready */
- chip1 = chip2 = 0;
- do {
- result = *addr;
-
- /* check timeout */
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- chip1 = ERR | TMO;
- break;
- }
- if (!chip1 && ((result & 0x80) == (data & 0x80)))
- chip1 = READY;
-
- if (!chip1 && ((result & 0xFFFF) & BIT_PROGRAM_ERROR)) {
- result = *addr;
-
- if ((result & 0x80) == (data & 0x80))
- chip1 = READY;
- else
- chip1 = ERR;
- }
-
- if (!chip2 && ((result & (0x80 << 16)) == (data & (0x80 << 16))))
- chip2 = READY;
-
- if (!chip2 && ((result >> 16) & BIT_PROGRAM_ERROR)) {
- result = *addr;
-
- if ((result & (0x80 << 16)) == (data & (0x80 << 16)))
- chip2 = READY;
- else
- chip2 = ERR;
- }
-
- } while (!chip1 || !chip2);
-
- *addr = CMD_READ_ARRAY;
-
- if (chip1 == ERR || chip2 == ERR || *addr != data) {
- rc = ERR_PROG_ERROR;
- printf ("Flash program error\n");
- debug ("chip1: %#x, chip2: %#x, addr: %#lx *addr: %#lx, "
- "data: %#lx\n",
- chip1, chip2, addr, *addr, data);
- }
-
- if (iflag)
- enable_interrupts ();
-
-#if 0
- if (cflag)
- icache_enable ();
-#endif
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash.
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int l;
- int i, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- goto Done;
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- if (((ulong)src) & 0x3) {
- for (i = 0; i < 4; i++) {
- ((char *)&data)[i] = ((vu_char *)src)[i];
- }
- }
- else {
- data = *((vu_long *) src);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- goto Done;
- }
- src += 4;
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- rc = ERR_OK;
- goto Done;
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data >> 8) | (*src++ << 24);
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data >> 8) | (*(uchar *) cp << 24);
- }
-
- rc = write_word (info, wp, data);
-
- Done:
-
- return (rc);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- ulong value;
-
- /* Write auto select command sequence and read Manufacturer ID */
- addr[0x0555] = CMD_UNLOCK1;
- addr[0x02AA] = CMD_UNLOCK2;
- addr[0x0555] = CMD_READ_MANF_ID;
-
- value = addr[0];
-
- debug ("Manuf. ID @ 0x%08lx: 0x%08lx\n", (ulong)addr, value);
-
- switch (value) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case MX_MANUFACT:
- info->flash_id = FLASH_MAN_MX;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = CMD_READ_ARRAY; /* restore read mode */
- debug ("## flash_init: unknown manufacturer\n");
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- debug ("Device ID @ 0x%08lx: 0x%08lx\n", (ulong)(&addr[1]), value);
-
- switch (value) {
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 71;
- info->size = 0x00800000;
-
- addr[0] = CMD_READ_ARRAY; /* restore read mode */
- break; /* => 8 MB */
-
- case AMD_ID_LV640U:
- info->flash_id += FLASH_AM640U;
- info->sector_count = 128;
- info->size = 0x01000000;
-
- addr[0] = CMD_READ_ARRAY; /* restore read mode */
- break; /* => 16 MB */
-
- case MX_ID_LV320B:
- info->flash_id += FLASH_MXLV320B;
- info->sector_count = 71;
- info->size = 0x00800000;
-
- addr[0] = CMD_READ_ARRAY; /* restore read mode */
- break; /* => 8 MB */
-
- default:
- debug ("## flash_init: unknown flash chip\n");
- info->flash_id = FLASH_UNKNOWN;
- addr[0] = CMD_READ_ARRAY; /* restore read mode */
- return (0); /* => no or unknown flash */
-
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- return (info->size);
-}
diff --git a/board/trab/lowlevel_init.S b/board/trab/lowlevel_init.S
deleted file mode 100644
index 128ae7e4aa..0000000000
--- a/board/trab/lowlevel_init.S
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Memory Setup stuff - taken from blob memsetup.S
- *
- * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
- * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
- *
- * Modified for the TRAB board by
- * (C) Copyright 2002-2003
- * Gary Jennejohn, DENX Software Engineering, <gj@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 <config.h>
-#include <version.h>
-
-
-/* some parameters for the board */
-
-/*
- *
- * Copied from linux/arch/arm/boot/compressed/head-s3c2400.S
- *
- * Copyright (C) 2001 Samsung Electronics by chc, 010406
- *
- * TRAB specific tweaks.
- *
- */
-
-/* memory controller */
-#define BWSCON 0x14000000
-
-/* Bank0 */
-#define B0_Tacs 0x1 /* 1 clk */
-#define B0_Tcos 0x1 /* 1 clk */
-#define B0_Tacc 0x5 /* 8 clk */
-#define B0_Tcoh 0x1 /* 1 clk */
-#define B0_Tah 0x1 /* 1 clk */
-#define B0_Tacp 0x0
-#define B0_PMC 0x0 /* normal */
-
-/* Bank1 - SRAM */
-#define B1_Tacs 0x1 /* 1 clk */
-#define B1_Tcos 0x1 /* 1 clk */
-#define B1_Tacc 0x5 /* 8 clk */
-#define B1_Tcoh 0x1 /* 1 clk */
-#define B1_Tah 0x1 /* 1 clk */
-#define B1_Tacp 0x0
-#define B1_PMC 0x0 /* normal */
-
-/* Bank2 - CPLD */
-#define B2_Tacs 0x1 /* 1 clk */
-#define B2_Tcos 0x1 /* 1 clk */
-#define B2_Tacc 0x5 /* 8 clk */
-#define B2_Tcoh 0x1 /* 1 clk */
-#define B2_Tah 0x1 /* 1 clk */
-#define B2_Tacp 0x0
-#define B2_PMC 0x0 /* normal */
-
-/* Bank3 - setup for the cs8900 */
-#define B3_Tacs 0x3 /* 4 clk */
-#define B3_Tcos 0x3 /* 4 clk */
-#define B3_Tacc 0x7 /* 14 clk */
-#define B3_Tcoh 0x1 /* 1 clk */
-#define B3_Tah 0x0 /* 0 clk */
-#define B3_Tacp 0x3 /* 6 clk */
-#define B3_PMC 0x0 /* normal */
-
-/* Bank4 */
-#define B4_Tacs 0x0 /* 0 clk */
-#define B4_Tcos 0x0 /* 0 clk */
-#define B4_Tacc 0x7 /* 14 clk */
-#define B4_Tcoh 0x0 /* 0 clk */
-#define B4_Tah 0x0 /* 0 clk */
-#define B4_Tacp 0x0
-#define B4_PMC 0x0 /* normal */
-
-/* Bank5 */
-#define B5_Tacs 0x0 /* 0 clk */
-#define B5_Tcos 0x0 /* 0 clk */
-#define B5_Tacc 0x7 /* 14 clk */
-#define B5_Tcoh 0x0 /* 0 clk */
-#define B5_Tah 0x0 /* 0 clk */
-#define B5_Tacp 0x0
-#define B5_PMC 0x0 /* normal */
-
-#ifndef CONFIG_RAM_16MB /* 32 MB RAM */
-/* Bank6 */
-#define B6_MT 0x3 /* SDRAM */
-#define B6_Trcd 0x0 /* 2clk */
-#define B6_SCAN 0x1 /* 9 bit */
-
-/* Bank7 */
-#define B7_MT 0x3 /* SDRAM */
-#define B7_Trcd 0x0 /* 2clk */
-#define B7_SCAN 0x1 /* 9 bit */
-#else /* CONFIG_RAM_16MB = 16 MB RAM */
-/* Bank6 */
-#define B6_MT 0x3 /* SDRAM */
-#define B6_Trcd 0x1 /* 2clk */
-#define B6_SCAN 0x0 /* 8 bit */
-
-/* Bank7 */
-#define B7_MT 0x3 /* SDRAM */
-#define B7_Trcd 0x1 /* 2clk */
-#define B7_SCAN 0x0 /* 8 bit */
-#endif /* CONFIG_RAM_16MB */
-
-/* refresh parameter */
-#define REFEN 0x1 /* enable refresh */
-#define TREFMD 0x0 /* CBR(CAS before RAS)/auto refresh */
-#define Trp 0x0 /* 2 clk */
-#define Trc 0x3 /* 7 clk */
-#define Tchr 0x2 /* 3 clk */
-
-#ifdef CONFIG_TRAB_50MHZ
-#define REFCNT 1269 /* period=15.6 us, HCLK=50Mhz, (2048+1-15.6*50) */
-#else
-#define REFCNT 1011 /* period=15.6 us, HCLK=66.5Mhz, (2048+1-15.6*66.5) */
-#endif
-
-
-_TEXT_BASE:
- .word TEXT_BASE
-
-.globl lowlevel_init
-lowlevel_init:
- /* memory control configuration */
- /* make r0 relative the current location so that it */
- /* reads SMRDATA out of FLASH rather than memory ! */
- ldr r0, =SMRDATA
- ldr r1, _TEXT_BASE
- sub r0, r0, r1
- ldr r1, =BWSCON /* Bus Width Status Controller */
- add r2, r0, #52
-0:
- ldr r3, [r0], #4
- str r3, [r1], #4
- cmp r2, r0
- bne 0b
-
- /* everything is fine now */
- mov pc, lr
-
- .ltorg
-/* the literal pools origin */
-
-SMRDATA:
- .word 0x2211d644 /* d->Ethernet, 6->CPLD, 4->SRAM, 4->FLASH */
- .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC)) /* GCS0 */
- .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC)) /* GCS1 */
- .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC)) /* GCS2 */
- .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC)) /* GCS3 */
- .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC)) /* GCS4 */
- .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC)) /* GCS5 */
- .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN)) /* GCS6 */
- .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN)) /* GCS7 */
- .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
-#ifndef CONFIG_RAM_16MB /* 32 MB RAM */
- .word 0x10 /* BUSWIDTH=32, SCLK power saving mode, BANKSIZE 32M/32M */
-#else /* CONFIG_RAM_16MB = 16 MB RAM */
- .word 0x17 /* BUSWIDTH=32, SCLK power saving mode, BANKSIZE 16M/16M */
-#endif /* CONFIG_RAM_16MB */
- .word 0x20 /* MRSR6, CL=2clk */
- .word 0x20 /* MRSR7 */
diff --git a/board/trab/memory.c b/board/trab/memory.c
deleted file mode 100644
index 58bd99500a..0000000000
--- a/board/trab/memory.c
+++ /dev/null
@@ -1,486 +0,0 @@
-/*
- * (C) Copyright 2002-2003
- * 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 <common.h>
-
-/* Memory test
- *
- * General observations:
- * o The recommended test sequence is to test the data lines: if they are
- * broken, nothing else will work properly. Then test the address
- * lines. Finally, test the cells in the memory now that the test
- * program knows that the address and data lines work properly.
- * This sequence also helps isolate and identify what is faulty.
- *
- * o For the address line test, it is a good idea to use the base
- * address of the lowest memory location, which causes a '1' bit to
- * walk through a field of zeros on the address lines and the highest
- * memory location, which causes a '0' bit to walk through a field of
- * '1's on the address line.
- *
- * o Floating buses can fool memory tests if the test routine writes
- * a value and then reads it back immediately. The problem is, the
- * write will charge the residual capacitance on the data bus so the
- * bus retains its state briefely. When the test program reads the
- * value back immediately, the capacitance of the bus can allow it
- * to read back what was written, even though the memory circuitry
- * is broken. To avoid this, the test program should write a test
- * pattern to the target location, write a different pattern elsewhere
- * to charge the residual capacitance in a differnt manner, then read
- * the target location back.
- *
- * o Always read the target location EXACTLY ONCE and save it in a local
- * variable. The problem with reading the target location more than
- * once is that the second and subsequent reads may work properly,
- * resulting in a failed test that tells the poor technician that
- * "Memory error at 00000000, wrote aaaaaaaa, read aaaaaaaa" which
- * doesn't help him one bit and causes puzzled phone calls. Been there,
- * done that.
- *
- * Data line test:
- * ---------------
- * This tests data lines for shorts and opens by forcing adjacent data
- * to opposite states. Because the data lines could be routed in an
- * arbitrary manner the must ensure test patterns ensure that every case
- * is tested. By using the following series of binary patterns every
- * combination of adjacent bits is test regardless of routing.
- *
- * ...101010101010101010101010
- * ...110011001100110011001100
- * ...111100001111000011110000
- * ...111111110000000011111111
- *
- * Carrying this out, gives us six hex patterns as follows:
- *
- * 0xaaaaaaaaaaaaaaaa
- * 0xcccccccccccccccc
- * 0xf0f0f0f0f0f0f0f0
- * 0xff00ff00ff00ff00
- * 0xffff0000ffff0000
- * 0xffffffff00000000
- *
- * To test for short and opens to other signals on our boards, we
- * simply test with the 1's complemnt of the paterns as well, resulting
- * in twelve patterns total.
- *
- * After writing a test pattern. a special pattern 0x0123456789ABCDEF is
- * written to a different address in case the data lines are floating.
- * Thus, if a byte lane fails, you will see part of the special
- * pattern in that byte lane when the test runs. For example, if the
- * xx__xxxxxxxxxxxx byte line fails, you will see aa23aaaaaaaaaaaa
- * (for the 'a' test pattern).
- *
- * Address line test:
- * ------------------
- * This function performs a test to verify that all the address lines
- * hooked up to the RAM work properly. If there is an address line
- * fault, it usually shows up as two different locations in the address
- * map (related by the faulty address line) mapping to one physical
- * memory storage location. The artifact that shows up is writing to
- * the first location "changes" the second location.
- *
- * To test all address lines, we start with the given base address and
- * xor the address with a '1' bit to flip one address line. For each
- * test, we shift the '1' bit left to test the next address line.
- *
- * In the actual code, we start with address sizeof(ulong) since our
- * test pattern we use is a ulong and thus, if we tried to test lower
- * order address bits, it wouldn't work because our pattern would
- * overwrite itself.
- *
- * Example for a 4 bit address space with the base at 0000:
- * 0000 <- base
- * 0001 <- test 1
- * 0010 <- test 2
- * 0100 <- test 3
- * 1000 <- test 4
- * Example for a 4 bit address space with the base at 0010:
- * 0010 <- base
- * 0011 <- test 1
- * 0000 <- (below the base address, skipped)
- * 0110 <- test 2
- * 1010 <- test 3
- *
- * The test locations are successively tested to make sure that they are
- * not "mirrored" onto the base address due to a faulty address line.
- * Note that the base and each test location are related by one address
- * line flipped. Note that the base address need not be all zeros.
- *
- * Memory tests 1-4:
- * -----------------
- * These tests verify RAM using sequential writes and reads
- * to/from RAM. There are several test cases that use different patterns to
- * verify RAM. Each test case fills a region of RAM with one pattern and
- * then reads the region back and compares its contents with the pattern.
- * The following patterns are used:
- *
- * 1a) zero pattern (0x00000000)
- * 1b) negative pattern (0xffffffff)
- * 1c) checkerboard pattern (0x55555555)
- * 1d) checkerboard pattern (0xaaaaaaaa)
- * 2) bit-flip pattern ((1 << (offset % 32))
- * 3) address pattern (offset)
- * 4) address pattern (~offset)
- *
- * Being run in normal mode, the test verifies only small 4Kb
- * regions of RAM around each 1Mb boundary. For example, for 64Mb
- * RAM the following areas are verified: 0x00000000-0x00000800,
- * 0x000ff800-0x00100800, 0x001ff800-0x00200800, ..., 0x03fff800-
- * 0x04000000. If the test is run in slow-test mode, it verifies
- * the whole RAM.
- */
-
-/* #ifdef CONFIG_POST */
-
-#include <post.h>
-#include <watchdog.h>
-
-/* #if CONFIG_POST & CFG_POST_MEMORY */
-
-/*
- * Define INJECT_*_ERRORS for testing error detection in the presence of
- * _good_ hardware.
- */
-#undef INJECT_DATA_ERRORS
-#undef INJECT_ADDRESS_ERRORS
-
-#ifdef INJECT_DATA_ERRORS
-#warning "Injecting data line errors for testing purposes"
-#endif
-
-#ifdef INJECT_ADDRESS_ERRORS
-#warning "Injecting address line errors for testing purposes"
-#endif
-
-
-/*
- * This function performs a double word move from the data at
- * the source pointer to the location at the destination pointer.
- * This is helpful for testing memory on processors which have a 64 bit
- * wide data bus.
- *
- * On those PowerPC with FPU, use assembly and a floating point move:
- * this does a 64 bit move.
- *
- * For other processors, let the compiler generate the best code it can.
- */
-static void move64(unsigned long long *src, unsigned long long *dest)
-{
-#if defined(CONFIG_MPC8260) || defined(CONFIG_MPC824X)
- asm ("lfd 0, 0(3)\n\t" /* fpr0 = *scr */
- "stfd 0, 0(4)" /* *dest = fpr0 */
- : : : "fr0" ); /* Clobbers fr0 */
- return;
-#else
- *dest = *src;
-#endif
-}
-
-/*
- * This is 64 bit wide test patterns. Note that they reside in ROM
- * (which presumably works) and the tests write them to RAM which may
- * not work.
- *
- * The "otherpattern" is written to drive the data bus to values other
- * than the test pattern. This is for detecting floating bus lines.
- *
- */
-const static unsigned long long pattern[] = {
- 0xaaaaaaaaaaaaaaaaULL,
- 0xccccccccccccccccULL,
- 0xf0f0f0f0f0f0f0f0ULL,
- 0xff00ff00ff00ff00ULL,
- 0xffff0000ffff0000ULL,
- 0xffffffff00000000ULL,
- 0x00000000ffffffffULL,
- 0x0000ffff0000ffffULL,
- 0x00ff00ff00ff00ffULL,
- 0x0f0f0f0f0f0f0f0fULL,
- 0x3333333333333333ULL,
- 0x5555555555555555ULL,
-};
-const unsigned long long otherpattern = 0x0123456789abcdefULL;
-
-
-static int memory_post_dataline(unsigned long long * pmem)
-{
- unsigned long long temp64;
- int num_patterns = sizeof(pattern)/ sizeof(pattern[0]);
- int i;
- unsigned int hi, lo, pathi, patlo;
- int ret = 0;
-
- for ( i = 0; i < num_patterns; i++) {
- move64((unsigned long long *)&(pattern[i]), pmem++);
- /*
- * Put a different pattern on the data lines: otherwise they
- * may float long enough to read back what we wrote.
- */
- move64((unsigned long long *)&otherpattern, pmem--);
- move64(pmem, &temp64);
-
-#ifdef INJECT_DATA_ERRORS
- temp64 ^= 0x00008000;
-#endif
-
- if (temp64 != pattern[i]){
- pathi = (pattern[i]>>32) & 0xffffffff;
- patlo = pattern[i] & 0xffffffff;
-
- hi = (temp64>>32) & 0xffffffff;
- lo = temp64 & 0xffffffff;
-
- printf ("Memory (date line) error at %08lx, "
- "wrote %08x%08x, read %08x%08x !\n",
- (ulong)pmem, pathi, patlo, hi, lo);
- ret = -1;
- }
- }
- return ret;
-}
-
-static int memory_post_addrline(ulong *testaddr, ulong *base, ulong size)
-{
- ulong *target;
- ulong *end;
- ulong readback;
- ulong xor;
- int ret = 0;
-
- end = (ulong *)((ulong)base + size); /* pointer arith! */
- xor = 0;
- for(xor = sizeof(ulong); xor > 0; xor <<= 1) {
- target = (ulong *)((ulong)testaddr ^ xor);
- if((target >= base) && (target < end)) {
- *testaddr = ~*target;
- readback = *target;
-
-#ifdef INJECT_ADDRESS_ERRORS
- if(xor == 0x00008000) {
- readback = *testaddr;
- }
-#endif
- if(readback == *testaddr) {
- printf ("Memory (address line) error at %08lx<->%08lx, "
- "XOR value %08lx !\n",
- (ulong)testaddr, (ulong)target,
- xor);
- ret = -1;
- }
- }
- }
- return ret;
-}
-
-static int memory_post_test1 (unsigned long start,
- unsigned long size,
- unsigned long val)
-{
- unsigned long i;
- ulong *mem = (ulong *) start;
- ulong readback;
- int ret = 0;
-
- for (i = 0; i < size / sizeof (ulong); i++) {
- mem[i] = val;
- if (i % 1024 == 0)
- WATCHDOG_RESET ();
- }
-
- for (i = 0; i < size / sizeof (ulong) && ret == 0; i++) {
- readback = mem[i];
- if (readback != val) {
- printf ("Memory error at %08lx, "
- "wrote %08lx, read %08lx !\n",
- (ulong)(mem + i), val, readback);
-
- ret = -1;
- break;
- }
- if (i % 1024 == 0)
- WATCHDOG_RESET ();
- }
-
- return ret;
-}
-
-static int memory_post_test2 (unsigned long start, unsigned long size)
-{
- unsigned long i;
- ulong *mem = (ulong *) start;
- ulong readback;
- int ret = 0;
-
- for (i = 0; i < size / sizeof (ulong); i++) {
- mem[i] = 1 << (i % 32);
- if (i % 1024 == 0)
- WATCHDOG_RESET ();
- }
-
- for (i = 0; i < size / sizeof (ulong) && ret == 0; i++) {
- readback = mem[i];
- if (readback != (1 << (i % 32))) {
- printf ("Memory error at %08lx, "
- "wrote %08x, read %08lx !\n",
- (ulong)(mem + i), 1 << (i % 32), readback);
-
- ret = -1;
- break;
- }
- if (i % 1024 == 0)
- WATCHDOG_RESET ();
- }
-
- return ret;
-}
-
-static int memory_post_test3 (unsigned long start, unsigned long size)
-{
- unsigned long i;
- ulong *mem = (ulong *) start;
- ulong readback;
- int ret = 0;
-
- for (i = 0; i < size / sizeof (ulong); i++) {
- mem[i] = i;
- if (i % 1024 == 0)
- WATCHDOG_RESET ();
- }
-
- for (i = 0; i < size / sizeof (ulong) && ret == 0; i++) {
- readback = mem[i];
- if (readback != i) {
- printf ("Memory error at %08lx, "
- "wrote %08lx, read %08lx !\n",
- (ulong)(mem + i), i, readback);
-
- ret = -1;
- break;
- }
- if (i % 1024 == 0)
- WATCHDOG_RESET ();
- }
-
- return ret;
-}
-
-static int memory_post_test4 (unsigned long start, unsigned long size)
-{
- unsigned long i;
- ulong *mem = (ulong *) start;
- ulong readback;
- int ret = 0;
-
- for (i = 0; i < size / sizeof (ulong); i++) {
- mem[i] = ~i;
- if (i % 1024 == 0)
- WATCHDOG_RESET ();
- }
-
- for (i = 0; i < size / sizeof (ulong) && ret == 0; i++) {
- readback = mem[i];
- if (readback != ~i) {
- printf ("Memory error at %08lx, "
- "wrote %08lx, read %08lx !\n",
- (ulong)(mem + i), ~i, readback);
-
- ret = -1;
- break;
- }
- if (i % 1024 == 0)
- WATCHDOG_RESET ();
- }
-
- return ret;
-}
-
-int memory_post_tests (unsigned long start, unsigned long size)
-{
- int ret = 0;
-
- if (ret == 0)
- ret = memory_post_dataline ((unsigned long long *)start);
- WATCHDOG_RESET ();
- if (ret == 0)
- ret = memory_post_addrline ((ulong *)start, (ulong *)start, size);
- WATCHDOG_RESET ();
- if (ret == 0)
- ret = memory_post_addrline ((ulong *)(start + size - 8),
- (ulong *)start, size);
- WATCHDOG_RESET ();
- if (ret == 0)
- ret = memory_post_test1 (start, size, 0x00000000);
- WATCHDOG_RESET ();
- if (ret == 0)
- ret = memory_post_test1 (start, size, 0xffffffff);
- WATCHDOG_RESET ();
- if (ret == 0)
- ret = memory_post_test1 (start, size, 0x55555555);
- WATCHDOG_RESET ();
- if (ret == 0)
- ret = memory_post_test1 (start, size, 0xaaaaaaaa);
- WATCHDOG_RESET ();
- if (ret == 0)
- ret = memory_post_test2 (start, size);
- WATCHDOG_RESET ();
- if (ret == 0)
- ret = memory_post_test3 (start, size);
- WATCHDOG_RESET ();
- if (ret == 0)
- ret = memory_post_test4 (start, size);
- WATCHDOG_RESET ();
-
- return ret;
-}
-
-#if 0
-DECLARE_GLOBAL_DATA_PTR;
-
-int memory_post_test (int flags)
-{
- int ret = 0;
- bd_t *bd = gd->bd;
- unsigned long memsize = (bd->bi_memsize >= 256 << 20 ?
- 256 << 20 : bd->bi_memsize) - (1 << 20);
-
-
- if (flags & POST_SLOWTEST) {
- ret = memory_post_tests (CFG_SDRAM_BASE, memsize);
- } else { /* POST_NORMAL */
-
- unsigned long i;
-
- for (i = 0; i < (memsize >> 20) && ret == 0; i++) {
- if (ret == 0)
- ret = memory_post_tests (i << 20, 0x800);
- if (ret == 0)
- ret = memory_post_tests ((i << 20) + 0xff800, 0x800);
- }
- }
-
- return ret;
-}
-#endif /* 0 */
-
-/* #endif */ /* CONFIG_POST & CFG_POST_MEMORY */
-/* #endif */ /* CONFIG_POST */
diff --git a/board/trab/rs485.c b/board/trab/rs485.c
deleted file mode 100644
index 2aedd2dc53..0000000000
--- a/board/trab/rs485.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * (C) Copyright 2003
- * Martin Krause, TQ-Systems GmbH, <martin.krause@tqs.de>
- *
- * Based on cpu/arm920t/serial.c, by Gary Jennejohn
- * (C) Copyright 2002 Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
- *
- * 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 <common.h>
-#include <s3c2400.h>
-#include "rs485.h"
-
-static void rs485_setbrg (void);
-static void rs485_cfgio (void);
-static void set_rs485re(unsigned char rs485re_state);
-static void set_rs485de(unsigned char rs485de_state);
-static void rs485_setbrg (void);
-#ifdef NOT_USED
-static void trab_rs485_disable_tx(void);
-static void trab_rs485_disable_rx(void);
-#endif
-
-#define UART_NR S3C24X0_UART1
-
-/* CPLD-Register for controlling TRAB hardware functions */
-#define CPLD_RS485_RE ((volatile unsigned long *)0x04028000)
-
-static void rs485_setbrg (void)
-{
- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
- int i;
- unsigned int reg = 0;
-
- /* value is calculated so : (int)(PCLK/16./baudrate) -1 */
- /* reg = (33000000 / (16 * gd->baudrate)) - 1; */
- reg = (33000000 / (16 * 38400)) - 1;
-
- /* FIFO enable, Tx/Rx FIFO clear */
- uart->UFCON = 0x07;
- uart->UMCON = 0x0;
- /* Normal,No parity,1 stop,8 bit */
- uart->ULCON = 0x3;
- /*
- * tx=level,rx=edge,disable timeout int.,enable rx error int.,
- * normal,interrupt or polling
- */
- uart->UCON = 0x245;
- uart->UBRDIV = reg;
-
- for (i = 0; i < 100; i++);
-}
-
-static void rs485_cfgio (void)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- gpio->PFCON &= ~(0x3 << 2);
- gpio->PFCON |= (0x2 << 2); /* configure GPF1 as RXD1 */
-
- gpio->PFCON &= ~(0x3 << 6);
- gpio->PFCON |= (0x2 << 6); /* configure GPF3 as TXD1 */
-
- gpio->PFUP |= (1 << 1); /* disable pullup on GPF1 */
- gpio->PFUP |= (1 << 3); /* disable pullup on GPF3 */
-
- gpio->PACON &= ~(1 << 11); /* set GPA11 (RS485_DE) to output */
-}
-
-/*
- * Initialise the rs485 port with the given baudrate. The settings
- * are always 8 data bits, no parity, 1 stop bit, no start bits.
- *
- */
-int rs485_init (void)
-{
- rs485_cfgio ();
- rs485_setbrg ();
-
- return (0);
-}
-
-/*
- * Read a single byte from the rs485 port. Returns 1 on success, 0
- * otherwise. When the function is succesfull, the character read is
- * written into its argument c.
- */
-int rs485_getc (void)
-{
- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
-
- /* wait for character to arrive */
- while (!(uart->UTRSTAT & 0x1));
-
- return uart->URXH & 0xff;
-}
-
-/*
- * Output a single byte to the rs485 port.
- */
-void rs485_putc (const char c)
-{
- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
-
- /* wait for room in the tx FIFO */
- while (!(uart->UTRSTAT & 0x2));
-
- uart->UTXH = c;
-
- /* If \n, also do \r */
- if (c == '\n')
- rs485_putc ('\r');
-}
-
-/*
- * Test whether a character is in the RX buffer
- */
-int rs485_tstc (void)
-{
- S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);
-
- return uart->UTRSTAT & 0x1;
-}
-
-void rs485_puts (const char *s)
-{
- while (*s) {
- rs485_putc (*s++);
- }
-}
-
-
-/*
- * State table:
- * RE DE Result
- * 1 1 XMIT
- * 0 0 RCV
- * 1 0 Shutdown
- */
-
-/* function that controls the receiver enable for the rs485 */
-/* rs485re_state reflects the level (0/1) of the RE pin */
-
-static void set_rs485re(unsigned char rs485re_state)
-{
- if(rs485re_state)
- *CPLD_RS485_RE = 0x010000;
- else
- *CPLD_RS485_RE = 0x0;
-}
-
-/* function that controls the sender enable for the rs485 */
-/* rs485de_state reflects the level (0/1) of the DE pin */
-
-static void set_rs485de(unsigned char rs485de_state)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* This is on PORT A bit 11 */
- if(rs485de_state)
- gpio->PADAT |= (1 << 11);
- else
- gpio->PADAT &= ~(1 << 11);
-}
-
-
-void trab_rs485_enable_tx(void)
-{
- set_rs485de(1);
- set_rs485re(1);
-}
-
-void trab_rs485_enable_rx(void)
-{
- set_rs485re(0);
- set_rs485de(0);
-}
-
-#ifdef NOT_USED
-static void trab_rs485_disable_tx(void)
-{
- set_rs485de(0);
-}
-
-static void trab_rs485_disable_rx(void)
-{
- set_rs485re(1);
-}
-#endif
diff --git a/board/trab/rs485.h b/board/trab/rs485.h
deleted file mode 100644
index d4a008a323..0000000000
--- a/board/trab/rs485.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * (C) Copyright 2003
- * Martin Krause, TQ-Systems GmbH, <martin.krause@tqs.de>
- *
- * Based on cpu/arm920t/serial.c, by Gary Jennejohn
- * (C) Copyright 2002 Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
- *
- * 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 _RS485_H_
-#define _RS485_H_
-
-#include <s3c2400.h>
-
-int rs485_init (void);
-int rs485_getc (void);
-void rs485_putc (const char c);
-int rs485_tstc (void);
-void rs485_puts (const char *s);
-void trab_rs485_enable_tx(void);
-void trab_rs485_enable_rx(void);
-
-#endif /* _RS485_H_ */
diff --git a/board/trab/trab.c b/board/trab/trab.c
deleted file mode 100644
index d8a726b226..0000000000
--- a/board/trab/trab.c
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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
- */
-
-/* #define DEBUG */
-
-#include <common.h>
-#include <malloc.h>
-#include <s3c2400.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CFG_BRIGHTNESS
-static void spi_init(void);
-static void wait_transmit_done(void);
-static void tsc2000_write(unsigned int page, unsigned int reg,
- unsigned int data);
-static void tsc2000_set_brightness(void);
-#endif
-#ifdef CONFIG_MODEM_SUPPORT
-static int key_pressed(void);
-extern void disable_putc(void);
-extern int do_mdm_init; /* defined in common/main.c */
-
-/*
- * We need a delay of at least 500 us after turning on the VFD clock
- * before we can read any useful information for the CPLD controlling
- * the keyboard switches. Let's play safe and wait 5 ms. The problem
- * is that timers are not available yet, so we use a manually timed
- * loop.
- */
-#define KBD_MDELAY 5000
-static void udelay_no_timer (int usec)
-{
- int i;
- int delay = usec * 3;
-
- for (i = 0; i < delay; i ++) gd->bd->bi_arch_number = MACH_TYPE_TRAB;
-}
-#endif /* CONFIG_MODEM_SUPPORT */
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init ()
-{
-#if defined(CONFIG_VFD)
- extern int vfd_init_clocks(void);
-#endif
- S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* memory and cpu-speed are setup before relocation */
-#ifdef CONFIG_TRAB_50MHZ
- /* change the clock to be 50 MHz 1:1:1 */
- /* MDIV:0x5c PDIV:4 SDIV:2 */
- clk_power->MPLLCON = 0x5c042;
- clk_power->CLKDIVN = 0;
-#else
- /* change the clock to be 133 MHz 1:2:4 */
- /* MDIV:0x7d PDIV:4 SDIV:1 */
- clk_power->MPLLCON = 0x7d041;
- clk_power->CLKDIVN = 3;
-#endif
-
- /* set up the I/O ports */
- gpio->PACON = 0x3ffff;
- gpio->PBCON = 0xaaaaaaaa;
- gpio->PBUP = 0xffff;
- /* INPUT nCTS0 nRTS0 TXD[1] TXD[0] RXD[1] RXD[0] */
- /* 00, 10, 10, 10, 10, 10, 10 */
- gpio->PFCON = (2<<0) | (2<<2) | (2<<4) | (2<<6) | (2<<8) | (2<<10);
-#ifdef CONFIG_HWFLOW
- /* do not pull up RXD0, RXD1, TXD0, TXD1, CTS0, RTS0 */
- gpio->PFUP = (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5);
-#else
- /* do not pull up RXD0, RXD1, TXD0, TXD1 */
- gpio->PFUP = (1<<0) | (1<<1) | (1<<2) | (1<<3);
-#endif
- gpio->PGCON = 0x0;
- gpio->PGUP = 0x0;
- gpio->OPENCR= 0x0;
-
- /* suppress flicker of the VFDs */
- gpio->MISCCR = 0x40;
- gpio->PFCON |= (2<<12);
-
- gd->bd->bi_arch_number = MACH_TYPE_TRAB;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x0c000100;
-
- /* Make sure both buzzers are turned off */
- gpio->PDCON |= 0x5400;
- gpio->PDDAT &= ~0xE0;
-
-#ifdef CONFIG_VFD
- vfd_init_clocks();
-#endif /* CONFIG_VFD */
-
-#ifdef CONFIG_MODEM_SUPPORT
- udelay_no_timer (KBD_MDELAY);
-
- if (key_pressed()) {
- disable_putc(); /* modem doesn't understand banner etc */
- do_mdm_init = 1;
- }
-#endif /* CONFIG_MODEM_SUPPORT */
-
-#ifdef CONFIG_DRIVER_S3C24X0_I2C
- /* Configure I/O ports PG5 und PG6 for I2C */
- gpio->PGCON = (gpio->PGCON & 0x003c00) | 0x003c00;
-#endif /* CONFIG_DRIVER_S3C24X0_I2C */
-
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Keyboard Controller
- */
-
-/* Maximum key number */
-#define KEYBD_KEY_NUM 4
-
-#define KBD_DATA (((*(volatile ulong *)0x04020000) >> 16) & 0xF)
-
-static char *key_match (ulong);
-
-int misc_init_r (void)
-{
- ulong kbd_data = KBD_DATA;
- char *str;
- char keybd_env[KEYBD_KEY_NUM + 1];
- int i;
-
-#ifdef CONFIG_VERSION_VARIABLE
- {
- /* Set version variable. Please note, that this variable is
- * also set in main_loop() later in the boot process. The
- * version variable has to be set this early, because so it
- * could be used in script files on an usb stick, which
- * might be called during do_auto_update() */
- extern char version_string[];
-
- setenv ("ver", version_string);
- }
-#endif /* CONFIG_VERSION_VARIABLE */
-
-#ifdef CONFIG_AUTO_UPDATE
- {
- extern int do_auto_update(void);
- /* this has priority over all else */
- do_auto_update();
- }
-#endif
-
- for (i = 0; i < KEYBD_KEY_NUM; ++i) {
- keybd_env[i] = '0' + ((kbd_data >> i) & 1);
- }
- keybd_env[i] = '\0';
- debug ("** Setting keybd=\"%s\"\n", keybd_env);
- setenv ("keybd", keybd_env);
-
- str = strdup (key_match (kbd_data)); /* decode keys */
-
-#ifdef CONFIG_PREBOOT /* automatically configure "preboot" command on key match */
- debug ("** Setting preboot=\"%s\"\n", str);
- setenv ("preboot", str); /* set or delete definition */
-#endif /* CONFIG_PREBOOT */
- if (str != NULL) {
- free (str);
- }
-
-#ifdef CFG_BRIGHTNESS
- tsc2000_set_brightness();
-#endif
- return (0);
-}
-
-#ifdef CONFIG_PREBOOT
-
-static uchar kbd_magic_prefix[] = "key_magic";
-static uchar kbd_command_prefix[] = "key_cmd";
-
-static int compare_magic (ulong kbd_data, char *str)
-{
- uchar key_mask;
-
- debug ("compare_magic: kbd: %04lx str: \"%s\"\n",kbd_data,str);
- for (; *str; str++)
- {
- uchar c = *str - '1';
-
- if (c >= KEYBD_KEY_NUM) /* bad key number */
- return -1;
-
- key_mask = 1 << c;
-
- if (!(kbd_data & key_mask)) { /* key not pressed */
- debug ( "compare_magic: "
- "kbd: %04lx mask: %04lx - key not pressed\n",
- kbd_data, key_mask );
- return -1;
- }
-
- kbd_data &= ~key_mask;
- }
-
- if (kbd_data) { /* key(s) not released */
- debug ( "compare_magic: "
- "kbd: %04lx - key(s) not released\n", kbd_data);
- return -1;
- }
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Check if pressed key(s) match magic sequence,
- * and return the command string associated with that key(s).
- *
- * If no key press was decoded, NULL is returned.
- *
- * Note: the first character of the argument will be overwritten with
- * the "magic charcter code" of the decoded key(s), or '\0'.
- *
- *
- * Note: the string points to static environment data and must be
- * saved before you call any function that modifies the environment.
- */
-static char *key_match (ulong kbd_data)
-{
- char magic[sizeof (kbd_magic_prefix) + 1];
- char cmd_name[sizeof (kbd_command_prefix) + 1];
- char *suffix;
- char *kbd_magic_keys;
-
- /*
- * The following string defines the characters that can pe appended
- * to "key_magic" to form the names of environment variables that
- * hold "magic" key codes, i. e. such key codes that can cause
- * pre-boot actions. If the string is empty (""), then only
- * "key_magic" is checked (old behaviour); the string "125" causes
- * checks for "key_magic1", "key_magic2" and "key_magic5", etc.
- */
- if ((kbd_magic_keys = getenv ("magic_keys")) == NULL)
- kbd_magic_keys = "";
-
- debug ("key_match: magic_keys=\"%s\"\n", kbd_magic_keys);
-
- /* loop over all magic keys;
- * use '\0' suffix in case of empty string
- */
- for (suffix=kbd_magic_keys; *suffix || suffix==kbd_magic_keys; ++suffix)
- {
- sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);
-
- debug ("key_match: magic=\"%s\"\n",
- getenv(magic) ? getenv(magic) : "<UNDEFINED>");
-
- if (compare_magic(kbd_data, getenv(magic)) == 0)
- {
- sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix);
- debug ("key_match: cmdname %s=\"%s\"\n",
- cmd_name,
- getenv (cmd_name) ?
- getenv (cmd_name) :
- "<UNDEFINED>");
- return (getenv (cmd_name));
- }
- }
- debug ("key_match: no match\n");
- return (NULL);
-}
-#endif /* CONFIG_PREBOOT */
-
-/* Read Keyboard status */
-int do_kbd (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- ulong kbd_data = KBD_DATA;
- char keybd_env[KEYBD_KEY_NUM + 1];
- int i;
-
- puts ("Keys:");
- for (i = 0; i < KEYBD_KEY_NUM; ++i) {
- keybd_env[i] = '0' + ((kbd_data >> i) & 1);
- printf (" %c", keybd_env[i]);
- }
- keybd_env[i] = '\0';
- putc ('\n');
- setenv ("keybd", keybd_env);
- return 0;
-}
-
-U_BOOT_CMD(
- kbd, 1, 1, do_kbd,
- "kbd - read keyboard status\n",
- NULL
-);
-
-#ifdef CONFIG_MODEM_SUPPORT
-static int key_pressed(void)
-{
- return (compare_magic(KBD_DATA, CONFIG_MODEM_KEY_MAGIC) == 0);
-}
-#endif /* CONFIG_MODEM_SUPPORT */
-
-#ifdef CFG_BRIGHTNESS
-
-static inline void SET_CS_TOUCH(void)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- gpio->PDDAT &= 0x5FF;
-}
-
-static inline void CLR_CS_TOUCH(void)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- gpio->PDDAT |= 0x200;
-}
-
-static void spi_init(void)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
- S3C24X0_SPI * const spi = S3C24X0_GetBase_SPI();
- int i;
-
- /* Configure I/O ports. */
- gpio->PDCON = (gpio->PDCON & 0xF3FFFF) | 0x040000;
- gpio->PGCON = (gpio->PGCON & 0x0F3FFF) | 0x008000;
- gpio->PGCON = (gpio->PGCON & 0x0CFFFF) | 0x020000;
- gpio->PGCON = (gpio->PGCON & 0x03FFFF) | 0x080000;
-
- CLR_CS_TOUCH();
-
- spi->ch[0].SPPRE = 0x1F; /* Baudrate ca. 514kHz */
- spi->ch[0].SPPIN = 0x01; /* SPI-MOSI holds Level after last bit */
- spi->ch[0].SPCON = 0x1A; /* Polling, Prescaler, Master, CPOL=0, CPHA=1 */
-
- /* Dummy byte ensures clock to be low. */
- for (i = 0; i < 10; i++) {
- spi->ch[0].SPTDAT = 0xFF;
- }
- wait_transmit_done();
-}
-
-static void wait_transmit_done(void)
-{
- S3C24X0_SPI * const spi = S3C24X0_GetBase_SPI();
-
- while (!(spi->ch[0].SPSTA & 0x01)); /* wait until transfer is done */
-}
-
-static void tsc2000_write(unsigned int page, unsigned int reg,
- unsigned int data)
-{
- S3C24X0_SPI * const spi = S3C24X0_GetBase_SPI();
- unsigned int command;
-
- SET_CS_TOUCH();
- command = 0x0000;
- command |= (page << 11);
- command |= (reg << 5);
-
- spi->ch[0].SPTDAT = (command & 0xFF00) >> 8;
- wait_transmit_done();
- spi->ch[0].SPTDAT = (command & 0x00FF);
- wait_transmit_done();
- spi->ch[0].SPTDAT = (data & 0xFF00) >> 8;
- wait_transmit_done();
- spi->ch[0].SPTDAT = (data & 0x00FF);
- wait_transmit_done();
-
- CLR_CS_TOUCH();
-}
-
-static void tsc2000_set_brightness(void)
-{
- char tmp[10];
- int i, br;
-
- spi_init();
- tsc2000_write(1, 2, 0x0); /* Power up DAC */
-
- i = getenv_r("brightness", tmp, sizeof(tmp));
- br = (i > 0)
- ? (int) simple_strtoul (tmp, NULL, 10)
- : CFG_BRIGHTNESS;
-
- tsc2000_write(0, 0xb, br & 0xff);
-}
-#endif
diff --git a/board/trab/trab_fkt.c b/board/trab/trab_fkt.c
deleted file mode 100644
index 71be6e03e5..0000000000
--- a/board/trab/trab_fkt.c
+++ /dev/null
@@ -1,1411 +0,0 @@
-/*
- * (C) Copyright 2003
- * Martin Krause, TQ-Systems GmbH, martin.krause@tqs.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
- */
-
-#define DEBUG
-
-#include <common.h>
-#include <exports.h>
-#include <s3c2400.h>
-#include "tsc2000.h"
-#include "rs485.h"
-
-/*
- * define, to wait for the touch to be pressed, before reading coordinates in
- * command do_touch. If not defined, an error message is printed, when the
- * command do_touch is invoked and the touch is not pressed within an specific
- * interval.
- */
-#undef CONFIG_TOUCH_WAIT_PRESSED
-
-/* max time to wait for touch is pressed */
-#ifndef CONFIG_TOUCH_WAIT_PRESSED
-#define TOUCH_TIMEOUT 5
-#endif /* !CONFIG_TOUCH_WAIT_PRESSED */
-
-/* assignment of CPU internal ADC channels with TRAB hardware */
-#define VCC5V 2
-#define VCC12V 3
-
-/* CPLD-Register for controlling TRAB hardware functions */
-#define CPLD_BUTTONS ((volatile unsigned long *)0x04020000)
-#define CPLD_FILL_LEVEL ((volatile unsigned long *)0x04008000)
-#define CPLD_ROTARY_SWITCH ((volatile unsigned long *)0x04018000)
-#define CPLD_RS485_RE ((volatile unsigned long *)0x04028000)
-
-/* timer configuration bits for buzzer and PWM */
-#define START2 (1 << 12)
-#define UPDATE2 (1 << 13)
-#define INVERT2 (1 << 14)
-#define RELOAD2 (1 << 15)
-#define START3 (1 << 16)
-#define UPDATE3 (1 << 17)
-#define INVERT3 (1 << 18)
-#define RELOAD3 (1 << 19)
-
-#define PCLK 66000000
-#define BUZZER_FREQ 1000 /* frequency in Hz */
-#define PWM_FREQ 500
-
-
-/* definitions of I2C EEPROM device address */
-#define I2C_EEPROM_DEV_ADDR 0x54
-
-/* definition for touch panel calibration points */
-#define CALIB_TL 0 /* calibration point in (T)op (L)eft corner */
-#define CALIB_DR 1 /* calibration point in (D)own (R)ight corner */
-
-/* EEPROM address map */
-#define SERIAL_NUMBER 8
-#define TOUCH_X0 52
-#define TOUCH_Y0 54
-#define TOUCH_X1 56
-#define TOUCH_Y1 58
-#define CRC16 60
-
-/* EEPROM stuff */
-#define EEPROM_MAX_CRC_BUF 64
-
-/* RS485 stuff */
-#define RS485_MAX_RECEIVE_BUF_LEN 100
-
-/* Bit definitions for ADCCON */
-#define ADC_ENABLE_START 0x1
-#define ADC_READ_START 0x2
-#define ADC_STDBM 0x4
-#define ADC_INP_AIN0 (0x0 << 3)
-#define ADC_INP_AIN1 (0x1 << 3)
-#define ADC_INP_AIN2 (0x2 << 3)
-#define ADC_INP_AIN3 (0x3 << 3)
-#define ADC_INP_AIN4 (0x4 << 3)
-#define ADC_INP_AIN5 (0x5 << 3)
-#define ADC_INP_AIN6 (0x6 << 3)
-#define ADC_INP_AIN7 (0x7 << 3)
-#define ADC_PRSCEN 0x4000
-#define ADC_ECFLG 0x8000
-
-/* function test functions */
-int do_dip (void);
-int do_info (void);
-int do_vcc5v (void);
-int do_vcc12v (void);
-int do_buttons (void);
-int do_fill_level (void);
-int do_rotary_switch (void);
-int do_pressure (void);
-int do_v_bat (void);
-int do_vfd_id (void);
-int do_buzzer (char **);
-int do_led (char **);
-int do_full_bridge (char **);
-int do_dac (char **);
-int do_motor_contact (void);
-int do_motor (char **);
-int do_pwm (char **);
-int do_thermo (char **);
-int do_touch (char **);
-int do_rs485 (char **);
-int do_serial_number (char **);
-int do_crc16 (void);
-int do_power_switch (void);
-int do_gain (char **);
-int do_eeprom (char **);
-
-/* helper functions */
-static void adc_init (void);
-static int adc_read (unsigned int channel);
-static void print_identifier (void);
-
-#ifdef CONFIG_TOUCH_WAIT_PRESSED
-static void touch_wait_pressed (void);
-#else
-static int touch_check_pressed (void);
-#endif /* CONFIG_TOUCH_WAIT_PRESSED */
-
-static void touch_read_x_y (int *x, int *y);
-static int touch_write_clibration_values (int calib_point, int x, int y);
-static int rs485_send_line (const char *data);
-static int rs485_receive_chars (char *data, int timeout);
-static unsigned short updcrc(unsigned short icrc, unsigned char *icp,
- unsigned int icnt);
-
-#if (CONFIG_COMMANDS & CFG_CMD_I2C)
-static int trab_eeprom_read (char **argv);
-static int trab_eeprom_write (char **argv);
-int i2c_write_multiple (uchar chip, uint addr, int alen, uchar *buffer,
- int len);
-int i2c_read_multiple ( uchar chip, uint addr, int alen, uchar *buffer,
- int len);
-#endif /* CFG_CMD_I2C */
-
-/*
- * TRAB board specific commands. Especially commands for burn-in and function
- * test.
- */
-
-int trab_fkt (int argc, char *argv[])
-{
- int i;
-
- app_startup(argv);
- if (get_version () != XF_VERSION) {
- printf ("Wrong XF_VERSION. Please re-compile with actual "
- "u-boot sources\n");
- printf ("Example expects ABI version %d\n", XF_VERSION);
- printf ("Actual U-Boot ABI version %d\n", (int)get_version());
- return 1;
- }
-
- debug ("argc = %d\n", argc);
-
- for (i=0; i<=argc; ++i) {
- debug ("argv[%d] = \"%s\"\n", i, argv[i] ? argv[i] : "<NULL>");
- }
-
- adc_init ();
-
- switch (argc) {
-
- case 0:
- case 1:
- break;
-
- case 2:
- if (strcmp (argv[1], "info") == 0) {
- return (do_info ());
- }
- if (strcmp (argv[1], "dip") == 0) {
- return (do_dip ());
- }
- if (strcmp (argv[1], "vcc5v") == 0) {
- return (do_vcc5v ());
- }
- if (strcmp (argv[1], "vcc12v") == 0) {
- return (do_vcc12v ());
- }
- if (strcmp (argv[1], "buttons") == 0) {
- return (do_buttons ());
- }
- if (strcmp (argv[1], "fill_level") == 0) {
- return (do_fill_level ());
- }
- if (strcmp (argv[1], "rotary_switch") == 0) {
- return (do_rotary_switch ());
- }
- if (strcmp (argv[1], "pressure") == 0) {
- return (do_pressure ());
- }
- if (strcmp (argv[1], "v_bat") == 0) {
- return (do_v_bat ());
- }
- if (strcmp (argv[1], "vfd_id") == 0) {
- return (do_vfd_id ());
- }
- if (strcmp (argv[1], "motor_contact") == 0) {
- return (do_motor_contact ());
- }
- if (strcmp (argv[1], "crc16") == 0) {
- return (do_crc16 ());
- }
- if (strcmp (argv[1], "power_switch") == 0) {
- return (do_power_switch ());
- }
- break;
-
- case 3:
- if (strcmp (argv[1], "full_bridge") == 0) {
- return (do_full_bridge (argv));
- }
- if (strcmp (argv[1], "dac") == 0) {
- return (do_dac (argv));
- }
- if (strcmp (argv[1], "motor") == 0) {
- return (do_motor (argv));
- }
- if (strcmp (argv[1], "pwm") == 0) {
- return (do_pwm (argv));
- }
- if (strcmp (argv[1], "thermo") == 0) {
- return (do_thermo (argv));
- }
- if (strcmp (argv[1], "touch") == 0) {
- return (do_touch (argv));
- }
- if (strcmp (argv[1], "serial_number") == 0) {
- return (do_serial_number (argv));
- }
- if (strcmp (argv[1], "buzzer") == 0) {
- return (do_buzzer (argv));
- }
- if (strcmp (argv[1], "gain") == 0) {
- return (do_gain (argv));
- }
- break;
-
- case 4:
- if (strcmp (argv[1], "led") == 0) {
- return (do_led (argv));
- }
- if (strcmp (argv[1], "rs485") == 0) {
- return (do_rs485 (argv));
- }
- if (strcmp (argv[1], "serial_number") == 0) {
- return (do_serial_number (argv));
- }
- break;
-
- case 5:
- if (strcmp (argv[1], "eeprom") == 0) {
- return (do_eeprom (argv));
- }
- break;
-
- case 6:
- if (strcmp (argv[1], "eeprom") == 0) {
- return (do_eeprom (argv));
- }
- break;
-
- default:
- break;
- }
-
- printf ("Usage:\n<command> <parameter1> <parameter2> ...\n");
- return 1;
-}
-
-int do_info (void)
-{
- printf ("Stand-alone application for TRAB board function test\n");
- printf ("Built: %s at %s\n", __DATE__ , __TIME__ );
-
- return 0;
-}
-
-int do_dip (void)
-{
- unsigned int result = 0;
- int adc_val;
- int i;
-
- /***********************************************************
- DIP switch connection (according to wa4-cpu.sp.301.pdf, page 3):
- SW1 - AIN4
- SW2 - AIN5
- SW3 - AIN6
- SW4 - AIN7
-
- "On" DIP switch position short-circuits the voltage from
- the input channel (i.e. '0' conversion result means "on").
- *************************************************************/
-
- for (i = 7; i > 3; i--) {
-
- if ((adc_val = adc_read (i)) == -1) {
- printf ("Channel %d could not be read\n", i);
- return 1;
- }
-
- /*
- * Input voltage (switch open) is 1.8 V.
- * (Vin_High/VRef)*adc_res = (1,8V/2,5V)*1023) = 736
- * Set trigger at halve that value.
- */
- if (adc_val < 368)
- result |= (1 << (i-4));
- }
-
- /* print result to console */
- print_identifier ();
- for (i = 0; i < 4; i++) {
- if ((result & (1 << i)) == 0)
- printf("0");
- else
- printf("1");
- }
- printf("\n");
-
- return 0;
-}
-
-
-int do_vcc5v (void)
-{
- int result;
-
- /* VCC5V is connected to channel 2 */
-
- if ((result = adc_read (VCC5V)) == -1) {
- printf ("VCC5V could not be read\n");
- return 1;
- }
-
- /*
- * Calculate voltage value. Split in two parts because there is no
- * floating point support. VCC5V is connected over an resistor divider:
- * VCC5V=ADCval*2,5V/1023*(10K+30K)/10K.
- */
- print_identifier ();
- printf ("%d", (result & 0x3FF)* 10 / 1023);
- printf (".%d", ((result & 0x3FF)* 10 % 1023)* 10 / 1023);
- printf ("%d V\n", (((result & 0x3FF) * 10 % 1023 ) * 10 % 1023)
- * 10 / 1024);
-
- return 0;
-}
-
-
-int do_vcc12v (void)
-{
- int result;
-
- if ((result = adc_read (VCC12V)) == -1) {
- printf ("VCC12V could not be read\n");
- return 1;
- }
-
- /*
- * Calculate voltage value. Split in two parts because there is no
- * floating point support. VCC5V is connected over an resistor divider:
- * VCC12V=ADCval*2,5V/1023*(30K+270K)/30K.
- */
- print_identifier ();
- printf ("%d", (result & 0x3FF)* 25 / 1023);
- printf (".%d V\n", ((result & 0x3FF)* 25 % 1023) * 10 / 1023);
-
- return 0;
-}
-
-static int adc_read (unsigned int channel)
-{
- int j = 1000; /* timeout value for wait loop in us */
- int result;
- S3C2400_ADC *padc;
-
- padc = S3C2400_GetBase_ADC();
- channel &= 0x7;
-
- padc->ADCCON &= ~ADC_STDBM; /* select normal mode */
- padc->ADCCON &= ~(0x7 << 3); /* clear the channel bits */
- padc->ADCCON |= ((channel << 3) | ADC_ENABLE_START);
-
- while (j--) {
- if ((padc->ADCCON & ADC_ENABLE_START) == 0)
- break;
- udelay (1);
- }
-
- if (j == 0) {
- printf("%s: ADC timeout\n", __FUNCTION__);
- padc->ADCCON |= ADC_STDBM; /* select standby mode */
- return -1;
- }
-
- result = padc->ADCDAT & 0x3FF;
-
- padc->ADCCON |= ADC_STDBM; /* select standby mode */
-
- debug ("%s: channel %d, result[DIGIT]=%d\n", __FUNCTION__,
- (padc->ADCCON >> 3) & 0x7, result);
-
- /*
- * Wait for ADC to be ready for next conversion. This delay value was
- * estimated, because the datasheet does not specify a value.
- */
- udelay (1000);
-
- return (result);
-}
-
-
-static void adc_init (void)
-{
- S3C2400_ADC *padc;
-
- padc = S3C2400_GetBase_ADC();
-
- padc->ADCCON &= ~(0xff << 6); /* clear prescaler bits */
- padc->ADCCON |= ((65 << 6) | ADC_PRSCEN); /* set prescaler */
-
- /*
- * Wait some time to avoid problem with very first call of
- * adc_read(). Without * this delay, sometimes the first read adc
- * value is 0. Perhaps because the * adjustment of prescaler takes
- * some clock cycles?
- */
- udelay (1000);
-
- return;
-}
-
-
-int do_buttons (void)
-{
- int result;
- int i;
-
- result = *CPLD_BUTTONS; /* read CPLD */
- debug ("%s: cpld_taster (32 bit) %#x\n", __FUNCTION__, result);
-
- /* print result to console */
- print_identifier ();
- for (i = 16; i <= 19; i++) {
- if ((result & (1 << i)) == 0)
- printf("0");
- else
- printf("1");
- }
- printf("\n");
- return 0;
-}
-
-
-int do_power_switch (void)
-{
- int result;
-
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* configure GPE7 as input */
- gpio->PECON &= ~(0x3 << (2 * 7));
-
- /* signal GPE7 from power switch is low active: 0=on , 1=off */
- result = ((gpio->PEDAT & (1 << 7)) == (1 << 7)) ? 0 : 1;
-
- print_identifier ();
- printf("%d\n", result);
- return 0;
-}
-
-
-int do_fill_level (void)
-{
- int result;
-
- result = *CPLD_FILL_LEVEL; /* read CPLD */
- debug ("%s: cpld_fuellstand (32 bit) %#x\n", __FUNCTION__, result);
-
- /* print result to console */
- print_identifier ();
- if ((result & (1 << 16)) == 0)
- printf("0\n");
- else
- printf("1\n");
- return 0;
-}
-
-
-int do_rotary_switch (void)
-{
- int result;
- /*
- * Please note, that the default values of the direction bits are
- * undefined after reset. So it is a good idea, to make first a dummy
- * call to this function, to clear the direction bits and set so to
- * proper values.
- */
-
- result = *CPLD_ROTARY_SWITCH; /* read CPLD */
- debug ("%s: cpld_inc (32 bit) %#x\n", __FUNCTION__, result);
-
- *CPLD_ROTARY_SWITCH |= (3 << 16); /* clear direction bits in CPLD */
-
- /* print result to console */
- print_identifier ();
- if ((result & (1 << 16)) == (1 << 16))
- printf("R");
- if ((result & (1 << 17)) == (1 << 17))
- printf("L");
- if (((result & (1 << 16)) == 0) && ((result & (1 << 17)) == 0))
- printf("0");
- if ((result & (1 << 18)) == 0)
- printf("0\n");
- else
- printf("1\n");
- return 0;
-}
-
-
-int do_vfd_id (void)
-{
- int i;
- long int pcup_old, pccon_old;
- int vfd_board_id;
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* try to red vfd board id from the value defined by pull-ups */
-
- pcup_old = gpio->PCUP;
- pccon_old = gpio->PCCON;
-
- gpio->PCUP = (gpio->PCUP & 0xFFF0); /* activate GPC0...GPC3 pull-ups */
- gpio->PCCON = (gpio->PCCON & 0xFFFFFF00); /* configure GPC0...GPC3 as
- * inputs */
- udelay (10); /* allow signals to settle */
- vfd_board_id = (~gpio->PCDAT) & 0x000F; /* read GPC0...GPC3 port pins */
-
- gpio->PCCON = pccon_old;
- gpio->PCUP = pcup_old;
-
- /* print vfd_board_id to console */
- print_identifier ();
- for (i = 0; i < 4; i++) {
- if ((vfd_board_id & (1 << i)) == 0)
- printf("0");
- else
- printf("1");
- }
- printf("\n");
- return 0;
-}
-
-int do_buzzer (char **argv)
-{
- int counter;
-
- S3C24X0_TIMERS * const timers = S3C24X0_GetBase_TIMERS();
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* set prescaler for timer 2, 3 and 4 */
- timers->TCFG0 &= ~0xFF00;
- timers->TCFG0 |= 0x0F00;
-
- /* set divider for timer 2 */
- timers->TCFG1 &= ~0xF00;
- timers->TCFG1 |= 0x300;
-
- /* set frequency */
- counter = (PCLK / BUZZER_FREQ) >> 9;
- timers->ch[2].TCNTB = counter;
- timers->ch[2].TCMPB = counter / 2;
-
- if (strcmp (argv[2], "on") == 0) {
- debug ("%s: frequency: %d\n", __FUNCTION__,
- BUZZER_FREQ);
-
- /* configure pin GPD7 as TOUT2 */
- gpio->PDCON &= ~0xC000;
- gpio->PDCON |= 0x8000;
-
- /* start */
- timers->TCON = (timers->TCON | UPDATE2 | RELOAD2) &
- ~INVERT2;
- timers->TCON = (timers->TCON | START2) & ~UPDATE2;
- return (0);
- }
- else if (strcmp (argv[2], "off") == 0) {
- /* stop */
- timers->TCON &= ~(START2 | RELOAD2);
-
- /* configure GPD7 as output and set to low */
- gpio->PDCON &= ~0xC000;
- gpio->PDCON |= 0x4000;
- gpio->PDDAT &= ~0x80;
- return (0);
- }
-
- printf ("%s: invalid parameter %s\n", __FUNCTION__, argv[2]);
- return 1;
-}
-
-
-int do_led (char **argv)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* configure PC14 and PC15 as output */
- gpio->PCCON &= ~(0xF << 28);
- gpio->PCCON |= (0x5 << 28);
-
- /* configure PD0 and PD4 as output */
- gpio->PDCON &= ~((0x3 << 8) | 0x3);
- gpio->PDCON |= ((0x1 << 8) | 0x1);
-
- switch (simple_strtoul(argv[2], NULL, 10)) {
-
- case 0:
- case 1:
- break;
-
- case 2:
- if (strcmp (argv[3], "on") == 0)
- gpio->PCDAT |= (1 << 14);
- else
- gpio->PCDAT &= ~(1 << 14);
- return 0;
-
- case 3:
- if (strcmp (argv[3], "on") == 0)
- gpio->PCDAT |= (1 << 15);
- else
- gpio->PCDAT &= ~(1 << 15);
- return 0;
-
- case 4:
- if (strcmp (argv[3], "on") == 0)
- gpio->PDDAT |= (1 << 0);
- else
- gpio->PDDAT &= ~(1 << 0);
- return 0;
-
- case 5:
- if (strcmp (argv[3], "on") == 0)
- gpio->PDDAT |= (1 << 4);
- else
- gpio->PDDAT &= ~(1 << 4);
- return 0;
-
- default:
- break;
-
- }
- printf ("%s: invalid parameter %s\n", __FUNCTION__, argv[2]);
- return 1;
-}
-
-
-int do_full_bridge (char **argv)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* configure PD5 and PD6 as output */
- gpio->PDCON &= ~((0x3 << 5*2) | (0x3 << 6*2));
- gpio->PDCON |= ((0x1 << 5*2) | (0x1 << 6*2));
-
- if (strcmp (argv[2], "+") == 0) {
- gpio->PDDAT |= (1 << 5);
- gpio->PDDAT |= (1 << 6);
- return 0;
- }
- else if (strcmp (argv[2], "-") == 0) {
- gpio->PDDAT &= ~(1 << 5);
- gpio->PDDAT |= (1 << 6);
- return 0;
- }
- else if (strcmp (argv[2], "off") == 0) {
- gpio->PDDAT &= ~(1 << 5);
- gpio->PDDAT &= ~(1 << 6);
- return 0;
- }
- printf ("%s: invalid parameter %s\n", __FUNCTION__, argv[2]);
- return 1;
-}
-
-/* val must be in [0, 4095] */
-static inline unsigned long tsc2000_to_uv (u16 val)
-{
- return ((250000 * val) / 4096) * 10;
-}
-
-
-int do_dac (char **argv)
-{
- int brightness;
-
- /* initialize SPI */
- spi_init ();
-
- if (((brightness = simple_strtoul (argv[2], NULL, 10)) < 0) ||
- (brightness > 255)) {
- printf ("%s: invalid parameter %s\n", __FUNCTION__, argv[2]);
- return 1;
- }
- tsc2000_write(TSC2000_REG_DACCTL, 0x0); /* Power up DAC */
- tsc2000_write(TSC2000_REG_DAC, brightness & 0xff);
-
- return 0;
-}
-
-
-int do_v_bat (void)
-{
- unsigned long ret, res;
-
- /* initialize SPI */
- spi_init ();
-
- tsc2000_write(TSC2000_REG_ADC, 0x1836);
-
- /* now wait for data available */
- adc_wait_conversion_done();
-
- ret = tsc2000_read(TSC2000_REG_BAT1);
- res = (tsc2000_to_uv(ret) + 1250) / 2500;
- res += (ERROR_BATTERY * res) / 1000;
-
- print_identifier ();
- printf ("%ld", (res / 100));
- printf (".%ld", ((res % 100) / 10));
- printf ("%ld V\n", (res % 10));
- return 0;
-}
-
-
-int do_pressure (void)
-{
- /* initialize SPI */
- spi_init ();
-
- tsc2000_write(TSC2000_REG_ADC, 0x2436);
-
- /* now wait for data available */
- adc_wait_conversion_done();
-
- print_identifier ();
- printf ("%d\n", tsc2000_read(TSC2000_REG_AUX2));
- return 0;
-}
-
-
-int do_motor_contact (void)
-{
- int result;
-
- result = *CPLD_FILL_LEVEL; /* read CPLD */
- debug ("%s: cpld_fuellstand (32 bit) %#x\n", __FUNCTION__, result);
-
- /* print result to console */
- print_identifier ();
- if ((result & (1 << 17)) == 0)
- printf("0\n");
- else
- printf("1\n");
- return 0;
-}
-
-int do_motor (char **argv)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- /* Configure I/O port */
- gpio->PGCON &= ~(0x3 << 0);
- gpio->PGCON |= (0x1 << 0);
-
- if (strcmp (argv[2], "on") == 0) {
- gpio->PGDAT &= ~(1 << 0);
- return 0;
- }
- if (strcmp (argv[2], "off") == 0) {
- gpio->PGDAT |= (1 << 0);
- return 0;
- }
- printf ("%s: invalid parameter %s\n", __FUNCTION__, argv[2]);
- return 1;
-}
-
-static void print_identifier (void)
-{
- printf ("## FKT: ");
-}
-
-int do_pwm (char **argv)
-{
- int counter;
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
- S3C24X0_TIMERS * const timers = S3C24X0_GetBase_TIMERS();
-
- if (strcmp (argv[2], "on") == 0) {
- /* configure pin GPD8 as TOUT3 */
- gpio->PDCON &= ~(0x3 << 8*2);
- gpio->PDCON |= (0x2 << 8*2);
-
- /* set prescaler for timer 2, 3 and 4 */
- timers->TCFG0 &= ~0xFF00;
- timers->TCFG0 |= 0x0F00;
-
- /* set divider for timer 3 */
- timers->TCFG1 &= ~(0xf << 12);
- timers->TCFG1 |= (0x3 << 12);
-
- /* set frequency */
- counter = (PCLK / PWM_FREQ) >> 9;
- timers->ch[3].TCNTB = counter;
- timers->ch[3].TCMPB = counter / 2;
-
- /* start timer */
- timers->TCON = (timers->TCON | UPDATE3 | RELOAD3) & ~INVERT3;
- timers->TCON = (timers->TCON | START3) & ~UPDATE3;
- return 0;
- }
- if (strcmp (argv[2], "off") == 0) {
-
- /* stop timer */
- timers->TCON &= ~(START2 | RELOAD2);
-
- /* configure pin GPD8 as output and set to 0 */
- gpio->PDCON &= ~(0x3 << 8*2);
- gpio->PDCON |= (0x1 << 8*2);
- gpio->PDDAT &= ~(1 << 8);
- return 0;
- }
- printf ("%s: invalid parameter %s\n", __FUNCTION__, argv[2]);
- return 1;
-}
-
-
-int do_thermo (char **argv)
-{
- int channel, res;
-
- tsc2000_reg_init ();
-
- if (strcmp (argv[2], "all") == 0) {
- int i;
- for (i=0; i <= 15; i++) {
- res = tsc2000_read_channel(i);
- print_identifier ();
- printf ("c%d: %d\n", i, res);
- }
- return 0;
- }
- channel = simple_strtoul (argv[2], NULL, 10);
- res = tsc2000_read_channel(channel);
- print_identifier ();
- printf ("%d\n", res);
- return 0; /* return OK */
-}
-
-
-int do_touch (char **argv)
-{
- int x, y;
-
- if (strcmp (argv[2], "tl") == 0) {
-#ifdef CONFIG_TOUCH_WAIT_PRESSED
- touch_wait_pressed();
-#else
- {
- int i;
- for (i = 0; i < (TOUCH_TIMEOUT * 1000); i++) {
- if (touch_check_pressed ()) {
- break;
- }
- udelay (1000); /* pause 1 ms */
- }
- }
- if (!touch_check_pressed()) {
- print_identifier ();
- printf ("error: touch not pressed\n");
- return 1;
- }
-#endif /* CONFIG_TOUCH_WAIT_PRESSED */
- touch_read_x_y (&x, &y);
-
- print_identifier ();
- printf ("x=%d y=%d\n", x, y);
- return touch_write_clibration_values (CALIB_TL, x, y);
- }
- else if (strcmp (argv[2], "dr") == 0) {
-#ifdef CONFIG_TOUCH_WAIT_PRESSED
- touch_wait_pressed();
-#else
- {
- int i;
- for (i = 0; i < (TOUCH_TIMEOUT * 1000); i++) {
- if (touch_check_pressed ()) {
- break;
- }
- udelay (1000); /* pause 1 ms */
- }
- }
- if (!touch_check_pressed()) {
- print_identifier ();
- printf ("error: touch not pressed\n");
- return 1;
- }
-#endif /* CONFIG_TOUCH_WAIT_PRESSED */
- touch_read_x_y (&x, &y);
-
- print_identifier ();
- printf ("x=%d y=%d\n", x, y);
-
- return touch_write_clibration_values (CALIB_DR, x, y);
- }
- return 1; /* not "tl", nor "dr", so return error */
-}
-
-
-#ifdef CONFIG_TOUCH_WAIT_PRESSED
-static void touch_wait_pressed (void)
-{
- while (!(tsc2000_read(TSC2000_REG_ADC) & TC_PSM));
-}
-
-#else
-static int touch_check_pressed (void)
-{
- return (tsc2000_read(TSC2000_REG_ADC) & TC_PSM);
-}
-#endif /* CONFIG_TOUCH_WAIT_PRESSED */
-
-static int touch_write_clibration_values (int calib_point, int x, int y)
-{
-#if (CONFIG_COMMANDS & CFG_CMD_I2C)
- int x_verify = 0;
- int y_verify = 0;
-
- tsc2000_reg_init ();
-
- if (calib_point == CALIB_TL) {
- if (i2c_write_multiple (I2C_EEPROM_DEV_ADDR, TOUCH_X0, 1,
- (unsigned char *)&x, 2)) {
- return 1;
- }
- if (i2c_write_multiple (I2C_EEPROM_DEV_ADDR, TOUCH_Y0, 1,
- (unsigned char *)&y, 2)) {
- return 1;
- }
-
- /* verify written values */
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, TOUCH_X0, 1,
- (unsigned char *)&x_verify, 2)) {
- return 1;
- }
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, TOUCH_Y0, 1,
- (unsigned char *)&y_verify, 2)) {
- return 1;
- }
- if ((y != y_verify) || (x != x_verify)) {
- print_identifier ();
- printf ("error: verify error\n");
- return 1;
- }
- return 0; /* no error */
- }
- else if (calib_point == CALIB_DR) {
- if (i2c_write_multiple (I2C_EEPROM_DEV_ADDR, TOUCH_X1, 1,
- (unsigned char *)&x, 2)) {
- return 1;
- }
- if (i2c_write_multiple (I2C_EEPROM_DEV_ADDR, TOUCH_Y1, 1,
- (unsigned char *)&y, 2)) {
- return 1;
- }
-
- /* verify written values */
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, TOUCH_X1, 1,
- (unsigned char *)&x_verify, 2)) {
- return 1;
- }
- if (i2c_read_multiple (I2C_EEPROM_DEV_ADDR, TOUCH_Y1, 1,
- (unsigned char *)&y_verify, 2)) {
- return 1;
- }
- if ((y != y_verify) || (x != x_verify)) {
- print_identifier ();
- printf ("error: verify error\n");
- return 1;
- }
- return 0;
- }
- return 1;
-#else
- printf ("No I2C support enabled (CFG_CMD_I2C), could not write "
- "to EEPROM\n");
- return (1);
-#endif /* CFG_CMD_I2C */
-}
-
-
-static void touch_read_x_y (int *px, int *py)
-{
- tsc2000_write(TSC2000_REG_ADC, DEFAULT_ADC | TC_AD0 | TC_AD1);
- adc_wait_conversion_done();
- *px = tsc2000_read(TSC2000_REG_X);
-
- tsc2000_write(TSC2000_REG_ADC, DEFAULT_ADC | TC_AD2);
- adc_wait_conversion_done();
- *py = tsc2000_read(TSC2000_REG_Y);
-}
-
-
-int do_rs485 (char **argv)
-{
- int timeout;
- char data[RS485_MAX_RECEIVE_BUF_LEN];
-
- if (strcmp (argv[2], "send") == 0) {
- return (rs485_send_line (argv[3]));
- }
- else if (strcmp (argv[2], "receive") == 0) {
- timeout = simple_strtoul(argv[3], NULL, 10);
- if (rs485_receive_chars (data, timeout) != 0) {
- print_identifier ();
- printf ("## nothing received\n");
- return (1);
- }
- else {
- print_identifier ();
- printf ("%s\n", data);
- return (0);
- }
- }
- printf ("%s: unknown command %s\n", __FUNCTION__, argv[2]);
- return (1); /* unknown command, return error */
-}
-
-
-static int rs485_send_line (const char *data)
-{
- rs485_init ();
- trab_rs485_enable_tx ();
- rs485_puts (data);
- rs485_putc ('\n');
-
- return (0);
-}
-
-
-static int rs485_receive_chars (char *data, int timeout)
-{
- int i;
- int receive_count = 0;
-
- rs485_init ();
- trab_rs485_enable_rx ();
-
- /* test every 1 ms for received characters to avoid a receive FIFO
- * overrun (@ 38.400 Baud) */
- for (i = 0; i < (timeout * 1000); i++) {
- while (rs485_tstc ()) {
- if (receive_count >= RS485_MAX_RECEIVE_BUF_LEN-1)
- break;
- *data++ = rs485_getc ();
- receive_count++;
- }
- udelay (1000); /* pause 1 ms */
- }
- *data = '\0'; /* terminate string */
-
- if (receive_count == 0)
- return (1);
- else
- return (0);
-}
-
-
-int do_serial_number (char **argv)
-{
-#if (CONFIG_COMMANDS & CFG_CMD_I2C)
- unsigned int serial_number;
-
- if (strcmp (argv[2], "read") == 0) {
- if (i2c_read (I2C_EEPROM_DEV_ADDR, SERIAL_NUMBER, 1,
- (unsigned char *)&serial_number, 4)) {
- printf ("could not read from eeprom\n");
- return (1);
- }
- print_identifier ();
- printf ("%08d\n", serial_number);
- return (0);
- }
- else if (strcmp (argv[2], "write") == 0) {
- serial_number = simple_strtoul(argv[3], NULL, 10);
- if (i2c_write (I2C_EEPROM_DEV_ADDR, SERIAL_NUMBER, 1,
- (unsigned char *)&serial_number, 4)) {
- printf ("could not write to eeprom\n");
- return (1);
- }
- return (0);
- }
- printf ("%s: unknown command %s\n", __FUNCTION__, argv[2]);
- return (1); /* unknown command, return error */
-#else
- printf ("No I2C support enabled (CFG_CMD_I2C), could not write "
- "to EEPROM\n");
- return (1);
-#endif /* CFG_CMD_I2C */
-}
-
-
-int do_crc16 (void)
-{
-#if (CONFIG_COMMANDS & CFG_CMD_I2C)
- int crc;
- unsigned char buf[EEPROM_MAX_CRC_BUF];
-
- if (i2c_read (I2C_EEPROM_DEV_ADDR, 0, 1, buf, 60)) {
- printf ("could not read from eeprom\n");
- return (1);
- }
- crc = 0; /* start value of crc calculation */
- crc = updcrc (crc, buf, 60);
-
- print_identifier ();
- printf ("crc16=%#04x\n", crc);
-
- if (i2c_write (I2C_EEPROM_DEV_ADDR, CRC16, 1, (unsigned char *)&crc,
- sizeof (crc))) {
- printf ("could not read from eeprom\n");
- return (1);
- }
- return (0);
-#else
- printf ("No I2C support enabled (CFG_CMD_I2C), could not write "
- "to EEPROM\n");
- return (1);
-#endif /* CFG_CMD_I2C */
-}
-
-
-/*
- * Calculate, intelligently, the CRC of a dataset incrementally given a
- * buffer full at a time.
- * Initialize crc to 0 for XMODEM, -1 for CCITT.
- *
- * Usage:
- * newcrc = updcrc( oldcrc, bufadr, buflen )
- * unsigned int oldcrc, buflen;
- * char *bufadr;
- *
- * Compile with -DTEST to generate program that prints CRC of stdin to stdout.
- * Compile with -DMAKETAB to print values for crctab to stdout
- */
-
- /* the CRC polynomial. This is used by XMODEM (almost CCITT).
- * If you change P, you must change crctab[]'s initial value to what is
- * printed by initcrctab()
- */
-#define P 0x1021
-
- /* number of bits in CRC: don't change it. */
-#define W 16
-
- /* this the number of bits per char: don't change it. */
-#define B 8
-
-static unsigned short crctab[1<<B] = { /* as calculated by initcrctab() */
- 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
- 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
- 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
- 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
- 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
- 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
- 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
- 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
- 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
- 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
- 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
- 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
- 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
- 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
- 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
- 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
- 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
- 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
- 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
- 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
- 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
- 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
- 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
- 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
- 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
- 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
- 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
- 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
- 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
- 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
- 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
- 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
- };
-
-static unsigned short updcrc(unsigned short icrc, unsigned char *icp,
- unsigned int icnt )
-{
- register unsigned short crc = icrc;
- register unsigned char *cp = icp;
- register unsigned int cnt = icnt;
-
- while (cnt--)
- crc = (crc<<B) ^ crctab[(crc>>(W-B)) ^ *cp++];
-
- return (crc);
-}
-
-
-int do_gain (char **argv)
-{
- int range;
-
- range = simple_strtoul (argv[2], NULL, 10);
- if ((range < 1) || (range > 3))
- {
- printf ("%s: invalid parameter %s\n", __FUNCTION__, argv[2]);
- return 1;
- }
-
- tsc2000_set_range (range);
- return (0);
-}
-
-
-int do_eeprom (char **argv)
-{
-#if (CONFIG_COMMANDS & CFG_CMD_I2C)
- if (strcmp (argv[2], "read") == 0) {
- return (trab_eeprom_read (argv));
- }
-
- else if (strcmp (argv[2], "write") == 0) {
- return (trab_eeprom_write (argv));
- }
-
- printf ("%s: invalid parameter %s\n", __FUNCTION__, argv[2]);
- return (1);
-#else
- printf ("No I2C support enabled (CFG_CMD_I2C), could not write "
- "to EEPROM\n");
- return (1);
-#endif /* CFG_CMD_I2C */
-}
-
-#if (CONFIG_COMMANDS & CFG_CMD_I2C)
-static int trab_eeprom_read (char **argv)
-{
- int i;
- int len;
- unsigned int addr;
- long int value = 0;
- uchar *buffer;
-
- buffer = (uchar *) &value;
- addr = simple_strtoul (argv[3], NULL, 10);
- addr &= 0xfff;
- len = simple_strtoul (argv[4], NULL, 10);
- if ((len < 1) || (len > 4)) {
- printf ("%s: invalid parameter %s\n", __FUNCTION__,
- argv[4]);
- return (1);
- }
- for (i = 0; i < len; i++) {
- if (i2c_read (I2C_EEPROM_DEV_ADDR, addr+i, 1, buffer+i, 1)) {
- printf ("%s: could not read from i2c device %#x"
- ", addr %d\n", __FUNCTION__,
- I2C_EEPROM_DEV_ADDR, addr);
- return (1);
- }
- }
- print_identifier ();
- if (strcmp (argv[5], "-") == 0) {
- if (len == 1)
- printf ("%d\n", (signed char) value);
- else if (len == 2)
- printf ("%d\n", (signed short int) value);
- else
- printf ("%ld\n", value);
- }
- else {
- if (len == 1)
- printf ("%d\n", (unsigned char) value);
- else if (len == 2)
- printf ("%d\n", (unsigned short int) value);
- else
- printf ("%ld\n", (unsigned long int) value);
- }
- return (0);
-}
-
-static int trab_eeprom_write (char **argv)
-{
- int i;
- int len;
- unsigned int addr;
- long int value = 0;
- uchar *buffer;
-
- buffer = (uchar *) &value;
- addr = simple_strtoul (argv[3], NULL, 10);
- addr &= 0xfff;
- len = simple_strtoul (argv[4], NULL, 10);
- if ((len < 1) || (len > 4)) {
- printf ("%s: invalid parameter %s\n", __FUNCTION__,
- argv[4]);
- return (1);
- }
- value = simple_strtol (argv[5], NULL, 10);
- debug ("value=%ld\n", value);
- for (i = 0; i < len; i++) {
- if (i2c_write (I2C_EEPROM_DEV_ADDR, addr+i, 1, buffer+i, 1)) {
- printf ("%s: could not write to i2c device %d"
- ", addr %d\n", __FUNCTION__,
- I2C_EEPROM_DEV_ADDR, addr);
- return (1);
- }
-#if 0
- printf ("chip=%#x, addr+i=%#x+%d=%p, alen=%d, *buffer+i="
- "%#x+%d=%p=%#x \n",I2C_EEPROM_DEV_ADDR_DEV_ADDR , addr,
- i, addr+i, 1, buffer, i, buffer+i, *(buffer+i));
-#endif
- udelay (30000); /* wait for EEPROM ready */
- }
- return (0);
-}
-
-int i2c_write_multiple (uchar chip, uint addr, int alen,
- uchar *buffer, int len)
-{
- int i;
-
- if (alen != 1) {
- printf ("%s: addr len other than 1 not supported\n",
- __FUNCTION__);
- return (1);
- }
-
- for (i = 0; i < len; i++) {
- if (i2c_write (chip, addr+i, alen, buffer+i, 1)) {
- printf ("%s: could not write to i2c device %d"
- ", addr %d\n", __FUNCTION__, chip, addr);
- return (1);
- }
-#if 0
- printf ("chip=%#x, addr+i=%#x+%d=%p, alen=%d, *buffer+i="
- "%#x+%d=%p=\"%.1s\"\n", chip, addr, i, addr+i,
- alen, buffer, i, buffer+i, buffer+i);
-#endif
-
- udelay (30000);
- }
- return (0);
-}
-
-int i2c_read_multiple ( uchar chip, uint addr, int alen,
- uchar *buffer, int len)
-{
- int i;
-
- if (alen != 1) {
- printf ("%s: addr len other than 1 not supported\n",
- __FUNCTION__);
- return (1);
- }
-
- for (i = 0; i < len; i++) {
- if (i2c_read (chip, addr+i, alen, buffer+i, 1)) {
- printf ("%s: could not read from i2c device %#x"
- ", addr %d\n", __FUNCTION__, chip, addr);
- return (1);
- }
- }
- return (0);
-}
-#endif /* CFG_CMD_I2C */
diff --git a/board/trab/tsc2000.c b/board/trab/tsc2000.c
deleted file mode 100644
index 382a85b359..0000000000
--- a/board/trab/tsc2000.c
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- * Functions to access the TSC2000 controller on TRAB board (used for scanning
- * thermo sensors)
- *
- * Copyright (C) 2003 Martin Krause, TQ-Systems GmbH, martin.krause@tqs.de
- *
- * Copyright (C) 2002 DENX Software Engineering, Wolfgang Denk, 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 <common.h>
-#include <s3c2400.h>
-#include "tsc2000.h"
-
-#include "Pt1000_temp_data.h"
-
-/* helper function */
-#define abs(value) (((value) < 0) ? ((value)*-1) : (value))
-
-/*
- * Maximal allowed deviation between two immediate meassurments of an analog
- * thermo channel. 1 DIGIT = 0.0276 °C. This is used to filter sporadic
- * "jumps" in measurment.
- */
-#define MAX_DEVIATION 18 /* unit: DIGITs of adc; 18 DIGIT = 0.5 °C */
-
-void spi_init(void)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
- S3C24X0_SPI * const spi = S3C24X0_GetBase_SPI();
- int i;
-
- /* Configure I/O ports. */
- gpio->PDCON = (gpio->PDCON & 0xF3FFFF) | 0x040000;
- gpio->PGCON = (gpio->PGCON & 0x0F3FFF) | 0x008000;
- gpio->PGCON = (gpio->PGCON & 0x0CFFFF) | 0x020000;
- gpio->PGCON = (gpio->PGCON & 0x03FFFF) | 0x080000;
-
- CLR_CS_TOUCH();
-
- spi->ch[0].SPPRE = 0x1F; /* Baud-rate ca. 514kHz */
- spi->ch[0].SPPIN = 0x01; /* SPI-MOSI holds Level after last bit */
- spi->ch[0].SPCON = 0x1A; /* Polling, Prescaler, Master, CPOL=0,
- CPHA=1 */
-
- /* Dummy byte ensures clock to be low. */
- for (i = 0; i < 10; i++) {
- spi->ch[0].SPTDAT = 0xFF;
- }
- spi_wait_transmit_done();
-}
-
-
-void spi_wait_transmit_done(void)
-{
- S3C24X0_SPI * const spi = S3C24X0_GetBase_SPI();
-
- while (!(spi->ch[0].SPSTA & 0x01)); /* wait until transfer is done */
-}
-
-
-void tsc2000_write(unsigned short reg, unsigned short data)
-{
- S3C24X0_SPI * const spi = S3C24X0_GetBase_SPI();
- unsigned int command;
-
- SET_CS_TOUCH();
- command = reg;
- spi->ch[0].SPTDAT = (command & 0xFF00) >> 8;
- spi_wait_transmit_done();
- spi->ch[0].SPTDAT = (command & 0x00FF);
- spi_wait_transmit_done();
- spi->ch[0].SPTDAT = (data & 0xFF00) >> 8;
- spi_wait_transmit_done();
- spi->ch[0].SPTDAT = (data & 0x00FF);
- spi_wait_transmit_done();
-
- CLR_CS_TOUCH();
-}
-
-
-unsigned short tsc2000_read (unsigned short reg)
-{
- unsigned short command, data;
- S3C24X0_SPI * const spi = S3C24X0_GetBase_SPI();
-
- SET_CS_TOUCH();
- command = 0x8000 | reg;
-
- spi->ch[0].SPTDAT = (command & 0xFF00) >> 8;
- spi_wait_transmit_done();
- spi->ch[0].SPTDAT = (command & 0x00FF);
- spi_wait_transmit_done();
-
- spi->ch[0].SPTDAT = 0xFF;
- spi_wait_transmit_done();
- data = spi->ch[0].SPRDAT;
- spi->ch[0].SPTDAT = 0xFF;
- spi_wait_transmit_done();
-
- CLR_CS_TOUCH();
- return (spi->ch[0].SPRDAT & 0x0FF) | (data << 8);
-}
-
-
-void tsc2000_set_mux (unsigned int channel)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- CLR_MUX1_ENABLE; CLR_MUX2_ENABLE;
- CLR_MUX3_ENABLE; CLR_MUX4_ENABLE;
- switch (channel) {
- case 0:
- CLR_MUX0; CLR_MUX1;
- SET_MUX1_ENABLE;
- break;
- case 1:
- SET_MUX0; CLR_MUX1;
- SET_MUX1_ENABLE;
- break;
- case 2:
- CLR_MUX0; SET_MUX1;
- SET_MUX1_ENABLE;
- break;
- case 3:
- SET_MUX0; SET_MUX1;
- SET_MUX1_ENABLE;
- break;
- case 4:
- CLR_MUX0; CLR_MUX1;
- SET_MUX2_ENABLE;
- break;
- case 5:
- SET_MUX0; CLR_MUX1;
- SET_MUX2_ENABLE;
- break;
- case 6:
- CLR_MUX0; SET_MUX1;
- SET_MUX2_ENABLE;
- break;
- case 7:
- SET_MUX0; SET_MUX1;
- SET_MUX2_ENABLE;
- break;
- case 8:
- CLR_MUX0; CLR_MUX1;
- SET_MUX3_ENABLE;
- break;
- case 9:
- SET_MUX0; CLR_MUX1;
- SET_MUX3_ENABLE;
- break;
- case 10:
- CLR_MUX0; SET_MUX1;
- SET_MUX3_ENABLE;
- break;
- case 11:
- SET_MUX0; SET_MUX1;
- SET_MUX3_ENABLE;
- break;
- case 12:
- CLR_MUX0; CLR_MUX1;
- SET_MUX4_ENABLE;
- break;
- case 13:
- SET_MUX0; CLR_MUX1;
- SET_MUX4_ENABLE;
- break;
- case 14:
- CLR_MUX0; SET_MUX1;
- SET_MUX4_ENABLE;
- break;
- case 15:
- SET_MUX0; SET_MUX1;
- SET_MUX4_ENABLE;
- break;
- default:
- CLR_MUX0; CLR_MUX1;
- }
-}
-
-
-void tsc2000_set_range (unsigned int range)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- switch (range) {
- case 1:
- CLR_SEL_TEMP_V_0; SET_SEL_TEMP_V_1;
- CLR_SEL_TEMP_V_2; CLR_SEL_TEMP_V_3;
- break;
- case 2:
- CLR_SEL_TEMP_V_0; CLR_SEL_TEMP_V_1;
- CLR_SEL_TEMP_V_2; SET_SEL_TEMP_V_3;
- break;
- case 3:
- SET_SEL_TEMP_V_0; CLR_SEL_TEMP_V_1;
- SET_SEL_TEMP_V_2; CLR_SEL_TEMP_V_3;
- break;
- }
-}
-
-
-u16 tsc2000_read_channel (unsigned int channel)
-{
- u16 res;
-
- tsc2000_set_mux(channel);
- udelay(20 * TSC2000_DELAY_BASE);
-
- tsc2000_write(TSC2000_REG_ADC, 0x2036);
- adc_wait_conversion_done ();
- res = tsc2000_read(TSC2000_REG_AUX1);
- return res;
-}
-
-
-s32 tsc2000_contact_temp (void)
-{
- long adc_pt1000, offset;
- long u_pt1000;
- long contact_temp;
- long temp1, temp2;
-
- tsc2000_reg_init ();
- tsc2000_set_range (3);
-
- /*
- * Because of sporadic "jumps" in the measured adc values every
- * channel is read two times. If there is a significant difference
- * between the two measurements, then print an error and do a third
- * measurement, because it is very unlikely that a successive third
- * measurement goes also wrong.
- */
- temp1 = tsc2000_read_channel (14);
- temp2 = tsc2000_read_channel (14);
- if (abs(temp2 - temp1) < MAX_DEVIATION)
- adc_pt1000 = temp2;
- else {
- printf ("%s: read adc value (channel 14) exceeded max allowed "
- "deviation: %d * 0.0276 °C\n",
- __FUNCTION__, MAX_DEVIATION);
- printf ("adc value 1: %ld DIGITs\nadc value 2: %ld DIGITs\n",
- temp1, temp2);
- adc_pt1000 = tsc2000_read_channel (14);
- printf ("use (third read) adc value: adc_pt1000 = "
- "%ld DIGITs\n", adc_pt1000);
- }
- debug ("read channel 14 (pt1000 adc value): %ld\n", adc_pt1000);
-
- temp1 = tsc2000_read_channel (15);
- temp2 = tsc2000_read_channel (15);
- if (abs(temp2 - temp1) < MAX_DEVIATION)
- offset = temp2;
- else {
- printf ("%s: read adc value (channel 15) exceeded max allowed "
- "deviation: %d * 0.0276 °C\n",
- __FUNCTION__, MAX_DEVIATION);
- printf ("adc value 1: %ld DIGITs\nadc value 2: %ld DIGITs\n",
- temp1, temp2);
- offset = tsc2000_read_channel (15);
- printf ("use (third read) adc value: offset = %ld DIGITs\n",
- offset);
- }
- debug ("read channel 15 (offset): %ld\n", offset);
-
- /*
- * Formula for calculating voltage drop on PT1000 resistor: u_pt1000 =
- * x_range3 * (adc_raw - offset) / 10. Formula to calculate x_range3:
- * x_range3 = (2500 * (1000000 + err_vref + err_amp3)) / (4095*6). The
- * error correction Values err_vref and err_amp3 are assumed as 0 in
- * u-boot, because this could cause only a very small error (< 1%).
- */
- u_pt1000 = (101750 * (adc_pt1000 - offset)) / 10;
- debug ("u_pt1000: %ld\n", u_pt1000);
-
- if (tsc2000_interpolate(u_pt1000, Pt1000_temp_table,
- &contact_temp) == -1) {
- printf ("%s: error interpolating PT1000 vlaue\n",
- __FUNCTION__);
- return (-1000);
- }
- debug ("contact_temp: %ld\n", contact_temp);
-
- return contact_temp;
-}
-
-
-void tsc2000_reg_init (void)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- tsc2000_write(TSC2000_REG_ADC, 0x2036);
- tsc2000_write(TSC2000_REG_REF, 0x0011);
- tsc2000_write(TSC2000_REG_DACCTL, 0x0000);
-
- CON_MUX0;
- CON_MUX1;
-
- CON_MUX1_ENABLE;
- CON_MUX2_ENABLE;
- CON_MUX3_ENABLE;
- CON_MUX4_ENABLE;
-
- CON_SEL_TEMP_V_0;
- CON_SEL_TEMP_V_1;
- CON_SEL_TEMP_V_2;
- CON_SEL_TEMP_V_3;
-
- tsc2000_set_mux(0);
- tsc2000_set_range(0);
-}
-
-
-int tsc2000_interpolate(long value, long data[][2], long *result)
-{
- int i;
-
- /* the data is sorted and the first element is upper
- * limit so we can easily check for out-of-band values
- */
- if (data[0][0] < value || data[1][0] > value)
- return -1;
-
- i = 1;
- while (data[i][0] < value)
- i++;
-
- /* To prevent overflow we have to store the intermediate
- result in 'long long'.
- */
-
- *result = data[i-1][1] +
- ((unsigned long long)(data[i][1] - data[i-1][1])
- * (unsigned long long)(value - data[i-1][0]))
- / (data[i][0] - data[i-1][0]);
-
- return 0;
-}
-
-
-void adc_wait_conversion_done(void)
-{
- while (!(tsc2000_read(TSC2000_REG_ADC) & (1 << 14)));
-}
diff --git a/board/trab/tsc2000.h b/board/trab/tsc2000.h
deleted file mode 100644
index aac9c0c77e..0000000000
--- a/board/trab/tsc2000.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Functions to access the TSC2000 controller on TRAB board (used for scanning
- * thermo sensors)
- *
- * Copyright (C) 2003 Martin Krause, TQ-Systems GmbH, martin.krause@tqs.de
- *
- * Copyright (C) 2002 DENX Software Engineering, Wolfgang Denk, 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 _TSC2000_H_
-#define _TSC2000_H_
-
-/* temperature channel multiplexer definitions */
-#define CON_MUX0 (gpio->PCCON = (gpio->PCCON & 0x0FFFFFCFF) | 0x00000100)
-#define CLR_MUX0 (gpio->PCDAT &= 0x0FFEF)
-#define SET_MUX0 (gpio->PCDAT |= 0x00010)
-
-#define CON_MUX1 (gpio->PCCON = (gpio->PCCON & 0x0FFFFF3FF) | 0x00000400)
-#define CLR_MUX1 (gpio->PCDAT &= 0x0FFDF)
-#define SET_MUX1 (gpio->PCDAT |= 0x00020)
-
-#define CON_MUX1_ENABLE (gpio->PCCON = (gpio->PCCON & 0x0FFFFCFFF) | 0x00001000)
-#define CLR_MUX1_ENABLE (gpio->PCDAT |= 0x00040)
-#define SET_MUX1_ENABLE (gpio->PCDAT &= 0x0FFBF)
-
-#define CON_MUX2_ENABLE (gpio->PCCON = (gpio->PCCON & 0x0FFFF3FFF) | 0x00004000)
-#define CLR_MUX2_ENABLE (gpio->PCDAT |= 0x00080)
-#define SET_MUX2_ENABLE (gpio->PCDAT &= 0x0FF7F)
-
-#define CON_MUX3_ENABLE (gpio->PCCON = (gpio->PCCON & 0x0FFFCFFFF) | 0x00010000)
-#define CLR_MUX3_ENABLE (gpio->PCDAT |= 0x00100)
-#define SET_MUX3_ENABLE (gpio->PCDAT &= 0x0FEFF)
-
-#define CON_MUX4_ENABLE (gpio->PCCON = (gpio->PCCON & 0x0FFF3FFFF) | 0x00040000)
-#define CLR_MUX4_ENABLE (gpio->PCDAT |= 0x00200)
-#define SET_MUX4_ENABLE (gpio->PCDAT &= 0x0FDFF)
-
-#define CON_SEL_TEMP_V_0 (gpio->PCCON = (gpio->PCCON & 0x0FFCFFFFF) | 0x00100000)
-#define CLR_SEL_TEMP_V_0 (gpio->PCDAT &= 0x0FBFF)
-#define SET_SEL_TEMP_V_0 (gpio->PCDAT |= 0x00400)
-
-#define CON_SEL_TEMP_V_1 (gpio->PCCON = (gpio->PCCON & 0x0FF3FFFFF) | 0x00400000)
-#define CLR_SEL_TEMP_V_1 (gpio->PCDAT &= 0x0F7FF)
-#define SET_SEL_TEMP_V_1 (gpio->PCDAT |= 0x00800)
-
-#define CON_SEL_TEMP_V_2 (gpio->PCCON = (gpio->PCCON & 0x0FCFFFFFF) | 0x01000000)
-#define CLR_SEL_TEMP_V_2 (gpio->PCDAT &= 0x0EFFF)
-#define SET_SEL_TEMP_V_2 (gpio->PCDAT |= 0x01000)
-
-#define CON_SEL_TEMP_V_3 (gpio->PCCON = (gpio->PCCON & 0x0F3FFFFFF) | 0x04000000)
-#define CLR_SEL_TEMP_V_3 (gpio->PCDAT &= 0x0DFFF)
-#define SET_SEL_TEMP_V_3 (gpio->PCDAT |= 0x02000)
-
-/* TSC2000 register definition */
-#define TSC2000_REG_X ((0 << 11) | (0 << 5))
-#define TSC2000_REG_Y ((0 << 11) | (1 << 5))
-#define TSC2000_REG_Z1 ((0 << 11) | (2 << 5))
-#define TSC2000_REG_Z2 ((0 << 11) | (3 << 5))
-#define TSC2000_REG_BAT1 ((0 << 11) | (5 << 5))
-#define TSC2000_REG_BAT2 ((0 << 11) | (6 << 5))
-#define TSC2000_REG_AUX1 ((0 << 11) | (7 << 5))
-#define TSC2000_REG_AUX2 ((0 << 11) | (8 << 5))
-#define TSC2000_REG_TEMP1 ((0 << 11) | (9 << 5))
-#define TSC2000_REG_TEMP2 ((0 << 11) | (0xA << 5))
-#define TSC2000_REG_DAC ((0 << 11) | (0xB << 5))
-#define TSC2000_REG_ZERO ((0 << 11) | (0x10 << 5))
-#define TSC2000_REG_ADC ((1 << 11) | (0 << 5))
-#define TSC2000_REG_DACCTL ((1 << 11) | (2 << 5))
-#define TSC2000_REG_REF ((1 << 11) | (3 << 5))
-#define TSC2000_REG_RESET ((1 << 11) | (4 << 5))
-#define TSC2000_REG_CONFIG ((1 << 11) | (5 << 5))
-
-/* bit definition of TSC2000 ADC register */
-#define TC_PSM (1 << 15)
-#define TC_STS (1 << 14)
-#define TC_AD3 (1 << 13)
-#define TC_AD2 (1 << 12)
-#define TC_AD1 (1 << 11)
-#define TC_AD0 (1 << 10)
-#define TC_RS1 (1 << 9)
-#define TC_RS0 (1 << 8)
-#define TC_AV1 (1 << 7)
-#define TC_AV0 (1 << 6)
-#define TC_CL1 (1 << 5)
-#define TC_CL0 (1 << 4)
-#define TC_PV2 (1 << 3)
-#define TC_PV1 (1 << 2)
-#define TC_PV0 (1 << 1)
-
-/* default value for TSC2000 ADC register for use with touch functions */
-#define DEFAULT_ADC (TC_PV1 | TC_AV0 | TC_AV1 | TC_RS0)
-
-#define TSC2000_DELAY_BASE 500
-#define TSC2000_NO_SENSOR -0x10000
-
-#define ERROR_BATTERY 220 /* must be adjusted, if R68 is changed on
- * TRAB */
-
-void tsc2000_write(unsigned short, unsigned short);
-unsigned short tsc2000_read (unsigned short);
-u16 tsc2000_read_channel (unsigned int);
-void tsc2000_set_mux (unsigned int);
-void tsc2000_set_range (unsigned int);
-void tsc2000_reg_init (void);
-s32 tsc2000_contact_temp (void);
-void spi_wait_transmit_done (void);
-void spi_init(void);
-int tsc2000_interpolate(long value, long data[][2], long *result);
-void adc_wait_conversion_done(void);
-
-
-static inline void SET_CS_TOUCH(void)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- gpio->PDDAT &= 0x5FF;
-}
-
-
-static inline void CLR_CS_TOUCH(void)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- gpio->PDDAT |= 0x200;
-}
-
-#endif /* _TSC2000_H_ */
diff --git a/board/trab/u-boot.lds b/board/trab/u-boot.lds
deleted file mode 100644
index e56cdd3cad..0000000000
--- a/board/trab/u-boot.lds
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/arm920t/start.o (.text)
- lib_arm/_umodsi3.o (.text)
- lib_generic/zlib.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/string.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.ppcenv)
-
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/trab/vfd.c b/board/trab/vfd.c
deleted file mode 100644
index b6798fdce7..0000000000
--- a/board/trab/vfd.c
+++ /dev/null
@@ -1,570 +0,0 @@
-/*
- * (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
- */
-
-/************************************************************************/
-/* ** DEBUG SETTINGS */
-/************************************************************************/
-
-/* #define DEBUG */
-
-/************************************************************************/
-/* ** HEADER FILES */
-/************************************************************************/
-
-#include <config.h>
-#include <common.h>
-#include <version.h>
-#include <stdarg.h>
-#include <linux/types.h>
-#include <devices.h>
-#include <s3c2400.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_VFD
-
-/************************************************************************/
-/* ** CONFIG STUFF -- should be moved to board config file */
-/************************************************************************/
-
-/************************************************************************/
-
-#ifndef PAGE_SIZE
-#define PAGE_SIZE 4096
-#endif
-
-#define ROT 0x09
-#define BLAU 0x0C
-#define VIOLETT 0X0D
-
-/* MAGIC */
-#define FRAME_BUF_SIZE ((256*4*56)/8)
-#define frame_buf_offs 4
-
-/* defines for starting Timer3 as CPLD-Clk */
-#define START3 (1 << 16)
-#define UPDATE3 (1 << 17)
-#define INVERT3 (1 << 18)
-#define RELOAD3 (1 << 19)
-
-/* CPLD-Register for controlling vfd-blank-signal */
-#define VFD_DISABLE (*(volatile uchar *)0x04038000=0x0000)
-#define VFD_ENABLE (*(volatile uchar *)0x04038000=0x0001)
-
-/* Supported VFD Types */
-#define VFD_TYPE_T119C 1 /* Noritake T119C VFD */
-#define VFD_TYPE_MN11236 2
-
-/*#define NEW_CPLD_CLK*/
-
-int vfd_board_id;
-
-/* taken from armboot/common/vfd.c */
-unsigned long adr_vfd_table[112][18][2][4][2];
-unsigned char bit_vfd_table[112][18][2][4][2];
-
-/*
- * initialize the values for the VFD-grid-control in the framebuffer
- */
-void init_grid_ctrl(void)
-{
- ulong adr, grid_cycle;
- unsigned int bit, display;
- unsigned char temp, bit_nr;
-
- /*
- * clear frame buffer (logical clear => set to "black")
- */
- memset ((void *)(gd->fb_base), 0, FRAME_BUF_SIZE);
-
- switch (gd->vfd_type) {
- case VFD_TYPE_T119C:
- for (display=0; display<4; display++) {
- for(grid_cycle=0; grid_cycle<56; grid_cycle++) {
- bit = grid_cycle * 256 * 4 +
- (grid_cycle + 200) * 4 +
- frame_buf_offs + display;
- /* wrap arround if offset (see manual S3C2400) */
- if (bit>=FRAME_BUF_SIZE*8)
- bit = bit - (FRAME_BUF_SIZE * 8);
- adr = gd->fb_base + (bit/32) * 4 + (3 - (bit%32) / 8);
- bit_nr = bit % 8;
- bit_nr = (bit_nr > 3) ? bit_nr-4 : bit_nr+4;
- temp=(*(volatile unsigned char*)(adr));
- temp |= (1<<bit_nr);
- (*(volatile unsigned char*)(adr))=temp;
-
- if(grid_cycle<55)
- bit = grid_cycle*256*4+(grid_cycle+201)*4+frame_buf_offs+display;
- else
- bit = grid_cycle*256*4+200*4+frame_buf_offs+display-4; /* grid nr. 0 */
- /* wrap arround if offset (see manual S3C2400) */
- if (bit>=FRAME_BUF_SIZE*8)
- bit = bit-(FRAME_BUF_SIZE*8);
- adr = gd->fb_base+(bit/32)*4+(3-(bit%32)/8);
- bit_nr = bit%8;
- bit_nr = (bit_nr>3)?bit_nr-4:bit_nr+4;
- temp=(*(volatile unsigned char*)(adr));
- temp |= (1<<bit_nr);
- (*(volatile unsigned char*)(adr))=temp;
- }
- }
- break;
- case VFD_TYPE_MN11236:
- for (display=0; display<4; display++) {
- for (grid_cycle=0; grid_cycle<38; grid_cycle++) {
- bit = grid_cycle * 256 * 4 +
- (253 - grid_cycle) * 4 +
- frame_buf_offs + display;
- /* wrap arround if offset (see manual S3C2400) */
- if (bit>=FRAME_BUF_SIZE*8)
- bit = bit - (FRAME_BUF_SIZE * 8);
- adr = gd->fb_base + (bit/32) * 4 + (3 - (bit%32) / 8);
- bit_nr = bit % 8;
- bit_nr = (bit_nr > 3) ? bit_nr-4 : bit_nr+4;
- temp=(*(volatile unsigned char*)(adr));
- temp |= (1<<bit_nr);
- (*(volatile unsigned char*)(adr))=temp;
-
- if(grid_cycle<37)
- bit = grid_cycle*256*4+(252-grid_cycle)*4+frame_buf_offs+display;
-
- /* wrap arround if offset (see manual S3C2400) */
- if (bit>=FRAME_BUF_SIZE*8)
- bit = bit-(FRAME_BUF_SIZE*8);
- adr = gd->fb_base+(bit/32)*4+(3-(bit%32)/8);
- bit_nr = bit%8;
- bit_nr = (bit_nr>3)?bit_nr-4:bit_nr+4;
- temp=(*(volatile unsigned char*)(adr));
- temp |= (1<<bit_nr);
- (*(volatile unsigned char*)(adr))=temp;
- }
- }
- break;
- default:
- printf ("Warning: unknown display type\n");
- break;
- }
-}
-
-/*
- *create translation table for getting easy the right position in the
- *physical framebuffer for some x/y-coordinates of the VFDs
- */
-void create_vfd_table(void)
-{
- unsigned long vfd_table[112][18][2][4][2];
- unsigned int x, y, color, display, entry, pixel;
- unsigned int x_abcdef = 0;
-
- switch (gd->vfd_type) {
- case VFD_TYPE_T119C:
- for(y=0; y<=17; y++) { /* Line */
- for(x=0; x<=111; x++) { /* Column */
- for(display=0; display <=3; display++) {
-
- /* Display 0 blue pixels */
- vfd_table[x][y][0][display][0] =
- (x==0) ? y*16+display
- : (x%4)*4+y*16+((x-1)/2)*1024+display;
- /* Display 0 red pixels */
- vfd_table[x][y][1][display][0] =
- (x==0) ? y*16+512+display
- : (x%4)*4+y*16+((x-1)/2)*1024+512+display;
- }
- }
- }
- break;
- case VFD_TYPE_MN11236:
- for(y=0; y<=17; y++) { /* Line */
- for(x=0; x<=111; x++) { /* Column */
- for(display=0; display <=3; display++) {
-
- vfd_table[x][y][0][display][0]=0;
- vfd_table[x][y][0][display][1]=0;
- vfd_table[x][y][1][display][0]=0;
- vfd_table[x][y][1][display][1]=0;
-
- switch (x%6) {
- case 0: x_abcdef=0; break; /* a -> a */
- case 1: x_abcdef=2; break; /* b -> c */
- case 2: x_abcdef=4; break; /* c -> e */
- case 3: x_abcdef=5; break; /* d -> f */
- case 4: x_abcdef=3; break; /* e -> d */
- case 5: x_abcdef=1; break; /* f -> b */
- }
-
- /* blue pixels */
- vfd_table[x][y][0][display][0] =
- (x>1) ? x_abcdef*4+((x-1)/3)*1024+y*48+display
- : x_abcdef*4+ 0+y*48+display;
- /* blue pixels */
- if (x>1 && (x-1)%3)
- vfd_table[x][y][0][display][1] = x_abcdef*4+((x-1)/3+1)*1024+y*48+display;
-
- /* red pixels */
- vfd_table[x][y][1][display][0] =
- (x>1) ? x_abcdef*4+24+((x-1)/3)*1024+y*48+display
- : x_abcdef*4+24+ 0+y*48+display;
- /* red pixels */
- if (x>1 && (x-1)%3)
- vfd_table[x][y][1][display][1] = x_abcdef*4+24+((x-1)/3+1)*1024+y*48+display;
- }
- }
- }
- break;
- default:
- /* do nothing */
- return;
- }
-
- /*
- * Create table with entries for physical byte adresses and
- * bit-number within the byte
- * from table with bit-numbers within the total framebuffer
- */
- for(y=0;y<18;y++) {
- for(x=0;x<112;x++) {
- for(color=0;color<2;color++) {
- for(display=0;display<4;display++) {
- for(entry=0;entry<2;entry++) {
- unsigned long adr = gd->fb_base;
- unsigned int bit_nr = 0;
-
- pixel = vfd_table[x][y][color][display][entry] + frame_buf_offs;
- /*
- * wrap arround if offset
- * (see manual S3C2400)
- */
- if (pixel>=FRAME_BUF_SIZE*8)
- pixel = pixel-(FRAME_BUF_SIZE*8);
- adr = gd->fb_base+(pixel/32)*4+(3-(pixel%32)/8);
- bit_nr = pixel%8;
- bit_nr = (bit_nr>3)?bit_nr-4:bit_nr+4;
-
- adr_vfd_table[x][y][color][display][entry] = adr;
- bit_vfd_table[x][y][color][display][entry] = bit_nr;
- }
- }
- }
- }
- }
-}
-
-/*
- * Set/clear pixel of the VFDs
- */
-void set_vfd_pixel(unsigned char x, unsigned char y,
- unsigned char color, unsigned char display,
- unsigned char value)
-{
- ulong adr;
- unsigned char bit_nr, temp;
-
- if (! gd->vfd_type) {
- /* Unknown type. */
- return;
- }
-
- /* Pixel-Eintrag Nr. 1 */
- adr = adr_vfd_table[x][y][color][display][0];
- /* Pixel-Eintrag Nr. 1 */
- bit_nr = bit_vfd_table[x][y][color][display][0];
- temp=(*(volatile unsigned char*)(adr));
-
- if (value)
- temp |= (1<<bit_nr);
- else
- temp &= ~(1<<bit_nr);
-
- (*(volatile unsigned char*)(adr))=temp;
-}
-
-/*
- * transfer image from BMP-File
- */
-void transfer_pic(int display, unsigned char *adr, int height, int width)
-{
- int x, y;
- unsigned char temp;
-
- for (; height > 0; height -= 18)
- {
- if (height > 18)
- y = 18;
- else
- y = height;
- for (; y > 0; y--)
- {
- for (x = 0; x < width; x += 2)
- {
- temp = *adr++;
- set_vfd_pixel(x, y-1, 0, display, 0);
- set_vfd_pixel(x, y-1, 1, display, 0);
- if ((temp >> 4) == BLAU)
- set_vfd_pixel(x, y-1, 0, display, 1);
- else if ((temp >> 4) == ROT)
- set_vfd_pixel(x, y-1, 1, display, 1);
- else if ((temp >> 4) == VIOLETT)
- {
- set_vfd_pixel(x, y-1, 0, display, 1);
- set_vfd_pixel(x, y-1, 1, display, 1);
- }
- set_vfd_pixel(x+1, y-1, 0, display, 0);
- set_vfd_pixel(x+1, y-1, 1, display, 0);
- if ((temp & 0x0F) == BLAU)
- set_vfd_pixel(x+1, y-1, 0, display, 1);
- else if ((temp & 0x0F) == ROT)
- set_vfd_pixel(x+1, y-1, 1, display, 1);
- else if ((temp & 0x0F) == VIOLETT)
- {
- set_vfd_pixel(x+1, y-1, 0, display, 1);
- set_vfd_pixel(x+1, y-1, 1, display, 1);
- }
- }
- }
- if (display > 0)
- display--;
- else
- display = 3;
- }
-}
-
-/*
- * This function initializes VFD clock that is needed for the CPLD that
- * manages the keyboard.
- */
-int vfd_init_clocks (void)
-{
- int i;
-
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
- S3C24X0_TIMERS * const timers = S3C24X0_GetBase_TIMERS();
- S3C24X0_LCD * const lcd = S3C24X0_GetBase_LCD();
-
- /* try to determine display type from the value
- * defined by pull-ups
- */
- gpio->PCUP = (gpio->PCUP & 0xFFF0); /* activate GPC0...GPC3 pullups */
- gpio->PCCON = (gpio->PCCON & 0xFFFFFF00); /* configure GPC0...GPC3 as inputs */
- /* allow signals to settle */
- for (i=0; i<10000; i++) /* udelay isn't working yet at this point! */
- __asm("NOP");
- vfd_board_id = (~gpio->PCDAT) & 0x000F; /* read GPC0...GPC3 port pins */
-
- VFD_DISABLE; /* activate blank for the vfd */
-
-#define NEW_CPLD_CLK
-
-#ifdef NEW_CPLD_CLK
- if (vfd_board_id) {
- /* If new board revision, then use PWM 3 as cpld-clock */
- /* Enable 500 Hz timer for fill level sensor to operate properly */
- /* Configure TOUT3 as functional pin, disable pull-up */
- gpio->PDCON &= ~0x30000;
- gpio->PDCON |= 0x20000;
- gpio->PDUP |= (1 << 8);
-
- /* Configure the prescaler */
- timers->TCFG0 &= ~0xff00;
- timers->TCFG0 |= 0x0f00;
-
- /* Select MUX input (divider) for timer3 (1/16) */
- timers->TCFG1 &= ~0xf000;
- timers->TCFG1 |= 0x3000;
-
- /* Enable autoreload and set the counter and compare
- * registers to values for the 500 Hz clock
- * (for a given prescaler (15) and divider (16)):
- * counter = (66000000 / 500) >> 9;
- */
- timers->ch[3].TCNTB = 0x101;
- timers->ch[3].TCMPB = 0x101 / 2;
-
- /* Start timer */
- timers->TCON = (timers->TCON | UPDATE3 | RELOAD3) & ~INVERT3;
- timers->TCON = (timers->TCON | START3) & ~UPDATE3;
- }
-#endif
- /* If old board revision, then use vm-signal as cpld-clock */
- lcd->LCDCON2 = 0x00FFC000;
- lcd->LCDCON3 = 0x0007FF00;
- lcd->LCDCON4 = 0x00000000;
- lcd->LCDCON5 = 0x00000400;
- lcd->LCDCON1 = 0x00000B75;
- /* VM (GPD1) is used as clock for the CPLD */
- gpio->PDCON = (gpio->PDCON & 0xFFFFFFF3) | 0x00000008;
-
- return 0;
-}
-
-/*
- * initialize LCD-Controller of the S3C2400 for using VFDs
- *
- * VFD detection depends on the board revision:
- * starting from Rev. 200 a type code can be read from the data pins,
- * driven by some pull-up resistors; all earlier systems must be
- * manually configured. The type is set in the "vfd_type" environment
- * variable.
- */
-int drv_vfd_init(void)
-{
- S3C24X0_LCD * const lcd = S3C24X0_GetBase_LCD();
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
- char *tmp;
- ulong palette;
- static int vfd_init_done = 0;
- int vfd_inv_data = 0;
-
- if (vfd_init_done != 0)
- return (0);
- vfd_init_done = 1;
-
- debug("Detecting Revison of WA4-VFD: ID=0x%X\n", vfd_board_id);
-
- switch (vfd_board_id) {
- case 0: /* board revision < Rev.200 */
- if ((tmp = getenv ("vfd_type")) == NULL) {
- break;
- }
- if (strcmp(tmp, "T119C") == 0) {
- gd->vfd_type = VFD_TYPE_T119C;
- } else if (strcmp(tmp, "MN11236") == 0) {
- gd->vfd_type = VFD_TYPE_MN11236;
- } else {
- /* cannot use printf for a warning here */
- gd->vfd_type = 0; /* unknown */
- }
-
- break;
- default: /* default to MN11236, data inverted */
- gd->vfd_type = VFD_TYPE_MN11236;
- vfd_inv_data = 1;
- setenv ("vfd_type", "MN11236");
- }
- debug ("VFD type: %s%s\n",
- (gd->vfd_type == VFD_TYPE_T119C) ? "T119C" :
- (gd->vfd_type == VFD_TYPE_MN11236) ? "MN11236" :
- "unknown",
- vfd_inv_data ? ", inverted data" : "");
-
- gd->fb_base = gd->fb_base;
- create_vfd_table();
- init_grid_ctrl();
-
- for (palette=0; palette < 16; palette++)
- (*(volatile unsigned int*)(PALETTE+(palette*4)))=palette;
- for (palette=16; palette < 256; palette++)
- (*(volatile unsigned int*)(PALETTE+(palette*4)))=0x00;
-
- /*
- * Hinweis: Der Framebuffer ist um genau ein Nibble verschoben
- * Das erste angezeigte Pixel wird aus dem zweiten Nibble geholt
- * das letzte angezeigte Pixel wird aus dem ersten Nibble geholt
- * (wrap around)
- * see manual S3C2400
- */
- /* Stopp LCD-Controller */
- lcd->LCDCON1 = 0x00000000;
- /* frame buffer startadr */
- lcd->LCDSADDR1 = gd->fb_base >> 1;
- /* frame buffer endadr */
- lcd->LCDSADDR2 = (gd->fb_base + FRAME_BUF_SIZE) >> 1;
- lcd->LCDSADDR3 = ((256/4));
- lcd->LCDCON2 = 0x000DC000;
- if(gd->vfd_type == VFD_TYPE_MN11236)
- lcd->LCDCON2 = 37 << 14; /* MN11236: 38 lines */
- else
- lcd->LCDCON2 = 55 << 14; /* T119C: 56 lines */
- lcd->LCDCON3 = 0x0051000A;
- lcd->LCDCON4 = 0x00000001;
- if (gd->vfd_type && vfd_inv_data)
- lcd->LCDCON5 = 0x000004C0;
- else
- lcd->LCDCON5 = 0x00000440;
-
- /* Port pins as LCD output */
- gpio->PCCON = (gpio->PCCON & 0xFFFFFF00)| 0x000000AA;
- gpio->PDCON = (gpio->PDCON & 0xFFFFFF03)| 0x000000A8;
-
- /* Synchronize VFD enable with LCD controller to avoid flicker */
- lcd->LCDCON1 = 0x00000B75; /* Start LCD-Controller */
- while((lcd->LCDCON5 & 0x180000)!=0x100000); /* Wait for end of VSYNC */
- while((lcd->LCDCON5 & 0x060000)!=0x040000); /* Wait for next HSYNC */
- while((lcd->LCDCON5 & 0x060000)==0x040000);
- while((lcd->LCDCON5 & 0x060000)!=0x000000);
- if(gd->vfd_type)
- VFD_ENABLE;
-
- debug ("LCDSADDR1: %lX\n", lcd->LCDSADDR1);
- debug ("LCDSADDR2: %lX\n", lcd->LCDSADDR2);
- debug ("LCDSADDR3: %lX\n", lcd->LCDSADDR3);
-
- return 0;
-}
-
-/*
- * Disable VFD: should be run before resetting the system:
- * disable VM, enable pull-up
- */
-void disable_vfd (void)
-{
- S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-
- VFD_DISABLE;
- gpio->PDCON &= ~0xC;
- gpio->PDUP &= ~0x2;
-}
-
-/************************************************************************/
-/* ** ROM capable initialization part - needed to reserve FB memory */
-/************************************************************************/
-
-/*
- * This is called early in the system initialization to grab memory
- * for the VFD controller.
- *
- * Note that this is running from ROM, so no write access to global data.
- */
-ulong vfd_setmem (ulong addr)
-{
- ulong size;
-
- /* Round up to nearest full page */
- size = (FRAME_BUF_SIZE + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1);
-
- debug ("Reserving %ldk for VFD Framebuffer at: %08lx\n", size>>10, addr);
-
- return (size);
-}
-
-/*
- * Calculate fb size for VIDEOLFB_ATAG. Size returned contains fb,
- * descriptors and palette areas.
- */
-ulong calc_fbsize (void)
-{
- return FRAME_BUF_SIZE;
-}
-
-#endif /* CONFIG_VFD */
diff --git a/board/utx8245/Makefile b/board/utx8245/Makefile
deleted file mode 100644
index 7ad768bc43..0000000000
--- a/board/utx8245/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2002
-# Gregory E. Allen, gallen@arlut.utexas.edu
-# Matthew E. Karger, karger@arlut.utexas.edu
-# Applied Research Laboratories, The University of Texas at Austin
-#
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/utx8245/config.mk b/board/utx8245/config.mk
deleted file mode 100644
index a33faa7424..0000000000
--- a/board/utx8245/config.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# (C) Copyright 2001
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2002
-# Gregory E. Allen, gallen@arlut.utexas.edu
-# Matthew E. Karger, karger@arlut.utexas.edu
-# Applied Research Laboratories, The University of Texas at Austin
-#
-# 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
-#
-
-#
-# UTX8245 boards
-#
-TEXT_BASE = 0xFFF00000
-PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
diff --git a/board/utx8245/flash.c b/board/utx8245/flash.c
deleted file mode 100644
index 3271827081..0000000000
--- a/board/utx8245/flash.c
+++ /dev/null
@@ -1,560 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Gregory E. Allen, gallen@arlut.utexas.edu
- * Matthew E. Karger, karger@arlut.utexas.edu
- * Applied Research Laboratories, The University of Texas at Austin
- *
- * 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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-
-#define ROM_CS0_START 0xFF800000
-#define ROM_CS1_START 0xFF000000
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-#define FLASH_BANK_SIZE ((uint)(16 * 1024 * 1024)) /* max 16Mbyte */
-#define MAIN_SECT_SIZE 0x10000
-#define SECT_SIZE_32KB 0x8000
-#define SECT_SIZE_8KB 0x2000
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-static int write_word (flash_info_t * info, ulong dest, ulong data);
-#if 0
-static void write_via_fpu (vu_long * addr, ulong * data);
-#endif
-static __inline__ unsigned long get_msr (void);
-static __inline__ void set_msr (unsigned long msr);
-
-/*flash command address offsets*/
-#define ADDR0 (0x555)
-#define ADDR1 (0xAAA)
-#define ADDR3 (0x001)
-
-#define FLASH_WORD_SIZE unsigned char
-
-/*---------------------------------------------------------------------*/
-/*#define DEBUG_FLASH 1 */
-
-/*---------------------------------------------------------------------*/
-
-unsigned long flash_init (void)
-{
- int i; /* flash bank counter */
- int j; /* flash device sector counter */
- int k; /* flash size calculation loop counter */
- int N; /* pow(2,N) is flash size, but we don't have <math.h> */
- ulong total_size = 0, device_size = 1;
- unsigned char manuf_id, device_id;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- vu_char *addr = (vu_char *) (CFG_FLASH_BASE + i * FLASH_BANK_SIZE);
-
- addr[0x555] = 0xAA; /* get manuf/device info command */
- addr[0x2AA] = 0x55; /* 3-cycle command */
- addr[0x555] = 0x90;
-
- manuf_id = addr[0]; /* read back manuf/device info */
- device_id = addr[1];
-
- addr[0x55] = 0x98; /* CFI command */
- N = addr[0x27]; /* read back device_size = pow(2,N) */
-
- for (k = 0; k < N; k++) /* calculate device_size = pow(2,N) */
- device_size *= 2;
-
- flash_info[i].size = device_size;
- flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
-
-#if defined DEBUG_FLASH
- printf ("manuf_id = %x, device_id = %x\n", manuf_id, device_id);
-#endif
- /* find out what kind of flash we are using */
- if ((manuf_id == (uchar) (AMD_MANUFACT))
- && (device_id == AMD_ID_LV033C)) {
- flash_info[i].flash_id =
- ((FLASH_MAN_AMD & FLASH_VENDMASK) << 16) |
- (FLASH_AM033C & FLASH_TYPEMASK);
-
- /* set individual sector start addresses */
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] =
- (CFG_FLASH_BASE + i * FLASH_BANK_SIZE +
- j * MAIN_SECT_SIZE);
- }
- }
-
- else if ((manuf_id == (uchar) (AMD_MANUFACT)) &&
- (device_id == AMD_ID_LV116DT)) {
- flash_info[i].flash_id =
- ((FLASH_MAN_AMD & FLASH_VENDMASK) << 16) |
- (FLASH_AM160T & FLASH_TYPEMASK);
-
- /* set individual sector start addresses */
- for (j = 0; j < flash_info[i].sector_count; j++) {
- flash_info[i].start[j] =
- (CFG_FLASH_BASE + i * FLASH_BANK_SIZE +
- j * MAIN_SECT_SIZE);
-
- if (j < (CFG_MAX_FLASH_SECT - 3)) {
- flash_info[i].start[j] =
- (CFG_FLASH_BASE + i * FLASH_BANK_SIZE +
- j * MAIN_SECT_SIZE);
- } else if (j == (CFG_MAX_FLASH_SECT - 3)) {
- flash_info[i].start[j] =
- (flash_info[i].start[j - 1] + SECT_SIZE_32KB);
-
- } else {
- flash_info[i].start[j] =
- (flash_info[i].start[j - 1] + SECT_SIZE_8KB);
- }
- }
- }
-
- else {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- addr[0] = 0xFF;
- goto Done;
- }
-
-#if defined DEBUG_FLASH
- printf ("flash_id = 0x%08lX\n", flash_info[i].flash_id);
-#endif
-
- addr[0] = 0xFF;
-
- memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
-
- total_size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- flash_protect (FLAG_PROTECT_SET, CFG_MONITOR_BASE,
- CFG_MONITOR_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-#endif
-
-#if (CFG_ENV_IS_IN_FLASH == 1) && defined(CFG_ENV_ADDR)
- flash_protect (FLAG_PROTECT_SET, CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-#endif
-
- Done:
- return total_size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- static const char unk[] = "Unknown";
- const char *mfct = unk, *type = unk;
- unsigned int i;
-
- if (info->flash_id != FLASH_UNKNOWN) {
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD:
- mfct = "AMD";
- break;
- case FLASH_MAN_FUJ:
- mfct = "FUJITSU";
- break;
- case FLASH_MAN_STM:
- mfct = "STM";
- break;
- case FLASH_MAN_SST:
- mfct = "SST";
- break;
- case FLASH_MAN_BM:
- mfct = "Bright Microelectonics";
- break;
- case FLASH_MAN_INTEL:
- mfct = "Intel";
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM033C:
- type = "AM29LV033C (32 Mbit, uniform sector size)";
- break;
- case FLASH_AM160T:
- type = "AM29LV160T (16 Mbit, top boot sector)";
- break;
- case FLASH_AM040:
- type = "AM29F040B (512K * 8, uniform sector size)";
- break;
- case FLASH_AM400B:
- type = "AM29LV400B (4 Mbit, bottom boot sect)";
- break;
- case FLASH_AM400T:
- type = "AM29LV400T (4 Mbit, top boot sector)";
- break;
- case FLASH_AM800B:
- type = "AM29LV800B (8 Mbit, bottom boot sect)";
- break;
- case FLASH_AM800T:
- type = "AM29LV800T (8 Mbit, top boot sector)";
- break;
- case FLASH_AM320B:
- type = "AM29LV320B (32 Mbit, bottom boot sect)";
- break;
- case FLASH_AM320T:
- type = "AM29LV320T (32 Mbit, top boot sector)";
- break;
- case FLASH_STM800AB:
- type = "M29W800AB (8 Mbit, bottom boot sect)";
- break;
- case FLASH_SST800A:
- type = "SST39LF/VF800 (8 Mbit, uniform sector size)";
- break;
- case FLASH_SST160A:
- type = "SST39LF/VF160 (16 Mbit, uniform sector size)";
- break;
- }
- }
-
- printf ("\n Brand: %s Type: %s\n"
- " Size: %lu KB in %d Sectors\n",
- mfct, type, info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
-
- for (i = 0; i < info->sector_count; i++) {
- unsigned long size;
- unsigned int erased;
- unsigned long *flash = (unsigned long *) info->start[i];
-
- /*
- * Check if whole sector is erased
- */
- size = (i != (info->sector_count - 1)) ?
- (info->start[i + 1] - info->start[i]) >> 2 :
- (info->start[0] + info->size - info->start[i]) >> 2;
-
- for (flash = (unsigned long *) info->start[i], erased = 1;
- (flash != (unsigned long *) info->start[i] + size) && erased;
- flash++)
- erased = *flash == ~0x0UL;
-
- printf ("%s %08lX %s %s",
- (i % 5) ? "" : "\n ",
- info->start[i],
- erased ? "E" : " ", info->protect[i] ? "RO" : " ");
- }
-
- puts ("\n");
- return;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *) (info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
- unsigned char sh8b;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > (FLASH_MAN_STM | FLASH_AMD_COMP))) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Check the ROM CS */
- if ((info->start[0] >= ROM_CS1_START)
- && (info->start[0] < ROM_CS0_START))
- sh8b = 3;
- else
- sh8b = 0;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00800080;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (FLASH_WORD_SIZE *) (info->start[0] + ((info->
- start[sect] -
- info->
- start[0]) <<
- sh8b));
-
- if (info->flash_id & FLASH_MAN_SST) {
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00800080;
- addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
- addr[0] = (FLASH_WORD_SIZE) 0x00500050; /* block erase */
- udelay (30000); /* wait 30 ms */
- } else {
- addr[0] = (FLASH_WORD_SIZE) 0x00300030; /* sector erase */
- }
-
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (FLASH_WORD_SIZE *) (info->start[0] + ((info->start[l_sect] -
- info->
- start[0]) << sh8b));
- while ((addr[0] & (FLASH_WORD_SIZE) 0x00800080) !=
- (FLASH_WORD_SIZE) 0x00800080) {
- if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- serial_putc ('.');
- last = now;
- }
- }
-
- DONE:
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *) info->start[0];
- addr[0] = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < 4 && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i = 0; i < 4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word (info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < 4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_word (info, wp, data));
-}
-
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *) info->start[0];
- volatile FLASH_WORD_SIZE *dest2;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *) & data;
- ulong start;
- int flag;
- int i;
- unsigned char sh8b;
-
- /* Check the ROM CS */
- if ((info->start[0] >= ROM_CS1_START)
- && (info->start[0] < ROM_CS0_START))
- sh8b = 3;
- else
- sh8b = 0;
-
- dest2 = (FLASH_WORD_SIZE *) (((dest - info->start[0]) << sh8b) +
- info->start[0]);
-
- /* Check if Flash is (sufficiently) erased */
- if ((*dest2 & (FLASH_WORD_SIZE) data) != (FLASH_WORD_SIZE) data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- for (i = 0; i < 4 / sizeof (FLASH_WORD_SIZE); i++) {
- addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[ADDR1 << sh8b] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i << sh8b] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i << sh8b] & (FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE) 0x00800080)) {
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
-#if 0
-static void write_via_fpu (vu_long * addr, ulong * data)
-{
- __asm__ __volatile__ ("lfd 1, 0(%0)"::"r" (data));
- __asm__ __volatile__ ("stfd 1, 0(%0)"::"r" (addr));
-}
-#endif
-
-/*-----------------------------------------------------------------------
- */
-static __inline__ unsigned long get_msr (void)
-{
- unsigned long msr;
-
- __asm__ __volatile__ ("mfmsr %0":"=r" (msr):);
-
- return msr;
-}
-
-static __inline__ void set_msr (unsigned long msr)
-{
- __asm__ __volatile__ ("mtmsr %0"::"r" (msr));
-}
diff --git a/board/utx8245/u-boot.lds b/board/utx8245/u-boot.lds
deleted file mode 100644
index 45f3018bb9..0000000000
--- a/board/utx8245/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Gregory E. Allen, gallen@arlut.utexas.edu
- * Matthew E. Karger, karger@arlut.utexas.edu
- * Applied Research Laboratories, The University of Texas at Austin
- *
- * 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/mpc824x/start.o (.text)
- lib_ppc/board.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = DEFINED(env_offset) ? env_offset : .;
- common/environment.o (.text)
-
- *(.text)
-
- *(.fixup)
- *(.got1)
- . = ALIGN(16);
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/utx8245/utx8245.c b/board/utx8245/utx8245.c
deleted file mode 100644
index 834fd84079..0000000000
--- a/board/utx8245/utx8245.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * (C) Copyright 2001
- * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
- *
- * (C) Copyright 2002
- * Gregory E. Allen, gallen@arlut.utexas.edu
- * Matthew E. Karger, karger@arlut.utexas.edu
- * Applied Research Laboratories, The University of Texas at Austin
- *
- * 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 <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <asm/mmu.h>
-#include <pci.h>
-
-#define SAVE_SZ 32
-
-
-int checkboard(void)
-{
- ulong busfreq = get_bus_freq(0);
- char buf[32];
-
- printf("Board: UTX8245 Local Bus at %s MHz\n", strmhz(buf, busfreq));
- return 0;
-}
-
-
-long int initdram(int board_type)
-{
- long size;
- long new_bank0_end;
- long new_bank1_end;
- long mear1;
- long emear1;
-
- size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE);
-
- new_bank0_end = size/2 - 1;
- new_bank1_end = size - 1;
- mear1 = mpc824x_mpc107_getreg(MEAR1);
- emear1 = mpc824x_mpc107_getreg(EMEAR1);
-
- mear1 = (mear1 & 0xFFFF0000) |
- ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) |
- ((new_bank1_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT << 8);
- emear1 = (emear1 & 0xFFFF0000) |
- ((new_bank0_end & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) |
- ((new_bank1_end & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT << 8);
-
- mpc824x_mpc107_setreg(MEAR1, mear1);
- mpc824x_mpc107_setreg(EMEAR1, emear1);
-
- return (size);
-}
-
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-
-static struct pci_config_table pci_utx8245_config_table[] = {
-#ifndef CONFIG_PCI_PNP
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0C, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
- PCI_ENET0_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0B, PCI_ANY_ID,
- pci_cfgfunc_config_device, { PCI_FIREWIRE_IOADDR,
- PCI_FIREWIRE_MEMADDR,
- PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER }},
-#endif /*CONFIG_PCI_PNP*/
- { }
-};
-
-
-static void pci_utx8245_fixup_irq(struct pci_controller *hose, pci_dev_t dev)
-{
- if (PCI_DEV(dev) == 11)
- /* assign serial interrupt line 9 (int25) to FireWire */
- pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, 25);
-
- else if (PCI_DEV(dev) == 12)
- /* assign serial interrupt line 8 (int24) to Ethernet */
- pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, 24);
-
- else if (PCI_DEV(dev) == 14)
- /* assign serial interrupt line 0 (int16) to PMC slot 0 */
- pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, 16);
-
- else if (PCI_DEV(dev) == 15)
- /* assign serial interrupt line 1 (int17) to PMC slot 1 */
- pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, 17);
-}
-
-static struct pci_controller utx8245_hose = {
-#ifndef CONFIG_PCI_PNP
- config_table: pci_utx8245_config_table,
- fixup_irq: pci_utx8245_fixup_irq,
- write_byte: pci_hose_write_config_byte
-#endif /*CONFIG_PCI_PNP*/
-};
-
-void pci_init_board (void)
-{
- pci_mpc824x_init(&utx8245_hose);
-
- icache_enable();
-}
diff --git a/board/v37/Makefile b/board/v37/Makefile
deleted file mode 100644
index 109cec2640..0000000000
--- a/board/v37/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/v37/config.mk b/board/v37/config.mk
deleted file mode 100644
index 50cac972e1..0000000000
--- a/board/v37/config.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# (C) Copyright 2003
-# 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
-#
-
-#
-# Marel V37 boards
-#
-TEXT_BASE = 0x40000000
diff --git a/board/v37/flash.c b/board/v37/flash.c
deleted file mode 100644
index 6a319721b2..0000000000
--- a/board/v37/flash.c
+++ /dev/null
@@ -1,559 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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
- */
-
-/*
- * Yoo. Jonghoon, IPone, yooth@ipone.co.kr
- * U-Boot port on RPXlite board
- *
- * Some of flash control words are modified. (from 2x16bit device
- * to 4x8bit device)
- * RPXLite board I tested has only 4 AM29LV800BB devices. Other devices
- * are not tested.
- *
- * (?) Does an RPXLite board which
- * does not use AM29LV800 flash memory exist ?
- * I don't know...
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size ( short manu, short dev_id, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info, int two_chips);
-static void flash_get_id_word( void *ptr, short *ptr_manuf, short *ptr_dev_id);
-static void flash_get_id_long( void *ptr, short *ptr_manuf, short *ptr_dev_id);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- short manu, dev_id;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Do sizing to get full correct info */
-
- flash_get_id_word((void*)CFG_FLASH_BASE0,&manu,&dev_id);
-
- size_b0 = flash_get_size(manu, dev_id, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE0, &flash_info[0],0);
-
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (0 - size_b0);
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE0
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
- flash_get_id_long((void*)CFG_FLASH_BASE1,&manu,&dev_id);
-
- size_b1 = 2 * flash_get_size(manu, dev_id, &flash_info[1]);
-
- flash_get_offsets(CFG_FLASH_BASE1, &flash_info[1],1);
-
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (0 - size_b1);
-
- flash_info[0].size = size_b0;
- flash_info[1].size = size_b1;
-
- return (size_b0+size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info, int two_chips)
-{
- int i, addr_shift;
- vu_short *addr = (vu_short*)base;
-
- addr[0x555] = 0x00AA ;
- addr[0xAAA] = 0x0055 ;
- addr[0x555] = 0x0090 ;
-
- addr_shift = (two_chips ? 2 : 1 );
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + (0x00000000<<addr_shift);
- info->start[1] = base + (0x00002000<<addr_shift);
- info->start[2] = base + (0x00003000<<addr_shift);
- info->start[3] = base + (0x00004000<<addr_shift);
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + ((i-3) * (0x00008000<<addr_shift)) ;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - (0x00002000<<addr_shift);
- info->start[i--] = base + info->size - (0x00003000<<addr_shift);
- info->start[i--] = base + info->size - (0x00004000<<addr_shift);
- for (; i >= 0; i--) {
- info->start[i] = base + i * (0x00008000<<addr_shift);
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (vu_short *)(info->start[i]);
- info->protect[i] = addr[1<<addr_shift] & 1 ;
- }
-
- addr = (vu_short *)info->start[0];
- *addr = 0xF0F0; /* reset bank */
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_TOSH: printf ("TOSHIBA "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static void flash_get_id_word( void *ptr, short *ptr_manuf, short *ptr_dev_id)
-{
- vu_short *addr = (vu_short*)ptr;
-
- addr[0x555] = 0x00AA ;
- addr[0xAAA] = 0x0055 ;
- addr[0x555] = 0x0090 ;
-
- *ptr_manuf = addr[0];
- *ptr_dev_id = addr[1];
-
- addr[0] = 0xf0f0; /* return to normal */
-}
-
-static void flash_get_id_long( void *ptr, short *ptr_manuf, short *ptr_dev_id)
-{
- vu_short *addr = (vu_short*)ptr;
- vu_short *addr1, *addr2, *addr3;
-
- addr1 = (vu_short*) ( ((int)ptr) + (0x5555<<2) );
- addr2 = (vu_short*) ( ((int)ptr) + (0x2AAA<<2) );
- addr3 = (vu_short*) ( ((int)ptr) + (0x5555<<2) );
-
- *addr1 = 0xAAAA;
- *addr2 = 0x5555;
- *addr3 = 0x9090;
-
- *ptr_manuf = addr[0];
- *ptr_dev_id = addr[2];
-
- addr[0] = 0xf0f0; /* return to normal */
-}
-
-static ulong flash_get_size ( short manu, short dev_id, flash_info_t *info)
-{
- switch (manu) {
- case ((short)AMD_MANUFACT):
- info->flash_id = FLASH_MAN_AMD;
- break;
- case ((short)FUJ_MANUFACT):
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case ((short)TOSH_MANUFACT):
- info->flash_id = FLASH_MAN_TOSH;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
-
- switch (dev_id) {
- case ((short)TOSH_ID_FVT160):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 1 MB */
-
- case ((short)TOSH_ID_FVB160):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 1 MB */
-
- case ((short)AMD_ID_LV400T):
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case ((short)AMD_ID_LV400B):
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case ((short)AMD_ID_LV800T):
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case ((short)AMD_ID_LV800B):
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00400000; /*%%% Size doubled by yooth */
- break; /* => 4 MB */
-
- case ((short)AMD_ID_LV160T):
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 4 MB */
-
- case ((short)AMD_ID_LV160B):
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00200000;
- break; /* => 4 MB */
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- return(info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_short *addr = (vu_short*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x555] = (vu_short)0xAAAAAAAA;
- addr[0xAAA] = (vu_short)0x55555555;
- addr[0x555] = (vu_short)0x80808080;
- addr[0x555] = (vu_short)0xAAAAAAAA;
- addr[0xAAA] = (vu_short)0x55555555;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_short *)(info->start[sect]) ;
- addr[0] = (vu_short)0x30303030 ;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_short *)(info->start[l_sect]);
- while ((addr[0] & 0x8080) != 0x8080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (vu_short *)info->start[0];
- addr[0] = (vu_short)0xF0F0F0F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_short *addr = (vu_short *)(info->start[0]);
- vu_short sdata;
-
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
- /* First write upper 16 bits */
- sdata = (short)(data>>16);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x555] = 0xAAAA;
- addr[0xAAA] = 0x5555;
- addr[0x555] = 0xA0A0;
-
- *((vu_short *)dest) = sdata;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_short *)dest) & 0x8080) != (sdata & 0x8080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
-
- /* Now write lower 16 bits */
- sdata = (short)(data&0xffff);
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x555] = 0xAAAA;
- addr[0xAAA] = 0x5555;
- addr[0x555] = 0xA0A0;
-
- *((vu_short *)dest + 1) = sdata;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_short *)dest + 1) & 0x8080) != (sdata & 0x8080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/v37/u-boot.lds b/board/v37/u-boot.lds
deleted file mode 100644
index f9722dbb6b..0000000000
--- a/board/v37/u-boot.lds
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- cpu/mpc8xx/traps.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
- lib_ppc/cache.o (.text)
- lib_ppc/time.o (.text)
-
-/*
- . = env_offset;
-*/
- common/environment.o (.ppcenv)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/v37/v37.c b/board/v37/v37.c
deleted file mode 100644
index 1ef879d5f1..0000000000
--- a/board/v37/v37.c
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * (C) Copyright 2003
- * 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
- */
-
-/*
- * Yoo. Jonghoon, IPone, yooth@ipone.co.kr
- * U-Boot port on RPXlite board
- *
- * DRAM related UPMA register values are modified.
- * See RPXLite engineering note : 50MHz/60ns - UPM RAM WORDS
- */
-
-#include <common.h>
-#include "mpc8xx.h"
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (void);
-
-/* ------------------------------------------------------------------------- */
-
-#define MBYTE (1024*1024)
-#define DRAM_DELAY 0x00000379 /* DRAM delay count */
-#define _NOT_USED_ 0xFFFFCC25
-
-const uint sdram_table[] =
-{
- /* single read. (offset 0 in upm RAM) */
- 0x1F07D004, 0xEEAEE004, 0x11ADD004, 0xEFBBA000,
- 0x1FF75447, 0x1FF77C34, 0xEFEABC34, 0x1FB57C35,
-
- /* burst read. (Offset 8 in upm RAM) */
- 0x1F07D004, 0xEEAEE004, 0x00ADC004, 0x00AFC000,
- 0x00AFC000, 0x01AFC000, 0x0FBB8000, 0x1FF75447,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
- /* single write. (Offset 0x18 in upm RAM) */
- 0x1F27D004, 0xEEAEA000, 0x01B90004, 0x1FF75447,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
- /* burst write. (Offset 0x20 in upm RAM) */
- 0x1F07D004, 0xEEAEA000, 0x00AD4000, 0x00AFC000,
- 0x00AFC000, 0x01BB8004, 0x1FF75447, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
- /* Refresh cycle, offset 0x30 */
- 0x1FF5DC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
- 0xFFFFFC84, 0xFFFFFC07, 0xFFFFFFFF, 0xFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
- /* Exception, 0ffset 0x3C */
- 0x7FFFFC07, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-};
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- * Return 1 for now.
- *
- */
-
-int checkboard (void)
-{
- printf("Marel V37\n") ;
- return (0) ;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long temp;
- volatile int delay_cnt;
- long int ramsize;
-
- ramsize = dram_size();
-
- /* Refresh clock prescalar */
- memctl->memc_mptpr = 0x400 ;
-
- if( ramsize == 32*MBYTE )
- temp = 0xd0904110;
- else /* 16MB */
- temp = 0xd0802110;
-
- memctl->memc_mbmr = temp;
-
- upmconfig(UPMB, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
-
- /* Map controller banks 2 to the SDRAM bank */
- memctl->memc_or2 = 0xA00 | (0 - ramsize);
- memctl->memc_br2 = 0xC1;
-
- memctl->memc_mbmr = temp | 0x08;
- memctl->memc_mcr = 0x80804130;
-
- delay_cnt = 0;
- while( delay_cnt++ < DRAM_DELAY )
- ;
-
- /* Run MRS command in location 5-8 of UPMB */
-
- memctl->memc_mbmr = temp | 0x04;
- memctl->memc_mar = 0x88;
-
- memctl->memc_mcr = 0x80804105;
-
- delay_cnt = 0;
- while( delay_cnt++ < DRAM_DELAY )
- ;
-
-#ifdef CONFIG_CAN_DRIVER
- /* Initialize OR3 / BR3 */
- memctl->memc_or3 = CFG_OR3_CAN;
- memctl->memc_br3 = CFG_BR3_CAN;
-
- /* Initialize MBMR */
- memctl->memc_mamr = MAMR_GPL_A4DIS; /* GPL_A4 ouput line Disable */
-
- /* Initialize UPMB for CAN: single read */
- memctl->memc_mdr = 0xFFFFC004;
- memctl->memc_mcr = 0x0100 | UPMA;
-
- memctl->memc_mdr = 0x0FFFD004;
- memctl->memc_mcr = 0x0101 | UPMA;
-
- memctl->memc_mdr = 0x0FFFC000;
- memctl->memc_mcr = 0x0102 | UPMA;
-
- memctl->memc_mdr = 0x3FFFC004;
- memctl->memc_mcr = 0x0103 | UPMA;
-
- memctl->memc_mdr = 0xFFFFDC05;
- memctl->memc_mcr = 0x0104 | UPMA;
-
- /* Initialize UPMB for CAN: single write */
- memctl->memc_mdr = 0xFFFCC004;
- memctl->memc_mcr = 0x0118 | UPMA;
-
- memctl->memc_mdr = 0xCFFCD004;
- memctl->memc_mcr = 0x0119 | UPMA;
-
- memctl->memc_mdr = 0x0FFCC000;
- memctl->memc_mcr = 0x011A | UPMA;
-
- memctl->memc_mdr = 0x7FFCC004;
- memctl->memc_mcr = 0x011B | UPMA;
-
- memctl->memc_mdr = 0xFFFDCC05;
- memctl->memc_mcr = 0x011C | UPMA;
-#endif /* CONFIG_CAN_DRIVER */
-
- return (dram_size());
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Find size of RAM from configuration pins.
- * The input pins that contain the memory size are also the debug port
- * pins. Normally they are configured as debug port pins. To be able
- * to read the memory configuration, we must deactivate the debug port
- * and enable the pcmcia input pins. Then return the register to
- * previous state.
- */
-
-static long int dram_size ()
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile sysconf8xx_t *siu = &immap->im_siu_conf;
- volatile pcmconf8xx_t *pcm = &immap->im_pcmcia;
- long int i, memory=1;
- unsigned long siu_mcr;
-
- siu_mcr = siu->sc_siumcr;
- siu->sc_siumcr = siu_mcr & 0xFF9FFFFF;
- for(i=0; i<10; i++) i = i;
-
- memory = (pcm->pcmc_pipr>>12) & 0x3;
-
- siu->sc_siumcr = siu_mcr;
-
- switch( memory )
- {
- case 1:
- return( 32*MBYTE );
- case 2:
- return( 64*MBYTE );
- default:
- break;
- }
- return( 16*MBYTE );
-}
diff --git a/board/versatile/Makefile b/board/versatile/Makefile
deleted file mode 100644
index 1fad0a7ee3..0000000000
--- a/board/versatile/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := versatile.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/versatile/config.mk b/board/versatile/config.mk
deleted file mode 100644
index 25b79b3e79..0000000000
--- a/board/versatile/config.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# image should be loaded at 0x01000000
-#
-
-TEXT_BASE = 0x01000000
diff --git a/board/versatile/flash.c b/board/versatile/flash.c
deleted file mode 100644
index 71533719f7..0000000000
--- a/board/versatile/flash.c
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.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
- */
-
-#include <common.h>
-#include <linux/byteorder/swab.h>
-
-#define PHYS_FLASH_SECT_SIZE 0x00020000 /* 256 KB sectors (x2) */
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-
-/* Flash Organization Structure */
-typedef struct OrgDef {
- unsigned int sector_number;
- unsigned int sector_size;
-} OrgDef;
-
-
-/* Flash Organizations */
-OrgDef OrgIntel_28F256K3[] = {
- {256, 128 * 1024}, /* 256 * 128kBytes sectors */
-};
-
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-unsigned long flash_init (void);
-static ulong flash_get_size (FPW * addr, flash_info_t * info);
-static int write_data (flash_info_t * info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t * info);
-void inline spin_wheel (void);
-void flash_print_info (flash_info_t * info);
-void flash_unprotect_sectors (FPWV * addr);
-int flash_erase (flash_info_t * info, int s_first, int s_last);
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt);
-
-/*-----------------------------------------------------------------------
- */
-
-static void flash_vpp(int on)
-{
- unsigned int tmp;
-
- tmp = *(unsigned int *)(VERSATILE_FLASHCTRL);
-
- if (on)
- tmp |= VERSATILE_FLASHPROG_FLVPPEN;
- else
- tmp &= ~VERSATILE_FLASHPROG_FLVPPEN;
-
- *(unsigned int *)(VERSATILE_FLASHCTRL) = tmp;
-}
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_vpp(1);
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- flash_vpp(0);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1, &flash_info[0]);
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t * info)
-{
- int i;
- OrgDef *pOrgDef;
-
- pOrgDef = OrgIntel_28F256K3;
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- if (i > 255) {
- info->start[i] = base + (i * 0x8000);
- info->protect[i] = 0;
- } else {
- info->start[i] = base +
- (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F256L18T:
- printf ("FLASH 28F256L18T\n");
- break;
- case FLASH_28F256K3:
- printf ("FLASH 28F256K3\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i], info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW * addr, flash_info_t * info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
- switch (value) {
-
- case (FPW) (INTEL_ID_28F256L18T):
- info->flash_id += FLASH_28F256L18T;
- info->sector_count = 259;
- info->size = 0x02000000;
- break; /* => 32 MB */
-
- case (FPW)(INTEL_ID_28F256K3):
- info->flash_id += FLASH_28F256K3;
- info->sector_count = 256;
- info->size = 0x02000000;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/* unprotects a sector for write and erase
- * on some intel parts, this unprotects the entire chip, but it
- * wont hurt to call this additional times per sector...
- */
-void flash_unprotect_sectors (FPWV * addr)
-{
-#define PD_FINTEL_WSMS_READY_MASK 0x0080
-
- *addr = (FPW) 0x00500050; /* clear status register */
-
- /* this sends the clear lock bit command */
- *addr = (FPW) 0x00600060;
- *addr = (FPW) 0x00D000D0;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- flash_vpp(1);
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- flash_unprotect_sectors (addr);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050;/* clear status register */
- *addr = (FPW) 0x00200020;/* erase setup */
- *addr = (FPW) 0x00D000D0;/* erase confirm */
-
- while (((status =
- *addr) & (FPW) 0x00800080) !=
- (FPW) 0x00800080) {
- if (get_timer_masked () >
- CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- /* suspend erase */
- *addr = (FPW) 0x00B000B0;
- /* reset to read mode */
- *addr = (FPW) 0x00FF00FF;
- rcode = 1;
- break;
- }
- }
-
- /* clear status register cmd. */
- *addr = (FPW) 0x00500050;
- *addr = (FPW) 0x00FF00FF;/* resest to read mode */
- printf (" done\n");
- }
- }
-
- flash_vpp(0);
-
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- flash_vpp(1);
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- flash_vpp(0);
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- flash_vpp(0);
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- flash_vpp(0);
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- rc = write_data (info, wp, SWAP (data));
-
- flash_vpp(0);
-
- return rc;
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t * info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%x)\n", (ulong) addr, *addr);
- return (2);
- }
-
- flash_vpp(1);
-
- flash_unprotect_sectors (addr);
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- flash_vpp(0);
- return (1);
- }
- }
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- flash_vpp(0);
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/versatile/lowlevel_init.S b/board/versatile/lowlevel_init.S
deleted file mode 100644
index bdfce2d3c1..0000000000
--- a/board/versatile/lowlevel_init.S
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Board specific setup info
- *
- * (C) Copyright 2003, ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.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
- */
-
-#include <config.h>
-#include <version.h>
-
-/* Set up the platform, once the cpu has been initialized */
-.globl lowlevel_init
-lowlevel_init:
-
- /* All done by Versatile's boot monitor! */
- mov pc, lr
diff --git a/board/versatile/split_by_variant.sh b/board/versatile/split_by_variant.sh
deleted file mode 100755
index 25461c2c01..0000000000
--- a/board/versatile/split_by_variant.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/sh
-# ---------------------------------------------------------
-# Set the core module defines according to Core Module
-# ---------------------------------------------------------
-# ---------------------------------------------------------
-# Set up the Versatile type define
-# ---------------------------------------------------------
-
-mkdir -p ${obj}include
-variant=PB926EJ-S
-if [ "$1" == "" ]
-then
- echo "$0:: No parameters - using versatilepb_config"
- echo "#define CONFIG_ARCH_VERSATILE_PB" > ${obj}include/config.h
- variant=PB926EJ-S
-else
- case "$1" in
- versatilepb_config | \
- versatile_config)
- echo "#define CONFIG_ARCH_VERSATILE_PB" > ${obj}include/config.h
- ;;
-
- versatileab_config)
- echo "#define CONFIG_ARCH_VERSATILE_AB" > ${obj}include/config.h
- variant=AB926EJ-S
- ;;
-
-
- *)
- echo "$0:: Unrecognised config - using versatilepb_config"
- echo "#define CONFIG_ARCH_VERSATILE_PB" > ${obj}include/config.h
- variant=PB926EJ-S
- ;;
-
- esac
-
-fi
-# ---------------------------------------------------------
-# Complete the configuration
-# ---------------------------------------------------------
-$MKCONFIG -a versatile arm arm926ejs versatile NULL versatile
-echo "Variant:: $variant"
diff --git a/board/versatile/u-boot.lds b/board/versatile/u-boot.lds
deleted file mode 100644
index cb6ee188b1..0000000000
--- a/board/versatile/u-boot.lds
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
- . = ALIGN(4);
- .text :
- {
- cpu/arm926ejs/start.o (.text)
- *(.text)
- }
- .rodata : { *(.rodata) }
- . = ALIGN(4);
- .data : { *(.data) }
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/versatile/versatile.c b/board/versatile/versatile.c
deleted file mode 100644
index 9d1a25ec8a..0000000000
--- a/board/versatile/versatile.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.com>
- *
- * (C) Copyright 2004
- * ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.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
- */
-
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-void flash__init (void);
-void ether__init (void);
-void peripheral_power_enable (void);
-
-#if defined(CONFIG_SHOW_BOOT_PROGRESS)
-void show_boot_progress(int progress)
-{
- printf("Boot reached stage %d\n", progress);
-}
-#endif
-
-#define COMP_MODE_ENABLE ((unsigned int)0x0000EAEF)
-
-static inline void delay (unsigned long loops)
-{
- __asm__ volatile ("1:\n"
- "subs %0, %1, #1\n"
- "bne 1b":"=r" (loops):"0" (loops));
-}
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /*
- * set clock frequency:
- * VERSATILE_REFCLK is 32KHz
- * VERSATILE_TIMCLK is 1MHz
- */
- *(volatile unsigned int *)(VERSATILE_SCTL_BASE) |=
- ((VERSATILE_TIMCLK << VERSATILE_TIMER1_EnSel) | (VERSATILE_TIMCLK << VERSATILE_TIMER2_EnSel) |
- (VERSATILE_TIMCLK << VERSATILE_TIMER3_EnSel) | (VERSATILE_TIMCLK << VERSATILE_TIMER4_EnSel));
-
- /* arch number of Versatile Board */
- gd->bd->bi_arch_number = MACH_TYPE_VERSATILE_PB;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x00000100;
-
- gd->flags = 0;
-
- icache_enable ();
-
- flash__init ();
- ether__init ();
- return 0;
-}
-
-
-int misc_init_r (void)
-{
- setenv("verify", "n");
- return (0);
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-void flash__init (void)
-{
-}
-/*************************************************************
- Routine:ether__init
- Description: take the Ethernet controller out of reset and wait
- for the EEPROM load to complete.
-*************************************************************/
-void ether__init (void)
-{
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-int dram_init (void)
-{
- return 0;
-}
diff --git a/board/w7o/Makefile b/board/w7o/Makefile
deleted file mode 100644
index 46b8c8923a..0000000000
--- a/board/w7o/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (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
-#
-
-include $(TOPDIR)/config.mk
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o fpga.o fsboot.o post2.o vpd.o cmd_vpd.o \
- watchdog.o
-SOBJS = init.o post1.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $^
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/w7o/cmd_vpd.c b/board/w7o/cmd_vpd.c
deleted file mode 100644
index 449089e4e6..0000000000
--- a/board/w7o/cmd_vpd.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * (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
- */
-
-#include <common.h>
-#include <command.h>
-
-#if (CONFIG_COMMANDS & CFG_CMD_BSP)
-
-#include "vpd.h"
-
-/* ======================================================================
- * Interpreter command to retrieve board specific Vital Product Data, "VPD"
- * ======================================================================
- */
-int do_vpd (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
- VPD vpd; /* Board specific data struct */
- uchar dev_addr = CFG_DEF_EEPROM_ADDR;
-
- /* Validate usage */
- if (argc > 2) {
- printf ("Usage:\n%s\n", cmdtp->usage);
- return 1;
- }
-
- /* Passed in EEPROM address */
- if (argc == 2)
- dev_addr = (uchar) simple_strtoul (argv[1], NULL, 16);
-
- /* Read VPD and output it */
- if (!vpd_get_data (dev_addr, &vpd)) {
- vpd_print (&vpd);
- return 0;
- }
-
- return 1;
-}
-
-U_BOOT_CMD(
- vpd, 2, 1, do_vpd,
- "vpd - Read Vital Product Data\n",
- "[dev_addr]\n"
- " - Read VPD Data from default address, or device address 'dev_addr'.\n"
-);
-
-#endif /* (CONFIG_COMMANDS & CFG_CMD_BSP) */
diff --git a/board/w7o/config.mk b/board/w7o/config.mk
deleted file mode 100644
index bc341ca755..0000000000
--- a/board/w7o/config.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# (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
-#
-
-#
-# Wave 7 Optics boards
-#
-
-#TEXT_BASE = 0xFFF80000
-TEXT_BASE = 0xFFFC0000
-
-#PLATFORM_CPPFLAGS += -I$(TOPDIR)/board/$(BOARD)
diff --git a/board/w7o/errors.h b/board/w7o/errors.h
deleted file mode 100644
index 05b4eae457..0000000000
--- a/board/w7o/errors.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * (C) Copyright 2001
- * Bill Hunter, Wave 7 Optics, william.hunter@mediaone.net
- *
- * 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 _ERRORS_H_
-#define _ERRORS_H_
-
-#define ERR_FF -1 /* led test value(2) */
-#define ERR_00 0x0000 /* led test value(2) */
-#define ERR_LED 0x01 /* led test failed (1)(3)(4) */
-#define ERR_RAMG 0x04 /* start SDRAM data bus test (2) */
-#define ERR_RAML 0x05 /* SDRAM data bus fault in LSW chip (5) */
-#define ERR_RAMH 0x06 /* SDRAM data bus fault in MSW chip (6) */
-#define ERR_RAMB 0x07 /* SDRAM data bus fault both chips (5)(6)(7) */
-#define ERR_ADDG 0x08 /* start Address ghosting test (13) */
-#define ERR_ADDF 0x09 /* fault during Address ghosting test (13) */
-#define ERR_POST1 0x0a /* post1 tests complete */
-#define ERR_TMP1 0x0b /* */
-#define ERR_R55G 0x0c /* start SDRAM fill 55 test (2) */
-#define ERR_R55L 0x0d /* SDRAM fill test 55 failed in LSW chip (8) */
-#define ERR_R55H 0x0e /* SDRAM fill test 55 failed in MSW chip (9) */
-#define ERR_R55B 0x0f /* SDRAM fill test 55 fail in both chips (10) */
-#define ERR_RAAG 0x10 /* start SDRAM fill aa test (2) */
-#define ERR_RAAL 0x11 /* SDRAM fill test aa failed in LSW chip (8) */
-#define ERR_RAAH 0x12 /* SDRAM fill test aa failed in MSW chip (9) */
-#define ERR_RAAB 0x13 /* SDRAM fill test aa fail in both chips (10) */
-#define ERR_R00G 0x14 /* start SDRAM fill 00 test (2) */
-#define ERR_R00L 0x15 /* SDRAM fill test 00 failed in LSW chip (8) */
-#define ERR_R00H 0x16 /* SDRAM fill test 00 failed in MSW chip (9) */
-#define ERR_R00B 0x17 /* SDRAM fill test 00 fail in both chips (10) */
-#define ERR_RTCG 0x18 /* start RTC test */
-#define ERR_RTCBAT 0x19 /* RTC battery failure */
-#define ERR_RTCTIM 0x1A /* RTC invalid time/date values */
-#define ERR_RTCVAL 0x1B /* RTC NVRAM not accessable */
-#define ERR_FPGAG 0x20 /* fault during FPGA programming */
-#define ERR_XRW1 0x21 /* Xilinx - can't read/write regs on FPGA 1 */
-#define ERR_XRW2 0x22 /* Xilinx - can't read/write regs on FPGA 2 */
-#define ERR_XRW3 0x23 /* Xilinx - can't read/write regs on FPGA 3 */
-#define ERR_XRW4 0x24 /* Xilinx - can't read/write regs on FPGA 4 */
-#define ERR_XRW5 0x25 /* Xilinx - can't read/write regs on FPGA 5 */
-#define ERR_XRW6 0x26 /* Xilinx - can't read/write regs on FPGA 6 */
-#define ERR_XINIT0 0x27 /* Xilinx - INIT line failed to go low */
-#define ERR_XINIT1 0x28 /* Xilinx - INIT line failed to go high */
-#define ERR_XDONE1 0x29 /* Xilinx - DONE line failed to go high */
-#define ERR_XIMAGE 0x2A /* Xilinx - Bad FPGA image in Flash */
-#define ERR_TempG 0x2b /* start temp sensor tests */
-#define ERR_Tinit0 0x2C /* temp sensor 0 failed to init */
-#define ERR_Tinit1 0x2D /* temp sensor 1 failed to init */
-#define ERR_Ttest0 0x2E /* temp sensor 0 failed test */
-#define ERR_Ttest1 0x2F /* temp sensor 1 failed test */
-#define ERR_lm75r 0x30 /* temp sensor read failure */
-#define ERR_lm75w 0x31 /* temp sensor write failure */
-
-
-#define ERR_POSTOK 0x55 /* PANIC: psych... OK */
-
-#if !defined(__ASSEMBLY__)
-extern void log_stat(int errcode);
-extern void log_warn(int errcode);
-extern void log_err(int errcode);
-#endif
-
-/*
-Debugging suggestions:
-(1) periferal data bus shorted or crossed
-(2) general processor halt, check reset, watch dog, power supply ripple, processor clock.
-(3) check p_we, p_r/w, p_oe, p_rdy lines.
-(4) check LED buffers
-(5) check SDRAM data bus bits 16-31, check LSW SDRAM chip.
-(6) check SDRAM data bus bits 0-15, check MSW SDRAM chip.
-(7) check SDRAM control lines and clocks
-(8) check decoupling caps, replace LSW SDRAM
-(9) check decoupling caps, replace MSW SDRAM
-(10)
-(11)
-(12)
-(13) SDRAM address shorted or unconnected, check sdram caps
-*/
-#endif /* _ERRORS_H_ */
diff --git a/board/w7o/flash.c b/board/w7o/flash.c
deleted file mode 100644
index 32815fb63e..0000000000
--- a/board/w7o/flash.c
+++ /dev/null
@@ -1,940 +0,0 @@
-/*
- * (C) Copyright 2001
- * Erik Theisen, Wave 7 Optics, etheisen@mindspring.com.
- * Based on code by:
- * 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 <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-#include <watchdog.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word8(flash_info_t *info, ulong dest, ulong data);
-static int write_word32 (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- unsigned long size_b0, base_b0;
- unsigned long size_b1, base_b1;
-
- /* Init: no FLASHes known */
- for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Get Size of Boot and Main Flashes */
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- return 0;
- }
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
- if (flash_info[1].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 1 - Size = 0x%08lx = %ld MB\n",
- size_b1, size_b1<<20);
- return 0;
- }
-
- /* Calculate base addresses */
- base_b0 = -size_b0;
- base_b1 = -size_b1;
-
- /* Setup offsets for Boot Flash */
- flash_get_offsets (base_b0, &flash_info[0]);
-
- /* Protect board level data */
- (void)flash_protect(FLAG_PROTECT_SET,
- base_b0,
- flash_info[0].start[1] - 1,
- &flash_info[0]);
-
-
- /* Monitor protection ON by default */
- (void)flash_protect(FLAG_PROTECT_SET,
- base_b0 + size_b0 - monitor_flash_len,
- base_b0 + size_b0 - 1,
- &flash_info[0]);
-
- /* Protect the FPGA image */
- (void)flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE1_PRELIM,
- FLASH_BASE1_PRELIM + CFG_FPGA_IMAGE_LEN - 1,
- &flash_info[1]);
-
- /* Protect the default boot image */
- (void)flash_protect(FLAG_PROTECT_SET,
- FLASH_BASE1_PRELIM + CFG_FPGA_IMAGE_LEN,
- FLASH_BASE1_PRELIM + CFG_FPGA_IMAGE_LEN + 0x600000 - 1,
- &flash_info[1]);
-
- /* Setup offsets for Main Flash */
- flash_get_offsets (FLASH_BASE1_PRELIM, &flash_info[1]);
-
- return (size_b0 + size_b1);
-} /* end flash_init() */
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table - FOR BOOT ROM ONLY!!! */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- }
-} /* end flash_get_offsets() */
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("1 x AMD "); break;
- case FLASH_MAN_STM: printf ("1 x STM "); break;
- case FLASH_MAN_INTEL: printf ("2 x Intel "); break;
- default: printf ("Unknown Vendor ");
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD)
- printf ("AM29LV040 (4096 Kbit, uniform sector size)\n");
- else if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_STM)
- printf ("M29W040B (4096 Kbit, uniform block size)\n");
- else
- printf ("UNKNOWN 29x040x (4096 Kbit, uniform sector size)\n");
- break;
- case FLASH_28F320J3A:
- printf ("28F320J3A (32 Mbit = 128K x 32)\n");
- break;
- case FLASH_28F640J3A:
- printf ("28F640J3A (64 Mbit = 128K x 64)\n");
- break;
- case FLASH_28F128J3A:
- printf ("28F128J3A (128 Mbit = 128K x 128)\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_STM) {
- printf (" Size: %ld KB in %d Blocks\n",
- info->size >> 10, info->sector_count);
- } else {
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
- }
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++)
- {
- if (*flash++ != 0xffffffff)
- {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " "
- );
- }
- printf ("\n");
-} /* end flash_print_info() */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong base = (ulong)addr;
-
- /* Setup default type */
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count =0;
- info->size = 0;
-
- /* Test for Boot Flash */
- if (base == FLASH_BASE0_PRELIM) {
- unsigned char value;
- volatile unsigned char * addr2 = (unsigned char *)addr;
-
- /* Write auto select command: read Manufacturer ID */
- *(addr2 + 0x555) = 0xaa;
- *(addr2 + 0x2aa) = 0x55;
- *(addr2 + 0x555) = 0x90;
-
- /* Manufacture ID */
- value = *addr2;
- switch (value) {
- case (unsigned char)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (unsigned char)STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- *addr2 = 0xf0; /* no or unknown flash */
- return 0;
- }
-
- /* Device ID */
- value = *(addr2 + 1);
- switch (value) {
- case (unsigned char)AMD_ID_LV040B:
- case (unsigned char)STM_ID_29W040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000;
- break; /* => 512Kb */
- default:
- *addr2 = 0xf0; /* => no or unknown flash */
- return 0;
- }
- }
- else { /* MAIN Flash */
- unsigned long value;
- volatile unsigned long * addr2 = (unsigned long *)addr;
-
- /* Write auto select command: read Manufacturer ID */
- *addr2 = 0x90909090;
-
- /* Manufacture ID */
- value = *addr2;
- switch (value) {
- case (unsigned long)INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
- default:
- *addr2 = 0xff; /* no or unknown flash */
- return 0;
- }
-
- /* Device ID - This shit is interleaved... */
- value = *(addr2 + 1);
- switch (value) {
- case (unsigned long)INTEL_ID_28F320J3A:
- info->flash_id += FLASH_28F320J3A;
- info->sector_count = 32;
- info->size = 0x00400000 * 2;
- break; /* => 2 X 4 MB */
- case (unsigned long)INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x00800000 * 2;
- break; /* => 2 X 8 MB */
- case (unsigned long)INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x01000000 * 2;
- break; /* => 2 X 16 MB */
- default:
- *addr2 = 0xff; /* => no or unknown flash */
- }
- }
-
- /* Make sure we don't exceed CFG_MAX_FLASH_SECT */
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- /* set up sector start address table */
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040:
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- break;
- case FLASH_28F320J3A:
- case FLASH_28F640J3A:
- case FLASH_28F128J3A:
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00020000 * 2); /* 2 Banks */
- break;
- }
-
- /* Test for Boot Flash */
- if (base == FLASH_BASE0_PRELIM) {
- volatile unsigned char *addr2;
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (AX .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile unsigned char *)(info->start[i]);
- info->protect[i] = *(addr2 + 2) & 1;
- }
-
- /* Restore read mode */
- *(unsigned char *)base = 0xF0; /* Reset NORMAL Flash */
- }
- else { /* Main Flash */
- volatile unsigned long *addr2;
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (AX .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr2 = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = *(addr2 + 2) & 0x1;
- }
-
- /* Restore read mode */
- *(unsigned long *)base = 0xFFFFFFFF; /* Reset Flash */
- }
-
- return (info->size);
-} /* end flash_get_size() */
-
-/*-----------------------------------------------------------------------
- */
-
-static int wait_for_DQ7(ulong addr, uchar cmp_val, ulong tout)
-{
- int i;
-
- volatile uchar *vaddr = (uchar *)addr;
-
- /* Loop X times */
- for (i = 1; i <= (100 * tout); i++) { /* Wait up to tout ms */
- udelay(10);
- /* Pause 10 us */
-
- /* Check for completion */
- if ((vaddr[0] & 0x80) == (cmp_val & 0x80)) {
- return 0;
- }
-
- /* KEEP THE LUSER HAPPY - Print a dot every 1.1 seconds */
- if (!(i % 110000))
- putc('.');
-
- /* Kick the dog if needed */
- WATCHDOG_RESET();
- }
-
- return 1;
-} /* wait_for_DQ7() */
-
-/*-----------------------------------------------------------------------
- */
-
-static int flash_erase8(flash_info_t *info, int s_first, int s_last)
-{
- int tcode, rcode = 0;
- volatile uchar *addr = (uchar *)(info->start[0]);
- volatile uchar *sector_addr;
- int flag, prot, sect;
-
- /* Validate arguments */
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN)
- printf ("- missing\n");
- else
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- /* Check for KNOWN flash type */
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- /* Check for protected sectors */
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect])
- prot++;
- }
- if (prot)
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- else
- printf ("\n");
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- sector_addr = (uchar *)(info->start[sect]);
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_STM)
- printf("Erasing block %p\n", sector_addr);
- else
- printf("Erasing sector %p\n", sector_addr);
-
- /* Disable interrupts which might cause Flash to timeout */
- flag = disable_interrupts();
-
- *(addr + 0x555) = (uchar)0xAA;
- *(addr + 0x2aa) = (uchar)0x55;
- *(addr + 0x555) = (uchar)0x80;
- *(addr + 0x555) = (uchar)0xAA;
- *(addr + 0x2aa) = (uchar)0x55;
- *sector_addr = (uchar)0x30; /* sector erase */
-
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- * Takes up to 6 seconds.
- */
- tcode = wait_for_DQ7((ulong)sector_addr, 0x80, 6000);
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* Make sure we didn't timeout */
- if (tcode) {
- printf ("Timeout\n");
- rcode = 1;
- }
- }
- }
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /* reset to read mode */
- addr = (uchar *)info->start[0];
- *addr = (uchar)0xF0; /* reset bank */
-
- printf (" done\n");
- return rcode;
-} /* end flash_erase8() */
-
-static int flash_erase32(flash_info_t *info, int s_first, int s_last)
-{
- int flag, sect;
- ulong start, now, last;
- int prot = 0;
-
- /* Validate arguments */
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN)
- printf ("- missing\n");
- else
- printf ("- no sectors to erase\n");
- return 1;
- }
-
- /* Check for KNOWN flash type */
- if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
- printf ("Can erase only Intel flash types - aborted\n");
- return 1;
- }
-
- /* Check for protected sectors */
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect])
- prot++;
- }
- if (prot)
- printf ("- Warning: %d protected sectors will not be erased!\n", prot);
- else
- printf ("\n");
-
- start = get_timer (0);
- last = start;
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- WATCHDOG_RESET();
- if (info->protect[sect] == 0) { /* not protected */
- vu_long *addr = (vu_long *)(info->start[sect]);
- unsigned long status;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = 0x00500050; /* clear status register */
- *addr = 0x00200020; /* erase setup */
- *addr = 0x00D000D0; /* erase confirm */
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* Wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- while (((status = *addr) & 0x00800080) != 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = 0x00B000B0; /* suspend erase */
- *addr = 0x00FF00FF; /* reset to read mode */
- return 1;
- }
-
- /* show that we're waiting */
- if ((now - last) > 990) { /* every second */
- putc ('.');
- last = now;
- }
- }
- *addr = 0x00FF00FF; /* reset to read mode */
- }
- }
- printf (" done\n");
- return 0;
-} /* end flash_erase32() */
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040)
- return flash_erase8(info, s_first, s_last);
- else
- return flash_erase32(info, s_first, s_last);
-} /* end flash_erase() */
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_buff8(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- ulong start;
- int i, l, rc;
-
- start = get_timer (0);
-
- wp = (addr & ~3); /* get lower word
- aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word8(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word8(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- if (get_timer(start) > 1000) { /* every second */
- WATCHDOG_RESET();
- putc ('.');
- start = get_timer(0);
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word8(info, wp, data));
-} /* end write_buff8() */
-
-#define FLASH_WIDTH 4 /* flash bus width in bytes */
-static int write_buff32 (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
- ulong start;
-
- start = get_timer (0);
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-
- wp = (addr & ~(FLASH_WIDTH-1)); /* get lower FLASH_WIDTH aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<FLASH_WIDTH && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<FLASH_WIDTH; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word32(info, wp, data)) != 0) {
- return (rc);
- }
- wp += FLASH_WIDTH;
- }
-
- /*
- * handle FLASH_WIDTH aligned part
- */
- while (cnt >= FLASH_WIDTH) {
- data = 0;
- for (i=0; i<FLASH_WIDTH; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word32(info, wp, data)) != 0) {
- return (rc);
- }
- wp += FLASH_WIDTH;
- cnt -= FLASH_WIDTH;
- if (get_timer(start) > 990) { /* every second */
- putc ('.');
- start = get_timer(0);
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<FLASH_WIDTH && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<FLASH_WIDTH; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word32(info, wp, data));
-} /* write_buff32() */
-
-int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- int retval;
-
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040)
- retval = write_buff8(info, src, addr, cnt);
- else
- retval = write_buff32(info, src, addr, cnt);
-
- return retval;
-} /* end write_buff() */
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-static int write_word8(flash_info_t *info, ulong dest, ulong data)
-{
- volatile uchar *addr2 = (uchar *)(info->start[0]);
- volatile uchar *dest2 = (uchar *)dest;
- volatile uchar *data2 = (uchar *)&data;
- int flag;
- int i, tcode, rcode = 0;
-
- /* Check if Flash is (sufficently) erased */
- if ((*((volatile uchar *)dest) &
- (uchar)data) != (uchar)data) {
- return (2);
- }
-
- for (i=0; i < (4 / sizeof(uchar)); i++) {
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *(addr2 + 0x555) = (uchar)0xAA;
- *(addr2 + 0x2aa) = (uchar)0x55;
- *(addr2 + 0x555) = (uchar)0xA0;
-
- dest2[i] = data2[i];
-
- /* Wait for write to complete, up to 1ms */
- tcode = wait_for_DQ7((ulong)&dest2[i], data2[i], 1);
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* Make sure we didn't timeout */
- if (tcode) {
- rcode = 1;
- }
- }
-
- return rcode;
-} /* end write_word8() */
-
-static int write_word32(flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long *)dest;
- ulong status;
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- *addr = 0x00400040; /* write setup */
- *addr = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- start = get_timer (0);
-
- while (((status = *addr) & 0x00800080) != 0x00800080) {
- WATCHDOG_RESET();
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- *addr = 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = 0x00FF00FF; /* restore read mode */
-
- return (0);
-} /* end write_word32() */
-
-
-static int _flash_protect(flash_info_t *info, long sector)
-{
- int i;
- int flag;
- ulong status;
- int rcode = 0;
- volatile long *addr = (long *)sector;
-
- switch(info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J3A:
- case FLASH_28F640J3A:
- case FLASH_28F128J3A:
- /* Disable interrupts which might cause Flash to timeout */
- flag = disable_interrupts();
-
- /* Issue command */
- *addr = 0x00500050L; /* Clear the status register */
- *addr = 0x00600060L; /* Set lock bit setup */
- *addr = 0x00010001L; /* Set lock bit confirm */
-
- /* Wait for command completion */
- for (i = 0; i < 10; i++) { /* 75us timeout, wait 100us */
- udelay(10);
- if ((*addr & 0x00800080L) == 0x00800080L)
- break;
- }
-
- /* Not successful? */
- status = *addr;
- if (status != 0x00800080L) {
- printf("Protect %x sector failed: %x\n",
- (uint)sector, (uint)status);
- rcode = 1;
- }
-
- /* Restore read mode */
- *addr = 0x00ff00ffL;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- break;
- case FLASH_AM040: /* No soft sector protection */
- break;
- }
-
- /* Turn protection on for this sector */
- for (i = 0; i < info->sector_count; i++) {
- if (info->start[i] == sector) {
- info->protect[i] = 1;
- break;
- }
- }
-
- return rcode;
-} /* end _flash_protect() */
-
-static int _flash_unprotect(flash_info_t *info, long sector)
-{
- int i;
- int flag;
- ulong status;
- int rcode = 0;
- volatile long *addr = (long *)sector;
-
- switch(info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F320J3A:
- case FLASH_28F640J3A:
- case FLASH_28F128J3A:
- /* Disable interrupts which might cause Flash to timeout */
- flag = disable_interrupts();
-
- *addr = 0x00500050L; /* Clear the status register */
- *addr = 0x00600060L; /* Clear lock bit setup */
- *addr = 0x00D000D0L; /* Clear lock bit confirm */
-
- /* Wait for command completion */
- for (i = 0; i < 80 ; i++) { /* 700ms timeout, wait 800 */
- udelay(10000); /* Delay 10ms */
- if ((*addr & 0x00800080L) == 0x00800080L)
- break;
- }
-
- /* Not successful? */
- status = *addr;
- if (status != 0x00800080L) {
- printf("Un-protect %x sector failed: %x\n",
- (uint)sector, (uint)status);
- *addr = 0x00ff00ffL;
- rcode = 1;
- }
-
- /* restore read mode */
- *addr = 0x00ff00ffL;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- break;
- case FLASH_AM040: /* No soft sector protection */
- break;
- }
-
- /*
- * Fix Intel's little red wagon. Reprotect
- * sectors that were protected before we undid
- * protection on a specific sector.
- */
- for (i = 0; i < info->sector_count; i++) {
- if (info->start[i] != sector) {
- if (info->protect[i]) {
- if (_flash_protect(info, info->start[i]))
- rcode = 1;
- }
- }
- else /* Turn protection off for this sector */
- info->protect[i] = 0;
- }
-
- return rcode;
-} /* end _flash_unprotect() */
-
-
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
- int rcode;
-
- if (prot)
- rcode = _flash_protect(info, info->start[sector]);
- else
- rcode = _flash_unprotect(info, info->start[sector]);
-
- return rcode;
-} /* end flash_real_protect() */
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/w7o/fpga.c b/board/w7o/fpga.c
deleted file mode 100644
index 100bce4722..0000000000
--- a/board/w7o/fpga.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * (C) Copyright 2001
- * Erik Theisen, Wave 7 Optics, etheisen@mindspring.com
- * and
- * Bill Hunter, Wave 7 Optics, william.hunter@mediaone.net
- *
- * 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 <config.h>
-#include <common.h>
-#include "w7o.h"
-#include <asm/processor.h>
-#include "errors.h"
-
-static void
-fpga_img_write(unsigned long *src, unsigned long len, unsigned short *daddr)
-{
- unsigned long i;
- volatile unsigned long val;
- volatile unsigned short *dest = daddr; /* volatile-bypass optimizer */
-
- for (i = 0; i < len; i++, src++) {
- val = *src;
- *dest = (unsigned short)((val & 0xff000000L) >> 16);
- *dest = (unsigned short)((val & 0x00ff0000L) >> 8);
- *dest = (unsigned short)(val & 0x0000ff00L);
- *dest = (unsigned short)((val & 0x000000ffL) << 8);
- }
-
- /* Terminate programming with 4 C clocks */
- dest = daddr;
- val = *(unsigned short *)dest;
- val = *(unsigned short *)dest;
- val = *(unsigned short *)dest;
- val = *(unsigned short *)dest;
-
-}
-
-
-int
-fpgaDownload(unsigned char *saddr,
- unsigned long size,
- unsigned short *daddr)
-{
- int i; /* index, intr disable flag */
- int start; /* timer */
- unsigned long greg, grego; /* GPIO & output register */
- unsigned long length; /* image size in words */
- unsigned long *source; /* image source addr */
- unsigned short *dest; /* destination FPGA addr */
- volatile unsigned short *ndest; /* temp dest FPGA addr */
- volatile unsigned short val; /* temp val */
- unsigned long cnfg = GPIO_XCV_CNFG; /* FPGA CNFG */
- unsigned long eirq = GPIO_XCV_IRQ;
- int retval = -1; /* Function return value */
-
- /* Setup some basic values */
- length = (size / 4) + 1; /* size in words, rounding UP
- is OK */
- source = (unsigned long *)saddr;
- dest = (unsigned short *)daddr;
-
- /* Get DCR output register */
- grego = in32(PPC405GP_GPIO0_OR);
-
- /* Reset FPGA */
- grego &= ~GPIO_XCV_PROG; /* PROG line low */
- out32(PPC405GP_GPIO0_OR, grego);
-
- /* Setup timeout timer */
- start = get_timer(0);
-
- /* Wait for FPGA init line */
- while(in32(PPC405GP_GPIO0_IR) & GPIO_XCV_INIT) { /* Wait INIT line low */
- /* Check for timeout - 100us max, so use 3ms */
- if (get_timer(start) > 3) {
- printf(" failed to start init.\n");
- log_warn(ERR_XINIT0); /* Don't halt */
-
- /* Reset line stays low */
- goto done; /* I like gotos... */
- }
- }
-
- /* Unreset FPGA */
- grego |= GPIO_XCV_PROG; /* PROG line high */
- out32(PPC405GP_GPIO0_OR, grego);
-
- /* Wait for FPGA end of init period . */
- while(!(in32(PPC405GP_GPIO0_IR) & GPIO_XCV_INIT)) { /* Wait for INIT hi */
-
- /* Check for timeout */
- if (get_timer(start) > 3) {
- printf(" failed to exit init.\n");
- log_warn(ERR_XINIT1);
-
- /* Reset FPGA */
- grego &= ~GPIO_XCV_PROG; /* PROG line low */
- out32(PPC405GP_GPIO0_OR, grego);
-
- goto done;
- }
- }
-
- /* Now program FPGA ... */
- ndest = dest;
- for (i = 0; i < CONFIG_NUM_FPGAS; i++) {
- /* Toggle IRQ/GPIO */
- greg = mfdcr(CPC0_CR0); /* get chip ctrl register */
- greg |= eirq; /* toggle irq/gpio */
- mtdcr(CPC0_CR0, greg); /* ... just do it */
-
- /* turn on open drain for CNFG */
- greg = in32(PPC405GP_GPIO0_ODR); /* get open drain register */
- greg |= cnfg; /* CNFG open drain */
- out32(PPC405GP_GPIO0_ODR, greg); /* .. just do it */
-
- /* Turn output enable on for CNFG */
- greg = in32(PPC405GP_GPIO0_TCR); /* get tristate register */
- greg |= cnfg; /* CNFG tristate inactive */
- out32(PPC405GP_GPIO0_TCR, greg); /* ... just do it */
-
- /* Setup FPGA for programming */
- grego &= ~cnfg; /* CONFIG line low */
- out32(PPC405GP_GPIO0_OR, grego);
-
- /*
- * Program the FPGA
- */
- printf("\n destination: 0x%lx ", (unsigned long)ndest);
-
- fpga_img_write(source, length, (unsigned short *)ndest);
-
- /* Done programming */
- grego |= cnfg; /* CONFIG line high */
- out32(PPC405GP_GPIO0_OR, grego);
-
- /* Turn output enable OFF for CNFG */
- greg = in32(PPC405GP_GPIO0_TCR); /* get tristate register */
- greg &= ~cnfg; /* CNFG tristate inactive */
- out32(PPC405GP_GPIO0_TCR, greg); /* ... just do it */
-
- /* Toggle IRQ/GPIO */
- greg = mfdcr(CPC0_CR0); /* get chip ctrl register */
- greg &= ~eirq; /* toggle irq/gpio */
- mtdcr(CPC0_CR0, greg); /* ... just do it */
-
- ndest = (unsigned short *)((char *)ndest + 0x00100000L); /* XXX - Next FPGA addr */
- cnfg >>= 1; /* XXX - Next */
- eirq >>= 1;
- }
-
- /* Terminate programming with 4 C clocks */
- ndest = dest;
- for (i = 0; i < CONFIG_NUM_FPGAS; i++) {
- val = *ndest;
- val = *ndest;
- val = *ndest;
- val = *ndest;
- ndest = (unsigned short *)((char *)ndest + 0x00100000L);
- }
-
- /* Setup timer */
- start = get_timer(0);
-
- /* Wait for FPGA end of programming period . */
- while(!(in32(PPC405GP_GPIO0_IR) & GPIO_XCV_DONE)) { /* Test DONE low */
-
- /* Check for timeout */
- if (get_timer(start) > 3) {
- printf(" done failed to come high.\n");
- log_warn(ERR_XDONE1);
-
- /* Reset FPGA */
- grego &= ~GPIO_XCV_PROG; /* PROG line low */
- out32(PPC405GP_GPIO0_OR, grego);
-
- goto done;
- }
- }
-
- printf("\n FPGA load succeeded\n");
- retval = 0; /* Program OK */
-
-done:
- return retval;
-}
-
-/* FPGA image is stored in flash */
-extern flash_info_t flash_info[];
-
-int init_fpga(void)
-{
- unsigned int i,j,ptr; /* General purpose */
- unsigned char bufchar; /* General purpose character */
- unsigned char *buf; /* Start of image pointer */
- unsigned long len; /* Length of image */
- unsigned char *fn_buf; /* Start of filename string */
- unsigned int fn_len; /* Length of filename string */
- unsigned char *xcv_buf; /* Pointer to start of image */
- unsigned long xcv_len; /* Length of image */
- unsigned long crc; /* 30bit crc in image */
- unsigned long calc_crc; /* Calc'd 30bit crc */
- int retval = -1;
-
- /* Tell the world what we are doing */
- printf("FPGA: ");
-
- /*
- * Get address of first sector where the FPGA
- * image is stored.
- */
- buf = (unsigned char *)flash_info[1].start[0];
-
- /*
- * Get the stored image's CRC & length.
- */
- crc = *(unsigned long *)(buf+4); /* CRC is first long word */
- len = *(unsigned long *)(buf+8); /* Image len is next long */
-
- /* Pedantic */
- if ((len < 0x133A4) || (len > 0x80000))
- goto bad_image;
-
- /*
- * Get the file name pointer and length.
- */
- fn_len = (*(unsigned short *)(buf+12) & 0xff); /* filename length
- is next short */
- fn_buf = buf + 14;
-
- /*
- * Get the FPGA image pointer and length length.
- */
- xcv_buf = fn_buf + fn_len; /* pointer to fpga image */
- xcv_len = len - 14 - fn_len; /* fpga image length */
-
- /* Check for uninitialized FLASH */
- if ((strncmp((char *)buf, "w7o", 3)!=0) || (len > 0x0007ffffL) || (len == 0))
- goto bad_image;
-
- /*
- * Calculate and Check the image's CRC.
- */
- calc_crc = crc32(0, xcv_buf, xcv_len);
- if (crc != calc_crc) {
- printf("\nfailed - bad CRC\n");
- goto done;
- }
-
- /* Output the file name */
- printf("file name : ");
- for (i=0;i<fn_len;i++) {
- bufchar = fn_buf[+i];
- if (bufchar<' ' || bufchar>'~') bufchar = '.';
- putc(bufchar);
- }
-
- /*
- * find rest of display data
- */
- ptr = 15; /* Offset to ncd filename
- length in fpga image */
- j = xcv_buf[ptr]; /* Get len of ncd filename */
- if (j > 32) goto bad_image;
- ptr = ptr + j + 3; /* skip ncd filename string +
- 3 bytes more bytes */
-
- /*
- * output target device string
- */
- j = xcv_buf[ptr++] - 1; /* len of targ str less term */
- if (j > 32) goto bad_image;
- printf("\n target : ");
- for (i = 0; i < j; i++) {
- bufchar = (xcv_buf[ptr++]);
- if (bufchar<' ' || bufchar>'~') bufchar = '.';
- putc(bufchar);
- }
-
- /*
- * output compilation date string and time string
- */
- ptr += 3; /* skip 2 bytes */
- printf("\n synth time : ");
- j = (xcv_buf[ptr++] - 1); /* len of date str less term */
- if (j > 32) goto bad_image;
- for (i = 0; i < j; i++) {
- bufchar = (xcv_buf[ptr++]);
- if (bufchar<' ' || bufchar>'~') bufchar = '.';
- putc(bufchar);
- }
-
- ptr += 3; /* Skip 2 bytes */
- printf(" - ");
- j = (xcv_buf[ptr++] - 1); /* slen = targ dev str len */
- if (j > 32) goto bad_image;
- for (i = 0; i < j; i++) {
- bufchar = (xcv_buf[ptr++]);
- if (bufchar<' ' || bufchar>'~') bufchar = '.';
- putc(bufchar);
- }
-
- /*
- * output crc and length strings
- */
- printf("\n len & crc : 0x%lx 0x%lx", len, crc);
-
- /*
- * Program the FPGA.
- */
- retval = fpgaDownload((unsigned char*)xcv_buf, xcv_len,
- (unsigned short *)0xfd000000L);
- return retval;
-
-bad_image:
- printf("\n BAD FPGA image format @ %lx\n", flash_info[1].start[0]);
- log_warn(ERR_XIMAGE);
-done:
- return retval;
-}
-
-void test_fpga(unsigned short *daddr)
-{
- int i;
- volatile unsigned short *ndest = daddr;
-
- for (i = 0; i < CONFIG_NUM_FPGAS; i++) {
-#if defined(CONFIG_W7OLMG)
- ndest[0x7e] = 0x55aa;
- if (ndest[0x7e] != 0x55aa)
- log_warn(ERR_XRW1 + i);
- ndest[0x7e] = 0xaa55;
- if (ndest[0x7e] != 0xaa55)
- log_warn(ERR_XRW1 + i);
- ndest[0x7e] = 0xc318;
- if (ndest[0x7e] != 0xc318)
- log_warn(ERR_XRW1 + i);
-
-#elif defined(CONFIG_W7OLMC)
- ndest[0x800] = 0x55aa;
- ndest[0x801] = 0xaa55;
- ndest[0x802] = 0xc318;
- ndest[0x4800] = 0x55aa;
- ndest[0x4801] = 0xaa55;
- ndest[0x4802] = 0xc318;
- if ((ndest[0x800] != 0x55aa) ||
- (ndest[0x801] != 0xaa55) ||
- (ndest[0x802] != 0xc318))
- log_warn(ERR_XRW1 + (2 * i)); /* Auto gen error code */
- if ((ndest[0x4800] != 0x55aa) ||
- (ndest[0x4801] != 0xaa55) ||
- (ndest[0x4802] != 0xc318))
- log_warn(ERR_XRW2 + (2 * i)); /* Auto gen error code */
-
-#else
-# error "Unknown W7O board configuration"
-#endif
- }
-
- printf(" FPGA ready\n");
- return;
-}
diff --git a/board/w7o/fsboot.c b/board/w7o/fsboot.c
deleted file mode 100644
index 0ef9a61be6..0000000000
--- a/board/w7o/fsboot.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * (C) Copyright 2001
- * Wave 7 Optics, 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
- */
-
-#include <common.h>
-#include <config.h>
-#include <command.h>
-
-/*
- * FIXME: Add code to test image and it's header.
- */
-extern int valid_elf_image (unsigned long addr);
-
-static int
-image_check(ulong addr)
-{
- return valid_elf_image(addr);
-}
-
-void
-init_fsboot(void)
-{
- char *envp;
- ulong loadaddr;
- ulong testaddr;
- ulong alt_loadaddr;
- char buf[9];
-
- /*
- * Get test image address
- */
- if ((envp = getenv("testaddr")) != NULL)
- testaddr = simple_strtoul(envp, NULL, 16);
- else
- testaddr = -1;
-
- /*
- * Are we going to test boot and image?
- */
- if ((testaddr != -1) && image_check(testaddr)) {
-
- /* Set alt_loadaddr */
- alt_loadaddr = testaddr;
- sprintf(buf, "%lX", alt_loadaddr);
- setenv("alt_loadaddr", buf);
-
- /* Clear test_addr */
- setenv("testaddr", NULL);
-
- /*
- * Save current environment with alt_loadaddr,
- * and cleared testaddr.
- */
- saveenv();
-
- /*
- * Setup temporary loadaddr to alt_loadaddr
- * XXX - DO NOT SAVE ENVIRONMENT!
- */
- loadaddr = alt_loadaddr;
- sprintf(buf, "%lX", loadaddr);
- setenv("loadaddr", buf);
-
- } else { /* Normal boot */
- setenv("alt_loadaddr", NULL); /* Clear alt_loadaddr */
- setenv("testaddr", NULL); /* Clear testaddr */
- saveenv();
- }
-
- return;
-}
diff --git a/board/w7o/init.S b/board/w7o/init.S
deleted file mode 100644
index 35d7dbceb4..0000000000
--- a/board/w7o/init.S
+++ /dev/null
@@ -1,264 +0,0 @@
-/******************************************************************************
- *
- * This source code has been made available to you by IBM on an AS-IS
- * basis. Anyone receiving this source is licensed under IBM
- * copyrights to use it in any way he or she deems fit, including
- * copying it, modifying it, compiling it, and redistributing it either
- * with or without modifications. No license under IBM patents or
- * patent applications is to be implied by the copyright license.
- *
- * Any user of this software should understand that IBM cannot provide
- * technical support for this software and will not be responsible for
- * any consequences resulting from the use of this software.
- *
- * Any person who transfers this source code or any derivative work
- * must include the IBM copyright notice, this paragraph, and the
- * preceding two paragraphs in the transferred software.
- *
- * COPYRIGHT I B M CORPORATION 1995
- * LICENSED MATERIAL - PROGRAM PROPERTY OF I B M
- *
- *****************************************************************************/
-#include <config.h>
-#include <ppc4xx.h>
-
-#define _LINUX_CONFIG_H 1 /* avoid reading Linux autoconf.h file */
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-/******************************************************************************
- * Function: ext_bus_cntlr_init
- *
- * Description: Configures EBC Controller and a few basic chip selects.
- *
- * CS0 is setup to get the Boot Flash out of the addresss range
- * so that we may setup a stack. CS7 is setup so that we can
- * access and reset the hardware watchdog.
- *
- * IMPORTANT: For pass1 this code must run from
- * cache since you can not reliably change a peripheral banks
- * timing register (pbxap) while running code from that bank.
- * For ex., since we are running from ROM on bank 0, we can NOT
- * execute the code that modifies bank 0 timings from ROM, so
- * we run it from cache.
- *
- * Notes: Does NOT use the stack.
- *****************************************************************************/
- .section ".text"
- .align 2
- .globl ext_bus_cntlr_init
- .type ext_bus_cntlr_init, @function
-ext_bus_cntlr_init:
- mflr r0
- /********************************************************************
- * Prefetch entire ext_bus_cntrl_init function into the icache.
- * This is necessary because we are going to change the same CS we
- * are executing from. Otherwise a CPU lockup may occur.
- *******************************************************************/
- bl ..getAddr
-..getAddr:
- mflr r3 /* get address of ..getAddr */
-
- /* Calculate number of cache lines for this function */
- addi r4, 0, (((.Lfe0 - ..getAddr) / CFG_CACHELINE_SIZE) + 2)
- mtctr r4
-..ebcloop:
- icbt r0, r3 /* prefetch cache line for addr in r3*/
- addi r3, r3, CFG_CACHELINE_SIZE /* move to next cache line */
- bdnz ..ebcloop /* continue for $CTR cache lines */
-
- /********************************************************************
- * Delay to ensure all accesses to ROM are complete before changing
- * bank 0 timings. 200usec should be enough.
- * 200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles.
- *******************************************************************/
- addis r3, 0, 0x0
- ori r3, r3, 0xA000 /* wait 200us from reset */
- mtctr r3
-..spinlp:
- bdnz ..spinlp /* spin loop */
-
- /********************************************************************
- * Setup External Bus Controller (EBC).
- *******************************************************************/
- addi r3, 0, epcr
- mtdcr ebccfga, r3
- addis r4, 0, 0xb040 /* Device base timeout = 1024 cycles */
- ori r4, r4, 0x0 /* Drive CS with external master */
- mtdcr ebccfgd, r4
-
- /********************************************************************
- * Change PCIINT signal to PerWE
- *******************************************************************/
- mfdcr r4, cntrl1
- ori r4, r4, 0x4000
- mtdcr cntrl1, r4
-
- /********************************************************************
- * Memory Bank 0 (Flash Bank 0) initialization
- *******************************************************************/
- addi r3, 0, pb0ap
- mtdcr ebccfga, r3
- addis r4, 0, CFG_W7O_EBC_PB0AP@h
- ori r4, r4, CFG_W7O_EBC_PB0AP@l
- mtdcr ebccfgd, r4
-
- addi r3, 0, pb0cr
- mtdcr ebccfga, r3
- addis r4, 0, CFG_W7O_EBC_PB0CR@h
- ori r4, r4, CFG_W7O_EBC_PB0CR@l
- mtdcr ebccfgd, r4
-
- /********************************************************************
- * Memory Bank 7 LEDs - NEEDED BECAUSE OF HW WATCHDOG AND LEDs.
- *******************************************************************/
- addi r3, 0, pb7ap
- mtdcr ebccfga, r3
- addis r4, 0, CFG_W7O_EBC_PB7AP@h
- ori r4, r4, CFG_W7O_EBC_PB7AP@l
- mtdcr ebccfgd, r4
-
- addi r3, 0, pb7cr
- mtdcr ebccfga, r3
- addis r4, 0, CFG_W7O_EBC_PB7CR@h
- ori r4, r4, CFG_W7O_EBC_PB7CR@l
- mtdcr ebccfgd, r4
-
- /* We are all done */
- mtlr r0 /* Restore link register */
- blr /* Return to calling function */
-.Lfe0: .size ext_bus_cntlr_init,.Lfe0-ext_bus_cntlr_init
-/* end ext_bus_cntlr_init() */
-
-/******************************************************************************
- * Function: sdram_init
- *
- * Description: Configures SDRAM memory banks.
- *
- * Serial Presence Detect, "SPD," reads the SDRAM EEPROM
- * via the IIC bus and then configures the SDRAM memory
- * banks appropriately. If Auto Memory Configuration is
- * is not used, it is assumed that a 4MB 11x8x2, non-ECC,
- * SDRAM is soldered down.
- *
- * Notes: Expects that the stack is already setup.
- *****************************************************************************/
- .section ".text"
- .align 2
- .globl sdram_init
- .type sdram_init, @function
-sdram_init:
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -8(r1) /* Save back chain and move SP */
- stw r0, +12(r1) /* Save link register */
-
- /*
- * First call spd_sdram to try to init SDRAM according to the
- * contents of the SPD EEPROM. If the SPD EEPROM is blank or
- * erronious, spd_sdram returns 0 in R3.
- */
- li r3,0
- bl spd_sdram
- addic. r3, r3, 0 /* Check for error, save dram size */
- bne ..sdri_done /* If it worked, we're done... */
-
- /********************************************************************
- * If SPD detection fails, we'll default to 4MB, 11x8x2, as this
- * is the SMALLEST SDRAM size the 405 supports. We can do this
- * because W7O boards have soldered on RAM, and there will always
- * be some amount present. If we were using DIMMs, we should hang
- * the board instead, since it doesn't have any RAM to continue
- * running with.
- *******************************************************************/
-
- /*
- * Disable memory controller to allow
- * values to be changed.
- */
- addi r3, 0, mem_mcopt1
- mtdcr memcfga, r3
- addis r4, 0, 0x0
- ori r4, r4, 0x0
- mtdcr memcfgd, r4
-
- /*
- * Set MB0CF for ext bank 0. (0-4MB) Address Mode 5 since 11x8x2
- * All other banks are disabled.
- */
- addi r3, 0, mem_mb0cf
- mtdcr memcfga, r3
- addis r4, 0, 0x0000 /* BA=0x0, SZ=4MB */
- ori r4, r4, 0x8001 /* Mode is 5, 11x8x2or4, BE=Enabled */
- mtdcr memcfgd, r4
-
- /* Clear MB1CR,MB2CR,MB3CR to turn other banks off */
- addi r4, 0, 0 /* Zero the data reg */
-
- addi r3, r3, 4 /* Point to MB1CF reg */
- mtdcr memcfga, r3 /* Set the address */
- mtdcr memcfgd, r4 /* Zero the reg */
-
- addi r3, r3, 4 /* Point to MB2CF reg */
- mtdcr memcfga, r3 /* Set the address */
- mtdcr memcfgd, r4 /* Zero the reg */
-
- addi r3, r3, 4 /* Point to MB3CF reg */
- mtdcr memcfga, r3 /* Set the address */
- mtdcr memcfgd, r4 /* Zero the reg */
-
- /********************************************************************
- * Set the SDRAM Timing reg, SDTR1 and the refresh timer reg, RTR.
- * To set the appropriate timings, we assume sdram is
- * 100MHz (pc100 compliant).
- *******************************************************************/
-
- /*
- * Set up SDTR1
- */
- addi r3, 0, mem_sdtr1
- mtdcr memcfga, r3
- addis r4, 0, 0x0086 /* SDTR1 value for 100Mhz */
- ori r4, r4, 0x400D
- mtdcr memcfgd, r4
-
- /*
- * Set RTR
- */
- addi r3, 0, mem_rtr
- mtdcr memcfga, r3
- addis r4, 0, 0x05F0 /* RTR refresh val = 15.625ms@100Mhz */
- mtdcr memcfgd, r4
-
- /********************************************************************
- * Delay to ensure 200usec have elapsed since reset. Assume worst
- * case that the core is running 200Mhz:
- * 200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles
- *******************************************************************/
- addis r3, 0, 0x0000
- ori r3, r3, 0xA000 /* Wait 200us from reset */
- mtctr r3
-..spinlp2:
- bdnz ..spinlp2 /* spin loop */
-
- /********************************************************************
- * Set memory controller options reg, MCOPT1.
- *******************************************************************/
- addi r3, 0, mem_mcopt1
- mtdcr memcfga, r3
- addis r4, 0, 0x80E0 /* DC_EN=1,SRE=0,PME=0,MEMCHK=0 */
- ori r4, r4, 0x0000 /* REGEN=0,DRW=00,BRPF=01,ECCDD=1 */
- mtdcr memcfgd, r4 /* EMDULR=1 */
-
-..sdri_done:
- /* restore and return */
- lwz r0, +12(r1) /* Get saved link register */
- addi r1, r1, +8 /* Remove frame from stack */
- mtlr r0 /* Restore link register */
- blr /* Return to calling function */
-.Lfe1: .size sdram_init,.Lfe1-sdram_init
-/* end sdram_init() */
diff --git a/board/w7o/post1.S b/board/w7o/post1.S
deleted file mode 100644
index 21d206e7cf..0000000000
--- a/board/w7o/post1.S
+++ /dev/null
@@ -1,742 +0,0 @@
-/*
- * (C) Copyright 2001
- * Bill Hunter, Wave 7 Optics, william.hunter@mediaone.net
- * and
- * 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
- */
-/*
- * Description:
- * Routine to exercise memory for the bringing up of our boards.
- */
-#include <config.h>
-#include <ppc4xx.h>
-
-#define _LINUX_CONFIG_H 1 /* avoid reading Linux autoconf.h file */
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-#include <watchdog.h>
-
-#include "errors.h"
-
-#define _ASMLANGUAGE
-
- .globl test_sdram
- .globl test_led
- .globl log_stat
- .globl log_warn
- .globl log_err
- .globl temp_uart_init
- .globl post_puts
- .globl disp_hex
-
-/*****************************************************
-******* Text Strings for low level printing ******
-******* In section got2 *******
-*****************************************************/
-
-/*
- * Define the text strings for errors and warnings.
- * Switch to .data section.
- */
- .section ".data"
-err_str: .asciz "*** POST ERROR = "
-warn_str: .asciz "*** POST WARNING = "
-end_str: .asciz "\r\n"
-
-/*
- * Enter the labels in Global Entry Table (GOT).
- * Switch to .got2 section.
- */
- START_GOT
- GOT_ENTRY(err_str)
- GOT_ENTRY(warn_str)
- GOT_ENTRY(end_str)
- END_GOT
-
-/*
- * Switch back to .text section.
- */
- .text
-
-/****************************************
- ****************************************
- ******** LED register test ********
- ****************************************
- ***************************************/
-test_led:
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -12(r1) /* Save back chain and move SP */
- stw r0, +16(r1) /* Save link register */
- stw r4, +8(r1) /* save R4 */
-
- WATCHDOG_RESET /* Reset the watchdog */
-
- addi r3, 0, ERR_FF /* first test value is ffff */
- addi r4, r3, 0 /* save copy of pattern */
- bl set_led /* store first test value */
- bl get_led /* read it back */
- xor. r4, r4, r3 /* compare to original */
-#if defined(CONFIG_W7OLMC)
- andi. r4, r4, 0x00ff /* lmc has 8 bits */
-#else
- andi. r4, r4, 0xffff /* lmg has 16 bits */
-#endif
- beq LED2 /* next test */
- addi r3, 0, ERR_LED /* error code = 1 */
- bl log_err /* display error and halt */
-LED2: addi r3, 0, ERR_00 /* 2nd test value is 0000 */
- addi r4, r3, 0 /* save copy of pattern */
- bl set_led /* store first test value */
- bl get_led /* read it back */
- xor. r4, r4, r3 /* compare to original */
-#if defined(CONFIG_W7OLMC)
- andi. r4, r4, 0x00ff /* lmc has 8 bits */
-#else
- andi. r4, r4, 0xffff /* lmg has 16 bits */
-#endif
- beq LED3 /* next test */
- addi r3, 0, ERR_LED /* error code = 1 */
- bl log_err /* display error and halt */
-
-LED3: /* restore stack and return */
- lwz r0, +16(r1) /* Get saved link register */
- mtlr r0 /* Restore link register */
- lwz r4, +8(r1) /* restore r4 */
- addi r1, r1, +12 /* Remove frame from stack */
- blr /* Return to calling function */
-
-/****************************************
- ****************************************
- ******** SDRAM TESTS ********
- ****************************************
- ***************************************/
-test_sdram:
- /* called with mem size in r3 */
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -16(r1) /* Save back chain and move SP */
- stw r0, +20(r1) /* Save link register */
- stmw r30, +8(r1) /* save R30,R31 */
- /* r30 is log2(mem size) */
- /* r31 is mem size */
-
- /* take log2 of total mem size */
- addi r31, r3, 0 /* save total mem size */
- addi r30, 0, 0 /* clear r30 */
-l2_loop:
- srwi. r31, r31, 1 /* shift right 1 */
- addi r30, r30, 1 /* count shifts */
- bne l2_loop /* loop till done */
- addi r30, r30, -1 /* correct for over count */
- addi r31, r3, 0 /* save original size */
-
- /* now kick the dog and test the mem */
- WATCHDOG_RESET /* Reset the watchdog */
- bl Data_Buster /* test crossed/shorted data lines */
- addi r3, r30, 0 /* get log2(memsize) */
- addi r4, r31, 0 /* get memsize */
- bl Ghost_Buster /* test crossed/shorted addr lines */
- addi r3, r31, 0 /* get mem size */
- bl Bit_Buster /* check for bad internal bits */
-
- /* restore stack and return */
- lmw r30, +8(r1) /* Restore r30, r31 */
- lwz r0, +20(r1) /* Get saved link register */
- mtlr r0 /* Restore link register */
- addi r1, r1, +16 /* Remove frame from stack */
- blr /* Return to calling function */
-
-
-/****************************************
- ******** sdram data bus test ********
- ***************************************/
-Data_Buster:
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -24(r1) /* Save back chain and move SP */
- stw r0, +28(r1) /* Save link register */
- stmw r28, 8(r1) /* save r28 - r31 on stack */
- /* r31 i/o register */
- /* r30 sdram base address */
- /* r29 5555 syndrom */
- /* r28 aaaa syndrom */
-
- /* set up led register for this test */
- addi r3, 0, ERR_RAMG /* set led code to 1 */
- bl log_stat /* store test value */
- /* now test the dram data bus */
- xor r30, r30, r30 /* load r30 with base addr of sdram */
- addis r31, 0, 0x5555 /* load r31 with test value */
- ori r31, r31, 0x5555
- stw r31,0(r30) /* sto the value */
- lwz r29,0(r30) /* read it back */
- xor r29,r31,r29 /* compare it to original */
- addis r31, 0, 0xaaaa /* load r31 with test value */
- ori r31, r31, 0xaaaa
- stw r31,0(r30) /* sto the value */
- lwz r28,0(r30) /* read it back */
- xor r28,r31,r28 /* compare it to original */
- or r3,r28,r29 /* or together both error terms */
- /*
- * Now that we have the error bits,
- * we have to decide which part they are in.
- */
- bl get_idx /* r5 is now index to error */
- addi r3, r3, ERR_RAMG
- cmpwi r3, ERR_RAMG /* check for errors */
- beq db_done /* skip if no errors */
- bl log_err /* log the error */
-
-db_done:
- lmw r28, 8(r1) /* restore r28 - r31 from stack */
- lwz r0, +28(r1) /* Get saved link register */
- addi r1, r1, +24 /* Remove frame from stack */
- mtlr r0 /* Restore link register */
- blr /* Return to calling function */
-
-
-/****************************************************
- ******** test for address ghosting in dram ********
- ***************************************************/
-
-Ghost_Buster:
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -36(r1) /* Save back chain and move SP */
- stw r0, +40(r1) /* Save link register */
- stmw r25, 8(r1) /* save r25 - r31 on stack */
- /* r31 = scratch register */
- /* r30 is main referance loop counter,
- 0 to 23 */
- /* r29 is ghost loop count, 0 to 22 */
- /* r28 is referance address */
- /* r27 is ghost address */
- /* r26 is log2 (mem size) =
- number of byte addr bits */
- /* r25 is mem size */
-
- /* save the log2(mem size) and mem size */
- addi r26, r3, 0 /* r26 is number of byte addr bits */
- addi r25, r4, 0 /* r25 is mem size in bytes */
-
- /* set the leds for address ghost test */
- addi r3, 0, ERR_ADDG
- bl set_led
-
- /* first fill memory with zeros */
- srwi r31, r25, 2 /* convert bytes to longs */
- mtctr r31 /* setup byte counter */
- addi r28, 0, 0 /* start at address at 0 */
- addi r31, 0, 0 /* data value = 0 */
-clr_loop:
- stw r31, 0(r28) /* Store zero value */
- addi r28, r28, 4 /* Increment to next word */
- andi. r27, r28, 0xffff /* check for 2^16 loops */
- bne clr_skip /* if not there, then skip */
- WATCHDOG_RESET /* kick the dog every now and then */
-clr_skip:
- bdnz clr_loop /* Round and round... */
-
- /* now do main test */
- addi r30, 0, 0 /* start referance counter at 0 */
-outside:
- /*
- * Calculate the referance address
- * the referance address is calculated by setting the (r30-1)
- * bit of the base address
- * when r30=0, the referance address is the base address.
- * thus the sequence 0,1,2,4,8,..,2^(n-1)
- * setting the bit is done with the following shift functions.
- */
- WATCHDOG_RESET /* Reset the watchdog */
-
- addi r31, 0, 1 /* r31 = 1 */
- slw r28, r31, r30 /* set bit coresponding to loop cnt */
- srwi r28, r28, 1 /* then shift it right one so */
- /* we start at location 0 */
- /* fill referance address with Fs */
- addi r31, 0, 0x00ff /* r31 = one byte of set bits */
- stb r31,0(r28) /* save ff in referance address */
-
- /* ghost (inner) loop, now check all posible ghosted addresses */
- addi r29, 0, 0 /* start ghosted loop counter at 0 */
-inside:
- /*
- * Calculate the ghost address by flipping one
- * bit of referance address. This gives the
- * sequence 1,2,4,8,...,2^(n-1)
- */
- addi r31, 0, 1 /* r31 = 1 */
- slw r27, r31, r29 /* set bit coresponding to loop cnt */
- xor r27, r28, r27 /* ghost address = ref addr with
- bit flipped*/
-
- /* now check for ghosting */
- lbz r31,0(r27) /* get content of ghost addr */
- cmpwi r31, 0 /* compare read value to 0 */
- bne Casper /* we found a ghost! */
-
- /* now close ghost ( inner ) loop */
- addi r29, r29, 1 /* increment inner loop counter */
- cmpw r29, r26 /* check for last inner loop */
- blt inside /* do more inner loops */
-
- /* now close referance ( outer ) loop */
- addi r31, 0, 0 /* r31 = zero */
- stb r31, 0(28) /* zero out the altered address loc. */
- /*
- * Increment and check for end, count is zero based.
- * With the ble, this gives us one more loops than
- * address bits for sequence 0,1,2,4,8,...2^(n-1)
- */
- addi r30, r30, 1 /* increment outer loop counter */
- cmpw r30, r26 /* check for last inner loop */
- ble outside /* do more outer loops */
-
- /* were done, lets go home */
- b gb_done
-Casper: /* we found a ghost !! */
- addi r3, 0, ERR_ADDF /* get indexed error message */
- bl log_err /* log error led error code */
-gb_done: /* pack your bags, and go home */
- lmw r25, 8(r1) /* restore r25 - r31 from stack */
- lwz r0, +40(r1) /* Get saved link register */
- addi r1, r1, +36 /* Remove frame from stack */
- mtlr r0 /* Restore link register */
- blr /* Return to calling function */
-
-/****************************************************
- ******** SDRAM data fill tests **********
- ***************************************************/
-Bit_Buster:
- /* called with mem size in r3 */
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -16(r1) /* Save back chain and move SP */
- stw r0, +20(r1) /* Save link register */
- stw r4, +8(r1) /* save R4 */
- stw r5, +12(r1) /* save r5 */
-
- addis r5, r3, 0 /* save mem size */
-
- /* Test 55555555 */
- addi r3, 0, ERR_R55G /* set up error code in case we fail */
- bl log_stat /* store test value */
- addis r4, 0, 0x5555
- ori r4, r4, 0x5555
- bl fill_test
-
- /* Test aaaaaaaa */
- addi r3, 0, ERR_RAAG /* set up error code in case we fail */
- bl log_stat /* store test value */
- addis r4, 0, 0xAAAA
- ori r4, r4, 0xAAAA
- bl fill_test
-
- /* Test 00000000 */
- addi r3, 0, ERR_R00G /* set up error code in case we fail */
- bl log_stat /* store test value */
- addis r4, 0, 0
- ori r4, r4, 0
- bl fill_test
-
- /* restore stack and return */
- lwz r5, +12(r1) /* restore r4 */
- lwz r4, +8(r1) /* restore r4 */
- lwz r0, +20(r1) /* Get saved link register */
- addi r1, r1, +16 /* Remove frame from stack */
- mtlr r0 /* Restore link register */
- blr /* Return to calling function */
-
-
-/****************************************************
- ******** fill test ********
- ***************************************************/
-/* tests memory by filling with value, and reading back */
-/* r5 = Size of memory in bytes */
-/* r4 = Value to write */
-/* r3 = Error code */
-fill_test:
- mflr r0 /* Get link register */
- stwu r1, -32(r1) /* Save back chain and move SP */
- stw r0, +36(r1) /* Save link register */
- stmw r27, 8(r1) /* save r27 - r31 on stack */
- /* r31 - scratch register */
- /* r30 - memory address */
- mr r27, r3
- mr r28, r4
- mr r29, r5
-
- WATCHDOG_RESET /* Reset the watchdog */
-
- /* first fill memory with Value */
- srawi r31, r29, 2 /* convert bytes to longs */
- mtctr r31 /* setup counter */
- addi r30, 0, 0 /* Make r30 = addr 0 */
-ft_0: stw r28, 0(r30) /* Store value */
- addi r30, r30, 4 /* Increment to next word */
- andi. r31, r30, 0xffff /* check for 2^16 loops */
- bne ft_0a /* if not there, then skip */
- WATCHDOG_RESET /* kick the dog every now and then */
-ft_0a: bdnz ft_0 /* Round and round... */
-
- WATCHDOG_RESET /* Reset the watchdog */
-
- /* Now confirm Value is in memory */
- srawi r31, r29, 2 /* convert bytes to longs */
- mtctr r31 /* setup counter */
- addi r30, 0, 0 /* Make r30 = addr 0 */
-ft_1: lwz r31, 0(r30) /* get value from memory */
- xor. r31, r31, r28 /* Writen = Read ? */
- bne ft_err /* If bad, than halt */
- addi r30, r30, 4 /* Increment to next word */
- andi. r31, r30, 0xffff /* check for 2^16 loops*/
- bne ft_1a /* if not there, then skip */
- WATCHDOG_RESET /* kick the dog every now and then */
-ft_1a: bdnz ft_1 /* Round and round... */
-
- WATCHDOG_RESET /* Reset the watchdog */
-
- b fill_done /* restore and return */
-
-ft_err: addi r29, r27, 0 /* save current led code */
- addi r27, r31, 0 /* get pattern in r27 */
- bl get_idx /* get index from r27 */
- add r27, r27, r29 /* add index to old led code */
- bl log_err /* output led err code, halt CPU */
-
-fill_done:
- lmw r27, 8(r1) /* restore r27 - r31 from stack */
- lwz r0, +36(r1) /* Get saved link register */
- addi r1, r1, +32 /* Remove frame from stack */
- mtlr r0 /* Restore link register */
- blr /* Return to calling function */
-
-
-/****************************************************
- ******* get error index from r3 pattern ********
- ***************************************************/
-get_idx: /* r3 = (MSW(r3) !=0)*2 +
- (LSW(r3) !=0) */
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -12(r1) /* Save back chain and move SP */
- stw r0, +16(r1) /* Save link register */
- stw r4, +8(r1) /* save R4 */
-
- andi. r4, r3, 0xffff /* check for lower bits */
- beq gi2 /* skip if no bits set */
- andis. r4, r3, 0xffff /* check for upper bits */
- beq gi3 /* skip if no bits set */
- addi r3, 0, 3 /* both upper and lower bits set */
- b gi_done
-gi2: andis. r4, r3, 0xffff /* check for upper bits*/
- beq gi4 /* skip if no bits set */
- addi r3, 0, 2 /* only upper bits set */
- b gi_done
-gi3: addi r3, 0, 1 /* only lower bits set */
- b gi_done
-gi4: addi r3, 0, 0 /* no bits set */
-gi_done:
- /* restore stack and return */
- lwz r0, +16(r1) /* Get saved link register */
- mtlr r0 /* Restore link register */
- lwz r4, +8(r1) /* restore r4 */
- addi r1, r1, +12 /* Remove frame from stack */
- blr /* Return to calling function */
-
-/****************************************************
- ******** set LED to R5 and hang ********
- ***************************************************/
-log_stat: /* output a led code and continue */
-set_led:
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -12(r1) /* Save back chain and move SP */
- stw r0, +16(r1) /* Save link register */
- stw r4, +8(r1) /* save R4 */
-
- addis r4, 0, 0xfe00 /* LED buffer is at 0xfe000000 */
-#if defined(CONFIG_W7OLMG) /* only on gateway, invert outputs */
- xori r3,r3, 0xffff /* complement led code, active low */
- sth r3, 0(r4) /* store first test value */
- xori r3,r3, 0xffff /* complement led code, active low */
-#else /* if not gateway, then don't invert */
- sth r3, 0(r4) /* store first test value */
-#endif
-
- /* restore stack and return */
- lwz r0, +16(r1) /* Get saved link register */
- mtlr r0 /* Restore link register */
- lwz r4, +8(r1) /* restore r4 */
- addi r1, r1, +12 /* Remove frame from stack */
- blr /* Return to calling function */
-
-get_led:
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -12(r1) /* Save back chain and move SP */
- stw r0, +16(r1) /* Save link register */
- stw r4, +8(r1) /* save R4 */
-
- addis r4, 0, 0xfe00 /* LED buffer is at 0xfe000000 */
- lhz r3, 0(r4) /* store first test value */
-#if defined(CONFIG_W7OLMG) /* only on gateway, invert inputs */
- xori r3,r3, 0xffff /* complement led code, active low */
-#endif
-
- /* restore stack and return */
- lwz r0, +16(r1) /* Get saved link register */
- mtlr r0 /* Restore link register */
- lwz r4, +8(r1) /* restore r4 */
- addi r1, r1, +12 /* Remove frame from stack */
- blr /* Return to calling function */
-
-log_err: /* output the error and hang the board ( for now ) */
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -12(r1) /* Save back chain and move SP */
- stw r0, +16(r1) /* Save link register */
- stw r3, +8(r1) /* save a copy of error code */
- bl set_led /* set the led pattern */
- GET_GOT /* get GOT address in r14 */
- lwz r3,GOT(err_str) /* get address of string */
- bl post_puts /* output the warning string */
- lwz r3, +8(r1) /* get error code */
- addi r4, 0, 2 /* set disp length to 2 nibbles */
- bl disp_hex /* output the error code */
- lwz r3,GOT(end_str) /* get address of string */
- bl post_puts /* output the warning string */
-halt:
- b halt /* hang */
-
- /* restore stack and return */
- lwz r0, +16(r1) /* Get saved link register */
- mtlr r0 /* Restore link register */
- addi r1, r1, +12 /* Remove frame from stack */
- blr /* Return to calling function */
-
-log_warn: /* output a warning, then continue with operations */
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -16(r1) /* Save back chain and move SP */
- stw r0, +20(r1) /* Save link register */
- stw r3, +8(r1) /* save a copy of error code */
- stw r14, +12(r1) /* save a copy of r14 (used by GOT) */
-
- bl set_led /* set the led pattern */
- GET_GOT /* get GOT address in r14 */
- lwz r3,GOT(warn_str) /* get address of string */
- bl post_puts /* output the warning string */
- lwz r3, +8(r1) /* get error code */
- addi r4, 0, 2 /* set disp length to 2 nibbles */
- bl disp_hex /* output the error code */
- lwz r3,GOT(end_str) /* get address of string */
- bl post_puts /* output the warning string */
-
- addis r3, 0, 64 /* has a long delay */
- mtctr r3
-log_2:
- WATCHDOG_RESET /* this keeps dog from barking, */
- /* and takes time */
- bdnz log_2 /* loop till time expires */
-
- /* restore stack and return */
- lwz r0, +20(r1) /* Get saved link register */
- lwz r14, +12(r1) /* restore r14 */
- mtlr r0 /* Restore link register */
- addi r1, r1, +16 /* Remove frame from stack */
- blr /* Return to calling function */
-
-/*******************************************************************
- * temp_uart_init
- * Temporary UART initialization routine
- * Sets up UART0 to run at 9600N81 off of the internal clock.
- * R3-R4 are used.
- ******************************************************************/
-temp_uart_init:
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -8(r1) /* Save back chain and move SP */
- stw r0, +12(r1) /* Save link register */
-
- addis r3, 0, 0xef60
- ori r3, r3, 0x0303 /* r3 = UART0_LCR */
- addi r4, 0, 0x83 /* n81 format, divisor regs enabled */
- stb r4, 0(r3)
-
- /* set baud rate to use internal clock,
- baud = (200e6/16)/31/42 = 9600 */
-
- addis r3, 0, 0xef60 /* Address of baud divisor reg */
- ori r3, r3, 0x0300 /* UART0_DLM */
- addi r4, 0, +42 /* uart baud divisor LSB = 93 */
- stb r4, 0(r3) /* baud = (200 /16)/14/93 */
-
- addi r3, r3, 0x0001 /* uart baud divisor addr */
- addi r4, 0, 0
- stb r4, 0(r3) /* Divisor Latch MSB = 0 */
-
- addis r3, 0, 0xef60
- ori r3, r3, 0x0303 /* r3 = UART0_LCR */
- addi r4, 0, 0x03 /* n81 format, tx/rx regs enabled */
- stb r4, 0(r3)
-
- /* output a few line feeds */
- addi r3, 0, '\n' /* load line feed */
- bl post_putc /* output the char */
- addi r3, 0, '\n' /* load line feed */
- bl post_putc /* output the char */
-
- /* restore stack and return */
- lwz r0, +12(r1) /* Get saved link register */
- mtlr r0 /* Restore link register */
- addi r1, r1, +8 /* Remove frame from stack */
- blr /* Return to calling function */
-
-/**********************************************************************
- ** post_putc
- ** outputs charactor in R3
- ** r3 returns the error code ( -1 if there is an error )
- *********************************************************************/
-
-post_putc:
-
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -20(r1) /* Save back chain and move SP */
- stw r0, +24(r1) /* Save link register */
- stmw r29, 8(r1) /* save r29 - r31 on stack
- r31 - uart base address
- r30 - delay counter
- r29 - scratch reg */
-
- addis r31, 0, 0xef60 /* Point to uart base */
- ori r31, r31, 0x0300
- addis r30, 0, 152 /* Load about 10,000,000 ticks. */
-pputc_lp:
- lbz r29, 5(r31) /* Read Line Status Register */
- andi. r29, r29, 0x20 /* Check THRE status */
- bne thre_set /* Branch if FIFO empty */
- addic. r30, r30, -1 /* Decrement and check if empty. */
- bne pputc_lp /* Try, try again */
- addi r3, 0, -1 /* Load error code for timeout */
- b pputc_done /* Bail out with error code set */
-thre_set:
- stb r3, 0(r31) /* Store character to UART */
- addi r3, 0, 0 /* clear error code */
-pputc_done:
- lmw r29, 8(r1) /*restore r29 - r31 from stack */
- lwz r0, +24(r1) /* Get saved link register */
- addi r1, r1, +20 /* Remove frame from stack */
- mtlr r0 /* Restore link register */
- blr /* Return to calling function */
-
-
-/****************************************************************
- post_puts
- Accepts a null-terminated string pointed to by R3
- Outputs to the serial port until 0x00 is found.
- r3 returns the error code ( -1 if there is an error )
-*****************************************************************/
-post_puts:
-
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -12(r1) /* Save back chain and move SP */
- stw r0, +16(r1) /* Save link register */
- stw r31, 8(r1) /* save r31 - char pointer */
-
- addi r31, r3, 0 /* move pointer to R31 */
-pputs_nxt:
- lbz r3, 0(r31) /* Get next character */
- addic. r3, r3, 0 /* Check for zero */
- beq pputs_term /* bail out if zero */
- bl post_putc /* output the char */
- addic. r3, r3, 0 /* check for error */
- bne pputs_err
- addi r31, r31, 1 /* point to next char */
- b pputs_nxt /* loop till term */
-pputs_err:
- addi r3, 0, -1 /* set error code */
- b pputs_end /* were outa here */
-pputs_term:
- addi r3, 0, 1 /* set success code */
- /* restore stack and return */
-pputs_end:
- lwz r31, 8(r1) /* restore r27 - r31 from stack */
- lwz r0, +16(r1) /* Get saved link register */
- addi r1, r1, +12 /* Remove frame from stack */
- mtlr r0 /* Restore link register */
- blr /* Return to calling function */
-
-
-/********************************************************************
- ***** disp_hex
- ***** Routine to display a hex value from a register.
- ***** R3 is value to display
- ***** R4 is number of nibbles to display ie 2 for byte 8 for (long)word
- ***** Returns -1 in R3 if there is an error ( ie serial port hangs )
- ***** Returns 0 in R3 if no error
- *******************************************************************/
-disp_hex:
- /* save the return info on stack */
- mflr r0 /* Get link register */
- stwu r1, -16(r1) /* Save back chain and move SP */
- stw r0, +20(r1) /* Save link register */
- stmw r30, 8(r1) /* save r30 - r31 on stack */
- /* r31 output char */
- /* r30 uart base address */
- addi r30, 0, 8 /* Go through 8 nibbles. */
- addi r31, r3, 0
-pputh_nxt:
- rlwinm r31, r31, 4, 0, 31 /* Rotate next nibble into position */
- andi. r3, r31, 0x0f /* Get nibble. */
- addi r3, r3, 0x30 /* Add zero's ASCII code. */
- cmpwi r3, 0x03a
- blt pputh_out
- addi r3, r3, 0x07 /* 0x27 for lower case. */
-pputh_out:
- cmpw r30, r4
- bgt pputh_skip
- bl post_putc
- addic. r3, r3, 0 /* check for error */
- bne pputh_err
-pputh_skip:
- addic. r30, r30, -1
- bne pputh_nxt
- xor r3, r3, r3 /* Clear error code */
- b pputh_done
-pputh_err:
- addi r3, 0, -1 /* set error code */
-pputh_done:
- /* restore stack and return */
- lmw r30, 8(r1) /* restore r30 - r31 from stack */
- lwz r0, +20(r1) /* Get saved link register */
- addi r1, r1, +16 /* Remove frame from stack */
- mtlr r0 /* Restore link register */
- blr /* Return to calling function */
diff --git a/board/w7o/post2.c b/board/w7o/post2.c
deleted file mode 100644
index e590128244..0000000000
--- a/board/w7o/post2.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * (C) Copyright 2001
- * Bill Hunter, Wave 7 Optics, williamhunter@mediaone.net
- * and
- * 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
- */
-
-#include <common.h>
-#include <config.h>
-#include <rtc.h>
-#include "errors.h"
-#include "dtt.h"
-
-#if defined(CONFIG_RTC_M48T35A)
-void rtctest(void)
-{
- volatile uchar *tchar = (uchar*)(CFG_NVRAM_BASE_ADDR + CFG_NVRAM_SIZE - 9);
- struct rtc_time tmp;
-
- /* set up led code for RTC tests */
- log_stat(ERR_RTCG);
-
- /*
- * Do RTC battery test. The first write after power up
- * fails if battery is low.
- */
- *tchar = 0xaa;
- if ((*tchar ^ 0xaa) != 0x0) log_warn(ERR_RTCBAT);
- *tchar = 0x55; /* Reset test address */
-
- /*
- * Now lets check the validity of the values in the RTC.
- */
- rtc_get(&tmp);
- if ((tmp.tm_sec < 0) | (tmp.tm_sec > 59) |
- (tmp.tm_min < 0) | (tmp.tm_min > 59) |
- (tmp.tm_hour < 0) | (tmp.tm_hour > 23) |
- (tmp.tm_mday < 1 ) | (tmp.tm_mday > 31) |
- (tmp.tm_mon < 1 ) | (tmp.tm_mon > 12) |
- (tmp.tm_year < 2000) | (tmp.tm_year > 2500) |
- (tmp.tm_wday < 1 ) | (tmp.tm_wday > 7)) {
- log_warn(ERR_RTCTIM);
- rtc_reset();
- }
-
- /*
- * Now lets do a check to see if the NV RAM is there.
- */
- *tchar = 0xaa;
- if ((*tchar ^ 0xaa) != 0x0) log_err(ERR_RTCVAL);
- *tchar = 0x55; /* Reset test address */
-
-} /* rtctest() */
-#endif /* CONFIG_RTC_M48T35A */
-
-
-#ifdef CONFIG_DTT_LM75
-int dtt_test(int sensor)
-{
- short temp, trip, hyst;
-
- /* get values */
- temp = dtt_read(sensor, DTT_READ_TEMP) / 256;
- trip = dtt_read(sensor, DTT_TEMP_SET) / 256;
- hyst = dtt_read(sensor, DTT_TEMP_HYST) / 256;
-
- /* check values */
- if ((hyst != (CFG_DTT_MAX_TEMP - CFG_DTT_HYSTERESIS)) ||
- (trip != CFG_DTT_MAX_TEMP) ||
- (temp < CFG_DTT_LOW_TEMP) || (temp > CFG_DTT_MAX_TEMP))
- return 1;
-
- return 0;
-} /* dtt_test() */
-#endif /* CONFIG_DTT_LM75 */
-
-/*****************************************/
-
-void post2(void)
-{
-#if defined(CONFIG_RTC_M48T35A)
- rtctest();
-#endif /* CONFIG_RTC_M48T35A */
-
-#ifdef CONFIG_DTT_LM75
- log_stat(ERR_TempG);
- if(dtt_test(2) != 0) log_warn(ERR_Ttest0);
- if(dtt_test(4) != 0) log_warn(ERR_Ttest1);
-#endif /* CONFIG_DTT_LM75 */
-} /* post2() */
diff --git a/board/w7o/u-boot.lds b/board/w7o/u-boot.lds
deleted file mode 100644
index 7e3e15dc2e..0000000000
--- a/board/w7o/u-boot.lds
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * (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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- /* 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/ppc4xx/start.o (.text)
- board/w7o/init.o (.text)
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/w7o/u-boot.lds.debug b/board/w7o/u-boot.lds.debug
deleted file mode 100644
index a0c72c9210..0000000000
--- a/board/w7o/u-boot.lds.debug
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
-
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/w7o/vpd.c b/board/w7o/vpd.c
deleted file mode 100644
index 2ce15680e1..0000000000
--- a/board/w7o/vpd.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * (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
- */
-
-#if defined(VXWORKS)
-# include <stdio.h>
-# include <string.h>
-# define CFG_DEF_EEPROM_ADDR 0xa0
-extern char iicReadByte( char, char );
-extern ulong_t crc32( unsigned char *, unsigned long );
-#else
-#include <common.h>
-#endif
-
-#include "vpd.h"
-
-/*
- * vpd_reader() - reads VPD data from I2C EEPROMS.
- * returns pointer to buffer or NULL.
- */
-static unsigned char *
-vpd_reader(unsigned char *buf, unsigned dev_addr, unsigned off, unsigned count)
-{
- unsigned offset = off; /* Calculated offset */
-
- /*
- * The main board EEPROM contains
- * SDRAM SPD in the first 128 bytes,
- * so skew the offset.
- */
- if (dev_addr == CFG_DEF_EEPROM_ADDR)
- offset += SDRAM_SPD_DATA_SIZE;
-
- /* Try to read the I2C EEPROM */
-#if defined(VXWORKS)
- {
- int i;
- for( i = 0; i < count; ++i ) {
- buf[ i ] = iicReadByte( dev_addr, offset+i );
- }
- }
-#else
- if (eeprom_read(dev_addr, offset, buf, count)) {
- printf("Failed to read %d bytes from VPD EEPROM 0x%x @ 0x%x\n",
- count, dev_addr, offset);
- return NULL;
- }
-#endif
-
- return buf;
-} /* vpd_reader() */
-
-
-/*
- * vpd_get_packet() - returns next VPD packet or NULL.
- */
-static vpd_packet_t *vpd_get_packet(vpd_packet_t *vpd_packet)
-{
- vpd_packet_t *packet = vpd_packet;
-
- if (packet != NULL) {
- if (packet->identifier == VPD_PID_TERM)
- return NULL;
- else
- packet = (vpd_packet_t *)((char *)packet + packet->size + 2);
- }
-
- return packet;
-} /* vpd_get_packet() */
-
-
-/*
- * vpd_find_packet() - Locates and returns the specified
- * VPD packet or NULL on error.
- */
-static vpd_packet_t *vpd_find_packet(vpd_t *vpd, unsigned char ident)
-{
- vpd_packet_t *packet = (vpd_packet_t *)&vpd->packets;
-
- /* Guaranteed illegal */
- if (ident == VPD_PID_GI)
- return NULL;
-
- /* Scan tuples looking for a match */
- while ((packet->identifier != ident) &&
- (packet->identifier != VPD_PID_TERM))
- packet = vpd_get_packet(packet);
-
- /* Did we find it? */
- if ((packet->identifier) && (packet->identifier != ident))
- return NULL;
- return packet;
-}
-
-
-/*
- * vpd_is_valid() - Validates contents of VPD data
- * in I2C EEPROM. Returns 1 for
- * success or 0 for failure.
- */
-static int vpd_is_valid(unsigned dev_addr, unsigned char *buf)
-{
- unsigned num_bytes;
- vpd_packet_t *packet;
- vpd_t *vpd = (vpd_t *)buf;
- unsigned short stored_crc16, calc_crc16 = 0xffff;
-
- /* Check Eyecatcher */
- if (strncmp((char *)(vpd->header.eyecatcher), VPD_EYECATCHER, VPD_EYE_SIZE) != 0) {
- unsigned offset = 0;
- if (dev_addr == CFG_DEF_EEPROM_ADDR)
- offset += SDRAM_SPD_DATA_SIZE;
- printf("Error: VPD EEPROM 0x%x corrupt @ 0x%x\n", dev_addr, offset);
-
- return 0;
- }
-
- /* Check Length */
- if (vpd->header.size> VPD_MAX_EEPROM_SIZE) {
- printf("Error: VPD EEPROM 0x%x contains bad size 0x%x\n",
- dev_addr, vpd->header.size);
- return 0;
- }
-
- /* Now find the termination packet */
- if ((packet = vpd_find_packet(vpd, VPD_PID_TERM)) == NULL) {
- printf("Error: VPD EEPROM 0x%x missing termination packet\n",
- dev_addr);
- return 0;
- }
-
- /* Calculate data size */
- num_bytes = (unsigned long)((unsigned char *)packet -
- (unsigned char *)vpd + sizeof(vpd_packet_t));
-
- /* Find stored CRC and clear it */
- if ((packet = vpd_find_packet(vpd, VPD_PID_CRC)) == NULL) {
- printf("Error: VPD EEPROM 0x%x missing CRC\n", dev_addr);
- return 0;
- }
- stored_crc16 = *((ushort *)packet->data);
- *(ushort *)packet->data = 0;
-
- /* OK, lets calculate the CRC and check it */
-#if defined(VXWORKS)
- calc_crc16 = (0xffff & crc32(buf, num_bytes));
-#else
- calc_crc16 = (0xffff & crc32(0, buf, num_bytes));
-#endif
- *(ushort *)packet->data = stored_crc16; /* Now restore the CRC */
- if (stored_crc16 != calc_crc16) {
- printf("Error: VPD EEPROM 0x%x has bad CRC 0x%x\n",
- dev_addr, stored_crc16);
- return 0;
- }
-
- return 1;
-} /* vpd_is_valid() */
-
-
-/*
- * size_ok() - Check to see if packet size matches
- * size of data we want. Returns 1 for
- * good match or 0 for failure.
- */
-static int size_ok(vpd_packet_t *packet, unsigned long size)
-{
- if (packet->size != size) {
- printf("VPD Packet 0x%x corrupt.\n", packet->identifier);
- return 0;
- }
- return 1;
-} /* size_ok() */
-
-
-/*
- * strlen_ok() - Check to see if packet size matches
- * strlen of the string we want to populate.
- * Returns 1 for valid length or 0 for failure.
- */
-static int strlen_ok(vpd_packet_t *packet, unsigned long length)
-{
- if (packet->size >= length) {
- printf("VPD Packet 0x%x corrupt.\n", packet->identifier);
- return 0;
- }
- return 1;
-} /* strlen_ok() */
-
-
-/*
- * get_vpd_data() - populates the passed VPD structure 'vpdInfo'
- * with data obtained from the specified
- * I2C EEPROM 'dev_addr'. Returns 0 for
- * success or 1 for failure.
- */
-int vpd_get_data(unsigned char dev_addr, VPD *vpdInfo)
-{
- unsigned char buf[VPD_EEPROM_SIZE];
- vpd_t *vpd = (vpd_t *)buf;
- vpd_packet_t *packet;
-
- if (vpdInfo == NULL)
- return 1;
-
- /*
- * Fill vpdInfo with 0s to blank out
- * unused fields, fill vpdInfo->ethAddrs
- * with all 0xffs so that other's code can
- * determine how many real Ethernet addresses
- * there are. OUIs starting with 0xff are
- * broadcast addresses, and would never be
- * permantely stored.
- */
- memset((void *)vpdInfo, 0, sizeof(VPD));
- memset((void *)&vpdInfo->ethAddrs, 0xff, sizeof(vpdInfo->ethAddrs));
- vpdInfo->_devAddr = dev_addr;
-
- /* Read the minimum size first */
- if (vpd_reader(buf, dev_addr, 0, VPD_EEPROM_SIZE) == NULL) {
- return 1;
- }
-
- /* Check validity of VPD data */
- if (!vpd_is_valid(dev_addr, buf)) {
- printf("VPD Data is INVALID!\n");
- return 1;
- }
-
- /*
- * Walk all the packets and populate
- * the VPD info structure.
- */
- packet = (vpd_packet_t *)&vpd->packets;
- do {
- switch (packet->identifier) {
- case VPD_PID_GI:
- printf("Error: Illegal VPD value\n");
- break;
- case VPD_PID_PID:
- if (strlen_ok(packet, MAX_PROD_ID)) {
- strncpy(vpdInfo->productId,
- (char *)(packet->data), packet->size);
- }
- break;
- case VPD_PID_REV:
- if (size_ok(packet, sizeof(char)))
- vpdInfo->revisionId = *packet->data;
- break;
- case VPD_PID_SN:
- if (size_ok(packet, sizeof(unsigned long))) {
- vpdInfo->serialNum =
- *(unsigned long *)packet->data;
- }
- break;
- case VPD_PID_MANID:
- if (size_ok(packet, sizeof(unsigned char)))
- vpdInfo->manuID = *packet->data;
- break;
- case VPD_PID_PCO:
- if (size_ok(packet, sizeof(unsigned long))) {
- vpdInfo->configOpt =
- *(unsigned long *)packet->data;
- }
- break;
- case VPD_PID_SYSCLK:
- if (size_ok(packet, sizeof(unsigned long)))
- vpdInfo->sysClk = *(unsigned long *)packet->data;
- break;
- case VPD_PID_SERCLK:
- if (size_ok(packet, sizeof(unsigned long)))
- vpdInfo->serClk = *(unsigned long *)packet->data;
- break;
- case VPD_PID_FLASH:
- if (size_ok(packet, 9)) { /* XXX - hardcoded,
- padding in struct */
- memcpy(&vpdInfo->flashCfg, packet->data, 9);
- }
- break;
- case VPD_PID_ETHADDR:
- memcpy(vpdInfo->ethAddrs, packet->data, packet->size);
- break;
- case VPD_PID_POTS:
- if (size_ok(packet, sizeof(char)))
- vpdInfo->numPOTS = (unsigned)*packet->data;
- break;
- case VPD_PID_DS1:
- if (size_ok(packet, sizeof(char)))
- vpdInfo->numDS1 = (unsigned)*packet->data;
- case VPD_PID_GAL:
- case VPD_PID_CRC:
- case VPD_PID_TERM:
- break;
- default:
- printf("Warning: Found unknown VPD packet ID 0x%x\n",
- packet->identifier);
- break;
- }
- } while ((packet = vpd_get_packet(packet)));
-
- return 0;
-} /* end get_vpd_data() */
-
-
-/*
- * vpd_init() - Initialize default VPD environment
- */
-int vpd_init(unsigned char dev_addr)
-{
- return (0);
-} /* vpd_init() */
-
-
-/*
- * vpd_print() - Pretty print the VPD data.
- */
-void vpd_print(VPD *vpdInfo)
-{
- const char *const sp = "";
- const char *const sfmt = "%4s%-20s: \"%s\"\n";
- const char *const cfmt = "%4s%-20s: '%c'\n";
- const char *const dfmt = "%4s%-20s: %ld\n";
- const char *const hfmt = "%4s%-20s: %08lX\n";
- const char *const dsfmt = "%4s%-20s: %d\n";
- const char *const hsfmt = "%4s%-20s: %04X\n";
- const char *const dhfmt = "%4s%-20s: %ld (%lX)\n";
-
- printf("VPD read from I2C device: %02X\n", vpdInfo->_devAddr);
-
- if (vpdInfo->productId[0])
- printf(sfmt, sp, "Product ID", vpdInfo->productId);
- else
- printf(sfmt, sp, "Product ID", "UNKNOWN");
-
- if (vpdInfo->revisionId)
- printf(cfmt, sp, "Revision ID", vpdInfo->revisionId);
-
- if (vpdInfo->serialNum)
- printf(dfmt, sp, "Serial Number", vpdInfo->serialNum);
-
- if (vpdInfo->manuID)
- printf(dfmt, sp, "Manufacture ID", (long)vpdInfo->manuID);
-
- if (vpdInfo->configOpt)
- printf(hfmt, sp, "Configuration", vpdInfo->configOpt);
-
- if (vpdInfo->sysClk)
- printf(dhfmt, sp, "System Clock", vpdInfo->sysClk, vpdInfo->sysClk);
-
- if (vpdInfo->serClk)
- printf(dhfmt, sp, "Serial Clock", vpdInfo->serClk, vpdInfo->serClk);
-
- if (vpdInfo->numPOTS)
- printf(dfmt, sp, "Number of POTS lines", vpdInfo->numPOTS);
-
- if (vpdInfo->numDS1)
- printf(dfmt, sp, "Number of DS1s", vpdInfo->numDS1);
-
- /* Print Ethernet Addresses */
- if (vpdInfo->ethAddrs[0][0] != 0xff) {
- int i, j;
- printf("%4sEtherNet Address(es): ", sp);
- for (i = 0; i < MAX_ETH_ADDRS; i++) {
- if (vpdInfo->ethAddrs[i][0] != 0xff) {
- for (j = 0; j < 6; j++) {
- printf("%02X", vpdInfo->ethAddrs[i][j]);
- if (((j + 1) % 6) != 0)
- printf(":");
- else
- printf(" ");
- }
- if (((i + 1) % 3) == 0) printf("\n%24s: ", sp);
- }
- }
- printf("\n");
- }
-
- if (vpdInfo->flashCfg.mfg && vpdInfo->flashCfg.dev) {
- printf("Main Flash Configuration:\n");
- printf(hsfmt, sp, "Manufacture ID", vpdInfo->flashCfg.mfg);
- printf(hsfmt, sp, "Device ID", vpdInfo->flashCfg.dev);
- printf(dsfmt, sp, "Device Width", vpdInfo->flashCfg.devWidth);
- printf(dsfmt, sp, "Num. Devices", vpdInfo->flashCfg.numDevs);
- printf(dsfmt, sp, "Num. Columns", vpdInfo->flashCfg.numCols);
- printf(dsfmt, sp, "Column Width", vpdInfo->flashCfg.colWidth);
- printf(dsfmt, sp, "WE Data Width", vpdInfo->flashCfg.weDataWidth);
- }
-} /* vpd_print() */
diff --git a/board/w7o/vpd.h b/board/w7o/vpd.h
deleted file mode 100644
index 1b71c8d0fa..0000000000
--- a/board/w7o/vpd.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * (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
- */
-
-#ifndef _VPD_H_
-#define _VPD_H_
-
-/*
- * Main Flash Configuration.
- */
-typedef struct flashCfg_s {
- unsigned short mfg; /* Manufacture ID */
- unsigned short dev; /* Device ID */
- unsigned char devWidth; /* Device Width */
- unsigned char numDevs; /* Number of devices */
- unsigned char numCols; /* Number of columns */
- unsigned char colWidth; /* Width of a column */
- unsigned char weDataWidth; /* Write/Erase Data Width */
-} flashCfg_t;
-
-/*
- * Vital Product Data - VPD
- */
-#define MAX_PROD_ID 15
-#define MAX_ETH_ADDRS 10
-typedef unsigned char EthAddr[6];
-typedef struct vpd {
- unsigned char _devAddr; /* Device address during read */
- char productId[MAX_PROD_ID]; /* Product ID */
- char revisionId; /* Revision ID as a char */
- unsigned long serialNum; /* Serial number */
- unsigned char manuID; /* Manufact ID - byte int */
- unsigned long configOpt; /* Config Option - bit field */
- unsigned long sysClk; /* System clock in Hertz */
- unsigned long serClk; /* Ext. clock in Hertz */
- flashCfg_t flashCfg; /* Flash configuration */
- unsigned long numPOTS; /* Number of POTS lines */
- unsigned long numDS1; /* Number of DS1 circuits */
- EthAddr ethAddrs[MAX_ETH_ADDRS]; /* Ethernet MAC, 1st = craft */
-} VPD;
-
-
-#define VPD_MAX_EEPROM_SIZE 512 /* Max size VPD EEPROM */
-#define SDRAM_SPD_DATA_SIZE 128 /* Size SPD in VPD EEPROM */
-
-/*
- * PIDs - Packet Identifiers
- */
-#define VPD_PID_GI 0x0 /* Guaranted Illegal */
-#define VPD_PID_PID 0x1 /* Product Identifier */
-#define VPD_PID_REV 0x2 /* Product Revision */
-#define VPD_PID_SN 0x3 /* Serial Number */
-#define VPD_PID_MANID 0x4 /* Manufacture ID */
-#define VPD_PID_PCO 0x5 /* Product configuration */
-#define VPD_PID_SYSCLK 0x6 /* System Clock */
-#define VPD_PID_SERCLK 0x7 /* Ser. Clk. Speed in Hertz */
-#define VPD_PID_CRC 0x8 /* VPD CRC */
-#define VPD_PID_FLASH 0x9 /* Flash Configuration */
-#define VPD_PID_ETHADDR 0xA /* Ethernet Address(es) */
-#define VPD_PID_GAL 0xB /* Galileo Switch Config */
-#define VPD_PID_POTS 0xC /* Number of POTS Lines */
-#define VPD_PID_DS1 0xD /* Number of DS1s */
-#define VPD_PID_TERM 0xFF /* Termination packet */
-
-/*
- * VPD - Eyecatcher/Magic
- */
-#define VPD_EYECATCHER "W7O"
-#define VPD_EYE_SIZE 3
-typedef struct vpd_header {
- unsigned char eyecatcher[VPD_EYE_SIZE]; /* eyecatcher - "W7O" */
- unsigned short size __attribute__((packed)); /* size of EEPROM */
-} vpd_header_t;
-
-
-#define VPD_DATA_SIZE (VPD_MAX_EEPROM_SIZE - SDRAM_SPD_DATA_SIZE - \
- sizeof(vpd_header_t))
-typedef struct vpd_s {
- vpd_header_t header;
- unsigned char packets[VPD_DATA_SIZE];
-} vpd_t;
-
-typedef struct vpd_packet {
- unsigned char identifier;
- unsigned char size;
- unsigned char data[1];
-} vpd_packet_t;
-
-/*
- * VPD configOpt bit mask
- */
-#define VPD_HAS_BBRAM 0x1 /* Battery backed SRAM */
-#define VPD_HAS_RTC 0x2 /* Battery backed RTC */
-#define VPD_HAS_EXT_SER_CLK 0x4 /* External serial clock */
-#define VPD_HAS_SER_TRANS_1 0x8 /* COM1 transceiver */
-#define VPD_HAS_SER_TRANS_2 0x10 /* COM2 transceiver */
-#define VPD_HAS_CRAFT_PHY 0x20 /* CRAFT Ethernet */
-#define VPD_HAS_DTT_1 0x40 /* I2C Digital therm. #1 */
-#define VPD_HAS_DTT_2 0x80 /* I2C Digital therm. #2 */
-#define VPD_HAS_1000_UP_LASER 0x100 /* GMM - 1000Mbit Uplink */
-#define VPD_HAS_70KM_UP_LASER 0x200 /* CMM - 70KM Uplink laser */
-#define VPD_HAS_2_UPLINKS 0x400 /* CMM - 2 uplink lasers */
-#define VPD_HAS_FPGA 0x800 /* Has 1 or more FPGAs */
-#define VPD_HAS_DFA 0x1000 /* CLM - Has 2 Fiber Inter. */
-#define VPD_HAS_GAL_SWITCH 0x2000 /* GMM - Has a Gal switch */
-#define VPD_HAS_POTS_LINES 0x4000 /* GMM - Has POTS lines */
-#define VPD_HAS_DS1_CHANNELS 0x8000 /* GMM - Has DS1 channels */
-#define VPD_HAS_CABLE_RETURN 0x10000 /* GBM/GBR - Cable ret. path */
-
-#define VPD_EEPROM_SIZE (256 - SDRAM_SPD_DATA_SIZE) /* Size EEPROM */
-
-extern int vpd_get_data(unsigned char dev_addr, VPD *vpd);
-extern void vpd_print(VPD *vpdInfo);
-
-#endif /* _VPD_H_ */
diff --git a/board/w7o/w7o.c b/board/w7o/w7o.c
deleted file mode 100644
index c56c269dae..0000000000
--- a/board/w7o/w7o.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * (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
- */
-
-#include <common.h>
-#include <command.h>
-#include "w7o.h"
-#include <asm/processor.h>
-
-#include "vpd.h"
-#include "errors.h"
-#include <watchdog.h>
-
-unsigned long get_dram_size (void);
-
-/*
- * Macros to transform values
- * into environment strings.
- */
-#define XMK_STR(x) #x
-#define MK_STR(x) XMK_STR(x)
-
-/* ------------------------------------------------------------------------- */
-
-int board_early_init_f (void)
-{
-#if defined(CONFIG_W7OLMG)
- /*
- * Setup GPIO pins - reset devices.
- */
- out32 (PPC405GP_GPIO0_ODR, 0x10000000); /* one open drain pin */
- out32 (PPC405GP_GPIO0_OR, 0x3E000000); /* set output pins to default */
- out32 (PPC405GP_GPIO0_TCR, 0x7f800000); /* setup for output */
-
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) XILINX; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) PCI INT A; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) PCI INT B; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) SAM 2; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) Battery Bad; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) Level One PHY; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) SAM 1; active high; level sensitive
- */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
-
- mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
- mtdcr (uicpr, 0xFFFFFF80); /* set int polarities */
- mtdcr (uictr, 0x10000000); /* set int trigger levels */
- mtdcr (uicvcr, 0x00000001); /* set vect base=0,
- INT0 highest priority */
-
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
-
-#elif defined(CONFIG_W7OLMC)
- /*
- * Setup GPIO pins
- */
- out32 (PPC405GP_GPIO0_ODR, 0x01800000); /* XCV Done Open Drain */
- out32 (PPC405GP_GPIO0_OR, 0x03800000); /* set out pins to default */
- out32 (PPC405GP_GPIO0_TCR, 0x66C00000); /* setup for output */
-
- /*
- * IRQ 0-15 405GP internally generated; active high; level sensitive
- * IRQ 16 405GP internally generated; active low; level sensitive
- * IRQ 17-24 RESERVED
- * IRQ 25 (EXT IRQ 0) DBE 0; active low; level sensitive
- * IRQ 26 (EXT IRQ 1) DBE 1; active low; level sensitive
- * IRQ 27 (EXT IRQ 2) DBE 2; active low; level sensitive
- * IRQ 28 (EXT IRQ 3) DBE Common; active low; level sensitive
- * IRQ 29 (EXT IRQ 4) PCI; active low; level sensitive
- * IRQ 30 (EXT IRQ 5) RCMM Reset; active low; level sensitive
- * IRQ 31 (EXT IRQ 6) PHY; active high; level sensitive
- */
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
- mtdcr (uicer, 0x00000000); /* disable all ints */
-
- mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
- mtdcr (uicpr, 0xFFFFFF80); /* set int polarities */
- mtdcr (uictr, 0x10000000); /* set int trigger levels */
- mtdcr (uicvcr, 0x00000001); /* set vect base=0,
- INT0 highest priority */
-
- mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
-
-#else /* Unknown */
-# error "Unknown W7O board configuration"
-#endif
-
- WATCHDOG_RESET (); /* Reset the watchdog */
- temp_uart_init (); /* init the uart for debug */
- WATCHDOG_RESET (); /* Reset the watchdog */
- test_led (); /* test the LEDs */
- test_sdram (get_dram_size ()); /* test the dram */
- log_stat (ERR_POST1); /* log status,post1 complete */
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-int checkboard (void)
-{
- VPD vpd;
-
- puts ("Board: ");
-
- /* VPD data present in I2C EEPROM */
- if (vpd_get_data (CFG_DEF_EEPROM_ADDR, &vpd) == 0) {
- /*
- * Known board type.
- */
- if (vpd.productId[0] &&
- ((strncmp (vpd.productId, "GMM", 3) == 0) ||
- (strncmp (vpd.productId, "CMM", 3) == 0))) {
-
- /* Output board information on startup */
- printf ("\"%s\", revision '%c', serial# %ld, manufacturer %u\n", vpd.productId, vpd.revisionId, vpd.serialNum, vpd.manuID);
- return (0);
- }
- }
-
- puts ("### Unknown HW ID - assuming NOTHING\n");
- return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
- return get_dram_size ();
-}
-
-unsigned long get_dram_size (void)
-{
- int tmp, i, regs[4];
- int size = 0;
-
- /* Get bank Size registers */
- mtdcr (memcfga, mem_mb0cf); /* get bank 0 config reg */
- regs[0] = mfdcr (memcfgd);
-
- mtdcr (memcfga, mem_mb1cf); /* get bank 1 config reg */
- regs[1] = mfdcr (memcfgd);
-
- mtdcr (memcfga, mem_mb2cf); /* get bank 2 config reg */
- regs[2] = mfdcr (memcfgd);
-
- mtdcr (memcfga, mem_mb3cf); /* get bank 3 config reg */
- regs[3] = mfdcr (memcfgd);
-
- /* compute the size, add each bank if enabled */
- for (i = 0; i < 4; i++) {
- if (regs[i] & 0x0001) { /* if enabled, */
- tmp = ((regs[i] >> (31 - 14)) & 0x7); /* get size bits */
- tmp = 0x400000 << tmp; /* Size bits X 4MB = size */
- size += tmp;
- }
- }
-
- return size;
-}
-
-int misc_init_f (void)
-{
- return 0;
-}
-
-static void w7o_env_init (VPD * vpd)
-{
- /*
- * Read VPD
- */
- if (vpd_get_data (CFG_DEF_EEPROM_ADDR, vpd) != 0)
- return;
-
- /*
- * Known board type.
- */
- if (vpd->productId[0] &&
- ((strncmp (vpd->productId, "GMM", 3) == 0) ||
- (strncmp (vpd->productId, "CMM", 3) == 0))) {
- char buf[30];
- char *eth;
- char *serial = getenv ("serial#");
- char *ethaddr = getenv ("ethaddr");
-
- /* Set 'serial#' envvar if serial# isn't set */
- if (!serial) {
- sprintf (buf, "%s-%ld", vpd->productId,
- vpd->serialNum);
- setenv ("serial#", buf);
- }
-
- /* Set 'ethaddr' envvar if 'ethaddr' envvar is the default */
- eth = (char *)(vpd->ethAddrs[0]);
- if (ethaddr
- && (strcmp (ethaddr, MK_STR (CONFIG_ETHADDR)) == 0)) {
- /* Now setup ethaddr */
- sprintf (buf, "%02x:%02x:%02x:%02x:%02x:%02x",
- eth[0], eth[1], eth[2], eth[3], eth[4],
- eth[5]);
- setenv ("ethaddr", buf);
- }
- }
-} /* w7o_env_init() */
-
-
-int misc_init_r (void)
-{
- VPD vpd; /* VPD information */
-
-#if defined(CONFIG_W7OLMG)
- unsigned long greg; /* GPIO Register */
-
- greg = in32 (PPC405GP_GPIO0_OR);
-
- /*
- * XXX - Unreset devices - this should be moved into VxWorks driver code
- */
- greg |= 0x41800000L; /* SAM, PHY, Galileo */
-
- out32 (PPC405GP_GPIO0_OR, greg); /* set output pins to default */
-#endif /* CONFIG_W7OLMG */
-
- /*
- * Initialize W7O environment variables
- */
- w7o_env_init (&vpd);
-
- /*
- * Initialize the FPGA(s).
- */
- if (init_fpga () == 0)
- test_fpga ((unsigned short *) CONFIG_FPGAS_BASE);
-
- /* More POST testing. */
- post2 ();
-
- /* Done with hardware initialization and POST. */
- log_stat (ERR_POSTOK);
-
- /* Call silly, fail safe boot init routine */
- init_fsboot ();
-
- return (0);
-}
diff --git a/board/w7o/w7o.h b/board/w7o/w7o.h
deleted file mode 100644
index d6f50e2e67..0000000000
--- a/board/w7o/w7o.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * (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
- */
-
-#ifndef _W7O_H_
-#define _W7O_H_
-#include <config.h>
-
-/* AMCC 405GP PowerPC GPIO registers */
-#define PPC405GP_GPIO0_OR 0xef600700L /* GPIO Output */
-#define PPC405GP_GPIO0_TCR 0xef600704L /* GPIO Three-State Control */
-#define PPC405GP_GPIO0_ODR 0xef600718L /* GPIO Open Drain */
-#define PPC405GP_GPIO0_IR 0xef60071cL /* GPIO Input */
-
-/* AMCC 405GP DCRs */
-#define CPC0_CR0 0xb1 /* Chip control register 0 */
-
-/* LMG FPGA <=> CPU GPIO signals */
-#define LMG_XCV_INIT 0x10000000L
-#define LMG_XCV_PROG 0x04000000L
-#define LMG_XCV_DONE 0x00400000L
-#define LMG_XCV_CNFG_0 0x08000000L
-#define LMG_XCV_IRQ_0 0x0L
-
-/* LMC FPGA <=> CPU GPIO signals */
-#define LMC_XCV_INIT 0x00800000L
-#define LMC_XCV_PROG 0x40000000L
-#define LMC_XCV_DONE 0x01000000L
-#define LMC_XCV_CNFG_0 0x00004000L /* Shared with IRQ 0 */
-#define LMC_XCV_CNFG_1 0x00002000L /* Shared with IRQ 1 */
-#define LMC_XCV_CNFG_2 0x00001000L /* Shared with IRQ 2 */
-#define LMC_XCV_IRQ_0 0x00080000L /* Shared with GPIO 17 */
-#define LMC_XCV_IRQ_1 0x00040000L /* Shared with GPIO 18 */
-#define LMC_XCV_IRQ_3 0x00020000L /* Shared tiwht GPIO 19 */
-
-
-/*
- * Setup FPGA <=> GPIO mappings
- */
-#if defined(CONFIG_W7OLMG)
-# define GPIO_XCV_INIT LMG_XCV_INIT
-# define GPIO_XCV_PROG LMG_XCV_PROG
-# define GPIO_XCV_DONE LMG_XCV_DONE
-# define GPIO_XCV_CNFG LMG_XCV_CNFG_0
-# define GPIO_XCV_IRQ LMG_XCV_IRQ_0
-# define GPIO_GPIO_1 0x40000000L
-# define GPIO_GPIO_6 0x02000000L
-# define GPIO_GPIO_7 0x01000000L
-# define GPIO_GPIO_8 0x00800000L
-#elif defined(CONFIG_W7OLMC)
-# define GPIO_XCV_INIT LMC_XCV_INIT
-# define GPIO_XCV_PROG LMC_XCV_PROG
-# define GPIO_XCV_DONE LMC_XCV_DONE
-# define GPIO_XCV_CNFG LMC_XCV_CNFG_0
-# define GPIO_XCV_IRQ LMC_XCV_IRQ_0
-#else
-# error "Unknown W7O board configuration"
-#endif
-
-/* Power On Self Tests */
-extern void post2(void);
-extern int test_led(void);
-extern int test_sdram(unsigned long size);
-extern void test_fpga(unsigned short *daddr);
-
-/* FGPA */
-extern int init_fpga(void);
-
-/* Misc */
-extern int temp_uart_init(void);
-extern void init_fsboot(void);
-
-#endif /* _W7O_H_ */
diff --git a/board/w7o/watchdog.c b/board/w7o/watchdog.c
deleted file mode 100644
index 4bbd94f608..0000000000
--- a/board/w7o/watchdog.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * (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
- */
-
-/*
- * W7O board level hardware watchdog.
- */
-#include <common.h>
-#include <config.h>
-
-#ifdef CONFIG_HW_WATCHDOG
-#include <watchdog.h>
-
-void hw_watchdog_reset(void)
-{
- volatile ushort *hwd = (ushort *)(CFG_W7O_EBC_PB7CR & 0xfff00000);
-
- /*
- * Read the LMG's hwd register and toggle the
- * watchdog bit to reset it. On the LMC, just
- * reading it is enough, but toggling the bit
- * doen't hurt either.
- */
- *hwd = *hwd ^ 0x8000;
-
-} /* hw_watchdog_reset() */
-
-#endif /* CONFIG_HW_WATCHDOG */
diff --git a/board/wepep250/Makefile b/board/wepep250/Makefile
deleted file mode 100644
index 58a70ccd75..0000000000
--- a/board/wepep250/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := wepep250.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/wepep250/config.mk b/board/wepep250/config.mk
deleted file mode 100644
index 8701581d24..0000000000
--- a/board/wepep250/config.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# This is config used for compilation of WEP EP250 sources
-#
-# You might change location of U-Boot in memory by setting right TEXT_BASE.
-# This allows for example having one copy located at the end of ram and stored
-# in flash device and later on while developing use other location to test
-# the code in RAM device only.
-#
-
-TEXT_BASE = 0xa1fe0000
-#TEXT_BASE = 0xa1001000
diff --git a/board/wepep250/flash.c b/board/wepep250/flash.c
deleted file mode 100644
index 2a322903d5..0000000000
--- a/board/wepep250/flash.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * Copyright (C) 2003 ETC s.r.o.
- *
- * This code was inspired by Marius Groeger and Kyle Harris code
- * available in other board ports for U-Boot
- *
- * 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
- *
- * Written by Peter Figuli <peposh@etc.sk>, 2003.
- *
- */
-
-#include <common.h>
-#include "intel.h"
-
-
-/*
- * This code should handle CFI FLASH memory device. This code is very
- * minimalistic approach without many essential error handling code as well.
- * Because U-Boot actually is missing smart handling of FLASH device,
- * we just set flash_id to anything else to FLASH_UNKNOW, so common code
- * can call us without any restrictions.
- * TODO: Add CFI Query, to be able to determine FLASH device.
- * TODO: Add error handling code
- * NOTE: This code was tested with BUS_WIDTH 4 and ITERLEAVE 2 only, but
- * hopefully may work with other configurations.
- */
-
-#if ( WEP_FLASH_BUS_WIDTH == 1 )
-# define FLASH_BUS vu_char
-# if ( WEP_FLASH_INTERLEAVE == 1 )
-# define FLASH_CMD( x ) x
-# else
-# error "With 8bit bus only one chip is allowed"
-# endif
-
-
-#elif ( WEP_FLASH_BUS_WIDTH == 2 )
-# define FLASH_BUS vu_short
-# if ( WEP_FLASH_INTERLEAVE == 1 )
-# define FLASH_CMD( x ) x
-# elif ( WEP_FLASH_INTERLEAVE == 2 )
-# define FLASH_CMD( x ) (( x << 8 )| x )
-# else
-# error "With 16bit bus only 1 or 2 chip(s) are allowed"
-# endif
-
-
-#elif ( WEP_FLASH_BUS_WIDTH == 4 )
-# define FLASH_BUS vu_long
-# if ( WEP_FLASH_INTERLEAVE == 1 )
-# define FLASH_CMD( x ) x
-# elif ( WEP_FLASH_INTERLEAVE == 2 )
-# define FLASH_CMD( x ) (( x << 16 )| x )
-# elif ( WEP_FLASH_INTERLEAVE == 4 )
-# define FLASH_CMD( x ) (( x << 24 )|( x << 16 ) ( x << 8 )| x )
-# else
-# error "With 32bit bus only 1,2 or 4 chip(s) are allowed"
-# endif
-
-#else
-# error "Flash bus width might be 1,2,4 for 8,16,32 bit configuration"
-#endif
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-
-static FLASH_BUS flash_status_reg (void)
-{
-
- FLASH_BUS *addr = (FLASH_BUS *) 0;
-
- *addr = FLASH_CMD (CFI_INTEL_CMD_READ_STATUS_REGISTER);
-
- return *addr;
-}
-
-static int flash_ready (ulong timeout)
-{
- int ok = 1;
-
- reset_timer_masked ();
- while ((flash_status_reg () & FLASH_CMD (CFI_INTEL_SR_READY)) !=
- FLASH_CMD (CFI_INTEL_SR_READY)) {
- if (get_timer_masked () > timeout && timeout != 0) {
- ok = 0;
- break;
- }
- }
- return ok;
-}
-
-#if ( CFG_MAX_FLASH_BANKS != 1 )
-# error "WEP platform has only one flash bank!"
-#endif
-
-
-ulong flash_init (void)
-{
- int i;
- FLASH_BUS address = WEP_FLASH_BASE;
-
- flash_info[0].size = WEP_FLASH_BANK_SIZE;
- flash_info[0].sector_count = CFG_MAX_FLASH_SECT;
- flash_info[0].flash_id = INTEL_MANUFACT;
- memset (flash_info[0].protect, 0, CFG_MAX_FLASH_SECT);
-
- for (i = 0; i < CFG_MAX_FLASH_SECT; i++) {
- flash_info[0].start[i] = address;
-#ifdef WEP_FLASH_UNLOCK
- /* Some devices are hw locked after start. */
- *((FLASH_BUS *) address) = FLASH_CMD (CFI_INTEL_CMD_LOCK_SETUP);
- *((FLASH_BUS *) address) = FLASH_CMD (CFI_INTEL_CMD_UNLOCK_BLOCK);
- flash_ready (0);
- *((FLASH_BUS *) address) = FLASH_CMD (CFI_INTEL_CMD_READ_ARRAY);
-#endif
- address += WEP_FLASH_SECT_SIZE;
- }
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-
- return WEP_FLASH_BANK_SIZE;
-}
-
-void flash_print_info (flash_info_t * info)
-{
- int i;
-
- printf (" Intel vendor\n");
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; i++) {
- if (!(i % 5)) {
- printf ("\n");
- }
-
- printf (" %08lX%s", info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
-}
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
- int flag, non_protected = 0, sector;
- int rc = ERR_OK;
-
- FLASH_BUS *address;
-
- for (sector = s_first; sector <= s_last; sector++) {
- if (!info->protect[sector]) {
- non_protected++;
- }
- }
-
- if (!non_protected) {
- return ERR_PROTECTED;
- }
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
- flag = disable_interrupts ();
-
-
- /* Start erase on unprotected sectors */
- for (sector = s_first; sector <= s_last && !ctrlc (); sector++) {
- if (info->protect[sector]) {
- printf ("Protected sector %2d skipping...\n", sector);
- continue;
- } else {
- printf ("Erasing sector %2d ... ", sector);
- }
-
- address = (FLASH_BUS *) (info->start[sector]);
-
- *address = FLASH_CMD (CFI_INTEL_CMD_BLOCK_ERASE);
- *address = FLASH_CMD (CFI_INTEL_CMD_CONFIRM);
- if (flash_ready (CFG_FLASH_ERASE_TOUT)) {
- *address = FLASH_CMD (CFI_INTEL_CMD_CLEAR_STATUS_REGISTER);
- printf ("ok.\n");
- } else {
- *address = FLASH_CMD (CFI_INTEL_CMD_SUSPEND);
- rc = ERR_TIMOUT;
- printf ("timeout! Aborting...\n");
- break;
- }
- *address = FLASH_CMD (CFI_INTEL_CMD_READ_ARRAY);
- }
- if (ctrlc ())
- printf ("User Interrupt!\n");
-
- /* allow flash to settle - wait 10 ms */
- udelay_masked (10000);
- if (flag) {
- enable_interrupts ();
- }
-
- return rc;
-}
-
-static int write_data (flash_info_t * info, ulong dest, FLASH_BUS data)
-{
- FLASH_BUS *address = (FLASH_BUS *) dest;
- int rc = ERR_OK;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*address & data) != data) {
- return ERR_NOT_ERASED;
- }
-
- /*
- * Disable interrupts which might cause a timeout
- * here. Remember that our exception vectors are
- * at address 0 in the flash, and we don't want a
- * (ticker) exception to happen while the flash
- * chip is in programming mode.
- */
-
- flag = disable_interrupts ();
-
- *address = FLASH_CMD (CFI_INTEL_CMD_CLEAR_STATUS_REGISTER);
- *address = FLASH_CMD (CFI_INTEL_CMD_PROGRAM1);
- *address = data;
-
- if (!flash_ready (CFG_FLASH_WRITE_TOUT)) {
- *address = FLASH_CMD (CFI_INTEL_CMD_SUSPEND);
- rc = ERR_TIMOUT;
- printf ("timeout! Aborting...\n");
- }
-
- *address = FLASH_CMD (CFI_INTEL_CMD_READ_ARRAY);
- if (flag) {
- enable_interrupts ();
- }
-
- return rc;
-}
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
- ulong read_addr, write_addr;
- FLASH_BUS data;
- int i, result = ERR_OK;
-
-
- read_addr = addr & ~(sizeof (FLASH_BUS) - 1);
- write_addr = read_addr;
- if (read_addr != addr) {
- data = 0;
- for (i = 0; i < sizeof (FLASH_BUS); i++) {
- if (read_addr < addr || cnt == 0) {
- data |= *((uchar *) read_addr) << i * 8;
- } else {
- data |= (*src++) << i * 8;
- cnt--;
- }
- read_addr++;
- }
- if ((result = write_data (info, write_addr, data)) != ERR_OK) {
- return result;
- }
- write_addr += sizeof (FLASH_BUS);
- }
- for (; cnt >= sizeof (FLASH_BUS); cnt -= sizeof (FLASH_BUS)) {
- if ((result = write_data (info, write_addr,
- *((FLASH_BUS *) src))) != ERR_OK) {
- return result;
- }
- write_addr += sizeof (FLASH_BUS);
- src += sizeof (FLASH_BUS);
- }
- if (cnt > 0) {
- read_addr = write_addr;
- data = 0;
- for (i = 0; i < sizeof (FLASH_BUS); i++) {
- if (cnt > 0) {
- data |= (*src++) << i * 8;
- cnt--;
- } else {
- data |= *((uchar *) read_addr) << i * 8;
- }
- read_addr++;
- }
- if ((result = write_data (info, write_addr, data)) != 0) {
- return result;
- }
- }
- return ERR_OK;
-}
diff --git a/board/wepep250/intel.h b/board/wepep250/intel.h
deleted file mode 100644
index 77498b6e1d..0000000000
--- a/board/wepep250/intel.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2002 ETC s.r.o.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the ETC s.r.o. nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Written by Marcel Telka <marcel@telka.sk>, 2002.
- *
- * Documentation:
- * [1] Intel Corporation, "3 Volt Intel Strata Flash Memory 28F128J3A, 28F640J3A,
- * 28F320J3A (x8/x16)", April 2002, Order Number: 290667-011
- * [2] Intel Corporation, "3 Volt Synchronous Intel Strata Flash Memory 28F640K3, 28F640K18,
- * 28F128K3, 28F128K18, 28F256K3, 28F256K18 (x16)", June 2002, Order Number: 290737-005
- *
- * This file is taken from OpenWinCE project hosted by SourceForge.net
- *
- */
-
-#ifndef FLASH_INTEL_H
-#define FLASH_INTEL_H
-
-#include <common.h>
-
-/* Intel CFI commands - see Table 4. in [1] and Table 3. in [2] */
-
-#define CFI_INTEL_CMD_READ_ARRAY 0xFF /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_READ_IDENTIFIER 0x90 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_READ_QUERY 0x98 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_READ_STATUS_REGISTER 0x70 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_CLEAR_STATUS_REGISTER 0x50 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_PROGRAM1 0x40 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_PROGRAM2 0x10 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_WRITE_TO_BUFFER 0xE8 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_CONFIRM 0xD0 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_BLOCK_ERASE 0x20 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_SUSPEND 0xB0 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_RESUME 0xD0 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_LOCK_SETUP 0x60 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_LOCK_BLOCK 0x01 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_UNLOCK_BLOCK 0xD0 /* 28FxxxJ3A - unlocks all blocks, 28FFxxxK3, 28FxxxK18 */
-#define CFI_INTEL_CMD_LOCK_DOWN_BLOCK 0x2F /* 28FxxxK3, 28FxxxK18 */
-
-/* Intel CFI Status Register bits - see Table 6. in [1] and Table 7. in [2] */
-
-#define CFI_INTEL_SR_READY 1 << 7 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_ERASE_SUSPEND 1 << 6 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_ERASE_ERROR 1 << 5 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_PROGRAM_ERROR 1 << 4 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_VPEN_ERROR 1 << 3 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_PROGRAM_SUSPEND 1 << 2 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_BLOCK_LOCKED 1 << 1 /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define CFI_INTEL_SR_BEFP 1 << 0 /* 28FxxxK3, 28FxxxK18 */
-
-/* Intel flash device ID codes for 28FxxxJ3A - see Table 5. in [1] */
-
-#define CFI_CHIP_INTEL_28F320J3A 0x0016
-#define CFI_CHIPN_INTEL_28F320J3A "28F320J3A"
-#define CFI_CHIP_INTEL_28F640J3A 0x0017
-#define CFI_CHIPN_INTEL_28F640J3A "28F640J3A"
-#define CFI_CHIP_INTEL_28F128J3A 0x0018
-#define CFI_CHIPN_INTEL_28F128J3A "28F128J3A"
-
-/* Intel flash device ID codes for 28FxxxK3 and 28FxxxK18 - see Table 8. in [2] */
-
-#define CFI_CHIP_INTEL_28F640K3 0x8801
-#define CFI_CHIPN_INTEL_28F640K3 "28F640K3"
-#define CFI_CHIP_INTEL_28F128K3 0x8802
-#define CFI_CHIPN_INTEL_28F128K3 "28F128K3"
-#define CFI_CHIP_INTEL_28F256K3 0x8803
-#define CFI_CHIPN_INTEL_28F256K3 "28F256K3"
-#define CFI_CHIP_INTEL_28F640K18 0x8805
-#define CFI_CHIPN_INTEL_28F640K18 "28F640K18"
-#define CFI_CHIP_INTEL_28F128K18 0x8806
-#define CFI_CHIPN_INTEL_28F128K18 "28F128K18"
-#define CFI_CHIP_INTEL_28F256K18 0x8807
-#define CFI_CHIPN_INTEL_28F256K18 "28F256K18"
-
-#endif /* FLASH_INTEL_H */
diff --git a/board/wepep250/lowlevel_init.S b/board/wepep250/lowlevel_init.S
deleted file mode 100644
index b172ceaa61..0000000000
--- a/board/wepep250/lowlevel_init.S
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2001, 2002 ETC s.r.o.
- *
- * 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.
- *
- * Written by Marcel Telka <marcel@telka.sk>, 2001, 2002.
- * Changes for U-Boot Peter Figuli <peposh@etc.sk>, 2003.
- *
- * This file is taken from OpenWinCE project hosted by SourceForge.net
- *
- * Documentation:
- * [1] Intel Corporation, "Intel PXA250 and PXA210 Application Processors
- * Developer's Manual", February 2002, Order Number: 278522-001
- * [2] Samsung Electronics, "8Mx16 SDRAM 54CSP K4S281633D-RL/N/P",
- * Revision 1.0, February 2002
- * [3] Samsung Electronics, "16Mx16 SDRAM 54CSP K4S561633C-RL(N)",
- * Revision 1.0, February 2002
- *
-*/
-
-#include <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
-/* setup memory - see 6.12 in [1]
- * Step 1 - wait 200 us
- */
- mov r0,#0x2700 /* wait 200 us @ 99.5 MHz */
-1: subs r0, r0, #1
- bne 1b
-/* TODO: complete step 1 for Synchronous Static memory*/
-
- ldr r0, =0x48000000 /* MC_BASE */
-
-
-/* step 1.a - setup MSCx
- */
- ldr r1, =0x000012B3 /* MSC0_RRR0(1) | MSC0_RDN0(2) | MSC0_RDF0(11) | MSC0_RT0(3) */
- str r1, [r0, #0x8] /* MSC0_OFFSET */
-
-/* step 1.c - clear MDREFR:K1FREE, set MDREFR:DRI
- * see AUTO REFRESH chapter in section D. in [2] and in [3]
- * DRI = (64ms / 4096) * 99.53MHz / 32 = 48 for K4S281633
- * DRI = (64ms / 8192) * 99.52MHz / 32 = 24 for K4S561633
- * TODO: complete for Synchronous Static memory
- */
- ldr r1, [r0, #4] /* MDREFR_OFFSET */
- ldr r2, =0x01000FFF /* MDREFR_K1FREE | MDREFR_DRI_MASK */
- bic r1, r1, r2
-#if defined( WEP_SDRAM_K4S281633 )
- orr r1, r1, #48 /* MDREFR_DRI(48) */
-#elif defined( WEP_SDRAM_K4S561633 )
- orr r1, r1, #24 /* MDREFR_DRI(24) */
-#else
-#error SDRAM chip is not defined
-#endif
-
- str r1, [r0, #4] /* MDREFR_OFFSET */
-
-/* Step 2 - only for Synchronous Static memory (TODO)
- *
- * Step 3 - same as step 4
- *
- * Step 4
- *
- * Step 4.a - set MDREFR:K1RUN, clear MDREFR:K1DB2
- */
- orr r1, r1, #0x00010000 /* MDREFR_K1RUN */
- bic r1, r1, #0x00020000 /* MDREFR_K1DB2 */
- str r1, [r0, #4] /* MDREFR_OFFSET */
-
-/* Step 4.b - clear MDREFR:SLFRSH */
- bic r1, r1, #0x00400000 /* MDREFR_SLFRSH */
- str r1, [r0, #4] /* MDREFR_OFFSET */
-
-/* Step 4.c - set MDREFR:E1PIN */
- orr r1, r1, #0x00008000 /* MDREFR_E1PIN */
- str r1, [r0, #4] /* MDREFR_OFFSET */
-
-/* Step 4.d - automatically done
- *
- * Steps 4.e and 4.f - configure SDRAM
- */
-#if defined( WEP_SDRAM_K4S281633 )
- ldr r1, =0x00000AA8 /* MDCNFG_DTC0(2) | MDCNFG_DLATCH0 | MDCNFG_DCAC0(1) | MDCNFG_DRAC0(1) | MDCNFG_DNB0 */
-#elif defined( WEP_SDRAM_K4S561633 )
- ldr r1, =0x00000AC8 /* MDCNFG_DTC0(2) | MDCNFG_DLATCH0 | MDCNFG_DCAC0(1) | MDCNFG_DRAC0(2) | MDCNFG_DNB0 */
-#else
-#error SDRAM chip is not defined
-#endif
- str r1, [r0, #0] /* MDCNFG_OFFSET */
-
-/* Step 5 - wait at least 200 us for SDRAM
- * see section B. in [2]
- */
- mov r2,#0x2700 /* wait 200 us @ 99.5 MHz */
-1: subs r2, r2, #1
- bne 1b
-
-/* Step 6 - after reset dcache is disabled, so automatically done
- *
- * Step 7 - eight refresh cycles
- */
- mov r2, #0xA0000000
- ldr r3, [r2]
- ldr r3, [r2]
- ldr r3, [r2]
- ldr r3, [r2]
- ldr r3, [r2]
- ldr r3, [r2]
- ldr r3, [r2]
- ldr r3, [r2]
-
-/* Step 8 - we don't need dcache now
- *
- * Step 9 - enable SDRAM partition 0
- */
- orr r1, r1, #1 /* MDCNFG_DE0 */
- str r1, [r0, #0] /* MDCNFG_OFFSET */
-
-/* Step 10 - write MDMRS */
- mov r1, #0
- str r1, [r0, #0x40] /* MDMRS_OFFSET */
-
-/* Step 11 - optional (TODO) */
-
- mov pc,r10
diff --git a/board/wepep250/u-boot.lds b/board/wepep250/u-boot.lds
deleted file mode 100644
index f0102391b3..0000000000
--- a/board/wepep250/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/wepep250/wepep250.c b/board/wepep250/wepep250.c
deleted file mode 100644
index fe4b6a91d2..0000000000
--- a/board/wepep250/wepep250.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2003 ETC s.r.o.
- *
- * 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
- *
- * Written by Peter Figuli <peposh@etc.sk>, 2003.
- *
- */
-
-#include <common.h>
-#include <asm/arch/pxa-regs.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_init (void)
-{
- gd->bd->bi_arch_number = MACH_TYPE_WEP_EP250;
- gd->bd->bi_boot_params = 0xa0000000;
-/*
- * Setup GPIO stuff to get serial working
- */
-#if defined( CONFIG_FFUART )
- GPDR1 = 0x80;
- GAFR1_L = 0x8010;
-#elif defined( CONFIG_BTUART )
- GPDR1 = 0x800;
- GAFR1_L = 0x900000;
-#endif
- PSSR = 0x20;
-
- return 0;
-}
-
-int dram_init (void)
-{
-#if ( CONFIG_NR_DRAM_BANKS > 0 )
- gd->bd->bi_dram[0].start = WEP_SDRAM_1;
- gd->bd->bi_dram[0].size = WEP_SDRAM_1_SIZE;
-#endif
-#if ( CONFIG_NR_DRAM_BANKS > 1 )
- gd->bd->bi_dram[1].start = WEP_SDRAM_2;
- gd->bd->bi_dram[1].size = WEP_SDRAM_2_SIZE;
-#endif
-#if ( CONFIG_NR_DRAM_BANKS > 2 )
- gd->bd->bi_dram[2].start = WEP_SDRAM_3;
- gd->bd->bi_dram[2].size = WEP_SDRAM_3_SIZE;
-#endif
-#if ( CONFIG_NR_DRAM_BANKS > 3 )
- gd->bd->bi_dram[3].start = WEP_SDRAM_4;
- gd->bd->bi_dram[3].size = WEP_SDRAM_4_SIZE;
-#endif
-
- return 0;
-}
diff --git a/board/westel/amx860/Makefile b/board/westel/amx860/Makefile
deleted file mode 100644
index dcb1907032..0000000000
--- a/board/westel/amx860/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/westel/amx860/amx860.c b/board/westel/amx860/amx860.c
deleted file mode 100644
index 8826667cdc..0000000000
--- a/board/westel/amx860/amx860.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * (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 <common.h>
-#include <config.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_ 0xFFFFFFFF
-
-const uint edo_60ns[] =
-{ 0x8ffbec24, 0x0ff3ec04, 0x0cf3ec04, 0x00f3ec04,
- 0x00f3ec00, 0x37f7ec47, _NOT_USED_, _NOT_USED_,
- 0x8fffec24, 0x0ffbec04, 0x08f3ec04, 0x07f3ec08,
- 0x08f3ec04, 0x07f3ec48, 0x08f3ec04, 0x07f3ec48,
- 0x08f3ec04, 0x07f3ec48, 0x1ff7ec47, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x8fffcc24, 0x0fefcc04, 0x0cafcc00, 0x11bfcc47,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x8fffcc24, 0x0fefcc04, 0x0cafcc00, 0x03afcc4c,
- 0x0cafcc00, 0x03afcc4c, 0x0cafcc00, 0x03afcc4c,
- 0x0cafcc00, 0x33bfcc4f, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0xc0ffcc84, 0x00ffcc04, 0x07ffcc04, 0x3fffcc06,
- 0xffffcc85, 0xffffcc05, _NOT_USED_, _NOT_USED_,
- _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
- 0x33ffcc07, _NOT_USED_, _NOT_USED_, _NOT_USED_ };
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
- puts ("Board: AMX860\n");
- return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-long int initdram (int board_type)
-{
-
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
-
- /* AMX860: has 4 Mb of 60ns EDO DRAM, so start DRAM at 0 */
-
- upmconfig(UPMA, (uint *) edo_60ns, sizeof(edo_60ns)/sizeof(uint));
-
-#ifndef CONFIG_AMX_RAM_EXT
- memctl->memc_mptpr = 0x0400; /* divide by 16 */
-#else
- memctl->memc_mptpr = 0x0200;
-#endif
-
- memctl->memc_mamr = 0x30a21114;
- memctl->memc_or2 = 0xffc00800;
-#ifndef CONFIG_AMX_RAM_EXT
- memctl->memc_br2 = 0x81;
-
- return (4 << 20);
-#else
- memctl->memc_or1 = 0xff000800;
- memctl->memc_br1 = 0x00000081;
- memctl->memc_br2 = 0x01000081;
-
- return (20 << 20);
-#endif
-}
diff --git a/board/westel/amx860/config.mk b/board/westel/amx860/config.mk
deleted file mode 100644
index d0ee4a2864..0000000000
--- a/board/westel/amx860/config.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# (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
-#
-
-#TEXT_BASE = 0xFE000000
-TEXT_BASE = 0x40000000
-OBJCFLAGS = --set-section-flags=.ppcenv=contents,alloc,load,data
diff --git a/board/westel/amx860/flash.c b/board/westel/amx860/flash.c
deleted file mode 100644
index 12a1335b75..0000000000
--- a/board/westel/amx860/flash.c
+++ /dev/null
@@ -1,637 +0,0 @@
-/*
- * (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 <common.h>
-#include <mpc8xx.h>
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CFG_ENV_IS_IN_FLASH)
-# ifndef CFG_ENV_ADDR
-# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
-# endif
-# ifndef CFG_ENV_SIZE
-# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE
-# endif
-# ifndef CFG_ENV_SECT_SIZE
-# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE
-# endif
-#endif
-
-/*---------------------------------------------------------------------*/
-#undef DEBUG_FLASH
-
-#ifdef DEBUG_FLASH
-#define DEBUGF(fmt,args...) printf(fmt ,##args)
-#else
-#define DEBUGF(fmt,args...)
-#endif
-/*---------------------------------------------------------------------*/
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
- volatile memctl8xx_t *memctl = &immap->im_memctl;
- unsigned long size_b0, size_b1;
- int i;
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- }
-
- /* Static FLASH Bank configuration here - FIXME XXX */
-
- DEBUGF("\n## Get flash bank 1 size @ 0x%08x\n",FLASH_BASE0_PRELIM);
-
- size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
- if (flash_info[0].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
- size_b0, size_b0<<20);
- }
-
-#if defined(FLASH_BASE1_PRELIM) && (FLASH_BASE1_PRELIM != 0)
- DEBUGF("## Get flash bank 2 size @ 0x%08x\n",FLASH_BASE1_PRELIM);
-
- size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
-
- if (size_b1 > size_b0) {
- printf ("## ERROR: "
- "Bank 1 (0x%08lx = %ld MB) > Bank 0 (0x%08lx = %ld MB)\n",
- size_b1, size_b1<<20,
- size_b0, size_b0<<20
- );
- flash_info[0].flash_id = FLASH_UNKNOWN;
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[0].sector_count = -1;
- flash_info[1].sector_count = -1;
- flash_info[0].size = 0;
- flash_info[1].size = 0;
- return (0);
- }
-#else
- size_b1 = 0;
-#endif /* FLASH_BASE1_PRELIM */
-
- DEBUGF("## Prelim. Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
- DEBUGF ("## Before remap: "
- "BR0: 0x%08x OR0: 0x%08x "
- "BR1: 0x%08x OR1: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0,
- memctl->memc_br1, memctl->memc_or1);
-
- /* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
-
- DEBUGF("## BR0: 0x%08x OR0: 0x%08x\n",
- memctl->memc_br0, memctl->memc_or0);
-
- /* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
-
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
-
- flash_info[0].size = size_b0;
-
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[0]);
-#endif
-
-#ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[0]);
-#endif
-
- if (size_b1) {
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (-size_b1 & OR_AM_MSK);
- memctl->memc_br1 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
- BR_MS_GPCM | BR_V;
-
- DEBUGF("## BR1: 0x%08x OR1: 0x%08x\n",
- memctl->memc_br1, memctl->memc_or1);
-
- /* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(CFG_FLASH_BASE + size_b0),
- &flash_info[1]);
-
- flash_info[1].size = size_b1;
-
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
-
-# if CFG_MONITOR_BASE >= CFG_FLASH_BASE
- /* monitor protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+monitor_flash_len-1,
- &flash_info[1]);
-# endif
-
-# ifdef CFG_ENV_IS_IN_FLASH
- /* ENV protection ON by default */
- flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1,
- &flash_info[1]);
-#endif
- } else {
-#ifndef CONFIG_AMX_RAM_EXT
- memctl->memc_br1 = 0; /* invalidate bank */
- memctl->memc_or1 = 0; /* invalidate bank */
-#endif
-
- DEBUGF("## DISABLE BR1: 0x%08x OR1: 0x%08x\n",
- memctl->memc_br1, memctl->memc_or1);
-
- flash_info[1].flash_id = FLASH_UNKNOWN;
- flash_info[1].sector_count = -1;
- flash_info[1].size = 0;
- }
-
- DEBUGF("## Final Flash bank sizes: %08lx + 0x%08lx\n",size_b0,size_b1);
-
- return (size_b0 + size_b1);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- /* set up sector start address table */
- if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
- /* set sector offsets for uniform sector type */
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00040000);
- }
- } else if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_BM: printf ("BRIGHT MICRO "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AM040: printf ("29F040 or 29LV040 (4 Mbit, uniform sectors)\n");
- break;
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
-}
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-
- value = addr[0];
-
- DEBUGF("Manuf. ID @ 0x%08lx: 0x%08lx\n", (ulong)addr, value);
-
- switch (value) {
- case AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- DEBUGF("Device ID @ 0x%08lx: 0x%08lx\n", (ulong)(&addr[1]), value);
-
- switch (value) {
- case AMD_ID_F040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV400T:
- info->flash_id += FLASH_AM400T;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV400B:
- info->flash_id += FLASH_AM400B;
- info->sector_count = 11;
- info->size = 0x00100000;
- break; /* => 1 MB */
-
- case AMD_ID_LV800T:
- info->flash_id += FLASH_AM800T;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV800B:
- info->flash_id += FLASH_AM800B;
- info->sector_count = 19;
- info->size = 0x00200000;
- break; /* => 2 MB */
-
- case AMD_ID_LV160T:
- info->flash_id += FLASH_AM160T;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-
- case AMD_ID_LV160B:
- info->flash_id += FLASH_AM160B;
- info->sector_count = 35;
- info->size = 0x00400000;
- break; /* => 4 MB */
-#if 0 /* enable when device IDs are available */
- case AMD_ID_LV320T:
- info->flash_id += FLASH_AM320T;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-
- case AMD_ID_LV320B:
- info->flash_id += FLASH_AM320B;
- info->sector_count = 67;
- info->size = 0x00800000;
- break; /* => 8 MB */
-#endif
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00008000;
- info->start[2] = base + 0x0000C000;
- info->start[3] = base + 0x00010000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00020000) - 0x00060000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00008000;
- info->start[i--] = base + info->size - 0x0000C000;
- info->start[i--] = base + info->size - 0x00010000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00020000;
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ((addr[0] & 0x00800080) != 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/westel/amx860/u-boot.lds b/board/westel/amx860/u-boot.lds
deleted file mode 100644
index cdf550f67b..0000000000
--- a/board/westel/amx860/u-boot.lds
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_ppc/ppcstring.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_generic/zlib.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/westel/amx860/u-boot.lds.debug b/board/westel/amx860/u-boot.lds.debug
deleted file mode 100644
index 87f228beed..0000000000
--- a/board/westel/amx860/u-boot.lds.debug
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/mpc8xx/start.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/vsprintf.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
-
- . = env_offset;
- common/environment.o(.text)
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(4096);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(4096);
- __init_end = .;
-
- __bss_start = .;
- .bss :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
-}
diff --git a/board/xaeniax/Makefile b/board/xaeniax/Makefile
deleted file mode 100644
index 9a79f7d981..0000000000
--- a/board/xaeniax/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := xaeniax.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/xaeniax/config.mk b/board/xaeniax/config.mk
deleted file mode 100644
index 45079a079e..0000000000
--- a/board/xaeniax/config.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-TEXT_BASE = 0xa3FB0000
-#TEXT_BASE = 0
diff --git a/board/xaeniax/flash.c b/board/xaeniax/flash.c
deleted file mode 100644
index 9874a14fb3..0000000000
--- a/board/xaeniax/flash.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (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 <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-void inline spin_wheel (void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- case 1:
- flash_get_size ((FPW *) PHYS_FLASH_2, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_2, &flash_info[i]);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect ( FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0] );
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0] );
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x02000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = 0x00500050; /* clear status register cmd. */
- *addr = 0x00FF00FF; /* resest to read mode */
-
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/xaeniax/lowlevel_init.S b/board/xaeniax/lowlevel_init.S
deleted file mode 100644
index fe3e7128a4..0000000000
--- a/board/xaeniax/lowlevel_init.S
+++ /dev/null
@@ -1,424 +0,0 @@
- /*
- * Most of this taken from Redboot hal_platform_setup.h with cleanup
- *
- * NOTE: I haven't clean this up considerably, just enough to get it
- * running. See hal_platform_setup.h for the source. See
- * board/cradle/lowlevel_init.S for another PXA250 setup that is
- * much cleaner.
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-DRAM_SIZE: .long CFG_DRAM_SIZE
-
-/* wait for coprocessor write complete */
- .macro CPWAIT reg
- mrc p15,0,\reg,c2,c0,0
- mov \reg,\reg
- sub pc,pc,#4
- .endm
-
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
- /* Set up GPIO pins first ----------------------------------------- */
-
- ldr r0,=GPSR0
- ldr r1,=CFG_GPSR0_VAL
- str r1,[r0]
-
- ldr r0,=GPSR1
- ldr r1,=CFG_GPSR1_VAL
- str r1,[r0]
-
- ldr r0,=GPSR2
- ldr r1,=CFG_GPSR2_VAL
- str r1,[r0]
-
- ldr r0,=GPCR0
- ldr r1,=CFG_GPCR0_VAL
- str r1,[r0]
-
- ldr r0,=GPCR1
- ldr r1,=CFG_GPCR1_VAL
- str r1,[r0]
-
- ldr r0,=GPCR2
- ldr r1,=CFG_GPCR2_VAL
- str r1,[r0]
-
- ldr r0,=GPDR0
- ldr r1,=CFG_GPDR0_VAL
- str r1,[r0]
-
- ldr r0,=GPDR1
- ldr r1,=CFG_GPDR1_VAL
- str r1,[r0]
-
- ldr r0,=GPDR2
- ldr r1,=CFG_GPDR2_VAL
- str r1,[r0]
-
- ldr r0,=GAFR0_L
- ldr r1,=CFG_GAFR0_L_VAL
- str r1,[r0]
-
- ldr r0,=GAFR0_U
- ldr r1,=CFG_GAFR0_U_VAL
- str r1,[r0]
-
- ldr r0,=GAFR1_L
- ldr r1,=CFG_GAFR1_L_VAL
- str r1,[r0]
-
- ldr r0,=GAFR1_U
- ldr r1,=CFG_GAFR1_U_VAL
- str r1,[r0]
-
- ldr r0,=GAFR2_L
- ldr r1,=CFG_GAFR2_L_VAL
- str r1,[r0]
-
- ldr r0,=GAFR2_U
- ldr r1,=CFG_GAFR2_U_VAL
- str r1,[r0]
-
- ldr r0,=PSSR /* enable GPIO pins */
- ldr r1,=CFG_PSSR_VAL
- str r1,[r0]
-
- /* ---------------------------------------------------------------- */
- /* Enable memory interface */
- /* */
- /* The sequence below is based on the recommended init steps */
- /* detailed in the Intel PXA250 Operating Systems Developers Guide, */
- /* Chapter 10. */
- /* ---------------------------------------------------------------- */
-
- /* ---------------------------------------------------------------- */
- /* Step 1: Wait for at least 200 microsedonds to allow internal */
- /* clocks to settle. Only necessary after hard reset... */
- /* FIXME: can be optimized later */
- /* ---------------------------------------------------------------- */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-mem_init:
-
- ldr r1,=MEMC_BASE /* get memory controller base addr. */
-
- /* ---------------------------------------------------------------- */
- /* Step 2a: Initialize Asynchronous static memory controller */
- /* ---------------------------------------------------------------- */
-
- /* MSC registers: timing, bus width, mem type */
-
- /* MSC0: nCS(0,1) */
- ldr r2,=CFG_MSC0_VAL
- str r2,[r1, #MSC0_OFFSET]
- ldr r2,[r1, #MSC0_OFFSET] /* read back to ensure data latches */
-
- /* MSC1: nCS(2,3) */
- ldr r2,=CFG_MSC1_VAL
- str r2,[r1, #MSC1_OFFSET]
- ldr r2,[r1, #MSC1_OFFSET]
-
- /* MSC2: nCS(4,5) */
- ldr r2,=CFG_MSC2_VAL
- str r2,[r1, #MSC2_OFFSET]
- ldr r2,[r1, #MSC2_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2b: Initialize Card Interface */
- /* ---------------------------------------------------------------- */
-
- /* MECR: Memory Expansion Card Register */
- ldr r2,=CFG_MECR_VAL
- str r2,[r1, #MECR_OFFSET]
- ldr r2,[r1, #MECR_OFFSET]
-
- /* MCMEM0: Card Interface slot 0 timing */
- ldr r2,=CFG_MCMEM0_VAL
- str r2,[r1, #MCMEM0_OFFSET]
- ldr r2,[r1, #MCMEM0_OFFSET]
-
- /* MCMEM1: Card Interface slot 1 timing */
- ldr r2,=CFG_MCMEM1_VAL
- str r2,[r1, #MCMEM1_OFFSET]
- ldr r2,[r1, #MCMEM1_OFFSET]
-
- /* MCATT0: Card Interface Attribute Space Timing, slot 0 */
- ldr r2,=CFG_MCATT0_VAL
- str r2,[r1, #MCATT0_OFFSET]
- ldr r2,[r1, #MCATT0_OFFSET]
-
- /* MCATT1: Card Interface Attribute Space Timing, slot 1 */
- ldr r2,=CFG_MCATT1_VAL
- str r2,[r1, #MCATT1_OFFSET]
- ldr r2,[r1, #MCATT1_OFFSET]
-
- /* MCIO0: Card Interface I/O Space Timing, slot 0 */
- ldr r2,=CFG_MCIO0_VAL
- str r2,[r1, #MCIO0_OFFSET]
- ldr r2,[r1, #MCIO0_OFFSET]
-
- /* MCIO1: Card Interface I/O Space Timing, slot 1 */
- ldr r2,=CFG_MCIO1_VAL
- str r2,[r1, #MCIO1_OFFSET]
- ldr r2,[r1, #MCIO1_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 2c: Write FLYCNFG FIXME: what's that??? */
- /* ---------------------------------------------------------------- */
-
- /* ---------------------------------------------------------------- */
- /* Step 2d: Initialize Timing for Sync Memory (SDCLK0) */
- /* ---------------------------------------------------------------- */
-
- @ get the mdrefr settings
- ldr r4,=CFG_MDREFR_VAL
-
- @ write back mdrefr
- str r4,[r1, #MDREFR_OFFSET]
- ldr r4,[r1, #MDREFR_OFFSET]
-
- /* ---------------------------------------------------------------- */
- /* Step 3: Initialize Synchronous Static Memory (Flash/Peripherals) */
- /* ---------------------------------------------------------------- */
-
- /* Initialize SXCNFG register. Assert the enable bits */
-
- /* Write SXMRS to cause an MRS command to all enabled banks of */
- /* synchronous static memory. Note that SXLCR need not be written */
- /* at this time. */
-
- /* FIXME: we use async mode for now */
-
- /* ---------------------------------------------------------------- */
- /* Step 4: Initialize SDRAM */
- /* ---------------------------------------------------------------- */
-
- @ set K1RUN for bank 0
- @
- orr r4, r4, #MDREFR_K1RUN
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
-
- @ deassert SLFRSH
- @
- bic r4, r4, #MDREFR_SLFRSH
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
-
- @ assert E1PIN
- @ if E0PIN is also used: #(MDREFR_E1PIN|MDREFR_E0PIN)
- orr r4, r4, #(MDREFR_E1PIN)
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
- nop
- nop
-
- /* Step 4d: */
- /* fetch platform value of mdcnfg */
- @
- ldr r2, =CFG_MDCNFG_VAL
-
- @ disable all sdram banks
- @
- bic r2, r2, #(MDCNFG_DE0 | MDCNFG_DE1)
- bic r2, r2, #(MDCNFG_DE2 | MDCNFG_DE3)
-
- @ program banks 0/1 for bus width
- @
- bic r2, r2, #MDCNFG_DWID0 @0=32-bit
-
- @ write initial value of mdcnfg, w/o enabling sdram banks
- @
- str r2, [r1, #MDCNFG_OFFSET]
-
- /* Step 4e: Wait for the clock to the SDRAMs to stabilize, */
- /* 100..200 µsec. */
-
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, */
- /* so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-
- /* Step 4f: Trigger a number (usually 8) refresh cycles by */
- /* attempting non-burst read or write accesses to disabled */
- /* SDRAM, as commonly specified in the power up sequence */
- /* documented in SDRAM data sheets. The address(es) used */
- /* for this purpose must not be cacheable. */
-
- ldr r3, =CFG_DRAM_BASE
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
- str r2, [r3]
-
-
- /* Step 4g: Write MDCNFG with enable bits asserted */
- /* get memory controller base address */
- ldr r1, =MEMC_BASE
-
- @fetch current mdcnfg value
- @
- ldr r3, [r1, #MDCNFG_OFFSET]
-
- @enable sdram bank 0 if installed (must do for any populated bank)
- @
- orr r3, r3, #MDCNFG_DE0
-
- @write back mdcnfg, enabling the sdram bank(s)
- @
- str r3, [r1, #MDCNFG_OFFSET]
-
- /* Step 4h: Write MDMRS. */
-
- ldr r2, =CFG_MDMRS_VAL
- str r2, [r1, #MDMRS_OFFSET]
-
-
- /* We are finished with Intel's memory controller initialisation */
-
-
- /* ---------------------------------------------------------------- */
- /* Disable (mask) all interrupts at interrupt controller */
- /* ---------------------------------------------------------------- */
-
-initirqs:
- mov r1, #0 /* clear int. level register (IRQ, not FIQ) */
- ldr r2, =ICLR
- str r1, [r2]
-
- ldr r1, =CFG_ICMR_VAL /* mask all interrupts at the controller */
- ldr r2, =ICMR
- str r1, [r2]
-
-
- /* ---------------------------------------------------------------- */
- /* Clock initialisation */
- /* ---------------------------------------------------------------- */
-
-initclks:
-
- /* Disable the peripheral clocks, and set the core clock frequency */
- /* (hard-coding at 398.12MHz for now). */
- /* Turn Off ALL on-chip peripheral clocks for re-configuration */
- /* Note: See label 'ENABLECLKS' for the re-enabling */
- ldr r1, =CKEN
- mov r2, #0
- str r2, [r1]
-
-
- /* default value */
- ldr r2, =(CCCR_L27|CCCR_M2|CCCR_N10) /* DEFAULT: {200/200/100} */
-
- /* ... and write the core clock config register */
- ldr r1, =CCCR
- str r2, [r1]
-
-#ifdef RTC
- /* enable the 32Khz oscillator for RTC and PowerManager */
-
- ldr r1, =OSCC
- mov r2, #OSCC_OON
- str r2, [r1]
-
- /* NOTE: spin here until OSCC.OOK get set, meaning the PLL */
- /* has settled. */
-60:
- ldr r2, [r1]
- ands r2, r2, #1
- beq 60b
-#endif
-
- @ Turn on needed clocks
- @
-test:
- ldr r1, =CKEN
- ldr r2, =CFG_CKEN_VAL
- str r2, [r1]
-
- /* ---------------------------------------------------------------- */
- /* */
- /* ---------------------------------------------------------------- */
-
- /* Save SDRAM size ?*/
- ldr r1, =DRAM_SIZE
- str r8, [r1]
-
- /* FIXME */
-
-#define NODEBUG
-#ifdef NODEBUG
- /*Disable software and data breakpoints */
- mov r0,#0
- mcr p15,0,r0,c14,c8,0 /* ibcr0 */
- mcr p15,0,r0,c14,c9,0 /* ibcr1 */
- mcr p15,0,r0,c14,c4,0 /* dbcon */
-
- /*Enable all debug functionality */
- mov r0,#0x80000000
- mcr p14,0,r0,c10,c0,0 /* dcsr */
-
-#endif
-
- /* ---------------------------------------------------------------- */
- /* End lowlevel_init */
- /* ---------------------------------------------------------------- */
-
-endlowlevel_init:
-
- mov pc, lr
diff --git a/board/xaeniax/u-boot.lds b/board/xaeniax/u-boot.lds
deleted file mode 100644
index f0102391b3..0000000000
--- a/board/xaeniax/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/xaeniax/xaeniax.c b/board/xaeniax/xaeniax.c
deleted file mode 100644
index 9baa457c04..0000000000
--- a/board/xaeniax/xaeniax.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * (C) Copyright 2004
- * Vincent Dubey, Xa SA, vincent.dubey@xa-ch.com
- *
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* arch number of xaeniax */
- gd->bd->bi_arch_number = 585;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xa0000100;
-
- return 0;
-}
-
-int board_late_init(void)
-{
- setenv("stdout", "serial");
- setenv("stderr", "serial");
- return 0;
-}
-
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- /* gd->bd->bi_dram[1].start = PHYS_SDRAM_2;*/
- /* gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;*/
- /* gd->bd->bi_dram[2].start = PHYS_SDRAM_3; */
- /* gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE; */
- /* gd->bd->bi_dram[3].start = PHYS_SDRAM_4; */
- /* gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE; */
-
- return 0;
-}
diff --git a/board/xm250/Makefile b/board/xm250/Makefile
deleted file mode 100644
index 0a6eb320ac..0000000000
--- a/board/xm250/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := xm250.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/xm250/config.mk b/board/xm250/config.mk
deleted file mode 100644
index 8ce0c48414..0000000000
--- a/board/xm250/config.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# (C) Copyright 2003-2004
-# 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
-#
-
-#
-# MicroSys XM250 board:
-#
-
-
-# This is the address where U-Boot lives in flash:
-#TEXT_BASE = 0
-
-# FIXME: armboot does only work correctly when being compiled
-# for the addresses _after_ relocation to RAM!! Otherwhise the
-# .bss segment is assumed in flash...
-TEXT_BASE = 0xA3F80000
diff --git a/board/xm250/flash.c b/board/xm250/flash.c
deleted file mode 100644
index aab47a0a55..0000000000
--- a/board/xm250/flash.c
+++ /dev/null
@@ -1,536 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001-2004
- * 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 <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-/* Intel-compatible flash ID */
-#define INTEL_COMPAT 0x00890089
-#define INTEL_ALT 0x00B000B0
-
-/* Intel-compatible flash commands */
-#define INTEL_PROGRAM 0x00100010
-#define INTEL_ERASE 0x00200020
-#define INTEL_CLEAR 0x00500050
-#define INTEL_LOCKBIT 0x00600060
-#define INTEL_PROTECT 0x00010001
-#define INTEL_STATUS 0x00700070
-#define INTEL_READID 0x00900090
-#define INTEL_CONFIRM 0x00D000D0
-#define INTEL_RESET 0xFFFFFFFF
-
-/* Intel-compatible flash status bits */
-#define INTEL_FINISHED 0x00800080
-#define INTEL_OK 0x00800080
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-void inline spin_wheel (void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- case 1:
- flash_get_size ((FPW *) PHYS_FLASH_2, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_2, &flash_info[i]);
- break;
- default:
- panic ("configured to many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect ( FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0] );
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0] );
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
-
- case FLASH_28F640J3A:
- printf ("28F640J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x02000000;
- break; /* => 32 MB */
-
- case (FPW) INTEL_ID_28F640J3A:
- info->flash_id += FLASH_28F640J3A;
- info->sector_count = 64;
- info->size = 0x01000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = 0x00500050; /* clear status register cmd. */
- *addr = 0x00FF00FF; /* resest to read mode */
-
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
-
-/*-----------------------------------------------------------------------
- * Set/Clear sector's lock bit, returns:
- * 0 - OK
- * 1 - Error (timeout, voltage problems, etc.)
- */
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
- int i;
- int rc = 0;
- vu_long *addr = (vu_long *)(info->start[sector]);
- int flag = disable_interrupts();
-
- *addr = INTEL_CLEAR; /* Clear status register */
- if (prot) { /* Set sector lock bit */
- *addr = INTEL_LOCKBIT; /* Sector lock bit */
- *addr = INTEL_PROTECT; /* set */
- }
- else { /* Clear sector lock bit */
- *addr = INTEL_LOCKBIT; /* All sectors lock bits */
- *addr = INTEL_CONFIRM; /* clear */
- }
-
- reset_timer_masked ();
-
- while ((*addr & INTEL_FINISHED) != INTEL_FINISHED) {
- if (get_timer_masked () > CFG_FLASH_UNLOCK_TOUT) {
- printf("Flash lock bit operation timed out\n");
- rc = 1;
- break;
- }
- }
-
- if (*addr != INTEL_OK) {
- printf("Flash lock bit operation failed at %08X, CSR=%08X\n",
- (uint)addr, (uint)*addr);
- rc = 1;
- }
-
- if (!rc)
- info->protect[sector] = prot;
-
- /*
- * Clear lock bit command clears all sectors lock bits, so
- * we have to restore lock bits of protected sectors.
- */
- if (!prot)
- {
- for (i = 0; i < info->sector_count; i++)
- {
- if (info->protect[i])
- {
- reset_timer_masked ();
- addr = (vu_long *)(info->start[i]);
- *addr = INTEL_LOCKBIT; /* Sector lock bit */
- *addr = INTEL_PROTECT; /* set */
- while ((*addr & INTEL_FINISHED) != INTEL_FINISHED)
- {
- if (get_timer_masked () > CFG_FLASH_UNLOCK_TOUT)
- {
- printf("Flash lock bit operation timed out\n");
- rc = 1;
- break;
- }
- }
- }
- }
- }
-
- if (flag)
- enable_interrupts();
-
- *addr = INTEL_RESET; /* Reset to read array mode */
-
- return rc;
-}
diff --git a/board/xm250/lowlevel_init.S b/board/xm250/lowlevel_init.S
deleted file mode 100644
index 2ebd39554a..0000000000
--- a/board/xm250/lowlevel_init.S
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * Most of this taken from Redboot hal_platform_setup.h with cleanup
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-DRAM_SIZE: .long CFG_DRAM_SIZE
-
-/* wait for coprocessor write complete */
- .macro CPWAIT reg
- mrc p15,0,\reg,c2,c0,0
- mov \reg,\reg
- sub pc,pc,#4
- .endm
-/*
- .macro SET_LED val
- ldr r6, =CRADLE_LED_CLR_REG
- ldr r7, =0
- str r7, [r6]
- ldr r6, =CRADLE_LED_SET_REG
- ldr r7, =\val
- str r7, [r6]
- .endm
-*/
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
- /* Set up GPIO pins first */
-
- ldr r0, =GPSR0
- ldr r1, =CFG_GPSR0_VAL
- str r1, [r0]
-
- ldr r0, =GPSR1
- ldr r1, =CFG_GPSR1_VAL
- str r1, [r0]
-
- ldr r0, =GPSR2
- ldr r1, =CFG_GPSR2_VAL
- str r1, [r0]
-
- ldr r0, =GPCR0
- ldr r1, =CFG_GPCR0_VAL
- str r1, [r0]
-
- ldr r0, =GPCR1
- ldr r1, =CFG_GPCR1_VAL
- str r1, [r0]
-
- ldr r0, =GPCR2
- ldr r1, =CFG_GPCR2_VAL
- str r1, [r0]
-
- ldr r0, =GRER0
- ldr r1, =CFG_GRER0_VAL
- str r1, [r0]
-
- ldr r0, =GRER1
- ldr r1, =CFG_GRER1_VAL
- str r1, [r0]
-
- ldr r0, =GRER2
- ldr r1, =CFG_GRER2_VAL
- str r1, [r0]
-
- ldr r0, =GFER0
- ldr r1, =CFG_GFER0_VAL
- str r1, [r0]
-
- ldr r0, =GFER1
- ldr r1, =CFG_GFER1_VAL
- str r1, [r0]
-
- ldr r0, =GFER2
- ldr r1, =CFG_GFER2_VAL
- str r1, [r0]
-
- ldr r0, =GPDR0
- ldr r1, =CFG_GPDR0_VAL
- str r1, [r0]
-
- ldr r0, =GPDR1
- ldr r1, =CFG_GPDR1_VAL
- str r1, [r0]
-
- ldr r0, =GPDR2
- ldr r1, =CFG_GPDR2_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_L
- ldr r1, =CFG_GAFR0_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR0_U
- ldr r1, =CFG_GAFR0_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_L
- ldr r1, =CFG_GAFR1_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR1_U
- ldr r1, =CFG_GAFR1_U_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_L
- ldr r1, =CFG_GAFR2_L_VAL
- str r1, [r0]
-
- ldr r0, =GAFR2_U
- ldr r1, =CFG_GAFR2_U_VAL
- str r1, [r0]
-
- /* enable GPIO pins */
- ldr r0, =PSSR
- ldr r1, =CFG_PSSR_VAL
- str r1, [r0]
-
- /* SET_LED 1 */
-
- ldr r3, =MSC1 /* low - bank 2 Lubbock Registers / SRAM */
- ldr r2, =CFG_MSC1_VAL /* high - bank 3 Ethernet Controller */
- str r2, [r3] /* need to set MSC1 before trying to write to the HEX LEDs */
- ldr r2, [r3] /* need to read it back to make sure the value latches (see MSC section of manual) */
-
-
-/*********************************************************************
- * Initlialize Memory Controller
- *
- * See PXA250 Operating System Developer's Guide
- *
- * pause for 200 uSecs- allow internal clocks to settle
- * *Note: only need this if hard reset... doing it anyway for now
- */
-
- @ Step 1
- @ ---- Wait 200 usec
- ldr r3, =OSCR @ reset the OS Timer Count to zero
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 @ really 0x2E1 is about 200usec, so 0x300 should be plenty
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
- /* SET_LED 2 */
-
-mem_init:
- @ get memory controller base address
- ldr r1, =MEMC_BASE
-
-
-@****************************************************************************
-@ Step 2
-@
-
- @ Step 2a
- @ write msc0, read back to ensure data latches
- @
- ldr r2, =CFG_MSC0_VAL
- str r2, [r1, #MSC0_OFFSET]
- ldr r2, [r1, #MSC0_OFFSET]
-
- @ write msc1
- ldr r2, =CFG_MSC1_VAL
- str r2, [r1, #MSC1_OFFSET]
- ldr r2, [r1, #MSC1_OFFSET]
-
- @ write msc2
- ldr r2, =CFG_MSC2_VAL
- str r2, [r1, #MSC2_OFFSET]
- ldr r2, [r1, #MSC2_OFFSET]
-
- @ Step 2b
- @ write mecr
- ldr r2, =CFG_MECR_VAL
- str r2, [r1, #MECR_OFFSET]
-
- @ write mcmem0
- ldr r2, =CFG_MCMEM0_VAL
- str r2, [r1, #MCMEM0_OFFSET]
-
- @ write mcmem1
- ldr r2, =CFG_MCMEM1_VAL
- str r2, [r1, #MCMEM1_OFFSET]
-
- @ write mcatt0
- ldr r2, =CFG_MCATT0_VAL
- str r2, [r1, #MCATT0_OFFSET]
-
- @ write mcatt1
- ldr r2, =CFG_MCATT1_VAL
- str r2, [r1, #MCATT1_OFFSET]
-
- @ write mcio0
- ldr r2, =CFG_MCIO0_VAL
- str r2, [r1, #MCIO0_OFFSET]
-
- @ write mcio1
- ldr r2, =CFG_MCIO1_VAL
- str r2, [r1, #MCIO1_OFFSET]
-
- /*SET_LED 3 */
-
- @ Step 2c
- @ fly-by-dma is defeatured on this part
- @ write flycnfg
- @ldr r2, =CFG_FLYCNFG_VAL
- @str r2, [r1, #FLYCNFG_OFFSET]
-
-/* FIXME Does this sequence really make sense */
-#ifdef REDBOOT_WAY
- @ Step 2d
- @ get the mdrefr settings
- ldr r3, =CFG_MDREFR_VAL
-
- @ extract DRI field (we need a valid DRI field)
- @
- ldr r2, =0xFFF
-
- @ valid DRI field in r3
- @
- and r3, r3, r2
-
- @ get the reset state of MDREFR
- @
- ldr r4, [r1, #MDREFR_OFFSET]
-
- @ clear the DRI field
- @
- bic r4, r4, r2
-
- @ insert the valid DRI field loaded above
- @
- orr r4, r4, r3
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ *Note: preserve the mdrefr value in r4 *
-
- /*SET_LED 4 */
-
-@****************************************************************************
-@ Step 3
-@
-@ NO SRAM
-
- mov pc, r10
-
-
-@****************************************************************************
-@ Step 4
-@
-
- @ Assumes previous mdrefr value in r4, if not then read current mdrefr
-
- @ clear the free-running clock bits
- @ (clear K0Free, K1Free, K2Free
- @
- bic r4, r4, #(0x00800000 | 0x01000000 | 0x02000000)
-
- @ set K0RUN for CPLD clock
- @
- orr r4, r4, #0x00002000
-
- @ set K1RUN if bank 0 installed
- @
- orr r4, r4, #0x00010000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
-
- @ deassert SLFRSH
- @
- bic r4, r4, #0x00400000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ assert E1PIN
- @
- orr r4, r4, #0x00008000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
- nop
- nop
-#else
- @ Step 2d
- @ get the mdrefr settings
- ldr r4, =CFG_MDREFR_VAL
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ Step 4
-
- @ set K0RUN for FLASH clock
- @
- orr r4, r4, #0x00002000
-
- @ set K1RUN for bank DRAM 0
- @
- orr r4, r4, #0x00010000
-
- @ set K2RUN for bank PLD
- @
- orr r4, r4, #0x00040000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
-
- @ deassert SLFRSH
- @
- bic r4, r4, #0x00400000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
-
- @ assert E1PIN
- @
- orr r4, r4, #0x00008000
-
- @ write back mdrefr
- @
- str r4, [r1, #MDREFR_OFFSET]
- ldr r4, [r1, #MDREFR_OFFSET]
- nop
- nop
-#endif
-
- @ Step 4d
- @ fetch platform value of mdcnfg
- @
- ldr r2, =CFG_MDCNFG_VAL
-
- @ disable all sdram banks
- @
- bic r2, r2, #(MDCNFG_DE0 | MDCNFG_DE1)
- bic r2, r2, #(MDCNFG_DE2 | MDCNFG_DE3)
-
- @ program banks 0/1 for bus width
- @
- bic r2, r2, #MDCNFG_DWID0 @0=32-bit
-
- @ write initial value of mdcnfg, w/o enabling sdram banks
- @
- str r2, [r1, #MDCNFG_OFFSET]
-
- @ Step 4e
- @ pause for 200 uSecs
- @
- ldr r3, =OSCR @ reset the OS Timer Count to zero
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 @ really 0x2E1 is about 200usec, so 0x300 should be plenty
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
- /*SET_LED 5 */
-
- /* Why is this here??? */
- mov r0, #0x78 @turn everything off
- mcr p15, 0, r0, c1, c0, 0 @(caches off, MMU off, etc.)
-
- @ Step 4f
- @ Access memory *not yet enabled* for CBR refresh cycles (8)
- @ - CBR is generated for all banks
-
- ldr r2, =CFG_DRAM_BASE
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
-
- @ Step 4g
- @get memory controller base address
- @
- ldr r1, =MEMC_BASE
-
- @fetch current mdcnfg value
- @
- ldr r3, [r1, #MDCNFG_OFFSET]
-
- @enable sdram bank 0 if installed (must do for any populated bank)
- @
- orr r3, r3, #MDCNFG_DE0
-
- @write back mdcnfg, enabling the sdram bank(s)
- @
- str r3, [r1, #MDCNFG_OFFSET]
-
- @ Step 4h
- @ write mdmrs
- @
- ldr r2, =CFG_MDMRS_VAL
- str r2, [r1, #MDMRS_OFFSET]
-
- @ Done Memory Init
-
- /*SET_LED 6 */
-
- @********************************************************************
- @ Disable (mask) all interrupts at the interrupt controller
- @
-
- @ clear the interrupt level register (use IRQ, not FIQ)
- @
- mov r1, #0
- ldr r2, =ICLR
- str r1, [r2]
-
- @ Set interrupt mask register
- @
- ldr r1, =CFG_ICMR_VAL
- ldr r2, =ICMR
- str r1, [r2]
-
- @ ********************************************************************
- @ Disable the peripheral clocks, and set the core clock
- @
-
- @ Turn Off ALL on-chip peripheral clocks for re-configuration
- @
- ldr r1, =CKEN
- mov r2, #0
- str r2, [r1]
-
- @ set core clocks
- @
- ldr r2, =CFG_CCCR_VAL
- ldr r1, =CCCR
- str r2, [r1]
-
-#ifdef ENABLE32KHZ
- @ enable the 32Khz oscillator for RTC and PowerManager
- @
- ldr r1, =OSCC
- mov r2, #OSCC_OON
- str r2, [r1]
-
- @ NOTE: spin here until OSCC.OOK get set,
- @ meaning the PLL has settled.
- @
-60:
- ldr r2, [r1]
- ands r2, r2, #1
- beq 60b
-#endif
-
- @ Turn on needed clocks
- @
- ldr r1, =CKEN
- ldr r2, =CFG_CKEN_VAL
- str r2, [r1]
-
- /*SET_LED 7 */
-
-/* Is this needed???? */
-#define NODEBUG
-#ifdef NODEBUG
- /*Disable software and data breakpoints */
- mov r0,#0
- mcr p15,0,r0,c14,c8,0 /* ibcr0 */
- mcr p15,0,r0,c14,c9,0 /* ibcr1 */
- mcr p15,0,r0,c14,c4,0 /* dbcon */
-
- /*Enable all debug functionality */
- mov r0,#0x80000000
- mcr p14,0,r0,c10,c0,0 /* dcsr */
-
-#endif
-
- /*SET_LED 8 */
-
- mov pc, r10
-
-@ End lowlevel_init
diff --git a/board/xm250/u-boot.lds b/board/xm250/u-boot.lds
deleted file mode 100644
index db8387520e..0000000000
--- a/board/xm250/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/xm250/xm250.c b/board/xm250/xm250.c
deleted file mode 100644
index 528d3239ce..0000000000
--- a/board/xm250/xm250.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <asm/arch/pxa-regs.h>
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-/* local prototypes */
-
-inline void sleep (int i);
-
-inline void
-/**********************************************************/
-sleep (int i)
-/**********************************************************/
-{
- while (i--) {
- udelay (1000000);
- }
-}
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int
-/**********************************************************/
-board_post_init (void)
-/**********************************************************/
-{
- return (0);
-}
-
-int
-/**********************************************************/
-board_init (void)
-/**********************************************************/
-{
- /* arch number of MicroSys XM250 */
- gd->bd->bi_arch_number = MACH_TYPE_XM250;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xa0000100;
-
- return 0;
-}
-
-int
-/**********************************************************/
-dram_init (void)
-/**********************************************************/
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
- gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
- gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
- gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
- gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
-
- return (0);
-}
diff --git a/board/xpedite1k/Makefile b/board/xpedite1k/Makefile
deleted file mode 100644
index 5da96e9e1c..0000000000
--- a/board/xpedite1k/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS = $(BOARD).o flash.o
-SOBJS = init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/xpedite1k/config.mk b/board/xpedite1k/config.mk
deleted file mode 100644
index e42b273a41..0000000000
--- a/board/xpedite1k/config.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# (C) Copyright 2002-2004
-# 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
-#
-
-#
-# XES XPedite1000 PPC440GX
-#
-
-ifeq ($(ramsym),1)
-TEXT_BASE = 0x07FD0000
-else
-TEXT_BASE = 0xFFF80000
-endif
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/xpedite1k/flash.c b/board/xpedite1k/flash.c
deleted file mode 100644
index ce5d4e180a..0000000000
--- a/board/xpedite1k/flash.c
+++ /dev/null
@@ -1,607 +0,0 @@
-/*
- * (C) Copyright 2002-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002 Jun Gu <jung@artesyncp.com>
- * Add support for Am29F016D and dynamic switch setting.
- *
- * 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
- */
-
-/*
- * Modified 4/5/2001
- * Wait for completion of each sector erase command issued
- * 4/5/2001
- * Chris Hallinan - DS4.COM, Inc. - clh@net1plus.com
- */
-
-/*
- * Ported to XPedite1000, 1/2 mb boot flash only
- * Travis B. Sawyer, <travis.sawyer@sandburst.com>
- */
-
-#include <common.h>
-#include <ppc4xx.h>
-#include <asm/processor.h>
-
-
-#undef DEBUG
-#ifdef DEBUG
-#define DEBUGF(x...) printf(x)
-#else
-#define DEBUGF(x...)
-#endif /* DEBUG */
-
-#define BOOT_SMALL_FLASH 32 /* 00100000 */
-#define FLASH_ONBD_N 2 /* 00000010 */
-#define FLASH_SRAM_SEL 1 /* 00000001 */
-
-#define BOOT_SMALL_FLASH_VAL 4
-#define FLASH_ONBD_N_VAL 2
-#define FLASH_SRAM_SEL_VAL 1
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-static unsigned long flash_addr_table[8][CFG_MAX_FLASH_BANKS] = {
- {0xfff80000}, /* 0:000: configuraton 3 */
- {0xfff90000}, /* 1:001: configuraton 4 */
- {0xfffa0000}, /* 2:010: configuraton 7 */
- {0xfffb0000}, /* 3:011: configuraton 8 */
- {0xfffc0000}, /* 4:100: configuraton 1 */
- {0xfffd0000}, /* 5:101: configuraton 2 */
- {0xfffe0000}, /* 6:110: configuraton 5 */
- {0xffff0000} /* 7:111: configuraton 6 */
-};
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-
-#ifdef CONFIG_XPEDITE1K
-#define ADDR0 0x5555
-#define ADDR1 0x2aaa
-#define FLASH_WORD_SIZE unsigned char
-#endif
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
- unsigned long total_b = 0;
- unsigned long size_b[CFG_MAX_FLASH_BANKS];
- unsigned short index = 0;
- int i;
-
-
- DEBUGF("\n");
- DEBUGF("FLASH: Index: %d\n", index);
-
- /* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
- flash_info[i].flash_id = FLASH_UNKNOWN;
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
-
- /* check whether the address is 0 */
- if (flash_addr_table[index][i] == 0) {
- continue;
- }
-
- /* call flash_get_size() to initialize sector address */
- size_b[i] = flash_get_size(
- (vu_long *)flash_addr_table[index][i], &flash_info[i]);
- flash_info[i].size = size_b[i];
- if (flash_info[i].flash_id == FLASH_UNKNOWN) {
- printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
- i, size_b[i], size_b[i]<<20);
- flash_info[i].sector_count = -1;
- flash_info[i].size = 0;
- }
-
- total_b += flash_info[i].size;
- }
-
- return total_b;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
- int k;
- int size;
- int erased;
- volatile unsigned long *flash;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- case FLASH_MAN_SST: printf ("SST "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMD016: printf ("AM29F016D (16 Mbit, uniform sector size)\n");
- break;
- case FLASH_AM040: printf ("AM29F040 (512 Kbit, uniform sector size)\n");
- break;
- case FLASH_AM400B: printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM400T: printf ("AM29LV400T (4 Mbit, top boot sector)\n");
- break;
- case FLASH_AM800B: printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM800T: printf ("AM29LV800T (8 Mbit, top boot sector)\n");
- break;
- case FLASH_AM160B: printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM160T: printf ("AM29LV160T (16 Mbit, top boot sector)\n");
- break;
- case FLASH_AM320B: printf ("AM29LV320B (32 Mbit, bottom boot sect)\n");
- break;
- case FLASH_AM320T: printf ("AM29LV320T (32 Mbit, top boot sector)\n");
- break;
- case FLASH_SST800A: printf ("SST39LF/VF800 (8 Mbit, uniform sector size)\n");
- break;
- case FLASH_SST160A: printf ("SST39LF/VF160 (16 Mbit, uniform sector size)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld KB in %d Sectors\n",
- info->size >> 10, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- /*
- * Check if whole sector is erased
- */
- if (i != (info->sector_count-1))
- size = info->start[i+1] - info->start[i];
- else
- size = info->start[0] + info->size - info->start[i];
- erased = 1;
- flash = (volatile unsigned long *)info->start[i];
- size = size >> 2; /* divide by 4 for longword access */
- for (k=0; k<size; k++)
- {
- if (*flash++ != 0xffffffff)
- {
- erased = 0;
- break;
- }
- }
-
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s%s",
- info->start[i],
- erased ? " E" : " ",
- info->protect[i] ? "RO " : " "
- );
- }
- printf ("\n");
- return;
- }
-
-/*-----------------------------------------------------------------------
- */
-
-
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- FLASH_WORD_SIZE value;
- ulong base = (ulong)addr;
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)addr;
-
- DEBUGF("FLASH ADDR: %08x\n", (unsigned)addr );
-
- /* Write auto select command: read Manufacturer ID */
- udelay(10000);
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- udelay(1000);
- addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- udelay(1000);
- addr2[ADDR0] = (FLASH_WORD_SIZE)0x00900090;
- udelay(1000);
-
-#ifdef CONFIG_ADCIOP
- value = addr2[2];
-#else
- value = addr2[0];
-#endif
-
- DEBUGF("FLASH MANUFACT: %x\n", value);
-
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_MANUFACT:
- info->flash_id = FLASH_MAN_AMD;
- break;
- case (FLASH_WORD_SIZE)FUJ_MANUFACT:
- info->flash_id = FLASH_MAN_FUJ;
- break;
- case (FLASH_WORD_SIZE)SST_MANUFACT:
- info->flash_id = FLASH_MAN_SST;
- break;
- case (FLASH_WORD_SIZE)STM_MANUFACT:
- info->flash_id = FLASH_MAN_STM;
- break;
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
-#ifdef CONFIG_ADCIOP
- value = addr2[0]; /* device ID */
- debug ("\ndev_code=%x\n", value);
-#else
- value = addr2[1]; /* device ID */
-#endif
-
- DEBUGF("\nFLASH DEVICEID: %x\n", value);
-
- switch (value) {
- case (FLASH_WORD_SIZE)AMD_ID_LV040B:
- info->flash_id += FLASH_AM040;
- info->sector_count = 8;
- info->size = 0x00080000; /* => 512 kb */
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
-
- }
-
- /* set up sector start address table */
- if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
- (info->flash_id == FLASH_AM040) ||
- (info->flash_id == FLASH_AMD016)) {
- for (i = 0; i < info->sector_count; i++)
- info->start[i] = base + (i * 0x00010000);
- } else {
- if (info->flash_id & FLASH_BTYPE) {
- /* set sector offsets for bottom boot block type */
- info->start[0] = base + 0x00000000;
- info->start[1] = base + 0x00004000;
- info->start[2] = base + 0x00006000;
- info->start[3] = base + 0x00008000;
- for (i = 4; i < info->sector_count; i++) {
- info->start[i] = base + (i * 0x00010000) - 0x00030000;
- }
- } else {
- /* set sector offsets for top boot block type */
- i = info->sector_count - 1;
- info->start[i--] = base + info->size - 0x00004000;
- info->start[i--] = base + info->size - 0x00006000;
- info->start[i--] = base + info->size - 0x00008000;
- for (; i >= 0; i--) {
- info->start[i] = base + i * 0x00010000;
- }
- }
- }
-
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
-#ifdef CONFIG_ADCIOP
- addr2 = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- info->protect[i] = addr2[4] & 1;
-#else
- addr2 = (volatile FLASH_WORD_SIZE *)(info->start[i]);
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
- info->protect[i] = 0;
- else
- info->protect[i] = addr2[2] & 1;
-#endif
- }
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
-#if 0 /* test-only */
-#ifdef CONFIG_ADCIOP
- addr2 = (volatile unsigned char *)info->start[0];
- addr2[ADDR0] = 0xAA;
- addr2[ADDR1] = 0x55;
- addr2[ADDR0] = 0xF0; /* reset bank */
-#else
- addr2 = (FLASH_WORD_SIZE *)info->start[0];
- *addr2 = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-#endif
-#else /* test-only */
- addr2 = (FLASH_WORD_SIZE *)info->start[0];
- *addr2 = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-#endif /* test-only */
- }
-
- return (info->size);
-}
-
-int wait_for_DQ7(flash_info_t *info, int sect)
-{
- ulong start, now, last;
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[sect]);
-
- start = get_timer (0);
- last = start;
- while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return -1;
- }
- /* show that we're waiting */
- if ((now - last) > 1000) { /* every second */
- putc ('.');
- last = now;
- }
- }
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
- volatile FLASH_WORD_SIZE *addr2;
- int flag, prot, sect, l_sect;
- int i;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("Can't erase unknown flash type - aborted\n");
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr2 = (FLASH_WORD_SIZE *)(info->start[sect]);
- printf("Erasing sector %p\n", addr2);
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (FLASH_WORD_SIZE)0x00500050; /* block erase */
- for (i=0; i<50; i++)
- udelay(1000); /* wait 1 ms */
- } else {
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080;
- addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA;
- addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055;
- addr2[0] = (FLASH_WORD_SIZE)0x00300030; /* sector erase */
- }
- l_sect = sect;
- /*
- * Wait for each sector to complete, it's more
- * reliable. According to AMD Spec, you must
- * issue all erase commands within a specified
- * timeout. This has been seen to fail, especially
- * if printf()s are included (for debug)!!
- */
- wait_for_DQ7(info, sect);
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
-#if 0
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
- wait_for_DQ7(info, l_sect);
-
-DONE:
-#endif
- /* reset to read mode */
- addr = (FLASH_WORD_SIZE *)info->start[0];
- addr[0] = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, data)) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t * info, ulong dest, ulong data)
-{
- volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *) (info->start[0]);
- volatile FLASH_WORD_SIZE *dest2 = (FLASH_WORD_SIZE *) dest;
- volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *) & data;
- ulong start;
- int i;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile FLASH_WORD_SIZE *) dest) &
- (FLASH_WORD_SIZE) data) != (FLASH_WORD_SIZE) data) {
- return (2);
- }
-
- for (i = 0; i < 4 / sizeof (FLASH_WORD_SIZE); i++) {
- int flag;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
- addr2[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
- addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00A000A0;
-
- dest2[i] = data2[i];
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts ();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((dest2[i] & (FLASH_WORD_SIZE) 0x00800080) !=
- (data2[i] & (FLASH_WORD_SIZE) 0x00800080)) {
-
- if (get_timer (start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- }
-
- return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/xpedite1k/init.S b/board/xpedite1k/init.S
deleted file mode 100644
index 6cb20e40fc..0000000000
--- a/board/xpedite1k/init.S
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-* Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.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
-*/
-
-#include <ppc_asm.tmpl>
-#include <config.h>
-
-/* General */
-#define TLB_VALID 0x00000200
-
-/* Supported page sizes */
-
-#define SZ_1K 0x00000000
-#define SZ_4K 0x00000010
-#define SZ_16K 0x00000020
-#define SZ_64K 0x00000030
-#define SZ_256K 0x00000040
-#define SZ_1M 0x00000050
-#define SZ_16M 0x00000070
-#define SZ_256M 0x00000090
-
-/* Storage attributes */
-#define SA_W 0x00000800 /* Write-through */
-#define SA_I 0x00000400 /* Caching inhibited */
-#define SA_M 0x00000200 /* Memory coherence */
-#define SA_G 0x00000100 /* Guarded */
-#define SA_E 0x00000080 /* Endian */
-
-/* Access control */
-#define AC_X 0x00000024 /* Execute */
-#define AC_W 0x00000012 /* Write */
-#define AC_R 0x00000009 /* Read */
-
-/* Some handy macros */
-
-#define EPN(e) ((e) & 0xfffffc00)
-#define TLB0(epn,sz) ( (EPN((epn)) | (sz) | TLB_VALID ) )
-#define TLB1(rpn,erpn) ( ((rpn)&0xfffffc00) | (erpn) )
-#define TLB2(a) ( (a)&0x00000fbf )
-
-#define tlbtab_start\
- mflr r1 ;\
- bl 0f ;
-
-#define tlbtab_end\
- .long 0, 0, 0 ; \
-0: mflr r0 ; \
- mtlr r1 ; \
- blr ;
-
-#define tlbentry(epn,sz,rpn,erpn,attr)\
- .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr)
-
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- * Pointer to the table is returned in r1
- *
- *************************************************************************/
-
- .section .bootpg,"ax"
- .globl tlbtab
-
-tlbtab:
- tlbtab_start
- tlbentry( 0xf0000000, SZ_256M, 0xf0000000, 1, AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry( CFG_PERIPHERAL_BASE, SZ_256M, 0x40000000, 1, AC_R|AC_W|SA_G|SA_I)
- tlbentry( CFG_ISRAM_BASE, SZ_256K, 0x80000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I)
- tlbentry( CFG_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
- tlbentry( CFG_SDRAM_BASE+0x10000000, SZ_256M, 0x10000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
- tlbentry( CFG_PCI_BASE, SZ_256M, 0x00000000, 2, AC_R|AC_W|SA_G|SA_I )
- tlbentry( CFG_PCI_MEMBASE, SZ_256M, 0x00000000, 3, AC_R|AC_W|SA_G|SA_I )
- tlbtab_end
diff --git a/board/xpedite1k/u-boot.lds b/board/xpedite1k/u-boot.lds
deleted file mode 100644
index 0f08637107..0000000000
--- a/board/xpedite1k/u-boot.lds
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * (C) Copyright 2002-2004
- * 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
-{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
-
- .bootpg 0xFFFFF000 :
- {
- cpu/ppc4xx/start.o (.bootpg)
- } = 0xffff
-
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/xpedite1k/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* . = env_offset;*/
-/* common/environment.o(.text)*/
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .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 = .);
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- . = .;
- __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/xpedite1k/u-boot.lds.debug b/board/xpedite1k/u-boot.lds.debug
deleted file mode 100644
index 5066326927..0000000000
--- a/board/xpedite1k/u-boot.lds.debug
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * (C) Copyright 2002-2004
- * 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
-
- cpu/ppc4xx/start.o (.text)
- board/xpedite1k/init.o (.text)
- cpu/ppc4xx/kgdb.o (.text)
- cpu/ppc4xx/traps.o (.text)
- cpu/ppc4xx/interrupts.o (.text)
- cpu/ppc4xx/serial.o (.text)
- cpu/ppc4xx/cpu_init.o (.text)
- cpu/ppc4xx/speed.o (.text)
- common/dlmalloc.o (.text)
- lib_generic/crc32.o (.text)
- lib_ppc/extable.o (.text)
- lib_generic/zlib.o (.text)
-
-/* common/environment.o(.text) */
-
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x0FFF) & 0xFFFFF000;
- _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 = .);
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
-
- __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/xpedite1k/xpedite1k.c b/board/xpedite1k/xpedite1k.c
deleted file mode 100644
index a569b53472..0000000000
--- a/board/xpedite1k/xpedite1k.c
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * Copyright (C) 2003 Travis B. Sawyer <travis.sawyer@sandburst.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
- */
-
-
-#include <common.h>
-#include <asm/processor.h>
-#include <spd_sdram.h>
-#include <i2c.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define BOOT_SMALL_FLASH 32 /* 00100000 */
-#define FLASH_ONBD_N 2 /* 00000010 */
-#define FLASH_SRAM_SEL 1 /* 00000001 */
-
-long int fixed_sdram (void);
-
-int board_early_init_f(void)
-{
- unsigned long sdrreg;
- /* TBS: Setup the GPIO access for the user LEDs */
- mfsdr(sdr_pfc0, sdrreg);
- mtsdr(sdr_pfc0, (sdrreg & ~0x00000100) | 0x00000E00);
- out32(CFG_GPIO_BASE + 0x018, (USR_LED0 | USR_LED1 | USR_LED2 | USR_LED3));
- LED0_OFF();
- LED1_OFF();
- LED2_OFF();
- LED3_OFF();
-
- /*--------------------------------------------------------------------
- * Setup the external bus controller/chip selects
- *-------------------------------------------------------------------*/
-
- /* set the bus controller */
- mtebc (pb0ap, 0x04055200); /* FLASH/SRAM */
- mtebc (pb0cr, 0xfff18000); /* BAS=0xfff 1MB R/W 8-bit */
- mtebc (pb1ap, 0x04055200); /* FLASH/SRAM */
- mtebc (pb1cr, 0xfe098000); /* BAS=0xff8 16MB R/W 8-bit */
-
- /*--------------------------------------------------------------------
- * Setup the interrupt controller polarities, triggers, etc.
- *-------------------------------------------------------------------*/
- mtdcr (uic0sr, 0xffffffff); /* clear all */
- mtdcr (uic0er, 0x00000000); /* disable all */
- mtdcr (uic0cr, 0x00000003); /* SMI & UIC1 crit are critical */
- mtdcr (uic0pr, 0xfffffe00); /* per ref-board manual */
- mtdcr (uic0tr, 0x01c00000); /* per ref-board manual */
- mtdcr (uic0vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr (uic0sr, 0xffffffff); /* clear all */
-
- mtdcr (uic1sr, 0xffffffff); /* clear all */
- mtdcr (uic1er, 0x00000000); /* disable all */
- mtdcr (uic1cr, 0x00000000); /* all non-critical */
- mtdcr (uic1pr, 0xffffc0ff); /* per ref-board manual */
- mtdcr (uic1tr, 0x00ff8000); /* per ref-board manual */
- mtdcr (uic1vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr (uic1sr, 0xffffffff); /* clear all */
-
- mtdcr (uic2sr, 0xffffffff); /* clear all */
- mtdcr (uic2er, 0x00000000); /* disable all */
- mtdcr (uic2cr, 0x00000000); /* all non-critical */
- mtdcr (uic2pr, 0xffffffff); /* per ref-board manual */
- mtdcr (uic2tr, 0x00ff8c0f); /* per ref-board manual */
- mtdcr (uic2vr, 0x00000001); /* int31 highest, base=0x000 */
- mtdcr (uic2sr, 0xffffffff); /* clear all */
-
- mtdcr (uicb0sr, 0xfc000000); /* clear all */
- mtdcr (uicb0er, 0x00000000); /* disable all */
- mtdcr (uicb0cr, 0x00000000); /* all non-critical */
- mtdcr (uicb0pr, 0xfc000000); /* */
- mtdcr (uicb0tr, 0x00000000); /* */
- mtdcr (uicb0vr, 0x00000001); /* */
-
- LED0_ON();
-
-
- return 0;
-}
-
-int checkboard (void)
-{
- printf ("Board: XES XPedite1000 440GX\n");
-
- return (0);
-}
-
-
-long int initdram (int board_type)
-{
- long dram_size = 0;
-
-#if defined(CONFIG_SPD_EEPROM)
- dram_size = spd_sdram ();
-#else
- dram_size = fixed_sdram ();
-#endif
- return dram_size;
-}
-
-
-#if defined(CFG_DRAM_TEST)
-int testdram (void)
-{
- uint *pstart = (uint *) 0x00000000;
- uint *pend = (uint *) 0x08000000;
- uint *p;
-
- for (p = pstart; p < pend; p++)
- *p = 0xaaaaaaaa;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0xaaaaaaaa) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
-
- for (p = pstart; p < pend; p++)
- *p = 0x55555555;
-
- for (p = pstart; p < pend; p++) {
- if (*p != 0x55555555) {
- printf ("SDRAM test fails at: %08x\n", (uint) p);
- return 1;
- }
- }
- return 0;
-}
-#endif
-
-#if !defined(CONFIG_SPD_EEPROM)
-/*************************************************************************
- * fixed sdram init -- doesn't use serial presence detect.
- *
- * Assumes: 128 MB, non-ECC, non-registered
- * PLB @ 133 MHz
- *
- ************************************************************************/
-long int fixed_sdram (void)
-{
- uint reg;
-
- /*--------------------------------------------------------------------
- * Setup some default
- *------------------------------------------------------------------*/
- mtsdram (mem_uabba, 0x00000000); /* ubba=0 (default) */
- mtsdram (mem_slio, 0x00000000); /* rdre=0 wrre=0 rarw=0 */
- mtsdram (mem_devopt, 0x00000000); /* dll=0 ds=0 (normal) */
- mtsdram (mem_wddctr, 0x00000000); /* wrcp=0 dcd=0 */
- mtsdram (mem_clktr, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */
-
- /*--------------------------------------------------------------------
- * Setup for board-specific specific mem
- *------------------------------------------------------------------*/
- /*
- * Following for CAS Latency = 2.5 @ 133 MHz PLB
- */
- mtsdram (mem_b0cr, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */
- mtsdram (mem_tr0, 0x410a4012); /* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */
- /* RA=10 RD=3 */
- mtsdram (mem_tr1, 0x8080082f); /* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */
- mtsdram (mem_rtr, 0x08200000); /* Rate 15.625 ns @ 133 MHz PLB */
- mtsdram (mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM */
- udelay (400); /* Delay 200 usecs (min) */
-
- /*--------------------------------------------------------------------
- * Enable the controller, then wait for DCEN to complete
- *------------------------------------------------------------------*/
- mtsdram (mem_cfg0, 0x86000000); /* DCEN=1, PMUD=1, 64-bit */
- for (;;) {
- mfsdram (mem_mcsts, reg);
- if (reg & 0x80000000)
- break;
- }
-
- return (128 * 1024 * 1024); /* 128 MB */
-}
-#endif /* !defined(CONFIG_SPD_EEPROM) */
-
-
-/*************************************************************************
- * pci_pre_init
- *
- * This routine is called just prior to registering the hose and gives
- * the board the opportunity to check things. Returning a value of zero
- * indicates that things are bad & PCI initialization should be aborted.
- *
- * Different boards may wish to customize the pci controller structure
- * (add regions, override default access routines, etc) or perform
- * certain pre-initialization actions.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT)
-int pci_pre_init(struct pci_controller * hose )
-{
- unsigned long strap;
- /* See if we're supposed to setup the pci */
- mfsdr(sdr_sdstp1, strap);
- if ((strap & 0x00010000) == 0) {
- return (0);
- }
-
-#if defined(CFG_PCI_FORCE_PCI_CONV)
- /* Setup System Device Register PCIX0_XCR */
- mfsdr(sdr_xcr, strap);
- strap &= 0x0f000000;
- mtsdr(sdr_xcr, strap);
-#endif
- return 1;
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT) */
-
-/*************************************************************************
- * pci_target_init
- *
- * The bootstrap configuration provides default settings for the pci
- * inbound map (PIM). But the bootstrap config choices are limited and
- * may not be sufficient for a given board.
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT)
-void pci_target_init(struct pci_controller * hose )
-{
- /*--------------------------------------------------------------------------+
- * Disable everything
- *--------------------------------------------------------------------------*/
- out32r( PCIX0_PIM0SA, 0 ); /* disable */
- out32r( PCIX0_PIM1SA, 0 ); /* disable */
- out32r( PCIX0_PIM2SA, 0 ); /* disable */
- out32r( PCIX0_EROMBA, 0 ); /* disable expansion rom */
-
- /*--------------------------------------------------------------------------+
- * Map all of SDRAM to PCI address 0x0000_0000. Note that the 440 strapping
- * options to not support sizes such as 128/256 MB.
- *--------------------------------------------------------------------------*/
- out32r( PCIX0_PIM0LAL, CFG_SDRAM_BASE );
- out32r( PCIX0_PIM0LAH, 0 );
- out32r( PCIX0_PIM0SA, ~(gd->ram_size - 1) | 1 );
-
- out32r( PCIX0_BAR0, 0 );
-
- /*--------------------------------------------------------------------------+
- * Program the board's subsystem id/vendor id
- *--------------------------------------------------------------------------*/
- out16r( PCIX0_SBSYSVID, CFG_PCI_SUBSYS_VENDORID );
- out16r( PCIX0_SBSYSID, CFG_PCI_SUBSYS_DEVICEID );
-
- out16r( PCIX0_CMD, in16r(PCIX0_CMD) | PCI_COMMAND_MEMORY );
-}
-#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT) */
-
-
-/*************************************************************************
- * is_pci_host
- *
- * This routine is called to determine if a pci scan should be
- * performed. With various hardware environments (especially cPCI and
- * PPMC) it's insufficient to depend on the state of the arbiter enable
- * bit in the strap register, or generic host/adapter assumptions.
- *
- * Rather than hard-code a bad assumption in the general 440 code, the
- * 440 pci code requires the board to decide at runtime.
- *
- * Return 0 for adapter mode, non-zero for host (monarch) mode.
- *
- *
- ************************************************************************/
-#if defined(CONFIG_PCI)
-int is_pci_host(struct pci_controller *hose)
-{
- return ((in32(CFG_GPIO_BASE + 0x1C) & 0x00000800) == 0);
-}
-#endif /* defined(CONFIG_PCI) */
-
-#ifdef CONFIG_POST
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed(void)
-{
-
- return (ctrlc());
-}
-
-void post_word_store (ulong a)
-{
- volatile ulong *save_addr =
- (volatile ulong *)(CFG_POST_WORD_ADDR);
-
- *save_addr = a;
-}
-
-ulong post_word_load (void)
-{
- volatile ulong *save_addr =
- (volatile ulong *)(CFG_POST_WORD_ADDR);
-
- return *save_addr;
-}
-#endif
-
-/*-----------------------------------------------------------------------------
- * board_get_enetaddr -- Read the MAC Addresses in the I2C EEPROM
- *-----------------------------------------------------------------------------
- */
-static int enetaddr_num = 0;
-void board_get_enetaddr (uchar * enet)
-{
- int i;
- unsigned char buff[0x100], *cp;
-
- /* Initialize I2C */
- i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
-
- /* Read 256 bytes in EEPROM */
- i2c_read (0x50, 0, 1, buff, 0x100);
-
- if (enetaddr_num == 0) {
- cp = &buff[0xF4];
- enetaddr_num = 1;
- }
- else
- cp = &buff[0xFA];
-
- for (i = 0; i < 6; i++,cp++)
- enet[i] = *cp;
-
- printf ("MAC address = %02x:%02x:%02x:%02x:%02x:%02x\n",
- enet[0], enet[1], enet[2], enet[3], enet[4], enet[5]);
-
-}
diff --git a/board/xsengine/Makefile b/board/xsengine/Makefile
deleted file mode 100644
index 3f80a1d515..0000000000
--- a/board/xsengine/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := xsengine.o flash.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/xsengine/config.mk b/board/xsengine/config.mk
deleted file mode 100644
index 148c5199d3..0000000000
--- a/board/xsengine/config.mk
+++ /dev/null
@@ -1 +0,0 @@
-TEXT_BASE = 0xA3F80000
diff --git a/board/xsengine/flash.c b/board/xsengine/flash.c
deleted file mode 100644
index 2b9afc7a77..0000000000
--- a/board/xsengine/flash.c
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * (C) Copyright 2002
- * Robert Schwebel, Pengutronix, <r.schwebel@pengutronix.de>
- *
- * (C) Copyright 2000-2004
- * 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 <common.h>
-#include <linux/byteorder/swab.h>
-
-#define SWAP(x) __swab32(x)
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Functions */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((long *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- case 1:
- flash_get_size ((long *) PHYS_FLASH_2, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_2, &flash_info[i]);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors */
- flash_protect ( FLAG_PROTECT_SET,CFG_FLASH_BASE,CFG_FLASH_BASE + monitor_flash_len - 1,&flash_info[0] );
- flash_protect ( FLAG_PROTECT_SET,CFG_ENV_ADDR,CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0] );
-
- return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) return;
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_AMD: printf ("AMD "); break;
- case FLASH_MAN_FUJ: printf ("FUJITSU "); break;
- default: printf ("Unknown Vendor "); break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_AMLV640U: printf ("AM29LV640ML (64Mbit, uniform sector size)\n");
- break;
- case FLASH_S29GL064M: printf ("S29GL064M (64Mbit, top boot sector size)\n");
- break;
- default: printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i=0; i<info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " "
- );
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
- short i;
- ulong value;
- ulong base = (ulong)addr;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00900090;
-
- value = addr[0];
-
- debug ("Manuf. ID @ 0x%08lx: 0x%08lx\n", (ulong)addr, value);
-
- switch (value) {
- case AMD_MANUFACT:
- debug ("Manufacturer: AMD\n");
- info->flash_id = FLASH_MAN_AMD;
- break;
- case FUJ_MANUFACT:
- debug ("Manufacturer: FUJITSU\n");
- info->flash_id = FLASH_MAN_FUJ;
- break;
- default:
- debug ("Manufacturer: *** unknown ***\n");
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- return (0); /* no or unknown flash */
- }
-
- value = addr[1]; /* device ID */
-
- debug ("Device ID @ 0x%08lx: 0x%08lx\n", (ulong)(&addr[1]), value);
-
- switch (value) {
-
- case AMD_ID_MIRROR:
- debug ("Mirror Bit flash: addr[14] = %08lX addr[15] = %08lX\n",
- addr[14], addr[15]);
- switch(addr[14]) {
- case AMD_ID_LV640U_2:
- if (addr[15] != AMD_ID_LV640U_3) {
- debug ("Chip: AMLV640U -> unknown\n");
- info->flash_id = FLASH_UNKNOWN;
- } else {
- debug ("Chip: AMLV640U\n");
- info->flash_id += FLASH_AMLV640U;
- info->sector_count = 128;
- info->size = 0x01000000;
- }
- break; /* => 16 MB */
- case AMD_ID_GL064MT_2:
- if (addr[15] != AMD_ID_GL064MT_3) {
- debug ("Chip: S29GL064M-R3 -> unknown\n");
- info->flash_id = FLASH_UNKNOWN;
- } else {
- debug ("Chip: S29GL064M-R3\n");
- info->flash_id += FLASH_S29GL064M;
- info->sector_count = 128;
- info->size = 0x01000000;
- }
- break; /* => 16 MB */
- default:
- debug ("Chip: *** unknown ***\n");
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- return (0); /* => no or unknown flash */
- }
-
- /* set up sector start address table */
- switch (value) {
- case AMD_ID_MIRROR:
- switch (info->flash_id & FLASH_TYPEMASK) {
- /* only known types here - no default */
- case FLASH_AMLV128U:
- case FLASH_AMLV640U:
- case FLASH_AMLV320U:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- base += 0x20000;
- }
- break;
- case FLASH_AMLV320B:
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base;
- /*
- * The first 8 sectors are 8 kB,
- * all the other ones are 64 kB
- */
- base += (i < 8)
- ? 2 * ( 8 << 10)
- : 2 * (64 << 10);
- }
- break;
- }
- break;
-
- default:
- return (0);
- break;
- }
-
-#if 0
- /* check for protected sectors */
- for (i = 0; i < info->sector_count; i++) {
- /* read sector protection at sector address, (A7 .. A0) = 0x02 */
- /* D0 = 1 if protected */
- addr = (volatile unsigned long *)(info->start[i]);
- info->protect[i] = addr[2] & 1;
- }
-#endif
-
- /*
- * Prevent writes to uninitialized FLASH.
- */
- if (info->flash_id != FLASH_UNKNOWN) {
- addr = (volatile unsigned long *)info->start[0];
-
- *addr = 0x00F000F0; /* reset bank */
- }
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- int flag, prot, sect, l_sect;
- ulong start, now, last;
-
- debug ("flash_erase: first: %d last: %d\n", s_first, s_last);
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- if ((info->flash_id == FLASH_UNKNOWN) ||
- (info->flash_id > FLASH_AMD_COMP)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect=s_first; sect<=s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- l_sect = -1;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00800080;
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect<=s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- addr = (vu_long*)(info->start[sect]);
- addr[0] = 0x00300030;
- l_sect = sect;
- }
- }
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* wait at least 80us - let's wait 1 ms */
- udelay (1000);
-
- /*
- * We wait for the last triggered sector
- */
- if (l_sect < 0)
- goto DONE;
-
- start = get_timer (0);
- last = start;
- addr = (vu_long*)(info->start[l_sect]);
- while ((addr[0] & 0x00800080) != 0x00800080) {
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- return 1;
- }
- /* show that we're waiting */
- if ((now - last) > 100000) { /* every second */
- putc ('.');
- last = now;
- }
- }
-
-DONE:
- /* reset to read mode */
- addr = (volatile unsigned long *)info->start[0];
- addr[0] = 0x00F000F0; /* reset bank */
-
- printf (" done\n");
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp, data;
- int i, l, rc;
-
- wp = (addr & ~3); /* get lower word aligned address */
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i=0, cp=wp; i<l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
- for (; i<4 && cnt>0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt==0 && i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- if ((rc = write_word(info, wp, SWAP(data))) != 0) {
- return (rc);
- }
- wp += 4;
- }
-
- /*
- * handle word aligned part
- */
- while (cnt >= 4) {
- data = 0;
- for (i=0; i<4; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_word(info, wp, SWAP(data))) != 0) {
- return (rc);
- }
- wp += 4;
- cnt -= 4;
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i<4; ++i, ++cp) {
- data = (data << 8) | (*(uchar *)cp);
- }
-
- return (write_word(info, wp, SWAP(data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
- vu_long *addr = (vu_long*)(info->start[0]);
- ulong start;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*((vu_long *)dest) & data) != data) {
- return (2);
- }
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts();
-
- addr[0x0555] = 0x00AA00AA;
- addr[0x02AA] = 0x00550055;
- addr[0x0555] = 0x00A000A0;
-
- *((vu_long *)dest) = data;
-
- /* re-enable interrupts if necessary */
- if (flag)
- enable_interrupts();
-
- /* data polling for D7 */
- start = get_timer (0);
- while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
- return (1);
- }
- }
- return (0);
-}
diff --git a/board/xsengine/lowlevel_init.S b/board/xsengine/lowlevel_init.S
deleted file mode 100644
index 309faabd92..0000000000
--- a/board/xsengine/lowlevel_init.S
+++ /dev/null
@@ -1,221 +0,0 @@
-#include <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-DRAM_SIZE: .long CFG_DRAM_SIZE
-
-.globl lowlevel_init
-lowlevel_init:
-
- mov r10, lr
-
-/* ---- GPIO INITIALISATION ---- */
-/* Set up GPIO pins first (3 groups [31:0] [63:32] [80:64]) */
-
- /* General purpose set registers */
- ldr r0, =GPSR0
- ldr r1, =CFG_GPSR0_VAL
- str r1, [r0]
- ldr r0, =GPSR1
- ldr r1, =CFG_GPSR1_VAL
- str r1, [r0]
- ldr r0, =GPSR2
- ldr r1, =CFG_GPSR2_VAL
- str r1, [r0]
-
- /* General purpose clear registers */
- ldr r0, =GPCR0
- ldr r1, =CFG_GPCR0_VAL
- str r1, [r0]
- ldr r0, =GPCR1
- ldr r1, =CFG_GPCR1_VAL
- str r1, [r0]
- ldr r0, =GPCR2
- ldr r1, =CFG_GPCR2_VAL
- str r1, [r0]
-
- /* General rising edge registers */
- ldr r0, =GRER0
- ldr r1, =CFG_GRER0_VAL
- str r1, [r0]
- ldr r0, =GRER1
- ldr r1, =CFG_GRER1_VAL
- str r1, [r0]
- ldr r0, =GRER2
- ldr r1, =CFG_GRER2_VAL
- str r1, [r0]
-
- /* General falling edge registers */
- ldr r0, =GFER0
- ldr r1, =CFG_GFER0_VAL
- str r1, [r0]
- ldr r0, =GFER1
- ldr r1, =CFG_GFER1_VAL
- str r1, [r0]
- ldr r0, =GFER2
- ldr r1, =CFG_GFER2_VAL
- str r1, [r0]
-
- /* General edge detect registers */
- ldr r0, =GPDR0
- ldr r1, =CFG_GPDR0_VAL
- str r1, [r0]
- ldr r0, =GPDR1
- ldr r1, =CFG_GPDR1_VAL
- str r1, [r0]
- ldr r0, =GPDR2
- ldr r1, =CFG_GPDR2_VAL
- str r1, [r0]
-
- /* General alternate function registers */
- ldr r0, =GAFR0_L /* [0:15] */
- ldr r1, =CFG_GAFR0_L_VAL
- str r1, [r0]
- ldr r0, =GAFR0_U /* [31:16] */
- ldr r1, =CFG_GAFR0_U_VAL
- str r1, [r0]
- ldr r0, =GAFR1_L /* [47:32] */
- ldr r1, =CFG_GAFR1_L_VAL
- str r1, [r0]
- ldr r0, =GAFR1_U /* [63:48] */
- ldr r1, =CFG_GAFR1_U_VAL
- str r1, [r0]
- ldr r0, =GAFR2_L /* [79:64] */
- ldr r1, =CFG_GAFR2_L_VAL
- str r1, [r0]
- ldr r0, =GAFR2_U /* [80] */
- ldr r1, =CFG_GAFR2_U_VAL
- str r1, [r0]
-
- /* General purpose direction registers */
- ldr r0, =GPDR0
- ldr r1, =CFG_GPDR0_VAL
- str r1, [r0]
- ldr r0, =GPDR1
- ldr r1, =CFG_GPDR1_VAL
- str r1, [r0]
- ldr r0, =GPDR2
- ldr r1, =CFG_GPDR2_VAL
- str r1, [r0]
-
- /* Power manager sleep status */
- ldr r0, =PSSR
- ldr r1, =CFG_PSSR_VAL
- str r1, [r0]
-
-/* ---- MEMORY INITIALISATION ---- */
-/* Initialize Memory Controller, see PXA250 Operating System Developer's Guide */
-/* pause for 200 uSecs- allow internal clocks to settle */
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* really 0x2E1 is about 200usec, so 0x300 should be plenty */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-mem_init:
-/* get memory controller base address */
- ldr r1, =MEMC_BASE
-
-/* ---- FLASH INITIALISATION ---- */
-/* Write MSC0 and read back to ensure data change is accepted by cpu */
- ldr r2, =CFG_MSC0_VAL
- str r2, [r1, #MSC0_OFFSET]
- ldr r2, [r1, #MSC0_OFFSET]
-
-/* ---- SDRAM INITIALISATION ---- */
-/* get the MDREFR settings */
- ldr r2, =CFG_MDREFR_VAL
- str r2, [r1, #MDREFR_OFFSET]
-
-/* fetch platform value of MDCNFG */
- ldr r2, =CFG_MDCNFG_VAL
-
-/* disable all sdram banks */
- bic r2, r2, #(MDCNFG_DE0 | MDCNFG_DE1)
- bic r2, r2, #(MDCNFG_DE2 | MDCNFG_DE3)
-
-/* write initial value of MDCNFG, w/o enabling sdram banks */
- str r2, [r1, #MDCNFG_OFFSET]
-
-/* pause for 200 uSecs */
- ldr r3, =OSCR /* reset the OS Timer Count to zero */
- mov r2, #0
- str r2, [r3]
- ldr r4, =0x300 /* about 200 usec */
-1:
- ldr r2, [r3]
- cmp r4, r2
- bgt 1b
-
-/* Access memory *not yet enabled* for CBR refresh cycles (8) */
-/* CBR is generated for all banks */
-
- ldr r2, =CFG_DRAM_BASE
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
- str r2, [r2]
-
-/* get memory controller base address */
- ldr r2, =MEMC_BASE
-
-/* Enable SDRAM bank 0 in MDCNFG register */
- ldr r2, [r1, #MDCNFG_OFFSET]
- orr r2, r2, #MDCNFG_DE0
- str r2, [r1, #MDCNFG_OFFSET]
-
-/* write MDMRS to trigger an MSR command to all enabled SDRAM banks */
- ldr r2, =CFG_MDMRS_VAL
- str r2, [r1, #MDMRS_OFFSET]
-
-/* ---- INTERRUPT INITIALISATION ---- */
-/* Disable (mask) all interrupts at the interrupt controller */
-/* clear the interrupt level register (use IRQ, not FIQ) */
- mov r1, #0
- ldr r2, =ICLR
- str r1, [r2]
-
-/* Set interrupt mask register */
- ldr r1, =CFG_ICMR_VAL
- ldr r2, =ICMR
- str r1, [r2]
-
-/* ---- CLOCK INITIALISATION ---- */
-/* Disable the peripheral clocks, and set the core clock */
-
-/* Turn Off ALL on-chip peripheral clocks for re-configuration */
- ldr r1, =CKEN
- mov r2, #0
- str r2, [r1]
-
-/* set core clocks */
- ldr r2, =CFG_CCCR_VAL
- ldr r1, =CCCR
- str r2, [r1]
-
-#ifdef ENABLE32KHZ
-/* enable the 32Khz oscillator for RTC and PowerManager */
- ldr r1, =OSCC
- mov r2, #OSCC_OON
- str r2, [r1]
-
-/* NOTE: spin here until OSCC.OOK get set, meaning the PLL has settled. */
-60:
- ldr r2, [r1]
- ands r2, r2, #1
- beq 60b
-#endif
-
-/* Turn on needed clocks */
- ldr r1, =CKEN
- ldr r2, =CFG_CKEN_VAL
- str r2, [r1]
-
- mov pc, r10
diff --git a/board/xsengine/u-boot.lds b/board/xsengine/u-boot.lds
deleted file mode 100644
index db8387520e..0000000000
--- a/board/xsengine/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * 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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/xsengine/xsengine.c b/board/xsengine/xsengine.c
deleted file mode 100644
index 23d56c43ac..0000000000
--- a/board/xsengine/xsengine.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* arch number */
- gd->bd->bi_arch_number = MACH_TYPE_XSENGINE;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xa0000100;
-
- return 0;
-}
-
-int board_post_init (void)
-{
- setenv ("stdout", "serial");
- setenv ("stderr", "serial");
- return 0;
-}
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
- return 0;
-}
diff --git a/board/zylonite/Makefile b/board/zylonite/Makefile
deleted file mode 100644
index d72dc98f01..0000000000
--- a/board/zylonite/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# 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 = $(obj)lib$(BOARD).a
-
-COBJS := zylonite.o nand.o
-SOBJS := lowlevel_init.o
-
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS))
-SOBJS := $(addprefix $(obj),$(SOBJS))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-clean:
- rm -f $(SOBJS) $(OBJS)
-
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/board/zylonite/config.mk b/board/zylonite/config.mk
deleted file mode 100644
index 09b0f71557..0000000000
--- a/board/zylonite/config.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-#TEXT_BASE = 0x0
-#TEXT_BASE = 0xa1700000
-#TEXT_BASE = 0xa3080000
-TEXT_BASE = 0xa3008000
diff --git a/board/zylonite/flash.c b/board/zylonite/flash.c
deleted file mode 100644
index 883c1ba3b3..0000000000
--- a/board/zylonite/flash.c
+++ /dev/null
@@ -1,434 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (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 <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH ushort
-#define FLASH_PORT_WIDTHV vu_short
-#define SWAP(x) __swab16(x)
-#else
-#define FLASH_PORT_WIDTH ulong
-#define FLASH_PORT_WIDTHV vu_long
-#define SWAP(x) __swab32(x)
-#endif
-
-#define FPW FLASH_PORT_WIDTH
-#define FPWV FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-void inline spin_wheel (void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-#if 0
- int i;
- ulong size = 0;
-
- for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
- switch (i) {
- case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
- break;
- case 1:
- flash_get_size ((FPW *) PHYS_FLASH_2, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_2, &flash_info[i]);
- break;
- default:
- panic ("configured too many flash banks!\n");
- break;
- }
- size += flash_info[i].size;
- }
-
- /* Protect monitor and environment sectors
- */
- flash_protect ( FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + monitor_flash_len - 1,
- &flash_info[0] );
-
- flash_protect ( FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0] );
-
- return size;
-#endif
- return 0;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return;
- }
-
- if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
- for (i = 0; i < info->sector_count; i++) {
- info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
- info->protect[i] = 0;
- }
- }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
- int i;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("missing or unknown FLASH type\n");
- return;
- }
-
- switch (info->flash_id & FLASH_VENDMASK) {
- case FLASH_MAN_INTEL:
- printf ("INTEL ");
- break;
- default:
- printf ("Unknown Vendor ");
- break;
- }
-
- switch (info->flash_id & FLASH_TYPEMASK) {
- case FLASH_28F128J3A:
- printf ("28F128J3A\n");
- break;
- default:
- printf ("Unknown Chip Type\n");
- break;
- }
-
- printf (" Size: %ld MB in %d Sectors\n",
- info->size >> 20, info->sector_count);
-
- printf (" Sector Start Addresses:");
- for (i = 0; i < info->sector_count; ++i) {
- if ((i % 5) == 0)
- printf ("\n ");
- printf (" %08lX%s",
- info->start[i],
- info->protect[i] ? " (RO)" : " ");
- }
- printf ("\n");
- return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info)
-{
- volatile FPW value;
-
- /* Write auto select command: read Manufacturer ID */
- addr[0x5555] = (FPW) 0x00AA00AA;
- addr[0x2AAA] = (FPW) 0x00550055;
- addr[0x5555] = (FPW) 0x00900090;
-
- mb ();
- value = addr[0];
-
- switch (value) {
-
- case (FPW) INTEL_MANUFACT:
- info->flash_id = FLASH_MAN_INTEL;
- break;
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- info->sector_count = 0;
- info->size = 0;
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
- return (0); /* no or unknown flash */
- }
-
- mb ();
- value = addr[1]; /* device ID */
-
- switch (value) {
-
- case (FPW) INTEL_ID_28F128J3A:
- info->flash_id += FLASH_28F128J3A;
- info->sector_count = 128;
- info->size = 0x02000000;
- break; /* => 16 MB */
-
- default:
- info->flash_id = FLASH_UNKNOWN;
- break;
- }
-
- if (info->sector_count > CFG_MAX_FLASH_SECT) {
- printf ("** ERROR: sector count %d > max (%d) **\n",
- info->sector_count, CFG_MAX_FLASH_SECT);
- info->sector_count = CFG_MAX_FLASH_SECT;
- }
-
- addr[0] = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
- int flag, prot, sect;
- ulong type, start, last;
- int rcode = 0;
-
- if ((s_first < 0) || (s_first > s_last)) {
- if (info->flash_id == FLASH_UNKNOWN) {
- printf ("- missing\n");
- } else {
- printf ("- no sectors to erase\n");
- }
- return 1;
- }
-
- type = (info->flash_id & FLASH_VENDMASK);
- if ((type != FLASH_MAN_INTEL)) {
- printf ("Can't erase unknown flash type %08lx - aborted\n",
- info->flash_id);
- return 1;
- }
-
- prot = 0;
- for (sect = s_first; sect <= s_last; ++sect) {
- if (info->protect[sect]) {
- prot++;
- }
- }
-
- if (prot) {
- printf ("- Warning: %d protected sectors will not be erased!\n",
- prot);
- } else {
- printf ("\n");
- }
-
- start = get_timer (0);
- last = start;
-
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- /* Start erase on unprotected sectors */
- for (sect = s_first; sect <= s_last; sect++) {
- if (info->protect[sect] == 0) { /* not protected */
- FPWV *addr = (FPWV *) (info->start[sect]);
- FPW status;
-
- printf ("Erasing sector %2d ... ", sect);
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- *addr = (FPW) 0x00500050; /* clear status register */
- *addr = (FPW) 0x00200020; /* erase setup */
- *addr = (FPW) 0x00D000D0; /* erase confirm */
-
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
- printf ("Timeout\n");
- *addr = (FPW) 0x00B000B0; /* suspend erase */
- *addr = (FPW) 0x00FF00FF; /* reset to read mode */
- rcode = 1;
- break;
- }
- }
-
- *addr = 0x00500050; /* clear status register cmd. */
- *addr = 0x00FF00FF; /* resest to read mode */
-
- printf (" done\n");
- }
- }
- return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
- ulong cp, wp;
- FPW data;
- int count, i, l, rc, port_width;
-
- if (info->flash_id == FLASH_UNKNOWN) {
- return 4;
- }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
- wp = (addr & ~1);
- port_width = 2;
-#else
- wp = (addr & ~3);
- port_width = 4;
-#endif
-
- /*
- * handle unaligned start bytes
- */
- if ((l = addr - wp) != 0) {
- data = 0;
- for (i = 0, cp = wp; i < l; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
- for (; i < port_width && cnt > 0; ++i) {
- data = (data << 8) | *src++;
- --cnt;
- ++cp;
- }
- for (; cnt == 0 && i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- }
-
- /*
- * handle word aligned part
- */
- count = 0;
- while (cnt >= port_width) {
- data = 0;
- for (i = 0; i < port_width; ++i) {
- data = (data << 8) | *src++;
- }
- if ((rc = write_data (info, wp, SWAP (data))) != 0) {
- return (rc);
- }
- wp += port_width;
- cnt -= port_width;
- if (count++ > 0x800) {
- spin_wheel ();
- count = 0;
- }
- }
-
- if (cnt == 0) {
- return (0);
- }
-
- /*
- * handle unaligned tail bytes
- */
- data = 0;
- for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
- data = (data << 8) | *src++;
- --cnt;
- }
- for (; i < port_width; ++i, ++cp) {
- data = (data << 8) | (*(uchar *) cp);
- }
-
- return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, FPW data)
-{
- FPWV *addr = (FPWV *) dest;
- ulong status;
- int flag;
-
- /* Check if Flash is (sufficiently) erased */
- if ((*addr & data) != data) {
- printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
- return (2);
- }
- /* Disable interrupts which might cause a timeout here */
- flag = disable_interrupts ();
-
- *addr = (FPW) 0x00400040; /* write setup */
- *addr = data;
-
- /* arm simple, non interrupt dependent timer */
- reset_timer_masked ();
-
- /* wait while polling the status register */
- while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
- if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
- return (1);
- }
- }
-
- *addr = (FPW) 0x00FF00FF; /* restore read mode */
-
- return (0);
-}
-
-void inline spin_wheel (void)
-{
- static int p = 0;
- static char w[] = "\\/-";
-
- printf ("\010%c", w[p]);
- (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/zylonite/lowlevel_init.S b/board/zylonite/lowlevel_init.S
deleted file mode 100644
index da0176564e..0000000000
--- a/board/zylonite/lowlevel_init.S
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- * Most of this taken from Redboot hal_platform_setup.h with cleanup
- *
- * NOTE: I haven't clean this up considerably, just enough to get it
- * running. See hal_platform_setup.h for the source. See
- * board/cradle/lowlevel_init.S for another PXA250 setup that is
- * much cleaner.
- *
- * 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 <config.h>
-#include <version.h>
-#include <asm/arch/pxa-regs.h>
-
-DRAM_SIZE: .long CFG_DRAM_SIZE
-
-/* wait for coprocessor write complete */
-.macro CPWAIT reg
- mrc p15,0,\reg,c2,c0,0
- mov \reg,\reg
- sub pc,pc,#4
-.endm
-
-
-.macro wait time
- ldr r2, =OSCR
- mov r3, #0
- str r3, [r2]
-0:
- ldr r3, [r2]
- cmp r3, \time
- bls 0b
-.endm
-
-/*
- * Memory setup
- */
-
-.globl lowlevel_init
-lowlevel_init:
- /* Set up GPIO pins first ----------------------------------------- */
- mov r10, lr
-
- /* Configure GPIO Pins 41 - 48 as UART1 / altern. Fkt. 2 */
- ldr r0, =0x40E10438 @ GPIO41 FFRXD
- ldr r1, =0x802
- str r1, [r0]
-
- ldr r0, =0x40E1043C @ GPIO42 FFTXD
- ldr r1, =0x802
- str r1, [r0]
-
- ldr r0, =0x40E10440 @ GPIO43 FFCTS
- ldr r1, =0x802
- str r1, [r0]
-
- ldr r0, =0x40E10444 @ GPIO 44 FFDCD
- ldr r1, =0x802
- str r1, [r0]
-
- ldr r0, =0x40E10448 @ GPIO 45 FFDSR
- ldr r1, =0x802
- str r1, [r0]
-
- ldr r0, =0x40E1044C @ GPIO 46 FFRI
- ldr r1, =0x802
- str r1, [r0]
-
- ldr r0, =0x40E10450 @ GPIO 47 FFDTR
- ldr r1, =0x802
- str r1, [r0]
-
- ldr r0, =0x40E10454 @ GPIO 48
- ldr r1, =0x802
- str r1, [r0]
-
- /* tebrandt - ASCR, clear the RDH bit */
- ldr r0, =ASCR
- ldr r1, [r0]
- bic r1, r1, #0x80000000
- str r1, [r0]
-
- /* ---------------------------------------------------------------- */
- /* Enable memory interface */
- /* */
- /* The sequence below is based on the recommended init steps */
- /* detailed in the Intel PXA250 Operating Systems Developers Guide, */
- /* Chapter 10. */
- /* ---------------------------------------------------------------- */
-
- /* ---------------------------------------------------------------- */
- /* Step 1: Wait for at least 200 microsedonds to allow internal */
- /* clocks to settle. Only necessary after hard reset... */
- /* FIXME: can be optimized later */
- /* ---------------------------------------------------------------- */
-
- /* mk: replaced with wait macro */
-/* ldr r3, =OSCR /\* reset the OS Timer Count to zero *\/ */
-/* mov r2, #0 */
-/* str r2, [r3] */
-/* ldr r4, =0x300 /\* really 0x2E1 is about 200usec, *\/ */
-/* /\* so 0x300 should be plenty *\/ */
-/* 1: */
-/* ldr r2, [r3] */
-/* cmp r4, r2 */
-/* bgt 1b */
- wait #300
-
-mem_init:
-
- /* configure the MEMCLKCFG register */
- ldr r1, =MEMCLKCFG
- ldr r2, =0x00010001
- str r2, [r1] @ WRITE
- ldr r2, [r1] @ DELAY UNTIL WRITTEN
-
- /* set CSADRCFG[0] to data flash SRAM mode */
- ldr r1, =CSADRCFG0
- ldr r2, =0x00320809
- str r2, [r1] @ WRITE
- ldr r2, [r1] @ DELAY UNTIL WRITTEN
-
- /* set CSADRCFG[1] to data flash SRAM mode */
- ldr r1, =CSADRCFG1
- ldr r2, =0x00320809
- str r2, [r1] @ WRITE
- ldr r2, [r1] @ DELAY UNTIL WRITTEN
-
- /* set MSC 0 register for SRAM memory */
- ldr r1, =MSC0
- ldr r2, =0x11191119
- str r2, [r1] @ WRITE
- ldr r2, [r1] @ DELAY UNTIL WRITTEN
-
- /* set CSADRCFG[2] to data flash SRAM mode */
- ldr r1, =CSADRCFG2
- ldr r2, =0x00320809
- str r2, [r1] @ WRITE
- ldr r2, [r1] @ DELAY UNTIL WRITTEN
-
- /* set CSADRCFG[3] to VLIO mode */
- ldr r1, =CSADRCFG3
- ldr r2, =0x0032080B
- str r2, [r1] @ WRITE
- ldr r2, [r1] @ DELAY UNTIL WRITTEN
-
- /* set MSC 1 register for VLIO memory */
- ldr r1, =MSC1
- ldr r2, =0x123C1119
- str r2, [r1] @ WRITE
- ldr r2, [r1] @ DELAY UNTIL WRITTEN
-
-#if 0
- /* This does not work in Zylonite. -SC */
- ldr r0, =0x15fffff0
- ldr r1, =0xb10b
- str r1, [r0]
- str r1, [r0, #4]
-#endif
-
- /* Configure ACCR Register */
- ldr r0, =ACCR @ ACCR
- ldr r1, =0x0180b108
- str r1, [r0]
- ldr r1, [r0]
-
- /* Configure MDCNFG Register */
- ldr r0, =MDCNFG @ MDCNFG
- ldr r1, =0x403
- str r1, [r0]
- ldr r1, [r0]
-
- /* Perform Resistive Compensation by configuring RCOMP register */
- ldr r1, =RCOMP @ RCOMP
- ldr r2, =0x000000ff
- str r2, [r1]
- ldr r2, [r1]
-
- /* Configure MDMRS Register for SDCS0 */
- ldr r1, =MDMRS @ MDMRS
- ldr r2, =0x60000023
- ldr r3, [r1]
- orr r2, r2, r3
- str r2, [r1]
- ldr r2, [r1]
-
- /* Configure MDMRS Register for SDCS1 */
- ldr r1, =MDMRS @ MDMRS
- ldr r2, =0xa0000023
- ldr r3, [r1]
- orr r2, r2, r3
- str r2, [r1]
- ldr r2, [r1]
-
- /* Configure MDREFR */
- ldr r1, =MDREFR @ MDREFR
- ldr r2, =0x00000006
- str r2, [r1]
- ldr r2, [r1]
-
- /* Configure EMPI */
- ldr r1, =EMPI @ EMPI
- ldr r2, =0x80000000
- str r2, [r1]
- ldr r2, [r1]
-
- /* Hardware DDR Read-Strobe Delay Calibration */
- ldr r0, =DDR_HCAL @ DDR_HCAL
- ldr r1, =0x803ffc07 @ the offset is correct? -SC
- str r1, [r0]
- wait #5
- ldr r1, [r0]
-
- /* Here we assume the hardware calibration alwasy be successful. -SC */
- /* Set DMCEN bit in MDCNFG Register */
- ldr r0, =MDCNFG @ MDCNFG
- ldr r1, [r0]
- orr r1, r1, #0x40000000 @ enable SDRAM for Normal Access
- str r1, [r0]
-
-#ifndef CFG_SKIP_DRAM_SCRUB
- /* scrub/init SDRAM if enabled/present */
-/* ldr r11, =0xa0000000 /\* base address of SDRAM (CFG_DRAM_BASE) *\/ */
-/* ldr r12, =0x04000000 /\* size of memory to scrub (CFG_DRAM_SIZE) *\/ */
-/* mov r8,r12 /\* save DRAM size (mk: why???) *\/ */
- ldr r8, =0xa0000000 /* base address of SDRAM (CFG_DRAM_BASE) */
- ldr r9, =0x04000000 /* size of memory to scrub (CFG_DRAM_SIZE) */
- mov r0, #0 /* scrub with 0x0000:0000 */
- mov r1, #0
- mov r2, #0
- mov r3, #0
- mov r4, #0
- mov r5, #0
- mov r6, #0
- mov r7, #0
-10: /* fastScrubLoop */
- subs r9, r9, #32 /* 32 bytes/line */
- stmia r8!, {r0-r7}
- beq 15f
- b 10b
-#endif /* CFG_SKIP_DRAM_SCRUB */
-
-15:
- /* Mask all interrupts */
- mov r1, #0
- mcr p6, 0, r1, c1, c0, 0 @ ICMR
-
- /* Disable software and data breakpoints */
- mov r0, #0
- mcr p15,0,r0,c14,c8,0 /* ibcr0 */
- mcr p15,0,r0,c14,c9,0 /* ibcr1 */
- mcr p15,0,r0,c14,c4,0 /* dbcon */
-
- /* Enable all debug functionality */
- mov r0,#0x80000000
- mcr p14,0,r0,c10,c0,0 /* dcsr */
-
- /* We are finished with Intel's memory controller initialisation */
-
- /* ---------------------------------------------------------------- */
- /* End lowlevel_init */
- /* ---------------------------------------------------------------- */
-
-endlowlevel_init:
-
- mov pc, lr
-
-/*
-@********************************************************************************
-@ DDR calibration
-@
-@ This function is used to calibrate DQS delay lines.
-@ Monahans supports three ways to do it. One is software
-@ calibration. Two is hardware calibration. Three is hybrid
-@ calibration.
-@
-@ TBD
-@ -SC
-ddr_calibration:
-
- @ Case 1: Write the correct delay value once
- @ Configure DDR_SCAL Register
- ldr r0, =DDR_SCAL @ DDR_SCAL
-q ldr r1, =0xaf2f2f2f
- str r1, [r0]
- ldr r1, [r0]
-*/
-/* @ Case 2: Software Calibration
- @ Write test pattern to memory
- ldr r5, =0x0faf0faf @ Data Pattern
- ldr r4, =0xa0000000 @ DDR ram
- str r5, [r4]
-
- mov r1, =0x0 @ delay count
- mov r6, =0x0
- mov r7, =0x0
-ddr_loop1:
- add r1, r1, =0x1
- cmp r1, =0xf
- ble end_loop
- mov r3, r1
- mov r0, r1, lsl #30
- orr r3, r3, r0
- mov r0, r1, lsl #22
- orr r3, r3, r0
- mov r0, r1, lsl #14
- orr r3, r3, r0
- orr r3, r3, =0x80000000
- ldr r2, =DDR_SCAL
- str r3, [r2]
-
- ldr r2, [r4]
- cmp r2, r5
- bne ddr_loop1
- mov r6, r1
-ddr_loop2:
- add r1, r1, =0x1
- cmp r1, =0xf
- ble end_loop
- mov r3, r1
- mov r0, r1, lsl #30
- orr r3, r3, r0
- mov r0, r1, lsl #22
- orr r3, r3, r0
- mov r0, r1, lsl #14
- orr r3, r3, r0
- orr r3, r3, =0x80000000
- ldr r2, =DDR_SCAL
- str r3, [r2]
-
- ldr r2, [r4]
- cmp r2, r5
- be ddr_loop2
- mov r7, r2
-
- add r3, r6, r7
- lsr r3, r3, =0x1
- mov r0, r1, lsl #30
- orr r3, r3, r0
- mov r0, r1, lsl #22
- orr r3, r3, r0
- mov r0, r1, lsl #14
- orr r3, r3, r0
- orr r3, r3, =0x80000000
- ldr r2, =DDR_SCAL
-
-end_loop:
-
- @ Case 3: Hardware Calibratoin
- ldr r0, =DDR_HCAL @ DDR_HCAL
- ldr r1, =0x803ffc07 @ the offset is correct? -SC
- str r1, [r0]
- wait #5
- ldr r1, [r0]
- mov pc, lr
-*/
diff --git a/board/zylonite/nand.c b/board/zylonite/nand.c
deleted file mode 100644
index a41714351f..0000000000
--- a/board/zylonite/nand.c
+++ /dev/null
@@ -1,585 +0,0 @@
-/*
- * (C) Copyright 2006 DENX Software Engineering
- *
- * 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 <common.h>
-
-#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-#ifdef CONFIG_NEW_NAND_CODE
-
-#include <nand.h>
-#include <asm/arch/pxa-regs.h>
-
-#ifdef CFG_DFC_DEBUG1
-# define DFC_DEBUG1(fmt, args...) printf(fmt, ##args)
-#else
-# define DFC_DEBUG1(fmt, args...)
-#endif
-
-#ifdef CFG_DFC_DEBUG2
-# define DFC_DEBUG2(fmt, args...) printf(fmt, ##args)
-#else
-# define DFC_DEBUG2(fmt, args...)
-#endif
-
-#ifdef CFG_DFC_DEBUG3
-# define DFC_DEBUG3(fmt, args...) printf(fmt, ##args)
-#else
-# define DFC_DEBUG3(fmt, args...)
-#endif
-
-#define MIN(x, y) ((x < y) ? x : y)
-
-/* These really don't belong here, as they are specific to the NAND Model */
-static uint8_t scan_ff_pattern[] = { 0xff, 0xff };
-
-static struct nand_bbt_descr delta_bbt_descr = {
- .options = 0,
- .offs = 0,
- .len = 2,
- .pattern = scan_ff_pattern
-};
-
-static struct nand_oobinfo delta_oob = {
- .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
- .eccbytes = 6,
- .eccpos = {2, 3, 4, 5, 6, 7},
- .oobfree = { {8, 2}, {12, 4} }
-};
-
-
-/*
- * not required for Monahans DFC
- */
-static void dfc_hwcontrol(struct mtd_info *mtdinfo, int cmd)
-{
- return;
-}
-
-#if 0
-/* read device ready pin */
-static int dfc_device_ready(struct mtd_info *mtdinfo)
-{
- if(NDSR & NDSR_RDY)
- return 1;
- else
- return 0;
- return 0;
-}
-#endif
-
-/*
- * Write buf to the DFC Controller Data Buffer
- */
-static void dfc_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
-{
- unsigned long bytes_multi = len & 0xfffffffc;
- unsigned long rest = len & 0x3;
- unsigned long *long_buf;
- int i;
-
- DFC_DEBUG2("dfc_write_buf: writing %d bytes starting with 0x%x.\n", len, *((unsigned long*) buf));
- if(bytes_multi) {
- for(i=0; i<bytes_multi; i+=4) {
- long_buf = (unsigned long*) &buf[i];
- NDDB = *long_buf;
- }
- }
- if(rest) {
- printf("dfc_write_buf: ERROR, writing non 4-byte aligned data.\n");
- }
- return;
-}
-
-
-/*
- * These functions are quite problematic for the DFC. Luckily they are
- * not used in the current nand code, except for nand_command, which
- * we've defined our own anyway. The problem is, that we always need
- * to write 4 bytes to the DFC Data Buffer, but in these functions we
- * don't know if to buffer the bytes/half words until we've gathered 4
- * bytes or if to send them straight away.
- *
- * Solution: Don't use these with Mona's DFC and complain loudly.
- */
-static void dfc_write_word(struct mtd_info *mtd, u16 word)
-{
- printf("dfc_write_word: WARNING, this function does not work with the Monahans DFC!\n");
-}
-static void dfc_write_byte(struct mtd_info *mtd, u_char byte)
-{
- printf("dfc_write_byte: WARNING, this function does not work with the Monahans DFC!\n");
-}
-
-/* The original:
- * static void dfc_read_buf(struct mtd_info *mtd, const u_char *buf, int len)
- *
- * Shouldn't this be "u_char * const buf" ?
- */
-static void dfc_read_buf(struct mtd_info *mtd, u_char* const buf, int len)
-{
- int i=0, j;
-
- /* we have to be carefull not to overflow the buffer if len is
- * not a multiple of 4 */
- unsigned long bytes_multi = len & 0xfffffffc;
- unsigned long rest = len & 0x3;
- unsigned long *long_buf;
-
- DFC_DEBUG3("dfc_read_buf: reading %d bytes.\n", len);
- /* if there are any, first copy multiple of 4 bytes */
- if(bytes_multi) {
- for(i=0; i<bytes_multi; i+=4) {
- long_buf = (unsigned long*) &buf[i];
- *long_buf = NDDB;
- }
- }
-
- /* ...then the rest */
- if(rest) {
- unsigned long rest_data = NDDB;
- for(j=0;j<rest; j++)
- buf[i+j] = (u_char) ((rest_data>>j) & 0xff);
- }
-
- return;
-}
-
-/*
- * read a word. Not implemented as not used in NAND code.
- */
-static u16 dfc_read_word(struct mtd_info *mtd)
-{
- printf("dfc_write_byte: UNIMPLEMENTED.\n");
- return 0;
-}
-
-/* global var, too bad: mk@tbd: move to ->priv pointer */
-static unsigned long read_buf = 0;
-static int bytes_read = -1;
-
-/*
- * read a byte from NDDB Because we can only read 4 bytes from NDDB at
- * a time, we buffer the remaining bytes. The buffer is reset when a
- * new command is sent to the chip.
- *
- * WARNING:
- * This function is currently only used to read status and id
- * bytes. For these commands always 8 bytes need to be read from
- * NDDB. So we read and discard these bytes right now. In case this
- * function is used for anything else in the future, we must check
- * what was the last command issued and read the appropriate amount of
- * bytes respectively.
- */
-static u_char dfc_read_byte(struct mtd_info *mtd)
-{
- unsigned char byte;
- unsigned long dummy;
-
- if(bytes_read < 0) {
- read_buf = NDDB;
- dummy = NDDB;
- bytes_read = 0;
- }
- byte = (unsigned char) (read_buf>>(8 * bytes_read++));
- if(bytes_read >= 4)
- bytes_read = -1;
-
- DFC_DEBUG2("dfc_read_byte: byte %u: 0x%x of (0x%x).\n", bytes_read - 1, byte, read_buf);
- return byte;
-}
-
-/* calculate delta between OSCR values start and now */
-static unsigned long get_delta(unsigned long start)
-{
- unsigned long cur = OSCR;
-
- if(cur < start) /* OSCR overflowed */
- return (cur + (start^0xffffffff));
- else
- return (cur - start);
-}
-
-/* delay function, this doesn't belong here */
-static void wait_us(unsigned long us)
-{
- unsigned long start = OSCR;
- us *= OSCR_CLK_FREQ;
-
- while (get_delta(start) < us) {
- /* do nothing */
- }
-}
-
-static void dfc_clear_nddb(void)
-{
- NDCR &= ~NDCR_ND_RUN;
- wait_us(CFG_NAND_OTHER_TO);
-}
-
-/* wait_event with timeout */
-static unsigned long dfc_wait_event(unsigned long event)
-{
- unsigned long ndsr, timeout, start = OSCR;
-
- if(!event)
- return 0xff000000;
- else if(event & (NDSR_CS0_CMDD | NDSR_CS0_BBD))
- timeout = CFG_NAND_PROG_ERASE_TO * OSCR_CLK_FREQ;
- else
- timeout = CFG_NAND_OTHER_TO * OSCR_CLK_FREQ;
-
- while(1) {
- ndsr = NDSR;
- if(ndsr & event) {
- NDSR |= event;
- break;
- }
- if(get_delta(start) > timeout) {
- DFC_DEBUG1("dfc_wait_event: TIMEOUT waiting for event: 0x%x.\n", event);
- return 0xff000000;
- }
-
- }
- return ndsr;
-}
-
-/* we don't always wan't to do this */
-static void dfc_new_cmd(void)
-{
- int retry = 0;
- unsigned long status;
-
- while(retry++ <= CFG_NAND_SENDCMD_RETRY) {
- /* Clear NDSR */
- NDSR = 0xFFF;
-
- /* set NDCR[NDRUN] */
- if(!(NDCR & NDCR_ND_RUN))
- NDCR |= NDCR_ND_RUN;
-
- status = dfc_wait_event(NDSR_WRCMDREQ);
-
- if(status & NDSR_WRCMDREQ)
- return;
-
- DFC_DEBUG2("dfc_new_cmd: FAILED to get WRITECMDREQ, retry: %d.\n", retry);
- dfc_clear_nddb();
- }
- DFC_DEBUG1("dfc_new_cmd: giving up after %d retries.\n", retry);
-}
-
-/* this function is called after Programm and Erase Operations to
- * check for success or failure */
-static int dfc_wait(struct mtd_info *mtd, struct nand_chip *this, int state)
-{
- unsigned long ndsr=0, event=0;
-
- if(state == FL_WRITING) {
- event = NDSR_CS0_CMDD | NDSR_CS0_BBD;
- } else if(state == FL_ERASING) {
- event = NDSR_CS0_CMDD | NDSR_CS0_BBD;
- }
-
- ndsr = dfc_wait_event(event);
-
- if((ndsr & NDSR_CS0_BBD) || (ndsr & 0xff000000))
- return(0x1); /* Status Read error */
- return 0;
-}
-
-/* cmdfunc send commands to the DFC */
-static void dfc_cmdfunc(struct mtd_info *mtd, unsigned command,
- int column, int page_addr)
-{
- /* register struct nand_chip *this = mtd->priv; */
- unsigned long ndcb0=0, ndcb1=0, ndcb2=0, event=0;
-
- /* clear the ugly byte read buffer */
- bytes_read = -1;
- read_buf = 0;
-
- switch (command) {
- case NAND_CMD_READ0:
- DFC_DEBUG3("dfc_cmdfunc: NAND_CMD_READ0, page_addr: 0x%x, column: 0x%x.\n", page_addr, (column>>1));
- dfc_new_cmd();
- ndcb0 = (NAND_CMD_READ0 | (4<<16));
- column >>= 1; /* adjust for 16 bit bus */
- ndcb1 = (((column>>1) & 0xff) |
- ((page_addr<<8) & 0xff00) |
- ((page_addr<<8) & 0xff0000) |
- ((page_addr<<8) & 0xff000000)); /* make this 0x01000000 ? */
- event = NDSR_RDDREQ;
- goto write_cmd;
- case NAND_CMD_READ1:
- DFC_DEBUG2("dfc_cmdfunc: NAND_CMD_READ1 unimplemented!\n");
- goto end;
- case NAND_CMD_READOOB:
- DFC_DEBUG1("dfc_cmdfunc: NAND_CMD_READOOB unimplemented!\n");
- goto end;
- case NAND_CMD_READID:
- dfc_new_cmd();
- DFC_DEBUG2("dfc_cmdfunc: NAND_CMD_READID.\n");
- ndcb0 = (NAND_CMD_READID | (3 << 21) | (1 << 16)); /* addr cycles*/
- event = NDSR_RDDREQ;
- goto write_cmd;
- case NAND_CMD_PAGEPROG:
- /* sent as a multicommand in NAND_CMD_SEQIN */
- DFC_DEBUG2("dfc_cmdfunc: NAND_CMD_PAGEPROG empty due to multicmd.\n");
- goto end;
- case NAND_CMD_ERASE1:
- DFC_DEBUG2("dfc_cmdfunc: NAND_CMD_ERASE1, page_addr: 0x%x, column: 0x%x.\n", page_addr, (column>>1));
- dfc_new_cmd();
- ndcb0 = (0xd060 | (1<<25) | (2<<21) | (1<<19) | (3<<16));
- ndcb1 = (page_addr & 0x00ffffff);
- goto write_cmd;
- case NAND_CMD_ERASE2:
- DFC_DEBUG2("dfc_cmdfunc: NAND_CMD_ERASE2 empty due to multicmd.\n");
- goto end;
- case NAND_CMD_SEQIN:
- /* send PAGE_PROG command(0x1080) */
- dfc_new_cmd();
- DFC_DEBUG2("dfc_cmdfunc: NAND_CMD_SEQIN/PAGE_PROG, page_addr: 0x%x, column: 0x%x.\n", page_addr, (column>>1));
- ndcb0 = (0x1080 | (1<<25) | (1<<21) | (1<<19) | (4<<16));
- column >>= 1; /* adjust for 16 bit bus */
- ndcb1 = (((column>>1) & 0xff) |
- ((page_addr<<8) & 0xff00) |
- ((page_addr<<8) & 0xff0000) |
- ((page_addr<<8) & 0xff000000)); /* make this 0x01000000 ? */
- event = NDSR_WRDREQ;
- goto write_cmd;
- case NAND_CMD_STATUS:
- DFC_DEBUG2("dfc_cmdfunc: NAND_CMD_STATUS.\n");
- dfc_new_cmd();
- ndcb0 = NAND_CMD_STATUS | (4<<21);
- event = NDSR_RDDREQ;
- goto write_cmd;
- case NAND_CMD_RESET:
- DFC_DEBUG2("dfc_cmdfunc: NAND_CMD_RESET.\n");
- ndcb0 = NAND_CMD_RESET | (5<<21);
- event = NDSR_CS0_CMDD;
- goto write_cmd;
- default:
- printk("dfc_cmdfunc: error, unsupported command.\n");
- goto end;
- }
-
- write_cmd:
- NDCB0 = ndcb0;
- NDCB0 = ndcb1;
- NDCB0 = ndcb2;
-
- /* wait_event: */
- dfc_wait_event(event);
- end:
- return;
-}
-
-static void dfc_gpio_init(void)
-{
- DFC_DEBUG2("Setting up DFC GPIO's.\n");
-
- /* no idea what is done here, see zylonite.c */
- GPIO4 = 0x1;
-
- DF_ALE_WE1 = 0x00000001;
- DF_ALE_WE2 = 0x00000001;
- DF_nCS0 = 0x00000001;
- DF_nCS1 = 0x00000001;
- DF_nWE = 0x00000001;
- DF_nRE = 0x00000001;
- DF_IO0 = 0x00000001;
- DF_IO8 = 0x00000001;
- DF_IO1 = 0x00000001;
- DF_IO9 = 0x00000001;
- DF_IO2 = 0x00000001;
- DF_IO10 = 0x00000001;
- DF_IO3 = 0x00000001;
- DF_IO11 = 0x00000001;
- DF_IO4 = 0x00000001;
- DF_IO12 = 0x00000001;
- DF_IO5 = 0x00000001;
- DF_IO13 = 0x00000001;
- DF_IO6 = 0x00000001;
- DF_IO14 = 0x00000001;
- DF_IO7 = 0x00000001;
- DF_IO15 = 0x00000001;
-
- DF_nWE = 0x1901;
- DF_nRE = 0x1901;
- DF_CLE_NOE = 0x1900;
- DF_ALE_WE1 = 0x1901;
- DF_INT_RnB = 0x1900;
-}
-
-/*
- * Board-specific NAND initialization. The following members of the
- * argument are board-specific (per include/linux/mtd/nand_new.h):
- * - IO_ADDR_R?: address to read the 8 I/O lines of the flash device
- * - IO_ADDR_W?: address to write the 8 I/O lines of the flash device
- * - hwcontrol: hardwarespecific function for accesing control-lines
- * - dev_ready: hardwarespecific function for accesing device ready/busy line
- * - enable_hwecc?: function to enable (reset) hardware ecc generator. Must
- * only be provided if a hardware ECC is available
- * - eccmode: mode of ecc, see defines
- * - chip_delay: chip dependent delay for transfering data from array to
- * read regs (tR)
- * - options: various chip options. They can partly be set to inform
- * nand_scan about special functionality. See the defines for further
- * explanation
- * Members with a "?" were not set in the merged testing-NAND branch,
- * so they are not set here either.
- */
-int board_nand_init(struct nand_chip *nand)
-{
- unsigned long tCH, tCS, tWH, tWP, tRH, tRP, tRP_high, tR, tWHR, tAR;
-
- /* set up GPIO Control Registers */
- dfc_gpio_init();
-
- /* turn on the NAND Controller Clock (104 MHz @ D0) */
- CKENA |= (CKENA_4_NAND | CKENA_9_SMC);
-
-#undef CFG_TIMING_TIGHT
-#ifndef CFG_TIMING_TIGHT
- tCH = MIN(((unsigned long) (NAND_TIMING_tCH * DFC_CLK_PER_US) + 1),
- DFC_MAX_tCH);
- tCS = MIN(((unsigned long) (NAND_TIMING_tCS * DFC_CLK_PER_US) + 1),
- DFC_MAX_tCS);
- tWH = MIN(((unsigned long) (NAND_TIMING_tWH * DFC_CLK_PER_US) + 1),
- DFC_MAX_tWH);
- tWP = MIN(((unsigned long) (NAND_TIMING_tWP * DFC_CLK_PER_US) + 1),
- DFC_MAX_tWP);
- tRH = MIN(((unsigned long) (NAND_TIMING_tRH * DFC_CLK_PER_US) + 1),
- DFC_MAX_tRH);
- tRP = MIN(((unsigned long) (NAND_TIMING_tRP * DFC_CLK_PER_US) + 1),
- DFC_MAX_tRP);
- tR = MIN(((unsigned long) (NAND_TIMING_tR * DFC_CLK_PER_US) + 1),
- DFC_MAX_tR);
- tWHR = MIN(((unsigned long) (NAND_TIMING_tWHR * DFC_CLK_PER_US) + 1),
- DFC_MAX_tWHR);
- tAR = MIN(((unsigned long) (NAND_TIMING_tAR * DFC_CLK_PER_US) + 1),
- DFC_MAX_tAR);
-#else /* this is the tight timing */
-
- tCH = MIN(((unsigned long) (NAND_TIMING_tCH * DFC_CLK_PER_US)),
- DFC_MAX_tCH);
- tCS = MIN(((unsigned long) (NAND_TIMING_tCS * DFC_CLK_PER_US)),
- DFC_MAX_tCS);
- tWH = MIN(((unsigned long) (NAND_TIMING_tWH * DFC_CLK_PER_US)),
- DFC_MAX_tWH);
- tWP = MIN(((unsigned long) (NAND_TIMING_tWP * DFC_CLK_PER_US)),
- DFC_MAX_tWP);
- tRH = MIN(((unsigned long) (NAND_TIMING_tRH * DFC_CLK_PER_US)),
- DFC_MAX_tRH);
- tRP = MIN(((unsigned long) (NAND_TIMING_tRP * DFC_CLK_PER_US)),
- DFC_MAX_tRP);
- tR = MIN(((unsigned long) (NAND_TIMING_tR * DFC_CLK_PER_US) - tCH - 2),
- DFC_MAX_tR);
- tWHR = MIN(((unsigned long) (NAND_TIMING_tWHR * DFC_CLK_PER_US) - tCH - 2),
- DFC_MAX_tWHR);
- tAR = MIN(((unsigned long) (NAND_TIMING_tAR * DFC_CLK_PER_US) - 2),
- DFC_MAX_tAR);
-#endif /* CFG_TIMING_TIGHT */
-
-
- DFC_DEBUG2("tCH=%u, tCS=%u, tWH=%u, tWP=%u, tRH=%u, tRP=%u, tR=%u, tWHR=%u, tAR=%u.\n", tCH, tCS, tWH, tWP, tRH, tRP, tR, tWHR, tAR);
-
- /* tRP value is split in the register */
- if(tRP & (1 << 4)) {
- tRP_high = 1;
- tRP &= ~(1 << 4);
- } else {
- tRP_high = 0;
- }
-
- NDTR0CS0 = (tCH << 19) |
- (tCS << 16) |
- (tWH << 11) |
- (tWP << 8) |
- (tRP_high << 6) |
- (tRH << 3) |
- (tRP << 0);
-
- NDTR1CS0 = (tR << 16) |
- (tWHR << 4) |
- (tAR << 0);
-
- /* If it doesn't work (unlikely) think about:
- * - ecc enable
- * - chip select don't care
- * - read id byte count
- *
- * Intentionally enabled by not setting bits:
- * - dma (DMA_EN)
- * - page size = 512
- * - cs don't care, see if we can enable later!
- * - row address start position (after second cycle)
- * - pages per block = 32
- * - ND_RDY : clears command buffer
- */
- /* NDCR_NCSX | /\* Chip select busy don't care *\/ */
-
- NDCR = (NDCR_SPARE_EN | /* use the spare area */
- NDCR_DWIDTH_C | /* 16bit DFC data bus width */
- NDCR_DWIDTH_M | /* 16 bit Flash device data bus width */
- (2 << 16) | /* read id count = 7 ???? mk@tbd */
- NDCR_ND_ARB_EN | /* enable bus arbiter */
- NDCR_RDYM | /* flash device ready ir masked */
- NDCR_CS0_PAGEDM | /* ND_nCSx page done ir masked */
- NDCR_CS1_PAGEDM |
- NDCR_CS0_CMDDM | /* ND_CSx command done ir masked */
- NDCR_CS1_CMDDM |
- NDCR_CS0_BBDM | /* ND_CSx bad block detect ir masked */
- NDCR_CS1_BBDM |
- NDCR_DBERRM | /* double bit error ir masked */
- NDCR_SBERRM | /* single bit error ir masked */
- NDCR_WRDREQM | /* write data request ir masked */
- NDCR_RDDREQM | /* read data request ir masked */
- NDCR_WRCMDREQM); /* write command request ir masked */
-
-
- /* wait 10 us due to cmd buffer clear reset */
- /* wait(10); */
-
-
- nand->hwcontrol = dfc_hwcontrol;
-/* nand->dev_ready = dfc_device_ready; */
- nand->eccmode = NAND_ECC_SOFT;
- nand->options = NAND_BUSWIDTH_16;
- nand->waitfunc = dfc_wait;
- nand->read_byte = dfc_read_byte;
- nand->write_byte = dfc_write_byte;
- nand->read_word = dfc_read_word;
- nand->write_word = dfc_write_word;
- nand->read_buf = dfc_read_buf;
- nand->write_buf = dfc_write_buf;
-
- nand->cmdfunc = dfc_cmdfunc;
- nand->autooob = &delta_oob;
- nand->badblock_pattern = &delta_bbt_descr;
- return 0;
-}
-
-#else
- #error "U-Boot legacy NAND support not available for Monahans DFC."
-#endif
-#endif
diff --git a/board/zylonite/u-boot.lds b/board/zylonite/u-boot.lds
deleted file mode 100644
index f0102391b3..0000000000
--- a/board/zylonite/u-boot.lds
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (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
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- cpu/pxa/start.o (.text)
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .got : { *(.got) }
-
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
-}
diff --git a/board/zylonite/zylonite.c b/board/zylonite/zylonite.c
deleted file mode 100644
index 58291706c0..0000000000
--- a/board/zylonite/zylonite.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@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
- */
-
-#include <common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
- /* memory and cpu-speed are setup before relocation */
- /* so we do _nothing_ here */
-
- /* arch number of Lubbock-Board */
- gd->bd->bi_arch_number = MACH_TYPE_LUBBOCK;
-
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0xa0000100;
-
- return 0;
-}
-
-int board_late_init(void)
-{
- setenv("stdout", "serial");
- setenv("stderr", "serial");
- return 0;
-}
-
-
-int dram_init (void)
-{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
- gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
- gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
- gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
- gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
- gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
- gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
-
- return 0;
-}